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é
- Dessiner le TDO relatif à l'algorithme ci-dessus.
- Traduire l'algorithme en Pascal.
- Quelles sont les valeurs des variables n1, n2 et diff pour n = 163, et pour n = 2317 ?
- Déduire la valeur des variables ch1, ch2 et ch pour n=391, et pour n=-170 ?
- 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é
- Dessiner le TDO relatif à l'algorithme ci-dessus.
- Traduire l'algorithme en Pascal.
- 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é
- Dessiner le TDO relatif à l'algorithme ci-dessus.
- Traduire l'algorithme en Pascal.
- 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
- Modifier les étapes 1 et 2 pour controler la saisie des variables n et x.
- Que fais le programme ?
- 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é
- Proposer le TDO relatif à l'algorithme ci-dessus.
- Traduire l'algorithme en Pascal.
- Ajouter le contrôle de saisie de la variable n
- Tester le programme avec :
- n = 21395
- n = 16514
- 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é
- Proposer le TDNT et le TDO relatifs à l'algorithme ci-dessus.
- Traduire l'algorithme en Pascal.
- Ajouter le contrôle de saisie de la variable n (3 ≤ n ≤ 10) et t[i] (t[i] ≥ 10).
- 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
- Quel est le rôle du programme ?
- Placer les nombres qui contiennent exactement un seul chiffre pair dans un tableau t3 et l'afficher.