Научно - Информационный портал



  Меню
  


Смотрите также:



 Главная   »  
страница 1

Общеинженерная практика Лабораторное занятие 9

Тема: Функции

(См. «Основы алгоритмизации и программирования», лекция 11)


Функция — это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение.

Любая программа на C++ состоит из функций, одна из которых должна иметь имя main (с нее начинается выполнение программы).

В C++ функции подразделяются на два вида: 1) встроенные, которые поставляются с библиотеками среды разработки и 2) нестандартные, которые разрабатываются программистом

Функция начинает выполняться в момент вызова. Любая функция должна быть объявлена и определена. Объявление функции должно находиться в тексте раньше ее вызова для того, чтобы компилятор мог осуществить проверку правильности вызова. Объявление функции (прототип, заголовок, сигнатура) задает ее имя, тип возвращаемого значения и список передаваемых параметров. Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках:

тип имя ( [ список_параметров ])

{ тело функции }

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

Пример функции, возвращающей сумму двух целых величин:

#include

#include

using namespace std;

// определение функции

int sum( int a, int b) // объявление функции

{ // тело функции

return (а + b);

}

int main()



{

int a = 2, b = 3, c, d;

c = sum(a,b); // вызов функции

cout <<"d=";cin >> d;

cout <<"5+"<

return 0;

}

В этом примере функция sum определена до функции main, в которой происходит вызов функции sum. Ниже приведен тот же пример, в котором функция sum сначала только объявлена и этого достаточно для вызова ее в функции main, но тогда после функции main обязательно должно идти определение функции.



#include

#include

using namespace std;

int sum( int a, int b); // объявление функции

int main()

{

int a = 2, b = 3, c, d;



c = sum(a,b); // вызов функции

cout <<"d=";cin >> d;

cout <<"5+"<// вызов функции

return 0;

}

// определение функции



int sum(int а, int b) // объявление функции

{ // тело функции

return (а + b);

}

В C++ формальному параметру может задаваться значение по умолчанию, которые размещаются последними в списке параметров. Ниже приведен пример, в котором функция sum чаще всего используется для увеличения числа на один, но может использоваться для суммирования двух чисел:



#include

#include

using namespace std;
int sum(int а, int b=1) // объявление функции

{ // тело функции

return (а + b);

}

int main()



{

int a = 2, c, d;

c = sum(a); // вызов функции с одним параметром

cout <<"d=";cin >> d;

cout <<"3+"<//вызов функции с двумя параметрами

return 0;

}

В C++ предусмотрена возможность перегрузки функций, т.е. использование нескольких функций с одинаковыми именами, но различными списками параметров (сигнатурой). Ниже приведен пример, в котором дважды объявляется функция sum с различной сигнатурой.



#include

#include

using namespace std;

int sum( int a, int b) // объявление функции

{ // тело функции

return (a + b);

}

double sum(int a, double b) // объявление функции



{ // тело функции

return (a + b);

}
int main()

{

int a = 2, b = 3, c, d;



double m;

c = sum(a,b); // вызов функции

cout <<"d="; cin >> d;

cout <<"5+"<

cout <<"m="; cin >> m;

cout <<"5+"<

return 0;

}

Задачи для самостоятельной работы


  1. Написать функцию, которая вычисляет объем цилиндра. Параметрами функции должны быть радиус и высота цилиндра (v=πR2H).

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

  3. Написать функцию, которая сравнивает два целых или два вещественных числа и возвращает результат сравнения в виде одного из знаков: >, < или =.

  4. Написать функцию, которая вычисляет значение ab. Числа а и b могут быть любыми целыми положительными числами.

  5. Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа.

  6. Написать функцию Dohod, которая вычисляет доход по вкладу. Исходными данными для функции являются: величина вклада, процентная ставка (годовых) и срок вклада (количество дней). Количество дней в году считать равным 365.

  7. Написать функцию ZV, которая выводит на экран строку, состоящую из звездочек. Длина строки (количество звездочек) является параметром функции. Используя функцию ZV написать функцию, которая выведет звездочки в несколько строк.

  8. Написать функцию, которая выводит строку, состоящую из одинаковых символов. Длина строки и символ являются параметрами функции.


Решения




  1. #include

#include

using namespace std;


double mys(double r, double h) // объявление функции

{ // тело функции

return (3.14*r*r*h);

}

int main()



{

double r,h,s;

do

{cout <<"r="; cin >>r;



if (r<=0) cout<<"r doljno >0"<

}

while(r<=0);



do

{cout <<"h="; cin >>h;

if (h<=0) cout<<"h doljno >0"<

}

while(h<=0);



s = mys(r,h); // вызов функции

cout <<"s="<

return 0;

}




#include

#include

using namespace std;
int mymaks(int a, int b) // объявление функции

{ // тело функции

if (a>b)return (a);

else return (b);

}

double mymaks(double a, double b) // объявление функции



{ // тело функции

if (a>b)return (a);

else return (b);

}

int main()



{

int a1,a2;

double b1,b2;

cout <<"a1="; cin >>a1;

cout <<"a2="; cin >>a2;

cout<<"max iz a1 i a2 =" <

cout <<"b1="; cin >>b1;

cout <<"b2="; cin >>b2;

cout<<"max iz b1 i b2 =" <

return 0;

}




#include

#include

using namespace std;
char mysr(int a, int b) // объявление функции

{ // тело функции

if (a>b)return ('>');

else if (a

else return ('=');

}

char mysr(double a, double b) // объявление функции



{ // тело функции

if (a>b)return ('>');

else if (a

else return ('=');

}

int main()



{

int a1,a2;

double b1,b2;

cout <<"a1="; cin >>a1;

cout <<"a2="; cin >>a2;

cout<

cout <<"b1="; cin >>b1;

cout <<"b2="; cin >>b2;

cout<

return 0;

}


  1. #include

#include

using namespace std;


int myst(int a, int b) // объявление функции

{ // тело функции

int i,p=1;

for (i=1;i<=b;i++)

p=p*a;

return (p);



}

int main()

{

int a,b;


do

{

cout <<"a="; cin >>a;



if (a<=0)cout<<"a doljno >0"<

}

while (a<=0);



do

{

cout <<"b="; cin >>b;



if (b<0)cout<<"b doljno >=0"<

}

while (b<0);



cout<

return 0;

}




#include

#include

#include

using namespace std;


float Procent(float x, int p) // объявление функции

{

return x*p/100;



}

int main()

{

float x;


int p;

printf("\nvvedite chislo: ");

scanf("%f",&x);

printf("\nvvedite procent: ");

scanf("%i",&p);

printf("\n%i%% ot %4.1f = %4.1f",p,x,Procent(x,p));

getch();

return 0;

}




#include

#include

#include

#include

using namespace std;
float Dohod(float summ, float stavka, int srok) // объявление функции

{

return summ*stavka/365/100*srok;



}

int main()

{

float summ, stavka;



int srok;

printf("\nUkagite dannye:\n");

printf("\nVelichina vklada = ");

scanf("%f",&summ);

printf("\nProcentnaja stavka (godovyh) = ");

scanf("%f",&stavka);

printf("\nSrok vklada = ");

scanf("%i",&srok);

printf("\n Dohod = %6.2f rub.",Dohod(summ, stavka, srok));

getch();


return 0;

}




#include

#include

#include

using namespace std;


void ZV(int l) // объявление функции

{

for (int i=1; i<=l; i++)



printf ("*");

}

void nZV(int n, int l) // объявление функции



{

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

{ZV(l); printf("\n");}

}

int main()



{

int n, l;

printf("\nvvedite dlinu stroki: ");

scanf("%i",&l);

printf("\nvvedite kol-vo strok: ");

scanf("%i",&n);

printf("\nresultat:\n");

nZV(n,l);

getch();

return 0;

}




#include

#include

#include

using namespace std;


void stroka(int s, int l) // объявление функции

{

for (int i=1; i<=l; i++)



printf ("%c",s);

}
int main()

{

char s;


int l;

printf("vvedite simvol: ");

scanf("%c",&s);

printf("\nvvedite dlinu stroki: ");

scanf("%i",&l);

printf("\nzadannaja stroka:\n");

stroka(s,l);

getch();


return 0;

}



страница 1

Смотрите также: