收藏本页
联系我们
论坛帮助

>> 这里讨论计算机的基础和设计到程序设计的数学问题。关于初赛的相关问题也可以到这里来!
趣题之家信息学竞赛计算机基础 → [分享]Pascal中部分常用函数、过程(最后更新日期2005-3-22)

  发表一个新帖子  发起一个新投票  回复本主题 您是本帖的第 3830 个阅读者
  标题:[分享]Pascal中部分常用函数、过程(最后更新日期2005-3-22) 树形   打印   收藏   推荐  
     帅哥哟,离线,有人找我吗?
    
    
    头衔:好学生
    等级:版主
    文章:161
    积分:332
    注册:2004-11-06
 QQ 给gdgzgq发送一个短消息 把gdgzgq加入好友 查看gdgzgq的个人资料 搜索gdgzgq在的所有贴子 点击这里发送电邮给gdgzgq 引用回复这个贴子 回复这个贴子 楼主
发贴心情 [分享]Pascal中部分常用函数、过程(最后更新日期2005-3-22)

供大家参考!^_^


PASCAL中所有单元常用过程,函数列表
SYSTEM   TP的运行库,包括常用的标准函数和过程,可以在程序中直接使用,不需USES语句说明。
DOS      具有日期、时间、目录查找、程序执行等功能
CRT      具有屏幕模式控制、扩展键盘码、颜色、窗口、声音等功能
PRINTER  支持打印输出操作。
GRAPH    高级图形软件包,支持多种图形适配器。
GRAPH3   实现TP3.0的图形软件包。
TURBO3   兼容TP3.0的源程序。
OVERLAY  实现高级覆盖管理


一、子程序设计的需要:
1.细化算法的过程,可以将每一个子问题运用一段相对独立的小程序来解决;
2.一些具有相同或功能相似的程序段在程序中的不同位置反复出现,可以将这样的程序段做成一个整体,用一个标识符给它起一个名字,凡是需要这个程序段的地方只要简单地引用其标识符即可。
3.子程序包括过程和函数两种形式。


二、函数
1.标准函数 :由Pascal定义的函数。如我们熟悉的ord,chr等,程序员编程时直接引用就行了。
2.自定义函数:由程序员在程序中定义后再使用。
(1)自定义函数的定义
function 函数名(形参表):函数类型; { ————函数首部}
var {————局部变量说明部分}
begin {————函数体}
... {————函数语句}
...
函数名:=表达式
end;
(2)函数的调用:函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。
例如赋值语句的右边:
X:=函数名(实在参数表); {————X的类型与函数类型必须一致}
又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式:
if 函数名(实在参数表) then ……


三、过程
1.标准过程:由Pascal定义的过程。如我们熟悉的read,write等,程序员编程时直接引用就行了。
2.自定义过程:由程序员在程序中定义后再使用。
(1) 过程的定义
procedure 过程名(形式参数表); {————过程首部}
var {————说明部分}
begin {————过程体}
...
...
end;
(2)过程的调用:过程在语法上相当于一个语句,所以,调用时,直接写下就行:
过程名(实在参数表);


四、子程序中的参数
1.局部变量和全局变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
2.变量的作用域
(1)变量的作用域和它被定义的位置有关:
在哪里被定义,它的作用范围就在那里:全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序
(2)全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
3.值形参和变量形参
值形参——传值
变量形参——传地址


以下为部分函数、过程列表(按字母表顺序排列):


求绝对值函数abs(x)
定义:function Abs(X): (Same type as parameter);
说明:X可以是整型,也可以是实型;返回值和X的类型一致例子:
var
r: Real;
i: Integer;
begin
r := Abs(-2.3); { 2.3 }
i := Abs(-157); { 157 }
end.


打开文件Append过程
定义:procedure Append(f:file of 类型);
说明:打开一个存在的文本文件,并将文件指针指向文件末尾准备添加元素
例子:
var f:file of 类型;
begin
  assign(f,'文件完全路径');
  append(f);
end.


建立文件联系Assign过程
定义:procedure Assign(f:file of 类型;c:string);
说明:将字符串C所表示的外部文件名赋给文件变量F
例子:
var f:text;
begin
  assign(f,'C:\pascal.txt');
end.


终止循环Break过程
定义:procedure Break;
说明:中止或结束循环
例子:
var i:integer;
begin
  for i:=1 to 10 do
  begin
    if i<=5 then write(i)
    else break;
  end;
end.
输出结果为:12345


将ASCII码值转为字符Chr函数
定义:function chr(x:integer):char;
说明:求ASCII码值为X的字符
例子:
var i:integer;
begin
  for i:=1 to 255 do
    write(i:4,chr(i));
end.


关闭文件Close过程
定义:procedure Close(f:file of 文件类型);
说明:关闭文件
注意:在完成文件操作后,必须将此文件用Close关闭,否则数据将丢失!
例子:
var f:text;
begin
  assign(f,'C:\Pascal.txt');
  close(f);
end.


复制子串copy
定义: function Copy(S: String; Index: Integer; Count: Integer): String;
注意:S 是字符串类型的表达式。Index和Count是整型表达式。Copy 返回S中从Index开始,Count个字符长的一个子串。
例子:
var S: String;
begin
S := 'ABCDEF';
S := Copy(S, 2, 3); { 'BCD' }
end.


递减Dec过程
定义:procedure Dec(x,y:integer);
说明:表示x:=x-y,当y=1时,其表达式可以写为Dec(x)
例子:
var i:integer;
begin
  i:=10;
  repeat
    dec(i);
    write(i);
  until i=0;
end.
输出结果:9876543210


删除子串delete
定义:procedure Delete(var S: String; Index: Integer; Count:Integer);

注意:S 是字符串类型变量。 Index和Countare是整型表达式。Delete 删除S中从Index开始的Count个字符。如果Index大于S的长度,则不删除任何字符;如果Count大于S中从Index开始的实际字符数,则删除实际的字符数。

例子:
var
s: string;
begin
s := 'Honest Abe Lincoln';
Delete(s,8,4);
Writeln(s); { 'Honest Lincoln' }
Delete(s,9,10);
Writeln(s); { 'Honest L' }
end.


取小数函数frac(x)
定义:function Frac(X: Real): Real; 注意:X 是实型表达式. 结果返回 X 的小数部分; 也就是说,Frac(X) = X - Int(_X). 例子:
var
R: Real;
begin
R := Frac(123.456); { 0.456 }
R := Frac(-123.456); { -0.456 }
end.


插入子串insert
定义:procedure Insert(Source: String; var S: String; Index: Integer);

注意:Source 是字符串类型的表达式。 S 是任意长度字符串类型变量。Index 是整型表达式。Insert 把 Source插在S中Index处。如果结果字符串的长度大于255,那么255之后的字符将被删除。

例子:
var
S: String;
begin
S := 'Honest Lincoln';
Insert('Abe ', S, 8); { 'Honest Abe Lincoln' }
end.


取整函数int(x)
定义:function Int(X: Real): Real; 注意:X是实型数,返回值也是实型的;返回的是X的整数部分,也就是说,X被截尾了(而不是四舍五入)例子:
var R: Real;
begin
R := Int(123.567); { 123.0 }
R := Int(-123.456); { -123.0 }
end.


求长度length
定义:function Length(S: String): Integer;
例子:
var
S: String;
begin
Readln (S);
Writeln('"', S, '"');
Writeln('length = ', Length(S));
end.


求子串起始位置pos
定义:function Pos(Substr: String; S: String): Byte;

注意:Substr和S字符串类型表达式。Pos在S中搜索Substr并返回一个integer值。这个值是Substr的第一个字符在S中的位置。如果在S中没有找到Substr,则Pos返回0。

例子:
var S: String;
begin
S := ' 123.5';
{ Convert spaces to zeroes }
while Pos(' ', S) > 0 do
S[Pos(' ', S)] := '0';
end.


四舍五入函数round(x)
定义:function Round(X: Real): Longint; 注意:X是实型表达式. Round 返回Longint型的X的四舍五入值.如果返回值超出了Longint的表示范围,则出错. 例子:
begin
Writeln(1.4, ' rounds to ', Round(1.4)); { 1 }
Writeln(1.5, ' rounds to ', Round(1.5)); { 2 }
Writeln(-1.4, 'rounds to ', Round(-1.4));{ -1 }
Writeln(-1.5, 'rounds to ', Round(-1.5));{ -2 }
end.


求平方根函数sqrt(x)和平方函数sqr(x)
定义:
平方根:function Sqrt(X: Real): Real;
注意:X 是实型表达式. 返回实型的X的平方根. 平方:function Sqr(X): (Same type as parameter);
注意:X 是实型或整型表达式.返回值的类型和X的类型一致,大小是X的平方,即X*X.
例子:
begin
Writeln('5 squared is ', Sqr(5)); { 25 }
Writeln('The square root of 2 is ',Sqrt(2.0)); { 1.414 }


数值转为字符串str
定义: procedure Str(X [: Width [: Decimals ]]; var S:string);

注意:将数值X转成字符串形式。
例子:
var
S: string[11];
begin
Str(I, S);
IntToStr := S;
end;
begin
Writeln(IntToStr(-5322));
Readln;
end.


截尾函数trunc(x)
定义:function Trunc(X: Real): Longint; 注意:X是实型表达式. Trunc 返回Longint型的X的整数部分例子:
begin
Writeln(1.4, ' becomes ', Trunc(1.4)); { 1 }
Writeln(1.5, ' becomes ', Trunc(1.5)); { 1 }
Writeln(-1.4, 'becomes ', Trunc(-1.4)); { -1 }
Writeln(-1.5, 'becomes ', Trunc(-1.5)); { -1 }
end.

字符串转为数值val
定义: procedure Val(S; var V; var Code: Integer);
在这里:
S 是由一系列数字字符构成的字符串类型变量;。
V 是整型或实型变量;
Code 是Integer型变量

注意:Val将S转为它的数值形式。
例子:
var s:string;I, Code: Integer;
begin
s:='1234';
val(s,i,code);
writeln(i); { 1234 }
end.


字符完全串连+
定义:操作符+把两个字符串联在一起。
例子:
var s1,s2,s:string;
begin
s1:='Turbo ';
s2:='pascal';
s:=s1+s2; { 'Turbo pascal' }
end.


字符串压缩空格串连-
定义:操作符-去掉第一个字符串最后的空格后,将两个字符串联在一起。
例子:
var s1,s2,s:string;
begin
s1:='Turbo ';
s2:='pascal';
s:=s1-s2; { 'Turbopascal' }
end.


[此贴子已经被作者于2005-3-22 21:17:56编辑过]

趣题之家欢迎你!
发贴IP已设置保密 2004-11-30 21:50
       
     帅哥哟,离线,有人找我吗?
    
    
    头衔:好学生
    等级:版主
    文章:161
    积分:332
    注册:2004-11-06
 QQ 给gdgzgq发送一个短消息 把gdgzgq加入好友 查看gdgzgq的个人资料 搜索gdgzgq在的所有贴子 点击这里发送电邮给gdgzgq 引用回复这个贴子 回复这个贴子 2
发贴心情
====================
= 您没有浏览该精华帖子的权限 =
====================

趣题之家欢迎你!
  
发贴IP已设置保密 2004-11-30 21:55
       
     帅哥哟,离线,有人找我吗?
    
    
    等级:管理员
    威望:50
    文章:291
    积分:669
    注册:2003-05-18
 QQ 给趣题之主发送一个短消息 把趣题之主加入好友 查看趣题之主的个人资料 搜索趣题之主在的所有贴子 点击这里发送电邮给趣题之主 访问趣题之主的主页引用回复这个贴子 回复这个贴子 3
发贴心情
Good!
发贴IP已设置保密 2004-12-01 21:51
       
     帅哥哟,离线,有人找我吗?
    
    
    头衔:好学生
    等级:版主
    文章:161
    积分:332
    注册:2004-11-06
 QQ 给gdgzgq发送一个短消息 把gdgzgq加入好友 查看gdgzgq的个人资料 搜索gdgzgq在的所有贴子 点击这里发送电邮给gdgzgq 引用回复这个贴子 回复这个贴子 4
发贴心情
顶!~

趣题之家欢迎你!
发贴IP已设置保密 2005-03-22 21:19
       

 4   4   1/1页      1    


网上贸易 创造奇迹! 阿里巴巴 Alibaba

Powered By Dvbbs Version 7.1.0
Copyright ©2003 - 2006 QTHome.Org
页面执行时间 00.12500 秒, 3 次数据查询
本论坛采用阿里巴巴支付宝网上银行支付系统,安全、可靠、便捷