Algorithmes et structures de données 5ème cours

Slides:



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

Algorithmes et structures de données avancées Cours 7
Patrick Reuter maître de conférences
Algorithmique (suite)
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 4è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 ?.
Yannick LEGRÉ - DataGrid France - Lyon 31 janvier 2001 Tests de Globus Lancement des algorithmes dArtémis à travers la grille... WP 6 / WP 10.
Module 6 : Programmation dynamique
L’ASSOCIATION SCHOOL DE TARRA
00002–Fr–1 – Décembre 2003 Organisation mondiale de la Santé Nombre de personnes vivant Total40 millions (34 – 46 millions) avec le VIH/SIDA Adultes37.
Les dates Recherche d’un algorithme pour déterminer si une année est bissextile ou non.
Les algorithmes: complexité et notation asymptotique
Jeu dOthello Projet dAlgorithmique et Programmation.
Le calendrier de l'orientation en classe de 3ème L'année de 3ème → Année d'un choix important engageant les années suivantes : - Voie générale et technologique.
L1 - MC1 Contrôle continu : - Partiel 1 (note N1) : 23 octobre 18h
LIN 1750 DGD 11 Prosodie.
Efficacité des algorithmes
Analyse des discours cours 4 Les genres dans la presse écrite
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.
Efficacité des algorithmes
L’énergie éolienne descEolien.php..
Modèles et Algorithmes pour la Bioinformatique et la Visualisation d'informations Guy Melançon Pascal Ferraro David Auber David Sherman.
Source : La logistique en quelques mots clés :
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
Cours 4 - Trois algorithmes de recherche dans un tableau
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.
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é.
par Joshua, Philippe et Francis
SNC_2007 M. Ruggli, O. Bugnon, D. Ballinari, C. Cerise, C. Grossenbacher N. Stohler, F. Zurbriggen / CONFIDENTIEL A l'usage exclusif des cercles.
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
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 5ème cours Patrick Reuter http://www.labri.fr/~preuter

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)

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

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

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

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;

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;

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

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

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

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;

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;

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 ²

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

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;

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

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; #536.870.911 #536.870.910 ... 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 )

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)

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

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 }

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;

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

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

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;

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

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;

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;

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 :

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

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;

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}

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;

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