Страницы

Уроки 31, 32 Функции

Описание функции

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

Function имя функции (список параметров): тип результата;
раздел описаний
begin
операторы
имя функции:=результат;
end;

Примеры:
Function pl (a:real):real;
Function sum (a,b,c:integer):real;

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

Примеры:
s:=pl(f)+pl(k);
a:=sum(3,6,8)-sum(a,h,k);



Задание 1. Найти площадь фигуры, которая получена вырезанием из квадрата со стороной а квадрата со стороной b (a>b).

Program z1;
Var a,b,s:real;
Function pl (a:real):real;
Begin
Pl:=a*a;
End;
Begin
Readln(a,b);
S:=pl(a)-pl(b);
Writeln(s);
End.

Задание 2. Найти значение выражения:  56 – 310 + 412.
Указание: Описать функцию для нахождения аn, как произведение n множителей, равных а.

Program z2;
Var s:longint;
Function st (a,n:integer):longint;
Var p:longint; i:integer;
Begin
P:=1;
For i:=1 to n do
P:=p*a;
St:=p;
End;
Begin
S:=st(5,6)-st(3,10)+st(4,12);
Writeln(s);
End.

       Тесты         Посмотреть решение       

Экспериментальная часть

1.       Дано действительное число x. Вычислить х+х357.
2.       Дано действительное число x. Вычислить х+х357+…+хn, где n – нечетное число.

Задание 3. Найти сумму цифр всех целых чисел от n до m (n,m – целые числа).
Указание: Написать функцию, которая находит сумму цифр одного числа.

Program z2;
Var n,m,I,s:integer;
Function sum(a:integer):integer;
Var s:integer;
Begin
S:=0;
While a<>0 do
Begin
s:=s+a mod 10;
a:=a div 10;
End;
Sum:=s;
End;
Begin
Readln(n,m); s:=0;
For i:=n to m do
S:=s+sum(i);
Writeln(s);
End.

       Тесты         Посмотреть решение       

Экспериментальный раздел работы

1. Дан массив целых чисел. Найти число (или несколько) с максимальной суммой цифр.



2. Удалить из массива целых чисел числа, сумма цифр которых меньшеt 9.




Задание 4. Найти сумму всех делителей  чисел от n до m (n, m – натуральные числа).
Указание: Написать функцию, которая находит сумму делителей одного числа.
program z4;
var n,m,i:integer; s1:longint;
function del(a:integer):integer;
var s,i:integer;
begin
s:=1+a;
for i:=2 to a div 2+1 do
if a mod i=0 then s:= s+i ;
del:=s;
end;
begin
readln(n,m);
s1:=0;
for i:=n to m do
s1:=s1+del(i);
writeln(s1);
end.

       Тесты         Посмотреть решение       

Экспериментальный раздел работы

1. Найти все совершенные числа на промежутке от n до m (совершенное число равно сумме всех своих делителей, кроме него самого).

2. Дан массив из целых чисел. Необходимо удалить из него все совершенные числа.



Задание 5. Дан массив целых чисел. Вывести на экран все простые числа.
Указание: Написать функцию, которая проверяет, является ли число простым.

       Тесты         Посмотреть решение       


ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ



1. Даны действительные числа a, b, c. Получить:


2. Даны три натуральных числа. Найти их наибольший общий делитель.


3. Дан массив целых чисел. Найти сумму всех простых чисел.

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