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

Structure de données et algorithmique de base

Présentations similaires


Présentation au sujet: "Structure de données et algorithmique de base"— Transcription de la présentation:

1 Structure de données et algorithmique de base
Cours de PCEM 2 F. KOHLER

2 Objectifs Connaître les principales structures de données manipulées dans un programme Connaître les notions d’enchaînement, de test, de boucle Définir la notion de fonction, de procédure Connaître les différences entre langage interprété et compilé Savoir appliquer les concepts de base ci-dessus à la programmation de macros (tp)

3 Références Alfred Aho John Hopcroft, Jeffrey Ullman
Structures de données et algorithmique

4 Un programme Ecriture d'un programme informatique pour résoudre un problème particulier Etapes : Formuler le problème Spécifier les données Construire une solution Mettre en oeuvre l'algorithme, le documenter, évaluer sa complexité

5 Algorithme Série d'instructions dont chacune a une signification précise et qui peut être réalisée en un nombre fini d'étapes en un temps fini raisonnable. Les instructions de base L'affectation x := y + z La répétition x := 0 repeat until (x < 10) x:= x+1 end repeat Le test If (x=1) then d := 4 Else d := 2.5 End if

6 Le calcul du poids théorique selon la formule de Lorentz
avec D = 4 pour les hommes et D = 2.5 pour les femmes. Les données La taille en centimètres Valeur entière positive supérieure à 150 et inférieure à 210 Le sexe pour déterminer D Code à déterminer avec les utilisateurs exemple : 1 pour homme, 2 pour femme mais cela peut être M pour masculin et F pour féminin ou encore …=> faire un choix parmi tous les codes possible. Sexe vu comme une valeur réelle saisie par l’utilisateur 4 pour les hommes, 2,5 pour les femmes Boutons radio avec comme libellés Homme, Femme Dés ce stade, des conventions vont être acceptées

7 Erreur (taille ou sexe) ?
Le programme On peut schématiser le programme suivant l’organigramme : Demander la taille Demander le sexe Vérifier que la taille est comprise entre 150 et 210 Vérifier que le sexe appartient à la liste {M,F} Erreur (taille ou sexe) ? Oui Non Afficher message d’erreur Faire le calcul Afficher le résultat

8 Le programme Elaborer un programme c'est résoudre un problème
Le premier stade consiste à énoncer le problème et à en exprimer une solution dans un langage informel en réalisant une modélisation mathématique appropriée. A l'étape suivante, l'algorithme est écrit en pseudo-langage, c'est à dire dans un mélange d'instructions formelles que l'on retrouve dans tous les langages de programmation et de langage naturel. Le langage informel initial fait place peu à peu à des suites d'énoncés de plus en plus précises, dans un processus d'affinement progressif. On crée alors les types de données abstraites relatifs à chaque type de données en combinant des types élémentaires (entiers, réel, caractères) en donnant un nom procédural à chaque opération. Dans la troisième phase, on décide de la représentation informatique des types de données abstraites et on écrit dans un langage formel (informatique) les procédures opérant sur ces données. Suit une phase de mise au point et de correction des erreurs.

9 Comment représenter les choses ?
Le codage de l’information Avec 2 bit on peut coder 4 éléments 00 – 01 – 10 – 11 Avec 1 octet on peut coder 28 éléments Cela permet par exemple De représenter les nombres entier de 0 à 255 De représenter 256 symboles comme les caractères utilisés dans une langue. Le code autrefois le plus répandu pour représenter lettre, chiffre, symbole est le code ASCII (American Standard Code for Information Interchange ). Il a été standardisé de manière universelle sur 7 bits et ne permet pas de coder les lettres accentuées ni les caractères spéciaux du français ç, ù, €… L’emploi d’un 8ième bit a été utilisé pour ces caractères mais dans un codage non universel ce qui explique encore aujourd'hui certains problèmes de compatibilités observés entre Macintosh, PC et Unix. C’est un type de donnée. Suivant les langages on l’appelle CHAR, caractère….

10 Le code ASCII

11 Représentation des nombres entiers
Habituellement, les nombres entiers sont codés sur 2 octets soit 16 bits. On peut alors soit Coder les entiers positifs compris entre 0 et Coder les entiers négatifs et positifs compris dans à Comment coder les entiers positif ? Comment coder les entier négatifs ?

12 Comment coder les entiers positifs
Représentation binaire On affecte des puissances de 2 croissantes de la droite vers la gauche en commençant par 2 puissance 0, puis 2 puissance 1….. Exemple sur 3 bits 0 0 0 => 0*22 + 0*21 + 0*20 = 0 0 0 1 => 0*22 + 0*21 + 1*20 = 1 1 0 1 => 1*22 + 0*21 + 1*20 = 5 Addition => 2 => 3 => 5

13 Comment coder les entiers négatifs
Imaginons que l’on représente des entiers sur 3 bits On peut représenter 8 nombres soit de -4 à +3 Rappel représentation de +1 0 0 1 => 1 Le complément à 2 : représentation de – 1 On part de On compléments 1 1 0 On ajoute On obtient –

14 En fait le complément à 2 Est le système le plus simple car il suffit de savoir faire des additions pour réaliser à la fois des additions et des soustractions. D’autre représentations existent (3 bits) Equivalence Signe complément Complément vrai Décimale et valeur absolue restreint (à 2) (+3 – 2) = 1 011 110 ----- 001

15 Quelles conséquences ? Des résultats qui peuvent surprendre :
Imaginons que l’on représente des entiers sur 3 bits On peut représenter 8 nombre soit de -4 à +3 1 0 0 => -4 0 1 1 => +3 Représentation de +2 0 1 0 Adition de +2 et + 2 ------ 1 0 0 => - 1

16 La représentation des nombres réels
Type « mantisse » « exposant » Un certain nombre de chiffres significatifs : en général 15 => Limite de précision qui peut devenir gênante dans certains calculs sur des grands nombres (nombre de globules rouges par mm3)

17 Les structures de données
Les chaînes de caractères : Un tableau de char avec par exemple la longueur de la chaîne en indice 0 du tableau => Limite de longueur à 255 caractères Les pointeurs

18 Les structures de données
Les piles LIFO, FIFO Les listes chaînées Les arbres

19 Un exemple On représente chaque maladie par un ensemble de signes. Chaque signe est une chaîne de caractères. On a 3 maladies : Rougeole, Rubéole,Scarlatine. Etablir un algorithme qui trouve les signes communs à ces maladies. Annexe : Signes de la Rougeole : Exanthème, Enanthème, Fièvre, Köplick, catarrhe oculonasal Signes de la Rubéole : Exanthème, Adénopathies Signes de la Scarlatine : Exanthème, Angine,Vomissements, Céphalées, Enanthème, Langue framboisée

20 Une solution Représentation des signes dans des tableaux :
Recherche des signes communs : il ne peut pas avoir plus de signes communs que le plus petit nombre de signes d'une maladie => Rechercher la maladie qui a le plus petit nombre de signes puis rechercher si ces signes sont communs aux deux autres. 1 Exanthème Exanthème Exanthème 2 Enanthème Adénopathies Angine 3 Fiévre Vomissement 4 Köplick Céphalées 5 Cat. oc. nas. Enanthème 6 Langue framboisée NbSc := 0 `Nombre de signe de la maladie Min := `Minimum de signe des maladies Mal := 0 `N° de la maladie qui a le plus petit nombre de signe Boucle de i = 1 à 3 NbS := valeur (S(0,i)) si (NbS < Min) Min :=NbS Mal := i Fin de si FIn de boucle ‘Recherche de la ‘maladie qui a le ‘plus petit nombre ‘de signes

21 suite Boucle de j = 1 à Min Signe_courant := S(Mal,j) SC(J) := 0 `on va compter dans SC le nombre de maladies auquel `appartient le signe_courant Boucle de k = 1 à 3 `en fait nb maladies à envisager NbS := valeur (S(0,k)) Boucle de L = 1 à Nbs Si S(k,L) = Signe_courant `Le signe_courant est commun à la maladie k et Mal SC(j) := SC(j)+1 Fin de si Fin de boucle `Il en reste plus qu'à imprimer les signes communs Si SC(j) = 3 `en fait Nb Mal Imprimer ("Le signe "+ S(Mal,j) + "est commun aux 3 maladies) On sait maintenant que la maladie Mal a Min nombre de signes : le plus petit nombre de signes. Pour chacun des signes de cette maladie, voyons si ce signe existe dans les autres maladies.

22 Procédure C’est un morceau de programme qui est appelé, en général plusieurs fois, par le programme principal. Des paramètres peuvent être passés à une procédures Par adresse Par valeur

23 Fonction et procédure Fonction :
C’est un « morceau de programme » que l’on qui retourne un résultat « calculé » à partir des paramètres Exemple : Fonction qui renvoie le minimum de deux valeurs passés en paramètre ` Fonction Min; ` Paramètres $1, $2 : réel ` $0 réel retourne le minimum des deux valeurs si ($1>$2) $0 := $2 sinon $0 := $1 Fin de si Appel de la fonction …… A := 10 B := 12.5 C:= Min(10;12.5)

24 Complexité des algorithmes
En général la solution n'est pas unique Dans l'exemple précédent, on aurait pu d'abord établir la liste des signes différents les uns des autres cités dans toutes les maladies puis on aurait compter le nombre de maladies dans lesquels ces signes était présents. On aurait pu ainsi répondre aux questions : quels sont les signes communs ? quels sont les signes pathognomiques... Les critères de choix d'une solution répondent aux exigences souvent contradictoires : L'algorithme doit être simple à mettre en oeuvre et à mettre au point L'algorithme doit mettre intelligemment à contribution les ressources de l'ordinateur et doit s'exécuter le plus rapidement possible. Le temps d'exécution d'un programme dépend : Des données entrant dans le programme De la qualité du code généré par le compilateur De la nature et de la vitesse d'exécution des instructions du microprocesseur utilisé De la complexité de l'algorithme mis en oeuvre Exemple les tris Objectif trié les valeurs 2, 1, 3, 1, 5, 8 pour obtenir 1, 1, 2, 3, 5,8 Le temps d'exécution dépend du nombre n de valeurs à trier selon une fonction T(n) qui varie en fonction du nombre de valeur mais aussi de l’algorithme, certain étant mieux plus performant quand n est petit d’autre quand n est grand.

25 Le programme et sa traduction
Le microprocesseur ne « digère » qu’un code binaire correspondant à son propre jeux d’instructions. Pour simplifier l’écriture des programmes on utilise des langages plus facile à manipuler (programme source) qui doivent être « traduit ». La traduction peut se faire Globalement un fois pour toute, on parle alors de compilation Instruction par instruction, on parle alors d’interprétation Les programmes qui assure la « traduction » sont des compilateur et des interpréteurs. Un même langage peut disposer de compilateur et d’interpréteur.

26 Les macros Certains logiciels comme word, excel, textedit, photoshop… possède un langage interne souvent plus ou moins spécifique et limité permettant d’écrire des programmes utilisant les fonctions de ces logiciels afin d’automatiser des fonctions répétitives. En général, il y a possibilité « d’enregistrer » la macro en lançant l’enregistrement puis en effectuant une fois les différentes actions à réaliser (par exemple redimensionner une photo couleur à une taille fixe, puis la transformer en noir et blanc…). Une fois les actions terminées, on met fin à l’enregistrement, on donne un nom à la macro et l’on peut ensuite en demander l’exécution.


Télécharger ppt "Structure de données et algorithmique de base"

Présentations similaires


Annonces Google