Académique Documents
Professionnel Documents
Culture Documents
Cours - Chapitre I
Cours - Chapitre I
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
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
7
Table des figures 8
9
Chapitre
1
Introduction à l’algorithmique &
Python
1.1 Introduction à l’algorithmique
10
Chapitre 1 Introduction à l’algorithmique & Python 11
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
"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.
3. Casser les œufs, mélanger avec une cuillère en bois et ajouter progressive-
ment le lait sans cesser de tourner ;
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. Complexité
2. Calculabilité
• Etant donnée une tâche, peut-on dire s’il existe un algorithme qui la ré-
solve ?
3. Correction
1. dont les opérations sont toutes définies et portent sur des objets appelés in-
formations,
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.
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.
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.
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.
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.
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,
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.