Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Локальные и глобальные переменные

Лабораторная работа № 6

Функции

Функция - это блок программного кода, не входящего в основную программу и выполняющего определенную задачу.

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

Первая причина состоит в подходе «разделяй и властвуй» и делает разработку программ более управляемой.

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

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

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

Имя функции — это любой правильно написанный идентификатор.

 

Синтаксис прототипа имеет следующий вид:

 

Тип_функции имя_функции ([тип параметр1, тип параметр2,…]);

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

Существуют 3 способа объявления функции:

- прототип функции записывается в другой файл и затем подключается в текущий файл с помощью директивы #include;

- прототип записывается в этом же файле до имени главной программы main();

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

Используем второй способ объявления функции.

Определение функции состоит из заголовка функции и ее тела. Заголовок функции подобен прототипу и состоит из типа возвращаемого значения функции, имени функции и параметров функции:

 

Тип_функции имя_функции ([тип параметр1,,…]) //заголовок функции

{ тело функции

return возвращаемое значение; }

 

Тело функции состоит из операторов языка С++. В качестве возвращаемого значения после оператора return могут быть использованы имена переменных (например, return х;), константные значения (например, return 1;), арифметические выражения (например, return 5*х*х+7;), логические выражения, функция будет возвращать либо значение «true», либо «false». Тип этого значения должен совпадать с типом функции, указанным в прототипе.

Также функция может содержать несколько операторов return либо может не иметь ни одного оператора return, в этом случае функция имеет тип возвращаемого значения void. Функции могут принимать или не принимать параметры, могут возвращать значение или не возвращать значение.

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

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

Функции, имеющие тип void, называются не возвращающими значения и их вызов отличается от вызова обычных функций:

 

Имя (параметр1, параметр2,….); //синтаксис функции, не возвращающей значение

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

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

Рассмотрим несколько примеров создания функций.

 

Пример 1: Написать функцию square для вычисления квадратов целых чисел от 1 до 10.

 

 

Функция square активизируется или вызывается в main вызовом square(х). Функция создает копию значения х в параметре у. Затем square вычисляет у * у. Результат передается в ту точку main, из которой была вызвана square, и затем этот результат выводится на экран. Благодаря структуре повторения for этот процесс повторяется десять раз. Описание square показывает, что эта функция ожидает передачи в нее целого параметра у. Ключевое слово int, предшествующее имени функции, указывает, что square возвращает целый результат. Оператор return в square передает результат вычислений обратно в вызывающую функцию.

 

Пример 2. Написать функцию возведения целого числа в целую положительную степень.

 

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

 

 

Локальные и глобальные переменные

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

Переменные, объявленные внутри некоторого блока программы, имеют область видимости, ограниченную этим блоком. Блок в программе выделяется фигурными скобками. К этим переменным можно получить доступ только внутри этого блока. После завершения блока объявленные в нем переменные удаляются.

Переменные, объявленные вне тела какой либо функции (в том числе главной функции), называются глобальными.

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

Если имя локальной переменной совпадает с именем глобальной переменной, то локальная переменная во время выполнения того блока, где она объявлена, перекрывает глобальную переменную.

Примеры использования локальных и глобальных переменных

 

Пример 4. Использование локальных переменных и параметров функции

 

 

 

Пример 5. Использование глобальных и локальных переменных

 

 

 

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

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...