Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: demanik, ivan_fd  
сравнение переменных
serg-3012 Дата: Пн, 21.05.2012, 21:13  |                                                                                                                Сообщение # 1
Группа: Удаленные
Ранг: 
Сообщений:
Репутация:   ±
Замечания:   ±
На сайте с

Статус:

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

Статус: Offline

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

Статус: Offline

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

Нельзя, если условие проверки не выполнится куда идти?
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: