I. Khái niệm về chương trình và lập trình
1. Chương trình dịch và ngôn ngữ lập trình.
Máy tính điện tử hoạt động dựa trên lệnh của con người, nhưng nó không thể hiểu được ngôn ngữ thông thường mà con người sử dụng. Để diễn đạt các thuật toán sao cho máy tính có thể hiểu, ta sử dụng một tập lệnh được chuẩn hóa theo hệ thống quy tắc riêng, được gọi là ngôn ngữ lập trình.
Có ba loại ngôn ngữ lập trình:
-
Ngôn ngữ máy (Machine language): Đây là ngôn ngữ mà máy tính sử dụng, trong đó các lệnh được mã hóa thành các kí hiệu 0-1. Chương trình viết bằng ngôn ngữ máy có thể được nạp vào bộ nhớ và thực thi ngay lập tức.
-
Hợp ngữ (Assembly language): Được gọi là ngôn ngữ lập trình bậc thấp, hợp ngữ kết hợp giữa mã máy và các từ viết tắt tiếng Anh để diễn đạt câu lệnh.
-
Ngôn ngữ lập trình bậc cao (High-level programming language): Đây là loại ngôn ngữ sử dụng các từ khóa gần gũi với ngôn ngữ tiếng Anh để mô tả thuật toán. Ngôn ngữ lập trình bậc cao dễ viết vì gần với ngôn ngữ tự nhiên. Mức độ trừu tượng hóa của ngôn ngữ lập trình bậc cao có thể khác nhau. Trong khóa học này, chúng ta tập trung nghiên cứu ngôn ngữ lập trình bậc cao trung cấp, đặc biệt là ngôn ngữ C++ (thường được gọi là C/C++ do có nguồn gốc từ C).
Để chuyển đổi chương trình viết bằng ngôn ngữ lập trình bậc cao sang một chương trình có thể được máy tính thực thi, ta sử dụng một chương trình đặc biệt được gọi là chương trình dịch. Chương trình dịch nhận đầu vào là một chương trình viết bằng ngôn ngữ lập trình bậc cao và thực hiện chuyển đổi sang ngôn ngữ máy. Có hai loại chương trình dịch:
-
Chương trình thông dịch (Interpreter): Chương trình dịch kiểm tra tính đúng đắn của từng câu lệnh trong chương trình nguồn, sau đó chuyển đổi và thực thi từng câu lệnh đó sang ngôn ngữ máy. Quá trình này diễn ra theo chu kỳ, với chương trình dịch dịch và thực thi từng câu lệnh một.
-
Chương trình biên dịch (Compiler): Chương trình biên dịch duyệt qua toàn bộ chương trình nguồn, phát hiện lỗi và kiểm tra tính đúng đắn của mỗi câu lệnh, sau đó dịch toàn bộ chương trình nguồn sang ngôn ngữ máy và có thể lưu trữ để sử dụng lại khi cần.
Thường thì các môi trường lập trình sẽ tích hợp sẵn chương trình dịch cùng với các tính năng khác như soạn thảo, lưu trữ, giám sát biến số, v.v. Đối với C/C++, chúng ta có thể sử dụng các môi trường như CodeBlocks, Sublime Text, Visual Studio Code,... để phát triển chương trình.
2. Khái niệm về lập trình.
Lập trình là quá trình sử dụng cấu trúc dữ liệu và tập lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và biểu diễn các thao tác của thuật toán. Mỗi bài toán có thuật toán đều có thể được giải quyết bằng máy tính điện tử. Quá trình giải quyết một bài toán trên máy tính bao gồm các bước sau: Xác định bài toán, Xây dựng hoặc lựa chọn thuật toán khả thi, và cuối cùng là lập trình.
II. Giới thiệu ngôn ngữ lập trình C++
1. C++ là gì?
Ngôn ngữ lập trình C++ đã được phát triển bởi Bjarne Stroustrup vào năm 1979. Đây là một ngôn ngữ lập trình bậc trung, kết hợp các đặc điểm của ngôn ngữ lập trình bậc thấp và bậc cao, cho phép lập trình hướng cấu trúc và hướng đối tượng. Thực tế, C++ là một phiên bản nâng cấp của ngôn ngữ C, được phát triển từ ngôn ngữ C, vì vậy nó vẫn giữ được phong cách lập trình hướng cấu trúc của C và cung cấp thêm hỗ trợ cho lập trình hướng đối tượng. Do đó, người ta thường gọi hai ngôn ngữ này bằng một tên gọi chung là C/C++.
Vì được phát triển từ C, ngôn ngữ C++ vẫn bao gồm đầy đủ các câu lệnh và cú pháp của ngôn ngữ C. Trong quá trình lập trình C++, chúng ta thường sử dụng cú pháp của C và đặc biệt, trong lập trình thi đấu, vẫn giữ nguyên phong cách lập trình hướng cấu trúc của C, chia chương trình thành nhiều hàm nhỏ, mỗi hàm đảm nhận một công việc cụ thể. Việc này giữ được tính đơn giản và tốc độ trong giải quyết các bài toán. Các file được viết bằng ngôn ngữ C++ thường có phần mở rộng là .cpp.
2. Vì sao lại lựa chọn C++ trong lập trình thi đấu?
Trong lập trình thi đấu, học sinh - sinh viên thường lựa chọn Pascal và C++ là hai ngôn ngữ chủ đạo. Tuy nhiên, trong những năm gần đây, xu hướng sử dụng Pascal đã giảm dần, trong khi số người sử dụng C++ lại tăng lên. Có một số nguyên nhân chính khiến C++ trở nên phổ biến hơn trong lập trình thi đấu và lập trình nói chung:
- Dễ tiếp cận: Cú pháp của C++ rất dễ tiếp cận, gần gũi với ngôn ngữ hàng ngày và rất rõ ràng. Khi học lập trình, học sinh - sinh viên thường thấy rằng C++ dễ dàng hơn khi sử dụng nó để học thuật toán.
- Hiệu suất cao: Đây là một ưu điểm lớn của C++, đặc biệt là trong lập trình thi đấu khi các bài toán thường yêu cầu thời gian chạy chương trình tối ưu. So với Python, ví dụ, tốc độ chạy của C++ nhanh hơn đáng kể, mặc dù Python có cú pháp ngắn gọn nhưng lại chậm hơn về tốc độ thực thi.
- Thư viện hỗ trợ người dùng: C++ cung cấp nhiều thư viện có sẵn, giúp người dùng tiết kiệm thời gian và công sức trong quá trình lập trình, đặc biệt là với thuật toán và cấu trúc dữ liệu. Việc sử dụng thành thạo các thư viện trong C++ sẽ "mở rộng khả năng lập trình" của học sinh - sinh viên.
Tóm lại, C++ được ưa chuộng trong lập trình thi đấu và lập trình chung nhờ cú pháp dễ tiếp cận, hiệu suất cao và sự hỗ trợ bởi các thư viện đa dạng.
III. Làm sao để cài đặt môi trường lập trình Code::Blocks và tạo chương trình đầu tiên như thế nào?
1. Cách cài đặt Code::Blocks
Để lập trình bằng ngôn ngữ C++, chúng ta cần sử dụng một chương trình soạn thảo và một chương trình biên dịch. Một phần mềm phổ biến được sử dụng là Code::Blocks, nó cung cấp cả chức năng soạn thảo và biên dịch ngôn ngữ C++. Code::Blocks có giao diện đẹp và rất được học sinh - sinh viên lựa chọn.
Để tải về Code::Blocks, truy cập vào trang chủ của nó tại địa chỉ: https://www.codeblocks.org/. Trang web sẽ hiển thị giao diện như hình bên dưới. Bạn bấm vào mục "Downloads" ở góc bên trái màn hình.
Chọn vào mục Dowload the binary release:
Lựa chọn phiên bản phù hợp cho hệ điều hành máy tính của bạn. Trong giáo trình này sử dụng hệ điều hành Windows, đối với các hệ điều hành khác các bạn làm hoàn toàn tương tự:
Sau khi chọn hệ điều hành Windows trên trang web Code::Blocks, bạn sẽ thấy danh sách các phiên bản cài đặt. Để tải về phiên bản tích hợp trình biên dịch MinGW của C++, bạn có thể làm như sau:
- Nếu máy tính của bạn sử dụng hệ điều hành 64-bit, hãy nhấp vào đường liên kết phía trên. Nếu máy tính của bạn sử dụng hệ điều hành 32-bit, hãy nhấp vào đường liên kết phía dưới. Bạn có thể chọn một trong hai nguồn tải là FossHub hoặc Sourceforge.net, cả hai đều hỗ trợ tải về.
- Sau khi nhấp vào liên kết, hãy chờ khoảng 5 giây để quá trình tải về bắt đầu. Sau đó, bạn sẽ có thể tải về file cài đặt Code::Blocks tích hợp MinGW.
Lưu ý: Hãy đảm bảo chọn phiên bản phù hợp với hệ điều hành và kiến trúc của máy tính của bạn để đảm bảo sự tương thích và hoạt động ổn định.
Sau khi tải về, các bạn khởi chạy file cài đặt Code::Blocks.
Bấm Next để tiếp tục.
Bước này bấm vào I Agree để chấp nhận điều khoản cài đặt và tiếp tục.
Bước này cần lựa chọn các option cài đặt. Các bạn cứ để mặc định rồi bấm vào Next.
Bây giờ các bạn hãy lựa chọn thư mục mà bạn muốn cài đặt Code::Blocks vào:
- Thư mục (1) là vị trí cài đặt mặc định tại ổ C:
C:\Program Files\CodeBlocks
. - Phần ((2): Các bạn bấm vào Browse* để thay đổi thư mục cài đặt.
- Cuối cùng bấm vào Install (3) để bắt đầu cài đặt.
Quá trình cài đặt mất khoảng vài phút. Sau khi cài đặt xong, các bạn bấm vào Finish để kết thúc cài đặt.
2. Cách để tạo 1 project và chương trình C++ đầu tiên.
Sau khi cài đặt Code::Blocks thành công, khi bạn khởi chạy chương trình, giao diện sẽ xuất hiện như hình dưới đây. Khi bạn chạy Code::Blocks lần đầu, phần mềm sẽ hỏi xem bạn có muốn đặt nó làm phần mềm mặc định cho các file C++ không. Tuy nhiên, mình khuyên bạn nên chọn "No" (không) (dòng đầu tiên), vì có thể sau này bạn muốn sử dụng một phần mềm soạn thảo C++ khác.
Kế đến, các bạn chọn File →→ New →→ Project để tạo một dự án trong CodeBlocks.
Một khung như hình bên dưới sẽ hiện ra. Các bạn cần lựa chọn loại dự án của mình. Trong Code::Blocks hỗ trợ lập trình rất nhiều dự án khác nhau. Đối với lập trình thi đấu, các bạn hãy lựa chọn Console Application.
Lựa chọn ngôn ngữ là C++ rồi nhấn Next.
Điền tên dự án vào mục "Project title". Sau đó, chọn nơi lưu trữ dự án bằng cách nhấn vào biểu tượng dấu ba chấm (...) bên cạnh phần "Folder to create project in". Mình khuyên bạn nên chọn một thư mục cố định làm nơi lưu trữ các dự án C++ của mình. Sau khi chọn thư mục, nhấn "Next" để tiếp tục.
Nhấn vào finish để tiến hành tạo dự án.
Giao diện chương trình sẽ hiện ra như hình bên dưới. Ở đây do mình để chế độ màn hình màu đen nên mới có giao diện đen. Còn ban đầu khi cài đặt thì mặc định Code::Blocks sẽ có giao diện nền trắng. Các bạn quan sát ở thanh công cụ bên trái:
- Phần C++_First_Program chính là tên dự án mà mình vừa tạo ra.
- Mục Sources bên trong chứa các file chương trình của dự án. Mặc định sẽ có một file main.cpp, các bạn bấm vào file này sẽ hiện ra một chương trình như bên dưới.