- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
Вопросы для самопроверки
1. Что такое нетипизированные файлы?
2. Как описываются нетипизированные файлы в языке Паскаль?
3. Какие операции над нетипизированными файлами Вы знаете?
§20. Текстовые файлы
Текстовые файлы представляют собой последовательность строк произвольной длины.
Если Ваша программа считывает данные из текстового файла, то входной файл для такой программы можно создать, например, в Блокноте.
В текстовом файле можно хранить и целочисленные, и вещественные значения. При этом в отличие от типизированных файлов, открыв такой файл в том же Блокноте, мы увидим числа в привычной десятеричной системе.
Описание типизированных файлов
Для описания текстовых файлов в языке определен стандартный тип Тext:
var f1, f2: text;
Пример: описание текстового файла в разделе var
var
t: text;
Чтение и запись
Для операций над текстовыми файлами, кроме перечисленных в параграфе «Файлы», определены также следующие процедуры:
Readln(T, x1, x2, …, xN) – реализует чтение из файла T N значений исходных данных и пропуск остальных значений до начала следующей строки. Считанные значения присваиваются переменным x1, x2, ..., xN.
Readln(T) – пропускает в файле T одну строку данных.
Writeln(T, x1, x2, …, xN) – реализует вывод в файл T значений x1, x2, ..., xN и переход к началу следующей строки.
Writeln(T) – вставляет признак конца строки в текущую позицию файла T.
Здесь Т –текстовый файл, а переменные x1, x2, …, xN могут быть целого, действительного, символьного, логического типа или строкой. При записи значений переменных в файл они преобразуются из внутреннего представления в текстовый.
Конец строки и конец файла
Строки в тестовых файлах имеют переменную длину.
Каждая строка завершается признаком конца строки. Проверить, достигнут ли признак конца строки, можно с помощью функции:
EOLn (var T: Text): Boolean;
где Т – имя текстового файла. Функция возвращает значение True, если конец строки достигнут, и значение False, если конец строки не достигнут.
При работе с текстовыми файлами бывает удобно также использовать функцию
SeekEOLn(var T: Text): Boolean;
которая возвращает значение True даже в том случае, если конец строки еще не достигнут, но до него остались лишь пробелы.
Аналогичная функция существует и для проверки признака конца файла:
SeekEOF(var f: Text): Boolean;
Функция возвращает значение True, если до конца файла остались лишь пустые строки и строки, заполненные пробелами.
Дополнительные процедуры для работы с текстовыми файлами
В Паскале существуют и дополнительные процедуры и функции, применимые только к текстовым файлам. Рассмотрим их подробнее.
Процедура SetTextBuf(var T: Text; var Buf; BufSize: Word) служит для увеличения или уменьшения буфера ввода-вывода текстового файла T. Значение размера буфера для текстовых файлов по умолчанию равно 128 байтам. Изменять размер буфера рекомендуется до открытия файла. Буфер файла начнется с первого байта переменной Buf. Размер буфера задается в необязательном параметре BufSize, а если этот параметр отсутствует, то определяется длиной переменной Buf.
Процедура Append(var T: Text) служит для специального открытия выходных файлов. Она применима к уже существующим физическим файлам и открывает их для дозаписи в конец файла.
Процедура Flush(var T: Text) применяется к открытым выходным файлам. Она принудительно записывает данные из буфера в файл независимо от степени его заполнения.