![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Xây dựng chương trình sử dụng tiện ích makefile.
Số trang: 29
Loại file: ppt
Dung lượng: 136.00 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Các chương trình nhỏ = 1 file đơn.Các chương trình không quá nhỏ:- Có rất nhiều dòng code- Các thành phần phức tạp.- Nhiều hơn 1 người lập trìnhCác vấn đề:- Các file dài khó để quản lí (cho cả người lập trìnhvà máy).- Mọi thay đổi đề đòi hỏi sự biên dịch dài. Nhiềungười lập trình không thể chỉnh sửa các file đòngthời.
Nội dung trích xuất từ tài liệu:
Xây dựng chương trình sử dụng tiện ích makefile.Chủ đề của tuần thế nào để xây dựng chương trình sử dụng Làm tiện ích makefile. Duyệt cây- Depth first search (duyệt theo chiều sâu) - Duyệt thứ tự trước - Duyệt thứ tự giữa - Duyệt thứ tự sau- Breadth first search (duyệt theo chiều rộng) ExercisesMakefile - Động cơ thúc đẩy chương trình nhỏ => 1 file đơn. Các Các chương trình không quá nhỏ:- Có rất nhiều dòng code- Các thành phần phức tạp.- Nhiều hơn 1 người lập trình Các vấn đề:- Các file dài khó để quản lí (cho cả người lập trình và máy).- Mọi thay đổi đề đòi hỏi sự biên dịch dài. Nhiều người lập trình không thể chỉnh sửa các file đòng thời.Makefile - Động cơ thúc đẩy Giải pháp: chia project(dự án/công trình) thành các file. Mục tiêu:- Phân chia tốt các thành phần- Tối thiểu sự biên dịch khi có gì đó thay đổi.- Dễ dàng bảo trì cấu trúc project, sự phụ thuộc và sự sáng tạo.Bảo trì project Được thực hiện trong UNIX với công cụ makefile. 1 makefile là 1 file (script - bản thảo) chứa:- Cấu trúc project (các files, sự phụ thuộc).- Giới thiệu cách tạo file Lệnh make đọc 1 makefile, hiểu cấu trúc project và tạo file thực thi. Lưu ý rằng công cụ makefile không chỉ giới hạn với lập trình C.Project structure (cấu trúc project) Cấu trúc project và sự phụ thuộc có thể biểu diễn bởi 1 DAG (Directed Acyclic Graph – Đồ thị có hướng không có chu trình) Ví dụ:- Chương trình có 3 files- Main.c, sum.c, sum.h- Sum.h được include trong file both.c- File thực thi là file sum(Xem hình minh hoạ trong slide tiếng anh tr7)makefilesum: main.o sum.o gcc–o sum main.o sum.omain.o: main.c sum.h gcc–c main.csum.o: sum.c sum.h gcc–c sum.cLuật cú phápmain.o: main.c sum.h //sự phụ thuộc(phím tab)gcc–c main.c //hành động(xem hình minh hoạ slide tiếng anh tr9)Các makefile tương đương phụ thuộc (mặc định) vào file .c tương ứng.Bởi .o vậy, makefile tương đương là:sum: main.o sum.o gcc–o sum main.o sum.omain.o: sum.h gcc–c main.csum.o: sum.h gcc–c sum.cmakefile tương đương (tiếp) có thể nén các sự phụ thuộc giống Ta nhau và sử dụng các lệnh gắn liền để tạo 1 makefile tương đương khác (ngắn hơn):sum: main.o sum.o gcc–o $@ main.o sum.omain.o sum.o: sum.hgcc–c $*.cBinary Tree Traversal (duyệt cây nhị fân) Rất nhiều phép toán trên cây nhị fân được thực hiện bởi trình diễn duyệt 1 cây nhị fân. Trong duyệt, thì mỗi phần tử của cây nhị fân chỉ được thăm đúng 1 lần. Khi thăm 1 phần tử, tất cả các hành động (tạo 1 bản sao, đưa ra màn hình, tính giá trị phép toán…) với sự lưu tâm tới phần tử này được thực hiện.DFS Duyệt theo chiều sâu: Chiến lược này bao gồm tìm kiếm theo chiều sâu của cây bất cứ khi nào có thể. Các loại:- Thứ tự trước- Thứ tự giữa- Thứ tự sauInorder Traversal (duyệt theo thứ tự giữa) Thăm các node trong cây con trái, sau đó thăm root của cây, rồi thăm các node trong cây con phải. Hình minh hoạ slide tiếng anh tr15Hàm in theo thứ tự giữavoid inorderprint(TreeTypetree){ if (tree!=NULL) { inorderprint(tree->left); printf(%4d ,tree->Key); inorderprint(tree->right); }}Postorder Traversal (duyệt theo thứ tựsau) các node ở cây con trái, sau đó là Thăm các node của cây con phải, rồi đến root. Hình minh hoạ slide tiếng anh tr17Hàm in theo thứ tự sau void postorderprint(TreeTypetree){ if (tree!=NULL) { postorderprint(tree->left); postorderprint(tree->right); printf(%4d ,tree->Key); }}Preorder Traversal (duyệt theo thứ tựtrước) root đầu tiên, ấu đó thăm đến các Thăm node của cây con trái, rồi cây con phải. Hình minh hoạ slide tiếng anh tr19,20Hàm in theo thứ tự trướcvoid preorderprint(TreeTypetree){ if (tree!=NULL) { printf(%4d ,tree->Key); preorderprint(tree->left); preorderprint(tree->right); }}Exercise Trở lại bài tập của tuần trước.Ta đã có 1 cây trữ danh bạ điện thoại. Bây giờ đưa tất cả dữ liệu trong file nhị fân ra theo thứ tự tăng dần của địa chỉ email.Gợi ý Chỉ cần sử dụng hàm InOrderTraversal()Duyệt theo thứ tự giữa bằng cáchlặpvoid iter_inorder(TreeTypenode){ int top= -1; /* khởi tạo stack */ TreeType stack[MAX_STACK_SIZE]; for (;;) { for (; node; node=node->left) add(&top, node);/* thêm vào stack*/ node= delete(&top);/*xoá khỏi stack*/ if (node==NULL) break;/* stack rỗng*/ printf(“%d”, node->key); node = node->right; }} ...
Nội dung trích xuất từ tài liệu:
Xây dựng chương trình sử dụng tiện ích makefile.Chủ đề của tuần thế nào để xây dựng chương trình sử dụng Làm tiện ích makefile. Duyệt cây- Depth first search (duyệt theo chiều sâu) - Duyệt thứ tự trước - Duyệt thứ tự giữa - Duyệt thứ tự sau- Breadth first search (duyệt theo chiều rộng) ExercisesMakefile - Động cơ thúc đẩy chương trình nhỏ => 1 file đơn. Các Các chương trình không quá nhỏ:- Có rất nhiều dòng code- Các thành phần phức tạp.- Nhiều hơn 1 người lập trình Các vấn đề:- Các file dài khó để quản lí (cho cả người lập trình và máy).- Mọi thay đổi đề đòi hỏi sự biên dịch dài. Nhiều người lập trình không thể chỉnh sửa các file đòng thời.Makefile - Động cơ thúc đẩy Giải pháp: chia project(dự án/công trình) thành các file. Mục tiêu:- Phân chia tốt các thành phần- Tối thiểu sự biên dịch khi có gì đó thay đổi.- Dễ dàng bảo trì cấu trúc project, sự phụ thuộc và sự sáng tạo.Bảo trì project Được thực hiện trong UNIX với công cụ makefile. 1 makefile là 1 file (script - bản thảo) chứa:- Cấu trúc project (các files, sự phụ thuộc).- Giới thiệu cách tạo file Lệnh make đọc 1 makefile, hiểu cấu trúc project và tạo file thực thi. Lưu ý rằng công cụ makefile không chỉ giới hạn với lập trình C.Project structure (cấu trúc project) Cấu trúc project và sự phụ thuộc có thể biểu diễn bởi 1 DAG (Directed Acyclic Graph – Đồ thị có hướng không có chu trình) Ví dụ:- Chương trình có 3 files- Main.c, sum.c, sum.h- Sum.h được include trong file both.c- File thực thi là file sum(Xem hình minh hoạ trong slide tiếng anh tr7)makefilesum: main.o sum.o gcc–o sum main.o sum.omain.o: main.c sum.h gcc–c main.csum.o: sum.c sum.h gcc–c sum.cLuật cú phápmain.o: main.c sum.h //sự phụ thuộc(phím tab)gcc–c main.c //hành động(xem hình minh hoạ slide tiếng anh tr9)Các makefile tương đương phụ thuộc (mặc định) vào file .c tương ứng.Bởi .o vậy, makefile tương đương là:sum: main.o sum.o gcc–o sum main.o sum.omain.o: sum.h gcc–c main.csum.o: sum.h gcc–c sum.cmakefile tương đương (tiếp) có thể nén các sự phụ thuộc giống Ta nhau và sử dụng các lệnh gắn liền để tạo 1 makefile tương đương khác (ngắn hơn):sum: main.o sum.o gcc–o $@ main.o sum.omain.o sum.o: sum.hgcc–c $*.cBinary Tree Traversal (duyệt cây nhị fân) Rất nhiều phép toán trên cây nhị fân được thực hiện bởi trình diễn duyệt 1 cây nhị fân. Trong duyệt, thì mỗi phần tử của cây nhị fân chỉ được thăm đúng 1 lần. Khi thăm 1 phần tử, tất cả các hành động (tạo 1 bản sao, đưa ra màn hình, tính giá trị phép toán…) với sự lưu tâm tới phần tử này được thực hiện.DFS Duyệt theo chiều sâu: Chiến lược này bao gồm tìm kiếm theo chiều sâu của cây bất cứ khi nào có thể. Các loại:- Thứ tự trước- Thứ tự giữa- Thứ tự sauInorder Traversal (duyệt theo thứ tự giữa) Thăm các node trong cây con trái, sau đó thăm root của cây, rồi thăm các node trong cây con phải. Hình minh hoạ slide tiếng anh tr15Hàm in theo thứ tự giữavoid inorderprint(TreeTypetree){ if (tree!=NULL) { inorderprint(tree->left); printf(%4d ,tree->Key); inorderprint(tree->right); }}Postorder Traversal (duyệt theo thứ tựsau) các node ở cây con trái, sau đó là Thăm các node của cây con phải, rồi đến root. Hình minh hoạ slide tiếng anh tr17Hàm in theo thứ tự sau void postorderprint(TreeTypetree){ if (tree!=NULL) { postorderprint(tree->left); postorderprint(tree->right); printf(%4d ,tree->Key); }}Preorder Traversal (duyệt theo thứ tựtrước) root đầu tiên, ấu đó thăm đến các Thăm node của cây con trái, rồi cây con phải. Hình minh hoạ slide tiếng anh tr19,20Hàm in theo thứ tự trướcvoid preorderprint(TreeTypetree){ if (tree!=NULL) { printf(%4d ,tree->Key); preorderprint(tree->left); preorderprint(tree->right); }}Exercise Trở lại bài tập của tuần trước.Ta đã có 1 cây trữ danh bạ điện thoại. Bây giờ đưa tất cả dữ liệu trong file nhị fân ra theo thứ tự tăng dần của địa chỉ email.Gợi ý Chỉ cần sử dụng hàm InOrderTraversal()Duyệt theo thứ tự giữa bằng cáchlặpvoid iter_inorder(TreeTypenode){ int top= -1; /* khởi tạo stack */ TreeType stack[MAX_STACK_SIZE]; for (;;) { for (; node; node=node->left) add(&top, node);/* thêm vào stack*/ node= delete(&top);/*xoá khỏi stack*/ if (node==NULL) break;/* stack rỗng*/ printf(“%d”, node->key); node = node->right; }} ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật máy tính mẹo vặt máy tính tăng tốc blog tăng tốc máy tính tiện ích cho Firefox chương trình makefileTài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 332 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 323 0 0 -
Thủ thuật chặn web đen bằng phần mềm
10 trang 232 0 0 -
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 227 0 0 -
Phần III: Xử lý sự cố Màn hình xanh
3 trang 222 0 0 -
Tổng hợp 30 lỗi thương gặp cho những bạn mới sử dụng máy tính
9 trang 215 0 0 -
Sao lưu dữ liệu Gmail sử dụng chế độ Offline
8 trang 212 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 210 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 205 0 0 -
Hướng dẫn cách khắc phục lỗi màn hình xanh trong windows
7 trang 203 0 0