- •1. Объявление структуры, обращение к элементам структуры, объявление массива структур.
- •2.Объявление пользовательского (typedef) типа структуры. Объявление переменных и массивов данного типа. Привести примеры.
- •3.Ввод-вывод массива структур. Привести пример программы подсчета среднего арифметического по числовому полю в массиве структур.
- •4.Общий формат объявление функции пользователя. Прототип функции. Типы возвращаемых значений. Привести примеры.
- •5.Формальные и фактические параметры в функции. Основные способы передачи параметров в функцию.
- •6.Способы передать в функцию массивов. Привести примеры.
- •7.Привести примеры функции вывода на печать элемента массива структур по его порядковому номеру.
- •8.Привести пример функции, которая возвращает сумму (произведение, среднеарифметическое) элементов в массиве.
- •9.Рекурсия. Определение рекурсии. Привести примеры рекурсивных функций
- •10.*Указатели на функцию. Примеры указателей на функцию.
- •11. *Пользовательские функции с переменным числом параметров
- •12. Параметры функции main(). Привести примеры обращения к параметрам функции main()
- •13. Понятие сортировки. Основные типы алгоритмов сортировки. Оценка эффективности алгоритмов сортировки
- •14. Схема и алгоритм сортировки методом выбора
- •15. Пузырёк
- •16. Алгоритм вставок
- •17.*Улучшенные алгоритмы сортировки: Шелла, быстрая сортировка
- •18. *Модели динамических структур данных: стек, очередь
- •20. Файл. Понятие и объявление переменной файлового типа
- •21. Понятие файла и потока данных. Стандартные потоки
- •22.Виды файлов. Файлы последовательного доступа.
- •23.Алгоритм и программа создания файла записей (структур).
- •30. *Функции потокового ввода-вывода.
22.Виды файлов. Файлы последовательного доступа.
Последовательный файл состоит из записей, доступ к которым осуществляется последовательно, т.е. n-я запись следует за (n - 1)-ой как при формировании файла, так и при считывании из него.
Создание последовательного файла включает следующие шаги:
открытие файла (оператор OPEN);
вывод данных в файл (операторы PRINT#, WRITE#, или PRINT# USING);
закрытие файла (оператор CLOSE).
Считывание из последовательного файла включает следующие шаги:
открытие файла;
ввод данных из файла (операторы INPUT#, INPUT$, LINE INPUT#);
закрытие файла.
Оператор OPEN - подготавливает файл для чтения из файла (INPUT) или записи в файл (OUTPUT, если создается новый файл, APPEND, если добавляются записи в уже существующий файл).
INPUT
OPEN имя файла FOR OUTPUT AS # номер файла
APPEND
Оператор CLOSE - закрывает файл, т.е. делает невозможным чтение или запись.
CLOSE [# номер файла]
Оператор CLOSE без параметров закрывает все открытые файлы. Единицей информации, которая передается при записи в файл или чтении из файла, является запись (логическая запись). Запись делится на поля. Каждое поле связано с одним элементом данных.
На устройствах последовательного доступа могут быть организованы файлы только последовательного доступа.
Файлы с переменной длиной записи всегда являются файлами последовательного доступа. Они могут быть организованы двумя способами:
1. Конец записи отличается специальным маркером.
2. В начале каждой записи записывается ее длина.
Обработка текстовых документов (файлы последовательного доступа).
Иногда от программы требуется обработка и хранение некоторой информации, однако использование баз данных является излишним (т.к. это приведет к усложнению программы, увеличению его размера и замедлению выполнения). В таком случае можно использовать текстовые файлы. Самый простой тип файла - текстовый файл последовательного доступа. Причем последовательный доступ означает, что считывание информации идет последовательно байт за байтом и порядок считывания изменить нельзя.
Для открытия файлов используется конструкция Open:
Open <имя_файла> For <режим> [Access <доступ>] [<блокировка>] As [#]<номер_файла>[Len=<длина_записи>]
<режим> - режим в котором открывается файл:
Append - для добавления в конец файла
Binary - для работы с файлом в бинарном режиме (см. ниже)
Input - для чтения файла (файл не перезаписывается)
Output - для вывода в файл с созданием или перезаписью файла
Random - для произвольного доступа (по умолчанию)
<доступ> - операции, которые можно проводить с файлом:
Read - можно только читать
Write - можно только записывать
Read Write - можно все
<блокировка> - тип блокировки файла:
Shared - другие процессы могут делать с файлом все, что угодно
Lock Read - блокировка чтения
Lock Write - блокировка записи
Lock Read Write - полная блокировка (другие процессы не могут даже открыть файл)
<номер_файла> - дальнейшая работа с этим файлом производится по номеру, под которым он открыт, причем под одним номером может быть открыт только 1 файл. Для получения свободного номера рекомендуется использовать функцию FreeFile (без параметров).
<длина_записи> - используется в файлах прямого доступа (см. ниже).
Если файл уже открыт или заблокирован другим процессом или произошла другая ошибка, Open генерирует ошибку (которую можно обработать с помощью OnError ...).
После того, как файл открыт, с ним можно начать работать.
Оператор Line Input #номер_файла, <строковая_переменная> позволяет считать следующую строку из файла. Достигнут ли конец файла, нужно применять функцию EOF(номер_файла).
Иногда необходимо считать не всю строку. В этом случае используется оператор Input # или функция Input.
Оператор Input # предназначен для файлов, в котором данные хранятся с разделителями:
«Строка», 100, #2002-10-10#
В следующей строке кода информация корректно считывается в соответствующие переменные:
Dim StringVar As String
Dim IntVar As Integer
Dim DateVar As Date
Input #1, StringVar, IntVar, DateVar
Другой способ считывания информации - использование функции Input (не путать с оператором Input #). Эта функция считывает указанное число символов в строковую переменную:
Input (<кол-во символов>,#номер_файла)
После работы с файлом его нужно закрыть с помощью оператора Close #номер_файла.
Для того чтобы записать что-нибудь в файл с последовательным доступом, необходимо воспользоваться операторами
Print # и Write #.
Оператор Print #номер_файла, <выражение> записывает <выражение> в файл в текущую позицию. Если в конце оператора стоит ‘;', то производится перевод на новую строку.
Оператор Write #номер_файла, <список_вывода> противоположен оператору Input # - т.е. выводит информацию в файл с разделителями.