Thứ Bảy, 27 tháng 4, 2024

14. Define và Using trong C++

Define

Define có 3 chức năng chính :


  •     Định nghĩa tên cho kiểu dữ liệu
  •     Định nghĩa tên cho giá trị
  •     Định nghĩa tên cho cấu trúc hoặc câu lệnh


Định nghĩa tên cho kiểu dữ liệu

Define có thể sử dụng để làm công việc tương tự như typedef đó là định nghĩa tên mới cho kiểu dữ liệu

Cú pháp : #define tên_mới kiểu_dữ_liệu




Định nghĩa tên cho giá trị

Define được sử dụng để đặt tên cho các giá trị được sử dụng trong chương trình nhằm mục đích truyền tải ý nghĩa tốt hơn

Cú pháp :  #define tên_giá_trị giá_trị

Chúng ta vẫn thử trên chương trình tào lao. Ta sẽ xóa dòng lệnh

//typedef long long ll;

Và thay bằng 


#define ll long long

Lưu ý dấu # trước define và sau long long không có dấu ;

Chương trình của chúng ta như sau:


 #include <iostream>
#include <iomanip>

using namespace std;
//typedef long long ll;
#define ll long long
typedef int arr[3];
 

int main(){
    int a = 123;
    int soTien;
    int soNam;
    int  tongSoTien;
    int x = 15 < 25 ? 100 : 200;
    int diBien1= (10 < 20) && (20 >= 20);
    int diBien2= (10 > 20) || (20 < 10);
    long long b = 1234567890;
    float c = 2.3456;
    double d = 2.3456789;
    char kitu= 'A';
    char Ten;
    bool check = true;
    a +=10;
    ll g = 1234567890;
    arr array1{ 1 , 2, 3};
    cout << "Gia tri cua a : " << a << endl;
    cout << "Gia tri cua b : " << b << endl;
    cout << "Gia tri cua c : " << c << endl;
    cout << "Gia tri cua d : " << d << endl;
    cout << "Gia tri cua kitu : " << kitu << endl;
    cout << "Gia tri cua check : " << check << endl;
    cout << "Gia tri cua check : " << boolalpha << check << endl;
    cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
    cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
    cout << setw(12) << setfill('0') << a << endl;
    cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
    cout << "Nhap tên của bạn, chỉ một chữ A,B,C :  "<< endl;
    cin >> Ten;
    cout << "Ten ban la : " << Ten << endl;
    cout << "Nhap so tien gui hang thang :  "<< endl;
    cin >> soTien;
    cout << "Nhap so nam tiet kiem :  "<< endl;
    cin >> soNam;
    tongSoTien = (soTien * 12) * soNam;
    cout << "Xin chao, " << Ten << ". Sau " << soNam << " nam tich luy. Ban da tiet kiem dươc tong so tien là: " << tongSoTien << endl;
    cout << "Gia tri cua x : " << x << endl;
    cout << "Gia tri cua diBien1 : " << diBien1 << ". Gia tri cua diBien2 : " << diBien2 << endl;
    cout << "Gia tri cua diBien1 : " << boolalpha << diBien1 << ". Gia tri cua diBien2 : " << boolalpha << diBien2 << endl;
    cout << (100 > 50) << endl;
    cout << (20 <= 30) << endl;
    cout << (80 >= 100) << endl;
    cout << "Gia tri cua g : " << g << endl;

}

Sử dụng IDE Online để chạy thử chương trình





Định nghĩa tên cho cấu trúc hoặc câu lệnh

Việc sử dụng define để định nghĩa các câu lệnh hay cấu trúc nhằm mục đích là có thể tiết kiệm thời gian code, tuy nhiên việc này sẽ dẫn tới khó khăn cho người khác khi cần tham khảo mã nguồn.

Nói chung, không nên lạm dụng việc sử dụng define với mục đích này.

Ví dụ, chúng ta có thể định nghĩa cấu trúc để in ra dòng chữ Dat Viet Lap Trinh nhu sau

#define greet cout << "Dat Viet Lap Trinh" << endl;

Sau đó trong chương trình, khi nào cần ta chỉ việc gọi lệnh greet. Ta thử trong chương trình tào lao như sau:

#include <iostream>
#include <iomanip>

using namespace std;
//typedef long long ll;
#define ll long long
#define greet cout << "Dat Viet Lap Trinh" << endl;
typedef int arr[3];
 

int main(){
    greet;
    int a = 123;
    int soTien;
    int soNam;
    int  tongSoTien;
    int x = 15 < 25 ? 100 : 200;
    int diBien1= (10 < 20) && (20 >= 20);
    int diBien2= (10 > 20) || (20 < 10);
    long long b = 1234567890;
    float c = 2.3456;
    double d = 2.3456789;
    char kitu= 'A';
    char Ten;
    bool check = true;
    a +=10;
    ll g = 1234567890;
    arr array1{ 1 , 2, 3};
    cout << "Gia tri cua a : " << a << endl;
    cout << "Gia tri cua b : " << b << endl;
    cout << "Gia tri cua c : " << c << endl;
    cout << "Gia tri cua d : " << d << endl;
    cout << "Gia tri cua kitu : " << kitu << endl;
    cout << "Gia tri cua check : " << check << endl;
    cout << "Gia tri cua check : " << boolalpha << check << endl;
    cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
    cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
    cout << setw(12) << setfill('0') << a << endl;
    cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
    cout << "Nhap tên của bạn, chỉ một chữ A,B,C :  "<< endl;
    cin >> Ten;
    cout << "Ten ban la : " << Ten << endl;
    cout << "Nhap so tien gui hang thang :  "<< endl;
    cin >> soTien;
    cout << "Nhap so nam tiet kiem :  "<< endl;
    cin >> soNam;
    tongSoTien = (soTien * 12) * soNam;
    cout << "Xin chao, " << Ten << ". Sau " << soNam << " nam tich luy. Ban da tiet kiem dươc tong so tien là: " << tongSoTien << endl;
    cout << "Gia tri cua x : " << x << endl;
    cout << "Gia tri cua diBien1 : " << diBien1 << ". Gia tri cua diBien2 : " << diBien2 << endl;
    cout << "Gia tri cua diBien1 : " << boolalpha << diBien1 << ". Gia tri cua diBien2 : " << boolalpha << diBien2 << endl;
    cout << (100 > 50) << endl;
    cout << (20 <= 30) << endl;
    cout << (80 >= 100) << endl;
    cout << "Gia tri cua g : " << g << endl;
    greet;

}
Bấm Run để chạy chương trình, đầu chương trình sẽ in Dat Viet Lap trinh và kết thúc chương trình cũng sẽ là Dat Viet Lap TRinh






Sự Khác Nhau Giữa Define Và Typedef

Typedef#Define
Chỉ sử dụng để đặt tên thay thế cho kiểu dữ liệuCó thể sử dụng để đặt tên cho kiểu dữ liệu, giá trị, cấu trúc, câu lệnh
Kết thúc bởi dấu ;Không có kết thúc bằng dấu ;
Được xử lý bới trình biên dịch (Compiler)Được xử lý bởi preprocessor
Không có dấu #Bắt đầu bởi dấu #


 

Using

Nếu bạn sử dụng chuẩn C++11 hoặc mới hơn thì bạn có thể sử dụng using để thay cho typedef 

Chúng ta có thể thay thế lệnh


#define ll long long


bằng cách sử dụng using như sau:


using ll = long long;


Chương trình sau khi thêm lệnh using:


#include <iostream>
#include <iomanip>

using namespace std;
//typedef long long ll;
//#define ll long long
using ll = long long;
#define greet cout << "Dat Viet Lap Trinh" << endl;
typedef int arr[3];
 

int main(){
    greet;
    int a = 123;
    int soTien;
    int soNam;
    int  tongSoTien;
    int x = 15 < 25 ? 100 : 200;
    int diBien1= (10 < 20) && (20 >= 20);
    int diBien2= (10 > 20) || (20 < 10);
    long long b = 1234567890;
    float c = 2.3456;
    double d = 2.3456789;
    char kitu= 'A';
    char Ten;
    bool check = true;
    a +=10;
    ll g = 1234567890;
    arr array1{ 1 , 2, 3};
    cout << "Gia tri cua a : " << a << endl;
    cout << "Gia tri cua b : " << b << endl;
    cout << "Gia tri cua c : " << c << endl;
    cout << "Gia tri cua d : " << d << endl;
    cout << "Gia tri cua kitu : " << kitu << endl;
    cout << "Gia tri cua check : " << check << endl;
    cout << "Gia tri cua check : " << boolalpha << check << endl;
    cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
    cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
    cout << setw(12) << setfill('0') << a << endl;
    cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
    cout << "Nhap tên của bạn, chỉ một chữ A,B,C :  "<< endl;
    cin >> Ten;
    cout << "Ten ban la : " << Ten << endl;
    cout << "Nhap so tien gui hang thang :  "<< endl;
    cin >> soTien;
    cout << "Nhap so nam tiet kiem :  "<< endl;
    cin >> soNam;
    tongSoTien = (soTien * 12) * soNam;
    cout << "Xin chao, " << Ten << ". Sau " << soNam << " nam tich luy. Ban da tiet kiem dươc tong so tien là: " << tongSoTien << endl;
    cout << "Gia tri cua x : " << x << endl;
    cout << "Gia tri cua diBien1 : " << diBien1 << ". Gia tri cua diBien2 : " << diBien2 << endl;
    cout << "Gia tri cua diBien1 : " << boolalpha << diBien1 << ". Gia tri cua diBien2 : " << boolalpha << diBien2 << endl;
    cout << (100 > 50) << endl;
    cout << (20 <= 30) << endl;
    cout << (80 >= 100) << endl;
    cout << "Gia tri cua g : " << g << endl;
    greet;

}

Bấm Run để chạy thử:


Define và Using trong lập trình C++

Tóm lại chúng ta có thể sử dụng một trong 3 lệnh, đều cho kết quả như nhau trong chương trình tào lao của ta:

typedef long long ll;

#define ll long long

using ll = long long;

 

 

Phần tiếp theo

Phần trước


Không có nhận xét nào:

Đăng nhận xét