Structures de données et algorithmes Ordinateurs Architecture des
Transcription
Structures de données et algorithmes Ordinateurs Architecture des
Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ Processeur Cours: traitements sur les données stockées dans la mémoire. Architecture des ordinateurs – Types élémentaires – Types collections – Arbres et graphes – Mémoire composée de cellules > composée de bits = unité binaire de mémoire Algorithmes – Itération – Analyse numérique – Récursion – Complexité – Conception des algorithmes – Programmation dynamique – stocker le programme à exécuter Séminaire + travaux pratiques: – stocker les données à traiter Exercices théoriques Systèmes de communication (entrées/sorties): Programmation Java: apprentissage de Java, utilisation des types de données. transmission d’informations entre l’ordinateur et son environnement Evaluation : écrans, claviers, souris, réseau de télécommunication, appareils (moteurs, capteurs, etc.). 2/3 Examen écrit (3h) basé sur cours, séminaire, TPs 1/3 Travaux pratiques G. Falquet, CUI, Université de Genève 1 de 27 G. Falquet, CUI, Université de Genève 2 de 27 Architecture des ordinateurs Exécution d’un programme Mémoire adr. 11111101 disque magnétique 11001101 ... données bus Processeur valeur Unité arithmétique et logique 301 charger R1 1001 302 add R1 1004 reg valeur 303 stocker R1 1002 R1 0 304 si r1>0 saut 302 R2 0 1001 4 1002 –1 PC 301 1003 17 1004 –2 processeur 01000101 11111101 disque ma gnétique 11001101 données programme b us processeur 01000101 pr ogramme écran écran G. Falquet, CUI, Université de Genève 3 de 27 G. Falquet, CUI, Université de Genève 4 de 27 Exécution d’un programme Mémoire adr. Exécution d’un programme Mémoire Processeur valeur ... adr. Unité arithmétique ... et logique 301 charger R1 1001 302 add R1 1004 303 stocker R1 1002 304 si r1>0 saut 302 1001 4 1002 –1 1003 1004 Processeur valeur et logique 301 charger R1 1001 valeur 302 add R1 1004 reg valeur 04 303 stocker R1 1002 R1 4 0 304 si r1>0 saut 302 R2 0 1001 4 1002 –1 PC 302 17 1003 17 –2 1004 –2 reg R1 R2 PC 301 G. Falquet, CUI, Université de Genève 5 de 27 G. Falquet, CUI, Université de Genève 6 de 27 Exécution d’un programme Mémoire adr. Exécution d’un programme Mémoire Processeur valeur ... adr. Unité arithmétique et logique 301 charger R1 1001 302 add R1 1004 reg 303 stocker R1 1002 R1 304 si r1>0 saut 302 1001 4 1002 –1 1003 1004 G. Falquet, CUI, Université de Genève Unité arithmétique + Processeur valeur ... Unité arithmétique et logique 301 charger R1 1001 valeur 302 add R1 1004 reg valeur 4 2 303 stocker R1 1002 R1 2 0 304 si r1>0 saut 302 R2 0 1001 4 1002 –1 PC 303 17 1003 17 –2 1004 –2 R2 PC 302 7 de 27 G. Falquet, CUI, Université de Genève 8 de 27 Exécution d’un programme Mémoire adr. Exécution d’un programme Mémoire Processeur valeur ... adr. Unité arithmétique charger R1 1001 302 add R1 1004 303 stocker R1 1002 304 si r1>0 saut 302 1001 4 1002 –1 2 1003 1004 et logique >0? 301 charger R1 1001 valeur 302 add R1 1004 reg valeur 2 303 stocker R1 1002 R1 2 0 304 si r1>0 saut 302 R2 0 1001 4 1002 –1 PC 304 17 1003 17 –2 1004 –2 reg R1 R2 PC 303 G. Falquet, CUI, Université de Genève 9 de 27 G. Falquet, CUI, Université de Genève Exécution d’un programme Mémoire adr. Unité arithmétique ... et logique 301 Processeur valeur Information et données Traitement de l’information par une machine => stockage en mémoire => codage Processeur valeur ... 10 de 27 Unité arithmétique Information codée = données. et logique Schéma de codage : structure de données • complet: représenter en mémoire toutes les informations à traiter; • efficace en espace : faible occupation de la mémoire; • efficace en temps : peu d’instructions pour traiter les données. 301 charger R1 1001 302 add R1 1004 reg valeur 303 stocker R1 1002 R1 2 304 si r1>0 saut 302 R2 0 1001 4 1002 –1 1003 17 1004 –2 Etude des structures de données indissociable de G. Falquet, CUI, Université de Genève Etude des algorithmes qui traitent ces données. PC 302 "Structures de données + Algorithmes = Programmes" [Wirth] 11 de 27 G. Falquet, CUI, Université de Genève 12 de 27 Algoorithme Langage algorithmique de haut niveau Méthode pour résoudre un problème Pour éviter d’écrire des programmes au niveau "machine" • en un nombre fini d’étapes On se donne un langage algorithmique plus abstrait. • de manière correcte Modèle de mémoire = ensemble d’objets objet = ensemble de cellules On cherche des algorithmes généraux • algo pour calculer 45 + 12 ==> pas intéressant • algo pour additionner deux nombres entiers quelconques ==> intéressant contient une valeur d’un certain type (entier, réel, chaînes de caractères, booléen, etc.) Variables Nomment un objet de la mémoire. Thèse de Church (remplacent l’adresse numérique) Tout algorithme peut être exécuté par un programme sur un ordinateur Possèdent un type Y: == il n’y a pas de méthode “raisonnable” qu’on ne puisse programmer Remarque "Hello" 95 Etat de la mémoire : ensemble de paires (variable = valeur) Il y a des problèmes indécidables == pour lesquels il n’existe pas d’algorithme G. Falquet, CUI, Université de Genève X: { X = "Hello", Y = 95 } 13 de 27 G. Falquet, CUI, Université de Genève Vrai langage et pseudo langage 14 de 27 Instructions: affectation Les langages "professionnels" sont complexes • syntaxe restrictive pour éviter les erreurs de programmation • doivent être modulaires, structurés, etc. (génie logiciel) • adaptés à un environnement (périphériques, réseau, etc.) • contraintes d’efficacité Stocke une valeur, résultat d’un calcul, dans une variable. /!\ Le contenu précédent est perdu. variable ← constante X ← 34 variable ← variable Y← X Pseudo langage • syntaxe plus informelle, pas de définition stricte • centré sur l’algorithme, pas sur les aspects génie logiciel variable ← expression opérateur expression Z ←3 * X • • critère : facile à traduire dans un vrai langage G. Falquet, CUI, Université de Genève 15 de 27 G. Falquet, CUI, Université de Genève 16 de 27 Exemples mémoire avant instruction X← 2 X = 897 Evaluation d’expression Expressions composées de constantes, variables, opérateurs, fonctions mémoire après Evaluation dans l’ordre habituel: ( ), fonctions, ^, *, /, mod, +, –, ∪, ∩, <, >, =, ∈, ⊆, X=2 X = 2 , Y = 3333 Y← X+8 X = 2 , Y = 10 X = 3 , Y = 11 X← X *Y X = 33 , Y = 11 Z = "xsjsjdsw" Z ← "allo" Z = "allo" Z = "allo" , Y = 11 X← Z+Y indéfini : chaîne de caractères + entier Les variables sont remplacées par leur valeur. Signification des opérations dépend du type d’arguments 2.3 + 5.66 6+2 6/4 "bon"+"jour" addition des réels addition des entiers = 1 ou 1.5 ? concaténation des chaînes L’un des objets de ce cours : définir et étudier la signification des opérations sur différents type de données (entiers, réels, listes, ensembles, séquences, arbres, graphes, etc.) G. Falquet, CUI, Université de Genève 17 de 27 G. Falquet, CUI, Université de Genève Séquences d’instructions { Ordre d’exécution instruction1; instruction2; …} Attention: L’ordre des instructions dans une séquence est important ! Sémantique: Exécuter instruction1, puis instruction2, et ainsi de suite. Exemple: { X ← 2; Z ← X + 1; U ← X – Z; …} mémoire avant instruction mémoire après X = 0, Y = 1, Z = 111 X ← 2; Z ← X + 1; U←X–Z X = 2, Z = 3, U = –1 G. Falquet, CUI, Université de Genève 18 de 27 19 de 27 [[ … ]] { X ← 2; Z ← 2*X ; [[ X = 3 , Z = 4 ]] X ← X+1 } [[ … ]] { X ← 2; X ← X+1; [[ X = 3 , Z = 6 ]] Z ← 2*X } G. Falquet, CUI, Université de Genève 20 de 27 Exécution conditionnelle: Algorithme MAX si ( expression) instruction1 sinon instruction2 Calcul de Z = MAX(X, Y) si (X > Y) Z←X sinon Z ←Y ou bien si ( expression ) instruction1 [[ … ]] A ← 2; B ← 1; si (A > B) W ← A – B sinon W ← 0 [[ A = 2, B = 1, W = 1 ]] Vér ifier : l’algorithme fonctionne pour X = Y [[ … ]] si (X > 0) Y ← X sinon Y ← –X [[ Y = valeur absolue de X ]] G. Falquet, CUI, Université de Genève 21 de 27 G. Falquet, CUI, Université de Genève 22 de 27 Algorithme SIGNE Itération Calcul de Z = signe de X Syntaxe: tant que ( expression ) instruction si (X > 0) Z←1 sinon si (X = 0) Z ← 0 sinon Z ← –1 Sémantique: Exécuter instruction tant que l’évaluation de expression donne vrai. Exemple Conditions imbriquées. [[ … ]] Trouver une forme équivalente non imbriquée. R ← 10; S ← 0; tant que (R > 0) { S ← S + R; R ←R – 1 } [[ S = 10+9+8+…+2+1 = 55 ]] G. Falquet, CUI, Université de Genève 23 de 27 G. Falquet, CUI, Université de Genève 24 de 27 Itération - sur un ensemble de valeurs Exemple. Calcul de r = p q Lorsque on veut effectuer un nombre déterminé à l’avance d’itérations on pourra utiliser la syntaxe abrégée pour (variable de expression1 à expression2 ) r ← 1; n ← 0; instruction qui correspond à : tant que (n ≠ q) { variable ← expression1 tant que (variable ≤ expression2) { instruction ; variable ← variable + 1 r ← r * p; n ← n + 1; } } [[ r = pq ]] Toutes ces instructions peuvent être combinées entre elles pour former des instructions plus complexes. . G. Falquet, CUI, Université de Genève 25 de 27 L’algorithme est correct r ← 1; n ← 0; [[ r = p n ]] tant que (n ≠ q) { [[ r = p n ]] r ← r * p; [[ r = p n+1 ]] n ← n + 1; [[ r = p n ]] } [[ r = p n et n = q ]] => [[ r = p q ]] G. Falquet, CUI, Université de Genève 27 de 27 G. Falquet, CUI, Université de Genève 26 de 27