Dec 4, 2017

[Tìm hiểu Pascal] "Hello World!"

Mọi người đang đọc bài 5 trong series Tìm hiểu ngôn ngữ lập trình Pascal
Lưu ý: Để hiểu được nội dung bài viết 1 cách tốt nhất, khuyến cáo bạn đọc hãy mở Free Pascal và làm theo ví dụ trong bài. Để biết cách cài đặt Free Pascal vui lòng xem lại những bài trước.

I. "Hello, World!"

Chúng ta sẽ cùng bắt đầu với chương trình đơn giản nhất mà mọi lập trình viên đều thực hiện khi học một ngôn ngữ lập trình mới: Hãy xuất ra màn hình dòng chứ "Hello, World!".
begin write('Hello, World!'); end.
Dòng 1 và 3 đánh dấu bắt đầu và kết thúc của chương trình: cặp từ khoá begin - end. (sau end có dấu chấm).  Dòng 2 gọi hàm xuất ra màn hình write, truyền vào đó câu 'Hello, World'. Quá chuẩn rồi còn gì :>
Q: Ơ khoan, sao tui chạy mà không nhìn thấy gì vậy?
A: Thật ra là nó có chạy, có xuất ra màn hình dòng chữ "Hello, World!", luôn rồi đấy. Chỉ là ngay sau dòng đó là từ khoá end, mà sau end thì kết thúc nên nó thoát ra ngoài luôn. Mà máy thì chạy nhanh quá, CPU tới 1.0 Ghz là 1 tỉ phép tính trên giây, nhìn không kịp cũng phải. Vậy thì mấu chốt ở đây là ta cần thêm 1 lệnh nào đó để yêu cầu máy dừng lại. Thật may mắn, lệnh `readln` của Pascal sẽ ngưng đọng chương trình lại, chờ người dùng bấm enter rồi mới thoát.
begin 
write('Hello, World!');
readln; 
end.
Q: Ờ chương trình của tui nó chạy rồi đó, hurayyyy. Cơ mà tui nhớ là trường tui dạy nó dài lắm mà?

A: Ý của bạn có phải là nó như thế này không nè:
program HelloWorld;
uses crt;
begin
clrscr;
write('Hello, World!');
readln;
end.

Khi chạy thử, ta thấy chương trình xoá toàn bộ màn hình console sau đó mới in ra dòng chữ "Hello, World!".

Chương trình này nhiều hơn chương trình trước đó ở dòng 1,2,4. Hãy dùng Free Pascal để xoá 1 hoặc 1 vài dòng trong 3 dòng trên thử xem thế nào nhé!

Dòng 1: "program" là từ khoá xác định tên chương trình. Nó không có ý nghĩa quan trọng đối với chương trình, hoàn toàn có thể bỏ qua.
Dòng 2: "uses" là từ khoá dùng để khai báo thư viện. Thư viện được khai báo ở đây có tên là "crt". Thư viện là 1 tập hợp những chương trình con (hàm, thủ tục) thực hiện 1 số chức năng liên quan với nhau.
Dòng 4: "clrscr" - chính là lệnh xoá màn hình. Nếu bạn làm bài tập trên, bạn sẽ phát hiện nếu không có dòng 2 khai báo thư viện thì dòng lệnh này không chạy được. Lí do là "clrscr" chính là 1 chương trình con thuộc thư viện crt.

II. 1 chương trình Pascal gồm những phần nào?

Phần thân là phần nằm giữa cặp từ khoá "begin" và "end" (có dấu chấm ở cuối end). Đây là phần đóng vai trò chính trong 1 chương trình do mọi thao tác mà chương trình thực hiện đều xuất phát từ phần thân chương trình.
Phần còn lại là phần khai báo, dùng để định nghĩa tất cả những gì được dùng trong phần thân chương trình nằm ngoài cú pháp cơ bản của Pascal hay của thư viện system.
III. Đôi nét về thư viện

Thư viện là tập hợp của nhiều chương trình con được viết sẵn nhằm mục đích tái sử dụng lại trong nhiều chương trình khác nhau.
Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình. Chương trình con được viết khi cần sử dụng lại đoạn lệnh đó nhiều lần. Hiểu nôm na là, trong 1 chương trình, đôi khi 1 đoạn lệnh có cùng 1 công dụng nhưng được viết nhiều lần ở nhiều vị trí khác nhau, do đó người ta viết chương trình con, để khi cần thì chỉ cần gọi tên chương trình con đó.
Mọi chương trình Pascal đều được ngầm định tích hợp thư viện system, gồm 1 số chương trình con như write/writeln, read/readln,...
Ở ví dụ trên, thư viện "system" không chứa chương trình con nào có khả năng xoá màn hình nhưng trong thư viện "crt" có thủ thục "clrscr" mà chúng ta cần tìm nên ta cần khai báo thư viện "crt" bằng câu lệnh "uses crt;" để sử dụng được nó.

IV. Lệnh đơn - Lệnh có cấu trúc

1. Lệnh đơn

Trong ví dụ trên

clrscr;
write('Hello, World!');
readln;
là những lệnh đơn. Cả 3 lệnh đơn trên đều là lệnh thủ tục do nó gọi thủ tục có sẵn (clrscr từ thư viện crt, write và readln từ thư viện system). Ngoài lệnh thủ tục, lệnh đơn còn có 2 loại khác là lệnh gánlệnh nhảy cóc (goto) (sẽ tìm hiểu trong các bài sau).
phần lí thuyết - còn tiếp

Thực hành

Một bài thực hành nhỏ để các bạn review lại kiến thức đã nắm được từ bài trên, bạn nào có nhã hứng trao đổi về bài, có thể comment dưới blog này hoặc inbox facebook để nói chuyện nhé ^^
Đề bài của chúng ta sẽ là: Hãy viết 1 chương trình thực hiện những lệnh sau: 
- Xuất ra màn hình họ và tên của bạn rồi chờ người dùng bấm enter
- Sau khi bấm enter thì xuất tiếp ra màn hình ngày tháng năm sinh của bạn
- Sau đó bấm enter thì chương trình sẽ thoát.
Gợi ý: Để xuống dòng sau khi xuất ra màn hình, bạn thay "write" bằng "writeln" nhé ^^
Snowy Nguyễn

Nov 20, 2017

[Tìm hiểu Pascal] Thao tác với IDE Free Pascal

(Đây là bài viết thứ 4 trong series Tìm hiểu về ngôn ngữ lập trình Pascal)

Hmmm đã lâu mình không viết bài mới, bài viết này mình sẽ hướng dẫn cho các bạn một số thao tác cơ bản trên IDE Free Pascal.
Xem các bài viết trước đây tại: --> Click <--

Lưu ý: IDE Free Pascal không hỗ trợ tiếng Việt, các bạn vui lòng tắt bộ gõ tiếng Việt trước khi dùng.

I. Tạo file mới

Vào File -> chọn New

II. Lưu file

Để thực thi được file thì phải lưu file trước. Vào File -> Save (hoặc bấm F2). Nhập đường dẫn cần lưu file (1) vào ô rồi bấm OK (2).
Vd: Bạn muốn lưu file vào thư mục Hoctap trong ổ D với tên test.pas.
Cách 1: Nhập vào (1): D:\Hoctap\test.pas -> OK
Cách 2: Nhập vào (1): D: -> tìm và bấm đúp thư mục Hoctap ở khung Files bên dưới -> nhập vào (1) test.pas -> OK

III. Mở file có sẵn

Vào File -> Open (hoặc bấm F3). 
Hộp thoại xuất hiện tương tự ở trên, nhập đường dẫn cần mở theo mẫu ví dụ ở trên -> OK

IV. Đóng 1 file đang mở

Bấm vào cái nút màu xanh lá cây ở phía trên bên trái giao diện của bạn

V. Biên dịch chương trình

Vào Compile -> Compile (hoặc Alt+F9), nếu xuất hiện hộp thoại Compile successful thì bạn không mắc lỗi biên dịch, nếu không thì lỗi sẽ xuất hiện yêu cầu bạn sửa.

 Biên dịch lỗi: Ở vị trí dòng 9 cột 4, lẽ ra phải là dấu . thì trong code lại là ; nên sai cú pháp
Vị trí (9,4) bị sai
Sau khi sửa lại, chương trình biên dịch thành công

VI. Chạy chương trình

Vào Run -> Run (Ctrl + F9).


(còn tiếp...)
Snowy Nguyễn

Aug 14, 2017

Math Minute - Rèn luyện kĩ năng tính nhẩm

Giới thiệu

Đây là sản phẩm cá nhân thứ 3 của mình. Không phải là một game phức tạp, mình mong muốn đem lại cho mọi người những giây phút "căng não" nhằm giúp các bạn tăng khả năng phản xạ và tính nhẩm. Math Minute chính là công cụ giúp chúng ta thực hiện điều đó ^^

Thông tin kĩ thuật

Thông tin Nội dung
Tên sản phẩm Math Minute
Phiên bản hiện tại v1.2
Dung lượng ~23KB
Ngôn ngữ lập trình C#
Tác giả Nguyễn Nhật Nam
Facebook Nguyễn Nhật Nam
Một sản phẩm thuộc DeathKingTeam. Website. Fanpage
Lưu ý: Sản phẩm được viết trên .NET 4.0, nếu sau khi tải về file game mà không sử dụng được bạn vui lòng cài đặt thêm .NET 4.0 nhé. Link được đặt ở cuối bài.

Hướng dẫn sử dụng

Thiết lập thông số màn chơi

Max - Min: Là phạm vi tính toán trong màn chơi. Mặc định là 12 - 1, khi đó game sẽ tạo những phép tính ngẫu nhiên trong đó các số hạng của mỗi phép tính dao động trong khoảng từ 1 đến 12.
Thời gian: Tính bằng giây. Mặc định là 60 giây.
Số phép tính: Là số câu hỏi được tạo. Mặc định là 50 câu hỏi.
Phép toán: Bạn có thể chọn các phép toán để thực hiện. Mặc định là cả 4 phép tính cộng, trừ, nhân, chia, nhưng để điều chỉnh độ khó của trò chơi cũng như luyện tập trên một số phép tính cụ thể thì bạn có thể tick hoặc bỏ tick bất kì ô nào.
English interface: Click vào nút này để chuyển đổi ngôn ngữ giao diện sang tiếng Anh.
Sau khi hoàn thành việc thiết lập thông số cho màn chơi, bấm Bắt đầu! để chơi.

Cách chơi

Sau khi bấm Bắt đầu!, một bảng chơi hiện ra các câu hỏi để trả lời. Để trả lời, bạn bấm chuột vào ô tương ứng và nhập kết quả của phép tính. Bấm Tab để di chuyển nhanh sang ô tiếp theo, Shift-Tab để lùi về ô trước đó. Khi hoàn thành tất cả các phép tính hãy bấm Enter để nộp kết quả.
Mẹo: Bạn đặt tay phải lên bàn phím số bên phải, tay trái lên phím Tab để nhập kết quả thật nhanh nhé!

Hoàn thành màn chơi

Màn chơi kết thúc khi bạn nhấn Enter hoặc khi hết thời gian. Điểm của bạn được tính theo công thức:
    điểm = (số câu đúng + thưởng thời gian) * tỉ lệ trả lời đúng.
Điểm thưởng thời gian tuỳ thuộc vào số lượng các phép tính mỗi loại và độ lớn phép tính được tạo, sau đó game tính chỉ số thời gian dự tính của người chơi sau đó so sánh với thời gian chơi thật. Nên đôi khi có trường hợp dù hết thời gian vẫn có điểm thưởng thời gian do các câu hỏi tương đối khó, hoặc 2 người chơi thiết lập chỉ số màn chơi giống nhau và có cùng số câu đúng nhưng điểm chênh lệch rất nhiều. Do vậy điểm tổng của người chơi phản ánh trung thực nhất kết quả của người chơi và có thể so sánh với nhau dù có cùng thiết lập ban đầu hay không.
Sau khi kết thúc màn chơi, bạn có thể kiểm tra các câu đúng/sai của bạn.
Sai 1 câu mà nhanh hơn tận 8 giây nên điểm cao hơn khá nhiều
Mẹo: Nếu không còn nhiều thời gian mà lỡ nhập sai câu trả lời thì bạn cứ làm tiếp để tăng số câu đúng, đừng quay lại sửa vì sẽ mất rất nhiều thời gian.

Lời kết

Sau một mùa hè dài thì những ngày tháng đến trường lại tới, hãy cùng DKT làm nóng bầu không khí với game nho nhỏ này nhé ^^. 
Và bây giờ là phần quan trọng nhất...

Download

Link tải game: Click
Link tải .NET 4.0 cài đặt bổ sung nếu file game không chạy được: Click
Link mã nguồn: Github
Phần mềm được phân phối dưới giấy phép Ghi công tác giả 3.0 (Creative Common 3.0). Mọi người có quyền tái sử dụng, chỉnh sửa, tái phân phối miễn phí với điều kiện để lại nguồn vào blog này. Thông tin chi tiết về bản quyền vui lòng đọc file README.txt ở link Github được cung cấp.
Snowy Nguyễn

Jun 5, 2017

Lòng tự cao và dấu căn thức...

“Thất bại lớn nhất của đời người là tự đại” - Đây là một trong mười lời răn dạy mà Đức Phật từng dạy con người. Lòng tự cao dường như đã ăn sâu vào máu của nhiều người nhưng khó có thể dứt ra khỏi cơ thể cũng do chính sự bi quan và tự cho mình là nhất, trở nên khinh thường người khác và luôn hạ thấp người khác. Người tự cao luôn coi trọng cái tôi của bản thân, luôn lấy sự biểu hiện hơn thua nhau hay ngang bằng nhau để so sánh với người khác, luôn tìm mọi cách để hơn người khác (đôi khi là vượt ra khỏi giới hạn đạo đức).
Những người khiêm tốn sẽ không như vậy, họ biết khiêm nhường trong lời nói và hành động, luôn rất cẩn thận trong lời nói để không làm đau lòng người khác, họ biết nhìn nhận và xác định vị trí của mình hiện tại và luôn thành công trên con đường danh vọng.
Tự cao có 2 loại người: loại người tự cao thứ nhất nhưng lại biết nhìn nhận lại bản thân, loại người thứ hai là tự cao nhưng lại càng thể hiện cái tôi của họ cho mọi người thấy. Riêng tôi, tác giả bài viết này, rất may là không rơi vào trường hợp thứ hai. Tôi đã từng là người tự cao về thực lực của bản thân tại nơi mà tôi xem tôi là ông vua. Đúng thế! Chính là lớp học. Tôi luôn nghĩ mình là người giỏi nhất trong lớp và đôi khi, tôi có thái độ khinh thường về sự hiểu biết của người khác. Cũng có những lúc tôi tự mở chuyện với người khác về những thứ mà mình rành rọt mà người khác không biết nhiều, rồi lại kết luận họ thiếu hiểu biết. Tôi tự cao về thực lực, tự cao về số điểm, tự cao về “địa vị” trong lớp học. Nhưng, tôi biết nhìn nhận lại lời nói của mình đã làm tổn thương người khác (và tất nhiên là tôi đã từng).
Lòng tự cao và dấu căn thức, dường như chả có gì liên quan. Nhưng nếu xét kĩ càng hơn, bạn sẽ thấy sự tương quan đấy. Tôi rất thích học Toán, và rất tình cờ khi tôi tìm thấy được mối quan hệ “triết lí” này với môn học tự nhiên như môn Toán. Tại sao tôi tìm thấy được mối quan hệ này ? Lí do chính là con số nằm dưới dấu căn. Dường như những người tự cao thường đứng dưới cái lọng che mang tên “căn thức” rồi ngang  nhiên tự cao về bản thân, tự thấy mình là kẻ lớn nhất và giỏi nhất. Nhưng khi bước ra khỏi cái lọng “căn thức” ấy thì chẳng bằng ai. Nếu “chỉ số căn thức” của bạn càng cao thì bạn đang đứng dưới một cái lọng “căn thức” càng lớn, rồi bạn càng hại bạn đưa con số dưới cái lọng “căn thức” ấy lên một con số mới lớn hơn rất nhiều, khi đó thì bạn lại càng tự cao hơn nữa.
“Hãy khiêm tốn”, đừng phô trương tài năng của bản thân một cách trực tiếp cho người khác thấy mà hãy để người khác tự biết đến tài năng của bạn một cách gián tiếp, một cách khiêm nhường và phải khiến cho mọi người nể phục. Khi đó, bạn sẽ được mọi người kính trọng và yêu quí, luôn thành công trên con đường danh vọng của mình.

“KIÊU CĂNG, là sự thừa nhận của sự yêu đuối, nó âm thầm sợ mọi sự cạnh tranh và khiếm đảm mọi đối thủ.” - A. Fulton Sheen.
VIẾT CHO CHÍNH TÁC GIẢ

Apr 28, 2017

[Tìm hiểu Pascal] Các khái niệm cơ bản

Qua bài viết này chúng ta sẽ nắm rõ hơn các thông tin, khái niệm có trong ngôn ngữ lập trình Pascal

1. Bộ chữ viết

Bộ chữ trong ngôn ngữ Pascal gồm:
- 26 chữ cái in hoa: A, B, C… Z
- 26 chữ cái in thường: a, b, c, … z
- Dấu gạch dưới _ (“Shift” + “-”).
- 10 chữ số thập phân: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Các ký hiệu toán học: +, -, *, /, =, <, >, (, )
- Các ký hiệu đặc biệt: . , : ; [ ] ? % @ \ | ! # $ { }
- Dấu khoảng trắng.

2. Tên, từ khoá

- Từ khoá: Là những từ được quy định sẵn trong ngôn ngữ lập trình, được thiết kế chỉ dùng cho 1 mục đích nhất định, không thể thay đổi, không thể dùng những từ này để đặt tên biến, tên hàm.
- Tên gồm 2 loại
+ Tên chuẩn: Là các tên được ngôn ngữ lập trình định nghĩa sẵn, tuy vậy ta có thể định nghĩa lại, và việc định nghĩa lại sẽ làm mất đi ý nghĩa ban đầu của tên dành riêng. Tên chuẩn thường là những hàm có sẵn, câu lệnh đơn,…
+ Tên do người dùng đặt: Là các tên do người lập trình tự tạo ra, sử dụng cho mục đích lập trình riêng. Tên này là các tên biền, hằng do chính chúng ta đặt
- Cho dù là đặt tên cho biến hay tên của chương trình, tên do người dùng đặt đều phải tuân thủ quy tắc đặt tên có sẵn:
+ Chỉ bao gồm các chữ cái in hoa (A-Z), in thường (a-z), chữ số và dấu gạch dưới.
+ Chỉ bắt đầu bằng chữ cái in hoa (A-Z), in thường (a-z).
+ Không chứa dấu cách
+ Không trùng với từ khoá
+ Tên phải ngắn hơn 256 kí tự

3. Thư viện

- Thư viện: là tập hợp những câu lệnh được quy định sẵn để sử dụng trong 1 chương trình nào đó. Có 2 loại thư viện: thư viện do người dùng tạo ra & thư viện chuẩn của Pascal tự tạo ra.
- Các thư viện chuẩn thường gặp là:
+ Crt: Thư viện thông dụng, dùng để xử lí các thuật toán cơ bản, liên quan đến chế độ màn hình văn bản.
+ Dos: Thư viện hệ thống, dùng khi cần xử lí những thông tin trực tiếp liên quan đến hệ điều hành MS-DOS, thường dùng khi cần khai báo 1 số thông tin như ngày tháng năm hiện tại, thông tin về cấu trúc cây thư mục, ...
+ Sysutils: Thư viện chứa 1 số công cụ thường dùng như chuyển đổi kiểu chuỗi sang kiểu số
+ Printer: Thư viện chứa những câu lệnh liên quan đến chế độ in ấn qua cổng LPT1 (Connector DB25).
+ Graph: Thư viện đồ họa, chứa những câu lệnh liên quan đến xử lí đồ họa.

4. Màn hình làm việc

Cần phân biệt giữa 2 khái niệm: màn hình soạn thảo & màn hình làm việc
- Màn hình soạn thảo: Là màn hình được hiển thị khi khởi chạy Pascal, dùng để gõ mã của chương trình.
- Màn hình làm việc: Là màn hình được hiển thị khi chạy 1 chương trình đã compile thành công. Màn hình này trên Free Pascal thông thường có 80 cột, 25 dòng.
- Tọa độ màn hình: Mỗi vị trí trên màn hình làm việc được xác định bởi tọa độ tương ứng, ví dụ:
+ Tọa độ (1,1) chỉ vị trí trên cùng bên trái màn hình.
+ Tọa độ (14,25) chỉ vị trí nằm ở cột thứ 14, hàng thứ 25 của màn hình.

Bài thứ 2 của loạt bài "Tìm hiểu chung về ngôn ngữ lập trình Pascal" đến đây là hết. Hẹn gặp các bạn ở bài thứ 3.
Snowy Nguyễn

[Tìm hiểu Pascal] Cách cài đặt Free Pascal

(Đây là bài viết thuộc loạt bài Tìm hiểu về ngôn ngữ lập trình Pascal)


Pascal là 1 ngôn ngữ lập trình phổ biến, được sử dụng để giảng dạy trong các trường công lập ở nước ta hiện nay vì tính dễ hiểu, không phức tạp so với nhiều ngôn ngữ lập trình khác.

Pascal có 2 IDE (Integrated Development Environment - Môi trường phát triển tích hợp) chính là Turbo Pascal và Free Pascal. Bài viết này sẽ hướng dẫn các bạn cách cài đặt Free Pascal trên máy tính của mình

Cách tải Free Pascal

Windows: --> Click <--
Các phiên bản khác:  --> Click <--

Cách cài đặt Free Pascal

Bước 1: Tải file cài đặt theo đường dẫn ở trên
Bước 2: Khởi chạy file cài đặt. Cửa sổ cài đặt xuất hiện, bấm Next
Bước 3: Chọn thư mục cài đặt. Có thể để nguyên mặc định hoặc chọn đường dẫn khác bằng cách bấm vào Browse
Bước 4: Chọn kiểu cài đặt: Nên chọn Full installation để được cài đặt đầy đủ
Bước 5: Chọn Next để xác nhận -> Install. Sau khi quá trình cài đặt hoàn tất, bấm OK để file readme.txt hiện ra như hình dưới.
Đóng file này lại và tìm icon của phần mềm trên màn hình desktop.

Như vậy là bạn đã cài đặt xong Free Pascal :)

Một số câu hỏi thường gặp

Q: Bấm đúp vào file cài đặt nhưng lại báo lỗi như hình thì phải xử lí thế nào?
A: Lỗi này xuất hiện do Windows không có quyền truy cập vào file. Có nhiều cách giải quyết cho trường hợp này:
- Nếu file được lưu trên USB, hãy copy sang ổ cứng của máy tính để khởi chạy lại
- Chạy file dưới quyền quản trị bằng cách nhấp chuột phải vào file và chọn Run as administrator
- Đảm bảo tệp không bị can thiệp (đổi tên, di chuyển, xoá,...) trong khi khởi chạy
- Kiểm tra xem phần mềm diệt virus có chặn tệp không...

Q: Tại sao màn hình làm việc của bản Pascal này lại nhỏ hơn màn hình làm việc của Pascal ở trường học?
A: Do trường học sử dụng phần mềm Turbo Pascal, khác với bản Free Pascal được giới thiệu trong bài này. 1 số đặc tính khác nhau có thể nói tới là:

Q: Tôi muốn chỉnh màn hình làm việc của Free Pascal to hơn thì phải làm như thế nào?
A: Bạn bấm chuột phải vào logo Free Pascal IDE (1) rồi chọn Properties (2)...
... Khi hộp thoại xuất hiện, bạn chọn tab Font (1), chọn font chữ (2) và cỡ chữ (3) mà bạn ưng ý rồi bấm OK (4)

Note: Bài này cũng chính là bài viết mở đầu cho loạt bài Tìm hiểu về ngôn ngữ lập trình Pascal. Rất mong được sự ủng hộ, đóng góp của tất cả mọi người
Snowy Nguyễn

Apr 26, 2017

[Tìm hiểu Pascal] Thuật toán - P1

Đây là bài thứ 3 trong series về "Tìm hiểu chung về ngôn ngữ lập trình Pascal"
Bài này chúng ta sẽ không đi chuyên sâu về mặt cú pháp mà nhằm giải thích cho các bạn về cái cốt lõi của một chương trình, một bài toán. Không quan trọng bạn có dùng ngôn ngữ Pascal hay không, có thể C, Java, Python,... nhưng thuật toán vẫn là phần quan trọng nhất.

I. Thuật toán là gì?

Trong đời sống, các bạn sẽ gặp rất nhiều công việc yêu cầu phải được giải quyết một cách tuần tự nhằm một mục đích nào đó. Ví dụ:
  • Ốp la trứng: ban đầu có 1 quả trứng + dầu ăn + chảo + dĩa
    1. Làm nóng chảo, cho dầu ăn vào
    2. Cho trứng vào chiên
    3. Trứng chín, tắt bếp
    4. Trình bày ra dĩa
    • => Kết quả: ngồi nhìn cái trứng mới chiên (vì thuật toán đâu có kêu ăn đâu)
  • Giải phương trình 2x+1=3: ban đầu: phương trình là gì dợ, x là gì dợ, đưa em về hành tinh của mình đi :<
    1. Chuyển vế: 2x=3-1=2
    2. Chia cả 2 vế cho 2: x=2/2=1
    3. Kết luận PT có tập nghiệm S={1};
    • => Kết quả: ý ý phương trình có nghiệm x=1 kìa vi diệu quá há há há
  • Tả con chó nhà em: ban đầu: chả ai biết đến con chó nhà em trừ mấy ông bắt chó
    1. Sáng em dậy, gâu gâu chó sủa
    2. Trưa em về, chó sủa gâu gâu
    3. Chiều em đi, gâu gâu chó sủa
    4. Tối em ngủ, chó sủa gâu gâu
    • => Kết quả: đưa con chó lên trang vở, lưu danh sử sách
  • Làm hacker: ban đầu: một tài khoản facebook + một tâm hồn trẻ nghé
    1. Lên facebook đổi avatar a no my ớt
    2. Lên google search "cách rjp njck facebook"
    3. Mở cmd lên, gõ ipconfig
    4. Cap màn hình lại, khoe facebook hù thiên hạ
    • => Kết quả: đẳng thức (trẻ nghé) + (biết dùng facebook) = ("hacker") được chứng minh
Qua một chuỗi ví dụ vô cùng sinh động, cụ thể (=]]]]]) thì ta có thể tóm gọn lại rằng: 
Thuật toán (algorithm) là tập hợp hữu hạn các thao tác, chỉ thị được thực hiện liên tục và tuần tự, nhằm mục đích dẫn sự việc từ trạng thái ban đầu tới trạng thái kết quả cuối cùng đã được dự đoán.

II. Các cách biểu diễn thuật toán

1. Dùng ngôn ngữ tự nhiên: 

Cách mô tả các thuật toán như trong ví dụ trên gọi là dùng ngôn ngữ tự nhiên

2. Dùng sơ đồ khối (Flowchart)

Là cách dùng những hình vẽ, kí hiệu được quy định sẵn để vẽ thành một sơ đồ một cách trực quan, dễ hiều. Vd như hình sau (về cách dùng sơ đồ khối, mời bạn đọc search google với từ khoá "flowchart" để biết thêm chi tiết :D )

3. Dùng mã giả (Pseudocode)

Là cách dùng một số quy ước cơ bản của một (hoặc một số) ngôn ngữ lập trình nào đó, được bỏ đi những chi tiết không cần thiết và có sự hỗ trợ của ngôn ngữ tự nhiên hoặc kí hiệu toán học đơn giản. Dùng mã giả giúp người đọc không cần phải tìm hiểu về một ngôn ngử lập trình nào đó mà vẫn có thể hiểu được giải thuật một cách chính xác nhất. Cách này sẽ được nói sâu hơn khi tìm hiểu ở các bài sau.

III. Các tính chất của thuật toán

1. Tính chính xác

Tất nhiên, đây là tính chất quan trọng nhất của thuật toán. Tính chất này để đảm bảo kết quả tính toán, trạng thái cuối cùng sau quá trình tính toán là đúng. (cái này chắc khỏi ví dụ nha :D )

2. Tính rõ ràng

Thuật toán phải được cấu thành từ các câu lệnh minh bạch được sắp xếp theo trình tự hợp lí
VD: Thuật toán làm h@cker (kéo lên trên xem lại): thay vì cap màn hình khi ipconfig thì lại đi cap lúc này thì...

3. Tính khách quan

Thuật toán dù được thực hiện bởi ai, bằng hình thức nào thì cũng phải cho kết quả như nhau.

4. Tính phổ dụng

Tính chất này để đảm bảo kết quả tính toán, trạng thái cuối cùng sau quá trình tính toán là đúng với mọi dữ liệu đầu vào tương tự nhau.

5. Tính kết thúc

Thuật toán phải kết thúc sau một số hữu hạn bước. Tính chất này nhằm tránh một (hoặc một số) câu lệnh bị lặp lại một cách vô hạn gây lãng phí tai nguyên.

Bài này chắc cũng hơi dài rồi nhỉ, thôi hẹn gặp các bạn ở phần 2 của bài ^^ 
SnowyNguyễn

Feb 1, 2017

Làm thế nào để biết được tên font dựa trên hình ảnh ?

Mở đầu

Bạn có bao giờ cảm thấy bối rốitrằn trọc rằng font chữ được sử dụng trong một hình ảnh nào đó mà bạn nhìn thấy được có tên là gì không ? Tất nhiên là nhìn qua font thì không thể biết tên được rồi...
"Thua keo này ta bày keo khác", WhatTheFont! (WTF!!) sẽ là vị cứu tin của bạn đấy!

WTF! là một tiện ích nhỏ của MyFonts.com. Nó sẽ giúp bạn phân tích những đường nét của một font chữ nào đó và trả về tên của font chữ đó một cách chính xác nhất dựa trên hình ảnh mà bạn chọn.

Kết quả mà WTF trả về có chính xác không ?

Câu trả lời là . Nhưng không phải lúc nào cũng chính xác 100% hoàn toàn, nó còn phụ thuộc bởi những yếu tố như: độ sắc nét của hình ảnh, kích cỡ hình ảnh, khoảng cách giữa các kí tự,...
Để có thể trả về một cách chính xác nhất, hình ảnh chứa font chữ mà bạn muốn tìm phải đạt những yêu cầu như:
  • Các kí tự trên hình ảnh phải nằm ngang.
  • Size kí tự có kích thước không quá nhỏ.
  • Khoảng cách giữa các kí tự đủ rộng, hạn chế chọn hình ảnh có các kí tự chạm hoặc chồng lên nhau.
  • Hình ảnh không quá mờ
Ngoài ra độ chính xác còn phụ thuộc vào chiều cao, chiều rộng hay chiều dài của các kí tự, độ phân giải DPI (Dot Pers Inch)... Bạn có thể tham khảo thêm ngay tại Image tips.

Lời khuyên từ "chiên da" (tác giả bài viết): Cũng đừng nên đặt nặng vấn đề hình ảnh đó phải đạt chuẩn những yêu cầu trên, nhỡ nó "xuất quỷ nhập thần" cho ra kết quả chuẩn không cần chỉnh thì sao! Cứ thấy ảnh chứa font mà bạn muốn tìm rồi upload lên thôi :D

Đi tìm ẩn số!

Bạn có 2 cách để upload ảnh lên, 1 là download về rồi upload lên, hoặc 2 là sử dụng phương thức kéo thả ảnh...
Ở đây mình có một hình ảnh minh họa:
Đây là font Intro Inline, nhờ WTF! mà mình biết được tên font hồi 1 năm trước :D
- Sau khi đã upload ảnh, nhấn Continue để tiếp tục
- Bước này chỉ nhằm kiểm chứng lại các kí tự trong hình ảnh một lần nữa, nếu chưa chính xác, bạn hãy chỉnh sửa lại ngay phía dưới hình ảnh chứa chữ cái ấy, thường thì độ chính xác không phụ thuộc vào bước này.
- Tiếp tục nhấn Continue
- Bước cuối cùng chỉ để hưởng thành quả, kết quả mà WTF! trả về rất chính xác đúng không nhỉ? :D
Link kiểm chứng: Click here!

Kết

Giờ thì bạn có thể ăn ngon ngủ kĩ, không phải lo sợ ăn không ngon, ngủ không yên vì mấy cái việc tìm font khó khăn ấy! Chúc bạn thành công, đừng quên share bài viết này để bạn bè của bạn cùng biết nhé :D

Oct 29, 2016

Magic Math - Giúp cải thiện kĩ năng phản xạ và tốc độ tính nhẩm!

Lời cảm ơn đặc biệt đến anh Vinh Phạm (opdo.vn) - người giúp đỡ mình hoàn thành sản phẩm đầu tay này!

Giới thiệu

Magic Math - Trò chơi rèn luyện phản xạ Toán Học
Toán học là một môn học rất cần thiết trong cuộc sống, giúp bạn tăng khả năng phản xạ trong Toán Học, nâng cao tư duy, đặc biệt khả năng phản xạ tính toán. Vì thế sau đây mình xin giới thiệu chương trình do chính tay mình viết ^^. Đây cũng là chương trình đầu tay của mình.

Do chỉ mới là một newbie nên chắc chắn vẫn còn khá nhiều lỗi sai sót, mong các bạn thông cảm ^^

 [Pass: doimatblog.ga]
Cách chơi: Về cách chơi thì rất đơn giản, sẽ có một câu hỏi tính toán ngẫu nhiên được tạo ra, nếu đáp án của bạn trùn khớp với đáp án của chương trình, hãy nhấn vào button Đúng (màu xanh) và ngược lại. Hhãy sử dụng khả năng phản xạ của bạn để trả lời câu hỏi. Mỗi câu hỏi chỉ có 2 giây để trả lời, độ khó sẽ tăng dần theo số điểm của bạn.

Trong trò chơi có kèm cả âm thanh để gây phần kịch tính ^^.

Thông tin sản phẩm

Thông tin Nội dung
Tên sản phẩm Magic Math - Trò chơi rèn luyện phản xạ Toán Học
Version (phiên bản) 1.0
Programming Language AutoIT
Author Dương Trần (doimatblog)
Source facebook.com/DuongTran.Org
Blog doimatblog.ga

Một số hình ảnh



Mình xin cam đoan là chương trình không chứa bất kì một mã đọc nào, để chứng mình thì mình đã quét chương trình bằng VirusTotal.com. Xem chi tiết tại đây!

Bạn có thể tham khảo Source ?

Tất nhiên là được ^^, mình rất hoan ngênh tinh thần học hỏi của bạn nhưng vì lí do bảo mật nên mình sẽ không chia sẻ link download. Nếu bạn muốn tham khảo qua source vui lòng liên hệ với mình tại địa chỉ facebook: fb.me/DuongTran.Org

 Bạn có thể sử dụng sản phẩm này trên blog của bạn ?

Mình rất vui khi sản phẩm của mình được mọi người quan tâm. Nếu bạn muốn sử dụng chương trình của mình trên blog của bạn hoặc muốn quảng cáo (ảo tưởng ^^) sản mình thì bạn cứ tự nhiên nhưng bạn cần để lại nguồn và thông tin tác giả.

Kết

Do đây chỉ là chương trình đầu tay của mình nên cũng không hi vọng được nhiều người sử dụng, chỉ mong các bạn ủng hộ sản phẩm này để mình có thể động lực tạo ra nhiều khác. Thanks all!



Xem video


Nguồn bài viết: Đôi Mắt Blog

Jul 22, 2016

[REVIEW] SNAPSEED – ỨNG DỤNG CHỈNH SỬA ẢNH TUYỆT VỜI ĐẾN TỪ GOOGLE

Nếu lướt 1 vòng Appstore hay Play Store, chắc hẳn bạn sẽ thấy có vô vàn nhũng app chỉnh sửa ảnh đa dạng đủ thể loại như 360, PhotoWonder, hay một mạng xã hội rất nổi tiếng là Instagram chẳng hạn. Nhưng trong bài viết sau đây, chúng ta sẽ tìm hiểu một app chỉnh sửa ảnh có lẽ là tuyệt vời nhất theo cảm nhận của mình. Đó chính là Snapseed.


SNAPSEED – ỨNG DỤNG CHỈNH SỬA ẢNH TUYỆT VỜI ĐẾN TỪ GOOGLE

Hình thành

Snapseed ban đầu là một ứng dụng của công ty Nik Software, nhưng sau này đã bị mua lại bởi Google. Snapseed chủ yếu đánh mạnh vào khả năng chỉnh sửa ảnh sâu của nó, vì thế nên từng được vinh danh là ứng dụng tốt nhất trong 100 ứng dụng Android do PC Magazine bầu chọn. Năm 2011, Snapseed được giới thiệu lần đầu tiên trên dòng Ipad của Apple. Tiếp nối sự thành công, Nik Software tiếp tục đưa lên dòng Iphone vào tháng 8 và đúng 1 năm sau, Snapseed đã cập bến Android. Điều đó cho ta thấy sức hút của Snapseed lớn đến chừng nào.
Snapseed cho Ipad lần đầu vào năm 2011

Giao diện và tính năng

a. Giao diện

Giao diện khởi động của ứng dụng khá đơn giản, với phông nền là một tòa tháp và bầu trời xanh, phía trên là logo kèm theo dòng chữ Snapseed, phía dưới có một biểu tượng hình chiếc smartphone nhỏ và nút “Open Photo” cho phép chúng ta chọn ảnh từ một nơi bất kì như Photos, Thư Viện, Google Drive, … chẳng hạn. Theo mình, giao diện này khá trực quan, sáng sủa, giúp cho ai cũng có thể dễ dàng làm quen và sử dụng thành thạo.


 Giao diện khởi động Snapseed

Các mục tùy chỉnh bên trong được sắp xếp khá gọn gàng theo kiểu Live Tiles giống như WindowsPhone với những ô vuông ngăn cách. Mỗi ô có một tiêu đề chức năng kèm theo hình vẽ nhỏ minh họa. Trong mục tùy chỉnh được chia tổng cộng thành 2 phần: Tools (Tùy chỉnh về ảnh) và Filters (Các bộ lọc khác nhau). Tổng cộng tất cả có 9 tùy chọn trong Tools và 12 bộ lọc màu khác nhau. Phông chữ khá đơn giản, không cầu kì và màu mè quá như những ứng dụng chỉnh sửa đến từ Trung Quốc (360, PhotoWonder, BeautyPlus) khiến cho người dùng bị hoa mắt cả lên vì độ sặc sỡ của chúng
    Mục Tools   
Mục Filters


















                                                                       

b. Tính năng

Tính năng trong Snapseed rất đa dạng, từ đơn giản đến những tính năng có thể sánh ngang bằng những máy ảnh DSLR chuyên nghiệp đến từ những hãng nổi tiếng. Đây là những tính năng tuyệt vời mà Snapseed có thể biến hình bạn “từ vịt hóa thiên nga nhé” :
*Tools:
1.     Tune Image : Cho phép tăng độ sáng của bức ảnh (đối với những ảnh chụp đêm chẳng hạn)
2.     Details: Cho phép tăng độ sắc nét của tấm hình (cái này mình khuyên là đừng nên để tối da nhé, nhìn hình sẽ như bị vỡ)
3.     Crop: Cho phép cắt hình theo ý muốn (ngang, ngiêng, xéo,….)

4.     Rotate: Xoay hình theo ý muốn (900, trái, phải, nghiêng,…)

5.     Transform: Biến đổi hình theo kiểu ngiêng lên xuống, trái phải (cái này thì bạn tự tìm hiểu sẽ rõ hơn nhé)
6.     Brush: Tô làm nổi bật hình. Có 4 loại: Dodge & Burn (điểu chỉnh độ sáng tồi hình), Exposure ( điều chỉnh EV của hỉnh), Temperature (điều chỉnh nhiệt độ hình) và Saturation (Điều chỉnh màu hình, giúp hình tươi sáng, rực rỡ hơn)

7.     Selective: Chọn một vùng màu nhất định và điều chỉnh cho riêng vùng đó

8.     Healing: xóa chỗ không ưng ý và tự động thay bằng một chỗ khác bất kì (Chỉ nên sử dụng ở những cảnh như đồng cỏ, rừng cây vì sẽ không gây ra hiện tượng thay nhầm chỗ)

9.     Vignette: tạo bóng viền xung quanh hình

* Filters:
1.     Lens Blur: Tạo độ mờ cho ảnh, làm nổi bật chủ thể (tương tự máy DSLR)
2.     Glamour Glow: Bộ lọc màu cho người
3.     Total Contrast: Chỉnh độ tương phản (không rõ)
4.     HDR Scape: Tăng dải nhạy sáng (Dynamic Range) cho hình
5.     Drama: Bộ lọc theo kiểu ngôn tình
6.     Grunge: Bộ lọc cho các đồ vật
7.     Grainy Film: Bộ lọc cho phong cảnh tĩnh
8.     Vintage: Bộ lọc cho cây cối, hoa,…
9.     Retrolux: Bộ lọc cho các hoạt động thể thao
10  Noir: Bộ lọc phù hợp ảnh về đêm
11. Black and White: Bộ lọc trắng đen
12.  Frames: Các loại khung ảnh
Một vài thành quả (trước và sau khi edit):






Có thể nhận ra rằng những điểm tối như gốc cây, đất đã được làm sàng lên hẳn. Màu cây cối được làm tươi sáng và trông chân thật hơn so với ảnh gốc.

Một bức ảnh sử sụng bộ lọc Black and White. Các chi tiết được thể hiện rõ rệt

Nhận xét


Ưu điểm:

  • Đa dạng nhiều chức năng, dễ lựa chọn, phù hợp nhiều người ngay cả nhiếp ảnh gia chuyên nghiệp
  • Giao diện trực quan, dễ sử dụng
  • Tùy biến sâu vào ảnh

Nhược điểm:


  • Tốc độ lưu hình khá chậm


    Mong các bạn trải nghiệm tốt app này nhé !

Nhật Minh