Практическая работа №15
Тема: Организация простых циклов. Использование функций и прототипов функций
Цель: закрепление знаний, умений и навыков по составлению циклических блок-схем, использованию циклических операторов С++ для решения задач; крепление навыков по описанию и использованию функций и прототипов функций для решения задач.
Вид работы: фронтальная.
Время выполнения: 2 часа.
Теоретический материал:
Процесс разработки программного обеспечения предполагает разделение сложной задачи на набор более простых задач и заданий. В С++ поддерживаются функции как логические единицы (блоки текста программы), служащие для выполнения конкретного задания.
Функции имеют нуль или более формальных параметров и возвращают значение скалярного типа, типа void (пусто) или указатель. При вызове функции значения, задаваемые на входе, должны соответствовать числу и типу формальных параметров в описании функции. Если функция не возвращает значения (т.е. возвращает void), то она служит для того, чтобы изменять свои параметры (вызывать побочный эффект) или глобальные для функции переменные.
Например, функция, возвращающая куб ее вещественного аргумента:
double cube( double x )
{
return x * x * x ;
}
Аргумент х типа double специфицируется вслед за первой открывающей скобкой.
Структура каждой функции совпадает со структурой главной программы (main), поэтому функции иногда еще называют подпрограммами.
Функции могут записываться как до main(), так и после, но в последнем случае требуется указать прототип (описание) функции.
Задания:
1) Напишите функцию для перевода числа из десятичной системы счисления в двоичную. Продемонстрируйте работу функции.
2) Напишите функцию для перевода числа из двоичной системы счисления в десятичную. Продемонстрируйте работу функции.
Ход работы:
В тетрадь оформите блок-схемы (функций и основных программ
и листинги программ
1. Назовём функцию для перевода числа из десятичной системы счисления в двоичную int dectoby(int n), где n – входной параметр, т.е. число в десятичной системе. Для перевода в двоичную систему применим метод вычисления остатка от деления на два. Определяем остаток и целую часть от деления на два, записываем остаток в массив f (результат в двоичной системе), целую часть снова делим на два и т.д. до тех пор, пока целая часть не станет равна нулю. Функция может быть записана так:
int dectoby(int x) //заголовок функции (результат– число целого типа)
{ //начало тела функции
int y; //описание локальной переменной целого типа
while (x!=0) //цикл с предусловием – пока x не равно нулю
{ //начало тела цикла
y=x%2; //переменная y присваивает остаток от деления x на 2
x=x/2; //переменная x присваивает целую часть от деления x на 2
f[i]=y; //элемент массива f под номером i присваивает остаток
i++; //переменная i (номер элемента) увеличивается на единицу
} //закрывается цикл
return f[i];} //функция dectoby возвращает как результат выполнения массив из нулей и единиц, конец функции
В основной программе с клавиатуры вводится значение числа n в десятичной системе. Вызывается функция с входным параметром n. Осуществляется вывод на экран элементов массива f, начиная с последнего по нулевой элемент (первый элемент в массиве имеет номер ноль).
2. Функцию для перевода из двоичной системы в десятичную назовём int bytodec(int f[n]), где f[n] – двоичное представление числа. Число в двоичной системе вводится с клавиатуры по элементам. В функции элементы массива умножаются на два в соответствующей степени и складываются. Полученная сумма – результат выполнения функции, т.е. число в десятичной системе счисления.
Контрольные вопросы и задания:
1) В какой части программы описываются функции?
2) Что такое аргументы функции пользователя?
3) Как задаются параметры по умолчанию?
4) Всегда ли функция возвращает какое-либо значение?
5) Можно ли использовать функцию до её объявления? Почему?
6) Охарактеризуйте назначение прототипов.
Опишите прототип функции для вычисления наибольшего из a и b.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.