Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 442 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
442
Dung lượng
26,37 MB
Nội dung
' Í m ã\x ầ\ f I B t l Q-iOP ĩ f i ì f sở nâng cao P U B L ISH E R NHÀ XUẤT BẢN THÔNG TIN VÀ TRUYỀN THÔNG PGS.TS PHẠM VĂN ẤT ThS ĐỖ VAN tuân Giáo trình c KỸTHUẬT LẬP ĨRÌDH l Á sớ nâng cao ■ V NHẢ XUẤT BẢN THÔNG TIN VÀ TRUYỀN THÔNG Mã số : GD 20 HM 11 LỜI NÓI ĐẨU Cùng với phát triển vũ bão khoa học kỹ thuật nói chung, ngành Cơng nghệ Thơng tin nói riêng thâm nhập vào thực tiễn lĩnh vực sông hoạt động người, cơng nghệ lập trình khơng ngừng phát triển ngày ứng dụng rộng rãi Trong ngơn ngử lập trình, ngơn ngừ lập trinh c từ lâu trờ thành ngôn ngữ phổ biêh tính đa dụng ỉ inh hoạt cúa Từ nhà lập trình có tên tuối sinh viên công nghệ thông tin người yêu thích cơng nghệ thơng tin khơng thể phù nhận khả giải xử lý nhanh toán, từ đơn giản đến phức tạp, nhiều lĩnh vực khác cùa ngôn ngữ c Để đáp úng nhu cẩu mong muôn nhiều bạn đọc, Nhà xuâ't Thông tin Truyền thông trân trọng giới thiệu ch sách "Giáo trình Kỹ thuật lập trình C: Cơ sở nầng cao" cùa PGS TS Phạm Văn Ất, tên tuổi quen thuộc với bạn đọc yêu thích ngôn ngữ c Nội dung sách gồm phần: Phẩỉt sở (10 chương đẩu) giới thiệu khái niệm như: biến, biểu thức, hàm đệ quy, trỏ hàm, câu trúc, danh sách móc nối, kỹ thuật đổ họa tổ chức tệp, Phần nắng cao (5 chương lại vài vân để khó cuổì chương ‘6, 7, 9,10) Bạn dọc tìm thây nhiều vân để bổ ích lý thú như: Kỹ thuật tạo ảnh chuyền động, in ánh từ hình đổ họa, chơi nhạc máy, kiên trúc nhó 8086 cách trụy cập trực tiếp vào nhớ, sử dụng chức sâu DOS BIOS, điều khiển chuột, cách lập hàm xử lý ngắt chương trình thường trú, thay đổi chức phím Trong sách đưa vào 200 hàm chuẩn chọn lọc Turbo c , đủ để bạn đọc tiện tra cứu sử dụng Các vân đề ỉý thuyết minh họa nhiều chương trình chọn lọc thử nghiệm máy Nội dung cụ thể chương sau: Chương việc giới thiệu khái niệm cịn đưa sơ' chương trình c đơn giản cách thực chủng máy đề giúp người đọc nhanh chóng tiếp cận vói máy Chương trình bày kiểu dừ liệu, cách biểu diễn giá trị dừ liệu cách tổ chức (lưu trừ) liệu biên mảng Chương trình bày cách xử Ịý dử liệu đơn giản nhờ phép toán biểu thức câu lệnh gán Chương trình bày hàm vào dừ liệu bàn phím, hình vi máy in Chương trình bày lớp toán từ quan trọng dùng để thể hien cá< thuật tốn, tốn tử nhảy goto, toán tử rẽ nhánh if, toán tử lựa chọn svvitch vỉ toán tử tạo lập chu trinh (vòng lặp) for, vvhile, - vvhile Chương trinh bày cách tổ chức chương trình thành hàm, quy tắc xây dựng sử dụng hàm Các vân đề hay khó trị, trị hàm kỹ thuật đệ quy Chương trình bày kiểu liệu quan trọng câu trúc Phân tích vế hàm câu trúc, câu trúc tự trỏ danh sách liên kết Chương trình bày vể việc quản lý hình văn cách xây dựng cứa sổ Một ví dụ hay chương trình mơ quy trình chuyển tháp hình màu Chương trình bày hàm đổ họa đế vẽ hình kỹ thuật tạo ảnh chuyển động Ờ có nhiều ví dụ hay chương trình vẽ tàu vù trụ chuyển động, chương trình mơ hổ chạy theo thời gian thực, Chương 10 trình bày thao tác tệp như: tạo tệp mớí, ghi liệu tử nhớ lên tệp, đọc liệ u từ tệp vào nhó, C hư ng 11 trình bày cách lưu trữ liệu tổ chức nhớ chương trình Chương 12 trình bày thị tiền xử lý giúp việc biên soạn, biên dịch chương trình hiệu hơn, Chương 13 trình bày cách sử dụng ngắt mềm DOS BIOS đế quản lý trực tiếp thiết bi ổ đĩa, hình, bàn phím chụơt Chương 14 trình bày kiến trúc nhó 8086, địa phân đoạn, địa thực cách truy nhập trực tiếp vào nhớ Ở có số ví dụ hay hàm đưa thơng tin trực tiếp vào nhớ hình Chương 15 trình bày quy tắc viết hàm xử lý ngắt cứng cáclậptrình thường trú Đây vân đề khó diễn đạt cách giản dị, dễ hiểu minh họa nhiều ví dụ thú vị, chương trình thường trú thơng báo thời gian, chương trình thường trú quản lý bàn phím (thay đối chức số phím, làm vơ hiệu hóa sơ' tồn bàn phím, tạo autotext để làm tăng tốc độ soạn thảo văn bản) Sau 15 chương trinh bày tồn diện ngơn ngữ c , tác giả tặng thêm 12 phụ lục đ ể giúp bạn đọc tiện tra cứu sử dụng cẩm nang c, cụ thể là: Phụ lục trình bày quy tắc xu ơng dịng sử dụng ký tự trông viê't chương trình Phụ lục dừng đ ể tra cứu hàm chuẩn thường dùng c Phụ lục trình bày bảng mằ ASCII mã quét Phụ lục hướng dẫn cách cài đặt Turbo c vào đĩa cứng Phụ lục giói thiệu chung mơi trường kết hợp c Phụ lực trình bày cách sử dụng hệ soạn thảo c dùng để biên soạn chương trình gốc Phụ lục trinh bày cách dùng menu Project để dịch chương trình viết nhiều tệp Phụ lục hướng dẫn cách dùng trình biên dịch TCC để dịch (từ môi trường DOS) chương trình lớn viết nhiều tệp Phương pháp cho phép biên dịch chương trinh râ't lớn viết vài ngàn dòng lệnh Phụ lục hướng dẫn phương pháp gd rơì chạy chưong trình bưóc đ ể dị tìm lỗi chương trình Phụ lục 10 trình bày mơ hình nhó c Cách tạo tệp chương trình COM cách dịch theo mơ hình Tiny chế độ dịng lệnh TCC (xem phụ lục 8) Cũng cẩn nói thêm, biên dịch thưửrtg nhận tệp chương trình đuỏi EXE Phụ lục 11 trình bày tóm tắt hàm Turbo c theo thứ tự ABC Phụ lục 12 trình bày cách xây dựng hàm với số đối bất định, thủ tục vvriteln, reađln Pascal hàm printí, scanf c Cơng cụ chủ vếu dùng trò danh sách, Sau nhiều năm kinh nghiệm giảng dạy tích lũy lĩnh vực lập trình c, PGS TS Phạm Văn Ảt khơng ngừng hồn thiện cập nhật kiến thức lĩnh vực mói mà ngơn ngữ c vươn tói giải Nhà xuất xin trân trọng giới thiệu bạn dọc mong nhận ý ki en dóng góp cùa quý vị Mọi ý kiến đóng góp xin gửi cho tác giả theo địa địa chí: phamvanat83@vnn.vn, dvtuanest@gmail.com Trân trọng cảm ơn./ NHÀ XUẤT BẢN THÔNG TIN VÀ TRUYỀN thông , CÁC KHÁI NIỆM Cơ BẢN • Trong chương giới thiệu thành phần ngơn ngữ lập trình c (cũng bấí kỳ ngơn ngữ lập trình khác) là: tập ký tự, từ khóa tên, Đe lập chương trình đầy đủ, chúng tỏi trình bày đơi điều câu lệnh gán, câu lệnh vào ra, toán từ ttinclude quy íấc cần lưu ỷ viêt chương trình Ngồi để giúp bạn đọc nhanh chóng tiếp cận với máy, chúng tơi giới thiệu vài chương írình đơn giản hoàn chỉnh cách vận hành chúng máy để nhận kết quà cuối Tảt điều nói bo ích đáng ghi nhớ chúng thưcmg xuyên sử dụng sau Đọc xong chương bạn lập số chương trình đơn giàn biết cách thực chương trình máy\ § TẬP KÝ Tự DÙNG TRONG NGỐN NGỮ c Mọi ngôn ngữ lập trình xây dựng từ ký tự Các ký tự đượcnhóm lại theo nhiều cách khác đề lập lên từ(xem Phụ lục 1) Đen lưọt mình, từ lại liên kết theo quy tắc đểtạo thành câu lệnh,Một chương trình bao gồm nhiều câu lệnh diền đạt thuật toán để giải toán Ngơn ngữ c xây dựng ký tự sau: - 26 chữ tiếng Anh viết hoa; A B c z - 26 chữ tiếng Anh viết thường: a b c z - 10 chữ số hệ thập phân: ] - Các ký hiệu toán học như: + - * / = ( ) - Ký lự gạch dưới: _ (chú ý phân biệt với ký tự - (dấu trừ)) - Các ký hiệu đặc biệt khác như: , ; : [ ] { } ? v.v, Dấu cách (space) thực khoảng trống dùng để tách từ Ví dụ: HA NOí gồm ký tự, HANOl gồm kv tự Chú ý: Khi viết chương trình ta khơng sử dụng ký hiệu khác tập ký tự nói Chăng hạn giải phương trinh bậc hai: ax2+ bx + c = Giáo tĩiiilỉ kỹ thuật lập trìĩih C: Cơ sở -và ìiãĩig cao ta cần tính biệt thức: A = b2- 4ac Ký tự A không cho phép dùng ngôn ngữ c, vi ta phải dùng cách ký hiệu khác d hay delta §2 Từ KHĨA Từ khóa từ dành riêng ngơn ngữ lập trình định nghĩa trước với ý nghĩa hoàn toàn xác định Từ khóa thường dùng để khai báo biến định nghĩa kiêu liệu, định nghĩa toán tử, hàm viết câu lệnh,, Các từ khóa Turbo c 2.0 bao gồm: asm break ca se cdecỉ char const continue defauỉt doubíe else enum extern far float for goto huge If int interrupt long near Pascal regỉster return short signed sizeof static struct switch typedeí uníon unsigned void volatiỉe whiỉe Ý nghĩa cách sử dụng chúng giới thiệu mục sau Ờ ta cần nhớ hai điều: - Khơng dùng từ khóa để đặt tên cho hằng, biến, mảng, - Từ khóa phải viết chữ thường Chẳng hạn không viết 1NT hay Int mà phải viết int §3 TÊN Tên dùng để xác định đối tượng khác chương trinh Chúng ta có tên hằng, tên biến, tên mảng, tên hàm, tên trỏ, tên tệp, tên cấu trúc, tên nhãn, Tên khái niệm quan trọng, Tên đặt theo quy tắc sau: - Tên dãy ký tự: chữ, số ký tự _ (dấu gạch dưới) - Ký tự đầu tên phải chữ ký tự _ - Khơng trùng với từ khóa (xem §2) - Độ dài cực đại tên mặc định 32, đặt lại giá trị từ dên 32 chức năng: Options -> Compiler -> Source -> Identiíĩer length mỏi trường phát triển kết họp Turbo c 2.0 (xem Phụ lục 5) 426 Giáo trình kỹ thỉ lật lập trình C: Cơ sở v ìữbỉg cao (Đê ý có vùng nhớ: vùng nhớ biến trỏ vùng nhó' mà địa chi đầu chứa biến trò) - Cộng địa chi để trỏ chứa địa chi phần tử tiếp theo, dùng phép tốn: ++ Tên_con_trỏ hoặc: Tên_con_trị ++ Chú ý: Các phép tốn thực trỏ có kiểu Danh sách khơng kiểu Dùng trỏ có kiểu chì quản lý danh sách giá trị kiều, ví dụ dãy sơ thực, dãy số nguyên, dãy cấu trúc, Khi cần quản lý danh sách giá trị không kiều ta phải dùng trị khơng kiểu (void) khai báo sau: void * Tên_con_trỏ ; Con trỏ void chứa địa có kiểu bất kỳ, dùng để trò đến vùng nhớ chứa danh sách cần quản lý Một ý quan trọng gửi vào hay lẩy giá trị từ vùng nhớ, tuỳ theo kiểu giá trị mà ta phải dùng phép chuyền kiểu thích hợp trỏ Ví dụ sau minh họa cách lập danh sáchgồm số nguyên, số thực chuỗi ký tự Chúng ta cần bộnhớ để chứa số nguyên, số thực địa chi chuỗi dùng trỏ void để quàn lý vùng nhớ void *list, *p ; /* Con trỏ list trỏ tới đầu danh sách p dùng để duyệt qua phần tử danh sách */ list=malioc(sizeof(int) + sizeof(float)+ sizeof(char*)); p=list; *((int*)p) = 12; r Đưa số nguyên 12 vào danh sách ((ínt*)p)++ ; // Chuyển sang phần tử tỉếp theo *((fìoat*)p) =3.14; //Đưa số thực 3.14 // vào danh sách ((float*)p)++ ; // Chuyển sang phần tử *((char**)p) = “HA NOI”; // Đưa địa chuỗi // “HA NOI” vào danh sách // Nhận phần tử danh sách p=list; // đầu danh sách int a = *((int*)p); // Nhặn phần tử thử ((int*)p)++ ; // Chuyển sang phần tử fìoat x= *((fìoat*)p); // Nhận phần tử íhứ hai ((fìoat*)p)++ ; // Chuyển sang phần tử char *str = *((char**)p); // Nhặn phần tử thứ ba 'hụ lục 12 Hàm dốỉ với số bất dịìiỉi c 427 Hàm vói đối số bất định - Đối bất định cung đặt sau khai báo dấu ba châm ri dụ hàm voíd f(int n, char *s, ); có đối cố định n, s đối bất định - Để nhận tham số bất định lời gọi hàm ta cần lưu ý điểm sau; + Các tham số bất định chứa danh sách Đe nhận địa đầu anh sách ta dùng trò void phép gán sau: void *list, list = ; + Dùng tham số cố định kiểu chuỗi để quy định số lượng kiểu mồi lam số danh sách, ví dụ: hiểu là: Tham số bất định gồm giá trị int " f hiểu là: Tham số bất định gồm giá trị float ~fiss” hiểu có tham số bất định có kiểu íìoat, int, char*, char* Một đãbiết địa đầu danh sách, biết số lượng kiểu am số, thi de dàng nhận giá trị tham số đề sử dụngtrong thân hàm Ví dụ sau minh họa cách xây dựng hàm với tham số bất định Hàm ing đế in giá trị kiểu int, float char Hàm có tham số cố định ết có giá trị kiêu giá trị cần in Kiểu quy định sau: i int, f float, s char* Tham số có cách viết: lặp (gồm hàng số nguyên lữ định kiểu) liệt kê (một dãy chữ định kiểu) Ví dụ: “4s” có nghĩa in chuồi “s i i r có nghĩa in chuồi, giá trị nguyên giá trị thực: #incỉude #include #include #include #include #include void lnDanhSachGiaTri(char *st, ,) { void T ỉ S t ; int g tjn t; íloat gMloat; char *gt_str; 428 Giáo trinh kỹ thuật lập trĩnh C: Cơ sở v iưhig int n ,i; char kieu; int lap; list = ; r list tro toi vung nho chua danh sach día cac tham so lap = isdigit(st[0]); if (lap) n=st[0] - '0'; else n=strlen(st); printf("\n n= %d lap = %dH,n(lap); getchO; for(i=0;l