IF...THEN - mkilgore/QB64pe GitHub Wiki
IF...THEN statements make boolean (true or false) evaluations to automate program decision making.
- The conditionStatement evaluation by IF must be true (-1) or a non-zero numerical value for the THEN {code} to be executed.
- Multiple conditional evaluations can be made using inclusive AND or alternative OR conditional expressions.
- THEN is not required when GOTO is used to send program flow to a line number or label.
- IF statements can also have alternative evaluations using ELSEIF and ELSE conditions.
- When the IF statement and/or code to be run is more than code line, an END IF statement must be used.
- With multiple code lines to run, end the IF statement with THEN and place all of the code on lines below that line.
- Multiple code line block statements require that the IF...THEN, ELSEIF, ELSE and END IF be on separate lines.
- The IDE may return an error of 'NEXT without FOR or 'LOOP without DO when END IF does not end a statement block.
- The QB64 IDE will indicate an error in the IF statement line until END IF closes the statement block.
- Use colons to execute multiple statements in a single-line IF statement.
- An underscore can be used anywhere after the code on a single-line to continue it to the next line in QB64.
- NOTE: STRING values can only be evaluated in an IF statement if a value is compared to a literal or CHR$ string value. QB64 may not compile literal IF string statements or indicate an IDE coding error. Use LEN or ASC to compare strings numerically.
Symbol | Condition | Example Usage |
---|---|---|
< | Less than | IF a < b THEN |
> | Greater than | IF a > b THEN |
= | Equal | IF a = b THEN |
<= | Less than or equal | IF a <= b THEN |
>= | Greater than or equal | IF a >= b THEN |
<> | NOT equal | IF a <> b THEN |
- AND (boolean) can be used to add extra conditions to a boolean statement evaluation.
- OR (boolean) can be used to add alternate conditions to a boolean statement evaluation.
- Parenthesis are allowed inside of boolean statements to clarify an evaluation.
The results of the bitwise logical operations, where A and B are operands, and true or false indicate whether a bit is set or not set:
| ||||||||||||||||||||||||||||||||||||||||||||||||
Relational Operations return negative one (-1, all bits set) and zero (0, no bits set) for true and false, respectively. This allows relational tests to be inverted and combined using the bitwise logical operations. |
Example 1: In a one line IF statement, only REM can be used to comment out the action without an END IF error:
'' '' INPUT "Enter a number over or under 100: ", x IF...THEN x > 100 THEN PRINT x IF...THEN x > 100 THEN REM PRINT x '' ' |
Example 2: IF statement blocks require that the IF THEN and END IF statements be separate from the code executed.
'' '' INPUT "Enter a number over or under 100: ", x IF...THEN x > 100 THEN y = 200 PRINT y PRINT x END IF '' '' |
Example 3: True or False evaluation of a numerical value executes only when the value is not 0. Cannot evaluate STRING values.
'' '' INPUT "Enter a number or just hit Enter: ", x IF...THEN x THEN PRINT x '' '' |
- Example will only print if a numerical value is True (positive or negative). (Equivalent to: IF x > 0 OR x < 0 THEN evaluation)
'' '' INPUT "Enter a number over or under 100 or 50: ", value IF...THEN (value% > 100 AND (boolean) value% < 200) OR (boolean) value% = 50 THEN PRINT "OK" '' '' |
Example 5: Using multiple IF options in a one line statement.
'' '' INPUT "Enter a number over or under 200: ", x IF...THEN x > 200 THEN PRINT "High" [[ELSEIF|ELSEIF]] x < 0 THEN PRINT "Low" [[ELSE|ELSE]] PRINT "OK" '' '' |
Example 6: STRING values can be compared using greater than, less than, not equal to or equal to operators only.
'' '' PRINT "Press a letter key: "; Key$ = INPUT$(1) PRINT Key$ IF Key$ >= CHR$(65) AND Key$ <= CHR$(90) THEN PRINT "A to Z" |
- Floating decimal point numerical values may not be compared as exactly the same value. QB64 will compare them the same.
- Example: QBasic would print unequal in the IF comparison code below even though it is exactly the same value printed.
'' '' x# = 5 / 10 y# = 6 / 10 z# = x# + y# PRINT x#, y#, z# IF...THEN x# + y# = z# THEN PRINT "equal" ELSE PRINT "unequal" '' '' |
- Note: QB64 will make the calculation correctly and print equal. Change older program code that relies on the error accordingly.
- ELSEIF, ELSE
- AND (boolean), OR (boolean)
- NOT, GOTO
- SELECT CASE
- Boolean (numerical comparisons return a true or false value)
Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page