pascal1-4章.ppt_第1頁(yè)
pascal1-4章.ppt_第2頁(yè)
pascal1-4章.ppt_第3頁(yè)
pascal1-4章.ppt_第4頁(yè)
pascal1-4章.ppt_第5頁(yè)
已閱讀5頁(yè),還剩62頁(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)介

1、Pascal語(yǔ)言程序設(shè)計(jì),本章要點(diǎn),Pascal的程序結(jié)構(gòu) 基本符號(hào)、保留字、標(biāo)識(shí)符 數(shù)據(jù)類型、常量、變量及說(shuō)明方法 函數(shù)與表達(dá)式 三種基本的程序結(jié)構(gòu) 順序結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu),第一章 Pascal程序設(shè)計(jì)語(yǔ)言基礎(chǔ),一、概述 1.Pascal是結(jié)構(gòu)化的語(yǔ)言 Pascal語(yǔ)言全面清晰地體現(xiàn)結(jié)構(gòu)化思想。不僅提供了直接實(shí)現(xiàn)“順序結(jié)構(gòu)”、“選擇結(jié)構(gòu)”和“循環(huán)結(jié)構(gòu)”的語(yǔ)句,而且還可以定義子程序(“函數(shù)”和“過(guò)程”)。在編程時(shí)可以完全不使用轉(zhuǎn)向語(yǔ)句“goto”,使程序的執(zhí)行順序與行文順序保持一致,便于理解; 2.Pascal的數(shù)據(jù)類型豐富 Pascal語(yǔ)言不僅提供了整型、實(shí)型、字符型、布爾型等標(biāo)準(zhǔn)數(shù)據(jù)

2、類型,而且還允許用戶按照語(yǔ)法規(guī)則自定義枚舉型、子界型、數(shù)組型、集合型、記錄型、指針類型和文件類型,便于數(shù)值計(jì)算和非數(shù)值信息處理; 3.Pascal語(yǔ)言可以實(shí)現(xiàn)模塊的獨(dú)立化要求 Pascal語(yǔ)言允許在函數(shù)和過(guò)程內(nèi)部定義局部變量,允許在主程序和子程序之間傳遞參數(shù),使得每一個(gè)子程序模塊都能反映一個(gè)相對(duì)獨(dú)立的性質(zhì),模塊之間的聯(lián)系簡(jiǎn)單清晰,便于修改; 由于Pascal語(yǔ)言精確地表達(dá)了程序設(shè)計(jì)的基本概念,結(jié)構(gòu)性好,表達(dá)能力強(qiáng),因此成為學(xué)校程序設(shè)計(jì)課程的教學(xué)語(yǔ)言,計(jì)算機(jī)會(huì)考和奧林匹克信息學(xué)競(jìng)賽的規(guī)定語(yǔ)言。,1、程序結(jié)構(gòu),Pascal語(yǔ)言具有嚴(yán)謹(jǐn)?shù)某绦蚪Y(jié)構(gòu) 【例】已知圓的半徑,求它的周長(zhǎng)和面積。,從這個(gè)簡(jiǎn)單的

3、程序可以看到: 一個(gè)PASCAL程序分為兩個(gè)部分:程序首部和程序體。 程序首部 程序首部是程序的開(kāi)頭部分,有保留字program后接程序名及程序參數(shù)表組成,由分號(hào)結(jié)束。程序名是用戶自己定義的標(biāo)識(shí)符,參數(shù)表一般是文件變量名,用于該程序與外界的數(shù)據(jù)交流。最常用的參數(shù)為input和output。在turbo pascal語(yǔ)言中,首部中的參數(shù)表可以省略,首部也可省略。 程序體 程序體是程序的主體部分,由說(shuō)明部分和執(zhí)行部分兩部分組成。 說(shuō)明部分: 用來(lái)描述程序中用到的變量、常量、類型、過(guò)程與函數(shù)等。本程序中第二行是變量說(shuō)明,用來(lái)定義變量的名稱、類型。PASCAL規(guī)定,凡程序中用到所有變量、符號(hào)常量、數(shù)組

4、、標(biāo)號(hào)、過(guò)程與函數(shù)、記錄、文件等數(shù)據(jù)都必須在說(shuō)明部分進(jìn)行定義(或稱說(shuō)明)。也就是說(shuō),不允許未說(shuō)明先使用。 執(zhí)行部分: 以begin開(kāi)始,以end結(jié)束,其間有若干個(gè)語(yǔ)句,語(yǔ)句之間以分號(hào)隔開(kāi)。一條語(yǔ)句執(zhí)行一定的功能,所有語(yǔ)句完成程序設(shè)計(jì)的任務(wù)。允許一行寫(xiě)多個(gè)語(yǔ)句,也允許一個(gè)語(yǔ)句寫(xiě)幾行,最后一行的end后加一.號(hào)表示結(jié)束。,2、完整的pascal程序框架:,program 程序名(程序參數(shù)表); label 標(biāo)號(hào)說(shuō)明; const 常量說(shuō)明; type 類型說(shuō)明; var 變量說(shuō)明; function 函數(shù)說(shuō)明; procedure 過(guò)程說(shuō)明; begin 程序語(yǔ)句1; ; 程序語(yǔ)句n; end.,

5、程序首部,程 序 體,說(shuō) 明 部 分,執(zhí) 行 部 分,二、基本符號(hào)、保留字、標(biāo)識(shí)符:,1基本符號(hào): 是ASCII字符集,主要有: 26個(gè)英文字母(不分大小寫(xiě),字符串中的字母例外。 十個(gè)數(shù)字符號(hào)。 特殊符號(hào) + - * / = = ( ) := . , ; : .,2保留字: 保留字是指pascal語(yǔ)言中一些有特殊含義的英文單詞,它們已被pascal語(yǔ)言自己使用,都有專門的用途。 Pascal 語(yǔ)言中保留字有36個(gè),可分為以下六種類型: 程序、函數(shù)、過(guò)程的符號(hào): program,function,procedure 說(shuō)明部分的專用定義符號(hào): array,const,file,label,pack

6、ed,var,record,set,type,of 語(yǔ)句專用符號(hào): case,do,downto,else,for,goto,if,repeat,then,to,until,while,with,forward 運(yùn)算符號(hào): and,div,in,mod,not,or 分隔符號(hào): begin,end 空指針常量: Nil,3. 標(biāo)識(shí)符: 標(biāo)識(shí)符是以字母開(kāi)頭的字母數(shù)字序列(大小寫(xiě)等效,可跟下劃線_),用來(lái)標(biāo)識(shí)常量、變量、程序、函數(shù)等。Pascal中允許的標(biāo)識(shí)符的有效長(zhǎng)度為63。 標(biāo)識(shí)符分為兩大類: 標(biāo)準(zhǔn)標(biāo)識(shí)符: 標(biāo)準(zhǔn)常量:false,true,maxint(32767) 標(biāo)準(zhǔn)類型:integer,

7、real,char,boolean,text 標(biāo)準(zhǔn)文件:input,output 標(biāo)準(zhǔn)函數(shù):abs,arctan,chr,cos,eof,eoln,exp,ln,odd, ord,pred,round,sin,sqr,sqrt,succ,trunc 標(biāo)準(zhǔn)過(guò)程:get,new,pack,page,put,read,readln,reset,rewrite,unpack,write,writeln 自定義標(biāo)識(shí)符 由用戶自己在程序首部或說(shuō)明部分進(jìn)行定義,但要注意以下幾點(diǎn):不能與保留字同名;避免與標(biāo)準(zhǔn)標(biāo)識(shí)符同名;最好有一定的含義,增加程序的可讀性。 例如:在程序中如用到數(shù)學(xué)中的,則在定義該常量時(shí)可用P

8、I表示。,三、數(shù)據(jù)類型、常量、變量及說(shuō)明方法,數(shù)據(jù)類型確定了該類型數(shù)據(jù)項(xiàng)的表示、取值范圍以及所能參與的運(yùn)算。在pascal語(yǔ)言中,無(wú)論常量還是變量都必須屬于一個(gè)確定的數(shù)據(jù)類型。 Pascal 提供了豐富的數(shù)據(jù)類型,可以分為三大類: 簡(jiǎn)單類型:分為標(biāo)準(zhǔn)類型(整型、實(shí)型、字符型和布爾型)和自定義類型(枚舉型和子界型) 構(gòu)造類型:分為數(shù)組類型、集合類型、記錄類型和文件類型 指針類型 這些數(shù)據(jù)類型中除了指針類型是動(dòng)態(tài)數(shù)據(jù)類型外,其他的都是靜態(tài)數(shù)據(jù)類型。另外,我們把整型、字符型、布爾型、枚舉型和子界型稱為順序類型。,1標(biāo)準(zhǔn)數(shù)據(jù)類型: 整數(shù)類型:,整數(shù)類型包括正整數(shù)、負(fù)整數(shù)和零。整數(shù)只能由正負(fù)號(hào)和數(shù)字組成

9、,不允許出現(xiàn)其他字符,“+”號(hào)可以省略。,名稱 類型數(shù)值范圍 占字節(jié)數(shù) 字節(jié)型 Byte 0 . 255 1 字型 Word 0.65535 2 短整型 Shortint -128 . 127 1 整型 Integer -32768.32767; 2 長(zhǎng)整型 Longint -2147483648 . 2147483647 (9位) 4 長(zhǎng)字型 Longword 0.4294967295 4 整數(shù)INT64 Int64 -9223372036854775808 . 9223372036854775807 8 Q字型 QWord 0 . 18446744073709551615 8 (整數(shù)部分1

10、9位),Turbo Pascal規(guī)定了兩個(gè)預(yù)定義整型常量標(biāo)識(shí)符maxint和maxlonint,他們各表示確定的常數(shù)值, maxint為32767, longint為2147483647, 他們的類型分別是integer 和longint。 整數(shù)的運(yùn)算符有+、-、*、div、mod,后三種運(yùn)算符的優(yōu)先級(jí)高于前兩種,整數(shù)運(yùn)算的結(jié)果也為整數(shù)。當(dāng)兩個(gè)整數(shù)用/相除時(shí),結(jié)果為實(shí)型,只能賦給實(shí)型變量。,實(shí)數(shù)類型包括正實(shí)數(shù)、負(fù)實(shí)數(shù)和實(shí)數(shù)零。它的標(biāo)識(shí)符是real。 有兩種表示實(shí)數(shù)的方法:十進(jìn)制表示法:1.25;科學(xué)記數(shù)法:3.4E3表示3.4*103 。實(shí)數(shù)的絕對(duì)值在1E-38到1E38之間。, 實(shí)數(shù)類型:,

11、實(shí)數(shù)的運(yùn)算有+、-、*、/、結(jié)果也為實(shí)型。整數(shù)參與實(shí)數(shù)運(yùn)算,系統(tǒng)自動(dòng)將整數(shù)轉(zhuǎn)化為實(shí)數(shù)再運(yùn)算,結(jié)果為實(shí)數(shù)。,2)實(shí)數(shù) 名稱 Type Range Significant digits Size 實(shí)型 Real platform dependant ? 4 or 8 單精度型 Single 1.5E-45 . 3.4E38 7-8 4 雙精度型 Double 5.0E-324 . 1.7E308 15-16 8 擴(kuò)展型 Extended 1.9E-4951 . 1.1E4932 19-20 10 裝配十進(jìn)制型Comp -2E64+1 . 2E63-1 19-20 8, 字符類型: 目前微機(jī)上廣泛使

12、用的ASCII碼字符集滿足PASCAL對(duì)字符集的要求。字符型用char作為標(biāo)識(shí)符。字符型必須用單引號(hào)括起來(lái),字母作為字符型時(shí),大小寫(xiě)是不等價(jià)的,并且字符型只允許單引號(hào)中有一個(gè)字符,否則就是字符串string。 布爾類型: 一個(gè)布爾型數(shù)據(jù)用來(lái)存放邏輯值(布爾值)。布爾型的值只有兩個(gè):false和true,并且false的序號(hào)是0,true的序號(hào)是1。false 和true都是預(yù)定義常數(shù)表識(shí)符,分別表示邏輯假和邏輯真。并且truefalse。boolean是布爾型的標(biāo)識(shí)符。 布爾類型的運(yùn)算符有not(非)、and(與)、or(或)。參與布爾型運(yùn)算的是布爾類型的數(shù)據(jù),其結(jié)果也是布爾類型的數(shù)據(jù)。,2常

13、量,常量:在程序執(zhí)行過(guò)程中其值不能被改變的量。 pascal除了maxint,true,false三個(gè)標(biāo)準(zhǔn)常量外,用戶還可以使用常量定義語(yǔ)句定義新的常量。 它的語(yǔ)法格式是:const=;.=; 常量表識(shí)符的類型由定義它的常量的類型決定。例如:const a=12 隱含說(shuō)明a是整型;const r=3.21 隱含說(shuō)明r是實(shí)型。常量的定義具有單一性和不可改變性。,3變量,變量:在程序執(zhí)行過(guò)程中可以改變值的數(shù)據(jù)。 它的語(yǔ)法格式是: var :; . :; 其中,保留字var表示開(kāi)始一個(gè)變量說(shuō)明部分。變量標(biāo)識(shí)符列表是一個(gè)用逗號(hào)隔開(kāi)的標(biāo)識(shí)符序列,冒號(hào)后面的類型是類型標(biāo)識(shí)符。每個(gè)變量說(shuō)明均以分號(hào)結(jié)束。 例

14、如: var a,b,c:integer; m,n:real;,1標(biāo)準(zhǔn)函數(shù): 算術(shù)函數(shù): 函數(shù)標(biāo)識(shí)符 自變量類型 意義 結(jié)果類型 Abs 整型、實(shí)型 絕對(duì)值 同自變量 Arctan 整型、實(shí)型 反正切 實(shí)型 Cos 整型、實(shí)型 余弦 實(shí)型 Exp 整型、實(shí)型 指數(shù) 實(shí)型 Ln 整型、實(shí)型 自然對(duì)數(shù) 實(shí)型 Sin 整型、實(shí)型 正弦 實(shí)型 Sqr 整型、實(shí)型 平方 同自變量 Sqrt 整型、實(shí)型 平方根 實(shí)型,四、函數(shù)與表達(dá)式,標(biāo)準(zhǔn)ASCII字符編碼,2運(yùn)算符和表達(dá)式, 運(yùn)算符和優(yōu)先級(jí) 算術(shù)運(yùn)算符:, 表達(dá)式,表達(dá)式:是指由常量、變量、函數(shù)、括號(hào)、集合及運(yùn)算符聯(lián)結(jié)起來(lái)的式子。 表達(dá)式中各運(yùn)算符的優(yōu)

15、先級(jí):,表達(dá)式有以下幾種,a.算術(shù)表達(dá)式: 例如:sqrt(b*b-4*a*c) b.關(guān)系表達(dá)式: 例如:x0 c.邏輯表達(dá)式: 例如: (x=0) and (y=0),第二章 順序結(jié)構(gòu)程序設(shè)計(jì)步,賦值語(yǔ)句 Read語(yǔ)句,write語(yǔ)句 復(fù)合語(yǔ)句,【例1】:鍵盤輸入兩個(gè)變量的值,交換值后輸出。 方法:間接交換法 算法分析:(“自頂向下,逐步求精”的編程思想) s1:通過(guò)鍵盤給a,b兩個(gè)變量賦值; s2:交換a,b的值; s2-1:引入中間變量c; s2-2:在c中存放的a值; s2-3:在a中存放的b值; s2-4:在b中存放的c值; s3:輸出變量a,b的值。 程序代碼: program e

16、x1(input,output); var a,b,c:integer; begin write(please input a,b:); read(a,b); writeln(a=,a,b=,b); c:=a; a:=b; b:=c; writeln(a=,a,b=,b) end.,第一節(jié) 順序結(jié)構(gòu)程序設(shè)計(jì),Pascal 語(yǔ)言的語(yǔ)句分為簡(jiǎn)單語(yǔ)句(也稱基本語(yǔ)句)和復(fù)合語(yǔ)句(也稱構(gòu)造語(yǔ)句),幾個(gè)簡(jiǎn)單語(yǔ)句: 1賦值語(yǔ)句: 格式:變量標(biāo)識(shí)符:=表達(dá)式; 功能:計(jì)算和賦值雙重功能: 【例2】寫(xiě)出程序執(zhí)行后,變量的值。 程序代碼: program ex2(input,output); var a,b:in

17、teger; c:real; ch:char; bool:boolean; begin a:=3; b:=a; b:=a+1; a:=a+1; c:=a+b; ch:=h; bool:=true; bool:=not bool; end. 說(shuō)明:1)“:=”賦值號(hào)不同于“=”號(hào),具有方向性,具有計(jì)算功能。 2)賦值號(hào)兩邊的類型應(yīng)該相同或相容。 3)一個(gè)賦值語(yǔ)句只能給一個(gè)變量賦值,可以多次給一個(gè)變量賦值。 4)被賦值的變量可以作為因子參與運(yùn)算。,2輸入語(yǔ)句(read,readln): 格式:read(變量名表); readln read(a1,a2,a3); 等價(jià)于 read(a1);read(

18、a2);read(a3); readln(a1,a2,a3); 等價(jià)于 read(a1);read(a2);read(a3);readln; 功能:通過(guò)鍵盤,給指定的變量賦值。 【例3】:寫(xiě)出程序運(yùn)行后,變量的值。 程序代碼: program ex3(input,output); var a,b,c:integer; i,j,k:real; ch1,ch2,ch3:char; begin read(a,b,c); readln(i,j,k); read(ch1,ch2,ch3); writeln(a=,a,b=,b,c=,c); writeln(i=,i, j=,j,k=,k); writel

19、n(ch1=,ch1,ch2=,ch2,ch3=,ch3); end. 程序運(yùn)行后,輸入數(shù)據(jù): 1 2 3 4 5 6.1 7 8 9 0 dos,說(shuō)明: 1)變量名表中的變量可以是一個(gè)變量,也可以是多個(gè)變量,多個(gè)變量之間用逗號(hào)隔開(kāi)。 2)程序運(yùn)行后,執(zhí)行到該語(yǔ)句時(shí),系統(tǒng)處于等待狀態(tài),等待用戶從鍵盤輸入數(shù)據(jù)。輸入數(shù)值型數(shù)據(jù)(整型和實(shí)型),數(shù)據(jù)間用空格分隔;輸入字符型數(shù)據(jù),數(shù)據(jù)間不須分隔。 3)輸入數(shù)據(jù)一定為常量,且與變量保持類型一致。 4)輸入數(shù)據(jù)個(gè)數(shù)不能少于變量個(gè)數(shù),否則,系統(tǒng)繼續(xù)等待輸入。,read語(yǔ)句與readln語(yǔ)句區(qū)別,(1) read語(yǔ)句是一個(gè)接一個(gè)地讀數(shù)據(jù),在執(zhí)行完本Read語(yǔ)句

20、( 讀完本語(yǔ)句中變量所需的數(shù)據(jù))后,下一個(gè)讀語(yǔ)句接著從該數(shù)據(jù)輸入行中繼續(xù)讀數(shù)據(jù),也就是說(shuō),不換行。如: Read(a,b); Read(c,d); Read(e); 如果輸入數(shù)據(jù)行如下: 123456 則a,b,c,d,e的值分別為1,2,3,4,5,如果后面無(wú)讀語(yǔ)句則數(shù)據(jù)6是多余的,這是允許的。,Readln則不同,在讀完本Readln語(yǔ)句中變量所需的數(shù)據(jù)后, 該數(shù)據(jù)行中剩余的數(shù)據(jù)多余無(wú)用,或者說(shuō),在讀完本Readln語(yǔ)句中變量所需數(shù)據(jù)后,一定要讀到一個(gè)回車,否則多余的數(shù)據(jù)無(wú)用。 設(shè)有下列語(yǔ)句: read(a,b,c); readln(d,e); readln; readln(f,g); 其

21、中,所有變量均為整型。再設(shè)輸入的數(shù)據(jù)如下: 12 345678 910 11,(2)readln語(yǔ)句與read語(yǔ)句的第二個(gè)區(qū)別是:,read 后一定要有參數(shù)表, readln可以不帶參數(shù)表,即可以沒(méi)有任何輸入項(xiàng), 只是等待讀入一個(gè)換行符(回車)。經(jīng)常用于暫停程序的運(yùn)行,直到輸入一個(gè)回車,3輸出語(yǔ)句(write,writeln): 格式:write(輸出項(xiàng)); writeln; 功能:按指定的格式將輸出項(xiàng)的內(nèi)容輸出。 【例4】:寫(xiě)出程序運(yùn)行后的結(jié)果。 程序代碼: program ex4(input,output); const a=10; b=20; begin writeln(50); wri

22、teln(a); writeln(a+b); writeln(a+b=,a+b) end. 說(shuō)明:1)輸出項(xiàng)的內(nèi)容可以是一項(xiàng),也可以是若干項(xiàng),各項(xiàng)之間用逗號(hào)分隔。 2)當(dāng)輸出項(xiàng)為常量,直接輸出常量的值;當(dāng)輸出項(xiàng)為變量時(shí),輸出該變量存儲(chǔ)單元內(nèi)的內(nèi)容,變量允許屬于任何一種標(biāo)準(zhǔn)數(shù)據(jù)類型;當(dāng)輸出項(xiàng)為表達(dá)式時(shí),先計(jì)算后輸出;當(dāng)輸出項(xiàng)為字符串時(shí),原樣輸出單引號(hào)括起來(lái)的內(nèi)容。,Write語(yǔ)句與writeln語(yǔ)句格式上都相似,但它們?cè)诠δ苌嫌兴煌?,兩個(gè)語(yǔ)句的區(qū)別在于: write語(yǔ)句將其后括號(hào)中的表達(dá)式一個(gè)接一個(gè)輸出后,沒(méi)有換行。 而writeln語(yǔ)句則在輸出各個(gè)表達(dá)式的值后換行。 例如以下兩個(gè)程序段的輸出

23、分別為: write(1,2,3,4); write(5,6); 輸出為: 123456 writeln(1,2,3,4); write(5,6); 輸出為: 1234 56,實(shí)數(shù)的輸出格式,實(shí)數(shù)(real)以浮點(diǎn)型格式輸出。例如805.67對(duì)應(yīng)的浮點(diǎn)數(shù)為8.056700000000E+02。這種實(shí)數(shù)表達(dá)方式很不方便。我們可以通過(guò)下述形式強(qiáng)迫實(shí)數(shù)以定點(diǎn)型格式輸出: 實(shí)數(shù)表達(dá)式:域?qū)挘盒?shù)位數(shù) 例如,t的值設(shè)為63.123。下面三條輸出語(yǔ)句分別有它們右邊所示的輸出格式: write(t); 6.312300000000E+01 write(t:6:2); 63.12 write(t:10:5);

24、 63.12300 write(t:0:2); 63.12,輸出語(yǔ)句的輸出格式:, 什么是場(chǎng)寬(或域?qū)挘?pascal中將輸出項(xiàng)的數(shù)據(jù)顯示占用的寬度稱為場(chǎng)寬 場(chǎng)寬的分類:標(biāo)準(zhǔn)場(chǎng)寬和自定義場(chǎng)寬。 自定義場(chǎng)寬又分為單場(chǎng)寬和雙場(chǎng)寬。 標(biāo)準(zhǔn)場(chǎng)寬:writeln(x),x直接輸出,如x為實(shí)數(shù),按科學(xué)計(jì)數(shù)法死的形式輸出。 單場(chǎng)寬的形式: x:n;如:writeln(x:n) 可以輸出的項(xiàng)目有整型、字符型、布爾型,不允許實(shí)型。 雙場(chǎng)寬的形式: x:n1:n2;如:writeln(x:m:n) 控制實(shí)型數(shù)據(jù)的輸出。 自定義場(chǎng)寬的注意事項(xiàng) a. 優(yōu)先級(jí)高于標(biāo)準(zhǔn)場(chǎng)寬。 b. 單場(chǎng)寬輸出格式一律是左留空、右對(duì)齊。

25、實(shí)型的雙場(chǎng)寬輸出時(shí)是向小數(shù)點(diǎn)看齊,多余的小數(shù)為數(shù)補(bǔ)零。 c. 突破場(chǎng)寬時(shí),擴(kuò)展到所需位數(shù). d. n2小于實(shí)際位數(shù),顯示時(shí)舍去多余位數(shù),但內(nèi)存中該數(shù)的精度保持不變。,【例5】:寫(xiě)出程序的運(yùn)行結(jié)果: program ex5(input,output); var a:integer; b:real; c:char; d:boolean; begin a:=1357; b:=1234.5678; c:=%; d:=true; writeln(a,a:5); writeln(b,b:12:5); writeln(c,c:5); writeln(d,d:5); writeln(end:5) end.,定

26、義:復(fù)合語(yǔ)句是由若干條語(yǔ)句組成的語(yǔ)句序列。 形式: begin 語(yǔ)句1; 語(yǔ)句2; 語(yǔ)句n end; 用保留字begin和end括起來(lái),構(gòu)成一條邏輯上的語(yǔ)句,語(yǔ)法上充當(dāng)一條語(yǔ)句。,復(fù)合語(yǔ)句:,四:綜合應(yīng)用: 【例6】:隨機(jī)產(chǎn)生一個(gè)三位自然數(shù),分離出它的百位、十位與個(gè)位上的數(shù)字。 算法分析: s1:隨機(jī)產(chǎn)生一個(gè)三位自然數(shù); s2:分離出該自然數(shù)的百位、十位、個(gè)位上的數(shù)字; s3:輸出百位、十位、個(gè)位上的數(shù)字。 程序代碼: program ex6(input,output); var x,ge,shi,bai:integer; begin randomize; x:=trunc(random*90

27、0)+100; writeln(x=,x); bai:=x div 100; shi:=(x-bai*100)div 10; ge:=x mod 10; writeln(bai=,bai); writeln(shi=,shi); writeln(ge=,ge) end.,上機(jī)練習(xí)題,1.上機(jī)調(diào)試出例6。 2. 試編一程序,輸入一梯形的上底、下底、高, 求該梯形的面積。 3.輸入一個(gè)三位整數(shù),將他們反向輸出。例如輸入369,輸出963。,1if 語(yǔ)句: 功能:執(zhí)行過(guò)程 說(shuō)明:1)該語(yǔ)句為一個(gè)語(yǔ)句; 2)條件是一個(gè)布爾表達(dá)式或一個(gè)布爾變量,then 和else后的語(yǔ)句可以是單個(gè)語(yǔ)句,當(dāng)需要多條語(yǔ)句

28、時(shí),用begin和end括起來(lái)構(gòu)成復(fù)合語(yǔ)句。 3)當(dāng)布爾表達(dá)式的值為真,則執(zhí)行then后面的語(yǔ)句,值為假時(shí)有兩種情況:要么什么也不做,要么執(zhí)行else后面的語(yǔ)句。 注意:else前面沒(méi)有分號(hào).,第三章 選擇結(jié)構(gòu)程序設(shè)計(jì),格式一: if then ;,格式二: if then else ;,邏輯、算術(shù)、關(guān)系運(yùn)算符的運(yùn)算次序: 括號(hào) 函數(shù)、not *、/、div、mod、and +、-、or 、=、,補(bǔ)充,【例1】:將輸入的兩個(gè)非負(fù)實(shí)數(shù)中較大的放在max里,小的放在min里,并輸出。 算法分析: s1:輸入兩個(gè)數(shù)放在max,min中; s2:判斷max,min的值,將大數(shù)放在max里,小數(shù)放在mi

29、n里; s3:輸出max,min的值。 程序代碼: program ex1(input,output); var max,min,t:real; begin writeln(input two num(0):); read(max,min); if maxmin then begin t:=max; max:=min; min:=t end; writeln(max=,max,min=,min) end.,例2:輸入一個(gè)整數(shù),判斷是否為偶數(shù)。 (是輸出“”否則輸出“”)。 Var a:integer; Begin readln(a); If (a mod 2 =0) then writeln(

30、yes) Else writeln(no); End.,2if 語(yǔ)句的嵌套: 格式: (1) if 語(yǔ)句嵌套在then語(yǔ)句中 if 條件1 then if 條件2 then 語(yǔ)句21 else 語(yǔ)句22 else 語(yǔ)句12; (2)if 語(yǔ)句嵌套在else語(yǔ)句中 if 條件1 then 語(yǔ)句11 else if 條件2 then 語(yǔ)句21 else 語(yǔ)句22 ; 注:pascal系統(tǒng)規(guī)定,else總是與同一層前面最靠近它的,還沒(méi)有else與之配對(duì)的then配對(duì),【例2】:計(jì)算下列函數(shù),分析:根據(jù)輸入的x值,先分成x0與x0兩種情況,然后對(duì)于情況x0,再區(qū)分x是小于0,還是等于0。,程序代碼:

31、program ex; var x:real; y:integer; begin write(input x:);readln(x); if x0then y:=1 else if x=0then y:=0else y:=-1; writeln(x=,x:6:2,y=,y); end.,程序代碼: program ex2(input,output): var a,b,c:integer; begin write(a,b,c(0):); readln(a,b,c); if (a+bc) and (a+cb) and (b+ca) then if (a*a+b*b=c*c) or (a*a+c*c

32、=b*b) or (b*b+c*c=a*a) then writeln(a=,a,b=:5,b,c= :5,c, is rt triangle.) else writeln(a=,a,b=:5,b,c= :5,c, is not rt triangle.) else writeln(a=,a,b= :5,b,c= :5,c, is not triangle.) end.,【例3】:輸入三角形的三邊,判斷它是否是直角三角形。,3case 語(yǔ)句:分情況語(yǔ)句(多分支語(yǔ)句) 格式:case 表達(dá)式 of 常數(shù)表1:語(yǔ)句1; 常數(shù)表2:語(yǔ)句2; 常數(shù)表n:語(yǔ)句n; else 語(yǔ)句n+1 end; 功能:

33、執(zhí)行過(guò)程 說(shuō)明:1)end 與case 對(duì)應(yīng) 2)表達(dá)式的類型通常是整型、字符型 3)常量表是常量,其類型與表達(dá)式的類型要一致。常量表中的常量不能重復(fù)。,【例4】:輸入兩個(gè)數(shù)(均不為零)及一個(gè)算術(shù)運(yùn)算符,輸出其運(yùn)算的結(jié)果 程序代碼: program ex3(input,output); var x,y,s:real; ch:char; begin writeln(input x writeln(x,ch,y,=,s) end.,上機(jī)練習(xí)題1.求一元二次方程ax2+bx+c=0的根。算法分析:方程的系數(shù)a,b,c決定了方程有無(wú)根,是幾個(gè)根,是實(shí)數(shù)根還是復(fù)根。 2.打印某年某月有幾天。算法分析:可

34、分為以下3種情況:每年的1,3,5,7,8,10,12這七個(gè)月每月為31天;每年的4,6,9,11這四個(gè)月為30天;2月又分為兩種情況:閏年為29天,否則為28天。判斷閏年的條件:年數(shù)能被4整除,并且不能被100整除,或者年數(shù)能被400整除; (year mod 4=0)and (year mod 1000) or (year mod 400=0),第四章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),一、什么是循環(huán)結(jié)構(gòu)?其特點(diǎn)是什么? 二、循環(huán)結(jié)構(gòu)的三種形式: 循環(huán)結(jié)構(gòu)程序通常由三種的循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。它們分別為FOR循環(huán)、當(dāng)循環(huán)while、直到repeat循環(huán)。 通常將一組重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)體,而控制重復(fù)執(zhí)行或終止

35、執(zhí)行由重復(fù)終止條件決定。 因此,重復(fù)語(yǔ)句是由循環(huán)體及重復(fù)終止條件兩部分組成。,1for語(yǔ)句,1for語(yǔ)句:(“計(jì)數(shù)循環(huán)”):就是將規(guī)定循環(huán)體重復(fù)執(zhí)行的次數(shù)。 格式:for 控制變量:=初值 to 終值 do 循環(huán)體語(yǔ)句; for 控制變量:=初值 downto 終值 do 循環(huán)體語(yǔ)句; 2、For語(yǔ)句執(zhí)行過(guò)程 先將初值賦給左邊的變量(稱為循環(huán)控制變量); 判斷循環(huán)控制變量的值是否已“超過(guò)”終值,如已超過(guò),則跳到步驟; 如果末超過(guò)終值,則執(zhí)行do后面的那個(gè)語(yǔ)句(稱為循環(huán)體); 循環(huán)變量遞增(對(duì)to)或遞減(對(duì)downt o); 返回步驟; 循環(huán)結(jié)束,執(zhí)行for循環(huán)下面的一個(gè)語(yǔ)句。 3、說(shuō)明: 1

36、) 初值和終值可以是表達(dá)式,控制變量和初值、終值的類型相同,且必須是整型、布爾型和字符型等順序類型,不能為實(shí)型。 2)遞增按succ函數(shù)規(guī)律變化,遞減按pred函數(shù)規(guī)律變化,整型按數(shù)值大小變化,如果為字符型量,按ASCII碼表的順序計(jì)算。 3)初值和終值在循環(huán)之前計(jì)算,重復(fù)過(guò)程中,其值不受影響;不得在循環(huán)語(yǔ)句中對(duì)控制變量進(jìn)行賦值。 4)當(dāng)初值超過(guò)終值,不執(zhí)行循環(huán),循環(huán)次數(shù)為零。,【例1】:計(jì)算1+2+3+4+100之和。 算法分析: 對(duì)于求和,我們使用的是累加的辦法。 程序代碼: program ex1(input,output); var i,sum:integer; begin sum:=

37、0; for i:=1 to 100 do sum:=sum+I; writeln(sum=,sum) end. 補(bǔ)充說(shuō)明:類似sum迭加變量這樣的功能稱為“累加器”;類似i這樣的變量稱為“計(jì)數(shù)器”;“計(jì)數(shù)器”和“累加器”是在程序中經(jīng)常使用的基本操作語(yǔ)句。,【例2】:對(duì)程序稍加改動(dòng),算出以下算式: 請(qǐng)同學(xué)們思考怎樣改動(dòng)程序可以實(shí)現(xiàn)? s=2+4+6+100 s=1+1/2+1/3+1/100 s=12+22+32+1002,【例3】:鍵入一個(gè)自然數(shù),輸出其所有約數(shù),計(jì)算出這些約數(shù)之和并輸出。 算法分析:解決這一問(wèn)題的關(guān)鍵是找出約數(shù),也就是判定一數(shù)能否被另一數(shù)整除??梢杂脁 mod y=0,來(lái)找

38、出所有約數(shù)。 程序代碼: program ex3(input,output); var i,x,y,sum:integer; begin write(x=);read(x); sum:=0;i:=0; for y:=1 to x do if x mod y=0 then begin write(y:8); i:=i+1; if i mod 5=0 then writeln; sum:=sum+y end; writeln(sum=,sum) end.,If 語(yǔ) 句,For語(yǔ)句,If語(yǔ)句作為For語(yǔ)句的循環(huán)體,【例4】:編程找出四位整數(shù)abcd中滿足下述關(guān)系的數(shù)。 (ab+cd)(ab+cd)=

39、abcd 算法分析:這道題屬于搜索問(wèn)題,因?yàn)槭撬奈徽麛?shù),其范圍從10009999,所求的數(shù)究竟在哪里,無(wú)法確定,只有在這個(gè)范圍內(nèi)從小到大一個(gè)一個(gè)進(jìn)行搜索,對(duì)每一個(gè)數(shù),看它的高兩位數(shù)與低兩位數(shù)和的平方是否為該數(shù)。 高兩位數(shù):abcd div 100=ab 低兩位數(shù):abcd mod 100=cd 程序代碼: program ex4(input,output); var i,m,n,k:integer; begin for i:=1000 to 9999 do begin m:=i div 100; n:=i mod 100; k:=(m+n)*(m+N); If k=i then write(I

40、:8) end end. 補(bǔ)充說(shuō)明: 以上用的方法也叫“枚舉法”,又稱“窮舉法”。它是用計(jì)算機(jī)解題的一種常用的辦法。它的基本思路是:一一枚舉各種可能的情況,并判斷哪一種可能是符合要求的解。方法雖然很笨,然而與計(jì)算機(jī)高速的處理能力相結(jié)合,也不失為一種較有用的方法,2while語(yǔ)句: 對(duì)于for循環(huán)有時(shí)也稱為計(jì)數(shù)循環(huán)。適合用于事先知道循環(huán)次數(shù). 當(dāng)循環(huán)次數(shù)未知,只能根據(jù)某一條件來(lái)決定是否進(jìn)行循環(huán)時(shí),用while 語(yǔ)句實(shí)現(xiàn)循環(huán)要更方便。 (“當(dāng)型循環(huán)”):當(dāng)條件滿足時(shí)反復(fù)執(zhí)行循環(huán)體。 格式:while 布爾表達(dá)式 do 語(yǔ)句; 執(zhí)行過(guò)程: while語(yǔ)句的執(zhí)行過(guò)程為: 判斷布爾表達(dá)式的值,如果其值為

41、真,執(zhí)行步驟2,否則執(zhí)行步驟4; 執(zhí)行循環(huán)體語(yǔ)句(do后面的語(yǔ)句); 返回步驟1; 結(jié)束循環(huán),執(zhí)行while的下一個(gè)語(yǔ)句。 說(shuō)明: 1)為了是while循環(huán)能正常終止,布爾表達(dá)式中的變量必須在循環(huán)體中的某語(yǔ)句中有所改變,即有可能是布爾表達(dá)式的值為假,使循環(huán)結(jié)束,否則將出現(xiàn)死循環(huán)。 2)循環(huán)體中的語(yǔ)句一般是多條語(yǔ)句,用begin和end使其成為一條復(fù)合語(yǔ)句。,【例5】:輸出1100之間的奇數(shù)。 程序代碼: program ex5(input,output); var x:integer; begin x:=1; while x100 do begin write(x:5); x:=x+2 end end.,【例6】:輸入若干個(gè)字符,它的終止符是#,計(jì)算輸入的字符中a(A)出現(xiàn)的次數(shù)。 算法分析: 設(shè)計(jì)數(shù)器i,置初值為0; 出入字符; 當(dāng)字符不為#時(shí)循環(huán):如果字符為a或A,則計(jì)數(shù)器加1;讀入下一個(gè)字符; 輸出計(jì)數(shù)器的值,程序結(jié)束。 程序代碼: program ex6(input,output); var ch:char; i:integer; begin i:=0; read(ch); while ch# do begin if (ch=a) or (ch=A) then i:=i+1; read(ch) end; writeln(i=,i) end.,repeat語(yǔ)

溫馨提示

  • 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)論