ED  n°1   Algorithmique-Programmation : corrigé

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;