Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП лекции.doc
Скачиваний:
12
Добавлен:
03.12.2018
Размер:
634.37 Кб
Скачать

Функциональный тип. Процедурный тип.

В Паскале при создании универсальных подпрограмм, которые работают с разными подпрограммами, в качестве формального параметра используют специализированный параметр, тип которого определяется как функциональный или процедурный. Данный тип позволяет на место такого формального параметра подставлять имя необходимой для передачи функции. Чтобы в программе воспользоваться функциональным типом, необходимо в тексте такой программы выполнить следующие шаги:

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;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]