Функции Введение Определение. Прототип, Реализация, Вызов. Формальные и

Скачать презентацию Функции Введение Определение. Прототип, Реализация, Вызов. Формальные и Скачать презентацию Функции Введение Определение. Прототип, Реализация, Вызов. Формальные и

40978-lec_7_functions.ppt

  • Количество слайдов: 13

>Функции Введение  Определение.  Прототип, Реализация, Вызов.  Формальные и Фактические параметры, Возвращаемое Функции Введение Определение. Прототип, Реализация, Вызов. Формальные и Фактические параметры, Возвращаемое значение. Рекурсивные функции

>Введение. Экспериментально показано, что наилучшим способом создания и поддержки больших программ является их конструирование Введение. Экспериментально показано, что наилучшим способом создания и поддержки больших программ является их конструирование из маленьких фрагментов, или модулей, каждый из которых более управляем, чем сложная программа. Программные модули могут быть реализованы в виде функций. Функции можно использовать для выполнения каких-либо специфических задач, которые могут возникать в разных местах программы. Каждая функция должна выполнять одну хорошо определенную задачу. Имя функции должно наглядно отражать данную задачу, что способствует успешному повторному использованию. Если вы не можете выбрать подходящее имя выражающее суть работы функции, то возможно на нее возложено слишком много различных задач. Обычно лучше разбить такую функции на несколько более мелких.

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

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

>Прототип. Прототип - это явное объявление функции, которое предшествует определению функции.  Типы аргументов Прототип. Прототип - это явное объявление функции, которое предшествует определению функции. Типы аргументов и возвращаемого значения при объявлении функции должны соответствовать типам аргументов и возвращаемого значения в определении функции. <тип возвращаемого значения> <имя функции>(<список аргументов>); Отсутствие точки с запятой в конце прототипа функции является синтаксической ошибкой.

>Реализация. Тело функции - это составной оператор, содержащий операторы, определяющие действие функции. <тип возвращаемого Реализация. Тело функции - это составной оператор, содержащий операторы, определяющие действие функции. <тип возвращаемого значения> <имя функции>(<список аргументов>) { <объявления локальных переменных и операторы> } Точка с запятой после правой круглой скобки, закрывающий список параметров в описании функции, является синтаксической ошибкой. Повторное определение параметра функции как локальной переменной этой функции является синтаксической ошибкой.

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

>

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

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

>Функция может возвращать некоторое (одно !) значение. Это возвращаемое значение и есть результат выполнения Функция может возвращать некоторое (одно !) значение. Это возвращаемое значение и есть результат выполнения функции, который при выполнении программы подставляется в точку вызова функции, где бы этот вызов ни встретился. Допускается также использовать функции не имеющие аргументов и функции не возвращающие никаких значений. Действие таких функций может состоять, например, в изменении значений некоторых переменных, выводе на печать некоторых текстов и т.п..

>Функция возвращает значение если ее выполнение заканчивается оператором return, содержащим некоторое выражение. Указанное выражение Функция возвращает значение если ее выполнение заканчивается оператором return, содержащим некоторое выражение. Указанное выражение вычисляется, преобразуется, если необходимо, к типу возвращаемого значения и возвращается в точку вызова функции в качестве результата. Если оператор return не содержит выражения или выполнение функции завершается после выполнения последнего ее оператора (без выполнения оператора return), то возвращаемое значение не определено. Для функций, не использующих возвращаемое значение, должен быть использован тип void, указывающий на отсутствие возвращаемого значения. Если функция определена как функция, возвращающая некоторое значение, а в операторе return при выходе из нее отсутствует выражение, то поведение вызывающей функции после передачи ей управления может быть непредсказуемым.

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