信息學(xué)奧賽輔導(dǎo)相關(guān)2016年p程序基礎(chǔ)_第1頁(yè)
信息學(xué)奧賽輔導(dǎo)相關(guān)2016年p程序基礎(chǔ)_第2頁(yè)
信息學(xué)奧賽輔導(dǎo)相關(guān)2016年p程序基礎(chǔ)_第3頁(yè)
信息學(xué)奧賽輔導(dǎo)相關(guān)2016年p程序基礎(chǔ)_第4頁(yè)
信息學(xué)奧賽輔導(dǎo)相關(guān)2016年p程序基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PASCALPASCAL程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)一、一、 PASCAL語(yǔ)言基礎(chǔ)知識(shí)語(yǔ)言基礎(chǔ)知識(shí)二、二、 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)三、三、 數(shù)組與字符串?dāng)?shù)組與字符串四、四、 函數(shù)與過(guò)程函數(shù)與過(guò)程五、五、 遞歸遞歸一、一、PASCAL程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)Program area;Program area;ConstConst pi=3.1416; pi=3.1416;VarVar r:integer; r:integer; s:real; s:real;BeginBegin writeln(enter r=); writeln(enter r=); readln(r); readln(

2、r); s:=pi s:=pi* *r r* *r;r; write(s=,s) write(s=,s)End.End.程序首部程序首部說(shuō)明部分說(shuō)明部分執(zhí)行部分執(zhí)行部分Program Program 程序名;程序名;Const Const 常量說(shuō)明;常量說(shuō)明;Type Type 類(lèi)型說(shuō)明;類(lèi)型說(shuō)明;Var Var 變量說(shuō)明;變量說(shuō)明;Function Function 函數(shù)說(shuō)明;函數(shù)說(shuō)明;Procedure Procedure 過(guò)程說(shuō)明;過(guò)程說(shuō)明;BeginBegin 語(yǔ)句語(yǔ)句1 1; 語(yǔ)句語(yǔ)句2 2; End.End.例:已知圓的半徑例:已知圓的半徑r r,編程求圓的面積,編程求圓的面積s.

3、s.ProgramProgramConstConstVarVarBeginBeginEnd.End.第一節(jié)第一節(jié) PASCAL語(yǔ)言基礎(chǔ)知識(shí)語(yǔ)言基礎(chǔ)知識(shí)二、二、PASCAL字符與符號(hào)字符與符號(hào)1 1標(biāo)識(shí)符標(biāo)識(shí)符(1) (1) 標(biāo)識(shí)符的定義:標(biāo)識(shí)符就是以標(biāo)識(shí)符的定義:標(biāo)識(shí)符就是以字母開(kāi)頭的字母數(shù)字序列,有效長(zhǎng)度為字母開(kāi)頭的字母數(shù)字序列,有效長(zhǎng)度為6363個(gè)字符,并且個(gè)字符,并且大小寫(xiě)等效大小寫(xiě)等效。可以用來(lái)。可以用來(lái)標(biāo)示常量、變量、程序、函數(shù)等。標(biāo)示常量、變量、程序、函數(shù)等。二、二、PASCAL字符與符號(hào)字符與符號(hào)(2) (2) 標(biāo)識(shí)符的分類(lèi):標(biāo)識(shí)符的分類(lèi): a.a.保留字保留字( (關(guān)鍵字關(guān)鍵字

4、) )所謂保留字是指在所謂保留字是指在PascalPascal語(yǔ)言中具有特定的語(yǔ)言中具有特定的含義,標(biāo)準(zhǔn)含義,標(biāo)準(zhǔn)PascalPascal語(yǔ)言中的保留字一共有語(yǔ)言中的保留字一共有3535個(gè)個(gè). .PROGRAM, BEGIN, END, CASE, FUNTION, PROCEDURE, ARRAY, AND,CONST,DIV,DO,DOWNTO,ELSE,F(xiàn)ILE,F(xiàn)OR,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,WITH二、二、PASCAL字符與符號(hào)字符

5、與符號(hào)b.標(biāo)準(zhǔn)標(biāo)識(shí)符:指標(biāo)準(zhǔn)標(biāo)識(shí)符:指Pascal語(yǔ)言預(yù)先定義的標(biāo)識(shí)符,具有特殊含義。語(yǔ)言預(yù)先定義的標(biāo)識(shí)符,具有特殊含義。標(biāo)準(zhǔn)常量標(biāo)準(zhǔn)常量FalseMaxintTrue標(biāo)準(zhǔn)類(lèi)型標(biāo)準(zhǔn)類(lèi)型BooleanCharReal Integer標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)AbsArctanChrCosEofEoln Exp Ln OddOrd PredRoundSinSqr Sqrt SuccTrunc標(biāo)準(zhǔn)過(guò)程標(biāo)準(zhǔn)過(guò)程DisposeGetNewPackPage PutReadReadlnReset RewriteUnpack WriteWriteln標(biāo)準(zhǔn)文件標(biāo)準(zhǔn)文件InputOutput二、二、PASCAL字符與符號(hào)字

6、符與符號(hào) c c用戶(hù)自定義標(biāo)識(shí)符:由你自己根據(jù)需要來(lái)定義。用戶(hù)自定義標(biāo)識(shí)符:由你自己根據(jù)需要來(lái)定義。選用的標(biāo)識(shí)符不能與保留字和標(biāo)準(zhǔn)標(biāo)識(shí)符相同。選用的標(biāo)識(shí)符不能與保留字和標(biāo)準(zhǔn)標(biāo)識(shí)符相同。 在定義標(biāo)識(shí)符時(shí)可以用的字符:在定義標(biāo)識(shí)符時(shí)可以用的字符:AZAZ;azaz;0909;+ +,- -,* *,/ /,= =,=, ,( (,) ), , , , ,:=:=,;,;,. .,:,:,., , 注:Pasca語(yǔ)言除了能使用以上規(guī)定的基本符號(hào)外,不得使用任何其它符號(hào)。 三、三、PASCAL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型數(shù)據(jù)的一個(gè)重要特征就是它的類(lèi)型,數(shù)據(jù)類(lèi)型數(shù)據(jù)的一個(gè)重要特征就是它的類(lèi)型,數(shù)據(jù)類(lèi)型確定了數(shù)據(jù)的構(gòu)

7、成和可進(jìn)行的運(yùn)算。確定了數(shù)據(jù)的構(gòu)成和可進(jìn)行的運(yùn)算。PascalPascal語(yǔ)語(yǔ)言是一種強(qiáng)類(lèi)型語(yǔ)言,言是一種強(qiáng)類(lèi)型語(yǔ)言,不同類(lèi)型間不能任意轉(zhuǎn)不同類(lèi)型間不能任意轉(zhuǎn)換,不同類(lèi)型的變量一般不允許作混合運(yùn)算。換,不同類(lèi)型的變量一般不允許作混合運(yùn)算。程序中出現(xiàn)的所有常量、變量和用戶(hù)自定義的程序中出現(xiàn)的所有常量、變量和用戶(hù)自定義的數(shù)據(jù)必須預(yù)先說(shuō)明后才能使用。數(shù)據(jù)必須預(yù)先說(shuō)明后才能使用。三、三、PASCAL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型PascalPascal數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 簡(jiǎn)單類(lèi)型簡(jiǎn)單類(lèi)型構(gòu)造類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型指針類(lèi)型 三、三、PASCAL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型1.1.整型整型 類(lèi)型類(lèi)型 數(shù)值范圍數(shù)值范圍shortint

8、(短整型) -128.128integer(整型) -32768.32767 longint(長(zhǎng)整型) -2147483648.2147483647 byte(字節(jié)型) 0.255 word(字類(lèi)型) 0.65535 三、三、PASCAL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型2.實(shí)型實(shí)型 類(lèi)型類(lèi)型 數(shù)值范圍數(shù)值范圍real (基本實(shí)型) 2.9e-39.1.7e38single (單精度實(shí)型) 1.5e-45.3.4e38double(雙精度實(shí)型) 5.0e-324.1.7e308三、三、PASCAL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型3.3.布爾型布爾型 boolean false true01邏輯真邏輯真邏輯假邏輯假三、三、PAS

9、CAL數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型4.字符型字符型 char 字符型的值必須用字符型的值必須用單引號(hào)括起來(lái)單引號(hào)括起來(lái),字字母作為字符型的值時(shí),大小寫(xiě)是不等母作為字符型的值時(shí),大小寫(xiě)是不等價(jià)的,價(jià)的,并且字符型只允許單引號(hào)中有并且字符型只允許單引號(hào)中有一個(gè)字符,否則就是字符串。一個(gè)字符,否則就是字符串。 例:例:var var c:char; c:char; c:=a c:=a四、常量與變量四、常量與變量1.1.常量常量(1)(1)常量:在某個(gè)程序的整個(gè)過(guò)程中其值不變的量。常量:在某個(gè)程序的整個(gè)過(guò)程中其值不變的量。(2)(2)常量定義:常量定義出現(xiàn)在說(shuō)明部分。語(yǔ)法格式:常量定義:常量定義出現(xiàn)在說(shuō)明部分。語(yǔ)

10、法格式:constconst常量標(biāo)識(shí)符常量標(biāo)識(shí)符1=1=常量值常量值1;1;.常量標(biāo)識(shí)符常量標(biāo)識(shí)符n=n=常量值常量值n;n;常量標(biāo)識(shí)符的類(lèi)型由定義它的常量的類(lèi)型決定。常量標(biāo)識(shí)符的類(lèi)型由定義它的常量的類(lèi)型決定。 ConstConst pi=3.1416; pi=3.1416; a=10; a=10; c=c; c=c; t=true; t=true;四、常量與變量四、常量與變量2.2.變量變量(1)(1)變量:在某個(gè)程序的運(yùn)行過(guò)程中變量:在某個(gè)程序的運(yùn)行過(guò)程中其值可以發(fā)生改變的量其值可以發(fā)生改變的量(2)(2)變量說(shuō)明:變量說(shuō)明出現(xiàn)在說(shuō)明部分。語(yǔ)法格式:變量說(shuō)明:變量說(shuō)明出現(xiàn)在說(shuō)明部分。語(yǔ)法格

11、式:varvar變量標(biāo)識(shí)符列表變量標(biāo)識(shí)符列表: :類(lèi)型類(lèi)型; ;.變量標(biāo)識(shí)符列表變量標(biāo)識(shí)符列表: :類(lèi)型類(lèi)型; ;varvara,b,c:integera,b,c:integer;m,n:real m,n:real ;五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式1.運(yùn)算符運(yùn)算符a.算術(shù)運(yùn)算符算術(shù)運(yùn)算符運(yùn)算符運(yùn)算運(yùn)算對(duì)象結(jié)果類(lèi)型運(yùn)算符運(yùn)算運(yùn)算對(duì)象結(jié)果類(lèi)型+ 加加 整型、實(shí)型只要有一個(gè)運(yùn)算對(duì)象是實(shí)型,結(jié)果就整型、實(shí)型只要有一個(gè)運(yùn)算對(duì)象是實(shí)型,結(jié)果就-減減 整型、實(shí)型是實(shí)型,如果全部的運(yùn)算對(duì)象都是整整型、實(shí)型是實(shí)型,如果全部的運(yùn)算對(duì)象都是整*乘乘 整型、實(shí)型型并且運(yùn)算不是除法,則結(jié)果為整型,整型、實(shí)型型并且

12、運(yùn)算不是除法,則結(jié)果為整型,/除除 整型、實(shí)型若運(yùn)算是除法,則結(jié)果是實(shí)型。整型、實(shí)型若運(yùn)算是除法,則結(jié)果是實(shí)型。div 整除整除 整型整型整型整型mod 取余取余 整型整型整型整型 5 div 3=15 mod 3=2 五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式b.邏輯運(yùn)算符邏輯運(yùn)算符 運(yùn)算符運(yùn)算符運(yùn)算運(yùn)算運(yùn)算對(duì)象運(yùn)算對(duì)象結(jié)果類(lèi)型結(jié)果類(lèi)型not 邏輯非布爾型布爾型邏輯非布爾型布爾型and邏輯與布爾型布爾型邏輯與布爾型布爾型or 邏輯或布爾型布爾型邏輯或布爾型布爾型 xor 邏輯異或邏輯異或 布爾型布爾型 布爾型布爾型 not (非) 條件為T(mén)rue時(shí),其結(jié)果值為False;否則為T(mén)rue;(取反)n

13、ot(34) and (與) 兩條件都為T(mén)rue時(shí),其結(jié)果值為T(mén)rue;否則為False; or (或) 兩條件中只要有一個(gè)為T(mén)rue ;其結(jié)果值為T(mén)rue;否則為False; xor (異或) 兩條件的邏輯值不相同時(shí),其結(jié)果值為T(mén)rue;否則為False;五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式 c.關(guān)系運(yùn)算符關(guān)系運(yùn)算符運(yùn)算符運(yùn)算符運(yùn)算運(yùn)算運(yùn)算對(duì)象運(yùn)算對(duì)象結(jié)果類(lèi)型結(jié)果類(lèi)型=等于簡(jiǎn)單類(lèi)型布爾型等于簡(jiǎn)單類(lèi)型布爾型 不等于不等于 簡(jiǎn)單類(lèi)型布爾型簡(jiǎn)單類(lèi)型布爾型大于簡(jiǎn)單類(lèi)型布爾型大于簡(jiǎn)單類(lèi)型布爾型= 大于等于大于等于 簡(jiǎn)單類(lèi)型布爾型簡(jiǎn)單類(lèi)型布爾型 運(yùn)算符優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí):not*,/,div,mod,a

14、nd xor,+,-,or in,=,=,=五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式2.表達(dá)式表達(dá)式(1)通過(guò)運(yùn)算符把常量、變量、函數(shù)調(diào)用)通過(guò)運(yùn)算符把常量、變量、函數(shù)調(diào)用結(jié)合起來(lái)組成的式子。結(jié)合起來(lái)組成的式子。pipi* *r r* *r rSum+2Sum+2(xy) and (z=y)(xy) and (z=y)五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式(2)數(shù)學(xué)上的表達(dá)式與)數(shù)學(xué)上的表達(dá)式與pascal語(yǔ)言表達(dá)式的區(qū)別語(yǔ)言表達(dá)式的區(qū)別數(shù)學(xué)表達(dá)式數(shù)學(xué)表達(dá)式 PASCAL表達(dá)式表達(dá)式 注意注意 2a 2*a *號(hào)不能省略號(hào)不能省略 ab a/b 除號(hào)的寫(xiě)法除號(hào)的寫(xiě)法 ab ab 不等號(hào)的寫(xiě)法不等號(hào)的

15、寫(xiě)法 ab a=b 小于等于號(hào)的寫(xiě)法小于等于號(hào)的寫(xiě)法 五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式TrueTrueandandTrueTrue= =TrueTrueTrueTrueFalseFalseFalseFalseFalseFalseTrueTrueFalseFalseFalseFalseFalseFalseFalseFalsePascal中的邏輯運(yùn)算:中的邏輯運(yùn)算:五、運(yùn)算符和表達(dá)式五、運(yùn)算符和表達(dá)式TrueTrueororTrueTrue= =TrueTrueTrueTrueFalseFalseTrueTrueFalseFalseTrueTrueTrueTrueFalseFalseFalse

16、FalseFalseFalse第二節(jié) 結(jié)構(gòu)化程序設(shè)計(jì)pascal程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) (一一)、什么是順序結(jié)構(gòu):、什么是順序結(jié)構(gòu):【例例1】:鍵盤(pán)輸入兩個(gè)變量的值,交換值后輸出。:鍵盤(pán)輸入兩個(gè)變量的值,交換值后輸出。方法:間接交換法方法:間接交換法算法分析:(算法分析:(“自頂向下,逐步求精自頂向下,逐步求精”的編程思想)的編程思想)s1:通過(guò)鍵盤(pán)給通過(guò)鍵盤(pán)給a,b兩個(gè)變量賦值;兩個(gè)變量賦值;s2:交換交換a,b的值;的值; s2-1:引入中間變量引入中間變量c; s2-2:在在c中存放的中存放的a值;值; s2-3:在在a中存放的中存放的b值;值

17、; s2-4:在在b中存放的中存放的c值;值;s3:輸出變量輸出變量a,b的值。的值。程序代碼:程序代碼:program ex1; var a,b,c:integer; beginwrite(please input a,b:);read(a,b);writeln(a=,a,b=,b);c:=a;a:=b;b:=c;writeln(a=,a,b=,b) end. 一一 .順順序序結(jié)結(jié)構(gòu)構(gòu)程程序序設(shè)設(shè)計(jì)計(jì)Pascal 語(yǔ)言的語(yǔ)句分為簡(jiǎn)單語(yǔ)句(也稱(chēng)基本語(yǔ)句)和復(fù)合語(yǔ)句(也稱(chēng)構(gòu)造語(yǔ)句) o(二二):幾個(gè)簡(jiǎn)單語(yǔ)句:幾個(gè)簡(jiǎn)單語(yǔ)句:o1賦值語(yǔ)句:賦值語(yǔ)句:o格式:變量標(biāo)識(shí)符:格式:變量標(biāo)識(shí)符:=表達(dá)式;表

18、達(dá)式;o功能:計(jì)算和賦值雙重功能:功能:計(jì)算和賦值雙重功能:o【例2】寫(xiě)出程序執(zhí)行后,變量的值。o程序代碼:oprogram ex2;o varoa,b:integer;oc:real;och:char;obool:boolean;obegino a:=3;o b:=a;o b:=a+1;o a:=a+1;o c:=a+b;o ch:=h;o bool:=true;o bool:=not bool;o end.o說(shuō)明:1)“:=”賦值號(hào)不同于“=”號(hào),具有方向性,具有計(jì)算功能。o 2)賦值號(hào)兩邊的類(lèi)型應(yīng)該相同。o 3)一個(gè)賦值語(yǔ)句只能給一個(gè)變量賦值,變量可以進(jìn)行多次賦值。o 4)被賦值的變量可

19、以作為因子參與運(yùn)算。2輸入語(yǔ)句(輸入語(yǔ)句(read,readln):格式:格式:read(變量名表變量名表); readln read(a1,a2,a3); 等價(jià)于等價(jià)于 read(a1);read(a2);read(a3); readln(a1,a2,a3); 等價(jià)于等價(jià)于 read(a1);read(a2);read(a3);readln;功能:通過(guò)鍵盤(pán),給指定的變量賦值。功能:通過(guò)鍵盤(pán),給指定的變量賦值?!纠?】:寫(xiě)出程序運(yùn)行后,變量的值。程序代碼:program ex3; var a,b,c:integer;i,j,k:real;ch1,ch2,ch3:char;begin read(

20、a,b,c); readln(i,j,k);read(ch1,ch2,ch3);writeln(a=,a,b=,b,c=,c);writeln(i=,i, j=,j,k=,k);writeln(ch1=,ch1,ch2=,ch2,ch3=,ch3);end.程序運(yùn)行后,輸入數(shù)據(jù):1 2 3 4 56.1 7 8 9 0dos執(zhí)行readln后多余的數(shù)據(jù)將被忽略;執(zhí)行read后多余的數(shù)據(jù)要么被忽略,要么被下一個(gè)read或readln語(yǔ)句所讀入。o3輸出語(yǔ)句(輸出語(yǔ)句(write,writeln):):o格式:格式:write(輸出項(xiàng));(輸出項(xiàng));o writeln;o功能:按指定的格式將輸出項(xiàng)

21、的內(nèi)容輸出。功能:按指定的格式將輸出項(xiàng)的內(nèi)容輸出。o【例例4】:寫(xiě)出程序運(yùn)行后的結(jié)果。:寫(xiě)出程序運(yùn)行后的結(jié)果。o程序代碼:oprogram ex4;o constoa=10;ob=20;obegino writeln(50);o writeln(a);o writeln(a+b);o writeln(a+b=,a+b)oend.o說(shuō)明:1)輸出項(xiàng)的內(nèi)容可以是一項(xiàng),也可以是若干項(xiàng),各項(xiàng)之間用逗號(hào)分隔。o 2)當(dāng)輸出項(xiàng)為常量,直接輸出常量的值;當(dāng)輸出項(xiàng)為變量時(shí),輸出該變量存儲(chǔ)單元內(nèi)的內(nèi)容,變量允許屬于任何一種標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型;當(dāng)輸出項(xiàng)為表達(dá)式時(shí),先計(jì)算后輸出;當(dāng)輸出項(xiàng)為字符串時(shí),原樣輸出單引號(hào)括起來(lái)的

22、內(nèi)容。 501030a+b=301、定義:復(fù)合語(yǔ)句是由若干條語(yǔ)句組成的語(yǔ)句序列。形式:begin 語(yǔ)句1; 語(yǔ)句2; 語(yǔ)句nend;用保留字begin和end括起來(lái),構(gòu)成一條邏輯上的語(yǔ)句,語(yǔ)法上充當(dāng)一條語(yǔ)句。(三三):復(fù)合語(yǔ)句:復(fù)合語(yǔ)句:二二 . 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì)1if 語(yǔ)句:語(yǔ)句:格式:(1) if 條件 then 語(yǔ)句(2) if 條件 then 語(yǔ)句1 else 語(yǔ)句2 (3)if 語(yǔ)句嵌套if 條件1 then 語(yǔ)句11 else if 條件2 then 語(yǔ)句21 else 語(yǔ)句22 ;例:計(jì)算下列函數(shù) y=Program p; Var x,y:real; begin

23、read(x); if x0 then y=1 else y=0; writeln(y=,y); end. 輸入:5 輸出:0 (x=0)1 (x0)-1 (x0)2case 語(yǔ)句:分情況語(yǔ)句(多分支語(yǔ)句)格式:case 表達(dá)式 of 常數(shù)表1:語(yǔ)句1; 常數(shù)表2:語(yǔ)句2; 常數(shù)表n:語(yǔ)句n; else 語(yǔ)句n+1 end;功能:先計(jì)算表達(dá)式的值,然后將表達(dá)式的值依次與各常數(shù)表進(jìn)行對(duì)照,當(dāng)找到一個(gè)與表達(dá)式的值相匹配的常數(shù)表時(shí),就去執(zhí)行該CASE常數(shù)表后面的語(yǔ)句。說(shuō)明:1)end 與case 對(duì)應(yīng) 2)表達(dá)式的類(lèi)型通常是整型、字符型 3)常量表是常量,其類(lèi)型與表達(dá)式的類(lèi)型要一致。常量表中的常量不

24、能重復(fù)。 通常將一組重復(fù)執(zhí)行的語(yǔ)句稱(chēng)為循環(huán)體,而控通常將一組重復(fù)執(zhí)行的語(yǔ)句稱(chēng)為循環(huán)體,而控制重復(fù)執(zhí)行或終止執(zhí)行由重復(fù)終止條件決定。制重復(fù)執(zhí)行或終止執(zhí)行由重復(fù)終止條件決定。 因此,重復(fù)語(yǔ)句是由循環(huán)體及重復(fù)終止條件兩部因此,重復(fù)語(yǔ)句是由循環(huán)體及重復(fù)終止條件兩部分組成。分組成。FOR循環(huán)循環(huán)當(dāng)循環(huán)當(dāng)循環(huán)while直到直到repeat循環(huán)循環(huán)一、循環(huán)結(jié)構(gòu)的三種形式:三三 . 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)(一)for循環(huán)語(yǔ)句1 1forfor語(yǔ)句:(語(yǔ)句:(“計(jì)數(shù)循環(huán)計(jì)數(shù)循環(huán)”):就是將規(guī)定循環(huán)體重復(fù)執(zhí)行的次數(shù)。):就是將規(guī)定循環(huán)體重復(fù)執(zhí)行的次數(shù)。格式:格式:for for 控制變量:控制變量:=

25、=初值初值 to to 終值終值 dodo 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句; for for 控制變量:控制變量:= =初值初值 downto downto 終值終值 dodo 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句;2、for語(yǔ)句執(zhí)行過(guò)程語(yǔ)句執(zhí)行過(guò)程 先將初值賦給左邊的變量(稱(chēng)為循環(huán)控制變量);先將初值賦給左邊的變量(稱(chēng)為循環(huán)控制變量); 判斷循環(huán)控制變量的值是否已判斷循環(huán)控制變量的值是否已“超過(guò)超過(guò)”終值,如已超過(guò),則跳到步驟;終值,如已超過(guò),則跳到步驟; 如果末超過(guò)終值,則執(zhí)行如果末超過(guò)終值,則執(zhí)行dodo后面的那個(gè)語(yǔ)句(稱(chēng)為循環(huán)體);后面的那個(gè)語(yǔ)句(稱(chēng)為循環(huán)體); 循環(huán)變量遞增(對(duì)循環(huán)變量遞增(對(duì)toto)或

26、遞減(對(duì))或遞減(對(duì)downt o)downt o); 返回步驟;返回步驟; 循環(huán)結(jié)束,執(zhí)行循環(huán)下面的一個(gè)語(yǔ)句。循環(huán)結(jié)束,執(zhí)行循環(huán)下面的一個(gè)語(yǔ)句。3 3、說(shuō)明:、說(shuō)明: 1) 1) 初值和終值可以是表達(dá)式,控制變量和初值、終值的類(lèi)型相同,且必須是整型、初值和終值可以是表達(dá)式,控制變量和初值、終值的類(lèi)型相同,且必須是整型、布爾型和字符型等順序類(lèi)型,不能為實(shí)型。布爾型和字符型等順序類(lèi)型,不能為實(shí)型。 2 2)遞增按)遞增按succsucc函數(shù)規(guī)律變化,遞減按函數(shù)規(guī)律變化,遞減按predpred函數(shù)規(guī)律變化,整型按數(shù)值大小變化,如函數(shù)規(guī)律變化,整型按數(shù)值大小變化,如果為字符型量,按果為字符型量,按A

27、SCIIASCII碼表的順序計(jì)算。碼表的順序計(jì)算。 3 3)初值和終值在循環(huán)之前計(jì)算,重復(fù)過(guò)程中,其值不受影響;不得在循環(huán)語(yǔ)句中對(duì))初值和終值在循環(huán)之前計(jì)算,重復(fù)過(guò)程中,其值不受影響;不得在循環(huán)語(yǔ)句中對(duì)控制變量進(jìn)行賦值??刂谱兞窟M(jìn)行賦值。 4 4)當(dāng)初值超過(guò)終值,不執(zhí)行循環(huán),循環(huán)次數(shù)為零。)當(dāng)初值超過(guò)終值,不執(zhí)行循環(huán),循環(huán)次數(shù)為零。例:計(jì)算1+2+3+100之和var i,s:integer;begins:=0; for i:=1 to 100 do s:=s+i; writeln(s);end.循環(huán)體:重復(fù)執(zhí)行循環(huán)體:重復(fù)執(zhí)行初值初值i:循環(huán)控制變量循環(huán)控制變量終值終值 (二)(二)whil

28、e語(yǔ)句:語(yǔ)句: 對(duì)于對(duì)于for循環(huán)有時(shí)也稱(chēng)為計(jì)數(shù)循環(huán)。循環(huán)有時(shí)也稱(chēng)為計(jì)數(shù)循環(huán)。適合用于事先知道循環(huán)次數(shù)適合用于事先知道循環(huán)次數(shù). 當(dāng)循環(huán)次數(shù)未知,只能根據(jù)某一條件來(lái)決定是否進(jìn)行循環(huán)時(shí),用當(dāng)循環(huán)次數(shù)未知,只能根據(jù)某一條件來(lái)決定是否進(jìn)行循環(huán)時(shí),用while 語(yǔ)句實(shí)現(xiàn)循環(huán)要更方便。語(yǔ)句實(shí)現(xiàn)循環(huán)要更方便。(“當(dāng)型循環(huán)當(dāng)型循環(huán)”):當(dāng)條件滿(mǎn)足時(shí)反復(fù)執(zhí)行循環(huán)體。):當(dāng)條件滿(mǎn)足時(shí)反復(fù)執(zhí)行循環(huán)體。格式:格式:while 布爾表達(dá)式布爾表達(dá)式 do 語(yǔ)句語(yǔ)句;執(zhí)行過(guò)程:執(zhí)行過(guò)程: while語(yǔ)句的執(zhí)行過(guò)程為:語(yǔ)句的執(zhí)行過(guò)程為: 判斷布爾表達(dá)式的值判斷布爾表達(dá)式的值,如果其值為真如果其值為真,執(zhí)行步驟執(zhí)行步驟2,

29、否則執(zhí)行步驟否則執(zhí)行步驟4; 執(zhí)行循環(huán)體語(yǔ)句執(zhí)行循環(huán)體語(yǔ)句(do后面的語(yǔ)句后面的語(yǔ)句); 返回步驟返回步驟1; 結(jié)束循環(huán)結(jié)束循環(huán),執(zhí)行執(zhí)行while的下一個(gè)語(yǔ)句。的下一個(gè)語(yǔ)句。說(shuō)明:說(shuō)明: 1)為了使)為了使while循環(huán)能正常終止,循環(huán)能正常終止,布爾表達(dá)式中的變量必須在循環(huán)體中的某布爾表達(dá)式中的變量必須在循環(huán)體中的某語(yǔ)句中有所改變,即有可能使布爾表達(dá)式的值為假,語(yǔ)句中有所改變,即有可能使布爾表達(dá)式的值為假,使循環(huán)結(jié)束,否則將使循環(huán)結(jié)束,否則將出現(xiàn)死循環(huán)。出現(xiàn)死循環(huán)。 2)循環(huán)體中的語(yǔ)句一般是多條語(yǔ)句,用)循環(huán)體中的語(yǔ)句一般是多條語(yǔ)句,用begin和和end使其成為一條復(fù)合語(yǔ)句。使其成為一條

30、復(fù)合語(yǔ)句。引例:引例:求恰好使求恰好使s=1+1/2+1/3+1/n的值大于的值大于10時(shí)時(shí)n的值。的值。var s : real; n : integer;n分母分母begin s:=0; n:=0; while s=10 do當(dāng)當(dāng)s的值還未超過(guò)的值還未超過(guò)10時(shí)時(shí) begin n:=n+1;分母分母1 s:=s+1/n;將下一項(xiàng)值累加到將下一項(xiàng)值累加到s end; writeln(n);輸出結(jié)果輸出結(jié)果end. repeat語(yǔ)句:(“直到型循環(huán)”):反復(fù)執(zhí)行循環(huán)體直到條件滿(mǎn)足為止。格式:repeat 語(yǔ)句1; 語(yǔ)句2; 語(yǔ)句3; 語(yǔ)句n until 布爾表達(dá)式; 執(zhí)行過(guò)程:先執(zhí)行指定的語(yǔ)句

31、序列,然后判斷表達(dá)式。(三) repeat語(yǔ)句:(“直到型循環(huán)”)例】:輸入若干個(gè)字符,它的終止符是#,計(jì)算輸入的字符中a(A)出現(xiàn)的次數(shù)。program ex7; var ch:char; i:integer;begin i:=0; repeat read(ch); if (ch=a) or (ch=A) then i:=i+1; until ch=#; writeln(i=,i)end.三種循環(huán)語(yǔ)句的相同點(diǎn)與不同點(diǎn)FORFORWHILEWHILEREPEATREPEAT語(yǔ)句格式語(yǔ)句格式FOR FOR := TO TO DO DO WHILE WHILE DO DO REPEATREPEAT

32、 UNTIL UNTIL 循環(huán)變量循環(huán)變量賦值賦值布爾表達(dá)式布爾表達(dá)式無(wú)循環(huán)變量無(wú)循環(huán)變量循環(huán)次數(shù)循環(huán)次數(shù)確定,由初值和終值決定確定,由初值和終值決定不確定,由循環(huán)體前的布爾表不確定,由循環(huán)體前的布爾表達(dá)式?jīng)Q定,當(dāng)值為達(dá)式?jīng)Q定,當(dāng)值為“假假”時(shí),結(jié)束循環(huán)。時(shí),結(jié)束循環(huán)??赡芤淮窝h(huán)也沒(méi)有可能一次循環(huán)也沒(méi)有不確定,由循環(huán)體后的布不確定,由循環(huán)體后的布爾表達(dá)式?jīng)Q定,當(dāng)值爾表達(dá)式?jīng)Q定,當(dāng)值為為“真真”時(shí)結(jié)束循環(huán)。時(shí)結(jié)束循環(huán)。至少有一次循環(huán)至少有一次循環(huán)循環(huán)體循環(huán)體多語(yǔ)句時(shí),需用多語(yǔ)句時(shí),需用BEGINBEGIN和和ENDEND多語(yǔ)句時(shí),需用多語(yǔ)句時(shí),需用BEGINBEGIN和和ENDEND多語(yǔ)句時(shí),

33、不需用多語(yǔ)句時(shí),不需用BEGINBEGIN和和ENDEND數(shù) 組一、為什么要使用數(shù)組:例例1輸入50個(gè)學(xué)生的某門(mén)課程的成績(jī),打印出低于平均分的同學(xué)號(hào)數(shù)與成績(jī)。分析:在解決這個(gè)問(wèn)題時(shí),雖然可以通過(guò)讀入一個(gè)數(shù)就累加一個(gè)數(shù)的辦法來(lái)求學(xué)生的總分,進(jìn)而求出平均分。但因?yàn)橹挥凶x入最后一個(gè)學(xué)生的分?jǐn)?shù)以后才能求得平均分,且要打印出低于平均分的同學(xué),故必須把50個(gè)學(xué)生的成績(jī)都保留下來(lái), 然后逐個(gè)和平均分比較,把高于平均分的成績(jī)打印出來(lái)。如果,用簡(jiǎn)單變量a1,a2,,a50存放這些數(shù)據(jù),可想而知程序要很長(zhǎng)且繁。要想如數(shù)學(xué)中使用下標(biāo)變量ai形式表示這50個(gè)數(shù),則可以引入下標(biāo)變量ai。這樣問(wèn)題的程序可寫(xiě)為:第三節(jié) 數(shù)

34、組與字符串tot:=0;tottot:=0;tot表示總分表示總分 for i:=1 to 50 do for i:=1 to 50 do 循環(huán)讀入每一個(gè)學(xué)生的成循環(huán)讀入每一個(gè)學(xué)生的成績(jī),并累加它到總分績(jī),并累加它到總分beginbeginread(ai);read(ai);tot:=tot+ai;tot:=tot+ai;end;end;ave:=tot/50;ave:=tot/50;計(jì)算平均分計(jì)算平均分for i:=1 to 50 dofor i:=1 to 50 doif aiave then writeln(No.,i, if aiave then writeln(No.,i, ,ai)

35、;,ai);如果第如果第i i個(gè)同學(xué)成績(jī)小于平均分,則將輸出個(gè)同學(xué)成績(jī)小于平均分,則將輸出而要在程序中使用下標(biāo)變量,則必須先說(shuō)明這些而要在程序中使用下標(biāo)變量,則必須先說(shuō)明這些下標(biāo)變量的整體下標(biāo)變量的整體數(shù)組,即數(shù)組,即數(shù)組是若干個(gè)同名數(shù)組是若干個(gè)同名(如上(如上面的下標(biāo)變量的名字都為面的下標(biāo)變量的名字都為a a)下標(biāo)變量的集合下標(biāo)變量的集合。 二、一維數(shù)組二、一維數(shù)組當(dāng)數(shù)組中每個(gè)元素只帶有一個(gè)下標(biāo)時(shí),我們稱(chēng)這樣的數(shù)組為一維數(shù)組。1、一維數(shù)組類(lèi)型的定義、一維數(shù)組類(lèi)型的定義 一維數(shù)組類(lèi)型的一般格式:array下標(biāo)1.下標(biāo)2 of ; o我們可以說(shuō),數(shù)組是由固定數(shù)量的相同類(lèi)型的元素組成的。如:typ

36、e arraytype=array1.8of integer;var a1,a2:arraytype; 或var a1,a2:array1.8of integer; 一維數(shù)組應(yīng)用示例例例 輸入50個(gè)數(shù),要求程序按輸入時(shí)的逆序把這50個(gè)數(shù)打印出來(lái)。也就是說(shuō),請(qǐng)你按輸入相反順序打印這50個(gè)數(shù)。分析:我們可定義一個(gè)數(shù)組a用以存放輸入的50個(gè)數(shù), 然后將數(shù)組a內(nèi)容逆序輸出。源程序如下:program ex5_1; type arr=array1.50of integer; 說(shuō)明一數(shù)組類(lèi)型arrvar a:arr;i:integer;beginwriteln(Enter 50 integer:);for

37、 i:=1 to 50 do read(ai);從鍵盤(pán)上輸入50個(gè)整數(shù)readln;for i:=50 downto 1 do 逆序輸出這50個(gè)數(shù)write(ai:10);end.二維數(shù)組o數(shù)組類(lèi)型的定義中有兩個(gè)下標(biāo)類(lèi)型二維數(shù)組類(lèi)型的定義:ntype intarr=array 1.4 of integer; arr=array 1.5 of intarr; nvar a:arr;n變量a是一個(gè)二維的數(shù)組變量,它有5個(gè)分量,分別用a1, a2, a3, a4, a5表示,每個(gè)分量相當(dāng)于一個(gè)一維的數(shù)組變量(有4個(gè)整型分量),通過(guò)下標(biāo)區(qū)分:a1,1, a1,2, a1,3, a1,4 a2,1, a

38、2,2, a2,3, a2,4a3,1, a3,2, a3,3, a3,4 a4,1, a4,2, a4,3, a4,4a5,1, a5,2, a5,3, a5,4otype arr=array 1.5 of array 1.4 of integer; var a:arr; 等價(jià)的定義方式:otype arr=array 1.5,1.4 of integer; var a:arr;或var a:array 1.5,1.4 of integera1,1 a1,2 a1,3 a1,4 a2,1 a2,2 a2,3 a2,4a3,1 a3,2 a3,3 a3,4 a4,1 a4,2 a4,3 a4,

39、4a5,1 a5,2 a5,3 a5,4二維數(shù)組應(yīng)用舉例:例:例: 輸入輸入4名學(xué)生數(shù)學(xué)、物理、英語(yǔ)、化學(xué)、名學(xué)生數(shù)學(xué)、物理、英語(yǔ)、化學(xué)、pascal五門(mén)課五門(mén)課的考試成績(jī),求出每名學(xué)生的平均分,打印出表格。的考試成績(jī),求出每名學(xué)生的平均分,打印出表格。分析:用二維數(shù)組分析:用二維數(shù)組a存放所給數(shù)據(jù)存放所給數(shù)據(jù),第一下標(biāo)表示學(xué)生第一下標(biāo)表示學(xué)生的學(xué)號(hào)的學(xué)號(hào), 第二個(gè)下標(biāo)表示該學(xué)生某科成績(jī),如第二個(gè)下標(biāo)表示該學(xué)生某科成績(jī),如ai,1、ai,2、ai,3、ai,4、ai,5分別存放第分別存放第i號(hào)學(xué)生數(shù)學(xué)、物號(hào)學(xué)生數(shù)學(xué)、物理、英語(yǔ)、化學(xué)、理、英語(yǔ)、化學(xué)、pascal 五門(mén)課的考試成績(jī)五門(mén)課的考試成

40、績(jī),由于要求每由于要求每個(gè)學(xué)生的總分和平均分,個(gè)學(xué)生的總分和平均分, 所以第二下標(biāo)可多出兩列,分所以第二下標(biāo)可多出兩列,分別存放每個(gè)學(xué)生別存放每個(gè)學(xué)生5門(mén)成績(jī)和總分、平均分。門(mén)成績(jī)和總分、平均分。 源程序如下:program ex5_4;var a:array1.4,1.7of real;i,j:integer; beginfillchar(a,sizeof(a),0);函數(shù)fillchar用以將a中所有元素置為0writeln(Enter 4 students score);for i:=1 to 4 do beginfor j:=1 to 5 do 讀入每個(gè)人5科成績(jī)begin read(

41、ai,j); 讀每科成績(jī)時(shí)同時(shí)統(tǒng)計(jì)總分 ai,6:=ai,6+ai,j;end;readln;ai,7:=ai,6/5;求平均分 end;輸出成績(jī)表 writeln( No. Mat. Phy. Eng. Che. Pas. Tot. Ave.); for i:=1 to 4 do beginwrite(i:2, );for j:=1 to 7 do write(ai,j:9:2);writeln; end;end.字符串 字符串有常量形式和變量形式。字符串有常量形式和變量形式。把按一定順序排列的字符數(shù)據(jù)叫做字符串,把按一定順序排列的字符數(shù)據(jù)叫做字符串,表示方法是將字符放入單引號(hào)中表示方法是將

42、字符放入單引號(hào)中,字符,字符串個(gè)數(shù)叫做字符串的長(zhǎng)度。串個(gè)數(shù)叫做字符串的長(zhǎng)度。字符串變量可以用串類(lèi)型標(biāo)識(shí)符字符串變量可以用串類(lèi)型標(biāo)識(shí)符 stringn來(lái)表示。來(lái)表示。N取值在取值在1255之間。省略為之間。省略為255。定義格式定義格式 : type 字符串類(lèi)型名字符串類(lèi)型名=string 最大長(zhǎng)度最大長(zhǎng)度;定義字符串變量格式是:定義字符串變量格式是:Var 字符串變量名:字符串類(lèi)型名;字符串變量名:字符串類(lèi)型名;也可以直接定義字符串變量,其格式為:也可以直接定義字符串變量,其格式為:Var 變量名:變量名: string最大長(zhǎng)度最大長(zhǎng)度;或或 變量名:變量名:string;字符串之間的運(yùn)算:字

43、符串之間的運(yùn)算: 對(duì)字符串可以整體輸入或輸出,如:對(duì)字符串可以整體輸入或輸出,如:read(x);write(y); 允許對(duì)串變量進(jìn)行賦值,如:允許對(duì)串變量進(jìn)行賦值,如:X:=abc; y:=x。 可以對(duì)字符串進(jìn)行連接運(yùn)算,使用可以對(duì)字符串進(jìn)行連接運(yùn)算,使用+進(jìn)行連接。如:進(jìn)行連接。如:ho+me結(jié)果結(jié)果是:是:home。 字符串之間可以進(jìn)行關(guān)系運(yùn)算:字符串之間可以進(jìn)行關(guān)系運(yùn)算: 、 、 =、 、 =、 =、 。比較方法按比較方法按ASCII碼一個(gè)字符一個(gè)字碼一個(gè)字符一個(gè)字符比較。符比較。字符串函數(shù)(1)字符串測(cè)長(zhǎng)函數(shù))字符串測(cè)長(zhǎng)函數(shù)格式:格式:length(s)功能:求字符串功能:求字符串S

44、的長(zhǎng)度,結(jié)果為整型。的長(zhǎng)度,結(jié)果為整型。(2)求子串函數(shù))求子串函數(shù)格式:格式:copy (s,n,1);功能:在功能:在S串的第串的第N位開(kāi)始截取位開(kāi)始截取1位字符串。位字符串。(3) 查找子串函數(shù)查找子串函數(shù)格式:格式:pos(b,s);功能:求子串功能:求子串b在在s中出現(xiàn)的起始位置,結(jié)果為整型,若未找到顯示中出現(xiàn)的起始位置,結(jié)果為整型,若未找到顯示0。(4)插入過(guò)程)插入過(guò)程格式:格式: insert (s1,s2,i);功能:將功能:將s1插入插入 s2中的第中的第i個(gè)字符位置,若結(jié)果超出個(gè)字符位置,若結(jié)果超出s2的最大長(zhǎng)度,則超出的部分被截的最大長(zhǎng)度,則超出的部分被截掉。掉。(5)

45、刪除過(guò)程)刪除過(guò)程格式:格式:delete (s,I,n);功能:刪除功能:刪除s中第中第i個(gè)字符位置開(kāi)始的個(gè)字符位置開(kāi)始的n 個(gè)字符。個(gè)字符。(6)數(shù)值轉(zhuǎn)換為字符串過(guò)程)數(shù)值轉(zhuǎn)換為字符串過(guò)程格式:格式:str(v,s);功能:將數(shù)值功能:將數(shù)值V轉(zhuǎn)換成字符串,存放在字符串變量轉(zhuǎn)換成字符串,存放在字符串變量s中。中。(7)字符串轉(zhuǎn)換為數(shù)值過(guò)程)字符串轉(zhuǎn)換為數(shù)值過(guò)程格式:格式:val(s,v,c);功能:將數(shù)字串功能:將數(shù)字串s轉(zhuǎn)換成數(shù)值轉(zhuǎn)換成數(shù)值v,變量變量C記錄檢測(cè)出錯(cuò)的第一個(gè)字符的位置,當(dāng)未出錯(cuò)時(shí),記錄檢測(cè)出錯(cuò)的第一個(gè)字符的位置,當(dāng)未出錯(cuò)時(shí),C為為0。一、過(guò)程和函數(shù)統(tǒng)稱(chēng)子程序。子程序的執(zhí)行

46、過(guò)程第四節(jié)第四節(jié) 函數(shù)與過(guò)程函數(shù)與過(guò)程函數(shù)(1)標(biāo)準(zhǔn)函數(shù):)標(biāo)準(zhǔn)函數(shù): 我們已經(jīng)接觸過(guò)一些我們已經(jīng)接觸過(guò)一些Free Pascal提供一些內(nèi)部標(biāo)準(zhǔn)函數(shù),供編程時(shí)調(diào)用,提供一些內(nèi)部標(biāo)準(zhǔn)函數(shù),供編程時(shí)調(diào)用,象求象求|X|可調(diào)用可調(diào)用ABS(X),求可調(diào)用),求可調(diào)用SQRT(49)等等。實(shí)際上,這些函數(shù)是等等。實(shí)際上,這些函數(shù)是一些包含在一些包含在Free Pascal系統(tǒng)中供用戶(hù)調(diào)用的程序模塊,分別命名為:系統(tǒng)中供用戶(hù)調(diào)用的程序模塊,分別命名為:ABS,SQRT等。因而,只要在程序中遵照一定的調(diào)用規(guī)則,寫(xiě)出某一函數(shù)等。因而,只要在程序中遵照一定的調(diào)用規(guī)則,寫(xiě)出某一函數(shù)名以及此函數(shù)所需的參數(shù),系統(tǒng)

47、就會(huì)自調(diào)用這些程序模塊,求得運(yùn)算結(jié)果。名以及此函數(shù)所需的參數(shù),系統(tǒng)就會(huì)自調(diào)用這些程序模塊,求得運(yùn)算結(jié)果。如:如:ABS(X) SQRT(12+X)等等。等等。(2)自定義函數(shù))自定義函數(shù) 系統(tǒng)提供的這些內(nèi)部標(biāo)準(zhǔn)函數(shù),雖然使用起來(lái)十分方便,但其中種類(lèi)和系統(tǒng)提供的這些內(nèi)部標(biāo)準(zhǔn)函數(shù),雖然使用起來(lái)十分方便,但其中種類(lèi)和數(shù)量畢竟有限,不可能包含用戶(hù)的所有需要。在實(shí)際問(wèn)題中,經(jīng)常會(huì)遇到諸數(shù)量畢竟有限,不可能包含用戶(hù)的所有需要。在實(shí)際問(wèn)題中,經(jīng)常會(huì)遇到諸如求如求N!這一類(lèi)的運(yùn)算,系統(tǒng)中則沒(méi)有提供相應(yīng)的函數(shù)可供調(diào)用。為此,!這一類(lèi)的運(yùn)算,系統(tǒng)中則沒(méi)有提供相應(yīng)的函數(shù)可供調(diào)用。為此,F(xiàn)ree Pascal允許用戶(hù)

48、自行定義一些函數(shù),我們稱(chēng)之為自定義函數(shù)。這種自允許用戶(hù)自行定義一些函數(shù),我們稱(chēng)之為自定義函數(shù)。這種自定義函數(shù)一經(jīng)定義,就可象內(nèi)部函數(shù)一樣,通過(guò)函數(shù)名調(diào)用它。但要注意:定義函數(shù)一經(jīng)定義,就可象內(nèi)部函數(shù)一樣,通過(guò)函數(shù)名調(diào)用它。但要注意:這些函數(shù)必須在程序中定義,也只能在本程序中使用。這些函數(shù)必須在程序中定義,也只能在本程序中使用。 函數(shù)定義及調(diào)用函數(shù)定義及調(diào)用一、Pascal標(biāo)準(zhǔn)函數(shù):abs(x)、sqr(x)、等二、用戶(hù)自定義函數(shù):函數(shù)定義的格式:function ():;函數(shù)首部函數(shù)首部begin;:=; end;函數(shù)體函數(shù)體函數(shù)說(shuō)明函數(shù)說(shuō)明注:1)函數(shù)首部以關(guān)鍵字function開(kāi)頭。2)括

49、號(hào)內(nèi)為形式參數(shù)表,即形參表。3)函數(shù)的類(lèi)型也就是函數(shù)值的類(lèi)型。4)函數(shù)的執(zhí)行部分以begin開(kāi)頭,以end結(jié)束(end后有一個(gè)分號(hào))。在執(zhí)行部分,至少要有一條將函數(shù)值傳給函數(shù)名的賦值語(yǔ)句,即::=;這樣就由函數(shù)名將求得的函數(shù)值帶回調(diào)用該函數(shù)的程序中?!纠?求3!+5!+7!的值分析:可以先編寫(xiě)一個(gè)求n!的函數(shù)fac。 Program exp7_1 ; 程序首部 Var s,: real ; x :integer ;function fac(n:integer): real ; 函數(shù)首部函數(shù)值的類(lèi)型是實(shí)型 var 局部變量說(shuō)明 k,t:integer; begin t:=1; for k:=2

50、 to n do t:=t*k; fac:=t; 將結(jié)果賦值給函數(shù) end;begin 主程序調(diào)用 s:=fac(3) + fac(5) +fac(7) ; writeln( s =,s) end.函數(shù)的調(diào)用函數(shù)的調(diào)用: 可以在任何與函數(shù)值類(lèi)型兼容的表達(dá)式中調(diào)可以在任何與函數(shù)值類(lèi)型兼容的表達(dá)式中調(diào)用函數(shù),或者說(shuō),函數(shù)調(diào)用只能出現(xiàn)在允許表達(dá)用函數(shù),或者說(shuō),函數(shù)調(diào)用只能出現(xiàn)在允許表達(dá)式出現(xiàn)的地方,或作為表達(dá)式的一個(gè)因子。式出現(xiàn)的地方,或作為表達(dá)式的一個(gè)因子。函數(shù)函數(shù)調(diào)用方式與標(biāo)準(zhǔn)函數(shù)的調(diào)用方式相同。調(diào)用方式與標(biāo)準(zhǔn)函數(shù)的調(diào)用方式相同。函數(shù)調(diào)用的一般格式:函數(shù)調(diào)用的一般格式: 函數(shù)名(實(shí)在參數(shù)表)函數(shù)

51、名(實(shí)在參數(shù)表) 說(shuō)明:說(shuō)明:實(shí)在參數(shù)簡(jiǎn)稱(chēng)實(shí)在參數(shù)簡(jiǎn)稱(chēng)實(shí)參實(shí)參。實(shí)參的個(gè)數(shù)必須與函數(shù)說(shuō)明中形參的個(gè)數(shù)一致,實(shí)。實(shí)參的個(gè)數(shù)必須與函數(shù)說(shuō)明中形參的個(gè)數(shù)一致,實(shí)參的類(lèi)型與形參的類(lèi)型應(yīng)當(dāng)一一對(duì)應(yīng)。參的類(lèi)型與形參的類(lèi)型應(yīng)當(dāng)一一對(duì)應(yīng)。調(diào)用函數(shù)時(shí),一般的,實(shí)參必須有確定的值。調(diào)用函數(shù)時(shí),一般的,實(shí)參必須有確定的值。函數(shù)調(diào)用的步驟為:函數(shù)調(diào)用的步驟為:計(jì)算實(shí)參的值,計(jì)算實(shí)參的值,“賦給賦給”對(duì)應(yīng)的形參對(duì)應(yīng)的形參;函數(shù)的定義是靜態(tài)的,若定義后未被調(diào)用,則該函數(shù)永遠(yuǎn)不會(huì)被執(zhí)行。函數(shù)的定義是靜態(tài)的,若定義后未被調(diào)用,則該函數(shù)永遠(yuǎn)不會(huì)被執(zhí)行。調(diào)用的自定義函數(shù)應(yīng)在調(diào)用之前已定義過(guò)。調(diào)用的自定義函數(shù)應(yīng)在調(diào)用之前已定義過(guò)。

52、自定義函數(shù)中的形參,因不是實(shí)際存在的變量,故又稱(chēng)為虛擬變量,它自定義函數(shù)中的形參,因不是實(shí)際存在的變量,故又稱(chēng)為虛擬變量,它們并不占用內(nèi)存單元,只有在調(diào)用函數(shù)時(shí),才臨時(shí)開(kāi)辟相應(yīng)的內(nèi)存單元,們并不占用內(nèi)存單元,只有在調(diào)用函數(shù)時(shí),才臨時(shí)開(kāi)辟相應(yīng)的內(nèi)存單元,存放實(shí)在參數(shù)的值。存放實(shí)在參數(shù)的值。實(shí)在參數(shù)表實(shí)在參數(shù)表是一些由逗號(hào)分隔的參數(shù),它們是在是一些由逗號(hào)分隔的參數(shù),它們是在調(diào)用函數(shù)時(shí)所用的自變量。只有在調(diào)用函數(shù)時(shí),才將實(shí)在參數(shù)的值傳送到調(diào)用函數(shù)時(shí)所用的自變量。只有在調(diào)用函數(shù)時(shí),才將實(shí)在參數(shù)的值傳送到形參的臨時(shí)內(nèi)存單元中去??梢?jiàn),形參實(shí)質(zhì)上是實(shí)參的一個(gè)形參的臨時(shí)內(nèi)存單元中去??梢?jiàn),形參實(shí)質(zhì)上是實(shí)參的

53、一個(gè)“替身替身”。【例例】:計(jì)算右圖五邊形的面積。:計(jì)算右圖五邊形的面積。program ex3; var b1,b2,b3,b4,b5,b6,b7,s:real;function area(a,b,c:real):real; varp:real; beginp:=(a+b+c)/2;area:=sqrt(p*(p-a)*(p-b)*(p-c);end; beginwriteln(input b1-b7:);readln(b1,b2,b3,b4,b5,b6,b7);s:=area(b1,b5,b6)+area(b2,b6,b7)+area(b3,b4,b7);writeln(s=,s:10:3

54、); end.b7b4b3b2b1b5b6過(guò)程定義及調(diào)用 一、標(biāo)準(zhǔn)過(guò)程:read、readln、write、writeln等二、用戶(hù)自定義過(guò)程:過(guò)程定義的格式:procedure ();過(guò)程首部begin; 過(guò)程體; end; 說(shuō)明說(shuō)明: 過(guò)程首部以關(guān)鍵字過(guò)程首部以關(guān)鍵字procedure開(kāi)頭。開(kāi)頭。過(guò)程名是用戶(hù)自定義的標(biāo)識(shí)符,只用來(lái)標(biāo)識(shí)一個(gè)過(guò)程,不過(guò)程名是用戶(hù)自定義的標(biāo)識(shí)符,只用來(lái)標(biāo)識(shí)一個(gè)過(guò)程,不能代表任何數(shù)據(jù),因此不能說(shuō)明能代表任何數(shù)據(jù),因此不能說(shuō)明“過(guò)程的類(lèi)型過(guò)程的類(lèi)型”。形參表的一般格式形式如下:形參表的一般格式形式如下:var 變量名表:類(lèi)型;變量名表:類(lèi)型;var 變量名表:類(lèi)型。

55、其中帶變量名表:類(lèi)型。其中帶var的稱(chēng)為變量形參,不帶的稱(chēng)為變量形參,不帶var的稱(chēng)為值形參。的稱(chēng)為值形參。 在過(guò)程體內(nèi)使用的有關(guān)常量、變量等必須在過(guò)程體的說(shuō)明在過(guò)程體內(nèi)使用的有關(guān)常量、變量等必須在過(guò)程體的說(shuō)明部分內(nèi)加以說(shuō)明或定義。部分內(nèi)加以說(shuō)明或定義。與函數(shù)體不同的是:函數(shù)體的執(zhí)行部分至少有一個(gè)語(yǔ)句給與函數(shù)體不同的是:函數(shù)體的執(zhí)行部分至少有一個(gè)語(yǔ)句給函數(shù)名賦值,而過(guò)程體的執(zhí)行部分不能給過(guò)程名賦值,因?yàn)楹瘮?shù)名賦值,而過(guò)程體的執(zhí)行部分不能給過(guò)程名賦值,因?yàn)檫^(guò)程名不能代表任何數(shù)據(jù)。過(guò)程名不能代表任何數(shù)據(jù)。三、過(guò)程調(diào)用:三、過(guò)程調(diào)用:【例】:計(jì)算五邊形的面積。program ex3_1; var b

56、1,b2,b3,b4,b5,b6,b7,s,sum:real;procedure area(a,b,c:real;var s:real); var p:real; begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c); end; beginwriteln(input b1-b7:);readln(b1,b2,b3,b4,b5,b6,b7);sum:=0;area(b1,b5,b6,s);sum:=sum+s;area(b2,b6,b7,s);sum:=sum+s;area(b3,b4,b7,s);sum:=sum+s;writeln(s=,s:10:3

57、); end.過(guò)程過(guò)程主程序主程序過(guò)程過(guò)程調(diào)用調(diào)用形式參數(shù)表形式參數(shù)表 過(guò)程的調(diào)用過(guò)程的調(diào)用 過(guò)程調(diào)用是通過(guò)一條過(guò)程調(diào)用是通過(guò)一條獨(dú)立的過(guò)程調(diào)用語(yǔ)句獨(dú)立的過(guò)程調(diào)用語(yǔ)句來(lái)實(shí)現(xiàn)的,它與函數(shù)調(diào)來(lái)實(shí)現(xiàn)的,它與函數(shù)調(diào)用完全不同。過(guò)程調(diào)用與調(diào)與標(biāo)準(zhǔn)過(guò)程(如用完全不同。過(guò)程調(diào)用與調(diào)與標(biāo)準(zhǔn)過(guò)程(如write,read等)的方式相等)的方式相同。調(diào)用的一般格式為:同。調(diào)用的一般格式為:過(guò)程名過(guò)程名 或或 過(guò)程名(實(shí)在參數(shù)表)過(guò)程名(實(shí)在參數(shù)表)說(shuō)明說(shuō)明: 實(shí)參的實(shí)參的個(gè)數(shù)、類(lèi)型個(gè)數(shù)、類(lèi)型必須與形參一一必須與形參一一對(duì)應(yīng)對(duì)應(yīng)。對(duì)應(yīng)于值形參的實(shí)參可以是表達(dá)式,對(duì)應(yīng)于變量形參的實(shí)參只能是變量。對(duì)應(yīng)于值形參的實(shí)參可以是

58、表達(dá)式,對(duì)應(yīng)于變量形參的實(shí)參只能是變量。過(guò)程調(diào)用的步驟為:計(jì)算實(shí)參的值;將值或變量的過(guò)程調(diào)用的步驟為:計(jì)算實(shí)參的值;將值或變量的“地址地址”傳送給對(duì)應(yīng)傳送給對(duì)應(yīng)的形參;執(zhí)行過(guò)程體;返回調(diào)用處。的形參;執(zhí)行過(guò)程體;返回調(diào)用處。1函數(shù)往往只為求一個(gè)函數(shù)值; 過(guò)程一般會(huì)被設(shè)計(jì)成求若干個(gè)運(yùn)算結(jié)果,完成一系 列的數(shù)據(jù)處理,或與計(jì)算無(wú)關(guān)的各種操作。2函數(shù)有類(lèi)型,最終要將函數(shù)值傳送給函數(shù)名; 過(guò)程無(wú)類(lèi)型,不能給過(guò)程名賦值。3調(diào)用方式不同。 函數(shù)的調(diào)用出現(xiàn)在表達(dá)式中; 過(guò)程的調(diào)用是由獨(dú)立的過(guò)程調(diào)用語(yǔ)句實(shí)現(xiàn)的。4返回值的方法不同。 函數(shù)值是通過(guò)函數(shù)名傳回調(diào)用程序; 過(guò)程則是通過(guò)參數(shù)將運(yùn)算的結(jié)果傳給調(diào)用程序。四、

59、過(guò)程與函數(shù)的主要區(qū)別:四、過(guò)程與函數(shù)的主要區(qū)別:變量及其作用域變量及其作用域一、變量的類(lèi)型:一、變量的類(lèi)型:全程變量和局部變量全程變量和局部變量1)、全程變量和它的作用域)、全程變量和它的作用域全程變量是指在程序開(kāi)頭的說(shuō)明部分定義和說(shuō)明的量全程變量是指在程序開(kāi)頭的說(shuō)明部分定義和說(shuō)明的量。 全程變量的作用域分為兩種情況:全程變量的作用域分為兩種情況:(1)在全程變量和局部變量不同名時(shí),其作用域是整個(gè)程序。在全程變量和局部變量不同名時(shí),其作用域是整個(gè)程序。(2)在全程變量和局部變量同名時(shí),全局變量的作用域不包含同在全程變量和局部變量同名時(shí),全局變量的作用域不包含同名局部變量的作用域。名局部變量的作

60、用域。2)、局部變量和它的作用域)、局部變量和它的作用域凡是在子程序內(nèi)部使用的變量,必須在子程序中加入說(shuō)明。凡是在子程序內(nèi)部使用的變量,必須在子程序中加入說(shuō)明。這種在子這種在子程序內(nèi)部說(shuō)明的變量稱(chēng)為局部變量。程序內(nèi)部說(shuō)明的變量稱(chēng)為局部變量。局部變量的作用域是其所在的子局部變量的作用域是其所在的子程序。程序。形式參數(shù)也只能在子程序中有效,因此也屬于局部變量。形式參數(shù)也只能在子程序中有效,因此也屬于局部變量。 局部變量的作用域分為兩種情況:局部變量的作用域分為兩種情況:(1)當(dāng)外層過(guò)程的局部變量名和嵌套過(guò)程中的局部變量不同名時(shí),當(dāng)外層過(guò)程的局部變量名和嵌套過(guò)程中的局部變量不同名時(shí),外層過(guò)程的局部變

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論