сравнение переменных - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 3123»
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » сравнение переменных
сравнение переменных
serg-3012 Дата: Пн, 21.05.2012, 21:13  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 12.04.2012

Статус: Offline

подскажите пожалуйста как реализовать правильно. имеем числа 10,20,30 итд и переменную x . задача если х больше 10 но меньше 20 (10<x<20) то действие итд .
if 10<x<20 then не компилируется как записать правильно ???
ЯНДЕКС Дата: 21.05.2012
rvstar Дата: Пн, 21.05.2012, 22:21  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 2   ±
Замечания:   ±
На сайте с 09.10.2007

Статус: Offline

IF (x>10) AND (x<20) THEN

led1 = 1

ENDIF

serg-3012 Дата: Пн, 21.05.2012, 23:29  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 12.04.2012

Статус: Offline

выражение IF (x>10) AND (x<20) THEN не компилируется

а без скобок
x=15
IF x>10 AND x<20 THEN компилируется но в протэусе воспринимается ка ложное и перескакивает на endif
rvstar Дата: Вт, 22.05.2012, 08:47  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 2   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 547
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Подумайте что вы написали в операции сравнения IF x>10 AND x<20 THEN
пусть а=x>10 а б=x<20
Выражение примет вид IF а AND б THEN (если а и б то) cry
Оператор IF прекрасно описан в помощи. Сравнивайте два однозначных числа и будет порядок.
Бейсик язык высокого уровня, но не настолько чтобы вкл. телепатические функции.
ivan_fd Дата: Вт, 22.05.2012, 11:27  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 888
Репутация: 47   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 547
Репутация: 14   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 12.04.2012

Статус: Offline

спасибо всем за высказанное мнение и идеи
If x > 20 And x < 100 Then компилируется и исполняется ( нужно протэус переустановить глючит в последнее время)
а по поводу файла справки похоже там не всё написано что надо бы а в некоторых случаях не верно изложено лично сталкивался оператор rev описание вроде должен реверсировать потом чтото кудато сдвигать
короче тёмный лес на практике оказалось он зеркально переворачивает указанные биты

Сообщение отредактировал serg-3012 - Вт, 22.05.2012, 19:43
rvstar Дата: Ср, 23.05.2012, 08:12  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 2   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 547
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Логика простая. Все что очевидно и понятно Вам и мне, вовсе может быть незнакомо разработчику компилятора языка программирования, тем более самому компилятору.
Выражение заложенное вами в функцию сравнения можно прочитать по разному, тем более в мануале ничего не указано на возможность такого применения, а следовательно под вопросом правильность его компилирования в исходный код.
К примеру x>10 AND x<20 можно прочитать и x>(10 AND x)<20.
К сожалению процессоры образно не мыслят и переменные (в том числе промежуточные результаты) создают только из заранее объявленных.
rvstar Дата: Ср, 23.05.2012, 10:28  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 2   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 547
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

А если так:
IF (x>10) THEN IF (x<20) THEN на выход
ENDIF
serg-3012 Дата: Ср, 23.05.2012, 14:05  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Новенький
Сообщений: 7
Репутация: 0   ±
Замечания:   ±
На сайте с 12.04.2012

Статус: Offline

Нрод я не пойму о чем еще можно спорить if x>10 and x<20 then в протоне компилируется и исполняется в протеусе я ведь отписывался просто был глюк протеуса на одном кристале не работает на любом другом всё ок
rvstar Дата: Ср, 23.05.2012, 17:28  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 2   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 547
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Quote (rvstar)
то можно без ENDIF

Нельзя, если условие проверки не выполнится куда идти?
Форум Picbasic.ru » Программирование МК » Proton PicBasic » сравнение переменных
Страница 1 из 3123»
Поиск: