




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、中學信息學奧林匹克競賽培訓教程Pascal 語言和程序設計基礎(第一部分)第一部分Pascal 語言和程序設計基礎預備知識基本程序結構和幾個概念: :標識符保留字常量變量運算符表達式標準數據類型Pacal 語言程序結構Program prog_name;var 變量申明;begin程序體 ;end.例如:program pname;const n=4;type arr=array 1.4 of integer;var i:integer; a:arr;beginfor i:=1 to n do read(ai);readln;for i:=n downto 1 do write(ai:4);w
2、riteln; end.以上是一個PASCA解序。從鍵盤讀入 4個數據,逆序輸出。一般來說,一個 PASCA解序包括以下幾個部分:程序頭:program pname; 其中,program是保留字,表示程序從這個地方開始,pname是標識符,是程序的名字,可由程序員自定。保留字是PASCALS定的,具有固定意義和用法的專用單詞或縮 寫,這些單詞不允許作其它使用。如上,“ program”就有“程序從這里開始”這樣一種特別的意義,而“ const ”就有“常量說明從這里開始”的意義。我們不能再用“program”、“const ”來作為其它變量、常量等的名字。標識符是以字母開頭的字母數字串,其長
3、度最大為8 個字符。用來表示常量、變量、類型、文件、過程、函數和程序的名字。如“pname”、“i ”、“ j ”、“ a1”就是合法的標識符;但“ 1a”、“#a”是非法的標識符。有一點要注意的是,在PASCAL中,字母除了作為字符值或字符串值之外,其大小寫是無關的。如標識符“ A1”和“al”在 PASCLAf來是同一標識符。在 PASCAL中除了保留字和自定義的標識符外,還有一類有特殊含義的標識符,這類 標識符稱為標準標識符。它們是用來標記程序中經常引用的處理對象,如常量、函數。(PASCALS義的保留字和標準標識符附后)標識符在命名的時候要注意:1、 名字要易記易讀,有意義。如 8 皇
4、后問題程序名可以是“ queen” 也可以是“ huanghou” 等;2、不能用保留字、標準標識符作為自定義的標識符。說明部分:const n=4;type ar=array 1.4 of integer;var i:integer; a:ar;其中, const 部分是常量說明,說明一些在以下部分用到的,在整個程序執(zhí)行過程不改變值的量。這些量PASCA麻為常量。在程序中用到這個值的地方均用常量名來代替。如上題中定義“n=4”指本程序處理4個數值,在下面的程序體中就用“n”來代替具體的值(如 for i:=1 to n )。如果要改變處理數據個數,則只在常量說明部分修改“n=4”這一句就行了
5、,而不用在程序中每一個用到的地方都加以修改。這樣不但在編寫程序的時候很方便,也增加了程序的可讀性,修改時更方便。常量說明在保留字 “const ”下開始??梢杂卸鄠€語句。常量說明語句的格式是:“常量名=值; 如“n=4;"。n是常量名,4是該常量的值,“;”是語句分隔符。type部分是類型說明,說明一些在以下部分用到的數據類型。如數組、記錄、指針等。類型說明在保留字“ type”下開始。可以有多個語句。類型說明語句的格式是:“類型名=類型說明;"。如"ar=array 1.4 of integer ;"。ar 是類型名,array 1.4 of inte
6、ger 是類型說 明,“;”是語句分隔符。var部分是變量說明。變量是指在程序執(zhí)行過程中可以通過賦值語句或讀語句來改變值的量。 所有在程序中使用的變量都應該先在變量說明部分說明。PASCAL中引用的每個變量都有“名字”和“類型”屬性。變量說明“說明”的主要工作是告訴PASCAF面程序中要用到這個名字的量,同時這個量的類型是什么。變量說明在保留字“ var”下開始。可以有多個語句。變量說明語句的格式是:“變量名:變量類型;其中,如果有多個變量同一類型,則變量名與變量名之間用逗號分隔,變量名與變量類型 之間用冒號分隔。如"i : integer (i是變量名,integer是類型名)、“
7、i、j : integer (i、j 是變量名,integer是類型名)變量說明要注意:1、有效變量名稱不能大于8個字符;2、變量名稱必須以字母開頭;3、在同一個有效范圍內變量名稱必須唯一。各個說明部分均以該部分白保留字開始。如“ const ”開始常量說明;“type ”開始類型說明; “var”開始變量說明。一個程序包含多少種類型的說明,看需要而定,不是每一個程序都必須同 時包含這三種說明。如果程序不須要用到常量,則常量說明部分可以省略;如果不須要用到類型說明,則類型說明可省PASCAL還有一條規(guī)則:先說明后引用。即所有在程序體中用到的“名字”必須都在說明部 分說明過才能引用,否則就會出錯
8、,通不過編譯,也執(zhí)行不了。如上,類型“ ar”先在類型說明中 定義,然后在變量說明中引用;變量 i在變量說明中定義,在程序中引用。 程序體: begin for i:=1 to n do read(ai); readln; for i:=n downto 1 do write(ai:4); writeln; end. 程序體是以begin end.括起來的語句系列?!癳nd”后面是一個小圓點,標識著程序結束, 整個程序只有一個是一個程序的主要部分。編程要完成的工作大部分都在這里完成。程序體中每一語句均以“;”作為結束符。在書寫程序時,以“分層縮進”的風格來寫,以便提高程序的可讀性。 所謂的“分
9、層縮進”是指在邏輯上同一級的語句其起始點對齊,下一級的語句向右縮進。 運算符 表達式 PASCAL中的運算符有算術運算符和關系運算符。和我們在數學課中學的基本一樣但在寫法上有些 不同,在寫程序時要特別注意寫法的不同:+加號;-減號;*乘號(數學中寫為 x ) ;/除號(數學中寫為 +);MOD 取余 如: 8 MOD2=0,7 MOD2=1,2 MOD3=2; DIV 取整 如:8 DIV 2=4, 7 DIV 2=3, 2 DIV 3=0。在 PASCAL 只有上面6種數學運算。其它的就只能利用這 6種運算的組合通過語句來實現。如a/(a的平方)可以化成a*a。大于; 小于; 不等于(數學中
10、寫為 手);二小于等于(數學中寫為& ); 二大于等 于(數學中寫為 ), 變量、常量通過運算符連接起來的式子我們稱為表達式。一個單獨的變量或常量也是表達式。如a、a+3、a*3+b都是表達式。寫表達式時要注意PASCA成達式跟我們已經熟悉的數學表達式在格式上的區(qū)別:數學表達式PASCAL達式注思2a2*a*號不能省略a+ ba/b除號的寫法aw ba<>b不等號的寫法a< ba<=b小于等于號的寫法標準數據類型:整型實型 字符型 布爾型數據類型可以理解為一個取值范圍和定義在這取值范圍上的運算規(guī)則。想一想我們對于數的理解:小學學自然數,范圍是從0開始,那時候不知
11、道有小數,也不知道有負數,允許的運算是+、-、X、+,而且對于減法規(guī)定被減數要大于減數。到了中學,數的范圍擴大了,整數包括正數和負數,減法運算也不再有額外的規(guī)定的了。同理,在PASCAL “數據類型”也是一個取值范圍和在它上面定義的運算規(guī)則。PASCA"定義好的標準數據類型一共有4個:整型、實型、字符型、布爾型,分別用保留字 integer、real、char、boolean來標記它們。其取值范圍和運算如下:整型(integer):范圍 -32768 32767;運算 +-*/ mod div實型(real):范圍 運算 +-*/字符型(char):范圍可顯示的ASCII字符布爾型(
12、boolean):范圍 true false 運算 and or not 在PASCA葉可使用的基本符號有:(1)大寫字母 A-Z ;小寫字母a-z;數字09(2)其它字符 +*/=><>=<=<>:=().,:'$A (* ) 其中,有些符號是以雙字符作為一個整體,拆開后就失去原有的意義。如“<>”是一個表示“不等于”的關系運算符,如拆開后就變成了兩個關系運算符,分別表示“小于”、“大于”。PASCAK用的保留字有:AND、ARRAY BEGIN CASE CONSTDIV、DO DOWNT CELSE END FILE、FOR FUN
13、CTION GOTO、 IF、IN、LABEL MOD NIL、NOT OR PACKED PROCEDURE3ROGRAMRECORDREPEAT SE不 THEN TQ TYPE UNTIL、VAR WHILE WITH FORWARD 常用的標準標識符有:標準常量:FALSE TRUE MAXINT MAXLONGINT標準類型:INTEGER BOOLEAN REAL CHAR TEXT標準文件:INPUT OUTPUTEXP LN ODDSQR SQRT SUCC TRUNCPUT READ UNPACK WRITE WRITELN標準函數:ABS ACTAN CHR COS EOF
14、 ELON ORD PRED ROUND SIN標準過程:ASSIGN GET NEW DISPOSE PACK READLN RESET REWRITE函數格式:function fun_name( 參數表):數據類型;var變量聲明;begin函數體;end;例題:寫出計算兩個整數a,b的和函數add(a,b)。過程格式:procedure proc_name( 參數表);var變量聲明;begin過程體;end;例題:寫出在屏幕打印一行文字:" hello,Pascal language is very easy!函數和過程的調用:例題:從鍵盤輸入:a,b兩個數,輸出由這兩個數
15、為直角邊的三角形的面積。xoi00_01.pas program xoi00_01;function area(const a,b:real):real;var s:real;begin s:=a*b/2.0;area:=s;end;procedure myproc;var a,b:real;s:real;beginwrite('Please input two number a,b:');readln(a,b);s:=area(a,b);writeln('the area of trian is: ',s:5:2);end;= main program =be
16、gin myproc;end.練習:一、判斷以下標識符的合法性:a3 3a a17 abcd ex9.5 a 3 入二、將下列的數學表達式改寫成PASCA豪達式:bA2-4ac三、求下列表達式的值:20 mod19, 一五 mod 9, 7 div 8 , 19 div 3, (4>5) and (7<8) , (8>9) or ( 9<10) , 2 and (3=3) or (3<7)節(jié)順序結構順序結構是程序設計中最簡單的結構,也是最基本的結構, 它就是按照程序書寫的順序逐句執(zhí)行程序中的指令。流程圖如下:I 例題:計算圓的周長的過程:I 輸入圓的半徑;(操作一
17、)計算圓的周長;(操作二)工 輸出圓的周長;(操作三)操作基本的程序語句:3賦值語句:賦值語句是最簡單的語句,其一般形式為:<變量>:=< 表達式>;“尸”稱為賦值號,賦值語句的作用是計算表達式的值,并賦給變量。對于任何一個變量必須首先賦值,然后才能引用,否則,未賦初值的變量將以一個隨機值參與運算。另外,賦值號兩邊的 類型必須相同,但表達式值為整數時,它可自動化為實型后賦給該實型變量,即符合賦值相容。如:Pi:=3.14;R:=2;Age:=20;S:=Pi*R*R例:關于賦值的例子prssogram example;var a,b:integer; begina:=3
18、;b:=2;a:=a+b;writeln(a);writeln(b);end.輸入語句通過計算機的外設把數據送到計算機內存的過程稱為輸入。Turbo Pascal 語言的輸入語句有如下兩種形式:read( 變量名表 );readln( 變量名表);變量名表是一個或幾個由逗號隔開的變量標識符,他們必須在程序說明部分預先說明,他們可以是整型、實型或字符型,布爾型不可以直接讀入。例如a, b, c 為整型變量,read(a,b,c) 之后,鍵盤輸入:20 30 40 CR(CR 表示回車) ,結果:a=20, b=30, c=40readln 語句和 read 語句不同之處在于輸入數據到各變量之后,
19、readln 自動換行,從下一行開始再輸入數據。一個read 語句執(zhí)行完后,數據行中多余的未讀數據可以被下一個輸入語句讀入;而一個 readln 于執(zhí)行完后,數據行中多余未讀數據就沒有用了。readln 語句中可以不包含變量名表。即有以下等價情況:read(a,b);readln 等價于 readln(a,b)輸入語句輸入的數據類型必須和變量一一對應。如果輸入的是一串整數或實數,數據間用空格或回車分隔;若輸入的是一串字符,則不用分隔。輸出語句輸出是將內存中的數據送到外設的過程。Turbo Pascal 的輸出語句有兩種形式:write( 輸出項表);writeln( 輸出項表);其中 輸出項表
20、是一串用逗號分隔的常量、變量、函數名、表達式或字符串。如果是變量、函數名、表達式,則將其計算結果輸出;如果是常量或字符串,則直接輸出其值。write 和 writeln 的區(qū)別在于:write 語句是輸出項輸出后,不換行,光標停留在最后一項后,writeln 語句按項輸出后,自動換行,光標則停留在下一行的開始位置。writeln 語句允許不含有輸出項,即僅writeln; 表示換行。Turbo Pascal 語言把輸出項的數據顯示占用的寬度稱為域寬,你可以根據輸出格式的要求在輸出語句中自動定義每個輸出項的寬度。定義寬度時分為單域寬和雙域寬。單域寬輸出格式:writeln(I : n);在 n
21、個字符寬的輸出域上按右對齊方式輸出I 的值, 若 n 大于 I 的實際位數,則在 I 值前面補(n-I的實際位數)個空格。若I的實際位數大于n,則自動突破限制。n必須是整數。雙域寬輸出格式:writeln(a : n: m);雙域寬主要用于實型數據的輸出。n 的用法同上。在n 個字符寬的輸出域上按右隊齊方式用小數點形式輸出a的數值,m是小數點后的位數。原來的數據按該該格式指定的小數位數四舍五入。若m=0 ,則不輸出小數部分和小數點,原數據四舍五入取整。n, m必須是整數。例:輸出語句的例子program shuchu;const s='pascal'var i:integer;
22、r:real;c:char;b:boolean; begini:=12345;r:=123.45c:='a'b:=true;writeln('i=');writeln(i:6);writeln('r=',r,r:6:1);writeln('c=',c,c:10);writeln('b=',b,b:10)end.復合語句復合語句是由若干語句組成的序列,語句之間用分號“ 隔開,并且以begin和end括起來, 作為一條語句。復合語句的一般形式:begin語句1;語句2;語句 n;end;例:變量值的交換program
23、swap;var a,b,t:integer;begina:=10;b:=20;begint:=a;a:=b;b:=t;end;writeln('a=',a,'b=',b)end.例題 1 :輸入圓的半徑,求出圓的周長和面積:Progam CalCircle;var R,C,S:Real; 變量聲明beginwrite( 輸入圓的半徑 : );readln(R);C:=2*Pi*R;write( 周長= ,C);readln;S:=Pi*sqr(R);sqr(R)=R*Rwrite( 面積= ,S);readln;end.例題 2:找出下面程序中的語法錯誤。Pr
24、ogram Example1;計算圓環(huán)面積的程序,R2表示外圓環(huán)的半徑,R1表示內圓環(huán)的半徑,R2>R1 var R1,R2:Real;beginS=(R2+R1)*(R2-R1)*PiPi=3.14 為常數 writeln(s)end;糾正以后的程序Program Example1;計算圓環(huán)面積的程序,R2表示外圓環(huán)的半徑,R1表示內圓環(huán)的半徑,R2>R1var R1,R2:real;S:real;每一個變量都必須聲明beginS=(R2+R1)*(R2-R1)*Pi; Pi=3.14為常數writeln(s);語句必須以";"結束end. 主程序必須以“.”
25、結尾 練習:編寫程序實現以下功能:1、輸入三角形三邊的長,計算三角形的面積。 計算公式:s . p(pa)(pb)(pc)a b cPascal程序中計算平方根的函數為: 基本要求:有友好的輸入輸出界面, 據符合要求。sqrt(x);x:real; x0不需要考慮輸入的a,b,c是否可以構成三角形,假設輸入的數第二節(jié)IF分支結構例題:輸入一個考試分數,如果大于等于60就說恭喜你考試 及格,如果小于60就說真差勁,要努力哦!program JudgeScore;輸入分數一 score;如果Score 60那么輸出“恭喜你考試及格”否則輸出“真差勁,要努力哦”“如果那么”形式的判斷在 Pascal
26、中使用If語句來實現。IF語句是由一個布爾表達式和兩 個供選擇的操作序列組成。運行時根據布爾表達式求值結果,選取其中之一的操作序列執(zhí)行。有兩種形式的IF語句:if布爾表達式 then 語句;if布爾表達式 then 語句1else 語句 2;當布爾表達式的值為真,則執(zhí)行then后面的語句,值為假時有兩種情況:要么什么也不做,要么執(zhí)行else后面的語句。注意else前面沒有分號,因為分號是兩個語句之間的分隔符,而else并非語句。如果在該處添了分號,則在編譯的時候就會認為if語句到此結束,而把 else當作另一句的開頭,輸出出錯信息。 前面例題的Pascal程序代碼:Program JudgeS
27、core;var score:real;聲明分數變量 scorebeginreadln(score); 輸入分數if score>=60 thenbegin score 代表分數的變量writeln('恭喜你,考試及格!');end else beginwriteln('真差勁,要努力哦!');end; end if score>=60end.例:求 y=f(x),當 x>0 時,y=1 ,當 x=0 時,y=0,當 x<0 時,y=-1 program lianxi;var x,y:real;beginif x>0 then y:
28、=1;if x=0 then y:=0;if x<0 then y:=-1;writeln('y=',y); end.在Turbo Pascal語言if語句中被構造的語句只能是一條語句,當條件選擇某個分支的計算要 用多個語句描述時,就必須把該分支用begin和end括來,寫成復合語句。在用 if語句連續(xù)嵌套例:當x>0時候,計算x*x ,并且輸出x和x*x。program lianxi;var x,x1:real;時,如果你插入適量的復合語句,有利于程序的閱讀和理解。beginreadln('x=',x);if x>= thenbeginx1:
29、=x*x;writeln('x*x=',x1);writeln('x=',x);end;end.當if 語句嵌套時,Turbo Pascal 約定 else總是和最近的一個if配對。前面介紹if判斷語句的使用方法。了 If語句的使用情況,下面來概括 分支結構的基本情況: if 條件成立thenbegin處理;end;下一語句;if 條件成立thenbegin操彳B;end else if條件不成立then begin操彳A;end;下一語句;練習:寫出下列關系表達式和邏輯表達式的Pascal語句:1、區(qū)分合格和不合格:x >= 602、60 分到 70 分
30、之間:(x >= 60 ) and ( x <=70 )3、判別閏年的條件(年份能被4整除,并且不能被100整除;或者能被400整除的整數年份):(y mod 4 = 0) and(y mod 100 <> 0 ) or (y mod 400 = 0 )編寫程序實現下列功能:1、從鍵盤讀入一個數,判斷它的正負。是正數,則輸出 "+”,是負數,則輸出"-"2、輸入a,b,c三個不同的數,將它們按由小到大的順序輸出3、鐵路托運行李規(guī)定:行李重不超過50公斤的,托運費按每公斤0. 一五元計費;如超 50公斤,超過部分每公斤加收 0.10元。編一程
31、序完成自動計費工作。4、打印某年某月有多少天。(提示:A、閏年的計算方法:年數能被4整除,并且不能被100整除;或者能被400整除的整數年份。 日利用MOD!算可以判斷一個數能否被另一個數整除)5、從鍵盤輸入3個數a,b,c輸出其中最大的數。第三節(jié)Case分支結構case語句是由一個表達式和眾多可選擇的操作序列組成。運行時,根據表達式的求值結果,在眾多的分支中選取一個分支執(zhí)行。其形式為:case 表達式 of常量1:語句1;常量2:語句2;常量n:語句n;else 語句n+1;可選項end;表達式只能是順序類型(除了實型以外的簡單類型),其值必須是唯一確定并且和表達式類型相同。case語句執(zhí)行
32、和表達式值相匹配的case常數所指向的那條語句,如果沒有相匹配的值,則執(zhí)行 else部分(如果有的話)或者什么也不做。在else前面的語句末尾有分號,這是和 if語句不同的。Case表達式的應用:例題:輸入一個考試分數(整數),根據分數情況報告相應的信息。0 x 60不及格60 x 90及格90 x 100優(yōu)秀要求:假設輸入的分數為0,100之間的整數。Program JudgeScore2;var x:real;beginread(x);輸入一個分數case x of0.59: 0 x 60writeln('不及格';60.1. 9: 60 x 90writeln('
33、及格);60.2. 00; 90 x 100writeln('優(yōu)秀);elsewriteln('錯誤的分數);end;case x ofend.例:根據學生的成績給予相應的等級,對應關系如下: 0100A 08 9B 07 9C6 0以下Dprogram chengji;var s:real;ch:char;beginwrite('input the score: ');readln(s);if(s>=0)and(s<=100)then case s div 10 of 10,9:ch:='A' 8:ch:='B'7,
34、6:='C'else ch:='D'end;writeln(s,'-',ch);end.練習:1 、 我 們 把 字 母 作 如 下 的 分 類 : 大 寫 字 母 : A . Z ; 小 寫 字 母 : a . z; 數字:0 . 9;其他字母,編寫一個程序,根據上述分類的方法,輸入一個字母,報告該字母所屬的類型。2、某超市為了促銷,規(guī)定:購物不足50 元的按原價付款,超過50 不足 100 的按九折付款,超過 100 元的,超過部分按八折付款。編一程序完成超市的自動計費的工作。第四節(jié) for 循環(huán)結構程序設計時我們經常要做一些重復的任務通過反
35、復的執(zhí)行某一個動作來完成任務,編寫這一類程序我們使用循環(huán)結構來實現。如計算1+2+3+-.+100。Pascal中循環(huán)結構通過使用For、While、Repeat 三種語句來實現。For 語句是形式最簡單的循環(huán)語句。Ni例題1:輸入正整數N,計算i iNi分析:=1+2+3+-+N,因此我們必需重復的執(zhí)行S:=S+i ,其中S代表和,S=1i=1S=1+2i=2S=1+2+3i=3S=1+2+3+4i=4S=1+2+3+4+- +N i=Ni從1變化到N,計算前I項的和:1+2+3+-+I ,寫成 Pascal代碼如下:For i:=1 to N DO S:=S+i;i 從 1 變化到 N 重
36、復執(zhí)行 S:=S+i完整的程序如下:Program Example1_4VarN,I,S:integer;BeginWrite( 輸入正整數 N: );Readln(N);S:=0;For I:=0 to n do S:=S+I;Writeln( ' 1+2+3+' ,n, ' =' ,s);End.輸入正整鼓1l2t3frrdOD = 5O5IJOR循環(huán)有兩種形式:升序形式:for 控制變量 := 初值 to 終值 do 語句降序形式:for 控制變量 :=初值downto 終值do 語句 for語句功能描述:雖然for循環(huán)形式簡單,但是執(zhí)行的機制卻很復雜。其
37、基本過程如下:1 .計算初值并記憶2 .判斷初值是否超出終值、如果超過則執(zhí)行步驟7,否則執(zhí)行步驟33 .把初值賦給控制變量4 .執(zhí)行do后面的語句(循環(huán)體)5 .判斷控制變量的值是否達道終值,如果是則執(zhí)行 步驟6,否則執(zhí)行步驟76 .控制變量取下一個值(升序取后繼,降序取前驅)7 .(循環(huán)Z束)執(zhí)行下一語句.例題:編寫程序輸出序號從32到126的ASCII字符與對應代碼之間的對應關系。每行輸出5個字符,輸出結果如下如所示。(Example4_2)3233 !3435it36 537%ae a39 '40(41 )*2 *43 *的,45-46 .V /。049 150251 352 1
38、53 55”由55156 857 95S :59 ;60<=62 >63 ?64 «G5A66 BG C仙069 E7(1r71 G12 H73 IIk J7SK76 L11 M7B N7y U00PS1 Q*2 R83 S84 I85UU37 MMK8? 丫9。z?1 92 153 12596 .9S bJy c100d101 e102 f1013 g104 h1D5i1D6 j107 k10IS 1109 n110n111 112 p113 q1U rIISs1U t117 u116 v11? V120X121 y122 2123 (124 !125)1駕一progr
39、am example4_2;var i, j: byte;beginfor i := 32 to 126 dobeginif (j mod 5 = 0) then writeln;write(i: 5, chr(i): 2);j := j + 1;end;end.程序說明:用于控制換行,每行寫5個字符的對應關系。語句 write(i:5, chr(i): 2);用于格式化輸出結果。標準函數chr(i)可以得到代碼為i的字符。j mod 5 求 j 模 5 的余數。語句 if (j mod5 = 0) then writeln;編程完成下列計算:N21)n 1N 22_2i212 221、 i
40、11 11 .2、 2 33、把數碼1, 2, 3, 4,,9分成3組,每組構成一個 3位數,使這3個3位數恰好成1 : 2: 3,該怎樣分?求出所有的解答來。(如:192, 384, 576就是一組解答)4、求出所有的三位數 xyz,它除以11所得余數等于它的三個數字的平方和。第五節(jié)while、repeat循環(huán)結構While語句是另外一種實現循環(huán)的語句,一般形式如下:While 條件 do 語句While 循環(huán)的執(zhí)行過程如下:1. 判斷條件是否成立,條件成立時執(zhí)行步驟2, 否則執(zhí)行步驟42. 執(zhí)行 do 后面的語句(循環(huán)體)3. 返回步驟14. 結束循環(huán),執(zhí)行下一語句注意:一定要有使條件取假
41、(False) 的時候,否則會出現死循環(huán)。例題:從鍵盤輸入一批學生考試數據,統(tǒng)計這些數據中大于80 的數的個數。分析: 因為學生的人數沒有確定,因此不方便用for 循環(huán)來完成此項工作,但是用 while 循環(huán)比較容易實現。(example4_3)while score>=0 do輸入一個學生成績-score;計算總分;Pascal 代碼:while score >= 0 do beginreadln(score);total := total + score;end;完整的程序代碼: program example4_3;varscore: integer;total: integ
42、er;c: char;beginwriteln(' 輸入學生分數:');readln(score);total:=0;while score >= 0 do beginreadln(score);total := total + score;end;writeln(' 總分為:',total);read(c); end.Repeat 語句與 while 語句基本類類似,只是 while 先判斷條件,reapeat 語句先執(zhí)行循環(huán)體然后再判斷。 Repeat< 語句 > 循環(huán)體部分Until < 條件 > 循環(huán)結束條件執(zhí)行過程如下:1
43、. 執(zhí)行循環(huán)體2. 判斷條件,如果布滿足重復1, 否則 執(zhí)行步驟33. 結束循環(huán),執(zhí)行下一語句例題:改寫Example4_3 程序使用Repeat 循環(huán)語句實現。(Example4_4)program example4_4; varscore: integer;total: integer;c: char;beginwriteln('輸入學生分數:);total := 0;repeatreadln(score);total := total + score;until score < 0;writeln('總分為:',total);read(c);end.練習:1
44、、計算下列式子的值:(1) 1+3+5+ +99(2) 1+2+4+8+ +128+256+512+1024(3) 1+(1+2)+(1+2+3)+ +(1+2+3+4+N)2 3 5 8 13 212、有一分數序列:2,2,3,5, 8 ,13,求出這個數列的前20項的和。333-. 一,3、求水仙花數。所謂水仙花數,是指一個三位數abc,如果滿足a b c abc,則abc是水仙花數。4、輸入一個整數,計算它各位上數字的和。(注意:是任意位的整數)5、輸入一整數A,判斷它是否質數。(提示:若從2到A的平方根的范圍內,沒有一個數能整除 A,則A是質數。)6、求兩個數的最小公倍數和最大公約數。
45、(提示:公約數一定小于等于兩數中的小數,且能整除兩數中的大數。公倍數一定大于等于兩數中的大數,且是大數的倍數,又能給兩數中的小數整 除。)7、編寫一個譯碼程序,把一個英語句子譯成數字代碼。譯碼規(guī)則是以數字1代替字母A,數字2代替字母B,,26代替字母Z,如遇空格則打印一個星號'*',英文句子以.結束。8、“百錢買百雞”是我國古代的著名數學題。題目這樣描述:3文錢可以買1只公雞,2文錢可以買一只母雞,1文錢可以買3只小雞。用100文錢買100只雞,那么各有公雞、母雞、小雞 多少只?與之相似,有"雞兔同籠"問題。9、輸入一個正整數 N把它分解成質因子相乘的形式。
46、如:36=1X2X2X3X3; 19=1 X 19 (提示:設因子為I ,從2開始到N,讓N重復被I除,如果能整除,則用商取代N, I為一個因子;如果不能整除,再將I增大,繼續(xù)以上操作,直到 I等于N。)64 7n 4810、 編程實現:求sn a aa aaaaaaaaa之值,其中a是一個數字。例如:2 22 222 2222 22222 (當 n=5 時),n 由鍵盤輸入。11、 一個數如果恰好等于它的因子之和,這個數就稱為“完數” 。例如:6的因子為1、2、3,而6= 1 + 2+3,因此6是“完數”。編程序找出1000以內的所有完數。aX bY c12、 編一程序,輸入a, b, c,
47、 d, e, f ,然后解出方程組 dX eY f的解。第六節(jié)數據類型簡單數據類型Pascal 語言基本數據類型由:integer(longint,shortint,byte),real,char,Boolean.等構成。自定義數據類型:我們可以 在基本數據類型的基礎上定義新的數據類型,類型定義的保留字為 “Type”,格式為:TYPE< 類型標識符>=<數據類型>如:TypeMyLong=Longint;枚舉類型:“枚舉”的意思就是把所需要的對象都一個一個的列舉出來。比方說星期是一個只有 7 個元素的數據,因此我們可以定義一種數據類型TWeekDay弋表星期,如果一個
48、變量定義為TWeekDa港型,那么他的取值范圍就是Sunday.Saturday ,另外顏色TColor 也一樣。習慣上我們在自定義類型名稱前加上“ V,如TColor,TWeekDay ,而且單詞以大寫字母開始。TypeTWeekDay=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);TColor=(Red,Yellow,Blue,Green.Purple,White,Black);枚舉變量的第一個代表0,第二個 代表1,以此類推,如上面定義的 TweekDay類型,Sunday=0,Monday=1,,Saturday=
49、6 。例題:輸入今天的日期數字:0=Sunday, 1= Monday,6= Saturday ,輸出明天的日期,用英文單詞表示?!?xoi00_02.pas 】program xoi00_02;Type TWeekDay=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);var today,tomorrow:TWeekDay;number,i:integer;beginwrite('Enter today number:');readln(number);if (number<0) or (number
50、>6) thenwriteln('Error number')else begintoday:=Sunday;for i:=0 to number-1 do today:=succ(today);if today=Saturday then tomorrow:=Saturdayelsetomorrow:=succ(today);write('Tomorrow is:');case tomorrow ofSunday:writeln('Sunday');Monday:writeln('Monday');Thursday:wri
51、teln('Thusday');Wednesday:writeln('Wednesday');Thursday:writeln('Thursday');Friday:writeln('Friday');Saturday:writeln('Saturday');end;if today=saturday then end;if (number<0) or (number >6)end.子界類型:子界類型是在其它的離散類型的值域中取出一部分構成獨立的類型。子界類型的一般定義形式如下:TYPE<子界類型
52、標識符>=<下界常量>.< 上界常量>如: TYPE Tmonth=1.12;TYPE Tscore=0.100;例 按月、日、年順序讀入一日期,輸出該日期是這一年中的第幾天。program date;var year:0.2010;month,i:1.12;day:1.31;dayth:integer;beginread(month,day,year);dyath:=0;for i:=1 to month-1 docase i of1,3,5,7,8,10,12:dayth:=dayth+31;2:if (year mod 4=0)and(year mod 10
53、0<>0)or(year mod 400 =0)then dayth:=dayth+29else dayth=:=dayth+28;4,6,9,11:dayth:=dayth+30;end;dayth:=dayth+day;writeln(dayth)end.數組類型:定義數組:Type數組類型標識符=Array 下標類型 OF 數組元素類型數組元素類型本身也可以是復雜的自定義類型,如子界類型,數組類型,記錄等。例如:定義存放學生姓名的字符數組:TYPE TName=Array1.20 of Char;定義一個存放班級學生(50 人 ) 名單的數組:TYPE TStudents=A
54、rray1.50 of TName也可以這么定義:TYPE TStudents=Array1.50 of Array1.20 of Char;例 1 :輸入 5 個考分數,計算它們的總分?!?xoi00_03.pas 】program xoi00_03;Type TScore=Array1.5 of integer;var score:TScore; i:integer;sum:integer;beginfor i:=1 to 5 dobeginwrite('Enter Number #',i);readln(scorei);end;sum:=0;for i:=1 to 5 dobeginsum:=sum+scorei;end;writeln('Total Score is:',sum);end.例2:從鍵盤輸入10 個數,將這10 個數逆序輸入,并求這10 個數的和,輸出這個和。program p1;vara: array1.10 of integer;1, s: integer;beginfor i := 1 to 10 do read(ai);for i := 10 downto 1 do write(ai, ' ');writeln;s := 0;for i := 1 to 1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 郵寄檢驗服務部工作技巧與客戶反饋計劃
- 《貴州美升能源集團有限公司六枝特區(qū)新興煤礦(變更)礦產資源綠色開發(fā)利用方案(三合一)》評審意見
- 膀胱部分切除后護理
- 高中地理 3.1 海水的溫度和鹽度教學實錄2 新人教版選修2
- 2025年三明道路運輸從業(yè)人員從業(yè)資格考試
- 2025年貴州貨運從業(yè)資格證模擬考試保過版
- 《人民幣兌換》(教學設計)-2024-2025學年五年級上冊數學北師大版
- 部隊違規(guī)使用檢討書
- 社區(qū)七夕節(jié)活動方案
- 四年級數學(四則混合運算)計算題專項練習與答案
- 《DeepSeek入門寶典》第4冊·個人使用篇
- 2024年中考模擬試卷數學(新疆卷)
- 2025年蘇州農業(yè)職業(yè)技術學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 加油站的流程優(yōu)化
- 關于美國地理知識的講課
- 浙江2024年浙江省有色金屬地質勘查院選調專業(yè)技術人員筆試歷年典型考點(頻考版試卷)附帶答案詳解
- 2024云南紅河州個舊市大紅屯糧食購銷限公司招聘及人員易考易錯模擬試題(共500題)試卷后附參考答案
- 開門見山的作文開頭和結尾摘抄
- 新人教版九年級數學第一輪總復習教案
- 2024年安徽省養(yǎng)老護理職業(yè)技能競賽考試題庫(含答案)
- 醉酒后急救知識培訓課件
評論
0/150
提交評論