[Tutoriel]Les conditions + FOR

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Tutoriel]Les conditions + FOR

Message par RayTro le Mer 21 Aoû - 13:53

Comme dans la plupart des langages de programmation, les conditions se forment à partir des commandes IF.
Sauf que ce langage a quelques particularités, que nous verrons très bientôt.
Les IF sont toujours accompagnés de Then et si besoin de Else.
Si nous traduisons en brut ces trois commandes, on obtient Si pour If, Alors pour Then, et Sinon pour Else.
Petite particularité de Petit Computer : une seule commande par condition.
Voici un schéma :
Code:
IF [condition] Then [une commande] (Else [une autre commande])
Nous ne sommes pas obligés de mettre un Else.
Mais là le problème est que nous ne pouvions mettre qu'une commande. Si vous êtes malin vous aurez trouvé l'astuce de mettre un GOSUB pour pouvoir exécuter plusieurs commandes, eh bien c'est ce qu'il faut faire si vous avez plusieurs commandes à exécuter sur cette condition.

Maintenant, il nous faut savoir quoi mettre dans les conditions, et pour cela, j'ai fait une liste d'exemples :
Code:
IF G==16 THEN GOSUB @SAUT
IF VIE<=0 THEN GOSUB @GAMEOVER
IF NOM$=="RayTro" THEN PRINT "Copieur !!!" ELSE PRINT "Coupain !!!"
IF Y==6 AND X==12 THEN GOSUB @DIALOG
Je vais vous expliquer pas mal de choses :
== : est égal à
<= : est inférieur ou égal à
>= : est supérieur ou égal à
< : est inférieur ou égal à
> : est supérieur à
!= : est différent de
Donc si nous traduisons la première ligne nous obtenons : "Si G est égal à 16, alors GOSUB @SAUT"
C'est plutôt simple à comprendre une condition quand on la traduit.

Mise à jour (merci à J8B) :
Voici d'autres exemples d'utilisation des conditions :
Code:
IF (condition) GOTO @label ELSE @label2
IF (condition) GOTO @label ELSE (commandes)
IF (condition) GOTO @label

Voici la priorité des opérations :
J8B a écrit:1_Entre parenthèses ou crochets
2_MINUS, NOT
3_Fonctions ou commandes
4_*, /, %
5_+, -
6_<, <=, >, >=, ==, !=
7_AND, OR, XOR

Maintenant vous avez vu aussi dans l'exemple un AND, eh bien sachez que l'on peux mettre plusieurs conditions, et les relier avec différentes commandes, que voici :
AND : et
OR : ou
XOR : seulement ou (ou exclusif), soit l'un, soit l'autre mais pas les deux.
N'oubliez pas de mettre des parenthèses quand vous faites des AND et OR dans une même ligne, exemple :
Code:
IF (X==10 AND Y==3) OR (X==4 AND Y==7) THEN ...

Il existe une autre forme de condition, que voici :
J8B a écrit:
Code:
ON (VariableNumérique) GOSUB (ou GOTO) @label0, @label1, @label2, ...
ça veut dire concrètement que si la variable égal à 0 alors tu vas au label 0 sinon si la variable égal 1 tu vas au label 1 ....
Cela remplace IF Var==0 THEN GOTO @label0 ELSE IF Var==1 THEN GOTO @label1 ELSE ...

Bon, je vais faire un petit bonus, vous exliquer le fonctionnement des FOR :
Voici un schéma de la fonction :
Code:
FOR VAR=const TO const2
'Commandes (une ligne commençant par un ' est une ligne non prise en compte par le programme, un commentaire.)
NEXT VAR
Les FOR sont des boucles avec incrémentation d'une variable.
exemple :
Code:
FOR I=0 To 10
PRINT I
NEXT I
Vous verrez que I commence à 0 et finit à 10, en augmentant de 1 par 1, c'est la fonctionnalité des boucles FOR.
Les boucles FOR se terminent par NEXT VAR, quand le programme arrive à cette ligne, il revient à la ligne du FOR en faisant monter la variable de 1.
Dès que la variable atteint ou est plus grand que le chiffre après le TO, ici 10, la boucle se coupe.
Maintenant, vous voulez que la variable augmente de 2 à chaque boucle ? eh bien c'est possible, avec la commande STEP :
Code:
FOR X=0 TO 31 STEP 2
LOCATE X,5:PRINT "■"
NEXT X
Vous obtiendrez une ligne en pointillé.
Mais cette commande STEP est plutôt pratique, car on peux mettre n'importe quel chiffre après, le chiffre après le STEP sera additionné avec la variable à chaque NEXT VAR.
Vous pouvez par exemple décrémenter (l'inverse d'incrémenter) en mettant STEP -1.

Au passage, dans l'exemple au dessus, vous pouvez voir ":", c'est tout simplement comme si que l'on faisait un retour à la ligne, c'est pratique quand on veut regrouper plusieurs commandes liées entre elles en une ligne (Exemple : les LOCATE avec les PRINT, ou encore les COLOR avec les LOCATE avec les PRINT... enfin, c'est vous qui gérez comme vous le souhaitez...).

>> Cliquez ici pour passer au tutoriel suivant <<


Dernière édition par RayTro le Ven 15 Aoû - 12:37, édité 1 fois
avatar
RayTro
Admin

Messages : 333
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par fenixelf le Mar 15 Avr - 10:20

"Le problème est que nous ne pouvions mettre qu'une commande. Si vous êtes malin vous aurez trouvé l'astuce de mettre un GOSUB pour pouvoir exécuter plusieurs commandes, eh bien c'est ce qu'il faut faire si vous avez plusieurs commandes à exécuter sur cette condition."

Faux, si l'on écrit une commande IF avec seulement un THEN à la fin, on peut rajouter d'autres commandes avec deux points qui elles aussi ne s'activerons que quand les conditions seront remplies. Si on met un ELSE, c'est pareil. Je suis sûr que tu l'as déjà fait sans t'en rendre compte en plus.(en faisant un truc comme : )
Code:
IF variable==7 THEN COLOR variable:PRINT "le doré c'est cool"
avatar
fenixelf

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

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par RayTro le Mar 15 Avr - 11:46

Ah c'est possible ? Surprised
Sur la calculatrice ça compte comme un retour à la ligne donc ça ne marchait pas.
Mais bon après c'est plus pour quelques lignes car des conditions avec plusieurs trentaines de lignes dedans je suis sur que tu n'as pas envie de jouer avec les ":". Wink
Et non je n'ai jamais fait comme ça sans m'en rendre compte.
avatar
RayTro
Admin

Messages : 333
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par fenixelf le Mar 15 Avr - 15:51

Ouep ça marche, c'est pratique et ça permet d'économiser une bonne vingtaine de ligne(oui quand même) dans un programme.
En effet ça te permets de regrouper une petite fonction de conditions genre le
SPSET SPHOME SPANIM SPSCALE d'un sprite, c'est tout de même utile pour les petits jeux comme moi j'en fait.

_________________
Get Ready... Twisted Evil
avatar
fenixelf

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

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par J8B le Mer 16 Avr - 17:49

Tu peux même mettre un espace à la place des ":", ça marche aussi. Mais avec les ":" c'est plus lisible.

_________________
Statut (MàJ:29 Avril 2017): Sur le projet "Virtual Bébête" (avancée ~26%).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 402
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par RayTro le Mer 16 Avr - 22:01

Ooooh ! Que d'astuces /o/
avatar
RayTro
Admin

Messages : 333
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par fenixelf le Jeu 17 Avr - 19:14

Tiens, rien qu'un espace ça marche? Dis donc, que c'etait improbable !

_________________
Get Ready... Twisted Evil
avatar
fenixelf

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

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par S.lexis le Ven 18 Avr - 21:50

De toutes façons on n'a le droit qu'à 100 caractères par ligne non ?

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par J8B le Dim 20 Avr - 17:53

Oui pas plus. C'est juste pour éviter un gosub pour quelques commandes courtes.

_________________
Statut (MàJ:29 Avril 2017): Sur le projet "Virtual Bébête" (avancée ~26%).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 402
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par S.lexis le Dim 20 Avr - 21:40

Aaaaah, les pseudo-fonctions avec GOSUB :hap:

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par fenixelf le Lun 21 Avr - 10:13

Trop de label tue le label (lu et approuvé (je sais j'ai pas le droit d'approuver moi même mon message (mais je le fais quand même (sans regrets (et sans reproches (oui c'est pareil (bref...)))))

_________________
Get Ready... Twisted Evil
avatar
fenixelf

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

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par S.lexis le Lun 21 Avr - 15:32

Tu sais qu'il te manque deux parenthèses en un point ? :hap:
Et les labels sont la chose qui nous permet de faire des pseudo-fonctions ici. Mais c'est la pire horreur de la programmation (bien qu'en assembleur on retombe uniquement dessus).

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

AHA ! Nan rien...

Message par fenixelf le Lun 21 Avr - 19:15

MAISMAISMAISMAISMAISMAISMAIS???
Oui j'aurais pu me passer d'écrire ça.
Après bon, c'est pour le fun quoi hein?
Le label, pourquoi une horreur, POURQUOI?
Franchement, je pourrais faire autre chose
qu'écrire ce message ; faire un poème par exemple.
De toute façon, qui va le lire?
Car ce n'est qu'un délire.
Même pas un bon poème d'ailleurs,
Tiens, il est dix-neuf heures.
Ca intéresse tout le monde dis?
Réponds moi S.lexis !
Au fait ton pseudo,
A quoi correspond le S?
Si courbé, si beau.
Qu'on le regarde sans cesse...
Bon j'en rajoute un peu...
Et je devrais me taire.
Le plus tôt sera le mieux,
Car plus belle sera la Terre.

Mouais, pas terrible hein?
J'ai raison de programmer au lieu de tenir un récital. Remarque, je pourrais réciter des classiques,
Comme heu, commeuuuuuuuh...

Ouep, c'est bien ce que je dis, j'ai raison de programmer. Imaginez ce que ça rendrait si je me lançais dans la peinture... Quoi que ! Carla Bruni elle fait bien des chansons. Bon après, la qualité reste à désirer. Et quel désir...OULA ! Dans quelles situations je me fourre?
Bon il est tard, bon appétit. Parce que pour moi il est tard à partir de quinze heures.
Non, pas exactement mais pas loin. En plus, je dis bon appétit mais personne n'est sur le forum à cette heure ci. En même temps, certains sont en vacances. Ah oui ! Bonnes vacances tiens !
Vous avez trouvés tous les œufs? C'est trop bon les Kinder MoI j'AdOrE lEs KiNdEr !
Et Glados, le robot dans portal vous savez? Le pire c'est que la j'écris pour rien.

T'as tout lu?? T'es un malade. lol! 
Note à moi même : la sortie c'est par la  Arrow Arrow Arrow
avatar
fenixelf

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

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par S.lexis le Lun 21 Avr - 21:42

Oui j'ai tout lu :hap: Par contre http://translate.google.com/translate_tts?tl=fr&q=Je%20m%27en%20astique%20le%20poireau%20avec%20un%20agriculteur%20! :hap:
Le S c'est pour Super :hap:
M'enfin c'est un secret :hap:
J'aime les haps :hap:
Pas comme ces raclures no*listes :hap:
Et les labels ça sent le rance dans les programmes qui gèrent les fonctions. :hap:
Paraît qu'en effet ça rend le code dur à suivre :hap:
Mais si on y gère comme il faut... :hap:
Faut dire que ça reste extrêmement peu utilisé de toutes façons. :hap:
Y a-t-il une limite de smileys sur ce site ? :hap:
Ton poème ne respectait aucune règle :hap:
C'est vrai que les ordinateurs ne comprennent pas le français ! :hap:
Alors à quoi bon travailler sa rhétorique ? :hap:
Tes diffamations seront sévèrement punies au retour de Sarkozy :hap:
Bon bah oh c'est 42 ! :hap:
Mon chiffre favori :hap:
Allez bonne nuit ! :hap:

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par J8B le Jeu 14 Aoû - 20:50

Quelques petits trucs que tu peux rajouter au tuto :
Concernant IF, on peut l'employer de cette manière :
IF (condition) GOTO @label ELSE @label2
IF (condition) GOTO @label ELSE (commandes)
IF (condition) GOTO @label

Concernant AND OR, tu as aussi XOR qui veut dire "Seulement ou", c'est à dire que c'est soit une condition ou l'autre mais pas les deux.

Ensuite il te manque la commande ON qui s'utilise de cette manière :
ON (VariableNumérique) GOSUB (ou GOTO) @label0, @label1, @label2, ...
ça veut dire concrètement que si la variable égal à 0 alors tu vas au label 0 sinon si la variable égal 1 tu vas au label 1 ....
Cela remplace IF Var==0 THEN GOTO @label0 ELSE IF Var==1 THEN GOTO @label1 ELSE ...

Pour terminer tu peux préciser l'ordre des opérations (car ça m'est arrivé que l'oubli de parenthèses me faussait le résultat):
1_Entre parenthèses ou crochets
2_MINUS, NOT
3_Fonctions ou commandes
4_*, /, %
5_+, -
6_<, <=, >, >=, ==, !=
7_AND, OR, XOR

Après ça je vois rien d'autre à rajouter pour ce tuto  Razz
avatar
J8B

Messages : 402
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par S.lexis le Ven 15 Aoû - 12:02

IF (condition) THEN @LABEL marche aussi, je savait plus que c'était directement GOTO (4 lettres aussi :p )
J'avais oublié le ON merci :p

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par J8B le Sam 16 Aoû - 19:26

Ah oui je l'avais zappé celui là ^^

_________________
Statut (MàJ:29 Avril 2017): Sur le projet "Virtual Bébête" (avancée ~26%).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 402
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Tutoriel]Les conditions + FOR

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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