通过编写一个简单的游戏学习 Ada 编程语言

这个“猜数字”游戏是学习一门新编程语言的绝佳入门程序,因为它以一种非常直接的方式练习了几个常见的编程概念。
2 位读者喜欢这篇文章。
Working from home at a laptop

Opensource.com

当您想学习一门新的编程语言时,最好专注于编程语言的共同之处

  • 变量
  • 表达式
  • 语句

这些概念是大多数编程语言的基础。一旦你理解了它们,你就可以开始弄清楚其余的部分。因为编程语言通常具有相似性,一旦你掌握了一门语言,你就可以通过理解其差异来学习另一门语言的基础知识。

学习新语言的一个好方法是用标准程序进行练习。这使您可以专注于语言本身,而不是程序的逻辑。我正在本系列文章中使用“猜数字”程序来做到这一点,在这个程序中,计算机选择一个介于 1 到 100 之间的数字,并要求您猜测它。程序循环运行,直到您正确猜出数字。

这个程序练习了编程语言中的几个概念

  • 变量
  • 输入
  • 输出
  • 条件评估
  • 循环

这是一个学习新编程语言的绝佳实践实验。

安装 Ada

Ada 编程语言是一种独特且高度结构化的语言,拥有专门的开发者群体。Ada 的工具链是 GNU Ada 开发环境,更广为人知的名称是 GNAT。

您可以使用 Linux 发行版的软件包管理器在 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;

过程头

过程的名称必须与文件名匹配。第一部分是定义变量。

请注意,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

这个“猜数字”游戏是学习一门新编程语言的绝佳入门程序,因为它以一种非常直接的方式练习了几个常见的编程概念。通过用不同的编程语言实现这个简单的游戏,您可以演示这些语言的一些核心概念并比较它们的细节。

您有最喜欢的编程语言吗?您会如何用它编写“猜数字”游戏?关注本系列文章,了解您可能感兴趣的其他编程语言的示例!

标签
Moshe sitting down, head slightly to the side. His t-shirt has Guardians of the Galaxy silhoutes against a background of sound visualization bars.
Moshe 自 1998 年以来一直参与 Linux 社区,在 Linux “安装聚会”中提供帮助。他自 1999 年以来一直使用 Python 编程,并为核心 Python 解释器做出了贡献。Moshe 在那些术语出现之前就一直是 DevOps/SRE,非常关心软件可靠性、构建可重现性以及其他此类事情。

评论已关闭。

© . All rights reserved.