Cours Algorithmique et Programmation en Python (PDF)
Document Details

Uploaded by StateOfTheArtWilliamsite2515
Université Ibn Zohr
2024
Salma El Hajjami
Tags
Summary
This document is a course outline for an Algorithmic and Programming in Python course. It includes course objectives, course plan, references, and introduction to algorithmic concepts. The course is taught by Pr. Salma El Hajjami at the uiz.ac.ma university during the 2023-2024 academic year.
Full Transcript
Pr. Salma EL HAJJAMI Département Informatique Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python SMI/SMA ( FSA) A.U : 2023-2024 Présentation Responsable : EL HAJJAMI Salma Contact :...
Pr. Salma EL HAJJAMI Département Informatique Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python SMI/SMA ( FSA) A.U : 2023-2024 Présentation Responsable : EL HAJJAMI Salma Contact : Départ. Informatique [email protected] Cours : 1 CM /sem : Jeudi Amphi 5 Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 2 Objectifs Apprendre les concepts de base de l'algorithmique et de la programmation; Être capable de mettre en œuvre ces concepts pour analyser des problèmes simples et écrire les programmes correspondants. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 3 Plan du cours 1. Introduction à l’algorithmique et programmation 2. Les instructions élémentaires 3. Les instructions conditionnelles 4. Les instructions itératives 5. Les tableaux 6. Les fonctions et les procédures 7. Les algorithmes de recherche et tri Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 4 Références bibliographique Livres : Jacques Courtin, Irène Kowarski, « Initiation à l’algorithmique et aux structures de données », volume 1 et 2, Dunod Guy Chaty, Jean Vicard, « Programmation : cours et exercices», Ellipses F Utiliser internet et la bibliothèque!! G Poser des questions??? Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 5 Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 6 1. Introduction à l’algorithmique Définitions et terminologie ☞ Pourquoi un cours d’algorithmique ? Pour proposer à la « machine» d’effectuer un travail à notre place. Problème : expliquer à la machine comment elle doit le faire. Besoins : savoir expliquer et formaliser son problème Concevoir et écrire des algorithmes (séquence d’instructions qui décrit comment résoudre un problème particulier). Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 7 1. Introduction à l’algorithmique Définitions et terminologie Définitions : Informatique Traitement automatique de l'information grâce à - l’exécution - de programmes informatiques - sur des ordinateurs, robots (machines) On retiendra de cette définition : - information : il faut la représenter, la modéliser, la formaliser, la coder, etc. par l’humain. - programme : il faut les écrire, par l’humain ou bien les générer par d’autres programmes (compilateur, traducteur etc. par exemple) - exécution : réalisation des actions élémentaires. Il faut rendre les programmes compréhensibles par les machines Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 8 1. Introduction à l’algorithmique Définitions et terminologie Définitions : Ordinateur Terme générique qui désigne un équipement informatique permettant de traiter des informations sous forme binaire (0-1) selon des séquences d'instructions (les programmes) qui constituent le logiciel. Pour résoudre un problème donné à l’aide d’un ordinateur, il faut lui indiquer la suite d’instructions à exécuter. Cette suite d’actions est rassemblé dans un programme qui est exprimé dans un langage de programmation Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 9 1. Introduction à l’algorithmique Définitions et terminologie Définitions : Langage de programmation Haut niveau : proche de l’homme, vocabulaire et syntaxe plus riches Bas niveau : proche de la machine, instructions élémentaires Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 10 1. Introduction à l’algorithmique Définitions et terminologie Définitions : Langage machine (Bas niveau) Les instructions d’un programme sont enregistrées dans la mémoire vive en langage machine. Langage binaire: l’information est exprimée et manipulée sous forme d’une suite de bits. Un bit (binary digit) = 0 ou 1 (2 états électriques) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 11 1. Introduction à l’algorithmique Définitions et terminologie Définitions : L’assembleur Problème: le langage machine est difficile à comprendre par l'humain Idée: trouver un langage compréhensible par l'homme qui sera ensuite converti en langage machine Assembleur (1er langage): exprimer les instructions élémentaires de façon symbolique +: déjà plus accessible que le langage machine -: dépend du type de la machine (n’est pas portable) -: pas assez efficace pour développer des applications complexes Ø Apparition des langages évolués Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 12 1. Introduction à l’algorithmique Définitions et terminologie Définitions : Langage de programmation (Haut niveau) Un langage de programmation est une notation conventionnelle destinée à formuler des algorithmes et produire des programmes informatiques qui les appliquent. Intérêts multiples pour le haut niveau: Proche du langage humain «anglais» (compréhensible) Permet une plus grande portabilité (indépendant du matériel) Manipulation de données et d’expressions complexes (réels, objets, a*b/c, …) Nécessité d’un traducteur (compilateur/interpréteur) Code source en Traducteur Langage machine langage évolué Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 13 1. Introduction à l’algorithmique Définitions et terminologie Définitions : Compilateur / Interpréteur Compilateur : permet de traduire le code source du programme vers le langage natif (objet) de la machine (ou parfois vers du code intermédiaire). Le compilateur lit toutes les lignes du code source et produit un nouveau code appelé programme (ou code) objet ; Exemple : Le plus souvent, on l’utilise pour traduire un langage de haut niveau (Ada, C,... ) en un langage que l’on peut exécuter sur une machine donnée (le langage machine par exemple) Interpréteur est capable de comprendre (interpréter) un programme écrit dans un langage et de l’exécuter directement sur une machine donnée. Chaque ligne du code source analysé est traduite au fur et à mesure en quelques instructions du code binaire, qui sont exécutées immédiatement ; Exemples : L’interpréteur de commandes (shell), interpréteur Python. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 14 1. Introduction à l’algorithmique Définitions et terminologie Pourquoi apprendre l’algorithmique pour apprendre à programmer ? Ø Langage simple : des instructions séquentielle Ø Suite finie d'actions à entreprendre en respectant une chronologie imposée Un algorithme est indépendant de : ØLe langage dans lequel il est implémenté, ØLa machine qui exécutera le programme correspondant Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 15 1. Introduction à l’algorithmique Définitions et terminologie Algorithme : Origine Ø terme d’origine arabe, hommage à Al Khawarizmi Ø Savant musulman dont les écrits ont permis l'introduction de l'algèbre en Europe. Ø Il a publié plusieurs méthodes pour le calcul effectif de racines d’une équation du second degré. Ø Il s’agit d’une suite finie et non ambiguë d'instructions et d’opérations permettant de résoudre une classe de problèmes. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 16 1. Introduction à l’algorithmique Définitions et terminologie Définition Un algorithme est une description complète et détaillée des instructions à exécuter et de leur séquencement pour résoudre un problème. Ces instructions peuvent: ØS'enchaîner les unes après les autres, on parle alors de séquences d'instructions ØS'exécuter dans certains cas et pas dans d'autres, on parle alors de structures alternatives ØSe répéter plusieurs fois, on parle alors de structures répétitives Exemples (Algorithmes) Algorithme d’Euclide : Calcul de PGCD de deux entiers, Algorithme de Gauss-Jordan : Résolution du système d’équations linéaires, Algorithme du simplexe : Résolution des problèmes d’optimisation linéaire, Algorithme de Dijkstra : Résolution des problèmes de plus court chemin. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 17 1. Introduction à l’algorithmique Définitions et terminologie Résolution informatique d’un problème La résolution informatique d’un problème comporte deux grandes phases : La phase d’analyse du problème et conception d’un algorithme ; et la phase de traduction (ou implémentation ou programmation) de cet algorithme en un programme dans un langage de programmation. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 18 1. Introduction à l’algorithmique Définitions et terminologie Analyse du problème La phase d’analyse du problème consiste à analyser le problème pour en dégager les trois composantes suivantes : Entrées : les données connues du problème ; Sorties: les résultats cherchés; Traitement : l’ensemble fini des opérations nécessaires à effectuer sur les données du problème pour produire les résultats cherchés. Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 19 1. Introduction à l’algorithmique Définitions et terminologie Analyse du problème : Exemple de calcul de Prix TTC Exemple (Problème : Prix Toutes Taxes Comprises). A la vente d’un article, le propriétaire d’un magasin détermine le montant net à payer par le client en appliquant un taux de TVA de 20% sur le montant de la marchandise connaissant son prix unitaire et la quantité vendue. L’analyse de ce problème conduit à la détermination des composantes : Entrées (Données): Le prix unitaire, la quantité vendue et le taux TVA; Sorties (Résultats) : Le montant net à payer (Prix TTC) ; Traitement : 1.Obtenir le montant hors taxe en multipliant le prix unitaire par la quantité ; 2.Obtenir la taxe à payer en multipliant le montant hors taxe par le taux de TVA 3.Obtenir le montant net à payer en sommant la taxe et le montant hors taxe. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 20 1. Introduction à l’algorithmique Définitions et terminologie Conception d’un algorithme La phase de conception d’un algorithme consiste à organiser les traitements définis en phase d’analyse du problème dans l’ordre convenable de telle sorte que leur exécution aboutisse au résultats attendus. Cette organisation forme ce qu’on appelle « Algorithme ». Il est représenté sous forme d’un : Pseudo-code : Représentation littérale en langage usuel (plutôt formel ) ; Organigramme : Représentation graphique à l’aide de diagrammes. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 21 1. Introduction à l’algorithmique Définitions et terminologie Exemple d’organigramme pour le calcul de Prix TTC Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 22 1. Introduction à l’algorithmique Définitions et terminologie Exemple de pseudo-code pour le calcul de Prix TTC Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 23 1. Introduction à l’algorithmique Définitions et terminologie Phase d’implémentation Cette phase consiste à traduire l’algorithme obtenu au niveau de la phase de conception (représenté dans un langage formel ), en un programme (écrit dans un langage de programmation) facile à traiter par une machine. Exemple de programme en Python pour calculer le PTTC Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 24 Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 25 2. Les instructions élémentaires Formalisme d’un algorithme Formalisme d’un algorithme Un algorithme doit suivre les règles suivantes : Il est composé : Entête Algorithme NomAlgorithme Variable Identificateur : type Déclaration Constante Identificateur = valeur Début Instruction 1 Corps de Instruction 2 l’algorithme... Instruction 3 Fin Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 26 2. Les instructions élémentaires Notion de variable Notion de variable 3 - Une variable sert à stocker la valeur d’une donnée dans un langage de programmation. A - Une variable désigne un emplacement mémoire (boites étiquetées) dont le contenu peut changer au cours d’un programme (d’où le nom de variable). - Chaque variable possède un nom unique appelé identificateur par lequel on peut accéder à son contenu. Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 27 2. Les instructions élémentaires Déclaration d’une variable Déclaration d’une variable Les variables doivent être déclarées avant d’être utilisées Une variable est caractérisée par : ü Un nom : (identificateur) qui sert à la désigner ü Un type : définit la nature de l’information qui sera représentée dans la variable (numériques, caractères…) ü Une valeur : à un instant donné, une variable ne peut contenir qu’une seule valeur La déclaration d’une variable se fait comme suit : VARIABLE nom : TYPE ou VARIABLES nom1, nom2,… : TYPE Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 28 2. Les instructions élémentaires Choix des identificateurs Choix des identificateurs (1) Le choix des noms de variables est soumis à quelques règles, mais en général: Un nom doit commencer par une lettre alphabétique exemple valide: A1 exemple invalide: 1A Il doit être constitué uniquement de lettres, de chiffres et du soulignement _ (Eviter les caractères de ponctuation et les espaces) valides: SMI2007, SMI_2007 invalides: SMI 2007, SMI-2007, SMI;2007 Il doit être différent des mots réservés du langage (par exemple en Python: and, as, assert, elif, else, except, in, import, is, raise, return, True, break, False, lambda, try, class, finally, None, while, continue, def, for, global, not, or, with, yield, del, if, pass, …) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 29 2. Les instructions élémentaires Choix des identificateurs Choix des identificateurs (2) Conseil : Pour la lisibilité du code choisir des noms significatifs qui décrivent les données manipulées. Exemples: Nom_Joueur Prix_Achat Prix_Vente TVA Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 30 2. Les instructions élémentaires Types des variables Types des variables Le type d’une variable détermine: – La nature des informations qui seront représentées dans la variable – L’espace mémoire occupé par cette variable – Les opérations autorisées sur la variable Les types offerts par la plupart des langages sont: 1. Les types numériques - Entier (int): Le type entier désigne l’ensemble des nombres entiers négatifs ou positifs Exemple : VARIABLES i, j, k : ENTIER - Reel (float): Le type réel comprend les variables numériques qui ont des valeurs réelles Exemple: VARIABLES x, y : REEL Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 31 2. Les instructions élémentaires Types des variables Types des variables 2. Type logique ou booléen (bool) On y stocke uniquement des valeurs logiques VRAI ou FAUX ( TRUE ou FALSE) Exemple: VARIABLE etat : BOOLEEN 3. Type caractère (str) On y stocke un caractère (Lettres majuscules, minuscules, chiffres, symboles, …) Exemples de caractère: 'A' 'a' '1' '?' '@’ Exemple de déclaration: VARIABLE c : CARACTERE 4. Type chaîne de caractères (str) On y stocke une suite de caractères : Exemples de chaîne: "ahmed" "Bonjour" "faculté des sciences" Exemple: VARIABLES nom, prenom, adresse : CHAINE Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 32 2. Les instructions élémentaires Types des variables Types des variables En Python, La fonc/on type(⟨argument⟩) détermine le type d’⟨argument⟩ : Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 33 2. Les instructions élémentaires Notion de variable Notion de constante Une constante est une donnée fixe qui ne varie pas durant l’exécution d’un algorithme. Une constante est caractérisée par son nom et sa valeur (fixe) Déclaration : Constante nom_de_la_constante (type) = valeur Exemple: Constante pi (réel) = 3.14 En python : Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 34 2. Les instructions élémentaires L’instruction d’affectation L’instruction d’affectation L’affectation est l’opération qui consiste à attribuer une valeur à une variable En pseudo-code, l'affectation se note avec le signe ← On écrit alors : NomVariable ← valeur Ou NomVariable ← Expression Exemples: A ← 4 A ←B A ← B*2+5 MONTANT ← 3500 Où A, B et MONTANT sont des variables de type Entier Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 35 2. Les instructions élémentaires L’instruction d’affectation L’instruction d’affectation Variable et Expression doivent être de même type ou de types compatibles Exemple : A est une variable de type chaine de caractère : A ← " Bonjour " correcte A ← 4 faux L’affectation ne modifie que ce qui est à gauche de la flèche Exemple :A et B sont de type entier A ←2; B ←5 ; A ←B Remarques : En pseudo-code, la valeur de l’expression doit être compatible avec le type de la variable destinataire ; En Python, les données sont typées dynamiquement et peuvent changer de type après avoir été définies. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 36 2. Les instructions élémentaires L’instruction d’affectation L’instruction d’affectation L’ordre dans lequel les instructions sont écrites est important et influence le résultat final Exemple : Cas I Cas II A ← 15 A ← 30 A ← 30 A ← 15 Après l’exécution des deux instructions d’affectation, la valeur de A sera : üCas I : 30 üCas II : 15 Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 37 2. Les instructions élémentaires L’instruction d’affectation L’instruction d’affectation On peut attribuer à une variable la valeur d’une variable ou d’une expression Exemple en pseudo-code : 1. A← B 2. A← B* 2 +5 Exemple en python 1. B = 10 2. A = B # A prend la valeur de B 3. print(A) 4. Output: 10 Dans ce cas, l’instruction d’affectation sera exécutée en deux étapes : § D’abord, on calcule la valeur de l’expression § Puis, on affecte la valeur obtenue à la variable de gauche On peut même avoir le cas: A ← A + 5, dans cet exemple, après l’exécution de l’instruction d’affectation la valeur de la variable A sera augmentée de 5 Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 38 2. Les instructions élémentaires Les expressions Les expressions Une expression est une suite de variables combinées par un ensemble d’opérateurs Une expression est évaluée durant l’exécution, et possède une valeur (son interprétation) et un type Exemples en pseudo-code: a*2 a+3*b-c non(x = 4 vrai 10 13-6 retourne retourne 23 % 5 retourne 3 "Algo" & "rithmique" retourne "Algorithmique" Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 39 2. Les instructions élémentaires Les opérateurs Les opérateurs Un opérateur est un symbole d’opération qui permet d’agir sur des variables ou de faire des “calculs” Un opérateur peut être unaire ou binaire : üUnaire s’il n’admet qu’une seule donnée, Exemple : non A üBinaire s’il admet deux données Exemple : a+b Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 40 2. Les instructions élémentaires Les opérateurs Les opérateurs Un opérateur est associé à un type de donnée et ne peut être utilisé qu’avec des variables, des constantes, ou des expressions de ce type Exemple : ü L’opérateur « * » ne peut être utilisé qu’avec les types arithmétiques (entier et réel) ü On ne peut pas additionner un entier et une chaine de caractères Les opérateurs dépendent du type de l'opération, ils peuvent être : ü Des opérateurs arithmétiques : + , - , * , / , % (modulo) , ^ (puissance) ü Des opérateurs logiques : NON , OU , ET ü Des opérateurs relationnels (de comparaison) : = , < > , < , > , = ü Des opérateurs sur les chaînes : & (concaténation) ou + (en python) Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 41 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les numériques Opérateurs arithmétiques Exemple : 11 / 2 = 5 13.0/2.0= 6,5 13%2=1 Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 42 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les numériques Les opérateurs algébriques sont classés par ordre de priorité décroissante : ØLa négation unaire (-) (priorité la plus élevée) ØL'opérateur de puissance (^) ØLes opérateurs multiplicatifs (*, / , %) ØLes opérateurs additifs (+, -) (priorité la plus basse) Exemple: 2 + 3 *4 - 7 ? 2 +6/2+3 ? Les parenthèses sont utiles pour modifier cette priorité naturelle Exemple: (2 + 3) *4- 7 (2+6)/(2+3) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 43 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les numériques Les opérateurs relationnels (de comparaison) Le résultat d'une expression contenant ces opérateurs est un booléen Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 44 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les numériques Quelles seront les valeurs des variables A, B, C et D après exécution des instructions suivantes ? A←1 B←A+ 3 C ← (A-3)>=B D ← B< >A Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 45 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les numériques Traduisez ces instrucTons pseudo-code en Python en uTlisant des variables et des expressions : A←1 B←A+ 3 C ← (A-3)>=B D ← B< >A Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 46 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les numériques Quel sera la valeur des variables A, B, C, D et E après exécution de ces instructions ? ØLa négation unaire (-) (priorité la plus élevée) ØL'opérateur de puissance (^) A←5 ØLes opérateurs multiplicatifs (*, / , %) ØLes opérateurs additifs (+, -) (priorité la plus B←2*A basse) C←A/B+3 D ← A^2 - 2 * B E ← (D < C) (A >= B) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 47 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les chaines Pour les chaînes, on utilise l’opérateur & Cet opérateur permet de concaténer (agglomérer) deux chaines de caractères Exemple : A ← " Buvons " B ← " un café " C←A&B La varible C vaut : " Buvons un café " Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 48 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les chaines Remarques : Pour les chaînes de caractères en python, l’opérateur d’addition, +, désigne la concaténation. L’opérateur de multiplication, ∗, entre une chaîne de caractères et un entier n donne en résultat la répétition n fois de cette chaîne. Exemple (Concaténation et répétition de chaînes de caractères). >>> "Bon" + "jour" + " le monde." ’Bonjour le monde.’ >>> "Bla" + " Bla" ∗3 ’Bla Bla Bla Bla’ Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 49 2. Les instructions élémentaires Les opérateurs Autres opérateurs d’affectation Python reconnait également d’autres opérateurs, « composés », d’affectation permettant d’effectuer deux opérations à la suite : une première opération de calcul ; suivie immédiatement de l’opération d’affectation. Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 50 2. Les instructions élémentaires Les opérateurs Exemples d’affectation Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 51 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les Logiques Les opérateurs logiques sont : : NON, ET , OU, OU exclusif On a les tableaux suivants : C1 C2 C1 OU C2 VRAI VRAI VRAI C1 NON C1 VRAI FAUX VRAI VRAI FAUX FAUX VRAI VRAI FAUX VRAI FAUX FAUX FAUX C1 C2 C1 ET C2 C1 C2 C1 OU exclusif C2 VRAI VRAI VRAI VRAI VRAI FAUX VRAI FAUX FAUX VRAI FAUX VRAI FAUX VRAI FAUX FAUX VRAI VRAI FAUX FAUX FAUX FAUX FAUX FAUX Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 52 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les Booléens Associativité des opérateurs ET et OU A ET (B ET C) = (A ET B) ET C A OU (B OU C) = (A OU B) OU 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) Involution : NON NON A = A Loi de Morgan : NON (A OU B) = NON A ET NON B NON (A ET B) = NON A OU NON B Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 53 2. Les instructions élémentaires Les opérateurs Les opérateurs : ordre de priorité Niveau Opérateur Description 1 - + Unaire 1 NON NON logique 2 ^ Puissance Multiplication, Division et 3 * / % modulo 4 + - Addition et Soustraction 5 < >= = Opérateur de comparaison 6 OU exclusif OU logique exclusif 7 ET ET logique 8 OU OU logique inclusif Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 54 2. Les instructions élémentaires Les opérateurs Les opérateurs sur les Logiques Operateurs logiques : pseudo-code VS Python. Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 55 2. Les instructions élémentaires Les opérateurs Exercice : Niveau Opérateur Description Quelles seront les valeurs des 1 - + Unaire variables A, B et C après 1 NON NON logique exécution des instructions 2 ^ Puissance suivantes ? Multiplication, Division et 3 * / % modulo A ← (7+32) ET (99) 5 < >= = Opérateur de comparaison B ← NON A OU 6 OU exclusif OU logique exclusif NON Vrai 7 ET ET logique C ← B OU A >= 8 OU OU logique inclusif Vrai Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 56 2. Les instructions élémentaires Instructions de lecture et d’écriture Instructions de lecture et d’écriture Considérons l’algorithme suivant : ALGORITHME Calcul VARIABLE A : ENTIER Début A ← 12 ^ 2 Fin Si l’on veut calculer le carré d’un autre nombre que 12, il faut réécrire le programme Utiliser les instructions de lecture et écriture qui permettent le dialogue avec l’utilisateur Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 57 2. Les instructions élémentaires Instructions de lecture et d’écriture Instructions d’écriture C’est l’instruction qui permet à l’algorithme d’afficher des messages ou des résultats de calculs. Syntaxe en pseudo code: Syntaxe en python: ECRIRE (Variable) PRINT (Variable) ECRIRE (Message) PRINT (Message) De manière générale : De manière générale : ECRIRE (V1 , V2 , … , Vn) PRINT (V1 , V2 , … , Vn) Exemples : ECRIRE (A) ECRIRE (" bonjour " ) ECRIRE (" le périmètre = " , P ) Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 58 2. Les instructions élémentaires Instructions de lecture et d’écriture Instructions d’écriture Exemple En python Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 59 2. Les instructions élémentaires Instructions de lecture et d’écriture Instructions de lecture L’instruction LIRE permet à l’utilisateur de saisir des valeurs au clavier. En pseudo-code, on note: LIRE (NomVariable) La machine met la valeur entrée dans la zone mémoire nommée NomVariable Lorsque le programme rencontre une instruction LIRE, l’exécution du programme s’interrompt, attendant la saisie d’une valeur au clavier Dès que l’on appuie sur la touche "Entrée", le programme reprend son exécution Syntaxe générale : LIRE (NomVariable_1 , NomVariable_2 ,... , NomVariable_n) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 60 2. Les instructions élémentaires Instructions de lecture et d’écriture Instructions de lecture Remarque : Avant de lire une valeur au clavier, il est fortement conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit saisir Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 61 2. Les instructions élémentaires Instructions de lecture et d’écriture Méthodes de construction d’un algorithme simple (1/4) Exemple : Écrire un algorithme qui consiste a calculer l’air S d’un cercle selon la formule S = Pi * R2 Rappel : Pi = 3.14 et R le rayon du cercle Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 62 2. Les instructions élémentaires Instructions de lecture et d’écriture Méthodes de construction d’un algorithme simple (2/4) Méthodologie à suivre : constantes : Pi = 3.14 Variables : Rayon, Surface Types : Rayon, Surface : réel Expressions et affectation : Surface := Pi * (Rayon)2 Structures conditionnelles et les boucles : --- Opérations d’entrée-sortie : Lire (Rayon), Écrire (Surface) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 63 2. Les instructions élémentaires Instructions de lecture et d’écriture Méthodes de construction d’un algorithme simple (1/4) ALGORITHME Calcul_Aire Constante Pi = 3,14159 Variables Rayon, Surface : réels Début Ecrire(‘’ Saisir le rayon : ’’) lire (Rayon) Surface 5000) ALORS montant ← montant * 0.9 FINSI Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 91 3. Structures de contrôle conditionnelles Structures conditionnelles Les structures alternatives Exemple 2: Ecrire un algorithme permettant d’afficher la valeur absolue d’un nombre. Ensuite, rédige le script python correspondant. Algorithme ValeurAbsolue_1 Variable x : réel Début # Demande à l'utilisateur d'entrer un nombre Ecrire(" Entrez un nombre : ") x = float(input("Entrez un nombre : ")) Lire(x) # Vérifie si le nombre est négatif et calcule sa valeur absolue Si (x < 0) alors if x < 0: Ecrire("la valeur absolue de ", x, " print("La valeur absolue de", x, "est :", -x) else: est: ", -x) print("La valeur absolue de", x, "est :", x) Sinon Ecrire("la valeur absolue de ", x, " est: ", x) FinSi Fin Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 92 3. Structures de contrôle conditionnelles Structures conditionnelles Les structures alternatives Exemple 2 : Ecrire un algorithme permettant d’afficher la valeur absolue d’un nombre. Ensuite, rédige le script python correspondant. Algorithme ValeurAbsolue_2 # Demande à l'utilisateur d'entrer un nombre Variables x, absx : réel x = float(input("Entrez un nombre : ")) Début Ecrire(" Entrez un nombre : ") # Initialise absx avec la valeur de x Lire(x) absx = x absx← x # Vérifie si x est négatif et calcule sa valeur Si (x < 0) alors # absolue si nécessaire absx← (-1)* x if x < 0: absx = abs(x) FinSi Ecrire("la valeur absolue de ", x, " est: ", # Affiche la valeur absolue absx) print("La valeur absolue de", x, "est :", absx) Fin Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 93 3. Structures de contrôle conditionnelles Structures conditionnelles Les structures alternatives Exercice: Ecrire un algorithme permettant d’afficher si un nombre saisi par l’utilisateur est pair ou impair. Ensuite, rédige le script python correspondant. Algorithme PairOuImpair Variable x : Entier Début # Demande à l'utilisateur un nombre entier Ecrire(" Entrez un nombre : ") x = int(input("Entrez un nombre : ")) Lire(x) # Vérifie si le nombre est pair ou impair et Si (x mod 2=0) alors #affiche le résultat Ecrire(x , "est pair ") if x % 2 == 0: print(x, "est pair.") Sinon else: Ecrire(x , "est impair ") print(x, "est impair.") FinSi Fin Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 94 3. Structures de contrôle conditionnelles Structures conditionnelles Les conditions simples Une condition simple consiste en une comparaison entre deux expressions de même type Cette comparaison s'effectue avec des opérateurs de comparaison dont voici la liste: Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 95 3. Structures de contrôle conditionnelles Structures conditionnelles Les conditions complexes Une condition complexe est formée de plusieurs conditions simples reliées entre elles par des opérateurs logiques: ET (and), OU (or), et NON (not). Exemples : üA compris entre -4 et 1 : (A > -4) ET (A < 1) ün divisible par 5 ou par 7 : (n mod 5=0) OU (n mod 7=0) üAu moins deux valeurs sont identiques parmi a, b et c : (a=b) OU (a=c) OU (b=c) L'évaluation d'une condition composée se fait selon des règles présentées généralement dans les tables de vérité Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 96 3. Structures de contrôle conditionnelles Structures conditionnelles Les conditions alternatives imbriquées Une structure alternative peut contenir à son tour une autre structure alternative. Dans ce cas, on parle de structures alternatives imbriquées Si (condition1) alors # Structure alternative imbriquée en Python Si (condition2) alors if condition1: instructionsA if condition2: Sinon # instructionsA instructionsB else: Finsi # instructionsB Sinon else: Si (condition3) alors if condition3: instructionsC # instructionsC # Fin de la structure alternative imbriquée Finsi Finsi Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 97 3. Structures de contrôle conditionnelles Structures conditionnelles Les conditions alternatives imbriquées Exemple : Ecrire un algorithme qui donne l’état de l’eau selon sa température. Ensuite, rédige le script python correspondant. Algorithme EtatEau VARIABLE Temp : ENTIER Debut ECRIRE (“Entrez la température de l’eau :”) Temp = int(input("Entrez la température de l'eau : ")) LIRE (Temp) Si (Temp 0: Si (a< 0) Alors print("Nombre positif") Ecrire(" Nombre négatif ") elif a < 0: Sinon print("Nombre négatif") Ecrire(" Valeur nulle ") else: Finsi print("Valeur nulle") FinSi Fin Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 99 3. Structures de contrôle conditionnelles Structures conditionnelles Les conditions alternatives imbriquées Exercice: Ecrire un algorithme qui détermine si un entier saisi par l’utilisateur est positif, négatif ou nul. Ensuite, rédige le script python correspondant. Algorithme SigneEntier (V2) Variable a : ENTIER Debut Remarque : dans la version 2 on ECRIRE(“Saisir un entier:”) fait trois tests systématiquement LIRE(a) alors que dans la version 1, si le Si (a > 0 ) Alors nombre est positif on ne fait qu'un Ecrire(" Nombre positif ") seul test. FinSi Si (a < 0) Alors Conseil : utiliser les tests Ecrire(" Nombre négatif ") imbriqués pour limiter le nombre FinSi de tests et placer d'abord Si (a = 0) Alors les conditions les plus probables Ecrire(" Valeur nulle ") Finsi Fin Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 100 3. Structures de contrôle conditionnelles Structures conditionnelles Structure conditionnelle : Plusieurs alternatives La structure conditionnelle avec plusieurs alternatives, également connue sous le nom de structure if, elif, else en Python, est une construction de contrôle de flux qui permet d'évaluer plusieurs conditions dans un ordre spécifié. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 101 3. Structures de contrôle conditionnelles Structures conditionnelles Structure conditionnelle : Plusieurs alternatives Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 102 3. Structures de contrôle conditionnelles Structures conditionnelles La structure selon Utilisée lorsqu’on doit comparer une même variable avec plusieurs valeurs Syntaxe : Si expression est égale à valeur_i, on exécute bloc_instruction_i et on passe à la suite de l’algorithme. Sinon on exécute bloc_instructions et on passe à la suite de l’algorithme Cette structure conditionnelle est appelée aussi à choix multiple ou sélective car elle sélectionne entre plusieurs choix à la fois, et non entre deux choix alternatifs Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 103 3. Structures de contrôle conditionnelles Structures conditionnelles La structure selon Exercice: Ecrire un algorithme qui demande à l’utilisateur de saisir un entier entre 1 et 7 et affiche le jour de la semaine correspondant. Ensuite, rédige le script python correspondant. Algorithme JourSemaine Variable a : ENTIER a = int(input("Saisir un entier : ")) Début ECRIRE(" Saisir un entier: ") if a == 1: LIRE(a) print("Lundi") elif a == 2: SELON (a) print("Mardi") Cas 1 : Ecrire(" Lundi ") elif a == 3: Cas 2 : Ecrire(" Mardi ") print("Mercredi") elif a == 4: Cas 3 : Ecrire(" Mercredi") print("Jeudi") Cas 4 : Ecrire(" Jeudi ") elif a == 5: Cas 5 : Ecrire(" Vendredi ") print("Vendredi") elif a == 6: Cas 6 : Ecrire(" Samedi") print("Samedi") Cas 7 : Ecrire(" Dimanche ") elif a == 7: Autre : Ecrire(" valeur erronée ") print("Dimanche") else: print("Valeur erronée") FIN SELON Fin Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 104 3. Structures de contrôle conditionnelles Structures conditionnelles Exercices 1. Ecrire un algorithme qui lit trois entiers A, B et C, et affiche le plus grand. Ensuite, rédige le script python correspondant. 2. Écrire l’algorithme qui lit 3 nombres et qui teste si l’un de ces derniers est égal à la somme des deux autres. Si un tel nombre existe on l’affiche, sinon on affiche un message. Ensuite, rédige le script python correspondant. 3. Étant donnés 2 nombres a et b, écrire l’algorithme qui résout l’équation du premier degré: ax +b =0. Ensuite, rédige le script python correspondant. Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 105 3. Structures de contrôle conditionnelles Structures conditionnelles Solution: 1- Ecrire un algorithme qui lit trois entiers A, B et C, et affiche le plus grand. Ensuite, rédige le script python correspondant. Algorithme Plus_grand_nombre Variables A, B, C : entiers Début A = int(input("Donner A : ")) Ecrire ("Donner A, B et C ") ; B = int(input("Donner B : ")) Lire (A, B, C) ; C = int(input("Donner C : ")) Si (A > B) ET (A>C) alors Si (A > C) alors Ecrire ("Le plus grand nombre est : if A > B: ", A) if A > C: print("Le plus grand nombre est :", A) Sinon Ecrire ("Le plus grand nombre est : ", C) else: FinSi print("Le plus grand nombre est :", C) Sinon else: Si (B > C) alors Ecrire ("Le plus grand nombre est : if B > C: ", B) print("Le plus grand nombre est :", B) Sinon Ecrire ("Le plus grand nombre est : ", C) else: FinSi print("Le plus grand nombre est :", C) FinSi Fin Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 106 3. Structures de contrôle conditionnelles Structures conditionnelles Solution: 2- Écrire l’algorithme qui lit 3 nombres et qui teste si l’un de ces derniers est égal à la somme des deux autres. Si un tel nombre existe on l’affiche, sinon on affiche un message. Ensuite, rédige le script python correspondant. Algorithme Test_SommeV1 # Demande à l'utilisateur d'entrer trois nombres Variables a, b, c : réel a = float(input("Entrez le 1er nombre : ")) Début b = float(input("Entrez le 2eme nombre : ")) Ecrire(" Entrez le 1er nombre :"); c = float(input("Entrez le 3eme nombre : ")) Lire(a); Ecrire("Entrez le 2eme nombre :"); # Vérifie si l'un des nombres est égal à la somme des Lire(b); deux autres if a == b + c: Ecrire("Entrez le 3eme nombre :"); print("Le nombre", a, "est égal à la somme de :", Lire(c); b, c) Si (a = b + c) Alors Ecrire(" Le nombre " , a, " est égal a la somme elif b == a + c: de :", b,c); print("Le nombre", b, "est égal à la somme de :", Sinon Si(b = a + c) Alors Ecrire(" Le nombre " , b, " est égal a la a, c) somme de :", a,c); elif c == a + b: Sinon Si(c = a + b) Alors Ecrire(" Le nombre " , c, " est égal a la print("Le nombre", c, "est égal à la somme de :", a, b) somme de :", a,b); else: Sinon Ecrire("Aucun nombre égal à la somme des deux autres"); print("Aucun nombre est égal à la somme des deux FinSi autres") Fin Pr. Salma EL HAJJAMI Algorithmique et ProgrammaAon en Python 107 3. Structures de contrôle conditionnelles Structures conditionnelles Solution: 2- Écrire l’algorithme qui lit 3 nombres et qui teste si l’un de ces derniers est égal à la somme des deux autres. Si un tel nombre existe on l’affiche, sinon on affiche un message. Ensuite, rédige le script python correspondant. Algorithme Test_SommeV2 Variables a, b, c : réel Début # Demande à l'utilisateur d'entrer trois nombres Ecrire(" Entrez le 1er nombre :"); a = float(input("Entrez le 1er nombre : ")) Lire(a); b = float(input("Entrez le 2eme nombre : ")) Ecrire("Entrez le 2eme nombre :"); c = float(input("Entrez le 3eme nombre : ")) Lire(b); # Vérifie si au moins un nombre est égal à la somme Ecrire("Entrez le 3eme nombre :"); des deux autres Lire(c); if a == b + c or b == a + c or c == a + b: Si ((a = b + c) ou (b = a + c) ou (c = a + b)) Alors print("Le nombre existe") Ecrire(" Le nombre existe); else: Sinon Ecrire("Aucun nombre égal à la somme des print("Aucun nombre est égal à la somme des deux autres"); deux autres") FinSi Fin Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 108 3. Structures de contrôle conditionnelles Structures conditionnelles Solution: 3- Étant donnés 2 nombres a et b, écrire l’algorithme qui résout l’équation du premier degré: ax +b =0. Ensuite, rédige le script python correspondant. Algorithme Equation_1erDegré # Demande à l'utilisateur d'entrer les valeurs de a variables a, b : réel et b Début a = float(input("Introduisez a : ")) écrire ("Résolution de ax + b = 0 ") b = float(input("Introduisez b : ")) écrire ("Introduisez a: ") lire a # Vérifie et résout l'équation du premier degré ax Écrire( "Introduisez b:" ) + b = 0 if a == 0: lire b if b == 0: si a=0 alors si b=0 alors écrire ("Equation indéterminée." ) print("Équation indéterminée.") sinon écrire ("Equation impossible. ") else: finsi print("Équation impossible.") sinon écrire "x = ", -b/a else: Finsi solution = -b / a Fin print("x =", solution) Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 109 3. Structures de contrôle conditionnelles Structures conditionnelles Exercices 6. A partir d’un montant lu, on détermine un montant net par application d’une remise de : 1% si le montant est compris entre 2000 et 5000 Dhs (valeurs comprises) 2 % si le montant est supérieur à 5000 Dhs. 7. Ecrire un programme calculatrice permettant la saisie de deux entiers et une opération ( +, - , / , * ) et affichant le résultat. Ensuite, rédige le script python correspondant. 8. Écrire un algorithme qui affiche le mois correspondant à la valeur tapée par l’utilisateur. 04 → Exécution → Avril. Ensuite, rédige le script python correspondant. Pr. Salma EL HAJJAMI Algorithmique et Programmation en Python 110 3. Structures de contrôle conditionnelles Structures conditionnelles Solution 6. A partir d’un montant lu, on détermine un montant net par application d’une remise de : 1% si le montant est compris entre 2000 et 5000 Dhs (valeurs comprises) 2 % si le montant est supérieur à 5000 Dhs. Algorithme Calcul_Montant # Demande à l'utilisateur d'entrer le montant montant = float(input("Entrez le montant : ")) Variables montant , taux : Réels # Calcule le taux en fonction du montant Début if montant < 2000: Ecrire “Entrez le montant : ” taux = 0 Lire montant elif montant