Exemples commentés
AlgoLab est livré avec 13 programmes d'exemple dans le dossier examples/. Ce chapitre les explique un par un.
1. hello_world.algo — Premier programme
Variable msg : Caractere Debut msg <- "Je suis le seul à le réussir" Ecrire msg Fin
Le programme le plus simple : déclarer une variable texte, lui affecter une valeur, l'afficher.
2. declarations.algo — Types et déclarations multiples
Variable i, j : Entier ; nom : Chaine ; ok : Booleen Debut i <- 1 j <- 2 nom <- "AlgoLab" ok <- Vrai Ecrire "i=" , i , "j=" , j Ecrire "nom=" , nom Ecrire "ok=" , ok Fin
Ce programme montre comment déclarer plusieurs variables de types différents sur une même ligne avec le séparateur ;. On y voit les 3 types scalaires en action : Entier, Chaine (alias de Caractere) et Booleen.
3. conditions.algo — Structure Si / Sinon
Variable x : Entier Debut x <- 10 Si x > 5 Alors Ecrire "x est grand" Sinon Ecrire "x est petit" FinSi Fin
Un test conditionnel classique. Comme x vaut 10, la condition x > 5 est vraie et le programme affiche "x est grand".
4. sinon_si.algo — Conditions multiples
Variable note : Entier Debut Ecrire "Entrez la note :" Lire(note) Si note >= 16 Alors Ecrire "Tres bien" SinonSi note >= 12 Alors Ecrire "Bien" SinonSi note >= 10 Alors Ecrire "Passable" Sinon Ecrire "Insuffisant" FinSi Fin
Cet exemple illustre SinonSi pour gérer plusieurs cas. Les conditions sont évaluées dans l'ordre : dès qu'une est vraie, le bloc correspondant s'exécute et les autres sont ignorés.
5. boucles.algo — Pour et TantQue
Variable i, j : Entier Debut Pour i De 1 A 10 Pas 2 Faire Ecrire i FinPour j <- 0 TantQue j < 3 Faire Ecrire j j <- j + 1 FinTantQue Fin
Les deux types de boucles réunis dans un seul programme. La boucle Pour itère avec un pas de 2 (affiche 1, 3, 5, 7, 9). La boucle TantQue tourne tant que j < 3 (affiche 0, 1, 2).
6. fonctions.algo — Définir et appeler une fonction
Fonction Somme(a, b : Entier) : Entier Retourner a + b FinFonction Variable resultat : Entier Debut resultat <- Somme(2, 3) Ecrire "Somme=" , resultat Fin
Déclaration d'une fonction Somme qui prend deux paramètres entiers et retourne leur somme. La fonction est appelée dans le programme principal et le résultat (5) est affiché.
7. lire.algo — Entrées utilisateur
Variable nom : Caractere Variable age : Entier Debut Ecrire "Entrez votre nom:" Lire nom Ecrire "Entrez votre age:" Lire age Ecrire "Bonjour" Ecrire nom Ecrire "Age" Ecrire age Fin
Lire sans parenthèses fonctionne aussi. La valeur saisie est automatiquement convertie vers le type de la variable cible (texte pour nom, entier pour age).
8. tableaux.algo — Tableaux et boucles
Variable t : Entier[100] Variable i : Entier Debut Pour i De 1 A 100 Pas 1 Faire t[i] <- i * 2 FinPour Pour i De 1 A 100 Pas 1 Faire Ecrire "t[" , i , "]=" , t[i] FinPour Fin
Création d'un tableau de 100 éléments. La première boucle remplit chaque case avec le double de son index. La seconde affiche tout le contenu. Les index vont de 1 à 100 (pas de 0).
9. max_min.algo — Recherche de minimum et maximum
Variable t : Entier[10] ; i, n : Entier ; maxv, minv : Entier Debut Ecrire "Nombre de valeurs (max 10) :" Lire(n) Si n > 10 Alors n <- 10 FinSi Pour i De 1 A n Pas 1 Faire Ecrire "Valeur" , i , ":" Lire(t[i]) FinPour maxv <- t[1] minv <- t[1] Pour i De 2 A n Pas 1 Faire Si t[i] > maxv Alors maxv <- t[i] FinSi Si t[i] < minv Alors minv <- t[i] FinSi FinPour Ecrire "Max =" , maxv Ecrire "Min =" , minv Fin
Un algorithme classique : lire n valeurs dans un tableau, puis trouver le maximum et le minimum par parcours linéaire. On initialise maxv et minv avec le premier élément, puis on compare à partir du deuxième.
10. moyenne_classe.algo — Calcul de moyenne
Variable notes : Entier[30] ; i, n : Entier ; somme : Entier ; moyenne : Reel Debut Ecrire "Nombre d etudiants (max 30) :" Lire(n) Si n > 30 Alors Ecrire "Limite a 30" n <- 30 FinSi somme <- 0 Pour i De 1 A n Pas 1 Faire Ecrire "Note etudiant" , i , ":" Lire(notes[i]) somme <- somme + notes[i] FINPOUR moyenne <- somme / n Ecrire( "Moyenne =" , moyenne) Fin
Lecture des notes d'étudiants, accumulation dans somme, puis division pour obtenir la moyenne. Notez que moyenne est de type Reel car la division somme / n peut donner un résultat non entier. On voit aussi que FINPOUR (majuscules) est accepté — les mots-clés sont insensibles à la casse.
11. facture.algo — Calcul d'une facture interactive
Variable prix : Reel[5] ; qte : Entier[5] ; i : Entier ; total : Reel Debut prix[1] <- 12.5 prix[2] <- 9.9 prix[3] <- 5.0 prix[4] <- 20.0 prix[5] <- 3.5 Pour i De 1 A 5 Pas 1 Faire Ecrire "Quantite article" , i , ":" Lire(qte[i]) FinPour total <- 0.0 Pour i De 1 A 5 Pas 1 Faire total <- total + (prix[i] * qte[i]) FinPour Ecrire "Total facture =" , total Fin
Un programme réaliste : des prix pré-remplis, des quantités saisies par l'utilisateur, et un calcul de total. On voit l'utilisation de deux tableaux parallèles (prix et qte) et la multiplication entre un Reel et un Entier (coercition implicite).
12. menu_calcul.algo — Menu interactif avec boucle
Variable choix : Entier ; a, b : Entier Debut choix <- 1 TantQue choix != 0 Faire Ecrire "Menu" , "1) Addition" , "2) Multiplication" , "3) Modulo" , "0) Quitter" Lire(choix) Si choix == 1 Alors Ecrire "a :" Lire(a) Ecrire "b :" Lire(b) Ecrire "Resultat =" , (a + b) FinSi Si choix == 2 Alors Ecrire "a :" Lire(a) Ecrire "b :" Lire(b) Ecrire "Resultat =" , (a * b) FinSi Si choix == 3 Alors Ecrire "a (entier) :" Lire(a) Ecrire "b (entier) :" Lire(b) Ecrire "Resultat =" , (a % b) FinSi FinTantQue Fin
Un programme de calculatrice avec menu. La boucle TantQue choix != 0 permet de répéter les opérations jusqu'à ce que l'utilisateur choisisse "Quitter". C'est un pattern classique de menu interactif en algorithmique.
13. temperature.algo — Conversion Celsius / Fahrenheit
Variable c : Reel ; f : Reel ; choix : Entier Debut choix <- 1 TantQue choix != 0 Faire Ecrire "1) C vers F" , "2) F vers C" , "0) Quitter" Lire(choix) Si choix == 1 Alors Ecrire "Celsius :" Lire(c) f <- (c * 9 / 5) + 32 Ecrire "Fahrenheit =" , f FinSi Si choix == 2 Alors Ecrire "Fahrenheit :" Lire(f) c <- (f - 32) * 5 / 9 Ecrire "Celsius =" , c FinSi FinTantQue Fin
Conversion de température dans les deux sens avec menu. Les formules (c * 9 / 5) + 32 et (f - 32) * 5 / 9 illustrent l'utilisation de parenthèses pour contrôler la priorité des opérateurs.