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

下載本文檔

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

文檔簡介

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

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

例3-1

關于賦值功能的例子

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

關于變量必須賦初值及相容賦值的例子

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

經編譯運行的結果如下:

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

某倉庫8月1日有糧食100噸,8月2日又調進20噸,8月3日賣出庫存的三分之二,8月4日又調進庫存的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:’都表示一個字符串(即用一對單引號括起來的一串字符),對于字符串,只輸出字符串的內容(即引號內的字符),而引號不會輸出。第6頁,課件共32頁,創(chuàng)作于2023年2月例3-4

有三個小朋友甲、乙、丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果?,F(xiàn)在他們做一個游戲。從甲開始,將自己的糖分三份,自己留一份,其余兩份分別給乙與丙,多余的糖果自己吃掉,然后乙與丙也依次這樣做。問最后甲、乙、丙三人分后各有多少粒糖果?第7頁,課件共32頁,創(chuàng)作于2023年2月分析:這個問題中我們關心的是在游戲過程中每個小朋友的糖果個數(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);{輸出結果}end.以上程序的運行結果為:A=51B=35C=16第8頁,課件共32頁,創(chuàng)作于2023年2月有三個小朋友甲、乙、丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果?,F(xiàn)在他們做一個游戲。從甲開始,將自己的糖分三份,自己留一份,其余兩份分別給乙與丙,多余的糖果自己吃掉,然后乙與丙也依次這樣做。問最后甲、乙、丙三人分后各有多少粒糖果?第9頁,課件共32頁,創(chuàng)作于2023年2月輸出語句輸出語句或寫語句是每個程序用于從屏幕顯示計算結果的語句,是必不可少的。一、輸出語句的兩種格式1、write語句格式Write(表達式1,表達式2,……);如:write(1,2,3,4);write(1.2,3.4,5);write(‘MynameisLiping’);2、writeln語句格式:Writeln(表達式1,表達式2,……)或writeln第10頁,課件共32頁,創(chuàng)作于2023年2月二、輸出語句的功能計算機執(zhí)行到某一輸出語句時,先計算出輸出語句中的每個表達式的值,并將每一個表達式的值一個接一個地輸出到屏幕上。

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

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

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

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

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

Read(a,b);

Read(c,d);

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

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

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

1□2↙

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

9□10↙

11↙

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

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

begin

語句1;語句2;

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

例3-8

變量值交換

programex3_8;vara,b,t:integer;begina:=10;b:=20;writeln(‘a=',a,‘b=’,b);begint:=a;a:=b;b:=tend;writeln(‘a=',a,‘b=’,b)end.程序中的復合語句完成變量a,b中值的交換,整個復合語句作為一條語句,程序執(zhí)行時,按其中語句依序執(zhí)行,即完成一個復合動作。在本例中當然去除復合語句的begin和end后,結果是一樣的。復合語句常用在某些控制語句語法上規(guī)定只能是一條語句的情況下。第28頁,課件共32頁,創(chuàng)作于2023年2月練習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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論