Redian新闻
>
通过编写“猜数字”游戏来学习 Ada 编程语言 | Linux 中国

通过编写“猜数字”游戏来学习 Ada 编程语言 | Linux 中国

科技
 
导读:这个 "猜数字 "游戏是学习新编程语言的一个很好的入门程序,因为它以一种相当直接的方式锻炼了几个常见的编程概念。
本文字数:2923,阅读时长大约:3分钟

这个 "猜数字 "游戏是学习新编程语言的一个很好的入门程序,因为它以一种相当直接的方式锻炼了几个常见的编程概念。

当你想 学习一种新的编程语言🔗 opensource.com 时,把注意力放在编程语言的共同点上是很好的:

◈ 变量
◈ 表达式
◈ 语句

这些概念是大多数编程语言的基础。一旦你理解了它们,你就可以开始琢磨其他的东西了。因为编程语言通常有相似之处,一旦你知道一种语言,你就可以通过了解其差异来学习另一种语言的基础知识。

学习新语言的一个好方法是用一个标准程序进行练习。这使你能够专注于语言,而不是程序的逻辑。在这个系列文章中,我使用了一个“猜数字”的程序,在这个程序中,计算机在 1 到 100 之间挑选一个数字,并要求你猜出来。程序循环进行,直到你猜对数字为止。

这个程序锻炼了编程语言中的几个概念:

◈ 变量
◈ 输入
◈ 输出
◈ 条件判断
◈ 循环

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

安装 Ada

Ada 编程语言🔗 opensource.com 是一种独特的、高度结构化的语言,有专门一群开发者使用它。Ada 的工具链是 GNU Ada 开发环境,多被称为 GNAT。

你可以使用你的发行版的包管理器在 Linux 上安装 GNAT。在 Fedora、CentOS 或类似系统上:

  1. $ sudo dnf install gcc-gnat

在 Debian、Linux Mint 及衍生版上:

  1. $ sudo apt install gnat

在 macOS 和 Windows 上,你可以从 Adacore 网站🔗 www.adacore.com 下载一个安装程序(从下拉菜单中选择你的平台)。

在 Ada 中猜数字

创建一个名为 game.adb 的文件。

这个程序使用的两个内置 Ada 库:Text_IO 和 Numerics.Discrete_Random

  1. with Ada.Text_IO;
  2. use Ada.Text_IO;
  3. with Ada.Numerics.Discrete_Random;

过程头

过程(procedure) 的名称必须与文件的名称一致。第一部分是定义变量。

注意,discrete_random 是专门针对特定范围的。在这里,允许数字范围:

  1. procedure Game is
  2. type randRange is range 1..100;
  3. package Rand_Int is new ada.numerics.discrete_random(randRange);
  4. use Rand_Int;
  5. gen : Generator;
  6. num : randRange;
  7. incorrect: Boolean := True;
  8. guess: randRange;

过程逻辑

该逻辑从 reset(gen) 开始。这将初始化随机数发生器,确保每次运行程序时,用 random(gen) 初始化的数字将是不同的。

下一步是运行循环:

◈ 输出猜测的指令
◈ 读取该行
◈ 将其转换为 randRange
◈ 将其与数字进行核对

如果数字匹配,incorrect 被设置为 False,导致循环的下一次迭代退出。

最后,程序在退出前会打印出对猜测正确性的确认:

  1. begin
  2. reset(gen);
  3. num := random(gen);
  4. while incorrect loop
  5. Put_Line ("Guess a number between 1 and 100");
  6. declare
  7. guess_str : String := Get_Line (Current_Input);
  8. begin
  9. guess := randRange'Value (guess_str);
  10. end;
  11. if guess < num then
  12. Put_line("Too low");
  13. elsif guess > num then
  14. Put_line("Too high");
  15. else
  16. incorrect := False;
  17. end if;
  18. end loop;
  19. Put_line("That's right");
  20. end Game;

编译程序

编译 Ada 程序的最简单方法是使用 gnatmake

  1. $ gnatmake game.adb
  2. aarch64-linux-gnu-gcc-10 -c game.adb
  3. aarch64-linux-gnu-gnatbind-10 -x game.ali
  4. aarch64-linux-gnu-gnatlink-10 game.ali

这将生成一个名为 game 的二进制文件。

运行程序

程序的每次运行都会有一些不同。这是一个例子:

  1. $ ./game
  2. Guess a number between 1 and 100
  3. 50
  4. Too low
  5. Guess a number between 1 and 100
  6. 75
  7. Too low
  8. Guess a number between 1 and 100
  9. 82
  10. Too low
  11. Guess a number between 1 and 100
  12. 90
  13. Too high
  14. Guess a number between 1 and 100
  15. 87
  16. Too low
  17. Guess a number between 1 and 100
  18. 88
  19. That's right

学习 Ada

这个“猜数字”游戏是学习新的编程语言的一个很好的入门程序,因为它以一种相当直接的方式锻炼了几个常见的编程概念。通过在不同的编程语言中实现这个简单的游戏,你可以展示这些语言的一些核心概念,并比较它们的细节。

你有喜欢的编程语言吗?你会如何用它来写“猜数字”的游戏?请关注本系列文章,看看你可能感兴趣的其他编程语言的例子吧!


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

作者:Moshe Zadka 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1850.5 篇
|
贡献: 3367 天
2013-10-25
2023-01-13
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
那些意欲取代 C++ 的编程语言,成功了吗?通过编写嵌入式系统入门边缘计算 | Linux 中国中文编程不如英文香?今年诞生的这些国产编程语言表示不服瞎掰呼一下CPI 和 12月加息。C++崛起,摘得TIOBE 2022年度编程语言2023需求最高的编程语言:Python、JavaScript和Java微软公布 .NET最新的编程语言支持策略以调试 Rust 的方式来学习 Rust | Linux 中国如果编程语言是人......这种维生素补充剂会引发癌症和转移风险VR游戏周报 | “黑五”促销进行中,一大波射击游戏来袭论虚伪《歌剧不死》2这款源自以色列的编程游戏,通过“闯关”教孩子写真实的编程语言时隔 20 年,这个编程语言再次“称王”!编写好 Git 提交信息的 11 个技巧 | Linux 中国Rust将迎来爆发式增长;更多国产编程语言进入视野 | 编程语言领域解读通过“猜数字”游戏学习 Basic | Linux 中国硬核观察 #870 C 语言已不再仅仅是一种编程语言谷歌最好的程序员Jeff Dean:我用过 18 种编程语言通过 SSH 在远程 Linux 系统上执行命令 | Linux 中国计算机编程的历史演进:用 50 种编程语言写 “Hello,World!” 程序国内最流行的编程语言调优,它排第一!在 VS Code 和 Codium 中编写 Python 程序 | Linux 中国黑客使用哪些编程语言?C++ 夺冠!成为 TIOBE 2022 年度编程语言"𝙇𝙚𝙖𝙙 𝙏𝙝𝙚 𝘾𝙝𝙖𝙧𝙜𝙚"广告#创译挑战用复古电脑程序 Toy CPU 学习低级编程 | Linux 中国应用层|关于编程语言中的那些「锁」事C++ 夺冠!2022 年度编程语言硬核观察 #911 C++ 之父呼吁改变编程语言本身以提升安全性囚犯硬核观察 #847 Java 不再是最受欢迎的三大编程语言之一源自以色列的编程游戏,通过“闯关”教孩子写真实的编程语言我们应该如何用好 AI?从 ChatGPT 到编程语言、大数据、前端
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。