Trong lËp tr×nh, cã nh÷ng thao t¸c ph¶i lặp đi lặp lại một số lần, khi đó ta gọi là cÊu tróc lÆp 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 không biết trước GV: §[r]
(1) Gi¸o ¸n gi¶ng d¹y Bé m«n: Tin häc 11 §12: cÊu tróc LÆp (TiÕt PPCT: 12) Ngµy so¹n: …………………………… Ngµy ®¨ng ký gi¸o ¸n: Người duyệt giáo án (TTCM duyệt, BGH duyệt): I Môc Tiªu: KiÕn thøc: - HiÓu nhu cÇu cña cÊu tróc lÆp 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 và câu lệnh For - Do Kü n¨ng: BiÕt vËn dông ®îc cÊu tróc lÆp vµ c©u lÖnh For - Do vµo tõng t×nh huèng cô thÓ II chuÈn bÞ: Gi¸o viªn: Gi¸o ¸n, m¸y tÝnh, m¸y chiÕu Häc sinh: S¸ch gi¸o khoa vµ tµi liÖu tham kh¶o III tæ chøc d¹y häc: KiÓm tra bµi cò: Nêu cấu trúc và hoạt động câu lệnh IF - THEN dạng thiếu và dạng đủ? Nªu kh¸i niÖm vµ cÊu tróc c©u lÖnh ghÐp HS: Lªn b¶ng tr¶ lêi c©u hái GV: §¸nh gi¸, cho ®iÓm Hoạt động 1: Tìm hiểu ý nghĩa cấu trúc lặp a Môc tiªu: - Häc sinh thÊy ®îc sù cÇn thiÕt cña cÊu tróc lÆp lËp tr×nh b Néi dung: Bài toán 1: Viết chương trình tính tổng: S= 1 1 a a a a a 100 b Các bước tiến hành: Hoạt động giáo viên Hoạt động học sinh Bµi to¸n 1: TÝnh tæng: S 1 1 a a 1 a a 100 GV: §ç ThÞ Thu HiÒn Lop11.com (2) Gi¸o ¸n gi¶ng d¹y Bé m«n: Tin häc 11 - Hãy xác định công thức toán học để tính tæng? - Gợi ý phương pháp: Ta xem S là c¸i thïng, sè h¹ng nh mét c¸i ca cã dung tích khác nhau, đó việc tính tổng trên tương tự việc đổ các ca nước vào thùng S - Có bao nhiêu lần đổ nước vào thùng? - Mỗi lần lượng là bao nhiêu? lần thứ i đổ bao nhiêu? - Ph¶i viÕt bao nhiªu lÖnh? => số lần lặp đã biết trước Bµi to¸n 2: TÝnh tæng - Rất khó xác định công thức tính - Theo dâi gîi ý - Có 100 lần đổ nước - Mỗi lần đổ ai - Ph¶i viÕt 100 lÖnh 1 1 a a 1 a aN 0,0001 víi ®iÒu kiÖn aN S - Bài trước: cho giới hạn N - Hái: Sù kh¸c cña bµi to¸n nµy víi - Bµi nµy: cho giíi h¹n S - Chưa xác định bài toán đã viết tiết trước? - Hái: lÆp l¹i bao nhiªu lÇn? - §Õn ®iÒu kiÖn < 0.0001 ®îc aM - Hỏi: lặp đến nào? tho· m·n => số lần lặp chưa biết trước Trong lËp tr×nh, cã nh÷ng thao t¸c ph¶i lặp lặp lại số lần, đó ta gọi là cÊu tróc lÆp Lặp thường có 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 GV: §Ó thùc hiÖn tÝnh tæng S ta ph¶i thùc hiÖn nh thÕ nµo? GV: Ta đã biết câu lệnh IF – THEN NÕu ®a c©u lÖnh nµy vµo viÖc gi¶i bµi to¸n nµy th× em cã nhËn xÐt g×? - HS suy nghĩ để đưa cách giải bài to¸n - HS: §a c¸c lÖnh thùc hiÖn c¸c thao t¸c tÝnh tæng GV: §a c¸ch gi¶i bµi to¸n b»ng c¸c lÖnh IF –THEN sau: S:=0; If (1/a>0,0001) Then S:=S+1/a; If (1/(a+1)>0,0001) Then S:=S+1/(a+1); If (1/(a+2)>0,0001) Then S:=S+1/(a+2); … - §a ý kiÕn cña m×nh GV: Y/c HS nhËn xÐt c¸ch gi¶i trªn GV: §ç ThÞ Thu HiÒn Lop11.com (3) Gi¸o ¸n gi¶ng d¹y Bé m«n: Tin häc 11 GV: NhËn xÐt: - Theo nh c¸ch gi¶i trªn, th× viÖc céng thªm chØ dõng 1/(a+N) < 0,0001 - Víi bµi to¸n 1, N=100 th× viÖc thùc hiÖn câu lệnh lặp lên đến 100 lần điều kiện để kiểm tra không biết phải thực nh thÕ nµo? => Víi c¸ch nh trªn th× ë c¶ bµi to¸n thực quá dài §Ó thùc hiÖn viÖc lÆp nh trªn ng«n ng÷ Pascal cung cÊp cho ta mét sè c©u lÖnh lÆp để mô tả các cấu trúc lặp trên Hoạt động 2: Xây dựng thuật toán cho bài toán a Mục tiêu: Viết thuật toán cho bài toán 1, trên sở đó xây dựng thuật toán 1b Nêu vấn đề cho cấu trúc câu lệnh lặp với số lần biết trước dạng b Néi dung: ThuËt to¸n 1a: ThuËt to¸n 1b: Bước 1: N 0; S 1/a; Bước 1: N 101; S 1/a; Bước 2: N N + 1; Bước 2: N N - 1; Bước 3: Nếu N>100 thì chuyển đến bước Bước 3: Nếu N < thì chuyển đến bước Bước 4: S S+1/(a+N) quay lại bước Bước 4: S S+1/(a+N) quay lại bước Bước 5: Đưa S màn hình kết thúc Bước 5: Đưa S màn hình kết thúc c C¸ch tiÕn hµnh: Hoạt động giáo viên Hoạt động học sinh Y/c häc sinh viÕt thuËt to¸n gi¶i bµi to¸n Gäi HS lªn tr×nh bµy thuËt to¸n Gọi học sinh khác lên nhận xét đánh giá Thảo luận theo nhóm để viết thuật toán: - Tr×nh bµy thuËt to¸n - Nhận xét, đánh giá kết nhóm kh¸c - ChuÈn ho¸ l¹i thuËt to¸n cho häc sinh GV: Có thể thay đổi kiểm tra điều kiện - Đưa ý kiến N>100 để dừng việc tính tổng hay không? GV: DÉn d¾t vµ ®a ThuËt to¸n Tong_1b - Tr×nh bµy thuËt to¸n d¹ng lïi Gäi HS lªn tr×nh bµy thuËt to¸n 1b b»ng c¸ch thay ®iÒu kiÖn dõng lÆp - Theo dâi vµ ghi nhí Hoạt động 3: Tìm hiểu lệnh lặp for ngôn ngữ lập trình Pascal a Môc tiªu: Häc sinh biÕt ®îc cÊu tróc chung cña lÖnh FOR HiÓu ®îc ý nghÜa cña thµnh phần lệnh Biết thực máy gặp FOR vẽ sơ đồ thực đó GV: §ç ThÞ Thu HiÒn Lop11.com (4) Gi¸o ¸n gi¶ng d¹y Bé m«n: Tin häc 11 b Néi dung: * D¹ng tiÕn: Cấu trúc: FOR < biến đếm>:= <giá trị đầu> to <giá trị cuối > DO <lệnh cần lặp>; Biến đếm: là kiểu nguyên, kiểu 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á h¬n hoÆc b»ng gi¸ trÞ cuèi Sù thùc hiÖn cña m¸y: Bước 1: Tính giá trị đầu, giá 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 và tăng biến đếm lên đơn vị, và quay lại bước Sơ đồ thực hiện: Biến đếm:=G.trị đầu S Biến đếm<=G.trị Cuối § LÖnh lÆp cÇn biến đếm tăng * D¹ng lïi: Cấu trúc: FOR < biến đếm>:= <giá trị cuối> downto <giá trị đầu > DO <lệnh cần lÆp>; Biến đếm: thường là kiểu nguyê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 lớn h¬n hoÆc b»ng gi¸ trÞ cuèi Sù thùc hiÖn cña m¸y: Bước 1: Gán giá trị đầu 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 và giảm biến đếm lên đơn vị, và quay lại bước Sơ đồ thực hiện: Biến đếm:=G.trị đầu S Biến đếm>=G.trị Cuối § LÖnh lÆp cÇn biến đếm giảm GV: §ç ThÞ Thu HiÒn Lop11.com (5) Gi¸o ¸n gi¶ng d¹y Bé m«n: Tin häc 11 c Các bước tiến hành: Hoạt động giáo viên Yªu cÇu häc sinh nghiªn cøu SGK vµ cho biÕt cÊu tróc cung cña FOR? - Gi¶i thÝch: <Biến đếm>: là kiểu nguyên kiểu ký tự - Hái: ý nghÜa cña <gi¸ trÞ ®Çu> <gi¸ trÞ cuèi>, kiÓu d÷ liÖu cña chóng -Hái: Trong bµi to¸n tÝnh tæng, <gi¸ trÞ ®Çu> <gi¸ trÞ cuèi> lµ bao nhiªu? - Hái: Khi lÖnh kh¸c cÇn lÆp l¹i ta viÕt nh thÕ nµo? - Hái: lÖnh tÝnh tæng, lÖnh nµo cÇn lÆp l¹i? - Hái: em cã nhËn xÐt g× vÒ <gi¸ trÞ ®Çu> <gi¸ trÞ cuèi> ? - DÉn d¾t: Khi cã lÖnh FOR ®îc gäi lµ lÖnh FOR tiÕn Turbo Pascal cßn cã mét lo¹i lÖnh for n÷a lµ lÖnh for lïi H·y yªu cÇu tr×nh bµy cÊu tróc cña lÖnh for lïi Hoạt động học sinh Đọc SGK để trả lời FOR < biến đếm>:= <giá trị đầu> to <gi¸ trÞ cuèi > DO <lÖnh cÇn lÆp>; - Dùng để làm giới hạn cho biến đếm - Cùng kiểu với <biến đếm> - <Gi¸ trÞ ®Çu > lµ 1; <gi¸ trÞ cuèi> lµ 100 - Ta ph¶i sö dông lÖnh ghÐp (Begin…end;) S:=S + ; ai - <Gi¸ trÞ ®Çu> < <gi¸ trÞ cuèi> CÊu tróc: FOR < biến đếm>:= <giá trị cuối> downto <gi¸ trÞ ®Çu > DO <lÖnh cÇn lÆp>; - Hái; so s¸nh <gi¸ trÞ ®Çu> vµ <gi¸ trÞ <Gi¸ trÞ ®Çu > > <gi¸ trÞ cuèi> cuèi>? - Hái: Trong bµi to¸n trªn lÖnh for nµo - Sö dông d¹ng tiÕn lµ phï hîp lµ phï hîp? IV Cñng cè: HiÓu ®îc ý nghÜa cña cÊu tróc lÆp Hiểu cú pháp và hoạt động câu lệnh for-do dạng GV: §ç ThÞ Thu HiÒn Lop11.com (6)