- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •1. Заголовок
- •2. Описательная часть
- •3. Тело подпрограммы
- •Оформление формальных параметров, которые определяет режим взаимодействия с основной программой.
- •Особенности передачи структурированных данных подпрограммы.
- •Опережающие описания.
- •Функциональный тип. Процедурный тип.
- •Сортировки.
- •Сортировка бинарными включениями.
- •Сортировка простых выборов.
- •Сортировки простым обменом.
- •Шейкер-сортировка.
- •Сортировка Шелла.
- •Модули.
- •Структура модуля.
- •Особенности компиляции программ с подключаемыми модулями.
- •Циклические ссылки модулей друг на друга.
- •Стандартные модули в Паскале.
- •Динамические переменные.
- •Динамические структуры.
- •Однонаправленные списки.
- •Формирование списков. Формирование очереди.
- •Формирование стека.
- •Классическое формирование очереди (по Вирту).
- •Работа со списками.
- •1) Проход по списку;
- •2) Добавление элемента в список;
- •Удаление элемента из списка.
- •«Древовидные структуры»
- •Удаление элемента из дерева
- •Самоупорядочивающийся список
- •Частотный словарь
- •Нерекурсивное формирование дерева
Функциональный тип. Процедурный тип.
В Паскале при создании универсальных подпрограмм, которые работают с разными подпрограммами, в качестве формального параметра используют специализированный параметр, тип которого определяется как функциональный или процедурный. Данный тип позволяет на место такого формального параметра подставлять имя необходимой для передачи функции. Чтобы в программе воспользоваться функциональным типом, необходимо в тексте такой программы выполнить следующие шаги:
1) в разделе типов определяется соответствующий функциональный или процедурный тип. Он определяется следующей структурой: записывается имя типа, в качестве описательного типа – заголовок подпрограммы без имени типа.
Данный заголовок должен полностью соответствовать заголовкам подпрограмм, имена которых при вызове универсальных подпрограмм будут подставляться на место формального параметра этого типа;
2) использование директивы компилятору, т.е. подключение дальнейшей памяти – {$F+};
3) первоначально в описательной части программы должны присутствовать описания тех подпрограмм, которые будут передаваться в универсальную подпрограмму;
4) затем только будет описана универсальная подпрограмма.
Примечание. Подключение дальнейшей памяти в Паскале может быть оформлено словом FAR; в этом случае не используют директиву компилятору в заголовках подпрограмм, имена которых будут передаваться вместо формальных параметров; после «;» указывается служебное слово «FAR» и «;».
Пример. Определить минимум функции f1=1/(sin(n)+1) и f2=cos(n)/4 на интервале [1;100] с шагом h=5.
type func=function (x:integer):real;
{$F+}
function f1 (x:integer):real;
begin f1:=1/(sin(n)+1);end;
function f2 (x:integer):real;
f2:=cos(n)/4; end;
function min (f:func):real;
var m:real; p:integer;
begin
m:=f(1); p:=6;
repeat if m>f(p) then
m:=f(p);
p:=p+s;
until p>100;
min:=m;
end;
begin
if min(f1)>min(f2) then
writeln(‘f1);
else writeln(‘f2’);
end.
Сортировки.
Сортировка – процесс упорядочивания некоторого объема информации по определенному правилу. Вирт, проведя классификацию всех сортировок, выделил три основных типа сортировок. В его классификации лежит механизм передвижения элементов в объеме информации до достижения определенной сортировки правилами. По Виру сортировки делятся на: 1) обменом ;2) выбором; 3) включениями.
В качестве примера рассмотрим сортировку массива из восьми элементов реальных чисел.
Сортировка простыми включениями
44 55 12 42 94 18 06 67
44 55 12 42 94 18 06 67
12 44 55 42 94 18 06 67
12 42 44 55 94 18 06 67
12 42 44 55 94 18 06 67
12 18 42 44 55 94 06 67
06 12 18 42 44 55 94 67
06 12 18 42 44 55 67 94
procedure sort1;
var i,j:integer; x:real;
begin
for i:=2 to n do
begin
x:=a[i]; j:=i-1;
while x < a[j] do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=x;
end;
end;