信息學(xué)競(jìng)賽輔導(dǎo)_第1頁(yè)
信息學(xué)競(jìng)賽輔導(dǎo)_第2頁(yè)
信息學(xué)競(jìng)賽輔導(dǎo)_第3頁(yè)
信息學(xué)競(jìng)賽輔導(dǎo)_第4頁(yè)
信息學(xué)競(jìng)賽輔導(dǎo)_第5頁(yè)
已閱讀5頁(yè),還剩51頁(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、 HYPERLINK /jsbase/pascal /jsbase/pascal第一章 Pascal 語(yǔ)言概述與基本知識(shí)1 關(guān)于 Pascal 語(yǔ)語(yǔ)言Pascal是一種計(jì)算機(jī)通用的高級(jí)程序設(shè)計(jì)語(yǔ)言。它由瑞士Niklaus Wirth教授于六十 年代末設(shè)計(jì)并創(chuàng)立。以法國(guó)數(shù)學(xué)家命名的Pascal語(yǔ)言現(xiàn)已成為使用最廣泛的基于DOS的語(yǔ)言之一,其主要 特點(diǎn)有:嚴(yán)格的結(jié)構(gòu)化形式;豐富完備的數(shù)據(jù)類型;運(yùn)行效率高;查錯(cuò)能力強(qiáng)。正因?yàn)樯鲜鎏攸c(diǎn), Pascal 語(yǔ)言可以被方便地用于描述各種算法與數(shù)據(jù)結(jié)構(gòu)。尤其是對(duì) 于程序設(shè)計(jì)的初學(xué)者,Pascal語(yǔ)言有益于培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格和習(xí)慣。101(國(guó)際奧林 匹克信息

2、學(xué)競(jìng)賽)把Pascal語(yǔ)言作為三種程序設(shè)計(jì)語(yǔ)言之一,N0I(全國(guó)奧林匹克信息學(xué)競(jìng) 賽)把Pascal語(yǔ)言定為唯一提倡的程序設(shè)計(jì)語(yǔ)言,在大學(xué)中Pascal語(yǔ)言也常常被用作學(xué)習(xí) 數(shù)據(jù)結(jié)構(gòu)與算法的教學(xué)語(yǔ)言。在 Pascal 問(wèn)世以來(lái)的三十余年間,先后產(chǎn)生了適合于不同機(jī)型的各種各樣版本。其中 影響最大的莫過(guò)于Turbo Pascal系列軟件。它是由美國(guó)Borland公司設(shè)計(jì)、研制的一種適 用于微機(jī)的Pascal編譯系統(tǒng)。該編譯系統(tǒng)由1983年推出1.0版本發(fā)展到1992年推出的7.0 版本,其版本不斷更新,而功能更趨完善。下面列出 Turbo Pascal 編年史1983Turbo Pascal 1.

3、0Turbo Pascal 2.0Turbo-87 Pascal提高實(shí)數(shù)運(yùn)算速度并擴(kuò)大值域1985Turbo Pascal 3.0增加圖形功能Turbo BCD Pascal特別適合應(yīng)用于商業(yè)1987Turbo Pascal 4.0 提供集成開發(fā)環(huán)境(IDE),引入單元概念1988Turbo Pascal 5.0增加調(diào)試功能1989Turbo Pascal 5.5 支持面向?qū)ο蟮某绦蛟O(shè)計(jì)(OPP)1990Turbo Pascal 6.0提供面向?qū)ο蟮膽?yīng)用框架和庫(kù)(Turbo Vision)1992Turbo Pascal 7.0面向?qū)ο蟮膽?yīng)用系統(tǒng)、更完善的IDETurbo Vision 2.0

4、1993Borland Pascal 7.0 開發(fā) Object Windows 庫(kù)、(For Windows)提供對(duì) OLE 多媒體應(yīng)用開發(fā)的支持 1995DelphiVisual PascalTurbo Pascal 語(yǔ)言是編譯型程序語(yǔ)言,它提供了一個(gè)集成環(huán)境的工作系統(tǒng),集編輯、 編譯、運(yùn)行、調(diào)試等多功能于一體。Turbo Pascal 或 Borland Pascal 的啟動(dòng)Turbo Pascal 的啟動(dòng)DOS下的啟動(dòng)(適用于MS-D0S6.22之前的版本或Win 9X & Win2000的Command Mode)DOS下,在裝有Turbo Pascal的文件目錄下,鍵入turbo即

5、可進(jìn)入Turbo Pascal集成 環(huán)境。Win9X或Win2000模式下的啟動(dòng)(適用于Turbo Pascal 3.0以后的版本)如果在Win9X或Win2000的“資源管理器”裝有Turbo Pascal的目錄中,雙擊 turbo.exe或在“開始一程序”菜單中通過(guò)MS-DOS方式來(lái)運(yùn)行turbo.exe,它會(huì)提示你“該 程序設(shè)置為MS-DOS方式下運(yùn)行,并且其它程序運(yùn)行時(shí),無(wú)法運(yùn)行它。如果選擇繼續(xù)所有其 它程序?qū)㈥P(guān)閉”,所以在Win9X或Win2000下無(wú)法直接運(yùn)行它,這時(shí)你可以在你希望的地方 (比如說(shuō)桌面上)單擊鼠標(biāo)右鍵“新建一快捷方式”,單擊“瀏覽”,找到turbo.exed選中,

6、然后單擊“打開”,再單擊“下一步”,再單擊完成;這還沒(méi)完,選中前面新建的快捷方式 (應(yīng)該叫Turbo Pascal吧),單擊右鍵,單擊“屬性”,選擇“程序”,然后再單擊“高級(jí)”, 把“MS-DOS方式”前面的那個(gè)勾去掉,也就是不要選“MS-DOS方式”,然后單擊“確定”, 在單擊“確定”就大功告成了,以后你運(yùn)行Turbo Pascal的時(shí)候,只要雙擊那個(gè)你建立起 的快捷方式就可以直接在Win9X或Win2000下運(yùn)行Turbo Pascal。Borland Pascal 的啟動(dòng)Borland Pascal 的啟動(dòng)沒(méi)有像 Turbo Pascal 那樣復(fù)雜,一般來(lái)說(shuō)在任何情況下雙擊 bp.exe

7、 或是在 MS-DOS 下運(yùn)行都不會(huì)出現(xiàn)什么問(wèn)題。第二章 Pascal 語(yǔ)言基礎(chǔ)知識(shí)Pascal 程序基本組成例 1.1 計(jì)算半徑為 R 的圓面積 Sprogram Area; 程序首部已知半徑求圓的面積const pi=3.14159; 說(shuō)明部分?jǐn)?shù)據(jù)描述var s,r:real;begin執(zhí)行部分readln(r);s:=pi*sqr(r);writeln(s=,s);end.上述程序第一行稱為程序首部。其中用花括號(hào)(注釋可以用 或(* *)來(lái)表示)括起 來(lái)的內(nèi)容是注釋,程序第二行就是一個(gè)注釋,注釋除了給人看,增加程序的可讀性外,對(duì)程 序編譯和運(yùn)行不起作用。一個(gè)程序可以包含多個(gè)出現(xiàn)在不同處注

8、釋,亦可無(wú)注釋。程序第三 行是常量說(shuō)明,程序第四行是變量說(shuō)明。程序從begin到end都是執(zhí)行(語(yǔ)句)部分程序首部例1.1的第一行稱為程序首部0program是保留字,接著是程序名(由你依據(jù)“標(biāo)示符” 規(guī)則自行定義),最后以分號(hào)表示程序首部結(jié)束,下面是程序主體的開始。程序首部在一個(gè) Turbo Pascal (僅在Turbo Pascal中有效)程序中并非必須出現(xiàn),它是可選的。寫上它僅 起了文檔作用。因此,在時(shí)間有限的情況下,如果用Turbo Pascal編程完全可以省略程序 首部。程序體a. 說(shuō)明部分說(shuō)明部分用于定義和說(shuō)明程序中用到的數(shù)據(jù),由單元說(shuō)明、標(biāo)號(hào)說(shuō)明、常量說(shuō)明、類型說(shuō)明、 變量說(shuō)明

9、、函數(shù)或過(guò)程說(shuō)明組成,并且這些數(shù)據(jù)的說(shuō)明次序必須按照以上次序。但是一個(gè)簡(jiǎn) 單的Turbo Pascal程序也可以不包含說(shuō)明部分,也就是說(shuō)說(shuō)明部分是可選的。b.執(zhí)行部分執(zhí)行部分描述了程序要執(zhí)行的操作。它必須以一個(gè)Turbo Pascal保留字begin開始,以保 留字end后跟句點(diǎn)結(jié)束,其間是一些執(zhí)行具體操作的語(yǔ)句,并且以分號(hào)作為語(yǔ)句之間的分隔 符。begin和end必須成對(duì)出現(xiàn),這是一個(gè)Turbo Pascal程序所必須有的。緊跟end之后 的句號(hào)表示執(zhí)行部分的結(jié)束,也表示整個(gè)程序的結(jié)束。此后的任何語(yǔ)句都無(wú)效oTurbo Pascal 規(guī)定緊隨end之前出現(xiàn)的分號(hào)允許省略。一個(gè)完全的 Pasc

10、al 程序結(jié)構(gòu)program 程序名;uses已知單元說(shuō)明;label標(biāo)號(hào)說(shuō)明;const常量說(shuō)明;type類型說(shuō)明;var變量說(shuō)明;function函數(shù)說(shuō)明;procedure過(guò)程說(shuō)明;begin語(yǔ)句;語(yǔ)句;語(yǔ)句end.Pascal 字符與符號(hào)保留字(關(guān)鍵字)所謂保留字是指在Pascal語(yǔ)言中具有特定的含義,你必須了解它的含義,以便于正確 的使用,否則會(huì)造成錯(cuò)誤。標(biāo)準(zhǔn)Pascal語(yǔ)言中的保留字一共有35個(gè),Turbo Pascal語(yǔ)言 一共有51個(gè)。下面是Pascal語(yǔ)言的保留字(斜體是Turbo Pascal特有的保留字):AND, ARRAY, BEGIN, CASE, CONST, D

11、IV, DO, DOWNTO, ELSE, END, FILE, FOR, FUNTION, GOTO, IF, IN, LABEL, MOD, NIL, NOT, OF, OR, PACKED, PROCEDURE, PROGRAM, RECORD, REPEAT, SET, THEN, TO, TYPE, UNTIL, VAR, WHILE, WITH, EXPORTS, SHR, STRING, ASM, OBJECT, UNIT, CONSTRUCTOR, IMPLEMENTATION, DESTRUCTOR, USES, INHERITED, INLINE, INTERFACE, L

12、IBRARY, XOR, SHL2 標(biāo)識(shí)符(1)表識(shí)符的定義:標(biāo)識(shí)符就是以字母開頭的字母數(shù)字序列,有效長(zhǎng)度為63個(gè)字符,并 且大小寫等效??梢杂脕?lái)標(biāo)示常量、變量、程序、函數(shù)等。例如例1.1中的Area(程序名), pi(符號(hào)常量),s、r(變量名)都是標(biāo)識(shí)符。(2) 表識(shí)符的分類:a. 標(biāo)準(zhǔn)標(biāo)識(shí)符:指 Pascal 語(yǔ)言預(yù)先定義的表識(shí)符,具有特殊含義。以下列舉了 Turbo Pascal 語(yǔ)言部分常用的標(biāo)準(zhǔn)表識(shí)符:標(biāo)準(zhǔn)常量 False Maxint True標(biāo)準(zhǔn)類型 Boolean Char Real Integer標(biāo)準(zhǔn)函數(shù) Abs Arctan Chr Cos Eof Eoln ExpLn

13、Odd Ord Pred Round Sin SqrSqrt Succ Trunc標(biāo)準(zhǔn)過(guò)程 Dispose Get New Pack Page Put ReadReadln Reset Rewrite Unpack Write Writeln標(biāo)準(zhǔn)文件 Input Output b. 用戶字定義表識(shí)符:由你來(lái)根據(jù)需要定義。1)選用的表識(shí)符不能和保留字相同。2)語(yǔ)法上允許預(yù)定義的標(biāo)準(zhǔn)標(biāo)識(shí)符作為你定義的的表識(shí)符使用,但最好還是不要用。以下列舉了你在定義表識(shí)符時(shí)可以用的字符:AZ;az;09;+,-,*,/,=,=,=,(,),,Pascal 數(shù)據(jù)類型數(shù)據(jù)是程序設(shè)計(jì)的一個(gè)重要內(nèi)容,其重要特征數(shù)據(jù)類型,

14、確定了該數(shù)據(jù)的形、取值范圍以及所能參與的運(yùn)算。Turbo Pascal提供了豐富的數(shù)據(jù)類型,這些數(shù)據(jù)類型可以分為三大類:簡(jiǎn)單類型、構(gòu) 造類型和指針類型,其中簡(jiǎn)單類型可以分為標(biāo)準(zhǔn)類型(整型、實(shí)型、字符型和布爾型)和自 定義類型(枚舉型和子界型),構(gòu)造類型可以分為數(shù)組類型、集合類型、記錄類型和文件類 型。這些數(shù)據(jù)類型中除了指針類型是動(dòng)態(tài)數(shù)據(jù)類型外,其他的都是靜態(tài)數(shù)據(jù)類型。在這些數(shù) 據(jù)類型中簡(jiǎn)單類型都是有序類型,除了實(shí)型以外的簡(jiǎn)單類型都是順序類型,所謂順序類型就 是他們的值不僅是有序的而且是有順序號(hào)。在這里主要介紹整型、實(shí)型、字符型和布爾型四種常用的數(shù)據(jù)類型。整型一個(gè)整型數(shù)據(jù)用來(lái)存放整數(shù)。Turbo

15、 Pascal支持五種預(yù)定義整型,它們是shortint (短 整型)、integer (整型)、longint (長(zhǎng)整型)、byte (字節(jié)型)和word (字類型), Turbo Pascal 分別用相同的名字作為他們的表識(shí)符。每一種類型規(guī)定了相應(yīng)的整數(shù)取值范 圍以及所占用的內(nèi)存字節(jié)數(shù)。類型 數(shù)值范圍 占字節(jié)數(shù) 格式shortint -128.128 1 帶符號(hào) 8 位inteter -32768.32767 2 帶符號(hào) 16 位longint -2147483648.2147483647 4 帶符號(hào) 32 位byte 0.255 1 帶符號(hào)8 位word 0.65535 2 帶符號(hào)16

16、位Turbo Pascal規(guī)定了兩個(gè)預(yù)定義整型常量表識(shí)符maxint和maxlonint,他們各表示確 定的常數(shù)值,maxint為32767, longint為2147483647,他們的類型分別是integer和 longint。實(shí)型一個(gè)實(shí)型數(shù)據(jù)用類存放實(shí)數(shù)。Turbo Pascal支持五種預(yù)定義實(shí)型,它們是real (基本 實(shí)型)、single (但精度實(shí)型)、double (雙精度實(shí)型)、ext ended (擴(kuò)展實(shí)型)、comp (裝配實(shí)型), Turbo Pascal 分別用相同的名字作為他們的表識(shí)符。每一種類型規(guī)定了相 應(yīng)的實(shí)數(shù)取值范圍、所占用的內(nèi)存字節(jié)數(shù)以及它們所能達(dá)到的精度。類

17、型 數(shù)值范圍 占字節(jié)數(shù) 有效位數(shù)real 2.9e-39.1.7e38 6 11.12single 1.5e-45.3.4e38 4 7.8 double 5.0e-324.1.7e308 8 15.16 extended 3.4e-4932.1.1e4932 10 19.20 comp -2*63+1.2*63-1 8 19.20Turbo Pascal支持兩種用于執(zhí)行實(shí)型運(yùn)算的代碼生成模式:軟件仿真模式和80 x87浮 點(diǎn)模式。除了 real可以在軟件仿真模式下直接運(yùn)行以外,其他類型必須在80 x87浮點(diǎn)模式 下運(yùn)行。布爾型一個(gè)布爾型數(shù)據(jù)用來(lái)存放邏輯值(布爾值)。布爾型的值只有兩個(gè):fal

18、se和true,并 且 false 的序號(hào)是 0, true 的序號(hào)是 1。 false 和 true 都是預(yù)定義常數(shù)表識(shí)符,分別表示 邏輯假和邏輯真。并且truefalse。boolean是布爾型的表識(shí)符。字符型字符型用char作為表識(shí)符。字符型必須用單引號(hào)括起來(lái),字母作為字符型時(shí),大小寫 是不等價(jià)的,并且字符型只允許單引號(hào)中有一個(gè)字符,否則就是字符串。常量與變量常量常量:在某個(gè)程序的整個(gè)過(guò)程中其值不變的量。常量定義:常量定義出現(xiàn)在說(shuō)明部分。它的語(yǔ)法格式是:const常量標(biāo)識(shí)符=常量;常量標(biāo)識(shí)符=常量;常量表識(shí)符的類型由定義它的常量的類型決定。例如:const a=12隱含說(shuō)明a是整型;co

19、nst r=3.21 隱含說(shuō)明 r 是實(shí)型常量定義部分必須以保留字const開頭,可以包含一個(gè)或幾個(gè)常量定義,而且每個(gè)常量 均以分號(hào)結(jié)束。Turbo Pascal 類型常量類型常量,又稱變量常數(shù),它是Turbo Pascal的一個(gè)擴(kuò)充特性。類型常量的定義與標(biāo)準(zhǔn) Pascal 規(guī)定的常數(shù)定義和變量說(shuō)明有所區(qū)別。類型常量定義的語(yǔ)法格式:const簡(jiǎn)單類型常量標(biāo)識(shí)符:簡(jiǎn)單類型=常數(shù);例如:constcounter:integer=0;flag:boolean=true;index:0.100=0;變量變量:在某個(gè)程序中的運(yùn)行過(guò)程中其值可以發(fā)生改變的量變量說(shuō)明:變臉說(shuō)明出現(xiàn)在說(shuō)明部分。它的語(yǔ)法格式是:

20、 var變量標(biāo)識(shí)符列表:類型;變量標(biāo)識(shí)符列表:類型;其中,保留字 var 表示開始一個(gè)變量說(shuō)明部分。變量標(biāo)識(shí)符列表是一個(gè)用逗號(hào)隔開的標(biāo)識(shí)符 序列,冒號(hào)后面的類型是類型標(biāo)識(shí)符。每個(gè)變量說(shuō)明均以分號(hào)結(jié)束。例如:varb,c:integer;m,n:real;標(biāo)準(zhǔn)函數(shù)算術(shù)函數(shù)abs 絕對(duì)值exp 指數(shù)frac 小數(shù)部分int 整數(shù)部分ln 自然對(duì)數(shù)pi 圓周率sqr 平方sqrt 平方根abs(-4)=4abs(-7.49)=7.49frac(-3.71)=-0.71int(-3.71)=-3.0sqr(4)=16sqrt(4)=2標(biāo)量函數(shù)函數(shù)標(biāo)識(shí)符自變量類型意義結(jié)果類型odd 判斷奇數(shù)pred 求

21、前趨succ 求后繼例: odd(1000)=false odd(3)=true pred(2000)=1999 succ(2000)=2001 pred(x)=w succ(x)=y轉(zhuǎn)換函數(shù)chr 自量對(duì)應(yīng)的字符ord 自量對(duì)應(yīng)的序號(hào)longintround 四舍五入trunc 截?cái)嗳≌鹟ongint雜類函數(shù)random無(wú)自變量0,1)之間的隨機(jī)實(shí)數(shù)realrandomword0,自變量)之間的隨機(jī)整數(shù)wirdrandomize無(wú)自變量用一隨機(jī)值初始化內(nèi)部隨機(jī)數(shù)產(chǎn)生器longintupcase字符型使小寫英文字母變?yōu)榇髮懽址瓦\(yùn)算符和表達(dá)式1.運(yùn)算符和優(yōu)先級(jí)(1)運(yùn)算符a.算術(shù)運(yùn)算符運(yùn)算符運(yùn)

22、算運(yùn)算對(duì)象結(jié)果類型+ 只要有一個(gè)運(yùn)算對(duì)象是實(shí)型,結(jié)果就是實(shí)型,如果全部的運(yùn)算對(duì)象都是整型并且運(yùn)算 不是除法,則結(jié)果為整型,若運(yùn)算是除法,則結(jié)果是實(shí)型-減*乘/除div 整除mod 取余邏輯運(yùn)算符 not 邏輯非 and 邏輯與 or 邏輯或 xor 邏輯異或關(guān)系運(yùn)算符 - 施丁= 等于不等于 大于= 大于等于(2)優(yōu)先級(jí) not1(高):*,/,div,mod,and:xor,+,-,or:in,=,=,=,4(低)表達(dá)式算術(shù)表達(dá)式:算術(shù)表達(dá)式是由算術(shù)運(yùn)算符連接常量、變量、函數(shù)的式子。算術(shù)表達(dá)式中 各個(gè)運(yùn)算符的次序?yàn)椋?( )-函數(shù)-*,/,div,mod-+,1布爾表達(dá)式:Turbo Pas

23、cal提供給布爾表達(dá)式以下基本操作:邏輯運(yùn)算和關(guān)系運(yùn)算。第三章 順序結(jié)構(gòu)程序設(shè)計(jì)賦值語(yǔ)句 賦值語(yǔ)句是最簡(jiǎn)單的語(yǔ)句,其一般形式為::=賦值語(yǔ)句的作用是計(jì)算表達(dá)式的值,并賦給變量。對(duì)于任何一個(gè)變量必須首先賦值,然后才 能引用,否則,未賦初值的變量將以一個(gè)隨機(jī)值參與運(yùn)算。另外,賦值號(hào)兩邊的類型必須相 同,但表達(dá)式值為整數(shù)時(shí),它可自動(dòng)化為實(shí)型后賦給該實(shí)型變量,即符合賦值相容。 例:關(guān)于賦值的例子program example;var a,b:integer;begina:=3;b:=2;writeln(a);writeln(b);a:=a+b;writeln(a);writeln(b);b:=a-b;

24、writeln(a);writeln(b);a:=a-b;writeln(a);writeln(b);readlnend.輸入語(yǔ)句通過(guò)計(jì)算機(jī)的外設(shè)把數(shù)據(jù)送到計(jì)算機(jī)內(nèi)存的過(guò)程稱為輸入。Pascal語(yǔ)言的輸入語(yǔ)句有 如下兩種形式:read(變量名表); readln(變量名表);輸入項(xiàng)表是一個(gè)或幾個(gè)由逗號(hào)隔開的變量標(biāo)識(shí)符,他們必須在程序說(shuō)明部分預(yù)先說(shuō)明,他 們可以是整型、實(shí)型或字符型,布爾型不可以直接讀入。例如a, b, c為整型變量,read(a,b,c)之后鍵盤輸入:20 30 40CR(CR表示回車)結(jié)果:a=20, b=30, c=40readln語(yǔ)句和read語(yǔ)句不同之處在于輸入數(shù)據(jù)到各

25、變量之后,readln自動(dòng)換行,從下 一行開始再輸入數(shù)據(jù)。一個(gè)read語(yǔ)句執(zhí)行完后,數(shù)據(jù)行中多余的未讀數(shù)據(jù)可以被下一個(gè)輸 入語(yǔ)句讀入;而一個(gè)readln于執(zhí)行完后,數(shù)據(jù)行中多余未讀數(shù)據(jù)就沒(méi)有用了。readln語(yǔ)句 中可以不包含變量名表。即有以下等價(jià)情況: readln(a,b);readln 等價(jià)于 readln(a,b)輸入語(yǔ)句輸入的數(shù)據(jù)類型必須和變量一一對(duì)應(yīng)。如果輸入的是一串整數(shù)或?qū)崝?shù),數(shù)據(jù)間 用空格或回車分隔;若輸入的是一串字符,則不用分隔。例:輸入語(yǔ)句示例program shuru;varx:real;c:char;begin write(please input the number

26、: ($XXX.XX); readln(c,x);writeln(The price is ,c,x)end.輸出語(yǔ)句輸出是將內(nèi)存中的數(shù)據(jù)送到外設(shè)的過(guò)程。Turbo Pascal的輸出語(yǔ)句有兩種形式: writ e(輸出項(xiàng)表) wri teln(輸出項(xiàng)表)其中輸出項(xiàng)表是一串用逗號(hào)分隔的常量、變量、函數(shù)名、表達(dá)式或字符串。如果是變 量、函數(shù)名、表達(dá)式,則將其計(jì)算結(jié)果輸出;如果是常量或字符串,則直接輸出其值。writeln和writeln的區(qū)別在于:write語(yǔ)句是輸出項(xiàng)輸出后,不換行,光標(biāo)停留在最 后一項(xiàng)后,writeln語(yǔ)句按項(xiàng)輸出后,自動(dòng)換行,光標(biāo)則停留在下一行的開始位置。writeln語(yǔ)句

27、允許不含有輸出項(xiàng),即僅writeln;表示換行。Turbo Pascal 語(yǔ)言把輸出項(xiàng)的數(shù)據(jù)顯示占用的寬度稱為域?qū)挘憧梢愿鶕?jù)輸出格式的 要求在輸出語(yǔ)句中自動(dòng)定義每個(gè)輸出項(xiàng)的寬度。定義寬度時(shí)分為單域?qū)捄碗p域?qū)?。?)單域?qū)捿敵龈袷剑簑riteln(I: n)在n個(gè)字符寬的輸出域上按右對(duì)齊方式輸出I的值,若n大于I的實(shí)際位數(shù),則在I 值前面補(bǔ)(n-I的實(shí)際位數(shù))個(gè)空格。若I的實(shí)際位數(shù)大于n,則自動(dòng)突破限制。n必須是整 數(shù)。(2)雙域?qū)捿敵龈袷剑簑riteln(a: m: n)雙域?qū)捴饕糜趯?shí)型數(shù)據(jù)的輸出。n的用法同上。在n個(gè)字符寬的輸出域上按右隊(duì)齊方 式用小數(shù)點(diǎn)形式輸出a的數(shù)值,m是小數(shù)點(diǎn)后的位

28、數(shù)。原來(lái)的數(shù)據(jù)按該該格式指定的小數(shù)位 數(shù)四舍五入。若m=0,則不輸出小數(shù)部分和小數(shù)點(diǎn),原數(shù)據(jù)四舍五入取整。n,m必須是整 數(shù)。例:輸出語(yǔ)句的例子program shuchu;consts=pascal;vari:integer;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.復(fù)合語(yǔ)句復(fù)合語(yǔ)句是由若干語(yǔ)句組成的序列,語(yǔ)句之間用分號(hào)“;”隔開,并且以beg

29、in和end括起來(lái),作為一條語(yǔ)句。復(fù)合語(yǔ)句的一般形式:begin語(yǔ)句 1;語(yǔ)句 2; 語(yǔ)句 n;end例:變量值的交換program jiaohuan;vara,b,t:integer;begina:=10;b:=20;begint:=a;a:=b;b:=t;end;writeln(a=,a,b=,b)end.第四章 選擇結(jié)構(gòu)程序設(shè)計(jì)一、if語(yǔ)句IF語(yǔ)句是由一個(gè)布爾表達(dá)式和兩個(gè)供選擇的操作序列組成。運(yùn)行時(shí)根據(jù)布爾表達(dá)式求 值結(jié)果,選取其中之一的操作序列執(zhí)行。有兩種形式的IF語(yǔ)句:if 布爾表達(dá)式 then 語(yǔ)句;if 布爾表達(dá)式 then 語(yǔ)句 1else 語(yǔ)句 2;當(dāng)布爾表達(dá)式的值為真,則執(zhí)

30、行then后面的語(yǔ)句,值為假時(shí)有兩種情況:要么什么也 不做,要么執(zhí)行else后面的語(yǔ)句。注意else前面沒(méi)有分號(hào),因?yàn)榉痔?hào)是兩個(gè)語(yǔ)句之間的分 隔符,而else并非語(yǔ)句。如果在該處添了分號(hào),則在編譯的時(shí)候就會(huì)認(rèn)為if語(yǔ)句到此結(jié) 束,而把else當(dāng)作另一句的開頭,輸出出錯(cuò)信息。例:求 y=f(x),當(dāng) x0 時(shí),y=l,當(dāng) x=0 時(shí),y=0,當(dāng) x0 時(shí),y=-lprogram lianxi;var x,y:real;beginif x0 then y:=1;if x=0 then y:=0;if x0 then y:=-1;writeln(y=,y);end.在 Turbo Pascal 語(yǔ)言

31、 if 語(yǔ)句中被構(gòu)造的語(yǔ)句只能是一條語(yǔ)句,當(dāng)條件選擇某個(gè)分支的 計(jì)算要用多個(gè)語(yǔ)句描述時(shí),就必須把該分支用begin和end括來(lái),寫成復(fù)合語(yǔ)句。在用if 語(yǔ)句連續(xù)嵌套時(shí),如果你插入適量的復(fù)合語(yǔ)句,有利于程序的閱讀和理解。例:當(dāng)x0時(shí)候,計(jì)算x*x,并且輸出x和x*x,program lianxie3;var x,x1:real;beginreadln(x=,x);if x= thenbeginx1:=x*x;writeln(x*x=,x1); writeln(x=,x);end;end.當(dāng) if 語(yǔ)句嵌套時(shí), Turbo Pascal 約定 else 總是和最近的一個(gè) if 配對(duì)。二、case語(yǔ)

32、句case 語(yǔ)句是由一個(gè)表達(dá)式和眾多可選擇的操作序列組成。運(yùn)行時(shí),根據(jù)表達(dá)式的求值 結(jié)果,在眾多的分支中選取一個(gè)分支執(zhí)行。其形式為:case 表達(dá)式 of常量 1:語(yǔ)句 1;常量2:語(yǔ)句2; 常量n:語(yǔ)句n;else語(yǔ)句n+1 可選項(xiàng) end;表達(dá)式只能是順序類型(除了實(shí)型以外的簡(jiǎn)單類型),其值必須是唯一確定并且和表達(dá) 式類型相同。case語(yǔ)句執(zhí)行和表達(dá)式值相匹配的case常數(shù)所指向的那條語(yǔ)句,如果沒(méi)有相 匹配的值,則執(zhí)行 else 部分(如果有的話)或者什么也不做。在 else 前面的語(yǔ)句末尾有分 號(hào),這是和if語(yǔ)句不同的。例:根據(jù)學(xué)生的成績(jī)給予相應(yīng)的等低,對(duì)應(yīng)關(guān)系如下: TOC o 1-5

33、 h z 9 0 100A8 0 89B6 0 79C6 0以下Dprogram chengji;var s:real;ch:char;beginwrite(input the score: );readln(s);if(s=0)and(s=100)thencase s div 10 of10,9:ch:=B;8:ch:=B;7,6:=C;else ch:=D;end;writeln(s,-,ch);end.第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)while 語(yǔ)句while語(yǔ)句用于“當(dāng)滿足某一條件時(shí)進(jìn)行循環(huán)”的情況。while語(yǔ)句的語(yǔ)法格式:while 布爾表達(dá)式 do 語(yǔ)句;循環(huán)結(jié)束條件在進(jìn)入循環(huán)體之前測(cè)試

34、,若最初的測(cè)試值為false,則根本不進(jìn)入循環(huán)體, 也就是說(shuō)while循環(huán)是是屬于當(dāng)型循環(huán)。為了能使while重復(fù)能終止,循環(huán)體中一定要有影 響布爾表達(dá)式的操作,否則該循就是一個(gè)死循環(huán)。例:計(jì)算從0到某個(gè)數(shù)之間所有奇數(shù)的和。program jishu;var odds,limit,sum:integer;beginreadln(limit);sum:=0;odds:=1;while odds=limit dobeginsum:=sum+odds;odds:=odds+2end;writeln(sum:1)end.repeat 語(yǔ)句repeat 語(yǔ)句用于“重復(fù)執(zhí)行循環(huán)體,一直到指定的條件為真時(shí)為

35、止”。語(yǔ)法格式為: repeat語(yǔ)句 1;語(yǔ)句 n;until 布爾表達(dá)式;repeat重復(fù)基本上有和while重復(fù)一樣的描述循環(huán)計(jì)算的能力,但有一些不同:在 repeat語(yǔ)句的結(jié)構(gòu)中,布爾表達(dá)式求值在計(jì)算操作之后,而while語(yǔ)句中,布爾表達(dá)式求 值在計(jì)算操作之前,也就是說(shuō)repeat至少執(zhí)行一次循環(huán)體。while語(yǔ)句的成分語(yǔ)句只能是 一個(gè)語(yǔ)句。因此,當(dāng)重復(fù)動(dòng)作包含多個(gè)語(yǔ)句時(shí),要用begin和end,使它變成一個(gè)復(fù)合語(yǔ) 句。而 repeat 語(yǔ)句的保留字 repeat 和 until 已經(jīng)起語(yǔ)句括號(hào)作用,可以包含多個(gè)語(yǔ)句而無(wú) 須begin和end。repeat語(yǔ)句中,當(dāng)布爾表達(dá)式為true時(shí)

36、結(jié)束循環(huán),而while語(yǔ)句中,是 當(dāng)表達(dá)式為 false 時(shí)才結(jié)束循環(huán)。當(dāng)描述由計(jì)算操作后的情況確定重復(fù)是否繼續(xù)進(jìn)行的計(jì)算 時(shí),通常用 repeat 語(yǔ)句描述。for 語(yǔ)句for 語(yǔ)句用來(lái)描述已知重復(fù)次數(shù)的循環(huán)結(jié)構(gòu)。 for 語(yǔ)句有兩種形式:for控制變量:=初值to終值do語(yǔ)句;for控制變量:=初值 down to 終值 do 語(yǔ)句;第一種形式的 for 語(yǔ)句是遞增循環(huán)。首先將初值賦給控制變量,接著判斷控制變量的 值是否小于或等于終值,若是,則執(zhí)行循環(huán)體,在執(zhí)行了循環(huán)體之后,自動(dòng)將控制變量的值 該為它的后繼值,并重新判斷是否小于或等于終值。當(dāng)控制變量的值大于終值時(shí),退出for 循環(huán),執(zhí)行f

37、or語(yǔ)句之后的語(yǔ)句。第一種形式的for語(yǔ)句是遞減循環(huán)。首先將初值賦給控 制變量,接著判斷控制變量的值是否大于或等于終值,若是,則執(zhí)行循環(huán)體,在執(zhí)行了循環(huán) 體之后,自動(dòng)將控制變量的值該為它的前趨值,并重新判斷是否大于或等于終值。當(dāng)控制變 量的值小于終值時(shí),退出for循環(huán),執(zhí)行for語(yǔ)句之后的語(yǔ)句。for語(yǔ)句中的初值、終值、 控制變量的數(shù)據(jù)都必須是順序類型。當(dāng)初值和終值確定后,重復(fù)的次數(shù)就確定不變了,并且 控制變量在重復(fù)語(yǔ)句內(nèi)不能施加任何賦值操作。例:計(jì)算 1+2+3+99+100program jia;var n,sum:integer;beginsum:=0;for i:=1 to 100 d

38、osum:=sum+i;writeln(sum);end.goto 語(yǔ)句goto語(yǔ)句是一種無(wú)條件轉(zhuǎn)向語(yǔ)句,它可以控制直接從程序的一條語(yǔ)句轉(zhuǎn)向另一條語(yǔ)句。 goto 語(yǔ)句的語(yǔ)法形式為:goto 標(biāo)號(hào);其中標(biāo)號(hào)必須是不超過(guò)4位整數(shù)的正整數(shù)或標(biāo)識(shí)符組成,但標(biāo)號(hào)必須在說(shuō)明語(yǔ)句中先予 以說(shuō)明。goto語(yǔ)句會(huì)使程序出現(xiàn)一種稱為“亂面條”的結(jié)構(gòu),因此你最好還是不要去用。第六章 遞歸算法 將復(fù)雜的處理歸納為較簡(jiǎn)單的處理,直到 最簡(jiǎn)單的處理?;A(chǔ)為歸納,即通過(guò)觀察, 得到 3 個(gè)內(nèi)容:1、遞歸的形式;2、最基本式是否有解決的方案;3、遞歸終止的條件1、 某人寫了 n 封信和 n 個(gè)信封,如果所有的信都裝錯(cuò)了信封

39、。求所有的信都裝錯(cuò)信封 共有多少種不同情況。歸納法例子1有n個(gè)硬幣(n為偶數(shù))正面朝上排成一排,每次將 n-1 個(gè)硬幣翻成朝上為止。編程讓計(jì)算機(jī)把翻硬幣的最簡(jiǎn)過(guò)程及翻幣次數(shù)打印出來(lái)(用*代 表正面,用 0 代表反面)?;拘问剑篋1=0;d2=1遞歸式: dn= (n-1)*( dn-1 + dn-2)program lettter;var n:integer;function d(n:integer):longint;begincase n of1:d:=0;2:d:=1;else d:=(n-1)*(d(n-1)+d(n-2);end;end;beginrepeat write(n=);

40、readln(n);if n0;writeln(d=,d(n);readln;end.2、有一對(duì)雌雄兔子,假定兩個(gè)月便可以繁殖雌雄各一對(duì)兔子。問(wèn)n各月后共有多少對(duì) 兔子?遞歸的三要素: 遞歸的形式: Tn= Tn-1+ Tn-2 基本: T1=1, T2=1結(jié)束條件: n 個(gè)月program rabbit;var n:integer;function fa(n:integer):integer;beginif n0;writeln(s=,s(n);readln;end.4、設(shè)有2n個(gè)運(yùn)動(dòng)員要進(jìn)行網(wǎng)球比賽?,F(xiàn)要設(shè)計(jì)一個(gè)滿足以下要求的比賽日程表:、每個(gè)選手必須與其他 n-1 個(gè)選手各賽一次;、每個(gè)

41、選手每天只能參賽一次;、循環(huán)賽在 n-1 天內(nèi)結(jié)束。 program match;const k=3;n=8;vars:array1.n,1.n of integer;i,j,p:integer;ju:boolean;procedure copy1(be,en:integer;jug:boolean;q:integer);var m,t,ban:integer;beginif jug thenbeginif be=1 thenbegin if sen,en=0 thenbegin copy1(be,en div 2,true,q div 2); copy1(en div 2)+1,en,fal

42、se,q div 2);end;for m:=1 to en dofor t:=1 to en dosm+q,t+q:=sm,tendelse begin if sbe+q-1,q=0 thenbegin copy1(be,be+(q div 2)-1,true,q div 2); copy1(be+(q div 2),en,false,q div 2)end;for m:=be to en dofor t:=1 to q dosm+q,t+q:=sm,tendendelse beginif sbe,q=0 thenbegin copy1(be,be+(q div 2)-1,true,q di

43、v 2); copy1(be+(q div 2),en,false,q div 2)end;for m:=be to en dofor t:=1 to q dosm-q,t+q:=sm,tendend;beginp:=8;for i:=1 to n dofor j:=1 to n dosi,j:=0;for i:=1 to n dobeginsi,1:=i;if odd(i) then si+1,2:=si,1else si-1,2:=si,1;end;copy1(1,n div 2,true,p div 2);copy1(n div 2)+1,n,false,p div 2);for i:=

44、1 to n dobeginfor j:=1 to n dowrite(si,j, );writeln;end;end.思考題1、數(shù)學(xué)寶塔,從最頂上走到最底層,每次只能走到下一層的左邊或右邊的數(shù)字,求 出使所走到的所有數(shù)字之和為 60 1、746625677漢諾塔問(wèn)題:77漢諾塔問(wèn)題:小到大依次編號(hào)為 1、2、52依次命名為x,y,z。有z個(gè)直徑不同的圓盤,由7 設(shè)有三個(gè)塔座,7 設(shè)有三個(gè)塔座,n。開始時(shí),它們?nèi)堪催f減的次序插在塔座上?,F(xiàn)要求按2、下列規(guī)則把n個(gè)圓盤按次序插放在z塔座上。(1)、每次只能移動(dòng)一個(gè)圓盤;2)、圓盤可以從任一個(gè)塔座上移到另一個(gè)塔座上;3)、任何時(shí)刻都不能把一個(gè)較大

45、的圓盤壓在較小的圓盤上。第七章 回溯算法 搜索:全面訪問(wèn)所有可能的情況,分為兩種:不考慮給定問(wèn)題的特有性質(zhì),按事先頂 好的順序,依次運(yùn)用規(guī)則,即盲目搜索的方法;另一種則考慮問(wèn)題給定的特有性質(zhì),選用合 適的規(guī)則,提高搜索的效率,即啟發(fā)式的搜索。 回溯即是較簡(jiǎn)單、較常用的搜索策略。基本思路:若已有滿足約束條件的部分解,不妨設(shè)為(xl,x2,x3,xi), In,則添加x(i+l)屬于s(i+2),檢查(xl,x2,xi,x(i+l)是否滿足條件,滿足了就繼續(xù)添加x(i+2)、s(i+2),若所有的x(i+1)屬于s(i+1)都不能得到部分解,就去掉xi,回溯到 (xi,x2,x(i-1),添加那些

46、未考察過(guò)的x1屬于si,看其是否滿足約束條件,為此反復(fù)進(jìn)行,直至得到解或證明無(wú)解。例 i 八皇后問(wèn)題。 program eightqueens;varx:arrayi.8 of integer;b,c:array-7.i6 of boolean; i:integer;procedure print;var k:integer;beginfor k:=i to 8 do write(xk:4);writeln;end;procedure try(i:integer);var j:integer;beginfor j:=i to 8 doif aj and bi+j and ci-jthen be

47、ginxi:=j;aj:=false; bi+j:=false; ci-j:=false;if i8 then try(i+i)else print; aj:=true; bi+j:=true; ci-j:=true endend;beginfor i:=-7 to i6 dobeginai:=true; bi:=true;ci:=trueend;try(1);end.例2 跳馬問(wèn)題。在 5*5 格的棋盤上,有一個(gè)國(guó)家象棋的馬,它可以朝8 個(gè)方向跳 但不允許出界或跳到已跳過(guò)的格子上,要求在跳遍整個(gè)棋盤后再條回出發(fā)點(diǎn)。 program jump;varh:array-1.7,-1.7 of in

48、teger;a,b:array1.8 of integer;j,num:integer;procedure print;var i,j:integer;beginnum:=num+1;if num=5 thenbeginfor i:=1 to 5 dobeginfor j:=1 to 5 do write(hi,j:4); writeln;end;writeln;end;end;procedure try(x,y,i:integer);var j,u,v:integer;beginfor j:=1 to 8 dobegin u:=x+aj; v:=y+bj;if hu,v=0 then beg

49、in hu,v:=i;if i=1)and(i=1)and(j=5) then hi,j:=0else hi,j:=1;a1:=2;b1:=1;a2:=1;b2:=2;a3:=-1;b3:=2;a4:=-2;b4:=1;a5:=-2;b5:=-1;a6:=-1;b6:=-2;a7:=1;b7:=-2;a8:=2;b8:=-1;num:=0;h1,1:=1;try(1,1,2);writeln(num=,num);end.思考題1、試編程找出下列字母方陣中所隱含的單詞fujian,單詞中字母的走向可以是圖的 編號(hào)為 18 的 8 個(gè)方向,要求打印的格式為:(x,y),a1,a2,a3,a4,a5

50、(其中(x,y)為首字母f所在的行、列坐標(biāo),a1,a2,a3,a4,a5為后續(xù)每個(gè)字母相對(duì)前一個(gè) 字母的代號(hào)。f u j u a n j i f i u n n u i j u f u a n j n a i a j f i u j n n i n f第八章 枚舉型和子界型類型定義類型定義的語(yǔ)法格式:type標(biāo)識(shí)符 1=類型 1;標(biāo)識(shí)符 1=類型 1;標(biāo)識(shí)符n=類型n;枚舉類型 通過(guò)預(yù)定義列出所有值的標(biāo)識(shí)符來(lái)定義一個(gè)有序集合,這些值的次序和枚舉類型說(shuō)明中的標(biāo)識(shí)符的次序識(shí)一致的。枚舉類型的形式:(標(biāo)識(shí)符1,,標(biāo)識(shí)符n)例如: type daystype=(sunday,monday,tuesda

51、y,wednesday,thursday,friday,saturday) 枚舉元素只能是標(biāo)識(shí)符,而不能是數(shù)值常量或字符常量。例如以下的定義是錯(cuò)誤的: type daystype=(sun,mon,tue,wed,thu,fri,sat)枚舉元素是標(biāo)識(shí)符,不要把作為枚舉元素的標(biāo)識(shí)符視作變量名,它不能被賦值。同一個(gè) 枚舉元素不能出現(xiàn)在兩個(gè)或兩個(gè)以上的枚舉類型定義中。例如以下的定義是錯(cuò)誤的: type daytype1=(monday,tuesday);daytype2=(monday,wednesday); 可以將枚舉類型的定義和變量的定義結(jié)合在一起。例如: vara:(monday,tuesd

52、ay,sunday) 枚舉類型屬于順序類型。根據(jù)定義類型時(shí)各枚舉元素的排列順序確定它們的序列,序列號(hào)從 0 開始。例如:已經(jīng)定義 daystype ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday 但是枚舉類型中的第一個(gè)元素沒(méi)有前趨,最后一個(gè)元素沒(méi)有后繼。 Turbo Pascal 不允許直接讀寫枚舉值,所以枚舉值的輸出常用case語(yǔ)句間接的輸出。枚舉值的輸入,則要一 一判斷讀入字符是否是枚舉類型的標(biāo)識(shí)符。若是才能賦給枚舉變量,否則就會(huì)出錯(cuò)。 例如:枚舉值的輸出case day ofsunday:write(sunday);mond

53、ay:write(monday); tuesday:write(tuesday);wednesday:write(wednesday); thursday:write(thursday);friday:write(friday);saturday:write(saturday);end;子界類型 子界類型是由整型、字符型、枚舉型、布爾型的兩個(gè)常量指定該類型的值域區(qū)間。子界 類型的形式:常量常量?jī)蓚€(gè)常量必須是同一種順序類型。例如:a., b,要求a=b例如:type a=1.3;b=a.d;一個(gè)子界類型繼承它的常量類型的運(yùn)算符和標(biāo)準(zhǔn)函數(shù),常量類型相容的不同子界類型可 以混合運(yùn)算,可以賦值??梢詫?/p>

54、子界類型的定義和變量的定義結(jié)合在一起。例如: vara:1. 9 例 按月、日、年順序讀入一日期,輸出該日期是這一年中的第幾天。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 1000)or(year mod 400 =0)then dayth:=dayth

55、+29else dayth=:=dayth+28;4,6,9,11:dayth:=dayth+30;end;dayth:=dayth+day;writeln(dayth)end.類型相容和賦值相容1.類型相容性類型相容是對(duì)參加同一運(yùn)算的兩個(gè)對(duì)象的類型要求。設(shè)有兩個(gè)變量,如果滿足下列條件 之一,就說(shuō)這兩個(gè)變量的類型相容。兩個(gè)變量的類型相同兩個(gè)變量被同一類型說(shuō)明。例如: var a,b:1.30;兩個(gè)變量的類型是同一類型標(biāo)識(shí)符。例如: var a:1.30;b:1.30;兩個(gè)變量的類型是不同的類型標(biāo)識(shí)符,但在類型定義中已經(jīng)說(shuō)明兩個(gè)標(biāo)識(shí)符相 同。例如: type date=1.100;range=d

56、ate;var m:data;n:range;一個(gè)變量的類型是另一個(gè)變量的子界。兩個(gè)變量的類型都是同一基類型的子界。兩個(gè)變量的類型是基類型相容的集合類型。兩個(gè)變量的類型是成分相同的串類型。賦值相容性賦值相容是對(duì)賦值操作的兩個(gè)對(duì)象的類型要求。設(shè)賦值語(yǔ)句“:二”左邊的變量類型為 T,右邊表達(dá)式的類型為E,若類型T和類型E滿足下列條件之一,則稱他們是賦值相容的。T和E是相同的類型,而且類型不是文件類型,也不是具有文件類成分的構(gòu)造類型。T是實(shí)型,而E是整型或整型的子界。T和E是類型相容的順序類型,并且E的值不超出T所定義的值的范圍T和E是類型相容的集合類型,并且E的值不超出T所定義的值的范圍T 和 E

57、 是類型相容的串類型。當(dāng)T和E是順序類型或都是集合類型時(shí),不僅要求這兩個(gè)類型是相容的,而且要求E 的值不超出T所定義的值的范圍;否則將產(chǎn)生類型溢出,而這種錯(cuò)誤只能在你運(yùn)行程序時(shí)進(jìn) 行檢查,因此你必須要避免不發(fā)生這種錯(cuò)誤。第九章 數(shù)組及其應(yīng)用數(shù)組的定義 數(shù)組是程序中最常用的結(jié)構(gòu)數(shù)據(jù)類型,用來(lái)描述由固定數(shù)目的同一類型的元素組成的數(shù) 據(jù)結(jié)構(gòu)。數(shù)組的每個(gè)元素和下標(biāo)相關(guān)聯(lián),根據(jù)下標(biāo)指示數(shù)組的元素。數(shù)組的存儲(chǔ)方式為按行 存儲(chǔ),在編譯階段,計(jì)算機(jī)根據(jù)數(shù)組的類型說(shuō)明,確定其存儲(chǔ)空間的大小。數(shù)組可以是任何 順序類型。數(shù)組的定義形式:array 下標(biāo)類型1,下標(biāo)類型n of元素類型 其中n稱為數(shù)組的維數(shù),每維的下

58、標(biāo)類型必須是一個(gè)順序類型,通常為子界類型或枚舉 類型,其作用是指定數(shù)組下標(biāo)的編制方式和下標(biāo)取值范圍。例如:typecolor=(red,yellow,blue);samplel二array 1.10of int eger;有 10 個(gè)元素的一維數(shù)組sample2二arrayp1.5,1.5of real; 有 25 個(gè)元素的二維數(shù)組,依次按1, 1,1,5, 2,1,2,5,5,1,5,5數(shù)組的操作 當(dāng)數(shù)組的元素類型為簡(jiǎn)單類型時(shí),其下標(biāo)變量和簡(jiǎn)單類型變量一樣使用。例如: a50:=50;a20:=a5;一個(gè)數(shù)組,下標(biāo)的起始值和終止值是在類型定義中給定的,不能在程序執(zhí)行中再通過(guò)其 他途徑來(lái)改變,

59、所以數(shù)組元素的個(gè)數(shù)在程序運(yùn)行期間是固定不變的。數(shù)組變量作為整體僅允 許同類型數(shù)組之間的賦值運(yùn)算。例如:var x,y:array1.10of integer;x:=y例:讀入5個(gè)學(xué)生的學(xué)號(hào)和成績(jī),計(jì)算他們的平均分,若比平均分高10分的等第為A,若 比平均分高小于10分的等地為B若低于平均分,則等第為C,輸出他們的成績(jī)和等第。program sample7d1(input,output);const n=5;typeno=array1.n of integer;s=array1.nof real;vari:integer;k:real;num:no;score:s;begink:=0;for i

60、:=1 to n dobeginreadln(numi,scorei);k:=k+scorei;end;k:=k/n;for i:=1 to n dobegin write(numi,scorei); if (scorei-k)=10 then writeln(A)else if(scorei-k)0) then writeln(B)else writeln(C);end;end.3、字符串為了使程序能夠處理文字信息,Turbo Pascal特別引入了字符串類型,其值表示一個(gè) 具有可變長(zhǎng)度的字符序列。字符串類型定義形式為:strignn或者 string其中正整數(shù)n(l=n=255)表示構(gòu)成字

溫馨提示

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