Delphi数据库程序设计教程 第2章 Pascal语言基础
Delphi教学 第02章 面向对象的Pascal(第二部分)

标准类型 简单类型 自定义类型 数据类型 构造类型 集合类型 数组类型 记录类型 文件类型
字符串类型 实型 整型 字符型 布尔型 枚举类型 子界类型
序数类型
可变类型
2.6 集合类型
集合是指具有相同性质且可以相互区分的对象的全体。例如, 集合是指具有相同性质且可以相互区分的对象的全体。例如,所 有的英文字母可以组成一个集合,全体自然数组成一个集合, 有的英文字母可以组成一个集合 , 全体自然数组成一个集合 , 某个 学 校 的 全 体 学 生 组 成 一 个 集 合 , 等 等 。 为 了 表 示 集 合 , Object Pascal 引入了集合类型。 引入了集合类型。
2.6. 1-2 集合类型的运算
2. 集合的关系运算 集合的关系运算包括类型相同集合之间所进行的相等“ 、 集合的关系运算包括类型相同集合之间所进行的相等“=”、不等 等运算, “<>”、包含“>=”、被包含“<=”等运算,以及数据是否属于集合的 、包含“ 、被包含“ 等运算 以及数据是否属于集合的IN 运算。这些运算的结果均为布尔类型值。 运算。这些运算的结果均为布尔类型值。 集合相等运算:如果相同类型集合A和 的元素完全相同 的元素完全相同, 集合相等运算:如果相同类型集合 和B的元素完全相同,则运算 A=B或B=A的值为 的值为True,否则为 或 的值为 ,否则为Flase。 。 [2,3]=[3,2]的值为 的值为True。 的值为 。 集合的不等运算:如果相同类型集合A和 的元素不完全相同 的元素不完全相同, 集合的不等运算:如果相同类型集合 和B的元素不完全相同,则 运算A<>B或B<>A的值为 的值为True,否则为 运算 或 的值为 ,否则为Flase。 。 [2,3]<>[1,3,2]的值为 的值为True。 的值为 。 集合的包含运算:如果集合B中的元素都是集合 中的元素, 中的元素都是集合A中的元素 集合的包含运算:如果集合 中的元素都是集合 中的元素,则运 A>=B(称为 包含 )的值为 包含B)的值为True,否则为 算 (称为A包含 ,否则为Flase。 。 [1,3,2]>=[2,3] 的值为 的值为True。 。 集合的被包含运算:如果集合B中的元素都是集合 中的元素, 中的元素都是集合A中的元素 集合的被包含运算:如果集合 中的元素都是集合 中的元素,则 运算B<=A (称为 被包含在 中)的值为 称为B被包含在 被包含在A中 的值为True,否则为 运算 ,否则为Flase。 。 [RED,BLUE]<=[RED,GREEN,BLUE]的值为 的值为True。 的值为 。 属于运算:如果数据X与集合 的基类型相同,且被包含在A中 则运算X 与集合A的基类型相同 属于运算:如果数据 与集合 的基类型相同,且被包含在 中,则运算
第二章Delphi语法基础(语言结构)

procedure TForm1.FormCreate(Sender: TObject); const c=0.00001; var intcount:integer; lnfact:longint; result:single; begin result:=1; lnfact:=1; while 1/lnfact>=c do begin result:=result+1/lnfact; intcount:=intcount+1; lnfact:=lnfact*intcount; end; messagedlg('e='+floattostr(result),mtinformation,[MBOK],0); end;
Repeat Population := Population* (1+0.8/100); How_years :=How_years+1; Until Population>26; ShowMessage(FloatToStr(Population)); ShowMessage(IntToStr(How_years )); end; 例10 求两个正整数M和N的最大公约数。(采用辗转相除法)
●使用for …to 语句应注意: ①循环变量的初值、终值可以是表达式,也可是常量或变量; ②循环变量必须与初值、终值的数据类型相同,且只能是有序类型; ③循环变量必须在包含该循环的最内层程序块中声明它的类型;
④循环体可以是单个语句或复合语句; ⑤执行循环语句前,先计算初、终值,以此决定循环的次数和循 环变量的取值。循环的次数是(终值-初值)+1; ⑥循环体中不允许任何语句改变循环变量的值,即一旦声明循变的 值就不能改变; ⑦退出for 循环时,循环变量的值就会自动变成不确定的值,不能 再使用它; ⑧若循环变量的初值大于终值,循环体根本不能执行,除非使用 downto; 2、while…do语句 一般形式为: while 布尔表达 do 循环体; 特点:先判断,后执行; 例8 工程常数e的数学展开式为1+1/1!+1/2!+…+1/n!,要使e的计算 结果精确到0.00001,编写序代码如下:(可利用while的循环条件做 如下的设置:1/n!>=0.00001。)
《Delphi程序设计基础教程》第2章面向对象的pascal语言精品PPT课件

C++面向对象程序设计程序设
2020/10/11
2.1.4 常量和变量
常量 在Object ascal中用Const关键字来声明变 量,可以同时声明一个或几个常量,每定义 一个常量应以分号结束。说明常量时,不需 要指定其数据类型,只需给出具体的值。因 为编译器能根据常量的值自动判断常量的类 型并分配内存,对于整型常量,编译器在运 行时跟踪它的值,并不对它分配内存。如: Const a=10,编译器能自动判断a是整型, Const Pi=3.14判断Pi是实型,等等。
变量是程序代码中代表一个内存地址的标识符,而此地址中 的内容在程序代码执行时可以被改变。在使用变量前必须对 它进行说明,即对它进行命名,并说明它的类型。系统根据 变量的数据类型为每一个变量分配一定的内存空间。用户可 以通过变量名对内存单元进行读或写。
AND,ARRAY,BEGIN,CASE,CONST,DIV,DO ,DOWNTO,ELSE,END,FILE,FOR,FUNTION ,GOTO,IF,IN,LABEL,MOD,NIL,NOT, OF,OR,PACKED,PROCEDURE,PROGRAM, RECORD,REPEAT,SET,THEN,TO,TYPE, UNTIL,VAR,WHILE,WITH等
(1)标识符由字母、数字或下划线组成; (2)标识符的第一个字符必须是字母或下划线; (3)标识符的长度不应超过255个字符,否则只有前255个
字符有效; (4)不能将保留字用作标识符; (5)标识符不区分大、小写。
C++面向对象程序设计程序设
2020/10/11
2.1.2 保留字
程序如同一篇文章,由字符组成单词,再由 单词和符号构成句子――语句。Object Pascal语言中具有特殊含义的单词称为保留 字。保留字系统已使用,用户不可以用来作 为标识符。以下是Object Pascal的保留字:
第2章Delphi语法基础

第2章Object Pascal语言基础Delphi的编程语言是Object Pascal,即面向对象的Pascal语言。
自Delphi 7 开始,Object Pascal语言改称为Delphi 语言。
第1节保留字和标识符一、保留字保留字是由系统使用的具有特殊含义的单词(如And、If、For、Var等),详见教材16~17页表2.1。
二、指令符指令符也是由系统使用的具有特殊含义的单词(如Public、Private等),详见教材17页表2.2。
三、标识符标识符(Identifiers)用于表示常量、变量、域(字段)、类型、属性、过程、函数、程序、单元、库和包(packages)的名称。
Object Pascal标识符的声明和使用应遵循以下规定:∙长度任意,但仅前255个字符有效。
∙首字符必须是字母或下划线。
∙不能含有空格,中间的字符可以是字母、数字和下划线。
∙不能使用保留字(reserved words)作为标识符。
∙不区分大小写,例如sName与sname等价。
第2节注释三种注释形式:{注释内容}(*注释内容*)//注释内容注意:如果注释符{之后紧跟一个美元符号$(如{$R *.res}),表示该语句是一条编译指令,它与普通的注释不同,通常由Delphi自动生成,用于设置编译过程,不要修改或删除它。
第3节常量和变量一、常量1. 普通常量如:123,-100,3.14,'abc',True等。
2. 符号常量符号常量用保留字Const声明,格式如下:Const常量名 = 表达式;例如:ConstPI = 3.1415926535897932385;College = '山东教育学院';Numeric = ['0'..'9']; // 数字字符集合Alpha = ['A'..'Z', 'a'..'z']; // 英语字母集合AlphaNum = Alpha + Numeric; // 集合的并2. 变量变量声明的格式:var变量名表:类型;例如:varX, Y, Z: Double;I, J, K: Integer;S1, S2: String;Digit: 0..9; // 子界类型Flag: Boolean;单元级或全局变量可以在声明时初始化(每个声明语句仅限一个变量)。
Delphi讲义教程 第二章 Object pascal语言基础

⑤取高、低字节函数Hi(x)和Lo(x),分别返回整型数x 的高字节和低字节,结果是Byte类型。 例如:Hi($1234)的值为$12,Lo($1234)的值为$34。 ⑥交换函数Swap(x),将整型数x的高字节和低字节进 行交换,交换后的两个字节重新组成一个整数作为 函数返回值。 例如,Swap($1234)的值为$3412。 ⑦ 其他操作函数或过程:ord、prec、succ、high、 low、inc、dec 。 例:有序数操作函数
三、变量
变量说明的一般形式为: var <变量标识符列表>:<类型标识符>; 其中,变量标识符列表中可以包含一个或多个变量标 识符,若有多个变量标识符时,相邻的两个变量标识 符之间应使用逗号“,”隔开;类型标识符用以指定这些 变量的数据类型。 变量说明以保留字var开头。一个变量说明部分可包含 多个变量的说明,每个变量说明末尾均有分号。
用字符序号的大小关系来定义相应字符的大小关 系,因此,所有的字符都可以进行比较(即关系运 算)。 'A'<'B' 'b'<'a' '1'<'2' // 结果为True // 结果为False // 结果为True
(3)标准函数 例:有序数操作函数 (同上例)
3. 布尔型 布尔类型的标准类型标识符为Boolean。 (1)取值范围 布尔型变量的取值范围仅有False和True两个值。布 尔类型是有序类型。规定: False的序数为0,True 的序数为1。 (2)运算符 ①六种关系运算操作同样适用于布尔型数据,运算结果 仍是布尔类型值例如: False=True True>False // 结果为False // 结果为True
第2章Delphi基础知识

项目与文件
项目与文件
单元文件 .pas 窗体文件 .dfm 单元文件 pas 窗体文件 .dfm
项目文件 .dpr
目标文件 .dcu
目标文件 .dcu
项目管理器-view/pro…
代码编辑
单元标签 断点设置区 光标位置 插入/修改模式 修改标记 代码页标签 图表页标签
代码洞察
语句模板 ctrl+j 代码完成 edit1. 参数提示 showmessage(
对象建立 属性设置 用户界面设计
组件-支持了可视化编程模式 组件-类与对象
组件板上的组件-组件类 用户界面上的组件 -组件对象
Delphi 操作界面
快捷键
保存所有文件 打开文件 建立条目 观看单元 观看窗体 窗体/单元 切换 运行程序 建立窗体 暂停运行 单步运行 (进子程序) 保存文件 往项目中添加文件 从项目中删除文件 文件 联机帮助 单步运行 (不进子程序) 打开项目
3
第2章 Delphi 基础知识
Delphi 概述 Delphi 的集成开发环境 Delphi 应用程序开发过程 项目管理 程序调试 联机帮助
Delphi是什么
Delphi是面向对象的、可视化的集成开发 环境。 它使用Object Pascal作为核心的编程语 言。 它可用来开发各种具有图形用户界面的 应用程序和系统软件,从桌面应用到多 层的web应用,从多媒体到基于数据库的 应用系统。 Delphi是一个专业级的、通用的开发工具。
单步执行
跟踪程序流程 查看变量或对象属性的值
联机帮助信息-help
联机帮助信息-help
联机帮助信息-F1
联机帮助信息-F1
Delphi中对象的定义
Delphi是基于面向对象技术的。 一个对象是由方法(methods)、属性 (properties)和事件(events)所组成。
Delphi编程_Object_Pascal语言

2.1 Object Pascal与Delphi的关系
Delphi使用Object Pascal作为开发语言
• Pascal语言由瑞士计算机科学家Nicklas Wirth教授于上世 纪60年代设计出来的。命名为Pascal主要是纪念计算机 科学先驱Blaise Pascal。
函数 Ord Pred Suce High Low Inc Dec 参数 序数类型表达式 序数类型表达式 序数类型表达式 序数类型标识符或变量 序数类型标识符或变量 序数类型变量 序数类型变量 返回值 表达式值的序数 表达式的前驱序数 表达式的后继序数 该类型的最大值 该类型的最小值 变量值加1 变量值减1
• 函数Ord返回某字符的ASCII码
Ord(‘A’):返回值65
2.5.1.5 布尔类型
类型符号:Boolean Boolean值
• True • False
Boolean类型可进行逻辑运算
2.5.1.6 枚举类型
语法格式
Type 枚举类型标识符名=(枚举值1,…,枚举值n);
示例
Type Tsex=(male,female); Tday=(Sun,Mon,Tue,Wed,Thu,Fri,Sat);
2.5.2 字符串类型
类型符号
• String
字符串使用
• 不定长度声明
Var s:string;
• 定长声明
Var s:string[10];
• 可把字符串看成是字符数组
S:=‘Hello’;则S[1]表示H
• 在字符串中用两个相邻的单引号来引用单引号
‘It’’s nice’表示It’s nice
• 指非字母数字字符或这些字符的组合
[工学]delphi教程22
![[工学]delphi教程22](https://img.taocdn.com/s3/m/3a1aadaebceb19e8b8f6baf0.png)
例2.7
“判断用户输入是否为空”的“非事件处理过程的函数”
Function Novalue(aneditbox:Tedit):Boolean; (1)函数定义 begin if aneditbox.Text='' then (2)形参变量 begin aneditbox.Color:=clRed; aneditbox.Text:=‘请输入'; result:=true; end (3)函数返回值 else begin aneditbox.Color:=clWindow; result:=false; end; end;
然后,在两个Edit框的OnClick事件处理过程中调用。
实习要求:
2.5.3
常用系统函数与过程
(1) 时间及其转换函数
① Date 日期函数,该函数返回系统当前日期,定义格式为:
function Date: TDateTime;
TDateTime类型在Delphi语法中表示一个“日期-时间”值。 ② Time 时间函数.该函数返回系统当前时间,定义格式为: function Time: TDateTime; ③ Now 时间函数.该函数返回系统当前日期和时间,定义格式为: function Now: TDateTime;
④ Length 取字符串长度函数。定义格式为:
function Length( s ): Integer;
⑤ StrToDate 字符串转换日期。定义格式为:
function StrToDate(const S: string): TDateTime;
2.5.3
常用系统函数与过程
(3) 其它函数
静态时钟
procedure TForm1.Button3Click(Sender: TObject); var present:tdatetime; year,month,day,hour,min,sec,msec:word; temp:string; begin present:=now; decodedate(present,year,month,day); temp:=inttostr(year)+'.'+inttostr(month)+ '.'+inttostr(day)+'/'; decodetime(present,hour,min,sec,msec); label1.caption:=temp+' '+inttostr(hour)+ ':'+inttostr(min); end;
Delphi实用教程(第2版)[郑阿奇主编][电子教案]
![Delphi实用教程(第2版)[郑阿奇主编][电子教案]](https://img.taocdn.com/s3/m/cf2501f9770bf78a65295406.png)
2.1 Object Pascal概述
说明: (1)类型名是Object Pascal中任何有效的数据类型。 (2)变量名表中的变量与变量之间用逗号分隔开,变量与类型名之间用冒号分隔。 例如: var I,J:Integer; // 定义两个整型变量I和J (3)当有几个连续的变量声明语句时,可以不必在每个声明语句前都用保留字var, 只需在最开始处使用var,例如: var x,y: real; // 定义两个实型变量x和y k,j: integer; // 定义两个整型变量k和j flag: Boolean; // 定义一个逻辑型变量flag
2.2 数据类型
3)布尔类型
布尔类型(Boolean)是只能表示真或假的一种数据类型,包括以下四种类别: Boolean、ByteBool、WordBool和LongBool。布尔类型是最常用的数据类型之一。 4)枚举类型 枚举类型定义中的每个值都对应一个整数值的序号,每个枚举项所对应的整数值 由其在定义表中的位置决定,类型定义表中从左向右的第一个数据对应的整数值为0, 其余向右依次增加1。 语法(枚举类型定义和枚举类型变量声明): type 枚举类型标识符 = (枚举常量标识符列表); var 枚举类型变量表:枚举类型标识符; 例如: type day=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); { 以上是枚举类型定义 } var today: day; // 枚举变量声明 上面例子中的枚举常量Sunday、Monday、Tuesday、Wednesday、Thursday、Friday 和Saturday对应的整数值分别为0、1、2、3、4、5和6。 有时也可以把类型定义和变量声明合二为一,例如: var color1,color2: (Red,Blue,Green,Black)
Delphi基础 第二部分 Pascal语法

Pascal语法一.项目结构项目文件: .dpr:单元文件1:.Pas ……单元文件n:.Pas┆窗体文件1:dfm ……┆窗体文件n:.dfm┆……┆→可执行文件:.exe目标文件1:.dcu ……目标文件n:.dcu1>..dpr文件.dpr文件结构:program Project1; //项目文件.dpr文件usesForms,Unit1 in 'Unit1.pas' {Form1},Unit2 in 'Unit1.pas' {Form2}, //三个窗体的主程序Unit3 in 'Unit3.pas' {Form3};{$R *.res}beginApplication.Initialize; //初始化Application.CreateForm(TForm1, Form1); //创建窗体Application.CreateForm(TForm2, Form1);Application.CreateForm(TForm3, Form1);Application.Run;end.2>.单元文件.pasDelphi应用程序是以窗体为中心的,而有关窗体的信息是以两种文件形式存储.dfm文件(数据文件):有关窗体及组件的外观、尺寸和位置等信息。
.pas 文件(源程序文件):包含了有关窗体及组件的程序代码。
.pas文件结构:unit Unit1;interface //说明部分类型说明变量说明程序接口说明Implementation //实现部分程序块1程序块2程序块3end.二.语法概述1>.常用的数据类型String:字符串型Integer:整型Real:实型Boolean:布尔型char:字符型2>.常用的表达式中的运算符A.算术运算符:+、-、*、/、div(整除)、mod(求余)B.集合运算符:+(并)、-(差)、*(交)、in(属于)C.关系运算符:=、<>(不等于)、>、<、<=、>=3>.系统的过程与函数A.Showmessage(‘显示信息’);B.StrToInt //类型转换(整数——字符串)C.Date //取当前日期D.round //取整,四舍五入 rounfd(2.7632)=34>.控制语句-分支语句A.if 条件 then语句1;else语句2;B. if 条件 then语句1;else if 条件 then语句2;else语句3;5>.循环语句A.while循环while 条件 dobegin……end;B.for循环for i:=1 to n dobegin……end;6>.局部变量跟全局变量Unit1……ImplementationVar全局变量Procedure ……Var局部变量Begin……End;7>.复合数据类型——记录TypeTEmpRec = record //定义一个职工记录类型ename : string[10]; //定义字符串age : integer;sal : real;end;varemp:TEmpRec;……emp.age := 23;edit1.text := emp.ename;8>.文件操作A.定义文件varEmpFile :file of TEmpRec;●为文件变量指定具体文件AssignFile(EmpFile,’d:\emp.$$$’); B.打开文件reset(EmpFile); //打开老文件rewrite(EmpFile);//创建新文件C.关闭文件Closefile(EmpFile);D.读文件Read(EmpFile,emp); //读一个记录E.写文件Write(EmpFile,emp); //写一个记录。
Delphi 6程序设计及其应用开发--第2章 Object Pascal程序设计语言

2.引用参数 . 通过引用来传递参数时, 通过引用来传递参数时 , 允许过程或函数改变参 数的值.通过引用传递的参数由关键字Var表示 表示. 数的值.通过引用传递的参数由关键字Var表示.
返回本章首页
2.1 基本字符和符号
1. Object Pascal的字 . 的字 符集 2.特殊字符 . 3.标识符 . 4.保留字 .
5.指令字 . 6.数字 . 7.标号 . 8.字符串 .
返回本章首页
2.2 常量与变量
2.2.1 声明变量 2.2.2 声明常量
返回本章首页
2.2.1 声明变量
Object Pascal使用控制语句来控制程序的执行顺序.7 使用控制语句来控制程序的执行顺序. 使用控制语句来控制程序的执行顺序 个是分支语句, 个是循环语句 个是循环语句: 个是分支语句,3个是循环语句: (1)分支语句 ) If 语 句 , Case 语 句 , GOTO 语 句 , Break 语 句 语句, 语句, 语句. , Continue语句, Exit语句, Halt语句. 语句 语句 语句 (2)循环语句 ) Repeat语句, While语句,For语句 语句, 语句, 语句 语句 语句
返回本节
2.3.2 字符串类型
Delphi主要支持两种类型的字符串 : ShortString和 主要支持两种类型的字符串: 主要支持两种类型的字符串 和 AnsiString. . ShortString 数 据 类 型 主 要 是 为 了 能 和 Delphi1.0 和 Borland Pascal的早期版本兼容. 的早期版本兼容. 的早期版本兼容 String既可以是 既可以是ShorString类型也可以是 类型也可以是AnsiString类 既可以是 类型也可以是 类 缺省是AnsiString类型. 类型. 型,缺省是 类型
Unit.2 Object_Pascal语言基础

Unit.1 Delphi基本概念一、 Delphi是基于Object Pascal 语言的面向对象的开发工具Delphi 特点:Delphi为32位应用程序,功能强大Delphi的编译器是目前世界上最快的32位源代码编辑器提供了多种32位可视化组件库Delphi是一种面向对象的程序设计语言,可视化窗体继承采用了3层数管理模式(数据层,对象层,应用程序层)通过(Borland)的数据引擎(BDE)可使用多种数据库数据感知功能,在开发程序可看到数据库的动态变化在开发环境中,通过Delphi的数据库的浏览器可方便的浏览,修改,索引数据库Delphi将数据访问与业务规则从程序中分离出来,集中存储在数据模型对象中(程序与数据是分离的)内嵌2个用户许可的内置数据库管理系统(一般不常使用,功能一般)二、面向对象(OOP)的基本概念1. 软件(Software):由被加工的对象及有关的功能构成2. 对象(Object):(1)无论功能如何发生变化,一个问题空间中的对象一般总是保持相对稳定,故,围绕对象构造的软件(2)系统也自然会有较好的稳定性。
(3)对象是一种看问题的观点,对现实世界各种元素的一种抽象.(4)对象既含数据又含函数,因此具有自身处理数据的能力。
(5)对象被认为是迄今为止最接近真实事物的数据抽象面向对象(OOP)源于不同的研究领域:对象程序设计语言数据类型3. 类(Class)相关对象的集合称为类,把具有相同属性和方法的对象抽象为类(就像现实禧社会中的不同的物物品品、的分类一样)4. 对象(Object)。
每个对象有一个状态,对象的状态是该对象属性的集合。
每个对象有一组操作,操作决定对象的行为。
行为是对象状态的操作方法(理解:对象就像一个实实在在的东西一样,由各种属性,操作方法等等组合而成的一物品)5.封装(Encapsulation)封装是一种组织软件的方法,把客观世界中联系紧密的元素及相关操作组织在一起,使其相互关系隐藏在内部,对外仅表现为其他封装体之间的接口封装对象--把数据和对的代码封装成一个能动的整体(使对象能继承复用,支持复杂的数据存储和处理过程)(理解:通过一些内部功能来对其数据的操作,再通这些数据对其它对象的操作)6. 类与对象的区别类是用来创建对象实例的模板,它包含所创建对象的状态、描述和方法的定义,类是一个型。
第02章_学好面向对象的Pascal

第2章学好面向对象的Pascal好的工具是好的开发的基石。
Object Pascal就是好的工具。
基于上一章或您已有的技巧,本章将示范每个程序都需要的面向对象技巧。
Delphi 在开发工具中是个例外,它本身就是用Object Pascal创建的。
本章中包含了一些代码,它将成为每一个程序的基础。
2.1 Delphi的惯例大约25年前,C语言是当时的新事物。
那时的编译器,像C语言,是弱类型的。
变量可以被声明为指针,然后传给整型参数,反过来也可以。
例如,一个整型变量可以被赋值0,然后被粗心地赋值给char*(在C中,即指向字符的指针)变量。
原因是,编译器并不严格执行数据类型的用法,时至今日依然如此。
不管怎么说,数据只是一些数字嘛。
可问题在于,如果把整数当作指针使用,可能刚好存取到BIOS(基本输入输出)内存的起始地址,真是糟糕透顶。
另一个有害的问题是全局变量。
如果不作检查,大多数人都记不住在一个月之前声明的变量的数据类型;当变量在其他人的代码中,更是如此。
过了几年之后,数百万的美元被浪费在跟踪与全局变量和误用整数及指针相关的程序错误,这时,解决方案出现了。
20世纪80年代早期,微软公司从施乐公司帕洛阿尔托研究中心雇佣了一位匈牙利人Charles Simonyi,他以发明了匈牙利命名惯列并使之流行而著称。
匈牙利命名惯列建立了一组前缀,用以识别变量的数据类型。
这意味着程序员通过看前缀,可以避免整数与指针的误用。
例如,用于存储零结尾字符串的char*变量可能会有前缀sz。
即使是刚起步的程序员也只需记住sz的意思是零结尾字符串(或字符串以零结尾)。
如果全局变量是有前缀的,而您又能够记住lpsz的意思,那么要决定变量的类型可能并不需要找出其声明。
提示或隐含的指导是有益的,但扪心自问一下:有多少人无视停车标志,在州际高速公路上车距过小或吸烟。
取决于您对“California stop”、three-second规则、吸入致癌物质的态度,您可能会忽略其中几项隐含的警告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi能在var块中对全局变量赋初值,这里有一些例子演示:
var i:Integer=10; S:String='Hello World'; D:Double=3.141579;
能赋初值的变量仅是全局变量,不是那些在过程或函数中局部变量,而且 Delphi编译器自动对全局变量赋初值。当程序开始时,所有的整型数赋为0, 浮点数赋为0.0,指针为null,字符串为空等等,因此,在源代码中不必对全局 变量赋零初值。
type TWeekDay=Set of 1..7; var WeekDay:TWeekDay; begin WeekDay:=[1,3,5,6]; end;
注意Pascal编辑程序限制了集合数目,所以整型数据不能作为集合类型的基类 型。而只能是整型子界。基类型必须是有序类型,所以实型、数组类型不能 作为集合类型的基类型。
@、not、^、*、/、div、mod、and、shl、shr、as、+、-、or、xor、=、>、<、<>、 <=、>=、in和is等。
按照操作数数目的多少来分,运算符分为下面两类:单目运算符(Unary Operator)和双目运算符(Binary Operator)。上面的@、not和^为单目运算符, 其余的为双目运算符。其中+和-也可以作为单目运算符来使用。 单目运算符一般放在操作对象的前面,只有^可以放在操作对象的后面。双目 运算符都放在两个操作数之间。 有些运算符是根据给定的操作数的数据类型做相应处理的。例如,运算符not 对于整型的操作数说,做的是按位取反;对于逻辑类型的操作数来说,它完成 的则是逻辑取反。 除了运算符^、is和in外,其余操作符都可以对Variant类型的数据进行操作。
ShortInt
整型(Integer) SmallInt LongInt Byte Word Real Single 实型(Real) Double Extended Comp Currency Boolean
1
2 4 1 2 6 4 8 10 8 8 1 1 2 4 1 0~255
-128~127
第2章 Pascal语言基础
Pascal语言体现了结构化程序设计的概念。它简便 易学,具有清晰明了的模块结构,丰富的数据类 型和语句。Pascal语言编译、运行效率高,便于移 植,因此广泛地应用于应用软件的开发。
2.1 2.2 2.3 2.4 2.5 2.6
数据类型 常量与变量 运算符和表达式 基本程序设计 过程与函数 常用内部函数
2.2.2 变量
Object Pascal要求在一个过程、函数或程序前在变量声明段中声明它们。 Object Pascal类似Visual Basic,但不像C和C++,是大小写不敏感的。采用大小 写只是为了可读性好。 当在Object Pascal中声明一个变量时,变量名在类型的前面,中间用冒号隔开, 变量初始化通常要跟变量声明分开。
枚举类型的定义:
Type 〈类型名称〉=(〈标识符1〉),〈标识符2〉,…,〈标识符n〉);
用户经常要用到这样的数据,它是通过列举出该数据所有的可能值来定义的, 如下例:
type TWeekDay=(Sun, Mon, Tue, Wed, Thu, Fri, Sat); var WeekDay:TweekDay;
var Student1:FStudent; Str:Fstr; begin Student1^.Name:='Smith'; Student1^.Age:=20; Student1^.StudNum:=950007; Student1^.Score:=87.5; Str^='I love Delphi 7.0.' end;
1. 算术运算符 3. 位运算符 5. 指针运算符 7. @运算符 9. 关系运算符
- - - -
2. 逻辑运算符 4. 字符串运算符 6. 类运算符 8. 集合运算符
2.3.1 运算符
1. 算术运算符
算术运算符对浮点数和整数进行加、减、乘、除和取模运算。
运算符 + 作用 两个数相加 操作数类型 Integer,real 结果类型 Integer,real 举例 X+Y
2.1.8 文件类型
文件类型是用来对文件进行操作的, 它包括同一类元素的线性有序组合。 Delphi支持的文件类型有文本文件、 记录文件和无类型文件。定义文件 类型实际上是定义了一个文件类型 的指针。
例如:
type TStudent=Record Name:String[30]; Age:Integer; StudNum:Integer; Score:real; end; Fstudent=File of Tstudent; Fstr=File of String;
2.1.7 记录类型
记录类型包括了一组元素,但和数 组型数据不同的是,记录类型数据 可以包括相同的数据类型,也可以 包括不同的数据类型;这些数据可以 是数值型的,也可以是非数值型的。 例如:用户可以使用一个记录类型 数据记录一个学生的名字、出生日 期、籍贯以及学习成绩等。 例如,一个学生的记录类型如下:
需要注意的是,每个枚举值只能出现在一个枚举类型的定义当中,而且在每 个枚举类型的定义当中只能出现一次。
2.1.4 集合类型
集合类型是Pascal允许用户定义的一个结构数据类型,它使用户可以运用通常 集合运算,例如:交集、并集和差集。集合类型是一些同类型元素的集合, 这些基类型元素可以是整型、实型、布尔型、字符型、枚举型或子界类型。 它通常的作用是用来检验某个元素是否被包含在一个集合当中。 下例用来说明集合类型数据的定义方法和运用:
2.1.5 指针类型
Pascal允许建立动态数据结构,它采用指针类型数据,指针类型变量的引入大 大增强了程序的灵活性。一个指针类型变量用于保存一个内存地址,由于该 内存地址指向的是一个动态分配的变量,所以,在定义指针类型数据时,必 须说明它所指向变量的类型。 例如:
Type Pbirthday=^TBirthday; TBirthday=Record Name:String[30]; Year:Integer; Month:1..12; Date:1..31; end; var Pbirthday1:Pbirthday; Pint:^Integer; begin Pbirthday1^.Name:='Smith'; Pint^:=18; end;
* / Div Mod
两个数相减
两个数相乘 两个浮点数相除 两个整型数相除 取模
Integer,real
Type 〈类型名称〉=〈常量1〉..〈常量2〉;
例如以下代码:
type TMonth=1..12; TScore='A'..'F'; var Month:TMonth; Score:TScore;
如上定义了子界类型变量Month的范围从1~12,Score的范围从'A'~'F'。
2.1.3 枚举类型
布尔型(Boolean)
ByteBool WordBool LongBool
字符型(Char)
Char String
2.1.2 子界类型
子界类型是Pascal允许用户定义的一个结构数据类型。如果用户预先知道一个 变量的范围,就可以通过定义子界类型和子界类型变量来实现由系统自动检 查变量是否超出了允许的范围。 子界类型的定义:
标准数据类型 子界类型 枚举类型 集合类型 指针类型 数组类型 记录类型 文件类型
2.1.1 标准数据类型
Object Pascal的数据类型包括一些基本的简单数据类型,例如:整型、实型、 字符型、字符串型和布尔型等等。下表列出了标准的数据类型。
类别 Integer Cardinal 类型 大小(byte) 2/4 2/4 -32768~32767/-2147483648~2147483647 0~ 65535/0~2147483647 范围
const ADecimalNumber=3.14; i=10; ErrorString='danger,Danger,Danger!';
编译器根据如下规则来对常量分配内存:整型数被认为是最小的Integer类型 (10被认为是ShortInt,32000被认为是SmallInt等);字符串值被认为是char类型 或string类型(通过$H定义);浮点值被认为是extended数据类型,除非小数点 位数小于4位(这种情况被当作comp类型);Integer和Char的集合类型被存储为 它们自己。
-32768~32767 -2147483648~2147483647 0~255 0~65535 2.9E-39~1.7E38,-2.9E-39~-1.7E38 1.5E-45~3.4E38,-1.5E-45~-3.4E38 5.0E-324~1.7E308,-5.0E-324~-1.7E308 3.4E-4932~1.1E4932,-3.4E-4932~-1.1E4932 -9.2E18~9.2E18 -922337203685477.5808~922337203685477.5807 True/False True/False True/False True/False ASCII码 ASCII码
2.2 常量与变量
常量和变量是学习各种编程语言进行程序设计的基础概念, 分别代表了在程序运行过程中两种不同状态的量。常量是 指在程序运行过程中其值始终不变的量;与之相反,变量 则是程序运行过程中其值可以改变的量。