[Basic] Những khái niệm đầu tiên về C++

Chương trình C++ đầu tiên.

#include <iostream>

int main()
{
   
   std::cout << "Hello world!";
   
   return 0;

}

1. #include <iostream>

Các câu lệnh bắt đầu bằng dấu # là câu lệnh đặc biệt gọi là tiền xử lý (preprocessor directive), nói với trình biên dịch thực hiện 1 nhiệm vụ đặc biệt nào đó:

#include <> : Thêm nội dung của file header vào file được include.

#define : Định nghĩa 1 macro

#if, #else : Biên dịch theo điều kiện.

2. int main()

Hàm main là hàm đặc biệt trong C++.

Mỗi chương trình C++ có 1 hàm main duy nhất.

Chương trình C++ sẽ bắt đầu thực hiện từ đầu hàm main.

Kiểu trả về của hàm main là int

Kết thúc hàm về main sẽ trả lại 1 giá trị để báo với hệ điều hành là chương trình thực hiện đúng hay sai:

  • Return 0 : thực hiện chương trình thành công không có lỗi xảy ra
  • Return khác 0 : Có lỗi xảy ra trong chương trình, tùy vào giá trị mà hiển thị lỗi

Chú ý :

  • Trong C++ chuẩn hàm main CHỈ trả về giá trị int.
  • Một số trình biên dịch có thể hỗ trợ kiểu void, ta không nên dùng.

Comment trong C++

Comment có thể 1 dòng (hoặc nhiều dòng) dùng để giải thích đoạn code chúng ta viết.

  • Sử dụng ” // nội dung comment “ cho comment trên 1 dòng

Ví dụ :

//in ra màn hình dòng chữ "Hello world"
std::cout << "Hello world!";
  • Sử dụng ” /* nội dung comment */ “ cho comment trên nhiều dòng

Ví dụ :

/* 
* Đây là ví dụ
* Comment trên nhiều dòng
* Cho các bạn xem cú pháp
*/

Nên sử dụng comment cho code mình viết ra để giải thích cho người khác đọc code hoặc 1 thời gian sau ta đọc lại vẫn hiểu code ta đã viết.

Nội dung comment nên sử dụng:

  • Ở mức library, chương trình, hàm, comment nên trả lời câu hỏi nó làm gì – What
  • Ở trong libray, chương trình, hàm, comment nên trả lời câu hỏi làm như thế nào – How
  • Với biến và câu lệnh comment nên trả lời câu hỏi tại sao nó tồn tại – Why

Biến (variables), khởi tạo (initialization) và gán (assignment)

  • Biến đơn giản là đối tượng có tên, được lưu trữ trong bộ nhớ.
  • Một biến bao gồm kiểu dữ liệu và định danh (name)
  • Để tạo 1 biến chúng ta sử dụng câu lệnh được gọi là định nghĩa biến (variable definition)

Ví dụ :

int result; // int - kiểu dữ liệu, result - định danh biến.

l-values and r-values

l-values

  • l-values là 1 biến, biểu thức có địa chỉ trong bộ nhớ, có thể thay đổi được giá trị.
  • l-values được sử dụng bên trái câu lệnh gán.

r-values

  • r-values là bất kỳ giá trị nào có thể gán cho l-values.
  • r-values luôn tạo ra giá trị duy nhất để gán cho l-values

Ví dụ :

int y; // Định nghĩa biến y là kiểu int

y = 4; // y là l-values; 4 là r-values

Khởi tạo (Initialization) và gán (assignment)

  • Khi định nghĩa 1 biến và cho nó giá trị ban đầu gọi là khởi tạo.

Ví dụ :

int val = 10; //Initialization
  • Sau khi đinh nghĩa, biến được gán giá trị thông qua toán tử gán (=) gọi là gán (assignment).

Ví dụ :

int val;

val = 10; //assignment

Undefined behavior

Kết quả thực hiện code có hành vi không được quy định rõ ràng trong ngôn ngữ.

Mỗi trình biên dịch có thể cho kết quả khác nhau.

Xem chi tiết UB tại : Undefine behavior

Chú ý :

  • Cần tránh viết code để dẫn tới Undefined behavior.

Từ khóa và định danh trong C++

Các từ khóa trong C++

alignas **
alignof **
and
and_eq
asm
auto
bitand
bitor
bool *
break
case
catch
char
char16_t **
char32_t **
class
compl
const
constexpr **
const_cast *
continue
decltype
default
delete
do
double
dynamic_cast *
else
enum
explicit *
export *
extern
false *
float
for
friend
goto
if
inline
int
long
mutable *
namespace *
new
noexcept **
not
not_eq
nullptr **
operator
or
or_eq
private
protected
public
register
reinterpret_cast *
return
short
signed
sizeof
static
static_assert **
static_cast *
struct
switch
template
this
thread_local **
throw
true *
try
typedef
typeid *
typename *
union
unsigned
using *
virtual
void
volatile
wchar_t *
while
xor
xor_eq

Quy tắc đặt tên trong C++

Đặt tên trong C++ bắt buộc phải tuân theo các quy tắc dưới đây:

  • Tên không được trùng với từ khóa
  • Tên chỉ bao gồm ký tự, chữ số và dấu gạch dưới (tên không được chứa bất kỳ ký hiệu nào khác kể cả khoảng trắng)
  • Tên phải bắt đầu bằng ký tự hoặc dấu gạch dưới, KHÔNG được bắt đầu bằng số.
  • Tên phân biệt chữ hoa và chữa thường (NAME # Name)

Ví dụ:

int _age;  //Tên hợp lệ

string 1name; //không hợp lệ vì bắt đầu bằng số

int tuoi ban;  // Không hợp lệ vì chứa khoảng trắng

Một số quy ước đặt tên nên dùng

Nên đặt tên theo quy ước để chương trình ta viết ra sáng sủa, dễ đọc, dễ hiểu.

  • Tên biến và hàm nên bắt đầu bằng chữ cái thường (camel Case).

Ví dụ :

int myVariableName = 10; 

int myFuncName()
{
   
   //TODO

}
  • Biến bool hoặc hàm trả về kiểu bool nên bắt đầu với tiền tố “is”, “has”, “can”.

Ví dụ :

bool isPrime = true;

bool isPrime(int number)
{
   
   // TODO
   
   return true;

}
  • Tên class, struct, enum nên bắt đầu bằng chữ cái in hoa (Pascal Case)

Ví dụ :

class Student
{
   
   //Member class

}
  • Đặt tên nên có nghĩa thể hiện chức năng của nó làm gì

Ví dụ :

//Kiểm tra 1 số nguyên có phải là số nguyên tố ko
bool isPrime(int number)
{
   
   // TODO
   
   return true;

}

Chú ý :

  • Tránh đặt tên bằng ký tự vô nghĩa
  • Chỉ nên đặt tên biến là ký đơn khi sử dụng trong vòng lặp 

Ví dụ :

int a, b, x, y, z; // Không nên đặt tên ký tự vô nghĩa

for (int i = 0; i < 10; i++) // Nên sử dụng ký tự đơn trong vòng lặp
{
   
   //TODO

}

Was this article helpful?

Leave A Comment?