25. П Р О Ц Е Д У Р Ы И Ф У Н К Ц И И

Алгоритм решения задачи проектируется путем декомпозиции всей за-

дачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подп-

рограмм.

Подпрограмма - это последовательность операторов, которые опреде-

лены и записаны только в одном месте программы, однако их можно

вызвать для выполнения из одной или нескольких точек программы. Каж-

дая подпрограмма определяется уникальным именем. В языке ПАСКАЛЬ су-

ществуют два типа подпрограмм - процедуры и функции.

Процедура и функция - это именованная последовательность описаний

и операторов. При использовании процедур или функций ПАСКАЛЬ - прог-

рамма должна содержать текст процедуры или функции и обращение к про-

цедуре или функции. Тексты процедур и функций помещаются в раздел

описаний процедур и функций.

{}

Процедура может содержать такие - же разделы описаний, что и ПАС-

КАЛЬ - программа, а именно: разделы описания модулей, меток, конс-

тант, типов, переменных, процедур и функций.

{}

ПЕРЕДАЧА ИМЕН ПРОЦЕДУР И ФУНКЦИЙ В КАЧЕСТВЕ ПАРАМЕТРОВ. Во многих

задачах, особенно в задачах вычислительной математики, необходимо пе-

редавать имена процедур и функций в качестве параметров. Для этого в

TURBO PASCAL введен новый тип данных - процедурный или функциональ-

ный, в зависимости от того, что описывается.

Описание процедурных и функциональных типов производится в разделе

описания типов:

type

FuncType = Function(z: Real): Real;

ProcType = Procedure (a,b: Real; var x,y: Real);

Функциональный и процедурный тип определяется как заголовок проце-

дуры и функции со списком формальных параметров, но без имени. Можно

определить функциональный или процедурный тип без параметров, напри-

мер:

type

Proc = Procedure;

После объявления процедурного или функционального типа его можно

использовать для описания формальных параметров - имен процедур и

функций.

Кроме того, необходимо написать те реальные процедуры или функции,

имена которых будут передаваться как фактические параметры. Эти про-

цедуры и функции должны компилироваться в режиме дальней адресации с

ключом {$F+}.

Пример. Составить программу для вычисления определенного интеграла

tk

2t

I= S--------------- dt

sqrt(1-sin2t)

tn

по методу Симпсона. Вычисление подинтегральной функции реализовать с

помощью функции, имя которой передается как параметр. Значение опре-

деленного интеграла по формуле Симпсона вычисляется по формуле:

ISimps=2*h/3*(0.5*F(A)+2*F(A+h)+F(A+2*h)+2*F(A+3*h)+...

+2*F(B-h)+0.5*F(B))

где A и B - нижняя и верхняя границы интервала интегрирования,

N - число разбиений интервала интегрирования,

h=(B-A)/N, причем N должно быть четным.

Program INTEGRAL;

 type

Func= function(x: Real): Real;

 var

I,TN,TK:Real;

N:Integer;

{$F+}

 Function Q(t: Real): Real;

begin

Q:=2*t/Sqrt(1-Sin(2*t));

end;

{$F-}

 Procedure Simps(F:Func; a,b:Real; N:Integer; var INT:Real);

var

sum, h: Real;

j:Integer;

begin

if Odd(N) then N:=N+1;

h:=(b-a)/N;

sum:=0.5*(F(a)+F(b));

for j:=1 to N-1 do

sum:=sum+(j mod 2+1)*F(a+j*h);

INT:=2*h*sum/3

end;

 begin

WriteLn(' ВВЕДИ TN,TK,N');

Read(TN,TK,N);

Simps(Q,TN,TK,N,I);

WriteLn('I=',I:8:3)

 end.

{}

26. О П Е Р А Т О Р Ы В Ы Х О Д А

Для завершения работы программ, процедур и функций без предвари-

тельного перехода по меткам к закрывающему end в TURBO PASCAL введены

процедуры Exit и Halt.

Вызов Exit завершает работу своего программного блока и передает

управление вызывающей программе. Если Exit выполняется в подпрограм-

ме, то выполнение этой подпрограммы прекратится, и далее будет выпол-

няться следующий за вызовом этой подпрограммы оператор. Если Exit вы-

полняется в основной программе, выход из нее будет эквивалентен ее

нормальному завершению.

Вызов процедуры Halt, где бы она не находилась, завершает работу

программы и передает управление операционной системе.

Процедура Halt имеет структуру Halt(n), где n - код возврата, ко-

торый может быть проанализирован операционной системой с помощью ко-

манды IF ERRORLEVEL. Значение n=0 соответствует нормальному заверше-

нию работы программы. Вызов процедуры Halt без параметра эквивалентен

вызову Halt(0).


Информация о работе «Основные понятия алгоритмического языка»
Раздел: Информатика, программирование
Количество знаков с пробелами: 91405
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
274963
85
0

... ячейка, а имя переменной превращается в адрес ячейки. Появление этого адреса происходит в результате работы специального оператора языка (NEW), однако его значение в большинстве случаев не используется при программировании на алгоритмических языках типа Паскаль. Условимся считать, что адрес ячейки, которая будет хранить переменную А, есть А. Или, другими словами, А - это общее имя переменной и ...

Скачать
112819
0
0

... . Объясните, для чего служат разрешения и привилегии в Windows NT. Зав. кафедрой --------------------------------------------------   Экзаменационный билет по предмету СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Билет № 22 Перечислите возможности и инструменты системы программирования Microsoft Developer Studio. Укажите для чего предназначается буфер в системах ввода-вывода, ...

Скачать
142378
5
0

... . Поэтому так легко путешествовать по Всемирной паутине (WWW — Worl Wide Web), переходя с сайта на сайт по гиперссылкам. Для отображения в «плоском* тексте смысловых связей между основными разделами или понятиями можно использовать гипертекст. Гипертекст позволяет структурировать документ путем выделения в нем слов-ссылок (гиперссылок). При активизации гиперссылки (например, с помощью щелчка мышью ...

Скачать
35650
0
0

... # будет тесно интегрирован с языком XML[1]. 2.2 Паскаль Паскаль [PASCAL - акроним с французского - Program Applique a la Selection et la Compilation Automatique de la Litterature] - Процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Назван в честь французского ...

0 комментариев


Наверх