Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л_8. (1 пара) Функции+.doc
Скачиваний:
8
Добавлен:
05.11.2018
Размер:
177.66 Кб
Скачать

МИНИСТЕРСТВО ПО НАУКЕ И ОБРАЗОВАНИю РФ

Государственное образовательное учреждение высшего профессионального образования

«Национальный исследовательский

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

УТВЕРЖДАЮ

Директор ИК

____________ М.К. Сонькин

«____»_____________2011 г.

Т.Е. Мамонова Лабораторная работа № 8

Программирование собственных функций в C++

Методические указания по выполнению лабораторных работ

по курсу «Информатика»

для студентов направлений 220000 – «Мехатроника и робототехника»,

220700 – «Автоматизация технологических процессов и производств».

Издательство

Томского политехнического университета

2011

УДК 519.6

ББК 00000

А00

Мамонова Т.Е.

А00 Программирование собственных функций в C++. Методические указания по выполнению лабораторных работ по курсу «Информатика» для студентов I курса, обучающихся по направлениям 220000 – «Мехатроника и робототехника», 220700 – «Автоматизация технологических процессов и производств» / Т.Е. Мамонова. – Томск: Изд-во Томского политехнического университета, 2011. – 12 с.

УДК 519.6

ББК 00000

Методические указания рассмотрены и рекомендованы к изданию методическим семинаром кафедры интегрированных

компьютерных систем управления ИК

«1» сентября 2011 г.

Зав. кафедрой ИКСУ

доктор технических наук _________________ А.М. Малышенко

Председатель учебно-методической

комиссии _________________ В.Н. Шкляр

Рецензент

Доцент ИКСУ ИК НИ ТПУ кандидат технических наук

В.Н. Шкляр

© ГОУ ВПО «Томский политехнический

университет», 2011

© Мамонова Т.Е., 2011

© Оформление. Издательство Томского

политехнического университета, 2011

Лабораторная работа № 8

Программирование собственных функций в C++

Цель работы. Изучить методику создания собственных функций на языке C++, приобрести навыки программирования задач с использованием собственных функций в программе Borland C++.

Теоретическая часть

Функция – это часть программы, предназначенная для решения определенной задачи. Обычно функцию вызывают несколько раз. Существуют стандартные математические функции, описанные, например, в заголовочном файле <math.h>, и другие стандартные функции. Пользователь может написать собственные функции. В тексте программы саму функцию, либо ее прототип располагают перед главной функцией (функцией с именем main). Прототип функции содержит тип результата, имя функции, список и тип параметров функции и заканчивается знаком «;». В программе можно использовать несколько функций с одним именем, но с разными параметрами по количеству или типу. Компилятор сам по этим параметрам определяет, какую функцию использовать в конкретный момент времени. Такие функции называют перегруженными.

Основная форма описания функции:

<тип результата > < имя функции > (<список параметров>)

{

<тело функции>

}

Прототип функции:

<тип результата > < имя функции > (<список параметров>);

Тип результата определяет тип значения, которое возвращает функция с помощью оператора return. Если оператор return используется без параметров, это означает немедленный выход из функции и возврат в вызывающую программу. В теле функции может быть несколько операторов return, может не быть ни одного. Если функция не возвращает значение, указывается тип void (пустой).

Имя функции – любой идентификатор.

Список параметров состоит из перечня типов и имен параметров, разделенных запятыми. В этом списке для каждого параметра должен быть указан тип, например:

float func ( int x, int y, float z); //прототип функции func с тремя параметрами

Тело функции – набор операторов.

Функция может не иметь параметров, но круглые скобки обязательны, например,

void main ( ) – описание главной функции;

clrscr ( ) – обращение к функции очистки экрана.

Пример 1. Написать программу с функцией step, которая возводит вещественное число a в натуральную степень b.

Код программы:

#include <iostream.h>

#include <conio.h>

float step ( float a, int b )

{

int i; float p=1;

if (a < 0 ) return ( -1 ) ;

for ( i = 1 ; i <= b ; i++ ) p*= a ;

return p ;

}

/*Эта функция возвращает значение " -1 ", если основание отрицательное и значение ab, если основание неотрицательное.

*/

void main(void)

{

float x, rezult; int y;

cout <<" Vvedite osnovanie i pokasatel steneni: ";

cin>>x>>y;

rezult=step(x,y);

cout<<x<<"^"<<y<<" = "<<rezult;

getch();

}

Результаты работы программы:

Блок-схема:

В программе можно использовать возвращаемое функцией значение, запоминая его в переменной с помощью оператора присваивания, например,

rezult=step(3,5)<<endl;

Можно использовать обращение к функции в операторе вывода cout:

cout << “3 ^ 5 = “ << step( 3, 5) << endl;

Функция не меняет значение своих параметров, если они передаются по значению (см. пример 1). Если возникает необходимость изменения параметров функцией, они передаются по ссылке, используя адреса переменных.

Пример 2. Написать функцию swap, которая меняла бы свои аргументы местами.

# include <iostream.h>

# include <conio.h>

void swap ( int *a , int *b ); // прототип функции swap; *a,*b – указатели

void main ( void )

{

int x = 5, y = 10 ;

cout<<"Do\n";

cout << "x=" << x << " y=" << y << endl;

swap ( &x, &y ) ; // в функцию swap передаются адреса переменных

cout<<"Posle\n";

cout << "x="<< x << " y="<< y << endl;

getch();

}

void swap ( int *a, int *b ) // функция swap: a и b меняются местами

{

int x;

x = *a ; *a = *b ; *b = x ;

}

Результат выполнения программы:

Обратите внимание, что при вызове функции в нее передаются адреса переменных (&a, &b), в заголовке функции ставится знак * перед именами переменных и далее внутри функции этот знак также ставится перед именами переменных.

Есть еще один способ изменения параметров функцией – передача в функцию ссылки на переменную. Ссылка представляет собой второе имя переменной, перед ней при инициализации ставится знак &, например, &aa = a; ( аа – ссылка – второе имя переменной а).