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

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

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

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

УТВЕРЖДАЮ

Директор ИК

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

«____»_____________2011 г.

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

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

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

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

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

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

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

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

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

УДК 519.6

ББК 00000

А00

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

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

УДК 519.6

ББК 00000

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

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

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

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

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

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

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

Рецензент

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

В.Н. Шкляр

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

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

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

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

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

ЛАБОРАТОРНАЯ РАБОТА № 8

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

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

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

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

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

()

{

}

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

();

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

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

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

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

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

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

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

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

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

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

#include

#include

float step ( float a, int b )

{

int i; float p=1;

if (a0 ) return ( -1 ) ;

for ( i = 1 ; i

return p ;

}

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

*/

void main(void)

{

float x, rezu int y;

cout

cinxy;

rezult=step(x,y);

cout

getch();

}

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

Блок-схема:

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

rezult=step(3,5)

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

cout

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

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

# include

# include

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

void main ( void )

{

int x = 5, y = 10 ;

cout

cout

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

cout

cout

getch();

}

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

{

int x;

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

}

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

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

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

Пример 3. Написать функцию swap с использованием ссылок.

# include

# include

void swap ( int a, int b) // функция использует ссылки на переменные

{

int x;

x=a; a = b; b = x; // переменные a и b меняются местами

}

void main ( void )

{

int m = 10, n = 20, x = m, y = n; // x, y — ссылки на переменные m, n

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

cout

getch();}

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

Если в качестве параметра функции используется массив, есть лишь один способ – это передача его по ссылке. Имя массива является указателем на его первый элемент, поэтому при вызове функции в качестве ее параметра достаточно указать имя массива.

Пример 4. Получить массив ci = ai + bi.Написать функции ввода и вывода элементов массивов.

#include

#include

#include

void vvod_mas ( int x[100], int n ); /* прототип функции vvod_mas

х – имя массива, 100 – максимальное количество элементов, n –количество элементов в массиве х; сама функция описана после главной функции */

void rezultat ( int x[100], int n ) // описание функции вывода

{

int i;

for ( i = 0; in; i++ )

cout

}

void main(void)

{

int i, kol ;

int a[100], b[ 100 ], c[100];

cout

cinkol;

cout

vvod_mas (a, kol ); //вызов функции ввода для массива

cout

vvod_mas(b , kol); //вызов функции ввода для массива

for ( i = 0; ikol; i++ )

c[i] = a[i] + b[i];

cout

rezultat( c , kol ); //вызов функции вывода для массива

getch();}

void vvod_mas( int x [100], int n ) // описание функции ввода

{

int i;

for ( i = 0; in; i++ )

{

cout

cinx[i];

}

}

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

Варианты заданий к лабораторной работе № 8

Вариант 1. Даны действительные числа S, T. Получить

где.

Вариант 2. Даны действительные числа S, T. Получить

, где.

Вариант 3. Дано действительное число Y. Получить

,где

Вариант 4. Даны действительные числа A, B, C. Получить

.

Вариант 5. Даны действительные числа S, T. Получить

,

где .

Вариант 6. Даны действительные числа x, y, z. Получить

.

Вариант 7. Даны действительные числа S, T, A0, …, A12. Получить

, где

Вариант 8. Даны действительные числа A0,…A6. Получить для x=1, 3, 4значения

, где

Вариант 9. Даны натуральные числа m, n, целые числа А1, …, An ; B1, …, Bm;C1, …, C10.Получить:

.

Вариант 10. Даны натуральные числа k, n, m, действительные числа Х1,…,Xk, Y1, …,Yn , Z1,…,Zm. Получить:

t=max(y1, …, yn)+max(z1, … zm)+1+(max(x1, … xk))2.

Вариант 11.Даны действительные числа S,T. Получить

H2(S,T) + MIN (H(S-T,T), H2(S-T, S+T), H(1,1) ), где

H(A,B)=

Вариант 12. Даны два действительных числа. Написать функцию, которая сравнивает их и меняет местами, если квадрат первого числа больше квадрата второго числа.

Вариант 13.Даны три действительных числа x, y, z. Получить, где.

Вариант 14. Даны действительные числа x, y, натуральное число b. Получить:

, где.

Вариант 15. Даны действительные числа x, y, z. Получить:

s = f(2x, y) + f(x, z-5) + f(xy,3 z), где.

Содержание отчета

  • цель работы;
  • задание;
  • код программы;
  • блок-схема;
  • результаты работы программы;
  • выводы по работе.

Список литературы

1. Ален И. Голуб. Правила программирования на С и С++. Пер. с англ.: – М.: Вильямс, 2001. – 241 с.

2. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2010.

3. Прата С. Язык программирования С++. Лекции и упражнения. СПб.: Питер, 2003. – 645 с.

Учебное издание

МАМОНОВА Татьяна Егоровна

ПРОГРАММИРОВАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ В С++

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

по курсу «Информатика» для студентов I курса, обучающихся по направлениям 220000 – «Мехатроника и робототехника»,

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

Статьи к прочтению:

Уроки C++ с нуля / Урок #15 — Функции в C++


Похожие статьи: