Подставляемые (встраиваемые) функции. Перегрузка функций
Лабораторная работа 2. Подставляемые (встраиваемые) функции. Перегрузка функций.
Цель работы: изучить подставляемые (встраиваемые) функции и перегрузки функций, научиться разрабатывать программы с использованием перегрузки функций на языке C++.
При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, которая получает на входе числовые данные, выполняет их обработку в соответствии с требованиями задания и выводит результат на экран. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи (ввод данных сопровождайте диалогом). Ограничениями на входные данные является допустимый диапазон значений используемых числовых типов в языке С++.
Теоретические сведения.
Ознакомьтесь с материалом лекции 2.
Задания к лабораторной работе.
Выполните приведенные ниже задания.
- Составьте программу для решения задачи. Определите значение , где есть максимальное из чисел . Разработайте функции нахождения максимального из двух целых и вещественных чисел.
- Составьте программу для решения задачи. Найдите периметр треугольника, заданного координатами своих вершин (считать, что треугольник существует). Разработайте функции нахождения расстояния между двумя точками, заданными своими координатами. Предусмотрите только случаи двумерного и трехмерного пространств.
- Составьте программу для решения задачи. Выясните, что больше: среднее арифметическое или среднее геометрическое трех положительных чисел. Разработайте перегруженные функции нахождения среднего арифметического и среднего геометрического трех целых и вещественных чисел.
- Составьте программу, которая в зависимости от входных данных переводит часы и минуты в минуты или минуты – в часы и минуты. Используйте перегруженные функции. Например, при вводе 134 мин будет выдано значение 2 час 14 мин, а при вводе 2 час 14 мин – значение 134 мин.
Указания к выполнению работы.
Каждое задание необходимо решить в соответствии с изученными методами обработки числовых данных в языке С++. Программу для решения каждого задания необходимо разработать методом процедурной абстракции, используя перегруженные функции. Этапы сопроводить комментариями в коде.
Следует реализовать каждое задание в соответствии с приведенными этапами:
- изучить словесную постановку задачи, выделив при этом все виды данных;
- сформулировать математическую постановку задачи;
- выбрать метод решения задачи, если это необходимо;
- разработать графическую схему алгоритма;
- записать разработанный алгоритм на языке С++;
- разработать контрольный тест к программе;
- отладить программу;
- представить отчет по работе.
Требования к отчету.
Отчет по лабораторной работе должен соответствовать следующей структуре.
- Титульный лист.
- Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
- Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
- Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
- Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
- Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
- Выводы по лабораторной работе.
- Ответы на контрольные вопросы.
Контрольные вопросы
- Чем отличается механизм вызова встраиваемой и обычной пользовательских функций?
- На каком этапе выполнения программы происходит встраивание кода подставляемой функции?
- Почему не рекомендуется встраивать функции с большим кодом?
- Как будет выполняться программа, если размер кода подставляемой функции превосходит допустимый свободный размер памяти?
- С какой целью в программировании реализован полиморфизм функций?
- Каким образом компилятор определяет, какую из перегруженных функций необходимо вызвать в программном коде?
- Могут ли перегруженные функции возвращать результат одного типа? Ответ обоснуйте.