









Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
this file presents various exercises and their correction
Typology: Exercises
1 / 15
This page cannot be seen from the preview
Don't miss anything!










Donner le résultat de l'exécution de l'algorithme suivant : algo affect1b var a : entier var b : entier Début b ← 5 a ← b+ b ← 2 Fin
Il vaut faire passer la notion de variable et la notion de stockage mémoire. Une variable n’a donc pas d’historique et à un instant donné ne peut contenir qu’une valeur. a 6 b 2
Donner le résultat de l'exécution de l'algorithme suivant : algo affect var a : entier var b : entier Début a ← 2 a ← a+ Fin Une variable peut recevoir le résultat d’une fonction de sa propre valeur. La variable b est déclarée mais non utilisée (instanciée), ce n’est pas bien. a 3 b?
Donner le résultat de l'exécution de l'algorithme suivant : algo affect var a : entier var b : entier Début b ← a+ a ← 2 Fin La variable a est utilisée en partie droite d’une affectation sans avoir été instanciée, ce n’est pas bien. a 2
b?
Donner le résultat de l'exécution de l'algorithme suivant : algo affect var a : entier var b : entier Début a+5 ← 3 Fin
L’expression a+5 ← 3 n’est pas syntaxiquement correcte. ce n’est pas bien. a? b?
Donner le résultat de l'exécution de l'algorithme suivant : algo affect var a : entier var b : entier Début a ← 5 b ← a+ a ← a+ b ← a- Fin a 6 b 2
Donner le résultat de l'exécution de l'algorithme suivant : algo affect var a : entier var b : entier var c : entier Début a ← 3 b ← 10 c ← a+b b ← a+b a ← c Fin a 13 b 13 c 13
Écrire un algorithme qui lit deux valeurs entières et affiche le maximum des deux.
algo Max var a : entier var a : entier Début a Lire() b Lire() Si (b<a) alors Ecrire("a est plus grand que b") Sinon Ecrire("b est plus grand que a") Fin Si Fin
a la caisse d'un supermarché (bien connu à l'Isle d'abeau), nous bénéfficions d'une remise de 1% sur le montant de nos achat lorsque celui-ci dépasse 300 euros. Écrire un algorithme qui après lecture du montant initialement du, affiche le montant à payer.
Remarques : maladroit d'avoir plus d'une instruction d'écriture du résultat. maladroit d'avoir une clause sinon inutile d'avoir recours à une autre variable. algo Remise var montant : réel const tauxRemise ← 0,01: réel Début montant Lire () Si ( 300 <montant) alors montant ← montant * (1-tauxRemise) Fin Si Ecrire("Vous devez " + montant) Fin
Même exercice avec : 1% de remise pour un achat compris entre 300 et 750 euros 2% au delà de 750 euros algo Remise var montant : réel var tauxRemise : réel Début
montant Lire () Si (750 <montant) alors tauxRemise ← 0, Sinon Si (300 < montant) alors tauxRemise ← 0, Sinon tauxRemise ← 0 Fin Si Fin Si montant ← montant * (1-tauxRemise) Ecrire("Vous devez " + montant) Fin
Lire trois valeurs entières a, b et c. afficher le maximum des trois.
algo Max var a : entier var b : entier var c : entier var max : entier Début a Lire () b Lire () c Lire () Si (b a et ca) alors Max ← a Sinon Si (a b et cb) alors Max ← b Sinon Si (a c et bc) alors Max ← c FinSi Fin Si Fin Si Ecrire("Le max est " + max) Fin
algo Max var a : entier var b : entier var c : entier var max : entier Début a Lire () b Lire ()
Début consommation Lire() Si (consommation limTranche12) alors prix ←fraisFixe +consommation * prixTranche Sinon Si (consommation limTranche12 + limTranche23) alors prix ← fraisFixe + limTranche12*prixTranche1+ (consommation – limTranche12) * prixTranche Sinon prix ← fraisFixe + limTranche12 * prixTranche1 + limTranche23 * prixTranche prixTranche2 + (consommation – (limTranche12+limTranche23)) * prixTranche 3 Fin Si Fin Si Ecrire("Le prix à payer est de " + prix) Fin
Il existe un barème pour l'évaluation du prix de revient kilométrique des véhicules. Écrire un algorithme effectuant le calcul de ce prix en fonction de nb, nombre de kilomètres parcourus. Règles : Nb de km \ puissance fiscale 5cV 6cV jusqu'à 5000 n1 * 0,43 (= p1) n * 0, de 5001 à 20000 (n2 * 0,23) + p1 (=p2) (n * 0,27) + 1000 au delà de 20000 (n3 * 0,28) + p2 n * 0,
où n est le nombre total de kilomètres parcourus, n1 le nombre de kilomètres parcourus entre 0 et 5000, n2 le nombre de kilomètres parcourus entre 5001 et 20000 et n3 le nombre de kilomètre parcourus au delà de 20000. Exemple : si j'ai parcouru 8500 km, n=8500, n1=5000, n2=3500 et n3=0.
algo PrixRevient var puissance : entier var nbKm : entier var prix : réel Début puissance Lire() nbKm Lire() Si (puissance =5) alors //cas 5 cV Si (nbKm 5000) alors prix ← nbKm * 0, Sinon Si (nbKm 20 000) alors prix ← 50000,43 + (nbKm – 5000) * 0, Sinon prix ← 50000,43 + (15000)0,23+(nbKm-20000)0, Fin Si
Fin Si Sinon //cas 6 cV Si (nbKm 5000) alors prix ← nbKm * 0, Sinon Si (nbKm 20 000) alors prix ← nbKm * 0,27 + 1000 Sinon prix ← nbKm * 0, Fin Si Fin Si Fin Si Ecrire(" Le prix est de : " + prix ) Fin
Un distributeur qui rend de la monnaie doit rendre en priorité les pièces les plus grosses. En supposant que la machine rend des jetons de 5, 2 et 1 unités et qu'elle doit vous rendre nb unités, écrire un algorithme qui simule le rendu. On suppose que la caisse de départ de la machine est illimitée. I.e. il y a toujours assez de jetons en caisse pour le rendu. algo Monnayeur var nb : entier var nb5, nb2, nb1 : entier Début nb Lire() nb5 ← nb/ nb ← nb % 5 //ou nb ← nb – (nb/5)* nb2 ← nb / nb ← nb % 2 //ou nb ← nb – (nb/2)* nb1 ← nb Ecrire(" Il faut rendre") Ecrire(nb5+"jetons de 5") Ecrire(nb2+"jetons de 2") Ecrire(nb1+"jetons de 1") Fin
Même exercice avec une caisse de départ limitée
algo MonnayeurcaisseLimite var nb : entier var nb5, nb2, nb1 : entier var nb5Dispo, nb2Dispo, nb1Dispo : entier Début nb Lire() nb5Dispo Lire() nb2Dispo Lire()
Exécuter l'algorithme suivant. algo boucle var a : entier Début a ← 5 Tant que (a > 0) Faire Ecrire(a) a ← a - 2 Fin Tant que Fin
Sorties : 5 3 1
Variables : a - 1
Lire un caractère et l'afficher jusqu'à ce que l'on saisisse 'y'. Réaliser deux versions cet algorithme :
algo LireaffavecY var car : caractère Début faire car Lire() Ecrire(car) Tant que (car≠’y’) Fin
algo LireaffavecY var car : caractère Début car Lire() Tant que (car ‘y’) Faire Ecrire(car) Lire(car) Fin Tant que Fin
Écrire un algorithme qui affiche les n premiers entiers (de 1 à n). algo NPremiers var n,i : entier Début n Lire() i ← 1 Tant que (i n) Faire Ecrire(i) i ← i + 1 Fin Tant que Fin
algo NPremiers var n: entier Début n Lire() Tant que (n <0) Faire Ecrire(n) n ← n - 1 Fin Tant que Fin
Écrire un algorithme qui affiche la somme des n premiers entiers algo SommePremiers var n, i, somme : entier Début n Lire() somme ← 0 i ← 1 Tant que (i n) Faire Somme ← somme + i i ← i + 1 Fin Tant que Ecrire(i) Fin
algo SommePremiersv var n, i, somme : entier Début n Lire() somme ← 0 Pour i de 1 à n pas de 1 faire Somme ← somme + i Fin Pour Ecrire(i)
Écrire un algorithme qui fasse deviner un nombre entier aTrouver en donnant des indications (trop grand, trop petit) avec nbEssai autorisé. Il faut obtenir un affichage final Gagné! ou Perdu !.
algo Devine var aTrouver : entier var gagne : booléen Début aTrouver ←Lire() nbEssai ←Lire() gagne ← faux Tant que ((1 nbEssai) et ( Non gagne)) Faire essai ← Lire() Si (essai=aTrouver) alors gagne ← vrai Sinon Si (aTrouver < essai) alors Ecrire("Trop grand") Sinon Ecrire("Trop petit") Fin Si Fin Si nbEssai ← nbEssai - 1 Fin Tant que Si (gagne) alors Ecrire("Gagné !") Sinon Ecrire("Perdu !") Fin Si Fin
Décomposer un nombre en nombres premiers. Essayer les divisions du nombre par les tous les entiers (à partir de 2) et faire afficher simplement les différents diviseurs. N.b. On effectue les divisions du nombre par les différents entiers, qu'ils soient premiers ou no, de toute façon, un nombre qui n'est pas premier ne pourrait diviser car tous ses diviseurs (plus petit que lui) auraient précédemment divisé le nombre. algo Décomposition var nombre : entier var d: entier Début nombre ← Lire() d ← 2 Tant que (nb>1) Faire Si (nb % d = 0) alors Ecrire(d) nb ← nb/d Sinon
d ← d + 1 Fin Si Fin Tant que Fin
algo Décomposition var nombre : entier var d: entier Début Lire(nombre) d ← 2 Tant que (nb>1) Faire Tant que (nb % d = 0) Faire Ecrire(d) nb ← nb/d Fin Tant que d ← d + 1 Fin Tant que Fin
Même exercice mais avec affichage des puissances. algo Décomposition var nombre : entier var d: entier var cpt : entier Début nombre ← Lire() d ← 2 cpt ← 0 Tant que (nb>1) Faire Tant que (nb % d = 0) Faire cpt ← cpt + nb ← nb/d Fin Tant que Si (0 < cpt) alors Ecrire(d+"ppuissance " + cpt) cpt ← 0 Fin Si d ← d + 1 Fin Tant que Fin
Écrire un algorithme qui affiche la somme des n premiers entiers algo SommeNPremierPour var n : entier