Recherche
Posez votre question Signaler

Procédure et fonction algorithmes

PRK 793Messages postés mardi 4 septembre 2007Date d'inscription 30 novembre 2010Dernière intervention - Dernière réponse le 31 mars 2010 à 10:07
Bonjour,
J'ai une petite question a vous poser a propos des procédures et fonctions que l'on utilise dans les algorithmes particulièrement.
je voudrais savoir pour une fonction (étant donné qu'elle renvoie une seule valeur) si on peut lui permettre de renvoyer par exemple un tableau ayant subi un traitement.
De même pour la procédure si en sortie nous pouvons mettre un tableau.
Je précise :
PROGRAMME
const cmax = 10
type T : tableau [1...cmax] : entier
variable globale :
i, tot, choix : entier
Voici la procédure et la fonction
Procédure saisiemanuelle (E _T, _cmax, _i S: _T)
debut
pour _i de 0 jusqu'a _cmax faire
afficher (valeur cellule _i)
saisir (_T[_i])
i=i+1
finpour
Fin
Est ce que cela est autorisé ? Ou il faut simplement renvoyer des variables et dans ce cas ne pas mettre le tableau en sortie ?
AUTRE EXEMPLE EN FONCTION CETTE FOIS CI
fonction saisieauto [E: _i, _cmax, _T) : entier
Debut
Pour _i de 1 jusqu'a _cmax faire
Randomize(_t[_i])
i=i+1
fin pour
retourne (_T)
Fin
Question : peut on retourner un tableau dans une fonction ?
Voila j'aimerai avoir vos avis la dessus car je n'arrive pas à déterminer si oui ou non nous pouvons mettre autre chose en sortie quie des variables pour les procédure et fonctions
j'espere avoir été assez clair pour + de précision n'hésitez pas a me demander
Lire la suite 
Réponse
+4
moins plus
Salut oui une procédure peut modifier les arguments si elle les prend par référence en paramètre. En langage pascal c'est en mettant le mot-clé VAR dans les paramètres de procédure. Sinon pour une fonction, bien sûr on peut retourner des tableaux, dans n'importe quel langage de programmation.

Exemple en Delphi :

procedure TFormMain.modif(var n:Integer);
begin
n:=5;
end;

Cette procédure va modifier la valeur de la variable n qui est passée en paramètre.
PRK 793Messages postés mardi 4 septembre 2007Date d'inscription 30 novembre 2010Dernière intervention - 3 mai 2008 à 13:54
En fait je cherche surtout la syntaxe algorithmique et pas dans certains langage en particulier ^^

Ton message ne m'aide pas vraiment et de plus ne traite pas vraiment mes questions ^^

ma question reside sur le fait de l'utilisation de tableaux en paramètre entrée et sortie lors de procédure et de "retourne" pour les fonctions.

En ce qui concerne les variables simples je n'ai pas de soucis a ce niveau
Répondre
Ajouter un commentaire
Réponse
+2
moins plus
Ajouter un commentaire
Réponse
+1
moins plus
Ah ok, en langage algorithmique le prof ne t'a pas dit comment il veut que tu écrive ça? Je suppose que tu dois écrire ça comme tu l'as fait, en définissant un type de données que tu peux passer en argument pour une procédure. Sinon pour une fonction tu peux bien sûr écrire comme ça :

Un petit exemple, la fonction doit retourner un tableau de 3 éléments, du genre [i+1, i+2, i+3]

type tabEntier : tableau [1...3] : entier

fonction(base : entier): tabEntier
variables temp: tabEntier
debut
temp[1] = base+1
temp[2] = base+2
temp[3] = base+3
retourne temp
fin

Là tu vas retourner un type tabEntier, donc un tableau.

J'espère que tu comprend que j'ai voulu dire, sinon, a voir avec les autres de ta classe et ton prof pour ce qu'il veut comme écriture.
PRK 793Messages postés mardi 4 septembre 2007Date d'inscription 30 novembre 2010Dernière intervention - 4 mai 2008 à 20:54
Ce queje ne comprend pas dans ton algo c'est pourquoi avoir utilisé TEMP dans ta fonction et non pas directement "Tableau" et par conséquent proceder comme cela :

tableau[1] (// 1ere cellule) = base + 1
etc....

retourne tableau

C'est bien possible de procéder comme çela ? Ou faut il impérativement créer une variable de type tableau pour faire passer ce tableau dans une procédure ou une fonction ?
Répondre
Utilisateur anonyme - 4 mai 2008 à 21:20
Là j'ai pris plutôt le point de vue "réalisation d'un vrai programme" plutôt que code algorithmique. On ne pas modifier une variable passée par valeur.

J'utilise temp parce que le tableau initial est passé en valeur. Pour modifier une variable dans une fonction, il faut la passer par référence (on passe alors l'adresse d'une variable, donc on peut modifier ce qui est contenu à cette adresse, tu comprend?). En langage algo on écrirait :

fonction modif(adresse du tableau) je pense

Ici si j'utilise temp c'est pour renvoyer un nouveau tableau, l'original n'est pas modifié.
Répondre
PRK 793Messages postés mardi 4 septembre 2007Date d'inscription 30 novembre 2010Dernière intervention - 4 mai 2008 à 21:31
Hmm oki !

Moi le probleme c'est que c purement algorithmique et non pas du codage sous VB, C++ C# etc....

donc je cherche la pseudo-syntaxe qui me permettrai d'entrer un tableau en paramètre d'une fonction ou procédure.

a mon avis ca doit pouvoir se faire..
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
soit 4 vecteurs (v1,v2,v3,v4) et deferent de dementio l,m,n,o. ecrie un algo qui lie, trie et affiche les vecteur
je ne c'est pas comment faire l'appele .merci...
Ajouter un commentaire
Réponse
+0
moins plus
SALUT
s.v.p aidè moi a trouvè la solution
1-dèclarer une fonction s'appelant carre qui calcule et renvoie le carrè d'un nombre entier qui est passè en paramètre
2-utiliser l'identitè n²=(n-1)²+2n-1 pour ècrire une fonction rècursive qui calcule le carrè d'un entier positif ou nul n

MERCI
thabet- 16 mai 2009 à 15:44
fonctin carre (n:entier,i:entier)
retourn entier
debut
si (n=0) retourn(0)
si non retourn (n²=(n-1)²+2n-1)
fin
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
on ce qui concerne le deuxieme question non car le fonctin rendre une unique resultat simple
Ajouter un commentaire
Réponse
-1
moins plus
yyujjhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhjhjjk
Ajouter un commentaire
Ce document intitulé «  Procédure et fonction algorithmes  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

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.

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