ch4 lap trinh tren maple

Upload: dodinhthu

Post on 17-Oct-2015

207 views

Category:

Documents


1 download

TRANSCRIPT

  • CHNG 4. LP TRNH C BN TRN MAPLE

    Ngi son: Ths Trn Cng Mn

    Khoa Ton - i hc Khoa hc Hu

    Maple l ngn ng lp trnh ng thi cng l cng c dng cho tnh ton, v vy Maple cung cp rt nhiu hm (hm ton hc cng nh hm p ng cho vic lp trnh) t ngi

    dng c th t xy dng cc hm hoc chu trnh tnh ton.

    s dng mt cch hiu qu cc hm do Maple cung cp, ta phi kt hp gia cc hm mi c th pht huy ht sc mnh ca h thng cc hm c trong th vin ca Maple. C nhiu

    cch lm c iu ny, trong cch n gin nht l lp hm kp (hm lng nhau). Ta c

    th gi cc hm lng nhau nh c ch cho gi tr ca cc hm, tc l cc hm sau khi thc hin

    mt thao tc theo cc tham s thng cho cc gi tr l kt qu ca cc php tnh, ta c th ly

    ngay kt qu ca php tnh ny lm tham s cho cc hm tip theo, v c tip tc nh vy

    cho n khi ta thu c kt qu mong mun.

    vit mt chng trnh (hm, chu trnh) trn Maple khng cn bn phi c mt k nng lp trnh cao bi v Maple c sn mt th vin khng l h tr bn trong vic ny. Khng

    ging nh cc ngn ng lp trnh khc, trong Maple ta c th s dng trc tip cc hm c

    to sn m khng phi xy dng li n. 90% trong hng nghn hm trong Maple l cc chng

    trnh c vit bng ngn ng lp trnh Maple. Ta c th trc tip kim tra cc hm ny v c

    th chnh sa li cho ph hp vi nhu cu s dng ca mnh hoc c th m rng chng ng

    dng cho cc bi ton khc. iu ny cho thy Maple l mt ngn ng c tnh tng tc cao

    vi ngi s dng.

    Ton b h thng Maple c th chia lm 3 thnh phn c bn:

    - Kernel: bao gm mt s cc hm c s c vit bng ngn ng C v c dch. Khi Maple

    khi ng th cc hm ny cng c gi ra (Loading). Ta khng th xem c m ngun ca cc

    hm ny v chng c bin dch.

    - Th vin:l ni cha cc chng trnh (hm, th tc) c vit bng ngn ng Maple bao gm:

    cc hm lin quan n tnh ton s hc, i s tuyn tnh, thng k, th,... v cc gi chu trnh

    (packages) ca nhiu lnh vc trong ton hc.

    - Giao din: ni ta c th nhp hoc cho ra cc biu thc, cc hm ton hc...

  • 4.1. Cc cu trc d liu c bn trn Maple

    4.1.1. Dy cc biu thc (Expression Sequences)

    y l mt cu trc d liu c bn ca Maple bao gm mt nhm cc biu thc c phn cch vi

    nhau bi du phy.

    V d:

    >

    >

    Nu s dng ch s m th ta ly thnh phn tnh t cui dy

    >

    >

    4.1.2. Tp hp (Sets)

    Mt tp hp l mt dy cc biu thc c gii hn bi hai du ngoc {}.

    >

    Mt tp hp trn Maple c nhng tnh cht nh tp hp trong ton hc:

    Mi phn t l duy nht, cc phn t c lp li nhiu ln ch lu 1 ln

    Khng phn bit th t cc phn t trong tp hp

    V d:

    >

    Cc php ton trn tp hp: union, intersect, minus, subset

    s1 union s2

    s1 intersect s2

    s1 minus s2

    s1 subset s2

    >

  • c nhiu thng tin hn, tham kho set trong trang tr gip.

    4.1.3. Danh sch (Lists)

    Mt danh sch l mt dy cc biu thc c gp trong du ngoc [].

    >

    Ch : Danh sch bo ton th t cc phn t v cho php lp cc phn t.

    truy nhp vo tng phn t ca danh sch ta s dng cng thc:

    [s th t ca phn t]

    >

    >

    4.1.4. Mng (Arrays)

    Mt mng l mt cu trc danh sch dng tng qut, gm 2 c im quan trng sau:

    Ch s ca phn t c th l mt s nguyn bt k

    Chiu ca mng c th ln hn 1 (danh sch ch c chiu l 1)

    to mt mng ta s dng t kha Array gm 2 tham s:

    Khong ch s ca mng, ch s cho mi chiu

    Danh sch cc phn t

    >

    >

    truy cp v tng phn t ca mng ta s dng du ngoc []

    >

    >

  • >

    >

    Error, Array index out of range

    Ngoi ra, ta cng c th s dng du ngoc () ly cc phn t vi cc ch s bt u t 1.

    >

    >

    c bit, nu to cc mng mt chiu hoc hai chiu m s chiu ln hn 10 th ch hin th di

    dng thng bo. V d:

    >

    xem mng ta c th kch i chut vo thng bo hoc kch chut phi chn Browse.

    4.1.5. Bng (Tables)

    Bng l khi nim m rng ca cu trc d liu mng, nhng cu trc d liu bng c to cu

    trc bng bm (bng bm l mt cu trc d liu s dng hm bm nh x t gi tr xc nh,

    c gi l kha (v d nh tn ca mt ngi), n gi tr tng ng (nh s in thoi ca h)).

    Cc ch mc ca bng c th l gi tr bt k, khng ch cc s nguyn.

    S dng t kha table to bng:

    >

    >

    >

    >

  • 4.1.6. Chui k t (Strings)

    Mt chui k t l mt dy cc k t c tp hp trong ngoc kp " ".

    >

    Ta c th truy nhp vo tng phn t ca chui bng cch s dng du ngoc [].

    >

    Maple xy dng gi lnh StringTools gm nhiu lnh thao tc hu hiu trn chui.

    >

    >

    >

    >

    4.2. Cc cu trc iu khin

    Nh hu ht cc ngn ng lp trnh khc, Maple cng xy dng cc cu trc iu khin c bn

    qun l qu trnh thc hin lnh trong cc hm, chu trnh. C hai cu trc c bn l cu trc iu

    kin if v cu trc lp for, while.

    4.2.1. Cu trc iu kin if

    Vi cu trc ny, Maple ch thc hin thao tc khi iu kin tha mn (thao tc y c th l mt

    lnh hoc mt nhm lnh). iu kin trong lnh if phi l mt biu thc boolean (true, false, or

    FAIL).

    C php if then

    [elif then

    elif then

    ....

    else

    ]

  • end if;

    Cc l cc biu thc boolean c th c to thnh bi:

    Cc ton t quan h: ,

    Cc ton t logic: and, or, xor, implies, not

    Cc gi tr logic: true, false, FAIL

    C php elif v else l cc ty chn, c th c hoc khng.

    Cc v d:

    > x := 1173:

    > if not isprime(x) then

    ifactor(x);

    end if;

    >

    >

    >

    11 la mot so nguyen nhieu hon 1 chu so.

    4.2.2. Cu trc lp (for Statement)

    lp li mt dy cc thao tc ta dng cu trc lp. C 3 kiu lp c bn:

    Lp theo bin m (for/from)

    Lp theo thnh phn ca biu thc (for/in)

  • Lp theo iu kin (while)

    a. Vng lp for/from

    C php: for from by to do

    end do;

    Ch rng nu t kha "from" v "by" b b qua trong lnh for th bin s bt u t 1 v

    mi ln lp tng ln 1 n v.

    Cc v d:

    >

    Khi ra khi vng lp th gi tr n l

    >

    C php y ca v d trn:

    > for n from 1 by 1 to 5 do

    evalf(sqrt(n));

    end do;

    Gi tr sau "by" cng c th l mt s m:

    > for n from 10 by -1 to 3 do

    if isprime(n) then

    print(n);

    end if;

    end do;

  • > n;

    b. Vng lp for/in

    C php: for in do

    end do;

    Vi c php trn, ln lt c gn cho tng thnh phn ca biu thc, vng lp kt thc

    khi khng cn thnh phn no gn.

    V d:

    > L := [23.4, 87.2, 43.0, 99.7]:

    > for i in L do

    evalf(sin(i*Pi/180));

    end do;

    c. Vng lp while

    C php: while do

    end do;

    Vng lp while lp li dy cc thao tc cho n khi biu thc iu kin c gi tr false hoc FAIL.

    V d:

    > x := 2349:

    > while x > 0 do

    irem(x, 7);

    x := iquo(x, 7);

    end do;

  • Kt qu ca vng lp trn tng ng vi cu lnh i c s sau:

    >

    d. Cc vng lp v hn

    Cc vng lp m khng c iu kin dng c gi l cc vng lp v hn. Chng hn, mt vng

    lp while m lun ng. trnh vng lp v hn ta c th dng cc lnh

    ngt lp gia chng nh: break, quit, or return lng vo trong cu trc lp. Ngoi ra ta c th ngt

    lp bng biu tng trn thanh cng c.

    4.3. Cc hm, chu trnh (procedure)

    Mt hm trong Maple l mt chng trnh bao gm nhiu thao tc. Khi s dng hm ta s thu c

    ng thi cc kt qu ca cc thao tc .

    4.3.1. nh ngha hm

    C php: := proc([])

    [local ]

    [global ]

    [option ]

    end proc;

    trong :

    l cc bin dng nhn d liu u vo (input) khi gi chu trnh.

    c khai bo trong chu trnh v ch c tc dng bn trong chu trnh.

    c khai bo trong chu trnh nhng c tc dng c bn ngoi chu trnh.

    Ch rng nu ta khng khai bo kiu d liu ca cc bin th n c mc nh nhn bt k kiu

    d liu no m Maple c (anything).

    V d:

    > p := proc() sqrt(2); end proc;

    Nu mt hm c vit trn nhiu dng th ta nhn Shift+Enter xung dng, ch khi kt thc

    hm ta mi nhn Enter nhn c hm va nh ngha.

    > p := proc()

    sqrt(2);

  • end proc;

    chy hm va nh ngha ta gi tn hm cng cc tham bin (nu c).

    > p();

    V d v hm c tham bin:

    > Khoangcach := proc(x, y)

    sqrt(x*y);

    end proc:

    >

    > Khoang_cach(13.5, 17.1);

    4.3.2. Gi tr tr v ca hm

    Khi chy mt hm, Maple ch tr v kt qu ca cu lnh cui cng. Nu mun hm tr v kt qu

    no khc ta c th dng lnh RETURN.

    > p := proc(a, b)

    a + b;

    a - b:

    end proc:

    > p(1, 2);

  • >

    >

    >

    4.3.3. Hin th m ngun ca hm trong th vin Maple

    Khng ging nh nhng i tng khc trong Maple, ta khng th hin th hm bng cch nhp

    vo tn ca n.

    > Khoangcach;

    Mun hin th hm ta phi dng lnh print (hoc eval).

    > print(Khoangcach);

    Mt trong nhng cch hc lp trnh trn Maple l ta c th hc t cch vit nhng hm c sn trong

    th vin Maple. hin th m ngun ca nhng hm ny ta phi t li gi tr interface vi ty

    chn verboseproc bng 2.

    > print(lcm);

    > interface('verboseproc' = 2):

    > print(lcm);

  • 4.4. Lp trnh trong cc vng khc

    Ta c th lp trnh Maple ngay trn mn hnh Maple ang lm vic. Tuy nhin, nu mun to ra

    mt vn bn c c vi m lnh th c mt vi cch khc:

    4.4.1. Vng son tho m lnh

    Vng son tho m lnh cho php ta lp trnh t nhin hn trong giao din Maple.

    chn mt vng son tho vo trong worksheet ang lm vic ta s dng menu Insert v chn

    Code Edit Region.

    thc hin m lnh trong vng son tho ny ta kch chut phi vo vng v chn

    Execute Code.

    Ta c th n vng son tho bng cch thu nh n li bng cch chn Collapse Code Edit

  • Region trong menu ng cnh khi kch chut phi vo vng. Khi vng son tho b thu nh,

    mt biu tng xut hin cng vi dng u tin ca m lnh trong vng son tho.

    Tham kho CodeEditRegion trong trang tr gip bit nhiu thng tin hn v vng son

    tho m lnh.

    4.4.2. M lnh khi ng cng chng trnh (Startup Code)

    M lnh khi ng cho php ta nh ngha cc lnh v cc hm s c thc hin cng lc vi file

    cha n c m ra hoc c khi ng li (restart). M lnh ny hon ton khng hin th ra

    trang lm vic, n ging nh cc lnh c bn trong th vin gi ra cng lc vi vic m Maple.

    thc hin iu ny ta thc hin:

    T menu Edit, chn Startup Code. Hoc kch vo biu tng trn thanh cng c.

    Nhp m lnh vo.

    Nhn Syntax kim tra cu trc ca cc m lnh c b li.

    Nhn Save lu m lnh v ng vng son tho.

    Tham kho thm startupcode trang tr gip.

    4.5. Lp trnh vi kiu file

    4.5.1. M, ng mt file

    m mt file ta dng c php:

    fopen(filename, mode) hoc fopen(filename, mode, type)

  • trong : filename l tn file c m;

    mode l kiu thao tc trn file gm: READ, WRITE, APPEND;

    type l kiu file gm TEXT hoc BINARY.

    >

    >

    >

    Ch : nu m file c m file cha tn ti th hm fopen() s bo li; nu m file ghi m file

    cha tn ti th Maple s to ra mt file mi, trong trng hp file tn ti th Maple cho php ghi

    ln d liu c ca file. Lnh fopen() s bo li nu file ang nh m m t trc m cha

    c ng li.

    ng mt file ang m ta dng lnh: fclose(file) vi file c th l tn file, tn bin i

    din cho file hoc s th t ca file c m.

    >

    >

    >

    >

    >

    Error, (in fclose) file descriptor not in use

    4.5.2. Ghi d liu vo file

    a. Lnh fprintf

    C php: fprintf(file, fmt, )

    trong : fmtl kiu nh dng ca d liu in ra (ging lnh printf);

    l cc biu thc c in ra.

    >

  • >

    >

    >

    b. Lnh writedata

    C php: writedata(file, data) hoc writedata(file, data, format)

    trong : format c th l integer, float hoc string.

    Lnh ny cho php vit cc d liu kiu s t ma trn, vector, danh sch (list) vo file kiu TEXT

    ca Maple. Nu file=terminal th d liu s c vit ra worksheet.

    >

    >

    1.5 2.2 3.4

    2.7 3.4 5.6

    1.8 3.1 6.7

    >

    1 2 3

    2 3 5

    1 3 6

    >

    >

    >

    c. Lnh writeline

    C php: writeline(file, str)

    Lnh ny cho php vit cc chui k t hoc cc biu thc Maple vo mt file, mi chui nm trn

    mt dng. Ch rng nu file ang c m th lnh ny s thc hin m li file di ch

    WRITE v nh dng file TEXT.

    >

  • >

    >

    4.5.3. c d liu t file

    a. Lnh fscanf

    C php: fscanf(file, fmt)

    Lnh ny cho php ghi d liu vo file di nh dng fmt.

    >

    >

    >

    b. Lnh readline

    C php: readline(file)

    Lnh ny cho php c tng dng k t trong mt file. Nu khng c dng no c c th hm

    s tr v gi tr 0.

    >

    >

    >

    c. Lnh readdata

    C php: readdata(file, n) hoc readdata(file, format, n)

    Lnh ny cho php c d liu s t mt file text trong Maple, d liu trong file phi l s nguyn

    hoc s thc c sp xp theo tng ct v cch nhau bi khong trng.

  • >

    >

    >

    >