Débuter en Ada avec AdaGIDE

Pour débuter en Ada, je vous propose ce petit programme qui n’a comme utilité que de montrer les bases du langage et aussi de vous faire connaitre un petit environnement de développement sans prétention , mais qui est rapide et qui marche bien: AdaGIDE.

Avant d’utiliser le programme, il faudra créer le fichier “test.csv” dans le répertoire de l’exécutable (Ada produit des exécutable “.exe” ce qui en fait un outil rapide). Ce fichier doit contenir par exemple :

test1,test2,test3

ligne1,ligne2,ligne3

Les lignes sans “, ” ou sans contenu ne seront pas affichées à l’écran.

Programme (à copier-coller dans un fichier ada.adb) :


– Programme ‘affichage d’un fichier csv
– Ce programme tout simple permet d’afficher sur une colonne chaque éléments d’un fichier csv

– Remarques de notations :
– Les noms de variables ne possèdent pas de “_”, les noms de type oui
– Les noms de types commencent par une lettre suivi de “_” par exemple :
– I_IndexChaine est dérivé d’Integer donc on met un “I_” devant le nom du type

with Ada.Text_IO;
use  Ada.Text_IO;
with Ada.Strings.Fixed;
use  Ada.Strings.Fixed;

procedure Hello is

— nouvelles definitions

MaxChaineLong : constant Integer := 512 * 512;
– Déclaration de la chaine de travail
subtype I_IndexChaine is Integer range 1 .. MaxChaineLong;
subtype I_ResultIndex is Integer range 0 .. MaxChaineLong;
InputFile : File_Type;

begin
Put_Line (“Affichage du fichier test.csv”);
–    On ouvre le fichier
Open(InputFile,In_File,”test.csv”);

while not End_Of_File(InputFile) loop
declare
Ligne      : String        := Get_Line (InputFile);          — Récupére la ligne courante
Resultat   : I_ResultIndex := Index (Ligne, “,”);            — Recherche de la     permière “,” dans la ligne
PosChaine  : I_IndexChaine := Ligne’First;                   — On se positionne sur le début de la ligne
PosVirgule : I_IndexChaine;
begin
if not (0 = Resultat) then
– il y a au moins une virgule sur cette ligne, s’il y en a pas on ne tient pas compte de la ligne
– parce que en l’occurence on considère que c’est une erreur.
PosVirgule := Resultat;
– le résultat devient la position de la virgule
loop
declare
Resultat     : I_ResultIndex := Index (Ligne, “,”, From => PosChaine);
PosVirgulex : I_IndexChaine;
begin

if not  (0 = Resultat) then
– Il reste une virgule avant la fin de la ligne
PosVirgulex := Resultat;
Put_Line(Ligne( PosChaine .. PosVirgulex-1 ));
PosChaine :=  PosVirgulex+1 ;
else
– Il ne reste plus de virgule avant la fin de la ligne
Put_Line(Ligne( PosChaine .. Ligne’Last ));
exit;
end if;
end;
end loop;
end if;
end;
end loop;

Close(InputFile);

end Hello;

  • LinkedIn
  • MySpace
  • Viadeo
  • Yahoo Bookmarks
  • Facebook
  • Ping
  • Twitter
  • Blogger Post
  • Windows Live Favorites
  • Jamespot
  • Technorati Favorites
  • Yoolink
  • Google Bookmarks
  • Share/Save/Bookmark
This entry was posted in Développement and tagged , . Bookmark the permalink.

Comments are closed.