Bài giảng Kiến trúc máy tính - Chương 3: Thuật toán cung cấp cho người học các kiến thức: Khái niệm, tính chất của thuật toán, biểu diễn thuật toán, các cấu trúc thuật toán cơ bản. Cuối bài giảng có phần bài tập để người học ôn tập và củng cố kiến thức.
1 3.1 Khái niệm Thuật toán hệ thống chặt chẽ rõ ràng quy tắc nhằm xác định dãy thao tác liệu vào cho sau số hữu hạn bước thực thao tác ta thu kết toán Dữ liệu vào (Input) Thuật toán 22 Kết đầu (Output) Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật Ví dụ Thuật tốn Euclid thuật tốn tìm ước số chung lớn (USCLN) hai số nguyên dương a b Input: a, b số nguyên dương Output: USCLN a b Thuật tốn tìm Euclid mô tả sau: Bước 1: Nếu a < b hốn vị hai số a, b cho Bước 2: Nếu b = USCLN a Bước 3: Ngược lại a > b, thực : • Tìm số dư r phép chia a cho b; • Gán a= b, b= r, quay trở lại bước 33 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.2 Tính chất thuật tốn Tính đúng: Thuật tốn phải cho kết xác; Tính tổng quát: thuật toán phải áp dụng để giải lớp tốn có dạng tương tự, khơng phải áp dụng toán cụ thể riêng lẻ ; Tính xác định: Các bước thuật tốn phải rõ ràng, trật tự thực phải xác định ; Tính dừng: thuật tốn phải cho kết sau số hữu hạn bước ; Tính hiệu quả: thuật tốn gọi hiệu đơn giản, dễ hiểu, thời gian thực nhanh chiếm nhớ ; 44 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.3 Biểu diễn thuật toán Người ta thường biểu diễn thuật toán theo cách sau : Dùng ngôn ngữ tự nhiên (Liệt kê bước) Vẽ lưu đồ (Flowchart) Mã giả 55 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật Biểu diễn thuật tốn ngơn ngữ tự nhiên Ta sử dụng ngôn ngữ người để liệt kê bước thực thuật tốn Ví dụ: Thuật tốn tính tổng hai số a b: Bước : Nhập vào số a b; Bước : Tính tổng a+b; Bước : Xuất kết tổng a+b 66 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật Lưu đồ thuật toán (sơ đồ khối) Ta sử dụng hình sau để vẽ lưu đồ thuật toán : 77 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật Lưu đồ thuật toán (sơ đồ khối) Ví dụ : Lưu đồ thuật tốn tính tổng hai số a b : 88 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật Mã giả Mã giả ngôn ngữ gần giống với ngơn ngữ lập trình Nó sử dụng kết hợp ngơn ngữ tự nhiên, ký hiệu tốn học, vay mượn số cấu trúc ngôn ngữ lập trình để thể thuật tốn Mã giả thực thi máy tính Mỗi tác giả viết có phong cách khác nhau, miễn trình bày rõ ràng thể cách giải toán Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật Mã giả Ví dụ: Tìm số lớn hai số a b: Nhập giá trị a,b; if (a ≥ b) then Xuất kết quả: Số lớn a; else Xuất kết quả: Số lớn b; 10 10 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.4 Các cấu trúc thuật toán 3.4.1 Cấu trúc (Sequential) Trong cấu trúc này, công việc thự nối tiếp Ví dụ: Chẳng hạn lưu đồ thuật tốn tính tổng hai số a b phần trước: 11 11 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.4.2 Cấu trúc lựa chọn (Selection) Lựa chọn công việc để thực vào điều kiện Điều kiện biểu thức logic có hai giá trị (T 1) sai (F 0) Đúng Điều kiện Sai Điều kiện Cách biểu diễn cấu trúc lựa chọn lưu đồ thuật toán 12 12 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.4.2 Cấu trúc lựa chọn (Selection) Ví dụ : Lưu đồ thuật toán kiểm tra số nguyên a số chẵn hay số lẻ Bắt đầu Nhập a Số dư = a mod T Số dư = a số chẵn F a số lẻ Kết thúc 13 13 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.4.3 Cấu trúc lặp (Repeating) Thực lặp lại công việc nhiều lần vào điều kiện Có hai dạng sau: - Lặp xác định: loại lặp mà viết chương trình, người lập trình xác định công việc lặp lần - Lặp không xác định: loại lặp mà viết chương trình người lập trình chưa xác định cơng việc lặp lần Số lần lặp xác định chương trình thực thi 14 14 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.4.3 Cấu trúc lặp (Repeating) Cấu trúc lặp biểu diễn sơ đồ khối sau: Điều kiện lặp Các công việc 1 Các công việc Điều kiện lặp 15 15 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3.4.3 Cấu trúc lặp (Repeating) Ví dụ: Lưu đồ thuật tốn tính tổng: S = + + + N Bắt đầu Nhập N N>0 S=0 i=1 i 25, số ngày làm dư tính lương gấp đôi Bài 10: Nhân viên siêu thị thực xếp N trứng (N > 0) vào hộp, hộp có 12 trứng Hỏi có hộp trứng trứng dư ? Ví dụ: với 43 trứng, nhân viên xếp hộp trứng thừa lại trứng 19 19 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật ... thúc 13 13 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3. 4 .3 Cấu trúc lặp (Repeating) Thực lặp lại công việc nhiều lần vào điều kiện Có hai dạng sau: - Lặp xác định: loại lặp mà viết chương. .. a Bước 3: Ngược lại a > b, thực : • Tìm số dư r phép chia a cho b; • Gán a= b, b= r, quay trở lại bước 33 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3. 2 Tính chất thuật tốn Tính đúng:... thuật 3. 4 .3 Cấu trúc lặp (Repeating) Cấu trúc lặp biểu diễn sơ đồ khối sau: Điều kiện lặp Các công việc 1 Các công việc Điều kiện lặp 15 15 Khoa CNTT - Bài giảng THDC - Khối ngành kỹ thuật 3. 4.3