- •Элементы языка pascal
- •1.1 Алфавит
- •1.2 Идентификаторы
- •1.3 Типы данных
- •1.4. Константы. Переменные
- •Структура Pascal-программы
- •Преобразование типов
- •Выражения. Операции
- •2. Операторы
- •2.1. Составной и пустой операторы
- •2.2. Условный оператор
- •2.3. Операторы повторений
- •2.4. Оператор выбора
- •2.5 Метки и операторы перехода
- •3. Массивы
- •Процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
Текстовые файлы
Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу Text. Предназначены для хранения текстовой информации (исходные тексты программ). Компоненты (записи) текстового файла могут иметь переменную длину.
Текстовый файл – совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. В конце каждой строки ставится специальный признак EOLN (конец строки), а в конце всего файла EOF(конец файла).
Для доступа к записям применяются процедуры Read, ReadLn, Write, WriteLn.
Ввод массива данных.
Const
N=100;
Var
f:text;
m:array [1..N] of real;
i:integer;
begin
assign(f,’prog.dat’);
reset(f);
i:=1;
while not EOF(f) and (i<=N) do
begin
reaf(f,m[i]);
inc(i)
enf;
close(f);
…
end.
Типизированные файлы
Длина компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них (доступ к компоненту по его порядковому номеру).
Перед первым обращением к процедуре ввода-вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла.
Процедуры: Read, Write.
Seek(<файловая переменная>, <номер компонента>) – смещает указатель файла к требуемому компоненту.
Нетипизированные файлы
Нетипизированные файлы объявляются как файловые переменные типа File и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой – позволяет организовать высокоскоростной обмен между диском и памятью.
При инициации нетипизированного файла процедурами Reset или Rewrite можно указать длину записи нетипизированного файла в байтах (максимальная длина - 65535).
Var
F:file;
Begin
Assign(F,’file.dat’);
Reset(F,512);
End.
При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением Read и Write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite.
BlockRead(<файловая переменная>, <буфер>, <D>[,<NN>])
BlockWrite(<файловая переменная>, <буфер>, <D>[,<NN>])
Буфер – имя переменной, которая будет участвовать в обмене данными с дисками.
D – количество записей, которые должны быть прочитаны или записаны за одно обращение к диску.
МОДУЛИ
Модуль это автономно компилируемая единица программы, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции), и, возможно, некоторые исполняемые операторы инициирующей части. В модулях явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант, переменных, заголовки глобальных процедур и функций. Тела процедур и функций располагается в исполняемой части модуля, которая может быть скрыта от пользователя.
Структура:
Unit <имя модуля>;
Interfase <интерфейсная часть>
Implementation <исполняемая часть>
Begin <инициирующая часть>
End.
Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается с помощью ключевого слова
Uses <список модулей> с которыми устанавливается связь
Если Uses используется, то оно должно открывать раздел описаний основной программы.
Uses CTR, Craph, Clobal;
В интерфейсной части модуля содержится объявление всех глобальных объектов модуля (типов, констант и т.д.), которые должны стать доступными основной программе или другим модулям. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок.
Unit Cmplx;
Interface
Type
Complex=record
re,im:real;
end;
Procedure Add(x,y:complex; var z:complex);
Чтобы основной программе стал доступен тип Complex и процедура из модуля Cmplx, следует написать
Uses Cmplx;
Исполняемая часть содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и др., если они используются в инициирующей части.
Описанию подпрограммы, объявленной в интерфейсной части модуля, в исполняемой части должен предшествовать заголовок, в котором можно опускать список формальных переменных (тип результата для функции), т.к. они описаны в интерфейсной части.
Unit Cmplx;
Interface
Type
Complex=record
re,im:real;
end;
Procedure Add(x,y:complex; var z:complex);
Implementation
Procedure Add;
Begin
z.re:=x.re+y.re;
z.im:=x.im+y.im;
End;
End.
В инициирующей части размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы.
После объявления Uses программе станут доступны все объекты объявленные в интерфейсной части модуля Cmplx.
Uses Cmplx;
Var
a,b,c:complex;
begin
a.re:=1; b.re:=1; a.im:=1; b.re:=1;
Add(a,b,c);
WriteLn(‘Сложение’, c.re,c.im);
End.