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

Algorithmique Mme Khadija BOUZAACHANE Année universitaire : 2009-2010.

Présentations similaires


Présentation au sujet: "Algorithmique Mme Khadija BOUZAACHANE Année universitaire : 2009-2010."— Transcription de la présentation:

1 Algorithmique Mme Khadija BOUZAACHANE Année universitaire :

2 INTRODUCTION 05/05/20142

3 Introduction Avez vous déjà déchiffré un mode demploi pour faire fonctionner un DVD, ou bien la télévision ou un répondeur téléphonique? Si oui, sans le savoir, vous avez déjà exécuté des algorithmes. Avez-vous déjà indiqué un chemin à un touriste égaré ? Un algorithme, cest une suite dinstructions, qui une fois exécutée correctement, conduit à un résultat donné. Si lalgorithme est juste, le résultat est le résultat voulu, et le touriste se retrouve là où il voulait aller 05/05/20143

4 Introduction Quest-ce quun algorithme? Est une suite dinstructions écrite en langage dalgorithme qui résout un problème et qui peuvent être programmé par nimporte quel langage. Une suite d'instructions serait : 1.Se lever 2.Prendre sa douche 3.Prendre le petit déjeuner 4.S'habiller 05/05/20144

5 Introduction Un algorithme doit donc contenir uniquement des instructions compréhensibles par celui qui devra lexécuter. 05/05/20145

6 Définition Algorithmique: Définition1: désigne l'ensemble des règles et des techniques qui sont impliquées dans la définition et la conception des algorithmes. Définition2: l'algorithmique c'est de savoir comment lire, écrire, évaluer et optimiser des algorithmes. 05/05/20146

7 Définition Algorithme: Définition1: Un algorithme décrit une méthode de résolution de problème programmable sur machine. Définition2 : Un algorithme est un ensemble d'opérations de calcul élémentaires, organisé selon des règles précises dans le but de résoudre un problème donné. Pour chaque donnée du problème, l'algorithme retourne une réponse après un nombre fini d'opérations(+, -,/,,... ). 05/05/20147

8 Définition Quest-ce quun programme? Un programme est donc une suite d'instructions exécutées par la machine. La machine a son propre langage appelé langage machine. Un programme est lexpression dun algorithme par une machine donnée dans un langage de programmation donné en utilisant le répertoire dactions(opérations, instructions) et les règles de composition propres à cette machine et à ce langage donnés. Un programme est un assemblage et un enchaînement dinstructions élémentaires écrit dans un langage de programmation, et exécuté par un ordinateur afin de traiter les données dun problème et renvoyer un ou plusieurs résultats. 05/05/20148

9 Méthodologie Pour résoudre un problème, il est vivement conseillé de réfléchir d'abord à l'algorithme avant de programmer. Exemple de construction dalgorithme: Exemple: calcul des racines de léquation du second ordre ax 2 +bx+c=0 1 ère version: Lire a, b, c Calculer les racines de léquation Imprimer les racines 05/05/20149

10 Méthodologie La résolution dun problème est caractérisé par 4 étapes : Comprendre la nature du problème posé Préciser les données fournies (Entrées) Préciser les résultats que lon désire obtenir (Sorties) Déterminer le processus de transformation des données en résultats. 05/05/201410

11 Méthodologie Comment on programme? 05/05/ On utilise un pseudo-langage, comportant toutes les structures de base d'un langage de programmation On traduit notre "pseudo" en langage évolué en fonction des possibilités de ce langage Ce langage sera ensuite traduit en langage machine

12 Méthodologie Un programme est donc une suite d'instructions exécutées par la machine. Ces instructions peuvent: soit s'enchaîner les unes après les autres, on parle alors de séquence d'instructions; ou bien s'exécuter dans certains cas et pas dans d'autres, on parle alors de structure alternative; ou se répéter plusieurs fois, on parle alors de structure répétitive. 05/05/201412

13 La séquence dinstructions Une instruction est une action que l'ordinateur est capable d'exécuter. Une séquence d'instruction serait : Se lever Prendre sa douche Prendre le petit déjeuner S'habiller 05/05/201413

14 Structures Alternatives Une alternative s'exprime par si … Sinon… Si fin de semaine ou congé Mettre sa tenue de sport Faire son jogging Sinon Mettre sa tenue de travail Aller travailler Fin Si 05/05/201414

15 Structure répétitive La routine journalière dun employé est : Ouvrir guichet Appeler premier client TantQue " client dans file d'attente " et " pas fin de journée " Traiter client Appeler client suivant FinTantQue Les deux actions "Traiter client" et "Appeler client suivant" vont se répéter tant que la condition située derrière l'instruction "Tant que" est vérifiée. 05/05/201415

16 Pourquoi faire des algorithmes la rédaction des algorithmes permet plusieurs choses : d'être compréhensible par tout informaticien même s'il ne connait pas le langage du programme de vérifier la complexité du programme et donc de l'optimiser de faire ressortir de manière compréhensible les cas d'utilisations 05/05/201416

17 NOTIONS DE BASE Comment faire des algorithmes? Les variables Le type de la variable Les instructions Syntaxe général de lalgorithme Les structures de contrôle Structure répétitive Les tableaux Organigramme Procédures & Fonctions Récursivité 05/05/201417

18 Comment faire des algorithmes les algorithmes sont rédigés dans un langage à mi-chemin entre le français et les langages de programmation, dit pseudo-code. En programmation, le pseudo-code est une façon de décrire un algorithme sans référence à un langage de programmation particulier. L'écriture en pseudo-code permet souvent de bien prendre toute la mesure de la difficulté de l'implémentation de l'algorithme, et de développer une démarche structurée dans la construction de celui-ci. 05/05/201418

19 Comment faire des algorithmes(suite) La raison dêtre dun algorithme est de résoudre un problème. La plus grande attention doit être portée à la compréhension du problème, faute de quoi lalgorithme na aucune chance dêtre correct. Le langage utilisé pour la définition dun problème est un langage scientifique utilisant pour des raisons de simplicité une langue naturelle(français par exemple). 05/05/201419

20 Les variables Une variable est un objet dont la valeur nest pas invariable Une variable peut être représentée par une case mémoire, qui contient la valeur d'une donnée. Chaque variable possède un nom unique appelé identificateur par lequel on peut accéder à son contenu. Par exemple, on peut avoir en mémoire une variable prix et une variable quantité. 05/05/201420

21 Les variables(suite) Une variable possède 3 attributs : Une valeur Un nom(invariable) qui sert à la désigner Un type(invariable) qui décrit lutilisation possible de la variable Une valeur Une valeur la valeur d'une variable(contenu) peut varier au cours du programme. L'ancienne valeur est tout simplement écrasée et remplacée par la nouvelle. La valeur peut être de différents types et de tailles différentes. 05/05/201421

22 Les variables(suite) Nom de la variable Nom de la variable Cest une suite de lettres et de chiffres commençant nécessairement par une lettre Le nombre maximal de caractères imposé varie selon les langages La lisibilité des programmes dépend de lhabilité à choisir des noms représentatifs Le nom de la variable doit être le plus représentatif possible du contenu de celle-ci pour faciliter la lecture de l'algorithme. En revanche, il ne doit pas non plus être trop long pour ne pas nuire à la lisibilité de l'ensemble. 05/05/201422

23 Les variables(suite) Nom de la variable Nom de la variable Exemple Je veux mémoriser l'âge d'une personne dans une variable, j'ai le choix de l'appeler : a âge age ageDeLaPersonneDontJeSuisEntrainDeParler Remarque : Le premier cas est trop court, si je n'ai pas lu la description plus haut, je suis totalement perdu. Le deuxième cas ne convient pas non plus car on évitera tout caractère accentué dans les noms de variable. Le dernier cas est certes très précis, mais tellement long qu'il en devient illisible. Bref, le troisième cas semble le plus approprié 05/05/201423

24 Les variables(suite) Type de la variable Type de la variable Le type de la variable définit : La nature des informations qui seront représentées dans la variable Les limitations concernant les valeurs à représenter Les opérations réalisables avec les variables correspondantes. Propriété : Une variable doit être déclaré avant son utilisation 05/05/201424

25 Les variables(suite) Type de la variable Type de la variable Entier : il s'agit des variables destinées à contenir un nombre entier positif ou négatif. Réel : il s'agit des variables numériques qui ne sont pas des entiers, c'est à dire qui comportent des décimales Caractère : Les variables de type caractère contiennent des caractères alphabétiques ou numériques seul(ex: c) Booléen : Les variables qui prennent les valeurs (vrai ou faux) ou les valeurs (oui ou non). 05/05/201425

26 Les variables(suite) Type de la variable Type de la variable Chaîne de caractères : représentant un texte, contenant un ou plusieurs caractères(ex: Bonjour tout le monde) Tous les traducteurs de langages prennent en compte cette notion de type par des instructions de déclaration de type Exemple: Variable Moyenne : réel;(Moyenne en numérique) Variable NbreEtudiant : entier; (NbreEtudiant en numérique) Variable c1, lettre, z : caractère; 05/05/201426

27 Les variables(suite) Type de la variable: Constante Type de la variable: Constante Définitions : une constante est un objet de valeur invariable. Elle est la réalisation dune valeur de type particulier. Exemple: Exemple: Constante Zero=0: entier; ( Max:entier) 100; 05/05/201427

28 Les variables(suite) Les opérateurs de lalgorithmique 05/05/ TypeExempleOpération possiblessymbole Réel-15.69, 0.49Addition Soustraction Multiplication Division Exposant Pourcentage comparaisons + - * / ^ %,>=,=,… Entier-10, 4, 768Addition Soustraction Multiplication Division Modulo Exposant Pourcentage + - * DIV MOD ^ %

29 Les variables(suite) Les opérateurs de lalgorithmique 05/05/ TypeExempleOpération possiblessymbole caractèreB, \ncomparaisons,>=,=,… BooléenVrai, FauxComparaison Négation Conjonction disjonction,>=,=,… NON ET OU

30 Les instructions Linstruction daffectation Linstruction daffectation Linstruction daffectation permet de manipuler les valeurs des variables. Son rôle consiste à placer une valeur dans une variable. X=YX:=Y X Y Notation X=Y ou bien X:=Y ou bien X Y Exemple : 1.affecter une valeur à une variable X:=5, On charge la variable X avec la valeur 5 2.Affecter le contenu dune variable à une autre variable X:=Y, On charge X avec le contenu de Y Y représente : Constante ou Nom dune variable ou Expression logique X et Y doivent être de même type 05/05/201430

31 Les instructions(suite) Linstruction daffectation Linstruction daffectation 3.Affecter une formule à une variable X:= X + 2 * Y On charge la variable X par la valeur du résultat de la formule et on écrase sa valeur initiale X Y 05/05/

32 Les instructions(suite) Les instructions dEntrée/Sortie Les instructions dEntrée/Sortie Un programme est amené à : Prendre des données par le périphérique(clavier) : rôle de linstruction de lecture Communiquer des résultats par lintermédiaire du périphérique(écran) : rôle de linstruction de lécriture Instruction de lecture Rôle : fournir des données au programme Syntaxe Syntaxe : Lire(variable) Exemple Exemple : Lire( X) on saisie une valeur pour la stocker après dans la variable X Instruction décriture Rôle : fournir des résultats directement compréhensibles Syntaxe Syntaxe : Ecrire( variable), Ecrire(chaine de caractères) Exemple Exemple : Ecrire(X), Ecrire(Bonjour) 05/05/201432

33 Syntaxe général de lalgorithme Le moule dun algorithme Le moule dun algorithme Un algorithme comportera : Une partie déclaration Une partie encadrée par début fin où sont décrites les actions Algorithme Nom_de_l_algorithme : Déclaration; Debut Actions; Fin 05/05/201433

34 Syntaxe général de lalgorithme(suite) Le moule dun algorithme Le moule dun algorithme Dans la partie déclarations, nous trouvons : Déclaration de constantes déclaration de variables déclaration de fonctions Dans la partie actions, nous trouvons : suite d'instructions Structure alternative Structure répétitive 05/05/201434

35 Syntaxe général de lalgorithme(suite) Exemple : Exemple : Algorithme toto /* les constantes: il est obligatoire de leur donner une valeur dès leur déclaration */ CONST titi 10 : entier tutu "bonjour!" : chaîne // les variables au sens strict VAR riri, fifi : réels loulou : chaîne Debut ; …. ; Fin 05/05/ déclarations Corps de lalgorithme

36 Des Questions ? 05/05/201436

37 Exercices : Instructions Exercice 1: Écrire un algorithme qui permet de saisir des valeurs pour A et B, faire la somme et afficher le résultat? Exercice 2: Écrire un algorithme qui permet de calculer et afficher la surface dun cercle? 05/05/201437

38 Exercices : Instructions(suite) Exercice 3 Écrire un algorithme qui permet de calculer et afficher le salaire brut dun ouvrier connaissant le nombre dheure et le tarif dhoraire? Exercice 4 Écrire un algorithme qui fait la conversion dune somme dargent donnée en DH, en une somme dargent en Euro? 05/05/201438

39 Les structures de contrôles Le branchement conditionnel Le branchement conditionnel Le branchement conditionnel Aide à Structurer un ensemble dinstructions 05/05/ Syntaxe 1 : Si alors … Fsi Exemple : Si (a

40 Les structures de contrôles(suite) Le branchement conditionnel Le branchement conditionnel 05/05/ Syntaxe Syntaxe : Si alors … Sinon … Fsi Exemple : Si (a

41 Les structures de contrôles(suite) Quest ce quune condition ? Quest ce quune condition ? une condition est composée de trois éléments : une valeur, un opérateur de comparaison, une autre valeur Les valeurs peuvent être a priori de nimporte quel type (numériques, caractères…). Mais si lon veut que la comparaison ait un sens, il faut que les deux valeurs de la comparaison soient du même type ! Les opérateurs de comparaison sont : = égal à, <> différent de strictement plus grand que, = plus grand ou égal à… 05/05/201441

42 Les structures de contrôles(suite) Exemple: t 6 FAUX 2< 3 VRAI Exercice: Écrire un algorithme qui demande un nombre à lutilisateur, et linforme ensuite si ce nombre est positif ou négatif (on laisse de côté le cas où le nombre vaut zéro). 05/05/201442

43 Les structures de contrôles(suite) Conditions composées: Conditions composées: Certains problèmes exigent parfois de formuler des conditions composées liées entre eux par les opérateurs logiques suivants : ET, OU, NON, et XOR. Condition1 ET Condition2 : VRAI, si Condition1 est VRAI et Condition2 est VRAI. Condition1 OU Condition2 : VRAI, si Condition1 est VRAI ou bien Condition2 est VRAI. Le XOR (ou OU exclusif) Condition1 XOR Condition2 : VRAI, si Condition1 est VRAI, ou bien Condition2 est VRAI. Mais si toutes les deux sont fausses, ou que toutes les deux sont VRAI, alors le résultat global est considéré comme FAUX. 05/05/201443

44 Les structures de contrôles(suite) le NON inverse une condition : NON(Condition1) est VRAI si Condition1 est FAUX, et il sera FAUX si Condition1 est VRAI. tables de vérité (C1 et C2 représentent deux conditions, et on envisage à chaque fois les quatre cas possibles) : 05/05/ C1 et C2C2 VraiC2 Faux C1 VraiVraiFaux C1 FauxFaux C1 ou C2C2 VraiC2 Faux C1 VraiVrai C1 FauxVraiFaux

45 Les structures de contrôles(suite) Exercice : Écrire un algorithme qui demande deux nombres à lutilisateur et linforme ensuite si leur produit est négatif ou positif (on laisse de côté le cas où le produit est nul). Attention toutefois : on ne doit pas calculer le produit des deux nombres. 05/05/ C1 xor C2C2 VraiC2 Faux C1 VraiFauxVrai C1 FauxVraiFaux Non C1 C1 VraiFaux C1 FauxVrai

46 Exercices : structures de contrôles Exercice 1: On désire comparer deux valeurs,Écrire un algorithme qui affiche la plus grande des deux? Exercice 2: Écrire un algorithme qui affiche le salaire brut dun ouvrier sachant que les heures supplémentaires de 172 heures sont payées à 50% de tarifs dhoraire en plus? 05/05/201446

47 Exercices : structures de contrôles Exercice 4: Calculer le montant de la facture dun client ayant commandé une quantité dun produit avec un prix unitaire hors taxe Le taux de T.V.A est : 20% Les frais de transport sont 0.8 DH de Km, Le client est disposé du frais de transport si le montant est supérieur 4500 DH Exercice 5: Une bibliothèque fait des réductions sur lachat des livres : 25% pour les étudiants. 15% pour les enseignants Écrire un algorithme qui calcule et affiche le prix à payer selon le type du client? 05/05/201447

48 Exercices : structures de contrôles Exercice 6: Écrire un algorithme qui calcule et affiche le maximum de trois nombre A,B et C ? Exercice 7: Écrire un algorithme qui permet de résoudre léquation du premier degré : aX+b=0? Exercice 8: Écrire un algorithme qui permet de résoudre une équation de second degré : aX²+bX+c=0 ? 05/05/201448

49 Exercices : structures de contrôles Exercice 9: Écrire un algorithme qui lie trois nombre A,B et C, puis il détermine si lun est égal à la somme de 2 autres sinon il affiche un message « pas de solution »? 05/05/201449

50 Les structures de contrôles(suite) Le choix multiple Le choix multiple Variable i:entier; Lire(i); Selon que i=1 : i=1 : faire i=2 : Ou que i=2 : faire i=3 : faire Ou que i=3 : faire (mauvais choix) Autrement écrire(mauvais choix) Fselonque 05/05/201450

51 Exercices : structures de contrôles Exercice 10: Écrire un algorithme qui à partir dun nombre compris entre 1 et 7 affiche le jour correspendant? 05/05/201451

52 Les structures de contrôles(suite) Tests imbriqués: Tests imbriqués: un algorithme doit donner létat de leau selon sa température il doit choisir entre trois réponses possibles (solide, liquide ou vapeur). Variable Temp : Entier Début Ecrire (Entrez la température de leau :) Lire (Temp) Si Temp 0 Et Temp 100 )Alors Ecrire Cest de la vapeur Finsi Fin 05/05/201452

53 Les structures de contrôles(suite) Tests imbriqués: Tests imbriqués: deuxième solution qui imbrique le test Variable Temp : Entier Début Ecrire (Entrez la température de leau :) Lire (Temp) Si Temp =< 0 Alors Ecrire (Cest de la glace) Sinon Si Temp < 100 Alors Ecrire( Cest du liquide) Sinon Ecrire( Cest de la vapeur) Finsi Finsi Fin 05/05/201453

54 Les structures de contrôles(suite) Exercice: Écrire un algorithme qui demande lâge dun enfant à lutilisateur. Ensuite, il linforme de sa catégorie : - « Poussin » de 6 à 7 ans - « Pupille » de 8 à 9 ans - « Minime » de 10 à 11 ans - « Cadet » après 12 ans Peut-on concevoir plusieurs algorithmes équivalents menant à ce résultat ? 05/05/201454

55 Les structures de contrôles(suite) Variables Booléennes: Variables Booléennes: Il existe des variables (les booléennes) susceptibles de stocker les valeurs VRAI ou FAUX. On peut donc entrer des conditions dans ces variables, et tester ensuite la valeur de ces variables. Exemple: Exemple: Variable Temp : Entier Variables A, B : Booléen Début Ecrire (Entrez la température de leau :) Lire (Temp) A Temp <= 0 B Temp < /05/201455

56 Les structures de contrôles(suite) Si A Alors Ecrire( Cest de la glace) Sinon Si B Alors Ecrire Cest du liquide Sinon Ecrire Cest de la vapeur Finsi Finsi Fin Dans une condition composée employant à la fois lopérateur ET et lopérateur OU, la présence de parenthèses possède une influence sur le résultat. 05/05/201456

57 Exercice: Les structures de contrôles Ecrivez un algorithme qui lira au clavier lheure et les minutes, et il affichera lheure quil sera une minute plus tard. Par exemple, si l'utilisateur tape 21 puis 32, l'algorithme doit répondre : "Dans une minute, il sera 21 heure(s) 33". NB : on suppose que l'utilisateur entre une heure valide. Pas besoin donc de la vérifier. 05/05/201457

58 Structure répétitive A quoi cela sert-il donc ? Prenons le cas dune saisie au clavier (une lecture), où par exemple, le programme pose une question à laquelle lutilisateur doit répondre par O (Oui) ou N (Non). Mais tôt ou tard, lutilisateur, risque de taper autre chose que la réponse attendue. Alors, dans tout lalgorithme on met en place ce quon appelle un contrôle de saisie, afin de vérifier que les données entrées au clavier correspondent bien à celles attendues par lalgorithme. 05/05/201458

59 Structure répétitive(suite) A quoi cela sert-il donc ? On pourrait essayer avec une structure de contrôle SI. Variable Rep : Caractère Début Ecrire (Voulez vous un café ? (O/N)) Lire (Rep) Si Rep <> O ET Rep <> N Alors Ecrire( Saisie erronnée. Recommencez) Lire (Rep) FinSi Fin 05/05/201459

60 Structure répétitive(suite) A quoi cela sert-il donc ? Si lutilisateur ne se trompe quune seule fois, et entre une valeur correcte à la deuxième demande, cest parfait. Par contre, sil commet une deuxième erreur, il faudrait rajouter un SI. Et ainsi de suite, on peut rajouter des centaines de SI, et écrire un algorithme lourd. La solution consistant à aligner des SI nest pas correcte dans ce cas. La seule issue est dutiliser une structure de boucle. 05/05/201460

61 Structure répétitive(suite) A quoi cela sert-il donc ? Qui ce présente ainsi: TantQue booléen Faire … Instructions … FinTantQue Le principe est simple : lalgorithme arrive sur la ligne du TantQue. Il examine alors la valeur du booléen (qui, je le rappelle, peut être une variable booléenne ou, plus fréquemment, une condition). Si cette valeur est VRAI, lalgorithme exécute les instructions qui suivent, jusquà ce quil rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue, procède au même examen, et ainsi de suite. Le cycle ne sarrête que lorsque le booléen prend la valeur FAUX. 05/05/201461

62 Structure répétitive(suite) A quoi cela sert-il donc ? Illustration avec notre problème de contrôle de saisie. Une première approximation de la solution consiste à écrire : Variable Rep :Caractère Début Ecrire (Voulez vous un café ? (O/N)) lire(Rep) TantQue Rep <> O ET Rep <> N Faire Lire (Rep) FinTantQue Fin 05/05/201462

63 Structure répétitive(suite) A quoi cela sert-il donc ? Une deuxième approximation de la solution, avec affectation, consiste à écrire : Variable Rep :Caractère Début Rep X Ecrire (Voulez vous un café ? (O/N)) TantQue Rep <> O ET Rep <> N Faire Lire (Rep) FinTantQue Fin Cette manière de procéder est à connaître, car elle est employée très fréquemment. 05/05/201463

64 Structure répétitive(suite) Structure répétitive, dite aussi itérative ou boucle permet, de répéter une ou plusieurs actions un certain nombre de fois. On identifie en règle générale 3 types de répétitive : TantQue Répéter Jusqu'à Pour 05/05/201464

65 Structure répétitive(suite) Tant que Tant que Les répétitives où la condition darrêt est placée au début. : Syntaxe : Tant que faire Ftantque TantQue condition actions FTantQue Ce qui signifie : tant que la condition est vraie, on exécute les actions. 05/05/201465

66 Des Questions ? 05/05/201466

67 Exercices 1. Ecrire un algorithme qui demande à lutilisateur un nombre compris entre 1 et 3 jusquà ce que la réponse convienne. 2. Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusquà ce que la réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à Écrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 à /05/201467

68 Structure répétitive(suite) Boucler en comptant, ou compter en bouclant Boucler en comptant, ou compter en bouclant Il arrive très souvent quon ait besoin deffectuer un nombre déterminé de passages. Or, a priori, notre structure TantQue ne sait pas à lavance combien de tours de boucle elle va effectuer: Cest pourquoi une autre structure de boucle est à notre disposition : la structure : Pour 05/05/201468

69 Structure répétitive(suite) Variable Num1 : Entier Début Num1 0 TantQue Num1 < 15 Faire Num1 = Num1 + 1 Ecrire (Passage numéro :, Num1) FinTantQue Fin Variable Num1 : Entier Début Pour Num1 = 1 à 15 Faire Ecrire( Passage numéro :, Num1) Num1 Suivant Fin 05/05/ la structure :Pour est un cas particulier de TantQue : celui où le programmeur peut dénombrer à lavance le nombre de tours de boucles nécessaires.

70 Structure répétitive Pour Les répétitives où le nombre ditération est fixée une fois pour toute. Syntaxe : Pour Compteur = Initial à Final Pas ValeurDuPas … Instructions … Compteur suivant (nest pas indispensable) FPour 05/05/201470

71 Structure répétitive(suite) la progression du compteur est laissée à votre libre disposition. Dans la plupart des cas, on a besoin dune variable qui augmente de 1 à chaque tour de boucle. On ne précise alors rien à linstruction « Pour » ; celle-ci, par défaut, comprend quil va falloir procéder à cette incrémentation de 1 à chaque passage, en commençant par la première valeur et en terminant par la deuxième. Si vous souhaitez une progression plus spéciale, de 2 en 2, ou de 3 en 3, ou en arrière, de –1 en –1, ou de –10 en –10, il faut préciser à votre instruction « Pour » en lui rajoutant le mot « Pas » et la valeur de ce pas. Quand on met un pas négatif dans une boucle, la valeur initiale du compteur doit être supérieure à sa valeur finale si lon veut que la boucle tourne ! 05/05/201471

72 Structure répétitive(suite) Les structures TantQue sont employées dans les situations où lon doit procéder à un traitement sur les éléments dun ensemble dont on ne connaît pas davance la quantité, comme par exemple : le contrôle dune saisie. la gestion des tours dun jeu (tant que la partie nest pas finie, on recommence). Les structures Pour sont employées dans les situations où lon doit procéder à un traitement sur les éléments dun ensemble dont on connaît davance la quantité. 05/05/201472

73 Structure répétitive(suite) Des boucles imbriquées: Des boucles imbriquées: De même que quune structure SI … ALORS peut contenir dautres structures SI … ALORS, une boucle peut tout à fait contenir dautres boucles. Variables Num1, Num2 : Entier Pour Num1 1 à 15 Ecrire (Il est passé par ici) Pour Num2 1 à 6 Ecrire (Il repassera par là) Fpour FPour 05/05/201473

74 Structure répétitive(suite) Répéter..Jusquà : Répéter..Jusquà : la condition darrêt est placée à la fin Syntaxe : Répéter Jusquà Frépéter Exemple : Num1:=1 Répéter Ecrire (Passage numéro :, Num1) Num1 = Num1 + 1 Jusquà (Num1 >= 15 ) 05/05/201474

75 Des Questions ? 05/05/201475

76 Exercices 1. Écrire un algorithme qui saisie N entier et affiche leur somme et leur moyenne ? 2. Écrire un algorithme pour calculer et afficher la somme et la moyenne de100 premiers nombres entiers ? 3. Écrire un algorithme qui permet de calculer S1, S2,S3,S4,S5,S6 tel que: S1 = 1 + ½ + 1/3 + ¼ +……..1/N S2 = 1 + ½ + ¼ + 1/6 +……..1/N S3 = 1 + 1/3 + 1/5 +……..1/N S4 = 1 - ½ + ¼ - 1/6……..1/N S5 = 1 + x+x²……..x N S6 = 1 + x+x²/2…….. x N /N 05/05/201476

77 Exercices 4. Ecrire un algorithme qui vérifie si un nombre est premier où pas ? 5. écrire un algorithme qui saisit deux entiers, calcule et affiche la somme de ces 2 entiers (on arrête la saisie avec la valeur 0) ? 6. Ecrire un algorithme qui permet de calculer le factoriel dun nombre positif ? 05/05/201477

78 Devoir N° 1 Une salle de cinéma désire automatiser la gestion de la billetterie pour chaque client qui se présente, on calcule le prix du billet en fonction des données suivantes: NF : Numéro du film Age : Age de spectateur Le prix normal de la facture est de 30 DH, cependant des remises peuvent être accorder en fonction du critères suivants : NF=2 ou Age < 15 remise de 50% NF=2 et Age >75 remise 25% NF=3 et Age < 15 entrée refusée Écrire un algorithme qui permet de calculer et décider le prix à payer pou chaque client qui se présente. on arrête la saisie par "non" 05/05/201478

79 Devoir N°2 Une entreprise désire automatisée la gestion de paie de son personnel. Pour chaque employé, on doit introduire le nom, le prénom, le salaire de base(SB), le nombre d'enfant et l'ancienneté(ANC). Un prix de 100 DH est accordé pour chaque enfant. Si ancienneté<=10 ans et SB < 1000 DH une prime de 50% du SB Si l'ancienneté est 10 ans 1000 DH prime de 70% du SB Calculer le salaire brute (SB+ le prime + les enfants) et afficher le nom, prénom, l'ancienneté, SB, prime et le salaire brute 05/05/201479

80 Les tableaux Supposons que nous avons besoin de calculer la moyenne de 12 notes dun étudiant. la seule solution dont nous disposons consiste à déclarer douze variables, appelées par exemple: X1, X2, X3,…X12. La première étape est de lire les valeurs de toute ces variables une par une, ce qui nous fait douze instructions de lecture et après calculer la moyenne par linstruction: Moy (X1+X2+X3+X4+X5+NX6+X7+X8+X9+X10+X11+X12)/12 05/05/201480

81 Les tableaux(suite) Cest pourquoi lalgorithmique (la programmation) nous permet de rassembler toutes ces variables en une seule, au sein de laquelle chaque valeur sera désignée par un numéro. 05/05/ Un ensemble de valeurs portant le même nom de variable et repérées par un nombre, sappelle un tableau, ou encore une variable indicée. Le nombre qui, au sein dun tableau, sert à repérer chaque valeur sappelle lindice. Chaque fois que lon doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de lindice de lélément, entre parenthèses. Ex: Nom_tableau(5)

82 Les tableaux(suite) Notation et utilisation algorithmique Notation et utilisation algorithmique Dans notre exemple, nous créerons donc un tableau appelé Note. Tableau Note(12) : Entier On peut créer des tableaux contenant des variables de tous types : tableaux de numériques, tableaux de caractères, tableaux de booléens, tableaux de tout ce qui existe dans un langage donné comme type de variables. Lénorme avantage des tableaux, cest quon va pouvoir les traiter en faisant des boucles. 05/05/201482

83 Les tableaux(suite) Notation et utilisation algorithmique Notation et utilisation algorithmique Tableau Note(12) : Entier Variables i, Som : Entier Variable Moy : Réel Pour i 0 à 11 Ecrire (Entrez la note n°, i) Lire( Note(i)) FPour Som 0 Pour i 0 à 11 Som = Som + Note(i) Fpour Moy = Som / 12 05/05/201483

84 Les tableaux(suite) Remarque générale : lindice qui sert à désigner les éléments dun tableau peut être exprimé directement comme un nombre en clair, mais il peut être aussi une variable, ou une expression calculée. La valeur dun indice doit toujours : être égale au moins à 0 (dans quelques rares langages, le premier élément dun tableau porte lindice 1). Mais nous avons choisi ici de commencer la numérotation des indices à zéro, comme cest le cas en langage C. être un nombre entier. Quel que soit le langage. être inférieure ou égale au nombre déléments du tableau (moins 1, si lon commence la numérotation à zéro). 05/05/201484

85 Exercices Écrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant toutes à zéro. Écrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de lalphabet latin. On saisit des entiers et on les range dans un tableau (maximum 50) Écrire un programme qui affiche le maximum, le minimum et la valeur moyenne de ces nombres. 05/05/201485

86 Exercices Écrivez un algorithme permettant à lutilisateur de saisir un nombre quelconque de valeurs, qui devront être stockées dans un tableau. Lutilisateur doit donc commencer par entrer le nombre de valeurs quil compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le programme affichera le nombre de valeurs négatives et le nombre de valeurs positives. 05/05/201486

87 Exercices Que produit lalgorithme suivant ? Tableau Nb(6) : Entier Variable i en Entier Début Pour i 0 à 5 Nb(i) i * i FPour Pour i 0 à 5 Écrire Nb(i) FPour Fin Peut-on simplifier cet algorithme avec le même résultat ? 05/05/201487

88 Exercices Que produit lalgorithme suivant ? Tableau N(7) en Entier Variables i, k en Entier Début N(0) 1 Pour k 1 à 6 N(k) N(k-1) + 2 FPour Pour i 0 à 6 Ecrire N(i) FPour Fin Peut-on simplifier cet algorithme avec le même résultat ? 05/05/201488

89 Organigramme Définition Définition un organigramme est la représentation schématique qui permet de faire apparaître dune façon claire et logique lenchaînement des différentes opérations. Les symboles utilisés pour construire un organigramme Les symboles utilisés pour construire un organigramme 05/05/ Symbole général traitement Symbole début-fin-interruption Symbole embranchement(choix) Symbole commentaire Les lignes de liaison

90 Organigramme 05/05/ Exemple : Condition Instruction 1 Instruction 2 suite

91 Organigramme 05/05/ Le branchement conditionnel Exemple : Le branchement conditionnel instruction1 condition instruction2

92 Organigramme 05/05/ Exemple : Structure répétitive instruction condition V F

93 Organigramme 05/05/ Exemple : Structure répétitive instruction condition F V

94 Notions de sous-algorithme Définition Un sous-algorithme est un élément dalgorithme nommé et éventuellement paramétré que lon définit afin de pouvoir ensuite lappeler par son nom en affectant, sil y a lieu, des valeurs aux paramètres. Intérêt : Intérêt : Réaliser un découpage dune tâche en sous-tâche. Effectuer une seule description dune tâche commune Concevoir une application de manière descendante en entrant de plus en plus dans les détails Structure : Structure : un sous-algorithme est composé Dune tête Dune tête nom sous-algorithme, paramètres(arguments) avec leur type Dun corps Dun corps des déclarations dobjets locaux aux sous- algorithme, instructions à exécuter 05/05/201494

95 Notions de sous-algorithme Nom Sous-algorithme Nom(liste des paramètres) déclarations des variables locales Début Corps du sous-algorihtme Fin Nom Algorithme Nom Déclaration des variables Début Instructions Appel du sous-algorithme Instructions Fin 05/05/201495

96 Procédures & Fonctions Procédures Procédures Syntaxe Procédure nom_procédure(var:type;var:type) Variable interne Début procédure Instructions Finprocédure 05/05/201496

97 Procédures & Fonctions Fonctions Fonctions Syntaxe Fonction nom_fonction(var:type;var:type):type Variable interne; Début fonction Instructions; Retourner variable; Fin fonction 05/05/201497

98 Procédure & Fonction Rep1,Rep2 : caractère Fonction RepOuiNon() : caractères variable Rep "" TantQue Rep <> "Oui" et Rep <> "Non" Ecrire( "Tapez Oui ou Non") Lire (Rep) FinTantQue Renvoyer Rep Fin Début Ecrire( "Etes-vous marié ?") Rep1 RepOuiNon() Ecrire( "Avez-vous des enfants ?" ) Rep2 RepOuiNon() Fin 05/05/201498

99 EXERCICES 05/05/201499

100 Exercices EX0 Ecrire un algorithme qui lit une valeur qlq x et qui détermine la valeur de lexpression : 1+x+x 2 +…+x 20 EX1 Ecrire une procédure qui lit N éléments en paramètre et retourne la somme de ces éléments dans une variable somme. EX2 Ecrire une fonction entière statistique qui lit 100 notes et retourne le nombre de notes comprises entre 10 et 20 compris 05/05/

101 Exercices EX3 Ecrire un algorithme qui permet de faire les traitements suivants : Soit un tableau T de N entiers 1.Remplir les N cases du tableau 2.Compter le nombre des éléments non nuls 3.Trouver le plus grand éléments du tableau et le mettre dans la variable MAX 4.Rechercher la place du plus petit élément et le mettre dans la variable position. 05/05/

102 Exercices EX4 Ecrire un algorithme qui cherche dans un tableau non trié si un nombre x existe au moins une fois. EX5 Ecrire un algorithme qui cherche dans un tableau trié si un nombre x existe au moins une fois. EX6 Ecrire un algorithme qui permet de lire les âges de 25 stagiaires(ils ont au moins 23ans et au plus 30ans) et fournit le nombre de stagiaires de chacun des âges. 05/05/

103 Exercices EX7 Le tableau factures contient N constantes de factures, le tableau PAYES de N booléens indique si chacune des factures a été réglées ou pas, on veut recopier séquentiellement dans un 3 ème tableau RESTESAPAYES, les sommes restant dues. 05/05/

104 Récursivité Un algorithme est dit récursif lorsquil intervient dans sa description, cest-à-dire lorsquil est défini en fonction de lui-même. Exemple: x 0 = 1, x n = x*x n-1 si n1 Fonction fact(x : entier, n : entier):entier Variable Résultat : entier; Début Si(n=0) alors Résultat =1; Sinon Résultat = x*fact(x,n-1); Fsi Renvoyer Résultat; Fin 05/05/

105 MÉTHODES DE TRI ÉLÉMENTAIRES Définition Tri par sélection Tri par bulles Tri par insertion 05/05/

106 Définition « trier » signifie « répartir en plusieurs classes selon certains critères ». De manière plus restrictive, le terme de « tri » en algorithmique est très souvent attaché au processus de classement d'un ensemble d'éléments dans un ordre donné. Par exemple, trier N entiers dans l'ordre croissant, ou N noms dans l'ordre alphabétique. Tout ensemble muni d'un ordre total peut fournir une suite d'éléments à trier. 05/05/

107 Tri par sélection Tri par sélection est lun des algorithmes de tri les plus simple, elle procède à la sélection successive de lélément minimal parmi ceux restant. Il fonctionne de la manière suivante : On commence par rechercher lélément de plus petite valeur du tableau pour léchanger avec celui en première position. On recherche ensuite lélément ayant la deuxième plus petite valeur pour léchanger avec celui en deuxième position, et lon continue ainsi jusquà ce que le tableau soit entièrement trié. 05/05/

108 Tri par sélection(suite) Le sous-algorithme suivant est une implantation de ce processus. Pour tout i entre 1 et N- 1, on échange T[i] avec lélément de valeur minimal parmi T[i]….T[N] : TriSelection Pocédure TriSelection(T: 1 …N: entier; N: entier) Var i, j, min, q:entier; Début pour i de 1 jusquà N faire min=i; pour j de i+ 1 jusquà N faire Si(T[j]

109 Tri par sélection(suite) Il est facile de compter le nombre d'opérations. Quel que soit l'ordre du tableau initial, le nombre de comparaisons reste le même, ainsi que le nombre d'échanges. À chaque itération, on considère l'élément tab[i] et on le compare successivement à tab[i+1],..., tab[N]. On fait donc N-i comparaisons. Le nombre total de comparaisons est donc de : et il y a (N-1) échanges. En ce qui concerne sa complexité, on dit que le tri par sélection est en O (N 2 ), à la fois dans le meilleur des cas, en moyenne et dans le pire des cas, c'est-à-dire que son temps d'exécution est de l'ordre du carré du nombre d'éléments à trier. 05/05/

110 Tri par bulle Le « tri bulle » est une variante du tri par sélection. Il consiste à parcourir le tableau tab en permutant toute paire d'éléments consécutifs (tab[k],tab[k+1]) non ordonnés - ce qui est un échange et nécessite donc encore une variable intermédiaire de type entier. Après le premier parcours, le plus grand élément se retrouve dans la dernière case du tableau, en tab[N], et il reste donc à appliquer la même procédure sur le tableau composé des éléments tab[1],..., tab[N-1]. Le nom de ce tri provient du déplacement des « bulles » les plus grandes vers la droite. 05/05/

111 Tri par bulle(suite) /* Procédure de tri bulle */ procedure triBulle(entier[] tab) entier i, k; entier tmp; pour (i de N à 2 en décrémentant de 1) faire pour (k de 1 à i-1 en incrémentant de 1) faire si (tab[k] > tab[k+1]) alors tmp <- tab[k]; tab[k] <- tab[k+1]; tab[k+1] <- tmp; fin si fin pour fin procedure 05/05/

112 Tri par bulle(suite) Le nombre de comparaisons dans la procédure de tri bulle est le même que pour le tri par sélection : Le nombre d'échanges quant à lui dépend de l'ordre des éléments dans le tableau : dans le meilleur des cas, le tableau initial est trié et il n'y a pas d'échange à faire ; en moyenne, on montre que le nombre d'échanges est de : dans le pire des cas, les entiers du tableau sont initialement donnés dans l'ordre décroissant. Dans ce cas, on effectue l'échange à chaque comparaison, c'est-à-dire que le nombre d'échanges est alors de : Quoi qu'il en soit, la complexité du tri bulle reste en O (N 2 ), c'est- à-dire du même ordre de grandeur que le carré du nombre d'éléments. 05/05/

113 Tri par insertion Cette méthode de tri est très différente de la méthode de tri par sélection et s'apparente à celle utilisée pour trier ses cartes dans un jeu : on prend une carte, tab[1], puis la deuxième, tab[2], que l'on place en fonction de la première, ensuite la troisième tab[3] que l'on insère à sa place en fonction des deux premières et ainsi de suite. Le principe général est donc de considérer que les (i-1) premières cartes, tab[1],..., tab[i-1] sont triées et de placer la i e carte, tab[i], à sa place parmi les (i-1) déjà triées, et ce jusqu'à ce que i = N. Pour placer tab[i], on utilise une variable intermédiaire tmp pour conserver sa valeur qu'on compare successivement à chaque élément tab[i-1],tab[i-2],... qu'on déplace vers la droite tant que sa valeur est supérieure à celle de tmp. On affecte alors à l'emplacement dans le tableau laissé libre par ce décalage la valeur de tmp. 05/05/

114 Tri par insertion(suite) /* Procédure de tri par insertion */ procedure triInsertion(entier[] tab) entier i, k,tmp; pour (i de 2 à N en incrémentant de 1) faire tmp <- tab[i]; k <- i; tant que (k > 1 et tab[k - 1] > tmp) faire tab[k] <- tab[k - 1]; k <- k - 1; fin tant que tab[k] <- tmp; fin pour fin procedure 05/05/

115 Tri par insertion(suite) La comparaison avec les deux algorithmes précédents montre que la complexité du tri par insertion est plus fortement dépendante de l'ordre du tableau initial. Nous comptons ici le nombre de comparaisons (qui est le nombre de décalages à un près) : dans le meilleur des cas, le tableau initial est trié et on effectue alors une comparaison à chaque insertion, on effectue donc N-1 comparaisons ; en moyenne, on montre que le nombre de comparaisons est de : 05/05/


Télécharger ppt "Algorithmique Mme Khadija BOUZAACHANE Année universitaire : 2009-2010."

Présentations similaires


Annonces Google