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
36 trang |
Chia sẻ: Mr Hưng | Lượt xem: 2278 | Lượt tải: 0
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:
- maple_lttt_chuong_3_5315.pdf