Какова цель while eof(n) в программе qbasic?

Учитывая этот программный код:

CLS
OPEN "school.dat" FOR INPUT AS #5
DO WHILE NOT EOF(5)
    INPUT #5,ID,N$,S$,PN$
    IF LEFT$(N$,1)="A" OR LEFT$(N$,1)="a" THEN
        PRINT ID,N$,S$,PN$
    END IF
LOOP
CLOSE#5
END

Я не совсем понимаю, что толку от do while not eof(5)? Что произойдет, если этот синтаксис eof(n) будет удален?


person samrat luitel    schedule 11.05.2016    source источник


Ответы (6)


он говорит, пока вы не в конце файла, выполните код в разделе цикла.

Без этого код попытается прочитать с конца файла и отобразит сообщение об ошибке, что он прошел, а затем конец файла.

person lostbard    schedule 11.05.2016

eof(5) функция EOF проверяет номер файла, переданный функции.

Таким образом, в основном это цикл, который сохраняет проверку, и если встречается конец файла, он выходит из цикла. Короче говоря, если вы пропустите этот бит, вы не будете читать файл.

проверьте эту ссылку и найдите eof для примера https://www2.southeast.edu/Academics/Faculty/pmcdowell/qbasic_manal.txt

person Murlidhar Fichadia    schedule 11.05.2016

Это означает, что цикл будет выполняться до тех пор, пока не будет достигнут конец файла, поэтому часть кода в цикле будет повторяться. Вы также можете сделать это с помощью «ПОКА НЕ EOF (5)» без «DO».

person NikolaTECH    schedule 04.06.2016

Кроме того, чтобы более четко увидеть структуру вашей программы, можно использовать отступы в коде. Что-то вроде этого:

cls
open"school.dat" for input as #5
do while not eof(5)
   input #5,ID,N$,S$,PN$
   IF LEFT$(N$,1)="A" OR "a" THEN
      PRINT ID,N$,S$,PN$
   END IF
LOOP
CLOSE#5
END
person BdR    schedule 22.06.2016

EOF означает конец файла. Здесь в программе цикл do продолжается до тех пор, пока файл не достигнет своего конца из-за eof(5). Если бы eof был удален, программа либо вошла бы в бесконечный цикл, либо была бы выполнена только один раз.

person uvrichest    schedule 25.12.2016

Этот фрагмент описывает, как использовать функцию EOF для выхода из чтения файла:

CLS
OPEN "school.dat" FOR INPUT AS #5
DO
    IF EOF(5) THEN
        EXIT DO
    END IF
    INPUT #5, ID, N$, S$, PN$
    IF LEFT$(N$, 1) = "A" OR LEFT$(N$, 1) = "a" THEN
        PRINT ID, N$, S$, PN$
    END IF
LOOP
CLOSE #5
END
person eoredson    schedule 07.11.2016