If…then dạng đủ, nếu điều kiện không đúng thì thực hiện lệnh thứ hai, sau đó mới thoát khỏi tổ chức rẽ nh¸nh vµ thùc hiÖn c©u lÖnh tiÕp theo của chương trình.. - NhËn xÐt bµi lµm cña häc[r]
(1)BµI TËP Vµ THùC HµNH Ngµy so¹n: ………… Ngµy gi¶ng: ……… Người soạn: ……… I Mục đích – yêu cầu KiÕn thøc - Cñng cè thªm vÒ cÊu tróc rÏ nh¸nh vµ lÆp - LuyÖn tËp cÊu tróc lÆp, chó ý víi bµi to¸n t×m tæng cña d·y sè Kü n¨ng Sau đã chuẩn bị bài tập nhà, học sinh cần: - Nắm đựơc cấu trúc câu lệnh rẽ nhánh, và lặp, biết cách thức hoạt động cấu trúc - Biết số thao tác hiệu chỉnh chương trình, và số chú ý các vßng lÆp v« h¹n - Biết cách viết chương trình hoàn chỉnh và khoa học, cách kiểm tra chương trình cụ thể thông qua test thử III ChuÈn bÞ cña Gi¸o viªn vµ Häc sinh II Hoạt động dạy và học ổn định lớp - KiÓm tra sÜ sè: Tæng sè: V¾ng: Cã phÐp: Kh«ng phÐp: TriÓn khai bµi míi Hoạt động giáo viên I Tãm t¾t lÝ thuyÕt Hoạt động học sinh - L¾ng nghe vµ ghi bµi C©u lÖnh rÏ nh¸nh Lop11.com (2) a D¹ng thiÕu: If <®iÒu kiÖn > Then <c©u lÖnh>; b Dạng đủ: If < ®iÒu kiÖn 1> Then <c©u lÖnh1> Else <c©u lÖnh 2>; CÊu tróc lÆp a Lặp với số lần chưa biết trước While <®iÒu kiÖn> Do <c©u lÖnh>; b Lặp với số lần biết trước 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 <gi¸ trÞ ®Çu> Do <c©u lÖnh>; Ch÷a bµi tËp: Bµi 1(Sgk_Tr50): Gäi mét häc sinh §Ò bµi: H·y cho biÕt sù gièng vµ kh¸c đọc đầu bài và trả lời câu hỏi đó? cña hai d¹ng c©u lÖnh If…then - Gièng nhau: cïng lµ tæ chøc rÏ nhánh, gặp điều kiện nào đó th× lùa chän thùc hiÖn thao t¸c thÝch hîp - Kh¸c nhau: c©u lÖnh If…then d¹ng thiÕu, nÕu ®iÒu kiÖn kh«ng đúng thì thoát khỏi tổ chức rẽ nhánh, vµ thùc hiÖn c©u lÖnh tiÕp theo cña chương trình; còn câu lệnh Lop11.com (3) If…then dạng đủ, điều kiện không đúng thì thực lệnh thứ hai, sau đó thoát khỏi tổ chức rẽ nh¸nh vµ thùc hiÖn c©u lÖnh tiÕp theo chương trình - NhËn xÐt bµi lµm cña häc sinh sau đó thấy có ít học sinh làm đúng thì củng cố lại; Bµi 2(Sgk_Tr50): Gäi mét häc sinh TL: C©u lÖnh ghÐp lµ mét c©u lÖnh ®îc h×nh thµnh tõ nhiÒu c©u lÖnh đọc đầu bài và trả lời câu hỏi đó? §Ò bµi: C©u lÖnh ghÐp lµ g×? T¹i thµnh phÇn C©u lÖnh ghÐp nh»m thùc hiÖn thao t¸c gåm nhiÒu thao t¸c ph¶i cã c©u lÖnh ghÐp? - LÊy mét vÝ dô cô thÓ vÒ viÖc dïng thµnh phÇn Mçi thao t¸c thµnh phÇn c©u lÖnh ghÐp cho häc sinh h×nh øng víi mét c©u lÖnh thµnh phÇn hoÆc c©u lÖnh ghÐp kh¸c VÒ mÆt dung ®îc trùc quan h¬n: VD: Chương trình tính nghiệm ngôn ngữ lập trình, câu lệnh ghép là các yếu tố để tạo khả phương trình bậc chương trình có cấu trúc Bµi 3(Sgk_Tr51): Cã thÓ dïng c©u lệnh While…do để thay cho câu lệnh for…do ®îc kh«ng? NÕu ®îc, h·y thực điều đó với chương trình Tong_1a - Với thuật toán Tong_1a câu lệnh - Thể bước và for…do thể bước nào và - Câu lệnh: câu lệnh đó nào? For N:=1 to 100 S :=S +1.0/(a+N); - Câu lệnh trên thể vòng lặp với - Có thể thay đoạn chương trình Lop11.com (4) số lần biết trước, cụ thể là 100 lần chứa câu lệnh for…do (dạng tiến) (câu lệnh for…do dạng tiến) Vậy ta đoạn chương trình chứa câu lệnh có thể dùng câu lệnh While…do thay While…do Đoạn chương trình sau cho ®o¹n c©u lÖnh For…do trªn ®îc i := 1; không? Đoạn chương trình sau While i<100 Begin thay thÕ nh thÕ nµo? S :=S +1.0/(a+N); i := i + 1; end; Bài 4(Sgk_Tr51): Viết câu lệnh rẽ a) Câu lệnh rẽ nhánh dạng đủ: nh¸nh tÝnh: if (sqr(x)+sqr(y))<=1 then z:=sqr(x)+sqr(y) x y neu x y a) z x y neu x y va y x 0.5 neu x y va y x else if y>=x then z:=x+y else z:=0.5; b) Câu lệnh rẽ nhánh dạng đủ: | x | | y | x y b) z if (sqr(x-a)+sqr(y-b))<=sqr(r) then - Sö dông c©u lÖnh rÏ nh¸nh d¹ng nµo? z:=abs(x) + abs(y) else z:= x+y; - Thể câu lệnh đó? - Sö dông c©u lÖnh rÏ nh¸nh d¹ng thiÕu: - Gäi häc sinh lªn b¶ng thÓ hiÖn a) If (sqr(x)+sqr(y)) <=1 then câu lệnh tương ứng với phần a) và b) z:=sqr(x)+Sqr(y); If (sqr(x)+sqr(y)>1) and (y>=x) then z:= x+y; If (sqr(x)+sqr(y)>1) and (y<x) then z:=0.5; b) if (sqr(x-a)+sqr(y-b))<=sqr(r) then z:=abs(x) + abs(y); Lop11.com (5) if (sqr(x-a)+sqr(y-b))>sqr(r) then z:= x+y; - Nhận xét bài hai em Để từ đó đựơc lỗi hay mắc phải cña HS Lu ý: Lçi mµ HS hay m¾c ph¶i lµ: thiÕu ngoÆc ë tõng vÕ cña phÐp toán đặt câu lệnh If…then - Gọi em HS nhận xét để nhằm nªu bËt ®îc tiÖn lîi dïng lÖnh dạng đủ và lệnh dạng thiếu với bài nµy vµ mét sè bµi kh¸c Bµi 5(Sgk_Tr51): LËp tr×nh tÝnh: 50 n n 1 n a) Y 1! b) e(n) 1 2! n! < x 10-6 n! §a gi¸ trÞ e(n) mµn h×nh Gîi ý: 50 n 50 51 n 1 n a) Y - Xác định câu lệnh đây là câu lệnh - Câu lệnh lặp biết trước số lần lặp gì? Số lần thực câu lệnh đó? - LÆp víi sè lÇn n=50 - Viết câu lệnh đó - C©u lÖnh: For n:=1 to 50 Y:=Y+n/(n+1); - Gọi học sinh lên bảng viết chương Program Bai5_a; Lop11.com (6) tr×nh hoµn chØnh Var Y: real; n: byte; Begin Y:=0; For n:=1 to 50 Y:=Y+n/(n+1); Writeln(‘Ket qua:’,Y:14:6); Readln End b) §iÒu kiÖn dõng cñ bµi to¸n < - Câu lệnh lặp chưa biết trước số lần n! - Sử dụng thêm biến s để lưu trữ giá x 10-6 hay <2*1E-6 n! trÞ - Xác định câu lệnh đây là câu lệnh gì? Số lần thực câu lệnh đó? - Viết câu lệnh đó n! - C©u lÖnh: While s>=2*1E-6 Begin n:=n+1; s:=s*(1/n); e:=e+s; end; - Gọi học sinh lên bảng viết chương Program Bai5_b; tr×nh Var n : longint; e, s : real; Begin s := 1/2; n := 2; e := + s; While s>=2*1E-6 Begin Lop11.com (7) n:=n+1; s:=s*(1/n); e:=e+s; end; Writeln(‘Gia tri e(n) la:’,e:10:6); Readln End - Nhận xét và hoàn thiện chương tr×nh cña häc sinh Bµi 6(Sgk_Tr51): LËp tr×nh gi¶i bµi to¸n cæ: Võa gµ võa chã Bã l¹i cho trßn Ba mươi sáu Mét tr¨m ch©n ch½n Hái cã bao nhiªu mçi lo¹i? - Xác định Input, Output bài toán - Input: tổng số gà, chó; tổng số chân - Output: sè gµ, sè chã - V× gµ + chã = 36 nªn biÕt sè gµ sÏ suy ®îc sè chã - Gäi sè gµ lµ x -> sè chã sÏ lµ 36–x, sè ch©n lµ: 2x+4(36-x) - Ta cÇn t×m nh÷ng gi¸ trÞ x tho¶ m·n 2x+4(36-x)=100 - VËy x cã thÓ nhËn nh÷ng gi¸ trÞ - TL: x cã thÓ nhËn c¸c gi¸ trÞ tõ nào? Để thử điều kiện bài toán có đến 35, hữu hạn nên ta có thể sử thể sử dụng câu lệnh nào để biểu dụng cấu trúc lặp xác định trước số Lop11.com (8) diÔn ®îc? lần để thử trường hợp x - C©u lÖnh: For x:=1 to 35 If 2*x+4*(36-x)=100 then Writeln(‘So ga:’,x,’So cho:’,36-x); - Gọi học sinh lên bảng viết chương Program Bai6; tr×nh hoµn chØnh Var x:byte; Begin For x:=1 to 35 If 2*x+4*(36-x)=100 then Writeln(‘So ga:’,x,’So cho:’,36-x); Readln End - Trường hợp ngược lại ta đặt số - Trường hợp ta đặt số chó là x chã lµ x, vËy cã t×m ®îc kÕt qu¶ th× sè gµ sÏ lµ 36-x Hoµn toµn thu kh«ng? Vßng lÆp ë ®©y thùc hiÖn bao ®îc kÕt qu¶ nh trªn V× chã cã nhiªu lÇn? ch©n nªn x cã thÓ nhËn c¸c gi¸ trÞ tõ đến 24 Vòng lặp giảm 10 lần - VËy sö dông c¸ch nµo tèi u? - Nên sử dụng cách đặt số chó là x tèi u v× gi¶m ®îc sè lÇn lÆp, tiÕt kiÖm thêi gian vµ bé nhí IV Cñng cè vµ dÆn dß Häc sinh - Gi¸o viªn nhËn xÐt kh©u chuÈn bÞ bµi vµ häc bµi cña c¸c em vµ nhÊn m¹nh nh÷ng ®iÓm mµ c¸c em hay m -Về nhà các em làm lại cho hoàn chỉnh các chương trình đã chữa và chuÈn bÞ c¸c bµi sau: bµi 7, trang 51 Lop11.com (9)