🎓 BTS SIO 2025-2027

Services Informatiques aux Organisations - SLAM & SISR

💻 Algorithmique Appliquée

👨‍🏫 Enseignant : M. KORDZINSKI

Coefficient :1
📝 Modalité :Projets + Examen pratique

🐍 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 logique
  • or : OU logique
  • not : 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
⚠️ Attention aux boucles infinies !

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)
📌 La fonction range() :
  • range(n) : de 0 à n-1
  • range(début, fin) : de début à fin-1
  • range(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.

Exemple : 3x + 7 = 8 + x

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 :

  1. On effectue les mêmes opérations aux deux membres de l'équation (addition, soustraction, multiplication, division)
  2. Le but est d'obtenir une équation du type ax = b
  3. On divise par a pour obtenir la valeur de x

Résolution de 7x + 2 = 9 + 2x :

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
À savoir :
  • 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.

f : x ↦ f(x)

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 :

  1. (E1) : 3x + 7 = 8 + x
  2. (E2) : 5n + 9 + n = 11 + n - 5
  3. (E3) : 5t - 9 = 4(1 + 2t)
  4. (E4) : 8(x + 1) = 3 - 7x
  5. (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 :

  1. On choisit un nombre x
  2. On le multiplie par 2
  3. On ajoute 5 au résultat
  4. On obtient un nombre h(x)

Questions :

  1. Exprimer h(x) en fonction de x
  2. Quelle est l'image de 1/3 par la fonction h ?
  3. 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 :

  1. Quelle est l'image de 1 par f ?
  2. 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

📚 Programme

  1. Bases de l'algorithmique : Variables, boucles, conditions
  2. Structures de données : Tableaux, listes chaînées, piles, files
  3. Algorithmes de tri : Tri à bulles, tri rapide, tri fusion
  4. Algorithmes de recherche : Recherche linéaire, dichotomique
  5. Récursivité : Factorielle, Fibonacci, backtracking
  6. 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é.

📁 Ressources

💻 Cours et TD

Exercices progressifs avec corrigés

📥 Télécharger

🎮 Challenges

Codingame, LeetCode, HackerRank

🎯 S'entraîner

📊 Visualisations

Animations d'algorithmes

👁️ Voir

🐍 Python.org

Documentation officielle Python

📖 Consulter

📚 France IOI

Exercices de programmation progressifs

🎓 Accéder

🎯 CodinGame

Apprendre en jouant

🎮 Jouer