Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Часть 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; Нарушение авторского права страницы