Выбрать главу

Вот как дополнился теперь наш проект (я показываю только те процедуры, которых коснулись дополнения):

Private Sub Form_Load()

Плеер. DeviceType = "Sequencer"

Плеер. FileName = "c: \Windows\Media\Canyon.mid"

Смена_даты_и_дня_недели

End Sub

Private Sub Таймер_часов_Timer()

Время_на_часах = Time

Циферблат_часов.Text = Время_на_часах

If Время_на_часах = 0 Then Смена_даты_и_дня_недели

If Время_на_часах = Циферблат_будильника.Text Then Включить_сигнал_будильника

End Sub

Private Sub Включить_сигнал_будильника()

Плеер. Command = "Open"

Плеер. Command = "Play"

End Sub

Запустите проект и установите время на циферблате будильника. Устанавливайте аккуратно, по одной цифре за раз. Не трогайте двоеточия. Почему — скажу чуть позже. Дождитесь, когда будильник зазвонит. Завершите работу проекта, не дожидаясь конца мелодии.

Пора заняться кнопками и меткой. Подумаем вот о чем. Во время работы проекта будильник в каждый момент времени может находиться в одном из двух состояний: установлен или не установлен. Компьютер должен в любой момент времени знать, в каком именно, чтобы принять решение — звонить или не звонить. В таких случаях, когда компьютер должен в любой момент что-то знать или помнить, программист всегда придумывает переменную величину, дает ей подходящее имя и тип и организует хранение в этой переменной нужной компьютеру информации. Так было у нас с переменной Время_на_часах, которая нужна была компьютеру для перестановки дат.

Придумаем переменную и дадим ей имя Будильник_установлен. Каким типом ее объявить? Для этого надо понять, а какие значения будет принимать эта переменная? По смыслу задачи значений два — "да" и "нет". Можно придать ей тип String, но хорошая практика программирования диктует тип Boolean. Вы скоро поймете, что он удобнее.

Теперь попробуем вообразить, что должно происходить при включении будильника. Нужно сообщить компьютеру, что будильник установлен.

Нужно, чтобы текст над циферблатом был такой: "Будильник установлен на: " Нужно, чтобы текст на кнопке был такой: "Выключить будильник".

В соответствии с этим пишем процедуру:

Private Sub Включить_будильник()

Будильник_установлен = True

Метка_будильника. Caption = "Будильник установлен на:"

Кнопка_включения_выключения_будильника. Caption = "Выключить будильник"

End Sub

Теперь попробуем вообразить, что должно происходить при выключении будильника:

Нужно сообщить компьютеру, что будильник не установлен

Нужно, чтобы текст над циферблатом был такой: "Будильник отключен"

Нужно, чтобы текст на кнопке был такой: "Включить будильник"

В соответствии с этим пишем процедуру:

Private Sub Выключить_будильник()

Будильник_установлен = False

Метка_будильника. Caption = "Будильник отключен"

Кнопка_включения_выключения_будильника. Caption = "Включить будильник"

End Sub

Теперь нам удивительно легко написать процедуру щелчка по кнопке включения-выключения будильника:

Private Sub Кнопка_включения_выключения_будильника_Click()

If Будильник_установлен Then Выключить_будильник Else Включить_будильник

End Sub

Обратите внимание, что благодаря удачному выбору имен и структуры программы язык программы по своей понятности приближается к естественному, человеческо-

Поскольку переменная Будильник_установлен имеет логическое значение True или False, ее можно использовать подобно функции IsNumeric в качестве условия оператора If. Поэтому совсем необязательно было писать If Будильник_установлен = True Then…

Процедуру щелчка по кнопке выключения сигнала приведу без пояснений:

Private Sub Кнопка_выключения_сигнала_Click ()

Плеер. Command = "Close"

End Sub

В последних четырех процедурах заключена вся механика работы кнопок и метки. Последнее, о чем надо позаботиться, это о том, чтобы будильник звенел только тогда, когда включен:

If Будильник_установлен And Время_на_часах = Циферблат_будильника.Text Then Включить_сигнал_будильника

Будильник готов. Приведу полностью программу всего нашего проекта. Пока не обращайте внимания на строки, касающиеся секундомера.

Option Explicit

Private Enum типРежим_работы_секундомера

считает

пауза

в_нуле