Rockleader a écrit:Non pas vraiment car quand jappelle la fonction dans un put, elle va m'afficher un true si le nombre est premier et un false s'il n'est pas premier. Après bien sur je pourrais mettre une chaîne de caractère mais ce n'est pas ce que je cherchais à faire ici.
Dans ce cas, pourquoi mettre les deux types d'affichage après un test. A chaque tour de roue, le programme appelle deux fois la fonction. Sur ton système tu ne t'en rends pas compte car c'est instantané.
Imagine que quand j'ai commencé, nous devions payer en fonction du nombre de cycle processeur que nous utilisions sur le système de notre fournisseur; ton code aurait doublé la facture ! Sans compter que s'il faut 5 min à chaque appel, il faut aussi attendre deux fois plus de temps.
Même si aujourd'hui il n'y a plus de raison pratique pour avoir à limiter les efforts réalisés par la machine, cela reste quand même une bonne pratique informatique.
Si tu veux juste afficher TRUE et FALSE pour les 100 premiers nombres, alors maintenant que tu as défini la fonction booléenne ESTPREMIER le code suivant suffit :
- Code: Tout sélectionner
cpt := 1;
While(cpt < 100) loop
put(cpt);put(estPremier(cpt));
cpt := cpt + 1;
end loop;
Et là, il n'y a qu'un seul appel de la fonction par tour de manivelle.
Tu peux aussi prendre l'habitude pour les boucles dont les bornes sont prédéfinies d'utiliser la structure dédiée; c'est plus clair et évite d'avoir à incrémenter explicitement le compteur ;
- Code: Tout sélectionner
FOR cpt IN Integer RANGE 1 .. 100 LOOP
PUT(cpt);PUT(estPremier(cpt));
END LOOP;
L'ADA est un language de TYPE, une grande partie des codes utilise cet avantage en définissant des énumératin, des type particulier à chaque objet manipulé.
Une bonne habitude est de définir l'énumération (ici les 100 premiers entiers que prend cpt) en début de programme, puis dans le code d'utiliser le nom donné à ce TYPE (ou sous-TYPE).
Ainsi, si tout à cup on veux utiliser cpt allant de 1 à 1000 , il suffit simplement de changer sa déclaration dans l' "entête" du code. Et si c'est bien écrit, rien ne change dans le reste du code.