Quan sát sách giáo khoa trang 47, chương trình cài đặt thuật toán “ Tìm ước số chung lớn nhất của hai số nguyên dương M và N?. .......[r]
(1)TRƯỜNG TRUNG HỌC PHỔ THÔNG TRẦN HỮU TRANG TIN HỌC 11 Đặng Hữu Hoàng (2) BÀI 10 CẤU TRÚC LẶP Thời gian tiết (3) CÁC BÀI TOÁN ĐẶT VẤN ĐỀ Tính tổng S với a là số nguyên và a>2 Bài toán 1: 1 1 S a a 1 a a 100 Bài toán 2: 1 1 S a a 1 a aN 0.0001 aN (4) CÙNG TÌM THUẬT TOÁN Xuất phát Lần Lần Lần N 1 S a a 1 a +… aN Mỗi lần thực hiện, giá trị tổng tăng bao nhiêu? Sau lần thực phép cộng, giá trị tổng S tăng a i ( Với i =1; 2; ; ;N) (5) TÌM SỰ KHÁC BIỆT Bài toán 1: 1 1 S a a 1 a a 100 Bài toán 2: 1 1 S a a 1 a aN Cho đến Việc tăng giá trị cho tổng S lặp lặp lại 100 lần Số lần lặp biết trước 0.0001 aN Việc tăng giá trị cho tổng S lặp lặp lại 0.0001 aN Chưa lần lặp chưa biết trước (6) LẶP VỚI SỐ LẦN BIẾT TRƯỚC a Bài toán nêu vấn đề: Lặp chương trình tính tổng sau: 1 1 S 1 N Hãy xác định INPUT và OUTPUT bài toán trên? Dữ liệu vào (Input) : Nhập N Dữ liệu (Output) : Tổng S (7) PHÂN TÍCH BÀI TOÁN VỚI N=100 1 1 S 1 100 S1 = Nhận xét S2 = S1 + 1/2 S3 = S2 + 1/3 S4 = S3 + 1/4 S100 = S99 + 1/100 Bắt đầu từ S2 việc tính S1 lặp lặp lại 99 lần theo quy luật Ssau = Strước+ 1/i, Với I chạy từ 100 (8) SƠ ĐỒ THUẬT TOÁN So sánh hai thuật toán sau Thuật toán Tong_1A Thuật toán Tong_1b * Bước 1: S ← 1/a; N ← 0; * Bước 2: N ← N + 1; * Bước 3: Nếu N > 100 thì chuyển đến bước 5; * Bước 4: S ← S + 1/(a + N) quay lại bước 2; * Bước 5: Đưa S màn hình, kết thúc * Bước 1: S ← 1/a; N ← 101; * Bước 2: N ← N - 1; * Bước 3: Nếu N < thì chuyển đến bước 5; * Bước 4: S ← S + 1/(a + N) quay lại bước 2; * Bước 5: Đưa S màn hình, kết thúc •Thuật toán dạng lặp tiến • Dạng lặp tiến: Biến đếm tự động tăng dần từ giá trị đầu đến giá trị cuối •Thuật toán dạng lặp lùi • Dạng lặp lùi: Biến đếm tự động giảm dần từ giá trị cuối đến giá trị đầu (9) CẤU TRÚC DẠNG LẶP TIẾN Hãy nêu cấu trúc dạng lặp tiến? For <biến đếm>:= <giá trị đầu> to <giá trị cuối> <câu lệnh>; Biến đếm: biến kiểu nguyên, kí tự miền Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm Giá trị đầu phải nhỏ giá trị cuối Ví dụ S:=1; FOR i:=2 TO 100 DO S:=S+1/i; (10) SƠ ĐỒ KHỐI Biến đếm:=giá trị đầu Sai Biến đếm<=giá trị cuối Quan sát sơ đồ khối, hãy cho biết thực máy? Đúng Lệnh cần lặp biến đếm tăng • Bước 1: tính giá trị đầu, gán cho biến đếm • Bước 2: Nếu biến đếm <= giá trị cuối thì: • thực lệnh cần lặp • tăng biến đếm đơn vị, quay lại bước (11) CẤU TRÚC DẠNG LẶP LÙI Hãy nêu cấu trúc dạng lặp lùi? for <biến đếm>:= <giá trị cuối> downto <giá trị đầu> <câu lệnh>; Biến đếm: biến kiểu nguyên, kí tự miền Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm Giá trị đầu phải nhỏ giá trị cuối Ví dụ S:=1; FOR i:=100 DOWNTO DO S:=S+1/i; (12) SƠ ĐỒ KHỐI Biến đếm:=giá trị đầu Sai Biến đếm>=giá trị cuối Quan sát sơ đồ khối, hãy cho biết thực máy? Đúng Lệnh cần lặp biến đếm giảm • Bước 1: tính giá trị đầu, gán cho biến đếm • Bước 2: Nếu biến đếm >= giá trị cuối thì: • thực lệnh cần lặp • giảm biến đếm đơn vị, quay lại bước (13) Lưu ý: + Biến đếm là biến đơn, có kiểu nguyên kí tự For i:=1 to 10 write(i); For i:=‘a’ to ‘z’ write(i); + Giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với biến đếm Giá trị đầu phải nhỏ giá trị cuối For i:= 100 to 200 write(i); + Giá trị biến đếm điều chỉnh tự động, vì câu lệnh viết sau DO không thay đổi giá trị biến đếm (14) Quan sát sách giáo khoa trang 44, chương trình cài đặt các thuật toán Tong_1A? (15) * Bước 1: S ← 1/a; N ← 0; * Bước 2: N ← N + 1; * Bước 3: Nếu N > 100 thì chuyển đến bước 5; * Bước 4: S ← S + 1/(a + N) quay lại bước 2; * Bước 5: Đưa S màn hình, kết thúc (16) Quan sát sách giáo khoa trang 44, chương trình cài đặt các thuật toán Tong_1B? (17) * Bước 1: S ← 1/a; N ← 101; * Bước 2: N ← N - 1; * Bước 3: Nếu N < thì chuyển đến bước 5; * Bước 4: S ← S + 1/(a + N) quay lại bước 2; * Bước 5: Đưa S màn hình, kết thúc (18) Quan sát sách giáo khoa trang 45, chương trình thực việc nhập từ bàn phím hai số nguyên dương M và N (M<N) Tính và đưa màn hình tổng các số chia hết cho phạm vi từ M đến N? (19) (20) Hãy lập trình tính: 50 n Y n 1 n (21) (22) TÌM SỰ KHÁC BIỆT Bài toán 1: 1 1 S a a 1 a a 100 Bài toán 2: 1 1 S a a 1 a aN Cho đến Việc tăng giá trị cho tổng S lặp lặp lại 100 lần Số lần lặp biết trước 0.0001 aN Việc tăng giá trị cho tổng S lặp lặp lại 0.0001 aN Chưa lần lặp chưa biết trước (23) LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC a Bài toán nêu vấn đề: Lặp chương trình tính tổng sau: 1 1 S a a 1 a aN 0.0001 aN Hãy xác định INPUT và OUTPUT bài toán trên? Dữ liệu vào (Input) : Nhập N Dữ liệu (Output) : Tổng S (24) THUẬT TOÁN * Bước 1: S ← 1/a; N ← 0; {Khởi tạo S và N} * Bước 2: Nếu 1/(a + N) < 0,0001 thì chuyển đến bước 5; * Bước 3: N ← N + 1; * Bước 4: S ← S + 1/(a + N) quay lại bước 2; * Bước 5: Đưa S màn hình, kết thúc Nhận xét thuật toán Từ bước đến bước lặp lại nhiều lần điều kiện 1/(a + N) < 0.0001 chưa thoả mãn (25) CÂU LỆNH WHILE - DO Hãy nêu cấu trúc lặp với câu lệnh while - do? While <điều kiện> <câu lệnh >; Điều kiện: biểu thức quan hệ biểu thức logic Câu lệnh: là môt câu lệnh Pascal (26) SƠ ĐỒ KHỐI Sai Điều kiện Đúng Quan sát sơ đồ khối, hãy cho biết thực máy? Lệnh cần lặp • Bước 1: tính giá trị <điều kiện> • Bước 2: Nếu <điều kiện> có giá trị đúng thì: • thực lệnh cần lặp • quay lại bước Chừng nào điều kiện còn đúng thì câu lệnh còn thực (27) BÀI TOÁN ĐẶT VẤN ĐỀ Tính tổng S với a là số nguyên và a>2 1 1 S a a 1 a aN 0.0001 Cho đến aN Nhận xét While 1/(a + N) >= 0.0001 Begin S:=S+1/(a+N); N:=N+1; End; Chừng nào 1/(a + N) >= 0.0001 thì thực hiện: + Tăng giá trị tổng S thêm 1/(a + N) + Tăng N thêm đơn vị (28) Quan sát sách giáo khoa trang 47, chương trình cài đặt thuật toán Tong_2? (29) • Tính giá trị <điều kiện> •Nếu <điều kiện> có giá trị đúng thì: • thực lệnh cần lặp • quay lại bước (30) Quan sát sách giáo khoa trang 47, chương trình cài đặt thuật toán “ Tìm ước số chung lớn hai số nguyên dương M và N? (31) THUẬT TOÁN * Bước 1: Nhập M, N; * Bước 2: Nếu M = N thì lấy giá trị chung này làm ƯCLN chuyển đến bước 5; * Bước 3: Nếu M > N thì M ← M + N ngược lại N ← N - M ; * Bước 4: Quay lại bước 2; * Bước 5: Đưa kết ƯCLN kết thúc (32) (33) Chừng nào M≠N thì M> N thì M:= M-N ngược lại N:= N-M Đến M=N thì đưa ƯCLN(M,N)=M kết thúc (34) CÂU LỆNH REPEAT - UNTIL Hãy nêu cấu trúc lặp với câu lệnh repeat - until? Repeat <câu lệnh> until <điều kiện >; (35) (36) Thực tháng năm 2007 E_mail: dhhoang03@yahoo.co.uk (37)