Uploaded by anware elhamdi

informatique1

advertisement
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
Download