Cours Python - Faculté des Sciences de Rabat - PDF
Document Details
Uploaded by Deleted User
Université Mohammed V, Faculté des Sciences de Rabat
2025
O. IBRIHICH
Tags
Summary
This document is a course outline for an Informatics 1 course focusing on algorithmic and Python programming. It details course objectives and includes a table of contents covering topics from introduction to algorithms and Python, as well as basic instructions and operations. The course is offered at the undergraduate level.
Full Transcript
Université Mohammed V Faculté des Sciences de Rabat Informatique 1 Algorithmique 1 - Python Tronc Commun : MIP Mathématiques/Informatique/Physique Département d’Informatique...
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 : [email protected] Année Universitaire : 2024-2025 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, [email protected] 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 cou- rantes ; — 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............................................................. 7 Liste des tableaux........................................................... 9 Chapitre 1: Introduction à l’algorithmique & Python.......................... 10 1.1 Introduction à l’algorithmique..................... 10 1.1.1 Notion d’un algorithme..................... 11 1.1.2 Concepts importants en informatique............. 13 1.1.3 Conception d’un algorithme.................. 14 1.1.4 Les problèmes fondamentaux en algorithmique........ 15 1.1.5 Les caractéristiques d’un Algorithme............. 15 1.1.6 Propriétés d’un algorithme................... 16 1.1.7 Représentation d’un algorithme................ 16 1.1.8 Structure d’un algorithme................... 17 1.2 Introduction au language Python................... 18 1.2.1 Définition du langage Python................. 18 1.2.2 Caractéristiques du langage Python.............. 19 1.2.3 Versions du Python....................... 20 3 Table des matières 4 1.2.4 Installation du Python..................... 21 1.2.5 Environnement du Python................... 22 Chapitre 2: Instructions élémentaires.......................................... 25 2.1 Les variables............................... 25 2.1.1 Définition d’une variable.................... 25 2.1.2 Déclaration des variables.................... 25 2.2 Une constante.............................. 28 2.3 Les types de données de base..................... 28 2.3.1 Type Entier........................... 29 2.3.2 Type Réél............................ 29 2.3.3 Type Booléen.......................... 30 2.3.4 Type complexe......................... 30 2.3.5 Type Caractère......................... 31 2.3.6 Type Chaîne de caractères................... 32 2.4 Affectation et notation......................... 39 2.4.1 Définition............................ 39 2.4.2 Les variantes de l’affectation.................. 42 2.5 Les opérations.............................. 43 2.5.1 Définitions............................ 44 2.5.2 Les opérateurs Arithmétiques................. 44 2.5.3 Les opérateurs Logiques.................... 45 2.5.4 Les opérateurs de Comparaison................ 45 2.5.5 Priorité des opérations..................... 46 2.6 Transtypage............................... 47 Pr. O.IBRIHICH Informatique 1 Table des matières 5 2.7 Les entrées/sorties........................... 47 2.7.1 Saisie de données........................ 48 2.7.2 Affichage de résultats...................... 50 2.7.3 Les séquences d’échappement................. 53 Chapitre 3: Structures de contrôle : conditionnelles et répétitives............... 55 3.1 Introduction............................... 55 3.2 Les structures séquentielles....................... 55 3.2.1 Définition............................ 55 3.2.2 La syntaxe............................ 56 3.3 Les structures conditionnelles..................... 56 3.3.1 Définitions............................ 56 3.3.2 Structures conditionnelles simples............... 57 3.3.3 Structure conditionnelle à choix multiple........... 62 3.4 Les structures conditionnelles (en python) : if, elif, else....... 64 3.5 Les structures répétitives ou itératives (en algorithmique)...... 66 3.5.1 La boucle TantQue....................... 67 3.5.2 La boucle Répéter... Jusqu’à................. 69 3.5.3 La boucle Pour......................... 71 3.6 Les structures répétitives ou itératives (en Python)......... 74 3.6.1 La boucle While......................... 74 3.6.2 La boucle For.......................... 75 3.7 Les instructions break et continue................... 77 3.7.1 L’instruction break....................... 77 3.7.2 L’instruction continue..................... 78 Pr. O.IBRIHICH Informatique 1 Table des matières 6 3.8 Les notions de bloc d’instructions et d’indentation.......... 78 3.8.1 Indentation........................... 78 3.8.2 Bloc d’instructions....................... 79 3.9 Les Commentaires........................... 80 Chapitre 4: Les tableaux..................................................... 81 4.1 Introduction............................... 81 4.2 Définition des tableaux......................... 81 4.3 Relation entre tableaux et boucles................... 84 4.4 Tableau à une dimension........................ 84 4.4.1 Déclaration d’un tableau à une dimension.......... 84 4.4.2 Manipulation des tableaux à une dimension......... 86 4.5 Tableaux à deux dimensions...................... 97 4.5.1 Déclaration d’un tableau à deux dimensions......... 98 4.5.2 Manipulation des tableaux à deux dimensions........ 99 4.6 Tableaux dynamiques.......................... 103 4.7 Les algorithmes de tri.......................... 103 4.7.1 Le tri par sélection....................... 104 4.7.2 Tri par insertion........................ 107 4.7.3 Comparaison entre tri par selection et insertion....... 109 4.8 Les algorithmes de recherche...................... 110 4.8.1 La recherche séquentielle.................... 110 4.8.2 La recherche dichotomique................... 113 Références................................................................. 116 Pr. O.IBRIHICH Informatique 1 Table des figures 1.1 Exemple d’algorithme : Recette de la pâte à crêpe.......... 12 1.2 Chaîne de compilation......................... 13 1.3 Chaîne d’interprétation......................... 13 1.4 Représentation de l’algorithme..................... 16 1.5 Structure générale d’un algorithme.................. 17 1.6 Fenêtre de commande fournie avec le langage Python........ 22 2.1 L’indexation d’une chaîne....................... 36 2.2 Extraction de sous-chaînes....................... 37 2.3 L’affectation illustrée.......................... 42 2.4 Priorité des opérations......................... 47 2.5 Les entrées-sorties............................ 48 3.1 Format Organigramme du si...................... 58 3.2 Format Organigramme du si..sinon.................. 59 3.3 Format Organigramme du si imbriqué................. 60 3.4 Format Organigramme de la structure Selon.... Faire........ 63 3.5 Format Organigramme de la boucle TantQue............. 67 3.6 Format Organigramme de la boucle Répéter............. 70 3.7 Format Organigramme de la boucle Pour............... 71 3.8 Choix du type de la boucle....................... 74 3.9 Bloc d’instructions........................... 79 7 Table des figures 8 4.1 Représentation graphique d’un tableau................ 82 Liste des tableaux 2.1 La table de vérité............................ 30 2.2 Opérations applicables aux chaînes de caractères........... 33 2.3 Les opérateurs arithmétiques...................... 44 2.4 Les opérateurs logiques......................... 45 2.5 Les opérateurs de comparaison..................... 46 2.6 Les séquences d’échappement..................... 53 9 Chapitre 1 Introduction à l’algorithmique & Python 1.1 Introduction à l’algorithmique L’algorithmique est un terme d’origine arabe, hommage à Al Khawarizmi (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 musul- man 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 Khwa- rizmi 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. 10 Chapitre 1 Introduction à l’algorithmique & Python 11 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 en- semble de valeurs comme entrée et produit un ensemble de valeurs comme sortie. 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 pro- grammation 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éra- tion) 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 Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 12 "surface à calculer"). 3 En principe un algorithme est indépendant de toute implantation. Ce- pendant 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 progressive- ment 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. Figure 1.1 – Exemple d’algorithme : Recette de la pâte à crêpe Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 13 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 pro- grammation 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 assem- bleur. 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 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ú Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 14 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 plu- sieurs étapes qui correspondent à des raffinements successifs. La première version de l’algorithme est autant que possible indépendante d’une implémentation parti- culiè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 ; Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 15 3. Les sorties : les résultats obtenus peuvent être affichés sur l’écran, ou impri- mé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 es- compté ? 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 in- formations, 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. Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 16 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. 1.1.7 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 Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 17 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 : Figure 1.5 – Structure générale d’un algorithme 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 18 1.2 Introduction au language Python Python a été créé en 1991 par Guido van Rossum, né en 1956 à Haarlem, aux Pays-Bas. Bien sûr, Guido van Rossum n’a pas développé et fait évo- luer 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 organisa- tion à 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 inter- médiaire telle que la compilation et on peut ainsi tester un pro- gramme plus rapidement même si son exécution est alors plus lente. Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 19 1.2.2 Caractéristiques du langage Python Ce langage de programmation présente de nombreuses caractéristiques intéres- santes : q Il est multi-plateforme. C’est-à-dire qu’il fonctionne sur de nombreux sys- tè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 connais- sance 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 com- pilé 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 Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 20 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 er- reurs. 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 ana- lyse de données. 1.2.3 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 Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 21 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 Win- dows 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 : Console Python (interpréteur interactif) avec coloration du code entré, des sorties et des messages d’erreur ; Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 22 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 corres- pond à 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 uti- lisé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 lui- même, ainsi que de nombreuses bibliothèques scientifiques pré-installées telles Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 23 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 faci- lite la création et la gestion d’environnements virtuels pour isoler les projets. q Jupyter Notebook est également inclus, ce qui permet de créer des do- cuments 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 automa- tique 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, Pr. O.IBRIHICH Informatique 1 Chapitre 1 Introduction à l’algorithmique & Python 24 etc. q PyCharm est particulièrement populaire parmi les développeurs Python pro- fessionnels. 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 Instructions élémentaires 2.1 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 25 Chapitre 2 Instructions élémentaires 26 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. 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) ou un underscore ; 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 identi- ficateurs toto et Toto sont différents ; Le nombre maximal de caractères qui composent le nom d’une variable dépend du langage utilisé ; Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 27 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 ’ :’. Déclaration VAR : : typeVariable1 : 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 Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 28 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 29 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, po- sitives 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" Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 30 (-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. Table 2.1 – La table de vérité 2.3.4 Type complexe Définition - Les complexes (complex) sont écrits en notation cartésienne for- mée de deux flottants. La partie imaginaire est suffixée par j. Exemple 2.3 Exemple de type complexe >>> print(1j) 1j Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 31 >>> 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 carac- tère est en fait un nombre entier ! 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à Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 32 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 : Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 33 Syntaxe chaine.methode(args) Ci-dessous un tableau récapitulatif qui présente une liste des opérateurs permet- tant de manipuler les chaînes de caractère : 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édu- rale) communes à tous les types séquences ou conteneurs, ou bien des méthodes (notion objet) spécifiques aux chaînes. Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 34 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) 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. Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 35 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() ’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 di- Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 36 verses 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. 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 ’R’ >>> s ’y’ >>> s[-1] ’X’ >>> s[-3] ’n’ Figure 2.1 – L’indexation d’une chaîne Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 37 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 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’ Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 38 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() ; %% : 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) Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 39 2.394765E+00 euros >>> print(’%s euros’ % ’2.394’) 2.394 euros >>> print(’%d euros’ % 2.394) 2 euros 2.4 Affectation et notation 2.4.1 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 : En Python : nom_de_variable ← valeur_à_affecter nom_de_variable=valeur_à_affecter Exemple 2.9 Exemple d’affectation En algorithmique : En Python : nom ← "Venus" >>> nom="Venus" a←2 >>> a=2 Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 40 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 Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 41 é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 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 carac- tère : Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 42 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 : >>> 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) Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 43 (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 Instructions élémentaires 44 2.5.1 Définitions Définition - Opérateur est un symbole d’opération qui permet d’agir sur des va- riables 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 couram- ment 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.3 – Les opérateurs arithmétiques Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 45 2.5.3 Les opérateurs Logiques Les opérateurs logiques sont utilisés pour effectuer des opérations lo- giques sur des valeurs booléennes (vrai ou faux) ou (True ou False). Ils sont couramment utilisés pour contrôler le flux d’exécution d’un programme en fonc- tion de conditions logiques. Voici les opérateurs logiques de base en algorithmique et Python : Table 2.4 – Les opérateurs logiques 2.5.4 Les opérateurs de Comparaison Ci-dessous la liste des opérateurs de comparaisons qui retournent des boo- lé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 syn- taxiquement 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". Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 46 Table 2.5 – Les opérateurs de comparaison 2.5.5 Priorité des opérations q L’ordre des opérations arithmétiques : Lorsqu’il y a plus d’un opéra- teur 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 Py- thon, 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 Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 47 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 pos- sible) de convertir leur arguement en un entier, un flottant et une chaîne, respectivement. 2.7 Les entrées/sorties q Un algorithme peut avoir des interactions avec l’utilisateur et commu- niquer 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 informa- Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 48 tions 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’algo- rithme (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 Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 49 écrire("Saisissez une valeur numérique") ; 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) Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 50 >>> f2 = float(input("Entrez un autre flottant : ")) Entrez un autre flottant : 12.345 >>> type(f2) >>> i = input("Entrez un entier : ") Entrez un entier : 3 >>> i ’3’ >>> iplus = int(input("Entrez un entier : ")) + 1 Entrez un entier : 3 >>> iplus 4 Remarque 2.4 3 Lorsque le programme rencontre cette instruction, l’exécution s’inter- rompt 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ésul- tat 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...). Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 51 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 //à l’écran la valeur de la variable A. Ecrire(A+B) ; //Cette instruction permet Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 52 //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 argu- ments, 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 Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 53 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 2.7.3 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.6 – Les séquences d’échappement Pr. O.IBRIHICH Informatique 1 Chapitre 2 Instructions élémentaires 54 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