我有個白痴的問題,關於Pascal的

時間 2021-08-11 18:03:07

1樓:

pascal基本語句

hb007 發表於 2006-4-13 13:57:30

名 稱 格 式 功 能

賦值語句 變數識別符號:=表示式; 先計算表示式的值,再將表示式的值賦給變數。

輸入語句 read(變數表);

readln(變數表); 從鍵盤上為變數表中的變數賦值。

從鍵盤上為變數表中的變數賦值(換行讀入)。

輸出語句 write(輸出表); 將輸出項顯示在螢幕上或用印表機輸出。

writeln(輸出表); 將輸出項通過螢幕或印表機輸出(換行輸出)。

write(輸出項:場寬); 輸出項佔有的位數=場寬表示式的值。

write(輸出項:總場寬:小數位數); 輸出項佔有的位數=總場寬表示式的值。

輸出項小數部分佔有的位數=小數位數。

條件語句 if 條件 then 語句1; 若條件為真,則執行語句1。

若條件為假,執行if語句的下一個語句。

if 條件 then 語句1

else 語句2; 若條件為真,則執行語句1,否則執行語句2。

分情況語句 case 表示式 of

常數表1:語句1:

常數表2:語句2;

……常數表n:語句n;

end 先計算表示式的值,然後執行與表示式的值相同的常數所對應的語句。如果所有的常數表中沒有與表示式的值相同的常數,則執行case語句的下一個語句。

case表示式of

常數表1:語句1;

常數表2:語句2;

常數表n:語句n;

……else 語句n+l;

end 先計算表示式的值,再執行與表示式的值相同的常數所對應的語句。如果所有的常數表中沒有與表示式的值相同的常數,則執行語句n+l。

迴圈語句 for 迴圈變數:=初值 to 終值 do

迴圈體; 先把初值賦給迴圈變數,然後將此值與迴圈終值比較,當此值小於等於終值時,執行迴圈體語句。

for 迴圈變數:=初值 downto 終值 do

迴圈體; 先把初值賦給迴圈變數,然後將此值與迴圈終值比較,當此值大於等於終值時,執行迴圈體語句。

while 布林表示式 do 語句: 先計算布林表示式的值,當其值是真時,執行do後面的語句,若是假則退出迴圈。

repeat

語句1;

語句2;

……語句n

until 布林表示式; 先執行語句1到語句n,再對布林表示式進行判斷。當布林表示式值為真時重複執行語句1到語句n,直到布林表示式的值為假時退出迴圈,執行until語句下面的語句。

轉向語句 goto 標號; 轉到標號指向的語句去執行。

開域語句 with 記錄名 do 語句; 簡化對記錄的引用。

[例1.1]程式設計在螢幕上顯示「hello world!」。

pascal程式:

program ex11;

begin

writeln(『hello world!』);

readln;

end.

這個簡單樣例程式,希望大家的程式設計學習能有一個良好的開端。程式中的writeln是一個輸出語句,它能命令計算機在螢幕上輸出相應的內容,而緊跟writeln語句後是一對圓括號,其中用單引號引起的部分將被原原本本地顯示出來。

[例1.2]已知一輛自行車的售價是300元,請程式設計計算a輛自行車的總價是多少?

解:若總售價用m來表示,則這個問題可分為以下幾步處理:

①從鍵盤輸入自行車的數目a;

②用公式 m=300*a 計算總售價;

③輸出計算結果。

pascal程式:

program ex12;

var a,m : integer;

begin

write(『a=』);

readln(a);

m := 300*a;

writeln(『m=』,m);

readln;

end.

此題程式結構完整,從中可看出一個pascal 程式由三部分組成:

(1)程式首部

由保留字program開頭,後面跟一個程式名(如:exl1);其格式為:

program 程式名;

程式名由使用者自己取,它的第一個字元必須是英文字母,其後的字元只能是字母或數字和下劃線組成,程式名中不能出現運算子、標點符和空格。

(2)說明部分

程式中所用的常量、變數,或型別、及過程與自定義函式,需在使用之前預先說明,定義資料的屬性(型別)。[例1.2] 程式中 var s,r,c:

real; 是變數說明,此處說明s,r,c三個變數均為實數型別變數。只有被說明為某一型別的變數,在程式中才能將與該變數同型別的數值賦給該變數。變數說明的格式為:

var 變數表:型別;

(3)語句部分

指由保留字 begin (開始)至 end. (結尾)之間的語句系列,是解決問題的具體處理步驟,也是程式的執行部分。

pascal程式不管是哪部分,每句末尾都必須有分號(;),但允許最接近 end 的那個語句末尾的分號省略;程式結束的end末尾必須有圓點(. ),是整個程式的結束標誌。

程式中花括號「」之間的部分為註釋部分。

pascal程式結構可歸納用如下的示意圖來表示:

program 程式名; 程式首部

標號說明; (label)

常量說明; (const) 說明部分

型別說明; (type)

變數說明; (var)

過程或函式說明;

begin 程式體 (主程式)

語句系列; 語句部分

end.

圖1.1 pascal程式的結構

把處理問題的步驟編成能從上到下順序執行的程式,是簡單程式的基本特徵。再來分析下面兩道例題的pascal程式結構和繼續學習基本語句。

〔例1.3〕程式設計計算半徑為r的圓的面積和周長。

解:這是一個簡單問題,按數學方法可分以下幾步進行處理:

① 從鍵盤輸入半徑的值r;

② 用公式 s=πr2 計算圓面積;

③ 用公式 c=2πr 計算圓周長;

④ 輸出計算結果。

pascal程式:

program ex13;

var r,s,c: real;

begin

write ('r=?');

readln(r);

s:=pi*r*r; {圓面積公式s=πr2}

c:=2*pi*r; {圓周長公式c=2πr}

writeln('s=',s);

writeln('c=',c);

readln {等待輸入回車鍵}

end.

程式中pi是pascal提供的標準函式,它返回圓周率的近似值:3.1415926…。

(:=)是賦值符號,賦值語句的格式為:

變數:=表示式;

賦值語句的作用是將:=右邊表示式的值記錄到左邊的變數中。

writeln是輸出語句,輸出語句有三種格式:

① write (輸出項1,輸出項2) ; {執行輸出後游標不換行}

② writeln (輸出項1,輸出項2) ; {執行輸出後游標換到下一行}

③ writeln {僅輸出空白且游標換到下一行}

writeln語句後面的圓括號以內部分均為輸出項,可以是多項,各項間用逗號分隔; 對單引號裡的內容按照引號內的原樣(字元)輸出顯示。如果輸出項是表示式,則只輸出表示式的值,而不是表示式本身。

[例1.4] 輸出兩個自然數相除的商和餘數。

解:設被除數、除數、商和餘數,分別為a,b,c,d,均為變數,且都是整數型別。題中未給出具體的自然數a、b,可採用鍵盤輸入方式。

① 給出提示,從鍵盤輸入a, b;

② 顯示兩數相除的數學形式;

③ 求出a除以b的商c;

④ 求出a除以b的餘數d;

⑤ 緊接等式後面輸出顯示商和餘數。

pascal程式:

program ex14;

var a,b,c,d : integer;

begin

write('input a,b:'); {給出提示資訊}

readln(a,b); {輸入a,b}

writeln; {輸出一空行}

write(a,'/',b,'='); {輸出等式之後不換行}

c:=a div b; {整除運算,取商的整數部分}

d:=a mod b; {相除求餘運算,取商的餘數部分}

writeln(c,'…',d);

readln

end.

執行本程式中第一個write語句,輸出其引號以內的一串提示資訊,是給緊接著的輸入語句提供明確的提示(要求),有「一目瞭然,人機對話」之效果。

readln是一個特殊的輸入語句,要求輸入一個回車(換行)才能往下執行。

readln是輸入語句,它的一般格式為:

① read (變數1,變數2);

② readln (變數1,變數2);

③ readln

前兩種格式均要從鍵盤給變數輸入資料,輸入時,所鍵入的資料之間以空格為分隔,以回車為輸入結束。若多輸入了資料(即資料個數超過變數個數),read語句讀完資料之後,能讓後續的讀語句接著讀取多下來的資料;而readln 語句對本行多輸入的資料不能讓後續語句接著讀取多下來的資料。為了防止多輸入的資料影響下一個輸入語句讀取資料,建議儘量使用readln語句輸入資料。

第三種格式不需輸入資料,只需按入一個回車鍵。

[例1.5]自然數的立方可以表示為兩個整數的平方之差,比如43=102-62,請輸出自然數1996的這種表示形式。(這裡的43用自乘三次的形式4*4*4表示;102也用自乘二次的形式10*10表示)

解:此題沒有現成的計算公式能直接利用,但可以自行推出處理方法或構建適當的運算公式,按著構想的處理方案編排出各步驟。

設這個自然數為n,兩個平方數分別為x,y, 將問題表示為求 n3=x2—y2

① 先找出x的值,仔細觀察題中的示例,用數學方法歸納可得出x=n*(n+1)/2;(構成本題可用的計算公式)

② 再仔細觀察,發現y值比x小一個n值,即 y=x—n;

③ 輸出等式 n3=x2—y2 或n*n*n=x*x—y*y

pascal程式:

program ex15;

const n=1996;

var x,y: longint;

begin

x:=n*(n+1) div 2;

y:=x-n;

writeln(n,'*',n,'*', n,'=', x,'*', x,'—',y,'*',y);

readln

end.

本程式中n是常量,x,y是變數,為長整數型別(longint); 程式中的div 是整除運算,其結果只取商的整數部分;

[例1.6] 求一元二次方程x2+3x+2=0的兩個實數根。

解:方程的係數是常量,分別用a,b,c表示,可運用數學上現成的求根公式求方程的根,採取如下方法:

① 先求出d=b2-4ac;(求根公式中需用開方運算的那部分)

② 再用求根公式算出x1,x2的值。(x1,x2 = ? )

③ 輸出x1,x2.

pascal程式:

program ex16;

const a=1;

b=3;

c=2; {a,b,c表示方程係數}

var d : integer; {d為整型變數}

x1,x2: real; {x1,x2為實型變數}

begin

d:=b*b-4*a*c;

x1:=(-b+sqrt(d))/(2*a); {求方程的根}

x2:=(-b-sqrt(d))/(2*a);

writeln('x1=',x1,' ':6,'x2=',x2);

readln {等待輸入一個回車鍵}

end.

本程式中的a,b,c均為常量;變數d是整數型別,而變數x1,x2則是實數型別,因為運算式中的sqrt(d)開平方運算和(/)除法運算使結果為實數。sqrt( ) 是開平方函式,是pascal系統的一個標準函式。

習題1.1 模仿例題程式設計

1. 加法計算器:程式設計由鍵盤輸入兩個整數a和b,計算出它們的和並輸出到螢幕上。

2. 某梯形的上底、下底和高分別為8,12,9,求該梯形的面積。

( 梯形面積公式為 s=

3. 求右圖所示邊長為5.6 的正立方體表面積。

4. 已知圖園柱體的高為12,底面園的半徑為7,求園柱體表面積。

5. 計算某次考試語文、數學、英語和計算機等四科的總成績與平均成績。

(請用輸入語句從鍵盤輸入各科成績分)

關於濃硝酸稀硝酸的有點白痴的問題

我們知道,鐵 鋁在稀hno3或稀h2so4中能很快溶解,但在濃hno3或濃h2so4中溶解現象幾乎完全停止了,碳鋼通常很容易生鏽,若在鋼中加入適量的ni cr,就成為不鏽鋼了。金屬或合金受一些因素影響,化學穩定性明顯增強的現象,稱為鈍化。由某些鈍化劑 化學藥品 所引起的金屬鈍化現象,稱為化學鈍化。如...

關於宗教優劣問題,我有個疑問

其他的宗教給你向善之心,卻不提供向善之法,亦不提供向善之力。而唯獨 教不但提供前者所提供的,更是提供前者所無法提供的,教導你向善,幫助你向善。真正改變人生的信仰 教。 紫綾淚 你有宗教歧視嗎?伊斯蘭教的兄弟姐妹又叫穆斯林,是順從的意思。戰爭最大的受害者就是穆斯林,為什麼有戰爭啊?是因為那些有企圖的國...

關於證明牛頓萊布尼茲公式這裡我有個問題

永夜書為伴 這是哪塊的公式?我沒有見過這樣的牛頓萊布尼茨公式,我只見過解定積分裡的牛頓萊布尼茨公式,而且這個公式的證明也不是你給的這樣的。關於牛頓萊布尼茲公式的證明問題 以上c f a 為什麼還能代入進去啊?我不能理解 這是計算常數c的一個方法而已,既然常數c計算出來了,當然能帶入證明的第二行的等式...