← algo
TD 1 · Algorithmique II

Fonctions & Procédures

Découper un problème en actions paramétrées. Une fonction renvoie une seule valeur via son nom ; une procédure peut en ressortir plusieurs grâce au passage VAR. Lancez chaque animation pour voir les variables évoluer.

Exercice 1
★★

Compter les entiers pairs

Boucle à sentinelle (-1) et pourcentage

Énoncé

Lire une liste d'entiers terminée par -1, puis afficher le nombre d'entiers pairs et leur pourcentage parmi les entiers donnés.

Le ruban d'entiers lus
4
7
10
3
8
6
-1
nbTotal
0
nbPairs
0
pourcentage
pairs
Procédure ComptePairs
1Procédure ComptePairs()
2 nbPairs ← 0
3 nbTotal ← 0
4 Lire(n)
5 TantQue n ≠ -1 faire
6 nbTotal ← nbTotal + 1
7 Si n mod 2 = 0 alors
8 nbPairs ← nbPairs + 1
9 FinSi
10 Lire(n)
11 FinTantQue
12 pourcentage ← nbPairs × 100 / nbTotal
13 Écrire(nbPairs, pourcentage)
14FIN
01 / 34
Initialisation : nbPairs ← 0
À retenir

La valeur -1 est une sentinelle : elle arrête la saisie sans être comptée. Le test nbTotal > 0 évite la division par zéro, et on multiplie par 100 avant de diviser pour garder la précision.

Exercice 2
★★

Six actions paramétrées

Somme · factorielle · divisibilité · division entière · voyelle · permutation

Énoncé

Écrire les actions paramétrées résolvant : somme de deux entiers, factorielle, « A divise B ? », quotient & reste de la division entière, « caractère voyelle ? », et permutation de deux réels. Choisissez un onglet.

2×3×4×5=1
i
f
1
01 / 10
f ← 1 (élément neutre du produit)
Fonction Factorielle
1Fonction Factorielle(n) : entier
2 f ← 1
3 Pour i de 2 à n faire
4 f ← f × i
5 FinPour
6 Factorielle ← f
7FIN
À retenir

Quand un seul résultat sort, une fonction suffit (somme, factorielle…). Quand plusieurs sortent (quotient et reste, ou l'échange de deux variables), il faut une procédure avec VAR.

Exercice 3
★★

Carré parfait

Chercher i tel que i × i = x, sans racine carrée

Énoncé

Vérifier si un entier x est un carré parfait avec seulement les opérateurs de base, et renvoyer sa racine le cas échéant. Indication : x est un carré parfait s'il existe un entier i tel que x = i × i.

Aire i × i comparée à x = 36
0² = 0
cible x = 36
i² ≤ x : on agrandit
Fonction EstCarreParfait
1Fonction EstCarreParfait(x) : booléen
2 trouve ← Faux
3 i ← 0
4 TantQue i×i ≤ x ET NON trouve faire
5 Si i×i = x alors
6 trouve ← Vrai
7 FinSi
8 i ← i + 1
9 FinTantQue
10 EstCarreParfait ← trouve
11FIN
01 / 26
trouve ← Faux
À retenir

On fait croître i tant que i×i ≤ x. La procédure renvoie deux informations (booléen et racine) via VAR ; la fonction n'en renvoie qu'une — exactement la définition du cours.

Exercice 4
★★

Table de multiplication & boucle Répéter

Réutiliser des actions : TableMultiplication + EstOui

Énoncé

Écrire une action qui affiche la table de multiplication (1 à 9) d'un entier, puis un algorithme qui réaffiche des tables tant que l'utilisateur le souhaite (réponse « o/O »).

Table de 7
7 × 1=
7 × 2=
7 × 3=
7 × 4=
7 × 5=
7 × 6=
7 × 7=
7 × 8=
7 × 9=
01 / 10
On va dérouler la table de 1 à 9
Boucle « tant que l'utilisateur veut »
Répéter
TableMultiplication(n)
Lire(reponse)
EstOui(reponse) ?
↺ Vrai (o/O)
on recommence
✕ Faux
FIN

Répéter … TantQue(condition) exécute le corps au moins une fois.

À retenir

On compose deux actions déjà écrites. La structure Répéter … TantQue(EstOui(reponse)) garantit au moins un affichage, puis recommence tant que la réponse est « oui ».

Exercice 5
★★

Décimal → binaire

Méthode des restes successifs de la division par 2

Énoncé

Écrire une fonction BIN qui convertit un entier positif du décimal vers le binaire — renvoyé comme un entier dont les chiffres lus en décimal forment la représentation binaire.

L'échelle des divisions par 2
nn mod 2n div 2
13= 16
6= 03
3= 11
1= 10
binaire = 0
Fonction BIN
1Fonction BIN(n) : entier
2 binaire ← 0 ; puissance ← 1
3 TantQue n > 0 faire
4 reste ← n mod 2
5 binaire ← binaire + reste × puissance
6 puissance ← puissance × 10
7 n ← n div 2
8 FinTantQue
9 BIN ← binaire
10FIN
01 / 19
binaire ← 0, puissance ← 1

Les restes sortent du bit de poids faible vers le poids fort : on les empile donc à gauche.

À retenir

On divise par 2 et on garde les restes. Comme ils sortent du bit de poids faible au poids fort, on les place de droite à gauche. puissance (1, 10, 100…) sert à empiler chaque chiffre binaire au bon rang dans l'entier résultat.