НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
УТВЕРЖДАЮ
Директор ИК
____________ М.К. Сонькин
«____»_____________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 – «Автоматизация технологических процессов и производств».
Статьи к прочтению:
- Пример 4.3.4-1. ввод данных с помощью функции inputbox( ).
- Пример 4.5.2-4. написать процедуру-function, которая вычисляет значение факториала заданного числа n.
Уроки C++ с нуля / Урок #15 — Функции в C++
Похожие статьи:
-
Решить пример из лабораторной работы №1 с помощью функций, написанных на vba .
Лабораторная работа №2 Цель : научиться создавать и применять функции на языке Visual Basic for Application. Задание: Решить пример из лабораторной…
-
Пример 9.9 использование указателей для нахождения среднего значения массива n целых чисел.
Int mean (int *iPtr, int n) { int index; long sum; if (n0) { for (index=0, sum=0; index sum+=*(iPtr+index); return sum/n; // возвращает целое sum / n…