- •Лабораторная работа №5
- •Оглавление
- •Функция типа void
- •Обмен данными между программой и функцией, между функциями
- •Обмен данными через глобальные переменные
- •Механизм параметров
- •Виды формальных параметров
- •Параметр значение
- •Параметр указатель
- •Параметр ссылка
- •Параметр – константа
- •Параметр по умолчанию
- •Параметр функция
- •Требования к выполнению лабораторной работы
- •Требования к выполнению первой задачи варианта
- •Требования к выполнению второй задачи варианта
- •Требования к выполнению третьей задачи варианта
- •Варианты
- •Пример оформления отчета задания 1
- •Контрольные вопросы.
Лабораторная работа №5
Тема: Модульное программирование. Функции.
Цель: получить навыки по
Реализации алгоритма в виде подпрограммы – функции или подпрограммы - процедуры
Передаче данных в подпрограммы
Использованию пользовательских подпрограмм при разработке программ.
Оглавление
ЛАБОРАТОРНАЯ РАБОТА №5 1
ЛАБОРАТОРНАЯ РАБОТА №5 1
Модульное программирование. Подпрограммы 1
Теория функций 1
Функция с типом 2
Функция типа void 4
Обмен данными между программой и функцией, между функциями 5
Обмен данными через глобальные переменные 5
Механизм параметров 5
Виды формальных параметров 6
Параметр значение 6
Параметр указатель 7
Параметр ссылка 8
Параметр – константа 8
Параметр по умолчанию 9
Параметр функция 10
Способы передачи параметров 10
Передача по значению 11
Передача по адресу 11
Передача по ссылке 11
Правила использования механизма параметров 11
Требования к выполнению лабораторной работы 11
Требования к выполнению первой задачи варианта 12
Требования к выполнению второй задачи варианта 12
Требования к выполнению третьей задачи варианта 12
Варианты 12
Пример оформления отчета задания 1 17
Контрольные вопросы. 20
ЛАБОРАТОРНАЯ РАБОТА №5
Модульное программирование. Подпрограммы
Теория функций
Подпрограмма – это специальным образом оформленный фрагмент программы, которому присваивается ИМЯ.
Язык Си и С++ поддерживает два вида подпрограмм: функция с типом и функция с типом void.
С каждой подпрограммой связаны следующие понятия:
определение функции;
вызов подпрограммы на выполнение;
объявление функции.
Определения функций в программе размещаются до функции main.
Функция с типом
Функция используется для оформления алгоритма, результатом работы которого может быть только одно значение простого или ссылочного типа.
Согласно этому определению функцию можно сравнить с выражением.
Формат определение функции с типом
[КП] специф.типа/имя типа ИМЯ ФУНКЦИИ ([список формальных параметров])
{
ОПЕРАТОРЫ ТЕЛА ФУНКЦИИ
[return [выражение]];
}
Если тип функции не указан, то действует правило по умолчанию и функция имеет тип int.
Список формальных параметров используется для передачи данных в функцию.
Тип результата – это имя простого или ссылочного типа.
Чтобы функция корректно вернула результат, необходимо в теле функции предусмотреть хотя бы один оператор return Выражение.
Выражение (константа, переменная, сложное выражение, вызов функции) определяет результат возвращаемый функцией
Вызов функции
Используется для активизации алгоритма, который определен в функции.
Формат вызова
ИМЯ ФУНКЦИИ ([список фактических параметров])
Вызов функции с типом можно указывать в тех конструкциях языка, где допустимо использование выражения.
Примеры определения функций с типом
Пример 1. Функция типа int. Наибольший общий делитель двух целых чисел
Следующая диаграмма позволяет уяснить:
что возвращает функция и возвращает ли вообще – т.е. определить тип функции;
какие данные являются входными для алгоритма этой функции
int NOD(int a, int b)
{
if(a==0 || b==0)
return (a+b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
return a;
}
Пример 2. Функция типа double.
Вычислить расстояние между двумя точкам на плоскости.
double R_len (double X1, double Y1, double X2, double Y2)
{
return (sqrt((X1- X2)* (X1- X2)+ (Y1- Y2)* (Y1- Y2));
}
//Вызов
int main()
{
double X1, Y1, X2, Y2, R;
printf(“Введите координаты двух точек на плоскости”);
scanf(“%lf %lf %lf %lf”, &X1, &Y1, &X2, &Y2);
R=R_len(X1, Y1, X2, Y2);
printf(“R=%lf”,R);
}
Пример 3. Функция, результат которой логическое значение (истина =1. ложь 0).
Сравнение на равенство вещественных чисел с заданной точностью eps.
const double eps=1e-3;
int RealEq(const double x, const double y )
{
return (fabs(x-y)<=eps);
}
int _tmain(int argc, _TCHAR* argv[])
{
float x=123.455789;
double y=123.455789;
printf("x-y=%lf", fabs(x-y));
if(RealEq(x,y))
printf("yes");
else
printf("no");
}
