1. Trang chủ
  2. » Thể loại khác

Bài giảng nhập môn lập trình

101 242 0

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ THÔNG TIN -o0o BÀI GIẢNG NHẬP MÔN LẬP TRÌNH Nhóm biên soạn: Bộ môn Công nghệ lập trình &Ứng dụng Hệ đào tạo: Đại học qui Năm học 2014 – 2015 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ THÔNG TIN -o0o BÀI GIẢNG MÔN HỌC NHẬP MÔN LẬP TRÌNH HỆ ĐẠI HỌC CHÍNH QUY KHOA PHÊ DUYỆT BM PHÊ DUYỆT GV PHỤC TRÁCH Năm học 2014 – 2015 MỤC LỤC CHƯƠNG GIỚI THIỆU TỔNG QUAN VỀ LẬP TRÌNH 1.1 Khái niệm chương trình máy tính 1.1.1 Chương trình (Program) 1.1.2 Giải thuật (Algorithm) 1.1.3 Ngôn ngữ lập trình (Programming language) .7 1.2 Biểu diễn thuật toán 1.2.1 Sử dụng ngôn ngữ tự nhiên 1.2.2 Sử dụng lưu đồ - Sơ đồ khối 1.2.3 Sử dụng mã giả 13 1.3 Các bước xây dựng chương trình 14 1.4 Hệ đếm biểu diễn số hệ đếm 14 1.4.1 Hệ đếm 14 1.4.2 Biểu diễn số hệ đếm 15 1.4.2.1 Hệ đếm thập phân (decimal system) 15 1.4.3 Hệ đếm nhị phân (binary number system) 16 1.4.4 Hệ đếm thập lục phân (hexa-decimal number system) 17 1.4.5 Đổi số nguyên từ hệ thập phân sang hệ b 17 CHƯƠNG CÁC THÀNH PHẦN TRONG NGÔN NGỮ C 18 2.1 Các khái niệm 18 2.1.1 Từ khóa 18 2.1.2 Tên 18 2.1.3 Tập ký tự dùng ngôn ngữ C 19 2.1.4 Các kiểu liệu sở 20 2.1.5 Cấu trúc chương trình C 25 2.2 Biểu thức phép toán C 27 2.2.1 Biểu thức .27 2.2.2 Các phép toán 28 2.2.3 Biểu thức điều kiện .35 2.3 Khai báo biến .35 2.3.1 Khai báo biến 35 2.3.2 Phạm vi biến 37 2.4 Ghi .37 2.5 Nhập / Xuất liệu C .38 2.5.1 Hàm printf .38 2.5.2 Hàm scanf .41 CHƯƠNG CÁC CẤU TRÚC ĐIỀU KHIỂN 43 3.1 Cấu trúc rẽ nhánh 43 3.1.1 Cấu trúc if-else 43 3.1.2 Cấu trúc switch: 46 3.2 Cấu trúc lặp .48 3.2.1 Cấu trúc lặp for 49 3.2.2 Cấu trúc lặp while 51 3.2.3 Cấu trúc lặp do-while 53 3.3 Câu lệnh break, continute 54 3.3.1 Câu lệnh break 54 3.3.2 Câu lệnh continue 55 CHƯƠNG HÀM VÀ TRUYỀN THAM SỐ 57 4.1 Định nghĩa hàm C 57 4.1.1 Khai báo hàm 57 4.1.2 Phạm vi hoạt động biến 59 4.2 Truyền tham số cho hàm 61 4.3 Một số ví dụ minh họa 64 CHƯƠNG CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC .65 5.1 Kiểu liệu mảng 65 5.1.1 Mảng chiều 65 5.1.2 Mảng hai chiều 69 5.2 Chuỗi ký tự 78 5.2.1 Khái niệm 78 5.2.2 Một số hàm thao tác chuỗi ký tự 79 5.2.3 Một số ví dụ minh họa 81 5.3 Dữ liệu structure 81 5.3.1 Khái niệm 81 5.3.2 Truy xuất đến thành phần kiểu cấu trúc 82 5.3.3 Khai báo kiểu cấu trúc 82 5.3.4 Cách khai báo biến có kiểu structure 82 CHƯƠNG TẬP TIN 86 6.1 Khái niệm tệp tin 86 6.2 Một số hàm thường dùng thao tác tệp 87 6.2.1 Khai báo sử dụng tệp 87 6.2.2 Mở tệp - hàm fopen 87 6.2.3 Đóng tệp - hàm fclose 89 6.2.4 Đóng tất tệp mở- hàm fcloseall: 90 6.2.5 Kiểmtra cuối tệp - hàm feof 90 6.2.6 Truy nhập ngẫu nhiên - hàm di chuyên trỏ vị: 90 6.2.6.1 Chuyển trỏ vị đầu tệp - Hàm rewind: 90 6.2.6.2 Chuyển trỏ vị trí cần thiết - Hàm fseek .91 6.2.6.3 Vị trí trỏ vị - Hàm ftell: 91 6.2.7 Ghi mẫu tin lên tệp - hàm fwrite 92 6.2.8 Đọc mẫu tin từ tệp - hàm fread 93 6.2.9 Nhập xuất ký tự 94 6.2.9.1 Các hàm putc fputc 94 6.2.9.2 Các hàm getc fgettc 95 6.2.10 Xoá tệp - hàm unlink: 96 6.3 Một số ví dụ 97 6.3.1 Ghi, đọc mảng 97 6.3.2 Ghi, đọc structure 98 Tài liệu tham khảo .101 CHƯƠNG GIỚI THIỆU TỔNG QUAN VỀ LẬP TRÌNH 1.1 Khái niệm chương trình máy tính Phần tìm hiểu số khái niệm thuật toán, chương trình, ngôn ngữ lập trình Thuật ngữ "thuật giải" "thuật toán" dĩ nhiên có khác song nhiều trường hợp chúng có nghĩa 1.1.1 Chương trình (Program) Là tập hợp mô tả, phát biểu, nằm hệ thống qui ước ý nghĩa thứ tự thực hiện, nhằm điều khiển máy tính làm việc Theo Niklaus Wirth thì: Chương trình = Thuật toán + Cấu trúc liệu Các thuật toán chương trình có cấu trúc dựa cấu trúc điều khiển bản: Tuần tự (Sequential): Các bước thực cách xác từ xuống, bước thực lần Chọn lọc (Selection): Chọn hay nhiều thao tác để thực Lặp lại (Repetition): Một hay nhiều bước thực lặp lại số lần Muốn trở thành lập trình viên chuyên nghiệp bạn làm trình tự để có thói quen tốt thuận lợi sau nhiều mặt người làm máy tính Bạn làm theo bước sau: Tìm, xây dựng thuật giải (trên giấy)  viết chương trình máy  dịch chương trình  chạy thử chương trình 1.1.2 Giải thuật (Algorithm) Là dãy thao tác xác định đối tượng, cho sau thực số hữu hạn bước đạt mục tiêu Theo R.A.Kowalski chất thuật giải: Thuật giải = Logic + Điều khiển Logic: Đây phần quan trọng, trả lời câu hỏi "Thuật giải làm gì, giải vấn đề gì?", yếu tố toán có quan hệ với v.v… Ở bao gồm kiến thức chuyên môn mà bạn phải biết để tiến hành giải toán Ví dụ 1.1: Để giải toán tính diện tích hình cầu, mà bạn không nhớ công thức tính hình cầu bạn viết chương trình cho máy để giải toán Điều khiển: Thành phần trả lời câu hỏi: giải thuật phải làm nào? Chính cách thức tiến hành áp dụng thành phần logic để giải vấn đề 1.1.3 Ngôn ngữ lập trình (Programming language) Ngôn ngữ lập trình hệ thống ký hiệu tuân theo qui ước ngữ pháp ngữ nghĩa, dùng để xây dựng thành chương trình cho máy tính Một chương trình viết ngôn ngữ lập trình cụ thể (ví dụ C, …) gọi chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi máy tính 1.2 Biểu diễn thuật toán Khi chứng minh giải toán toán học, ta thường dùng ngôn từ toán học như: "ta có", "điều phải chứng minh", "giả thuyết", sử dụng phép suy luận toán học phép suy ra, tương đương, Thuật toán phương pháp thể lời giải toán nên phải tuân theo số quy tắc định Ðể truyền đạt thuật toán cho người khác hay chuyển thuật toán thành chương trình máy tính, ta phải có phương pháp biểu diễn thuật toán a) Các đặc trưng thuật toán: Tính xác định: Các thao tác, đối tượng, phương tiện thuật toán phải có ý nghĩa rõ ràng, không gây nhầm lẫn Nói cách khác, hai chế hoạt động khác thực thuật toán, sử dụng đối tượng, phương tiện nhập phải cho kết Tính dừng: Đòi hỏi thuật toán phải dừng cho kết sau số hữu hạn bước Tính thuật toán: Thuật toán thuật toán cho kết thỏa mãn đặc tả thuật toán với trường hợp đối tượng, phương tiện nhập Tính phổ dụng: Thuật toán để giải lớp toán gồm nhiều cụ thể, lớp xác định đặc tả Dĩ nhiên có lớp toán gồm Thuật toán không cần sử dụng đối tượng, phương tiện nhập b) Phương pháp biểu diễn: Thuật toán diễn đạt nhiều hình thức, chẳng hạn dạng lưu đồ, dạng ngôn ngữ tự nhiên, dạng mã giả ngôn ngữ lập trình khác Dạng ngôn ngữ tự nhiên: Thuật toán trình bày dạng ngôn ngữ tự nhiên theo trình tự bước thực thuật toán Dạng ngôn ngữ lập trình: Dùng cấu trúc lệnh, liệu ngôn ngữ lập trình để mô tả Dạng mã giả: Thuật toán trình bày dạng văn ngôn ngữ tự nhiên dễ hiểu khó cài đặt Dùng ngôn ngữ lập trình để diễn tả phức tạp, khó hiểu Thông thường thuật toán trao đổi dạng văn – không ràng buộc nhiều vào cú pháp xác định ngôn ngữ lập trình, tuân theo số quy ước ban đầu – ta gọi dạng mã giả Tùy theo việc định hướng cài đặt thuật toán theo ngôn ngữ lập trình ta diễn đạt thuật toán gần với ngôn ngữ Dạng lưu đồ: Trong phương pháp biểu diễn, chủ yếu nghiên cứu phương pháp biểu diễn theo dạng Dạng lưu đồ dùng hình vẽ (có quy ước) để diễn đạt thuật toán Lưu đồ cho hình ảnh trực quan tổng thể thuật toán, thường sử dụng nhiều 1.2.1 Sử dụng ngôn ngữ tự nhiên Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, người ta sử dụng ngôn ngữ thường ngày để liệt kê bước thuật toán Phương pháp biểu diễn không yêu cầu người viết thuật toán người đọc thuật toán phải nắm quy tắc Tuy vậy, cách biểu diễn thường dài dòng, rõ cấu trúc thuật toán, đôi lúc gây hiểu lầm khó hiểu cho người đọc Gần quy tắc cố định việc thể thuật toán ngôn ngữ tự nhiên Tuy vậy, để dễ đọc, ta nên viết bước lùi vào bên phải đánh số bước theo quy tắc phân cấp 1, 1.1, 1.1.1, Ví dụ 1.2: Ðể tính tổng số nguyên dương lẻ khoảng từ đến n ta có thuật toán sau: B1 Hỏi giá trị n B2 S = B3 i = B4 Nếu i = n+1 sang bước B8, ngược lại sang bước B5 B5 Cộng thêm i vào S B6 Cộng thêm vào i B7 Quay lại bước B4 B8 Tổng cần tìm S Ta ý đến bước B4 Ở ta muốn kết thúc thuật toán giá trị i vượt n Thay viết "nếu i lớn n" ta thay điều kiện "nếu i n+1" theo toán học "i = n+1" suy "i lớn n" Nhưng điều kiện "i = n+1" lúc đạt Vì ban đầu i = số lẻ, sau bước, i tăng thêm nên i số lẻ Nếu n số chẵn n+1 số lẻ nên sau số bước định, i n+1 Tuy nhiên, n số lẻ n+1 số chẵn, i số lẻ nên dù có qua bước nữa, i khác n+1 Trong trường hợp đó, thuật toán bị quẩn 1.2.2 Sử dụng lưu đồ - Sơ đồ khối Để dễ quy trình xử lý, nhà lập trình đưa dạng lưu đồ để minh họa bước trình xử lý vấn đề (bài toán) Các ký hiệu sử dụng phương pháp biểu diễn thuật toán lưu đồ: Chú ý vẽ lưu đồ: - Trước tiên tập trung vẽ số đường lưu đồ - Thêm vào tất nhánh vòng lặp - Một lưu đồ có điểm Bắt đầu điểm kết thúc - Mỗi bước chương trình không cần thể lưu đồ - Lưu đồ cần phải đáp ứng yêu cầu: người lập trình khác hiểu lưu đồ cách dễ dàng 10 - Dữ liệu ghi lên tệp theo byte nhị phân nhớ, trình nhập xuất, liệu không bị biến đổi - Khi đọc tệp, gặp cuối tệp ta nhận mã kết thúc tệp EOF (được định nghĩa stdio.h -1) hàm feof cho giá trị khác Nhập xuất văn bản: - Kiểu nhập xuất văn khác kiểu nhị phân xử lý ký tự chuyển dòng (mã 10) ký tự mã 26 Đối với ký tự khác, hai kiểu đọc ghi - Mã chuyển dòng: Khi ghi, ký tự LF (mã 10) chuyển thành ký tự CR (mã 13) LF Khi đọc, ký tự liên tiếp CR LF tệp cho ta ký tự LF Mã kết thúc tệp: Trong đọc, gặp ký tự có mã 26 cuối tệp ta nhận mã kết thúc tệp EOF (bằng -1) hàm feof(fp) cho giá trị khác (bằng 1) 6.2 Một số hàm thường dùng thao tác tệp 6.2.1 Khai báo sử dụng tệp Để khai báo sử dụng tệp, ta dùng lệnh sau: FILE biến_con_trỏ_tệp; Trong biến_con_trỏ_tệp biến đơn hay danh sách biến phân cách dấu phảy ( dấu , ) Ví dụ 6.1: FILE *vb, *np; /* Khai báo hai biến trỏ tệp */ 6.2.2 Mở tệp - hàm fopen Cấu trúc ngữ pháp hàm: FILE *fopen(const char *tên_tệp, const char *kiểu); Nguyên hàm trong: stdio.h Trong đó: 87 Đối thứ tên tệp, đối thứ hai kiểu truy nhập Công dụng: Hàm dùng để mở tệp Nếu thành công hàm cho trỏ kiểu FILE ứng với tệp vừa mở Các hàm cấp hai làm việc với tệp thông qua trỏ Nếu có lỗi hàm trả giá trị NULL Bảng sau giá trị kiểu: ý nghĩa Tên kiểu "r" "rt" "w" "wt" "a" "at" "rb" "wb" "ab" "r+" "r+t" "w+" "w+t" "a+" "a+t" Mở tệp để đọc theo kiểu văn Tệp cần đọc phải tồn tại, không có lỗi Mở tệp để ghi theo kiểu văn Nếu tệp tồn bị xoá Mở tệp để ghi bổ xung theo kiểu văn Nếu tệp chưa tồn tạo tệp Mở tệp để đọc theo kiểu nhị phân Tệp cần đọc phải tồn tại, không có lỗi Mở tệp để ghi theo kiểu nhị phân Nếu tệp tồn bị xoá Mở tệp để ghi bổ xung theo kiểu nhị phân Nếu tệp chưa tồn tạo tệp Mở tệp để đọc/ghi theo kiểu văn Tệp cần đọc phải tồn tại, không có lỗi Mở tệp để đọc/ghi theo kiểu văn Nếu tệp tồn bị xoá Mở tệp để đọc/ghi bổ xung theo kiểu văn Nếu tệp chưa tồn tạo tệp 88 Mở tệp để đọc/ghi theo kiểu nhị phân Tệp cần đọc phải "r+b" tồn tại, không có lỗi Mở tệp để đọc/ghi theo kiểu nhị phân Nếu tệp tồn "w+b" bị xoá Mở tệp để đọc/ghi bổ xung theo kiểu nhị phân Nếu tệp chưa "a+b" tồn tạo tệp Chú ý: Trong kiểu đọc ghi, ta nên lầm vùng đệm trước chuyển từ đọc sang ghi ngược lại Ta đề cập đến hàm với tính xoá sau Ví dụ 6.2: f=fopen("TEPNP","wb"); 6.2.3 Đóng tệp - hàm fclose Cấu trúc ngữ pháp hàm: int fclose(FILE *fp); Nguyên hàm trong: stdio.h Trong đó: fp trỏ ứng với tệp cần đóng Công dụng: Hàm dùng để đóng tệp kết thúc thao tác Khi đóng tệp, máy thực công việc sau:  Khi ghi liệu máy đẩy liệu vùng đệm lên đĩa  Khi đọc liệu máy xoá vùng đệm  Giải phóng biến trỏ tệp  Nếu lệnh thành công, hàm cho giá trị 0, trái lại cho hàm EOF Ví dụ 6.3: fclose(f); 89 6.2.4 Đóng tất tệp mở- hàm fcloseall: Cấu trúc ngữ pháp hàm: int fcloseall(void); Nguyên hàm trong: stdio.h Công dụng: Hàm dùng để đóng tất tệp mở Nếu lệnh thành công, hàm cho giá trị số số tệp đóng, trái lại cho hàm EOF Ví dụ 6.4: fcloseall(); 6.2.5 Kiểmtra cuối tệp - hàm feof Cấu trúc ngữ pháp hàm: int feof(FILE *fp); Nguyên hàm trong: stdio.h Trong fp trỏ tệp Công dụng: Hàm dùng để kiểm tra cuối tệp Hàm cho giá trị khác gặp cuối tệp đọc, trái lại hàm cho giá trị 6.2.6 Truy nhập ngẫu nhiên - hàm di chuyên trỏ vị: 6.2.6.1 Chuyển trỏ vị đầu tệp - Hàm rewind: Cấu trúc ngữ pháp: void rewind(FILE *fp); Nguyên hàm trong: stdio.h Trong fp trỏ tệp Công dụng: Chuyển trỏ vị tệp fp đầu tệp Khi việc nhập xuất tệp fp thực từ đầu Ví dụ 6.5: rewind(f); 90 6.2.6.2 Chuyển trỏ vị trí cần thiết - Hàm fseek Cấu trúc ngữ pháp: int fseek(FILE *fp, long sb, int xp); Nguyên hàm trong: stdio.h Trong  fp trỏ tệp  sb số byte cần di chuyển  xp cho biết vị trí xuất phát mà việc dịch chuyển  xp nhận giá trị sau: xp=SEEK_SET hay 0: Xuất phát từ đầu tệp xp=SEEK_CUR hay 1: Xuất phát từ vị trí trỏ vị xp=SEEK_END hay 2: Xuất phát từ cuối tệp Công dụng: Chuyển trỏ vị tệp fp vị trí xác định xp qua số byte xác định giá trị tuyệt đối sb Chiều di chuyển cuối tệp sb dương, trái lại di chuyển đầu tệp Khi thành công, hàm trả giá trị Khi có lỗi hàm trả giá trị khác không Chú ý: Không nên dùng fseek tệp tin văn bản, chuyển đổi ký tự làm cho việc định vị thiếu xác Ví dụ 6.6: fseek(stream, SEEK_SET, 0); 6.2.6.3 Vị trí trỏ vị - Hàm ftell: Cấu trúc ngữ pháp: int ftell(FILE *fp); Nguyên hàm trong: stdio.h Trong fp trỏ tệp 91 Công dụng: Hàm cho biết vị trí trỏ vị (byte thứ tệp fp) thành công Số thứ tự tính từ Trái lại hàm cho giá trị -1L Ví dụ 6.7: Sau lệnh fseek(fp,0,SEEK_END); ftell(fp) cho giá trị Sau lệnh fseek(fp,-1,SEEK_END); ftell(fp) cho giá trị 6.2.7 Ghi mẫu tin lên tệp - hàm fwrite Cấu trúc ngữ pháp hàm: int fwrite(void *ptr, int size, int n, FILE *fp); Nguyên hàm trong: stdio.h Trong đó:  ptr trỏ trỏ tới vùng nhớ chứa liệu cần ghi  size kích thước mẫu tin theo byte  n số mẫu tin cần ghi  fp trỏ tệp Công dụng: Hàm ghi n mẫu tin kích thước size byte từ vùng nhớ ptr lên tệp fp Hàm trả giá trị số mẫu tin thực ghi Ví dụ 6.8: #include struct mystruct { int i; char ch; }; int main() 92 { FILE *stream; struct mystruct s; stream = fopen("TEST.TXT", "wb") /* Mở tệp TEST.TXT */ s.i = 0; s.ch = 'A'; fwrite(&s, sizeof(s), 1, stream); /* Viết cấu trúc vào tệp */ fclose(stream); /* Đóng tệp */ return 0; } 6.2.8 Đọc mẫu tin từ tệp - hàm fread Cấu trúc ngữ pháp hàm: int fread(void *ptr, int size, int n, FILE *fp); Nguyên hàm trong: stdio.h Trong đó:  ptr trỏ trỏ tới vùng nhớ chứa liệu cần ghi  size kích thước mẫu tin theo byte  n số mẫu tin cần ghi  fp trỏ tệp Công dụng: Hàm đọc n mẫu tin kích thước size byte từ tệp fp lên lên vùng nhớ ptr Hàm trả giá trị số mẫu tin thực đọc Ví dụ 6.9: #include #include int main() { FILE *stream; 93 char msg[] = "Kiểm tra"; char buf[20]; stream = fopen("DUMMY.FIL", "w+"); /* Viết vài liệu lên tệp */ fwrite(msg, strlen(msg)+1, 1, stream); /* Tìm điểm đầu file */ fseek(stream, SEEK_SET, 0); /* Đọc số liệu hiển thị */ fread(buf, strlen(msg)+1, 1, stream); printf("%s\n", buf); fclose(stream); return 0; } 6.2.9 Nhập xuất ký tự 6.2.9.1 Các hàm putc fputc Cấu trúc ngữ pháp: int putc(int ch, FILE *fp); int fputc(int ch, FILE *fp); Nguyên hàm trong: stdio.h Trong đó: ch giá trị nguyên, fp trỏ tệp Công dụng: Hàm ghi lên tệp fp ký tự có mẫ m=ch % 256 ch xem giá trị nguyên không dấu Nếu thành công hàm cho mã ký tự ghi, trái lại cho EOF Ví dụ 6.10: #include int main() { 94 char msg[] = "Hello world\n"; int i = 0; while (msg[i]) putc(msg[i++], stdout); /* stdout thiết bị chuẩn - Màn hình*/ return 0; } 6.2.9.2 Các hàm getc fgettc Cấu trúc ngữ pháp: int gretc(FILE *fp); int fputc(FILE *fp); Nguyên hàm trong: stdio.h Trong đó: fp trỏ tệp Công dụng: Hàm đọc ký tự từ tệp fp Nếu thành công hàm cho mã đọc ( có giá trị từ đến 255) Nếu gặp cuối tệp hay có lỗi hàm trả EOF Trong kiểu văn bản, hàm đọc lượt hai mã 13, 10 trả giá trị 10 Khi gặp mã 26 hàm trả EOF Ví dụ 6.11: #include #include #include int main() { FILE *stream; char string[] = "Kiem tra"; char ch; /* Mở tệp để cập nhật*/ stream = fopen("DUMMY.FIL", "w+"); /*Viết xâu ký tự vào tệp */ fwrite(string, strlen(string), 1, stream); 95 /* Tìm vị trí đầu tệp */ fseek(stream, 0, SEEK_SET); { /* Đọc ký tự từ tệp */ ch = fgetc(stream); /* Hiển thị ký tự */ putch(ch); } while (ch != EOF); fclose(stream); return 0; } 6.2.10 Xoá tệp - hàm unlink: Cấu trúc ngữ pháp: int unlink(const char *tên_tệp) Nguyên hàm trong: dos.h, io.h, stdio.h Trong tên_tệp tên tệp cần xoá Công dụng: Dùng để xoá tệp đĩa Nếu thành công, hàm cho giá trị 0, trái lại hàm cho giá trị EOF Ví dụ 6.12: #include #include int main(void) { FILE *fp = fopen("junk.jnk","w"); int status; fprintf(fp,"junk"); status = access("junk.jnk",0); if (status == 0) 96 printf("Tệp tồn tại\n"); else printf("Tệp không tồn tại\n"); fclose(fp); unlink("junk.jnk"); status = access("junk.jnk",0); if (status == 0) printf("Tệp tồn tại\n"); else printf("Tệp không tồn tại\n"); return 0; } 6.3 Một số ví dụ 6.3.1 Ghi, đọc mảng Ví dụ 6.13: Ghi n số nguyên vào file độc từ file #include #include #include #define MAX int main() { FILE *f; int i, ia[MAX], ib[MAX]; for (i = 0; i < 10; i++) { printf("Nhap vao mot so: "); scanf("%d", &ia[i]); } 97 if((f = fopen("array.dat", "wb")) == NULL) { printf("Khong the mo file!\n"); exit(0); } fwrite(ia, sizeof(ia), 1, f); //ghi mang vao file fclose(f); f = fopen("array.dat", "rb"); fread(ib, sizeof(ib), 1, f); //doc mang tu file for (i = 0; i < 10; i++) printf("%d ", ib[i]); fclose(f); getch(); } 6.3.2 Ghi, đọc structure Ví dụ 6.14: Danh sách sinh viên #include #include #include #define MAX 50 int main() { FILE *f; struct nhanvien { int manv; char hoten[30]; }; 98 nhanvien snv[MAX], snv1[MAX]; char ctam[10]; int i, in; printf("Nhap vao so nhan vien: "); gets(ctam); in = atoi(ctam); //Nhap danh sach nhan vien va ghi vao file if((f = fopen("struct.dat", "wb")) == NULL) { printf("Khong the mo file!\n"); exit(0); } fwrite(&in, sizeof(int), 1, f); //ghi so nhan vien vao file for(i = 0; i < in; i++) { printf("Nhap vao ma nhan vien thu %d: ", i + 1); gets(ctam); snv[i].manv = atoi(ctam); printf("Nhap vao ho ten: "); gets(snv[i].hoten); fwrite(&snv[i], sizeof(nhanvien), 1, f); //ghi tung nhan vien vao file } fclose(f); //doc danh sach nhan vien tu file va in f = fopen("struct.dat", "rb"); fread(&in, sizeof(int), 1, f); //doc so nhan vien for(i = 0; i < in; i++) { //doc tung nhan vien in man hinh fread(&snv1[i], sizeof(nhanvien, 1, f); 99 printf("%5d %s\n", snv[i].manv, snv[i].hoten); } getch(); } 100 Tài liệu tham khảo [1] Lê Đăng Hưng, Trần Việt Linh, Lê Đức Trung, Nguyễn Thanh Thủy, Ngôn ngữ lập trình C, NXB Giáo dục, 1996 [2] Phạm Văn Ất, Giáo trình kỹ thuật lập trình C - Căn nâng cao, NXB Hồng Đức, 2009 [3] Phạm Văn Ất, Giáo trình C++ lập trình hướng đối, NXB Hồng Đức, 2009 [4] http://www.cplusplus.com [5] http://www.cppreference.com [6] http://vi.wikipedia.org/wiki/C%2B%2B [7] https://developers.google.com/edu/c++ [8] http://www.tutorialspoint.com/cplusplus/index.htm 101 ... -o0o BÀI GIẢNG MÔN HỌC NHẬP MÔN LẬP TRÌNH HỆ ĐẠI HỌC CHÍNH QUY KHOA PHÊ DUYỆT BM PHÊ DUYỆT GV PHỤC TRÁCH Năm học 2014 – 2015 MỤC LỤC CHƯƠNG GIỚI THIỆU TỔNG QUAN VỀ LẬP TRÌNH 1.1... ngôn ngữ lập trình khác Dạng ngôn ngữ tự nhiên: Thuật toán trình bày dạng ngôn ngữ tự nhiên theo trình tự bước thực thuật toán Dạng ngôn ngữ lập trình: Dùng cấu trúc lệnh, liệu ngôn ngữ lập trình. .. ngữ lập trình (Programming language) Ngôn ngữ lập trình hệ thống ký hiệu tuân theo qui ước ngữ pháp ngữ nghĩa, dùng để xây dựng thành chương trình cho máy tính Một chương trình viết ngôn ngữ lập

Ngày đăng: 17/06/2017, 22:01

Xem thêm: Bài giảng nhập môn lập trình

TỪ KHÓA LIÊN QUAN