- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Интернет-журнал 'Домашняя лаборатория', 2008 №7 - Журнал «Домашняя лаборатория»
Шрифт:
Интервал:
Закладка:
Время_на_часах = 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 типРежим_работы_секундомера
считает
пауза
в_нуле
End Enum
Dim Режим_работы_секундомера As типРежим_работы_секундомера
Dim Время_на_часах As Date
Dim Будильник_установлен As Boolean
Dim Время_на_секундомере As Single
Dim Время_запуска_секундомера As Single
Dim Время_на_паузе_секундомера As Single
Dim Цифра_десятых As Long
'НАЧАЛЬНАЯ УСТАНОВКА МЕХАНИЗМА
Private Sub Form_Load()
Плеер. DeviceType = "Sequencer"
Плеер. FileName = "c: WindowsMediaCanyon.mid"
Смена_даты_и_дня_недели
Выключить_будильник
Секундомер_обнулить
End Sub
'ПРОЦЕДУРЫ РАБОТЫ ЧАСОВ
Private Sub Таймер_часов_Timer()
Время_на_часах = Time
Циферблат_часов.Text = Время_на_часах
If Время_на_часах = 0 Then Смена_даты_и_дня_недели
If Будильник_установлен And Время_на_часах = Циферблат_будильника.Text Then Вкточить_сигнал_будильника
End Sub
Private Sub Смена_даты_и_дня_недели()
Циферблат_даты.Text = Date
Циферблат_дня_недели.Text = WeekdayName(DatePart("w", Date, vbMonday))
End Sub
'ПРОЦЕДУРЫ РАБОТЫ БУДИЛЬНИКА
Private Sub Кнопка_включения_выключения_будильника_Click()
If Будильник_установлен Then Выключить_будильник Else Включить_будильник
End Sub
Private Sub Включить_будильник()
Будильник_установлен = True
Метка_будильника. Caption = "Будильник установлен на:"
Кнопка_включения_выключения_будильника. Caption = "Выключить будильник"
End Sub
Private Sub Выключить_будильник()
Будильник_установлен = False
Метка_будильника. Caption = "Будильник отключен"
Кнопка включения выключения будильника. Caption = "Включить будильник"
End Sub
Private Sub Включить_сигнал_будильника()
Плеер. Command = "Open"
Плеер. Command = "Play"
End Sub
Private Sub Кнопка_выключения_сигнала_Сlick()
Плеер. Command = "Close"
End Sub
Private Sub Form_Terminate()
Кнопка_выключения_сигнала_Сlick
End Sub
'ПРОЦЕДУРЫ РАБОТЫ СЕКУНДОМЕРА
Private Sub Таймер_секундомера_Timer()
Время_на_секундомере = Timer — Время_запуска_секундомера + Время_на_паузе_секундомера
Цифра_десятых = Int(10 * (Время_на_секундомере Int(Время_на_секундомере)))
Циферблат_секундомера.Text = DateAdd("s", Время_на_секундомере, #12:00:00
AM#) & & Цифра_десятых
End Sub
Private Sub Кнопка_пуска_паузы_секундомера_С1ick()
If Режим_работы_секундомера О считает Then Секундомер_запустить Else Ceкундомер_остановить
End Sub
Private Sub Кнопка_обнуления_секундомера_Сlick()
Секундомер_обнулить
End Sub
Private Sub Секундомер_запустить()
Время_запуска_секундомера = Timer
Режим_работы_секундомера = считает
Таймер_секундомера. Enabled = True
Кнопка_пуска_паузы_секундомера. Caption = "ПАУЗА"
End Sub
Private Sub Секундомер_остановить()
Время_на_паузе_секундомера = Время_на_секундомере
Режим_работы_секундомера = пауза
Таймер_секундомера. Enabled = False
Кнопка_пуска_паузы_секундомера. Caption = "ПУСК"
End Sub
Private Sub Секундомер_обнулить()
Время_на_паузе_секундомера = 0
Режим_работы_секундомера = в_нуле
Таймер секундомера. Enabled = False
Кнопка_пуска_паузы_секундомера. Caption = "ПУСК"
Циферблат_секундомера.Text = "0:00:00.0"
End Sub
Обратите внимание, что при запуске проекта я в процедуре Form_Load выключаю для удобства будильник, а в процедуре Form_Terminate закрывается звуковой файл, если пользователь не удосужился закрыть его кнопкой. В ней мы обращаемся к процедуре обработки события Кнопка_выключения_сигнала_Click, как к процедуре пользователя. Это вполне допустимо.
Напоминаю, что событие Form_Terminate наступает только тогда, когда мы завершаем работу проекта, щелкнув по кнопке Close (крестику в правом верхнем углу формы), а не кнопкой End на панели инструментов.
Знакомимся с перечислимым типом данных
Чтобы грамотно