Ф-ции. Объявление ф-ции. Вызов ф-ции. Рекурсивный вызов ф-ции. — КиберПедия 

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Ф-ции. Объявление ф-ции. Вызов ф-ции. Рекурсивный вызов ф-ции.

2018-01-03 250
Ф-ции. Объявление ф-ции. Вызов ф-ции. Рекурсивный вызов ф-ции. 0.00 из 5.00 0 оценок
Заказать работу

Любая программа состоит только из ф-ций. Ф-ция – это независимая совокупность объявлений и инструкций, приводящая к решению определенной задачи. Каждая ф-ция имеет имя, для вызова ф-ции. В каждой программе есть только одна ф-ция именем main, с к-рой начинается выполнение программы. При вызове ф-ции ей могут быть переданы параметры посредством переменных. Ф-ция может возвращать значение, это значение- оновной результат ф-ции. С использованием ф-ции в Си связаны: 4)определение ф-ции 5)объявление ф-ции 6)вызов ф-ции

Если ф-ция вызывается до определения ее в программе или определение ф-ции находится в другом исходном файле,то вызов ф-ции необходимо предворять объявлением ф-ции. Прототип позволяет компилятору выполнить проверку аргументов в определении и вызове ф-ции. Прототип имеет такой же формат как и определение ф-ции, он он не имеет тела ф-ции и заканчивается «;»

Имена параметров в списке формальных параметров могут быть произвольными или отсутствовать. Поскольку такие имена имеют область действия до конца объявления и никакой нагрузки не несут. Если прототип ф-ции не задан, а встретился вызов ф-ции, то компилятор создает неявный прототип. В этом случае ф-ция имеет тип, возвращающий значения int и класс памяти extern. Обычно прототипы помещаются перед main, иногда их выносят в отдельный заголовочный файл, подключаемый директивой #include.

Int rus(unsigned char c)

{ if (c>=’A’)&&(c<=’ё’)

return 1;

else return 0;

}

это сама ф-ция, а е прототип выглядит так:

int rus (unsigned char);

Вызов

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

С использованием ф-ции в Си связаны:

4) определение ф-ции

5) объявление ф-ции

6) вызов ф-ции

Вызов ф-ции имеет формат

выр ([список_выр])

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

Выполнение вызова ф-ции происходит следующим образом:

1.Вычисляется выражение в списке выражений и производится необходимое преобразование

Ф-ции. Объявление ф-ции. Вызов ф-ции. Рекурсивный вызов ф-ции.

типов. Если известен прототип ф-ции, то тип результирующего выражения сравнивается с типом соответствующего формального параметра и если они не совпадают, то результат приводится к типу формального параметра либо выдается предупреждение. 2.Происходит присвоение значений фактических аргументов формальным параметрам. Они копируются в стек, при этом 1-ый аргумент соответствует 1-ому формальному параметру, и т.д. 3.Управление передается на первый оператор ф-ции. 4.Управление передается в точку вызова после выполнение оператора return

Вывод: Вызываемая ф-ция работает с копией фактически аргументов, поэтому никакое изменение значений формальных параметров на значения аргументов, с которых была сделана копия???. Т.е. формальные и фактические параметры изолированы друг от друга.

В общем случае существует два стиля передачи параметров ф-ции:

Call – by – value

(c передачей значений параметров ф-ции)

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

Call - by – reference

(с передачей адресов переменной)

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

Рекурисвные ф-ции.

Любая ф-ция в Си может быть вызвана рекурсивно. При каждом вызове для формальных параметров и переменных с классом памяти auto, register выделяется новая память. Переменные с классом памяти static не требуют новой памяти при каждом рекурсивном вызове. Параметры предыдущих незавершенных вызовов не затираются, но при этом они не доступны. Допустимо любое число рекурсивных ф-ций.

Пр: n!= 1 n=0

n(n-1)! n>0

long fact(int n)

{ return (n < = 1)? 1: n*fact(n-1);

}

 

 


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

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.