сравнение переменных
|
|
serg-3012 |
Дата: Пн, 21.05.2012, 21:13 | Сообщение # 1 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
подскажите пожалуйста как реализовать правильно. имеем числа 10,20,30 итд и переменную x . задача если х больше 10 но меньше 20 (10<x<20) то действие итд . if 10<x<20 then не компилируется как записать правильно ???
|
|
|
|
rvstar |
Дата: Пн, 21.05.2012, 22:21 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
IF (x>10) AND (x<20) THEN
led1 = 1
ENDIF
|
|
|
|
serg-3012 |
Дата: Пн, 21.05.2012, 23:29 | Сообщение # 3 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
выражение IF (x>10) AND (x<20) THEN не компилируется
а без скобок x=15 IF x>10 AND x<20 THEN компилируется но в протэусе воспринимается ка ложное и перескакивает на endif
|
|
|
|
rvstar |
Дата: Вт, 22.05.2012, 08:47 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Я с протеусом не работаю. На железе должно быть все ок. Попробуйте еще так:
begin: x=15 IF x>10 AND x<20 THEN label1 . . . label1: led = 1 GOTO begin
|
|
|
|
anatol |
Дата: Вт, 22.05.2012, 09:38 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Подумайте что вы написали в операции сравнения IF x>10 AND x<20 THEN пусть а=x>10 а б=x<20 Выражение примет вид IF а AND б THEN (если а и б то) Оператор IF прекрасно описан в помощи. Сравнивайте два однозначных числа и будет порядок. Бейсик язык высокого уровня, но не настолько чтобы вкл. телепатические функции.
|
|
|
|
ivan_fd |
Дата: Вт, 22.05.2012, 11:27 | Сообщение # 6 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Я что то не пойму что здесь не так? В данном случаи AND это не побитное И. Поэтому все должно работать нормально, если первое выражение истинно, и второе истинно, то.....
У меня в Протеусе все правильно работает:
Code x = 50
If x > 20 And x < 100 Then x = 40 EndIf
Сообщение отредактировал
ivan_fd - Вт, 22.05.2012, 11:28
|
|
|
|
anatol |
Дата: Вт, 22.05.2012, 13:51 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
ИЗ файла помощи If Comparison Then Instruction : { Instruction } : ElseIf Comparison Then Instruction : Else Instruction ЕСЛИ сравнение Tо инструкция : { инструкции } : ИНАЧЕ ЕСЛИ сравнение Tо инструкция : ИНАЧЕ инструкция
Всегда ли будет работать оператор в операторе - ?
|
|
|
|
serg-3012 |
Дата: Вт, 22.05.2012, 19:12 | Сообщение # 8 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
спасибо всем за высказанное мнение и идеи If x > 20 And x < 100 Then компилируется и исполняется ( нужно протэус переустановить глючит в последнее время) а по поводу файла справки похоже там не всё написано что надо бы а в некоторых случаях не верно изложено лично сталкивался оператор rev описание вроде должен реверсировать потом чтото кудато сдвигать короче тёмный лес на практике оказалось он зеркально переворачивает указанные биты
Сообщение отредактировал
serg-3012 - Вт, 22.05.2012, 19:43
|
|
|
|
rvstar |
Дата: Ср, 23.05.2012, 08:12 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Quote (anatol) Подумайте что вы написали в операции сравнения IF x>10 AND x<20 THEN пусть а=x>10 а б=x<20 Выражение примет вид IF а AND б THEN (если а и б то) Ув. anatol Что - то не пойму я Вашей логики.
|
|
|
|
anatol |
Дата: Ср, 23.05.2012, 09:43 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Логика простая. Все что очевидно и понятно Вам и мне, вовсе может быть незнакомо разработчику компилятора языка программирования, тем более самому компилятору. Выражение заложенное вами в функцию сравнения можно прочитать по разному, тем более в мануале ничего не указано на возможность такого применения, а следовательно под вопросом правильность его компилирования в исходный код. К примеру x>10 AND x<20 можно прочитать и x>(10 AND x)<20. К сожалению процессоры образно не мыслят и переменные (в том числе промежуточные результаты) создают только из заранее объявленных.
|
|
|
|
rvstar |
Дата: Ср, 23.05.2012, 10:28 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Quote (serg-3012) выражение IF (x>10) AND (x<20) THEN не компилируется а без скобок x=15 IF x>10 AND x<20 THEN компилируется но в протэусе воспринимается ка ложное и перескакивает на endif
IF (x>10) AND (x<20) THEN, действительно, не работает. А в PicbasicPro работает. Тогда так, наверное: IF x>10 THEN IF x<20 THEN . . ENDIF ENDIF
Сообщение отредактировал
rvstar - Ср, 23.05.2012, 10:36
|
|
|
|
anatol |
Дата: Ср, 23.05.2012, 12:10 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
А если так: IF (x>10) THEN IF (x<20) THEN на выход ENDIF
|
|
|
|
serg-3012 |
Дата: Ср, 23.05.2012, 14:05 | Сообщение # 13 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Нрод я не пойму о чем еще можно спорить if x>10 and x<20 then в протоне компилируется и исполняется в протеусе я ведь отписывался просто был глюк протеуса на одном кристале не работает на любом другом всё ок
|
|
|
|
rvstar |
Дата: Ср, 23.05.2012, 17:28 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Quote (anatol) А если так: IF (x>10) THEN IF (x<20) THEN на выход ENDIF A если так, то можно без ENDIF - IF (x>10) THEN IF (x<20) THEN quit
Сообщение отредактировал
rvstar - Ср, 23.05.2012, 17:28
|
|
|
|
anatol |
Дата: Ср, 23.05.2012, 17:55 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Quote (rvstar) то можно без ENDIF Нельзя, если условие проверки не выполнится куда идти?
|
|
|
|