ED n·5 Algorithmique-Programmation-----corrigé |
Exercice 1
Enoncé
Ecrire une procédure getSomme qui
lit une suite d'entiers (chacun d'eux compris entre 0 et 20), et en calcule
la somme. En cas d'erreur (le caractère lu est un entier non compris
entre 0 et 20), une nouvelle saisie doit être effectuée. Le
calcul s'arrête dès que le caractère lu n'est pas un
chiffre.
NB : on utilisera les exceptions prédéfinies
DATA_ERROR
et CONSTRAINT_ERROR.
Question 1
début
initialiser la somme à 0;
-- cas général
tant que vrai faire
afficher : "Veuillez
saisir un entier entre 0 et 20 ";
afficher : "ou
un entier non compris dans cet intervalle pour terminer la saisie
: ";
lire l'élément;
cumuler l'élément
lu à la somme;
fin tant que;
-- cas particuliers
si l'élément
<0 ou >20 alors afficher : "Recommencer
la saisie";
si l'élément
n'est pas un chiffre alors afficher : "Saisie
terminée!";
fin.
Question 2
procedure getSomme(X:out integer)
;
Question 3
procedure getSomme(X:out integer)
is
subtype Note is integer
range 0..20;
elt:Note;
S:integer:=0;
begin
loop
begin
put_line("Veuillez saisir
un entier entre 0 et 20 ");
put("ou un entier non
compris dans cet intervalle pour terminer la saisie : ");
get(elt);
S:=S+elt;
exception
when CONSTRAINT_ERROR=>
put_line("recommencez !");skip_line;
when DATA_ERROR=>put_line("La
saisie est terminée");X:=S;exit;
end;
end loop;
end getSomme;
Question 4
with Ada.Text_io;use Ada.Text_io;
with Ada.Integer_Text_io;use Ada.Integer_Text_io;
procedure lecture is
somme:Integer;
procedure getSomme(X:out
integer) is
subtype Note is integer
range 0..20;
elt:Note;
S:integer:=0;
begin
loop
begin
put_line("Veuillez saisir
un entier entre 0 et 20 ");
put("ou un entier non
compris dans cet intervalle pour terminer la saisie : ");
get(elt);
S:=S+elt;
exception
when CONSTRAINT_ERROR=>
put_line("recommencez !");skip_line;
when DATA_ERROR=>put_line("La
saisie est terminée");X:=S;exit;
end;
end loop;
end getSomme;
begin
getSomme(somme);
put("La somme des entiers lus est : ");
put(somme,width=>3);
new_line;
end lecture;