Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вызов функций

Читайте также:
  1. Аппроксимация, интерполяция и экстраполяция функций
  2. Бессознательное как философская проблема. Трактовка генезиса содержания и функций бессознательного в классическом психоанализе.
  3. Билет 35. Значение лимбической системы в регуляции различных функций.
  4. В числе функций государственного земельного контроля можно выделить информационную, превентивную, а также функцию пресечения.
  5. Вероятности результатов измерения координаты и импульса. Пространство волновых функций.
  6. Взаимосвязь основных и конкретных функций управления
  7. Внешние угрозы и вызовы национальной безопасности России.
  8. Вопрос 27 особенности функций Российского государства на современном этапе
  9. Вопрос 33 Квалификация функций государства
  10. Вопрос № 4 . Понятие и система функций органов прокуратуры, их общая характеристика.

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

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

1. Если функция имеет тип возвращаемого значения void, т.е. не возвращает никакого значения, тогда функция вызывается отдельно стоящим оператором:

имя_функции([список_аргументов]);

где список_аргументов задаёт список величин, называемых аргументами, которые передаются в функцию при её вызове.

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

При вызове функции, описанные в заголовке параметры, инициализируются передаваемыми значениями аргументов, например:

system ("pause"); – вызывается функция system(), которой передаётся в качестве аргумента строка "pause".

Если параметры у функции отсутствуют, то и при описании функции, и при её вызове после имени функции следует оставлять пустые круглые скобкиfun();

2. Если функция возвращает значение, тогда её вызов может быть использован как операнд в выражении. Например, если определение функции в программе имеет вид:

int myFun (int x, int y){

int z = x + y;

return z;

}

то в этом случае её вызов (из main() или из другой функции) может быть использован следующим образом:

int t = myFun (4, 6) + 5;

При данном вызове функции myFun() переменные x и y инициализируются значениями 4 и 6 соответственно, а по завершении работы функция возвращает в точку вызова значение, используемое для вычисления выражения, которым инициализируется целочисленная переменная t.

Если функция возвращает значение, то её вызов может быть также использован при выводе на экран компьютера:

cout<< myFun (4, 6)<<endl;

При вызове функции компилятор использует прототип функции для сравнения типов аргументов с типами параметров. Язык С++ не предусматривает автоматического преобразования типов в случаях, когда аргументы не совпадают по типам с соответствующими им параметрами. Язык С++ обеспечивает строгий контроль типов. В случае несовместимых типов компилятор фиксирует ошибку “ Type mismatch… ”.

// Пример 5.1. Написать программу, содержащую вызов функции,

// которая по заданному признаку обеспечивает поиск либо большего,

// либо меньшего из двух заданных величин.

#include <iostream>

using namespace std;

int max_min (int p, int x, int y); // прототип функции max_min()

int main() {

int pr, a, b, rez;

cout<<"Vvedi priznak (1 – max, 0 – min) "; cin>>pr;

cout<<"Vvedi a, b: "; cin>>a>>b;

rez = max_min (pr, a, b); // вызов функции max_min()

cout<<"rez = "<<rez<<endl;

system("pause");

}

int max_min (int p, int x, int y){ // определение функции max_min()

int z;

if(p == 0)

if(x < y)z = x; else z = y;

else

if(x > y)z = x; else z = y;

return z;

}

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

// Пример 5.2. Написать программу для вычисления6!, 7!, 8!, 9!, 10!,

// 11!, 12!. Вычисление n! оформить в виде функции.

#include <iostream>

using namespace std;

long fact (int); // прототип функции fact()

int main() {

for(int n = 6; n <= 12; n++)

cout<<"n= "<<n<<" f= "<< fac t(n)<<endl; // вызов fact()

system("pause");

}

long fact (int n) { // определение функция fact()

long f = 1;

for(int i = 1; i <= n; f*= i++);

return f;

}

// Пример 5.3. Определить количество цифр в заданном целом числе num,

// используя функцию kolCifr().

#include <iostream>

using namespace std;

int kolCifr (long); // прототип функции kolCifr()

int main() {

long num;

cout<<"Enter num: "; cin>>num;

cout<<"Num = "<<num<<endl;

cout<<" kolcif =: "<< kolCifr (num)<<endl;

system("pause");

}

int kolCifr (long num){ // определение функции kolCifr()

int k = 0;

 

while(num){

k++; num = num / 10;

}

return k;

}

// Пример 5.4. Вычисление значения полинома в точке х по схеме

// Горнера оформить в виде функции.

// y = an * xn + an-1 * xn-1 + …+ a1 * x + a0 =

// (((an * x + an-1) * x + an-2) * x +…+ a1) * x + a0;

#include <iostream>

using namespace std;

double value (int n, double x); // прототип функции value()

int main() {

int n; double x;

cout<<"Enter n, x:"<<endl; cin>>n>>x;

cout<<" y = " <<value(n, x) << endl; // вызов функции value()

system("pause");

}

double value (int n, double x){ // определение функции value()

double coeff, v = 0;

int i = n;

while(i >= 0){

cout<<"Enter coefficient for degree "<<i<<" for x ";

cin>>coeff; v = v*x + coeff;

i--;

}

return v;

}




Дата добавления: 2015-02-16; просмотров: 84 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав