Pourquoi écrivons-nous l'instruction END IF
dans ce programme? Sans l'écrire, nous pouvons facilement obtenir notre résultat. Y a-t-il un exemple à travers lequel vous pouvez m'expliquer l'utilisation de l'instruction END IF
?
J'ai essayé ceci:
INPUT X IF X>10 THEN PRINT "X IS GREATER THAN 10" ELSE PRINT "X IS NOT GREATER THAN 10" END IF END
alors je suis obtenant également le résultat attendu.
Le vrai code est:
INPUT X IF X>10 THEN PRINT "X IS GREATER THAN 10" ELSE PRINT "X IS NOT GREATER THAN 10" END
ATTENDU ET DÉSIRÉ
PAR EXEMPLE:
LorsqueX = 5
Alors la sortie sera "X N'EST PAS PLUS GRAND QUE10
".
4 Réponses :
END IF
est nécessaire pour indiquer la fin d'une structure IF, ELSE IF, ELSE
écrite sur plusieurs lignes. S'il n'y a pas de END IF
(dont l'absence entraînera une erreur) alors les instructions sous la structure IF, ELSE IF, ELSE
seront considérées comme faisant partie de la structure IF, ELSE IF, ELSE
jusqu'à ce qu'il y ait un END IF
. S'il n'y avait pas de END IF
, l'utilisation de la structure IF, ELSE IF, ELSE
aurait été limitée pour être utilisée uniquement à la fin du programme
Prenons une situation où vous voudriez exécuter 100 lignes particulières si la condition est vraie et 100 autres lignes si la condition est fausse et 100 lignes supplémentaires qui doivent toujours s'exécuter après la structure IF-ELSE
. Maintenant, évidemment, vous ne pouvez pas écrire toutes ces 200 lignes liées à IF ELSE
sur une seule ligne. Et s'il n'y avait pas de END IF
, il n'y aurait eu aucun moyen d'exécuter les 100 lignes suivantes.
END IF
n'est pas valide pour les instructions IF, ELSE IF, ELSE
écrites sur une seule ligne. Toute instruction de la ligne suivante sera considérée comme hors de la structure IF, ELSE IF, ELSE
. Il n'est pas toujours possible de coder toutes les fonctionnalités requises sur une seule ligne. Ainsi, il ne peut être utilisé que lorsqu'une petite fonctionnalité qui peut être écrite sur une ligne doit être déclenchée sur la base de certaines conditions. C'est donc la courte venue de cette approche à une seule ligne.
Le débogage d'une instruction IF
sur une ligne peut également être difficile. Une instruction IF
multiligne avec des lignes séparées pour tout rend cela beaucoup plus facile puisque l'erreur est signalée sur la ligne contenant uniquement le code problématique, pas sur la même ligne que le code IF >,
ELSE IF
, ELSE
et les actions qui se produiraient avec un IF
sur une ligne.
Plusieurs instructions if / then / else indentées peuvent être combinées en une structure plus facile qu'une instruction sur une seule ligne, telle que:
INPUT X, Y, Z IF X = 0 AND Y = 0 AND Z = 0 THEN PRINT "All zero." ELSE IF X = 0 AND Y <> 0 AND Z = 0 THEN PRINT "X and Z zero." ELSE IF X <> 0 AND Y = 0 AND Z = 0 THEN PRINT "Y and Z zero." ELSE IF X = 0 AND Y = 0 AND Z <> 0 THEN PRINT "X and Y zero." ELSE IF X <> 0 AND Y <> 0 AND Z = 0 THEN PRINT "X and Y non-zero." ELSE IF X <> 0 AND Y = 0 AND Z <> 0 THEN PRINT "X and Z non-zero." ELSE IF X = 0 AND Y <> 0 AND Z <> 0 THEN PRINT "Y and Z non-zero." ELSE PRINT "All non-zero."
Ce qui équivaut à:
INPUT X IF X > 10 THEN PRINT "X is greater than 10." ELSE IF X < 10 THEN PRINT "X is less than 10." ELSE PRINT "X is equal to 10."
Ce serait extrêmement difficile de tester la valeur de 3 nombres sur une seule ligne si / alors, comme:
INPUT X IF X > 10 THEN PRINT "X is greater than 10." ELSE IF X < 10 THEN PRINT "X is less than 10." ELSE PRINT "X is equal to 10." END IF END IF
Une alternative consiste à utiliser le cas de sélection:
INPUT X SELECT CASE X CASE IS > 10 PRINT "X is greater than 10." CASE IS < 10 PRINT "X is less than 10." CASE ELSE PRINT "X is equal to 10." END SELECT
Un autre exemple de détermination de 3 valeurs d'entrée:
COLOR 15 DO PRINT "Enter values(y/n)";: INPUT x$ IF LCASE$(x$) = "n" THEN END PRINT "Enter X,Y,Z";: INPUT X, Y, Z GOSUB Calculate LOOP END Calculate: SELECT CASE X CASE IS > 0 SELECT CASE Y CASE IS > 0 SELECT CASE Z CASE IS > 0 PRINT "X is positive, Y is positive, Z is positive." CASE IS < 0 PRINT "X is positive, Y is positive, Z is negative." CASE ELSE PRINT "X is positive, Y is positive, Z is zero." END SELECT CASE IS < 0 SELECT CASE Z CASE IS > 0 PRINT "X is positive, Y is negative, Z is positive." CASE IS < 0 PRINT "X is positive, Y is negative, Z is negative." CASE ELSE PRINT "X is positive, Y is negative, Z is zero." END SELECT CASE ELSE SELECT CASE Z CASE IS > 0 PRINT "X is positive, Y is zero, Z is positive." CASE IS < 0 PRINT "X is positive, Y is zero, Z is negative." CASE ELSE PRINT "X is positive, Y is zero, Z is zero." END SELECT END SELECT CASE IS < 0 SELECT CASE Y CASE IS > 0 SELECT CASE Z CASE IS > 0 PRINT "X is negative, Y is positive, Z is positive." CASE IS < 0 PRINT "X is negative, Y is positive, Z is negative." CASE ELSE PRINT "X is negative, Y is positive, Z is zero." END SELECT CASE IS < 0 SELECT CASE Z CASE IS > 0 PRINT "X is negative, Y is negative, Z is positive." CASE IS < 0 PRINT "X is negative, Y is negative, Z is negative." CASE ELSE PRINT "X is negative, Y is negative, Z is zero." END SELECT CASE ELSE SELECT CASE Z CASE IS > 0 PRINT "X is negative, Y is zero, Z is positive." CASE IS < 0 PRINT "X is negative, Y is zero, Z is negative." CASE ELSE PRINT "X is negative, Y is zero, Z is zero." END SELECT END SELECT CASE ELSE SELECT CASE Y CASE IS > 0 SELECT CASE Z CASE IS > 0 PRINT "X is zero, Y is positive, Z is positive." CASE IS < 0 PRINT "X is zero, Y is positive, Z is negative." CASE ELSE PRINT "X is zero, Y is positive, Z is zero." END SELECT CASE IS < 0 SELECT CASE Z CASE IS > 0 PRINT "X is zero, Y is negative, Z is positive." CASE IS < 0 PRINT "X is zero, Y is negative, Z is negative." CASE ELSE PRINT "X is zero, Y is negative, Z is zero." END SELECT CASE ELSE SELECT CASE Z CASE IS > 0 PRINT "X is zero, Y is zero, Z is positive." CASE IS < 0 PRINT "X is zero, Y is zero, Z is negative." CASE ELSE PRINT "X is zero, Y is zero, Z is zero." END SELECT END SELECT END SELECT RETURN
C'est comme demander pourquoi un FOR a besoin d'un NEXT correspondant :)
Juste pour terminer le bloc if :)