Nhãm sinh viªn thùc hiÖn TrÇn ThÞ LÖ An Lª NguyÔn Thóy H»ng NguyÔn Nh Hång Chu ThÞ Quúnh Nga §oµn ThÞ DiÔm Thi NguyÔn Thanh Tu©n HuÕ, 12/2005 Bµi Gi¶ng §iÖn Tö HuÕ, 12/2005 Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Kiểm tra bài cũ: * Câu hỏi: -Nêu cú pháp của câu lệnh rẽ nhánh dạng khuyết và dạng đầy đủ ? -Câu lệnh rẽ nhánh được vận dụng trong trường hợp nào ? * Trả lời: + Cấu trúc của câu lệnh rẽ nhánh: - Dạng khuyết: IF <điều kiện> THEN <câu lệnh>; - Dạng đủ: IF <Điều kiện> THEN <câu lệnh1> ELSE <câu lệnh 2>; + Câu lệnh rẽ nhánh được thực hiện khi: -Khi một công việc chỉ được thực hiện trong một điều kiện cụ thể nào đó thì cần sử dụng tổ chức rẽ nhánh. Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO 1. Lặp: *Bài toán 1: Tính và đưa ra kết quả màn hình tổng: Cho đến khi Em hãy cho biết dữ liệu vào và dữ liệu ra của bài toán ? Với điều kiện nào thì việc tính tổng sẽ dừng lại ? . 1 . 2 1 1 11 + + ++ + + + += naaaa S 0001.0 1 < + na HuÕ, 12/2005 Home Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 *Ý tưởng: - Input: a - Output: S - Xuất phát: S:=1/a - Sau đó: S:=S+ 1/(a+n) Việc tính tổng S này được thực hiện lặp lại một số lần chưa biết trước. Kết thúc lặp khi thoả mãn điều kiện: 1/(a+n)<0.0001 Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 Mô hình minh hoạ: a Sn 1/a+1/(a+1) 1 … … S:=S+1/a+1 S:=S+1/(a+2) S:=S+1/(a+2)+…+… 0 1/a S:=1/a n 1/a+1/(a+1)+1/(a+2) 2 1/a+1/(a+1)+…+1/(a+n)+… Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 Đối với bài toán này nếu sử dụng CL: If…then để giải thì sẽ được tổ chức như thế nào ? Ngoài ra chúng ta còn có các câu lệnh để thực hiện thuật toán lặp như vậy. Vậy ta phải sử dụng câu lệnh lặp While-Do. 2. Lặp với số lần chưa biết trước và câu lệnh While-Do *Cú pháp: WHILE <Điều kiện> DO <Câu lệnh>; *Trong đó: Từ khoá: While, Do Điều kiện: là biểu thức quan hệ hoặc logic. Câu lệnh: Là một câu lệnh của TP. Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 *Cách thực hiện: +Nếu <Điều kiện> có giá trị đúng (T) thì thực hiện <Câu lệnh> ngay sau Do rồi quay lại kiểm tra <Điều kiện> và quá trình tiếp tục. +Nếu <Điều kiện> có giá trị sai (F) thì kết thúc câu lệnh này, tiếp tục chương trình. *Lưu ý: Điều kiện sau Do nếu cần thực hiện một lệnh ghép thì các câu lệnh sau Do đó thì phải đặt chúng giữa Begin…end; Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 *Sơ đồ giải thuật: Điều kiện Câu lệnh T F Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Không thực hiện câu lệnh sau Do Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 *Giải thích sơ đồ: Câu lệnh WHILE – DO là câu lệnh chưa biết trước số lần lặp, nó chứa một biểu thức điều kiện để điều khiển thực hiện một câu lệnh đơn hoặc ghép. <Câu lệnh> viết sau từ khoá DO được thực hiện khi biểu thức <điều kiện> nhận giá trị TRUE. - Biểu thức <điều kiện> được tính giá trị trước khi <câu lệnh> được thực hiện. - Nếu biểu thức <điều kiện> đã nhận giá trị FALSE ngay từ đầu thì <câu lệnh> không được thực hiện lần nào. - Nếu biểu thức <điều kiện> luôn nhận giá trị TRUE thì <câu lệnh> được thực hiện mãi, ta gọi là vòng lặp vô hạn. Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng [...]... hiện câu lệnh sau Do và quay lại kiểm tra Điều kiện HuÕ, 12/2005 Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO *Chú ý: +Lệnh sau Do có thể không thực hiện lần nào cả Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng +Câu lệnh While có thể bị lặp vô hạn Khi thực hiện chương trình bị lặp vô hạn thì nhấn tổ hợp phím Ctrl+ Break để thoát và sửa chương trình +Lệnh sau Do cần có câu lệnh. .. BIẾT TRƯỚC VÀ CÂU LỆNH WHILE - DO Qua sơ đồ giải thuật này em hãy cho biết sự khác nhau giữa sơ đồ giải thuật giữa câu lệnh rẽ nhánh If - Then và câu lệnh While- Do ? Lặp Sự khác nhau đó là: Lặp với số lần chưa biết trước +CL rẽ nhánh chỉ thực hiện kiểm tra Điều kiện một lần Các ví dụ áp dụng +CL While- Do thực hiện kiểm tra Điều kiện, nếu Điều kiện sai thì không thực hiện câu lệnh sau Do, nếu điều kiện... WHILE - DO + Nếu a nhập vào đã lớn, với n=0 thì câu lệnh sau Do có được thực hiện hay không? Vì sao? Lặp + Nếu giữa Begin …end; trong lệnh While ta bỏ dòng lệnh Lặp với số lần chưa biết trước Các ví dụ áp dụng n:=n+1 thì việc thực hiện câu lệnh While sẽ như thế nào ? + Để CL sau While dừng lại sau một số lần lặp hữu hạn thì ta cần làm gì ? HuÕ, 12/2005 Home LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC VÀ CÂU LỆNH WHILE. .. CÂU LỆNH WHILE - DO Chương trình Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 Program TTong; Uses crt; Var S: Real; a, n:integer; Begin Write(‘hay nhap gia tri a vao:’); Readln(a); S:=1/a; n:=0; While 1/(a+n)>=0.0001 do {While not (1/(a+n)n thì m:=m-n rồi quay lại B1, ngược lại n:=n-m rồi quay lại B1 Lặp Lặp với số lần chưa biết trước Các ví dụ áp dụng HuÕ, 12/2005 Chương trình: Program UCLN; Var m, n: integer; Begin Clrscr; Write(‘ m, n:’); Readln(m,n); While mn do If m>n then m:=m-n . có các câu lệnh để thực hiện thuật toán lặp như vậy. Vậy ta phải sử dụng câu lệnh lặp While- Do. 2. Lặp với số lần chưa biết trước và câu lệnh While- Do *Cú. pháp: WHILE <Điều kiện> DO < ;Câu lệnh& gt;; *Trong đó: Từ khoá: While, Do Điều kiện: là biểu thức quan hệ hoặc logic. Câu lệnh: Là một câu lệnh của