计算机语言 ada什么意思,ADA编程绝版资料

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

2.3 创建数据类型和子类型(Creating Types and Subtypes)

使用变量时,除了以某标识符作为变量的名称外,还要指定该变量的数据类型。一个数据类型定义了变量可接受的值以及所能执行的操作。比如说,一个数据类型为 Age 的变量 Bill,Age 的取值范围为 1..100,并只有 + - 这两种操作,在这里,对象(object)为名为 Bill 的变量,它的取值在 1..100 之间(包括 1,100),值的变化只能通过+ -这些基本运算符(primitive operation)来实现,而无法通过* /等其它运算符。Ada 中的数据类型,包括预定义类型,都是按照一定的格式在程序包中创建的。下面就介绍创建数据类型的一些基本内容,更多相关内容会在以后见到。

2.3.1 创建新的数据类型

创建一个新类型,需要使用保留字 type,is,range。格式如下:

type type_name is range range_specifcation;

type_name 为新类型的名称,是一个合法标识符;range_specifcation 表示该类型的取值范围,表示方式为 First .. Last,如 1..100 , -9 ..10 。

例如创建上面提及的一个新类型 Age :

type Age is range 1 .. 100;

这样就有了一个数据类型 Age, 取值范围 1 .. 100。

有一点要注意:range_specfication 中 First 要大于 Last。 如 type months is range 12 .. 0, 实际上 months 是一个空集(null),而不是所期望的 0..12。

不同数据类型之间是不能进行混合运算的,即使取值范围和运算符一样,看以下的程序例子:

000 -- filename: putwage.adb

001 with Ada.Text_IO; use Ada.Text_IO;

002 with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

003 procedure putwage is

004 type Age is range 1 .. 100;

005 type Wage is range 1 .. 100;

006 Bill_Age : Age := 56;

007 Bill_Wage: Wage := 56;

008 begin

009 Put ("Total wage is");

010 Put (Bill_Wage * Bill_Age);

011 New_Line;

012 end putwage;

[001]-[002]: 使用软件包 Ada.Text_IO,Ada.Integer_Text_IO;两个软件包分别处理字符类输出和整数输出。

[003] [008] [012] 定义一个过程 putwage。

[004]-[005]: 定义新的数据类型Age,Wage,它们取值范围都为 1..100。

[006]-[007]: 声明两个变量 Bill_Age,Bill_Wage,类型分别为 Age 和Wage, 并赋予相同初始值56。

[009]-[011]:依次输出字符串"Total wage is",整数 Bill_Wage和Bill_Age的乘积,和一个新行符(EOL)。

以上程序看上去毫无问题,但根本无法编译通过。首先,没有定义类型Age和wage的 * 操作,因此Bill_Age和Bill_Wage无法相乘;第二,两者数据类型不同,即使定义了*操作,还是无法相乘。 当然也可使用后面提到的类型转换 ,如果将[010]改为Put (Integer(Bill_wage) * Integer(Bill_Age)),将会输出所要的 3136;但如果改成Put (Integer(Bill_wage * 56)),看上去也行的通,但实际结果却不是3136。不同数据之间不能进行运算,要牢牢记住。(Integer 是预先定义的一个整型,Integer(Bill_Wage)是将Bill_Wage强制转换为整型)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值