前天是程序员节 ,CodeForces 上举办了一场比赛 , 要求必须使用 ADA 语言提交 . 顿时虐爆了我这个只知道 pascal,C,BASIC 这 3 种 语系的菜 . 今天闲着看 了 看这种语言 , 一看才知道竟然是美国军方专用计算机语言 . 总体感觉 : 什么 JB 玩意儿 , 比 C 语言差的远了 . 主要是写代码时感觉几乎没啥自由度 , 让人十分不爽 , 操作还那么麻烦 .
第一个程序照例是那最经典的 HW.
然而 , 我将程序写到源文件之后却始终无法 build, 最后我放弃了最常用的直接新建一个 .adb 文件的方法而采用 GPS.exe 的新建 , 终于编译出了可执行文件 .
程序如下 :
with Ada.Text_IO;
procedure Main is
begin
Ada.Text_IO.Put("Hello World!");
Ada.Text_IO.New_Line;
null;
end Main;
在 ADA 语言中采用 ”--” 作为注释的标志 ,”--” 之后知道行末的内容将被编译器忽略 .
with Ada.Text_IO; 差不多相当于 C 里的 #include<stdio.h>, 先这么理解 .
程序框架 :
Procedure procedure_name is
Statement1;
Begin
Statement2;
End procedure_name;
其中 ,statement1 是对变量或函数的声明部分 ,statement2 是程序的语句 .
为了方便 , 可以使用 use 语句 : 如 use Ada.Text_IO; 这样 , 在以后调用 Put 或者 New_Line 时就不用再加上 ” Ada.Text_IO. ” 了 . 有点类似于 C++ 中最常用的 using namespace std;
变量的声明方法 : 变量名 : 变量类型 := 初始化值
改进版的 HW 程序 :
with Ada.Text_IO;
use Ada.Text_IO;
procedure Main is
Str:String:="Hello World!";
begin
Ada.Text_IO.Put("Hello World!");
Ada.Text_IO.New_Line;
Put("Hello World!");
New_Line;
Put(Str);
New_Line;
end Main;
在 Ada 语言中数字字面值中间可以加入下划线以帮助阅读 , 如 454548456484 与 454_548_456_484 就没有什么区别 . 不过要注意的一点是两个下划线不能连用 , 下划线也不能加在数字末尾 .
除此之外 ,Ada 语言中可以直接采用 2~16 进制数来编写字面值 , 格式为 Base # Number #. 如 5 # 1234 #, 表示 5 进制下的 1234.
变量赋值操作符 : ” := ”
循环格式 :
循环名 :
Loop
代码 ...
End loop 循环名
Get_Line(String,Natural): 读入一行 Natural 返回字符串长度 .
Get(val): 读入 val 的值 .
下标访问 :A(5) 表示 A 的索引为 5 的元素 .
Exit Name : 从 Name 的代码段里退出 , 类比 break,return, 等
If 语句格式 :
If ( 表达式 ) then
代码段 ;
End if;
逻辑运算符 :
’ = ’ : 返回是否相等 .( “ >= ” , ” <= ” 类似 ).
字面值类型转换 :Float(100), 类比 C 语言中的 (double)100.