Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 192 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
192
Dung lượng
557,97 KB
Nội dung
NGƠN NGỮ LẬP TRÌNH C Võ Đức Hồng Email: hoangvd.it@dut.udn.vn Mobile: 0906.477.283 Nội dung Giới thiệu chung Lệnh nhập/xuất Lệnh điều kiện Lệnh vịng lặp Hàm Kiểu mảng Xâu kí tự Kiểu cấu trúc (struct) kiểu hợp (union) Làm việc với tệp 7-Mar-20 Giới thiệu chung Ngôn ngữ C đời năm 1972 Phát triển thành C++ vào năm 1983 Ngôn ngữ sử dụng phổ biến Có nhiều trình biên dịch C khác Turbo C, Borland C GCC Thực hành Turbo C Cung cấp mơi trường tích hợp cho phép soạn thảo biên dịch 7-Mar-20 Giới thiệu chung Một số phím soạn thảo Phím 7-Mar-20 Chức Di chuyển trỏ sang trái, lên, xuống, sang phải Home Đưa trỏ đầu dòng End Đưa trỏ cuối dòng PgUp Đưa trỏ đầu trang hình PgDw Đưa trỏ cuối trang hình Ctrl + Dịch trỏ sang phải chữ Ctrl + Dịch trỏ sang trái chữ Giới thiệu chung Một số phím soạn thảo Chức Phím Enter Xuống dịng Insert Chuyển đổi chế độ chèn/đè Delete Xóa kí tự sau vị trí trỏ Back space Ctrl + Y Ctrl + Q + Y 7-Mar-20 Xóa kí tự trước vị trí trỏ Xóa dịng kí tự chứa trỏ Xóa kí tự từ vị trí trỏ đến cuối dịng Giới thiệu chung Một số phím soạn thảo Phím Ctrl + K + C Chép khối tới vị trí trỏ Ctrl + K + V Chuyển khối tới vị trí trỏ Ctrl + K + Y Xóa khối Ctrl + K + W Ghi khối vào tệp đĩa Ctrl + K + R Đọc khối từ tệp đĩa Ctrl + Q + B Ctrl + Q + K Dịch chuyển trỏ đầu khối Dịch chuyển trỏ cuối khối Ctrl + Q + F Tìm kiếm cụm từ Ctrl + Q + A Tìm kiếm cụm từ sau thay cụm từ khác Lặp lại công việc Ctrl + Q + F Ctrl + Q + A cuối Ctrl + Q + L 7-Mar-20 Chức Giới thiệu chung Từ khóa từ dành riêng ngôn ngữ C từ khóa phải sử dụng cú pháp số từ khóa thơng dụng auto goto short union 7-Mar-20 break case double else if int sizeof static unsigned char extern long struct void continue default float for registerreturn switch typedef volatile while Giới thiệu chung Tên (identifier) Dùng để định danh thành phần chương trình Tên biến, tên hàm, tên hằng, … Tên dãy kí tự gồm chữ [a-z, A-Z, 0-9] gạch nối “_” Lưu ý: • tên khơng đuợc chứa kí tự trống, • tên khơng bắt đầu chữ số, • tên khơng trùng với từ khóa Nên đặt tên gợi nhớ, có ý nghĩa Tên chuẩn: số tên có sẵn trình biên dịch 7-Mar-20 Giới thiệu chung Hằng đại lượng có giá trị khơng thay đổi chương trình ví dụ • 111 • ‘b’ • “lap trinh” Biến số kí tự chuổi kí tự đại lượng thay đổi giá trị chương trình Biểu thức cơng thức tính tốn để có giá trị theo qui tắc tốn học ví dụ: x + y * z 7-Mar-20 Giới thiệu chung Mỗi câu lệnh C phải kết thúc dấu “;” Lời thích đặt hai dấu “/*” “*/” Ví dụ /* Đây thích */ Khi viết chương trình nên sử dụng lời thích Trình biên dịch C phân biệt chữ in hoa chữ in thường 7-Mar-20 10 Làm việc với tệp văn Ví dụ: chép tệp tin Chúng ta muốn sử dụng: mycopy source dest Sử dụng đọc tham số từ dịng lệnh Dịng lệnh đọc tham số hàm main, theo qui ước tham số gọi “argc” “argcv” int main(int argc, char *argv[]) Tham số “argc” chứa số từ dòng lệnh, kế tên chương trình Tham số “argv” chứa danh sách trỏ đến từ dòng lệnh 7-Mar-20 178 Làm việc với tệp văn Ví dụ: chép tệp tin #include int main(int argc, char *argv[]) { int c; FILE *in, *out; if (argc != 3){ fprintf(stderr,"Cú pháp: 'copy source dest'\n"); return 1; } if ((in = fopen(argv[1],"r")) == NULL){ fprintf(stderr,"Không thể mở tệp: %s\n", argv[1]); perror("Lý do:"); return 1; } if ((out = fopen(argv[2], "w")) == NULL){ fprintf(stderr,"Không thể mở tệp: %s\n", argv[2]); perror("Lý do:"); return 1; } while ((c = fgetc(in)) != EOF) fputc(c, out); fclose(in); fclose(out); return 0; } 7-Mar-20 179 Làm việc với tệp văn Đọc/Ghi liệu tệp theo định dạng Đọc liệu theo định dạng fscanf int fscanf(FILE *fp, const char *chuỗi_điều_khiển, danh_sách_đối) • Đọc liệu từ tệp trỏ fp theo định dạng chuỗi điều khiển vào danh cách đối, sử dụng tương tự hàm scanf Ghi liệu theo định dạng fprintf int fprintf(FILE *fp, const char *chuỗi_điều_khiển, danh_sách_đối) • Ghi liệu vào tệp trỏ fp theo định dạng chuỗi điều khiển từ danh cách đối, sử dụng tương tự hàm printf 7-Mar-20 180 Làm việc với tệp văn Ví dụ … FILE *in, *out; … int i, j, k; float f; … fscanf(in, "%d|%d|%d|%f", &i, &j, &k, &f); fprintf(out, "%d:%d:%d:%f", i, j, k, f); … 7-Mar-20 181 Làm việc với tệp văn Ngồi hàm trình bày trên, C cung cấp nhiều hàm khác Tự tìm hiểu fcloseall, ferror, feof, unlink, remove, fseek, … 7-Mar-20 182 Làm việc với tệp nhị phân C cho phép thao tác tệp nhị phân Truy cập tệp cách ngẫu nhiên dễ dàng Dữ liệu đọc ghi khối (blocs) Tệp nhị phân tệp văn có khác xử lí mã chuyển dịng (newline) mã kết thúc tệp (end of file) Hầu hết hàm dùng cho tệp văn sử dụng cho tệp nhị phân, ngoại trừ hàm fgets, fputs Khi sử dụng hàm fopen sử dụng thêm tùy chọn “b” để mở tệp nhị phân Ngoài ra, C cung cấp thêm số hàm đọc ghi riêng cho tệp nhị phân 7-Mar-20 183 Làm việc với tệp nhị phân Ví dụ 7-Mar-20 #include main() { FILE *out, *in; int i = 11, j = 12; char ch = 'a'; char str[80] = "end."; if ((out = fopen("bifile.dat", "wb")) == NULL){ fprintf(stderr,"impossible to open: bifile.dat\n"); perror("Because:"); exit(1); } fputc(ch, out); fprintf(out, "\n%i:%i\n%s", i, j, str); fclose(out); if ((in = fopen("bifile.dat", "rb")) == NULL){ fprintf(stderr,"impossible to open: bifile.dat\n"); perror("Because:"); exit(1); } ch = fgetc(in); fscanf(in, "%i:%i%s", &i, &j, str); fprintf(stdout, "%c\n%i:%i\n%s\n", ch, i, j, str); fclose(in); } 184 Làm việc với tệp nhị phân Vấn đề với mã kết thúc tệp Mã kết thúc tệp kiểu văn 26 (Control-Z) Khi đọc kí tự tệp kiểu văn bản, gặp kí tự giá trị EOF trả kết thúc việc đọc Kiểu nhị phân không không coi mã kết thúc tệp 26 Để đọc tất kí tự tệp, nên đọc kiểu nhị phân 7-Mar-20 185 Làm việc với tệp nhị phân Ví dụ #include main() { FILE *textfile, *binaryfile; if ((textfile = fopen(“textfile.dat", "w")) == NULL){ fprintf(stderr,"impossible to open: textfile.dat\n"); perror("Because:"); exit(1); } if ((binaryfile = fopen(" binaryfile.dat", “wb")) == NULL){ fprintf(stderr,"impossible to open: binaryfile.dat\n"); perror("Because:"); exit(1); } fputc(‘A’, textfile); fputc(26, textfile); fputc(‘B’, textfile); fputc(‘A’, binaryfile); fputc(26, binaryfile); fputc(‘B’, binaryfile); fcloseall(); } Điều xảy đọc tệp kiểu văn ? 7-Mar-20 186 Làm việc với tệp nhị phân Vấn đề với mã chuyển dòng (newline) Đối với kiểu văn • Khi ghi vào tệp mã chuyển dịng ‘\n’, hai kí tự ghi vào tệp ‘\r’ ‘\n’ (kí tự ‘\r’ chuyển cột ‘\n’ chuyển sang dịng mới) • Khi đọc hai kí tự ‘\r’ ‘\n’ nhận biết kí tự ‘\n’ Đối với kiểu nhị phân • Khi ghi vào tệp ‘\n’, kí tự ‘\n’ ghi vào tệp 7-Mar-20 187 Làm việc với tệp nhị phân Ví dụ … FILE *bf, *tf; … tf = fopen(“txtfile”, “w”); fprintf(“hi\n”); kí tự ghi vào tệp: ‘h’, ‘i’, ‘\r’, ‘\n’ … bf = fopen(“binfile”, “wb”); fprintf(“hi\n”); kí tự ghi vào tệp: ‘h’, ‘i’, ‘\n’ … 7-Mar-20 188 Làm việc với tệp nhị phân Các hàm đọc/ghi theo kiểu nhị phân int putw(int n, FILE *fp) dùng để ghi số nguyên (2 bytes) lên tệp int getw(FILE *fp) dùng để đọc số nguyên (2 bytes) từ tệp int fwrite(void *ptr, int size, int n, FILE *fp) dùng để ghi n mẫu tin kích thước size từ vùng nhớ trỏ ptr lên tệp fp, hàm trả số mẫu tin thực ghi int fread(void *ptr, int size, int n, FILE *fp) dùng để đọc n mẫu tin kích thước size từ tệp fp lên vùng nhớ trỏ ptr, hàm trả số mẫu tin thực đọc Các hàm fread fwrite thường dùng để đọc/ghi mẫu tin cấu trúc, số thực, … 7-Mar-20 189 Làm việc với tệp nhị phân Ví dụ #include main() { FILE *out, *in; int i; if ((out = fopen("bifile.dat", "wb")) == NULL){ fprintf(stderr,"impossible to open: bifile.dat\n"); perror("Because:"); exit(1); } for(i = 0; i 0) fwrite(str, 1, n, out); fclose(in); fclose(out); return 0; } 191 Sinh Viên Làm Bài Tập Lâm Hương Kim Hoàn (2) Hồng Trang 08h2t4\ Võ Thị Nghĩa 7-Mar-20 192 ... thành C+ + vào năm 1983 Ngôn ngữ sử dụng phổ biến C? ? nhiều trình biên dịch C kh? ?c Turbo C, Borland C GCC Th? ?c hành Turbo C Cung c? ??p mơi trường tích hợp cho phép soạn thảo biên dịch 7-Mar-20... chuyển trỏ cuối khối Ctrl + Q + F Tìm kiếm c? ??m từ Ctrl + Q + A Tìm kiếm c? ??m từ sau thay c? ??m từ kh? ?c Lặp lại c? ?ng vi? ?c Ctrl + Q + F Ctrl + Q + A cuối Ctrl + Q + L 7-Mar-20 Ch? ?c Giới thiệu chung ... C? ?c từ khóa, tên C? ?c kiểu liệu chuẩn C? ?c phép toán C? ??u tr? ?c chung chương trình C C? ?c khai báo Phép gán Phép tăng 1, giảm 7-Mar-20 26 Nội dung Giới thiệu chung Lệnh