Professional Documents
Culture Documents
Lap Trinh Tren Maple
Lap Trinh Tren Maple
1
Vßng lÆp While cho phÐp lÆp chuçi c¸c c©u lÖnh n»m gi÷a
do vµ od khi mµ ®iÒu kiÖn vÉn cßn ®óng.
2
thùc hiÖn chuçi lÖnh ®îc lÆp liªn tiÕp cho ®Õn khi gi¸ trÞ cña
biÕn name lín h¬n gi¸ trÞ finish. Gi¸ trÞ cuèi cïng cña biÕn
name sÏ lµ gi¸ trÞ vît qu¸ finish ®Çu tiªn.
Chó ý. NÕu c¸c tõ khãa from start hoÆc by change bÞ bá qua
th× mÆc ®Þnh from 1 vµ by 1 ®îc dïng.
Vßng lÆp for- in- do- od thùc hiÖn viÖc lÆp víi mçi gi¸ trÞ mµ
biÕn chØ sè name lÊy tõ biÓu thøc expression ®· cho. Ch¼ng
h¹n vßng lÆp nµy ®îc sö dông hiÖu qu¶ khi mµ gi¸ trÞ cña
biÕn name lµ mét phÇn tö cña mét tËp hîp hoÆc danh s¸ch.
Trong trêng hîp muèn tho¸t khái tõ gi÷a vßng lÆp, ta cã thÓ
dïng c¸c c©u lÖnh break, quit, RETURN gièng nh trong vßng
lÆp while.
1.3. LÖnh ®iÒu kiÖn if
CÊu tróc có ph¸p:
if condition then
statement sequence
| elif condition then statement sequence |
| else statement sequence |
f;
(Ghi chó: C¸c c©u lÖnh trong cÆp dÊu ngoÆc ®øng lµ c¸c
lÖnh tuú chän. ThÝ dô: biÓu thøc | statement | cho biÕt r»ng
statement lµ mét c©u lÖnh tuú chän).
Chøc n¨ng:
NÕu b¹n muèn mét d·y biÓu thøc ®îc thùc hiÖn khi ®iÒu
kiÖn nµo ®ã ®îc tho¶ m·n vµ mét d·y biÓu thøc kh¸c ®îc thùc
hiÖn nÕu tr¸i l¹i th× cã thÓ dïng c©u lÖnh if- then- else- fi.
Trong c©u lÖnh trªn, nÕu ®iÒu kiÖn condition lµ ®óng th×
chuçi biÓu thøc ®øng sau then ®îc thùc hiÖn, nÕu tr¸i l¹i th×
3
®iÒu kiÖn condition sau tõ kho¸ elif sÏ ®îc kiÓm tra, nÕu nã
®óng th× chuçi lÖnh t¬ng øng sau then ®îc thùc hiÖn, cø
tiÕp tôc cho ®Õn khi c¸c ®iÒu kiÖn condition ®Òu kh«ng
tháa m·n, th× c¸c biÓu thøc sau lÖnh else ®îc thùc hiÖn.
Lu ý r»ng cÊu tróc lÖnh (tuú chän) elif...then... ®îc lÆp l¹i víi
sè lÇn tuú ý. Tõ kho¸ elif lµ d¹ng viÕt t¾t cña else if.
C¸c biÓu thøc ®iÒu kiÖn condition ®îc sö dông trong c©u
lÖnh if ph¶i ®îc t¹o thµnh tõ c¸c bÊt ®¼ng thøc, c¸c ®¼ng
thøc (c¸c phÐp to¸n quan hÖ), c¸c biÕn sè, c¸c phÐp to¸n
logic, c¸c hµm cã gi¸ trÞ tr¶ l¹i lµ gi¸ trÞ logic. NÕu tr¸i l¹i th× sÏ
g©y ra lçi.
1.4. LÖnh break
CÊu tróc có ph¸p: break
Chøc n¨ng:
Trong lóc vßng lÆp while/for ®ang ®îc thùc hiÖn, nÕu lÖnh
break ®îc gäi th× ch¬ng tr×nh sÏ tho¸t ngay lËp tøc ra khái
vßng lÆp while/for tËn trong cïng nhÊt mµ cã chøa lÖnh break
(v× còng cã thÓ cã nhiÒu vßng lÆp while/for ®îc lång nhau).
Mét vÝ dô kh¸ ®iÓn h×nh trong viÖc sö dông lÖnh break lµ
trong qu¸ tr×nh t×m kiÕm search, râ rµng lµ b¹n sÏ muèn dõng
qu¸ tr×nh quÐt l¹i ngay khi b¹n t×m thÊy ®èi tîng cÇn t×m.
Khi ®ã, ngay t¹i thêi ®iÓm t×m thÊy, b¹n dïng lÖnh break ®Ó
nh¶y ra khái vßng lÆp t×m kiÕm. Tríc lÖnh break thêng cã
mét c©u lÖnh ®iÒu kiÖn if... then...
NÕu lÖnh break dïng ngoµi c¸c vßng lÆp while/for th× sÏ
sinh ra lçi.
4
Chó ý: break kh«ng ph¶i lµ tõ kho¸ (tõ dµnh riªng cho Maple),
v× vËy ta cã thÓ g¸n gi¸ trÞ cho biÕn cã tªn lµ break mµ
kh«ng hÒ sinh ra lçi (mÆc dï ®iÒu nµy lµ kh«ng nªn).
1.5. LÖnh next
CÊu tróc có ph¸p: next
Chøc n¨ng:
Còng gièng nh c©u lÖnh break, lÖnh next ®îc thùc hiÖn
trong vßng lÆp while/for víi môc ®Ých bá qua mét sè lÖnh
bªn trong vßng lÆp ®Ó nh¶y qua lÇn lÆp tiÕp theo. Khi gÆp
lÖnh next trong vßng lÆp, ch¬ng tr×nh bá qua c¸c lÖnh tiÕp
theo cña vßng lÆp tËn cïng nhÊt chøa next cho ®Õn khi gÆp
tõ kho¸ x¸c ®Þnh kÕt thóc vßng lÆp (ë ®©y lµ lÖnh od). §Õn
®©y vßng lÆp tiÕp tôc nh¶y qua lÇn lÆp tiÕp theo (nÕu cã
thÓ) b»ng c¸ch t¨ng chØ sè hoÆc kiÓm tra ®iÒu kiÖn ®Ó
quyÕt ®Þnh xem cã nªn thùc hiÖn vßng lÆp tiÕp theo.
LÖnh next sinh ra lçi nÕu nã ®îc gäi ngoµi vßng lÆp
while/for. T¬ng tù nh break, next còng kh«ng ph¶i lµ tõ khãa,
do ®ã ta hoµn toµn cã thÓ g¸n cho next mét gi¸ trÞ (xem nh
next lµ mét biÕn). Ngay tríc lÖnh next còng thêng lµ mét c©u
lÖnh ®iÒu kiÖn if... then...
5
C¸ch ThiÕt lËp mét chu tr×nh
6
Maple lµ mét ng«n ng÷ lËp tr×nh híng chu tr×nh
(procedure). Chóng ta cã thÓ lµm viÖc víi Maple b»ng hai chÕ
®é kh¸c nhau: ChÕ ®é t¬ng t¸c trùc tiÕp th«ng qua viÖc
nhËp tõng lÖnh ®¬n lÎ ngay t¹i dÊu nh¾c lÖnh cña Maple vµ
nhËn ®îc ngay kÕt qu¶ cña lÖnh ®ã. ChÕ ®é chu tr×nh ®îc
thùc hiÖn b»ng c¸ch ®ãng gãi mét d·y c¸c lÖnh xö lÝ cïng mét
c«ng viÖc vµo trong mét chu tr×nh (procedure) duy nhÊt, sau
®ã ta chØ cÇn gäi chu tr×nh nµy vµ Maple tù ®éng thùc hiÖn
c¸c lÖnh cã trong chu tr×nh ®ã mét c¸ch tuÇn tù vµ sau ®ã
tr¶ l¹i kÕt qu¶ cuèi cïng.
Maple chøa mét lîng rÊt lín c¸c hµm t¹o s½n ®¸p øng cho
nh÷ng yªu cÇu tÝnh to¸n kh¸c nhau trong nhiÒu lÜnh vùc. C¸c
hµm nµy ®îc lu tr÷ trong c¸c gãi chu tr×nh (package) vµ ngêi
sö dông cã thÓ dÔ dµng gäi ®Õn mçi khi cÇn thiÕt. Tuy nhiªn,
ngêi dïng Maple cã thÓ tù t¹o cho riªng m×nh nh÷ng gãi chu
tr×nh còng nh cã thÓ trao ®æi dïng chung nh÷ng gãi chu
tr×nh nµo ®Êy, phôc vô cho c«ng viÖc mang tÝnh ®Æc thï
riªng cña m×nh.
C¸c kh¸i niÖm c¬ b¶n cÇn ph¶i n¾m v÷ng ®Ó t¹o ra mét
chu tr×nh (procedure) lµ:
CÊu tróc proc()..end; cïng víi c¸c khai b¸o trong cÊu tróc nµy
(global, local, option,...).
C¸c cÊu tróc d÷ liÖu vµ c¸c hµm cã liªn quan (d·y-sequence,
tËp hîp-set, danh s¸ch-list, m¶ng-array, b¶ng-table).
C¸c hµm lËp tr×nh c¬ b¶n (®· nªu ë trªn) vµ c¸c hµm liªn
quan ®Õn viÖc xö lÝ d÷ liÖu (eval, evalf, subs, map,
convert,...).
2.2. Khai b¸o chu tr×nh
7
Lêi gäi khai b¸o mét chu tr×nh:
procedure_name:=proc(parameter_sequence)
[local local_sequence]
[global global_sequence]
[options options_sequence]
statements_sequence;
end;
Gi¶i thÝch c¸c khai b¸o:
parameter_name: Lµ mét d·y c¸c kÝ hiÖu, ng¨n c¸ch nhau
bëi c¸c dÊu phÈy, chøa tªn c¸c tham biÕn truyÒn cho chu
tr×nh.
local_sequence: Lµ mét d·y c¸c tªn ®îc khai b¸o lµ biÕn côc
bé trong chu tr×nh, nã chØ cã gi¸ trÞ sö dông trong ph¹m vi
chu tr×nh ®ang xÐt (local ®îc sö dông ®Ó khai b¸o cho c¸c
biÕn chØ sö dông bªn trong mét chu tr×nh).
global_sequen: D·y c¸c tªn biÕn toµn côc cã gi¸ trÞ sö dông
ngay c¶ bªn ngoµi chu tr×nh.
options_sequence: D·y c¸c tuú chän cho mét chu tr×nh.
statements_sequence: D·y c¸c c©u lÖnh do ngêi lËp tr×nh
®a vµo.
2.3. Tham biÕn
Tham biÕn (parameter) lµ c¸c biÕn ®îc ®Æt gi÷a hai dÊu
ngoÆc trong biÓu thøc proc(...). Tham biÕn ®îc dïng ®Ó
nhËn d÷ liÖu truyÒn cho chu tr×nh khi gäi chu tr×nh ®ã. VÝ
dô ta cã thÓ khai b¸o chu tr×nh tÝnh tæng cña 2 sè
[tong:=proc(x,y) x+y; end.] th× khi gäi chu tr×nh nµy ®Ó
tÝnh tæng cña hai sè 10 vµ 5 ta ph¶i truyÒn c¸c d÷ liÖu nµy
cho c¸c tham biÕn (cho x nhËn gi¸ trÞ lµ 10, y nhËn gi¸ trÞ lµ
8
5), tøc lµ t¹i dÊu nh¾c lÖnh ta ph¶i viÕt tong(10, 5); vµ sau
khi thùc hiÖn chu tr×nh tr¶ l¹i kÕt qu¶ lµ 15.
Tham biÕn cã tÝnh côc bé: chóng chØ ®îc sö dông bªn trong
chu tr×nh ®· ®îc khai b¸o, bªn ngoµi chu tr×nh nµy chóng
kh«ng mang ý nghÜa g×.
KiÓu cña tham biÕn cã thÓ ®îc khai b¸o trùc tiÕp.
2.4. Ph¹m vi c¸c biÕn (biÕn toµn côc, biÕn côc bé vµ tham
biÕn)
BiÕn toµn côc:
BiÕn toµn côc ®îc khai b¸o sau tõ kho¸ global trong khai b¸o
chu tr×nh.
BiÕn toµn côc ®îc khai b¸o bªn trong mét chu tr×nh, nhng
cã ph¹m vi gi¸ trÞ trong toµn bé ch¬ng tr×nh, tøc lµ bªn ngoµi
ph¹m vi cña chu tr×nh mµ nã ®îc khai b¸o trong ®ã.
BiÕn côc bé:
BiÕn côc bé ®îc khai b¸o sau tõ kho¸ local trong khai b¸o
chu tr×nh.
BiÕn côc bé chØ cã gi¸ trÞ bªn trong chu tr×nh mµ nã ®îc
khai b¸o. Ngoµi chu tr×nh nµy nã kh«ng mang ý nghÜa g×.
Tham biÕn:
Còng gièng nh biÕn côc bé, c¸c tham biÕn chØ cã gi¸ trÞ bªn
trong ph¹m vi cña chu tr×nh mµ nã ®îc khai b¸o. Sau khi chu
tr×nh kÕt thóc, chóng kh«ng cßn gi¸ trÞ.
Tham biÕn cßn ®îc sö dông ®Ó tr¶ l¹i kÕt qu¶, nh c¸c ng«n
ng÷ lËp tr×nh truyÒn thèng. Ngoµi ra, do Maple cã nh÷ng
9
hµm cã kh¶ n¨ng tr¶ l¹i nhiÒu h¬n mét gi¸ trÞ. Ta cã thÓ gép
c¸c gi¸ trÞ nµy vµo mét danh s¸ch ®Ó tr¶ l¹i nh mét phÇn tö.
2.5. §Þnh gi¸ trªn c¸c biÕn
§Þnh gi¸ tªn hµm vµ tham biÕn:
Nh ®· ®Ò cËp tríc ®©y, c¸c tªn biÕn trong mét biÓu thøc
®îc Maple ®Þnh gi¸ tríc khi thùc hiÖn c¸c phÐp tÝnh trªn
chóng. §èi víi viÖc thùc hiÖn c¸c hµm còng t¬ng tù nh vËy. Tríc
tiªn lµ tªn chu tr×nh ®îc ®Þnh gi¸. Sau ®ã lÇn lît ®Õn c¸c ®èi
sè trong danh s¸ch c¸c ®èi sè truyÒn cho chu tr×nh (®îc
®Þnh gi¸ tõ tr¸i sang ph¶i). NÕu tªn chu tr×nh ®îc ®Þnh gi¸
trá ®Õn mét chu tr×nh, th× chu tr×nh Êy ®îc thùc thi trªn c¸c
®èi sè ®· ®îc ®Þnh gi¸. Tuy nhiªn vÉn cã mét sè chu tr×nh
ngo¹i lÖ: ®ã lµ c¸c hµm eval, assigned, seq.
10
trace(f)
trace(f, g, h, . . .)
Tham sè: C¸c hµm f, g, h,... lµ c¸c hµm cÇn ch¹y tõng bíc.
LÖnh trace cho in c¸ch thøc hiÖn tõng lÖnh cña mét chu
tr×nh ra mµn h×nh.
LÖnh dß trace() ho¹t ®éng t¬ng tù nh khi ta g¸n cho biÕn
printlevel mét sè ®ñ lín ®Ó cã thÓ hiÖn ra mµn h×nh tÊt c¶
c¸c c©u lÖnh còng nh ®iÓm vµo vµ ®iÓm ra cña hµm mµ ta
®ang thùc hiÖn.
Trong suèt qu¸ tr×nh thùc hiÖn, c¸c ®iÓm vµo, c¸c kÕt qu¶
cña c¸c c©u lÖnh, c¸c ®iÓm ra cña hµm cÇn dß ®îc hiÖn ra
mµn h×nh. C¸c tham biÕn ®îc hiÖn ra ë ®iÓm vµo chu tr×nh,
gi¸ trÞ tr¶ l¹i cña hµm ®îc hiÖn ra ë ®iÓm cuèi chu tr×nh.
Chó ý: Kh«ng thÓ dß tõng bíc mét sè hµm cã quy t¾c ®Þnh
gi¸ ®Æc biÖt, bao gåm: assigned, eval, evalhf, evalf, evaln,
traperror, seq, userinfo.
Xem m· nguån mét chu tr×nh:
showstat(procName)
showstat(procName, statRange)
Tham sè: procName: Tªn cña chu tr×nh cÇn hiÓn thÞ m·
nguån.
StatRange: Ph¹m vi c¸c dßng lÖnh cÇn ®îc hiÓn thÞ
(tõ dßng nµo ®Õn dßng nµo).
PhÇn lín c¸c lÖnh trong Maple ®Òu ®îc viÕt b»ng ng«n ng÷
Maple, do ®ã chóng ta cã thÓ ®äc ®îc m· nguån cña nh÷ng
lÖnh nµy. Maple cung cÊp hµm showstat() ®Ó hiÖn ®o¹n ch-
¬ng tr×nh lµ m· nguån cña c¸c lÖnh trªn. Nhê cã hµm nµy mµ
ngêi häc lËp tr×nh trªn Maple cã thÓ dÔ dµng häc ®îc c¸ch
11
thøc còng nh ®Æc trng ng«n ng÷ b»ng c¸ch nghiªn cøu ph-
¬ng thøc mµ c¸c lÖnh cña Maple thùc hiÖn (th«ng qua viÖc
xem m· nguån cña chóng). Ta cã thÓ hiÓn thÞ mét phÇn m·
nguån cña c¸c chu tr×nh b»ng c¸ch ®Þnh râ ph¹m vi cña c¸c
dßng cÇn thÓ hiÖn.
Chóng ta còng cã thÓ sö dông c¸c hµm print() vµ
interface() ®Ó ®äc m· nguån cña c¸c hµm trong Maple.
Th«ng thêng th× Maple kh«ng hiÓn thÞ phÇn th©n cña c¸c
chu tr×nh ®ã nÕu ta cho hiÓn thÞ chóng. Muèn lµm ®iÒu
nµy, ta ph¶i gäi lÖnh interface() víi tham sè verbosepro =2
tríc, sau ®ã dïng lÖnh print th× ta cã thÓ xem ®îc th©n cña
chu tr×nh.
ChÆn b¾t lçi:
traperror(expr1, expr2,...)
Tham sè: expr1, expr2,... lµ c¸c biÓu thøc.
Maple sö dông biÕn lasterror ®Ó lu th«ng b¸o lçi cña lçi
x¶y ra míi nhÊt trong qu¸ tr×nh tÝnh to¸n. Ta cã thÓ sö dông
biÕn nµy gièng nh bÊt cø biÕn nµo kh¸c trong Maple, cô thÓ lµ
ta cã thÓ g¸n gi¸ trÞ bÊt k× nµo ®ã cho nã, tÝnh to¸n trªn
biÕn nµy vµ ghi gi¸ trÞ nã ®ang lu tr÷ ra mµn h×nh. Tuy nhiªn
khi x¶y ra lçi, Maple tù ®éng g¸n cho biÕn nµy x©u kÝ tù
th«ng b¸o lçi mµ hµm ERROR() sÏ hiÓn thÞ ra mµn h×nh.
Cïng víi biÕn lasterror, hµm traperror() ®îc sö dông ®Ó
chÆn b¾t mét lçi nµo ®ã trong mét biÓu thøc tríc khi lçi ®ã
®îc th«ng b¸o ra mµn h×nh. NÕu cã lçi nµo ®ã x¶y ra trong
lóc ®Þnh gi¸ trÞ hoÆc ®¬n gi¶n biÓu thøc, hµm traperror()
sÏ tr¶ l¹i x©u kÝ tù th«ng b¸o lçi cña lçi ®Çu tiªn gÆp ph¶i khi
tÝnh to¸n biÓu thøc ®ã. NÕu kh«ng cã lçi, hµm traperror()
12
tr¶ l¹i kÕt qu¶ tÝnh to¸n biÓu thøc. Mçi lÇn gäi ®Õn hµm
traperror(), Maple tù ®éng xo¸ ®i gi¸ trÞ cò cã trong bèn lÇn
tÝnh to¸n tríc.
13