通過「猜數字」遊戲學習 Basic
本教程讓你通過編寫一個 「猜數字」 遊戲來探索 Basic。
用多種語言編寫同一個應用是學習新的編程語言的好方法。大多數編程語言都有某些共同點,如:
- 變數
- 表達式
- 語句
這些概念是大多數編程語言的基礎。當你理解了它們,你就可以開始研究其他的東西了。
編程語言通常有一些相似之處。當你了解了一種編程語言,你就可以通過認識其差異來學習另一種語言的基礎知識。
用標準程序進行練習是學習新語言的一個好方法。它使你能夠專註於語言,而不是程序的邏輯。在這個系列文章中,我使用了一個「猜數字」的程序,在這個程序中,計算機在 1 到 100 之間挑選一個數字,並要求你猜出來。程序循環進行,直到你猜對數字為止。
這個程序鍛煉了編程語言中的幾個概念:
- 變數
- 輸入
- 輸出
- 條件判斷
- 循環
這是學習一種新的編程語言的很好的實踐。本文主要介紹 Basic。
在(Bywater)Basic 中猜數字
對於 Basic 編程語言,沒有真正的標準。維基百科說:「BASIC( 初學者通用符號指令代碼 )是一個通用的高級編程語言系列,旨在方便使用」。BWBasic 的實現是在 GPL 下提供的。
你可以通過編寫一個「猜數字」遊戲來探索 Basic。
在 Linux 上安裝 Basic
在 Debian 或 Ubuntu 中,你可以用以下方法安裝 Basic:
$ apt install -y bwbasic
下載 Fedora、CentOS、Mageia 和其他任何 Linux 發行版的最新版本 tarball。解壓並設置可執行,然後從終端運行它:
$ tar --extract --file bwbasic*z
$ chmod +x bywater
$ ./bywater
在 Windows 上,下載 .exe 版本。
Basic 代碼
下面是我的實現:
10 value$ = cint(rnd * 100) + 1
20 input "enter guess"; guess$
30 guess$ = val(guess$)
40 if guess$ < value$ then print "Too low"
50 if guess$ > value$ then print "Too high"
60 if guess$ = value$ then 80
70 goto 20
80 print "That's right"
Basic 程序可以是編號的,也可以是不編號的。通常情況下,寫程序時最好不編號,但用編號的行來寫,可以更容易地引用各個行。
按照慣例,編碼者將行寫成 10 的倍數。這種方法允許在現有的行之間插入新的行,以便進行調試。下面是我對上述方法的解釋:
- 10 行:使用內置的
rnd
函數計算一個 1 到 100 之間的隨機值,該函數生成一個 0 到 1 之間的數字,不包括 1。 - 20 行:詢問一個猜測,並將該值放入
guess$
標量變數。30 行將該值轉換為一個數字。 - 40 行和 50 行:根據比較結果,給猜測者以反饋。
- 70 行:回到循環的起點。
- 60 行:通過將控制權轉移到 80 行來打破循環。80 行是最後一行,所以程序在這之後退出。
輸出示例
下面是將該程序放入 program.bas
後的一個例子:
$ bwbasic program.bas
Bywater BASIC Interpreter/Shell, version 2.20 patch level 2
Copyright (c) 1993, Ted A. Campbell
Copyright (c) 1995-1997, Jon B. Volkoff
enter guess? 50
Too low
enter guess? 75
Too low
enter guess? 88
Too high
enter guess? 80
Too low
enter guess? 84
Too low
enter guess? 86
Too high
enter guess? 85
That's right
開始學習
這個「猜數字」遊戲是學習新的編程語言的一個很好的入門程序,因為它以一種相當直接的方式鍛煉了幾個常見的編程概念。通過在不同的編程語言中實現這個簡單的遊戲,你可以展示這些語言的一些核心概念,並比較它們的細節。
你有喜歡的編程語言嗎?你會如何用它來寫「猜數字」的遊戲?請關注本系列文章,看看你可能感興趣的其他編程語言的例子吧!
via: https://opensource.com/article/23/2/learn-basic-coding-game
作者:Moshe Zadka 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive