Upload
maherhamdi
View
24
Download
2
Embed Size (px)
Citation preview
Algorithmique & Programmation (Rsum) I- Les structures de donnes I.1) Dclaration des constantes
En Algorithmique : Tableau de Dclaration des Objets
Objets Type/Nature Rle Gnral Nom Constante = valeur de la constante Rle
Exemples
Annee G Ville Existe Lettre
Constante = 2014 Constante = 9.81 Constante = "Chebba" Constante = Vrai Constante = "B"
En Pascal :
Syntaxe : CONST = ; Exemples : CONST annee = 2014 ;
g = 9.81 ; ville = Chebba ; existe = True ; lettre = B ;
I.2) Dclaration des variables En Algorithmique :
T.D.O Objets Type/Nature Rle
Gnral Nom Type de la variable Rle
Exemples
Code Heure Nb Moy Phrase Let Test
Octet Entier Entier Long Rel Chane de caractres Caractre Boolen
En Pascal :
Syntaxe : VAR : type_variable ; Exemples : VAR Code : Byte ;
Heure : Integer ; Nb : LongInt ;
Moy : Real ; Phrase : String ; Let : Char ; Test : Boolean ;
Algorithmique & Programmation Prof. FENNI-S Page 1/10
I.3) Dclaration dun tableau une dimension
Premire formulation
EN ALGORITHMIQUE
T.D.O. Objet Type/Nature Rle
Ident_tableau Tableau de taille et de type_lments
MOY Tableau de 30 Rels
EN PASCAL VAR Ident_tableau : ARRAY [Binf..Bsup] OF Type_lments ; VAR Moy : array [1..30] of real ;
Deuxime formulation EN ALGORITHMIQUE
Tableau de dclarations des nouveaux types
Type Nom_type = tableau de taille et de type_lments
T.D.O.
Objet Type/Nature Rle Ident_tableau Nom_type
EN PASCAL TYPE Nom_type = ARRAY [Binf..Bsup] OF Type_lments ; VAR Ident_tableau : Nom_type ; Exemple : Type Tab = Array [1..100] of string ; Var T : Tab ;
I.4) Le type Enumr En algorithmique :
Tableau de dclaration des nouveaux types Type
Nom_du_type = (valeur1, valeur2, valeur3, ) En pascal : TYPE Nom_du_type = (valeur1, valeur2, valeur3, ) ;
Exemples : TYPE JOURS = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;
VOITURE = (renault, citroen, peugeot, ford, toyota) ; VOYELLE = (A, E, I, O, U, Y) ;
N.B. Une valeur numre ne peut pas tre une valeur appartenant un type prdfini (entier, rel, caractre, chane, boolen).
I.5) Le type Intervalle En algorithmique :
Tableau de dclaration des nouveaux types Type
Nom_du_type = borne infrieur . . borne suprieur En pascal : TYPE Nom_du_type = borne infrieur . . borne suprieur ;
Exemples : TYPE JOURS = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;
JOUR_TRAVAIL = lundi . . vendredi ; MOIS = 1 . . 12 ; ALPHA = a . . z ;
Algorithmique & Programmation Prof. FENNI-S Page 2/10
ANNEXE I
Nom Algorithmique Code en Pascal Type de x Type du rsultat Rle Exemples en Pascal
Abs (x) ABS (x) entier/rel type de x valeur absolue de x ABS (-4) = 4 ; ABS (-5.7) = 5.7 Carr (x) SQR (x) entier/rel type de x carr de x SQR (2) = 4 ; SQR (2.5) = 6.25 Racine Carr (x) SQRT (x) entier/rel rel racine carre de x SQRT (25) = 5.00 ; SQRT (6.25) = 2.5 Cos (x) COS (x) entier/rel rel cosinus de x (x en radians) COS (PI/2) = 0.00 Sin (x) SIN (x) entier/rel rel sinus de x (x en radians) SIN (PI/2) = 1.00 Tang (x) TAN (x) entier/rel rel tangente de x (x en radians) TAN (PI) = 0.00 Ln (x) LN (x) entier/rel rel logarithme nprien de x LN (1) = 0.00 Exp (x) EXP (x) entier/rel rel exponentiel de x EXP (0) = 1.00
Tronc (x) TRUNC (x) rel entier partie entire de x TRUNC (3.15) = 3 TRUNC (-3.15) = -3 Ent (x) INT (x) rel rel partie entire de x INT (3.15) = 3.00
Arrondi (x) ROUND (x) rel entier entier le plus proche de x ROUND (9.49) = 9 ROUND (9.5) = 10 Frac (x) FRAC (x) rel rel partie dcimale de x FRAC (2.45) = 0.45 Ala RANDOM - rel renvoie un rel alatoire dans [0, 1[ 0.36 ; 0.075 ; 0.98 ; 0.02 ; Ala (x) RANDOM (x) entier entier renvoie un entier alatoire dans [0, x-1] Random (7) renvoie un entier dans [0, 6]
Odd (x) ODD (x) entier boolen VRAI si x est impair FAUX si x est pair ODD (3) = True ODD (8) = False
Inc (x) INC (x) ; scalaire type de x Procdure, qui incrmente x INC (x) ; lquivalent de x x +1 INC(x, n) ; lquivalent de x x + n Dec (x) DEC (x) ; scalaire type de x Procdure, qui dcrmente x DEC (x) ; lquivalent de x x - 1 DEC(x, n) ; lquivalent de x x - n Pred (x) PRED (x) scalaire type de x prdcesseur de x, sil existe PRED (5) = 4 ; PRED (C) = B PRED (True) = False
Succ (x) SUCC (x) scalaire type de x successeur de x, sil existe SUCC (5) = 6 ; SUCC (C) = D SUCC (False) = True Chr (x) CHR (x) octet caractre caractre dont le code ASCII est x CHR (65) = 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) caractre caractre majuscule de x, sil est possible UPCASE (b) = B UPCASE (R) = R * Un type scalaire est un ensemble fini et ordonn de valeurs (Entier, Caractre, Boolen, Enumr, intervalle).
LES STRUCTURES DE DONNEES # Prof : FENNI-S
LES STRUCTURES DE DONNEES # Prof : FENNI-S
ANNEXE II Les fonctions standard relatives aux chanes de caractres
Syntaxe Type En Algorithmique En Pascal Rle Paramtres dentre Rsultat Exemples en Pascal
Long (ch) Length (ch) Retourne un entier reprsentant la longueur de ch.
Long (ch) = ord (ch[0])
Chane Entier Lg := Length ('L''cole'); lg = 7 Lg := Length ('') ; lg = 0 Lg := Length (' ') ; lg = 1
Pos (ch1, ch2) Pos (ch1, ch2) Retourne la premire position de la chane ch1 dans la chane ch2.
Chanes Entier P := Pos ('T', 'ATTENTION') ; P = 2 P := Pos ('gra', 'Program') ; P = 4 P := Pos ('R', 'Professeur') ; P = 0
Sous_Chane (ch, p, n) Copy (ch, p, n) Retourne une sous chane de n caractres partir de la position p de la chane ch.
Chane, Entier, Entier Chane CH 1:= Copy ('Langage', 4, 3) ; CH1 = 'gag' CH 2:= Copy ('Bonjour', 4, 6) ; CH2 = 'jour'
Concat (ch1, ch2, ) Concat (ch1, ch2, ) Retourne la concatnation de plusieurs chanes en une seule. C'est l'quivalent de ch1+ch2+
Chanes Chane CH1 := '9Janvier9' ; CH2 := Concat ('14', ch1, '2011') ;
CH2 = '149Janvier92011'
Les procdures standard relatives aux chanes de caractres Syntaxe Type
En Algorithmique En Pascal Rle Paramtres dentre Rsultat Exemples en Pascal
Efface (ch, p, n) Delete (ch, p, n) ; Supprime N caractres de CH partir de la position P. Chane, Entier, Entier Chane CH := 'Esclave' ;
Delete (CH, 1, 3) ; CH devient 'lave'
Insre (ch1, ch2, p) Insert (ch1, ch2, p) ; Insre une chane CH1 dans une autre CH2 la position P.
Chane/Caractre, Chane, Entier
Chane CH1 := 'DA' ; CH2 := 'DIC' ; Insert (CH1, CH2, 3) ; CH2 devient 'DIDAC'
ConvCh (n, ch) Str (n, ch) ; Convertit une valeur numrique N en une chane CH.
Numrique, Chane Chane STR (2012, CH) ; CH = '2012' STR (14.52, CH) ; CH = '1.4520000000E+01' STR (14.52:8:3, CH) ; CH = '9914.520'
Valeur (ch, n, err) Val (ch, n, err) ;
Convertit une chane de caractres CH en une valeur numrique N. De plus, elle fournit un code d'erreur ERR qui indique si l'opration s'est droule correctement.
Chane/Caractre, Numrique, Entier
Numrique, Entier
VAL ('1967', n, err) ; n = 1967 et err = 0 VAL ('25H64', n, err) ; n = 0 et err = 3 Si n de type entier, aprs Val ('5.48', n, err),
on obtient n = 0 et err = 2 Si n de type rel, aprs Val ('5.48', n, err),
on obtient n = 5.48 et err = 0
II- Les structures simples II.1) Lopration dentre (lecture, saisie)
Analyse Algorithme Pascal Variable = Donne Lire (variable) ReadLn (variable) ;
Var1, Var2, Var3 = Donnes Lire (var1, var2, var3) Readln (var1, var2, var3) ;
Variable = Donne ("Message") Ecrire ("Message"), Lire (variable) Write ('Message') ; Readln (variable) ; II.2) Lopration de sortie (criture, affichage)
Analyse / Algorithme Pascal
Ecrire ("Message", Nom_objet, Expression) Write ('Message', Nom_objet, Expression)
Exemples :
Analyse / Algorithme Pascal Rsultat sur l'cran A 10 Ecrire (A) Ecrire ("Bonjour")
A:=10 ; Write (A) ; Write ('Bonjour') ;
10Bonjour
Ecrire (2 * 8 DIV 3) Ecrire (5 > 6)
Writeln (2 * 8 DIV 3) ; Write (5 > 6) ;
5 False
Ecrire (3, "*", A, " = ", 3*A) Writeln (3, '*', A, ' = ', 3*a) ; 3*10 = 30
II.3) Lopration daffectation
Analyse / Algorithme Pascal
Variable Valeur Variable := Valeur ; Exemples :
Analyse et Algorithme
Pascal Commentaire Rsultat
A 5 B A + 3 A A +1 C long("lyce")/2 D 4 < 6
A := 5 ; B := A + 3 ; A := A +1 ; C := length(lyce)/2 ; D := 4 < 6 ;
La variable A reoit la valeur 5 B reoit la valeur de lexpression A+3 A reoit sa valeur actuelle incrmente de 1 C reoit la valeur de lexpression D reoit la valeur de lexpression
A = 5 B = 8 A = 6 C = 2.5 D = Vrai
Algorithmique & Programmation Prof. FENNI-S Page 3/10
III- Les structures de contrles conditionnelles III.1) La structure de contrle conditionnelle simple
En Analyse En Algorithmique En Pascal Nom_objet = [initialisation(s)] Si condition(s) Alors Traitement 1 Sinon Traitement 2 Fin Si
initialisation(s) Si condition(s) Alors Traitement 1 Sinon Traitement 2 Fin Si
................. ; {initialisation(s)} IF condition(s) THEN Begin
Traitement 1 ; End ELSE Begin Traitement 2 ; End ;
N.B. : Si traitement2 est vide, on parle de structure conditionnelle simple rduite qui a la syntaxe suivante :
En Analyse En Algorithmique En Pascal
Nom_objet = [initialisation(s)] Si condition(s) Alors Traitement Fin Si
initialisation(s) Si condition(s) Alors Traitement Fin Si
................. ; {initialisation(s)} IF condition(s) THEN Begin
Traitement ; End ;
III.2) La structure de contrle conditionnelle gnralise
En Analyse En Algorithmique En Pascal Nom_objet = [initialisation(s)] Si condition1 Alors Trait1 Sinon Si condition2 Alors Trait2 Sinon Si condition3 Alors Trait3 Sinon Si Sinon Si condition n-1 Alors Trait n-1
Sinon Trait n Fin Si
initialisation(s) Si condition1 Alors Trait1 Sinon Si condition2 Alors Trait2 Sinon Si condition3 Alors Trait3 Sinon Si Sinon Si condition n-1 Alors Trait n-1
Sinon Trait n Fin Si
............ ; {initialisation(s)} IF condition1 THEN Begin
Trait1; End
ELSE IF condition2 THEN Begin Trait2;
End ELSE IF ELSE IF condition n-1 THEN Begin
Trait n-1; End
ELSE Begin Trait n; End ;
III.2) La structure de contrle conditionnelle choix multiples
En Analyse En Algorithmique En Pascal Nom_objet = [initialisation(s)] Selon slecteur Faire valeur1 : trait1 valeur2 : trait2 valeur5, valeur8 : trait3 valeur10..valeur30 : trait4
... valeur n-1 : trait n-1 Sinon trait n Fin Selon
initialisation(s) Selon slecteur Faire valeur1 : trait1 valeur2 : trait2 valeur5, valeur8 : trait3 valeur10..valeur30 : trait4
... valeur n-1 : trait n-1 Sinon trait n Fin Selon
....................; {initialisation(s)} CASE slecteur OF valeur1 : trait1 ; valeur2 : trait2 ; valeur 5, valeur 8 : trait3 ; valeur 10..valeur 30 : trait4 ;
... valeur n-1 : trait n-1 ; Else trait n ; END ;
Algorithmique & Programmation Prof. FENNI-S Page 4/10
IV- Les structures de contrles itratives IV.1) La structure de contrle itrative complte
En Analyse En Algorithmique En Pascal
Nom_objet = [initialisation(s)] POUR Cp de Vi Vf FAIRE
Traitement Fin Pour
initialisation(s) POUR Cp de Vi Vf FAIRE
Traitement Fin Pour
............ ; { initialisation(s) } FOR Cp:=Vi TO/DOWNTO Vf DO
Begin Traitement ;
End ;
{TO lorsque Vi Vf} {DOWNTO lorsque Vi Vf}
IV.2) La structure de contrle itrative condition darrt a.Premire formulation :
En Analyse En Algorithmique En Pascal Nom_objet = [initialisation(s)] REPETER Traitement JUSQU'A condition(s)
initialisation(s) REPETER Traitement JUSQU'A condition(s) {jusqu condition soit vraie}
............; {initialisation(s)} REPEAT Traitement ; UNTIL condition(s) ;
b.Deuxime formulation :
En Analyse En Algorithmique En Pascal Nom_objet = [initialisation(s)] TANT QUE condition(s) FAIRE Traitement Fin Tant que
initialisation(s) TANT QUE condition(s) FAIRE Traitement Fin Tant que {Tant que condition est vraie rpter le traitement}
............; {initialisation(s)} WHILE condition(s) DO Begin Traitement ; End ;
Algorithmique & Programmation Prof. FENNI-S Page 5/10
V- Les sous programmes V.1) Les procdures
Une procdure est un sous-programme qui permet la rsolution dun sous-problme prcis et qui peut transmettre zro, un ou plusieurs rsultats au programme appelant.
Lentte de la dfinition :
- En analyse et algorithmique : DEF PROC Nom_procdure (pf1 :type1 ; Var pf2 :type2 ; ; pfn :typen)
- En Pascal : PROCEDURE Nom_procdure (pf1 :type1 ; Var pf2 :type2 ; ; pfn :typen) ;
Lappel :
- En analyse Nom_objet = PROC Nom_procdure (pe1 , pe2 , , pen )
- En algorithmique : PROC Nom_procdure (pe1 , pe2 , , pen )
- En Pascal : Nom_procdure (pe1 , pe2 , , pen ) ;
V.2) Les fonctions
Une fonction est un sous-programme qui permet la rsolution dun sous-problme prcis et doit retourner (renvoyer) un seul rsultat de type simple (entier, caractre, rel, boolen ou chane) au programme appelant. Il sagit dun cas particulier des procdures.
Lentte de la dfinition : - En analyse et algorithmique :
DEF FN Nom_fonction (pf1 :type1 ; pf2 :type2 ; ; pfn :typen) : Type_rsultat
- En Pascal : Function Nom_fonction (pf1 :type1 ; pf2 :type2 ; ; pfn :typen) : Type_rsultat ;
Lappel :
- En analyse et algorithmique : Nom_objet FN Nom_fonction (pe1 , pe2 , , pen ) Ecrire (FN Nom_fonction (pe1 , pe2 , , pen )) Si FN Nom_fonction (pe1 , pe2 , , pen ) Alors
- En Pascal :
Nom_objet := Nom_fonction (pe1 , pe2 , , pen ) ; Writeln (Nom_fonction (pe1 , pe2 , , pen )) ; If Nom_fonction (pe1 , pe2 , , pen ) Then
Algorithmique & Programmation Prof. FENNI-S Page 6/10
Sous Programmes Usuels
En Analyse En Pascal Saisir un entier avec un contrle de saisie
DEF PROC Saisie (VAR N : Entier) Rsultat = N N = [ ] Rpter N = Donne ("Donner un entier ") Jusqu (5 N) ET (N 500)
Procedure Saisie (var n : integer) ; Begin Repeat Write (Donner un entier ); Readln (n); Until (5 T[i-1];
End ;
Algorithmique & Programmation Prof. FENNI-S Page 7/10
Remplir un tableau par des lments distincts DEF PROC Saisie (N : Entier ; VAR T : Tab) Rsultat = T T = [ T[1] = donne (''Saisir la case 1'') ] Pour i de 2 n Faire
Rpter T[i] = Donne (''Saisir la case '', i) j 0 Rpter j j+1 Jusqu (T[i] = T[j]) ou (j = i-1) Jusqu T[i] T[j]
Fin Pour
Procedure Saisie (n : Integer ; Var T: Tab); Var i, j : Integer; Begin Writeln ('Saisir la case 1'); Readln (T[1]); For i:=2 To n Do
Repeat Writeln ('Saisir la case ', i); Readln (T[i]); j:=0; Repeat j:=j+1; Until (T[i] = T[j]) or (j = i-1); Until T[i] T[j] ;
End;
Remplir un tableau par n chanes de caractres de 8 chiffres DEF PROC Saisie (N : Entier ; VAR T : Tab) Rsultat = T T = [ ] Pour i de 1 n Faire Rpter T[i] = Donne ("T[", i, "]= ") Valeur (T[i], x, err) Jusqu (Err = 0) ET (long(T[i]) = 8) Fin Pour
Procedure Saisie (n : Integer ; Var T : TAB) ; Var i ,err : Integer ; x : Longint ; Begin For i:=1 To n Do
Repeat Write (T[,i,]= ) ; Readln (T[i]) ; Val (T[i],x,err);
Until (Err = 0) and (length(T[i]) = 8) ; End;
Affichage dun tableau de n lments DEF PROC Affiche (N : Entier ; T : Tab) Rsultat = Affichage_T Affichage_T = [ ] Pour i de 1 n Faire Ecrire (T[i], " ") Fin Pour
Procedure Affiche (n : Integer ; T : TAB) ; Var i : Integer ; Begin FOR i :=1 TO n DO Write (T[i], ) ; End ;
Affichage dun tableau, 10 valeurs par ligne DEF PROC Affiche (T:tab ; n:entier) Rsultat = Affichage_T Affichage_T = [ ] Pour i de 1 n Faire Ecrire (T[i], " ")
Si (i mod 10) = 0 Alors Retour__la_ligne Fin Si
Fin Pour
Procedure Affiche (T:tab ; n:integer); Var i:integer; Begin For i:=1 To n Do
begin write(T[i], " "); If (i mod 10) = 0 then writeln ; end;
End ;
Permutation de deux variables relles DEF PROC Permut (VAR x, y : Rel) Rsultat = (x, y) X AUX AUX Y Y X
Procedure Permut (VAR x, y : Real) ; Var aux : Real ; Begin Aux := Y ; Y := X ; X := Aux ; End ;
La somme de n rels dans un tableau DEF FN Somme (T : tab ; n : entier) : rel Rsultat = Somme Somme S S = [ S 0 ] Pour i de 1 n Faire S S + T[i] Fin Pour
Function Somme (T : tab ; n : integer) : real ; Var i : integer ; s : real; Begin s:=0 ; For i:=1 To n Do s:=s + T[i] ; Somme := s ; End ;
Algorithmique & Programmation Prof. FENNI-S Page 8/10
Factorielle de N (n !) DEF FN Fact (n : entier) : entier long Rsultat = Fact Fact F F = [ F 1 ] Pour i de 2 n Faire F F * i Fin Pour
Function Fact (n : integer) : Longint ; Var i : integer ; f : longint ; Begin f:=1 ; For i:=2 To n Do f := f * i ; Fact := f ; End ;
Calcul de Xn (n 0) DEF FN Puissance (x, n : entier) : entier Rsultat = puissance puissance p p = [ p 1 ] Pour i de 1 n Faire p p * x Fin Pour
Function Puissance (x, n : integer) : integer ; Var i , p : integer ; Begin p:=1 ; For i:=1 To n Do p := p * x ; puissance := p ; End ;
Recherche de la premire valeur minimum dans un tableau de n rels DEF FN Minimum (n : Entier ; T : Tab) : Rel Rsultat = Minimum min min = [ min T[1] ] Pour i de 2 n Faire Si (T[i] < min) Alors min T[i] Fin Si Fin Pour
Function Minimum (n : Integer ; T : Tab) : Real ; Var i : Integer ;
Min : Real ; Begin Min := T[1] ; For i :=2 To n Do If (T[i] < min) Then min := T[i] ; Minimum := min ; End ;
Frquence dun lment X dans un tableau DEF FN Frequence (x, n : entier ; T:Tab) : entier Rsultat = frequence f f = [ f0 ] Pour i de 1 n Faire Si (T[i] = X) Alors f f + 1 Fin Si Fin Pour
Function Frequence (x, n :integer ; T:Tab):integer; Var i, f : Integer ; Begin f := 0 ; For i :=1 To n Do If (T[i] = X) Then f := f+1 ; Frequence := f ; End ;
Vrifier si une chane contient seulement des chiffres DEF FN Verif (ch : Chane) : Boolen Rsultat = verif test test = [ test vrai ; i0 ] Rpter ii+1
Si non (ch[i] dans [''0''..''9'']) Alors test faux Fin Si
Jusqu (test = faux) ou (i=long(ch))
Function Verif (ch : string) : boolean ; Var i : integer; test : boolean; Begin test:=true; i:=0; Repeat
i:=i+1 ; if not(ch[i] in ['0'..'9']) then test:= false;
Until (test=false) or (i=long(ch)); Verif := test; End ;
Algorithmique & Programmation Prof. FENNI-S Page 9/10
STRUCTURE GENERALE DUN PROGRAMME PASCAL PROGRAM Nom_programme ; {En-tte du programme}*
Uses ... ; {Utilisation des units / bibliothques}*
Const ... ; {Dclaration des constantes}*
Type ... ; {Dclaration des types}*
Var ... ; {Dclaration des variables}*
{============= Dfinition des procdures ===================}*
Procedure Nom_procdure (pf1 :type1 ; Var pf2 :type2 ; ; pfn :typen) ;
{Dclarations locales : Const, Type, Var, Function, Procedure, ...}*
Begin
Instructions de la procdure ;
End ;
{============= Dfinition des fonctions ====================}*
Function Nom_fonction (pf1 :type1 ; pf2 :type2 ; ; pfn :typen) : Type_rsultat ;
{Dclarations locales : Const, Type, Var, Function, Procedure, ...}*
Begin
Instructions de la fonction ;
Nom_fonction := rsultat ;
End ;
{======================= P. P. =========================}
BEGIN {Dbut du programme principal}
Instructions ;
;
{Bloc principal du programme avec appel des procdures et des fonctions}
END. {Fin du programme}
* : facultatif
Algorithmique & Programmation Prof. FENNI-S Page 10/10
Tableau de Dclaration des Objets T.D.O