Université Mohammed V Faculté des Sciences de Rabat Informatique 1 Algorithmique 1 - Python Tronc Commun : MIP Mathématiques/Informatique/Physique Département d’Informatique Semestre : 1 Pr. O. IBRIHICH E-mail : o.ibrihich@um5r.ac.ma Année Universitaire : 2023-2024 Avenue Ibn Battouta B.P. 1014 RP, Rabat - Maroc Tel + 212 (0) 5 37 77 18 34/35/38, Fax : + 212 (0) 5 37 77 42 61, decanat@fsr.ac.ma Objectifs du cours Ce cours a pour but d(’)e : — Apprendre et maîtriser 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 algorithmes correspondants ; — Initier à la programmation en langage Python ; — Acquérir des connaissances sur les fonctions et les modules pour organiser le code ; — Explorer les bibliothèques standard de Python pour des tâches courantes ; — Se familiariser avec les bonnes pratiques de programmation et la gestion d’erreurs. 2 Table des matières Objectifs du cours. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Table des matières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Table des figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Chapitre 1: Introduction à l’algorithmique & Python . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 1.2 Introduction à l’algorithmique . . . . . . . . . . . . . 1.1.1 Notion d’un algorithme . . . . . . . . . . . . . 1.1.2 Concepts importants en informatique . . . . . 1.1.3 Conception d’un algorithme . . . . . . . . . . 1.1.4 Les problèmes fondamentaux en algorithmique 1.1.5 Les caractéristiques d’un Algorithme . . . . . 1.1.6 Propriétés d’un algorithme . . . . . . . . . . . 1.1.7 Représentation d’un algorithme . . . . . . . . 1.1.8 Structure d’un algorithme . . . . . . . . . . . Introduction au language Python . . . . . . . . . . . 1.2.1 Définition du langage Python . . . . . . . . . 1.2.2 Caractéristiques du langage Python . . . . . . 1.2.3 Versions du Python . . . . . . . . . . . . . . . 1.2.4 Installation du Python . . . . . . . . . . . . . 1.2.5 Environnement du Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 9 10 10 11 11 12 12 13 13 14 15 15 16 Chapitre 2: Instructions élémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1 2.2 2.3 Les variables . . . . . . . . . . . 2.1.1 Définition d’une variable 2.1.2 Déclaration des variables Une constante . . . . . . . . . . Les types de données de base . 2.3.1 Type Entier . . . . . . . 2.3.2 Type Réél . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 18 20 20 21 21 4 Table des matières 2.4 2.5 2.6 2.7 2.3.3 Type Booléen . . . . . . . . . . 2.3.4 Type complexe . . . . . . . . . 2.3.5 Type Caractère . . . . . . . . . 2.3.6 Type Chaîne de caractères . . . Affectation et notation . . . . . . . . . 2.4.1 Définition . . . . . . . . . . . . 2.4.2 Les variantes de l’affectation . . Les opérations . . . . . . . . . . . . . . 2.5.1 Définitions . . . . . . . . . . . . 2.5.2 Les opérateurs Arithmétiques . 2.5.3 Les opérateurs Logiques . . . . 2.5.4 Les opérateurs de Comparaison 2.5.5 Priorité des opérations . . . . . Transtypage . . . . . . . . . . . . . . . Les entrées/sorties . . . . . . . . . . . 2.7.1 Saisie de données . . . . . . . . 2.7.2 Affichage de résultats . . . . . . 2.7.3 Les séquences d’échappement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 22 22 23 29 29 31 32 33 33 33 34 34 36 36 36 38 40 Chapitre 3: Structures de contrôle : conditionnelles et répétitives . . . . . . . . . . . . . . . 42 3.1 3.2 3.3 3.4 3.5 3.6 Introduction . . . . . . . . . . . . . . . . . . . . . Les instructions séquentielles . . . . . . . . . . . . 3.2.1 Définition . . . . . . . . . . . . . . . . . . 3.2.2 La syntaxe . . . . . . . . . . . . . . . . . . Les instructions conditionnelles : if, else, elif . . . Les boucles while et for . . . . . . . . . . . . . . . Les instructions break et continue . . . . . . . . . Les notions de bloc d’instructions et d’indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 42 43 43 43 43 43 Chapitre 4: Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.1 4.2 4.3 4.4 4.5 Définition des tableaux . . . . . . . . . Manipulation des tableaux . . . . . . . 4.2.1 La création . . . . . . . . . . . 4.2.2 l’affectation . . . . . . . . . . . 4.2.3 la manipulation de tableaux . . Les boucles pour parcourir un tableau . Les Algorithmes de tri . . . . . . . . . Les Algorithmes de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 44 44 44 44 44 44 44 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pr. O.IBRIHICH Informatique 1 Table des figures 1.1 1.2 1.3 1.4 1.5 1.6 Exemple d’algorithme : Recette de la pâte à crêpe . . Chaîne de compilation . . . . . . . . . . . . . . . . . Chaîne d’interprétation . . . . . . . . . . . . . . . . . Représentation de l’algorithme . . . . . . . . . . . . . Structure générale d’un algorithme . . . . . . . . . . Fenêtre de commande fournie avec le langage Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . 9 . 9 . 12 . 13 . 16 2.1 2.2 2.3 2.4 2.5 L’indexation d’une chaîne Extraction de sous-chaînes L’affectation illustrée . . . Priorité des opérations . . Les entrées-sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 31 35 36 Liste des tableaux 2.1 2.2 2.3 2.4 2.5 2.6 2.7 La table de vérité . . . . . . . . . . . . . . . . . . . . Opérations applicables aux chaînes de caractères . . . Opérations élémentaires sur les chaînes de caractères Les opérateurs arithmétiques . . . . . . . . . . . . . . Les opérateurs logiques . . . . . . . . . . . . . . . . . Les opérateurs de comparaison . . . . . . . . . . . . . Les séquences d’échappement . . . . . . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 24 26 33 34 35 40 Chapitre 1 1.1 Introduction à l’algorithmique & Python Introduction à l’algorithmique L’algorithmique est un terme d’origine arabe, hommage à Al Kha- warizmi (780-850) auteur d’un ouvrage décrivant des méthodes de calculs algébriques. Il est un mathématicien, géographe, astrologue et astronome musulman arabe dont les écrits ont permis l’introduction de l’algèbre en Europe. q Ce savant arabe a publié plusieurs méthodes pour le calcul effectif de racines d’une équation du second degré et grâce à lui les chiffres arabes ont pu se diffuser en occident. q Le terme algorithme est un mot dérivé du nom du mathématicien Al Khwarizmi qui a vécu au 9ème siècle, était membre d’un académie des sciences à Bagdad. Il est employé en informatique pour décrire une méthode de résolution de problème programmable sur machine. q L’algorithmique désigne la discipline qui étudie les algorithmes et leurs applications en informatique. q Une bonne connaissance de l’algorithmique permet d’écrire des algorithmes exacts et efficaces. 1.1.1 Notion d’un algorithme Définition 1 - Un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données pour arriver avec certitude, en un nombre fini d’étapes, à un certain résultat et cela, indépendamment des données. Un peu plus précisément : Une séquence de pas de calcul qui prend un ensemble de valeurs comme entrée et produit un ensemble de valeurs comme sortie. 7 Chapitre 1 Introduction à l’algorithmique & Python 8 Définition 2 - Un algorithme est une méthode de résolution de problème énoncée sous la forme d’une série d’opérations à effectuer. La mise en œuvre de l’algorithme consiste en l’écriture de ces opérations dans un langage de programmation et constitue alors la brique de base d’un programme informatique. Définition 3 - Un algorithme est une suite finie et ordonnée d’opérations (actions) élémentaires finies (en temps et moyens). Elle est régie par un ensemble de règles ou d’instructions de contrôle (séquencement, sélection et itération) permettant d’aboutir à un résultat déterminé d’un problème donné. Remarque 1.1 3 Les algorithmes ne sont pas nés avec l’informatique : L’algorithme d’Euclide pour calculer le PGCD de deux entiers est vieux de plus de 2000 ans !, aussi des descriptions précises d’algorithmes sont présents dans la Chine ancienne (Par exemple, pour extraire des racines carrées à partir de divisions effectuées sur une "surface à calculer"). 3 En principe un algorithme est indépendant de toute implantation. Cependant dans la pratique de la programmation il s’avère indispensable de tenir compte des capacités du langage de programmation utilisé. En plus, un problème donné pourraient correspondre plusieurs algorithmes. Exemple 1.1 Recette de cuisine : Recette de la pâte à crêpe 1. Préparer les ingrédients (Farine, œufs, sel, lait) ; 2. Verser la farine et le sel dans le saladier ; 3. Casser les œufs, mélanger avec une cuillère en bois et ajouter progressivement le lait sans cesser de tourner ; 4. Laisser reposer la pâte pendant une heure ; 5. Faire chauffer la poêle, Verser-y une louche de pâte. Répartir-la bien en bougeant la poêle. Faire cuire une crêpe fine. Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 9 Figure 1.1 – Exemple d’algorithme : Recette de la pâte à crêpe 1.1.2 Concepts importants en informatique q Un programme : Une série d’instructions pouvant s’exécuter en séquence, ou en parallèle (parallélisme matériel) qui réalise (implémente) un algorithme. q Une instruction : Ce terme est assez vague et dépend en général du langage. On peut considérer qu’une instruction est une expression syntaxiquement correcte pour un langage donné. q Un problème : Expliquer à la "machine" comment elle doit s’y prendre. q Un langage de programmation : En informatique, un langage de programmation est une notation conventionnelle destinée à formuler des algorithmes et produire des programmes informatiques qui les appliquent. q Un compilateur : Un programme qui traduit le texte dans un langage qui permettra son exécution, tel le langage machine, le byte code ou le langage assembleur. La compilation est le fait de traduire un programme afin que l’ordinateur le comprenne. Figure 1.2 – Chaîne de compilation q Un interpréteur : Un programme qui exécute les instructions demandées. Il joue le même rôle qu’une machine qui reconnaîtrait ce langage. Figure 1.3 – Chaîne d’interprétation Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 10 q Un Langage machine : Les instructions permettent d’effectuer des calculs arithmétiques ou logiques, déplacer ou copier des données vers l’exécution d’autres instructions. Ces instructions sont enregistrées sous forme de séquences de bits, oú chaque séquence correspond au code de l’opération à effectuer et aux opérandes, c’est-à-dire aux données concernées ; c’est le langage machine. q Un Langage interprété est converti en instructions propres à la machine au fur et à mesure de son exécution. q Un mot-clé est une composante du langage et fait partie de sa grammaire qui comprend également les opérateurs numériques. 1.1.3 Conception d’un algorithme La conception d’un algorithme est un peu compliqué et se fait toujours en plusieurs étapes qui correspondent à des raffinements successifs. La première version de l’algorithme est autant que possible indépendante d’une implémentation particulière. Cette conception passe par plusieurs étapes : 1. Analyse : définition du problème en terme de séquences d’opérations de calcul de stockage de données, etc. ; 2. Conception : définition précise des données, des traitements et de leur séquencement ; 3. Implantation : traduction et réalisation de l’algorithme dans un langage précis ; 4. Test : Vérification du bon fonctionnement de l’algorithme. On peut les résumer en trois étapes fondamentales : 1. Les entrées : Il s’agit de repérer les données nécessaires à la résolution du problème ; 2. Le traitement : Il s’agit de déterminer toutes les étapes des traitements à faire et donc des "instructions" à développer pour arriver aux résultats ; 3. Les sorties : les résultats obtenus peuvent être affichés sur l’écran, ou imprimés sur papier, ou bien encore conservés dans un fichier. 1.1.4 Les problèmes fondamentaux en algorithmique 1. Complexité • En combien de temps un algorithme va -t-il atteindre le résultat escompté ? Pr. O.IBRIHICH Informatique 1 Chapitre 1 11 Introduction à l’algorithmique & Python • De quel espace a-t-il besoin ? 2. Calculabilité • Existe-t-il des tâches pour lesquelles il n’existe aucun algorithme ? • Etant donnée une tâche, peut-on dire s’il existe un algorithme qui la résolve ? 3. Correction • Peut-on être sûr qu’un algorithme réponde au problème pour lequel il a été conçu ? 1.1.5 Les caractéristiques d’un Algorithme Un algorithme est une marche à suivre : 1. dont les opérations sont toutes définies et portent sur des objets appelés informations, 2. dont l’ordre d’exécution des opérations est défini sans ambiguïté, 3. qui est réputée résoudre de manière certaine un problème ou une classe de problèmes, 4. s’exprime dans un langage indépendant des langages de programmation, 5. Il est caractérisé par un début et une fin. 1.1.6 Propriétés d’un algorithme Propriété 1 Un algorithme doit : / avoir un nombre fini d’étapes, / avoir un nombre fini d’opérations par étape, / se terminer après un nombre fini d’opérations, / fournir un résultat. Chaque opération doit être : / définie rigoureusement et sans ambiguïté ; / effective, c-à-d. réalisable par une machine. Le comportement d’un algorithme est déterministe. Pr. O.IBRIHICH Informatique 1 Chapitre 1 1.1.7 Introduction à l’algorithmique & Python 12 Représentation d’un algorithme Deux types de notations ont représenté des algorithmes : • L’organigramme représente graphiquement l’algorithme (avec des carrés, des losanges, etc). C’est visuel (un dessin vaut mille mots !), mais ça exige plus de travail de mise en page et plus d’espace sur papier. • Le pseudo-code représente textuellement l’algorithme. Moins visuel, mais plus facile à mettre sur papier et requiert moins d’espace. Figure 1.4 – Représentation de l’algorithme Remarque 1.2 3 Le pseudo-code est généralement préféré à l’organigramme. Il est plus rapide à écrire et plus facile à traduire en un langage de programmation. 1.1.8 Structure d’un algorithme Lorsqu’on écrit un algorithme, il faut respecter la syntaxe (règles d’écriture d’un langage donné), un algorithme écrit en pseudo-code est composé de trois parties suivantes : L’en-tête, la partie déclarative et le corps. Un algorithme prend généralement la structure suivante : 1. L’en-tête d’un algorithme : L’en-tête d’un algorithme est constitué du mot Algorithme, suivi d’un nom identifiant l’algorithme. 2. La partie déclarative : Comprend une liste des variables et des constantes utilisés et manipulés dans le corps de l’algorithme. 3. Les données d’un algorithme : Les données (objets) sont des informations nécessaires au déroulement d’un algorithme. On distingue deux catégories : les constantes et les variables. Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 13 Figure 1.5 – Structure générale d’un algorithme 1.2 Introduction au language Python Python a été créé en 1991 par Guido van Rossum, né en 1956 à Haar- lem, aux Pays-Bas. Bien sûr, Guido van Rossum n’a pas développé et fait évoluer lui-même tous les composants Python. Entre 1995 et 2001, Rossum a changé plusieurs fois de travail tout en continuant l’élaboration du langage Python. En 2001, la PSF (Python Software Foundation) est créée. Il s’agit d’une organisation à but non lucratif détenant les droits de propriété intellectuelle de Python. Il est depuis distribué sous forme de logiciel libre. Python est couvert par sa propre licence. 1.2.1 Définition du langage Python Définition - Python est un langage de programmation largement utilisé, interprété, orienté objet et de haut niveau avec une sémantique dynamique, utilisé pour la programmation à usage général. Remarque 1.3 3 Le langage Python n’est pas un langage compilé car un programme Python n’est pas traduit en langage machine, il est un langage interprété. 3 Entre son écriture et son exécution, il n’y a pas d’étape intermédiaire telle que la compilation et on peut ainsi tester un programme plus rapidement même si son exécution est alors plus lente. Pr. O.IBRIHICH Informatique 1 Chapitre 1 1.2.2 Introduction à l’algorithmique & Python 14 Caractéristiques du langage Python Ce langage de programmation présente de nombreuses caractéristiques intéressantes : q Il est multi-plateforme. C’est-à-dire qu’il fonctionne sur de nombreux systèmes d’exploitation : Windows, Mac OS X, Linux, Android, iOS. q Il est gratuit. Vous pouvez l’installer sur autant d’ordinateurs que vous voulez (même sur votre téléphone !). q C’est un langage de haut niveau. Il demande relativement peu de connaissance sur le fonctionnement d’un ordinateur pour être utilisé. q C’est un langage interprété. Un script Python n’a pas besoin d’être compilé pour être exécuté, contrairement à des langages comme le C ou le C++. q Il est orienté objet. C’est-à-dire qu’il est possible de concevoir en Python des entités qui miment celles du monde réel (une cellule, une protéine, un atome, etc.) avec un certain nombre de règles de fonctionnement et d’interactions. En plus, Il supporte l’héritage multiple et la surcharge des opérateurs. Dans son modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelles. q La syntaxe de Python est très simple et, combinée à des types de données évolués (listes, dictionnaires...), conduit à des programmes à la fois très compacts et très lisibles. À fonctionnalités égales, un programme Python est souvent de 3 à 5 fois plus court qu’un programme équivalent (C ou C++ ou même Java), ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue. q La bibliothèque standard de Python, et les paquetages contribués, donnent accès à une grande variété de services : chaînes de caractères et expressions régulières, services UNIX standards (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...), persistance et bases de données, interfaces graphiques. q Il n’y a pas de pointeurs explicites en Python. q Python intègre, comme Java ou les versions récentes de C++, un système d’exceptions, qui permettent de simplifier considérablement la gestion des erreurs. q Python est extensible : comme Tcl ou Guile, on peut facilement l’interfacer avec des bibliothèques C existantes. On peut aussi s’en servir comme un langage d’extension pour des systèmes logiciels complexes. q Enfin, il est très utilisé en bio-informatique et plus généralement en analyse de données. Pr. O.IBRIHICH Informatique 1 Chapitre 1 1.2.3 15 Introduction à l’algorithmique & Python Versions du Python Python continue à évoluer, mais cette évolution ne vise qu’à améliorer ou perfectionner le produit. Il est donc très rare qu’il faille modifier les programmes afin de les adapter à une nouvelle version qui serait devenue incompatible avec les précédentes. Certains versions ont été développés sous Python 1.5.2, puis d’autres sous Python 1.6, Python 2.0, 2.1, 2.2, 2.3, 2.4, etc. Ils n’ont guère nécessité de modifications avant l’apparition de Python 3. Cette nouvelle version du langage Python 3 a cependant apporté quelques changements de fond qui lui confèrent une plus grande cohérence et même une plus grande facilité d’utilisation, mais qui imposent une petite mise à jour de tous les scripts écrits pour les versions précédentes. Attention + Python 2 est un autre langage car il existe quelques différences importantes entre Python 2 et Python 3. Exemple 1.2 Différence entre Python 2 et 3 Python 2 Python 3 print "Bonjour" print("Bonjour") print "Bonjour", variable1 print("Bonjour", variable1) print "\n".join([x, y]) print(x, y, sep="\n") 6/4==1 1.5 1.2.4 Installation du Python Python a l’avantage d’être disponible sur de nombreuses plates-formes comme Microsoft Windows, Linux ou Mac OS X. L’installation sous Windows est simple. Le langage Python est déjà intégré aux systèmes d’exploitation Linux et Mac OS X. Sous Microsoft Windows, il suffit d’exécuter le fichier python-3.11.2.msi ou tout autre version plus récente. En règle générale, il est conseillé de télécharger la dernière version stable du langage, celle avec laquelle le plus grand nombre d’extensions seront compatibles, en particulier toutes celles dont vous avez besoin. IDLE (Integrated Development and Learning Environment) est un acronyme ou environnement de développement et d’apprentissage intégré de Python. IDLE a les fonctionnalités suivantes : Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 16 • Console Python (interpréteur interactif) avec coloration du code entré, des sorties et des messages d’erreur ; • Editeur de texte multi-fenêtres avec annulations multiples, coloration Python, indentation automatique, aide pour les appels de fonction, etc ; • Débogueur avec points d’arrêt persistants, pas-à-pas et visualisation des espaces de nommage locaux et globaux. Figure 1.6 – Fenêtre de commande fournie avec le langage Python Remarque 1.4 3 Pour installer Python, il suffit de télécharger la version 3 qui correspond à votre système d’exploitation (Windows ou Mac) à l’adresse :https: //www.python.org/downloads/ 3 Pour ce qui est des systèmes Linux, Python est généralement déjà installé par défaut, et Idle se trouve dans les dépôts de la plupart des distributions. 1.2.5 Environnement du Python Anaconda, Google Colab et PyCharm sont tous des environnements associés au développement Python, mais ils servent à des fins différentes et peuvent être utilisés en fonction des besoins spécifiques. Anaconda Anaconda est une distribution Python qui est principalement utilisée pour la science des données et l’informatique scientifique. Il comprend Python luimême, ainsi que de nombreuses bibliothèques scientifiques pré-installées telles que NumPy, pandas, matplotlib, et bien d’autres. Voici quelques points clés : q Il est souvent utilisé dans le domaine de la science des données, de l’apprentissage automatique et de l’analyse de données. q Anaconda inclut un gestionnaire d’environnements conda, ce qui facilite la création et la gestion d’environnements virtuels pour isoler les projets. Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 17 q Jupyter Notebook est également inclus, ce qui permet de créer des documents interactifs contenant du code Python, des graphiques et du texte explicatif. Google Colab Google Colab (Colaboratory) est une plateforme cloud gratuite basée sur Jupyter Notebook. Voici quelques points clés : q Il s’agit d’un environnement Python entièrement en ligne, ce qui signifie que vous n’avez pas besoin d’installer sur votre propre ordinateur. q Il est idéal pour l’exécution de code Python en utilisant des ressources cloud gratuites, y compris l’accès aux tâches d’apprentissage automatique intensives en calcul. q Google Colab est populaire parmi les chercheurs en apprentissage automatique pour la création et l’exécution de modèles d’apprentissage profond. PyCharm PyCharm est un environnement de développement intégré (IDE) dédié à Python. Voici quelques points clés : q C’est un IDE robuste avec des fonctionnalités telles que la coloration syntaxique, le débogage, le contrôle de version intégré, etc. q Il est polyvalent et convient à tout type de développement Python, que ce soit pour la science des données, le développement web, l’automatisation, etc. q PyCharm est particulièrement populaire parmi les développeurs Python professionnels. En résumé, vous pouvez choisir l’environnement qui convient le mieux à votre cas d’utilisation. Anaconda est idéal pour la science des données, Google Colab offre un accès gratuit aux ressources cloud, tandis que PyCharm est un IDE puissant pour le développement Python général. Certains développeurs utilisent même une combinaison de ces environnements en fonction de leurs besoins spécifiques. Pr. O.IBRIHICH Informatique 1 Chapitre 2 2.1 Instructions élémentaires Les variables Un algorithme (ou un programme informatique), agit sur des nombres, des textes, ... Ces différents éléments sont stockés dans des variables. On peut se représenter une variable comme une boîte portant une étiquette ("le nom de la variable") à l’intérieur de laquelle on peut placer un contenu. En informatique, les variables sont des emplacements réservés dans la mémoire de l’ordinateur auxquels on attribue une étiquette. Chaque emplacement mémoire a un numéro qui permet d’y faire référence de façon unique : c’est l’adresse mémoire de cette cellule. 2.1.1 Définition d’une variable Définition - Une variable sert à stocker la valeur d’une donnée dans un langage de programmation, dont le contenu peut être modifié par une action durant l’exécution d’un algorithme. En Python, une variable est un identificateur associé à une valeur, c’est une référence d’objet. 2.1.2 Déclaration des variables q La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui coller une étiquette. Ceci se fait tout au début de l’algorithme, avant même les instructions proprement dites. C’est ce qu’on appelle la déclaration des variables. q Une variable ne peut être utilisée que s’elle est déclarée. La déclaration se fait par la donnée du nom de la variable et du type de la variable. q Une variable est caractérisée par : • Un nom ou identificateur que l’utilisateur choisit ; il permet au programme de reconnaître quelle donnée il doit manipuler. 18 Chapitre 2 Instructions élémentaires 19 • Une valeur qui peut évoluer au cours du programme, mais qui doit respecter le type. • Un type (entier, réel, caractère ou booléen). L’identificateur ou le nom de la variable q L’identificateur ou le nom de la variable (l’étiquette de la boîte) obéit à des règles qui changent selon le langage utiliser. Les principales règles à respecter sont : • Un identificateur commence toujours par une lettre alphabétique (E1 et non 1E) ; • A l’exception du premier caractère, il peut contenir : des lettres, des chiffres, et le symbole ’_’ (souligné ou underscore) ; • On exclut la plupart des signes de ponctuation, en particulier les espaces (SMI2009 et non SMI 2009) ; • Les majuscules et les minuscules sont des lettres différentes : les identificateurs toto et Toto sont différents ; • Le nombre maximal de caractères qui composent le nom d’une variable dépend du langage utilisé ; • Le nom de variable doit avoir une relation avec le rôle de cette variable et être compréhensible ; • Ne pas utiliser les mots clés réservés du langage de programmation (par exemple en C : int, float, double, switch, case, for, main, return, ...). q En plus de ces règles, les 33 mots clés réservés en Python 3 sont : and as assert break class del elif else except False from with if import in None yield not or pass while global nonlocal return is continue def finally for lambda try raise True La déclaration des variables Avant d’utiliser une variable dans un programme, il faut la définir ou la déclarer, c’est-à-dire indiquer le mot VAR, puis le nom de la variable et enfin son type précédé de ’ :’. Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 20 Déclaration VAR : <liste d’identificateurs1> : typeVariable1 <liste d’identificateurs2> : typeVariable2 Une variable s’appelant taux, et dont le type est réel, doit être définie de la manière suivante : Exemple 2.1 Exemple de déclaration VAR taux : réel Cette déclaration crée une variable nommée taux dans laquelle peuvent être stockés des nombres à virgule. 2.2 Une constante Définition - Une constante est une variable dont la valeur est définie au début du programme et reste inchangée durant toute son exécution (c’est-à-dire reste inchangée tout au long de l’algorithme). - Une constante doit toujours recevoir une valeur dès sa déclaration. Elle est caractérisée par son nom et sa valeur (fixe). Déclaration Constante identificateur←valeur : type Exemple 2.2 Exemple de déclaration Pour calculer la surface des cercles, la valeur de pi est une constante mais le rayon est une variable. Constante PI ← 3.14 : réel 2.3 Les types de données de base Lorsqu’on déclare une variable, il ne suffit pas de créer une boîte (réserver un emplacement mémoire) ; il faut préciser ce que l’on voudra mettre dedans, car de cela dépendent la taille de la boîte (l’emplacement mémoire) et le type de codage utilisé. Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 21 Définition - Un type en algorithmique est une information permettant de traduire les valeurs depuis une représentation binaire (celle de l’ordinateur) vers une autre représentation plus adaptée à leur programmation dans un langage évolué. Cette notion est tellement importante que toute valeur a forcément un type. - Le rôle du type est d’assurer cette traduction en indiquant quelle place en mémoire occupe la valeur et quelle est la technique de codage utilisée. 2.3.1 Type Entier Définition - Le type entier (int) sera utilisé pour stocker des valeurs entières, positives ou négatives. Un entier occupe quatre octets (32 bits) en mémoire. q Un type entier représente l’ensemble des entiers relatifs pouvant être signées ou non signées tel que : 8, -10, 3... q Il peut être codé en entier simple sur deux octets ou long sur quatre octets ; q Les opérations permises sont : +, -, *, div (division entière) et mod ( reste de la division entière). 2.3.2 Type Réél Définition - Le type réel (float) sera utilisé pour stocker les nombres à virgule. Un réel peut être codé en réel simple sur 4 octets ou double sur 8 octets en mémoire. q Deux formes de représentation pour un type réel : La forme usuelle "a.b" (-4.6, 13.9,...) ou la forme scientifique "a E b" (345 = 3.45 E2 = 0.345 E3) ; q Les opérations permises sont : +, -, *, /. 2.3.3 Type Booléen Définition - Le type booléen (bool) sera utilisé pour stocker les valeurs de type VRAI/FAUX (TRUE/FALSE ou 0/1). Les opérations permises : NON, ET, OU. Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 22 Table 2.1 – La table de vérité 2.3.4 Type complexe Définition - Les complexes (complex) sont écrits en notation cartésienne formée de deux flottants. La partie imaginaire est suffixée par j. Exemple 2.3 Exemple de type complexe >>> print(1j) 1j >>> print((2+3j) + (4-7j)) (6-4j) >>> print((9+5j).real) 9.0 >>> print((9+5j).imag) 5.0 2.3.5 Type Caractère Définition - Le type caractère sera utilisé pour stocker les caractères. Un caractère occupe un octet (8 bits) en mémoire, chaque octet correspond à un code ASCII ; (A, B, a, b, &...), c’est le type qui permet de gérer les chaînes de caractères. q Un type caractère peut être une lettre, un chiffre ou caractère spécial exemple : ’a’, ’b’, ’3’,... q Les opérations permises : =, 6=, <, <=, >, >=. Remarque 2.1 3 Le type utilisé pour stocker des caractères est un peu particulier, car un caractère est en fait un nombre entier ! Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 23 3 L’ordinateur utilise une table de correspondance (table ASCII, Unicode) qui associe une valeur entière (un code) à un caractère qu’il s’agit de manipuler, c’est-à-dire, la plupart du temps, pour l’afficher à l’écran. Pour la table ASCII, un caractère est stocké dans un octet (un groupement de 8 bits), la valeur entière peut donc aller de 0 à 255. 3 Dans le tableau ne sont présentes que les valeurs de 32 à 127 : au-delà de 32, il s’agit de caractères non imprimables, au-delà de 127, ce sont des caractères optionnels, qui sont adaptés à un type de clavier ou de langue particulier, notamment les caractères accentués (é, à, è, ô, â, etc.). 2.3.6 Type Chaîne de caractères Définition - Un type chaîne de caractères (string) est une suite ou un ensemble de caractères (mot), il est écrit indifféremment entre guillemets " " ou entre apostrophes ’ ’. - Les chaînes de caractères : le type de données non modifiable str représente une séquence de caractères Unicode. - Non modifiable signifie qu’une donnée, une fois créée en mémoire, ne pourra plus être changée ; toute transformation résultera en la création d’une nouvelle valeur distincte. Manipulation d’une chaîne de caractères q Les chaînes de caractères doivent toujours être entre guillemets (simples, doubles, ou triples). q Il existe plusieurs méthodes que l’on peut appliquer sur les chaînes de caractères. q Python intègre de nombreuses fonctions qui permettent d’effectuer divers traitements sur les chaînes de caractères (conversions majuscules/minuscules, découpage en chaînes plus petites, recherche de mots, etc.). q Pour appliquer une méthode à une chaîne de caractères, on utilise la syntaxe suivante : Syntaxe chaine.methode(args) Ci-dessous un tableau récapitulatif qui présente une liste des opérateurs permettant de manipuler les chaînes de caractère : Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 24 Table 2.2 – Opérations applicables aux chaînes de caractères Fonctions vs méthodes q On peut agir sur une chaîne en utilisant des fonction (notion procédurale) communes à tous les types séquences ou conteneurs, ou bien des méthodes (notion objet) spécifiques aux chaînes. q Exemple d’utilisation d’une fonction : La fonction len() : Cette fonction renvoie la longueur de la chaîne de caractères, c’est-à-dire le nombre de caractères qu’elle contient. Syntaxe len(chaîne) Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 25 Exemple 2.4 Exemple d’utilisation de la fonction len() >>> s = len("abc") >>> s 3 Voici quelques-unes des fonctions prédéfinies les plus couramment utilisées en Python : q type() : Retourne le type de données d’un objet. q range() : Génère une séquence de nombres. q int(), float(), str(), bool() : Ces fonctions sont utilisées pour convertir des valeurs d’un type de données à un autre. q sum() : Calcule la somme des éléments d’une séquence. q max(), min() : Retournent respectivement le maximum et le minimum d’une séquence. q abs() : Retourne la valeur absolue d’un nombre. q round() : Arrondit un nombre à une précision donnée. q sorted() : Trie les éléments d’une séquence. q enumerate() : Énumère les éléments d’une séquence tout en gardant une trace de leur indice. q eval() est utilisée pour évaluer une expression Python sous forme de chaîne de caractères. Elle prend la chaîne de caractères comme argument et retourne le résultat de l’évaluation de cette expression. q ceil() est utilisée pour arrondir un nombre à l’entier supérieur le plus proche. q sqrt() est utilisée pour calculer la racine carrée d’un nombre. q ord() est une fonction intégrée en Python qui permet de retourner la valeur ASCII (ou Unicode) d’un caractère donné. q chr() qui prend un nombre entier (valeur ASCII ou Unicode) en entrée et renvoie le caractère correspondant. q Exemple d’utilisation d’une méthode : La méthode upper() : Cette méthode convertit tous les caractères de la chaîne en majuscules. Syntaxe chaîne.upper() Exemple 2.5 Exemple d’utilisation de la méthode upper() >>> "bonjour".upper() Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 26 ’BONJOUR’ Remarque 2.2 3 Remarquez la différence de syntaxe, les méthodes utilisent la notation pointée. Opérations élémentaires sur les chaînes de caractères q En Python, on peut effectuer de nombreuses opérations élémentaires sur les chaînes de caractères, les fonctions et méthodes sont très utiles pour effectuer diverses opérations de manipulation de chaînes de caractères. Remarque 2.3 3 La notation entre crochets [xxx] indique un élément optionnel que l’on peut donc omettre lors de l’utilisation de la méthode. 3 La chaîne s = "cHAise basSe" nous servira de test pour toutes les méthodes du tableau 2.2. Table 2.3 – Opérations élémentaires sur les chaînes de caractères Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 27 Indexation simple Pour indexer une chaîne, on utilise l’opérateur [ ] dans lequel l’index, un entier signé qui commence à 0 indique la position d’un caractère. Exemple 2.6 Exemple d’indexation simple >>> s = "Rayon X" # len(s) ==> 7 >>> s[0] ’R’ >>> s[2] ’y’ >>> s[-1] ’X’ >>> s[-3] ’n’ Figure 2.1 – L’indexation d’une chaîne Extraction de sous-chaînes Définition - Extraction de sous-chaînes se fait par l’opérateur [ ] avec 2 ou 3 index séparés par le caractère, elle permet d’extraire des sous-chaînes (ou tranches) d’une chaîne. Figure 2.2 – Extraction de sous-chaînes Pr. O.IBRIHICH Informatique 1 Chapitre 2 28 Instructions élémentaires Exemple 2.7 Exemple d’extraction de sous-chaîne >>> s = "Rayon X" # len(s) ==> 7 >>> s[1 :4] # de l’index 1 compris à 4 non compris ’ayo’ >>> s[-2 :] # de l’index -2 compris à la fin ’ X’ >>> s[ :3] # du début à l’index 3 non compris ’Ray’ >>> s[3 :] # de l’index 3 compris à la fin ’on X’ >>> s[ : :2] # du début à la fin, de 2 en 2 ’RynX’ >>> s[ : :-1] # de la fin au début (retournement) ’X noyaR’ Formatage de chaîne q À chaque expression précédée d’un %, appelé marqueur de formatage, doit correspondre une valeur de formatage. q L’expression est de la forme %[P]c, où c est un caractère qui détermine le type de valeur et P un éventuel paramètre supplémentaire, indiquant la précision à utiliser pour la valeur à formater. q La précision est représentée par un entier préfixé par un point, qui spécifie le nombre de chiffres significatifs après la virgule. Les caractères de formatage sont : • %d : entier décimal signé ; • %o : octal non signé ; • %u : décimal non signé ; • %x ou %X : valeur hexadécimale, préfixée respectivement par 0x ou 0X ; • %e ou %E : valeur à virgule flottante, de la forme xev ou xEv ; • %f ou %F : réel ; • %g ou %G : pour les valeurs à virgule flottante, équivalent à %e ou %E si l’exposant est supérieur à -4 ou inférieur à la précision, sinon équivalent à %f ; • %c : un seul caractère (sous la forme d’un string ou d’un entier) ; • %r : renvoie le résultat de la primitive repr() ; • %s : renvoie le résultat de la primitive str() ; Pr. O.IBRIHICH Informatique 1 Chapitre 2 29 Instructions élémentaires • %% : permet d’utiliser le caractère % dans une chaîne formatée. Exemple 2.8 Exemple de formatage >>> print(’%.2f euros’ % 2.394765) 2.39 euros >>> print(’%E euros’ % 2.394765) 2.394765E+00 euros >>> print(’%s euros’ % ’2.394’) 2.394 euros >>> print(’%d euros’ % 2.394) 2 euros 2.4 2.4.1 Affectation et notation Définition Définition - L’affectation est l’action élémentaire dont l’effet est de donner une valeur à une variable (ranger une valeur à une place). L’affectation est réalisée au moyen de l’opérateur ←. - En Python, On affecte une variable par une valeur en utilisant le signe ’=’. - Dans une affectation, le membre de gauche reçoit le membre de droite ce qui nécessite d’évaluer la valeur correspondant au membre de droite avant de l’affecter au membre de gauche. Affectation En algorithmique : nom_de_variable ← valeur_à_affecter Exemple 2.9 Exemple d’affectation En algorithmique : nom ← "Venus" a←2 Pr. O.IBRIHICH En Python : nom_de_variable=valeur_à_affecter En Python : >>> nom="Venus" >>> a=2 Informatique 1 Chapitre 2 Instructions élémentaires 30 Attention + Pour ne pas confondre affectation et égalité, à l’oral, au lieu de dire "a égal à 2", dites "a reçoit 2". La valeur d’une variable, comme son nom l’indique, peut évoluer au cours du temps. La valeur antérieure est perdue : Exemple 2.10 Exemples d’affectation En Python : >>> a = 3 * 7 >>> a 21 >>> b = 2 * 2 >>> b 4 >>> a = b + 5 >>> a 9 Le membre de droite d’une affectation étant évalué avant de réaliser l’affectation elle-même, la variable affectée peut se trouver en partie droite et c’est sa valeur avant l’affectation qui est utilisée dans le calcul. L’affectation est différente d’une équation mathématique : q Les opérations a ← a+1 et a ← a-1 ont un sens en programmation et se nomment respectivement incrémentation et décrémentation. q A+1 ← 3 n’est pas possible en langages de programmation et n’est pas équivalente à A ← 2. Exemple 2.11 Exemples d’affectation En Python : >>> a = 2 >>> a= a + 1 # incrémentation >>> a 3 >>> a= a - 1 # décrémentation >>> a 2 Pr. O.IBRIHICH Informatique 1 Chapitre 2 31 Instructions élémentaires Attention : Affecter n’est pas comparer ! + L’affectation a un effet (elle modifie l’état interne du programme en cours d’exécution) mais n’a pas de valeur (on ne peut pas l’utiliser dans une expression). Exemple 2.12 Différence entre affectation et comparaison Affectation Comparaison >>> c = True >>> c = True >>> s = (c = True) and True >>> s = (c == True) and True SyntaxError : invalid syntax. >>> s Maybe you meant ’==’ True or ’ :=’ instead of ’=’ ? Ci-dessous un exemple qui illustre le cas d’une affectation des chaînes de caractère : Figure 2.3 – L’affectation illustrée 2.4.2 Les variantes de l’affectation Outre l’affectation simple, on peut aussi utiliser les formes suivantes : Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 32 >>> v = 4 # affectation simple >>> v += 2 # affectation augmentée. Idem à v = v + 2 si v est déjà référencé >>> v 6 >>> c = d = 8 # d reçoit 8 puis c reçoit d (c et d sont des alias) >>> c, d (8, 8) >>> e, f = 2.7, 5.1 # affectation parallèle d’un tuple >>> (e, f) (2.7, 5.1) >>> a = 3 >>> a, b = a + 2, a * 2 # toutes les expressions sont évaluées avant la première affectation >>> a, b (5, 6) Exercice 2.1 Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ? 1)-Variables A, B, C : Entier 2)-Variables A, B : Entier Début Début A ← 7; A ← 6; B ← 17 ; B ← 2; A ← B; A ← B; B ← A+5 ; B ← A; C ← A + B; Fin C ← B – A; Fin 2.5 Les opérations Il est également intéressant de pouvoir effectuer des calculs et d’en affecter le résultat à une variable. Pr. O.IBRIHICH Informatique 1 Chapitre 2 2.5.1 Instructions élémentaires 33 Définitions Définition - Opérateur est un symbole d’opération qui permet d’agir sur des variables ou de faire des "calculs". - Opérande est une entité (variable, constante ou expression) utilisée par un opérateur. - Expression est une combinaison d’opérateur(s) et d’opérande(s), elle est évaluée durant l’exécution de l’algorithme, et possède une valeur et un type. 2.5.2 Les opérateurs Arithmétiques Les opérateurs arithmétiques sont des opérations mathématiques de base que vous pouvez effectuer sur les nombres. Ces opérateurs sont couramment utilisés pour réaliser des calculs mathématiques dans les algorithmes. Voici les opérateurs arithmétiques de base en algorithmique et Python : Table 2.4 – Les opérateurs arithmétiques 2.5.3 Les opérateurs Logiques Les opérateurs logiques sont utilisés pour effectuer des opérations logiques sur des valeurs booléennes (vrai ou faux) ou (True ou False). Ils sont Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 34 couramment utilisés pour contrôler le flux d’exécution d’un programme en fonction de conditions logiques. Voici les opérateurs logiques de base en algorithmique et Python : Table 2.5 – Les opérateurs logiques 2.5.4 Les opérateurs de Comparaison Ci-dessous la liste des opérateurs de comparaisons qui retournent des booléens. Ceux-ci s’applique à tout type, aux entiers, réels, chaînes de caractères, tuples... Une comparaison entre un entier et une chaîne de caractères est syntaxiquement correcte même si le résultat a peu d’intérêt. Il existe deux autres mots-clés qui retournent un résultat de type booléen : "in" et "is". Table 2.6 – Les opérateurs de comparaison Pr. O.IBRIHICH Informatique 1 Chapitre 2 2.5.5 Instructions élémentaires 35 Priorité des opérations q L’ordre des opérations arithmétiques : Lorsqu’il y a plus d’un opérateur dans une expression, l’ordre dans lequel les opérations doivent être effectuées dépend de règles de priorité. Sous Python, les règles de priorité sont les mêmes que celles qui vous ont été enseignées au cours de mathématique. Vous pouvez les mémoriser aisément à l’aide d’un "truc" mnémotechnique, l’acronyme PEMDAS (Figure 2.4). q La priorité des opérateurs de comparaison est importante car elle détermine l’ordre dans lequel les expressions de comparaison sont évaluées. Voici la priorité des opérateurs de comparaison en algorithmique comme en Python, classée de la plus haute à la plus basse (Figure 2.4). q En algorithmique, la priorité des opérateurs booléens est similaire à celle en Python et dans de nombreux autres langages de programmation. Voici la priorité des opérateurs booléens, classée de la plus haute à la plus basse (Figure 2.4). Figure 2.4 – Priorité des opérations 2.6 Transtypage Les fonctions int(arg), float(arg) et str(arg) permettent (dans la limite du possible) de convertir leur arguement en un entier, un flottant et une chaîne, respectivement. Pr. O.IBRIHICH Informatique 1 Chapitre 2 2.7 Instructions élémentaires 36 Les entrées/sorties q Un algorithme peut avoir des interactions avec l’utilisateur et communiquer avec lui dans les deux sens, les sorties sont des envois de messages à l’utilisateur, les entrées sont des informations fournies par l’utilisateur. q Il peut demander à l’utilisateur de saisir une information afin de la stocker dans une variable et peut afficher un résultat (du texte ou le contenu d’une variable). q Les instructions d’entrée/sortie permettent de transférer des informations entre la mémoire centrale et les unités périphériques (terminal, clavier, disque, imprimante,...). Les opérations d’entrée/sortie engendrent des conversions caractères alphanumériques/binaires. Figure 2.5 – Les entrées-sorties 2.7.1 Saisie de données En Algorithmique q L’instruction d’entrée ou de lecture donne la main à l’utilisateur pour saisir une donnée au clavier. La valeur saisie sera affectée à une variable. q Permet à un utilisateur de communiquer des données à l’algorithme (quand on demande à l’utilisateur de saisir une valeur). q Stocke la valeur entrée dans l’espace mémoire réservé à la variable mentionnée. Syntaxe Lire (Liste des variables) Exemple 2.13 Algorithme : Affichage incrément variables : a, b : entier DEBUT écrire("Saisissez une valeur numérique") Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 37 lire(a) b←a+1 écrire("Vous avez saisi la valeur ", a, ". ") écrire(a, "+ 1 = ", b) FIN En Python q Il s’agit de réaliser une saisie au clavier : la fonction input() interrompt le programme, affiche une éventuelle invite à l’écran et attend que l’utilisateur entre une donnée au clavier (affichée à l’écran) et la valide par Entrée . q La fonction input() effectue toujours une saisie en mode texte (la valeur retournée est une chaîne) dont on peut ensuite changer le type (on dit aussi "transtyper" ou cast en anglais). q On rappelle que Python est un langage dynamique (les variables peuvent changer le type) mais également fortement typé (contrôle de la cohérence des types). Syntaxe Input() Exemple 2.14 Exemple de saisie de données >>> f1 = input("Entrez un flottant : ") Entrez un flottant : 12.345 >>> type(f1) <class ’str’> >>> f2 = float(input("Entrez un autre flottant : ")) Entrez un autre flottant : 12.345 >>> type(f2) <class ’float’> >>> i = input("Entrez un entier : ") Entrez un entier : 3 >>> i ’3’ >>> iplus = int(input("Entrez un entier : ")) + 1 Entrez un entier : 3 >>> iplus 4 Pr. O.IBRIHICH Informatique 1 Chapitre 2 38 Instructions élémentaires Remarque 2.4 3 Lorsque le programme rencontre cette instruction, l’exécution s’interrompt et attend que l’utilisateur tape une valeur. 3 Cette valeur est rangée en mémoire dans la variable désignée. 2.7.2 Affichage de résultats q Affichage de résultats est une instruction qui permet d’afficher le contenu d’une variables ou/et un message sur l’écran. q Elle permet à l’ordinateur d’afficher sur l’écran ce qu’on veut (le résultat d’un calcul, le contenu d’une variable, un message... q L’instruction d’affichage (d’écriture) permet de fournir des résultats à l’utilisateur à travers un périphérique de sortie (l’écran, imprimante ...). En Algorithmique q Avant de lire une variable, il est conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit frapper (sinon, l’utilisateur passe son temps à se demander ce que l’ordinateur attend de lui). q Le résultat peut être : • Une chaîne de caractères délimitée par des "’ ’". • La valeur d’une variable dont le nom est spécifié. Syntaxe Ecrire(variable) Ecrire(Liste d’expressions) =⇒ Ecrire(’message’) Ecrire(’message’, variable) q Expression peut être une valeur, un résultat, un message, le contenu d’une variable, etc. q Cette instruction réalise simplement l’affichage des valeurs des expressions décrites dans la liste. L’ordinateur évalue tout d’abord l’expression puis affiche le résultat obtenu. q Ces instructions peuvent être simplement des variables ayant des valeurs ou même des nombres ou des commentaires écrits sous forme de chaînes de caractères. Exemple 2.15 Exemples d’affichage du résultats Exemple 1 Ecrire(A) //Cette instruction permet d’afficher Pr. O.IBRIHICH Informatique 1 Chapitre 2 39 Instructions élémentaires Ecrire(A+B) //à l’écran la valeur de la variable A. //Cette instruction permet //d’afficher à l’écran la valeur de A+B. A←2 Ecrire("La valeur de A est =",A) //La valeur de A est = 2 Exemple 2 Lire (somme) //si somme=20 Lire(Nbre) //si Nbre=10 Ecrire (”La moyenne est :”, somme / Nbre) //La moyenne est 12 En Python L’"instruction de sortie", qui implémente une transmission d’information qui va de l’ordinateur vers l’utilisateur, elle est implémentée par la fonction ci-dessous : Syntaxe print(variable) print(Liste d’expressions) =⇒ print(’message’) print(’message’, variable) L’instruction de sortie : q Permet d’afficher n’importe quel nombre de valeurs fournies en arguments, par défaut, ces valeurs seront séparées les unes des autres par un espace, et le tout se terminera par un saut à la ligne. q Vous pouvez remplacer le séparateur par défaut (l’espace) par un autre caractère quelconque (ou même par aucun caractère), de même, vous pouvez remplacer le saut à la ligne par l’argument "end". q Elle se charge d’afficher la représentation textuelle des informations qui lui sont données en paramètre, en plaçant un séparateur blanc entre deux informations, et en faisant un retour à la ligne à la fin de l’affichage (le séparateur et la fin de ligne peuvent être modifiés). Exemple 2.16 Exemple de l’instruction de sortie >>> a, b = 2, 5 >>> print(a, b) 25 Pr. O.IBRIHICH Informatique 1 Chapitre 2 2.7.3 Instructions élémentaires 40 Les séquences d’échappement À l’intérieur d’une chaîne, le caractère antislash (’\’) permet de donner une signification spéciale à certaines séquences de caractères : Table 2.7 – Les séquences d’échappement Exemple 2.17 Exemple des séquences d’échappement >>> print("\Npound sign \U00A3 \U000000A3") £££ >>> print("d \144 \x64") ddd >>> print(r"d \144 \x64") # la notation r"..." désactive la signification spéciale du caractère "\" d \144 \x64 Pr. O.IBRIHICH Informatique 1