Tải bản đầy đủ (.doc) (4 trang)

8 IO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (58.61 KB, 4 trang )

HỌC VIỆN KỸ THẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN

ĐỀ CƯƠNG BÀI GIẢNG

HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bộ môn: Công nghệ phần mềm
Giáo viên: 1) Phạm Thị Bích Vân

Bài IX: Lập trình điều khiển Nhập/Xuất
1. Thời lượng: 5 tiết (GV giảng: 3; bài tập: 2)
2. Mục đích, yêu cầu: Hướng dẫn sinh viên cách làm việc vào ra File.
3. Nội dung:
a) Nội dung chi tiết:
• Giới thiệu
− Các thư viện chuẩn C++ cung cấp một tập hợp các khả năng nhập/xuất rộng lớn
− Phần lớn các đặc tính nhập xuất mô tả ở đây theo hướng đối tượng. Cho phép nạp chồng
hàm và nạp chồng toán tử.
− Người dùng có thể chỉ định nhập/xuất của các kiểu dữ liệu do người dùng định nghĩa cũng
như các kiểu dữ liệu chuẩn. Tính mở rộng này là một trong các đặc tính quan trọng của C++
• Các dòng
Thư viện iostream của C++ cung cấp hàng trăm khả năng của nhập/xuất. Nó bao gồm các
header.
− header <iostream.h> chứa các đối tượng cin, cout, cerr và clog mà tương ứng với dòng
nhập chuẩn, dòng xuất chuẩn, dòng lỗi chuẩn không vùng đệm và dòng lỗi chuẩn vùng đệm.
− Header <iomanip.h> chứa thông tin hữu ích cho việc thực hiện nhập/xuất định dạng.
− Header <fstream.h> chứa các thông tin quan trọng cho các thao tác xử lý file do người dùng
kiểm soát.
− Header <strstream.h> chứa các thông tin quan trọng cho việc thực hiện các định dạng trong
bộ nhớ. Điều này tương tự xử lý file, nhưng các thao tác nhập/xuất tới và từ mảng các ký tự
hơn là file.


− Header <stdiostream.h> chứa các thông tin quan trọng cho các chương trình trộn các kiểu
nhập/xuất của C và C++.
Các lớp và các đối tượng của dòng Nhập/Xuất
− Thư viện iostream chứa nhiều lớp để xử lý một sự đa dạng rộng của các thao tác nhập/xuất.
− Lớp istream hỗ trợ các thao tác dòng nhập. Lớp ostream hỗ trợ các thao tác dòng xuất.
− Lớp iostream hỗ trợ cả hai thao tác dòng nhập và dòng xuất.
− Lớp istream và lớp ostream đều kế thừa đơn từ lớp cơ sở ios. Lớp iostream được kế thừa
thông qua đa kế thừa từ hai lớp istream và ostream.
+ cin
+ cout
• Dòng xuất
− ostream của C++ cung cấp khả năng để thực hiện xuất định dạng và không định dạng.
− Các khả năng xuất bao gồm: xuất các kiểu dữ liệu chuẩn với toán tử chèn dòng; xuất các ký
tự với hàm thành viên put(); xuất không định dạng với hàm thành viên write; xuất các số
nguyên dạng thập phân, bát phân và thập lục phân; xuất các giá trị chấm động với độ chính
xác khác nhau.
• Toán tử chèn dòng
− Dòng xuất có thể được thực hiện với toán tử chèn dòng, nghĩa là toán tử << đã đa năng hóa.
Toán tử << đã được đa năng hóa để xuất các mục dữ liệu của các kiểu có sẵn, xuất chuỗi, và
xuất các giá trị con trỏ.
• Nối các toán tử chèn dòng
Các toán tử đã đa năng hóa << và >> có thể được theo dạng nối vào nhau
Bộ môn Công nghệ phần mềm















cout<< “10+15 = ”<< (10+15);
Xuất ký tự với hàm thành viên put(), nối hàm put()
Hàm thành viên put() của lớp ostream để xuất một ký tự.
cout.put(‘A’);
cout.put(‘A’).put(‘\n’);
Dòng nhập
− Dòng nhập có thể được thực hiện với toán tử trích, nghĩa là toán tử đã đa năng hóa >>. Bình
thường toán tử này bỏ qua các ký tử khoảng trắng (như các blank, tab và newline). trong
dòng nhập. Toán tử trích dòng trả về zero (false) khi kết thúc file (end-of-file) được bắt gặp
trên một dòng
Toán tử trích dòng
int x,y.
cin>>x>>y;
Các hàm thành viên get() và getline()
Các hàm thành viên khác của istream
− istream& ignore(int nCount = 1, int delim = EOF);
− istream& putback(char ch)- đặt ký tự trở lại dòng nhập
− peek() - hàm trả về ký tự kế tiếp.
Nhập/Xuất không định dạng
− Nhập/xuất không định dạng được thực hiện với các hàm thành viên istream::read() và
ostream::write().
+ Hàm istream::read():
istream& read(unsigned char* puch, int nCount);

istream& read(signed char* psch, int nCount);
− Trích các byte từ dòng cho đến khi giới hạn nCount đạt đến hoặc cho đến khi end- of-file đạt
đến. Hàm này có ích cho dòng nhập nhị phân.
+ Hàm ostream::write():
ostream& write(const unsigned char* puch, int nCount);
ostream& write(const signed char* psch, int nCount);
Chèn nCount byte vào từ vùng đệm (được trỏ bởi puch và psch) vào dòng. Nếu file
được mở ở chế độ text, các ký tự CR có thể được chèn vào. Hàm này có ích cho dòng xuất
nhị phân. Chẳng hạn:
char Buff[]="HAPPY BIRTHDAY";
cout.write(Buff,10);
+ Hàm istream::gcount():
int gcount();
Hàm trả về số ký tự đã trích bởi hàm nhập không định dạng cuối cùng.
Dòng nhập/xuất file
− Để thực thi xử lý file trong C++, các chương trình phải include tập tin <iostream.h> và
<fstream.h>. Header <fstream.h> gồm định nghĩa cho các lớp dòng ifstream cho nhập
(đọc) từ một file, ofstream cho xuất (ghi) tới một file) và fstream cho nhập/xuất (đọc/ghi)
tới một file.
− Tạo một đối tượng thuộc ofstream để mở một file
ofstream outFile("data.txt");
ofstream outFile;
outFile.open("data.txt);
ofstream out("data.txt", ios::nocreate);
Tạo đối tượng thuộc ifstream để ghi file
ifstream inFile;
inFile.open("Students.txt");

Bộ môn Công nghệ phần mềm





Nhập/Xuất file văn bản.
− Nếu dòng được gắn với file văn bản, việc nhập/xuất file được thực hiện một cách đơn giản
bởi các toán tử >> và <<, giống như khi chúng ta làm việc với cin và cout. File văn bản
chứa dữ liệu ở dạng mã ASCII, kết thúc bởi ký tự EOF.
− Đọc file văn bản bằng hàm istream::getline() và xuất ra màn hình.
1: //Chương trình
2: #include <iostream.h>
3: #include <fstream.h>
4: #include <iomanip.h>
5: #include <stdlib.h>
6:
7: #define MAXLINE 256
8:
9: int main()
10: {
11: ifstream InClientFile("clients.dat", ios::in);
12: if (!InClientFile)
13: {
14: cerr << "File could not be opened" << endl;
15: exit(1);
16: }
17: char Line[MAXLINE];
18: while (!InClientFile.eof())
19: {
20: InClientFile.getline(Line,MAXLINE-1);
21: cout<22: }

23: InClientFile.close();
24: return 0;
25: }
Chú ý : Cho phép đọc ghi file cả một đối tượng.
b) Nội dung thảo luận: Một số điểm chú ý, lỗi gặp phải khi làm việc với file.
c) Nội dung tự học: Làm các bài tập thao tác với dòng nhập xuất với bàn phím (sử dụng các dạng
xuất có định dạng), thao tác nhập xuất với file.
d) Bài tập (bắt buộc, mở rộng):
Bài 1: Viết chương trình nhập từ bàn phím sau đó xuất lên màn hình các thông tin của mặt hàng bao
gồm: Tên mặt hàng, trọng lượng, đơn giá, mã chất lượng, số lượng.
Bài 2. Nhập thông tin tiêu thụ điện của khách hàng gồm: tên khách hàng(kiểu chuỗi), chỉ số cũ (số
nguyên), chỉ số mới (số nguyên), đơn giá (số nguyên), và thông tin xuất lên màn hình gồm tên khách
hàng, tháng, số kwh tiêu thụ và số tiền phải trả.
Bài 3: Tạo lớp sinh viên với các thuộc tính (masv, tensv, ngày sinh, địa chỉ). Nhập thông tin sinh
viên từ bàn phím, lưu thông tin sinh viên vào file (cho phép mở file để lưu tiếp).
Bài 4: Tạo lớp sinh viên, đọc thông tin sinh viên từ file, hiển thị lên màn hình, cho phép sửa đổi
thông tin và cập nhập vào file.
Bài 5. Làm bài 3, 4 sử dụng đọc ghi file cả một đối tượng.
4. Tài liệu tham khảo (sách, báo – chi tiết đến chương, mục, trang)
• Lập trình hướng đối tượng với C++ / Lê Đăng Hưng, Tạ Tuấn Anh, Nguyễn Hữu Đức, Nguyễn
Thanh Thủy (Chủ biên), - Hà Nội : Khoa học và Kỹ thuật, 2009. -346 trang; Phụ lục 1 – Trang
265.
• Object-Oriented Programming in C++ (4th Edition) / Robert Lafore. Sams Publishing, 2002.
Chapter 12.
Bộ môn Công nghệ phần mềm


5. Câu hỏi ôn tập
- Thư viện iostream để làm gì, bao gồm các các header nào?
- Dòng nhập/ xuất bao gồm các lớp nào?

- Cách khởi tạo đối tượng thuộc dòng nhập/xuất?
- Ý nghĩa, cách sử dụng toán tử chèn dòng, trích dòng?
- Các thư viện hỗ trợ dòng nhập xuất file?
- Cách khởi tạo các đối tượng để nhập/xuất file.
- Cách đọc /ghi file theo cả đối tượng.

Bộ môn Công nghệ phần mềm



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×