Первый слайд презентации
Использование условий и переменных как: Таймеры, ограничители, состояния.
Слайд 2
При работе с программами возникают разные ситуации, например, нужно ограничить переменную, чтобы она не могла выходить за определённый диапазон (например медицинский термометр измеряет температуру от 29 до 42 град.) может возникнуть необходимость увеличивать переменную, лишь до определённого момента (например секунд на часах не бывает больше 59). А при работе с бесконечными циклами иногда требуется создавать события, например, каждый 10й проход цикла делать перенос строки. Для всех этих действий используются специально настроенные условия. Они сильно упрощают работу с кодом.
Слайд 3
1. Ограничители : Условие, которое не позволяет переменной увеличиваться\уменьшаться за пределами указанных значений. Например, мы хотим, чтобы какое-то число не уменьшалось ниже нуля и никогда бы не увеличивалось более 100: if(x<100)x++; //увеличивает « х », пока он меньше100 Второй вариант: х++ ; //увеличивает «х» до бесконечности. if(x>100)x=100; //сбрасывает «х» на 100, если «х» стал больше 100 if(x<0)x=0; //делает «х» = 0, если он стал меньше 0.
Слайд 4
Ограничители помогают установить контроль за изменением переменных. Неконтролируемые переменные могут привести к сбоям в программах. Например: пользователь может в возрасте указать 600 лет, или -10. Или ваша программа должна рассчитывать количество коробок для переезда – она должна учитывать, что у коробки ограниченные габариты или предельный вес. Важно понимать, что в некоторых средах есть встроенные функции, которые помогут вам выполнять ограничения переменных. Это может быть constrain ( Ардуино ) или Mathf.Clamp ( Юнити ). Но не в каждой среде есть подобные команды, поэтому следует учиться делать ограничители из обычных условий.
Слайд 5
2. Таймеры: Используются при работе с бесконечными циклами ( void draw, void Update, while, for …), когда определённое действие требуется выполнять с некоторыми интервалами. Например: минуты должны переключаться каждые 60 секунды, а часы, каждые 60 минут: sec++; //увеличиваем переменную в которой как бы секунды if(sec> 59 ){ //если sec больше 59 sec=0; //обнуляем (сбрасываем) таймер Min ++; //прибавляем минуту } 1. Обязательным действием является сброс таймера, иначе действие выполнится очень много раз, а не 1, как нам требуется.
Слайд 6
2. Увеличение таймера не должно быть внутри условия, которое проверяет этот же таймер. То есть код: if(sec> 59 ){ sec++; sec=0; Min ++; } Будет лишён смысла, так как если переменная sec изначально меньше 59 – то событие никогда не произойдёт, соответственно и sec никогда не увеличится. А если sec изначально больше 59, то событие сработает лишь 1 раз, но повторяться не будет. Таймеры можно использовать для озвучивания капающей воды с определёнными интервалами, перезарядка оружий/способностей/атак в играх, запуска сложных функций, которые при большой частоте вызова перегрузят компьютер (с таймерами их можно вызывать реже) и т.д.
Слайд 7
Состояния – это когда одна и та же программа (или её часть), могут выполнять совершенно разные задачи, в зависимости от значения какой-то переменной: if(x==0) t++; //если х=0 прибавляем к « t » 1 if(x==1) t--; //если х= 1 уменьшаем « t » на 1 if(x==2) t+=10; //если х= 2 прибавляем к t по 10 Таким образом, меняя «х» мы влияем на то, что будет происходить с переменной « t ». Однако, можно не ограничиться одной командой – можно вызвать функцию, которая представляет собой большой набор команд, сокращённых до одного слова: if(x==0) menu(); //если х=0 вызов функции menu if(x==1) game(); //если х= 1 вызов функции game if(x==2) settings(); //если х= 2 вызов функции settings
Последний слайд презентации: Использование условий и переменных как: Таймеры, ограничители, состояния
С помощью состояний в одну программу можно поместить множество функций: она может выводить меню, при смене переменной – вести диалог с пользователем, при другом значении запускать сторонние приложения, файлы и так далее. Очень важно предусмотреть переходы в эти состояния ! То есть, если у вас есть условие if(x==2)game();, то где-то в программе надо предусмотреть, а когда переменная «х» будет равна 2, при каком из действий? Можно написать: cin >>a; //просим пользователя ввести переменную «а» if(a==“game”)x=2; //если пользователь ввёл « game », делаем переменную «х» равной 2 if(x==2)game(); //если «х» равен 2 – вызываем функцию « game »