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ỏ hơn hoặc bằng giá trị cuối. For i:= 100 to 200 do write(i); ÔÛ daïng laëp tieán: Bieán ñeám töï ñoäng taêng daàn töø giaù trò ñaàu ñeán giaù trò cuoái. ÔÛ daïng laëp luøi: Bieán ñeám töï ñoäng giaûm daàn töø giaù trò cuoái ñeán giaù trò ñaàu. Töông öùng vôùi moãi giaù trò cuûa bieán ñeám, caâu leänh sau do thöïc hieän 1 laàn.
Kiểm tra cũ Cho biết kết đoạn chương trình sau? Program VD; Begin Writeln (‘PASCAL’); Writeln (‘PASCAL’); Writeln (‘PASCAL’); Writeln (‘PASCAL’); Writeln (‘PASCAL’); Kết Readln; End PASCAL PASCAL PASCAL PASCAL PASCAL Bµi 10 H ằng ng y có Những hoạt động mà lặp với số lần định biết trước, -Đánh hạn răng: ngày hai lần chẳng -Mỗi ngày tắm lần -Một bình nước có dung tích 20lit lần đỗ vào bình lít.Để cho bình nước đầy ta phảI Chúng ta thực 20 lặp lần lại công việc với số lần xác định trước, chẳng hạn thuộc -Học -Nhặt cọng rau xong Khi viết chương trình máy tính Để dẫn cho máy tính thực công việc, nhiều trường hợp ta cần phảI viết nhiều câu lệnh thực phép tính định 1/ LP Lp l iu khiển thực công việc lặp lặp lại chưa đủ số lần lặp có điều kiện cịn Cấu trúc lặp dùng để mô tả thao tác lặp phân hai loại : + Lặp với số lần biết trước + Lặp với số lần chưa biết trước VD: XÐt toán: Tính đưa kết hình tổng Bài toán 1: S = + + + + 100 Bài toán 2: S = + + + + N + S > 100 Cùng tìm thuật toán Xuất phát Lần S =0 +1 Lần LÇn +2 +3 LÇn N + + N thực giá trịS tổng S tăng SauMỗi lần lần thực giá trị tổng tăng thêm giá trịthêm i ( vớibao i =1;nhiêu? 2; ; ;N) tìm khác biệt Bài toán 1: S = + + + + 100 Bài toán 2: S = + + + + N + Cho đến ã Việc tăng giá trị cho tổng S lặp lặp lại 100 lần S > 100 ã Việc tăng giá trị cho tổng S lặp lặp lại S > 100 Số lần lặp biết trước Số lần lặp chưa biết trước 2 Laởp vụựi soỏ lần lặp biết trước câu lệnh For-do a C©u lệnh For-do: * Dạng (dạng lặp tiến) FOR := TO DO < c©u lƯnh>; VÝ dơ: FOR i:=1 TO DO WRITELN(i); Viết số Từ ->5 * D¹ng (dạng lặp lùi) FOR := DOWNTO DO ; Ví dô: FOR i:=5 DOWNTO DO WRITELN(i); Viết số Từ -1 Lặp với số lần lặp biết trước câu lệnh For-do Trong ®ã - Biến đếm biến đơn, có kiểu số nguyên hc kiĨu kÝ tù For i:=1 to 10 write(i); - Giá trị i:=a đầu, giá biểu thøc cã cïng kiĨu víi For to trÞ ‘z’ ci write(i); biến đếm, giá trị đầu phải nhỏ giá trị cuối For i:= 100 to 200 write(i); - Ở dạng lặp tiến: Biến đếm tự động tăng dần từ giá trị đầu đến giá trị cuố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 - Tương ứng với giá trị biến đếm, câu lệnh sau thực laàn SƠ ĐỒ KHỐI DẠNG LẶP TIẾN Biến đếm←Giá trị đầu Biến đếm= giá trị đầu thực lệnh cần lặp, ngược lại chuyển sang lệnh khác chương trình • Bước 3: Giảm biến đếm đơn vị, quay lại Lệnh khác; bước Sai Lặp với số lần lặp biết trước câu lệnh For-do Chú ý: - Trong câu lệnh FOR DO, Nếu giá trị đầu = giá trị cuối vòng lặp thực lần - Trong câu lệnh FOR DO Số lần lặp = Giá trị cuối – Giá trị đầu + 2 Lặp với số lần lặp biết trước câu lệnh For-do b/VD: Bài toán : Lập chương trình tính tổng sau: S = + + + + + N HÃy xác định INPUT : - Dữ liệu vào (Input) OUTPUT toán trên! - Dữ liƯu (Output) : NhËp N Tỉng S Ph©n tÝch toán với TừNG TRƯờng hợp N Neỏu N =10, S=?; lập trình giải nào? S0 := 0; i=1 ⇒ S1 := S0 + = 1; S=1+2+3+ … +10; i=2 ⇒ S2 := S1 + = 3; …………… i=10 ⇒ S10 :=S9+10=55; Nế u có N =100, Em nhận lậpt trình xé giả caựcih nhử giaỷtheỏ i naứnaứ y?o? Nhận xét: Bắt đầu từ S1 việc tính S lặp lặp lại 100 lÇn theo quy lt: Ssau = Stríc+ i víi i ch¹y tõ → 100 S0 := 0; i=1 ⇒ S1 := S0 + 1; i=2 ⇒ S2 := S1 + 2; …………… i=10 ⇒ S10 := S9 + 10; ………… i=100 ⇒ S :=S +100; LËp tr×nh tÝnh tæng: S = + + + + + N Nhóm Nhóm v HÃy áp dụng câu lệnh dạng lặp tiến để viết chương trình? HÃy áp dụng câu lệnh dạng lặp lùi để viết chương trình? Chửụng trỡnh ngu câ lặp For Chương trình dùngdùcâ lệnuhlệlặnph For – do– lặpntiến dạngdạlặnpg tiế Program tong1 ; Uses crt; Var S,i,n : integer; Begin Clrscr; Write(‘nhap n’); readln(n); Program tong1 ; Uses crt; S:= 0; Var S,i,n : integer; For i := to n S:= S + i ; Begin Clrscr; Writeln(‘ tong S la ‘ , S ); Write(‘nhap n’); Readln readln(n); End For S:= 0; i := to n S:= S + i ; Chương trình dùng câu lệnh lặp For – Chương dùng câu lệnh lặp For – dạng lùtrình i dạng lùi Program tong2 ; Uses crt; Var S,i,n : integer; Program tong2 ; Begin Clrscr; Uses crt; Var S,i,n : integer;Write(‘nhap n’); readln(n); Begin S:= 0; Clrscr; For i := n downto Write(‘nhap n’); S:= S + i ; readln(n); Writeln(‘ tong S la ‘ , S ); S:= 0; Readln For i := n downto 1End.do S:= S + i ; Writeln(‘ tong S la ‘ , S ); Readln End Bài tập trắc nghiệm củng cố: Câu 1: x biến thực ,i biến nguyên ,câu lệnh sau la đúng? A.for x:=1 to 10 writeln(‘lop 11a3’); B for i:=1 to 10 writeln(‘lop 11a3’); C for x:=1.5 to 10.5 writeln(‘lop 11a3’); D for i:=1.5 to 10 writeln(‘lop 11a3’); Bài tập trắc nghiệm củng cố: Câu 2: cú pháp lệnh lặp sau sai? A For I:=n downto … B For I:=1 downto n … C For I:=0 to n … D For I:=1 to n … Lặp với số lần lặp biết trước câu lệnh For-do c Bµi tập nhà BT1: Viết chương trình giải toán: Nhập vào số tự nhiên N Tính tổng S: S = + + + + N 2 2 BT2: Viết chương trình giải toán: Nhập vào số tự nhiên N Tính tích T: T = N! = 1*2 *3* * N ... TRƯờng hợp N Neỏu N =10 , S=?; lập trình giải nào? S0 := 0; i =1 ⇒ S1 := S0 + = 1; S =1+ 2+3+ … +10 ; i=2 ⇒ S2 := S1 + = 3; …………… i =10 ⇒ S10 :=S9 +10 = 55; Nế u có N =10 0 , Em nhận lậpt trình xé giả caựcih... từ S1 việc tính S lặp lặp lại 10 0 lÇn theo quy lt: Ssau = Stríc+ i víi i ch¹y tõ → 10 0 S0 := 0; i =1 ⇒ S1 := S0 + 1; i=2 ⇒ S2 := S1 + 2; …………… i =10 ⇒ S10 := S9 + 10 ; ………… i =10 0 ⇒ S :=S +10 0 ;... x: =1 to 10 writeln(‘lop 11 a3’); B for i: =1 to 10 writeln(‘lop 11 a3’); C for x: =1. 5 to 10 . 5 writeln(‘lop 11 a3’); D for i: =1. 5 to 10 writeln(‘lop 11 a3’); Bài tập trắc nghiệm củng cố: Câu 2: cú pháp