Tài liệu BÀI GIẢNG " KỸ THUẬT LẬP TRÌNH " - NGUYỄN DUY PHƯƠNG pptx

156 1.8K 18
Tài liệu BÀI GIẢNG " KỸ THUẬT LẬP TRÌNH " - NGUYỄN DUY PHƯƠNG pptx

Đ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

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÀI GIẢNG KỸ THUẬT LẬP TRÌNH Biên soạn : Ths NGUYỄN DUY PHƯƠNG Giới thiệu mơn học GIỚI THIỆU MƠN HỌC I GIỚI THIỆU CHUNG Sự phát triển công nghệ thông tin năm vừa qua làm thay đổi mặt kinh tế xã hội tồn cầu, cơng nghệ phần mềm trở thành ngành công nghiệp quan trọng đầy tiềm Với hội tụ công nghệ viễn thông công nghệ thông rin, tỷ trọng giá trị phần mềm chiếm cao hệ thống viễn thông thiết bị đầu cuối Chính lý đó, việc nghiên cứu, tìm hiểu, tiến tới phát triển làm chủ hệ thống phần mềm kỹ sư điện tử viễn thông cần thiết Tài liệu giảng dạy “Kỹ thuật lập trình” cho hệ đào tạo từ xa xây dựng dựa giáo trình “Kỹ thuật lập trình” giảng dạy học viện năm qua với mục đích cung cấp cho sinh viên kiến thức nhất, có tính hệ thống liên quan tới lập trình Thơng qua tài liệu này, muốn giới thiệu với bạn đọc kỹ lập trình cấu trúc số thuật toán quan trọng, bao gồm: Đại cương lập trình cấu trúc; Duyệt đệ qui; Ngăn xếp, hàng đợi danh sách móc nối; Cây; Đồ thị cuối Sắp xếp tìm kiếm II MỤC ĐÍCH Mơn học cung cấp cho sinh viên kỹ lập trình cấu trúc liệu quan trọng như: stack, queue mlink, tree & graph với phương pháp phân tích, thiết kế, đánh giá thuật tốn Sau học xong mơn học này, sinh viên có khả viết chương trình giải tốn thực tế III PHẠM VI NGHIÊN CỨU Nghiên cứu thuật toán sử dụng thực tế thuật tốn tìm kiếm, thuật tốn liên quan đến đồ thị Các giải thuật lập trình dựa danh sách, cây… Nghiên cứu cách cài đặt thuật tốn máy tính Tìm hiểu lĩnh vực ứng dụng thuật toán, phương pháp thực tế IV PHƯƠNG PHÁP NGHIÊN CỨU Để học tốt môn học này, sinh viên cần lưu ý vấn đề sau: Kiến thức cần trước Lời nói đầu - Sinh viên phải có kiến thức tốn học cao cấp - Thành thạo ngơn ngữ lập trình Đặc biệt sách sử dụng ngơn ngữ lập trình C để mơ tả thuật tốn, sinh viên phải nắm ngơn ngữ lập trình C Các tài liệu cần có: Sách hướng dẫn học tập Kỹ thuật lập trình Ths Nguyễn Duy Phương, Học viện Cơng nghệ Bưu Viễn thông, 2006 Nếu cần sinh viên nên tham khảo thêm: - Giáo trình Kỹ thuật lập trình Ts Lê Hữu Lập, Ths Nguyễn Duy Phương, Học viện Công nghệ Bưu Viễn thơng, 2002 - Bài giảng điện tử mơn học: “Kỹ thuật lập trình” Học viện Cơng nghệ Bưu Viễn thơng Đặt mục tiêu, thời hạn cho thân Đặt mục tiêu tạm thời thời hạn cho thân cố gắng thực chúng Xây dựng mục tiêu chương trình nghiên cứu Nghiên cứu nắm kiến thức cốt lõi Sinh viên nên đọc qua sách hướng dẫn học tập trước nghiên cứu giảng môn học tài liệu tham khảo khác Tham gia đầy đủ buổi hướng dẫn học tập Thông qua buổi hướng dẫn học tập, giảng viên giúp sinh viên nắm nội dung tổng thể môn học giải đáp thắc mắc, đồng thời sinh viên trao đổi, thảo luận với sinh viên khác nội dung học Chủ động liên hệ với bạn học giảng viên Cách đơn giản tham dự diễn dàn học tập mạng Internet, qua trao đổi trực tiếp vấn đề vướng mắc với giảng viên bạn học khác online Tự ghi chép lại ý Việc ghi chép lại ý hoạt động tái kiến thức, kinh nghiệm cho thấy giúp ích nhiều cho việc hình thành thói quen tự học tư nghiên cứu Học đôi với hành Học lý thuyết đến đâu thực hành làm tập thực hành đến để hiểu nắm lý thuyết Sinh viên cần cài đặt máy tính thuật tốn học ngơn ngữ lập trình để từ hiểu nắm tư tưởng nội dung thuật toán Hà Nội, ngày 20 tháng 02 năm 2006 Ths Nguyễn Duy Phương Chương 1: Đại cương kỹ thuật lập trình cấu trúc CHƯƠNG 1: ĐẠI CƯƠNG VỀ KỸ THUẬT LẬP TRÌNH CẤU TRÚC Nội dung chương tập chung làm sáng tỏ nguyên lý lập trình cấu trúc Những nguyên lý coi tảng tư tưởng phương pháp lập trình cấu trúc tích hợp ngơn ngữ lập trình Nắm vững nguyên lý lập trình cấu trúc khơng giúp người học có cách tiếp cận ngơn ngữ lập trình nhanh chóng mà giúp họ cách tư xây dựng hệ thống ứng dụng Các nguyên lý giới thiệu chương bao gồm: Nguyên lý lệnh - lệnh có cấu trúc - cấu trúc liệu Nguyên lý tối thiểu Nguyên lý địa phương Nguyên lý an toàn Nguyên lý quán Nguyên lý Top-Down Ngun lý Botton-Up Bạn đọc tìm chi tiết sâu rộng tài liệu [1] & [6] 1.1 SƠ LƯỢC VỀ LỊCH SỬ LẬP TRÌNH CẤU TRÚC Lập trình cơng việc nặng nhọc khoa học máy tính Có thể nói, suất xây dựng sản phẩm phần mềm thấp so với hoạt động trí tuệ khác Một sản phẩm phần mềm thiết kế cài đặt vòng tháng với lao động Nhưng để kiểm tra tìm lỗi tiếp tục hồn thiện sản phẩm phải thêm chừng năm Đây tượng phổ biến tin học năm 1960 xây dựng sản phẩm phần mềm kỹ thuật lập trình tuyến tính Để khắc phục tình trạng lỗi sản phẩm, người ta che chắn mành che mang tính chất thương mại gọi Version Thực chất, Version việc thay sản phẩm cũ cách sửa đổi cơng bố dạng Version mới, giống như: MS-DOS 4.0 tồn thời gian vài tháng thay đổi thành MS-DOS 5.0, MS-DOS 5.5, MS-DOS 6.0 Đây sản phẩm ta tưởng mà cịn tồn lỗi khơng thể bỏ qua được, MS-DOS 6.0 khắc phục hạn chế MS-DOS 3.3 ban đầu Trong thời kỳ đầu tin học, lập trình viên xây dựng chương trình ngơn ngữ lập trình bậc thấp, trình nạp theo dõi hoạt động chương trình cách trực tiếp chế độ trực tuyến (on-line) Việc tìm sửa lỗi (debbugging) ngày thực Do vậy, trước năm 1960, người ta coi việc lập trình Chương 1: Đại cương kỹ thuật lập trình cấu trúc giống hoạt động nghệ thuật nhuộm màu sắc cá nhân khoa học Một số người nắm vài ngơn ngữ lập trình, số mẹo vặt tận dụng cấu hình vật lý cụ thể hệ thống máy tính, tạo nên số sản phẩm lạ phần mềm coi chuyên gia nắm bắt bí ẩn nghệ thuật lập trình Các hệ thống máy tính giai đoạn có cấu hình yếu, nhớ nhỏ, tốc độ thiết bị vào thấp làm chậm trình nạp thực chương trình Chương trình xây dựng kỹ thuật lập trình tuyến tính mà bật ngơn ngữ lập trình Assembler Fortran Với phương pháp lập trình tuyến tính, lập trình viên phép thể chương trình hai cấu trúc lệnh, cấu trúc lệnh (sequential) nhảy không điều kiện (goto) Hệ thống thư viện vào nghèo nàn làm cho việc lập trình trở nên khó khăn, chi phí cho sản phẩm phần mềm lớn, độ tin cậy sản phẩm phần mềm không cao dẫn tới hàng loạt dự án tin học bị thất bại, đặc biệt hệ thống tin học có tầm cỡ lớn Năm 1973, Hoare khẳng định, nguyên nhân thất bại mà người Mỹ gặp phải phóng vệ tinh nhân tạo phía Vệ nữ (Sao Kim) lỗi chương trình điều khiển viết Fortran Thay viết: DO 50 I = 12, 523 (Thực số 50 với I 12, 13, , 523) Lập trình viên (hoặc thao tác viên đục bìa) viết thành: DO 50 I = 12.523 (Dấu phảy thay dấu chấm) Gặp câu lệnh này, chương trình dịch Fortran hiểu gán giá trị thực 12.523 cho biến DO 50 I làm cho kết chương trình sai Để giải vướng mắc kỹ thuật lập trình, nhà tin học lý thuyết sâu vào nghiên cứu tìm hiểu chất ngơn ngữ, thuật tốn hoạt động lập trình, nâng nội dung kỹ thuật lập trình lên thành nguyên lý khoa học ngày Kết bật giai đoạn Knuth xuất tập sách mang tên “Nghệ thuật lập trình” giới thiệu tỉ mỉ sở lý thuyết đảm bảo toán học thuật toán xử lý liệu nửa số, xếp tìm kiếm Năm 1968, Dijkstra công bố thư “Về nguy hại tốn tử goto” Trong cơng trình này, Dijkstra khẳng định, có số lỗi goto gây nên khơng thể xác định điểm bắt đầu lỗi Dijkstra cịn khẳng định thêm: “Tay nghề lập trình viên tỉ lệ nghịch với số lượng toán tử goto mà sử dụng chương trình”, đồng thời kêu gọi huỷ bỏ triệt để toán tử goto ngơn ngữ lập trình ngoại trừ ngơn ngữ lập trình bậc thấp Dijkstra cịn đưa khẳng định, động thái chương trình đánh giá tường minh qua cấu trúc lặp, rẽ nhánh, gọi đệ qui sở lập trình cấu trúc ngày Những kết Dijikstra công bố tạo nên cách mạng kỹ thuật lập trình, Knuth liệt kê số trường hợp có lợi goto vòng lặp kết thúc chừng, bắt lỗi , Dijkstra, Hoare, Knuth tiếp tục phát triển tư tưởng coi chương trình máy tính với lập trình viên đối tượng nghiên cứu kỹ thuật lập trình phương pháp Chương 1: Đại cương kỹ thuật lập trình cấu trúc làm chủ phức tạp hoạt động lập trình Năm 1969, Hoare phát biểu tiên đề phục vụ cho việc chứng minh tính đắn chương trình, phát tính bất biến vịng lặp cách coi chương trình vừa mã hố thuật tốn đồng thời chứng minh tính đắn chương trình Sau Dahl, Hoare, Dijiksta phát triển thành ngơn ngữ lập trình cấu trúc Để triển khai nguyên lý lập trình cấu trúc, L Wirth thiết kế cài đặt ngôn ngữ ALGOL W biến thể ALGOL 60 Sau này, L Wirth tiếp tục hồn thiện để trở thành ngơn ngữ lập trình Pascal Đây ngơn ngữ lập trình giản dị, sáng sủa cú pháp, dễ minh họa vấn đề phức tạp lập trình đại coi chuẩn mực giảng dạy lập trình Năm 1978, Brian Barninghan Denit Ritche thiết kế ngôn ngữ lập trình C với tối thiểu cấu trúc lệnh hàm phù hợp với tư tâm lý của người lập trình Đồng thời, hai tác giả phát hành phiên hệ điều hành UNIX viết chủ yếu ngôn ngữ C, khẳng định thêm uy C lập trình hệ thống 1.2 CẤU TRÚC LỆNH, LỆNH CÓ CẤU TRÚC, CẤU TRÚC DỮ LIỆU 1.2.1 Cấu trúc lệnh (cấu trúc điều khiển) Mỗi chương trình máy tính chất mã hoá thuật toán Thuật toán coi dãy hữu hạn thao tác sơ cấp tập đối tượng vào (Input) nhằm thu kết (output) Các thao tác ngơn ngữ lập trình cụ thể điều khiển lệnh hay cấu trúc điều khiển, đối tượng chịu thao tác mơ tả biểu diễn thơng qua cấu trúc liệu Trong ngơn ngữ lập trình cấu trúc, cấu trúc lệnh sau sử dụng để xây dựng chương trình Dĩ nhiên, không bàn tới cấu trúc nhảy không điều kiện goto ngơn ngữ lập trình cấu trúc trang bị cấu trúc lệnh goto Cấu trúc câu lệnh GOTO A; Cấu trúc rẽ nhánh dạng đầy đủ If (E) A; A S Else B; B; B Đ B Sau thực lệnh A thực lệnh B A Nếu biểu thức E có giá trị (khác 0) thực A; Nếu E sai thực B; Hình 1.1: Cấu trúc cấu trúc rẽ nhánh dạng đầy đủ Chương 1: Đại cương kỹ thuật lập trình cấu trúc Cấu trúc lặp với điều kiện trước Cấu trúc lặp với điều kiện sau While (E) A; A E S Đ A; A S E Đ while (E); Trong biểu thức E cịn có giá trị thực A; Thực A E đúng; Cấu trúc lặp FOR For (E1; E2;E3) E1 A; E3 E2 S A Đ Hình 1.2 Các cấu trúc lặp A, B : ký hiệu cho câu lệnh đơn lệnh hợp thành Mỗi lệnh đơn lẻ gọi lệnh đơn, lệnh hợp thành lệnh hay cấu trúc lệnh ghép lại với theo qui định ngôn ngữ, Pascal tập lệnh hay cấu trúc lệnh bao thân begin end; C tập lệnh hay cấu trúc lệnh bao hai ký hiệu { } E, E1, E2, E3 biểu thức số học logic Một số ngơn ngữ lập trình coi giá trị biểu thức logic (TRUE) sai (FALSE), số ngơn ngữ lập trình khác C coi giá trị biểu thức logic có giá trị khác 0, ngược lại biểu thức logic có giá trị sai Cần lưu ý rằng, chương trình thể cấu trúc điều khiển lệnh : tuần tự, tuyển chọn if else, switch case default, lặp với điều kiện trước while , lặp với điều kiện sau while, vòng lặp for chuyển chương trình, sử dụng tối thiểu hai cấu trúc lệnh lặp với điều kiện trước while Phương pháp lập trình cịn gọi phương pháp lập trình hạn chế Chương 1: Đại cương kỹ thuật lập trình cấu trúc 1.2.2 Lệnh có cấu trúc Lệnh có cấu trúc lệnh cho phép chứa cấu trúc điều khiển Khi tìm hiểu cấu trúc điều khiển cần xác định rõ vị trí phép đặt cấu trúc điều khiển nó, phần cấu trúc điều khiển Điều tưởng tầm thường có ý nghĩa quan trọng xây dựng kiểm tra lỗi xảy chương trình Nguyên tắc viết chương trình theo cấu trúc: Cấu trúc phải viết lọt cấu trúc cha, điểm vào điểm cấu trúc phải nằm hàng dọc Ví dụ sau minh họa cho nguyên tắc viết chương trình: if (E) while (E1) A; else B; while(E2); Trong ví dụ trên, while (E1) A; cấu trúc nằm thân cấu trúc cha if (E) ; B while(E2); cấu trúc thân else Do vậy, câu lệnh while(E1); while(E2) có cấp với nên phải nằm cột, tương tự với A, B if với else 1.2.3 Cấu trúc liệu Các ngơn ngữ lập trình cấu trúc nói chung giống cấu trúc lệnh cấu trúc liệu Điểm khác ngôn ngữ lập trình cấu trúc phương pháp đặt tên, cách khai báo, cú pháp câu lệnh tập phép toán phép thực cấu trúc liệu cụ thể Nắm bắt nguyên tắc này, dễ dàng chuyển đổi cách thể chương trình từ ngơn ngữ lập trình sang ngơn ngữ lập trình khác cánh nhanh chóng mà khơng tốn nhiều thời gian cho việc học tập ngôn ngữ lập trình Thơng thường, cấu trúc liệu phân thành hai loại: cấu trúc liệu có kiểu (Base type) cấu trúc liệu có kiểu người dùng định nghĩa (User type) hay cịn gọi kiểu liệu có cấu trúc Kiểu liệu bao gồm: Kiểu kí tự (char), kiểu số nguyên có dấu (signed int), kiểu số nguyên khơng dấu (unsigned int), kiểu số ngun dài có dấu (signed long), kiểu số nguyên dài không dấu (unsigned long ), kiểu số thực (float) kiểu số thực có độ xác gấp đơi (double) Kiểu liệu người dùng định nghĩa bao gồm kiểu xâu kí tự (string), kiểu mảng (array), kiểu tập hợp (union), kiểu cấu trúc (struct), kiểu file, kiểu trỏ (pointer) kiểu liệu định nghĩa hoàn toàn kiểu danh sách móc nối (link list), kiểu (tree) Kích cỡ kiểu đồng nghĩa với miền xác định kiểu với biểu diễn nhị phân nó, phụ thuộc vào hệ thống máy tính cụ thể Để xác định kích cỡ kiểu nên dùng tốn tử sizeof( type) Chương trình sau liệt kê kích cỡ kiểu Chương 1: Đại cương kỹ thuật lập trình cấu trúc Ví dụ 1.1 Kiểm tra kích cỡ kiểu #include #include #include #include void main(void) { printf(“\n Kích cỡ kiểu kí tự:%d”, sizeof(char)); printf(“\n Kích cỡ kiểu kí tự khơng dấu:%d”, sizeof(unsigned char)); printf(“\n Kích cỡ kiểu số ngun khơng dấu:%d”, sizeof(unsigned int)); printf(“\n Kích cỡ kiểu số ngun có dấu:%d”, sizeof(signed int)); printf(“\n Kích cỡ kiểu số ngun dài khơng dấu:%d”, sizeof(unsigned long )); printf(“\n Kích cỡ kiểu số ngun dài có dấu:%d”, sizeof(signed long )); printf(“\n Kích cỡ kiểu số thực có độ xác đơn:%d”, sizeof(float )); printf(“\n Kích cỡ kiểu số thực có độ xác kép:%d”, sizeof(double )); getch(); } Kích cỡ kiểu liệu người dùng định nghĩa tổng kích cỡ kiểu thành viên Chúng ta dùng tốn tử sizeof(tên kiểu) để xác định độ lớn tính theo byte kiểu liệu Một điểm đặc biệt ý lập trình cấu trúc liệu cấu trúc liệu phải kèm theo phép tốn đó, biến gọi thuộc kiểu liệu nhận giá trị từ miền xác định kiểu phép toán kiểu liệu 1.3 NGUYÊN LÝ TỐI THIỂU Hãy tập nguyên tắc tối thiểu phương tiện cấu trúc lệnh, kiểu liệu phép tốn thực viết chương trình Sau nắm cơng cụ vịng đầu đặt vấn đề mở rộng sang hệ thống thư viện tiện ích ngơn ngữ Khi làm quen với ngơn ngữ lập trình đó, khơng thiết phải lệ thuộc nhiều vào hệ thống thư viện hàm ngôn ngữ, mà điều quan trọng trước tốn cụ thể, sử dụng ngơn ngữ để giải nào, phương án tốt lập trình hệ thống thư viện hàm riêng Do vậy, ngơn ngữ lập trình, cần nắm vững số công cụ tối thiểu sau: 1.3.1 Tập phép toán Tập phép toán số học: + (cộng); - (trừ); * (nhân); % (lấy phần dư); / (chia) Tập phép toán số học mở rộng: ++a a = a +1; // tăng giá trị biến nguyên a lên đơn vị; a a = a-1; //giảm giá trị biến nguyên a đơn vị; a+= n a = a+n; // tăng giá trị biến nguyên a lên n đơn vị; Chương 1: Đại cương kỹ thuật lập trình cấu trúc a-=n a = a - n; // giảm giá trị biến nguyên a n đơn vị); a%=n a = a%n; // lấy giá trị biến a modul với n; a/=n a=a/n;// lấy giá trị biến a chia cho n; a*=n a = a*n; // lấy giá trị biến a nhân với n; Tập phép toán so sánh: >, =, b) { } // a lớn b if ( a=b) { } // a lớn b if ( a : Phép dịch phải (dịch sang phải n bít có giá trị 0) ~ : Phép lấy phần bù Chương 6: Sắp xếp tìm kiếm (sorting and searching) delay(1000); } void main(void){ int *A,n;clrscr(); printf("\n Nhap n="); scanf("%d",&n); A=(int *)malloc(n*sizeof(int)); Init(A,n);Quick(A,n);printf("\n"); In(A,n);getch(); free(A); } 6.7 GIẢI THUẬT HEAP SORT Heap nhị phân biểu diễn mảng, mảng biểu diễn nhị phân hồn chỉnh cho khóa node cha lớn khoá node Sắp xếp kiểu Heap Sort tiến hành qua hai giai đoạn Giai đoạn nhị phân biểu diễn bảng khoá biến đổi để đưa heap Như vậy, heap, j số node [j/2] số node cha Theo định nghĩa heap node nhỏ node cha Như vậy, node gốc heap khóa có giá trị lớn node Ví dụ ban đầu 6.1a heap 6.1b 42 23 11 36 99 74 65 58 99 94 87 94 36 87 23 11 Hình 6.1a 65 58 74 42 Hình 6.1b Để chuyển nhị phân 6.1a thành nhị phân 6.1b heap, thực duyệt từ lên (bottom up) Node đương nhiên heap Nếu bên trái bên phải heap toàn heap Như vậy, để tạo thành heap, thực so sánh nội dung node bên trái, nội dung node bên phải với node cha nó, node có giá trị lớn thay đổi làm nội dung node cha Quá trình lần ngược lại gặp node gốc, nội dung node gốc khố có giá trị lớn Giai đoạn thứ hai giải thuật đưa nội dung node gốc vị trí cuối nội dung node cuối thay vào vị trí node gốc, sau coi node cuối bị loại bỏ thực tế node cuối giá trị lớn dãy số 141 Chương 6: Sắp xếp tìm kiếm (sorting and searching) Cây tạo (không kể phần tử loại bỏ) heap, lại thực vun thành đống thực tương tự đống phần tử phần tử bé dãy Độ phức tạp thuật toán Heap Sort Cmax = Ctb = O (n log2n ) Giải thuật Heap Sort cài đặt sau: #include #include #include #include #include void Heap(int *, int ); void Init(int *, int); void In(int *, int); void Init(int *A, int n){ int i; printf("\n Tao lap day so:"); for (i=0; i2 && A[2]>A[1]) s=2; while(s>=0 && ivalue

Ngày đăng: 17/01/2014, 06:20

Từ khóa liên quan

Mục lục

  • bia2(Sachbaigiang).doc

  • Toan bo1(03-04-06).doc

    • GIỚI THIỆU MÔN HỌC

    • CHƯƠNG 1: ĐẠI CƯƠNG VỀ KỸ THUẬT LẬP TRÌNH CẤU TRÚC

      • 1.1. SƠ LƯỢC VỀ LỊCH SỬ LẬP TRÌNH CẤU TRÚC

      • 1.2. CẤU TRÚC LỆNH, LỆNH CÓ CẤU TRÚC, CẤU TRÚC DỮ LIỆU

        • 1.2.1. Cấu trúc lệnh (cấu trúc điều khiển)

        • 1.2.2. Lệnh có cấu trúc

        • 1.2.3. Cấu trúc dữ liệu

        • 1.3. NGUYÊN LÝ TỐI THIỂU

          • 1.3.1. Tập các phép toán

          • 1.3.2. Tập các lệnh vào ra cơ bản

          • 1.3.3. Thao tác trên các kiểu dữ liệu có cấu trúc

          • 1.4. NGUYÊN LÝ ĐỊA PHƯƠNG

          • 1.5. NGUYÊN LÝ NHẤT QUÁN

          • 1.6. NGUYÊN LÝ AN TOÀN

          • 1.7. PHƯƠNG PHÁP TOP-DOWN

          • 1.8. PHƯƠNG PHÁP BOTTOM-UP

          • NHỮNG NỘI DUNG CẦN GHI NHỚ

          • BÀI TẬP CHƯƠNG 1

          • CHƯƠNG 2: DUYỆT VÀ ĐỆ QUI

            • 2.1. ĐỊNH NGHĨA BẰNG ĐỆ QUI

            • 2.2. GIẢI THUẬT ĐỆ QUI

            • 2.3. THUẬT TOÁN SINH KẾ TIẾP

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

Tài liệu liên quan