“В МИР ИНФОРМАТИКИ” № 71

Школа программирования. Основы программирования на Visual Basic

Н.М. Тимофеева,
г. Обнинск Калужской обл.

Продолжение. Начало см. “В мир информатики” № 69-70 (“Информатика” №4-5/2006)

Пример программирования № 2 “Преобразование температур”

Постановка задачи

Напишите программу для преобразования температур в диапазоне от –200 до 500 градусов по шкале Цельсия в значения по шкале Фаренгейта и наоборот.

План решения

На рис. 1 показан предлагаемый дизайн экрана:

Рис. 1

Назначение каждого элемента управления:

1) горизонтальная полоса прокрутки — инструмент для изменения значения температур;

2) надписи — для вывода подписей и для показа вычисленных значений температур;

3) кнопка — для завершения программы по щелчку на ней.

N–S-диаграммы для разработки подпрограмм:

Реализация

Напомним (см. предыдущий выпуск), что решение задачи осуществляется в 5 этапов:

1. Создание интерфейса.

2. Установка начальных значений свойств элементов управления.

3. Написание кода.

4. Сохранение проекта на диске.

5. Тестирование приложения.

Создание интерфейса

Разместите четыре надписи, горизонтальную полосу прокрутки и кнопку на форме, как показано на рис. 2. Полосу прокрутки нужно немного увеличить. Напоминаем, что проще всего поместить элемент управления на форму двойным щелчком по нему в блоке элементов управления.

Рис. 2

Установка свойств

В результате вы получите следующий вид:

Рис. 3

Написание кода

Напишите следующий код для горизонтальной полосы прокрутки:

Private Sub hsbТемпература_Change()
'Присвоить значение полосы прокрутки
'надписи lblЦельсий
lblЦельсий.Caption = hsbТемпература.Value
'Вычислить и отформатировать значение
'температуры по Фаренгейту
lblФаренгейт.Caption =
Format(9 / 5 * hsbТемпература.Value + 32, "0.0")
End Sub

Напишите следующий код для кнопки Выход:

Private Sub cmdВыход_Click()
End 'Закончить программу
End Sub

Сохранение проекта

Создайте папку ПРИМЕР2 и сохраните в ней форму и проект под именами Температура.frm и Температура.vbp.

Тестирование приложения

Перемещайте ползунок на полосе прокрутки или щелкайте по ее кнопкам с правой и левой стрелками. Какому значению по Фаренгейту соответствует 0°С? При какой температуре обе шкалы равны?

Взгляд назад

Проверьте, что программа выполняет все, что было задано при постановке задачи. Как вы думаете, хотел бы пользователь сразу знать, как пользоваться полосой прокрутки? Как бы вы могли помочь пользователю? Если вы решитесь на некоторые изменения, то проверьте после этого еще раз ваши шаги.

Пояснения

1. При установке значений свойств Max и Min полосы прокрутки соответственно в 500 и –200 устанавливаются максимальная и минимальная температура по шкале Цельсия. Использование полосы прокрутки в этом приложении обеспечивает надежный ввод данных. Пользователь при этом не сможет ввести неверные данные (уже заданы и тип данных, и допустимый диапазон).

2. Для показа температур были использованы надписи (Label), а не текстовые окна (TextBox), потому что текст на надписи (значение свойства Caption) не может быть изменен пользователем кроме как с помощью полосы прокрутки. А вот содержимое текстовых окон может быть “переписано” пользователем, поэтому они не подходят для этого случая. Следует обеспечить пользователю уверенность в том, что он не допустит ошибок.

3. Температура по Фаренгейту вычисляется по формуле:

Вы можете заметить, что в соответствующем фрагменте кода присутствует символ “*”. Это символ умножения. Если в алгебре позволительно опускать знак умножения, то в Visual Basic это недопустимо. Символ “/” соответствует знаку деления. Поэтому формула в коде процедуры hsbТемпература_Change имеет вид:

F = 9 / 5 * C + 32

4. Знак равенства (=), как он используется в коде только что упомянутой процедуры, нужен для того, чтобы присвоить значения свойству Caption надписей. Присваивание — это “предоставление” значения. Эти строки кода известны как операторы присваивания. В N–8-диаграммах присваивание обозначается стрелкой (), указывающей на объект, который принимает значение.

5. В Visual Basic есть две разновидности операции деления. Так называемый “правый слеш” используется для вещественного деления. Кроме того, существует операция целочисленного деления, вычисляющая целую часть частного от деления. Знак этой операции — “\” (обратный слеш). Предусмотрена также операция определения остатка от деления одного целого числа на другое. Ее знак обозначается mod. Несколько примеров:

6. Текст, который следует после апострофа ('), — это комментарий. Комментарии не выполняются транслятором1 как часть кода. Они необходимы вам или кому-нибудь еще, кому нужно будет прочитать и понять написанный код. Важно, чтобы написание комментариев вошло в привычку при разработке кода.

7. Форматирование результата по Фаренгейту до одного десятичного знака после десятичной точки достигается применением функции Format (см. код процедуры hsbТемпература_Change выше). Эта функция определяет, как может быть представлено многообразие значений величины. У нее два параметра. Первый — величина или выражение, значение которого выводится. Во втором параметре символы в кавычках — это закодированный способ выражения конкретного формата. В данном случае — одна цифра после десятичной точки (символ “0” представляет цифру, которая должна быть отображена). Также может быть использован символ “#” для представления необязательных цифр (если в разряде, в котором записан этот символ, цифра имеется, она отображается, если нет — в этой позиции ничего не отображается).

Мы изучим еще несколько стандартных функций Visual Basic в следующих примерах. А сейчас коротко: все функции имеют имя, и в операторах присваивания они всегда стоят справа от знака равенства.

8. Значения почти всех свойств элементов управления могут быть изменены во время выполнения программы. По этой причине эти значения являются переменными. В нашей программе меняются значения свойств Caption у надписей, и также изменяется значение свойства Value у полосы прокрутки.

9. Значения свойств могут быть числовыми или символьными. Тип значения, которое может быть присвоено, называется типом данных. Каждое свойство имеет конкретный тип данных.

10. Значение свойства Caption надписи может принимать числовое или символьное значение. В Visual Basic для этого предусмотрен очень удобный тип данных, называемый Variant.

Вопросы и задания для проверки знаний

1. Для чего в коде присутствуют комментарии?

2. Определите результат следующих операций:

а) 12 \ 7;

б) 13 mod 6;

в) 100 \ 20;

г) 85 mod 9;

д) 64 \ 13;

е) 42 mod 7.

3. Если сегодня четверг, то как можно с помощью операции определения остатка вычислить, какой день будет через 200 дней?

4. В чем различие между знаками деления “/” и “\”?

5. Что вы получите в результате:

а) Format (5/8, “#.####”);

б) Format (5/8, “0.0000”);

в) Format (5/8, “#.0000”);

г) Format (5/8, “0.####”).

6. Почему свойства элементов управления рассматриваются как переменные?

7. Приведите примеры нескольких свойств, которые имеют числовые значения.

8. Напишите код для присваивания значения свойства Text текстового окна с именем txtВвод значению свойству Caption надписи с именем lblФамилия.

9. Разработайте интерфейс для приложения, которое бы преобразовывало вес на Земле в вес на Луне (земной вес — от 0 до 200 кг), зная, что сила тяжести на Луне составляет примерно 0,165 от земной. Округлите лунный вес до одного знака после десятичной точки.

10. Создайте приложение на Visual Basic по разработанному интерфейсу. Самостоятельно установите значения свойств и напишите код. Проверьте, как работает ваше приложение.

11. Разработайте приложение, которое преобразует минуты (от 0 до 5000) в часы и минуты.

От редакции. Пожалуйста, присылайте разработанные проекты и ответы на вопросы в редакцию. Ваша активность будет учтена при подведении итогов учебного года в нашей газете.

Продолжение следует


1 Транслятор — системная программа, переводящая прикладную программу, написанную на языке программирования высокого уровня, на машинный язык. — Ред.

TopList