Vous êtes sur la page 1sur 8

I.

Les structures de données


Déclaration des constantes (Analyse/Algorithmique) En Pascal
TDO  Syntaxe :
Objets Type/Nature Rôle CONST <nom_constante> = <valeur_constante> ;
Générale Nom Constante = valeur de la constante Rôle  Exemples :
Année Constante = 2016 CONST annee = 2016 ;
G Constante = 9.81 g = 9.81 ;
Exemples ville = ‘Chebba’ ;
Ville Constante = "Haffouz"
Lettre Constante = "B" lettre = ‘B’ ;
Déclaration des variables (Analyse/Algorithmique) En Pascal
TDO  Syntaxe :
Objets Type/Nature Rôle VAR <nom_variable> : type_variable ;
Générale Nom Type de la variable Rôle  Exemples :
Code Octet VAR Code : Byte ;
Heure Entier Heure : Integer ;
Nb Entier Long Nb : LongInt ;
Moy Réel Moy : Real ;
Exemples Phrase : String ;
Phrase Chaîne de caractères
Nom Chaîne de 15 caractères Nom : String[15] ;
Let Caractère Let : Char ;
Test Booléen Test : Boolean ;
Déclaration d’un tableau à une dimension (Analyse/Algorithmique) En Pascal
Méthode N°1 :  Syntaxe :
TDO VAR Ident_tableau : ARRAY [Binf..Bsup] OF Type_éléments ;
Objets Type/Nature Rôle  Exemples :
Générale Nom_tableau Tableau de taille et de type_éléments Rôle VAR Moy : array [1..30] of real ;
Exemples Moyenen Tableau de taille 30 et de type Réel
Méthode N°2 :
Tableau de Déclarations des Nouveaux Types (TDNT)
Type
Nom_type = tableau de taille et de type_éléments  Syntaxe :
TYPE Nom_type = ARRAY [Binf..Bsup] OF Type_éléments ;
Tab = tableau de 100 chaînes de caractères
VAR Nom_tableau : Nom_type ;
TDO
 Exemple :
Objets Type/Nature Rôle
Type Tab = Array [1..100] of string ;
Nom_tableau Nom_type Rôle Var T : Tab ;
T Tab

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 1/8


Déclaration d’un type Enuméré (Analyse/Algorithmique) En Pascal
Tableau de Déclarations des Nouveaux Types (TDNT)  Syntaxe :
Type TYPE Nom_du_type = (valeur1, valeur2, valeur3, …) ;
Nom_du_type = (valeur1, valeur2, valeur3, …)  Exemples :
N.B : TYPE
 Une valeur énumérée ne peut pas être une valeur appartenant à un type JOURS = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;
prédéfini (entier, réel, caractère, chaîne, booléen). VOITURE = (renault, citroen, peugeot, ford, toyota) ;
 On ne peut ni lire ni afficher une valeur énumérée VOYELLE = (A, E, I, O, U, Y) ;
Déclaration d’un type intervalle (Analyse/Algorithmique) En Pascal
Tableau de Déclarations des Nouveaux Types (TDNT)  Syntaxe :
Type TYPE Nom_du_ intervalle = borne inférieur .. borne supérieur ;
Nom_du_intervalle = borne inférieur .. borne supérieur  Exemples :
TYPE
JOURS = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;
JOUR_TRAVAIL = lundi . . vendredi ;
MOIS = 1 . . 12 ; ALPHA = ‘a’ . . ‘z’ ;

Nom Type du
Code en Pascal Type de x Rôle Exemples en Pascal
Algorithmique résultat
Abs (x) ABS (x) entier/réel type de x valeur absolue de x ABS (-4) = 4 ; ABS (-5.7) = 5.7
Carré (x) SQR (x) entier/réel type de x carré de x SQR (2) = 4 ; SQR (2.5) = 6.25
Racine Carré (x) SQRT (x) entier/réel réel racine carrée de x SQRT (25) = 5.00 ; SQRT (6.25) = 2.5
Cos (x) COS (x) entier/réel réel cosinus de x (x en radians) COS (PI/2) = 0.00
Sin (x) SIN (x) entier/réel réel sinus de x (x en radians) SIN (PI/2) = 1.00
Tang (x) TAN (x) entier/réel réel tangente de x (x en radians) TAN (PI) = 0.00
Ln (x) LN (x) entier/réel réel logarithme népérien de x LN (1) = 0.00
Exp (x) EXP (x) entier/réel réel exponentiel de x EXP (0) = 1.00
Tronc (x) TRUNC (x) réel entier partie entière de x TRUNC (3.15) = 3 ; TRUNC (-3.15) = -3
Ent (x) INT (x) réel réel partie entière de x INT (3.15) = 3.00
Arrondi (x) ROUND (x) réel entier entier le plus proche de x ROUND (9.49) = 9 ; ROUND (9.5) = 10
Frac (x) FRAC (x) réel réel partie décimale de x FRAC (2.45) = 0.45
Aléa RANDOM - réel renvoie un réel aléatoire dans [0, 1[ 0.36 ; 0.075 ; 0.98 ; 0.02 ; …
Aléa (x) RANDOM (x) entier (mot) entier (mot) renvoie un entier aléatoire dans [0, x-1] Random (7) renvoie un entier dans [0, 6]
Pred (x) PRED (x) scalaire type de x prédécesseur de x, s’il existe PRED (5) = 4 ; PRED (‘C’) = ‘B’ ; PRED (True) = False
Succ (x) SUCC (x) scalaire type de x successeur de x, s’il existe SUCC (5) = 6 ; SUCC (‘C’) = ‘D’ ;
Chr (x) CHR (x) octet caractère caractère dont le code ASCII est x CHR (65) = ‘A’ ; CHR (97) = ‘a’
Ord (x) ORD (x) scalaire entier rang de la valeur x ORD(‘A’)=65 ; ORD(18)=18 ; ORD(true)=1
Majus (x) UPCASE (x) caractère caractère majuscule de x, s’il est possible UPCASE (‘b’) = ‘B’ ; UPCASE (‘R’) = ‘R’
Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 2/8
UPCASE (‘4’) = ‘4’ ; UPCASE (‘?’) = ‘?’

Syntaxe Type
Rôle Exemples en Pascal
En Algorithmique En Pascal Paramètres d’entrée Résultat
Retourne un entier représentant Lg := Length ('L''école');  lg = 7
Long (ch) Length (ch) la longueur de ch. Chaîne Entier Lg := Length ('') ;  lg = 0
Long (ch) = ord (ch[0]) Lg := Length (' ') ;  lg = 1
Retourne la première position P := Pos ('T', 'ATTENTION') ;  P = 2
Pos (ch1, ch2) Pos (ch1, ch2) de la chaîne ch1 dans la chaîne Chaînes Entier P := Pos ('gra', 'Program') ;  P = 4
ch2. P := Pos ('R', 'Professeur') ;  P = 0
CH 1:= Copy ('Langage', 4, 3) ;
Retourne une sous chaîne de n
 CH1 = 'gag'
Sous_Chaîne (ch, p, n) Copy (ch, p, n) caractères à partir de la position Chaîne, Entier, Entier Chaîne
CH 2:= Copy ('Bonjour', 4, 10) ;
p de la chaîne ch.
 CH2 = 'jour'
Retourne la concaténation de CH1 := '_Janvier_' ;
Concat (ch1, ch2, …) Concat (ch1, ch2, …) plusieurs chaînes en une seule. Chaînes Chaîne CH2 := Concat ('14', ch1, '2011') ;
C'est l'équivalent de ch1+ch2+…  CH2 = '14_Janvier_2011'

Syntaxe Type
Rôle Paramètres Exemples en Pascal
En Algorithmique En Pascal Résultat
d’entrée
Supprime N caractères de CH à partir Chaîne, Entier, CH := 'Merci' ;
Efface (ch, p, n) Delete (ch, p, n) ; Chaîne
de la position P. Entier Delete (CH, 4, 2) ;  CH = 'Mer'
Insère une chaîne CH1 dans une autre Chaîne/Caractère, CH1 := 'DA' ; CH2 := 'DIC' ;
Insère (ch1, ch2, p) Str (n, ch) ; Chaîne
CH2 à la position P. Chaîne, Entier Insert (CH1, CH2, 3) ;  CH2 = 'DIDAC'
STR (2016, CH) ; CH = '2016'
Convertit une valeur numérique N en Numérique,
ConvCh (n, ch) Str (n, ch) ; Chaîne STR (14.52, CH) ; CH = '1.4520000000E+01'
une chaîne CH. Chaîne
STR (14.52:8:3, CH) ; CH = '__14.520'
Convertit une chaîne de caractères CH VAL ('2018', n, err) ; n = 2018 et err = 0
en une valeur numérique N. De plus, VAL ('0045', n, err) ; n = 45 et err = 0
elle fournit un code d'erreur ERR qui Chaîne/Caractère, Numérique, VAL ('5E+3', n, err) ;
Valeur (ch, n, err) Val (ch, n, err) ;
indique si l'opération s'est déroulée Numérique, Entier Entier Si n est de type entier : n = 0 et err = 2
correctement. Si n est de type réel : n = 5000 et err = 0

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 3/8


II. Les structures simples
L’opération d’entrée (lecture, saisie) L’opération de sortie (écriture, affichage)

Analyse Algorithme Pascal Analyse / Algorithme Pascal


Variable = Donnée Lire (variable) ReadLn (variable) ; Ecrire ("Message", Nom_objet, Write ('Message', Nom_objet,
Var1, Var2, Var3 = Données Lire (var1, var2, Readln (var1, var2, Expression) Expression)
var3) var3) ; Exemples :
Variable = Donnée ("Message") Ecrire ("Message"), Write ('Message') ; Analyse / Algorithme Pascal Résultat sur l'écran
Lire (variable) Readln (variable) ; A  10 A:=10 ;
L’opération d’affectation Ecrire (A) Writeln (A) ; 10
Ecrire ("Bonjour") Write ('Bonjour') ; Bonjour
Ecrire (2 * 8 DIV 3) Writeln (2 * 8 DIV 3) ; 5
Analyse / Algorithme Pascal Ecrire (5 > 6) Write (5 > 6) ; False
Variable  Valeur Variable := Valeur ; Ecrire (3, "*", A, " = ", 3*A) Writeln (3, '*', A, ' = ', 3*a) ; 3*10 = 30
III. Les structures de contrôles conditionnelles
La forme simple réduite La forme généralisée
Algorithmique Pascal Algorithmique Pascal
Si condition alors If condition then Si condition 1 alors traitement 1 IF condition1 THEN traitement1
Traitement Traitement ; Sinon Si condition 2 Alors traitement 2 ELSE IF condition2 THEN traitement2
FinSi ………….. …………..
La forme alternative Sinon Si condition n-1 Alors traitement ELSE IF condition n-1 THEN traitement
Algorithmique Pascal n-1 n-1
Si condition alors If condition then Sinon traitement n ELSE traitement n ;
Traitement1 Begin FinSi
Sinon Traitement1; La structure de contrôle conditionnelle à choix
Traitement2 End Algorithmique Pascal
FinSi Else Selon sélecteur Faire Case sélecteur OF
Begin Valeur_1 : traitement 1 Valeur_1 : traitement 1 ;
Traitement2; Valeur_2 : traitement 2 Valeur_2 : traitement 2 ;
End ; ……… ………
Valeur_n : traitement n Valeur_n : traitement n ;
Sinon traitement n+1 else traitement n+1 ;
Fin selon End ;

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 4/8


IV. Les structures de contrôles itératives
Définition itérative complète Définition itérative à condition d’arrêt
Formulation 1 Formulation 2
[ inititialisation]
[ inititialisation] [ inititialisation]
Pour compteur de Vi à Vf faire
Algorithmique Répéter Tant que(Non(Cond_arrêt) faire
Traitement
Traitement Traitement
Fin Pour
Jusqu’à (Condition arrêt) Fin tant que
Forme …..; ….. ;
….. ;
Générale …. ; …… ;
…… ;
For compteur : = Vi To Vf Do While ( Not(cond_arrêt)) Do
Repeat
Pascal Begin Begin
…… ;
….. ; …… ;
……. ;
….. ; ……. ;
Until(condition arrêt);
End ; End ;
Types Compteur de type scalaire discret (Entier / caractère)
Connu d’avance
Inconnue : Si la condition d’arrêt est
Nombre d’itération Pour les entiers : Vf – Vi + 1 Inconnu : Au moins une fois
vraie, la boucle ne s’exécute jamais.
Pour les caractères : Ord ( Vf) – Ord (Vi) + 1
Les variables qui figurent dans l’expression de la condition doivent être
Initialisation & Le compteur est initialisé à Vi
initialisées par l’utilisateur. Elles doivent être modifiées à l’intérieur de la
incrémentation L’incrémentation automatique se fait de 1
boucle, sinon le boucle ne s’arrête pas. (Boucle infini).
V. Les sous programmes
Les fonctions Les procédures
Une fonction est un sous-programme qui permet la résolution d’un sous-problème Une procédure est un sous-programme qui permet la résolution d’un sous-problème
précis et doit retourner (renvoyer) un seul résultat de type simple (entier, précis et qui peut retourner zéro, un ou plusieurs résultats au programme appelant.
caractère, réel, booléen ou chaîne) au programme appelant.
 Il s’agit d’un cas particulier des procédures.
 Une fonction ne retourne jamais un tableau (type composé)
Déclaration d’une fonction: Au niveau de la définition (la création et la rédaction) d’une Procédure :
 En algorithme  En algorithme
0) DEF FN nom_de_fonction(pf1,pf2,… : type1; pf3,pf4,… :type2 ;…): type- 0) DEF PROC nom_de_procédure(pf1,pf2,…:type1 ; pf3,pf4,…: type2; …)
résultat 1) <traitement>
1) … <traitement> ………..
….. n) FIN nom_de_procédure
n-1) nom_de_fonction  R
n) FIN nom_de_fonction

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 5/8


 En Pascal  En Pascal
FUNCTION nom_de_fonction (pf1,pf2,…:type1;pf3,pf4,…: type2):type-résultat; PROCEDURE nom_de_procédure (pf1,pf2,… :typeI ; pf3,pf4,… :type2 ;…);
Var …….; {variables locales} Var …….; {variables locales}
Begin Begin
……. <traitement> …<traitement>
……… End;
nom_de_fonction := R; Appel d’une procédure
End; Une procédure peut être appelée à partir:
 Remarques :  du programme principal
pf1,pf2,… : Paramètres formels  d’un autre sous-programme (à condition qu’il soit déclaré à l’intérieur de ce sous-
type-résultat: Résultat à chercher dans le bloc du module doit être de type simple programme ou avant)
(entier, réel, caractère, booléen, chaine de caractère). PROC nom_de_procédure (pe1,pe2,…,pe3,pe4,…)
R: étant le résultat de la fonction qui doit être de même type ou de type Remarques:
compatible que la fonction.  pe1,pe2,… : Paramètres effectifs
Appel d’une fonction  Les paramètres formels doivent s’accorder du point de vue nombre, ordre et
Une fonction peut être appelée à partir: types compatibles avec les paramètres effectifs.
 Du programme principal  Au niveau pascal, on doit supprimer le préfixe PROC
 D’un autre sous-programme (module)
Une fonction peut être appelée de quatre manières Les modes de transmission des paramètres:
 Dans une instruction d'affectation: La substitution des paramètres effectifs aux paramètres formels s’appelle passage de
MFN nom_de_fonction(pe1,pe2,…,pe3,pe4,…) paramètres, elle correspond à un transfert de données entre le programme principal
 Dans une instruction de sortie (écriture) : (P.P) et la procédure, et l’inverse. On distingue deux modes de passages :
Ecrire(FN nom_de_fonction(pe1,pe2,…,pe3,pe4,…)) Passage par valeur :
 Dans une instruction conditionnelle :  Le passage de paramètres par valeur permet au programme appelant de
Si (FN nom_de_fonction(pe1,pe2,…,pe3,pe4,…)=Y) alors … transmettre une valeur à la procédure appelée.
 Dans une expression arithmétique :  Les paramètres formels ne sont pas précédés par le mot VAR.
Y  2+FN nom_de_fonction(pe1,pe2,…,pe3,pe4,…)
Remarques:  Après avoir exécuté la procédure les paramètres effectifs sont inchangés.
 pe1,pe2,… : Paramètres effectifs  Dans les fonctions, les paramètres formels ont un mode de passage par valeur.
 Les paramètres formels doivent s’accorder du point de vue nombre, ordre Passage par variable :
et types compatibles avec les paramètres effectifs.  Le passage de paramètres par variable permet au programme de transmettre
 Au niveau pascal, on doit supprimer le préfixe FN une valeur à la procédure et vice - versa.
 Le transfert d’information est effectué dans les deux sens, du programme
principal vers la procédure et vice - versa. P.P Procédure
 Les paramètres formels sont précédés par le mot VAR.
 Après avoir exécuté la procédure, les paramètres effectifs précédés par le mot
VAR changent et reçoivent le contenu des paramètres formels.

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 6/8


VI. Les algorithmes avancées
Tri par sélection
Principe Algorithme
0) DEF PROC Tri_selection (var T : tab ; n : entier)
1) pour i de 1 à n-1 faire
posmin  i
1. Sélectionner le premier élément du tableau
pour j de i+1 à n faire
2. Parcourir le reste du tableau à la recherche de l’élément ayant la si T[j]< T[posmin] alors
posmin  j
plus petite valeur.
fin si
3. Si le cas est présent permuter les deux éléments fin pour
si posmin ≠ i alors
4. Incrémenter le premier indice
aux T[i]
5. Refaire les étapes 2, 3, et 4 jusqu'à la fin du tableau. T[i] T[posmin]
T[posmin]aux
Fin si
Fin pour
2) Fin trier
Tri à bulles

0) DEF PROC Tri_bulle (var T : tab ; n : entier)


1) Répéter
[Echangefaux]
On effectue des passages successifs sur le tableau on examine les éléments pour i de 1 à n-1 faire
Si (T[i]>T[i+1]) alors
du tableau par paire V[i] et V[i+1] et on échange les valeurs si V[i]>V[i+1],
aux T[i]
chaque passage s'arrête au niveau du dernier échange du passage précédent T[i] T[i+1]
ainsi le 1ér passage est allé jusqu'à V[N]. On arrête les passages dès que l'un T[i+1]aux
Echange vrai
d'entre eux n'entraîne aucun échange.
Fin Si
Fin pour
nn-1
Jusqu’à (n=1) ou non(Echange)
2) Fin trier
Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 7/8
Tri par insertion
Principe Algorithme
0) DEF PROC Tri_insertion(N : Entier ; Var T : Tab)
1. On commence par le deuxième élément 1) pour i de 2 à n faire
2. Tant que l’élément précèdent supérieur à l’élément sélectionner aux  T[i]
on le décale à droite j i
Tant que (T[j-1]>aux) faire
3. On insert l’élément sélectionner en position correcte T[j]T[j-1]
4. On sélectionne l’élément suivant jj-1
Fin Tant que
5. On répète les étapes 2, 3 et 4 jusqu’au dernier élément du tableau. si j≠ i alors T[j]aux Fin Si
2) Fin Tri_insertion
Recherche dichotomique
0) DEF FN Recherche (T: TAB ; n, e : entier) : booléen
1) [g 1,d n]
2) Répéter
Cette méthode de recherche est applicable uniquement sur une liste m (g+d) div2
préalablement triée. Le principe de cette méthode consiste à réduire à Si e<T[m] alors
d m-1
chaque fois l’espace de recherche sur la moitié de la liste. Le choix de l’une Sinon
des deux parties dans laquelle se trouve la valeur cherchée est le résultat g m+1
Fin Si
de l’évaluation d’un test. A chaque évaluation, on coupera l’espace de Jusqu’à (e=T[m]) ou (g>d)
recherche en deux parties égales (à un élément près) de part et d’autre de 3) Si e=T[m] alors
Recherche  vrai
l’élément médiane.
Sinon
Recherche faux
Fin si
4) Fin recherche

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 8/8