通過編寫「猜數字」遊戲來學習 Ada 編程語言
當你想 學習一種新的編程語言 時,把注意力放在編程語言的共同點上是很好的:
- 變數
- 表達式
- 語句
這些概念是大多數編程語言的基礎。一旦你理解了它們,你就可以開始琢磨其他的東西了。因為編程語言通常有相似之處,一旦你知道一種語言,你就可以通過了解其差異來學習另一種語言的基礎知識。
學習新語言的一個好方法是用一個標準程序進行練習。這使你能夠專註於語言,而不是程序的邏輯。在這個系列文章中,我使用了一個「猜數字」的程序,在這個程序中,計算機在 1 到 100 之間挑選一個數字,並要求你猜出來。程序循環進行,直到你猜對數字為止。
這個程序鍛煉了編程語言中的幾個概念:
- 變數
- 輸入
- 輸出
- 條件判斷
- 循環
這是一個學習新的編程語言的很好的實踐實驗。
安裝 Ada
Ada 編程語言 是一種獨特的、高度結構化的語言,有專門一群開發者使用它。Ada 的工具鏈是 GNU Ada 開發環境,多被稱為 GNAT。
你可以使用你的發行版的包管理器在 Linux 上安裝 GNAT。在 Fedora、CentOS 或類似系統上:
$ sudo dnf install gcc-gnat
在 Debian、Linux Mint 及衍生版上:
$ sudo apt install gnat
在 macOS 和 Windows 上,你可以從 Adacore 網站 下載一個安裝程序(從下拉菜單中選擇你的平台)。
在 Ada 中猜數字
創建一個名為 game.adb
的文件。
這個程序使用的兩個內置 Ada 庫:Text_IO
和 Numerics.Discrete_Random
:
with Ada.Text_IO;
use Ada.Text_IO;
with Ada.Numerics.Discrete_Random;
過程頭
過程 的名稱必須與文件的名稱一致。第一部分是定義變數。
注意,discrete_random
是專門針對特定範圍的。在這裡,允許數字範圍:
procedure Game is
type randRange is range 1..100;
package Rand_Int is new ada.numerics.discrete_random(randRange);
use Rand_Int;
gen : Generator;
num : randRange;
incorrect: Boolean := True;
guess: randRange;
過程邏輯
該邏輯從 reset(gen)
開始。這將初始化隨機數發生器,確保每次運行程序時,用 random(gen)
初始化的數字將是不同的。
下一步是運行循環:
- 輸出猜測的指令
- 讀取該行
- 將其轉換為
randRange
。 - 將其與數字進行核對
如果數字匹配,incorrect
被設置為 False
,導致循環的下一次迭代退出。
最後,程序在退出前會列印出對猜測正確性的確認:
begin
reset(gen);
num := random(gen);
while incorrect loop
Put_Line ("Guess a number between 1 and 100");
declare
guess_str : String := Get_Line (Current_Input);
begin
guess := randRange'Value (guess_str);
end;
if guess < num then
Put_line("Too low");
elsif guess > num then
Put_line("Too high");
else
incorrect := False;
end if;
end loop;
Put_line("That's right");
end Game;
編譯程序
編譯 Ada 程序的最簡單方法是使用 gnatmake
:
$ gnatmake game.adb
aarch64-linux-gnu-gcc-10 -c game.adb
aarch64-linux-gnu-gnatbind-10 -x game.ali
aarch64-linux-gnu-gnatlink-10 game.ali
這將生成一個名為 game
的二進位文件。
運行程序
程序的每次運行都會有一些不同。這是一個例子:
$ ./game
Guess a number between 1 and 100
50
Too low
Guess a number between 1 and 100
75
Too low
Guess a number between 1 and 100
82
Too low
Guess a number between 1 and 100
90
Too high
Guess a number between 1 and 100
87
Too low
Guess a number between 1 and 100
88
That's right
學習 Ada
這個「猜數字」遊戲是學習新的編程語言的一個很好的入門程序,因為它以一種相當直接的方式鍛煉了幾個常見的編程概念。通過在不同的編程語言中實現這個簡單的遊戲,你可以展示這些語言的一些核心概念,並比較它們的細節。
你有喜歡的編程語言嗎?你會如何用它來寫「猜數字」的遊戲?請關注本系列文章,看看你可能感興趣的其他編程語言的例子吧!
via: https://opensource.com/article/23/1/learn-ada-simple-game
作者:Moshe Zadka 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive