- •Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7
- •Глава 7. Составные типы данных 29
- •Глава 8. Подпрограммы и функции 46
- •Глава 9. Файлы 50
- •Глава 10. Динамические переменные (списки) 58
- •Тип и функциональные возможности языка
- •Структура программы на Паскале
- •Алфавит языка
- •Правила написания имен
- •Структура блока описаний
- •Глава 2. Простые типы данных в языке Паскаль Понятие и классификация типов данных
- •Целочисленные типы
- •Вещественные типы
- •Логический тип
- •Символьный тип
- •Интервальный тип пользователя
- •Перечисляемый тип пользователя
- •Глава 3. Встроенные функции Понятие и классификация типов функций
- •Математические функции
- •Функции преобразования типов
- •Глава 4. Выражения Понятие и классификация типов выражений
- •Арифметические операции
- •Логические операции
- •Отношения
- •Битовые операции
- •Глава 5. Выполняемые операторы языка (для программ линейной структуры) Понятие и классификация
- •Классификация инструкций Паскаля
- •Оператор присваивания
- •Простейшие операторы ввода с клавиатуры
- •Простейшие операторы вывода на экран дисплея
- •Глава 6. Выполняемые управляющие операторы языка Простые управляющие операторы
- •Оператор безусловного перехода.
- •Оператор продолжения цикла.
- •Операторы ветвлений
- •Оператор условного перехода.
- •Неполный условный оператор.
- •Полный условный оператор.
- •Операторы циклов
- •Оператор арифметического цикла
- •Операторы итеративных циклов
- •Организация цикла с помощью условного перехода
- •Оператор итеративного цикла с предусловием
- •Оператор итеративного цикла с постусловием
- •Глава 7. Составные типы данных Классификация составных типов
- •Массивы Основные определения
- •Вывод массива
- •Примеры программ работы с массивами
- •Сортировки массива
- •Алгоритмы основных методов сортировок
- •Строки Строковые переменные
- •Стандартные (встроенные) процедуры работы со строками
- •Стандартные (встроенные) функции работы со строками
- •Структуры
- •Глава 8. Подпрограммы и функции Понятие подпрограмм в языке Паскаль.
- •Процедуры.
- •Описание и вызов функций
- •Параметры процедур и функций
- •Глава 9. Файлы Классификация внешних данных
- •Стандартные процедуры работы с файлами
- •Процедуры
- •Функции
- •Особенности работы с текстовыми файлами
- •Пример работы с текстовыми файлами.
- •Двоичные файлы (в машинных кодах) Типизированные файлы
- •Процедуры при работе с типизированными файлами
- •Функции при работе с типизированными файлами
- •Пример работы с типизированными файлами.
- •Файлы без типов
- •Процедуры, используемые при работе с нетипизированными файлами
- •Функции, используемые при работе с нетипизированными файлами.
- •Глава 10. Динамические переменные (списки) Понятие динамических переменных
- •Списочные данные
- •Односвязные списки
- •Двусвязные списки
- •Нульсвязные списки
- •Глава 11.Стандартный модуль работы с текстовым экраном Crt
- •2) Координаты экрана
- •3) Управление графическим режимом
- •4) Управление экраном и окном
- •5) Управление цветом
- •6) Вывод точек
- •7) Вывод линий
- •8) Вывод и закраска контуров
- •9) Окружности, эллипсы, дуги
- •10) Вывод текста
- •11) Последовательность работ при использовании графического режима
- •11) Пример программы приложения
Глава 9. Файлы Классификация внешних данных
В любом языке программирования операторы ввода/вывода предназначены для обмена информацией между оперативной памятью и внешними устройствами (внешней памятью, устройствами ввода данных в ПЭВМ, устройствами вывода данных из ПЭВМ). Процесс передачи информации в ОП называется вводом, процесс передачи информации из ОП называется выводом. В обоих случаях в операции участвуют с одной стороны оперативные данные, задаваемые списком ввода/вывода, с другой стороны - внешнее устройство или внешний набор данных, задаваемые условным именем, точнее именем файловой переменной.
Если в качестве внешнего набора данных выступает набор данных на внешней памяти, файловая переменная должна быть связана с набором данных на устройстве внешней памяти.
Все файлы в общем случае можно разделить на файлы - программы, т.е. содержащие машинные команды в виде двоичных кодов, и файлы с данными. Мы далее будем рассматривать только файлы с данными, которые могут обрабатываться (т.е. создаваться, изменяться или просто читаться) программами. Такие наборы данных классифицируются по способу доступа к отдельным записям. Если выбрать любую запись в файле можно, не просматривая предыдущие записи, файл называется файлом прямого доступа, если поиск начала нужной записи выполняется последовательным просмотром записей - файл последовательного доступа. Файлы прямого доступа могут существовать только на устройствах прямого доступа (на дисках и дискетах). Файлы последовательного доступа могут быть как на дисках или дискетах, так и на устройствах последовательного доступа (магнитных лентах, любых устройствах ввода/вывода).
Очевидно, что файлы прямого доступа должны иметь все записи одинаковой длины. Только в этом случае можно рассчитать, где начинается запись с любым номером. Последовательные файлы могут иметь записи как одинаковой, так и различной длины. Отметим, что с любым файлом прямого доступа можно работать как с последовательным (но не наоборот!).
Другой вид классификации файлов - по способу представления данных. Либо файлы содержат данные в символьном виде (понятном для человека), либо во внутримашинной кодировке, т.е. в том же виде, как данные хранятся в оперативной памяти ПЭВМ. Первый вид еще называется текстовым, форматным, второй - двоичным, бесформатным. Любой язык программирования должен иметь возможность работать с текстовыми файлами, так как ввод исходной информации первоначально выполняется человеком через устройства ввода в символьном виде, и файлы с результатами расчетов тоже предназначены для человека. Зато использование бесформатных файлов позволяет экономить место на диске (они обычно компактнее символьных) и ввод/вывод таких файлов выполняется значительно быстрее (не требует преобразований при операциях ввода/вывода). Таким образом, может существовать 4 различных типа файлов: символьный последовательный, двоичный последовательный, символьный прямого доступа и двоичный прямого доступа.
В языке Турбо Паскаль реализована работа с тремя типами файлов из перечисленных выше. (Не используются символьные файлы прямого доступа). Символьные последовательные файлы носят название текстовых, файлы во внутримашинной кодировке (двоичные) называются типизированными или файлами без типа. Типизированные обычно используются как файлы прямого доступа, без типа могут выступать и как прямого, и как последовательного доступа.
Таким образом, в программе, работающей с файлами, в разделе описаний должны быть описаны переменные файлового типа, а в выполняемом блоке эти файловые переменные с помощью стандартной процедуры Assign необходимо связать с набором данных на диске или стандартным устройством ввода/вывода. Кроме того, файл необходимо открыть, указав, существующий он, или вновь создаваемый (для чего используются процедуры Reset, Rewrite или Append). После завершения операций обмена информацией с файлом, последний должен быть закрыт процедурой Close. Закрытие можно не выполнять для существующих файлов, из которых выполнялось чтение, так как операционная система сама закроет его по завершении программы, но рекомендуется это делать, так как одновременно может быть открыто ограниченное число файлов. Файлы, которые выполняется запись, следует закрывать сразу после последнего оператора записи.
При выполнении операций с файлами всегда проверяется результат выполнения. В случае возникновения ошибки, вырабатывается код ошибки. Если в программе не предусмотрен анализ и обработка ошибки, программа завершает работу, выдав сообщение о наличии ошибки с каким-то кодом. Чтобы программа не снималась по ошибке ввода/вывода, в ней должен быть включена директива игнорирования ошибок {$I-}.
Если в операции обмена участвует устройство ввода или устройство вывода, то файловая переменная связывается со стандартным именем этого устройства. Напомним, что в операционной системе DOS зарезервированы следующие стандартные имена устройств:
CON - клавиатура (в операциях ввода) и дисплей (в операциях вывода);
PRN - главное (или единственное) устройство печати (принтер),
используется только в операциях вывода;
NUL - фиктивное (не существующее) устройство. Может использоваться как в операциях ввода, так и вывода. Часто используется в качестве "заглушки" для предотвращения реального ввода/вывода при отладке программ;
COM1,..COM4 - устройства последовательного ввода/вывода (порты подключения внешних устройств, таких как "мышь", джойстик)
LPT1,..LPT3 - три возможных устройства печати, подключенных одновременно к ПЭВМ (LPT1 - эквивалентно имени PRN).