I. MỤC TIÊU
1. Kiến thức
HS cần:
- HS biết được ba lớp ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao;
- Biết 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;
- Biết các thành phần cơ bản của ngôn ngữ lập trình và thành phần cơ sở của ngôn ngữ lập trình pascal.
2. Kỹ năng
3. Thái độ
- Có tính kỉ luật cao, ham thích môn học, tinh thần làm việc theo nhóm;
- Nhận thức được quá trình phát triển của ngôn ngữ lập trình gắn liền với quá trình phát triển của Tin học.
Tuần: 1 - Tiết PPCT:1 Ngày dạy: 1. KHAÙI NIEÄM LAÄP TRÌNH VAØ NGOÂN NGÖÕ LAÄP TRÌNH I. MỤC TIÊU 1. Kiến thức HS cần: - HS biết được ba lớp ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao; - Biết 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; - Biết các thành phần cơ bản của ngôn ngữ lập trình và thành phần cơ sở của ngôn ngữ lập trình pascal. 2. Kỹ năng 3. Thái độ - Có tính kỉ luật cao, ham thích môn học, tinh thần làm việc theo nhóm; - Nhận thức được quá trình phát triển của ngôn ngữ lập trình gắn liền với quá trình phát triển của Tin học. II. CHUẨN BỊ 1. Giáo viên - Sách giáo viên. 2. Học sinh - Xem trước nội dung bài 1. III. PHƯƠNG PHÁP Gợi mở tình huống + Đặt vấn đề + thảo luận + thuyết trình. IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: thông qua. 3. Giảng bài mới: Hoạt động của GV và HS Nội Dung GV: phát vấn học sinh : “Em hãy nêu các bước giải bài toán trên máy vi tính?”. HS: Suy nghĩ và trả lời câu hỏi. GV:Phân tích câu trả lời và nhắc lại các bước giải một bài toán trên máy vi tính. GV: Làm sao để máy tính có thể hiểu và thực hiện các thuật toán đã lựa chọn để giái bài toán? HS: Suy nghĩ và trả lời GV: Giới thiệu với các em khái niệm lập trình. HS: Lắng nghe ghi chép. Lưu ý: giải thích thêm Ý nghĩa của lập trình là để tạo ra các chương trình giải được các bài toán trên máy tính. Về cấu trúc dữ liệu, cần lựa chọn sao cho ít tốn kém bộ nhớ. GV: Chuyển mạch: “Vậy thì có bao nhiêu lớp ngôn ngữ lập trình?”. Giới thiệu cho học sinh biết có 3 lớp ngôn ngữ lập trình. HS: Quan sát, ghi chép. GV: Chuyển mạch: “Sau đây chúng ta sẽ tìm hiểu khái niệm về mỗi lớp ngôn ngữ lập trình”. Trình bày cho học sinh xem. HS: Quan sát, ghi chép, lắng nghe. GV: Lưu ý học sinh: “Chương trình viết bằng ngôn ngữ máy có thể nạp trực tiếp vào bộ nhớ và thực hiện ngay ”. Trình bày và giới thiệu cho học sinh biết về hợp ngữ. HS: Quan sát, ghi chép, lắng nghe. GV: Giới thiệu với các em về ngôn ngữ bậc cao. HS: Lắng nghe, ghi chép, quan sát. Khái niệm chương trình dịch GV: “Để thực hiện trên máy tính, chương trình cần được dịch sang ngôn ngữ máy”. HS: Lắng nghe, ghi chép. GV: giới thiệu khái niệm và cơ chế hoạt động của chương trình dịch. HS: Quan sát, lắng nghe, ghi chép. GV: Chuyển mạch: “Vậy có mấy loại chương trình dịch” và tiến hành cho học sinh xét ví dụ người phiên dịch. HS: lắng nghe và suy nghĩ. GV: Trình bày cho học sinh các cách thức giải quyết. HS: Quan sát, ghi chép. GV: Nhận xét: Sau khi kết thúc Cách 1: Không có tài liệu nào được lưu trữ. Cách 2: Có 2 tài liệu tiếng Việt và tiếng Anh có thể lưu trữ dùng lại về sau” HS: Lắng nghe, ghi chép. GV: Chuyển mạch: “Cũng tương tự như vậy ta có 2 loại chương trình dịch là : thông dịch và biên dịch”. Trình chiếu và giới thiệu cho học sinh về thông dịch (interpreter). HS: Quan sát, ghi chép, suy nghĩ. GV: Chú ý cho học sinh: “Thông dịch thích hợp trong đối thoại giữa người và hệ thống. Tuy nhiên một câu lệnh nào đó được lập lại bao nhiêu lần thì nó sẽ được dịch bấy nhiêu lần”. Nêu ví dụ cho học sinh. HS: Lắng nghe, ghi chép. GV:giới thiệu cho học sinh biết về biên dịch(compiler). HS: Quan sát, ghi chép, suy nghĩ. GV: Nêu ví dụ cho học sinh và nhận xét: “Trong chương trình thông dịch, không có chương trình đích để lưu trữ. Trong biên dịch cả chương trình nguồn và đích đều có thể lưu trữ” Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán. - Chương trình được viết bằng ngôn ngữ lập trình bậc cao không phụ thuộc vào loại máy. - Chương trình viết bằng ngôn ngữ máy có thể nạp trực tiếp vào bộ nhớ của máy và thực hiện ngay còn chương trình viết bằng ngôn ngữ lập trình bậc cao phải được chuyển thành ngôn ngữ máy mới thực hiện được. - Chương trình có chức năng chuyển đổi ngôn ngữ viết bằng ngôn ngữ bậc cao thành ngôn ngữ máy gọi là chương trình dịch. - Chương trình dịch nhận đầu vào là chương trình viết bằng ngôn ngữ lập trình bậc cao(chương trình nguồn) và cho ra chương trình ở dạng ngôn ngữ máy (chương trình đích). CT nguồn CT DỊCH CT đích Chương trình dịch có hai loại là thông dịch và biên dịch. a./ Thông dịch (Interpreter): Thông dịch được thực hiện bằng cách lặp lại các bước: - B1: Kiểm tra tính đúng đắn của câu tiếp theo trong chương trình nguồn; - B2: Chuyển đổi câu lệnh đó thành các câu lệnh tương ứng trong ngôn ngữ máy; -B3:Thực hiện các câu lệnh vừa chuyển đổi được Thông dịch là quá trình dịch và thực hiện các câu lệnh luân phiên nhau. b./ Biên dịch (compiler) Biên dịch được thực hiện qua hai bước: - B1: Duyệt , 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; - B2: 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. Thông thường, trong môi trường làm việc trên mỗi ngôn ngữ lập trình cụ thể ngoài chương trình dịch còn có một số thành phần chức năng liên quan như biên soạn, lưu vtrử, tìm kiếm, VD: Turbo Pascal, Free Pascal, Visual Pascal,.. là các môi trường làm việc trên Pascal; C++, Visual C++,.. là các môi trường làm việc trên C++. 4. Củng cố và luyện tập : - Nhắc lại khái niệm ngôn ngữ lập trình và chương trình dịch: thông dịch và biên dịch. 5. Hướng dẫn học sinh chuẩn bị bài ở nhà: - Học bài cũ. Trả lời các câu hỏi trong SGK V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức: Tuần: 1 - Tiết PPCT:02 Ngày dạy: 2. CAÙC THAØNH PHAÀN CUÛA NGOÂN NGÖÕ LAÄP TRÌNH I. MỤC TIÊU 1. Kiến thức HS cần: - Biết ba thành phần cơ bản của ngôn ngữ lập trình., hiểu và phân biệt được ba thành phần này. - Biết các khái niệm: tên, tên chuẩn, tên dành riêng, hằng và biến. 2. Kỹ năng - Phân biệt được tên, hằng, biến và biết đặt tên đúng. 3. Thái độ - Có tính kỉ luật cao, ham thích môn học, tình thần làm việc theo nhóm. II. CHUẨN BỊ 1. Giáo viên - Sách giáo viên. 2. Học sinh - Xem trước nội dung 3.a, b của bài 1. III. PHƯƠNG PHÁP Phương pháp phát vấn, thuyết trình – giảng giải. IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: Câu hỏi: Biên dịch và thông dịch khác nhau như thế nào?(8đ) Thông dịch: không có chương trình đích để lưu trữ. Lần lượt dịch từng câu lệnh.Một câu lệnh nào đó phải thực hiện bao nhiêu lần thì nó phải được dịch bấy nhiêu lần. (4đ) Biên dịch: Trong biên dịch cả chương trình nguồn và đích đều có thể lưu trữ. Dịch toàn bộ chương trình nguồn thành chương trình đích. (4đ) 3. Giảng bài mới: Hoạt động của GV và HS Nội Dung GV: giới thiệu cho học sinh về 3 thành phần cơ bản của mỗi ngôn ngữ lập trình. HS: Quan sát, ghi chép. GV: dẫn dắt HS: Trong tiếng việt của chúng ta có sử dụng bảng chữ cái không? “ta sử dụng các ký tự trong bảng chũ cái tiếng việt để ghép thành từ, thành câu, thành văn bản. Tương tự trong ngôn ngữ lập trình cũng có bảng chữ cái. GV: Giới thiệu khái niệm bảng chữ cái và tập hợp các kí tự hợp lệ. HS: Chú ý quan sát, ghi chép. GV: Chú ý thêm cho học sinh: “Bảng chữ cái của các ngôn ngữ lập trình khác nhau có sự khác nhau không nhiều” và nêu ví dụ cho học sinh. GV: giới thiệu cho học sinh biết cú pháp là gì? Và nêu tác dụng của cú pháp. GV: Lưu ý thêm cho học sinh: “Cú pháp cũng có sự khác nhau giữa các ngôn ngữ lập trình” và nêu ví dụ minh họa. GV: giới thiệu cho học sinh biết về thành phần ngữ nghĩa. HS: Ghi chép. GV: Đưa ví dụ minh họa: Từ “Chạy” trong 2 câu sau mang nghĩa khac nhau Bình và Hưng thi chạy Nhân dân ĐBSCL chạy lũ. à Tổ hợp ký tự trong ngữ cảnh khác nhau mang nghĩa khác nhau. HS: Quan sát, suy nghĩ, ghi chép. GV: Lưu ý HS, lỗi cú pháp dễ phát hiện, lỗi về ngữ nghĩa khó phát hiện. Chỉ khi đưa vào số liệu cụ thể. GV: Đặt câu hỏi: Trong đời sống thực, tên là gì? Tại sao phải đặt tên? HS: Trong cuộc sống hằng ngày ta phân biệt giữa người này với người kia qua tên à Nêu ý nghĩa của việc đặt tên trong lập trình. GV: Trong ngôn ngữ lập trình cũng vậy, để phân biệt các đối tượng trong chương trình thì phải đặt tên cho các đối tượng đó. GV: Quy tắc đặt tên được tuân theo từng ngôn ngữ lập trình và chương trình dịch cụ thể. GV: Cho học sinh làm một số ví dụ để phân biệt được tên đúng, tên sai. HS: Học sinh tìm tên đúng trong Pascal Tênđúng: Giai_Phuong_Trinh _Timx PROGRAM Integer type Abs. GV: khái niệm về các loại tên và giải nghĩa thêm chức năng của vài loại tên thông dụng: PROGRAM, begin, end, uses, const,... GV: hãy chỉ ra các tên sai trong các đặt tên sau đây: A, R23, _65, A GH, P34_c, 8Jh, F#j, GJ, F@j ? Trả lời: Tên sai là: A GH, 8Jh, F#j, F@j Hằng và biến GV: Trong ngôn ngữ Pascal, khi cần lưu trữ những đại lượng có giá trị thay đổi hay không đổi người ta sẽ dùng đại lượng hằng và biến. Vậy hằng hay biến là gì? Chức năng của chúng ra sao? Phần cuối cùng ta sẽ đi tìm hiểu khái niệm hằng và biến. HS: Học sinh lắng nghe. GV: Các em hãy nhìn lên bảng ví dụ sau và cho biết đâu là hằng xâu, hằng chuỗi, hằng logic 24,74,12.3 ‘NhaTrang’, ‘tour’ False, True. GV: Các em hãy cho biết tên biến và tên hằng là tên chuẩn hay tên dành riêng hay tên do người lập trình đặt. HS: Học sinh đọc sách và trả lời: Tên do người lập trình đặt GV: Sau khi viết được một chương trình thì người lập trình phải tiến hành “chạy thử” để kiểm tra xem phần mã mình viết có đúng như ý tưởng ban đầu khi thiết kế không, vậy em nào cho biết, các lệnh được viết trong cặp dấu {} hay (* *) có được chương trình biên dịch không? HS: Dấu chú thích sẽ được bỏ qua khi Pascal biên dịch chương trình 1./ Các Thành Phần Cơ Bản: Mỗi ngôn ngữ lập trình thường có ba thành phần cơ bản sau: a./ Bảng chữ cái: gồm: - Các chữ cái thường và các chữ cái hoa của bảng chữ cái tiếng anh. - 10 chữ số thập phân ả rập: 0à 9 - Các kí tự đặc biệt: + - * / = [ ] . , ; # ^ $ @ & ( ) : ‘ và dấu cách. Bảng chữ cái của các ngôn ngữ lập trình có khác nhau nhưng sự khác biệt không nhiều. b./ Cú pháp : Là bộ quy tắc để viết chương trình. Dựa vào chúng, người lập trình và chương trình dịch biết được tổ hợp nào của các ký tự trong bảng chữ cái là hợp lệ và tổ hợp nào là không hợp lệ. Từ đó có thể mô tả chính xác thuật tóan để máy thực hiện. c./ Ngữ nghĩa: Để xác định ý nghĩa thao tác cần phải thực hiện. Tóm lại, cú pháp cho biết cách viết một chương trình hợp lệ còn ngữ nghĩa cho phép xác định ý nghĩa của các tổ hợp ký tự. 2./ Một số khái niệm: a./ Tên: Mọi đối tượng trong chương trình đều phải đặt tên theo qui tắc của ngôn ngữ lập trình và chương trình dịch cụ thể. Trong ngôn ngữ lập trình Pascal, tên là 1 dãy liên tiếp không quá 127 ký tự bao gồm: chữ cái, chữ số, dấu gạch dưới và chỉ bắt đầu bằng chữ cái hoặc dấu gạch dưới. VD : trong ngôn ngữ lập trình Pascal: -Tên đúng: A ; A3 ; c_Trinh1; _ab3; _34a - Tên sai: c trinh ; 6aB ; A&B; Ngôn ngữ Pascal không phân biệt chữ hoa và chữ thường nhưng một số ngôn ngữ lập trình khác phân biệt chữ ho ... i=1,2,,100) Khi có nhiều lệnh cần lặp lại thì ta phải làm như thế nào? Vậy bài toán 1 viết bằng câu lệnh lặp là gì? Trình chiếu slide và giải thích sự thực hiện của máy và sơ đồ thực hiện của vòng lặp. Có nhận xét gì về giá trị đầu, giá trị cuối? Giá trị đầu £ giá trị cuối ta có lệnh for tiến Lặp lùi cũng gần giống như lặp tiến. giải thích sự thực hiện của máy và sơ đồ của vòng lặp. Giá trị đầu, giá trị cuối như thế nào? Giá trị đầu ³ giá trị cuối ta có lệnh for lùi. Mặc dù Turbo Pascal, trong vòng lặp có thể gán giá trị của biến điều khiển (biến đếm) nhưng ta không nên làm. Tại sao? Vì như vậy sẽ can thiệp vào cấu trúc vòng for, làm thay đổi số lần lặp. Ví dụ: Xuất dãy số từ 1 đến 10. (đưa ra 1 đoạn chương trình và giải thích) writeln(‘Day so:'); for i:=1 to 10 do begin write(‘ ’,i); i:=i+1; end; Vậy: Trong 2 dạng for trên thì dạng for nào là phù hợp cho bài toán 1? Chú ý lắng nghe câu hỏi. Cả lớp cùng suy nghĩ và giơ tay phát biểu ý kiến. Trả lời: + Thuật toán Tong_1a biến i khi bắt đầu tham gia vòng lặp là 1 và sau mỗi lần lặp i tăng lên 1. Thuật toán Tong_1b biến i khi bắt đầu tham gia vòng lặp là 100 và sau mỗi lần lặp i giảm 1. + Cả 2 thuật toán đều có số lần lặp xác định là 100. Và mỗi lần lặp đều thực hiện câu lệnh S:=S+1/(a+i); Trả lời: Kết quả sẽ giống nhau. I. 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: < 0.0001 Cách giải: - Bắt đầu S được gán giá trị 1/a. - Tiếp theo mỗi lần cộng thêm vào S là 1/(a+i) với i=1,2,3 + Với bài toán 1, việc cộng thêm dừng khi i=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+i) <0.0001. => 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. II. 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; {Khởi tạo S và 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. Câu lệnh for - do : Câu lệnh for - do mô tả cấu trúc lặp với số lần biết trước. Có 2 dạng: 1. Dạng lặp tiến: a. Cấu trúc: for := to do ; b. Hoạt động: Câu lệnh sau từ khóa 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ừ giá trị đầu đến giá trị cuối VD: for i:= 1 to 10 do Writeln (i); 2. Dạng lặp lùi: a. Cấu trúc: for := downto do ; b. Hoạt động: Câu lệnh sau từ khóa 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ừ giá trị cuối đến giá trị đầu. VD: for i:= 10 to 1 do Writeln (i); Trong đó: Biến đếm là biến kiểu nguyên, kí tự. Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm. Giá trị đầu £ giá trị cuối. Nếu Giá trị đầu > giá trị cuối thì vòng lặp không được thực hiện. Câu lệnh: lệnh cần lặp, đặt sau do * Lưu ý: Giá trị của biến đếm được điều chỉnh tự động (tăng hoặc giảm 1 đơn vị), vì vậy câu lệnh viết sau do không được thay đổi giá trị của biến đếm. 4.Củng cố và luyện tập: Nhắc lại các kiến thức quan trọng cần nắm. 5.Hướng dẫn học sinh chuẩn bị bài ở nhà: Học bài cũ. Ra BTVN: Bài 5a và Bài 6 trang 51 SGK. V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức: Tuần: 6 - Tiết PPCT: 12 Ngày dạy: 10. CẤU TRÚC LẶP (tt) I. MỤC TIÊU: 1.Về kiến thức: Học sinh sau tiết học sẽ: Biết được ý nghĩa của cấu trúc lặp; Biết sử dụng các câu lệnh lặp của Turbo Pascal; 2.Về kỹ năng: Biết diễn đạt đúng các câu lệnh, soạn được chương trình giải các bài toán đơn giản áp dụng các kiểu lặp phù hợp. II. CHUẨN BỊ: 1. Giáo viên: Sách giáo viên. 2. Học sinh: Chuẩn bị bài 10 (tt) III. PHƯƠNG PHÁP: Phương pháp hỏi đáp, nêu vấn đề và giải quyết vấn đề. IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: Câu hỏi: Nêu cấu trúc của dạng lặp tiến? giải thích các thành phần trong cấu trúc? Cho ví dụ dạng lặp tiến for := to do ; (3đ) Trong đó: Biến đếm là biến kiểu nguyên, kí tự. Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm. Giá trị đầu £ giá trị cuối. Nếu Giá trị đầu > giá trị cuối thì vòng lặp không được thực hiện. (3đ) Ví dụ: For i:=1 to 10 do (2đ) Writeln(‘lop 11cb5’); 3. Giảng bài mới: Hoạt động của GV và HS Nội dung GV: Yêu cầu học sinh xác định input và output của bài toán. HS: Lắng nghe, suy nghĩ và thực hiện theo yêu cầu của GV. Tích cực phát biểu xây dựng bài. Xác định bài toán: Input: số nguyên a Output: tổng S GV: Gọi 1 học sinh lên bảng ghi phần khai báo của bài toán. HS: Lắng nghe và làm theo yêu cầu của GV. GV: Hướng dẫn học sinh thuật toán để cài đặt chương trình. GV: Hướng dẫn HS cách mà máy thực hiện chương trình. HS: Lắng nghe, ghi chép. GV: Tiếp tục hướng dẫn học sinh giải quyết bài toán với lặp dạng lùi. GV: Gọi học sinh lên bảng viết chương trình tính tổng 1b với dạng lặp lùi. HS: Suy nghĩ và tích cực phát biểu xây dựng bài GV: Gọi học sinh khác nhận xét bổ sung. GV: Quan sát và bổ sung hoàn chỉnh chương trình. HS: Theo dõi và ghi nhận vào tập. GV: Đưa ra một ví dụ ngắn gọn thể hiện yêu cầu của bài toán giúp học sinh dễ hình dung. Cho M=3, N=5. Ta sẽ được tổng các số chia hết cho 3 hoặc 5 là S=3+5=8. GV: Dẫn dắt vào yêu cầu bài. GV: Gọi 1 học sinh xác định inout và output của bài toán. HS: Lắng nghe, suy nghĩ và thực hiện theo yêu cầu của GV. Tích cực phát biểu xây dựng bài. Xác định bài toán: Input: số nguyên M, N. Output: tổng S. GV: Hướng dẫn học sinh xác định thuật toán. Thuật toán: Nhập M, N; S := 0 Cho biến i chạy từ M đến N kiểm tra nếu i chia hết cho 3 hoặc 5 thì cộng và S. Xuất S. GV: Gọi học sinh lên bảng ghi phần khai báo của bài. HS: Lắng nghe và làm theo yêu cầu của GV. GV: Hướng dẫn HS cách mà máy thực hiện chương trình. HS: Lắng nghe, ghi chép. Ví dụ 1: Hai chương trình cài đặt thuật toán tong_1a và tong_1b. program tong_1a; uses crt; var n, a: integer; s: real; begin clrscr; Write ('nhap vao gia tri a='); Readln (a); s:=1.0/a; for n:=1 to 100 do s:=s+1.0/(a+n); Writeln ('s=',s:5:2); readln end. program tong_1b; uses crt; var n, a: integer; s: real; begin clrscr; Write ('nhap vao gia tri a='); Readln (a); s:=1.0/a; for n:=100 downto 1 do s:=s+1.0/(a+n); Writeln ('s=',s:5:2); readln end. Ví dụ 2: Chương trình thực hiện việc nhập từ bàn phím hai số nguyên 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 program vi_du_2; uses crt; var m, n, i:integer; t: longint; begin clrscr; Writeln ('Nhap so M<N'); Write ('M='); readln (M); Write ('N='); readln (N); T := 0; for i:=M to N do if (i mod 3 = 0) or (i mod 5 = 0) then T:=T+i; Writeln (' ket qua: ',T); readln end. 4.Củng cố và luyện tập: Nhắc lại các kiến thức quan trọng cần nắm. 5.Hướng dẫn học sinh chuẩn bị bài ở nhà: Học bài cũ. Ra BTVN: Viết CT kiểm tra tam giác vuông với độ dài 3 cạnh của tam giác nhập từ bàn phím. Ôn lại kiến thức cũ chuẩn bị cho tiết ôn tập. V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức: Tuần: 7 - Tiết PPCT: 13 Ngày dạy: Bài 10. CẤU TRÚC LẶP (tt) I. MỤC TIÊU: 1.Về kiến thức: Học sinh sau tiết học sẽ: - Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán. - Hiểu 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. - Biết cách vận dụng cấu trúc lặp trong tình huống cụ thể. 2.Về kỹ năng: - 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. II. CHUẨN BỊ: 1. Giáo viên: Sách giáo viên. 2. Học sinh: Chuẩn bị bài 10 (tt). III. PHƯƠNG PHÁP: Phương pháp thuyết trình, kết hợp tạo tình huống có vấn đề IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: trong quá trình giảng bài 3. Giảng bài mới: Hoạt động của GV và HS Nội dung GV đặt vấn đề: Hôm trước chúng ta đã tìm hiểu lặp với số lần biết trước. Hôm nay chúng ta sẽ tìm hiểu tiếp lặp với số lần không biết trước. GV: Nêu cú pháp và vẽ sơ đồ biểu diễn câu lệnh while – do? HS: Trả lời. GV: Xác định Input, Output của bài toán? HS: Trả lời. GV: Giải thích và chạy chương trình với a = 9998. HS: Lắng nghe, ghi chép. GV: Xác định đầu vào, đầu ra của bài toán ở VD2? HS: Trả lời. GV: Yêu cầu HS xây dựng sơ đồ khối. HS: Lên bảng và thực hiện yêu cầu của GV. GV: Yêu cầu HS chạy chương trình với N = 4 và M = 12. HS: Lên bảng và thực hiện yêu cầu của GV. Lặp với số lần chưa biết trước và câu lệnh while - do: Thuật toán giải bài toán 2: Bước 1: S ß 1/a; N ß 0 Bước 2: Nếu 1/(a + N) thì chuyển đến bước 5; Bước 3: N ß N+1; Bước 4: S ß S + 1/(a + N) rồi quay lại bước 2; Bước 5: đưa kết quả S ra màn hình rồi kết thúc. Cú pháp: 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 lôgic (trả về giá trị đúng hoặc sai); Câu lệnh là một câu lệnh đơn hoặc ghép. Ý nghĩa: trong 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à vòng lặp chỉ ngừng lại khi điều kiện không còn đúng nữa. Cách thức hoạt động: Ví dụ 1: SGK/46 Xác định bài toán: IP: số nguyên a. OP: tổng S Thuật toán: Nhập a; S:=1/a; N:=0; Nếu 1/(a+N)>=0.001 thì thực hiện cộng biểu thức đó vào S và tăng N lên 1. Xuất S. Chương trình Program Tinh_S3; Uses crt; Var a, N: integer; S : real; Begin Clrscr; Writeln (‘Nhap so a:’); Readln(a); S:=1/a; N:=0; While not(1/(a+N)<0.0001) do Begin N:=N+1; S:= S+1/(a+N); End; Writeln (‘Tong S la: ‘, S:8:2); Readln; End. Ví dụ 2: Tìm ước chung lớn nhất (UCLN) của hai số nguyên dương M và N. Xác định bài toán: Input: Hai số nguyên dương M và N Output: UCLN(M, N) Ý tưởng: Nếu M=N thì UCLN(M,N)=M. Nếu M>N thì chúng ta sẽ gán M bằng M – N rồi lại xét như trên, ngược lại thì gán N bằng N – M rồi quay lại bước đầu tiên. Thuật toán: Dạng liệt kê: SGK trang 47 Sơ đồ khối: Sai Đúng Đúng Sai Viết chương trình: Program Tim_UCLN; Uses crt; Var M, N: integer; Begin Clrscr; Writeln (‘M, N’); Readln(M,N); While MN do If (M>N) then M:=M-N Else N:=N-M; Writeln (‘UCLN la: ‘, M); Readln; End. 4.Củng cố và luyện tập: Nhắc lại các kiến thức quan trọng cần nắm. 5.Hướng dẫn học sinh chuẩn bị bài ở nhà: Học bài cũ. BTVN : 3, 5b/51 SGK Xem trước bài BT & TH2 V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức:
Tài liệu đính kèm: