[Tutoriel] Les fonctions avec DEF
4 participants
Page 1 sur 1
[Tutoriel] Les fonctions avec DEF
Premier tutoriel sur Petit Computer 3 ! Bien d'autres suivront, mais j'ai choisi pour le moment de traiter d'une commande qui m'a vraiment séduite car présente dans de nombreux langages informatiques. La commande DEF permet comme nom l'indique de définir... une fonction. Si vous ne savez pas encore ce que c'est, je vous invite à lire ce tutoriel en entier, c'est un outil de programmation très puissant !
I) Qu'est ce qu'une fonction ?
Une fonction est d'une certaine manière une commande avec des attributs. Prenons pour exemple la commande POW (ou puissance) : celle-ci possède deux attributs, la puissance et le nombre, que l'on précise lors de son utilisation.
POW(10,2)=100
Et si cette commande n'avait pas existé ? Eh bien grâce à DEF, nous pouvons la créer nous-même !
II) Créer une fonction
Pour définir une fonction, on utilise un schéma bien particulier :
DEF NOM_FONCTION(attribut1 , attribut2...) // On définit une fonction qui travaillera avec une ou plusieurs variables : attribut1, attribut2...
Instructions diverses utilisant les attributs // On réalise diverses opérations avec (ou sans) ces variables
RETURN resultat // On renvoie le résultat
END // On marque la fin de la définition de la fonction
Tout cela peut paraître un peu flou, alors illustrons ce schéma avec une fonction "addition".
DEF ADDITION(A,B) // On définit la fonction addition avec les variables A et B
RETURN A+B // On renvoie l'addition de A et B
END // On marque la fin de la définition de la fonction
Et voilà, vous avez créé la fonction addition ! Bien sûr, on peut penser à bien d'autres applications plus complexes. A noter que les fonctions marchent aussi avec les chaînes de caractères. Attention, pour être activée, la définition d'une fonction doit être lue au moins une fois ! Ces quelques lignes ne perturbant pas l’exécution de votre programme, je vous conseille de les placer dans l'en-tête de votre programme, ou dans une sous-partie dédiée à l'initialisation.
Note : Vous pouvez tout aussi bien créer une fonction sans attribut ! Pour cela, laissez les deux parenthèses à côté du nom de fonction sans rien mettre à l'intérieur. Exemple : "RNDF()"
III) Utiliser les fonctions dans le programme
Maintenant que nous avons créé notre fonction, il ne reste plus qu'à l'utiliser. On veut additionner deux variables C et D, avec E le résultat de l'addition :
C=2
D=3
E=ADDITION(C,D)
Si l'on affiche E, on obtiendra 5, autrement dit 2+3. C'est aussi simple que ça ! Par ailleurs, lorsque vous utilisez une fonction, vous n’êtes pas obligé d'utiliser les mêmes noms de variable que dans la définition. C'est d'ailleurs bien là que réside le côté universel de ces fonctions.
IV) Des fonctions qui renvoient plusieurs résultats
Avant de lire cette partie, assurez-vous d'avoir bien maîtrisé les précédentes, au risque de vous emmêler les pinceaux ! Le cas des fonctions renvoyant plusieurs variables est en effet assez particulier, car définir et appeler la fonction se fait d'une autre façon.
D'une manière imagée, les fonctions à un seul résultat "renvoyaient" ce résultat, ce qui permettait de l'utiliser directement dans les opérations. Or, avec les fonctions à plusieurs résultats, on dirait plutôt que la fonction fait "sortir" ces résultats, et il faut les récupérer avant de les utiliser dans des opérations.
Analysons tout d'abord comment on définit ces fonctions. Pour cela, on va utiliser une fonction qui renverra la multiplication et la division de deux nombres, que nous nommerons CALC (comme calcul) :
DEF CALC A,B OUT M,D // On définit la fonction CALC avec deux attributs A et B et deux résultats M et D
M=A*B // M est la multiplication de A et B
D=A/B // D est la division de A et B
END // On ferme la définition
Plus de RETURN, on définit les résultats à renvoyer sur la même ligne que les attributs. Voyez "OUT" comme une indication des variables qui vont "sortir". De plus, les attributs ne sont plus placés entre parenthèses. Voyons maintenant comment utiliser ces fonctions :
A=4
B=2
CALC A,B OUT C,D // C prend la valeur A*B et D prend la valeur A/B
PRINT C,D // On obtient respectivement 8 et 2
Vous verrez ce type de fonction partout dans Petit Computer 3, même dans les commandes officielles ! Le principe du "OUT" est au final très logique, il suffit de s'entraîner un peu et de faire quelques essais pour comprendre naturellement son fonctionnement. De même que pour les attributs, les noms de variable des résultats peuvent être différents de ceux donnés dans la définition, ça ne pose aucun problème.
Bien sûr, si vous avez des questions, j'y répondrais sans problème
I) Qu'est ce qu'une fonction ?
Une fonction est d'une certaine manière une commande avec des attributs. Prenons pour exemple la commande POW (ou puissance) : celle-ci possède deux attributs, la puissance et le nombre, que l'on précise lors de son utilisation.
POW(10,2)=100
Et si cette commande n'avait pas existé ? Eh bien grâce à DEF, nous pouvons la créer nous-même !
II) Créer une fonction
Pour définir une fonction, on utilise un schéma bien particulier :
DEF NOM_FONCTION(attribut1 , attribut2...) // On définit une fonction qui travaillera avec une ou plusieurs variables : attribut1, attribut2...
Instructions diverses utilisant les attributs // On réalise diverses opérations avec (ou sans) ces variables
RETURN resultat // On renvoie le résultat
END // On marque la fin de la définition de la fonction
Tout cela peut paraître un peu flou, alors illustrons ce schéma avec une fonction "addition".
DEF ADDITION(A,B) // On définit la fonction addition avec les variables A et B
RETURN A+B // On renvoie l'addition de A et B
END // On marque la fin de la définition de la fonction
Et voilà, vous avez créé la fonction addition ! Bien sûr, on peut penser à bien d'autres applications plus complexes. A noter que les fonctions marchent aussi avec les chaînes de caractères. Attention, pour être activée, la définition d'une fonction doit être lue au moins une fois ! Ces quelques lignes ne perturbant pas l’exécution de votre programme, je vous conseille de les placer dans l'en-tête de votre programme, ou dans une sous-partie dédiée à l'initialisation.
Note : Vous pouvez tout aussi bien créer une fonction sans attribut ! Pour cela, laissez les deux parenthèses à côté du nom de fonction sans rien mettre à l'intérieur. Exemple : "RNDF()"
III) Utiliser les fonctions dans le programme
Maintenant que nous avons créé notre fonction, il ne reste plus qu'à l'utiliser. On veut additionner deux variables C et D, avec E le résultat de l'addition :
C=2
D=3
E=ADDITION(C,D)
Si l'on affiche E, on obtiendra 5, autrement dit 2+3. C'est aussi simple que ça ! Par ailleurs, lorsque vous utilisez une fonction, vous n’êtes pas obligé d'utiliser les mêmes noms de variable que dans la définition. C'est d'ailleurs bien là que réside le côté universel de ces fonctions.
IV) Des fonctions qui renvoient plusieurs résultats
Avant de lire cette partie, assurez-vous d'avoir bien maîtrisé les précédentes, au risque de vous emmêler les pinceaux ! Le cas des fonctions renvoyant plusieurs variables est en effet assez particulier, car définir et appeler la fonction se fait d'une autre façon.
D'une manière imagée, les fonctions à un seul résultat "renvoyaient" ce résultat, ce qui permettait de l'utiliser directement dans les opérations. Or, avec les fonctions à plusieurs résultats, on dirait plutôt que la fonction fait "sortir" ces résultats, et il faut les récupérer avant de les utiliser dans des opérations.
Analysons tout d'abord comment on définit ces fonctions. Pour cela, on va utiliser une fonction qui renverra la multiplication et la division de deux nombres, que nous nommerons CALC (comme calcul) :
DEF CALC A,B OUT M,D // On définit la fonction CALC avec deux attributs A et B et deux résultats M et D
M=A*B // M est la multiplication de A et B
D=A/B // D est la division de A et B
END // On ferme la définition
Plus de RETURN, on définit les résultats à renvoyer sur la même ligne que les attributs. Voyez "OUT" comme une indication des variables qui vont "sortir". De plus, les attributs ne sont plus placés entre parenthèses. Voyons maintenant comment utiliser ces fonctions :
A=4
B=2
CALC A,B OUT C,D // C prend la valeur A*B et D prend la valeur A/B
PRINT C,D // On obtient respectivement 8 et 2
Vous verrez ce type de fonction partout dans Petit Computer 3, même dans les commandes officielles ! Le principe du "OUT" est au final très logique, il suffit de s'entraîner un peu et de faire quelques essais pour comprendre naturellement son fonctionnement. De même que pour les attributs, les noms de variable des résultats peuvent être différents de ceux donnés dans la définition, ça ne pose aucun problème.
Bien sûr, si vous avez des questions, j'y répondrais sans problème
Dernière édition par Kuroshitsu le Sam 3 Jan - 21:09, édité 9 fois (Raison : Présentation insipide et esprit pointilleux)
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel] Les fonctions avec DEF
Tu as fait une faute (hé oui j'ai l'œil )
Tu as marqué out M,D mais dans l'exemple tu utilise C et D
Petit probleme de concordance !
Sinon super tuto !
Avant pour "créer des fonctions" on utilisait les labels ça va nous en libérer !!!
Tu as marqué out M,D mais dans l'exemple tu utilise C et D
Petit probleme de concordance !
Sinon super tuto !
Avant pour "créer des fonctions" on utilisait les labels ça va nous en libérer !!!
Re: [Tutoriel] Les fonctions avec DEF
Eh ben non c'est pas une faute
En fait les variables que tu mets dans ta définition n'ont pas besoin d'être les mêmes que celles que tu utilises lorsque tu invoques la fonction, et c'est justement pour ça que j'ai tenu à mettre des lettres différentes
Tu pourrais tout aussi bien mettre ADD(3,5) et obtenir 8, ou mettre CALC 3,5 OUT M,D et obtenir M=15 et D=1,6. En fait les attributs prennent la valeur des variables que tu as mis entre parenthèses, pour pouvoir les utiliser dans la fonction
En fait les variables que tu mets dans ta définition n'ont pas besoin d'être les mêmes que celles que tu utilises lorsque tu invoques la fonction, et c'est justement pour ça que j'ai tenu à mettre des lettres différentes
Tu pourrais tout aussi bien mettre ADD(3,5) et obtenir 8, ou mettre CALC 3,5 OUT M,D et obtenir M=15 et D=1,6. En fait les attributs prennent la valeur des variables que tu as mis entre parenthèses, pour pouvoir les utiliser dans la fonction
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel] Les fonctions avec DEF
Ah cool tu devrais le préciser
Dernière édition par Adriendu92 le Dim 21 Déc - 20:20, édité 1 fois
Re: [Tutoriel] Les fonctions avec DEF
Oui tu as raison, je l'ai ajouté ^^
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel] Les fonctions avec DEF
Nice job!
Donc on peut ce faire une sorte de librairie de fonction à déclarer en début de programme!
En plus des labels c'est bien patrique!
le language évolue!
C'est moi ou dans ptc5 on finira par faire du C++!
Donc on peut ce faire une sorte de librairie de fonction à déclarer en début de programme!
En plus des labels c'est bien patrique!
le language évolue!
C'est moi ou dans ptc5 on finira par faire du C++!
CounterClockWize- Messages : 72
Date d'inscription : 23/08/2013
Re: [Tutoriel] Les fonctions avec DEF
dans ptc 7 on aurat juste besoin de dire créer un jeu
Dernière édition par Adriendu92 le Lun 22 Déc - 9:53, édité 1 fois
Re: [Tutoriel] Les fonctions avec DEF
Counter > Haha oui ce principe de fonction se retrouve un peu partout, c'est une bonne chose qu'il soit inclus dans Petit Computer 3 !
Pour le prochain tutoriel, je vais vous dévoiler certaines commandes qui à mon avis nous rapprochent du commentaire d'Adrien...
Pour le prochain tutoriel, je vais vous dévoiler certaines commandes qui à mon avis nous rapprochent du commentaire d'Adrien...
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel] Les fonctions avec DEF
D'ailleur peut-on utiliser une fonction dans une fonction ?? (Je suis quasi sur que oui)
Combien de fois peut on le faire avant d'obtenir un "OUT OF MEMORY" ??
Question plus a part est-ce qu'il ont changé la limite des out of memory ???
Combien de fois peut on le faire avant d'obtenir un "OUT OF MEMORY" ??
Question plus a part est-ce qu'il ont changé la limite des out of memory ???
Re: [Tutoriel] Les fonctions avec DEF
Si la fonction insérée dans une autre a été définie avant, y'a aucun souci. J'ai pas fait le test de mémoire par contre...
Mais les OUT OF MEMORY sont bien moins fréquents, même si selon les programmes on trouvera toujours plus ou moins de limites.
Mais les OUT OF MEMORY sont bien moins fréquents, même si selon les programmes on trouvera toujours plus ou moins de limites.
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel] Les fonctions avec DEF
Je relisais ce petit tuto fort intéressant, je me demandais si on pouvait utiliser des fonctions définis sur un autre slot?... on a besoin de les appeler d'une certaine façon? d'ailleurs dans l'absolut quand on utilise certaine parties d'un programme mis sur un autre slot je pense qu'on doit le déclarer...(les slots) un peut comme un sous programme vite fait???!!!
Une autre question, j'ai pas encore été voir ce qui s'est fait sur ptc3 ni comment les codeurs on intuitivement utilisé les slots,(et même ce nouveau ptc dans son entièreté), mais je me demandais comment il s'en servait de ses slots dans les gros programme...
Genre, un slot pour l'ia , un slot pour les map, un slot pour les datas et les commandes de base etc partitionner tout ça en quelque sorte...
Est ce que ça ralenti le programme d'aller chercher dans les slots, faut il éviter un enchevêtrement, les vas et viens... déjà qu'avec les labels, les gosub... ????
En fait ça fait beaucoup de questions lol
Une autre question, j'ai pas encore été voir ce qui s'est fait sur ptc3 ni comment les codeurs on intuitivement utilisé les slots,(et même ce nouveau ptc dans son entièreté), mais je me demandais comment il s'en servait de ses slots dans les gros programme...
Genre, un slot pour l'ia , un slot pour les map, un slot pour les datas et les commandes de base etc partitionner tout ça en quelque sorte...
Est ce que ça ralenti le programme d'aller chercher dans les slots, faut il éviter un enchevêtrement, les vas et viens... déjà qu'avec les labels, les gosub... ????
En fait ça fait beaucoup de questions lol
CounterClockWize- Messages : 72
Date d'inscription : 23/08/2013
Sujets similaires
» [Tutoriel]Sauvegarde avec MEM$
» [Tutoriel]La musique facile pour Petit computer avec QmidiStudio.
» [Tutoriel] La fonction RND().
» [Tutoriel]DATA
» [Tutoriel] Sprites
» [Tutoriel]La musique facile pour Petit computer avec QmidiStudio.
» [Tutoriel] La fonction RND().
» [Tutoriel]DATA
» [Tutoriel] Sprites
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum