Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Результат работы программы




Пример функции вычисления факториала

Х1

5 -

Старый стиль определения функции

Современный стиль определения функции

Определение функции

Каждая функция в языке Си должна быть определена, т. е. должны быть указаны:

• тип функции;

• имя функции;

• информация о формальных параметрах;

• тело функции.

Существует два формата определения функции — современный стиль определения функции и старый стиль определения функции [5].

 

 

тип функции имя функции (объявление формальных
  параметров через
{ /* тело функции */ запятую)
 
return(<выражение>); }  

тип функции имя функции (имена формальных

параметров через запятую)

объявление формальных параметров;

{

/* тело функции */

return (<выражение>); }

Пример


float у; y=x+z; return(у]

}

Различают системные (в составе систем программирования) и собственные функции.

Разбиение программ на функции дает следующие преимущества:

• Функцию можно вызывать из разных мест программы, что позволяет избежать повторного программирования.

• Одну и ту же функцию можно использовать в разных программах.

• Функции повышают уровень модульности программы и облегчают её проектирование.

• Использование функций облегчает чтение и понимание программы, ускоряет поиск и исправление ошибок.

Функцию можно представить в виде некоторого «черного ящика», у которого несколько входов и один выход (рис. 1.1). В «черный ящик» поступает информация, обрабатывается и выдаётся результат. Для программиста неважно, что происходит внутри функции, ему необходимо только знать входы и выход. Использование подобного подхода позволяет на стадии проектирования сконцентрировать внимание на общей структуре программы.

В языке Си нет требования, чтобы определение функции обязательно предшествовало её вызову. Функции могут определяться как до функции main, так и после её. Нельзя определять одну функцию внутри другой.

Возврат значения в вызвавшую функцию осуществляется с помощью оператора return.

Фактические Формальные параметры параметры


 
Хп'
9\

~ Х1'

Х2

в к

:

ж

I « 9 Г-


Х2

Хп


 


ЧЁРНЫЙ ЯЩИК

типФункция

(тип Х1, тип Х2....... тип Хп)

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


Р


Возврат значения в точку вызова return <выражением

Рис. 1.1. Схема работы функции


#include <stdio.h> /* Определение функции factorial()*/ double factorial(double i)

{

double j,k;

k=l;

for (j=2;j<i+l;j=j+l)

k=k*j; return k; /* Возврат в программу */ /^вычисленного значения */ }

/* Главная функция*/ main()

{

double i;

printf("\n Введите целое число\п");

scant("%lf",&i);

printf("\n%lf!=%lf\n",i,

factorial (i)); }

Введите целое число

7.0000001=5040.000000

Вызов функций Общий вид вызова функции

имя функции(<список фактических параметров>);

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


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

Возврат значения в точку вызова

Функция может передать в вызывающую программу только одно значение, для этого используется оператор return.

return(<выражение>);

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

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

Пример использования return в середине функции

void function() {

return; }

В примере оператор return завершает выполнение функции function и передает управление в вызывающую функцию. Никакое значение при этом не передается.

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

Пример функции определения максимума из двух чисел: а = b*max(xy);

 

int max(int a, int b)
{  
if (a>b)  
return (a);
else  
return (b);
}  

Функции могут и не возвращать значения, а просто выполнять некоторые вычисления. В таком случае указывается пустой тип данных void, и отсутствует оператор return.

Пример функции, не возвращающей значения: spravka(a);

 

void spravka (float a)
{  
}  



Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 393; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.