Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 1 Cấu Trúc Lặp (tiết 2) I. MỤC ĐÍCH, YÊU CẦU: Sau kết thúc bài: - Hiểu được nhu cầu của cấu trúc lặp trong biểu diễn thuật toán; - Hiểu được cấu trúc lặp với số lần cho 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 cấu trúc lặp trước vào tình huống cụ thể; - 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 với số lần lặp cho trước; - Viết đúng các lệnh lặp với số lần biết trước; - Viết được thuật toán của bài toán đơn giản sử dụng cấu trúc lặp trên. II. PHƯƠNG PHÁP, PHƯƠNG TIỆN: 1. Phương pháp: - Kết hợp kiến thức trong sgk và các kiến thức trong các sách tham khảo và các tư liệu khác (nếu có). Nếu nhà trường có máy chiếu, có thể chuẩn bị các slide để trình chiếu hoặc chạy thử đoạn chương trình để cả lớp cùng theo dõi. -Hình thức giảng dậy: thuyết trình, vấn đáp, phân tích và giải thích (nếu cần) 2. Phương tiện: - Sách giáo khoa tin học lớp 11; - Vở ghi lý thuyết và bài tập lớp 11; - Giáo án - Sách tham khảo và các trang thiết bị tin học như máy tính, máy chiếu (nếu có). III. Tiến trình lên lớp 1. ổn định lớp: (1 phút) Yêu cầu lớp trưởng ổn định lớp và báo cáo sĩ số. 2. Kiểm tra bài cũ: (3 phút) Câu hỏi: Tại sao lại sử dụng cấu trúc lặp ? Có mấy dạng cấu trúc lặp và nêu trường hợp áp dụng cho mỗi dạng ? 3. Gợi động cơ: (2 phút) Cấu trúc lặp trước có ý nghĩa rất quan trọng trong lập trình trong ngôn ngữ lập trình pascal cũng vậy. Muốn cho việc viết chương trình thực thi được dễ dàng thì ta phải xây dựng thuật toán. Tiết trước chúng ta đã xem xét hai thuật toán của hai dạng lặp với số lần biết trước, tiết này chúng ta dựa trên hai thuật toán đó để xây dựng chương trình sử dụng cú pháp lặp với số lần cho trước. Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 2 4. Nội dung bài giảng: Số thứ tự Nội dung Hoạt động của thầy và trò Thời gian 1 Chương trình xây dựng dựa trên thuật toán tong_1a: Program tong_1a; Uses crt; Var s: real; N, a: integer; Begin Clrscr; Write (‘ nhap vao gia tri cua a’); Readln(a); S:=1.0/a; {bước1 } For N:= 1 to 100 do S:= S + 1/(a+N); { bước 2, 3, 4 } Write (‘ tong s la:’, s:8:4); { bước 5 } Readln End. Yêu cầu học sinh: Đọc và tìm hiểu thuật toán trong thời gian giáo viên viết thuật toán lên bảng. Thuyết trình: Phân tích và giải thích các lệnh trong chương trình: Chương trình này xây dựng dựa trên thuật toán tong_1a (dạng lặp tiến của cấu trúc lặp) với số lần biết trước trong đó biến điều khiển là N, N cho biết số lần lặp. Khi 1<= N <=100 thì thực hiện lặp, sau lần lặp thứ 100 thì kết thúc lặp. Bước 1 của thuật toán: S := 1.0/a; For N:= 1 to 100 do S:= S + 1/(a+N); Câu lệnh lặp này đã bao gồm cả ba bước 2, 3, 4 của thuật toán. Đầu tiên N nhận giá trị là 1, sau đó thực hiện lệnh trong vòng for, cộng vào tổng s một số hạng 1/(a+N). Sau khi tính toán hoàn tất thì biến đếm được tự động tăng lên giá trị tiếp theo và mỗi lần tăng giá trị biến đếm là một lần thực hiện lệnh trong vòng lặp. Còn với s, ban đầu được gán giá trị là 1.0/a. Khi vào vòng lặp for thì lần lượt được cộng thêm vào các số hạng 12 phút Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 3 Chương trình này được viết trong Pascal như sau: Màn hình kết quả như sau: dạng 1/(a+N) (N=1, 2, 3 100) và nó sẽ giữ giá trị thay đổi khi ra khỏi vòng for. Write (‘ tong s la:’, s:8:4); Đây là bước thứ 5 của thuật toán, ta đưa ra màn hình giá trị của s và sau đó kết thúc chương trình với từ end. Chương trình xây dựng dựa trên thuật toán tong_1b Program tong_1b; Uses crt; Var s: real; N, a: integer; Begin Clrscr; Write( ‘ dua vao gia tri a’); Readln(a); S:= 1.0/a; { bước 1} For N:= 100 downto 1 do {bước 2 và bước 3} Yêu cầu: Giới thiệu chương trình của thuật toán tong_1b bằng cách gợi ý so sánh với chương trình của thuật toán tong_1a. Với học sinh: Yêu cầu lên viết chương trình của thuật toán tong_1b và giải thích một số câu lệnh theo ý hiểu. Thuyết trình: Chương trình này chỉ khác chương trình trên ở trình tự 8 Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 4 S:= S + 1/(a + N); {bước 4} Write(‘ tong la:’, s: 8:4); {bước 5} Readln End. thực hiện vòng lặp. Ở trên thì biến điều khiển được tự động tăng, còn ở dưới thì biến điều khiển được tự động giảm từ 100 xuống 1 và cũng tương tự như trên thì mỗi lần biến điều khiển giảm thì là một lần câu lệnh trong vòng for được thực hiện. và nó kết thúc khi biến đếm I nhận giá trị bằng 1 2 Ví dụ khác: Viết chương trình thực hiện nhập từ bàn phím hai số nguyên dương M và N (M < N), tính và đưa ra màn hình tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ M đến N. Chương trình : Program vi_du_2; Uses crt; Var M, N, I: integer; T: longint; Begin Clrscr; Writeln (‘nhap vao so M nho hon so N’); { Bước 1} Write (‘M = ‘); Readln (M); Write (‘N = ‘); Readln (N); T := 0; {Bước 2} For I := M to N do {Bước 3, Bước 4} If (I mod 3 = 0) or (I mod 5 = 0) then T := T + I; {Bước 5} Writeln (‘ket qua: ‘, T) {Bước 6} Readln End. Yêu cầu học sinh: Viết thuật toán cho ví dụ này. Thuật toán như sau: Bước 1: nhập M và N (M < N) Bước 2: T 0 ; I M-1; Bước 3: I I+1; Bước 4: nếu I > N thì chuyển đến bước 6; Bước 5: nếu I mod 3= 0 hoặc I mod 5= 0 thì T= T + I; quay lại bước 3; Bước 6: đưa ra màn hình T, rồi kết thúc. Thuyết trình: Ở ví dụ này số lần lặp cũng là biết trước.Giá trị đầu tiên mà biến đếm (biến điều khiển) nhận là M, sau đó tự động tăng cho đến khi nhận giá trị N thì kết thúc. Bước 1 của thuật toán: T := 0; Gán giá trị ban đầu của T là 0 For I := 1 to 100 do S:= S + I; Câu lệnh lặp này đã bao gồm cả ba bước 3, 4,5 của thuật toán. Đầu tiên I nhận giá trị là M, sau đó thực hiện lệnh trong vòng for, cộng vào tổng 10 Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 5 s giá trị I thoả mãn điều kiện chia hết cho 3 hoặc chia hết cho 5. Sau khi tính toán hoàn tất thì biến đếm được tự động tăng lên giá trị tiếp theo và mỗi lần tăng giá trị biến đếm là một lần thực hiện lệnh trong vòng lặp. Còn với s, ban đầu được gán giá trị là 0. Khi vào vòng lặp for thì lần lượt được cộng thêm vào các số hạng dạng I ( thoả điều kiện) (I= M, , N) và nó sẽ giữ giá trị thay đổi khi ra khỏi vòng for. Write (‘ tong s la:’, T); Đây là bước thứ 6 của thuật toán, ta đưa ra màn hình giá trị của s và sau đó kết thúc chương trình với từ end. Có một điểm khác giữa chương trình này với hai chương trình trên là kiểm tra điều kiện của I thoả chia hết cho 3 hoặc chia hết cho 5 thì mới tính tổng của T. IV. Củng cố bài học (4 phút) Giáo viên củng cố kiến thức của bài học: - Nhấn mạnh ý nghĩa của cấu trúc lặp với số lần lặp biết trước. - Nhắc lại hai chương trình được xây dựng trong tiết học. So sánh sự giống và khác nhau giữa hai thuật toán để học sinh dễ dàng nắm được bài. Nhận thấy sự khác nhau căn bản nhất giữa hai chương trình tính tổng là ở chương trình thứ nhất biến đếm sẽ được tăng giá trị từ 1 đến 100, còn ở chương trình thứ hai thì biến đếm sẽ giảm từ 100 xuống 1. Tuy có sự khác nhau về biến nhưng số lần lặp đều là 100 cho nên cho ra chung một kết quả s. Như vậy hai chương trình này bản chất là như nhau chỉ khác cách thức tính s. V. Bài tập về nhà (3 phút) - Xem lại các ví dụ trên lớp - Các bài tập trong sách bài tập Làm bài tập sau: Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 6 Viết chương trình giải bài toán 100 trâu 100 cỏ, 1 trâu đứng ăn 5 bó, trâu nằm ăn 3 bó. Hỏi mỗi loại có mấy con ? VI. Nhận xét của giáo viên về tiết học (2 phút) - Ý thức học tập của lớp - Hiệu quả học tập - Rút kinh nghiệm sau tiết học . Giáo án Tin Học 11 Phương Thị Chang – CNTT - ĐHSPHN 1 Cấu Trúc Lặp (tiết 2) I. MỤC ĐÍCH, YÊU CẦU: Sau kết thúc bài: - Hiểu được nhu cầu của cấu trúc lặp trong biểu diễn thuật toán;. cấu trúc lặp với số lần cho 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 cấu trúc lặp trước vào tình huống cụ thể; - Mô tả được thuật toán của một số bài toán. bài học (4 phút) Giáo viên củng cố kiến thức của bài học: - Nhấn mạnh ý nghĩa của cấu trúc lặp với số lần lặp biết trước. - Nhắc lại hai chương trình được xây dựng trong tiết học. So sánh