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

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

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

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

Сделаем замечание, касающееся вопроса наименования переменных. Конечно, удобно, если имя переменной несет смысловую нагрузку, которое раскрывает ее назначение в программе. Например, в разработанной программе используются переменные с именами verticalInterval, contourInterval, когда речь идет о высоте сечения рельефа горизонталями и о кратчайшем расстоянии между горизонталями. Другими содержательными именами переменных являются следующие: переменная с именем lowerContourLine, используется для хранения отметки младшей горизонтали, переменная greaterContourLine – для хранения отметки старшей горизонтали. Еще две переменные distanceToLowerContourLine и distanceToGreaterContourLine предназначены для хранения значения расстояния от младшей горизонтали до выбранной точки и значения расстояния от старшей горизонтали до этой точки.

Рассмотрим геодезическую постановку задачи. Определение высоты точки по карте – часто встречающаяся задача при работе с топографическими картами. Как известно, если точка лежит между двумя горизонталями, то ее отметка определяется интерполированием. Для этого через интересующую точку проводят линию между двумя смежными горизонталями, называемую «заложением» и определяют расстояние от меньшей горизонтали до точки и для контроля расстояние от точки до большей горизонтали. Затем вычисляют высоту точки по формулам:

zabolotsk01.wmf zabolotsk02.wmf

zabolotsk03.wmf

где Hmin и Hmах – отметки меньшей и большей горизонталей; h – высота сечения рельефа горизонталями; d – заложение горизонталей; a – расстояние от точки до меньшей горизонтали; b – расстояние от точки до большей горизонтали; Hср – среднее значение высоты искомой точки.

Программа, представленная ниже, иллюстрирует расчет среднего значения высоты точки в задаче определения отметок точек местности по топографической карте. Пусть, например искомая точка находится между младшей горизонталью lowerContourLine со значением 222 м и старшей горизонталью greaterContourLine со значением 224 м и пусть далее заложение горизонталей contourInterval = 5.0 мм, расстояние от точки до меньшей горизонтали distanceToLowerContourLine = 1.0 мм, расстояние от точки до большей горизонтали distanceToGreaterContourLine = 4.0 мм.

pic_16.wmf

Рассмотрим код программы. В программе используется переменные, как с плавающей точкой, так и целочисленные. В строке 06 переменные типа int lowerContourLine и greaterContourLine инициализируются значением 222 и 224 соответственно. В строке 07 объявляется переменная verticalInterval типа int для хранения значения сечения рельефа. В строках 08 переменная contourInterval типа float инициализируются начальным значением 5,0 мм. Далее в строках 09–10 переменная distanceToLowerContourLine инициализируется значением 1,0 мм, а переменная distanceToGreaterContourLine значением 4,0 мм. Данные величины определяются на карте с помощью линейки и представляются в миллиметрах возможно с дробной частью, поэтому тип переменных для них определен как float. Поскольку значение высоты точки может быть дробным числом, поэтому переменные pointHeight_1, pointHeight_2 и pointHeight имеют тип float. В строке 14 вычисляется высота сечения рельефа, переменной verticalInterval присваивается значение выражения greaterContourLine – lowerContourLine. Затем в строке 16 вычисляется высота точки pointHeight_1 от младшей горизонтали и для контроля в строке 17 высота точки pointHeight_2 от старшей горизонтали. Выражения в строках 16 и 17 компилятор читает слева направо и поскольку арифметический оператор «сложение» имеет меньший приоритет по сравнению с арифметическими операторами «умножения» и «деления», то вначале выполняется умножение и деление, а потом сложение или вычитание.

Обратим внимание на особенность оператора деления, которая имеется в С/С++. Например, выполнив в программе такую арифметическую операцию как 9/4 мы не получим ожидаемый результат 2.25, вместо этого результатом будет целое число 2. Этот пример иллюстрирует целочисленное деление, такое деление, при котором отбрасывается дробная часть результата. Чтобы получить результат с дробной частью, об этом надо сообщить компилятору. Для этого делимое или делитель (либо и то и другое) должно быть представлено числом с дробной частью, в результате ответ также представляется числом с дробной частью. Если и делимое, и делитель представлено целым числом, то в результате получается целое число. В приведенном выше примере можно использовать запись 9./4, которая «говорит» компилятору, что число 9.0 является числом с плавающей точкой, тогда результатом деления тоже будет число с плавающей точкой. Можно более наглядно указать тот факт, что делимое принадлежит к вещественным числам, записав его в виде 9.0.

Поскольку все арифметические операторы, в том числе «умножить» и «разделить» выполняются над однотипными операндами, то в выражении verticalInterval*distanceToLowerContourLine вначале происходит выравнивание типов. Компилятор С++ сначала преобразует операнд к типу большого операнда, в нашем случае к типу float, и только потом выполняется арифметическая операция. Таким образом, сначала значение переменной verticalInterval преобразуется в тип float, затем выполняется умножение, и результат умножения verticalInterval*distanceToLowerContourLine дает число с плавающей точкой. Далее выполняется «без проблем» деление, так как и делимое и делитель имеют тип float. И наконец, в строке 16 выполняется сложение, причем значение переменной lowerContourLine тоже расширяется до типа float. Аналогичным образом происходит расширение значения переменных в строке 17. Далее в строке 19 вычисляется высота точки, как среднее значение двух измерений и полученный результат – отметка точки pointHeight выводится на экран. Если вы откомпилируете и запустите данную программу, на экране компьютера появится следующий фраза: «Высота точки 222.4 м».

Выводы

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


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

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

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

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