| Problème avec IF imbriqués | |
|
|
Auteur | Message |
---|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Problème avec IF imbriqués Mer 16 Oct 2013 - 9:47 | |
| En préparant un prochain article sur la coloration des fractales, j'ai essayé de coder l'algorithme en Panoramic pur. Actuellement, l'algorithme de coloration est codé en FreeBasic et placé dans une DLL. Entre autres, j'aurais besoin de transposer le code FreeBasic suivant : - Code:
-
if D > 0 then V = 1 elseif D > -8 then V = 1 + D / 8 else V = 0 end if
J'ai donc essayé ceci en Panoramic : - Code:
-
dim D, V
D = -1
if D > 0 V = 1 else if D > -8 V = 1 + D / 8 else V = 0 end_if print V
end
Mais ça ne marche pas ! Suivant la valeur de D, j'obtiens soit un résultat faux, soit un message d'erreur ! (avec Panoramic editor 0.9.25i4) Bien sûr je pourrais faire 3 tests, mais ce n'est pas très élégant. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 10:12 | |
| CA ne marcherait pas mieux comme ça: - Code:
-
dim D, V
D = -1
if D > 0 V = 1 else if D > -8 V = 1 + D / 8 else V = 0 end_if end_if
print V
end
Résultat: 0.875 | |
|
| |
Mumu
Nombre de messages : 176 Localisation : 45 Date d'inscription : 20/12/2012
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 10:15 | |
| Bonjour. La commande else if n'existe pas en Panoramic. Et c'est dommage car ça permettrait de faire bien des choses élégantes. Cependant, il est très facile de s'en passer (au prix d'une certaine lourdeur dans le code - c'est vrai)... | |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 10:39 | |
| Merci Klaus ! ça marche ! exactement ce qu'il me fallait | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 11:07 | |
| @Jean Debord: Content d'avoir pu t'aider ! @Mumu: La syntaxe avec un mot-clé du type elseif n'est pas facile à lire, surtout pour un non-informaticien, ou disons plutôt pour quelqu'un ne venant pas du C ou de ses clones... Personnellement, je préfère de loin la syntaxe Panoramic, mais à condition d'une présentation rigoureuse: - Code:
-
if cond1 ... : ' executer si cond1 est vraie if cond2 ... : ' exécuter si cond1 ET cond2 sont vraies else ... : ' exécuter si cond1 est vraie et cond2 est fausse end_if else ... : ' exécuter si cond1 est fausse end_if
Rien que la présentation graphique permet de voir d'un seul coup d'oeil la logique du code. | |
|
| |
Mumu
Nombre de messages : 176 Localisation : 45 Date d'inscription : 20/12/2012
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 12:04 | |
| @ Klaus
Je suis tout à fait d'accord avec toi. Pour les "Cphones", souvent, plus c'est illisible, plus c'est "élégant". J'en connais même qui codent une fonction entière sur une seule ligne ! Il va sans dire qu'un prog bien lisible et bien commenté est bien plus agréable à lire, ET A DEBUGUER !!! J'en sais quelque chose (c'est du vécu) et maintenant j'aère bien mes programmes. (Euh.. pas toujours il est vrai...) | |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 12:07 | |
| On m'a demandé plusieurs fois de coder le ELSE_IF J'ai toujours hésité à le faire car son utilisation et aussi la maintenance d'un source dans lequel il y a des elseif n'est pas évidente...
En effet, dans un IF contenant un ELSE_IF, on n'exécute ce qu'il y a après un ELSE_IF que si la deuxième condition est vraie. Rien n'est exécuté (pas de ELSE) dans le cas où la première et la deuxième condition sont fausses. Et ça, ce n'est pas évident à comprendre quand on recherche une erreur dans l'exécution.
Dernière édition par Jack le Mer 16 Oct 2013 - 12:14, édité 2 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 12:08 | |
| Entièrement d'accord, Mumu. C'est bien mon avis, et je sais gré à Jack d'avoir conçu Panoramic de telle façon qu'une écriture claire soit possible, sans gymnastique mentale avec des caractères spéciaux, diverses parenthèses etc.
EDIT
Ma réponse s'est croisée avec Celle de Jack. Pour ma part, même si un ELSE_IF existait, je ne m'en servirais certainement pas. Les moyens existants permettent de tout faire, dans la clarté et la simplicité. Quoi de plus élégant que la simplicité ? | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec IF imbriqués Mer 16 Oct 2013 - 12:26 | |
| Parfaitement clair, Klaus. Personnellement, je n’ai pas senti la nécessité pressante du ELSEIF. Il suffit d’être logique comme tu l’as si bien illustré. A mes débuts, j’ai connu le langage COBOL : en voici un test - Code:
-
IF A = B AND NOT LESS THAN C OR D dont l'équivalent PANORAMIC est : - Code:
-
IF ((A = B) AND (NOT(A < C)) OR (NOT(A <D))) J’avoue que la syntaxe de Panoramic est de loin plus claire bien qu'elle ne soit pas la plus concise! Exemple : - Code:
-
dim a,b,c,d a = 20 : b = 20 : c = 6 : d = 10 IF ((A = B) AND (NOT(A < C)) OR (NOT(A <D))) message "OK" ELSE message "KO" END_IF A chacun ses habitudes! | |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème avec IF imbriqués | |
| |
|
| |
| Problème avec IF imbriqués | |
|