- •Программирование на языке Паскаль
- •Содержание
- •Введение. Структура программы. Типы данных
- •Структура программы в зыке Паскаль
- •Комментарии
- •Раздел описания переменных
- •Имена идентификаторов в языке Паскаль
- •Типы данных в языке Паскаль
- •Целые типы
- •Вещественные типы
- •Раздел описания констант
- •Оператор ввода
- •Составной оператор
- •Условный оператор
- •Выражения
- •Арифметические операции
- •Логические выражения
- •Логические операции
- •Приоритеты операций
- •Стандартные математические и арифметические функции
- •Структурированные операторы
- •Оператор выбораCase
- •Оператор циклаFor
- •Оператор циклаWhile
- •Inc(n); { Увеличение значения пременнойnна 1 }
- •Оператор циклаRepeat
- •Пользовательские порядковые и составные типы. Процедуры и функции
- •Раздел описания типов
- •Интервальный тип
- •Перечислимый тип
- •Тип массив
- •Строковый тип
- •Процедуры и функции для работы со строками
- •Типизированные константы
- •Процедуры и функции
- •Обращение к процедурам и функциям
- •Процедуры и функции. Процедурные типы. Тип указатель
- •МодификаторыVar иConst в описании формальных параметров
- •Локальность и область действия
- •Процедурные типы
- •Тип указатель
- •Нулевой указатель
- •Работа с текстовыми файлами. Тип запись. Алгоритмы сортировки
- •Файловые типы
- •Процедуры и функции для работы с текстовыми файлами
- •Стандартные текстовые файлы
- •Тип запись
- •Обращение к элементам записи
- •Алгоритмы сортировки
- •Алгоритмы сортировки
- •Алгоритмы сортировки сравнениями
- •Объектно-ориентированное программирование. Структура программного модуля
- •Тип данных «объект»
- •Тип данных «класс»
- •Классификация стилей программирования
- •Структура программного модуля
- •Основы визуального программирования
- •Элемент управления «Поле ввода»
- •Элемент управления «Кнопка»
- •Элемент «Метка»
- •Элемент «Группа переключателей»
- •0:ShowMessage('Выбран вариант 1');
- •Виды изображений
- •КлассTPicture
- •КлассTBitmap
- •ОператорWith
- •КлассTCanvas
- •Библиографический список
- •620002, Екатеринбург, Мира, 19
Работа с текстовыми файлами. Тип запись. Алгоритмы сортировки
Файловые типы
Рассмотрим только работу с текстовыми файлами. Файловые переменные для текстовых файлов описываются с помощью типа Text.
Пример
VAR
F:Text;
Файловые переменные являются структурированными и содержат различную информацию, необходимую для работы с файлом на диске, с которым они связаны. Это имя файла, его размер, текущая позиция в файле и т.д. Если вы пишите процедуры или функции для работы с файлами, передавать в них файловые переменные можно только с модификатором VAR.
Процедуры и функции для работы с текстовыми файлами
Процедура или функция |
Описание |
Процедура Assign(F,<Имя>) |
Назначает имя файла файловой переменной F |
Процедура Reset(F) |
Открывает файл для чтения. Если файла с назначенным именем нет, возникает ошибка ввода-вывода |
Процедура Rewrite(F) |
Создает файл и открывает его для записи. Если файл уже есть, он перезаписывается |
Процедура Close(F) |
Закрывает файл, открытый ранее процедурами Reset илиRewrite |
Процедура Read[Ln](F,<Список переменных>) |
Читает из файла значения указанных переменных. ReadLn после чтения значений пропускает все оставшиеся данные до конца текущей строки и переходит на следующую |
Процедура Write[Ln](F,<Список значений>) |
Работает, как и обычный оператор вывода, но данные записываются в текстовый файл, задаваемый переменной F |
Функция Eof(F) |
Возвращает истину, если достигнут конец файла при чтении |
Для примера рассмотрим следующую задачу: на входе дан текстовый файл, в котором в каждой строке записано по 3 вещественных числа. Необходимо считать информацию из файла и создать новый файл, в каждую строку которого записать сумму чисел в соответствующей строке входного файла, как показано на следующем рисунке.
Входной файл (Test.txt) |
→ |
Двумерный массив (A) |
→ |
Выходной файл (Out.txt) | |||
1.2 5 7.3 3.3 9 4 8 6 1.1 . . . |
|
1 |
2 |
3 |
13.5 16.3 15.1 . . . | ||
1 |
1.2 |
5 |
7.3 | ||||
2 |
3.3 |
9 |
4 | ||||
3 |
8 |
6 |
1.1 | ||||
… |
… |
Текст программы
VAR
F:Text;
n,i:Integer;
A:ARRAY [1..100,1..3] OF Real;
BEGIN
Assign(F,'Test.txt');
Reset(F);
n:=0;
WHILE NOT Eof(F) DO
BEGIN
Inc(n);
Readln(F,A[n][1],A[n][2],A[n][3]);
END;
Close(F);
Assign(F,'Out.txt');
Rewrite(F);
FOR i:=1 to n DO
Writeln(F,A[n][1]+A[n][2]+A[n][3]);
Close(F);
END.
Стандартные текстовые файлы
В языке Паскаль имеется два стандартных текстовых файла: Input иOutput.
Input – это файл для ввода, чтение из которого равносильно вводу данных с клавиатуры. Например, если в программе используется оператор вводаReadln(a,b), то он выполняется аналогично операторуReadln(Input,a,b).
Файл Output – стандартный текстовый файл для вывода, запись в который приводит к выводу данных на экран. Аналогично предыдущему оператор выводаWriteln(a,b) будет выполняться какWriteln(Output,a,b).
Файлы Input иOutput можно использовать только в консольных приложениях.
Возвращаясь к предыдущему примеру (в котором каждая запись представляла три вещественных числа), заметим, что не всегда данные имеют такую однородную структуру. Часто каждая запись представляет собой разнотипные данные о некотором объекте. К примеру, можно представить себе список студентов института. Для каждого студента необходимо задать такие данные, как фамилия, имя, отчество, факультет, на котором он обучается, номер группы и т.д., как показано в следующей таблице.
Фамилия |
Имя |
Отчество |
Факультет |
Группа |
… |
Иванов |
Петр |
Николаевич |
ММ |
112 |
… |
Петров |
Иван |
Алексеевич |
ЭТ |
2135 |
… |
… |
… |
… |
… |
… |
… |
Каждый атрибут имеет свой тип. Как же можно описать такой список студентов в программе? Это можно сделать, например, с помощью нескольких массивов:
Пример
VAR
FIO:ARRAY [1..100,1..3] OF STRING;
Fakultet:ARRAY [1..100] OF (MM,RT,MT, … );
Group:ARRAY [1..100] OF Integer;
Такой способ во многих случаях является достаточно неудобным по целому ряду причин. Однако язык Паскаль позволяет описывать такие структуры по-другому.