Bài 1.1: Nhập xuất sử dụng cin và cout trong C++

Chào mừng trở lại với hành trình chinh phục C++ cùng FullhouseDev! Sau khi bạn đã làm quen với cấu trúc cơ bản của một chương trình C++ đơn giản, đã đến lúc chúng ta tìm hiểu cách chương trình của mình có thể "nói chuyện" với thế giới bên ngoài và "lắng nghe" người dùng. Khả năng nhập và xuất dữ liệu là nền tảng cho mọi ứng dụng tương tác.

Trong bài học đầu tiên mang tính thực hành này, chúng ta sẽ đi sâu vào hai đối tượng cực kỳ quan trọng trong C++: cout để xuất dữ liệu ra màn hình console, và cin để nhập dữ liệu từ bàn phím. Đây là những công cụ bạn sẽ sử dụng liên tục trong quá trình lập trình C++, vì vậy hãy nắm vững chúng nhé!

Để sử dụng cincout, chúng ta cần bao gồm thư viện <iostream> ở đầu file code của mình.

1. Xuất dữ liệu ra màn hình với cout

cout (viết tắt của console output) là đối tượng chuẩn được dùng để hiển thị thông tin ra luồng đầu ra chuẩn, mà thông thường chính là màn hình console (hoặc cửa sổ dòng lệnh).

Để "đẩy" dữ liệu ra cout, chúng ta sử dụng toán tử chèn luồng (insertion operator), ký hiệu là <<. Toán tử này lấy dữ liệu ở bên phải và gửi nó đến luồng cout ở bên trái.

Ví dụ 1.1.1: In chuỗi ký tự cố định

Đơn giản nhất là in một dòng chữ chào mừng:

#include <iostream>
using namespace std;

int main() {
    cout << "Chao mung den voi C++!";
    return 0;
}

Output:

Chao mung den voi C++!
Ví dụ 1.1.2: In giá trị của biến

cout không chỉ in được chuỗi cố định mà còn in được giá trị của các biến thuộc nhiều kiểu dữ liệu khác nhau như số nguyên (int), số thực (double), ký tự (char), v.v.

#include <iostream>
using namespace std;

int main() {
    int sN = 123;
    double sT = 45.67;
    char kT = 'X';
    bool gtB = true;

    cout << sN;
    cout << sT;
    cout << kT;
    cout << gtB;

    return 0;
}

Output:

12345.67X1
Ví dụ 1.1.3: Xuống dòng với endl\n

Thông thường, sau khi in một thông tin, chúng ta muốn con trỏ xuống dòng để thông tin tiếp theo hiển thị ở dòng mới. Có hai cách phổ biến để làm điều này:

  1. Sử dụng endl: Chèn một ký tự xuống dòng ép bộ đệm đầu ra (output buffer) phải gửi dữ liệu ra ngay lập tức (gọi là flushing).
  2. Sử dụng ký tự đặc biệt \n (escape sequence cho newline): Chỉ đơn giản là chèn một ký tự xuống dòng. Nó thường không ép flush bộ đệm ngay lập tức (mặc dù với các chương trình nhỏ đơn giản thì bạn có thể không thấy sự khác biệt).
#include <iostream>
using namespace std;

int main() {
    cout << "Day la dong thu nhat." << endl;
    cout << "Day la dong thu hai voi \\n.\n";
    cout << "Dong cuoi cung.\n";

    cout << "Van ban nay " << "se " << "in tren mot dong." << endl;

    return 0;
}

Output:

Day la dong thu nhat.
Day la dong thu hai voi \n.
Dong cuoi cung.
Van ban nay se in tren mot dong.
Ví dụ 1.1.4: Kết hợp chuỗi và biến

Một ứng dụng phổ biến là kết hợp chuỗi mô tả với giá trị của biến để tạo ra thông báo dễ đọc:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string ten = "Nguyen Van A";
    int t = 20;
    double dtb = 8.75;

    cout << "Ten: " << ten << endl;
    cout << "Tuoi: " << t << " tuoi\n";
    cout << "Diem trung binh: " << dtb << endl;

    return 0;
}

Output:

Ten: Nguyen Van A
Tuoi: 20 tuoi
Diem trung binh: 8.75

2. Nhập dữ liệu từ bàn phím với cin

cin (viết tắt của console input) là đối tượng chuẩn được dùng để đọc dữ liệu từ luồng đầu vào chuẩn, mà thông thường chính là bàn phím.

Để "trích xuất" dữ liệu từ luồng nhập và lưu vào biến, chúng ta sử dụng toán tử trích luồng (extraction operator), ký hiệu là >>. Toán tử này đọc dữ liệu từ luồng cin ở bên trái và gán nó vào biến ở bên phải.

Ví dụ 1.1.5: Nhập một số nguyên

Chương trình sẽ dừng lại và chờ người dùng nhập một số nguyên từ bàn phím và nhấn Enter.

#include <iostream>
using namespace std;

int main() {
    int sN;

    cout << "Moi ban nhap mot so nguyen: ";
    cin >> sN;
    cout << "Ban vua nhap so: " << sN << endl;

    return 0;
}

Output (ví dụ):

Moi ban nhap mot so nguyen: 15
Ban vua nhap so: 15
Ví dụ 1.1.6: Nhập các kiểu dữ liệu khác

Tương tự cout, cin có thể tự động xử lý việc đọc và chuyển đổi dữ liệu cho nhiều kiểu biến khác nhau (double, char, string, v.v.).

#include <iostream>
#include <string>
using namespace std;

int main() {
    double cc;
    string t;
    char kTD;

    cout << "Nhap ten cua ban (chi mot tu): ";
    cin >> t;

    cout << "Nhap chieu cao cua ban (vd: 1.75): ";
    cin >> cc;

    cout << "Nhap mot ky tu bat ky: ";
    cin >> kTD;

    cout << "\n--- Thong tin da nhap ---\n";
    cout << "Ten: " << t << endl;
    cout << "Chieu cao: " << cc << " m" << endl;
    cout << "Ky tu dau tien ban nhap: " << kTD << endl;

    return 0;
}

Output (ví dụ):

Nhap ten cua ban (chi mot tu): Alice
Nhap chieu cao cua ban (vd: 1.75): 1.68
Nhap mot ky tu bat ky: A

--- Thong tin da nhap ---
Ten: Alice
Chieu cao: 1.68 m
Ky tu dau tien ban nhap: A
Ví dụ 1.1.7: Nhập nhiều giá trị trên cùng một dòng

Bạn có thể dùng toán tử >> nhiều lần trên cùng một lệnh cin để đọc nhiều giá trị vào các biến khác nhau, miễn là các giá trị đó được phân tách bởi khoảng trắng (space, tab, hoặc newline).

#include <iostream>
using namespace std;

int main() {
    int dT, dL, dH;

    cout << "Nhap diem Toan, Ly, Hoa, cach nhau boi khoang trang: ";
    cin >> dT >> dL >> dH;

    double dtb = (dT + dL + dH) / 3.0;

    cout << "\nDiem trung binh cua ban la: " << dtb << endl;

    return 0;
}

Output (ví dụ):

Nhap diem Toan, Ly, Hoa, cach nhau boi khoang trang: 8 8 9

Diem trung binh cua ban la: 8.33333

3. Kết hợp cincout để tạo chương trình tương tác

Mục đích chính của cincout là cho phép chương trình của bạn tương tác với người dùng. Mô hình tương tác phổ biến nhất là:

  1. Xuất lời nhắc (Prompt): Dùng cout để nói cho người dùng biết chương trình đang cần thông tin gì.
  2. Nhập dữ liệu: Dùng cin để đọc dữ liệu người dùng gõ vào.
  3. Xử lý: Chương trình thực hiện các thao tác cần thiết với dữ liệu vừa nhận được (tính toán, kiểm tra, v.v.).
  4. Xuất kết quả/thông báo: Dùng cout để hiển thị kết quả xử lý hoặc thông báo cho người dùng.
Ví dụ 1.1.8: Chương trình tính chu vi hình chữ nhật đơn giản
#include <iostream>
using namespace std;

int main() {
    double d, r, cv;

    cout << "Moi ban nhap chieu dai cua hinh chu nhat: ";
    cin >> d;

    cout << "Moi ban nhap chieu rong cua hinh chu nhat: ";
    cin >> r;

    cv = 2 * (d + r);

    cout << "\n---------------------------\n";
    cout << "Hinh chu nhat co chieu dai " << d
              << " va chieu rong " << r
              << " co chu vi la: " << cv << endl;

    return 0;
}

Output (ví dụ):

Moi ban nhap chieu dai cua hinh chu nhat: 5.5
Moi ban nhap chieu rong cua hinh chu nhat: 3.2

---------------------------
Hinh chu nhat co chieu dai 5.5 va chieu rong 3.2 co chu vi la: 17.4

4. Một vài lưu ý quan trọng khi sử dụng cincout

  • Bao gồm <iostream>: Luôn luôn nhớ #include <iostream> ở đầu file code của bạn.

    #include <iostream>
    using namespace std;
    
    int main() {
        cout << "Hello";
        return 0;
    }
    

    Output:

    Hello
  • Luôn đưa ra lời nhắc khi nhập: Đừng bao giờ chỉ dùng cin >> bien; mà không có một dòng cout phía trước để nói cho người dùng biết bạn đang chờ họ nhập gì. Chương trình sẽ chỉ đứng yên và người dùng không hiểu chuyện gì đang xảy ra.
  • Hiểu cách cin đọc dữ liệu: Nhớ rằng cin >> mặc định bỏ qua khoảng trắng đầu và dừng ở khoảng trắng sau. Điều này quan trọng khi bạn cần đọc các chuỗi có chứa khoảng trắng. (Hãy chờ đợi bài về getline nhé!).
  • Chọn \n hay endl: Dùng \n cho việc xuống dòng đơn thuần và endl khi bạn muốn dữ liệu được in ra ngay lập tức. Trong hầu hết các trường hợp đơn giản, \n là đủ.

Bài tập ví dụ: C++ Bài 1.A1: Hello Fullhouse Dev

Viết chương trình bằng C++ để in văn bản Welcome to Fullhouse Dev.

INPUT FORMAT

OUTPUT FORMAT

In ra văn bản Welcome to Fullhouse Dev trên 1 dòng duy nhất.

Ví dụ:

Input
Welcome to Fullhouse Dev
Ouput
Welcome to Fullhouse Dev

Hướng dẫn giải như sau:

  1. Bạn cần sử dụng thư viện chuẩn của C++ cho việc nhập/xuất dữ liệu. Hãy suy nghĩ xem thư viện nào cung cấp các chức năng như in ra màn hình? Gợi ý: Bắt đầu bằng chữ 'i' và 'o'.
  2. Trong thư viện đó, có một đối tượng chuẩn dùng để đưa dữ liệu ra luồng đầu ra (thường là màn hình console). Tên của nó bắt đầu bằng c.
  3. Để đưa một đoạn văn bản (một chuỗi ký tự) ra đối tượng này, bạn sử dụng toán tử <<.
  4. Đoạn văn bản cần in là cố định: Welcome to Fullhouse Dev. Đoạn văn bản này cần được đặt trong dấu nháy kép (").
  5. Toàn bộ lệnh in này sẽ nằm trong hàm chính của chương trình C++, thường là hàm main. Hàm này là điểm bắt đầu thực thi chương trình.
  6. Sau khi in xong, hàm main thường trả về giá trị 0 để báo hiệu chương trình kết thúc thành công.

Tóm lại, bạn chỉ cần:

  • Khai báo thư viện cần thiết ở đầu file.
  • Viết hàm main.
  • Bên trong hàm main, sử dụng đối tượng cout và toán tử << để in chuỗi "Welcome to Fullhouse Dev".
  • Kết thúc hàm main bằng câu lệnh trả về 0.
#include <iostream>
using namespace std;

int main() {
    cout << "Welcome to Fullhouse Dev";
    return 0;
}

Output:

Welcome to Fullhouse Dev

Làm thêm nhiều bài tập miễn phí tại đây

Comments

There are no comments at the moment.