Различие между процедурами и функциями. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Различие между процедурами и функциями.



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

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

Program ProcedureAndFunction;

Uses

Crt;

Var

a, b, SumNumbers: integer;

Procedure Summa1(Var Sum: integer; a, b: integer);

Begin

Sum:= a+b;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Function Sum(a, b: integer): integer;

Begin

Sum:= a+b;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Begin

ClrScr;

a:= 12;

b:= 15;

Summa1(SumNumbers, a, b);

writeln ('С помощью процедуры сумма чисел равна ',SumNumbers);

writeln ('С помощью функции сумма чисел равна ',Sum(a, b));

End.

Вызов процедуры производится по ее имени. Наряду с параметрами-значениями a и b, которые подлежат сложению, в списке параметров присутствует параметр-переменная Sum, который содержит возвращаемое процедурой значение – сумму.

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

Объявление функции

Function Sum(a, b: integer): integer;

внешне похоже на объявление переменной Sum типа integer. Тип функции объявляется следом за списком параметров – после закрывающейся скобки этого списка и двоеточия.

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

SumNumbers:= Sum(a,b);

Если не обращать внимания на наличие списка параметров, то этот оператор выглядит как присвоение переменной SumNumbers значения переменной Sum. Компилятор, кончно же, знает, что Sum – это имя функции (т.к. определение предшествует использованию) и организует вычисления соответствующим образом. Точно так же, как константа или переменная, вызов функций может использоваться в списках параметров оператора write (см. программу), что для процедур невозможно.

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

Итак, из вышесказанного возьмите на заметку следующее.

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

Задачи Для Самостоятельного Решения

1. Найти сумму цифр числа.

2. Найти первую цифру числа.

3. Найти количество делителей числа.

4. Найти числа из промежутка от А до В, у которых больше всего делителей.

5. Найти сумму всех делителей числа.

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

7. Определить, является ли число простым.

8. Среди чисел из интервала от А до В найти все простые.

9. Составьте программу, проверяющую, является ли число палиндромом (например, число 12421 – палиндром).

10. Определить, является ли число автоморфным, то есть квадрат этого числа заканчивается этим же числом, например, числа 6 и 25, т.к. их квадратами являются числа 36 и 625.


 

Занятие VI

Тема. Решение задач

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

1. Даны координаты вершин четырехугольника ABСВ. Найти сумму длин его диагоналей. Данные для ввода: A(0,1), B(2,5), C(4,8), D(2,0).

2. Найти сумму площадей треугольников ABC и МНР, заданных координатами вершин. Данные для ввода: А(0;1), В(3;1), С(4;2), М(6;7), Н(4;3), Р(3;8).

3. Найти сумму периметров треугольников ABC и МНР, заданных координатами вершин. Данные для ввода: А(0;1), В(3;1), С(4;2), М(6;7), Н(4;3), Р(3;8).

4. Вычислить 1!+2!+3!+......+N!. Вычисление факториала организовать как функцию fact(var r:integer):longint.

5. Составить программу поиска большего из трёх чисел, с использованием процедуры поиска большего из двух чисел.

6. Определить длину окружности С и площадь круга S, удаление L центра окружности от начала координат О. Координаты центра окружности равны X и Y, радиус R.

Вычисление С, S, L оформить в виде процедуры.

7. Составьте функцию для определения значений n!, m!,(n-m)!

8. Напишите функцию CUBЕ, которая возвращает куб ее числового параметра.

9. Напишите функцию, которая возвращает объем сферы, радиус которой передается как параметр.

 

10. Для заданного х составить алгоритм вычисления значения выражения:

11. Для заданного х составить алгоритм вычисления значения выражения:

12. Напишите функцию CUBЕ, которая возвращает куб ее числового параметра.

13. Составьте программу для определения значений n!, m!,(n-m)!

14. Вычислить 1!+2!+3!+......+N!. Вычисление факториала организовать как функцию fact (var r:integer): longint.

15. Напишите функцию, которая возвращает объем сферы, радиус которой передается как параметр.

16. По координатам вершин двух треугольников, определите их площадь и выведите на печать площадь максимального треугольника. Вычисление длины стороны, площади треугольника оформите в виде функций.

17. Дана отрезки а, b, c, d. Для каждой тройки отрезков, из которых можно построить треугольник, напечатайте площадь данного треугольника. Воспользуйтесь функциями определения возможности создания треугольника и вычисления площади.

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

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

20. Даны два натуральных числа. Проверить, является ли второе число перевертышем первого.

21. Составьте программу подсчета числа всех натуральных чисел, меньших М, квадрат суммы цифр которых равен Х.

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

23. Составьте программу нахождения наименьшего натурального N-значного числа Х (X>=10), равного утроенному произведению своих цифр.

24. Дано натуральное число. Определите, сколько четных цифр используется в записи этого числа.

25. Дана последовательность К чисел. Определите, сколько чисел этой последовательности содержит в своей записи все цифры больше некоторого числа n введенного с клавиатуры.

26. Для последовательности вводимых с клавиатуры чисел, выведите суммы цифр каждого введенного числа. Признак конца ввода - число -1.

Для любознательных



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 389; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.30.162 (0.01 с.)