Fonctions et variables
Résolu/Fermé
Panoramix.
Messages postés
2673
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
28 décembre 2016
-
Modifié par Panoramix. le 31/10/2012 à 20:36
Panoramix. Messages postés 2673 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 28 décembre 2016 - 1 nov. 2012 à 10:15
Panoramix. Messages postés 2673 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 28 décembre 2016 - 1 nov. 2012 à 10:15
A voir également:
- Fonctions et variables
- Fonction si et - Guide
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Les fonctions excel en anglais - Guide
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Excel
6 réponses
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 31/10/2012 à 23:46
Modifié par nicocorico le 31/10/2012 à 23:46
Oui absolument, le programme est juste et la variable "nom" est globale, c'est à dire qu'elle est allouée sur le "tas" dans la mémoire globale, à contrario de la variable locale, déclarée dans la fonction même, allouée sur la pile donc temporairement...
Le chêne aussi était un gland, avant d'être un chêne
Le chêne aussi était un gland, avant d'être un chêne
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 1/11/2012 à 08:56
Modifié par nicocorico le 1/11/2012 à 08:56
Oui, en fait on se sert des variables globales lorsque c'est utile, tout simplement! Disons que leur avantage tiens au fait d'être très accessibles, y compris dans d'autres unités si la déclaration le permet, et leur inconvénient principal c'est d'être nommé de manière fixe, donc il faut les déclarer une à une, elles consomme de la mémoire en permanence tout en servant temporairement dans ce cas précis...Et souvent elles font enfler le code par rapport aux locales car les déclarations locales sont plus courtes à l'emploi.
Et du fait que le nom soit figé, la fonction l'est aussi! Dans certain cas ça pousserait à écrire une autre fonction équivalente du fait qu'elle doive placer son résultat ailleurs!
Donc on ferait plutôt :
Et là encore on reste en globale pour stocker le nom, mais c'est qu'on est dans le corps de programme, là où on ne reste pas longtemps!
Dans un programme normalement construit, tout est fonction, et donnerais plutôt:
Donc là on ne travaille plus qu'en variables locales...
En fait il faut utiliser les variables globales lorsque leur contenu est utile dans différents points du programme, servant donc à mettre des données en commun de manière pratique, et là encore il vaut mieux les regrouper en enregistrements pour éviter de noyer le programme sous tout un tas de noms globaux valides, car il y a un risque de confusion avec le noms des variables locales ensuite!
Le chêne aussi était un gland, avant d'être un chêne
Et du fait que le nom soit figé, la fonction l'est aussi! Dans certain cas ça pousserait à écrire une autre fonction équivalente du fait qu'elle doive placer son résultat ailleurs!
Donc on ferait plutôt :
PROGRAM test; VAR Nom : STRING FUNCTION AjouteNom: String; BEGIN WRITE('Votre nom svp :'); READ(Result); END; BEGIN test Nom:= AjouteNom; END.
Et là encore on reste en globale pour stocker le nom, mais c'est qu'on est dans le corps de programme, là où on ne reste pas longtemps!
Dans un programme normalement construit, tout est fonction, et donnerais plutôt:
PROGRAM test; FUNCTION AjouteNom: String; BEGIN WRITE('Votre nom svp :'); READ(Result); END; Procedure AjouteNoms; var Nom : String; begin Nom:= AjouteNom; // exploitation locale du nom puis abandon de la variable end; BEGIN test AjouteNoms; END.
Donc là on ne travaille plus qu'en variables locales...
En fait il faut utiliser les variables globales lorsque leur contenu est utile dans différents points du programme, servant donc à mettre des données en commun de manière pratique, et là encore il vaut mieux les regrouper en enregistrements pour éviter de noyer le programme sous tout un tas de noms globaux valides, car il y a un risque de confusion avec le noms des variables locales ensuite!
Le chêne aussi était un gland, avant d'être un chêne
Panoramix.
Messages postés
2673
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
28 décembre 2016
1 096
1 nov. 2012 à 07:47
1 nov. 2012 à 07:47
Merci pour ta réponse !
Mais est-ce que cette façon de codé est propre ? J'ai entendu dire que les fonctions devaient être le plus possible indépendant du programme de base. Est ce que cette façon de déclarer la fonction est plus juste :
Mais est-ce que cette façon de codé est propre ? J'ai entendu dire que les fonctions devaient être le plus possible indépendant du programme de base. Est ce que cette façon de déclarer la fonction est plus juste :
FONCTION AjouteNom(IN NouveauNom:STRING); BEGIN Nom := NouveauNom; END;
Panoramix.
Messages postés
2673
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
28 décembre 2016
1 096
1 nov. 2012 à 09:37
1 nov. 2012 à 09:37
Merci pour ta réponse.
J'aurais encore une petite question :)
Quelle est la différence entre une fonction et une procédure en LDA ?
J'aurais encore une petite question :)
Quelle est la différence entre une fonction et une procédure en LDA ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 1/11/2012 à 10:03
Modifié par nicocorico le 1/11/2012 à 10:03
Hé bien la différence est toute simple, la fonction renvoie obligatoirement un résultat, donc une procédure est une fonction qui ne renvoie pas de résultat, voilà!
En entendant par renvoi de résultat une manière de le renvoyer, sous cette forme:
Resultat:= (appel de la fonction)
D'autres formes sont possible pour retourner un ou plusieurs résultats, tel que les paramètres "var" en pascal...
En entendant par renvoi de résultat une manière de le renvoyer, sous cette forme:
Resultat:= (appel de la fonction)
D'autres formes sont possible pour retourner un ou plusieurs résultats, tel que les paramètres "var" en pascal...
Panoramix.
Messages postés
2673
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
28 décembre 2016
1 096
1 nov. 2012 à 10:15
1 nov. 2012 à 10:15
Ok merci beaucoup pour ton aide !
Bonne fin de semaine :)
Bonne fin de semaine :)