a) Nhãn, lệnh nhảy gotos.
Tất cả các chương trình vừa giới thiệu đều chạy trực tiếp. Chúng bắt đầu chạy từ lệnh đầu tiên và chạy từng dòng một. Nhưng điều hay nhất trong lập trình đó là khả năng thay đổi trật tự của các lệnh trong chương trình. Hãy xem dòng lệnh sau debug”Ready…” debug”Ready…” debug”Set..” BS2 debug”Set..” debug”Go!” debug”Go!”
Bây giờ, có thểđoán trước được kết quả của chương trình; Stamp sẽ hiển thị.
Có thể thay đổi chương trình như sau
BS2
debug ”Ready...” goto Start
debug “Set” Start:
debug “Go!”,cr Nhận được:
Ready...Go!
Stamp bỏ qua các lệnh in Set.. do sử dụng lệnh nhảy goto Start, Stamp sẽ thấy nó bỏ qua câu lệnh
debug “Set..”
Điều này minh họa cách đơn giản nhất để thay đổi tiến trình hoạt động của chương trình. Nhãn bao gồm một tên và kết thúc là dấu (:), nhãn thường đứng trước lệnh sẽ là đích của lệnh nhảy goto.
Thông thường, cập goto/label được sử dụng để tạo vòng lặp. Chúng ta hãy xem ví dụ dưới đây xem có gì khác với các ví dụ trên không.
BS1: debug ”Ready...” goto Start debug “Set” Start: debug “Go!”,cr goto Start Nếu chạy chương trình sẽ thấy sự lặp lại các chỉ thị, và Stamp sẽ hiển thị:
Ready...Set..Go! Go! Go!
Nó sẽ lặp lại lệnh Go! Đến vô tận.
b) Vòng lặp For...Next
Giả sử muốn lặp lại lệnh Go! Ba lần hoặc một số lần. Cặp lệnh goto/label không cho phép đặt được số vòng lặp, nhưng có một cặp lệnh cho phép điều khiển chúng.
BS2:
Symbol loops = b0 FOR loops=1 to 3
debug “Go!”,cr NEXT
debug “Done” Chúng ta sẽ có Go! Go! Go! Done.
Cặp lện For ...Nẽt sử dụng biến đểđếm số vòng lặp. Lệnh For đặt giá trị ban đầu của biến:
FOR loops=1 ...
Phần sau câu lệnh For là ...to 3, thực chất là để thông báo cho lệnh Next. Lệnh Next thêm 1 vào biến (vòng lặp) và so sánh kết quả với giá trị cuối cùng được gửi từ lện For (trong trường hợp này bằng 3). Nếu giá trị biến nhỏ hơn hoặc bằng với kết quả cuối cùng, lệnh Nẽt làm cho vòng lặp của chương trình quay trở lại lệnh For. Nếu giá trị biến lớn hơn giá trị cuối cùng thì lệnh Next kết thúc vòng lặp và để chương trình chạy tiếp các câu lệnh khác.
For...Next sẽ chạy các câu lệnh nằm giữa chúng và vẫn tiếp tục cho đến khi giá trị biến vượt quá giá trị cuối cùng.
c) Cấu điều kiện If...Then
Trong BASIC sử dụng câu điều kiện If...Then. Ví dụ:
BS2 x varbyte x=99 IF x<100 then saySo debug “x is 100 or more” End saySo
debug “x is less than 900”
chương trình đưa ra x=99 nhỏ hơn 100. Thay đổi x=99 gán giá trị x bằng 100 hoặc nhiều hơn (nhưng không lớn hơn 255, giá trị lớn nhất của byte) và trở lại chương trình. Bây giờ chương trình sẽ hiển thị thông điệp “x is 100 or more”. (x lớn hơn hoặc bằng 100).
Có hai phần trong câu lệnh If...Then. phần đầu là điều kiện- câu lệnh này là mối quan hệ giữa hai giá trị, như là x<100. Nếu câu lệnh If đúng thì vế thứ hai sẽđược thực hiện. Nếu câu điều kiện sai thì câu lẹnh If...then sẽ không lam gì cả. nó cho phép chương trình tiếp tục chạy các câu lệnh khác.
Biểu tượng ý nghĩa = < > <> <= >= Bằng Nhỏ hơn Lớn hơn Không bằng Nhỏ hơn hoặc bằng Lớn hơn hoặc bằng Ví dụ: BS2
Loops var byte Loops=0 Repeat:
Debug “looping:”, DEC loops,cr Loops=loops +1
If loops <=5 then repeat Debug “Done:”, DEC loops
d) Lệnh Gosub
Các lệnh trong ngôn ngữ Stamp đều sử dụng hòm công cụđể xây dựng chương trình. Và thùng công cụ này nhỏ, chỉ có 36 lệnh trong BS2. trong một số trường hợp, nhóm lệnh sẽ rất hữu ích vì nó sẽ sử dụng nhiều hơn một lần trong chương trình đơn, ở đó ta sử dụng câu lệnh Gosub...Return.
Gosub là một biến thể của lệnh Goto, nó gọi chương trình con được bắt đầu bằng một nhãn và bao giờ cũng kết thúc bằng lệnh Return. Sau đây là một ví dụ có sử dụng chương trình con:
BS2
Loops var byte
Debug “Subroutine Example” GOSUB mySub
For loops=0 to 5 Debug DEC loops GOSUB mySub Next end mySub: pause 500 debug cls,”>” RETURN
Chương trình con mySub sẽ làm tạm dừng chương trình Stamp một nửa giây (500/1000ths/sec), xóa màn hình Debug bằng lệnh cls, và ghi ra màn hình ký tự>. Khi chạy chương trình, chương trình con được đưa vào đầu chương trình và được gọi một lần trong mỗi bước của vòng lặp.