Author Topic: While not statement?  (Read 1675 times)

Offline baicskillet

  • Mc. Print
  • *
  • Posts: 29
    • View Profile
While not statement?
« on: 2010-Feb-28 »
Hi, is there some sort of statement to use in a while or for that checks if a condition is NOT true? Like, the !(variable) statement of pascal and such? Or the WHILE NOT (condition1)?

thankyou!

Offline Moru

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1791
    • View Profile
    • Homepage
Re: While not statement?
« Reply #1 on: 2010-Feb-28 »
In basic you write like this:

IF x <> 5

Offline baicskillet

  • Mc. Print
  • *
  • Posts: 29
    • View Profile
Re: While not statement?
« Reply #2 on: 2010-Mar-01 »
OK, thank you for your reply, but what about when there's many conditions that are NOT supposed to be true? If I may, this is the code I'm talking about:

Code: (glbasic) [Select]
repeat
   x := random(16)
  until (x in [1..6,9..15])and(x<>Col1)and(x<>Col2)and(x<>Col3)and(x<>Col4);
  Col4  := Col3;
  Col3  := Col2;
  Col2  := Col1;
  Col1  := x;
  Cycle := x;

That's pascal code.  That until line defines the condition that will stop repeating x=random(16), which are x not being in the [1..6,9--15] array, and x not being either Col1,2,3 or 4.  At least that's how I understand it, if I understood wrong please someone correct me.  :)

Offline FutureCow

  • HelpEditor
  • Prof. Inline
  • ******
  • Posts: 680
    • View Profile
Re: While not statement?
« Reply #3 on: 2010-Mar-01 »
You can group multiple if statements with the AND keyword.
Code: (glbasic) [Select]
X = RND(16)
WHILE X < 7 AND X >8 AND X <> COL1 etc

Compound if/while statements can lead to some time consuming bugs. I would suggest the following to test your code - combine all the separate conditions to be checked into one statement when you've got everything working.
Code: (glbasic) [Select]
DONE = 0
WHILE DONE = 0
    X = RND(16)
    IF X < 7
        IF X > 8
            IF X <> Col1
                (etc)
                DONE = 1     // This breaks out of the loop when all the conditions are satisfied
            ENDIF
        ENDIF
    ENDIF

    IF DONE = 0         // This block of code will get executed if all the conditions weren't matched
         Col 4 = Col3
         (etc)
    ENDIF
WEND