Le Langage Pseudo-Code
Cours d’Algorithmique 1er Semestre (Fr ´ed ´eric Koriche) IUT Informatique de Lens
Donn ´ees
En algorithmique, toute donn ´ee est d ´efinie par
I sonnom: d ´esigne la donn ´ee dans l’algorithme,
I sontype: d ´esigne le domaine de valeurs de la donn ´ee, et
I sanature: variable (peut changer de valeur) ou constante (ne peut pas changer de valeur).
Types Simples
Type Domaine
bool ´een {faux,vrai}
caract `ere Symboles typographiques
entier Z
r ´eel R
Op ´erateurs
Un op ´erateur est unefonctiond ´efinie par
I sonarit ´e: d ´esigne le nombre de variables d’entr ´ee,
I saposition: l’op ´erateur peut ˆetre pr ´efixe (devant), infixe (milieu) ou postfixe (derri `ere), et
I sontype: d ´esigne le type de ses entr ´ees et celui de sa sortie.
Exemple: L’op ´erateur d’addition sur les entiers
Op ´erateur binaire, not ´e+ (position infixe), dont le type est:
+ : entier×entier→entier
Op ´erateurs sur les types simples
I Arithm ´etiques (entiers): toutes les entr ´ees sont desentierset la sortie est un entier.
Nom Symbole
addition +
soustraction −
multiplication × division enti `ere /
reste mod
inversion de signe −
I Arithm ´etiques (r ´eels): au moins une entr ´ee est unr ´eelet la sortie est un r ´eel.
Nom Symbole
addition +
soustraction −
multiplication ×
division /
inversion de signe −
I Comparaisons: les deux entr ´ees sont desentiers,caract `eres∗ our ´eels. La sortie est un bool ´een.
Nom Symbole
est ´egal `a =
est plus petit que <
est plus grand que >
est plus petit ou ´egal `a ≤ est plus grand ou ´egal `a ≥
I Logiques: toutes les entr ´ees sont des bool ´eenset la sortie est un bool ´een.
Nom Symbole
conjonction et disjonction ou n ´egation non
Expressions
Une expression est une composition d’op ´erations dont l’ordre est sp ´ecifi ´e par les parenth `eses.
Letype d’une expression est donn ´e par le type de sa valeur de sortie Exemple: Supposons quex,y,z soient des entiers.
I (x >0)et(y <0)est une expression bool ´eenne
I (x +y)/z est une expression enti `ere
Instructions
Une instruction est uneaction `a accomplir par l’algorithme. Les quatre instructions de base sont lad ´eclaration(m ´emoire), l’assignation (calcul), lalecture(entr ´ees) et l’´ecriture(sorties).
Instruction Sp ´ecification D ´eclaration type variable
Assignation variable←− expression Lecture lirevariable
Ecriture ´ecrireexpression
Blocs
Un bloc est une s ´equence d’instructions identifi ´ee par une barre verticale.
Exemple: permutation de valeurs d ´ebut
entiera,b,temp lirea, b
temp←−a a←−b b ←−temp affichera, b fin
L’instruction de test ”si alors”
Dans l’instruction si condition alors bloc, la condition est une expression bool ´eenne, et le bloc n’est ex ´ecut ´e que si la condition est vraie.
Exemple: valeur absolue d ´ebut
r ´eelx,y lirex y ←x
siy <0 alors y ← −y affichery fin
L’instruction de test ”si alors sinon”
Danssicondition alorsbloc 1sinonbloc 2, la condition est une expression bool ´eenne. Le bloc 1 est ex ´ecut ´e si la condition est vraie ; le bloc 2 est ex ´ecut ´e si la condition est fausse.
Exemple: racine carr ´ee d ´ebut
r ´eelx,y lirex
six ≥0 alors y ←sqrt(x) affichery sinon
afficher”Valeur ind ´efinie”
fin
L’instruction de test ”suivant cas”
Dans l’instructionsuivant condition cas o `u v1 bloc 1 cas o `u v2 bloc 2 . . . , la condition est une expression pouvant prendre plusieurs valeurs v1,v2, . . .. Selon la valeur de la condition, le bloc du cas correspondant est ex ´ecut ´e.
Exemple: choix de menu d ´ebut
entiermenu liremenu
suivantmenufaire cas o `u 1
afficher”Menu enfants”
cas o `u 2
afficher”Menu v ´eg ´etarien”
autres cas
afficher”Menu standard”
fin
L’instruction de boucle ”pour”
L’instructionpourest utilis ´ee lorsque le nombre d’it ´erations est connu `a l’avance: elle initialise un compteur, l’incr ´emente apr `es chaque ex ´ecution du bloc d’instructions, et v ´erifie que le compteur ne d ´epasse pas la borne sup ´erieure.
Exemple: Somme des entiers de 1 `an d ´ebut
entiern, s, i liren
s ←0
pouri de1 `an faire s ←s+i
affichers fin
L’instruction de boucle ”tant que”
La boucle tant que est utilis ´ee lorsque le nombre d’it ´erations n’est pas connu `a l’avance: elle ex ´ecute le bloc d’instructions tant que la condition reste vraie.
Exemple: Somme des entr ´ees saisies par l’utilisateur (version ”tant que”) d ´ebut
entiern←1,s ←0 tant quen 6=0 faire
afficher”Entrer un entier (0 pour arr ˆeter) : ” liren
s ←s+n affichers fin
L’instruction de boucle ”r ´ep ´eter jusqu’ `a”
La boucle r ´ep ´eter jusqu’ `a est utilis ´ee lorsque le nombre d’it ´erations n’est pas connu `a l’avance, et qu’il faut lancerau moins une ex ´ecution du bloc d’instructions. Elle ex ´ecute le bloc jusqu’ `a ce que la condition d’arr ˆet devienne vraie.
Exemple: Somme des entr ´ees saisies par l’utilisateur (version ”r ´ep ´eter jusqu’ `a”) d ´ebut
entiern, s ←0 r ´ep ´eter
liren s ←s+n jusqu’ `an =0 affichers fin
Le Langage Pseudo-Code
Cours d’Algorithmique 1er Semestre (Fr ´ed ´eric Koriche) IUT Informatique de Lens
Tableaux Statiques Unidimensionnels
Untableau(statique unidimensionnel) est une s ´equence de donn ´ees du m ˆeme type accessibles par leur index. Il est d ´efini par:
I sonnom,
I le typede ses ´el ´ements, et
I satailleou le nombre de ses ´el ´ements.
Le premier index d’un tableau deN ´el ´ements est 0et le dernier index estN −1.
0 1 2 3 4 5 6 7
12 14 16 09 11 10 13 17
Un tableau de 8 entiers
Les seules op ´erations possibles sont la d ´eclaration, l’initialisation (d ´eclaration avec valeurs initiales) et l’acc `es `a ses ´el ´ements.
Op ´eration Sp ´ecification Exemple
D ´eclaration type nom[taille] entiertab[10]
Initialisation type nom[n]← {v1,· · · ,vn} caract `erevoyelles[5]← {’a’,’e’,’i’,’o’,’u’,’y’}
Acc `es nom[index] voyelles[i]
Tableaux Statiques Multidimensionnels
Untableau statique de dimension dest une s ´equence de tableaux de dimensiond−1. En particulier, une matrice est un tableau de dimension 2. Comme pour tous les tableaux statiques, les seules op ´erations possibles sont lad ´eclaration, l’initialisationet l’acc `es `a ses ´el ´ements.
Op ´eration Sp ´ecification Exemple
D ´ecl. type nom[rang ´ees][colonnes] r ´eel matrice[4][4]
Init. type nom[m][n]← {{v11,· · · ,v1n},· · ·,{vm1,· · · ,vmn}} r ´eel unit ´e[2][2] ← {{1,0},{0,1}}
Acc `es nom[rang ´ee][colonne] matrice[i][j]
Tableaux Dynamiques
Un tableau dynamique (unidimensionnel) ou vecteur est une s ´equence de donn ´ees du m ˆeme type ; la taille de la s ´equence est variable(elle peut changer au cours de l’ex ´ecution du programme).
En plus des op ´erations de tableaux statiques, les vecteurs permettent des op ´erations de copie et de modification.
Op ´eration Sp ´ecification Exemple
D ´eclaration vecteur de type nom vecteur de r ´eelsv
Initialisation vecteur de type nom(quantit ´e,valeur) vecteur de r ´eelsv(10,0)
Copie nom1 ←−nom2 v ←w
Acc `es aux ´el ´ements nom[index] v[i]
Acc `es `a la taille longueur(nom) longueur(v)
Test du vecteur vide vide(nom) si(vide(v))alors . . .
Ajout d’un ´el ´ement `a la fin ´etend ´etend(v,10.0)
Chaˆınes
Une chaˆıne est un tableau dynamique unidimensionnel compos ´e de caract `eres ascii. En plus des op ´erations de vecteurs, les chaˆınes permettent des op ´erations decomparaison lexicographique.
Op ´eration Sp ´ecification Exemple
D ´eclaration chaˆınenom chaˆınec
Initialisation chaˆınenom ←constante chaˆıne chaˆınec ←”Bonjour”
Copie nom1 ←−nom2 c ←d
Acc `es aux ´el ´ements nom[index] c[i]
Acc `es `a la taille longueur(nom) longueur(c)
Test de la chaˆıne vide vide(nom) si(vide(c)) alors . . .
Concat ´enation + c ←c +d
Comparaisons ≤, <,=,6=, >,≥ si(c 6= d)alors . . .
Typage
Il est possible de construire de nouveaux types `a partir de types pr ´ed ´efinis en utilisant le mot-cl ´e type.
En pseudo-code les types apparaissent avant les algorithmes.
Exemple: d ´eclaration d’un type et d’une variable de ce type type entierMatriceDeRotation [2][2]
d ´ebut
MatriceDeRotation m . . .
fin
Enum ´erations
Une ´enum ´eration(ou type ´enum ´er ´e) est un type dont le domaine de valeurs est d ´efini par le programmeur.
Op ´eration Sp ´ecification Exemple
D ´eclaration de type ´enum ´erationNom {v1,· · · ,vn} ´enum ´erationCouleurs {r,v,b}
D ´eclaration de variable Nom variable Couleurs c
Copie variable enum←−donn ´ee ´enum c ←r
Conversion variable enum←−(Nom)donn ´ee enti `ere c ←(Couleurs)2
Comparaisons ≤, <,=,6=, >,≥ si(c =r)alors . . .
Structures
Unestructureest un type composite form ´e par plusieurs types group ´es ensembles.
Op ´eration Sp ´ecification Exemple
D ´ecl. de type structureNom {Type 1 nom 1,· · · ,Type k nom k} structurePoint {r ´eelx,r ´eely}
D ´ecl. de variable Nom variable Point p
Copie variable1 ←−variable2 p ←q
Acc `es . p.x
Exemple: d ´eclaration d’un tableau de structures structure Point
r ´eel x r ´eel y
type Point Figure[100]
d ´ebut Pointp
afficherp.x // Affiche l’abscisse du point p
Figuref
afficherf[0].x // Affiche l’abscisse du premier point de la figure f fin
Fonctions
En algorithmique, unefonctionest d ´efinie par deux parties:
I Uneen-t ˆete: elle sp ´ecifie le type de la fonction, c’est `a dire, le type de ses donn ´ees d’entr ´ees et le type de sa valeur de sortie.
I Uncorps: il sp ´ecifie l’algorithme permettant de passer des donn ´ees d’entr ´ee `a la valeur de sortie.
La d ´eclaration d’une fonction consiste `a sp ´ecifier seulement l’en-t ˆete de la fonction. La d ´efinition d’une fonction consiste `a sp ´ecifier `a la fois l’en-t ˆete et le corps de la fonction.
Exemple: d ´efinition de la fonction factorielle r ´eelfact(entiern)
d ´ebut entieri r ´eel f ←1
pour i de1 `a nfaire f ←f ∗i
retournerf fin
Algorithmes de construction
Les algorithmes permettant de construire des ensembles (tableaux, chaˆınes, etc.) utilisent des boucles ”pour”: il faut construire tous les ´el ´ements de l’ensemble.
Exemple: addition de deux matrices type r ´eel Matrice[4][4]
Matriceaddition(MatriceA, MatriceB) d ´ebut
Matrice C entieri
pour i de0 `a 3faire C[i]←A[i] +B[i]
retournerC fin
Algorithmes de recherche
Les algorithmes permettant de rechercher un objet dans un ensemble utilisent des boucles
”tant que”: la recherche s’arr ˆete d `es que l’ ´el ´ement est trouv ´e
Exemple: recherche un entier dans un vecteur non tri ´e; si la valeur recherch ´ee est pr ´esente alors l’algorithme retourne son index, sinon il retourne la taille du vecteur
entierrechercher(vecteur d’entiers tab, entierx) d ´ebut
bool ´een trouv ´e←faux entieri ←0
tant que (i <longueur(tab))et(nontrouv ´e) faire trouv ´e←tab[i] =x
si nontrouv ´e alorsi ←i+1 retourneri
fin
Algorithmes de recherche dichotomique
Les algorithmes permettant de rechercher un objet dans un ensemble tri ´e peuvent ex- ploiter la dichotomie (beaucoup plus rapide).
entierdichotomie(vecteur d’entiers tab,entierx) d ´ebut
entiermilieu,gauche←0,droite ←longueur(tab) r ´ep ´eter
milieu←(gauche+droite)/2
six < tab[milieu] alorsdroite ←milieu−1 six > tab[milieu] alorsgauche←milieu+1 jusqu’ `a (gauche>droite)ou(tab[milieu] =x) sigauche>droite alorsmilieu←longueur(tab) retournermilieu
fin
Algorithmes de tri
Les algorithmes de tri simple (insertion, s ´election) utilisent deux boucles ”pour”
triParSelection(vecteur d’entierstab) d ´ebut
entieri,j
pour i de0 `alongueur(tab)−2faire
pour j dei +1 `alongueur(tab)−1 faire sitab[j] <tab[i]alors
permuter(tab[i],tab[j]) fin