Bước tới nội dung

Học C++/Cấu trúc

Tủ sách mở Wikibooks

Dưới đây là một đoạn code đơn giản để in 1 dòng chữ ra màn hình:

#include <iostream>
using namespace std;
int main()
{
   cout << "Wikibooks - Tủ sách mở cho một thế giới mở"; // In dòng chữ Wikibooks - Tủ sách mở cho một thế giới mở ra màn hình
   return 0;
}

Chương trình trên gồm các phần sau:

  • Dòng 1: Đây là lệnh khai báo sử dụng các hàm hay đối tượng có sẵn, đây là bộ nhập xuất chuẩn (đối với C là <stdio.h> và C++ là <iostream>). Lệnh dùng ở dòng 6 đã được định nghĩa sẵn trong bộ này.
  • Dòng 2: Đối với C++, ta cần khai báo không gian tên ngầm định là std để viết ngắn gọn dòng lệnh thứ 6. Nếu không, ta phải thay cout thành std::cout. (Ngôn ngữ C không cần điều này).
  • Dòng 3: Hàm main(), tại đây chương trình được thực thi. Lưu ý: int main trả về kết quả thuộc kiểu integer, còn void main thì không trả về giá trị nào. Vì vậy, int main thường được sử dụng nhiều hơn, do sẽ báo là hàm main đã kết thúc và có lỗi hay không.
  • Dòng 4 và 7: Chương trình được viết trong cặp dấu móc { }, gọi là một khối (block).
  • Dòng 5: Lệnh cout in dòng chữ "Wikibooks - Tủ sách mở cho một thế giới mở" ra màn hình. Để ghi chú điều gì đó, người ta thường bắt đầu bởi // đối C++ và đặt bên trong /* và */ đối với C. Dòng này không có ảnh hưởng gì đến chương trình.
  • Dòng 6: Kết thúc hàm main, trả về giá trị là 0.

Dấu chấm phẩy và khoảng trắng

[sửa]

Dấu chấm phẩy ; dùng để kết thúc một câu lệnh. Như Pascal và C, C++ không quan tâm bạn đặt bao nhiêu câu lệnh trên cùng 1 dòng. Ví dụ:

x = y;
y = y+1;

là tương đương với

x = y; y = y+1;

Một dòng chỉ chứa khoảng trắng được xem là một dòng chú thích, và chương trình hoàn toàn bỏ qua nó. Khoảng trắng sẽ giúp cho chương trình của bạn dễ đọc và trông đẹp mắt hơn. Ví dụ dưới đây, đoạn code này vẫn sẽ in ra màn hình với dòng chữ "Wikibooks - Tủ sách mở cho một thế giới mở".

#include <iostream>
using namespace std;

int main()

{
   cout << "Wikibooks - Tủ sách mở cho một thế giới mở"; // In dòng chữ Wikibooks - Tủ sách mở cho một thế giới mở ra màn hình
   return 0;
}

Định danh

[sửa]

Định danh (Identifier) trong C++ là tên được cho một biến, một hàm hoặc một hằng. Tên có thể được đặt bằng những chữ cái từ A đến Z, các số từ 0 đến 9 và dấu gạch dưới _. C++ là ngôn ngữ lập trình phân biệt kiểu chữ, nên sẽ có sự khác nhau giữa 2 định danh Wikibookswikibooks, ví dụ. C++ không cho phép các kí tự @, $ hay % bên trong định danh.

Để chương trình dễ hiểu, lập trình viên nên tuân thủ một số các quy ước đặt tên sau:

  • Tên phải gợi nhớ và có liên quan về mặt ngữ nghĩa với đối tượng được đặt tên. Ví dụ, muốn sử dụng một biến số để lưu diện tích thì có thể đặt là Dien_tich, DT hoặc S (ký hiệu thường dùng cho diện tích).
  • Tên đối tượng có thể được đặt theo quy ước riêng của một số tổ chức, cá nhân nào đó.

Nhập xuất và tính toán

[sửa]

Ta có thể sử dụng cout (trong C++) hoặc printf (trong C) để xuất dữ liệu ra màn hình. Để nhập dữ liệu từ bàn phím, ta có thể dùng cin (đối với C++) hoặc scanf (đối với C).

Ví dụ sau minh họa cho một chương trình nhập từ bàn phím và tính tổng 2 số vừa nhập:

#include <iostream>
using namespace std;

int main()
{
    int a, b, sum; // khai báo các biến có kiểu nguyên
    cout << "A = "; // in ra dòng chữ "A = "
    cin >> A; // người dùng nhập vào một số kiểu nguyên và lưu giá trị vào biến A
    cout << "B = "; // in ra dòng chữ "B = "
    cin >> B; // người dùng nhập vào một số kiểu nguyên và lưu giá trị vào biến B
    sum = A + B; // tính tổng A+B và lưu vào biến sum
    cout << "Tong cua A va B = " << sum << endl;
}

Ký hiệu endl (end line) dùng để kết thúc dòng để in dòng mới, có thể thay endl bằng \n.

Từ khóa

[sửa]

Dưới đây là một số những từ khóa trong C++. Những từ này không thể được dùng làm định danh cho bất kỳ biến, hằng hay hàm nào.

asm else new this
auto enum operator throw
bool explicit private true
break export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template