首頁>Club>
12
回覆列表
  • 1 # 匠工加工

    第一章、pascal介紹

    一、pascal的基本語法單位

    1、基本符號

    A——Z;a——z;0——9;+,-,*,/,=,<>,<=,>=,<,>,(,),[,],{,},:=,,,;,.,:,..,",^

    注意:pascal語言除了能使用以上規定的基本符號外,不得使用任何其它符號。

    2、保留字

    AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DIWNTO,ELSE,END,FILE,FOR,FUNTION,GOTO,IF,LABEL,MOD,NIL,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,WITH。

    注意:所起的檔名不能與保留字相同。

    3、識別符號

    以字母打頭的字母數字串,長度小於等於8。

    標準識別符號(共三十九個):

    標準常量:

    false,true,maxint

    標準型別:

    integer,real,char,boolean,text

    標準檔案:

    input,output

    標準函式:

    abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,ored,round,sin,sqr,

    sqrt,succ,trunc

    標準過程:

    get,new,pack,page,put,read,readln,reset,rewrite,unpack,write, writeln

    二、程式結構

    1、由三大部分組成:程式首部,說明部分,語句部分。

    PROGRAM 程式名(input,output);

    {……} 解釋

    CONST

    pi=3.14159;

    VAR

    r,l,s:real;

    BEGIN

    write("input r:");

    read(r);

    l:=2*pi*r;

    write("l=",l,"s=",s);

    END;

    2、大量使用標點符號,保留字後不加標點符號(END除外)。

    第二章、順序結構程式設計

    一、標準資料型別

    1、實型(real)

    小數表示法、指數表示法

    2、整型(integer)

    正、負整數和零

    maxint=32767

    pred:前導;succ:後繼

    [例]:pred(3)=2;succ(3)=4;

    pred(true)=false;

    succ(false)=true

    3、字元型(char)

    是指在兩個單引號中的一個字元。

    ord:取序數

    [例]:ord("A")=65

    4、布林型(boolean)

    false;true

    用於布林型的運算:NOT、AND、OR

    ord(true)=1;ord(false)=0

    二、常量和變數的定義

    常量的定義:CONST

    pi=3.14159;

    blank=" ";

    變數的定義:VAR

    r,l,s:read;

    cl:char;

    三、表示式及賦值語句

    [例]:b2-4ac 寫成:sqt(b)-4*a*c

    賦值:<變數>:=<表示式>

    四、輸入輸出語句

    1、輸入語句:read(<變量表>);readln(<變量表>)

    注:表示式裡面變數與變數之間用逗號隔開;

    readln表示下一個語句將從下一行開始操作;

    輸入時,整型或實型用空格或回車隔開,字元型之間無需分隔,一個接一

    個輸入。

    2、輸出語句:write(<輸出表>);writeln(<輸出表>)

    注:對real或integer限定場寬:write("a=",a:2:0) {a為real型}

    第三章、選擇結構程式設計

    一、if 語句

    格式:IF<條件>

    THEN<語句1>

    ESLE<語句2>

    注:1、ELSE與最近的並且未被配對的ELSE配對;

    2、複合,如果THEN或ELSE帶有多個語句,則要用BEGIN——END括起來。

    二、CASE語句

    格式:CASE <表示式> OF

    <值表1>:<語句1>

    <值表2>:<語句2>

    ……

    <值表n>:<語句n>

    [ELSE<語句>]

    END

    注:1、值表的三種表達方式:“1:”;“2,4,6:”;“10..100:”

    2、CHAR,INTEGER,BOOLEAN有序

    第四章、迴圈結構程式設計

    一、FOR語句

    格式:1、FOR <迴圈變數>:=<初值> TO <終值> DO <語句>;

    2、FOR<迴圈變數>:=<終值> DOWNTO <初值> DO <語句>。

    [例1]:輸入10個數,求最大值、最小值、和、及平均值。

    PROGRAM ten(input,output);

    VAR

    a,s,max,min,avg:real;

    i:integer;

    BEGIN

    write("please input:");

    read(a);

    s:=a;

    max:=a;

    min:=a;

    FOR i:=2 TO 10 DO

    BEGIN

    read(a);

    s:=s+a;

    IF a>max THEN

    max:=a

    ELSE

    IF a<min THEN min:=a

    END;

    avg:=s/i;

    writeln(……);

    END.

    [例2]:求s=1!+2!+3!+……+10!

    program sum_fac(input,output);

    var

    i,j,s,m:integer;

    begin

    s:=0:

    for j:=1 to 10 do

    begin

    m:=1;

    for j:=1 to i do

    m:=m*j;

    s:=s+m;

    end;

    write(……);

    end;

    二、while語句

    格式:WHILE <條件> DO

    <迴圈體>

    [例1]:輸入一串字串,求第一個“,”前的大小寫字母個數和其它字元個數。

    program string(input,output);

    var

    ch:char;

    c,s,o:integer;

    begin

    write(……);

    read(ch);

    c:=0;

    s:=0;

    o:=0;

    while ch<>"," do

    begin

    if (ch>="A")and(ch<="Z") then

    c:=c+1

    else if (ch>="a")and(ch<="z") then

    s:=s+1

    else

    o:=o+1;

    read(ch);

    end;

    write(……);

    end.

    三、REPEAT語句

    格式:REPEAT

    <迴圈體>

    UNTIL

    [例]:以字元(char)的形式讀入一實數,以實形(real)輸出該數。

    第五章、函式與過程程式設計

    一、函式(包括標準函式和自定義函式)

    1、函式的定義

    格式:FUNCTION 函式名(<形參表>):返回值型別;

    VAR

    <變數說明>

    BEGIN

    <函式體>

    END

    [注]:1、形參表每個引數都寫明其型別;

    2、有且只有一個返回值,並且要將返回值賦值給函式名。

    [例]:求五邊形的面積

    function area(a,b,c:real):real;

    var

    p:real;

    begin

    p:=(a+b+c)/2;

    area:=sqrt(p*(p-a)*(p-b)*(p-c);

    end;

    2、函式的呼叫

    1)、函式的呼叫必然出現在表示式中(等號的右邊),不能以單獨地在語句出現

    2)、呼叫時,將每個實參傳遞給對應的形參

    program ml_area(input,output);

    var

    l1,l2,l3,l4,l5,l6,l7,s:real;

    function area(a,b,c:real):real;

    var

    p:real;

    begin

    p:=(a+b+c)/2;

    area:=sqrt(p*(p-a)*(p-b)*(p-c);

    end;

    begin

    write("input");

    readln(l1,l2,l3,l4,l5,l6,l7);

    s:=area(l1,l2,l6)+area(l2,l6,l7)+……;

    writeln("s=",s:10:3);

    end.

    二、過程

    格式:PROCEDURE<過程名>(<形式引數表>)

    VAR

    <說明部分>

    BEGIN

    <過程體>

    END;

    [例1]某過程的形參表為(var a,b:real;c,d:integer;var e:char);

    主程式中有如下變數說明:x,y:real; m:integer; next:char;

    則以下實參表中合法的有:(1、2、3)

    1、(x,y,m+3,70,next)

    2、(y,x,m,m,next)

    3、(y,x,35,m DIV 10,next)

    4、(m,x,30,10,next)

    5、(x,y,m,10)

    6、(35,0,y,m,10,next)

    7、(x,y,m,m/10,next)

    8、(A,B,30,10,next)

    [例2]求程式輸出的結果。

    program ex(input,output);

    var

    x,y,z:integer;

    procedure s(x:integer; var y:integer);

    var

    z:integer

    begin

    x:=5; y:=6; z:=7;

    end;

    begin

    x:=1; y:=2; z:=3;

    s(x,y);

    writeln(x,y,z);

    end.

    輸出結果:1 6 3

    [例3]:求五個數中的最大值。

    program max_in_5(input,output);

    var

    n1,n2,n3,n4,n5:integer;

    procedure lagest_in_three(a,b,c:integer;var e:integer)

    begin

    e:=a;

    if b>e then

    e:=b;

    if c>e then

    e:=c;

    end;

    begin

    write("……");

    readln(n1,n2,n3,n4,n5);

    lagest(n1,n2,n3,n1);

    lagest(n1,n4,n5,n1);

    write(n1);

    end.

    三、巢狀

    [例]:計算、

    program Cmn(input,output);

    function fax(x:integer):integer:

    var

    i:integer;

    begin

    fac:=1;

    for i:=1 to x do

    fac:=fac*i;

    end;

    function c(a,b:integer):real;

    begin

    c:=fac(a)/fac(b)*fac(a-b)

    end;

    begin

    writeln("c(9,3)=",c(9,3));

    writeln("c(8,5=",c(8,5));

    end.

    四、遞迴

    函式或過程呼叫它本身,稱為遞迴。

    [例1]、用遞迴計算n! {=m!/n!(m-n)!}

    program fac_n(input,output);

    var

    n:integer;

    function fac(n:integer):integer;

    begin

    if n=1 then fac:=1

    else fac:=n*fac(n-1);

    end;

    [例2]、用遞迴計算

    1)、function power(a,b:integer):integer;

    begin

    if b=1 then power:=a

    else power:=a*power(a,b-1);

    end;

    2)、procedure power(a,b:integer;var c:integer);

    begin

    if b=1 then c:=a

    else power(a,b-1,c);

    c:=a*c;

    end;

    [例3]、輸入一串字串(以‘.’結束)按逆順輸出

    program revers(input,output);

    procedure rever;

    var

    c:char;

    begin

    read(c);

    if c<>"." then rever;

    write(c);

    end;

    begin

    rever;

    end.

    五、識別符號的作用域

    1、全域性變數和區域性變數

    1)、全域性變數:在主程式中被說明,作用域:整個程式;

    2)、區域性變數:在子程式中被說明,作用域:主程式及其下級的程式。

    2、子程式(function、precedure)的作用域

    一個子程式可以呼叫它的下一級了程式,或可以呼叫在它之前定義的同級子程式。

    [例]寫出程式執行的結果。

    program range(input,output);

    var

    x,y:integer;

    procedure p1;

    var

    x,z:integer;

    begin

    x:=10; y:=y+1; z:=10;

    writeln(x,y,z);

    end;

    begin

    x:=1; y:=1;

    writeln(x,y);

    p1;

    writeln(x,y,z);

    end.

    結果為:

    (x y z)

    1 1

    10 2 10

    1 2 (error)

    3、在子程式中被改變值的變數可以回傳的兩種方法:

    a、變數引數 procedure(var 變數名);

    b、在上一級程式定義了的,且在下一級程式未被重新定義的。

    [注]如果主程式的變數在子程式被重新定義,在子程式中主程式的變數被穩藏,在主程式中子程式的變數無效。

  • 中秋節和大豐收的關聯?
  • 為什麼白天沒有蚊子?它怕光嗎?但晚上開燈蚊卻來?