CHAPITRE I Les Structures de donnes 1 Un

  • Slides: 54
Download presentation
CHAPITRE I: Les Structures de données 1

CHAPITRE I: Les Structures de données 1

Un algorithme manipule des données de différentes natures et types qui peut être simple

Un algorithme manipule des données de différentes natures et types qui peut être simple ou structuré. 2

I- Les constantes: Une constante est un objet ayant une valeur fixe tout le

I- Les constantes: Une constante est un objet ayant une valeur fixe tout le long d’un algorithme. Elle est caractérisée par: - son nom (identificateur unique). - sa valeur. 3

Au niveau de l’analyse, on déclare une constante ainsi: Nom Type/Nature nom_constante = valeur

Au niveau de l’analyse, on déclare une constante ainsi: Nom Type/Nature nom_constante = valeur Rôle. . . En Pascal, on déclare une constante ainsi: CONST nom_constante = valeur ; 4

II- Les variables: Une variable est un objet pouvant prendre différentes valeurs tout le

II- Les variables: Une variable est un objet pouvant prendre différentes valeurs tout le long d’un algorithme. Elle est caractérisée par: - Son nom (identificateur unique). - Son type. - Son contenu. 5

Au niveau de l’analyse, on déclare une variable ainsi: Nom nom_variable Type/Nature type Rôle.

Au niveau de l’analyse, on déclare une variable ainsi: Nom nom_variable Type/Nature type Rôle. . . En Pascal, on déclare une variable ainsi: VAR nom_variable : type ; 6

Remarques: * Le nom d’un objet doit commencer par une lettre et dépourvu de

Remarques: * Le nom d’un objet doit commencer par une lettre et dépourvu de tout caractère spécial. * L’opération permettant de changer le contenu d’une variable est appelée affectation. En algorithmique ← , en Pascal : = 7

III- Les types de données: Chaque variable a un type qui permet de: -Déterminer

III- Les types de données: Chaque variable a un type qui permet de: -Déterminer l’ensembles des opérateurs valides sur la variable. - Déterminer l’occupation de la variable en mémoire RAM. 8

1 - Les types numériques : a- le type entier : Le domaine des

1 - Les types numériques : a- le type entier : Le domaine des valeurs forme un sous ensemble de Z. Au niveau de l’analyse, on déclare un entier ainsi: Nom nom_variable Type/Nature entier Rôle. . . En Pascal, on déclare un entier ainsi: VAR nom_variable : INTEGER ; 9

1 - Les types numériques : a- le type entier : 10

1 - Les types numériques : a- le type entier : 10

Opérateurs arithmétiques sur les entiers : Les opérateurs arithmétiques sur les entiers Syntaxe Rôle

Opérateurs arithmétiques sur les entiers : Les opérateurs arithmétiques sur les entiers Syntaxe Rôle Toutes les comparaisons + - Exemple -50 < 0, 150 > 30, … Addition de deux entiers 35 + 20 = 55 Soustraction de deux entiers 100 -20 = 80 Multiplication de deux entiers 12 * 3 = 36 Division entière 25 DIV 4 = 6 ; 30 DIV 6 = 5 Reste de la division entière 25 MOD 4 = 1 ; 30 MOD 6 = 0 Appartenance à un intervalle 10 Dans [0, 10] * DIV MOD Dans (IN) 11

1 - Les types numériques : b- le type réel : a- Domaine des

1 - Les types numériques : b- le type réel : a- Domaine des valeurs : Le domaine des valeurs forme un sous ensemble de IR. Exemple : 0. 0 2. 0 -1. 5 3. 104 -14. 5 Le nombre réel 3. 104 (30000) peut s’écrira aussi 3 E+4 ; 3 représente la mantisse du nombre et +4 constitue l’exposant qui doit être entier. La lettre E se lit « dix puissance » . 12

Au niveau de l’analyse, on déclare un entier ainsi: Nom Type/Nature nom_variable réel Rôle

Au niveau de l’analyse, on déclare un entier ainsi: Nom Type/Nature nom_variable réel Rôle En Pascal, on déclare un réel ainsi: VAR nom_variable : REAL ; 13

Opérateurs arithmétiques sur les réels : Les opérateurs arithmétiques sur les réels Syntaxe Rôle

Opérateurs arithmétiques sur les réels : Les opérateurs arithmétiques sur les réels Syntaxe Rôle Toutes les comparaisons + * / Exemple 2. 4 < 2. 6, -1. 5 > -3. 7, … Addition 3. 5 + 2. 2 = 5. 7 Soustraction 10. 9 -2. 1 = 8. 8 Multiplication 1. 5 * 3 = 4. 5 Division réelle 25 / 4 = 6. 25 ; 12. 5 / 5 = 2. 5 14

Les opérateurs arithmétiques et leurs priorités: Désignation de l’opération Priorité des opérateurs En algorithme

Les opérateurs arithmétiques et leurs priorités: Désignation de l’opération Priorité des opérateurs En algorithme En Pascal Type des opérandes 1 (…) Tout type X * Entier ou réel / / Réel DIV Entier MOD Entier + + Entier ou réel - - Entier ou réel = = Tout type ordonné Différent ≠ <> Tout type ordonné Inférieur < < Tout type ordonné Supérieur > > Tout type ordonné Inférieur ou égale ≤ <= Tout type ordonné Supérieur ou égale ≥ >= Tout type ordonné DANS IN Type scalaire Parenthèses Multiplication 2 Division réelle Division entière Reste de entière la division Addition Soustraction Egale L’appartenance 3 4 5 Opérateur 15

Remarque : les opérateurs de même niveau de priorité seront évalués de gauche vers

Remarque : les opérateurs de même niveau de priorité seront évalués de gauche vers la droite (vous pouvez utiliser les parenthèses pour modifier l’ordre d’évaluation des expressions). Exemple: Evaluer les expressions suivantes : 1/ 120 + 12 * 5 – 3 …………………………………………………… Vous pouvez modifier cet ordre en ajoutant des parenthèses. L’expression 120+12*(5 – 3) sera évaluée de la manière suivante : ……………………………………………………. . 2/ 6 + 2 * 5 DIV 3 ……………………………………………………. . 3/ 6 + 4 * 7 – 2 * (8 MOD 3+5) ……………………………………………………. . 16

Les fonctions arithmétiques standards Syntaxe en algorithme Syntaxe en Pascal Abs (x) ABS (x)

Les fonctions arithmétiques standards Syntaxe en algorithme Syntaxe en Pascal Abs (x) ABS (x) Arrondi (x) Rôle de la fonction Retourne la absolue de x. valeur ROUND (x) Retourne l’entier plus proche de x. Carré (x) SQR (x) ent (x) int (x) le Type de x Type de résultat Entier ou réel Même R : = ABS (-10) ; R= 10. type R : = ABS (-5. 5) ; R= 5. 5. que x Réel Entier R : = ROUND (8. 4) ; R= 8. Retourne le carré de x. Entier ou réel Retourne la entiére de x partie Réel Exemples R : = ROUND (8. 5) ; R= 9. R : = ROUND (8. 7) ; R= 9. Même R : = SQR (3) ; R= 9. type R: = SQR (3. 5); R= 12. 25. que x réel Int(2. 5)=2 Int(-3. 5)=-3 17

Les fonctions arithmétiques standards Syntaxe en algorithme Syntaxe en Pascal Racine. Carré (x) SQRT(x)

Les fonctions arithmétiques standards Syntaxe en algorithme Syntaxe en Pascal Racine. Carré (x) SQRT(x) Retourne la racine Entier ou Réel carrée de x si x est réel positif sinon il provoque une erreur. Cos (x) COS (x) Retourne le cosinus de x (x en radians). Réel R: = COS (PI/2); R= 0. R: = COS (PI); R= -1. Sin (x) SIN (x) Retourne le sinus de x (x en radians) Réel R: = SIN (PI/2); R= 1. R: = SIN (PI); R= 0. Tronc (x) Rôle de la fonction Type de x TRUNC (x) Retourne un entier, Entier ou en ignorant la partie réel décimale de x. Type de résultat Entier Exemples R: = SQRT (4); R= 2. R: = SQRT (40. 5); R= 6. 36. R: = TRUNC (-1. 5); R= -1. R: = TRUNC (9. 5); R= 9. 18

Les fonctions arithmétiques standards Syntaxe en algorithme Syntaxe en Pascal Exp(x) Ln(x) Alea Random

Les fonctions arithmétiques standards Syntaxe en algorithme Syntaxe en Pascal Exp(x) Ln(x) Alea Random Aléa(n) RANDOM(n ) Rôle de la fonction Type de résultat Exemples Donne l’exponentielle Entier ou réel de x Réel Exp(0) vaut 1 renvoie le logarithme Entier ou réel népérien d'un réel x Réel Ln(1) vaut 0 Réel Aléa pourrait produire 0. 36 par exemple. Aléa(7) pourrait produire 2 par exemple. Donne un réel au hasard entre 0 et 1 exclus. donne un entier entre 0 et n-1 Type de x Entier 19

Remarque : Lorsque vous utilisez la fonction RANDOM ( )il faut d’abord utiliser l’instruction

Remarque : Lorsque vous utilisez la fonction RANDOM ( )il faut d’abord utiliser l’instruction randomize afin d’effectuer une initialisation pour le générateur aléatoire. Exemple : Begin randomize ; write(random(5)) ; End. 20

Application 1: Soit x une variable qui a pour valeur l’expression suivante : x

Application 1: Soit x une variable qui a pour valeur l’expression suivante : x carré (abs (-2)) a)Ecrire l’ instruction en pascal. b)Après avoir exécuter cette instruction, quelle est la valeur finale de x. Application 2: Soit y une variable qui a pour valeur l’expression suivante : y Arrondi (Racine. Carré (4+3*4) + tronc (-12 -1. 8/2)) a)Ecrire l’ instruction en pascal. b)Après avoir exécuter cette instruction, quelle est la valeur finale de y: 21

Application 3: Ecrivez les expressions suivantes en pascal: Application 4: Evaluez les expressions suivantes:

Application 3: Ecrivez les expressions suivantes en pascal: Application 4: Evaluez les expressions suivantes: 22

2 - Le type booléen : a- Domaine des valeurs : Le type contient

2 - Le type booléen : a- Domaine des valeurs : Le type contient deux valeurs logiques : En algorithmique: VRAI FAUX En pascal: TRUE FALSE 23

2 - Le type booléen : b- Opérateurs logiques sur les booléen : Les

2 - Le type booléen : b- Opérateurs logiques sur les booléen : Les opérateurs logiques et leurs priorités Désignation Priorité des de l’opération opérateurs Opérateur En algorithme En Pascal Type opérande Négation logique 1 NON NOT Booléen Conjonction ET 2 ET AND Booléen Disjonction OU 3 OU OR Booléen OUex XOR Booléen OU exclusif 24

2 - Le type booléen : c- Tables de vérité: Exemple de table de

2 - Le type booléen : c- Tables de vérité: Exemple de table de vérité de deux expressions logiques A et B: 25

Au niveau de l’analyse, on déclare un booléen Nom Type/Nature nom_variable booléen Rôle En

Au niveau de l’analyse, on déclare un booléen Nom Type/Nature nom_variable booléen Rôle En Pascal, on déclare un booléen : VAR nom_variable : boolean ; 26

Application 2: Evaluer par V si c’est vrai F si c’est faux les expressions

Application 2: Evaluer par V si c’est vrai F si c’est faux les expressions suivantes pour chaque valeur du couple (x, y) : Expression (1, 5) (-1, 0) (-5, -3) (1, 1) (x<y) ou (x<=2) et (x>=0) (x<y) ouex (x<=2) ou (x>=0) non(x<y) et (x>=1) ouex (x<=0) (x>y) ou non(x<1) et (y<5) 27

Application 1: Compléter le tableau suivant pour les valeurs de (X, Y, Z) données

Application 1: Compléter le tableau suivant pour les valeurs de (X, Y, Z) données ci-dessous : (1, 2, 3) (8, 5, 4) (X ≥ Y) Ou (Z > Y) ………… (X ≤ Z) OUex (Z = Y) ………… (X + Y) ≤ (Z-X) ………… 28

3 - Le type caractère : a- Domaine des valeurs : Il est formé

3 - Le type caractère : a- Domaine des valeurs : Il est formé par les caractères alphabétiques, numériques, et les caractères spéciaux imprimables ou non imprimables (echap, retour chariot…). Un caractère est présenté en algorithmique entre apostrophes : ‘‘a’’ , ‘‘+’’ , ‘‘R’’ , ‘‘ 8’’ en pascal entre code: ‘a’ , ‘+’ , ‘R’ , ‘ 8’ 29

3 - Le type caractère : Chaque caractère correspond à un code ASCII (American

3 - Le type caractère : Chaque caractère correspond à un code ASCII (American Standard Code for Information Interchange) 30

b- Opérateurs sur les caractères : - Une variable de type caractère contient un

b- Opérateurs sur les caractères : - Une variable de type caractère contient un seul caractère. - L’espace est un caractère. Les opérateurs sur les caractères Syntaxe Rôle Toutes les comparaisons DANS (IN) Appartenance à un intervalle Exemple "A" < "B", "y" > "d", … "C" DANS ["A", "Z"] 31

Au niveau de l’analyse, on déclare un caractère : Nom Type/Nature nom_variable Caractère Rôle

Au niveau de l’analyse, on déclare un caractère : Nom Type/Nature nom_variable Caractère Rôle En Pascal, on déclare une variable de type caractère comme suit: VAR nom_variable : CHAR ; 32

c- Fonction prédéfinies : 33

c- Fonction prédéfinies : 33

Application 1: Application 2: Soit x une variable qui a pour valeur l’expression suivante

Application 1: Application 2: Soit x une variable qui a pour valeur l’expression suivante : x MAJUS (CHR (PRED(110))) ………………………………………… Après avoir exécuté cette instruction, la valeur finale de x est égale à ………. 34

Application 3: Donnez le résultat pour chaque instruction: CHR(ORD(‘A’) +1) ORD(SUCC(CHR(122))) ORD(PRED(CHR(50))) CHR (ORD(‘T’)+32)

Application 3: Donnez le résultat pour chaque instruction: CHR(ORD(‘A’) +1) ORD(SUCC(CHR(122))) ORD(PRED(CHR(50))) CHR (ORD(‘T’)+32) 35

4 - Le type chaîne de caractères : Une chaîne de caractère est une

4 - Le type chaîne de caractères : Une chaîne de caractère est une succession de n caractères avec n compris entre 0 et 255. Exemple de chaines: Analyse : ’’turbo pascal’’ Pascal : ‘turbo pascal’ 36

En algorithmique, on déclare une chaîne de caractères : Nom nom_variable Type/Nature Chaîne[n] Rôle

En algorithmique, on déclare une chaîne de caractères : Nom nom_variable Type/Nature Chaîne[n] Rôle Contenir une chaîne de n caractères au maximum texte Chaîne Contenir le texte maximum 255 caractères nom Chaîne[10] Contenir le nom au maximum 10 caractères 37

En Pascal, on déclare une chaîne de caractères : VAR nom_variable : STRING [n]

En Pascal, on déclare une chaîne de caractères : VAR nom_variable : STRING [n] ; Exemple: VAR texte : STRING ; nom : STRING[10] ; 38

Remarques: Nom ‘‘ahmed’’ Ecrire(Nom[1]) donne ‘‘a’’ Nom[1] ‘‘A’’ Ecrire(Nom) donne ‘‘Ahmed’’ La notation Ch[

Remarques: Nom ‘‘ahmed’’ Ecrire(Nom[1]) donne ‘‘a’’ Nom[1] ‘‘A’’ Ecrire(Nom) donne ‘‘Ahmed’’ La notation Ch[ i ] où 1≤ i ≤ Long(Ch) permet l’accès au iéme caractère de la chaîne Ch. 39

Les opérateurs sur les chaînes de caractères Synt Rôle Exemple axe Toutes les comparaisons

Les opérateurs sur les chaînes de caractères Synt Rôle Exemple axe Toutes les comparaisons "Cours" < "cours", … + Concaténation de "Cours" + " exercices" deux ou plusieurs = "Cours exercices" chaînes 40

Les fonctions standards sur les chaînes de caractères algo Rôle de la fonction Exemples

Les fonctions standards sur les chaînes de caractères algo Rôle de la fonction Exemples Long (ch) LENGTH (ch) Retourne un entier L : = LENGTH ('Algorithme') ; représentant la longueur de la L= ……. chaîne ch. L : = LENGTH ('Pascal') ; L= ……. Concat (ch 1, ch 2, …, chn) Retourne une chaîne qui est la fusion de plusieurs chaînes dans l’ordre. Sous_chaîne (ch, p, n) COPY (ch, p, n) CH : = CONCAT ('micro-', 'ordinateur') ; CH= '………………'. CH : = CONCAT ('Turbo', 'Pascal') ; CH= ‘……………. '. Retourne une sous chaîne de CH : = COPY ('Baccalauréat', 1, 3) ; longueur N à partir de la CH= '…………'. position p dans ch. CH : = COPY ('micro-ordinateur', 7, 10) ; CH= '……………'. Pos ition(ch 1, ch 2) Retourne un entier POS (ch 1, ch 2) représentant la position de la première occurrence de la chaîne ch 1. Si ch 1 n’est pas dans ch 2, elle retourne 0. P : = POS('m', 'programmation') ; p= …. . P : = POS('r', 'programmation') ; p= ……. P : = POS('R', 'programmation') ; P= …… 41

Les procédures standards sur les chaînes de caractères Algo Pascal Rôle de la fonction

Les procédures standards sur les chaînes de caractères Algo Pascal Rôle de la fonction Exemples Efface (ch, p, n) Enlève n caractères de la CH : = 'programmation' ; DELETE (ch, p, n); chaîne ch à partir de la DELETE ('programmation', 8, 6) ; position p. CH= '……………. . ' Insère (ch 1, ch 2, p) INSERT (ch 1, ch 2, p); Insère la chaîne ch 1 dans la CH 1 : = '-' ; chaîne ch 2 à partir de la CH 2 : = 'Hautparleurs' position p. INSERT (CH 1, CH 2, 5) ; CH 2= '………………. . ' Convch (n, ch) STR (n, ch); Convertit une valeur numérique en une chaîne de caractères et l’affecte à la variable ch. STR (2002, CH) ; CH= '. …………. ' STR (15. 54, CH) ; CH= '1. 5540000000 E+01' Valeur (ch, n, pe) VAL (ch, n, pe); Convertit une chaîne ch en une valeur numérique et l’affecte à la variable n. Le paramètre pe est une variable entière qui contiendra la position de l’erreur. VAL ('2003', n , e) ; n= ………. et e=…. VAL ('06/08/1970', n, e) ; n= …… et e= … 42

Exercice d’application n° 1: Écrire l’analyse d’un programme permettant de lire une dat de

Exercice d’application n° 1: Écrire l’analyse d’un programme permettant de lire une dat de format jj/mm/aaaa et afficher dat 1 tel que dat 1 est changé en format jj-mm-aaaa. Exemple: Si dat est ‘‘ 09/04/2014’’ alors dat 1 sera ‘’ 09 -04 -2014’’ 43

Exercice d’application n° 2: Écrire l’analyse d’un programme permettant de lire une dat de

Exercice d’application n° 2: Écrire l’analyse d’un programme permettant de lire une dat de format jj/mm/aaaa et afficher dat 2 tel que dat 2 est incrémentée d’une année. Exemple: Si dat est ‘‘ 09/04/2014’’ alors dat 2 sera ‘’ 09/04/2015’’ 44

5 - Le type tableau: a)-Définition: Un tableau est une structure de données permettant

5 - Le type tableau: a)-Définition: Un tableau est une structure de données permettant de ranger des éléments de même type. Un tableau est caractérisé par : • Un nom servant d’identificateur. • Une taille. • Le type des éléments qu'il contient. 45

b) - Déclaration d’un tableau: En algorithmique : objet Type/Nature Rôle nom_tableau Tableau de

b) - Déclaration d’un tableau: En algorithmique : objet Type/Nature Rôle nom_tableau Tableau de n élément de type Rôle Exemple: objet Type/Nature Rôle t 1 t 2 Tableau de 30 réels Tableau de 15 entiers Tableau de moyenne Tableau de numéros de registre de classe 46

En pascal: VAR nom_tableau : ARRAY [ borne inférieure. . Borne supérieure ] of

En pascal: VAR nom_tableau : ARRAY [ borne inférieure. . Borne supérieure ] of type_éléments; Exemple: indices Var t 1: array[1. . 30]of real; t 2: array[1. . 15]of integer; Remarques: v. Les indices du tableau doivent être de types scalaires (entier ou caractère ou type intervalle ou type énuméré). v. La taille du tableau est calculée par la formule : ( borne supérieure – borne inférieure) +1 47

c)- L’accès a un élément d'un tableau: L'accès a un élément du tableau est

c)- L’accès a un élément d'un tableau: L'accès a un élément du tableau est direct. Pour accéder au ième élément d'un tableau, il suffit de donner l'identificateur du tableau et l'indice i qui doit varier entre la borne inferieure et la borne supérieure définies au niveau de la déclaration. Nom_tableau[indice] Exemple: T 1[5] c’est l’accès à l’élément 5 du tableau T 1. 48

d)- Autre déclaration: Tableau de déclaration des nouveaux types Type Nom_type = tableau de

d)- Autre déclaration: Tableau de déclaration des nouveaux types Type Nom_type = tableau de taille éléments Tableau de déclaration des objet Nom_tableau Type/Nature Nom_type Rôle rôle 49

d)- Autre déclaration: Exemple: Tableau de déclaration des nouveaux types Type tab 1 =

d)- Autre déclaration: Exemple: Tableau de déclaration des nouveaux types Type tab 1 = tableau de 26 caractères tab 2 = tableau de 26 entiers Tableau de déclaration des objets t 1 t 2 Type/Nature tab 1 tab 2 Rôle Contenir 26 caractères Contenir les code ascii de 26 caractères 50

APPLICATION 1 : Soit la séquence d’instructions suivantes: T[1] : = pos (‘s’, ‘passable’)

APPLICATION 1 : Soit la séquence d’instructions suivantes: T[1] : = pos (‘s’, ‘passable’) ; val (‘ 20’, n, e) ; T[2] : =n ; T[3]: = trunc (11/7) ; T[4]: = abs (-8) ; T[5] : = ord (chr (65)) ; 1. Déclarer en algorithmique et en pascal les variables utilisées dans la séquence ci- dessus. 2. Ecrire les valeurs finales de T. 51

APPLICATION 2 : 52

APPLICATION 2 : 52

53

53

APPLICATION 3 : 54

APPLICATION 3 : 54