Bài giảng Lập trình cơ bản bài 5: Giải thuật xử lý thông tin và ngôn ngữ lập trình
Bài 5. Giải thuật xử lý thông tin và ngôn ngữ lập trình KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM Bài giảng: LẬP TRÌNH CƠ BẢN Tài liệu tham khảo Giải thuật xử lý thông tin và ngôn ngữ lập trình2 Giáo trình tin học cơ sở, Hồ Sỹ Đàm, Đào Kiến Quốc, Hồ Đắc Phương. Đại học Sư phạm, 2004 – Chương 7, 9. NỘI DUNG Khái niệm bài toán giải thuật Đặc trưng của giải thuật Các phương pháp diễn đạt giải thuật Sơ lược về đánh giá giải thuật Ngôn ngữ lập trình và các mức khác nhau của ngôn ngữ lập trình Quá trình thực hiện chương trình trên ngôn ngữ bậc cao 3 Giải thuật xử lý thông tin và ngôn ngữ lập trình KHÁI NIỆM BÀI TOÁN Cho số tự nhiên n n có phải số nguyên tố hay không “có” hay “không” Cho hồ sơ điểm sinh viên Tìm tất cả các sinh viên có điểm trung bình trên 8 Danh sách sv thoả mãn Thiết kế hình học, tải trọng Tính sức bền Độ bền Input Yêu cầu Output Cho một bài toán nghĩa là cho input, và yêu cầu để tìm (tính) ra output 4 Giải thuật xử lý thông tin và ngôn ngữ lập trình KHÁI NIỆM THUẬT TOÁN Thuật toán (algorithm) là một quá trình gồm một dãy hữu hạn các thao tác có thể thực hiện được sắp xếp theo một trình tự xác định dùng để giải một bài toán Ví dụ : thuật toán Euclid tìm ước số chung lớn nhất của hai số tự nhiên. Thay vì phải tính toán theo định nghĩa chỉ làm rõ cấu trúc của USCLN (tích của các ước số chung với số mũ nhỏ nhất) thuật toán Euclid dựa trên các tính chất sau: USCLN(a,b) = USCLN (b,a)) Nếu a> b, USCLN(a,b) = USCLN (a-b,b) USCLN(a,a)= a 5 Giải thuật xử lý thông tin và ngôn ngữ lập trình THUẬT TOÁN EUCLID TIM USCLN CỦA HAI SỐ TỰ NHIÊN Bài toán: Cho hai số m, n tìm d = USCLN(m,n) 1. Bước 1: Kiểm tra nếu m= n thì về bước 5, nếu không thực hiện tiếp bước 2 2. Bước 2: Nếu m> n thì về bước 4 nếu không thực hiện tiếp bước 3 3. Bước 3: m <n, bớt n đi một lượng bằng m và quay về bước 1 4. Bước 4: bớt m đi một lượng bằng n và quay về bước 1 5. Bước 5: Lấy d chính là giá trị chung của m và n. Kết thúc 6 Giải thuật xử lý thông tin và ngôn ngữ lập trình VÍ DỤ CÁC BƯỚC CỦA THUẬT TOÁN EUCLID m n 15 21 9 6 15 6 3 6 3 3 m<n m>n m>n m<n m=n USCLN(15,21) = 3 7 Giải thuật xử lý thông tin và ngôn ngữ lập trình CÁC ĐẶC TRƯNG CỦA THUẬT TOÁN Input Output Tính xác định: Sau mỗi bước, bước tiếp theo hoàn toàn xác định. Tính khả thi: các chỉ dẫn đặt ra đều có thể thực hiện được Tính dừng: quá trình tính toán luôn phải dừng sau một số hữu hạn bước. Tính phổ dụng: mỗi thuật toán không chỉ dùng cho một bài toán với dữ liệu cụ thể mà có thể áp dụng với một lớp các bài toán cùng kiểu. Chẳng hạn người ta nói tới thuật toán tìm USCLN của hai số tự nhiên bất kỳ chứ không phải thuật toán tìm USCLN của 15 và 21. 8 Giải thuật xử lý thông tin và ngôn ngữ lập trình CÁC PHƯƠNG PHÁP BIỂU DIỄN THUẬT TOÁN Dùng các chỉ dẫn Dùng sơ đồ khối Dùng cấu trúc điều khiển 9 Giải thuật xử lý thông tin và ngôn ngữ lập trình THUẬT TOÁN BỐC SỎI Ví dụ: Bài toán bốc sỏi: có 30 viên sỏi. Hai người chơi, mỗi người đến lượt mình bốc từ 1 đến 3 viên sỏi. Ai bốc cuối cùng là thắng. Làm thế nào để người đi trước thắng. 1. Bước 1, bốc 2 viên 2. Bước 2: nếu số sỏi đã hết, dừng cuộc chơi, tuyên bố người (đi trước) thắng cuộc. Nếu không về bước tiếp theo 3. Bước 3: Đối phương bốc k viên 0 < k<4 4. Bước 4: Người đi trước bốc một lượng là 4 - k sau đó quay về bước 2 10 Giải thuật xử lý thông tin và ngôn ngữ lập trình [...]... lập trình CÂU HỎI VÀ BÀI TẬP 7 So sánh ngôn ngữ thuật toán với ngôn ngữ máy và hợp ngữ 8 Kể tên một số ngôn ngữ lập trình mà bạn biết 9 Nếu các bước thực hiện một chương trình trên ngôn ngữ thuật giải 10 Phân biệt lỗi cú pháp và lỗi ngữ nghĩa 11 Trình bày môi trường phát triển tích hợp 35 Giải thuật xử lý thông tin và ngôn ngữ lập trình HỎI VÀ ĐÁP Máy tính điện tử và xử lý thông tin ... một thuật toán có thể diễn đạt bằng nhiều chương trình khác nhau trên những ngôn ngữ khác nhau 21 Giải thuật xử lý thông tin và ngôn ngữ lập trình CÁC MỨC CỦA NGÔN NGỮ LẬP TRÌNH Ngôn ngữ máy: ngôn ngữ thể hiện trực tiếp trong hệ lệnh của máy Nói chung ngôn ngữ máy là ngôn ngữ ở mức các bít, nên cũng được gọi là ngôn ngữ nhị phân Hợp ngữ (assembly) là loại ngôn ngữ về cơ bản là gần với ngôn ngữ. .. Sau đó mới nạp chương trình này vào thi hành 25 Giải thuật xử lý thông tin và ngôn ngữ lập trình NGÔN NGỮ BẬC CAO Ngôn ngữ máy và hợp ngữ phụ thuộc vào máy, lại khó dùng, vì nó buộc người lập trình phải viết tinh tế đến mức lệnh máy Người ta muốn các ngôn ngữ chỉ diễn tả thuật toán mà thôi, không liên quan đến các hệ lệnh đặc thù của máy tính cụ thể Các ngôn ngữ này gọi là ngôn ngữ bậc cao (high level... 20 Giải thuật xử lý thông tin và ngôn ngữ lập trình NGÔN NGỮ LẬP TRÌNH Ngôn ngữ lập trình (programming language) là ngôn ngữ biểu diễn thuật toán dùng để điều khiển máy tính thực hiện các công việc đã định Các quy tắc viết được gọi là cú pháp (syntax) của ngôn ngữ ý nghĩa mà ngôn ngữ chuyển tải gọi là ngữ nghĩa (semantic) Một chương trình máy tính (program)phải được thể hiện trên một ngôn ngữ. .. 31 Giải thuật xử lý thông tin và ngôn ngữ lập trình Tóm tắt nội dung Ngôn ngữ lập trình là phương tiện diễn tả thuật toán để máy tính có thể sử dụng trực tiếp hoặc gián tiếp Theo mức trừu tượng hoá có các mức là ngôn ngữ máy, hợp ngữ và ngôn ngữ thuật toán Đối với hợp ngữ phải sử dụng phần mềm hợp dịch, với ngôn ngữ thuật toán phải dùng phần mềm biên dịch để tạo ra phần mềm tương ứng trong ngôn ngữ. .. là ngôn ngữ bậc cao (high level language) hay còn gọi là ngôn ngữ thuật toán (algorithmic language) Ngôn ngữ thuật toán có hình thức giống với ngôn ngữ tự nhiên hoặc ngôn ngữ toán học nên dễ diễn đạt hơn nhiều so với ngôn ngữ máy hoặc hợp ngữ 26 Giải thuật xử lý thông tin và ngôn ngữ lập trình VÍ DỤ VỀ NGÔN NGỮ BẬC CAO Ví dụ giải phương trình bậc 2 trên PASCAL DELTA := B*B - 4*A*C; IF DELTA >=... vậy chương trình thông dịch thực sự đóng vai trò một máy ảo Trong chế độ thông dịch, không sinh chương trình tương ứng trong mã nhị phân - Dịch chương trình trong ngôn ngữ thuật toán thành một chương trình ở ngôn ngữ máy bảo toàn ngữ nghĩa nhờ chương trình biên dịch (compiler) 28 Giải thuật xử lý thông tin và ngôn ngữ lập trình THỰC HIỆN CHƯƠNG TRÌNH TRÊN NGÔN NGỮ BẬC CAO Soạn thảo chương trình nhờ... của ngôn ngữ máy có một lệnh tương ứng của hợp ngữ nhưng hợp ngữ sử dụng mã chữ Ngôn ngữ bậc cao – còn gọi là ngôn ngữ thuật toán (Algorithmic language) là ngôn ngữ biểu diễn thuật toán độc lập với hệ lệnh của máy Mỗi ngôn ngữ xác định một kiểu diễn đạt kịch bản điều khiển máy tính Mỗi một kịch bản điều khiển máy viết trên một ngôn ngữ lập trình gọi là một chương trình (program) 22 Giải thuật xử lý. .. điều kiện Kết thúc Thứ tự xử lý 11 Giải thuật xử lý thông tin và ngôn ngữ lập trình BIỂU DIỄN BẰNG LƯU ĐỒ THUẬT TOÁN EUCLID m,n m=n? + m>n ? + m:=m-n 12 d:= m - n:= n - m d Giải thuật xử lý thông tin và ngôn ngữ lập trình BIỂU DIỄN BẰNG CẤU TRÚC ĐIỀU KHIỂN Trong khi m ≠ n thì lặp lại khối sau: Nếu m > n thì Bớt m đi một lượng là n Điều chỉnh lại giá trị Nếu ngược lại thì của m và n Bớt n đi một lượng... b-a > ε, quay về 1, nếu không làm tiếp 5 Dừng, lấy c làm nghiệm 15 Giải thuật xử lý thông tin và ngôn ngữ lập trình TÍNH NGHIỆM XẤP XỈ VỚI ĐỘ CHÍNH XÁC ε = 0.000001 CỦA PHƯƠNG TRÌNH f(x)= ex- x3 = 0 a:= 1; b:= 4; ε = 0.00001 c:= (a+b)/2 + f(c) >0 ? - a:= c 16 b:= c b-a < ε + c Giải thuật xử lý thông tin và ngôn ngữ lập trình Chương trình trong PASCAL BIỂU DIỄN BẰNG CẤU TRÚC ĐIỀU KHIỂN Cho ε = 0.000001,