Можно ли проверить несколько условий одним оператором If.

Раздел начинающих пользователей
Правила форума
В песочнице можно спрашивать когда незнаешь где спросить.
В песочнице нелзя посылать в гугл
В песочнице можно задавать любой вопрос, но на него могут и неответить.
Песочница для тех, кто начинает свои вопросы с защиты чайников от пинков.
В песочницу будут перетаскиваться вопросы неполучившие ответа.
Песочница - попытка навести порядок.
На песочницу большие надежды.

Можно ли проверить несколько условий одним оператором If.

Сообщение tran3istor (Ivan) » 12 мар 2017, 22:15

Нужно определить момент совпадения двух пар переменных(для конкретики: определить равенство текущего времени минут tek_min c значением минут будильника bud_min и текущее время часов tek_chas c значением часов будильника bud_chas). Можно сделать так - берем Оператор сравнения (If)пишем ему tek_min=bud_min, если «Да» идем на другой If и проверяем совпадение часов tek_chas=bud_chas.
Будильников будет много, поэтому хочу поменьше иконок. Вопрос: можно используя один оператор If чтобы проверять одновременно два (и больше) условий?
Вписал в If-иконку tek_min=bud_min AND tek_chas=bud_chas – компилирует без ошибок. Буде ли работать в это в «железе»? Может каждую операцию сравнения взять в скобки (tek_min=bud_min) AND (tek_chas=bud_chas)?
Ник: tran3istor
Имя: Ivan
(asdfg)
Новичок
Новичок
Информация о пользователе

Re: Можно ли проверить несколько условий одним оператором If

Сообщение andrewproffi (Андрей) » 13 мар 2017, 08:50

да, используя логические операторы, например a=10 AND b=20 AND c=5
целиком пишешь в условии компонента IF. никаких скобок не надо
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Разработчик
Разработчик
Информация о пользователе

Re: Можно ли проверить несколько условий одним оператором If

Сообщение Широбоков Сергей (Широбоков Сергей) » 13 мар 2017, 09:53

tran3istor писал(а):Нужно......... AND (tek_chas=bud_chas)?

Покажешь нам что получиться?
Аватар пользователя
Ник: Широбоков Сергей
Имя: Широбоков Сергей
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение Taska (Максим) » 13 мар 2017, 14:37

Скобки нужны если необходимо сделать вычисление, типа такого
Код: выделить все
tek_min=(bud_min-1)
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение tran3istor (Ivan) » 13 мар 2017, 15:00

Всем спасибо за помощь! Как только прошью МК и все заработает выложу обязательно. Я больше доверяю паяльнику чем протеусу. Протеус хорошо моделируем простые схеми, а если прерывания, динамическая индикация, транзисторы...то не очень.
Ник: tran3istor
Имя: Ivan
(asdfg)
Новичок
Новичок
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение mim (mim) » 13 мар 2017, 17:09

tran3istor писал(а):Протеус хорошо моделируем простые схеми, а если прерывания, динамическая индикация, транзисторы...то не очень.
:headbang: Смешно писать такое ....
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение andrewproffi (Андрей) » 13 мар 2017, 17:11

Мим хочет сказать что ты не прав... Протеус очень и очень хорош для симуляции работы цифровых схем, просто надо уметь им пользоваться.
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение goldexer (Вадим) » 16 мар 2017, 21:33

Ребята, сколько симулировал работу AVR-ок в протеусе, глюков небыло вообще. Когда думал, что поймал глюк - оказывалось, что Протеус всё правильно делал, ошибка была в коде или компилляторе.
Например:
1. Одна из версий пятой Atmel Studio не хотела правильно работать с массивами. Протеус симулировал )
2. CodeVisionAVR-овский генератор кода в функции read_adc забывал обнулить ADMUX а делал просто ADMUX = channel| ADC_Reference, тем самым не обнуляя установленный в прошлый раз канал а Протеус послушно симулировал )
3. И таких случаев много, но никогда не оказывался в них виноват Протеус.

Кстати, если захотите собственными ручками писать код, то несколько условий проверять не только можно, но и нужно, поскольку это иногда улучшает читаемость и компактность кода, если вы пишете сами. Делается оператором AND, проще говоря логическое умножение.
Если одно из условий верно, а другое нет, то общая конструкция верной не будет. Проще понять, если и вправду перемножать.
Возьмем за верное условие единицу, а за ложное ноль. Теперь умножьте единицу на единицу. Вы и получите в итоге единицу. А теперь попробуйте любое число (в нашем случае хоть ноль, хоть единицу) умножить на ноль. В итоге вы получите ноль.

Пример: if кнопка1нажата AND кнопка2нажата THEN что-то_сделать

Если вы хотите проверять истинность одного условия и ложность второго, то ложное предварительно инвертируется.
В разных языках инверсия обозначается по-разному.
Пример: if кнопка1нажата AND NOT активирован_запрещающий_флаг THEN что-то сделать

Для понимания оба примера можно представить так:

if ( кнопка1нажата AND кнопка2нажата ) THEN что-то_сделать
if ( кнопка1нажата AND (NOT активирован_запрещающий_флаг) ) THEN что-то сделать
Аватар пользователя
Ник: goldexer
Имя: Вадим
(Бельцы)
Новичок
Новичок
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение mim (mim) » 17 мар 2017, 06:53

Каждый раз, на разных форумах пишут - не нужно много бла бла бла... К чему непонятные разговоры. Покажи пример в FC, покажи что не правильно работает, покажи где врет Протеус или еще что... покажи как нужно, и попробуем разобраться... мож чему и научишь... Век живи- век учись...

ЗЫ к чему непонятно как оформленное описание условий, если все можно показать наглядно в FC?
То что подано, подано так, что никто не задумается и не вникнет в написанное...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Можно ли проверить несколько условий одним оператором If

Сообщение щербатый (щербатый) » 17 мар 2017, 13:00

goldexer писал(а):Кстати, если захотите собственными ручками писать код, то несколько условий проверять не только можно, но и нужно, поскольку это иногда улучшает читаемость и компактность кода, если вы пишете сами. Делается оператором AND, проще говоря логическое умножение.

Интересно, я когда то слышал об этом. Можете привести практические примеры?
Ник: щербатый
Имя: щербатый
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

След.

Вернуться в ПЕСОЧНИЦА

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей