Cours 1IT

Programmation et Algorithmique

Python, algorithmes, variables, boucles, fonctions et structures de données

Objectifs pédagogiques

  • Maîtriser les structures de base de Python : variables, types de données, opérateurs
  • Comprendre les structures conditionnelles (if/elif/else) et les boucles (for/while)
  • Créer des fonctions réutilisables avec paramètres et valeurs de retour
  • Utiliser les structures de données : listes, tuples et dictionnaires
  • Concevoir des algorithmes simples pour résoudre des problèmes techniques

1. Introduction à Python

Python est un langage de programmation créé par Guido van Rossum en 1991. Il est devenu le langage de référence pour l'enseignement et l'industrie grâce à sa syntaxe claire et lisible. En STI2D, Python est utilisé pour programmer des systèmes embarqués, traiter des données de capteurs et automatiser des tâches.

# Premier programme Python
print("Bonjour STI2D !")

# Variables et types
temperature = 25.5 # float (nombre décimal)
capteur_actif = True # booléen
nom_capteur = "DHT22" # chaîne de caractères
nb_mesures = 100 # entier (int)

Python se distingue par son typage dynamique : le type d'une variable est déterminé automatiquement lors de l'affectation. Cette caractéristique simplifie l'écriture du code mais nécessite une attention particulière pour éviter les erreurs de type.

À savoir

L'indentation (espaces en début de ligne) est obligatoire en Python. Elle définit les blocs de code. Convention : 4 espaces par niveau d'indentation.

Types de données fondamentaux

TypeDescriptionExemple
intNombre entier42, -7, 0
floatNombre décimal3.14, -0.5, 2.0
strChaîne de caractères"Bonjour", 'STI2D'
boolBooléen (vrai/faux)True, False

2. Structures conditionnelles

Les structures conditionnelles permettent d'exécuter différentes portions de code selon qu'une condition est vraie ou fausse. C'est fondamental pour créer des programmes capables de prendre des décisions, comme un système qui active une alarme si la température dépasse un seuil.

# Structure if / elif / else
temperature = 28

if temperature > 30:
    print("Alerte : température élevée !")
    activer_ventilation = True
elif temperature > 25:
    print("Température confortable")
    activer_ventilation = False
else:
    print("Température fraîche")
    activer_chauffage = True

Opérateurs de comparaison

==

Égal à

!=

Différent de

>

Supérieur à

<

Inférieur à

>=

Supérieur ou égal

<=

Inférieur ou égal

Opérateurs logiques

Les opérateurs and, or etnot permettent de combiner plusieurs conditions :

# Conditions combinées
if temperature > 25 and humidite > 70:
    print("Risque de condensation")

if capteur_erreur or not capteur_connecte:
    print("Vérifier le capteur")

3. Boucles et itérations

Les boucles permettent de répéter un bloc de code plusieurs fois. C'est essentiel pour traiter des séries de mesures, parcourir des listes de capteurs, ou exécuter une action jusqu'à ce qu'une condition soit remplie.

Boucle for

La boucle for parcourt une séquence (liste, chaîne, range) un élément à la fois :

# Parcourir une liste de capteurs
capteurs = ["DHT22", "BMP280", "MQ-135"]

for capteur in capteurs:
    print(f"Lecture du capteur : {capteur}")

# Répéter 10 mesures
for i in range(10):
    print(f"Mesure n°{i+1}")

Boucle while

La boucle while répète tant qu'une condition est vraie. Attention aux boucles infinies !

# Attendre que la température descende
temperature = 35

while temperature > 25:
    print(f"Temp: {temperature}°C - Ventilation ON")
    temperature = temperature - 1 # Simulation refroidissement

print("Température normale atteinte")
Attention !

Une boucle while True: sans instruction break crée une boucle infinie. Prévoyez toujours une condition de sortie.

4. Fonctions

Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Les fonctions permettent de structurer le code, d'éviter les répétitions et de faciliter la maintenance. En STI2D, on crée des fonctions pour lire des capteurs, calculer des moyennes, ou contrôler des actionneurs.

# Définition d'une fonction
def convertir_celsius_fahrenheit(celsius):
    """Convertit une température de Celsius en Fahrenheit"""
    fahrenheit = celsius * 9/5 + 32
    return fahrenheit

# Utilisation de la fonction
temp_c = 25
temp_f = convertir_celsius_fahrenheit(temp_c)
print(f"{temp_c}°C = {temp_f}°F") # 25°C = 77.0°F

Fonction avec plusieurs paramètres

def calculer_moyenne(valeurs):
    """Calcule la moyenne d'une liste de valeurs"""
    if len(valeurs) == 0:
        return 0
    somme = sum(valeurs)
    return somme / len(valeurs)

# Exemple d'utilisation
mesures = [23.5, 24.1, 23.8, 24.3, 23.9]
moyenne = calculer_moyenne(mesures)
print(f"Moyenne : {moyenne:.2f}°C") # Moyenne : 23.92°C
Bonnes pratiques
  • • Nommez vos fonctions avec des verbes : calculer_, lire_, afficher_
  • • Ajoutez une docstring pour documenter ce que fait la fonction
  • • Une fonction = une tâche (principe de responsabilité unique)

5. Structures de données

Les structures de données permettent d'organiser et de stocker plusieurs valeurs. En STI2D, on les utilise pour gérer des séries de mesures, des configurations de capteurs, ou des historiques de données.

Listes

Une liste est une collection ordonnée et modifiable d'éléments :

# Création et manipulation de listes
temperatures = [22.5, 23.1, 21.8, 24.0]

# Accéder à un élément (index commence à 0)
premiere = temperatures[0] # 22.5
derniere = temperatures[-1] # 24.0

# Ajouter un élément
temperatures.append(23.5)

# Longueur de la liste
nb_mesures = len(temperatures) # 5

Dictionnaires

Un dictionnaire associe des clés à des valeurs, idéal pour stocker des configurations ou des données structurées :

# Dictionnaire de configuration capteur
capteur = {
    "nom": "DHT22",
    "type": "temperature_humidite",
    "pin": 4,
    "actif": True
}

# Accéder aux valeurs
print(capteur["nom"]) # DHT22

# Ajouter/modifier une valeur
capteur["derniere_lecture"] = 23.5

Exemple complet : Station météo

# Mini station météo en Python
def analyser_meteo(mesures):
    """Analyse une série de mesures météo"""
    temp_min = min(mesures)
    temp_max = max(mesures)
    temp_moy = sum(mesures) / len(mesures)
    
    return {
        "minimum": temp_min,
        "maximum": temp_max,
        "moyenne": round(temp_moy, 2)
    }

# Utilisation
donnees_jour = [18.5, 22.3, 25.1, 24.8, 20.2]
resultats = analyser_meteo(donnees_jour)
print(f"Min: {resultats['minimum']}°C")
print(f"Max: {resultats['maximum']}°C")
print(f"Moy: {resultats['moyenne']}°C")

À retenir

Python utilise l'indentation pour structurer le code

Variables : int, float, str, bool sont les types de base

if/elif/else pour les décisions conditionnelles

for/while pour répéter des instructions

Fonctions : def nom(params): return valeur

Listes et dictionnaires pour organiser les données

Scientia