|
Программирование >> Аргументация конструирования
Функции с одним аргументом Аргументами функции называют значения, которые передаются функции во время вызова. В следующем примере определяется и используется функции аге {>, которая возвращает квадрат переданного в качестве аргумента числа типа double: eDemo - демонстрирует использование фу.чкщ-и:, обрабатывающей аргументы # include -:stdlo. li> #include <iostream.h> square - возвращает квадрат аргумента doubleVar - введенное значение returns - квадрат cioubleVar double square(double doubleVar) { return doubleVar * doubleVar; quence - суммирует последовательность чисел, зведенных с клавиатуры и возведенных в квадрат, пок мватель не введет отрицательное число. Возвращает сум квадратов введенных чисел int sumSequence(void) { бчный цикл int accumulator= О; for (; ; ) I введение следующего числа double dValue = О; cout Введите следующее число: ; cin >> dValue; если оно отрицательное... if (dValue < 0) [ . . . то выходив из цикла break,- ...иначе вычисляем квадрат числа int value = теперь добавляем квадрат к accumulator accumulator accuiriulator + value; возвращаем накопленное число return accumulator; in (in char* pszArgs i ] ) cout Эта программа суммирует\п множественные серии чисел. \п Введение каждой последовательностиХп заканчивается введением\п отрицательного числа.\п Серии последовательностей вБОДЯтся\п до тех пор, пока не всгретятсяХп << два отрицательных числа\г. ; Продолжаем суммировать числа.. . int accumulatedValue; суммируем последовательность чисел, введенных с клавиатуры cout << \пВведите следующую последовательности, ; accumulatedValue sumSequence О ; теперь выводим суммирования cout \пОбцая сумма равна << \п ; ...пока возвращаемая сумма не равна О } while (accumulatedValue != 0) ; cout Программа зазериена\n ; return 0; По сути, перед вами все та же программа но теперь она суммирует квадраты введенных чисел. В функции () играющее роль параметра число возводится в квадрат. Проведены незначительные изменения и в функции sumSequence (): если раньше мы суммировали введенные числа, то теперь суммируем значения, возвращаемые функцией square (). Функции со многими аргументами могут иметь не один аргумент. В этом случае аргументы разделяются запятыми. Например, следующая функция возвращает произведение двух аргументов: int product(int argl, int arg2) return argl*arg2; Преобразование типов В программе содержится оператор, с которым вы раньше не встречались: ; accumulator = accumulator + (int)dValue; Префикс (int) перед dValue означает, что программист перед выполнением сум- мирования преобразует переменную dValue из ее текущего типа (в данном случае : double) в int. Такая форма записи позволяет преобразовывать значения одного типа к другому. С++ допускает преобразование любых числовых величин в числовые величины \ другого типа. Компилятор C + + всегда выполняет приведение типов и без вашего : вмешательства, но в таком случае для проверки правильности приведения он должен выдавать об этом соответствующее предупреждение. Поэтому во избежание ошибок рекомендуется использовать явное преобразование типов. Функции in () Служебное слово main () в нашей стандартной программе означает не что иное, как функцию (!юзможно, с необычными для вас аргументами и не требующую прототипа). При компиляции программы C++ добавляет некоторый стандартный программный код, выполняемый до того, как начинает выполняться функция main (). Этот код настраивает программную среду, в которой выполняется ваша программа, например открывает потоки ввода и вывода по умолчанию. настройки среды выполнения этот код вызывает функцию и лишь тогда происходит операторов программы. При завершении программа вы- ходит из функции main (), после чего вторая часть стандартного кода C++ освобождает занятые программой системные ресурсы и передает управление операционной системе. JlefiezfUfSKa фцша C++ позволяет программистам называть несколько разных функций одним и тем же именем Эта возможность называется перефузкой функций (function overloading). Вообще говоря, две функции в одной программе не могут иметь одинаковых имен, так как компилятор C++ просто не сможет их различить. Однако используемое компилятором внутреннее имя функции включает число и типы аргументов (но не возвращаемое значение), и поэтому следующие функции являются разными: void someFunction(void) ...выполнение некоторой функции Voi tion (int n) ... выполнение другой функции void someFunction(double d) . . . выполнение е::;е одной функции void someFunction(int nl, int n2) ... выполнение еше одной функции, отличной предыдущих Комнилятор С + + знает, что функции someFunction (void) , someFunction (int), int) не одинаковы. В мире компьютеров встречается довольно много таких вещей, для которых можно найти аналогии в реальном мире. Существуют они и для перегрузки функций. Вы знаете, что тип аргумента void указывать не обязательно. Например, SumFunction(void) и SumFunction () вызывают одну и ту же функцию. Фактически функция может иметь сокращенное название, в нашем случае someFunction (), так же как и меня, можно называть просто Стефаном. Если бы Стефанов больше нигде не было, меня всегда могли бы называть только по имени. Но в действительности нас побольше, и если кому-то посчастливится попасть в общество нескольких Стефанов, то к ним придется обращаться по имени и фамилии (кстати, напомню, что меня зовут Стефан Дэвис). Пользуясь полным именем, никто не ошибется, даже если Стефанов будет несколько. Поэтому, пока полные имена функций в профамме уникальны, конфликты между ними невозможны.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |