【正文】
adln 語句和 read 語句不同之處 在于輸入數(shù)據(jù)到各變量之后, readln 自動(dòng)換行,從下一行開始再輸入數(shù)據(jù)。 七、 輸出語句 輸出是將內(nèi)存中的數(shù)據(jù)送到外設(shè)的過程。 Turbo Pascal 的輸出語句有兩種形式: write(輸出項(xiàng)表 ); writeln(輸出項(xiàng)表 ); write 和 writeln 的區(qū)別在于: write 語句是輸出項(xiàng)輸出后,不換行,光標(biāo)停留在最后一項(xiàng)后, writeln 語句按項(xiàng)輸出后,自動(dòng)換行,光標(biāo)則停留在下一行的開始位置。 第四章 學(xué)習(xí)結(jié)構(gòu)化程序設(shè)計(jì) 算法的描述:自然語言、圖形(流程圖)、計(jì)算機(jī)語言 算法的三種基本結(jié)構(gòu): 順序結(jié)構(gòu)、分支(選擇)結(jié)構(gòu)、循環(huán)結(jié)構(gòu) 一、順序結(jié)構(gòu) 按算法的步驟順序執(zhí)行。 例 1:求兩個(gè)數(shù)相加并輸出和的程序。 PROGRAM ADDTWONUMBERS。 34 VAR num1,num2,sum:interger {定義三個(gè)變量為整型 } BEGIN Readln(num1,num2)。 {從鍵盤讀入兩個(gè)要相加的數(shù)} Sum:=num1+num2。 {把兩個(gè)數(shù)的和賦給 sum變量} Writeln(?the sum is:?,sum)。 {把 sum的值顯示在屏幕上} END. 二、分支結(jié)構(gòu)的兩種語句: ① if 條件 then 語句 ; ② if 條件 then 語句 1 else 語句 2; 當(dāng)布爾表達(dá)式的值為真,則執(zhí)行 then 后面的語句,值為假時(shí)有兩種情況:要么什么也不做,要么執(zhí)行 else 后面的語句。注意 else 前面沒有分號(hào),因?yàn)榉痔?hào)是兩個(gè)語句之間的分隔符,而 else 并非語句。如果在該處添了分號(hào),則在編譯的時(shí)候就會(huì)認(rèn)為 if 語句到此結(jié)束,而把 else 當(dāng)作另一句的開頭,輸出出錯(cuò)信息。 三、循環(huán)結(jié)構(gòu) while 循環(huán)結(jié)構(gòu) 語句 : while 語句用于 “當(dāng)滿足某一條件時(shí)進(jìn)行循環(huán) ”的情況。 while 語句的語法格式: while 條件 do 語句(復(fù)合); 說明:先判斷條件,滿足條件則執(zhí)行循環(huán);否則跳出循環(huán)執(zhí)行下面的語句。 例如 10 個(gè)數(shù)相加的循環(huán): while X=10 do begin sum:=sum+X。 X:=X+1。 35 End * for 循環(huán)結(jié)構(gòu) 語句 for 語句用來描述已知重復(fù)次數(shù)的循環(huán)結(jié)構(gòu)。 for 語句有兩種形式: (1) for 控制變量:=初值 to 終值 do 語句; (2) for 控制變量:=初值 downto 終值 do 語句; 第一種形式的 for 語句是遞增循環(huán)。 每次循環(huán)遞增 1, 當(dāng)控制變量的值大于終值時(shí),退出 for 循環(huán),執(zhí)行 for 語句之后的語句。第二種形式的 for 語句是遞減循環(huán)。每次循環(huán)遞減 1, 當(dāng)控制變量的值小于終值時(shí),退出 for 循環(huán),執(zhí)行 for 語句之后的語句。 例如求 10 個(gè)數(shù)相加的循環(huán): for i:=1 to 10 do sum:=sum+i。 36 一、順序結(jié)構(gòu)例子: 例子 1: 例子 2: program exam1。 program exam2 uses wincrt。 uses wincrt。 begin begin writeln(39。*****39。)。 write(39。*****39。)。 writeln(39。* *39。)。 write(39。* *39。)。 writeln(39。*****39。)。 write(39。*****39。)。 end. end. 運(yùn)行結(jié)果: 運(yùn)行結(jié)果: ***** ***** * * ***** * * ***** 例子 3: 從鍵盤上隨意輸入兩個(gè)數(shù),并求出這兩數(shù)的和。 program exam3。 uses wincrt。 var n1,n2,sum:real。 begin writeln(39。輸入兩個(gè)數(shù): 39。) 。 readln(n1,n2) 。 sum:=n1+n2。 writeln(39。這兩數(shù)的和是: 39。,sum:6:2) end. 運(yùn)行結(jié)果: 輸入兩個(gè)數(shù): 37 這兩數(shù)的和是: 例子 4:已知圓的半徑R= ,求圓的周長 C 和面積 S . Program exam4。 uses wincrt。 Var R,C,S:real。 Begin R:=。 C:=2**R。 S:=*SQR( R) 。 writeln(39。圓的周長是: 39。,c, 39。圓的面積是: 39。,S:6:2) END. 二、分支結(jié)構(gòu)例子 例子 5:從鍵盤輸入一個(gè)年份,判斷這個(gè)年份是否是閏年,并輸出相應(yīng)的信息。 program exam5。 uses wincrt。 var year:integer。 begin writeln(39。輸入一個(gè)數(shù): 39。)。 readln(year)。 if ((year MOD 4=0) AND (year MOD 1000 )) or (year mod 400=0) then writeln(year,39。是閏年 39。) else writeln(year,39。不是閏年 39。) end. 注: 有 a,b 兩數(shù),如果 a mod b=0 ,則 a 能被 b 整除。 例 :如果 X mod 2=0,則 X 是偶數(shù)。 38 例子 6: 根據(jù)輸入的考試分?jǐn)?shù)判斷是否及格,如果輸入的分?jǐn)?shù)大于等于 60,則輸出“ 及格 ”,否則輸出“ 不及 格”字樣。 Program exam6。 uses wincrt。 Var x:real。 Begin writeln(39。輸入一個(gè) 分 數(shù): 39。)。 readln(x)。 if x=60 then writeln(?及格 ?) else writeln(?不及格 ?) END. 三、循環(huán)結(jié)構(gòu) 例子 7:寫出下列程所產(chǎn)生的輸出結(jié)果。 (1) program ex1。 uses wincrt。 var t,s:integer。 begin t:=1。 s:=0。 while t=10 do begin s:=s+t。 t:=t+1。 end。 writeln(39。s=39。,s) end. 39 運(yùn)行結(jié)果: S=55 ( 2) program ex2。 uses wincrt。 var j,k:integer。 begin j:=5。 k:=1。 while kj do begin k:=k+1。 j:=j1。 writeln(j+k) end。 end. 運(yùn)行結(jié)果 : 4 4 4 40 ( 2) program ex。 uses wincrt。 var t,n,s:integer。 begin t:=1。n:=3。s:=0。 while s10 do begin t:=t*n。 s:=s+t。 end。 writeln(39。s=39。,s) end. 運(yùn)行結(jié)果: S=12 例子 7: 打印從 2 開始 的 25 個(gè)正偶數(shù)的 平方 program exam7。 uses wincrt。 var t,s:integer。 begin t:=1。 s:=2。 while t=25 do 41 begin writeln(s*s)。 s:=s+2。 t:=t+1 end。 end. 例子 8: 從鍵盤上隨意輸入兩個(gè) 整 數(shù),并求出這兩 整 數(shù)的 商 和 余數(shù) program exam8。 uses wincrt。 var n1,n2,sdiv,smod:integer。 begin writeln(39。輸入兩個(gè)數(shù): 39。)。 readln(n1,n2)。 sdiv:=n1 div n2。 smod:=n1 mod n2。 writeln(39。這兩數(shù)相除的商是: 39。,sdiv,39。 這兩數(shù)相除的余數(shù)是: 39。,smod) end. 例子 ;用減法運(yùn)算代替除法運(yùn)算,求兩個(gè)整數(shù)相除的商和余數(shù) program divandmod。 uses wincrt。 var dividen,divisor,r,t:integer。 d1,d2:integer。 begin writeln(39。輸入被除數(shù)和除數(shù) 39。)。 readln(dividen,divisor)。 42 t:=0。 d1:=dividen。 d2:=divisor。 while d1=d2 do begin t:=t+1。 d1:=d1d2 end。 writeln(dividen,39。除 39。,divisor,39。的商是, 39。,t)。 writeln(dividen,39。除 39。,divisor,39。的余數(shù)是, 39。,d1) end. 43 流程圖: 結(jié)束 開始 t=0 輸入 d1,d2 d1=d2 t=t+1 d1=d1d2