Как программно реализовать причинно-следственную связь?

Здравствуйте.
Подскажите, в правильном ли направлении я иду.
Рассуждаю на примере конструкции ЕСЛИ - ТО - ИНАЧЕ.

ЕСЛИ событие_произошло ТО команда_1 ИНАЧЕ команда_0.

ЕСЛИ кнопка_нажата ТО печать_символа ИНАЧЕ просто_ждем.
Не кажется ли вам что на примере кнопки всё выглядит довольно примитивно.
Если вам тоже так кажется или вы уверены,то давайте сообща разберемся как, что и куда.

А именно , как программно (грамотно) реализовать причинно-следственную связь?
  • Вопрос задан
  • 2546 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Ну коллбеки еще реализуют. Сигналы-слоты. События. Но это все, по сути, синтаксический сахар вокруг обыкновенного ЕСЛИ.
Ответ написан
Комментировать
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Программист всегда ставит на прикроватную тумбочку два стакана:
один полный, на случай, если захочет пить, и второй пустой, на случай, если не захочет.
Ответ написан
Комментировать
tsarevfs
@tsarevfs
C++ developer
Рассмотрим вариант с кнопкой. Пусть у нас есть некоторая функция, которая возвращает статус кнопки.
bool buttonPressed();
Ожидание в простейшем случае это бесконечный цикл.
while true
{
   if (buttonPressed())
   {
      print('hello');
   }
}

Этот код бесконечно крутится в цикле и если кнопка нажата печатает 'hello'. Заметим что есть некоторые проблемы. Не смотря на то, что код ничего не делает большинство времени, он сильно загрузит процессор. Кроме того, пока кнопка нажата, надпись будет повторяться с огромной скоростью.
while true
{
   if (buttonPressed())
   {
      print('hello'); 
   }
   sleep(300); 
}

В таком виде программа не будет жрать процессор, и надпись будет повторяться с разумной скоростью, как при зажимании кнопки на клавиатуре.
Идем дальше. Если надпись должна появиться ровно один раз:
bool buttonReleased = true;
while true
{
   if (buttonPressed())
      if (buttonReleased)
      {
         print('hello'); 
         buttonReleased = false;
      }
   else
      buttonReleased = true;
   sleep(300); 
}

P.S.
На каком языке вы учитесь писать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы