- •Министерство образования и науки российской федерации
- •Содержание
- •Введение
- •Лабораторная работа № 1 Разработка и отладка линейной программы Задание:
- •Выполнение задания:
- •Лабораторная работа № 2 Разработка и отладка программы с разветвлениями Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 3 Разработка и отладка циклической программы Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 4
- •Разработка и отладка
- •Сложной циклической программы
- •Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 5 Разработка и отладка программы для работы с файлами Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 6 Разработка и отладка программы для работы с графикой Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 7 Разработка и отладка программы для работы с графикой в статике Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 8 Разработка и отладка программы для работы с графикой в динамике Задание на лабораторное занятие
- •Выполнение задания
- •Методические рекомендации По разработке программы
- •5. Трансляция и отладка программы.
- •К лабораторной работе №1
- •К лабораторной работе № 2
- •К лабораторной работе № 3
- •К лабораторной работе № 4
- •Исходная последовательность
- •Отсортированная по возрастанию
- •Программа разложения числа на простые сомножители
- •Делителями числа 28 являются 1, 2, 4, 7, 14.
- •Программа вычисления таблицы значений функции 2-х переменных
- •Программа построения таблицы сложных процентов
- •Программа сложения столбцов определителя
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Варианты 25-27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Варианты 28-30
- •Вариант 31
- •Вариант 36
- •Варианты 34-36
- •Логика цикла
- •Логика цикла
- •К лабораторной работе № 5
- •К лабораторной работе № 6
- •К лабораторной работе № 7
- •К лабораторной работе № 8
- •Косинусоида. Вариант 1
- •Основы программирования на языке basic
- •192171, Г. Санкт-Петербург, ул. Седова, 55/1
К лабораторной работе № 5
Цель работы: приобретение практических навыков в разработке и отладке программ, работающих с файлами последовательного доступа.
Файлы последовательного доступа наиболее просты как в организации, так и в работе. Записи обрабатываются последовательно одна за другой. Информация в таких файлах хранится в виде текста в кодах ASCII. Подобные файлы легко просмотреть на экране, используя любой простейший редактор, или в самом Бейсике. Однако при большом информационном объеме файла обработка его заметно замедляется. В данной работе необходимо создать программу, работающую с файлами последовательного доступа, содержащими 5-буквенные слова.
Структура создаваемой программы: главный модуль программы, осуществляющий: а) выбор варианта работы с файлами и обращение по результатам выбора к соответствующей подпрограмме, б) побуквенный ввод слов в оперативную память, с последующим использованием их для создания файла или добавления в файл слов, в) формирующий условия завершения работы с программой; а также 3 подпрограммы: создания файла, добавления слов в файл и считывания слов из файла.
В главном модуле посредством операторов PRINT реализуется выводимое на экран своеобразное меню, обеспечивающее выбор варианта работы с файлами, осуществляемый оператором INPUT. Также операторами INPUT реализуется ввод имени файла, задается число вводимых слов, а также организуется блок побуквенного ввода слов в оперативную память, причем для последнего INPUT со строковой переменной помещается в двойной цикл. Поскольку программа работает с 5-буквенными словами, то один из циклов (для ввода букв слова) будет от 1 до 5, тогда как верхний предел второго цикла определяется числом вводимых слов.
Управляющим оператором SELECT CASE … END SELECT обрабатываются результаты выбора, обеспечивая обращение к выбранной подпрограмме с помощью оператора GOSUB, причем каждому GOSUB должен соответствовать оператор RETURN в подпрограмме. В противном случае Бейсик выдаст сообщение об ошибке "RETURN без GOSUB".
Подпрограммы обычно располагаются в конце программы, причем перед первой из них необходимо поставить оператор GOTO или IF…THEN, чтобы исключить обращение к подпрограмме без оператора GOSUB.
Пусть обращение к подпрограмме создания файла обеспечивается оператором GOSUB 50. Рассмотрим эту подпрограмму:
50 OPEN p2$ FOR OUTPUT AS #2
60 FOR j =1 TO N1
70 WRITE #2, x10$ (1, j); x10$ (2, j); x10$ (3, j); x10$ (4, j); x10$ (5, j)
80 PRINT x10$ (1, j); x10$ (2, j); x10$ (3, j); x10$ (4, j); x10$ (5, j)
90 NEXT j
100 CLOSE #2
110 RETURN
Оператор OPEN в строке 50 открывает файл для создания по каналу 2. Имя файла задается в главном модуле с помощью строковой переменной p2$. Далее в строках 60-90 организуется цикл для записи в файл N1 5-буквенных слов посредством оператора WRITE #2 в строке 70, который записывает в файл в одну строку 5 элементов (букв) массива x10$. Оператор PRINT в строке 80 выводит на экран записываемое в файл слово. По завершению цикла оператор CLOSE #2 закрывает файл, а RETURN завершает подпрограмму, передавая управление оператору, следующему в главном модуле программы за оператором GOSUB 50. Подпрограмма добавления слов в файл аналогична рассмотренной и отличается лишь заменой ключевого слова OUTPUT в строке 50 на APPEND, также лучше изменить и номер канала. Одновременно можно открыть несколько файлов, но каждый по своему каналу, обозначаемому своим номером от 1 до 255. Сколько всего можно открыть файлов зависит от файла конфигурации компьютера. Во избежание неприятностей рекомендуется не открывать сразу слишком много файлов, а по окончании работы с файлом сразу же закрыть его.
В подпрограмме считывания в строке с оператором OPEN ставится ключевое слово INPUT, а для считывания данных используется оператор INPUT #n (где n – номер канала), поставленный в двойной цикл. Верхний предел одного цикла определяется числом букв в слове, а второго – количеством читаемых слов. С помощью оператора PRINT считываемые слова выводятся на экран. С помощью функции EOF(n), где n – номер канала, следует предусмотреть выход из цикла в случае, когда заданное число считываемых слов превышает число записанных в файл слов. Это позволит избежать появления сообщения об ошибке "Введен конец файла". Используемые в программе массивы лучше описывать операторами REDIM.
Таблица 0.5.1.
Оператор и его описание |
OPEN "file2.dat" FOR OUTPUT AS #2 Оператор, открывающий по 2-му каналу файл file2.dat для создания. Если файл file2.dat уже был создан, то он уничтожается и создается заново. |
OPEN "file2.dat" FOR APPEND AS #1 Оператор, открывающий по 1-му каналу файл file2.dat для добавления. Если файл находится не в текущем каталоге, с которым работает Бейсик, то в названии файла необходимо указывать полный путь к нему, например, "A:\ZZ\file.dat" для файла, находящегося на диске А (дискете) в каталоге (папке) ZZ. |
OPEN "file2.dat" FOR INPUT AS #3 Оператор, открывающий по 3-му каналу файл file2.dat для считывания |
WRITE #2, x10$ (1, j); x10$ (2, j) В открытый по 2-му каналу файл оператор записывает в одну строку из массива x10$ два символьных элемента c разделительными знаками |
PRINT #1, x10$ (1, j); x10$ (2, j) В открытый по 1-му каналу файл оператор записывает в одну строку из массива x10$ два символьных элемента без разделительных знаков |
INPUT #3, x11$ (i, j) Оператор, читающий данные из открытого по 3-му каналу файла и присваивающий их значения переменной x11$(i, j). |
CLOSE #1 Оператор, закрывающий открытый по 1-му каналу файл |
CLOSE Если все аргументы опущены, то закрываются все файлы и устройства. |
EOF(n) Функция файлового ввода-вывода, определяющая условие конца файла, где n – номер открытого файла. Используется, например, для досрочного выхода из цикла, организованного для считывания данных из файла, когда данные файла исчерпаны. |
NAME " file1.dat" AS "file2.dat" Оператор переименовывает файл file1.dat в file2.dat |
KILL " file2.dat " Оператор стирает указанный файл file2.dat с диска. Соответствует команде DOS del. |