I. Mục tiêu
* Kiến thức:
- Nắm được các lớp ngôn ngữ lập trình và các mức của ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao.
- Nắm được vai trò của chương trình dịch.
- Biết khái niệm biên dịch và thông dịch.
- Nắm đượcnhiệm vụ quan trọng của chương trình dịch là phát hiện lỗi cú pháp của chương trình nguồn.
* Kỹ năng: Nhận dạng được ngôn ngữ lập trình
* Thái độ: Rèn luyện tính chịu khó cho học sinh
II. Chuẩn bị:
Giáo viên: Giáo án, SGK, sách bài tập, nghiên cứu trước tài liệu
Học sinh: SGK, tập, đọc trước bài ở nhà
III. Tiến trình lên lớp
1. Ổn định: kiểm tra sĩ số
2. Dạy bài mới
Chương I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH i1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH I. Mục tiêu * Kiến thức: Nắm được các lớp ngôn ngữ lập trình và các mức của ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao. Nắm được vai trò của chương trình dịch. Biết khái niệm biên dịch và thông dịch. Nắm đượcnhiệm vụ quan trọng của chương trình dịch là phát hiện lỗi cú pháp của chương trình nguồn. * Kỹ năng: Nhận dạng được ngôn ngữ lập trình * Thái độ: Rèn luyện tính chịu khó cho học sinh II. Chuẩn bị: Giáo viên: Giáo án, SGK, sách bài tập, nghiên cứu trước tài liệu Học sinh: SGK, tập, đọc trước bài ở nhà III. Tiến trình lên lớp Ổn định: kiểm tra sĩ số Dạy bài mới Nội dung Hoạt động giáo viên Hoạt động học sinh Khái niệm lập trình: Lập trình là sử dụng một cấu trúc dữ liệu và các câu lệnh của một ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn dạt thuật toán. Chương trình dịch: là chương trình có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy tính Ví dụ: SGK 1. Thông dịch: được thực hiện bằng cách lặp đi lặp lại dãy các bước sau: a. Kiểm tra tính đúng đắn của lệnh tiếp theo trong chương trình nguồn b. Chuyển đổi câu lệnh đó thành một hay nhiều câu lệnh tương ứng trong ngôn ngữ máy c. thực hiện các câu lệnh vừa chuyển đổi được 2. Biên dịch: gồm 2 bước a. Duyện, phát hiện lỗi, kiểm tra tính đúng đắn của các câu lệnh trong chương trình nguồn b. Dịch toàn bộ chương trình nguồn thành một chương trình đích có thể thực hiện trên máy và có thể lưu trữ để sử dụng lại khi cần thiết - Em hãy cho biết các bước giải một bài toán trên máy tính? - Em hãy cho biết có mấy loại ngôn ngữ lập trình? - Làm thế nào để chuyển chương trình viết bằng ngôn ngữ bậc cao? - Có mấy loại chương trình dịch? * Như vậy trong thông dịch không có chức năng lưu trữ, trong biên dịch cả chương trình nguồn và chương trình đích có thể lưu trữ để sử dụng lại khi cần thiết * Có 5 bước Xác định bài toán Lựa chọn hoặc thiết kế bài toán Viết chương trình Hiệu chỉnh Viết tài liệu * Có 3 loại Ngôn ngữ máy Hợp ngữ Ngôn ngữ bậc cao * Nhờ có chương trình dịch * Gồm 2 loại: - Thông dịch - Biên dịch * Nghe giảng Củng cố: nhấn mạnh sự khác nhau của thông dich và biên dịch Dặn dò: Xem lại bài và đọc trước bài mới Rút kinh nghiệm PHÊ DUYỆT CỦA TỔ TRƯỞNG VŨ THÁI HÒA i2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH I. Mục tiêu * Kiến thức: - Nắm được ngôn ngữ lập trình có ba thành phần cơ bản là: bảng chữ cái, cú pháp và ngữ nghĩa. - Hiểu và phân biệt được ba thành phần này. - Nắm được các thành phần cơ sở của Pascal: Bảng chữ cái, tên, tên chuẩn, tên riêng (từ khoá), hằng và biến. - Phân biệt được tên, hằng và biến. * Kỹ năng: Phân biệt được các thành phần cơ bản, một số khái niệm của ngôn ngữ lập trình II. Chuẩn bị Giáo Viên: Giáo án, SGK, nghiên cứu trước tài liệu Học sinh: Tập, SGK, đọc trước bài ở nhà III. Tiến trình lên lớp Ổn định: kiểm tra sĩ số Kiểm tra bài cũ: Có mấy loại chương trình dịch? Hãy kể tên? Dạy bài mới Nội Dung Hoạt động giáo viên Hoạt động học sinh 1. Các thành phần cơ bản: a/ Bảng chữ cái: Là tập các kí hiệu dùng để viết chương trình. - Trong ngôn ngữ Pascal bảng chữ cái gồm: Các chữ cái tiếng Anh, các chữ số 0-> 9 và một số kí tự đặc biệt (xem trong SGK). b/ Cú pháp: Là bộ quy tắc dùng để viết chương trình. c/ Ngữ nghĩa: Xác định ý nghĩa thao tác cần thực hiện ứng với tổ hợp kí tự dựa vào ngữ cảnh của nó. - Cú pháp cho biết cách viết chương trình hợp lệ, ngữ nghĩa xác định ý nghĩa của các tổ hợp kí tự trong chương trình. - Lỗi cú pháp được chương trình dịch phát hiện và thông báo cho người lập trình. Chương trình không còn lỗi cú pháp thì mới có thể dịch sang ngôn ngữ máy. - Lỗi ngữ nghĩa được phát hiện khi chạy chương trình. 2. Một số khái niệm a/ Tên - Trong ngôn ngữ Turbo Pascal tên là một dãy liên tiếp không quá 127 kí tự bao gồm các chữ cái, chữ số và dấu gạch dưới nhưng phải bắt đầu bằng chữ cái hoặc dấu gạch dưới. - Ngôn ngữ lập trình thường có 3 loại tên cơ bản: Tên dành riêng, tên chuẩn và tên do người lập trình tự đặt. Tên dành riêng: + Là những tên được ngôn ngữ lập trình quy định với ý nghĩa xác định mà người lập trình không thể dùng với ý nghĩa khác. + Tên dành riêng còn được gọi là từ khoá Ví dụ: Một số từ khoá Trong ngôn ngữ Pascal: Program, Var, Uses, Begin, End, Tên chuẩn: - Là những tên được NNLT dùng với ý nghĩa nào đó trong các thư viện của NNLT, tuy nhiên người lập trình có thể sử dụng với ý nghĩa khác. Ví dụ: Một số tên chuẩn Trong ngôn ngữ Pascal: Real, Integer, Sin, Cos, Char, Tên do người lập trình tự đặt - Được xác định bằng cách khai báo trước khi sử dụng và không được trùng với tên dành riêng. - Các tên trong chương trình không được trùng nhau. b/ Hằng và biến Hằng: Là các đại lượng có giá trị không đổi trong quá trình thực hiện chương trình. - Các ngôn ngữ lập trình thường có: + Hằng số học: số nguyên hoặc số thực. + Hằng xâu: là chuỗi kí tự đặt trong dấu nháy ” hoặc ’” + Hằng logic: là các giá trị đúng hoặc sai Biến: - Là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình -Các NNLT có nhiều loại biến khác nhau. -Biến phải khai báo trước khi sử dụng. c/Chú thích -Trong khi viết chương trình có thể viết các chú thích cho chương trình. Chú thích không làm ảnh hưởng đến chương trình. Trong Pascal chú thích được đặt trong { và } hoặc (* và *) * Các ngôn ngữ lập trình nói chung thường có chung một số thành phần như: dùng những kí hiệu nào để viết chương trình, viết theo quy tắc nào, viết như vậy có nghĩa gì? mỗi ngôn ngữ lập trình có một quy định riêng về những thành phần này. * Giới thiệu bảng chữ cái trong pascal cho học sinh nắm Trong các ngôn ngữ lập trình nói chung, các đối tượng sử dụng trong chương trình đều phải đặt tên để tiện cho việc sử dụng. Việc đặt tên trong các ngôn ngữ khác nhau là khác nhau, có ngôn ngữ phân biệt chữ hoa, chữ thường. - Hãy cho biết các điểm khác nhau giữa tên dành riêng và tên chuẩn? - Hãy viết một số tên đúng trong pascal? * Hằng thường có hai loại, hằng được đặt tên và hằng không được đặt tên. Hằng không được đặt tên là những giá trị viết trực tiếp khi viết chương trình. Mỗi ngôn ngữ lập trình có một quy định về cách viết hằng riêng. Hằng được đặt tên cũng có cách đặt tên cho hằng khác nhau. * Biến là đối tượng được sử dụng nhiều nhất trong khi viết chương trình. Biến là đối tượng có thể thay đổi được nên thường được dùng để lưu trữ kết quả, làm trung gian cho các tính toán, mỗi loại ngôn ngữ có những loại biến khác nhau và cách khai báo cũng khác nhau. * Quan sát bảng chữ cái trong SGK và các kí tự đặc biệt * Lắng nghe giảng và ghi chép bài - Tên dành riêng quy định với ý nghĩa riêng xác định, còn tên chuẩn có thể khai báo và dùng với ý nghĩa mục đích khác Ví dụ: Tên đúng: a, b, c, x1, x2, _ten, Tên sai: a bc, 2x, a&b, * Tập trung nghe và ghi chép Củng cố: Phân biệt kỹ các thành phần cơ bản của pascal như: tên dành riêng, tên chuẩn, hằng biến Dặn dò: Trả lời các câu hỏi SGK, và học bài ở nhà Rút kinh nghiệm PHÊ DUYỆT CỦA TỔ TRƯỞNG VŨ THÍ HÒA Chương II. CHƯƠNG TRÌNH ĐƠN GIẢN i3. CẤU TRÚC CHƯƠNG TRÌNH I. Mục tiêu Kiến thức: Nắm được các thành phần của một chương trình như: phần khai báo, phần thân Kỹ năng: Cách khai báo các biến, nhận biết lỗi câu cú của một chương trình Thái độ: Rèn luyện tính kỹ càng, cẩn thận cho học sinh II. Chuẩn bị Giáo viên: Giáo án, SGK, nghiên cứu tài liệu trước Học sinh: Tập, sách, đọc trước bài ở nhà III. Tiến trình lên lớp Ổn định: Lớp trưởng báo cáo sĩ số kiểm tra bài cũ: Nêu khái niệm về hằng và biến trong một chương trình? Dạy bài mới: Nội dung Hoạt động giáo viên Hoạt động học sinh 1. Cấu trúc chung - Mỗi chương trình nói chung gồm hai phần: Phần khai báo và phần thân chương trình. [] 2. Các thành phần của chương trình a) Phần khai báo - Có thể khai báo tên chương trình, khai báo thư viện, khai báo hằng, khai báo biến, Khai báo tên chương trình Program ; - Tên chương trình do người lặp trình tự đặt theo đúng qui tắc đặt tên. Ví dụ: Program Bai_1; Program Tong; Khai báo thư viện; Uses ; Ví dụ: uses CRT, GRAPH; Khai báo hằng: Những hằng sử dụng nhiều lần trong chương trình thường được đặt tên cho tiện khi sử dụng. Ví dụ: Const N=100; e = 2.7; Khai báo biến: - Mọi biến sử dụng trong chương trình đều phải khai báo để chương trình dịch biết để xử lý và lưu trữ. - Biến chỉ mang một giá trị gọi là biến đơn. b) Phần thân chương trình: - Thân chương trình thường là nơi chứa toàn bộ các câu lệnh của chương trình hoặc lời gọi chương trình con. - Thân chương trình thường có cặp dấu hiệu bắt đầu và kết thúc chương trình. Ví dụ: Begin [] End. 3. Ví dụ chương trình đơn giản Program VD; Begin Write(‘Chao cac ban’); Readln; End. * Thuyết trình đưa ra cấu trúc chung của chương trình: * Phần khai báo sẽ báo cho máy biết chương trình sẽ sử những tài nguyên nào của máy. * Mỗi ngôn ngữ lập trình có cách khai báo riêng khác nhau và tùy thuộc vào ngôn ngữ mà ta cần tìm hiểu xem chương trình ta cần khai báo những gì * Khai báo hằng là việc đặt tên cho hằng để tiện khi sử dụng và trách việc phải viết lặp lại nhiều lần cùng một hằng trong chương trình. Khai báo hằng còn tiện lợi hơn khi cần thay đổi giá trị của nó trong chương trình. * Khai báo biến là xin máy tính cấp cho chương trình một vùng nhớ đẻ lưu trữ và xử lý thông tin trong bộ nhớ trong. * Mỗi ngôn ngữ lập trình có cách tổ chức chương trình khác nhau, thường thì phần thân chứa các câu lệnh của chương trình. - Hãy chỉ ra các thành phần trong chương trình ở ví dụ trên? * Nghe giảng và ghi bài * Tập trung nghe giảng, phân biệt được một số khai báo của một chương trình * Nắm rõ cách khai báo của từng loại - Xem ví dụ và chỉ ra từng thành phần của nó trong chương trình 4. Củng cố: Nhắc lại một số khái niệm mới. Cho một chương trình mẫu về nhà yêu cầu HS phân biệt và chỉ rõ từng thành phần của chương trình đó. 5. Dặn dò: Xem lại bài và đọc trước bài mới 6. Rút kinh nghiệm PHÊ DUYỆT CỦA TỔ TRƯỞNG VŨ THÁI HÒA i4. MỘT SỐ KIỂU DỮ LIỆU CHUẨN I. Mục tiêu * Kiến thức: - Nắm đuợc một số kiểu dữ liệu định sẳn: nguyên, thực, ký tự, logic, và miền con. - Xác định được kiểu cần khai báo của dữ liệu đơn giản. * Kỹ năng: Phân biệt được từng loại kiểu dữ liệu * Thái độ: Rèn tính chịu khó, cẩn thận cho học sinh II. Chuẩn bị: Giáo viên: giáo án, bảng phụ, nghiên cứu trước tài liệu Học sinh: tập, sách, đọc trước bài ở nhà III. Tiến trình lên lớp Ổn định: Kiểm tra sĩ số Kiểm tra bài cũ: Cấu trúc của một chương trình gồm mấy phần? Hãy kể tên và lấy VD? Dạy bài mới Nội dung Hoạt động giáo viên Hoạt động học sinh NNLT Pascal có một số kiểu dữ liệu chuẩn sau: 1. Kiểu nguyên Kiểu Số Byte Miền giá trị BYTE 1 0 255 INTEGER 2 -215 215 - 1 WORD 2 0 216 – 1 LONGINT 4 -231 231 - 1 2. Kiểu thực - Có nhiều kiểu cho giá trị ... được chương trình dựa vào thông báo lỗi của chương trình dịch và tính hợp lý của kết qủa thu được. - Thái độ: Rèn luyện tính kỹ càng, cẩn thận cho học sinh II. Chuẩn bị Giáo viên: Giáo án, bảng phụ, nghiên cứu trước tài liệu Học sinh: Tạp, sách, đọc trước bài ở nhà III. Tiến trình lên lớp Ổn định: Kiểm tra sĩ số Kiểm tra bài cũ: Viết thủ tục chuẩn đưa dữ liệu vào từ bàn phím và ra từ màn hình? Dạy bài mới Nội dung Hoạt động giáo viên Hoạt động học sinh Màn hình làm việc ngôn ngữ Pascal có dạng như sau: Một số thao tác thường dùng soạn thảo trong môi trường Pascal: Xuống dòng: Enter Các mũi tên: a, b, Z, Y tương ứng đưa con trỏ qua trái, xuống dưới, lên trên, qua phải Đưa con trỏ đến đầu/ cuối dòng: Home/ end Đưa con trỏ lên trang trước/ xuống trang sau: PgUp, PgDn Phục hồi thao tác vừa làm: Alt + Bksp Cắt: Shift + del Copy: Ctrl + insert Dán: Shift + insert Ghi file vào đĩa: F2 Mỡ file đã có: F3 Biên dịch chương trình: Alt + F9 Sửa lổi chương trình: F9 Chạy chương trình: Ctrl + F9 Đóng cửa sổ chương trình: Alt + F3 Chuyển qua lại giữa các cửa sổ: F6 Thoát khỏi cửa sổ: Alt + F3 Thoát khỏi TP: Alt + X * Giới thiệu một số tập tin cần thiết để Turbo Pascal có thể chạy được, hướng dẫn các em cách khởi động Pascal trên máy tính. Turbo.exe (file chạy) Turbo.tpl (file thư viện) Turbo.tph (file hướng dẫn) * Giới thiệu một số thao tác thường dùng khi soạn thảo chương trình trong môi trường soạn thảo Turbo Pascal. * Thực hiện một vài lần các thao tác này để các em nhận thấy mức độ tiện lợI của nó khi soạn thảo cũng như chạy chương trình. Ví dụ: Hãy chạy đoạn chương trình sau và sửa lỗi nếu có Program xinchao; Begin Write(‘ chao mung cac ban da lam quen voi moi truong pascal’); Readln; End. * Quan sát mô hình môi trường làm việc của pascal và nghe hướng dẫn của giáo viên * Lắng nghe các thao tác giáo viên trình bày và ghi chép cẩn thận * Thực hiện việc chạy chương trình và sửa lỗi đoạn chương trình ví dụ Củng cố: nhắc lại nhanh về một số thao tác khi soạn thảo Dặn dò: Xem lại bài và làm bài tập ở nhà, chuẩn bị bài thực hành số 1 Rút kinh nghiệm PHÊ DUYỆT CỦA TỔ TRƯỞNG VŨ THÁI HÒA Chương III. CẤU TRÚC RẼ NHÁNH VÀ LẶP i8. CẤU TRÚC RẼ NHÁNH I. Mục tiêu - Kiến thức: + Hiểu nhu cầu cấu trúc rẽ nhánh trong biểu diễn thuật toán. + Nắm được câu lệnh rẽ nhánh (dạng thiếu và dạng đủ). + Nắm đựơc câu lệnh ghép. - Kỹ năng: + Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một bài toán đơn giản. + Viết được các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng để thể hiện được thuật toán của một số bài toán đơn giản. - Thái độ: Rèn tính chịu khó cho học sinh II. Chuẩn bị Giáo viên: Giáo án, bảng phụ, nghiên cứu trước tài liệu Học sinh: Đọc trước bài ở nhà III. tiến trình lên lớp Ổn định lớp: Kiểm tra sĩ số Dạy bài mới Nội dung Hoạt động giáo viên Hoạt động học sinh Khái niệm rẽ nhánh. Ví dụ: Để viết chương trình giải phương trình bậc hai, ta phải: Tính r = b2 – 4ac; Sau đó tuỳ thuộc vào giá trị của r mà ta có tính nghiệm hay không? Trong thực tế: Nếu r < 0 thì phương trình vô nghiệm Nếu r ³ 0 thì phương trình có nghiệm Như vậy tuỳ thuộc vào giá trị của r mà ta đưa ra vô nghiệm hay có nghiệm. Hoặc có thể nói: Nếu r<0 thì phương trình vô nghiệm, ngược lại thì phương trình có nghiệm. Þ Như vậy ta thấy một số mệnh đề có dạng Nếu ........ thì ......... Nếu ........ thì ......... ngược lại thì Cấu trúc này được gọi là cấu trúc rẽ nhánh. Các NNLT thường cung cấp các câu lệnh để mô tả các cấu trúc rẽ nhánh như trên. 2. Câu lệnh If – Then Pascal dùng câu lệnh If – Then để mô tả việc rẽ nhánh tương ứng với 2 loại mệnh đề rẽ nhánh như sau Dạng thiếu: If Then ; Dạng đầy đủ: If Then Else ; Trong đó: Điều kiện: Là biểu thức quan hệ hoặc logic. Câu lệnh, câu lệnh 1, câu lệnh 2: là một câu lệnh của Pascal. Ý nghĩa các câu lệnh: Dạng thiếu: Nếu điều kiện đúng thì câu lệnh được thực hiện, nếu điều kiện sai thì không thực hiện gì. Dạng đầu đủ: Nếu điều kiện đúng thì thực hiện câu lệnh 1, nếu điều kiện sai thì thực hiện câu lệnh 2. VD1: If (x Mod 2 = 0) Then WRITE(x, ‘La so chan’); VD2: If DETA < 0 Then WRITE(‘Phuong trinh vo nghiem’) Else WRITE(‘Phuong trinh co nghiem’); VD3: Tìm giá trị lớn nhất (max) của hai số a và b: Cách 1: max := a; If b>a Then max :=b; Cách 2: If a>b Then max :=a Else max:=b; 3. Câu lệnh ghép Trong ngôn ngữ Pascal, câu lệnh ghép có dạng: Begin End; * Chú ý: Sau End phải là dấu ; và trước Else không có dấu ; Từ nay nói đến câu lệnh thì đó có thể là câu lệnh đơn hoặc câu lệnh ghép. Ví dụ: Đoạn chương trình sau trong ngôn ngữ Pascal có sử dụng câu lệnh ghép. (SGK) 4. Một số ví dụ: VD1: Giải PT bậc nhất ax + b = 0 VD2: Trong việc thực hiện phép chia a cho b, phải có điều kiện b0 * Đưa ra ví dụ rồi cùng học sinh thảo luận phương pháp giải quyết bài toán. Kiểm tra r³ 0 Thông báo vô nghiệm Tính và đưa ra nghiệm Kết thúc Đúng Sai * Đưa ra cấu trúc lệnh rẽ nhánh trong Pascal. Nhắc nhở học sinh đây là cấu trúc quan trọng, nó có thể sử dụng rất nhiều trong các chương trình sau này. * Lưu ý các em sau Then và sau Else chỉ có một lệnh chương trình. - Với hai dạng này, dạng nào dùng thuận tiện hơn? - Ở VD3 cách nào nhanh hơn, tiện hơn? * Khi đó ta cần gộp nhiều lệnh đó lại và coi đó là một câu lệnh trong chương trình. Các ngôn ngữ lập trình thường có cấu trúc để giúp ta thực hiện điều này. * Soạn sẵn hai chương trình này và cho các em quan sát cách viết chương trình để các em hình thành dần cách viết một chương trình. * Chạy thử chương trình và chỉ rõ các lệnh trong chương trình dùng để làm gì * Quan sát mô hình cấu trúc rẽ nhánh đơn giản * Lắng nghe và ghi bài cẩn thận * chú ý sau then và sau else chỉ có một câu l - Tuỳ trường hợp cụ thể mà dùng dạng thiếu hay dạng đủ thì thuận tiện hơn - Ở VD3 ta thấy cách 2 thuận tiện hơn cách thứ nhất, vì chỉ dùng một cấu trúc * Lắng nghe giáo viên trình bày câu lệnh ghép * Theo giỏi các ví dụ hoàn chĩnh, đọc thêm ví dụ SGK Củng cố: Nhắc lại nhanh cấu trúc câu lệnh rẽ nhánh IF – THEN, IF – THEN – ELSE thông qua các ví dụ, ra bài tập về nhà Dặn dò: Xem lại bài và làm bài tập ở nhà Rút kinh nghiệm PHÊ DUYỆT CỦA TỔ TRƯỞNG VŨ THÁI HÒA i10. CẤU TRÚC LẶP I. Mục tiêu Kiến thức: + Nắm được công dụng của cấu trúc lặp trong biểu diễn thuật toán. + Nắm được cấu trúc lặp kiểm tra điều kiện trước, cấu trúc lặp với số lần định trước. + 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. + Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần định trước. + Viết được thuật toán của một số bài toán đơn giản. Kỹ năng: Cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể Thái độ: Rèn luyện tính tích cực đối với học sinh II. Chuẩn bị Giáo viên: Giáo án, sách, bảng phụ, nghiên cứu tài liệu trước Học sinh: Đọc trước bài ở nhà III. Tiến trình lên lớp Ổn định lớp: Kiểm tra sĩ số Kiểm tra bài cũ: Viết câu lệnh If – Then dạng thiếu, đủ của cấu trúc rẽ nhánh Dạy bài mới Nội dung Hoạt động giáo viên Hoạt động học sinh 1. Khái niệm lặp : - Xét hai bài toán như sau với a>2 là số nguyên cho trước : Bài toán 1:Tính tổng Bài toán 2:Tính tổng với điều kiện . Cách giải : - Bắt đầu S được gán giá trị là 1/a. - Tiếp theo mỗi lần cộng thêm vào S là 1/(a+N) với N=1,2,... - Với bài toán 1, việc cộng thêm dừng khi N=100 => số lần lặp đã biết trước. - Với bài toán 2, việc cộng thêm dừng khi 1/(a+N) số lần lặp chưa biết trước. Trong lặp trình, có những thao tác phải lặp lại nhiều lần, khi đó ta gọi là cấu trúc lặp. Lặp thường có hai loại : - Lặp với số lần biết trước. - Lặp với số lần không biết trước. NNLT nào cũng cung cấp một số câu lệnh để mô tả các cấu trúc lặp như trên; Sau đây chúng ta sẽ tìm hiểu các câu lệnh lặp trong ngôn ngữ Pascal. 2. Lặp có số lần biết trước và câu lệnh for-do Trong Pascal có hai loại câu lệnh lặp có số lần biết trước : - Lặp dạng tiến : For := to do - Lặp dạng lùi : For := downto do Trong đó : - Biến đếm thường là biến kiểu số nguyên . - Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm. giá trị đầu phải nhỏ hơn hay bằng giá trị cuối. - Ở dạng lặp tiến : Biến đếm tự tăng dần từ giá trị đầu đến giá trị cuối. - Ở dạng lặp lùi : Biến đếm tự giảm dần từ giá cuối đến giá trị đầu. Tương ứng với mỗi giá trị của biến đếm, câu lệnh sau đó thực hiện một lần. Vd1: Hai chương trình thuật toán tong_1a và tong_1b. Vd2: Tính tổng các số nguyên chia hết cho 3 hoặc 5 trong phạm vi từ M đến N ( M<N). 3. Lặp với số lần chưa biết trước và câu lệnh while - do : Để giải bài toán 2 ta dùng thuật toán như sau : B1: S:=1/a; N:=0; B2: Nếu 1/(1+a)<0,0001 thì chuyển đến bước 5 B3: N:= N+1; B4: s:= s+1/(1+N) rồi quay lại bước 2 B5: Đưa S ra màn hình rồi kết thúc. - Từ bước 2 đến bước 4 được lặp lại nhiều lần nếu điều kiện chưa được thỏa mãn. - Pascal sử dụng câu lệnh lặp while-do để tổ chức lặp với số lần chưa biết như sau while do Trong đó - Điều kiện là biểu thức quan hệ hoặc logic - Câu lệnh là một câu lệnh trong pascal. Ý nghĩa : Khi điều kiện còn đúng thì còn thực hiện câu lệnh sau do, sau đó quay lại kiểm tra điều kiện. Ví dụ 1 : Chương trình của bài toán 1 Ví dụ 2: Tìm ước chung lớn nhất của M và N. Thuật toán : B1: Nếu M = N thì UCLN:= M; kết thúc B2: Nếu M > N thì M:= M - N rồi quay lại B1 Sau đây là chương tình tìm ước chung lớn nhất. * Đưa ra bài toán , yêu cầu học sinh tìm cách để giải các bài toán này? * Đưa ra cách giải cho bài toán. Giải theo các lệnh tuần tự : s1:= 0; If(1/a > 0,0001) then s1:= s1+1/a ; If(1/(a + 1) > 0,0001) then s1:=s1+1/(a+1) ; If(1/(a+2)>0,0001) then s1:=s1+1/(a+2) ; - Nhận xét với việc giải bài toán theo cách đó ? * Đưa ra ví dụ So sánh hai thuật toán sau : Thuật toán tong_1a B1: S:= 1/a; N:= 0; B2: N:= N+1; B3: Nếu N >100 thì chuyển sang bước 5; B4: S:=S+1/(a+N) rồi quay lại bước 2 B5: Đưa ra S 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 sang bước 5; B4: S:=S+1/(a+N) rồi quay lại bước 2 B5: Đưa ra S rồi kết thúc. * Gọi một số HS nhận xét về hai thuật toán trên về một số vấn đề : - Thuật toán có lặp không ? - Lặp bao nhiêu lần ? - Hai thuật toán giống và khác nhau như thế nào - Cái gì thay đổi trong hai thuật toán này ? * Đưa ra cấu trúc câu lệnh while-do trong pascal, giải thích ý nghĩa các thành phần. * Gõ trước những ví dụ này để học sinh quan sát chương trình, giáo viên chạy thử chương trình trong pascal. * Đưa ra cách giải của mình, học sinh có thể đưa ra những cách giải khác nhau. - Cách giải bài toán này rất dài dòng - Hai thuật toán đều lặp - Lặp lại 100 lần - Giống nhau đều lặp lại 100 lần và khác nhau là kết quả của tổng - N thay đổi * Lắng nghe giảng về cấu trúc while - do * Nghe hướng dẫn ví dụ Củng cố: Nhắc lại cấu trúc câu lệnh, ra bài tập về nhà Dặn dò: Xem lại bài và làm bài tập Rút kinh nghiệm PHÊ DUYỆT CỦA TỔ TRƯỞNG VŨ THÁI HÒA
Tài liệu đính kèm: