0% ont trouvé ce document utile (0 vote)
201 vues92 pages

ENSAOalgorithmique S1

cours et td module informatique sous-module algorithmique semestre 1 ENSA OUJDA CP1 première année classes préparatoires intégrées

Transféré par

dahmedmoro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
201 vues92 pages

ENSAOalgorithmique S1

cours et td module informatique sous-module algorithmique semestre 1 ENSA OUJDA CP1 première année classes préparatoires intégrées

Transféré par

dahmedmoro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L’informatique ?

Informatique (Computer Science)


• Information
– Science de l’information
• Automatique
– Art d’entraîner automatiquement des
actions

Traitement automatique de
l’information
2
L’ordinateur
• Machine qui permet de traiter de
l’information :
– acquérir et conserver de l’information
(acquisition, stockage)
– effectuer des traitements (calcul),
– restituer le résultat du traitement (restitution)
• Permet de lier «informations» ↔ «données»
• Différents types d’informations : valeurs
numériques, textes, images, sons, …:
tout cela avec des 0 ou 1
3
Traitement de l’information

Données à l’état brut

ENTRÉE
Données traitées
TRAITEMENT Résultats
Par ordinateur

SORTIE

4
L’ordinateur / l’homme
• Raison du remplacement :
– Vitesse (pour des opérations bas niveau)
– Fiabilité (répétitivité)
– Mémoire
– Coût
• 2 types d’informaticiens
– les utilisateurs des outils informatiques
– les concepteurs de ces outils : votre but

5
Domaines de l’informatique
• Domaine du matériel (hardware)
– partie physique de l’ordinateur
– composants physiques constituant un ordinateur
(microprocesseur , disque dur …)

• Domaine du logiciel (software)


– instructions expliquant à l’ordinateur comment
traiter un problème
– Cela nécessite de décrire des : algorithmes et
représentations informatiques de ces
instructions
– Pour aboutir à un programme
6
Schéma d’une configuration
informatique
Unité Centrale (cerveau)

Unité de Traitement
Unité de Commande
et de Contrôle

Unité Arithmétique
et Logique

Mémoire
Périphériques Centrale Périphériques
d’Entrées de Sorties

Périphériques d’Entrées/Sorties
Informations Mémoires Auxiliaires
Commandes

7
Algorithmes et programmes
• Algorithme :
– suite des actions à effectuer pour
• réaliser un traitement donné
• résoudre un problème donné

• Exemples d’algorithme dans la vie


courante
– pour tricoter un pull : (maille à l’endroit, …)
– pour faire la cuisine : recette
– pour jouer une sonate : partition
8
Algorithmes et programmes
Informations
en entrée

Algorithme informatique
=
procédure de calcul

Rigueur scientifique
IMPORTANT ! Informations
Sinon, information de sortie en sortie
erronée

9
Algorithmes et programmes
• Programme :
– codage d’un algorithme afin que l’ordinateur
puisse exécuter les actions décrites
– doit être écrit dans un langage
compréhensible par l’ordinateur
• langage de programmation (Assembleur , C,
Fortran, Pascal, Cobol …)
• Un programme est donc une suite
ordonnée d’instructions élémentaires
codifiées dans un langage de
programmation

10
Langages de programmation
• L’ordinateur
– construit autour d’un ensemble de circuits
électroniques (le courant passe, le courant ne passe
pas)
– traite donc que des signaux assimilables à 0 ou 1
– une opération élémentaire
=> suite de 0 et de 1 = suite de bits (BInary digiT) !
• Un champ de 8 bits constituant ce qu'on appelle un octet (byte).
• Pour que les programmes et les données soient
compréhensibles par l’ordinateur il faut
effectuer un codage binaire

11
Langages de programmation

• Langage machine
– langage binaire
– ses opérations sont directement
compréhensibles par l’ordinateur
– propre à chaque famille d’ordinateur
– Pour pouvoir manipuler du langage machine, on est
obligé de passer par de l'Assembleur.

• Ecriture des premiers programme en


langage machine

12
Langages de
programmation
• Rédiger un programme consiste à préparer
le travail à FAIRE FAIRE à la machine, sous
forme d’une liste d’instructions.
• Les instructions que peut exécuter l’unité
de traitement sont codées en langage
machine (langage binaire).
• Langage du programmeur → langage
machine (code binaire exécutable).
– La traduction est effectuée par un
compilateur (qui est lui aussi un programme
…) .

13
Langages de
programmation
TYPES DE LANGAGES
• langages impératifs (Fortran, Pascal, C …) :
– Il s'agit de faire exécuter une suite d'ordres
• langages Déclaratifs:
– l'activité de programmation consiste
essentiellement à décrire le rapport qui existe
entre les données et les résultats que l'on veut
obtenir, plutôt que la séquence de traitements
qui mène des unes aux autres
• fonctionnels (Lisp, Scheme …)
• logiques (Prolog … )
• langages orientés objets (C++, Java …)
14
Algorithme
• Notion précise d’algorithme a été
découverte en 825 par le fameux Abou
Jaafar Mohammed Ibn Moussa Al
Khawarizmi auteur de livre «Al Jabr oua El
Mokabala»
– Moyen d’automatisation et d’économie de la
pensée
« Suite d’opérations élémentaires
constituant un schéma de calcul
ou de résolution de problème »
Petit Larousse.
15
Algorithme
• Pour nous :
– Un algorithme est une séquence
précise et non ambiguë d’une suite
d’étapes pouvant être exécutées de
façon automatique par un ordinateur
pour résoudre un problème

– Spécification du schéma de calcul


sous forme d’une suite finie
d’opérations élémentaires obéissant à
un enchaînement déterminé. 16
Importance des algorithmes
• Pour mener à bien un traitement sur
un ordinateur il faut :
1. Concevoir un algorithme qui décrit
comment le traitement doit être fait
2. Exprimer l’algorithme sous la forme
d’un programme dans un langage de
programmation adéquat
3. Faire en sorte que l’ordinateur
comprend et exécute le programme :
compilation
17
Importance des algorithmes
Quels sont les aspects et propriétés des
algorithmes qu’il est nécessaire
d’étudier ?
• La calculabilité des algorithmes
– existence et convergence de l’algorithme
• La complexité des algorithmes
– nombre d’opérations nécessaires
• L’efficacité des algorithmes
– vitesse de calcul raisonnable ( temps
d’exécution)
– Consommation raisonnable des ressources
(mémoire occupée, …)
18
Exemple de complexité
• Complexité en n n

i
i 1

• Complexité en 2n² n n

  (i  j )
i 1 j 1

• Ordre de grandeur pour n grand


• N=> si n*10, temps *10
• N²=> si n*10, temps *100

19
Efficacité
• Simuler une partie d’échec:
• Trop d’états à mettre en mémoire
• On choisit des choses non-optimales mais
efficaces
• Voyageur de commerce
• Comment minimiser le trajet du voyageur de
commerce allant de villes en villes
– Enoncé simple, mais solution très
difficile si nombre de villes est grand (n!
possibilités)
• N=5 =>120, n=15 => 1300 G

20
Affinement des algorithmes

• Un algorithme doit décrire précisément le


traitement qu’il doit exécuter et s’assurer que
tous les cas de figures possible ont bien
été prévus.
• Exemple : algorithme permettant de calculer la
durée d’un voyage à partir du tableau
d’affichage des aéroports
1. Consulter l’heure de départ
2. Consulter l’heure d’arrivé
3. Soustraire l’heure de départ de celle d’arrivée
21
Affinement des
algorithmes
• Problèmes :
– fuseaux horaires différents
– Si un point applique l’heure d’Été et
pas l’autre

• Pour éviter de telles erreurs le


concepteur doit suivre une
démarche rigoureuse et
méthodique :
– Affinement progressive de l’algorithme
22
Affinement des
algorithmes
• Exemple : robot domestique avec
un algorithme de préparation
d’une tasse de café soluble

1. Faire bouillir l’eau


2. Mettre le café
3. Ajouter l’eau dans les tasses

23
Affinement des algorithmes
• 1. faire bouillir l'eau
peut être affinée en

– 1.1. remplir la bouilloire d'eau


– 1.2. brancher la bouilloire sur le secteur
– 1.3. attendre l'ébullition
– 1.4. débrancher la bouilloire

24
Affinement des algorithmes

• 1.1. remplir la bouilloire d'eau

• peut nécessiter les affinements suivants:

• 1.1.1. mettre la bouilloire sous le robinet


• 1.1.2. ouvrir le robinet
• 1.1.3. attendre que la bouilloire soit pleine
• 1.1.4. fermer le robinet

25
Affinement des algorithmes

• Affinement ne se fait pas dans le vide


• Savoir où s’arrêter
• Connaître les capacités du processeur
• Exemple :
– Brancher la bouilloire, activité interprétable
– Remplir la bouilloire, activité non
interprétable => affinement

26
Affinement des algorithmes

• Processeur informatique : ordinateur,


capacités d’interprétation connues
• Le concepteur d’un algorithme doit
donc affiner ce dernier jusqu’à ce
que les étapes puissent être écrites
à l’aide d’un langage de
programmation

27
Concevoir un algorithme

28
Écrire un algorithme
Syntaxe (Pseudo Code)
Algorithme nom de l’algorithme
Var
Déclarations des variables
Début
Instructions
Fin

29
Écrire un algorithme
• Var: Mot réservé indiquant que les
lignes qui suivent sont des déclarations
(et réservation d’espace mémoire) des
variables utilisées dans l’algorithme
• Début: Mot réservé indiquant que les
lignes qui suivent sont les instructions
de l’algorithme
• Fin: Ce mot réservé indique que
l’algorithme est terminé.
30
Écrire un algorithme
Les instructions entrée/sortie
• Saisir : instruction permettant de récupérer une
valeur saisie au clavier (entrée standard) par
l'utilisateur et de ranger cette valeur dans un
variable déclarée au préalable
– une variable : réceptacle de valeurs (données)
– cette variable est spécifiée entre ( ). On dit : passée en
paramètre).
• Attention: prendre en considération le type associé
à la variable
• Ce genre d’instructions est appelé commande
d’entrée

31
Écrire un algorithme
Les instructions entrée/sortie
• Afficher : instruction permettant
d’afficher les données passées en
paramètres sur la sortie standard
(écran)
• On dit que c'est une commande de
sortie

32
Exemple
Algorithme saluer

Var
chaine nom
entier age
Début
Afficher(" Saisir votre nom")
Saisir(nom)
Afficher(" Saisir votre age")
Saisir(age)
Afficher("Salut "+ nom+ " votre âge est "+ age+ "ans" )
Fin

33
Trace d’un algorithme
• L'algorithme peut être exécuté à la
main étape par étape.
• On fait la trace de l'algorithme en
suivant chaque instruction.
• Cette étape de déroulement à la main
permet de contrôler que l'algorithme
correspond aux attentes,
– i.e. que pour les entrées testées, il fournit
les résultats attendus.
34
Trace d’un algorithme
• La trace d'un algorithme peut être
représentée sous la forme d'un tableau
– Chaque ligne représente l’exécution d’une
instruction
– Chaque colonne donne l’évolution d’une
variable

35
Entrées: clavier
Exemple
Alami, 24 nom age
Afficher(" Saisir votre nom") - -

Algorithme saluer Saisir(nom) Alami -


Var
chaine nom
Afficher(" Saisir votre age") Alami -
entier age
Début
Saisir(age) Alami 24
Afficher(" Saisir votre nom")
Saisir(nom)
Afficher(" Saisir votre age") Afficher("Salut "+ nom+ " Alami 24
votre âge est "+ age+ "ans"
Saisir(age) )
Afficher("Salut "+ nom+ " votre âge est "+age+"ans" )
Fin

Sortie: écran
Salut Alami votre âge est 24 ans
36
Les Types
Une variable peut se voir attribuer
trois nature de valeurs :
• Valeur numérique : 1, 30, 3.5, …
• Valeur en chaîne de caractère : " A" ,
"Salut ", …
• Valeur Booléenne : vrai ou faux

37
Les Types
Les types numériques.
• entier : nombres entiers
• réel : nombres à virgule (partie entière +
partie décimale)
• Selon le langage de programmation utilisé,
on peut trouver des variantes des ces types
– Exp en C : short, int, long, float, double, …
• Ces variantes concernent souvent la taille
du nombre et le fait qu'il possède un signe
ou non.
38
Les Types
Les opérations applicable au types numériques.
• L'addition +, la soustraction : –, la multiplication
: *, la division : /et l'élévation à la puissance : ^
• La division entière div et le reste de la division
entière mod (modulo)
– Exp : 7 div 4 = 1 et 7 mod 4 = 3
• Partie entière d'un nombre : ent et partie
décimale d'un nombre : dec
– Exp : ent(12.5) = 12 et dec(12.5) = 0.5
• La comparaison: <, <=, >, >=, =, <>.

39
Les Types
Les alphanumériques
• Ces données contiennent une ou plusieurs
lettres, chiffres, éléments de ponctuation,
c'est-à-dire tout ce qui peut s'afficher à
l'écran en tapant sur un clavier.
• Une donnée qui contient un seul caractère
est de type caractère.
• Une donnée qui contient plusieurs
caractères s'appelle une chaîne de
caractères et est de type chaîne.
40
Les Types
Les alphanumériques
• Les chaînes de caractères peuvent être de
différentes longueurs.
• La longueur maximale d'une chaîne de
caractères s'indique lors de la déclaration.
– Exp : caractère[14] uneChaîne
• Si on ne précise pas la longueur maximale, cela
signifie que la variable pourra contenir la
longueur par défaut d'une chaîne de caractères,
qui dépend du langage de programmation.

41
Les Types
Les opérations sur les
alphanumériques:
• Les opérations de comparaisons sur
les caractères et les chaînes de
caractères: <, <=, >, >=, =, <>,
pour se faire, le programme utilise le
code numérique des lettres (ASCII).

42
Les Types
Les opérations sur les alphanumériques:
• Les opérations de comparaisons sur les caractères
et les chaînes de caractères: <, <=, >, >=, =, <>,
pour se faire, le programme utilise le code
numérique des lettres (ASCII).
– Ex : "1" < "A" (car le code de A est 65)
– "abaa"< "abb" (la comparaison se fait lettre par lettre, de
la gauche vers la droite)
• Longueur d'une chaîne de caractères à l’aide de la
fonction longueur(chaine).
• La concaténation de chaînes de caractères:
– chaine1 + chaine2

44
Les Types
Les booléens
• Ce sont des données ne pouvant
valoir que vrai ou faux.
• Les booléens sont utilisés pour
représenter des états logiques
– Exp : faire des tests
• Les opérations booléennes et, ou et
non

45
Affectation
• L’affectation est l’opération de donner une valeur à
une variable (on parle aussi d’assignation)
• L’opérateur d’affection est 
• Exemples d’affectations de la variable nombre:
– Par saisie: Saisir (nombre)
– Par affectation à l'aide d'une valeur constante: nombre
4
– Par affectation avec une autre variable :
nombreUnAutreNombre
– Par calcul: nombre 65 x 6
46
Initialisation
• L’initialisation désigne l'opération d’une
affectation particulière.
• Initialiser, c'est affecter une valeur, pour la
première fois depuis sa déclaration, à une
variable.
• Une opération à ne pas oublier avant certains
traitement
– Exp : éviter d’afficher une variable non initialisée

47
Règles d’affectation
• On peut affecter un entier à un réel, mais pas l'inverse
– dans quelques langages de programmation on peut affecter un réel à
un entier mais on perd de l'information: ce qui est derrière la virgule
• On ne peut pas affecter un numérique à une chaîne de caractères,
ni une chaîne de caractère à un numériques.
– Si on veut faire ça, il faut convertir le nombre en chaîne ou la chaîne
en nombre à l'aide de fonctions de conversions;
• On doit également s'astreindre à n'affecter à un booléen qu'un
autre booléen ;
• Si on range une chaîne plus grande dans une chaîne plus petite, on
perd la fin de la plus grande des 2 chaînes
– Dans quelques langages de programmation, cette situation génère une
erreur.
48
Conversion
Nombre  Chaîne:
• La fonction fchaîne transforme le numérique
passé en paramètre en une chaîne de
caractères, c'est-à-dire que le résultat
d'application de la fonction fchaîne est une
chaîne de caractères.
– Exp : l'expression fchaîne(452) retourne la chaîne
de caractères "452".

49
Conversion
Chaîne  Nombre:
• Cette opération de conversion de chaîne en
numérique se fait à l'aide de la fonction val.
– elle convertit la chaîne de caractères passée en
paramètre en un nombre.
• La chaîne de caractères passée en paramètre à la
fonction val ne doit donc contenir que des
chiffres.
– Elle peut éventuellement contenir le caractère – ou +
au début, ainsi qu'une virgule.

50
Exercice 1
Effectuez la trace de l’algorithme suivant :
Algorithme algo1
Var
entier x, y
Début
x ← 12
y←x+4
x←3
Fin
Exercice 2
Effectuez la trace de l’algorithme suivant :
Algorithme algo2
Var
entier A, B, C
Début
A←5
B←3
C←A+B
A←2
C←B-A
Fin
Exercice 3
• Que doit être le type déclaré des variables
résultats pour que les expressions suivantes
soient correctement typées ?
• Une fois trouvé le type, évaluez les
expressions.

• a ← 2+3*4 • e ← "abc" + "def"


• b ← 2.0+3*4 • f ← "A" < "B"
• c ← vrai et (faux ou vrai) • g ← 123 > "coucou"
• d ← (2 < 3) et (4 > 5)
Exercice 4
Quel résultat produit l’algorithme suivant ?
Var
entier V
réel D
Début
V ← 231
D←V*2
Afficher (V)
Afficher (D)
Fin
Exercice 5
Ecrire un algorithme qui demande un
nombre à l’utilisateur, puis qui
calcule et affiche le carré de ce
nombre.
Exercice 6
Traduire les expressions mathématiques
suivantes en pseudo-code algorithmique :
Exercice 7
Calcul de taxes
Ecrire un algorithme qui permette à
l’utilisateur d’une station de travail de
calculer le prix TTC, à partir d’un prix hors
taxes frappé au clavier de la station.
Le taux de la taxe étant fixé à 19,6%.
Exercice 8
Permutation de deux entiers
Soient deux entiers X et Y, écrire un
algorithme permettant d’effectuer
une permutation :
la valeur de X doit être placée dans Y
et la valeur de Y dans X.
Exercice 9
Conversion en heures, minutes, secondes
Écrire un algorithme qui demande à
l’utilisateur la valeur d’une durée
exprimée en seconde et qui affiche sa
correspondance en Heures, Minutes,
Seconde.

Exemple :
3800 sec = 1 heure 3 min 20 sec
La structure conditionnelle
• Permet d’effectuer des test à base de condition
• Cette condition est une expression booléenne
• Si la condition est vraie le traitement aura lieu
• Syntaxe :
Si condition
Alors
//instructions de traitement
FinSi
51
La structure conditionnelle
• Autre syntaxe : • Si la condition est vraie,
Si condition alors ce sont les
instructions de la partie
Alors
Alors qui seront
//instructions exécutées.
Sinon • Si la condition est fausse,
//instructions alors, ce sont les
instructions de la partie
FinSi Sinon qui seront
exécutées.
52
La structure conditionnelle
Si condition1
Alors
Si condition2
Alors
//On arrive ici si condition1 et condition2 sont vraies
//instructions
[Sinon
//On arrive ici si condition1 est vraie et si condition2 est fausse
//instructions] Lorsqu'une condition ne suffit pas pour
Finsi départager tous les cas possibles,
[Sinon on peut emboîter (imbriquer) des
//instructions] structures conditionnelles les unes dans
Finsi les autres.
53
La structure d’aiguillage
• Supposons que l'on est dans une situation
avec plusieurs scénarios possible
– Plusieurs alternatives, plusieurs cas
• Imbriquer des structures conditionnelles serait
trop
• L’aiguillage (switch) permet de remplacer une
série (souvent peu élégante) de si..alors..finsi
imbriquées

54
La structure d’aiguillage
Exp :Peut toujours s’écrire avec des alternatives :
var
entier i
Début
saisir(i)
si i=1 alors bloc1
sinon
si i=2 alors bloc2
sinon
si i=3 alors bloc3
sinon
……
finsi
finsi
finsi
fin

55
La structure d’aiguillage
Exp :
Peut toujours s’écrire avec des alternatives :
var
entier i
Début
saisir(i)

switch (i)
case 1
bloc1
break
case 2
bloc2
break
….
finswitch
fin
56
La structure d’aiguillage
Syntaxe :
switch (expression)
case val1
bloc1
break
case val2
bloc2
break
….

default
….
FinSwitch

57
La structure d’aiguillage
• Switch évalue l'expression qui lui est donnée et
aiguille le programme vers le cas correspondant à la
valeur effective de cette expression.
• Les cas sont indiqués par l'instruction case.
• Lorsque le programme est aiguillé, il entre dans le
bloc du switch et n'en sort que lorsqu'un break est
rencontré, ou au début du cas suivant (selon le
langage)
• Si la valeur de l'expression donnée ne correspond à
aucun des cas, le programme est aiguillé vers
l'instruction default qui doit apparaître après tous les
case. Si le bloc n'en possède pas, il est sauté.
58
Exercice 10
si ((a > 0) ou (b > c)) et ((d > a) ou (d < 5))
alors
a←0
d ← b+c
sinon
c ← a-b
si (c > 0)
alors
d ← -d
finsi
b←0
finsi
Exercice 11
Ecrire un algorithme qui demande deux
nombres à l’utilisateur et l’informe ensuite si
leur produit est négatif ou positif (on laisse
de côté le cas où le produit est nul).

Attention : on ne doit pas calculer le produit


des deux nombres.
Exercice 12
Ecrire un algorithme qui demande l’âge d’un
enfant à l’utilisateur. Ensuite, il l’informe de sa
section:
• "Petite Section" : 3 ans
• "Moyenne Section" : 4 ans
• "Grande Section" : 5 ans
• "Non admissible" pour les autres âges
Exercice 13
Résolution d’une équation du second degré ax²+bx+c = 0
Écrire un algorithme qui :

demande à l’utilisateur la valeur de a, b et c

indique l’existence d’éventuelles solutions

calcul la ou les solutions existantes
Les structures itératives
• On utilise des structures itératives (répétitives)
lorsqu'on a besoin d'effectuer le même
traitement plusieurs fois d'affilée
• On appelle ça des boucles car on boucle
plusieurs fois sur les mêmes instructions :
– on remonte au début du traitement itératif et on le
recommence un certain nombre de fois.
• On compte trois sortes de structures répétitives

59
La boucle For (Pour)
Pour i de valDeb à valFin [incrémenté (décrémenté) de n]
Faire
//instructions
FinPour
• La structure Pour initialise la variable i à valDeb
et exécute les instructions se trouvant entre le
mot clé Faire et le mot clé FinPour.

60
La boucle For (Pour)
• Arrivé au mot clé FinPour, on incrémente i de n (i+n),
si on a précisé incrémenter de n, et on décrémente i
de n (i - n) sinon. Puis on recommence à exécuter les
instructions se trouvant entre le mot clé Faire et le
mot clé FinPour pour cette nouvelle valeur de i, et
ainsi de suite.
• On s'arrête de boucler lorsque la valeur de i ( suite aux
augmentations ou aux diminutions successives) n'est
plus comprise entre valDeb et valFin.
• Lorsqu'on en est arrivé à cette situation, on passe
exécuter les instructions qui suivent le mot clé
FinPour.

61
La boucle While (Tant Que)
TantQue condition
Faire
//instructions
FinTantQue
• «condition» est une expression booléenne. On entre dans
la boucle si condition est vraie.
• Une fois les instructions exécutées, on arrive au
FinTantQue, on remonte et on réévalue la condition. Si
«condition» est toujours vraie, on entre à nouveau dans la
boucle, sinon on passe exécuter l’instruction qui suit le
FinTantQue

62
La boucle While (Tant Que)
• Parmi les instructions figurant dans le TantQue,
certaines doivent modifier la valeur de
«condition».
• Si on entre dans le TantQue (si «condition»est
vraie) et qu'aucune instruction ne modifie la
valeur de «condition», alors la condition sera
toujours vraie et on ne sortira jamais de cette
boucle
• cela s'appelle une boucle infinie.
63
La boucle do..While
Faire
//instructions
TantQue condition
• Contrairement à la boucle TantQue où la condition est une
condition d'entrée dans la boucle, la condition ici est une
condition de sortie
• On sort de la structure si condition est fausse
• Dans ce cas, les instructions sont exécutées au moins une
fois puisque la vérification de «condition» se fait à la fin de
la boucle.
64
Exercice 14
Exécutez les algorithmes partiels suivants
sachant que toutes les déclarations
nécessaires ont été préalablement effectuées

x ← 10 a←9
TantQue x > 0 X←0
Faire Faire
x←x-3 x←x+a
FinTantQue TantQue x > 20
Afficher(x) Afficher(x)
Exercice 15
Exécutez les algorithmes partiels suivants
sachant que toutes les déclarations
nécessaires ont été préalablement effectuées
n←4
n←1 a←0
TantQue n < 10
Pour i de 1 à n
Faire
n←n+2
Faire
FinTantQue Saisir(x) //on lira 1,4,6,9
Afficher("n ="+ n) a←a+x
FinPour
Afficher(a)
Exercice 15
Exécutez les algorithmes partiels suivants sachant que
toutes les déclarations nécessaires ont été
préalablement effectuées
n←4
a←0
Pour i de 1 à n
Faire
Saisir(x) //on lira 1,4,6,9
Si x > 5
Alors
a←a+x
FinSi
FinPour
Afficher(a)
Exercice 16
Ecrire un algorithme qui demande à
l’utilisateur un nombre et affiche sa table de
multiplication
exp : le nombre saisi est 3 1x3=3
2x3=6
3x3=9
4 x 3 = 12
5 x 3 = 15
6 x 3 = 18
7 x 3 = 21
8 x 3 = 24
9 x 3 = 27
Structure de données
“ I will, in fact, claim that the difference
between a bad programmer and a good
one is whether he considers his code or his
data structures more important. Bad
programmers worry about the code. Good
programmers worry about data structures
and their relationships. ”
Linus Torvalds (creator of Linux)
65
Les Tableaux
• Un tableau est une collection de variables de
même type et ayant des rôles similaires dans
l’algorithme
• Chaque élément du tableau est identifié par
un indice, c’est le numéro de la case dans
laquelle il se trouve dans le tableau
• La première case est en général d’indice 0

66
Les Tableaux
• Les tableaux nous évitent de déclarer un grand
nombre de variables et ils permettent
d’effectuer des traitements communs (souvent
itératifs) sur les données qu’ils contiennent
• Exp: au lieu de créer 25 variables qui
contiendront chacune une note d’un étudiant,
on crée un tableau qui contiendra les 25
notes.

67
Les Tableaux
• On déclare un tableau en précisant sa taille (nombre de
cases)et son type (type des valeurs à contenir) :
tableau [taille] de type nomTableau
• Exp : tableau [10] de entier monTab
monTab est un tableau composé de 10 cases dont
chacune peut contenir un entier

Indices 0 1 2 3 4 5 6 7 8 9
Valeurs

68
Les Tableaux
• On accède au contenu d’une case du tableau en précisant
son indice entre crochets:
nomTableau [indice]
• Exp :
monTab[2] est la valeur stockée dans la troisième case (la
première case a pour indice 0)

Indices 0 1 2 3 4 5 6 7 8 9
Valeurs

69
Les Tableaux
• Pour réaliser des traitements sur des tableaux,
on utilise la plupart du temps des structures
itératives:
• Exp : remplir notre tableau
Pour i de 0 à 9
Faire
Afficher (‘‘entrez un entier’’)
saisir(monTab[i])
FinPour
70
Les Tableaux à deux dimensions
• Les tableaux à deux dimensions sont assimilés à
une matrice : ensemble de lignes et de colonnes
• Ils sont gérés par deux indices : indice de lignes et
indice de colonnes
• On déclare un tableau à deux dimensions en
précisant le nombre de lignes L et le nombre de
colonnes C. Ainsi que le type des valeurs à
contenir :
tableau [L][C] de type nomTableau
71
Les Tableaux à deux dimensions
• Exp:
tableau [3][4] de entier nomTableau

0 1 2 3
0
1 Lignes
2

Colonnes
72
Les Tableaux à deux dimensions
• On accède au contenu d’une case (cellule)
précisant son indice ligne et son indice colonne
entre crochets:
nomTableau [indice Ligne][indice Colonne]
• Exp: monTab [1][2]
est la cellule sur la deuxième ligne et la troisième
colonne
0 1 2 3
0
1
2
73
Les Tableaux à deux dimensions
• Pour parcourir des tableaux à deux dimension, on utilise
généralement deux boucles imbriquées : une pour
parcourir les lignes et l’autre pour parcourir les colonnes
• Exp : pour remplir notre tableau
Pour i de 0 à 2
Faire
Pour j de 0 à 3
Faire
Afficher (‘‘entrez un eniter’’)
saisir(monTab[i][j])
FinPour
FinPour
74
Exercice 21
Que produit l’algorithme suivant ?
Peut-on le simplifier ?
Var
Tableau[6] de Entier Nb
Entier i
Début
Pour i de 0 à 5
Faire
Nb[i] ← i * i
FinPour
Pour i de 0 à 5
Faire
Afficher(Nb[i])
FinPour
Fin
Exercice 22
• Écrire un algorithme qui déclare un tableau de
8 notes, dont on fait ensuite saisir les valeurs
par l’utilisateur.
• Cet algorithme doit aussi calculer la moyenne
des notes et l’afficher à l’écran

Vous aimerez peut-être aussi