Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1488 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  appel de procédure externe en Ada

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appel de procédure externe en Ada

n°1124605
loucki
Posté le 19-06-2005 à 16:45:39  profilanswer
 

Bonjour,
 
Voilà le problème, j'ai un fichier principal 'proceduremain.adb' qui contient une procédure 'proceduremain' avec plusieurs choix possibles pour l'utilisateur:
Si l'utilisateur tape '1' il exécute une procédure 'procedure1' (sans paramètres) qui se trouve dans le fichier 'procedure1.adb'. Cette procédure marche de façon "autonome".
Si l'utilisateur tape '2' il exécute une procédure 'procedure2' (sans paramètres) qui se trouve dans le fichier 'procedure2.adb'. Cette procédure marche de façon "autonome".
...
etc
Est-ce que quelqu'un pourrait m'expliquer comment implémenter les procédures autonomes 'procedure1', 'procedure2', ...,etc. dans la procédure principale 'proceduremain', s'il vous plaît ?
(C'est un peu comme si on faisait un 'include' d'une procédure externe au sein de son prog principal, je crois !)
 
 
Merci,
 
loucki

mood
Publicité
Posté le 19-06-2005 à 16:45:39  profilanswer
 

n°1258102
apprentitu​x
Posté le 03-12-2005 à 15:01:13  profilanswer
 

Clause with....

n°1271345
Profil sup​primé
Posté le 21-12-2005 à 15:28:37  answer
 

procedure proceduremain is
procedure procedure1 is separate;
procedure procedure2 is separate;
begin
   null; --appel procedure1,procedure2
end;
 
-----------------------------------------------
procedure procedure1 is
separate (proceduremain)
begin
   null;
end procedure1;
 
idem pour procedure2

n°1272989
apprentitu​x
Posté le 24-12-2005 à 18:06:02  profilanswer
 

La syntaxe du separate est fausse :
Exemple:
 
Dans "principale.adb" :

Code :
  1. Procedure principale is
  2. function truc (...) return ... is separate;
  3. begin
  4.   ...
  5. end Principale;


Puis dans "principale-truc.adb" :

Code :
  1. with ....; use ....;
  2. separate(principale) -- pas de ';'
  3. function truc (...) return ... is
  4. begin
  5.   ....
  6. end truc;

n°1272992
apprentitu​x
Posté le 24-12-2005 à 18:14:18  profilanswer
 

De plus ce n'était pas la réponse à la question posée.
Là jovalise, tu implémente un sous-programme séparemment alors que loucki demandait un equivalent de procedure externe.
 
'Separate ' veut dire qu'on compile séparemment du sous-programme principal un autre sous programme qui est sémantiquement inclu dans le sous-programme principal : on peut d'ailleurs lui passer des paramètres.
 
Ce que demandait loucki, c'était juste de pouvoir utiliser dans son prog d'autres prog " qui s'exécutent de façon autonome ".
D'où ma réponse "clause with".

n°1273034
Profil sup​primé
Posté le 24-12-2005 à 22:13:20  answer
 

j'avais cru comprendre, tu m'excusera pour les faute d'orthographe, que ca revenai au même puisque with, c'est mon avis, fais la même chose,  
 
[citation]compile séparemment[/citation]
 
Ou alors c'est carement un truc du genre "import"

n°1273037
apprentitu​x
Posté le 24-12-2005 à 23:22:52  profilanswer
 

Non, c'est pas du tout pareil.
 
En fait, tu utilise la compilation séparée dans 2 cas :
1) Quand tu as un sous-programme de taille importante qui risque de rendre ton code lourd à comprendre, tu rend ton sous-programme "separate".
Si le nom de ce sous-programme est assez explicite, ton prog principal sera beaucoup plus facile à comprendre sans les 300 lignes d'une méthode s'appelant par exemple "trier", et dont le nom suffit à comprendre ce qu'elle fait.
 
2) Si ton sous-programme est le seul à nécessiter la compilation avec d'autre bibliothèques par exemple ada.numerics.* ... tu peut rajouter les with et les use dans le fichier séparé, ce qui rend plus clair (pour celui qui lit le code) la compilation avec ces paquetages: on comprend directe pour qui servent ces with...
 
Pour rajouter une remarque au 1), tu peut considérer le cas suivant:
Imagine que le programme que tu écrit contient une ou deux très grosses fonctions ou procedures et que celles-ci sont validées, càd que tu sait qu'elles marchent.
Cependant, le reste est en débuggage, et tu recompile sans arret en ajoutant des modifs (ça doit t'arriver svt non?).
Et bien en extrayant ces sous-programmes volumineux de ton "main", tu recompileras plus vite celui-ci car les sous-programmes extraits n'aurront pas à être recompilé.
Juste une édition de lien sera nécessaire, et t'aurras moins à attendre pour peut que ta config est légère.
 
Voilà à quoi ça sert la compil séparée, à dégraisser l'mammouth !

n°1273039
apprentitu​x
Posté le 24-12-2005 à 23:30:08  profilanswer
 

Par contre, écrire:
with Ma_Fontion;
.....
 
Est complètement différent.
Dans ce cas, Ma_fonction est contenu dans un fichier (ma_fonction.adb) et n'a aucun rapport avec ton programme, en particulier elle ne peut utiliser les types et méthodes que tu y déclare, alors que les sous-prog compilés séparemment le peuvent (puisque c'est comme si ils étaient à l'intérieur du main), pour peut qu'ils aient étés déclarés après ces types ou méthodes bien sur.
 
Voilà, j'espère que tu y voit un peut plus clair maintenant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  appel de procédure externe en Ada

 

Sujets relatifs
lancer une procedure dans un triggerprobleme appel date du jour dans BDD
problème avec ma procédure sous oracleprocedure dans une procedure
Appel de la méthode OnMouseDown d'une grille sous C++ Builder[MySQL] Variable dans une procédure
lancer une application java externeExécuter procedure apres insertion dans input
Appel de fonction avec les touches directionnellesAppel de bibliotheque en php
Plus de sujets relatifs à : appel de procédure externe en Ada


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR