Tài liệu lập trình C cho người mới bắt đầu – Chào mừng các bạn đến với bài học lập trình C/C++ . Tôi sẽ là người hướng dẫn (hay là thầy giáo nếu bạn thích ) trong suốt các bài học.
Bạn không hề biết tí gì về lập trình. Cũng không chắc đã biết “lập trình” là gì nhưng… chắc chắn là bạn đang muốn học lập trình
đúng không? Và bạn phải xác định chính xác mục tiêu của mình là: “học lập trình”. Nhưng lập trình C / C++… Đó nghĩa là gì? Và có thật sự tốt nếu ta bắt đầu học từ nó? Và bạn đã biết lập trình trước đó chưa? Có phải chúng ta có thể làm tất cả mọi thứ trên máy tính với nó? Nhiệm vụ quan trọng của chương này là trả lời tất cả những câu hỏi đơn giản như thế.


NHỮNG ĐIỀU CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH C
Chúng ta bắt đầu từ một câu hỏi đơn giản nhất có thể.”Lập trình là gì?”
Nếu bạn đã biết điều này trước đó, tôi vẫn khuyên bạn nên đọc lại nó. Tôi sẽ bắt đầu bài hướng dẫn từ zero, dành một người không biết tí gì về lập trình.
“lập trình” (programmer, program) nghĩa là gì?
Vâng tôi sẽ tránh làm giống như thầy giáo dạy văn của tôi. Tôi sẽ không đưa ra cho bạn nguồn gốc của từ lập trình (programmer, program). Nhưng dù sao đi nữa nó xuất phát từ một từ latin “programmeus”. Nói đơn giản, lập trình nghĩa là tạo nên những “chương trình máy tính”. Những chương trình đòi hỏi máy tính thực hiện tất cả công việc.
Máy tính bạn chứa đầy các chương trình ở tất cả mọi thể loại:
- Calculator chính là một chương trình.
- Các công cụ xử lí văn bản của bạn cũng là chương trình.
- Các software dùng để “chat” cũng là chương trình.
- Trò chơi điện tử cũng là chương trình.
Tóm lại, những chương trình ở khắp mọi nơi trên máy tính và cho phép thực hiện bất cứ điều gì. Bạn có thể tạo ra một chương trình mang tính cách mạng nếu bạn may mắn, hoặc thực hiện một
game đánh nhau 3D trên internet. Máy tính của bạn có thể làm tất cả (trừ những việc như làm ra café).


Xin lưu ý rằng tôi không nói người ta làm ra trò chơi này hoàn toàn chỉ thông qua việc đánh máy viết code. Ý tôi là chúng ta có thể làm những điều đó, nhưng chắc chắn là ngoài việc gõ phím ra, bạn còn có rất nhiều việc khác để làm.
Bạn sẽ không bắt đầu học lập trình bằng việc tạo ra một game 3D. Chẳng khác nào tự mình kết thúc tất cả . Chúng ta hãy bắt đầu từ những điều cơ bản. Đầu tiên là làm sao hiển thị lên màn hình một tin nhắn. Bạn phải học từng thứ từng thứ một, và từ từ bạn sẽ có khả năng thực hiện những chương trình với độ khó ngày càng gia tăng. Mục đích của toàn bộ bài hướng dẫn này giúp bạn có khả năng xoay sở trên bất kì chương trình nào được viết bằng ngôn ngữ C hay C++.
Lập trình bằng ngôn ngữ nào?
Thật sự mà nói, máy tính đúng là một cỗ máy kì lạ: nó chỉ nhận và gửi lại những số 0 và 1. Ví dụ, nếu dịch câu: “thực hiện phép tính 3 + 5” về ngôn ngữ máy tính, nó sẽ có dạng như sau:
0010110110010011010011110. (dãy số trên do tôi chế ra đấy , thật sự thì tôi không giỏi việc dịch ra ngôn ngữ máy tính ). Những số mà bạn thấy ở trên, là ngôn ngữ của máy tính, gọi là ngôn ngữ nhị phân (language binary). Máy tính của bạn chỉ hiểu đươc ngôn ngữ này. Nhưng bạn và tôi, chúng ta hoàn toàn không thể hiểu và học được ngôn ngữ đó.
Và đây chính là vấn đề đầu tiên của chúng ta:
Làm cách nào để giao tiếp với máy tính đơn giản hơn việc dùng những số 0 hay 1?
Máy tính của bạn không nói được tiếng Anh cũng như tiếng Việt. Và không ai quan niệm phải viết một chương trình bằng ngôn ngữ nhị phân, kể cả những nhà lập trình điên nhất cũng không
làm chuyện đó. Ý tưởng là phải tạo ra một ngôn ngữ mới đơn giản hơn và sau đó nó sẽ được chuyển sang ngôn ngữ nhị phân. Đây là việc của những nhà lập trình chuyên về ngôn ngữ. Và các chương trình trình này đã đuợc tạo ra bởi họ, chúng ta sẽ không cần phải thực hiện lại, thật là may mắn phải không?
Nói đơn giản:
Nếu bạn viết một lệnh bằng ngôn ngữ lập trình nào đó với nội dung: “thực hiện phép tính 3+5” thì chương trình dịch sẽ chuyển thành những dạng như sau: “0010110110010011010011110”
Tôi sẽ lập một biểu đồ để giúp bạn hiểu rõ hơn:


Ở đây tôi chỉ dùng những từ ngữ đơn giản để giải thích, nhưng trong tin học mỗi vấn đề đều có một thuật ngữ riêng. Suốt các bài học, bạn sẽ phải học không ít những thuật ngữ đó. Điều đó giúp bạn có thể dễ dàng biểu đạt những vẫn đề về tin học, hơn nữa, bạn có thể hiểu được ý của một nhà lập trình nào đó mà bạn sẽ trò chuyện sau này. Hẳn là lúc đó, những người xung quanh sẽ nhìn các bạn với ánh mắt khác thường, đó là lý do mà bạn phải chú ý đến việc học những thuật ngữ.
Quay lại với biểu đồ ở trên:
Trong ô đầu tiên: “Chương trình được viết bằng ngôn ngữ lập trình đơn giản”. Cụm từ “Ngôn ngữ lập trình đơn giản” còn đuợc gọi là “ngôn ngữ bậc cao”. (high-level programming language). Có rất nhiều “cấp bậc” trong ngôn ngữ lập trình. Và ngôn ngữ bậc càng cao càng gần và giống với ngôn ngữ của chúng ta (cũng giống như tiếng Việt hay tiếng Anh). Ngôn ngữ bậc cao giúp ta dễ dàng hơn trong sử dụng, nhưng nó vẫn có một vài thiếu sót mà bạn sẽ thấy về sau. Có rất nhiều ngôn ngữ bậc cao hay thấp trong tin học, trong số đó bạn có thể dùng để lập trình.
Và đây là một vài ví dụ:
- C
- C++
- Java
- Visual Basic
- Delphi
- …vv…
Nói thêm rằng ở đây tôi không sắp xếp chúng theo “cấp bậc của ngôn ngữ”, vì thế bạn đừng nghĩ rằng ngôn ngữ đầu tiên sử dụng dễ dàng hơn hay ngược lại. Đó chỉ là một vài ví dụ bất chợt
nảy ra trong đầu của tôi. (Còn rất nhiều ngôn ngữ khác nữa mà tôi không liệt kê ra hết, vì sẽ rất dài nếu ghi hết ra , xin các bạn bỏ qua cho). Một số ngôn ngữ có bậc cao hơn các ngôn ngữ khác (về mặt lí thuyết thì dễ dàng sử dụng hơn), chúng ta sẽ xem xét điều này sau, đặc biệt là sự khác nhau giữa ngôn ngữ C và C++.
Một từ ngữ khác mà ta phải nắm đó là: mã nguồn (code source). Đó đơn giản là phần mã của chương trình được viết bằng ngôn ngữ bậc cao. Và tất cả những mã nguồn đó sẽ được dịch thành
ngôn ngữ nhị phân. Trong giai đoạn tiếp theo, “chương trình biên dịch” sẽ dịch ngôn ngữ bậc cao đó (C hay C++) sang nhị phân. Chương trình này có tên là compiler. Việc biên dịch gọi là compilation.
Quan trọng: các ngôn ngữ lập trình bậc cao khác nhau sẽ có các compiler khác nhau. Nói cách khác, chúng ta không thể dịch ngôn ngữ C++ cùng với cách mà ta dịch ngôn ngữ Delphi.
Về sau bạn sẽ nhận thấy, cùng một ngôn ngữ sẽ có nhiều compilers khác nhau (compiler của Microsoft, compiler GNU… tôi sẽ nói về chúng ở những chương sau). Rất may mắn là những compiler đó gần như giống nhau (đôi khi chúng có những khác biệt nhỏ và tôi sẽ chỉ cho bạn). Cuối cùng, chương trình nhị phân được tạo ra bởi compiler được gọi là: executable. Các chương trình này trên Windows có đuôi “.exe” giống như EXEcutable.
Tại sao chọn học C/C++?
Như tôi đã nói với bạn ở trên, có rất nhiều ngôn ngữ bậc cao. Chúng ta sẽ bắt đầu bằng một trong số đó. Nhưng mà bạn phải có một sự lựa chọn giữa:
- Một ngôn ngữ lập trình có bậc rất cao: dễ dàng sử dụng, “thông dụng”, như Visual basic. Nhưng các ngôn ngữ này có rất nhiều khuyết điểm: đầu tiên là phải mua bản quyền để sử dụng, giá thành mắc, và bị nhiều hạn chế. Ví dụ, chương trình mà bạn viết sẽ chỉ chạy được trên Windows, đừng nghĩ đến việc chạy nó trên Linux hay Macinstosh! Hay trên hết, bạn không có thể làm tất cả những gì bạn muốn với dạng ngôn ngữ này, và điều đó khiến bạn cảm thấy hạn chế khi sử dụng.
- Một ngôn ngữ khác ở vị trí tương đối thấp hơn (nhưng nó không thấp lắm đâu!): có thể nó sẽ hơi khó hơn visual basic, nhưng chắc chắn một điều là với một ngôn ngữ như C (hay C++) sẽ giúp bạn học thêm rất nhiều trong việc lập trình cũng như hiểu thêm cách hoạt động của máy tính. Và sau đó hoàn toàn đủ khả năng học thêm một vài ngôn ngữ khác nếu bạn muốn. Bạn sẽ tự chủ hơn. Mặt khác, ngôn ngữ C và C++ được sử dụng khá rộng rãi. Nó được dùng để lập trình phần lớn các chương trình bạn biết. Cuối cùng, để lập trình trên C hay C++, bạn không cần phải mua bất kì chương trình nào vượt ngoài túi tiền của bạn, vì ngôn ngữ này hoàn toàn miễn phí!
Và đó là lý do thúc đẩy tôi hướng dẫn bạn ngôn ngữ C trước tiên. Tôi không hề nói rằng chúng ta bắt buộc phải bắt đầu từ đây, nhưng lựa chọn này sẽ giúp bạn có được những kiến thức bền vững về lập trình. Tôi xem như đây chính là ngôn ngữ lập trình đầu tiên của bạn, và bạn không biết tí gì về lập trình trước đó. Cũng có thể, bạn đã biết lập trình rồi, nhưng việc học lại từ cơ bản không ảnh hưởng xấu tí nào phải không.
Khoan đã, có một cái mà tôi vẫn chưa hiểu: Tôi sẽ học một ngôn ngữ gọi là “C / C++” hay tôi sẽ học 2 ngôn ngữ khác nhau một là “C” và một là “C++”? Câu trả lời tốt nhất là bạn sẽ cùng lúc học cả 2 ngôn ngữ. Không phải là bạn phải tăng cường độ làm việc lên hai lần đâu mà là 2 ngôn ngữ này khá giống nhau. (Khi tôi nói đến 2 ngôn ngữ cùng lúc, tôi sẽ viết “C / C++”).
Và chúng ta phải hiểu rõ sự khác nhau giữa C và C++ trước khi bắt đầu:
- Giai đoạn đầu, lúc các máy tính có khối lượng tính bằng tấn và có kích thước to như ngôi nhà, người ta đã sáng tạo ra một ngôn ngữ lập trình gọi là Algol.
- Sau nhiều cải tiến, người ta đã tạo ra một ngôn ngữ mới gọi là CPL, và chính nó đã phát triển thành BCPL, sau đó nó được mang tên là ngôn ngữ B. (Các bạn không cần phải nắm tất cả những điều này, tôi viết ra chỉ để có thêm chút dáng vẻ về lịch sử mà thôi ).
- Và trong một ngày đẹp trời, người ta đã hoàn tất việc tạo ra một ngôn ngữ mới gọi là …ngôn ngữ C. Qua các sửa đổi, ngôn ngữ này vẫn là một trong những ngôn ngữ được sử dụng nhiều nhất cho đến hôm nay.
- Không lâu sau đó, người ta đề xuất thêm vào ngôn ngữ C một vài thứ để cải tiến, và ngôn ngữ mới này được gọi là ngôn ngữ C++ hoàn toàn dựa trên nền tảng của C. Ngôn ngữ C++ không có gì khác C ngoại trừ một số cái được thêm vào. (Những cái đó là gì? Chúng ta sẽ thấy về sau).
Có rất nhiều cách để học lập trình. Nhiều người nghĩ rằng tốt hơn hết là học ngay từ “C++”. Điều đó cũng đúng, chúng tương đối giống nhau, C++ chỉ là C được thêm vào “những dấu +”. Ngôn ngữ C không phải là “ngôn ngữ già cỗi bị lãng quên”, ngược lại nó được sử dụng rất nhiều trong thời đại hiện nay. Nó là nền tảng của những hệ điều hành lớn như Unix hay Windows. Nếu bạn bắt đầu bằng ngôn ngữ C, sau này bạn học ngôn ngữ C++ sẽ nhanh và dễ dàng hơn. Và bạn sẽ không cần phải học lại tất cả những gì đã biết, bạn chỉ cần học những cái được thêm vào ở “C++” (và đây chính là đều tôi cần nói ).
Có một số hiểu lầm khi có người cho rằng ngôn ngữ C++ tốt hơn C, thật ra thì nó chỉ cho phép bạn lập trình theo cách khác. Có thể nói, nó chỉ giúp việc lập trình của ta nhanh hơn và dễ dàng hơn trong việc tổ chức mã nguồn của chương trình.
Nắm vững vấn đề: C và C++ không phải là 2 ngôn ngữ cạnh tranh, đối lập với nhau. Chúng ta đều có thể dùng 2 ngôn ngữ này lập trình những cái tương tự. Chỉ là dùng 2 phương pháp lập trình khác nhau . Điều thuận lợi hơn là sau này có thể dùng C hay C++ tùy theo ý muốn và mục đích của các bạn.
Lập trình có khó không?
Đây chính là câu hỏi khiến bạn phải suy nghĩ nhiều đúng không? Và có phải chúng ta bắt buộc phải là một nhà toán học cực giỏi sau nhiều năm học tập để có thể bắt đầu với việc lập trình? Câu trả lời khiến bạn yên tâm hơn là điều đó không đúng. Bạn không cần phải có một đẳng cấp toán học thật cao. Những kiến thức bạn cần để bắt đầu học Phép cộng (Tôi hi vọng bạn đã nắm vững nó )
- Phép trừ (hic… hic… )
- Phép nhân ( …)
- Phép chia
Tôi hi vọng các bạn đã biết tất cả những phép tính đó. Và chắc chắn là tôi sẽ giải thích cho bạn trong phần tiếp theo, làm sao máy tính có thể thực hiện các phép tính cơ bản. Tóm lại, về toán học thì không có gì khó khăn để bạn vượt qua. Tất cả chỉ phụ thuộc vào chương trình mà bạn muốn thực hiện, nếu đó là chương trình liên quan đến toán học, bạn bắt buộc phải hiểu biết nhiều về toán. Nếu bạn muốn làm một game 3D thì đòi hỏi bạn phải có kiến thức về hình học không gian. Để học ngôn ngữ “C / C++”, bạn không cần thiết phải có những kiến thức cao cấp nào cả.
Nhưng đâu là cái khó khăn?
Chúng ta cần phải biết máy tính hoạt động như thế nào để có thể hiểu chúng ta đang làm những gì. Và ở điểm này, hãy yên tâm, tôi sẽ cố gắng hết sức để hướng dẫn cho các bạn.
Một người lập trình cũng cần phải có một vài đặc điểm như sau:
- Kiên trì: một chương trình có thể sẽ không chạy tốt trong giai doạn đầu, vì vậy bạn phải nhẫn nại!
- Tư duy tốt: chắc hẳn là bạn không cần phải giỏi lắm về toán, cái bạn cần là suy nghĩ một cách logic.
- Nhẹ nhàng: Người ta không đánh máy bằng việc gõ búa lên bàn phím. Điều đó cũng không giúp chương trình của bạn chạy tốt hơn tí nào đâu.
Tóm lại một cách đơn giản, việc học lập trình không đòi hỏi bạn phải thật sự có kiến thức chuyên sâu trong một lĩnh vực nào đó. Một người dốt toán vẫn có thể viết ra một chương trình, cái cần thiết chính là khả năng suy nghĩ của bạn.
Tổng Kết:
- Để tạo ra được một chương trình máy tính, người ta phải viết những chương trình đó dựa trên một loại ngôn ngữ mà máy tính có thể biên dịch lại để hiểu. Người ta gọi đó là “Ngôn ngữ lập trình”.
- Có rất nhiều loại ngôn ngữ máy tính được phân theo nhiều cấp độ. Những ngôn ngữ cao cấp thì dễ sử dụng hơn nhưng chưa chắc sẽ mang lại hiệu quả cao hơn những ngôn ngữ cấp thấp.
- Ngôn ngữ lập trình C mà chúng ta đang được học trong tài liệu này được gọi là ngôn ngữ cấp thấp và nó cũng đang là ngôn ngữ lập trình phổ biến nhất thế giới hiện nay.
- Source code là tập hợp văn bản do bạn viết ra thể hiện ý nghĩa của ngôn ngữ lập trình.
- Compiler là một chương trình biên dịch có khả năng dịch source code sang ngôn ngữ nhị phân, sau đó chuyển thành chương trình Executable (.exe). Chúng ta phải biết rằng trong chương trình nhị phân thì không còn chứa source code.
- Việc lập trình không đòi hỏi bạn phải có một kiến thức chuyên sâu về một lĩnh vực nào đó như Toán học (ngoại trừ một số trường hợp chương trình bạn viết đòi hỏi phải sử dụng những công thức toán học chuyên sâu, vd như các phần mềm mã hóa). Tuy nhiên, một tư duy logic, nhạy bén là điều thật sự cần thiết đối với một lập trình viên.
Chà! Chúng ta kết thúc bài 1 rồi, nhưng các bạn vẫn chưa thấy bất kì dòng code nào giống như chúng ta đã thống nhất trước đó. Trong chương tiếp theo, các bạn sẽ bắt đầu học cách lập trình với những công cụ đầu tiên. Bạn sẽ được hướng dẫn cài đặt những chương trình cần thiết cho bất kì người học lập trình nào.
TRẮC NGHIỆM KIẾN THỨC
Phần này sẽ giúp bạn kiểm tra lại kiến thức đã học được, bạn chỉ việc chọn câu trả lời đúng nhất thôi.
Những file nào được tạo ra từ việc lập trình ?
A. Những file *.exe chạy trên Windows
B. Những hình ảnh (*.jpg, *.png, *.bmp…)
C. Những đoạn vidéos (*.avi, *.mov…)
Giữa C và C++, ngôn ngữ nào cho phép ta lập trình tốt hơn ?
A. C
B. C++
C. Cả hai đều mạnh mẽ như nhau
Chương trình dịch ngôn ngữ cao cấp thành ngôn ngữ nhị phân gọi là :
A. Programer
B. Brumisateur
C. Compiler
Ngôn ngữ nào bạn sẽ học trong giai đoạn đầu ?
A. C
B. C++
C. Cả hai
Đáp án:
1- A
2- C
3- C
4- C
Một vài công cụ cần có để học lập trình
Sau bài mở đầu, chúng ta sẽ bắt đầu đi sâu vào bài học bằng cách trả lời câu hỏi “Cần sử dụng chương trình nào để lập trình?” Sẽ không có vấn đề gì quá khó khăn trong bài này, chúng ta sẽ dành chút thời gian để tìm hiểu về một số phần mềm mới. Hãy tận hưởng thời gian này bởi vì trong các bài tiếp theo, chúng ta sẽ thực sự học cách lập trình và có lẽ sẽ không có thời gian cho bạn “đánh một giấc” đâu nhé.
Những công cụ cần thiết cho việc lập trình:
Vậy theo bạn, chương trình mà chúng ta đang cần là gì ?
Nếu như các bạn có theo dõi kĩ nội dung bài học trước thì hẳn là bạn phải biết ít nhất 1 cái tên
nào đó chứ.
Bạn biết điều tôi đang muốn nói mà … đúng không ???
Vâng, đó là trình biên dịch (compiler), một chương trình chuyên dùng để biên dịch ngôn ngữ C/C++ của bạn sang ngôn ngữ nhị phân của máy tính. Như tôi đã từng nói sơ qua cho các bạn ở bài trước, chúng ta có 1 vài trình biên dịch phổ biến cho ngôn ngữ lập trình C/C++. Việc lựa chọn trình biên dịch nào thật sự không phải là vấn đề quá khó.
Nào, vậy ngoài ra chúng ta còn cần những gì nữa?
Tôi sẽ không để bạn phải thắc mắc thêm, dưới đây là những hành trang tối thiểu cho một lập trình viên:
- Một chương trình soạn thảo văn bản (text editor program) để viết mã nguồn (source code) của chương trình. Trên lý thuyết thì để thực hiện việc này chúng ta chỉ cần sử dụng phần mềm “Notepad” trong Windows hoặc “Vi” trong Linux là đủ. Nhưng sẽ lý tưởng hơn khi bạn sử dụng một trình soạn thảo văn bản có thể tô đậm màu sắc các thành phần trong mã nguồn nhằm giúp bạn xác định rõ ràng hơn khi cần thiết.
- Một chương trình biên dịch mã nguồn (compiler) để giúp dịch ngôn ngữ lập trình C/C++ của bạn sang ngôn ngữ nhị phân của máy tính.
- Một chương trình tìm và sửa lỗi (debugger) để giúp bạn theo dõi các lỗi trong chương trình của mình. Tin không vui là cho tới bây giờ chúng ta vẫn chưa phát minh ra chức năng “hiệu chỉnh” để sữa chữa những lỗi của chương trình. Điều đó cũng đồng nghĩa với việc nếu bạn đã nắm rõ cách hoạt động của debugger, nó sẽ giúp bạn tìm ra lỗi một cáchdễ dàng, chỉ vậy thôi.
Thời gian đầu, nếu bạn là người thích mạo hiểm thì bạn có thể làm việc mà không cần tới debugger nhưng tôi tin chắc rằng không sớm thì muộn bạn cũng sẽ cần đến nó thôi.
Từ những điều trên chúng ta sẽ thấy có 2 trường hợp:
- Để lập trình, chúng ta sẽ phải dùng 3 chương trình riêng biệt, và đây cũng là cách phức tạp nhất, nhưng sự thật là nó có thể hoạt động. Chẳng hạn như với Linux, nhiều lập trình viên vẫn thích sử dụng 3 chương trình riêng biệt cho công việc lập trình của họ. Tôi sẽ không nói chi tiết về việc này trong bài này mà tôi sẽ chỉ bạn một cách đơn giản hơn.
- Chúng ta có chương trình nào bao gồm 3 trong 1 không? Tức là một chương trình có chứa 3 thằng “text editor”, “compiler” và “debugger”. Câu trả lời là có và người ta gọi những chương trình này là IDE.
Chúng ta có một vài IDE phổ biến và sẽ có một chút khó khăn trong thời gian đầu để bạn có thể chọn cho mình một IDE phù hợp. Nhưng có một điều chắc chắn là trong mọi trường hợp, bạn đều có thể lập trình với bất kỳ loại IDE nào.
Chọn IDE phù hợp với bạn:
Sẽ khá thú vị khi giới thiệu cho bạn một vài IDE nổi tiếng nhất mà tôi biết. Dĩ nhiên tất cả đều là miễn phí, hehe. Cá nhân tôi hơi lộn xộn trong việc sử dụng IDE cho mình, tôi có thể dùng mỗi ngày một IDE khác nhau tùy cảm hứng.
- Một trong những IDE ưa thích của tôi đó là Code :: Blocks. Nó hoàn toàn miễn phí và hoạt động được trên hầu hết các hệ điều hành máy tính phổ biến ngày nay. Tôi khuyên bạn nên bắt đầu học lập trình với phần mềm này (thậm chí nó vẫn rất tốt cho tất cả mọi người về sau). Thằng này có thể chạy mượt mà trên Windows, Mac và Linux.
- Không thể không nhắc tới một sản phẩm nổi tiếng trên Windows, nó là phần mềm Microsoft Visual C ++. Có rất nhiều phiên bản tính phí (tất nhiên là mắc vcl). Nhưng may thay, có một phiên bản miễn phí tên là Visual C++ Express, thằng này thật sự rất ngon lành (nó chỉ khác phiên bản tính phí ở một số điểm nhỏ nhặt thôi). Phiên bản miễn phí này cung cấp các chức năng rất đầy đủ và có một bộ module hiệu chỉnh lỗi tuyệt vời (debugging). Em này thì tất nhiên là chỉ chạy được trong môi trường Windows.
- Đối với hệ điều hành Mac OS X, các bạn có thể sử dụng một phần mềm tên là Xcode, thường được cung cấp sẵn trên các đĩa cài đặt Mac OS X. IDE này được các lập trình viên làm việc trên hệ điều hành Mac đánh giá rất cao. Và hiển nhiên luôn, nó chỉ chạy được trên Mac OS X.
Lưu ý một chút với người dùng Linux: Có rất nhiều IDE cho hệ điều hành này, nhưng có vẻ những lập trình viên đã có kinh nghiệm lại thích thú với việc tách biệt mọi thứ ra thay vì sử dụng IDE 3 trong 1, cũng chỉ hơi khó hơn một chút thôi. Trong trường hợp của chúng ta bây giờ, tôi khuyên các bạn nên cài đặt Code :: Blocks dù bạn đang dùng Linux, chủ yếu là để có thể thuận tiện hơn trong việc theo dõi bài viết của tôi thôi.
Vậy thì cái IDE nào là tốt nhất?
Tất cả những IDE tôi vừa giới thiệu cho bạn đều có thể giúp bạn lập trình tốt mà không có vấn đề gì. Có thể sẽ có cái này cung cấp nhiều tùy chọn tốt hơn, cái kia lại cho ta trực quan sinh động dễ nhìn, dễ xài hơn. Nhưng trong mọi trường hợp, chương trình mà bạn tạo ra sẽ đều giống nhau dù cho bạn sử dụng IDE nào. Vì vậy đừng quá quan trọng hóa việc lựa chọn IDE tốt nhất.
Nói từ nãy đến giờ thì tôi quyết định sẽ sử dụng Code :: Blocks. Nếu bạn muốn theo dõi những gì tôi sắp nói dưới đây một cách trực quan sinh động nhất, tôi nghĩ bạn nên cài đặt phần mềm này đầu tiên.
Code :: Blocks (Windows, Mac, Linux)
Code :: Blocks IDE là hoàn toàn miễn phí và có thể cài đặt được trên hệ điều hành Windows, Mac và Linux.
Hiện tại IDE này chỉ mới có phiên bản tiếng Anh thôi, đừng để điều này ngăn cản bạn sử dụng nó.
Hãy nhớ rằng, trong suốt quá trình học lập trình, bạn sẽ còn bắt gặp nhiều tài liệu khác được viết bằng tiếng Anh, và bây giờ chúng ta lại có thêm 1 lý do chính đáng để trau dồi khả năng ngoại ngữ đúng không nào.
Xin mời bạn tải Code :: Blocks về theo link này http://www.codeblocks.org/downloads/binaries (hoặc có thể lên google search là ra ngay thôi mà).
- Nếu bạn là người dùng Windows, hãy tải về phiên bản có đuôi “mingw-setup.exe”, bởi vì chỉ có phiên bản này mới tích hợp sẵn compiler trong đó, nếu tải những phiên bản khác thif bạn sẽ phải vất vả để biên dịch chương trình đấy.
- Nếu bạn đang dùng Linux thì chỉ việc chọn phiên bản phù hợp với nhà phân phối hệ điều hành của bạn.
- Cuối cùng là với Mac OS X, chỉ đơn giản là tải về phiên bản mới nhất trong danh sách các phiên bản mà bạn nhìn thấy trên website.
Hãy cẩn thận tải cho đúng phiên bản cho hệ điều hành Windows của bạn. Bạn có thể xem hình dưới để rõ hơn.


Quan sát hình trên chúng ta thấy có 4 vùng lớn được đánh số, tôi sẽ giới thiệu sơ cho các bạn về chúng nhé:
- Thanh công cụ (toolbar): Nó chứa rất nhiều nút chức năng nhưng chỉ một số ít trong đó là được sử dụng thường xuyên. Tôi sẽ nói về những nút này sau.
- Danh sách các tập tin dự án (list of project files): Khu vực bên trái này hiển thị danh sách các tập tin có chứa mã nguồn (source code) trong chương trình của bạn. Lưu ý rằng hình ảnh này được chụp khi chưa có project nào được tạo, do đó bạn không thấy bất kỳ danh sách tập tin nào được hiển thị.
- Khu vực chính (main area): Đây chính là chỗ dành cho bạn viết mã nguồn (source code).
- Khu vực thông báo (notification area): Hay còn được gọi là “death zone” – vùng chết chóc, nơi này sẽ hiển thị lỗi biên dịch nếu mã của bạn có vấn đề, và điều này vẫn thường xuyên xảy ra.
Nào, hãy nhìn vào hình dưới và để ý tới 4 nút đặc biệt trên thanh công cụ. Bạn sẽ thấy các nút chức năng đó theo thứ tự: Buil, Run, Build and Run, Rebuild. Tất cả những nút chức năng này sẽ được sử dụng rất thường xuyên:
Tôi sẽ nói cho bạn biết chức năng của những nút này:
Build: Hay còn gọi là biên dịch. Nút chức năng này sẽ chuyển tất cả các tập tin chứa mã nguồn trong dự án của bạn đến trình biên dịch để thực thi những tác vụ. Nếu xảy ra lỗi (chắc chắn là sẽ xảy ra ko sớm thì muộn thôi), thực thi sẽ không hoàn thành và bạn sẽ nhìn thấy thông báo ở khu vực bên dưới Code :: Blocks như phần trên đã giới thiệu.
Run: Hay còn gọi là chạy chương trình. Nút này giúp chương trình của bạn chạy lên sau khi đã được biên dịch, điều này giúp bạn kiểm tra xem chương trình bạn viết hoạt động như thế nào, có đúng như ý bạn muốn. Theo như thứ tự thì bạn sẽ biên dịch trước rồi sau đó chạy chương trình, nhưng có một nút thứ 3 giúp bạn hợp 2 quá trình này lại trong 1 cú click chuột…
Build and Run: Chắc hẳn là bạn không cần phải là một thiên tài để hiểu được cái nút thứ 3 này chỉ là một sự giao lưu – kết hợp từ 2 nút đầu tiên. Đây dường như sẽ là nút bạn dùng thường xuyên nhất. Lưu ý rằng, nếu có bất kỳ lỗi nào xảy ra trong quá trình biên dịch, chương trình sẽ không chạy được và tất cả những gì bạn nhận được là một đống thông báo lỗi ở phía dưới nhé.
Rebuild: Biên dịch lại. Khi bạn biên dịch chương trình thì thực tế, Code :: Blocks sẽ biên dịch lại những tập tin mà bạn đã thay đổi. Đôi khi … ý tôi là đôi khi thôi nhé … bạn sẽ cần Code :: Blocks biên dịch lại tất cả các tập tin. Chúng ta sẽ được biết khi nào chúng ta cần sử dụng chức năng này và cụ thể những gì nó sẽ làm trong những bài tiếp theo. Tại thời điểm hiện tại tôi nghĩ chúng ta không nên nhồi nhét quá nhiều. Tạm thời nút chức năng gần như không cần thiết đối với chúng ta.
Tôi cũng khuyên các bạn nên tập thói quen sử dụng các phím tắt thay vì nhấp chuột vào các nút chức năng. Việc này sẽ giúp các bạn tiết kiệm được khá nhiều thời gian và nó diễn ra rất thường xuyên. Chẳng hạn như để Build and Run, các bạn chỉ cần bấm F9 là được.
Cách tạo một dự án (Project) mới:
Để tạo một project mới, thật sự rất đơn giản: Bạn chỉ cần chọn File / New / Project… hoặc nhấp chuột thẳng vào dòng Create new project trên khu vực chính trước mặt bạn.


Trong cửa sổ vừa mở ra (xem hình sau), chọn Console application.
Như bạn thấy, Code::Blocks đề xuất rất nhiều loại chương trình khác nhau sử dụng các thư viện phổ biến như SDL (2D), OpenGL (3D), Qt và wxWidgets (Windows) …Hiện tại thì những biểu tượng này chỉ để nhìn cho đẹp thôi chứ chúng vẫn chưa được cài đặt trên máy tính của bạn, bạn nên lướt qua chúng.
Chúng ta sẽ tập trung vào các loại chương trình khác ở các bài học sau này, thời gian này chúng ta sẽ phải nắm vững về “Console” trước, bởi vì thật sự bạn vẫn chưa đủ trình độ để làm việc với các loại chương trình khác đâu.
Tiếp theo bấm Go để tạo một project mới.
Chương trình sẽ hỏi bạn muốn tạo project cho ngôn ngữ C hay C++. Hãy chọn C và click next.
Chương trình sẽ yêu cầu bạn đặt tên cho project và chọn khu vực lưu trữ nó. Sau đó bấm next.
Ở cửa sổ cuối cùng này chúng ta có thể chọn compiler để biên dịch chương trình sau này. Tôi thường chọn compiler tên GNU GCC và để tất cả như mặc định. Đừng quên đánh dấu chọn vào 2 ô chức năng Debug và Release nhé.
Cuối cùng chỉ cần bấm Finish là xong.
Code::Blocks đã giúp bạn tạo một dự án mới với một chút mã nguồn (source code) được viết sẵn trong đó. Nhìn vào phía bên trái màn hình ở khu vực hiển thị danh sách tập tin mã nguồn. Để hiển thị các tập tin cần thiết. Ít nhất bạn sẽ thấy 1 tập tin đó là main.c
Trong tập tin này bạn sẽ thấy được vài dòng code mặc định được viết sẵn khi nhấp chuột trái 2 lần vào nó.
Vậy là các bước giới thiệu về IDE Code::Blocks đã xong và bạn đã biết cách tạo project cho riêng mình rồi đúng không.
Tạm thời tôi xin phép không hướng dẫn cách cài đặt 2 IDE còn lại (Visual Studio Express và Xcode). Nhưng tôi nghĩ các bạn hoàn toàn dư sức thực hiện những thao tác này đúng không. Còn về link tải phần mềm thì chỉ cần nhờ Google là được đúng không nào.
Tổng kết
- Để bắt đầu học lập trình bạn cần có tối thiểu 3 công cụ: Trình soạn thảo văn bản (text editor), trình biên dịch (compiler) cùng với một trình tìm và sửa lỗi (debugger).
- Các bạn có thể cài những chương trình trên riêng biệt hoặc cài một chương trình bao gồm 3 trong 1, gọi là IDE.
- Code::Blocks, Visual Studio Express, Xcode là những IDE rất phổ biến và thích hợp chocác bạn trong thời điểm hiện tại.