教師(PASCAL語言)培訓(xùn)講習(xí)_第1頁
教師(PASCAL語言)培訓(xùn)講習(xí)_第2頁
教師(PASCAL語言)培訓(xùn)講習(xí)_第3頁
教師(PASCAL語言)培訓(xùn)講習(xí)_第4頁
教師(PASCAL語言)培訓(xùn)講習(xí)_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

教師(PASCAL語言)培訓(xùn)講習(xí)江東區(qū)教研室賈為整理課件辦班的目的:1、提高與扎實(shí)信息學(xué)科教師的專業(yè)素養(yǎng)。今后會(huì)在各類信息學(xué)科教師考核中有所側(cè)重。2、形成一個(gè)學(xué)習(xí)與研究PASCAL語言的氣氛,建立一支培訓(xùn)團(tuán)隊(duì),促進(jìn)我區(qū)的青少年信息學(xué)競賽工作起步與開展。3、拋磚引玉。互幫互學(xué),建立學(xué)習(xí)共同體。4、本期培訓(xùn)班以講習(xí)?PASCAL語言?中根本語句為主,面向全體信息學(xué)科專業(yè)教師,進(jìn)行由簡單到復(fù)雜的編程思維訓(xùn)練,通過本期培訓(xùn)學(xué)會(huì)安裝、調(diào)試PASCAL程序,能夠讀懂程序,并掌握獨(dú)立編制簡單程序的能力。整理課件建議參考書:?PASCAL語言〔中學(xué)版/小學(xué)版〕第2版?張文雙,吳樹娟主編〔北京理工大學(xué)出版〕?數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)?張文雙、王學(xué)紅主編〔北京理工大學(xué)出版〕?奧賽經(jīng)典—信息學(xué)奧林匹克教程?〔根底篇、語言篇、提高篇〕湖南師范大學(xué)出版社出版〔寧波新江廈四樓書店有售?!痴碚n件序言:信息學(xué)奧賽的開展1989年5月首次舉辦國際信息學(xué)奧林匹克競賽,簡稱IOI,成為繼數(shù)學(xué)、物理、化學(xué)之后的又一門國際〔中學(xué)生〕奧林匹克競賽。1991年起全國青少年計(jì)算機(jī)競賽更名為全國青少年信息學(xué)〔計(jì)算機(jī)〕奧林匹克競賽,簡稱NOI。由中國科學(xué)技術(shù)協(xié)會(huì)主管,中國計(jì)算機(jī)學(xué)會(huì)主辦。全國青少年信息學(xué)奧林匹克聯(lián)賽,簡稱為NOIP,參加聯(lián)賽是參加NOI的必要條件。整理課件信息學(xué)奧林匹克競賽內(nèi)容程序設(shè)計(jì)知識(shí)。熟練使用一門程序設(shè)計(jì)語言編寫程序;熟悉常用的根本算法:如窮舉法、排序〔冒泡〕法、搜索法、回溯法、遞歸算法,排列組合等。數(shù)據(jù)結(jié)構(gòu)知識(shí)。簡單變量、數(shù)組、隊(duì)列、棧、串、記錄、指針、鏈表、樹、圖和文件。調(diào)試程序技能。整理課件FreePascal安裝、啟動(dòng)與退出從江東信息網(wǎng),用戶名xinxi,密碼xinxi2007,下載FreePascal2.04(大小為42M〕。點(diǎn)擊install.exe自動(dòng)安裝程序在指定的路徑目錄中。(15分鐘〕在路徑:目標(biāo)盤符\pp\bin\go32v2\找到fp.exe文件,右鍵創(chuàng)立快捷方式后,復(fù)制到桌面上。單擊桌面快捷圖標(biāo)即可啟動(dòng)FreePascal2.04。點(diǎn)擊菜單欄:file下拉exit項(xiàng)即可退出pascal環(huán)境。按alt+enter,進(jìn)行全屏切換。整理課件Pascal程序的輸入與調(diào)試?yán)齌0_1:用數(shù)字打印三角形。ProgramT0_1;varj,h:integer;Beginforj:=1to5dobeginwrite(‘‘:16-j);forh:=1to2*j-1dowrite(h);writeln;end;End.用主菜單的Compile中的菜單項(xiàng)Compile,或Alt+F9組合鍵,即可對(duì)程序進(jìn)行編譯。假設(shè)文件沒取名,那么先建立文件名。如果編譯有錯(cuò)誤,會(huì)顯示相關(guān)出錯(cuò)信息。注意freePascal安裝時(shí),有時(shí)會(huì)碰到與殺毒軟件沖突的事情,編譯也會(huì)不成功,需先將殺毒軟件屏蔽。運(yùn)行程序:選擇主菜單Run中的菜單項(xiàng)Run,或按ctrl+F9鍵。查看結(jié)果。選擇主菜單Debug中的菜單項(xiàng)Output可以查看結(jié)果。保存文件。用主菜單file中的save或按F2鍵保存文件。整理課件第1課認(rèn)識(shí)PASCAL語言Pascal是一種計(jì)算機(jī)通用的、編譯型的高級(jí)程序設(shè)計(jì)語言。它由瑞士NiklausWirth教授于六十年代末設(shè)計(jì)并創(chuàng)立。是一種按結(jié)構(gòu)化程序設(shè)計(jì)原那么描述的高級(jí)語言。

主要特點(diǎn)有:嚴(yán)格的結(jié)構(gòu)化形式;豐富完備的數(shù)據(jù)類型;運(yùn)行效率高;查錯(cuò)能力強(qiáng)。

NOI(全國奧林匹克信息學(xué)競賽)把Pascal語言定為唯一提倡的程序設(shè)計(jì)語言整理課件第1課認(rèn)識(shí)PASCAL語言讓我們先來看一個(gè)PASCAL程序,通過這個(gè)程序了解PASCAL的規(guī)那么。例L1_1半徑,求圓周長和面積的程序。整理課件程序說明:PROGRAMcircle(input,output);(*第1行:程序首部*)CONST(*第2行:常量說明*)PI=3.14159;VAR(*第4行:變量說明*)r,l,s:real;BEGIN(*第6行:語句局部*)read(r);(*第7行:輸入語句*)l:=2*PI*r;(*第8行:賦值語句*,計(jì)算周長)s:=PI*r*r;(*第9行:賦值語句*,計(jì)算面積)write(r,l,s);(*第10行:輸出語句*)END.(*第11行:語句局部以END.結(jié)束*)整理課件完整的PASCAL程序框架Program程序名〔程序參數(shù)表〕;Label標(biāo)號(hào)說明;Const常量說明;Type類型說明;Var變量說明;Function函數(shù)說明;procedure過程說明;begin程序語句;……end.在FreePascal中可省程序參數(shù)表。在程序執(zhí)行局部使用的標(biāo)號(hào)、常量、類型、變量、記錄、文件、過程和函數(shù),都必須在說明局部進(jìn)行說明。但并不是每個(gè)程序都必需的,根據(jù)需要而設(shè)。程序執(zhí)行局部是指Begin開始到最后一條End.結(jié)束語句的局部,是程序的核心。它由一系列語句組成,語句之間用“;〞隔開,允許一行寫多個(gè)語句,也允許一個(gè)語句寫成幾行。一般情況下一行只寫一個(gè)語句。整理課件1、PROGRAM寫在最左邊頂格;2、注釋的大括號(hào){、和CONST、VAR、BEGIN、END等語句上下對(duì)齊,且它們比PROGRAM向右移兩個(gè)字符;3、各個(gè)語句和程序語句也是上下對(duì)齊,它們比第2點(diǎn)中的各語句又向右移兩個(gè)字符;4、語句間多余空格與空行,編譯時(shí)會(huì)忽略。程序的書寫格式:整理課件數(shù)制的轉(zhuǎn)換1、常用的進(jìn)位計(jì)數(shù)制有:十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制。名稱基數(shù)標(biāo)志符十進(jìn)制0,1,2,3,4,5,6,7,8,9,D二進(jìn)制0,1B八進(jìn)制0,1,2,3,4,5,6,7Q十六進(jìn)制0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)H十進(jìn)制D二進(jìn)制B八進(jìn)制Q十六進(jìn)制H00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F161000020102、常用進(jìn)制對(duì)照表整理課件3、十進(jìn)制與二進(jìn)制的相互轉(zhuǎn)換例1:將十進(jìn)制數(shù)20.6875轉(zhuǎn)換成二進(jìn)制數(shù)?!?〕整數(shù)局部的轉(zhuǎn)換:“除以2倒序取余法〞。220021002512202110〔2〕小數(shù)局部的轉(zhuǎn)換:“乘2取整法〞。0.68750.37500.750.5×2×2×2×2

1.37500.751.51.0

1011

正序取整倒序取余合在一起得:〔20.6875〕10=〔10100.1011〕2整理課件例2:將〔11001.0101〕2轉(zhuǎn)換成十進(jìn)制數(shù)?!?1001.1101〕2=1×24+1×23+0×22+0×21+1×20+1×2-1+1×2-2+0×2-3+1×2-4=16+8+1+0.5+0.25+0.0625=〔25.8125〕10十進(jìn)制數(shù)和二進(jìn)制數(shù)的轉(zhuǎn)換可以推廣到十進(jìn)制與八進(jìn)制、十進(jìn)制與十六進(jìn)制數(shù)的轉(zhuǎn)換。如十進(jìn)制數(shù)轉(zhuǎn)換在八進(jìn)制數(shù)的方法是:“除以8倒取余法〞;十進(jìn)制小數(shù)轉(zhuǎn)換成八進(jìn)制小數(shù)的方法是:“乘8取整法〞。課堂作業(yè):〔1〕〔1101101.101〕2=〔〕10〔2〕〔45.625〕10=〔〕2整理課件第2課PASCAL的數(shù)據(jù)類型、標(biāo)識(shí)符、表達(dá)式、語句

數(shù)據(jù)對(duì)于一門程序語言是非常重要的,數(shù)據(jù)的一個(gè)非常重要的特征就是它的類型。PASCAL規(guī)定:程序中出現(xiàn)的變量必須先說明才能使用。二個(gè)值,即整理課件整數(shù)類型包括正整數(shù)〔+號(hào)可略〕、負(fù)整數(shù)和零。1,204在會(huì)計(jì)統(tǒng)計(jì)中是允許的,但在pascal中是非法的。整數(shù)類型的標(biāo)識(shí)符為integer,取值范圍為:-32768≤n≤32767。在freepascal中,允許整數(shù)采用十六進(jìn)制〔前加$)或二進(jìn)制(前加%〕表示。如x:=%101,相當(dāng)于x:=5,y:=$10,相當(dāng)于y:=16整數(shù)的類型:名稱類型標(biāo)識(shí)符數(shù)據(jù)范圍短整型Shortint-128~127長整型Longint-2147483648~2147483647字節(jié)型Byte0~255字型Word0~65535整數(shù)類型Int64-9223372036854775808~9223372036854775807無符號(hào)整數(shù)Qwordint640~18446744073709551615注意:int64不是有序類型。直接給一個(gè)int64類型的變量賦值一個(gè)超過longint范圍的整數(shù)是非法的,這是因?yàn)閒reepascal在表達(dá)式的計(jì)算中默認(rèn)最大類型為longint。整理課件整理課件標(biāo)識(shí)符標(biāo)識(shí)符是以字母開頭的字母、數(shù)字組合,用來表示常量、變量、類型、文件、函數(shù)、過程或程序的名字。x,y,max,min,sum,a15,a3b7都是合法的標(biāo)識(shí)符。而5x,x-y,α,π,ε,ex10.5都是非法的標(biāo)識(shí)符。標(biāo)識(shí)符的長度一般不要超過8個(gè)字符。標(biāo)識(shí)符的選取最好有一定意義,這樣便于記憶,也增加了程序的可讀性。整理課件表達(dá)式和運(yùn)算符算術(shù)運(yùn)算符:+,-,*,/,div〔整除〕,mod〔取余〕關(guān)系運(yùn)算符:=,>,<,<=,>=,<>,邏輯運(yùn)算符:AND,OR,NOT表達(dá)式就是將數(shù)據(jù)和運(yùn)算符結(jié)合使用,組成一組有意義的運(yùn)算式。在PASCAL語言中規(guī)定,表達(dá)式按以下運(yùn)算優(yōu)先規(guī)那么計(jì)算:1、所有括起來的子表達(dá)式必須先計(jì)算,且子表達(dá)式必須從里到外計(jì)算;2、在同一子表達(dá)式中的運(yùn)算符按以下次序計(jì)算:①函數(shù);②NOT;③AND,*,/,DIV,MOD;④OR,+,-;⑤<,<=,=,>,>=,<>3、在同一個(gè)子表達(dá)式中,同一優(yōu)先級(jí)的運(yùn)算按從左到右的次序進(jìn)行。4、MOD運(yùn)算結(jié)果的符號(hào)總是和被除數(shù)相同,而與模無關(guān)。-15mod6=-3-15mod(-6)=-315mod(-6)=3整理課件PASCAL程序中的運(yùn)算優(yōu)先規(guī)那么整理課件常量與變量常量定義格式:const<常量標(biāo)識(shí)符>=<常量>;要求如下:1、要放在程序說明局部。2、必須遵循先定義后使用的原那么。3、不允許重復(fù)定義,或一次定義多個(gè)常量。例如:consta=1;a,b=10;c=1or2;d:=3;變量定義格式:var<變量名表>:類型標(biāo)識(shí)符;例如:vara,b:integer;x,y:real;ch:char;t:boolran;但以下說明是非法的:例如:vara,b=integer;ch:char;ch:boolean;a,b后面不能用=,ch不能重復(fù)定義。變量一經(jīng)說明,系統(tǒng)就為其分配內(nèi)存。程序中使用該變量時(shí),就要在相應(yīng)的內(nèi)存單元讀寫數(shù)據(jù),稱為對(duì)變量的訪問。整理課件常用函數(shù)與表達(dá)式整理課件順序結(jié)構(gòu)程序設(shè)計(jì)1、賦值語句賦值語句的格式:變量標(biāo)識(shí)符:=表達(dá)式;功能:賦值語句是先執(zhí)行計(jì)算表達(dá)式的值,然后賦值給變量標(biāo)識(shí)符。說明:〔1〕〞:=“稱為賦值號(hào),不要與〞=“混淆。賦值有方向性,左邊只能是變量,不能是表達(dá)式,如–x:=1是非法的?!?〕賦值號(hào)兩邊的類型必須相同,但是整型表達(dá)式可以賦值給實(shí)型,反之不成立?!?〕一個(gè)賦值語句只能給一個(gè)變量賦值,變量可以賦值屢次,但只保存最后一次的值?!?〕被賦值的變量可以作為表達(dá)式因子參與運(yùn)算,如:i:=i+1;是合法的。〔5〕對(duì)變量的賦值是對(duì)變量的存入訪問。如d:=a;語句執(zhí)行后,d的變量內(nèi)容就已經(jīng)是a變量的內(nèi)容,但是a變量的值并沒有消失與改變。在實(shí)際編程中,我們經(jīng)常使用a:=a+1;作為計(jì)數(shù)器,用s:=s+x;作為累加器,用t:=t*n;作為累乘器。整理課件2、輸入〔read、readln)語句輸入語句格式:格式1:read<變量名表>;格式2:readln(<變量名表>);功能:執(zhí)行該語句時(shí),程序進(jìn)入等待狀態(tài),等待用戶從鍵盤輸入數(shù)據(jù),輸入的數(shù)據(jù)將依次賦給變量表中的變量,而后程序繼續(xù)執(zhí)行其他語句。說明:〔1〕變量表中變量超過一個(gè)時(shí),中間用逗號(hào)隔開。從鍵盤輸入數(shù)據(jù)時(shí),數(shù)據(jù)的個(gè)數(shù)不能少于變量個(gè)數(shù),否那么電腦一直處于等待狀態(tài)。當(dāng)數(shù)據(jù)多于變量個(gè)數(shù)時(shí),對(duì)于readln語句將其忽略,對(duì)于read語句時(shí),會(huì)補(bǔ)下一句read語句讀入,如果沒有輸入語句,也將其忽略?!?〕輸入數(shù)值型數(shù)據(jù)時(shí),必須用空格或回車鍵分隔,最后一定要用回車鍵。輸入字符型數(shù)據(jù)時(shí),不能有空格與回車鍵,必須連續(xù)輸入,因?yàn)榭崭衽c回車鍵也會(huì)當(dāng)作字符。〔3〕輸入的數(shù)據(jù)必須是常量,且必須與對(duì)應(yīng)的變量類型相一致?!?〕readln();可以沒有變量名表,此時(shí)該語句等待從鍵盤輸入回車鍵。Readln(x);等價(jià)于執(zhí)行了二條語句:read(x);readln();整理課件3、輸出〔write、writeln)語句輸出語句的格式:格式1write<輸出項(xiàng)表>;格式2writeln〔<輸出項(xiàng)表>〕;功能:按指定的格式將輸出項(xiàng)的內(nèi)容輸出到屏幕上。說明:〔1〕輸出項(xiàng)如果是多項(xiàng)時(shí),各項(xiàng)間用逗號(hào)分隔?!?〕輸出項(xiàng)可以是常量、變量、函數(shù)、表達(dá)式。常量直接輸出,變量時(shí)輸出變量的存儲(chǔ)單元內(nèi)容,遇到函數(shù)與表達(dá)式時(shí),先計(jì)算、再輸出。〔3〕write語句輸完最后一項(xiàng)時(shí),不換行,等待下一條write語句繼續(xù)輸出。Writeln語句輸完最后一項(xiàng)時(shí)換行,該語句允許沒有輸出項(xiàng),起到換行作用。writeln(x);等價(jià)于執(zhí)行了write(x);writeln();整理課件例:X:=2;y:=3;writeln(‘x=’,x,’y=’,y);writeln(x+y=’,x+y,’x*y=’,x*y)輸出結(jié)果為:x=2y=3x+y=5x*y=6write語句可以輸出實(shí)型、整型、字符型、布爾型值,也可以輸出字符串。假設(shè)在write語句中不加場寬說明,那么按標(biāo)準(zhǔn)場寬輸出。在這里,場寬是指輸出值的位數(shù)。整理課件自定義場寬〔1〕單場寬。用來控制整型、字符型、布爾型數(shù)據(jù)的輸出格式,不能用于實(shí)數(shù)型。格式:<輸出項(xiàng)>:n說明:n〔正整數(shù)〕表示輸出時(shí)所占的列數(shù)。單場寬一律右對(duì)齊,前用空格?!?〕雙場寬。用來控制實(shí)數(shù)的輸出格式。格式:<輸出項(xiàng)>:n1:n2說明:①n1表示輸出總占列數(shù),包括符號(hào)位、整數(shù)局部、小數(shù)點(diǎn)和小數(shù)局部;n2表示小數(shù)局部的列數(shù)。②當(dāng)數(shù)據(jù)突破場寬時(shí),首先保證整數(shù)局部的有效性,小數(shù)局部按n2場寬進(jìn)行四舍五入顯示,但內(nèi)存中仍是原來的精確度。③單場寬右對(duì)齊,雙場寬向小數(shù)點(diǎn)看齊,多余的小數(shù)位數(shù)補(bǔ)零。整理課件例T2_1:交換兩個(gè)變量的值?!?〕利用中間變量c,實(shí)現(xiàn)交換。ProgramT2_1_1;Vara,b,c:integer;Beginwrite(‘pleaseinputa,b=?’);read(a,b);write(‘before:’,’a=‘,a,’b=‘,b);c:=a;a:=b;b:=c;writeln(‘a(chǎn)fter:’,’a=‘,a:8,’b=‘,b:8);End.〔2〕不用中間變量,也可實(shí)現(xiàn)交換。ProgramT2_1_2;Vara,b:integer;Beginwrite(‘pleaseinputa,b=?’);read(a,b);write(‘before:’,’a=‘,a,’b=‘,b);a:=a+b;b:=a-b;a:=a-b;writeln(‘a(chǎn)fter:’,’a=‘,a:8,’b=‘,b:8);End.整理課件例T2_2:雞兔同籠問題。雞和兔的總頭數(shù)是H,總腿數(shù)為F,求雞和兔各多少只?分析:設(shè)雞為C只,兔為R只,那么C+R=H2*C+4*R=F解得:C=〔4*H-F〕/2,R=H-C。程序?yàn)椋篜rogremT2_2;varh,f,c,r:real;beginreadln(h,f);c:=(4*h-f)/2;r:=h-c;writeln(‘click:’,c);writeln(‘rabbit:’,r);end.整理課件例T2_3:隨機(jī)產(chǎn)生一個(gè)三位自然數(shù),求其百位、十位、個(gè)位上的數(shù)字。分析:要產(chǎn)生隨機(jī)數(shù),必然用到隨機(jī)函數(shù)。Random是隨機(jī)函數(shù)能產(chǎn)生[0,1]之間的隨機(jī)實(shí)數(shù)。隨機(jī)產(chǎn)生三位數(shù)的表達(dá)式為:trunc(random*900)+100假設(shè)三位數(shù)X,百位數(shù)分另別為A,B,C,那么存在如下關(guān)系:A=XDIV100B=(X-A*100)DIV10C=XMOD10程序?yàn)椋篜rogramT2_3;VARx,a,b,c:integer;beginrandomize;{它的作用是每次運(yùn)行程序時(shí),random函數(shù)產(chǎn)生不同的隨機(jī)數(shù)。起到埋種子作用。}x:=trunc(random*900)+100;writeln(‘x=‘,x);a:=xdiv100;b:=(x-a*100)div10;c:=xmod10;writeln(a:5,b:5,c:5);End.

整理課件例T2_4三角形的兩邊及夾角,求第三邊及面積。數(shù)學(xué)建模:設(shè)三角形的兩邊及夾角分別為a,b,α,第三邊為c,面積為s。那么,假設(shè)α以角度值輸入,在計(jì)算sin和cos時(shí)應(yīng)轉(zhuǎn)換為弧度。角度轉(zhuǎn)弧度的公式為:弧度=角度×程序:ProgramT2_4;constpi=3.14159;vara,b,alfa,c,s:real;beginread(a,b,alfa);alfa:=alfa*pi/180;c:=sqrt(a*a+b*b-2*a*b*cos(alfa));s:=1/2*a*b*sin(alfa);write(‘a(chǎn)lfa=‘,alfa,’c=‘:8,c,’s=‘:8,s);end.整理課件例T2_5:輸入一個(gè)字符,求其序號(hào)、前導(dǎo)〔即前一字符〕、后繼〔即后一字符〕。ProgramT2_5;varch,pch,sch:char;num:integer;beginwriteln;write(‘pleaseinputacharacter:’);readln(ch);write(‘pch:’,pred(ch),’sch:’,succ(ch),’num:’,ord(ch));readln();end.測試刪除倒數(shù)第二條語句readln();后,執(zhí)行情況有何不同?整理課件例T2_6:輸入x,y。假設(shè)在圓環(huán)內(nèi),輸出true,假設(shè)在圓環(huán)外;輸出false。圓環(huán)如下圖。討論:如下圖,假設(shè)下式1≤x2+y2≤4成立那么在圓環(huán)內(nèi),否那么在圓環(huán)外。設(shè)布爾變量bool,當(dāng)x,y在圓環(huán)內(nèi)時(shí),讓它取值為true,否那么取值為false?!啊瞲,y〕假設(shè)在圓環(huán)內(nèi)〞的表達(dá)式:(x2+y2≥12)且(x2+y2≤22)程序:programT2_6;varx,y:real;bool:boolean;beginwriteln;write(‘x=?’);readln(x);write(‘y=?’);readln(y);bool:=(x*x+y*y>=1)and(x*x+y*y<=4);write(bool);readln;end.整理課件作業(yè):XT1_1寫一程序讀入三角形的三個(gè)邊a,b,c,計(jì)算并打印三角形的面積S??衫靡韵鹿接?jì)算。其中:XT1_2輸入一個(gè)三位整數(shù),將它們反向輸出。例如輸入127,輸出應(yīng)為721。XT1_3由鍵盤輸入兩組x,y值,由程序根據(jù)它們是否在示意圖中的斜線區(qū)域內(nèi),輸出不同的值。假設(shè)在斜線區(qū)域內(nèi),輸出true,否那么輸出false。整理課件第3課選擇結(jié)構(gòu)程序設(shè)計(jì)

PASCAL中有兩個(gè)語句可實(shí)現(xiàn)選擇結(jié)構(gòu):IF語句〔條件語句〕和CASE語句〔情況語句〕3.2.1IF語句的兩種形式IF語句又稱如果語句〔或稱條件語句〕。它的一般形式是IF〔條件〕THEN〔語句1〕ELSE〔語句2〕其中“條件〞實(shí)際上是一個(gè)布爾表達(dá)式,它的值可以是真〔true〕或假〔false〕。在條件為真時(shí),執(zhí)行語句1,否那么〔條件為假〕執(zhí)行語句2。可以利用流程圖來描述選擇結(jié)構(gòu)。在流程圖中用菱形框表示要執(zhí)行的判定,其余步驟用矩形框表示,箭頭表示執(zhí)行的順序。整理課件例L3_1火車托運(yùn)行李,要根據(jù)行李的重量按不同標(biāo)準(zhǔn)收費(fèi)。例如不超過50kg,按每公斤0.35元收費(fèi)。假設(shè)超過50kg,那么其中50kg按每公斤0.35元收費(fèi),其余超過局部按每公斤0.50元收費(fèi)?,F(xiàn)輸入托運(yùn)行李重量,要求計(jì)算并輸出托運(yùn)費(fèi)。數(shù)學(xué)建模:設(shè)托運(yùn)行李重量為weight,該問題要求根據(jù)weight是否超過50kg,按不同公式計(jì)算出托運(yùn)費(fèi)。設(shè)托運(yùn)費(fèi)為pay。weight和pay均為實(shí)型。下面給出算法。一級(jí)算法1、讀入weight的值。2、根據(jù)weight的大小選擇不同的公式計(jì)算pay。3、輸出pay。其中第2步需求精。根據(jù)題意,可以寫出計(jì)算pay的公式如下:weight≤50weight>50整理課件除了上面給出的IF語句形式外,PASCAL中還有另外一種IF語句形式。即IF〔條件〕THEN〔語句〕在條件為真時(shí),執(zhí)行THEN后的語句。在條件為假時(shí),不執(zhí)行THEN后的語句,在兩種情況下的后繼語句都是IF語句的下一個(gè)語句。整理課件例L3_2讀入三個(gè)數(shù),找出并打印其中的最大數(shù)。解:PROGRAML3_2;VARa,b,c:real;BEGINwrite('a=?');read(a);write('b=?');read(b);write('c=?');read(c);IFa<bTHENa:=b;IFa<cTHENa:=c;writeln('ZuiDaShu:',a)END.整理課件3.2.2復(fù)合語句在IF語句中,跟在THEN或ELSE后的語句可能不止一個(gè),這時(shí)要用到復(fù)合語句的概念。復(fù)合語句是一個(gè)以BEGIN開始,以END結(jié)束的語句。在BEGIN與END之間可以包括假設(shè)干個(gè)語句,每個(gè)語句之間以分號(hào)分開。一般形式為:BEGIN〔語句1〕;〔語句2〕;…〔語句n〕END一個(gè)復(fù)合語句從外部看來,相當(dāng)于一個(gè)語句。整理課件3.2.3IF語句的嵌套在IF語句中,THEN或ELSE后的語句本身也可能是IF語句。此時(shí)稱為IF語句的嵌套〔或稱為復(fù)合IF語句〕。例如語句IF〔條件1〕THEN〔語句1〕ELSEIF〔條件2〕THEN〔語句2〕ELSE〔語句3〕就是一個(gè)復(fù)合IF語句,在它的ELSE后又是一個(gè)IF語句。整理課件有時(shí)IF語句可能會(huì)有兩種不同的理解。注意:在進(jìn)行IF語句的嵌套時(shí)應(yīng)注意IF與ELSE的配對(duì)關(guān)系,ELSE是不能省略的,否那么將造成邏輯錯(cuò)誤。解決的方法是寫一個(gè)空語句或者采用復(fù)合語句,即增加語句括號(hào)〔begin…end)。從內(nèi)層開始,ELSE總是與它上面最近的〔示曾配對(duì)的〕IF配對(duì)。整理課件例L3_3:有一個(gè)函數(shù)表達(dá)式為:

編寫程序,輸入x,輸出y的值。

ProgramL3-3;varx:real;y:integer;beginwrite(‘pleaseinputx=‘);readln(x);Ifx<0theny:=-1elseifx>0theny:=1elsey:=0;Writeln(‘y=‘,y);End.整理課件3.3CASE語句CASE語句是實(shí)現(xiàn)選擇結(jié)構(gòu)程序設(shè)計(jì)的另一種語句。它的使用有時(shí)比IF語句來得簡單、直觀。CASE語句〔或稱情況語句〕的一般形式是CASE〔表達(dá)式〕OF〔值表1〕:〔語句1〕;〔值表2〕:〔語句2〕; …… 〔值表n〕:〔語句n〕;ELSE語句n+1;END; 在CASE語句頭上的表達(dá)式必須是有序類型〔整型、字符型、布爾型以及后面要介紹的枚舉型、子界型〕。值表是一些由逗號(hào)分開的常數(shù)。表達(dá)式所有可能的值必須在值表中出現(xiàn),且每個(gè)值只能出現(xiàn)一次。 如果當(dāng)前表達(dá)式的值在某個(gè)值表i中出現(xiàn),那么該程序只執(zhí)行對(duì)應(yīng)值表i的語句i,然后執(zhí)行整個(gè)CASE語句后的下一語句。else可以省略,此時(shí)假設(shè)無表達(dá)式的值與之相匹配的常數(shù)表時(shí)程序?qū)⑾蛳逻\(yùn)行并跳出case語句。整理課件例L3_5輸入年、月,輸出該月有幾天。討論:每年的1、3、5、7、8、10、12月,每月有31天;4、6、9、11月,每月有30天;2月閏年有29天,平年有28天。年號(hào)能被4整除,但不能被100整除,或者年號(hào)能被400整除的年均是閏年。用year、month、days分別表示年、月、每月天數(shù)。它們均為整數(shù)。閏年的條件可以寫成如下的布爾表達(dá)式:(yearMOD4=0)AND(yearMOD100<>0)OR(yearMOD400=0)ProgramL3_5;varyear,month,days:integer;beginread(year,month);casemonthof1,3,5,7,8,10,12:days:=31;4,6,9,11:days:=30;2:if(yearmod4=0)and(yearmod100<>0)or(yearmod400=0)thendays:=29elsedays:=28;end;writeln(year,’year’,month,’month:’,’days:’,days);End.整理課件例L3_6編制程序,根據(jù)輸入的x值,計(jì)算y與z并輸出。PROGRAML3_6;CONSTPI=3.14159;VARx,y,z:real;BEGINwrite('x=?');read(x);IFx<=2.5THENy:=x*x+1ELSEy:=x*x-1;IFx<0THENz:=-PI/2*x+3ELSEIFx=0THENz:=0ELSEz:=PI/2*x-5;writeln('x=',x:6:2,',y=',y:6:2,',z=',z:6:2)END.整理課件作業(yè):XT3_1對(duì)一批貨物征收稅金,價(jià)格在1萬元以上的貨物征稅5%,在5000元以上,1萬元以下的貨物征稅3%,在1000元以上,5000元以下的貨物征稅2%,1000元以下的貨物免稅。編寫一程序,讀入貨物價(jià)格,計(jì)算并輸出稅金。XT3_2輸入某學(xué)生成績,假設(shè)成績?cè)?5分以上,輸出verygood,假設(shè)成績?cè)?0分到85分之間,輸出good,假設(shè)成績低于60分,輸出nogood。XT3_3輸入班號(hào),輸入該班學(xué)生人數(shù)。應(yīng)用CASE語句編程序。班級(jí)201202203204205班額4547424648整理課件第4課循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)〔或稱重復(fù)結(jié)構(gòu)〕是程序中的一個(gè)根本結(jié)構(gòu),在解許多問題中是很有用的。我們知道,在許多復(fù)雜的問題中,常常需要做大量類同的計(jì)算處理。盡管計(jì)算機(jī)的運(yùn)算速度很快,然而要把這些大量類同的計(jì)算處理的每一步都寫成語句,并輸入計(jì)算機(jī)中,其工作量是相當(dāng)大的。有時(shí)是難以完成的。循環(huán)結(jié)構(gòu)程序設(shè)計(jì)可以幫助我們有效地解決這一難題。利用循環(huán)結(jié)構(gòu)程序設(shè)計(jì),使得我們有可能只編寫少量的語句,讓計(jì)算機(jī)重復(fù)執(zhí)行它許屢次,從而完成大量類同的計(jì)算要求。在PASCAL中,實(shí)現(xiàn)循環(huán)程序設(shè)計(jì)的主要語句有FOR語句、WHILE語句和REPEAT語句。整理課件一、FOR語句

格式1:(遞增型)FORx:=<初值>TO<終值>DO<循環(huán)體>

格式1:(遞減型)

FORx:=<初值>downTO<終值>DO<循環(huán)體>

FORX:=1TO10DOFORX:=‘A’TO‘Z’DO

控制變量初值控制變量≤終值falsetrue執(zhí)行語句控制變量succ(控制變量〕控制變量初值控制變量≥終值falsetrue執(zhí)行語句控制變量pred(控制變量〕FORX:=10DOWNTO1DOFORX:=’Z’DOWNTO‘A’DO整理課件T4_001計(jì)算1+2+3+…+10PROGRAMT4_001;VARs,n:integer;BEGINs:=0;FORn:=1TO10DOs:=s+n;writeln(‘s=’,s)END.s=0當(dāng)n=1s=s+n=0+1=1;當(dāng)n=2s=s+n=1+2=3當(dāng)n=3s=s+n=3+3=6當(dāng)n=4s=s+n=6+4=10當(dāng)n=5s=s+n=10+5=15當(dāng)n=6s=s+n=15+6=21當(dāng)n=7s=s+n=21+7=28當(dāng)n=8s=s+n=28+8=36當(dāng)n=9s=s+n=36+9=45當(dāng)n=10s=s+n=45+10=55整理課件例T4_002:輸入10個(gè)任意整數(shù),求它們的和.

PROGRAMT4_002;VARs,n,a:integer;BEGINs:=0;FORn:=1TO10DOBEGINread(a);s:=s+a;END;writeln(‘s=’,s)END.例T4_003:計(jì)算n!〔n!=1×2×3×…×n〕PROGRAMT4_003;VARn,i,sum:integer;BEGINread(n);sum:=1;FORi:=1TOnDOsum:=sum*i;writeln('n!=',sum);END.注意N<8,否那么會(huì)溢出。整理課件例T4_004:任何一個(gè)n3一定可以表示成n個(gè)連續(xù)的奇數(shù)和。輸入n(n≤100),輸出n3對(duì)應(yīng)的表達(dá)式。數(shù)學(xué)題解:設(shè)表達(dá)式中的最小奇數(shù)為x;當(dāng)N=1時(shí),最小奇數(shù)X=1,1個(gè)奇數(shù);當(dāng)N=2時(shí),最小奇數(shù)X=3,2個(gè)奇數(shù);當(dāng)N=3時(shí),最小奇數(shù)X=7,3個(gè)奇數(shù);NN311223=8=3+5333=27=7+9+11443=64=13+15+17+19……當(dāng)N=K時(shí),最小奇數(shù)X前己有1+2+3+…+(K-1)個(gè)奇數(shù),那么第K個(gè)奇數(shù)K*〔K-1〕X=*2+1=K*〔K-1〕+1=N*〔N-1〕+12整理課件ProgramT4_004;vari,n,a:longint{循環(huán)變量,連續(xù)的奇數(shù)個(gè)數(shù),當(dāng)前項(xiàng),類型為長整型}beginreadln(n);a:=n*(n-1)+1;fori:=1ton-1dobeginwrite(a,’+’);a:=a+2;end;writrln(a);readln;end思考題:用數(shù)學(xué)方法證明上述定理。整理課件作業(yè):T4_005輸入10個(gè)任意整數(shù),求它們的平均值。T4_006按正序和反序分別輸出26個(gè)英文字母。T4_007輸入20個(gè)整數(shù),輸出其中最大數(shù)。T4_008輸入20個(gè)整數(shù),統(tǒng)計(jì)其中正、負(fù)和零的個(gè)數(shù)。思考題:求值:整理課件作業(yè)答案:PROGRAMT4_005;VARave:real;i,n,sum:integer;BEGINsum:=0;FORi:=1TO10DOBEGINread(n);sum:=sum+n;END;ave:=sum/10;writeln('ave=',ave:6:2)END.PROGRAMT4_006;VARi:integer;BEGINwriteln();FORi:=1TO26DOwrite(chr(96+i));writeln();FORi:=122DOWNTO97DOwrite(chr(i))END.PROGRAMT4_006_1;VARi:char;BEGINwriteln();FORi:=‘A’TO‘Z’DOwrite(i);writeln();FORi:=‘Z’DOWNTO‘A’DOwrite(i)END.整理課件作業(yè)答案:PROGRAMT4_007;VARmax,i,n:integer;BEGINread(max);FORi:=1TO19DOBEGINread(n);IFmax<nTHENmax:=n;END;writeln('max=',max)END.PROGRAMT4_008;VARi,n,Zheng,Fu,Ling:integer;BEGINZheng:=0;Fu:=0;Ling:=0;FORi:=1TO20DOBEGINread(n);IFn>0THENZheng:=Zheng+1ELSEIFn=0THENLing:=Ling+1ELSEFu:=Fu+1;END;{FOR}writeln('ZhengShuYou:',Zheng,';FuShuYou:',Fu,';LingYou:',Ling)END.整理課件二、while語句(當(dāng)型循環(huán)〕當(dāng)循環(huán)次數(shù)未知,例如它依賴于某個(gè)布爾表達(dá)式的值,而此值在循環(huán)執(zhí)行過程中會(huì)改變。這種循環(huán)不可能由FOR語句實(shí)現(xiàn),PASCAL為此提供了WHILE語句和REPEAT語句。WHILE語句的一般形式:WHILE<布爾表達(dá)式>DO<循環(huán)體>flase布爾表達(dá)式true

語句整理課件例T4_009:

求S=2+6+10+…+98的值。分析:S為求和累加器,X為當(dāng)前項(xiàng),賦初值為2,每次循環(huán)后增加4,取X≤98為布爾表達(dá)式。ProgramT4_009;Vars,x:longint;beginx:=2;s:=0;whilex<=98do{當(dāng)滿足條件時(shí)執(zhí)行后面語句}begins:=s+x;x:=x+4;end;writeln(‘s=‘,s);end.課堂作業(yè):計(jì)算S=1+2+4+8+…+128+256的值。整理課件例T4_010:求兩個(gè)自然數(shù)的最小公倍數(shù)。分析:先從數(shù)學(xué)角度來分析一下,所謂最小公倍數(shù)就是指能被M和N同時(shí)整除的最小自然數(shù)。先設(shè)一個(gè)變量i,讓它從1開始按自然數(shù)增長,將i與M相乘的結(jié)果存到變量S中,這樣S就是M的公倍數(shù),由于i是從最小開始的,然后再用每一個(gè)S除以因子N,假設(shè)能整除,那么S為M和N兩個(gè)因子的最小公倍數(shù)。ProgramT4_010;varn,m,I,s:longint;beginwrite(‘請(qǐng)輸入兩個(gè)自然數(shù)‘);readln(m,n);i:=1;s:=m*I;whilesmodn<>0dobegini:=i+1;s:=m*I;end;writrln(‘s=’,s);end.整理課件三、repeat語句〔直到型循環(huán)〕REPEAT語句也用于循環(huán)次數(shù)未知的循環(huán),它的用法與WHILE語句稍有不同。REPEAT語句的一般形式如下:REPEAT<循環(huán)體>UNTIL<布爾表達(dá)式>例T4_011計(jì)算〔泰勒展開式〕直到最后一項(xiàng)的絕對(duì)值小于10-7時(shí)停止計(jì)算,x由鍵盤輸入。整理課件題解:設(shè)S為累加器,t為當(dāng)前項(xiàng),i為X的冪次

即S=t1+t2+t3…+tk,其中〔1〕確定重復(fù)條件為abs(t)<1e-7(2)確定重復(fù)體由(3)設(shè)初值

由此得出程序:ProgramT4_011;varI:integer;t,s,x:real;beginreadln(x);x:=x*3.14159/180;i:=1;t:=X;s:=0;repeats:=s+t;t:=-t*x/(i+1)*x/(i+2);i:=i+2;untilabs(t)<1e-7;writeln(‘sin(‘,x,’)=’,s:0:4)readln;End.整理課件作業(yè):T4_012:計(jì)算當(dāng)最后一項(xiàng)的絕對(duì)值小于10-6時(shí)結(jié)束,打印輸出結(jié)果。T4_013:求滿足條件N!≤100000的最大值N。整理課件三種循環(huán)語句的相同點(diǎn)與不同點(diǎn)FORWHILEREPEAT語句格式FOR<循環(huán)變量>:=<初值>TO<終值>DO<語句>WHILE<布爾表達(dá)式>DO<循環(huán)體>REPEAT<循環(huán)體>UNTIL<布爾表達(dá)式>循環(huán)變量賦值布爾表達(dá)式無循環(huán)變量循環(huán)次數(shù)確定,由初值和終值決定不確定,由循環(huán)體前的布爾表達(dá)式?jīng)Q定,當(dāng)值為“假”時(shí),結(jié)束循環(huán)??赡芤淮窝h(huán)也沒有不確定,由循環(huán)體后的布爾表達(dá)式?jīng)Q定,當(dāng)值為“真”時(shí)結(jié)束循環(huán)。至少有一次循環(huán)循環(huán)體多語句時(shí),需用BEGIN和END多語句時(shí),需用BEGIN和END多語句時(shí),不需用BEGIN和END整理課件用計(jì)算機(jī)解題的根本方法

在對(duì)問題有了清楚的分析后,可以仔細(xì)地構(gòu)造求解步驟——算法。算法可以自頂向下、由粗到細(xì),逐步求精。描述問題由粗到細(xì)的過程,一般可以分為三步:一級(jí)算法二級(jí)求精寫出程序

整理課件第5課多重循環(huán)如果一個(gè)循環(huán)結(jié)構(gòu)的內(nèi)部〔循環(huán)體〕又包括一個(gè)循環(huán)結(jié)構(gòu),就稱為多重循環(huán)結(jié)構(gòu)。實(shí)現(xiàn)多重循環(huán)結(jié)構(gòu)仍可以用前面講的三種循環(huán)語句。因?yàn)槿我谎h(huán)語句的循環(huán)體局部都可以包含另一個(gè)循環(huán)語句,這種循環(huán)語句的嵌套為實(shí)現(xiàn)多重循環(huán)提供了方便。多重循環(huán)的嵌套次數(shù)可以是任意的??梢园凑涨短讓哟螖?shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。在設(shè)計(jì)多重循環(huán)時(shí),要特別注意內(nèi)、外循環(huán)之間的關(guān)系,以及各語句安放的位置,不要搞錯(cuò)。整理課件T5_001求1~100之間的素?cái)?shù)(質(zhì)數(shù)),每行輸出5個(gè)素?cái)?shù).素?cái)?shù)是大于1,且除了1和它本身外,不能被其它任何整數(shù)所整除的整數(shù)。討論:根據(jù)素?cái)?shù)的定義可知為了判斷某數(shù)i是否為素?cái)?shù),一個(gè)最簡單的方法是用2、3、4、5、……、i-1這些數(shù)逐個(gè)去除i,看能否除盡。假設(shè)被其中一個(gè)數(shù)除盡了,那么i不是素?cái)?shù),否那么〔全都除不盡〕i是素?cái)?shù)?!泊怂惴ù螖?shù)較多〕用2、3、4、……去除,如果都除不盡,那么i是素?cái)?shù)?!泊怂惴ù螖?shù)較少〕整理課件一級(jí)算法:FORi:=2TO100DOBEGIN1、用2到去除i,看看能否除盡2、IF除不盡THEN輸出素?cái)?shù)iEND算法需進(jìn)一步求精。用變量yn來表示是否除盡。一開始讓yn=1,當(dāng)有一個(gè)數(shù)能除盡時(shí),讓yn=0表示能除盡,這時(shí)i不是素?cái)?shù);假設(shè)循環(huán)結(jié)束時(shí),yn仍等于1,表示都除不盡,這時(shí)i是素?cái)?shù)。二級(jí)求精1、用2到去除i,看看能否除盡1-1yn:=11-2WHILEn<sqrt(i)DOBEGINn:=n+1IFiMODn=0THENyn:=0END為了每行輸出5個(gè)數(shù),還需增加一個(gè)變量counter來計(jì)數(shù)。ProgramT5_001;varI,n,yn,counter:integer;beginwriteln();counter:=1;Write(2,’,’);fori:=3to100dobeginn:=1;yn:=1;whilen<sqrt(i)dobeginn:=n+1;ifImodn=0thenyn:=0;end;ifyn=1thenbegincounter:=counter+1;ifcountermod5=0thenwriteln(i)elsewrite(I,’,’);end;{if}end;{for}End.{main}整理課件T5_002驗(yàn)證哥德巴赫猜測〔任何充分大的偶數(shù)都可由兩個(gè)素?cái)?shù)之和表示〕。將4~2*s〔s≤1000〕中的所有偶數(shù)分別用兩個(gè)素?cái)?shù)之和表示。哥德巴赫猜測是:對(duì)任一充分大的偶數(shù)even,可以找到兩個(gè)素?cái)?shù)p、q。使得even=p+q即1+1問題。此問題還未得到最后的證明。我們這里只是對(duì)有限范圍內(nèi)的數(shù),用計(jì)算機(jī)加以驗(yàn)證,不算嚴(yán)格證明。讀入偶數(shù)even,將它分成p和q,使even=p+q。p從2開始〔每次加1〕,q=even-p。如果p、q均為素?cái)?shù),那么輸出結(jié)果,否那么將p加1再試。一級(jí)算法:1、讀入一個(gè)數(shù)even;2、判斷even是否為偶數(shù),如果是偶數(shù),那么繼續(xù),否那么結(jié)束程序;3、FORp:=2TOtrunc(even/2)3-1q:=even-p3-2判斷p是否為素?cái)?shù)〔pyn:=1表示p為素?cái)?shù),pyn:=0表示p不是素?cái)?shù)〕3-3判斷q是否為素?cái)?shù)〔qyn:=1表示q為素?cái)?shù),qyn:=0表示q不是素?cái)?shù)〕3-4IFpyn=1ANDqyn=1THENwriteln(even,’=’,p,’+’,q)整理課件二級(jí)求精:1、read(even)2、IFevenMOD2=0THEN第3步3-2、n:=2WHILEn<sqrt(p)DOBEGINn:=n+1;IFpMODn=0THENpyn:=0;END;3-3、n:=2WHILEn<sqrt(q)DOBEGINn:=n+1;IFqMODn=0THENqyn:=0;END;整理課件作業(yè):程序找錯(cuò)誤〔一〕錯(cuò)誤一:第2行少“VAR〞;錯(cuò)誤二:第5行少分號(hào);錯(cuò)誤三:第4、6、8行,字符串應(yīng)用單引號(hào),題中用了雙引號(hào);錯(cuò)誤四:第8行字符串與變量之間少逗號(hào)。整理課件作業(yè):程序找錯(cuò)誤〔二〕PROGRAMT5_004;VARn,integer;BEGINwrite('Pleaseinputanumberfrom0to6forweekday:')read(n);CASEn0:writeln('Sunday');1:writeln('Monday');2:writeln('Tuesday');3:writeln('Wednesday');4:writeln('Thursday');5:writeln('Friday');6:writeln('Saturday');END.錯(cuò)誤一:第2行變量與數(shù)據(jù)類型之間應(yīng)用冒號(hào),這里用了逗號(hào);錯(cuò)誤二:第5行少分號(hào);錯(cuò)誤三:第7行,CASE語句少了OF;錯(cuò)誤四:CASE語句沒有END與之配對(duì)。整理課件作業(yè):程序找錯(cuò)誤〔三〕PROGRAMT5_005;VARch:char;ZiMu,ShuZi,FuHao:integer;BEGINZiMu:=0;ShuZi:=0;FuHao:=0;WHILEch<>'?'BEGINread(ch);IF(ch>A)AND(ch<Z)OR(ch>a)AND(ch<z)THENZiMu=ZiMu+1ELSEIFord(ch)>=48ANDord(ch)<=57THENShuZi:=ShuZi+1ELSEFuHao:=FuHao+1;END;writeln('ZiMuGeShu:',ZiMu);writeln('ShuZiGeShu:',ShuZi);writeln('QiTaFuHaoGeShu:',FuHao)END.錯(cuò)誤一:第9行WHILE語句少DO;錯(cuò)誤二:第12行IF語句中,字符沒有加單引號(hào);錯(cuò)誤三:第13行,賦值語句不對(duì),應(yīng)為:=錯(cuò)誤四:第14行,IF語句中,AND兩邊的邏輯判斷應(yīng)各自加括號(hào),即〔ord(ch)>=48〕AND〔ord(ch)<=57〕。整理課件T5_003“百錢買百雞〞是我國古代的著名數(shù)學(xué)問題,內(nèi)容是3文錢可以買1只公雞,2文錢可以買1只母雞,1文錢可以買3只小雞。用了100文錢買了100只雞,問有多少只公雞、母雞、小雞?分析:用X,Y,Z分別代表購置公雞、母雞、小雞的數(shù)量,那么存在以下關(guān)系:同時(shí)滿足:1≤x≤33,1≤y≤50,1≤z≤100。然后在各變量范圍內(nèi)進(jìn)行檢驗(yàn),能滿足上面兩個(gè)關(guān)系式的變量值。ProgramT5_003Varx,y,z:integer;beginforx:=1to33dobeginfory:=1to50doz:=100-x-yif3*x+2*y+z/3=100thenwriteln(‘gongqi:’,x,’muqi’:8,y,‘xiaoqi’:8,z);end;end;End.整理課件第6課PASCAL語言數(shù)據(jù)類型數(shù)據(jù)類型簡單類型標(biāo)準(zhǔn)類型用戶自定義類型整型實(shí)型字符型布爾型枚舉類型子界類型構(gòu)造類型集合類型數(shù)組類型字符串類型記錄類型指針類型文件類型整理課件6.1.1整型的運(yùn)算項(xiàng)目內(nèi)容算術(shù)運(yùn)算符+、-、*、/,div(取商)、mod(取模)關(guān)系運(yùn)算符=、<>、>、<、<=、>=標(biāo)準(zhǔn)函數(shù)Pred(前趨)、succ(后繼)、ord(序號(hào))、abs(絕對(duì)值)、sqr(平方)、sqrt(平方根)、odd(判奇)[奇數(shù)為true,偶數(shù)false]…整理課件例T6_000:如果變量A既能被7整除又能被11整除,寫成PASCAL表達(dá)式:〔Amod7=0)and(Amod11=0)例T6_001:求水仙花數(shù)。所謂水仙花數(shù),如ABC,如果滿足A3+B3+C3=ABC,那么ABC稱為水仙花數(shù)。例:153=13+53+33,所以153就是水仙花數(shù)。分析:此題關(guān)鍵是分解出A、B、Ca=Idiv100b=Idiv10–10*aC=Imod10ProgramT6_001;VarI,a,b,c:longint;beginforI:=100to999dobegina:=Idiv100b:=Idiv10-a*10c:=Imod10ifi=a*a*a+b*b*b+c*c*cthenwriteln(‘is’,i)end;end.整理課件6.2:實(shí)型名稱類型名數(shù)據(jù)范圍位數(shù)字節(jié)單精度實(shí)型Single1.5E-45~3.4E+384實(shí)型Real2.9E-39~1.7E+386雙精度實(shí)型Double5.0E-324~1.7E+3088擴(kuò)展實(shí)型Extended1.9E-4932~1.1E+493210裝配實(shí)型Comp-263+1~263-1之間的整數(shù)8這幾種實(shí)數(shù)類型的使用方法與Real的使用方法類似,必須在程序開始翻開編譯開關(guān){$N+},這些類別才能被系統(tǒng)識(shí)別。整理課件例T6_2:求1/1+1/2+2/3+3/5+5/8+…前n項(xiàng)〔n≤50)的和。分析:設(shè)e=t1+t2+t3+…+ti+..+tn,其中ti=,(1≤i≤n)。由數(shù)列的特征可以看出,ai=bi-1,bi=ai-1+bi-1。由于N≤50,因此ai,bi,e的數(shù)值超過了標(biāo)準(zhǔn)的整數(shù)型和實(shí)數(shù)型的范圍。不得不通過{$N+}啟動(dòng)浮點(diǎn)運(yùn)算,并將ai,bi,e的數(shù)據(jù)類型設(shè)為extended,使得精度保持在19位。ProgramT6_2;{$N+}varI,n:integer;a,b,c,e:extended;beginreadln(n);a:=0;b:=1;e:=0;fori:=1tondobeginc:=b;b=a+b;a:=c;e:=e+a/b;end;{for}writeln(e:20:2)end.{main}整理課件6.3:字符型〔ASCII碼〕〔1〕類型名:Char〔2〕范圍:ASCII碼〔美國標(biāo)準(zhǔn)信息交換代碼〕〔3〕表示方法:‘一個(gè)字符’〔4〕字符是有序類型,每個(gè)字符都對(duì)應(yīng)一個(gè)序號(hào),其中字符‘A’的序號(hào)是64,字符’a’的序號(hào)是97?!?〕字符類型占內(nèi)存一個(gè)字節(jié)。整理課件6.4:布爾型〔1〕類型名:boolean〔2〕范圍:只有兩個(gè)值false和true〔3〕是有序數(shù)據(jù):false序號(hào)是0,true的序號(hào)是1。即ord(false)=0,ord(true)=1.約定:false<true。〔4〕布爾型占內(nèi)存一個(gè)字節(jié)。〔5〕邏輯運(yùn)算符:and、or、not運(yùn)算結(jié)果為布爾型。整理課件例T6_3:填寫數(shù)字:求出中的數(shù)字,并找印算式。8091設(shè)位數(shù)較少的除數(shù)為x(被除數(shù)的位數(shù)4,除數(shù)的位數(shù)2〕,由x得出y:y=809x+1根據(jù)以下條件,判斷x和y是否同時(shí)成立:〔1〕y為四位數(shù)〔y>999)and(y<10000)(2)8乘以X為二位數(shù)((8x<100)and(8x>9)(3)9乘以X為三位數(shù)((9x<1000)and(9x>99)整理課件程序:ProgramT6_3;varx,y:integer;beginforx:=10to99dobeginy:=809*x+1if(y>999)and(y<10000)and(8*x<100)and(8*x>9)and(9*x>99)and(9*x<1000)thenbeginwriteln(‘809’:19);writeln(‘’:20);writeln(x:6,’)’:3,y:10);writeln(8*x:17);writeln(‘’:20);writeln(y-800*x:19);writeln(9*x:19);writeln(‘’,20);writeln(‘1’:19);end;{then}end;{for}end.{main}整理課件6.5:枚舉型〔1〕格式:type枚舉類型標(biāo)識(shí)符=〔標(biāo)識(shí)符1,標(biāo)識(shí)符2,…標(biāo)識(shí)符n);(2)特點(diǎn):枚舉元素只能是標(biāo)識(shí)符,不能是數(shù)值常量或字符常量同一枚舉元素不能出現(xiàn)在兩個(gè)及以上枚舉型定義中枚舉類型有順序,序列號(hào)從0開始o(jì)rd(Monday)=0,succ(Friday)=Saturday,pred(Friday)=Thursday枚舉類型只能進(jìn)行賦值和關(guān)系運(yùn)算枚舉變量不允許用read或readln語句進(jìn)行賦值,也不能被write或writeln輸出。

整理課件例T6_4:有紅、橙、黃、綠、藍(lán)5種顔色的小旗,每次取出3種不同顔色表示不同的信號(hào),輸出所有信號(hào)的方案及方案總數(shù)。分析:枚舉值的輸入,一般先輸入序號(hào),通過CASE語句將枚舉值相應(yīng)地賦值給枚舉變量;輸出時(shí),通過CASE語句判斷枚舉類型變量的值,輸出相應(yīng)的字符串。ProgramT6_4;Typecolor=(red,orange,yellow,green,blue);varm,m1,m2,m3:color;s,p:integer;begins:=0;form1:=redtobluedoform2:=redtobluedoifm1<>m2thenform3:=redtobluedoif(m3<>m1)and(m3<>m2)thenbegins:=s+1write(s,’:’);forP:=1to3dobegincasepof1:m:=m1;2:m:=m2;3:m:=m3;end;{casep}casemofred:write(‘red’:8);orange:write(‘orange’:8);yellow:write(‘yellow’:8);green:write(‘green’:8);blue:write(‘blue’:9);end;{case結(jié)束}end;{for結(jié)束}writeln;end;{if結(jié)束}writeln(‘total:’,s);end.整理課件6.6:子界類型type子界類型標(biāo)識(shí)符=常量1..常量2注釋:常量2必須大于常量1;可以是整型、字符型、布爾型、枚舉型等順序型的兩個(gè)常量,且必須是同一類型的數(shù)據(jù)。子界型常量上下界不可以是實(shí)數(shù)型。整理課件類型定義:typeren=‘A’..’F’;ProgramT6_5;Varm,n:’A’..’F’;s:integer;begins:=0;form:=‘A’to‘E’doforn:=succ(m)to‘F’dobegins:=s+1;writeln(m,’’,n);end;writeln(‘zhongshu=‘,s);end.例T6_5:新學(xué)期開學(xué)第一天,6個(gè)小朋友查聚后握手致意,請(qǐng)用A~F表示6個(gè)小朋友,輸出6個(gè)人相互握手的各種情況,并統(tǒng)計(jì)握手的次數(shù)。整理課件1、常量說明語句〔1〕無類型常量的說明CONST常量名=無類型常量;〔無類型常量是真正的常量,不允許改變其值〕例:consts=‘test’;(2)有類型常量的說明CONST

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論