Bienvenue dans AlgoFX ! Cette aide va vous apprendre ce qu'est un algorithme et comment écrire vos premiers programmes. Même si vous n'avez jamais écrit une ligne de code, vous allez comprendre.
1. Introduction
Qu'est-ce que AlgoFX ?
AlgoFX est un outil pédagogique qui vous permet d'écrire et d'exécuter des algorithmes. Cela signifie que vous pouvez taper des instructions dans l'éditeur, puis cliquer sur "Exécuter" pour voir ce qui se passe.
AlgoFX vous aide à apprendre la logique algorithmique. À ce moment-là, vous ne programmez pas dans un vrai langage comme Python ou Java. Vous apprenez à penser comme un ordinateur.
Ce que AlgoFX n'est PAS
- AlgoFX n'est pas un langage de programmation professionnel
- AlgoFX n'est pas un compilateur
- Les algorithmes écrits dans AlgoFX ne peuvent pas être utilisés directement dans des logiciels réels
Pourquoi apprendre les algorithmes ?
Imaginez que vous voulez expliquer à quelqu'un comment préparer un gâteau. Vous devez donner des étapes précises : mélanger les ingrédients, chauffer le four, cuire pendant 30 minutes. C'est exactement ce qu'est un algorithme : une suite d'instructions claires pour accomplir une tâche.
Les algorithmes sont partout : dans les calculatrices, les jeux vidéo, les réseaux sociaux, les GPS. Apprendre à écrire des algorithmes, c'est apprendre à résoudre des problèmes de manière logique et structurée.
3. Les variables
Qu'est-ce qu'une variable ?
Une variable est comme une boîte avec une étiquette. Dans cette boîte, vous pouvez mettre une valeur. Imaginez que vous avez une boîte étiquetée "âge" et vous y mettez le nombre 15. Plus tard, vous pouvez regarder dans cette boîte pour savoir quel âge est stocké, ou vous pouvez changer la valeur à 16.
Déclaration des variables
Avant d'utiliser une variable, vous devez la déclarer. Cela signifie que vous dites à l'algorithme : "Je vais utiliser une boîte qui s'appelle X et elle contiendra tel type de valeur".
Voici comment déclarer des variables dans AlgoFX :
Var
age: entier;
nom: chaine;
taille: reel;
Dans cet exemple :
age est une variable de type entier (un nombre sans virgule comme 5, 10, 100)
nom est une variable de type chaine (du texte comme "Marie", "Paris")
taille est une variable de type reel (un nombre avec virgule comme 1.75, 3.14)
Les types de données dans AlgoFX
| Type |
Signification |
Exemples |
entier |
Nombre entier |
5, -10, 0, 1000 |
reel |
Nombre à virgule |
3.14, -0.5, 2.0 |
chaine |
Texte |
"Bonjour", "123" |
caractere |
Un seul caractère |
"a", "5", "!" |
booleen |
Vrai ou faux |
vrai, faux |
Affectation de valeurs
Une fois qu'une variable est déclarée, vous pouvez lui donner une valeur. On utilise la flèche <- pour dire "mettre dans". Lisez toujours cette flèche comme "reçoit la valeur".
Debut
age <- 15;
nom <- "Marie";
taille <- 1.65;
Fin
À ce moment-là, la variable age contient 15, nom contient "Marie", et taille contient 1.65.
Changement de valeur
Une variable peut changer de valeur pendant l'exécution de l'algorithme. C'est pour cela qu'on l'appelle "variable" : sa valeur varie.
Debut
age <- 15;
ecrire(age);
age <- 16;
ecrire(age);
Fin
Ici, l'algorithme affiche d'abord 15, puis 16. La valeur d'age a changé entre les deux affichages.
Visualisation des variables dans AlgoFX
Astuce : AlgoFX possède un panneau spécial qui affiche toutes vos variables et leurs valeurs en temps réel. Cela vous permet de voir exactement ce qui se passe dans la mémoire de votre algorithme. Utilisez le mode "Pas à Pas" pour observer comment les variables changent ligne par ligne.
Les constantes
Une constante est comme une variable, mais sa valeur ne peut jamais changer. Imaginez une étiquette collée sur une boîte qui dit "NE PAS MODIFIER". Les constantes sont utiles pour les valeurs fixes comme le nombre Pi.
Const
PI = 3.14159;
Debut
ecrire(PI);
Fin
Une fois définie, vous ne pouvez plus modifier PI. Si vous essayez, AlgoFX affichera une erreur.
4. Entrées et sorties
Écrire (afficher des informations)
Pour afficher quelque chose à l'écran, on utilise l'instruction ecrire(). Cela signifie : "Montre ce message à l'utilisateur".
Debut
ecrire("Bonjour le monde !");
Fin
Vous pouvez afficher du texte (entre guillemets) ou des variables :
Var
age: entier;
Debut
age <- 20;
ecrire("Votre âge est :", age);
Fin
Ce programme affichera : Votre âge est : 20
Lire (recevoir des informations de l'utilisateur)
Pour demander à l'utilisateur d'entrer une valeur, on utilise lire(). Cela signifie : "Attends que l'utilisateur tape quelque chose, puis stocke cette valeur dans la variable".
Var
nom: chaine;
Debut
ecrire("Quel est votre nom ?");
lire(nom);
ecrire("Bonjour", nom);
Fin
Quand l'algorithme arrive à lire(nom), il s'arrête et attend. L'utilisateur tape son nom, puis l'algorithme continue et affiche "Bonjour" suivi du nom entré.
Interaction complète avec l'utilisateur
Voici un exemple qui combine lecture et écriture :
Var
nombre1, nombre2, somme: entier;
Debut
ecrire("Entrez le premier nombre :");
lire(nombre1);
ecrire("Entrez le deuxième nombre :");
lire(nombre2);
somme <- nombre1 + nombre2;
ecrire("La somme est :", somme);
Fin
L'algorithme demande deux nombres, calcule leur somme, puis affiche le résultat. À ce moment-là, l'utilisateur participe activement au déroulement du programme.
5. Les conditions
Pourquoi utiliser des conditions ?
Imaginez que vous sortez de chez vous. Si il pleut, vous prenez un parapluie. Sinon, vous n'en prenez pas. C'est exactement ce qu'est une condition : faire quelque chose seulement si une situation est vraie.
La structure Si / Alors
Dans AlgoFX, on écrit les conditions avec si, alors, et finsi :
Var
age: entier;
Debut
ecrire("Quel est votre âge ?");
lire(age);
si age >= 18 alors
ecrire("Vous êtes majeur");
finsi
Fin
Ici, le message "Vous êtes majeur" s'affiche seulement si l'âge est supérieur ou égal à 18. Sinon, l'algorithme ne fait rien et passe directement à la fin.
Si / Sinon
Souvent, on veut faire une chose si la condition est vraie, et une autre chose si elle est fausse :
Var
age: entier;
Debut
ecrire("Quel est votre âge ?");
lire(age);
si age >= 18 alors
ecrire("Vous êtes majeur");
sinon
ecrire("Vous êtes mineur");
finsi
Fin
Maintenant, l'algorithme affiche toujours un message : soit "majeur" si l'âge est 18 ou plus, soit "mineur" dans le cas contraire.
Les opérateurs de comparaison
| Opérateur |
Signification |
Exemple |
= |
Est égal à |
age = 18 |
<> ou != |
Est différent de |
age <> 18 |
< |
Est inférieur à |
age < 18 |
> |
Est supérieur à |
age > 18 |
<= |
Est inférieur ou égal à |
age <= 18 |
>= |
Est supérieur ou égal à |
age >= 18 |
Conditions composées
Vous pouvez combiner plusieurs conditions avec et et ou :
si age >= 18 et age < 65 alors
ecrire("Vous êtes en âge de travailler");
finsi
Le mot et signifie que les deux conditions doivent être vraies. Le mot ou signifie qu'au moins une des conditions doit être vraie.
Vrai et Faux (booléens)
Dans AlgoFX, vrai et faux sont des valeurs spéciales. Une variable de type booleen peut seulement contenir l'une de ces deux valeurs :
Var
estMajeur: booleen;
age: entier;
Debut
lire(age);
estMajeur <- age >= 18;
si estMajeur = vrai alors
ecrire("Majeur");
finsi
Fin
6. Les boucles
Pourquoi répéter une action ?
Imaginez que vous devez écrire les nombres de 1 à 100. Vous ne voulez pas écrire 100 instructions ecrire() ! Les boucles permettent de répéter automatiquement une action plusieurs fois.
La boucle POUR
La boucle pour est utilisée quand vous savez exactement combien de fois vous voulez répéter quelque chose.
Var
i: entier;
Debut
pour i de 1 a 5 faire
ecrire(i);
finpour
Fin
Ce programme affiche les nombres 1, 2, 3, 4, 5. À ce moment-là, la variable i prend chaque valeur de 1 à 5, une par une. C'est comme compter sur vos doigts : premier doigt, deuxième doigt, etc.
Boucle avec un pas différent
Vous pouvez changer la vitesse de comptage avec le mot pas :
pour i de 0 a 10 pas 2 faire
ecrire(i);
finpour
Ici, l'algorithme affiche 0, 2, 4, 6, 8, 10. Il saute de 2 en 2.
La boucle TANT QUE
La boucle tantque répète tant qu'une condition est vraie. Vous ne savez pas forcément combien de fois la boucle va tourner.
Var
nombre: entier;
Debut
nombre <- 1;
tantque nombre <= 5 faire
ecrire(nombre);
nombre <- nombre + 1;
fintantque
Fin
Ce programme affiche aussi 1, 2, 3, 4, 5. Mais cette fois, la boucle continue tant que nombre est inférieur ou égal à 5. À chaque tour, on ajoute 1 à nombre.
Attention : Si vous oubliez d'augmenter nombre dans la boucle, elle ne s'arrêtera jamais ! C'est ce qu'on appelle une boucle infinie. AlgoFX vous protège en arrêtant les boucles qui durent trop longtemps.
Quand utiliser POUR ou TANT QUE ?
- Utilisez
pour quand vous savez combien de fois répéter (par exemple : afficher les 10 premiers nombres)
- Utilisez
tantque quand vous ne savez pas à l'avance (par exemple : demander un mot de passe jusqu'à ce qu'il soit correct)
L'instruction SORTIR
Parfois, vous voulez arrêter une boucle avant la fin normale. L'instruction sortir permet de quitter immédiatement une boucle :
Var
i: entier;
Debut
pour i de 1 a 100 faire
ecrire(i);
si i = 10 alors
sortir;
finsi
finpour
ecrire("Boucle terminée");
Fin
Ce programme affiche les nombres de 1 à 10, puis sort de la boucle même si elle devait aller jusqu'à 100.
Opérateurs et Fonctions
Opérateurs Arithmétiques
| Opérateur |
Description |
Exemple |
Résultat |
| + |
Addition |
5 + 3 |
8 |
| - |
Soustraction |
5 - 3 |
2 |
| * |
Multiplication |
5 * 3 |
15 |
| / |
Division réelle |
7 / 2 |
3.5 |
| div |
Division entière |
7 div 2 |
3 |
| mod |
Modulo (reste de division) |
7 mod 2 |
1 |
| ^ ou puissance |
Puissance |
5^3 ou 5 puissance 3 |
125 |
Fonctions Mathématiques
| Fonction |
Description |
Exemple |
Résultat |
| racine(x) |
Racine carrée |
racine(16) |
4 |
Exemples d'Utilisation
Exemple 1: Calculs arithmétiques
Var
a, b, somme, produit, puissance: entier;
quotient: reel;
Debut
a <- 10;
b <- 3;
somme <- a + b; // 13
produit <- a * b; // 30
quotient <- a / b; // 3.333...
puissance <- a^2; // 100
ecrire("Somme:", somme);
ecrire("Puissance:", puissance);
Fin
Exemple 2: Division entière et modulo
Var
dividende, diviseur, quotient, reste: entier;
Debut
dividende <- 17;
diviseur <- 5;
quotient <- dividende div diviseur; // 3
reste <- dividende mod diviseur; // 2
ecrire("17 div 5 =", quotient);
ecrire("17 mod 5 =", reste);
Fin
Exemple 3: Puissance (plusieurs syntaxes)
Var
base, exposant, resultat1, resultat2: entier;
Debut
base <- 2;
exposant <- 8;
resultat1 <- base^exposant; // 256
resultat2 <- base puissance exposant; // 256
ecrire("2^8 =", resultat1);
ecrire("2 puissance 8 =", resultat2);
Fin
Exemple 4: Fonction racine
Var
nombre: entier;
resultat: reel;
Debut
nombre <- 25;
resultat <- racine(nombre); // 5.0
ecrire("Racine de", nombre, "=", resultat);
Fin
Exemple 5: Opérateurs logiques
Var
age: entier;
estMajeur, estMineur: booleen;
Debut
lire(age);
estMajeur <- age >= 18;
estMineur <- non estMajeur;
Si age >= 18 et age < 65 Alors
ecrire("Adulte actif");
Sinon
Si age < 18 ou age >= 65 Alors
ecrire("Mineur ou Senior");
FinSi
FinSi
Fin
Exemple 6: Vérifier si un nombre est pair
Var
nombre: entier;
Debut
lire(nombre);
Si nombre mod 2 = 0 Alors
ecrire(nombre, "est pair");
Sinon
ecrire(nombre, "est impair");
FinSi
Fin
Exemple 7: Calculer la distance entre deux points
Var
x1, y1, x2, y2: reel;
distance: reel;
Debut
lire(x1, y1, x2, y2);
distance <- racine((x2-x1)^2 + (y2-y1)^2);
ecrire("Distance =", distance);
Fin
8. Exécution pas à pas dans AlgoFX
Qu'est-ce que le mode pas à pas ?
Le mode "Pas à Pas" est une fonctionnalité unique d'AlgoFX qui vous permet d'exécuter votre algorithme ligne par ligne. Au lieu de tout exécuter d'un coup, vous avancez instruction par instruction. Cela signifie que vous pouvez observer exactement ce qui se passe à chaque étape.
Comment utiliser le mode pas à pas
- Écrivez votre algorithme dans l'éditeur
- Cliquez sur le bouton "⏯ Pas à Pas"
- L'algorithme se prépare mais ne démarre pas encore
- Cliquez sur "➡ Suivant" pour exécuter la ligne suivante
- Continuez à cliquer sur "Suivant" pour avancer ligne par ligne
- Cliquez sur "⏹ Arrêter" si vous voulez arrêter avant la fin
Le tableau de visualisation des variables
Pendant l'exécution pas à pas, AlgoFX affiche un panneau spécial à droite de l'écran. Ce panneau montre toutes vos variables et leurs valeurs actuelles. À chaque fois que vous cliquez sur "Suivant", les valeurs se mettent à jour automatiquement.
Astuce : Utilisez le mode pas à pas pour comprendre exactement comment fonctionne une boucle. Vous verrez la variable de boucle changer à chaque tour, et vous comprendrez pourquoi certaines instructions sont répétées.
Comprendre les erreurs avec le mode pas à pas
Si votre algorithme ne fonctionne pas comme prévu, le mode pas à pas est votre meilleur ami. Vous pouvez voir exactement à quelle ligne le problème apparaît et quelle valeur inattendue apparaît dans une variable.
Par exemple, si vous calculez une moyenne et obtenez un résultat bizarre, utilisez le pas à pas pour vérifier que vos variables contiennent bien les bonnes valeurs avant le calcul.
9. Erreurs fréquentes
Erreurs de syntaxe
Les erreurs de syntaxe sont comme des fautes d'orthographe dans votre algorithme. AlgoFX ne comprend pas ce que vous voulez dire et refuse d'exécuter le programme.
Oubli du point-virgule
age <- 15 // ERREUR : il manque le point-virgule
age <- 15; // CORRECT
Mauvaise utilisation de la flèche d'affectation
age = 15; // ERREUR : il faut <-
age <- 15; // CORRECT
Variable non déclarée
Debut
age <- 15; // ERREUR : age n'est pas déclaré dans Var
Fin
Vous devez toujours déclarer vos variables dans la section Var avant de les utiliser.
Oubli de finsi, finpour, ou fintantque
si age >= 18 alors
ecrire("Majeur");
// ERREUR : il manque finsi
Erreurs de logique
Les erreurs de logique sont plus difficiles à détecter. L'algorithme s'exécute sans erreur, mais le résultat n'est pas celui attendu.
Condition inversée
si age < 18 alors
ecrire("Vous êtes majeur"); // ERREUR : la logique est inversée
finsi
Boucle infinie
nombre <- 1;
tantque nombre <= 10 faire
ecrire(nombre);
// ERREUR : on oublie d'augmenter nombre
fintantque
Mauvais ordre d'opérations
somme <- somme + nombre; // Si utilisé avant d'initialiser somme
// Il faut d'abord : somme <- 0;
Erreurs des débutants
Confondre affectation et comparaison
<- signifie "donner une valeur" (affectation)
= signifie "comparer" (égalité)
Oublier les guillemets pour le texte
ecrire(Bonjour); // ERREUR
ecrire("Bonjour"); // CORRECT
Type incompatible
Var
age: entier;
Debut
age <- "quinze"; // ERREUR : "quinze" est du texte, pas un entier
Fin
Conseil : Lisez toujours les messages d'erreur d'AlgoFX. Ils vous indiquent exactement où se trouve le problème et souvent suggèrent une solution. N'hésitez pas à utiliser le bouton "⚙️ Compiler" pour vérifier votre syntaxe sans exécuter l'algorithme.
10. Exemples expliqués
Exemple 1 : Carré - Surface
Objectif
Calculer la surface d'un carré à partir de la longueur de son côté. Cela signifie que si l'utilisateur donne 5, le programme calcule 5 × 5 = 25.
Algorithme SurfaceCarre;
Var
cote, surface: reel;
Debut
ecrire("Entrez le côté du carré:");
lire(cote);
surface <- cote * cote;
ecrire("La surface du carré est:", surface);
Fin
Explication ligne par ligne
- Ligne Var : On déclare deux variables de type
reel (nombre à virgule) : cote pour la longueur du côté et surface pour le résultat
- Ligne ecrire : On demande à l'utilisateur d'entrer la valeur du côté
- Ligne lire : L'algorithme attend que l'utilisateur tape un nombre et le stocke dans
cote
- Ligne surface : On calcule la surface en multipliant le côté par lui-même (côté × côté)
- Ligne ecrire finale : On affiche le résultat
Ce que vous devez retenir
Cet algorithme montre comment récupérer une valeur de l'utilisateur, faire un calcul simple, et afficher le résultat. C'est le schéma de base de nombreux programmes : entrée → traitement → sortie.
Exemple 2 : Rectangle - Surface et Périmètre
Objectif
Calculer à la fois la surface et le périmètre d'un rectangle. La surface est longueur × largeur, et le périmètre est 2 × (longueur + largeur).
Algorithme RectangleSurfacePerimetre;
Var
longueur, largeur, surface, perimetre: reel;
Debut
ecrire("Entrez la longueur du rectangle:");
lire(longueur);
ecrire("Entrez la largeur du rectangle:");
lire(largeur);
surface <- longueur * largeur;
perimetre <- 2 * (longueur + largeur);
ecrire("Surface du rectangle:", surface);
ecrire("Périmètre du rectangle:", perimetre);
Fin
Explication ligne par ligne
- Déclarations : On déclare 4 variables réelles pour stocker longueur, largeur, surface et périmètre
- Deux lectures : On demande d'abord la longueur, puis la largeur. L'ordre est important car l'utilisateur doit entrer les valeurs une par une
- Calcul de la surface : On multiplie longueur par largeur
- Calcul du périmètre : On utilise la formule mathématique 2(L + l). Les parenthèses sont importantes pour calculer d'abord la somme
- Affichage : On montre les deux résultats
Ce que vous devez retenir
On peut faire plusieurs calculs dans un même algorithme. Chaque calcul utilise les bonnes variables et la bonne formule mathématique.
Exemple 3 : Calcul de Moyenne
Objectif
Calculer la moyenne de trois notes et afficher un message selon que l'élève a réussi ou non. Cela montre comment utiliser une condition pour prendre une décision.
Algorithme CalculMoyenne;
Var
note1, note2, note3, moyenne: reel;
Debut
ecrire("Entrez trois notes:");
lire(note1, note2, note3);
moyenne <- (note1 + note2 + note3) / 3;
ecrire("La moyenne est:", moyenne);
si moyenne >= 10 alors
ecrire("Félicitations, vous avez réussi!");
sinon
ecrire("Vous devez vous améliorer.");
finsi
Fin
Explication ligne par ligne
- Lecture multiple : La ligne
lire(note1, note2, note3) demande trois valeurs à l'utilisateur, une après l'autre
- Calcul de moyenne : On additionne les trois notes et on divise par 3. Les parenthèses garantissent qu'on additionne d'abord avant de diviser
- Condition : On vérifie si la moyenne est supérieure ou égale à 10
- Deux chemins possibles : Si oui, on félicite. Si non, on encourage à s'améliorer
Ce que vous devez retenir
Les conditions permettent à l'algorithme de s'adapter selon le résultat. C'est ce qui rend les programmes intelligents : ils peuvent réagir différemment selon la situation.
Exemple 4 : Conversion de Température
Objectif
Convertir une température de Celsius vers Fahrenheit ou l'inverse, selon le choix de l'utilisateur. Cela montre comment utiliser des conditions imbriquées (des conditions dans des conditions).
Algorithme ConversionTemperature;
Var
choix: entier;
celsius, fahrenheit: reel;
Debut
ecrire("Conversion de température");
ecrire("1- Celsius vers Fahrenheit");
ecrire("2- Fahrenheit vers Celsius");
ecrire("Entrez votre choix (1 ou 2):");
lire(choix);
si choix = 1 alors
ecrire("Entrez la température en Celsius:");
lire(celsius);
fahrenheit <- (celsius * 9/5) + 32;
ecrire(celsius, "°C équivaut à", fahrenheit, "°F");
sinon
si choix = 2 alors
ecrire("Entrez la température en Fahrenheit:");
lire(fahrenheit);
celsius <- (fahrenheit - 32) * 5/9;
ecrire(fahrenheit, "°F équivaut à", celsius, "°C");
sinon
ecrire("Choix invalide");
finsi
finsi
Fin
Explication ligne par ligne
- Menu : On affiche d'abord un menu avec les options disponibles
- Lecture du choix : L'utilisateur entre 1 ou 2
- Première condition : Si choix = 1, on fait la conversion Celsius → Fahrenheit
- Sinon imbriqué : Si choix ≠ 1, on vérifie si choix = 2 pour faire l'autre conversion
- Sinon final : Si ce n'est ni 1 ni 2, on affiche "Choix invalide"
Ce que vous devez retenir
On peut imbriquer plusieurs conditions pour gérer différents cas. Attention à bien fermer chaque finsi au bon endroit. Les formules mathématiques (9/5, 32, 5/9) sont des constantes qu'on utilise directement.
Exemple 5 : Calcul Cercle
Objectif
Calculer la surface et la circonférence d'un cercle à partir de son rayon. Cela montre comment utiliser une constante (PI) dans les calculs.
Algorithme CalculCercle;
Var
rayon, surface, circonference: reel;
Const
PI = 3.14159;
Debut
ecrire("Entrez le rayon du cercle:");
lire(rayon);
surface <- PI * rayon * rayon;
circonference <- 2 * PI * rayon;
ecrire("Surface du cercle:", surface);
ecrire("Circonférence du cercle:", circonference);
Fin
Explication ligne par ligne
- Constante PI : On définit PI = 3.14159 dans la section Const. Cette valeur ne changera jamais
- Calcul de surface : Formule : π × rayon². On écrit rayon × rayon au lieu de rayon²
- Calcul de circonférence : Formule : 2 × π × rayon
Ce que vous devez retenir
Les constantes sont utiles pour des valeurs fixes qu'on utilise plusieurs fois. On n'a pas besoin de réécrire 3.14159 partout, on utilise simplement PI.
Exemple 6 : Équation du 1er Degré
Objectif
Résoudre une équation du type ax + b = 0. Cela montre comment gérer différents cas mathématiques (pas de solution, une solution, infinité de solutions).
Algorithme EquationPremierDegre;
Var
a, b, x: reel;
Debut
ecrire("Résolution de l'équation ax + b = 0");
ecrire("Entrez la valeur de a:");
lire(a);
ecrire("Entrez la valeur de b:");
lire(b);
si a = 0 alors
si b = 0 alors
ecrire("L'équation admet une infinité de solutions");
sinon
ecrire("L'équation n'admet pas de solution");
finsi
sinon
x <- -b / a;
ecrire("La solution est x =", x);
finsi
Fin
Explication ligne par ligne
- Cas a = 0 et b = 0 : L'équation devient 0 = 0, qui est toujours vraie. Donc infinité de solutions
- Cas a = 0 et b ≠ 0 : L'équation devient b = 0 où b n'est pas nul. C'est impossible, donc aucune solution
- Cas a ≠ 0 : On peut diviser par a, donc x = -b/a
Ce que vous devez retenir
Avant de faire un calcul mathématique, il faut toujours vérifier les cas spéciaux (comme la division par zéro). Les conditions imbriquées permettent de gérer ces différents cas.
Exemple 7 : Afficher des Nombres
Objectif
Afficher tous les nombres de 1 jusqu'à une limite donnée. C'est votre première boucle simple.
Algorithme AfficherNombres;
Var
nbLimite, i: entier;
Debut
ecrire("Entrer un nombre limite:");
lire(nbLimite);
pour i de 1 a nbLimite faire
ecrire(i);
finpour
Fin
Explication ligne par ligne
- Variable i : C'est la variable de boucle qui prend les valeurs 1, 2, 3... jusqu'à nbLimite
- Boucle pour : La boucle répète
ecrire(i) pour chaque valeur de i
- Automatique : Vous n'avez pas besoin d'écrire
i <- i + 1, la boucle pour le fait automatiquement
Ce que vous devez retenir
La boucle pour est parfaite quand vous savez combien de fois répéter. Ici, on répète exactement nbLimite fois.
Exemple 8 : Nombres Pairs
Objectif
Afficher tous les nombres pairs de 0 à n. Cela montre comment utiliser le paramètre pas dans une boucle.
Algorithme NombresPairs;
Var
n, i: entier;
Debut
ecrire("Entrez la valeur limite n:");
lire(n);
ecrire("Nombres pairs de 0 à", n, ":");
pour i de 0 a n pas 2 faire
ecrire(i);
finpour
Fin
Explication ligne par ligne
- pas 2 : Au lieu d'avancer de 1 en 1, la boucle avance de 2 en 2
- Départ à 0 : On commence à 0 (qui est pair) puis 2, 4, 6, 8...
- Arrêt : La boucle s'arrête quand i dépasse n
Ce que vous devez retenir
Le paramètre pas permet de contrôler le saut entre chaque itération. C'est très utile pour afficher une série régulière de nombres.
Exemple 9 : Nombres Impairs
Objectif
Afficher tous les nombres impairs de 1 à n. Même principe que les nombres pairs, mais en commençant à 1.
Algorithme NombresImpairs;
Var
n, i: entier;
Debut
ecrire("Entrez la valeur limite n:");
lire(n);
ecrire("Nombres impairs de 1 à", n, ":");
pour i de 1 a n pas 2 faire
ecrire(i);
finpour
Fin
Explication ligne par ligne
- Départ à 1 : On commence à 1 (premier nombre impair)
- pas 2 : On saute de 2 en 2, donc 1, 3, 5, 7...
Ce que vous devez retenir
En changeant juste le point de départ (0 ou 1), on obtient soit les pairs soit les impairs. C'est la même logique de boucle.
Exemple 10 : Table de Multiplication
Objectif
Afficher la table de multiplication d'un nombre donné (par exemple : 5 × 1 = 5, 5 × 2 = 10, etc.).
Algorithme TableMultiplication;
Var
nombre, i, resultat: entier;
Debut
ecrire("Quelle table voulez-vous afficher?");
lire(nombre);
pour i de 1 a 10 faire
resultat <- nombre * i;
ecrire(nombre, "x", i, "=", resultat);
finpour
Fin
Explication ligne par ligne
- Boucle de 1 à 10 : On affiche les 10 premières multiplications
- Calcul du résultat : À chaque tour, on calcule nombre × i
- Affichage formaté : On affiche une ligne complète comme "5 x 3 = 15"
Ce que vous devez retenir
Dans une boucle, on peut faire des calculs différents à chaque tour en utilisant la variable de boucle (ici i).
Exemple 11 : Somme de 10 Nombres
Objectif
Demander 10 nombres à l'utilisateur et calculer leur somme totale. Cela montre comment accumuler des valeurs dans une boucle.
Algorithme Somme10;
Var
i, valeurEntree, somme: entier;
Debut
somme <- 0;
pour i de 1 a 10 faire
ecrire("Entrer un nombre:");
lire(valeurEntree);
somme <- somme + valeurEntree;
finpour
ecrire("La somme est:", somme);
Fin
Explication ligne par ligne
- Initialisation :
somme <- 0 est crucial. On commence à zéro avant d'additionner
- Accumulation :
somme <- somme + valeurEntree signifie "prendre l'ancienne somme et y ajouter le nouveau nombre"
- Répétition : Cette accumulation se fait 10 fois
Ce que vous devez retenir
Pour calculer une somme dans une boucle, il faut toujours initialiser la variable à 0 avant la boucle, puis ajouter chaque nouvelle valeur.
Exemple 12 : Somme de N Nombres
Objectif
Même chose que l'exemple précédent, mais cette fois l'utilisateur choisit combien de nombres il veut additionner.
Algorithme SommeN;
Var
n, i, nombre, somme: entier;
Debut
ecrire("Combien de nombres voulez-vous additionner?");
lire(n);
somme <- 0;
pour i de 1 a n faire
ecrire("Entrez le nombre", i, ":");
lire(nombre);
somme <- somme + nombre;
finpour
ecrire("La somme des", n, "nombres est:", somme);
Fin
Explication ligne par ligne
- Variable n : L'utilisateur décide combien de nombres il va entrer
- Boucle dynamique : La boucle s'adapte automatiquement au nombre n choisi
- Message personnalisé : On affiche "Entrez le nombre 1:", "Entrez le nombre 2:", etc.
Ce que vous devez retenir
La limite d'une boucle pour peut être une variable. Cela rend l'algorithme plus flexible et réutilisable.
Exemple 13 : Mot de Passe
Objectif
Demander un mot de passe et continuer à demander tant que l'utilisateur n'entre pas le bon mot de passe (ici "0000").
Algorithme MotDePasse;
Var
mot : chaine;
Debut
Ecrire("Veuillez saisir le mot de passe :");
lire(mot);
tantque mot != "0000" faire
Ecrire("Mot de passe incorrect. Veuillez réessayer :");
lire(mot);
fintantque
Ecrire("Mot de passe correct. Bienvenue !");
Fin
Explication ligne par ligne
- Première lecture : On demande le mot de passe une première fois avant la boucle
- tantque mot != "0000" : Tant que le mot de passe n'est pas "0000", on continue
- Nouvelle tentative : À chaque tour, on redemande le mot de passe
- Sortie de boucle : Quand l'utilisateur entre "0000", la condition devient fausse et on sort
Ce que vous devez retenir
La boucle tantque est parfaite pour répéter jusqu'à ce qu'une condition soit satisfaite. On ne sait pas à l'avance combien de tentatives l'utilisateur fera.
Exemple 14 : Factorielle
Objectif
Calculer la factorielle d'un nombre. La factorielle de 5 (notée 5!) est 1 × 2 × 3 × 4 × 5 = 120.
Algorithme Factoriel;
Var
n, fact, i: entier;
Debut
ecrire("Entrez un nombre pour calculer sa factorielle:");
lire(n);
fact <- 1;
pour i de 1 a n faire
fact <- fact * i;
finpour
ecrire("La factorielle de", n, "est", fact);
Fin
Explication ligne par ligne
- fact <- 1 : On commence à 1 (pas à 0) car on va multiplier
- Boucle de multiplication : À chaque tour, on multiplie fact par i
- Tour 1 : fact = 1 × 1 = 1
- Tour 2 : fact = 1 × 2 = 2
- Tour 3 : fact = 2 × 3 = 6, etc.
Ce que vous devez retenir
Pour multiplier des valeurs successives, on initialise à 1 (pas à 0). C'est le même principe que la somme, mais avec la multiplication.
Exemple 15 : Recherche du Maximum
Objectif
Trouver le plus grand nombre parmi plusieurs nombres entrés par l'utilisateur. Cela montre comment garder en mémoire la meilleure valeur trouvée jusqu'à présent.
Algorithme RechercheMaximum;
Var
n, nombre, maximum, i: entier;
Debut
ecrire("Combien de nombres voulez-vous comparer?");
lire(n);
ecrire("Entrez le nombre 1:");
lire(nombre);
maximum <- nombre;
i <- 2;
tantque i <= n faire
ecrire("Entrez le nombre", i, ":");
lire(nombre);
si nombre > maximum alors
maximum <- nombre;
finsi
i <- i + 1;
fintantque
ecrire("Le maximum est:", maximum);
Fin
Explication ligne par ligne
- Premier nombre : On lit le premier nombre et on le met directement dans maximum
- Comparaisons suivantes : Pour chaque nouveau nombre, si il est plus grand que maximum, il devient le nouveau maximum
- Incrémentation manuelle : Avec tantque, on doit écrire
i <- i + 1 nous-mêmes
Ce que vous devez retenir
Pour trouver un maximum, on garde toujours en mémoire le plus grand nombre vu jusqu'à présent, et on le met à jour quand on trouve plus grand.
Exemple 16 : Vérification Palindrome
Objectif
Vérifier si un nombre est un palindrome (se lit pareil à l'envers, comme 121, 1331). Cela montre comment manipuler les chiffres d'un nombre.
Algorithme VerificationPalindrome;
Var
nombre, copie, inverse, chiffre: entier;
Debut
ecrire("Entrez un nombre:");
lire(nombre);
copie <- nombre;
inverse <- 0;
tantque copie > 0 faire
chiffre <- copie mod 10;
inverse <- inverse * 10 + chiffre;
copie <- copie div 10;
fintantque
si nombre = inverse alors
ecrire(nombre, "est un palindrome");
sinon
ecrire(nombre, "n'est pas un palindrome");
finsi
Fin
Explication ligne par ligne
- copie mod 10 : Récupère le dernier chiffre (exemple : 123 mod 10 = 3)
- inverse × 10 + chiffre : Construit le nombre inversé chiffre par chiffre
- copie div 10 : Enlève le dernier chiffre (exemple : 123 div 10 = 12)
- Comparaison finale : Si nombre = inverse, c'est un palindrome
Ce que vous devez retenir
L'opérateur mod donne le reste de la division (utile pour obtenir le dernier chiffre). L'opérateur div donne la division entière (utile pour enlever le dernier chiffre).
Exemple 17 : Décimal vers Binaire
Objectif
Convertir un nombre décimal (base 10) en binaire (base 2). Par exemple, 5 en décimal = 101 en binaire.
Algorithme DecimalVersBinaire;
Var
nombreDecimal, binaire, reste, multiplicateur: entier;
Debut
ecrire("Entrez un nombre entier en base décimale:");
lire(nombreDecimal);
binaire <- 0;
multiplicateur <- 1;
tantque nombreDecimal <> 0 faire
reste <- nombreDecimal mod 2;
binaire <- binaire + (reste * multiplicateur);
nombreDecimal <- nombreDecimal div 2;
multiplicateur <- multiplicateur * 10;
fintantque
ecrire("Représentation binaire:", binaire);
Fin
Explication ligne par ligne
- mod 2 : Donne 0 ou 1 (le reste quand on divise par 2)
- div 2 : Divise par 2 en enlevant la partie décimale
- multiplicateur : Permet de placer chaque chiffre binaire à la bonne position (unités, dizaines, centaines)
Ce que vous devez retenir
La conversion de base utilise des divisions successives. On récupère les restes et on les assemble dans l'ordre inverse.
Exemple 18 : Mot de Passe avec 3 Essais
Objectif
Demander un mot de passe mais limiter à 3 tentatives maximum. Si l'utilisateur échoue 3 fois, l'accès est refusé.
Algorithme MotDePasse;
Var
mot : chaine;
essai : entier;
Debut
essai <- 1;
tantque essai <= 3 et mot != "0000" faire
Ecrire("Entrez le mot de passe :");
lire(mot);
si mot != "0000" alors
Ecrire("Mot de passe incorrect.");
finsi
essai <- essai + 1;
fintantque
si mot = "0000" alors
Ecrire("Accès autorisé.");
sinon
Ecrire("Accès refusé.");
finsi
Fin
Explication ligne par ligne
- Double condition :
essai <= 3 et mot != "0000" signifie qu'on continue SI on a encore des essais ET que le mot de passe n'est pas bon
- Compteur d'essais : On incrémente essai à chaque tentative
- Vérification finale : Après la boucle, on vérifie si c'est le bon mot de passe ou si on a épuisé les essais
Ce que vous devez retenir
On peut combiner plusieurs conditions avec et. Les deux doivent être vraies pour continuer la boucle.
Exemple 19 : Suite de Fibonacci
Objectif
Générer les n premiers termes de la suite de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13...). Chaque terme est la somme des deux précédents.
Algorithme SuiteFibonacci;
Var
n, i, a, b, c: entier;
Debut
ecrire("Combien de termes de la suite de Fibonacci voulez-vous?");
lire(n);
ecrire("Suite de Fibonacci:");
si n >= 1 alors
ecrire(0);
finsi
si n >= 2 alors
ecrire(1);
finsi
a <- 0;
b <- 1;
pour i de 3 a n faire
c <- a + b;
ecrire(c);
a <- b;
b <- c;
finpour
Fin
Explication ligne par ligne
- Cas spéciaux : Les deux premiers termes (0 et 1) sont affichés directement
- Variables glissantes : a et b représentent les deux termes précédents
- Calcul : c = a + b donne le nouveau terme
- Glissement : Après chaque tour, on décale : a devient b, et b devient c
Ce que vous devez retenir
Pour une suite où chaque terme dépend des précédents, on garde en mémoire les valeurs nécessaires et on les met à jour à chaque tour.
Exemple 20 : PGCD (Plus Grand Commun Diviseur)
Objectif
Calculer le PGCD de deux nombres en utilisant l'algorithme d'Euclide. C'est un algorithme mathématique célèbre.
Algorithme CalculPGCD;
Var
a, b, r: entier;
Debut
ecrire("Entrez le premier nombre:");
lire(a);
ecrire("Entrez le deuxième nombre:");
lire(b);
si a < b alors
r <- a;
a <- b;
b <- r;
finsi
tantque b <> 0 faire
r <- a mod b;
a <- b;
b <- r;
fintantque
ecrire("Le PGCD est:", a);
Fin
Explication ligne par ligne
- Échange : Si a < b, on échange leurs valeurs pour que a soit toujours le plus grand
- Algorithme d'Euclide : On remplace a par b, et b par le reste de a/b
- Arrêt : Quand b devient 0, le PGCD est dans a
Ce que vous devez retenir
Certains algorithmes mathématiques utilisent des boucles avec des remplacements de valeurs. C'est une technique puissante pour résoudre des problèmes complexes.
Exemple 21 : Équation du 2nd Degré
Objectif
Résoudre une équation du type ax² + bx + c = 0 en utilisant le discriminant (Δ = b² - 4ac).
Algorithme EquationSecondDegre;
Var
a, b, c, delta, x1, x2: reel;
Debut
ecrire("Résolution de l'équation ax² + bx + c = 0");
ecrire("Entrez la valeur de a:");
lire(a);
ecrire("Entrez la valeur de b:");
lire(b);
ecrire("Entrez la valeur de c:");
lire(c);
si a = 0 alors
si b = 0 alors
si c = 0 alors
ecrire("L'équation admet une infinité de solutions");
sinon
ecrire("L'équation n'admet pas de solution");
finsi
sinon
x1 <- -c / b;
ecrire("L'équation est du premier degré, la solution est x =", x1);
finsi
sinon
delta <- b * b - 4 * a * c;
si delta < 0 alors
ecrire("L'équation n'admet pas de solution réelle");
sinon
si delta = 0 alors
x1 <- -b / (2 * a);
ecrire("L'équation admet une solution double: x =", x1);
sinon
x1 <- (-b - racine(delta)) / (2 * a);
x2 <- (-b + racine(delta)) / (2 * a);
ecrire("L'équation admet deux solutions:");
ecrire("x1 =", x1);
ecrire("x2 =", x2);
finsi
finsi
finsi
Fin
Explication ligne par ligne
- Cas a = 0 : Ce n'est plus du 2nd degré, on traite les cas spéciaux
- Calcul du delta : Δ = b² - 4ac
- Cas Δ < 0 : Pas de solution réelle
- Cas Δ = 0 : Une solution double
- Cas Δ > 0 : Deux solutions distinctes calculées avec la formule classique
- racine() : Fonction qui calcule la racine carrée
Ce que vous devez retenir
Les problèmes mathématiques ont souvent plusieurs cas à traiter. On utilise des conditions imbriquées pour gérer chaque cas correctement. AlgoFX fournit la fonction racine() pour la racine carrée.
Exemple 22 : PPCM (Plus Petit Commun Multiple)
Objectif
Calculer le PPCM de deux nombres. Le PPCM utilise le PGCD : PPCM(a,b) = (a × b) / PGCD(a,b).
Algorithme CalculPPCM;
Var
a, b, pgcd, ppcm: entier;
temp_a, temp_b, r: entier;
Debut
ecrire("Entrez le premier nombre:");
lire(a);
ecrire("Entrez le deuxième nombre:");
lire(b);
temp_a <- a;
temp_b <- b;
si a < b alors
r <- a;
a <- b;
b <- r;
finsi
tantque b <> 0 faire
r <- a mod b;
a <- b;
b <- r;
fintantque
pgcd <- a;
ppcm <- (temp_a * temp_b) / pgcd;
ecrire("Le PPCM est:", ppcm);
Fin
Explication ligne par ligne
- Sauvegarde : On garde les valeurs originales dans temp_a et temp_b car l'algorithme du PGCD modifie a et b
- Calcul du PGCD : Même algorithme que l'exemple 20
- Formule PPCM : On utilise la formule mathématique (a × b) / PGCD
Ce que vous devez retenir
Quand un algorithme modifie des variables mais qu'on a besoin des valeurs originales plus tard, on les sauvegarde dans des variables temporaires.
Exemple 23 : Nombres Premiers
Objectif
Afficher tous les nombres premiers jusqu'à n. Un nombre premier n'est divisible que par 1 et lui-même. Cela montre comment utiliser des boucles imbriquées et l'instruction sortir.
Algorithme NombresPremiers;
var
n, i, j, temp: entier;
estPremier: booleen;
debut
ecrire("Entrez la limite N:");
lire(n);
ecrire("Nombres premiers jusqu'à", n, ":");
pour i de 2 a n faire
estPremier <- vrai;
pour j de 2 a i-1 faire
temp <- i mod j;
si temp = 0 alors
estPremier <- faux;
sortir;
finsi
finpour
si estPremier = vrai alors
ecrire(i);
finsi
finpour
Fin
Explication ligne par ligne
- Boucle externe : Teste chaque nombre i de 2 à n
- Variable booléenne : estPremier commence à vrai pour chaque nombre
- Boucle interne : Teste si i est divisible par un nombre j entre 2 et i-1
- Test de divisibilité : Si i mod j = 0, alors i est divisible par j, donc pas premier
- sortir : Dès qu'on trouve un diviseur, inutile de continuer, on sort de la boucle interne
- Affichage : Si après tous les tests estPremier est toujours vrai, on affiche le nombre
Ce que vous devez retenir
Les boucles imbriquées (une boucle dans une autre) permettent de tester toutes les combinaisons. L'instruction sortir optimise en évitant des tests inutiles. Les variables booléennes sont pratiques pour garder un état (vrai/faux) pendant les tests.
10. Conseils pour progresser
Comment s'entraîner efficacement
1. Commencez petit
Ne cherchez pas à écrire des algorithmes complexes dès le début. Commencez par des choses simples : afficher du texte, faire une addition, demander un nom. Une fois que vous maîtrisez les bases, passez à des problèmes plus difficiles.
2. Tapez vous-même les exemples
Ne vous contentez pas de lire les exemples. Tapez-les dans AlgoFX, exécutez-les, modifiez-les. Changez les valeurs, ajoutez des instructions, cassez le code et réparez-le. C'est en faisant qu'on apprend vraiment.
3. Utilisez le mode pas à pas
Pour chaque exemple, exécutez-le en mode pas à pas au moins une fois. Observez comment les variables changent. Essayez de prédire ce qui va se passer à la prochaine ligne avant de cliquer sur "Suivant".
4. Modifiez les exemples
Prenez un exemple qui fonctionne et posez-vous des questions : "Et si je voulais afficher aussi le périmètre ?", "Et si je voulais demander 5 nombres au lieu de 3 ?", "Et si je voulais que la boucle compte à l'envers ?". Puis essayez de le faire.
5. Résolvez vos propres problèmes
Inventez vos propres exercices. Par exemple :
- Calculer le prix TTC d'un produit (prix HT + TVA)
- Convertir des kilomètres en miles
- Afficher votre âge dans 10 ans
- Calculer combien de jours il y a dans n semaines
Comment corriger ses erreurs
Lisez le message d'erreur
AlgoFX vous dit toujours où est le problème. Lisez attentivement le message. Il vous indique souvent la ligne exacte et ce qui ne va pas.
Utilisez le bouton Compiler
Avant d'exécuter, cliquez sur "⚙️ Compiler" pour vérifier qu'il n'y a pas d'erreurs de syntaxe. C'est plus rapide que d'exécuter pour découvrir une faute de frappe.
Comparez avec un exemple qui fonctionne
Si votre algorithme ne marche pas, comparez-le avec un exemple similaire dans cette aide. Regardez les différences : avez-vous oublié un finsi ? Avez-vous mis = au lieu de <- ?
Simplifiez pour isoler le problème
Si votre algorithme est compliqué et ne fonctionne pas, commentez (avec //) la moitié du code pour voir quelle partie pose problème. Ou créez une version plus simple qui teste juste la partie suspecte.
Vérifiez vos variables
Utilisez le tableau des variables en mode pas à pas. Souvent, une erreur vient d'une variable qui contient une valeur inattendue. Si vous voyez que somme vaut 0 alors qu'elle devrait valoir 15, vous savez où chercher.
Comment penser comme un algorithme
Décomposez le problème
Avant d'écrire une seule ligne de code, décrivez le problème en français simple. Par exemple, pour calculer une moyenne :
- Demander combien de notes
- Demander chaque note et les additionner
- Diviser la somme par le nombre de notes
- Afficher le résultat
Une fois que vous avez ces étapes, transformez chacune en code.
Soyez précis
L'ordinateur fait exactement ce que vous lui dites, pas ce que vous voulez. Si vous écrivez si age > 18, cela exclut 18. Si vous voulez inclure 18, écrivez si age >= 18. Chaque détail compte.
Testez avec des exemples
Avant d'exécuter votre algorithme, testez-le mentalement avec des valeurs simples. Si vous calculez une moyenne de 10, 20, 30, vous savez que le résultat doit être 20. Si votre algorithme affiche 60, vous savez qu'il y a un problème.
Une chose à la fois
N'essayez pas de tout faire en même temps. Écrivez d'abord l'algorithme qui lit les valeurs et les affiche. Une fois que ça marche, ajoutez le calcul. Une fois que ça marche, ajoutez les conditions. Construisez progressivement.
Derniers conseils
La pratique régulière : Faites un peu d'algorithmes chaque jour plutôt que beaucoup une fois par semaine. Même 15 minutes par jour sont plus efficaces que 2 heures le dimanche.
Ne copiez pas bêtement : Quand vous regardez un exemple, ne le copiez pas sans comprendre. Lisez chaque ligne, demandez-vous pourquoi elle est là, puis tapez-la en comprenant son rôle.
L'erreur est normale : Tous les programmeurs font des erreurs. Les débutants en font plus, c'est normal. Chaque erreur corrigée vous rend meilleur. Ne vous découragez pas.
Amusez-vous : Les algorithmes peuvent être créatifs et amusants. Créez un jeu de devinette, un calculateur d'IMC, un convertisseur de devises. Si vous vous amusez, vous apprendrez sans effort.
Prochaines étapes
Une fois que vous maîtrisez bien AlgoFX, vous serez prêt à apprendre un vrai langage de programmation comme Python, JavaScript, ou Java. Vous verrez que la logique est exactement la même. Tout ce que vous apprenez maintenant avec AlgoFX vous servira pour toute votre vie de programmeur.
Bon courage, et surtout, prenez plaisir à créer vos premiers algorithmes !