15
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM HỆ CHÍNH QUI MÔN: KỸ THUẬT LẬP TRÌNH GVLT: TS. ĐINH BÁ TIẾN HƯỚNG DẪN THỰC HÀNH TUẦN 08 – ĐỌC XUẤT FILE NGUYỄN SƠN HOÀNG QUỐC NGUYỄN HOÀNG KHAI HỒ TUẤN THANH TP.HCM, ngày 28 tháng 04 năm 2011

nhập xuất file 2 c++

Embed Size (px)

DESCRIPTION

nhập xuất file 2 c++

Citation preview

Page 1: nhập xuất file 2 c++

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM

HỆ CHÍNH QUI

MÔN: KỸ THUẬT LẬP TRÌNH GVLT: TS. ĐINH BÁ TIẾN

HƯỚNG DẪN THỰC HÀNH

TUẦN 08 – ĐỌC XUẤT FILE

NGUYỄN SƠN HOÀNG QUỐC

NGUYỄN HOÀNG KHAI

HỒ TUẤN THANH

TP.HCM, ngày 28 tháng 04 năm 2011

Page 2: nhập xuất file 2 c++

[email protected]

Trang 2

MỤC LỤC

1 Nội dung ...................................................................................................................... 3

2 Kỹ thuật đọc ghi file .................................................................................................... 3

2.1 Đọc xuất file đơn giản ............................................................................................ 3

2.1.1 Đọc dữ liệu file ................................................................................................ 3

2.1.2 Ghi dữ liệu xuống file ..................................................................................... 6

2.2 Đọc xuất mảng phân số .......................................................................................... 7

3 Pragma once .............................................................................................................. 11

3.1 Bản chất của include ............................................................................................ 11

3.2 Pragma once– Anh là ai ....................................................................................... 13

4 Bài tập trên lớp .......................................................................................................... 14

5 Bài tập về nhà ............................................................................................................ 15

Page 3: nhập xuất file 2 c++

[email protected]

Trang 3

1 Nội dung - Kỹ thuật đọc ghi file.

- Pragma once: anh là ai?

- Bài tập trên lớp

- Bài tập về nhà

2 Kỹ thuật đọc ghi file

2.1 Đọc xuất file đơn giản

- Giả ta có một file input.txt chứa các thông tin được bố trí như sau:

o Một số nguyên

o Một số thực

o Một chuỗi ko có khoảng trắng

o Một chuỗi có khoảng trắng

- Vấn đề: làm sao đọc file lên + làm sao ghi xuống file theo định dạng như vậy?

2.1.1 Đọc dữ liệu file

- Nhớ:

- Mở file. Lưu ý:

Page 4: nhập xuất file 2 c++

[email protected]

Trang 4

o Ở đây thay vì truyền vào tên file, có thể truyền vào đường dẫn tuyệt đối của

file.

o Nếu chỉ truyền vào tên file, thì file input.txt phải đặt trong thư mục chứa

source code.

o Rất dễ nhầm lẫn giữa input.txt.txt và input.txt nếu trên máy tính của mình

thiết lập Hide well-known extensions (ẩn các phần đuôi thông dụng).

- Đọc dữ liệu: tương tự cin

Page 5: nhập xuất file 2 c++

[email protected]

Trang 5

- Ở đây ta thấy có dòng boDoc.get()

o Nếu bỏ (đánh dấu ghi chú) dòng này khi đọc lên ten = chuỗi rỗng kết

quả khi ghi file

o Do đó, cần thêm dòng code boDoc.get() sau khi đọc maso

Page 6: nhập xuất file 2 c++

[email protected]

Trang 6

- Làm xong nhớ đóng file

2.1.2 Ghi dữ liệu xuống file

- Nhớ:

- Mở file

Page 7: nhập xuất file 2 c++

[email protected]

Trang 7

- Ghi dữ liệu xuống tương tự như cout

- Làm xong nhớ đóng file

2.2 Đọc xuất mảng phân số

- Giả sử ta có file MPS_In.txt chứa mảng các phân số có cấu trúc như sau:

o Số phần tử

o Danh sách các phân số

- Vấn đề: làm sao đọc được dữ liệu từ file đó lên và ghi được file như vậy

- Ở đây, ta bố trí project có 5 file:

o Main.cpp: chứa hàm main

Page 8: nhập xuất file 2 c++

[email protected]

Trang 8

o PhanSo.h và PhanSo.cpp: khai báo struct + khai báo và định nghĩa hàm

đọc ghi phân số

o MangPhanSo.h và MangPhanSo.cpp: khai báo struct + khai báo và định

nghĩa hàm đọc ghi mảng phân số

- PhanSo.h:

- PhanSo.cpp:

Page 9: nhập xuất file 2 c++

[email protected]

Trang 9

- MangPhanSo.h:

- MangPhanSo.cpp:

Page 10: nhập xuất file 2 c++

[email protected]

Trang 10

- Main.cpp:

Page 11: nhập xuất file 2 c++

[email protected]

Trang 11

- Ghi tiếp file cũ tự tìm hiểu (append mode ofstream C++)

3 Pragma once - Giả sử ta có 5 file như trong phần hướng dẫn trước. Bây giờ, thử bỏ 2 câu

#pragma once trong 2 file .h. Trong file Main.cpp có đoạn code sau:

- Tại sao? Vì sao thế ?

3.1 Bản chất của include

- Bản chất của include là sự thay thế. Tức là chỗ nào có include thì khi biên dịch,

trình biên dịch sẽ lấy đoạn code trong file được include thay thế cho dòng include.

Chẳng hạn. Với file Main.cpp sau:

- Tương đương với:

Page 12: nhập xuất file 2 c++

[email protected]

Trang 12

- Như vậy với file Main.cpp ban đầu:

- Tương đương với:

Page 13: nhập xuất file 2 c++

[email protected]

Trang 13

- Rõ ràng, nhìn vào đây ta thấy PhanSo được khai báo 2 lần báo lỗi là phải

3.2 Pragma once– Anh là ai

- Pragma once là câu lệnh do Microsoft đưa ra, ngụ ý rằng: nếu file này đã include

rồi thì ko cần include nữa tránh lỗi include file PhanSo.h đến 2 lần.

- Pragmace once ko nằm trong chuẩn của C/C++, nên một số trình biên dịch sẽ ko

hiểu câu lệnh này.

- Nó tương đương với việc:

Page 14: nhập xuất file 2 c++

[email protected]

Trang 14

- _PHANSO_H_ ở đây có ý nghĩa là một chuỗi duy nhất ko được trong một

project, có 2 file .h mà ta define cùng 1 chuỗi này.

4 Bài tập trên lớp - Viết chương trình:

1. Đọc vào một danh sách liên kết các phân số từ file DSPhanSo.in

2. Xuất danh sách ra màn hình.

3. Tìm ra phân số lớn nhất. Xuất phân số lớn nhất ra file PhanSoLonNhat.out.

4. Xuất danh sách phân số ra file DSPhanSo.out

- Yêu cầu:

o Chia hàm, chia file

o Struct

o Danh sách liên kết

o Dùng ifndef… (ko dùng pragma once

Page 15: nhập xuất file 2 c++

[email protected]

Trang 15

5 Bài tập về nhà 1. Dữ liệu:

a. Qui định cấu trúc file dữ liệu cho bài tập lớn

b. Nhập dữ liệu mẫu cho các file

2. Lập trình:

a. Thực hiện các chức năng đọc các file dữ liệu lên

b. Thực hiện các chức năng ghi dữ liệu xuống file (khi người dùng chọn chức

năng thoát. VD: Quản trị viên chọn menu Thoat (thực hiện ghi dữ liệu

xuống ở đây) Quay về menu hỏi đăng nhập, đăng ký hay Thoat

3. Nộp bài:

a. Thư mục Data: các file dữ liệu

b. Thư mục Source Code: source code của yêu cầu (2) ở trên.

c. Nén cả 2 thư mục thì 1 file nén duy nhất.