- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
2.11.2. Типизированные файлы
Типизированные файлы позволяют организовать прямой доступ к каждой из компонента (по его порядковому номеру), поскольку длина любого компонента типизированного файла строго постоянна. Описание файловой переменной для таких файлов выполняется в следующем виде
Var <ф.п.>: file of <тип компонент>;
Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на компоненту с номером нуль. После каждого чтения или записи указатель сдвигается с следующему компоненту файла. Переменные в списках ввода-вывода должны иметь тот же тип, что и компоненты файла. Если этих переменных в списке несколько, указатель будет смещаться после каждой операции обмена данными между переменными и дисковым файлом.
Для работы с типизированными файлами определены следующие процедуры и функции (табл.9). Процедура SEEK и функции FILESIZE, FILEPOS нельзя использовать для текстовых файлов.
Чтобы переместить указатель в конец файла, можно написать, например: Seek(f,FileSize(f)); где f файловая переменная.
Файловая переменная предварительно должна быть объявлена предложением FILE OF и связана с именем физического файла процедурой ASSIGN. Файл перед обращением к нему должен быть открыт.
Таблица 9
Процедуры и функции для работы с типизированными файлами
Процедуры, функции |
Выполняемые действия |
READ(<ф.п.>, <список ввода>); WRITE(<ф.п.>, <список вывода>);
SEEK(<ф.п.>, <номер_компоненты>)
FILESIZE(<ф.п.>): LongInt; FILEPOS(<ф.п.>); |
Процедура обеспечивает чтение очередных компонентов файла Процедура используется для записи новых компонентов в файл; в качестве элементов вывод может быть выражение
Процедура смещает указатель файла к компоненту с указанным номером; <номер_компоненты> - выражение типа LONGINT Функция возвращает количество компонент, содержащихся в файле Функция возвращает порядковый номер компоненты файла, доступной для чтения или записи |
2.11.3. Нетипизированные файлы
Нетипизированные файлы обьявляются без указания типа ключевым словом FILE:
TYPE <имя_типа>=FILE;
а переменные для нетипизированных файлов описываются в виде:
VAR <ф.п.>: FILE;
Для данных файлов не указывается тип компонентов, что делает их совместимыми с любыми другими файлами и позволяет организовать высокоскоростной обмен данными между диском и памятью.
При инициализации нетипизированных файлов процедурами RESET и REWRITE указывается длина записи нетипизированного файла в байтах. Например, так
VAR f: file; ...
ASSIGN (f, 'a.dat');
RESET (f, 512); ......
Длина записи указывается вторым параметром и может быть представлена выражением типа WORD. Если параметр длины опущен, подразумевается длина 128 байт (максимальная длина 65 535 байтов).
Для обеспечения максимальной скорости обмена данными следует задавать длину, кратную длине физического сектора дискового носителя (512 байт). Более того, фактически пространство на диске выделяется любому файлу порциями кластерами, которые в зависимости от типа диска могут занимать два и более смежных секторов. Как правило, кластер может быть прочитан или записан за один оборот диска, поэтому наивысшую скорость обмена данными можно получить, если указать длину записи, равную длине кластера.
При работе с нетипизированными файлами применяются все рассмотренные процедуры и функции, доступные типизированным файлам, за исключением READ и WRITE, которые для чтения и записи заменяются соответственно высокоскоростными процедурами BlockREAD и BlockWRITE:
BlockREAD(<ф.п.>,<буфер>,<N>,[,Var<NN>])
BlockWRITE(<ф.п.>,<буфер>,<N>,[,Var<NN>])
где <буфер> имя переменной, которая будет участвовать в обмене данными с дисками; <N> количество записей, которые должны быть прочитаны или записаны за одно обращение к диску; <NN> необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей.
За одно обращение к процедурам может быть передано N*r байт, где r длина записи нетипизированного файла. Передача идет начиная с первого байта переменной <буфер>.
После завершения процедуры указатель смещается на <NN> записей. Процедурами SEEK, FilePos и FileSize можно обеспечить доступ к любой записи нетипизированного файла.