Тема №9. Подпрограммы-функции

Тема №9. Подпрограммы-функции

При решении сложных задач разумно разбить алгоритм на несколько более простых составляющих. В языке Pascal существуют специальные средства для этого – подпрограммы. Есть два вида подпрограмм: процедуры и функции. Функция получает информацию от вызывающей программы через свои параметры. Параметры, описанные в заголовке функции, называются формальными параметрами. Параметры, указанные при вызове функции называют фактическими. Типы и число фактических параметров должны соответствовать типу и числу формальных параметров. Следующий пример иллюстрирует работу функций.

Program Table;

Uses CRT; // Подключение модулей

// Описания функций, требующихся в программе

function cube(x:real):real; // возведение в куб

begin

cube:=x*x*x; // имени функции присваивается значение

end;

function sign(x:real):integer; // вычисление знака числа

begin

if x>0 then sign:=1

else if x=0 then sign:=0

else sign:=-1;

end;

// ==== Начало главной программы ==========

var a : real; // блок описания переменных

const a1 = -5.0; // блок описания констант (постоянных)

a2 = +5.0;

st = 0.5;

begin

a:=a1;

while (a<=a2) do

begin

writeln(a:4:1,cube (a):10:3,sign(a):3); // вызов функций

a:=a+st;

end;

end.

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

- 27 -

Рассмотрим еще один пример, в котором функция имеет два параметра разного типа.

Program Power2;

Uses CRT;

function power(x : real; n : integer) : real; // возведение в степень

var i : integer; // локальные переменные r : real;

begin

r:=1.0;

for i:=1 to n do r:=r*x; // накопление произведения

power:=r; // результат присвоить имени функции

end;

// ==== Начало главной программы ================

var i : integer; // блок описания переменных

begin

for i:=1 to 10 do

writeln(i:2,power (2.0,i):6:0);

end.

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

Задание 9 1. Модифицируйте последний пример таким образом, чтобы функция power вычисляла правильно не только натуральные степени, но и отрицательные.

Напоминание:

x-n = 1 / xn.

Подсказка: следует использовать оператор if, а также функцию abs(n), которая вычисляет модуль числа.

(5 баллов)

2. Напишите функцию, вычисляющую факториал числа n! =1•2•3• ... •n.

Подсказка: ее несложно сделать, путем модификации функции power.

(5-8 баллов)

- 28 -

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Тема №10. Подпрограммы-процедуры

Из книги автора

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


3. Процедуры и функции (подпрограммы)

Из книги автора

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


ЛЕКЦИЯ № 4. Подпрограммы

Из книги автора

ЛЕКЦИЯ № 4. Подпрограммы 1. Параметры подпрограмм В описании процедуры или функции задается список формальных параметров. Каждый параметр, описанный в списке формальных параметров, является локальным по отношению к описываемой процедуре или функции, и в модуле,


Стандартные подпрограммы

Из книги автора

Стандартные подпрограммы Общие подпрограммы procedure Swap<T>(var a, b: T); Меняет местами значения двух переменных function Milliseconds: integer; Возвращает количество миллисекунд с момента начала работы программы function MillisecondsDelta: integer; Возвращает количество миллисекунд с


Общие подпрограммы

Из книги автора

Общие подпрограммы procedure Swap<T>(var a, b: T); Меняет местами значения двух переменных function Milliseconds: integer; Возвращает количество миллисекунд с момента начала работы программы function MillisecondsDelta: integer; Возвращает количество миллисекунд с момента начала работы


Подпрограммы для работы с пером

Из книги автора

Подпрограммы для работы с пером Рисование линий осуществляется текущим пером. Доступ к свойствам текущего пера можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам пера сгруппированы парами: если Prop -


Подпрограммы для работы с кистью

Из книги автора

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


Подпрограммы для работы со шрифтом

Из книги автора

Подпрограммы для работы со шрифтом Вывод текста осуществляется текущим шрифтом. Доступ к свойствам текущего шрифта можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам шрифта сгруппированы парами:


Подпрограммы блокировки рисования

Из книги автора

Подпрограммы блокировки рисования procedure Redraw; Перерисовывает содержимое графического окна. Вызывается в паре с LockDrawing procedure LockDrawing; Блокирует рисование на графическом окне. Перерисовка графического окна выполняется с помощью Redraw procedure UnlockDrawing; Снимает


Подпрограммы режимов рисования

Из книги автора

Подпрограммы режимов рисования procedure SetSmoothing(sm: boolean); Устанавливает режим сглаживания procedure SetSmoothingOn; Включает режим сглаживания procedure SetSmoothingOff; Выключает режим сглаживания function SmoothingIsOn: boolean; Возвращает True, если режим сглаживания установлен procedure


Подпрограммы

Из книги автора

Подпрограммы Классический подход к повторному использованию состоит в том, чтобы создавать библиотеки подпрограмм. Здесь термин подпрограмма (routine) означает программный элемент, который может быть вызван другими элементами для выполнения некоторого алгоритма,


Атрибуты и подпрограммы

Из книги автора

Атрибуты и подпрограммы Любой абстрактный тип данных и POINT в частности характеризуется набором функций, описывающих операции применимые к экземплярам АТД. В классе, реализующем АТД, функции становятся компонентами (features) - операциями, применимыми к экземплярам класса.В


ТЕМА НОМЕРА: Как родилась эта тема

Из книги автора

ТЕМА НОМЕРА: Как родилась эта тема Автор: Владимир ГуриевОбычно мы стараемся придумать на первое апреля что-нибудь веселое, но последние несколько лет редакции и без первого апреля живется все лучше и веселее, так что настроения шутить у нас не было, и в тематическом