Trang chủ > Lệnh cơ bản > Những kí hiệu “kì quái”

Những kí hiệu “kì quái”

Tháng Mười Một 19, 2009 Để lại bình luận Go to comments

Trong bất kì ngôn ngữ lập trình nào cũng có những kí hiệu đặc biệt giúp cho người sử dụng thực hiện nhanh hơn trong thao tác lập trình của mình. Đối với ngôn ngữ Mathematica cũng vậy, cũng có những kí hiệu thật “kì quái” [đây chỉ là cách gọi vui], tuy nhiên Mathematica không phải là một ngôn ngữ lập trình chính thống, nghĩa là nó chỉ được ứng dụng chủ yếu trong các ngành kĩ thuật, cho nên có rất ít các tài liệu viết về điều này cũng như đối với người mới “nhập môn” thì cũng khó lòng tìm được trong thẻ Help [lí do đơn giản: chưa gặp nên chưa biết, còn nếu đã từng thấy rồi thì chắc chắn rằng bạn đã nhấn F1, :)].
Không có gì bất ngờ rằng các phép tính toán học +,-,*,/ được giữ nguyên không có gì thay đổi. Bạn hãy chú ý rằng phép nhân 2 ma trận với nhau đc kí hiệu dấu chấm A.B (điều này khá quan trọng vì nếu bạn nhầm sang dấu * thì bạn sẽ mất nhiều thời gian để gãi đầu gãi tai :)). Các kí hiệu logic cũng cần chú ý đến, nó rất có ích cho chúng ta khi dùng vòng lặp While hay If: And – &&, Or – ||, Not – !.
Câu lệnh “Nếu A bằng B thì …” được viết trong Mathematica như sau: If[A==B,…]. Ở đây bạn chú ý kí hiệu 2 dấu bằng “==”, nếu chỉ viết 1 dấu bằng thì câu lệnh sẽ bị sai. Câu lệnh “Nếu A khác B thì …” được viết trong Mathematica như sau: If[A!=B,…].
Một kí hiệu rất “tếu” trong Mathematica là “===” – 3 dấu bằng – tương ứng với lệnh SameQ[]. Nó được dùng để so sánh sự giống nhau của 2 đối tượng, ngược lại với nó sẽ có lệnh UnsameQ[], kí hiệu tắt là “=!=”.
Một trong những kí hiệu mà tôi cho là hay dùng khi viết một chương trình đó là @. Kí hiệu này sẽ giúp cho chương trình của bạn bớt rườm rà hơn, ví dụ:
Thay vì ta viết:
Panel[Grid[Table[{i,j},{i,3},{j,3}]]]
Ta viết lại:
Panel@Grid@Table[{i,j},{i,3},{j,3}]
Số dấu móc vuông sẽ giảm bớt giúp ta quản lí các lỗi của chương trình một cách dễ dàng.
Tương tự ta có kí hiệu “//”, bạn sẽ thấy được tác dụng của kí hiệu qua ví dụ sau:
Cũng với câu lệnh trên có thể viết lại:
Table[{i,j},{i,3},{j,3}]//Grid//Panel
Để kết thúc bài viết này, tôi xin đưa ra thêm một kí hiệu “ngộ nghĩnh” nữa, hy vọng là các bạn mới học ngôn ngữ này sẽ cảm thấy thích thú vì đã khám phá được những điều mới [mặc dù là người ta đã khám phá hết trơn rồi :)], đó là kí hiệu 2 con @@. Kí hiệu này tương ứng với lệnh Apply[]. Ví dụ sau đây sẽ giúp bạn hiểu tác dụng của nó dễ dàng:
FactorInteger[20!]
{{2,18},{3,8},{5,4},{7,2},{11,1},{13,1},{17,1},{19,1}}
CenterDot@@(Superscript@@@%)
21^8•3^8•5^4•7^2•11^1•13^1•17^1•19^1
Các câu lệnh ở trên nhằm mục đích phân tích số 20! thành tích các thừa số nguyên tố. Có thể giải thích quá trình tính toán như sau: đầu tiên lệnh FactorInteger[] liệt kê một list các cặp số dạng {thừa số nguyên tố, số mũ tương ứng}, sau đó lệnh Superscript@@@% được áp dụng thực để hiện phép lũy thừa cho từng phần tử [cặp số] của list, kí hiệu % tương ứng với kết quả trước đó, kí hiệu @@@ tương đương với Apply ở mức độ 1 [level 1] [sẽ hiểu sâu hơn ở bài viết dành riêng cho lệnh Apply]. Cuối cùng lệnh CenterDot[] thực hiện phép nhân các phần tử của list kết quả.
Đọc đến đoạn này, suy nghĩ một tí, bạn sẽ thấy kí hiệu @@@ đôi lúc có cùng tác dụng, ví dú nhé:
f[x_]=Sin[x];
f@3
f@@{3}

Cả hai đều cho kết quả là Sin[3].

  1. Chưa có phản hồi.
  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: