Maple - Chương 3: Lập trình trên Maple

Tênlà mộtchuỗicácchữcái(string ofletters)đượcdùng

nhưmộtchỉ mụchay mộtnhãnđể đạidiện cho cácđối

tượng trong Maple có thểthayđổiđượcnhư:biến, ký hiệu

toán học, các biểuthức, . mà ta có thểgán cho nó.

ƒChiềudàitối đacủatên phụthuộchệmáytínhmàMaple

chạytrênđó (máy 32-bit thì chiềudàitối đacủatênlà

524275).

ƒTên bắtđầuvớimộtdấugạch dưới(_)đượcsửdụng làm

biếntoàncục

pdf36 trang | Chia sẻ: Mr Hưng | Lượt xem: 2035 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Maple - Chương 3: Lập trình trên Maple, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3 Lập trình trên Maple 220/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Tên (name) và chuỗi ký tự ƒTên là một chuỗi các chữ cái (string of letters) được dùng như một chỉ mục hay một nhãn để đại diện cho các đối tượng trong Maple có thể thay đổi được như: biến, ký hiệu toán học, các biểu thức, ... mà ta có thể gán cho nó. ƒChiều dài tối đa của tên phụ thuộc hệ máy tính mà Maple chạy trên đó (máy 32-bit thì chiều dài tối đa của tên là 524275). ƒTên bắt đầu với một dấu gạch dưới ( _ ) được sử dụng làm biến toàn cục. 320/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Tên (name) và chuỗi ký tự ƒChuỗi ký tự (string of characters) có thể không phải là một chuỗi các chữ cái (vì có chứa các ký tự đặc biệt như: khoảng trống, dấu chấm than, ...) và do đó không phải là một tên hợp lệ. ƒMaple cho phép tạo một tên từ một chuỗi ký tự bằng cách cho nó vào trong cặp dấu nháy đơn ( ` ). VD: `a variable!`:=10 ƒx hay `x` cùng chỉ đến một tên. ƒprint(`I``m a student`); → I`m a student. 420/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Biến trong Maple ƒBiến trong Maple là những tên được dùng để thay thế cho một đối tượng nào đó, thông thường là các giá trị cần thay đổi, hoặc các biểu thức tính toán cần cho giá trị... Có hai loại biến trong Maple: Biến lập trình và biến toán học. ƒBiến lập trình là những biến có thể gán bởi một giá trị nào đó và giá trị đó được lưu trữ cho đến tận lúc nó thực sự bị thay đổi. ƒMột biến toán học thể hiện cho ẩn số trong toán học, không thể gán giá trị, không thể dùng nó như là một biến lập trình. 520/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Biến trong Maple Ví dụ: > z := y; y := t; t := x2; z, y, t: biến lập trình x: biến toán học Làm cho z, y, t trở lại thành biến toán học bằng cách > unassign (‘z’, ‘y’, ‘t’) hoặc z:=‘z’; y:= ‘y’; t:=‘t’; 620/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Sự định giá -Tìm biến lập trình và thay thế bằng nội dung → biểu thức mới. - Tiếp tục thay cho đến khi nào hết biến lập trình trong biểu thức. - Kết quả của sự định giá là biểu thức cuối cùng. Ví dụ: >t:=z; z:=y; y:= x2; t; z; x:=3; t; z; 720/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Sự định giá Ví dụ: >i:=5; sum(i2, i=1..4); 820/07/2010 Lập trình tính toán 3.1 Các khái niệm cơ bản Ngăn cản sự định giá Ví dụ: >x:=5; x:=5 >’x’ +1; x+1 >%; 6 >’’x’+1’; ‘x’ +1 > %; x+1 920/07/2010 Lập trình tính toán 3.2 Các hàm thường dùng trong Maple -Ước lượng giá trị: evalf -Đơn giản biểu thức: simplify -Tìm giá trị lớn nhất, nhỏ nhất: max, min -Thay thế trong biểu thức: subs -Sắp xếp các số hạng: sort (Tham khảo thêm trong sách) 1020/07/2010 Lập trình tính toán 3.3 Cách tạo lập hàm trong Maple Sử dụng chu trình proc( ) end procedure_name:= proc(parameter_sequence) [local local_sequence] [global global_sequence] [options options_sequence] statements_sequence; end proc; 1120/07/2010 Lập trình tính toán 3.3 Cách tạo lập hàm trong Maple Sử dụng chu trình proc( ) end ƒParameter_sequence: – Một dãy các kí hiệu ngăn cách bởi dấu phẩy. – Tên các tham biến truyền cho chương trình. VD: squareSum:= proc(x,y) end proc; 1220/07/2010 Lập trình tính toán 3.3 Cách tạo lập hàm trong Maple Sử dụng chu trình proc( ) end ƒLocal_sequence: – Là một dãy các tên. – Khai báo các biến cục bộ cho thủ tục. – Các biến này chỉ có phạm vi cục bộ. (chỉ có thể được truy cập bên trong thủ tục) 1320/07/2010 Lập trình tính toán 3.3 Cách tạo lập hàm trong Maple Sử dụng chu trình proc( ) end Ví dụ: > myProc := proc() local a; a:=x^2+x+1; printf("Gia tri a ben trong myProc: %a", a); end proc; myProc(); #goi thu tuc myProc printf("Gia tri cua a ben ngoai myProc: %a", a); 1420/07/2010 Lập trình tính toán 3.3 Cách tạo lập hàm trong Maple Sử dụng chu trình proc( ) end ƒGlobal_sequence: – Là một dãy gồm các biến toàn cục. – Các biến toàn cục có thể sử dụng bên ngoài thủ tục. 1520/07/2010 Lập trình tính toán 3.3 Cách tạo lập hàm trong Maple Sử dụng chu trình proc( ) end ƒVí dụ: > myProc := proc() global a; a:=10; printf("Gia tri a ben trong myProc: %d", a); end proc; myProc(); #goi thu tuc myProc printf("Gia tri cua a ben ngoai myProc: %d", a); 1620/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Dãy - Là một nhóm các đối tượng được sắp xếp theo thứ tự và ngăn cách nhau bởi dấu phẩy. - Dãy có thể được gán cho 1 biến. VD: x:=a, b, c, d. - Kí hiệu NULL dùng để thay thế cho một dãy trống. 1720/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Dãy ƒMaple áp dụng định giá hoàn toàn trong quá trình tạo ra dãy. > S1:=a,b,c; > S2:=S1,d,e; S2:=a,b,c,d,e >S1:=a,1,2; >S2:=S1,NULL,S1; S2:=a,1,2,a,1,2 1820/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Dãy ƒseq(f(i), i=low..high); ƒseq(f(x), x=expression)); – Tạo ra một dãy mà các thành phần của nó có được bằng cách cho f tác động lên các thành phần của biểu thức expression. – Expression có thể là một tập hợp,danh sách hoặc một biểu thức dạng tổng tích. 1920/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Dãy ƒVí dụ: >seq(i^2,i=1..9); 1,4,9,16,25,36,49,64,81 >tong:=sum(k^2,k=1..n); >seq(op(i,tong),i=1..4); 3 21 1 1 1: ( 1) ( 1) 3 2 6 6 tong n n n= + − + + + 3 21 1 1 1( 1) , ( 1) , , 3 2 6 6 n n n+ − + 2020/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Dãy ƒVí dụ: > x:=[seq(Pi/i,i=1..9)]; > y:= seq(sin(i),i=x); 1 1 1 1 1 1 1 1: [ , , , , , , , , ] 2 3 4 5 6 7 8 9 x π π π π π π π π π= 1 1 1 1 1: 0,1, 3, 2, 2 5 5 , ,sin , 2 2 ,sin 2 2 4 2 7 2 9 y π π⎛ ⎞ ⎛ ⎞= − −⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ 2120/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Tập hợp ƒTập hợp trong Maple được bao trong {}. Khác với dãy, các phần tử của tập hợp phải khác nhau. ƒTrên tập hợp có các phép tóan union(hợp), intersect (giao) vàminus(hiệu). ƒTruy cập phần tử của tập hợp thông qua chỉ số của nó. 2220/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Tập hợp ƒVí dụ: >set1:= {x,y,z}; set1:={x,y,z} >set2:={a,b,x,z}; set2:={a,b,x,z} >set3:=set1 union set2; set3:={x,y,z,a,b}; >set4:= set1 minus set2; set4:={y} >set5:= set1 intersect set2; set5:={x,z} >set5[2]; z 2320/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Danh sách ƒMột danh sách (list) trong Maple được bao bọc trong [ ]. ƒGiống như dãy, danh sách có thể lưu trữ các phần tử giống nhau. ƒDanh sách khác gì dãy? > x:= [a,b],[c,d] #dãy gồm 2 list > x:=(a,b),(c,d) #dãy a,b,c,d 2420/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Danh sách ƒCó thể dùng lệnh op để truy cập phần tử trong danh sách. ƒHoặc dùng listname[index]. Với cách này ta có thể thay đổi phần tử của danh sách. > ds:=[a,b,c,d,e]; > op(4,ds); d > ds[3]; c > ds[2]:=x; > ds; a,x,c,d,e 2520/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Danh sách ƒVí dụ: > list1:=[a,b,c]: > list2:=[1,2,3,4]: > list3:= list1, list2; list3:=[a,b,c],[1,2,3,4] > list4:=[op(list1),op(list2)]; list4:=[a,b,c,1,2,3,4] 2620/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Danh sách ƒsubsop(index1=rep1,,indexn=repn,expr); ƒsubsop có thể dùng thay thế một lúc nhiều phần tử của list, set Trong biểu thức thay thế n giá trị tại n vị trí 2720/07/2010 Lập trình tính toán 3.4 Các cấu trúc dữ liệu cơ bản Danh sách ƒVí dụ: > ds:=[a,1,c,d,2]; ds:=[a,1,c,d,2] > subsop(2=b,5=e,ds); [a,b,c,d,e] 2820/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Vòng lặp while Cú pháp while điều_kiện do công_việc od; Trong khi điều_kiện đúng, thực thi công việc. Dùng các câu lệnh như RETURN, break, quit để thoát ra giữa vòng lặp. Phải là kiểu Boolean 2920/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Vòng lặp while Ví dụ: Tìm USCLN của 2 số nguyên theo thuật toán Euclide Nhập x,y Y0 r := x mod y x:=y y:=r In ra x 3020/07/2010 Lập trình tính toán 4.1 Các lệnh lập trình cơ bản Vòng lặp while > x:=30; y:=12; m:=x; n:=y; while y0 do r:=irem(x,y); x:=y; y:=r; od: USCLN:=x; value(USCLN); 3120/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Vòng lặp while Ví dụ: In ra các phần tử từ 10 đến 20 của dãy Fibonacci > F(0):=1: F(1):=1: n:=2: while n<=20 do F(n):=F(n-1)+F(n-2): n:=n+1: od: seq(F(k),k=10..20); 3220/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Vòng lặp for Cú pháp for from by to do statement sequence od; Hoặc for in do od; 3320/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Vòng lặp for Ví dụ: In các số chẵn trong khoảng từ 6 đến 100 > for i from 6 by 2 to 100 do print(i); od; Tính tổng các số lẻ có hai chữ số > tong:=0; for i from 11 by 2 to 99 do tong:=tong +i; print(tong); od; 3420/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Vòng lặp for Ví dụ: Tính tổng các phần tử trong một danh sách > myList:=[1,4,8,-3,-5,7,3,-2,-3]; tong:=0: for i in myList do tong:=tong + i; od; print(`Tong cac phan tu trong list la: `); tong; 3520/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Lệnh điều kiện if Cú pháp if then | elif then | | else | fi; 3620/07/2010 Lập trình tính toán 3.5 Các lệnh lập trình cơ bản Lệnh điều kiện if Ví dụ: Tạo mảng ngẫu nhiên 15 phần tử và sắp xếp mảng theo thứ tự tăng dần. > a:=array[1..15]: for i from 1 to 15 do a[i]:=rand(1..100)(): od: for i from 1 to 14 do for j from i+1 to 15 do if a[i]>a[j] then tam:=a[i]; a[i]:=a[j]; a[j]:=tam; fi; od; od; print(`Mang sau khi sap xep`); seq(mang[i],i=1..15);

Các file đính kèm theo tài liệu này:

  • pdfmaple_lttt_chuong_3_5315.pdf
Tài liệu liên quan