Подпрограммы (процедуры и функции) - реферат

При решении новых задач можно попробовать пользоваться ранее написанными программками. Метод, ранее разработанный и полностью применяемый в составе других алгоритмов, именуется вспомогательным. Применение вспомогательных алгоритмов позволяет разбить задачку на части, структурировать ее.

Вся программка условно может быть разбита на две части: основную и вспомогательную. В основной части делается простая обработка инфы, организуется Подпрограммы (процедуры и функции) - реферат воззвание к различным вспомогательным модулям (подпрограммам).

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

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

Подпрограммы могут быть 2-ух видов: подпрограмма без характеристик и подпрограмма с параметрами. Воззвание к подпрограмме может быть скооперировано из хоть какого места основной программки либо другой подпрограммы сколько Подпрограммы (процедуры и функции) - реферат угодно раз.

При работе с подпрограммами необходимыми являются понятия формальных и фактических характеристик. Формальные характеристики — это идентификаторы входных данных для подпрограммы. Если формальные характеристики получают определенные значения, то они именуются фактическими. Формальные характеристики могут получить определенные значения исключительно в той программке, где делается воззвание к данному модулю-подпрограмме Подпрограммы (процедуры и функции) - реферат. Тип и порядок записи фактических характеристик должны быть такими же, как и формальных характеристик. В неприятном случае итог работы программки будет непредсказуемым. Из этого следует, что фактические характеристики применяются при воззвании к подпрограмме из основной, а формальные характеристики — исключительно в самом модуле.

Подпрограмма с параметрами употребляется для записи Подпрограммы (процедуры и функции) - реферат неоднократно циклических действий при различных начальных данных. Подпрограммы с параметрами можно поделить на два типа: подпрограммы-функции и просто подпрограммы с параметрами (их именуют процедурами).

При составлении подпрограмм с параметрами нужно соблюдать последующие правила:

1) любая подпрограмма имеет свое имя и перечень формальных характеристик;

2) процедура из основной программки вызывается командой вызова Подпрограммы (процедуры и функции) - реферат, которая по форме ничем не отличается от вызова команды исполнителя. Итог присваивается одной либо нескольким переменным, которые находятся в перечне формальных характеристик. Но результатом могут быть, естественно, не только лишь значения переменных, но какое или действие, выполненное ЭВМ.

Пример 1. Используем метод нахождения большего общего делителя 2-ух натуральных чисел Подпрограммы (процедуры и функции) - реферат в качестве вспомогательного при решении задачки: составить программку вычитания дробей (a, b, c, d — натуральные числа). Итог представить в виде обычной несократимой дроби.

Подпрограмма.

1) Ввести натуральные числа M, N.

2) Если M=N, перейти к п. 5, по другому к последующему пт.

3) Если M>N, то M:=M-N, по другому N:=N Подпрограммы (процедуры и функции) - реферат-M.

4) Перейти к п. 2.

5) Передать значение M в основную программку.

6) Конец подпрограммы.

Основная программка.

1) Ввести значения A, B, C, D.

2) E:=A*D - B*C.

3) F:= B*D.

4) Если E=0, вывести значение E и перейти к п. 9, по другому перейти к последующему пт.

5) M:=|E|, N:=F Подпрограммы (процедуры и функции) - реферат, перейти к подпрограмме вычисления НОД.

6) G := M.

7) E и F нацело поделить на G.

8) Вывести значения E и F на печать.

9) Конецпрограммы.

Program Sub;

Var A, B, C, D, G, E, F : Integer;

Procedure Nod(M, N : Integer; Var K : Integer);

Begin

While M N Do

If M > N Then M := M - N Подпрограммы (процедуры и функции) - реферат Else N := N - M;

K := M

End;

Begin

Write('Введите числители и знаменатели дробей:');

ReadLn(A, B, C, D);

E := A * D - B * C;

F := B * D;

If E = 0 Then WriteLn(E)

Else

Begin

Nod(Абс(E), F, G);

E := E Div G;

F := F Div G;

WriteLn('Ответ: ', E, '/', F Подпрограммы (процедуры и функции) - реферат)

End

End.

Как видно из примера, объявление и тело подпрограмм находится в разделе описаний. В заголовке подпрограммы содержится перечень формальных характеристик с указанием их типа, которые условно можно поделить на входные и выходные (перед ними стоит служебное Var). При воззвании к процедуре указывается ее имя и перечень фактических характеристик. Формальные и фактические характеристики Подпрограммы (процедуры и функции) - реферат должны соответствовать по количеству и по типу.

Вызов процедуры осуществляется последующим образом:

();

К примеру,

Nod(Абс(E), F, G);

По методу передачи фактических значений в подпрограмму в Turbo Pascal 7.0 выделяют параметры-переменные, параметры-значения, параметры-константы и массивы открытого типа, строчки открытого типа, параметры-процедуры, параметры-функции (подробности — в Подпрограммы (процедуры и функции) - реферат литературе).

Функция (в отличие от процедуры) всегда возвращает единственное значение.

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

Function Nod(M, N : Integer) : Integer;

Begin

While M N Do

If M > N Then M := M - N Else N := N - M;

Nod := M

End;

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

Вызов функции будет последующим:

G := Nod(Абс(E), F);

Вообщем, вызов функции может находиться в выражении, стоящем: в правой части оператора присваивания, в процедуре Подпрограммы (процедуры и функции) - реферат вывода, в качестве фактического параметра в вызове другой подпрограммы и т.д.

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

Пример 2. Дано натуральное число n. Переставить местами первую и последнюю числа этого числа.

Program Integ;

Var N : Integer;

Begin

Write('Введите натуральное число: ');

ReadLn(N);

If Impossible(N)

Then WriteLn('Нереально переставить числа, возникнет переполнение')

Else Begin

Change(N);

WriteLn('Ответ Подпрограммы (процедуры и функции) - реферат: ', N)

End;

End.

Можно увидеть, что нужно детализировать логическую функцию Impossible, которая диагностирует, вероятна ли перестановка, и функцию Change, которая эту перестановку (в случае, если она вероятна) делает.

Function Impossible(N : Integer) : Boolean;

Begin

If Number(N) < 5

Then Impossible := False

Else Impossible := (N Mod 10 > 3) Or

(N Mod 10 = 3) And

(N Mod 10000 Div 10 * 10 + N Подпрограммы (процедуры и функции) - реферат Div 10000 > MaxInt Mod 10000)

End;

Тут нужно детализировать функцию Number, возвращающую количество цифр в записи натурального числа (т.к. функция Impossible содержит ее вызов, то в разделе описаний функция Number должна ей предшествовать).

Function Number(N : Integer) : Integer;

Var Vsp : Integer;

Begin

Vsp := 0;

While N > 0 Do

Begin

Vsp := Vsp + 1; N := N Div 10

End;

Number Подпрограммы (процедуры и функции) - реферат := Vsp

End;

В конце концов, последняя процедура.

Procedure Change(Var N : Integer);

Var Kol, P, S, R : Integer;

Begin

Kol := Number(N);

P := N Mod 10; {последняяцифра}

If Kol > 1 Then

S := N Div Round(Exp((Kol - 1) * Ln(10)))

Else S := 0; {перваяцифра}

R := N Mod Round(Exp((Kol - 1) * Ln(10))) Div 10;

N := P * Round(Exp Подпрограммы (процедуры и функции) - реферат((Kol - 1) * Ln(10))) + R * 10 + S

End;

Вероятны также подпрограммы, которые вызывают сами себя. Они именуются рекурсивными. Создание таких подпрограмм является прекрасным приемом программирования, но не всегда целенаправлено из-за лишнего расхода памяти ЭВМ.

Пример 3. Отыскать наивысшую цифру в записи данного натурального числа.

Program MaxDigit;

Type NaturLong = 1..(High(LongInt));

Digit = 0..9;

Var A Подпрограммы (процедуры и функции) - реферат : LongInt;

Function Maximum(N : LongInt) : Digit;

Begin

If N < 10

Then Maximum := N

Else If N Mod 10 > Maximum(N Div 10)

Then Maximum := N mod 10

Else Maximum := Maximum(N Div 10)

End;

Begin

Write('Введите натуральное число: ');

ReadLn(A);

WriteLn('Максимальнаяцифраравна ', Maximum(A))

End.

При разработке функции Maximum было применено последующее суждение: если число состоит Подпрограммы (процедуры и функции) - реферат из одной числа, то она является наибольшей, по другому если последняя цифра не является наибольшей, то ее следует находить посреди других цифр числа. При написании рекурсивного метода следует позаботиться о граничном условии, когда цепочка рекурсивных вызовов обрывается и начинается ее оборотное «раскручивание». В нашем примере это условие N < 10.

Более тщательно о Подпрограммы (процедуры и функции) - реферат рекурсии говорится в последующей статье.



podrazdel-vodnoe-hozyajstvo-poyasnitelnaya-zapiska-k-proektu-zakona-zabajkalskogo-kraya-o-byudzhete-zabajkalskogo.html
podrazdelenie-oo-na-maloslozhnuyu-i-slozhnuyu.html
podrazdeleniya-k-vipolneniyu-zadachi.html