Petit Computer France
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -39%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

[Tutoriel] Les fonctions avec DEF

4 participants

Aller en bas

[Tutoriel] Les fonctions avec DEF Empty [Tutoriel] Les fonctions avec DEF

Message par Kuroshitsu Dim 21 Déc - 15:24

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 Wink


Dernière édition par Kuroshitsu le Sam 3 Jan - 21:09, édité 9 fois (Raison : Présentation insipide et esprit pointilleux)
Kuroshitsu
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 25

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Adriendu92 Dim 21 Déc - 18:03

Tu as fait une faute (hé oui j'ai l'œil cyclops  )
Tu as marqué out M,D mais dans l'exemple tu utilise C et D bounce
Petit probleme de concordance !
Sinon super tuto !
Avant pour "créer des fonctions" on utilisait les labels ça va nous en libérer !!!
Adriendu92
Adriendu92

Messages : 165
Date d'inscription : 07/12/2013
Age : 23
Localisation : Colombes

http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Kuroshitsu Dim 21 Déc - 18:15

Eh ben non c'est pas une faute Razz 

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 Wink

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
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 25

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Adriendu92 Dim 21 Déc - 18:16

Ah cool tu devrais le préciser Wink


Dernière édition par Adriendu92 le Dim 21 Déc - 20:20, édité 1 fois
Adriendu92
Adriendu92

Messages : 165
Date d'inscription : 07/12/2013
Age : 23
Localisation : Colombes

http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Kuroshitsu Dim 21 Déc - 19:34

Oui tu as raison, je l'ai ajouté ^^
Kuroshitsu
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 25

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par CounterClockWize Dim 21 Déc - 21:04

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++!
CounterClockWize
CounterClockWize

Messages : 72
Date d'inscription : 23/08/2013

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Adriendu92 Dim 21 Déc - 21:44

dans ptc 7 on aurat juste besoin de dire créer un jeu lol!


Dernière édition par Adriendu92 le Lun 22 Déc - 9:53, édité 1 fois
Adriendu92
Adriendu92

Messages : 165
Date d'inscription : 07/12/2013
Age : 23
Localisation : Colombes

http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Kuroshitsu Lun 22 Déc - 8:30

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...
Kuroshitsu
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 25

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Adriendu92 Lun 22 Déc - 9:53

Sérieusement affraid affraid affraid
J'ai trop hâte Twisted Evil Twisted Evil Twisted Evil
Adriendu92
Adriendu92

Messages : 165
Date d'inscription : 07/12/2013
Age : 23
Localisation : Colombes

http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par fenixelf Lun 22 Déc - 12:48

Yep, j'ai hate de l'avoir ce logiciel I love you
fenixelf
fenixelf

Messages : 229
Date d'inscription : 08/03/2014
Age : 24
Localisation : Île de France - La ville du bois

http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Adriendu92 Mer 14 Jan - 15:52

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 ???
Adriendu92
Adriendu92

Messages : 165
Date d'inscription : 07/12/2013
Age : 23
Localisation : Colombes

http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Kuroshitsu Ven 16 Jan - 19:29

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.
Kuroshitsu
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 25

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par CounterClockWize Jeu 7 Déc - 23:50

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
CounterClockWize
CounterClockWize

Messages : 72
Date d'inscription : 23/08/2013

Revenir en haut Aller en bas

[Tutoriel] Les fonctions avec DEF Empty Re: [Tutoriel] Les fonctions avec DEF

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum