ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 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}     да нет  б)   нет да а) Рис. 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. |  | |