МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


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


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

Обращение к подпрограммам.





Основные понятия.

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

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

 

Описание процедуры.

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

Любая процедура состоит, аналогично программе, из заголовка процедуры и блока. Заголовок процедуры представляет собой:

PROCEDURE <ИМЯ> (<СПИСОК ПАРАМЕТРОВ>),

где PROCEDURE – служебное слово, ИМЯ – имя процедуры, СПИСОК ПАРАМЕТРОВ - перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов. Параметры, перечисленные в списке, называются формальными. Допускается описание процедуры, несодержащей формальных параметров:

PROCEDURE <ИМЯ>;

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

 

Пример: Оформить в виде процедуры алгоритм вычисления степени y=xn c натуральным показателем n.

 

PROCEDURE STEP1(N:INTEGER;X:REAL;VAR Y:REAL;)

VAR I:INTEGER;

BEGIN

Y:=1;

FOR I:=1 TO N DO

Y:=Y*X;

END;

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

Если в заголовке процедуры параметры указаны без слова VAR, то это параметры-значения. Параметры-значения могут изменяться внутри процедуры, но для внешней программы это изменение окажется незамеченным.

Для получения результатов в основной программе используются параметры-переменные. Эти параметры перечисляются после служебного слова VAR с обязательным указанием типа.

Тело процедуры состоит:

1) из описательной части, где определена переменная I, необходимая и имеющая смысл только внутри данной процедуры и называемая локальной переменной (значение локальной переменной недоступно в основной программе);

2) из составного оператора BEGIN-END, реализующего алгоритм вычисления степени действительного числа с натуральным показателем.



Это то же вычисление оформим в виде процедуры без параметров:

PROCEDURE STEP2;

VAR I:INTEGER;

BEGIN

Y:=1;

FOR I:=1 TON DO Y:=Y*X;

END;

 

В этом случае процедура STEP2 не содержит списка формальных параметров и работает с локальной переменной I, описанной в блоке процедуры, и переменными X, N, Y называются глобальными по отношению к процедуре STEP2. Значение глобальных переменных доступны и могут быть использованы в любой точке основной программы (в частности, внутри данной процедуры).

 

Функция.

Функция это подпрограмма, результат выполнения которой есть единственное скалярное значение, присваиваемое имени этой функции. Следовательно, функции являются частным случаем процедур и принципиально отличаются от них тем, что, во-первых, результат выполнения функции – одно значение, а процедуры – одно или несколько; во-вторых, результат выполнения функции передается в основную программу, как значение имени этой функции, а результаты выполнения процедуры – как значения ее параметров.

Описание функции аналогично описанию процедуры и состоит из заголовка и блока. Заголовок функции имеет вид:

 

FUNCTION <ИМЯ> (<СПИСОК ПАРАМЕТРОВ>):<ТИП>

где FUNCTION – служебное слово, ИМЯ – имя функции, СПИСОК ПАРАМЕТРОВ – перечень формальных параметров (исходных данных) с указанием их типов, ТИП – тип результата: значение, которое должно приобретать имя функции.

Допускается описание функции без параметров:

FUNCTION <ИМЯ>: <ТИП>;

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

 

Пример: Оформить в виде функции алгоритм вычисления степени Y=Xn :

FUNCTION STEP3(N:INTEGER; X:REAL) : REAL;

VAR I:INTEGER;

Y:REAL;

BEGIN

Y:=1;

FOR I:=1 TO N DO

Y:=Y*X;

STEP3:=Y

END;

 

В заголовке функции с именем STEP3 перечислены параметры N,X, определяющие ее исходные данные. Результат выполнения функции (значение локальной переменной Y) присваивается ее имени STEP3. Тип результата (тип функции) – REAL, который указывается в заголовке функции при ее описании. Введение локальной переменной Y не обязательно, но придает описанию функции более наглядный вид.

 

Обращение к подпрограммам.

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

<ИМЯ> (<СПИСОК АРГУМЕНТОВ>);

где ИМЯ – имя процедуры, к которой происходит обращение, СПИСОК АРГУМЕНТОВ – перечень конкретных значений (выражений) и имен, подставляемых на место формальных параметров процедуры при ее выполнении.

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

Program <имя>;

Пример: Cоставить программу вычисления степени Z=An, где n – целое число и A<>0. Степень с целым показателем определяется следующим образом:

 

 

Учитывая, что 1/An = (1/A)n и используя процедуру STEP1, описанную в пункте 1.1, составим алгоритм рис.1 а), б) и программу.

{ Определение степени с целым показателем }

PROGRAM STEP4;

VAR M:INTEGER;

A,Z:REAL;

{ Вычисление степени с натуральным показателем }

PROCEDURE STEP1 (N:INTEGER;X:REAL;VAR Y:REAL);

VAR I:INTEGER;

BEGIN

Y:=1;

FOR I:=1 TO N DO

Y:=Y*X;

END; {STEP1}

BEGIN {STEP4}

READ (A,M);

IF M=0 THEN Z:=1

ELSE IF M>0 THEN STEP1(M,A,Z) {Вызов

процедуры}

ELSE STEP1(M,1/A,Z);{Вызов

процедуры}

WRITELN(A:8:3,’В степени ’,M:3,’ равно ’,Z)

END. {STEP4}


 

 
 


 

 


да нет

       
   
 
 
Z:=1

 

 


STEP1 (m,a,z)
б)

STEP1 (m,1/a,z)
нет да

 

 

 
 

 

 


а) Рис. 1

 

В программе оператор процедуры использован дважды, и каждый раз он вызывает из описательной части программы процедуру STEP1. В теле процедуры произойдет замена формальных параметров N,X,Y на фактические M,A,Z первый раз и на M,1/A,Z второй раз. Затем выполняется совокупность действий, предусмотренных операторами процедуры, и в программу будет возвращен результат Z. Возврат осуществляется к оператору программы STEP4, следующему за оператором вызова процедуры. Очень важно понимать суть и механизм замены формальных параметров фактическими.

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

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

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

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

 

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

,

используя функцию STEP3, описанную в п. 1.2., (A – действительное, n - целое).

 

{ Пример вычисления функции }

 

PROGRAM STEP6;

VAR M: INTEGER;

A, Z, R: REAL;

{ Функция вычисления степени }

FUNCTION STEP3(N: INTEGER; X: REAL): REAL;

VAR M: INTEGER;

Y: REAL;

BEGIN {STEP3}

Y:=1;

FOR I:=1 TO N DO

Y:=Y*N;

SYEP3:=Y

END; {STEP3}

BEGIN {STEP6}

READ (A,M);

WRITELN (‘A=’, A, ‘M=’, M);

Z:=STEP3(5,A)+STEP3(5, 1/A);

IF M=0 THEN R:=1

ELSE OF M>0 THEN R:=STEP3(M,A)

ELSE R:=STEP3(M,1/A);

Z:=Z/(2*R);

WRITELN(‘Z=’, Z)

END. {STEP6}

Функция STEP3 вызывается четыре раза для различных значений фактических параметров. Определение фактических и формальных параметров, локальных и глобальных переменных для функций и процедур совершенно идентично.

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

Даны два вектора: А, состоящий из трех элементов, и В, состоящий из четырех элементов. Возвести каждый элемент вектора в квадрат и найти сумму элементов. Действия над векторами оформить в виде процедуры.

PROGRAM SUMMA;

TYPE MAX=ARRAY[1..4] OF REAL;

VAR S1, S2: REAL;I: INTEGER;

A,B: MAX;

PROCEDURE PR(N: INTEGER;VAR S: REAL;VAR C: MAX );

VAR I: INTEGER;

BEGIN

S:=0;

FOR I:=1 TO N DO

BEGIN

C[I]:=SQR(C[I]);

S:=S+C[I]

END;

BEGIN

FOR I:=1 TO 3 DO

READLN(A[I]);

FOR I:=1 TO 4 DO

PR(3,S1,A);

PR(4,S2,B);

WRITELN(S1,S);

FOR I:=1 TO 3 DO

WRITE(A[I]);

FOR I:=1 TO 3 DO

WRITE(B[I]);

END.

 

Задание

2.1 Из таблицы 1. По номеру варианта взять задание и составить программу, используя подпрограмму- процедуру.

2.2 Из таблицы 2 по номеру варианта взять задание и составить программу, используя подпрограмму FUNCTION.

 

Таблица 1

N вар. Содержание задания
1. Определить математическое ожидание и дисперсию для четырёх случайных чисел, заданных векторами: A=[0,5; 1,5; 2] b=[6,7; 8; 7,5; 6] C=[0,1; 10; 4] d=[3,2; 5,1] Расчёт математического ожидания и дисперсии производится по следующим формулам:  
2. Определить расстояние от начала координат до точки Р, делящей отрезок с координатами Р={2;6} M={10;8} в отношении L=3/2 . Расстояние определяется по формуле: , где    
3. Определить расстояние между точками А и В с координатами A=[2;5], B=[2;1], и точками C и D с координатами С=[20;4], D=[12;8]. Расстояние определяется по формуле: , где и
4. Вычислить значение функции , где корни уравнения ; - корни уравнения . Корни уравнения находятся в подпрограмме- процедуре. Если корни мнимые, то считать их равными нулю. Исходные данные: A=0,5; B=3; C=1;
5. Заданы стороны двух треугольников АВС (стороны а, в, с) и DEF (стороны d, e, f). Найти сумму и разность площадей треугольников АВС DEF. Площадь треугольника NKM со сторонами n, k, m вычисляется по формуле: r - полупериметр треугольника NKM. Исходные данные: а=3; b=2,5; c=1,7; d=2; e=7,8; f=7  
6. Три точки заданы своими декартовыми координатами a={1;2}, b={1,2;1}, c={-3; -4}. Вычислить полярные координаты этих точек. Полярный радиус r и полярный угол вычисляются по формулам: ,
7.     Определить номера точек, лежащих в круге радиусом r. Координаты точек заданы массивами и . Исходные данные: n=6; r=3; i=1,2….n ={-1; 2,3; 3,3; -1,8; -2,4} ={2;-2,8;6;1;-2; 1}  
8. Вычислить значение где заданы массивом; =(0,2; 0,46; 0,33; 0,97; 0,15; 0,61; 0,54; 0,77)
9. Вычислить значение R= где X= S= элементы массива. Исходные данные:n=3; m=8; i=1,.2..m; =(5,6; 0,3; -0,9; 3; 2,8; 1,45; -4,6; 1)
10. Определить значение функции Z=sh(x+y) и M=sh(xy), где M изменятся от 1 до 0,5 с шагом 0,1; Y изменяется от 2 до 2,6 с шагом 0,2. Гиперболический синус вычисляется по формуле:  
11. Заданы стороны двух треугольников JKL (стороны j,c,l), иABD(стороны a,b,d).Переменной Sприсвоить значение –1, если площадь треугольника JCLменьше или равна площади треугольника ABD, и значение 1,если площадь треугольника JCL больше площади треугольника ABD. Площадь треугольника MNK со сторонами m,n,k вычисляются по формуле Герона. W= где r-полупериметр треугольника MNK. Исходные данные j=1; c=2,5; i=2,7; a=1; b=2,7; d=3,2.
12. Построить таблицу Z=ch(x2=y2),где имеется от 3до 4 с шагом 0,1, y меняется от 2 до 3 с шагом 0,2. Гиперболический косинус вычисляется по формуле: CH(n)=(en+en)/2.  
13. Заданы два квадратных уравнения Ax2+Dx+C=0, Dx2+Fx+R=0. Найти минимальное значение среди корней этих уравнений. В случае если корни мнимые считать их равными нулю. Решение квадратного уравнения оформить в виде подпрограммы-процедуры. Исходные данные:a=2; b=-5,2; c=1,3; d=3,7; f=1,8; r=6.
14. Четыре точки заданы своими координатами X=(x1,x2), Y=(y1,y2) Z=(z1,z2), P=(p1,p2) Вычислить и напечатать, сколько из них принадлежит полосе, аналитически заданной неравенством: f<Ma1+Na2<r. Проверку на принадлежность точки полосе оформить в виде подрограммы-процедуры. Исходные данные M=5; N=3; f=2,5; r=7,1; X=(-4,2;3); Y=(1,8; 0,8);Z=(-8,6; -4,1); P=(-1; -0,1).
15. Задана окружность (x-a)2+(y-b)2=r и две точки P=(p1,p2) и F=(f1,f2).Выяснить и напечатать, сколько точек (нуль,одна или две) лежит внутри окружности. Проверку, лежит ли точка внутри окружности, оформить в виде подпрограммы-процедуры. Исходные данные a=3,2; b=4,1; r=2; p=(6,1; 4,3); f=(27,48;-6) .


 

Таблица 2

N вар. Содержание задания  
1. при а=4,5; b=0,7; c=6,2; А x принимает значения 0,2; 0,56; 0,83
2. , при a=0,8; b=0,16; c=0,4; a=0,6; b=0,4; c=1,2; a=0,47; b=0,1; c=0,5.
, при a=0,15; b=1,5; a=1,7; b=0,1.
4. , при x=1,4; y=0,8; x=0,9; y=0,6; x=2,9; y=0,4; a d=5,3, при всех значениях x,y.
5. , при x=0,4; y=1,2; x=0,25; y=1,3; a=0,54; b=1 при всех значениях x, y
6. , при a=10,7; b=6,3; y=0,35; a x принимает значения 0,6; 0,51; 0,42.
7. , при x=3; y=4; x=1,6; y=5,8; x=4,5; y=2,7; a=7,1; b=2,4 при всех значениях x, y  
8. , при x=0,1; y=0,7; x=0,4; y=0,6 x=0,5; y=0,2; a=2; b=0,1 при всех значениях x, y
9. , при a=9,7; b=2,7, a x принимает значения 4,8; 9,6; 0,44.
10. , при x=0,35; y=0,1; x=0,82; y=0,12; x=0,67; y=0,3, a=0,24; b=4,9 при всех значениях x, y.  
11. , при a=4; b=2,7, a x принимает значения 0,1; 0,25; 0,14; 0,21.
12.
13.
14.
15.

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.