信息學(xué)奧林匹克競賽培訓(xùn)教案_第1頁
信息學(xué)奧林匹克競賽培訓(xùn)教案_第2頁
信息學(xué)奧林匹克競賽培訓(xùn)教案_第3頁
信息學(xué)奧林匹克競賽培訓(xùn)教案_第4頁
信息學(xué)奧林匹克競賽培訓(xùn)教案_第5頁
已閱讀5頁,還剩124頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信息學(xué)奧林匹克競賽培訓(xùn)教案(PASCAL語言)第1章 計算機的發(fā)展及應(yīng)用1.1 計算機發(fā)展簡史 第一臺電子計算機的誕生1946年,世界上第一臺數(shù)字式電子計算機由美國賓夕法尼亞大學(xué)的物理學(xué)家約翰·莫克利(John Mauchly)和工程師普雷斯伯·??颂兀≒resperEckert)領(lǐng)導(dǎo)研制成功,取名為ENIAC(Electronic Numerical Integrator And Calculator)。它可以在1秒進行5000次加減運算,3毫秒便可以進行一次乘法運算,能存儲20個字長為10位的十進制數(shù)。 計算機發(fā)展的幾個階段第一代(19461958)第二代(195819

2、64)第三代(19641975)第四代(1975至今)主要電子器件電子管晶體管中小規(guī)模集成電路大規(guī)模/超大規(guī)模集成電路內(nèi)存汞延遲線磁芯存儲器半導(dǎo)體存儲器半導(dǎo)體存儲器外存儲器穿孔卡片、紙帶磁帶磁帶、磁盤磁盤、光盤等大容量存儲器處理速度(指令數(shù)/秒)幾千條幾百萬條幾千萬條數(shù)億條以上第四代計算機以大規(guī)模集成電路VLSI為計算機的主要功能部件,用16K、64K或集成度更高的半導(dǎo)體存儲器作為主存儲器。新機器要繼承原有機器指令系統(tǒng)中的全部指令,使得同一系列計算機的指令系統(tǒng)越來越復(fù)雜,這些計算機被稱為“復(fù)雜指令系統(tǒng)計算機”,簡稱CISC。日趨龐大的指令系統(tǒng)降低了系統(tǒng)性能,而機器中最常常的是一些簡單指令,這些

3、指令僅占指令系統(tǒng)中指令總數(shù)的20%,1975年提出了精簡指令系統(tǒng),簡稱RISC。馮·諾依曼型計算機是采用存儲程序方式進行工作。研制中的第五代計算機,是一種智能計算機,具有自動識別自然語言、圖形、圖像有能力,具有理解和推理能力,具有知識獲取、知識更新能力。研制朝兩個方向努力:創(chuàng)建非馮·諾依曼式語言,LISP、PROLOG、F.P.;創(chuàng)建以人腦神經(jīng)系統(tǒng)處理信息的原理為基礎(chǔ)的非馮·諾依曼式的計算機模型,生物計算機、光子計算機、量子計算機。1.2 計算機對現(xiàn)代社會的影響 計算機應(yīng)用概述1、科學(xué)計算:利用計算機解決科學(xué)研究和工程技術(shù)中所提出的復(fù)雜的數(shù)學(xué)問題。2、數(shù)據(jù)處理:利

4、用計算機對所獲取的信息進行記錄、整理、加工、存儲和傳輸?shù)取?、人工智能:利用計算機來模仿人類的智力活動。4、自動控制:利用計算機對動態(tài)的過程進行控制、指揮和協(xié)調(diào)。5、計算機輔助設(shè)計和制造:利用計算機來輔助工程師們設(shè)計和制造產(chǎn)品。 由信息高速公路熱引發(fā)的全球信息化浪潮在現(xiàn)代,能源、材料及信息是社會發(fā)展的三大支柱。以蒸汽機為中心的動力革命,使人類的體力勞動大大得到了解放;以電子信息技術(shù)為先導(dǎo)、以計算機和現(xiàn)代通信產(chǎn)業(yè)為代表的信息革命使人類的腦力勞動得到解放。社會發(fā)展到每一階段,都需要有相應(yīng)的基礎(chǔ)設(shè)施作支持。在農(nóng)業(yè)社會,田地是社會的基礎(chǔ)設(shè)施;19世紀(jì)進行的工業(yè)革命時代,很多國家通過建設(shè)高速公路和鐵路等

5、交通運輸方面的基礎(chǔ)設(shè)施取得了經(jīng)濟飛速發(fā)展;而在信息化時代,信息高速公路就自然成為國家重要的基礎(chǔ)設(shè)施。1993年美國國家信息基礎(chǔ)設(shè)施計劃提出了一個具有大容量、高速度的電子數(shù)據(jù)傳遞系統(tǒng)。該系統(tǒng)由通信網(wǎng)絡(luò)、信息設(shè)備、信息資源和信息環(huán)境組成。 我國的“三金”工程1、金橋工程即國家公用經(jīng)濟信息通信網(wǎng)絡(luò)工程,是我國信息化建設(shè)的基礎(chǔ)設(shè)施之一。2、金關(guān)工程是金橋工程的起步工程之一。3、金卡工程即電子貨幣工程,是金融電子化和商業(yè)流通現(xiàn)代化的重要組成部分。語言是交流的工具,人及人交流要用語言,其它動物之間交流也有特定的動物的語言,人及計算機交流就要用到一些符號,這些符號的集合形成了計算機的語言。計算機語言有一個發(fā)

6、展過程,從機器語言開始,然后是匯編語言,現(xiàn)在則使用高級語言.機器語言和匯編語言屬于低級語言,計算機容易懂,但人理解起來困難.高級語言人比較容易理解,因此使得計算機得以普及,當(dāng)然這是指60年代.實際上,隨著應(yīng)用軟件的發(fā)展,現(xiàn)在人們連語言也不用學(xué)了,也可以使用計算機,而且使用的很好.當(dāng)然,高級語言,人雖然容易懂,但計算機又不懂,因此需要翻譯.所以高級語言都提供了編譯系統(tǒng)或解釋系統(tǒng)或集成的開發(fā)系統(tǒng),對高級語言進行翻譯,使得計算機能夠識別并運行程序.高級語言還在發(fā)展,比如面向?qū)ο蟮恼Z言,可視化的語言,網(wǎng)絡(luò)開發(fā)語言等.機器語言和匯編語言也可以稱為低級語言.不要認為有了高級語言,低級語言就可以不用了.恰恰

7、相反,在有些領(lǐng)域,低級語言更有用武之處,如控制領(lǐng)域,電子信息領(lǐng)域.因為這些領(lǐng)域?qū)φZ言運行的速度和效率更感興趣,這正是低級語言的特點.上述語言都稱為形式化的語言,及之相對應(yīng)的是自然語言,也就是人使用的語言.人及計算機之間能否通過自然語言交流呢?這個恐怕很難.因為按照現(xiàn)在計算機的原理,計算機只有執(zhí)行程序才能夠工作,語言就是用于編出程序來,指揮計算機的工作,沒有程序,計算機就不能工作.除非在人及計算機交流時,計算機能把人的語言翻譯成程序,否則,人及計算機之間永遠也不能實現(xiàn)用自然語言進行交流.而目前這是不太可能的.要么就是改變現(xiàn)在計算機的結(jié)構(gòu),改變現(xiàn)在計算機的運行模式,那樣的話,計算機就要真正的實現(xiàn)更

8、新?lián)Q代了.第1課 認識PASCAL語言請參閱全國信息學(xué)奧林匹克聯(lián)賽培訓(xùn)教程(一)P87第5章 程序設(shè)計語言5.1 程序設(shè)計語言基礎(chǔ) 程序設(shè)計語言的組成PASCAL語言是一種高級語言。讓我們先來看一個PASCAL程序,通過這個程序了解PASCAL的規(guī)則。例L1_1已知半徑,求圓周長和面積的程序PROGRAM circle(input,output);(* 第1行:程序首部 *)已知半徑求圓周長和面積(* 第2行:注釋 *) CONST(*第3行:常量說明*)PI=3.14159; VAR(*第5行:變量說明*)r,l,s:real; BEGIN(*第7行:語句部分*)read(r); (*第8行

9、:輸入語句*)l:=2*PI*r; (*第9行:賦值語句*)s:=PI*r*r;write(r,l,s); (*第11行:輸出語句*) END.(*第12行:語句部分以END.結(jié)束*)程序的第一行為程序首部,每個PASCAL程序都必須以PROGRAM 開頭;circle是本程序的名字,每個程序的名字可以不同;圓括號里的內(nèi)容稱為程序的參數(shù),程序參數(shù)指明程序及外部聯(lián)系的文件名,input是標(biāo)準(zhǔn)輸入文件,例如鍵盤打字機,output是標(biāo)準(zhǔn)輸出文件,指屏幕顯示器或打印機,為了讀入數(shù)據(jù)和輸出結(jié)果,必須寫上文件參數(shù)input和output。從第三行到最后一行為程序的分程序。分程序一般由說明部分和語句部分構(gòu)

10、成。說明部分可以包括多種類型的說明。此例包括以CONST開始的常量說明和以VAR開始的變量說明,常量說明必須以CONST開始,變量說明必須以VAR開始。,特別注意其中的小圓點(.)不可缺少。中間是一些用分號分開的語句。一個PASCAL程序由程序首部和分程序組成,分程序通常由說明部分和語句部分組成(在特殊情況下可以沒有說明部分)。PROGRAM circle(input,output); CONSTPI=3.14159; VARr,l,s:real; BEGINread(r);l:=2*PI*r;s:=PI*r*r;write(r,l,s); END.程序首部分程序說明部分語句部分上例的第二行,

11、大括號 中的內(nèi)容,稱為注釋。被小括號及星號(* *)括起來的內(nèi)容也是注釋。注釋除了給人看,以增加程序的可讀性外,對編譯和運行都不起作用,一個程序可以包含多個出現(xiàn)在不同地方的注釋,也可以沒有注釋。程序的書寫格式:1、PROGRAM寫在最左邊頂格;2、注釋的大括號、和CONST、VAR、BEGIN、END等語句上下對齊,且它們比PROGRAM向右移兩個字符;3、各個語句和程序語句也是上下對齊,它們比第2點中的各語句又向右移兩個字符;4、使用大寫字母的語句:PROGRAM、CONST、VAR、BEGIN、END;5、使用大寫字母的標(biāo)識符:常量標(biāo)識符。例 L0_001 輸入三角形底邊和高,求該三角形的

12、面積。寫出程序。第二課PASCAL的數(shù)據(jù)類型、標(biāo)識符、表達式、語句PASCAL的數(shù)據(jù)類型數(shù)據(jù)對于一門程序語言是非常重要的,數(shù)據(jù)的一個非常重要的特征就是它的類型。PASCAL規(guī)定:程序中出現(xiàn)的變量必須先說明才能使用。PASCAL的標(biāo)準(zhǔn)數(shù)據(jù)類型數(shù)據(jù)類型類型標(biāo)識符適用的數(shù)據(jù)舉例實型real有小數(shù)表示法和指數(shù)表示法(科學(xué)表示法)×102=132.67)整型integer包括正、負整數(shù)和零25,-32,0字符型char單個的字符A,b,C,0,4,+布爾型boolean只有現(xiàn)個值,即true(真)和false(假)1、實型(real)實型是最常用的數(shù)據(jù)類型。在PASCAL,實數(shù)有兩種表示方法:

13、小數(shù)表示法和指數(shù)表示法(或稱科學(xué)表示法)。以科學(xué)表示法表示這些數(shù),可以寫成1.25e0,1.3267e+2,0e0,1e2在科學(xué)表示法中,e后的數(shù)字代表10的冪。上列各數(shù)可以解釋成:×100×102×10-3×100=-1.56,0e0=0×100=0.0,1e2=1×1022、整型(integer)整型數(shù)包括正、負整數(shù)和零。例如:25,-32,0。在整數(shù)中不得包括不數(shù)點(.)。3、字符型(char)字符型數(shù)是括在兩個單引號中的一個字符。例如:A,b,C,0,4,+,*,代表空字符代表字符abc不是字符型數(shù),因為單引號中只能有一個字符

14、。所有字符都有一個序號及之對應(yīng)。如0對應(yīng)48,1對應(yīng)49,A對應(yīng)65,B對應(yīng)66。及字符有關(guān)的幾個函數(shù)函數(shù)功能舉例ord()返回及字符對應(yīng)的序號ord(A)=65chr()返回及數(shù)字對應(yīng)的字符chr(65)=Apred()返回前一字符pred(B)=Asucc()返回后一字符succ(A)=B用函數(shù)可取得對應(yīng)的序號,用4、布爾型(boolean)布爾類型的值只有兩個:false(假)和true(真)。且false的序號為0,true的序號為1。用于布爾量的運算有布爾運算(或稱邏輯運算),它們是:AND(及),OR(或),NOT(非),基本運算規(guī)則如下:運算結(jié)果0 AND 0假 AND 假0fa

15、lse假0 AND 1假 AND 真0false假1 AND 0真 AND 假0false假1 AND 1真 AND 真1true真0 OR 0假 OR 假0false假0 OR 1假 OR 真1true真1 OR 0真 OR 假1true真1 OR 1真 OR 真1true真NOT 0NOT 假1true真NOT 1NOT 真0false假例L0-002 寫出下列PASCAL語句的執(zhí)行結(jié)果 A0:=(1>5); A1:=(1<5); writeln(A0 AND A0); writeln(A0 AND A1); writeln(A1 AND A0); writeln(A1 AND

16、 A1); writeln(A0 or A0); writeln(A0 or A1); writeln(A1 or A0); writeln(A1 or A1);標(biāo)識符標(biāo)識符是以字母開頭的字母、數(shù)字組合,用來表示常量、變量、類型、文件、函數(shù)、過程或程序的名字。x,y,max,min,sum,a15,a3b7都是合法的標(biāo)識符。而5x,x-y,ex10.5都是非法的標(biāo)識符。標(biāo)識符的長度一般不要超過8個字符。標(biāo)識符的選取最好有一定意義,這樣便于記憶,也增加了程序的可讀性。表達式和運算符運算符AND,OR,NOT表達式就是將數(shù)據(jù)和運算符結(jié)合使用,組成一組有意義的運算式。在PASCAL語言中規(guī)定,表達式

17、按下列運算優(yōu)先規(guī)則計算:1、所有括起來的子表達式必須先計算,且子表達式必須從里到外計算;2、在同一子表達式中的運算符按下列次序計算:函數(shù);NOT;AND,*,/,DIV,MOD;OR,+,-;<,<=,=,>,>=,<>3、在同一個子表達式中,同一優(yōu)先級的運算按從左到右的次序進行。下面是幾個PASCAL表達式的例子:例L0_003數(shù)學(xué)表達式PASCAL表達式b2-4acb*b-4*a*c(a+b)/(c+d)(a+b)/c+da*b/(c*d)或a*b/c/da2+bx+c常用的函數(shù)詞匯功能abs絕對值sqr平方sqrt開方ord取序號參數(shù)為字符型變量,結(jié)果

18、為該字符的序號(整型)chr取字符參數(shù)為整型變量,結(jié)果為以參數(shù)為序號的字符pred前導(dǎo)字符succ后繼字符odd奇函數(shù),判斷是否為奇數(shù)參數(shù)為整型變量,結(jié)果為布爾型trunc去掉小數(shù)部分,取其整數(shù)round四舍五入,取其整數(shù)exp以e為底的指數(shù)ln以e為底的自然對數(shù)函數(shù)的格式例:開方函數(shù),在PASCAL中可表示為sqrt(2)語句賦值語句(:=)讀語句(read,readln)當(dāng)實型數(shù)據(jù)和字符型數(shù)據(jù)一起讀入時,要先讀字符型數(shù)據(jù)。例如a、b、c為實型變量,ch1、ch2、ch3為字符型變量,可以寫如下語句:read(ch1,ch2,ch3,a,b,c)不能寫成:read(a,b,c,ch1,ch2

19、,ch3)寫語句(write,writeln)write語句是寫語句(或稱輸出語句)。用于將計算結(jié)果通過屏幕或打字機輸出給人看。例如:write(sum,ave)將在屏幕或打字機上輸出sum和ave的值。它的一般形式是write(<輸出表>)其中輸出表是一些由逗號分開的輸出項。例如:write(x,y,x+y,x*y)若x的值為2,y的值為3(整數(shù)類型),則輸出結(jié)果為:2 3 5 6為了標(biāo)記輸出結(jié)果,可輸出相應(yīng)的字符串。例如將上面的語句改為:write(x=,x,y=,y,x+y=,x+y,x*y=,x*y)則輸出結(jié)果為:x=2 y=3 x+y=5 x*y=6顯然,現(xiàn)在的輸出結(jié)果,

20、較前面清楚。為了將輸出結(jié)果打印在不同的行上,可以利用writeln語句。它的作用是在印出輸出表的最后一個輸出項后,結(jié)束當(dāng)前輸出行,使得下一個write(或writeln)語句從下一個新行的開頭(左端)輸出。例如:writeln(x=,x,y=,y);writeln(x+y=,x+y,x*y=,x*y)輸出結(jié)果為:x=2 y=3x+y=5 x*y=6write語句可以輸出實型、整型、字符型、布爾型值,也可以輸出字符串。若在write語句中不加場寬說明,則按標(biāo)準(zhǔn)場寬輸出。在這里,場寬是指輸出值的位數(shù)。數(shù)據(jù)類型場寬實型以科學(xué)表示法輸出,占16位整型12位字符型1位布爾型輸出true或false,分別

21、占5位和4位當(dāng)輸出值不滿規(guī)定場寬時,左面用空格代替。不同計算機系統(tǒng)的標(biāo)準(zhǔn)場寬規(guī)定可能不同。1e+02 13257Afalse布爾型5位整型12位實型16位字符型1位例L2_2 已知三角形的兩邊及夾角,求第三邊及面積。 設(shè)三角形的兩邊及夾角分別為a,b,第三邊為c,面積為s。則 ,若以角度值輸入,在計算sin和cos時應(yīng)轉(zhuǎn)換為弧度。角度轉(zhuǎn)弧度的公式為:弧度=角度×PROGRAM XT2_2; CONST PI=3.14159; VAR a,b,alfa,c,s:real; BEGIN read(a,b,alfa); alfa:=alfa*PI/180; c:=sqrt(a*a+b*b-

22、2*a*b*cos(alfa); s:=1/2*a*b*sin(alfa); write(alfa,c,s); END.例L2_3 輸入一個字符,求其序號、前導(dǎo)(即前一字符)、后繼(即后一字符)。PROGRAM L2_3; VAR ch,pch,sch:char; num:integer; BEGIN writeln; writeln; write('Please input a character:'); readln(ch); write('pch:',pred(ch),',sch:',succ(ch),',num:',ord

23、(ch) END.例L2_4 輸入x,y。若在圓環(huán)內(nèi),輸出true,若在圓環(huán)外,;輸出false。圓環(huán)如圖所示。討論:如圖所示,若下式1x2+y24成立則在圓環(huán)內(nèi),否則在圓環(huán)外。設(shè)布爾變量bool,當(dāng)x,y在圓環(huán)內(nèi)時,讓它取值為true,否則取值為false。xy120“(x,y)若在圓環(huán)內(nèi)”的表達式:(x2+y212)且(x2+y222)PROGRAM L2_4; VAR x,y:real; bool:boolean; BEGIN writeln; write('x=?'); readln(x); write('y=?'); readln(y); bool:=

24、(x*x+y*y>=1) and (x*x+y*y<=4); write(bool); END.習(xí)題XT1_1 判斷下列標(biāo)識符,哪些是合法的?哪些是非法的?x3,3x,a17,p5q,abcd,x2XT1_2 輸入三個數(shù),計算并輸出它們的平均值以及三個數(shù)的乘積,寫出程序。XT1_3 已知地球半徑為6371km,計算并輸出地球的表面積和體積,寫出程序。球表面積計算公式s=4R2 ,球體積計算公式(其中R指球半徑)。XT1_4 已知勻加速運動的初速度為10m/s,加速度為2m/s2,求20s以后的速度,20s內(nèi)走過的路程及平均速度,寫出程序。設(shè)初速度為v0,加速度為a,時間為t,末速度

25、為vt,路程為s,平均速度為vave,求末速度公式:vt=v0+at,路程的公式:,平均速度為vave=XT1_5 讀入攝氏溫度c,將它轉(zhuǎn)換成華氏溫度輸出,寫出程序。轉(zhuǎn)換公式:XT2_1 下列數(shù)據(jù)哪些是整數(shù)?哪些是實數(shù)?哪些是非法的數(shù)?256,2.50,1e+06,2.2e5,e10,-785,e-5,.5,15.,15.0,0.12,0,0.0,25e,XT2_2 確定下列各常數(shù)、表達式的類型和值,表達式類型是指表達式值(結(jié)果)的類型。A,3,3,true,false,12/3,12 DIV 3,5>3,5<3,105 MOD 10,round(17/3,trunc(17/3),

26、sqrt(ord(2)-ord(0),sqr(ord(2)-ord(0),(5>3) AND (5<3),chr(67)XT2_3 將下列數(shù)學(xué)表達式表示成PASCAL表達式(1)-(a2+b2)·y4 (2)sin2(x+0.5)+3cos(2x+4)+tan-1x (3)u0(1+e)(4) (5) (6)(7) (8)|3-exln(1+x)| (9) (10)XT2_4 寫一程序讀入三角形的三個邊a,b,c,計算并打印三角形的面積S??衫孟铝泄接嬎恪F渲蠿T2_5 按下列公式計算和打印y值rh1h2XT2_7圖XT2_6 輸入二次方程的系數(shù)a,b,c(輸入數(shù)據(jù)的

27、選取應(yīng)保證二次方程為實根),計算并輸出二次方程的兩個實根。二次方程為:ax2+bx+c=0XT2_7 求圖形的表面積及體積。其中r,h1,h2的值由鍵盤讀入。,XT2_8 輸入三個字符,然后按輸入字符次序輸出這三個字符,再輸出每個字符的序號,最后按及輸入字符相反的次序輸出這三個字符。XT2_9 由鍵盤輸入兩組x,y值,由程序根據(jù)它們是否在示意圖中的斜線區(qū)域內(nèi),輸出不同的值。若在斜線區(qū)域內(nèi),輸出true,否則輸出false。XT2_10輸入一個三位整數(shù),將它們反向輸出。例如輸入127,輸出應(yīng)為721。XT2_11 輸出你的中文(或英文)名字。每個漢字(或字母用7行5列字符描述。例如王平輸出如圖所

28、示。xy22-2-20XT2_9圖* * * * * * *XT2_11圖第3課 選擇結(jié)構(gòu)程序設(shè)計(20071224)請參閱全國信息學(xué)奧林匹克聯(lián)賽培訓(xùn)教程(一)P101 選擇結(jié)構(gòu)3.1 引言通常,計算機按在程序中書寫的順序執(zhí)行語句。然而,在許多情況下,語句執(zhí)行的順序依賴于輸入數(shù)據(jù)或中間運算結(jié)果。在這種情況下,必須根據(jù)某個變量或表達式的值作出判定,以決定執(zhí)行哪些語句和跳過哪些語句不執(zhí)行。我們稱這種程序結(jié)構(gòu)為選擇結(jié)構(gòu)(或稱判定結(jié)構(gòu))。PASCAL中有兩個語句可實現(xiàn)選擇結(jié)構(gòu):IF語句(條件語句)和CASE語句(情況語句)3.2 IF語句 IF語句的兩種形式條件語句2語句1假真IF語句又稱如果語句(或

29、稱條件語句)。它的一般形式是IF (條件) THEN (語句1) ELSE (語句2)其中“條件”實際上是一個布爾表達式,它的值可以是真(true)或假(false)。在條件為真時,執(zhí)行語句1,否則(條件為假)執(zhí)行語句2。可以利用流程圖來描述選擇結(jié)構(gòu)。在流程圖中用菱形框表示要執(zhí)行的判定,其余步驟用矩形框表示,箭頭表示執(zhí)行的順序。例L3_1 火車托運行李,要根據(jù)行李的重量按不同標(biāo)準(zhǔn)收費。例如不超過50kg,按每公斤0.35元收費。若超過50kg,則其中50kg按每公斤0.35元收費,其余超過部分按每公斤0.50元收費?,F(xiàn)輸入托運行李重量,要求計算并輸出托運費。解:討論:設(shè)托運行李重量為weigh

30、t,該問題要求根據(jù)weight是否超過50kg,按不同公式計算出托運費。設(shè)托運費為pay。weight和pay均為實型。下面給出算法。一級算法1、讀入weight的值。2、根據(jù)weight的大小選擇不同的公式計算pay。3、輸出pay。其中第2步需求精。根據(jù)題意,可以寫出計算pay的公式如下:weight50weight>50二級求精weight50pay=50×+(weight-50) ×pay=weight×假真L3_1圖第2步 計算pay2-1 如果weight502-2 則pay=weight×2-3 否則pay=50×0.35+

31、(weight-50)×以上求精步驟要求首先判斷weight是否小于等于50。如果小于等于50應(yīng)執(zhí)行算法步驟2-2,否則應(yīng)執(zhí)行算法步驟2-3。即算法步驟2-2和2-3不是同時執(zhí)行的,需根據(jù)情況選擇其一執(zhí)行。PROGRAM L3_1; VAR weight,pay:real; BEGIN write('weight='); readln(weight); IF weight<=50 THEN pay:=0.35*weight ELSE pay:=0.35*50+0.5*(weight-50); writeln('pay=',pay) END.除了上

32、面給出的IF語句形式外,PASCAL中還有另外一種IF語句形式。即條件語句1假真IF (條件) THEN (語句)在條件為真時,執(zhí)行THEN后的語句。在條件為假時,不執(zhí)行THEN后的語句,在兩種情況下的后繼語句都是IF語句的下一個語句。例L3_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 a<b THEN a:=b; IF a&l

33、t;c THEN a:=c; writeln('ZuiDaShu:',a) END. 復(fù)合語句在IF語句中,跟在THEN或ELSE后的語句可能不止一個,這時要用到復(fù)合語句的概念。復(fù)合語句是一個以BEGIN開始,以END結(jié)束的語句。在BEGIN及END之間可以包括若干個語句,每個語句之間以分號分開。一般形式為:BEGIN (語句1); (語句2); (語句n)END一個復(fù)合語句從外部看來,相當(dāng)于一個語句。例L3_3 讀兩個數(shù),將大數(shù)存于x,小數(shù)存于y。解:PROGRAM L3_3; VAR x,y,temp:real; BEGIN write('x=?'); re

34、adln(x); write('y=?'); readln(y); IF x<y THEN BEGIN temp:=x; x:=y; y:=temp END; writeln('x=',x:8:2,',y=',y:8:2) END. 復(fù)合IF語句在IF語句中,THEN或ELSE后的語句本身也可能是IF語句。此時稱為IF語句的嵌套(或稱為復(fù)合IF語句)。條件1語句1假真條件2假真語句2語句3例如語句IF(條件1) THEN(語句1) ELSE IF(條件2) THEN(語句2) ELSE(語句3)就是一個復(fù)合IF語句,在它的ELSE后又是一個

35、IF語句。例L3_4 輸入某學(xué)生成績,根據(jù)成績的好壞輸出相應(yīng)評語。如果成績在90分以上,輸出評語:優(yōu)秀(outstanding);如果成績在60到90之間,輸出評語:良好(satisfactory);如果成績不足60分,輸出評語:不及格(unsatisfactory)。有時IF語句可能會有兩種不同的理解。例如語句:IF (條件1) THEN IF (條件2) THEN (語句1) ELSE (語句2)我們可以認為ELSE及后一個THEN配對,其流程圖如圖3_8(1)所示。但是,我們也可以認為ELSE及前一個THEN配對,其流程圖如圖3_8(2)所示。條件1語句1假真條件2假真語句2圖3_8(1

36、)條件1語句1假真條件2假真語句2圖3_8(2)為了避免產(chǎn)生不同的理解,PASCAL系統(tǒng)規(guī)定ELSE總是及同一層前面最靠近它的,還沒有ELSE及之配對的THEN配對。因此,上面的語句肯定是按第一種理解,即ELSE及后一個THEN配對。如果要求按第二種理解執(zhí)行流程圖,可以通過在IF語句中加BEGIN、END的辦法來實現(xiàn)。寫成IF(條件1)THEN BEGINIF(條件2) THEN(語句1) ENDELSE(語句2)3.3 CASE語句CASE語句是實現(xiàn)選擇結(jié)構(gòu)程序設(shè)計的另一種語句。它的使用有時比IF語句來得簡單、直觀。CASE語句(或稱情況語句)的一般形式是CASE (表達式) OF (值表1

37、):(語句1); (值表2):(語句2); (值表n):(語句n)END在CASE語句頭上的表達式必須是有序類型(整型、字符型、布爾型以及后面要介紹的枚舉型、子界型)。值表是一些由逗號分開的常數(shù)。表達式所有可能的值必須在值表中出現(xiàn),且每個值只能出現(xiàn)一次。如果當(dāng)前表達式的值在某個值表i中出現(xiàn),則該程序只執(zhí)行對應(yīng)該值表i的語句,然后執(zhí)行整個CASE語句后的下一語句。例L3_5 輸入年、月,輸出該月有幾天。討論:每年的1、3、5、7、8、10、12月,每月有31天;4、6、9、11月,每月有30天;2月閏年有29天,平年有28天。年號能被4整除,但不能被100整除,或者年號能被400整除的年均是閏年

38、。用year、month、days分別表示年、月、每月天數(shù)。它們均為整數(shù)。閏年的條件可以寫成如下的布爾表達式:(year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0)PROGRAM L3_5; VAR year,month,days:integer; BEGIN write(year=?);readln(year); write(month=?);readln(month);CASE month OF 1,3,5,7,8,10,12:days:=31; 4,6,9,11:day:=30; 2:IF(year MOD

39、 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0) THEN days:=29 ELSE days:=28 END; writeln(year=,year,month=,month,days=days) END.例L3_6 輸入兩個運算量及一個運算符,輸出運算結(jié)果。這相當(dāng)于計算器計算。討論:設(shè)兩個運算量為x和y,一個運算符為oper,運算結(jié)果為result?,F(xiàn)在假定運算符只可能是+、-、*、/,將oper說明為字符型。x、y和result說明為實型。習(xí)題XT3_1 編制程序,根據(jù)輸入的x值,計算y及z并輸出。PROGRAM X

40、T3_1; CONST PI=3.14159; VAR x,y,z:real; BEGIN write('x=?'); read(x); THEN y:=x*x+1 ELSE y:=x*x-1; IF x<0 THEN z:=-PI/2*x+3 ELSE IF x=0 THEN z:=0 ELSE z:=PI/2*x-5; writeln('x=',x:6:2,', y=',y:6:2,', z=',z:6:2) END.XT3_2對一批貨物征收稅金,價格在1萬元以上的貨物征稅5%,在5000元以上,1萬元以下的貨物征稅3%

41、,在1000元以上,5000元以下的貨物征稅2%,1000元以下的貨物免稅。編寫一程序,讀入貨物價格,計算并輸出稅金。XT3_3 輸入某學(xué)生成績,若成績在85分以上,輸出very good,若成績在60分到85分之間,輸出good,若成績低于60分,輸出no good。XT3_4 輸入3個數(shù),將其中最小數(shù)輸出。XT3_5 輸入3個字母,按字母表順序從小到大輸出這3個字母。XT3_6 輸入二次方程的3個系數(shù)a、b、c,計算二次方程的根。程序應(yīng)考慮實根和復(fù)根兩種情形。二次方程如下:ax2+bx+c=0z=lnx+lnysinx+sinye2x+e3xtan(x+y)象限象限象限象限提示:PASCA

42、L不能表示復(fù)數(shù)。若為復(fù)根,應(yīng)分別計算并輸出實、虛部,在輸出時將+、-及i用字符形式輸出。XT3_7輸入x、y,根據(jù)所處象限,用相應(yīng)公式計算z。XT3_8 輸入x、y及象限,計算z。z的計算公式同XT3_7題,要求用CASE語句編程序。XT3_9 輸入班號,輸入該班學(xué)生人數(shù)。應(yīng)用CASE語句編程序。班號919293949596人數(shù)303230303225閱讀學(xué)習(xí)全國信息奧林匹克聯(lián)賽培訓(xùn)教程(一)(信息學(xué)奧林匹克科學(xué)委員會主編,清華大學(xué)出版社)及網(wǎng)上教案,閱讀要求見下表:閱讀內(nèi)容頁 碼要求5.2 Pascal程序的一般結(jié)構(gòu)和輸入輸出語句全國信息奧林匹克聯(lián)賽培訓(xùn)教程(一)P94全看 順序結(jié)構(gòu)全國信息

43、奧林匹克聯(lián)賽培訓(xùn)教程(一)P100全看 選擇結(jié)構(gòu)全國信息奧林匹克聯(lián)賽培訓(xùn)教程(一)P101看1、條件選擇結(jié)構(gòu)P101至P104 運算對象的顯式定義全國信息奧林匹克聯(lián)賽培訓(xùn)教程(一)P116全看 表達式全國信息奧林匹克聯(lián)賽培訓(xùn)教程(一)P120全看 Pascal的簡單類型全國信息奧林匹克聯(lián)賽培訓(xùn)教程(一)P121看1、整型;2、布爾類型;4、字符類型;6、實數(shù)類型CHH信息學(xué)奧賽培訓(xùn)教案(20071127)全看閱讀后完成下面題目1、Pascal程序可以分為三個部分,請將這三個部分的名稱填入下面括號中PROGRAM circle(input,output); CONSTPI=3.14159; VA

44、Rr,l,s:real; BEGINread(r);l:=2*PI*r;s:=PI*r*r;write(r,l,s); END.( )( )( )2、完成下面有關(guān)數(shù)據(jù)類型的表數(shù)據(jù)類型類型標(biāo)識符舉2個例子實型integer字符型boolean3、請將下列實型數(shù)據(jù)用另一種表示法表示小數(shù)表示法科學(xué)表示法小數(shù)表示法科學(xué)表示法1.25e+11e+2-3.05e+13.8e+24、在Pascal中,有六個算術(shù)運算符,它們是_。有六個關(guān)系運算符,它們是_。有三個邏輯運算符,它們是_。5、在Pascal中,各種運算符的運算優(yōu)先規(guī)則如下,請在下面直線上畫一個箭頭表示運算優(yōu)先級由低到高并在直線上面的括號內(nèi)填入優(yōu)先

45、級的高低。優(yōu)先級( )括號()函數(shù)NOTAND*/DIVMODOR+<<=>=><>優(yōu)先級( )6、填出下面Pascal詞匯所屬類別(在“語句、函數(shù)、運算符、數(shù)據(jù)類型、符號”中選擇其一)序號詞匯類別功能序號詞匯類別功能1:=30sqr平方2abs絕對值31sqrt開方3AND邏輯運算符“及”32succ后繼字符4BEGIN分程序開始33THEN條件語句IFTHENELSE的一部分5boolean34TOFOR循環(huán)語句的一部分6CASE分支結(jié)構(gòu)語句35trunc去掉小數(shù)部分,取其整數(shù)7char36VAR說明變量8chr取字符37WHILE循環(huán)語句WHILE9C

46、ONST定義常量38sin10DIV整數(shù)商39cos11DOWHILE DO語句的一部分40arctan12ELSE條件語句IFTHENELSE的一部分41+13END結(jié)束分程序42-14exp以e為底的指數(shù)43*15FORFOR循環(huán)語句44/16GOTO45<17IFIF條件語句46<=18integer47=19ln以e為底的自然對數(shù)48>=20MOD取余,整除后的余數(shù)49>21NOT邏輯運算符“非”50<>22odd奇函數(shù),判斷是否為奇數(shù)51write23OF分支結(jié)構(gòu)語句CASEOF的一部分52writeln24OR邏輯運算符“或”53read25or

47、d取序號54readln26pred前導(dǎo)字符55:27PROGRAM程序首部56'28real57;29round四舍五入,取其整數(shù)2、在第1題例中,語句write及writeln有何不同_。3、在第1題例中,哪些詞屬于保留字_。5、將下列代數(shù)式寫成Pascal的表達式(1)4×(13-4)÷6 (2)a-(m-d)×4÷b+3y=A2(3) (4)6、下列符號中,能作標(biāo)識符的是:AI, Wang, 4D4g, IF, MAX, ABS, PI, SIN, ABS_1, Begin7、寫出以下表達式的值及類型(1)10/2+2重復(fù)控制結(jié)構(gòu)(循環(huán)結(jié)

48、構(gòu))循環(huán)結(jié)構(gòu)(或稱重復(fù)結(jié)構(gòu))是程序中的一個基本結(jié)構(gòu),在解許多問題中是很有用的。我們知道,在許多復(fù)雜的問題中,常常需要做大量類同的計算處理。盡管計算機的運算速度很快,然而要把這些大量類同的計算處理的每一步都寫成語句,并輸入計算機中,其工作量是相當(dāng)大的。有時是難以完成的。循環(huán)結(jié)構(gòu)程序設(shè)計可以幫助我們有效地解決這一難題。利用循環(huán)結(jié)構(gòu)程序設(shè)計,使得我們有可能只編寫少量的語句,讓計算機重復(fù)執(zhí)行它許多次,從而完成大量類同的計算要求。在PASCAL中,實現(xiàn)循環(huán)程序設(shè)計的主要語句有FOR語句、WHILE語句和REPEAT語句。一、FOR語句FOR x:=<初值> TO <終值> DO

49、<語句>FOR X:= 1 TO 10 DOFOR X:=10 DOWNTO 1 DOFOR X:= A TO Z DOFOR X:=Z DOWNTO A DOs=0當(dāng)n=1 s=s+n=0+1=1;當(dāng)n=2 s=s+n=1+2=3當(dāng)n=3 s=s+n=3+3=6當(dāng)n=4 s=s+n=6+4=10當(dāng)n=5 s=s+n=10+5=15當(dāng)n=6 s=s+n=15+6=21當(dāng)n=7 s=s+n=21+7=28當(dāng)n=8 s=s+n=28+8=36當(dāng)n=9 s=s+n=36+9=45當(dāng)n=10 s=s+n=45+10=55T75_001 計算1+2+3+10PROGRAM T75_001; VAR s,n:integer; BEGINs:=0; FOR n:=1 TO 10 DO s:=s+n;writeln(s=,s) END.T75_012計算n!(n!=1×2×3××n)T75_013 輸入10個任意整數(shù),求它們的和PROGRAM T75_001; VAR s,n,a:integer; BEGIN s:=0; FOR n:=1 TO 10 DO BEGIN read(a); s:=s+a; END; writeln(s=,s)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論