Giáo án Tin học Lớp 11 - Chương trình cả năm

docx 108 trang hoanvuK 09/01/2023 1590
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Tin học Lớp 11 - Chương trình cả năm", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docxgiao_an_tin_hoc_lop_11_chuong_trinh_ca_nam.docx

Nội dung text: Giáo án Tin học Lớp 11 - Chương trình cả năm

  1. Tiết 1_PPCT Ngày soạn: Ngày dạy: CHƯƠNG I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Ôn lại kiến thức đã học lớp 10 về thuật toán. - Giới thiệu các khái niệm về chương trình nguồn, chương trình dịch và chương trình đích. - Giới thiệu một số ngôn ngữ lập trình thông dụng. 2. Yêu cầu: - Học sinh nắm được các khái niệm cơ bản về chương trình nguồn, chương trình dịch và chương trình đích. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, đặt vấn đề cho các trường hợp sử dụng thực tế từ đó giúp các em nắm bắt được vấn đề tốt hơn. - Đặt câu hỏi gợi mở giúp học sinh hiểu được vấn đề. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Các khái niệm về chương trình nguồn, chương trình dịch và chương trình đích. - Các khái niệm thông dịch và biên dịch. D. PHƯƠNG TIỆN DẠY HỌC - Sử dụng máy Projector. - Bảng đen, phấn trắng. E. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph ) Thông tin được đưa vào máy tính, máy tính xử lý và cho ta kết quả như mong muốn. Vậy nhờ vào đâu mà máy tính có thể xử lý được các thông tin đó? Để máy tính có thể xử lý thông tin thì nó phải được lập trình. Bài học hôm nay ta sẽ tìm hiểu ngôn ngữ lập trình là gì và nó có mấy loại ?II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của GV gian của HS BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ - Ghi bài học lên bảng. Học sinh NGÔN NGỮ LẬP TRÌNH - Trước khi tìm hiểu về ngôn ngữ theo dỏi, lập trình, ta ôn lại phần thuật toán. ghi chép và 10 1. Thuật toán: - Em nào nhắc lại khái niệm về trả lời. ph Có hai dạng để diễn tả thuật toán: thuật toán ? • Liệt kê. - Có mấy dạng để diễn tả thuật • Dùng sơ đồ khối. toán? VD: so sánh a và b - Em hãy diễn tả thuật toán so sánh 2 số a và b theo hai dạng trên? - Như vậy muốn máy tính hiểu và xử lý thông tin chính xác mà ta
  2. nhập vào thì con người cần phải lập trình. Học sinh - Mọi bài toán có thuật toán đều có theo dỏi, thể giải được trên máy tính điện tử, ghi chép và nó bao gồm các bước nào mà ta đã trả lời. học? - Bước cuối cùng đó là lập trình, lập trình là gì? em nào có thể nêu khái niệm về lập trình? - Như sơ đồ diễn tả thuật toán trên, Học sinh Để giải quyết một bài toán ta thực CTDL là cách lưu trữ giá trị a và theo dỏi, hiện các bước sau: b. Còn câu lệnh để mô tả thuật toán ghi chép và 1) Xác định bài toán. trong Pascal như sau: trả lời. 2) Diễn tả thuật toán. 10 3) Viết chương trình. If a > b then writeln(‘max=’,a) ph 4) Chạy và kiểm tra chương trình. Else writeln(‘max =’,b); Khái niệm lập trình: Lập trình là sử - Chương trình viết bằng ngôn ngữ dụng CTDL và các câu lệnh của pascal trên là ngôn ngữ bậc cao ngôn ngữ lập trình cụ thể để mô tả chính là chương trình nguồn. làm dữ liệu và diễn đạt các thao tác sao để máy tính hiểu và xử lý được thuật toán. thì nó phải thông qua một chương trình dịch để chuyển sang chương 2. Quá trình chuyển đổi chương trình đích là ngôn ngữ máy. ta có trình quá trình chuyển đổi như sau: CT nguồn CT dịch CT đích - Em hãy nêu đặc điểm của CT nguồn? * CT nguồn: - Là CT viết trên ngôn ngữ bậc cao. - Được nhiều người sử dụng làm Học sinh công cụ lập trình. - Em hãy nêu chức năng của CT theo dỏi, - Thực hiện được trên nhiều loại dịch? ghi chép và máy tính khác nhau. trả lời. * CT dịch: - Có chức năng chuyển đổi CT viết 15 bằng ngôn ngữ bậc cao thành - Chương trình dịch có hai loại ph chương trình ngôn ngữ máy. thông dịch và biên dịch. Các em Có hai loại xem VD trong SGK. Thông dịch (Interpreter): Là quá - Thông dịch là gì? trình dịch lặp lại nhiều lần cho đến - Hiện nay có một số ngôn ngữ lập khi kết thúc chương trình. trình thông dụng như: Học sinh Các bước lặp: theo dỏi, 1) Kiểm tra tính đúng đắn của ghi chép và câu lệnh tiếp theo trong chương - Biên dịch là gì? trả lời. trình nguồn. - Nêu đặc điểm của thông dịch và 2) Chuyển đổi câu lệnh đó của biên dịch. thành một hay nhiều câu lệnh * Pascal, Turbo C++ là những tương ứng trong ngôn ngữ máy. ngôn ngữ ứng dụng trong nhà 3) Thực hiện các câu lệnh vừa trường phục vụ học lập trình cơ sở. chuyển đổi được. * C#, C++ lập trình ứng dụng.
  3. Biên dịch (compiler): Là quá trình * ASP, ASP.net, J#, JAVA thiết kế dịch lặp chỉ một lần. Website Các bước lặp: 1) Duyệt, phát hiện lỗi, kiểm tra tính đùng đắn của các câu lệnh Học sinh trong CT nguồn. theo dỏi, 2) Dịch toàn bộ CT nguồn thành ghi chép và một CT đích và có thể lưu trữ để trả lời. sử dụng lại khi cần thiết. Chú ý: + Thông dịch không có chương trình đích để lưu trữ. + Biên dịch dịch có thể lưu trữ để sử dụng về sau. * CT đích: là ngôn ngữ máy. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Khái niệm lập trình. - Khái niệm thông dịch và biên dịch. 2. Bài tập về nhà: 1. Khái niệm lập trình. Khái niệm thông dịch và biên dịch. 2. Những phát biểu nào dưới đây là sai? A. Output của mọi chương trình đều là chương trình trên ngôn ngữ máy. B. Chương trình viết bằng hợp ngữ không phải là Input hay Output của bất cứ chương trình dịch nào. C. Để biên soạn một chương trình trên ngôn ngữ bậc cao có thể sử dụng nhiều hệ soạn thảo văn bản khác nhau. D. Chương trình dịch là thành phần chính của một ngôn ngữ lập trình bậc cao. 3. Phát biểu nào dưới đây là đúng:Chương trình là dãy các lệnh được tổ chức theo các quy tắc được xác định bởi một ngôn ngữ lập trình cụ thể. A. Trong chế độ thông dịch mỗi câu lệnh của chương trình nguồn được dịch thành một câu lệnh của chương trình đích. B. Mọi bài toán đều có chương trình để giải trên máy tính. C. Nếu chương trình nguồn có lỗi cú pháp thì chương trình đích cũng có lỗi cú pháp.
  4. Tiết 2_PPCT Ngày soạn: Ngày dạy: BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Giúp học sinh hiểu được 3 thành phần cơ bản của ngôn ngữ lập trình: Bảng chữ cái, cú pháp và ngữ nghĩa. - Giới thiệu các khái niệm về tên, tên chuẩn, tên dành riêng. 2. Yêu cầu: - Học sinh chú ý học tập, tích cực xây dựng bài học. - Học sinh phải ghi nhớ các quy tắc đặt tên, hằng và biến trong ngôn ngữ lập trình. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - 3 thành phần cơ bản của ngôn ngữ lập trình: bảng chữ cái, cú pháp và ngữ nghĩa. - Các quy tắc đặt tên, khái niệm về biến. D. PHƯƠNG TIỆN DẠY HỌC - Hình ảnh minh họa. - Bảng đen, phấn trắng. E. KIỂM TRA BÀI CŨ ( 5ph ). 1. Nêu khái niệm về thông dịch và biên dịch, hai thành phần này trong chươg trình dịch khác nhau ở chỗ nào? 2. Nêu các bước thực hiện của thông dịch và biên dịch. 3. F. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (3ph) Như các em đã biết, con người dùng hai loại ngôn ngữ đó là ngôn ngữ nói và ngôn ngữ viết. Để máy tính có thể làm việc được và giao tiếp được thì nó cũng cần có ngôn ngữ, đó là ngôn ngữ lập trình. Ngôn ngữ lập trình được soạn thảo trên các môi trường lập trình tương ứng như ngô ngữ Pascal được soạn thảo trên môi trường Turbo Pascal, nhằm giải quyết các bài toán do con người yêu cầu. Vậy ngôn ngữ lập trình có những thành phần nào và nó có quy tắc không. Bài học hôm nay thầy sẽ giới thiệu cho các em hiểu rõ hơn về vấn đề này. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của GV gian của HS
  5. - Ghi bài học lên bảng. BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN - Em nào cho biết ngôn ngữ lập Học sinh NGỮ LẬP TRÌNH trình có mấy thành phần, theo dỏi, 12 những thành phần đó là gì? ghi chép và 1. Các thành phần cơ bản ph trả lời. Có 3 thành phần: - Các ký tự được sử dụng trong • Chữ cái. ngôn ngữ để viết chương trình. • Cú pháp. - Nhìn vào bảng chữ cái các em • Ngữ nghĩa. có thấy khác với chữ cái trong ngôn ngữ tự nhiên không? a) Chữ cái: Là tập các ký tự được dùng để viết chương trình. - Trong ngôn ngữ tự nhiên khi - Ký tự là chữ cái: ‘a’ ’z’,‘A’ ‘Z’ sử dụng bảng chữ cái cũng phải - Số thập phân: 0, 1, , 8, 9. có cú pháp. VD về các thành Học sinh - Các ký tự đặc biệt: #, $, -, +, phần trong câu có chủ ngữ, vị theo dỏi, Chú ý: ngữ ghi chép và - Bảng chữ cái trong các ngôn ngữ khác - Trong ngôn ngữ lập trình trả lời. nhau có thể khác nhau một số ký tự: cũng vậy cũng cần phải có cú VD: Pascal sử dụng dấu ‘’ pháp. C++ sử dụng dấu “”, \, và ! - Em nào cho thầy biết cú pháp trong ngôn ngữ lập trình dùng b) Cú pháp: Là bộ quy tắc để viết chương để làm gì? trình. Học sinh - Cú pháp là bộ quy tắc để viết VD: ten a (không hợp lệ vì có khoảng theo dỏi, chương trình, dựa vào đó mà trắng) ghi chép và người lập trình và chương trình Var x integer; (không hợp lệ vì trả lời. dịch biết được tổ hợp nào của thiếu dấu ‘:’) các ký tự trong bảng chữ cái là c) Ngữ nghĩa: Là xác định ý nghĩa của hợp lệ. Các em xem các VD các tổ hợp ký tự trong chương trình. sau: VD: A và B nhận giá trị nguyên. • ten a X và Y nhận giá trị thực. • Var x integer; Ta sử dụng phép toán trong ngôn ngữ lập - Ngoài cú pháp, trong ngôn trình như sau: ngữ lập trình còn có ngữ nghĩa. A+B: là cộng hai số nguyên - VD sau cho các em hiểu rõ X+Y: là cộng hai số thực. hơn về ngữ nghĩa. Chú ý: - CT sẽ phát hiện lỗi cú pháp trước, lỗi ngữ nghĩa sau. - Khi lỗi cú pháp không còn thì chương - Em nào có thể cho biết khi trình mới thực hiện. chương trình bắt đầu thực hiện - Khi chương trình được thực hiện trên thì chương trình dịch phát hiện dữ liệu cụ thể thì lỗi ngữ nghĩa mới được lỗi cú pháp dễ dàng hơn hay Học sinh phát hiện. khó khăn hơn ngữ nghĩa? theo dỏi, VD: ghi chép và trả lời. 20 2. Một số khái niệm ph a) Tên - Để có thể viết một chương Khái niệm: Tên là một dãy liên tiếp trình không còn lỗi cú pháp ta không quá 127 ký tự bao gồm chữ số, chữ cần chú ý một số quy tắc về cái hoặc dấu gạch dưới. cách đặt tên. Quy tắc đặt tên: - Không có khoảng trắng.
  6. - Không bắt đầu bằng chữ số. - Không chứa ký tự đặc biệt. Học sinh VD: 43c (tên sai) theo dỏi, A_c (tên đúng) ghi chép và Ten_f (tên đúng) trả lời. Hoa# (tên sai) Chú ý: - Tên dùng để quản lý và phân biệt các - Em nào xét xem các VD sau đối tượng trong chương trình. VD nào có cách đặt tên đúng, - Để gợi nhớ nội dung của đối tượng. vì sao? - Tên có 3 loại: * Tên dành riêng (từ khóa): Dùng với ý nghĩa riêng xác định. Không được sử dụng với các mục đích khác nhau. VD(SGK). * Tên chuẩn: Dùng với ý nghĩa nhất định nào đó, có thể sử dụng với các mục đích khác nhau. VD(SGK). Học sinh * Tên do người lập trình tự đặt: Không theo dỏi, được trùng với tên dành riêng. - Ngoài quy định phải đặt tên ghi chép và cho chương trình thì cần phải trả lời. b) Hằng và biến khai báo hằng và biến. * Hằng: Hằng là đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình. Có 3 loại hằng: + Hằng số học: là các hằng số nguyên hay số thực: 3, -3, + Hằng logic: True hoặc False - Các em xem các VD trong + Hằng xâu: Là chuỗi ký tự trong bảng SGK và giải thích các ký hiệu mã ASCII, nằm trong cặp dấu nháy đơn ( E trong hằng số học. ‘’ ) của Pascal. Chú ý: - Hằng dấu ‘’ trong Pascal là “”. VD: ‘‘s’’ có hằng xâu là ‘s’ - Hằng số thực E được biểu diễn bởi số - Em nào có thể lấy một VD để mũ của 10 làm rõ khái niệm về biến. VD: 2.1E-6 = 2 x 10-6. VD: A, B,tong là biến nguyên -2.236E01 = -2.236 x 1001 = -22.36 A:=5; B:=6; - Có thể sử dụng hằng Hexa, cần thêm $ Tong:=A+B; trước giá trị biểu diễn: Tong:=A+B+A; VD: $A116 = 16110 Giá trị của tổng là thay đổi. * Biến: Là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được - Đoạn chú thích trong chương thay đổi trong quá trình thực hiện chương trình nhằm giúp người lập trình trình. nêu các câu dẫn mà không cần phải tuân thủ quy tắc trong c) Chú thích ngôn ngữ lập trình. - Trong Pascal sử dụng cặp dấu {và}hoặc (*và*). - Chú thích không ảnh hưởng đến chương trình nguồn nên chương trình dịch bỏ qua.
  7. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - 3 thành phần cơ bản trong ngôn ngữ lập trình. - Khái niệm và quy tắc đặt tên. Khái niệm và ý nghĩa sử dụng biến. 2. Bài tập về nhà: Các bài tập trong SGK.
  8. Tiết 3_PPCT Ngày soạn: Ngày dạy: CÂU HỎI VÀ BÀI TẬP A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Giúp học sinh ôn lại những kiến thức đã học. 2. Yêu cầu: - Học sinh chú ý học tập, tích cực xây dựng bài học. - Học sinh phải chuẩn bị kiến thức ôn tại nhà. B. PHƯƠNG PHÁP GIẢNG DẠY - Nêu các bài tập, đặt câu hỏi gợi ý để HS nắm vững bài học. C. NỘI DUNG GIẢNG DẠY Câu 1: Trong chế độ biên dịch, một chương trình đã được dịch thông suốt, hệ thống không báo lỗi. Có thể khẳng định rằng ta đã có một chương trình đúng hay chưa? Tại sao? (Chưa đúng, vì sai ngữ nghĩa). Câu 2: Trong chế độ thông dịch, giả sử 2/3 số câu lệnh trong chương trình đã được thực hiện. Có thể khẳng định rằng như vậy chương trình không còn chứa lỗi cú pháp nữa hay không? Tại sao? (Không thể khẳng định được, vì các câu lệnh khác chưa được kiểm tra). Câu 3: Sau khi chương trình đã được dịch thông suốt, không còn lỗi cú pháp, có cần tiếp tục hiệu chỉnh, tức là tìm và sửa lỗi trong chương trình nguồn nữa hay không? (Có: Vì cần KT ngữ nghĩa). Câu 4: Trong một chương trình còn có lỗi cú pháp, thông thường trình biên dịch hay chương trình thông dịch phát hiện ra lỗi nhanh hơn? Vì sao? (Trình biên dịch phát hiện lỗi nhanh hơn vì nó có nhiệm vụ phát hiện lỗi cú pháp đầu tiên). Câu 5: Hãy chọn những biểu diễn hằng trong các biểu diễn dưới đây: A) end B) ‘a078’ C) 78 D) *63 E) 5.63 F) -96 Câu 6: Hãy chọn những biểu diễn tên trong các biểu diễn dưới đây: A) 75 B) abcd C) 78ab D) ab68 E) ‘abc’ F) (xyz) Câu 7: Hãy chọn những đáp án là từ khóa (tên dành riêng) trong Pascal: A) begin B) ‘begin’ C) integer D) var E) real F) end Câu 8: Hãy chọn những đáp án là tên chuẩn trong Pascal: A) real B) uses C) const D) integer E) byte F) sqr Câu 9: Trong dòng thông tin chú thích có thể chứa ký tự ngoài bảng chữ cái của ngôn ngữ hay không và tại sao? (Có thể, vì chương trình biên dịch không kiểm tra lỗi trong chú thích)
  9. Câu 10: Hãy nêu 6 VD (6 tên) mà người dùng đặt sai trong ngôn ngữ lập trình Pascal và chỉ ra lỗi, cách sửa các tên đó sao cho đúng. Câu 11: Bổ sung các bài tập 4, 5, 6 trong SGK Tin học 11 (trang 13).
  10. Tiết 4_PPCT Ngày soạn: Ngày dạy: CHƯƠNG II: CHƯƠNG TRÌNH ĐƠN GIẢN BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Giúp học sinh nắm được cấu trúc chung của một chương trình đơn giản. - Nhận biết được các phần của một chương trình đơn giản. 2. Yêu cầu: - Học sinh chú ý học tập, tích cực xây dựng bài học. - Học sinh nắm được cấu trúc của một chương trình đơn giản. - Biết cách đặt tên, khai báo biến trong chương trình. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Cấu trúc chương trình. - Khai báo tên, thư viện, hằng và biến trong chương trình. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. E. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG Các em đã tìm hiểu về ngôn ngữ lập trình và mỗi ngôn ngữ lập trình đều có cấu trúc để cho người lập trình viết chương trình sao cho đúng quy tắc. Trong ngôn ngữ lập trình Pascal hay C++ đều đưa ra cấu trúc riêng của nó. Ta sẽ tìm hiểu cấu trúc của nó là gì? II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của GV gian của HS BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH - Ghi bài học lên bảng. Học sinh - Trên bảng là một cấu trúc của theo dỏi, 1. Cấu trúc chung 15 một chương trình được viết trên ghi chép và *Ngôn ngữ lập trình có 2 phần: ph ngôn ngữ lập trình Pascal. Em nào trả lời. - Phần khai báo. cho thấy biết phần nào là phần - Phần thân. khai báo, phần nào là phần thân chương trình? - Trên bảng cấu trúc chung của một chương trình đơn giản bao gồm 2 phần, đó là phần khai báo và phần thân chương trình.
  11. - Em nào đã biết cú pháp của từng phần trong phần khai báo này Học sinh không? theo dỏi, - Chúng ta sẽ tìm hiểu rõ về các ghi chép và phần này trong mục tiếp theo. trả lời. - Đối với phần khai báo em nào Học sinh cho thầy ví dụ về khai báo tên theo dỏi, chương trình tính diện tích hình ghi chép và 2. Các thành phần của chương trả lời. trình. chữ nhật? a) Phần khai báo - Trong phần khai báo tên có bắt * Khai báo tên chương trình: buộc không? Cú pháp: - Mỗi ngôn ngữ lập trình đều có Program ; sẵn thư viện cung cấp một số chương trình đã được lập sẵn. Để Chú ý: Tên chương trình do người sử dụng các chương trình đó ta lập trình tự đặt theo cú pháp quy tắc khai báo thư viện chứa nó. của Pascal. - Em nào lấy VD về khai báo thư VD: program dtHCN; viện. * Khai báo thư viện Cú pháp: Uses ; VD: Uses crt; - Em nào có thể nhắc lại khái niệm Học sinh Chú ý: Trong Pascal khi khai báo về hằng? Có mấy loại hằng. theo dỏi, thư viện crt ta dùng lệnh clrscr trong ghi chép và phần thân chương trình để xóa kết 20 - Em hãy lấy 3 VD khai báo cho 3 trả lời. ph quả trước của chương trình trên màn loại hằng khác nhau. hình. - Các em chú ý trong khai báo * Khai báo hằng hằng thường được sử dụng cho Cú pháp: những giá trị xuất hiện nhiều lần Const = ; - Phần khai báo tiếp theo là khai VD: Const n = 100; báo biến. Em nào nhắc lại khái Xau = ‘hang xau’; Học sinh niệm biến là gì? Nó dùng để làm Lg = true; theo dỏi, gì? ghi chép và * Khai báo biến (BÀI HỌC SAU) - Cách khai báo biến bài học sau ta trả lời. sẽ nghiên cứu kỹ hơn. b) Phần thân chương trình - Phần thân chương trình được bắt Cú pháp: đầu bằng từ khóa begin và kết thúc Begin bằng từ khóa end ; - Các em cho biết dấu (;) dùng để End. làm gì?
  12. VD1: đoạn thân chương trình tính tổng hai số a và b - Các em xem VD sau trong SGK Begin tại sao lại không có phần khai báo Writeln(‘nhap a va b’); biến. readln(a,b); Học sinh Tong:=a+b; - GV nhắc lại ý nghĩa của biến theo dỏi, Writeln(‘tong cua a va b bằng cách nêu thêm VD bài trước ghi chép và la:’,tong); đã học viết trong thân chương trả lời. End. trình: VD: A, B,tong là biến nguyên A:=5; B:=6; Tong:=A+B; 3. Ví dụ chương trình đơn giản Tong:=A+B+A; (SGK) Giá trị của tổng là thay đổi. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Cấu trúc chương trình. - Các khai báo tên chương trình, hằng, biến 2. Bài tập về nhà: 1. Nêu cấu trúc chung của một chương trình Pascal? 2. Khi nào thì một chương trình không có phần khai báo? Nêu một ví dụ minh họa. 3. Nếu khai báo thừa biến hoặc hằng; tức là khai báo các biến, hằng không dùng đến trong phần thân chương trình, chương trình dịch có báo sai không, vì sao? (Không, nhưng có lời cảnh báo không nên sử dụng thừa biến)
  13. Tiết 5_PPCT Ngày soạn: Ngày dạy: BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU CHUẨN VÀ KHAI BÁO BIẾN A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Giúp học sinh nắm được một số kiểu dữ liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic. - Xác định được kiểu cần khai báo của dữ liệu đơn giản. 2. Yêu cầu: - Học sinh chú ý học tập, tích cực xây dựng bài học. - Học sinh phải ghi nhớ và hiểu các kiểu dữ liệu và biết cách khai báo biến. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Phát huy tính tích cực chủ động sáng tạo của học sinh. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Các kiểu dữ liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic - Khai báo biến. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. E. KIỂM TRA BÀI CŨ ( 5ph ). 1. Nêu cấu trúc chung của chương trình Pascal. 2. Khi nào thì một chương trình không có phần khai báo? Nêu một ví dụ minh họa. F. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG Em nào cho biết khái niệm về dữ liệu. Như vậy dữ liệu là thông tin đã được mã hóa trong máy tính. Dữ liệu trong mỗi ngôn ngữ lập trình chỉ có một số kiểu chuẩn nhất định mặc dù thông tin rất đa dạng. Mỗi kiểu được đặc trưng bởi tên kiểu (VD biến kiểu nguyên mang giá trị là số nguyên ), miền giá trị, bộ nhớ lưu trữ, các phép toán, các hàm và thủ tục sử dụng chúng. Vậy tên của từng kiểu dữ liệu đó là gì ta sang bài học mới. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của GV gian của HS BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU - Ghi bài học lên bảng. Học sinh CHUẨN VÀ KHAI BÁO BIẾN (tiết 5) theo dỏi, ghi chép và 1. Kiểu nguyên - Trong toán học ta có các tập số 5 ph gì? trả lời. - Kiểu nguyên tương ứng với tập số nào? - Các kiểu nguyên được lưu trữ và kết quả tính toán là số đúng. Giá trị của nó là phần nguyên
  14. không có số dư hoặc số thập phân. - Tuy nhiên tập số nguyên là vô hạn và có thứ tự, đếm được Học sinh 5 ph nhưng trong máy tính kiểu theo dỏi, nguyên là hữu hạn, có thứ tự. ghi chép và Bảng trên là bảng kiểu nguyên. trả lời. - Kiểu số thực được lưu trữ và kết quả tính toán chỉ gần đúng Chú ý: Kiểu Byte và Word chỉ biểu với sai số không đáng kể. Miền diễn cho số nguyên dương. giá trị được mở rông hơn so với kiểu số nguyên, số thực trong 2. Kiểu thực máy tính cũng là rời rạc và hữu Học sinh hạn. theo dỏi, - Em nào cho thầy biết nếu phép ghi chép và toán sử dụng kiểu số nguyên và trả lời. kiểu số thực thì kết quả cho ra 5 ph kiểu gì? (Kiểu số thực). - Kiểu kí tự có tập giá trị là các kí tự trong bảng mã ASCII, được dùng khi thông tin là các kí tự, xâu (string). Vì vậy hầu hết các ngôn ngữ lập trình đều có kiểu kí 3. Kiểu kí tự tự để làm việc với văn bản. - Kiểu kí tự có phải là kiểu có thứ tự, đếm được không ? Dựa vào đâu để thực hiện việc so sánh các kí tự? Chú ý: - Việc so sánh các kí tự được -Việc so sánh các kí tự được thực hiện thực hiện bằng cách so sánh các bằng cách so sánh các mã ASCII mã ASCII của chúng. Học sinh tương ứng. theo dỏi, VD: - Kiểu logic trong Pascal chỉ có ghi chép và - A có mã ASCII là 65, a = 97 2 giá trị là True (đúng) và False trả lời. - B có mã ASCII là 66, b = 98 (sai), được dùng khi kiểm tra => A < B, a < b. một điều kiện hoặc tìm giá trị của một biểu thức logic. 4. Kiểu logic - Theo em kiểu logic có phải là kiểu có thứ tự đếm được không? (Là kiểu có thứ tự đếm được). - Một số ngôn ngữ lập trình Chú ý: không dùng kiểu logic như C++, Học sinh - Kiểu Logic là kiểu có thứ tự đếm thay vào đó là các giá trị 0 theo dỏi, được. (false), khác 0 (true). ghi chép và - Trong quá trình lập trình, người lập trả lời. trình cần tìm hiểu đặc trưng của các - Em nào nhắc lại khái niệm về 5 ph kiểu dữ liệu chuẩn được xác định bởi biến. bộ dịch và sử dụng để khai báo biến. - Ý nghĩa sử dụng biến để làm gì? 5. Khai báo biến
  15. Cú pháp: - Trong khi khai báo biến, lưu ý Var : ; về những biến là hằng số, ta nên * Trong đó: khai báo biến hằng số bằng hàm - DS biến: là một hoặc nhiều tên biến, const . mỗi biến cách nhau bởi dấu phẩy (,). - Kiểu dữ liệu là 1 trong các kiểu VD: Khai báo biến cho bài toán chuẩn (real, integer, ) hoặc kiểu do tính diện tích hình thang có chiều người dùng tự định nghĩa (chương cao bằng 5dv: IV). Const cao = 5; - Sau từ khóa var có thể khai báo Var daynho,daylon: real; nhiều danh sách biến khác nhau. VD1: - Khai báo biến bài toán tính - Tên biến phải gợi nhớ để người diện tích hình chữ nhật lấy giá trị vào lập trình và người xem chương ra giá trị nguyên: trình biết ý nghĩa sử dụng của Var a,b: integer; biến đó. Học sinh dt: integer; - Khi khai báo biến phải chú ý theo dỏi, đến phạm vị giá trị, VD biến khai ghi chép và VD2: - Khai báo biến cho bài toán báo để lưu trữ số học sinh trong trả lời. nhập 1 kí tự từ bàn phím: lớp là kiểu byte, nhưng biến khai Var Kitu: char; báo để lưu trữ học sinh trong trường là kiểu word. Chú ý: - Tên biến phải gợi nhớ. VD: khai báo biến mảng - Tên biến không quá dài, quá ngắn. Var mang:array[1 10] of - Khi khai báo biến phải chú ý đến integer; phạm vi giá trị. Biến mang chứa 10 giá trị tại VD2: Trong VD1 nếu khai báo: một thời điểm. Var a,b: real; dt: integer; => Là sai - Các biến đơn chỉ chứa một giá trị tại một thời điểm. - Các biến của kiểu dữ liệu có cấu trúc có thể chứa hơn một giá trị tại một thời điểm như biến mảng. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) a) Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Kiểu số nguyên, số thực, kí tự, logic. - Cách khai báo biến: Var : ; 2. Kiểm tra 15ph:(15 ph) Câu 1: Hãy chọn những biểu diễn hằng trong các biểu diễn dưới đây: A) begin B) ‘12ab’ C) -102 D) 15- E) A92 F) ‘var’ Câu 2: Hãy chọn những biểu diễn tên trong các biểu diễn dưới đây: A) bien B) 92A C) pi D) A92 E) ‘abc’ F) (xyz) Câu 3: Nêu các cách khai báo biến cho bài toán tính giá trị biểu thức sau:
  16. x y a) S z x* y z b) S sin x y (trong đó hàm sin() x y là một biểu thức nên không khai báo).
  17. Tiết 6_PPCT Ngày soạn: Ngày dạy: BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh biết các khái niệm: Phép toán, biểu thức số học, hàm số học chuẩn, biểu thức quan hệ. 2. Yêu cầu: - Học sinh hiểu lệnh gán. - Viết được lệnh gán. - Viết được các biểu thức số học và logic với các phép toán thông dụng. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Phát huy tính tích cực chủ động sáng tạo của học sinh. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Các phép toán. - Các hàm số học chuẩn. - Biểu thức quan hệ. - Biểu thức logic. - Câu lệnh gán. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. E. KIỂM TRA BÀI CŨ ( 5ph ). 1. Nêu các kiểu dữ liệu đã học và ý nghĩa sử dụng của mỗi kiểu dữ liệu đó. 2. Khai báo biến cho bài toán tính diện tích hình tròn. 3. Sửa lỗi cho khai báo trong một bài toán sau: Var x_y:real 3x: real; E = 2.34; Đáp án: 2. const pi=3.14; var r, dt:real; 3. Const e = 2.34;(nên khai báo hằng số) Var x_y:real; (thiếu dấu ;) x: real; (tên đặt sai quy tắc) F. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph ) Các em đã biết các kiểu dữ liệu, cách khai báo biến. Tuy nhiên đối với dữ liệu số học thì trong Pascal có xử lý giống như các phép toán thông thường không? Như cộng, trừ nhân chia. Đặc biệt
  18. là phép chia, thì cách thực hiện các phép chia trên mỗi kiểu dữ liệu có giống nhau không? VD như phép chia số nguyên, phép chia số thực, Bài học hôm nay ta sẽ tìm hiểu kỹ về những vấn đề trên. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của GV gian của HS BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU - Ghi bài học lên bảng. LỆNH GÁN (tiết 6) - Để mô tả thuật toán, mỗi ngôn Học sinh 1. Phép toán ngữ lập trình đều xác định và sử 5 ph dụng một số khái niệm cơ bản: theo dỏi, Phép toán, biểu thức, gán giá ghi chép trị bài học. - Đối với phép toán toán học và phép toán trong Pascal, các em xem trên bảng sẽ thấy có nhiều kí hiệu tương ứng là khác nhau. VD phép chia là dấu (/). Chú ý: 5 ph - Kết quả của phép toán quan hệ cho - Với ý nghĩa sử dụng các phép giá trị logic. toán em nào có thể đưa ra đáp án Học sinh - Một trong những ứng dụng của phép cho các phép toán sau: theo dỏi, toán logic là để tạo ra các biểu thức 1. 7 div 4 = ?; ghi chép và phức tạp từ các quan hệ đơn giản. 2. 7 mod 4 = ?; trả lời. VD: 3. Not(true) = ?; 1. 7 div 4 = 1; 4. True and False = ?; 2. 7 mod 4 = 3; 5. True or False = ?; 3. Not(true) = false; 5 ph 4. True and False = False; 5. True or False = True - Trong lập trình biểu thức số Học sinh học là một biến kiểu số, hoặc theo dỏi, 2. Biểu thức số học một hằng số, hoặc các biến kiểu ghi chép và * VD về biểu thức số học: số và các hằng số liên kết với trả lời. nhau bởi một số hữu hạn phép toán số học. - Em nào có thể điền kết quả biểu thức TP trong các biểu thức toán học tương ứng? - Các em chú ý về mức ưu tiên của các phép toán như sau: (bảng hình bên) * Mức ưu tiên các phép toán: 5 ph Chú ý:
  19. - Các phép toán trên được thực hiện trong dấu ngoặc tròn ( ) đầu tiên. - Phép toán IN để xác định biểu thức có trong một tập hợp không. VD: - Đối với các phép toán sẽ là 4 IN [1 14] => kq là True không đủ quy tắc để biểu diễn các phép toán học. Do đó trong Học sinh 15 3. Hàm số học chuẩn TP đưa ra các hàm số học chuẩn theo dỏi, ph *Để lập trình được thuận tiện, các để thực hiện các phép toán đó. ghi chép và ngôn ngữ lập trình đều có thư viện trả lời. chứa một số chương trình tính giá trị - Ta có bảng các hàm chuẩn sau: những hàm toán học thường dung. + Các hàm kiểu thực hoặc Các chương trình như vậy gọi là các nguyên: hàm chuẩn. - SQR(x) Cho giá trị là x2. * Một số hàm chuẩn thường dung: - SQRT(x) Cho giá trị là x + Các hàm kiểu thực hoặc nguyên: (x>=0). - Round(x) Cho giá trị là số nguyên gần x nhất. - ABS(x) Cho giá trị là x Học sinh - Trunc(x) Cho giá trị là phần Đối với các biểu thức x kết theo dỏi, nguyên của x. quả có thể là kiểu thực ghi chép và + Các hàm kiểu thực: trả lời. - SQR(x) Cho giá trị là x2. + Các hàm kiểu thực: - SQRT(x) Cho giá trị là x - LN(x) Cho giá trị là lnx (x>0). (x>=0). - EXP(x) Cho giá trị là ex. - ABS(x) Cho giá trị là x - SIN(x) Cho giá trị là sinx. - LN(x) Cho giá trị là lnx (x>0). - COS(x) Cho giá trị là cosx. - EXP(x) Cho giá trị là ex. - SIN(x) Cho giá trị là sinx. - Dựa vào các hàm đã cho, em - COS(x) Cho giá trị là cosx. hãy biểu diễn các biểu thức sau VD: Biểu diễn biểu thức toán học sang dạng của TP: bằng TP sau: 1. x2 + x => ? 1. x2 + x => sqr(x) + sqrt(x). 2. sin(3x3) + cosx =>? 2. sin(3x3) + cosx Học sinh =>sin(3*x*sqr(x))+cos(x). - Ngoài các hàm số học chuẩn, theo dỏi, + Các hàm khác: để sử dụng các phép toán quan ghi chép và - INC(k,i): Tăng giá trị k lên i lần. hệ TP cung cấp biểu thức quan trả lời. - DEC(k,i): Giảm giá trị k lên i lần. hệ theo cú pháp sau: 4. Biểu thức quan hệ - Biểu thức quan hệ được thực Cú pháp: hiện theo trình tự: Tính giá trị biểu thức trước khi thực hiện Học sinh * Trong đó: Biểu thức 1 và Biểu phép toán quan hệ theo mức ưu theo dỏi, thức 2 có cùng kiểu dữ liệu xâu hoặc tiên của phép toán. ghi chép và cùng kiểu số học. trả lời. VD: - Kết quả của biểu thức quan hệ i+3 > j+1; là giá trị logic true hoặc false. x >= x+1; VD: điều kiện để điểm M(x,y) thuộc hình tròn tâm I(a,b), bán 5. Biểu thức logic kính R là:
  20. * Biểu thức logic đơn giản là biến logic hoặc hằng logic. * Giá trị của biểu thức logic là true hoặc false VD: Tập giá trị của x: 1 ≤ x ≤ 6 → (1 0) 6. Câu lệnh gán Cú pháp: := ; - Em thử nhận xét xem cách gán VD: giá trị cho biến sau đã hợp lệ x := 5; (x=5) chưa? y := 4; (y=4) * Khai báo: x := x+y; (x=9) Var a: char; - Một số phương pháp biểu diễn thông x,y : real; thường: * Gán: Học sinh Ý nghĩa Biểu diễn trong TP a := x+y; theo dỏi, Cộng thêm S := S + i ghi chép và Trừ đi S := S - i trả lời. Nhân thêm S := S * i Chia ho S := S / i Chú ý: - Biểu thức bên phải cần được xác định giá trị trước khi gán. - Kiểu của biểu thức bên phải dấu gán phải phù hợp với kiểu của biến gán. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Các phép toán. - Các hàm số học chuẩn. - Biểu thức quan hệ. - Biểu thức logic. - Câu lệnh gán. 2. Bài tập về nhà: 1. Viết các biểu thức sau trong TP a) S = (x3+ sin(x2y))2 b) S tan(3x) cot(x ) c) S b2 4ac d) 3 x y2 3xy S x2 e) S sin3 (x cos x) sin3 (x cos x) f) S tan(3x) cot(x ) 2a 3 2. Viết biểu thức logic cho bài toán: điều kiện để x là số không âm và là số lẻ? Gợi ý: (x >0) and (3 mod 2 6.5 hoặc DV > 6.5 và DTB > 6.5. Gợi ý: ((DT > 6.5 ) or (DV > 6.5 )) and (DTB > 6.5)
  21. Tiết 7_PPCT Ngày soạn: Ngày dạy: BÀI 7-8: CÁC THỦ TỤC VÀO/RA ĐƠN GIẢN SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh biết các lệnh vào/ra đơn giản để nhập dữ liệu từ bàn phím hoặc đưa dữ liệu ra màn hình. - Viết được một số lệnh vào/ra đơn giản. - Biết cách soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình. 2. Yêu cầu: - Học sinh hiểu các thủ tục vào/ra. - Biết các thao tác trực tiếp trên công cụ lập trình Pascal. - Biết xử lý các lỗi khi lập trình. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Phát huy tính tích cực chủ động sáng tạo của học sinh. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Các thủ tục vào/ra (Read/Readln và Write/Writeln). - Các thao tác xử lý lỗi chương trình. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Máy chiếu đa năng. E. KIỂM TRA BÀI CŨ ( 5ph ). Các bài tập đã giao về nhà. E. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph ) Các em đã được tìm hiểu về các kiểu của biến, cách khai báo biến, các phương pháp biến đổi từ công thức toán học sang Pascal. Em nào có thể cho thầy biết làm thế nào để có thể xử lý các thông tin đó trên máy tính? (Thông qua ngôn ngữ lập trình Pascal để sử dụng các thủ tục và các hàm nhằm thực hiện xử lý các thông tin đó). Bài học hôm nay ta sẽ tìm hiểu về môi trường lập trình Pascal cũng như các thủ tục hay hàm đơn giản. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 7-8: CÁC THỦ TỤC VÀO/RA, SOẠN - Ghi bài học lên bảng. THẢO CHƯƠNG TRÌNH (tiết 8) - VD: Bài toán tính diện tích Học sinh 1. Nhập dữ liệu từ bàn phím hình tròn: theo dỏi, 15 * Thủ tục nhập: program dt_hinhtron; ghi chép ph Cú pháp: uses crt; const pi=3.14; bài học. Read( );
  22. hoặc var r,s:real; Readln( ); begin clrscr; write('nhap ban kinh ');readln(r); s:=pi*sqr(r); * Trong đó: writeln('dien tich hinh tron co ban - Danh sách biến vào có thể có 1 hoặc kinh ',r:5:2,' la',s:6:2); nhiều biến, nếu nhiều biến thì mỗi readln biến cách nhau bởi dấu phẩy (,). end. Học sinh VD: -VD trên là một chương trình theo dỏi, - Read(r) hoặc Readln(r); Nhập 1 giá đơn giản. Input của chương trình ghi chép và trị cho bán kính r. trên là gì? Để đưa thông tin vào trả lời. - Read(r1, r2, ) hoặc Readln(r1, thì thông qua câu lệnh nào? (Khi r2, ); Nhập nhiều giá trị cho bán kính thực hiện chương trình người ta r. nhập giá trị bán kính thông qua câu lệnh nhập Read/Readln) - Mỗi lần nhập giá trị cho bán 2. Đưa dữ liệu ra màn hình kính thì giá trị đó được gán cho Học sinh * Thủ tục xuất: biến r. theo dỏi, Cú pháp: - Khi nhập nhiều giá trị cho biến ghi chép và Write( ); thì xong mỗi thao tác nhập sử trả lời. hoặc dụng phím Enter để nhập giá trị Writeln( ); tiếp theo. - Chú ý khi nhập giá trị của biến thì phải tương ứng với kiểu của 20 * Trong đó: - Write: Khi thực hiện chương trình biến. ph Học sinh con trỏ nằm trên dòng hiện tại. - Em nào có thể sử dụng máy theo dỏi, - Writeln: Con trỏ tự động xuống dòng tính đã có sẵn chương trình nhập ghi chép và tiếp theo. giá trị cho biến r ? trả lời. - Danh sách kết quả ra: Có thể là tên biến đơn, biểu thức, xâu ký tự hoặc - Để đưa câu dẫn 'nhap ban kinh ' hằng số. và kết quả tính diện tích ra màn - Đối với biến đơn, biểu thức, hằng số hình thì người ta sử dụng câu thì không có dấu nháy đơn (‘’). lệnh nào ? (câu lệnh xuất Write/ VD: Writeln). - write('nhap ban kinh '); in ra : nhap ban - Em nào cho thầy biết khi thực kinh hiện chương trình thì thủ tục Học sinh - writeln('dien tich hinh tron co ban kinh Write và Writeln khác nhau theo dỏi, ',r:5:2,' la',s:6:2); In ra: dien tich hinh tron điểm nào? ghi chép và co ban kinh 2.00 la 12.56. trả lời. - Em nào cho thầy biết khi thực Chú ý: hiện chương trình ở VD trên, thủ - Các thủ tục Readln hoặc Writeln có tục write('nhap ban kinh '); sẽ in ra thể không có tham số. như thế nào? VD: Readln; (Tạm dừng xem kq - Còn đối với câu lệnh chương trình). Writeln; (Tự động đưa writeln('dien tich hinh tron co ban con trỏ xuống dòng). kinh ',r:5:2,' la',s:6:2); sẽ in ra như - Quy cách ra: thế nào nếu ta nhập bán kính : : bằng 2? hoặc : - Em nào cho biết hiên tượng gì sẽ xảy ra nếu câu lệnh in kết quả
  23. 3. Soạn thảo, dịch, thực hiện và hiệu được thay đổi như sau: chỉnh chương trình writeln('dien tich hinh tron co ban Học sinh Thanh bảng kinh ',r ,' la', s); ? In kết quả là theo dỏi, chọn ghi chép và Tên tệp CT trả lời. Vì vậy Pascal đưa quy cách của kết quả ra. Học sinh VD: writeln('dien tich hinh tron co theo dỏi, ban kinh ',r:5:2,' la',s:6:2); 5 ph ghi chép và - Em có nhận xét gì về cách viết trả lời. trên: ( r được dành 5 vị trí trong Cột đó có 2 vị trí dành cho chữ số Dòng thập phân, 1 vị trí cho phần nguyên và 1 vị trí cho dấu (.), *Thao tác thực hiện: còn diện tích có 6 vị trí, 2 vị trí - Soạn thảo: Gõ nội dung chương cho phần thập phân và 3 vị trí trình. cho phần nguyên, 1 vị trí cho dấu - Lưu chương trình: Nhấp phím F2. (.)) - Mở CT có sẵn trong TP: Nhấn F3 - Để có thể thực hiện chương - Kiểm tra chương trình: F9. trình được viết bằng ngôn ngữ - Biên dịch chương trình: Alt+F9. lập trình thì ta cần soạn thảo - Chạy chương trình: Ctrl+F9. chương trình trên môi trường - Đóng cửa sổ chương trình: Alt+F3. ngôn ngữ lập trình cụ thể. Ngôn - Thoát khỏi Pascal: Alt+X. ngữ lập trình Pascal là một ví dụ và ta sẽ tìm hiểu về môi trường lập trình này Học sinh theo dỏi, ghi chép và trả lời. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Thủ tục nhập dữ liệu: Read/Readln. - Thủ tục xuất dữ liệu: Write/Writeln. - Quy cách định dạng số. 2. Bài tập về nhà: 1. Chuẩn bị bài tập và thực hành số 1. 2. Viết các chương trình tính diện tích hình thang, tam giác biết cạnh đáy và chiều cao. 3. Bài thực hành 3, 4, 5 trang 35 SGK.
  24. Tiết 8,9_PPCT Ngày soạn: Ngày dạy: BÀI TẬP VÀ THỰC HÀNH SỐ 1 A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh bước đầu lập trình được các chương trình đơn giản. - Thao tác thành thạo trên môi trường Pascal. 2. Yêu cầu: - Học chuẩn bị bài tập ở nhà của tiết học trước. - Học sinh chú ý làm bài tập và thực hành. B. PHƯƠNG PHÁP GIẢNG DẠY - Gợi ý phương pháp lập trình đơn giản. - Hướng dẫn học sinh biết cách hiệu chỉnh các lỗi sai khi thực hiện chương trình. C. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Phòng máy. E. NỘI DUNG GIẢNG DẠY Bài 1: Em hãy nêu lại các thao tác lập trình trên môi trường ngôn ngữ lập trình Pascal. Gợi ý: - Mở môi trường lập trình Pascal. - Soạn thảo chương trình. - Nhấp phím F9 để kiểm tra chương trình. - Nhấp tổ hợp phím Ctrl+F9 để chạy chương trình. - Nhập giá trị kiểm thử. Bài 2: Soạn thảo và thực hiện chạy chương trình giải phương trình bậc 2 theo hướng dẫn trong SGK trang 34. Bài 3: Viết chương trình nhập số a (a>0) rồi tính và đưa ra diện tích phần gạch chéo trong hình bên, kết quả làm tròn đến 4 chữ số hàng thập phân. Gợi ý: - Xác định Input và Output - Viết chương trình. - Nhập thử các bộ số khác nhau. - write('dien tich phan con lai la ',sqr(a)*pi/2:10:2); Bài 4: Lập trình tính và đưa ra màn hình vận tốc v của một vật rơi từ độ cao h, biết rằng v 2gh , trong đó g là gia tốc rơi tự do và g=9,8m/s2. Độ cao h(m) được nhập vào từ bàn phím. Gợi ý: - Xác định Input và Output - Viết chương trình. - Nhập thử các bộ số khác nhau. v := sqrt(2*g*h); writeln(‘van toc cua vat khi cham dat la: v = ’, v:8:2,’m/s’); Bài 5: Hãy chỉ ra 4 lỗi (ba lỗi dịch, một lỗi thực hiện) trong chương trình Pascal sau: Var x,y,z = integer; {dong 1} Begin {dong 2} X := 200; {dong 3}
  25. Y := 250 {dong 4} Z = X*Y; {dong 5} Write(z); {dong 6} Readln {dong 7} End. {dong 8} Trả lời: - Lỗi 1: Dấu (=) ở dòng 1 phải đổi thành dấu (:). - Lỗi 2: Thiếu dấu (;) ở dòng 4. - Lỗi 3: Ký hiệu sai lệnh gán ở dòng 5. - Biểu thức X*Y không được xác định đúng vì khai báo Z có kiểu integer nên Z không thể nhận giá trị 200*250 = 500000 Bài 6: Viết chương trình tính giá trị của biểu thức 2x4 - 3x3 + 4x2 - 5x + 6. Gợi ý: - Xác định Input và Output - Viết chương trình. - Nhập thử các bộ số khác nhau. - Y := x*(x*(x*(2*x - 3) + 4) -5) + 6; Bài 7: Viết chương trình tính giá trị của biểu thức y x B (1 z) z 1 a 1 x3 Gợi ý: - Xác định Input và Output - Viết chương trình. - Nhập thử các bộ số khác nhau. - A = (1+z) * ((x+y/z)/(a – 1/ (1+sqr(x)*x))); Bài 8: Viết chương trình nhập vào 2 số a, b. Sau đó hoán đổi giá trị của 2 số đó: Gợi ý: Cho phép dùng biến trung gian. Dùng biến trung gian: tam Không dùng biến trung gian: tam:=a; a := a + b; a:=b; b := a - b; b:=tam; a := a - b; Bài 9: Dùng các phép toán DIV và MOD để đổi thời gian từ số giây ra giờ và phút và giây với số giây nhập từ bàn phím: Program GPGiay; Var h,p,s: Integer; Begin Write('Nhap vao thoi gian s = '); Readln(s); write(s:6,'giay duoc doi thanh: '); P := s div 60; S := s mod 60; H := p div 60; P := p mod 60; Writeln(h:4,'gio',p:4,'phut',s:4,'giay'); Readln; End. Bài 10: Bài tập 8a SGK, trang 36 (câu b tương tự)
  26. Gợi ý: Cách 1: (y có a*k đồng. - Có m con dưới 3 tháng trong đó bao gồm cả k con dưới 1 tháng => có b*(m-k) đồng. - Có tất cả n con trong trại nên có c*(n-m) đồng. => Vậy số tiền mà nhà nước phải hỗ trợ là: a*k + b*(m-k) + c*(n-m) đồng. Bài 16: Bài tập 2.33 Sách bài tập, trang 15. Lập trình nhập từ bàn phím 2 số thực a và b, tính và đưa ra màn hình: a) Trung bình cộng các bình phương của 2 số đó. b) Trung bình cộng các giá trị tuyệt đối của 2 số đó. Bài 17: Bài tập 2.39 Sách bài tập, trang 17. Cho số nguyên N có 4 chữ số. Hãy dùng các phép DIV và MOD tính tổng các chữ số của N. Dữ liệu nhập vào từ bàn phím. Gợi ý: tong := 0; Tong := n div 1000; Kq := n mod 1000; Tong := tong + (kq div 100); Kq := kq mod 100; Tong := tong + (kq div 10);
  27. Kq := kq mod 10; Tong := tong + kq;
  28. Tiết 10_PPCT Ngày soạn: Ngày dạy: BÀI TẬP VÀ KIỂM TRA 15ph A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: Học sinh ôn lại các kiến thức đã học về các nội dung chính sau: 1. Cấu trúc chung của một chương trình. 2. Cách khai báo biến. 3. Các hàm chuẩn và câu lệnh gán. Kiểm tra 15ph nhằm đánh giá tình hình học tập của học sinh. 2. Yêu cầu: - Học sinh đã ôn lý thuyết và làm một số bài tập có nội dung liên quan tại nhà. - Tích cực tham gia làm bài tập. - Học sinh trật tự khi làm bài kiểm tra. B. PHƯƠNG PHÁP GIẢNG DẠY - Hướng dẫn học sinh trả lời các câu hỏi trắc nghiệm. Sau mỗi lựa chọn đúng hoặc sai đều có câu hỏi vì sao. - Một số câu hỏi tự luận để học sinh tư duy trong quá trình làm bài. C. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. F. NỘI DUNG GIẢNG DẠY Câu 1: Trong biểu thức bất kỳ, ngôn ngữ lập trình dùng những loại nào để xác định trình tự thực hiện các phép tính? Trả lời: Chỉ dùng một loại đó là dấu ngoặc tròn (). Câu 2: Chương trình dịch Pascal sẽ cấp phát bao nhiêu byte bộ nhớ cho các biến trong khai báo sau: var a, b, c, d: integer; x, y, z: real; w: word; Trả lời: var a, b, c, d: integer; (2 byte) x, y, z: real; (6 byte) w: word; (2 byte) Câu 3: Chỉ ra các lỗi trong khai báo sau: Var i, m, n: real; Pi = 3.14; 5x, y2: integer; Trả lời: Var i, m, n: real; Pi = 3.14; (Lỗi do vị trí khai báo sai ) 5x, y2: integer; (Lỗi do đặt tên sai) Câu 4: Em có nhận xét gì về các khai báo sau? Hãy viết lại các khai báo cho hợp lý hơn.
  29. Var p: real; N: integer; A: real; K: integer; B1: real; C: integer; Trả lời: Các khai báo trên là quá dài, nên gộp các biến cùng kiểu trong khai báo. Var p, A, B1: real; N, K, C: integer; Câu 5: Viết lại các biểu thức sau từ dạng toán học sang dạng biểu diễn tương ứng trong Pascal: 3 y a sinx x y a) b) c) 3 2 x x 1 a cos x 2 y 2 x y4 sin x 3 d) 3 e) x y x 1 f) cos x 1 2x2 4x Trả lời: a) abs(x+sqr(sqr(y)))/sqrt(2*sqr(x)-4*x) b) (a+sinx)/sqrt(sqr(x)+cos(x)) c) (2*exp(x+y)+x-y*sqr(y))/(sqr(x)+sqr(y)) d) sqr(sinx)/cosx*sqr(cos(x)) e) sqrt(x+y)+abs(x*sqr(x)-1) f) (abs(x+sqr(y)*sqr(y)))/(sqrt(2*sqr(x)-4*y)) Đề kiểm tra 15ph Câu 1: Viết chương trình giải các bài toán sau: 2ex y x y3 2 a/ A = b/ B = e | a sin ( x) x | x2 y2 Câu 2: Mỗi học sinh hãy nhập vào 2 số nguyên dương bất kỳ từ bàn phím, nêu các bước thực hiện của chương trình để đưa ra kết quả đúng. Lưu ý: giá trị nhập cho a và b không được trùng nhau.
  30. Tiết 11_PPCT Ngày soạn: Ngày dạy: BÀI 9: CẤU TRÚC RẼ NHÁNH A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh hiểu nhu cầu của cấu trúc rẽ nhánh trong biểu diễn thuật toán. - Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ). - Hiểu câu lệnh ghép. 2. Yêu cầu: - Học sinh chú ý học tập. - Sử dụng được cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Cấu trúc câu lệnh rẽ nhánh dạng thiếu và dạng đủ. - Cấu trúc, ý nghĩa sử dụng câu lệnh ghép. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Máy chiếu đa năng. E. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph ) Trong cuộc sống các em thường gặp những tình huống lúc đúng, lúc sai. Có nhiều vấn đề mà cách giải quyết lại theo các hướng khác nhau. Đó là những trường hợp phân nhánh. Vậy thì các thông tin khi đưa vào máy tính có như vậy không? Nếu có thì máy tính xử lý thế nào? VD như trường hợp giải bài toán nghiệm của phương trình bậc 2 biện luận theo delta. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 9: CẤU TRÚC RẼ NHÁNH (tiết 11-12) - Ghi bài học lên bảng. 1. Rẽ nhánh - Mời một em đọc VD trong SGK về cuộc hẹn giữa Châu và Học sinh VD1: theo dỏi, 15 * Châu hẹn Ngọc: Chiều mai nếu trời Ngọc. ph - VD mà bạn vừa đọc là một VD ghi chép không mưa thì Châu sẽ đến nhà Ngọc. bài học. * Ngọc nói với Châu: Chiều mai nếu thực tế các em thường gặp. Ở trời không mưa thì Ngọc sẽ đến nhà đây có 2 tình huống rõ rệt xảy ra: Châu, nếu trời mưa thì sẽ gọi điện cho * Châu hẹn Ngọc: Chiều mai nếu Châu để trao đổi. trời không mưa thì Châu sẽ đến nhà Ngọc. Diễn đạt dạng thiếu:
  31. Nếu thì * Ngọc nói với Châu: Chiều mai Diễn đạt dạng đầy đủ: nếu trời không mưa thì Ngọc sẽ Nếu thì , nếu không thì đến nhà Châu, nếu trời mưa thì Học sinh sẽ gọi điện cho Châu để trao đổi. theo dỏi, VD2: Giải phương trình bậc 2: - Như vậy 2 tình huống xảy ra ghi chép và ax2 + bx + c = 0 (a ≠ 0) cho ta 2 khả năng diễn đạt, tình trả lời. * Giải thuật sơ đồ khối huống thứ 2 diễn đạt đầy đủ hơn. - Vậy trong toán học có các khả năng xảy ra như vậy không? Câu trả lời là có. Ta xem VD giải phương trình bậc 2: ax2 + bx + c = 0 (a ≠ 0). Bạn nào Học sinh có thể viết thuật toán trên theo sơ theo dỏi, đồ khối hoặc liệt kê. ghi chép và - Trên bảng các em thấy rõ sơ đồ trả lời. thể hiện cấu trúc rẽ nhánh trường hợp có nghiệm và vô nghiệm. 2. Câu lệnh If – then - Vậy em nào biết để thực hiện a) Dạng thiếu: bài toán rẽ nhánh trên ngôn ngữ 20 Cú pháp: lập trình Pascal cho phép người Học sinh ph If then ; lập trình sử dụng câu lệnh nào ? theo dỏi, Đó là câu lệnh If – then. ghi chép và - Tương ứng với 2 dạng thiếu và trả lời. đủ ở trên, Pascal có hai dạng câu lệnh If – then như sau: a) Dạng thiếu: If then ; b) Dạng đủ: b) Dạng đủ: If then Cú pháp: else ; If then - Dang thiếu chỉ thực hiện 1 câu else ; lệnh nếu đúng, sai thì kết thúc, Còn dạng đủ thực hiện theo 2 Học sinh nhánh, nếu đúng thì thực hiện theo dỏi, câu lệnh 1, sai thì thực hiện câu ghi chép và lệnh 2. trả lời. * Trong đó: - DK: điều kiện là biểu thức logic. - Câu lệnh: Là câu lệnh trong Pascal. - Trước Else không có dấu (;). - Các em xem các VD trong sách giáo khoa và cài đặt các bài toán VD: Các VD trong SGK. đó. 5 ph 3. Câu lệnh ghép - Từ khóa Begin và End không Trong quá trình giải các bài toán chỉ dùng để bắt đầu hoặc kết thúc phức tạp, không phải chỉ thao tác với một chương trình mà còn dùng 1 câu lệnh mà có thể thao tác với để bắt đầu hoặc kết thúc một dãy các câu lệnh đó là câu lệnh ghép.
  32. nhiều câu lệnh, các câu lệnh được gộp lại và tạo thành câu lệnh ghép. Học sinh Câu lệnh ghép có dạng: theo dỏi, Begin ghi chép và ; làm bài End; VD: If d then Begin ; If then ; End Else ; Dạng 2: If then ; If then Else ; III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Thủ tục nhập dữ liệu: Read/Readln. - Thủ tục xuất dữ liệu: Write/Writeln. - Quy cách định dạng số. 2. Bài tập về nhà: 1. Tìm số lớn nhất của 2 số x, y. 2. Giải phương trình bậc 2. 3. Viết chương trình tìm giá trị lớn nhất của 3 số a, b, c. 4. Viết chương trình nhập từ bàn phím một số nguyên dương, in ra màn hình kq là số chẵn hoặc số lẻ. 5. Viết chương trình nhập từ bàn phím một số nguyên, in ra màn hình kq là số âm hoặc số dương. 6. Tìm GTLN của 4 số a, b, c, d là những số nguyên được nhập từ bàn phím. Gợi ý: max:=a; if b > max then max := b; if c > max then max := c; if d > max then max := d; write('max= ', max); 7. Nhập 3 số nguyên từ bàn phím, tính và in ra màn hình kết quả là bình phương của các số không âm và lập phương của các số âm.
  33. Tiế 12,13_PPCT Ngày soạn: Ngày dạy: BÀI 10: CẤU TRÚC LẶP A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh 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 với số lần lặp biết trước. 2. Yêu cầu: - Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể. - Biết cách mô tả thuật toán trong một số bài toán đơn giản. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Khái niệm lặp trong thuật toán. - Cấu trúc lặp với số lần đã biết trước, câu lệnh lặp FOR-DO. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Máy chiếu đa năng. E. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph ) Các em đã bao giờ gặp các tình huống lặp chưa? Em nào có thể kể cho thầy biết một số tình huống lặp mà em biết? VD1 như chương trình tính điểm cho 50 học sinh trong lớp. Quá trình giáo viên nhập họ tên, điểm cho từng em học sinh là một quá trình lặp liên tục cho đến khi nhập đầy đủ cho 50 học sinh thì mới kết thúc. Như vậy quá trình lặp ở trên là quá trình lặp với số lần đã biết trước là 50 lần lặp. Hoặc tình huống thứ 2 là: Em thực hiện một công việc là gánh nước để đổ vào 1 thùng nước? Em có biết cần bao nhiêu thùng nước thì đủ không? Như vậy em cần phải đổ đầy thùng nước mà không biết là cần bao nhiêu gánh nước. Đó là tình huống lặp với số lần chưa biết trước? Vậy trong ngông ngữ lập trình Pascal có cung cấp cho người lập trình các công cụ để thực hiện các bài toán về lặp không? Ta sang bài học mới để tìm hiểu các công cụ này nhé! II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 10: CẤU TRÚC LẶP (tiết 14) - Ghi bài học lên bảng.
  34. - Các em vừa được biết 2 VD về 1. Lặp lặp thường thấy trong cuộc sống Học sinh 10 Cho a z và a 2 . Tính giá trị S tự nhiên. Bây giờ ta sẽ xem xét 2 theo dỏi, 1 1 1 1 ph Bài 1: S . VD trong toán học trong SGK. ghi chép a a 1 a 2 a 100 - Từ 2 bài toán trên em nào cho bài học. 1 1 1 1 Bài 2: S thầy biết bài thứ nhất lặp cộng a a 1 a 2 a N bao nhiêu lần? Và xuất phát từ số 1 Cho đến khi 0,0001 hạng nào, tại số hạng này N bằng a N bao nhiêu? - Hai bài toán đều thực hiện phép lặp - Còn đối với bài toán 2 lặp cộng cộng bắt đầu từ N=0 bao nhiêu lần? Và xuất phát từ số - Bài toán 1 thực hiện lặp với N=100. hạng nào, tại số hạng này N bằng - Bài toán 2 thực hiện phép lặp chưa bao nhiêu? biết trước số lần N, phép lặp dừng cho => Như vậy đối với bài toán 1 Học sinh 1 theo dỏi, tới khi 0,0001. phép lặp giới hạn 100 lần, bài a N toán 2 phép lặp là không biết ghi chép và 10 2. Lặp với số lần biết trước và câu trước, nó thực hiện lặp cộng cho trả lời. ph lệnh FOR-DO đến khi thỏa mãn điều kiện Thuật toán 1 0,0001 thì kết thúc. Dạng lặp tiến: a N Nhập a - Bài học hôm nay ta nghiên cứu về phép lặp đã biết trước số lần S:=1/a; N:=0 Học sinh lặp tương ứng với cấu trúc câu theo dỏi, lệnh FOR-DO. N:=N+1 ghi chép và - Em nào có thể nêu ý tưởng trả lời. T N>100 thuật toán để giải bài toán 1. - Ta có 2 cách để viết thuật toán F giải bài toán 1. Đó là lặp tiến và S:=S+1/(a+N) lặp lùi. - Em nào có thể trình bày thuật In S toán dưới dạng sơ đồ khối. Dạng lăp lùi: - Em nào có thể nhận xét về hai Nhập a dạng lặp trên nó có điểm giống và khác nhau ở chỗ nào? S:=1/a; N:=101 - Em nào cho thầy biết tương N:=N-1 ứng với 2 dạng lặp trên thì ngôn Học sinh T ngữ lập trình Pascal đã cung cấp theo dỏi, N<1 cho chúng ta câu lệnh nào? ghi chép và F - Đó là câu lệnh FOR-DO dùng trả lời. S:=S+1/(a+N) để mô tả cho hai dạng lặp ở trên. In S - Em nào có thể nêu cách thức Nhận xét: hoạt động của câu lệnh FOR- - Lặp tiến: Xuất phát N=0, sau mỗi lần DO? lặp thì N tăng lên 1 đơn vị. - Lặp lùi: Xuất phát N=101, Sau mỗi - Câu lệnh FOR-DO được áp lần lặp thì N giảm đi một đơn vị. dụng trong bước mấy của 2 dạng - Số lần lặp tiến và lặp lùi là 100 lần. thuật toán trên? * Câu lệnh FOR-DO
  35. Dạng lặp tiến: 20 FOR := TO - Em nào có thể viết chương Học sinh ph DO ; trình tương ứng với 2 dạng thuật theo dỏi, Dạng lặp lùi: toán đó. ghi chép và FOR := trả lời. DOWNTO DO ; Áp dụng vào thuật toán hoặc chương trình em nào có thể thực Trong đó: hiện chạy chương trình với a=2 - Biến đếm: Là biến đơn, thường có Học sinh kiểu nguyên. - VD2: GV giúp học sinh tìm theo dỏi, - gt.đầu, gt.cuối: Là các biểu thức có hiểu thuật toán, cài đặt chương ghi chép và cùng kiểu với biến đếm. trình và kiểm thử bằng các bộ làm bài Chú ý: test. - Giá trị của biến đếm được điều chỉnh tự động, câu lệnh sau DO không được thay đổi giá trị biến đếm. 30 VD1: Chương trình cài đặt cho bài ph toán 1 theo 2 dạng lặp (SGK) VD2: (SGK) III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Câu lệnh lặp dạng tiến: FOR := TO DO ; - Câu lệnh lặp dạng lùi: FOR := DOWNTO DO ; 2. Bài tập về nhà: 1. Viết chương trình nhập số nguyên dương N từ bàn phím và thực hiện các công việc sau: a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ trong phạm vi từ 1 đến N. b) Tính tổng giá trị các số chẵn, số lẻ. 2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím a) S 1 2 n . Dùng FOR - Do Dùng While - Do S:=0; S:=0; i:=1; For i:=1 to N do S:=S+i; While i<=N Do Begin S:=S+i; i:=i+1; End; n 1 b) S 1-2+3-4+ + 1 .n Gợi ý: s:= 0; dau:=1; for i:=1 to n do begin s:=s+i*dau; dau:=-dau; end;
  36. 50 n c)  n 1 n 1
  37. Tiết 14_PPCT Ngày soạn: Ngày dạy: BÀI 10: CẤU TRÚC LẶP A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh 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 với số lần lặp chưa biết trước, kiểm tra điều kiện trước khi lặp. 2. Yêu cầu: - Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể. - Biết cách mô tả thuật toán trong một số bài toán đơn giản. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Lặp với số lần chưa biết trước, câu lệnh lặp While - Do D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Máy chiếu đa năng. E. KIỂM TRA BÀI CŨ (15ph) 1. Nêu cấu trúc câu lệnh lặp với số lần biết trước. Tại sao trong câu lệnh lặp FOR-DO người ta không cần câu lệnh thay đổi giá trị của biến chỉ số. 2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím a) S 1 2 n . 50 n b)  n 1 n 1 F. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 10: CẤU TRÚC LẶP (tiết 14) - Ghi bài học lên bảng. - Bài trước các em đã tìm hiểu Cho a z và a 2 . Tính giá trị S Học sinh 1 1 1 1 khái niệm về lặp và lặp với số lần 10 Bài 2: S biết trước, bài học hôm nay ta theo dỏi, a a 1 a 2 a N ghi chép ph 1 sang phần tiếp theo là lặp với số Cho đến khi 0,0001 lần chưa biết trước, ta sẽ làm bài học. a N việc trên bài toán 2 trong bài này 3. Lặp với số lần chưa biết trước và số lần lặp N là chưa biết. câu lệnh WHILE-DO - Em nào có thể nêu ý tưởng giải Thuật toán liệt kê: bài toán 2? B1: Nhập a;
  38. B2: S:=1/a; N:=0; - Em nào có thể viết thuật toán B3: Nếu 1/(a+N) do ; có 2 dạng: trả lời. * Trong đó: Dạng 1: - ĐK: Điều kiện là biểu thức logic; Trong khi còn đúng thì - Câu lệnh:Làcâu lệnhđơn hoặc ghép. thực hiện . Thuật toán theo sơ đồ khối: Dạng 2: Thực hiện trong Nhập a khi còn đúng. Học sinh - Ở dạng 1: Đầu tiên kiểm tra và theo dỏi, S:=1/a; ghi chép và N:=0; tính giá trị của ĐK, nếu ĐK còn đúng thì thực hiện công việc và trả lời. chỉ thực hiện 1 lần. Mỗi lần thực N:=N+1; F 1/(a+N) hiện công việc có thể sẽ làm thay S:=S+1/(a+N); =0.0001 Do - Tương ứng với dạng 1 em nào trả lời. Begin cho biết câu lệnh lặp trong N := N + 1; Pascal là gì? S := S + 1/(a+N); - Theo sơ đồ khối vòng lặp End; While – Do thể hiện trong những Writeln(‘tong S cua bai toan 2 la bước nào? ’, S:10:2); - Theo cấu trúc lặp trong Pascal, 10 Readln; em nào có thể viết chương trình ph End. giải bài toán 2 theo dạng 1? VD1: Tìm ƯCLN của 2 số nguyên dương M và N. - Em hãy thực hiện phép lặp với *Ý tưởng: a = 9995. - Nhập và kiểm tra 2 số M và N, nếu B1: Nhập a = 5; Học sinh M=N thì ƯCLN là M. Nếu không B2: Gán N=0; theo dỏi, thực hiện vòng lặp gán M=M-N nếu B3: Thực hiện lặp: ghi chép và M>N và ngược lại, cho đến khi M=N ➢ 1/9995 > 0.0001: trả lời. *Thuật toán: N:=0+1=1; S:=1/9995+1/(9996) → B3 ➢ 1/9996 > 0.0001: N:=1+1=2; Học sinh theo dỏi,
  39. Nhập M,N S:=1/9995+1/(9996) ghi chép và +1/(9997) → B3 làm bài S S M = N ? M > N ? N:=N-M ➢ 1/9996>0.0001: T T N:=2+1=3; Nhập M,N M:=M-N S:=1/9995+1/(9996) +1/(9997) +1/(9998) → B3 ➢ . ➢ 1/10000 = 0.0001: *Chương trình: N:=4+1=6; Program UCLN; S:=1/9995+1/(9996) Var m,n : Integer; +1/(9997) + 1/(9998) + Begin 1/(9999) + 1/(10000) + Write(‘Nhap m va n: ’); 1/(10001) → B3 readln(m,n); ➢ 1/10001 n do Kết thúc If m > n then m := m - n - Ta xem xét tiếp 2 VD sau: Else n := n – m; VD1: Tìm ƯCLN của 2 số Writeln(‘UCLN = ’, M); nguyên dương M và N. Readln - Em nào có thể nêu ý tưởng thực End. hiện bài toán? - Em nào viết được thuật toán? - Em nào viết chương trình thực hiện thuật trên. - Em nào có thể thực hiện chương trình trên bằng bộ test: M=28, N=12. II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau: - Ý nghĩa sử dụng câu lệnh lặp với số lần chưa biết trước While – Do. - Câu lệnh lặp While – Do. 2. Bài tập về nhà: 1. Có thể dùng câu lệnh While-Do để thay thế cho câu lệnh For-Do được không? Nếu được, hãy thực hiện điều đó với chương trình Tong_1a. 2. Cho số thực a. Tìm số nguyên dương N nhỏ nhất thỏa mãn: 1 1 1 1 a 2 3 N Gợi ý: Cách 1: Dùng vòng lặp vô hạn S := 1; N := 1; While true do {cho vòng lặp vô hạn vì đk luôn đúng} Begin If s>a then break; Inc(n); S := s + 1/n; End; Cách 2: Không dùng vòng lặp vô hạn S := 1; N := 1; While s<=a do {cho vòng lặp giới hạn đến s=a} Begin
  40. Inc(n); S := s + 1/n; End;
  41. Tiết 15,16_PPCT Ngày soạn: Ngày dạy: BÀI TẬP VÀ THỰC HÀNH 2 A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh làm quen với công cụ hiệu chỉnh chương trình. - Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ). - Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước. 2. Yêu cầu: - Học sinh biết xây dựng chương trình cấu trúc rẽ nhánh, lặp. B. PHƯƠNG PHÁP GIẢNG DẠY - Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập từ đơn giản đến phức tạp. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Phòng máy thực hành. E. NỘI DUNG GIẢNG DẠY Câu 1: Bài toán Bộ số Pi-ta-go: • Nêu bài toán. • Nêu ý tưởng giải bài toán. • Xây dựng chương trình. • Thực hiện chương trình trên máy tính. • Thực hiện theo các bước hướng dẫn thực hành trong sách giáo khoa. Câu 2: Viết chương trình tính giá trị của hàm: x2 y2 Nếu x2 y2 1 Nếu x2 y2 1 , y x a) z x y 2 2 0,5 Nếu x y 1 , y x Program tinhGTBT; Var x, y, z: real; Begin Write(‘nhap x, y: ’);readln(x,y); Z:= sqr(x) + sqr(y); If z 1) and (y>=x) then writeln(‘z= ’,x+y:10:2) Else If y 0), tâm (a,b). b) Z x y Trong các trường hợp còn lại Gợi ý: If (sqr(x-a) + sqr(y-b)) <= sqr(r) then Z := abs(x) + abs(y) Else Z := x+y;
  42. Bài 3: Viết chương trình tính các tổng sau, với N được nhập từ bàn phím: S 12 22 32 N 2 Gợi ý: S := 0; For i := 1 to N do S := S + sqr(i);
  43. Tiết 17_PPCT Ngày soạn: Ngày dạy: BÀI TẬP A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Thực hành câu lệnh rẽ nhánh (dạng thiếu và dạng đủ). - Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước. 2. Yêu cầu: - Học sinh tự viết chương trình cấu trúc rẽ nhánh, lặp. B. PHƯƠNG PHÁP GIẢNG DẠY - Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. - Phòng máy thực hành. E. NỘI DUNG GIẢNG DẠY Bài 1: Viết chương trình tính các tổng sau, với N được nhập từ bàn phím: 1 1 1 1 b) S 1 22 32 42 N 2 G ợi ý: S := 0; For i := 1 to N do S := S + 1/sqr(i); Câu 2: Lập trình giải bài toán sau: Nhập số nguyên dương N từ bàn phím. Tìm số nguyên k nhỏ nhất thỏa mãn điều kiện 3k > N. Đưa ra màn hình giá trị k và 3k. Gợi ý: k := 0; S := 1; While S <= N do Chú ý: n Begin an eloge a enln a Inc(k); S := exp(k*ln(3)); End; Câu 3: Viết chương trình nhập số nguyên và kiểm tra số vừa nhập là số chẵn hay số lẻ. Gợi ý: Nếu N mod 2 = 0 thì N là số chẵn, ngược lại là số lẻ. Câu 4: Viết chương trình giải phương trình bậc nhất ax + b = 0 Chương trình: Var a,b,x : real; Begin Write('a = '); Readln(a); Write('b = '); Readln(b); If a = 0 Then If b = 0 Then Writeln('Phuong trinh co vo so nghiem') Else Writeln('Phuong trinh vo nghiem') Else
  44. Begin x:= -b/a; Writeln('Phuong trinh co nghiem la :',x:6:2); end; readln ; end.
  45. Tiết 18_PPCT Ngày soạn: Ngày dạy: KIỂM TRA 1 TIẾT Câu 1: Viết chương trình nhập vào số nguyên dương N. In ra màn hình tất cả các ước số của N. Câu 2: Viết chương trình nhập vào số nguyên dương N rồi thông báo lên màn hình số đó có phải là số chẵn hay không. Câu 3: Tính tổng sau, với N được nhập vào từ bàn phím S = 2 - 4 + 6 - 8 + + (-1)n+1.2n
  46. Tiết 19_PPCT Ngày soạn: Ngày dạy: CHƯƠNG II: KIỂU DỮ LIỆU CÓ CẤU TRÚC BÀI 11: KIỂU MẢNG A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Cung cấp cho học sinh kiến thức về mảng, biết mảng một chiều, biết khái báo mảng, xây dựng và sử dụng mảng một chiều. 2. Yêu cầu: HS cần nắm được: - Kiểu mảng là một kiểu dữ liệu có cấu trúc, rất cần thiết và hữu ích trong nhiều chương trình. - Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu. - Các ngôn ngữ lập trình thông dụng cho phép người lập trình xây dựng kiểu dữ liệu mảng một chiều. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Thuyết trình, diễn giải, hỏi đáp. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Khái niệm mảng một chiều. - Cách khai báo mảng một chiều. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. E. NỘI DUNG GIẢNG DẠY I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (10ph): Ta có một ví dụ sau: Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần. Tính và tin ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. Em nào cho thầy biết nếu không sử dụng mảng một chiều thì để giải bài toán này ta làm thế nào? => sử dụng câu lệnh IF-THEN. - Chương trình minh hoạ: Progam nhietdotuan; Var t1,t2,t3,t4,t5,t6,t7,tb: real; Dem: integer; Begin Write(‘ nhap vao nhiet do cua 7 ngay:’); readln(t1,t2,t3,t4,t5,t6,t7); tb:=(t1+t2+t3+t4+t5+t6+t7)/7; Dem:=0; If t1> tb then dem:=dem+1; If t2> tb then dem:=dem+1;
  47. If t3> tb then dem:=dem+1; If t4> tb then dem:=dem+1; If t5> tb then dem:=dem+1; If t6> tb then dem:=dem+1; If t7> tb then dem:=dem+1; Writeln(‘nhiet do trung binh tuan:’,tb:4:1); Writeln(‘so ngay nhiet do cao hon nhiet do trung binh trong tuan:’,dem:2); Readln; End. => Như vậy nếu sử dụng câu lệnh IF-THEN thì trong trường hợp tính số lượng ngày trong năm có nhiệt độ lớn hơn nhiệt độ trung bình ta làm thế nào? => Phải sử dụng nhiều câu lệnh IF- THEN, bài toán trở nên phức tạp và khó khăn hơn. Để giải quyết vấn đề này người ta đã đưa ra một kiểu dữ liệu để lưu các giá trị này, đó là kiểu dữ liệu có cấu trúc - Kiểu dữ liệu mảng. Kiểu dữ liệu mảng cho phép ta có thể truy xuất tới bất kỳ một phần tử nào có giá trị. Các thao tác trên các biến trở nên dễ dàng hơn. Vậy kiểu mảng là gì ta sang bài học mới. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 11: KIỂU MẢNG (tiết 19) - Giáo viên viết đề bài: - Em nào có thể nêu khái niệm về 1. Kiểu mảng 1 chiều mảng. Học sinh 5ph Khái niệm: Là một dãy hữu hạn => Mảng là một dãy hữu hạn các theo dỏi, bao gồm các phần tử cùng kiểu, được phần tử, nó có tên, chỉ số phần tử ghi chép đặt tên mỗi pt có chỉ số nhất định và và chiều dài nhất định bài học. có chiều dài nhất định. - VD mảng nhiệt độ có 7 phần tử, mỗi phần tử là nhiệt độ của ngày VD1: Mảng nhiệt độ: trong tuần. Chỉ số i là vị trí thứ i của phần tử trong mảng. Do đó để lưu nhiệt độ của các ngày trong tuần người ta sử dụng cấu trúc mảng như trên. - Em nào cho thầy biết khi xây Học sinh theo dỏi, + Xây dựng kiểu mảng: dựng kiểu mảng một chiều thì ngôn ngữ lập trình cung cấp cho ghi chép và .Tên kiểu mảng. trả lời. .Số lượng phần tử; người lập trình những quy tắc .Kiểu dữ liệu của phần tử. cho phép xây dựng mảng một .Khai báo các biến cho mảng chiều những vấn đề gì? .Cách tham chiếu đến phần tử. - Bất kỳ bài toán nào có sử dụng biến cũng cần phải khai báo, vậy a. khai báo: Học sinh khi dùng biến mảng một chiều C1: Khai báo trực tiếp theo dỏi, thì ta cần phải khai báo. Có mấy 10 Var : array [kiểu chỉ số] ghi chép và cách khai báo? ph of ; trả lời. - Cú pháp khai báo trực tiếp như VD2: Khai báo mảng nhiệt độ. thế nào? Var
  48. Nhietdo : array [1 7] of real; - Em nào có thể khai báo mảng nhiệt độ đã cho ở trên? - Trong trường hợp ta cần nhiều C2:Khai báo gián tiếp mảng có cùng kiểu mảng thì làm Type = array [kiểu thế nào? Có phải cần khai báo chỉ số] of ; nhiều lần như khai báo trực tiếp Var : không? Var VD3: Khai báo mảng nhiệt độ. Nhietdo : array [1 7] of real; Type Nhietdo2 : array [1 7] of real; Mangnhietdo = array [1 7] of real; Nhietdo3 : array [1 7] of real; Học sinh Var theo dỏi, Nhietdo : mangnhietdo; Ta có cách khai báo gián tiếp ghi chép và nhằm hạn chế việc khai báo dài trả lời. dòng như trên mà vẫn đảm bảo như bài toán yêu cầu. - Em nào có thể khai báo gián tiếp cho biến mảng nhiệt độ ở trên. - Bây giờ em nào có thể khai báo một biến mảng cho bài toán sau theo 2 cách: Khai báo một biến mảng số nguyên bất kỳ. VD4: Khai báo biến mảng nguyên. Học sinh C1: Khai báo trực tiếp theo dỏi, * Chú ý: Var m_nguyen : array[1 n] of ghi chép và - Kiểu chỉ số là một đoạn số nguyên integer; trả lời. liên tục n1 n2. (n1≤ n2). Cho biết số C2: Khai báo gián tiếp phần tử có trong mảng. Type mang = array [1 n] of - Kiểu phần tử là kiểu của các phần tử integer; trong mảng. Var mang_nguyen : mang; - Cách nhập và truy xuất (tham chiếu) tới các phần tử trong mảng: + Tham chiếu tới các phần tử của - Em nào có thể cho thầy biết là mảng được xác định bởi tên mảng để đưa ra giá trị nhiệt độ của cùng với chỉ số được viết trong cặp ngày thứ 5 trong mảng nhiệt độ dấu ngoặc [và]. ở trên ta làm thế nào? - Ta có thể truy xuất bất kỳ nhiệt VD: Giá trị của phần tử thứ 5 trong độ của từng phần tử trong mảng mảng nhiệt độ là nhietdo[5] = 41.6 được không? - Để nhập nhiệt độ của 7 ngày + Dùng câu lệnh FOR-DO để nhập và trong tuần vào mảng ta làm thế xuất giá trị phần tử của mảng. nào? - Dùng câu lệnh FOR-DO để VD: nhập và xuất giá trị phần tử của * Thao tác nhập nhiệt độ cho 7 ngày mảng. trong tuần: - Em nào có thể viết đoạn 15 For i:=1 to 7 do ph Begin chương trình nhập nhiệt độ của 7 Write (‘nhap nhiet do cua ngay thu’,i:2,’ ngày trong tuần? =’); readln(nhietdo[i]);
  49. End. - Tương tự em nào có thể viết * Thao tác xuất nhiệt độ cho 7 ngày đoạn chương trình xuất nhiệt độ Học sinh trong tuần: trung bình của mỗi ngày sau khi theo dỏi, For i:=1 to 7 do đã nhập. ghi chép và Begin làm bài Write (‘ nhiet do cua ngay thu’,i:2,’ =’, nhietdo[i]:10:2); End. - Thao tác gán mảng với mảng: Cho mảng A và mảng B cùng kiểu. Ta viết A:=B thì tất cả các giá trị mảng B sẽ nằm trong mảng A. VD: Var A,B : array[1 5] of byte; - Cho a,b là các biến có cùng một i:byte; kiểu mảng và giả sử các phần tử Begin của biến a đã được gán giá trị, For i:=1 to 5 do a[i] := i; khi đó ta có thể dùng lệnh gán Học sinh B:=A; b:=a; Sau lệnh gán này các phần theo dỏi, tử của biến mảng b có giá trị ghi chép và End. tương ứng giống như các phần tử làm bài - Thao tác gán giá trị cho mảng: của biến mảng a. a[i] := i; III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau: + Nguyên tắc sử dụng mảng + Cách khai báo và thao tác trên mảng. 2. Bài tập: Bài 1: Tìm hiểu và viết chương trình cho bài toán sau: Nhập vào nhiệt độ trung bình của n ngày bất kỳ trong năm. Tính và tin ra màn hình nhiệt độ trung bình của n này đó và số lượng ngày trong có nhiệt độ cao hơn nhiệt độ trung bình tính được. Bài 2: Tìm hiểu trước 2 VD tiếp theo trong sách giáo khoa. Bài 3: Viết chương trình nhập n phần tử là các số nguyên cho mảng 1 chiều và thực hiện các công việc sau: a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ và hiển thị dãy số chẵn, dãy số lẻ trên b) Đếm xem có bao nhiêu số nguyên dương, số nguyên âm và hiển thị dãy các số trên.
  50. BÀI 11: KIỂU MẢNG (tiết 20-21) - (Ngày soạn: 22/10/2009) A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Củng cố và giúp HS hiểu sâu sắc hơn thuật toán tìm kiếm, sắp xếp cơ bản mà HS đã được học ở lớp 10. - Minh hoạ, củng cố và nâng cao những hiểu biết của HS trong tiết 1 về mảng một chiều. - Hình thành kĩ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình. 2. Yêu cầu: - Học sinh đã ôn lại thuật toán của lớp 10 về các phép duyệt dãy số, sắp xếp, tìm kiếm B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Thuyết trình, diễn giải, hỏi đáp. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Thuật toán tìm kiếm, sắp xếp. - Biết cách thao tác trên mảng 1 chiều. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. E. NỘI DUNG GIẢNG DẠY I. KIỂM TRA BÀI CŨ (10ph): 1. Nêu 2 cách khai báo biến mảng? 2. Để nhập hoặc xuất dữ liệu trong mảng 1 chiều ta làm thế nào? 3. Viết chương trình bài: Nhập vào nhiệt độ trung bình của n ngày bất kỳ trong năm. Tính và tin ra màn hình nhiệt độ trung bình của n này đó và số lượng ngày trong có nhiệt độ cao hơn nhiệt độ trung bình tính được. const max = 366; type mangnd = array[1 max] of real; var nhietdo : mangnd; dem, i, n: byte; tongnd, tb: real; begin write('nhap so ngay:'); readln(n); tongnd:=0; for i:=1 to n do begin write('nhap nhiet do ngay thu',i:2,'='); readln(nhietdo[i]); tongnd:=tongnd+nhietdo[i]; end; dem:=0; tb:=tongnd/n; for i:=1 to n do if nhietdo[i]>tb then dem:=dem+1; writeln('nhiet do trung binh cua',n:2,'ngay la',tb:10:2); writeln('so ngay co nhiet do lon hon ',tb:12:2,' la:', dem:2); readln end. II. NỘI DUNG BÀI HỌC
  51. Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò - Chúng ta xét một số VD sau: VD1: Tìm phần tử lớn nhất của dãy số nguyên.- Yêu cầu Học sinh xác định bài toán: Input và theo dỏi, output? ghi chép - Yêu cầu HS đưa ra thuật toán bài học. liệt kê đã được học ở lớp 10. - Nhận xét và đưa ra thuật toán chính xác. - Em nào có thể thực hiện theo thuật toán cho một bộ test sau: N=4, a1=4,a2=2, a3=7,a4=1. - Yêu cầu đọc SGK và suy nghĩ về chương trình để trả lời câu Học sinh hỏi. theo dỏi, ? Trong bài này ta cần khai báo ghi chép và những biến nào? trả lời. - Ta nhận thấy dãy các số nguyên nên khai báo theo kiểu biến mảng và mảng này là mảng các số nguyên có dấu. Ngoài ra chúng ta có thể khai báo một số khai báo khac nữa như: khai báo thư viện, khai báo hằng, khai báo kiểu dữ liệu mảng. Học sinh - Một em hãy lên bảng viết đoạn theo dỏi, chương trình nhập giá trị cho các ghi chép và phần tử của mảng. trả lời. - t luận và vừa viết chương trình vừa giải thích. ở đây chỉ số của phần tử mang giá trị lớn nhất chúng ta sẽ chỉ ra phần tử lớn nhất cuối cùng. ? Như vậy chúng ta cần khai báo thêm một biến nào? - Chúng ta tìm hiểu tiếp VD tiếp theo: VD2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi. Học sinh theo dỏi, - Yêu cầu xác định bài toán: ghi chép và Input và output bài toán? trả lời. - Yêu cầu nều thuật toán tráo đổi đã được học ở lớp 10. - Từ thuật toán trên ta thực hiện bộ test sau:
  52. Với N =4, a1=4, a2=2,a3=7,a4=1. B1: Nhập N=4 và a1= 4, a2=2, a- 3=7,a4=1. B2: MN(M=4); Lần 1: B3: M sai. B4:MM-1=4-1=3, i0; B5: ii+1=0+1=1. Học sinh B6: (i=1)>(M=3)=>sai theo dỏi, B7: (a1=4)>(a1+1=2)=>đúng nên ghi chép và tráo đổi a1và a2 cho trả lời. nhau.=>a1=2,a2=4. B8: Quay lại B5. B5: i i+1=1+1=2; B6: (i=2)>(M=4)=>sai. B7: (a2=4)>(a3=7)=>sai. B8: Quay lại B5. B5: ii+1=2+1=3. B6: (i=3)>(M=3)=>sai. Học sinh B7:(a =7)>(a =1)=>đúng nên 3 3+1 theo dỏi, tráo đổi a và a cho 3 4 ghi chép và nhau=>a =1, a =7. 3 4 làm bài B8: quay lại B5. B5: ii+1=3+1=4. B6: (i=4)>(M=3)=>đúng nên quay lại B3. Lần 2: Lần 3: Lần 4: Tương tự như cách thực hiện lần 1 ta sẽ có dãy được sắp xếp thành dãy không giảm:1 2 4 7. ? Theo các em qua thuật toán trên ta cần khai báo những biến nào? - Nhận xét và kết luận những biến cần khai báo. Trước hết chúng ta làm quen với một thuật toán tráo đổi 2số ai và aj nhau như sau: Học sinh Tam:=ai; ai=aj; aj=tam; Vì vậy chúng ta cần khai báo các theo dỏi, biến sau: ghi chép và N, i, tam, mảng số nguyên, j. trả lời. - Chúng ta sẽ có phần khai báo: tên chương trình, thư viện, hằng, khai báo dữ liệu mảng như ví dụ Học sinh 1. yêu cầu các em tự viết vào theo dỏi, ghi chép và trả lời.
  53. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau: + Cách sử dụng mảng trong một số bài toán phức tạp. + Thao tác duyệt các phần tử trên mảng. 2. Bài tập: Bài 1: Viết chương trình nhập vào một dãy số bất kỳ và in ra màn hình dãy số vừa nhập. Bài 2: Tìm hiểu mảng 2 chiều. Bài 3: Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng và trung bình nhân của nó. Hướng dẫn: - Khai báo biến n,i kiểu số nguyên. Biến mảng m kiểu số nguyên để chứa dãy số nhập vào. Các biến tbc,tbn kiểu số thực để chứa kết quả. - Sử dụng lệnh for tính tổng, tích của n số nguyên dương đó từ đó tính trung bình cộng và trung bình nhân. Bài 4: Nhập 1 dãy số thực cho mảng a gồm n phần tử, tính trung bình cộng của các số âm. uses crt; const max=100; type mang=array[1 max] of real; var i,n,d: integer; a:mang; s:real; begin clrscr; write('nhap so phan tu n= ');readln(n); writeln('nhap gia tri cho mang:'); for i:=1 to n do begin write('a[',i,']= '); readln(a[i]); end; s:=0; d:=0; for i:=1 to n do if a[i] 0 then writeln('trong day co ',d:2,'so am va tong cua chung la',s:8:2) else writeln('khong co so am nao ca'); readln end. Bài 5 (BT giao về nhà nhưng không sửa để dành kiểm tra 1t): Nhập 1 dãy số thực cho mảng a gồm n phần tử, hãy kiểm tra: a) Kiểm tra là dãy số tăng hay không? b) Dãy có phải là dãy số đan dấu không? (không xét số 0) const max=100; type mang=array[1 max] of real; var i,n,d1,d2: integer; a:mang; begin
  54. write('nhap so phan tu n= ');readln(n); writeln('nhap gia tri cho mang:'); for i:=1 to n do begin write('a[',i,']= '); readln(a[i]); end; d1:=0; d2:=0; (d1 kiểm tra dãy tăng, d2 kiểm tra dãy đan dấu) for i:=1 to n-1 do begin if a[i] > a[i+1] then inc(d1); if a[i]*a[i+1]>=0 then inc(d2); end; if d1=0 then writeln('la day tang') else writeln('khong phai day tang'); if d2=0 then writeln('day dan dau') else writeln('day khong dan dau'); readln end.
  55. BÀI 11: KIỂU MẢNG (tiết bổ sung không theo PPCT) A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Minh hoạ, củng cố và nâng cao những hiểu biết của học về mảng 1 chiều ( cấu trúc, cách khai báo, cách tham chiếu một phần tử và ích lợi của kiểu dữ liệu này), từng bước hình thành thao tác trên mảng 2 chiều. - Hình thành kỹ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình. - Rèn luyện thái độ tích độ tích cực học tập. - Rrèn luyện tính kiên nhẫn, thích phám phá. 2. Yêu cầu: HS cần nắm được: - Kiểu mảng 1 chiều. - Biết thao tác trên mảng 2 chiều. B. PHƯƠNG PHÁP GIẢNG DẠY - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học. - Thuyết trình, diễn giải, hỏi đáp. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Khái niệm mảng 2 chiều. - Cách khai báo mảng 2 chiều. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng. E. NỘI DUNG GIẢNG DẠY I. KIỂM TRA BÀI CŨ (10ph): Bài 1: Viết chương trình nhập vào một dãy số bất kỳ và in ra màn hình dãy số vừa nhập. Bài 2: Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng của nó. Chương trình: Program Tinh_tb; Var n,i: integer; tbc,tbn :real; a:array[1 100] of integer; Begin Write(' nhap n>0 : ');Readln(n); tbc:=0; tbn:=1; For i:=1 to n do Begin Write('a[',i,'] >0: '); Readln(a[i]); Tbc:=tbc+a[i]; End; tbc:= tbc/n; writeln( 'trung binh cong cua day la:', tbc:8:2); Readln End.
  56. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 11: KIỂU MẢNG - Giới thiệu VD trong SGK (trang 59): Tính và đưa ra màn 2. Kiểu mảng hai chiều hình bảng cửu chương. Học sinh Các yếu tố xác định mảng hai chiều: - Hỏi: Sử dụng kiến thức mảng theo dỏi, + Tên mảng một chiều. một chiều, hãy đưa ra cách lưu ghi chép + Số phần tử trên một dòng và một trữ bảng cửu chương? => Sử bài học. cột. dụng 9 mảng một chiều, một + Kiểu dữ liệu của phần tử. mảng lưu một hàng của bảng. +Cách khai báo biến mảng một chiều. - Hỏi tiếp: Với các lưu trữ như 15 vậy ta cần phải khai báo bao ph * 2 cách tạo kiểu mảng 2 chiều: nhiêu biến mảng? => Dùng a) Khai báo: mảng một chiều ta khai báo 9 Cách 1: Khai báo trực tiếp biến mảng. Học sinh Var :array[chỉ số - Vậy khó khăn gì khi khai báo 9 hang, chỉ số cột] of ; theo dỏi, biến mảng => Khó khăn viết ghi chép và chương trình nhập xuất dữ liệu Cách 2: Khai báo gián tiếp trả lời. dài. Type = array [chỉ - Để khắc phục khó khăn ta xem số dòng, Chỉ số cột] Of ; tử, ta ghép 9 mảng một chiều Var : ; thành một mảng hai chiều. - Yêu cầu HS nhận xét về mảng VD: Khai báo mảng 2 chiều dùng Học sinh hai chiều => Nhận xét: Nếu xem cho bảng cửu chương: theo dỏi, mỗi hàng của mảng hai chiều là C1:Khai báo trực tiếp: ghi chép và một phần tử thì ta có thể nói Var Bang_CC : array [1 9,1 10] of trả lời. mảng hai chiều là mảng một integer; chiều mà mỗi phần tử là mảng C2: Khai báo gián tiếp một chiều. Type Mang = array [1 9,1 10] of - Hỏi: Để mô tả kiểu mảng hai integer; chiều, ta cần xác định những yếu Var Bang_CC : Mang; tố chính nào? - Em hãy nêu cách khai báo biến Chú ý: mảng 2 chiều. - Ngoài mảng 1 và 2 chiều còn có - Để tham chiếu đến các phần tử mảng nhiều chiều. của mảng 2 chiều ta làm thế nào? - Tham chiếu đến các phần tử: - Em nào nêu cách nhập và xuất Tên_biến_mảng[chỉ_số_dòng, dữ liệu của mảng 2 chiều ? Chỉ_số_cột]; - Vậy việc nhập và xuất dữ liệu Học sinh - Để nhập dữ liệu và xuất dữ liệu từ giống trong mảng 1 chiều nhưng theo dỏi, mảng ta sử dụng 2 vòng FOR-DO dùng câu lệnh FOR-DO lồng ghi chép và lồng nhau. nhau. trả lời. - Cách nhập dữ liệu trong mảng 2 chiều: - Các em nghiên cứu VD 1 trong Writeln('nhap mang 2 chieu:'); sách giáo khoa và cho biết cách For i:=1 to n do tính bảng cửu chương trong For j:=1 to n do chương trình?
  57. Begin - Các em nghiên cứu VD1 trong Write('a[',i,',',j,']= '); sách giáo khoa và trả lời các câu Học sinh Readln(a[i,j]); hỏi sau: theo dỏi, End; + Để giải bài toán trên cần loại ghi chép và - Cách xuất dữ liệu trong mảng 2 mảng nào, vì sao? trả lời. chiều: + Giá trị lưu trong mảng là kiểu Writeln(‘xuat DL mang 2 chieu:'); số gì? For i:=1 to n do + Khi cài đặt bài toán trên có cần For j:=1 to n do Begin nhập giá trị cho mảng không? Vì Write('a[',i,',',j,']= ', a[i,j]:3); sao? End; + Để tính giá trị của bảng cửu chương ta làm thế nào? Học sinh 15 b) Một số ví dụ: + Để in giá trị của bảng cửu theo dỏi, ph VD1: Viết chương trình tính và đưa ra chương ta làm thế nào? ghi chép và màn hình bảng cửu chương.(SGK) - Em nào có thể viết chương làm bài trình cài đặt cho bài toán trên. VD2:Viết chương trình nhập vào từ bàn phím các phần tử của mảng hai - Các em nghiên cứu VD 2: Để chiều B gồm 5, hàng 7 cột với các nhập các giá trị cho mảng ta làm phần tử là các số nguyên và một số thế nào? nguyên K. Sau đó, đưa ra màn hình - Để so sánh các giá trị của mảng các phần tử của mảng có giá trị nhỏ nhỏ hơn K ta làm thế nào? hơn K. - Em nào có thể viết chương Học sinh trình cài đặt cho bài toán trên. theo dỏi, ghi chép và làm bài III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau: + Nguyên tắc sử dụng mảng 2 chiều. + Cách khai báo và thao tác trên mảng 2 chiều. 2. Bài tập: Bài 1: Chuẩn bị bài thực hành số 3.
  58. BÀI TẬP VÀ THỰC HÀNH SỐ 3 (tiết 23-24) - (Ngày soạn: 28/10/2009) A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm kiếm, chạy thử các chương trình có sẵn. - Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính. 2. Yêu cầu: - Học sinh nắm được các kiến thức cơ bản về mảng. B. PHƯƠNG PHÁP GIẢNG DẠY - Chia lớp thành 2 nhóm nếu không đủ máy, 3HS/1máy. - Lấy điểm thực hành theo các câu hỏi ý nghĩa các câu lệnh, các ý nhỏ yêu cầu bổ sung trong SGK (ý b Bài 1, ý b Bài 2). C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Ôn tập mảng 1 chiều và 2 chiều. D. PHƯƠNG TIỆN DẠY HỌC - Sử dụng máy Projector. - Bảng đen, phấn trắng. E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI TẬP VÀ THỰC HÀNH SỐ 3 (tiết Học sinh 23-24) theo dỏi, ghi chép và 40 Bài 1: Tạo mảng A gồm n (n<=100) - Đưa ra nội dung bài thực hành: trả lời. ph số nguyên, mỗi số có trị tuyệt đối Tạo mảng A gồm n (n<=100) số không vượt quá 300. Tính tổng các nguyên, mỗi số có trị tuyệt đối phần tử của mảng là bội số của một không vượt quá 300. Tính tổng các số nguyên dương k cho trước. phần tử của mảng là bội số của một số nguyên dương k cho trước. a. Hãy tìm hiểu và chạy thử chương tình sau đây: Program sum1; - Yêu cầu học sinh tìm hiểu và uses crt; chạy thử chương trình trên. Học sinh const nmax=100; theo dỏi, type myarray= array[1 max] of ghi chép và integer; trả lời. Var a:myarray; S, n, i, k: integer; Begin Clrscr; randomize; writeln(‘nhập n=:’); readln(n); for i:=1 to n do a[i]:=random(300)- random(300); Học sinh for i:=1 to n do write(a[i]:5); - Yêu cầu một HS trả lời yêu cầu theo dỏi, writeln; của bài toán. ghi chép và write(‘nhập k=’);readln(k); trả lời.
  59. s:=0; For i:=1 to n do - Nhận xét và yêu cầu HS thực if a[i] mod k =0 then s:=s+a[i]; hành sửa chương trình ở câu Writeln(‘tổng cần tính là:’, s); a)và chạy chương trình vừa Readln sửa End. - Suy nghĩ và trả lời. b. Hãy đưa các câu lệnh sau đây vào Program sum1; vị trí cần thiết nhằm sửa chương uses crt; trình trong câu a) để có được const nmax=100; chương trình đưa ra các số dương type myarray= array[1 max] of và số các số âm trong mảng. integer; posi, neg: integer Var a:myarray; posi:= 0; neg:=0; S, n, i, k, posi, neg: integer; if a[i] >0 then posi:=posi+1 Begin else if a[i] 0 then posi:=posi+1 đây: else if a[i] a[j] then j:=i; b. Ta sửa nhu sau: write(‘chi so:’,j,’gia trị:’, for i:=2 to n do a[j]:4); if a[i]>=a[j] then j:=i; readln; - Cần giữ lại; end. - Cần duyệt lại tất cả các phần tử của mảng để làm Học sinh b. Chỉnh sửa chương trình để đưa ra được việc đó. theo dỏi, chỉ số lớn nhất của các phần tử có ghi chép và cùng giá trị lớn nhất. trả lời.
  60. III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) 1. Củng cố: Cho HS dừng thực hành để kiểm tra trong 5phút. Đánh giá những kết quả làm được và chưa làm được của HS. 2. Bài tập về nhà: 1. Viết chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất. 2. Chuẩn bị bài thực hành số 4. 3. Viết chương trình nhập n phần tử là các số nguyên dương vào mảng 1 chiều a và đếm xem có bao nhiêu phần tử bằng k? (k được nhập từ bàn phím).
  61. BÀI TẬP VÀ THỰC HÀNH SỐ 4 (tiết 25-26) - (Ngày soạn: 28/10/2009) A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Củng cố cho HS những kiến thức và kĩ năng đã có khi lập trình với kiểu dữ liệu mảng. - Củng cố cho HS một thuật toán sắp xếp các phần tử của một dãy (bằng tráo đổi) và kĩ năng diễn đạt thuật toán này bằng chương trình sử dụng dữ liệu kiểu mảng. - Rèn luyện HS một ý thức cần có của người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể được. - Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình. 2. Yêu cầu: - Học sinh nghiêm túc trong quá trình thực hành. B. PHƯƠNG PHÁP GIẢNG DẠY - Thuyết trình, hướng dẫn thực hành. C. PHƯƠNG TIỆN DẠY HỌC Máy chiếu projector, phòng máy, SGK, giáo án. E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI TẬP VÀ THỰC HÀNH SỐ 4 (tiết - Đưa ra nội dung bài thực hành: Học sinh 25-26) - Đoạn nào thể hiện một lần tráo theo dỏi, đổi giá trị của hai phần tử liền kề ghi chép và Bài 1: Tìm hiểu và chạy thử chương 30 của mảng? trả lời. trình thực hiện thuật toán sắp xếp ph - For j:=n dowto 2 do dãy số nguyên bằng thuật toán tráo For i:=1 to n j-1 do đổi với cac giá trị khác nhau của n If a[i]>a[i+1] then Chú ý theo dưới đây. Qua đó nhận xét về thời Begin dõi SGK gian chạy của chương trình. T:=a[i]; nội dung A[i]:=a[i+1]; bài thực a. {Chương trình SGK trang 65, 66} A[i+1]:=a[i]; hành . b. Khai báo thêm biến nguyên Dem End; và bổ sung vào chương trình những - Qua bài thực hành số 3, chúng ta câu lệnh cần thiết để biến Dem tính thấy có thể tăng biến Dem để đếm số lần thực hiện tráo đổi trong thuật số lần tráo đổi hay không? Để làm toán. Đưa kết quả tìm được ra màn điều đó phải đăt câu lệnh tăng biến hình. Dem ở đâu? Học sinh - Có thể làm được. Và ta đặt nó theo dỏi, Bài 2: Hãy đọc và tìm hiểu những như sau: thực hành phân tích để viết chương trình giải Dem:integer; và trả lời. 30 bài toán: Dem:=0; ph Cho mảng a gồm n phần tử. Hãy viết For j:=n dowto 2 do ph chương trình tạo mảng b[1 n], For i:=1 to j-1 do trong đó b[i] là tổng của i phần tử If a[i]>a[i+1] then đầu tiên của a. Begin Program subsum1; T:=a[i]; uses crt; A[i]:=a[i+1]; const nmax=100; Học sinh A[i+1]:=a[i]; theo dỏi,
  62. type myarray= array[1 max] of Dem:=dem+1; thực hành integer; End; và trả lời. Var a, b:myarray; - Hướng dẫn học sinh thựchành. n, i, j: integer; Begin Bài 2: Clrscr; randomize; - Thực hành theo hướng dẫn của writeln(‘nhập n=:’); readln(n); GV. for i:=1 to n do a[i] := random(300)- - Để ý ta thấy có hệ thức sau: random(300); B[1]=a[1]; for i:=1 to n do write(a[i]:5); B[i]=b[i-1]+a[i]; writeln; Do đó, ta có thể đổi đoạn {băt đầu {Bắt đầu tạo b} tạo b} đến{kết thúc tạo b} bởi hai for i:=1 to n do lệnh: begin b[1]:=a[1]; b[i]:=0; for i:=2 to n do B[i]:= b[i- for j:=1 to i do 1]+a[i]; b[i]:=b[i]+a[j]; end; Học sinh {Kết thúc tạo b} theo dỏi, for i:=1 to n do write(b[i]:5); thực hành readln; và trả lời. end. Bài 3: Hướng dẫn HS thực hành Bài 3: Viết chương trình nhập n bổ sung. 20 phần tử là các số nguyên dương vào ph mảng 1 chiều a và đếm xem có bao nhiêu phần tử bằng k? (k được nhập từ bàn phím). III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) 1. Củng cố: Cho HS dừng thực hành để kiểm tra trong 5phút. Đánh giá những kết quả làm được và chưa làm được của HS. 2. Bài tập về nhà: 1. Sửa chương trình bài 2 thành chương trình hoàn chỉnh khi thay đổi đoạn {băt đầu tạo b} đến {kết thúc tạo b} bởi hai lệnh: b[1]:=a[1]; for i:=2 to n do B[i]:=b[i-1]+a[i]; 2. Chuẩn bị bài học kiểu xâu.
  63. BÀI 12: KIỂU XÂU (tiết 27-28) - (Ngày soạn: 09/11/2009) A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Học sinh biết được xâu là một dãy ký tự (có thể coi xâu là mảng một chiều). - Biết cách khai báo xâu và truy cập phần tử của xâu. - Sử dụng được một số thủ tục, hàm thông dụng về xâu. - Cài đặt được một số chương trình đơn giản về xâu. 2. Yêu cầu: - Học sinh đã nắm được kiểu mảng. - Hình thành tư duy về thuật toán xử lý kiểu xâu. B. PHƯƠNG PHÁP GIẢNG DẠY - Thuyết trình, vấn đáp. C. KIẾN THỨC TRỌNG TÂM Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Khai báo kiểu xâu - Các hàm và thủ tục kiểu xâu. D. PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa năng. E. NỘI DUNG GIẢNG DẠY II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI 12: KIỂU XÂU (tiết 27-28) - Đặt vấn đề: Để lưu trữ thông tin họ tên của một người, các kiểu 10 * Một số khái niệm: dữ liệu đã học có đáp ứng được Học sinh ph - Xâu là một dãy ký tự trong bảng mã không? theo dỏi, ASCII. ghi chép - Mỗi ký tự được gọi là một phần tử - Phân tích các phương án của bài học. của xâu. học sinh, từ đó đưa ra yêu cầu - Số lượng ký tự trong xâu được gọi là cần phải sử dụng một kiểu dữ độ dài của xâu. liệu mới đó là kiểu xâu. - Xâu có độ dài bằng 0 được gọi là xâu rỗng. - Tham chiếu tới phần tử trong xâu được xác định thông qua chỉ số của phần tử xâu. - Chỉ số phần tử trong xâu thường Học sinh - Giới thiệu một số khái niệm và theo dỏi, được đánh số là 1, 2, 3 thao tác thường dùng khi làm - Trong NNLT Pascal, tham chiếu tới ghi chép và việc với xâu ký tự trong lập trình trả lời. phần tử của nó được viết là: nói chung. [chỉ số] - Đây là cách khai báo trong 15 * Cách khai báo và thao tác trên kiểu NGLT Pascal, đối với các ngôn ph xâu: ngữ lập trình khác có thể có cách 1. Khai báo: khai báo khác. Var : String [độ dài lớn nhất của xâu];
  64. - Nếu không khai báo độ dài tối Trong đó: đa cho biến xâu ký tự thì độ dài Học sinh - String: Là tên dành riêng để khai ngầm định của nó là bao nhiêu? theo dỏi, báo kiểu xâu. ghi chép và VD: trả lời. Var Ten : String[10] ; Ho_dem : String[50] ; Que : String ; Chú ý: - Nếu không khai báo độ dài tối đa cho - Cho xâu ký tự: ‘nGuyen vaN biến xâu ký tự thì độ dài ngầm định A’. Để xử lý xâu trên cần bao của nó là 255. nhiêu thao tác để được xâu hoàn VD: Var xaumax : String; chỉnh ‘Nguyen Van A’ ? - Hằng xâu được đặt trong cặp dấu nháy đơn ‘’. 15 2. Các thao tác xử lý xâu: ph - Ghép xâu, nối xâu (+): - Làm sao để biết một ký tự là Học sinh VD: S1 = ‘HA’, S2 = ‘NOI’ dấu cách ? theo dỏi, S = S1+S2 = ‘HA NOI’ - Làm thế nào để xóa đi một vài ghi chép và - Các phép so sánh xâu (SGK): ký tự? trả lời. * Pascal sẽ so sánh xâu theo thứ tự từ - Làm thế nào để thêm một vài trái sang phải. ký tự ? * S1 > S2 nếu ký tự đàu tiên khác - Để in chữ hoa thì làm thế nào? nhau giữa chúng kể từ trái sang phải - Làm thế nào để kiểm tra xâu trong xâu S1 có mã ASCII lớn hơn. có bao nhiêu ký tự? VD: S1 = ‘aB’, S2 = ‘AB’ => S1 > S2. vì a = 97, A = 65. => Từ đó đưa ra một số thủ tục * Nếu S1  S2 thì S1 S1 < S2 Học sinh theo dỏi, - Một số thủ tục và hàm chuẩn: ghi chép và 40 * Delete(St,vt,n): Xóa đi n ký tự bắt trả lời. ph - Ứng với mỗi thủ tục và hàm đầu từ vị trí vt trong xâu st chuẩn giáo viên lấy VD cụ thể VD: St = ‘Song Hong’ trong Pascal để các em hiểu. Delete(St,1,5) Kết quả St1 = ‘Hong’ * INSERT(St1, St2, vt): Chèn xâu St1 vào xâu St2 bắt đầu từ vị trí vt. VD: Học sinh St1 = ‘vi-’ - Trong các VD đã có trong Sách theo dỏi, St2 = ‘May-tinh’ giáo khoa, giáo viên đặt ra các ghi chép và Insert(St1,st2,5) Kết quả câu hỏi gợi mở để học sinh viết làm bài St2 = ‘May-vi-tinh’ chương trình. COPY(St, vt, n): Tạo một xâu gồm n ký tự liên tiếp được lấy trong xâu St bắt đầu từ vị trí vt. VD: St1 = ‘Xau-ky-tu’ Copy(St,5,5) Kết quả St2 = ‘ky tu’ LENGTH(St): St = ‘Tin hoc’ Length(St) Kết quả St có độ dài là 7 Học sinh theo dỏi,
  65. POS(St1, St2): Cho vị trí xuất hiện ghi chép và đầu tiên của xâu St1 trong xâu St2. làm bài Nếu xâu St1 không có trong xâu St2 thì cho kết quả là 0. VD: St2 = ‘Tin hoc’ St1 = ‘hoc’ Pos(St1,St2) Kết quả xuất hiện đầu tiên của St1 tại vị trí 5 UPCASE(Ch): Cho giá trị là ký tự in hoa ứng với ký tự Ch. Ch:= Upcase(a) cho kết quả là ch = A * Một số VD trong SGK: VD1: Viết chương trình nhập vào 2 biến xâu và in ra xâu dài hơn. VD2: Nhập vào 2 xâu ký tự và kiểm tra ký tự đầu tiên của xâu thứ nhất có trùng với ký tự cuối cùng của xâu thứ 2 không ? III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) 1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau: - Nhắc lại một số khái niệm xâu. - Các thủ tục và hàm. 2. Bài tập: Bài 1: Bài 10 (trang 80): Viết chương trình nhập từ bàn phím xâu ký tự S có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số xuất hiện trong xâu S. Cách 1: Cách 2: Write(‘Nhap xau St: ‘); Readln(St); For i:=1 to length(St) do For i:=1 to length(St) do If ( ‘0’ Length(s2) then
  66. BÀI TẬP VÀ THỰC HÀNH SỐ 5 (tiết 30-31) - (Ngày soạn: 16/11/2009) A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích: - Khắc sâu thêm phần kiến thức về lý thuyết kiểu xâu kí tự, đặc biệt là các hàm và thủ tục liên quan. - Nắm được một số thuật toán cơ bản: tạo xâu mới, đếm số lần xuất hiện một kí tự - Khai báo biến kiểu xâu. - Nhập, xuất giá trị cho biến xâu. - Duyệt qua tất cả các kí tự của xâu. - Sử dụng được các hàm và thủ tục chuẩn. 2. Yêu cầu: - Tích cực chủ động trong thực hành B. PHƯƠNG PHÁP GIẢNG DẠY - Chia lớp thành 2 nhóm nếu không đủ máy, 3HS/1máy. C. PHƯƠNG TIỆN DẠY HỌC 1. Chuẩn bị của giáo viên: - Máy chiếu 2. Chuẩn bị của học sinh: - Sách giáo khoa, bài tập ở nhà D. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng Hoạt động của thầy gian của trò BÀI TẬP VÀ THỰC HÀNH SỐ 5 (tiết Bài thực hành 1: Học sinh 30-31) - Tìm hiểu đề bài theo dỏi, thực hành 30 Bài thực hành 1: Nhập vào một - Giới thiệu nội dung đề bài lên và trả lời. ph xâu, kiểm tra xem nó có phải là một bảng. palindrome hay không? - Diễn giài: một xâu được gọi là a) Chạy thử chương trình: palidrom nếu ta đọc các kí tư từ Var i, x: byte; a, p: string; phải sang trái sẽ giống khi đọc từ Begin trái sang phải (Xâu đảo) Write(‘nhap vao mot xau’); - Yêu cầu học sinh cho hai ví dụ về Readln(a); xâu palidrom và một ví dụ không x:= length(a); phải là palidrom p:=’ ‘; - Tìm hiểu chương trình gợi ý - Chiếu chương trình lên bảng Học sinh for i:=x downto 1 do p := p+a[i]; theo dỏi, if a = p then write(‘xau la - Hỏi: chương trình sau đây có chức năng làm gì? kết quả in ra thực hành palidrom’) và trả lời. else write(‘xau khong la màn hình như thế nào? palindrome’); readln; - Thực hiện chương trình để học end. sinh kiểm nghiệm suy luận của b) Viết lại chương trình trên trong mình . đó không dùng biến xâu p. - Cải tiến chương trình: Học sinh - Nêu yêu cầu mới: viết lại chương theo dỏi, Cách 1: trình mà không sử dụng biến trung thực hành Var i, x: byte; a: string; gian p. và trả lời.