Теория программирования — функции

Подпрограмма — это небольшой фрагмент кода основной программы, который выполняет определенное задание/действие.

В свою очередь подпрограммы делятся на два вида:

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

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

Main, как бы это странно не звучало – это функция. Она возвращает в операционную систему (в большую программу) некое значение – результат своей работы.

Функция состоит из заголовка и тела функции.

Заголовок функции состоит из трех частей:

  • тип значения, которое возвращает функция. Например int. После выполнения, функция возвращает в программу, из которой её вызывали, целое значение. Для того, чтобы функция ничего не возвращала пишем тип void.
  • имя функции.Совет по поводу придумывания имен функций – имя должно нести смысл и быть осознанным, чтобы и другой человек, посмотрев на название функции – понял, что она выполняет. Например: void init_timer1 (void); void calk_different_variables (void);
  • типы и количество аргументов (параметров) функции (задаются в скобках).Иными словами в скобках указываются значения, которые будут переданы в функцию. Если же никаких параметров функция принимать не будет, то пишем void.

Далее в фигурных скобках задаём тело функции. Мы даём вводные того, как должна работать функция. Важный момент, если подпрограмма возвращает результат своей деятельности (какое-либо значение) то в конце тела функции должна стоять команда (инструкция) return.

Напишем небольшую программку.

Теперь представим, что созданная нами функция function_comparison  принимает два параметра (два аргумента) целого типа, которым присвоены имена w и d. В теле самой функции w и d используются, как обычные переменные. Параметры записанные в заголовке функции называются формальными.

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

#include <_________ . h> — команда «приказывает» компилятору включить информацию из стандартной библиотеки в код будущей прошивки.

int function_comparison (int w, int d); — объявление функции.

После того, как в основной программе происходит вызов функции function_comparison (2,3); программа начинает искать объявление функцию с именем function_comparison, которая примет эти параметры. Параметры, что передаются в функцию в основной программе, называются фактическими параметрами.

Если объявления функции не было – программа не с компилируется, а если было – передаст управление вызываемой функции. После вызова, подпрограмма создаёт переменные и d и присваивает им значение 2 и 3. Когда всё выполнено – управление переходит к основной программе, а переменные и d удаляются.

Когда в основной программе происходит вызов функции function_comparison (a,b), то снова создаются переменные и d и им присваиваются значение переменных a и b (4 и 2 соответственно). Выполнение функции и выдача результата никак не повлияют на значение оригинальных переменных.

Еще один интересный момент. Область видимости переменных.

Переменные w и d доступны только внутри функции, в которой они объявлены (то есть в теле функции function_comparison). За пределами функции эти переменные не существуют.

Если представить, что какой-то злой рок произойдет и переменные с названием w и d будут объявлены в основной программ, и в функции function_comparison – не стоит беспокоится – это совершенно разные переменные и ничего общего между ними не будет.

При  объявлении функции  можно не указывать имена конкретных формальных параметров, а только их типы и количество.

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

Основное предназначение оператора return —  прекращения выполнения функции. Он схожий с оператором break в циклах.

Продолжение следует…

Картотека программирования

ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ!


About alexlevchenko

Ценю в людях честность и открытость. Люблю мастерить разные самоделки. Нравится переводить статьи, ведь кроме того, что узнаешь что-то новое - ещё и даришь другим возможность окунуться в мир самоделок.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Copy This Password *

* Type Or Paste Password Here *