Использование прототипа функции.Перегрузка функции

Автор: Пользователь скрыл имя, 01 Апреля 2012 в 16:46, лабораторная работа

Описание работы

Цель: понять на конкретном примере назначение прототипа и перегрузки функции.



Объявление функций

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

Работа содержит 1 файл

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

— 138.00 Кб (Скачать)


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

использование прототипа функции.

ПЕРЕГРУЗКА ФУНКЦИИ.

 

Цель: понять на конкретном примере назначение прототипа и перегрузки функции.

 

Объявление функций

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

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

Посредством объявления функции компилятору сообщается ее имя, тип возвращаемого значения и параметра. Объявление функции называется прототипом. Имя функции и список параметров называется сигнатурой функции. Функция может быть объявлена до того, как она определена. Определение функции может идти позже в этом же файле, браться из библиотеки или из указанного пользователем файла.

Объявление функции выглядит так:

тип_возвращаемого_значения  имя_функции (список параметров);

 

Список параметров представляет собой разделенный запятыми список следующего вида:

тип_параметра  имя_параметра

 

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

int Area (int a, int b);

 

При этом прототип функции не обязан содержать имена параметров, а может ограничиться только указанием этих типов.Например,

int Area (int, int);

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

 

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

тип_возвращаемого_значения  имя_функции (список формаль-ных параметров)

{

операторы тела функции;

return возвращаемое значение ;

}

 

Формальные параметры – это параметры, вместо которых будут подставлены фактические значения, передаваемые функции в момент вызова. После вызова функции значение аргумента, соответствующее формальному параметру, используется в теле выполняемой функции. В С++ такие параметры являются вызываемыми по значению (call-by-value). Когда применяется вызов по значению, переменные передаются функции как аргументы, их значения копируются в соответствующие параметры функции, а сами переменные не изменяются в вызывающем окружении.

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

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

 

Пример.

Вычислить при помощи функции полупериметр треугольника.

float Area(int,int,int);

main()

{

int a=random(39);

int b=random(42);

int c=random(81);

cout<<a<<' '<<b<<' '<<c<<"\n";

cout<<Area(a,b,c);

}

float Area(int x, int y, int z)

{return (x+y+z)/2;}

 

Обращение к функции включает в себя имя функции и параметры, которые называются фактическими.

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

 

Передача параметров по ссылке

 

В большинстве языков программирования аргументы в функциях передаются либо при помощи ссылки (by reference) или по значению (by value). В первом случае функция работает непосредственно с переменной, во втором только с её значением. Различие состоит в том, что переменную, переданную по ссылке, функция может модифицировать, а переданную по значению - нет. В стандартном языке С параметры в функции передаются только по значению, и для того чтобы модифицировать ее внутри функции, необходимо в качестве параметра передать указатель на переменную. Это демонстрирует следующий пример:

int inc(int *var)

{

    (*var)++;

}

void main()

{

    int n=0;

    inc(&n);

}

 

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

При использовании ссылок в языке С++ нет необходимости в передаче адреса переменной в функции и в использовании операции * для модификации переменной внутри тела функции.

Рассмотрим этот же пример, но только с использованием ссылки.

int inc(int &var)

{

    var++;

}

void main()

{

    int n=0;

    inc(n);

}

 

 

 

 

Задание на выполнение лабораторной работы

 

       Вариант 1

 

1.     Даны функции

.

Определить

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

 

Вариант 2

 

1.     Даны функции

.

Определить

2.     Написать перегруженную функцию  Dohod, которая вычисляет доход по вкладу. Исходными данными для функции являются: величина вклада, процентная ставка (годовых), и срок вклада (количество дней).

 

Вариант 3

 

1.        Дана функция

.

Определить

2.        Написать функцию Glasn, которая возвращает 1, если символ, полученный функцией в качестве аргумента, является гласной буквой алфавита, и ноль – в противном случае.

 

Вариант 4

 

1.        Дана функция

.

Определить

.

2.        Написать функцию, которая выводит на экран строку, состоящую из одинаковых символов. Длина строки и символ являются параметрами процедуры.

             

Вариант 5

1.     Составить программу для вычисления функции , где - первый корень квадратного уравнения ;  - первый корень квадратного уравнения . Корень уравнения вычислить, используя функцию.

2.     Написать функцию, которая выводит на экран строку, состоящую из звездочек. Длина строки (количество звездочек)  являются параметром функции.

 

Вариант 6

 

1.     Дана функция

.

Определить

.

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

 

Вариант 7

 

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

 

  a=1.7   b=0.9   c=4.5   d=1.8

 

 

 

 

 

 

 

2.     Написать функцию, которая будет добавлять цифру L в конце числа  P.

 

Вариант 8

 

1.     Даны действительные числа . Найти периметр десятиугольника, вершины которого имеют соответственно координаты . Определить функцию вычисления расстояния между двумя точками, заданными своими координатами.

2.     Написать перегруженную функцию, которая по заданным катетам прямоугольного треугольника будет находить длину его гипотенузы.

 

Вариант  9

 

1.     Дана функция

.

Определить

.

2.     Написать перегруженную функцию, которая по заданным координатам двух точек будет находить расстояние между ними.

 

Вариант 10

 

1.     Дана функция

.

Определить

2.     Написать функцию, которая будет удалять из числа рядом стоящие цифры, если их сумма равна S.

 

Вариант 11

 

1.     Даны действительные числа  . Вычислить значение выражения значения , где . Вычисление p(y) оформить функцией.

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

 

Вариант 12

 

1.     Даны функции

.

Определить

2.     Написать перегруженную функцию, которая будет возвращать единицу, если число делиться на 11, и 0 в противном случае.

 

Вариант 13

 

1.     Даны действительные числа a, b, c, d, е. Найти площадь шестиугольника, определив функцию вычисления  площади треугольника по трём его сторонам.

 

a=1.7   b=0.9   c=4.5   d=1.8    е=3

 

 

 

 

 

 

 

2.     Написать функцию, которая меняет местами цифру под номером K в числе A  с цифрой под номером L в числе B.

 

Вариант 14

 

1.     Дана функция

Определить

2.     Написать функцию, которая сортирует цифры числа по возрастанию.

 

Вариант 15

 

1.     Дана функция

Определить

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

 

 

Вопросы к защите лабораторной работы

 

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

2.     Почему функция является основным элементом программы на С++?

3.     Дать определение прототипа. Что даёт программисту использование прототипа в программе?

4.     Какие параметры функции называются формальными, а какие фактическими?

5.     В чём отличие передаче параметров по значению передаче параметров по ссылке?

6.     Когда используется передача параметров по значению, а когда по ссылке? Привести пример.

 

 



Информация о работе Использование прототипа функции.Перегрузка функции