Bases de programmation - TD 2 : Itérations et tableaux

publicité
Bases de programmation - TD 2 : Itérations et tableaux
IUT Aix-Marseille / DUT R&T 1ière année
J. Seinturier (http://www.seinturier.fr)
1. Itérations
Exercice 1.1 : Ecrire un algorithme qui demande à l’utilisateur un nombre compris entre 1 et 3 jusqu’à ce que la
réponse convienne.
algorithme triplette
données
n : entier
début
ecrire("Entrez un nombre entre 1 et 3")
n ← lire()
tantque n < 1 ou n > 3 faire
ecrire("Saisie erronée. Recommencez”)
n ← lire()
fintq
fin
Exercice 1.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.
algorithme justeprix
données
n : entier
début
n ← 0
ecrire("Entrez un nombre entre 10 et 20")
tantque n < 10 ou n > 20 faire
n ← lire()
si n < 10 alors
ecrire("Plus grand !")
sinon
si n > 20 alors
ecrire("Plus petit !")
finsi
finsi
fintq
fin
Exercice 1.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.
algorithme dix_suivants
données
n :entier
cpt : entier
début
ecrire("Entrez un nombre : ")
n ← lire()
cpt ← 1
ecrire("Les 10 nombres suivants sont : ")
tantque cpt ≤ 10 faire
ecrire(n + cpt)
cpt ← cpt + 1
fintq
fin
Exercice 1.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) l’algorithme doit afficher :
Table de 7 :
7x1=7
7 x 2 = 14
7 x 3 = 21
On pourra pour cela utiliser la fonction ecrire()
en lui passant plusieurs paramètres, par exemple :
ecrire(‘’7 x 1 = ‘’, 7)
algorithme multiplication
données
n : entier
i : entier
début
ecrire("Entrez un nombre : ")
n ← lire()
i ← 1
ecrire("La table de multiplication de ce nombre est : ")
tanque i ≤ 10 faire
ecrire(n, " x ", i, " = ", n x i)
i ← i + 1
fintq
fin
Exercice 1.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
Modifiez ensuite l’algorithme pour que le programme affiche de surcroît en quelle position avait été saisie ce
nombre.
algorithme somme
données
n, i, som : entier
début
ecrire("Entrez un nombre : ")
n ← lire()
som ← 0
i ← 1
tanque i ≤ n faire
som ← som + i
i ← i + 1
fintq
ecrire("La somme est: ")
ecrire(som)
fin
algorithme max
données
val, max, cpt, index : entier
début
cpt ← 0
max ← 0
tantque cpt < 20 faire
val ← lire()
si val > max alors
max ← val
index ← cpt
finsi
cpt ← cpt + 1
fintq
ecrire(max)
ecrire(index)
fin
Exercice 1.6 : Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa factorielle. Par exemple,
la factorielle de 8, notée 8!, vaut 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8
algorithme factorielle
données
n : entier
fact : entier
début
ecrire(‘’Entrer un nombre entier : ’’)
n ← lire()
fact ← 1
tantque n > 1 faire
fact ← fact x n
n ← n - 1
fintq
ecrire(n, ‘’ ! = ’’, fact)
fin
Exercice 1.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 :
algorithme max
données
val, max, cpt : entier
début
cpt ← 0
max ← 0
tantque cpt < 20 faire
val ← lire()
si val > max alors
max ← val
finsi
cpt ← cpt + 1
fintq
ecrire(max)
fin
Exercice 1.8 : 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, demander 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.
algorithme caisse
données E, somdue, M, Reste, Nb10E, Nb5E : entier
début
E ← 1
somdue ← 0
tantque E ≠ 0 faire
ecrire("Entrez le montant : ")
E ← lire()
somdue ← somdue + e
fintq
ecrire("Vous devez :", somdue, " euros")
ecrire("Montant versé :")
M ← lire()
Reste ← M - somdue
Nb10E ← 0
tantque Reste ≥ 10 faire
Nb10E ← Nb10E + 1
Reste ← Reste – 10
fintq
Nb5E ← 0
si Reste ≥ 5 alors
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
2. Tableaux
Exercice 2.1 : Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant
toutes à zéro.
algorithme tab7
données
tab : entier[]
i : entier
début
tab ← entier[7]
i ←0
tantque i < taille(tab) faire
tab[i] ← 0
i ← i + 1
fintq
fin
Exercice 2.2 : Ecrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de l’alphabet
latin.
algorithme tabLatin
données
tab : caractère[]
début
tab ← caractère[6]
tab[0]
tab[1]
tab[2]
tab[3]
tab[4]
tab[5]
fin
←
←
←
←
←
←
‘a’
‘e’
‘i’
‘o’
‘u’
‘y’
Exercice 2.3 : Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite saisir les valeurs par
l’utilisateur.
algorithme saisie
données
notes : réel[]
i : entier
début
notes ← réel[9]
i ← 0
tantque i < taille(notes) faire
ecrire(‘’Entrer la valeur ‘’, i, ‘’ : ‘’)
tab[i] ← lire()
i ← i + 1
fintq
fin
Exercice 2.4 : Ecrire un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui seront
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.
algorithme saisieMultiple
données
tab : entier[]
positive : entier
negative : entier
cpt : entier
début
ecrire(‘’taille du tableau : ‘’)
cpt ← lire()
tab ← entier[cpt]
positive ← 0
negative ← 0
cpt ← 0
tantque cpt < taille(tab) faire
tab[cpt] ← lire()
si tab[cpt] ≥ 0 alors
positive ← positive + 1
sinon
negative ← negative + 1
finsi
cpt ← cpt + 1
fintq
ecrire(positive)
ecrire(negative)
fin
Exercice 2.5 : Ecrire un algorithme calculant la somme des valeurs d’un tableau donné en entrée. Penser à
retrouver la taille du tableau.
algorithme sommeEntree
entrées
tab : réel[]
données
i : entier
somme : réel
début
i ← 0
somme ← 0
tantque i < taille(tab) faire
somme ← somme + tab[i]
i ← i + 1
fintq
fin
Exercice 2.7 : Ecrire un algorithme constituant un tableau, à partir de deux tableaux de même longueur donnés
en entrée. Le nouveau tableau sera la somme des éléments des deux tableaux de départ.
Exercice 2.9 : Ecrire un algorithme permettant, à l’utilisateur de saisir les notes d'une classe. Et qui renvoie le
nombre de ces notes supérieures à la moyenne de la classe.
algorithme concat
entrées
tab1 : entier[]
tab2 : entier[]
données
result : entier[]
cpt, index: entier
début
algorithme supMoyenne
données
notes : réels[]
moyenne : réel
sup : entier
cpt : entier
début
ecrire(‘’Nombre d’élèves : ‘’)
cpt ← lire()
notes ← réels[cpt]
result ← entier[taille(tab1) + taille(tab2)]
cpt ← 0
index ← 0
tantque cpt < taille(tab1) faire
result[index] ← tab1[cpt]
cpt ← cpt + 1
index ← index + 1
fintq
cpt ← 0
tantque cpt < taille(tab2) faire
result[index] ← tab2[cpt]
cpt ← cpt + 1
index ← index + 1
fintq
fin
Exercice 2.8 : Ecrire un algorithme qui permette la saisie d’un nombre quelconque de valeurs. Toutes les valeurs
doivent être ensuite augmentées de 1, et le nouveau tableau doit être affiché à l’écran.
algorithme pluUn
données
nombres : entier[]
cpt : entier
début
ecrire(‘’Nombre de valeurs : ‘’)
cpt ← lire()
nombres ← entier[cpt]
cpt ← 0
tantque cpt < taille(nombres) faire
nombres[cpt] ← lire() + 1
cpt ← cpt + 1
fintq
cpt ← 0
tantque cpt < taille(nombres) faire
ecrire(nombres[cpt])
cpt ← cpt + 1
fintq
fin
moyenne ← 0
sup ← 0
cpt ← 0
tantque cpt < taille(notes) faire
notes[cpt] ← lire()
moyenne ← moyenne + notes[cpt]
cpt ← cpt + 1
fintq
moyenne ← moyenne / taille(notes)
cpt ← 0
tantque cpt < taille(notes) faire
si notes[cpt] ≥ moyenne alors
sup ← sup + 1
finsi
cpt ← cpt + 1
fintq
ecrire(‘’Nombre de notes au dessus de la moyenne :’’)
ecrire(sup)
fin
Téléchargement