- •Министерство образования и науки российской федерации
- •Начальный курс программирования на основе алгоритмического языка Паскаль
- •Введение
- •Часть. Основы программирования на Паскале
- •1.1. Структура простейшей Паскаль-программы
- •1.2. Данные и операции над ними
- •1.2.1. Свойства ячейки памяти. Переменные и константы
- •1.2.2. Типы данных
- •1.2.3. Правила записи констант
- •1.2.4. Описание переменных и именованных констант в Паскале
- •1.2.5. Выражения
- •1.3. Операторы преобразования данных
- •1.3.1. Оператор присваивания
- •1.3.2. Понятие ввода и вывода
- •1.3.3. Оператор вывода
- •1.3.4. Оператор ввода
- •1.4. Разработка простейших программ
- •1.4.1. Понятие о качестве программы и основные технологические принципы разработки программ
- •1.4.2. Алгоритм и способы его записи.
- •1.4.3. Изображение алгоритмов в виде блок-схем
- •1.4.4. Базовые структуры алгоритмов и их кодирование на Паскале
- •1. Следование
- •2. Ветвление (развилка)
- •If условие then
- •If условие then
- •3. Цикл
- •1.4.5. Примеры разработки программ
- •1.5. Массивы
- •1.5.1. Понятие массива. Основные правила работы с массивами в Паскале
- •1.5.2. Примеры программ с массивами
- •1.614. Структура паскаль-программы
- •Часть.Подпрограммы
- •2.1. Общие сведения о подпрограммах
- •2.2. Процедуры в Паскале
- •2.2.1.Описание процедур
- •2.2.2. Обращение к процедуре
- •2.3. Функции Паскаля
- •2.3.1. Описание функций
- •2.3.2. Обращение к функции
- •2.4. Глобальные и локальные имена
- •2.5. Использование подпрограммы в качестве параметра другой подпрограммы
- •2.6. Модули
- •2.6.1. Общие сведения
- •2.6.2. Структура модуля
- •2.6.3. Использование модулей
- •2.6.4. Модули как средство программирования
- •Часть. Обработка символьной информации и документов сложной структуры
- •3.1. Обработка символьной информации
- •3.1.1. Символьный тип
- •3.1.2.Строковые типы
- •3.1.3. Подпрограммы, работающие со строками
- •Функции
- •Процедуры
- •3.2. Тип запись
- •3.3. Файлы
- •3.3.1. Общие понятия
- •3.3.2. Файлы в Турбо Паскале
- •3.3.3. Текстовые файлы
- •Пример 1
- •Пример 2
- •3.3.4. Типизированные файлы
- •3.3.5. Нетипизированные файлы
- •Часть IV. Работа с динамическими массивами
- •О статическом и динамическом распределении памяти
- •Указатели в Паскале
- •Динамические массивы
- •Формальные параметры-массивы без указания границ
- •Приложение 1. Краткая инструкция по работе в среде Turbo (Borland) Pascal.
- •Режимы компиляции программы, использующей модули
- •Приложение 2. Краткая инструкция по работе в режиме консольного приложения средыDelphi. Создание консольного приложения
- •Сохранение консольного приложения.
- •Отладка программы
- •Контрольные вопросы
- •Заключение
- •Библиографические ссылки
- •Содержание
- •Часть IV. Работа с динамическими массивами 98
3.3.2. Файлы в Турбо Паскале
Файлы бывают текстовые, типизированные и нетипизированные.
Функция EOF20(имя_файла) применяется к файлам любого вида. Она возвращает значениеTRUE при чтении конца файла, иначе возвращает FALSE.
Все процедуры, использующие файлы, не работают без других, подготовительных, процедур: ASSIGN21, RESET, REWRITE.
Процедура ASSIGNсвязывает программное имя файла (т.е. имя переменной, описанной как файл) и его физическое имя (т.е. имя файла на диске или имя устройства, записанное по правилам операционной системы). Обращение к процедуре имеет вид:
ASSIGN(програм_имя_файла,физич_имя_файла).
Процедура RESET(имя файла) подготавливает файл к чтению (вводу). В случае отсутствия файла с заданным физическим именем процедура выводит сообщение об ошибке. В случае существования файла производятся следующие действия. Если файл не пустой, то указатель устанавливается на первую компоненту, значение первой компоненты пересылается в буфер, функцияEOF принимает значениеFALSE. Если файл пуст, то содержимое буфера считается неопределенным, а функцияEOF устанавливается в значение TRUE.
Процедура REWRITE(имя_файла) подготавливает файл к записи (выводу). Если файл с заданным физическим именем не существует, то делается попытка создать файл. Далее файл очищается; указатель устанавливается на первую компоненту; функцияEOF принимает значениеTRUE.
RESETи REWRITE называются процедурами открытия файла (для чтения и записи, соответственно). ПроцедураAPPEND(имя_файла) открывает текстовый файл для дополнения.
После окончания работы с файлом необходимо его закрыть с помощью процедуры CLOSE22 (имя_ файла). Под закрытием файла понимается его сохранение и перерегистрация в каталоге. Кроме того, в результате закрытия файла разрушается связь между программным и физическим именами файла, определенная операторомASSIGN; использование программного имени файла становится невозможным (до повторного примененияASSIGNи открытия файла).
3.3.3. Текстовые файлы
Для описания переменной типа текстовый файл используется ключевое слово TEXT23:
VAR имя_текст-файла: TEXT;. . .
Процедуры считывания из текстового файла (записи в него) отличаются от привычных процедур ввода с клавиатуры ( вывода на экран) только тем, что в скобках перед списком ввода (вывода) указывается имя файла:
READ(имя-файла,список_ввода);
WRITE(имя_файла, список_вывода)
READLN(имя_файла, список_ввода);
WRITELN(имя_файла, список_вывода)
Если имя файла отсутствует, то используется имя CON.
Функция EOLN24(имя_файла) применима только к текстовым файлам (так же, как и процедурыREADLN иWRITELN); она возвращает значениеTRUE,если считан конец строки, иначе возвращает значение FALSE.
Далее приведены программы, исходные и выходные данные которых хранятся в текстовых файлах.
Пример 1
program Primer1_3_3_3;
{В текстовом файле Х хранятся сведения об игрушках}
{в текстовый файлY записываются сведения}
{о конструкторах для детей до 7 лет}
Type sved=record
name:string;
minage,maxage:integer;rub:real;
end;
Var x,y:text; toy:sved;
Begin
Assign (x,'d:\student\xtext.txt');
Assign(y,'d:\student\ytext.txt');
{физические имена файлов выбраны произвольно}
reset(x); rewrite(y);{xоткрывается для чтения, у - для записи}
if eof(x) then writeln('x - пустой')
else
Begin
while not eof(x) do
with toy do
Begin
readln(x,name); {запись считывается по полям}
readln(x,minage,maxage,rub);
if((pos('конструктор',name)>0) or pos('конструктор',name)>0))
and (maxage<=7) then
writeln(y,name); {запись выводится по полям}
writeln(y,minage,maxage, rub:8:0);
End;
End;
Close(x); Close(y);
End.