Nhập từ bàn phím và xuất ra màn hình

Bản thân C++ được định nghĩa không phải các hàm nhập xuất như C. Mà thay vào đó, C++ định nghĩa chúng trong thư viện standard library. Sau này khi có dịp mình sẽ giải thích rõ hơn. Còn bây giờ chúng ta chỉ quan tâm đến iostream (thuộc standard library). Thư viện này cơ bản là có hai kiểu dữ liệu là istreamostream, mục đích cho nhập và xuất.

Để đọc dữ liệu chúng ta sử dụng hàm cin

Để xuất dữ liệu chúng ta dùng hàm cout, ngoài ra chúng ta có cerrclog. Trong đó cerr dùng cho việc xuất cảnh báo warning và clog dùng cho việc lấy các thông tin của ứng dụng hiện tại.

Ta xem xét ví dụ sau:

#include <iostream>

int main()
{
    std::cout << "Enter two numbers" << std::endl;
    int num1, num2;
    std::cin >> num1 >> num2;
    std::cout << "Sum of " << num1 << " and " << num2 << " is:" << num1 + num2 << std::endl;
    return 0;
}

Chương trình sẽ cho phép nhập hai số bất kỳ rồi xuất ra tổng hai số.

Dòng đầu tiên trong chương trình gọi là tiền xử lý gọi file header. Ở đây ta hiểu là các hàm được định nghĩa trong file thư viện iostream (ở đây là header file) được gọi ra dùng. File header nằm trong dấu ngoặc nhọn {} (angle bracket). Tiền xử lý include được định nghĩa bởi dấu thăng (sharp). Phần này ta chỉ cần hiểu đơn, sau này khi có dịp mình sẽ nói rõ hơn về phần này.

Ta tiếp tục phân tích hàm main. Ở dòng đầu tiên, ta có hàm cout thuộc kiểu ostream thuộc thư viện std (viết tắt của standard library). Để in giá trị ra màn hình từ ostream ta dùng toán tử (operator) là << để thể hiện việc đẩy thông tin vào luồng cout. Nếu bạn tinh ý sẽ thấy rằng cout nằm phía tay trái và dữ liệu thì nằm phía tay phải, dùng toán tử << sẽ đẩy dữ liệu từ phải sang trái.

Lưu ý rằng: từ khóa std xuất hiện tại chuẩn C++98, trước đó việc gọi cin cout không cần dùng std. Do đó khi bạn đọc một vài quyển sách lập trình cũ như cuốn Algorithm in C++ của giáo sư Robert Sedgewick sẽ thấy rõ. Tuy nhiên hiện nay tất cả compiler phổ biến đều dùng chuẩn C++98 trở lên rồi nên chúng ta sẽ phải theo cách viết code mới.

Nói nhanh về dòng thứ hai, dòng này khai báo biến, nơi mà chúng ta sẽ dùng để chứ dữ liệu kiểu int (số nguyên). Phần này chúng ta sẽ tìm hiểu kỹ hơn trong các phần sau.

Về dòng thứ ba, tương tự như cout dùng việc xuất thì chúng ta có dòng cin dùng cho việc nhập dữ liệu. Bạn chú ý vào toán tử >> thể hiện việc đẩy dữ liệu từ bàn phím từ luồng istream. cin nằm tay trái và biến dữ liệu nằm tay phải, dữ liệu đi từ trái qua phải, lúc này sẽ được lưu trữ lại

Dòng thứ 4 sẽ xuất kết quả toán tính tổng. Toán tử + sẽ được dùng để tính tổng của 2 biến số.

Lưu ý: khi nãy chúng ta có nói về std nhưng chúng ta chưa nói về toán tử ::. Toán tử này thể hiện rằng hàm cin, cout thuộc thuộc về std nằm trong file iostream. Đây còn được gọi là toán tử scope (thể hiện mức độ phạm vi) khi nói đến khái niệm namespace. Trong các phần sau, ta sẽ nói rõ hơn về nó.

Bình luận code

Đôi khi code quá khó hiểu để có thể giải thích. Do đó người ta đôi khi (Uncle Bob nói rằng code dỏm mới cần comment, ở đây mình không ý kiến gì vì trong khuôn khổ bài này chỉ quan tâm đến cú pháp C++ mà thôi) người ta sẽ mô tả code theo kiểu con người.

Ta lấy ví dụ khi nãy nhưng thêm bình luận vào:

#include <iostream>
/*
 * Simple main function:
 * Read two numbers
 * and write their sum
 */
int main()
{
    // prompt user to enter two numbers
    std::cout << "Enter two numbers:" << std::endl;
    int v1, v2; // uninitialized
    std::cin >> v1 >> v2; // read input
    return 0;
}

Với các bình luận cùng dòng hay một dòng ta dùng dấu //. Với bình luận nhiều dòng ta mở đầu bằng dấu /* và kết thúc bằng dấu */, trên thực tế thì cũng có thể dùng cách này với bình luận một dòng. Việc dùng dấu nhiều * thẳng hàng chỉ đơn giản để thể hiện rõ bình luận, còn với mở và đóng bình luận chỉ quan tâm đến hai dấu * ở đầu và cuối.

(còn tiếp)

 

Comments


Comments are closed