1 / 46

Cours 2 : bases d’algorithmique

Cours 2 : bases d’algorithmique. Niveau : Licence pétrochimie – deuxième semestre Université du 20 aout 55 – Skikda. 1-Définitions :. 1-1-Définitions du terme « algorithme »:.

vangie
Download Presentation

Cours 2 : bases d’algorithmique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cours 2 : bases d’algorithmique Niveau : Licence pétrochimie – deuxième semestre Université du 20 aout 55 – Skikda

  2. 1-Définitions : 1-1-Définitions du terme « algorithme »: Le mot algorithme signifie étymologiquement le nom d’un mathématicien arabe du moyen âge : Al-Khawarizmi, il a été le premier a décrire une méthode claire pour la résolution d’équation en 825. Cours 2 : bases d’algorithmique

  3. 1-Définitions : 1-2-Définitions de l’algorithme : Un algorithme est une séquence finie d’instructions faite pour être exécutée dans le but de résoudre un problème précis, nous retiendrons qu’un algorithme est une séquence d’instructions exécutées de façon logique mais non intelligente. Cours 2 : bases d’algorithmique

  4. 1-Définitions : 1-2-Définitions de l’algorithme : Logique parce que la personne (ou la machine) qui exécute les instructions sera capable de facilement comprendre et exécuter sans erreur ni ambigüité chacune des instructions. Non intelligente parce que la personne qui exécute l’algorithme n'aura qu'à suivre toutes les instructions, dans l'ordre pour arriver au résultat sans avoir a comprendre la méthode de solution. Cours 2 : bases d’algorithmique

  5. 1-Définitions : 1-3- Utilisation en informatique : L’ordinateur n’est pas intelligent, pour résoudre un problème, vous devez lui donner des successions claires d’instructions à suivre, ici, nous nous intéresserons uniquement à la façon de combiner des instructions pour résoudre un problème indépendamment des langages de programmation, le but de ce cours est donc de vous apprendre à créer des algorithmes, a décomposer des calculs compliqués en successions d’étapes simples. Cours 2 : bases d’algorithmique

  6. 1-Définitions : 1-4- Les avantages de l’utilisation d’algorithme : Un algorithme sert à transmettre un savoir faire. Il décrit clairement les étapes à suivre pour réaliser un travail. Il permet d'expliciter clairement les idées de solution d'un problème indépendamment d'un langage de programmation. Cours 2 : bases d’algorithmique

  7. 2-Composition : 2-1- Convention d’écriture : Un algorithme doit être lisible et compréhensible par plusieurs personnes, donc, chaque algorithme doit être composé des éléments suivants: Algorithme nom_de_algorithme Variables: Liste des variables utilisées dans l’algorithme. Début Instructions Fin Titre décrivant l’utilité de l’algorithme Liste et type de toutes les variables utilisées par l’algorithme Le traitement a effectuer par l’algorithme (bloc d’instruction) Cours 2 : bases d’algorithmique

  8. 2-Composition : 2-2-Variables – définition: Le premier concept nécessaire pour concevoir un algorithme est celui de variable, une variable est l’adresse d’un emplacement dans la mémoire ou est stockée une valeur, une variable porte un nom, ce nom est laisse au choix du concepteur de l’algorithme, il doit commencer par une lettre et ne pas comporter d’espace, on se sert du nom d’une variable pour lire sa valeur ou bien pour la modifier. Cours 2 : bases d’algorithmique

  9. 2-Composition : 2-2- Variables (exemples): étudiant Note2 université_de_Skikda étudiant universitaire 2013petrochimie Cours 2 : bases d’algorithmique

  10. 2-Composition : 2-2- Variables – les types : Nous manipulerons les types couramment rencontrés dans les langages de programmation : Naturel: Entier: Réel: booléen: caractère, chaîne,…... Cours 2 : bases d’algorithmique

  11. 2-Composition : 2-2- Variables – les types (exemple): Vérifiez si les opérations suivantes sont possible, quel type donne le résultat : ……………….……← naturel + naturel ……………….……← entier - entier ……………….……← réel * réel ……………….……← naturel / entier ……………….……← entier + réel ………………….…← naturel / réel ……………….……← caractère + caractère ………………….…← caractère + chaine de caractères ………………….…← caractère – chaine de caractères naturel entier réel réel réel réel chaine de caractères chaine de caractères impossible Cours 2 : bases d’algorithmique

  12. 2-Composition : 2-2- Variables - les opérations : L'affectation est une opération permettant de modifier la valeur d’une variable, la syntaxe de l'affectation est la suivante :  nomvariable ← valeur nomvariable est le nom de la variable dont on souhaite modifier la valeur, valeur est la valeur que l’on veut placer dans l’emplacement de la variable, notez bien que cette valeur doit être de même type que la variable. Cours 2 : bases d’algorithmique

  13. 2-Composition : 2-2- Variables - les opérations : • On prend la valeur contenue dans la variable A. • On prend la valeur contenue dans la variable B. • On additionne ces deux valeurs. • On met ce résultat dans la variable C. A ← 5 (affectation) A ← A+1 (incrémentation) place la valeur 5 dans la variable A, si A contenait préalablement une valeur, celle-ci est écrasée. On peut aussi affecter à une variable la valeur d’une autre variable : A ← 5 C ← A+B Cours 2 : bases d’algorithmique

  14. 2-Composition : 2-2- Variables - les opérations : Operations arithmétiques: + , - , * , / : concernant les variables de type numériques (naturel, entier, réel,…..). Operations de comparaisons: <, =, >, ≤, ≥, ≠ : concerne les variables de possédant un ordre (numérique ou caractère). Operations logiques: Non, et, ou, ouExlusif : s’applique aux operateurs logiques (booléens). Operations sur les caractères et les chaines de caractères: + : la concaténation. Cours 2 : bases d’algorithmique

  15. 2-Composition : 2-2- Variables - les opérations (exemple): Quelles sont les valeurs des variables après l’exécution des instructions suivantes ? A ← 1 B ← 2 C ← 3 D ←A A ← C+1 B ← D+C C ← D+1 Pour exécuter manuellement les instructions, on construit un tableau nous montrant les valeurs des variables au fil des exécutions : Cours 2 : bases d’algorithmique

  16. 2-Composition : 2-2- Variables - les opérations (exemple): Quel est l’ordre de priorité d’exécution des opérations (A ← 2 et B ← 4 et C ← 3, D ←5) : A+B-C = 2 + 4 – 3 = 6 – 3 = 3 A+B*C = 2 + 4 * 3 = 2 + 12 = 14 (A+B)*C = (2+4) * 3 = 6 * 3 = 18 A/B-C = 2 / 4 – 3 = - 10 / 4 A*B + A*C = 2 * 4 + 2 * 3 = 8 + 6 = 14 A*(B+A)*C = 2 * (4 + 2) * 3 = 2 * 6 * 3 = 12 * 3 = 36 A ^ C * B = 2 ^ 3 * 4 = 8 * 4 = 32 C+D+C+D+C+D = 3 + 5 + 3 + 5 + 3 + 5 = 8 + 3 + 5 + 3 + 5 = 11 + 5 + 3 + 5 = 16 + 3 + 5 = 19 + 5 = 24 • L’ordre de la priorité est: ( ) > puissance ^ > / et * > + et – • Encas d’égalité de la priorité, l’évaluation s’effectue de gauche a droite. Cours 2 : bases d’algorithmique

  17. 2-Composition : 2-2- Variables – booléens : La table de vérité des fonctions logiques : Non Et Ou ouEx Cours 2 : bases d’algorithmique

  18. 2-Composition : 2-2- Variables – booléens : • Tout comme en arithmétique les opérateurs booléens ont des priorités, la priorité des opérateurs est: • ( ) > non > et > ouEx > ou • Encas d’égalité de la priorité, l’évaluation s’effectue de gauche a droite. Rappels sur la logique booléenne : Valeurs possibles : Vrai ou Faux. Associativité des opérateurs et et ou : a et (b et c) = (a et b) et c Commutativité des opérateurs et et ou : a et b = b et a a ou b = b ou a Distributivité des opérateurs et et ou : a ou (b et c) = (a ou b) et (a ou c) a et (b ou c) = (a et b) ou (a et c) Loi de Morgan : non (a ou b) = non a et non b non (a et b) = non a ou non b Cours 2 : bases d’algorithmique

  19. 2-Composition : 2-2- Variables – booléens (exemple): Pour les variable logique A, B donner le résultat des opération suivantes (en sachant que A ← Vrai, B ← faux) : Non A = non(1) = 0. A et B = 1 et 0 = 0. A ou B = 1 ou 0 = 1. Non A et B = non1 ou 0 = 0 ou 0 = 0. Non(A et B) = non(1 et 0) = non(0) = 1. Non(A ou B) = non(1 ou 0) = non(1) = 0. (A et B) ou (A et non B) = (1 et 0) ou (1 et non(0)) = 0 ou (1 et 1) = 0 ou 1 = 1. Cours 2 : bases d’algorithmique

  20. 2-Composition : 2-3- Lisibilité : Algorithme Démonstration variables: A, B, C : numériques. t : chaine de caractères. Début A ← 1 B ← A+1 C ← A A ← A+1 t ← ‘exemple1’ + ‘exemple2’ Fin La lisibilité des algorithmes est un critère de qualité important, un algorithme correct mais indéchiffrable est aussi efficace qu’un algorithme faux, donc c’est un algorithme faux, vous devrez par conséquent soigner particulièrement vos algorithmes, ils doivent être faciles a lire, et rédigés de sorte qu’un lecteur soit non seulement capable de l’exécuter, mais aussi capable de le comprendre rapidement. Cours 2 : bases d’algorithmique

  21. 3-Les instructions : 3-1- Les entrées/sorties : De nombreux algorithmes ont pour but de communiquer avec un utilisateur, cela se fait dans les deux sens, les sorties sont des envois de messages a l’utilisateur, les entrées sont des informations fournies par l’utilisateur. >>Donne moi les données que vous voulez traiter? >> Données saisies >> Voila le résultat: Demande de données Affichage des résultats computer Entrée des données à traiter Utilisateur Cours 2 : bases d’algorithmique

  22. 3-Les instructions : 3-1- Les entrées/sorties : Lecture : Il est possible de demander à un utilisateur du programme de saisir une valeur, la syntaxe de la saisie est la suivante : Lire(nomvariable) La saisie interrompt le programme jusqu’a ce que l’utilisateur ait saisi une valeur au clavier, une fois cela fait, la valeur saisie est placée dans la variable nomvariable, il est possible de saisir plusieurs variables a la suite :  lire(A,B,C) place trois valeurs saisies par l’utilisateur dans les variables A, B et C. Cours 2 : bases d’algorithmique

  23. 3-Les instructions : 3-1- Les entrées/sorties : Ecriture : Pour afficher un message a destination de l’utilisateur, on se sert de la commande: écrire(message)  Cette instruction affiche le message a l’utilisateur, par exemple écrire(‘bonjour’) affiche bonjour sur l’écran, (les guillemets sont très importantes), il est aussi possible d'afficher le contenu d’une variable : écrire(A) affiche l’écran le contenu de la variable A. Cours 2 : bases d’algorithmique

  24. 3-Les instructions : 3-1- Les entrées/sorties : Ecriture : On peut mélanger les messages et les valeurs des variables, par exemple, les instructions: écrire(‘la valeur de A est :’) écrire(A) ont le même effet que l’instruction écrire(‘la valeur de A est :’,A) Lorsque l’on combine messages et variables dans les instructions d'affichage, on les sépare par des virgules. Cours 2 : bases d’algorithmique

  25. 3-Les instructions : 3-1- Les entrées/sorties (exemple) : Cet algorithme demande a l’utilisateur de saisir un entier, ensuite il affiche la valeur saisie puis la même valeur incrémentée de 1. Algorithme Affichage_incrément variables : a: entier Début écrire(‘Saisissez une valeur numérique’) lire(a) écrire(’Vous avez saisi la valeur:’, a) écrire(‘ a+1 =’,a+1) Fin >>Saisissez une valeur numérique >> 12 >> vous avez saisi la valeur : 12 >> a+1 = 13 computer Cours 2 : bases d’algorithmique

  26. 3-Les instructions : 3-2- Traitements conditionnels : On appelle traitement conditionnel un bloc d’instructions dont l’exécution est soumise à la vérification d’un test. si ... alors La syntaxe d’un traitement conditionnel est la suivante : Si condition alors Instructions fin si Les instructions ne sont exécutées que si condition est vérifiée, par exemple: Si A = 0 alors écrire(‘la valeur de la variable A est nulle’) fin si Si la variable A, au moment du test, a une valeur nulle, alors l’instruction écrire(‘La valeur de la variable A est nulle’) est exécutée, sinon, elle est ignorée. Cours 2 : bases d’algorithmique

  27. 3-Les instructions : 3-2- Traitements conditionnels : Condition: Une condition est une comparaison, son résultat est de type booléen, et prend donc deux valeurs: vrai ou faux. L’évaluation de la condition s’effectue de la même manière que l’évaluation d’une expression booléenne, exemple: Lire(moyenne) Si moyenne ≥ 10 alors écrire(‘étudiant admis’) finsi On peu ajouter une autre condition: Lire(moyenne, sanction_disciplinaire) Si moyenne ≥ 10 et non sanction_disciplinaire alors écrire(‘étudiant admis’) finsi Cours 2 : bases d’algorithmique

  28. 3-Les instructions : 3-2- Traitements conditionnels : Conditions Une condition peut être tout type de test, par exemple: A=2 A=B A = B et B ≠ 7 2 >7 Not A et B La condition A= 2 est vérifiée si la valeur contenue dans A est 2. A= B est vérifiée si les valeurs contenues dans A et dans B sont les mêmes. B ≠ 7 est vérifiée si B contient une valeur différente de 7. 2> 7 est vérifiée si 2 est supérieur a 7, donc jamais, cette condition est donc fausse et ne dépend pas des valeurs des variables. Cours 2 : bases d’algorithmique

  29. 3-Les instructions : 3-2- Traitements conditionnels : Si étendue Le traitement conditionnel peut être étendu de la sorte : si condition alors instructions sinon autres instructions finsi si condition est vérifiée, les instructions sont exécutées, dans le cas contraire, donc si condition n’est pas vérifiée, alors ce sont les autres instructions qui sont exécutées. Cours 2 : bases d’algorithmique

  30. 3-Les instructions : 3-2- Traitements conditionnels (exemple): Dans l’exemple ci-dessus, la condition a= b est évaluée, si a ce moment-la les variables a et b contiennent la même valeur, alors la condition a= b sera vérifiée, dans ce cas, l’instruction écrire(‘Vous avez saisi deux fois la même valeur, a savoir’, a) sera exécutée. Si la condition a= b n’est pas vérifiée, donc si les variables a et b ne contiennent pas la même valeur au moment de l’évaluation de la condition, c’est alors l’instruction écrire(‘Vous avez saisi deux valeurs différentes, ‘,a, ‘et ‘, b) qui sera exécutée. Algorithme Valeurs_Distinctes_variables a,b: entiers. Début écrire(‘Saisissez deux valeurs numériques’) lire(a,b) si a = b alors écrire(‘Vous avez saisi deux fois la même valeur, a savoir’, a) Sinon écrire(‘Vous avez saisi deux valeurs différentes’, a,’et’,b) finsi Fin Cours 2 : bases d’algorithmique

  31. 3-Les instructions : 3-2- Traitements conditionnels : Imbrication Il est possible d’imbriquer les si a volonté : si a < 0 alors si b < 0 alors écrire(‘a et b sont négatifs’) sinon écrire(‘a est négatif, b est positif ‘) finsi sinon si b < 0 alors écrire('b est négatif, a est positif') sinon écrire('a et b sont positifs') finsi finsi Si par exemple a et b sont tous deux positifs, alors aucun des deux tests ne sera vérifiées, et c’est donc le sinon du sinon qui sera exécuté, a savoir écrire(‘a et b sont positifs’). Cours 2 : bases d’algorithmique

  32. 3-Les instructions : 3-2- Traitements conditionnels (exemple) : Algorithme Signe_du_produit variables : a,b: entiers Début écrire(‘Saisissez deux valeurs numériques‘) lire(a, b) écrire(‘Le produit de‘, a, ‘par’, b, ‘est :’) si (a ≤ 0 et b ≤ 0) ou (a ≥ 0 et b ≥ 0) alors écrire(‘positif ou nul’) sinon écrire(‘négatif’) finsi fin • L’instruction écrire(‘positif ou nul’) sera exécutée si au moins une des deux conditions suivantes est vérifiée : • a≤0 et b≤0 • a≥0 et b≥0 Cours 2 : bases d’algorithmique

  33. 3-Les instructions : 3-2- Traitements conditionnels : Suivant cas Lorsque qu'on souhaite conditionner l’exécution de plusieurs ensembles d’instructions par la valeur que prend une variable, plutôt que de faire des imbrications de si a outrance, on préférera la forme suivante:  Suivant variable faire cas valeur1 instructions1 cas valeur2 instructions2 . . . cas valeur n instructions n autres cas instructions finsuivant suivant la valeur que prend la variable, le bloc d’instructions a exécuter est sélectionnée, par exemple, si la valeur de variable est valeur1, alors le bloc instructions1 est exécutée. Le bloc autres cas est exécuté si la valeur de variable ne correspond a aucune des valeurs énumérées. Cours 2 : bases d’algorithmique

  34. 3-Les instructions : 3-2- Traitements conditionnels (exemple) : Ecrivons un algorithme demandant a l’utilisateur le jour de la semaine, affichons ensuite le jour correspondant au lendemain. Cours 2 : bases d’algorithmique

  35. 3-Les instructions : 3-2- Traitements conditionnels (exemple) : Algorithme Lendemain variables : Erreur: booléen jour, lendemain : chaine de caractères Début écrire(‘Saisissez un jour de la semaine’) lire( jour) erreur ← 0 suivant jour faire cas ‘dimanche’  lendemain ← lundi cas ‘lundi’  lendemain ← mardi cas ‘mardi’  lendemain ← mercredi cas ‘mercredi’  lendemain ← jeudi cas ‘jeudi’  lendemain ← vendredi cas ‘vendredi’  lendemain ← samedi cas ‘samedi’  lendemain ← dimanche autres cas erreur ← 1 finsuivant si erreur alors écrire(‘Erreur de saisie’) sinon écrire(‘Le lendemain du’, jour,’est’, lendemain) finsi Fin Vous remarquez que si on avait voulu écrire le même algorithme avec des si, on utilise plusieurs imbrications. Cours 2 : bases d’algorithmique

  36. 3-Les instructions : 3-3- L’algorigramme : C’est une représentation graphique de l’algorithme, pour le construire, on utilise des symboles normalisés, ici on présente quelques symboles utilisés dans la construction d’un algorigramme : Cours 2 : bases d’algorithmique

  37. 3-Les instructions : Début 3-3- L’algorigramme (exemple): écrire(‘Saisissez A et B:’) Algorithme comparaison Variables: A,B : entiers. DEBUT écrire(‘Saisissez A et B:’) lire(A, B) Si A > B alors écrire(‘A est supérieur a B’) Sinon écrire(‘B est supérieur a A’) fin si FIN Lire(A,B) Si A > B alors non oui écrire(‘A est supérieur a B’) écrire(‘B est supérieur a A’) Fin Cours 2 : bases d’algorithmique

  38. 3-Les instructions : 3-4- les boucles : Comment on peut calculer la suite suivante: 1+2+3+……..+1000 ???!! Une boucle permet d’exécuter plusieurs fois de suite le même sous bloc d’instructions, chaque exécution du corps d’une boucle s’appelle une itération, on va voir deux types de boucles : Tant que Pour Chacune de ces boucles a ses avantages et ses inconvénients que nous verrons dans les planches suivantes. Cours 2 : bases d’algorithmique

  39. 3-Les instructions : 3-4- les boucles – tant que : La syntaxe dune boucle tant que est la suivante: tant quecondition instructions Fin tant que La condition est évaluée avant chaque itération, a chaque fois quelle est vérifiée, on exécute les instructions de la boucle, une fois que la condition n’est plus vérifiée, l’exécution se poursuit après le fin tant que. L’avantage de cette boucle est qu’on est pas obliger de connaitre le nombre d’itération a l’avance. L’ inconvénient est le risque d’entrer dans une boucle infinie si on ne gère pas bien la condition. Cours 2 : bases d’algorithmique

  40. 3-Les instructions : 3-4- les boucles – tant que (exemple): Affichons par exemple tous les nombres de 1 à 5 dans l’ordre croissant : Algorithme de1a5 variables : i : entier Début i ← 1 tant que i ≤ 5 écrire (‘la valeur de i est de :’,i ) i ← i+1 fin tant que Fin Cet algorithme initialise i a 1 et tant que la valeur de i ne dépasse pas 5, cette valeur est affichée puis incrémentée, les instructions se trouvant dans le corps de la boucle sont donc exécutées 5 fois de suite. La variable i s’appelle un compteur, on gère la boucle par incrémentations successives de i et on sort de la boucle une fois que i a atteint une certaine valeur, l’initialisation du compteur est très importante, si vous n’initialisez pas i explicitement, alors cette variable contiendra n’importe quelle valeur et votre algorithme ne se comportera pas du tout comme prévu. Cours 2 : bases d’algorithmique

  41. 3-Les instructions : 3-4- les boucles – pour : La syntaxe d’une boucle pour est la suivante: pour variable de premierevaleur a dernierevaleur [par pas de pas] instructions Fin pour La boucle pour fait varier la valeur du compteur variable entre premièrevaleur et dernièrevaleur, le pas est optionnel et permet de préciser la variation du compteur entre chaque itération, le pas par défaut est 1 et correspond donc a une incrémentation. La boucle pour initialise le compteur variable a la premièrevaleur, et tant que la dernièrevaleur n’a pas été atteinte, les instructions sont exécutées et le compteur incrémenté automatiquement. L’avantage de cette boucle est qu’on est pas obliger de gérer le compteur (condition d’ arrêt). L’ inconvénient est qu’on doit connaitre a l’avance le nombre d’itérations a effectuer. Cours 2 : bases d’algorithmique

  42. 3-Les instructions : 3-4- les boucles – pour (exemple): On reprend l’exemple précédent : Algorithme pour1a5 variables : i : entier Début pour i de 1 a 5 écrire(‘la valeur de i est de :’,i ) fin pour Fin Ici on remarque que l’initialisation et l’incrémentation du compteur i se fait automatiquement par la boucle. A chaque itération la boucle fait le test sur la valeur de i, si i ≤ 5 alors les instructions se trouvant dans le corps de la boucle sont donc exécutées. Cours 2 : bases d’algorithmique

  43. 4-L’exécution d’un algorithme : 4-1- le tableau d’exécution : Pour une exécution facile et sans ambigüité d’un algorithme, on introduit la notion de tableau d’exécution, ce tableau contiendra les valeurs de toutes les variables utilisées dans l’algorithme ainsi que les messages échangés entre l’utilisateur et l’algorithme à travers les instructions d’entrées sorties. Cours 2 : bases d’algorithmique

  44. 4-L’exécution d’un algorithme : 4-1- le tableau d’exécution (exemple): On exécute l’algorithme suivant pour la valeur de N = 4 ? Algorithme pour1aN variables : i : entier Début pour i de 1 a N écrire(‘la valeur de i est de :’,i) fin pour Fin Cours 2 : bases d’algorithmique

  45. 4-L’exécution d’un algorithme : 4-1- le tableau d’exécution (exemple): On exécute l’algorithme suivant? Algorithme carre Variables : nb, nbcarre : entiers Debut nb ← 1 Tant que nb ≤ 3 nbcarre ← nb * nb écrire(nb, ‘^2 = ‘, nbcarre) nb ← nb + 1 fin tant que Fin Cours 2 : bases d’algorithmique

  46. Des questions??? Cours 2 : bases d’algorithmique

More Related