Alan Turing a montré que pour que les machines puissent résoudre des problèmes, il fallait traduire ces problèmes en algorithmes.

Nous allons voir maintenant quels sont les ingrédients de base d'un algorithme, puis comment écrire ces instructions en Python.

Euclid flowchart

Les ingrédients des Algorithmes

Un algorithme utilise cinq ingrédients de base:

  1. Un algorithme est un chemin à parcourir pas à pas, une séquence d'instructions.
  2. Cependant il ne faut pas forcément effectuer toutes les instructions en fonctions de conditions: le instructions conditionnelles.
  3. Nous avons aussi besoin d'une autre construction, la boucle d'instructions qui permet de faire durer ou répéter une opération autant de fois que nécessaire.
  4. Nous introduisons la notion de variable ou de paramètre qui permettra de modifier le programme en fonction de ces paramètres.
  5. La dernière construction, qui consiste à regrouper un bloc d'instructions dans une fonction, va nous permettre de réutiliser différentes fonctionnalités, comme les briques d'un jeu de Lego, pour réaliser une construction logicielle.

Source Les ingrédients des algorithmes sur le site Interstices

Traduire des algorithmes en Python

Pour que les ordinateurs réalisent nos algorithmes, nous devons écrire les séquences d'instructions dans un langage de programmation, dans notre cas Python.

Séquence d'instructions

En Python, les lignes du programme sont exécutées de haut en bas, à l'exception:

  • des lignes de commentaires qui commencent #.
print("Hello")
# print("World") 

N'affichera que "Hello" en sortie car la deuxième ligne est commentée donc non exécutée.

  • des lignes de bloc qui sont indentées par rapport à la colonne de gauche.
print("Hello")
   print("World")

Renvoie une erreur IndentationError car la deuxième ligne est indentée et ne devrait pas l'être.

Instructions conditionnelles

Il s'agit de blocs d'instructions exécutés en fonction de certaines conditions, nous voyons ici:

  • if(si en français), qui peut être complété par un
  • else(sinon en français), ou encore un
  • elif(sinon si en français):
n = int(input("Entrez un nombre entier")
if n % 2 == 0:
   print("Ce nombre est pair")
elif n % 2 == 1:
   print("Ce nombre est impair")
else:
   print("Vous n'avez pas dû rentrer un nombre entier")

Boucle d'instructions

Pour effectuer des répétitions en boucle, on utilise les instructions:

  • for: pour en français.
  • while: tant que en français.

Les deux types de boucles sont interchangeables, on préfère cependant utiliser:

  • for si le nombre d'itérations est connu à l'avance.
  • while si l'arrêt s'effectuera sur une conditions.
for i in range(10):
   print(i)
i = 0 # initialisation
while i<10: # condition d'arrêt
   print(i)
   i = i + 1 # incrémentation de l'indice

Les variables

C'est un moyen de donner un nom à des valeurs afin de pouvoir les réutiliser aisément par la suite.

PI = 3.141592653589793
R = 1 
print("Le périmètre est:", 2*PI*R)
print("La surface est:", PI*R**2)```
Nous avons ici affecté deux variables `PI` et `R` dont nous pouvons nous servir tout au long du programme par la suite.

Les fonctions

Il s'agit de blocs d'instructions exécutés à la demande, on les introduits par le mot-clef def.

def calcule_surface(r):
   PI = 3.141592653589793
   S = PI*r**2
   return S

Nous venons de définir la fonction, mais pour l'instant, il ne se passe rien.

Pour exécuter le code de la fonction, il faut maintenant appeler la fonction avec un paramètre pour que l'exécuter. python # on calcule la surface pour un rayon de 1 calcule_surface(1)

Renvoie 3.141592653589793, la surface d'un disque de rayon 1.