Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Понятие о функции

Функция языка Си и процедурная абстракция

Как отмечалось ранее, применение абстракции позволяет повысить качество декомпозиции. Язык Си позволяет реализовать один из видов абстракции, который принято называть процедурной абстракцией. Такой вид абстракции основан на применении подпрограмм. В процедурной абстракции используется способ, называемый абстрагированием через параметризацию. Понятие параметров функции знакомо читателю по работе с библиотечными функциями.

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

Прежде всего, отметим, что в языке Си предусмотрены две категории функций:

· Обычные функции.

· Встроенные функции или inline функции (стандарт С99).

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

Рассмотрим компоненты этого определения:

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

· Автономность – важнейшая характеристика функции. Язык Си обеспечивает синтаксическую независимость функции от другого программного кода.

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

При работе с функциями языка Си следует различать три понятия:

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

· Объявление функции (прототип).

· Вызов функции.

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

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

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

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

<== предыдущая лекция | следующая лекция ==>
Понятие об абстракции и инкапсуляции | Определение функции
Поделиться с друзьями:


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


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



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




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