I. Mục tiêu.
- Biết ngôn ngữ lập trình dùng cấu trúc lặp để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó một số lần.
- 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 hoạt động của câu lệnh lặp với số lần lặp biết trước for do trong Pascal.
- Biết được câu lệnh ghép trong Pascal.
II. Chuẩn bị.
Tiết: Ngày dạy: CÂU LỆNH LẶP Mục tiêu. Biết ngôn ngữ lập trình dùng cấu trúc lặp để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó một số lần. 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 hoạt động của câu lệnh lặp với số lần lặp biết trước fordo trong Pascal. Biết được câu lệnh ghép trong Pascal. Chuẩn bị. Giáo viên: SGK, SGV, giáo án. Chuẩn bị ví dụ minh học về câu lệnh lặp. Học sinh. SGK, vở. Xem trước bài 7. Phương pháp: kết hợp phương pháp giảng dạy như thuyết trình, vấn đáp, sử dụng phương pháp trực quan, đặt và giải quyết vấn đề. Tiến trình tiết dạy. Ổn định lớp: ổn định, yêu cầu lớp trưởng báo cáo sĩ số lớp. Kiểm tra bài cũ: Giáo viên nêu câu hỏi, gọi học sinh trả lời, đánh giá, nhận xét, cho điểm. Câu hỏi: hãy nêu cú pháp của câu lệnh dạng thiếu và dạng đầy đủ. Mở đầu. - Hằng ngày, có những công việc được thực hiện lặp đi lặp lại nhiều lần, trong đó có những công việc lặp lại với số lần xác định, nhưng cũng có những công việc lặp lại với số lần không xác định. Vậy khi gặp những bài toán như vậy ta sẽ giải quyết như thế nào? Trong Pascal có lệnh dùng để giải quyết vấn đề này rất hiệu quả, lệnh đó là gì? Chúng ta sẽ cùng tìm hiểu trong bài học hôm nay. Bài mới. Hoạt động của giáo viên và học sinh Nội dung 1. Các công việc phải thực hiện nhiều lần. GV: Hãy nêu các công việc mà các em thường thực hiện lặp đi lại lại hàng ngày? HS: Suy nghĩ, trả lời. GV: Hàng ngày có nhiều công việc được thực hiện lặp đi lặp lại nhiều lần, có những công việc được lặp lại với số lần nhất định, biết trước, nhưng cũng có những công việc lặp lại với số lần không biết trước. HS: Trật tự, tập trung nghe giảng và ghi tóm tắt nội dung bài học. GV: Thuyết trình về một số công việc được thực hiện lặp lại hàng ngày. Ví dự như: học bài, quét nhà, ăn cơm, GV: Trong các công việc trên thì công việc nào được lặp lại với số lần biết trước? Công việc nào lặp lại với số lần không biết trước? HS: Suy nghĩ, trả lời. GV: Nhận xét, tóm lại thì lặp có hai loại: - Lặp với số lần biết trước. Ví dụ: đánh răng, tắm. - Lặp với số lần không biết trước. Ví dụ: học bài. - Trong cuộc sống có nhiều công việc được lặp đi lặp lại nhiều lần. - Khi viết chương trình cho máy tính cũng vậy, để chỉ dẫn cho máy tính thực hiện đúng công việc, nhiều khi ta cần phải viết lặp lại nhiều lần câu lệnh để thực hiện một công việc nhất định. 2. Câu lệnh lặp – một lệnh thay cho nhiều lệnh. GV: Yêu cầu học sinh đọc ví dụ 1 SGK. HS: Đọc, các HS còn lại chú ý lắng nghe và hiểu. Ví dụ 1: Vẽ ba hình vuông bằng nhau, có cạnh 1 đơn vị. GV:Thao tác nào được lặp lại khi vẽ ba hình vuông? HS: Trả lời (thao tác vẽ hình vuông được lặp lại ba lần). GV: Nhận xét. Mỗi hình vuông là ảnh dịch chuyển của hình bên trái nó một khoảng cách. Do đó ta chỉ cần lặp lại thao tác vẽ hình vuông ba lần. GV: Gọi HS nêu thuật toán. HS: Suy nghĩ, trả lời. GV: Thuyết trình: bài toán vẽ một hình vuông (hình 34 SKG trang 57) có thao tác chính là vẽ bốn cạnh bằng nhau. Có nghĩa là lặp lại bốn lần thao tác vẽ một đoạn thẳng, sau mỗi lần vẽ đoạn thẳng, thước kẻ được quay một góc 900 sang phải tại vị trí của bút vẽ. GV: Thao tác nào được lặp lại khi vẽ một hình vuông? HS: Trả lời (thao tác vẽ bốn cạnh bằng nhau của hình vuông được lặp lại bốn lần). Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên. GV: Nêu ví dụ 2 SGK trang 57 và đặt câu hỏi. Input và Output của bài toán? Thuật toán của bài toán? HS: tập trung suy nghĩ và trả lời, tham gia xây dựng bài học. GV: Nêu tóm tắt lại ví dụ và đưa ra kết luận về câu lệnh lặp. Xác định bài toán: + Input: cạnh hình vuông 1 đơn vị. + Output: ba hình vuông có cạnh 1 đơn vị. Thuật toán: + Bước 1: Vẽ hình vuông (vẽ liên tiếp bốn cạnh và trở về đỉnh ban đầu). + Bước 2: Nếu số hình vuông đã vẽ được ít hơn 3, di chuyển bút vẽ sang phải 2 đơn vị và trở lại bước 1; ngược lại kết thúc thuật toán. Thuật toán vẽ một hình vuông + Bước 1: k 0 (k là số đoạn thẳng đã vẽ được). + Bước 2: k k + 1; vẽ đoạn thẳng có độ dài 1 đơn vị và quay thước 900 sang phải. + Bước 3: Nếu k<4 thì trở lại bước 2; Ngược lại thì kết thúc thuật toán. Xác định bài toán + Input: Dãy 100 số tự nhiên đầu tiên 1, 2, 3,,100; +Output: Giá trị của tổng 1+2+3+ Thuật toán: + Bước 1: SUM 0; i 0 + Bước 2: i i+1; + Bước 3: Nếu i 100 thì SUM SUM+i và quay lại bước 2; + Bước 4: Thông báo kết quả và kết túc thuật toán Hoạt động chính khi giải bài toán này là thực hiện phép cộng, thuật toán đã mô tả việc thực hiện lặp lại phép cộng 100 lần. Cách mô tả các hoạt động lặp như thế được gọi là cấu trúc lặp. Mọi ngôn ngữ lập trình đều có “cách” để chỉ thị cho máy tính thực hiện các cấu trúc lặp với một câu lệnh. Đó là các câu lệnh lặp. 3. Ví dụ về câu lệnh lặp. GV: Thuyết trình về cú pháp câu lệnh lặp. Các ngôn ngữ lập trình thường có nhiều dạng câu lệnh lặp. Câu lệnh lặp thường gặp trong Pascal có dạng: fordo. GV: Đưa ra cú pháp về câu lệnh lặp fordo for := to do GV: Giải thích các thành phần trong câu lệnh: for, to, do là các từ khóa. biến đếm lá biến đơn, kiểu nguyên. giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với biến đếm và giá trị cuối phải không không nhỏ hơn giá trị đầu. câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép. GV: Đây là câu lệnh lặp với số lần đã biết trước, vậy câu lệnh sau do được thực hiện bao nhiêu lần? HS: Trả lời (=giá trị đầu – giá trị cuối +1) GV: Nhận xét. GV: Nêu ví dụ 3 SGK trang 58. HS: Lắng nghe. GV: Giải thích câu lệnh trong chương trình. GV: Chạy chương trình. GV: Giải thích yêu cầu của chương trình ở ví dụ 4. GV: Giới thiệu lệnh delay(n). Với n la thời gian chương trình tạm dừng. Lưu ý 1 giây tương ứng với n=1000. GV: Yêu cầu HS hoàn thiện chương trình với thời gian tạm dừng là 5 giây. HS: Thực hiện. GV: Nhận xét. GV: Nêu khái quát về câu lệnh ghép. Câu lệnh đơn giản nhất trong Pascal có dạng: for := to do * Giải thích: for, to, do là các từ khóa. biến đếm lá biến đơn, kiểu nguyên. giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với biến đếm và giá trị cuối phải không không nhỏ hơn giá trị đầu. câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép. * Thực hiện lệnh: - ban đầu biến đếm sẽ được gán bằng giá trị đầu, mỗi lần câu lệnh viết sau từ khóa do được thực hiện, biến đếm sẽ được tăng lên một đơn vị cho đến khi biến đếm bằng giá trị cuối. * Chương trình in ra màn hình thứ tự lặp: Program lap; Var i: integer; begin for n:=1 to 10 do writeln(‘Day la lan lap thu’, i); readln; end. Ví dụ 4: chương trình ghi nhận vị trí của một quả trứng rơi từ trên cao xuống (lặp lại lệnh 20 lần) như sau: uses crt; var i:integer; begin clrscr; for i:=1 to 20 do begin writeln(‘0’); delay(1000); end; readln; end. * Các câu lệnh writeln(‘0’), delay(1000) được đặt trong c85p từ khóa begin và end được gọi là câu lệnh ghép. * Câu lệnh ghép là câu lệnh chứa hai hay nhiều câu lệnh khác nhau và đươc nằm trong từ khóa begin và end. Lưu ý trong cấu trúc câu lệnh ghép này sau end là dấu chấm phẩy. 4. Tính tổng và tích trong câu lệnh * Tính tổng GV: Gọi HS đọc và nêu ý tưởng của chương trình tính tổng trong ví dụ 5 SGK trang 59. HS: Đọc và nêu ý tưởng. GV: Giải thích các lệnh trong chương trình, nhận xét có thêm biến kiểu longint (Vì N lớn nên tổng của N số tự nhiên đầu tiên là rất lớn nên ta phai sử dụng một kiểu dữ liệu mới của Pascal, đó là kiếu longint) GV: longint là kiểu số nguyên và có thể lưu các số nguyên trong phạm vi -231 đến 231-1. * Tính tích GV: Yêu cầu bài toán là sử dụng lệnh fordo để tính tích của n số tự nhiên đầu tiên. GV: Gọi HS nêu ý tưởng của bài toán. Yêu cầu HS: sử dụng câu lệnh lặp fordo để viết chương trình. HS: Thực ghiện. GV: Nhận xét. GV: Giải thích các câu lệnh trong chương trình. Program Tinh_tong; Var n, i:integer; S: longint; Begin Write(‘Nhap so n= ’); Readln(n); S:=0; For i:=1 to n do S:=s+i; Writeln(‘Tong cua ‘, n,’ so tu nhien dau tien s= ‘,s); Readln; End. Program Tinh_tich; Var i,n: integer; T: longint; Begin Write(‘Nhap so n: ‘); Readln(n); T:=1; For i:=1 to n do T:=T*I; Writeln (‘Tich cua ‘, n, ‘ so tu nhien dau tien T= ‘,T); Realn; End. Củng cố. Cấu trúc lặp với số lần biết trước có ở mọi ngôn ngữ lập trình, mỗi ngôn ngữ lập trình có câu lệnh riêng để miêu tả cấu trúc này. Ngôn ngữu lập trình dùng cấu trúc lặp để hiện thị cho máy tính thực hiện lặp đi lặp lại công việc nào đó một lần cho đế khi một điều kiện nào đó được thỏa mãn. Ngôn ngữ Pascal thể hiện cấu trúc lặp với số lần cho trước bằng câu lệnh fordo. Dặn dò Đọc và tìm hiểu một số chương trình trong Pascal co sử dụng câu lệnh lặp và hiểu được ý nghĩa của những câu lệnh lặp đó. Tập viết một số chương trình có sử dụng cấu trúc lặp như đã học. Làm bài tập, câu hỏi SGK. Rút kinh nghiệm.
Tài liệu đính kèm: