Vous êtes sur la page 1sur 4

T.P.

VARI séance 1
Thèmes : les entrées/sorties de base, les types simples et le type tableau, les instructions :
affectation, conditionnelle, boucle for

Exercice 1
Affichage de l’identité de l’utilisateur
Programmer le premier exercice de l’ED1 :
On souhaite construire un programme qui lit à partir du clavier les informations suivantes
vous concernant : nom, age
et affiche ces 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 3
La seconde colonne (les infos lues) sur la colonne 20
Les première et dernière ligne contiennent 35 caractères "="

Travail demandé
Coder l'algorithme en Ada.
Afin d’entrer et d’afficher une chaîne de caractères de longueur variable, on pourra utiliser les
instructions get_line( chaine, nombrecaracteres) et put_line (chaine(1..nombrecaracteres)) .
Une solution
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);
age:Integer;
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;
Exercice 2
La course cycliste
Construire un programme qui enregistre l'arrivée d'une course cycliste par lecture au clavier
du numéro de dossard de chacun des 12 premiers coureurs pour la diffusion aux media et
l'affichage.
L'affichage du panneau sera réalisé selon le modèle suivant :

PLACE DOSSARD
1 163
2 42
3 14
etc...

La première colonne est alignée sur la colonne 5, la seconde sur la colonne 12.
Programmer le deuxième exercice de l’ED 2
1) Affichage du panneau de résultats
2) Modification du programme permettant de déclasser un coureur et affichage du
nouveau tableau. On utilisera pour cette modification un bloc interne au programme.
Une solution pour 1)
with Ada.Text_io;
with Ada.Integer_Text_io;
procedure arrivee is
type Course is array(1..12) of Natural;
tableau:Course;
begin
-- Lecture des numéros de dossards;
for i in tableau'range loop
Ada.Text_io.put("Tapez le numero du coureur arrivé ");
Ada.Integer_Text_io.put(i,width=>2);
Ada.Text_io.put("ème : ");
Ada.Integer_Text_io.get(tableau(i));
end loop;
--
-- Affichage du nouveau tableau d'arrivee
--
Ada.Text_io.put(" PLACE ");
Ada.Text_io.put(" DOSSARD ");
Ada.Text_io.new_line;
for i in tableau'first..11 loop
Ada.Text_io.set_col(5);
Ada.Integer_Text_io.put(i,width=>2);
Ada.Text_io.set_col(12);
Ada.Integer_Text_io.put(tableau(i),width=>2);
Ada.Text_io.new_line;
end loop;
end arrivee;

Une solution pour 2)


with Ada.Text_io;
with Ada.Integer_Text_io;
procedure arrivee is
type Course is array(1..12) of Natural;
tableau:Course:=(others=>0);
declasse:Natural:=0;
begin
--
-- Lecture et mémorisation des numéros de dossard des 12 premiers coureurs;
--
for i in tableau'range loop
Ada.Text_io.put("Tapez le numero du coureur arrivé ");
Ada.Integer_Text_io.put(i,width=>2);
Ada.Text_io.put("ème : ");
Ada.Integer_Text_io.get(tableau(i));
end loop;
--
-- Lire le numéro de dossard du coureur déclassé;
--
Ada.Text_io.put("Tapez le numero du coureur déclassé ");
Ada.Integer_Text_io.get(declasse);
Ada.Text_io.new_line;
--
-- Réactualisation du tableau d'arrivée
--
-- Recherche de la place du coureur déclassé;
--
declare
i:Integer range 1..12:=1;
begin
loop
exit when declasse=tableau(i);
i:=i+1;
end loop;
--
-- Décalage des coureurs arrivés derrière dans le tableau d'arrivée;
--
for j in i+1..12 loop
tableau(j-1):=tableau(j);
end loop;
end;
--
-- Affichage du nouveau tableau d'arrivee
--
Ada.Text_io.put(" PLACE ");
Ada.Text_io.put(" DOSSARD ");
Ada.Text_io.new_line;
for i in tableau'first..11 loop
Ada.Text_io.set_col(5);
Ada.Integer_Text_io.put(i,width=>2);
Ada.Text_io.set_col(12);
Ada.Integer_Text_io.put(tableau(i),width=>2);
Ada.Text_io.new_line;

Exercice 3
Calcul du volume d’un mur
Entrées/sorties sur les nombres entiers et réels. Conversion de type.
On souhaite calculer le volume d’un mur. L’utilisateur doit fournir la taille de chaque brique
hauteur, largeur, longueur en cm, ce sont donc des nombres réels. Il fournit également la
hauteur et la longueur du mur en nombre de briques
On demande de calculer le volume du mur et de l’afficher ;.