Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. Анализ рисков реализации подпрограммы и описание мер управления рисками.
  2. Ближний вызов подпрограммы
  3. Дальний вызов подпрограммы
  4. Лабораторная работа №6. Подпрограммы языка Pascal
  5. Оператор RETURN служит для выхода из подпрограммы FUNCTION и передачи результата вычисления в головную программу на то место, откуда шло обращение к подпрограмме-функции.
  6. Описание подпрограммы
  7. основных ожидаемых конечных результатов подпрограммы 4

Лекция 10. Подпрограммы.

 

Виды подпрограмм. Определение подпрограмм. Особенности передачи параметров. Область действия переменных. Примеры подпрограмм.

 

ПОДПРОГРАММЫ

 

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

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

Перед использованием функции необходимо дать ее определение, например: P(x) = x * (x + 1)

После этого ее можно использовать, например, получить значение функции P(x) при x=10: P(10) = 10 *(10 + 1) = 110

Вызов подпрограммы (команда «выполнить подпрограмму») записывается аналогично использованию математической функции:

f (a1, a2,..., an)

где f - имя подпрограммы (аналогично имени функции P), a1, a2,..., an - аргументы вызова (фактические параметры), конкретные величины, подставляемые вместо формальных параметров при выполнении подпрограммы (как аргумент 10 при вычислении значения функции P).

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

При изменении имени формального параметра смысл подпрограммы не изменяется (как если бы в определении функции F(x) заменить x, например, на y).

Подпрограммы могут быть двух типов:

· функция – подпрограмма, обладающая значением;

· процедура – подпрограмма, не обладающая значением.

В языке С все подпрограммы называют функциями и различают:

· функции, обладающие значением;

· функции, не обладающие значением.

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

Определение функции имеет вид:

<Заголовок функции>

{ Тело функции:

<Объявление переменных функции>

< Операторы функции>

[return [<выражение>];]

}

Заголовок функции имеет вид:

<тип_значения> <имя_функции> ([<тип> < имя> [, < тип> < имя>] …])

Тип значения функции может быть void, чтоозначает отсутствие значения. Тип значения функции разрешается не указывать. В этом случае (по умолчанию) подразумевается тип int.

В заголовке функции в скобках заданы типы и имена формальных параметров, разделенных запятыми. При отсутствии параметров скобки могут быть пустые или в скобках указывается слово void.

В теле функции определяются действия, которые будут выполнены после ее вызова. Тело функции начинается с объявления всех использованных в ней локальных переменных. Локальные переменные могут использоваться только в той функции, где объявлены. Формальные параметры локальны для функции. Далее следуют операторы, реализующие функцию.

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

Оператор возврата имеет вид:

return [<выражение>];

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

Подпрограмма выполняется после ее вызова. Программа, в составе которой выполняется подпрограмма, по отношению к подпрограмме называется главной, основной или вызывающей программой. В то же время, она сама может быть подпрограммой (подчиненной программой) по отношению к вызывающей ее программе.

Например, в программе 9.1 функция (программа) F(x), для вычисления которой используется функция (подпрограмма) cos(x), является главной по отношению к функции cos и подчиненной (подпрограммой) по отношению к программе main, в составе которой вычисляется F(x).


Вызов подпрограммы, т.е. команда для выполнения подпрограммы имеет вид:

<имя_функции> ([<имя> [, < имя>] …]);

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

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

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

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

<имя_переменной> = <имя_функции> ([<имя> [, < имя>] …]);

Например, в языке С операция извлечения квадратного корня из величины x реализуется вызовом стандартной функции sqrt (x). Можно записать выражение, содержащее вызовы функций sqrt с разными аргументами, называемыми фактическими параметрами функции:

z= (sqrt (x) + sqrt (y*2)) / 2;

Примеры заголовков функций, не обладающих значением:

void p_f (float x, float *z) - процедура p_f с входным вещественным параметром x и выходным вещественным параметром z;

void p_fakt (int k, int *f) - процедура p_fakt с входным целочисленным параметром k и выходным целочисленным параметром f.

Примеры вызова функций p_f и p_fakt:

float a, b;

int n, p;

….

a = 15.2; p_f (a, &b);

n = 4; p_fakt (n, &p);

Примеры заголовков функций, обладающих значением:

float f (float x) - вещественная функция f от вещественного параметра x;

int fakt (int k) - целочисленная функция fakt с входным целочисленным параметром k.

Примеры вызова функций f и fakt:

float a, b, c;

int n, p;

….

a = 15.2; b = 20.5; c = f (a) *f(b);

n = 4; p = fakt (n) + fakt(5);

Если определение функции в программе расположено позже вызова, то до вызова, в начале программы, необходимо поместить объявление функции (прототип функции). Прототип функции – это заголовок функции, завершающийся символом ‘;’.

Например,

float f (int n, float m[ ]); - прототип вещественной функции f от целочисленного входного параметра n и вещественного массива m.


Дата добавления: 2015-07-26; просмотров: 58 | Нарушение авторских прав


Читайте в этой же книге: Область действия переменных | Пример 20. | Пример 22. |
<== предыдущая страница | следующая страница ==>
Структура модуля| Параметры подпрограмм

mybiblioteka.su - 2015-2024 год. (0.008 сек.)