You are on page 1of 17

Chng 3

Lp trnh trn Maple


Ngi son: Trn Cng Mn Khoa Ton - i Hc Khoa Hc Hu

3.1. Li ni u
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 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 c sn ca Maple. Mun lm c iu ny, ta c nhiu cch thc, 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 giao 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 (load) theo. 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...

3.2. Cc cu trc iu khin s dng trong lp trnh Maple


Nh hu ht cc ngn ng lp trnh, Maple cng xy dng cc cu trc iu khin c bn qun l qu trnh thc hin lnh trong mt chu trnh. c bit, ta c th sp xp cc cu lnh trong chu trnh theo dy, theo iu kin chn la hoc theo mt vng lp no .

a. Lnh iu kin if * C php:

if <biu thc iu kin 1> then <dy cc lnh 1> [elif <biu thc iu kin 2> then <dy cc lnh 2> else <dy cc lnh 3>] end if;

* Cng dng: cho php chn la <dy cc lnh> thc hin tu theo gi tr logic ca <biu thc iu kin> > ?if V d 1 > x:=-2; x := -2 > if x>0 then print("So duong") else if x=0 then print("So 0") else print("So am") end if end if; "So am" Lu rng trong Maple khng c cu trc chn la theo trng hp (case), tuy nhin ta c th dng lnh if thay cho lnh case bi cc tu chn sau else. V d 2 > n := 5; if n=0 then 0 elif n=1 then 1/2 elif n=2 then sqrt(2)/2 elif n=3 then sqrt(3)/2 else error "du lieu ko dung: \%1", n; end if;
n := 5
Error, du lieu ko dung: 5

> ?error > > * Ngoi cu trc chn la ca if nh trn ta cn c th s dng if nh mt hm vi c php sau

`if`(<biu thc iu kin>, <biu thc ng> , <biu thc sai>) V d 3 > `if`(5<1,"TRUE","FALSE"); "FALSE" > 5*(Pi + `if`(2 > 3,a,b)); 5 5b

b. Vng lp for
C php: for <name> from <start> by <change> to <finish> do <dy cc lnh> od; hoc c dng khc: for <name in expression> do <dy cc lnh> od; V d > for i from 2 by 2 to 6 do i^2 od; 4
16 36

> L := [7,2,5,8,7,9];
L := [ 7, 2, 5, 8, 7, 9 ]

> for i in L do if i <= 7 then print(i) end if; end do; 7


2 5 7

> Ch : nu cc t kho from start hoc by change b b qua th mc nh lnh for s bt u t 1 v tng ln 1 n v sau mi vng.

c. Vng lp while
* C php: while <iu kin> do <dy cc lnh> od; V d Tm c s chung ln nht ca 2 s theo thut ton Euclide > a:=48; b:=54; a := 48
b := 54

> while b<>0 do d:=irem(a,b); a:=b; b:=d; od: print(`Uoc so chung lon nhat cua hai so la:`); value(a); Uoc so chung lon nhat cua hai so la:
6

> gcd(48,54); 6 > x:=256; x := 256 > while x>1 do x := x/4 end do; x := 64
x := 16 x := 4 x := 1

* Ch : thot khi gia chng cc vng lp for hoc while ta s dng mt trong cc lnh: break, quit, RETURN. Xem thm v cc lnh ny bng cch nh tr gip ?break, ?quit, ?RETURN.

3.3. Thit lp mt chu trnh (Procedure)


Maple l mt ngn ng lp trnh hng chu trnh (procedure). Chng ta c th lm vic vi Maple bng hai ch khc nhau: Ch tng tc trc tip thng qua vic nhp tng lnh

n l ngay ti du nhc lnh ca Maple v nhn c ngay kt qu ca lnh . Ch chu trnh c thc hin bng cch ng gi mt dy cc lnh x l cng mt cng vic vo trong mt chu trnh (procedure) duy nht, sau ta ch cn gi chu trnh ny v Maple t ng thc hin cc lnh c trong chu trnh mt cch tun t v sau tr li kt qu cui cng. Maple cha mt lng rt ln cc hm to sn p ng cho nhng yu cu tnh ton khc nhau trong nhiu lnh vc. Cc hm ny c lu tr trong cc gi chu trnh (package) v ngi s dng c th d dng gi n mi khi cn thit. Tuy nhin, ngi dng Maple c th t to cho ring mnh nhng gi chu trnh cng nh c th trao i dng chung nhng gi chu trnh no y, phc v cho cng vic mang tnh c th ring ca mnh.

a. Khai bo mt chu trnh


* C php: procedure_name:=proc([<cc tham bin>]) [local < cc bin cc b>] [global <cc bin ton cc>] [options <cc tu chn>] <dy cc lnh>; end; V d 1 > hello := proc() "Hello World"; end;
hello := proc() "Hello World" end proc

s dng hm ny ta ch cn dung lnh sau: > hello(); "Hello World" > UCLN := proc(a, b) local d; while b 0 do d := irem( a, b ) ; a := b ; b := d end do; printf( "Uoc so chung lon nhat cua hai so la: %d"a ) , end proc > UCLN(2,4);
Error, (in UCLN) illegal use of a formal parameter

V d 2 > restart; > UCLN :=proc(x,y) local d,a,b; a:=x; b:=y; > while b<>0 do d:=irem(a,b);

a:=b; b:=d; od; printf("Uoc so chung lon nhat la: %d",a); > end; UCLN := proc(x, y) local d, a, b; a := x; b := y; while b 0 do d := irem( a, b ) ; a := b ; b := d end do; printf( "Uoc so chung lon nhat la: %d" a ) , end proc > UCLN(24,54);
Uoc so chung lon nhat la: 6

b. Tham bin, bin cc b, bin ton cc


Tham bin (parameter) l cc bin c t gia hai du ngoc trong biu thc proc(...). Tham bin c dng nhn d liu truyn cho chu trnh khi gi chu trnh . V d 1 > f := proc(x,y) x^2 + y^2 end proc; f := proc(x, y) x^2 y^2 end proc > f(2,3); 13 Tham bin c tnh cc b: chng ch c s dng bn trong chu trnh c khai bo, bn ngoi chu trnh ny chng khng mang ngha g. Kiu ca tham bin c th c khai bo trc tip V d 2 > F := proc(x :: integer, y :: integer) gcd(x,y) end proc; F := proc(x:: integer, y:: integer) gcd( x, y ) end proc > F(3,6.2);
Error, invalid input: F expects its 2nd argument, y, to be of type integer, but received 6.2

> F(3,6); 3 Nu ta khng khai bo kiu ca tham s th n c th nhn bt k kiu g. V d, chu trnh proc(x) tng ng vi chu trnh proc(x::anything). Bin cc b: c khai bo sau t kho local trong khai bo chu trnh

Ging nh tham bin, bin cc b ch c gi tr bn trong chu trnh m n c khai bo. Nu khng khai bo kiu ca bin cc b th n cng nhn kiu bt k. Bin ton cc: c khai bo sau t kho global trong khai bo chu trnh. - Bin ton cc c khai bo bn trong mt chu trnh, nhng c phm vi gi tr trong ton b chng trnh, tc l bn ngoi phm vi ca chu trnh m n c khai bo trong . V d 3 Chu trnh sau tnh gi tr ln nht ca cc tham s c truyn vo > Max := proc() local i,m; if nargs = 0 then #narg: so cac tham so truyen vao return -infinity end if; m := args[1]; #gan m cho tham so thu nhat for i from 2 to nargs do if args[i] > m then m := args[i] end if; end do; m; end proc: > Max(); > Max(1,5,12,-19); 12 V d 4 > f:=proc()local a;global b;a:=10;b:=a+5;end; f := proc() local a; global b; a := 10 ; b := a 5 end proc > f(); 15 > b; 15 > a; a

c. Cc tu chn trong chu trnh


Cc tu chn ca mt chu trnh c bt u bi t kho options v c khai bo ngay sau khai bo bin. Mt chu trnh c th c mt hoc nhiu tu chn. Sau y ta s tm hiu mt s tu chn: 1. Tu chn arrow Gip cho vic nh ngha hm bng chu trnh th hin qua k hiu mi tn. Xt 2 v d sau: > f := proc(x, y) option operator; x^2 + y^2

end proc; f := proc(x, y) optionoperator; x^2 > f(1,2); 5 > f := proc(x, y) option operator, arrow; x^2 + y^2 end proc; f := ( x, y ) x2 y2 > f(1,2); 5

y^2 end proc

Ch rng tu chn arrow ch c ngha khi i cng vi tu chn operator. 2. Tu chn Copyright thm mt ghi ch v bn quyn vo chu trnh ta s dng tu chn ny trong chu trnh. Khi s dng tu chn ny th Maple hiu rng phn thn ca chu trnh khng c in ra. Ch khi no ta dng cc lnh buc Maple in m lnh ca chu trnh ra th mi c th thy c ton b chu trnh. > f := proc(expr::anything, x::name) option `Copyright (c) 1684 by G. W. Leibnitz`; Diff(expr, x); end proc; f := proc(expr:: anything, x:: name) ... end proc > interface(verboseproc=2); 1 > eval(f); proc(expr:: anything, x:: name) ... end proc 3. Tu chn operator Cho ta phng php biu din cc hm ton hc (hay nh x) trong Maple vi hnh nh mi tn. Do , tu chn ny thng i km vi tu chn arrow xt trn. > f := proc(x, y) option arrow; x^2 + y^2 end proc; f := proc(x, y) optionarrow; x^2 y^2 end proc > f := proc(x, y) option operator, arrow; x^2 + y^2 end proc; f := ( x, y ) x2 y2 4. Ty chn remember Cho php lin kt mt chu trnh vi mt "bng nh". Bng nh ny gip cho vic thc hin chu trnh c nhanh hn, cc gi tr tnh trong chu trnh s c lu vo bng nh ny. Mi khi chu

trnh c gi, trc ht Maple kim tra gi tr ca chu trnh c trong bng hay cha, nu c th a ra kt qu cn nu cha c th thc hin cc lnh trong chu trnh a ra kt qu v lu kt qu vo bng nh. V d, xt chu trnh tnh dy Fibonacci sau: > Fib := proc( n :: nonnegint ) option remember; if n<2 then n else Fib(n-1) + Fib(n-2) end if; end proc; Fib := proc(n:: nonnegint) option remember; if n 2 then n else Fib( n 1 ) Fib( n 2 ) end if end proc > Fib(4); 3 Nu ta nhp vo dng lnh: interface(verboseproc=3) v sau xem nh ngha hm bng lnh eval th cc thnh phn ca bng nh s c in ra. > interface(verboseproc=3); 2 > eval(Fib); proc(n:: nonnegint) option remember; if n 2 then n else Fib( n end proc > Fib(7); 13 > eval(Fib); proc(n:: nonnegint) option remember; if n 2 then n else Fib( n end proc

1)

Fib( n

2 ) end if

1)

Fib( n

2 ) end if

5. Tu chn trace Nu ta thm tu chn ny vo trong chu trnh th Maple s in ra ton b cch thc thc hin lnh ca chu trnh t khi bt u n khi kt thc ra mn hnh. V d: > Fib := proc( n :: nonnegint ) option remember, system, trace; if n<2 then n else

Fib(n-1) + Fib(n-2) end if; end proc: > Fib(3);


{--> enter Fib, args = 3 {--> enter Fib, args = 2 {--> enter Fib, args = 1

1
<-- exit Fib (now in Fib) = 1} {--> enter Fib, args = 0

0
<-- exit Fib (now in Fib) = 0}

1
<-- exit Fib (now in Fib) = 1} value remembered (in Fib): Fib(1) -> 1

2
<-- exit Fib (now at top level) = 2}

>

d. Hin th m ngun ca cc chu trnh trong th vin Maple


Thay v hc lp trnh Maple nh nhng ngn ng khc ta c th hc lp trnh Maple thng qua cc hm, th tc c sn trong th vin ca n. Ta c th cho hin th mt th tc bt k ca Maple bng cp lnh sau: interface(verboseproc=2) v print() > interface(verboseproc = 2): print(lcm); proc(a, b) ... end proc > print(add); proc() optionbuiltin add; end proc Bi v cc th tc c thit lp trong kernel c vit bng ngn ng C v c bin dch nn ta khng th xem cc nh ngha ca chng. > print(abs); proc() option builtin abs; end proc > restart;

e. Mt s lnh vo ra d liu trong lp trnh Maple


1. Lnh interface Thng thng Maple cho in ra mt biu thc hay mt k hiu ton hc di dng hon chnh (prettyprint). Ta c th xem cch Maple thnh lp cc biu thc hay k hiu nh vy bng cch dng lnh interface tc ng vo tham bin prettyprint thay i li nh dng khi in ra. V d > interface(prettyprint=0);#bieu thuc in ra trong dinh dang 1 chieu

> Int(x^2, x=1..10);


Int(x^2,x = 1 .. 10)

> interface(prettyprint=1);#bieu thuc in ra trong dih dang 2 chieu


0

> Int(x^2, x=1..10);


10 / | 2 | x dx | / 1

> interface(prettyprint=3);#bieu thuc in ra theo dinh dang chuan > Int(x^2, x=1..10); 1
10

x 2 dx
1

> 2. Lnh print Hin th cc biu thc lm tham bin ra mn hnh > 10^2; 100 > print(10^2); 100 > print(apple, banana, orange); apple, banana, orange > %; 100 > T := table([w,x,y,z]); T := table([1 w, 2 x, 3 y, 4 z]) > T; T > print(T); table([1 w, 2 x, 3
y, 4 z])

> 3. Lnh printf Lnh ny cho php hin th cc tham bin ra vi cc nh dng c bit. C php lnh: printf( formatString, expr1, expr2, expr3, ... ); trong , formatString l cch thc nh dng ca cc biu thc khi in ra (tng t trong ngn ng lp trnh C, C++). Cu trc y ca mt formatString l: %[flags][width][.precision][modifiers]code

trong : + flags: l cch nh dng u ra. V d, in du + ra trc mt s nguyn dng, du - dng canh l tri + width: s k t hin th khi in ra + precision: s k t xut hin sau du chm thp phn khi in ra mt s thc + modifiers: nh dng cc gi tr c bit. V d: nh dng Z cho s phc. + code: nh dng ca cc tham bin ra nh s nguyn (d), s thc (e hoc f), k t (c) hay chui (s)... Cc nh dng bt u vi k t %. Lu rng Maple khng t ng ngt dng khi in d liu ra mn hnh, ta phi dng nh dng "\n" buc Maple phi ngt dng. Xem cc v d sau: > printf("%d\n", 12345);
12345

> printf("%10d\n", 12345);


12345

> printf("%+10d\n", 12345);


+12345

> printf("%-10d %d\n", 12345, 6789);


12345 +12345 6789 hi z

> printf("%+10d %+5s %-c \n", 12345, hi, z ); > printf("The %-s of the %-s\n is %-a dollars.", price, hat, 10);
The price of the hat is 10 dollars.

> printf("%-5s is approximately %5.2f.\n", Pi, 3.14159);


Pi is approximately 3.14.

> printf("Boi so chung nho nhat cua %a va %a la %a.", 4, 6,lcm(4,6));


Boi so chung nho nhat cua 4 va 6 la 12.

> ?printf 4. Lnh readstat Tng t nh lnh read trong Pascal hay scanf trong C, lnh ny yu cu ngi s dng nhp cc biu thc vo t bn phm. V d: > readstat("Nhap vao mot bieu thuc: "); Nhap vao mot bieu thuc: hello; hello > readstat("Nhap vao mot so: "); Nhap vao mot so: 23; 23 > restart; > TinhDaoham := proc() local a, b; a := readstat("Nhap vao mot bieu thuc: "); b := readstat("Tinh dao ham theo bien: "); printf("Dao ham cuar %a theo bien %a la %a\n", a, b, diff(a,b)) end proc: > TinhDaoham();

Nhap vao mot bieu thuc: x^2+1/x; Tinh dao ham theo bien: x;
Dao ham cuar x^2+1/x theo bien x la 2*x-1/x^2

3.4. Lm vic vi file trn Maple


a. M mt file
C php: fopen(name, mode); hoc fopen(name, mode, type); trong : + name: tn ca tp tin c m. + mode: mt trong cc ty chn sau : READ, WRITE, hoc APPEND . + type: (ty chn) l TEXT hay l BINARY Hm fopen tr li mt s nguyn l gi tr nhn din ca tp va m. Ta c th s dng s nguyn ny i din cho tp trong cc thao tc trn tp bng cch dng n lm i s cho cc hm x l tp (nh read(), save(), fclose()..). Ta c th gn kt qu do hm fopen() tr li cho mt bin c th s dng dn v sau. Nu dng fopen() m tp c nhng tp khng tn ti trn a th fopen() s thng bo li. Nu dng fopen() m tp ghi m tp cha tn ti th fopen() to ra tp mi, trong trng hp tp tn ti th Maple cho php ghi ln d liu c. Cn nu m tp thm d liu th Maple cho php thm d liu vo cui tp. Lnh fopen() s bo li nu tp ang nh m c m t trc m cha c ng li. V d: > fh:=fopen("c:/test.txt",WRITE,TEXT); fh := 0 > fprintf(fh,`Day la file duoi dang van ban\n`); 30 > fclose(fh); By gi ta c th m li tp c dng vn bn trn: > fh:=fopen(`c:/test.txt`,READ,TEXT); fh := 0 > readline(fh); "Day la file duoi dang van ban"

b. ng mt file ang m
C php: fclose(files); M t: ng tt c cc tp c m bng lnh fopen(). Vic ng cc tp ny m bo tt c d liu c ghi vo tp cn ang trong vng nh m thc s c ghi vo a. Lnh fclose() khng c gi tr tr li. - Khi thot khi Maple bng lnh quit, done, hoc lnh stop, Maple t ng ng tt c cc tp ang c m. - Nu tp tn ti trn a th lnh fclose() vi tham s l tn tp s khng gy ra li, nhng nu tp cha c m m tham s cho lnh fclose() l mt bin s nguyn th Maple s bo li. > fh:=fopen(`c:/test.txt`,READ,BINARY); fh := 0

> fclose(fh); > fclose(`c:/test.txt`); > fclose(fh);


Error, (in fclose) file descriptor not in use

c. Lnh ghi d liu


C php Khai bo: Tham s: filename: Tn tp cn lu d liu. name01, name02,... name0n: tn ca n bin cn lu gi tr. M t + Hm save dng lu cc tn (bao gm tn bin, tn biu thc,...) trong mt phin tnh ton ca Maple vo trong mt tp. + Dng pht biu th nht trong phn khai bo, cu lnh save filename s ghi tt cc tn hin c trong phin lm vic ca Maple (Maple session) vo trong tp c tn c xc nh bi filename. + Trong dng pht biu th hai, cc bin xc nh name01, name02, ...name0n s c vit vo trong tp c tn l filename nh l mt chui cc cu lnh gn. Nu mt tn name0i khng c gn mt gi tr th php gn name0i:=name0i c vit vo tp. + Nu filename c cha nhng k t khng bnh th-ng ( v d:"/",".",...) th tn phi c ng trong du ngoc. + Nu filename kt thc bng k t ".m" th cc bin cng vi cc gi tr c gn cho chng c ghi vo tp theo dng thc ni ti ca Maple. Nu khng th chng c ghi theo dng thc ngn ng ca Maple thng thng. > r0 := x^3: > r1 := diff(r0,x): > r2 := diff(r1,x): > r3 := proc(y) local a; > a := irem(y, 2); if a=0 then "Even" else "Odd" end if end proc: > save r0, r1, r2, r3, "my_file"; > read "my_file"; r0 := x3 save filename; save name01, name02,...name0n, filename;

r1 := 3 x2
r2 := 6 x r3 := proc(y) local a; a := irem( y, 2 ); if a 0 then "Even" else "Odd" end if end proc

d. Lnh readline
C php: readline(filename); readline(); trong , filename l tn ca mt tp tin hay l k hiu nhn dng (descriptor). Ta s dng hm readline() c dng d liu tip theo t tp ch r. Hm readline cho li kt qu l mt xu k t (string) cha c dng d liu c c t tp. K t xung dng c c t tp s b xo trc khi dng d liu gn cho xu k t . Nu khng cn dng d liu no c na, hm readline cho kt qu l s 0 (thay v mt xu k t) bo rng n cui tp. Nu nh tp c ch r bng tn ca n (tc l i s truyn cho hm readline l tn tp) th Maple t ng ng tp li. Khi ta gi lnh readline vi i s l tn tp m tp cha c m, th lnh ny s m tp theo ch READ vi kiu l TEXT. > f:=fopen(`example.txt`,WRITE,TEXT); f := 0 > fprintf(f,`chao ban`); 8 > fclose(f); > str:=readline(`example.txt`); str := "chao ban" > str:=readline(`example.txt`);
str := 0

> str:=readline();#lenh nay ko tac dong vao file > hello world! str := "hello world!"

e. Lnh readdata - c d liu c s ct v kiu c nh


C php: readdata(file,n); readdata(file,format,n); readdata(file,format); trong : + file: tn tp hoc s hiu ca tp. + n: s ct d liu. + format: Cho bit d liu c c l s nguyn hoc s thc. Hm readdata() dng c d liu s t tp vn bn vo mi trng tnh ton Maple. D liu bao gm cc s nguyn v s thp phn c du chm ng c sp xp trong cc ct phn cch nhau bi du cch. Nu ch mt ct d liu c c, th u ra ca lnh readdata() l mt danh sch d liu. Nu c nhiu hn mt ct d liu c c, th u ra l mt danh sch cc danh sch con trong mi danh sch con tng ng vi mt dng d liu trong tp. Ta s dng dng u ca lnh readdata() c n ct cc s t tp xc nh bi i s file. D liu s c c ra di dng cc s thp phn c du chm ng. Mun c d liu di dng

s nguyn, s thp phn c du chm ng, hoc d liu kiu xu k t, ta phi s dng dng th hai v th ba ca hm readdata() c khai bo trong phn c php trn. Tham s format nhn cc gi tr l integer, float, string, hoc l mt danh sch cha mt hay mt s kiu d liu trn. Nu i s file nhn gi tr tn tp (ch khng phi l s hiu tp), v nu tp cha m, th tp s c Maple m di dng TEXT theo ch READ. Sau khi c xong d liu, readdata() t ng ng tp li. > writedata(`data1.txt`,[17,7,1979]); > readdata(`data1.txt`); [ 17., 7., 1979. ] > f:=fopen(`data.txt`,WRITE,TEXT); f := 0 > fprintf(f,`7 8 7.5 kha\n`); 12 > fprintf(f,`1 2 1.5 kem\n`); 12 > fclose(f); > readdata(`data.txt`,[integer,integer,float,string]); [ [ 7, 8, 7.5, "kha"], [ 1, 2, 1.5, "kem"] ] >

f. c d liu nh r kiu
C php trong : fscanf(file, fmt) sscanf(str, fmt) scanf(fmt) + file: tn tp hoc s hiu ca tp. + str: Xu hoc dy k t s c vit ra. + fmt: Cho bit kiu d liu c hin th c kiu nguyn, thc hoc xu...

Hm fscanf dng c dy k t, s hc ty theo kiu nh dng ca fmt v Maple tr li danh sch cc phn t c c. Nu tp cha tn ti hoc rng th danh sch tr li l rng (cng ging nh hm scanf(fmt)). Cc kiu nh dng (format) ca fmt c dng %[*][width]code trong : + %: ch l k hiu ch cho fscanf bit rng ti bt u nh dng kiu. + *: c th l mt trong cc k hiu sau: g,d,... N nh dng kiu cho hm fscanf. + width: di ln nht ca danh sch tr li khi hm fscanf c c. Cc fmt thng c dng nht: + d: nh dng kiu tr li l s nguyn. + f: nh dng kiu tr li l s thc. + s: kiu tr li l mt xu (string)....

> sscanf(`123.456E7 123.456E7`,`%g%d.%d %[Ee] %d`); [ 0.123456 1010, 123, 456, "E", 7 ] > sscanf(`X=123.4 Y=-27.9 Z=2.3E-5`,`X=%f Y=%f Z=%f`); [ 123.4, -27.9, 0.000023 ] > sscanf(`25 1/(x^4+1) test`,`%d%a%s`); 1 25, 4 , "test" x 1 >

g. Cc lnh ghi d liu c nh dng


Cc c php: Trong : fprintf(file, fmt, x1, ..., xn); sprintf(fmt, x1, ...,xn); printf(fmt, x1, ...,xn); + file: tn file bn nh ghi li hoc mt m t, + fmt: Kiu c in ra. V d: printf(`%g`), + x1,x2,...xn l cc bin s c nh dng.

> printf(`%d %f %g\n`,123,123/456,123456789);


123 0.269737 1.23457e+08

> s:=65: > printf(`In ra voi tham so kieu nguyen : %d`,s);


In ra voi tham so kieu nguyen : 65

> printf(`In ra voi tham so kieu ki tu : %c`,s);


In ra voi tham so kieu ki tu : A

Nhn xt: Nh vy trong lp trnh ta phi thn trng vi nh dng kiu, bi v cng mt bin nu nh dng khc nhau cho ta kt qu khc nhau. c bit, nu nh dng: %nt th Maple s in ra kt qu vi chiu di l n (t l kiu nh dng). > printf(`%s %25s %10s\n`,M,Map,MapleV);
M Map MapleV

>

You might also like