第二课:Object Pascal介绍(上)
Object pascal的语法:运算符,常量和变量,过程和函数,数据类型,程序流程控制,单元的组织结构,with。。。do语法的用法。
2.1 运算符
运算符是在程序中对各种数据类型常量和变量进行运算的符号。”
赋值运算符:
Pascal中的赋值运算符必须在“=”加上“:”,即“:=”,而“=”在delphi中成啦比较运算符。
赋值运算符:
运算符 | Pascal | C/C++ | BASIC |
赋值 | := | = | = |
2.1.2 比较运算符
比较运算符是比较常量和变量大小关系的符号,比较结果是一个布尔值(true/false)。
几种语言的比较运算符比较:
运算符 | Pascal | C/C++ | Basic |
等于 | = | == | =或IS |
不等于 | <> | != | <> |
小于 | < | < | < |
大于 | > | > | > |
小于等于 | <= | <= | <= |
大于等于 | >= | >= | >= |
2.1.3 逻辑运算符
逻辑运算符是对逻辑表达式进行运算的符号。
运算符 | Pascal | C/C++ | Basic |
逻辑与 | And | && | And |
逻辑或 | Or | || | Or |
逻辑非 | Not | ! | Not |
2.1.4 算术运算符
算术运算符是进行算术运算如加减乘除等的符号。
运算符 | Pascal | C/C++ | Basic |
加 | + | + | + |
减 | - | - | - |
乘 | * | * | * |
除(浮点数) | / | / | / |
除(整数) | Div | / | / |
取模 | Mod | % | Mod |
指数 | 无 | 无 | ^ |
2.1.5 按位运算符
按位运算符就是对位进行运算的符号。
运算符 | Pascal | C/C++ | Basic |
与 | And | & | And |
取反 | Not | ~ | Not |
或 | Or | | | Or |
异或 | Xor | ^ | Xor |
左移 | Shl | << | 无l |
右移 | Shr | >> | 无 |
2.1.6 其他运算符和模拟运算
Pascal定义拉特殊的运算符进行运算复杂的运算,也提供拉一些函数和过程来模拟运算。
大致有以下这些:
1, 对于集合类型
In,判断集合是否包含一个元素。
对一个集合的元素进行增加,减少除啦可以使用‘+’,‘-’外还可以使用过程include和exclude。
2, 对于对象类型化
可实现使用is进行类型兼容行判断,然后用as转化。
也可以使用Tobject.inheritsFrom代替is运算符。
3, 对指针操作
符号@和^。@用于取得一个变量的地址指针;^用来取得一个指针对应的数据,也可以用于声明指针类型。(pascal中除啦pchar类型不允许对指针直接做加减运算)。
使用函数addr可以代替@符号取得变量地址。
4, 加减运算
Inc和dec。
2.2常量和变量
常量和变量都是一些符号,代表木块内存中保存的数据。
和c/c++不同的是,pascal中声明常量和变量是必须在const或者var块中进行,而不能在begin。。end块中声明。
2.2.1 无类型常量和有类型常量
2.2.2 全局变量和局部变量
2.2.3 声明时实用的编译时函数
Ord,chr,sizeof
所谓i编译时函数就是实现与编译器中间的可调用的代码段。
2.2.4 资源字符串
资源字符串被编译到程序的资源中,而不是像普通的字符串常量和变量被嵌入源代码,当运行的平台语言环境发生变化时,只需修改这些资源字符串即可,而不需修改程序。
2.3过程和函数
都是用来完成特定功能的一个代码块,可以在别的地方被调用,除啦函数可以有返回值外可以认为他们完全相同。
2.4数据类型
简单的介绍object pascal中的数据类型,更详细的讲解将在后边的课程中介绍。
2.4.1 常用类型和复杂类型
整数integer,实数real,比尔类型boolean,字符字符串类型(character,string),枚举类型,子界subrange,可变类型variant。
不同语言的数据类型对照表
数据类型 | Pascal | C/C++ | Basic |
8位有符号整数 | Shortint | Char | 无 |
8位无符号整数 | Byte | Byte,unsigned short | Byte |
16位有符号整数 | Smallint | Short | Short |
16位无符号整数 | Word | Unsigned short | 无 |
32位有符号整数 | Integer,longint | Int,long | Interger long |
32位无符号整数 | Cardinal,longword/Dword | Unsigned long | 无 |
64位 | Int64 | _int64 | 无 |
4字节浮点数 | Single | Float | Single |
6字节浮点数 | *Real48 | 无 | 无 |
8字节浮点数 | Double | Double | Double |
10字节浮点数 | *extended | Long double | 无 |
64位货币类型 | Currency | 无 | Currency |
8字节日期/时间 | Tdate/TdateTime | 无 | Date |
16字节可变类型 | Variant,olevariant | Variant,^variant,^OleVariant | Variant |
1字节字符 | Char,ansichar | Char | 无 |
2字节字符 | Widechar | Wchar | 无 |
短字符串 | *shortstring | 无 | 无 |
长字符串 | Ansisting/sting | ^ansistring | String |
宽字符串 | Widestring | ^widestring | 无 |
Null结束的字符串 | Pchar,pansichar | Char* | 无 |
Null结束的宽字符串 | Pwidechar | LPCWSTR | 无 |
1字节布尔类型 | Boolean,bytebool | 任何一字节数 | 无 |
2字节布尔类型 | Wordbool | 任何二字节数 | Boolean |
4字节布尔类型 | Bool,longbool | Bool | 无 |
2.5程序流程控制
顺序,条件分支,循环。跳转(goto)
2.6单元的组织结构
Dpr(项目文件),pas(单元文件),dfm(框体文件)
Program的组织结构
Unit的组织结构
单元的应用
2.7with。。do语句的用法