Linux中國

通過編寫「猜數字」遊戲來學習 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_IONumerics.Discrete_Random

with Ada.Text_IO;
use Ada.Text_IO;
with Ada.Numerics.Discrete_Random;

過程頭

過程 procedure 的名稱必須與文件的名稱一致。第一部分是定義變數。

注意,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&apos;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&apos;s right

學習 Ada

這個「猜數字」遊戲是學習新的編程語言的一個很好的入門程序,因為它以一種相當直接的方式鍛煉了幾個常見的編程概念。通過在不同的編程語言中實現這個簡單的遊戲,你可以展示這些語言的一些核心概念,並比較它們的細節。

你有喜歡的編程語言嗎?你會如何用它來寫「猜數字」的遊戲?請關注本系列文章,看看你可能感興趣的其他編程語言的例子吧!

via: https://opensource.com/article/23/1/learn-ada-simple-game

作者:Moshe Zadka 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國