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 Cours de PCEM 2 F. KOHLER

Présentations similaires


Présentation au sujet: "Structure de données et algorithmique de base Cours de PCEM 2 F. KOHLER"— 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 denchaî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 La formule : 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 lutilisateur 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 Le programme On peut schématiser le programme suivant lorganigramme : Demander la taille Vérifier que la taille est comprise entre 150 et 210 Demander le sexe Vérifier que le sexe appartient à la liste {M,F} Faire le calcul Afficher le résultat Erreur (taille ou sexe) ? Non Oui Afficher message derreur

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 linformation –Avec 2 bit on peut coder 4 éléments 00 – 01 – 10 – 11 –Avec 1 octet on peut coder 2 8 é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 ç, ù, … Lemploi dun 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. Cest un type de donnée. Suivant les langages on lappelle 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* * *2 0 = => 0* * *2 0 = => 1* * *2 0 = 5 –Addition => => => 5

13 Comment coder les entiers négatifs Imaginons que lon représente des entiers sur 3 bits On peut représenter 8 nombres soit de -4 à +3 Rappel représentation de => 1 Le complément à 2 : représentation de – 1 –On part de –On compléments1 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. Dautre représentations existent (3 bits) EquivalenceSigne complément Complément vrai Décimale et valeur absoluerestreint(à 2) (+3 – 2) =

15 Quelles conséquences ? Des résultats qui peuvent surprendre : – Imaginons que lon représente des entiers sur 3 bits On peut représenter 8 nombre soit de -4 à => => +3 Représentation de Adition de +2 et => - 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 mm 3 )

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 ExanthèmeExanthèmeExanthème 2EnanthèmeAdénopathiesAngine 3FiévreVomissement 4KöplickCéphalées 5Cat. oc. nas.Enanthème 6Langue framboisée NbSc := 0 `Nombre de signe de la maladie Min := 1000 `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 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. 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 Boucle de j = 1 à Min Si SC(j) = 3 `en fait Nb Mal Imprimer ("Le signe "+ S(Mal,j) + "est commun aux 3 maladies) Fin de si Fin de boucle

22 Procédure Cest 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 : –Cest un « morceau de programme » que lon 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 lalgorithme, certain étant mieux plus performant quand n est petit dautre quand n est grand.

25 Le programme et sa traduction Le microprocesseur ne « digère » quun code binaire correspondant à son propre jeux dinstructions. 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 dinterprétation –Les programmes qui assure la « traduction » sont des compilateur et des interpréteurs. –Un même langage peut disposer de compilateur et dinterpré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 dautomatiser des fonctions répétitives. En général, il y a possibilité « denregistrer » la macro en lançant lenregistrement 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 à lenregistrement, on donne un nom à la macro et lon peut ensuite en demander lexécution.


Télécharger ppt "Structure de données et algorithmique de base Cours de PCEM 2 F. KOHLER"

Présentations similaires


Annonces Google