Использование операторов OPEN, CLOSE, INPUT # и PRINT #.
Оператор OPEN позволяет открывать файлы для чтения и записи. Общий вид:
OPEN"File.name" FOR { режим } AS { номер }
File.name - имя открываемого файла
режим - способ доступа к файлу
номер - целое число 1-255, которое потом используется, чтобы определить нужный файл для записи/чтения.
Режимы:
APPEND - последовательная запись в файл, начиная с конца файла, т.е. дополнение;
Рис. 2.7. Блок - схема циклического вычислительного процесса с применением двумерного массива
OUTPUT - перезапись в файл;
INPUT - чтение файла;
BINARY - режим ввода/вывода.
Если вы открыли файл для дополнения, то это делается следующим образом:
OPEN "FILE.TXT" APPEND AS #1
a$="your text here"
w=344,9
PRINT #1, a$
PRINT #1, w
CLOSE #1
В результате программа допишет в файл FILE.TXT две строки, в первой - значение переменной a$, во второй - значение переменной w. Рекомендуется в конце программы ставить CLOSE, тогда она автоматически закрывает все файлы. Если не закрыть файл, то у вас не будет к нему доступа, в нем ничего не изменится и т.д., команда CLOSE закрывает все файлы и проблем не возникнет.
Для чтения из файла используется оператор INPUT #:
OPEN "FILE.TXT" FOR INPUT AS #1
INPUT #1, D$
INPUT #1, R
CLOSE #1
PRINT D$
PRINT R
CLOSE
Еще одно хорошее свойство - команда FREEFILE - указывает следующий свободный номер для файлов, когда у вас открыто несколько файлов и вы думаете какой еще придумать номер - не мучайтесь, пишите:
n=FREEFILE
open "name" for append as #n
...
close #n
Пример. Найти все массива C(5,5)., большие по модулю 2.
Сформируем файл “data” содержащий элементы массива с помощью оператора PRINT #:
DIM C(5,5)
open “data” for output as #1
FOR I = 1 TO 4
FOR J = 1 TO 5
INPUT X
PRINT #1,X
NEXT J, I
close #1
Для решения нашей задачи элементы массива считываем с файла “data” с помощью оператора INPUT #.
Результаты запишем в файл “rez”.
open “data” for input as #2
open “rez” for output as #3
FOR I = 1 TO 5
FOR J = 1 TO 5
INPUT #2, C(I,J)
IF ABS(C(I,J))>2 THEN PRINT #3 C(I,J)
NEXT J, I
CLOSE
END
Подпрограммы.
Обособленную группу операторов, которую можно выполнять многократно, обращаясь к ней из различных мест программы, называют подпрограммой. Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, ее нужно составить в общем виде, а исходные данные для работы передавать в переменные подпрограммы перед обращением к ней.
Блоковая функция пользователя.
DEF FN имя [(список параметров)]
Операторы
FN имя = выражение
Операторы
END DEF
QuickBASIC - программа для примера 2:
REM LR-5-1, m=13, n=5
DEF fnf(x,y)
fnf = cos(x^2+y^2)
END DEF
REM Блоковая функция пользователя
INPUT m, n
x=m/n: y=-2*n: f1=fnf(x,y)
x=3*(m+n): y=-5.5*m: f2=fnf(x,y)
z=(f1+f2)/2/(m+n)
PRINT “z=”; z
END
Подпрограмма-функция.
FUNCTION имя [(список параметров) STATIC]
[Операторы подпрограммы]
имя = выражение
END FUNCTION
QuickBASIC - программа для примера 2:
FUNCTION f(x,y)
REM LR-5-2, m=13, n=5
f = cos(x^2+y^2)
END FUNCTION
DECLARE FUNCTION f(x,y)
REM Подпрограмма-функция
INPUT m, n
x=m/n: y=-2*n: f1=f(x,y)
x=3*(m+n): y=-5.5*m: f2=f(x,y)
z=(f1+f2)/2/(m+n)
PRINT “z=”; z
END
Подпрограмма общего вида.
SUB имя [(список параметров)] [STATIC]
Операторы подпрограммы
END SUB
[CALL] имя подпрограммы [(список аргументов)]
QuickBASIC - программа для примера 2:
SUB c(x,y,f)
REM LR-5-3, m=13, n=5
f = cos(x^2+y^2)
END SUB
DECLARE SUB c(x,y,f)
REM Подпрограммаобщего вида
INPUT m, n
x=m/n: y=-2*n: CALL c(x,y,f1)
x=3*(m+n): y=-5.5*m: CALL c(x,y,f2)
z=(f1+f2)/2/(m+n)
PRINT “z=”; z
END
Подпрограмма GO SUB.
Обращение к подпрограмме осуществляется оператором
GOSUB N
где N - номер строки, с которой начинается подпрограмма.
Подпрограмма размещается в последовательных строках, начиная с N - й. Последним оператором, выполняемым в подпрограмме, должен быть оператор RETURN. По оператору RETURN осуществляется возврат в то место программы, из которого произошло обращение к подпрограмме, а именно к оператору, следующему за GOSUB N. Подпрограмма может содержать обращения к другим подпрограммам.
QuickBASIC - программа для примера 2:
REM LR-5-4, m=13, n=5
INPUT m, n
x=m/n: y=-2*n: GOSUB 1: f1=f
x=3*(m+n): y=-5.5*m: GOSUB 1: f2=f
z=(f1+f2)/2/(m+n)
PRINT “z=”; z
END
1 REM ПодпрограммаGOSUB
f = cos(x^2+y^2)
RETURN
END
РЕЦЕНЗИЯ
на методические указания по курсу "Информатика" для самостоятельной работы студентов всех специальностей. Основы программирования Габбасова Ф.Г., Гатауллина И.Н.
Данные методические указания предназначены для самостоятельной работы студентов всех специальностей и используются при выполнении лабораторных и контрольных работ по курсу "Информатика" на языке QuickBASIC.
Методические указания позволяют выполнять студентам всех специальностей лабораторные и контрольные работы самостоятельно.
Считаю, что данные методические указания могут быть опубликованы.
Доктор физ.-мат. наук,
Профессор, зав. кафедрой ВМ ______________Р.Б.Салимов