Delphi的语法基础.ppt

上传人:max****ui 文档编号:8615357 上传时间:2020-03-30 格式:PPT 页数:28 大小:223.05KB
返回 下载 相关 举报
Delphi的语法基础.ppt_第1页
第1页 / 共28页
Delphi的语法基础.ppt_第2页
第2页 / 共28页
Delphi的语法基础.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
第3章Delphi的语法基础 本章学习要点 l学习ObjectPascal的基本概念l学习ObjectPascal的变量 常量及数据类型l掌握顺序和选择结构l掌握三种循环结构l掌握过程与函数的创建与调用 Delphi是一个基于ObjectPascal语言的Windows应用程序开发系统 在所有的事件处理过程和应用程序中都是使用它来编写程序代码 因此学习Delphi的关键是学习和掌握ObjectPascal语言的语法与使用方法 ObjectPascal语言保留了Pascal语言具有可读性好 编写容易的特点 这使得它很适合作Windows平台上的快速开发语言 同时 使用ObjectPascal语言编译器刨建的应用程序只生成单个可执行文件 EXE 正是这种结合 使得ObjectPascal成为Delphi这种先进集成开发包的编程语言 下面将讲解有关ObjectPascal语言的一些基本语法规则 而不是Pascal语言的一切细节 如果用户不熟悉TurboPascal编程而又希望了解有关的内容的话 请参阅一些基础的Pascal教程 3 1基本概念 首先介绍ObjectPascal语言的最基本内容 标识符和运算符以及语句的书写规则和符号约定 3 1 1标识符标识符是所有编程语言都要使用到的概念 ObjectPascal语言程序是由多种语法成分构成的 这些语法成分包括常量 变量 类型 函数 过程 单元等等 为了能够在程序中使用这些语法成分的实例 用户就需要为这些实例各自取一个名字也就是标识符 在使用标识符前 用户必须首先声明它们 ObjectPascal语言的编译器会自动检查标识符的类型以确保标识符的赋值是正确的类型 ObjectPascal语言对标识符的定义有着明确的规定 标识符不区分大小写 标识符只能以字母或下划线开头 标识符中只有前255位有效 标识符中不能包含空格 标识符不能使用ObjectPascal语言的保留字 对不同对象中相同标识符的成分必须使用 分隔表示所属关系 保留字 ReservedWords 是由系统规定的 具有特定意义的单词 在编程时不能被重新定义或另作他用 ObjectPascal语言规定的保留字在Delphi集成开发环境的代码编辑器中是以黑体加粗显示的 这些保留字包括 and array as asm begin case class const constructor destructor dispinterface div do downto else end except exports file finalization finally for function goto if implementation in inherited initialization inline interface is label library mod nil not object of or out packed proceduce program property raise record repeat resourcestring set shl shr string then threadvar to try type unit until uses var while with xor private protected public published automated at on ObjectPascal编程语言对单词的大小写是不敏感的 即不区分所有标识符和保留字的大小写 3 1 2运算符 ObjectPascal语言的运算符分为数学运算符 逻辑运算符 指针运算符 关系运算符 字符串运算符 集合运算符 类运算符和 运算符 其中数学运算符包括 div mod 逻辑运算符包括 not and or xor shl shr 指针运算符包括 关系运算符包括 集合运算符包括 in 类运算符包括 as in 3 1 3语句的书写规则 ObjectPascal程序语句书写比较自由 可以把多个语句放在一个程序行中 也可把一个语句分多行书写 但需要记住ObjectPascal的每个语句都必须以分号 半角 结束 在编写自己的ObjectPascal程序时 要注意程序的可读性 Pascal语言是英式结构语言 在程序中选择合适的缩排 大小写风格 并在需要时将程序代码分行 会使得程序代码能够很容易地被自己和他人读懂 对于较为复杂的程序常用到复合语句 复合语句是指将多个语句用begin和end两个保留字包围起来 格式如下 begin end 复合语句在ObjectPascal中被视为一个语句 因此在end后必须加上分号 3 1 4语句格式中的符号约定 为了解释语法规则 在说明各语句 函数的格式和功能时用到表3 1中所列符号 这些符号的含义详见表3 1 表3 1语句格式中的符号约定 3 2常量 变量及数据类型 常量和变量都是存储数据的载体 它们在同一时刻只存储一个数据值或字符串 存储于常量中的值从不改变 存储于变量中的值常常随着程序的运行而改变 使用常量代替文字数据值可以使程序易于理解和调试 而当需要改变数据时 可通过变量来引用内存单元 ObjectPascal是一种强类型的语言 其变量在使用之前均要求声明其数据类型 数据类型描述了变量和常量的使用倩况 能够存储数据的形式以及能存储数据的多少 在声明变量时 必须确定其类型 在声明常量时 常量值本身就代表其类型 Pascal具有丰富的数据类型 可以将其数据类型分为简单数据类型 字符串类型 构造类型 指针类型 过程类型和可变数据类型等 下面首先介绍常量和变量 3 2 1常量 常量是程序执行过程中不发生变化的值 说明常量时 不必指定其数据类型 只需赋予初值 编译器会自动识别该值并确定正确的类型 例如 constcircleate 3 14 i 10 showmessage 你成功地设置了几种类型的常量 在声明常量时也可以指定常量的类型 这样能完全控制编译器对常量的处理 例如 constcircleate double 3 14 i integer 10 showmessage string 你成功地设置了几种类型的常量 标准Pascal只允许使用简单的常量 而在ObjectPascal中允许使用常量表达式 这些常量表达式应遵循普通表达式的构造规则 在常量表达式中 可以使用编译期间的函数 这些函数如表3 2 表3 2可以在常量表达式中引用的标准函数 下面是一些常量表达式的例子 ConstMax 100 Min 0 Medium Max Min Div2 Beta Chr 255 Numchara Ord z Ord a 1 MyMessage WorngOperation ErrStr Error MyMessage ErrPos 80 Length ErrStr Div2Num 0 9 Alpha A Z a z AlphaNum Alpha Num 注意 如果程序试图改变常量的值 Delphi编译器就会有一个警告 认为程序违反了规则 因为常量值是只读的 3 2 2变量 变量就是在程序运行时其值可以改变的标识符 不同的变量是内存中不同地址的符号表示 用户可以使用这个名称来对该内存地址进行读或写操作 变量就像是一个数据容器 由于它们被赋予了特定的数据类型 因此 它们能够告诉编译器如何对其存放的数据进行解释 变量声明的最基本的语法是 var 例如 vari integer 定义了一个整型变量 varx y real 定义了x和y两个实型变量 当连续进行几个变量声明时 可以不必每次都写出其中的保留字var 例如 varx y z Double i j k Integer Digit 0 9 Okay Boolean 在过程或者函数内部进行声明的变量通常称为局部变量 否则称之为全局变量 全局变量可以在变量声明时就对它进行初始化 其语法为 var 常量表达式 例如要声明一个全局变量 vari integer 7 就相当于 vari integer i 7 当同时声明多个全局变量时 如varx y z real 不能对变量进行初始化 另外 也不能声明文件类型和其他类型的变量 如果没有初始化全局变量 编译器就自动将其初始化为0 而与此相对应 由于局部变量不能进行初始化 因此 在赋值以前 这个局部变量在内存中的值是随机的 当声明一个变量时 其实用户是在给它分配自由的内存空间 该变量不再使用时 Delphi会自动释放它所占用的内存空间 需要指出的是 局部变量仅仅在程序中它们被声明的函数或过程中才有效 3 2 5指针类型 Pascal允许建立动态数据结构 它采用指针类型数据 指针类型变量的引入大大增强了程序的灵活性 一个指针类型变量用于保存一个内存地址 由于该内存地址指向的是一个动态分配的变量 所以 在定义指针类型数据时 必须说明它所指向变量的类型 例如 TypePbirthday TBirthday TBirthday RecordName String 30 Year Integer Month 1 12 Date 1 31 VarPbirthday1 Pbirthday Pint Integer BeginPbirthday1 Name Smith Pint 18 End 3 3顺序结构 3 3 1赋值语句 顺序结构是程序中最简单 最常见的基本结构 在该结构中 各操作模块 对应于程序中的 程序段 按照出现的先后顺序依次执行 它是任何程序的主体基本结构 即使在选择结构或者更为复杂的循环结构中 也常以顺序结构作为其子结构 在顺序结构中 通常使用基本控件完成输入及输出操作 使用赋值语句等简单的操作语句组成顺序结构即可实现顺序结构程序的编写 赋值语句的语法格式为 变量标识符 表达式 该语句的功能是计算赋值号右边表达式的值 并把此值赋给左边变量 例如 x y z b x 1 or y 4 and z0 t sqrt m 4 sin x 3 4选择结构 3 4 1If语句 在日常生活和工作中 经常需要根据给定的条件进行分析 比较和判断 以采取相应的操作 选择结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段 其特点是 根据所给定的条件成立 真 或者 假 决定从实际可能的不同分支中执行某一分支的相应操作 在Delphi中 实现选择结构的语句是IF语句和Case语句 这两种语句又称为条件语句 条件语句的功能就是根据表达式的值有选择地执行一组语句 在执行一段代码以前 if语句能让用户判断某个条件是否满足 下面的代码列出了if语句在Pascal中的用法 ifx 4theny x 注意如果在一条if语句中有多个条件 用户需要用括号把这几个条件分别用括号括起来 例如 if x 7 and y 8 then如果写成ifx 7andy 8then将导致编译器警告 在Pascal中的begin和end 就像是C和C 中的 和 例如 下面的代码是当一个条件满足时要执行多条语句 ifx 6thenbeginbegin endelsebegin 在else子句之前的end之后没有分号 end end 用if else能组合多个条件 ifx 100then语句1elseifx 200then 3 5 1While do循环 while do语句的格式如下 while表达式do循环体语句while do语句先计算表达式的值 如果为True 则执行一次循环体语句 再次计算表达式的值执行循环体语句 直到表达式的值为False为止 如果一开始 表达式的值就为False 则循环体语句一次也不执行 例如下列语句实现计算s 1 2 3 100的值 s 0 i 1 Whilei 100doBegins s i i i 1 End 3 5 2Repeat until循环 repeat until语句的格式如下 repeat循环体语句until表达式repeat until语句先执行一次循环体语句 再计算表达式的值 如果表达式的值为False 再执行一次循环体语句 直到表达式的值为True为止 可以看出循环体语句至少会执行一次 例如下列语句同样实现计算s 1 2 3 100的值 s 0 i 1 repeats s i i i 1 untili 100 3 5 3For do循环 for do语句是一种事先指定循环执行次数的循环语句 其格式如下 第一种形式 for计数变量 初值to终值do循环体语句第二种形式 for计数变量 初值downto终值do循环体语句 其中计数变量为一个有序类型的数据 初值为计数变量的初始值 终值为计数变量的结束值 在第一种形式中 使用的是保留字to 终值必须大于或等于初值 在第二种形式中 使用的是保留字downto 终值必须小于或等于初值 每次执行一次循环体语句 执行完成后计算变量的值增加1 例如 s 0 fori 1to100dos s 1 同样计算s 1 2 3 100的值for do语句可以嵌套使用 例如对array m n 二维数组初始化 fori 1tomdoforj 1tondoarray i j 0 3 6过程与函数 3 6 1过程的定义与调用 for do语句用于事先知道循环次数的场合 如果事先不能确定循环次数而知道判断循环的条件 就可以用while do语句和repeat until语句 其中repeat until语句至少要执行一次循环体语句 编程时for do语句是应用最多的循环语句 实际上for do语句能实现的功能也可以通过while do语句和repeat until语句来实现 过程 Procedure 与函数 Function 是结构化程序设计中的重要概念 是程序中用来实现特定功能的语句块 过程在被调用时能执行某种特殊功能并能返回到调用它的地方 函数和过程相似 不同的是函数在返回到调用的地方时要返回一个值 函数和过程在使用前也要声明 在调用过程时要使用过程名和实参 调用函数则需要函数名及其实参 过程定义的格式如下 procedure过程名 参数表 过程中变量的定义begin过程体语句end 其中过程名的命名应符合标识符的命名规则 在参数表中指明参数的个数及其数据类型 可以不含参数 过程中变量的定义在过程中用到的局部变量 在此处定义的变量的作用范围是整个过程 即只在这个过程中有效 在begin与end之间的过程体语句是实现过程功能的一系列语句 例如 procedureexchange vara b integer 交换两个整型变量的值vartemp integer begintemp a a b b temp end 过程被定义后 在程序中就可以调用它了 调用的形式为 过程名 实际参数 例如 x 5 y 3 exchange x y 3 6 2函数的定义与调用 以上是通用过程的定义与调用形式 实际上事件过程也可以由其他过程调用而被执行 例如以下代码创建了Button1Click事件过程 procedureTForm1 Button1Click Sender TObject beginshowmessage 事件过程的调用 end 可以为窗体的Button2按钮创建独立的OnClick事件过程来调用已经存在的Button1Click事件过程 代码如下 procedureTForm1 Button2Click Sender TObject beginForm1 Button1Click Sender 实际参数Sender还可以改为Form1 Button2 Form1 Button1Click Form1 Button2 end 函数的定义与过程非常相似 只是使用的保留字不同 而且多了一个返回值类型 函数定义的格式如下 function函数名 参数表 返回值类型 函数中变量的定义begin函数体语句end 函数中变量的定义用于定义函数中的局部变量 即在此处定义的变量只在这个函数中有效 函数都具有返回值 每一个ObjectPascal函数都有一个隐含的本地变量称为Result 它包含了函数的返回值 也可以在函数体内把值赋给函数名来返回一个值 这是Pascal的标准用法 例如 functionmax a b integer integer 返回两个变量中的较大值vartemp integer beginifa bthentemp aelsetemp b Result temp 或者max temp end 3 6 4SLMIS中函数的创建与调用 3 常量参数 如果不想使传递给函数或过程的参数被改变 就用const关键字来声明它 关键字const能保护变量的值不被修改 为了简化编程 提高程序执行效率 SLMIS中使用了大量的过程与函数 其中分解房屋座落的函数使用较为频繁 房屋座落是将区 栋 单元 楼层和房号用 减号相连接而成 例如 12 8 1 5 2 表示12区8栋1单元5楼层2号房 下面是根据给定座落分解出房屋所属单元的函数 unitupublicfunc1 interfaceusesWindows Messages SysUtils Classes Graphics Controls shellapi ComCtrls DateUtils functiongethouseceng constS string string 返回房屋座落的单元号implementation functiongethousedanyuan constS string string vari n integer t u v string beginu i pos s n length s t copy s i 1 n i i pos t n length t ifi 0thenu copy t i 1 n i i pos u n length u ifn 0thenbeginif n 0 and i 0 thenresult Copy u 1 i 1 if n0 and i 0 thenresult uend 3 7小结 可以看出上述函数创建被放在单元文件upublicfunc1 pas中 在调用该函数的单元文件中 要在implementation的声明后加入usesupublicfunc1 这样才能调用upublicfunc1 pas中的函数gethousedanyuan 假设房屋座落从edit1文本框中取得 分解以后的房屋单元被放到字符串变量danyuan中 以下代码是调用gethousedanyuan函数的语句 elseresult end danyuan gethousedanyuan trim edit1 text 返回房屋座落的单元号 在本章中 首先介绍了ObjectPascal语言的基本概念 包括标识符 运算符 语句的书写规则及其符号约定 然后是常量 变量及常见的几种基本数据类型 数值 字符 布尔 数组 记录和指针 随后分别介绍了三种结构的程序设计思想和实现方法 在程序设计中它是非常重要的 任何复杂的算法都可以用顺序 选择和循环三中结构组合而成 所以这三种结构称为程序的三种基本控制结构 最后介绍了ObjectPascal语言的过程与函数的定义与调用 参数的传递 以及在实际应用中根据需要如何创建函数并调用之 3 8习题3 1 如何来定义ObjectPascal语言中合法的标识符 2 ObjectPascal中提供了哪些运算符 试列举几个说明之 3 ObjectPascal中有哪几种数据类型 4 编制程序 要求输入初始值 输出50个不能被3整除的数 5 利用循环计算1 2 n的值 n通过文本框输入 6 利用三种循环结构计算n的阶乘 n通过文本框输入 7 简单说明过程与函数的定义有何不同 8 编写一个函数实现把字符传中的小写字母变成大写字母 9 按照3 6 4节中给定的座落 编写分解楼层的函数
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!