Vous êtes sur la page 1sur 24

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

Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

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

1.1 Introduction à l’algorithmique . . . . . . . . . . . . . . . . . . . . . 10


1.1.1 Notion d’un algorithme . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Concepts importants en informatique . . . . . . . . . . . . . 13
1.1.3 Conception d’un algorithme . . . . . . . . . . . . . . . . . . 14
1.1.4 Les problèmes fondamentaux en algorithmique . . . . . . . . 15
1.1.5 Les caractéristiques d’un Algorithme . . . . . . . . . . . . . 15
1.1.6 Propriétés d’un algorithme . . . . . . . . . . . . . . . . . . . 16
1.1.7 Représentation d’un algorithme . . . . . . . . . . . . . . . . 16
1.1.8 Structure d’un algorithme . . . . . . . . . . . . . . . . . . . 17
1.2 Introduction au language Python . . . . . . . . . . . . . . . . . . . 18
1.2.1 Définition du langage Python . . . . . . . . . . . . . . . . . 18
1.2.2 Caractéristiques du langage Python . . . . . . . . . . . . . . 19
1.2.3 Versions du Python . . . . . . . . . . . . . . . . . . . . . . . 20

3
Table des matières 4

1.2.4 Installation du Python . . . . . . . . . . . . . . . . . . . . . 21


1.2.5 Environnement du Python . . . . . . . . . . . . . . . . . . . 22

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

2.1 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


2.1.1 Définition d’une variable . . . . . . . . . . . . . . . . . . . . 25
2.1.2 Déclaration des variables . . . . . . . . . . . . . . . . . . . . 25
2.2 Une constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Les types de données de base . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 Type Entier . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2 Type Réél . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.3 Type Booléen . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.4 Type complexe . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.5 Type Caractère . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.6 Type Chaîne de caractères . . . . . . . . . . . . . . . . . . . 32
2.4 Affectation et notation . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.2 Les variantes de l’affectation . . . . . . . . . . . . . . . . . . 43
2.5 Les opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.5.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5.2 Les opérateurs Arithmétiques . . . . . . . . . . . . . . . . . 45
2.5.3 Les opérateurs Logiques . . . . . . . . . . . . . . . . . . . . 46
2.5.4 Les opérateurs de Comparaison . . . . . . . . . . . . . . . . 46
2.5.5 Priorité des opérations . . . . . . . . . . . . . . . . . . . . . 47
2.6 Transtypage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Pr. O.IBRIHICH Informatique 1


Table des matières 5

2.7 Les entrées/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . 48


2.7.1 Saisie de données . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7.2 Affichage de résultats . . . . . . . . . . . . . . . . . . . . . . 51
2.7.3 Les séquences d’échappement . . . . . . . . . . . . . . . . . 54

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

3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2 Les structures séquentielles . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.2 La syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3 Les structures conditionnelles . . . . . . . . . . . . . . . . . . . . . 57
3.3.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.2 Structures conditionnelles simples . . . . . . . . . . . . . . . 58
3.3.3 Structure conditionnelle à choix multiple . . . . . . . . . . . 63
3.4 Les structures conditionnelles (en python) : if, elif, else . . . . . . . 65
3.5 Les structures répétitives ou itératives (en algorithmique) . . . . . . 67
3.5.1 La boucle TantQue . . . . . . . . . . . . . . . . . . . . . . . 68
3.5.2 La boucle Répéter ... Jusqu’à . . . . . . . . . . . . . . . . . 70
3.5.3 La boucle Pour . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.6 Les structures répétitives ou itératives (en Python) . . . . . . . . . 75
3.6.1 La boucle While . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.6.2 La boucle For . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7 Les instructions break et continue . . . . . . . . . . . . . . . . . . . 78
3.7.1 L’instruction break . . . . . . . . . . . . . . . . . . . . . . . 78
3.7.2 L’instruction continue . . . . . . . . . . . . . . . . . . . . . 79

Pr. O.IBRIHICH Informatique 1


Table des matières 6

3.8 Les notions de bloc d’instructions et d’indentation . . . . . . . . . . 79


3.8.1 Indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.8.2 Bloc d’instructions . . . . . . . . . . . . . . . . . . . . . . . 80
3.9 Les Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Chapitre 4: Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.2 Définition des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.3 Relation entre tableaux et boucles . . . . . . . . . . . . . . . . . . . 85
4.4 Tableau à une dimension . . . . . . . . . . . . . . . . . . . . . . . . 85
4.4.1 Déclaration d’un tableau à une dimension . . . . . . . . . . 85
4.4.2 Manipulation des tableaux à une dimension . . . . . . . . . 87
4.5 Tableaux à deux dimensions . . . . . . . . . . . . . . . . . . . . . . 98
4.5.1 Déclaration d’un tableau à deux dimensions . . . . . . . . . 99
4.5.2 Manipulation des tableaux à deux dimensions . . . . . . . . 100
4.6 Tableaux dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.7 Les algorithmes de tri . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.7.1 Le tri par sélection . . . . . . . . . . . . . . . . . . . . . . . 105
4.7.2 Tri par insertion . . . . . . . . . . . . . . . . . . . . . . . . 108
4.7.3 Comparaison entre tri par selection et insertion . . . . . . . 110
4.8 Les algorithmes de recherche . . . . . . . . . . . . . . . . . . . . . . 111
4.8.1 La recherche séquentielle . . . . . . . . . . . . . . . . . . . . 111
4.8.2 La recherche dichotomique . . . . . . . . . . . . . . . . . . . 114

Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

Pr. O.IBRIHICH Informatique 1


Table des figures
1.1 Exemple d’algorithme : Recette de la pâte à crêpe . . . . . . . . . . 12
1.2 Chaîne de compilation . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Chaîne d’interprétation . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Représentation de l’algorithme . . . . . . . . . . . . . . . . . . . . . 16
1.5 Structure générale d’un algorithme . . . . . . . . . . . . . . . . . . 17
1.6 Fenêtre de commande fournie avec le langage Python . . . . . . . . 22

2.1 L’indexation d’une chaîne . . . . . . . . . . . . . . . . . . . . . . . 37


2.2 Extraction de sous-chaînes . . . . . . . . . . . . . . . . . . . . . . . 38
2.3 L’affectation illustrée . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.4 Priorité des opérations . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5 Les entrées-sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.1 Format Organigramme du si . . . . . . . . . . . . . . . . . . . . . . 59


3.2 Format Organigramme du si..sinon . . . . . . . . . . . . . . . . . . 60
3.3 Format Organigramme du si imbriqué . . . . . . . . . . . . . . . . . 61
3.4 Format Organigramme de la structure Selon.... Faire . . . . . . . . 64
3.5 Format Organigramme de la boucle TantQue . . . . . . . . . . . . . 68
3.6 Format Organigramme de la boucle Répéter . . . . . . . . . . . . . 71
3.7 Format Organigramme de la boucle Pour . . . . . . . . . . . . . . . 72
3.8 Choix du type de la boucle . . . . . . . . . . . . . . . . . . . . . . . 75
3.9 Bloc d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

7
Table des figures 8

4.1 Représentation graphique d’un tableau . . . . . . . . . . . . . . . . 83


Liste des tableaux
2.1 La table de vérité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2 Opérations applicables aux chaînes de caractères . . . . . . . . . . . 33
2.3 Opérations élémentaires sur les chaînes de caractères . . . . . . . . 36
2.4 Les opérateurs arithmétiques . . . . . . . . . . . . . . . . . . . . . . 45
2.5 Les opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.6 Les opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . 47
2.7 Les séquences d’échappement . . . . . . . . . . . . . . . . . . . . . 54

9
Chapitre
1
Introduction à l’algorithmique &
Python
1.1 Introduction à l’algorithmique

L’algorithmique est un terme d’origine arabe, hommage à Al

Khawarizmi (780-850) auteur d’un ouvrage décrivant des méthodes de calculs


algébriques. Il est un mathématicien, géographe, astrologue et astronome musul-
man arabe dont les écrits ont permis l’introduction de l’algèbre en Europe.
q Ce savant arabe a publié plusieurs méthodes pour le calcul effectif de racines
d’une équation du second degré et grâce à lui les chiffres arabes ont pu se diffuser
en occident.
q Le terme algorithme est un mot dérivé du nom du mathématicien Al Khwa-
rizmi qui a vécu au 9ème siècle, était membre d’un académie des sciences à Bagdad.
Il est employé en informatique pour décrire une méthode de résolution de problème
programmable sur machine.
q L’algorithmique désigne la discipline qui étudie les algorithmes et leurs
applications en informatique.
q Une bonne connaissance de l’algorithmique permet d’écrire des algorithmes
exacts et efficaces.

10
Chapitre 1 Introduction à l’algorithmique & Python 11

1.1.1 Notion d’un algorithme

Définition 1
- Un algorithme est une suite finie de règles à appliquer dans un ordre
déterminé à un nombre fini de données pour arriver avec certitude, en un
nombre fini d’étapes, à un certain résultat et cela, indépendamment des données.
Un peu plus précisément : Une séquence de pas de calcul qui prend un en-
semble de valeurs comme entrée et produit un ensemble de valeurs comme sortie.

Définition 2
- Un algorithme est une méthode de résolution de problème énoncée
sous la forme d’une série d’opérations à effectuer. La mise en œuvre de
l’algorithme consiste en l’écriture de ces opérations dans un langage de pro-
grammation et constitue alors la brique de base d’un programme informatique.

Définition 3
- Un algorithme est une suite finie et ordonnée d’opérations (actions)
élémentaires finies (en temps et moyens). Elle est régie par un ensemble
de règles ou d’instructions de contrôle (séquencement, sélection et itéra-
tion) permettant d’aboutir à un résultat déterminé d’un problème donné.

Remarque 1.1
3 Les algorithmes ne sont pas nés avec l’informatique : L’algorithme d’Euclide
pour calculer le PGCD de deux entiers est vieux de plus de 2000 ans !, aussi des
descriptions précises d’algorithmes sont présents dans la Chine ancienne (Par
exemple, pour extraire des racines carrées à partir de divisions effectuées sur une

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 12

"surface à calculer").
3 En principe un algorithme est indépendant de toute implantation. Ce-
pendant dans la pratique de la programmation il s’avère indispensable
de tenir compte des capacités du langage de programmation utilisé. En
plus, un problème donné pourraient correspondre plusieurs algorithmes.

Exemple 1.1 Recette de cuisine : Recette de la pâte à crêpe

1. Préparer les ingrédients (Farine, œufs, sel, lait) ;

2. Verser la farine et le sel dans le saladier ;

3. Casser les œufs, mélanger avec une cuillère en bois et ajouter progressive-
ment le lait sans cesser de tourner ;

4. Laisser reposer la pâte pendant une heure ;

5. Faire chauffer la poêle, Verser-y une louche de pâte. Répartir-la bien en


bougeant la poêle. Faire cuire une crêpe fine.

Figure 1.1 – Exemple d’algorithme : Recette de la pâte à crêpe

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 13

1.1.2 Concepts importants en informatique

q Un programme : Une série d’instructions pouvant s’exécuter en séquence,


ou en parallèle (parallélisme matériel) qui réalise (implémente) un algorithme.
q Une instruction : Ce terme est assez vague et dépend en général du langage.
On peut considérer qu’une instruction est une expression syntaxiquement correcte
pour un langage donné.
q Un problème : Expliquer à la "machine" comment elle doit s’y prendre.
q Un langage de programmation : En informatique, un langage de pro-
grammation est une notation conventionnelle destinée à formuler des algorithmes
et produire des programmes informatiques qui les appliquent.
q Un compilateur : Un programme qui traduit le texte dans un langage qui
permettra son exécution, tel le langage machine, le byte code ou le langage assem-
bleur. La compilation est le fait de traduire un programme afin que l’ordinateur
le comprenne.

Figure 1.2 – Chaîne de compilation

q Un interpréteur : Un programme qui exécute les instructions demandées.


Il joue le même rôle qu’une machine qui reconnaîtrait ce langage.

Figure 1.3 – Chaîne d’interprétation

q Un Langage machine : Les instructions permettent d’effectuer des calculs


arithmétiques ou logiques, déplacer ou copier des données vers l’exécution d’autres
instructions. Ces instructions sont enregistrées sous forme de séquences de bits, oú

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 14

chaque séquence correspond au code de l’opération à effectuer et aux opérandes,


c’est-à-dire aux données concernées ; c’est le langage machine.
q Un Langage interprété est converti en instructions propres à la machine
au fur et à mesure de son exécution.
q Un mot-clé est une composante du langage et fait partie de sa grammaire
qui comprend également les opérateurs numériques.

1.1.3 Conception d’un algorithme

La conception d’un algorithme est un peu compliqué et se fait toujours en plu-


sieurs étapes qui correspondent à des raffinements successifs. La première version
de l’algorithme est autant que possible indépendante d’une implémentation parti-
culière. Cette conception passe par plusieurs étapes :

1. Analyse : définition du problème en terme de séquences d’opérations de calcul


de stockage de données, etc. ;

2. Conception : définition précise des données, des traitements et de leur sé-


quencement ;

3. Implantation : traduction et réalisation de l’algorithme dans un langage


précis ;

4. Test : Vérification du bon fonctionnement de l’algorithme.

On peut les résumer en trois étapes fondamentales :

1. Les entrées : Il s’agit de repérer les données nécessaires à la résolution du


problème ;

2. Le traitement : Il s’agit de déterminer toutes les étapes des traitements à


faire et donc des "instructions" à développer pour arriver aux résultats ;

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 15

3. Les sorties : les résultats obtenus peuvent être affichés sur l’écran, ou impri-
més sur papier, ou bien encore conservés dans un fichier.

1.1.4 Les problèmes fondamentaux en algorithmique

1. Complexité

• En combien de temps un algorithme va -t-il atteindre le résultat es-


compté ?

• De quel espace a-t-il besoin ?

2. Calculabilité

• Existe-t-il des tâches pour lesquelles il n’existe aucun algorithme ?

• Etant donnée une tâche, peut-on dire s’il existe un algorithme qui la ré-
solve ?

3. Correction

• Peut-on être sûr qu’un algorithme réponde au problème pour lequel il a


été conçu ?

1.1.5 Les caractéristiques d’un Algorithme

Un algorithme est une marche à suivre :

1. dont les opérations sont toutes définies et portent sur des objets appelés in-
formations,

2. dont l’ordre d’exécution des opérations est défini sans ambiguïté,

3. qui est réputée résoudre de manière certaine un problème ou une classe de


problèmes,

4. s’exprime dans un langage indépendant des langages de programmation,

5. Il est caractérisé par un début et une fin.

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 16

1.1.6 Propriétés d’un algorithme

Propriété 1
Un algorithme doit :
/ avoir un nombre fini d’étapes,
/ avoir un nombre fini d’opérations par étape,
/ se terminer après un nombre fini d’opérations,
/ fournir un résultat.
Chaque opération doit être :
/ définie rigoureusement et sans ambiguïté ;
/ effective, c-à-d. réalisable par une machine.
Le comportement d’un algorithme est déterministe.

1.1.7 Représentation d’un algorithme

Deux types de notations ont représenté des algorithmes :

• L’organigramme représente graphiquement l’algorithme (avec des carrés,


des losanges, etc). C’est visuel (un dessin vaut mille mots !), mais ça exige
plus de travail de mise en page et plus d’espace sur papier.

• Le pseudo-code représente textuellement l’algorithme. Moins visuel, mais


plus facile à mettre sur papier et requiert moins d’espace.

Figure 1.4 – Représentation de l’algorithme

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 17

Remarque 1.2
3 Le pseudo-code est généralement préféré à l’organigramme. Il est plus
rapide à écrire et plus facile à traduire en un langage de programmation.

1.1.8 Structure d’un algorithme

Lorsqu’on écrit un algorithme, il faut respecter la syntaxe (règles d’écriture d’un


langage donné), un algorithme écrit en pseudo-code est composé de trois parties
suivantes : L’en-tête, la partie déclarative et le corps.
Un algorithme prend généralement la structure suivante :

Figure 1.5 – Structure générale d’un algorithme

1. L’en-tête d’un algorithme : L’en-tête d’un algorithme est constitué du mot


Algorithme, suivi d’un nom identifiant l’algorithme.

2. La partie déclarative : Comprend une liste des variables et des constantes


utilisés et manipulés dans le corps de l’algorithme.

3. Les données d’un algorithme : Les données (objets) sont des informations
nécessaires au déroulement d’un algorithme. On distingue deux catégories :
les constantes et les variables.

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 18

1.2 Introduction au language Python

Python a été créé en 1991 par Guido van Rossum, né en 1956 à

Haarlem, aux Pays-Bas. Bien sûr, Guido van Rossum n’a pas développé et fait évo-
luer lui-même tous les composants Python. Entre 1995 et 2001, Rossum a changé
plusieurs fois de travail tout en continuant l’élaboration du langage Python.
En 2001, la PSF (Python Software Foundation) est créée. Il s’agit d’une organisa-
tion à but non lucratif détenant les droits de propriété intellectuelle de Python. Il
est depuis distribué sous forme de logiciel libre. Python est couvert par sa propre
licence.

1.2.1 Définition du langage Python

Définition
- Python est un langage de programmation largement utilisé, interprété,
orienté objet et de haut niveau avec une sémantique dynamique, utilisé
pour la programmation à usage général.

Remarque 1.3
3 Le langage Python n’est pas un langage compilé car un programme Python
n’est pas traduit en langage machine, il est un langage interprété.
3 Entre son écriture et son exécution, il n’y a pas d’étape inter-
médiaire telle que la compilation et on peut ainsi tester un pro-
gramme plus rapidement même si son exécution est alors plus lente.

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 19

1.2.2 Caractéristiques du langage Python

Ce langage de programmation présente de nombreuses caractéristiques intéres-


santes :
q Il est multi-plateforme. C’est-à-dire qu’il fonctionne sur de nombreux sys-
tèmes d’exploitation : Windows, Mac OS X, Linux, Android, iOS.
q Il est gratuit. Vous pouvez l’installer sur autant d’ordinateurs que vous
voulez (même sur votre téléphone !).
q C’est un langage de haut niveau. Il demande relativement peu de connais-
sance sur le fonctionnement d’un ordinateur pour être utilisé.
q C’est un langage interprété. Un script Python n’a pas besoin d’être com-
pilé pour être exécuté, contrairement à des langages comme le C ou le C++.
q Il est orienté objet. C’est-à-dire qu’il est possible de concevoir en Python
des entités qui miment celles du monde réel (une cellule, une protéine, un atome,
etc.) avec un certain nombre de règles de fonctionnement et d’interactions. En
plus, Il supporte l’héritage multiple et la surcharge des opérateurs. Dans son
modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont
virtuelles.
q La syntaxe de Python est très simple et, combinée à des types de données
évolués (listes, dictionnaires...), conduit à des programmes à la fois très compacts
et très lisibles. À fonctionnalités égales, un programme Python est souvent de 3 à
5 fois plus court qu’un programme équivalent (C ou C++ ou même Java), ce qui
représente en général un temps de développement de 5 à 10 fois plus court et une
facilité de maintenance largement accrue.
q La bibliothèque standard de Python, et les paquetages contribués,
donnent accès à une grande variété de services : chaînes de caractères et expressions

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 20

régulières, services UNIX standards (fichiers, pipes, signaux, sockets, threads...),


protocoles Internet (Web, News, FTP, CGI, HTML...), persistance et bases de
données, interfaces graphiques.
q Il n’y a pas de pointeurs explicites en Python.
q Python intègre, comme Java ou les versions récentes de C++, un système
d’exceptions, qui permettent de simplifier considérablement la gestion des er-
reurs.
q Python est extensible : comme Tcl ou Guile, on peut facilement l’interfacer
avec des bibliothèques C existantes. On peut aussi s’en servir comme un langage
d’extension pour des systèmes logiciels complexes.
q Enfin, il est très utilisé en bio-informatique et plus généralement en ana-
lyse de données.

1.2.3 Versions du Python

Python continue à évoluer, mais cette évolution ne vise qu’à améliorer ou


perfectionner le produit. Il est donc très rare qu’il faille modifier les programmes
afin de les adapter à une nouvelle version qui serait devenue incompatible avec les
précédentes. Certains versions ont été développés sous Python 1.5.2, puis d’autres
sous Python 1.6, Python 2.0, 2.1, 2.2, 2.3, 2.4, etc. Ils n’ont guère nécessité de
modifications avant l’apparition de Python 3.
Cette nouvelle version du langage Python 3 a cependant apporté quelques
changements de fond qui lui confèrent une plus grande cohérence et même une
plus grande facilité d’utilisation, mais qui imposent une petite mise à jour de tous
les scripts écrits pour les versions précédentes.
Attention
+ Python 2 est un autre langage car il existe quelques différences importantes

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 21

entre Python 2 et Python 3.

Exemple 1.2 Différence entre Python 2 et 3


Python 2 Python 3
print "Bonjour" print("Bonjour")
print "Bonjour", variable1 print("Bonjour", variable1)
print "\n".join([x, y]) print(x, y, sep="\n")
6/4==1 1.5

1.2.4 Installation du Python

Python a l’avantage d’être disponible sur de nombreuses plates-formes


comme Microsoft Windows, Linux ou Mac OS X. L’installation sous Win-
dows est simple. Le langage Python est déjà intégré aux systèmes d’exploitation
Linux et Mac OS X.
Sous Microsoft Windows, il suffit d’exécuter le fichier python-3.11.2.msi ou tout
autre version plus récente.
En règle générale, il est conseillé de télécharger la dernière version stable du
langage, celle avec laquelle le plus grand nombre d’extensions seront compatibles,
en particulier toutes celles dont vous avez besoin.
IDLE (Integrated Development and Learning Environment) est un acronyme ou
environnement de développement et d’apprentissage intégré de Python.
IDLE a les fonctionnalités suivantes :

• Console Python (interpréteur interactif) avec coloration du code entré, des


sorties et des messages d’erreur ;

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 22

• Editeur de texte multi-fenêtres avec annulations multiples, coloration


Python, indentation automatique, aide pour les appels de fonction, etc ;

• Débogueur avec points d’arrêt persistants, pas-à-pas et visualisation des


espaces de nommage locaux et globaux.

Figure 1.6 – Fenêtre de commande fournie avec le langage Python

Remarque 1.4
3 Pour installer Python, il suffit de télécharger la version 3 qui corres-
pond à votre système d’exploitation (Windows ou Mac) à l’adresse :https:
//www.python.org/downloads/
3 Pour ce qui est des systèmes Linux, Python est généralement déjà installé
par défaut, et Idle se trouve dans les dépôts de la plupart des distributions.

1.2.5 Environnement du Python

Anaconda, Google Colab et PyCharm sont tous des environnements associés au


développement Python, mais ils servent à des fins différentes et peuvent être uti-
lisés en fonction des besoins spécifiques.
Anaconda
Anaconda est une distribution Python qui est principalement utilisée pour la
science des données et l’informatique scientifique. Il comprend Python lui-
même, ainsi que de nombreuses bibliothèques scientifiques pré-installées telles

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 23

que NumPy, pandas, matplotlib, et bien d’autres. Voici quelques points clés :
q Il est souvent utilisé dans le domaine de la science des données, de
l’apprentissage automatique et de l’analyse de données.
q Anaconda inclut un gestionnaire d’environnements conda, ce qui faci-
lite la création et la gestion d’environnements virtuels pour isoler les projets.
q Jupyter Notebook est également inclus, ce qui permet de créer des do-
cuments interactifs contenant du code Python, des graphiques et du texte
explicatif.
Google Colab
Google Colab (Colaboratory) est une plateforme cloud gratuite basée sur
Jupyter Notebook. Voici quelques points clés :
q Il s’agit d’un environnement Python entièrement en ligne, ce qui signifie
que vous n’avez pas besoin d’installer sur votre propre ordinateur.
q Il est idéal pour l’exécution de code Python en utilisant des ressources
cloud gratuites, y compris l’accès aux tâches d’apprentissage automatique
intensives en calcul.
q Google Colab est populaire parmi les chercheurs en apprentissage automa-
tique pour la création et l’exécution de modèles d’apprentissage profond.
PyCharm
PyCharm est un environnement de développement intégré (IDE) dédié à
Python. Voici quelques points clés :
q C’est un IDE robuste avec des fonctionnalités telles que la coloration
syntaxique, le débogage, le contrôle de version intégré, etc.
q Il est polyvalent et convient à tout type de développement Python, que ce
soit pour la science des données, le développement web, l’automatisation,

Pr. O.IBRIHICH Informatique 1


Chapitre 1 Introduction à l’algorithmique & Python 24

etc.
q PyCharm est particulièrement populaire parmi les développeurs Python pro-
fessionnels.
En résumé, vous pouvez choisir l’environnement qui convient le mieux à votre cas
d’utilisation. Anaconda est idéal pour la science des données, Google Colab offre
un accès gratuit aux ressources cloud, tandis que PyCharm est un IDE puissant
pour le développement Python général. Certains développeurs utilisent même une
combinaison de ces environnements en fonction de leurs besoins spécifiques.

Pr. O.IBRIHICH Informatique 1

Vous aimerez peut-être aussi