- •Структура программы на Паскале.
- •Стандартные типы Паскаля.
- •Операторы в Паскале.
- •Цикл с параметром.
- •Типовые задачи на операторов цикла.
- •Операторы целочисленного деления.
- •Вложенные циклы.
- •Структурированные типы данных.
- •Массивы.
- •Многомерные массивы.
- •Строки.
- •Множества.
- •Записи.
- •Работа с текстовыми файлами.
- •Особенности работы с текстовым файлом:
- •Типизированные файлы.
- •Особенности работа с типизированными файлами.
- •Подпрограммы.
- •Структура подпрограмм.
- •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) включениями.
В качестве примера рассмотрим сортировку массива из восьми элементов реальных чисел.
Сортировка простыми включениями
4
4
55 12 42 94 18 06 67
4
4
55 12 42 94 18 06 67
1
2
44 55 42 94 18 06 67
12 42 44 55 94 18 06 67
1
2
42 44 55 94 18 06 67
1
2
18 42 44 55 94 06 67
0
6
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;
