Dụng cấu trúc lặp với số lần biết trước để viết chương trình đưa ra màn hình các số từ 1 đến 10

Lorem ipsum dolor sit amet, consectetur adipiscing elit.Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu.Fusce viverra neque at purus laoreet consequa.Vivamus vulputate posuere nisl quis consequat.

Create an account

 Bài 10 Cấu Trúc Lặp Tuần : 6,7 Ngày soạn : 10/09/07 Tiết : 12,13,14§10. CẤU TRÚC LẶP I/- Mục đích – yêu cầu : Về kiến thức : + Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.+ Hiểu cấu trúc lặp với số lần biết trước, cấu trúc lặp kiểm tra điều kiện trước.+ Biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể. Về kỹ năng : + Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp.+ Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần đònh trước.+ Viết được thuật toán giải một số bài toán đơn giản.  Về thái độ : + Tạo sự ham muốn cho HS giải toán bằng NNLT trên máy tính.+ Tiếp tục rèn luyện các phẩm chất cần thiết của người lập trình như xem xét giải quyếtvấn đề 1 cách cẩn thận, chu đáo, có sáng tạo, không thoả mãn với kết quả ban đầu đạtđược....Điều này thể hiện trong suốt quá trình từ khi phân tích bài toán đến khi lựa chọndữ liệu, cấu trúc điều khiển thực hiện thuật toán, viết chương trình và cuối cùng là dòch,sửa lỗi, kiểm thử, cải tiến thích ứng với các bộ dữ liệu và trạng thái bài toán khác nhau.II/- Chuẩn bò :  GV : + Phải có giáo án và các đồ dùng dạy học liên quan đến bài dạy. + Cần nêu rõ ý nghóa của cấu trúc lặp ( thông qua ví dụ trong SGK 42). + Chuẩn bò minh hoạ Tong_1a và Tong_1b trên giấy khổ lớn.  HS : + Đọc trước sách giáo khoa ở nhà.  PP : + Diễn giảng ,phát vấn và các hình vẽ trực quan (nếu có ). III/- Hoạt động dạy học :1. Ổn đònh lớp : Kiểm tra só số (1’)2. Kiểm tra bài cũ : (4’)? Hãy viết cú pháp của câu lệnh rẽ nhánh dạng thiếu và dạng đủ đồng thời nêu quá trìnhthực hiện lệnh ? 3. Nội dung bài mới : TGHoạt Động Của GVHoạt Động Của HSNội Dung BàiTiết12+ Đặt vấn đề : Cấu trúc lặp làđiều khiển thực hiện công việclặp đi lặp lại khi chưa đủ số lầnlặp hoặc khi 1 điều kiện nào đócòn đúng. Sau đây ta xét khái Tin Học 11  Trang 1 Bài 10 Cấu Trúc Lặp niệm lặp. Vd 1 : VCT tính điểm cho HS 1lớp (giả sử lớp có 50 HS) sẽphải lặp lại 1 số thao tác nhưsau với mỗi HS :+ Nhập họ tên HS (hoặc SBD)+ Nhập điểm các môn.+ Tính tổng điểm hoặc tínhđiểm trung bình.- Nếu ctrình trên viết đi viết lạicác câu lệnh trên nhiều lần thìrõ ràng không thuận tiện. Vìthế NNLT sẽ đưa ra cấu trúclặp, ta chỉ cần viết các câu lệnhđó cho 1 HS. Sau đó cho ctrìnhthực hiện lặp lại các thao tácđó với các HS khác. Quá trìnhdừng lại khi ta nhập đủ số điểmcho 50 HS.hoặc nhập chưa đủsố điển cho 50 HS.( Lặp với sốlần biết trước và lặp với số lầnchưa biết trước).- Quá trình lặp không thể dừngđược gọi là quá trình lặp vôhạn. Do đó cần phải có 1 đk saiđể sau 1 số lần lặp thì vòng lặpsẽ kết thúc.Vd 2 : Bài toán gửi tiền tiếtkiệm vào ngân hàng. Hàngtháng phải tính lãi và cộngthêm vào gốc đang gửi hay nóicách khác gốc của tháng sau =gốc + lãi tháng trước.Vd 3 : Tính tổng của một đoạnsố nguyên mà không đượcdùng công thức. ? Hãy cho biết 2 thuật toán trêncó những gì giống và khácnhau+ Giống nhau : đềuthực hiện vòng lặp1/- Khái niệm lặp : Xét 2 bài toán như sau với a là sốnguyên và a >2. Bài toán 1 : Tính và sau đó đưakết quả ra màn hình tổng.S = 1a + 11a + + 12a ++ ... + 1100a + . Bài toán 2 : Tính và sau đó đưakết quả ra màn hình tổng.S = 1a + 11a + + 12a ++ ... + 1a N++...Cho đến khi 1a N+ < 0,0001. Cách giải : S được gán giá trò 1a ; Tiếp theo mỗi lần cộng vào tổng Smột giá trò 1a N+ với N= 1,2,3,... - Đối với bài toán 1, số lần lặp là 100và việc cộng vào tổng S sẽ kết thúckhi đã thực hiện việc cộng 100 lần.- Đối với bài toán 2, số lần lặp chưabiết trước nhưng việc cộng vào tổngS sẽ kết thúc khi thoả điều kiện1a N+ < 0.0001 . Trong lập trình, có những thao tácphải thực hiện lặp đi lặp lại nhiềulần, khi đó ta gọi là cấu trúc lặp.Cấutrúc lặp thường có 2 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. Các NNLT nào cũng cung cấp 1 sốcâu lệnh để mô tả các cấu trúc lặp.2/- Lặp với số lần biết trước vàcâu lệnh For – Do : Xét 2 thuật toán Tong_1a vàTong_1b (Xem SGK trang 43 ) Tin Học 11  Trang 2 Bài 10 Cấu Trúc Lặp Tiết13 Sau khi so sánh và giải thích 2thuật toán trên ta kết luận như :- Ở Tong_1a thì chúng ta ápdụng câu lệnh lặp dạng tiến- Ở Tong_1b thì chúng ta ápdụng câu lệnh lặp dạng lùi. + Sau đây chúng ta sang phầncú pháp.- Dạng tiến : Sau mỗi lần thựchiện biến đếm tăng lên 1 hoặcta có thể dùng hàm succ(i)- Dạng lùi : Sau mỗi lần thựchiện biến đếm giảm đi 1 hoặcta có thể dùng hàm Pred(i).? Ở dạng tiến vòng lặp kết thúckhi nào ?? Ở dạng lùi vòng lặp kết thúckhi nào ?+ Đặt vấn đề: ở tiết trướcchúng ta đã học câu lệnh lặp ở2 dạng tiến và lùi, hôm naychúng ta vận dụng 2 dạng nàyđể áp dụng cho 2 thuật toánTong_1a và Tong_1b như sau :và lặp lại 100 lần.+ Khác nhau : ởthuật toán tong_1atăng N lên 1 saumỗi lần thực hiện(N→N+ 1 ) , còn ởthuật toán Tong_1bthì giảm đi 1 saumỗi lần thực hiện(N→N-1)+ Vòng lặp kết thúckhi Biến đếm >= giátrò cuối.+ Vòng lặp kết thúckhi Biến đếm <= giátrò đầu. Cú pháp lặp : Dạng tiến :For < Biến đếm > := < giá trò đầu >To < giá trò cuối > Do < câu lệnh > ; Dạng lùi :For < Biến đếm > := < giá trò cuối >Downto Do ;Trong đó :- Biến đếm : là biến đơn có kiểunguyên.- Giá trò đầu và giá trò cuối : là cácbiểu thức cùng kiểu với biến đếm vàgiá trò đầu phải nhỏ hơn hoặc bằnggiá trò cuối.(Nếu giá trò đầu lớn hơngiá trò cuối thì dòng lặp không đượcthực hiện.  Quá trình thực hiện lệnh :- Dạng tiến : Được thực hiện tuần tự,với biến đếm nhận lần lượt các giá tròliên tiếp tăng từ giá trò đầu đến giátrò cuối.- Dạng lùi : Được thực hiện tuần tự,với biến đếm nhận lần lượt các giá tròliên tiếp giảm từ giá trò cuối đến giátrò đầu. Ví dụ 1 : Xét 2 chương trìnhtính : Tong_1a và Tong_1b Program Tong_1a ; Uses crt ; Var S : real ; a, N : integer ;Begin Tin Học 11  Trang 3 Bài 10 Cấu Trúc Lặp Vd 1 : VCT tính tổng các sốnguyên chẳn hoặc lẽ từ 1 đến50.Program sochan ; Uses crt ; Var T, I : integer ;Begin For I := 1 to 50 doIf I (mod 2 = 0 ) ThenT := T + I ;Writeln( Tong =’, T );Readln ;End.Vd 2 : VCT tổng S = 1 + 2 + 3+ ... + N .Program Vi_du 2; Uses crt ; Var N, I,S : integer ;Begin Write(‘Nhap vao gia tri N:’) ; Readln(N) ; S := 0 ;For I := 1 to N do S := S + I ; Writeln(‘ Tong S =’ , S ) ; Readln ;End. Write(‘Nhap vao gia tri a :’) ; Readn(a) ; S := 1/a ; For N := 1 to 100 do S := S + 1/(a+ N) ; Writeln(‘ Tong S la : ‘, S :8:2) ;Readln ;End.Program Tong_1b ; Uses crt ; Var S : real ; a,N : integer ; Begin Write(‘Nhap vao gia tri a :’) ; Readn(a) ; S := 1/a ; For N := 100 Downto 1 do S := S + 1/(a+ N) ; Writeln(‘ Tong S la : ‘, S :8:2) ; Readln ;End. Ví dụ 2 : VCT nhập vào 2 sốnguyên dương dương M và N(M < N ), sau đó tính và đưa ra màn hình tổngcác số chia hết cho 3 hoặc 5 trongphạm vi từ M đến N.Program Vi_du 2 ; Uses crt ; Var M, N, I : integer ; T : longint ; Begin Write(‘Nhap vao 2 gia tri M va N(M < N) :’) ; Readn(M,N) ; T := 0 ; For I := M to N do If (I mod 3 =0) or (I mod 5 = 0) then T := T + I ; Writeln(‘ KET QUA LA : ‘, T) ; Tin Học 11  Trang 4Điều KiệnCâu lệnh Bài 10 Cấu Trúc Lặp Tiết14+ Đặt vấn đề : ở phần trướcchúng ta đã được học câu lệnhlặp dạng tiến và dạng lùi đó là2 dạng lặp với số lần biếttrước, nghóa là chúng ta sẽ biếtđược nó sẽ lặp lại bao nhiêulần rồi sau đó kết thúc, hômnay chúng ta tiếp tục tìm hiểuthêm 1 dạng lặp nữa nhưngchúng ta không biết trước sốlần lặp và dừng lại khi nào. Đólà câu lệnh lặp dạng While –Do. ? Em hãy cho biết vòng lặpWhile – Do kết thúc khi nào ?- Mỗi lần thực hiện công việccó thể làm thay đổi giá trò củađiều kiện nên đến 1 lúc nào đóđk lặp không còn đúng nữa vàcấu trúc sẽ kết thúc.+ Vòng lặp kết thúckhi 1 điều kiện chotrước được thoả mãnReadln ;End. 3/- Lặp với số lần chưa biếttrước và câu lệnh While – Do : Để giải bài toán 2 ta xây dựng thuậttoán Tong_2 như sau :B1 : S ¬ 1/a ; N ¬ 0 ; {ktạo s và N}B2 : Nếu 1/(a+N) < 0.0001 chuyểnsang B5 ;B3 : N ¬ N + 1 ;B4 : S ¬S + 1/(a+N) rồi quay lại B2;B5 : Đưa S ra màn hình, rồi kết thúc ; Cú pháp :While < điều kiện > Do < Câu lệnh > ;Trong đó :- Điều kiện : là biểu thức lôgic ;- Câu lệnh : là 1 câu lệnh đơn hoặcghép. Lưu đồ : sai đúng Tin Học 11  Trang 5

(1)

Tuần 12 → 14Tiết 12 → 14


§3. CẤU TRÚC LẶP

I. Mục tiêu:

1. Kiến thức:


- Hiểu nhu cầu cấu trúc lặp trong biểu diễn thuật toán.


- Hiểu nhu cầu cấu trúc lặp với số lần lặp biết trước, cấu trúc lặp kiểm trađiều kiện trước.


- Biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể2. Kỹ năng:


- Mơ tả được thuật tốn của một số bài tốn đơn giản có lệnh lặp.- Viết được thuật toán của một số bài toán đơn giản.


3. Thái độ: Nghiêm túc trong học tập.II. Phương pháp và phương tiện dạy học:


1. Chuẩn bị của giáo viên: Bảng phụ.


2. Chuẩn bị của học sinh: Đọc trước SGK Tin học 11. III. Hoạt động dạy và học:


1. Ổn định lớp, kiểm tra sĩ số2. Kiểm tra bài cũ


3. Tiến hành tiết dạy


Nội dung cơ bản Hoạt động của GV và HS


Tiết 12: HĐ1:


GV: Nêu ví dụ 1: Giả sử phải viết ramàn hình các số từ 0 đến 24, mỗi sốchiếm 1 dòng


012..24


GV: Gọi HS lên bảng viết thủ tụctrên?


HS: writeln(0)writeln(1)……writeln(24)


GV: Như vậy đối với bài toán nàychúng ta phải thực hiện 25 lần lệnhwriteln → lặp đi lặp lại


GV: Đưa ra bài tốn (bảng phụ) ucầu HS tìm cách viết chương trình .HS: Suy nghĩ, trả lời


GV: Nhận xét đưa ra cách giải “dùngcấu trúc lặp”

(2)

1. Lặp:


Trong lập trình có những thao tác phải lặp lạinhiều lần, khi đó ta gọi là cấu trúc lặp. Lặpthường có 2 loại:


- Lặp với số lần biết trước. - Lặp với số lần không biết trước.


NNLT nào cũng cung cấp một số câu lệnh đểmô tả các cấu trúc lặp.


2. Lặp với số lần biết trước và câu lệnh for-do: Trong Pascal, có 2 loại câu lệnh lặp có số lầnbiết trước:


- Dạng lặp tiến:


For := to do


Trong đó:


Biến đếm (kiểu được đếm) thường là biến kiểusố nguyên


Giá trị đầu, giá trị cuối là các biểu thức cùngkiểu với biến đếm. Giá trị đầu phải nhỏ hơn hoặcbằng giá trị cuối.


- Dạng lặp lùi:


For := downto do


 Hoạt động của lệnh for – do


- Ở dạng lặp tiến: biến đếm tự tăng dần từgiá trị đầu đến giá trị cuối


- Ở dạng lặp lùi: biến đếm tự giảm dần từgiá trị cuối đến giá trị đầu


Tương ứng với mỗi giá trị của biến đếm câu lệnhsau do thực hiện 1 lần


 Chú ý: Giá trị của biến đếm được điều chỉnh


tự động, vì vậy câu lệnh viết sau do không



HĐ2:


GV: Các em hãy quan sát lại ví dụ 1,
sử dụng lệnh writeln 25 lần = số lầnlặp → số lần lặp biết trước.


GV: Nêu cấu trúc lặp với số lần biếttrước: dạng lặp tiến


GV: Áp dụng mô tả cấu trúc đó vàoví dụ 1:


For i:=0 to 24 do writeln(i)GV: Nêu ví dụ 2: Giả sử phải viết ramàn hình các số từ 0 đến 24, mỗi sốchiếm 1 dòng


242322..0


GV: Nêu cấu trúc lặp với số lần biếttrước: dạng lặp lùi

(3)

Tiết 13:


Ví dụ 1: Viết chương trình tính tổng


1001...21111





aa


aaS


Program Tong_1a;Use crt;


Var S: real; a, i: integer;Begin



Clrscr;


Write(‘ Hay nhap gia tri a vao!’); Readln(a);


S:=1.0/a;


For i:=1 to 100 do S:=S+1.0/(a+i);


Writeln(‘Tong S la:’,S:8:4); Readln


End.


Ví dụ 2: Chương trình thực hiện nhập từ bànphím hai số nguyên dương M và N (M

For i:=M to N do


If (i mod 3=0)or(i mod 5=0) then T := T + i;


GV: Nêu ví dụ 1, phân tích bài tốndựa vào thuật toán Tong_1a trongSGK trang 43


GV: Một chương trình gồm mấy phần?HS: 2phần (phần khai báo và phầnthân chương trình)


GV: Trong phần khai báo chúng ta cầnkhai báo những gì?


HS: Khai báo tên chương trình, khaibáo thư viện và khai báo biến a, S, i


GV: Lệnh thông báo nhập giá trị chobiến a và lệnh nhập giá trị cho biến anhư thế nào?


HS: Suy nghĩ trả lời


GV: Áp dụng lệnh For tiến để viếtcâu lệnh thực hiện tính tổng trên nhưthế nào?


GV: Lệnh xuất kết quả ra màn hình?GV: Các em hãy viết lại chương trìnhtrên với dạng For lùi


HS: suy nghĩ và tự viết chương trìnhvào tập


GV: Phân tích bài tốn, dẫn dắt đi đếnáp dụng câu lệnh tương ứng để viếtchương trình


GV: Cần có một biến đếm chạy từ M
đến N, kiểm tra nếu biến đếm chia hếtcho 3 hoặc 5 thì cộng giá trị của biếnđếm vào biến tổng.


GV: Chia lớp ra thành các nhóm, dựavào gợi ý của GV các nhóm suy nghĩđể viết chương trình thực hiện bàitoán này


HS: Hoạt động nhóm, viết chươngtrình sau đó lên trình bày.

(4)

Tiết 14:


3. Lặp với số lần chưa biết trước và câu lệnhwhile-do:


Bài tốn: Tính tổng


...1...21111Naaaa


S cho đến khi


.0001,01NaThuật toán:Bước 1: S1/a; N0;


Bước 2: Nếu 1/(a+N)<0,0001 thì chuyển đềnbước 5;


Bước 3: NN+1;



Bước 4: SS+1/(a+N); rồi quay lại bước 2;


Bước 5: Xuất S ra MH rồi kết thúc.


Để mô tả cấu trúc lặp với số lần chưa biếttrước, Pascal dùng câu lệnh lặp while – do códạng:


while <điều kiện> do ;Trong đó:


- điều kiện: biểu thức lơgic;


- câu lệnh: là lệnh đơn hoặc lệnh ghép trongPascal.


Ví dụ:


S := 1/a; N := 0;


while 1/(a+N) >= 0.0001 dobegin


N := N+1;S := S+1/(a+N);end;


Sơ đồ khối:


Hoạt động: Trong khi điều kiện cịn đúng thì câu
lệnh cịn được thực hiện.


Ví dụ 1: Chương trình tính tổng trên.Program Tong_3;


Uses crt;Var S: real;


a, N: integer;Begin


GV: Nêu bài toán đặt vấn đề.


GV: Nêu thuật toán giải bài toán trên.


GV: Như vậy, việc lặp với số lầnchưa biết trước chỉ kết thúc khi mộtđiều kiện cho trước nhận giá trị là gì?HS: Nhận giá trị đúng.


GV: Nêu cấu trúc lặp với số lần chưabiết trước trong Pascal


GV: Viết câu lệnh lặp với số lần chưabiết trước để tính tổng của bài toántrên


GV: Dựa vào sơ đồ khối hãy nêu hoạtđộng của lệnh lặp với số lần chưa biếttrước while – do?


GV: Các em hãy gấp sách lại, hoạtđộng theo nhóm viết chương trìnhgiải bài tốn trên.


GV: Quan sát, hướng dẫn HS hoạtđộng, trao đổi viết chương trình.Đúng


Câu lệnh


SaiĐiều

(5)

Readln(a);


S := 1/a; N := 0;


While 1/(a+N) >= 0.0001 doBegin


N := N+1;S := S+1/(a+N);End;


Writeln(‘Tong S = ‘,S:8:4);Readln


End.



Ví dụ 2: Tìm ước chung lớn nhất (UCLN)của hai số ngun dương M và N.


(Sgk_trang 47-48)


nhóm lên bảng trình bày


GV: Gọi HS nhận xét bài làm củatừng nhóm.


GV: Nhận xét


GV: Yêu cầu HS đọc sách xem lạithuật tốn, sơ đồ khối của bài tốn sauđó suy nghĩ viết chương trình.


IV. Đánh giá cuối bài:


- GV: Nhắc lại một số khái niệm mới- GV: Nhắc lại cấu trúc câu lệnh .- Cho bài tập về nhà


- HS: Về nhà xem lại các kiến thức đã học, chuẩn bị kiểm tra 1 tiết.

Tổ trưởng kí duyệt

Ngày 08 tháng 11 năm 2008