Partie A : Syntaxe d’algorithme (5 points)
A.1 Définitions :
- Algorithmique : Science de l’organisation des séquences d’instructions pour résoudre un problème;
- Procédure : Un bloc d’instructions nommé qui exécute une tâche spécifique sans obligatoirement renvoyer une valeur au programme principal;
- Tableau : Structure de données permettant de stocker plusieurs valeurs de même type dans une seule variable indexée;
- Enregistrement : Type de donnée personnalisé qui regroupe plusieurs informations (champs) de types différents sous un seul nom;
A.2 Syntaxe TantQue :
TantQue <condition> Faire;
<instructions>;
FinTantQue;
A.3 Syntaxe Si :
Si <condition> Alors;
<instructions>;
Sinon;
<instructions>;
FinSi;
Partie B : Écriture d’algorithmes (7 points)
B1. Algorithme des mentions
Algorithme Calcul_Mention;
Variables
note : Réel;
Début
Ecrire("Veuillez saisir la note : ");
Lire(note);
Si (note < 0 OU note > 20) Alors;
Ecrire("Erreur : La note doit être entre 0 et 20;");
SinonSi (note < 10) Alors;
Ecrire("Mention : Insuffisant;");
SinonSi (note < 12) Alors;
Ecrire("Mention : Passable;");
SinonSi (note < 14) Alors;
Ecrire("Mention : Assez bien;");
SinonSi (note < 16) Alors;
Ecrire("Mention : Bien;");
Sinon;
Ecrire("Mention : Très bien;");
FinSi;
Fin.
Explication : Cet algorithme utilise une structure conditionnelle imbriquée (Si...SinonSi). On vérifie d’abord si la note est valide (entre 0 et 20). Ensuite, on teste les paliers du plus petit au plus grand. Dès qu’une condition est vraie, l’algorithme affiche la mention et s’arrête.
B2. Algorithme de contrôle de saisie (Boucle Jusqu’à)
Algorithme Saisie_1_3;
Variables
n : Entier;
Début
Répéter;
Ecrire("Entrez un nombre compris entre 1 et 3 : ");
Lire(n);
Si (n < 1 OU n > 3) Alors;
Ecrire("Réponse incorrecte, recommencez;");
FinSi;
Jusqu'à (n >= 1 ET n <= 3);
Ecrire("Merci, vous avez saisi : ", n);
Fin.
Explication : On utilise ici une boucle Répéter...Jusqu'à. Elle garantit que l’utilisateur saisira au moins une fois un nombre. La boucle tourne “tant que” la réponse ne convient pas (donc elle s’arrête “jusqu’à” ce que le nombre soit 1, 2 ou 3).
B3. Recherche des occurrences dans un tableau
Algorithme Chercher_Occurrences;
Variables
T : Tableau[1..50] d'Entiers;
valeur, i, taille : Entier;
Début
Ecrire("Entrez le nombre d'éléments du tableau : ");
Lire(taille);
Ecrire("Entrez la valeur à rechercher : ");
Lire(valeur);
Pour i de 1 à taille Faire;
Si (T[i] = valeur) Alors;
Ecrire("Valeur trouvée à l'indice : ", i);
FinSi;
FinPour;
Fin.
Explication : Pour trouver toutes les occurrences, on doit obligatoirement parcourir le tableau du début à la fin avec une boucle Pour. Si l’élément à l’indice i (T[i]) correspond à la valeur cherchée, on affiche sa position.
Partie C : Structures de données avancées (8 points)
C.1 & C.2 Déclaration des types Enregistrements
Type Activite = Enregistrement;
type_activite : Chaîne; // "fonctionnaire", "salarié privé", "libérale"
revenu_annuel : Réel;
FinEnregistrement;
Type Actif = Enregistrement;
diplome : Chaîne;
anciennete : Entier; // durée sur le marché du travail
infos : Activite; // On utilise l'enregistrement Activite ici
FinEnregistrement;
Explication : Ici, on définit des types “sur mesure”. Actif est un enregistrement complexe car l’un de ses champs (infos) est lui-même un enregistrement (Activite). C’est ce qu’on appelle l’imbrication.
C.3 Fonction Compter Fonctionnaires
Fonction Compter_Anciens_Fonctionnaires(T : Tableau d'Actifs, n : Entier, nb_elem : Entier) : Entier;
Variables
i, compteur : Entier;
Début
compteur <- 0;
Pour i de 1 à nb_elem Faire;
// Accès imbriqué : T[i] (l'actif) -> infos (son activité) -> type_activite
Si (T[i].infos.type_activite = "fonctionnaire" ET T[i].anciennete > n) Alors;
compteur <- compteur + 1;
FinSi;
FinPour;
Retourner compteur;
Fin;
Explication : Cette fonction parcourt un tableau de structures. Pour accéder au type d’activité d’un actif, on utilise le point (.) successivement. On vérifie deux critères simultanément avec l’opérateur ET.
C.4 Fonction Majorité Fonctionnaire
Fonction Est_Majorite_Fonctionnaire(T : Tableau d'Actifs, diplome_recherche : Chaîne, nb_elem : Entier) : Booleen;
Variables
i, f, nf : Entier;
Début
f <- 0; // Compteur fonctionnaires
nf <- 0; // Compteur non-fonctionnaires
Pour i de 1 à nb_elem Faire;
Si (T[i].diplome = diplome_recherche) Alors;
Si (T[i].infos.type_activite = "fonctionnaire") Alors;
f <- f + 1;
Sinon;
nf <- nf + 1;
FinSi;
FinSi;
FinPour;
Retourner (f > nf); // Renvoie Vrai si f > nf, sinon Faux
Fin;
Explication : On utilise deux compteurs. On filtre d’abord par diplôme. Ensuite, on sépare les fonctionnaires des autres (secteur concurrentiel). Enfin, on compare les deux totaux pour renvoyer un résultat de type Booleen.
Guide de l’Expert : Tableaux et Enregistrements
1. Le Tableau (Structure Homogène)
- Déclaration : On définit le nom, l’intervalle des indices et le type.
- Exemple :
Variable T : Tableau[1..10] d'Entiers;
- Exemple :
- Utilisation : On utilise l’indice entre crochets pour lire ou écrire.
- Ecriture :
T[5] <- 20;(met 20 dans la 5ème case). - Lecture :
Si (T[i] > 10)...
- Ecriture :
2. L’Enregistrement (Structure Hétérogène)
- Déclaration : Se fait généralement dans une section
Typeavant les variables.Type Etudiant = Enregistrement; nom : Chaîne; age : Entier; FinEnregistrement; - Utilisation : On déclare une variable de ce nouveau type :
Variable e1 : Etudiant; - Accès aux champs : On utilise l’opérateur point (.).
- Exemple :
e1.nom <- "Jean";ouLire(e1.age);
- Exemple :
3. Tableau d’Enregistrements (Le plus puissant)
C’est ce qui est utilisé dans la Partie C. Chaque case du tableau contient un enregistrement complet.
- Accès :
Tableau[indice].Champ - Exemple :
T[i].diplomeaccède au diplôme de la personne située à la positioni. - Imbrication : Si un champ est lui-même un enregistrement :
T[i].infos.revenu_annuel. On part du général (le tableau) pour aller vers le très précis (le champ de l’enregistrement imbriqué).
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur Partie A : Syntaxe d'algorithme (5 points). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.