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 5ème cours

Présentations similaires


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

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

2 Ingrédients d’algorithmes
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 d’instructions (begin .. end)

3 Motivation Structure de données: - tableau à 2 dimensions

4 Déclaration de variables
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 ….. 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 tomates fraîches ou 1 cuillère. à soupe de concentré de tomate pommes de terre navets carottes 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 g de beurre ou 3 cuillères à soupe d'huile - sel

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

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

8 Déclaration de variables
Types prédéfinis Integer, boolean, single, … Types que l’on 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 Déclaration de variables
Type tableau : type t_tableau = array[1..MAX] of integer; var factoriel : t_tableau; Factoriel[1] := 1; Factoriel[2] := 2; Factoriel[3] := 6; Factoriel[4] := 24; Factoriel[5] := 120; Factoriel[6] := 720;

10 Déclaration de variables
Type tableau : type t_tableau = array[1..MAX] of integer; var factoriel : t_tableau; var i, produit : integer; produit := 1; POUR i de 1 à MAX faire produit := i*produit; factoriel[i] := Produit; FIN POUR

11 Organisation de la mémoire
type t_tableau = array[1..MAX] of integer; var factoriel : t_tableau; # # ... factoriel[n] #(2000+4*n-1) n! ... factoriel[2] #2004 2 factoriel[1] #2000 1  factoriel[index] #(2000+4*index-4)

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; type t_ligne = array[1..colonnes] of real; var a : array[1..lignes] of t_ligne; type t_tableau2 = array[1..lignes] of t_ligne; var a : t_tableau2; type t_tableau2 = array[1..lignes, 1..colonnes] of real; type t_tableau2= array[1..lignes] of array[1..colonnes] of real;

13 Déclaration de variables
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;

14 Déclaration de variables
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; var i,j : integer; POUR i de 1 à n FAIRE POUR j de 1 à n FAIRE a[i][j] := 0; FIN POUR

15 Déclaration de variables
Type tableau à 2 dimensions : type t_ligne = array[1..lignes] of real; type t_tableau2 = array[1..colonnes] 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é ?

16 Déclaration de variables
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;

17 Déclaration de variables
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

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

19 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-1)*i) -1)

20 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) )

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

22 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;

23 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);

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

25 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;

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

27 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;

28 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;

29 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 :

30 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

31 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;

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

33 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;

34 Motivation Pour initialiser un damier vide :
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


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

Présentations similaires


Annonces Google