ch4 lap trinh tren maple
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.
-
>
>
>
>