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.