I. Mục tiêu:
1. Kiến thức:
- Biết được ý nghĩa của cấu trúc lặp
- Biết được cấu trúc chung của lệnh lặp For trong ngôn ngữ lập trình Pascal.
- Biết sử dụng đúng 2 dạng lệnh lặp for trong ngôn ngữ lập trình Pascal.
2. Kỹ năng:
- Bước đầu sử dụng được lệnh lặp for để lập trình giải quyết một số bài toán đơn giản.
Giáo án lý thuyết Cấu trúc lặp (Tiết 1) Mục tiêu: Kiến thức: Biết được ý nghĩa của cấu trúc lặp Biết được cấu trúc chung của lệnh lặp For trong ngôn ngữ lập trình Pascal. Biết sử dụng đúng 2 dạng lệnh lặp for trong ngôn ngữ lập trình Pascal. Kỹ năng: Bước đầu sử dụng được lệnh lặp for để lập trình giải quyết một số bài toán đơn giản. Đồ dùng dạy học: Chuẩn bị của giáo viên: Bảng phụ: Sơ đồ khối 2 thuật toán Tong_1a và Tong_1b Nội dung: ổn định tổ chức lớp: Kiểm tra sĩ số: Tổng số: Vắng: Có phép: Không phép: Kiểm tra bài cũ: Câu 1: (7đ) Trình bày cú pháp của câu lệnh If then ở hai dạng thiếu và đủ. Hãy cho biết sự giống và khác nhau giữa hai câu lệnh trên? Câu 2: (2đ) Viết câu lệnh thực hiện việc tìm số lớn nhất của 2 số a và b? TL: Câu 1: - Cú pháp câu lệnh If then + Dạng thiếu: If then ; + Dạng đủ: If then else ; Sự giống và khác nhau giữa hai câu lệnh trên: + Giống: Cùng là câu lệnh cấu trúc rẽ nhánh, khi gặp một điều kiện nào đó thì chọn thực hiện thao tác thích hợp. + Khác: Trong câu lệnh If then dạng thiếu, nếu điều kiện không đúng thì thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo của chương trình còn trong câu lệnh If then dạng đủ, nếu điều kiện không đúng thì thực hiện câu lệnh 2 sau đó mới thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo của chương trình. Câu 2: If a > b then max := a else max := b; Hoặc: max := a; If b > a then max := b; Bài mới: Đặt vấn đề: Để in ra màn hình 10 dòng chữ “Thi đua dạy tốt, học tốt” ta dùng câu lệnh nào và phải dùng bao nhiêu lệnh? (TL: Câu lệnh Write(‘Thi dua day tot, hoc tot’); và phải đánh 10 lần câu lệnh trên). Vậy để in ra 1000 dòng chữ như thế ta phải thực hiện như thế nào? Có cách nào để giảm bớt độ phức tạp và đỡ tốn thời gian hơn cách ta đánh 1000 câu lệnh Write như trên không? Chúng ta vào bài hôm nay: Bài 10: Cấu trúc lặp Nội dung Hoạt động của thầy và trò T 1. Lặp: Với a là số nguyên dương và a>=2, - Bài toán 1: Tính và đưa ra màn hình tổng: S = GV: Đưa ra bài toán tính tổng 1, hãy xác định công thức để tính tổng? HS: Rất khó xác định được công thức GV gợi ý phương pháp: Ta xem S như một cái thùng, các số hạng như những cái ca có dung tích khác nhau. Khi đó việc tính tổng trên tương tự như việc đổ các ca nước vào thùng S. Vậy có bao nhiêu lần đổ nước vào thùng? Mỗi lần đổ 1 lượng là bao nhiêu? (Lần thứ i đổ một lượng là bao nhiêu?) HS: Phải thực hiện 100 lần đổ nước vào thùng. Mỗi lần đổ một lượng bằng GV: Như vậy phải viết bao nhiêu lệnh? HS: Phải viết 100 lệnh. - Bài toán 2: Tính và đưa ra màn hình tổng: S = cho đến khi < 0,0001. GV: Gợi ý tương tự như bài toán 1. Như vậy ở bài toán 2 có bao nhiêu lần đổ nước vào thùng? HS: Thực hiện N lần đổ nước vào thùng. GV: Đổ đến khi nào thì dừng? HS: Cho đến khi <0,0001. Lặp là điều khiển thực hiện công việc lặp đi lặp lại khi chưa đủ số lần lặp hoặc khi một điều kiện nào đó còn đúng (còn thoả mãn) -> Cấu trúc lặp để mô tả các thao tác lặp được phân biệt 2 loại là: lặp với số lần biết trước (bài toán 1, cụ thể lặp 100 lần) và lặp với số lần chưa biết trước (bài toán 2, cụ thể cho đến khi <0,0001). GV: Qua 2 bài toán trên, em hiểu thế nào là lặp? HS: Trả lời câu hỏi 2. Lặp với số lần biết trước và câu lệnh For do Thuật toán Tong_1a: B1: S 1/a; N 0; GV: Yêu cầu học sinh theo dõi 2 thuật toán Tong_1a và Tong_1b (SGK – Tr43) để giải bài toán 1. Giáo viên treo bảng phụ và giải thích thuật toán: B2: N N + 1; B3: Nếu N > 100 thì chuyển đến b5; 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; Thuật toán Tong_1b: B1: S 1/a; N 101; B2: N N - 1; B3: Nếu N < 1 thì chuyển đến b5; 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; + Tong_1a: Giá trị N khi bắt đầu tham gia vòng lặp là 1 và mỗi lần lặp N tăng lên 1 giá trị cho đến khi N>100 thì kết thúc. + Tong_1b: Giá trị N khi bắt đầu tham gia vòng lặp là 100 và sau mỗi lần lặp N giảm đi 1 giá trị cho đến khi N<1 thì kết thúc lặp. GV: Những bước nào được lặp lại trong 2 thuật toán trên? Trong mỗi thuật toán N nhận giá trị là bao nhiêu? Quá trình lặp đến khi nào thì dừng? HS: 2 thuật toán đều lặp lại b2, 3, 4 + Thuật toán Tong_1a: Ban đầu N = 0, kết thúc vòng lặp N = 101, dừng khi thực hiện đủ 100 lần lặp. + Thuật toán Tong_1a: Ban đầu N = 101, kết thúc vòng lặp N = 0, dừng khi thực hiện đủ 100 lần lặp. GV: 2 thuật toán trên có số lần lặp là như nhau và thực hiện 100 lần. GV: Lặp với số lần biết trước: Dùng để thực hiện câu lệnh 1 số lần xác định. Dạng này dùng một biến điều khiển để điều khiển vòng lặp. Trong Pascal, mỗi lần thực hiện câu lệnh thì biến điều khiển (giả sử là i) được tăng (giảm) tự động, đến khi biến điều khiển đạt giá trị xác định thì vòng lặp kết thúc. a. Cú pháp câu lệnh: Dạng tiến: For := to do ; Dạng lùi: For := downto do ; GV: Trong Pascal, lặp với số lần biết trước được thể hiện qua câu lệnh For do và có 2 dạng tiến và lùi. Đưa ra cú pháp câu lệnh. Trong đó: là biến đơn, thường có kiểu nguyên. For, to, downto, do: là các từ khoá Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm và giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối Câu lệnh: là 1 câu lệnh của Pascal (có thể là đơn hoặc ghép). GV: Bài toán được nêu ở phần đặt vấn đề được giải quyết như sau: Thay vì viết 1000 lần câu lệnh Write (‘Thi dua day tot, hoc tot’); giờ ta chỉ cần viết 1 câu lệnh For có thể in ra 1000 dòng chữ trên và có thể hơn thế nữa. Câu lệnh như sau: + Dạng tiến: For i:=1 to 1000 do Write (‘Thi dua day tot, hoc tot’); + Dạng lùi: For i:=1000 downto 1 do Write (‘Thi dua day tot, hoc tot’); GV: ý nghĩa của , và kiểu dữ liệu của chúng? HS: Dùng làm giới hạn cho biến đếm, cùng kiểu với biến đếm. b. Hoạt động: Dạng lặp tiến: Câu lệnh viết sau từ GV: Chú ý: Giá trị của biến đếm được điều chỉnh tự động vì vậy câu lệnh viết khoá ‘Do’ được thực hiện tuần tự với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ đến . Dạng lặp lùi: Câu lệnh viết sau từ khoá ‘Do’ được thực hiện tuần tự với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ đến . sau ‘Do’ không được thay đổi biến đếm. vì như thế sẽ gây ra tình trạng khó theo dõi và quản lý vòng lặp For do. GV: Em có nhận xét gì về và ? Nếu giá trị đầu > giá trị cuối thì vòng lặp có được thực hiện không? HS: ; Nếu giá trị đầu > giá trị cuối thì vòng lặp không được thực hiện. c. Ví dụ 1: Chương trình cài đặt các thuật toán Tong_1a và Tong_1b Tính và đưa ra màn hình tổng: S = GV: Xác định giá trị đầu, giá trị cuối và lệnh cần lặp? HS: Giá trị đầu là 1, giá trị cuối là 100, lệnh cần lặp là: S := S + ; GV: Nhìn vào thuật toán Tong_1a hãy viết đoạn câu lệnh thực hiện việc tính tổng S trên? HS: S := 1/a; For N := 1 to 100 do S := S + 1/(a+N); GV: Yêu cầu học sinh tiếp tục hoàn chỉnh và chạy thử chương trình ở nhà. 4. Củng cố: Những nội dung đã học: + Cấu trúc chung của lệnh lặp For + Sơ đồ thực hiện của lệnh lặp for Câu hỏi và bài tập về nhà: + Xem ví dụ 2 Sgk – Tr44, 45 + Giải bài tập 5a, 6 – Sgk – Tr51. + Viết chương trình nhập vào 1 số nguyên dương n rồi tính: S1 = 1 + 3 + 5 + + (2*n + 1) S2 = 13 + 23 + 33 + + n3 Nhận xét của giáo viên hướng dẫn
Tài liệu đính kèm: