IF...THEN - QB64 Wiki

IF...THEN

From QB64 Wiki

(Difference between revisions)
Jump to: navigation, search
(style guidelines)
(style guidelines)
 
Line 32: Line 32:
* Use [[colon]]s to execute multiple statements in a single-line IF statement.
* Use [[colon]]s 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'''.
* 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.
+
* '''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.
Line 59: Line 59:
-
 
+
{{PageExamples}}
''Example 1:'' In a one line IF statement, only [[REM]] can be used to comment out the action without an [[END IF]] error:
''Example 1:'' In a one line IF statement, only [[REM]] can be used to comment out the action without an [[END IF]] error:
{{CodeStart}} '' ''
{{CodeStart}} '' ''
Line 79: Line 79:
-
''Example 3:'' True or False evaluation of a numerical value executes only when the value is not 0. '''Cannot evaluate [[STRING]] values!'''
+
''Example 3:'' True or False evaluation of a numerical value executes only when the value is not 0. '''Cannot evaluate [[STRING]] values.'''
{{CodeStart}} '' ''
{{CodeStart}} '' ''
{{Cl|INPUT}} "Enter a number or just hit Enter: ", x
{{Cl|INPUT}} "Enter a number or just hit Enter: ", x
Line 112: Line 112:
-
<center>'''Qbasic decimal point value comparison errors'''</center>
+
<center>'''QBasic decimal point value comparison errors'''</center>
* Floating decimal point numerical values may not be compared as exactly the same value. QB64 will compare them the same.
* Floating decimal point numerical values may not be compared as exactly the same value. QB64 will compare them the same.
-
:''Example:'' Qbasic will print ''unequal'' in the IF comparison code below even though it is exactly the same value printed.
+
:''Example:'' QBasic would print ''unequal'' in the IF comparison code below even though it is exactly the same value printed.
{{CodeStart}} '' ''
{{CodeStart}} '' ''
x# = 5 / 10
x# = 5 / 10
Line 125: Line 125:
-
''See also:''
+
{{PageSeeAlso}}
* [[ELSEIF]], [[ELSE]]
* [[ELSEIF]], [[ELSE]]
* [[AND (boolean)]], [[OR (boolean)]]  
* [[AND (boolean)]], [[OR (boolean)]]  
* [[NOT]], [[GOTO]]
* [[NOT]], [[GOTO]]
* [[SELECT CASE]]
* [[SELECT CASE]]
-
* [[Boolean]] {{text|(numerical comparisons return a True or False value)}}
+
* [[Boolean]] {{text|(numerical comparisons return a true or false value)}}
{{PageNavigation}}
{{PageNavigation}}

Current revision as of 03:40, 20 September 2017

IF...THEN statements make boolean (true or false) evaluations to automate program decision making.

Contents

Syntax

Single-line

IF conditionStatement THEN {code} ELSE {alternativeCode}
IF conditionStatement GOTO lineLabel


Block

IF conditionStatement THEN
{code}
ELSEIF conditionStatement2 THEN
{code}
ELSE
{code}
END IF


Description

  • 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.


Relational Operators:
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


When evaluating a number value, no IF value > 0 operation is necessary for values not 0. Use: IF value THEN


Boolean Conditional Operators:


  • 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.


Mathematical Logical operators:
* Truth table of the 6 BASIC Logical Operators:


The results of the bitwise logical operations, where A and B are operands, and T and F indicate that a bit is set or not set:
Operands Operations
A B NOT B A AND B A OR BA XOR BA EQV BA IMP B
T T F T T F T T
T F T F T T F F
F T F F T T F T
F F T F F F T T
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.


* Note that Basic returns -1 for True and 0 for False.


Examples

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 x > 100 THEN PRINT x IF 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 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 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)


Example 4: Multiple evaluations using parenthesis to determine the order.

INPUT "Enter a number over or under 100 or 50: ", value IF (value% > 100 AND value% < 200) OR 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 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"

Explanation: Long STRING expression values are compared by their cumulative ASCII code values.


QBasic decimal point value comparison errors
  • 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 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.


See also



Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
Personal tools