3
votes

Pourquoi utilisons-nous l'instruction "End If"?

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:
Lorsque X = 5 Alors la sortie sera "X N'EST PAS PLUS GRAND QUE 10 ".


2 commentaires

C'est comme demander pourquoi un FOR a besoin d'un NEXT correspondant :)


Juste pour terminer le bloc if :)


4 Réponses :


4
votes

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.


1 commentaires

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.



2
votes

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


0 commentaires

-1
votes

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


0 commentaires

0
votes

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


0 commentaires