Пример программы с использованием процедуры

Содержание

Технология программирования с использованием процедур и функций, организованных пользователем, дает ряд преимуществ. Именно благодаря ним обеспечивается возможность:

— организовать работу нескольких программистов над одной программой с последующим объединением отдельно отлаженных и относительно независимых блоков в единое целое;

— проводить отладку отдельных блоков и только после этого программы в целом;

— значительно экономить память, так как многократно используемый участок (процедура или функция) заносится в память только один раз;

— упростить внесение изменений в программу, так как исправление ошибки в одном блоке не вызывает корректировку других блоков.

ПАСКАЛЬ допускает пять основных способов использования и размещения подпрограмм:

· основная программа, процедуры и функции расположены в одном файле;

· подпрограммы расположены в отдельных файлах и включаются в основной файл с помощью директивы компилятора $;

· подпрограммы организуются как оверлейные структуры и поочередно загружаются в одно и то же место памяти;

#5 PYTHON: 🐍ФУНКЦИИ И ПРОЦЕДУРЫ

· подпрограммы пишутся на машинном коде и включаются в программу одним из вышеуказанных способов;

· подпрограммы оформляются как «внешние» и вызываются из основной программы.

Procedure [(формальные параметры)];

Procedure Sort (A: integer; В: real);

Procedure Kvadr (Alpha, Beta: integer; var Gamma: boolean);

Имя процедуры – идентификатор, уникальный в пределах программы. Тело процедуры представляет собой локальный блок, по структуре аналогичный программе:

Procedure [(формальные параметры)];

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

Kvadr (14,25, True);

Параметры обеспечивают механизм замены, который позволяет выполнять процедуру с различными начальными данными. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке описания процедуры устанавливается взаимно-однозначное соответствие в результате их перебора слева направо. Количество и тип формальных параметров равны количеству и типу фактических параметров. Ниже приведена программа, реализующая с помощью процедуры без параметров очищение экрана, установку курсора в его центр и вывод слова ‘СПРАВОЧНИК’.

Если процедура возвращает в программу какие-то значения, соответствующие переменные должны быть описаны как параметры-переменные с использованием слова Var.

Хотя набор встроенных функций языка ПАСКАЛЬ достаточно широк, он вряд ли может удовлетворить требованиям каждого программиста. Поэтому пользователю предоставлена возможность самому реализовать нужные ему алгоритмы в виде функций и обращаться к ним из программ по мере необходимости.

Function Prov (X, Y, T: integer): real;

Python #14 Процедуры

Function Zx: boolean;

Имя функции – уникальный в пределах блока идентификатор. Возвращаемый результат может иметь любой скалярный тип, тип string и тип «указатель».

Тело функции представляет собой локальный блок, по структуре аналогичный программе:

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

Обращение к функции осуществляется по имени с необязательным указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип.

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

Читайте также:
Составить программу расчета значения функции z x 2 ctg 2y

Z: integer; К: real;

Function Step (F: real; Exp: integer): real;

С: integer; T: real;

if Exp = 0 then Step:= 1 else

for С: = 2 to Abs(Exp) do T: — T * F;

wri teln (‘ Введите число:’);

wri teln (Step(Z,4));

wri teln (Step(K,4))

Параметры могут иметь любой тип, включая структурированный. ПАСКАЛЬ поддерживает два различных метода передачи параметров: по значению и по ссылкам.

Когда параметры передаются по значениям, формальный параметр является переменной, локальной в блоке. Фактический параметр может быть любым выражением того же типа, что и соответствующий ему формальный параметр. Такие параметры называются параметрами-значениями. Их главная отличительная черта – изменение формальных параметров не влечет за собой изменения фактических параметров. Пример типичной записи параметров-значений в описании процедур и функций:

Procedure Копе (А, В, С: integer; D: real);

Function Docs (S1, S2: real; Flag: boolean): real;

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

Procedure Okl (Mas1: array [1..12] of real);
является ошибочной. Тип переменной следует определить ранее в разделе описания типов блока:

Type Massiv = array [1..12] of real;

Procedure Okl (Mas1: Massiv);

Когда параметр передается посредством ссылки, фактический параметр является переменной. Формальный параметр обозначает эту фактическую переменную в течение всего времени активизации блока. Параметры, переданные посредством ссылки, называются параметрами-переменными. Их характерный признак – любое изменение формального параметра означает изменение фактического параметра. Для описания параметров-переменных в секции формальных параметров служит зарезервированное слово Var.

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

Формальные параметры без типа несовместимы ни с каким типом. Допустимо сочетание параметров-значений и параметров-переменных в одной секции формальных параметров:

Procedure Prots (Var А, В, С: real; S: boolean);

Такая запись означает, что А, В, С – параметры-переменные, а S – параметр-значение. Напомним, что если процедура должна возвратить в программу определенные результаты, они должны быть специфицированы как параметры-переменные, т. е. в сочетании со словом Var, в противном случае результаты не будут возвращены.

Прокрутить вверх

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все.

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала.

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам.

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот.

Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:

Источник: zdamsam.ru

PASCAL для начинающих

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

Формат описания процедуры имеет вид:
procedure имя процедуры (формальные параметры);
раздел описаний процедуры
исполняемая часть процедуры

Формальные параметры в заголовке процедур и функций записываются в виде:
var имя параметра: имя типа
и отделяются друг от друга точкой с запятой (служебное слово var может отсутствовать, об этом см. ниже). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. Список формальных параметров может отсутствовать.

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

имя процедуры(список фактических параметров);

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

Пример программы с использованием процедуры поиска максимума из двух целых чисел.

var x,y,m,n: integer;

procedure MaxNumber(a,b: integer; var max: integer);
begin
if a>b then max:=a else max:=b;
end;

begin
write(‘Введите x,y ‘);
readln(x,y);
MaxNumber(x,y,m);
MaxNumber(2,x+y,n);
writeln(‘m=’,m,’n=’,n);
end.

Читайте также:
Пример программы для токарного станка с чпу fanuc

2. Передача параметров

Передача параметров может производиться двумя способами — по значению и по ссылке. Параметры, передаваемые по значению, называют параметрами-значениями, передаваемые по ссылке — параметрами-переменными. Последние отличаются тем, что в заголовке процедуры перед ними ставится служебное слово var.

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

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

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

Источник: przpascal12.blogspot.com

Процедуры и функции в Паскале. Рекурсия

Программирование на языке Python (§ 54 - § 61)

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

3. Подпрограммы решают три важные задачи, значительно облегчающие программирование:

1. избавляют от необходимости многократно
повторять в тексте программы аналогичные
фрагменты, т.е. сократить объём программы;
2. улучшат структуру программы, облегчая
понимание при разборе;
3. уменьшают вероятность появления ошибок,
повышают устойчивость к ошибкам
программирования и непредвиденным
последствиям при модификации.

4. Процедуры и функции

В языке Паскаль существует два вида подпрограмм:
процедура (PROCEDURE ) и функция ( FUNCTION ).
Процедуры и функции в Паскале объявляются в разделе
описания за разделом переменных.
Program ИмяПрограммы;
VAR … // раздел описания переменных главной программы;
procedure ИмяПроцедуры;
var …
begin
…//Тело процедуры
end;
begin
//тело главной программы
end.

5.

У функций и процедур существуют параметры
(переменные, которые передают какое — либо
значение). Они бывают двух видов:
1) Формальные — те, которые находятся в
описании подпрограммы
2) Фактические — те, которые передаются из
основной программы в функцию или процедуру.
Фактические параметры должны
соответствовать формальным по количеству,
порядку следования и типу.

6.

Также у подпрограммы существую
переменные. с которыми она в дальнейшем
работает. Они делятся опять же на два типа:
1) Глобальные переменные, то есть
действующие во всей программе
2) Локальные — те, которые действуют только
в процедуре или функции

7. Процедуры

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

8. Пример 1. Процедура без параметров, которая печатает строку из 60 звездочек.

procedure pr;
var i : integer ;
begin
for i :=1 to 60 do write (‘ * ‘); writeln;
end;
begin
pr;
end.

9. Пример 2. Составить программу обмена местами двух чисел с=5 и d=7

1) при вызове процедуры obmen с двумя
program obmenDan;
параметрами 5 и 7, в переменные a и b
var c,d:integer;
помещаются тоже числа 5 и 7
соответственно:
procedure obmen ( a,b:integer);
с
5
var m:integer;
7
d
begin
5
a
m:=a; a:=b; b:=m;
writeln(a,b);
7
b
end;
2) далее в процедуре осуществляется
перестановка значений ячеек памяти a и b:
begin
writeln (‘Введите 2 числа: ‘);
с
5
readln(c,d);
7
d
3) но в переменных c и d данные не
obmen(c,d); поменялись, т.к. они находятся в
7
a
writeln(c,’ ‘,d); других ячейках памяти
end.
5
b

10. Для того чтобы переменные c и d, a и b ссылались на одни и те же ячейки памяти (если изменятся значения a и b, то изменятся значения и c, d) необходи

Для того чтобы переменные c и d, a и b ссылались на одни и
те же ячейки памяти (если изменятся значения a и b, то
изменятся значения и c, d) необходимо при описании
формальных параметров, перед нужными переменными
добавить слово VAR:
procedure obmen (var a,b:integer);
с
5
d
7
a
b

Читайте также:
Как отключить программу аваст

11. Пример 3. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическо

Пример 3.
Даны 3 различных массива целых чисел (размер каждого не превышает 15). В
каждом массиве найти сумму элементов и среднеарифметическое значение.
program proc;
var i , n , sum: integer;
sr : real;
procedure work (r:integer; var s:integer; var s1:real);
var mas : array [1..15] of integer ;
j : integer;
begin
s:=0;
for j:=1 to r do
begin
read (mas[j]); s:=s+mas [j];
end;
s1:=s/r;
end;

12.

begin
for i:=1 to 3 do
begin
write (‘Vvedite razmer ‘,i, ‘ masiva: ‘);
readln(n);
work (n, sum, sr);
writeln (‘Summa elementov = ‘,sum);
writeln (‘Srednearifmeticheskoe = ‘,sr:4:1);
end;
end.

13. Результат работы программы:

В программе трижды вызывается
процедура work, в которой
формальные переменные r, s, s1
заменяются фактическими n,
sum, sr. Процедура выполняет
ввод элементов массива,
вычисляет сумму и среднее
значение. Переменные s и s1
возвращаются в главную
программу, поэтому перед их
описанием ставится служебное
слово var. Локальные параметры
mas, j действуют только в
процедуре. Глобальные — i, n,
sum, sr доступны во всей
программе.

14. Функции в Паскале

Набор встроенных функций в языке Паскаль
достаточно широк (ABS, SQR, TRUNC и т.д.). Если в
программу включается новая, нестандартная функция,
то ее необходимо описать в тексте программы, после
чего можно обращаться к ней из программы.
Обращение к функции осуществляется в правой
части оператора присваивания, с указанием имени
функции и фактических параметров. Функция может
иметь собственные локальные константы, типы,
переменные, процедуры и функции. Описание
функций в Паскале аналогично описанию процедур.

15. Отличительные особенности функций:

— результат выполнения — одно значение,
которое присваивается имени функции и
передается в основную программу;
— имя функции может входить в выражение
как операнд.

16. Пример 4. Написать подпрограмму-функцию степени аx, где a, х – любые числа. Воспользуемся формулой: аx = ex ln a

Пример 4. Написать подпрограмму-функцию
степени аx, где a, х – любые числа. Воспользуемся
x = ex ln a
формулой:
а
program p2;
var f, b, s, t, c, d : real; < глобальные переменные>
function stp (a, x : real) : real;
var y : real; < локальные переменные>
begin
y := exp (x * ln ( a)) ;
stp:= y; подпрограммы>
end; < описание функции закончено >
begin
d:= stp (2.4, 5);
writeln (d, stp (5,3.5));
read (f, b, s, t); c := stp (f, s)+stp (b, t);
writeln (c);
end.

17. Описание подпрограмм

Подпрограмма — часть программы, оформленная в виде отдельной синтаксической конструкции и
снабжённая именем (самостоятельный программный блок), для решения отдельных задач.
Процедуры
Функции
Описание процедуры:
Описание функции:
procedure ( параметров>)

Begin

End;
function ( параметров>): тип;

Begin

:=;
параметр>
End;
Вызов функции:
< оператор>:=
();
Вызов процедуры:
();
1. В правой части оператора присваивания.
2. В выражении, стоящем в условии
оператора разветвления.
3. В процедуре вывода, как результат работы
функции.

18. Рекурсия

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

19. Пример 5. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1 , если n= 1 n!= ( n -1 )! · n , если n > 1

Пример 5. Составить рекурсивную функцию,
вычисляющую факториал числа n следующим
образом: n! = 1 , если n= 1
n!= ( n -1 )! · n , если n > 1
function f ( n : integer): integer;
begin
if n = 1 then f := 1 else f := n * f ( n -1 );

end;

20. Задачи

1)Найти площадь круга с использованием
процедуры ифункции.
2)Найти НОД и НОК
3) Найти 1!+2!+…+n!
4) упорядочить значения трёх переменных a,
b и c в порядке их убывания

Источник: ppt-online.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru