ALGORITHMIQUE ET PROGRAMMATION
Niveau : Seconde TI — TECHNOLOGIES DE L'INFORMATION
Curriculum Officiel – Approche par Compétences (APC) – MINEDUB / MINESEC Cameroun.
PRÉLIMINAIRES
I. Le Code, Levier de Souveraineté Numérique
L’algorithmique et la programmation constituent le langage de la création technologique. Maîtriser ce langage, c’est acquérir le pouvoir de construire des solutions autonomes pour les défis économiques, logistiques et sociaux du Cameroun. Il s’agit de passer du statut de simple consommateur de technologies importées à celui d’architecte de notre propre écosystème numérique.
L’ambition première de ce manuel est de dédramatiser la programmation en la présentant comme un outil de puissance et d’indépendance. En ancrant chaque concept dans une réalité locale, l’enseignant démontre que le code est une réponse directe aux besoins de nos communautés. L’élève intègre ainsi la dimension stratégique de la compétence informatique pour le développement national.
II. Forger l’Esprit Logique du Technicien
La programmation est avant tout une discipline de la rigueur. Elle impose une pensée structurée, séquentielle et sans ambiguïté. Chaque ligne de code est une instruction précise qui doit s’insérer dans une logique globale, à l’image de l’ingénieur qui assemble les pièces d’un moteur. Cette matière façonne l’esprit à décomposer les problèmes complexes en une série d’opérations simples et ordonnées.
L’approche pédagogique privilégie la construction progressive de la pensée algorithmique. Avant même d’écrire une ligne de code, l’accent est mis sur la formalisation de la solution sur papier. Cette phase pré-numérique est cruciale. La compétence fondamentale qui en découle est la capacité à élaborer un raisonnement logique et formel avant toute implémentation technique.
III. Du Marché de Garoua à la “Silicon Mountain” : Un Savoir Ancré
Les exemples et les projets de ce manuel sont exclusivement issus du quotidien camerounais. La gestion des stocks d’un “bayam-sellam” au marché de Mfoundi, l’optimisation d’une tournée de livraison de cacao dans le Moungo, ou le développement d’une application pour un GIC de Kribi sont les terrains de jeu. Cette contextualisation rend les concepts abstraits immédiatement tangibles et utiles.
Chaque étude de cas est puisée dans l’une des dix régions pour garantir une représentativité culturelle et économique. L’enseignant est invité à adapter les scénarios à la réalité immédiate de sa localité. L’élève s’approprie ainsi la capacité à contextualiser une solution technique et à identifier les opportunités d’informatisation dans son propre environnement.
Chapitre I. L’Inventaire Numérique : Variables et Données
I.1. Le Casse-tête du Commerçant de Bafoussam
Un grossiste au marché A de Bafoussam gère des sacs de pommes de terre, des cageots de tomates et des régimes de plantains. Il doit connaître à tout instant la quantité exacte de chaque produit, son prix unitaire et le nom de ses principaux clients. Sans un système fiable, les erreurs de comptage et les pertes financières sont inévitables.
En partant de cette situation concrète, l’objectif est de faire émerger chez l’élève le besoin de “boîtes” pour stocker des informations de natures différentes : un nombre entier pour les sacs, un nombre à virgule pour le prix, et du texte pour un nom. Cette introduction ancre la nécessité de classifier l’information avant de la traiter.
I.2. L’Anatomie d’une Information : Types et Variables
En algorithmique, une “variable” est un espace de stockage nommé qui contient une donnée. Le “type” de la variable précise la nature de cette donnée : un entier (int) pour un nombre sans virgule, un réel (float) pour un prix, une chaîne de caractères (string) pour un nom. Déclarer une variable, c’est créer et nommer cet espace mémoire.
Le point de focalisation théorique est la distinction absolue entre le contenant (la variable) et le contenu (la valeur). L’enseignant insistera sur la rigueur de la déclaration en utilisant des analogies physiques (casiers, étiquettes). Le savoir exact retenu est la définition et la syntaxe de déclaration des types de données fondamentaux.
I.3. L’Épreuve de l’Atelier : Premier Code en Langage C
La traduction de la logique en instructions pour la machine obéit à une grammaire stricte. Pour stocker 150 sacs de pommes de terre, le code est int nombre_sacs_pdt = 150;. Pour le prix de 2500.75 FCFA le cageot, c’est float prix_cageot_tomate = 2500.75;. Chaque instruction se termine par un point-virgule, signalant la fin d’un ordre.
Cette phase de manipulation directe vise à confronter l’élève à la précision syntaxique du langage. L’enseignant guidera la compilation du premier programme, en mettant en lumière les erreurs courantes (oubli du point-virgule, faute de frappe). L’élève consolide ici sa maîtrise de la syntaxe de base pour l’assignation de valeurs aux variables.
I.4. Le Verdict du Compilateur : Le Bilan de Journée
Le défi consiste maintenant à écrire un programme complet qui : 1. initialise les stocks du matin, 2. demande à l’utilisateur le nombre de sacs vendus, 3. calcule le stock restant et le chiffre d’affaires réalisé, 4. affiche un bilan clair à l’écran. Ce programme combine la déclaration, l’affectation et l’affichage des variables.
La résolution de ce problème intégré permet de valider la compréhension de tout le chapitre. L’enseignant évalue la capacité de l’élève à structurer un petit programme fonctionnel qui résout le problème initial du commerçant. La compétence finale forgée est la modélisation d’un état de stock simple par l’utilisation de variables typées.
Chapitre II. Les Aiguillages du Code : Logique Conditionnelle
II.1. Le Dilemme du Guichet Automatique de Douala
À un guichet automatique du quartier Akwa à Douala, un client demande un retrait de 50 000 FCFA. La machine doit prendre une décision : si le solde du compte est supérieur ou égal à 50 000 FCFA, elle délivre les billets. Sinon, elle affiche un message “Solde insuffisant”. L’opération entière dépend de la validation d’une seule condition.
Ce scénario familier sert de point d’ancrage pour introduire la notion de choix binaire dans un programme. L’axe pédagogique repose sur la formalisation de la règle “SI… ALORS… SINON…” comme structure fondamentale de toute prise de décision. L’élève s’approprie ainsi l’identification des conditions qui régissent une action.
II.2. La Grammaire de la Décision : if, else, else if
La structure if permet d’exécuter un bloc d’instructions seulement si une condition est vraie. Le else complémentaire exécute un autre bloc si cette même condition est fausse. Pour des choix multiples, comme les tranches de frais de retrait (frais A pour < 10000, frais B pour < 50000, etc.), la structure else if permet d’enchaîner les conditions.
La démarche consiste à présenter ces mots-clés non comme des commandes abstraites, mais comme les outils de traduction d’une logique de décision humaine. L’enseignant utilisera des ordinogrammes pour visualiser ces “chemins” alternatifs dans le flux du programme. Cette étape scelle la maîtrise de la syntaxe des structures conditionnelles.
II.3. L’Atelier de Simulation : Coder le Comportement du Guichet
Le passage à la pratique consiste à écrire le programme C qui simule le guichet. Le programme initialise une variable solde, demande le montant_retrait à l’utilisateur, puis utilise une structure if (solde >= montant_retrait) pour afficher le message approprié.
En exploitant cette simulation, l’objectif est de rendre l’élève capable de tester des conditions logiques (>, <, ==, !=). L’enseignant encouragera les tests avec différentes valeurs de solde et de retrait pour observer le comportement du programme. Le savoir-faire retenu est l’implémentation fonctionnelle d’une condition if-else.
II.4. Le Calculateur de Prime de Rendement à la CDC
Le défi final est de créer un programme pour la Cameroon Development Corporation (CDC) qui calcule la prime d’un ouvrier. La prime est de 5% du salaire si la production de bananes dépasse 1 tonne, 10% si elle dépasse 2 tonnes, et 0% sinon. De plus, une prime fixe de 10 000 FCFA est ajoutée si l’ouvrier a plus de 5 ans d’ancienneté.
Cette phase permet de consolider l’imbrication des conditions. L’enseignant évaluera la capacité de l’élève à combiner plusieurs if et else if avec des opérateurs logiques (&& pour ET, || pour OU). La compétence intégrée est la construction d’un algorithme de décision à critères multiples.
Chapitre III. La Puissance de la Répétition : Les Boucles
III.1. Le Recensement des Arbres à Ebolowa
Un agent des Eaux et Forêts doit inventorier une parcelle de 300 hévéas près d’Ebolowa. Pour chaque arbre, il doit noter son numéro et mesurer sa circonférence. Répéter manuellement l’instruction “Noter mesure pour arbre N°X” 300 fois dans un programme serait absurde et inefficace. Il faut un mécanisme pour automatiser cette tâche répétitive.
L’absurdité de la répétition manuelle est le levier pédagogique pour introduire le concept de boucle. L’enseignant amène l’élève à formuler lui-même le besoin : “Comment dire à la machine de répéter une action un certain nombre de fois ?”. L’élève identifie ainsi la boucle comme une solution d’optimisation radicale.
III.2. Les Moteurs de la Répétition : for et while
Il existe deux types principaux de boucles. La boucle for est idéale quand on connaît à l’avance le nombre exact de répétitions (ex: pour les 300 arbres). Elle utilise un compteur qui s’incrémente à chaque tour. La boucle while répète une action tant que une condition reste vraie (ex: continuer à puiser de l’eau tant que le seau n’est pas plein).
La distinction entre boucle à nombre d’itérations connu (for) et boucle conditionnelle (while) est le cœur de cette leçon. L’enseignant utilisera des analogies claires : for c’est faire 10 tours de stade, while c’est courir jusqu’à être fatigué. Le savoir acquis est la capacité à choisir la structure de boucle la plus adaptée à un problème donné.
III.3. Le Script de l’Inventaire Forestier
En pratique, la boucle for (int i = 1; i <= 300; i++) exécute le bloc d’instructions 300 fois. À l’intérieur, le programme affiche “Entrez la circonférence pour l’arbre N°” suivi de la valeur de i, et lit la donnée entrée par l’agent. La variable i sert de compteur automatique.
Par cette mise en pratique, l’objectif est de familiariser l’élève avec la syntaxe complète de la boucle for : initialisation, condition d’arrêt et incrémentation. L’enseignant doit s’assurer que le rôle du compteur est parfaitement compris. L’élève s’approprie ainsi la réalisation autonome d’une itération contrôlée.
III.4. L’Analyse des Données Météo de Garoua
Le défi est d’écrire un programme qui demande à un technicien de la station météo de Garoua de saisir les températures maximales de chaque jour du mois de mars (31 jours). Le programme doit ensuite calculer et afficher la température moyenne, la température la plus élevée et la plus basse enregistrée durant le mois.
Ce problème de synthèse force l’utilisation d’une boucle for pour la saisie des 31 valeurs, et l’utilisation de variables et de conditions if à l’intérieur de la boucle pour déterminer le min/max. L’enseignant vérifie la capacité à intégrer les concepts des chapitres précédents. La compétence finale développée ici est l’automatisation d’une collecte et d’une analyse de données simples.
Chapitre IV. L’Art de l’Organisation : Fonctions et Procédures
IV.1. La Recette Complexe du Ndolé
La préparation du Ndolé est un processus avec des étapes bien distinctes : laver les feuilles, faire bouillir les arachides, frire les oignons et la viande, puis tout mélanger. Écrire le programme de cette recette en un seul bloc de code le rendrait long, confus et difficile à corriger si une seule étape est erronée.
Le point de départ est l’analogie avec une recette de cuisine ou un plan de montage. L’enseignant guide les élèves pour qu’ils identifient eux-mêmes les “sous-tâches” logiques et autonomes. Cette étape scelle la maîtrise de la décomposition d’un problème complexe en modules fonctionnels.
IV.2. Les Briques Logicielles : Définir une Fonction
Une fonction est un bloc de code nommé qui accomplit une tâche spécifique. On peut l’appeler à tout moment depuis une autre partie du programme. Par exemple, on peut créer une fonction calculerTVA(float prixHT) qui prend un prix hors-taxe en entrée, calcule la TVA à 19.25%, et retourne le prix TTC. Cela évite de réécrire le même calcul partout.
L’axe pédagogique est de présenter les fonctions comme des “boîtes noires” spécialisées. On leur donne des ingrédients (les paramètres), elles font leur travail et rendent un résultat (la valeur de retour). L’enseignant insistera sur la différence entre une fonction qui retourne une valeur et une procédure qui ne fait qu’agir. Le savoir-faire acquis est la déclaration correcte d’une fonction avec ses paramètres et son type de retour.
IV.3. L’Atelier de Cuisine Numérique : Coder les Étapes du Ndolé
La pratique consiste à créer plusieurs fonctions (procédures dans ce cas, car elles ne retournent rien) : void laverFeuilles(), void preparerArachides(), void cuireViande(). Chacune contient les instructions printf décrivant l’action. Le programme principal (main) devient alors très simple et lisible.
Cette phase de manipulation directe vise à démontrer le gain en clarté et en organisation. L’enseignant fera modifier une seule fonction (ex: changer la cuisson de la viande) pour montrer que le reste du programme est intact. L’élève consolide sa capacité à encapsuler une logique dans une fonction et à l’appeler depuis le programme principal.
IV.4. Le Terminal de Paiement Mobile Money
Le défi final est de créer un programme simulant un paiement MTN MoMo ou Orange Money. Le programme principal demande le type d’opération (dépôt, retrait, transfert). Il appelle ensuite une fonction dédiée : effectuerDepot(), effectuerRetrait() ou effectuerTransfert(). La fonction effectuerTransfert() doit elle-même appeler une autre fonction verifierSolde(float montant) avant de valider l’opération.
La résolution de ce problème valide la compréhension de l’architecture modulaire. L’enseignant évalue la capacité de l’élève à hiérarchiser les appels de fonction et à faire communiquer les fonctions entre elles via des paramètres. La compétence finale forgée est la conception d’un programme structuré en fonctions interdépendantes.
ANNEXES
A. Lexique du Technicien-Programmeur
Algorithme, Variable, Type (Entier, Réel, Caractère, Booléen), Opérateur (Arithmétique, Logique), Condition, Boucle (For, While), Fonction, Procédure, Compilateur, Débogage, Syntaxe, Sémantique.
B. Mémento Syntaxique du Langage C
Tableau récapitulatif de la syntaxe pour : la structure d’un programme (main), la déclaration de variables, les fonctions d’entrée/sortie (printf, scanf), les structures conditionnelles (if-else) et les boucles (for, while).
Discussion (0)
Aucune intervention pour le moment. Soyez le premier à contribuer.
Votre intervention Annuler la réponse