intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình C cơ bản: Tuần 9

Chia sẻ: Cố Dạ Bạch | Ngày: | Loại File: PDF | Số trang:31

6
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình C cơ bản: Tuần 9 cung cấp cho sinh viên những nội dung gồm: tạo tệp thực thi sử dụng makefile; duyệt cây theo chiều sâu và theo chiều rộng; bài tập;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình C cơ bản: Tuần 9

  1. C Programming Basic - week 9
  2. Chủ đề • Tạo tệp thực thi sử dụng makefile • Duyệt cây – Duyệt theo chiều sâu • Preorder • Inorder • Postorder – Duyệt theo chiều rộng • Exercises 2
  3. Makefile • Chương trình nhỏ → một tệp • Chương trình lớn: – Nhiều dòng code – Nhiều thành phần – Nhiều lập trình viên • Vấn đề: – Nhiều tệp khó quản lý (cho cả lập trình viên và máy) – Mỗi thay đổi cần biên dịch lâu – Nhiều lập trình viên không thể sửa đổi một tệp đồng thời 3
  4. Makefile (2) • Giải pháp : chia dự án thành nhiều tệp • Mục tiêu: – Chia nhỏ thành các thành phần – Biên dịch tối thiểu khi có thay đổi – Dễ dàng bảo trì cấu trúc dự án và các phụ thuộc 4
  5. Bảo trì dự án • Sử dụng makefile trên Unix • Makefile là một tệp (script) chứa: – Cấu trúc dự án (các tệp, các phụ thuộc) – Hướng dẫn để tạo tệp • Lệnh make đọc một makefile, hiểu cấu trúc dự án và tạo tệp thực thi • Makefile không chỉ dùng với chương trình C 5
  6. Cấu trúc dự án • Cấu trúc và phụ thuộc của dự án có thể biểu diễn bởi một DAG (Directed Acyclic Graph) • VD : – Chương trình chứa 3 tệp – main.c., sum.c, sum.h – sum.h được khai báo trong cả hai tệp .c – Tệp thực thi có tên sum 6
  7. sum (exe) main.o sum.o main.c sum.h sum.c sum.h 7
  8. makefile sum: main.o sum.o gcc –o sum main.o sum.o main.o: main.c sum.h gcc –c main.c sum.o: sum.c sum.h gcc –c sum.c 8
  9. Cú pháp main.o: main.c sum.h Rule gcc –c main.c tab dependency action 9
  10. Cách khác • .o phụ thuộc (mặc định) vào tệp .c tương ứng sum: main.o sum.o gcc –o sum main.o sum.o main.o: sum.h gcc –c main.c sum.o: sum.h gcc –c sum.c 10
  11. Cách khác (2) • Nén các phụ thuộc tương tự : sum: main.o sum.o gcc –o $@ main.o sum.o main.o sum.o: sum.h gcc –c $*.c 11
  12. Duyệt cây nhị phân • Rất nhiều thao tác trên cây nhị phân được thực hiện thông qua duyệt • Mỗi nút được thăm một lần duy nhất • Khi thăm một nút, tất cả các hành động (sao chép, hiển thị, đánh giá, cập nhật...) đối với nút này được thực hiện 12
  13. Duyệt cây nhị phân A B E C G D K F H L M I 13 J
  14. DFS • Tìm kiếm theo chiều sâu: Duyệt sâu nhất có thể • Các kiểu duyệt: – Preorder – Inorder – Postorder 14
  15. Inorder • Cây con trái → root → cây con phải Tree AEHJMTY 'J' 'E' 'T' 'A' 'H' 'M' 'Y' Print left subtree first 15 Print right subtree last
  16. inorderprint void inorderprint(TreeType tree) { if (tree!=NULL) { inorderprint(tree->left); printf("%4d\n",tree->Key); inorderprint(tree->right); } } 16
  17. Postorder • Cây con trái → cây con phải → root Tree AHEMYTJ Print last 'J' 'E' 'T' 'A' 'H' 'M' 'Y' Print left subtree first 17 Print right subtree second
  18. postorderprint void postorderprint(TreeType tree) { if (tree!=NULL) { postorderprint(tree->left); postorderprint(tree->right); printf("%4d\n",tree->Key); } } 18
  19. Preorder • Root → cây con trái → cây con phải Tree JEAHTMY Print first 'J' 'E' 'T' 'A' 'H' 'M' 'Y' Print left subtree second 19 Print right subtree last
  20. Pre_order  Pre-order – Root  – Left sub-tree  – Right sub-tree    x A +x+BC xDE F L R L R L 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2