Académique Documents
Professionnel Documents
Culture Documents
Informatique 1
Algorithmique 1 - Python
Semestre : 1
Pr. O. IBRIHICH
E-mail : o.ibrihich@um5r.ac.ma
Année Universitaire : 2023-2024
2
Table des matières
Objectifs du cours. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3
Table des matières 4
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
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
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.
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.
1. Complexité
• En combien de temps un algorithme va -t-il atteindre le résultat es-
compté ?
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.
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.
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.
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.
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.
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.
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.
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 ’ :’.
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 :
Cette déclaration crée une variable nommée taux dans laquelle peuvent être
stockés des nombres à virgule.
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
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é.
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.
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.
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.
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.
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.
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.
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.
Ci-dessous un tableau récapitulatif qui présente une liste des opérateurs permet-
tant de manipuler les chaînes de caractère :
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)
’BONJOUR’
Remarque 2.2
3 Remarquez la différence de syntaxe, les méthodes utilisent la notation pointée.
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.
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.
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() ;
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
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 :
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.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.
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
2.6 Transtypage
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)
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()
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.
Ecrire(’message’, variable)
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).