💻 Algorithmique Appliquée
👨🏫 Enseignant : M. KORDZINSKI
🐍 Les Bases de Python
🔤 Variables et Types de Données
En Python, une variable est un conteneur qui stocke une valeur. Python reconnaît automatiquement le type de données.
Les types principaux :
- int : nombres entiers (ex: 5, -10, 42)
- float : nombres décimaux (ex: 3.14, -0.5, 2.0)
- str : chaînes de caractères (ex: "Bonjour", 'Python')
- bool : booléens (True ou False)
Exemples de déclaration de variables :
# Nombres entiers
age = 25
annee = 2025
# Nombres décimaux
rayon = 5.5
pi = 3.14
# Chaînes de caractères
prenom = "Lillian"
message = 'Bonjour le monde'
# Booléens
est_etudiant = True
a_reussi = False
⌨️ Entrées et Sorties
La fonction input() :
Permet de demander une saisie à l'utilisateur. Par défaut, elle retourne une chaîne de caractères.
# Saisie d'une chaîne de caractères
prenom = input("Quel est votre prénom ? ")
# Saisie d'un nombre entier
age = int(input("Quel est votre âge ? "))
# Saisie d'un nombre décimal
prix = float(input("Entrez le prix : "))
La fonction print() :
Permet d'afficher du texte ou des valeurs à l'écran.
# Affichage simple
print("Bonjour")
# Affichage de variables
print("Bonjour", prenom, "tu as", age, "ans")
# Affichage avec f-string (recommandé)
print(f"Bonjour {prenom}, tu as {age} ans")
📌 Exemple complet : Calculer l'aire d'un cercle
# Programme cercle.py
rayon = float(input('Entre le rayon en m\n'))
perimetre = 2 * 3.14 * rayon
aire = rayon * rayon * 3.14
print(f"l'aire est de {aire} m² et le périmètre est de {perimetre} m")
➕ Opérateurs Arithmétiques
+: Addition-: Soustraction*: Multiplication/: Division (résultat décimal)//: Division entière (quotient)%: Modulo (reste de la division)**: Puissance
a = 10
b = 3
print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
print(a / b) # 3.333...
print(a // b) # 3 (quotient)
print(a % b) # 1 (reste)
print(a ** b) # 1000 (10^3)
🔄 Structures de Contrôle
🔀 Les Conditions (if, elif, else)
Les conditions permettent d'exécuter du code uniquement si une certaine condition est vraie.
Opérateurs de comparaison :
==: égal à!=: différent de<: inférieur à>: supérieur à<=: inférieur ou égal>=: supérieur ou égal
Opérateurs logiques :
and: ET logiqueor: OU logiquenot: NON logique
Structure if simple :
age = int(input("Quel âge as-tu ? "))
if age >= 18:
print("Tu es majeur")
Structure if-else :
age = int(input("Quel âge as-tu ? "))
if age >= 18:
print("Tu es majeur")
else:
print("Tu es mineur")
Structure if-elif-else :
note = int(input("Quelle est ta note ? "))
if note >= 16:
print("Très bien !")
elif note >= 14:
print("Bien")
elif note >= 12:
print("Assez bien")
elif note >= 10:
print("Passable")
else:
print("Insuffisant")
📌 Exemple : Année bissextile
annee = int(input("Choisi une année \n"))
if annee % 4 == 0:
if annee % 400 == 0:
print("Il s'agit d'une année bissextile")
elif annee % 100 == 0:
print("Il ne s'agit pas d'une année bissextile")
else:
print("Il s'agit d'une année bissextile")
else:
print("Il ne s'agit pas d'une année bissextile")
🔁 Les Boucles
Boucle while (tant que) :
Répète un bloc de code tant qu'une condition est vraie.
# Exemple : Compter de 1 à 5
i = 1
while i <= 5:
print(i)
i = i + 1 # ou i += 1
N'oubliez jamais d'incrémenter votre variable de contrôle, sinon la boucle ne s'arrêtera jamais.
Boucle for (pour) :
Répète un bloc de code un nombre déterminé de fois.
# Compter de 0 à 4
for i in range(5):
print(i)
# Compter de 1 à 5
for i in range(1, 6):
print(i)
# Compter de 1 à 100 par pas de 2 (nombres impairs)
for i in range(1, 100, 2):
print(i)
range(n): de 0 à n-1range(début, fin): de début à fin-1range(début, fin, pas): de début à fin-1 avec un pas donné
📌 Exemple : Table de multiplication
n = int(input("Entrez un entier n (entre 2 et 9) : "))
print(f"--- Table de {n} ---")
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")
📌 Exemple : Doubler les voyelles
mot = input("Saisir un mot : ")
voyelles = "aeiouyAEIOUY"
mot_transforme = ""
for lettre in mot:
if lettre in voyelles:
mot_transforme = mot_transforme + lettre + lettre
else:
mot_transforme = mot_transforme + lettre
print("Résultat :", mot_transforme)
📋 Listes et Tableaux en Python
📚 Qu'est-ce qu'une liste ?
Une liste est une collection ordonnée d'éléments. Les éléments peuvent être de différents types.
# Créer une liste
t = ['a', 'b', 'd', 'e']
nombres = [1, 2, 3, 4, 5]
mixte = [1, "deux", 3.0, True]
vide = []
🔍 Accéder aux éléments d'une liste
t = ['a', 'b', 'd', 'e']
# Longueur de la liste
print(len(t)) # 4
# Premier élément (indice 0)
print(t[0]) # 'a'
# Dernier élément
print(t[-1]) # 'e'
# Parcourir tous les éléments
for i in range(len(t)):
print(t[i])
# Ou plus simplement :
for element in t:
print(element)
➕ Ajouter des éléments
t = ['a', 'b', 'd', 'e']
# Ajouter à la fin
t.append('f')
print(t) # ['a', 'b', 'd', 'e', 'f']
# Insérer à un indice précis
t.insert(2, 'c')
print(t) # ['a', 'b', 'c', 'd', 'e', 'f']
➖ Supprimer des éléments
L = ['a', 'b', 'c', 'd', 'e']
# Supprimer par indice
del L[2]
print(L) # ['a', 'b', 'd', 'e']
# Supprimer par valeur (première occurrence)
L.remove('b')
print(L) # ['a', 'd', 'e']
# Supprimer et récupérer un élément
element = L.pop(1) # Retire l'élément à l'indice 1
print(element) # 'd'
print(L) # ['a', 'e']
🔗 Concaténer des listes
t = ['a', 'b', 'c']
t1 = ["asterix", 'obelix', 'idefix']
# Concaténation avec +
L = t + t1
print(L) # ['a', 'b', 'c', 'asterix', 'obelix', 'idefix']
📌 Exemple complet : Créer une liste dynamiquement
t = []
while True:
reponse = input("Tu veux ajouter un nombre o/n : \n")
if reponse == "o" or reponse == "O":
nombre = int(input("Il faut mettre un nombre : \n"))
t.append(nombre)
elif reponse == "n" or reponse == "N":
break
else:
print("Apprendre à écrire\n")
print(t)
⚙️ Les Fonctions en Python
🎯 Qu'est-ce qu'une fonction ?
Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Elle peut prendre des paramètres en entrée et retourner un résultat.
Syntaxe de base :
def nom_fonction(parametre1, parametre2):
# Code de la fonction
resultat = parametre1 + parametre2
return resultat
# Appel de la fonction
valeur = nom_fonction(5, 3)
print(valeur) # 8
📌 Exemple : Compter les occurrences d'une lettre
def chercher(mot, lettre):
"""Compte le nombre d'occurrences d'une lettre dans un mot"""
cpt = 0
for i in range(len(mot)):
if mot[i] == lettre:
cpt += 1
return cpt
# Utilisation
saisi_mot = input("Choisis un mot ou une phrase : \n")
saisi_lettre = input("Choisis une lettre à chercher : \n")
resultat = chercher(saisi_mot, saisi_lettre)
print(f"Il y a {resultat} fois la lettre '{saisi_lettre}' dans ce texte.")
📌 Exemple : Compter les diviseurs d'un nombre
def compter_diviseurs(n):
"""Retourne le nombre de diviseurs d'un entier n"""
cpt = 0
for i in range(1, n + 1):
if n % i == 0:
cpt = cpt + 1
return cpt
# Utilisation
n = int(input("Saisir un entier n : "))
nb_diviseurs = compter_diviseurs(n)
print(f"Le nombre de diviseurs est : {nb_diviseurs}")
💡 Avantages des fonctions :
- Réutilisabilité : écrire le code une fois, l'utiliser plusieurs fois
- Lisibilité : diviser un programme complexe en petites tâches simples
- Maintenance : plus facile de corriger ou modifier le code
- Modularité : tester chaque fonction indépendamment
🧮 Algorithmes Classiques
🔢 Conversion Décimal → Binaire
Algorithme pour convertir un nombre décimal en binaire en utilisant des divisions successives par 2.
decimal = int(input("Choisi un nombre décimal : "))
binaire = ""
while decimal > 0:
reste = decimal % 2
binaire = str(reste) + binaire
decimal //= 2
print(f"En binaire : {binaire}")
🔢 PGCD (Algorithme d'Euclide)
Calculer le Plus Grand Commun Diviseur de deux nombres avec l'algorithme d'Euclide.
a = int(input("Valeur a : "))
b = int(input("Valeur b : "))
a_orig = a
b_orig = b
while b > 0:
r = a % b
a = b
b = r
print(f"Le PGCD de {a_orig} et {b_orig} est : {a}")
🔢 Test de Primalité
Déterminer si un nombre est premier (divisible uniquement par 1 et lui-même).
p = int(input("p : entier \n"))
if p < 2:
rep = "Faux"
else:
i = 2
rep = "Vrai"
while rep == "Vrai" and i < p:
if p % i == 0:
rep = "Faux"
i = i + 1
print(f"Il est {rep}")
🔢 Somme des Chiffres d'un Nombre
Calculer la somme de tous les chiffres d'un nombre entier.
n = int(input("Saisir un nombre entier : "))
s = 0
while n != 0:
s = s + n % 10 # Ajouter le dernier chiffre
n = n // 10 # Supprimer le dernier chiffre
print(f"Somme des chiffres : {s}")
🔢 Division Euclidienne
Calculer le quotient et le reste d'une division sans utiliser les opérateurs // et %.
a = int(input("Saisir entier n°1 : "))
b = int(input("Saisir entier n°2 : "))
q = 0
while b * q <= a:
q = q + 1
q = q - 1
r = a - b * q
print(f"q = {q} et r = {r}")
📌 Exemple : Jeu de Devinette
import random
nombre_mystere = random.randint(1, 99)
nb_essais = 5
i = 0
print("Devine le nombre entre 1 et 99 !")
while i < nb_essais:
proposition = int(input("Choisi un nombre : \n"))
i = i + 1
essais_restants = nb_essais - i
if proposition > nombre_mystere:
print("Trop grand")
print(f"Il te reste {essais_restants} essai(s)")
elif proposition < nombre_mystere:
print("Trop petit")
print(f"Il te reste {essais_restants} essai(s)")
else:
print(f"Bravo ! Tu as trouvé {nombre_mystere} !")
break
if proposition != nombre_mystere:
print(f"Perdu ! C'était {nombre_mystere}")
➕ Mathématiques pour l'Algorithmique
📐 Résoudre une Équation (degré 1)
Définition :
Une équation est une égalité qui comporte au moins un nombre inconnu, généralement désigné par une lettre.
Une solution d'une équation est une valeur de l'inconnue pour laquelle l'égalité est vraie.
Résoudre une équation, c'est trouver toutes les solutions de cette équation.
Méthode de résolution :
- On effectue les mêmes opérations aux deux membres de l'équation (addition, soustraction, multiplication, division)
- Le but est d'obtenir une équation du type
ax = b - On divise par
apour obtenir la valeur dex
Résolution de 7x + 2 = 9 + 2x :
⇔ 7x + 2 - 2 = 9 + 2x - 2 (on enlève 2 aux deux membres)
⇔ 7x = 7 + 2x
⇔ 7x - 2x = 7 + 2x - 2x (on enlève 2x aux deux membres)
⇔ 5x = 7
⇔ x = 7/5 (on divise par 5)
⇔ x = 1,4
- En BTS SIO, une équation de degré 1 aura une seule solution
- Il arrive qu'une équation n'ait aucune solution : 3x = 3x + 5
- Il arrive qu'une équation ait une infinité de solutions : 3(x + 1) = 3x + 3
📊 Vocabulaire des Fonctions
Définition :
Une fonction est un procédé (mécanisme) qui à un nombre associe un nombre.
où x désigne un nombre de l'ensemble de départ et f(x) se lit "l'image de x par f".
Courbe représentative :
Dans un repère, la courbe représentative d'une fonction f est l'ensemble des points de coordonnées (x, f(x)).
Exemple avec f : x ↦ 2x + 3
- f(1) = 5 donc le point A(1 ; 5) est sur la courbe de f
- f(-1) = 1 donc le point B(-1 ; 1) est sur la courbe de f
- f(0) = 3 donc le point C(0 ; 3) est sur la courbe de f
- f(0,5) = 4 donc le point D(0,5 ; 4) est sur la courbe de f
Vocabulaire important :
- Image : f(1) = 5 signifie que 5 est l'image de 1 par f
- Antécédent : f(1) = 5 signifie que 1 est UN antécédent de 5 par f
📝 Exercices Pratiques
Exercice 1 : Résoudre des équations
Résoudre les équations suivantes :
- (E1) : 3x + 7 = 8 + x
- (E2) : 5n + 9 + n = 11 + n - 5
- (E3) : 5t - 9 = 4(1 + 2t)
- (E4) : 8(x + 1) = 3 - 7x
- (E5) : 0 = 9(x - 1) + 11
Exercice 2 : Prix d'une BD
Dans un magasin :
- Jordan achète 4 BD au même prix et un manga à 8 €
- Piala achète 2 de ces BD et un dictionnaire à 45 €
- À la caisse, ils paient la même somme
Question : Déterminer le prix, en euro, d'une BD.
Exercice 3 : Périmètres
Tom affirme : « Ce triangle équilatéral et ce rectangle ne peuvent pas avoir le même périmètre ».
Question : Tom a-t-il raison ? Expliquer.
Exercice 4 : Angles d'un triangle
Trouver la mesure de chacun des angles d'un triangle sachant que :
- Un angle mesure 75°
- Un autre angle mesure x
- Le troisième angle mesure 2x
Rappel : La somme des angles d'un triangle = 180°
Exercice 5 : Problème d'âges
La somme des âges de Jacques, Paul et Estelle est 41 ans.
- Jacques a 3 ans de plus que Paul
- Estelle a 4 ans de moins que Paul
Question : Quel est l'âge de chacun ?
Exercice 6 : Nombre mystère
Joey pense à un nombre, lui ajoute 11, multiplie le tout par 3 et au résultat obtenu il retranche 3. Joey obtient 51.
Question : Quel est ce nombre de départ ?
Exercice 7 : Problème de classe
Dans ma classe, il y a 28 élèves. Le jour où Lucas était absent, il y avait deux fois plus de filles que de garçons.
Question : Combien y a-t-il de filles dans ma classe ?
Exercice 8 : Fractions d'élèves
Combien y a-t-il d'élèves dans une classe sachant qu'un tiers calculent, les deux cinquièmes écrivent et 8 élèves dessinent ?
Exercice 9 : Fonction - Programme de calcul
On donne le programme de calcul suivant :
- On choisit un nombre x
- On le multiplie par 2
- On ajoute 5 au résultat
- On obtient un nombre h(x)
Questions :
- Exprimer h(x) en fonction de x
- Quelle est l'image de 1/3 par la fonction h ?
- Donner le ou les antécédents de 9 par la fonction h
Exercice 10 : Lecture graphique
À partir d'un graphique représentant une fonction f :
- Quelle est l'image de 1 par f ?
- Donner des valeurs pour : f(0), l'image de -2 par f, f(-1)
Exercice Programmation : Doubler son capital
Objectif : Calculer combien d'années il faut pour doubler un capital avec un taux d'intérêt donné.
# Exercice à compléter
capital = float(input("Quel est le capital de départ ? "))
taux = float(input("Quel est le taux (en %) ? "))
capital_double = capital * 2
capital_actuel = capital
annees = 0
# À compléter : calculer le nombre d'années nécessaires
while capital_actuel < capital_double:
# Ajouter le code ici
pass
print(f"Il faudra {annees} année(s) pour doubler le capital.")
Exercice Programmation : Dessin d'escalier
Objectif : Créer un escalier en étoiles.
# Exemple de sortie :
# *
# **
# ***
# ****
etage = int(input("Combien d'étages ? "))
# À compléter
📖 Vue d'ensemble
L'Algorithmique Appliquée enseigne les fondements de la résolution de problèmes informatiques par les algorithmes et la programmation.
🎯 Objectifs
- Concevoir des algorithmes efficaces
- Maîtriser les structures de données (tableaux, listes, arbres)
- Analyser la complexité algorithmique
- Implémenter des algorithmes en Python.
📚 Programme
- Bases de l'algorithmique : Variables, boucles, conditions
- Structures de données : Tableaux, listes chaînées, piles, files
- Algorithmes de tri : Tri à bulles, tri rapide, tri fusion
- Algorithmes de recherche : Recherche linéaire, dichotomique
- Récursivité : Factorielle, Fibonacci, backtracking
- Graphes : Parcours en largeur et profondeur, Dijkstra
⚠️ Points d'attention
Important : L'algorithmique nécessite beaucoup de pratique. Faites les exercices régulièrement ! L'examen pratique teste votre capacité à coder en temps limité.