程序结构
program程序名;
单元引用;
常量说明;
类型定义;
变量定义;
过程和函数的定义;
begin
…
end.
1)程序开头关键字:program其后程序名称(Pascal标识符)
2)说明部分:本程序使用单元(说明、类型、变量..的定义)
3)程序开头begin,结尾end。每个语句‘;’结尾,end前分号可省略
关键字和标识符(65个)表2-1 24页
1)标准常量。false、true…
2)标准类型。integer、boolean、real
3)标准函数。sin、cos、abs…
4)标准过程。get、put…
5)标准文件。input、output
自定义标识符
1)大小写、英文、数字、下划线构成长度不超过255
2)开头必须:英文或下划线
3)不得用关键字
4)最好不要与标准标识符同名。
说明:
1)见名知义:age—-年龄
2)长度适中:studentname—-stu_name
3)标识符不分大小写
分隔符:
分号:分隔语句
逗号:分隔数据
注解作用:调试作用、可读性、//单行、{多行}、(也行)
数据类型 表2-2 25页
1)标准类型(可直接使用):整型integer、实型real、字符型char、字符串型string、布尔型boolean
其他12个要先定义再使用
2)顺序类型:整型、字符型、布尔型、枚举型、子界型
整型数据类型 表2-3 16页
常量(constant):直接常量和符号常量
直接:100,1.1,true
符号:const
<常量名>:[<类型名>]=<表达式1>;
pi=3; //常量定义
pi=123; //错误(不能重新定义)
enterchar:char=#13; //定义常量并定义类型
xingming:string[8]=’zhangsan’;
变量(variable):变量名、类型、变量的值
var
<变量名>:<类型名1>;
type
month=1..12;
var
x,y,z:real; //用逗号隔开
i,j,k:integer; //定义整型
m1,m2:month; //month类型已定义
days:array[1..12] of integer; //数组类型
运算符:
8位:0000 0000
and 与(左右都成立)
8 and 7 结果:0 0000 1000 and 0000 0111 结果:0(位置对应1取1)
or 或(其中一个成立)
6 or 3结果:7 0000 0110 or 0000 0011 结果:7(有1取1:0000 0111)
not 非(反一下)
not 6 结果:-7; not 0000 0110 结果:1111 1001 表示-7(1111 1111=-1)
xor 异或(同时成立或同时失败 才成立)
6 xor 3结果:5 0000 0110 xor 0000 0011 结果:5(取单独1:0000 0101)
shl 左移
9 shl 1结果:18 0000 1001 左移1:0001 0010 结果:16+2=18(相当于*2)
shr 右移
27 shr 2结果:6 0001 1011 右移1:000001 10 结果:27 div2平方
前提:必须整型
div 求整除的商
mod 求余数
字符串运算符:(格式)
<字符表达式>|<字符串表达式>+<字符表达式>|<字符串表达式>
关系运算符
=、>、>=、<、<=、<>(不等于)、in(于..内)
‘ab’>’ac’–:返回false,从左到右比较a相同,比较b和c
3<>4–:3不等于4,返回false
3 in [2,3]–:3是否在集合[2,3]内,返回true
逻辑运算符
not(非)、and(与)、or(或)、xor(异或)
var a:boolean;
false and a–:为false,不会计算a的值
true or a–:为true,不会计算a的值
运算符的优先级:
1)括号()
2)函数
3)not、+、-(正负符号)
4)乘法类:*、/、div、mod、and、shl、shr
5)加法类:+、-、or、xor
6)=、>、>=、<、<=、<>、in
建议:人为加括号提高可读性
常用函数与过程
关于函数的使用:
function 方法名(参数):返回类型,调用的时候直接方法名+参数就行,
例如:
write(Concat(s1,s2,s3));
——–这是拼接字符串,输出为s1+s2+s3
于SysUtils单元中定义的(会自动别其他单元引用)
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;
5)取整函数
function round(x:Extended):Int64;
对x四舍不入取整
function trunc(x:Extended):Int64;
返回最大的且不大于x本身的整数。
6)指数函数
function exp(x:Real):Real;
返回e的x方
7)对数函数
function ln(x:real):real;
返回自然对数ln(x)
8)随机函数
function random[(Range:Integer)];
返回一个大于或等于0且小于输入的值:range的随机整数
若无参数a=random,返回大于等于0,小于1的值
9)随机过程
procedure randomize;
10)π函数
function pi:Extended;
返回π值3.14159…;
11)pi:=3.14….;
例1:随机数
randomize;
n:=round(random(26));
或n:=round(random*26);
例2:求sin(60)。
n:=sin(60*pi/180);
字符处理函数与过程
调用函数方式:
1)去掉function
2)括号中给指定参数值
如大小写转换UpperCase(‘a’)
1)大小写转换函数
function UpperCase(const s:string):string;
将s字符串中所有小写字母转化为大写字母
function LowerCase(const s:string):string;
将s字符串中所有大写字母转化为小写字母
2)比较字符串大小的函数
function CompareStr(const s1,s2:string):Integer;
–>后者大,返回负整数;一样返回0;前者大,正整数
(测试结果为:很有意思);
3)拼接字符串
function Concat(s1,s2,s3...):string;
4)查找函数
function Pos(substr,s:string):integer;
查找前者是在后者中的位置,没找到返回0;
(温习一下const:
const(修饰词)
a:string=’2’;
变量:变量类型=具体数值)
5)取字符串函数
function Copy(s:String;index,count:integer):string;
取s中从index到count之间的字符串(第一个为1不是0,包括index和count)
6)求字符串长度
function Length(s:string):integer;
返回s字符串的长度
7)去掉不可见字符
去左(left)
function trimleft(const s:string):string;
去右(right)
function trimright(const s:string):string;
前后
function trim(s:string):string;
8)删除子字符串的过程
procedure delete(s:string;index,count:integer);
删除从第index到count的字符。count>s长度,删除index后面全部
9)插入字符串
procedure insert(source:string;s:string;index:integer);
将source插入单s中的第index位置
日期时间函数过程
1)日期时间函数
function Now:TDateTime;
返回当前日期时间,如:
edit1.Text:=datetimetostr(now);
结果:2017-12-15 15:38:00
2)日期函数
function Data:TDateTime;
edit1.Text:=datetimetostr(Date)
或者
edit1.Text:=datetostr(Date);
结果:2017-12-15
3)时间函数
function Time:TDateTime;
function GetTime:TDateTime;
edit1.Text:=timetostr(time)
或
edit1.Text:=timetostr(gettime);
结果:10:46:50
4)星期函数
function DayOfWeek(Date:TDateTime):Integer;
edit1.Text:=inttostr(dayofweek(date));
结果:星期日为1,星期六为7。 今天星期5,返回6
5)日期与时间格式的函数
function FormatDateTime(const format:string;DateTime:TDateTime):string;
format格式化字符串表2-8 37页
类型转换函数与过程
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,Hour,Min,Sec,MSec:Word;
6)年、月、日转化为日期类型
function EncodeDate(Year,Month,Day:Word):TDateTime;
7)日期类型转化为年、月、日
procedure DecodeDate(Date:TDateTime;Year,Month,Day:Word);
8)字符串型转化为数值型
procedure Val(s;var v;var code:integer);
9)整型转化为字符串型
function IntToStr(Value:integer):string;
function IntToStr(Value:Int64):string;
整型可以是integer或int64
10)字符串型转化为整型
function StrToInt(const s:string):integer;
function StrToInt64(const s:string):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;
其他函数与过程
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;
4)后继函数
function Succ(x);
b的后继是c,2的后继是3.false的后继是true
语句
(细节:end之前的;可以省略不写)
1.赋值语句(’:=’为赋值符号)
var i;
...i:=1...
或
var st:string;
...st:='聪明的程序员使用delphi';
label1.Caption:=st...
2.空语句(设计目的:需要需要而已)
单独一个分号就是一个空语句。
var i;...i:=12;;
3.读语句
read(变量,变量…);
readln(变量,变量…);
区别:前者必须有参数,后者不必须。
4.读语句
write(项1,项2);
writeln(项1,项2);
writeln();//换行
区别:后者换行
(项可以是常数、变量、函数、表达式)
5.goto语句(少用)
1)线定义后使用
2)不可以从构造语句(循环)外转到构造与句内