




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi7程序设计与实验指导 张景安赵慧勤张叶娥傅文博编著 第二章面向对象的Pascal Delphi的编程语言即ObjectPascal是在Pascal的基础上发展起来的 它继承了Pascal语言语法结构严谨和编译代码高效优化等优点 本章将介绍ObjectPascal的数据类型 常量 变量 运算符 语句 函数和过程等 2 1数据类型 2 1 1简单数据类型简单类型包括有序类型和实型两种 1 有序类型有序类型包括整型 字符型 布尔型 枚举型和子界型 有序类型是一种线性的数据结构 每个值都有唯一的前驱 除第一个 和唯一的后继 除最后一个 1 整型整型的表示范围及存储格式见表2 1 表2 1整型的取值范围和存储格式 2 1数据类型 2 1数据类型 2 字符型字符型的类型标识符是Char 字符型的数据只能是单个字符 不能是一串字符 例如 ABC x 等都不是字符型的数据 而是字符串 3 布尔型通常用到的布尔类型是Boolean 一个Boolean类型的变量占一个字节 它只有两种取值 true和false 定义变量i ch t分别为整型 字符型 布尔型 vari Interge ch Char t Boolean 2 1数据类型 4 枚举类型枚举类型是用一些标识符来表示一系列有序数 即由一些标识符组成的一个线性表 定义枚举类型的语法是 typetypeName val1 valn 5 子界类型子界类型指的是某个有序类型 称为基类 的一个子集 定义子界类型的语法是 typetypeName Low High 2 1数据类型 2 实型表2 2给出了实型的表示范围和存储格式 表2 2实型的表示范围和存储格式 2 1数据类型 2 1 2字符串类型字符串类型是用一对单引号括起来的一系列字符 字符串类型的表示范围和存储格式见表2 3 表2 3字符串类型的表示范围和存储格式 2 1数据类型 2 1 3结构类型结构数据类型是一种复合数据类型 由多个数据组成 结构类型包括集合类型 数组类型 记录类型 文件类型等 1 集合类型集合类型是一组相同类型元素的组合 定义集合类型 typeName setofBaseType2 数组数组是一些具有相同类型元素的有序组合 1 静态数组静态数组的声明格式为 typeName array indexType1 indexTypen ofBaseType 2 1数据类型 2 动态数组动态数组没有固定的大小或长度 当赋值或使用某些函数 如SetLength 时 动态数组在内存中重新分配 动态数组的声明格式为 typeName arrayofBaseType 定义动态数组不需声明元素的个数 例如 typeDynamicarray arrayofReal vara1 a2 Dynamicarry a1 a2 a1和a2指向相同的内存单元 2 1数据类型 3 记录类型记录类型 有的语言中被称为结构 是一个不同种类元素的集合 每个元素称为字段 field 在声明时 指定记录的名字和每个字段 声明格式为 typeRecordTypeName recordFieldList1 type1 FieldList2 type2 FieldListn typen end 2 1数据类型 4 文件类型文件类型是由相同类型的元素组成的有序集合 文件类型的声明格式为 typefileTypeName fileoftype例 声明一个文件类型RecordList 以上面已定义的TdateRec为数据类型 typeRecordList fileofTdateRec varMyrecordlist RecordList 2 1数据类型 2 1 4可变类型有时要对一些数据类型变化的数据进行操作 并且在编译期间不能确定数据的类型 这时就可以使用可变类型的数据 可变类型可以使用除记录 集合 静态数组 文件等结构类型 指针类型及长整型外的所有类型 可变类型有一个特殊的值Null 表示不明的或丢失的数据 可变类型变量的声明格式为 varv1 Variant 2 2常量与变量 2 2 1标识符标识符是描述ObjectPascal程序各个部分的名称 这些部分包括标记 对象 过程 类型 单元 变量及程序 标识符的大小写无关 即它不区分大小写 并且遵循以下规则 可为任意长度 但只有前255个字符有效 标识符的第1个字符必须是字母或下划线 跟在第1个字符后面的字符必须是字母 数字或下划线 标识符中不允许出现空格 2 2 2常量常量是一个在程序的运行过程中具有不变值的标识符 常量的声明格式如下 Const常量名 表达式 变量不能在一个常量声明中使用 但算术和逻辑运算符可以 下面的函数可以在常量声明中使用 AbsLowRoundChrOddSizeOfHiOrdSuccHighPredSwapLengthPtrTruncLo 2 2常量与变量 2 2常量与变量 2 2 3变量变量是程序代码中代表一个内存地址的标识符 而此地址中的内容在程序执行过程中可以改变 在变量使用之前必须先声明 变量声明格式如下 var变量名表 类型名 例 vars string i integer flag Boolean 2 3表达式与运算符 2 3 1表达式表达式就是变量 常量 字符串 运算符及函数按照一定规则的组合 例 People sRepublicOf China Gross 12Max x y Min x y 2 3 2运算符1 赋值运算符 赋值运算符 是先计算赋值运算符右边表达式的值 再将结果赋给左边的变量 2 3表达式与运算符 2 算术运算符表2 4算术运算符 2 3表达式与运算符 3 关系运算符关系运算符是对两个类型相容且可以比较大小的数据进行比较 结果为布尔类型 见表2 5 表2 5关系运算符 2 3表达式与运算符 4 逻辑运算符逻辑运算符对逻辑类型的操作数进行运算 结果为布尔型 见表2 6 表2 6逻辑运算符 2 3表达式与运算符 5 集合运算符表2 7集合运算符 2 3表达式与运算符 6 运算符的优先级 表2 8ObjectPascal各运算符的优先级 2 4语句 2 4 1注释注释是添加在程序中用来说明代码功能的语句 它是非执行语句 对程序的执行部分不会产生任何影响 有助于提高程序的可读性 在ObjectPascal中 有三种注释标记 花括号 注释 位于 中的内容为注释 双斜杠 注释 之后到本行结束的内容为注释 圆括号及星号对 注释 中的内容为注释 例如以下语句都是注释 ThefirstkindOfcomment ThesecondkindOfcomment ThethirdkindOfcomment 2 4语句 2 4 2简单语句和复合语句简单语句是ObjectPascal中最简单也最常用的语句 简单语句用分号分隔 赋值语句 函数 过程调用语句等是简单语句 例如下面的语句都是简单语句 r m n 两个值相加并赋值ShowMessage I mastudent 复合语句是多个简单语句的组合 复合语句以begin表示开始 以end表示结束 例如 begini 1 j i 1 s abc end 2 4语句 2 4 3条件语句条件语句是ObjectPascal语言提供的选择结构语句 主要有如下两种 1 if语句if语句的表示形式 ifthen else 2 4语句 例2 1 求两个数中的最大值 ifa bthenmax a 在变量a之后不能加 Elsemax b 例2 2 符号函数 1 x0 用if语句的嵌套实现 如下 ifx0theny 1elsey 0 2 4语句 2 case语句case语句的表示形式 caseof else end 2 4语句 例2 3 编写一个程序 输入一个年份 判断是否是闰年 闰年的条件是满足下面条件之一 1 能被4整除 但不能被100整除的年份 2 能被100整除 也能被400整除的年份 对这两个条件都不符合的年份不是闰年 程序功能 输入一个年份 显示其是否为闰年的信息 界面设计 四个组件 两个文本框Label1和Lable2 分别显示提示和结果信息 一个Edit组件Edit1 用来输入要进行判断的年份 一个Button组件Button1 用来查询结果 如图2 1所示 2 4语句 图2 1窗体界面程序代码 procedureTForm1 Button1Click Sender TObject varyear Integer flag Boolean 2 4语句 beginyear StrtoInt Edit1 text 将字符串转变为整型ifyearmod4 0thenbeginifyearmod100 0thenbeginifyearmod400 0thenflag trueelseflag false endelse flag true endelseflag false ifflagthenLabel2 Caption 该年份是闰年 elseLabel2 Caption 该年份不是闰年 end 2 4语句 2 4 4循环控制语句循环语句可以使用户重复执行一条或多条语句 直到满足某个条件时为止 1 for语句for语句的一般形式为 for循环变量 to downtodo 例2 4 求1 100所有整数的累加和 vars i Integer s 0 fori lto100dos s i 2 4语句 2 while语句while语句的一般形式为 whiledowhile后面的为逻辑表达式 先计算表达式的结果 如果表达式为true while语句将重复执行循环体 如果表达式结果为false 则跳出循环 执行while之后的语句 例2 5 求1 100所有整数的累加和 vars i Integer i 1 s 0 whilei 100dobegins s i i i 1 end 2 4语句 3 repeat语句repeat语句的一般形式为 repeatuntil当使用repeat语句时 先执行循环体 再判断表达式 只要until后面的表达式为true 则将再执行循环体 因此 repeat语句下面的循环体至少执行一次 例2 6 求1 100所有整数的累加和 vars i Integer i 1 s 0 repeats s i i i 1 untili 100 2 4语句 4 break语句功能是强行退出循环 break语句只能用在循环体内 例2 7 利用break语句退出一个while循环 vars String beginwhiletruedo 条件恒为真beginReadLn s 读入一字符串ifs thenbreak 不输入任何字符 则退出循环WriteLn s 输出字符串end end 2 4语句 5 continue语句continue语句也用在循环体中 其作用是强行结束本次循环 转入循环开始处 开始执行下一次循环操作 例2 8 使用continue语句 求1 100所有奇数之和 vari s Integer s 0 beginfori 1to100dobeginifimod2 0thencontinue 如果为空 跳过剩余语句 转到下一个循环s s i end end 2 5函数和过程 函数和过程是实现一定功能的语句块 是程序中的特定功能单元 可以在程序的其他地方被调用 也可以进行递归调用 函数和过程的区别在于函数有返回值 而过程没有返回值 2 5 1函数和过程的声明函数和过程在使用前必须进行声明 1 函数的声明函数的声明是在程序的type区 具体形式如下 function 2 5函数和过程 函数的定义是在程序的implementation部分 具体形式如下 function varbegin 也可以用Result系统保留字代替end 在begin与end之间是在函数调用时实现特定功能的一系列语句 函数值的返回有两种方式 将返回值直接赋给函数名 将返回值赋给Result 2 5函数和过程 例2 9 求两个数中的最大数 functionMax a b integer integer 两个形参为整型值a b 函数返回值为整型varm Integer beginifa bthenm aelsem b Max m 或result m end 2 5函数和过程 2 过程的声明过程的声明与函数类似 所不同的是使用的保留字不同 而且少了一个返回值类型 过程的声明是在程序的type区 具体形式如下 procedure 过程的定义是在程序的implementation部分 具体形式如下 procedure beginend 2 5函数和过程 例2 10 显示一行num个星号 procedureShowStar num Integer vari Integer s String begins fori 1tonumdos s ShowMessage s end 2 5函数和过程 2 5 2重载函数和过程所谓重载 是指在同一个作用范围内给不同的函数或过程取同一个名称 重载可以方便编程 重载函数必须用指令字overload来进行说明 下面的两个函数就是重载函数 functionMax a Integer b Integer Integer overload 求两个整数的最大值functionMax a Real b Real Real overload 求两个实数的最大值下面两条语句就调用了不同的函数 Max 3 7 4 6 调用的是第二个重载函数Max 3 4 调用的是第一个重载函数 2 5函数和过程 2 5 3参数1 形参与实参函数或过程的声明和定义时参数列表中的参数称为形式参数 简称形参 而函数或过程调用时参数列表中的参数称为实在参数 简称实参 2 数值参数 变量参数和常量参数 1 数值参数在调用函数或过程时 数值参数在运行过程中只改变其形参的值 不改变其实参的值 即形参不会影响原来实参的值 2 变量参数如果用户想改变传递的参数值 就需要使用变量参数 即在被调用程序的参数表中的形参前加上保留字var 2 5函数和过程 3 常量参数如果当过程或函数执行时要求不改变形参的值 最保险的办法是使用常量参数 在参数表的参数名称前加上保留字const可以使一个形参成为常量参数 使用常量参数代替数值参数可以保护用户的参数 使用户在不想改变参数值时不会意外地将新的值赋给这个参数 2 5 4作用域在ObjectPascal中 根据变量的作用域 可将变量分为 全局变量和局部变量 所谓变量的作用域 是指变量的有效范围 全局变量在整个程序中都有效 其作用域为整个程序 局部变量只在声明它的函数和过程中有效 其作用域只限于该函数或过程本身 2 5函数和过程 例 typevarForm1 TForm1 全局变量Form1implementation R dfm procedureTForm1 FormCreate Sender TObject varm n Integer 局部变量m nForm1 Tform1 局部变量Form1 与上面的全局变量同名 在过程TForm1 FormCreate中局部变量起作用 2 5函数和过程 2 5 5函数和过程的调用1 函数和过程的调用 1 函数的调用函数调用的一般形式为 函数的调用往往是将返回值赋给某个变量或参与运算 例如调用例2 9 将其返回值赋给变量x的语句为 x Max 3 6 2 过程的调用过程的调用的一般形式为 其中的实参可以是常量 变量或表达式 但实参的个数和类型与形参完全匹配 即个数相同 类型一致 例如 调用例2 10的过程ShowStar的语句为 ShowStar 20 2 5函数和过程 2 函数和过程的递归调用所谓递归调用 是指函数A调用函数B 而函数B又调用函数A的情况 或是指一个函数调用自身的特殊情况 例2 11 递归调用programProject1 SappTypeConsole varalpha Integer procedureTest2 varA Integer forword Test2被说明为前置过程 procedureTestl VarA Integer begina a 1 ifa 0t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村新型合作经营体系建设协议
- 时间单位的换算说课课件
- 骆驼祥子人物分析:名著阅读与生活实践教案
- 一年级写景作文望雪250字(13篇)
- 人教版三年级下册期末考试数学试卷(含答案)2024-2025学年广东省汕头市潮南区
- 健康医疗信息服务平台建设合同
- 早教知识培训名称大全课件
- 写人作文大头男孩500字8篇
- 沧桑800字初三话题作文(15篇)
- 日记战胜困难500字13篇
- 2025年摄影测量竞赛题库及答案
- 2025年高压电工作业复审考试试题库与答案
- 应收款考核管理办法
- 中国现代国防教学课件
- 食堂工人培训课件
- 部编版三年级语文上册说课标说教材
- 医德医风课件培训宣传
- 2025届江苏省苏州地区学校英语八年级第二学期期末联考试题含答案
- 胸痹的中医治疗
- 人流术后的护理及健康宣教
- 财务岗位笔试题目及答案
评论
0/150
提交评论