Chào mừng các bạn trở lại với Julia Dojo. Hôm nay chúng ta sẽ tìm hiểu về một thứ khá cơ bản và thiết yếu trong các ngôn ngữ lập trình, đó là biến số (ok, không hẳn là thiết yếu, nhưng nó làm cuộc sống dễ dàng hơn), đồng thời khám phá một số kiểu dữ liệu cơ bản và thao tác với chúng.
Biến số, hằng số
Để khai báo một biến trong Julia, bạn chỉ cần sử dụng cú pháp:
|
|
Điều hay nhất là: hai dòng lệnh trên hoàn toàn hợp lệ trong Julia (copy nó vào REPL và chạy thử đi!). Tên biến số, hằng số trong Julia có thể Là kí tự unicode, và các kí tự tiếng Việt không phải ngoại lệ. Tuy nhiên, mình nghĩ bạn không nên code bằng tiếng Việt có dấu, tiêng Nhật, tiếng Tàu hay tiếng Thái đâu. Cách tốt nhất để dùng tính năng này là:
|
|
Cực kì tiện lợi khi bạn code những phần mềm dùng nhiều công thức toán (mà lúc nào chẳng có toán chứ?). Nhân tiện mình giới thiệu luôn, dấu #
được dùng để comment trên một dòng code (tất cả những gì sau dấu này sẽ được bỏ qua; còn cặp dấu #=
và =#
được dùng để comment trên nhiều dòng, mọi thứ giữa hai thằng này sẽ bị bỏ qua khi chạy code.
Còn đề khai báo hằng số, bạn chỉ cần nhét thêm chữ const
vào đầu dòng như sau:
|
|
Bất kì biến số, hằng nào bạn định nghĩa như trên trong REPL đều được coi là biến toàn cục. Nếu bạn viết một phần mềm sản xuất, hãy dùng ít biến toàn cục nhất có thể (vì lí do hiệu năng, lí do bảo dưỡng, v.v… bạn không dùng càng tốt). Nhưng hằng số toàn cục vẫn ok nhé, thực chất Julia chỉ cho phép khai báo hằng số toàn cục thôi. Bạn có thể dùng từ khóa local
để khai báo nội bộ và từ khóa global
để khai báo toàn cục.
|
|
Nếu bạn khai báo biến local
trưc tiếp trên REPL, nó sẽ biến mất ngay lập tức và bạn không dùng được nó. Vậy biến nội bộ có hiệu lực ở đâu, hồi sau sẽ rõ :) Giờ chúng ta chuyển sang nói qua về kiểu dữ liệu.
Kiểu dữ liệu
Khi bạn gán một biến trong Julia, bộ dịch sẽ tự phát hiện kiểu và gắn kiểu dữ liệu của nó cho biến. Điều tương tự cũng xảy ra với hằng số. Bạn có thể lấy kiểu dữ liệu của một biến hay hằng bằng hàm typeof
:
|
|
Nhìn mấy cái kiểu dữ liệu có vẻ lằng nhằng, nhưng chúng ta đang ở Level 1, đừng bận tâm về nó vội. Mình chỉ giới thiệu qua một số kiểu dữ liệu hay dùng ở đây thôi.
Các kiểu số
Một ít int
|
|
Một ít float
|
|
Một ít hữu tỉ
|
|
Một ít hư ảo
|
|
Một ít phép toán
|
|
Một ít hàm toán học
|
|
Một ít phép so sánh
|
|
Kiểu Bool
Julia dùng true
và false
cho các giá trị thuộc kiểu Bool
|
|
Kí tự và xâu kí tự
Trong Julia, kí tự được bao quanh bởi dấu nháy đơn, còn xâu kí tự được bao quanh bởi dấu nháy kép. Bạn có thể dùng 3 dấu nháy kép để viết các xâu kí tự phức tạp, gồm nhiều dòng.
|
|
Julia hỗ trợ “nội suy” xâu kí tự (string interpolation, không mình biết dịch đúng không nữa). Dùng dấu $
là bạn có thể “nhúng” một biến vào trong xâu kí tự. Nếu bạn muốn dưa một biểu thức vào, hãy dùng $(biểu_thức)
.
|
|
Một số hành động với kí tự và xâu kí tự:
|
|
Mảng, ma trận
Phần hay nhất để dành cuối cùng :) Julia hộ trợ tính toán ma trận rất ngon. Ngon thế nào thì từ từ mới biết hết, đặc biệt các bạn dùng Matlab có thể sẽ thấy nó quen thuộc. Phần này đáng có một bài viết riêng, vì vậy trong bài này mình chỉ giới thiệu thôi.
Trong Julia, số chiều của ma trận được phân biệt rất rõ ràng. Khi khai báo một vector, chúng ta dùng dấu ,
hoặc ;
để ngăn cách các phần tử:
|
|
Đoạn code trên sẽ tạo ra A
và B
là vector cột. Đối với ma trận, chúng ta dùng dấu cách ngăn cách các phần tử cùng hàng, và dấu ;
để ngăn cách giữa các dòng
|
|
Để lấy chỉ số của vector, ma trận, chúng ta dùng cú pháp ma_trận[chỉ_số]
. Julia lưu ma trận theo cột, chúng ta có thể dùng chỉ số 1 chiều hoặc 2 chiều để lấy ra phần tử của ma trận.
|
|
Trong Julia, việc gán ma trận sẽ không tạo bản copy của ma trận đó, trừ khi bạn lấy một phần của ma trận:
|
|
Các phép toán với vector, ma trận được thực hiện rất tự nhiên (theo quy tắc toán học):
|
|
Lưu ý rằng, đối với trường hợp số thực, chúng ta có thể dùng A'
để chuyển vị. Với ma trận số phức hãy dùng transpose
. Để biết chi tiết hãy xem thêm:
- transpose: https://en.wikipedia.org/wiki/Transpose
- adjoint (dấu nháy): https://en.wikipedia.org/wiki/Conjugate_transpose
(sorry vì màu link khó nhìn, mình sẽ gửi issue lên người bảo trì theme này)
Kết luận
Ok, phần giới thiệu tới đây mình nghĩ đủ rồi. Vậy các là các bạn đã biết cách khai báo biến, cộng trừ nhân chia và những trò hay ho mà trên trường giáo viên sẽ bắt chúng ta ngồi tính sấp mặt. Hẹn gặp các bạn trong bài viết sau.
Bonus: nếu đang học đại học, giờ bạn có thể dùng Julia như một cái máy tính cá nhân (nhưng vạn năng hơn một tí)
|
|