Функция как программный модуль С++.
Пользовательские
функции – неотъемлемая часть программы. Никому не хочется писать один и тот же
код программы несколько раз. Гораздо проще его оформить в виде функции.
Под функцией в
программировании подразумевают именованный фрагмент программного кода, который
может многократно вызываться в программе. По своей структуре функция – это блок
операторов, заключённых в фигурные скобки и имеющих одно общее имя. Функции
могут иметь аргументы и возвращать значения в качестве результата. Результатом
функции может быть практически всё, кроме массива.
Создание и
использование пользовательских функций в С++ состоит из следующих шагов:
1. Сначала нужно
объявить функцию – предоставить её прототип.
2. Определить функцию
– описать, что именно должна делать функция.
3. Вызвать
функцию.
ПРИМЕР:
Определить, является ли введённое пользователем число простым.
В программе будет две функции:
main() – основная функция
программы
checkPrimeNumber() – пользовательская
функция, возвращающая true, если число
является простым. Тип функции можно использовать как int,
поскольку true сводится к 1, а false – к 0, то есть к целым числам.
Чтобы функции могли быть вызваны в
функции main(), нужно
объявить их до функции main. Это не
всегда удобно, учитывая, что код некоторых функций может быть очень длинным.
Поэтому мы можем использовать предварительное объявление функции – описывается
прототип функции (тип возвращаемого значения, имя, параметры), но не пишется
сам код функции. А после функции main можно полностью описать наши функции.
#include
<iostream>
using namespace std;
int checkPrimeNumber(int);
int main()
{
int n;
cout << "Vvedite poloshzitelnoe
chislo";
cin>>n;
if (checkPrimeNumber(n)== true)
cout<<n<<" - prostoe
chislo";
else
cout<<n<<" - ne prostoe
chislo";
cout<<endl;
return 0;
}
int checkPrimeNumber(int n)
{
bool flag = true;
for(int i = 2;i<=n/2; ++i)
{
if (n%i==0)
{
flag =false;
break;
}
}
return flag;
}
Объявление функции
– это предоставление
её
прототипа.
При
этом под прототипом функции принимается заголовок функции без тела функции.
Объявление функции
является оператором, поэтому после прототипа функции нужно обязательно ставить
точку с запятой. Прототип используется компилятором, чтобы понимать, как
работать с памятью и как контролировать этот процесс. В прототипе имена
аргументов можно не указывать. Например, можно предоставить такой прототип:
int checkPrimeNumber(int n);
int checkPrimeNumber(int);
Оба варианта
правильны и для компилятора имеют одно и то же значение. Вызов функции может
осуществляться из любого места программы.
ПРИМЕР 2. Выведем простые числа в заданном
диапазоне.
#include <iostream>
using namespace
std;
int checkPrimeNumber(int);
int main()
{
int n1,n2;
bool flag;
cout << "Vvedite 2 chisla";
cin>>n1>>n2;
for (int i=n1+1;i<n2;++i)
{
flag = checkPrimeNumber(i);
if (flag==true)
cout<<i<<" ";
}
cout<<endl;
return 0;
}
int checkPrimeNumber(int n)
{
bool flag = true;
for(int j = 2; j<=n/2; ++j)
{
if (n%j==0)
{
flag =false;
break;
}
}
return flag;
}
ПРИМЕР 3. Выразим число как сумму простых
чисел.
#include <iostream>
using namespace std;
bool checkPrime(int n);
int main()
{
int n,i;
bool flag = false;
cout << "Vvedite poloshzitelnoe chislo";
cin>>n;
for(i = 2;i<=n/2; ++i)
{
if (checkPrime(i))
{
if (checkPrime(n-i))
{
cout<<n<<"="<<i<<" +
"<<n-i<<endl;
flag = true;
}
}
}
if (!flag)
cout<<n<<" ne summa prostix\n";
return 0;
}
bool checkPrime(int n)
{
int i;
bool isPrime = true;
for(i = 2;i<=n/2; ++i)
{
if (n%i==0)
{
isPrime =false;
break;
}
}
return isPrime;
}
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.