0

Baigiang dung chung kythuatlaptrinh

134 8 0
  • Baigiang dung chung kythuatlaptrinh

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 15/06/2022, 10:22

TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÀI GIẢNG KỸ THUẬT LẬP TRÌNH GIẢNG VIÊN THỰC HIỆN ThS Nguyễn Bá Quảng ThS Bùi Hải Phong Số tiết giảng 60 tiết Lý thuyết 30 tiết Thực hành 30 tiết Hà Nội, 6 2016 Hà Nội, 6 2016 TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÀI GIẢNG KỸ THUẬT LẬP TRÌNH GIẢNG VIÊN THỰC HIỆN ThS Nguyễn Bá Quảng ThS Bùi Hải Phong Kết quả đề tài gồm 01 quyển bài giảng gồm 130 trang HĐKH Khoa Bộ môn G V Thực hiện Công nghệ thông tin MMT HTTT Hà Nội,. TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN BÀI GIẢNG KỸ THUẬT LẬP TRÌNH GIẢNG VIÊN THỰC HIỆN: ThS Nguyễn Bá Quảng ThS Bùi Hải Phong Số tiết giảng: 60 tiết Lý thuyết: 30 tiết Thực hành: 30 tiết Hà Nội, 6-2016 TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÀI GIẢNG KỸ THUẬT LẬP TRÌNH GIẢNG VIÊN THỰC HIỆN: ThS Nguyễn Bá Quảng ThS Bùi Hải Phong Kết đề tài gồm: 01 giảng gồm 130 trang HĐKH Khoa Công nghệ thông tin Bộ môn MMT & HTTT Hà Nội, 6-2016 G.V Thực MỤC LỤC 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 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 liệu 1.3 Nguyên lý tối thiểu 1.4 Nguyên lý địa phương 12 1.5 Nguyên lý quán 13 1.6 Nguyên lý an toàn 13 1.7 Phương pháp Top-Down 15 1.8 Phương pháp Bottom-up 15 CHƯƠNG 2: DUYỆT VÀ ĐỆ QUY 16 2.1 Định nghĩa đệ qui 16 2.2 Giải thuật đệ qui 16 2.3 Thuật toán sinh 18 2.4 Thuật toán quay lui (Back Tracking) 22 2.5 Thuật toán nhánh cận (Branch and bound) 28 CHƯƠNG 3: NGĂN XẾP, HÀNG ĐỢI VÀ DANH SÁCH LIÊN KẾT 35 3.1 Ngăn xếp ứng dụng 35 3.2 Hàng đợi ứng dụng 44 3.3 Danh sách liên kết thao tác làm việc với danh sách liên kết 49 CHƯƠNG 4: CẤU TRÚC DỮ LIỆU CÂY (TREE) 60 4.1 Định nghĩa khái niệm 60 4.2 Cây nhị phân 61 4.3 Cây tổng quát 69 4.4 Ứng dụng số cài đặt minh họa 70 CHƯƠNG 5: ĐỒ THỊ (GRAPH) 77 5.1 Định nghĩa khái niệm đồ thị 77 5.2 Biểu diễn đồ thị máy tính 80 5.3 Các thuật toán tìm kiếm đồ thị 82 5.4 Cây khung (cây bao trùm) (spanning tree) đồ thị 90 5.5 Bài tốn tìm đường ngắn 97 CHƯƠNG 6: SẮP XẾP 104 6.1 Đặt vấn đề 104 6.2 Các giải thuật xếp 104 6.3 Cài đặt minh họa 110 CHƯƠNG 7: TÌM KIẾM 121 7.1 Phát biểu toán 121 7.2 Các giải thuật tìm kiếm 121 TÀI LIỆU THAM KHẢO 130 GIỚI THIỆU MÔN HỌC I Giới thiệu chung Kỹ lập trình kỹ bắt buộc khơng thể thiếu sinh viên công nghệ thông tin Đặc biệt với sinh viên năm thứ chuyên ngành Công nghệ thông tin, việc thành thạo (một số) ngôn ngữ lập trình có kỹ thuật lập trình tốt giúp sinh viên nắm bắt tốt mơn học phát triển nghề nghiệp sau Mơn học “Kỹ thuật lập trình” mơn học bắt buộc sinh viên ngành Công nghệ thông tin năm đầu Để giảng dạy, học tập tốt môn môn học, tài liệu giảng dạy lập trình minh họa khơng thể thiếu Do đó, Khoa Công nghệ thông tin tổ chức biên soạn giảng dùng chung cho mơn học “Kỹ thuật lập trình” Thơng qua giảng này, muốn giới thiệu cho sinh viên kiến thức kỹ lập trình cấu trúc số thuật toán quan trọng: Đại cương lập trình cấu trúc , duyệt đệ qui, thao tác làm việc với ngăn xếp, hàng đợi, danh sách, cây, đồ thị, xếp tìm kiếm II Mục tiêu môn học Môn học cung cấp cho sinh viên kỹ thuật lập trình cấu trúc liệu quan trọng thường gặp danh sách, ngăn xếp, hàng đợi, cây, đồ thị với phương pháp phân tích, thiết kế thuật tốn Kết thúc mơn học sinh viên lập trình với ngơn ngữ C/C++ để giải tốn khoa học thực tế III Phương pháp nghiên cứu Bài giảng cho mơn học “Kỹ thuật lập trình” biên soạn dựa sở sau:  Nghiên cứu, tham khảo giáo trình, tài liệu liên quan đến giảng  Tổng hợp kiến thức cần thiết liên quan tới giảng  Lập trình minh họa kỹ thuật, thuật tốn ngơn ngữ C/C++ Để học tốt học phần, sinh viên cần lưu ý vấn đề sau: Môn học thiết kế cho sinh viên ngành Công nghệ thông tin năm thứ sau hoàn thành học phần: Tin học đại cương, Nhập môn công nghệ thông tin, Cấu trúc liệu giải thuật, Toán rời rạc Do vậy, sinh viên cần nắm kiến thức kỹ học phần trước học học phần Các kiến thức học nhắc lại cách ngắn gọn Kết hợp học lý thuyết thực hành Học tới đâu thực hành tới đó, đặc biệt trọng vào kỹ lập trình giải tốn học phần Có ý thức tự giác học tập, tham gia đầy đủ buổi học lớp CHƯƠNG 1: ĐẠI CƯƠNG VỀ KỸ THUẬT LẬP TRÌNH CẤU TRÚC Nội dung chương tổng hợp làm rõ nguyên lý lập trình cấu trúc Đây nguyên lý tảng lập trình cấu trúc tích hợp sẵn ngơn ngữ lập trình Các ngun lý lập trình cấu trúc xem xét 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ý quán Nguyên lý an toàn Phương pháp Top-Down Phương pháp Bottom-up 1.1 Sơ lược lịch sử lập trình cấu trúc Lập trình coi 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, chương trình nạp hoạt động chế độ trực tuyến, dòng lệnh Việc tìm sửa lỗi tự động chưa thực Do đó, việc lập trình phụ thuộc nhiều vào cá nhân lập trình viên Các hệ thống máy tính thời kỳ có cấu hình tương đối thấp, dung lượng nhớ nhỏ, tốc độ xử lý chậm Các chương trình xây dựng kỹ thuật lập trình tuyến tính với ngôn ngữ Assembler hay Fortran Với phương pháp lập trình tuyến tính, lập trình viên thực hai cấu trúc lệnh nhảy khơng điều kiện (goto) Thư viện lập trình nghèo nàn khiến cơng việc lập trình trở nên nặng nề Việc xây dựng hệ thống tin học gặp nhiều khó khăn, chi phí lớn, độ tin cậy thấp Để giải vướng mắc lập trình, nhà nghiên cứu lý thuyết tin học sâu tìm hiểu chất ngơn ngữ, thuật tốn, hoạt động lập trình nâng lên thành lý thuyết khoa học máy tính ngày Để triển khai nguyên lý lập trình cấu trúc L Wirth thiết kế triển khai ngôn ngữ ALGOL W biến thể ngôn ngữ ALGOL 60 Sau này, ông tiếp tục hoàn thiện để trở thành ngôn ngữ Pascal Đây coi ngôn ngữ giản dị, sáng, dễ minh họa vấn đề phức tạp lập trình coi chuẩn mực giảng dạy lập trình Năm 1978, Brian Barninghan cung Denit Ritche thiết kế ngơn ngữ lập trình C Kể từ đó, C trở thành ngơn ngữ thơng dụng giảng dạy, nghiên cứu sử dụng rộng rãi nhiều lĩnh vực khác Hai tác giả phát hành phiên hệ điều hành Unix viết ngơn ngữ C, qua cho thấy vị ngôn ngữ C việc phát triển hệ thống 1.2 Cấu trúc lệnh, lệnh có cấu trúc cấu trúc liệu Sinh viên làm quen cấu trúc lệnh cấu trúc liệu học phần trước (Tin học đại cương; Cấu trúc liệu giải thuật) Phần tổng hợp kiến thức cấu trúc lệnh cấu trúc liệu Cấu trúc lệnh Những cấu trúc lệnh sau sử dụng ngơn ngữ lập trình có cấu trúc Ở đây, không bàn tới cấu trúc nhảy vô điều kiện (goto) ngôn ngữ lập trình có cấu trúc trang bị cấu trúc Hình 1.1 Cấu trúc Hình 1.2 Cấu trúc điều kiện, rẽ nhánh Hình 1.3 Cấu trúc lặp Cấu trúc liệu Cấu trúc liệu chia làm hai loại: cấu trúc liệu cấu trúc liệu người dùng định nghĩa Kiểu liệu bao gồm: Kiểu ký tự (char), kiểu số ngun có dấu số ngun khơng dấu (signed int unsigned int), kiểu số thực (float) kiểu số thực có độ xác kép (double) Kiểu liệu người dùng tự định nghĩa: kiểu mảng (array), kiểu tập hợp (union), kiểu cấu trúc (struct),…Các kiểu liệu người dùng tự định nghĩa kiểu danh sách móc nối (linked list), cấu trúc (tree) Kích thướ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ể 1.3 Nguyên lý tối thiểu Khi làm quen với ngơn ngữ lập trình đó, người lập trình khơng thiết q phụ thuộc vào hệ thống thư viện ngơn ngữ Điều quan trọng trước tốn cụ thể, người lập trình tự lập trình giải hệ thống chương trình riêng Do vậy, ngơn ngữ lập trình thủ tục cụ thể, cần nắm công cụ tối thiểu sau Tập phép toán số học: Toán tử Ý nghĩa + Phép cộng - Phép trừ } int main(int argc, char *argv[]) { int A[max], n; //clrscr(); coutn; NhapMang(A,n); cout
- Xem thêm -

Xem thêm: Baigiang dung chung kythuatlaptrinh,