Типизированные константы
В ТР допускается использование типизированных констант, которые описываются в разделе описания констант.
Const
<имя констант>:<тип констант>=<значение>;
Типизированным константам можно присвоить другие значения в процессе работы программы и фактически они являются переменными с указанным начальным значением. Указанное в описании начальное значение константа принимает только один раз. В момент начала работы программы.
Типизированные константы могут быть любого типа, кроме файлов. Типизированную константу нельзя использовать в качестве значения при объявлении других констант или границ типа диапазона.
Описание типизированной константы с простым типом:
const
Maximum : integer = 9999;
Factor : real = -0.1;
Breakchar : char = #3;
Описание типизированной константы строкового типа:
const
Heading : string[7] = 'Section';
NewLine : string[2] = #13#10;
TrueStr : string[5] = 'Yes';
FalseStr : string[5] = 'No';
Файлы
Файл с точки зрения программирования – это структурированный тип данных, где элементы имеют один тип и одну длину, и хранятся на внешнем носителе. Размерность файла ограничена только свободным пространством диска. Файлы бывают типизированные и не типизированные. В программе конкретный файл, находящийся на диске, представляет файловая переменная, которая описывается следующим образом:
var
<файловая переменная>: file;
< файловая переменная >: file of <тип элементов>;
< файловая переменная >: text;
Пример:
var
f1: file;
f2: file of integer;
f3: text;
Над файловой переменной в программе нельзя выполнять никаких действий, она не может присутствовать в выражениях. Файл можно представить как последовательную цепочку элементов, пронумерованных от нуля и заканчивающуюся специальным кодом, называемым маркером конца файла.
Количество элементов, хранящихся в данный момент в файле, называется текущей длиной файла. Для доступа к элементам файла используют специальную величину, которая называется указателем файла. Указатель файла – это специальная ячейка памяти, которая хранит адрес элемента файла, предназначенного для текущей обработки. Указатель файла в программе явно не указывается.
Любые файлы могут быть доступны программе только после выполнения специальной процедуры открытия файла. Эта процедура связывает раннее объявленную файловую переменную с именем файла на диске.
Это связывание осуществляется с помощью встроенной процедуры.
Assign (<файловая переменная>; <имя файла на диске>:string);
Assign (f2, ‘c:\ студенты \ гр 248. dat’);
Файл открыть можно только по чтению или только по записи. Чтобы открыть файл для записи используют процедуру Rewrite с параметром файловой переменной.
Rewrite (f2);
Данная процедура создает новый файл с указанным именем и если файл с указанным именем уже существует, то информация теряется без предупреждения, указатель восставляется на первый элемент с номером ноль.
Чтобы открыть файл для чтения используют процедуру Reset с параметром файловой переменной.
Пример:
Reset (f2);
Указатель файла восставляется на первый элемент и открыть для чтения можно только уже существующий файл. В противном случае выдается ошибка и программа завершает работу аварийно.
Записать информацию в файл можно следующим образом:
Write (<файловая переменная>,<элементы оперативной памяти>);
Пример:
Write (f2, A);
После выполнения этой процедуры указатель файла смещается к следующему элементу.
Прочитать информацию с диска в оперативную память можно с помощью процедуры Read.
Read (<файловая переменная>, <элементы оперативной памяти>);
Пример:
Read (f2, B);
После выполнения всех работ над данными файла файл необходимо закрыть, в противном случае вся информация теряется. Закрыть файл можно с помощью процедуры Close.
Close (<файловая переменная>);
Пример:
Close (f2);
Уничтожить файл можно с помощью процедуры Erase. Уничтожить можно только закрытый файл.
Erase (<файловая переменная>);
Пример:
Erase (f2);
Переименовать файл можно с помощью процедуры Rename.
Rename (<файловая переменная>, <новое имя файловой переменной>: string);
Пример:
Rename (f2, f7: string);
Переместить указатель файла на элемент с нужным номером можно с помощью процедуры Seek.
Seek (<файловая переменная>, <номер элемента>);
Пример:
Seek (f2, 4);
Чтобы определить длину файла используют функцию Filesize.
Filesize (<файловая переменная>);
Пример:
Filesize (f2);
Чтобы определить местонахождение указателя файла используют функцию Filepos.
Filepos (<файловая переменная>);
Пример:
Filepos (f2);
Чтобы определить находиться ли указатель файла на маркере конца файла используют функцию Eof. Значение функции равно true. Если указатель файла находиться сразу за последним элементом файла, или равно false, если в любом другом месте.
Eof (<файловая переменная>);
Пример:
Eof (f2);
Обычно эта функция используется в конструкции:
While not Eof (f2) do
Begin
…………
End;
Чтобы иметь возможность после неправильного ввода имени файла при открытии для чтения ввести нужное Ия файла используют функцию Ioresult, которая возвращает число являющееся условным признаком последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает значение равное нулю. Значение функции доступно, если отключен автоматический контроль ошибок ввода-вывода. Он отключается указанием директиву компилятора следующим образом:
{$I-} - выключить
{$I+} – включить.
Programma BASKET;
Type
Spisok = record
FIO: string [50];
ROST: integer;
Ves: integer;
God: integer;
End;
F: file of spisok;
Stud: spisok;
NR: byte;
Procedure sozd;
Var
Fname: string[50];
I: byte;
N: byte;
Begin
Write (‘введите имя файла’);
Readln (Fname);
Assign (F,Fname);
Rewrite (F);
For i:=1 to 28 do begin
Writeln (‘введите ФИО’);
Readln (stud.FIO);
Writeln (‘введите рост, вес, год рождения’)
Readln (stud.ROST, stud.ves, stud.GOD);
Write (F,stud);
End;
Procedure dob;
Var
Fname: string [50];
Otv:char;
Begin
{$I-}
Repeat
Write (‘введите имя файла’);
Readln (Fname);
Assign (F, Fname);
Reset (F);
Until IO result = 0;
{$I+}
0 = ‘Y’
Seek (F, filesize(F));
While (otv = ‘Y’) or (otv = ‘Y’) do begin
Write (‘введите FIO’);
Readln (stud.FIO);
Writeln (‘введите рост, вес, год рождения’)
Readln (stud.ROST, stud.ves, stud.GOD);
Write (F,stud);
Write (‘будете вводить еще?’);
Read (otv);
Close (F);
End;
Procedure poisk;
Var
Fname:string [50];
Otv: char;
Begin
{$I-}
Repeat
Write (‘введите имя файла’);
Readln (Fname);
Assign (F, Fname);
Reset (F);
Until IO result = 0;
{$I+}
0 = ‘Y’
Writeln (‘список студентов, чей рост >170’);
While not EOF (F) do begin
Read (F, stud);
If stud.ROST > 170 then
Writeln (stud.FIO,’ ‘, stud.ROST,’ ‘, stud.god);
End;
Close(F);
Readln;
End;
{основная программа}
Begin
While 1=1 do
Begin
Writeln (‘1.создание файла’);
Writeln (‘2.добавление в файл’);
Writeln (‘3.поиск рост >170’);
Writeln (‘4.выход из программы’);
Writeln (‘выберите номер работы’);
Readln(NR);
Case NR of
1:sozd;
2:dob;
3:poisk;
4:exit;
End;
End;
End.
- Язык программирования Pascal Алфавит языка Pascal
- Числа. Представления чисел
- Имена и идентификаторы.
- Структура программы на Pascal
- Типы данных
- Простые типы данных. Данные целого типа.
- Данные вещественного типа
- Данные логического типа
- Данные символьного типа
- Стандартные процедуры и функции
- Арифметические выражения
- Логическое выражение
- Оператор присваивания
- Составной оператор
- Пустой оператор
- Операторы ввода
- Вводи числовых данных
- Ввод символьных данных
- Ввод логических данных
- Вывод данных на экран
- Оператор выбора или оператор варианта
- Перечислимый тип данных
- Ограниченный тип данных или тип диапазон
- Оператор цикла
- Оператор цикла с предусловием
- Оператор цикла с постусловием
- Оператор цикла с параметром
- Итерационный цикл
- Оператор присоединения
- Подпрограммы
- Подпрограммы-процедуры
- Подпрограммы-функции
- Параметры массивы и параметры строки.
- Рекурсия
- Типизированные константы
- Алгоритм создания последовательного файла.
- Алгоритм доступа к элементам файла.
- Алгоритм добавления элементов в последовательный файл.
- Строковый тип данных. Строковые выражения.
- Операция отношения.
- Процедуры.
- Текстовый файл.
- Заголовок модуля. Связь модуля с программой.
- Стандартные модули
- Объектно-ориентированное программирование (ооп)
- Работа с массивами
- Множества
- Операции над множествами
- Понятие файла
- Работа с файлами
- Структура модуля
- Стандартные модули языка Delphi