第三課賦值和輸入輸出語(yǔ)句課件_第1頁(yè)
第三課賦值和輸入輸出語(yǔ)句課件_第2頁(yè)
第三課賦值和輸入輸出語(yǔ)句課件_第3頁(yè)
第三課賦值和輸入輸出語(yǔ)句課件_第4頁(yè)
第三課賦值和輸入輸出語(yǔ)句課件_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

08信息奧賽暑假集訓(xùn)8.9上午復(fù)習(xí)第一環(huán)節(jié)

復(fù)習(xí)

1、基本知識(shí)(保留字、標(biāo)識(shí)符、函數(shù)、運(yùn)算符)

2、基本語(yǔ)句(輸入、輸入出、賦值)

3、分支(多路分支)

4、循環(huán)第二環(huán)節(jié)新課(數(shù)組)freepascal界面與基本操作Freepascal調(diào)試軟件界面介紹光標(biāo)所在行列滾動(dòng)塊關(guān)閉當(dāng)前文件當(dāng)前文件名稱新建文件:

方法1:單擊菜單“File-New”。

方法2:組合鍵:Alt+F,然后用方向鍵移動(dòng)到New,再按回車鍵。保存文件。方法1:F2方法2:菜單“File-Save”運(yùn)行:方法1:Ctrl+F9方法2:菜單“Run-Run”查看操作結(jié)果:方法1:Alt+F5方法

方法2:菜單“Debug-Userscreen”。退出:方法1:Alt+X

方法2:菜單“File-Open”打開文件:方法1:F3方法2:菜單“File-Open…”基本操作1、新建2、保存3、Ctrl+F9運(yùn)行4、Alt+F5切換到用界面看運(yùn)行結(jié)果編輯操作光標(biāo)的移動(dòng):方向鍵←→↑↓進(jìn)行左右上下移動(dòng)。Home:移動(dòng)到行首End:移動(dòng)到行尾。刪除:Delete:刪除光標(biāo)所在位置字符←Backspace刪除光標(biāo)左側(cè)的一個(gè)字符Ctrl+Y:刪除光標(biāo)所在行。斷行:1、前空一行:將光標(biāo)移動(dòng)到行首回車2、后空一行:將光標(biāo)移動(dòng)到行末回車3、一行分兩行:將光標(biāo)移動(dòng)至行中回車接行:將兩行內(nèi)容連接成一行(利用刪除鍵接行)1、將光標(biāo)移至第1行末,按Delete鍵2、將光標(biāo)移至第2行首,按←Backspace相關(guān)概念

保留字是PASCAL選定的,具有固定意義和用法的專用單詞或縮寫,這些單詞不允許作其它使用。

我們不能再用“program”、“const”來(lái)作為其它變量、常量等的名字。標(biāo)識(shí)符是標(biāo)識(shí)符的定義:以字母或下劃線開頭的字母、數(shù)字、下劃線序列,有效長(zhǎng)度為63個(gè)字符,并且大小寫等效??梢杂脕?lái)表示常量、變量、程序、函數(shù)等。標(biāo)準(zhǔn)Pascal語(yǔ)言中的保留字一共有36個(gè)可以分為六種類型:1、程序、函數(shù)、過(guò)程的符號(hào):program程序function函數(shù)procedure過(guò)程2、說(shuō)明部分的專用定義符號(hào)array定義數(shù)組const常量說(shuō)明file文件類型lable標(biāo)號(hào)說(shuō)明packed指令(記錄)var變量說(shuō)明record記錄類型set集合類型type類型說(shuō)明3、語(yǔ)句專用符號(hào)case分情況語(yǔ)句dodownto(見(jiàn)for)else(見(jiàn)if、case)for計(jì)數(shù)循環(huán)語(yǔ)句goto語(yǔ)句ifthenelserepeat直到型循環(huán)語(yǔ)句untilwhile當(dāng)循環(huán)語(yǔ)句forward函數(shù)指令4、運(yùn)算符號(hào)and與div整除in集體運(yùn)算符,判斷一個(gè)元素是否在集合中mod求余not非or或xor異或5、分隔符號(hào)begin塊標(biāo)記,開始

end塊標(biāo)記,結(jié)束6、空指針?lè)?hào)nil空指針常用的標(biāo)準(zhǔn)標(biāo)識(shí)符有:標(biāo)準(zhǔn)常量:falsetruemaxintmaxlongint標(biāo)準(zhǔn)類型:integerbooleanrealchartext標(biāo)準(zhǔn)文件:inputoutput標(biāo)準(zhǔn)函數(shù):absactanchrcoseofelonexplnodd

ordpredroundsinsqrsqrtsucctrunc標(biāo)準(zhǔn)過(guò)程:assigngetnewdisposepackputreadreadlnresetrewriteunpackwritewriteln

Maxint的值為32767標(biāo)識(shí)符的分類:⑴標(biāo)準(zhǔn)標(biāo)識(shí)符:指Pascal語(yǔ)言預(yù)先定義的標(biāo)識(shí)符,具有特殊含義。⑵用戶字定義標(biāo)識(shí)符:由用戶根據(jù)需要定義標(biāo)準(zhǔn)函數(shù)1. abs(x)求x的絕對(duì)值(|x|);Abs(-2)=2Abs(-2.0)=2.0000000000E+002. exp(x)求ex的值;(e為無(wú)理數(shù)2.71828…)3. frac(x)求x的小數(shù)部分;4. int(x)求x的整數(shù)部分(不舍入,函數(shù)值為實(shí)型);int(3.6)=3.05. ln(x)求以e為底的x的對(duì)數(shù)(logex);6. odd(x)判斷x的奇偶數(shù)(當(dāng)x為奇數(shù)時(shí)odd(x)值為true,否則為false);7. piπ值(3.1415926535897932…);8.

pred(x)求x(有序類型)的前趨值;9. succ(x)求x(有序類型)的后繼值;10. random隨機(jī)函數(shù),產(chǎn)生0~1的隨機(jī)值;[0,1)11. random(n)產(chǎn)生[0,x)的隨機(jī)數(shù)(n為word類型,先執(zhí)行randomize,才能得到隨機(jī)整數(shù));12. round(x)求x的四舍五入結(jié)果為整數(shù);如:Round(2.8)=3Round(-2.8)=-313. trunc(x)求x的整數(shù)部分(截掉小數(shù)部分,結(jié)果為整型);如:Trunc(3.85)=314. sqr(x)求x的平方值(x2);15. sqrt(x)求x的開平方根值();Sqr(4.0)=1.6000000000E+01Sqr(4)=1616. sin(x)求x的正弦函數(shù)(x為弧度);17. cox(x)求x的余弦函數(shù)(x為弧度);18. arctan(x)正切的反三角函數(shù)(x為數(shù)值);19. Ln(X)對(duì)數(shù)函數(shù)即求x的自然對(duì)數(shù)logex20. 冪運(yùn)算∵xy=eylnx,∴xy=Exp(y*ln(x)21. Ord(‘x’)序數(shù)函數(shù):,函數(shù)結(jié)果為整型,求字符對(duì)應(yīng)的ASCII碼如:Ord(‘A’)=6522. Chr(x)字符函數(shù),x為整型,函數(shù)結(jié)果為字符型,,求ASCII碼對(duì)應(yīng)得字符如:Chr(65)=’A’23. Upcase(‘x’)小寫字母轉(zhuǎn)為大寫字母,如:Upcase(‘a(chǎn)’)=’A’24. LPcase(‘X’)大寫字母轉(zhuǎn)為小寫字母,如:Upcase(‘A’)=’a’25. val函數(shù)將字符串轉(zhuǎn)換為整型值,如val(‘123’)=123a的b次冪可表示為exp(b*ln(a))還可能用power函數(shù),使用此函數(shù)前,要打開數(shù)學(xué)庫(kù),方法如下Pascal的System單元提供了兩個(gè)與隨機(jī)數(shù)有關(guān)的子程序:Randomize和Random。Randomize過(guò)程用于初始化隨機(jī)種子,其初始值取決于當(dāng)前的系統(tǒng)時(shí)鐘。Random函數(shù)用于獲取隨機(jī)數(shù),它有兩種調(diào)用形式:Random,返回一個(gè)0到1之間(不包括1)的隨機(jī)實(shí)數(shù);Random(N),返回0至N之間(不包括N)的隨機(jī)整數(shù),N為Word類型整數(shù)??梢栽囈幌拢S機(jī)產(chǎn)生幾個(gè)一定范圍內(nèi)的數(shù)變量常見(jiàn)類型整型integer、實(shí)型real、字符型char、布爾型boolean、字符串型string整型短整型Shortint-128~1271

整形Integer-32768~327672

長(zhǎng)整型Longint-2147483648~21474836474

字節(jié)型Byte0~2551

字型Word0~655352實(shí)型單精度實(shí)型Single1.5e-45~3.4e+3847~8

實(shí)型Real2.9e-39~1.7e+38611~12

雙精度實(shí)型Double5.0e-324~1.7e+308815~16Pascal的運(yùn)算符表達(dá)式是用運(yùn)算符號(hào)或小括號(hào)將常量、變量、函數(shù)連接成的式子。Pascal表達(dá)式中只有小括號(hào)。運(yùn)算符也稱為算符,算符的操作對(duì)象稱為操作數(shù)。運(yùn)算符按帶操作數(shù)的個(gè)數(shù)分為兩類:?jiǎn)文窟\(yùn)算符:對(duì)一個(gè)操作數(shù)操作。-(負(fù)號(hào)),+(正號(hào))雙目運(yùn)算符:對(duì)兩個(gè)操作數(shù)操作。根據(jù)運(yùn)算符運(yùn)算的意義不同分為算術(shù)運(yùn)算、布爾運(yùn)算、邏輯運(yùn)算、關(guān)系運(yùn)算。根據(jù)運(yùn)算符的優(yōu)先級(jí)可以將運(yùn)算符分為單目運(yùn)算、“乘”的關(guān)系運(yùn)算、“和”的關(guān)系運(yùn)算、關(guān)系運(yùn)算。算術(shù)運(yùn)算符一共有8個(gè)。操作數(shù)都是數(shù)值型,結(jié)果也是數(shù)值型。單目運(yùn)算符有(+)取正、(-)取負(fù)。雙目運(yùn)算符有(+)加、(-)減、(*)乘、(/)除、(DIV)取商、(Mod)取模。“/”左右的操作數(shù)是數(shù)值型,結(jié)果是實(shí)型數(shù)。Div左右的操作數(shù)是整型,結(jié)果是整型(兩數(shù)之商)。Mod左右的操作數(shù)是整型數(shù),結(jié)果是整型數(shù)(兩數(shù)相除之余)。在PASCAL只有上面8種數(shù)學(xué)運(yùn)算。其它的就只能利用這8種運(yùn)算的組合通過(guò)語(yǔ)句來(lái)實(shí)現(xiàn)。如a^2(a的平方)可以化成a*a。XY可寫成exp(y*ln(X))例:/(實(shí)數(shù)除)得到結(jié)果為實(shí)型.如5.0/2.0=2.5,5/2=2.5,4/2=2.0而不等于2。DIV(整除)DIV它要求除數(shù)和被除數(shù)均為整型,結(jié)果也為整型。如10DIV2=5,10DIV3=3,5DIV10=0.-15DIV4=-3。DIV運(yùn)算只取商的整數(shù)部分,參與DIV運(yùn)算的兩個(gè)對(duì)象不能為實(shí)型。mod(求余),也只能用于整數(shù)運(yùn)算,結(jié)果為整數(shù)。例如:10mod4=2,-17mod4=-1,4mod(-3)=1,-4mod3=-1,即amodb=a-(adivb)*b。關(guān)系運(yùn)算符關(guān)系運(yùn)算是指同一類型的兩個(gè)數(shù)據(jù)進(jìn)行比較,結(jié)果是一個(gè)布爾類型值。用小括號(hào)、>、<、>=、<=、=、<>將兩個(gè)算術(shù)表達(dá)式連接起來(lái)的式子就稱為關(guān)系表達(dá)式(比較式)。

如:3+7>8,x+y<10,2*7<=13等都是關(guān)系表達(dá)式。關(guān)系表達(dá)式的值true,false2<387.5>=100‘A’<‘a(chǎn)’False<true邏輯運(yùn)算

邏輯運(yùn)算又叫布爾運(yùn)算,這是根據(jù)英國(guó)數(shù)學(xué)家BOOLE的名字得來(lái)的,因?yàn)槭撬紫冉⒘诉壿嬤\(yùn)算代數(shù)。邏輯運(yùn)算簡(jiǎn)單的說(shuō)就是判斷運(yùn)算。比如說(shuō):你是高中生嗎?、今天上課嗎?等等這樣的一般疑問(wèn)句。邏輯運(yùn)算的顯著特征就是運(yùn)算結(jié)果只有兩種,對(duì)或錯(cuò),是或者不是。

例如:A>BC<=DE=‘A’對(duì)于這樣的表達(dá)式結(jié)果只有兩種——對(duì)或錯(cuò)。這樣的表達(dá)式就叫做邏輯表達(dá)式布爾常量只有兩個(gè):TRUE(真)、FALSE(假)布爾運(yùn)算符布爾運(yùn)算是對(duì)布爾型數(shù)據(jù)進(jìn)行運(yùn)算,即操作數(shù)都是布爾型數(shù)據(jù),結(jié)果是布爾型。布爾型運(yùn)算符共有4個(gè):not(取反)and(與)or(或)xor(異或)not:結(jié)果是與操作數(shù)相反的布爾值and:兩個(gè)操作數(shù)都為真,結(jié)果為真,否則為假or:兩個(gè)操作有一個(gè)為真,結(jié)果為真,否則為假Xor:兩個(gè)操作數(shù)不一樣為真,否則為假1xor1=00xor0=01xor0=10xor1=1運(yùn)算符的優(yōu)先級(jí)1、內(nèi)層小括號(hào)先計(jì)算2、函數(shù)先求值3、單目運(yùn)算符(+,-,not)4、乘的關(guān)系雙目運(yùn)算符(*,/,div,mod,and)5、加的關(guān)系雙目運(yùn)算符(+,-,or)6、關(guān)系運(yùn)算符(<,<=,>,>=,=,<>)在同級(jí)運(yùn)算中,按從左到右的順序計(jì)算。(a>=0)and(a<100)imodj=0基本語(yǔ)句復(fù)習(xí)賦值語(yǔ)句X:=a+b計(jì)算機(jī)先計(jì)算賦值號(hào)右邊表達(dá)式的值,然后將表達(dá)式的值賦給變量名代表的變量。變量a注意:賦值語(yǔ)句在使用時(shí),要注意賦值號(hào)兩邊的數(shù)據(jù)類型必須賦值兼容,即類型相一致或相容。Vara:integer;數(shù)據(jù)類型相容的,我們也可以用一個(gè)例子來(lái)幫助理解。我們都喝過(guò)功夫茶,也喝過(guò)大杯茶。把功夫茶倒在大茶杯里,一般不會(huì)出什么問(wèn)題;但如果把大杯里的茶倒在功夫茶杯里呢?可能小茶杯裝不下大茶杯里的茶,茶“溢出”了。在PASCAL中也會(huì)出現(xiàn)這種情況。當(dāng)一種數(shù)據(jù)類型的取值范圍包含著另一種數(shù)據(jù)類型的取值范圍時(shí),就可能出現(xiàn)類型相容的情況。如實(shí)型與整型,整型、字符型與它們各自的子界類型……如果把整型值賦給實(shí)型變量,把整型子界值賦給整型變量,不會(huì)出錯(cuò);但如果反過(guò)來(lái),就會(huì)出現(xiàn)“溢出”,出錯(cuò)了。

read與readln的區(qū)別變量說(shuō)明

vara,b,c,d:integer;執(zhí)行結(jié)果

a

b

c

d

程序段一

read(a);readln(b,c);read(d);

1

2

3

6

程序段二

readln(a);read(b,c);read(d)1

6

7

8

輸入數(shù)據(jù)

12345678輸入語(yǔ)句write(輸出量表);{輸出后不換行}writeln(輸出量表);{輸出后換行}writeln;{輸出一個(gè)回車符}輸出量可以是:

變量。輸出變量的值。write(x,y);

表達(dá)式。輸出的是表達(dá)式的值。Write(1+3*a)

常量。直接輸出常量值。輸出語(yǔ)句Write(‘Iamastudent!’)Write(3.56)例題回顧已知某梯形的上底A,下底B,高H,求它的面積S定義變量輸入已知計(jì)算面積輸出面積Vara,b,h,s:real;read(a,b,h);S:=(a+b)*h/2;Write(‘s=’,s);Programzhlt;beginEnd.邏輯結(jié)構(gòu)為順序、選擇和重復(fù)(或循環(huán))簡(jiǎn)單的分支結(jié)構(gòu)程序設(shè)計(jì)簡(jiǎn)單的IF語(yǔ)句

一、格式

IF<布爾表達(dá)式>THEN語(yǔ)句;

IF<布爾表達(dá)式>THEN語(yǔ)句1ELSE語(yǔ)句2;布爾表達(dá)式語(yǔ)句二語(yǔ)句一then語(yǔ)句布爾表達(dá)式thenelse實(shí)例回顧輸入一個(gè)整數(shù)a,判斷是否為偶數(shù)。

(如果是偶數(shù)輸出"yes"否則輸出"no")。

programex_fz1;

Vara:integer;

begin

Write('a=');readln(a);

Ifamod2=0thenwriteln(‘yes’)

Elsewriteln(‘no’);

end.

給出三角形的三個(gè)邊長(zhǎng)A,B,C,求三角形面積.programexec2(input,output);

vara,b,c,s,area:real;

begin

readln(a,b,c);

if(a+b>c)and(b+c>a)and(c+a>b)then

begins:=(a+b+c)/2;

area:=sqrt(s*(s-a)*(s-b)*(s-c));

writeln(‘a(chǎn)rea=’,area:6:2);

end

else

begin

writeln(a:6:2,b:6:2,c:6:2);

writeln('inputdataerror');

end;

end.

提示:要判斷是否能構(gòu)成一個(gè)三角形如果s為三邊和的一半,那么面積為sqrt(s*(s-a)*(s-b)*(s-c))IF語(yǔ)句的嵌套

在if語(yǔ)句中,如果then子句或else子句仍是一個(gè)if語(yǔ)句,則稱為if語(yǔ)句的嵌套。

IF語(yǔ)句有三種嵌套形式:(1)、在THEN部分嵌套IF語(yǔ)句,格式是:IF表達(dá)式1THENIF表達(dá)式2THENIF表達(dá)式3THEN語(yǔ)句3ELSE語(yǔ)句3ELSE語(yǔ)句2ELSE語(yǔ)句1第三層第二層第一層(2)、在ELSE部分嵌套IF語(yǔ)句,格式是:IF表達(dá)式1THEN語(yǔ)句1ELSEIF表達(dá)式2THENIF表達(dá)式3THEN語(yǔ)句3ELSE語(yǔ)句3ELSE語(yǔ)句2

第三層第二層第一層(3)、前面兩種的綜合,即在THEN和ELSE部分都嵌套IF語(yǔ)句,格式是:IF表達(dá)式1THENIF表達(dá)式2THEN語(yǔ)句2ELSE語(yǔ)句2ELSEIF表達(dá)式3THEN語(yǔ)句3ELSE語(yǔ)句3必須要注意的一個(gè)問(wèn)題是:因?yàn)椋桑平Y(jié)構(gòu)的語(yǔ)句可以省略ELSE語(yǔ)句,這個(gè)時(shí)候就有可能出現(xiàn)ELSE個(gè)數(shù)少于IF語(yǔ)句的嵌套個(gè)數(shù)的情況,當(dāng)出現(xiàn)這種情況的時(shí)候只要記住一個(gè)規(guī)則就可以了:ELSE總是與它最近的THEN語(yǔ)句配對(duì)??!通過(guò)下面的這個(gè)簡(jiǎn)單的程序來(lái)理解這個(gè)規(guī)則:Y:=0;IFX>=0THENIFX>0THENY:=1;ELSEY:=-1;上面的程序有兩個(gè)IF語(yǔ)句,而且嵌套,但只有一個(gè)ELSE,屬于誰(shuí)呢?寫程序,根據(jù)輸入的值,輸出1、-1和零。根據(jù)輸入的x值,先分成x>0與x≤0兩種情況,然后對(duì)于情況x≤0,再區(qū)分x是小于0,還是等于0programex;varx:real;y:integer;beginwrtie('Inputx:');readln(x);

ifx>0theny:=1else{x≤0時(shí)}

ifx=0theny:=0elsey:=-1;writeln('x=',x:6:2,'y=',y);end.X>0X=0Y:=1Y:=-1Y:=0輸入x開始結(jié)束YY輸出x、y輸入年月求天數(shù)當(dāng)多分支選擇的各個(gè)條件由同一個(gè)表達(dá)式的不同結(jié)果值決定時(shí),可以用case語(yǔ)句實(shí)現(xiàn)。programday_case;varyear,month,days:integer;

begin

readln(year,month);

case

monthof

1,3,5,7,8,10,12:days:=31;

4,6,9,11:days:=30;2:if(yearmod400=0)or(yearmod100<>0)and(yearmod4=0)thendays:=29elsedays:=28;

end;

writeln('day=',day);

readln;

end.用case語(yǔ)句來(lái)寫31302928case語(yǔ)句當(dāng)多分支選擇的各個(gè)條件由同一個(gè)表達(dá)式的不同結(jié)果值決定時(shí),可以用case語(yǔ)句來(lái)實(shí)現(xiàn)。它的選擇過(guò)程,很象一個(gè)多路開關(guān),即由case語(yǔ)句的選擇表達(dá)式的值,決定切換至哪一語(yǔ)句去工作。在實(shí)現(xiàn)多分支控制時(shí),用case對(duì)某些問(wèn)題的處理和設(shè)計(jì),比用if語(yǔ)句寫程序更簡(jiǎn)潔、更清晰。

casemonthofCase表達(dá)式of

常量表1:語(yǔ)句1;

……

常量表n:語(yǔ)句n;

[else語(yǔ)句n+1];

end;格式說(shuō)明:常量表為有序類型數(shù)據(jù)。表達(dá)式要與常量類型一致。常量后的語(yǔ)句為一條語(yǔ)句。如果要完成多條語(yǔ)句功能,要將這些語(yǔ)句寫成復(fù)合語(yǔ)句。Case語(yǔ)句輸入兩個(gè)實(shí)數(shù),再輸入+、-、*或/號(hào),根據(jù)運(yùn)算符輸出這兩個(gè)數(shù)的和、差、積或商。Programxx;vara,b,s:real;operator:char;beginreadln(a,b);read(operator);

caseoperatorof

'+’:s:=a+b;'-’:s:=a-b;'*’:s:=a*b;'/’:s:=a/b;

end;

writeln(a,operator,b,'=’,s:5:4)end.

注意事項(xiàng)Case語(yǔ)句執(zhí)行表達(dá)式值相匹配的case常量所指向的那條語(yǔ)句,如果沒(méi)有相匹配的值,則執(zhí)行else后的語(yǔ)句n+1或什么也不做(無(wú)else語(yǔ)句)。Case常量必須惟一確定且必須與表達(dá)式同類型,每一個(gè)常量只能在常量表中出現(xiàn)一次且僅出現(xiàn)一次。表達(dá)式只能是序數(shù)類型。序數(shù)類型包括整型、字符型、布爾型、枚舉型、子界型。根據(jù)學(xué)生的成績(jī)給予相應(yīng)的等低,對(duì)應(yīng)關(guān)系如下:

90——100A

80——89B

60——79C

60以下D

析:利用case語(yǔ)句進(jìn)行程序設(shè)計(jì),關(guān)鍵在于巧妙地構(gòu)造情況表達(dá)式programchengji;

varn:integer;ch:char;

begin

write(‘inputthescore:’);

readln(s);

casendiv10of

10,9:ch:=‘A’;

8:ch:=‘B’;

7,6:ch:='C';

elsech:='D';

end;

writeln(n,'--',ch);

end.n值是整型n值是實(shí)型表達(dá)式的值是子界型表達(dá)式的值是子界型判斷輸入的字符是大寫、小寫、數(shù)字還是其它思考題例2根據(jù)x的值,求函數(shù)Y的值:

分析:利用case語(yǔ)句進(jìn)行程序設(shè)計(jì),關(guān)鍵在于巧妙地構(gòu)造情況表達(dá)式。本例中三種情況可用一個(gè)表達(dá)式區(qū)分出來(lái):Trunc(x/100)。因?yàn)閤在(0~100)之間時(shí)表達(dá)式值為0;x在[100,200)時(shí)表達(dá)式值為1;其余部分可用else子句表示

拓展題期未來(lái)臨了,班長(zhǎng)小Q決定將剩余班費(fèi)X元錢,用于購(gòu)買若干支鋼筆獎(jiǎng)勵(lì)給一些學(xué)習(xí)好、表現(xiàn)好的同學(xué)。已知商店里有三種鋼筆,它們的單價(jià)為6元、5元和4元。小Q想買盡量多的筆(鼓勵(lì)盡量多的同學(xué)),同時(shí)他又不想有剩余錢。請(qǐng)您編一程序,幫小Q制訂出一種買筆的方案。

分析:對(duì)于以上的實(shí)際問(wèn)題,要買盡量多的筆,易知都買4元的筆肯定可以買最多支筆。因此最多可買的筆為xdiv4支。由于小q要把錢用完,故我們可以按以下方法將錢用完:若買完xdiv4支4元錢的筆,還剩1元,則4元錢的筆少買1支,換成一支5元筆即可;若買完xdiv4支4元錢的筆,還剩2元,則4元錢的筆少買1支,換成一支6元筆即可;若買完xdiv4支4元錢的筆,還剩3元,則4元錢的筆少買2支,換成一支5元筆和一支6元筆即可。programpen;vara,b,c:integer;x,y:integer;beginwrite('x=');readln(x){輸入x}c:=xdiv4;{4元筆最多買的數(shù)目}y:=xmod4;{求買完c支4元筆后剩余的錢數(shù)y}

caseyof0:begina:=0;b:=0;end;1:begina:=0;b:=1;c:=c-1;end;2:begina:=1;b:=0;c:=c-1;end;3:begina:=1;b:=1;c:=c-2;end;end;writeln('a=',a,'b=',b,'c=',c);end.{a,b,c分別表示在買筆方案中,6元、5元和4元錢筆的數(shù)目}{x,y分別表示剩余班費(fèi)和買完最多的4元筆后剩的錢}循環(huán)語(yǔ)句(For)前言在Pascal語(yǔ)言中,循環(huán)結(jié)構(gòu)程序通常由三種的循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。FOR循環(huán)、當(dāng)循環(huán)和直到循環(huán)。通常將一組重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)體,而控制重復(fù)執(zhí)行或終止執(zhí)行由重復(fù)終止條件決定。因此,重復(fù)語(yǔ)句是由循環(huán)體及重復(fù)終止條件兩部分組成。for語(yǔ)句的一般格式for<控制變量>:=<表達(dá)式1>to<表達(dá)式2>do<語(yǔ)句>;

遞增for<控制變量>:=<表達(dá)式1>downto<表達(dá)式2>do<語(yǔ)句>;遞減

其中for、to、downto和do是Pascal保留字。表達(dá)式1與表達(dá)式2的值也稱為初值和終值。對(duì)于for循環(huán)有時(shí)也稱為計(jì)數(shù)循環(huán),因?yàn)槲覀冇醚h(huán)控制變量來(lái)控制循環(huán)體執(zhí)行的次數(shù)。循環(huán)體執(zhí)行的次數(shù)是(初值和終值之差的絕對(duì)值+1),for循環(huán)的特點(diǎn)是我們明確知道循環(huán)體執(zhí)行的次數(shù)想一想:

如果想輸出6個(gè)*號(hào),下一行輸出5個(gè)#,以上動(dòng)作反復(fù)3次程序應(yīng)當(dāng)如何改動(dòng)Programfort1;Vari:integer;Begin

fori:=1to10do

writeln(‘******’);End.Programfort1_2;Vari:integer;Begin

fori:=1to3do

beginwriteln(‘******’);writeln(‘#####’);end;End.觀察一下i的變化情況再想一想:

如果想1到100之間的所有整數(shù),應(yīng)當(dāng)如何改動(dòng)Programfort2;Vari:integer;Begin

fori:=1to?do

write(?);End.反復(fù)做的事:輸出整數(shù)做的次數(shù):100如果想’a’到’z’之間的所有字符呢,應(yīng)當(dāng)如何改動(dòng)?想一想:

以下程序改動(dòng)后對(duì)循環(huán)體有什么影響Programfort1;Vari:integer;Begin

fori:=1to10do

writeln(‘******’);End.Programfort1;Vari:integer;Begin

fori:=10downto

1do

writeln(‘******’);End.Num:=0;Fori:=1to100doNum:=num+I;I<=100I:=1NUM:=NUM+IYNNUM:=0I:=i+1循環(huán)結(jié)構(gòu)流程圖求:1+2+…+100的和應(yīng)用舉例一

輸出1-100之間的所有偶數(shù)。

Programoushu(input,output);vari:integer;

begin

fori:=1to100do{用記數(shù)形循環(huán)來(lái)實(shí)現(xiàn)窮舉1~100之間的偶數(shù)}

ifimod2=0thenwrite(i:5);

writeln;end.

思考:我們還有什么方法來(lái)實(shí)現(xiàn)這個(gè)題目;輸出100-999中所有能被3或被5整除的數(shù)字;應(yīng)用舉例二求N!=1*2*3*…*N,這里N不大于10。分析:程序要先輸入N,然后從1累乘到N。

程序如下:

var

n,i:integer;{i為循環(huán)變量}

S:longint;{s作為累乘器}//思考:為什么要把S設(shè)置成longint類型

begin

write('Entern=');readln(n);{輸入n}

s:=1;//賦初值

fori:=2tondo{從2到n累乘到s中}

s:=s*i;

writeln(n,'!=',s);{輸出n!的值}

end.練習(xí)題1.編程找出四位整數(shù)abcd中滿足下述關(guān)系的數(shù)

(ab+cd)(ab+cd)=abcd提醒:這題屬于搜索問(wèn)題,四位數(shù),范圍從1000到9999,還要考慮到如何將四位數(shù)高兩位與低兩位分開。2.有一種Fibonaccl數(shù)列0,1,1,2,4,7...其規(guī)律為第一、二、三個(gè)數(shù)為0,1,1,從第四個(gè)數(shù)起,各數(shù)為其前面3個(gè)數(shù)之和,要求輸出此數(shù)列中前60個(gè)數(shù)。forj:=1to50dowrite('*');writeln;beginend;fori:=1to10doProgramex_forsc;Vari,j:integer;beginEnd.思考輸出如下圖形。12345行數(shù)13579個(gè)數(shù)WHILE循環(huán)格式:while<布爾表達(dá)式>do<語(yǔ)句>;

其意義為:當(dāng)布爾表達(dá)式的值為true時(shí),執(zhí)行do后面的語(yǔ)句。

Whilei<=100dobeginnum:=num+i;

i:=i+1;End;直到循環(huán)(REPEAT-until語(yǔ)句)用while語(yǔ)句可以實(shí)現(xiàn)"當(dāng)型循環(huán)",用repeat-until語(yǔ)句可以實(shí)現(xiàn)"直到型循環(huán)"。repeat-until語(yǔ)句的含義是:"重復(fù)執(zhí)行循環(huán),直到指定的條件為真時(shí)為止"。

直到循環(huán)語(yǔ)句的一般形式:

Repeat

<語(yǔ)句1>;

:

<語(yǔ)句n>;

until<布爾表達(dá)式>;

其中Repeat、until是Pascal保留字,repeat與until之間的所有語(yǔ)句稱為循環(huán)體。

repeat

num:=num+i;i:=i+1;untili>100;求100(包括)以內(nèi)所有數(shù)之和whilei<=100dobeginnum:=num+i;

i:=i+1;end;fori:=1to100donum:=num+i;repeatnum:=num+i;i:=i+1;

untili>100;思考:

從鍵盤輸入若干數(shù)字,對(duì)它們求和,直到從鍵盤讀入的數(shù)是#時(shí)結(jié)束Whilea<>‘#’dountila=‘#’三種循環(huán)結(jié)構(gòu)的比較以上我們已介紹了三種循環(huán)語(yǔ)句。一般說(shuō)來(lái),用for循環(huán)比較簡(jiǎn)明,只要能用for循環(huán),就盡量作用for循環(huán)。只在無(wú)法使用for循環(huán)時(shí)才用while循環(huán)和repeat-until循環(huán),而且while循環(huán)和repeat-until循環(huán)是可以互相替代的。for循環(huán)在大多數(shù)場(chǎng)合也能用while和repeat-until循環(huán)來(lái)代替。一般for循環(huán)用于有確定次數(shù)循環(huán),而while和repeat-until循環(huán)用于未確定循環(huán)次數(shù)的循環(huán)。當(dāng)一個(gè)循環(huán)的循環(huán)體中又包含循環(huán)結(jié)構(gòu)程序時(shí),我們就稱之為循環(huán)嵌套補(bǔ)充(1)inc(x)等同x:=x+1;(2)inc(x,n)等同x:=x+n;(3)dec(x)等同x:=x-1;(4)dec(x,n)等同x:=x-n;題一編寫程序,求100~1000之間能被7整除的數(shù),每行輸出10個(gè)。Programex34;BeginForx:=10to99doBegina:=xdiv10;b:=xmod10;y:=b*10+a;ify-x=36thenwriteln(x);End;End.解:①用for循環(huán)列舉出所有的兩位數(shù),x為循環(huán)變量;②用公式a:=xdiv10分離出x的十位數(shù)字;③用公式b:=xmod10分離出x的個(gè)位數(shù)字;④用公式y(tǒng):=b*10+a合成新數(shù)y;⑤用式子y-x=36篩選出符合條件的數(shù)x并輸出。有個(gè)兩位數(shù)x,將它的個(gè)位數(shù)字與十位數(shù)字對(duì)調(diào)后得到一個(gè)新數(shù)y,此時(shí)y恰好比x大36,請(qǐng)編程求出所有這樣的兩位數(shù)。題二把整數(shù)3025從中剪開分為30和25兩個(gè)數(shù),此時(shí)再將這兩數(shù)之和平方,(30+25)2=3025計(jì)算結(jié)果又等于原數(shù)。求所有符合這樣條件的四位數(shù)。解:設(shè)符合條件的四位數(shù)為N,它應(yīng)當(dāng)是一個(gè)完全平方數(shù),用(a*a)表示。

①為了確保N=(a*a)在四位數(shù)(1000~9999)范圍內(nèi),可確定a在32~99循環(huán);

②計(jì)算N=a*a;將四位數(shù)N拆分為兩個(gè)數(shù)n1和n2;

③若滿足條件(n1+n2)*(n1+n2)=N就輸出Nprogramexam35;varn,a,x,n1,n2:integer;beginfora:=32to99dobeginn:=a*a;n1:=ndiv100;{拆取四位數(shù)的前兩位數(shù)}n2:=n-n1*100;{拆取四位數(shù)的后兩位數(shù)}x:=n1+n2;ifx*x=nthenwriteln(n);end;readlnend.百錢買百雞:今有錢100元,要買100只雞,公雞5元一只,母雞1元

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論