TD1 Algorithmes
Transcript of TD1 Algorithmes
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 1/9
SRC-FC / INF120 - Algorithme Page 1
T D
T D - A l g o r i t h m e s
1) Paire ou impaireEcrire un algorithme qui demande un nombre (saisie) et qui affiche Paire ou Impaire selon sa valeur.
Corrigé// Algorithme Paire ou Impaire
Déclaration des variables
Var nombre : Entier
Début
Afficher("Saisir un nombre entier : ")
saisir nombre
Si (nombre module 2) = 0 Alors
Afficher(nombre," est paire“)
Sinon
Afficher(nombre,“ est impaire“)
FinsiFin
2) Paire ou impaire et boucleReprendre l’algorithme en 1) et le modifier de manière à répéter les opérations tant que la valeur dunombre est différente de zéro.
Corrigé
// Algorithme Paire ou Impaire et Boucle
Déclaration des variables
Var nombre : Entier
Début
// Amorçage
Afficher("Saisir un nombre entier : ")
saisir nombre
// Boucle avec un nombre inconnu d’itérations
Tant que (nombre<>0) faireSi (nombre module 2) = 0 Alors
Afficher(nombre," est paire“)
Sinon
Afficher(nombre,“ est impaire“)
Finsi
Afficher("Saisir un nombre entier : ")
saisir nombre
Fin tanqueFin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 2/9
SRC-FC / INF120 - Algorithme Page 2
T D
3) Ça dépend de l’âge !
Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur. Ensuite, il indique sa catégorie :o "Poussin" de 6 à 7 anso "Pupille" de 8 à 9 anso "Minime" de 10 à 11 anso "Cadet" après 12 ans
Corrigé
// Algorithme Boucles imbriquées
Déclaration des variables
Var age : Entier
Début
Afficher("Entrez l’âge de l’enfant : ")
saisir age
Si age >= 12 Alors
Afficher("Catégorie Cadet")
Sinon
Si age >= 10 Alors
Afficher("Catégorie Minime")
Sinon
Si age >= 8 Alors
Afficher("Catégorie Pupille")
Sinon
Si age >= 6 Alors
Afficher("Catégorie Poussin")
Sinon
Afficher(“Pas classé“)
Finsi
Finsi
Finsi
FinsiFin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 3/9
SRC-FC / INF120 - Algorithme Page 3
T D
4) Trouvé, c’est gagné. Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponseconvienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », etinversement, « Plus grand ! » si le nombre est inférieur à 10.
Corrigé
// Algorithme Trouvé c’est gagné
Déclaration des variables
Var nombre : Entier
Début
// Amorçage
Afficher("Saisir un nombre entre 10 et 20 : ")
saisir nombre
// Boucle avec un nombre inconnu d’itérations
Tant que (nombre<10 ou nombre>20) faireSi nombre<10 Alors
Afficher(" Plus grand !“)
Finsi
// Ici on réalise un test pour une meilleure
// lecture mais il n’est pas nécessaire
Si nombre>20 Alors
Afficher( “Plus petit !“)
Finsi
Afficher("Saisir un nombre entre 10 et 20 : ")saisir nombre
Fin tanque
Afficher(nombre,“ est bien compris entre 10 et 20“) Fin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 4/9
SRC-FC / INF120 - Algorithme Page 4
T D
5) Payer ses dettesLire la suite des prix (en euros entiers et terminée par zéro) des achats d’un client. Calculer la sommequ’il doit, lire la somme qu’il paye, et simuler la remise de la monnaie.
Corrigé
// Algorithme Payer ses dettes
Déclaration des variables
Var Prix : Entier
Var Total : Entier
Var Paiement : Entier
Début
// Amorçage
Afficher("Saisir un prix en euros (entier) : ")
saisir PrixTotal = 0
// Boucle avec un nombre inconnu d’itérations
Tant que (prix<>0) faire
Total Total + Prix
Afficher("Saisir un prix en euros (entier) : ")
saisir Prix
Fin tanque
Afficher(“Vous devez la somme de “,Total)
Afficher(“Entrer votre paiement“) Saisir Paiement
Si Paiement<Total Alors
Afficher(“Paiement insuffisant“)
Sinon
Afficher(“Nous vous devons“,Total-Paiement)
FinsiFin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 5/9
SRC-FC / INF120 - Algorithme Page 5
T D
6) Que produit l’algorithme suivant ? Algorithme
Tableau Nb(5) en Entier Var compteur : Entier
DébutPour compteur ← 0 à 5
Nb(compteur) ← compteur * compteur Fin pour Pour compteur ← 0 à 5
Ecrire Nb(compteur)Fin pour
Fin
Peut-on simplifier cet algorithme avec le même résultat ?
Corrigé
Ce programme remplie un tableau avec le carré des 6 premiers entiers. Il faut corriger la dimension dutableau Tableau Nb(6). Puis il affiche les valeurs obtenues.On aurait pu simplifier ainsi :Algorithme
Tableau Nb(6) en Entier Var compteur : Entier
DébutPour compteur ← 0 à 5
Nb(compteur) ← compteur * compteur Ecrire Nb(compteur)Fin pour
Fin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 6/9
SRC-FC / INF120 - Algorithme Page 6
T D
7) Gérer un tableauEcrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, quidevront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre devaleurs 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é
// Algorithme Gérer un tableau
Déclaration des variables
Var Nb : Numérique
Var Nbpos : Numérique
Var Nbneg : Numérique
Var Tableau T() : Numérique
DebutAfficher("Entrez le nombre de valeurs :")
Saisir Nb
// On redimensionne le tableau
Redim T(Nb)
// On met à zéro les compteurs
Nbpos ← 0
Nbneg ← 0
Pour i ← 0 à Nb - 1
Ecrire "Entrez le nombre n° ", i + 1
Saisir T(i)
Si T(i) > 0 alors
Nbpos ← Nbpos + 1
Sinon
Nbneg ← Nbneg + 1
Finsi
Fin pour
Afficher("Nombre de valeurs positives : ", Nbpos)
Afficher("Nombre de valeurs négatives : ", Nbneg)
Fin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 7/9
SRC-FC / INF120 - Algorithme Page 7
T D
8) Fusionner deux tableauxEcrivez 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é
// Algorithme : fusion de deux tableaux
Déclaration des variables
Var i, N : Numérique
// T1 et T2 comptent N éléments déjà saisis
Var Tableaux T1(), T2(), T3() : Numérique
Debut
// Redimensionnent du tableau en fonction de N
N 8
Redim T3(N)
Pour i ← 0 à N - 1T3(i) ← T1(i) + T2(i)
Fin pourFin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 8/9
SRC-FC / INF120 - Algorithme Page 8
T D
9) Une boucleEcrire 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.
Corrigé
// Algorithme Somme d’entiers
Déclaration des variables
Var nombre : Entier
Var somme : Entier
Début
// Amorçage
Afficher("Saisir un nombre entier : ")
saisir nombre
// Boucle avec un nombre connu d’itérations
Somme 0
Pour i1 à nombre
Somme Somme + i
Fin pour
Afficher(“La somme des entiers jusqu’à “,nombre)
Afficher(“ est “,Somme)
Fin
7/28/2019 TD1 Algorithmes
http://slidepdf.com/reader/full/td1-algorithmes 9/9
SRC-FC / INF120 - Algorithme Page 9
T D
10) Un tableau bien rangé
Ecrivez un algorithme qui permette de saisir un nombre quelconque de valeurs, et qui les range au fur et à mesure dans un tableau. Le programme, une fois la saisie terminée, doit dire si les éléments du
tableau sont tous consécutifs ou non.Par exemple, si le tableau est :
12 13 14 15 16 17 18
ses éléments sont tous consécutifs. En revanche, si le tableau est :
9 10 11 15 16 17 18
ses éléments ne sont pas tous consécutifs.
Corrigé
// Algorithme Tableau rangé
Déclaration des variables
Var Nb, i : Entier
Var Flag : Booleen
Var Tableau T() : Entier
Debut
Afficher("Entrez le nombre de valeurs :")
Saisir Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
Afficher("Entrez le nombre n° ", i + 1)
Saisir T(i)
Fin pour
// Flag est une variable utilisé comme un indicateur
// (drapeau qui change selon la situation
Flag ← Vrai
// Boucle avec un nombre connu d’itérations Pour i ← 1 à Nb - 1
Si T(i) <> T(i – 1) + 1 Alors
Flag ← Faux
FinSi
Fin pour
Si Flag Alors
Afficher("Les nombres sont consécutifs")
Sinon
Afficher("Les nombres ne sont pas consécutifs")FinSi
Fin