Une procédure peut elle retourner un entier? [Résolu]

saiyajin3 31 Messages postés mercredi 13 avril 2005Date d'inscription 24 juillet 2007 Dernière intervention - 22 juin 2006 à 11:56 - Dernière réponse : jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention
- 23 juin 2006 à 16:55
Voilà : Je souhaiterais que ma procédure fasse un calcul et me retourne un entier mais ça ne marche pas comme ça:

procedure Calcul(num: integer ; num2 : integer) : integer ;


(j'insiste sur le fait que c'est une procédure et pas une fconction )
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 22 juin 2006 à 12:34
3
Merci
Une procedure ne retourne pas de résultat, ce sont les fonctions qui font çà.

La différence entre une procedure et une fonction réside justement dans le faite que la procedure execute un code mais ne retourne rien et la fonction fait la meme chose mais renvoi une valeur.

On peut passer à une procedure comme à une fonction des paramètres (ou pas).

Donc pour ton problème il fauda que tu fasses :

function Calcul(num: integer ; num2 : integer) : integer ;

(ou procedureCalcul(num: integer ; num2 : integer); si tu souhaite effectuer une operation sans retour).

Bon Code !

Merci elguevel 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de elguevel
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 22 juin 2006 à 15:26
0
Merci
Salut,

"Une procedure ne retourne pas de résultat, ce sont les fonctions qui font çà."

pas tout à fait d'accord avec toi :

Procedure DoAdd( Const X, Y : Integer; Out Rslt : Integer);
Begin
  Rslt := X + Y;
End ;

Utilisation :

Var A : Integer;

 DoAdd(10, 20, A); // ici A retourne 30

Mais le mot resevé Out n'est pas obligatoire:
Procedure DoAdd( Const X, Y : Integer; Var Rslt : Integer);
Begin
  Rslt : = X + Y;
End;
Produit le même effet.

Attention aussi à la différence entre Var et Const dans les procedures et fonctions. Voir l'aide de Delphi à ce sujet

@+
Cirec
Commenter la réponse de Cirec
Utilisateur anonyme - 22 juin 2006 à 16:27
0
Merci
Salut,

Oh la boulette Elguevel : elle est trop grosse celle là (Mdrr) pour que malgré mon emploi du temps, je ne poste pas :

procedure Calcul(num: integer ; num2 : integer; Var Resultat : Integer) ;

Il doit etre fatiguer Elguevel

A+
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 22 juin 2006 à 16:33
0
Merci
J'ai lu trop vite Cirec : Pardon
Commenter la réponse de Utilisateur anonyme
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 juin 2006 à 12:30
0
Merci
procedure (const V : type);
V doit etre constante elle ne peut etre modifiée par la procedure, on peu lui assigner une valeur par defaut :
procedure (const V : type = defaut)

procedure (out V : type);
V peut etre modifiée par la procedure, elle doit etre une variable. on utilise Out quand la valeur de V importe peu dans la

procedure (var V : type);
V peut etre modifiée par la procedure, elle doit etre une variable.

procedure (V : type);
V peut etre modifiée par la procedure, elle peut etre une variable ou un objet.

dans ton cas la procedure devrait etre ecrite comme cela :

procedure (const num1,num2 : integer; [var/out] Result : integer);

les procedures qui renvoie des valeurs sont un peu plus performante que des fonctions, car on evite une allocation et une assignation en sortie.
Commenter la réponse de f0xi
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 23 juin 2006 à 13:12
0
Merci
HéHé ... non je n'ai pas tout à fait tord dans le sens où même en passant une variable en paramètre, la procedure ne RENVOI pas de valeur.

Tu ne fais que lui passer une référence à une variable (existante), et tu modifie la valeur de cette variable dans ta procedure. Alors que la fonction renvoi un résultat. (Result := ) comprenez vous ?

Mais il est vrai que j'ai oublié de préciser qu'il existait cette méthode, fort pratique parfois, surtout quand on à par exemple plus d'un résultat (et parfois de types différents) à récupérer.

Sinon j'apprend un truc là ... je ne savais pas que le mot clé "Out" existait !?

Alala le chemin de la connaissance est long et loin d'être terminé ... :-D
Commenter la réponse de elguevel
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 23 juin 2006 à 14:12
0
Merci
Salut,
alors oui j'ai bien compris
c'est bien joué sur les mots  voir capillotracté
D'ailleurs dans ton premier post tu dis ceci : "Une procedure ne retourne pas de résultat"
et ensuite tu dis :
"la procedure ne RENVOI pas de valeur."

On dira donc qu'une Procedure peut retourner où transmettre une variable sous forme de paramètre et la Function elle revoie la valeur directement.

La grande différence, en dehors des performances que F0xi évoque plus haut, c'est que le résultat d'une Function peut être utilisé directement sans passer par une variable intermédiaire contrairement a la Procedure.

@+
Cirec
Commenter la réponse de Cirec
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 23 juin 2006 à 16:55
0
Merci
salut,

il y a à peu près autant de différence entre une fonction et une
procédure qu'entre un chat gris et un chat noir. On pourrait dire
qu'une procédure est une fonction qui ne renvoie pas valeur affectable.
Les 2 ne sont que de appels à des sous-programmes et elles ont des
modes d'appel  identiques la différence se faisant sur
l'affectation ou non d'une valeur de retour. comme l'utilisation de la
valeur de retour n'est pas obligatoire on peut dire également que la
fonction est la forme primitve de la procédure puisque l'on peut
utiliser une fonction en lieu et place d'une procédure mais que
l'inverse n'est pas vrai.(Noter d'ailleurs que le C ne fait pas la
différence entre les deux)


@+

jlen
Commenter la réponse de jlen100

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.