Aller au contenu principal
BacInfo

Ch. 04 · Leçon 1

Les structures de contrôle itératives complètes

75 minanalyse · pascal

Ce que vous saurez faire

  • Identifier une définition itérative complète
  • Utiliser la boucle Pour en parcours croissant et décroissant
  • Traduire une boucle Pour de l'algorithmique au Pascal
  • Tracer l'exécution d'une boucle Pour
  • Appliquer la boucle Pour sur les tableaux et les chaînes

id: 33-209-structures-iteratives-completes slug: 33-209-structures-iteratives-completes titre: Les structures de contrôle itératives complètes chapitre: 4 chapitre_titre: Les structures de contrôle itératives lecon: 1 niveau: 4eme-sci ordre: 1 prerequis: [] duree_estimee_min: 75 mots_cles:

  • boucle pour
  • iteration
  • compteur
  • parcours croissant
  • parcours decroissant
  • tableau
  • pascal langages:
  • analyse
  • pascal objectifs:
  • Identifier une définition itérative complète
  • Utiliser la boucle Pour en parcours croissant et décroissant
  • Traduire une boucle Pour de l'algorithmique au Pascal
  • Tracer l'exécution d'une boucle Pour
  • Appliquer la boucle Pour sur les tableaux et les chaînes status: published source_pdf: 33_209.pdf source_pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9 kind: cours

I. Définition itérative complète

1. Parcours croissant

Vocabulaire et syntaxe :

[Init] Pour c de 1 à n faire
    Instruction 1
    Instruction 2
    ...
    Instruction p
FinPour

R : la répétition de p instructions (n fois), n nombre de répétitions.

2. Parcours décroissant

L'avancement du compteur se fait par un pas = -1.

[inst1, inst2, ...instm]
Pour i de n à 1 (pas=-1) faire
    Instruction 1
    Instruction 2
    ...
    Instruction p
FinPour

Décrémentation automatique du compteur (passage au prédécesseur de la valeur en cours).

II. Activités d'introduction

Afficher le message « Bonjour » 10 fois

Pour i de 1 à 10 faire
    écrire("Bonjour")
FinPour

Afficher les entiers de 1 à 10

Pour i de 1 à 10 faire
    écrire(i)
FinPour

Afficher les entiers de 1 à 10 en ordre inverse

Pour i de 10 à 1 (pas=-1) faire
    écrire(i)
FinPour

Afficher les lettres de A à K

Pour i de "A" à "K" faire
    écrire(i)
FinPour

III. Exercices résolus

Exercice 1
Somme de 5 réels

Écrire un programme qui permet de faire la somme de 5 réels.

Voir le corrigé

Algorithme :

0) Début Somme
1) [S ← 0] pour i de 1 à 5 faire
       Ecrire("Donner un réel : "), lire(x)
       S ← S + x
   FinPour
2) Ecrire("La somme est ", S)
3) Fin Somme

Tableau de déclaration des objets :

ObjetType/NatureRôle
iEntierCompteur
xRéelRéels à saisir
SRéelSomme des réels

Trace d'exécution (avec S initialisé à 0) :

Trace d'exécution
0 / 6
InstructionixS
01···???
02···???
03···???
04···???
05···???
06···???

Traduction en Pascal :

program somme;
uses wincrt;
var
    x, s : real;
    i : integer;
begin
    s := 0;
    for i:=1 to 5 do
    begin
        write(' Donner un réel : ');
        readln(x);
        s := s + x;
    end;
    writeln('La somme est ', s:5:2);
End.
Exercice 2
Factoriel d'un entier

Écrire un programme qui permet de calculer le factoriel d'un entier n donné.

Exemples : 3! = 1 × 2 × 3 = 6 ; 6! = 1 × 2 × 3 × 4 × 5 × 6 = 720.

Voir le corrigé

Algorithme :

0) Début Factoriel
1) Ecrire("Donner un entier"), lire(n)
2) [f ← 1] pour i de 2 à n faire
       f ← f * i
   FinPour
3) Ecrire("Le factoriel est ", f)
4) Fin Factoriel

Trace d'exécution (pour n = 6) :

Trace d'exécution
0 / 6
Instructionif
01···??
02···??
03···??
04···??
05···??
06···??

Traduction en Pascal :

program factoriel;
uses wincrt;
var
    i, n : integer;
    f : longint;
begin
    write(' Donner un entier : ');
    readln(n);
    f := 1;
    for i:=2 to n do
        f := f * i;
    writeln('Le factoriel est ', f);
End.
Exercice 4
Table de multiplication

Écrire un programme qui permet d'afficher la table de multiplication d'un entier donné n.

Exemple pour n = 8 :

Table de multiplication pour : 8
1 x 8 = 8
2 x 8 = 16
3 x 8 = 24
...
10 x 8 = 80
Voir le corrigé
program multiplication;
uses wincrt;
var i, n : integer;
begin
    Writeln('Donner un entier=');
    readln(n);
    Writeln('Table de multiplication pour ', n);
    for i:=1 to 10 do
        writeln(i, ' x ', n, '= ', i*n);
end.
Exercice 5
Puissance d'un nombre

Écrire un programme qui permet d'afficher un nombre x à la puissance n (avec x et n à saisir).

Exemple : x = 5, n = 3 donne p = x^n = 5³ = 5×5×5 = 125.

Voir le corrigé
program puissance;
uses wincrt;
var n, x, p, i : integer;
begin
    write('donner x= '); readln(x);
    write('donner n= '); readln(n);
    p := 1;
    for i:=1 to n do
        p := p * x;
    writeln(x, ' à la puissace ', n, ' = ', p);
end.
Exercice 7
Conversion majuscule → minuscule

Écrire un programme qui permet de saisir un mot en majuscule puis de le convertir en minuscule sauf le premier caractère, puis l'affiche.

Voir le corrigé
0) Début conversion
1) Ecrire("Donner un mot en majuscule"),
   lire(mot)
2) Pour i de 2 à long(mot) faire
       Mot[i] ← chr( ord(mot[i])+32 )
   FinPour
3) Ecrire("Le mot après conversion", mot)
4) Fin Conversion

T.D.O :

ObjetType/NatureRôle
MotChaîneChaîne à saisir
iEntierCompteur
Exercice 8
Nombre d'occurrences d'une lettre

Écrire un programme qui permet de saisir une chaîne Ch puis une lettre L, ensuite calcule et affiche le nombre d'occurrences de L dans Ch.

Voir le corrigé
Program occurrence;
uses wincrt;
var i, occ : integer;
    ch : string;
    L : char;
begin
    writeln('Donner un mot'); readln(Ch);
    writeln('donner une lettre'); readln(L);
    occ := 0;
    for i:=1 to length(Ch) do
        if ch[i] = L then occ := occ + 1;
    writeln('Le nombre d''occurrence est ', occ);
end.
Exercice 14
Vérifier si un entier est premier

Écrire un programme qui permet de vérifier si un entier nb est premier.

Rappel : Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs (1 et lui-même). Cette définition exclut 1 et 0.

Exemples : les nombres premiers inférieurs à 100 sont : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 et 97.

Voir le corrigé

Algorithme :

0) Début nombre_premier
1) Écrire("Donner un entier"), lire(n)
2) [nb ← 0] pour i de 1 à n faire
       Si n mod i = 0 Alors nb ← nb + 1
       FinSi
   FinPour
3) Si nb = 2 alors Écrire("Premier")
              sinon Écrire("Non premier")
   FinSi
4) Fin nombre_premier

T.D.O :

ObjetType/NatureRôle
iEntierCompteur
nbEntierNombre de diviseurs de n
nEntierNombre à vérifier

Pascal :

Program nombre_premier;
uses wincrt;
var i, n, nb : integer;
begin
    Writeln('Donner un entier = ');
    Readln(n);
    nb := 0;
    for i:=1 to n do
        if n mod i = 0 then nb := nb + 1;

    if nb = 2 then Writeln('Premier')
              else Write('Non premier');
end.
Exercice 15
Tous les nombres premiers entre 1 et 100

Écrire un programme qui permet d'afficher tous les entiers premiers entre 1 et 100.

Voir le corrigé
program nombre_premier2;
uses wincrt;
var i, nb, n : integer;
begin
    for n:=1 to 100 do
    begin
        nb := 0;
        for i:=1 to n do
            if n mod i = 0 then nb := nb + 1;

        if nb = 2 then Writeln(n);
    end;
end.

IV. Rappel : les tableaux

Remplissage d'un tableau :

Pour i de 1 à n faire
    Écrire("donner l'élément n° ", i), lire(T[i])
FinPour

Affichage des éléments d'un tableau :

Pour i de 1 à n faire
    Écrire(" l'élément n° ", i, " est ", T[i])
FinPour

Déclaration d'un tableau en Pascal :

Var t : array [1..20] of integer;

ou bien (en utilisant Type) :

Type
    Tab = array[1..20] of integer;
Var
    t : tab;
Exercice 9
Remplissage et affichage d'un tableau

Remplissage et affichage d'un tableau d'entiers de taille n à saisir.

Voir le corrigé
program tableau;
uses wincrt;
var t : array[1..20] of integer;
    i, n : integer;
Begin
    Writeln('Donner la taille du tableau');
    Readln(n);
    For i:=1 to n do
    Begin
        Writeln('Donner l''élément n°', i);
        Readln(t[i]);
    End;
    For i:=1 to n do
        Writeln('l''élément n°', i, ' est ', t[i]);
End.
Exercice 10
Maximum d'un tableau

Écrire un programme qui permet de remplir un tableau T par n entiers puis détermine le maximum de ce tableau.

Voir le corrigé

Analyse :

Nom : Maximum
Résultat = Ecrire("Le maximum est ", max)
Max = [max ← T[1]] Pour i de 2 à n faire
          Si T[i] > max alors max ← T[i]
          FinSi
      FinPour
T = Pour i de 1 à n faire
        T[i] = Donnée("Donner l'entier n°", i)
    FinPour
n = Donnée("Donner le nombre d'entiers : ")
Fin Maximum

T.D.O :

ObjetType/NatureRôle
TTableau de 20 entiersTableau d'entiers
iEntierCompteur
maxEntierLe max du tableau

Algorithme :

0) Début Maximum
1) Ecrire("Donner le nombre d'entiers : "), lire(n)
2) Pour i de 1 à n faire
       Ecrire("Donner l'entier n°", i), lire(T[i])
   FinPour
3) max ← T[1]
4) Pour i de 2 à n faire
       Si T[i] > max alors max ← T[i]
       FinSi
   FinPour
5) Ecrire("Le maximum est ", max)
6) Fin Maximum

Programme Pascal :

program maximum;
uses wincrt;
type
    tab = Array [1..20] of integer;
var
    t : tab;
    n, i, max : integer;
begin
    writeln('Donner le nombre d''entiers :');
    readln(n);

    for i:=1 to n do
    begin
        writeln('Donner l''entier n°', i);
        readln(T[i]);
    end;

    max := T[1];
    for i:=2 to n do
        if t[i] > max then max := T[i];

    writeln('Le maximum est ', max);
end.

Activité 1 : Ajouter un contrôle de saisie sur n (la taille du tableau) pour que la valeur de n soit dans l'intervalle [1..20].

répéter
    Ecrire("Donner le nombre d'entiers : ")
    Lire(n)
jusqu'à n dans [1..20]
Vérification des acquis

Quiz : boucles et structures itératives

Vérifiez que vous savez choisir et écrire la bonne boucle pour chaque situation.

Quiz (6 questions)

1

Quelle boucle utiliser quand le **nombre de répétitions est connu d'avance** ?

2

Différence essentielle entre `Tant que` et `Répéter … Jusqu'à` :

3

Que vaut `s` après ce code ? ``` s ← 0 Pour i de 1 à 4 Faire s ← s + i FinPour ```

4

Quelle est la condition de **terminaison** d'une boucle `Tant que` ?

5

Une **boucle infinie** se produit si :

6

Pour parcourir tous les éléments d'un tableau `T` de taille `n` (en Analyse, indices 1 à n), on écrit :

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.