Пятое занятие. Функции

Содержание

Слайд 2

Функция это

Именованная часть программы, которая может быть многократно вызвана из другого участка

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

Слайд 3

Общий вид

Общий вид

Слайд 4

Учим умные слова

Формальные параметры – параметры описанные в функции.
Фактические параметры – параметры

Учим умные слова Формальные параметры – параметры описанные в функции. Фактические параметры
передаваемые в функцию.

Формальные параметры

Фактические параметры

Слайд 5

Учим умные слова

Сигнатура функции – определяет правила использования функции. Обычно сигнатура представляет

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

Слайд 6

Учим умные слова

Семантика функции – определяет способ реализации функции. Обычно представляет собой

Учим умные слова Семантика функции – определяет способ реализации функции. Обычно представляет собой тело функции.
тело функции.

Слайд 7

Что происходит во время вызова функции?

Текущий адрес выполнения кладется в стек
Переход выполнения

Что происходит во время вызова функции? Текущий адрес выполнения кладется в стек
на новый адрес
Выполнения тела функции
Взятия из стека адреса и возврат к выполнению основного кода.

Слайд 8

Возврат из функции

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

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

Слайд 9

Возврат из функции

Возврат из функции

Слайд 10

Типы функций

Системные – хранятся в стандартных библиотеках, и пользователю не нужно вдаваться

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

Слайд 11

Зачем?

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

Зачем? Функцию можно вызвать из различных мест программы, что позволяет избежать повторения
кода.
Одну и ту же функцию можно использовать в разных программах.
Функции повышают уровень модульности программы и облегчают ее проектирование.
Использование функций облегчает чтение и понимание программы и ускоряет поиск и исправление ошибок.

Слайд 12

Практика

Функция определения максимального значения из двух переданных

Практика Функция определения максимального значения из двух переданных

Слайд 13

Расположение функции

Функция должна быть создана до функции вызывающей ее.

Правильно

Не правильно

Расположение функции Функция должна быть создана до функции вызывающей ее. Правильно Не правильно

Слайд 14

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

Что бы иметь возможность создавать функцию в любом месте, используют определение

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

Слайд 15

Варианты фактических аргументов

По значению – передается только значение аргумента, при изменении этого

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

Слайд 16

Практика

Функция возведения в степень

Практика Функция возведения в степень

Слайд 17

Всего лишь набор байт

Функции можно записывать в переменный
Функции можно передавать как параметр

Всего лишь набор байт Функции можно записывать в переменный Функции можно передавать как параметр

Слайд 18

Функция как переменная

Функция как переменная

Слайд 19

Практика

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

Практика Сделать так что бы предыдущая функция вызывала переданную ей функцию.

Слайд 20

Рекурсия

Прямая рекурсия – функция, которая вызывает саму себя.
Косвенная рекурсия – одна или

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

Слайд 21

Пример

Прямая рекурсия

Косвенная рекурсия

Пример Прямая рекурсия Косвенная рекурсия

Слайд 22

Практика

Посчитать число Фибоначчи

Практика Посчитать число Фибоначчи