Bài giảng Tin học đại cương - Bài 11: Nhập - Xuất file, struct - Nguyễn Thị Phương Thảo

TIN ĐẠI CƯƠNG  
NHẬP - XUẤT FILE, STRUCT  
Nguyễn Thị Phương Thảo  
Bộ môn KTMT và M, Khoa CNTT  
Trường Đại học Thủy Lợi  
1
Nội dung chính  
1. Thao tác với các tập tin  
2. Bài tập  
2
Sự cần thiết sử dụng file trong C++  
. Câu lệnh cin : nhập dữ liệu từ bàn phím và  
đưa vào các biến  
. Câu lệnh cout : hiển thị giá trị các biểu thức ra  
màn hình  
. Khi kết thúc chương trình thì các biến, các biểu  
thức không còn nữa → dữ liệu bị mất  
. Mong muốn của người sử dụng: có thể lưu trữ  
các biến, các kết quả tính toán ra tập tin  
(file), nhờ vậy kết quả tính toán sẽ không bị  
mất và có thể đọc dữ liệu có trong file để xử  
lí tiếp  
. → giải pháp : thao tác với các tập tin (cụ thể  
là dạng văn bản)  
3
1. Thao tác với các tập tin  
. C++ cung cấp các lớp (class) sau để đọc - ghi  
dữ liệu với file  
ofstream : ghi dữ liệu vào file  
ifstream : đọc dữ liệu từ file  
fstream : cả đọc và ghi file  
. Các lớp này được định nghĩa trong thư viện  
fstream và đặt trong không gian tên std  
→ khai báo thư viện fstream ở đầu chương trình :  
#include <fstream>  
4
Ghi ra file bằng ofstream  
◮
◮
Tạo đối tượng và gắn nó với một file trong thiết bị lưu trữ  
Khi thay cout bởi tên đối tượng, dữ liệu sẽ được ghi vào file  
đại diện bởi đối tượng đó, thay vì in ra màn hình  
Cách 1 : tạo một đối tượng chưa gắn với tập tin cụ thể nào,  
sau đó dùng hàm open để mở một tập tin và gắn nó với đối  
tượng vừa tạo  
◮
Ví dụ :  
5
Ghi ra file bằng ofstream  
. Cách 2 : mở một tập tin đồng thời gắn nó với tên đối  
tượng  
Ví dụ : ofstream ofs("thudo.txt");  
. Chú ý : sau khi thao tác xong, sử dụng hàm close() để  
đóng file và giải phóng đối tượng  
. Kiểm tra việc mở tập tin  
- Sử dụng hàm is_open() : trả về giá trị true nếu việc mở file  
thành công  
-Sử dụng hàm fail() : trả về giá trị true nếu việc mởfile thất bại  
6
Đọc file bằng ifstream  
. tương tự như ghi file, có 2 cách  
ifstream ifs;  
ifs.open("thudo.txt") ;  
Và  
ifstream ifs("thudo.txt");  
Ví dụ :  
7
Đọc và ghi file bằng fstream  
Ghi file : sử dụng fstream tương tự như ofstream, chỉ lưu ý khi  
mở file để ghi thì thêm fstream : :outofstr  
Mở file để ghi dùng  
ofstream  
Mở file để ghi dùng  
fstream  
ofstream ofs;  
fstream ofs;  
ofs.open(“thudo.txt”);  
ofs << ”Madrid" << endl;  
ofs << "Paris" << endl;  
ofs.close();  
ofs.open(“thudo.txt”, fstream::out);  
ofs << ”Madrid" << endl;  
ofs << "Paris" << endl;  
ofs.close();  
8
Đọc và ghi file bằng fstream  
Đọc file: sử dụng fstream tương tự như ifstream, chỉ lưu ý khi  
mở file để đọc thì thêm fstream::inifstream fstream  
Mở file để đọc  
ifstream ifs;  
ifs.open(“hello.txt”);  
string dong;  
while (!ifs.eof())  
fstream ifs;  
ifs.open(“hello.txt”, fstream::in);  
string dong;  
while (!ifs.eof())  
{
{
getline(ifs, dong);  
cout << dong << endl;  
}
getline(ifs, dong);  
cout << dong << endl;  
}
ifs.close();  
ifs.close();  
9
Ví dụ: tạo 1 file để ghi lời chào mừng của bạn  
10  
Ví dụ: Đọc và hiển thị nội dung file vừa tạo ra màn  
hình  
11  
2. Bài tập  
Bài 1  
Viết ra file so_chan.txt tất cả các số chẵn từ  
0 đến 30 (mỗi số trên 1 dòng). Sau đó đọc từ  
file so_chan.txt trên, thêm 1 vào mỗi giá trị,  
viết kết quả vào file so_le.txt.  
12  
KIỂU DỮ LIỆU STRUCT  
Sự cần thiết  
Ví dụ : Trong kì thi tuyển sinh ĐH, phòng đào tạo phải  
nhập dữ liệu cho các học sinh, bao gồm:  
- Họ đệm, Tên, Địa chỉ (các chuỗi kí tự)  
- Điểm 3 môn xét tuyển, Tổng điểm (các số thực)  
Sau đó phải sắp xếp Tổng điểm theo thứ tự giảm dần  
Tất cả các dữ liệu khác như Tên, Điểm các môn cũng phải  
thay đổi thứ tự theo thứ tự của Tổng điểm  
→ Giải pháp: các dữ liệu Họ đệm, Tên, Điểm các môn, Tổng  
điểm... luôn đi kèm với nhau khi sắp xếp  
→ Xây dựng một kiểu dữ liệu mới bao gồm tất cả các dữ liệu  
kể trên  
14  
3. Kiểu dữ liệu tự tạo  
. C++ cung cấp một số kiểu dữ liệu cơ bản (số  
nguyên, số thực, logic, ...)  
. C++ cũng cho phép kết hợp các dữ liệu cơ bản  
để xây dựng các kiểu dữ liệu phức tạp hơn. Ví  
dụ:  
- Học sinh : Họ đệm, Tên, Địa chỉ, Điểm 3 môn, Tổng điểm  
- Điểm trên mặt phẳng : tọa độ x, tọa độ y  
15  
Kiểu dữ liệu tự tạo  
. Ngoài khai báo dữ liệu, ta còn có thể định  
nghĩa các phép toán, hàm. . . đi kèm với kiểu dữ  
liệu đó  
Ví dụ : trên kiểu dữ liệu Học sinh, viết hàm tính  
Tổng điểm, xây dựng toán tử so sánh. . .  
. Nhiều kiểu dữ liệu tự tạo được sử dụng rất  
phổ biến (string, vector...)  
16  
4. Cấu trúc  
Là kiểu dữ liệu gộp giống như mảng  
Tuy nhiên cấu trúc và mảng khác nhau:  
Mảng là tập các giá trị có cùng kiểu  
Cấu trúc là tập các giá trị có kiểu khác nhau  
Định nghĩa cấu trúc:  
Trước khi khai báo biến (trước main())  
Phạm vi toàn cục  
Không cấp phát bộ nhớ  
3
Khai báo và sử dụng struct  
Cú pháp :  
struct <tên kiểu> {  
<các dữ liệu thành phần>  
};  
Ví dụ :Khaibáokiểu dữ liệu struct  
//kiểu dữ liệu struct tên là Point  
struct Point {  
double x, y;  
};  
//các dữ liệu thành phần  
Sử dụng:  
//một biến kiểu Point  
//thành phần x = 2.5  
//thành phần y = 1.8  
Point diemA;  
diemA.x = 2.5;  
diemA.y = 1.8;  
18  
Cấu trúc  
Ví dụ:  
Khai báo cấu trúc:  
struct sinhvien //Khai báo cấu trúc sinhvien  
{
string hoten; // tên thành viên  
string lop;  
float dtb;  
};  
• Khai báo biến cho kiểu mới này  
sinhvien sv1, sv2;  
Giống như khai báo các kiểu đơn giản  
Biến sv1, sv2 có kiểu là sinhvien  
Nó chứa các giá trị thành viên  
4
Truy cập các thành viên cấu trúc  
• Sử dụng toán tử . để truy cập tới các thành viên  
◦
◦
◦
sv1.hoten  
sv1.lop  
sv1.dtb  
• Các biến thành viên  
◦
Là thành phần của biến cấu trúc  
◦
Các cấu trúc khác nhau có thể có các biến thành viên cùng  
tên  
5
Tải về để xem bản đầy đủ
pdf 26 trang yennguyen 17080 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 11: Nhập - Xuất file, struct - Nguyễn Thị Phương Thảo", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_11_nhap_xuat_file_struct_ngu.pdf