OTHER CONTRIBUTIONS: FOR...NEXT BEST PRACTICE

This program will try to answer to the Gary Luckenbaugh's article about FOR...NEXT best practice under ugBASIC.

Click here for more informations.

source compile sandbox issues? back to examples

SOURCE CODE ()

CLS

''' RULE #1
' Always enter a FOR-NEXT loop at the FOR. Don’t even think about entering 
' the middle of a loop. Not surprisingly, “there be dragons here” if you 
' do.
'
' In ugBASIC you can enter into a FOR...NEXT without problems.

PRINT "RULE#1"
PRINT

DIM x1 AS BYTE

x1 = 1

GOTO inTheMiddle1

FOR x1 = 1 TO 10

inTheMiddle1:

	PRINT x1;" ";
NEXT x1

PRINT

''' RULE #2
' Never leave a FOR-NEXT mid-flight. Use FOR-NEXT to count from the 
' beginning to the TO value with steps of STEP. If you feel you must 
' leave a FOR in mid-flight, then FOR is not the proper construct.
'
' In ugBASIC you can exit out from a FOR...NEXT without problems.

PRINT:PRINT "RULE #2"
PRINT

DIM x2 AS BYTE

FOR x2 = 1 TO 10

	PRINT x2;" ";
	
	IF x2 > 4 THEN GOTO outOfFor2
	
NEXT x2

outOfFor2:

PRINT

''' RULE #3
' If you absolutely must jump out of a FOR, then you must always 
' come back to where you left off. The best way to do this is 
' via GOSUB to jump out and then RETURN to where you were. 
' At the location where you jump out, there should be no 
' FORs with the same control variable, in this case i.
'
' In ugBASIC you can jump out using GOTO (see rules #1 and #2)
' and you can use the same variable if you jump inside a GOSUB.

''' RULE #4
' Never enter a FOR loop recursively, unless you are using a modern 
' BASIC, and even then use recursive subs/functions and not GOTOs 
' or GOSUBS
'
' ugBASIC does not support recursion

''' RULE #5
' Don’t try to change the final value or the step when a FOR-NEXT 
' is in-flight. You may get away with this on some BASICs and 
' not on others.
'
' In ugBASIC you can change initial, final and step value.

PRINT:PRINT "RULE #5"
PRINT

DIM x5 AS BYTE, f5 AS BYTE, t5 AS BYTE, s5 AS BYTE

f5 = 1: t5 = 10: s5 = 2

FOR x5 = f5 TO t5 STEP s5

	PRINT x5; " ";
	
	IF x5 > 4 THEN
		t5 = 10
		s5 = 4
	ENDIF
	
NEXT 

PRINT

''' RULE #6
' Don’t change the control variable in-flight:
'
' In ugBASIC you can change the contro variable, as you like.

PRINT:PRINT "RULE #6"
PRINT

DIM x6 AS BYTE

FOR x6 = 1 TO 10

	PRINT x6;" ";
	
	IF x6 > 3 THEN x6 = 10
		
NEXT 

PRINT

''' RULE #7
' Draw a line from each FOR to the corresponding NEXT, and make 
' sure no lines overlap, as depicted below:
'
'     +-- for i = 1 to 10
'     |
'+----|--------for j = 1 to 10
'+    |
'+    +---next i
'+
'+-------next j
'
' Also ugBASIC respects this rule.

How to compile and run the example

The instructions here refer to compiling the example from the command line. For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile each single example with just one click.



Are instructions for your specific home computer / console missing? First of all, check if your computer is supported by clicking here. If so, since ugBASIC is a language which does not provide abstractions, it is possible that this example will not work on your target. If you think this is an issue, please click here.

Amstrad CPC 464, Amstrad CPC 6128, Amstrad CPC 664

In order to compile the example, type this command on the command line:

Linux

ugbc.cpc -O dsk -o contrib_for_next_bp.dsk contrib_for_next_bp.bas

Windows

ugbc.cpc.exe -O dsk -o contrib_for_next_bp.dsk contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Atari 1200XL, Atari 130XE, Atari 600XL, Atari 65XE, Atari 800XE, Atari 800XL, Atari XEGS

In order to compile the example, type this command on the command line:

Linux

ugbc.atarixl -O xex -o contrib_for_next_bp.xex contrib_for_next_bp.bas

Windows

ugbc.atarixl.exe -O xex -o contrib_for_next_bp.xex contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Atari 400, Atari 800

In order to compile the example, type this command on the command line:

Linux

ugbc.atari -O xex -o contrib_for_next_bp.xex contrib_for_next_bp.bas

Windows

ugbc.atari.exe -O xex -o contrib_for_next_bp.xex contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Coleco Vision, Dina (Chuang Zao Zhe 50), SpectraVideo SV-603 VGA

In order to compile the example, type this command on the command line:

Linux

ugbc.coleco -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

Windows

ugbc.coleco.exe -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Commodore 128 (CPU 8502)

In order to compile the example, type this command on the command line:

Linux

ugbc.c128 -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

Windows

ugbc.c128.exe -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Commodore 128 (CPU Z80)

In order to compile the example, type this command on the command line:

Linux

ugbc.c128z -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

Windows

ugbc.c128z.exe -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Commodore 64, Commodore Executive 64

In order to compile the example, type this command on the command line:

Linux

ugbc.c64 -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

Windows

ugbc.c64.exe -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Dragon 32

In order to compile the example, type this command on the command line:

Linux

ugbc.d32 -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

Windows

ugbc.d32.exe -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Dragon 64

In order to compile the example, type this command on the command line:

Linux

ugbc.d64 -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

Windows

ugbc.d64.exe -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

MSX

In order to compile the example, type this command on the command line:

Linux

ugbc.msx1 -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

Windows

ugbc.msx1.exe -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Olivetti Prodest PC128, Thomson MO6

In order to compile the example, type this command on the command line:

Linux

ugbc.pc128op -O k7 -o contrib_for_next_bp.k7 contrib_for_next_bp.bas

Windows

ugbc.pc128op.exe -O k7 -o contrib_for_next_bp.k7 contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Plus/4

In order to compile the example, type this command on the command line:

Linux

ugbc.plus4 -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

Windows

ugbc.plus4.exe -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

SEGA SC-3000

In order to compile the example, type this command on the command line:

Linux

ugbc.sc3000 -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

Windows

ugbc.sc3000.exe -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

SEGA SG-1000

In order to compile the example, type this command on the command line:

Linux

ugbc.sg1000 -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

Windows

ugbc.sg1000.exe -O rom -o contrib_for_next_bp.rom contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

TRS-80 Color Computer, TRS-80 Color Computer 2

In order to compile the example, type this command on the command line:

Linux

ugbc.coco -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

Windows

ugbc.coco.exe -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

TRS-80 Color Computer 3

In order to compile the example, type this command on the command line:

Linux

ugbc.coco3 -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

Windows

ugbc.coco3.exe -O bin -o contrib_for_next_bp.bin contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Thomson MO5

In order to compile the example, type this command on the command line:

Linux

ugbc.mo5 -O k7 -o contrib_for_next_bp.k7 contrib_for_next_bp.bas

Windows

ugbc.mo5.exe -O k7 -o contrib_for_next_bp.k7 contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

VIC-20

In order to compile the example, type this command on the command line:

Linux

ugbc.vic20 -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

Windows

ugbc.vic20.exe -O prg -o contrib_for_next_bp.prg contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

ZX Spectrum +2, ZX Spectrum 128K, ZX Spectrum 48K

In order to compile the example, type this command on the command line:

Linux

ugbc.zx -O tap -o contrib_for_next_bp.tap contrib_for_next_bp.bas

Windows

ugbc.zx.exe -O tap -o contrib_for_next_bp.tap contrib_for_next_bp.bas

For Microsoft Windows users we suggest using UGBASIC-IDE, which allows you to download and compile this example with just one click.

Any problem?

If you have found a problem trying to run this example, if you think there is a bug or, more simply, you would like it to be improved, open an issue for this example on GitHub.
Thank you!

open an issue BACK TO EXAMPLES