Baiso7(Laptrinhtrongmapple1)

Download Report

Transcript Baiso7(Laptrinhtrongmapple1)

LẬP TRÌNH TRONG MAPLE
Thủ tục…PROCEDURE…



Thủ tục (procedure) là một khái niệm
“phổ biến” trong các ngôn ngữ lập trình.
Thủ tục cho phép tạo ra những đọan
chương trình có tính tùy biến cao (có thể
tái sử dụng ở nhiều nơi).
Làm dễ hơn việc lập trình và gỡ rối.
(chia để trị devide to conquer)
Khai báo một thủ tục…
procedure_name:= proc(parameter_sequence)
[local local_sequence]
[global global_sequence]
[options options_sequence]
statements_sequence;
end proc;
Giải thích…
Parameter_sequence…

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.
squareSum:= proc(x,y)… end proc;
Giải thích…
local_sequence…

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ó họat vi cục bộ.
(chỉ có thể được truy cập bên trong thủ tục)

Giải thích…
Global-sequence…

Global-sequence:


Là một dãy gồm các biến tòan cục.
Các biến tòan cục cho thể sử dụng bên
ngòai thủ tục.
Viết một thủ tục kiểm tra xem
một danh sách chỉ tòan là số???


Viết một thủ tục kiểm tra xem một danh
sách chỉ tòan là số???
Nếu đúng thì tính tổng bình phương các
phần tử.
Viết chương trình bỏ qua các phần
tử không phải là số …
Tính tổng của một List…

Viết chương trình:


Bỏ qua các phần tử không có dạng số.
Tính tổng các phần tử của một List.
Ví dụ…


Viết một thủ tục kiểm tra mục x có phải
là phần tử của danh sách hay không?
Nếu có thì là phần tử thứ mấy?
Ví dụ…


Tính các đa thức Chebyshev.
Các đa thức Chebyshev xác định như
sau:
T(0)=1,T(1)=x
T(n)=2xT(n-1) – T(n-2)
Ví dụ…

Viết chương trình hóan vị một cách tùy
ý các phần tử của một list.
Biến tòan cục …


Được khai báo với từ khóa global bên
trong một thủ tục.
Có phạm vi (scope-tầm phủ sóng) cả
bên ngòai thủ tục.
Biến tòan cục …

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);
Biến cục bộ…


Nằm bên trong một thủ tục và được
khai báo với từ khóa local.
Chỉ có họat vi-phạm vi(scope) cục bộ
bên trong thủ tục.
Biến cục bộ…
Ví dụ:
> restart;
> 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);
Nhắc lại sự định giá biến &&
biểu thức …
> restart;
> z:=y;
y:=t;
t:=x^2 + 5*x -12;
 y,z,t là các biến lập trình.
 x là biến toán học.
Ví dụ
y
z
t
x  5x  12
2
Ví dụ
> z;
x 2  5 x  12
> y;
x 2  5 x  12
> t;
x 2  5 x  12
> x;
x
Quá trình định giá biểu thức…
x 2  6 x  12
z+x
y+x
t+x
x2  5x 12  x
Sự định giá biến tòan cục…


Maple tiến hành định giá biến tòan cục
một lần duy nhất khi gặp nó.
Sự định giá này dựa trên “trạng thái
hiện tại” của thủ tục.
Ví dụ 1…
> myProc := proc()
local x;
global p;
p:=x^2 + x +1;
x:=2;
print(p);
end proc;
myProc();
> myProc := proc()
local x;
global p;
p:=x^2 + x +1;
print(p);
x:=2:
end proc;
myProc();
Truyền tham số…


Tham số trong Maple được truyền theo
kiểu tham biến.
Dùng tham biến để trả lại kết quả tính
tóan.
Tạo các thủ tục tùy biến hơn…


irem(a,b,’quot’);
irem(a,b);
Dùng nargs (number of arguments) để
tạo ra những thủ tục tương tự irem.
Đệ qui trong Maple…


Một thủ tục gọi chính nó.
Nên tránh dùng khi có thể.