Bài giảng Tin đại cương - Bài 5: Đọc ghi dữ liệu với tệp tin & Cấu trúc lệnh rẽ nhánh - Lý Anh Tuấn

pdf 27 trang ngocly 3620
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin đại cương - Bài 5: Đọc ghi dữ liệu với tệp tin & Cấu trúc lệnh rẽ nhánh - Lý Anh Tuấn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_tin_dai_cuong_bai_5_doc_ghi_du_lieu_voi_tep_tin_ca.pdf

Nội dung text: Bài giảng Tin đại cương - Bài 5: Đọc ghi dữ liệu với tệp tin & Cấu trúc lệnh rẽ nhánh - Lý Anh Tuấn

  1. Môn học Tin đại cương Lý Anh Tuấn Bộ môn Khoa học máy tính, Khoa Công nghệ thông tin, Trường đại học Thủy Lợi 1
  2. Buổi 5: Đọc ghi dữ liệu với tệp tin & Cấu trúc lệnh rẽ nhánh  C++ cung cấp các lớp sau để thực hiện đọc ghi dữ liệu với tệp tin  ofstream: Lớp ghi dữ liệu vào tệp tin  ifstream: Lớp đọc dữ liệu từ tệp tin  fstream: Lớp đọc và ghi dữ liệu với tệp tin  Các lớp này được định nghĩa trong thư viện fstream và đặt trong không gian tên std 2
  3. Đọc ghi dữ liệu với tệp tin  Tạo đối tượng và gắn nó với một tệp tin trên đĩa  Cách 1: Tạo trước một đối tượng chưa gắn với tệp tin cụ thể nào. Sau đó dùng phương thức open để mở tệp tin và gắn nó với đối tượng vừa tạo. Cú pháp: đối_tượng; đối_tượng.open(tên_tệp, chế_độ); Ví dụ: ifstream tepdl; // tạo đối tượng có tên tepdl để đọc ofstream tepdl; // tạo đối tượng có tên tepdl để ghi tepdl.open(“vidu.txt"); // mở tệp vidu.txt và gắn với tepdl 3
  4. Đọc ghi dữ liệu với tệp tin  Cách 2: Mở một tệp tin đồng thời gắn tệp tin với tên đối tượng Cú pháp đối_tượng(tên_tệp, chế_độ); Ví dụ: ifstream tepdl("vidu.txt"); // mở tệp tin vidu.txt gắn với đối tượng tepdl để đọc ofstream tepdl("vidu.txt”); // mở tệp tin vidu.txt gắn với đối tượng tepdl để ghi  Sau khi mở tệp tin và gắn với đối tượng tepdl, mọi thao tác trên tepdl cũng chính là làm việc với tệp vidu.txt 4
  5. Đọc ghi dữ liệu với tệp tin  Sau khi đã gắn một đối tượng với một tệp tin trên đĩa, có thể sử dụng đối tượng tương tự như sử dụng cin, cout.  Nếu thay cout bởi tên đối tượng, dữ liệu sẽ được ghi vào tệp tin mà đối tượng đại diện thay vì in ra màn hình  Tương tự, nếu thay cin bởi tên đối tượng, dữ liệu sẽ được đọc từ tệp thay vì từ bàn phím 5
  6. Đọc ghi dữ liệu với tệp tin  Đóng tệp tin:  Sử dụng hàm close() để đóng tệp tin và giải phóng đối tượng Ví dụ: tepdl.close();  Kiểm tra việc mở tệp tin  Sử dụng hàm is_open(): hàm này sẽ trả về giá trị true nếu việc mở tệp tin thành công  Sử dụng hàm fail(): hàm này sẽ trả về giá trị true nếu việc mở tệp tin thất bại 6
  7. Đọc ghi dữ liệu với tệp tin  Ví dụ 1; ifstream tepdl(“vidu.txt"); if (tepdl.is_open()){ /* thành công, tiếp tục công việc */ }  Ví dụ 2: ifstream tepdl("vidu.txt"); if (tepdl.fail()){ cout << “Khong mo duoc tep tin"; exit(1); } /* thành công, tiếp tục công việc */ 7
  8. Đọc ghi dữ liệu với tệp tin  Kiểm tra việc hết tệp:  Khi đọc dữ liệu, con trỏ tệp sẽ chuyển dần về cuối tệp, khi con trỏ ở cuối tệp hàm eof() sẽ trả về giá trị true  Ví dụ: while (! tepdl.eof() ) { /* đọc dữ liệu từ tệp */ } 8
  9. Ví dụ 9
  10. Ví dụ 10
  11. Cấu trúc lệnh rẽ nhánh  Các cấu trúc lệnh  Câu lệnh if  Câu lệnh switch 11
  12. Câu lệnh (Nhắc lại)  Câu lệnh trong C++ được thiết lập từ các từ khoá và các biểu thức  Câu lệnh luôn luôn được kết thúc bằng dấu chấm phẩy  Các câu lệnh được phép viết trên cùng một hoặc nhiều dòng  Câu lệnh gồm nhiều lệnh được bao bởi cặp dấu ngoặc {} và được gọi là khối lệnh. 12
  13. Cấu trúc lệnh rẽ nhánh  Các cấu trúc lệnh cơ bản của chương trình  Cấu trúc tuần tự: Thực hiện các câu lệnh một cách tuần tự từ trên xuống dưới  Cấu trúc lựa chọn: Chọn thực hiện một nhóm lệnh dựa trên một điều kiện nào đó - câu lệnh if, câu lệnh switch 13
  14. Câu lệnh if Sử dụng khi phải lựa chọn có thực hiện công việc hay không hoặc khi phải lựa chọn thực hiện một trong hai việc  Câu lệnh if dạng 1  Cú pháp: if (Điềukiện) Lệnh1;  Trong đó: - Điềukiện là một biểu thức lôgíc cho kết quả true (đúng) hoặc false (sai) - Lệnh1 có thể là một lệnh đơn hoặc một lệnh ghép (khối lệnh) 14
  15. Câu lệnh if  Lưu đồ sai Điềukiệ n đúng Lệnh1 Câu lệnh if dạng 1 15
  16. Câu lệnh if  Sự thực hiện:  Tuỳ theo Điềukiện là đúng hay sai mà quyết định có thực hiện Lệnh1 hay không.  Nếu Điềukiện là đúng thì thực hiện Lệnh1 rồi chuyển sang thực hiện lệnh kế tiếp phía dưới.  Nếu Điềukiện là sai thì không thực hiện Lệnh1 mà chuyển ngay sang lệnh kế tiếp. 16
  17. Câu lệnh if  Ví dụ 1: câu lệnh if dạng 1  Ví dụ 2: câu lệnh if và khối lệnh 17
  18. Câu lệnh if  Câu lệnh if dạng 2  Cú pháp: if (Điềukiện) Lệnh1; else Lệnh2;  Trong đó: - Điềukiện là một biểu thức lôgíc cho kết quả true (đúng) hoặc false (sai) - Lệnh1, Lệnh2 có thể là một lệnh đơn hoặc một lệnh ghép (khối lệnh) 18
  19. Câu lệnh if  Lưu đồ: sai Điềukiện đúng Lệnh1 Lệnh2 Câu lệnh if dạng 2 19
  20. Câu lệnh if  Sự thực hiện:  Tuỳ theo Điềukiện là đúng hay sai để quyết định thực hiện một trong hai lệnh: Lệnh1 hoặc Lệnh2.  Nếu Điềukiện là đúng thì thực hiện Lệnh1, không thực hiện Lệnh2.  Ngược lại, nếu Điềukiện là sai thì không thực hiện Lệnh1 mà thực hiện Lệnh2. 20
  21. Câu lệnh if  Ví dụ 1: câu lệnh if dạng 2  Ví dụ 2: câu lệnh if lồng nhau 21
  22. Câu lệnh switch Sử dụng khi phải lựa chọn thực hiện một việc trong nhiều việc  Cú pháp: switch (biểuthức) { case hằng1 : Nhóm lệnh 1; break; case hằng2 : Nhóm lệnh 2; break; . [default Nhóm lệnh mặc định;] } 22
  23. Câu lệnh switch  Trong đó:  biểuthức: phải có kiểu nguyên hoặc kí tự  hằng1, hằng2, : được tạo từ các hằng nguyên hoặc kí tự  Các nhóm lệnh không cần bao bởi cặp dấu {} và có thể rỗng  Nhánh default có thể có hoặc không 23
  24. Câu lệnh switch  Sự thực hiện:  Tuỳ theo giá trị của biểu thức bằng hằng nào trong các hằng: hằng1, hằng2, mà quyết định thực hiện nhóm lệnh tương ứng trong các nhóm lệnh: Nhóm lệnh 1, Nhóm lệnh 2,  Khi đang thực hiện một nhóm lệnh nếu gặp lệnh break, chương trình sẽ ra khỏi lệnh switch  Trong trường hợp biểu thức không bằng hằng nào: nếu có default thì thực hiện nhóm lệnh mặc định sau default nếu không có thì kết thúc 24
  25. Câu lệnh switch  Ví dụ 1: Chuyển đổi giữa lệnh switch và lệnh if 25
  26. Câu lệnh switch  Ví dụ 2: Các nhóm lệnh có thể rỗng 26
  27. Bài tập 1, Cho 2 số thực a, b bất kỳ. Tìm thương của hai số nếu b khác 0, trong trường hợp b=0 kết luận không tồn tại thương 2, Cho ba hệ số a, b, c giải và biện luận phương trình bậc hai ax2 + bx + c =0 3, Nhập vào một tháng bất kỳ, cho biết số ngày trong tháng đó 27