الأحد، 1 ديسمبر 2013

exercice de l'algorithme


Exercice 5.2 
Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10. 
Exercice 5.2 
Variable N en Entier 
Debut 
N ? 0 
Ecrire "Entrez un nombre entre 10 et 20" 
TantQue N < 10 ou N > 20 
Lire N 
Si N < 10 Alors 
Ecrire "Plus grand !" 
SinonSi N > 20 Alors 
Ecrire "Plus petit !" 
FinSi 
FinTantQue 
Fin 
Exercice 5.3 
Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 à 27. 
Exercice 5.3 
Variables N, i en Entier 
Debut 
Ecrire "Entrez un nombre : " 
Lire N 
Ecrire "Les 10 nombres suivants sont : " 
Pour i ? N + 1 à N + 10 
Ecrire i 
i Suivant 
Fin 

Exercice 5.4 
Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la table de multiplication de ce nombre, présentée comme suit (cas où l'utilisateur entre le nombre 7) : 
Table de 7 : 
7 x 1 = 7 
7 x 2 = 14 
7 x 3 = 21 
… 
7 x 10 = 70 
Exercice 5.4 
Variables N, i en Entier 
Debut 
Ecrire "Entrez un nombre : " 
Lire N 
Ecrire "La table de multiplication de ce nombre est : " 
Pour i ? 1 à 10 
Ecrire N, " x ", i, " = ", n*i 
i Suivant 
Fin 


Exercice 5.5 
Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit calculer : 
1 + 2 + 3 + 4 + 5 = 15 
NB : on souhaite afficher uniquement le résultat, pas la décomposition du calcul. 
Exercice 5.5 
Variables N, i, Som en Entier 
Debut 
Ecrire "Entrez un nombre : " 
Lire N 
Som ? 0 
Pour i ? 1 à N 
Som ? Som + i 
i Suivant 
Ecrire "La somme est : ", Som 
Fin 
Exercice 5.7 
Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise ensuite quel était le plus grand parmi ces 20 nombres : 
Entrez le nombre numéro 1 : 12 
Entrez le nombre numéro 2 : 14 
etc. 
Entrez le nombre numéro 20 : 6 
Le plus grand de ces nombres est : 14 
Modifiez ensuite l’algorithme pour que le programme affiche de surcroît en quelle position avait été saisie ce nombre : 
C’était le nombre numéro 2 
Exercice 5.7 
Variables N, i, PG en Entier 
Debut 
PG ? 0 
Pour i ? 1 à 20 
Ecrire "Entrez un nombre : " 
Lire N 
Si i = 1 ou N > PG Alors 
PG ? N 
FinSi 
i Suivant 
Ecrire "Le nombre le plus grand était : ", PG 
Fin 
En ligne 3, on peut mettre n’importe quoi dans PG, il suffit que cette variable soit affectée pour que le premier passage en ligne 7 ne provoque pas d'erreur. 

Pour la version améliorée, cela donne : 
Variables N, i, PG, IPG en Entier 
Debut 
PG ? 0 
Pour i ? 1 à 20 
Ecrire "Entrez un nombre : " 
Lire N 
Si i = 1 ou N > PG Alors 
PG ? N 
IPG ? i 
FinSi 
i Suivant 
Ecrire "Le nombre le plus grand était : ", PG 
Ecrire "Il a été saisi en position numéro ", IPG 
Fin 
Exercice 5.8 
Réécrire l’algorithme précédent, mais cette fois-ci on ne connaît pas d’avance combien l’utilisateur souhaite saisir de nombres. La saisie des nombres s’arrête lorsque l’utilisateur entre un zéro. 
Exercice 5.8 
Variables N, i, PG, IPG en Entier 
Debut 
N ? 1 
i ? 0 
PG ? 0 
TantQue N <> 0 
Ecrire "Entrez un nombre : " 
Lire N 
i ? i + 1 
Si i = 1 ou N > PG Alors 
PG ? N 
IPG ? i 
FinSi 
FinTantQue 
Ecrire "Le nombre le plus grand était : ", PG 
Ecrire "Il a été saisi en position numéro ", IPG 
Fin 
Exercice 5.9 
Lire la suite des prix (en euros entiers et terminée par zéro) des achats d’un client. Calculer la somme qu’il doit, lire la somme qu’il paye, et simuler la remise de la monnaie en affichant les textes "10 Euros", "5 Euros" et "1 Euro" autant de fois qu’il y a de coupures de chaque sorte à rendre. 
Exercice 5.9 
Variables E, somdue, M, Reste, Nb10E, Nb5E En Entier 
Debut 
E ? 1 
somdue ? 0 
TantQue E <> 0 
Ecrire "Entrez le montant : " 
Lire E 
somdue ? somdue + E 
FinTantQue 
Ecrire "Vous devez :", somdue, " euros" 
Ecrire "Montant versé :" 
Lire M 
Reste ? M - somdue 
Nb10E ? 0 
TantQue Reste >= 10 
Nb10E ? Nb10E + 1 
Reste ? Reste – 10 
FinTantQue 
Nb5E ? 0 
Si Reste >= 5 
Nb5E ? 1 
Reste ? Reste – 5 
FinSi 
Ecrire "Rendu de la monnaie :" 
Ecrire "Billets de 10 E : ", Nb10E 
Ecrire "Billets de 5 E : ", Nb5E 
Ecrire "Pièces de 1 E : ", reste 
Fin 
Exercice 5.10 
Écrire un algorithme qui permette de connaître ses chances de gagner au tiercé, quarté, quinté et autres impôts volontaires. 
On demande à l’utilisateur le nombre de chevaux partants, et le nombre de chevaux joués. Les deux messages affichés devront être : 
Dans l’ordre : une chance sur X de gagner 
Dans le désordre : une chance sur Y de gagner 
X et Y nous sont donnés par la formule suivante, si n est le nombre de chevaux partants et p le nombre de chevaux joués (on rappelle que le signe ! signifie "factorielle", comme dans l'exercice 5.6 ci-dessus) : 
X = n ! / (n - p) ! 
Y = n ! / (p ! * (n – p) !) 
NB : cet algorithme peut être écrit d’une manière simple, mais relativement peu performante. Ses performances peuvent être singulièrement augmentées par une petite astuce. Vous commencerez par écrire la manière la plus simple, puis vous identifierez le problème, et écrirez une deuxième version permettant de le résoudre. 
Exercice 5.10 
Spontanément, on est tenté d'écrire l'algorithme suivant : 
Variables N, P, i, Numé, Déno1, Déno2 en Entier 
Debut Ecrire "Entrez le nombre de chevaux partants : " 
Lire N 
Ecrire "Entrez le nombre de chevaux joués : " 
Lire P 
Numé ? 1 
Pour i ? 2 à N 
Numé ? Numé * i 
i Suivant 
Déno1 ? 1 
Pour i ? 2 à N-P 
Déno1 ? Déno1 * i 
i Suivant 
Déno2 ? 1 
Pour i ? 2 à P 
Déno2 ? Déno2 * i 
i Suivant 
Ecrire "Dans l’ordre, une chance sur ", Numé / Déno1 
Ecrire "Dans le désordre, une sur ", Numé / (Déno1 * Déno2) 
Fin 
Cette version, formellement juste, comporte tout de même deux faiblesses. 

La première, et la plus grave, concerne la manière dont elle calcule le résultat final. Celui-ci est le quotient d'un nombre par un autre ; or, ces nombres auront rapidement tendance à être très grands. En calculant, comme on le fait ici, d'abord le numérateur, puis ensuite le dénominateur, on prend le risque de demander à la machine de stocker des nombres trop grands pour qu'elle soit capable de les coder (cf. le préambule). C'est d'autant plus bête que rien ne nous oblige à procéder ainsi : on n'est pas obligé de passer par la division de deux très grands nombres pour obtenir le résultat voulu. 

La deuxième remarque est qu'on a programmé ici trois boucles successives. Or, en y regardant bien, on peut voir qu'après simplification de la formule, ces trois boucles comportent le même nombre de tours ! (si vous ne me croyez pas, écrivez un exemple de calcul et biffez les nombres identiques au numérateur et au dénominateur). Ce triple calcul (ces trois boucles) peut donc être ramené(es) à un(e) seul(e). Et voilà le travail, qui est non seulement bien plus court, mais aussi plus performant : 
Variables N, P, i, O, F en Entier 
Debut 
Ecrire "Entrez le nombre de chevaux partants : " 
Lire N 
Ecrire "Entrez le nombre de chevaux joués : " 
Lire P 
A ? 1 
B ? 1 
Pour i ? 1 à P 
A ? A * (i + N - P) 
B ? B * i 
i Suivant 
Ecrire "Dans l’ordre, une chance sur ", A 
Ecrire "Dans le désordre, une chance sur ", A / B 
Fin 
PARTIE 6 
ENONCE DES EXERCICES 
Exercice 6.1 
Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant toutes à zéro. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.2 
Ecrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de l’alphabet latin. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.3 
Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite saisir les valeurs par l’utilisateur. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.4 
Que produit l’algorithme suivant ? 
Tableau Nb(5) en Entier 
Variable i en Entier 
Début 
Pour i ? 0 à 5 
Nb(i) ? i * i 
i suivant 
Pour i ? 0 à 5 
Ecrire Nb(i) 
i suivant 
Fin 
Peut-on simplifier cet algorithme avec le même résultat ? 
corrigé - retour au cours 
________________________________________ 
Exercice 6.5 
Que produit l’algorithme suivant ? 
Tableau N(6) en Entier 
Variables i, k en Entier 
Début 
N(0) ? 1 
Pour k ? 1 à 6 
N(k) ? N(k-1) + 2 
k Suivant 
Pour i ? 0 à 6 
Ecrire N(i) 
i suivant 
Fin 
Peut-on simplifier cet algorithme avec le même résultat ? 
corrigé - retour au cours 
________________________________________ 
Exercice 6.6 
Que produit l’algorithme suivant ? 
Tableau Suite(7) en Entier 
Variable i en Entier 
Début 
Suite(0) ? 1 
Suite(1) ? 1 
Pour i ? 2 à 7 
Suite(i) ? Suite(i-1) + Suite(i-2) 
i suivant 
Pour i ? 0 à 7 
Ecrire Suite(i) 
i suivant 
Fin 
corrigé - retour au cours 
________________________________________ 
Exercice 6.7 
Ecrivez la fin de l’algorithme 6.3 afin que le calcul de la moyenne des notes soit effectué et affiché à l’écran. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.8 
Ecrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui devront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de valeurs qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le programme affichera le nombre de valeurs négatives et le nombre de valeurs positives. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.9 
Ecrivez un algorithme calculant la somme des valeurs d’un tableau (on suppose que le tableau a été préalablement saisi). 
corrigé - retour au cours 
________________________________________ 
Exercice 6.10 
Ecrivez un algorithme constituant un tableau, à partir de deux tableaux de même longueur préalablement saisis. Le nouveau tableau sera la somme des éléments des deux tableaux de départ. 
Tableau 1 : 
4   8   7   9   1   5   4   6 

Tableau 2 : 
7   6   5   2   1   3   7   4 

Tableau à constituer : 
11   14   12   11   2   8   11   10 

corrigé - retour au cours 
________________________________________ 
Exercice 6.11 
Toujours à partir de deux tableaux précédemment saisis, écrivez un algorithme qui calcule le schtroumpf des deux tableaux. Pour calculer le schtroumpf, il faut multiplier chaque élément du tableau 1 par chaque élément du tableau 2, et additionner le tout. Par exemple si l'on a : 
Tableau 1 : 
4   8   7   12 

Tableau 2 : 
3   6 

Le Schtroumpf sera : 
3 * 4 + 3 * 8 + 3 * 7 + 3 * 12 + 6 * 4 + 6 * 8 + 6 * 7 + 6 * 12 = 279 
corrigé - retour au cours 
________________________________________ 
Exercice 6.12 
Ecrivez un algorithme qui permette la saisie d’un nombre quelconque de valeurs, sur le principe de l’ex 6.8. Toutes les valeurs doivent être ensuite augmentées de 1, et le nouveau tableau sera affiché à l’écran. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.13 
Ecrivez un algorithme permettant, toujours sur le même principe, à l’utilisateur de saisir un nombre déterminé de valeurs. Le programme, une fois la saisie terminée, renvoie la plus grande valeur en précisant quelle position elle occupe dans le tableau. On prendra soin d’effectuer la saisie dans un premier temps, et la recherche de la plus grande valeur du tableau dans un second temps. 
corrigé - retour au cours 
________________________________________ 
Exercice 6.14 
Toujours et encore sur le même principe, écrivez un algorithme permettant, à l’utilisateur de saisir les notes d'une classe. Le programme, une fois la saisie terminée, renvoie le nombre de ces notes supérieures à la moyenne de la classe. 
corrigé - retour au cours 
PARTIE 6 
CORRIGES DES EXERCICES 
Exercice 6.1 
Tableau Truc(6) en Numérique 
Variable i en Numérique 
Debut 
Pour i ? 0 à 6 
Truc(i) ? 0 
i Suivant 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.2 
Tableau Truc(5) en Caractère 
Debut 
Truc(0) ? "a" 
Truc(1) ? "e" 
Truc(2) ? "i" 
Truc(3) ? "o" 
Truc(4) ? "u" 
Truc(5) ? "y" 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.3 
Tableau Notes(8) en Numérique 
Variable i en Numérique 
Pour i ? 0 à 8 
Ecrire "Entrez la note numéro ", i + 1 
Lire Notes(i) 
i Suivant 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.4 
Cet algorithme remplit un tableau avec six valeurs : 0, 1, 4, 9, 16, 25. 
Il les écrit ensuite à l’écran. Simplification : 
Tableau Nb(5) en Numérique 
Variable i en Numérique 
Début 
Pour i ? 0 à 5 
Nb(i) ? i * i 
Ecrire Nb(i) 
i Suivant 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.5 
Cet algorithme remplit un tableau avec les sept valeurs : 1, 3, 5, 7, 9, 11, 13. 
Il les écrit ensuite à l’écran. Simplification : 
Tableau N(6) en Numérique 
Variables i, k en Numérique 
Début 
N(0) ? 1 
Ecrire N(0) 
Pour k ? 1 à 6 
N(k) ? N(k-1) + 2 
Ecrire N(k) 
k Suivant 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.6 
Cet algorithme remplit un tableau de 8 valeurs : 1, 1, 2, 3, 5, 8, 13, 21 
énoncé - retour au cours 
________________________________________ 
Exercice 6.7 
Variable S en Numérique 
Tableau Notes(8) en Numérique 
Debut 
s ? 0 
Pour i ? 0 à 8 
Ecrire "Entrez la note n° ", i + 1 
Lire Notes(i) 
s ? s + Notes(i) 
i Suivant 
Ecrire "Moyenne :", s/9 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.8 
Variables Nb, Nbpos, Nbneg en Numérique 
Tableau T() en Numérique 
Debut 
Ecrire "Entrez le nombre de valeurs :" 
Lire Nb 
Redim T(Nb-1) 
Nbpos ? 0 
Nbneg ? 0 
Pour i ? 0 à Nb - 1 
Ecrire "Entrez le nombre n° ", i + 1 
Lire T(i) 
Si T(i) > 0 alors 
Nbpos ? Nbpos + 1 
Sinon 
Nbneg ? Nbneg + 1 
Finsi 
i Suivant 
Ecrire "Nombre de valeurs positives : ", Nbpos 
Ecrire "Nombre de valeurs négatives : ", Nbneg 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.9 
Variables i, Som, N en Numérique 
Tableau T() en Numérique 
Debut 
… (on ne programme pas la saisie du tableau, dont on suppose qu’il compte N éléments) 
Redim T(N-1) 
… 
Som ? 0 
Pour i ? 0 à N - 1 
Som ? Som + T(i) 
i Suivant 
Ecrire "Somme des éléments du tableau : ", Som 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.10 
Variables i, N en Numérique 
Tableaux T1(), T2(), T3() en Numérique 
Debut 
… (on suppose que T1 et T2 comptent N éléments, et qu’ils sont déjà saisis) 
Redim T3(N-1) 
… 
Pour i ? 0 à N - 1 
T3(i) ? T1(i) + T2(i) 
i Suivant 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.11 
Variables i, j, N1, N2, S en Numérique 
Tableaux T1(), T2() en Numérique 
Debut 
… On ne programme pas la saisie des tableaux T1 et T2. 
On suppose que T1 possède N1 éléments, et que T2 en possède T2) 
… 
S ? 0 
Pour i ? 0 à N1 – 1 
Pour j ? 0 à N2 – 1 
S ? S + T1(i) * T2(j) 
j Suivant 
i Suivant 
Ecrire "Le schtroumpf est : ", S 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.12 
Variables Nb, i en Numérique 
Tableau T() en Numérique 
Debut 
Ecrire "Entrez le nombre de valeurs : " 
Lire Nb 
Redim T(Nb-1) 
Pour i ? 0 à Nb - 1 
Ecrire "Entrez le nombre n° ", i + 1 
Lire T(i) 
i Suivant 
Ecrire "Nouveau tableau : " 
Pour i ? 0 à Nb – 1 
T(i) ? T(i) + 1 
Ecrire T(i) 
i Suivant 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.13 
Variables Nb, Posmaxi en Numérique 
Tableau T() en Numérique 
Ecrire "Entrez le nombre de valeurs :" 
Lire Nb 
Redim T(Nb-1) 
Pour i ? 0 à Nb - 1 
Ecrire "Entrez le nombre n° ", i + 1 
Lire T(i) 
i Suivant 
Posmaxi ? 0 
Pour i ? 0 à Nb - 1 
Si T(i) > T(Posmaxi) alors 
Posmaxi ? i 
Finsi 
i Suivant 
Ecrire "Element le plus grand : ", T(Posmaxi) 
Ecrire "Position de cet élément : ", Posmaxi 
Fin 
énoncé - retour au cours 
________________________________________ 
Exercice 6.14 
Variables Nb, i, Som, Moy, Nbsup en Numérique 
Tableau T() en Numérique 
Debut 
Ecrire "Entrez le nombre de notes à saisir : " 
Lire Nb 
Redim T(Nb-1) 
Pour i ? 0 à Nb - 1 
Ecrire "Entrez le nombre n° ", i + 1 
Lire T(i) 
i Suivant 
Som ? 0 
Pour i ? 0 à Nb - 1 
Som ? Som + T(i) 
i Suivant 
Moy ? Som / Nb 
NbSup ? 0 
Pour i ? 0 à Nb - 1 
Si T(i) > Moy Alors 
NbSup ? NbSup + 1 
FinSi 
i Suivant 
Ecrire NbSup, " élèves dépassent la moyenne de la classe" 
Fin

0 التعليقات:

إرسال تعليق