Procédure et fonction algorithmes

Fermé
PRK Messages postés 795 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015 - 3 mai 2008 à 13:42
 msarram10 - 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

7 réponses

Utilisateur anonyme
3 mai 2008 à 13:51
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.
2
PRK Messages postés 795 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015 113
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
0
هل أستطيع المشاركة
2
Utilisateur anonyme
3 mai 2008 à 14:11
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.
1
PRK Messages postés 795 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015 113
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 ?
0
Utilisateur anonyme > PRK Messages postés 795 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015
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é.
0
PRK Messages postés 795 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015 113 > Utilisateur anonyme
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..
0
D > PRK Messages postés 795 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015
8 mai 2008 à 18:52
PM
0
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
fonctin carre (n:entier,i:entier)
retourn entier
debut
si (n=0) retourn(0)
si non retourn (n²=(n-1)²+2n-1)
fin
0
on ce qui concerne le deuxieme question non car le fonctin rendre une unique resultat simple
0
yyujjhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhjhjjk
                
-1