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

Slides:



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

La prise en charge du risque maladie
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 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 avancées Partie Conception de Sites Web dynamiques Cours 11 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 avancées Partie Conception de Sites Web dynamiques 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
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 avancées Partie Conception de Sites Web dynamiques Cours 8 Patrick Reuter.
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.
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
LIN 1750 DGD 11 Prosodie.
Efficacité des algorithmes
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.
Planification et suivi d'un projet de S.I Réfs : chapitre 9 p 251.
L’énergie éolienne descEolien.php..
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
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 avancées 5ème cours Patrick Reuter

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)

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

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

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 TYPE

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;

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;

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

Tableau 2D

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

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

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;

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

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

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

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

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; #0 a[1][1] # # # Occupe de la place successive dans la mémoire a[1][2] #2001 a[1][3] #2002 a[2][1] #2003 a[2][2] # a[3][3] #2008 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)*(i-1)) -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 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 }

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; #0 #1 #2 #3 #4 #5... # # # 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;

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