Cours: Algorithmique I - A. Oubelkacem - Département d'Informatique
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Université de Moulay Ismail Faculté des Sciences Meknès Filière: SMIA Département d‘Informatique Cours: Algorithmique I A. Oubelkacem Cours d'algorithmique- SMIA2- 2020/2021 1
Introduction à l’informatique Introduction à la programmation Algorithmique: Outils de base Structures d’un algorithme Instructions conditionnelles et alternatives Instructions répétitives (les boucles) Les chaines de caractères Les variables dimensionnés ( les tableaux) Cours d'algorithmique- SMIA2- 2020/2021
Introduction à l’informatique L’informatique ? Computer Science INFORMATIQUE ? en anglais INFORMATION AUTOMATIQUE Art d’entraîner automatiquement des actions Science de l’information Traitement automatique de l’information ORDINATEUR Machine automatique
Ordinateur • Machine qui permet de traiter de l’information : d’acquérir et de conserver de l’information (acquisition, stockage) d’effectuer des traitements (calcul), de restituer les informations stockées (restitution) • Permet de lier «information» «données» (0 ou 1) • Différents types d’informations : valeurs numériques, textes, images, sons, …: tout cela avec des 0 ou 1 Schéma de principe du traitement de l’information Données à l’état brut ENTREE Données corrigées TRAITEMENT Résultats Par ordinateur SORTIE
Domaines de l’informatique Domaine du matériel (hardware) • partie physique de l’ordinateur • composants constituant un ordinateur (microprocesseur …) • support du traitement de l’information (disque dur …) Domaine du logiciel (software) • instructions expliquant à l’ordinateur comment traiter un problème. • Cela nécessite de décrire des : algorithmes et représentations informatiques de ces instructions pour aboutir à un programme.
Introduction à la programmation I.1 Généralités Pour résoudre un problème donné en informatique, l’utilisateur doit mettre au point un programme et le faire exécuter par la machine Un programme est une succession logique et ordonnée d’instructions. La programmation est l’ensemble des taches qui permettent d’élaborer un programme. Pour écrire un programme il faut: Bien connaitre le problème; Savoir le découper logiquement en un ensemble d’opérations élémentaires ( actions) Connaitre un langage compréhensible par la machine
Introduction à la programmation La démarche a suivre dans la résolution d’un problème en informatique est donc: Analyse du pb Traduction Problème Algorithme Programme Recherche des De l’algorithme outils de résolution dans un langage et décomposition compréhensible en étapes par la machine élémentaires Question: qu’est ce qu’un algorithme alors?
Introduction à la programmation Exemples Considérons la suite d'instructions suivante : 1. Faites chauffer de l'eau dans une casserole 2. Une fois que l'eau boue, placez les pâtes dans l'eau 3. Attendez dix minutes 4. Versez le tout dans un écumoire 5. Vos pâtes sont prêtes. Vous l'aurez deviné, il s'agit des grandes lignes de la recette permettant de préparer des pâtes!! Il s'agit seulement d'une suite d'instructions devant être exécutées a la lettre. Si vous ne les suivez pas, vous prenez le risque que le résultat ne soit pas celui que vous attendez!!!
Introduction à la programmation Définition On conclut de de la façon suivante : nous avons vu qu'il existait des séquences d'instructions faites pour être exécutée a la lettre et sans se poser de questions, c'est le principe de l'algorithme. Nous retiendrons donc qu’un algorithme est une séquence d'instructions exécutée de façon logique mais non intelligente. Logique parce que la personne (ou la machine) qui exécute les instructions est capable de comprendre et exécuter sans erreur chacune d'elles. Non intelligente parce que la personne qui exécute l'algorithme n'est pas supposée apte a comprendre pourquoi la succession d‘étapes décrite par l'algorithme donne bien un résultat correct.
Introduction à la programmation I.2. Origine du mot « algorithme »? Le mot Algorithme prend étymologiquement ses racines dans le nom d’un célèbre mathématicien arabe, Musulman, géographe, astronome, perse du IX ème siècle appelé Mohammed Ibn Musa Al Khawarizmi. Les algorithmes sont extrêmement puissants : en concevant un algorithme, vous pouvez décomposer un calcul compliqué en une succession d‘étapes compréhensibles,
I.3 Définition d’un algorithme Un algorithme se compose d’un ensemble fini d’étapes, chaque étape étant formée d’un ensemble fini d’opérations dont chacune est définie d’une façon rigoureuse Un algorithme est un moyen de description des étapes à suivre pour résoudre un problème. Il doit: Contenir un nombre fini d’actions exécutables par la machine. Ne demander à l’utilisateur que des données connues par celui-ci. Proposer des résultats intéressants pour l’utilisateur. Etre exécutable par une personne utilisant des moyens manuels( stylo, papier,…).
I.3 Définition d’un algorithme Etape 1 Etape n Opération 1 Opération 1 Algorithme: Opération 2 Opération 2 …. …. Opération L Opération m Un algorithme utilise un certain nombre d’objets pour fonctionner. Cet ensemble s’appelle: Environnement de l’algorithme. Cet environnement est constitué: Des objets d’entrée (OE) qui représentent l’ensemble de données que l’utilisateur doit introduire à l’algorithme Des objets de sortie (OS) qui représentent l’ensemble des résultats produits par l’algorithme
I.3 Définition d’un algorithme Des objets constants (OC) qui représentent l’ensemble des objets dont les valeurs ne change pas au cours de toute l’exécution de l’algorithme Des objets intermédiaires (OI) qui représentent l’ensemble des objets de traitements internes, ils ne sont ni entrés ni sortis, mais ils sont soit: - des compteurs, - calculés à partir des objets d’entrée et des objets constants et serviront pour produire les objets de sortie. Objets Constants (OC) Objets Objets de d’Entrées (OE) ALGORITHME Sortie (OS) Objets Intermédiaires (OI)
I.4 Qu’est ce qu’un bon algorithme Un algorithme informatique se ramène donc toujours au bout du compte à la combinaison de quatre petites briques de base: •L’affectation de variables •La lecture/ écriture •Les tests •Les boucles Dans un algorithme on peut avoir quelques unes, quelques dizaines, et jusqu’à plusieurs centaines dans certains programmes. La taille d’un algorithme ne conditionne pas en soi sa complexité: de longs algorithmes peuvent être finalement assez simple, et de petits algorithme peuvent être très compliqués. Cours d'algorithmique- SMIA2- 2020/2021
I.4 Qu’est ce qu’un bon algorithme On peut noter qu’un bon algorithme est un schéma de résolution possédant les caractéristiques suivantes: Correct: s’il répond au problème posé. Précis: s’il fournit exactement les résultats attendus. Rapide: s’il utilise un temps d’exécution minimal indépendamment de la vitesse de la machine. Efficace: s’il utilise le moins d’espace mémoire possible. Clair et lisible: s’il ne présente pas de difficulté de compréhension pour un autre programmeur désirant le maintenir ou le développer. Résistant: s’il est capable de détecter les cas de mauvaise utilisations.
I.4 Qu’est ce qu’un bon algorithme Exemple de résistance d’un algorithme Dans la résolution d’une équation de premier degré: a.x+b=0 Pour laquelle: x=-b/a Un algorithme de résolution de cette équation doit réagir si on lui introduit une valeur a=0 ( mauvaise utilisation), en refusant de calculer la solution et en affichant par conséquent un message d’erreur, sinon la machine va se bloquer car elle ne sait pas faire des divisions par zéro.
I. 5. Objectifs de l’algorithmique L’objectif de l’algorithmique est de permettre une bonne analyse du problème afin de proposer la meilleure solution, celle-ci doit être correcte, rapide, précise et moins couteuse en utilisant un ensemble de techniques de programmation. L’analyse d’un problème en informatique peut prendre jusqu’à 90% du temps alloué à la résolution du problème. Cette analyse permet: De transformer le texte du problème en un ensemble d’étapes élémentaires De revoir les outils élémentaires utilisés dans la solution pour essayer d’optimiser, si possible, ce schéma avant de procéder à sa traduction dans un langage de programmation
I. 5. 1 Structure simplifiée d’ l’algorithmique Rappelons qu’: Un algorithme est un ensemble formé par un environnement et des actions L’environnement d’un algorithme est l’ensemble formé par tous les objets utilisés par celui-ci. Pour utiliser un objet dans un algorithme, il faut le déclarer à la machine afin que celle-ci puisse lui réserver la place mémoire nécessaire pour le loger. On distinguera trois parties dans un algorithme: Le titre, tout algorithme porte un titre. Choisissez un titre qui permet de comprendre ce que fait l'algorithme. une partie déclaration de tous les objets utilisés par l’algorithme ( CONST, VAR) une partie exécutable contenant toutes les actions permettant d’agir sur ces objets délimitée par les mots DEBUT et FIN
I.5. 2 Présentation d’un algorithme Un algorithme pourra se présenter par un langage algorithmique (pseudo code) de la manière suivante: Algorithme nom_algorithme; (Déclaration) Const NOM_DE_CONST=valeur_de_const; Var nom_var: nom_type_var; Début (Corps de l’algorithme) (Actions) Fin
Remarque: si plusieurs objets variables sont de même type, nous pouvons alors les regrouper tous ensembles séparés par des virgules. Exemple des variables et constantes: CONST ANNEE_COURS=2018; TAILLE_MIN=1.75; REPONSE=‘’OUI’’; VAR Nom, Prenom : chaine de caractère; Age : entier; Etat_civil : booléen; Exemple: algorithme de calcul et affiche la somme, le produit et la moyenne de trois nombres entiers a,b et c. Exemple: algorithme de calcul du périmètre et de la surface d’un cercle de rayon R.
I. 6. 2 Les organigrammes Définition: Un organigramme est une représentation schématique ou graphique d’un algorithme mettant en valeur sa structure. Un organigramme permet de mieux présenter les différents modules de traitement et d’exploiter la succession des opérations d’un travail Liste des symboles les plus utilisé dans un ogranigramme Séquence Instruction Test et Opération Sortie Début ou fin décision : calcul d’entrée ou disque de sortie magnétique
I. 6. 2 Les organigrammes Exemple: Traduction schématique de l’algorithme de calcule du périmètre d’un cercle de rayon R: Début Lecture du rayon R P=2*3.14*R Affichage du résultat P Fin
2. Les outils de base de l’algorithmique 2.1 Notion d’objet Un algorithme est constitué d’un: Ensemble fini d’objets appelé environnement, Ensemble fini d’actions permettant de traiter ces objets. Un objet peut se présenter sous deux formes différentes: Objet constant Objet variable Une variable est 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.
Les outils de base de l’algorithmique Pour définir parfaitement un objet (une variable) en vue de sa manipulation par une machine, il faut spécifier les caractéristiques suivantes: Son identificateur, Sa valeur, Son type. 2. 2. Identificateur d’un objet C’est un nom symbolique que nous attribuons à l’objet représenté par une suite de caractères. Il doit obéir aux exigences suivantes: Il doit commencer obligatoirement par une lettre.
Les outils de base de l’algorithmique La suite des caractères peut être composés soit: des lettres non accentuées( a,b,...z,A,B,…Z), des chiffres ( 0,1,2,….9), du caractère soulignement « _ ». Il ne doit contenir ni espace ni caractères spéciaux. Exemple 1 temps, calcul_vectoriel, mois1, a54b2: sont des identificateurs corrects. 1temps, calcul vectoriel, a54/b2: sont des identificateurs non corrects. Remarque: de préférence le nom (identificateur) est choisi en rapport avec le rôle de l’objet.
Les outils de base de l’algorithmique Exemple 2 Si dans un algorithme de gestion d’une entreprise, on veut nommer un objet représentant le nombre d’employés, on peut utiliser: A: qui est une mauvaise appellation, NE: qui est une appellation moyenne, Nbre_employes: qui est une bonne appellation. 2. 3 Valeur d’un objet C’est le contenu courant d’un objet. Ce contenu peut être: Constant: s’il ne peut pas être modifié par les instructions de l’algorithme tout au long de son exécution. Variable: dans le cas contraire.
Les outils de base de l’algorithmique 2.4 Type d’objet A chaque variable utilisée dans le programme, il faut associer un type qui permet de définir : • l’ensemble des valeurs que peut prendre la variable • l’ensemble des opérations qu’on peut appliquer sur la variable. La syntaxe de l’action de déclaration est la suivante : Variable 1, Variable 2, … : Type Les principaux types utilisés en algorithmique sont : - le type entier - le type réel - le type caractère - le type chaîne de caractères - le type logique ou booléen.
Les outils de base de l’algorithmique Le type Entier Une variable est dite entière si elle prend ses valeurs dans Z (ensemble des entiers relatifs) et qu’elle peut supporter les opérations suivantes : Exemples 17 div 5 = 3 17 mod 5 = 2 Remarque: L’ensemble de valeurs que peut prendre un entier varie selon le langage de programmation utilisé.
Les outils de base de l’algorithmique Le type réel ou décimal Il existe plusieurs types de réels représentant chacun un ensemble particulier de valeurs prises dans IR (ensemble des nombres réels). Ici encore, cette distinction se justifie par le mode de stockage des informations dans le langage de programmation. Il existe deux formes de représentation des réels : la forme usuelle avec le point comme symbole décimal. Exemples : -3.2467 2 12.7 +36.49 la notation scientifique selon le format aEb, où : a est la mantisse, qui s’écrit sous une forme usuelle b est l’exposant représentant un entier relatif. Exemple : 325 = 3.25E2 = 0.325E+3 = 3250E-1 = ...
Les outils de base de l’algorithmique Les opérations définies sur les réels sont : Le type caractère Un caractère peut appartenir au domaine des chiffres de ”0” à ”9”, des lettres (minuscules et majuscules) et des caractères spéciaux (”*”, ”/”, ”{”, ”$”, ”#”, ”%” …). Un caractère sera toujours noté entre des guillemets. Le caractère espace (blanc) sera noté ” ”. Les opérateurs définis sur les données de type caractère sont :
Les outils de base de l’algorithmique Les opérations définies sur les caractères sont : Remarque: La comparaison entre les caractères se fait selon leur codes ASCII. Exemple ” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{” 34 48 49 65 66 97 98
Les outils de base de l’algorithmique
Les outils de base de l’algorithmique Le type logique ou booléen Une variable logique ne peut prendre que les valeurs ”Vrai” ou ”Faux”. Elle intervient dans l’évaluation d’une condition. Les principales opérations définies sur les variables de type logique sont : la négation (NON), l’intersection (ET) et l’union (OU). L’application de ces opérateurs se fait conformément à la table de vérité suivante :
Les outils de base de l’algorithmique Remarque : le domaine {vrai, faux} est équivalent au domaine {0,1} Les tables de vérité des opérateurs logiques peuvent s’écrire: A B L=A ET B A B L=A OU B A L=NON A 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 L’op. ET peut être matérialisé L’op. OU peut être matérialisé L’op. NON peut être physiquement par deux physiquement par deux matérialisé physiquement par interrupteurs en série pour interrupteurs en // pour un interrupteur normalement allumer une ampoule L allumer une ampoule L fermé au départ pour allumer une ampoule L
Les outils de base de l’algorithmique Type Chaîne de caractère : pour manipuler des chaînes de caractères permettant de représenter des mots ou des phrases. Exemple : "bonjour, Monsieur" (une chaîne de caractère est toujours notée entre guillemet Remarque: En pseudo-code, une chaîne de caractères est toujours notée entre guillemets " ", car, il peut y avoir une confusion entre des nombres et des suites de chiffres. Par exemple, 423 peut représenter : • le nombre 423 (quatre cent vingt-trois), • ou la suite de caractères 4, 2, et 3 notée : "423"
2. 5 les expressions Ce sont des combinaisons entre des variables et des constantes à l’aide d’opérateurs. Elles expriment un calcul (expressions arithmétiques) ou une relation (expressions logiques). 1. Les expressions arithmétiques: Exemple : x* 53.4 / (2 + pi) L’ordre selon lequel se déroule chaque opération de calcul est important. Afin d’éviter les ambiguïtés dans l’écriture, on se sert des parenthèses et des relations de priorité entre les opérateurs arithmétiques : Ordre de priorité des opérateurs arithmétiques
2. 5 les expressions Remarque: En cas de conflit entre deux opérateurs de même priorité, on commence par celui situé le plus à gauche. 2. Les expressions logiques: Ce sont des combinaisons entre des variables et des constantes à l’aide d’opérateurs relationnels (=, =, #) et/ou des combinaisons entre des variables et des constantes logiques à l’aide d’opérateurs logiques (NON , ET, OU, …). Ici encore, on utilise les parenthèses et l’ordre de priorité entre les différents opérateurs pour résoudre les problèmes de conflits. opérateurs logiques opérateurs relationnels
2. 6 Applications 1- Quel est l’ordre de priorité des différents opérateurs de l’expression suivante : ((3 * a) – x ^ 2) – (((c – d) / (a / b)) / d) 2- Ecrire la formule suivante sous forme d’une expression arithmétique : Réponses: 2-
3. Instructions élémentaires en algorithmique 3. 1 Introduction Les instructions élémentaires sont les instructions qui figurent le plus souvent dans tous les algorithmes. Elles sont au nombre de trois: L’affectation, Les instructions d’entrée de données, Les instructions de sortie de données.
3. Instructions élémentaires en algorithmique 3. 2 l’affectation L’opération affectation permet d’assigner une valeur à un objet. Elle est représenté en algorithmique par une flèche orientée de droite vers la gauche: Syntaxe : Identificateur_objet valeur L’opération d’affectation présente certaines possibilités et impose certaines conditions. 1.1 Possibilités Le membre droite d’une affectation ( valeur) peut être soit: Une variable de même type que Identificateur_objet: V A Une constante de même type que Identificateur_objet: V 4
3. Instructions élémentaires en algorithmique Une expression dont l’évaluation produit un résultat final de même type que Identificateur_objet: V 3*A+2*B-4 1.2 Conditions Une affectation est exécutable si et seulement si: Le membre gauche de l’affectation( identificateur_objet) est une variable déclarée. Par conséquent les écritures suivantes n’ont pas de sens: 8 A ou A+B C La partie droite de l’affectation représente une quantité bien définie Par conséquent la 2ème affectation dans l’exemple suivant n’est pas exécutable: A 0; V 1/A;
3. Instructions élémentaires en algorithmique Les types de deux parties de l’affectation sont les mêmes. Par conséquent la 2ème affectation dans l’exemple suivant n’est pas exécutable: Var A: entier; C: caractère; Début A 6; C A; fin Exemples d’utilisation de l’affectation En mémoire si A=6 et B=4, alors après affectation A B; on aura A=4 et B=4
3. Instructions élémentaires en algorithmique Exemples d’utilisation de l’affectation A 3; donc A=3. B A; on aura donc B=3. C (A+B)*2; on aura donc C=12. i 4; donc i=4. i i+1; on aura donc i=5; Remarque: l’affectation détruit complètement et définitivement le contenu précédent de la variable affectée si elle en avait un.
3. Instructions élémentaires en algorithmique 3. 1 Instructions d’entrée/ sortie Pour bien fonctionner, un algorithme doit en général acquérir des données( entrées) sur un périphérique( exemple de clavier) et fournir en conséquence des résultats ( sorties) sur un autre périphérique( écran). Pour réaliser ces taches fondamentales en programmation, on a donc besoin de deux opérations distinctes: Lire(v): qui permet d’affecter à la variable (v) , la valeur lue sur le périphérique d’entrée, Ecrire(v1): qui permet de transformer la valeur ( v1) vers le périphérique de sortie
3. Instructions élémentaires en algorithmique Remarques L’identificateur (v) doit être une variable déclarée. Par conséquent les écritures suivantes n’ont pas de sens: Lire(8); !! Lire(A+B); !! La valeur (v1) peut être soit: Une variable déclarée: exemple: Ecrire(A); Une constante: exemple : Ecrire(8); Une expression : exemple: Ecrire( 3*B+4*D-2). Un algorithme doit être interactif. Pour faciliter l’utilisation de l’algorithme en affiche des messages explicatifs qui doivent être écrits entre apostrophes (” ”).
3. Instructions élémentaires en algorithmique Exemple 1 Qu’obtient t-on à l’écran après l’exécution des instructions suivantes : x5 Ville ”Meknes” Ecrire(x) Ecrire(x*x) Ecrire(”Ville”) Ecrire(”Ville = ”,Ville) 5 25 Ville Ville = Meknes
3. Instructions élémentaires en algorithmique Exemples 2 1. Quelles sont les valeurs successives prises par les variables X et Y suite aux instructions suivantes: X 1; Y -4; X 1 1 4 -9 -9 -9 X X+ 3; Y ---- -4 -4 -4 -7 -13 X Y-5; Y X+2; Y Y-6 2. Soit 2 variables quelconque( nombre ou caractère) x et y ayant respectivement comme valeur a et b. Quelles sont les affectations qui donneront à x la valeur b et à y la valeur a? xy; Analyse: la première idée est d’écrire : yx; Mais ça ne marche pas, les deux variables se retrouvent avec la même valeur b! Il faut mettre la valeur de x de coté dans une autre variable auxiliaire pour ne pas la perdre.
3. Instructions élémentaires en algorithmique algorithme Algorithme permutation; Var x, y, z: entier; Début Ecrire(”Entrez deux valeurs pour x et y ”); Lire(x,y); z x xy; yz Ecrire(”la valeur de x et y après permutation est:”,x,y); Fin X 1; X=1 Y= Z= Vérification! Y -4; X=1 Y=-4 Z= z X; X=1 Y=-4 Z=1 X=-4 Y=-4 Z=1 X Y; X=-4 Y=1 Z=1
3. Instructions élémentaires en algorithmique Exemple 3 : Donner toutes les raisons pour lesquelles l’algorithme suivant est incorrect : Algoritme Incorrect Cet algorithme est incorrect pour x, y : Entier; plusieurs raisons : • ligne 1 : Le mot Algorithme s’écrit avec z : Réel; un « h » au milieu Début • ligne 2 : La déclaration des variables z x + 2; commence par le mot « Var » y z; • ligne 5 : La valeur de x est x*2 3 + z; indéterminée • Ligne 6 : incompatibilité de type (un y 5y + 3; résultat réel affecté à une variable de Fin type entier) • Ligne 7 : Le membre gauche d’une affectation doit être une variable • Ligne 8 : Il faut écrire 5*y et non 5y.
3. Instructions élémentaires en algorithmique Exemple 4 : Ecrire un algorithme qui permet de calculer la somme de deux nombres réels A et B. Solution Algorithme somme; Var a, b, S: réels; Début Ecrire(”Entrez deux nombres”); Lire(a,b); S a+ b; , Ecrire(”la somme de nombres a et b est:” S); Fin
3. Instructions élémentaires en algorithmique Remarque : la dernière instruction de l’algorithme précédent peut être modifier comme suite: Ecrire(”la somme de deux nombres”,a, ” et ,b, ” est : ”,S); Exemple: si a=3 et b=8, l’instruction ci-dessus s’exécutera ainsi: La somme de deux nombres 3 et 8 est :11 Exemple 5: Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le double de ce nombre.
3. Instructions élémentaires en algorithmique Algorithme doubleDevaleure; Var val, dval: entiers; Début Mauvais Exécution 12 24 val 12; dvalval*2 Ecrire (val, dval); Fin Algorithme doubleDevaleure; Var val, dval: entiers; Début Exécution: Ecrire(”donner un entier: ”); Donner un entier: 12 Lire(val); Le double est 24 dvalval*2 Mieux Le double de 12 est 24 Ecrire (”le double est ” , dval); Ecrire(”le double de :”,val, ”est ”, dval); Fin
Instructions Conditionnelles et Alternatives
4. Instructions conditionnelles et alternatives 4. 1. Notion de primitives de base structurées Les algorithmes vus , jusqu’à présent, ont un enchainement d’exécution des instructions séquentiel et linéaire. Dans de nombreuses applications, on exige une exécution par morceau des sauts ou des répétitions d’un même bloc d’instructions. C’est le rôle des primitives de base structurées On distingue deux grandes familles d’instructions composées:
4. Instructions conditionnelles et alternatives 4. 1. Notion de primitives de base structurées Les primitives de choix qui permet de choisir les instructions à exécuter selon les valeurs courantes de certaines variables; elle sont de deux types: Les instructions conditionnelles Les instructions alternatives. Les primitives d’itération qui sont utilisées lorsque l’on souhaite exécuter plusieurs fois le même traitement.( chapitre suivant) Remarque: Les notions de choix et d’itération sont deux notions fondamentales de l’algorithmique.
4. Instructions conditionnelles et alternatives 4. 1 Instructions conditionnelles 4. 1. 1 l’instruction Si …Alors…. Finsi Syntaxe: Si (condition) alors Instruction( ou suite d’instructions); Finsi organigramme: Oui Condition Instruction Non
4. Instructions conditionnelles et alternatives 4. 1. 1 l’instruction Si …Alors…. Finsi Si la condition est vraie alors le est exécuté. Si la condition est fausse alors le n’est pas exécuté. On passe à l’instruction qui se trouve après Finsi Exemple: (A=1) la condition A=1 est vérifiée si la valeur contenu dans A est 1 (A=B) est vérifié si les valeurs contenu dans A et B sont les mêmes (B 5) est vérifié si B contient une valeur différent de 5 (1>5) est vérifié si 1>5, donc jamais cette condition est donc fausse et ne dépend pas des valeurs des variables.
4. Instructions conditionnelles et alternatives Exemple 1 La valeur absolue d’un nombre réel |x|=x si x>0 |x|=-x si x
4. Instructions conditionnelles et alternatives Organigramme Début Lire(x) Oui x
4. Instructions conditionnelles et alternatives Algorithme : Algorithme valeur_absolue1; Var x: réel; Début Lire(x); Si (x
4. Instructions conditionnelles et alternatives Exemple 2 Ecrire un algorithme qui calcule le salaire d’un employé à partir du nombre d’heures (nh) travaillées, du taux horaire (th) et du nombre d’années de service. Les employés ayant une ancienneté (anc) de plus de 10 ans bénéficient d’une allocation supplémentaire de 150 Dh. Analyse du problème Les variables d’entrées: 1- Données du problème nh, th,anc · nh : nombre d’heures travaillées Les variables de sorties: · th : taux horaire (en Dirhams) salaire · anc : ancienneté (en Année) 2- Résultat recherché · salaire : salaire net de l’employé (en Dirhams) 3- Comment faire ? Salaire nh * th Si (anc > 10) Alors Salaire salaire + 150 FinSi
4. Instructions conditionnelles et alternatives Exemple 2 Forme 1 Forme2 Algorithme calcul_salaire; Algorithme calcul_salaire; Var nh, th, anc, salaire : Réel; Const ALL=150; Début Var nh, th, anc, salaire : Réel; Ecrire(”NH travaillées : ”) ; Début Lire(nh); Ecrire(”NH, Taux horaire, Anc : ”) ; Ecrire(”Taux horaire : ”); Lire(nh,th,anc); Lire(th); salaire nh * th; Ecrire(”Ancienneté : ”); Si (anc > 10) Alors Lire(anc); Salaire salaire + ALL; salaire nh * th; FinSi Si (anc > 10) Alors Ecrire (”Salaire de l’employé = ”, salaire); salaire salaire + 150; Fin. FinSi Ecrire (”Salaire de l’employé = ”, salaire); Fin.
4. Instructions conditionnelles et alternatives 4. 1. 2 l’instruction Si …Alors…. Sinon…Finsi Syntaxe Si (condition) alors Instruction 1; Sinon Instruction 2; Finsi Oui Non Condition Instruction 2 Instruction 1
4. Instructions conditionnelles et alternatives Instruction 1 est exécutée si la condition est vérifiée, sinon c’est l’Instruction 2 qui sera exécutée. Exemple 1 Algorithme saisi; Var a,b: entier; Début Ecrire(”donner deux nombres entiers a et b”); Lire(a,b); si (a=b) alors Ecrire(”vous avez saisi deux fois la même valeur, à savoir”, a); Sinon Ecrire(”vous avez saisi deux valeurs différents”, a, ” et” , b,); Finsi Fin
4. Instructions conditionnelles et alternatives Instruction 1 est exécutée si la condition est vérifiée, sinon c’est l’Instruction 2 qui sera exécutée. Exemple 2 : le plus grand et le plus petit nombre entre x et y Première forme Algorithme exemple5; Var x,y: réel; Début Ecrire(”donner deux nombres x et y”); Lire(x,y); si (x>y) alors Ecrire(”le plus grand est”, x); Sinon Ecrire(”le plus grand est”, y); Finsi Fin
4. Instructions conditionnelles et alternatives Deuxième forme Exemple 2bis: le plus grand et le plus petit nombre entre x et y. Algorithme exemple5bis; Var x,y: réel; z: booléen; Début Ecrire(”donner deux nombres x et y”); Lire(x,y); z x>y; si (z) alors Ecrire(”le plus grand est”, x); Sinon Ecrire(”le plus grand est”, y); Finsi Fin
4. Instructions conditionnelles et alternatives Exemple 3 La valeur absolue de la différence de deux nombres réels: |x-y|=x-y si x>y algorithme |x-y|=y-x si xy) alors Lire(x,y); z x-y; z x-y; Sinon Si (z
4. Instructions conditionnelles et alternatives Conditions composées Une condition composée est une condition formée de plusieurs conditions simples reliées par des opérateurs logiques: ET, OU, OU exclusif (XOR) et NON EXEMPLES: - Si x est compris entre 2 et 5: si ((x>=2) ET (x
4. Instructions conditionnelles et alternatives Exemple 4 Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si leur produit est négatif ou positif (on laisse de côté le cas où le produit est nul). Algorithme signe_produit; Var n,m: réel; Début Ecrire(”donner deux nombres n et m”); Lire(n,m); Si ((n>0 ET m>0) OU (n
4. Instructions conditionnelles et alternatives Exemple Ecrire un algorithme qui demande un nombre 4bis entier puis qui teste et affiche s’il est divisible par 3 ou non. Algorithme divisible_par3; Var n: entier; Début Ecrire(‘’entrez un entier‘’); Lire(n); Si (n MOD 3=0) alors Ecrire(n, ‘’ est divisible par 3 ‘’); Sinon Ecrire(n, ‘’ n’est pas divisible par 3 ‘’); Finsi Fin
4. Instructions conditionnelles et alternatives 4. 1. 3 l’instruction Si …Alors…. Sinon Si…alors …Finsi syntaxe Si (condition1) alors Instruction 1; Sinon Si (condition2) alors Instruction 2; Sinon Instruction3; Finsi Finsi Si la condition1 est vraie, alors le est exécuté. Si elle est fausse ( la condition1), alors on teste la condition2, si elle est vraie, on exécute le
4. Instructions conditionnelles et alternatives Exemple 5a: algorithme qui permet d’afficher le signe d’un nombre saisie par l’utilisateur( nombre positif, négatif ou nul) Algorithme exemple5a; Algorithme exemple5aa; Var Var n: réel; n: réel; Début Début Ecrire(”entrez un nombre”); Ecrire(”entrez un nombre”); Lire(n); Lire(n); si (n
4. Instructions conditionnelles et alternatives 4. 1. 4 Imbrication de Si. Dans de nombreuse applications, on peut avoir plusieurs cas d’exécution selon différentes conditions. Il faut donc exprimer beaucoup de ‘’ Si ‘’ les uns à la suite des autres pour englober tous les cas. Si (a < 0) alors Si (b < 0) alors Ecrire( "a et b sont négatifs " ); sinon Ecrire("a est négatif, b est positif ou b est nul "); fin si sinon Si b < 0 alors Ecrire( "b est négatif, a est positif ou a est nul"); sinon Ecrire( "a positif ou a est nul, b positif ou b est nul " ); fin si fin si Rq: Si par exemple a et b sont tous deux positifs, alors aucun des deux tests ne sera vraie, et c'est donc le sinon du sinon qui sera exécuté, a savoir Afficher " a positif ou a est nul, b positif ou b est nul
4. Instructions conditionnelles et alternatives 4. 1. 4 Imbrication de Si. Dans de nombreuse applications, on peut avoir plusieurs cas d’exécution selon différentes conditions. Il faut donc exprimer beaucoup de ‘’ Si ‘’ les uns à la suite des autres pour englober tous les cas. Exemple 1: Ecrire un algorithme permettant de résoudre une équation du premier degré ax+b=0. Exemple 2: Ecrire un algorithme permettant de résoudre une équation du seconde degré ax 2+bx+c=0 dans R. Solution:
4. Instructions conditionnelles et alternatives Algorithme equationPremierDgr; Var a,b, x: réels; Début Ecrire( ‘’Donner deux nombres a et b’’); Lire (a,b); Si (a=0) alors Si (b=0) alors Ecrire( ‘’Tous réel est solution de l’équation’’); Sinon Ecrire( ‘’ Impossible ’’); Finsi Sinon x -b/a; Ecrire (” La solution de l’équation est x=”, x); Finsi Fin
4. Instructions conditionnelles et alternatives Algorithme equationSecondDgr; Var a,b,c x,x1,x2,delta: réels; Début Ecrire( ‘’saisir les valeurs des nombres a,b et c’’); Lire (a,b,c); Si (a=0) ET(b=0)ET(c=0) alors Ecrire( ‘’Tous réel est solution de l’équation’’); Sinon Si (a=0)ET(b=0) alors Ecrire( ‘’ Impossible ’’); Sinon Si (a=0) alors Ecrire (” résolution de l’équation de premier degré bx+c=0”); x -c/b; Ecrire (” x=”, x); Sinon delta b*b-4*a*c;
4. Instructions conditionnelles et alternatives si (delta
4. Instructions conditionnelles et alternatives 4. 2 Instructions alternative: la primitive Selon Syntaxe selon faire liste de valeur1: ; liste de valeur2 :; liste de valeur3 : ; ………….. liste de valeurN>: ; Sinon :; Finselon Organigramme variable Sinon Valeur 1 Valeur 2 Valeur N Instru par Instru 1 Instru 2 Instru N defaut
4. Instructions conditionnelles et alternatives Remarques importantes L’instruction qui sera exécutée est celle qui correspondra à la valeur courante de la variable testée. Lorsque cette exécution est achevée, on va ignorer toutes les séquences instructions suivantes. Deux valeurs différentes peuvent entrainer un même traitement. Nous pouvons alors les regrouper séparées par des virgules avant de décrire le traitement. Si la variable n’est égale a aucune des valeurs testées, c’est l’instruction par défaut qui est exécutée. la variable de sélection doit être déclarée, et ne doit avoir q’un type discret( entier ou caractère mais pas un réel).
4. Instructions conditionnelles et alternatives 4. 2 Instructions alternative: la primitive Selon Exemple: Ecrire un algorithme qui permet de lire un numéro compris entre 1 et 12 et d’afficher le nom du mois correspondant. Si le numéro entré est en dehors de cet intervalle, un message d’erreur doit être affiché.
4. Instructions conditionnelles et alternatives 4. 2 Instructions alternative: la primitive Selon Exemple: Ecrire un algorithme qui permet de lire un numéro compris entre 1 et 12 et d’afficher le nom du mois correspondant. Si le numéro entré est en dehors de cet intervalle, un message d’erreur doit être affiché. Algorithme mois; Variables n : Entier Début Ecrire(”Entrer le numéro du mois : ”); Lire(n) Selon n Faire 1 : Ecrire(”janvier”) 2 : Ecrire(”février”) … 12 : Ecrire(”décembre”) Sinon Ecrire(”numéro de mois erroné... ”) FinSelon Fin.
4. Instructions conditionnelles et alternatives 4. 2 Instructions alternative: la primitive Selon Remarque :L’exercice précédent peut être résolu en utilisant plusieurs instructions « Si » imbriquées, mais l’algorithme sera très lourd : Algorithme mois; (* version Si *) Variables n : Entier Début Ecrire(”Entrer le numéro du mois : ”); Lire(n) Si (n=1) alors Ecrire(”janvier”) Sinon Si(n=2) alors Ecrire(”février”) Sinon Si(n=3) alors Ecrire(”mars”) … Fin. Exemple: Ecrire un algorithme qui permet de lire un numéro compris entre 1 et 7 et d’afficher le nom du jour correspondant.
4. 2. 2 En utilisant l’instruction Cas (selon) Algorithme Affiche_jour; Var jour: entier; Début Ecrire(‘’ entrer le chiffre de jour’’); Lire(jour); selon (jour) Faire 1: Ecrire(‘’ Lundi’’); 2: Ecrire(‘’ Mardi’’); 3: Ecrire(‘’ Mercredi’’); 4: Ecrire(‘’ Jeudi’’); 5: Ecrire(‘’ Vendredi’’); 6: Ecrire(‘’ Samedi’’); 7: Ecrire(‘’ Dimanche’’); Sinon \\ (Autre cas) Ecrire(‘’n’est pas un jour de la semaine’’); FinSelon Fin
Exemple2 ( version 1) Ecrivons un algorithme demandant a l'utilisateur le jour de la semaine. Affichons ensuite le jour correspondant au lendemain. Algorithme lendemain; Var erreur: entier; jour, lendemain: chaine de caracrtère; Début Ecrire(‘’ saisir un jour de la semaine’’); Lire(jour); Erreur0; Selon jour faire ‘’ Lundi’’: lendemain ‘’ Mardi’’; ‘’ Mardi’’: lendemain ‘’ Mercredi’’; ‘’ Mercredi’’: lendemain ‘’ Jeudi’’; ‘’ Jeudi’’: lendemain ‘’ Vendredi’’; ‘’ Vendredi’’: lendemain ‘’ Samedi’’; ‘’ Samedi’’: lendemain ‘’ Dimanche’’; ‘’ dimanche’’: lendemain ‘’ lundi’’; Sinon: Erreur1; \\ErreurVrai; FinSelon Si (erreur=1) Ecrire ("erreur de saisie"); Sinon Ecrire("Le lendemain du ", jour, " est ", lendemain, ".") finsi Fin
Version 2 On considère une variable booleen. Algorithme lendemain; Var erreur: booleen; jour, lendemain: chaine de caracrtère; Début Ecrire(‘’ saisir un jour de la semaine’’); Lire(jour); Erreurfaux; selon jour faire ‘’ Lundi’’: lendemain ‘’ Mardi’’; ‘’ Mardi’’: lendemain ‘’ Mercredi’’; ‘’ Mercredi’’: lendemain ‘’ Jeudi’’; ‘’ Jeudi’’: lendemain ‘’ Vendredi’’; ‘’ Vendredi’’: lendemain ‘’ Samedi’’; ‘’ Samedi’’: lendemain ‘’ Dimanche’’; ‘’ dimanche’’: lendemain ‘’ lundi’’; sinon ErreurVrai; FinSelon Si (erreur) Ecrire ("erreur de saisie"); Sinon Ecrire("Le lendemain du ", jour, " est ", lendemain, "." finsi Fin
REMARQUES Il y a une grande différence entre cet algorithme et celui utilisant les imbrications de Si. Ce dernier semble plus claire et lisible et il n’y a pas de risque d’erreurs 5. 3 Incrémentation et décrémentation -Incrémentation: C’est l’augmentation de la valeur d’une variable à chaque phase de l’exécution d’un programme (algorithme). -Décrémentation: C’est la diminution de la valeur d’une variable à chaque phase de l’exécution d’un programme (algorithme). Syntaxe: x ←x+step où ‘’step’’ est le pas d’incrémentation (ou de décrémentation).
Vous pouvez aussi lire