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

下載本文檔

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

文檔簡介

1、整理課件教師(PASCAL語言)培訓講習江東區(qū)教研室 賈 為整理課件辦班的目的:1、提高與扎實信息學科教師的專業(yè)素養(yǎng)。今后會在各類信息學科教師考核中有所側(cè)重。2、形成一個學習與研究PASCAL語言的氛圍,建立一支培訓團隊,促進我區(qū)的青少年信息學競賽工作起步與發(fā)展。3、拋磚引玉?;突W,建立學習共同體。4、本期培訓班以講習PASCAL語言中基本語句為主,面向全體信息學科專業(yè)教師,進行由簡單到復雜的編程思維訓練,通過本期培訓學會安裝、調(diào)試PASCAL程序,能夠讀懂程序,并掌握獨立編制簡單程序的能力。整理課件建議參考書:PASCAL語言(中學版/小學版)第2版張文雙,吳樹娟主編(北京理工大學出版)

2、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計張文雙、王學紅主編(北京理工大學出版)奧賽經(jīng)典信息學奧林匹克教程(基礎(chǔ)篇、語言篇、提高篇) 湖南師范大學出版社出版 (寧波新江廈四樓書店有售。)整理課件v1989年5月首次舉辦國際信息學奧林匹克競賽,簡稱IOI,成為繼數(shù)學、物理、化學之后的又一門國際(中學生)奧林匹克競賽。v1991年起全國青少年計算機競賽更名為全國青少年信息學(計算機)奧林匹克競賽,簡稱NOI。由中國科學技術(shù)協(xié)會主管,中國計算機學會主辦。 全國青少年信息學奧林匹克聯(lián)賽,簡稱為NOIP,參加聯(lián)賽是參加NOI的必要條件。整理課件整理課件v從江東信息網(wǎng)ftp:/,用戶名xinxi,密碼xinxi2007,下載Fr

3、ee Pascal 2.04(大小為42M)。v點擊install.exe自動安裝程序在指定的路徑目錄中。(15分鐘)v在路徑:目標盤符ppbingo32v2找到fp.exe文件,右鍵創(chuàng)建快捷方式后,復制到桌面上。v單擊桌面快捷圖標即可啟動Free Pascal 2.04。v點擊菜單欄:file下拉exit項即可退出pascal環(huán)境。v按 alt+enter,進行全屏切換。整理課件Pascal 程序的輸入與調(diào)試例T0_1:用數(shù)字打印三角形。Program T0_1; var j,h:integer;Begin for j:=1 to 5 do begin write ( :16-j); for

4、 h:=1 to 2*j-1 do write(h); writeln; end;End. 用主菜單的Compile中的菜單項Compile,或Alt+F9組合鍵,即可對程序進行編譯。若文件沒取名,則先建立文件名。 如果編譯有錯誤,會顯示相關(guān)出錯信息。注意free Pascal安裝時,有時會碰到與殺毒軟件沖突的事情,編譯也會不成功,需先將殺毒軟件屏蔽。 運行程序:選擇主菜單Run中的菜單項Run,或按ctrl+F9鍵。 查看結(jié)果。選擇主菜單Debug中的菜單項Output可以查看結(jié)果。 保存文件。用主菜單file中的save或按F2鍵保存文件。整理課件第1課 認識PASCAL語言Pascal是

5、一種計算機通用的、編譯型的高級程序設(shè)計語言。它由瑞士Niklaus Wirth教授于六十年代末設(shè)計并創(chuàng)立。是一種按結(jié)構(gòu)化程序設(shè)計原則描述的高級語言。主要特點有:嚴格的結(jié)構(gòu)化形式;豐富完備的數(shù)據(jù)類型;運行效率高;查錯能力強。NOI(全國奧林匹克信息學競賽)把Pascal語言定為唯一提倡的程序設(shè)計語言 整理課件第1課 認識PASCAL語言讓我們先來看一個PASCAL程序,通過這個程序了解PASCAL的規(guī)則。例例L1_1 L1_1 已知半徑,求圓周長和面積的程序。整理課件程序說明:程序說明:PROGRAM circle(input,output); (* 第第1行:程序首部行:程序首部 *)CONS

6、T(*第第2行:常量說明行:常量說明*)PI=3.14159; VAR(*第第4行:變量說明行:變量說明*)r,l,s:real; BEGIN(*第第6行:語句部分行:語句部分*)read(r); (*第第7行:輸入語句行:輸入語句*)l:=2*PI*r; (*第第8行:賦值語句行:賦值語句*,計算周長,計算周長)s:=PI*r*r; (*第第9行:賦值語句行:賦值語句*,計算面積,計算面積)write(r,l,s); (*第第10行:輸出語句行:輸出語句*) END. (*第第11行:語句部分以行:語句部分以END.結(jié)束結(jié)束*)整理課件完整的PASCAL程序框架Program 程序名(程序參

7、數(shù)表); Label 標號說明; Const 常量說明; Type 類型說明; Var 變量說明; Function 函數(shù)說明; procedure 過程說明; begin 程序語句; end.整理課件1、PROGRAM寫在最左邊頂格;2、注釋的大括號、和CONST、VAR、BEGIN、END等語句上下對齊,且它們比PROGRAM向右移兩個字符;3、各個語句和程序語句也是上下對齊,它們比第2點中的各語句又向右移兩個字符;4、語句間多余空格與空行,編譯時會忽略。整理課件數(shù)制的轉(zhuǎn)換1、常用的進位計數(shù)制有:十進制、二進制、八進制、十六進制。名稱基數(shù)標志符十進制0,1,2,3,4,5,6,7,8,9,

8、D二進制0,1B八進制0,1,2,3,4,5,6,7Q十六進制0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)H十進制D二進制B八進制Q十六進制H00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F16100002010整理課件3、十進制與二進制的相互轉(zhuǎn)換例1:將十進制數(shù)20.6875轉(zhuǎn)換成二進制數(shù)。(1)整數(shù)部分的轉(zhuǎn)換:“除以2倒序取余法”。2 20 0 2 10 0 2 5 1

9、2 2 0 2 1 1 0(2)小數(shù)部分的轉(zhuǎn)換:“乘2取整法”。 0.6875 0.3750 0.75 0.5 2 2 2 2 1.3750 0.75 1.5 1.0 1 0 1 1 正序取整倒序取余合在一起得:(20.6875)10=(10100.1011)2整理課件例2:將(11001.0101)2轉(zhuǎn)換成十進制數(shù)。(11001.1101)2 = 124+123+022+021+120+12-1+12-2 +02-3+12-4 =16+8+1+0.5+0.25+0.0625 =(25.8125)10 十進制數(shù)和二進制數(shù)的轉(zhuǎn)換可以推廣 到十進制與八進制、十進制與十六進制數(shù)的轉(zhuǎn)換。如十進制數(shù)轉(zhuǎn)換

10、在八進制數(shù)的方法是:“除以8倒取余法”;十進制小數(shù)轉(zhuǎn)換成八進制小數(shù)的方法是:“乘8取整法”。課堂作業(yè):(1)(1101101.101)2 =( )10 (2) (45.625)10 =( )2整理課件第2課 PASCAL的數(shù)據(jù)類型、標識符、表達式、語句 數(shù)據(jù)對于一門程序語言是非常重要的,數(shù)據(jù)的一個非常重要的特征就是它的類型。PASCAL規(guī)定:程序中出現(xiàn)的變量必須先說明才能使用。二個值,即整理課件整數(shù)類型v包括正整數(shù)(+號可略)、負整數(shù)和零。v1,204在會計統(tǒng)計中是允許的,但在pascal中是非法的。v整數(shù)類型的標識符為integer,取值范圍為:-32768n 32767。v在free pa

11、scal中,允許整數(shù)采用十六進制(前加$)或二進制(前加%)表示。 如 x := %101,相當于 x:=5 ,y:=$10, 相當于y:=16 v整數(shù)的類型:名稱類型標識符數(shù)據(jù)范圍短整型Shortint-128127長整型Longint-21474836482147483647字節(jié)型Byte0255字型Word065535整數(shù)類型Int64-92233720368547758089223372036854775807無符號整數(shù)Qword int64018446744073709551615注意:int64int64不是有序類型。直接給一個不是有序類型。直接給一個 int64int64類型的變

12、量賦值一個超過類型的變量賦值一個超過longintlongint范圍范圍的整數(shù)是非法的,這是因為的整數(shù)是非法的,這是因為free pascalfree pascal在表達式的計算中默認最大類型為在表達式的計算中默認最大類型為longintlongint。整理課件整理課件標識符v標識符是以字母開頭的字母、數(shù)字組合,用來表示常量、變量、類型、文件、函數(shù)、過程或程序的名字。vx,y,max,min,sum,a15,a3b7都是合法的標識符。而v5x,x-y,ex10.5都是非法的標識符。v標識符的長度一般不要超過8個字符。v標識符的選取最好有一定意義,這樣便于記憶,也增加了程序的可讀性。整理課件表達

13、式和運算符 v算術(shù)運算符: + , - , * , /, div(整除), mod(取余)v關(guān)系運算符:=, , , =, , v邏輯運算符:AND,OR,NOTv表達式就是將數(shù)據(jù)和運算符結(jié)合使用,組成一組有意義的運算式。v在PASCAL語言中規(guī)定,表達式按下列運算優(yōu)先規(guī)則計算:1、所有括起來的子表達式必須先計算,且子表達式必須從里到外計算;2、在同一子表達式中的運算符按下列次序計算: 函數(shù);NOT;AND,*,/,DIV,MOD; OR,+,-; ,=,3、在同一個子表達式中,同一優(yōu)先級的運算按從左到右的次序進行。4、MOD運算結(jié)果的符號總是和被除數(shù)相同,而與模無關(guān)。 -15 mod 6 =

14、 -3 -15 mod (-6) = -3 15 mod (-6) =3 整理課件PASCAL程序中的運算優(yōu)先規(guī)則 整理課件常量與變量v常量定義格式: const = ;要求如下:1、要放在程序說明部分。2、必須遵循先定義后使用的原則。3、不允許重復定義,或一次定義多個常量。例如: const a =1; a,b = 10; c = 1 or 2; d := 3;v變量定義格式: var :類型標識符;例如: var a,b :integer; x,y :real; ch :char; t: boolran;但下列說明是非法的:例如: var a,b =integer; ch :char; c

15、h :boolean; a,b后面不能用=,ch不能重復定義。變量一經(jīng)說明,系統(tǒng)就為其分配內(nèi)存。程序中使用該變量時,就要在相應(yīng)的內(nèi)存單元讀寫數(shù)據(jù),稱為對變量的訪問。整理課件整理課件順序結(jié)構(gòu)程序設(shè)計1 1、賦值語句、賦值語句 賦值語句的格式: 變量標識符 : = 表達式; 功能: 賦值語句是先執(zhí)行計算表達式的值,然后賦值給變量標識符。 說明:(1)” := “ 稱為賦值號,不要與 ” = “ 混淆。賦值有方向性,左邊只能是變量,不能是表達式,如 x := 1是非法的。(2)賦值號兩邊的類型必須相同,但是整型表達式可以賦值給實型,反之不成立。(3)一個賦值語句只能給一個變量賦值,變量可以賦值多次,

16、但只保留最后一次的值。(4)被賦值的變量可以作為表達式因子參與運算,如: i:=i+1;是合法的。(5)對變量的賦值是對變量的存入訪問。如d:=a;語句執(zhí)行后,d的變量內(nèi)容就已經(jīng)是a變量的內(nèi)容,但是a變量的值并沒有消失與改變。 在實際編程中,我們經(jīng)常使用a:=a+1;作為計數(shù)器,用s:=s+x;作為累加器,用t:=t*n;作為累乘器。整理課件2、輸入(read、readln)語句輸入語句格式:格式1: read ;格式2: readln ();功能:執(zhí)行該語句時,程序進入等待狀態(tài),等待用戶從鍵盤輸入數(shù)據(jù),輸入的數(shù)據(jù)將依次賦給變量表中的變量,而后程序繼續(xù)執(zhí)行其他語句。說明:(1)變量表中變量超過

17、一個時,中間用逗號隔開。從鍵盤輸入數(shù)據(jù)時,數(shù)據(jù)的個數(shù)不能少于變量個數(shù),否則電腦一直處于等待狀態(tài)。當數(shù)據(jù)多于變量個數(shù)時,對于readln語句將其忽略,對于read語句時,會補下一句read語句讀入,如果沒有輸入語句,也將其忽略。(2)輸入數(shù)值型數(shù)據(jù)時,必須用空格或回車鍵分隔,最后一定要用回車鍵。輸入字符型數(shù)據(jù)時,不能有空格與回車鍵,必須連續(xù)輸入,因為空格與回車鍵也會當作字符。(3)輸入的數(shù)據(jù)必須是常量,且必須與對應(yīng)的變量類型相一致。(4)readln();可以沒有變量名表,此時該語句等待從鍵盤輸入回車鍵。v Readln (x) ; 等價于執(zhí)行了二條語句:read(x); readln();整理

18、課件3、輸出(write 、writeln)語句輸出語句的格式:格式1 write ;格式2 writeln ();功能:按指定的格式將輸出項的內(nèi)容輸出到屏幕上。說明:(1)輸出項如果是多項時,各項間用逗號分隔。(2)輸出項可以是常量、變量、函數(shù)、表達式。常量直接輸出,變量時輸出變量的存儲單元內(nèi)容,遇到函數(shù)與表達式時,先計算、再輸出。(3)write 語句輸完最后一項時,不換行,等待下一條 write語句繼續(xù)輸出。Writeln語句輸完最后一項時換行,該語句允許沒有輸出項,起到換行作用。v writeln(x); 等價于執(zhí)行了write(x); writeln();整理課件例:X:=2; y:

19、=3; writeln(x=,x,y=,y); writeln(x+y=,x+y,x*y=,x*y)輸出結(jié)果為:x=2 y=3x+y=5 x*y=6整理課件自定義場寬(1)單場寬。單場寬。用來控制整型、字符型、布爾型數(shù)據(jù)的輸出格式,不能用于實數(shù)型。 格式:n 說明:n(正整數(shù)) 表示輸出時所占的列數(shù)。單場寬一律右對齊,前用空格。(2)雙場寬。雙場寬。用來控制實數(shù)的輸出格式。 格式: :n1:n2 說明: n1表示輸出總占列數(shù),包括符號位、整數(shù)部分、小數(shù)點和小數(shù)部分;n2表示小數(shù)部分的列數(shù)。 當數(shù)據(jù)突破場寬時,首先保證整數(shù)部分的有效性,小數(shù)部分按n2場寬進行四舍五入顯示,但內(nèi)存中仍是原來的精確度

20、。 單場寬右對齊,雙場寬向小數(shù)點看齊,多余的小數(shù)位數(shù)補零。整理課件例T2_1:交換兩個變量的值。(1)利用中間變量)利用中間變量c,實現(xiàn)交換。,實現(xiàn)交換。Program T2_1_1;Var a,b,c :integer;Begin write(please input a,b=?); read(a,b); write(before:,a=,a,b=,b); c := a; a := b; b := c; writeln (after:,a=,a:8,b=,b:8);End.(2)不用中間變量,也可實現(xiàn)交換。)不用中間變量,也可實現(xiàn)交換。Program T2_1_2;Var a,b :inte

21、ger;Begin write(please input a,b=?); read(a,b); write(before:,a=,a,b=,b); a := a+b; b := a-b; a := a-b; writeln (after:,a=,a:8,b=,b:8);End.整理課件例例T2_2:雞兔同籠問題。已知雞和兔的總頭數(shù)雞兔同籠問題。已知雞和兔的總頭數(shù)是是H,總腿數(shù)為,總腿數(shù)為F,求雞和兔各多少只?,求雞和兔各多少只?分析:設(shè)雞為分析:設(shè)雞為C只,兔為只,兔為R只,則只,則 C+R=H 2*C+4*R=F解得:解得:C=(4*H-F)/2, R=H-C 。程序為:程序為:Progre

22、m T2_2; var h,f,c,r:real; begin readln(h,f); c:=(4*h-f)/2; r:=h-c; writeln(click:,c); writeln(rabbit:,r); end.整理課件例T2_3: 隨機產(chǎn)生一個三位自然數(shù),求其百位、十位、個位上的數(shù)字。分析:要產(chǎn)生隨機數(shù),必然用到隨機函數(shù)。Random是隨機函數(shù)能產(chǎn)生0,1之間的隨機實數(shù)。 隨機產(chǎn)生三位數(shù)的表達式為: trunc(random*900)+100假設(shè)三位數(shù)X,百位數(shù)分另別為A,B,C,則存在如下關(guān)系:A= X DIV 100B= (X-A*100) DIV 10C= X MOD 10程序

23、為:Program T2_3; VAR x,a,b,c:integer; begin randomize; 它的作用是每次運行程序時,random函數(shù)產(chǎn)生不同的隨機數(shù)。起到埋種子作用。 x:=trunc(random*900)+100; writeln(x=,x); a:=x div 100; b:=(x-a*100) div 10; c:=x mod 10; writeln(a:5,b:5,c:5); End. 整理課件例T2_4 已知三角形的兩邊及夾角,求第三邊及面積。數(shù)學建模:設(shè)三角形的兩邊及夾角分別為a,b,第三邊為c,面積為s。則 ,若以角度值輸入,在計算sin和cos時應(yīng)轉(zhuǎn)換為弧度

24、。角度轉(zhuǎn)弧度的公式為:弧度=角度180cos222abbacsin21abs 整理課件例T2_5: 輸入一個字符,求其序號、前導(即前一字符)、后繼(即后一字符)。整理課件例T2_6: 輸入x,y。若在圓環(huán)內(nèi),輸出true,若在圓環(huán)外;輸出false。圓環(huán)如圖所示。討論:如圖所示,若下式1x2+y24成立則在圓環(huán)內(nèi),否則在圓環(huán)外。設(shè)布爾變量bool,當x,y在圓環(huán)內(nèi)時,讓它取值為true,否則取值為false。整理課件作業(yè):vXT1_1 XT1_1 寫一程序讀入三角形的三個邊a,b,c,計算并打印三角形的面積S??衫孟铝泄接嬎?。 其中:vXT1_2 輸入一個三位整數(shù),將它們反向輸出。例如輸

25、入127,輸出應(yīng)為721。)()(cpbpappS)(21cbap整理課件第3課 選擇結(jié)構(gòu)程序設(shè)計 PASCAL中有兩個語句可實現(xiàn)選擇結(jié)構(gòu): IF語句(條件語句)和CASE語句(情況語句) 3.2.1 IF3.2.1 IF語句的兩種形式語句的兩種形式IF語句又稱如果語句(或稱條件語句)。它的一般形式是IF (條件) THEN (語句1) ELSE (語句2) 其中“條件”實際上是一個布爾表達式,它的值可以是真(true)或假(false)。在條件為真時,執(zhí)行語句1,否則(條件為假)執(zhí)行語句2。 可以利用流程圖來描述選擇結(jié)構(gòu)。 在流程圖中用菱形框表示要執(zhí)行的判定,其余步驟用矩形框表示,箭頭表示執(zhí)

26、行的順序。整理課件例L3_1 火車托運行李,要根據(jù)行李的重量按不同標準收費。例如不超過50kg,按每公斤0.35元收費。若超過50kg,則其中50kg按每公斤0.35元收費,其余超過部分按每公斤0.50元收費。現(xiàn)輸入托運行李重量,要求計算并輸出托運費。數(shù)學建模:設(shè)托運行李重量為weight,該問題要求根據(jù)weight是否超過50kg,按不同公式計算出托運費。設(shè)托運費為pay。weight和pay均為實型。下面給出算法。一級算法1、讀入weight的值。2、根據(jù)weight的大小選擇不同的公式計算pay。3、輸出pay。其中第2步需求精。根據(jù)題意,可以寫出計算pay的公式如下:weight50w

27、eight505 . 0)50(35. 05035. 0weightweightpay整理課件除了上面給出的IF語句形式外,PASCAL中還有另外一種IF語句形式。即IF (條件) THEN (語句)在條件為真時,執(zhí)行THEN后的語句。在條件為假時,不執(zhí)行THEN后的語句,在兩種情況下的后繼語句都是IF語句的下一個語句。整理課件例例L3_2L3_2 讀入三個數(shù),找出并打印其中的最大數(shù)。解:PROGRAM L3_2; VAR a,b,c:real; BEGIN write(a=?); read(a); write(b=?); read(b); write(c=?); read(c); IF ab

28、 THEN a:=b; IF ac THEN a:=c; writeln(ZuiDaShu:,a) END.整理課件3.2.2 3.2.2 復合語句復合語句v在IF語句中,跟在THEN或ELSE后的語句可能不止一個,這時要用到復合語句的概念。v復合語句是一個以BEGIN開始,以END結(jié)束的語句。在BEGIN與END之間可以包括若干個語句,每個語句之間以分號分開。一般形式為:BEGINBEGIN (語句(語句1 1);); (語句(語句2 2);); (語句(語句n n)ENDENDv一個復合語句從外部看來,相當于一個語句。整理課件3.2.3 IF語句的嵌套v在IF語句中,THEN或ELSE后的

29、語句本身也可能是IF語句。此時稱為IF語句的嵌套(或稱為復合IF語句)。例如語句 IF(條件1) THEN(語句1) ELSE IF(條件2) THEN(語句2) ELSE(語句3) 就是一個復合IF語句,在它的ELSE后又是一個IF語句。整理課件有時IF語句可能會有兩種不同的理解。 整理課件例L3_3: 有一個函數(shù)表達式為:編寫程序,輸入x,輸出y的值。010001xxxyProgram L3-3; var x:real; y:integer; begin write(please input x=); readln(x);If x0 then y:=1 else y:=0; Writeln

30、(y=,y);End.整理課件3.3 CASE語句 CASE語句是實現(xiàn)選擇結(jié)構(gòu)程序設(shè)計的另一種語句。它的使用有時比IF語句來得簡單、直觀。 CASE語句(或稱情況語句)的一般形式是 CASE (表達式) OF (值表1):(語句1); (值表2):(語句2); (值表n):(語句n); ELSE 語句n+1; END; 在CASE語句頭上的表達式必須是有序類型(整型、字符型、布爾型以及后面要介紹的枚舉型、子界型)。值表是一些由逗號分開的常數(shù)。表達式所有可能的值必須在值表中出現(xiàn),且每個值只能出現(xiàn)一次。 如果當前表達式的值在某個值表i中出現(xiàn),則該程序只執(zhí)行對應(yīng)值表i的語句i,然后執(zhí)行整個CASE語

31、句后的下一語句。 else 可以省略,此時若無表達式的值與之相匹配的常數(shù)表時程序?qū)⑾蛳逻\行并跳出case語句。 整理課件例L3_5 輸入年、月,輸出該月有幾天。v討論:每年的討論:每年的1、3、5、7、8、10、12月,每月月,每月有有31天;天;4、6、9、11月,每月有月,每月有30天;天;2月月閏年有閏年有29天,平年有天,平年有28天。天。v年號能被年號能被4整除,但不整除,但不能被能被100整除,或者年整除,或者年號能被號能被400整除的年均整除的年均是閏年。是閏年。v用用year、month、days分別表示年、月、每月分別表示年、月、每月天數(shù)。它們均為整數(shù)。天數(shù)。它們均為整數(shù)。v

32、閏年的條件可以寫成如閏年的條件可以寫成如下的布爾表達式:下的布爾表達式:v(year MOD 4 = 0) AND (year MOD 100 0) OR (year MOD 400 = 0)Program L3_5; var year,month,days:integer; begin read (year,month); case month of 1,3,5,7,8,10,12: days:=31; 4,6,9,11 : days:=30; 2 : if (year mod 4 =0) and (year mod 1000) or (year mod 400 =0) then days:

33、=29 else days:=28; end; writeln (year,year,month,month:,days:,days);End.整理課件例L3_6 編制程序,根據(jù)輸入的x值,計算y與z并輸出。)5 . 2( 1)5 . 2( 122xxxxy)0(52)0(0)0(32xxxxxz整理課件作業(yè):vXT3_1 對一批貨物征收稅金,價格在對一批貨物征收稅金,價格在1萬元以上的貨萬元以上的貨物征稅物征稅5%,在,在5000元以上,元以上,1萬元以下的貨物征稅萬元以下的貨物征稅3%,在在1000元以上,元以上,5000元以下的貨物征稅元以下的貨物征稅2%,1000元元以下的貨物免稅。編

34、寫一程序,讀入貨物價格,計算以下的貨物免稅。編寫一程序,讀入貨物價格,計算并輸出稅金。并輸出稅金。vXT3_2 輸入某學生成績,若成績在輸入某學生成績,若成績在85分以上,輸出分以上,輸出very good,若成績在,若成績在60分到分到85分之間,輸出分之間,輸出good,若成績低于若成績低于60分,輸出分,輸出no good。vXT3_3 輸入班號,輸入該班學生人數(shù)。應(yīng)用輸入班號,輸入該班學生人數(shù)。應(yīng)用CASE語語句編程序。句編程序。班級201202203204205班額4547424648整理課件第4課 循環(huán)結(jié)構(gòu)v循環(huán)結(jié)構(gòu)(或稱重復結(jié)構(gòu))是程序中的一個基本結(jié)構(gòu),在循環(huán)結(jié)構(gòu)(或稱重復結(jié)構(gòu))

35、是程序中的一個基本結(jié)構(gòu),在解許多問題中是很有用的。我們知道,在許多復雜的問題解許多問題中是很有用的。我們知道,在許多復雜的問題中,常常需要做大量類同的計算處理。盡管計算機的運算中,常常需要做大量類同的計算處理。盡管計算機的運算速度很快,然而要把這些大量類同的計算處理的每一步都速度很快,然而要把這些大量類同的計算處理的每一步都寫成語句,并輸入計算機中,其工作量是相當大的。有時寫成語句,并輸入計算機中,其工作量是相當大的。有時是難以完成的。是難以完成的。v循環(huán)結(jié)構(gòu)程序設(shè)計可以幫助我們有效地解決這一難題。利循環(huán)結(jié)構(gòu)程序設(shè)計可以幫助我們有效地解決這一難題。利用循環(huán)結(jié)構(gòu)程序設(shè)計,使得我們有可能只編寫少量

36、的語句,用循環(huán)結(jié)構(gòu)程序設(shè)計,使得我們有可能只編寫少量的語句,讓計算機重復執(zhí)行它許多次,從而完成大量類同的計算要讓計算機重復執(zhí)行它許多次,從而完成大量類同的計算要求。求。v在在PASCAL中,實現(xiàn)循環(huán)程序設(shè)計的主要語句有中,實現(xiàn)循環(huán)程序設(shè)計的主要語句有FOR語句、語句、WHILE語句和語句和REPEAT語句。語句。整理課件一、FOR語句格式1:(遞增型) FOR x:= TO DO 格式1: (遞減型) FOR x:= downTO DO FOR X:= 1 TO 10 DOFOR X:= A TO Z DO 控制變量控制變量 初值初值 控制變量控制變量終值終值 false true 執(zhí)行語句執(zhí)

37、行語句 控制變量控制變量 succ(控制變量)控制變量) 控制變量控制變量 初值初值 控制變量控制變量終值終值 false true 執(zhí)行語句執(zhí)行語句 控制變量控制變量 pred(控制變量)控制變量)整理課件T4_001 計算1+2+3+10PROGRAM T4_001; VAR s,n:integer; BEGIN s:=0; FOR n:=1 TO 10 DO s:=s+n; writeln(s=,s) END.s=0當n=1 s=s+n=0+1=1;當n=2 s=s+n=1+2=3當n=3 s=s+n=3+3=6當n=4 s=s+n=6+4=10當n=5 s=s+n=10+5=15當n=

38、6 s=s+n=15+6=21當n=7 s=s+n=21+7=28當n=8 s=s+n=28+8=36當n=9 s=s+n=36+9=45當n=10 s=s+n=45+10=55整理課件例T4_002 : 輸入10個任意整數(shù),求它們的和. PROGRAM T4_002; VAR s,n,a:integer; BEGIN s:=0; FOR n:=1 TO 10 DO BEGIN read(a); s:=s+a; END; writeln(s=,s) END.PROGRAM T4_003; VAR n,i,sum:integer; BEGIN read(n); sum:=1; FOR i:=1

39、TO n DO sum:=sum*i; writeln(n!=,sum); END.注意N8,否則會溢出。整理課件例T4_004:任何一個 n3一定可以表示成n個連續(xù)的奇數(shù)和。輸入n(n100),輸出n3對應(yīng)的表達式。數(shù)學題解:設(shè)表達式中的最小奇數(shù)為x;當N=1時,最小奇數(shù)X=1,1個奇數(shù);當N=2時,最小奇數(shù)X=3,2 個奇數(shù);當N=3時,最小奇數(shù)X=7,3 個奇數(shù); N N3 1 1 2 23=8=3+5 3 33=27=7+9+11 4 43=64=13+15+17+19 當 N=K 時,最小奇數(shù) X 前己有 1+2+3+(K-1) 個奇數(shù),則第K個奇數(shù) K*(K-1)X = *2+1=

40、K*(K-1)+1=N*(N-1)+1 2整理課件Program T4_004; var i,n,a:longint 循環(huán)變量,連續(xù)的奇數(shù)個數(shù),當前項,類型循環(huán)變量,連續(xù)的奇數(shù)個數(shù),當前項,類型 為長整型為長整型 begin readln(n); a: = n*(n-1) +1; for i:= 1 to n-1 do begin write(a,+); a:=a+2; end; writrln(a); readln; end 思考題:用數(shù)學方法證明上述定理。整理課件作業(yè):T4_005 輸入10個任意整數(shù),求它們的平均值。T4_006 按正序和反序分別輸出26個英文字母。T4_007 輸入20

41、個整數(shù),輸出其中最大數(shù)。T4_008 輸入20個整數(shù),統(tǒng)計其中正、負和零的個數(shù)。思考題:100.321s求值:整理課件作業(yè)答案:PROGRAM T4_005; VAR ave:real; i,n,sum:integer; BEGIN sum:=0; FOR i:=1 TO 10 DO BEGIN read(n); sum:=sum+n; END; ave:=sum/10; writeln(ave=,ave:6:2) END. PROGRAM T4_006; VAR i:integer; BEGIN writeln(); FOR i:=1 TO 26 DO write(chr(96+i); wr

42、iteln(); FOR i:=122 DOWNTO 97 DO write(chr(i) END.PROGRAM T4_006_1; VAR i:char; BEGIN writeln(); FOR i:=ATO Z DO write(i); writeln(); FOR i:=ZDOWNTO A DO write(i) END.整理課件作業(yè)答案:PROGRAM T4_007; VAR max,i,n:integer; BEGIN read(max); FOR i:=1 TO 19 DO BEGIN read(n); IF max0 THEN Zheng:=Zheng+1 ELSE IF n

43、=0 THEN Ling:=Ling+1 ELSE Fu:=Fu+1; END;FOR writeln(Zheng Shu You: ,Zheng,; Fu Shu You: ,Fu,; Ling You: ,Ling) END.整理課件二、while 語句 (當型循環(huán)) 當循環(huán)次數(shù)未知,例如它依賴于某個布爾表達式的值,而此值在循環(huán)執(zhí)行過程中會改變。這種循環(huán)不可能由FOR語句實現(xiàn),PASCAL為此提供了WHILE語句和REPEAT語句。 WHILE語句的一般形式: WHILE DO 整理課件例例T4_009:求求S=2+6+10+98的值。的值。分析:S為求和累加器,X為當前項,賦初值為2,每

44、次循環(huán)后增加4,取X98為布爾表達式。課堂作業(yè):計算 S=1+2+4+8+128+256的值。整理課件例T4_010:求兩個自然數(shù)的最小公倍數(shù)。分析:先從數(shù)學角度來分析一下,所謂最小公倍數(shù)就是指能被M和N同時整除的最小自然數(shù)。先設(shè)一個變量i,讓它從1開始按自然數(shù)增長,將i與M相乘的結(jié)果存到變量S中,這樣S就是M的公倍數(shù),由于i是從最小開始的,然后再用每一個S除以因子N,若能整除,則S為M和N兩個因子的最小公倍數(shù)。Program T4_010;var n,m,I,s:longint;begin write(請輸入兩個自然數(shù)); readln(m,n); i:=1; s:=m*I; while s

45、 mod n 0 do begin i:=i+1; s:=m*I; end; writrln(s=,s);end.整理課件三、repeat語句(直到型循環(huán))REPEAT語句也用于循環(huán)次數(shù)未知的循環(huán),它的用法與WHILE語句稍有不同。REPEAT語句的一般形式如下:REPEATUNTIL 例 T4_011 計算 (泰勒展開式) 直到最后一項的絕對值小于10-7時停止計算,x由鍵盤輸入。.!7!5!3)sin(753xxxxx整理課件 )2() 1() 1(1ixixttiixt 1; 0; 1sxti整理課件作業(yè):T4_012: 計算 當最后一項的絕對值小于10-6時結(jié)束,打印輸出結(jié)果。T4_0

46、13: 求滿足條件 N! 100000 的最大值N。.1715131s整理課件三種循環(huán)語句的相同點與不同點FORFORWHILEWHILEREPEATREPEAT語句格式語句格式FOR FOR := TO TO DO DO WHILE WHILE DO DO REPEATREPEAT UNTIL UNTIL 循環(huán)變量循環(huán)變量賦值賦值布爾表達式布爾表達式無循環(huán)變量無循環(huán)變量循環(huán)次數(shù)循環(huán)次數(shù)確定,由初值和終值決確定,由初值和終值決定定不確定,由循環(huán)體前的布不確定,由循環(huán)體前的布爾表達式?jīng)Q定,當值爾表達式?jīng)Q定,當值為為“假假”時,結(jié)束循時,結(jié)束循環(huán)。環(huán)??赡芤淮窝h(huán)也沒有可能一次循環(huán)也沒有不確定,由

47、循環(huán)體后的不確定,由循環(huán)體后的布爾表達式?jīng)Q定,布爾表達式?jīng)Q定,當值為當值為“真真”時結(jié)時結(jié)束循環(huán)。束循環(huán)。至少有一次循環(huán)至少有一次循環(huán)循環(huán)體循環(huán)體多語句時,需用多語句時,需用BEGINBEGIN和和ENDEND多語句時,需用多語句時,需用BEGINBEGIN和和ENDEND多語句時,不需用多語句時,不需用BEGINBEGIN和和ENDEND整理課件用計算機解題的基本方法 整理課件第5課 多重循環(huán)v如果一個循環(huán)結(jié)構(gòu)的內(nèi)部(循環(huán)體)又包括一個循環(huán)結(jié)構(gòu),就稱為多重循環(huán)結(jié)構(gòu)。實現(xiàn)多重循環(huán)結(jié)構(gòu)仍可以用前面講的三種循環(huán)語句。因為任一循環(huán)語句的循環(huán)體部分都可以包含另一個循環(huán)語句,這種循環(huán)語句的嵌套為實現(xiàn)多重

48、循環(huán)提供了方便。v多重循環(huán)的嵌套次數(shù)可以是任意的??梢园凑涨短讓哟螖?shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。v在設(shè)計多重循環(huán)時,要特別注意內(nèi)、外循環(huán)之間的關(guān)系,以及各語句安放的位置,不要搞錯。整理課件T5_001 求1100之間的素數(shù)(質(zhì)數(shù)),每行輸出5個素數(shù).i整理課件一級算法:一級算法:FOR i:=2 TO 100 DO BEGIN 1、用、用2到去除到去除i,看看能否除盡,看看能否除盡 2、IF 除不盡除不盡 THEN 輸出素數(shù)輸出素數(shù)i END算法需進一步求精。用變量算法需進一步求精。用變量yn來表示是否除來表示是否除盡。盡。一開始讓一開始

49、讓yn=1,當有一個數(shù)能除盡時,讓,當有一個數(shù)能除盡時,讓yn=0表示能除盡,這時表示能除盡,這時i不是素數(shù);若循不是素數(shù);若循環(huán)結(jié)束時,環(huán)結(jié)束時,yn仍等于仍等于1,表示都除不盡,表示都除不盡,這時這時i是素數(shù)。是素數(shù)。二級求精二級求精 1、用、用2到去除到去除i,看看能否除盡,看看能否除盡 1-1 yn:=1 1-2 WHILE nsqrt(i) DO BEGIN n:=n+1 IF i MOD n=0 THEN yn:=0 END為了每行輸出為了每行輸出5個數(shù),還需增加一個變量個數(shù),還需增加一個變量counter來計數(shù)。來計數(shù)。Program T5_001; var I,n,yn,cou

50、nter:integer; begin writeln();counter:=1; Write(2,); for i:=3 to 100 do begin n:=1;yn:=1; while nsqrt(i) do begin n:=n+1; if I mod n=0 then yn:=0; end; if yn=1 then begin counter:=counter+1; if counter mod 5 =0 then writeln(i) else write (I,); end;if end;forEnd.main整理課件T5_002 驗證哥德巴赫猜想(任何充分大的偶數(shù)都可由兩個素

51、數(shù)之和表示)。將42*s(s1000)中的所有偶數(shù)分別用兩個素數(shù)之和表示。 哥德巴赫猜想是:對任一充分哥德巴赫猜想是:對任一充分大的偶數(shù)大的偶數(shù)even,可以找到兩,可以找到兩個素數(shù)個素數(shù)p、q。使得。使得even=p+q即即1+1問題。問題。此問題還未得到最后的證明。此問題還未得到最后的證明。我們這里只是對有限范圍內(nèi)的我們這里只是對有限范圍內(nèi)的數(shù),用計算機加以驗證,不數(shù),用計算機加以驗證,不算嚴格證明。算嚴格證明。讀入偶數(shù)讀入偶數(shù)even,將它分成,將它分成p和和q,使使even=p+q。p從從2開始(每次加開始(每次加1),),q=even-p。如果。如果p、q均為均為素數(shù),則輸出結(jié)果,否

52、則將素數(shù),則輸出結(jié)果,否則將p加加1再試。再試。整理課件整理課件作業(yè):程序找錯誤(一)整理課件作業(yè):程序找錯誤(二)整理課件作業(yè):程序找錯誤(三)PROGRAM T5_005; VAR ch:char; ZiMu,ShuZi,FuHao:integer; BEGIN ZiMu:=0; ShuZi:=0; FuHao:=0; WHILE ch? BEGIN read(ch);IF (chA) AND (cha) AND (ch=48 AND ord(ch)=57 THEN ShuZi:=ShuZi+1 ELSE FuHao:=FuHao+1; END; writeln(Zi Mu Ge Shu:

53、 ,ZiMu); writeln(Shu Zi Ge Shu: ,ShuZi); writeln(Qi Ta Fu Hao Ge Shu: ,FuHao) END.整理課件T5_003 “百錢買百雞”是我國古代的著名數(shù)學問題,內(nèi)容是3文錢可以買1只公雞,2文錢可以買1只母雞,1 文錢可以買3只小雞。用了100文錢買了100只雞,問有多少只公雞、母雞、小雞?1001003123zyxzyx整理課件第6課 PASCAL語言數(shù)據(jù)類型數(shù)據(jù)類型簡單類型標準類型用戶自定義類型整型實型字符型布爾型枚舉類型子界類型構(gòu)造類型集合類型數(shù)組類型字符串類型記錄類型指針類型文件類型整理課件6.1.1整型的運算整理課件例

54、T6_000: 如果變量A 既能被7整除又能被11整除,寫成PASCAL表達式:(A mod 7=0) and (A mod 11=0)例例 T6_001: T6_001: 求水仙花數(shù)。求水仙花數(shù)。所謂水仙花數(shù),如所謂水仙花數(shù),如ABCABC,如果滿足如果滿足A A3 3+B+B3 3+C+C3 3=ABC=ABC,則,則ABCABC稱為水仙花數(shù)。稱為水仙花數(shù)。 例:例:153=1153=13 3+5+53 3+3+33 3,所,所以以153153就是水仙花數(shù)。就是水仙花數(shù)。分析:此題關(guān)鍵是分解出分析:此題關(guān)鍵是分解出A A、B B、C C a= I div 100 a= I div 100

55、b= I div 10 10 b= I div 10 10* *a a C= I mod 10 C= I mod 10Program T6_001; Var I,a,b,c:longint; begin for I := 100 to 999 do begin a:=I div 100 b:=I div 10- a*10 c:=I mod 10 if i= a*a*a+b*b*b+c*c*c then writeln (is,i) end; end.整理課件6.2: 實型 這幾種實數(shù)類型的使用方法與Real的使用方法類似,必須在程序開始打開編譯開關(guān)$N+,這些類別才能被系統(tǒng)識別。整理課件例T6

56、_2: 求 1/1+1/2+2/3+3/5+5/8+前n項(n50)的和。iibaProgram T6_2; $N+ var I,n :integer; a,b,c,e:extended; begin readln(n); a:=0; b:=1;e:=0; for i:=1 to n do begin c:=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碼(美國標準信息交換代碼(美國標準信息交換代碼)碼)(3)表示方法:)表示方法

57、:一個字符一個字符(4)字符是有序類型,每個字符都對應(yīng)一個)字符是有序類型,每個字符都對應(yīng)一個序號,其中字符序號,其中字符A的序號是的序號是64,字符,字符a的序號是的序號是97。(5)字符類型占內(nèi)存一個字節(jié)。)字符類型占內(nèi)存一個字節(jié)。整理課件6.4:布爾型(1)類型名:)類型名:boolean(2)范圍:只有兩個值)范圍:只有兩個值false和和true(3)是有序數(shù)據(jù):)是有序數(shù)據(jù): false序號是序號是0, true的序的序號是號是1。即。即ord(false)=0, ord(true)=1. 約定:約定:false true。(4)布爾型占內(nèi)存一個字節(jié)。)布爾型占內(nèi)存一個字節(jié)。(5)

58、邏輯運算符:)邏輯運算符:and、or、not運算結(jié)果為運算結(jié)果為布爾型。布爾型。整理課件例T6_3: 填寫數(shù)字:求出 中的數(shù)字,并找印算式。8 0 91整理課件程序:整理課件6.5: 枚舉型(1)格式: type 枚舉類型標識符=(標識符1,標識符2,標識符n); (2) 特點:v枚舉元素只能是標識符,不能是數(shù)值常量或字符常量v同一枚舉元素不能出現(xiàn)在兩個及以上枚舉型定義中v枚舉類型有順序,序列號從0開始 ord(Monday)=0, succ(Friday)=Saturday, pred(Friday)=Thursdayv枚舉類型只能進行賦值和關(guān)系運算v枚舉變量不允許用read或readln

59、語句進行賦值,也不能被write或writeln輸出。 整理課件例T6_4: 有紅、橙、黃、綠、藍5種顔色的小旗,每次取出3種不同顔色表示不同的信號,輸出所有信號的方案及方案總數(shù)。分析:枚舉值的分析:枚舉值的輸入,一般先輸入,一般先輸入序號,通輸入序號,通過過CASE語句語句將枚舉值相應(yīng)將枚舉值相應(yīng)地賦值給枚舉地賦值給枚舉變量;輸出時,變量;輸出時,通過通過CASE語語句判斷枚舉類句判斷枚舉類型變量的值,型變量的值,輸出相應(yīng)的字輸出相應(yīng)的字符串。符串。Program T6_4;Type color =(red,orange,yellow,green,blue);var m,m1,m2,m3:c

60、olor; s,p:integer; begin s:=0; for m1:=red to blue do for m2:=red to blue do if m1m2 then for m3:= red to blue do if (m3m1) and (m3m2) then begin s:=s+1 write (s,:); for P:=1 to 3 do begin case p of 1: m:=m1; 2: m:=m2; 3: m:=m3; end;case pcase m ofred: write(red:8);orange:write(orange:8);yellow:writ

溫馨提示

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

評論

0/150

提交評論