Bài giảng Nhập môn lập trình: Chương 8 - Nguyễn Sơn Hoàng Quốc

36 75 0
Bài giảng Nhập môn lập trình: Chương 8 - Nguyễn Sơn Hoàng Quốc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Nhập môn lập trình - Chương 8: Lập trình với tập tin văn bảng thô cung cấp cho người học các kiến thức: Các dạng tập tin theo góc độ người lập trình, các thao tác trên tập tin, các vấn đề mở rộng kiến thức nghề nghiệp. Mời các bạn cùng tham khảo.

Chương 8: Lập trình với tập tin văn bảng thơ TS Nguyễn Sơn Hồng Quốc Nhập mơn lập trình CuuDuongThanCong.com https://fb.com/tailieudientucntt CÁC DẠNG TẬP TIN THEO GÓC ĐỘ NGƯỜI LẬP TRÌNH CuuDuongThanCong.com https://fb.com/tailieudientucntt Giới thiệu tập tin • Việc lập trình với tập tin nhằm để lưu trữ liệu chương trình vào nhớ phụ truy xuất trở lại liệu cần thiết Thông thường liệu lưu trữ tập tin đĩa • Về mặt kỹ thuật lập trình, người ta xem có hai dạng tập tin tập tin văn thô tập tin tin nhị phân CuuDuongThanCong.com https://fb.com/tailieudientucntt Tập tin văn thơ • Đây dạng tập tin văn có cấu trúc đơn giản thơng dụng nhất, xem nội dung sửa chữa lệnh hệ điều hành hay chương trình soạn thảo văn đơn giản • Thông thường lưu trữ đĩa dạng txt • Hầu hết mã nguồn chương trình lưu trữ đĩa dạng tập tin văn thơ • Nội dung gồm ký tự 8-bit • Các ký tự thấy có mã từ 0x20 trở lên • Các ký tự điều khiển có mã nhỏ 0x20 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tập tin văn thơ mở rộng • Có thể lưu ký tự Unicode hay ký tự nhiều byte (multi-byte character) • Hai cấu trúc văn thô mở rộng thông dụng là: – Unicode text: lưu ký tự UTF-16 – UTF-8: lưu ký tự độ dài biến động từ đến byte CuuDuongThanCong.com https://fb.com/tailieudientucntt Tập tin nhị phân • Là tập tin khơng có cấu trúc tập tin văn thơ • Mỗi tập tin bao gồm dãy byte liệu, gồm dạng: – Các byte không liên quan mặt cấu trúc tổ chức tập tin – Được cấu trúc hóa tùy theo qui ước phần mềm tạo tập tin CuuDuongThanCong.com https://fb.com/tailieudientucntt CÁC THAO TÁC TRÊN TẬP TIN CuuDuongThanCong.com https://fb.com/tailieudientucntt Các bước để lập trình tập tin • Bao gồm bước chính: – Bước Mở tập tin, người lập trình cần phải đưa vào đường dẫn tên tập tin xác – Bước Sử dụng tập tin (sau mở tập tin thành cơng) • Đọc liệu từ tập tin đưa vào biến nhớ chương trình • Ghi liệu từ biến nhớ chương trình lên tập tin – Bước Đóng tập tin (sau hồn tất cơng việc cần thiết) CuuDuongThanCong.com https://fb.com/tailieudientucntt Hàm mở tập tin FILE *fopen(const char *filename, const char *mode) Mở tập tin có tên (đường dẫn) chứa filename với kiểu mở mode (xem bảng) Thành công: trỏ kiểu cấu trúc FILE Thất bại: NULL (sai quy tắc đặt tên tập tin, không tìm thấy ổ đĩa, khơng tìm thấy thư mục, mở tập tin chưa có để đọc, …) FILE* fp = fopen("taptin.txt", "rt"); if (fp == NULL) printf("Khong mo duoc tap tin!"); CuuDuongThanCong.com https://fb.com/tailieudientucntt Đối số mở tập tin (mode) Đối số Ý nghĩa b Mở tập tin kiểu nhị phân (binary) t Mở tập tin kiểu văn (text) (mặc định) r Mở tập tin để đọc liệu từ tập tin Trả NULL khơng tìm thấy tập tin w Mở tập tin để ghi liệu vào tập tin Tập tin tạo chưa có, ngược lại liệu trước bị xóa hết a Mở tập tin để thêm (append) liệu vào cuối tập tin Tập tin tạo chưa có r+ Giống mode r bổ sung thêm tính ghi liệu tập tin tạo chưa có w+ Giống mode w bổ sung thêm tính đọc a+ Giống mode a bổ sung thêm tính đọc 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Hàm nhập ký tự int getc(FILE *fp) int fgetc(FILE *fp) Đọc ký tự từ stream fp getc macro fgetc phiên hàm macro getc Thành công: trả ký tự đọc sau chuyển sang số nguyên không dấu Thất bại: trả EOF kết thúc stream fp gặp lỗi char ch; FILE* fp = fopen("taptin.txt", "rt"); if (fp != NULL) ch = getc(fp); \\  ch = fgetc(fp); 23 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập ứng dụng • Ví dụ: char ch; FILE* fp = fopen("taptin.txt", "rt"); if (fp != NULL) ch = getc(fp); \\  ch = fgetc(fp); • Minh họa: – Đếm số từ tập tin "data.txt" biết từ cách 01 khoảng trắng 01 dấu xuống dòng 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương trình minh họa int count = 0; char ch; FILE* fp = fopen("data.txt", "r"); if (fp == NULL){ printf("Khong mo duoc tap tin!"); return -1; } 10 11 12 13 14 ch = fgetc(fp); while (ch != EOF){ if (ch == ' ' || ch == '\n') count++; ch = fgetc(fp); } printf("%d", count+1); CuuDuongThanCong.com 25 https://fb.com/tailieudientucntt Hàm xuất ký tự int putc(int ch, FILE *fp) int fputc(in ch, FILE *fp) Ghi ký tự ch vào stream fp putc macro fputc phiên hàm macro putc Thành công: trả ký tự ch Thất bại: trả EOF FILE* fp = fopen("taptin.txt", "wt"); if (fp != NULL) putc('a', fp); \\ fputc('a', fp); 28 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập ứng dụng • Ví dụ: FILE* fp = fopen("taptin.txt", "wt"); if (fp != NULL) putc('a', fp); \\  fputc('a', fp); • Áp dụng: – Viết chương trình chép tập tin cho trước sử dụng hàm putc 29 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương trình minh họa char ch; FILE* fi = fopen("input.txt", "r"); FILE* fo = fopen("output.txt", "w"); \\ chep file while ((ch = getc(fi)) != EOF) putc(ch, fo); 30 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập • Bài 1: Viết chương trình ghi số nguyên a, b, c nhập từ bàn phím vào tập tin • Bài 2: Viết chương trình đọc số nguyên a, b, c từ tập tin, sau giải phương trình ax2+ bx + c = ghi kết vào tập tin khác • Bài 3: Viết chương trình đọc n số nguyên từ tập tin cho trước, sau xếp tăng dần ghi kết vào tập tin khác Ví dụ:   46 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập thực hành • Bài 4: Viết chương trình ghi dòng văn nhập từ bàn phím lên tập tin • Bài 5: Viết chương trình in nội dung tập tin lên hình • Bài 6: Viết chương trình đếm số ký tự chữ tập tin xuất kết tập tin khác • Bài 7: Viết chương trình đếm số từ tập tin xuất kết tập tin khác • Bài 8: Viết chương trình đếm số lần lặp lại từ tập tin 47 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập thực hành • Bài 9: Viết chương trình mở tập tin văn có đĩa, chép thành tập tin văn với điều kiện chữ thường đổi thành chữ hoa, tất ký tự khác khơng đổi • Bài 10: Viết chương trình ghép tập tin văn bản, nội dung tập tin thứ hai ghép sau tập tin thứ 48 CuuDuongThanCong.com https://fb.com/tailieudientucntt CÁC VẤN ĐỀ MỞ RỘNG KIẾN THỨC NGHỀ NGHIỆP 49 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tìm hiểu thêm • • • • Kiến trúc thư viện nhập xuất C++ Cấu trúc vài tập tin sở liệu Cấu trúc số tập tin ảnh Tập tin XML việc lập trình 50 CuuDuongThanCong.com https://fb.com/tailieudientucntt THUẬT NGỮ VÀ BÀI ĐỌC THÊM TIẾNG ANH 51 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuật ngữ tiếng Anh • • • • • • • • • • • binary file: tập tin nhị phân end of file, EOF character: ký hiệu kết thúc tập tin file processing: xử lý tập tin Hypertext Markup Language: ngôn ngữ HTML dùng để lưu trữ tập tin văn thơ có cấu trúc dùng cho trình duyệt web line: dòng (văn bản) multi-byte character: ký tự lưu trữ nhiều byte random access: truy xuất ngẫu nhiên read only: phép đọc record (danh từ): mẩu tin Rich Text Format: định dạng RTF, lưu đĩa dạng văn ASCII có cấu trúc, dùng để lưu trữ văn phức hợp có thơng tin định dạng lẫn biểu, hình ảnh sequentially access: truy xuất 52 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuật ngữ tiếng Anh • • • • • • • • string: chuỗi ký tự string elements: phần tử (ký tự) nằm chuỗi string functions: hàm thao tác chuỗi ký tự string operator: phép toán thao tác chuỗi ký tự stream: khái niệm dùng lập trình ngơn ngữ C/C++, dòng liệu nhập xuất, dùng đọc ghi liệu tập tin hay thiết bị nhập xuất tab: ký tự tab (tương đương với số khoảng trống hiển thị) text file, plain text, ASNI text (hay ASCII text): nói chung định dạng văn đơn giản soạn trình soạn thảo thơng dụng hệ điều hành Unicode text, UTF-8 text: định dạng văn thô dạn mở rộng, ký tự chiếm nhiều byte lưu trữ nhớ hay đĩa 53 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài đọc thêm tiếng Anh • Theory and Problems of Fundamentals of Computing with C++, John R.Hubbard, Schaum's Outlines Series, McGraw-Hill, 1998 54 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... https://fb.com/tailieudientucntt Bài tập thực hành • Bài 4: Viết chương trình ghi dòng văn nhập từ bàn phím lên tập tin • Bài 5: Viết chương trình in nội dung tập tin lên hình • Bài 6: Viết chương trình đếm số ký tự chữ... CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập • Bài 1: Viết chương trình ghi số nguyên a, b, c nhập từ bàn phím vào tập tin • Bài 2: Viết chương trình đọc số nguyên a, b, c từ tập tin,... khác • Bài 7: Viết chương trình đếm số từ tập tin xuất kết tập tin khác • Bài 8: Viết chương trình đếm số lần lặp lại từ tập tin 47 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập

Ngày đăng: 11/01/2020, 18:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan