Чтение онлайн

ЖАНРЫ

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

 17: cout << b;

 18: cout << "equals c: ";

 19: cout << c << endl;}

 20: else

 21: cout << "a-b does not equal c: " << endl;

 22: return 0;

 23: }

3. Введите программу из упражнения 2; скомпилируйте, скомпонуйте и запустите ее на выполнение. Введите числа 20, 10 и 50. Вы получили результат, который и ожидали? Почему нет?

4. Проанализируйте эту программу и спрогнозируйте результат:

1: #include <iostream.h>

2: int main

3: {

4: int а = 1, Ь = 1, с;

5: if (с = (a-b))

6: cout << "The value of с is: " << с;

7: return 0;

8: }

5. Введите,

скомпилируйте, скомпонуйте и запустите на выполнение программу из упражнения 4. Каков был результат? Почему?

День 5-й. Функции

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

• Что такое функция и из чего она состоит

• Как объявлять и определять функции

• Как передавать параметры функциям

• Как возвращать значение функции

Что такое функция

Функция по своей сути — это подпрограмма, которая может манипулировать данными и возвращать некоторое значение. Каждая программа C++ имеет по крайней мере одну функцию main, которая при запуске программы вызывается автоматически. Функция main может вызывать другие функции, те, в свою очередь, могут вызывать следующие и т.д.

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

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

Различают два вида функций: определяемые пользователем (нестандартные) и встроенные. Встроенные функции являются составной частью пакета компилятора и предоставляются фирмой-изготовителем. Нестандартные функции создаются самим программистом.

Рис. 5.1. Когда программа вызывает функцию, управление переходит к телу функции, а затем выполнение программы возобновляется со стро­ки, следующей после вызова

Возвращаемые значения, параметры и аргументы

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

int myFunction;

объявляет, что функция myFunction возвращает целочисленное значение.

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

int myFunction(int someValue, float someFloat);

Это объявление означает, что функция myFunction не только возвращает целое число, но и принимает два значения в качестве параметров: целочисленное

и вещественное.

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

int theValueReturned = myFunction(5,6.7);

Здесь целая переменная theValueReturned инициализируется значением, возвращаемым функцией myFunction, и что в качестве аргументов этой функции передаются значения 5 и 6,7. Тип аргументов должен соответствовать объявленным типам параметров.

Объявление и определение функций

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

Объявление функции

Существует три способа объявления функции.

• Запишите прототип функции в файл, а затем используйте выражение с #include, чтобы включить его в свою программу.

• Запишите прототип функции в файл, в котором эта функция используется.

• Определите функцию перед тем, как ее вызовет любая другая функция. В этом случае определение функции одновременно и объявляет ее.

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

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

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

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

Прототипы функций

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

Рис. 5.2. Составные части прототипа функции.

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

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