初識Pascal語言_第1頁
初識Pascal語言_第2頁
初識Pascal語言_第3頁
初識Pascal語言_第4頁
初識Pascal語言_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一課初識Pascal語言 信息學奧林匹克競賽是一項益智性的競賽活動,核心是考查選手的智力和使用計算機解題的能力。選手首先應針對競賽中題目的要求構建數(shù)學模型,進而構造出計算機可以接受的算法,之后要寫出高級語言程序,上機調試通過。程序設計是信息學奧林匹克競賽的根本功,在青少年朋友參與競賽活動的第一步必須掌握一門高級語言及其程序設計方法。一、Pascal 語言概述PASCAL語言也是一種算法語言,它是瑞士蘇黎世聯(lián)邦工業(yè)大學的N沃思(Niklaus Wirth)教授于1968年設計完成的,1971年正式發(fā)表。1975年,對PASCAL語言進行了修改,作為標準PASCAL語言。PASCAL語言是在AL

2、GOL 60的根底上開展而成的。它是一種結構化的程序設計語言,可以用來編寫應用程序。它又是一種系統(tǒng)程序設計語言,可以用來編寫順序型的系統(tǒng)軟件如編譯程序。它的功能強、編譯程序簡單,是70年代影響最大一種算法語言。二、Pascal 語言的特點從使用者的角度來看,PASCAL語言有以下幾個主要的特點:它是結構化的語言。PASCAL語言提供了直接實現(xiàn)三種根本結構的語句以及定義過程和函數(shù)(子程序)的功能。可以方便地書寫出結構化程序。在編寫程序時可以完全不使用GOTO語句和標號。這就易于保證程序的正確性和易讀性。PASCAL語言強調的是可靠性、易于驗證性、概念的清晰性和實現(xiàn)的簡化。在結構化這一點上,比其它

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

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

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

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

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

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

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

10、們想把程序窗口中的程序存入磁盤時,可以通過按F2鍵(或執(zhí)行File菜單中的save命令)來保存程序。第一次保存文件時屏幕上會出現(xiàn)一個對話框要求輸入文件名(默認擴展名為.pas)。當我們要將磁盤上的程序文件中的PASCAL程序裝入窗口時,可按F3(或執(zhí)行File菜單中的Open命令)來裝入程序,此時系統(tǒng)也會彈出一個對話框要求輸入要翻開的文件名,或直接在文件對話框列表中選擇所要的文件,然后回到翻開文件。五、第一個程序下面程序在運行時,會提示輸入一個圓的半徑,然后會在屏幕上畫一個圓。按回車后程序結束回到程序窗口。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.注意,如果上面程序運行時會出現(xiàn)初始化圖形錯誤,請將系統(tǒng)目錄下BGI子目錄EGAVGA.BGI和UNITS子目錄中的Graph.tpu拷貝到系統(tǒng)目錄下BIN目錄即可。請輸入上面的程序,并練習將其存盤、翻開與運行上面程序。第二課 賦值語句、輸出語句 上節(jié)課,我們學習了Pascal語言的程序根本結構,在一個程序中,所有的操作都由執(zhí)行局部來完成,而執(zhí)

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

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

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

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

16、ded擴展實型、comp裝配實型,Turbo Pascal分別用相同的名字作為他們的表識符。每一種類型規(guī)定了相應的實數(shù)取值范圍、所占用的內(nèi)存字節(jié)數(shù)以及它們所能到達的精度。 類型 數(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í)行實型運算的代碼生成模式:軟件仿真模式和80 x87浮點模

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

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

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

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

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

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

23、除數(shù)均為整型, 結果也為整型。如10 DIV 2=5,10 DIV 3=3, 5 DIV 10=0. -15 DIV 4= -3。DIV運算只取商的整數(shù)局部,參與DIV運算的兩個對象不能為實型。mod (求余),也只能用于整數(shù)運算,結果為整數(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ōu)先順序如果一個表達式里出現(xiàn)兩個或兩個以上的運算符, 那么必須規(guī)定它們的運算次序。pascal規(guī)定:表達式中相同優(yōu)先級的運算符,按從左到右順序計算;表達式中不同優(yōu)先級的運算符,按

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

25、語句格式Write(表達式1,表達式2,);如:write(1,2,3,4);write(1.2,3.4,5);write(My name is Liping);2、 writeln語句格式:Write(表達式1,表達式2,)或writeln(二)輸出語句的功能計算機執(zhí)行到某一輸出語句時,先計算出輸出語句中的每個表達式的值,并將每一個表達式的值一個接一個地輸出到屏幕上。Write語句與writeln語句格式上都相似,但它們在功能上有所不同,兩個語句的區(qū)別在于,write語句將其后括號中的表達式一個接一個輸出后,沒有換行。而writeln語句那么在輸出各個表達式的值后換行。例如以下兩個程序段的輸

26、出分別為:write(1,2,3,4);write(5,6);輸出為:123456writeln(1,2,3,4);write(5,6);輸出為:123456四、應用例析例1: 某倉庫5月1日有糧食100噸,5月2日又調進20噸,5月3日賣出庫存的3分之二,5月4日又調進庫存的3倍糧食,問該倉庫從5月1日到5月4日期間每天的糧食分別是多少噸?(輸出每天的庫存量)分析:在這個問題中,主要要描述從5月1日到5月4日期間倉庫的糧食庫存量,且易知它是不斷變化的。因此我們可以用一個變量A來描述倉庫的糧食庫存量。程序可寫如下: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: 有三個小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,兩有13粒糖果?,F(xiàn)在他們做一個游戲。從甲開始,將自己的糖分三份,自己留一份,其余兩份分別給乙與丙,多余的糖果自己吃掉,然后乙與丙也依次這樣做。問最后甲、乙、丙三人各有書多少粒糖果?分析: 這個問題中我們關心的是在游戲過程中每個小朋友的糖果個數(shù),且他們所擁有的的糖果數(shù)是在變化的。因此可用a,b,c三個變量分別存放甲乙丙三個小朋友在某

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

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

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

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

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

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

34、統(tǒng)自動突破指定的場寬限制,按實際長度輸出。如:write(sqrt(75):5:4); 要使小數(shù)點后有4位數(shù)字,而總場寬為5,是不可能的(因為還有一個小數(shù)點, 小數(shù)點前面還有一個數(shù)字)。它最低限度要有6列,即輸出為:8.6602例1 寫出以下程序在turbo pascal下的輸出結果.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.運行結果如下:1234123412341.2345678000E+031234.567801234.56780#abcdefgabcdefgabcdefgTRUETRUETRUE3應用例析例2: A=253,B=43,輸出A*B的運算式子。即輸出如下:253*43=10879253* 43759+101210879分析: 對于該問題,我們只要控制好輸出時右靠齊即可。即前四行的總寬度一樣例如為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.二、 輸入語句讀語句 在程序中變量獲得一個確定的值,固然可以用賦值語句,但是如果需要賦值的變量較多,或變量的值經(jīng)常變化,那么使用本節(jié)介紹的輸入語句讀語句,將更為方便。讀語句是在程序運行時由用戶給變量提供數(shù)據(jù)的一種很靈活的輸入動作,它有兩種格式:1.讀語句的一般格式:

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

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

39、;Read(e);如果輸入數(shù)據(jù)行如下:123456那么a,b,c,d,e的值分別為1,2,3,4,5,如果后面無讀語句那么數(shù)據(jù)6是多余的,這是允許的。Readln那么不同,在讀完本Readln語句中變量所需的數(shù)據(jù)后, 該數(shù)據(jù)行中剩余的數(shù)據(jù)多余無用,或者說,在讀完本Readln語句中變量所需數(shù)據(jù)后,一定要讀到一個回車,否那么多余的數(shù)據(jù)無用。例4 設要到達例1同樣的目的,但語句改為:readln(a,b);readln(c)那么例3中的4種輸入格式只有(b)(d)是有效的.readln語句與read語句的第二個區(qū)別是:read 后一定要有參數(shù)表,而readln可以不帶參數(shù)表,即可以沒有任何輸入項,

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

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

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

43、小朋友編號為1,2,3,4,5,他們按自己的編號順序圍坐在一張圓桌旁。他們身上都有假設干個糖果,現(xiàn)在他們做一個分糖果游戲。從1號小朋友開始,將他的糖果均分三份如果有多余的,那么他將多余的糖果吃掉,自己留一份,其余兩份分給他的相鄰的兩個小朋友。接著2號、3號、4號、5號小朋友也這如果做。問一輪后,每個小朋友手上分別有多少糖果。分析: 這道問題與第二課中的例2根本一樣,只不過這里有5位小朋友,且他們初始時糖果的數(shù)目不確定。這里用a,b,c,d,e分別存放5個小朋友的糖果。初始時它們的值改為由鍵盤輸入。其它都與第二課中的例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號均分后,1、2、5號的糖果數(shù)變化情況b:=b div 3;c:=c+b;a:=a+b;2號均分后,1、2、3號的糖果數(shù)變化情況c:=c div 3;b:=b+c;d:=d+c;3號均分后,2、3、4號的糖果數(shù)變化情況d:=d div 3;c:=c+d;e:=e+d;4號均分后,3、4、5號的糖果數(shù)變化情況e:=e div 3;d:=d+e;a:=a+e;5號均分后,4、5、1號的糖果數(shù)變化情況輸出結果writ

45、eln(a=,a);writeln(b=,b);writeln(c=,c);writeln(d=,d);writeln(e=,e);readln;暫停end.例8 編一程序求半徑為R的圓的周長與面積?分析: 程序要先輸入半徑R,然后求周長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.在程序中,為了輸出實型周長C和面積S

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

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

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

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

50、算,只有一個運算對象,and與or為雙目運算,有兩個運算對象。它們的運算真值表如下: 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 于是,對于一個關系表達式,或多個關系表達式用布爾運算符連接起來的式子就稱為布爾表達式。布爾表達式的值也為布爾值。如果一個表達式里出現(xiàn)兩個或兩個以上的運算符, 那么必須規(guī)定它們的運算次序

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

52、 ELSE 語句;注意型IF語句中語句后無;號、功能 、執(zhí)行IF語句時,先計算布爾表達式的值,假設為TRUE那么執(zhí)行語句,否那么不執(zhí)行任何操作。、執(zhí)行IF語句時,先計算布爾表達式的值,假設為TRUE那么執(zhí)行語句,否那么執(zhí)行語句;、例如例.輸入一個整數(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華榕超市里賣電池,每個電池角錢,假設數(shù)量超過個,那么可打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)編寫一與電腦猜紅或黑的游戲。分析:用代表紅,代表黑。先由計算機先出答案,然后再由人猜,猜對輸出YOU WIN否那么輸出YOU LOST。為了模擬猜紅或黑的隨意性,程序中需要用到隨機函數(shù)random(n)。函數(shù)是什么呢,例如大家都知道|-2|=2,|58|=58,那么|x|

54、=?。如果我們用y表示|x|,那么 .這里y=|x|就是一個函數(shù),也就是說函數(shù)是一個關于一個或多個自變量未知量,如上例中的x的運算結果。在pascal語言中,系統(tǒng)提供了許多內(nèi)部函數(shù),其中包括|x|函數(shù),當然它用abs(x)表示。我們?nèi)绻髕2-y的絕對值,可以調用內(nèi)部函數(shù)abs(x*x-y)即可求得。Random(n)也是一個內(nèi)部函數(shù),調用它能得到0n-1之間的整數(shù)但它不確定的,或說是隨機的。同時由于函數(shù)是一個運算結果,所以函數(shù)的調用只能出現(xiàn)在表達式中。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è):.某車站行李托運收費標準是:10公斤或10公斤以下,收費2.5元,超過10公斤的行李,按每超過1公斤增加1.5元進行收費。 試編一程序,輸入行李的重量,算出托運費。 第五課 if嵌套與case語句 一、IF語句的嵌套在if語句中,如果then子句或else子句仍是一個if語句, 那么稱為if語句的嵌套。例1計算以下函數(shù) 分

56、析:根據(jù)輸入的x值,先分成x0與x0兩種情況,然后對于情況x0,再區(qū)分x是小于0,還是等于0。源程序如下:program ex;varx:real;y:integer;beginwrtie(Input x:);readln(x);if x0then y:=1x0時,y的值為1else x0時if x=0then y:=0else y:=-1;writeln(x=,x:6:2,y=,y);end.顯然,以上的程序中,在then子句中嵌套了一個型if語句。當然程序也可以寫成如下形式: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.但是對于此題,下面的程序是不對的。y:=0;if x=0thenif x0 then y:=1else y:=-1;明顯,從此人的程序書寫格式可以看出,他想讓else與第一個if配對,而事實上,這是錯的。因為pascal規(guī)定:else與它上面的距它最近的then配對,因此以上程序段的邏輯意義就與題義不符。要使上程序段中esle與第一個then配對,應將程序段修改為: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語句上面我們知道可以用嵌套的if語句實現(xiàn)多分支的選擇結構。但是如果分支越來越多時,用嵌套的if語句實現(xiàn)多分支就顯得繁雜。當多分支選擇的各個條件由同一個表達式的不同結果值決定時,可以用case語句實現(xiàn)。它的選擇過程,很象一個多路開關,即由case語句的選擇表達式的值,決定切換至哪一語句去工作。因此在分支結構程序設計中,它是一種強有力的手段。在實現(xiàn)多路徑分支控制時,用case對某些問題的處理和設計,比用if語句寫程序具有更簡潔、清晰之感。(一)、情況語句的一般形式

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論