Pensée informatique et résolution de problèmes
DébutantUnité 1 sur 7 de la formation Formation : Informatique : données, algorithmes, Internet et IA
Ce que tu vas apprendre
- Décris ce qu’étudie l’informatique, en quoi elle ne se limite pas à la programmation et comment la pensée informatique transforme un problème en une solution qu’une personne ou un ordinateur peut exécuter.
- Décris ce qu’étudie l’informatiqueExplique que l’informatique étudie le calcul et l’information, nomme ses principaux domaines et décris tout calcul comme la transformation d’une entrée en sortie.
- Décris la pensée informatique et ses quatre techniquesDéfinis la pensée informatique, nomme la décomposition, la reconnaissance de motifs, l’abstraction et la conception d’algorithmes, puis utilise-les ensemble dans un processus de résolution de problèmes.
- Décris ce qu’étudie l’informatique
- Utilise la décomposition, la reconnaissance de motifs et l’abstraction pour transformer un problème vaste et flou en petites parties générales faciles à résoudre.
- Décompose un problème en parties faciles à traiterDécompose un problème en sous-problèmes, organise-les en hiérarchie et détermine à quel moment une partie est assez petite pour être résolue directement.
- Repère des motifs et généralise des solutionsTrouve des ressemblances au sein d’un problème et entre plusieurs problèmes, réutilise les solutions des parties qui se répètent et généralise un motif pour qu’une solution couvre de nombreux cas.
- Utilise l’abstraction pour te concentrer sur l’essentielConserve les détails nécessaires à un objectif, masque les autres et utilise des modèles et des procédures nommées comme abstractions aux entrées et sorties clairement définies.
- Décompose un problème en parties faciles à traiter
- Décris ce qui rend un algorithme correct et utile, puis écris des algorithmes en pseudo-code avec des variables, des entrées et des sorties, des conditions et des boucles.
- Explique ce qu’est un algorithme et ce qui fait sa qualitéDéfinis un algorithme, vérifie la précision et l’exhaustivité des instructions et compare différents algorithmes pour un même problème selon leur correction et leur nombre d’étapes.
- Stocke et modifie des données à l’aide de variables, d’entrées et de sortiesÉcris du pseudo-code qui lit des entrées, stocke et met à jour des valeurs dans des variables, effectue des calculs à l’aide d’opérateurs et produit des sorties.
- Prends des décisions à l’aide de structures conditionnellesÉcris des conditions avec des opérateurs de comparaison et des opérateurs logiques, puis utilise IF, ELSE et ELSE IF pour qu’un algorithme emprunte le bon chemin pour chaque entrée.
- Répète des étapes à l’aide de bouclesUtilise des boucles bornées et des boucles conditionnelles, tiens des totaux cumulés et des comptes, et évite les boucles infinies et les erreurs de décalage d’une unité.
- Explique ce qu’est un algorithme et ce qui fait sa qualité
- Dessine et lis des organigrammes, convertis des organigrammes en pseudo-code et inversement, puis vérifie des algorithmes en suivant leur exécution et en les testant avec des données bien choisies.
- Lis et dessine des organigrammesUtilise les symboles et les lignes de liaison standard des organigrammes pour représenter les étapes d’un algorithme et lire le chemin qu’il suit.
- Représente des décisions et des boucles dans des organigrammes et en pseudo-codeDessine des structures conditionnelles et des itérations dans des organigrammes et traduis un algorithme dans les deux sens entre organigramme et pseudo-code.
- Suis l’exécution d’un algorithme, teste-le et débogue-leVérifie un algorithme à la main avec un tableau de suivi d’exécution, choisis des données de test normales, aux limites et invalides, puis trouve et corrige les trois types d’erreurs.
- Lis et dessine des organigrammes
- Utilise un environnement de programmation par blocs comme Scratch pour créer des programmes avec des séquences, des boucles, des conditions, des variables, des événements et des blocs personnalisés, et relie-les au pseudo-code et au code textuel.
- Repère-toi dans un environnement de programmation par blocsExplique le fonctionnement de la programmation par blocs, nomme les éléments d’un projet Scratch et utilise les formes et catégories de blocs pour créer un script.
- Crée des programmes par blocs avec des boucles, des conditions et des variablesUtilise les blocs répéter, répéter indéfiniment, si-sinon et répéter jusqu’à ce que, les variables et le bloc demander pour créer des programmes interactifs, puis lis-les comme des algorithmes.
- Utilise des événements et des blocs personnalisés, puis passe à la programmation textuelleDémarre des scripts avec des événements, coordonne des lutins avec des messages, définis des blocs personnalisés avec des entrées et transpose les mêmes idées aux langages textuels.
- Repère-toi dans un environnement de programmation par blocs
Pensée informatique : cours
1Les questions de l’informatique et la manière d’aborder un problème
L’informatique commence par des questions sur l’information et les processus utilisés pour la traiter. Décrire une tâche par ses entrées et ses sorties permet de clarifier l’objectif avant d’écrire du code. La pensée informatique fournit ensuite des moyens d’organiser le travail, de repérer des structures réutilisables, de sélectionner les détails importants et de construire une solution vérifiable. Ces méthodes sont utiles pour la planification quotidienne comme pour les programmes.
1.1 Calcul, information et problèmes qu’ils permettent de résoudre
Un ordinateur peut calculer un itinéraire, jouer un son ou organiser une liste de noms. L’informatique étudie les processus derrière ces tâches : comment l’information est représentée et traitée, quels problèmes peuvent être résolus et comment construire des systèmes qui mettent en œuvre les solutions.
Décrire un calcul
Un modèle de départ utile est entrée → traitement → sortie. Un calculateur d’itinéraire reçoit un point de départ et une destination. Il effectue une recherche dans les informations sur les routes, puis renvoie un itinéraire, une distance en kilomètres et une durée de trajet. Les informations routières sont aussi des données nécessaires au traitement. Le résultat visible ne constitue qu’une partie du calcul.
Énonce un problème informatique avant de choisir sa méthode. Par exemple : « Entrée : une liste de noms. Sortie : les mêmes noms par ordre alphabétique. » Cet énoncé précise à quoi doit ressembler un résultat correct. Il laisse la place à différentes méthodes pour le produire. Si la sortie omet un nom, elle ne résout pas le problème, même si les noms restants sont classés.
Au-delà de l’écriture de code
La programmation consiste à écrire des instructions dans un langage qu’un ordinateur peut exécuter. C’est une activité importante de l’informatique. Ce domaine plus vaste cherche aussi à savoir si une solution existe, quelle quantité de travail elle demande et comment les personnes peuvent l’utiliser facilement et en toute sécurité.
| Domaine | Une question étudiée |
|---|---|
| Algorithmes et théorie | Quelles étapes résolvent un problème et que peut-on calculer ? |
| Langages de programmation | Comment exprimer clairement des instructions ? |
| Systèmes informatiques | Comment le matériel, les systèmes d’exploitation et les réseaux permettent-ils d’effectuer des calculs ? |
| Données et bases de données | Comment stocker, organiser et retrouver l’information ? |
| Intelligence artificielle et apprentissage automatique | Comment des systèmes peuvent-ils effectuer des tâches comme la reconnaissance de motifs ? |
| Interaction humain-machine | Comment les personnes peuvent-elles comprendre et utiliser un système ? |
| Sécurité | Comment protéger les données et les systèmes ? |
| Infographie | Comment créer et afficher des images ? |
| Génie logiciel | Comment des équipes peuvent-elles construire et maintenir des programmes fiables ? |
Les frontières entre ces domaines se recoupent. La conception d’un éditeur d’images peut faire intervenir à la fois l’infographie, l’interaction avec l’utilisateur et le génie logiciel. L’informatique contribue aussi à d’autres disciplines : les biologistes comparent des séquences d’ADN, les climatologues modélisent l’atmosphère et les artistes utilisent des logiciels pour créer des images et de la musique.
Disciplines voisines et limites pratiques
L’ingénierie informatique se concentre sur les dispositifs physiques comme les processeurs et les cartes électroniques. Les technologies de l’information se concentrent sur le choix, l’installation et l’exploitation des systèmes d’une organisation. La science des données associe les statistiques et l’informatique pour tirer des conclusions à partir de données. Ces disciplines partagent des méthodes avec l’informatique tout en mettant l’accent sur des activités différentes.
Les ordinateurs exécutent rapidement des instructions précises, souvent à raison de milliards d’opérations simples par seconde. La vitesse ne corrige pas une instruction imprécise. « Ajoute du sel » ne précise pas la quantité ; un processus destiné à une exécution automatique nécessite une action précise.
Il existe aussi des limites qui ne tiennent pas à la vitesse. Certains problèmes énoncés avec précision n’ont pas de solution algorithmique. D’autres ont des solutions qui demandent trop d’étapes pour être réalisables en pratique. Se demander ce qu’un ordinateur peut accomplir fait partie de l’informatique elle-même.
Points clés
- L’informatique étudie le calcul, l’information et les systèmes qui la traitent.
- L’énoncé d’un problème définit les entrées valides et les sorties attendues avant le choix d’une méthode.
- La programmation exprime des instructions ; l’informatique étudie aussi la correction, la facilité d’utilisation, la sécurité et les limites du calcul.
- L’entrée, le traitement et la sortie décrivent les rôles des données et des étapes dans un calcul.
1.2 Transforme un problème en un plan vérifiable
La pensée informatique rend un problème assez clair pour qu’il puisse être résolu étape par étape. Une personne peut exécuter la solution, un ordinateur peut le faire ou les deux peuvent se partager le travail. Cette réflexion consiste notamment à déterminer le sens du problème et la manière de vérifier un résultat.
Quatre techniques qui fonctionnent ensemble
La décomposition divise un problème en parties plus petites. La reconnaissance de motifs trouve des ressemblances ou des tâches répétées. L’abstraction conserve les détails nécessaires à un objectif et écarte les autres. La conception d’algorithmes transforme une solution en étapes précises et ordonnées.
Ces techniques sont des outils auxquels tu peux revenir selon tes besoins. Ce ne sont pas quatre cases à remplir dans un ordre imposé. Un test échoué peut révéler un sous-problème manquant. Un sous-problème répété peut suggérer une procédure réutilisable. Un modèle peut avoir besoin d’un détail supplémentaire avant que l’algorithme fonctionne.
Jeannette Wing a contribué à faire largement connaître le terme « pensée informatique » dans un essai de 2006. Son message central était que cette approche est utile à tous, au-delà des personnes qui travaillent comme programmeurs.
Comprendre, planifier, exécuter et vérifier
Le mathématicien George Pólya a décrit quatre étapes de résolution de problèmes en 1945. En informatique, elles conduisent à des actions concrètes :
- Comprendre le problème. Identifie les entrées, les sorties, les contraintes et les critères de réussite.
- Établir un plan. Choisis des tâches plus petites, des motifs utiles et un algorithme.
- Exécuter le plan. Exprime-le et exécute-le à l’aide de pseudo-code, d’un organigramme ou d’un programme.
- Revenir sur le résultat. Compare le résultat aux critères de réussite et révise la solution si nécessaire.
Une contrainte est une règle que la solution doit respecter, comme un temps maximal disponible. Un critère de réussite est un moyen de juger le résultat. « Produire une liste de courses regroupée avec les quantités nécessaires » peut être vérifié. « Améliorer les courses » laisse le résultat flou.
Étudier un plan de repas
Supposons que tu doives prévoir les repas du soir pour une semaine. Les entrées comprennent les recettes, le nombre de personnes et les aliments déjà disponibles. La sortie est un plan et une liste de courses. Les besoins alimentaires et le temps disponible pour cuisiner sont des contraintes.
Décompose le travail en trois tâches : choisir les repas, faire la liste et cuisiner. La reconnaissance de motifs montre que plusieurs recettes utilisent du riz et des oignons. L’abstraction représente un ingrédient par son nom et sa quantité, comme « riz, 1 kg », sans conserver la marque lorsque celle-ci n’a pas d’incidence sur le plan.
L’algorithme des courses peut maintenant être ordonné : choisir les repas, lister leurs ingrédients, regrouper les ingrédients répétés, soustraire ce qui se trouve déjà dans les placards et acheter ce qui reste. Regrouper les quantités avant de vérifier les placards évite de soustraire le même stock séparément pour chaque recette.
Vérifie le résultat par rapport aux repas. Chaque ingrédient nécessaire doit être disponible en quantité suffisante. S’il manque un ingrédient, suis la construction de la liste et révise l’étape concernée.
Une erreur courante consiste à commencer à coder avant de déterminer le résultat recherché. Un programme rapide peut résoudre fidèlement le mauvais problème. Ce sont toujours les personnes qui choisissent le modèle, les contraintes et les étapes ; l’ordinateur exécute les instructions qui expriment ces choix.
Points clés
- La pensée informatique rend les solutions assez précises pour être exécutées par des personnes ou des ordinateurs.
- La décomposition, la reconnaissance de motifs, l’abstraction et la conception d’algorithmes peuvent être utilisées dans tout ordre utile.
- Note les entrées, les sorties, les contraintes et les critères de réussite avant d’implémenter une solution.
- Utilise les tests pour guider les modifications du plan, du modèle ou des étapes.
- Cette approche s’applique à la planification quotidienne comme aux logiciels.
2Décompose les problèmes en parties utiles et réutilisables
Une tâche compliquée devient plus facile à résoudre lorsque ses parties, ses structures répétées et ses détails essentiels sont visibles. La décomposition donne un rôle à chaque partie, la reconnaissance de motifs révèle les méthodes que tu peux réutiliser et l’abstraction te permet de travailler avec un modèle simplifié. Les exemples montrent comment choisir ces limites et vérifier que le plan simplifié contient toujours tout ce qui est nécessaire pour accomplir la tâche initiale.
2.1 Divise le travail en parties qui s’assemblent
Il peut être difficile de garder à l’esprit un grand problème dans son ensemble. La décomposition le remplace par des sous-problèmes plus petits que tu peux comprendre, résoudre et vérifier séparément. Les parties doivent néanmoins pouvoir être combinées en une solution au problème initial.
Partir de l’ensemble pour aller vers les détails
Commence par la tâche principale. Divise-la en quelques responsabilités bien définies, puis affine chacune d’elles. C’est la décomposition descendante. Un arbre de décomposition place le problème entier en haut et les tâches plus petites en dessous. Les branches indiquent à quelle tâche appartient une tâche plus petite.
Pour une application de quiz, les parties principales sont le stockage des questions et des réponses, la présentation des questions, la vérification des réponses, puis la tenue et l’affichage du score. La partie « poser une question » peut être divisée en trois : afficher le texte de la question, afficher les choix de réponse et lire le choix de l’apprenant.
Un diagramme de structure textuel pourrait ressembler à ceci :
Run a quiz
Store questions and answers
Ask a question
Show question text
Show answer options
Read the choice
Check the answer
Keep and show the score
Ces branches décrivent des responsabilités. Leur seule position verticale ne donne pas l’ordre complet d’exécution. Par exemple, l’application répète les questions et les vérifications tant qu’il reste des questions. Un algorithme distinct décrit ce déroulement.
Décider quand arrêter la décomposition
Une partie est assez petite lorsque tu vois comment la résoudre directement ou lorsqu’une méthode ou un outil existant la prend en charge. « Lire le choix » peut être une tâche exploitable une fois que tu sais comment l’interface recueille la saisie. La diviser en mouvements de main individuels ajouterait des détails qui n’aident pas à concevoir l’application.
Effectue d’abord la décomposition principale. Si tu commences par décrire de minuscules actions, tu risques de passer du temps sur un écran tout en oubliant une responsabilité entière, comme décider quand le quiz se termine.
Identifier les dépendances
Une dépendance signifie qu’une tâche a besoin du résultat d’une autre. Le quiz doit obtenir un choix avant de le vérifier, puis le vérifier avant de mettre à jour le score. Note ce que chaque partie reçoit et produit. Cela clarifie les échanges entre elles.
Les parties doivent être aussi indépendantes que possible. Si l’affichage passe de quatre boutons de réponse à une autre méthode de saisie, le calcul du score doit toujours fonctionner avec le résultat vérifié. Des limites claires permettent à plusieurs personnes de construire des parties séparées en même temps et facilitent les modifications ultérieures.
L’indépendance ne signifie pas que les parties n’échangent jamais d’informations. Elles ont besoin d’entrées et de sorties convenues. Une partie chargée du score qui attend TRUE ou FALSE ne peut pas utiliser directement le texte brut d’une partie qui affiche une question sans une étape de vérification de la réponse.
Chercher les lacunes et les chevauchements
Relis le problème initial et demande-toi si l’exécution de toutes les parties permettrait de terminer le travail entier. Le premier arbre ne montre pas quand le quiz s’arrête. Ajoute cette responsabilité au contrôle général du quiz. Demande-toi aussi si deux parties modifient toutes deux le score, ce qui pourrait compter deux fois une bonne réponse.
Vérifie chaque petite partie séparément, puis vérifie le processus assemblé. Un affichage de question correct et un vérificateur de réponse correct peuvent quand même échouer ensemble si l’un envoie un choix dans un format différent de celui attendu par l’autre.
Points clés
- La décomposition sépare un problème entier en responsabilités plus petites.
- Affine les parties principales avant de décrire leurs actions les plus petites.
- Arrête lorsqu’une partie peut être résolue directement ou prise en charge par une solution existante.
- Les dépendances déterminent quels résultats doivent être disponibles avant le début d’une autre tâche.
- Vérifie que les parties assemblées ne laissent aucune lacune et n’effectuent aucune tâche deux fois.
- Des entrées et des sorties claires facilitent la construction et l’assemblage de parties distinctes.
2.2 Trouve le motif et rends-le réutilisable
Un travail répété cache souvent une méthode réutilisable. La reconnaissance de motifs consiste à rechercher des ressemblances, des répétitions ou des tendances au sein d’un problème et entre différents problèmes. La question utile est de savoir ce qui reste identique et ce qui change.
Trouver une répétition dans une tâche
Pour dessiner un carré, un stylo en mouvement peut avancer de 100 pas et tourner à droite de 90 degrés, quatre fois. Cette paire d’actions se répète. Une boucle exprime cette paire une seule fois et indique le nombre de répétitions :
REPEAT 4 TIMES
Move forward 100 steps
Turn right 90 degrees
Ce motif rend la structure plus facile à voir. Il facilite aussi les modifications : changer la distance parcourue en un seul endroit modifie tous les côtés.
Remplacer les détails changeants par des paramètres
La généralisation permet à une solution de fonctionner pour une famille de cas. Un paramètre est une entrée nommée qui représente un détail susceptible de changer. Pour les polygones réguliers, le nombre et la longueur des côtés peuvent être des paramètres.
Un stylo qui parcourt le contour d’un polygone régulier effectue un tour complet. La rotation à chaque sommet est :
Ici, est le nombre de côtés. Répète la paire d’actions avancer et tourner fois, en gardant la même longueur de côté et la même rotation à chaque fois.
| Polygone régulier | Côtés | Rotation à chaque sommet |
|---|---|---|
| Triangle | 3 | 120° |
| Carré | 4 | 90° |
| Pentagone | 5 | 72° |
| Hexagone | 6 | 60° |
La rotation est le changement de direction du stylo, pas l’angle intérieur du polygone. Pour un triangle, une rotation de 60 degrés ne produirait pas le trajet à trois côtés recherché.
Reconnaître la même méthode dans différents problèmes
Trouver le vol le moins cher, l’itinéraire le plus court et la meilleure note demande dans chaque cas de retenir la meilleure possibilité examinée jusque-là. Commence par une possibilité. Examine chacune des suivantes et remplace celle retenue lorsque la nouvelle est meilleure. Le sens de la comparaison change selon qu’on cherche la plus petite ou la plus grande valeur, mais le motif général reste utile.
Les motifs peuvent aussi organiser les données. Regrouper les dépenses en alimentation, transport et logement rend visibles leurs caractéristiques communes. Si les ventes de parapluies augmentent régulièrement lorsque la météo annonce de la pluie, un magasin peut utiliser cette tendance pour l’aider à prévoir son stock. Une tendance est un constat à examiner ; la raison qui l’explique compte lorsqu’on cherche à savoir si elle va se poursuivre.
Vérifier le motif proposé
Les nombres 1, 2, 4 ne déterminent pas un seul nombre suivant. Doubler donne 8. Augmenter les écarts de un donne 7, puisque les écarts sont jusqu’ici de 1 et 2. Il faut davantage de cas ou une règle expliquant la suite pour décider quel motif convient au problème.
Recherche les différences importantes avant de réutiliser une solution. Partager une addition à parts égales et la partager selon ce que chacun a commandé impliquent tous deux un total commun. La division à parts égales résout la première tâche, mais la seconde nécessite de connaître la commande de chaque personne. Ne réutilise la structure commune qu’après avoir identifié le détail qui modifie le résultat attendu.
Points clés
- La reconnaissance de motifs trouve des structures réutilisables au sein des problèmes et entre eux.
- La généralisation remplace les détails changeants par des paramètres nommés.
- Un polygone régulier à n côtés utilise n déplacements égaux et des rotations de 360° / n.
- Vérifie davantage de cas et les différences importantes avant de te fier à un motif.
2.3 Conserve les détails nécessaires à l’objectif
Un modèle peut être plus simple que la réalité tout en restant utile. L’abstraction conserve les informations nécessaires à un objectif précis et écarte les autres détails. Sa qualité dépend de sa capacité à répondre aux questions posées par la tâche.
Choisir un modèle adapté à la tâche
Un plan de métro conserve les stations, leur ordre sur chaque ligne et les correspondances. Ces détails aident un voyageur à préparer son trajet. Le plan peut déformer les distances et omettre le tracé des rues, car son objectif principal est de montrer les correspondances.
Ce même plan est un mauvais outil pour déterminer la distance à parcourir à pied entre deux stations. Le modèle a omis un détail nécessaire à ce nouvel objectif. Un détail est pertinent en fonction du problème, et non parce qu’il est intéressant en général.
Considère deux modèles d’une même voiture :
| Objectif | Détails nécessaires au modèle |
|---|---|
| Jeu de course | Vitesse, position et direction |
| Système de parking | Numéro d’immatriculation, heure d’arrivée et place de stationnement |
Le jeu de course doit actualiser le mouvement. Le parking doit identifier la voiture et suivre son passage. Aucun des deux modèles n’a besoin de conserver toutes les caractéristiques physiques de la voiture.
Masquer des étapes derrière un nom clair
L’abstraction te permet aussi d’utiliser ce que fait un composant sans avoir à réfléchir à son fonctionnement à chaque fois. Choisir un programme de machine à laver ne t’oblige pas à commander directement son moteur.
Dans un algorithme, une procédure est un groupe d’étapes nommé. L’appel de son nom exécute ces étapes. Un nom comme average(list) indique une tâche tout en masquant le calcul répété. Une procédure qui renvoie un résultat à l’élément qui l’a appelée retourne une valeur. Celui-ci peut stocker cette valeur ou l’utiliser dans un autre calcul.
Un paramètre fournit à une procédure une entrée qui peut changer. drawPolygon(sides, length) possède deux paramètres. L’appel drawPolygon(6, 100) fournit six côtés et une longueur de 100 pas. Cela combine l’abstraction, qui masque les étapes du dessin, et la généralisation, qui permet différentes formes et tailles.
Les limites d’une procédure doivent être claires : quelles entrées accepte-t-elle et quel résultat ou quelle action produit-elle ? Pour une moyenne, une liste vide demande un traitement particulier, car aucun effectif ne permet d’effectuer la division. Masquer les étapes ne dispense pas de définir les entrées utilisables.
Construire des couches de compréhension
Une application de messagerie permet d’envoyer un message. En dessous, le système d’exploitation propose des services que l’application peut utiliser. À un niveau inférieur, le matériel exécute des opérations. Chaque couche s’appuie sur le comportement de la couche suivante sans exposer tous ses détails internes à son utilisateur. Une modification interne peut rester circonscrite tant que le comportement annoncé reste le même.
Les techniques se renforcent mutuellement. La décomposition identifie des parties. La reconnaissance de motifs trouve les parties qui partagent une structure. L’abstraction donne à ces parties des noms et des limites claires afin qu’elles puissent être combinées.
Une erreur d’abstraction courante consiste à supprimer un fait qui détermine si un résultat fonctionne. Un calculateur d’itinéraire qui ignore les rues à sens unique peut proposer un trajet impossible à parcourir. Pour vérifier un modèle, liste les décisions qu’il doit permettre de prendre et confirme que les données conservées suffisent pour chacune.
Points clés
- L’abstraction conserve les informations pertinentes pour un objectif et masque les détails inutiles.
- Un même objet peut nécessiter différents modèles pour différentes tâches.
- Une procédure nomme des étapes réutilisables ; les paramètres fournissent des entrées et une valeur de retour est renvoyée à l’élément qui l’a appelée.
- Une procédure avec des paramètres peut fournir à la fois une abstraction et une généralisation.
- Les couches permettent à un composant de s’appuyer sur le comportement d’un autre sans exposer toutes ses étapes internes.
3Exprime des algorithmes avec des variables, des conditions et des boucles
Un algorithme transforme un plan en instructions dont on peut suivre exactement le comportement. Les variables conservent l’état changeant, les conditions choisissent les chemins et les boucles répètent le travail jusqu’à ce qu’un nombre de passages ou une condition y mette fin. Étudier ces structures ligne par ligne montre pourquoi l’ordre des instructions compte. Tu compareras aussi des méthodes selon leur correction et leur nombre d’étapes, puis tu utiliseras le pseudo-code pour exprimer des calculs, des choix et des traitements répétés.
3.1 Écris une méthode qui se termine et donne le bon résultat
Un algorithme est un ensemble fini et ordonné d’instructions précises permettant de résoudre un problème ou d’accomplir une tâche. Pour une entrée valide, il produit la sortie attendue après un nombre fini d’étapes. Une recette, une notice de montage et la division posée utilisent toutes cette idée.
Vérifier les propriétés de la méthode
Un algorithme utile possède des entrées et des sorties définies. Chaque étape doit être assez précise pour n’avoir qu’un seul sens et assez effective pour pouvoir être exécutée. Les étapes doivent se terminer et leur résultat doit être correct pour chaque entrée valide.
« Trouver le plus grand nombre » indique un objectif, mais ne précise pas de méthode. « Examiner chaque nombre et retenir le plus grand trouvé jusque-là » donne une méthode qui peut être développée en instructions. Elle soulève aussi une question sur l’entrée : que doit-il se passer si la liste est vide ? Définir les entrées valides évite de laisser la méthode inachevée.
Les instructions de la vie quotidienne peuvent laisser des lacunes que les personnes comblent grâce à leur expérience. « Mets la confiture sur le pain » omet l’ouverture du pot et l’étalement d’une quantité sur une surface. Lorsque tu conçois une méthode destinée à une exécution automatique, indique les actions nécessaires au système qui l’exécute et place-les dans un ordre utilisable.
Séparer la méthode de son expression
Un algorithme est la méthode de résolution. Un programme exprime une méthode dans un langage de programmation afin qu’un ordinateur puisse l’exécuter. Le même algorithme peut apparaître en pseudo-code, dans un organigramme et dans des programmes écrits dans différents langages.
Trois structures de contrôle organisent l’exécution :
| Structure | Déroulement |
|---|---|
| Séquence | Les étapes s’exécutent les unes après les autres. |
| Structure conditionnelle | Une condition choisit un chemin. |
| Itération | Un bloc d’étapes se répète. |
Avec des variables, ces structures suffisent à exprimer tout algorithme. C’est l’idée derrière un résultat classique publié par Böhm et Jacopini en 1966. Un algorithme peut les combiner : parcourir une liste en répétant des étapes, tester chaque valeur et mettre à jour un résultat stocké en suivant une séquence.
Comparer des méthodes correctes
Supposons qu’un annuaire classé par ordre alphabétique comporte 1 000 pages. Vérifier les pages une par une peut demander 1 000 vérifications. Tourner deux pages à la fois et ne vérifier qu’une page sur deux demande jusqu’à environ 500 vérifications, plus un retour en arrière si le nom a été dépassé.
Une autre méthode ouvre la partie restante au milieu et conserve la moitié qui peut contenir le nom. Au plus 10 divisions par deux réduisent les 1 000 pages possibles à une seule :
1000 → 500 → 250 → 125 → 63 → 32
→ 16 → 8 → 4 → 2 → 1
Le classement permet d’écarter une moitié sans risque. Sans cet ordre, la moitié écartée pourrait contenir le nom. Cette hypothèse sur l’entrée fait partie de la méthode.
Pour 2 000 pages, vérifier chaque page peut demander deux fois plus de vérifications, tandis que la méthode par divisions successives n’en demande qu’une de plus : 11. Comparer la croissance du nombre d’étapes en dit plus que chronométrer une exécution sur une seule machine.
Vérifie la correction avant de vanter la vitesse. Une méthode qui examine seulement le premier et le dernier nombre d’une liste trouve par hasard 12 dans [7, 3, 12]. Elle manque le 12 dans [7, 12, 3]. Un exemple réussi ne suffit pas à établir que la méthode traite toute la plage d’entrées.
Points clés
- Un algorithme doit être précis, effectif, fini et correct, avec des entrées et des sorties définies.
- Un algorithme est une méthode ; un programme exprime des instructions dans un langage exécutable.
- La séquence, la structure conditionnelle et l’itération organisent les étapes d’un algorithme.
- Les hypothèses d’un algorithme sur ses entrées doivent être respectées pour que son raisonnement soit valide.
- Compare les méthodes correctes selon la croissance du travail nécessaire lorsque la taille de l’entrée augmente.
3.2 Stocke des valeurs et mets-les à jour dans l’ordre
Le pseudo-code décrit un algorithme à l’aide d’instructions structurées et lisibles. Il n’est pas lié à un langage de programmation particulier. Il permet de travailler sur la logique avant de s’occuper de la ponctuation et des autres règles d’écriture d’un langage.
Lire la notation
Les mots-clés sont en majuscules : INPUT, OUTPUT, IF, WHILE et FOR. Chaque instruction occupe sa propre ligne. L’indentation montre quelles instructions appartiennent à un bloc. Un commentaire commence par // et explique le code sans ajouter d’action.
La flèche ← signifie affectation. D’autres styles de pseudo-code utilisent = ou SET … TO pour l’affectation. Ici, = compare des valeurs. Lis count ← 0 comme « count reçoit zéro ». Une variable est un emplacement nommé qui stocke une valeur susceptible de changer. Une constante a un nom mais garde la même valeur, comme PASS_MARK ← 50.
Le membre de droite d’une affectation est évalué en premier. Son résultat remplace l’ancienne valeur à gauche. Si count contient 4, count ← count + 1 lit l’ancienne valeur 4, ajoute 1 et stocke 5. C’est une instruction qui modifie une donnée stockée, pas une équation affirmant qu’un nombre est égal à lui-même plus un.
Adapter les opérations aux données
| Type | Sens et exemple |
|---|---|
| Entier | Nombre entier, comme 17 |
| Réel ou nombre à virgule flottante | Nombre qui peut avoir une partie fractionnaire, comme 21,5 |
| Chaîne de caractères | Texte, comme « Lima » |
| Booléen | TRUE ou FALSE |
| Liste ou tableau | Valeurs ordonnées, comme [18, 21, 19, 22, 20] |
Additionner les nombres 12 et 3 donne 15. Joindre les chaînes « 12 » et « 3 » donne « 123 ». Choisis des noms descriptifs comme temperature et total pour que le rôle d’une valeur reste visible.
Les opérateurs arithmétiques comprennent +, −, * et /. DIV donne le quotient entier, tandis que MOD donne le reste. Ainsi, 17 DIV 5 vaut 3 et 17 MOD 5 vaut 2. Le test n MOD 2 = 0 permet de reconnaître un entier pair. Des comparaisons comme =, ≠, <, >, ≤ et ≥ produisent des valeurs booléennes.
Lire, calculer et afficher
INPUT minutes
hours ← minutes DIV 60
rest ← minutes MOD 60
OUTPUT hours, "h", rest, "min"
Pour 135 minutes, deux groupes complets de 60 utilisent 120 minutes, et il reste 15 minutes. La sortie est « 2 h 15 min ». INPUT reçoit les données, les deux affectations les traitent et OUTPUT envoie le résultat.
Préserver une valeur avant de la remplacer
Supposons que a contienne 5 et b contienne 8. Les instructions a ← b puis b ← a laissent les deux variables avec la valeur 8. La première instruction a écrasé l’unique copie stockée de 5.
Utilise une variable temporaire :
temp ← a
a ← b
b ← temp
Après la première ligne, temp contient 5. La deuxième ligne place 8 dans a. La troisième place le 5 sauvegardé dans b. L’affectation copie une valeur actuelle ; elle ne crée pas de lien permanent entre les variables.
Donne une valeur de départ à chaque variable avant de la lire. Un total cumulé a besoin de total ← 0 avant sa première addition. Placer l’affectation après l’addition laisse la première étape sans valeur de départ définie.
Points clés
- Le pseudo-code utilise une notation cohérente pour exprimer la logique sans choisir de langage de programmation.
- L’affectation évalue le membre de droite et remplace la valeur stockée à gauche.
- Les types de données déterminent quelles opérations ont un sens.
DIVdonne un quotient entier ;MODdonne un reste.INPUTreçoit des données etOUTPUTenvoie un résultat.- Une variable temporaire préserve l’ancienne valeur pendant un échange.
- Initialise une variable avant d’utiliser sa valeur.
3.3 Choisis le bon chemin à l’aide de conditions
Une structure conditionnelle choisit les instructions à exécuter. Une condition est une expression dont la valeur est TRUE ou FALSE. La comparaison score ≥ 50 vérifie si le score actuel est au moins égal à 50.
Utiliser IF et ELSE
IF score ≥ 50 THEN
OUTPUT "Pass"
ELSE
OUTPUT "Fail"
END IF
Une seule branche s’exécute. Pour 50, la condition est vraie et la sortie est « Pass ». Pour 49, elle est fausse et la sortie est « Fail ». Un IF sans ELSE saute simplement son bloc lorsque sa condition est fausse.
La comparaison doit correspondre à la règle. « Au moins 50 » inclut 50 : il faut donc utiliser ≥. Utiliser > rejetterait ce score situé à la limite. Tester des valeurs au seuil est un moyen direct de détecter cette erreur.
Ordonner plusieurs cas
Un enchaînement de conditions ELSE IF vérifie les conditions dans l’ordre et exécute la première branche correspondante :
IF temperature ≥ 30 THEN
OUTPUT "Hot"
ELSE IF temperature ≥ 20 THEN
OUTPUT "Warm"
ELSE IF temperature ≥ 10 THEN
OUTPUT "Mild"
ELSE
OUTPUT "Cold"
END IF
Pour 24 °C, le premier test échoue et le deuxième réussit. La sortie est « Warm ». Pour 10 °C, la troisième branche s’exécute. Pour −3 °C, c’est le ELSE final qui s’exécute.
Une température de 35 °C satisfait les trois comparaisons écrites, mais seule la première branche correspondante s’exécute. Si temperature ≥ 10 venait en premier, cette condition serait satisfaite pour 35 et la sortie serait « Mild ». Lorsque des seuils « au moins » se chevauchent, teste d’abord le plus élevé. Les branches suivantes traitent alors les valeurs qui n’ont pas satisfait les seuils supérieurs.
Combiner des conditions
| Opérateur | Quand le résultat est TRUE |
|---|---|
A AND B | A et B sont toutes deux vraies. |
A OR B | Au moins l’une des conditions A et B est vraie. |
NOT A | A est fausse. |
Pour inclure les températures de 10 °C inclus à 20 °C exclu, utilise temperature ≥ 10 AND temperature < 20. Les deux bornes doivent être respectées. Pour 15, les deux conditions sont vraies. Pour 20, la seconde est fausse.
Utiliser OR pour cet intervalle donne temperature ≥ 10 OR temperature < 20. Cette condition accepte tous les nombres : une valeur inférieure à 10 satisfait quand même la seconde partie, tandis que toute valeur supérieure ou égale à 10 satisfait la première. OR est utile lorsqu’un seul des deux cas suffit, mais pas lorsque deux bornes doivent être respectées simultanément.
Placer une décision dans une autre
Un IF imbriqué place une décision dans une branche d’une autre décision. Tu peux d’abord vérifier si un mot de passe est assez long, puis, dans la branche où le test réussit, vérifier s’il contient un chiffre. La décision intérieure n’est atteinte que si la condition extérieure le permet.
Indente le bloc intérieur pour rendre les chemins visibles. Si plusieurs décisions imbriquées rendent une règle simple difficile à lire, envisage de combiner les conditions avec AND ou d’utiliser un enchaînement de conditions ELSE IF. Suis le parcours d’une valeur dans l’ordre réel avant de supposer que tous les tests écrits sont atteints.
Points clés
- Une condition a un résultat booléen : TRUE ou FALSE.
IF … ELSEchoisit l’un de deux chemins ; un enchaînement de conditionsELSE IFchoisit le premier cas correspondant.- Selon que le seuil est inclus ou exclu, il faut utiliser l’opérateur de comparaison correspondant.
- AND exige que les deux conditions soient vraies, OR qu’au moins l’une le soit, et NOT inverse une condition.
- Ordonne les seuils qui se chevauchent afin qu’une branche antérieure ne capte pas un cas prévu plus loin.
- Une décision intérieure ne s’exécute que lorsque l’exécution atteint la branche qui la contient.
3.4 Répète le travail en conservant les bonnes valeurs
L’itération répète un bloc d’instructions. Une boucle permet d’exprimer une seule fois un travail répété, mais tu dois encore décider quand elle commence, quand elle se termine et quelles valeurs changent à chaque passage.
Choisir comment contrôler la répétition
| Boucle | Fonctionnement |
|---|---|
FOR i ← 1 TO 5 | S’exécute cinq fois, de 1 à 5 inclus. |
FOR EACH item IN list | S’exécute une fois pour chaque élément de la liste. |
WHILE condition DO | Vérifie avant chaque passage ; répète tant que la condition est vraie. |
REPEAT … UNTIL condition | Vérifie après chaque passage ; s’arrête lorsque la condition est vraie. |
Une boucle FOR convient lorsque le nombre de répétitions est connu. Une boucle conditionnelle convient à une tâche dont le moment d’arrêt dépend de valeurs ou de nouvelles entrées. Le corps d’une boucle WHILE peut ne jamais s’exécuter. Le corps d’une boucle REPEAT … UNTIL à test en fin s’exécute au moins une fois.
Suivre un compte à rebours
n ← 3
WHILE n > 0 DO
OUTPUT n
n ← n − 1
END WHILE
OUTPUT "Go!"
Au premier test, n vaut 3. La boucle affiche 3 et donne à n la valeur 2. Les passages suivants affichent 2 et 1. Après le passage de 1 à 0, le test est faux. L’exécution sort de la boucle et affiche « Go! ».
Si l’on retire la mise à jour, n reste égal à 3 et la boucle n’atteint jamais son état d’arrêt. Une boucle destinée à se terminer a besoin d’un moyen de modifier la condition : une mise à jour interne ou une nouvelle entrée peut le fournir.
Cumuler un total et compter les éléments
Un accumulateur construit un résultat au fil de plusieurs passages. Un compteur consigne le nombre de fois qu’un événement se produit. Pour calculer la moyenne des températures quotidiennes 18, 21, 19, 22 et 20 °C :
total ← 0
count ← 0
FOR EACH t IN temperatures
total ← total + t
count ← count + 1
END FOR
OUTPUT total / count
Les totaux successifs sont 18, 39, 58, 80 et 100. Le compteur vaut 5 à la fin, donc la moyenne est de 20 °C. Initialise les deux variables avant la boucle. Remettre total à zéro à l’intérieur effacerait les additions précédentes. Une liste vide exige une vérification distincte avant la division, car son nombre d’éléments est nul.
Retenir la meilleure valeur trouvée jusque-là
Pour une liste non vide, initialise largest avec le premier élément. Examine ensuite chaque valeur et remplace largest chaque fois qu’une valeur plus grande apparaît :
largest ← first item of list
FOR EACH value IN list
IF value > largest THEN
largest ← value
END IF
END FOR
OUTPUT largest
Pour [7, 3, 12, 5], la meilleure valeur retenue reste 7, passe à 12 et reste à 12. Commencer à zéro échoue pour une liste comme [−4, −9, −2], dont la plus grande valeur est −2. Zéro n’a jamais été une valeur candidate.
Vérifier le premier et le dernier passage
Une erreur de décalage d’une unité ajoute ou retire une répétition. FOR i ← 0 TO 5 s’exécute six fois. Dans le compte à rebours, n ≥ 0 afficherait aussi zéro. Écris la première et la dernière valeur de la variable de contrôle pour vérifier le nombre de passages.
Les boucles imbriquées répètent une boucle à l’intérieur d’une autre. Pour 3 lignes et 4 colonnes, le bloc intérieur s’exécute quatre fois pour chaque ligne, soit 12 exécutions. La boucle intérieure recommence à chaque passage de la boucle extérieure.
Points clés
- Les boucles bornées se répètent un nombre connu de fois ; les boucles conditionnelles dépendent d’un test.
WHILEteste avant le corps de la boucle, tandis queREPEAT … UNTILen pseudo-code teste après.- Initialise les accumulateurs et les compteurs avant la boucle et mets-les à jour à l’intérieur.
- La recherche de la plus grande valeur peut commencer par le premier élément d’une liste non vide.
- Une boucle qui se termine doit pouvoir atteindre son état d’arrêt.
- Vérifie les bornes pour repérer les erreurs de décalage d’une unité ; l’intervalle de 0 à 5 inclus contient six valeurs.
- Une boucle intérieure s’exécute entièrement à chaque passage de sa boucle extérieure.
4Dessine les chemins et vérifie les résultats
Un schéma peut révéler les chemins d’un algorithme et un suivi d’exécution peut révéler les valeurs prises le long de l’un de ces chemins. Les organigrammes et le pseudo-code décrivent la même logique sous des formes différentes. Passer de l’un à l’autre aide à repérer les tests et les mises à jour mal placés. Des données de test soigneusement choisies permettent ensuite de vérifier les cas ordinaires, les seuils et les entrées inhabituelles, tandis que le débogage utilise un échec reproductible pour trouver la première étape à corriger.
4.1 Lis un organigramme flèche par flèche
Un organigramme représente un algorithme à l’aide de formes reliées par des flèches. Les formes indiquent les types d’étapes et les flèches montrent quelle étape s’exécute ensuite. Un organigramme court rend un processus visible pour une personne qui ne lit pas nécessairement le code.
Choisir une forme pour chaque rôle
Les principaux symboles suivent la norme ISO 5807. Ils ont des rôles distincts :
| Symbole | Forme | Rôle |
|---|---|---|
| Symbole de début ou de fin | Ovale ou rectangle arrondi | Marque le début ou la fin. |
| Traitement | Rectangle | Effectue une action ou un calcul. |
| Entrée-sortie | Parallélogramme | Lit ou envoie des données. |
| Décision | Losange | Teste une condition ou une valeur et choisit une sortie. |
| Traitement prédéfini | Rectangle à double trait vertical sur les côtés | Appelle une procédure décrite séparément. |
| Connecteur | Petit cercle portant une indication | Relie des parties séparées du flux. |
Une ligne de liaison possède une flèche qui indique le sens. Le sens habituel de lecture va de haut en bas et de gauche à droite, mais c’est la flèche qui détermine l’étape suivante. Une ligne qui revient à un point antérieur peut représenter une répétition.
Construire une séquence simple
Pour calculer l’aire d’une pièce rectangulaire, utilise ces cinq symboles dans l’ordre :
- Symbole de début ou de fin : « Début ».
- Entrée-sortie : « Entrer longueur, largeur ».
- Traitement :
area ← length * width. - Entrée-sortie : « Afficher l’aire ».
- Symbole de début ou de fin : « Fin ».
Relie chaque étape à la suivante par une flèche. Avec une longueur de 4,5 m et une largeur de 3 m, le calcul donne 13,5 mètres carrés. La lecture des entrées ne calcule pas l’aire : ce calcul appartient à son propre rectangle de traitement. L’affichage de l’aire appartient au parallélogramme de sortie.
Cet organigramme ne comporte ni choix ni parcours répété. C’est une séquence pure et sa forme rend l’ordre clair.
Suivre une décision avec les valeurs actuelles
Un losange pose une question ou teste une valeur. Pour une question oui/non comme score ≥ 50?, indique « Oui » et « Non » sur les sorties. Évalue la condition avec le score actuel et suis exactement une flèche, celle qui correspond au résultat.
Une décision peut avoir plus de deux sorties possibles lorsqu’elle teste plusieurs valeurs distinctes. Indique sur chaque sortie la valeur ou le cas qu’elle représente. Ces indications servent à rendre l’étape suivante non ambiguë.
Une action comme count ← count + 1 appartient à un rectangle de traitement. Une question comme count < 5? appartient à un losange de décision. Mélanger ces rôles masque si une valeur est modifiée ou testée.
Vérifier les liaisons
Un organigramme clair comporte un seul début et au moins une fin. Chaque symbole de traitement et d’entrée-sortie possède une ligne de liaison sortante. Chaque décision oui/non possède deux sorties portant une indication. Suis chaque chemin pour vérifier qu’il atteint une étape suivante prévue ou la fin.
Évite de laisser une branche sans suite après sa sortie. Si les deux branches doivent se poursuivre par la même étape, dessine leur jonction avant cette étape. Utilise des connecteurs portant une indication lorsque des lignes longues ou croisées rendraient la page difficile à suivre. Un symbole de traitement prédéfini permet de garder une grande procédure sur un organigramme séparé tout en conservant la structure générale de l’organigramme principal.
Points clés
- Un organigramme utilise des formes pour les types d’étapes et des flèches pour l’ordre d’exécution.
- Les rectangles effectuent des actions, les parallélogrammes traitent les données et les losanges choisissent les chemins.
- Indique les réponses sur les sorties d’une décision et suis la flèche correspondant à la valeur actuelle.
- Utilise des symboles de début et de fin et relie tous les chemins prévus.
- Un symbole de traitement prédéfini peut masquer les détails d’une procédure séparée.
4.2 Dessine des branches et des boucles sans modifier leur logique
Le pseudo-code et les organigrammes peuvent exprimer le même algorithme. Passer de l’un à l’autre implique de conserver l’ordre des actions, les conditions et tous les chemins du processus. Un schéma soigné dont le test est placé ailleurs décrit un algorithme différent.
Montrer un choix et réunir les chemins
Pour un seuil de réussite de 50, dessine un losange portant score ≥ 50?. Sa sortie Oui mène à un parallélogramme de sortie portant « Pass ». Sa sortie Non mène à un parallélogramme portant « Fail ». Réunis les chemins avant la fin.
En pseudo-code, ces chemins deviennent les branches IF et ELSE. Leur point de jonction correspond à la première instruction après END IF. L’organigramme ne doit pas envoyer le flux de la sortie Pass vers la sortie Fail : une seule des deux intervient lors d’une exécution donnée.
Placer le test au bon endroit
Une boucle possède un chemin qui revient à une étape antérieure et une décision qui détermine si la répétition continue. Pour une boucle WHILE, place la décision avant le corps de la boucle. La sortie correspondant à une condition fausse contourne le corps : il peut donc y avoir zéro passage.
Pour une boucle REPEAT … UNTIL à test en fin, place la décision après le corps. Sa sortie correspondant à une condition fausse revient au corps et sa sortie correspondant à une condition vraie quitte la boucle. Le corps s’exécute au moins une fois, car l’exécution l’atteint avant le premier test.
| Boucle | Place de la décision | Sortie de la répétition |
|---|---|---|
WHILE condition | Avant le corps | La condition est fausse. |
REPEAT … UNTIL condition | Après le corps | La condition est vraie. |
Étudier une connexion en trois tentatives
attempts ← 0
REPEAT
INPUT password
attempts ← attempts + 1
UNTIL password = storedPassword OR attempts = 3
IF password = storedPassword THEN
OUTPUT "Welcome"
ELSE
OUTPUT "Account locked"
END IF
Commence l’organigramme par le début et un rectangle de traitement pour attempts ← 0. Dessine ensuite le parallélogramme de saisie du mot de passe, puis le rectangle d’incrémentation. Le losange de la boucle demande « Mot de passe correct OU attempts = 3 ? ». Sa sortie Non revient à la saisie du mot de passe. Sa sortie Oui quitte la boucle.
La condition de sortie donne deux raisons possibles de s’arrêter : elle ne peut donc pas choisir à elle seule le message final. Ajoute un deuxième losange qui demande si le mot de passe est correct. Oui mène à « Welcome » ; Non mène à « Account locked ». Si la troisième tentative est correcte, la boucle s’arrête et la branche du mot de passe correct accueille bien l’utilisateur.
Convertir en suivant les chemins
Pour passer du pseudo-code à un organigramme, transforme chaque affectation en rectangle et chaque entrée ou sortie en parallélogramme. Transforme les tests des branches et des boucles en losanges. Relie le corps à sa décision de contrôle en plaçant correctement la flèche de retour.
Pour passer d’un organigramme au pseudo-code, examine où mènent les chemins de chaque losange. Des chemins qui réalisent des actions différentes puis se rejoignent indiquent une structure conditionnelle. Un chemin qui revient à une étape antérieure indique une itération. Indente chaque corps pour en montrer les limites.
Vérifie la destination de chaque flèche de retour. Revenir après la décision de contrôle ferait sauter le test suivant. Revenir avant une initialisation unique pourrait remettre un compteur à zéro à chaque passage et empêcher la boucle de se terminer.
Points clés
- La conversion entre représentations doit préserver les actions, les conditions et les chemins d’exécution.
- Les branches d’une structure conditionnelle se rejoignent après leurs actions respectives.
- Les boucles à test en début peuvent sauter le corps ; les boucles à test en fin l’exécutent au moins une fois.
- La sortie d’une boucle peut nécessiter une décision distincte pour déterminer pourquoi la boucle s’est arrêtée.
- Les flèches de retour doivent repasser par le test de contrôle prévu et éviter de répéter une initialisation unique.
4.3 Trouve les erreurs grâce au suivi d’exécution et à des tests bien choisis
Un algorithme peut sembler raisonnable tout en faisant ce qu’il ne faut pas. Le suivi d’exécution consiste à suivre exactement ses instructions et à consigner ce qui se produit. Les tests l’exécutent avec des entrées choisies et vérifient les résultats. Le débogage trouve et corrige la cause d’un échec.
Rendre l’état visible
Un tableau de suivi d’exécution consigne les variables et les sorties pendant une exécution à la main. Utilise les valeurs actuelles, pas celles que tu penses que l’auteur avait prévues. Par exemple :
total ← 0
FOR i ← 1 TO 4
total ← total + i
END FOR
OUTPUT total
| Moment de l’exécution | i | total | Sortie |
|---|---|---|---|
| Après l’initialisation | - | 0 | - |
| Après la première addition | 1 | 1 | - |
| Après la deuxième addition | 2 | 3 | - |
| Après la troisième addition | 3 | 6 | - |
| Après la quatrième addition | 4 | 10 | - |
| À OUTPUT | 4 | 10 | 10 |
Ce tableau compact montre l’état après chaque addition. Pour un bogue difficile, ajoute des lignes après chaque instruction et une colonne pour les résultats des conditions. Un test de boucle faux a aussi sa place dans un suivi détaillé : il explique pourquoi l’exécution quitte la boucle.
Choisir les tests à partir des règles
Détermine le résultat attendu avant d’exécuter chaque test. Sinon, il est facile d’accepter la sortie du programme simplement parce qu’elle est apparue. Certains tests vérifient une propriété, comme le maintien de l’ordre dans la sortie, plutôt qu’un résultat exact.
Pour des scores valides de 0 à 100 avec un seuil de réussite de 50 :
| Type | Exemple d’entrée | Ce que le test vérifie |
|---|---|---|
| Normal | 73 | Un score valide habituel qui atteint le seuil de réussite. |
| Aux limites | 0, 49, 50, 100 | Les bornes et le seuil de décision. |
| Juste hors de la plage | −1, 101 | Le rejet au-delà des bornes valides. |
| Type invalide | « abc » | Le rejet d’un texte lorsqu’un score est nécessaire. |
Les catégories des données aux limites et invalides peuvent se chevaucher : −1 est à la fois proche d’une borne et invalide. La catégorie explique pourquoi le test est utile. Une règle utilisant score > 50 réussit les tests normaux avec 73 et 49, mais échoue avec exactement 50.
Teste aussi des structures d’entrée inhabituelles. Une liste vide, un seul élément, des valeurs toutes égales et des valeurs négatives révèlent des hypothèses différentes. Un algorithme de calcul de la moyenne doit traiter une liste vide avant de diviser par son nombre d’éléments. Un algorithme de recherche de la plus grande valeur initialisé à zéro peut échouer sur une liste entièrement négative.
Identifier l’erreur à corriger
Une erreur de syntaxe enfreint les règles d’écriture d’un langage, par exemple l’absence d’une parenthèse fermante. Une erreur d’exécution se produit pendant l’exécution, par exemple une division par zéro. Une erreur de logique permet l’exécution mais donne un résultat faux, par exemple en excluant le seuil de réussite avec >.
Ces catégories t’aident à choisir une vérification. La vérification syntaxique détecte les formes qui enfreignent les règles du langage. Un suivi d’exécution peut révéler le premier état erroné dans une erreur de logique. Des données de test peuvent déclencher une erreur d’exécution qu’une entrée habituelle ne provoquerait jamais.
Déboguer à partir du premier écart
Reproduis l’échec avec une entrée précise. Suis l’exécution ou affiche les valeurs intermédiaires et trouve la première étape où l’état réel diffère de l’état attendu. Corrige la cause, puis exécute à nouveau le test qui échouait et les tests précédents. Une correction dans une branche peut en perturber une autre.
La réussite de tests choisis fournit des éléments sur ces entrées. La correction exige toujours que la méthode traite chaque entrée valide : associe donc les tests à un raisonnement sur les instructions et leurs hypothèses.
Points clés
- Un suivi consigne ce que les instructions font réellement, en utilisant les valeurs actuelles des variables.
- Choisis les résultats attendus ou les propriétés requises avant d’exécuter les tests.
- Utilise des cas normaux, aux limites, invalides et des cas limites liés à la structure.
- Les erreurs de syntaxe enfreignent les règles du langage, les erreurs d’exécution se produisent pendant l’exécution et les erreurs de logique produisent un comportement incorrect.
- Trouve le premier état erroné, corrige sa cause et exécute à nouveau les tests précédents.
- La réussite d’un ensemble de tests fournit des éléments sans établir la correction pour chaque entrée valide.
5Crée et coordonne des programmes dans Scratch
Les blocs donnent aux instructions une forme visible afin que tu puisses construire et exécuter un programme en te concentrant sur sa logique. Scratch présente ce modèle à travers les lutins, les événements, les variables, les conditions et les boucles. De courts projets relient une entrée à une sortie visible, et les blocs personnalisés transforment un travail répété en procédures nommées. La coordination de plusieurs scripts montre aussi pourquoi l’ordre au sein d’un script diffère du moment d’exécution des différents scripts.
5.1 Crée un script avec des blocs Scratch
En programmation par blocs, des blocs graphiques représentent des instructions et des valeurs. Tu les fais glisser dans un espace de travail et tu les assembles. Leurs formes évitent une grande partie du travail de mémorisation de la syntaxe et te permettent de te concentrer sur la logique du programme.
Connaître les éléments d’un projet
Scratch a été créé au MIT Media Lab. Parmi les autres environnements par blocs figurent Snap!, développé à l’University of California, Berkeley, Microsoft MakeCode et Blockly. Blockly est une bibliothèque permettant de construire des interfaces par blocs ; elle a été créée chez Google et transférée à la Raspberry Pi Foundation en 2025.
Dans Scratch, la scène est l’espace où l’exécution du projet est visible. Les lutins sont les personnages ou objets qui y agissent. Un lutin peut avoir des scripts, des costumes et des sons. Un script est une pile de blocs ; un costume est une image que le lutin peut afficher.
La scène mesure 480 unités Scratch sur 360. Son centre est le point de coordonnées (0 ; 0). Les coordonnées horizontales x vont de −240 à 240 et les coordonnées verticales y de −180 à 180. Les pas de déplacement dans Scratch sont des unités de la scène, pas des mètres.
Se laisser guider par la forme des blocs
| Forme du bloc | Rôle | Exemple |
|---|---|---|
| Tête | Démarre un script en réponse à un événement. | « quand le drapeau vert est cliqué » |
| Empilable | Exécute une commande. | « avancer de 10 pas » |
| En C | Entoure des blocs dans une boucle ou une branche. | « répéter 10 fois » |
| Bloc de valeur arrondi | Fournit une valeur. | Bloc de valeur d’une variable |
| Bloc booléen à six côtés | Fournit TRUE ou FALSE. | « souris touchée ? » |
| Fin | Termine un script. | « arrêter tout » |
Un bloc de valeur s’insère dans un emplacement d’entrée d’un autre bloc. Une commande s’insère dans une pile d’actions. Un bloc booléen s’insère dans un emplacement de condition. La forme aide à distinguer la fourniture d’une valeur de l’exécution d’une commande.
Trouver les blocs par catégorie
Scratch 3 possède neuf catégories principales repérées par des couleurs : Mouvement, Apparence, Son, Événements, Contrôle, Capteurs, Opérateurs, Variables et Mes blocs. Mouvement change la position ; Apparence gère l’aspect visible et les paroles ; Capteurs reçoit des informations ; Opérateurs effectue des calculs ou des comparaisons. L’extension Stylo s’ajoute séparément lorsqu’un projet doit tracer des lignes pendant le déplacement d’un lutin.
Exécuter une courte séquence
Sélectionne un lutin et place ces blocs sous un bloc de tête « quand le drapeau vert est cliqué » :
- « aller à x : 0 y : 0 »
- « dire Bonjour ! pendant 2 secondes »
- « avancer de 100 pas »
Clique sur le drapeau vert. Le lutin va d’abord au centre, puis affiche « Bonjour ! » pendant deux secondes, puis avance de 100 pas dans sa direction actuelle. Le bloc de parole avec durée rend la pause visible. La pile s’exécute de haut en bas.
Une pile isolée peut s’exécuter si l’on clique directement dessus dans l’espace de travail, mais elle ne démarrera pas avec le drapeau vert si elle ne possède pas le bloc de tête correspondant. Vérifie l’ordre de la pile et son événement de démarrage lorsque le projet semble ne pas réagir.
Des blocs correctement assemblés nécessitent toujours un plan correct. Un déplacement peut avoir lieu avant une remise en position prévue, ou une question peut être posée après l’affichage du résultat. Les formes aident à construire un assemblage valide ; le suivi d’exécution révèle si cet assemblage accomplit le travail prévu.
Points clés
- Les blocs expriment des instructions et des valeurs avec des formes qui guident leur placement.
- La scène affiche le projet ; les lutins possèdent leurs propres scripts, costumes et sons.
- Un script s’exécute dans l’ordre de la pile à partir de son événement de démarrage.
- Le centre de Scratch est (0 ; 0), sur une scène de 480 unités sur 360.
- Utilise les catégories pour trouver les blocs et ajoute des extensions comme Stylo si nécessaire.
- Un assemblage de blocs qui s’emboîtent peut quand même contenir une erreur de logique.
5.2 Fais réagir et répéter un programme par blocs
Scratch utilise les mêmes idées que le pseudo-code : stocker une valeur, tester une condition et répéter des étapes. Les blocs rendent la structure visible, mais leur place détermine toujours quand chaque action se produit.
Choisir une boucle adaptée à la tâche
« Répéter 10 fois » exécute son corps dix fois. « Répéter indéfiniment » continue jusqu’à l’arrêt du programme et convient à un jeu qui vérifie continuellement les entrées. « Répéter jusqu’à ce que » teste avant chaque passage et s’arrête lorsque la condition est vraie. Son corps peut donc ne jamais s’exécuter, contrairement à REPEAT … UNTIL en pseudo-code, qui teste à la fin.
Avec l’extension Stylo et le stylo en position d’écriture, « répéter 4 fois » contenant « avancer de 100 pas » et « tourner à droite de 90 degrés » dessine un carré. Pour un hexagone régulier, utilise six répétitions et une rotation de 60 degrés. Les changements de direction totalisent 360 degrés autour de la figure.
Stocker une valeur et choisir une branche
Crée score dans Variables. « Mettre score à 0 » affecte sa valeur de départ. « Ajouter 1 à score » ajoute à sa valeur actuelle. Place la remise à zéro avant une boucle de calcul du score ; à l’intérieur, elle effacerait le score précédent à chaque fois.
Le bloc de valeur arrondi score fournit la valeur actuelle aux autres blocs. Cocher sa case affiche un indicateur sur la scène, ce qui aide au suivi d’exécution.
Un bloc « si … alors … sinon » exécute l’un de ses deux corps. Son emplacement de condition à six côtés accepte un booléen comme « (score) > (9) » ou « souris touchée ? ». Les opérateurs « et », « ou » et « non » combinent des conditions avec le même sens qu’en pseudo-code.
Recevoir une entrée, construire du texte et l’afficher
Le bloc « demander [Comment t’appelles-tu ?] et attendre » attend une saisie et la stocke dans « réponse ». Le bloc « regrouper [Bonjour, ] et (réponse) » construit un texte. Place ce bloc de valeur dans « dire … pendant 2 secondes » pour afficher la salutation. Si l’entrée est « Amara », la sortie est « Bonjour, Amara ».
Les trois rôles sont distincts : demander reçoit les données, regrouper traite le texte et dire l’affiche. Un bloc de valeur peut calculer une valeur utile sans rien afficher par lui-même.
Construire un jeu de devinette
Utilise cet ordre de blocs, chaque partie indentée étant placée dans le bloc qui la contient :
"when green flag clicked"
"set secret to (pick random 1 to 10)"
"ask [Guess a number from 1 to 10] and wait"
"repeat until <(answer) = (secret)>"
"if <(answer) > (secret)> then"
"say [Too high] for 2 seconds"
"else"
"say [Too low] for 2 seconds"
"ask [Guess a number from 1 to 10] and wait"
"say [Correct!] for 2 seconds"
Une bonne réponse dès le premier essai saute la boucle. Pour le nombre secret 6 et les propositions 3, 8 et 6, les messages sont « Too low », « Too high », puis « Correct! ». La nouvelle demande dans la boucle fournit une valeur qui peut rendre sa condition vraie.
La durée des messages compte. La question posée par un lutin visible utilise sa bulle de dialogue : la demande suivante remplace donc immédiatement une bulle dire sans durée. Un bloc dire de deux secondes permet à l’apprenant de lire d’abord le message.
Lis la boucle comme WHILE answer ≠ secret pour la vérifier en pseudo-code. Omettre la demande répétée bloque le jeu avec l’ancienne réponse incorrecte ; placer le message final de réussite à l’intérieur de la boucle le met sur le mauvais chemin.
Points clés
- Dans Scratch, « répéter jusqu’à ce que » vérifie la condition avant chaque passage et peut sauter son corps.
- Initialise un score avant une boucle et mets-le à jour à l’intérieur.
- Un bloc booléen fournit la condition d’une décision.
- Demander lit une entrée, regrouper construit du texte et dire l’affiche.
- Une boucle de devinette a besoin de nouvelles propositions pour pouvoir atteindre sa condition d’arrêt.
- Les blocs dire avec durée gardent les messages visibles avant qu’une nouvelle demande remplace la bulle.
5.3 Coordonne des scripts et réutilise un bloc personnalisé
Un projet Scratch comporte souvent plusieurs scripts qui attendent différents événements. La programmation événementielle démarre un script lorsqu’un événement se produit. Un bloc personnalisé permet ensuite à un script d’appeler une tâche réutilisable nommée.
Démarrer le bon script
Les blocs de tête comprennent « quand le drapeau vert est cliqué », « quand ce lutin est cliqué », « quand la touche espace est pressée » et « quand je reçois [message] ». Chacun décrit ce qui démarre la pile qui lui est attachée.
Plusieurs scripts peuvent réagir au même événement. Deux lutins peuvent tous deux démarrer lorsque le drapeau vert est cliqué, puis s’exécuter simultanément. La position de leurs piles dans l’espace de travail ne fixe pas d’ordre d’exécution entre elles.
À l’intérieur d’un script, les actions restent ordonnées de haut en bas. Entre les scripts, le moment de leur exécution peut compter. Si deux scripts déplacent le même lutin dans des directions opposées, leur résultat combiné dépend du moment où leurs actions s’exécutent. Donne aux scripts des responsabilités claires et coordonne le travail lorsqu’une tâche a besoin du résultat d’une autre.
Envoyer un message entre scripts
« Envoyer à tous [fin du jeu] » transmet un message à tous les lutins et à la scène. Les scripts correspondants « quand je reçois [fin du jeu] » démarrent en réponse. Le nom du message doit correspondre : il identifie l’événement traité par les destinataires.
« Envoyer à tous et attendre » met aussi l’émetteur en pause jusqu’à la fin des scripts destinataires. Utilise ce bloc lorsque l’action suivante dépend de leur achèvement. Par exemple, un contrôleur peut diffuser un message de préparation et attendre que les lutins rejoignent leurs positions de départ, puis commencer le jeu.
L’attente ne fixe pas d’ordre entre les destinataires. Si deux scripts de préparation destinataires écrasent tous deux la même valeur, ils ont toujours besoin d’un plan qui évite les responsabilités contradictoires. Un script destinataire qui s’exécute indéfiniment empêche aussi l’émetteur en attente de poursuivre.
Donner un nom et une entrée à un travail répété
Dans Mes blocs, crée un bloc personnalisé avec une entrée appelée size. Sa définition peut être décrite ainsi :
"define square (size)"
"repeat 4"
"move (size) steps"
"turn right 90 degrees"
Avec le stylo en position d’écriture, appeler « square (100) » dessine des côtés de 100 pas. Appeler « square (60) » utilise les mêmes instructions avec des côtés plus courts. Le bloc personnalisé fournit une abstraction en masquant les étapes derrière un nom et une généralisation en laissant l’élément qui l’appelle fournir la taille.
L’appel exécute la définition ; il ne copie pas dans le script une deuxième version à maintenir manuellement. Modifier la définition change le travail effectué par les appels ultérieurs. Cela facilite la maintenance d’une méthode répétée.
Transposer les idées au texte
| Idée dans Scratch | Idée en pseudo-code ou en code textuel |
|---|---|
| « répéter 4 fois » | Boucle bornée |
| « si … alors … sinon » | Structure conditionnelle |
| « mettre score à 0 » | Affectation |
| Bloc personnalisé | Procédure |
| Bloc de tête d’événement et script associé | Gestionnaire d’événement |
Dans un langage textuel, tu saisis les instructions et respectes les règles de ponctuation et d’espacement du langage. Le raisonnement sous-jacent sur l’état, les conditions et les répétitions reste valable.
Les blocs éliminent de nombreuses erreurs de syntaxe, mais une mauvaise condition peut toujours choisir le mauvais chemin. Les suivis d’exécution et les tests restent utiles. Les grands projets par blocs peuvent aussi devenir difficiles à parcourir et à comparer parce que leurs scripts occupent beaucoup d’espace à l’écran ; le texte est plus facile à parcourir et à gérer pour les grands projets logiciels.
Points clés
- Un événement démarre les scripts dont les blocs de tête y répondent.
- Les scripts peuvent s’exécuter simultanément : leur position dans l’espace de travail ne fixe donc pas leur ordre.
- La diffusion d’un message démarre les scripts destinataires correspondants ; la diffusion avec attente attend aussi qu’ils se terminent.
- Les blocs personnalisés masquent des étapes réutilisables et peuvent prendre des paramètres.
- La même logique d’affectation, de structure conditionnelle, d’itération et de procédure se retrouve dans le code textuel.
Pensée informatique : exemples
1D’une tâche à une solution vérifiable
10 étapes
- 1IntroductionCommence par le résultat
Un problème clair est plus facile à résoudre qu’une demande vague. Supposons qu’un groupe de lecture souhaite afficher les noms de ses membres par ordre alphabétique. Avant de choisir un logiciel, identifie les informations disponibles et ce que le résultat final doit contenir.
Tu vas suivre cette demande, de l’énoncé du problème jusqu’à un plan, en utilisant l’entrée, le traitement, la sortie et les quatre techniques de la pensée informatique.
- 2ExplicationNomme l’entrée et la sortie
L’entrée est la liste des noms des membres. La sortie attendue est la même liste par ordre alphabétique. Le traitement est la méthode qui réorganise les noms.
Ces rôles sont différents. Une liste qui omet un membre ne remplit pas la tâche, même si les noms restants sont classés. Préciser la sortie te donne un moyen de reconnaître cet échec avant de décider comment fonctionne la méthode.
- 3LienSitue la tâche dans l’informatique
L’informatique étudie l’information et les processus qui la traitent. Cette tâche soulève des questions sur la représentation des noms, la conception d’une méthode et la vérification de la correction du résultat.
La programmation exprimerait les instructions dans un langage exécutable. Les questions plus générales viennent d’abord : quelle sortie est attendue, quelles hypothèses la méthode exige-t-elle et quelle quantité de travail une liste plus grande demandera-t-elle ?
- 4DéfiVérifie une sortie proposée
Les noms en entrée sont « Noor », « Ava » et « Luis ». Un système affiche « Ava », « Noor ». Quelle exigence n’a-t-il pas respectée, avant même de discuter de sa vitesse ?
---reveal---
Il n’a pas conservé tous les noms en entrée : Luis manque. L’ordre alphabétique ne suffit pas à remplir toute l’exigence de sortie. Le résultat doit contenir les noms d’origine et les placer dans l’ordre demandé.
- 5ExplicationChoisis des outils de réflexion
Quatre techniques aident à transformer la demande en solution. La décomposition sépare la collecte des noms, leur classement et l’affichage du résultat. La reconnaissance de motifs trouve le travail répété d’un nom à l’autre. L’abstraction conserve les informations nécessaires à la tâche. La conception d’algorithmes précise les instructions.
Tu peux revenir à n’importe quelle technique lorsqu’une vérification révèle un problème. Leurs noms décrivent des types de réflexion, pas une séquence d’exécution fixe en quatre étapes.
- 6ExempleRends les exigences exploitables
Note les entrées, les sorties, les contraintes et les critères de réussite. Pour le groupe de lecture, l’entrée est la liste de ses membres et la sortie un affichage ordonné. Conserver chaque nom est une exigence ; vérifier le nombre et l’identité des membres aide à juger le résultat.
Établis ensuite un plan, exprime-le et teste-le. Ces actions suivent les étapes de Pólya : comprendre, planifier, exécuter et revenir sur le résultat. Un test peut révéler quelque chose que le premier plan avait omis.
- 7AnalogieApplique la même réflexion aux repas
La planification des repas utilise la même approche. Sépare le choix des recettes de la préparation de la liste de courses. Repère les ingrédients communs, conserve les quantités utiles, puis ordonne les actions : regrouper les besoins, vérifier les aliments disponibles et faire les courses.
La représentation « riz, 1 kg » conserve une quantité utile sans garder une marque sans importance. L’objectif détermine les détails importants ; cuisiner pour davantage de personnes modifie les quantités nécessaires au plan.
- 8DéfiChoisis la première action utile
Un organisateur dit : « Améliore le planning de l’événement. » Un développeur commence à concevoir un affichage coloré. Que doit clarifier l’équipe avant ce choix d’implémentation ?
---reveal---
Clarifie les informations disponibles, le résultat attendu et les contraintes. Par exemple, demande ce que signifie « améliorer » et comment la réussite sera vérifiée. Un affichage soigné peut exécuter un plan qui n’a jamais traité le problème de planning.
- 9DéfiRelie le plan à la vérification
Un outil regroupe des listes d’ingrédients mais compte le même stock du placard une fois pour chaque recette qui l’utilise. La quantité finale à acheter est trop faible. Quelle partie de la méthode ordonnée faut-il examiner, et pourquoi ?
---reveal---
Examine comment les besoins communs sont regroupés et comment le stock existant est soustrait. Le stock du placard doit être pris en compte par rapport au besoin regroupé. La sortie incorrecte renvoie aux étapes de traitement, même si les données sur les ingrédients ont pu être saisies correctement.
- 10RécapitulatifPasse à l’étape suivante avec un problème clair
Un cahier des charges initial utile indique les entrées, les sorties attendues, les contraintes et les vérifications. La solution peut ensuite être décomposée, simplifiée, exprimée et révisée.
Pour ta prochaine tâche, écris un critère de réussite concret avant de choisir une méthode. Il doit permettre à une autre personne de juger le résultat sans avoir besoin de savoir quel logiciel ou langage l’a produit.
2Construis un petit modèle d’une tâche plus vaste
13 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionRends un quiz facile à traiter
- 2ExplicationCommence par les responsabilités
- 3ExempleAffine une branche
- 4ConseilNote les échanges
- 5DéfiTrouve une lacune dans le plan
- 6ExplicationRecherche le même travail
- 7ExempleGénéralise une méthode de dessin
- 8DéfiVérifie si la réutilisation est justifiée
- 9AnalogieGarde à l’esprit l’objectif du plan
- 10ExempleNomme une tâche et masque ses étapes
- 11DéfiSélectionne les données selon l’objectif
- 12DéfiCombine les trois techniques
- 13RécapitulatifExamine les limites que tu as choisies
3Suis un algorithme complet de l’entrée à la sortie
20 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionSuis ce que font réellement les instructions
- 2ExplicationRends la méthode complète
- 3ExempleCompare le travail sur des pages classées
- 4DéfiTeste l’hypothèse de la méthode
- 5ExplicationLis l’affectation comme un remplacement
- 6ExemplePréserve l’ancienne valeur pendant un échange
- 7DéfiDécompose une durée en groupes et en reste
- 8ExplicationChoisis un chemin
- 9ExempleExige le respect des deux bornes
- 10DéfiOrdonne les tests qui se chevauchent
- 11ExplicationDétermine quand la boucle effectue son test
- 12ExemplePrépare un calcul progressif de moyenne
- 13ExempleEffectue les deux premiers passages
- 14ExempleTermine le calcul de la moyenne
- 15ConseilVérifie la progression et les bornes
- 16ExempleInitialise la meilleure valeur avec une valeur candidate
- 17DéfiSuis l’exécution avant le test suivant
- 18LienRépète une boucle pour chaque ligne
- 19DéfiCombine structure conditionnelle et accumulation
- 20RécapitulatifUtilise un suivi d’exécution pour justifier le résultat
4Suis un organigramme et corrige une erreur aux limites
15 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionObserve le chemin et les valeurs
- 2ExplicationAssocie les formes aux actions
- 3ExempleDessine la séquence de calcul de l’aire
- 4DéfiChoisis le symbole manquant
- 5ExplicationTransforme une branche en IF
- 6ExemplePlace d’abord une décision WHILE
- 7ExemplePlace le test de connexion après la saisie
- 8DéfiSuis une dernière tentative réussie
- 9ExplicationConsigne l’état actuel
- 10ExempleÉcris les résultats attendus avant l’exécution
- 11ConseilChoisis différents types d’entrées de test
- 12DéfiTrouve la première mise à jour incorrecte
- 13ExplicationCorrige la cause et vérifie à nouveau
- 14DéfiUtilise ensemble un suivi et un nouveau test
- 15RécapitulatifLaisse chaque vérification répondre à une question
5Crée un programme Scratch interactif
17 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionRelie un plan à un comportement visible
- 2ExplicationChoisis le lutin et l’événement de démarrage
- 3ExempleExécute une courte pile dans l’ordre
- 4DéfiDistingue une valeur d’une action
- 5ExplicationInitialise avant le travail répété
- 6ExempleReçois une entrée et produis une sortie
- 7ExempleChoisis le nombre secret et pose une première question
- 8ExempleDonne un message lisible
- 9ExempleSuis trois propositions
- 10DéfiCompare les deux formes « jusqu’à ce que »
- 11ExplicationCoordonne un script dépendant
- 12DéfiVérifie ce que demande l’achèvement
- 13ExempleCrée une procédure de dessin
- 14LienTranspose la structure au texte
- 15ConseilConfie clairement l’état partagé à un responsable
- 16DéfiCombine préparation, répétition et réutilisation
- 17RécapitulatifLis le comportement comme un algorithme
Pensée informatique : QCM
Série 1 : Définis un problème et construis un plan10 Questions Pratiques
Question 1 sur 10
Afficher la réponseMasquer la réponse
Question 2 sur 10
Afficher la réponseMasquer la réponse
Question 3 sur 10
Afficher la réponseMasquer la réponse
Question 4 sur 10
Afficher la réponseMasquer la réponse
Question 5 sur 10
Afficher la réponseMasquer la réponse
Question 6 sur 10
Afficher la réponseMasquer la réponse
Question 7 sur 10
Afficher la réponseMasquer la réponse
Question 8 sur 10
Afficher la réponseMasquer la réponse
Question 9 sur 10
Afficher la réponseMasquer la réponse
Question 10 sur 10
Quelles valeurs restent après ce pseudo-code ?
a ← 6
b ← 11
a ← b
b ← a
Afficher la réponseMasquer la réponse
a, remplaçant sa valeur précédente 6. La dernière ligne lit cette valeur actuelle de a et copie donc aussi 11 dans b. Un échange nécessiterait de sauvegarder la valeur d’origine 6 dans une variable temporaire avant d’écraser a ; l’affectation ne préserve pas les anciennes valeurs à elle seule.Série 2 : Suis les variables, les décisions et les boucles10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
Qu’affiche ce code ?
value ← 7
value ← value + 4
OUTPUT value
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
248 DIV 60 et 248 MOD 60, dans cet ordre ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Quelle est la sortie pour load = 82 ?
IF load ≥ 80 THEN
OUTPUT "High"
ELSE IF load ≥ 50 THEN
OUTPUT "Medium"
ELSE
OUTPUT "Low"
END IF
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
Combien de fois l’affichage s’exécute-t-il ?
FOR i ← 2 TO 6
OUTPUT i
END FOR
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
Quelle suite est affichée ?
n ← 5
WHILE n > 0 DO
n ← n − 2
OUTPUT n
END WHILE
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
Quelle est la sortie ?
total ← 0
FOR EACH n IN [2, 5, 6, 9]
IF n MOD 2 = 0 THEN
total ← total + n
END IF
END FOR
OUTPUT total
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
largest ← 0 et ne la remplace que lorsqu’un élément plus grand apparaît. Quelle seule modification rend sa valeur de départ valide pour toutes ces listes ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 3 : Lis des organigrammes et examine des échecs10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
distance ← speed * time ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
count = 0?. Pour count égal à 3, où l’exécution doit-elle aller ensuite ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
items > 0? avant un corps répété. Oui entre dans le corps et revient au test ; Non mène à la fin. Quelle structure de pseudo-code lui correspond ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
Quels sont les totaux successifs stockés après chaque exécution du corps ?
total ← 1
FOR i ← 1 TO 3
total ← total * 2
END FOR
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
temperature > −8 AND temperature ≤ 12. Les tests avec −9, 0, 12 et 13 réussissent. Quel nouveau test révèle le défaut et quel résultat doit-on attendre ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
total ← 0, puis lit une valeur, l’ajoute à total et vérifie si une autre valeur est nécessaire. Sa flèche Oui revient à l’initialisation. L’objectif est d’obtenir un total cumulé. Où cette flèche Oui doit-elle revenir ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
> là où la règle exige ≥. De quel type d’erreur s’agit-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 4 : Crée et coordonne des scripts Scratch10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
score est mis à 0 avant « répéter 6 fois ». Dans le corps de la boucle, « mettre score à 0 » est suivi de « ajouter 2 à score ». Quel score reste à la fin ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
done est déjà TRUE avant un bloc « répéter jusqu’à ce que ». Combien de fois son corps s’exécute-t-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 5 : Applique les idées à de nouvelles situations10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
(mass ≥ 2 AND mass ≤ 5) OR readable. Quelle acceptation erronée peut se produire ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Quelle est la sortie ?
total ← 0
count ← 0
FOR EACH n IN [−3, 4, 0, 8, −1]
IF n > 0 THEN
total ← total + n
count ← count + 1
END IF
END FOR
OUTPUT total / count
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
n ← 0, puis répète n ← n + 2 jusqu’à ce que n ≥ 5 et affiche n. Un organigramme est dessiné avec la même condition avant le corps : Oui mène à la sortie, Non entre dans le corps puis revient au test. Pour cette entrée, les deux affichent 6. Quelle modification révèle leur comportement différent ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Quelle paire est affichée ?
a ← 9
b ← 14
temp ← a
a ← b + 1
b ← temp
OUTPUT a, b
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Tu bloques sur ton propre exercice ? Aide aux Devoirs
Mots-Clés
A
Abstraction
Accumulateur
Affectation
count ← count + 1, l’ancienne valeur de count est lue avant que la nouvelle y soit placée.Algorithme
Arbre de décomposition
B
Bloc « regrouper »
Bloc « répéter »
Bloc « répéter indéfiniment »
Bloc « répéter jusqu’à ce que »
Bloc « réponse »
Bloc booléen
Bloc de tête
Bloc de valeur
Bloc personnalisé
Booléen
score ≥ 50 fournit un booléen qui détermine quelle branche de l’algorithme s’exécute.Boucle à test en début
Boucle à test en fin
Boucle bornée
Boucle conditionnelle
Boucle infinie
Branche
C
Calcul
Chaîne de caractères
Compteur
Concurrence
Condition
remaining > 0 détermine si la boucle doit traiter un autre élément.Connecteur
Constante
Contrainte
Correction
Couche d’abstraction
Critère de réussite
Cycle de résolution de problèmes
D
Débogage
Décomposition
Décomposition descendante
Dépendance
Diffusion de message
DIV
135 DIV 60 détermine deux heures complètes avant le traitement des minutes restantes.Données à valeurs réelles
E
Enchaînement de conditions « sinon si »
Entier
Entrée
Erreur d’exécution
Erreur de décalage d’une unité
n ≥ 0 affiche zéro en plus des valeurs positives si son corps affiche n.Erreur de logique
Erreur de syntaxe
Exécution à la main
É
Événement
G
Généralisation
Gestionnaire d’événement
I
Imbrication
Informatique
Ingénierie informatique
Itération
L
Ligne de liaison
Liste
Lutin
M
MOD
135 MOD 60 donne les 15 minutes restantes après avoir retiré deux heures complètes.Modèle
O
Opérateur logique
Organigramme
P
Paramètre
Pensée informatique
Procédure
Programmation
Programmation par blocs
Programme
Pseudo-code
R
Reconnaissance de motifs
S
Scène
Science des données
Script
Séquence
Sortie
Sous-problème
Structure conditionnelle
Structure de contrôle
Symbole d’entrée-sortie
Symbole de début ou de fin
Symbole de décision
score ≥ 50? dirige un score qui atteint le seuil de réussite vers Oui et un score inférieur vers Non.Symbole de traitement
area ← length * width calcule une valeur après la lecture des deux mesures.T
Tableau de suivi d’exécution
Technologies de l’information
Tendance
Test aux limites
Traitement prédéfini
Type de données
V
Valeur de retour
Variable
À propos de cette unité
Crée ton propre Matériel d'Étude
Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.