Bài giảng tin học đại cương bài 5 đh bách khoa hà nội

7 227 0
Bài giảng tin học đại cương  bài 5   đh bách khoa hà nội

Đang tải... (xem toàn văn)

Thông tin tài liệu

Nội dung TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG 5.1 Các cấu trúc lập trình 5.2 Giả mã (pseudocode) 5.3 Thuật toán số học 5.4 Thuật toán dãy 5.5 Thuật toán đệ quy TIN HỌC ĐẠI CƯƠNG Phần Giải toán Bài 5: Một số thuật toán thông dụng 5.1 Các cấu trúc lập trình 5.1.1 Cấu trúc • Cấu trúc • Cấu trúc rẽ nhánh • Cấu trúc lặp • Các bước thực theo trình tự tuyến tính, hết bước đến bước khác Bước Bước … Bước n 5.1.2 Cấu trúc rẽ nhánh 5.1.3 Cấu trúc lặp • Việc thực bước phụ thuộc vào điều kiện xác định Ví dụ: Tìm max số a, b • – Nếu a > b max a, ngược lại max b – Diễn giải: • • • • • • B1: B2: B3: B4: Nhập số a, b Nếu a > b Max = a đến bước kết thúc (B4) (a b Max  a Một tác động/ nhiệm vụ thực lặp nhiều lần Số lần lặp biết trước trước.Tuy nhiên số lần lặp phải hữu hạn Điều kiện Thực công việc vòng lặp Thực công việc thoát khỏi vòng lặp Max  b 5.1.3 Cấu trúc lặp (2) Ví dụ: Tìm số lớn dãy có n số    Lần lượt phải so sánh số Max tạm thời (lúc đầu Max gán phần tử thứ nhất, a1) với ai, với i từ 2, 3,…, n Việc so sánh thực lặp nhiều lần Max Khi kết thúc trình lặp, ta thu Max số lớn dãy n số Nội dung Nhập N dãy số a1, a2,…,aN Max  a1; i=2 i>N Đ Hiển thị “Max số lớn nhất” Đ Max  5.1 Các cấu trúc lập trình 5.2 Giả mã (pseudocode) 5.3 Thuật toán số học 5.4 Thuật toán dãy 5.5 Thuật toán đệ quy S > Max S ii+1 5.2 Mã giả (pseudocode) 5.2 Giả mã (2) • Gán:  • Cấu trúc lặp: while điều_kiện hành_động repeat hành_động until điều_kiện for biến:= gtrị_đầu to gtrị_cuối hành_động for biến:= gtrị_đầu downto gtrị_cuối hành_động := Ví dụ: i  i + a := b + c • Cấu trúc rẽ nhánh if(điều kiện) then (hành động) if(điều kiện) then (hành động) else (hành động) • Cấu trúc nhảy goto: – goto nhãn x; 10 Nội dung 5.3 Thuật toán số học 5.1 Các cấu trúc lập trình 5.2 Giả mã (pseudocode) 5.3 Thuật toán số học 5.4 Thuật toán dãy 5.5 Thuật toán đệ quy • Các toán số học – Xác định số nguyên có phải số nguyên tố/hợp số hay không – Tìm USCLN, BSCNN số nguyên – 11 12 Bài toán số nguyên tố Bài toán số nguyên tố (2) • Cho số nguyên dương p Làm để biết p có phải số nguyên tố hay không? – Input: p nguyên dương – Output: kết luận tính nguyên tố p • Ý tưởng? – p = 1?  Không phải số nguyên tố – p > 1? • Kiểm tra từ đến p-1 có phải ước số p không • Nếu có kết luận p không số nguyên tố, ngược lại số kết luận p số nguyên tố 13 Nhập p if p=1 then begin Xuất: p không nguyên tố; Dừng thuật toán; end flag := TRUE //Cờ trạng thái cho biết có tìm ước p không for k:=2 to p-1 //Tối ưu duyệt đến [căn bậc p] if (k ước số p) then begin flag:=FALSE break //ngắt vòng lặp FOR end if flag=TRUE then Xuất: p số nguyên tố else Xuất: p không số nguyên tố Nội dung 5.4 Thuật toán dãy 5.1 Các cấu trúc lập trình 5.2 Giả mã (pseudocode) 5.3 Thuật toán số học 5.4 Thuật toán dãy 5.5 Thuật toán đệ quy • Làm việc với dãy số • Các toán điển hình 14 – Tìm số lớn nhất, nhỏ dãy – Kiểm tra dãy có phải dãy tăng dãy giảm – Sắp xếp dãy tăng dần giảm dần – Tìm dãy có phần tử giá trị cho trước – Tính trung bình cộng dãy –… 15 16 Ví dụ Sắp xếp dãy số Ví dụ - Tìm số lớn dãy • Input: dãy số a1, a2, a3,… an • Output: max giá trị lớn dãy số cho • Thuật toán: • Bài toán: Sắp xếp phương pháp bọt (Bubble Sort) – Đầu vào: Dãy A gồm N số nguyên a1, a2,…, aN – Đầu ra: Dãy A lại theo thứ tự không giảm • Ý tưởng: max:=a1 for i:=2 to n if max < then max:= Xuất: max giá trị lớn dãy số – Với cặp số liên tiếp dãy, số trước lớn số sau ta đổi chỗ chúng cho – Việc lặp đổi chỗ cho 17 18 Ví dụ - Mô tả lưu đồ thuật toán Ví dụ - Mô tả bước Nhập N dãy số a1, a2,…,aN • B1: Nhập số N dãy số a1,a2,…,aN • B2: M  N • B3: Nếu M < thuật toán kết thúc hiển thị dãy • B4: M  M – 1, i  • B5: Tăng i lên đơn vị • B6: Nếu i > M quay lại B3 • B7: Nếu > ai+1 tráo đổi hai số cho • B8: Quay lên B5 MN MM S > ai+1  ai+1 Đ 20 Bài tập Nội dung • Bài Xây dựng thuật toán tìm phần tử có giá trị truyệt đối lớn dãy gồm n phần tử • Bài Xây dựng thuật toán tìm tổng số chẵn tổng số lẻ dãy gồm n phần tử nhập vào từ bàn phím • Bài Xây dựng thuật toán kiểm tra xem dãy số gồm n phần tử nhập vào từ bàn phím có phải dãy số tăng (hoặc giảm) không • Bài Xây dựng thuật toán tính trung bình cộng số dương dãy gồm n số nhập vào từ bàn phím 5.1 Các cấu trúc lập trình 5.2 Giả mã (pseudocode) 5.3 Thuật toán số học 5.4 Thuật toán dãy 5.5 Thuật toán đệ quy 21 22 5.5 Thuật toán đệ quy 5.5 Thuật toán đệ quy (2) • Với toán phân tích đưa tới việc giải toán loại cấp độ thấp • Để xây dựng thuật toán đệ quy, cần xác định: – Trường hợp bản: (Các) trường hợp không cần thực lại thuật toán – Phần tổng quát: Có yêu cầu gọi đệ quy • Cần xác định nguyên lý đưa trường hợp tổng quát trường hợp • Đảm bảo tính dừng giải thuật đệ quy - chắn từ trường hợp tổng quát đến trường hợp – độ lớn liệu nhập nhỏ – giá trị cần tính toán nhỏ  Tự thực lại thuật toán • Ví dụ: – Giai thừa: n! = (n-1)! * n – Dãy số Fibonacci: 0, 1, 1, 2, 3, 5, • F(n) = F(n-1) + F(n-2) 23 24 Ví dụ Tính giai thừa - Thuật toán đệ quy • Tính giai thừa n: • Input: số tự nhiên n • Output: GT(n)=n! • Thuật giải: Nhập n GT:=1; if n>0 then GT := GT(n-1)*n; Xuất GT – Trường hợp bản: 0! = – Trường hợp tổng quát: n! = (n-1)! * n • Xây dựng dãy Fibonacci – Trường hợp bản: F(0) = F(1) = – Trường hợp tổng quát: F(n) = F(n-1) + F(n-2) 25 26 Bài tập Thuật giải heuristic • Xây dựng thuật toán cho toán tìm số Fibonacci F(n) • Dùng “mẹo” • Áp dụng với toán – Chưa tìm thuật toán có tồn thuật toán không – Có thuật toán thời gian tính toán lâu điều kiện thuật toán khó đáp ứng 27 28 ... số nhập vào từ bàn phím 5. 1 Các cấu trúc lập trình 5. 2 Giả mã (pseudocode) 5. 3 Thuật toán số học 5. 4 Thuật toán dãy 5. 5 Thuật toán đệ quy 21 22 5. 5 Thuật toán đệ quy 5. 5 Thuật toán đệ quy (2)... 10 Nội dung 5. 3 Thuật toán số học 5. 1 Các cấu trúc lập trình 5. 2 Giả mã (pseudocode) 5. 3 Thuật toán số học 5. 4 Thuật toán dãy 5. 5 Thuật toán đệ quy • Các toán số học – Xác định số nguyên có phải... số Nội dung Nhập N dãy số a1, a2,…,aN Max  a1; i=2 i>N Đ Hiển thị “Max số lớn nhất” Đ Max  5. 1 Các cấu trúc lập trình 5. 2 Giả mã (pseudocode) 5. 3 Thuật toán số học 5. 4 Thuật toán dãy 5. 5 Thuật

Ngày đăng: 04/12/2015, 07:55

Từ khóa liên quan

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

Tài liệu liên quan