Bài giảng Tin học 11 bài 10: Cấu trúc lặp (3 tiết)
Lặp
Lặp với số lần biết trước và câu lệnh for .do .
Lặp với số lần chưa biết trước và câu lệnh while .do .
Bài tập Ví dụ
Kiểm tra bài cũViết cú pháp câu lệnh rẽ nhánh (dạng đủ và dạng thiếu)Cho ví dụ.Bài 10CẤU TRÚC LẶP(3 Tiết)Bài 10: CẤU TRÚC LẶPLặpLặp với số lần biết trước và câu lệnh for.do.Lặp với số lần chưa biết trước và câu lệnh while.do.Bài tập Ví dụThế nào là Lặp?Bài 10: CẤU TRÚC LẶPLặpBài 10: CẤU TRÚC LẶPLặpBài tập 1: Viết chương trình in ra màn hình dòng chữ “Hello”Bài tập 2: Viết chương trình in ra màn hình 5 dòng chữ “Hello”Bài 10: CẤU TRÚC LẶPLặpI. Tìm hiểu LặpBài 10: CẤU TRÚC LẶPLặpBài tập 3: Viết chương trình in ra màn hình 14 dòng chữ “Hello”Nhận xét:- Để viết ra màn hình 14 dòng chữ Hello chúng ta phải viết bao nhiêu câu lệnh trong phần thân chương trình Begin End?- Các câu lệnh đó có giống nhau không?- Số lần thực hiện của công việc in ra màn hình là bao nhiêu? Số lần này có xác định được không?Bài 10: CẤU TRÚC LẶPLặpTHPT Nguyễn Văn TrỗiBài tập 4: Viết chương trình in ra màn hình dòng chữ “Hello”, và thông báo có muốn tiếp tục hay không? Nếu muốn tiếp tục thì nhấn phím “c” còn nếu không thì nhấn phím “k” để kết thúc?Bài 10: CẤU TRÚC LẶPLặpNhận xét:- Các công việc in ra màn hình đó có giống nhau không?- Công việc in ra màn hình dòng chữ “Hello” và thông báo “Ban co muon tiep tuc khong? C/K?” có xác định được số lần in ra màn hình không?Bài 10: CẤU TRÚC LẶPLặpTHPT Nguyễn Văn TrỗiLặp với số lần biết trướcLặp với số lần chưa biết trướcPhân loại2. Lặp với số lần biết trước và câu lệnh For-doLặp dạng tiến:for := to do ;Lặp số lầnbiết trướcLặp dạng lùi:for := downto do ;Trong Pascal, có 2 loại câu lệnh lặp với số lần biết trước:Bài 10: CẤU TRÚC LẶPLặpTrong đó:for := to do ;Biến đếm thường là biến kiểu số nguyênGiá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu ≤ giá trị cuốiBài 10: CẤU TRÚC LẶPLặp2. Lặp với số lần biết trước và câu lệnh For-doHoạt động của for-doBiến đếmCâu lệnh sau DoThực hiệnGt đầuGt đầu + 1Gt đầu + 2 Gt cuối Thực hiện lần 1Thực hiện lần 2Thực hiện lần 3Thực hiện lần cuốiDạng lặp Tiến: for .. to .. do Hoạt động của for-doDạng lặp Lùi: for .. downto .. do Câu lệnh sau Do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầuBài 10: CẤU TRÚC LẶPLặp2. Lặp với số lần biết trước và câu lệnh For-doVí dụ áp dụngVí dụ 1: Sử dụng cấu trúc lặp xác định để viết chương trình thực hiện in ra màn hình 20 dòng chữ Hello.Xác định: - Câu lệnh lặp cần thực hiện? - Lặp bao nhiêu lần? - Giá trị đầu, giá trị cuối?Bài 10: CẤU TRÚC LẶPLặp2. Lặp với số lần biết trước và câu lệnh For-doVí dụ áp dụngBài 10: CẤU TRÚC LẶPLặp2. Lặp với số lần biết trước và câu lệnh For-doVí dụ áp dụngVí dụ 2: Ngày đầu tiên đi học mẹ cho bé 1 viên kẹo, ngày thứ 2 đi học mẹ cho bé 2 viên kẹo, .., ngày thứ 7 đi học mẹ cho bé 7 viên kẹo. Hỏi sau 7 ngày bé có tất cả bao nhiêu viên kẹoBài 10: CẤU TRÚC LẶPLặp2. Lặp với số lần biết trước và câu lệnh For-doS:=0S:=0+1S:=0+1+2S:=0+1+2+3..S:=0+1+2+3+4+5+6+7Writeln(‘So keo:’, s);Program vd2;Uses crt;Var i,s : integer;BeginS:=0;For i:=1 to 7 do s:=s+i;Readln;End.Hãy nhớCâu lệnh lặptrong pascalFOR ... TO ... DO ...FOR ... Downto ... DO ...+ Ý nghĩa: Lặp với số lần biết trước. Công việc sau Do sẽ được thực hiện tuần tự từ giá trị đầu đến giá trị cuối+ Có 2 dạng: - Lặp tiến: giá trị biến đếm tăng thêm 1. - Lặp lùi: giá trị biến đếm giảm đi 1AFor i:=100 to 1 do write(‘a’);BFor i:=1.5 to 10.5 do write(‘a’);DFor i:=1.5 to 10 do write(‘a’);CFor i:=1 to 10 do write(‘a’); Câu 1: Câu lệnh Pascal nào sau đây đúng?Về nhà§SNhËp N S:= 1 ; i:= 2i > N ? S:= S + 1/i§a ra S råi kÕt thóc B1: NhËp N; B2: S:=1; i:=2; B3: NÕu i > N th× ®a ra gi¸ trÞ S => KÕt thóc; B4 : S:= S + 1/i; B5: i := i +1 quay l¹i B3.X©y dùng thuËt to¸n i:= i+1FOR := TO DO ;VÝ dô: S:=1; FOR i:=2 TO 100 DO S:=S+1/i;b. D¹ng 2 (d¹ng lïi)FOR := DOWNTO DO ;VÝ dô: S:=1; FOR i:=100 DOWNTO 2 DO S:=S+1/i;a. D¹ng 1 (d¹ng tiÕn)2. LÆp víi sè lÇn lÆp biÕt tríc Gi¸ trÞ ®Çu, gi¸ trÞ cuèi lµ c¸c biÓu thøc cïng kiÓu víi biÕn ®Õm, gi¸ trÞ ®Çu ph¶i nhá h¬n gi¸ trÞ cuèi. For i:= 100 to 200 do write(i); Gi¸ trÞ biÕn ®Õm ®îc ®iÒu chØnh tù ®éng, v× vËy c©u lÖnh sau DO kh«ng ®îc thay ®æi gi¸ trÞ biÕn ®Õm.Trong ®ã BiÕn ®Õm lµ biÕn kiÓu sè nguyªn hoÆc kÝ tù. For i:=1 to 10 do write(i); For i:=‘a’ to ‘z’ do write(i); Uses crt;Var i,N : Integer; S : real;BEGIN Readln;END.S:=1;FOR i:=2 to N do S := S+1/i;Writeln(‘ Tong S =’,S:8:3);Write(‘ Nhap vao gia tri cua N :’);readln(N);Program Tinh_tong;H·y ¸p dông c©u lÖnh lÆp d¹ng tiÕn ®Ó viÕt ch¬ng tr×nh gi¶i bµi to¸n ®Æt vÊn ®Ò.LËp ch¬ng tr×nh tÝnh tæng sau: S := 1 ; i := 2;i >NKTS := S +1/ i ; i := i +1;2.081.831.51432LîtiS2.285NhËp NS := 1 ; i := 2;2>5 ?SSS := 1 +1/2 ; i := 2 +1;3>5 ?S := 1.5+1/3 ; i := 3 +1;4>5 ?S := 1.83+1/4 ; i := 4 +1;5>5 ?S := 2.08+1/5; i := 5 +1;6SSS6>5 ?In Tæng STæng S=2.28Víi N = 52.28§§M« pháng thuËt to¸n 3. VÝ dôTÝnh tæng S (víi a lµ sè nguyªn nhËp vµo tõ bµn phÝm vµ a>2).? H·y x¸c ®Þnh gi¸ trÞ khëi ®Çu cña S, quy luËt thay ®æi gi¸ trÞ cña S vµ sè lÇn lÆp. ViÕt ch¬ng tr×nh ®Ó gi¶i bµi to¸n trªn. S:=1/a;- S:= S + 1/(a+i);- i ch¹y tõ 1 ®Õn 100 => Sè lÇn lÆp lµ 100 lÇn.Kiểm tra bài cũViết cú pháp câu lệnh lặp for do..Viết câu lệnh for do dùng để tính tổng các số tự nhiên từ 1 đến nVí dụ 1: Viết chương trình in ra màn hình dòng chữ HelloVà thông báo có muốn tiếp không? Nếu muốn tiếp tục in nhấn phím ‘c’ còn nếu không thì nhấn phím ‘k’ để kết thúc.3. Lặp với số lần chưa biết trước và câu lệnh while - do Nhắc lại bài toán lặpCác thao tác in ra màn hình dòng chữ Hello và thông báo Ban co muon tiep tuc khong? C/K?luôn được lặp đi lặp lạiSố lần thực hiện các câu lệnh đó phụ thuộc vào nhấn phím c và k Số lần thực hiện lặp đó là không xác định3. Lặp với số lần chưa biết trước và câu lệnh while - do Nhận xét:Cú pháp 2.Lặp với số lần chưa biết trước WHILE DO ;Điều kiệnĐúngCâu lệnhĐiều kiện: Là biểu thức quan hệ hoặc lôgic.Câu lệnh: Là một câu lệnh của Pascal.SaiTrong đó:Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.Ví dụ 1: Viết chương trình in ra màn hình dòng chữ HelloVà thông báo có muốn tiếp không? Nếu muốn tiếp tục in nhấn phím ‘c’ còn nếu không thì nhấn phím ‘k’ để kết thúc.Câu lệnh lặp ở đây là câu lệnh nào?Writeln(‘Hello’);Write(‘Ban muon tiep tuc khong? C/K? ’);Readln(phimbam);phimbam=‘c’Điều kiện để công việc lặp được thực hiện là gì?Chương trình:program vd1;uses crt;var phimbam:char;begin clrscr; phimbam:='c'; while phimbam='c' do begin writeln ('Hello'); writeln('Ban muon tiep tuc khong? C/K ?'); readln(phimbam); end;readlnend.Ví dụ 2: Viết chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.Ý tưởng:M=N thì ƯCLN (M,N)=M=N.MN thì ƯCLN (M,N)= ƯCLN (N,M-N).Đưa ra M, kết thúcSM =N ?Nhập M, NM > N ?M M - NN N - M§§SThuật toán tìm ƯCLN§§SSThuật toán tìm ƯCLN5101010551525321LîtNhËp M ,NM =N ?M > N ?N N - MM M - N§a ra M ; KÕt thóc M= 25 ,N = 1025 = 10 ?25 >10M 25 - 1015 = 10 ?15 >10M 15 - 105 = 10 ?5 > 10 ?N = 10 - 55 = 5 ?¦CLN (25,10) = 5MNVí dụ 2: Viết chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.B1: Nhập M,N; B2 : Chừng nào MN nếu M>N thì M:=M-N, ngược lại thì N:=N-M;B3: Đến khi M=N thì => Đưa ra ƯCLN(M,N)=M; => Kết thúc. B1: Nhập M,N B2 : While MN DO IF M>N then M:=M-N else N:=N-M; B3: Xuất ra ƯCLN(M,N)THUẬT TOÁNCÁC BƯỚC VIẾT CHƯƠNG TRÌNHProgram UCLN;Uses crt;Var M,N:Integer; BEGIN Clrscr; Write(‘Nhap M:’); Readln(M); Write(‘Nhap N:’); Readln(N); While M N do if M>N then M:=M-N else N:=N-M; Writeln(‘UCLN:’, M); Readln;END.Đưa ra M, kết thúcSM =N ?Nhập M, NM > N ?M M - NN N - M§§SKhi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu?Đáp án: a. 3 b. 4 c. 5 d. 6Trắc nghiệm: Em hãy chọn đáp án đúngKhi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu?Đáp án: a. 9 b. 10 c. 12 d. Kết quả khácTrắc nghiệm: Em hãy chọn đáp án đúngHãy nhớCâu lệnh lặptrong pascalFOR ... TO ... DO ...FOR ... Downto ... DO ...While Do ;Lặp với số lần biết trước.Lặp với số lần chưa biết trước.
File đính kèm:
- bai 10.ppt