"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.
Событие — это действие или изменение, о котором программа может узнать: щелчок мышью, нажатие клавиши, запуск или истечение времени. Источник сообщает программе о событии, а обработчик определяет, что делать в ответ. Если заранее связать событие с командами, программа сможет реагировать на действия пользователя и работать интерактивно. Такой подход называют событийным программированием.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Событие — действие или изменение, о котором программа может узнать, например нажатие клавиши или щелчок мышью. Оно сообщает программе, что в окружающей среде или внутри самой программы что-то произошло. Благодаря событиям программа может реагировать на действия пользователя, а не только выполнять команды по порядку.
Источник события — объект или устройство, от которого поступает событие: пользователь, клавиатура, мышь или сама программа. Например, человек нажимает клавишу, клавиатура передаёт сведения об этом, а программа фиксирует событие. Понимание источника помогает определить, откуда пришло сообщение и на каком участке программы его искать.
Обработчик события — команда или группа команд, которые выполняются при наступлении определённого события. Например, обработчик щелчка по кнопке может открыть новое окно или вывести сообщение. Он нужен для того, чтобы программа не просто узнала о событии, а выполнила осмысленное действие.
Событийное программирование — способ построения программы, при котором её действия запускаются в ответ на события. Программа ожидает разные сообщения и выбирает подходящий обработчик, когда одно из них появляется. Такой способ особенно полезен для игр, сайтов и приложений с кнопками, окнами и другими элементами управления.
Программа получает сведения о событиях из нескольких источников. Пользователь может нажать клавишу или кнопку, устройство может сообщить об изменении, а другая часть программы может передать внутреннее событие. Такое разделение нужно потому, что программа должна отличать действия человека от сигналов таймера, датчика или собственного кода.
Событие само по себе не задаёт действие программы. Оно лишь сообщает: произошло нажатие, щелчок, запуск или другое изменение. Поэтому разработчик заранее записывает возможную реакцию, иначе программа может получить событие, но не сделать ничего заметного для пользователя.
Обработчик связывается с событием по его виду и источнику. Например, для события «нажатие клавиши Пробел» назначают отдельную группу команд, а для щелчка по кнопке — другую. После наступления события программа находит связанный обработчик и выполняет его команды в заданном порядке.
При обычном последовательном выполнении команды идут одна за другой от начала программы к концу. В событийной программе заранее неизвестно, когда именно пользователь нажмёт клавишу или щёлкнет мышью, поэтому программа ожидает сообщения и реагирует на них. Такой подход нужен там, где поведение зависит от действий человека или изменений во времени.
У одной программы может быть несколько обработчиков, и каждый отвечает за свой случай. Нажатие стрелки может перемещать персонажа, щелчок по кнопке — запускать игру, а столкновение — показывать предупреждение. Благодаря этому реакции не смешиваются, а поведение программы становится понятным и управляемым.
| Событие | Возможный источник | Что может выполнить обработчик |
|---|---|---|
| Щелчок мышью по кнопке | Пользователь и мышь | Запустить игру или открыть окно |
| Нажатие клавиши | Пользователь и клавиатура | Переместить объект или изменить его направление |
| Запуск программы | Операционная система или сама программа | Загрузить данные и подготовить экран |
| Истечение заданного времени | Таймер программы | Обновить изображение или показать сообщение |
В таблице сначала найдите событие, которое должно произойти, а затем определите его источник. В последнем столбце указана не единственная, а возможная реакция: один и тот же тип события можно обработать по-разному в разных программах.
Определите, какие из перечисленных действий могут быть событиями для программы: щелчок мышью, изменение цвета фона, нажатие клавиши. Нужно отделить сообщение о произошедшем действии от результата работы самой программы. Для этого проверим, может ли программа получить сведения о действии и использовать их как повод для запуска обработчика.
Ответ: событиями здесь являются щелчок мышью и нажатие клавиши. Изменение цвета фона может быть командой обработчика, хотя изменение цвета, вызванное внешним сигналом, в другой задаче тоже можно использовать как событие.
Для события «нажатие клавиши Пробел» придумайте обработчик, который перемещает персонажа на несколько шагов. Сначала определим, какое действие должно быть связано с клавишей, а затем запишем последовательность команд. Направление можно выбрать заранее, например движение вправо.
Ответ: при нажатии Пробела программа запускает обработчик, который перемещает персонажа вправо на 5 шагов. Если нужно другое направление или расстояние, меняют соответствующие параметры команд.
Программа должна начинать игру при нажатии кнопки «Старт», менять направление персонажа по клавишам и показывать сообщение при столкновении. Здесь требуется не один общий обработчик, а несколько независимых связей между событиями и реакциями. Разберём каждую ситуацию отдельно.
Ответ: у программы есть обработчики запуска, управления направлением и столкновения. Несколько обработчиков позволяют одной программе по-разному отвечать на щелчок, разные клавиши и изменение положения объектов.
Считать событием любую команду программы. Так путают причину и реакцию: изменение цвета после щелчка обычно является действием обработчика, а не событием. Проверьте себя вопросом: программа узнала об этом или сама выполнила это?
Ждать автоматической реакции после события. Нажатие кнопки не заставляет программу самостоятельно придумать нужное действие, потому что связь должна быть задана заранее. Проверьте, существует ли обработчик и помещены ли в него нужные команды.
Смешивать источник события и обработчик. Клавиатура или мышь передаёт событие, а команды программы его обрабатывают. Чтобы проверить ответ, назовите отдельно устройство, которое сообщает о событии, и группу команд, которая реагирует.
Считать, что обработчик сработает при любом похожем действии. Обработчик клавиши Пробел не обязан запускаться при нажатии другой клавиши или щелчке мышью. Сверьте точный вид события, его источник и объект, с которым оно связано.
До изучения событий полезно понимать, что такое программа, команда и последовательность выполнения команд. Тогда легче увидеть разницу между обычным порядком действий и запуском команд после сообщения о событии.
Знание событий пригодится при создании интерактивных программ, игр и приложений с графическим интерфейсом. Оно помогает связывать кнопки, клавиши, таймеры и другие источники с реакциями программы.
Что в программе называют событием?
Событием называют действие или изменение, о котором программа может узнать. Например, это щелчок мышью, нажатие клавиши, запуск программы или завершение отсчёта времени.
Чем событие отличается от команды?
Событие сообщает о том, что произошло, а команда задаёт действие программы. Например, нажатие клавиши — событие, а перемещение персонажа после него — команда или группа команд.
Что такое обработчик события?
Обработчик события — команда или группа команд, связанных с определённым событием. Когда событие происходит, программа запускает соответствующий обработчик.
Может ли программа реагировать на несколько событий?
Да, программа может иметь много событий и обработчиков. Например, один обработчик реагирует на щелчок кнопки, другой — на нажатие клавиши, а третий — на столкновение объектов.
Почему после нажатия кнопки ничего не происходит?
Возможно, для события нажатия не создан обработчик или он связан не с той кнопкой. Также ошибка может быть в командах самого обработчика, поэтому нужно проверить связь события с нужной группой команд.
23. Что такое события?