Thứ Hai, 12 tháng 10, 2020

Lập trình C++ Basic | #5. Chú thích trong C++

Chương 2: CÁC KHÁI NIỆM CƠ BẢN TRONG C++
Do your c, c plus plus or c sharp assignments by Rajarjs

2.3 Cú pháp của chú thích (comment) trong C++


Trong lập trình, Comment là một dòng hoặc nhiều dòng văn bản, được chèn vào source code chương trình, nhằm làm cho source code trở nên dễ hiểu hơn với người đọc, được bỏ qua bởi compiler và interpreter. Trong C++, có 2 loại comment:

2.3.a. Ký hiệu: //: dùng cho comment 1 dòng. Với loại comment này, compiler sẽ bỏ qua mọi thứ từ ký hiệu // đến cuối dòng. Ví dụ:

  • Những bình comment này được dùng để giải thích cho 1 dòng code

cout << "Hello World!" << endl; // Mọi thứ bên phải ký hiệu này đều bị bỏ qua
cout << "Duy Tan University!" << endl; // Dùng để giải thích cho dòng code này
cout << "Nice to meet you!" << endl; // Hạn chế comment theo cách này
cout << "Hello PNU CS211!" << endl; // Đặc biệt với dòng code dài

  • Thông thường, comment // bên phải dòng code là không được khuyến khích, vì nó sẽ gây khó đọc cho cả code và comment của bạn, đặc biệt đối với những dòng code dài. Vì vậy, comment // thường được đặt phía trên của dòng code cần giải thích. Ví dụ:
// Mọi thứ bên phải ký hiệu này đều bị bỏ qua
cout << "Hello World!" << endl;
// Dùng để giải thích cho dòng code này
cout << "Duy Tan University!" << endl;
// Không nên comment theo cách này
cout << "Nice to meet you!" << endl;
// Đặc biệt với dòng code dài
cout << "Hello PNU CS211!" << endl;

2.3.b. Ký hiệu: /* và */: dùng cho comment nhiều dòng. Với loại comment này, compiler sẽ bỏ qua mọi thứ ở giữa ký hiệu /* và */. Ví dụ:

  • Đây là comment nhiều dòng đơn giản:
/*
Đây là comment nhiều dòng
Mọi thứ bên trong ký hiệu này sẽ được bỏ qua
Bạn có thể viết cả bài văn vào đây...
*/
  • Bạn có thể comment giữa dòng code của bạn. Ví dụ:
return /* Bỏ qua mọi thứ trong này */ 0;
  • Hoặc bạn cũng có thể làm cho comment đẹp hơn bằng cách:
/*
 * Đây là comment nhiều dòng
 * Mọi thứ bên trong ký hiệu này sẽ được bỏ qua
 * Bạn có thể viết cả bài văn vào đây...
 */

2.3.c. Quy tắc: comment nhiều dòng không được lồng nhau. Ví dụ:

/* Đây là comment cha /* comment con */ lỗi rồi */
// Comment 1 dòng /* comment nhiều dòng */ vẫn là comment

2.4 Mộ số kinh nghiệm comment trong lập trình

Bạn đã nắm được các loại comment trong C++. Nhưng mới chỉ nắm được cú pháp không thôi vẫn chưa đủ, bạn cần phải biết sử dụng nó như thế nào cho hợp lý. Dưới đây là một số kinh nghiệm khi comment trong lập trình:

2.4.a. Ở mức library, program hoặc function, một good comment sẽ mô tả được library, program hoặc function đó có nhiệm vụ gì:

//************************************
// Description: Thư viện này khai báo các standard input/output stream objects (iostream)
//************************************
#include <iostream>
//************************************
// Description: Chương trình tính thời gian xây được nhà dựa vào nơi bạn sống và ngành nghề của bạn
//************************************
double TinhThoiGianXayNha(string address, string job)
//************************************
// Description: Hàm sắp xếp mảng bằng thuật toán quick sort.
//************************************
void QuickSort(int * arr, int left, int right)

Những comment như trên sẽ giúp người khác nhanh chóng hiểu được một library, program hoặc function đó có mục đích gì, mà không cần phải nhìn vào những đoạn code của nó. Thông thường, những comment ở mức library có thể nằm trong file readme.txt, hoặc trên main function đối với một program.

2.4.b. Bên trong library, program hoặc function, một good comment sẽ mô tả được library, program hoặc function đó thực hiện như thế nào:

void QuickSort(int * arr, int left, int right)
{
//////////////////////////////////////////////////////////////////////////
//
// Để sắp sếp bằng thuật toán quick sort, hàm thực hiện theo các bước bên dưới:
// 1. Tìm một giá trị trục
// 2. Di chuyển tất cả phần tử lớn hơn hoặc bằng giá trị trục sang phải
// 3. Di chuyển tất cả phần tử nhỏ hơn giá trị trục sang trái
// 4. Sắp sếp đệ quy cho 2 mảng con bên trái và bên phải
//
//////////////////////////////////////////////////////////////////////////
// code here...
}

2.4.c. Commenting out code

Comment không chỉ dừng ở mục đích giải thích đoạn code của bạn. Đôi khi bạn sẽ gặp vài tình huống như:

  • Bạn đang cần chạy một chương trình, và có vài dòng code trong chương trình của bạn đang gặp lỗi nên compiler không cho phép. Nhưng bạn muốn chạy chương trình ngay.
  • Bạn đang nâng cấp một đoạn code, bạn muốn giữ đoạn code cũ để tham khảo cho đến khi đoạn code mới của bạn hoàn thành. Hoặc để phục hồi lại đoạn code cũ nếu đoạn code mới của bạn chạy gặp vấn đề.

Khi gặp những tình huống này, bạn có thể dùng comment out code, mọi đoạn code mà bạn comment sẽ được bỏ qua bởi compiler. Ví dụ:

// const int n = 69;

// cout << "Hello Duy Tan Univetsity!" << endl;


Lập trình C++ Basic | #4. Cấu trúc của một chương trình C++

Chương 2: CÁC KHÁI NIỆM CƠ BẢN TRONG C++


Do your c, c plus plus or c sharp assignments by Rajarjs

2.1 Các thành phần (cấu trúc) của một chương trình C++

Trước tiên, bạn cần nắm rõ cấu trúc của một chương trình máy tính gồm những gì.

a. Thư viện chuẩn C++ (C++ Standard Library)

Thư viện là một tập hợp các mã được biên dịch sẵn, được đóng gói lại để lập trình viên sử dụng, mà không cần phải viết lại. Ví dụ: bạn viết một chương trình tính toán, bạn có thể include thư viện toán học…

b. Các câu lệnh và biểu thức (Statements and expressions)

  • Phổ biến nhất trong một chương trình máy tính là câu lệnh (Statements). Trong C++, câu lệnh là đơn vị độc lập nhỏ nhất. Mỗi câu lệnh sẽ là một yêu cầu Compiler thực hiện một nhiệm vụ nhất định.
  • Câu lệnh trong C++ kết thúc bằng một dấu chấm phẩy “;”.

Ví dụ:
 một số câu lệnh cơ bản trong C++:

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std; 

int main()

{
int age;
age = 10;
cout << " Toi moi " << age << " tuoi.\n";
cout << " Toi con qua tre de choi game.\n";
system("pause");

    return 0;
}

Trong đoạn code trên:

  • Các dòng #include để thêm vào các thư viện lập trình.
  • using name space std (tạm dịch là không gian tên) là một cơ chế trong C++ cho phép chúng ta phân nhóm các thực thể như class, object, function thành những nhóm riêng biệt, mỗi nhóm đó được đặt cho một cái tên, gọi là không gian tên (namespaceint age là câu lệnh khai báo, và age là một biến số nguyên. Biến được khai báo là tên gọi cho một vùng trong bộ nhớ, dùng để lưu giá trị và có thể thay đổi được. Biến phải được khai báo trước khi sử dụng. Phần này sẽ được nói đến trong bài BIẾN TRONG ++.age = 10 là lệnh gán. Nó dùng để gán một giá trị cho một biến, giá trị đó có thể là một giá trị cụ thể, hoặc là kết quả của một biểu thức, một hàm.
  • cout << " Toi moi " << age << " tuoi.\n" là một câu lệnh xuất thuộc thư viện iostream, nó sẽ xuất ra màn hình một câu thông báo bất kỳ hoặc có thể kèm theo giá trị của một biến.
  • using name space std (tạm dịch là không gian tên) là một cơ chế trong C++ cho phép chúng ta phân nhóm các thực thể như class, object, function thành những nhóm riêng biệt, mỗi nhóm đó được đặt cho một cái tên, gọi là không gian tên (namespace).
  • int age là câu lệnh khai báo, và age là một biến số nguyên. Biến được khai báo là tên gọi cho một vùng trong bộ nhớ, dùng để lưu giá trị và có thể thay đổi được. Biến phải được khai báo trước khi sử dụng. Phần này sẽ được nói đến trong bài BIẾN TRONG ++.
  • age = 10 là lệnh gán. Nó dùng để gán một giá trị cho một biến, giá trị đó có thể là một giá trị cụ thể, hoặc là kết quả của một biểu thức, một hàm.
  • cout << " Toi moi " << age << " tuoi.\n" là một câu lệnh xuất thuộc thư viện iostream, nó sẽ xuất ra màn hình một câu thông báo bất kỳ hoặc có thể kèm theo giá trị của một biến.

c. Hàm (Functions)
Hàm là một nhóm các câu lệnh đi cùng nhau, để thực hiện một nhiệm vụ. Mỗi chương trình C++ có ít nhất một hàm là hàm main()

Tiếp theo, chúng ta đã nắm được các thành phần của một chương trình là gì. Bây giờ, bạn hãy nhìn vào chương trình "Hello PNU CS211 Class" mà bạn đã xây dựng trong bài trước:

#include <iostream>
using namespace std;

int main()
{
cout << "Hello PNU CS211 Class" << endl;
system("pause");
return 0;
}

Trong đoạn code trên:


  • Dòng 1: Đây gọi là một chỉ thị tiền xử lý, là một dạng câu lệnh đặc biệt. Dòng này yêu cầu compiler bổ sung thêm nội dung của iostream header vào chương trình. iostream header sẽ cho phép bạn truy cập vào các function trong iostream library.
  • Dòng 2: Dòng này cho biết chương trình của bạn sẽ sử dụng namespace std (là một standard namespace được định nghĩa sẵn một lượng lớn các class, object, function thường được sử dụng) là namespace mặc định. Khi tham chiếu đến các class, object, function trong namespace std thì không cần tiền tố std::. Exp: Nếu không khai báo namspace std, thì dòng số 6 bạn phải viết là cout << "Hello PNU CS211 Class" << endl;
  • Dòng 3: Compiler sẽ bỏ qua dòng trống.
  • Dòng 4: Đây là khai báo main() function, mỗi chương trình C++ phải có một hàm main(). Khi chương trình C++ được chạy, hàm main() sẽ được gọi đầu tiên, và những dòng code trong hàm main() sẽ được thực thi từ trên xuống dưới.
  • Dòng 5, 8: Mọi dòng code thuộc một hàm phải nằm trong phạm vi dấu {} của hàm đó.
  • Dòng 6: Là một câu lệnh, nó dùng để hiển thị câu “Hello PNU CS211 Class” ra màn hình. Cout là một đối tượng thuộc thư viện iostream, << là một output operator. Mọi thông điệp gửi đến cout thông qua toán tử << sẽ được hiển thị lên màn hình. Câu lệnh kết thúc bởi dấu “;”.
  • Dòng 7: là một câu lệnh return. Hàm main() có kiểu int nên bắt buộc phải có một câu lệnh return giá trị kiểu int. Khi chương trình thực thi kết thúc, hàm main() sẽ return một giá trị cho hệ điều hành, dù nó chạy thành công hay không.
    • Nếu giá trị trả về là 0, nghĩa là mọi thứ đã chạy thành công.
    • Nếu giá trị trả về khác 0, nghĩa là đã có gì đó đã chạy sai và chương trình đã dừng lại.
2.2. Cú pháp và lỗi cú pháp trong C++ (Syntax and syntax errors)

Cú pháp trong C++ là những quy tắc viết code khi xây dựng một chương trình. Khi bạn compile một chương trình, compiler sẽ đảm bảo chương trình của bạn đã đúng cú pháp ngôn ngữ C++ hay chưa. Nếu bạn vi phạm một quy tắc, dù nhỏ hay lớn thì compiler cũng sẽ thông báo cho bạn thông tin về lỗi đó, và bạn bắt buộc phải sửa nó.

  • Ví dụ: Trong hình bên dưới, bạn thử bỏ đi một dấu “;” sau dòng return 0. Compiler sẽ thông báo cho bạn về thông tin lỗi (mô tả lỗi, ở project nào lỗi, file nào lỗi, dòng nào lỗi) ở cửa sổ Error list. Từ đó bạn có thể dễ dàng fix nó.

Bài tập

a. Viết chương trình C++ để in các dòng sau:

Toi moi 10 tuoi.
Toi con qua tre de choi game.

#include <iostream>
using namespace std;

int main()
{
cout << " Toi moi 10 tuoi.\n";
cout << " Toi con qua tre de choi game.\n";
system("pause");
return 0;
}

b. Viết chương trình in các dấu * theo yêu cầu dưới đây:

*****

*****

*****

*****

***** 

#include <iostream>
using namespace std;

int main()
{
cout << "*****\n";
cout << "*****\n";
cout << "*****\n";
cout << "*****\n";
cout << "*****\n";
system("PAUSE");
return 0;
}

Bài tập chuỗi trong C++

  Bài tập chuỗi trong C++   (7) 668 lượt xem Chuỗi (String) trong C/C++ là một mảng ký tự được kết thúc bởi \0 (ký tự null). Dưới đây là các...