Программирование >>  Аргументация конструирования 

1 ... 17 18 19 [ 20 ] 21 22 23 ... 108


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

Аргументами функции называют значения, которые передаются функции во время вызова. В следующем примере определяется и используется функции аге {>, которая возвращает квадрат переданного в качестве аргумента числа типа 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 (), так

же как и меня, можно называть просто Стефаном. Если бы Стефанов больше нигде

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

будет несколько. Поэтому, пока полные имена функций в профамме уникальны,

конфликты между ними невозможны.



1 ... 17 18 19 [ 20 ] 21 22 23 ... 108

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика