Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Тема: «Функции»

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

Ход урока

Повторение

1. Что такое подпрограмма? Для чего используются подпрограммы? Перечислите преимущества использования подпрограмм. Какие бывают параметры?

2.  Запишите структуру процедуры.

3.  Что такое формальные и фактические параметры? Локальные и глобальные?

4.  Как записывается вызов процедуры?

Описание

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

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

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

Таким образом, общий вид описания функции сле­дующий:

Function Имя [(Список формальных параметров)]: Тип результата;

Описательная часть

Begin

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

End;

Пример

Составить программу, подсчитывающую число соче­таний без повторения из п элементов по k.

НЕ нашли? Не то? Что вы ищете?

Число сочетаний без повторения вычисляется по формуле:

Обозначим через n и k переменные для хранения вве­денных чисел; С — переменную для хранения результата. Чтобы подсчитать количество сочетаний без повто­рения, необходимо вычислить n!, (n-k)!, k!.

Опишем функцию для вычисления факториала чис­ла п (n!=1∙ 2 ∙ ... ∙ n).

Function factorial(n:Integer):Longint;
{заголовок функции}
Var i: Integer; {описательная часть}

rez: Longint;

Begin {тело функции}

rez:=1;

For i:=l To n Do rez:=rez*i;

factorial:=rez; {присваивание значения имени функции}

End;

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

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

Далее идет раздел операторов (тело функции). Ре­зультат присваивается имени функции, таким образом, функция получает свое значение.

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

Program Example_30;

Var n, k: Integer; al, a2, аЗ, с: Longint;

Function factorial (n:Integer):Longint;

Var i: Integer;

rez: Longint;

Begin

rez:=1;

For i:=l To n Do rez:=rez*i;

factorial:=rez;

End;

Begin

Writeln('Ввод n и k:');

Readln(n, k);

al:=factorial(n); { вычисление n!}

a2:=factorial(k); {вычисление k!}

a3:=factorial(n-k) ; {вычисление (n-k) !}

c:=al div (а2*аЗ); {результат }

Writeln(с);

Readln;

End.

Пусть n=5, k=3. Когда в программе встречается оператор al:=factorial(n) , выполняются следую­щие действия:

•  выделяется память для переменных, описанных в функции factorial;

•  формальному параметру присваивается значение фактического: n: =n (n=5);

•  выполняется функция, вычисляется факториал числа 5;

•  значение функции передается в место обращения к этой функции, то есть присваивается переменной al.

В операторах a2:=factorial (k) и а3:=factorial (n-k) еще дважды вызывается функция factorial, с параметрами k=3 и n-k=2. Всего в программе имеется 3 обращения к функции factorial, столько же раз выполняются и описанные выше действия.

Еще раз подчеркнем, что функция — это самостоя­тельная часть программы, имеющая собственные пере­менные, которым отводится отдельное место в памяти ЭВМ. Этим объясняется тот факт, что переменные с одинаковыми именами, используемые в функции и в основной программе, являются разными (в рассмотрен­ном примере — переменная n основной программы и параметр n функции). При выполнении программы машина "не путает" имена этих переменных, так как области их действия не совпадают.

Это особенно важно при написании больших про­грамм.

Домашнее задание: учить записи; написать программу вычисления площади треугольника, заданного координатами своих вершин.

Тема: «Функции. Решение задач»

Цель: Механизм реализации подпрограммы с помощью функций при решении задач.

Ход урока

Повторение

1.  Как описывается функция?

2.  Каковы отличия функции от процедуры?

3.  Чем отличаются друг от друга формальные и фактические параметры?

4.  Что такое область действия переменной?

5.  Чем отличаются друг от друга локальные и глобальные параметры?

Решение задач

Используя процедуру для вычисления степени числа, найти значение выражения:

Коэффициенты a4, a3, a2, a1, a0 и x вводятся с клавиатуры.

Решить двумя способами – с процедурой и с функцией.

Решение 1.

Решение 2.

Program example1;

Var a, a0, a1, a2, a3, a4: Integer;

s, y: longint;

procedure stepen (x, t: integer; var st: longint);

var i: integer;

begin

st:=1;

for i:=1 to t do st:=st * x;

end;

begin

y:=0;

writeln (‘a, a0, a1, a2, a3, a4’);

readln (a, a0, a1, a2, a3, a4);

stepen (a, 1, s); y:= a0 + a1 * s;

stepen (a, 2, s); y:= y + a2 * s;

stepen (a, 3, s); y:= y + a3 * s;

stepen (a, 4, s); y:= y + a4 * s;

writeln (‘результат - ’, y);

readln;

end.

Program example2;

Var a, a0, a1, a2, a3, a4: Integer;

y: longint;

function st (x, t: integer): longint;

var i: integer; s: longint;

begin

s:=1;

for i:=1 to t do s:=s * x;

st:=s;

end;

begin

y:=0;

writeln (‘a, a0, a1, a2, a3, a4’);

readln (a, a0, a1, a2, a3, a4);

y:= a0 + a1 * st(a, 1) + a2 * st (a, 2) +

a3 * st (a, 3) + a4 * st (a, 4);

writeln (‘результат - ’, y);

readln;

end.

Отладка программ

Домашнее задание:

Повторить процедуры и функции.

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

Тема: «Решение задач с использованием процедур и функций»

Цель: Механизм реализации подпрограммы с помощью процедур и функций при решении задач.

Ход урока

1) Проверка домашнего задания. Отладка программы.

Решение задачи

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

(x2, y2) Тест:

(x1, y1) – (10, 20)

a b (x2, y2) – (30, 40)

(x3, y3) – (60, 30)

(x3, y3) b= 31.62

c c=50.99

(x1, y1)

Program example3;

Var a1, a2, a3, b1, b2, b3: Integer;

a, b, c, p: real;

function st (x1, x2, y1, y2: integer): real;

var d: real;

begin

d:=sqrt ((sqr (x1-x2) + sqr (y1-y2));

st:=d;

end;

begin

writeln (‘ a1, a2, a3, b1, b2, b3’);

readln ( a1, a2, a3, b1, b2, b3);

a:= st (a1, a2, b1, b2);

b:= st (a2, a3, b2, b3);

c:= st (a1, a3, b1, b3);

writeln (‘a=’,a:5:2,’b=’,b:5:2,’c=’,c:5:2);

p:= a +b + c;

writeln (‘периметр - ’, p);

readln;

end.

2) Домашнее задание:

Составить процедуру нахождения НОД (a, b). Использовать ее для нахождения НОД четырех чисел a, b, c, d, введенных с клавиатуры.