Реферат Курсовая Конспект
ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ ПРИ РАЗРАБОТКЕ ПРОГРАММ - раздел Программирование, Лабораторная Работа 6 &nbs...
|
Лабораторная работа 6
ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ ПРИ РАЗРАБОТКЕ ПРОГРАММ
Цель работы
Целью лабораторной работы является получение практических навыков в использовании функций при разработке программ.
Темы для предварительной проработки
Использование параметра - ссылки
void fun (int &р)
{ ++p;
cout << "p = " << р << endl;
}
void main ( )
{
int x = 10;
fun( x );
cout << "x=" << x << endl;
}
В результате будет выведена информация: р=11и х=11.
При использования аргумента-указателя программа будет иметь вид:
Double sgr (double);// Прототип функции sqr
. . . . . . . . .
int main ( )
{
cout << "5**2 = " << sgr (5) << endl; // Вызов функции
}
При записи прототипа можно перечислять только типы формальных элементов без имен, и в конце необходимо ставить символ ";", а в описании функции этот символ после заголовка не записывается.
¾ в последних версиях языка С++ появилась возможность передавать данные по умолчанию. В этом случае при написании функции аргументам присваиваются начальные значения, которые могут иметь все аргументы или часть из них. В результате удовлетворяются следующие требования: если какому-либо аргументу присвоено значение по умолчанию, то все аргументы, следующие за этим параметром (т.е. записанным правее), должны иметь значения по умолчанию. Таким образом, список параметров делится на две части: параметры , не имеющие значения по умолчанию , и параметры, которые имеют такие значения.
При вызове функции для параметров, не имеющих значений по умолчанию, обязательно должен быть фактический аргумент, а для параметров, имеющих значения по умолчанию, фактические аргументы можно опускать, если эти значения не надо изменять.
Если для некоторого параметра, который имеет значение по умолчанию, опущен фактический аргумент, то и для всех последующих (т.е. записанных позже) параметров фактические аргументы должны быть опущены, т.е. их значения передаются в функцию по умолчанию, например, опишем три функции :
void funct1 ( float x, int y, int z =80 )
{
cout << "x = " << x << " y= " << y << "z=" << z << endl;
}
void funct2 ( float x, int y = 25 , int z = 100 )
{
cout << "x=" << x << "y=" << y << "z=" << z << endl;
}
void funct3 ( float x=3.5 , int y= 40, int z =200 )
{
cout << "x = " << x << "y = " << y << "z = " << z << endl;
}
main ( )
{
funct1 ( 5.1 , 10 );// по умолчанию один аргумент ¾ z
funct2 ( 10.2 );// по умолчанию два аргумента ¾ y ,z
funct3 ( );// по умолчанию все аргументы
}
На экране будет выведено: x =5.1 y = 10 z = 80
X =10.2 y = 25 z = 100
X =3.5 y = 40 z = 200
Из этих иллюстрационных программ видно , что аргумент по умолчанию ¾ это тот, значение которого задано при описании заголовка функции, а при ее вызове этот аргумент можно не указывать.
Если вместо параметра, заданного по умолчанию при обращении к функции, записывается другое значение фактического параметра, то значение по умолчанию подавляется заданным фактическим значением. Так, например, в последнем программном фрагменте при вызове функции funct (13.5, 75);на экране будет выведено :
x = 13.5 y =75 z = 80, т.е. z- принято по умолчанию.
Использование массивов - параметров функций
В качестве аргументов (параметров) функций могут быть не только переменные, но и массивы. В этом случае можно использовать как массивы фиксированного размера, так и неопределенного (массивы переменной длины). При использовании массивов фиксированной длины в заголовке функции в списке формальных аргументов указывается тип массива и его размер, например:
Vоid sort (int mas [ 30 ]); .
Если описывается функция с массивом переменной длины, то в заголовке указывается тип массива неопределенного размера, и обязательно еще один параметр, с помощью которого задается размерность массива, например:
Р=стол
Р=стул
В качестве параметров функций можно использовать не только одномерные, но и многомерные массивы. При этом используются массивы как фиксированной размерности , так и неопределенной длины.
При использовании многомерного массива фиксированного размера в заголовке функции указываются значения размерностей массива, например:
void fun1 (int mat [7][10]);// используется матрица mat(7,10)
Если используется многомерный массив неопределенной длины, то неопределенным может быть только одно измерение размерности, которое должно быть первым, например:
void fun2 ( int mat [ ] [10], int rows, int cols );
Пример Для заданной матрицы произвести вычисление среднего значения каждого ее столбца с использованием функции ввода размерности матрицы, функции ввода матрицы и функции получения среднего значения столбцов.
#include <iostream .h>
const int mincol = 1;
const int maxcol = 20;
const int minrow = 2;
const int maxrow = 30;
//Функция getnum ( )для ввода количества строк и столбцов
int getnum (const char *elemtype , int low , int high )
{
int n;
Do
{
Do
{ s1 =s;
h = (b -a ) /n;
s = ( fun (a) +fun (b) ) / 2;
for ( i = 1; i <= n-1; i++)
s += fun ( a + i *h );
s *= h; n *= 2; }
while ( fabs ( s-s1 ) > e );
return s; }
main ( )
{
float y;
y = ft ( 20 , 2 , 2, 3.0, fn1 ) +ft ( 20, 0, 1.0, fn2 );
cout << "y=" << y << endl;
}
Результат выполнения программы :
Y = 1.29012
Квадрат числа = 100.
Используя оператор return можно также организовать досрочный выход из функции.
Если из функции надо передать не одно, а несколько значений, то можно либо использовать глобальные переменные, либо массивы.
Имя функции ¾ это константа - указатель на функцию, который указывает на адрес точки входа (адрес первой машинной команды) функции. Следует отметить, что возможно также описание и указателей переменных на функции. Для этого используется операция разыменования "*", функции описанные таким образом должны возвращать указатель на тип, т.е. его адрес.
В С++ определено несколько способов передачи и возвращения результата вычислений, наиболее широко используемыми являются рассмотренные ранее:
¾ вызов функции с передачей параметров с помощью формальных аргументов - значений;
¾ вызов функции с передачей адресов с помощью параметров - указателей;
¾ вызов функций с использованием ссылок, когда доступ к передаваемым параметрам обеспечивается с помощью альтернативного имени (синонима);
¾ вызов функций с передачей данных посредством глобальных переменных, например:
#include < iostream.h >
int a, b, c;
sum ( )
main ( )
{
cin >> a >> b;
sum ();
cout << c << endl;
}
sum( )
{ c = a + b ; }
¾ вызов функций с использованием параметров, заданных по умолча-нию, при этом можно использовать либо все аргументы, либо их часть.
При вызове функции, у которой аргументы заданы "по умолчанию", соблюдается такое правило : если какой - либо аргумент используется по умолчанию, то и все последующие аргументы должны быть использованы со значениями по умолчанию.
Пример Составить функцию, которая в качестве аргумента получает натуральное число, проверяет его на простоту. Составить главную программу, вызывающую эту функцию.
#include<iostream.h>
#include<conio.h>
#include<math.h>
bool k;
double ost;
bool f(int n){
for(int i=2;i<n;i++)
{
ost=fmod(n,i);
if(ost==0)
return false;
}
return true;
}
void main(void){
int n;
cout<<"vvod n: ";
cin>>n;
if (f(n)==false)
cout<<"not simple";
else cout<<"simple";
getch();
}
//---------------------------------------------------------------------------
– Конец работы –
Используемые теги: использование, функций, разработке, программ0.074
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ ПРИ РАЗРАБОТКЕ ПРОГРАММ
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов