Hãy hình dung một vài tình huống quen thuộc:
- Bạn dùng bàn phím để Nhập văn bản, bài viết...vào chương trình Microsoft Word, sau đó bạn bấm lệnh Print để Xuất văn bản, bài viết đó ra máy in và in nó ra giấy.
- Bạn dùng điện thoại iPhone để Nhập tin nhắn, sau đó bạn bấm Send để Xuất tin nhắn qua máy của người thân, bạn bè.
- Bạn đăng nhập vào Facebook bằng cách Nhập tên và mật khẩu, Facebook sẽ Xuất ra trả lời là sai mật khẩu nếu bạn nhập sai mật khẩu, hoặc Xuất ra màn hình chính của Facebook nếu bạn đăng nhập thành công.
- Bạn chơi games Candy Crush bằng cách Nhập một vị trí mới của các viên kẹo, chương trình sẽ Xuất ra màn hình kết quả tiếp theo.
Việc nhập xuất dữ liệu là công việc đầu tiên cần thành thạo khi bạn học một ngôn ngữ lập trình bất kỳ, phần này chúng ta sẽ phân tích cách sử dụng hàm cout và cin trong C++ để thực hiện 2 công việc nhập và xuất dữ liệu.
Dù mới trải qua phần làm quen, cưỡi ngựa xem hoa, nhưng chúng ta đã kịp "vọc" kha khá với hàm cout của C++ từ chương trình Hello World!
Nhắc lại về hàm: Hàm là tập hợp những đoạn mã dùng để thực hiện một nhiệm vụ nào đó. Có những hàm được viết sẵn, có những hàm chúng ta cần phải viết. Muốn sử dụng hàm viết sẵn, ta phải dùng các lệnh tiền xử lý để gọi thư viện có chứa hàm đó. Ví dụ ta cần gọi thư viện <iostream> để có thể sử dụng hàm cout và cin trong chương trình C++
In Ra Màn Hình Với Cout
cout là một đối tượng giúp bạn có thể hiện thị nội dung như : số nguyên, số thực, giá trị của biến, đoạn text ra màn hình. Để sử dụng đối tượng này bạn cần khai báo thư viện <iostream> và sử dụng namespace std
cout được sử dụng đi kèm với toán tử chèn <<
cout << "Xin Chao" << endl; // Hiển thị dòng Xin Chao lên màn hình và xuống dòng
cout << 100 << endl; // Hiển thị số 100 lên màn hình và xuống dòng
endl là một đối tượng đặc biệt giúp bạn có thể xuống dòng khi sử dụng cout, bạn sẽ thêm đối tượng này trong câu lệnh cout tại vị trí bạn muốn xuống dòng. Chúng ta cũng có thể sử dụng toán tử xuống dòng (\n), tuy nhiên bạn nên sử dụng endl.
Chúng ta sẽ chạy lại chương trình trong phần trước trên IDE Online
#include <iostream>
using namespace std;
int main(){
int a = 123;
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu = 'A';
bool check = true;
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;
}
Bấm Run để chạy chương trình
Đầu tiên, chúng ta "phát hiện" ra là bây giờ không phải nhức đầu với chuỗi định dạng %d, %s, %p...loạn xạ như ở ngôn ngữ C, với C++ chúng ta đơn giản chỉ cần
cout << bất cứ cái gì << endl;
Thế là xong! Khỏe re như bò kéo xe!
Với phong cách...tào lao, chúng ta thử thêm một dòng lệnh sau vào sau lệnh cout cuối cùng
cout << "Gia tri cua check : " << boolalpha << check << endl;
Chương trình...tào lao phiên bản C++ bây giờ sẽ như sau:
#include <iostream>
using namespace std;
int main(){
int a = 123;
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu = 'A';
bool check = true;
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;
}
Bấm Run để chạy chương trình
Khi in ra giá trị của kiểu bool, nếu giá trị true sẽ được hiển thị số 1, ngược lại giá trị false sẽ được hiển thị số 0
Nếu bạn muốn hiển thị giá trị true, false bạn thêm cụm boolalpha trước biến bool này.
Tiếp tục phát huy tinh thần...tào lao, chúng ta thêm một thư viên là <iomanip> vào chương trình, đồng thời thêm hai lệnh sau vào sau lệnh cout cuối cùng
cout << "Gia tri cua c : " << fixed << setprecision(2) << c << endl;
cout << "Gia tri cua d : " << fixed << setprecision(4) << d << endl;
Bây giờ chương trình...tào lao phiên bản C++ đã phình ra như sau
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int a = 123;
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu = 'A';
bool check = true;
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;
}
Bấm Run để chạy chương trình
Để in ra giá trị số float, double với độ chính xác k chữ số sau dấu phẩy bạn thêm cụm << fixed << setprecision(k) trước tên biến.
Thư viện chứa đối tượng setprecision là thư viện <iomanip>, bạn cần thêm vào trước khi sử dụng.
Với tinh thần...tào lao đang dâng cao, chúng ta "mần thêm" hai dòng lệnh sau
cout << setw(12) << setfill('0') << a << endl;
cout << setw(12) << setfill(' ') << "Dat Viet" << endl;
Chương trình của chúng ta hiện tại sẽ như sau:
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int a = 123;
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu = 'A';
bool check = true;
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;
}
Bấm Run để chạy chương trình.
Khi chúng ta muốn in ra giá trị của 1 số, 1 biến hay đoạn text với độ rộng tương đương bao nhiêu dấu cách chúng ta có thể sử dụng setw(k) với k là độ rộng trước tên biến hay nội dung bạn muốn in.
Trong trường hợp ta muốn thay thế các dấu cách khi nội dung in ra không đủ độ rộng chỉ định ta có thể sử dụng setfill(c) với c là ký tự muốn thay thế cho các dấu cách trống bao gồm cả dấu cách.
Hai câu lệnh mới thêm:
- setw(12) : Nhằm xác định cho cout in ra với một khoản cách cố định là 12 ký tự.
- setfill('0'): Lệnh cout sẽ in biến a và thêm số 0 ở trước nhằm đáp ứng yêu cầu đủ 12 ký tự. Vì a=123, có 3 ký tự nên khi in ra sẽ có 9 số 0 ở trước 123 => kết quả in ra là 000000000123
- setfill(' '): Lệnh cout sẽ in Dat Viet và thêm số dấu cách ở trước nhằm đáp ứng yêu cầu đủ 12 ký tự. Vì Dat Viet, có 8 ký tự nên khi in ra sẽ có 4 dấu cách ở trước Dat Viet => kết quả in ra là " Dat Viet" không bao gồm dấu ngoặc kép.
Nhập Từ Bàn Phím Với Cin
cin là đối tượng giúp chúng ta có thể nhập dữ liệu từ bàn phím thay vì khởi tạo thủ công, cin nằm trong thư viện <iostream> và namespace std
cin đi kèm với toán tử nhập >>
Chúng ta thêm ba lệnh sau vào lệnh cout cuối chương trình
cout << "Nhap gia tri cho a : ";
cin >> a;
cout << "Gia tri a vua nhap la : " << a << endl;
Chương trình của chúng ta đã hoành tráng thế này
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int a = 123;
long long b = 1234567890;
float c = 2.3456;
double d = 2.3456789;
char kitu = 'A';
bool check = true;
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 gia tri cho a : ";
cin >> a;
cout << "Gia tri a vua nhap la : " << a << endl;
}
Bấm Run để chạy
Lại thêm một cái khỏe cho chúng ta , với C chúng ta scanf với "lo lắng không nguôi" về chuỗi định dạng %d, %s, %p...loạn xạ. Ở đây, với C++, chúng ta đơn giản chỉ cần
cin>> bất cứ cái gì
Không có nhận xét nào:
Đăng nhận xét