Bài 8: Lặp với số lần chưa biết trước

1. Kiến thức:

- Học sinh biết được hoạt động nào là hoạt động lặp với số lần chưa biết trước.

- Biết được nhu cầu cần có cấu trúc lặp với số lần lặp chưa biết trước trong ngôn ngữ lặp trình.

- Biết được cấu trúc của câu lệnh lặp với số lần chưa biết trước.

2. Kỹ năng:

- Biết cách vận dụng cấu trúc lặp với số lần lặp chưa biết trước vào các bài tập lập trình.

3. Thái độ:

- Học sinh nghiêm túc trong giờ học.

 

doc6 trang | Chia sẻ: lantls | Lượt xem: 7810 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Bài 8: Lặp với số lần chưa biết trước, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
để tính được tổng của các số tự nhiên nhỏ hơn hoặc bằng N ta phải lần lượt xét giá trị của I từ 1 đến N, công việc này được lặp đi lặp lại đến khi nào i=N thì dừng, điều này cho thấy công việc lặp đã được xác định trước số lần lặp là N. Vậy trong trường hợp cô đổi đề bài của chúng ta lại như sau: tính tổng S của các số tự nhiên đầu tiên sao cho S là số nhỏ nhất lớn hơn 1000. Bài toán này chúng ta có thể dùng câu lệnh for..do để giải quyết được không? Đối với bài toán này chúng ta không biết trước được là mình sẽ thực hiện cộng tới số tự nhiên nào và cộng bao nhiêu lần thì được tổng S nhỏ nhất lớn hơn 1000. Bài toán này ta không biết trước số lần lặp, vậy, ta phải lập trình như thế nào để giải quyết bài toán của mình? để giải quyết vấn đề này hôm nay cô sẽ cùng các em tìm hiểu bài “Lặp với số lần chưa biết trước” HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG KIẾN THỨC Hoạt động 1:Các hoạt động lặp với số lần chưa biết trước. GV:- Để biết được hoạt động nào là hoạt động lặp với số lần lặp chưa biết trước chúng ta sẽ cùng tìm hiểu phần 1. - Mời 1 bạn đọc giùm cô vd1 trong sgk. HS: đọc ví dụ. GV: Phân tích ví dụ: Trong ví dụ này các em thấy có 2 tình huống xảy ra: + Trường hợp 1: ? Bạn Long dự định gọi cho Trang bao nhiêu lần? HS: 2 lần. GV: Số lần bạn Long sẽ thực hiện cuộc gọi là bao nhiêu? HS: 2 lần. GV: Như vậy trong tình huống này, bạn Long đã biết trước số lần mình sẽ phải thực hiện cuộc gọi là 2 lần. Nhưng trong trường hợp 2 bạn Long quyết định sẽ gọi đến khi nào có người bắt máy mới thôi. Bạn Long biết được mình sẽ phải gọi bao nhiêu lần mới có người bắt máy chưa? HS: Chưa biết trước được. GV: trong quá trình gọi cho Trang Long phải thực hiện lặp lại động tác gì? HS: Nhấc máy, quay số, gọi cho Trang. GV: Khi nào bạn Long ngừng gọi cho Trang? HS: Khi có người bắt máy. GV: Cô vừa phân tích cho cả lớp 1 ví dụ về việc lặp với số lần chưa biết trước, trong cuộc sống hằng ngày chúng ta có rất nhiều việc lặp lại mà chúng ta không biết trước sẽ lặp lại bao nhiêu lần. Các em hãy tìm cho cô một vài ví dụ khác? HS: cho ví dụ. GV: Cô có ví dụ như sau: Ví dụ 1b: Khi gõ xong văn bản bạn có thói quen kiểm tra và sửa lại cho đúng những từ bị gõ sai. ? Em hãy cho biết đây có phải là hoạt động lặp với số lần chưa biết trước hay không? Nếu đúng thì công việc nào được lặp đi lặp lại với số lần lặp không biết trước, điều kiện kết thúc việc lặp đó là gì? HS: Trả lời. Đây là hoạt động lặp với số lần lặp chưa biết trước. ! Công việc lặp với số lần lặp không biết trước: tìm từ đánh sai, sửa cho đúng; không biết trước số lần lặp vì không xác định được số từ bị sai trong văn bản. Điều kiện kết thúc việc lặp là: Tất cả các từ bị gõ sai đều được sửa. GV: Chúng ta đã xác định được một số hoạt động trong thực tế hằng ngày hoạt động nào là hoạt động lặp không biết được số lần lặp, vậy trong Pascal thì những bài toán nào được xem là bài toán lặp không biết trước số lần lặp? Chúng ta sẽ cùng nhau quay lại ví dụ ban đầu cô đã nêu ra. Phân tích ví dụ: Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1,2,3,…), ta sẽ được các kết quả S0=0, S1=1, S2=1+2, S3=1+2+3, …tăng dần. Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Sn nhỏ nhất lớn hơn 1000? Các em có xác định được không? HS: không xác định được. ? Đây là trường hợp lặp với số lần lặp không xác định. Một em hãy xác định công việc lặp với số lần lặp không xác định, điều kiện kết thúc việc lặp? HS: Trả lời. ! Công việc lặp với số lần lặp không xác định: S0=0, S1=1, S2=1+2, S3=1+2+3,.. Điều kiện kết thúc: tìm được Sn nhỏ nhất > 1000. GV: Để giải quyết bài toán này đầu tiên chúng ta sẽ tìm hiểu và xây dựng thuật toán của nó. Phân tích xây dựng thuật toán: ? Trong bài toán này ta cần sử dụng mấy biến? Sử dụng các biến đó để làm gì? HS: Hai biến: biến S dùng để tính tổng và biến n là các số tự nhiên đầu tiên. GV: Đầu tiên khi chương trình chưa thực hiện ta có giá trị của S, n là bao nhiêu? HS: S ß 0; nß0 GV: Ban đầu ta đã xác định được điều kiện kết thúc việc lặp, vậy ngược lại điều kiện để việc lặp này được thực hiện là gì? HS: Sn<=1000. GV: Nếu Sn<=1000 thì công việc lặp nào được thực hiện? HS: Tính tổng S. S:=S+n. GV: Ban đầu chúng ta gán S có giá trị là 0 <1000 nên công việc tính tổng S được thực hiện, muốn tính tổng S mới trước tiên ta phải tăng giá trị n lên 1 đơn vị. Câu lệnh cần phải sử dụng là gì? HS: n:=n+1; GV: Công việc tính tổng S được thực hiện đến khi nào thỏa mãn điều kiện ngừng việc lặp thì dừng lại. Công việc cuối cùng ta cần làm là gì để thể hiện kết quả của bài toán? HS: in kết quả ra màn hình. GV :Từ các bước cô đã hướng dẫn, 1 em hãy lên bảng ghi lại hoàn chỉnh thuật toán của bài toán này cho các bạn cùng ghi vào vở. HS : Bước 1: S ß 0, nß 0. Bước 2: Nếu S<= 1000, nß n+1, S ß S+n; ngược lại, chuyển tới bước 3. Bước 3: In kết quả. S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán. GV: Ta có sơ đồ khối sau để minh họa cho các bước làm của bài toán. Hoạt động 2: Hướng dẫn sử dụng cấu trúc câu lệnh lặp với số lần chưa biết trước. GV: Sơ đồ khối giải thích cho chúng ta biết các bước phải làm để giải quyết thuật tốn trên: ban đầu chúng ta kiểm tra điều kiện, nếu điều kiện sai ta bỏ qua câu lệnh và kết thúc vòng lặp, ngược lại nếu điều kiện đúng ta tiếp tục thực hiện câu lệnh và quay lên kiểm tra điều kiện. Nhằm giúp Pascal hiểu và thực hiện được điều này để giải quyết các bài tốn lặp với số lần lặp chưa biết trước chúng ta sẽ sử dụng câu lệnh While..do. GV: ?Em hãy nêu cấu trúc của câu lệnh lặp với số lần lặp chưa biết trước?. HS: Nghiên cứu SGK và trả lời GV: Trong cấu trúc này em cho biết các từ nào được gọi là từ khóa? HS: While..do GV: Cũng giống như vòng lặp for..do điều kiện của chúng ta ở đây là gì? HS: Những phép so sánh như: >, =, . GV: Sau từ khóa do là câu lệnh, có thể là câu lệnh đơn hoặc câu lệnh ghép, nếu là câu lệnh ghép chúng ta phải đặt những câu lệnh này vào từ khóa nào? HS: begin…end GV: Nhằm giúp các em biết cách sử dụng câu lệnh này cụ thể vào bài toán như thế nào chúng ta sẽ xây dựng chương trình của ví dụ 2 Xây dựng câu lệnh cụ thể từ thuật toán trong ví dụ 2. GV: Ban đầu cô sẽ gán giá trị của hai biến S và n là 0, chúng ta sẽ ghi câu lệnh này như thế nào? HS: S:=0; n:=0; GV: Cho 1 học sinh nhận xét. GV: Ta viết câu lệnh chính. Từ khóa của câu lệnh là While, tiếp theo là điều kiện, 1 em hãy lên viết cho cô điều kiện này. HS: While S <= 1000 do GV: Sau từ khóa do là câu lệnh ghép, 1 em hãy lên viết các câu lệnh thực hiện công việc lặp. HS: Begin S:= S+n; n := n+1; end; GV: Cuối cùng ta in ra kết quả tổng S nhỏ nhất lớn hơn 1000 và số n ra màn hình. 1 em hãy lên bảng thực hiện công việc này. HS: writeln(‘ Số n nhỏ nhất để tổng > 1000 là:’,n); writeln(‘Tổng đầu tiên > 1000 là:’,S); GV: Cô vừa trình bày những câu lệnh chính trong chương trình của vd2, để hoàn chỉnh chương trình chúng ta cần phải thêm những phần nào nữa? HS: khai báo biến và từ khóa bắt đầu begin. GV: nhận xét. Gọi HS lên bảng hoàn chỉnh chương trình. Các hoạt động lặp với số lần chưa biết trước Ví dụ 1: SGK/67 + Công việc lặp đi lặp lại của Long: nhấc máy, quay số, gọi cho Trang, Long không biết trước số lần Long sẽ phải gọi. à lặp với số lần không xác định. + Điều kiện ngưng việc lặp: có người bắt máy. Ví dụ 2: Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng S nhỏ nhất lớn hơn 1000? THUẬT TOÁN: Kí hiệu S là tổng cần tìm, ta có thuật toán sau: Bước 1: S ß 0, nß 0. Bước 2: Nếu S<= 1000 thì nß n+1; S ß S+n, ngược lại, chuyển tới bước 3. Bước 3: In kết quả. S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán. SƠ ĐỒ KHỐI: Cấu trúc câu lệnh lặp với số lần chưa biết trước: Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng: While do Trong đó: Điều kiện thường là một phép so sánh. Câu lệnh có thể là câu lệnh đơn hay câu lệnh ghép. Câu lệnh này được thực hiện như sau: Kiểm tra điều kiện. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1. VD: Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng S nhỏ nhất lớn hơn 1000? Var S, n: integer; Begin S:=0; n:=0; While S <= 1000 do Begin n := n+1; S:= S+n; end; writeln(‘ Số n nhỏ nhất để tổng > 1000 là:’,n); writeln(‘Tổng đầu tiên > 1000 là:’,S); readln; end. Củng Cố: 1. Em hãy nêu lại cấu trúc của câu lệnh lặp chưa biết trước số lần lặp và giải thích rõ từng phần trong câu lệnh. Hướng dẫn về nhà: - Về nhà học bài cũ, vận dụng câu lệnh lặp với số lần lặp chưa biết trước làm bài tập sau: Viết chương trình tính tổng T=1++++…+ - Xem trước các phần còn lại. Rút kinh nghiệm

File đính kèm:

  • docbài 8. Lap voi so lan chua biet truoc (tiet 1).doc