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 = 5Alors 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 :)