490 likes | 606 Views
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 »:.
E N D
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 »: 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
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
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
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
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
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
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
2-Composition : 2-2- Variables (exemples): étudiant Note2 université_de_Skikda étudiant universitaire 2013petrochimie Cours 2 : bases d’algorithmique
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
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
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
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
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
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
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
2-Composition : 2-2- Variables – booléens : La table de vérité des fonctions logiques : Non Et Ou ouEx Cours 2 : bases d’algorithmique
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Des questions??? Cours 2 : bases d’algorithmique