| 2ème IF..THEN ignoré si ils sont sur une même ligne | |
|
|
Auteur | Message |
---|
topmozika
Nombre de messages : 79 Age : 63 Localisation : Antananarivo - Madagascar Date d'inscription : 09/06/2012
| Sujet: 2ème IF..THEN ignoré si ils sont sur une même ligne Sam 2 Mar 2013 - 17:53 | |
| Bonsoir les amis! J'ai remarqué que si on met 2 IF....THEN sur une même ligne separés par [ : ], le 2ème IF..THEN est ignoré par PANORAMIC. exemple : - Code:
-
dim a,b,c,a$,b$,c$,d$ input " a = ";a : input "b = ";b : input "c = ";c if a<>0 then a$="instruction 1 acceptée par PANORAMIC" : if a=0 then b$="instruction 2 ignorée par PANORAMIC" print b+c: if b+c<>5 then c$="instruction 3 acceptée par PANORAMIC":if b+c=5 then d$="instruction 4 ignorée par PANORAMIC" print a$ : print b$ : print c$ : print d$ C'est tout simplement un petit remarque pour economiser de lignes, mais est ce quelqu'un peut me donner une explication ?? Merci d'avance A+ | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: IF...THEN Sam 2 Mar 2013 - 18:02 | |
| Bonjour.
Il est normal que le second if...then soit ignoré. Car le test if a=0 n'est jamais exécuté en réponse au 1er test. Il faut plutôt utiliser if...then...else, ou alors écrire le second test sur une nouvelle ligne. - Code:
-
dim a,b,c,a$,b$,c$,d$
input " a = ";a : input "b = ";b : input "c = ";c if a<>0 then a$="instruction 1 acceptée par PANORAMIC" : if a=0 then b$="instruction 2 ignorée par PANORAMIC" print b+c: if b+c<>5 then c$="instruction 3 acceptée par PANORAMIC":if b+c=5 then d$="instruction 4 ignorée par PANORAMIC" print a$ : print b$ : print c$ : print d$
| |
|
| |
topmozika
Nombre de messages : 79 Age : 63 Localisation : Antananarivo - Madagascar Date d'inscription : 09/06/2012
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Sam 2 Mar 2013 - 18:11 | |
| @Pan59 le problème c'est que si tu met a=0 en premier et b=1 c=4 c a d (b+c=5), les 2 instructions IF...THEN sont ignorées en même temps. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Sam 2 Mar 2013 - 18:31 | |
| Salut topmozika. L’instruction composée IF condition THEN instruction fonctionne comme ceci : si la condition est vraie, l’instruction après THEN sera exécutée ; si la condition est fausse, le système va chercher l’éventuelle ELSE ; si il n’y a pas de ELSE, le système ignore tout ce qui vient après la condition ,y compris d’autres instructions. CONCLUSION : évite de mettre plusieurs IF sur la même ligne. - Code:
-
if 2 = 3 then blablabla : blobloblo : bliblibli : ' ici blobloblo ne provoque pas d'erreur, car le système n'arrive à cette fausse instruction if 2 = 2 then print " OK !" : blablabla : ' ici c'est une erreur causée par blablabla
Le système évalue la condition 2 = 3 : elle est fausse bien sûr, donc il ne continuera pas à interpréter ce qu’il y a après et passera à l’instruction suivante qui se trouve à la ligne suivante. | |
|
| |
topmozika
Nombre de messages : 79 Age : 63 Localisation : Antananarivo - Madagascar Date d'inscription : 09/06/2012
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Sam 2 Mar 2013 - 19:01 | |
| Merci papydall ! c'est si simple que çà, mais tu sais qu'on ne peu pas tout savoir et heureusement y a ce forum avec des panoramiciens prêt a tout. MERCI POUR L'EXPLICATION. A+ | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Sam 2 Mar 2013 - 19:13 | |
| Il n’y a pas de quoi ! C’est un plaisir pour moi de répondre quand je sais. Surtout, n’hésite jamais à demander de l’aide ou poser des questions quand ça cloche. Il y aura certainement quelqu’un pour répondre, sinon ça déclenchera une discussion bénéfique pour tous.
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Mar 2013 - 22:50 | |
| @ Papydall, tu peut mettre plusieurs if sur la même ligne sauf que tu ne dois pas utiliser then. if x=0 : instruction: end_if : if x=1 :instruction : end_ifet là, ça fonctionne... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Dim 3 Mar 2013 - 0:45 | |
| Tu as délimité l’instruction composée IF …. End_IF. La 2ème (3ème, etc.) instruction(s) qui vient (viennent) après, même si elle(s) est (sont) sur la même ligne sera (seront) exécutée(s) car elle(s) est(sont) considérée(s) comme instruction(s) indépendante(s) ne faisant pas partie de l’instruction composée IF. Dans ce cas et seulement dans ce cas, on peut enchainer plusieurs instructions sur la même ligne. Mais pourquoi se compliquer la vie ?!
Cette pratique avait peut-être sa raison d’être dans les années 1980 pour optimiser le code car la mémoire était chère et se comptait en KO, mais maintenant, la lisibilité du code doit primer, à mon avis.
Mais, bon, ce que tu as écrit est juste.
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Dim 3 Mar 2013 - 13:51 | |
| D'accord avec toi papydall, pourquoi chercher à faire des acrobaties alors que c'est bien plus lisible quand on code séquentiellement sur plusieurs lignes. J'ai regretté de ne plus pouvoir écrire sur la même ligne (ce que je faisais en Basic) If condition... Then ... Else ... mais j'ai pris l'habitude de le faire sur plusieurs lignes (je sais, on peut le faire en rajoutant des ':', mais c'est moins élégant. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Dim 3 Mar 2013 - 16:22 | |
| Attention, je ne discute pas de l' esthétique ni du pratique, je dis et démontre seulement que deux if tiennent sur la même ligne sans être ignoré... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Dim 3 Mar 2013 - 18:24 | |
| @JL35: Dans la syntaxe de Panoramic, il n'y a pas de IF...THEN...ELSE ! Il y a deux possibilité: 1. IF condition THEN 1 seule ligne d'instructions 2. IF condition un nombre libre de lignes d'instruction pour la condition "vrai" ELSE un nombre libre de lignes d'instruction pour la condition "faux" END_IF Mais: les termes [IF condition], [ELSE] et [END_IF] sont considérées comme des commandes complètes. Donc, tu peux écrire ceci: - Code:
-
dim i% i%=2 if i%=1 : message "a" : else : message "b" : end_if
et tu verras que b s'affiche. Tu peux bien sûr compliquer la chose à volonté, mais tu vois le principe. Cependant, je ne suis pas sûr qu'on y gagne en lisibilité, comme dit Papydall. Mais techniquement, c'est possible. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne Dim 3 Mar 2013 - 18:38 | |
| Je sais tout ça Klaus, je disais juste que je faisais ça en Basic et que ça n'existe pas en Panoramic, justement. Et que le ':' pour séparer les ELSE etc ce n'est pas très esthétique, donc je ne fais pas comme ça, j'ajoute des lignes. | |
|
| |
Contenu sponsorisé
| Sujet: Re: 2ème IF..THEN ignoré si ils sont sur une même ligne | |
| |
|
| |
| 2ème IF..THEN ignoré si ils sont sur une même ligne | |
|