第三章 順序結(jié)構(gòu)_第1頁
第三章 順序結(jié)構(gòu)_第2頁
第三章 順序結(jié)構(gòu)_第3頁
第三章 順序結(jié)構(gòu)_第4頁
第三章 順序結(jié)構(gòu)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章順序結(jié)構(gòu)第1頁,課件共32頁,創(chuàng)作于2023年2月Pascal的程序結(jié)構(gòu)采用了順序、選擇、循環(huán)的控制結(jié)構(gòu),使編寫的程序結(jié)構(gòu)清晰,進(jìn)而達(dá)到易懂、易改的目的。第一節(jié)賦值語句變量既然代表一個存儲單元,其值是可變的,在pascal程序中可以通過賦值語句來進(jìn)行。賦值語句的格式為:

<變量>:=<表達(dá)式>賦值語句的作用是計算表達(dá)式的值,并將結(jié)果賦給變量。對于任何一個變量必須首先賦值,然后才能引用,否則,未賦初值的變量將以一個隨機值參與運算。另外,賦值號兩邊的類型必須相同,但表達(dá)式值為整型時,它會自動轉(zhuǎn)變?yōu)閷嵭秃筚x值給該實型變量,即符合相容賦值。第2頁,課件共32頁,創(chuàng)作于2023年2月

例3-1

關(guān)于賦值功能的例子

programexample3_1;vara,b:integer;begina:=3;b:=2;a:=a+b;b:=a-b;a:=a-b;writeln(a);writeln(b);end.

程序中整型變量a,b分別賦初值3,2,接著a的值加b的值為5仍賦給a,a的值改變?yōu)?,再接下去的兩條賦值語句同樣使b的值改為3,a的值又改為2,最后輸出的a,b的值分別為2,3。第3頁,課件共32頁,創(chuàng)作于2023年2月

例3-2

關(guān)于變量必須賦初值及相容賦值的例子

programexample3_2;varc:real;beginwriteln('c=',c);c:=5div2;writeln('c=',c);end.

經(jīng)編譯運行的結(jié)果如下:

c=1.00473604E-18c=2.0000000000E+00第4頁,課件共32頁,創(chuàng)作于2023年2月可以看出:實型變量c在未賦值前的值為隨機數(shù),賦值語句中的表達(dá)式5div2的結(jié)果應(yīng)是整數(shù)2,但左邊為實型變量c,故結(jié)果2自動轉(zhuǎn)變?yōu)閷嵭蛿?shù)2.0000000000E+00賦給c。因此,我們必須養(yǎng)成給變量賦初值的習(xí)慣,并注意賦值相容的情況。第5頁,課件共32頁,創(chuàng)作于2023年2月例3-3

某倉庫8月1日有糧食100噸,8月2日又調(diào)進(jìn)20噸,8月3日賣出庫存的三分之二,8月4日又調(diào)進(jìn)庫存的3倍糧食,問該倉庫從8月1日到8月4日期間每天的糧食分別是多少噸?(輸出每天的庫存量)分析:在這個問題中,主要要描述從8月1日到8月4日期間倉庫的糧食庫存量,且易知它是不斷變化的。因此我們可以用一個變量A來描述倉庫的糧食庫存量。程序可寫如下:Programex33;VarA:integer;BeginA:=100;Writeln(‘8/1:’,A);A:=A+20;Writeln(‘8/2:’,A);A:=Adiv3;writeln(‘8/3:’,A);A:=A*4;writeln(‘8/4:’,A)End.注: 上程序各writeln中A前的‘8/1:’,‘8/2:’,‘8/3:’,‘8/4:’都表示一個字符串(即用一對單引號括起來的一串字符),對于字符串,只輸出字符串的內(nèi)容(即引號內(nèi)的字符),而引號不會輸出。第6頁,課件共32頁,創(chuàng)作于2023年2月例3-4

有三個小朋友甲、乙、丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。現(xiàn)在他們做一個游戲。從甲開始,將自己的糖分三份,自己留一份,其余兩份分別給乙與丙,多余的糖果自己吃掉,然后乙與丙也依次這樣做。問最后甲、乙、丙三人分后各有多少粒糖果?第7頁,課件共32頁,創(chuàng)作于2023年2月分析:這個問題中我們關(guān)心的是在游戲過程中每個小朋友的糖果個數(shù),且他們所擁有的的糖果數(shù)是在變化的。因此可用a、b、c三個變量分別存放甲、乙、丙三個小朋友在某一時刻所擁有的糖果數(shù)。對于每個人分糖后,他的糖果數(shù)一定為原來的糖果數(shù)div3(因為分糖過程中,糖果的數(shù)目不一定都剛好分完,用整除恰恰可以表示多余的糖自己吃掉)。而其他兩人則增加與這個小朋友現(xiàn)在擁有的一樣的糖果。程序可寫如下:programex3_4;varA,B,C:integer;beginA:=50;B:=43;C:=13;{初始時每個小朋友所擁有的糖果數(shù)}A:=Adiv3;B:=B+A;C:=C+A;{甲小朋友分糖果后,每個人擁有的糖果數(shù)變化情況}B:=Bdiv3;A:=A+B;C:=C+B;{乙小朋友分糖果后,每個人擁有的糖果數(shù)變化情況}C:=Cdiv3;A:=A+C;B:=B+C;{丙小朋友分糖果后,每個人擁有的糖果數(shù)變化情況}writeln(‘A=’,A,‘B=’,B,‘C=’,C);{輸出結(jié)果}end.以上程序的運行結(jié)果為:A=51B=35C=16第8頁,課件共32頁,創(chuàng)作于2023年2月有三個小朋友甲、乙、丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果?,F(xiàn)在他們做一個游戲。從甲開始,將自己的糖分三份,自己留一份,其余兩份分別給乙與丙,多余的糖果自己吃掉,然后乙與丙也依次這樣做。問最后甲、乙、丙三人分后各有多少粒糖果?第9頁,課件共32頁,創(chuàng)作于2023年2月輸出語句輸出語句或?qū)懻Z句是每個程序用于從屏幕顯示計算結(jié)果的語句,是必不可少的。一、輸出語句的兩種格式1、write語句格式Write(表達(dá)式1,表達(dá)式2,……);如:write(1,2,3,4);write(1.2,3.4,5);write(‘MynameisLiping’);2、writeln語句格式:Writeln(表達(dá)式1,表達(dá)式2,……)或writeln第10頁,課件共32頁,創(chuàng)作于2023年2月二、輸出語句的功能計算機執(zhí)行到某一輸出語句時,先計算出輸出語句中的每個表達(dá)式的值,并將每一個表達(dá)式的值一個接一個地輸出到屏幕上。

Write語句與writeln語句格式上都相似,但它們在功能上有所不同,兩個語句的區(qū)別在于,write語句將其后括號中的表達(dá)式一個接一個輸出后,沒有換行。而writeln語句則在輸出各個表達(dá)式的值后換行。例如以下兩個程序段的輸出分別為:write(1,2,3,4);write(5,6);輸出為:123456writeln(1,2,3,4);writeln(5,6);輸出為:123456第11頁,課件共32頁,創(chuàng)作于2023年2月三、輸出語句的輸出格式在pascal語言中輸出數(shù)據(jù)時是可以按照一定格式表示的,對整數(shù)隱含的輸出形式為按十進(jìn)制數(shù)形式。對實數(shù)的輸出,隱含的形式是科學(xué)記數(shù)法形式(如果不想用科學(xué)記數(shù)法輸出而用小數(shù)形式輸出,要自己另行定義)。事實上,輸出語句中的每個輸出項中的表達(dá)式之后可以加上格式說明,若輸出項后沒有加格式說明,則數(shù)據(jù)按系統(tǒng)隱含的格式輸出,還可加上一定格式符號按特定格式輸出。第12頁,課件共32頁,創(chuàng)作于2023年2月1、隱含的輸出格式pascal語言為整型量、實型量、布爾型量和字符串(用一對單引號括起來的字符序列)規(guī)定了每種數(shù)據(jù)所占的寬度(即一個數(shù)據(jù)占幾列),一個數(shù)據(jù)所占的寬度稱為“場寬”或“域?qū)挕?。系統(tǒng)給出的隱含場寬稱為標(biāo)準(zhǔn)場寬。下表給pascal所規(guī)定的標(biāo)準(zhǔn)場寬。數(shù)據(jù)類型標(biāo)準(zhǔn)場寬Integer實際長度Real17Boolean4或5第13頁,課件共32頁,創(chuàng)作于2023年2月在Pascal系統(tǒng)中,對于整型字符串的輸出都是按數(shù)據(jù)本身長度輸出,對于布爾型數(shù)據(jù)(只有True和False兩種值),TRUE為4列,F(xiàn)ALSE為5列,一律采用大寫輸出。而real型數(shù)據(jù)的輸出時,則按17列輸出,其中第一列為符號位,正號不顯示,后四位為“E±nn”,中間的12列為尾數(shù)部分。如:writeln(4/7);則輸出

1.1428571492E+00。這種隱含的輸出格式不容易看清楚,因此在程序中往往根據(jù)實際情況,需要自己定義場寬。第14頁,課件共32頁,創(chuàng)作于2023年2月2、指定場寬在輸出語句中輸出項允許含有格式符號,其作用就是為了指定場寬。⑴指定單場寬格式:write(表達(dá)式:N)或writeln(表達(dá)式:N),其中N為整數(shù)類型表達(dá)式,但多數(shù)情況下直接就用自然數(shù)表示,一旦指定單場寬后,所有數(shù)據(jù)不再按標(biāo)準(zhǔn)場寬輸出,而按指定場寬輸出。若數(shù)據(jù)實際長度小于指定場寬時,則一律“向右靠齊,左留空格”。如write(1234:8);write(‘a(chǎn)bcdef’:12)輸出結(jié)果:□□□□1234□□□□□□abcdef對于標(biāo)準(zhǔn)實型數(shù)據(jù)指定單場寬時,如果場寬大于標(biāo)準(zhǔn)場寬時,右靠齊按標(biāo)準(zhǔn)場寬格式輸出17位,左留空格。若場寬小于標(biāo)準(zhǔn)場寬時,第一位仍為符號位,最后四位仍為"E±nn",中間部分為尾數(shù)顯示部分。如果指定的寬度小于8位,則數(shù)據(jù)按8位格式"*.*E±nn"輸出。第15頁,課件共32頁,創(chuàng)作于2023年2月⑵指定雙場寬當(dāng)輸出項是實數(shù)時,如果希望輸出的實數(shù)不用科學(xué)記數(shù)法輸出,而用小數(shù)形式輸出,可以用指定雙場寬的方法輸出。雙場寬輸出格式為:write(實型表達(dá)式:m:n),其中m和n都是整型表達(dá)式或自然數(shù),m用以指定整個數(shù)據(jù)所占的寬度,n指定輸出實數(shù)的小數(shù)位數(shù)。如:write(8/7):9:4);輸出:□□□1.1429如果雙場寬不能滿足輸出數(shù)據(jù)的最低要求,系統(tǒng)自動突破指定的場寬限制,按實際長度輸出。如:write(8/7:5:4);要使小數(shù)點后有4位數(shù)字,而總場寬為5,是不可能的(因為還有一個小數(shù)點,小數(shù)點前面還有一個數(shù)字)。它最低限度要有6列,即輸出為:1.1429第16頁,課件共32頁,創(chuàng)作于2023年2月

例3-5

寫出下列程序的輸出結(jié)果.programex3_5;consts=‘a(chǎn)bcdefg’;var

i:integer;

r:real;

c:char;b:boolean;begin

i:=1234;r:=1234.5678;

c:=‘#’;b:=true;

writeln(i,i:6,i:3);

writeln(r,r:12:5,r:8:5);

writeln(c,c:5);

writeln(s,s:10,s:5);

writeln(b,b:5,b:3);end.運行結(jié)果如下:1234□□12341234□1.2345678000E+03□□1234.567801234.56780#□□□□#abcdefg□□□abcdefgabcdefgTRUE□TRUETRUE第17頁,課件共32頁,創(chuàng)作于2023年2月四、應(yīng)用實例分析例3-6

已知A=253,B=43,輸出A*B的運算式子。即要求輸出格式如下:253*43=10879253*43-------759+1012-------10879分析:對于該問題,我們只要控制好輸出時右靠齊即可。即前四行的總寬度一樣(例如為12),第五行總寬度比前面少1。第六、七行總寬度與前四行一樣。第18頁,課件共32頁,創(chuàng)作于2023年2月參考程序如下:vara,b:integer;begin

a:=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.第19頁,課件共32頁,創(chuàng)作于2023年2月第三節(jié)輸入語句在程序中變量獲得一個確定的值,固然可以用賦值語句,但是如果需要賦值的變量較多,或變量的值經(jīng)常變化,則使用本節(jié)介紹的輸入語句──讀語句,將更為方便。讀語句是在程序運行時由用戶給變量提供數(shù)據(jù)的一種很靈活的輸入動作,它有兩種格式:read(<變量名表>);readln[(<變量名表>)];其中變量名表是用逗號隔開的若干個變量名組成的。功能:從標(biāo)準(zhǔn)輸入文件(即INPUT,一般對應(yīng)著鍵盤)中讀入數(shù)據(jù),并依次賦給相應(yīng)的變量。第20頁,課件共32頁,創(chuàng)作于2023年2月說明:①read和readln是標(biāo)準(zhǔn)過程名,它們是標(biāo)準(zhǔn)標(biāo)識符。②執(zhí)行到read或readln語句時,系統(tǒng)處于等待狀態(tài),等待用戶從鍵盤上輸入數(shù)據(jù),系統(tǒng)根據(jù)變量的數(shù)據(jù)類型的語法要求判斷輸入的字符是否合法。如執(zhí)行read(a)語句,a是整型變量,則輸入的字符為數(shù)字字符時是合法的,當(dāng)輸入結(jié)束時,則自動將剛接受的一串?dāng)?shù)字字符轉(zhuǎn)換為整數(shù)賦給變量a。③在輸入數(shù)值型(整型或?qū)嵭停?shù)據(jù)時,數(shù)據(jù)間要用空格或回車分隔開各個數(shù)據(jù),輸入足夠多個數(shù)據(jù),否則仍要繼續(xù)等待輸入,但最后一定要有回車,表示該輸入行結(jié)束,直到數(shù)據(jù)足夠,該讀語句執(zhí)行結(jié)束,程序繼續(xù)運行。第21頁,課件共32頁,創(chuàng)作于2023年2月設(shè)a、b、c為整型變量,需將它們的值分別賦以10、20、30,寫出對應(yīng)下列語句的所有可能輸入格式。Read(a,b,c);

根據(jù)③,即可列出所有可能輸入格式:

(a)10□20□30↙

(b)10□20↙

30↙

(c)10↙

20□30↙

(d)10↙

20↙

30↙其中“↙”表示回車鍵。第22頁,課件共32頁,創(chuàng)作于2023年2月④read語句與readln語句的第一個區(qū)別是:

read語句是一個接一個地讀數(shù)據(jù),在執(zhí)行完本Read語句(讀完本語句中變量所需的數(shù)據(jù))后,下一個讀語句接著從該數(shù)據(jù)輸入行中繼續(xù)讀數(shù)據(jù),也就是說不換行。例如:

Read(a,b);

Read(c,d);

Read(e);如果輸入數(shù)據(jù)行如下:1□2□3□4□5□6□↙則a、b、c、d、e的值分別為1、2、3、4、5,如果后面無讀語句則數(shù)據(jù)6是多余的,這是允許的。第23頁,課件共32頁,創(chuàng)作于2023年2月

Readln則不同,在讀完本Readln語句中變量所需的數(shù)據(jù)后,該數(shù)據(jù)行中剩余的數(shù)據(jù)多余無用,或者說,在讀完本Readln語句中變量所需數(shù)據(jù)后,一定要讀到一個回車,否則多余的數(shù)據(jù)無用。例如:readln(a,b);readln(c);則對于上述4種輸入格式只有(b)(d)是有效的。⑤readln語句與read語句的第二個區(qū)別是:read后一定要有參數(shù)表,而readln可以不帶參數(shù)表,即可以沒有任何輸入項,只是等待讀入一個換行符(回車)。經(jīng)常用于暫停程序的運行,直到輸入一個回車。第24頁,課件共32頁,創(chuàng)作于2023年2月

例3-7關(guān)于輸入功能的例子設(shè)有下列語句:read(a,b,c);readln(d,e);readln;readln(f,g);其中,所有變量均為整型。再設(shè)輸入的數(shù)據(jù)如下:

1□2↙

3□4□5□6□7□8↙

9□10↙

11↙

12□13↙列表給出每個變量的值.分析:可以假想有一“數(shù)據(jù)位置指針”,每讀一個數(shù)據(jù)后,指針后移到該數(shù)據(jù)之后,每執(zhí)行一個readln語句后,指針移到下一個數(shù)據(jù)行的開頭。各變量的值如下表所示。變量名ABcDefg值123451112

第25頁,課件共32頁,創(chuàng)作于2023年2月⑥為了避免可能出現(xiàn)的錯誤,建議在程序中按下列原則使用讀語句:(A)如果沒有特殊需要,在一個程序中盡量避免混合使用read語句和readln語句;(B)盡量用readln語句來輸入數(shù)據(jù),一個數(shù)據(jù)行對應(yīng)一個readln語句;(C)由于執(zhí)行read或readln語句時,系統(tǒng)不會提供任何提示信息,因此,編程時最好在readln語句之前加以適當(dāng)提示,例如:write(‘Inputa,b,c:’);readln(a,b,c);在執(zhí)行時,屏幕上顯示:Inputa,b,c:_其中,“_”為光標(biāo)。執(zhí)行readln語句后,系統(tǒng)處于待待輸入狀態(tài),只有輸入了所需數(shù)據(jù)后才繼續(xù)往下執(zhí)行。第26頁,課件共32頁,創(chuàng)作于2023年2月第四節(jié)復(fù)合語句復(fù)合語句由若干語句組成序列,語句之間用分號“;”隔開,并以begin與end括起來,作為一條語句。復(fù)合語句的一般形式:

begin

語句1;語句2;

語句nend第27頁,課件共32頁,創(chuàng)作于2023年2月

例3-8

變量值交換

programex3_8;vara,b,t:integer;begina:=10;b:=20;writeln(‘a(chǎn)=',a,‘b=’,b);begint:=a;a:=b;b:=tend;writeln(‘a(chǎn)=',a,‘b=’,b)end.程序中的復(fù)合語句完成變量a,b中值的交換,整個復(fù)合語句作為一條語句,程序執(zhí)行時,按其中語句依序執(zhí)行,即完成一個復(fù)合動作。在本例中當(dāng)然去除復(fù)合語句的begin和end后,結(jié)果是一樣的。復(fù)合語句常用在某些控制語句語法上規(guī)定只能是一條語句的情況下。第28頁,課件共32頁,創(chuàng)作于2023年2月練習(xí)1、按下列輸出格式輸出,即1后面空1格,2后面空2格,……,5后面空5格,要求方法越多越好。

123452、用輸出語句輸出下列字符圖形:

\\\|///\\--//(@@)+--------oOOo-(_)-oOOo--------+|||Howdoyoudo?||||Mynameiscomputer.||||Oooo|+--------oooO---()--

溫馨提示

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

評論

0/150

提交評論