Instanciation
¡ PackageSequential_Integer_IO is new Ada.Sequential_IO (Integer);
¡ PackageDirect_Integer_IO isnew Ada.Direct_IO (Integer);
¡ Exception possibles:
l Status_Error: utilisation d’un fichier interne qui n’est pas associé àun fichier externe.
l Mode_Error: opération input sur un fichier en mode out ou append.
l Name_Error: Spécification d’un nom de fichier externe invalide au moment de l’association avec le fichier interne.
l Use_Error: opération input/output sur un fichier externe dont l’environnement n’accepte pas cette opération.
l Device_Error: Problème matériel, logiciel ou de média qui fournit le
service input/output.
l End_Error: tentative de lecture après la fin de ce dernier.
l Data_Error: les données ne respectent pas la forme attendue.
l Layout_Error: opération de formatage des données textuelles invalide.
Manipulation des fichiers externes
¡ Name et Formdécrivent le fichier externe
¡ File est le nom de fichier interne
Initialisation de l’ouverture du fichier
¡ Récupération de l’état du fichier
Entrées/Sorties
¡ Exemple
EXCEPTIONS
¡ Ada fournit un mécanisme d’exception qui permet de transférer le contrôle en dehors du cadre où un évènement se produit.
¡ Les évènements qui déclenchent des exceptions sont:
l end_of_file
l queue_overflow
l divise_by_zero
l storage_overflow
l ….
EXCEPTIONS PRÉDÉFINIES
¡ Constraint_Error(Numeric_Error) : qui correspond généralement àun dépassement des bornes, ce qui inclut le cas des problèmes en arithmétique tel que la division par zéro;
¡ Program_Error : qui apparaît si nous tentons de violer d’une certaine façon la structure de contrôle, comme lorsqu’on atteint un end dans une fonction,lorsqu l’on viole les règles d’accessibilitéou qu’on appelle un sous‐programme dont le corps n’a pas encoreété élaboré;
¡ Storage_Error : qui apparaîtra en cas de dépassement mémoire, par exemple, en cas d’appel de la fonction récursive Factorielle avec un paramètre trop grand;
¡ Tasking_Error : qui est levée si une tâche fait appelà une tâche avortée ou est le résultat d’un échec de communication entre 2 tâches
CADRE DE TRAITE D’EXCEPTION
¡ La syntaxe d’un bloc avec une partietraite_d’exception est la suivante:
begin
Suite_D_Instructions
exception
Traite_Exception
{Traite_Exception}
end;
Traite_Exception::=
when Choix_D_Exception{ |Choix_D_Exception} =>
Suite_D_Instruction
Choix_D_Exception::=Nom_D_Exception|[paramètre_de_choix:] others
¡ Exemple:
begin
‐‐ suite d’instructions exception
when Singularité|Numeric_Error=> Put (« La matrice est singulière »);
when Storage_Error=>
Put («Mémoire insuffisante »);
whenothers =>
Put (« Erreur fatale »);
raise Erreur;
end;
BLOCS
¡ Ada permet des déclarations locales et le traitement d’exception dans une suite d’instructions par l’intermédiaire des instructions de bloc.
¡ La syntaxe est:
instruction_bloc::=
[identificateur_de_bloc:]
[declare
liste_de_déclaration]
begin
suite_d_instructions
exception
traite_d_exception
{traite_d_exception}
end;
¡ Les blocs sont utilisés pour optimiser un programme et pour traiter localement les exceptions.
function Demain (aujourdhui: in T_Jour) return T_Jour is begin
return T_Jour’succ(aujourdhui);
exception
when Constraint_Error=>
return T_Jour’first;
end Demain ;
ü Les concepts de base pour la gestion des fichiers
ü Exploration des paquetages Input/Output
ü Comprendre la gestion des Exceptions