Série 2 : Structures itératives

Exercice 1 ★

Soit l'algorithme suivant :

0) Début Act1
1) Ecrire("Donner un entier : ")
   Lire(n)
2) ConvCh(n, ch)
3) [ch1 ⟵ "" ; ch2 ⟵ ""]
   Pour c de "0" à "9" Faire
     Répéter
       p ⟵ Pos(c, ch)
       si p > 0 alors
         ch1 ⟵ ch1 + c
         ch2 ⟵ c + ch2
         Effacer(ch, p, 1)
       Fin si
     Jusqu'à (p = 0)
   Fin Pour
4) Val(ch1, n1, e)
5) Val(ch2, n2, e)
6) diff ⟵ n2 - n1
7) Ecrire(n1)
   Ecrire(n2)
   Ecrire(diff)
8) Fin Act1

Travail demandé

  1. Dessiner le TDO relatif à l'algorithme ci-dessus.
  2. Traduire l'algorithme en Pascal.
  3. Quelles sont les valeurs des variables n1, n2 et diff pour n = 163, et pour n = 2317 ?
  4. Déduire la valeur des variables ch1, ch2 et ch pour n=391, et pour n=-170 ?
  5. Modifier l'étape numéro 1 pour restreindre la valeur de n à (0 < n ≤ 9999).

Exercice 2 ★

Soit l'algorithme suivant :

0) Début Act2
1) n ⟵ Aléa(999) + 1
2) Ecrire("Donner une valeur [1, 999] : ")
   Lire(v)
3) si v = n alors
     Ecrire("Bravo! vous avez gagné")
   sinon si v > n alors
     Ecrire("Nombre trop grand")
   sinon 
     Ecrire("Nombre trop petit")
   fin si
4) Fin Act2

Travail demandé

  1. Dessiner le TDO relatif à l'algorithme ci-dessus.
  2. Traduire l'algorithme en Pascal.
  3. Améliorer le programme :
    • Limiter v dans l'intervalle [1, 999] (controle de la saisie);
    • Offrir 10 tentatives (au maximum) à l'utilisateur pour deviner le nombre v;
    • Demander à l'utilisateur s'il veut rejouer encore ou non;

Exercice 3 ★

Soit Un une suite réelle définie comme suit :

Un = (Un-1 + x / Un-1) / 2, si n > 0

U0 = x+1, x ∈ ℝ+.

On démontre que la suite Un est convergente. Et on donne l'algorithme suivant :

0) Début Act3
1) Ecrire("Entrer un réel x ≥ 0 : ")
   Lire(x)
2) Ecrire("Entrer un réel n > 0 : ")
   Lire(n)
3) Up ⟵ x + 1
   Pour i de 1 à n Faire
     Un ⟵ (Up + x / Up) / 2
     diff ⟵ Un - Up
     Up ⟵ Un
   Fin Pour
4) Ecrire(Un)
   Ecrire(diff)
5) Fin Act3

Travail demandé

  1. Dessiner le TDO relatif à l'algorithme ci-dessus.
  2. Traduire l'algorithme en Pascal.
  3. Quelles sont les valeurs de Un et diff pour :
    • x = 2, n = 1
    • x = 2, n = 3
    • x = 2, n = 10
    • x = 25, n = 1
    • x = 25, n = 3
    • x = 25, n = 10
  4. Modifier les étapes 1 et 2 pour controler la saisie des variables n et x.
  5. Que fais le programme ?
  6. Modifier le programme pour afficher Un lorsque |Un - Un-1| < 10-5, remarquez que diff = Un - Un-1

Exercice 4 ★

Soit l'algorithme suivant :

0) Début Act4
1) Ecrire("Donner n > 0 : ")
   Lire(n)
2) n1 ⟵ n
   répéter
     r ⟵ n1 div 10
     sd ⟵ sd + r
     n1 ⟵ n1 div 10
   jusqu'à (n1 = 0)
3) Ecrire(n, " => ", n1)
4) Fin Act4

Travail demandé

  1. Proposer le TDO relatif à l'algorithme ci-dessus.
  2. Traduire l'algorithme en Pascal.
  3. Ajouter le contrôle de saisie de la variable n
  4. Tester le programme avec :
    • n = 21395
    • n = 16514
  5. Quel est le rôle du programme ?

Exercice 5 ★★

0) Début Act5
1) Ecrire("Donner n [3, 10] : ")
   Lire(n)
2) Pour i de 1 à n Faire
     Ecrire("Donner T[", i, "] : ")
     Lire(t[i])
   Fin Pour
3) n1 ⟵ 0
   Pour i de 1 à n Faire
     ConvCh(t[i], ch)
     chp ⟵ faux
     Pour j de 1 Long(ch) Faire
       Val(ch[i], v, e)
       si v mod 2 = 0 alors
         chp ⟵ vrai
       fin si
     fin pour
     si (non chp) alors
       n1 ⟵ n1 + 1
       t2[n1] ⟵ t[i]
     fin si 
   fin pour  
4) Pour i de 1 à n1 Faire
     Ecrire(t2[i])
   Fin pour
5) Fin Act5

Travail demandé

  1. Proposer le TDNT et le TDO relatifs à l'algorithme ci-dessus.
  2. Traduire l'algorithme en Pascal.
  3. Ajouter le contrôle de saisie de la variable n (3 ≤ n ≤ 10) et t[i] (t[i] ≥ 10).
  4. Tester le programme avec les données suivantes :
    • n = 8
    • T
      11 20 123 57 90 319 973 41
      1 2 3 4 5 6 7 8
    • Quel est le rôle du programme ?
    • Utiliser la structure répéter...jusqu'à au lieu de pour j de 1 à Long(ch) faire
  5. Quel est le rôle du programme ?
  6. Placer les nombres qui contiennent exactement un seul chiffre pair dans un tableau t3 et l'afficher.