Algorithmes et structures de données 4ème cours

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données (avancées) Cours 1+2
Advertisements

Introduction au Langage C,C++
Algorithmes et structures de données avancées Cours 7
Patrick Reuter maître de conférences
Dominique Lahary. Dernière mise à jour le 17 juin 2010 La disparition Auteur Éditeur Imprimeur Éditeur.
Algorithmes et structures de données avancées Cours 4
Algorithmes et structures de données 9ème cours Patrick Reuter maître de conférences
Algorithmes et structures de données avancées 6ème cours Patrick Reuter
Conception de Site Webs dynamiques Cours 6
Algorithmes et structures de données avancées 5ème cours Patrick Reuter
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données 7ème cours
Algorithmes et structures de données avancés
Algorithmes et structures de données 3ème cours Patrick Reuter
Algorithmes et structures de données
Créer une base de données MySQL
Patrick Reuter maître de conférences
Conception de Site Webs Interactifs Cours 10 Patrick Reuter
Algorithmes et structures de données Cours 8
Algorithmes et structures de données Cours 3
Conception de Site Webs Interactifs Cours 9 Patrick Reuter
Conception de Site Webs Interactifs Cours 3
Algorithmes et structures de données Cours 10 Patrick Reuter
Algorithmes et structures de données Cours 7
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Algorithmes et structures de données Cours 1 Patrick Reuter
Conception de Site Webs Interactifs Cours 8 Patrick Reuter
Conception de Site Webs Interactifs Cours 4
Algorithmes et structures de données 5ème cours
C++ 6ème cours Patrick Reuter maître de conférences
C++ 5ème cours Patrick Reuter maître de conférences
Algorithmes et structures de données Cours 9 Patrick Reuter
Algorithmes et structures de données avancées Cours 1+2+3
Algorithmes et structures de données Cours 2
La logique algorithmique
Scène de test (60000 polygones, 4000m2)
Comment afficher rapidement un univers immense ?.
(2005) De Jacques Audran : maître de conférence
LA COPIRELEM. La COPIRELEM a une double mission : - regrouper et centraliser les travaux des différents groupes élémentaires des IREM sur l'enseignement.
Module 6 : Programmation dynamique
Les dates Recherche d’un algorithme pour déterminer si une année est bissextile ou non.
Analyse des discours cours 1
Les algorithmes: complexité et notation asymptotique
Utilisation des unités dans les calculs Intro du paragraphe grandeurs et mesures de 5ème et 4ème « Comme en classe de sixième, lutilisation dunités dans.
Méthodes d’Inpainting
Efficacité des algorithmes
Santé mentale, travail et emploi PSP 2125
Sixième partie Sixième partie Le recrutement dans ladministration scolaire et universitaire (ASU) et dans les corps des services déconcentrés (SD) de lEtat.
Conférence du groupe X- Environnement, 24 avril 2013 L’impact écologique des infrastructures numériques Cédric Gossart Institut Mines-Télécom Télécom Ecole.
Publication trimestrielle du SPP IS Conférence de presse 27 septembre 2013.
L’énergie éolienne descEolien.php..
TAI Nombres et structures
Algorithmes sur les sons
V d. Des élections professionnelles pour élire : Vos délégués du personnel aux Commissions Administratives Paritaires des professeurs des écoles et des.
Jardins des châteaux de la Renaissance
Structures de contrôle
BULLETIN STATISTIQUE Derniers développements – Juillet 2014.
Vibert Dimitri CSII3 Tuteur : Volker Bäcker.  Présentation de Montpellier RIO Imaging  La mission  Les langages et outils utilisés  Le planning 
Travaux Pratiques Optimisation Combinatoire
FOULPOUGNE Station Hydrométrique sur la TOUVRE Code Hydro : R Ministère de l'Écologie, de l'Énergie, du Développement.
RDA : Pourquoi, quoi, qui et quand Des règles aux entités : Catalogage avec la RDA ACB, le 29 mai 2009 Gillian Cantello Bibliothèque et Archives Canada.
Jésus aborde la question du mariage « Celui qui renvoie sa femme pour en épouser une autre est coupable d'adultère envers elle. Si une femme a renvoyé.
Perrine Royole-Degieux Com LHC-IN2P3 –23 novembre 2011 à Paris (APC) Perrine Royole-Degieux Web, vidéos et réseaux sociaux.
LE CONGE INDIVIDUEL DE FORMATION - Définition - Quels sont les critères ? - Quelles sont les conditions de recevabilité ?
Cours 5 - Trois algorithmes de tri d'un tableau
2016 !!!. 25 personnes 6 modules : 22 janvier – 24 juin 2016 Travail de fin d’études : juillet–sept jours de travail par mois 7’800 frs diplôme.
Actualités fiscales Denis-Emmanuel Philippe Maître de conférences à l'Ulg Avocat aux Barreaux de Bruxelles et de Luxembourg 0496/
DIAPO 1: 30 secondes Voici un algorithme SCRATCH Question 1
Les ventilateurs Etude de cas n°1 1 : Observations - Comparaisons
Transcription de la présentation:

Algorithmes et structures de données 4ème cours Patrick Reuter maître de conférences http://www.labri.fr/~preuter

Ingrédients d’algorithmes Affectation (ex. mois := 6) 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)

Aujourd’hui Types de base Type « tableau »

Mémoire vive Proc 64bit 2,93 GHz : 2,93 Giga-Instructions par seconde

Organisation de la mémoire Un octet peut prendre 28=256 valeurs différentes, entre 00000000 et 11111111. 1 kilo-octet (ko ou Ko) = 210 octets = 1 024 octets (et pas 1 000 octets comme on pourrait le supposer), soit 2 à la puissance 10. 1 méga-octet (Mo) = 220 octets = 1 024 ko = 1 048 576 octets. 1 giga-octet (Go) = 230 octets = 1 024 Mo = 1 073 741 824 octets. 1 téra-octet (To) = 240 octets = 1 024 Go = 1 099 511 627 776 octets.

Organisation de la mémoire Mémoire de 512 MegaOctets #536.870.911 #536.870.910 ... #1.000 ... #5 #4 #3 #2 #1 #0 # : adresse dans la mémoire vive

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

Déclaration de variables var compteur : integer; var diviseur : float; var c : char; var precision : double; var nom : string; var masculin : boolean; diviseur := 1.1; compteur : = 1; Nom := ‘Gerhard’; Nombre entier Nombre à virgule flottante caractère Nombre à virgule flottante avec double précision Chaîne de caractères VRAI/FAUX

Types de base Type binaire : Boolean (bool) 1 bit FALSE, TRUE (FAUX, VRAI) Nombre entiers : Unsigned char (byte) 1 Octet 0 à 255 Signed char (byte) 1 Octet -128 à 127 Unsigned integer 4 Octets 0 à 4294967295 Signed Integer 4 Octets -2147483648 à +2147483647 Nombre à virgule flottante : Real (Single, float) 4 Octets -3.4*10-38 à 3.4*1038 (7 décimales) Double 8 Octets 1.8 * 10-308 à 1.8 * 10308 (15 décim) Rappel : 1 Octet = 8 bits = 28 possibilités 4 Octets = 32 bits = 232 possibilités

Octet, byte (caractère) var c : char; (byte) valeurs de 0..255 Qu’est-ce qu’on peut faire avec un octet ?  Code ASCII (American Standard Code for Information Interchange) 95 caractères imprimables

Octet - Code ASCII

Organisation de la mémoire Un octet peut prendre 28=256 valeurs différentes, entre 00000000 et 11111111. Octets non- signés : Par exemple : 1 1 0 0 0 1 0 0 128 64 32 16 8 4 2 1

Organisation de la mémoire Octet signé de -128 jusqu’à 127 Valeurs négatives : 1111 1111 = -1 à 1000 0000 = -128. Valeurs positives : 0000 0000 = 0 à 1111 1111 = 127 Calculer les valeurs négatives : Prendre le complément Ajouter 1 Exemple: - 65 01000001 Complément 10111110 Ajouter 1 10111111

0,001231 1,231*10^-3 -9866 -9,866*10^3 1,45 1,45*10^1 … 1,4

mantisse m (entier, sans la ‘virgule’) exposant e signe s {+1,-1} exposant e 0,001231 1,231*10^-3 -9866 -9,866*10^3 1,45 1,45*10^1 … 1,4 base b=10 mantisse m (entier, sans la ‘virgule’)

Nombre à virgule flottante var c : real; (single, double, real, ..) Approximations rationnelles de nombres réels. Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}) une mantisse entière m (parfois appelée significande) un exposant e. s * m * be - Avec b la base de représentation (parfois 2, 10, 16, ou autre) - En faisant varier e, on fait « flotter » la virgule décimale.

Nombre à virgule flottante Float, single, double, real, .. Approximations rationnelles de nombres réels. Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}) une mantisse entière m (parfois appelée significande) un exposant e. s * m * be Avec b la base de représentation (parfois 2, 16, ou autre) signe exposant mantisse Simple précision (float, 32 bits) 1 bit 8 bits 23 bits Double précision(double,64 bits) 1 bit 11 bits 52 bits Simple précision (b=2): (-1)S * (1 + M/223 ) * 2(E-127) Double précision (b=2): (-1)S * (1 + M/252 ) * 2(E-1023)

Conversion d’un nombre x Nombre x = (-1)s * m * 2e (base b = 2) signe s : 0 pour positive, 1 pour négative Exposant e: e = └log2 (x)┘ Mantisse m: m = (x/2e – 1) * 223

Conversion d’un nombre x Rappel : Nombre x = (-1)s * m * 2e (base b = 2) signe s : 0 pour positive, 1 pour négative Exposant e: e = └log2 (x)┘ Mantisse m: m = (x/2e – 1) * 223 Exemple : x = +11,25 Signe s = positive -> 0 binaire Exposant e = └log2 (11,25) ┘ = └3,49 ┘ = 3  + 127 = 130 -> 10000010 binaire Mantisse m = (11,25/23 – 1) * 223 = 3407872 ) = 01101000000000000000000 binaire Solution : 0 10000010 01101000000000000000000 pour chiffres négatifs

Nombre à virgule flottante Float, single, double, real, .. Approximations rationnelles de nombres réels. Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}) une mantisse entière m (parfois appelée significande) un exposant e. s * m * be Limitation : précision limitée qui se traduit par des arrondis qui peuvent s'accumuler de façon gênante.

Organisation de la mémoire var lettre : char; ( 1 octet (byte) ) #536.870.911 #536.870.910 ... #1.000 ... #5 #4 #3 #2 #1 #0

Organisation de la mémoire var lettre : signed char; lettre := -65; #536.870.911 #536.870.910 ... #1.000 ... #5 lettre #4 191 #3 #2 #1 #0

Organisation de la mémoire var lettre1,lettre2,lettre3,lettre4 : char; lettre1 := 60; lettre2 := 80; lettre3 := 50; lettre4 := 30; ... #1.000 ... lettre4 #3 30 lettre3 #2 50 lettre2 #1 80 lettre1 #0 60

Organisation de la mémoire var nombre : integer; ... #1.000 ... #5 #4 nombre nombre nombre nombre #0

Organisation de la mémoire var nombre : integer; ( 4 byte (octets) ) nombre := 125; #536.870.911 #536.870.910 ... #1.000 ... #5 #4 nombre nombre nombre nombre #0 125 125

Organisation de la mémoire var nombre : integer; ( 4 byte (octets) ) nombre := 260; #536.870.911 #536.870.910 ... #1.000 ... #5 #4 nombre nombre 1*256 + 4*1 nombre 1 nombre #0 4 125

Organisation de la mémoire var resultat : REAL; #536.870.911 #536.870.910 ... #1.000 ... #5 #4 resultat resultat resultat resultat #0

Exercice Déclarer le nombre de jours dans chaque mois Ecrire un algorithme qui compte le nombre de mois à 30 jours

var janvier : byte; var fevrier : byte; var mars : byte; … var decembre : byte; var compteur : integer; janvier := 31; fevrier := 28; mars := 31; avril := 30; decembre := 31; compteur := 0; si janvier = 30 alors compteur := compteur + 1; fin si si fevrier = 30 alors ... si decembre = 30 alors

Type : tableaux (angl. ARRAY) Déclaration d’une variable de type tableau Définition : var nom_du_tableau : Array[MinDim..MaxDim] of type ; Exemples : var mot : array[0..10] of char; var jours : array[1..12] of char; … structure de données la plus connue structure homogène, chaque élément est du même type de base

Type : tableaux (angl. ARRAY) Déclaration d’une variable de type tableau var jours : array[1..12] of byte; var mot : array[0..10] of char; Affectation : nom_du_tableau[index] := valeur ; Exemples : jours[1] := 31; jours[2] := 28; … jours[12] := 31; jours[13] ----- Erreur !!! jours[14] ----- Erreur !!!

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31;

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0;

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0;

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début Fin

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »);

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 4 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 4 1 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 4 1 ….

Type : tableaux (angl. ARRAY) Exemple d’un algorithme sur les tableaux : - compter le nombre de mois avec 30 jours { Déclaration de variables} var jours : array[1..12] of byte; var i, nombre : integer; { Affectation des variables} jours[1] := 31; jours[2] := 28; … jours[12] := 31; {Initialisation} i:=1; nombre := 0; {boucle} Tant que i<=12 faire Début si (jours[i] = 30) alors nombre := nombre + 1; i := i +1; Fin Afficher(« Il y a », nombre, « de mois à 30 jours »); Jours[1] Jours[2] ... Jours[12] i nombre 31 28 31 1 2 3 4 1 ….

Organisation de la mémoire var jours : array[1..12] of byte; {12 octets} #536.870.911 #536.870.910 ... jours[12] #2011 ... ... jours[3] #2002 jours[2] #2001 jours[1] #2000 ... #0

Organisation de la mémoire Jours[1]:=31; jours[2]:=30; … #536.870.911 #536.870.910 ... jours[12] #2011 31 ... jours[3] #2002 31 jours[2] #2001 28 jours[1] #2000 31 ... #0

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

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

Organisation de la mémoire var jours : array[1..12] of byte; {12 octets} #536.870.911 #536.870.910 ... jours[12] #2011 31 ... jours[3] #2002 31 jours[2] #2001 28 jours[1] #2000 31 ... i #0

Type : tableaux (angl. ARRAY) structure de données la plus connue structure homogène, chaque élément est du même type de base occupe de la place successive dans la mémoire « random access » = l’accès aux différents éléments se fait à coût égal est donc à un coût constant