BLOG ĐÃ CHUYỂN SANG: HTTP://WETEAMAPP.BLOGSPOT.COM!

Bài I: Làm Quen Với C! Chương Trình 'Hello World!'

Trong giới lập trình, chương trình 'Hello World' không quá xa lạ gì, vì đó được xem là một chương trình đầu tiên và chuẩn nhất, cho cái nhìn bao quát về một ngôn ngữ nào đó được đề cập đến. Nhưng nếu như bạn chưa biết gì về lập trình, thì cũng nên biết về chương trình này, và nếu sau này bạn muốn học một ngôn ngữ lập trình nào khác, bạn vẫn có thể tìm kiếm một 'Hello World' khác để biết ngôn ngữ đó khai báo như thế nào? bắt đầu ra sao? có khác gì với ngôn ngữ của mình đã biết hay không.
'Hello World' cho ra khái niệm của một chương trình, bây giờ mình sẽ viết một chương trình 'Hello World' và giải thích ý nghĩa để bạn dễ hiểu về hoạt động của C nhé!


  1. #include <stdio.h>

  2. int main(void) {
  3.    printf("Hello World!!! \n");
  4.    return 0;
  5. }


Nhìn vào thật không đơn giản phải không nào?
Thật ra cũng không quá khó để viết một chương trình C. Bước đầu bạn còn quá bỡ ngỡ và thoạt nhìn vào nó quá phức tạp. Nhưng nắm rõ nguyên lý hoạt động của ngôn ngữ C, bạn sẽ thấy nó thật thú vị và dễ dàng làm được như vậy!

Dòng 1: Khai báo thư viện. Trong C, để muốn dùng một từ khóa nào đó, bạn phải khai báo thư viện cho nó. Như thế, khi chương trình dịch, đọc được thư viện mới hiểu từ khóa đó có ý nghĩa gì, cú pháp của nó ra sao, cho nhập và xuất ra những gì, hoặc đơn giản: nó dùng để làm gì.
Cách khai báo rất đơn giản, đầu tiên, bạn thêm dấu '#' và thêm từ 'include' (trong tiếng Anh nghĩa là 'bao gồm'), rồi thêm tên thư viện cần khai báo trong cặp dấu '<>'.
Vậy, để thêm thư viện 'stdio.h' vào chương trình, bạn chỉ việc gõ:

#include <stdio.h>

'stdio.h' là thư viện chuẩn mà hầu hết chương trình nào viết bằng C cũng phải có. thư viện 'stdio.h' chứa các lệnh nhập dữ liệu từ bàn phím (nghe khó hiểu nhỉ!) và xuất dữ liệu ra màn hình (như chữ, số,... ra cho màn hình hiển thị).

Dòng 2: Mình để khoảng trắng cho đẹp và dễ phân biệt giữa phần khai báo và phần thân.

Dòng 3: Đây là một hàm, nhưng rất đặc biệt, mang tên 'main' (trong tiếng Anh nghĩa tương đương với 'chính'). Hàm này là hàm chuẩn và tất cả các câu lệnh muốn thực hiện đầu tiên, phải đưa vào hàm này.
Bạn có thấy 'int' đằng trước hàm không? int (viết tắt integer nghĩa là số nguyên), miễn là kiểu dữ liệu nào nằm trước một hàm, điều đó có nghĩa là giá trị mà hàm đó trả về thuộc kiểu dữ liệu đó. Ví dụ như bạn thực hiện một bài toán, kết quả bài toán đó trả về là số nguyên (1; 2; 3;...) hay số thực (1,2; 3,14;...) gì thì bạn bắt có nó trả về int đều cho ra số nguyên. Tuy nhiên, với hàm 'main' bạn không nên quan trọng hóa việc này, vì nó dường như đa số không có nghĩa gì cả, tuy nhiên, dùng giá trị trả về dù là giá gì đi chăng nữa, câu lệnh cuối cùng trong hàm 'main' nên thêm cú pháp 'return 0' để cho giá trị trả về là 0 (nếu chương trình có thuận toán khác, bạn có thể đổi số 0 thành giá trị khác).
Đằng sau 'main' có cặp dấu '()', trong cặp dấu '()' có từ 'void'. 'void' ngụ ý là 'không có gì'. Trước khi giải thích tại sao lại như vậy, mình xin khái niệm lại hàm là gì và cách tạo hàm ra sao?
Giả sử bạn có một công việc cần chia ra cho nhiều người làm, mỗi người làm một việc và cuối cùng lắp ráp lại cho ra một sản phẩm duy nhất thì bạn hãy ví như chương trình là công việc bạn cần làm, và hàm là phần chia nhỏ ra làm mỗi công việc riêng nhất đinh và cho ra sản phẩm là output - kết quả.
Cách khai báo hàm:

kiểu_dữ_liệu tên_hàm(kiểu_dữ_liệu biến1, kiểu_dữ_liệu biến2,...)

Kiểu dữ liệu trước tên hàm dùng để đặt thuộc tính cho kết quả hàm trả lại, nói cho đơn giản: nếu một bài toán bạn giao cho hàm xữ lý, sau khi hàm xử lý xong sẽ trả cho bạn kết quả bài toán đó, kết quả của nó là một số (1, 2, 3,...) hay số thập phân (1,5; 3,14;...) gì đi chăng nữa thì kiểu dữ liệu sẽ định lại kết quả theo đặc tính của nó. Nếu kết quả cộng, trừ, nhân cho ra số nguyên thì bạn đặt kiểu dữ liệu int (integer: số nguyên), nếu bài toán chia cho ra kết quả thập phân thì nên định kiểu dữ liệu là float (kiểu số thực), chữ cái thì đặt là char,... tùy vào nhu cầu mà sử dụng cho hợp lý.
Trong cặp dấu ngoặc đơn, bạn có thể đặt biến vào trong đó để sử dụng cho thân hàm (sẽ được nhắc đến ở chương 'Hàm').
Vậy hàm 'main' cũng không ngoại lệ trong quy tắc hàm. Chỉ là hơi đặc biệt một tí, vì 'main' là hàm chính được chương trình thực hiện đầu tiên, nếu bạn có thêm hàm khác vào chương trình mà trong hàm main, bạn không gọi hàm đó thì cũng như không hề tồn tại hàm đó trong chương trình.
Hàm 'main' trả về giá trị int hay float,... không quan trọng lắm.
Bên trong cặp dấu "()" trong hàm 'main' sẽ không có bất kỳ biến nào vì hàm 'main' là hàm chính trong chương trình, không thể 'bị động' để cần hàm khác gọi nó được, nên bạn có thể bỏ trống trong cặp ngoặc đơn, cũng có thể điền 'void' cũng có ý nghĩa 'trống' tương tự.

Dòng 4: Câu lệnh này giúp hiển thị chữ 'Hello World!' lên màn hình.
Từ khóa 'printf' giúp xuất dữ liệu ra màn hình, trong trường hợp này, 'printf' đã xuất dòng chữ 'Hello World!' ra màn hình. Để sử dụng được 'printf', bạn cần phải khai báo thư viện 'stdio.h' thì chương trình dịch mới hiểu bạn dùng 'printf'.
Cú pháp 'printf' như sau:

printf("Chuỗi văn bản...", biến cần xuất dữ liệu ra màn hình (nếu có)...);
Bạn chỉ cần hiểu nôm na trong bài học này thôi, vì bài học sau sẽ hướng dẫn chi tiết cách dùng 'printf' hơn.

Dòng 5: Câu lệnh này giúp chương trình trả về dữ liệu. Nếu bạn định kiểu dữ liệu cho hàm là int, float,... thì nên thêm câu lệnh này để cho giá trị trả về. Còn định kiểu dữ liệu 'void' thì khỏi thêm câu lệnh này, trong bài hàm sẽ nói rõ vấn đề này.
Lưu ý: Thay vì dùng void làm kiểu dữ liệu cho hàm 'main', mình định 'int' làm kiểu dữ liệu cho 'main' là vì một số máy sử dụng hệ điều hành linux như Mac OS X, Ubuntu,... sẽ báo lỗi khi dùng 'void'. Mình dùng 'int' để tránh các bạn chạy thử chương trình, bị báo lỗi mà không rõ nguyên nhân.

Dòng 6: Dấu móc kết thúc hàm 'main'.

Tóm bài:
Trong bài học này, bạn chỉ cần nắm rõ:
- Một chương trình C gồm 2 thành phần chính: Phần khai báo thư viện và phần thân chương trình.
- Phần khai báo thư viện giúp chương trình dịch có thể đọc được cú pháp mà phần thân chương trình sử dụng.
- Thư viện 'stdio.h' là thư viện chuẩn nhất mà mọi chương trình C đều có, nó giúp bạn sử dụng được các cú pháp nhập, xuất dữ liệu từ bàn phím và màn hình.
- Chương trình C sẽ đọc các dòng lệnh trong hàm 'main' đầu tiên. Sau khi khai báo hàm 'main' phải có thêm cặp dấu "{" và "}", và viết các câu lệnh trong cặp dấu "{}".

Bài tập:
1. Viết lại chương trình 'Hello World!' như ở trên.
2. Thử xóa bỏ '\n' đằng sau chữ 'Hello World!', chạy chương trình và kiểm tra kết quả có khác với ban đầu không?
3. Thay "Hello World!" thành "Hello World!\t", chạy thử chương trình và kiểm tra kết quả.