Aller au contenu

Algorithme

Algorithmique

Qu'est-ce qu'un algorithme ?

Un algorithme est une série d'instructions ordonnées et non ambiguës permettant de résoudre un problème ou d'effectuer une tâche. Imaginez une recette de cuisine : elle liste les étapes à suivre pour préparer un plat. De la même manière, un algorithme guide l'ordinateur à travers les étapes nécessaires pour parvenir à un résultat spécifique.

Insérer une image conceptuelle d'un algorithme, comme un diagramme de flux simplifié illustrant les étapes d'un processus.

Exemple en Python :

# Algorithme pour ajouter deux nombres 
def additionner(a, b):
     resultat = a + b
     return resultat
 
print(additionner(5, 7))

Notions de base de l'algorithmique

Avant de plonger dans la création d'algorithmes complexes, il est essentiel de comprendre les fondements de l'algorithmique.

Variables

Une variable en programmation est une abstraction qui représente un emplacement de mémoire. Cet emplacement de mémoire est utilisé pour stocker des valeurs qui peuvent être modifiées au cours de l'exécution d'un programme. En d'autres termes, une variable est comme une boîte dans laquelle nous pouvons mettre des données, les modifier et les récupérer lorsque nécessaire.

Insérer une image représentant une variable comme une boîte avec une étiquette, qui contient une valeur.

Exemple en Python :

# Création d'une variable
nombre = 10  # La valeur 10 est stockée dans la mémoire et la variable 'nombre' y fait référence

Logique de mémoire

Quand une variable est créée, le système d'exploitation alloue un espace de mémoire pour stocker sa valeur. Cette allocation est gérée en arrière-plan, et le développeur n'a pas besoin de connaître l'emplacement physique de la mémoire. Cependant, il est important de comprendre que chaque variable a une adresse mémoire unique, et c'est ainsi que l'ordinateur peut suivre où les données sont stockées et comment y accéder.

On peut comparer cela à une boite aux lettres. L’adresse permet de savoir quelle boite aux lettres accéder, et le contenu de la boite aux lettres est la valeur qu’on a stockée. Le système d’exploitation joue alors le rôle de carnet d’adresse. Il retient que le nom de la variable pointe vers une adresse donnée. Du point de vue du développeur, seul le nom dans le carnet d’adresse est donc important.

Insérer une image montrant la mémoire d'un ordinateur avec des adresses et des variables pointant vers ces adresses.

Exemple en Python :

# Assignation d'une nouvelle valeur à une variable
nombre = 15  # La valeur précédente est remplacée par 15 dans le même emplacement de mémoire

Types de données

Les types de données sont essentiels en programmation car ils indiquent à l'ordinateur la nature des données qu'il doit manipuler. Chaque type de donnée a un ensemble de caractéristiques qui définissent les opérations qui peuvent être effectuées avec ces données et la quantité de mémoire nécessaire pour les stocker.

Entiers (int)

Les entiers, ou int, sont des nombres sans partie décimale. Ils peuvent être positifs ou négatifs et sont souvent utilisés pour compter ou itérer sur des éléments, comme dans une boucle.

Exemple en Python :

# Un entier
nombre_de_pommes = 5

Nombres à virgule flottante (float)

Les nombres à virgule flottante, ou float, sont des nombres réels qui incluent une partie décimale. Ils sont utilisés lorsque des calculs précis sont nécessaires, comme en ingénierie ou en sciences.

Exemple en Python :

# Un nombre flottant
pi = 3.14159

Chaînes de caractères (str)

Les chaînes de caractères, ou str, sont des séquences de caractères utilisées pour représenter du texte. Elles sont entourées de guillemets simples ou doubles et peuvent contenir des lettres, des chiffres, des espaces et des symboles.

Exemple en Python :

# Une chaîne de caractères
message = "Bonjour tout le monde!"

Booléens (bool)

Les booléens, ou bool, sont un type de donnée simple qui ne peut prendre que deux valeurs : True (vrai) ou False (faux). Ils sont particulièrement utiles dans les structures de contrôle pour prendre des décisions en fonction de conditions.

Exemple en Python :

# Un booléen
lampe_allumee = True

Ces types de données affectent la manière dont les données sont stockées en mémoire et la façon dont les opérations sont effectuées sur ces données. Choisir le type de donnée approprié pour une variable est une décision importante qui peut affecter la précision et l'efficacité d'un programme.

Opérations et expressions

Les opérations en programmation sont des actions qui manipulent des données. Elles peuvent être arithmétiques, logiques, de comparaison, ou d'affectation, entre autres. Les expressions, quant à elles, sont des combinaisons d'opérateurs et de valeurs (qui peuvent être des variables ou des constantes) formant une suite logique qui, une fois évaluée, produit une nouvelle valeur.

Opérations arithmétiques

Les opérations arithmétiques incluent l'addition (+), la soustraction (-), la multiplication (*), la division (/), et le modulo (%), qui retourne le reste d'une division.

Exemple en Python :

# Opérations arithmétiques
a = 10
b = 3
somme = a + b          # Résultat: 13
difference = a - b     # Résultat: 7
produit = a * b        # Résultat: 30
quotient = a / b       # Résultat: 3.333...
reste = a % b          # Résultat: 1

Opérations logiques

Les opérations logiques sont des opérations qui appliquent des règles de logique booléenne aux valeurs True (vrai) et False (faux). Ces opérations sont fondamentales en programmation, car elles permettent de contrôler le flux d'exécution du code en fonction de conditions multiples. Les trois opérateurs logiques de base sont AND, OR, et NOT.

Insérer une image illustrant un circuit logique avec des portes AND, OR, et NOT.

Opérateur logique AND

L'opérateur AND retourne True si et seulement si tous les opérandes sont True. Voici sa table de vérité :

True False
True True False
False False False
Opérateur logique OR

L'opérateur OR retourne True si au moins un des opérandes est True. Voici sa table de vérité :

True False
True True True
False True False
Opérateur logique NOT

L'opérateur NOT est un opérateur unaire qui inverse la valeur de vérité de l'opérande. Voici sa table de vérité :

A NOT A
True False
False True

Exemple en Python :

# Opérations logiques
vrai = True
faux = False
resultat_and = vrai and faux  # Résultat: False
resultat_or = vrai or faux    # Résultat: True
resultat_not = not vrai       # Résultat: False

Les tables de vérité sont un outil précieux pour comprendre le résultat des opérations logiques. Elles permettent de prévoir le résultat d'une expression logique, quelles que soient les valeurs de vérité des opérandes. En programmation, les opérations logiques sont souvent utilisées dans les structures de contrôle pour tester des conditions complexes et déterminer le chemin d'exécution d'un programme.

Opérations de comparaison

En programmation, il est crucial de distinguer l'opérateur d'affectation = de l'opérateur de comparaison d'égalité ==. Bien que ces deux opérateurs puissent sembler similaires, ils ont des fonctions très différentes.

Opérateur d'affectation =

L'opérateur = est utilisé pour assigner une valeur à une variable. Lorsqu'on utilise cet opérateur, la valeur de droite est calculée et stockée dans la variable située à gauche de l'opérateur.

Exemple en Python :

# Affectation de la valeur 10 à la variable 'nombre'
nombre = 10

Dans cet exemple, nombre est une variable à laquelle on affecte la valeur 10. Après l'exécution de cette ligne de code, la variable nombre contiendra 10.

Opérateur de comparaison d'égalité ==

L'opérateur == est utilisé pour comparer deux valeurs afin de déterminer si elles sont égales. Si les valeurs sont égales, l'expression retourne True; sinon, elle retourne False.

Exemple en Python :

# Comparaison de la variable 'nombre' avec la valeur 10
resultat = (nombre == 10)  # Résultat: True

Dans cet exemple, (nombre == 10) est une expression de comparaison qui vérifie si la valeur de la variable nombre est égale à 10. Comme nombre a été précédemment affecté à 10, l'expression retourne True.

Autres opérateurs de comparaison

En plus de l'égalité, il existe d'autres opérateurs de comparaison qui permettent de tester des relations différentes entre les valeurs :

  • La non-égalité (!=) vérifie si deux valeurs sont différentes.
  • Le supérieur (>) vérifie si la valeur de gauche est supérieure à celle de droite.
  • L'inférieur (<) vérifie si la valeur de gauche est inférieure à celle de droite.
  • Le supérieur ou égal (>=) vérifie si la valeur de gauche est supérieure ou égale à celle de droite.
  • L'inférieur ou égal (<=) vérifie si la valeur de gauche est inférieure ou égale à celle de droite.

Expressions

Une expression peut être simple, comme une seule valeur ou une variable, ou complexe, combinant plusieurs opérations. Les expressions sont évaluées par l'ordinateur pour produire une nouvelle valeur, qui peut ensuite être utilisée ou affectée à une variable.

Exemple en Python :

# Expression complexe
resultat = (a + b) * (a - b)

Dans cet exemple, l'expression (a + b) * (a - b) est d'abord évaluée en effectuant l'addition et la soustraction, puis en multipliant les résultats de ces deux opérations.

Les opérations et expressions sont au cœur de la logique de programmation. Elles permettent aux programmeurs de définir la manière dont les données sont traitées et les règles selon lesquelles les décisions sont prises au sein d'un programme.

Structures de contrôle

Les structures de contrôle sont des éléments de syntaxe qui dirigent le flux d'exécution du code selon des conditions logiques ou des séquences répétitives.

Conditionnelles

Les instructions conditionnelles permettent de diriger l'exécution de certaines parties d'un programme en fonction de conditions booléennes. Les structures conditionnelles de base sont if, elif (else if), et else, signifiant si, sinon si et sinon.

if

L'instruction if (si) est utilisée pour exécuter un bloc de code seulement si une condition spécifiée est vraie.

Exemple en Python :

age = 20
if age >= 18:
    print("Vous êtes majeur.")

Dans cet exemple, le message ne sera affiché que si la valeur de age est supérieure ou égale à 18.

elif

L'instruction elif, abréviation de "else if" (sinon si), permet de vérifier plusieurs conditions successives. Si la condition pour if est fausse, le programme vérifie la condition suivante dans elif.

Exemple en Python :

age = 16
if age >= 18:
    print("Vous êtes majeur.")
elif age == 17:
    print("Vous serez bientôt majeur.")

Dans cet exemple, si age est 17, le message "Vous serez bientôt majeur." sera affiché.

else

L'instruction else (sinon) capture tous les cas qui ne répondent pas aux conditions spécifiées par if et elif. C'est une sorte de filet de sécurité qui permet d'exécuter un bloc de code si toutes les autres conditions sont fausses.

Exemple en Python :

age = 16
if age >= 18:
    print("Vous êtes majeur.")
elif age == 17:
    print("Vous serez bientôt majeur.")
else:
    print("Vous êtes mineur.")

Dans cet exemple, si age est inférieur à 17, le message "Vous êtes mineur." sera affiché.

Boucles

Les boucles sont des structures qui répètent un bloc de code tant qu'une condition donnée est vraie. Les deux types de boucles les plus courants sont for et while, signifiant pour et pendant que.

for

La boucle for (pour) est utilisée pour itérer sur une séquence (qui peut être une liste, une chaîne de caractères, ou une plage de nombres).

Exemple en Python :

for i in range(5):
    print(i)

Dans cet exemple, print(i) est exécuté pour chaque valeur de i de 0 à 4.

while

La boucle while (pendant que) exécute un bloc de code tant que la condition spécifiée est vraie.

Exemple en Python :

compteur = 0
while compteur < 5:
    print(compteur)
    compteur += 1

Dans cet exemple, le bloc de code continuera à s'exécuter jusqu'à ce que compteur soit égal à 5.

Pseudo-code

Le pseudo-code est une manière informelle de noter un algorithme. Il utilise des termes de langage courant pour décrire les opérations, ce qui le rend accessible même à ceux qui ne connaissent pas de langage de programmation spécifique.

Exemple de pseudo-code :

POUR chaque nombre de 1 à 5 FAIRE
    AFFICHER nombre
FIN POUR

Équivalent en Python :

for nombre in range(1, 6):
    print(nombre)

Dans ce cours, nous nous concentrerons sur la syntaxe du langage Python (nous reviendrons sur ce choix dans la suite). Le pseudo code permet de construire la logique en dehors d’autres contexte, ce qui est pratique au début. Toutefois, il s’agit d’une syntaxe à apprendre comme n’importe quel langage de programmation. Dès lors, puisqu’il est nécessaire d’apprendre une nouvelle façon d’écrire, nous avons considéré plus intéressant de directement apprendre une syntaxe utilisable sur un ordinateur.