Vous êtes sur la page 1sur 8

ALGORITHMES ET PROGRAMMATION EN PYTHON

A/ ALGORITHMES
Même si les algorithmes sont souvent considérés comme étant du ressort exclusif des mathématiques et
de l'informatique, leur champ d'application est en réalité beaucoup plus vaste.

Le mot « algorithme » vient du nom de grand mathématicien persan Al Khawarizmi (vers l’an 820), qui
introduisit en Occident la numération décimale (rapportée d’Inde) et enseigna les règles élémentaires des
calculs s’y rapportant. La notion d’algorithme est donc historiquement liée aux manipulations numériques,
mais elle s’est progressivement développée pour porter sur des objets de plus en plus complexes, des
textes, des images, des formules logiques, des objets physiques, etc.

Un algorithme est une méthode générale pour résoudre un type de problèmes. Il est dit correct lorsque,
pour chaque instance du problème, il se termine en produisant la bonne sortie, c'est-à-dire qu'il résout le
problème posé.

Un algorithme, très simplement, c’est une méthode. Une façon systématique de procéder pour faire
quelque chose : trier des objets, situer des villes sur une carte, multiplier deux nombres, extraire une racine
carrée, chercher un mot dans le dictionnaire… Il se trouve que certaines actions mécaniques – peut-être
toutes ! – se prêtent bien à la décortication. On peut les décrire de manière générale, identifier des
procédures, des suites d’actions ou de manipulations précises à accomplir séquentiellement. C’est cela, un
algorithme. En tant que méthode, il répond donc à des questions du type : « comment faire ceci ? »,
« obtenir cela ? », « trouver telle information ? », « calculer tel nombre ? ». C’est un concept pratique, qui
traduit la notion intuitive de procédé systématique, applicable mécaniquement, sans réfléchir, en suivant
simplement un mode d’emploi précis.

Un exemple commun est par exemple la recherche d’un mot dans le dictionnaire. On regarde d’abord la
première lettre du mot, et on la compare avec celle des mots de la page où le dictionnaire est actuellement
ouvert. Suivant la position relative des deux lettres en question dans l’ordre alphabétique, on tourne alors
les pages en avant ou en arrière, jusqu’à ce que les premières lettres coïncident. Puis on reproduit la même
procédure avec la deuxième lettre du mot, puis la troisième, et ainsi de suite… Cet algorithme familier nous
indique que les objets manipulés ne sont pas nécessairement des nombres ou des objets mathématiques.
Ici, ce sont des mots, ou des lettres. De plus, on comprend que pour qu’un algorithme soit applicable, il faut
que les objets manipulés se présentent sous un format bien précis, qui assure à la fois l’efficacité et la
généralité du procédé. En l’occurrence, s’il s’agit d’un dictionnaire français, il faut que les mots recherchés
soient des mots français écrits en lettres latines, et surtout que, dans le dictionnaire, les mots soient bien
classés par ordre alphabétique !

Un autre exemple est celui de la recette de cuisine ou encore des instructions pour se rendre à une adresse
précise….

Sources : https://interstices.info/quest-ce-quun-algorithme/ et https://fr.wikipedia.org/wiki/Algorithme

On mesure l’efficacité d'un algorithme notamment par sa durée de calcul, par sa consommation de
mémoire vive (en partant du principe que chaque instruction a un temps d'exécution constant), par la
précision des résultats obtenus (par exemple avec l'utilisation de méthodes probabilistes), etc. Les
ordinateurs sur lesquels s'exécutent ces algorithmes ne sont pas infiniment rapides car le temps de
machine reste une ressource limitée, malgré une augmentation constante des performances des
ordinateurs. Un algorithme sera donc dit performant s'il utilise avec parcimonie les ressources dont il
dispose, c'est-à-dire le temps CPU, la mémoire vive et (aspect objet de recherches récentes) la
consommation électrique. L’analyse de la complexité algorithmique permet de prédire l'évolution en
temps calcul nécessaire pour amener un algorithme à son terme, en fonction de la quantité de données à
traiter.

B/ PROGRAMMATION EN PYTHON
Python c’est quoi ?

Python est un langage de programmation gratuit et portable (pc, unix, mac), dont la première version est sortie en
1991. Créé en 1989 par Guido Van Rossum, il a voyagé du Macintosh de son créateur, qui travaillait à cette époque
au Centrum voor Wiskunde en Informatica aux Pays-Bas, jusqu'à se voir associer une organisation à but non lucratif
particulièrement dévouée, la Python Software Foundation, créée en 2001. Ce langage a été baptisé ainsi en
hommage à la troupe de comiques les « Monty Python ».

Il est simple (lisible, il gère ses ressources et est dynamiquement typé) orienté objet et extensible (utilisation de
bibliothèques).

Comment utiliser Python ?

 Dans l’interpréteur : Les instructions sont exécutées au fur et à mesure de la frappe.


 Après avoir tapé dans un IDLE (environnement de développement intégré) qui comporte :
 Un éditeur de texte (pour écrire le programme)
 Un interpréteur (pour exécuter le programme)
 Un débogueur (pour tester le programme)
 Avec votre calculatrice Numworks (il faut : soit aller dans la console d’exécution, soit ajouter un script puis
Exécuter)

Installation et lancement ?

On peut télécharger gratuitement depuis https://www.python.org/ (choisir une version récente 3….).

On peut ensuite le lancer en allant dans le Menu Démarrer > tous les programmes > Python 3… > IDLE (Python GUI)

On peut aussi utiliser une distribution complète comme PYZO (https://pyzo.org/start.html sur les ordinateurs du
lycée) ou Edupython (https://edupython.tuxfamily.org/ également présent au lycée) ou PyCharm ou encore Pygame
à votre convenance…

Sans rien installer ?

Vous pouvez vous rendre sur https://console.basthon.fr/ (et sa documentation https://basthon.fr/about.html ) ou


encore sur https://replit.com/languages/python3 . Et un indispensable que vous apprendrez à utiliser :
https://pythontutor.com/visualize.html#mode=edit
I – Introduction
a) Les variables
Les variables sont des mots (ou identifiants) qui désignent des objets. Elles peuvent être de différents types :
 les entiers (exemples : -2;5): type int;
 les flottants (approximation des nombres réels par des décimaux; exemples : -2.0;2e6=2000000.0):
type float;
 les caractères (lettres) : type char;
 les booléens (vrai ou faux; exemples : 2==3;False;3<4) : type bool ;
 les listes (ou tableaux; exemples : [7,"Hello",4.1];[4,-7, 10,-13]), que l'on verra ultérieurement : type list ;
 les chaînes de caractères ou string (mots, phrases ; exemples : "Bonjour", "Ceci est une chaine de
caractères"), qui sont des listes de lettres en fait : type str. Elles sont entre guillemets simples 'chaine' ou
doubles "chaine".

Pour connaître le type de la variable a, on utilise dans python la syntaxe type(a).


Le nom de variable commence toujours par une lettre (minuscule le plus souvent, la majuscule étant réservée par
convention à des objets particuliers) suivie éventuellement de caractères parmi les lettres, les chiffres ou le _
(underscore).
De plus, deux règles supplémentaires : éviter les caractères spéciaux ou accentués dans un nom de variable, ne pas
choisir un mot clé utilisé par python (en général, l’éditeur l’écrit dans une autre couleur … print, input, or, def, …).

Parcourir un algorithme (dans n’importe quel langage) consiste à déterminer des valeurs successives prises par
chaque variable. Cela se présente facilement sous forme de tableau :

Exemple : parcourir l’algorithme ci-dessous,


a b
a=12 12
b=a-3 12 9
a=2*a 24 9
b=a-b 24 15
a=(a-1)//2 11 15

A la fin de cette algorithme, a vaut 11 et b vaut 15.


N.B. : en python, a// b renvoie le quotient entier de la division euclidienne de a par b ; avec des entiers a et b
positifs, a//b est équivalent à int(a/b).

Division euclidienne de a et b : a=b*q+r avec 0 < r < b


Reste de la division : a%b a est pair : a%2 == 0 a est impair : a%2==1 ou a%2 ! = 0
( ! = différent)

Dans votre notebook jupyter «Premiers_pas_Python_notebook.ipynb» , testez les opérateurs // puis % puis ** avec
des nombres, et commentez ci-dessous leur effet :

b) Les fonctions de base


Nous avons déjà vu la fonction type(), mais python possède de très nombreuses fonctions que nous
verrons/reverrons au fil des années.

Rappel et complément sur :


 print() : elle permet d’afficher dans la console tout ce qui sera listé entre les parenthèses (du texte, une ou
des variables séparées par une virgule).

a=7
b=8
print(´Le produit vaut ´,a*b)
Ce programme affichera le texte «Le produit vaut 56»

Cette fonction possède des arguments optionnels (souvent proposés par les éditeurs) qui doivent être nommés pour
être utilisés :
sep : définit un séparateur dans l’affichage de plusieurs éléments (par défaut, il vaut un espace) ;

end : définit le caractère utilisé à la fin du texte affiché, très utile pour des affichages successifs (par défaut, il
vaut « /n » ce qui représente un retour à la ligne).

print(´Le produit de´,a,´par b´,´vaut´,a*b,sep=´ ´,end=´./n´)

 input() : elle permet une interaction avec l’utilisateur. L’appel de cette fonction provoque l’interruption du
programme ; l’utilisateur est invité à saisir quelque chose au clavier et le programme reprend au clic sur le
bouton ou appuie sur la touche « entrée » ; en principe, on stocke ce qui est saisi dans une variable.

Saisie=input(´Entrer un caractère ou une chaine de caractères :´)

Attention, pour la saisie d’un nombre, il faudra l’insérer dans la fonction int() ou float() car la fonction input() seule
permet de récupérer qu’une chaine de caractères.

Nombre_entier=int(input(´Entrer un nombre entier :´))


Nombre_flottant=float(input(´Entrer un nombre réel :´))

Dans votre notebook jupyter «Premiers_pas_Python_notebook.ipynb» , tester ce qui vient d’être expliqué et
effectuer l’exercice ci-dessous.

Réponse 1 : « 8 10 »

Réponse 2 : « réponse : 4 »

Réponse 3 : « tatata a e »
Réponse 4 : « 18 »

Exemple : Qu’effectue le programme suivant :


import random #aleatoire
de = random.randint(1,6)
if de == 6 :
print(´´Gagné !´´)
else :
print(´´Perdu !´´)

Quelle différence entre le symbole « = » et « == » (que traduisent-ils) ?


Le symbole « = » désigne une affectation (ce qui est à droite est affecté à la variable qui est à gauche). La variable
peut donc être de n’importe quel type existant en python.

Le symbole « == » traduit une comparaison, c’est un booléen : si ce qui est à droite est égal à ce qui est à gauche,
alors l’expression entière prendra la valeur True, sinon elle prendra la valeur False.
def prixttc(prixht, tva) :
‘’ ‘’ ‘’ fonction qui calcule le prix ttc à partir d’un prix ht et de la tva pour
entree : prixht, tva (float)
sortie : ttc (float)
pour appeler ce docstring on utilise prixttc.__doc__
‘’ ‘’ ‘’
assert tva >= 0
assert prixht >= 0
ttc = prixht
24 Erreur “a” is not defined 25 40 55 70 85 100

Vous aimerez peut-être aussi