Blocs, Portée & Flux de Contrôle

Programmation Orientée Objet
Développement
Maîtriser la portée des variables (scope), la pile d’exécution, les structures conditionnelles et les boucles.

Un programme informatique n’est pas une simple liste d’instructions exécutées de haut en bas sans détour. Pour résoudre des problèmes complexes, le programme doit prendre des décisions, répéter des tâches et organiser ses données dans des espaces de visibilité scellés.

📦 Blocs de Code et Portée (Scope)

Un bloc de code est un groupe d’instructions délimité qui s’exécute ensemble.

  • En C++, Java, JS, C# : délimité par des accolades { ... }.
  • En Python : délimité par l’indentation (espaces).

La portée (scope) définit la durée de vie et la visibilité d’une variable. Une variable créée à l’intérieur d’un bloc naît à son entrée et meurt à sa sortie.

Exemple de Portée
# Variable Globale (accessible partout)
niveau_global = 100

def calculer_bonus():
    # Variable Locale à la fonction
    bonus_local = 25

    if bonus_local > 10:
        # Variable de bloc (portée restreinte)
        multiplicateur = 2
        total = (niveau_global + bonus_local) * multiplicateur
        return total

    # ERREUR si on essaie d'accéder à multiplicateur ici !
Règle d’Or de la Portée

Une variable doit toujours être déclarée dans la portée la plus restreinte possible. Cela évite qu’une autre partie du programme ne la modifie par accident (effet de bord).

  1. Variables Globales : À utiliser avec une extrême parcimonie (de préférence uniquement pour des constantes immuables).
  2. Variables Locales : Créées lors de l’appel d’une fonction et détruites dès le return.

🔀 Contrôle du Flux : Conditionnelles & Match

Le flux d’exécution représente le chemin emprunté par l’ordinateur à travers le code. Les structures conditionnelles permettent au programme d’emprunter des branches différentes selon la vérité d’une expression logique.

Graphe de Décision Interactif
Syntaxe Agnostique
# Structure if / elif / else
if solde >= prix:
    valider_achat()
elif solde > 0:
    proposer_credit()
else:
    refuser_achat()

# Pattern Matching (switch / match)
match statut:
    case "ACTIF":
        autoriser()
    case "SUSPENDU":
        avertir()
    case _:
        bloquer()

🔄 Boucles et Itérations

Les boucles répètent un bloc de code tant qu’une condition reste vraie ou pour chaque élément d’une collection.

Ajustez le nombre d’itérations et observez l’exécution dynamique de la boucle :

Itérations demandées Étape actuelle Statut
Mode :
# 1. Boucle Pour (For) avec compteur
for i in range(5):
    print(f"Étape {i}")

# 2. Boucle Pour Chaque (For-Each) sur collection
animaux = ["Chat", "Chien", "Oiseau"]
for animal in animaux:
    print(animal)

# 3. Boucle Tant Que (While)
compteur = 0
while compteur < 5:
    compteur += 1

⚡ Fonctions, Méthodes & Lambdas

Une fonction est un bloc de code réutilisable qui prend des entrées (paramètres), effectue des traitements, et retourne un résultat (valeur de retour).

  • Fonction vs Méthode : Une fonction est autonome. Une méthode est une fonction rattachée à un objet ou une classe.
  • Fonction Anonyme / Lambda : Une fonction courte déclarée en ligne sans nom explicite, très utilisée pour filtrer ou transformer des données.
# Fonction classique
def calculer_surface(largeur, hauteur):
    return largeur * hauteur

# Fonction Lambda (anonyme)
multiplier_par_deux = lambda x: x * 2

print(multiplier_par_deux(5))  # Résultat: 10