Ada学习笔记

-    注释
;    语句终止符
with    指定库
use    使用clause
generic    定义通用类型
package ... is    定义包(类)
procedure ... is    定义过程(函数的行为,无返回值)
function ... return    定义函数(有返回值)
begin    过程开始
end    过程结束
return    返回值
new    创建对象        --type ada_file is new file with private;
abstract    定义抽象类型
is abstract    定义抽象子程序    --function Union(Left, Right : Set) return Set is abstract;
access    引用类型(指针)    --type Node_Access is access Node;
----------------------------------------------------------------数据类型-----------------------------------------------------------------
constant        常数
float        浮点型
integer        整数    中间允许使用_连接
Positive        正数
Natural        自然数
Character        字符型
Wide_Character    字符型(非拉丁字母)
String        字符串类型    在创建时赋予其长度,并且其长度将保持不变
Bounded_String    字符串类型    长度可以变化,最大长度由你提供
Unbounded_String    字符串类型    长度可以变化,直到“自然”类型的最大值(通常超过20亿个字符)
boolean        布尔型
array        数组    索引可以以任何离散值开始和结束(通常从1开始)
File_Type        文件类型
-->正式类型:
    -->private        私有类型        可以为任意类型(可赋值)
    -->limited private        有限私有类型    可以为任意类型(不可赋值)
    -->(<>)        任意离散类型
---------------------------------------------------------------------语法-----------------------------------------------------------------
-->条件语句
    -->if ... elsif ... else ... end if 
    -->case ... is ... when (when others) ... end case
-->循环语句
    -->while/for ... in (reverse)        --for I in reverse 1 .. 20 loop   
    -->loop ... end loop
    -->可以通过exit/exit when子句终止
-->索引表示(以字符串A为示例)
    -->A'First    起始索引
    -->A'Last    终止索引
    -->A'Length    字符串长度
-->字符串操作
    --> function Element (Source : in Unbounded_String; Index  : in Positive) return Character;
    -->procedure Replace_Element (Source : in out Unbounded_String; Index  : in Positive; By : in Character);
    -->function Slice (Source : in Unbounded_String; Low : in Positive; High : in Natural) return String;
    -->procedure Insert (Source   : in out Unbounded_String; Before : in Positive; New_Item : in String);
    -->procedure Delete (Source  : in out Unbounded_String; From : in Positive; Through : in Natural);
-->定义类型
    -->type 类型名称 is 类型定义
        -->不完整的类型声明:type 类型名称      --需要稍后声明的类型的名称
    -->subtype 子类型名称 is 类型名称 类型定义       
-->定义结构体:record ... end record
-->定义局部变量:变量名称,:类型(默认为in):=赋初始值
    -->in          过程中接收值(可以使用参数的值但不能更改)
    -->out        过程中更改值(参数的值可能会被更改但不会被使用)
    -->in out    可以使用and/or更改参数的值
-->定义函数:function 函数名(参数:类型;)return 返回值
---------------------------------------------------------------------------------------------------------------------------------------
#    基数    --2#1001_1000#=128 + 16 + 8 = 152
/=    不等于
and then    &&
or else    ||
a..b    从a到b,表示范围(相当于range)
--0和False不一样(在Ada术语中它们是不同的类型)。如果要确定数字是否为零,使用=与0进行比较    
--不区分大小写(关键字区分大小写)
--禁止混合类型
-->动态调度:在运行时确定要调用哪个例程然后调用它的过程。每个标记类型的值都包含一个不可见的“标记”,此标记用于确定要调用的例程
-------------------------------------------------------------访问类型操作----------------------------------------------------------------
-->创建无界变量:定义存储(1)一条数据的记录(通常称为“节点”)和(2)将该条数据连接到另一条相关数据的一个或多个访问值。因此,访问类型可用于创建保存“无限制”信息量的数据类型。
  type List_Node;  -- An incomplete type declaration.
  type List_Node_Access is access List_Node;
  type List_Node is
    record
      Data : Integer;
      Next : List_Node_Access;  -- Next Node in the list.
    end record;
-->访问值的操作
  Current := new List_Node;
  Root    := new List_Node;
  Root.Data := 7;
  Current.Data := 12;
  Root.all := Current.all;          --获取Current访问的全部内容,并将这些内容复制到Root访问的内容(指针不变,值改变)
  Current := Root;          --不影响Root访问的基础节点 ,只更改Root本身的值(值不变,指针改变)
  Root.Data := 6;
-->垃圾回收
  generic
    type Object(<>) is limited private;
    type Name   is access  Object;
  procedure Unchecked_Deallocation(X : in out Name);
---------------------------------------------------------I/O操作(在Text_IO中定义)--------------------------------------------------
-->文本文件输入输出
    -->procedure Create (File : in out File_Type; Mode : in File_Mode := Out_File; Name : in String    := ""; Form : in String := "");
        -->Create创建新文件(删除原始文件)
        -->参数'Mode'可以为In_File(输入文件),Out_File(输出文件)或Append_File(附加在现有文本之后的输出文件);参数'Form'可选
    -->procedure Open   (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := "");
    -->procedure Close  (File : in out File_Type);
-->文本行操作
    -->Get_Line    --获取输入行
    -->Put_Line    --输出行
    -->Procedure New_Line    --结束当前行并开始一个新行。由可选参数指定新行数(默认值为1),还可指定输出文件(默认为Current_Output)
    -->Procedure Skip_Line    --读取当前行之后的行,丢弃当前行上尚未读取的任何文本
    -->Function End_Of_Line    --如果输入位于行的末尾,则返回True,否则返回False
    -->Function End_Of_File    --如果输入位于文件的末尾,则返回True,否则返回False
    -->Function Line        --返回正在读取或写入的文件的当前行号(第一行是数字1)
-----------------------------------------------------------------异常处理---------------------------------------------------------------
--错误可以作为异常发出信号并明确处理。通过异常机制自动捕获并处理许多严重错误(例如计算溢出和无效数组索引)
--引发异常时的默认操作是暂停程序。通常程序会打印出异常的名称以及发生问题的位置(取决于编译器)
-->声明异常:Singularity : exception;
-->抛出异常:raise Singularity;
-------------------------------------------------------------面向对象标准格式--------------------------------------------------------
  with PACKAGE_NAME_OF_PARENT;
  use  PACKAGE_NAME_OF_PARENT;
  package PACKAGE_NAME is
    type MY_TYPE is tagged private; -- or, new Parent_Type with private
    type MY_TYPE_Access is access all MY_TYPE'Access;
        -- We'll talk about this in a later lesson; by adding this declaration
        -- here you'll make certain operations easier to do later.
    -- Dispatching operations go here.
  private
    -- Define the details of MY_TYPE here.
  end PACKAGE_NAME;
----------------------------------------------------------------------参考链接---------------------------------------------------------
教程:https://www.adahome.com/Tutorials/Lovelace/     
BNF:https://www.adahome.com/Tutorials/Lovelace/bnf.htm
 

# 12.7

你可能感兴趣的:(编程语言)