Đổ vào bình bằng ca không biết dung tích ta phải đổ bao nhiêu lần thì bình đầy?. 1 lít.?[r]
(1)GV thực hiện: Trần Thị Kim Loan (2) ĐẶT VẤN ĐỀ Xét công việc đổ nước vào bình 20lít từ hồ nước ? Đổ vào bình ca 1lít, ta phải đổ bao nhiêu lần thì bình đầy? ? Đổ vào bình ca không biết dung tích ta phải đổ bao nhiêu lần thì bình đầy? lít Hồ nước Bình nước 20 lít (3) TIẾT 13 (4) LẶP Thao tác lặp lặp lại nhiều lần gọi là lặp Lặp gồm có loại: - Lặp với số lần biết trước - Lặp với số lần chưa biết ( Có điều kiện dừng) Lặp có loại? Đó là gì? (5) LẶP Chúng ta xét thêm hai bài toán Bài toán 1: Tính và đưa kết màn hình tổng S = + + + …+ 100 Bài toán 2: Tính và đưa kết màn hình tổng S = + + + …+ N + … S > 150 Lặp với số lần biết trước Bài toán 1: Thực 100 lần Bài toán 21 thực Lặp với số lần chưa biết Bài toán 2: Thực N lần cho bao nhiêu lần? đến S> 150 thì dừng (6) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO Để mô tả cấu trúc lặp với số lần biết trước, Pascal dùng câu lệnh For – với dạng: Dạng tiến: For <biến đếm> := <giá trị đầu> to <giá trị cuối> <câu lệnh>; Dạng lùi: For <biến đếm> := <giá trị cuối> downto <giá trị đầu> <câu lệnh>; Trong đó: - Biến đếm, giá trị đầu, giá trị cuối là cùng kiểu dử liệu - Giá trị đầu nhỏ giá trị cuối - Ở dạng tiến: Biến đếm tăng từ giá trị đầu đến giá trị cuối - Ở dạng lùi: Biến đếm giảm từ giá trị cuối đến giá trị đầu (7) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO Dạng tiến: For <biến đếm> := <giá trị đầu> to <giá trị cuối> <câu lệnh>; Dạng lùi: For <biến đếm> := <giá trị cuối> downto <giá trị đầu> <câu lệnh>; Ví dụ: • For i:=1 to 10 writeln(‘Pascal’) ; in màn hình 10 lần xâu ‘Pascal’ • For i:= 20 downto writeln(‘Pascal’) ; in màn hình 20 lần xâu ‘Pascal’ • For i:=‘a’ to ‘z’ write (i) ; in màn hình các kí tự từ a đến z • For i:=100 downto write (i) ; in màn hình các số từ 100 xuống (8) CÙNG ĐI TÌM THUẬT TOÁN Bài toán: S = + + + … + 100 Lần đầu tiên ,N=0 S=0 Lần N=1 ,S= S=S+1 S=S+N Lần N=2 ,S=1+2 S=S+2 S=S+N Lần N=3 ,S=1+2+3 S=S+3 S=S+N …………………… Lần 100 N = 100 S = S + 100 S = + + + … + 100 S=S+N (9) CÙNG ĐI TÌM THUẬT TOÁN Bài toán: S = + + + … + 100 Thuật toán: Bước 1: S = 0, N=0 Bước 2: N = N+1 Bước 3: Nếu N > 100 thì đưa S màn hình và kết thúc Bước 4: S = S + N quay lại bước (10) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO DẠNG TIẾN: Bài toán: S = + + + … + 100 Bước 1: S = 0, N=0 Bước 2: N= N +1 Bước 3: Nếu N > 100 thì đưa S và kết thúc Bước 4: S = S + N quay lại bước Program tong_tien; Uses crt; Var N, S : integer; Begin clrscr; S:=0; for N:=1 to 100 S:=S + N ; write(‘Tong la:’ , S); readln; End (11) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO Program tong_tien; Uses crt; Var N, S : integer; Begin clrscr; S:=0; for N:=1 to 100 S:=S + N ; write(‘Tong la:’ , S); readln; End (12) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO DẠNG LÙI: Bài toán: S = + + + … + 100 Program tong_lui; Uses crt; Var N, S : integer; Begin clrscr; S:=0; for N:=100 downto S:=S + N ; write(‘Tong la:’ , S); readln; End (13) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO Program tong_lui; Uses crt; Var N, S : integer; Begin clrscr; S:=0; for N:=100 downto S:=S + N ; write(‘Tong la:’ , S); readln; End (14) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO 1 1 Bài toán 2: S 1 50 Em hãy tìm thuật toán và viết chương trình? (15) CÙNG ĐI TÌM THUẬT TOÁN 1 1 Bài toán 2: S 1 50 Lần đầu tiên ,N=? S=? Lần N=? ,S= ? S = … + … Lần N=? ,S=? S = … + …… Lần N=? ,S=? S = ……+ … …………………… Lần 50 N=? S=? S = … + …… (16) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO 1 1 Bài toán 2: S 1 50 Thuật toán: Bước 1: S = 0, N = Bước 2: N = N + Bước 3: Nếu N > 50 thì đưa S màn hình và kết thúc Bước 4: S = S + / N quay lại bước (17) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO 1 1 Bài toán 2: S 1 50 Chương trình: Program Bai2_tien; Uses crt; Var N: byte; S: real; Begin clrscr; S:=0; for N:=1 to 50 S:=S + 1/N ; write(‘Tong la:’ , S); readln; End (18) LẶP VỚI SỐ LẦN BIẾT TRƯỚC VÀ CÂU LỆNH FOR - DO 1 1 Bài toán 2: S 1 50 Chương trình: Program Bai2_lui; Uses crt; Var N : byte; S: real; Begin clrscr; S:=0; for N:=50 downto S:=S + 1/N ; write(‘Tong la:’ , S); readln; End (19) GHI NHỚ Biết trước số lần For <biến đếm> := <giá trị đầu> to <giá trị cuối> <câu lệnh>; For <biến đếm> := <giá trị cuối> downto <giá trị đầu> <câu lệnh>; CẤU TRÚC LẶP Không biết số lần (20) DẶN DÒ VỀ NHÀ XEM TIẾP NỘI DUNG CỦA BÀI CẤU TRÚC LẶP LÀM BÀI TẬP 5a, /51 SGK (21)