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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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

exemple.algo
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.