IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Garde dans le select


Sujet :

Ada

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Garde dans le select
    Bonjour tout le monde. J'ai le listing suivant dans le corps d'une
    tache ( un tunnel ferroviaire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select
    accept entrer(sdc: in sensDeCirculation; reponse: out boolean) do
                            if sdc=sdt then
                                    trains_dans_tunnel:=trains_dans_tunnel+1;
                                    reponse:=true;
                                    trains_passes:=trains_passes+1;
                            else
                                    reponse:=false;
                            end if;
    end entrer;
    Le tunnel signale qu'un train peut entrer via le parametre do sortie
    "reponse", et un train ne peut n'entre que s'il recoit une reponse
    positive ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    loop
            tunnel.entrer(sdc,autorisation);
            exit when autorisation;
            delay 0.1;
    end loop;
    Je voudrais eviter d'utiliser le parametre de retour et la boucle
    active, ce qui donnerait dans le corps du tunnel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select
    when sdt=sdc => accept entrer(sdc: in sensDeCirculation) do
                            trains_dans_tunnel:=trains_dans_tunnel+1;
                            trains_passes:=trains_passes+1;
    end entrer;
    Mais biensur, la variable sdt n'est pas visible avant l'execution de
    "entrer".
    Quelle solution me proposez-vous? Merce

  2. #2
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Points : 383
    Points
    383
    Par défaut
    Juste une question, ça représente quoi sdt ?
    bon, sinon, un début de réponse, c'est de coder une fonction de vérification des conditions d'entrée dans le tunnel style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function check_conditions_d_entree(sdc : sensDeCirculation) return Boolean is
    begin
           if sdc=sdt then
                   return true;
           else
                   return false;
           end if;
    end check_conditions_d_entree;
    Que tu peux appeler dans ta barrière.

  3. #3
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Points : 383
    Points
    383
    Par défaut
    Oublies ce que j'ai dit, je devrais pas m'attaquer à la moquette dès 10h du mat'
    C'est n'importe quoi
    Bon, ça dit pas ce que représente sdt

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour.
    Sdt est le sens de circulation dans le tunnel. C'est une variable locale a la task tunnel.
    Mon erreur etait dans la conception de la tache tunnel, la task tunnel ne possedait qu'une seule entry pour signaler l'entree dans le tunnel, alors qu'il aurait fallu la doter de deux entry. Voila comment j'ai resolu le probleme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select
                    --autorisation: variable booleenne locale a la tache 
                    when autorisation and trains_passes< NB_MAX =>
                        accept entrers1 do
                            trains_dans_tunnel:=trains_dans_tunnel+1;
                            trains_passes:=trains_passes+1;
                        end entrers1;
                or
                    when (not perms1) and trains_passes< NB_MAX =>
                        accept entrers2 do
                            trains_dans_tunnel:=trains_dans_tunnel+1;
                            trains_passes:=trains_passes+1;                       
                        end entrers2;
    Et dans le code du train:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if sdc=s1 then
                tunnel.entrers1;
            else
                tunnel.entrers2;
            end if;
    Sdc est le sens de circulation du train.
    P.S: J'ai oublie de le preciser, mais le tunnel n'a qu'une voie et ne peut laisser passer qu'au plus, NB_MAX trains dans un sens.
    En tout cas, merci pour votre reponse.

Discussions similaires

  1. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44
  2. [interbase][SQL] concatener 2 champs dans le select
    Par Harry dans le forum Bases de données
    Réponses: 10
    Dernier message: 09/03/2006, 06h45
  3. Joindre une valeur arbitraire dans un SELECT
    Par Tuxxy dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/01/2004, 17h04
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo