Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Часть II. Становимся программистами. Функции с одним аргументом. Аргументами функции называют значения, которые передаются функции во время вызова




Функции с одним аргументом

Аргументами функции называют значения, которые передаются функции во время вызова. В следующем примере определяется и используется функция                                                                                {>, кото- рая возвращает квадрат переданного в качестве аргумента числа типа double :

//                         — демонстрирует

// обрабатывающей аргументы includ e             . h>

 

// square возвращает квадрат аргумента

//               — введенное значение

//             — квадрат

double           doubleVar)

{

return doubleVar doubleVar;

 

//        — суммирует

// чисел, зведенных с клавиатуры возведенных в

// квадрат, пока         не введет

//отрицательное число.

// Возвращает сумму квадратов введенных чисел

 

int

 

// бе     цикл

int for(; ; )

 

// введение следующего числа dValue 0;

out << "Введите следующее    "; cin >> dValue;

 

// если оно отрицательное... if (dValue < 0)

// . . . то выходим цикла break;

}

 

// ...иначе вычисляем квадрат числа int value =

 

// теперь добавляем квадрат к

// accumulator

+ value;

 

 

// возвращаем накопленное число return accumulator;

 

int (int   char* pszArgs

Глава 6. Создание функций                                                                     71


« "Эта программа

<< "множественные серии

<< "Введение каждой

<< "заканчивается введением\п"

<< "отрицательного

« "Серии

<< "до тех пор, пока

<< "два отрицательных

 

// Продолжаем суммировать числа... int

do

{

// суммируем последовательность чисел,

// введенных с клавиатуры

cout << " \пВведите следующую последовательность ; accumulatedValue -

 

// теперь выводим суммирования cout << сумма равна "

<<

« "\п";

 

// ...пока возвращаемая сумма не равна О

} while (accumulatedValue != 0) ; cout << "Программа

return 0;

}

По сути, перед вами все та  же программа                                   но теперь она суммирует

квадраты введенных чисел. В  функции () играющее роль параметра число возводится  в  квадрат.     незначительные изменения и в функции sumSequence (): если раньше мы суммировали введенные числа, то теперь суммируем значения, возвращаемые функцией squar e ().

Функции со многими аргументами

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

int                  int

{

return

 

 

Преобразование типов

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

accumulator = accumulator + (int)dValue;

Префикс (int ) перед dValue означает, что программист перед выполнением сум- мирования преобразует переменную dValue из ее текущего типа (в данном случае double) в int . Такая форма записи позволяет преобразовывать значения одного типа к другому.

допускает преобразование любых числовых величин в числовые величины другого типа. Компилятор C++ всегда выполняет приведение типов и без вашего

: вмешательства, но в таком случае для проверки правильности приведения он дол- жен выдавать об этом соответствующее предупреждение. Поэтому во избежание ошибок рекомендуется использовать явное преобразование типов.

 

72                                          Часть //. Становимся программистами


Функция      ()

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

При компиляции программы C++ добавляет некоторый стандартный программ- ный код, выполняемый до        как начинает выполняться функция main (). Этот код настраивает программную среду, в которой выполняется ваша программа, например открывает потоки ввода и вывода по умолчанию.

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

 

C++ позволяет программистам называть несколько разных функций одним и тем же именем Эта возможность называется перефузкой функций (function overloading).

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

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

void

{

некоторой функции

 

void             n)

(

//... выполнение другой функции

}

d)

i

//... выполнение одной функции

}

void                  int

{

//... выполнение одной функции,

// отличной предыдущих

)

Компилятор C++ знает, что функции someFunction (void) ,                                       (int) ,

int ) не одинаковы. В мире компью-

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

Вы знаете, что тип аргумента void указывать  не  обязательно.             Например, и () вызывают одну и ту же функцию. Фактически

функция может иметь сокращенное название, в нашем случае someFunction (), так же как и меня, можно называть просто Стефаном. Если бы Стефанов больше нигде не было, меня всегда могли бы называть только по имени. Но в действительности нас побольше, и если кому-то посчастливится попасть в общество нескольких Стефанов, то к ним придется обращаться по имени и фамилии (кстати, напомню, что меня зовут Стефан Дэвис). Пользуясь полным именем, никто не ошибется, даже если Стефанов будет несколько. Поэтому, пока полные имена функций в профамме уникальны, конфликты между ними невозможны.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 229; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.013 с.)
Главная | Случайная страница | Обратная связь