好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第2章-Object-Pascal语言ppt课件(全).ppt

95页
  • 卖家[上传人]:pu****.1
  • 文档编号:586052777
  • 上传时间:2024-09-03
  • 文档格式:PPT
  • 文档大小:472.04KB
  • / 95 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第2章 Object Pascal语言 •Delphi是基于Object Pascal语言的Windows应用程序开发软件,Object Pascal语言是Pascal语言的扩展,它支持类的封装、继承、多态等面向对象的编程技术Object Pascal语言具有丰富的数据类型和流程控制,它语法简单、易学,是学好Delphi的基础 2.1 语言成分•本节将介绍Pascal语言的程序组程,包括程序结构、关键字、标识符、注释等等•1.程序结构•下面是Object Pascal语言的程序结构(以控制台应用程序为例),它包括程序名称、说明部分(包括函数、过程、类型、变量、常量的说明或定义)和程序体 •program 程序名;程序名;•单元引用;•常量说明;•类型定义;•变量定义;•过程与函数的定义;•begin•语句1;•… …•语句n;•end. •说明:•(1)程序首部以关键字program开始,其后是程序名称,程序名称是Pascal标识符•(2)说明部分说明了本程序使用到哪些基本的单元,还包括常量的说明、类型的定义、变量的定义,函数与过程的定义等等•(3)程序体是以begin开始的end结束的语句序列,每个语句最后都有一个分号,end之前的分号可以省略,程序最后以点号为结束标志。

      •2.关键字和标识符•关键字(Key Word)又叫做保留字(Reserved Word)是系统事先定义好了的有特殊含义并规定不得重新定义的词汇Object Pascal定义了65个关键字参见表2-1 表2-1 Object Pascal关键字 •说明:除了上面这些保留字外,private、public、protected、automated在定义对象类型的时候也作关键字使用,而在其它地方这几个词汇作为指令符•标识符是用来表示变量、常量、类型、函数、过程、对象等名称的符号,Pascal标识符分为标准标识符和自定义标识符 •所谓标准标识符,就是系统预先分配给一些标准函数、过程、类型以及标准文件使用的符号例如:•(1)标准常量:如false、true等•(2)标准类型:如integer、boolean、real等•(3)标准函数:如sin、cos、abs等•(4)标准过程:如get、put等•(5)标准文件:如input、output等  •所谓自定义标识符,就是程序员根据程序需要为自己定义的常量、变量、函数、过程以及其它一些名称Object Pascal规定标识符应该遵循如下命名规则:•(1)标识符由大小写英文字母、阿拉伯数字、下划线构成,长度不超过255。

      •(2)必须以英文字母或者下划线开始•(3)不得与关键字同名•(4)最好不要与标准标识符同名,以免混淆 •说明:•(1)标识符最好做到见名知义,例如用age表示年龄、stu_name表示学生姓名等等•(2)长度不要太长,容易出错,例如studentname可以写成stu_name等•(3)pascal标识符不分大小写 •3.分隔符和注释•分隔符用于分隔两个语法单位,Object Pascal语言的分隔符分为两种:•(1)分号:用于分隔语句•(2)逗号:用于分隔数据•注释,是程序中用于解释或者说明的部分,在程序运行中注释不被执行程序注释的作用有两个: •(1)调试程序的作用:在调试程序的过程中,如果发现某些语句不需要或者有错误,用户不要急于删除这些语句,可以将这些语句加上注释,等到调试通过再来处理这些语句这样可以避免误删•(2)注释作用:对于那些难理解的语句,可以适当加一些注释语句,这样可以增强程序的可读性 •Pascal语言提供两种注释:•(1)单行注释:注释号“//”之后的内容就是注释•(2)多行注释:注释号“{”和“}”之间就是注释,也可以用“(*”和“*)”来注释多行 2.2 数据类型•描述客观事物的数字、字符以及所有能够输入到计算机中并能被计算机接受的各种符号的集合统称为数据(data)。

      数据是计算机程序处理的对象,数据的一个重要特征就是这个数据属于什么类型数据类型不仅规定了该类型的数据的表示形式、取值范围,还规定了这种数据类型所能参与的各种运算•Object Pascal继承了Pascal数据类型丰富的特点,提供了丰富的数据类型,参见表2-2  •说明:•(1)整型、实型、字符型、字符串型、布尔型这5个类型可以直接使用,称之为标准类型,而枚举、子界等共12个其它类型需要先定义再使用•(2)整型、字符型、布尔型、枚举型和子界型称之为顺序类型关于顺序类型,将在后面详细介绍 •2.2.1 数值型数据•Object Pascal数值型数据类型又分为整型和实型•1.整型•整型的数据类型有正整型、零、负整型,含义与数学中的含义相同整型数据类型是顺序类型例如,1的前导是0,1的后继是2 •2.实型•实型的数据有整数部分和小数部分,含义和数学中一样实型数(简称实数)不是顺序类型实数有两种表示方法,小数表示方法和科学计数表示方法例如,12.3450就是小数表示形式,而1.3570000E+2就是科学计数表示形式E之间的数字称为尾数,表示精度,E之后的数表示阶码,表示10的次方数,阶码必须是整数。

      •下面都是合法的实数:•1.0       123.0       0.0     -0.0     0.8      •1E-3      1.6E-7     3.5E4 •下面的实数表示方法有错误:•12.       .234       E6     2E0.6     12•说明:•(1)实数的小数点表示方法规定,小数点两边都有数字•(2)科学计数表示方法规定,E的前后都必须有数字,之后的数为整数•实型数如表2-4所示 •2.2.2 字符型数据•Object Pascal字符型数据类型又分为字符型和字符串型 •1.字符型•字符型(char)也是顺序类型,表示单一的字符,如'A','a',' '(不是''),'#','*'等等在计算机内存里字符以它的ASCII码的形式保存因此字符可以用单引号的形式表示,还可以用#加ASCII码的形式表示,如#65表示'A',而#97表示'a'常用来表示一些不显示的字符,如#13表示回车,#8表示BackSpace,#32表示空格,#0表示空字符,#27表示ESC等等•注意:两个单引号不表示空字符•除了char外,还有一种字符型widechar,表示一个16位的Unicode字符。

      •2.字符串类型•由多个字符组件的字符序列就是字符串例如'abc'就是一个字符串Object Pascal包含4种类型的字符串如表2-5所示 •2.2.3 布尔型数据•布尔型数据用于逻辑计算,表示事件的真假,它只有两个值真(true)和假(false)它是顺序类型,false的序号是0,true的序号是1false的后继是true,true的前导是false  2.3 常量和变量•有两种数据,一种是在程序运行的过程中值保持不变,称之为常量,常量有两种,一种是符号常量,一种是数值常量还有一种数据就是在程序运行过程中值可以改变的,这种数据称之为变量 • •2.3.1 常量•常量(constant)分为直接常量和符号常量两种•1.直接常量•直接常量就是在程序中直接引用的常数,如整型的常数、实型的常数、布尔型的常数,字符型常数、字符串型常数等等 •(1)整型常数:如100,0,-123等等•(2)实型常数:如1.2,0.0,-0.0,1E6,2.8E-4等等•(3)字符型常数:如#8,#27,#13,'a'等等•(4)字符串常数:如'asd','1+2'等等•(5)布尔型常数:如true和false。

      •2.符号常量•以标识符形式出现的常量如果在程序中某个常数经常出现,就可以定义一个标识符来代替这些常数,这个标识符就是符号常量定义符号常量使用常量定义语句,语法格式如下:•const•<常量名1>[:<类型名>]=<表达式1>;•… …•<常量名n>[:<类型名>]=<表达式n>;const•<常量名1>[:<类型名>]=<表达式1>;•… …•<常量名n>[:<类型名>]=<表达式n>; •说明:•(1)const是Object Pascal标识符,表示常量定义段的开始•(2)常量名是合法的Object Pascal标识符•(3)表达式可以是直接常量或者是由已经定义过的符号常量组成的表达式•(4)可以在定义常量的时候,定义常量的类型 •【例2-1】请看下面的常量定义•const•pi=3.1415926;                 //常量定义•alph=pi/3;                    //pi此前已经定义过,可以直接使用•pi=3.1416;                    //出错,pi不可以重新定义•enterchar:char=#13;             //定义常量并定义类型•pi2:real=3.1416;•xingming:string[8]='zhangsan';•建议在常量命名的时候,尽量做到见名知义。

      这样可以提高程序的可读性,使程序更容易懂,更容易修改 •2.3.2 变量•变量(variable)是指在程序执行过程中其值可以改变的量,变量其实就是某个内存地址的标识符•变量有3个特征•(1)变量名:变量名就是变量的标识符,实际上就是所代表的内存单元的符号地址•(2)类型:变量的类型决定了这个数据的表示数的范围,占据的内存单元的多少,可以进行哪些操作运算•(3)变量的值:变量的值就是所代表的内存单元中存放的数据的值•变量的定义,在Object Pascal中变量要先定义,才能使用变量的定义格式为: •var•<变量名1>:<类型名1>;•<变量名2>:<类型名2>;•… …•<变量名n>:<类型名n>;•当多个变量具有相同的类型的时候,可以使用比较紧凑的格式:•var <变量名1>,<变量名2>,<变量名n>:<类型名>; •说明:•(1)var是关键字,表示变量定义段的开始•(2)变量名是合法的Object Pascal标识符•(3)类型名是Object Pascal的标准类型或者是其它Object Pasal数据类型•(4)同一作用范围的变量名不能同名 •【例2-2】请看下面的变量定义。

      •type•month=1..12;                    //定义类型•var•x,y,z:real;                       //3个变量之间用逗号隔开•i,j,k:integer;                     //定义整型•ch:char;                         //字符型变量•m1,m2:month;                    //month类型已经定义•days:array[1..12]of integer;          //数组类型 •变量定义以后就可以在程序种使用了,使用包括给变量赋值,在表达式中使用变量等等变量定义之后最好要给变量赋一个初始值,因为Object Pascal编译器不会自动对变量初始化,如果不初始化变量,变量的值将是一个随机的值,可能会对程序运行造成影响,甚至出错 2.4 运算符和表达式•运算是程序加工数据的过程,描述程序不同运算的符号称为运算符,参与运算的数据称之为操作数•表达式是表示某个求值规则的运算公式,它包含运算符、操作数、函数、括号等等最简单的表达式是常量、变量或者函数。

      表达式是可以计算出唯一的值的,表达式的类型由表达式的值决定,而表达式的值取决于运算符为此,Object Pascal提供了丰富的运算符,它包括算术运算符、位运算符、字符串运算符、关系运算符、逻辑运算符等等  •2.4.1 算术运算符•算术运算符有+、-、*、/、div、mod其中+、-、*、/可以完成加、减、乘、除四则运算而div和mod分别用于求整除的商和余数,div和mod运算符要求操作数必须是整型数 •【例2-3】要请看下面算术表达式的值•7 mod -2;    //值为1•-7 mod 2;    //值为-1•-7 mod –2    //值为-1•7 div –2;     //值为-3•-7 div -2;     //值为3•-7 div 2;      //值为-3•假设a,b,m,n都是整数,且b不为0如果m是a整除以b的商,n是a整除以b的余数,则有表达式:•a=m*b+n恒成立  •【例2-4】假设今天星期w,w=0表示星期天、w=1表示星期一等等,求明天是星期几,昨天又是星期几?•经过分析,明天星期几应表示为:•w:=(w+1) mod 7;•昨天星期几表示为:•w:=(w-1+7) mod 7; •说明:w在0~6之间,故(w+1) mod 7也在0~6之间。

      当w的值在0~5之间的时候(w+1) mod 7就是w+1的值,当w=6(表示星期六)时,其下一个序号应该为w=0(表示星期天),而w=6时(w+1) mod 7的值也刚好为0综合两种情况(w+1) mod 7表示明天同样的道理(w-1+7) mod 7可以表示昨天星期数  •2.4.2 位运算符•位运算符对操作数进行二进制的位运算,位运算有and(与)、or(或)、not(非)、xor(异或)、shl(左移)、shr(右移)位运算的对象是整数位运算的真值表如表2-6所示 •【例2-5】请看下面的位运算结果•not 6的结果为-7,因为not 00000110结果为11111001(表示-7)•8 and 7的结果为0,因为000001000and 00000111的值为00000000(表示0)•6 or 3的结果是7,因为00000110 or 00000011的值为00000111(表示7)•6 xor 3的结果是5,因为00000110 xor 00000011的值是00000101(表示5)•9 shl 1的结果是18,相当于9乘以2,因为00001001移动后为00010010(表示18)•27 shr 2的结果是6,相当于27 div 2。

      •2.4.3 字符串运算符•字符串运算符用于将多个字符串或者字符连接起来运算符为“+”,运算格式为:•<字符串表达式> | <字符表达式> + <字符串表达式> | <字符表达式>•当多个字符串连接起来的时候,后面一个字符串直接添加到前面一个字符串的后面,字符串的长度变长例如:•'1+2'+'=3'                             //连接后变成'1+2=3'•'聪明的程序员使用'+'Delphi!'           //连接后变成'聪明的程序员使用Delphi!'  •2.4.4 关系运算符•关系运算符用于数值型、布尔型、字符型、字符串型数据的比较,运算结果是布尔型,关系运算符有:=、>、>=、<、<=、<>、in字符比较依据是字符ASCII码的大小、字符串的比较是从左到右进行的•例如:•2.0>3.0      //值为false•'A'<'a'       //值为true•1>=2        //值为false•3<>3.5      //值为true•'ab'>'ac'      //值为false,从左到右比较,前一个字符相同,故比较后面的'b'和'c'。

      •1 in [2,3]     //值为false,in用于判断一个元素是否在一个集合中 •2.4.5 逻辑运算符•逻辑运算符又成为布尔运算符,用于对布尔类型的数据进行运算主要有not(非)、and(与)、or(或)、xor(异或)•逻辑运算的真值表如表2-7所示 •布尔运算具有短路计算功能,即从左往右计算,如果表达式的值已经确定,则立即终止计算,不再继续计算其它表达式的值例如:•var •a:boolean;•false and a;    //值为false,不会计算a的值•true or a;      //值为true,不会计算a的值 •2.4.6 运算符的优先级•运算符是有优先级的,优先级用于决定表达式中的运算的先后次序,优先级高的先运算,优先级低的后运算,同一优先级的按照从左到右运算的顺序运算各种运算符按照从高到低的优先级顺序列出如下: •(1)括号()•(2)函数•(3)not、+、-(取正、负符号)•(4)乘法类:*、/、div、mod、and、shl、shr•(5)加法类:+、-、or、xor•(6)=、>、>=、<、<=、<>、in•建议在复杂的表达式中人为地加上括号以便提高表达式的可读性。

      2.5 常用函数与过程•Delphi提供了丰富的程序库,其中包含了大量的标准函数和过程这些函数和过程都是在SysUtils单元中定义的,而SysUtils单元会自动被其它程序单元引用,因此用户无需在uses语句之后引用该单元•掌握这些标准函数将大大降低编程的复杂度,因此本节介绍比较多的标准函数 •2.5.1 数学运算函数和过程•数学函数用于各种数学运算,主要有如下一些数学函数•(1)绝对值函数•函数格式为: •function Abs(X);•说明:返回参数的绝对值 •(2)平方函数•函数格式为:•function Sqr(X: Extended): Extended;•function Sqr(X: Integer): Integer;•说明:两种重载形式,一般使用第一种,参数为实型表达式返回参数的平方即x*x•(3)平方根函数•函数格式为::•function Sqrt(X: Extended): Extended;•说明:返回非负数x的平方根 •(4)三角函数•正弦函数的格式是:•function Sin(X: Extended): Extended;•余弦函数的格式是:•function Cos(X: Extended): Extended;•反正切函数的定义:•function ArcTan(X: Extended): Extended;  •说明:•① 正弦、余弦函数的参数是弧度,利用正弦、余弦可以计算出正切、余切。

      •② ArcTan返回正切值为x的角度(单位是弧度)•③ 利用ArcTan以及数学关系可以求出其它反正弦、反余弦函数•下面的公式成立:•tan(x)=sin(x)/cos(x)•ctan(x)=cos(x)/sin(x)•arcsin(x)=arctan(x/sqrt(1-sqr(x)))•arccos(x)=arctan(sqrt(1-sqr(x))/x)•arcctan(x)=/2-arctan(x) •(5)取整函数•取整函数分为四舍五入取整和返回最大的不大于该数的整数的取整,四舍五入取整函数格式为:•function Round(X: Extended): Int64;•说明:对x四舍五入取整•返回最大的且不大于x本身的取整函数的格式为:•function Trunc(X: Extended): Int64;•说明:返回最大的且不大于x本身的整数  •(6)指数函数•指数函数的格式为:•function Exp(X: Real): Real;•说明:返回e•(7)对数函数•对数函数的格式为:•function Ln(X: Real): Real;•说明:返回自然对数logx•下列公式成立:•logb=logb/loga=ln(b)/ln(a)•lg(x)=ln(x)/ln(10)•x=exp(n*ln(x))  •(8)随机函数•随机函数的格式为:•function Random [ ( Range: Integer) ];•说明:•① 返回一个大于或者等于0且小于range(range是整数)的随机整数。

      •② 无参数用法,a=random,a的取值范围是0<=a<1 •(9)随机过程•随机过程的格式:•procedure Randomize;•说明:随机种子,可以让Random产生的随机数没有规律•(10)函数•函数的格式为:•function Pi: Extended;•说明:返回值 •【例2-6】请看下面的函数举例•① 随机产生一个大小在97到122之间的随机正整数n•解:randomize;•n:=97+round(random(26));•或者:•randomize;•n:=97+round(random*26); •② 求sin(60)•解:n:=sin(60*pi/180);•③ 求arcctan(1)•解:arcctan(1):=pi/2-acrtan(1);         //值为0.785398163397448,即pi/4•④ 求log5•解:n:=ln(5)/ln(3);                 //值为1.46497352071793•⑤ 求15解:n:= exp(4*ln(15));              //值为50625 •2.5.2 字符处理函数和过程•(1)大小写转换函数•function UpperCase(const S: string): string;•说明:用于将s字符串中的所有小写字母转化为大写字母,其它字符不变。

      •function LowerCase(const S: string): string;•说明:用于将s字符串中的所有大写字母转化为小写字母,其它字符不变•(2)比较字符串大小函数•比较字符串大小的格式为:•function CompareStr(const S1, S2: string): Integer;•说明:s1>s2返回大于0的数、s1=s2返回0,s1

      •(6)求字符串长度函数•函数格式为:•function Length(S): Integer;•说明:返回s字符串的长度 •(7)去掉字符串前置不可见字符的函数•函数格式为:•function TrimLeft(const S: string): string; overload;•function TrimLeft(const S: WideString): WideString; overload;•说明:去掉s字符串的前置不可见字符,然后再返回ss可以是字符型或者是宽字符型小于或者等于#32看着不可见字符 •(8)取掉字符串右边不可见字符•函数格式为:•function TrimRight(const S: string): string; overload;•function TrimRight(const S: WideString): WideString; overload;•说明:去掉s字符串S右边不可见字符,然后再返回s小于或者等于#32的字符看作不可见字符 (9)取掉字符串前置和后面的不可见字符的函数     函数格式为:function Trim(const S: string): string; overload;function Trim(const S: WideString): WideString; overload;说明:去掉s前面和后面的不可见字符,再返回s字符串。

      •(10)删除子字符串过程•函数格式为::•procedure Delete(var S: string; Index, Count:Integer);•(11)插入字符串过程•插入字符串过程的格式为:•procedure Insert(Source: string; var S: string; Index: Integer);•说明:将source字符串插入到s中的第index字符处 •2.5.3 日期时间函数和过程•(1)日期时间函数•日期时间函数的格式为:•function Now: TDateTime;•说明:返回当前的日期时间例如:edit1.Text:=datetimetostr(now),会显示类似“2006-8-18 10:38:54”的日期时间 •(2)日期函数•日期函数的格式为:•function Date: TDateTime;•说明:返回当前的日期,例如:edit1.Text:=datetimetostr(Date)或者edit1.Text:=datetostr(Date)语句会显示类似“2006-8-18”的日期•(3)时间函数•时间函数的格式为:•function Time: TDateTime;•function GetTime: TDateTime;•说明:返回当前的时间。

      例如:edit1.Text:=timetostr(time)或者edit1.Text:=timetostr(gettime)显示类似“10:46:50”的时间 •(4)星期函数•星期函数的格式为:•function DayOfWeek(Date: TDateTime): Integer;•说明:返回星期几,星期天是一个星期的第1天,返回值是1,星期6是一个星期的第7天返回7,其它类推例如:edit1.Text:=inttostr(dayofweek(date))(假设当前日期是2006年8月18日),返回6,因为2006年8月18日是星期五 •(5)日期与时间的格式的函数•日期与时间的格式的函数:•function FormatDateTime(const Format: string; DateTime: TDateTime): string;•说明:FormatDateTime将指定的日期时间值按照format指定的格式输出请看format格式化字符串的取值和含义参见表2-8 •2.5.4 类型转换函数和过程•(1)日期转化为字符串•日期转化为字符串的格式为:•function DateToStr(Date: TDateTime): string;•(2)时间转化为字符串•时间转化为字符串函数的格式为:•function TimeToStr(Time: TDateTime): string;•(3)时间、日期转化为字符串•将日期时间转化为字符串的函数的格式为:•function DateTimeToStr(DateTime: TDateTime): string; •(4)时、分、秒、毫秒转化为时间类型•将时、分、秒、毫秒转化为时间类型的格式为:•function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;•(5)时间类型转化为时、分、秒、毫秒•时间类型转化为时、分、秒、毫秒的过程的格式为:•procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);•说明:将时间日期型数据转化为时、分、秒、毫秒,Hour, Min, Sec, Msec是word类型的变量。

      •(6)年、月、日转化为日期类型•将年、月、日转化为日期类型的函数为:•function EncodeDate(Year, Month, Day: Word): TDateTime; •(7)日期类型转化为年、月、日•将日期类型转化为年、月、日的过程的格式为:•procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);•说明:Year, Month, Day是word类型的变量•(8)字符串型转化为数值型的过程•字符串型转化为数值型的过程的格式为:•procedure Val(S; var V; var Code: Integer);•说明:将字符串s转化为数值型的v,code为0则转化成功,否则转化出错 •(9)整型转化为字符串型•整型转化为字符型的函数的格式为:•function IntToStr(Value: Integer): string; overload;•function IntToStr(Value: Int64): string; overload;•说明:整数可以是integer型的或者是int64型的。

      •(10)字符串型转化为整型•字符串转化为整型的格式为:•function StrToInt(const S: string): Integer;•function StrToInt64(const S: string): Int64;•说明:可以将字符串转化为integer型或者int64型 •(11)浮点型转化为字符串型•浮点型转化为字符串型函数的格式为:•function FloatToStr(Value: Extended): string;•(12)字符串型转化为浮点型•字符串型转化为浮点型的函数的格式为:•function StrToFloat(const S: string): Extended;•(13)字符串转化为布尔类型•字符串转化为布尔类型函数的格式为:•function StrToBool(const S: string): Boolean;; •(14)布尔类型转化为字符串类型•布尔类型转化为字符串类型的函数格式为:•function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;•说明:如果b是true则函数返回为'true'或者'-1',UseBoolStrs为true时返回字符串' true ',UseBoolStrs为false时返回'-1'。

      如果b是false则返回为'false'或者'0',UseBoolStrs为true时返回字符串' false ',UseBoolStrs为false时返回'0'例如:Edit1.Text := BoolToStr(CheckBox1.Checked, CheckBox2.Checked) •2.5.5 其它函数和过程•(1)ASCII码转化为字符•格式为:•function Chr(X: Byte): Char;•说明:将x转化为字符,如chr(97)为'a'字符•(2)取序号函数•格式为:•function Ord(X);•说明:适用于顺序类型,如整型、字符型、布尔型、枚举型和子界型例如:1的序号为1,'a'的序号是'a'的ASCII码值为97,false的序号是0,true的序号是1,等等 •(3)前导函数•格式为:•function Pred(X);•说明:求前导,适用于整型、字符型、布尔型、枚举型和子界等顺序类型例如:'b'的前导是'a',2的前导是1,true的前导是false,等等•(4)后继函数•格式为:•function Succ(X);•说明:求后继,适用于整型、字符型、布尔型、枚举型和子界等顺序类型。

      例如:'b'的后继是'c',2的后继是3,false的后继是true,等等 2.6 语句•语句是执行计算机程序的指令,计算机的各种操作都是通过计算机语句来实现的Object Pascal语句主要分成基本语句和构造语句两种语句以“;”作为结束标志,end之前的“;”可以省略不写基本语句分为:赋值语句、读写语句、转向语句和空语句构造语句分为:复合语句、条件语句、循环语句和开域语句•基本语句是执行一项特定操作的简单语句,它包含赋值语句、转向语句和空语句、读写语句、注释语句等等构造语句将在其他章节讲解,本节讲述简单语句 •1.赋值语句•将一个表达式的值赋给一个变量、数组元素或者对象的属性,赋值号为“:=”•例如:•var i:integer;     //定义变量i•… …•i:=12;     //变量i取值12•再如:•  var st:string;•     … …•    st:= '聪明的程序员使用Delphi!';   //给st字符串变量赋值•    label1.Caption:=st;                 //给属性赋值 •2.空语句•单独一个分号就是一个空语句。

      设计空语句的目的只是语法需要而已,空语句不会做任何操作•例如:•var i;     //定义变量i•… …•i:=12; ;    //变量i取值12,第1、2个分号之间就是一个空语句•3.读语句•读语句用于从标准设备(键盘)输入数据它有两种格式:•read(变量,变量,……);•readln(变量,变量,……); •其中,read语句必须有参数,而readln可以没有参数,没有参数的readln语句不加括号,单独一个readln语句表示等待输入回车•例如:•①  var i,j,k;•    read(i);•readln(j,k);      //最后两个read语句等价于readln(i,j,k);•②  var ch1,ch2:char;•readln(ch1,ch2);   //输入的两个字符中间不要加任何分隔符,可以写成两个读语句•③  var ch1:char; i:integer;•    readln(i,ch1);     //错,这样写无法输入ch1 • ③  var ch1:char; i:integer;•    readln(i,ch1);     //错,这样写无法输入ch1•    readln(ch1,i);     //对,在输入字符后再输入一个整数•4.写语句•写语句用于将数据从标准设备(显示器)输出,有两种格式:•write(数据项1,数据项2,……);•writeln(数据项1,数据项2,……);其中数据项可以是常数、变量、函数、表达式等等。

      Write语句必须有参数,write语句和writeln语句用于将这些数据项输出在显示器上,writeln表示输出后换一行writeln语句可以没有参数,表示输出一个空行,没有参数的writeln语句不需要括号•根据美观需要,每个数据项的后面还可以定义场宽,格式为: •数据项:整数表达式•说明:如果数据项所占的数据位数不够前面可以加空格,如果数据项所占的数据位数太宽,可以突破场宽的限制,按照数据项的实际宽度显示•如果数据项是实数,还可以这样规定该数据项所占的场宽:•数据项:整数表达式1:整数表达式2•整数表达式1表示实数总宽度,整数表达式2表示小数部分宽度 •【例2-7】求一个三位数的各位数字•分析:本例将用到write、read等语句,用于输入、输出数据•步骤如下:•(1)选择菜单“File | New | Others…”出现新建项对话框,在“Item Categories”列表中选择“Delphi Projects”,然后在右边栏中选择“Console Application”,按“OK”按钮,出现代码编辑器•(2)在代码编辑器中输入代码:•program Project1;•{$APPTYPE CONSOLE}•uses•  SysUtils;• var a,gw,sw,bw:integer; •begin• write('请输入一个三位数=');    //提示输入一个三位数• readln(a);                    //输入一个数• gw:=a mod 10;                //求个位数字  • sw:=(a div 10)mod 10;        //求十位数字• bw:=a div 100;              //求百位数字 • writeln('个位数字是',gw,',十位数字是',sw,',百位数字是',bw);   • readln                      //在等待输入回车的过程中看结果•end. •3)按“F9”键运行,结果如下:•请输入一个三位数=236        // 波浪线表示键盘输入,输入236后回车         •个位数字是6,十位数字是3,百位数字是2    //左边为程序运行显示结果 •5.Goto语句•goto语句是转向语句,与goto同类的转向语句还有break、continue,这两个转向语句将在流程控制这一章讲解。

      Goto语句不符合结构化程序编程的思想,建议少用,但是有时候使用goto语句可以使程序变得非常简单、方便•Goto语句的格式为:•Label 语句标号1,语句标号2,……;  //在定义部分定义语句标号 •Goto 语句标号n;                     // 转向语句•……•语句标号n:语句x;                    //转到此处执行•说明:•(1)语句标号要先定义后使用•(2)不允许用goto语句从构造语句(循环,分支等)外转到构造语句内 •6.复合语句•根据语法需要,例如,如果某个条件成立则需要执行多个语句这时候将多个语句用begin和end括起来,形成复合语句复合语句的格式为:•begin•<语句1>;•……•<语句n>;•end; 2.7 小结 •本章讲述了Object Pascal语言,包括以下知识点:语言成分,数据类型,常量和变量,运算符和表达式,常用的函数和过程以及语句•运算符和表达式是本章的重点,常用的函数和过程也是本章的重点,其中部分函数与过程还是本章的难点,读者务必学会这些函数与过程,并能够在自己的程序中灵活地使用它们 •习题•1.下列哪些符号可以作为用户自定义的标识符?•(1)begin  (2) teacher   (3) 4an    (4) program   (5)x+y•(6)xy     (7)ord       (8)sqr•2.在Object Pascal中哪些是标准数据类型,哪些是顺序类型?•3.下列哪些表达式是常量?哪些表达式是变量?•    (1) x+y  (2)name   (3)false   (4)'name'   (5)'3+4=5'•    (6) 4.5  (7)else    (8)5E4.5    (9) 12.34    (10)sin90•4.下列哪些常量的定义是合法的?•   (1)Const c:=(3>4)   (2)Const c=3.4     (3)Const c:=10 and 20•   (4)Const f=false    (5)Const g:real=4.6  (6)Const k=3+4 •5.下列变量定义哪些合法?•   (1)var a,b,c:integer;   (2)var f1,f2:boolean;    (3)var a:string[8]•        a:real;                 var f3,f4:integer;         •6.计算下了表达式的值•   (1)20+19 div –3      (2)succ('b')+pred('c')      (3)chr(13)•   (4)-30 mod 4        (5)('a'>'b') and false       (6)exp(ln(3))•7.将下列数学表达式改写成等价的Object Pascal表达式。

      •    (1)      (2)x+    (3)elg(a+b)(-2t)•    (4)ctan(30) ×arcctan(1) •8.如何随机产生一个大写英文字母•9.如何随机产生一个三位的正整数•10.如何对x小数点后的第3位进行四舍五入•11.下列赋值语句,正确的有哪些?•    (1)sin90:=23;    (2)x+y:=78;   (3)sqrt:=87;•    (4)a:=true

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.