<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>CHƯƠNG 4: </b>
<b>CHƯƠNG TRÌNH & GIẢI THUẬT</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">
<b>Các khái niệm (1)</b>
<small>z</small>
Thuật tốn
•
Cách hiểu đơn giản
•
<small>Tập các hướng dẫn thực hiện một cơng việc.</small>
•
<small>Tập hữu hạn các hướng dẫn rõ ràng để người giải tốn có thể theo đó mà giải quyết được vấn đề.</small>
•
<small>Một phương pháp thể hiện lời giải của vấn đề.</small>
•
Algorithm: nhà tốn học Trung Á
•
<b><small>Muhammad Bin Musa Al-Khwarizmi</small></b>
•
<b><small> class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">
<b>Các khái niệm (2)</b>
<small>z</small>
Thuật tốn (tt)
•
Trong khoa học máy tính
•
<i><b><small>Một dãy hữu hạn các bước rõ ràng và thực thi được.</small></b></i>
•
<i><b><small>Q trình hành động theo các bước này phải dừng và </small></b></i>
<i><b><small>cho được kết quả như mong muốn.</small></b></i>
•
Tính xác định
•
<b><small>Hướng dẫn giải rõ ràng và đúng </small></b>
•
Tính hữu hạn </div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">
•
<small>1.Lập danh sách các mơn học theo tên, số đvht</small>
•
<small>2.Sắp thứ tự các mơn học giảm dần theo số đvht</small>
•
<small>3.Chọn ra một mơn học có nhiều đvht nhất</small>
•
Câu hỏi???</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">
<b>Các khái niệm (5)</b>
<small>z</small>
Tính mập mờ (tt):
•
<i>Phân biệt mập mờ và chọn lựa có quyết định. </i>
•
<i><b><small>Mập mờ là thiếu thơng tin hoặc có nhiều chọn lựa nhưng khơng đủ điều kiện để quyết định. </small></b></i>
•
<i><b><small>Chọn lựa có quyết định là hoàn toàn xác định duy nhất</small></b></i>
<small>trong điều kiện cụ thể của vấn đề</small>
•
Sửa lại:
•
<small>3.Chọn ra một mơn học có nhiều đvht nhất. </small>
•
<small>3.1 Nếu chỉ có một mơn học nhiều đvht nhất: chọn một</small>
•
<small>3.2 Nếu có nhiều mơn học cùng số đvht: sắp xếp tăng dần theo tên môn học trong thứ tự từ điển rối chọn môn đầu tiên.</small></div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">
<b>Các khái niệm (6)</b>
<small>z</small>
Tính thực thi được:
•
Hiển nhiên
•
Chỉ xét trong điều kiện hiện tại của bài tốn
•
Cho ví dụ về điều kiện hiện tại:???
<small>z</small>
Tính dừng:
•
Khơng dừng: Lặp vơ tận, bị quẫn
•
Dễ vi phạm nhất</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">
<b>Các khái niệm (7)</b>
<small>z</small>
Tính dừng -Ví dụ:
•
Tính tổng các số ngun dương lẻ trong khoảng từ 1 đến n ta có thuật tốn sau :
•
<small>B1. Hỏi giá trị của n. </small></div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">
<b>Các khái niệm (8)</b>
<small>z</small>
Tính dừng -Ví dụ:
•
Chỉ dừng khi n chẵn
•
Khi n lẻ phải thay B4 bằng:
•
<small>B4. Nếu i >= n+1 thì sang bước B8, ngược lại sang bước B5</small>
<small>z</small>
Tính đúng:
•
Chứng minh thuật tốn đúng!!!
•
Khó đạt được nhất</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">
<b>Các khái niệm (10)</b>
<small>z</small>
Các đặc trưng khác của thuật tốn
•
Ðầu vào và đầu ra (input/output) .
•
Tính hiệu quả (effectiveness): theo tiêu chuẩn
•
<small>Khối lượng tính tốn, khơng gian và thời gian thi hành. </small>
•
<small>Là yếu tố quyết định để đánh giá, chọn lựa</small>
•
<small>Nhiều phương pháp để đánh giá tính hiệu quả của thuật tốn. </small>
•
Tính tổng qt (generalliness) :
•
<small>Áp dụng được cho mọi trường hợp của bài tốn </small>
•
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">
<b>Các khái niệm - Ví dụ (2)</b>
•
<small>3. Trường hợp a khác 0 thì</small>
•
<small>3.1. Tính giá trị D = b2-4ac</small>
•
<small>3.2. Nếu D > 0 thì</small>
•
<small>3.2.1. Phương trình có hai nghiệm phân biệt x1,x2</small>
•
<small>3.2.2. Giá trị của hai nghiệm được tính theo cơng thức </small></div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">
<b>Các khái niệm - Ví dụ (4)</b>
<small>z</small>
Bài toán : Cho hai số nguyên dương a và b. Tìm ước số chung lớn nhất của a và b.
<small>z</small>
<b>Thuật tốn Euclid</b>
•
1. u cầu cho biết giá trị của a, b.
•
2. a0 = a
•
3. b0 = b
•
4. i = 0 </div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">
<b>Các khái niệm - Ví dụ (5)</b>
•
5. Nếu ai khác bi thì thực hiện các thao tác sau, ngược lại qua bước 7. </div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">
<b>Các phương pháp biểu diễn</b>
<small>z</small>
Thuật tốn:
•
Một phương pháp thể hiện lời giải bài tốn
•
Phải tn theo một số quy tắc nhất định
<small>z</small>
Có 3 phương pháp biểu diễn thuật tốn :
•
<b>Dùng ngơn ngữ tự nhiên. </b>
•
<b>Dùng lưu đồ-sơ đồ khối (flowchart).</b>
•
<b>Dùng mã giả (pseudocode).</b></div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">
<b>Ngôn ngữ tự nhiên </b>
<small>z</small>
Ngơn ngữ thường ngày:
•
Liệt kê các bước của thuật tốn, q trình thực hiện lần lượt (trừ khi có u cầu nhảy_
•
Khơng thể hiện rõ cấu trúc của thuật tốn
•
Dài dịng, có thể gây hiểu lầm hoặc khó hiểu
•
<i><b>Khơng u cầu người viết hay đọc nắm quy tắc. </b></i>
•
<small>Khơng có một quy tắc cố định </small>
•
Tính dễ đọc:
•
<small>viết các bước con lùi vào bên phải </small>
•
<small>đánh số bước theo quy tắc phân cấp như 1, 1.1, ... </small></div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">
<b>Lưu đồ - sơ đồ khối (1)</b>
<small>z</small>
Cơng cụ trực quan diễn đạt thuật tốn.
•
Biểu diễn bằng mơ hình – hình vẽ
<small>z</small>
Theo dõi được:
•
sự phân cấp các trường hợp
•
q trình xử lý của thuật toán
<small>z</small>
Được dùng trong những thuật tốn
•
rắc rối</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">
<b>Lưu đồ - sơ đồ khối (2)</b>
<small>z</small>
Phân biệt hai loại thao tác:
•
<i><b>Chọn lựa theo một điều kiện nào đó</b></i>
•
<i><b>Xử lý, hành động</b></i></div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">
<b>Lưu đồ - sơ đồ khối (3)</b>
<small>z</small>
<i><b>Chọn lựa theo một điều kiện nào đó</b></i>
•
<b>Decision</b>
•
Biểu diễn bằng một hình thoi, bên trong chứa biểu thức điều kiện.
•
<i>Ví dụ: thao tác "nếu a = b thì thực hiện thao </i>
<i>tác B2, ngược lại thực hiện B4" là thao tác </i>
chọn lựa
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">
<b>Lưu đồ - sơ đồ khối (4)</b>
<small>z</small>
<i><b>Xử lý, hành động. </b></i>
•
<b>Process </b>
•
Biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung xử lý.
•
<i>Ví dụ: "Chọn một mơn học và in ra." là một </i>
thao tác thuộc loại hành động.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">
<b>Lưu đồ - sơ đồ khối (5)</b>
<small>z</small>
Q trình thực hiện các thao tác:
•
<b>Đường đi – route </b>
•
Biểu diễn bằng cung có hướng
•
<small>nối giữa 2 thao tác: thực hiện lần lượt</small></div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">
<b>Lưu đồ - sơ đồ khối (6)</b>
<small>z</small>
Thao tác chọn lựa: có thể có hai hướng đi
•
một hướng ứng với điều kiện thỏa
•
một hướng ứng với điều kiện khơng thỏa.
•
2 cung có nhãn
•
<small>Đ/Đúng,Y/Yes </small>
•
<small>S/Sai,N/No</small></div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">
<b>Lưu đồ - sơ đồ khối (7)</b>
<small>z</small>
Ðiểm cuối (terminator)
•
Biểu diễn bằng hình ovan
•
Điểm khởi đầu
•
<small>chỉ có cung đi ra</small>
•
<small>bên trong ovan ghi chữ: bắt đầu/start/begin</small>
•
Điểm kết thúc
•
<small>Chỉ có cung đi vào</small>
•
<small>bên trong ovan ghi chữ: kết thúc/end</small></div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">
<small>Phương trình thuật toán giải pt bậc 2. Đường chấm ứng với trường hợp nghiệm kép, ví dụ: a=1,b=2,c=1</small>
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">
<b>Lưu đồ - sơ đồ khối (8)</b>
<small>z</small>
Điểm nối (connector)
•
Nối các phần khác nhau của </div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">
<b>Mã giả (pseudo code) (1)</b>
<small>z</small> <i><b>Vay mượn các cú pháp của một ngơn ngữ lập </b></i>
trình
•
<small>dùng một phần ngơn ngữ tự nhiên</small>
•
<small>bị phụ thuộc vào ngơn ngữ lập trình.</small>
<small>z</small> Mọi ngơn ngữ lập trình đều có những thao tác
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">
<b>Mã giả (2)</b>
<i><b><small>Một đoạn mã giả của thuật toán giải pt bậc hai</small></b></i>
<b><small>if Delta > 0 then begin</small></b>
</div>