pascal函式

pascal函式

編程中通常所用到的函式之一,特殊的需要調用資料庫,如:uses math

過程

1.標準過程:由Pascal定義的過程。如我們熟悉的read,write等,程式設計師編程時直接引用就行了。
2.自定義過程:由程式設計師在程式中定義後再使用。
(1) 過程的定義
procedure 過程名(形式參數表); {————過程首部}
var {————說明部分}
begin {————過程體}
...
...
end;
(2)過程的調用:過程在語法上相當於一個語句,所以,調用時,直接寫下就行:
過程名(實在參數表);

//--

System單元函式/過程

//--

過程:

inc(i) 使i:=i+1; inc(i,b) 使i:=i+b; dec(i) 使i:=i-1; dec(i,b) 使i:=i-b;

//--

randomize 初始化隨機數發生器。如果沒有使用randomize,則random函式將使用第一次調用時的返回值.

//--

常用過程列表:

APPEND(F) P 打開一個存在的文本檔案,並將檔案指針指向檔案末尾準備添加元素

ASSIGN(F,C) P 將字元串C所表示的外部檔案名稱賦給檔案變數F

ASSIGNED(X) P 測試程式當中的指針或變數是否為空

BLOCKREAD(F,D,NUM) P 讀類型檔案。

BLOCKWRITE(F,D,NUM) P 寫無類型檔案

BREAK P 中止或結束循環

CHDIR(PATH) P 改變當前目錄

CLOSE(F) P 關閉檔案

CONTINUE P 繼續循環

DELETE(S,POS,LEN) P 刪除一個字元串的子串

DISPOSE(P) P 釋放一個動態變數

ERASE(F) P 刪除一個存在的外部檔案。

EXIT P 過程中止

FILLCHAR(D,LEN,DATE) P 填充數值或字元

FLUSH(F) P 清空檔案快取區

FREEMEM(P,I) P 釋放變長動態變數

GETDIR(DRV,PATH) P 取當前盤,當前目錄

GETMEM(P,I) P 分配變長的動態變數,並把塊地址存放在一個指針變數中

HALT P 立即中止程式執行,返回TP編輯器或DOS

MKDIR(PATH) P 建立一個子目錄

MOVE(S,D,LEN) P 快傳送

NEW(P) P 建立一個新的動態變數

randomize p 初始化隨機數發生器

read/readln(f,x) p 讀入/輸入數據

rename(f,str) p 給一個外部檔案改名

reset(f) p 打開檔案,並將檔案指針指向開始,並準備讀數據

rewrite(f) p 打開檔案,並將檔案指針指向開始,準備寫資料

rmdir(path) p 刪除一個子目錄

runerror p 停止程式的運行

scrollto p 滾動顯示視窗的某部分內容

seek(f,n) p 將檔案指針定位於檔案f的第n個檔案成分上

settextbuf(f) p 將輸入/出緩衝區與一個文本檔案建立關聯

truncate(f) p 截去檔案當前指針以後的內容

val(s,r,p) p 將一個字元串轉換成數值

writeln(f,x) p 輸出

{備註:f:function;p:procedure}

標準函式

標準函式。Turbo Pascal語言提供了自變數為整型量的標準函式有順序函式算術函式和轉換函式等。

標準函式是Turbo Pascal語言預先定義的,它們實際上是能完成特定功能的稱步子程式的程式段。每個標準函式都用一個標識符來標識,每個標準函式都能完成一個特定的功能,在程式中可以直接調用它們。Turbo Pascal語言中某些標準函式與數學中的函式有相似之處。

整數類型

整型是順序類型,即所有的整型數都是按一定的順序排列的。如3的後序數是4,350的後序數是351。以後介紹的布爾型、字元型、枚舉類型和子界類型等都是順序類型。順序函式可以對順序類型數據進行操作,但要注意它們自變數的取值範圍。

①前趨函式:Pred(x)函式值為x-l,例如:

Pred (6)=5 Pred (-21)=-22

②後繼函式:Succ (x)函式值為x+l,例如:

Succ (l5)=16 Succ (-114)= -113

③絕對值函式:Abs (x)函式值為|X|,例如:

Abs (-119)=119 Abs (101)=101

④平方函式:Sqr (x)函式值為X*X,例如:

Sqr (-5)=25 Sqr (l0)= 100

以上四個函式的結果仍是整型數。

⑤奇函式:Odd (x),函式的結果為布爾型。當X為奇數時,函式值為true;當X為偶數時,函式值為false,例如:

Odd (13)= True Odd (16)= False

⑥字元函式:Chr (X),函式值是序號的ASCII字元,屬字元型,例如:

Chr (65)=’A’ Chr (66)=’B’

實數類型

在下列算術函式中,X可以是實型或整型數的表達式。對於函式Abs和Sqr,其結果類型和變數X的類型相同,其他算術函式的結果類型都是實型。

絕對值函式Abs(x):函式值為x的絕對值。

平方函式Sqr (x):函式值為x的平方。

小數函式Frac (x):函式值為x的小數部分。

整數函式Int (x):函式值為x的整數部分。

正弦函式Sin (x):函式值為x的正弦,其中,的單位為弧度。

餘弦函式Cos (x):函式值為x的餘弦,其中,的單位為弧度。

指數函式Exp (x):函式值為e^x。

對數函式Ln (X):函式值為x的自然對數。

平方正根根函式的Sqrt (x):函式值為x的平方正根。注意:sqrt的值參x即使是整數,返回值也是實數。如果要取整,要用函式trunc(在“數學函式與過程”里已說明,這裡不再說明)

反正切函式Arctan(x):函式值為x的反正切,單位為弧度。

隨機函式Random:無自變數時,函式值取(0,1)間的隨機小數;有自變數且為Word類型時,函式值取(0,自變數)間的隨機整數。

字元類型

Turbo Pascal語言提供如下自變數為字元型的標準函式,其中Chr為字元型。

後繼函式Succ (ch):例如,Succ (’8’)="9’ Succ (’E’)="F’

對字元集的最後一個字元,Succ函式無意義。

前趨函式Pred (ch):例如,Pred (’7’)="6’ Pred (’B’)=" A’

序數函式Ord (ch)::給出字元ch在ASCII字元集中的序號,結果為整型。

注意:Ord (’7’)<>7,正確的是:Ord (’7’)=Ord(’0’)+7=48+7=55

若ch是數字字元,則Ord (ch)-Ord ('0')是該數字字元的數值,例如:Ord (’7’)-Ord(’0’)=7

前面介紹的字元函式Chr (i)是Ord (ch)的逆函式,例如:Chr (55)= ’7’ Chr (Ord(’A’))="A’

四、布爾類型函式

Turbo Pascal語言提供布爾型函式主要是幾個字元型函式。

Ord (B) 例如:Ord (false)=0 Ord (true)=1。

字元串

1. 連線運算(函式) concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn。

例:concat("11','aa')="11aa";

2. 求子串。 (函式)Copy(s,I,L) 從字元串s中截取第I個字元開始,長度為L的子串。

例:copy('abdag',2,3)="bda"

3. 刪除子串。(過程) Delete(s,I,L) 從字元串s中刪除第I個字元開始,長度為L的子串。

例:s:="abcde";delete(s,2,3);結果s:="ae"

4. 插入子串。 (過程)Insert(s1,s2,I) 把s1插入到s2的第I個位置。

例:s:="abc";insert('12',s,2);結果s:="a12bc"

5. 求字元串長度 (函式)length(s) 。

例:length('12abc')=5

6. 搜尋子串的位置 (函式)pos(s1,s2) 如果s1是s2的子串 ,則返回s1的第一個字元在s2中的位置,若不是子串,則返回0。

例:pos('ab','12abcd')=3

7.字元的大寫轉換。(函式)Upcase(ch) 求字元ch的大寫體。

例:upcase('a')="A"

8. 數值轉換為數串。 (過程)Str(x,s) 把數值x化為數串s。

例:str(12345,s); 結果s="12345"

9. 數串轉換為數值。 (過程)val(s,x,I) 把數串s轉化為數值x,如果成功則I=0,不成功則I為無效字元的序數。

例:val('1234',x,I);結果 x:=1234

各單元

SYSTEM TP的運行庫,包括常用的標準函式和過程,可以在程式中直接使用,不需USES語句說明

DOS 具有日期、時間、目錄查找、程式執行等功能

CRT 具有螢幕模式控制、擴展鍵盤碼、顏色、視窗、聲音等功能

PRINTER 支持列印輸出操作

GRAPH 高級圖形軟體包,支持多種圖形適配器

GRAPH3 實現TP3.0的圖形軟體包

TURBO3 兼容TP3.0的源程式

OVERLAY 實現高級覆蓋管理

WINDOWS 專供Windows使用的圖形界面單元

SYSTEM

ABS(X) F 求變數的絕對值

ADDR(X) F 測變數地址

APPEND(F) P 打開一個存在的文本檔案,並將檔案指針指向檔案末尾準備添加元素

ARCTAN(X) F 反正切

ASSIGN(F,C) P 將字元串C所表示的外部檔案名稱賦給檔案變數F

ASSIGNED(X) P測試程式當中的指針或變數是否為空

BLOCKREAD(F,D,NUM) P 讀類型檔案。

BLOCKWRITE(F,D,NUM) P 寫無類型檔案

BREAK P 中止或結束循環

CHDIR(PATH) P 改變當前目錄

CHR(X) F 求ASCII碼值為X的字元

CLOSE(F) P 關閉檔案

CONCAT(S1,S2...S3) F 字元串合併

CONTINUE P 繼續循環

COPY(S,POS,LEN) F 返回一個字元串的子串

COS(X) F 餘弦函式

CSEG F 返回CS暫存器的當前值

DEC(X) F X:=X-1

DELETE(S,POS,LEN) P 刪除一個字元串的子串

DISPOSE(P) P 釋放一個動態變數

DSEG F 返回DS暫存器的當前值

EOF(F) F 判斷檔案是否結束

EOLN(F) F 判斷檔案類型中的一行是否結束

ERASE(F) P 刪除一個存在的外部檔案。

EXIT P 過程中止

EXP(X) F 以E為底的指數函式

FILEPOS(F) F 檔案記錄的當前位置

FILESIZE(F) F 檔案記錄數

FILLCHAR(D,LEN,DATE) P 填充數值或字元

FLUSH(F) P 清空檔案快取區

FRAC(X) F 取實形變數的小數部分

FREEMEM(P,I) P 釋放變長動態變數

GETDIR(DRV,PATH) P 取當前盤,當前目錄

GETMEM(P,I) P 分配變長的動態變數,並把塊地址存放在一個指針變數中

HALT P 立即中止程式執行,返回TP編輯器或DOS

HI(I) F 返回一個變數的高位位元組

INSERT(S,D,POS) F 在一個字元串中某一位置開始插入一個子串

INT F 取整數部分

IORESULT F 返回最後一次輸入/出操作的結果狀態

LENGTH(S) F 取字元串的長度

LN(R) F 求自然對數

LO(I) F 返回一個變數的低位位元組

MAXAVAIL F 返回最大記憶體空間

MEMAVAIL F 返回可用記憶體數目

MKDIR(PATH) P 建立一個子目錄

MOVE(S,D,LEN) P 快傳送

NEW(P) P 建立一個新的動態變數

ODD(X) F 判斷一個變數的值是否為奇數

OFS(X) F 側變數偏移地址

ORD(CH) F 求一個字元的ASCII碼值

PARAMCOUNT F DOS參數串長度

PARAMSTR(N) F DOS參數串

PI F 圓周率的值

pos(str1,str2) f 測一個字元串中包含的另一個子串的開始位置

pred(x) f 求前趨

ptr(i) f指針賦值

random f 返回0~1之間的隨機實數

randomize p 初始化隨機數發生器

read/readln(f,x) p 讀入/輸入數據

rename(f,str) p 給一個外部檔案改名

reset(f) p 打開檔案,並將檔案指針指向開始,並準備讀數據

rewrite(f) p 打開檔案,並將檔案指針指向開始,準備寫資料

rmdir(path) p 刪除一個子目錄

round(x) f 求實數的近似數

runerror p 停止程式的運行

scrollto p 滾動顯示視窗的某部分內容

seek(f,n) p 將檔案指針定位於檔案f的第n個檔案成分上

seekrof(f) f 定位到檔案尾

seekroln(f) f 定位到行尾

seg(n) f 測變數段地址

settextbuf(f) p 將輸入/出緩衝區與一個文本檔案建立關聯

sin(x) f 正弦函式

sizeof(x) f 測變數大小

sptr f 返回sp暫存器的當前值

sqr(x) f 平方

sqrt(x) f 平方根

sseg f 返回ss暫存器的當前值

str(i,s) f 將一個整數轉換成字元串

succ(X) f 後繼函式

swap(x) f 交換一個變數的高位和低位位元組

trunc(x) f 截去實數的小數部分

truncate(f) p 截去檔案當前指針以後的內容

upcase(ch) f 將小寫字母轉換成大寫字母

val(s,r,p) p 將一個字元串轉換成數值

writeln(f,x) p 輸出

dos

getdate p 返回系統當前日期

detftime p 返回最後一次寫入的日期和時間

gettime p 返回系統當前時間

packtime p 轉換系統日期和時間,封裝成4個位元組的長整形格式

setdatep 設定系統當前日期

setftimep 寫入新的系統日期和時間,覆蓋系統最後一次寫入的 系統日期和時間檔案

settimep 設定系統當前時間

uppacktime p 將系統日期和時間轉換成紀錄格式

diskfree f 返回指定磁碟可用剩餘空間

disksize f 返回指定磁碟的總容量

get/setverity p 返回/設定dos狀態下的磁碟讀寫標記

fexpand f 返回函式名的全稱

fsearch f 在一個目錄中查找檔案

fsplit f 將一個檔案名稱分成目錄、檔案名稱、擴展名

findfirstp 在當前目錄或指定目錄下查找第一個與給定屬性相匹配的檔案名稱

findnext p 返回下一個滿足匹配條件的檔案名稱

getfattr p 返回檔案的屬性

setfattr p 設定檔案屬性

gerintvec p 返回某箇中斷變數值

intrp 執行軟中斷

msdos p 執行dos系統調用

setintvec p 設定中斷值

exec p 通過一個特定命令行執行特定程式段

keep p 中斷程式的執行但仍駐留在記憶體中

swapvectors p 用當前變數交換所有中斷變數值

dosexitcode f 回到子程式出口

dosversion f 顯示dos版本

crt

assigncrt(f) p 將文本檔案f與顯示器crt建立聯繫

clreolp 清除當前行游標所在位置以後的字元

clrscr p 清除當前視窗或螢幕,游標返回到左上角

cursoroff p 關閉游標

delay(t) p 等待t毫秒

dellinep 清除游標所在行上所有內容

gotoxy(x,y) p 將游標移到螢幕某處

highvideop 選擇高亮度顯示字元

inslinep 在當前游標位置插入空行

keypressed f 測定鍵盤輸入狀態

lowvideop 低亮度顯示字元

normvideop 選擇正常文本屬性從游標所在位置開始顯示字元

nosound p 關閉內部揚聲器

readkey p 等待從鍵盤輸入一個字元

sound(hz) p 以hz指定的頻率發聲

textbackground(soor) p 設定正文背景顏色

textcolor(color) p 設定正文前景顏色

textmode p 選擇特定的文本顯示模式

wherex/y f 返回當前游標位置的坐標值

window(x1,y1,x2,y2) p 在螢幕定義一個文本視窗

math

在FP中,Math庫為我們提供了豐富的數學函式。以下介紹在OI中可能會用到的Math庫中一些函式、過程。

使用方法:在程式頭用Uses語句載入Math庫

例子:

Program Ex_Math;

Uses Math;

Begin

Writeln(hypot(3,4));

End.

hypot

原型:function hypot(x:float;y:float):float

功能:返回直角三角形中較長邊的長度,也就是sqrt(sqr(x)+sqr(y))

ceil

原型:function ceil(x:float):Integer

功能:返回比參數大的最小整數

引發錯誤:在x超出Integer的範圍時會引發溢出錯誤

floor

原型:function floor(x:float):Integer

功能:返回參數小的最大整數

引發錯誤:在x超出Integer的範圍時會引發溢出錯誤

power

原型:function power(base:float;exponent:float):float

功能:返回base的exponent次方

引發錯誤:在base為負數且exponent為小數時

intpower

原型:function intpower(base:float;const exponent:Integer):float

功能:返回base的exponent次方

ldexp

原型:functionldexp(x:float;const p:Integer):float

功能:返回2的p次方乘以x

log10

原型:function log10(x:float):float

功能:返回x的常用對數

log2

原型:function log2(x:float):float

功能:返回x以2為底的對數

logn

原型:function logn(n:float;x:float):float

功能:返回x以n為底的對數

Max

原型:function Max(a:Integer;b:Integer):Integer

function Max(a:Int64;b:Int64):Int64

function Max(a:Extended;b:Extended):Extended

功能:返回a與b中較大的一個

Min

原型:function Min(a:Integer;b:Integer):Integer

function Min(a:Int64;b:Int64):Int64

function Min(a:Extended;b:Extended):Extended

功能:返回a與b中較小的一個

arcsin

原型:function arcsin(x:float):float

功能:返回x的反正弦值,返回的是弧度指單位

arccon

原型:function arccon(x:float):float

功能:返回x的反餘弦值,返回的是弧度指單位

tan

原型:function tan(x:float):float

功能:返回x的正切值,x以弧度為單位

cotan

原型:function cotan(x:float):float

功能:返回x的餘切值,x以弧度為單位

arcsinh

原型:function arcsinh(x:float):float

功能:返回雙曲線的反正弦

arccosh

原型:function arccosh(x:float):float

功能:返回雙曲線的反餘弦

arctanh

原型:function arctanh(x:float):float

功能:返回雙曲線的反正切

sinh

原型:function sinh(x:float):float

功能:返回雙曲線的正弦

cosh

原型:function sinh(x:float):float

功能:返回雙曲線的正弦

tanh

原型:function sinh(x:float):float

功能:返回雙曲線的正切

cycletorad

原型:function cycletorad(cycle:float):float

功能:返回圓的份數轉換成弧度之後的值

degtorad

原型:function degtorad(deg:float):float

功能:返回角度轉換成弧度之後的值

radtocycle

原型:function radtocycle(rad:float):float

功能:返回弧度轉換成圓的份數之後的值

radtodeg

原型:function radtodeg(rad:float):float

功能:返回弧度轉換成角度之後的值

MaxValue

原型:function maxvalue(const data:Array[] of float):float

function maxvalue(const data:Array[] of Integer):Integer

function maxvalue(const data:PFloat;const N:Integer):float

function maxvalue(const data:PInteger;const N:Integer):Integer

功能:返回數組中的最大值

MinValue

原型:function minvalue(const data:Array[] of float):float

function minvalue(const data:Array[] of Integer):Integer

function minvalue(const data:PFloat;const N:Integer):float

function MinValue(const Data:PInteger;const N:Integer):Integer

功能:返回數組中的最小值

sum

原型:function sum(const data:Array[] of float):float

function sum(const data:PFloat;const N:LongInt):float

功能:求數組中所有數之和

sumsandsquares

原型:procedure sumsandsquares(const data:Array[] of float;var sum:float;

var sumofsquares:float)

procedure sumsandsquares(const data:PFloat;const N:Integer;

var sum:float;var sumofsquares:float)

功能:將數組中的數求和放如num中,求平方和放入sumofsquares中

其他

chain(f) p 目標程式連結

execute(f) p 執行目標程式

mark(p) p 標記動態變數

release(p) p 釋放動態變數區

srtinit p 螢幕初始化

crtline p 漢字螢幕方式轉換

graphbackground(color) p 選擇背景色

graphcolormode p 中解析度彩色圖形方式,320*200彩色

graphmode p 中解析度黑白圖形方式,320*200黑白

graphwindow(x1,y1,x2,y2,color)p 定義圖形方式視窗

hires p 高解析度單色圖形方式,640*200黑白

hirescolor(color) p 高解析度彩色圖形方式,640*200彩色

palette(color) p 中解析度彩色圖形顏色組

ovrpath(path) p 指定覆蓋檔案路徑

draw(x1,y1,x2,y2,color) p 畫線

intr(n,m) p 8086中斷調用

plot(x,y,color) p 畫點

random(integer) f 產生隨機整數

seg(x) f 測變數段地址

colortable(c1,c2,c3,c4) p 重定義顏色組

arc(x,y,radius,color) p 畫圓弧

circle(x,y,radius,color) p 畫圓

getpic(buffer,x1,x2,y1,y2) p 螢幕轉儲到螢幕

putpic(buffer,x,y) p 緩衝器轉儲到螢幕

getdotcolor(x,y) p 讀點

fillscreen(color) p 填充螢幕

fillshape(x,y,fillcol,bordercol) p 填充一個區域

messagebox(icon,s,title,button) p 圖示icon,內容s,標題title,按鈕button的提示框(windows單元)

相關詞條

相關搜尋

熱門詞條

聯絡我們