Операторы DATA, READ, RESTORE
Иногда удобнее не самим заполнять массив, а задать конкретные числа, которыми следует его заполнить.
Пример:
Составим программу, которая по задаваемой цифре месяца пишет его название.
DATA январь, февраль, март, апрель, май
DATA июнь, июль, август, сентябрь, октябрь
DATA ноябрь, декабрь
DIM Kuud$(12)
'заполняем массив
FOR I = 1 TO 12
'читаем данные
READ Kuud$(I)
NEXT I
INPUT "Введи номер месяца"; N
PRINT Kuud$(N)
|
Здесь использованы опнраторы DATA, READ.
DATA – перечисляет символьные или числовые данные, записанные через запятую. Символьные данные должны быть в кавычках.
READ- читает их подряд.
Оператор DATA не выполняется, поэтому может находится в любом месте программы.
Если читать с помощью READ больше данных, чем есть в DATA будет сообщение об ошибке, читать меньше данных можно.
Часто используется вместе с операторами DATA, READ также оператор RESTORE. RESTORE – восстанавливает данные и их можно читать второй раз.
19. Задания
-
Создать программу, которая вычисляет скалярное произведение двух N мерных векторов. Координаты векторов и число N задаются пользователями. Для нахождения скалярного произведения создать функцию пользователя SKALAAR(A(),B()), где A() и B() массивы. Размер массива А задаётся с помощью функции UBOUND(A) в функции пользователя.
-
Создать программу, которая находит острый угол между двумя N-мерными векторами. Для нахождения угла создаём функцию пользователя NURK(A(),B()), где A() и B() –массивы. Размер массива А задаётся с помощью функции UBOUND(A) в функции пользователя. Можно использовать созданную в предыдущем задании функцию SKALAAR(A(),B()).
-
Создать программу обучения иностранным словам так, чтобы пользователю не надо было бы самому вводить слова, а задать их с помощью DATA. Количество пар слов выбираем сами, но не менее 10.
-
Создать программу, которая выбирала бы из вводимых слов все гласные буквы и отдельно все согласные. Для этого создать функцию пользователя TAISHAALIK(taht$), для гласных букв. Основная программа проверяла бы –выбранная буква является гласной или нет. Оператор DATA , перечисляющий гласные, использовать в основной программе.
-
Среди заданных с помощью оператора DATA числовых и символьных переменных выбрать отдельно символные переменные и напечатать их, а числовые переменные сложить и распечатать сумму.
-
Заданных с помощью оператора DATA учеников разделить на две группы и распечатать результат.
-
Вычислить значение
Y=x^3+5x^2+6x+7
Z=12x^5+11x^4+10x^3+123
При х=12, 15, 25, 7, 13, 2, 6, 9, 16, 19, 21.
-
Просклонять слово «книга», задавая окончания с помощью оператора DATA.
20. Работа с файлами.
Рассмотрим, как записывать данные в файл и как их оттуда брать.
При открытии файла используются следующие режимы:
-
INPUT – для чтения текста из файла;
-
OUTPUT- для записи текста в файл;
-
APPEND – для добавления текста в файл;
Файл открывает оператор OPEN.
Например оператор
OPEN "proov.txt" FOR OUTPUT AS #1
Открывает файл proov.txt для записи. Файл proov.txt заносится в активный каталог. Перед названием файла может быть указан путь, где файл находится, например, "c:\temp\proov.txt".
#1 – обозначает порядковый номер файла. Одновременно может быть открыто несколько файлов. У каждого –своё имя и свой порядковый номер.
Если хотим читать из файла proov.txt , то его надо открыть для чтения:
OPEN "proov.txt" FOR INPUT AS #1
После чтения/записи файл надо обязательно закрыть с помощью оператора CLOSE.
CLOSE #1 – закрывает файл с номером #1
CLOSE – закрывает все открытые файлы.
Запись в файл
Запись в файл происходит с помощью оператора PRINT, но надо указать порядковый номар файла.
Пример: Программа, которая запрашивает слово и записывает его в файл.
OPEN "proov.txt" FOR OUTPUT AS #1
INPUT "Введи слово"; Tekst$
PRINT #1, Tekst$ 'записываем слово в файл
CLOSE #1 'закрываем файл
|
Вместо оператора PRINT можно использовать оператор WRITE. Оператор WRITE добавляет запятые между числами и кавычки для символов в файл.
Пример: Программа, которая записывает в файл andmed.txt данные 5 человек.
OPEN "andmed.txt" FOR OUTPUT AS #1
FOR I = 1 TO 5
INPUT "Введи имя:"; Nimi$
INPUT "Введи возраст:"; Vanus
INPUT "Введи пол:"; Sugu$
WRITE #1, Nimi$, Vanus, Sugu$
NEXT I
CLOSE #1
|
Если открыть файл в режиме OUTPUT и записать туда данные, файл перепишется заново. Для добавления данных надо использовать режим APPEND.
Чтение из файла
Читать из файла можно с помощью оператора INPUT. Надо указать также порядковый номер файла.
Пример: Программа считывает из файла proov.txt текст до запятой.
OPEN "proov.txt" FOR INPUT AS #1
INPUT #1, Tekst$
PRINT "В файле был текст: "; Tekst$
CLOSE #1
|
Для чтения следующего значения надо снова использовать оператор INPUT . Значения в файле отделены запятыми.
Пример: Для чтения из файла, невзирая на запятые, используется оператор LINE INPUT .
OPEN "andmed.txt" FOR INPUT AS #1
'читаем данные 5 человек
PRINT "Содержимое файла:"
FOR I = 1 TO 5
LINE INPUT #1, RIDA$
PRINT RIDA$
NEXT I
CLOSE #1
|
Добавление текста в файл
Пример: Программа добавляет в файл proov.txt ещё один ряд.
OPEN "proov.txt" FOR APPEND AS #1
PRINT #1, "Ещё один ряд!"
CLOSE #1
|
Уничтожение файла
Уничтожение файла происходит с помощью оператора KILL.
Например, хотим уничтожить файл proov.txt. Это делается командой:
21. Некоторые примеры
Пример1. Программа, которая записывает числа, делящиеся на 2 в файл 2.txt, делящиеся на 3 –в 3.txt, остальные в файл teised.txt.
OPEN "2.txt" FOR OUTPUT AS #1
OPEN "3.txt" FOR OUTPUT AS #2
OPEN "teised.txt" FOR OUTPUT AS #3
INPUT "Сколько чисел смотрим"; PIIR
FOR I = 1 TO PIIR
'если I делится на 2 , то записываем в файл#1
IF I / 2 = INT(I / 2) THEN PRINT #1, I;
IF I / 3 = INT(I / 3) THEN PRINT #2, I;
'иначе - в файл #3
IF I / 3 <> INT(I / 3) AND I / 2 <> INT(I / 2) THEN PRINT #3, I
NEXT I
CLOSE
|
Прмер 2. Программа, которая записывает имена и возраст людей из массива в файл andmed.txt
INPUT "Сколько данных вводим"; N
'объявляем массивы
DIM Nimed$(N) 'массив имён
DIM Vanused(N) 'массив возраста
'заносим имена в массив
FOR I = 1 TO N
PRINT "Введи"; I; ". имя";
INPUT Nimed$(I)
PRINT "Введи"; I; ". возраст";
INPUT Vanused(I)
NEXT I
'Заносим данные в файл andmed.txt
OPEN "andmed.txt" FOR OUTPUT AS #1
FOR I = 1 TO N
WRITE #1, Nimed$(I), Vanused(I)
NEXT I
CLOSE #1
|
Пример3. Программа, которая читает из файла andmed.txt имена и возраст и выдаёт их на экран.
CLS
OPEN "andmed.txt" FOR INPUT AS #1
'повторяем цикл до тех пор, пока не иссякнут данные (функция EOF).
DO
INPUT #1, NIMI$, VANUS
PRINT "Имя:"; NIMI$
PRINT "Возраст:"; VANUS
LOOP UNTIL EOF(1)
CLOSE #1
|
Функция EOF принимает значение 1, если конец файла и 0 – в противном случае. Аргументом функции является порядковый номер файла.
22. Задания
-
Создать программу, которая записывает в файл все простые числа до N , которое задаётся пользователем
-
Создать программу, которая указывала бы все возможные комбанации получения кроны из центов
50 центов
|
20 центов
|
10 центов
|
5 центов
|
0
|
0
|
0
|
20
|
0
|
0
|
1
|
18
|
Чтобы получить колонки, удобно данные поместить в файл так:
PRINT #1, A, B, C, D. Удобно также записать PRINT #1, "50 сентов", "20 сентов», "10 сентов», "5 сентов".
-
Создать функцию пользователя LOENDA(failinimi$,), которая читала бы из файла failinimi$ частоту появления буквы a$. Файл для чтения должен быть создан в Notepad. Основная программа показывает частоту вхождения разных букв в файл.
-
Создать графическую программу расположения на экране точек, удовлетворяющих условию:
где N – натуральное число.
-
Создать графическую программу(SCREEN 12)., которая закрашиавает экран разноцветными точками. Цвет выбирается из условия VARV=10 * SIN(50 * x * y), где x и y –переменные (x меняется от 0 до 639, а y от 0 до 479).
-
Создать программу, которая находила бы все числа, похожие на 3025, для которых верно:
30 + 25 = 55
55^2 = 3025. Использовать функции VAL, STR$, MID$, LTRIM$,LEFT$ ja RIGHT$.
-
Найти все 4-х значные натуральные числа, которые при чтении в обратном порядке дают число в 4,5 раз большее.
-
Создать в Excel функцию пользователя LOENDAFAILIST(Failinimi, Taht), которая считала бы частоту вхождения буквы Taht в файл Failinimi. Сохранить это файл 8.xls.
23. Создание функции пользователя в Excel с помощью Visual Basic
Для создания функции пользователя выбираем в меню Tools, Macro, Visual Basic Editor. Затем Insert, Module. Здесь пишем текст программы на Бейсике, например, программу для подсчёта частоты вхождения заданной буквы в текст:
Function LOENDAFAILIST(failinimi$, a$)
Open failinimi$ For Input As #1
Do
Line Input #1, tekst$
For x = 1 To Len(tekst$)
If a$ = Mid$(tekst$, x, 1) Then mitu = mitu + 1
Next
LOENDAFAILIST = mitu
Loop Until EOF(1)
Close #1
End Function
Внутри кнопки fx среди пользовательских функций User defined появляется функция LOENDAFAILIST(failnimi$, a$) с двумя аргументами. В качестве первого аргумента пишем адрес текста, в котором надо подсчитать количество заданных букв, в качестве второго аргумента в кавычках букву, частоту которой в тексте надо подсчитать, например, =LOENDAFAILIST("c:\MyDocu~1\Galina\LOE.txt";"a") и ОК.
24. Используемые источники
-
Dan Bogdanov. Programmeerimiskeel BASIC.
-
Anti Teepere. QBASICu kaugkoolituskursus. (anti@7t.ee)
Достарыңызбен бөлісу: |