Messages d'erreur
AlgoLab produit des messages d'erreur pédagogiques conçus pour aider les étudiants à comprendre et corriger leurs erreurs. Pas de stack traces, pas de jargon technique — juste des explications claires avec la localisation du problème.
Format des erreurs
Chaque erreur suit le même format :
Erreur [Catégorie] (Ligne X, Colonne Y) : [Message explicatif]
Exemple :
Erreur Syntaxique (Ligne 5, Colonne 3) : mot-cle ALORS manquant apres la condition.
Les 3 catégories d'erreurs
1. Erreur Syntaxique
Le code ne respecte pas la grammaire d'AlgoLab. Le parser ne peut pas comprendre ce que vous avez écrit.
| Situation | Message |
|---|---|
Mot-clé Alors oublié après Si | Syntaxe invalide: mot-cle ALORS manquant apres la condition. |
Mot-clé Faire oublié après TantQue | Syntaxe invalide: mot-cle FAIRE manquant apres la condition. |
Mot-clé Faire oublié après Pour | Syntaxe invalide: mot-cle FAIRE manquant apres l en-tete du POUR. |
Valeur manquante après Pas | Syntaxe invalide: valeur manquante apres PAS. Exemple: PAS 1 |
Rien après Lire | Syntaxe invalide: variable attendue apres LIRE. |
Rien après Ecrire | Syntaxe invalide: expression attendue apres ECRIRE. |
| Opérateur sans opérande à droite | Syntaxe invalide: operande manquante apres operateur. |
Bloc non fermé (ex: Si sans FinSi) | Bloc non ferme: FinSi attendu. (Bloc ouvert a la ligne 5) |
AlgoLab utilise des heuristiques intelligentes pour deviner ce que vous avez oublié. Par exemple, si vous écrivez Si x > 0 sans Alors, il ne dit pas juste "erreur de syntaxe" — il identifie précisément le mot-clé manquant.
Comment corriger : Relisez la ligne indiquée et vérifiez que tous les mots-clés sont présents. Consultez la référence du langage pour la syntaxe correcte.
2. Erreur Sémantique
Le code est syntaxiquement correct mais logiquement incohérent. AlgoLab comprend ce que vous avez écrit mais ne peut pas l'exécuter car ça n'a pas de sens.
| Situation | Message |
|---|---|
| Utiliser une variable non déclarée | Variable non declaree: x |
| Déclarer deux fois la même variable | Variable deja declaree: x |
| Affecter un réel à un entier | Type attendu ENTIER |
| Affecter un entier à un booléen | Type attendu BOOLEEN |
| Affecter un nombre à un caractère | Type attendu CARACTERE |
| Affecter directement un tableau | Affectation directe sur un tableau interdite |
| Indexer une variable non-tableau | Indexation sur une variable non tableau |
| Index ≤ 0 | Index de tableau commence a 1 |
| Index > taille du tableau | Index de tableau hors limites |
| Index non entier | Index de tableau doit etre un entier |
| Saisie non numérique pour un entier | Entree invalide: entier attendu |
| Saisie non numérique pour un réel | Entree invalide: reel attendu |
| Saisie invalide pour un booléen | Valeur booleenne attendue (VRAI/FAUX) |
Comment corriger : Vérifiez les types de vos variables. AlgoLab est strictement typé — un entier ne peut pas recevoir un réel, un tableau doit être indexé avec un entier entre 1 et sa taille.
3. Erreur d'exécution
Le code est correct syntaxiquement et sémantiquement, mais un problème survient pendant l'exécution.
| Situation | Message |
|---|---|
| Division par zéro | Division par zero |
| Lire une variable non initialisée | Variable non initialisee: x |
| Lire un élément de tableau non initialisé | Variable non initialisee: t[3] |
| Pas de boucle = 0 | Pas de boucle invalide: 0 |
| Appel d'une fonction inconnue | Fonction inconnue: MaFonction |
| Mauvais nombre d'arguments | Nombre d arguments invalide |
| Tentative de retourner un tableau | Retour de tableau non supporte |
| Accéder à un tableau sans index | Un tableau doit etre indexe |
Comment corriger : Vérifiez vos calculs (division par zéro), assurez-vous d'initialiser vos variables avant de les utiliser, et vérifiez que vos appels de fonctions ont le bon nombre d'arguments.
Détection intelligente des blocs non fermés
AlgoLab maintient une pile (stack) des blocs ouverts pendant l'analyse. Si le programme se termine sans fermer un bloc, l'erreur indique précisément quel bloc est resté ouvert et à quelle ligne il a été ouvert :
Bloc non ferme: FinPour attendu. (Bloc ouvert a la ligne 8)
Cela fonctionne pour Si/FinSi, TantQue/FinTantQue et Pour/FinPour, même quand les blocs sont imbriqués.
Conseils généraux
- Lisez le message en entier — il est en français et dit exactement ce qui ne va pas.
- Regardez la ligne et la colonne — elles pointent vers le problème (ou juste après).
- Vérifiez les mots-clés —
Alors,Faire,FinSi,FinPour,FinTantQuesont souvent oubliés. - Vérifiez les types — une erreur de type signifie que vous mélangez entiers, réels, caractères ou booléens.
- Initialisez vos variables — une variable déclarée mais jamais affectée provoquera une erreur à la lecture.