← Retour au cours
▶ Aperçu gratuit · Leçon offerte

Leçon 2 — Programmation : C/C++, Python, Java, algorithmes, UML

⏱ 90 min · 🎬 Lecon · 🏆 15 XP
🎬
Vidéo en production
Notre équipe pédagogique tourne actuellement cette leçon avec un·e formateur·rice expert·e. Le contenu textuel ci-dessous est complet et utilisable dès maintenant.

Leçon 2 — Langages & Algorithmique

C/C++, Python, Java, structures de données, UML, Git.

Objectifs de la leçon

  • Maîtriser les bases de C/C++ pour systèmes embarqués
  • Écrire un programme Python (classes, fichiers, exceptions)
  • Comprendre Java POO (classes, héritage, interfaces)
  • Modéliser avec UML (Use Case, Classe, Séquence)
  • Utiliser Git (commit, branch, merge, pull request)

1. Langage C — bases et pointeurs

Le langage C (Dennis Ritchie, Bell Labs 1972) reste incontournable pour la programmation système et embarquée. Normalisé ISO C11 (2011) et C18 (2018).

1.1 Types de données fondamentaux

TypeTaille (32 bits)Usage
char1 octetCaractère ASCII
int4 octetsEntier signé
uint8_t / uint16_t / uint32_t1/2/4 octetsEmbarqué — taille fixe (stdint.h)
float4 octetsVirgule flottante IEEE 754
double8 octetsPrécision double

1.2 Pointeurs — concept clé

Un pointeur stocke l'adresse mémoire d'une variable. Indispensable pour l'accès aux registres de microcontrôleur.

Exemple pointeurs en C

uint32_t valeur = 42;
uint32_t *ptr = &valeur;  // ptr contient l'adresse de valeur
*ptr = 100;               // valeur vaut maintenant 100

// Accès registre GPIO STM32
#define GPIOA_ODR  (*((volatile uint32_t *)0x40020014))
GPIOA_ODR = 0xFF;         // Écriture directe registre

2. Langage C++ — POO

C++ (Bjarne Stroustrup, 1985) ajoute la Programmation Orientée Objet au C. Standard actuel : C++20 (ISO/IEC 14882:2020).

2.1 Classe, encapsulation, héritage

Exemple C++ — classe Capteur

class Capteur {
  private:
    float valeur;
    std::string nom;
  public:
    Capteur(std::string n) : nom(n), valeur(0.0) {}
    void setValeur(float v) { valeur = v; }
    float getValeur() const { return valeur; }
    virtual void afficher() {
        std::cout << nom << " : " << valeur << std::endl;
    }
};

class Thermometre : public Capteur {
  public:
    Thermometre(std::string n) : Capteur(n) {}
    void afficher() override { /* surcharge */ }
};

3. Python — scripting et automatisation

Python 3.12 (PSF — Python Software Foundation) est le langage le plus utilisé en 2024 (indice TIOBE #1). Applications BTS SN : scripting réseau (Paramiko, Netmiko), traitement données, IA/ML (Keras, PyTorch), automatisation (Ansible, Salt).

3.1 Structures de données

StructurePythonComplexité accès
Listelist []O(1) par index
Dictionnairedict {}O(1) moyen (hash)
Ensembleset {}O(1) moyen
Tupletuple ()O(1) — immuable
File FIFOcollections.dequeO(1) déqueue

3.2 Exemple script Python réseau (Netmiko)

from netmiko import ConnectHandler

switch = {
    'device_type': 'cisco_ios',
    'host': '192.168.1.1',
    'username': 'admin',
    'password': 'secret'
}
with ConnectHandler(**switch) as net_connect:
    output = net_connect.send_command('show ip interface brief')
    print(output)

4. Java — Programmation Orientée Objet

Java (James Gosling, Sun Microsystems, 1995) suit le principe Write Once Run Anywhere via la JVM. Version LTS actuelle : Java 21 (OpenJDK). Usage BTS SN : développement serveur, Android (Kotlin/Java), services web REST (Spring Boot).

4.1 Interface vs classe abstraite

  • Interface : contrat de méthodes sans implémentation (depuis Java 8 : méthodes default)
  • Classe abstraite : peut avoir des méthodes implémentées + des abstract
  • Héritage Java : une seule classe mère (pas d'héritage multiple), mais plusieurs interfaces

5. UML — Unified Modeling Language

UML 2.5.1 (OMG 2017) est le standard de modélisation logicielle. Les 3 diagrammes les plus utilisés en BTS SN :

5.1 Diagramme de cas d'utilisation (Use Case)

Représente les interactions acteurs ↔ système. Acteurs : rectangles (humains) ou icônes bonhomme. Cas d'utilisation : ellipses. Relations : include (obligatoire), extend (optionnel), généralisation.

5.2 Diagramme de classes

Représente la structure statique. Classes avec attributs + méthodes. Relations : association (1..n), composition (agrégation forte), héritage (flèche creuse), réalisation d'interface.

5.3 Diagramme de séquence

Représente les interactions temporelles entre objets. Lignes de vie verticales + messages horizontaux (synchrones/asynchrones). Utilisé pour documenter les API REST, les flux IoT.

6. Git — contrôle de version

Git (Linus Torvalds, 2005) est le système de contrôle de version distribué standard. Hébergeurs : GitHub, GitLab (auto-hébergeable), Bitbucket.

CommandeRôle
git init / git cloneInitialiser ou cloner un dépôt
git add / git commitIndexer et committer
git push / git pullEnvoyer/récupérer depuis remote
git branch / git checkoutCréer/changer de branche
git merge / git rebaseFusionner des branches
git log / git diffHistorique et différences
Convention Git pour projet BTS SN :
• Branche main = code stable livrable
• Branche dev = intégration
• Branches feature/xxx = développements en cours
• Messages de commit : format Conventional Commits (feat: add sensor reading)
• Pull Request obligatoire avant merge sur main (1 reviewer minimum)
Attention aux erreurs classiques de débutant :
• Ne jamais committer de tokens/mots de passe dans un repo (utiliser .env + .gitignore)
• Ne jamais faire git push --force sur main partagé (écrase l'historique d'équipe)
• Toujours git pull avant git push pour éviter les conflits

Synthèse

  • C : langage système/embarqué — pointeurs + stdint.h + accès registres
  • C++ C++20 : POO (classe, héritage, polymorphisme, templates)
  • Python 3.12 : scripting réseau, IA, automatisation (Netmiko, Paramiko)
  • Java 21 : JVM, interface, Spring Boot, Android
  • UML 2.5 : Use Case + Classes + Séquence
  • Git : init/add/commit/push/branch/merge
  • Convention : .gitignore + branches feature/dev/main

Pour aller plus loin

Continuez le parcours 🚀

Inscrivez-vous pour accéder aux 5 autres leçons + le quiz final.

Créer mon compte
🍪 Nous utilisons des cookies essentiels et, avec ton accord, des cookies analytiques. En savoir plus

⚙️ Préférences cookies

Choisis quels cookies tu acceptes — modifiable à tout moment.

🔐 Essentiels (obligatoires)Authentification, session, sécurité. Toujours actifs.
📊 Analytics anonymesMesure d'audience anonymisée — aucune donnée personnelle.
📣 MarketingPublicités ITAG pertinentes sur d'autres sites.
💬 Contactez-nous sur WhatsApp