初識(shí)Pascal語(yǔ)言_第1頁(yè)
初識(shí)Pascal語(yǔ)言_第2頁(yè)
初識(shí)Pascal語(yǔ)言_第3頁(yè)
初識(shí)Pascal語(yǔ)言_第4頁(yè)
初識(shí)Pascal語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩113頁(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、第一課初識(shí)Pascal語(yǔ)言 信息學(xué)奧林匹克競(jìng)賽是一項(xiàng)益智性的競(jìng)賽活動(dòng),核心是考查選手的智力和使用計(jì)算機(jī)解題的能力。選手首先應(yīng)針對(duì)競(jìng)賽中題目的要求構(gòu)建數(shù)學(xué)模型,進(jìn)而構(gòu)造出計(jì)算機(jī)可以接受的算法,之后要寫出高級(jí)語(yǔ)言程序,上機(jī)調(diào)試通過。程序設(shè)計(jì)是信息學(xué)奧林匹克競(jìng)賽的根本功,在青少年朋友參與競(jìng)賽活動(dòng)的第一步必須掌握一門高級(jí)語(yǔ)言及其程序設(shè)計(jì)方法。一、Pascal 語(yǔ)言概述PASCAL語(yǔ)言也是一種算法語(yǔ)言,它是瑞士蘇黎世聯(lián)邦工業(yè)大學(xué)的N沃思(Niklaus Wirth)教授于1968年設(shè)計(jì)完成的,1971年正式發(fā)表。1975年,對(duì)PASCAL語(yǔ)言進(jìn)行了修改,作為標(biāo)準(zhǔn)PASCAL語(yǔ)言。PASCAL語(yǔ)言是在AL

2、GOL 60的根底上開展而成的。它是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,可以用來(lái)編寫應(yīng)用程序。它又是一種系統(tǒng)程序設(shè)計(jì)語(yǔ)言,可以用來(lái)編寫順序型的系統(tǒng)軟件如編譯程序。它的功能強(qiáng)、編譯程序簡(jiǎn)單,是70年代影響最大一種算法語(yǔ)言。二、Pascal 語(yǔ)言的特點(diǎn)從使用者的角度來(lái)看,PASCAL語(yǔ)言有以下幾個(gè)主要的特點(diǎn):它是結(jié)構(gòu)化的語(yǔ)言。PASCAL語(yǔ)言提供了直接實(shí)現(xiàn)三種根本結(jié)構(gòu)的語(yǔ)句以及定義過程和函數(shù)(子程序)的功能??梢苑奖愕貢鴮懗鼋Y(jié)構(gòu)化程序。在編寫程序時(shí)可以完全不使用GOTO語(yǔ)句和標(biāo)號(hào)。這就易于保證程序的正確性和易讀性。PASCAL語(yǔ)言強(qiáng)調(diào)的是可靠性、易于驗(yàn)證性、概念的清晰性和實(shí)現(xiàn)的簡(jiǎn)化。在結(jié)構(gòu)化這一點(diǎn)上,比其它

3、如BASIC,FORTRAN77更好一些。有豐富的數(shù)據(jù)類型。PASCAL提供了整數(shù)、實(shí)型、字符型、布爾型、枚舉型、子界型以及由以上類型數(shù)據(jù)構(gòu)成的數(shù)組類型、集合類型、記錄類型和文件類型。此外,還提供了其它許多語(yǔ)言中所沒有的指針類型。沃思有一個(gè)著名的公式:算法數(shù)據(jù)結(jié)構(gòu)程序。指出了在程序設(shè)計(jì)中研究數(shù)據(jù)的重要性。豐富的數(shù)據(jù)結(jié)構(gòu)和上述的結(jié)構(gòu)化性質(zhì),使得PASCAL可以被方便地用來(lái)描述復(fù)雜的算法,得到質(zhì)量較高的程序。能適用于數(shù)值運(yùn)算和非數(shù)值運(yùn)算領(lǐng)域。有些語(yǔ)言如FORTRAN 66,ALGOL 60只適用于數(shù)值計(jì)算,有些語(yǔ)言如COBOL 那么適用于商業(yè)數(shù)據(jù)處理和管理領(lǐng)域。PASCAL的功能較強(qiáng),能廣泛應(yīng)用于

4、各種領(lǐng)域。PASCAL語(yǔ)言還可以用于輔助設(shè)計(jì),實(shí)現(xiàn)計(jì)算機(jī)繪圖功能。PASCAL程序的書寫格式比擬自由。不象FORTRAN和COBOL那樣對(duì)程序的書寫格式有嚴(yán)格的規(guī)定。PASCAL允許一行寫多個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上,這樣就可以使PASCAL程序?qū)懙孟笤?shī)歌格式一樣優(yōu)美,便于閱讀。由于以上特點(diǎn),許多學(xué)校選PASCAL作為程序設(shè)計(jì)課程中的一種主要的語(yǔ)言。它能給學(xué)生嚴(yán)格而良好的程序設(shè)計(jì)的根本訓(xùn)練。培養(yǎng)學(xué)生結(jié)構(gòu)化程序設(shè)計(jì)的風(fēng)格。但它也有一些缺乏之處,如它的文件處理功能較差等。 三、Pascal語(yǔ)言程序的根本結(jié)構(gòu)任何程序設(shè)計(jì)語(yǔ)言都有著一組自己的記號(hào)和規(guī)那么。PASCAL語(yǔ)言同樣必須采用其本身所規(guī)定

5、的記號(hào)和規(guī)那么來(lái)編寫程序。盡管不同版本的PASCAL語(yǔ)言所采用的記號(hào)的數(shù)量、形式不盡相同,但其根本成分一般都符合標(biāo)準(zhǔn)PASCAL的規(guī)定,只是某些擴(kuò)展功能各不相同罷了。下面我們首先來(lái)了解Pascal語(yǔ)言的程序根本結(jié)構(gòu)。為了明顯起見先舉一個(gè)最簡(jiǎn)單的PASCAL程序例子: 【例】從這個(gè)簡(jiǎn)單的程序可以看到:一個(gè)PASCAL程序分為兩個(gè)局部:程序首部和程序體或稱分程序。程序首部是程序的開頭局部,它包括:程序標(biāo)志。用program來(lái)標(biāo)識(shí)這是一個(gè)PASCAL 程序。PASCAL規(guī)定任何一個(gè)PASCAL程序的首部都必須以此字開頭。在turbo pascal語(yǔ)言中,首部也可省略。程序名稱。由程序設(shè)計(jì)者自己定義,

6、如例中的exam1。在寫完程序首部之后,應(yīng)有一個(gè)分號(hào)。程序體是程序的主體,在有的書本里也稱分程序。程序體包括說(shuō)明局部也可省略和執(zhí)行局部?jī)蓚€(gè)局部。說(shuō)明局部用來(lái)描述程序中用到的變量、常量、類型、過程與函數(shù)等。本程序中第二行是變量說(shuō)明,用來(lái)定義變量的名稱、類型。PASCAL規(guī)定,凡程序中用到所有變量、符號(hào)常量、數(shù)組、標(biāo)號(hào)、過程與函數(shù)、記錄、文件等數(shù)據(jù)都必須在說(shuō)明局部進(jìn)行定義或稱說(shuō)明。也就是說(shuō),不允許使用未說(shuō)明先使用。執(zhí)行局部的作用是通知計(jì)算機(jī)執(zhí)行指定的操作。如果一個(gè)程序中不寫執(zhí)行局部,在程序運(yùn)行時(shí)計(jì)算機(jī)什么工作也不做。因此,執(zhí)行局部是一個(gè)PASCAL程序的核心局部。執(zhí)行局部以begin開始,以end

7、結(jié)束,其間有假設(shè)干個(gè)語(yǔ)句,語(yǔ)句之間以分號(hào)隔開。執(zhí)行局部之后有一個(gè)句點(diǎn),表示整個(gè)程序結(jié)束。PASCAL程序的書寫方法比擬靈活。當(dāng)然,書寫不應(yīng)以節(jié)省篇幅為目的,而應(yīng)以程序結(jié)構(gòu)清晰、易讀為目的。在編寫程序時(shí)盡量模仿本書中例題程序格式。在程序中,一對(duì)大括號(hào)間的文字稱為注釋。注釋的內(nèi)容由人們根據(jù)需要書寫,可以用英語(yǔ)或漢語(yǔ)表示。注釋可以放在任何空格可以出現(xiàn)的位置。執(zhí)行程序時(shí)計(jì)算機(jī)對(duì)注釋不予理睬。四、Turbo Pascal語(yǔ)言系統(tǒng)的使用目前,常用的Pascal語(yǔ)言系統(tǒng)有Turbo Pascal7.0與Borland Pascal 7.0,下面我們就來(lái)學(xué)習(xí)Turbo Pascal 7.0系統(tǒng)的使用。 1 系

8、統(tǒng)的啟動(dòng)在運(yùn)行系統(tǒng)目錄下的啟動(dòng)程序TURBO.EXE,即可啟動(dòng)系統(tǒng)。屏幕上出現(xiàn)如圖1所示的集成環(huán)境。2 Turbo Pascal系統(tǒng)集成環(huán)境簡(jiǎn)介最頂上一行為主菜單。中間藍(lán)色框內(nèi)為編輯窗口,在它個(gè)編輯窗口內(nèi)可以進(jìn)行程序的編輯。最底下一行為提示行,顯示出系統(tǒng)中常用命令的快捷鍵,如將當(dāng)前編輯窗口中文件存盤的命令快捷鍵為F2,獲得系統(tǒng)幫助的快捷鍵為F1,等等。 3 新建程序窗口按F10進(jìn)行主菜單,選擇FILE菜單,執(zhí)行其中New命令。就可建立一個(gè)新的程序窗口默認(rèn)文件名為Noname00.pas或Noname01.pas等。4 程序的輸入、編輯與運(yùn)行在當(dāng)前程序窗口中,一行一行的輸入程序。事實(shí)上,程序窗口

9、是一個(gè)全屏幕編輯器。所以對(duì)程序的編輯與其它編輯器的編輯方法類似,這里不再重復(fù)。當(dāng)程序輸入完畢之后,一般要先按Alt+F9或執(zhí)行compile菜單中compile命令對(duì)程序進(jìn)行編譯。如果程序有語(yǔ)法錯(cuò)誤,那么會(huì)在程序窗口的第一行處顯示第一個(gè)紅色錯(cuò)誤信息。假設(shè)無(wú)語(yǔ)法錯(cuò)誤,那么窗口正中央會(huì)出現(xiàn)一個(gè)對(duì)話框,提示編譯成功。接下來(lái),我們可以運(yùn)行程序了。程序的運(yùn)行可以通過按ALT+R翻開RUN菜單中的RUN命令,或直接按快捷鍵CTRL+F9。那么可以在用戶窗口中輸出運(yùn)行結(jié)果。通常在程序運(yùn)行結(jié)束后系統(tǒng)回到Pascal系統(tǒng)的集成環(huán)境,因此要查看運(yùn)行結(jié)果,要按ALT+F5將屏幕切換到用戶屏幕。5程序的保存與翻開當(dāng)我

10、們想把程序窗口中的程序存入磁盤時(shí),可以通過按F2鍵(或執(zhí)行File菜單中的save命令)來(lái)保存程序。第一次保存文件時(shí)屏幕上會(huì)出現(xiàn)一個(gè)對(duì)話框要求輸入文件名(默認(rèn)擴(kuò)展名為.pas)。當(dāng)我們要將磁盤上的程序文件中的PASCAL程序裝入窗口時(shí),可按F3(或執(zhí)行File菜單中的Open命令)來(lái)裝入程序,此時(shí)系統(tǒng)也會(huì)彈出一個(gè)對(duì)話框要求輸入要翻開的文件名,或直接在文件對(duì)話框列表中選擇所要的文件,然后回到翻開文件。五、第一個(gè)程序下面程序在運(yùn)行時(shí),會(huì)提示輸入一個(gè)圓的半徑,然后會(huì)在屏幕上畫一個(gè)圓。按回車后程序結(jié)束回到程序窗口。Program ex1;Uses graph;Var Gm,Gd,R :integer;

11、BeginGd:=0;Write(Please enter the radius:);readln(R);Initgraph(Gm,Gd, );Setcolor(Green);Circle(320,240,R);Readln;Closegraph;End.注意,如果上面程序運(yùn)行時(shí)會(huì)出現(xiàn)初始化圖形錯(cuò)誤,請(qǐng)將系統(tǒng)目錄下BGI子目錄EGAVGA.BGI和UNITS子目錄中的Graph.tpu拷貝到系統(tǒng)目錄下BIN目錄即可。請(qǐng)輸入上面的程序,并練習(xí)將其存盤、翻開與運(yùn)行上面程序。第二課 賦值語(yǔ)句、輸出語(yǔ)句 上節(jié)課,我們學(xué)習(xí)了Pascal語(yǔ)言的程序根本結(jié)構(gòu),在一個(gè)程序中,所有的操作都由執(zhí)行局部來(lái)完成,而執(zhí)

12、行局部又都是由一個(gè)個(gè)語(yǔ)句組成的。因此,下面開始我們要學(xué)習(xí)pascal語(yǔ)言的根本語(yǔ)句,并且在學(xué)習(xí)過程中逐步學(xué)會(huì)程序設(shè)計(jì)的根本方法。這節(jié)課我們要學(xué)習(xí)兩種語(yǔ)句,即賦值語(yǔ)句與輸出語(yǔ)句。在語(yǔ)句學(xué)習(xí)之前我們要先了解一些pascal語(yǔ)言的根底知識(shí)。一、 常量、變量與算術(shù)表達(dá)式一常量在程序運(yùn)行過程中,其值不能被改變的量稱為常量。如123,145.88,abc,true等。整型常量整型常量采用我們平常使用的十進(jìn)制整數(shù)表示。如138,0,-512等都是整型常量,而18.或18.0都不是整型常量。pascal中有一個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)符Maxint,它代表所使用的計(jì)算機(jī)系統(tǒng)允許的最大整型數(shù),而最小的整型數(shù)即為Maxint-1

13、。一個(gè)整型數(shù)據(jù)用來(lái)存放整數(shù)。Turbo 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位 T

14、urbo Pascal規(guī)定了兩個(gè)預(yù)定義整型常量表識(shí)符maxint和maxlonint,他們各表示確定的常數(shù)值,maxint為32767, maxlongint為2147483647,他們的類型分別是integer 和longint。 實(shí)型常量實(shí)型常量包括正實(shí)數(shù)、負(fù)實(shí)數(shù)和實(shí)數(shù)零。pascal中表示實(shí)型常量的形式有兩種。十進(jìn)制表示法這是人們?nèi)粘J褂玫膸?shù)點(diǎn)的表示方法。如0.0,-0.0,+5.61,-8.0,-6.050等都是實(shí)型常量,而0.,.37都不是合法的實(shí)數(shù)形式??茖W(xué)記數(shù)法科學(xué)記數(shù)法是采用指數(shù)形式的表示方法,如1.25105可表示成1.25E+05。在科學(xué)記數(shù)法中,字母E表示10這個(gè)底數(shù)

15、,而E之前為一個(gè)十進(jìn)制表示的小數(shù),稱為尾數(shù),E之后必須為一個(gè)整數(shù),稱為指數(shù)。 如-1234.56E+26 , +0.268E-5 , 1E5是合法形式,而.34E12 , 2.E5 , E5 ,E,1.2E+0.5都不是合法形式的實(shí)數(shù)。無(wú)論實(shí)數(shù)是用十進(jìn)制表示法還是科學(xué)表示法,它們?cè)谟?jì)算機(jī)內(nèi)的表示形式是一樣的,總是用浮點(diǎn)方式存儲(chǔ)。和整數(shù)相比,實(shí)數(shù)能表示的范圍大得多,但值得注意的是實(shí)數(shù)的運(yùn)算整數(shù)的運(yùn)算速度慢且無(wú)法像整數(shù)那樣精確表示,只能近似表示。一個(gè)實(shí)型數(shù)據(jù)用類存放實(shí)數(shù)。Turbo Pascal支持五種預(yù)定義實(shí)型,它們是real根本實(shí)型、 single但精度實(shí)型、double雙精度實(shí)型、exten

16、ded擴(kuò)展實(shí)型、comp裝配實(shí)型,Turbo Pascal分別用相同的名字作為他們的表識(shí)符。每一種類型規(guī)定了相應(yīng)的實(shí)數(shù)取值范圍、所占用的內(nèi)存字節(jié)數(shù)以及它們所能到達(dá)的精度。 類型 數(shù)值范圍 占字節(jié)數(shù) 有效位數(shù)real 2.9e-39.1.7e38 6 11.12single 1.5e-45.3.4e38 4 7.8double 5.0e-324.1.7e308 8 15.16extended 3.4e-4932.1.1e4932 10 19.20comp -2*63+1.2*63-1 8 19.20 Turbo Pascal支持兩種用于執(zhí)行實(shí)型運(yùn)算的代碼生成模式:軟件仿真模式和80 x87浮點(diǎn)模

17、式。除了real可以在軟件仿真模式下直接運(yùn)行以外,其他類型必須在80 x87浮點(diǎn)模式下運(yùn)行。 字符常量在Pascal語(yǔ)言中,字符常量是由單個(gè)字符組成,所有字符來(lái)自ASCII字符集,共有256個(gè)字符。在程序中,通常用一對(duì)單引號(hào)將單個(gè)字符括起來(lái)表示一個(gè)字符常量。如:a,A,0等。特殊地,對(duì)于單引號(hào)字符,那么要表示成。對(duì)于ASCII字符集中,按每個(gè)字符在字符集中的位置,將每個(gè)字符編號(hào)為0255,編號(hào)稱為對(duì)應(yīng)字符的序號(hào)。4布爾常量布爾型常量?jī)H有兩個(gè)值,真和假,分別用標(biāo)準(zhǔn)常量名true和false表示。它們的序號(hào)分別為1和0。5符號(hào)常量一個(gè)常量即可以直接用字面形式表示稱為直接常量, 如 124,156.

18、8,也可以用一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,稱為符號(hào)常量。但符號(hào)常量必須在程序中的說(shuō)明局部定義,也就是說(shuō)先定義,后使用。定義符號(hào)常量的一般格式:CONST=說(shuō)明:常量說(shuō)明局部以關(guān)鍵字const開頭, 后面的標(biāo)識(shí)符為常量標(biāo)識(shí)符,其中=號(hào)后的常量為整數(shù)、實(shí)數(shù)、字符、 字符串字符、字符串常量在后面章節(jié)中將作介紹。而且,在常量說(shuō)明局部可以將幾個(gè)常量說(shuō)明成符號(hào)常量,共用一個(gè)關(guān)鍵字const。例如:那么在本程序中pi和zero作為符號(hào)常量,分別代表實(shí)數(shù)3.14159和整數(shù)0。也就是說(shuō),常量說(shuō)明局部既定義了常量名及其值,又隱含定義了常量的類型。 關(guān)于符號(hào)常量,應(yīng)注意以下幾點(diǎn):符號(hào)常量一經(jīng)定義,在程序的執(zhí)行局部就只

19、能使用該常量標(biāo)識(shí)符,而不能修改其值。使用符號(hào)常量比直接用數(shù)值更能表達(dá)見名知義的原那么,也便于修改參數(shù),故一個(gè)較好的程序中,應(yīng)盡量使用符號(hào)常量,在執(zhí)行局部根本上不出現(xiàn)直接常量。二變量變量代表了一個(gè)存儲(chǔ)單元,其中的值是可變的,故稱為變量。如游戲魂斗羅中玩者命的個(gè)數(shù)最初為3,當(dāng)你死了一次命減少一,這里命的個(gè)數(shù)就是一個(gè)變量或者說(shuō)命的個(gè)數(shù)存儲(chǔ)在一個(gè)存儲(chǔ)單元中。即在程序運(yùn)行過程中,其值可以改變的量,稱為變量。變量有三個(gè)要素是:變量名、變量類型、變量值。一個(gè)程序中可能要使用到假設(shè)干個(gè)變量,為了區(qū)別不同的變量,必須給每個(gè)變量存貯單元取一個(gè)名稱為變量名,該變量存貯單元存放的值稱為變量的值,變量中能夠存放值的類型

20、為變量的類型。例如 魂斗羅游戲中用于存放命的變量,在游戲程序中的名字可取為N,它的類型為整型,游戲初始時(shí)這個(gè)變量的值為3。1變量名用一個(gè)合法的標(biāo)識(shí)符代表一個(gè)變量。如n,m,rot,total 等都是合法變量名。在程序中用到的變量必須在說(shuō)明局部加以說(shuō)明,變量名應(yīng)遵循自定義標(biāo)識(shí)符的命名規(guī)那么,并注?quot;見名知義的原那么,即用一些有意義的單詞作為變量名。自定義標(biāo)識(shí)符的命名規(guī)那么為:自定義標(biāo)識(shí)符必須以字母包含下劃線_開頭,后面的字符可以是字母或數(shù)字。標(biāo)識(shí)符長(zhǎng)度不超過63個(gè)字符。2變量的類型常量是有類型的數(shù)據(jù),變量在某一固定時(shí)刻用來(lái)存放一個(gè)常量,因此也應(yīng)有相應(yīng)的類型。如整型變量用來(lái)存放整數(shù),實(shí)型變

21、量用來(lái)存放實(shí)數(shù)。3變量說(shuō)明在程序中假設(shè)要使用變量,變量的名稱及類型在程序的變量說(shuō)明局部加以定義,變量的值那么在程序的執(zhí)行局部中才能賦給。變量說(shuō)明的一般格式:VAR,:;(中括號(hào)內(nèi)局部表示可省,下同)其中VAR是pascal保存字,表示開始一個(gè)變量說(shuō)明段, 每個(gè)變量標(biāo)識(shí)符或由逗號(hào)隔開的多個(gè)變量標(biāo)識(shí), 必須在它的冒號(hào)后面說(shuō)明成同一類型。一個(gè)程序中,可以說(shuō)明許多不同類型的變量,每種類型變量之間用分號(hào)隔開,共用一個(gè)VAR符號(hào)。例如:varage,day:integer;amount,average:real;其中,Integer(整型)、Real(實(shí)型)是標(biāo)準(zhǔn)標(biāo)識(shí)符, 它們是類型標(biāo)識(shí)符,代表了確定的類

22、型,如age和 day 被定義為整型變量,amount和average被定義為實(shí)型變量。一旦定義了變量,就確定了它的類型,也就是說(shuō),就確定了該變量的取值范圍和對(duì)該變量所能進(jìn)行的運(yùn)算。三算術(shù)表達(dá)式算術(shù)表達(dá)式的定義pascal語(yǔ)言中的算術(shù)表達(dá)式是由符合pascal語(yǔ)法規(guī)定的運(yùn)算對(duì)象(包括常量、變量、函數(shù))、算術(shù)運(yùn)算符、圓括號(hào)組成的有意義的式子。如:A+3.14159*5/8.4-Abs(-1123)算術(shù)運(yùn)算符常用的有以下6個(gè)算術(shù)運(yùn)算符: (加) (減) (乘) (實(shí)數(shù)除)得到結(jié)果為實(shí)型.如5.0/2.0=2.5, 5/2= 2. 5,4/2=2.0而不等于2。DIV (整除) DIV它要求除數(shù)和被

23、除數(shù)均為整型, 結(jié)果也為整型。如10 DIV 2=5,10 DIV 3=3, 5 DIV 10=0. -15 DIV 4= -3。DIV運(yùn)算只取商的整數(shù)局部,參與DIV運(yùn)算的兩個(gè)對(duì)象不能為實(shí)型。mod (求余),也只能用于整數(shù)運(yùn)算,結(jié)果為整數(shù)。例如:10 mod 4=2 , -17 mod 4= -1 , 4 mod (-3)=1, - 4 mod 3= -1,即 a mod b=a-(a div b)*b。(3)運(yùn)算優(yōu)先順序如果一個(gè)表達(dá)式里出現(xiàn)兩個(gè)或兩個(gè)以上的運(yùn)算符, 那么必須規(guī)定它們的運(yùn)算次序。pascal規(guī)定:表達(dá)式中相同優(yōu)先級(jí)的運(yùn)算符,按從左到右順序計(jì)算;表達(dá)式中不同優(yōu)先級(jí)的運(yùn)算符,按

24、從高到低順序計(jì)算;括號(hào)優(yōu)先級(jí)最高,從內(nèi)到外逐層降低;在算術(shù)運(yùn)算中運(yùn)算符的優(yōu)先順序與數(shù)學(xué)上的四那么運(yùn)算一致,即先乘除后加減注:MOD、DIV運(yùn)算的優(yōu)先級(jí)與、/相同。二、賦值語(yǔ)句變量既然代表一個(gè)存儲(chǔ)單元,其值是可變的,那么其中的值是怎么提供的,又是怎么改變的呢?可以通過賦值語(yǔ)句來(lái)進(jìn)行。1、 賦值語(yǔ)句的格式變量名:=表達(dá)式;其中:=稱為賦值號(hào)。2、 執(zhí)行過程計(jì)算機(jī)先計(jì)算賦值號(hào)右邊表達(dá)式的值,然后將表達(dá)式的值賦給變量名代表的變量。如:A:=9*8-2-1; A:=A+1三、輸出語(yǔ)句輸出語(yǔ)句的作用是將程序運(yùn)算的結(jié)果輸出到屏幕或打印機(jī)等輸出設(shè)備。這里通常是指輸出到屏幕。一輸出語(yǔ)句的兩種格式1、 write

25、語(yǔ)句格式Write(表達(dá)式1,表達(dá)式2,);如:write(1,2,3,4);write(1.2,3.4,5);write(My name is Liping);2、 writeln語(yǔ)句格式:Write(表達(dá)式1,表達(dá)式2,)或writeln(二)輸出語(yǔ)句的功能計(jì)算機(jī)執(zhí)行到某一輸出語(yǔ)句時(shí),先計(jì)算出輸出語(yǔ)句中的每個(gè)表達(dá)式的值,并將每一個(gè)表達(dá)式的值一個(gè)接一個(gè)地輸出到屏幕上。Write語(yǔ)句與writeln語(yǔ)句格式上都相似,但它們?cè)诠δ苌嫌兴煌瑑蓚€(gè)語(yǔ)句的區(qū)別在于,write語(yǔ)句將其后括號(hào)中的表達(dá)式一個(gè)接一個(gè)輸出后,沒有換行。而writeln語(yǔ)句那么在輸出各個(gè)表達(dá)式的值后換行。例如以下兩個(gè)程序段的輸

26、出分別為:write(1,2,3,4);write(5,6);輸出為:123456writeln(1,2,3,4);write(5,6);輸出為:123456四、應(yīng)用例析例1: 某倉(cāng)庫(kù)5月1日有糧食100噸,5月2日又調(diào)進(jìn)20噸,5月3日賣出庫(kù)存的3分之二,5月4日又調(diào)進(jìn)庫(kù)存的3倍糧食,問該倉(cāng)庫(kù)從5月1日到5月4日期間每天的糧食分別是多少噸?(輸出每天的庫(kù)存量)分析:在這個(gè)問題中,主要要描述從5月1日到5月4日期間倉(cāng)庫(kù)的糧食庫(kù)存量,且易知它是不斷變化的。因此我們可以用一個(gè)變量A來(lái)描述倉(cāng)庫(kù)的糧食庫(kù)存量。程序可寫如下:Program ex1;Var A : integer;BeginA:=100;

27、Writeln(5/1:,A);A:=A+20;Writeln(5/2:,A);A:=A div 3; writeln(5/3:,A);A:=A *4; writeln(5/4:,A);Readln;End.例2: 有三個(gè)小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,兩有13粒糖果?,F(xiàn)在他們做一個(gè)游戲。從甲開始,將自己的糖分三份,自己留一份,其余兩份分別給乙與丙,多余的糖果自己吃掉,然后乙與丙也依次這樣做。問最后甲、乙、丙三人各有書多少粒糖果?分析: 這個(gè)問題中我們關(guān)心的是在游戲過程中每個(gè)小朋友的糖果個(gè)數(shù),且他們所擁有的的糖果數(shù)是在變化的。因此可用a,b,c三個(gè)變量分別存放甲乙丙三個(gè)小朋友在某

28、一時(shí)刻所擁有的糖果數(shù)。對(duì)于每人,分糖后,他的糖果數(shù)一定為原來(lái)的糖果數(shù) div 3因?yàn)榉痔沁^程糖果的數(shù)目不一定都剛好分完,用整除恰恰可以表示多余的糖自己吃掉。而其他兩人那么增加與這個(gè)小朋友現(xiàn)在擁有的一樣的糖果。程序可寫如下:program ex2;var A,B,C:integer;beginA:=50;B:=43;C:=13; 初始時(shí)每個(gè)小朋友所擁有的糖果數(shù)A:=A div 3; B:=B+A;C:=C+A;甲小朋友分糖果后,每個(gè)人擁有的糖果數(shù)變化情況B:=B div 3; A:=A+B;C:=C+B; 乙小朋友分糖果后,每個(gè)人擁有的糖果數(shù)變化情況C:=C div 3; A:=A+C;B:=B

29、+C; 丙小朋友分糖果后,每個(gè)人擁有的糖果數(shù)變化情況writeln(A=,A,B=,B,C=,C); 輸出結(jié)果readln;end.注: 上程序中倒數(shù)第三行中A=表示一個(gè)字符串即用一對(duì)單引號(hào)括起來(lái)的一串字符,對(duì)于字符串,輸出字符串的內(nèi)容即引號(hào)內(nèi)的所得字符,而引號(hào)不輸出。以上程序的運(yùn)行結(jié)果為:A=51B=35C=16練習(xí)二1、某梯形的上底A=13,下底B=18,高H=9,求它的面積S。2、某機(jī)關(guān)組織游泳比賽。將一堆西瓜分給前三名,把該堆西瓜中的一半又半個(gè)西瓜獎(jiǎng)給第一名;剩下的一半又半個(gè)西瓜給第二名;把最后剩下的一半又半個(gè)西瓜給第三名,但每次分時(shí)并沒切開任何一個(gè)西瓜,且剛好西瓜分完。問前三名各分到

30、多少個(gè)西瓜3、某圓的半徑R=139,求該圓的周長(zhǎng)C與面積S? 第三課 帶格式的輸出語(yǔ)句及輸入語(yǔ)句 一、寫語(yǔ)句的輸出格式在pascal語(yǔ)言中輸出數(shù)據(jù)時(shí)是可以按照一定格式的,對(duì)整數(shù)隱含的輸出形式為按十進(jìn)制數(shù)形式。對(duì)實(shí)數(shù)的輸出,隱含的形式是科學(xué)記數(shù)法形式如果不想用科學(xué)記數(shù)法輸出而用小數(shù)形式輸出,要自己另行定義。事實(shí)上,輸出語(yǔ)句中的每個(gè)輸出項(xiàng)中的表達(dá)式之后可以加上格式說(shuō)明,假設(shè)輸出項(xiàng)后沒有加格式說(shuō)明, 那么數(shù)據(jù)按系統(tǒng)隱含的格式輸出,還可加上一定格式符號(hào)按特定格式輸出。隱含的輸出格式pascal語(yǔ)言為整型量、實(shí)型量、布爾型量和字符串( 用一對(duì)單引號(hào)括起來(lái)的字符序列)規(guī)定了每種數(shù)據(jù)所占的寬度(即一個(gè)數(shù)據(jù)占

31、幾列) ,一個(gè)數(shù)據(jù)所占的寬度稱為場(chǎng)寬或字段寬。系統(tǒng)給出的隱含場(chǎng)寬稱為標(biāo)準(zhǔn)場(chǎng)寬。每一種pascal版本給定的標(biāo)準(zhǔn)場(chǎng)寬不盡相同。下表給出標(biāo)準(zhǔn)pascal和pc機(jī)上兩種pascal版所規(guī)定的標(biāo)準(zhǔn)場(chǎng)寬。標(biāo)準(zhǔn)場(chǎng)寬數(shù)據(jù)類型 標(biāo)準(zhǔn)pascal Turbo pascalinteger 10 實(shí)際長(zhǎng)度real 22 17布爾型 10 4或5字符串 串長(zhǎng) 串長(zhǎng)在Turbo Pascal系統(tǒng)中,對(duì)于整型字符串的輸出都是按數(shù)據(jù)本身長(zhǎng)度輸出,對(duì)于布爾型數(shù)據(jù)只有True和False兩種值,TRUE為4列,F(xiàn)ALSE為5列,一律采用大寫輸出。而real型數(shù)據(jù)的輸出時(shí),那么按17列輸出,其中第一列為符號(hào)位,正號(hào)不顯示,后四位

32、為Enn, 中間的12列為尾數(shù)局部。如:writeln(sqrt(75);那么輸出8.6602540379E+00。而writeln(sqrt(81);那么輸出9.0000000000E+00。有時(shí),在程序中往往根據(jù)實(shí)際情況,需要自己定義場(chǎng)寬。指定場(chǎng)寬在寫語(yǔ)句中輸出項(xiàng)含有格式符號(hào)時(shí),就是為了指定場(chǎng)寬。指定單場(chǎng)寬.格式:write(表達(dá)式:N)或writeln(表達(dá)式:N),其中N為自然數(shù),指定單場(chǎng)寬后,所有數(shù)據(jù)不再按標(biāo)準(zhǔn)場(chǎng)寬輸出,而按指定場(chǎng)寬輸出。假設(shè)數(shù)據(jù)實(shí)際長(zhǎng)度小于指定場(chǎng)寬時(shí),那么一律向右靠齊,左留空格。如write(1234:8);write(abcdef:12)輸出結(jié)果:1234abcd

33、ef對(duì)于標(biāo)準(zhǔn)實(shí)型數(shù)據(jù)指定單場(chǎng)寬時(shí),如果場(chǎng)寬大于標(biāo)準(zhǔn)場(chǎng)寬時(shí),右靠齊按標(biāo)準(zhǔn)場(chǎng)寬格式輸出17位,左留空格。假設(shè)場(chǎng)寬小于標(biāo)準(zhǔn)場(chǎng)寬時(shí),第一位仍為符號(hào)位,最后四位仍為Enn,中間局部為尾數(shù)顯示局部。如果指定的寬度小于8位,那么數(shù)據(jù)按8位格式*.*Enn 輸出。指定雙場(chǎng)寬如果輸出項(xiàng)是實(shí)數(shù)時(shí),如果希望輸出的實(shí)數(shù)不用科學(xué)記數(shù)法輸出,而用小數(shù)形式輸出,可以用指定雙場(chǎng)寬方法輸出。雙場(chǎng)寬輸出格式為:write(實(shí)型表達(dá)式:m:n),其中m和n都是自然數(shù),m 用以指定整個(gè)數(shù)據(jù)所占的寬度,n指定輸出實(shí)數(shù)的小數(shù)位數(shù)。如 : write(sqrt(75):9:4);輸出:8.6602如果雙場(chǎng)寬不能滿足輸出數(shù)據(jù)的最低要求, 系

34、統(tǒng)自動(dòng)突破指定的場(chǎng)寬限制,按實(shí)際長(zhǎng)度輸出。如:write(sqrt(75):5:4); 要使小數(shù)點(diǎn)后有4位數(shù)字,而總場(chǎng)寬為5,是不可能的(因?yàn)檫€有一個(gè)小數(shù)點(diǎn), 小數(shù)點(diǎn)前面還有一個(gè)數(shù)字)。它最低限度要有6列,即輸出為:8.6602例1 寫出以下程序在turbo pascal下的輸出結(jié)果.program ex;const s=abcdefg;vari:integer;r:real;c:char;b:boolean;begini:=1234;r:=1234.5678;c:=#;b:=true;writeln(i,i:6,i:3);writeln(r,r:12:5,r:8:5);writeln(c,c

35、:5);writeln(s,s:10,s:5);writeln(b,b:5,b:3);end.運(yùn)行結(jié)果如下:1234123412341.2345678000E+031234.567801234.56780#abcdefgabcdefgabcdefgTRUETRUETRUE3應(yīng)用例析例2: A=253,B=43,輸出A*B的運(yùn)算式子。即輸出如下:253*43=10879253* 43759+101210879分析: 對(duì)于該問題,我們只要控制好輸出時(shí)右靠齊即可。即前四行的總寬度一樣例如為12,第五行總寬度比前面少1。第六、七行總寬度與前四行一樣。參與程序如下:var a,b:integer;beg

36、ina:=253;b:=43;writeln(a:10,*,b,=,a*b);writeln(a:12);write(*:8);writeln(b:4);writeln(-:12);writeln(a*3:12);write(+:6);writeln(a*4:5);writeln(-:12);writeln(a*b:12);end.二、 輸入語(yǔ)句讀語(yǔ)句 在程序中變量獲得一個(gè)確定的值,固然可以用賦值語(yǔ)句,但是如果需要賦值的變量較多,或變量的值經(jīng)常變化,那么使用本節(jié)介紹的輸入語(yǔ)句讀語(yǔ)句,將更為方便。讀語(yǔ)句是在程序運(yùn)行時(shí)由用戶給變量提供數(shù)據(jù)的一種很靈活的輸入動(dòng)作,它有兩種格式:1.讀語(yǔ)句的一般格式:

37、read();readln();其中變量名表是用逗號(hào)隔開的假設(shè)干個(gè)變量名組成的。功能:從標(biāo)準(zhǔn)輸入文件(即INPUT,一般對(duì)應(yīng)著鍵盤 )中讀入數(shù)據(jù),并依次賦給相應(yīng)的變量。說(shuō)明:read和readln是標(biāo)準(zhǔn)過程名,它們是標(biāo)準(zhǔn)標(biāo)識(shí)符。執(zhí)行到read或readln語(yǔ)句時(shí),系統(tǒng)處于等待狀態(tài),等待用戶從鍵盤上輸入數(shù)據(jù),系統(tǒng)根據(jù)變量的數(shù)據(jù)類型的語(yǔ)法要求判斷輸入的字符是否合法。如執(zhí)行read(a)語(yǔ)句,a是整型變量,那么輸入的字符為數(shù)字字符時(shí)是合法的,當(dāng)輸入結(jié)束時(shí),那么自動(dòng)將剛接受的一串?dāng)?shù)字字符轉(zhuǎn)換為整數(shù)賦給變量a。在輸入數(shù)值型整型或?qū)嵭蛿?shù)據(jù)時(shí),數(shù)據(jù)間要用空格或回車分隔開各個(gè)數(shù)據(jù),輸入足夠個(gè)數(shù)的數(shù)據(jù),否那么仍

38、要繼續(xù)等待輸入,但最后一定要有回車,表示該輸入行結(jié)束,直到數(shù)據(jù)足夠,該讀語(yǔ)句執(zhí)行結(jié)束,程序繼續(xù)運(yùn)行。例3. 設(shè)a、b、c為整型變量,需將它們的值分別賦以10,20,30,寫出對(duì)應(yīng)以下語(yǔ)句的所有可能輸入格式。Read(a,b,c);解 根據(jù),即可列出所有可能輸入格式(a)102030(b)102030(c)102030(d)102030其中表示回車鍵。下同。read語(yǔ)句與readln語(yǔ)句的第一個(gè)區(qū)別是:read語(yǔ)句是一個(gè)接一個(gè)地讀數(shù)據(jù),在執(zhí)行完本Read語(yǔ)句( 讀完本語(yǔ)句中變量所需的數(shù)據(jù))后,下一個(gè)讀語(yǔ)句接著從該數(shù)據(jù)輸入行中繼續(xù)讀數(shù)據(jù),也就是說(shuō),不換行。如:Read(a,b);Read(c,d)

39、;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ú)用。例4 設(shè)要到達(dá)例1同樣的目的,但語(yǔ)句改為:readln(a,b);readln(c)那么例3中的4種輸入格式只有(b)(d)是有效的.readln語(yǔ)句與read語(yǔ)句的第二個(gè)區(qū)別是:read 后一定要有參數(shù)表,而readln可以不帶參數(shù)表,即可以沒有任何輸入項(xiàng),

40、 只是等待讀入一個(gè)換行符(回車)。經(jīng)常用于暫停程序的運(yùn)行,直到輸入一個(gè)回車。例5 設(shè)有以下語(yǔ)句:read(a,b,c);readln(d,e);readln;readln(f,g);其中,所有變量均為整型。再設(shè)輸入的數(shù)據(jù)如下:12345678910111213列表給出每個(gè)變量的值.分析: 可以假想有一數(shù)據(jù)位置指針,每讀一個(gè)數(shù)據(jù)后,指針后移到該數(shù)據(jù)之后,每執(zhí)行一個(gè)readln語(yǔ)句后,指針移到下一個(gè)數(shù)據(jù)行的開頭。各變量的值如下表所示。變量名 a b c d e f g值 1 2 3 4 5 11 12為了防止可能出現(xiàn)的錯(cuò)誤,建議在程序中按以下原那么使用讀語(yǔ)句:(A)如果沒有特殊需要,在一個(gè)程序中盡

41、量防止混合使用read語(yǔ)句和readln語(yǔ)句;(B)盡量用readln語(yǔ)句來(lái)輸入數(shù)據(jù), 一個(gè)數(shù)據(jù)行對(duì)應(yīng)一個(gè)readln語(yǔ)句;(C)由于執(zhí)行read或readln語(yǔ)句時(shí), 系統(tǒng)不會(huì)提供任何提示信息,因此,編程時(shí)最好在readln語(yǔ)句之前加以適當(dāng)提示,例如:write(Input a,b,c:);readln(a,b,c);在執(zhí)行時(shí),屏幕上顯示:Input a,b,c:其中,為光標(biāo)。執(zhí)行readln語(yǔ)句后,系統(tǒng)處于待待輸入狀態(tài), 只有輸入了所需數(shù)據(jù)后才繼續(xù)往下執(zhí)行。三、順序結(jié)構(gòu)程序設(shè)計(jì)到目前為止,我們可以用讀、寫語(yǔ)句和賦值語(yǔ)句編寫一些簡(jiǎn)單的程序。通過閱讀這些程序,可以逐步熟悉pascal程序的編寫

42、方法和應(yīng)遵循的規(guī)那么,為以后各章的學(xué)習(xí)打根底。例6 試編一程序,輸入一梯形的上底、下底、高, 求該梯形的面積。分析: 整個(gè)程序分為三段:輸入、計(jì)算、輸出。程序中用a,b,h三個(gè)變量分別存放梯形的上、下底與高,S存放面積。 要而使用這些變量都要先說(shuō)明,程序的執(zhí)行局部中先輸入上、下底與高,接著求面積S,最后輸出結(jié)果S。源程序如下:program Tixing; 程序首部var a,b,h,s:real; 程序說(shuō)明局部beginwrite(Input a,b,h:);readln(a,b,h); 程序執(zhí)行局部s:=(a+b)*h/2;write(s=,s:10:3);end.例7 某幼兒園里,有5個(gè)

43、小朋友編號(hào)為1,2,3,4,5,他們按自己的編號(hào)順序圍坐在一張圓桌旁。他們身上都有假設(shè)干個(gè)糖果,現(xiàn)在他們做一個(gè)分糖果游戲。從1號(hào)小朋友開始,將他的糖果均分三份如果有多余的,那么他將多余的糖果吃掉,自己留一份,其余兩份分給他的相鄰的兩個(gè)小朋友。接著2號(hào)、3號(hào)、4號(hào)、5號(hào)小朋友也這如果做。問一輪后,每個(gè)小朋友手上分別有多少糖果。分析: 這道問題與第二課中的例2根本一樣,只不過這里有5位小朋友,且他們初始時(shí)糖果的數(shù)目不確定。這里用a,b,c,d,e分別存放5個(gè)小朋友的糖果。初始時(shí)它們的值改為由鍵盤輸入。其它都與第二課中的例2類似。參考程序如下:program fentang;var a,b,c,d,

44、e:integer;beginwrite(Please Enter init numbers );readln(a,b,c,d,e);a:=a div 3;b:=b+a;e:=e+a;1號(hào)均分后,1、2、5號(hào)的糖果數(shù)變化情況b:=b div 3;c:=c+b;a:=a+b;2號(hào)均分后,1、2、3號(hào)的糖果數(shù)變化情況c:=c div 3;b:=b+c;d:=d+c;3號(hào)均分后,2、3、4號(hào)的糖果數(shù)變化情況d:=d div 3;c:=c+d;e:=e+d;4號(hào)均分后,3、4、5號(hào)的糖果數(shù)變化情況e:=e div 3;d:=d+e;a:=a+e;5號(hào)均分后,4、5、1號(hào)的糖果數(shù)變化情況輸出結(jié)果writ

45、eln(a=,a);writeln(b=,b);writeln(c=,c);writeln(d=,d);writeln(e=,e);readln;暫停end.例8 編一程序求半徑為R的圓的周長(zhǎng)與面積?分析: 程序要先輸入半徑R,然后求周長(zhǎng)c和面積s,最后輸出c和s.源程序如下:program circle;const PI=3.14159;var r,c,s:real;beginwrite(Enter R=);readln(r);c:=2*pi*r;s:=pi*sqr(r);writeln(c=,c:10:2);writeln(s=,s:10:2);end.在程序中,為了輸出實(shí)型周長(zhǎng)C和面積S

46、時(shí),按照小數(shù)形式輸出,采用了指定雙場(chǎng)寬格式。練習(xí)三1. 編一程序,將攝氏溫度換為華氏溫度。公式為: 其中f為華氏溫度,c是攝氏溫度。2. 編一程序,輸入三角形的三邊a、b、c假設(shè)這三邊可以構(gòu)成一個(gè)三角形,求三角形的面積?提示:可利用海倫公式 第四課 簡(jiǎn)單的分支結(jié)構(gòu)程序設(shè)計(jì) 在現(xiàn)實(shí)生活中,我們每天都要進(jìn)行根據(jù)實(shí)際情況進(jìn)行選擇。例如,原打算明天去公園,但如果明天天氣不好,將留在家里看電視。所以人也會(huì)根據(jù)條件進(jìn)行行為的選擇。計(jì)算機(jī)也會(huì)根據(jù)不同情況作出各種邏輯判斷,進(jìn)行一定的選擇。在這課與下一課中,我們將會(huì)發(fā)現(xiàn),我們是通過選擇結(jié)構(gòu)語(yǔ)句來(lái)實(shí)現(xiàn)程序的邏輯判斷功能。一、PASCAL中的布爾邏輯類型在前面,我

47、們學(xué)習(xí)了整型(integer)與實(shí)型real。其中integer型數(shù)據(jù)取值范圍為-32768到32767之間所有整數(shù)。而real型數(shù)據(jù)取值范圍為其絕對(duì)值在10-38到1038之間的所有實(shí)數(shù)。它們都是數(shù)值型的即值都為數(shù)。布爾型Boolean是一種數(shù)據(jù)的類型,這種類型只有兩種值,即真與假。1、 布爾常量在Pascal語(yǔ)言中真用ture表示,假用False表示。所以布爾類型只有TRUE與FALSE兩個(gè)常量。2、 布爾變量BOOLEAN如果我們將某些變量說(shuō)明成布爾型,那么這些變量就是布爾變量,它們只能用于存放布爾值ture或false。例如,VAR A,B:BOOLEAN;3、 布爾類型是順序類型由于

48、這種類型只有兩個(gè)常量,Pascal語(yǔ)言中規(guī)定ture的序號(hào)為1,false的序號(hào)為0。假設(shè)某種類型的常量是有限的,那么這種類型的常量通常都有一個(gè)序號(hào),我們稱這種類型為順序類型。如前面我們學(xué)過的整型integer,以及后面要學(xué)到的字符型char都是順序類型。4、 布爾類型的輸入與輸出a輸出VAR A,B:BOOLEAN;BEGINA:=TRUE;B:=FALSE;WRITELNA,B;END.TRUEFALSEb布爾類型變量不能直接用讀語(yǔ)句輸入布爾類型變量不能通過讀語(yǔ)句給它們提供值。事實(shí)上,我們可以通過間接方式對(duì)布爾變量進(jìn)行值的輸入。例如,以下程序是錯(cuò)誤的:var a,b,c:Boolean;b

49、eginreadln(a,b,c); 錯(cuò)誤語(yǔ)句writeln(a,b,c);end.二、關(guān)系表達(dá)式與布爾表達(dá)式1、什么是關(guān)系表達(dá)式用小括號(hào)、=、=、=、將兩個(gè)算術(shù)表達(dá)式連接起來(lái)的式子就稱為關(guān)系表達(dá)式比擬式。如:3+78,x+y10,2*76是錯(cuò)的,故它的值為FALSE。同樣,45=32是對(duì)的,故該表達(dá)式的值為true。關(guān)系表達(dá)式用于表示一個(gè)命題。如:為偶數(shù)可表示為: mod 2=0。為正數(shù)可表示為:n0。3.布爾運(yùn)算及布爾表達(dá)式為了表示更復(fù)雜的命題,Pascal還引入三種邏輯運(yùn)算符:not、and、or。它們分別相當(dāng)于數(shù)學(xué)上的非、且和或的意義。這三個(gè)運(yùn)算符的運(yùn)算對(duì)象為布爾量,其中not為單目運(yùn)

50、算,只有一個(gè)運(yùn)算對(duì)象,and與or為雙目運(yùn)算,有兩個(gè)運(yùn)算對(duì)象。它們的運(yùn)算真值表如下: a b Not a a and b a or b a xor b false false true false false false false true true false ture true true false false false true true true true false true true false 于是,對(duì)于一個(gè)關(guān)系表達(dá)式,或多個(gè)關(guān)系表達(dá)式用布爾運(yùn)算符連接起來(lái)的式子就稱為布爾表達(dá)式。布爾表達(dá)式的值也為布爾值。如果一個(gè)表達(dá)式里出現(xiàn)兩個(gè)或兩個(gè)以上的運(yùn)算符, 那么必須規(guī)定它們的運(yùn)算次序

51、。pascal規(guī)定:表達(dá)式中相同優(yōu)先級(jí)的運(yùn)算符,按從左到右順序計(jì)算;表達(dá)式中不同優(yōu)先級(jí)的運(yùn)算符,按從高到低順序計(jì)算;括號(hào)優(yōu)先級(jí)最高,從內(nèi)到外逐層降低;對(duì)于一個(gè)復(fù)雜的表達(dá)式可能同時(shí)包含算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算以及函數(shù)運(yùn)算。運(yùn)算的優(yōu)先順序?yàn)椋豪ㄌ?hào)函數(shù)not*、/、div、mod、and+、or、xor關(guān)系運(yùn)算。對(duì)于復(fù)雜的命題,我們可以用布爾表達(dá)式來(lái)表示。例如,命題:m,n都是偶數(shù)或都是奇數(shù)可表示為(m mod 2=0)and(n mod 2=0) or (m mod 2=1)and(n mod 2=1)。三、簡(jiǎn)單的IF語(yǔ)句、格式、IF 布爾表達(dá)式THEN 語(yǔ)句;、IF 布爾表達(dá)式THEN 語(yǔ)句

52、 ELSE 語(yǔ)句;注意型IF語(yǔ)句中語(yǔ)句后無(wú);號(hào)、功能 、執(zhí)行IF語(yǔ)句時(shí),先計(jì)算布爾表達(dá)式的值,假設(shè)為TRUE那么執(zhí)行語(yǔ)句,否那么不執(zhí)行任何操作。、執(zhí)行IF語(yǔ)句時(shí),先計(jì)算布爾表達(dá)式的值,假設(shè)為TRUE那么執(zhí)行語(yǔ)句,否那么執(zhí)行語(yǔ)句;、例如例.輸入一個(gè)整數(shù),判斷是否為偶數(shù)。是輸出否那么輸出。Program ex4_2;Var a:integer;Begin Write(a=);readln(a);If (a mod 2 =0)then writeln(yes)Else writeln(no);Readln;End.2華榕超市里賣電池,每個(gè)電池角錢,假設(shè)數(shù)量超過個(gè),那么可打75折。Program ex

53、4_3;Var Num:integer;Price,Total:real;BeginWrite(Num=);readln(Num);Price=0.8;If Num10 then Price:=Price*0.75;Total:=Num*Price;Writeln(Total=,Total:0:2);Readln;End.3)編寫一與電腦猜紅或黑的游戲。分析:用代表紅,代表黑。先由計(jì)算機(jī)先出答案,然后再由人猜,猜對(duì)輸出YOU WIN否那么輸出YOU LOST。為了模擬猜紅或黑的隨意性,程序中需要用到隨機(jī)函數(shù)random(n)。函數(shù)是什么呢,例如大家都知道|-2|=2,|58|=58,那么|x|

54、=?。如果我們用y表示|x|,那么 .這里y=|x|就是一個(gè)函數(shù),也就是說(shuō)函數(shù)是一個(gè)關(guān)于一個(gè)或多個(gè)自變量未知量,如上例中的x的運(yùn)算結(jié)果。在pascal語(yǔ)言中,系統(tǒng)提供了許多內(nèi)部函數(shù),其中包括|x|函數(shù),當(dāng)然它用abs(x)表示。我們?nèi)绻髕2-y的絕對(duì)值,可以調(diào)用內(nèi)部函數(shù)abs(x*x-y)即可求得。Random(n)也是一個(gè)內(nèi)部函數(shù),調(diào)用它能得到0n-1之間的整數(shù)但它不確定的,或說(shuō)是隨機(jī)的。同時(shí)由于函數(shù)是一個(gè)運(yùn)算結(jié)果,所以函數(shù)的調(diào)用只能出現(xiàn)在表達(dá)式中。Program ex4_3;Uses crt;Var Computer,People:integer;BeginRandomize;Comp

55、uter:=random(2);Write(You guess0Red 1-Black:);readln(People);If People=Computer then writeln(YOU WIN)Else writeln(YOU LOST);Readln;End.作業(yè):.某車站行李托運(yùn)收費(fèi)標(biāo)準(zhǔn)是:10公斤或10公斤以下,收費(fèi)2.5元,超過10公斤的行李,按每超過1公斤增加1.5元進(jìn)行收費(fèi)。 試編一程序,輸入行李的重量,算出托運(yùn)費(fèi)。 第五課 if嵌套與case語(yǔ)句 一、IF語(yǔ)句的嵌套在if語(yǔ)句中,如果then子句或else子句仍是一個(gè)if語(yǔ)句, 那么稱為if語(yǔ)句的嵌套。例1計(jì)算以下函數(shù) 分

56、析:根據(jù)輸入的x值,先分成x0與x0兩種情況,然后對(duì)于情況x0,再區(qū)分x是小于0,還是等于0。源程序如下:program ex;varx:real;y:integer;beginwrtie(Input x:);readln(x);if x0then y:=1x0時(shí),y的值為1else x0時(shí)if x=0then y:=0else y:=-1;writeln(x=,x:6:2,y=,y);end.顯然,以上的程序中,在then子句中嵌套了一個(gè)型if語(yǔ)句。當(dāng)然程序也可以寫成如下形式:program ex;varx:real;y:integer;beginwrtie(Input x:);readln

57、(x);if x=0thenif x0then y:=1else y:=0else y=-1;writeln(x=,x:6:2,y=,y);end.但是對(duì)于此題,下面的程序是不對(duì)的。y:=0;if x=0thenif x0 then y:=1else y:=-1;明顯,從此人的程序書寫格式可以看出,他想讓else與第一個(gè)if配對(duì),而事實(shí)上,這是錯(cuò)的。因?yàn)閜ascal規(guī)定:else與它上面的距它最近的then配對(duì),因此以上程序段的邏輯意義就與題義不符。要使上程序段中esle與第一個(gè)then配對(duì),應(yīng)將程序段修改為:y:=0; 或者 y:=0;if x=0 if x=0then if x0 then

58、then y:=1 beginelse if x0 then Y:=1;else y:=-1; endelse Y:=-1;二、case語(yǔ)句上面我們知道可以用嵌套的if語(yǔ)句實(shí)現(xiàn)多分支的選擇結(jié)構(gòu)。但是如果分支越來(lái)越多時(shí),用嵌套的if語(yǔ)句實(shí)現(xiàn)多分支就顯得繁雜。當(dāng)多分支選擇的各個(gè)條件由同一個(gè)表達(dá)式的不同結(jié)果值決定時(shí),可以用case語(yǔ)句實(shí)現(xiàn)。它的選擇過程,很象一個(gè)多路開關(guān),即由case語(yǔ)句的選擇表達(dá)式的值,決定切換至哪一語(yǔ)句去工作。因此在分支結(jié)構(gòu)程序設(shè)計(jì)中,它是一種強(qiáng)有力的手段。在實(shí)現(xiàn)多路徑分支控制時(shí),用case對(duì)某些問題的處理和設(shè)計(jì),比用if語(yǔ)句寫程序具有更簡(jiǎn)潔、清晰之感。(一)、情況語(yǔ)句的一般形式

59、:case of:語(yǔ)句1;:語(yǔ)句2;::語(yǔ)句nend;其中case、of、end是Pascal的保存字, 表達(dá)式的值必須是順序類型,它可以是整型、布爾型及以后學(xué)習(xí)的字符型、枚舉型和子界型。情況標(biāo)號(hào)表是一串用逗號(hào)隔開的與表達(dá)式類型一致的常量序列。語(yǔ)句可以是任何語(yǔ)句,包括復(fù)合語(yǔ)句和空語(yǔ)句。(二)、case語(yǔ)句的執(zhí)行過程先計(jì)算表達(dá)式稱為情況表達(dá)式的值,如果它的值等于某一個(gè)常量稱為情況常量,也稱情況標(biāo)號(hào),那么執(zhí)行該情況常量后面的語(yǔ)句,在執(zhí)行完語(yǔ)句后,跳到case語(yǔ)句的末尾end處。(三)、說(shuō)明情況表達(dá)式必須是順序類型的;情況常量是情況表達(dá)式可能具有的值,因而應(yīng)與情況表達(dá)式具有相同的類型;情況常量出現(xiàn)的

60、次序可以是任意的;同一情況常量不能在同一個(gè)case語(yǔ)句中出現(xiàn)兩次或兩次以上;每個(gè)分語(yǔ)句前可以有一個(gè)或假設(shè)干個(gè)用逗號(hào)隔開的情況常量;如果情況表達(dá)式的值不落在情況常的范圍內(nèi),那么認(rèn)為本case語(yǔ)句無(wú)效,執(zhí)行case語(yǔ)句的下一個(gè)語(yǔ)句。turbo pascal中增加了一個(gè)否那么的情況,即增加一個(gè)else子句,但也是可省的。每個(gè)常量后面只能是一個(gè)語(yǔ)句或一個(gè)復(fù)合語(yǔ)句。例2 根據(jù)x的值,求函數(shù)Y的值: 分析:利用case語(yǔ)句進(jìn)行程序設(shè)計(jì), 關(guān)鍵在于巧妙地構(gòu)造情況表達(dá)式。本例中三種情況可用一個(gè)表達(dá)式區(qū)分出來(lái):Trunc(x/100)。因?yàn)閤在(0100)之間時(shí)表達(dá)式值為0;x在100,200)時(shí)表達(dá)式值為1

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論