Procédure et fonction algorithmes
PRK
Messages postés
799
Date d'inscription
Statut
Membre
Dernière intervention
-
msarram10 -
msarram10 -
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
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
A voir également:
- Procedure et fonction algorithme
- Fonction si et - Guide
- Fonction miroir - Guide
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
7 réponses
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.
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.
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.
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.
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 ?
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 ?
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é.
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é.
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...
je ne c'est pas comment faire l'appele .merci...
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
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
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