La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Algorithmes et structures de données avancées 5ème cours Patrick Reuter

Présentations similaires


Présentation au sujet: "Algorithmes et structures de données avancées 5ème cours Patrick Reuter"— Transcription de la présentation:

1 Algorithmes et structures de données avancées 5ème cours Patrick Reuter http://www.labri.fr/~preuter

2 Ingrédients dalgorithmes Affectation (ex. mois := 6, jours[1] := 31) Condition/Comparaison (ex. mois <= 12) Appel de fonction (ex. writeln(mois)) Structure de contrôle –Branchements conditionnels (multiples) (si.. Alors.. Sinon) –Boucles (tant que..faire, pour.. faire) Bloc dinstructions (begin.. end)

3 Aujourd'hui TYPES: –tableau 1D –tableau 2D –types énumérés –enregistrements –..

4 Déclaration de variables Comme dans un livre de recettes Ingrédients(pour 8-10 personnes) : - 1 kg de couscous roulé - 1 kg de mouton - 1 poignée de pois chiches - 2 oignons secs - 3-4 tomates fraîches ou 1 cuillère. à soupe de concentré de tomate - 3-4 pommes de terre - 3-4 navets - 3-4 carottes - 3-4 courgettes - 1 tranche de courge - 4 cuillères à soupe d'huile - 1/2 cuillère à café de cannelle - 1 pincée de poivre noir - 1/2 cuillère à soupe de piment rouge doux ou de paprika - 1/2 cuillère à soupe de ras-el-hanout - 1 piment rouge sec - 100 g de beurre ou 3 cuillères à soupe d'huile - sel Préparation : La veille, mettez les pois chiches dans un bol d'eau. Le jour même, roulez le couscous. Si vous utilisez du couscous roulé et séché, rincez-le à l'eau froide, égouttez-le et laissez- le gonfler pendant 30 mn. Coupez la viande en morceaux. Pelez les oignons et coupez-en 1 en morceaux. Lavez et passez les tomates à la moulinette. Mettez la viande dans une marmite et ajoutez les morceaux d'oignon, les tomates ou le concentré de tomate dilué dans 1 verre d'eau, l'huile, le poivre, le piment, la cannelle et du sel. Faites revenir …..

5 Déclaration de variables var compteur : integer; var diviseur : single; var c : char; var precision : double; var nom : string; var masculin : boolean; var jours : array[1..12] of byte; diviseur := 1.1; { Affectation } compteur : = 1; Nom := Gerhard; Nombre entier Nombre à virgule flottante Nombre à virgule flottante avec double précision Chaîne de caractères Tableau

6 Déclaration de variables var compteur : integer; var diviseur : single; var c : byte; var precision : double; var nom : string; var masculin : boolean; var jours : array[1..12] of byte; diviseur := 1.1; { Affectation } compteur : = 1; Nom := Gerhard; Nombre entier Nombre à virgule flottante Nombre à virgule flottante avec double précision Chaîne de caractères Tableau TYPE

7 Déclaration de variables Types prédéfinis –integer, boolean, single, … Types que lon peut définir soi-même type t_nombre_entier = integer; var i : t_nombre_entier; { pas vraiment dintérêt... } au lieu de var i : integer;

8 Déclaration de variables Types prédéfinis –Integer, boolean, single, … Types que lon peut définir soi-même type t_tableau = array[1..12] of byte; var jours : t_tableau; au lieu de var jours : array[1..12] of byte;

9 Organisation de la mémoire type t_tableau = array[1..12] of byte; var jours : t_tableau; {12 octets} #0 jours[1] #2000... #536.870.910 #536.870.911... jours[index] #(2000+index-1) jours[3] #2002 jours[12] #2011... Occupe de la place successive dans la mémoire jours[2] #2001 31 28 31

10 Tableau 2D

11 Type tableau à 2 dimensions : var a : array[1..lignes] of array[1..colonnes] of real;

12 Type tableau à 2 dimensions : var a : array[1..lignes] of array[1..colonnes] of real; Ou bien var a : array[1..lignes, 1..colonnes] of real;

13 Type tableau à 2 dimensions : var a : array[1..lignes] of array[1..colonnes] of real; Ou bien var a : array[1..lignes, 1..colonnes] of real; Ou bien type t_ligne = array[1..colonnes] of real; var a : array[1..lignes] of t_ligne;

14 Type tableau à 2 dimensions : var a : array[1..lignes] of array[1..colonnes] of real; Ou bien var a : array[1..lignes, 1..colonnes] of real; Ou bien type t_ligne = array[1..colonnes] of real; var a : array[1..lignes] of t_ligne; Ou bien type t_ligne = array[1..colonnes] of real; type t_tableau2 = array[1..lignes] of t_ligne; var a : t_tableau2; Ou bien type t_tableau2 = array[1..lignes, 1..colonnes] of real; var a : t_tableau2; Ou bien type t_tableau2= array[1..lignes] of array[1..colonnes] of real; var a : t_tableau2;

15 Dans certains langages simplement int a[lignes][colonnes];

16 Type tableau à 2 dimensions type t_ligne = array[1..colonnes] of real; type t_tableau2 = array[1..lignes] of t_ligne; var a : t_tableau2; { Affectation: } a[1][1] := 0; a[1][2] := 0;.. a[1][colonnes] := 0; a[2][1] := 0; a[2][2] := 0;.. a[lignes][colonnes] := 0; Déclaration de variables

17 POUR i de 1 à n FAIRE POUR j de 1 à n FAIRE a[i][j] := 0; FIN POUR ² Déclaration de variables

18 Type tableau à 2 dimensions : type t_ligne = array[1..n] of real; type t_tableau2 = array[1..n] of t_ligne; var a : t_tableau2; var i,j : integer; POUR i de 1 à n FAIRE POUR j de 1 à n FAIRE a[i][j] := 0; FIN POUR -Complexité ? -Remplir une matrice identité ? Déclaration de variables

19 Type tableau à 2 dimensions : n = lignes = colonnes type t_ligne = array[1..n] of real; type t_tableau2 = array[1..n] of t_ligne; var a : t_tableau2; var i,j : integer; Déclaration de variables

20 Type tableau à 2 dimensions : n = lignes = colonnes type t_ligne = array[1..n] of real; type t_tableau2 = array[1..n] of t_ligne; var a : t_tableau2; var i,j : integer; POUR i de 1 à n FAIRE POUR j de 1 à n FAIRE SI i=j ALORS a[i][j] := 1; SINON a[i][j] := 0; FIN POUR Déclaration de variables

21 Organisation de la mémoire

22 type t_ligne = array[1..3] of byte; type t_tableau2 = array[1..3] of t_ligne; var a : t_tableau2; #0 a[1][1] #2000... #536.870.910 #536.870.911... Occupe de la place successive dans la mémoire a[1][2] #2001 a[1][3] #2002 a[2][1] #2003 a[2][2] #2004... a[3][3] #2008 a[i][j] #(2000+(3*(i-1))+ j - 1 )

23 Organisation de la mémoire type t_ligne = array[1..colonnes] of byte; type t_tableau2 = array[1..lignes] of t_ligne; var a : t_tableau2; a[i][j] #(2000+j+((colonnes)*(i-1)) -1)

24 Organisation de la mémoire type t_ligne = array[0..colonnes-1] of byte; type t_tableau2 = array[0..lignes-1] of t_ligne; var a : t_tableau2; a[i][j] #(2000+j+((colonnes)*i) )

25

26 Déclaration de variables Des nombres entiers sont souvent utilisés quand un choix parmi un petit nombre dalternatives est souhaité. Nombre entiers Type de base : byte, integer; var jour : integer; jour := 1; { signifie par exemple lundi } … jour := 3; { signifie par exemple mercredi }

27 Déclaration de variables Les types énumérés type t_jourdesemaine =(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche); var jour : t_jourdesemaine; jour := lundi; … jour := mercredi;

28 Déclaration de variables Les types énumérés Autres exemples type t_jourdesemaine =(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche); type t_couleur =(rouge, vert, bleu, gris); type t_sexe =(masculin, feminin);

29 Organisation de la mémoire var jour : t_jourdesemaine; #0 #1 #2 #3 #4 #5... #536.870.910 #536.870.911 #1.000... jour

30 Déclaration de variables type t_carte =(7,8,9,10,vallee,dame,roi,as); var ma_meilleure_carte : t_carte; var cartes : array[1..8] of t_carte; ma_meilleur_carte := roi; cartes[1] := 10; cartes[2] := dame; cartes[3] := 7;... cartes[8] := 9;

31 Motivation Structure de données: - tableau à 2 dimensions … type t_ligne = array[1..8] of byte;

32 Motivation Structure de données: - tableau à 2 dimensions … type t_ligne = array[1..8] of byte; type t_damier = array[1..8] of t_ligne;

33 Motivation Structure de données: - tableau à 2 dimensions … type t_ligne = array[1..8] of byte; type t_damier = array[1..8] of t_ligne; var damier : t_damier;

34 Motivation Imaginons la convention suivante : - 0 pour un champs vide - 1 pour un champs blanc - 2 pour un champs noir type t_ligne = array[1..8] of byte; type t_damier = array[1..8] of t_ligne; var damier : t_damier; Pour initialiser un damier vide :

35 Motivation Imaginons la convention suivante : - 0 pour un champs vide - 1 pour un champs blanc - 2 pour un champs noir type t_ligne = array[1..8] of byte; type t_damier = array[1..8] of t_ligne; var damier : t_damier; var i,j : integer; Pour initialiser un damier vide : POUR i = 1 à 8 faire POUR j = 1 à 8 faire damier[i][j] := 0; FIN POUR

36 Motivation Structure de données: - tableau à 2 dimensions … type t_ligne = array[1..8] of byte; type t_damier = array[1..8] of t_ligne; var damier : t_damier;

37 Motivation Structure de données: - tableau à 2 dimensions … type t_champ =(vide, blanc, noir); {pour le jeu de dames}

38 Motivation Structure de données: - tableau à 2 dimensions … type t_champ =(vide, blanc, noir); type t_ligne = array[1..8] of t_champ; type t_damier = array[1..8] of t_ligne; var damier : t_damier;

39 Motivation type t_champ =(vide, blanc, noir); type t_ligne = array[1..8] of t_champ; type t_damier = array[1..8] of t_ligne; var damier : t_damier; var i,j : integer; Pour initialiser un damier vide : POUR i = 1 à 8 faire POUR j = 1 à 8 faire damier[i][j] := vide; FIN POUR

40


Télécharger ppt "Algorithmes et structures de données avancées 5ème cours Patrick Reuter"

Présentations similaires


Annonces Google