Scientific journal
International Journal of Experimental Education
ISSN 2618–7159
ИФ РИНЦ = 0,425

1
1

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

Содержательная постановка задачи заключается в следующем. Требуется рассчитать уклоны линии ската, проведенной на топографической карте, по заданным значениям заложения горизонталей, масштаба карты и высоты сечения рельефа. Известно, что уклон ската определяется как тангенс угла наклона линии склона с максимальной крутизной по формуле:

zabolots01.wmf

где h сечение рельефа местности; s – горизонтальное положение. Единицей измерения уклона служат проценты, промилле или доли единицы, которые используется в нашей программе. В программе «УКЛОН СКАТА» пользователь вводит с клавиатуры один раз значение знаменателя масштаба карты и высоты сечения рельефа, a затем многократно в цикле заложение горизонталей. Для каждой величины заложения горизонталей программа выводит на экране дисплея значение уклона линии ската.

Рассмотрим код программы. В строке 07–10 объявляются переменные, среди них целочисленная переменная для знаменателя масштаба карты denominator Of Map Scale и переменные с плавающей точкой для высоты сечения рельефа vertical Interval, заложения горизонталей contour Interval, горизонтального проложения horizontal Equivalent и уклона линии ската slope Of Line. Знаменатель масштаба карты и сечение рельефа считываются с карты, a заложение горизонталей получается при измерении отрезка на карте линейкой. Выбор таких типов переменных делает программу способной выполнять расчеты в случае, если высота сечения рельефа является целым или дробным числом, например 5, либо 1,5 м, также можно работать с заложением горизонталей, как в виде целых чисел, так и дробных чисел, например 25, или 12,5 мм.

pic_14.wmf

pic_14.wmf

Ввод значений знаменателя масштаба карты и высоты сечения рельефа выполняется до инструкции цикла в строках 13 и 16. В цикле do-while (строки 20–32) вводится заложение горизонталей и вычисляется горизонтальное проложение и уклон линии ската. Расчет горизонтального проложения в строке 25 выполняется с пересчетом заложения в метры, чтобы получить безразмерную характеристику уклона линии. Также, в цикле выводится значение уклона линии. После каждой итерации цикла на экран выводится запрос (строка 29): «Продолжить программу? Введите (Y/y):». Если пользователь введет букву «Y» или «y», то условное выражение ((noneStopCharacter == ‘Y’) || (noneStopCharacter == ‘y’)) будет истинным и цикл выполняет еще один расчет уклона ската. Если же введен любой другой символ, то условное выражение будет ложным и цикл заканчивается. Предположим, что пользователь ввел знаменатель масштаба карты равный 10000 и высоту сечения рельефа равную 0,5 м. Затем программа предлагает ввести заложение горизонталей, пусть это значение равно 12 мм. В результате программа выведет на экран следующее сообщение: «Уклон линии: 0,00417». Дальнейшее зависит от выбора пользователя, который может продолжить расчеты или закончить их.

Подчеркнем назначение инструкции, представленной в строке 18. Она готовит поток вывода для отображения чисел с тремя значащими цифрами. Чтобы использовать возможность управления выводом на экран требуемого количества значащих цифр, в строке 02 к программе подключается заголовочный файл iomanip. Как известно, значащими цифрами числа считаются все цифры числа, кроме нулей, стоящих слева от первой ненулевой цифры. Если специально не указывать количество значащих цифр, то вывод числа по умолчанию выполняется с шестью значащими цифрами, например «Уклон линии: 0,00588735». Такая точность в представлении уклона линии ската явно избыточна и инструкция setprecision(3) ограничивает вывод на экран числа с тремя значащими цифрами, причем значение последней цифры округлено. Для приведенного ранее уклона инструкция cout << setprecision(3) выведет на экран число равное 0,00589.

Выводы

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