Разница IF и WHILE
- Войдите на сайт для отправки комментариев
Ср, 05/02/2020 - 16:59
Все привет.
Подключил кнопку к ноге Ардуино, резисторы на месте.
При нажатии кнопки должна выполняться функция.
Написал условие с If - прекрасно работает. Привожу код без заголовка.
int i = PIND; if (!((1 << PD6) & i)){ moving(); }
Решил сделать цикл с While, не работает! После первого нажатия выполнение функции уже не прекращается...
int i = PIND; while (!((1 << PD6) & i)){ moving(); }
Что не так?
while() - это у нас что? Цыкл. Область действия цыкла где? А i обновляется где?
Я знаю, и даже пользуюсь языком, где нет while. Там его через for эмулируют а не через if. Может в этом разница? Есть же бесконечный цикл for(;;) ? Нет бесконечного цикла if - else.
верно, цЫкл
i - считывает состояние кнопки, опрашивает порт. чем не обновление? нет? :)
Кто вам сказал, что переменная что-то считывает? Переменная - хранит когда-то считанное. А когда оно считано было?
while() - это у нас что? Цыкл. Область действия цыкла где? А i обновляется где?
Не задавайте глупых вопросов, мы тут регистры напрямую юзаем, а он про область действия какую то. Тут может параллельные процессы задействованы. От.
i - считывает состояние кнопки, опрашивает порт. чем не обновление? нет? :)
ответьте на вопрос, в какой строчке кода у вас считывается состояние кнопки?
Zero-Botanik ,смотрите область видимости переменных
ответьте на вопрос, в какой строчке кода у вас считывается состояние кнопки?
я полагал при инициализации, каждый раз читает в бесконечном рабочем цикле
я полагал при инициализации, каждый раз читает в бесконечном рабочем цикле
А я что говорил?))))
А я что говорил?))))
вы посмеяться пришли? наслаждайтесь, я пока еще здесь.
ответьте на вопрос, в какой строчке кода у вас считывается состояние кнопки?
if работает сколь угодно надежно, и было ощущение, что замена на while будет той же
Ну с какого фака она должна что то считывать? Где вы такое увидели?
Третий за сегодня, кого в раздел "Программирование" отправляю.((((
ответьте на вопрос, в какой строчке кода у вас считывается состояние кнопки?
if работает сколь угодно надежно, и было ощущение, что замена на while будет той же
while() работает как калашников - на каждом проходе проверяет переменную i, которая не меняется. Воткните в центр цыкла Serial.println(i) и убедитесь.
Третий за сегодня, кого в раздел "Программирование" отправляю.((((
Очень не хочется грубить, но Вас я бы отправил в раздел "Вежливость".
А где еще задать вопрос, как не в песочнице? А Вы сами в курсе в каком раздела форума находитесь?
Я же именно занимаясь разделом Программирование не смог ответить на вопрос и задал его здесь.
Здесь другие участники форума помогают, в Ваших язвительных замечаниях я не нуждаюсь.
while работает как калашников - на каждом проходе проверяет переменную i, которая не меняется. Воткните в центр цыкла Serial.print и убедитесь.
На это надеюсь.
Не могли бы Вы написать, что не хватает в моем коде? Пока я реально в ступоре.
Очень не хочется грубить, но Вас я бы отправил в раздел "Вежливость".
Ух ты, это я еще и не думал хамить.
А Вы сами в курсе в каком раздела форума находитесь?
Уху, я один из его создателей.
Я же именно занимаясь разделом Программирование не смог ответить на вопрос и задал его здесь.
Для этого, в единственной приколоченной теме этого раздела, в самом начале, имеется солидная библиография, которая дает ответы на заданные вами вопросы.
Могу написать, если намёки не помогают: внутри цикла необходимо обновлять значение переменной i.
я полагал при инициализации, каждый раз читает в бесконечном рабочем цикле
похоже до вас не доходит, что организовав цикл while - вы заблокировали программу внутри своего цикла, "бесконечный рабочий цикл" остаеновлен.
Программа больше не выходит из while и не исполняет строчку
Он не понимает, что такое while на самом деле.
Могу написать, если намёки не помогают: внутри цикла необходимо обновлять значение переменной i.
Спасибо, но пока не догнал )
У меня логика кода такова:
для if: если (условие истинно) то выполнить
для while: пока (условие истинно) то выполнять. Есть какое-то ощущение, что что-то не так. Особенно когда не работает ))
Можно я предположу: если я в конце цикла буду i обнулять, получится?
а я вот, грешным делом, думал, что он ее обновляет, но свою, внутри функции и от того и не понимает.
Раскройте код функции moving(); Zero-Botanik или таки sadman41 прав и все проще
Он не понимает, что такое while на самом деле.
Именно! Не понимаю и пишу в открытую, как еще?
Спасибо большое всем!!!
а я вот, грешным делом думал, что он ее обновляет, но свою, внутри функции и от того и не понимает.
Раскройте код функции moving(); Zero-Botanik или таки sadman41 прав и все проще
все проще, это мой первый цикл while
я месяц назад я спрашивал про неработающий код, где присваивание использовал вместо ==
да выучу, всего лишь месяц, дайте только срок )))
Спасибо еще раз всем! Тема закрыта.
я полагал при инициализации, каждый раз читает в бесконечном рабочем цикле
похоже до вас не доходит, что организовав цикл while - вы заблокировали программу внутри своего цикла, "бесконечный рабочий цикл" остаеновлен.
Программа больше не выходит из while и не исполняет строчку
именно так. спасибо.
теперь вот прям точно понял.