Programmation et algorithmique
La programmation permet de donner des instructions précises à un microcontrôleur ou un ordinateur pour qu'il traite des données et pilote des actionneurs. En Première SI, on travaille principalement en Python, parfois sur cartes Arduino ou Raspberry Pi.
Objectifs
- Déclarer et manipuler des variables et des types de données
- Utiliser des structures conditionnelles (if / elif / else)
- Écrire des boucles (while, for) et des fonctions simples
Variables et types de données
Une variable est un espace mémoire nommé qui stocke une valeur. En Python, pas besoin de déclarer le type : il est déduit automatiquement. Principaux types : int (entier : age = 16), float (décimal : temperature = 22.5), bool (booléen : moteur_actif = True), str (chaîne de caractères : message = 'Bonjour'). On accède à la valeur par le nom de la variable. Bonne pratique : nommer la variable de façon explicite (vitesse_moteur et non vm) pour rendre le code lisible.
Structures conditionnelles — if / elif / else
Une structure conditionnelle exécute des instructions seulement si une condition est vraie. Syntaxe Python : if condition: (bloc indenté) elif autre_condition: (bloc) else: (bloc). Exemple : if temperature > 80: activer_ventilateur() elif temperature > 60: allumer_led_orange() else: tout_est_ok(). Les opérateurs de comparaison sont : == (égal), != (différent), <, >, <=, >=. Les opérateurs logiques : and, or, not. L'indentation (4 espaces) est obligatoire en Python.
Boucles — while et for
La boucle while répète un bloc tant qu'une condition est vraie : while capteur_actif: lire_valeur(). Attention à la condition d'arrêt pour éviter les boucles infinies. La boucle for itère sur une séquence : for i in range(10): print(i) affiche 0 à 9. Sur microcontrôleur (Arduino/MicroPython), la boucle principale est souvent infinie : while True: lire_capteurs(); traiter(); piloter_actionneurs(). La fonction range(debut, fin, pas) génère une séquence d'entiers.
Fonctions et algorithme sur microcontrôleur
Une fonction regroupe des instructions réutilisables. Syntaxe : def nom_fonction(parametre): (bloc) return valeur. Exemple : def convertir_celsius_fahrenheit(c): return c * 9/5 + 32. Sur microcontrôleur, on distingue : les entrées numériques (bouton, capteur TOR), les entrées analogiques (capteur analogique lu par convertisseur ADC), les sorties numériques (LED, relais), les sorties PWM (moteur, servo). Un programme embarqué suit souvent le schéma : initialiser → boucle infinie → lire → décider → agir.
Relations et formules clés
if condition: bloc1 elif condition2: bloc2 else: bloc3Permet de tester plusieurs cas. Python utilise l'indentation pour délimiter les blocs, sans accolades ni parenthèses autour de la condition.
for i in range(debut, fin, pas): blocItère de 'debut' jusqu'à 'fin-1' par 'pas'. range(0, 10, 2) donne 0,2,4,6,8. Sans 'pas', il vaut 1 par défaut.
def ma_fonction(param): ... return resultat | valeur = ma_fonction(argument)def déclare la fonction, return renvoie le résultat. Appeler la fonction avec un argument concret remplace le paramètre formel lors de l'exécution.
Exercice d'application
Question : Écris un algorithme Python qui lit une température (variable temp) et : allume une LED rouge si temp > 80, allume une LED orange si temp est entre 60 et 80, éteint tout si temp < 60. Puis encapsule cela dans une fonction.
Voir la solution
Réponse : def gerer_temperature(temp): if temp > 80: led_rouge = True led_orange = False print('Surchauffe : LED rouge allumée') elif temp >= 60: led_rouge = False led_orange = True print('Attention : LED orange allumée') else: led_rouge = False led_orange = False print('Température normale : tout éteint') return led_rouge, led_orange # Exemple d'appel : r, o = gerer_temperature(75) # Affiche 'Attention : LED orange allumée'
