前天是程序员节,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.