Objectifs
Exercice 1
Enoncé
On souhaite construire un programme qui lit à partir du clavier
les informations suivantes vous concernant : nom, age
et afffiche ses informations sur l'écran (sortie standard) dans
le format donné en exemple ci-dessous.
===============================
Nom :
Dupont
Age :
42 ans
La première colonne (les labels) sont alignés sur la colonne
10
La seconde colonne (les infos lues) sur la colonne 25
Les première et dernière ligne contiennent 35 caractères
"="
Travail demandé
1.Compléter la spécification du problème
2.Construire l'algorithme par raffinements successifs
3.Coder l'algorithme en Ada.
Solution
Algorithme
-- raffinement niveau 1
début
Lire les informations (nom,age);
Afficher les informations
lues;
fin;
-- raffinement niveau 2.1
-- Lire les informations (nom,age);
début
afficher la chaine "Taper
votre nom : ";
lire le nom;
passer à la ligne suivante;
afficher la chaine "Taper
votre age : ";
lire l'age;
passer à la ligne suivante;
fin;
-- raffinement niveau 2.2
-- Afficher les informations lues;
début
afficher la première
ligne du cadre;
afficher la seconde ligne;
afficher la troisième
ligne;
fin;
-- raffinement niveau 3.2.1
-- afficher la première ligne
du cadre;
début
afficher 35 caractères
'=';
fin;
-- raffinement niveau 3.2.2
-- afficher la seconde ligne du cadre;
début
placer le curseur sur la colonne
10;
afficher la chaine : "Nom
: ";
placer le curseur sur la colonne
25;
afficher le nom lu;
fin;
-- raffinement niveau 3.2.3
-- afficher la troisième ligne
du cadre;
début
placer le curseur sur la colonne
10;
afficher la chaine : "Age
: ";
placer le curseur sur la colonne
25;
afficher l'age lu;
fin;
Codage Ada de l'algorithme
with Ada.Text_Io; use Ada.Text_Io;
with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
procedure exo1 is
nom:String(1..15);
prenom:String(1..12);
age:Integer;
taille:Float;
begin
-- Lire les informations (nom,age);
put("Tapez votre nom
sur 15 car: ");
get(nom);
skip_line;
put("Tapez votre age : ");
get(age);
skip_line;
-- Afficher les informations lues;
-- afficher
la première ligne du cadre;
for i in
1..35 loop
put("=");
end loop;
new_line;
--
afficher
la seconde ligne du cadre;
set_col(3);
put("Nom : ");
set_col(20);
put_line(nom);
--
afficher
la troisième ligne du cadre;
set_col(3);
put("Age : ");
set_col(20);
put(age,width=>2);
new_line;
end exo1;