Perché alcuni programmatori BASIC inseriscono un'istruzione END ridondante alla fine del codice? [chiuso]

-1

È probabile che sia per lo più nei tradizionali BASIC (che richiedono numeri di linea) che ho visto. Prendi questi esempi (cribbed from Wikipedia):

10 PRINT "Hello, World!"
20 END

e

10 INPUT "What is your name: "; U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: "; N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? "; A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END

In ognuno di questi esempi, END non sta facendo nulla, poiché il programma si arresterà comunque come risultato del raggiungimento della fine del codice. Né esiste un'istruzione GOTO o qualcosa che faccia riferimento alla linea. In C e lingue simili, non ricordo di aver mai visto return; immediatamente prima della parentesi di chiusura di una funzione, o exit(0); immediatamente prima della parentesi di chiusura di main .

Qual è l'origine di questa abitudine? Ci sono stati dei dialetti BASIC che lo richiedono? O qualcuno ha insegnato che è una buona pratica per qualsiasi motivo?

    
posta Stewart 06.11.2018 - 23:35
fonte

2 risposte

12

Perché il programma potrebbe contenere subroutine o funzioni dopo l'istruzione di fine . Cioè, in programmi più complessi, la fine logica del programma potrebbe non essere la fine del file:

10 PRINT "Hello, World!"
15 GOSUB 30
20 END
30 PRINT "Goodbye World!"
40 RETURN

Questo esempio è un uso sciocco di una subroutine, ma ha più senso quando la subroutine contiene una logica complessa chiamata più volte.

In C and similar languages, I don't recall ever seeing return; immediately before the closing brace of a function, or exit(0); immediately before the closing brace of main

Quindi non hai visto molti programmi ANSI C. Omettere il ritorno dal main ha provocato "un comportamento indefinito "prima del C99 .

    
risposta data 07.11.2018 - 00:07
fonte
5

Inoltre, in alcuni interpreti BASIC che ho usato ... ("BASIC Access Point HP2000", chiunque? Bah ... questi bambini oggi. ..) ... l'istruzione END era richiesta alla fine del programma, e da nessun'altra parte.

LAST STATEMENT NOT "END" IN LINE 7530 ... ahh sì, me lo ricordo bene.

    
risposta data 07.11.2018 - 01:25
fonte

Leggi altre domande sui tag