Shop OBEX P1 Docs P2 Docs Learn Events
Help Simplify If-Then Code — Parallax Forums

Help Simplify If-Then Code

HumanoidoHumanoido Posts: 5,770
edited 2009-07-04 18:07 in BASIC Stamp
' {$STAMP BS1}
' {$PBASIC 1.0}
SYMBOL id = B0
SYMBOL  c = B1
B0=96
Loop:
IF B0 = 0 THEN c1
IF B0 > 11  AND B0 < 23  THEN c2   ' 017
IF B0 > 22  AND B0 < 35  THEN c3   ' 028
IF B0 > 34  AND B0 < 45  THEN c4   ' 040
IF B0 > 44  AND B0 < 55  THEN c5   ' 049
IF B0 > 64  AND B0 < 76  THEN c6   ' 070
IF B0 > 83  AND B0 < 95  THEN c7   ' 089
IF B0 > 105 AND B0 < 114 THEN c8   ' 111
IF B0 > 113 AND B0 < 122 THEN c9   ' 116
DEBUG "out of range error",CR:END
c1:c=1:DEBUG c:GOTO Loop
c2:c=2:DEBUG c:GOTO Loop
c3:c=3:DEBUG c:GOTO Loop
c4:c=4:DEBUG c:GOTO Loop
c5:c=5:DEBUG c:GOTO Loop
c6:c=6:DEBUG c:GOTO Loop
c7:c=7:DEBUG c:GOTO Loop
c8:c=8:DEBUG c:GOTO Loop
c9:c=9:DEBUG c:GOTO Loop

Comments

  • Mike GreenMike Green Posts: 23,101
    edited 2009-07-04 14:10
    I would probably use an EEPROM statement to store a table in the EEPROM like

    ' {$STAMP BS1}
    ' {$PBASIC 1.0}
    SYMBOL id = B0
    SYMBOL c = B1
    SYMBOL v = B2
    EEPROM (12,23,35,45,65,84,106,114,123)
    id =96
    c = 0
    Loop:
    READ c,v
    c = c + 1
    IF c = 10 THEN Error
    IF id >= v THEN Loop
    DEBUG c
    STOP
    Error:
    DEBUG "Out of range error",CR
    END
  • SRLMSRLM Posts: 5,045
    edited 2009-07-04 16:42
    What do you want to do if B0 is 1-11, 76-83, or 95-105? Were those gaps intentional?
  • Mike GreenMike Green Posts: 23,101
    edited 2009-07-04 16:44
    If the gaps are intentional and you want to handle them, you can just add 3 additional entries to the EEPROM table, then translate the resulting "c" value via another table to the values you want.
  • PJAllenPJAllen Banned Posts: 5,065
    edited 2009-07-04 17:57
    ·Are those ANDs needed?
    IF B0 = 0 THEN C1
    IF B0 < 11  THEN out_of_range_debug
    if B0 < 23  THEN C2
    IF B0 < 35  THEN C3
    IF B0 < 45  THEN C4
    IF B0 < 55  THEN C5
    IF B0 < 76  THEN C6
    IF B0 < 95  THEN C7
    IF B0 < 114 THEN C8
    IF B0 < 122 THEN C9
    


    ·
  • HumanoidoHumanoido Posts: 5,770
    edited 2009-07-04 18:07
    Perfect - thanks very much.
Sign In or Register to comment.