Опубликован: 02.02.2011 | Уровень: для всех | Доступ: свободно
Лекция 3:

Подставляемые (встраиваемые) функции. Перегрузка функций

< Лекция 2 || Лекция 3: 12 || Лекция 4 >

Лабораторная работа 2. Подставляемые (встраиваемые) функции. Перегрузка функций.

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

При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, которая получает на входе числовые данные, выполняет их обработку в соответствии с требованиями задания и выводит результат на экран. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи (ввод данных сопровождайте диалогом). Ограничениями на входные данные является допустимый диапазон значений используемых числовых типов в языке С++.

Теоретические сведения.

Ознакомьтесь с материалом лекции 2.

Задания к лабораторной работе.

Выполните приведенные ниже задания.

  1. Составьте программу для решения задачи. Определите значение x=\max\left(a,\max\left(\frac{a}{2},\cos b\right)\right)\cdot\max(2a-b,b), где max(x, y) есть максимальное из чисел x, y. Разработайте функции нахождения максимального из двух целых и вещественных чисел.
  2. Составьте программу для решения задачи. Найдите периметр треугольника, заданного координатами своих вершин (считать, что треугольник существует). Разработайте функции нахождения расстояния между двумя точками, заданными своими координатами. Предусмотрите только случаи двумерного и трехмерного пространств.
  3. Составьте программу для решения задачи. Выясните, что больше: среднее арифметическое или среднее геометрическое трех положительных чисел. Разработайте перегруженные функции нахождения среднего арифметического и среднего геометрического трех целых и вещественных чисел.
  4. Составьте программу, которая в зависимости от входных данных переводит часы и минуты в минуты или минуты – в часы и минуты. Используйте перегруженные функции. Например, при вводе 134 мин будет выдано значение 2 час 14 мин, а при вводе 2 час 14 мин – значение 134 мин.

Указания к выполнению работы.

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

Следует реализовать каждое задание в соответствии с приведенными этапами:

  • изучить словесную постановку задачи, выделив при этом все виды данных;
  • сформулировать математическую постановку задачи;
  • выбрать метод решения задачи, если это необходимо;
  • разработать графическую схему алгоритма;
  • записать разработанный алгоритм на языке С++;
  • разработать контрольный тест к программе;
  • отладить программу;
  • представить отчет по работе.

Требования к отчету.

Отчет по лабораторной работе должен соответствовать следующей структуре.

  • Титульный лист.
  • Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
  • Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
  • Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
  • Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
  • Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
  • Выводы по лабораторной работе.
  • Ответы на контрольные вопросы.

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

  1. Чем отличается механизм вызова встраиваемой и обычной пользовательских функций?
  2. На каком этапе выполнения программы происходит встраивание кода подставляемой функции?
  3. Почему не рекомендуется встраивать функции с большим кодом?
  4. Как будет выполняться программа, если размер кода подставляемой функции превосходит допустимый свободный размер памяти?
  5. С какой целью в программировании реализован полиморфизм функций?
  6. Каким образом компилятор определяет, какую из перегруженных функций необходимо вызвать в программном коде?
  7. Могут ли перегруженные функции возвращать результат одного типа? Ответ обоснуйте.
< Лекция 2 || Лекция 3: 12 || Лекция 4 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!