Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа № 6. Использование пользовательских функций




 

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

 

Краткие теоретические сведения

В практике программирования часто встречаются случаи, когда в программе приходится выполнять одни и те же вычисления, но при различных исходных данных. Для исключения повторений одинакового кода и упрощения программы, повторяющиеся вычисления выделяют в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определенный алгоритм, оформленная в виде отдельной синтаксической конструкции, снабжённая именем и допускающая обращение к ней из различных частей общей программы, называется подпрограммой. Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы.

Существует две категории подпрограмм: процедуры и функции.

Процедура — это подпрограмма, которая не возвращает через своё имя результата работы, поэтому она вызывается как отдельный оператор. Процедура «общается с внешним миром» через список параметров. Часть из них будут входными, часть — выходными, т.е. результатом работы.

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

Формально в языках С/С++ нет процедур, а имеются только функции. Если же необходима именно процедура, то достаточно создать функцию, возвращающую тип void.

Чтобы использовать в программе свою собственную функцию, необходимо выполнить три действия:

1. задать прототип функции;

2. вызвать функцию в необходимом месте, например, в функции main()

3. дать определение функции.

Прототип функции — это заголовок функции, который заканчивается точкой с запятой. Прототипы всех функций, используемых в программе, обычно записывают в начале текста программы до определения функций. Прототип необходим для того, чтобы у компилятора была полная информация о типе результата работы функции и о списке параметров, передаваемых в функцию. Когда в тексте программы встретится обращение к функции, то компилятор проверяет правильность её вызова, сверяясь с информацией из прототипа.

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

Определение функции состоит из её заголовка и тела, записанного в виде блока.

 

void main (void) //-----------> тип имя (список_параметров)

{
int count; //---------------------------> объявления_переменных;
for (count = 0; count < 10; count++) cout << count << ' '; // -----> Оператор
}

 

Допустимо записывать определение функций в любой последовательности. Нельзя определять функцию внутри другой функции.

 

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

Список параметров (фактических или формальных — всё равно) записывается в круглых скобках сразу за именем функции. Список параметров может быть пустым, но скобки за именем функции обязательны!

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

Список формальных параметров — это набор требований, которые предъявляет подпрограмма к передаваемым в неё данным. Список фактических параметров записывается в заголовке функции при её определении в скобках. Для каждого параметра необходимо указать тип и имя. Имена формальных параметров локализованы в подпрограмме и дополняют перечень локальных объектов этой подпрограммы.

Между списками фактических и формальных параметров должно выдерживаться полное соответствие по количеству параметров, их типу, порядку следования и способу передачи в функцию. Несоблюдение этих требований в лучшем случае (для программиста) приводит к ошибке на стадии компиляции.

Задание

1. Изучить:

а) правила записи функций различных видов и способов обращений к ним;

б) способы передачи параметров в функцию;

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

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

 

Пример выполнения работы

Условие: Найти максимум из двух чисел. Алгоритм поиска максимума оформить в виде функции.

#include <iostream>

using namespace std;

// 1)Прототип функции

double fmax(double a, double b);

int main()

{

double a = 4, b = 3, max;

cout << "a=" << a << " max=" << b << endl;

// 2)Вызов функции

max = fmax(a, b);

cout << "max=" << max << endl;

return 0;

}

// 3)Определение функции

double fmax(double x, double y)

{

double max;

if(x > y)

max = x;

else

max = y;

return max;

}

Условие: Определить длину окружности и площадь круга по известному радиусу. Определение длины окружности и площади круга оформить в виде отдельных функций.

 

#include <stdio.h> //Директива препроцессора

#define PI 3.1415 //Директива препроцессора

double circlen(double r); //Прототип функции circlen

double circsqr(double r); //Прототип функции circsqr

void main()

{

double r=1; //Объявление переменной r с инициализацией

double len; //Объявление переменной len с инициализацией

len = circlen (r); //Вызов функции circlen

printf("Length=%.1lf\n",len); //Печать результата на экране

double s;

s= circsqr (r); //Вызов функции circsqr

printf("Square = %.1lf\n",s);

}

/*

Функция circlen() возвращает длину окружности радиуса r

*/

double circlen (double r)

{

double d;

d=2*PI*r;

return d;

}

 

/*

Функция circsqr() возвращает площадь круга с радиусом r

*/

double circsqr (double r)

{

double p;

p=PI*r*r;

return p;

}

Задания для самостоятельного выполнения

Лабораторные работы 3 и 4 выполнить с использованием пользовательских функций.

Контрольные вопросы

1. Какие действия следует выполнить, чтобы использовать функцию для решения задачи?

2. Как описывается функция?

3. Как объявляется функция?

4. Роль прототипа?

5. Для чего нужны формальные параметры?

6. Как вызывается функция?

7. Способы передачи параметров?

8. Приемы передачи параметров-массивов?

9. Как передать результаты вычислений из функции?

10. Как используется тип void в описании функций?

11. В каких целях можно использовать оператор return?

12. Передача значений параметров по умолчанию?

13. Указать, при каких условиях целесообразно использовать функции, какие выгоды они предоставляют пользователю.

14. Запишите общий формат объявления функции.

15. Указать, в чем отличие различных видов функций пользователя.

16. Указать способ обращения к функциям пользователя.

17. Указать способы передачи параметров в функцию.

18. Указать способы передачи одномерного массива в функцию.

19. Перечислить, как согласуются формальные и фактические параметры.

20. Пояснить, как и куда осуществляется выход из подпрограммы.

 







Дата добавления: 2014-11-10; просмотров: 1249. Нарушение авторских прав; Мы поможем в написании вашей работы!


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2021 год . (0.006 сек.) русская версия | украинская версия