Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
}
Сначала управление передаётся первой инструкции после открывающей скобки, затем поочередно выполняются все команды до инструкции return ( которая в данном случае не требует аргумента ). Эта инструкция передаёт управление вызывающей функции.
«Инструкцияreturn вvoid -функциях является необязательной. Если она отсутствует, то выполнение функции прекращается при достижении закрывающей фигурной скобки.»
[ Советы ]
Функции с аргументами...85
Функции без аргументов используются редко, так как связь с такими функциями односторонняя, т.е. осуществляется только посредством возвращаемых значений. Аргументы функций позволяют установить двустороннюю связь — через передаваемые параметры и возвращаемые значения.
Функции с одним аргументом...85
Аргументами функции называют значения, которые передаются функции во время вызова. В следующем примере определяется и используется функция square( ) , которая возвращает квадрат переданного в качестве аргумента числа типа double :
/* SquareDemo — демонстрирует использование функции с аргументом */
#include
#include
#include
using namespace std ;
_________________
85 стр. Глава 6. Создание функций
/* square — возвращает квадрат аргумента doubleVar — введённое значение return — квадрат doubleVar */
double square( double doubleVar )
{
return doubleVar * doubleVar ;
}
/* sumSequence — суммирует последовательность чисел, введённых с клавиатуры и возведённых в квадрат, пока пользователь не введёт отрицательное число. Возвращает сумму квадратов введённых чисел */
double sumSequence( void )
{
/* Бесконечный цикл */
double accumulator=0.0 ;
for ( ; ; )
{
/* Ввод следующего числа */
double dValue = 0 ;
cout << "Введите следующее число: " ;
cin >> dValue ;
/* Если оно отрицательное... */
if ( dValue < 0 )
{
/* ...то выходим из цикла */
break ;
}
/* ...иначе вычисляем квадрат числа */
double value = square( dValue ) ;
/* Теперь добавляем квадрат к accumulator */
accumulator = accumulator + value ;
}
/* Возвращаем сумму */
return accumulator ;
}
int main( int nNumberofArgs , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */
cout << "Эта программа суммирует "
<< "несколько последовательностей чисел.\n"
<< "Ввод каждой последовательности "
<< "заканчивается\nвводом "
<< "отрицательного числа. \n"
<< "Последовательности вводятся "
<< "до тех пор, пока\nне встретятся "
<< "два отрицательных числа\n" ;
/* Продолжаем суммировать числа... */
_________________
86 стр. Часть 2. Становимся функциональными программистами
double accumulatedValue ;
for ( ; ; )
{
/* Суммируем последовательность чисел, введённых с клавиатуры */
cout << " \nВведите следующую последовательность\n" ;
accumulatedValue = sumSequence( ) ;
/* Выход из цикла */
if ( accumulatedValue <= 0.0 ) { break ; }
/* Выводим результат суммирования */
cout << "\nОбщая сумма равна "
<< accumulatedValue
<<" \n" ;
}
cout << "Программа завершена\n" ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
По сути, перед вами всё та же программа FunctionDemo , но теперь она суммирует квадраты введённых чисел. В функции square( ) играющее роль аргумента число возводится в квадрат. Проведены незначительные изменения и в функции sumSequence( ) : если раньше мы суммировали введённые числа, то теперь суммируем значения, возвращаемые функцией square( ) .
Функции с несколькими аргументами...87
Функции могут иметь не один аргумент. В этом случае аргументы разделяются запятыми. Например, следующая функция возвращает произведение двух аргументов:
int product( int arq1 , int arg2 )
{
return arg1 * arg2 ;
}
Функция main( )...87
Служебное слово main( ) в нашей стандартной программе означает не что иное, как функцию ( возможно, с необычными для вас аргументами ), не требующую прототипа.
При компиляции программы С++ добавляет некоторый стандартный программный код, выполняемый до того, как начинает выполняться функция main( ) . Этот код настраивает программную среду, в которой выполняется ваша программа, например открывает потоки ввода и вывода по умолчанию.
После настройки среды выполнения этот код вызывает функцию main( ) , и лишь тогда происходит выполнение операторов программы. При завершении программа выходит из функции main( ) , после чего вторая часть стандартного кода С++ освобождает занятые программой системные ресурсы и передаёт управление операционной системе.
_________________
87 стр. Глава 6. Создание функций
►Перегрузка функций...88
С++ позволяет программистам называть несколько разных функций одним и тем же именем. Эта возможность называется перегрузкой функций ( function overloading).
Вообще говоря, две функции в одной программе не могут иметь одинаковых имён , так как компилятор С++ просто не сможет их различить.
Однако используемое компилятором внутреннее имя функции включает число и типы аргументов ( но не возвращаемое значение ), и поэтому следующие функции являются разными:
void someFunction( void )
{
/* ...Выполнение некоторой функции */
}
void someFunction( int n )
{
/* ...Выполнение другой функции */
}
void someFunction( double d )
{
/* ...Выполнение ещё одной функции */
}
void someFunction( int n1 , int n2 )
{
/* ...Выполнение ещё одной функции, отличной от предыдущих */
}
Компилятор С++ знает, что функции someFunction( void ) , someFunction( int ) , someFunction( double ) , someFunction( int , int ) не одинаковы. В мире компьютеров встречается довольно много таких вещей, для которых можно найти аналогии в реальном мире. Существуют они и для перегрузки функций.
Вы знаете, что тип аргумента void указывать не обязательно. Например, SumFunction( void ) и SumFunction( ) вызывают одну и ту же функцию. Фактически функция может иметь сокращённое название, в нашем случае someFunction( ) , так же как и меня можно называть просто Стефаном. Если бы Стефанов больше нигде не было, меня всегда могли бы называть только по имени. Но в действительности нас побольше, и если кому-то посчастливится попасть в общество нескольких Стефанов, то к ним придётся обращаться по имени и фамилии ( кстати, напомню, что меня зовут Стефан Дэвис ). Пользуясь полным именем, никто не ошибётся, даже если Стефанов будет несколько. Поэтому, пока полные имена функций в программе уникальны, конфликты между ними невозможны.
Читать дальшеИнтервал:
Закладка: