Научный журнал
Международный журнал экспериментального образования
ISSN 2618–7159
ИФ РИНЦ = 0,425

С++ ДЛЯ СТУДЕНТОВ КАРТОГРАФОВ И ГЕОДЕЗИСТОВ: УЧЕБНАЯ ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ ПРОГРАММА «ПЕРЕГРУЗКА ФУНКЦИИ»

Заблоцкий В.Р. 1
1 Московский государственный университет геодезии и картографии
1. Заблоцкий В.Р. Особенности преподавания информатики в вузе геодезического профиля на современном этапе. Известия высших учебных заведений // Геодезия и аэрофотосъемка. – 2015. – № 6. – С. 119–125.
2. Заблоцкий В.Р. Программирование на языке С++ для картографов и геодезистов. Учебная программа «Буссоль» с множественным наследованием // Известия высших учебных заведений. Геодезия и аэрофотосъемка. – 2016. – № 1. – С. 105–107.
3. Заблоцкий В.Р. Программирование на языке С++ для картографов и геодезистов: учебная объектно-ориентированная программа «Нивелирная рейка» // Международный журнал экспериментального образования. – 2015. – № 5–1. – С. 89–91.
4. Заблоцкий В.Р. С++ для картографов и геодезистов: учебная объектно-ориентированная программа «Женевская линейка» // Международный журнал экспериментального образования. – 2015. – № 10–1. – С. 25–26.
5. Заблоцкий В.Р. С++ для картографов и геодезистов: учебная программа «Коллимационная погрешность» с условной if-else инструкцией // Международный журнал экспериментального образования. – 2015. – № 12–1. – С.25–26.
6. Заблоцкий В.Р. С++ для картографов и геодезистов: учебная программа «Преобразование угла из радианной меры в градусную» с инструкцией цикла // Международный журнал экспериментального образования. – 2016. – № 6–1. – С. 25–27.
7. Заблоцкий В.Р. С++ для картографов и геодезистов: учебная программа «Уклон ската», иллюстрирующая инструкцию цикла // Международный журнал экспериментального образования. – 2016. – № 4–3. – С. 462–463.
8. Заблоцкий В.Р., Зеленков В.В. Учебная компьютерная программа «ТЕОДОЛИТ». Часть 1. Вычисление горизонтальных углов // Известия высших учебных заведений. Геодезия и аэрофотосъемка. – 2009. – № 4. – С. 90–100.
9. Заблоцкий В.Р. Обучение языку С/С++ на основе программирования учебных геодезических задач // Сборник статей по итогам международной научно-технической конференции, посвященной 230-летию основания МИИГАиК. – Вып. 2, ч. 1. – М.: МИИГАиК, 2009. – С. 199–202.
10. Заблоцкий В.Р., Фам Суан Хоан. Программирование учебных геодезических задач в среде BORLAND C++ BUILDER 6 (консольные приложения) // Известия высших учебных заведений. Геодезия и аэрофотосъемка. – 2008. – № 4. – С. 81–89.
11. Заблоцкий В.Р., Васякин С.А. Применение программы «Калькулятор» в решении учебных геодезических задач. Известия высших учебных заведений // Геодезия и аэрофотосъемка. – 2004. – № 5. – С. 10–34.
12. Журкин И.Г., Заблоцкий В.Р., Степанов С.А. Компьютерное тестирование студентов первого курса по дисциплине «Информатика и программно-алгоритмические языки» // Известия высших учебных заведений. Геодезия и аэрофотосъемка. – 2006. – № 4. – С. 167–185.

Обсуждается учебная программа по программированию на С++ для студентов, обучающихся в геодезическом вузе. Нашей целью является разработка набора типовых учебных задач геодезического содержания [1–12], которые могут использоваться преподавателями и студентами, обучающимися по специальностям картографии и геодезии в качестве домашних заданий и при выполнении учебного практикума. Задача данной работы заключалась в написании программы, иллюстрирующей перегрузку функций, на примере преобразования угла, выраженного в градусной мере в радианную. Известно, что использование перегрузки функций упрощает создание кода программы, позволяя разработчику работать только с одним именем функции. Это становится возможным благодаря тому, что в процессе компиляции программы компилятор C++ принимает во внимание количество аргументов, используемых каждой функцией, и затем вызывает именно ту функцию, которая требуется.

Рассмотрим содержательную постановку задачи. Часто в геодезических расчетах встречаются угловые величины в различном представлении. Наиболее широко используются три формата, а именно, угол представлен отдельно в градусах, минутах и секундах, либо только в градусах и минутах с целой и дробной частью и наконец, только в градусах с целой и дробной частью, то есть без угловых минут и секунд. Для вычислений тригонометрических функций от угловых величин в компьютерных программах, обычно, необходимо перевести значение угла в радианную меру и использовать стандартные математические библиотечные функции. Разработанная программа преобразует угол, представленный в градусной мере в одном из трех, отмеченных выше форматов, в значение радиан. Чтобы избежать дублирования имен функции, C++ позволяет определять несколько функций с одним и тем же именем. Таким образом, перегрузка функции предоставляет компилятору (без участия человека) выбрать среди нескольких функций нужную функцию, на основе количества и типов аргументов всех одноименных функций. Очевидным преимуществом перегрузки функции является то, что она позволяет использовать одно и то же имя для нескольких функций с разными типами параметров. Чтобы использовать перегрузку функции напишем код нескольких функций, выполняющих преобразование угла из градусной меры в радианную, но отличающихся количеством параметров или их типом, с одним и тем же именем. Программа, представленная ниже, иллюстрирует перегрузку функции в задаче преобразования угла из градусной меры в радианную.

Рассмотрим код программы. Функции, которые выполняют преобразование угла из градусной меры в радианную меру, представлены в строках с 04 по 23, как видно все три функции имеют одинаковое имя ConvertingToRadian. Отличие функций состоит в том, что в качестве входных данных эти функции получают значение угла, представленного в трех разных форматах. Первая функция (строки 04–10) в качестве параметров получает три целочисленных значения, значение угла раздельно в градусах, минутах и секундах. В строке 06 угол преобразуется в градусную меру, в виде целой и дробной частей градуса, а затем в строке 07 угол преобразуется в радианную меру. При этом используется именованная константа M_PI, то есть число «пи». Чтобы не потерять дробную часть угла при операции деления в строке 06 явно указывается с помощью десятичной точки, что выполняемое деление должно быть вещественного типа. Вторая функция (строки 11–17) также преобразует значение угла в радианную меру, но в качестве параметров функция получает целочисленное значение градусов и значение минут в виде вещественного числа типа double. Затем выполняется преобразование градусов в радианы, и полученное значение возвращается из функции оператором return. Третья функция (строки 18–23) в качестве параметра получает всего лишь один параметр – значение угла, выраженного в градусах с целой и дробной частями, в виде вещественного числа типа double и преобразует это значение в радианную меру угла. В главной функции main функция ConvertingToRadian вызывается три раза (строка 26, 29 и 32), причем каждый раз с разными аргументами, в первый раз со значением угла 57,29577°, во второй раз со значением угла в виде 57°17,75 и наконец, в третий раз со значением угла в виде 57°17/45?. Нетрудно увидеть, что это один и тот же угол в 1 радиан, но представленный в разных форматах, в виде только градусов, либо в градусах и минутах или же в градусах минутах и секундах. Очевидно, что в результате этих трех вызовов функций получим один и тот же ответ, а именно: угол 57,29577° равен: 1 радиан, или угол 57°17,75 равен: 1 радиан, или угол 57°17/45 равен: 1 радиан. Это как раз и свидетельствует о том, что в процессе выполнении программы компилятором С++ была выполнена перегрузка функции ConvertingToRadian и при каждом вызове перегруженной функции автоматически подставляется требуемый код.

Выводы

Разработана учебная объектно-ориентированная программа на языке С++ для студентов, обучающихся в геодезическом вузе. В программе демонстрируется перегрузка функции в задаче преобразования значения угла, выраженного в угловой мере в трех различных форматах, в радианную угловую меру. Данная программа подчеркивает преимущества объектно-ориентированного программирования на примере преобразования градусной угловой величины в радианную угловую меру.


Библиографическая ссылка

Заблоцкий В.Р. С++ ДЛЯ СТУДЕНТОВ КАРТОГРАФОВ И ГЕОДЕЗИСТОВ: УЧЕБНАЯ ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ ПРОГРАММА «ПЕРЕГРУЗКА ФУНКЦИИ» // Международный журнал экспериментального образования. – 2016. – № 10-1. – С. 20-22;
URL: https://expeducation.ru/ru/article/view?id=10532 (дата обращения: 25.04.2024).

Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1,674