Vous êtes sur la page 1sur 40

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 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Chapitre 1: Introduction à l’algorithmique & Python . . . . . . . . . . . . . . . . . . . . . . . . . . 7


1.1 Introduction à l’algorithmique . . . . . . . . . . . . . . . . . . . . . 7
1.1.1 Notion d’un algorithme . . . . . . . . . . . . . . . . . . . . . 7
1.1.2 Concepts importants en informatique . . . . . . . . . . . . . 9
1.1.3 Conception d’un algorithme . . . . . . . . . . . . . . . . . . 10
1.1.4 Les problèmes fondamentaux en algorithmique . . . . . . . . 10
1.1.5 Les caractéristiques d’un Algorithme . . . . . . . . . . . . . 11
1.1.6 Propriétés d’un algorithme . . . . . . . . . . . . . . . . . . . 11
1.1.7 Représentation d’un algorithme . . . . . . . . . . . . . . . . 12
1.1.8 Structure d’un algorithme . . . . . . . . . . . . . . . . . . . 12
1.2 Introduction au language Python . . . . . . . . . . . . . . . . . . . 13
1.2.1 Définition du langage Python . . . . . . . . . . . . . . . . . 13
1.2.2 Caractéristiques du langage Python . . . . . . . . . . . . . . 14
1.2.3 Versions du Python . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4 Installation du Python . . . . . . . . . . . . . . . . . . . . . 15
1.2.5 Environnement du Python . . . . . . . . . . . . . . . . . . . 16

Chapitre 2: Instructions élémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18


2.1.1 Définition d’une variable . . . . . . . . . . . . . . . . . . . . 18
2.1.2 Déclaration des variables . . . . . . . . . . . . . . . . . . . . 18
2.2 Une constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Les types de données de base . . . . . . . . . . . . . . . . . . . . . 20
2.3.1 Type Entier . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.2 Type Réél . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3
Table des matières 4

2.3.3 Type Booléen . . . . . . . . . . . . . . . . . . . . . . . . . . 21


2.3.4 Type complexe . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.5 Type Caractère . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.6 Type Chaîne de caractères . . . . . . . . . . . . . . . . . . . 23
2.4 Affectation et notation . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.2 Les variantes de l’affectation . . . . . . . . . . . . . . . . . . 31
2.5 Les opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.2 Les opérateurs Arithmétiques . . . . . . . . . . . . . . . . . 33
2.5.3 Les opérateurs Logiques . . . . . . . . . . . . . . . . . . . . 33
2.5.4 Les opérateurs de Comparaison . . . . . . . . . . . . . . . . 34
2.5.5 Priorité des opérations . . . . . . . . . . . . . . . . . . . . . 34
2.6 Transtypage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7 Les entrées/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7.1 Saisie de données . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7.2 Affichage de résultats . . . . . . . . . . . . . . . . . . . . . . 38
2.7.3 Les séquences d’échappement . . . . . . . . . . . . . . . . . 40

Chapitre 3: Structures de contrôle : conditionnelles et répétitives . . . . . . . . . . . . . . . 42

3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2 Les instructions séquentielles . . . . . . . . . . . . . . . . . . . . . . 42
3.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.2 La syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3 Les instructions conditionnelles : if, else, elif . . . . . . . . . . . . . 43
3.4 Les boucles while et for . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.5 Les instructions break et continue . . . . . . . . . . . . . . . . . . . 43
3.6 Les notions de bloc d’instructions et d’indentation . . . . . . . . . . 43

Chapitre 4: Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.1 Définition des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . 44


4.2 Manipulation des tableaux . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.1 La création . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.2 l’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.3 la manipulation de tableaux . . . . . . . . . . . . . . . . . . 44
4.3 Les boucles pour parcourir un tableau . . . . . . . . . . . . . . . . . 44
4.4 Les Algorithmes de tri . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.5 Les Algorithmes de recherche . . . . . . . . . . . . . . . . . . . . . 44
Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Pr. O.IBRIHICH Informatique 1


Table des figures
1.1 Exemple d’algorithme : Recette de la pâte à crêpe . . . . . . . . . . 9
1.2 Chaîne de compilation . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Chaîne d’interprétation . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Représentation de l’algorithme . . . . . . . . . . . . . . . . . . . . . 12
1.5 Structure générale d’un algorithme . . . . . . . . . . . . . . . . . . 13
1.6 Fenêtre de commande fournie avec le langage Python . . . . . . . . 16
2.1 L’indexation d’une chaîne . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 Extraction de sous-chaînes . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 L’affectation illustrée . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4 Priorité des opérations . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Les entrées-sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5
Liste des tableaux
2.1 La table de vérité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Opérations applicables aux chaînes de caractères . . . . . . . . . . . 24
2.3 Opérations élémentaires sur les chaînes de caractères . . . . . . . . 26
2.4 Les opérateurs arithmétiques . . . . . . . . . . . . . . . . . . . . . . 33
2.5 Les opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6 Les opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . 35
2.7 Les séquences d’échappement . . . . . . . . . . . . . . . . . . . . . 40

6
Chapitre
1
Introduction à l’algorithmique &
Python

1.1 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 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.

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.

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 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
"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.

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

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 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 ;
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é ?

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 11

• 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.

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 Introduction à l’algorithmique & Python 12

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

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é plu-
sieurs 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éman-
tique 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 14

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
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.

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 15

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 dif-
fé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 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 :

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 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
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.

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 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,
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
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 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é ;
• 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 em-
placement 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, 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"


(-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 for-
mé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 carac-
tè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 permet-
tant 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édu-
rale) 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 di-
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.

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 Instructions élémentaires 28

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 Instructions élémentaires 29

• %% : 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 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 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 Instructions élémentaires 31

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 Instructions élémentaires 33

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.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 lo-
giques 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 fonc-


tion 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 carac-
tè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 Instructions élémentaires 35

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
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.

Pr. O.IBRIHICH Informatique 1


Chapitre 2 Instructions élémentaires 36

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-
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
é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 Instructions élémentaires 38

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 ...).
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 Instructions élémentaires 39

//à l’écran la valeur de la variable A.


Ecrire(A+B) //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 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
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 Instructions élémentaires 40

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.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

Vous aimerez peut-être aussi