Exercices d’algorithmique IG1 EXERCICES D’ALGORITHMIQUE LES INSTRUCTIONS DE BASE Exercice 1 Écrire un algorithme qui effectue le quotient et le reste de la division de 2 nombres que l’utilisateur a préalablement entré au clavier Aide : il faut prévoir deux variables de type réel (à virgule) que l’utilisateur va saisir et mettre le résultat du calcul dans une autre variable de type entier. Ceci aura pour effet de tronquer les chiffres après la virgule puisque une variable de type entier ne peut contenir de chiffre à virgule. Un petit aide mémoire : 5/2 = 2,5. Si cette valeur est mise dans une variable de type entier, alors la variable contiendra 2 soit le quotient Pour obtenir le reste, il existe ce qu’on appelle le modulo ! ! ! ! Késako, me dirait vous ... eh bien il permet tout simplement d’obtenir le reste d’une division. L’expression : 5 modulo 2 est égale à 1. La variable contenant le reste doit être de type réel car le reste peut être un chiffre à virgule. Exercice 2 Écrire un algorithme qui effectue la permutation circulaire de trois nombres X, Y et Z Exemple : Page 1 sur 18 Exercices d’algorithmique IG1 Aide : Il faut utiliser 4 variables afin d’éviter « d’écraser » le contenu d’une des trois variables saisies ! ! ! Exercice 3 Quel est le résultat de la suite des trois affectations suivantes ? XX+Y YX–Y XX–Y Aide : tester la suite d’instructions avec des chiffres !! Exercice 4 Que pensez vous de l’algorithme suivant ? Algorithme Permute Variable X, Y : Réel Début Afficher(« Tapez 2 nombres ») Saisir(X,Y) Afficher(« Après permutation, les 2 nombres sont : »,Y, X) Fin Exercice 5 Écrire un algorithme lisant 2 nombres, l’un positif et l’autre négatif, et afficher celui qui est positif (vérifier que l’utilisateur a bien rentré 2 nombres vérifiant les conditions voulues) Aide : Utiliser les instructions conditionnelles. Exercice 6 Écrire un algorithme qui détermine le plus grand des trois nombres entiers X,Y, Z. Page 2 sur 18 Exercices d’algorithmique IG1 Aide : Nous ne pouvons comparer 3 nombres en une seule instruction ! C’est pourquoi nous vous conseillons d’utiliser une variable qui contiendra la valeur maximum tout au long de l’algorithme. Exercice 7 Écrire un algorithme qui détermine le plus grand des trois nombres entiers X,Y,Z Aide : Nous ne pouvons comparer 3 nombres en une seule instruction ! C’est pourquoi nous vous conseillons d’utiliser une variable qui contiendra la valeur minimum tout au long de l’algorithme. Exercice 8 Écrire un algorithme qui détermine le plus petit et le plus grand de trois nombres entiers X, Y et Z, en minimisant le nombre de comparaisons effectuées Aide : inspirez vous des 2 exercices précédent ;-) Exercice 9 A quel problème l’algorithme mystère suivant apporte-t-il une solution ? Algorithme Mystère {... ... ... ?} Variable U, V, W, R, S, Z : caractère Début Saisir(U,V,W,R,S) Si U # S alors Début Z S S U UZ Fin Si V # R alors Page 3 sur 18 Exercices d’algorithmique IG1 Début ZR RV VZ Fin Afficher(U,V,W,R,S) Fin Exercice 10 Ecrire un algorithme vérifiant que trois nombres peuvent être les longueurs des cotés d’un triangle. Aide : 3 segments peuvent former un triangle si la somme des longueur des 2 cotés les plus petits est supérieure à la longueur du plus grand. Exercice 11 Écrire un algorithme classant 3 nombres par ordre croissant Aide : Utilisez les instructions conditionnelles. Exercice 12 Écrire un algorithme classant 3 nombres par ordre décroissant Aide : Utilisez les instructions conditionnelles. Exercice 13 Écrire un algorithme qui calcule la valeur absolue de l’expression BX+C, les valeurs de X, B et C étant données Aide : La valeur absolue d’un nombre positif est ce même nombre. La valeur absolue d’un nombre négatif est son opposé : 5 pour –5 par exemple ! ! Exercice 14 Page 4 sur 18 Exercices d’algorithmique IG1 Éditer le signe du produit de 2 nombres, sans calculer ce produit Aide : Signe du premier nombre : Signe du second nombre : Positif Positif Positif Négatif Négatif Positif Négatif Négatif Nul Positif ou négatif Positif ou négatif Nul Signe du produit des 2 nombres Positif Négatif Négatif Positif Nul Nul Exercice 15 Sans calculer leur somme, déterminer le signe de la somme de deux nombres Exercice 16 Étant donné 3 nombres X, Y, Z classés par ordre croissant, et un nombre N quelconque, éditer dans l’ordre les trois plus petites valeurs de ces quatre données Exercice 17 Étant donné 3 nombres X, Y, Z classés par ordre décroissant, et un nombre N quelconque, éditer dans l’ordre les trois plus petites valeurs de ces quatre données Exercice 18 Étant donné 3 nombres X, Y, Z classés par ordre croissant, et un nombre N quelconque, éditer dans l’ordre les trois plus grandes valeurs de ces quatre données Page 5 sur 18 Exercices d’algorithmique IG1 Corrigé de l'exercice 1 Solution : Algorithme division {affiche le quotient et le reste d’une division de deux nombres que l’utilisateur a rentré au clavier} Variables reste, dividende, diviseur : Réel ; quotient: Entier Début Afficher(« saisir le dividende : ») ; Saisir(dividende) ; Afficher(« saisir le diviseur : ») ; Saisir(diviseur) ; Si diviseur # 0 alors début Quotient dividende / diviseur Reste dividende modulo diviseur Afficher(« le quotient de la division : » ,dividende, « par »,diviseur, « est : »,quotient) Afficher(« le reste de la division : » ,dividende, « par »,diviseur, « est : »,reste) Fin Sinon Afficher(« division par 0 interdite ») Fin Corrigé de l'exercice 2 Algorithme permutation 3 nombres {permute 3 nombres} Variables X, Y, Z, Temporaire: Entier Début Afficher(« saisir X : ») ; Page 6 sur 18 Exercices d’algorithmique IG1 Saisir(X) ; Afficher(« saisir Y : ») ; Saisir(Y) ; Afficher(« saisir Z : ») ; Saisir(Z) ; Afficher(« Avant permutation ») Afficher(« X vaut : »,X, « Y vaut : »,Y, « Z vaut : »,Z) Temporaire Z ZY YX X Temporaire Afficher(« Après permutation ») ; Afficher(« X vaut : »,X, « Y vaut : »,Y, « Z vaut : »,Z) Fin Corrigé de l'exercice 3 Solution : A la fin de la suite d’instructions, X vaut la valeur initiale de Y et Y vaut la valeur initiale de X. C’est une suite d’instructions qui nous permet d’échanger le contenu de deux variables. Elle aurait pu être effectuée comme suit avec une variable temporaire Z : ZY YX X Z Corrigé de l'exercice 4 Solution : Cet algorithme n’est pas bon. Ici, il se passe quelque chose de très grave ... On affiche à l’utilisateur un échange de nombre en trafiquant l’affichage. L’opération de permutation n’a pas eu lieu. Imaginez qu’un logiciel vous dise qu’il a sauvegardé votre document et qu’il ne l’a pas fait !!! Nous sommes dans le même cas ici. Page 7 sur 18 Exercices d’algorithmique IG1 Corrigé de l'exercice 5 Solution : Algorithme affiche positif Variable X, Y : Réel ; PositifOK, NegatifOK : Booléen Début PositifOK faux NegatifOK faux Afficher(« Tapez 2 nombres ») Saisir(X,Y) Si (X > 0) ou (Y > 0) alors PositifOK vrai {un chiffre positif a été rentré} Si (X < 0) ou (Y < 0) alors NegatifOK vrai {un chiffre négatif a été rentré} Si PositifOK et NegatifOK alors {Si un chiffre négatif et un chiffre positif ont étés rentrés} Début Si X > 0 alors {Si X est positif on l’affiche} Afficher(« X est positif : », X) Sinon {sinon cela veut dire que c’est Y qui est positif. Dans ce cas on affiche Y} Afficher(« Y est positif : », Y) Fin Sinon Afficher(« Il fallait rentrer un nombre positif et un nombre négatif ») Fin Page 8 sur 18 Exercices d’algorithmique IG1 Corrigé de l'exercice 6 Solution : Algorithme max de 3 entiers Variables X, Y, Z, Max: Entier Début Afficher(« saisir X : ») ; Saisir(X) ; Afficher(« saisir Y : ») ; Saisir(Y) ; Afficher(« saisir Z : ») ; Saisir(Z) ; Max X Si Y > Max alors Max Y Si Z > Max alors Max Z Afficher(« la valeur maximale saisie est : »,Max) Fin Corrigé de l'exercice 7 Solution : Algorithme min de 3 entiers Variables X, Y, Z, Min: Entier Début Page 9 sur 18 Exercices d’algorithmique IG1 Afficher(« saisir X : ») ; Saisir(X) ; Afficher(« saisir Y : ») ; Saisir(Y) ; Afficher(« saisir Z : ») ; Saisir(Z) ; Min X Si Y < Min alors Min Y Si Z < Min alors Min Z Afficher(« la valeur minimum saisie est : »,Min) Fin Corrigé de l'exercice 8 Solution : Algorithme max et min de 3 entiers Variables X, Y, Z, Min, Max: Entier Début Afficher(« saisir X : ») ; Saisir(X) ; Afficher(« saisir Y : ») ; Saisir(Y) ; Afficher(« saisir Z : ») ; Saisir(Z) ; Min X Page 10 sur 18 Exercices d’algorithmique IG1 Max X Si Y < Min alors Min Y Sinon Max Y Si Z < Min alors Min Z Sinon Si Z > Max alors Max Z Afficher(« la valeur maximale saisie est : »,Max) Afficher(« la valeur minimum saisie est : »,Min) Fin Corrigé de l'exercice 9 Il inverse les valeurs de quatre variables 2 à 2. S par U, U par S, R par V et V par R. Si on fait attention à l’ordre dans lequel ont étés saisis les 5 caractères, on se rend compte qu’il sont affichés dans l’ordre inverse, en partant du dernier saisi ! ! Corrigé de l'exercice 10 Algorithme triangle {dit si 3 longueurs peuvent être les cotés d’un triangle} Variables X, Y, Z, Max, Somme2petits : Réel Début Afficher(« saisir X : ») ; Saisir(X) ; Afficher(« saisir Y : ») ; Page 11 sur 18 Exercices d’algorithmique IG1 Saisir(Y) ; Afficher(« saisir Z : ») ; Saisir(Z) ; Max X Somme2petits 0 Si Y > Max alors Début Somme2petits Somme2petits + Max Max Y Fin Sinon Somme2petits Somme2petits + Y Si Z > Max alors Début Somme2petits Somme2petits + Max Max Z Fin Sinon Somme2petits Somme2petits + Z Si Somme2petits > Max alors Afficher(« les trois longueurs : »,X,Y,Z, « peuvent former un triangle ») Sinon Afficher(« les trois longueurs : »,X,Y,Z, « ne peuvent pas former un triangle ») Fin Page 12 sur 18 Exercices d’algorithmique IG1 Corrigé de l'exercice 11 Algorithme tri croissant {affiche 3 nombres dans l’ordre croissant} Variables X, Y, Z : Réel Début Afficher(« saisir 3 nombres : ») ; Saisir(X,Y,Z) ; Si (X < Y) et (Y < Z) alors Afficher(X,Y,Z) Sinon si (X < Z) et (Z < Y) alors Afficher(X,Z,Y) Sinon si (Y < X) et (X < Z) alors Afficher(Y,X,Z) Sinon si (Y < Z) et (Z < X) alors Afficher(Y,Z,X) Sinon si (Z < X) et (X < Y) alors Afficher(Z,X,Y) Sinon si (Z < Y) et (Y < X) alors Afficher(Z,Y,X) Fin Corrigé de l'exercice 12 Algorithme tri décroissant Page 13 sur 18 Exercices d’algorithmique IG1 {affiche 3 nombres dans l’ordre décroissant} Variables X, Y, Z : Réel Début Afficher(« saisir 3 nombres : ») ; Saisir(X,Y,Z) ; Si (X > Y) et (Y > Z) alors Afficher(X,Y,Z) Sinon si (X > Z) et (Z > Y) alors Afficher(X,Z,Y) Sinon si (Y > X) et (X > Z) alors Afficher(Y,X,Z) Sinon si (Y > Z) et (Z > X) alors Afficher(Y,Z,X) Sinon si (Z > X) et (X > Y) alors Afficher(Z,X,Y) Sinon si (Z > Y) et (Y > X) alors Afficher(Z,Y,X) Fin Corrigé de l'exercice 13 Algorithme valeur absolue {calcule la valeur absolue de l’expression BX+C} Variables B, X, C, resultat : Réel Page 14 sur 18 Exercices d’algorithmique IG1 Début Afficher(« saisir 3 nombres : ») ; Saisir(B,X,C) ; Resultat (B*X) + C Si Resultat < 0 alors Début {pour inverser le signe} Resultat - Resultat Fin Afficher(« la valeur absolue est : », resultat) Fin Corrigé de l'exercice 14 Algorithme signe produit {donne le signe d’un produit de 2 nombres sans calculer le produit} Variables prem, deuz : Réel Début Afficher(« saisir 2 nombres : ») ; Saisir(Prem,deuz) ; Si (Prem = 0) ou (deuz = 0) alors Afficher(« le résultat du produit des deux nombre est : nul ») Sinon Début {Si les 2 nombres sont tous les deux positifs ou tous les deux négatifs, le produit est positif, sinon négatif. Remarquez bien les parenthèses qui joue un rôle important dans la priorité de l’évaluation de l’instruction conditionnelle} Si (Prem > 0 et Deuz > 0) ou (Prem < 0 et Deuz < 0) alors Afficher(« le résultat du produit des deux nombre est : positif ») Page 15 sur 18 Exercices d’algorithmique IG1 Sinon Afficher(« le résultat du produit des deux nombre est : négatif ») Fin Fin Corrigé de l'exercice 15 Algorithme signe somme {donne le signe d’une somme de 2 nombres sans calculer la somme} Variables prem, deuz, temp : Réel Début Afficher(« saisir 2 nombres : ») ; Saisir(Prem,deuz) ; Si (Prem = 0) et (deuz = 0) alors Afficher(« le résultat de la somme des deux nombre est : nul ») Sinon Si Prem > 0 et deuz > 0 alors Afficher(« le résultat de la somme des deux nombre est : positif ») Sinon Si Prem < 0 et deuz < 0 alors Afficher(« le résultat de la somme des deux nombre est : négatif ») Sinon Si Prem > 0 et deuz < 0 alors Début Temp - deuz Si Prem > Temp alors Afficher(« le résultat de la somme des deux nombre est : positif ») Sinon Afficher(« le résultat de la somme des deux nombre est : négatif ») Page 16 sur 18 Exercices d’algorithmique IG1 Fin Sinon Si Prem < 0 et deuz > 0 alors Début Temp - Prem Si deuz > Temp alors Afficher(« le résultat de la somme des deux nombre est : positif ») Sinon Afficher(« le résultat de la somme des deux nombre est : négatif ») Fin Fin Corrigé de l'exercice 16 Afficher(« saisir un nombre) Saisir(N) Si N < X alors Afficher(N,X,Y) Sinon Si N < Y alors Afficher(X,N,Y) Sinon Si N < Z alors Afficher(X,Y,N) Sinon Afficher(X,Y,Z) Corrigé de l'exercice 17 Afficher(« saisir un nombre) Saisir(N) Si N < Z alors Afficher(N,Z,Y) Page 17 sur 18 Exercices d’algorithmique IG1 Sinon Si N < Y alors Afficher(Z,N,Y) Sinon Si N < X alors Afficher(Z,Y,N) Sinon Afficher(Z,Y,X) Corrigé de l'exercice 18 Afficher(« saisir un nombre) Saisir(N) Si N > Z alors Afficher(Y,Z,N) Sinon Si N > Y alors Afficher(Y,N,Z) Sinon Si N > X alors Afficher(N,Y,Z) Sinon Afficher(X,Y,Z) Page 18 sur 18