zoukankan      html  css  js  c++  java
  • volcanol的工控博客

      这次是一个基本语法的第一部分,包括变量、变量初始化、常量、运算符、字符串等内容。

    {
            本程序演示 Delphi Pascal 的基本语法
    1、变量及变量的初始化
    2、常量
    3、运算符
    3、
    4、
    
    }
    program Syntax;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils,Windows,StrUtils;
    
    
    {       变量
    1、Delphi中变量必须在固定的地方进行定义
    2、Delphi中通过关键字 var 来定义变量
    3、语法格式为:
                    var  变量名标识符列表 : 变量类型 ;
        变量名列表中的各个变量名之间用逗号隔开
    4、初始化格式为
                    var  变量名标识符列表 : 变量类型 = 初始化值;
    
    5、注意三个符号的位置 冒号  等于号 和 分号
    }
    var
        //第一种形式的变量定义
        greetWord:string;
        //第二种形式的变量定义
        nAdd,nAddFactor:integer;
    
        //变量的初始化
        rad : single = 5.0 ;
    
        //宽字符字符串
        chinaName:WideString;
        //ansichar 类型单字节字符串
        englishName:AnsiString;
    
        //定义一个没有初始化的字符串
        noInitString:string;
    
        //定义一个与win32兼容的字符串
        dirWideString:widestring;
        dirString:ansistring;
    
    
    
    {       常量
    1、Delphi中预定义了一部分常量
            true   Boolean 类型的true
            false  Boolean 类型的false
    
    2、在Delphi中利用 const 关键字定义常量
    3、语法格式为
                    const  常量名标识符 : 常量的数据类型 = 初始化值。
    4、初始化值必须有,常量的数据类型可以省略,Delphi会根据初始化值自动确定
        常量的数据类型,进而分配相应的内存空间。 但是对于整数型的常量,内存
        空间的分配遵循能容纳初始化值的最小空间数据类型确定。
        例如:
                10 会确定为 shortint类型
    5、常量还有一种常量字面值,就是和C语言中一样的字面值,例如
        10    整数常量
        2.06  实数常量
        'Hello world' 字符串常量
        'a' 字符常量
    
    }
    const
        pi:single=3.1415926;
    
    {       要点
    1、Delphi中允许在定义变量和常量的时候使用编译期函数来初始化变量。
    2、常见的编译期函数有:
            Sizeof()
            Ord()
            Chr()
            Trunc()
            Round()
            High()
            Low()
        这里就不举例啦,一般不太会用到,
    }
    
    begin
        //赋值运算符 :=
        greetWord := 'Hello, Wellcome to Delphi world!';
    
        //比较运算符 = 判断是否相等
        nAdd := 10;
        nAddFactor := 1;
        if nAdd = nAddFactor then
        begin
            writeln('Equal.');
        end;
    
        //比较运算符  <> 不等于运算符, 如果不相等则返回TRUE
        if nAdd <> nAddFactor then
        begin
            writeln('Not Equal.');
        end;
    
        //逻辑运算符  and 与 ,注意Delphi中逻辑运算符的优先级要高于比较运算符
        if (1 = nAdd) and (2 <> nAddFactor )then
        begin
            writeln('The judge is ture.');
        end;
    
        //逻辑或   or  非 , 注意Delphi中逻辑运算符的优先级要高于比较运算符
        if (1 = nAdd) or (2 <> nAddFactor )then
        begin
            writeln('The judge is ture.');
        end;
    
    
        //逻辑非  not 非, 注意Delphi中逻辑运算符的优先级要高于比较运算符
        if not (1 = nAdd) then
        begin
            writeln('1 is not equal nAdd.');
        end;
    
        {       数学运算符
        1、数学运算符基本与C语言类似,但是有几个特殊的需要说明一下
        2、mod  求模运算符
        3、div  整数除法, 得到的结果是整数
        4、/    浮点数除法,得到的结果是浮点数
        }
        writeln('整数除法 3 div 2 的结果是:');
        writeln(3 div 2);
    
        writeln('浮点数除法 3 / 2 的结果是:');
        writeln(3 / 2);
    
        writeln('求余数 3 mod 2 的结果是:');
        writeln(3 mod 2);
    
    
        {       按位运算符
        1、Delphi也提供了按位运算的运算符
        2、and  按位与
        3、or   按位或
        4、not  按位非
        5、xor  按位异或
        6、shl  按位左移
        7、shr  按位右移
        }
        writeln('2 and 5 按位与的结果是:');
        writeln(2 and 5);
    
        writeln('2 or 5 按位或的结果是:');
        writeln(2 or 5);
    
        writeln('not 2 按位非的结果是:');
        writeln(not 2);
    
        writeln('2 xor 5 按位异或的结果是:');
        writeln(2 xor 5);
    
        writeln('2 shl 5 按位左移的结果是:');
        writeln(2 shl 5);
    
        writeln('2 shr 5 按位右移的结果是:');
        writeln(2 shr 5);
    
        {       增量运算符
        1、inc 增加
        2、dec 减小
        3、有两种形式   inc(a); 得到的结果是 a := a + 1
                        inc(a, b); 得到的结果是 a := a + b
        }
        writeln('nAdd is:');
        writeln(nAdd);
        writeln('Inc(nAdd) is:');
        Inc(nAdd);
        writeln(nAdd);
        Dec(nAdd);
        writeln('Dec(nAdd) is:');
        writeln(nAdd);
    
        {       数据类型
        1、整数 8位、16位、32位有符号无符号整数,64位有符号整数
        2、4位、6位、8位、10位浮点型,64位货币类型
        3、1字节字符、2字节字符
        4、定长字符串、变长字符串
        5、NULL结尾字符串、NULL结尾宽字符串
        6、动态两字节字符串
        7、1字节、2字节、4字节boolean类型
        }
    
        //ansichar 具有标准一字节大小
        if sizeof(char)=sizeof(ansichar) then
        begin
            writeln('char and ansichar have the same size.');
        end;
    
        //char 具有和widechar一样的有两字节大小
        if sizeof(char)=sizeof(widechar) then
        begin
            writeln('char and widechar have the same size.');
        end;
    
        {       字符串
        1、shortstring  具有256字节长度的字符串,ansichar字符串
        2、ansistring 顾名思义就是由 ansichar 构成的字符串
        3、widestring 顾名思义就是由 widechar 构成的字符串
        4、pchar  以NULL结尾的字符串的指针,兼容C语言的char*
        5、pansichar 以NULL结尾的ansichar字符串指针
        6、pwidechar 以NULL结尾的 widechar 字符串指针
        7、默认情况下 string 定义的是 ansichar 类型
        }
    
        (*
        1、需要特别注意 {$H+}{$H-} 编译开关对string类型的影响
           {$H+} 则表示 string 为 ansichar
           {$H-} 则表示 string 为 shortchar
        2、数值型数据类型不做过多的介绍
        *)
        writeln(sizeof(shortstring));
    
        //给宽字符字符串赋值
        chinaName := '中国';
    
        //给单字节字符串赋值
        englishName := 'England';
    
        writeln(chinaName);
        writeln(englishName);
    
        {       ansistring的细节
        1、string定义的时候没有分配内存
        2、赋值或者初始化后string变量就分配内存
        3、通过SetLength()函数可以申请内存
        4、可以通过索引访问字符串
        5、string类型具有垃圾自动回收机制,当生命周期结束后,由系统自动回收
           系统分配给string的内存
        6、字符串类型支持 + 连接运算
        }
        //  下面的用法错误
        //noInitString[0] := 'a';
        // 但是利用下面的方法则是正确的,通过 SetLength() 函数申请内存空间。
        SetLength(noInitString,1);
        noInitString := 'a' ;
    
        //当进行 + 连接字符串运算时,系统会自动分配足够的内存
        noInitString := noInitString + ' apple';
        writeln(noInitString);
    
        {       ansistring与 Win32 接口具有兼容性
        1、因为 ansistring 是以 NULL 结束的字符串,因此可以与Win32字符串兼容
        }
        SetLength(dirString,256);
        //SysAllocStringLen(dirWideString,256);
        //获取windows目录
        //GetWindowsDirectory(PWideChar(dirWideString),256);
        dirString := dirWideString;
        writeln(dirString);
    
        readln;
    end.

      欢迎转载,转载请注明来源。

  • 相关阅读:
    div设置参数contenteditable=true
    Html事件总结
    PHP的isset()和empty()比较
    jQuery的ajax和遍历数组json代码
    PHP获取域名的几个函数使用
    关于网站favicon.ico
    PROCEDURE ANALYSE 通过分析select查询结果
    mysql 存在更新 不存在插入
    MySQL Migration Toolkit的使用
    高性能MySQL读书笔记:找出谁持有锁
  • 原文地址:https://www.cnblogs.com/volcanol/p/5322832.html
Copyright © 2011-2022 走看看