- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •1. Заголовок
- •2. Описательная часть
- •3. Тело подпрограммы
- •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
- •Особенности передачи структурированных данных подпрограммы.
- •Опережающие описания.
- •Функциональный тип. Процедурный тип.
- •Сортировки.
- •Сортировка бинарными включениями.
- •Сортировка простых выборов.
- •Сортировки простым обменом.
- •Шейкер-сортировка.
- •Сортировка Шелла.
- •Модули.
- •Структура модуля.
- •Особенности компиляции программ с подключаемыми модулями.
- •Циклические ссылки модулей друг на друга.
- •Стандартные модули в Паскале.
- •Динамические переменные.
- •Динамические структуры.
- •Однонаправленные списки.
- •Формирование списков. Формирование очереди.
- •Формирование стека.
- •Классическое формирование очереди (по Вирту).
- •Работа со списками.
- •1) Проход по списку;
- •2) Добавление элемента в список;
- •Удаление элемента из списка.
- •«Древовидные структуры»
- •Удаление элемента из дерева
- •Самоупорядочивающийся список
- •Частотный словарь
- •Нерекурсивное формирование дерева
Типизированные файлы.
Типизированный файл – файл, тип элемента которого определен, т.е. определен размер области памяти, который отводится под данный элемент, что позволяет обращаться к n-ому элементу файла прямо, не перебирая n-1-предыдущих элементов. Реализация таких файлов стала возможной с появлением постоянных запоминающих устройств (ПЗУ) прямого доступа (винчестер).
Особенности работа с типизированными файлами.
-
Даже если тип элемента файла – строка, использовать writeln или readln нельзя, так как считывание и запись информации осуществляется поэлементно. Так как механизм чтения/записи в типизированный файл реализован для элемента файла независимо от их типа, то используется только read или write.
-
Файловая переменная описывается словом FILE OF ТЭФ;
-
Существуют специализированные подпрограммы работы с типизированными файлами.
SEEK – в типизированном файле маркер или указатель файла перемещается на n-ый элемент. Последующая процедура чтения считает n-ый элемент из файла.
FILEPOS – функция, на место вызова которой возвращается целое число, равное номеру позиции элемента из текущей позиции маркера файла.
FILESIZE – функция, возвращающая целое число, равное количеству элементов в файле.
Примечание. Все эти процедуры и функции не используются для текстовых файлов.
Пример. Задан файл. Сформировать файл записи по принципу yes/no. Одна запись содержит ФИО студента и три его оценки. Для индексации предметов использовать перечисляемый тип.
Примечание.
Если ТЭФ – структурированный тип, то соблюдаем правило:
-
в разделе типов определить тип данной структуры.
-
определить этим типом ТЭФ и переменную, которая будет участвовать в обмене информации программы и файла (буферную переменную).
-
при записи информации (в этом случае) сначала формируем полностью структуру, а затем записываем как единую структуру в типизированный файл.
При чтении используем аналогичный подход, т.е. из файла считывается сразу вся структура, а затем уже поэлементно обрабатывается в программе.
type pr=(mat,rus,aip);
st=record
fio:string;
o:array[pr] of 2..5;
end;
var f:file of st;
bp:st;
p:pr;
name:string;
c:char;
begin writeln(‘Введите имя файла’);
readln(name);
assign(f,name);
rewrite(f);
repeat writeln (‘Введите запись’);
with bp do begin
readln(fio);
for p:=mat to aip do read(o[p]);
end;
write(f,bp);
writeln(‘Будете еще вводить запись? y/n’);
readln(c);
until(c=’n’);
close(f);
end.
Пример. Задан файл (предыдущая задача). Определить средний балл группы.
type.....
var.....
c:integer;
st:real;
begin writeln(‘Введите имя файла’);
readln(name);
assign(f,name);
reset(f);
sr:=0;c:=0;
repeat read(f,bp);
with bp do
for p:=mat to aip do
sr:=sr+o[p];
c:=c+1;
until eof(f);
sr:=sr/3/c;
writeln(sr:0:1);
end.
Подпрограммы.
Подпрограмма – некоторый набор операторов, который повторяется в программе многократно, обрабатывая некоторый объем данных. Либо же подпрограмма реализует некоторый алгоритм хорошо известный и отработанный.
Подпрограммы так же позволяют экономить оперативную память. Механизм взаимодействия подпрограммы с программой заключается в следующем:
Подпрограмма при запуске программы не размещается в оперативную память. В неё подпрограмма размещается только при вызове. После завершения работы подпрограммы оперативная память, занимающая ею освобождается.
Из-за реализации механизма использования подпрограмм все переменные, используемые в программе с подпрограммой делятся на три вида:
1. Глобальные переменные – переменные, которые описываются в описательной части самой программы и могут использоваться как в тексте программы, так и без дополнительного описания в теле подпрограммы.
Тело подпрограммы – операторы Паскаля, отображающие алгоритм функционирования самой программы.
2. Локальные переменные – переменные, которые описываются в описательной части подпрограммы и могут быть использованы только в теле программы.
Примечание. Если локальные и глобальные переменные будут иметь одинаковое имя, то в подпрограмме компелятор будет переназначать глобальную переменную локальной.
3. Формальные переменные – описываются в заголовке подпрограммы. Их ещё называют параметрами подпрограммы. Они могут отсутствовать. В этом случае говорят, что подпрограмма без параметров. Формальные переменные могут использоваться только внутри тела подпрограммы. Формальность заключается в том, что при вызове подпрограммы на их место подставляются глобальные переменные.