1. Trang chủ
  2. » Biểu Mẫu - Văn Bản

manh hung

111 19 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

- Vậy em nào biết để thực hiện bài toán rẽ nhánh trên ngôn ngữ lập trình Pascal cho phép người lập trình sử dụng câu lệnh nào.. Đó là câu lệnh If – then.[r]

(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 Mục đích: - Ôn lại kiến thức đã học lớp 10 thuật toán - Giới thiệu các khái niệm chương trình nguồn, chương trình dịch và chương trình đích - Giới thiệu số ngôn ngữ lập trình thông dụng Yêu cầu: - Học sinh nắm các khái niệm 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 vấn đề tốt - Đặt câu hỏi gợi mở giúp học sinh hiểu 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 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 đưa vào máy tính, máy tính xử lý và cho ta kết mong muốn Vậy nhờ vào đâu mà máy tính có thể xử lý các thông tin đó? Để máy tính có thể xử lý thông tin thì nó phải lập trình Bài học hôm ta tìm hiểu ngôn ngữ lập trình là gì và nó có loại ? II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động GV Hoạt động HS (2) BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH 10 ph Thuật toán: Có hai dạng để diễn tả thuật toán:  Liệt kê  Dùng sơ đồ khối VD: so sánh a và b Để giải bài toán ta thực các bước sau: 1) Xác định bài toán 2) Diễn tả thuật toán 3) Viết chương trình 4) Chạy và kiểm tra chương trình 10 ph 15 ph - Ghi bài học lên bảng - Trước tìm hiểu ngôn ngữ lập trình, ta ôn lại phần thuật toán - Em nào nhắc lại khái niệm thuật toán ? - Có dạng để diễn tả thuật toán? - Em hãy diễn tả thuật toán so sánh số a và b theo hai dạng trên? - Như muốn máy tính hiểu và xử lý thông tin chính xác mà ta nhập vào thì người cần phải lập trình - Mọi bài toán có thuật toán có thể giải trên máy tính điện tử, nó bao gồm các bước nào mà ta đã 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 lập trình? - Như sơ đồ diễn tả thuật toán trên, CTDL là cách lưu trữ giá trị a và b Còn câu lệnh để mô tả Khái niệm lập trình: Lập trình là thuật toán Pascal sau: sử dụng CTDL và các câu lệnh ngôn ngữ lập trình cụ thể để mô tả If a > b then writeln(‘max=’,a) liệu và diễn đạt các thao tác Else writeln(‘max =’,b); thuật toán - Chương trình viết ngôn Quá trình chuyển đổi chương ngữ pascal trên là ngôn ngữ bậc cao chính là chương trình nguồn trình làm để máy tính hiểu và xử lý CT dịch CT đích CT nguồn thì nó phải thông qua chương trình dịch để chuyển sang * CT nguồn: - Là CT viết trên ngôn ngữ bậc cao chương trình đích là ngôn ngữ - Được nhiều người sử dụng làm máy ta có quá trình chuyển đổi sau: công cụ lập trình - Thực trên nhiều loại - Em hãy nêu đặc điểm CT nguồn? máy tính khác * CT dịch: - Có chức chuyển đổi CT viết ngôn ngữ bậc cao thành - Em hãy nêu chức CT chương trình ngôn ngữ máy dịch? Có hai loại Thông dịch (Interpreter): Là quá trình dịch lặp lại nhiều lần Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (3) kết thúc chương trình Các bước lặp: 1) Kiểm tra tính đúng đắn câu lệnh chương trình nguồn 2) Chuyển đổi câu lệnh đó thành hay nhiều câu lệnh tương ứng ngôn ngữ máy 3) Thực các câu lệnh vừa chuyển đổi Biên dịch (compiler): Là quá trình dịch lặp lần Các bước lặp: 1) Duyệt, phát lỗi, kiểm tra tính đùng đắn các câu lệnh CT nguồn 2) Dịch toàn CT nguồn thành CT đích và có thể lưu trữ để sử dụng lại 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 sau * CT đích: là ngôn ngữ máy - Chương trình dịch có hai loại thông dịch và biên dịch Các em xem VD SGK - Thông dịch là gì? - Hiện có số ngôn ngữ lập trình thông dụng như: Học sinh theo dỏi, ghi chép và trả lời - Biên dịch là gì? - Nêu đặc điểm thông dịch và biên dịch * Pascal, Turbo C++ là ngôn ngữ ứng dụng nhà trường phục vụ học lập trình sở * C#, C++ lập trình ứng dụng * ASP, ASP.net, J#, JAVA thiết kế Website 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À (5 ph) Củng cố: Qua bài học HS nắm vữ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 Bài tập nhà: Khái niệm lập trình Khái niệm thông dịch và biên dịch Những phát biểu nào đây là sai? A Output chương trình là chương trình trên ngôn ngữ máy B Chương trình viết hợp ngữ không phải là Input hay Output chương trình dịch nào C Để biên soạn 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 khác D Chương trình dịch là thành phần chính ngôn ngữ lập trình bậc cao Phát biểu nào đây là đúng: A Chương trình là dãy các lệnh tổ chức theo các quy tắc xác định ngôn ngữ lập trình cụ thể B Trong chế độ thông dịch câu lệnh chương trình nguồn dịch thành câu lệnh chương trình đích C Mọi bài toán có chương trình để giải trên máy tính D Nếu chương trình nguồn có lỗi cú pháp thì chương trình đích 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 Mục đích: - Giúp học sinh hiểu thành phần 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 tên, tên chuẩn, tên dành riêng 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, và biến 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: - thành phần 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 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 ) Nêu khái niệm thông dịch và biên dịch, hai thành phần này chươg trình dịch khác chỗ nào? Nêu các bước thực thông dịch và biên dịch F NỘI DUNG GIẢNG DẠY I ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (3ph) Như các em đã biết, 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 và giao tiếp thì nó cần có ngôn ngữ, đó là ngôn ngữ lập trình Ngôn ngữ lập trình soạn thảo trên các môi trường lập trình tương ứng ngô ngữ Pascal soạn thảo trên môi trường Turbo Pascal, nhằm giải các bài toán người yêu cầu Vậy ngôn ngữ lập trình có thành phần nào và nó có quy tắc không Bài học hôm thầy giới thiệu cho các em hiểu rõ vấn đề này II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động GV Hoạt động HS (5) - Ghi bài học lên bảng - Em nào cho biết ngôn ngữ Học sinh dỏi, lập trình có thành phần, theo ghi chép và thành phần đó là gì? Các thành phần trả lời Có thành phần: - Các ký tự sử dụng  Chữ cái ngôn ngữ để viết  Cú pháp chương trình  Ngữ nghĩa - Nhìn vào bảng chữ cái các em có thấy khác với chữ cái a) Chữ cái: Là tập các ký tự dùng ngôn ngữ tự nhiên để viết chương trình không? - Ký tự là chữ cái: ‘a’ ’z’,‘A’ ‘Z’ - Số thập phân: 0, 1, , 8, - Trong ngôn ngữ tự nhiên Học sinh - Các ký tự đặc biệt: #, $, -, +, dỏi, sử dụng bảng chữ cái theo Chú ý: phải có cú pháp VD các ghi chép và - Bảng chữ cái các ngôn ngữ khác thành phần câu có chủ trả lời có thể khác số ký tự: ngữ, vị ngữ VD: Pascal sử dụng dấu ‘’ - Trong ngôn ngữ lập trình C++ sử dụng dấu “”, \, và ! cần phải có cú b) Cú pháp: Là quy tắc để viết pháp - Em nào cho thầy biết cú chương trình Học sinh VD: ten a (không hợp lệ vì có khoảng pháp ngôn ngữ lập trình theo dỏi, dùng để làm gì? trắng) ghi chép và Var x integer; (không hợp lệ vì - Cú pháp là quy tắc để viết trả lời chương trình, dựa vào đó mà thiếu dấu ‘:’) người lập trình và chương c) Ngữ nghĩa: Là xác định ý nghĩa trình dịch biết tổ hợp nào các ký tự bảng các tổ hợp ký tự chương trình chữ cái là hợp lệ Các em xem VD: A và B nhận giá trị nguyên các VD sau: X và Y nhận giá trị thực  ten a Ta sử dụng phép toán ngôn ngữ  Var x integer; lập trình sau: - Ngoài cú pháp, ngôn A+B: là cộng hai số nguyên ngữ lập trình còn có ngữ X+Y: là cộng hai số thực nghĩa Chú ý: - CT phát lỗi cú pháp - VD sau cho các em hiểu rõ trước, lỗi ngữ nghĩa sau ngữ nghĩa - Khi lỗi cú pháp không còn thì chương trình thực - Khi chương trình thực trên liệu cụ thể thì lỗi ngữ nghĩa - Em nào có thể cho biết Học sinh dỏi, phát chương trình bắt đầu thực theo VD: thì chương trình dịch phát ghi chép và lỗi cú pháp dễ dàng trả lời Một số khái niệm hay khó khăn ngữ nghĩa? a) Tên Khái niệm: Tên là dãy liên tiếp không quá 127 ký tự bao gồm chữ số, chữ cái dấu gạch - Để có thể viết chương BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH 12 ph 20 ph (6) Quy tắc đặt tên: - Không có khoảng trắng - Không bắt đầu chữ số - Không chứa ký tự đặc biệt VD: 43c (tên sai) A_c (tên đúng) Ten_f (tên đúng) Hoa# (tên sai) Chú ý: - Tên dùng để quản lý và phân biệt các đối tượng chương trình - Để gợi nhớ nội dung đối tượng - Tên có loại: * Tên dành riêng (từ khóa): Dùng với ý nghĩa riêng xác định Không sử dụng với các mục đích khác VD(SGK) * Tên chuẩn: Dùng với ý nghĩa định nào đó, có thể sử dụng với các mục đích khác VD(SGK) * Tên người lập trình tự đặt: Không trùng với tên dành riêng trình không còn lỗi cú pháp ta cần chú ý số quy tắc Học sinh cách đặt tên theo dỏi, ghi chép và trả lời b) Hằng và biến * Hằng: Hằng là đại lượng có giá trị không thay đổi quá trình thực chương trình Có loại hằng: + Hằng số học: là các số nguyên hay số thực: 3, -3, + Hằng logic: True False + Hằng xâu: Là chuỗi ký tự bảng mã ASCII, nằm cặp dấu nháy đơn ( ‘’ ) Pascal Chú ý: - Hằng dấu ‘’ Pascal là “” VD: ‘‘s’’ có xâu là ‘s’ - Hằng số thực E biểu diễn số mũ 10 VD: 2.1E-6 = x 10-6 -2.236E01 = -2.236 x 1001 = -22.36 - Có thể sử dụng Hexa, cần thêm $ trước giá trị biểu diễn: VD: $A116 = 16110 * Biến: Là đại lượng đặt tên, dùng để lưu trữ giá trị và giá trị có thể thay đổi quá trình thực chương trình - Ngoài quy định phải đặt tên cho chương trình thì cần phải khai báo và biến c) Chú thích - Em nào xét xem các VD sau VD nào có cách đặt tên đúng, vì sao? Học sinh theo dỏi, ghi chép và trả lời - Các em xem các VD SGK và giải thích các ký hiệu E số học - Em nào có thể lấy VD để làm rõ khái niệm biến VD: A, B,tong là biến nguyên A:=5; B:=6; Tong:=A+B; Tong:=A+B+A; Giá trị tổng là thay đổi - Đoạn chú thích chương trình nhằm giúp người lập trình nêu các câu dẫn mà (7) - Trong Pascal sử dụng cặp dấu không cần phải tuân thủ quy {và}hoặc (*và*) tắc ngôn ngữ lập trình - 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 III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: thành phần 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 Bài tập nhà: Các bài tập 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 Mục đích: - Giúp học sinh ôn lại kiến thức đã học 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 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, chương trình đã dịch thông suốt, hệ thống không báo lỗi Có thể khẳng định ta đã có 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 chương trình đã thực Có thể khẳng định chương trình không còn chứa lỗi cú pháp hay không? Tại sao? (Không thể khẳng định được, vì các câu lệnh khác chưa kiểm tra) Câu 3: Sau chương trình đã 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 chương trình nguồn hay không? (Có: Vì cần KT ngữ nghĩa) Câu 4: Trong 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 lỗi nhanh hơn? Vì sao? (Trình biên dịch phát lỗi nhanh vì nó có nhiệm vụ phát lỗi cú pháp đầu tiên) Câu 5: Hãy chọn biểu diễn các biểu diễn đây: A) end B) ‘a078’ C) 78 D) *63 E) 5.63 F) -96 Câu 6: Hãy chọn biểu diễn tên các biểu diễn đây: A) 75 B) abcd C) 78ab D) ab68 E) ‘abc’ F) (xyz) Câu 7: Hãy chọn đáp án là từ khóa (tên dành riêng) Pascal: A) begin B) ‘begin’ C) integer D) var E) real F) end Câu 8: Hãy chọn đáp án là tên chuẩn Pascal: A) real B) uses D) integer E) byte C) const F) sqr (9) 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 ngôn ngữ hay không và sao? (Có thể, vì chương trình biên dịch không kiểm tra lỗi chú thích) Câu 10: Hãy nêu VD (6 tên) mà người dùng đặt sai ngôn ngữ lập trình Pascal và lỗi, cách sửa các tên đó cho đúng Câu 11: Bổ sung các bài tập 4, 5, 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 Mục đích: - Giúp học sinh nắm cấu trúc chung chương trình đơn giản - Nhận biết các phần chương trình đơn giản 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ấu trúc chương trình đơn giản - Biết cách đặt tên, khai báo biến 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, và biến 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 ngôn ngữ lập trình và ngôn ngữ lập trình có cấu trúc người lập trình viết chương trình cho đúng quy tắc Trong ngôn ngữ lập trình Pascal hay C+ + đưa cấu trúc riêng nó Ta tìm hiểu cấu trúc nó là gì? II NỘI DUNG BÀI HỌC Thời gian 15 ph Nội dung ghi bảng Hoạt động GV BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH - Ghi bài học lên bảng - Trên bảng là cấu trúc chương trình viết trên ngôn ngữ lập trình Pascal Em nào cho thấy biết phần nào là phần khai báo, phần nào là phần thân chương trình? Cấu trúc chung *Ngôn ngữ lập trình có phần: - Phần khai báo - Phần thân - Trên bảng cấu trúc chung chương trình đơn giản bao Hoạt động HS Học sinh theo dỏi, ghi chép và trả lời (11) gồm phần, đó là phần khai báo và phần thân chương trình - Em nào đã biết cú pháp phần phần khai báo này không? - Chúng ta tìm hiểu rõ các phần này mục 20 ph Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, Các thành phần chương - Đối với phần khai báo em nào ghi chép và cho thầy ví dụ khai báo tên trình chương trình tính diện tích hình trả lời a) Phần khai báo chữ nhật? * Khai báo tên chương trình: - Trong phần khai báo tên có bắt Cú pháp: buộc không? Program <tên chương trình>; - Mỗi ngôn ngữ lập trình có Chú ý: Tên chương trình người sẵn thư viện cung cấp số lập trình tự đặt theo cú pháp quy chương trình đã lập sẵn Để tắc Pascal sử dụng các chương trình đó ta VD: program dtHCN; khai báo thư viện chứa nó - Em nào lấy VD khai báo thư * Khai báo thư viện viện Cú pháp: Uses <tên các thư viện>; VD: Uses crt; Chú ý: Trong Pascal khai báo Học sinh thư viện crt ta dùng lệnh clrscr - Em nào có thể nhắc lại khái theo dỏi, phần thân chương trình để niệm hằng? Có loại ghi chép và xóa kết trước chương trình trả lời trên màn hình - Em hãy lấy VD khai báo cho loại khác * Khai báo Cú pháp: - Các em chú ý khai báo Const <tên hằng> = <giá trị thường sử dụng cho hằng>; giá trị xuất nhiều lần VD: Const n = 100; chương trình Xau = ‘hang xau’; - Phần khai báo là khai Học sinh Lg = true; dỏi, báo biến Em nào nhắc lại khái theo * Khai báo biến (BÀI HỌC SAU) b) Phần thân chương trình Cú pháp: Begin <dãy các câu lệnh>; End niệm biến là gì? Nó dùng để làm ghi chép và trả lời gì? - Cách khai báo biến bài học sau ta nghiên cứu kỹ - Phần thân chương trình khóa begin và kết thúc từ khóa end (12) - Các em cho biết dấu (;) dùng để VD1: đoạn thân chương trình tính làm gì? tổng hai số a và b Begin Writeln(‘nhap a va b’); - Các em xem VD sau SGK readln(a,b); lại không có phần khai báo Tong:=a+b; biến Writeln(‘tong cua a va b la:’,tong); - GV nhắc lại ý nghĩa biến End cách nêu thêm VD bài trước đã học viết thân chương trình: VD: A, B,tong là biến nguyên Ví dụ chương trình đơn giản A:=5; B:=6; (SGK) Tong:=A+B; Tong:=A+B+A; Giá trị tổng là thay đổi 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À (5 ph) Củng cố: Qua bài học HS nắm vữ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 Bài tập nhà: Nêu cấu trúc chung chương trình Pascal? Khi nào thì chương trình không có phần khai báo? Nêu ví dụ minh họa Nếu khai báo thừa biến hằng; tức là khai báo các biến, không dùng đến phần thân chương trình, chương trình dịch có báo sai không, vì sao? (Khô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 Mục đích: - Giúp học sinh nắm số kiểu liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic - Xác định kiểu cần khai báo liệu đơn giản 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 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 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 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 ) Nêu cấu trúc chung chương trình Pascal Khi nào thì chương trình không có phần khai báo? Nêu 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 liệu Như liệu là thông tin đã mã hóa máy tính Dữ liệu ngôn ngữ lập trình có số kiểu chuẩn định mặc dù thông tin đa dạng Mỗi kiểu đặc trưng tên kiểu (VD biến kiểu nguyên mang giá trị là số nguyên ), miền giá trị, 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 kiểu liệu đó là gì ta sang bài học II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động GV BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU - Ghi bài học lên bảng CHUẨN VÀ KHAI BÁO BIẾN (tiết 5) ph Kiểu nguyên Hoạt động HS Học sinh theo dỏi, - Trong toán học ta có các tập ghi chép và trả lời số gì? - Kiểu nguyên tương ứng với tập số nào? - Các kiểu nguyên lưu trữ (14) ph và kết tính toán là số đúng Giá trị nó là phần nguyên không có số dư số thập phân - Tuy nhiên tập số nguyên là vô hạn và có thứ tự, đếm máy tính kiểu nguyên là hữu hạn, có thứ tự Bảng trên là bảng kiểu nguyên Chú ý: Kiểu Byte và Word biểu - Kiểu số thực lưu trữ và diễn cho số nguyên dương kết tính toán gần đúng với sai số không đáng kể Miền Kiểu thực giá trị mở rông so với kiểu số nguyên, số thực máy tính là rời rạc và hữu hạn - Em nào cho thầy biết phép toán sử dụng kiểu số nguyên và kiểu số thực thì kết cho kiểu gì? (Kiểu số thực) ph - Kiểu kí tự có tập giá trị là các kí tự bảng mã ASCII, dùng thông tin là các kí tự, xâu (string) Vì hầu Kiểu kí tự hết các ngôn ngữ lập trình có kiểu kí tự để làm việc với văn - Kiểu kí tự có phải là kiểu có Chú ý: thứ tự, đếm không ? Dựa -Việc so sánh các kí tự thực vào đâu để thực việc so cách so sánh các mã sánh các kí tự? ASCII tương ứng - Việc so sánh các kí tự VD: thực cách so sánh các Học sinh - A có mã ASCII là 65, a = 97 mã ASCII chúng theo dỏi, - B có mã ASCII là 66, b = 98 ghi chép và => A < B, a < b - Kiểu logic Pascal có trả lời giá trị là True (đúng) và False Kiểu logic (sai), dùng kiểm tra điều kiện tìm giá trị biểu thức logic - Theo em kiểu logic có phải là kiểu có thứ tự đếm không? Chú ý: - Kiểu Logic là kiểu có thứ tự đếm (Là kiểu có thứ tự đếm được) - Một số ngôn ngữ lập trình Học sinh dỏi, - Trong quá trình lập trình, người lập không dùng kiểu logic C+ theo trình cần tìm hiểu đặc trưng các +, thay vào đó là các giá trị ghi chép và trả lời kiểu liệu chuẩn xác định (false), khác (true) dịch và sử dụng để khai báo biến - Em nào nhắc lại khái niệm ph Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (15) Khai báo biến Cú pháp: Var <DS biến>:<Kiểu DL>; * Trong đó: - DS biến: là nhiều tên biến, biến cách dấu phẩy (,) - Kiểu liệu là các kiểu chuẩn (real, integer, ) kiểu người dùng tự định nghĩa (chương IV) - Sau từ khóa var có thể khai báo nhiều danh sách biến khác VD1: - Khai báo biến bài toán tính diện tích hình chữ nhật lấy giá trị vào giá trị nguyên: biến - Ý nghĩa sử dụng biến để làm gì? - Trong khai báo biến, lưu ý biến là số, ta nên khai báo biến số hàm const VD: Khai báo biến cho bài toán tính diện tích hình thang có chiều cao 5dv: Const cao = 5; Var daynho,daylon: real; - Tên biến phải gợi nhớ để người lập trình và người xem Var a,b: integer; chương trình biết ý nghĩa sử dt: integer; dụng biến đó VD2: - Khai báo biến cho bài toán - Khi khai báo biến phải chú ý nhập kí tự từ bàn phím: đến phạm vị giá trị, VD biến Var Kitu: char; khai báo để lưu trữ số học sinh lớp là kiểu byte, Chú ý: biến khai báo để lưu trữ học - Tên biến phải gợi nhớ sinh trường là kiểu word - Tên biến không quá dài, quá ngắn - Khi khai báo biến phải chú ý đến VD: khai báo biến mảng phạm vi giá trị Var mang:array[1 10] of VD2: Trong VD1 khai báo: integer; Var a,b: real; Biến mang chứa 10 giá trị dt: integer; => Là sai thời điểm - Các biến đơn chứa giá trị thời điểm - Các biến kiểu liệu có cấu trúc có thể chứa giá trị thời điểm 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 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 <danh sách biến>:<kiểu liệu>; Kiểm tra 15ph:(15 ph) Câu 1: Hãy chọn biểu diễn các biểu diễn đây: A) begin B) ‘12ab’ C) -102 D) 15E) A92 F) ‘var’ Câu 2: Hãy chọn biểu diễn tên các biểu diễn đây: A) bien B) 92A C) pi D) A92 E) ‘abc’ F) (xyz) Học sinh theo dỏi, ghi chép và trả lời (16) 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: x y S  z  x* y  z x y a) là biểu thức nên không khai báo) b)  S sin  x  y  (trong đó hàm sin() (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 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ệ Yêu cầu: - Học sinh hiểu lệnh gán - Viết lệnh gán - Viết 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 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 ) Nêu các kiểu liệu đã học và ý nghĩa sử dụng kiểu liệu đó Khai báo biến cho bài toán tính diện tích hình tròn Sửa lỗi cho khai báo bài toán sau: Var x_y:real 3x: real; E = 2.34; Đáp án: const pi=3.14; var r, dt:real; Const e = 2.34; Var x_y:real; x: real; (nên khai báo số) (thiếu dấu ;) (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 liệu, cách khai báo biến Tuy nhiên liệu số học thì Pascal có xử lý giống các phép toán thông thường không? Như cộng, trừ nhân chia (18) Đặc biệt là phép chia, thì cách thực các phép chia trên kiểu liệu có giống không? VD phép chia số nguyên, phép chia số thực, Bài học hôm ta tìm hiểu kỹ vấn đề trên II NỘI DUNG BÀI HỌC Thời gian ph ph ph Nội dung ghi bảng Hoạt động GV BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN (tiết 6) - Ghi bài học lên bảng - Để mô tả thuật toán, ngôn ngữ lập trình xác định và sử dụng số khái niệm bản: Phép toán, biểu thức, gán giá trị - Đối với phép toán toán học và phép toán Pascal, các em xem trên bảng thấy có nhiều kí hiệu tương ứng là khác VD phép chia là dấu (/) Phép toán Chú ý: - Kết phép toán quan hệ cho giá trị logic - Một ứng dụng phép toán logic là để tạo các biểu thức phức tạp từ các quan hệ đơn giản VD: div = 1; mod = 3; Not(true) = false; True and False = False; True or False = True Biểu thức số học * VD biểu thức số học: - Với ý nghĩa sử dụng các phép toán em nào có thể đưa đáp án cho các phép toán sau: div = ?; mod = ?; Not(true) = ?; True and False = ?; True or False = ?; - Trong lập trình biểu thức số học là biến kiểu số, số, các biến kiểu số và các số liên kết với số hữu hạn phép toán số học - Em nào có thể điền kết biểu thức TP các biểu thức toán học tương ứng? - Các em chú ý mức ưu tiên các phép toán sau: (bảng hình bên) ph * Mức ưu tiên các phép toán: Hoạt động HS Học sinh theo dỏi, ghi chép bài học Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (19) 15 ph Chú ý: - Các phép toán trên thực dấu ngoặc tròn ( ) đầu tiên - Phép toán IN để xác định biểu thức có tập hợp không VD: IN [1 14] => kq là True Hàm số học chuẩn *Để lập trình thuận tiện, các ngôn ngữ lập trình có thư viện chứa số chương trình tính giá trị hàm toán học thường dung Các chương trình gọi là các hàm chuẩn * Một số hàm chuẩn thường dung: + Các hàm kiểu thực nguyên: - Round(x)  Cho giá trị là số nguyên gần x - Trunc(x)  Cho giá trị là phần nguyên x + Các hàm kiểu thực: - SQR(x)  Cho giá trị là x2 - SQRT(x) Cho giá trị là x (x>=0) x - Đối với các phép toán là không đủ quy tắc để biểu diễn Học sinh các phép toán học Do đó theo dỏi, TP đưa các hàm số học chuẩn ghi chép và để thực các phép toán đó trả lời - Ta có bảng các hàm chuẩn sau: + Các hàm kiểu thực nguyên: - SQR(x)  Cho giá trị là x2 - SQRT(x) Cho giá trị là x (x>=0) Học sinh theo dỏi, x - ABS(x) Cho giá trị là ghi chép và Đối với các biểu thức x kết trả lời có thể là kiểu thực + Các hàm kiểu thực: - LN(x) Cho giá trị là lnx (x>0) - EXP(x)Cho giá trị là ex - SIN(x) Cho giá trị là sinx - COS(x)Cho giá trị là cosx - ABS(x) Cho giá trị là - LN(x) Cho giá trị là lnx (x>0) - EXP(x)Cho giá trị là ex - Dựa vào các hàm đã cho, em - SIN(x) Cho giá trị là sinx hãy biểu diễn các biểu thức sau - COS(x)Cho giá trị là cosx sang dạng TP: VD: Biểu diễn biểu thức toán học x2 + x => ? TP sau: sin(3x3) + cosx =>? x x + => sqr(x) + sqrt(x) sin(3x ) + cosx =>sin(3*x*sqr(x)) - Ngoài các hàm số học chuẩn, +cos(x) để sử dụng các phép toán quan + Các hàm khác: hệ TP cung cấp biểu thức quan - INC(k,i): Tăng giá trị k lên i lần hệ theo cú pháp sau: - DEC(k,i): Giảm giá trị k lên i lần - Biểu thức quan hệ thực theo trình tự: Tính giá trị biểu thức trước thực phép toán quan hệ theo mức ưu * Trong đó: Biểu thức và Biểu tiên phép toán thức có cùng kiểu liệu xâu cùng kiểu số học - Kết biểu thức quan hệ VD: là giá trị logic true false i+3 > j+1; VD: điều kiện để điểm M(x,y) Biểu thức quan hệ Cú pháp: Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (20) x >= x+1; thuộc hình tròn tâm I(a,b), bán kính R là: Biểu thức logic * Biểu thức logic đơn giản là biến logic logic * Giá trị biểu thức logic là true false VD: Tập giá trị x: ≤ x ≤ → (1<= x) and (x <= 6) - Cuối cùng là câu lệnh gán, đây Điều kiện x là số chẵn không chia hết là lệnh cho 4: ngôn ngữ lập trình (x mod = 0) and (x mod <>0) Câu lệnh gán Cú pháp: <tên biến> := <biểu thức>; - 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 x,y : real; thông thường: * Gán: Ý nghĩa Biểu diễn TP a := x+y; Cộng thêm Trừ Nhân thêm Chia S := S + i S := S - i S := S * i ho Học sinh theo dỏi, ghi chép và trả lời S := S / iChú ý: - Biểu thức bên phải cần xác định giá trị trước gán - Kiểu biểu thức bên phải dấu gán phải phù hợp với kiểu biến gán III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vữ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 Bài tập nhà: Viết các biểu thức sau TP  a) S = (x3+ sin(x2y))2 b) S tan(3 x)  cot( x  ) c) S  b  4ac S x  x  y  3xy 2a 3 e) S sin ( x cos x) sin ( x cos x) f) d)  S tan(3x)  cot( x  ) (21) 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 <> 0) Viết biểu thức logic cho bài toán: In số lượng (lấy tên biến là SL) học sinh đạt loại khá với điều kiện DT > 6.5 DV > 6.5 và DTB > 6.5 Gợi ý: ((DT > 6.5 ) or (DV > 6.5 )) and (DTB > 6.5) (22) 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 Mục đích: - Học sinh biết các lệnh vào/ra đơn giản để nhập liệu từ bàn phím đưa liệu màn hình - Viết số lệnh vào/ra đơn giản - Biết cách soạn thảo, dịch, thực và hiệu chỉnh chương trình 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 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 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 E KIỂM TRA BÀI CŨ ( 5ph ) Các bài tập đã giao nhà E NỘI DUNG GIẢNG DẠY I ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph ) Các em đã tìm hiểu các kiểu 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 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 xử lý các thông tin đó) Bài học hôm ta tìm hiểu môi trường lập trình Pascal các thủ tục hay hàm đơn giản II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng BÀI 7-8: CÁC THỦ TỤC VÀO/RA, SOẠN THẢO CHƯƠNG TRÌNH (tiết 8) 15 Nhập liệu từ bàn phím * Thủ tục nhập: Hoạt động thầy Hoạt động trò - Ghi bài học lên bảng - VD: Bài toán tính diện tích Học hình tròn: theo program dt_hinhtron; ghi uses crt; sinh dỏi, chép (23) ph 20 ph const pi=3.14; var r,s:real; bài học begin clrscr; write('nhap ban kinh ');readln(r); s:=pi*sqr(r); writeln('dien tich hinh tron co ban kinh ',r:5:2,' la',s:6:2); * Trong đó: readln - Danh sách biến vào có thể có end Cú pháp: Read(<danh sách biến vào>); Readln(<danh sách biến vào>); nhiều biến, nhiều biến thì biến cách dấu phẩy (,) -VD trên là chương trình đơn giản Input chương VD: trình trên là gì? Để đưa thông - Read(r) Readln(r); Nhập giá tin vào thì thông qua câu lệnh trị cho bán kính r nào? (Khi thực chương - Read(r1, r2, ) Readln(r1, trình người ta nhập giá trị bán r2, ); Nhập nhiều giá trị cho bán kính thông qua câu lệnh nhập kính r Read/Readln) - Mỗi lần nhập giá trị cho bán kính thì giá trị đó gán cho Đưa liệu màn hình biến r * Thủ tục xuất: - Khi nhập nhiều giá trị cho biến Cú pháp: thì xong thao tác nhập sử Write(<danh sách kết ra>); dụng phím Enter để nhập giá trị Writeln(<danh sách kết ra>); - Chú ý nhập giá trị biến thì phải tương ứng với kiểu * Trong đó: - Write: Khi thực chương trình biến - Em nào có thể sử dụng máy trỏ nằm trên dòng - Writeln: Con trỏ tự động xuống tính đã có sẵn chương trình nhập giá trị cho biến r ? dòng - Danh sách kết ra: Có thể là tên - Để đưa câu dẫn 'nhap ban kinh ' biến đơn, biểu thức, xâu ký tự và kết tính diện tích màn số hình thì người ta sử dụng câu - Đối với biến đơn, biểu thức, lệnh nào ? (câu lệnh xuất Write/ số thì không có dấu nháy đơn (‘’) Writeln) VD: - write('nhap ban kinh '); in : nhap - Em nào cho thầy biết thực ban kinh chương trình thì thủ tục - writeln('dien tich hinh tron co ban Write và Writeln khác kinh ',r:5:2,' la',s:6:2); In ra: dien tich điểm nào? hinh tron co ban kinh 2.00 la 12.56 - Em nào cho thầy biết thực Chú ý: chương trình VD trên, - Các thủ tục Readln Writeln có thủ tục write('nhap ban kinh '); thể không có tham số in nào? VD: Readln; (Tạm dừng xem kq - Còn câu lệnh chương trình) Writeln; (Tự động đưa writeln('dien tich hinh tron co ban kinh ',r:5:2,' la',s:6:2); in trỏ xuống dòng) nào ta nhập bán kính - Quy cách ra: Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (24) :<độ rộng>:<số chữ số thập phân> :<độ rộng> 2? - Em nào cho biết hiên tượng gì xảy câu lệnh in kết Học sinh dỏi, Soạn thảo, dịch, thực và thay đổi sau: theo writeln('dien tich hinh tron co ban ghi chép và hiệu chỉnh chương trình kinh ',r ,' la', s); ? In kết là trả lời Thanh bảng chọn Tên tệp CT ph Dòng Cột *Thao tác thực hiện: - Soạn thảo: Gõ nội dung chương trình - Lưu chương trình: Nhấp phím F2 - Mở CT có sẵn TP: Nhấn F3 - Kiểm tra chương trình: F9 - Biên dịch chương trình: Alt+F9 - Chạy chương trình: Ctrl+F9 - Đóng cửa sổ chương trình: Alt+F3 - Thoát khỏi Pascal: Alt+X Vì Pascal đưa quy cách Học sinh kết theo dỏi, VD: writeln('dien tich hinh tron co ghi chép và trả lời ban kinh ',r:5:2,' la',s:6:2); - Em có nhận xét gì cách viết trên: ( r dành vị trí đó có vị trí dành cho chữ số thập phân, vị trí cho phần nguyên và vị trí cho dấu (.), còn diện tích có vị trí, vị trí cho phần thập phân và vị trí cho phần nguyên, vị trí cho dấu (.)) - Để có thể thực chương trình viết ngôn ngữ lập trình thì ta cần soạn thảo chương trình trên môi trường ngôn ngữ lập trình cụ thể Ngôn ngữ lập trình Pascal là ví dụ Học sinh dỏi, và ta tìm hiểu môi trường theo ghi chép và lập trình này trả lời III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Thủ tục nhập liệu: Read/Readln - Thủ tục xuất liệu: Write/Writeln - Quy cách định dạng số Bài tập nhà: Chuẩn bị bài tập và thực hành số 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 Bài thực hành 3, 4, trang 35 SGK (25) Tiết 8,9_PPCT Ngày soạn: Ngày dạy: BÀI TẬP VÀ THỰC HÀNH SỐ A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Học sinh bước đầu lập trình các chương trình đơn giản - Thao tác thành thạo trên môi trường Pascal Yêu cầu: - Học chuẩn bị bài tập nhà 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 thực 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 chạy chương trình giải phương trình bậc theo hướng dẫn SGK trang 34 Bài 3: Viết chương trình nhập số a (a>0) tính và đưa diện tích phần gạch chéo hình bên, kết làm tròn đến 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 số khác - write('dien tich phan lai la ',sqr(a)*pi/2:10:2); Bài 4: Lập trình tính và đưa màn hình vận tốc v vật rơi từ độ cao h, biết v  gh , đó g là gia tốc rơi tự và g=9,8m/s2 Độ cao h(m) 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 số khác v := sqrt(2*g*h); writeln(‘van toc cua vat cham dat la: v = ’, v:8:2,’m/s’); Bài 5: Hãy lỗi (ba lỗi dịch, lỗi thực hiện) chương trình Pascal sau: Var x,y,z = integer; {dong 1} (26) Begin {dong 2} X := 200; {dong 3} 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 phải đổi thành dấu (:) - Lỗi 2: Thiếu dấu (;) dòng - Lỗi 3: Ký hiệu sai lệnh gán dòng - Biểu thức X*Y không 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ị biểu thức 2x4 - 3x3 + 4x2 - 5x + Gợi ý: - Xác định Input và Output - Viết chương trình - Nhập thử các số khác - Y := x*(x*(x*(2*x - 3) + 4) -5) + 6; Bài 7: Viết chương trình tính giá trị biểu thức y z B (1  z ) a  x3 x Gợi ý: - Xác định Input và Output - Viết chương trình - Nhập thử các số khác - 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 số a, b Sau đó hoán đổi giá trị số đó: Gợi ý: Cho phép dùng biến trung gian Dùng biến trung gian: tam tam:=a; a:=b; b:=tam; Không dùng biến trung gian: a := a + b; b := a - b; 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 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; (27) 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ự) Gợi ý: Cách 1: (y<=1) and (abs(x) <= y) Cách 2: ((y < 1) or (y = 1)) and ((abs(x) < y) or (abs(x) = y)) Chú ý: (y<=1) and (abs(x) <= 1) là sai: Giả sử A(0,7 ; 0,5) không nằm vùng gạch chéo (28) Bài 11: Bài tập 2.24 Sách bài tập, trang 12 Đáp án đúng D Gợi ý: - Điều kiện để tọa độ điểm nằm trên ngoài đường tròn là: (x*x + y*y ≥ 25) nên là đáp án D và E - Vì tọa độ điểm nằm trên đường biên nên có đk (abs(x) ≤ 5) and (abs(y) ≤ 5) thỏa mãn vì có dấu xảy Bài 12: BT 2.25 Sách bài tập, trang 13 Gợi ý: Tính d1, d2  d = d2 - d1 Hoặc d = (30-10)t Bài tập tương tự: Trên đoạn đường có điểm xuất phát X và Y cách xa A km Một người xe máy xuất phát từ điểm X với tốc độ B km/h, người ôtô xuất phát từ điểm Y với tốc độ C km/h (A ≥ B +C ) Hãy viết chương trình in kết sau bao lâu thì người gặp và gặp vị trí cách X bao xa biết A, B, C nhập từ bàn phím Bài 13: Bài tập 2.26 Sách bài tập, trang 13 Hiền gọi điện thoại trao đổi với Minh, phút dùng điện thoại phải trả a đồng Cuộc gọi kéo dài t phút Hãy viết chương trình tính và đưa màn hình số tiền mà mẹ bạn Hiền cuối tháng phải toán cho trao đổi này Các số liệu a và t (nguyên dương) nhập từ bàn phím Bài 14: Bài tập 2.27 Sách bài tập, trang 13 Theo quy định nhà trường, trường hợp không đeo thẻ học sinh bị trừ điểm thi đua lớp, trường hợp nói chuyện lớp bị trừ điểm và trường hợp muộn trừ điểm Sổ đầu bài ghi nhận tháng có t trường hợp không đeo thẻ, n trường hợp nói chuyện và m trường hợp muộn Hãy nhập các liệu này vào từ bàn phím và đưa màn hình số điểm thi đua mà lớp bị trừ tháng Tất các liệu là số nguyên Bài 15: Bài tập 2.30 Sách bài tập, trang 13 Để bù đắp thiệt hại cho nhân dân công tác phòng chống dịch cúm gia cầm H5N1, nhà nước hỗ trợ cho các hộ có gia cầm bị thiêu hủy theo định mức sau: gia cầm từ tháng tuổi trở xuống a đồng, gia cầm trên tháng tuổi và tháng tuổi là b đồng, từ tháng tuổi trở lên là c đồng Một hộ nông dân có đàn gia cầm n phải thiêu hủy, đàn có m tháng tuổi, số đó có k từ tháng tuổi trở xuống (0 <= k <= m <= n <= 10000) Hãy lập trình nhập liệu a, b, c, m, n, k từ bàn phím, tính và đưa màn hình số tiền hỗ trợ nhà nước chi trả cho hộ nông dân trên Tất các liệu vào là số nguyên Gợi ý: - Có k tháng => có a*k đồng - Có m tháng đó bao gồm k tháng => có b*(m-k) đồng - Có tất n 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 số thực a và b, tính và đưa màn hình: a) Trung bình cộng các bình phương số đó b) Trung bình cộng các giá trị tuyệt đối số đó Bài 17: Bài tập 2.39 Sách bài tập, trang 17 Cho số nguyên N có chữ số Hãy dùng các phép DIV và MOD tính tổng các chữ số 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; (29) Tong := tong + (kq div 10); Kq := kq mod 10; Tong := tong + kq; (30) 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 Mục đích: Học sinh ôn lại các kiến thức đã học các nội dung chính sau: Cấu trúc chung chương trình Cách khai báo biến 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 học sinh Yêu cầu: - Học sinh đã ôn lý thuyết và làm số bài tập có nội dung liên quan nhà - Tích cực tham gia làm bài tập - Học sinh trật tự 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 lựa chọn đúng sai có câu hỏi vì - Một số câu hỏi tự luận để học sinh tư 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 loại nào để xác định trình tự thực các phép tính? Trả lời: Chỉ dùng loại đó là dấu ngoặc tròn () Câu 2: Chương trình dịch Pascal cấp phát bao nhiêu byte nhớ cho các biến 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; x, y, z: real; w: word; (2 byte) (6 byte) (2 byte) Câu 3: Chỉ các lỗi 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 vị trí khai báo sai ) 5x, y2: integer; (Lỗi đặt tên sai) Câu 4: Em có nhận xét gì các khai báo sau? Hãy viết lại các khai báo cho hợp lý (31) 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 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 Pascal: y3 a) x 1 sin x d) cos x  a  s inx b) a  cos x c) x+ y x 2+ y x  y4 e) x  y  x3  Trả lời: a) abs(x+sqr(sqr(y)))/sqrt(2*sqr(x)-4*x) c) (2*exp(x+y)+x-y*sqr(y))/(sqr(x)+sqr(y)) e) sqrt(x+y)+abs(x*sqr(x)-1) f) (abs(x+sqr(y)*sqr(y)))/(sqrt(2*sqr(x)-4*y)) f) 2x2  x b) (a+sinx)/sqrt(sqr(x)+cos(x)) d) sqr(sinx)/cosx*sqr(cos(x)) Đề kiểm tra 15ph Câu 1: Viết chương trình giải các bài toán sau: 2e x  y  x  y x2  y a/ A = b/ B = e | a  sin ( x)  x | Câu 2: Mỗi học sinh hãy nhập vào số nguyên dương từ bàn phím, nêu các bước thực chương trình để đưa kết đúng Lưu ý: giá trị nhập cho a và b không trùng (32) 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 Mục đích: - Học sinh hiểu nhu cầu cấu trúc rẽ nhánh 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 Yêu cầu: - Học sinh chú ý học tập - Sử dụng cấu trúc rẽ nhánh mô tả thuật toán 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 sơ đồ khối, thực 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 E NỘI DUNG GIẢNG DẠY I ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph ) Trong sống các em thường gặp tình lúc đúng, lúc sai Có nhiều vấn đề mà cách giải lại theo các hướng khác Đó là trường hợp phân nhánh Vậy thì các thông tin đưa vào máy tính có không? Nếu có thì máy tính xử lý nào? VD trường hợp giải bài toán nghiệm phương trình bậc biện luận theo delta II NỘI DUNG BÀI HỌC Thời gian 15 ph Nội dung ghi bảng Hoạt động thầy BÀI 9: CẤU TRÚC RẼ NHÁNH (tiết 11-12) - Ghi bài học lên bảng - Mời em đọc VD SGK hẹn Châu và Ngọc - VD mà bạn vừa đọc là VD thực tế các em thường gặp Ở đây có tình rõ rệt xảy ra: * Châu hẹn Ngọc: Chiều mai trời không mưa thì Châu Rẽ nhánh VD1: * Châu hẹn Ngọc: Chiều mai trời không mưa thì Châu đến nhà Ngọc * Ngọc nói với Châu: Chiều mai trời không mưa thì Ngọc đến nhà Châu, trời mưa thì gọi điện cho Châu để trao đổi Hoạt động trò Học sinh theo dỏi, ghi chép bài học (33)  Diễn đạt dạng thiếu: Nếu thì  Diễn đạt dạng đầy đủ: Nếu thì , không thì VD2: Giải phương trình bậc 2: ax2 + bx + c = (a ≠ 0) * Giải thuật sơ đồ khối 20 ph Câu lệnh If – then a) Dạng thiếu: Cú pháp: If <điều kiện> then <câu lệnh>; b) Dạng đủ: Cú pháp: đến nhà Ngọc * Ngọc nói với Châu: Chiều mai trời không mưa thì Ngọc đến nhà Châu, trời mưa thì gọi điện cho Châu để trao đổi - Như tình xảy cho ta khả diễn đạt, tình thứ diễn đạt đầy đủ - Vậy toán học có các khả xả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 = (a ≠ 0) Bạn nào có thể viết thuật toán trên theo sơ đồ khối liệt kê - Trên bảng các em thấy rõ sơ đồ thể cấu trúc rẽ nhánh trường hợp có nghiệm và vô nghiệm - Vậy em nào biết để thực bài toán rẽ nhánh trên ngôn ngữ lập trình Pascal cho phép người lập trình sử dụng câu lệnh nào ? Đó là câu lệnh If – then - Tương ứng với dạng thiếu và đủ trên, Pascal có hai dạng câu lệnh If – then sau: a) Dạng thiếu: If <điều kiện> then <câu lệnh>; b) Dạng đủ: If <điều kiện> then <câu If <điều kiện> then <câu lệnh 1> lệnh> else <câu lệnh 2>; else <câu lệnh 2>; - Dang thiếu thực câu lệnh đúng, sai thì kết thúc, Còn dạng đủ thực theo nhánh, đúng thì thực câu lệnh 1, sai thì thực câu lệnh * Trong đó: - DK: điều kiện là biểu thức logic - Câu lệnh: Là câu lệnh Pascal - Trước Else không có dấu (;) VD: Các VD SGK ph Câu lệnh ghép - Các em xem các VD sách giáo khoa và cài đặt các bài toán đó Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (34) Trong quá trình giải các bài toán phức tạp, không phải thao tác với câu lệnh mà có thể thao tác với nhiều câu lệnh, các câu lệnh gộp lại và tạo thành câu lệnh ghép Câu lệnh ghép có dạng: Begin <Các câu lệnh>; End; VD: If d < then write(‘vo nghiem’) else begin x1 := (-b-sqrt(D)) / (2*a*c); x2 := -b/a – x1; end; Chú ý: - Câu lệnh if - then có thể lồng và có dạng: Dạng 1: If <Đk 1> then Begin <câu lệnh 1>; If <Đk 2> then <câu lệnh 2>; End Else <câu lệnh 3>; Dạng 2: If <Đk 1> then <câu lệnh 1>; If <Đk 2> then <câu lệnh 2> Else <câu lệnh 3>; - Từ khóa Begin và End không dùng để bắt đầu kết thúc chương trình mà còn dùng để bắt đầu kết thúc dãy các câu lệnh đó là câu lệnh ghép Học sinh theo dỏi, ghi chép và làm bài - Em nào có thể viết chương trình cho bài toán giải phương trình bậc III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Thủ tục nhập liệu: Read/Readln - Thủ tục xuất liệu: Write/Writeln - Quy cách định dạng số Bài tập nhà: Tìm số lớn số x, y Giải phương trình bậc Viết chương trình tìm giá trị lớn số a, b, c Viết chương trình nhập từ bàn phím số nguyên dương, in màn hình kq là số chẵn số lẻ Viết chương trình nhập từ bàn phím số nguyên, in màn hình kq là số âm số dương Tìm GTLN số a, b, c, d là số nguyên nhập từ bàn phím Gợi ý: max:=a; if b > max then max := b; if c > max then max := c; (35) if d > max then max := d; write('max= ', max); Nhập số nguyên từ bàn phím, tính và in màn hình kết là bình phương các số không âm và lập phương các số âm (36) 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 Mục đích: - Học sinh hiểu nhu cầu cấu trúc lặp 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 Yêu cầu: - Học sinh biết cách vận dụng đúng đắn loại cấu trúc lặp tình cụ thể - Biết cách mô tả thuật toán 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 sơ đồ khối, thực 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 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 E NỘI DUNG GIẢNG DẠY I ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph ) Các em đã gặp các tình lặp chưa? Em nào có thể kể cho thầy biết số tình lặp mà em biết? VD1 chương trình tính điểm cho 50 học sinh lớp Quá trình giáo viên nhập họ tên, điểm cho em học sinh là quá trình lặp liên tục nhập đầy đủ cho 50 học sinh thì kết thúc Như 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 thứ là: Em thực công việc là gánh nước để đổ vào thùng nước? Em có biết cần bao nhiêu thùng nước thì đủ không? Như 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 lặp với số lần chưa biết trước? Vậy 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 các bài toán lặp không? Ta sang bài học để tìm hiểu các công cụ này nhé! II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò (37) BÀI 10: CẤU TRÚC LẶP (tiết 14) 10 ph Lặp Cho a  z và a  Tính giá trị S Bài 1: 1 1 S     a a 1 a  a  100 1 1 S      a a 1 a  aN Bài 2:  0, 0001 Cho đến a  N - Hai bài toán thực phép lặp cộng N=0 - Bài toán thực lặp với N=100 - Bài toán thực phép lặp chưa biết trước số lần N, phép lặp dừng 10 ph  0, 0001 a  N Lặp với số lần biết trước và câu lệnh FOR-DO Thuật toán Dạng lặp tiến: - Ghi bài học lên bảng - Các em vừa biết VD lặp thường thấy sống tự nhiên Bây ta xem xét VD toán học SGK - Từ bài toán trên em nào cho thầy biết bài thứ lặp cộng bao nhiêu lần? Và xuất phát từ số hạng nào, số hạng này N bao nhiêu? - Còn bài toán lặp cộng bao nhiêu lần? Và xuất phát từ số hạng nào, số hạng này N bao nhiêu? => Như bài toán phép lặp giới hạn 100 lần, bài toán phép lặp là không biết trước, nó thực lặp cộng thỏa mãn điều kiện Học sinh theo dỏi, ghi chép và trả lời  0, 0001 aN thì kết thúc - Bài học hôm ta nghiên cứu phép lặp đã biết trước số lần lặp tương ứng với cấu trúc câu lệnh FOR-DO - Em nào có thể nêu ý tưởng thuật toán để giải bài toán - Ta có cách để viết thuật toán giải bài toán Đó là lặp tiến và lặp lùi - Em nào có thể trình bày thuật toán dạng sơ đồ khối Dạng lăp lùi: Học sinh theo dỏi, ghi chép bài học - Em nào có thể nhận xét hai dạng lặp trên nó có điểm giống và khác chỗ nào? Học sinh theo dỏi, ghi chép và trả lời Học sinh dỏi, - Em nào cho thầy biết tương theo ứng với dạng lặp trên thì ngôn ghi chép và ngữ lập trình Pascal đã cung cấp trả lời cho chúng ta câu lệnh nào? - Đó là câu lệnh FOR-DO dùng để mô tả cho hai dạng lặp trên Nhận xét: - Lặp tiến: Xuất phát N=0, sau - Em nào có thể nêu cách thức lần lặp thì N tăng lên đơn vị hoạt động câu lệnh FOR- (38) 20 ph 30 ph - Lặp lùi: Xuất phát N=101, Sau lần lặp thì N giảm đơn vị - Số lần lặp tiến và lặp lùi là 100 lần * Câu lệnh FOR-DO Dạng lặp tiến: FOR <biến đếm>:=<gt.đầu> TO <gt.cuối> DO <câu lệnh>; Dạng lặp lùi: FOR <biến đếm> := <gt.cuối> DOWNTO <gt.đầu> DO <câu lệnh>; DO? - Câu lệnh FOR-DO áp dụng bước Học sinh theo dỏi, dạng thuật toán trên? ghi chép và - Em nào có thể viết chương trả lời trình tương ứng với dạng thuật toán đó Học sinh Áp dụng vào thuật toán dỏi, chương trình em nào có thể thực theo ghi chép và Trong đó: chạy chương trình với a=2 làm bài - Biến đếm: Là biến đơn, thường có kiểu nguyên - VD2: GV giúp học sinh tìm - gt.đầu, gt.cuối: Là các biểu thức có hiểu thuật toán, cài đặt chương cùng kiểu với biến đếm trình và kiểm thử các Chú ý: test - Giá trị biến đếm điều chỉnh tự động, câu lệnh sau DO không thay đổi giá trị biến đếm VD1: Chương trình cài đặt cho bài toán theo dạng lặp (SGK) VD2: (SGK) III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Câu lệnh lặp dạng tiến: FOR <biến đếm>:=<gt.đầu> TO <gt.cuối> DO <câu lệnh>; - Câu lệnh lặp dạng lùi: FOR <biến đếm> := <gt.cuối> DOWNTO <gt.đầu> DO <câu lệnh>; Bài tập nhà: Viết chương trình nhập số nguyên dương N từ bàn phím và thực các công việc sau: a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ phạm vi từ đến N b) Tính tổng giá trị các số chẵn, số lẻ Viết chương trình tính giá trị tổng sau, với n nhập từ bàn phím a) S 1    n Dùng FOR - Do S:=0; For i:=1 to N S:=S+i; S 1-2+3-4+ +   1 b) Gợi ý: s:= 0; Dùng While - Do S:=0; i:=1; While i<=N Do Begin S:=S+i; i:=i+1; End; n .n (39) dau:=1; for i:=1 to n begin s:=s+i*dau; dau:=-dau; end; 50 n  n 1 c) n 1 (40) 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 Mục đích: - Học sinh hiểu nhu cầu cấu trúc lặp 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 lặp Yêu cầu: - Học sinh biết cách vận dụng đúng đắn loại cấu trúc lặp tình cụ thể - Biết cách mô tả thuật toán 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 sơ đồ khối, thực 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 E KIỂM TRA BÀI CŨ (15ph) Nêu cấu trúc câu lệnh lặp với số lần biết trước Tại câu lệnh lặp FOR-DO người ta không cần câu lệnh thay đổi giá trị biến số Viết chương trình tính giá trị tổng sau, với n nhập từ bàn phím a) S 1    n 50 n  n 1 b) n 1 F NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 10: CẤU TRÚC LẶP (tiết 14) 10 ph - 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  Tính giá trị S khái niệm lặp và lặp với số 1 1 S      lần biết trước, bài học hôm a a 1 a  aN Bài 2: ta sang phần là lặp với số lần chưa biết trước, ta làm  0, 0001 việc trên bài toán bài Cho đến a  N Lặp với số lần chưa biết trước này số lần lặp N là chưa biết - Em nào có thể nêu ý tưởng và câu lệnh WHILE-DO Học sinh theo dỏi, ghi chép bài học (41) Thuật toán liệt kê: B1: Nhập a; B2: S:=1/a; N:=0; B3: Nếu 1/(a+N)<0,0001 → B6; B4: N:=N+1; B5: S:=S+1/(a+N) → B2; B6: In S Cú pháp câu lệnh lặp: While <ĐK> <câu lệnh>; * Trong đó: - ĐK: Điều kiện là biểu thức logic; - Câu lệnh:Làcâu lệnhđơn ghép Thuật toán theo sơ đồ khối: 10 ph 10 ph giải bài toán 2? - Em nào có thể viết thuật toán giải bài toán phương pháp liệt kê? - Theo em lặp với số lần chưa biết trước có dạng? - Lặp với số lần chưa biết trước có dạng: Dạng 1: Trong <ĐK> còn đúng thì thực <câu lệnh> Dạng 2: Thực <công việc> <ĐK> còn đúng - Ở dạng 1: Đầu tiên kiểm tra và tính giá trị ĐK, ĐK còn đúng thì thực công việc và thực lần Mỗi lần thực công việc có thể làm thay đổi giá trị ĐK nên đến lúc nào đó ĐK lặp không còn đúng và vòng lặp kết thúc - Theo em ĐK lặp bài Chương trình: toán là gì và nào thì kết Program tong_2; thúc lặp? Var a, n : Integer; - Như thuật toán bài S : Real; toán áp dụng phương pháp lặp Begin dạng Nó kiểm tra ĐK 1/ Write(‘nhap a= ’); Readln(a); (a+N)<0,0001 trước thực S:=1/a; công việc lặp N:=0; - Tương ứng với dạng em nào While 1/(a+N)>=0.0001 Do cho biết câu lệnh lặp Begin Pascal là gì? N := N + 1; - Theo sơ đồ khối vòng lặp S := S + 1/(a+N); While – Do thể End; bước nào? Writeln(‘tong S cua bai toan - Theo cấu trúc lặp Pascal, la ’, S:10:2); em nào có thể viết chương trình Readln; giải bài toán theo dạng 1? End VD1: Tìm ƯCLN số nguyên - Em hãy thực phép lặp với dương M và N a = 9995 *Ý tưởng: B1: Nhập a = 5; - Nhập và kiểm tra số M và N, B2: Gán N=0; M=N thì ƯCLN là M Nếu không B3: Thực lặp: thực vòng lặp gán M=M-N  1/9995 > 0.0001: M>N và ngược lại, M=N N:=0+1=1; *Thuật toán: S:=1/9995+1/(9996) → B3  1/9996 > 0.0001: Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (42) N:=1+1=2; S:=1/9995+1/(9996) +1/ (9997) → B3  1/9996>0.0001: N:=2+1=3; 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) +1/ Var m,n : Integer; (9997) + 1/(9998) + 1/ Begin (9999) + 1/(10000) + 1/ Write(‘Nhap m va n: ’); (10001) → B3 readln(m,n);  1/10001 < 0.0001→ B6 While m<>n Kết thúc If m > n then m := m - n - Ta xem xét tiếp VD sau: Else n := n – m; VD1: Tìm ƯCLN số Writeln(‘UCLN = ’, M); nguyên dương M và N Readln - Em nào có thể nêu ý tưởng End thực bài toán? - Em nào viết thuật toán? - Em nào viết chương trình thực thuật trên - Em nào có thể thực chương trình trên test: M=28, N=12 Học sinh theo dỏi, ghi chép và làm bài II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vữ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 Bài tập nhà: Có thể dùng câu lệnh While-Do để thay cho câu lệnh For-Do không? Nếu được, hãy thực điều đó với chương trình Tong_1a Cho số thực a Tìm số nguyên dương N nhỏ thỏa mãn: 1 1      a N Gợi ý: Cách 1: Dùng vòng lặp vô hạn S := 1; N := 1; While true {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 (43) S := 1; N := 1; While s<=a {cho vòng lặp giới hạn đến s=a} Begin Inc(n); S := s + 1/n; End; (44) Tiết 15,16_PPCT Ngày soạn: Ngày dạy: BÀI TẬP VÀ THỰC HÀNH A MỤC ĐÍCH VÀ YÊU CẦU 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 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 chương trình trên máy tính  Thực theo các bước hướng dẫn thực hành sách giáo khoa Câu 2: Viết chương trình tính giá trị hàm:  x  y Nếu  z  x  y Nếu , 0,5 Nếu ,  a) Program tinhGTBT; Var x, y, z: real; Begin Write(‘nhap x, y: ’);readln(x,y); Z:= sqr(x) + sqr(y); If z<=1 then writeln(‘z=’, z:10:2) Else If (z>1) and (y>=x) then writeln(‘z= ’,x+y:10:2) Else If y<x then writeln(‘z=’, 0.5:6:2); Readln End (45)  x  y Nếu điểm (x,y) thuộc hình tròn bán kính r (r>0), tâm (a,b) Z   x  y Trong các trường hợp còn lại b) Gợi ý: If (sqr(x-a) + sqr(y-b)) <= sqr(r) then Z := abs(x) + abs(y) Else Z := x+y; Bài 3: Viết chương trình tính các tổng sau, với N nhập từ bàn phím: 2 2 a) S 1     N S 1  1 1     2 N b) Gợi ý: a) S := 0; For i := to N S := S + sqr(i); b) S := 0; For i := to N S := S + 1/sqr(i); Câu 4: 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ỏ thỏa mãn điều kiện 3k > N Đưa màn hình giá trị k và 3k Gợi ý: k := 0; S := 1; While S <= N Begin Inc(k); S := exp(k*ln(3)); End; Chú ý: n a n eloge a e n ln a Câu 5: 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 = thì N là số chẵn, ngược lại là số lẻ Câu 6: Viết chương trình giải phương trình bậc ax + b = Chương trình: Var a,b,x : real; Begin Write('a = '); Readln(a); Write('b = '); Readln(b); If a = Then If b = Then Writeln('Phuong trinh co vo so nghiem') Else Writeln('Phuong trinh vo nghiem') Else Begin x:= -b/a; Writeln('Phuong trinh co nghiem la :',x:6:2); End; Readln; End (46) CHƯƠNG II: KIỂU DỮ LIỆU CÓ CẤU TRÚC BÀI 11: KIỂU MẢNG (tiết 19) - (Ngày soạn: 20/10/2009) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Cung cấp cho học sinh kiến thức mảng, biết mảng chiều, biết khái báo mảng, xây dựng và sử dụng mảng chiều Yêu cầu: HS cần nắm được: - Kiểu mảng là kiểu liệu có cấu trúc, cần thiết và hữu ích nhiều chương trình - Mảng chiều là 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 liệu mảng 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 chiều - Cách khai báo mảng 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ó ví dụ sau: Nhập vào nhiệt độ trung bình ngày tuần Tính và tin màn hình nhiệt độ trung bình tuần và số lượng ngày tuần có nhiệt độ cao nhiệt độ trung bình tính Em nào cho thầy biết không sử dụng mảng chiều thì để giải bài toán này ta làm 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 cua 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; If t3> tb then dem:=dem+1; If t4> tb then dem:=dem+1; (47) If t5> tb then dem:=dem+1; If t6> tb then dem:=dem+1; If t7> tb then dem:=dem+1; Writeln(‘nhiet trung binh tuan:’,tb:4:1); Writeln(‘so nhiet cao hon nhiet trung binh tuan:’,dem:2); Readln; End => Như sử dụng câu lệnh IF-THEN thì trường hợp tính số lượng ngày năm có nhiệt độ lớn nhiệt độ trung bình ta làm nào? => Phải sử dụng nhiều câu lệnh IFTHEN, bài toán trở nên phức tạp và khó khăn Để giải vấn đề này người ta đã đưa kiểu liệu để lưu các giá trị này, đó là kiểu liệu có cấu trúc - Kiểu liệu mảng Kiểu liệu mảng cho phép ta có thể truy xuất tới 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 Vậy kiểu mảng là gì ta sang bài học II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 11: KIỂU MẢNG (tiết 19) 5ph - Giáo viên viết đề bài: - Em nào có thể nêu khái niệm Kiểu mảng chiều mảng Khái niệm: Là dãy hữu hạn => Mảng là dãy hữu hạn bao gồm các phần tử cùng kiểu, các phần tử, nó có tên, số đặt tên pt có số phần tử và chiều dài định định và có chiều dài định - VD mảng nhiệt độ có phần tử, phần tử là nhiệt độ VD1: Mảng nhiệt độ: ngày tuần Chỉ số i là vị trí thứ i phần tử mảng Do đó để lưu nhiệt độ các ngày tuần người ta sử dụng cấu trúc mảng trên + Xây dựng kiểu mảng: Tên kiểu mảng .Số lượng phần tử; Kiểu liệu phần tử .Khai báo các biến cho mảng Cách tham chiếu đến phần tử 10 ph - Em nào cho thầy biết xây dựng kiểu mảng chiều thì ngôn ngữ lập trình cung cấp cho người lập trình quy tắc cho phép xây dựng mảng chiều vấn đề gì? - Bất kỳ bài toán nào có sử dụng biến cần phải khai báo, a khai báo: dùng biến mảng C1: Khai báo trực tiếp Var <tên mảng> : array [kiểu chiều thì ta cần phải khai báo Có cách khai báo? số] of <kiểu phần tử>; - Cú pháp khai báo trực tiếp nào? VD2: Khai báo mảng nhiệt độ - Em nào có thể khai báo mảng Var nhiệt độ đã cho trên? Nhietdo : array [1 7] of real; Học sinh theo dỏi, ghi chép bài học Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (48) - Trong trường hợp ta cần nhiều mảng có cùng kiểu mảng thì C2:Khai báo gián tiếp làm nào? Có phải cần khai Type <tên kiểu mảng> = array [kiểu báo nhiều lần khai báo trực số] of <kiểu phần tử>; tiếp không? Var <tênmảng> : <tên kiểu mảng> Var Nhietdo : array [1 7] of real; VD3: Khai báo mảng nhiệt độ Nhietdo2 : array [1 7] of real; Type Nhietdo3 : array [1 7] of real; Học sinh Mangnhietdo = array [1 7] of real; theo dỏi, Var Ta có cách khai báo gián tiếp ghi chép và Nhietdo : mangnhietdo; nhằm hạn chế việc khai báo dài trả lời dòng trên mà đảm bảo 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 em nào có thể khai báo biến mảng cho bài toán sau theo cách: Khai báo biến mảng số nguyên 15 ph VD4: Khai báo biến mảng nguyên C1: Khai báo trực tiếp Var m_nguyen : array[1 n] of integer; * Chú ý: - Kiểu số là đoạn số nguyên C2: Khai báo gián tiếp liên tục n1 n2 (n1≤ n2) Cho biết số Type mang = array [1 n] of integer; phần tử có mảng - Kiểu phần tử là kiểu các phần Var mang_nguyen : mang; tử mảng - Cách nhập và truy xuất (tham - Em nào có thể cho thầy biết là chiếu) tới các phần tử mảng: + Tham chiếu tới các phần tử để đưa giá trị nhiệt độ mảng xác định tên mảng ngày thứ mảng nhiệt độ cùng với số viết cặp trên ta làm nào? - Ta có thể truy xuất dấu ngoặc [và] nhiệt độ phần tử VD: Giá trị phần tử thứ mảng không? mảng nhiệt độ là nhietdo[5] = 41.6 - Để nhập nhiệt độ ngày tuần vào mảng ta làm + Dùng câu lệnh FOR-DO để nhập nào? và xuất giá trị phần tử mảng - Dùng câu lệnh FOR-DO để nhập và xuất giá trị phần tử VD: mảng * Thao tác nhập nhiệt độ cho ngày - Em nào có thể viết đoạn tuần: chương trình nhập nhiệt độ For i:=1 to ngày tuần? Begin Write (‘nhap nhiet cua Học sinh theo dỏi, ghi chép và trả lời Học sinh (49) thu’,i:2,’ =’); readln(nhietdo[i]); End - Tương tự em nào có thể viết dỏi, đoạn chương trình xuất nhiệt độ theo * Thao tác xuất nhiệt độ cho ngày trung bình ngày sau ghi chép và tuần: làm bài đã nhập For i:=1 to Begin Write (‘ nhiet cua 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 giá trị mảng B nằm mảng A VD: - Cho a,b là các biến có cùng Var A,B : array[1 5] of byte; kiểu mảng và giả sử các i:byte; phần tử biến a đã gán Begin giá trị, đó ta có thể dùng For i:=1 to a[i] := i; lệnh gán b:=a; Sau lệnh gán này B:=A; các phần tử biến mảng b có giá trị tương ứng giống các End phần tử biến mảng a - Thao tác gán giá trị cho mảng: Học sinh theo dỏi, ghi chép và làm bài a[i] := i; III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vữ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 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 n ngày năm Tính và tin màn hình nhiệt độ trung bình n này đó và số lượng ngày có nhiệt độ cao nhiệt độ trung bình tính Bài 2: Tìm hiểu trước VD 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 chiều và thực 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 Mục đích: - Củng cố và giúp HS hiểu sâu sắc thuật toán tìm kiếm, xếp mà HS đã học lớp 10 - Minh hoạ, củng cố và nâng cao hiểu biết HS tiết mảng chiều - Hình thành kĩ sử dụng kiểu mảng cài đặt chương trình Yêu cầu: - Học sinh đã ôn lại thuật toán lớp 10 các phép duyệt dãy số, 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, xếp - Biết cách thao tác trên mảng 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): Nêu cách khai báo biến mảng? Để nhập xuất liệu mảng chiều ta làm nào? Viết chương trình bài: Nhập vào nhiệt độ trung bình n ngày năm Tính và tin màn hình nhiệt độ trung bình n này đó và số lượng ngày có nhiệt độ cao nhiệt độ trung bình tính 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 begin write('nhap nhiet thu',i:2,'='); readln(nhietdo[i]); tongnd:=tongnd+nhietdo[i]; end; dem:=0; tb:=tongnd/n; for i:=1 to n if nhietdo[i]>tb then dem:=dem+1; writeln('nhiet trung binh cua',n:2,'ngay la',tb:10:2); writeln('so co nhiet lon hon ',tb:12:2,' la:', dem:2); readln end (51) II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 11: KIỂU MẢNG (tiết 20-21) (Tiếp theo) 25 ph - Chúng ta xét số VD sau: VD1: Tìm phần tử lớn Học sinh dãy số nguyên b Một số ví dụ theo dỏi, VD1: Tìm phần tử lớn - Yêu cầu xác định bài toán: ghi chép dãy số nguyên bài học Input và output? * Xác định bài toán + input: Số nguyên dương N và dãy - Yêu cầu HS đưa thuật toán N số nguyên dương a1, a2, , aN liệt kê đã học lớp 10 + output: Chỉ số và giá trị lớn dãy số đã cho * Thuật toán: Bước 1: Nhập N và dãy a1, a2, , aN; Bước 2: max a, i2; Bước 3: Nếu i>N thì đưa giá trị max kết thúc Bước 4: 4.1 Nếu >max thì maxai; 4.2 ii+1 quay lại bước *Kiểm tra thuật toán: Với N=4, a1=4,a2=2, a3=7,a4=1 B1: Nhập N=4, dãy số nguyên: a1=4,a2=2, a3=7,a4=1 B2: maxa1(max=4), i2 (i=2) Lần 1: B3: (i=2)>(N=4) => sai B4: 4.1 (a2=2)>(max=4) =>sai 4.2 ii+1 ( i=2+1=3) Và quay lại B3 Lần 2: B3: (i=3)>(N=4) =>sai B4: 4.1 (a3=7)>(max=4) =>đúng nên maxa3(max=7) 4.2 ii+1(i=3+1=4) và quay lại B3 Lần 3: B3: (i=4)>(N=4)=>sai B4: 4.1 (a4=1)>(max=7) =>sai 4.2 ii+1(i=4+1=5) và quay lại B3 Lần 4: (i=5)>(N=4)=>đúng và kết thúc - Nhận xét và đưa thuật toán Học sinh theo dỏi, chính xác ghi chép và trả lời - Em nào có thể thực theo thuật toán cho test sau: N=4, a1=4,a2=2, a3=7,a4=1 - Yêu cầu đọc SGK và suy nghĩ chương trình để trả lời câu hỏi ? Trong bài này ta cần khai báo biến nào? - 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 chúng ta có thể khai báo số khai báo khac như: khai báo thư viện, khai báo hằng, khai báo kiểu liệu mảng - Một em hãy lên bảng viết đoạn chương trình nhập giá trị cho các phần tử mảng - t luận và vừa viết chương trình vừa giải thích đây số phần tử mang giá trị lớn chúng ta phần tử lớn cuối cùng ? Như chúng ta cần khai Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (52) báo thêm biến nào? * Viết và hoàn thiện chương trình 30 ph Program timmax; Uses crt; Const Nmax=100; Type Arr = array[1 Nmax] of integer; Var N, max, i, csmax: integer; a: Arr; begin clrscr; write(‘nhập số lượng các phần tử dãy số:’); readln(N); for i:=1 to N begin write(‘phần tử a[‘,i,’]:’); readln(a[i]); end; Max :=a[1]; csmax:=1; For i:=2 to N If a[i]>max then Begin max:=a[i]; csmax:=i; end; writeln(‘ giá trị lớn là:’,max) ; writeln(‘chỉ số phần tử lớn nhất:’,csmax); readln end Học sinh theo dỏi, ghi chép và trả lời - Chúng ta tìm hiểu tiếp VD tiếp theo: VD2: Sắp xếp dãy số nguyên thuật toán tráo đổi - Yêu cầu xác định bài toán: Input và output bài toán? - Yêu cầu nều thuật toán tráo đổi đã học lớp 10 - Từ thuật toán trên ta thực test sau: Với N =4, a1=4, a2=2,a3=7,a4=1 VD2: Sắp xếp dãy số nguyên B1: Nhập N=4 và a1= 4, a2=2, athuật toán tráo đổi 3=7,a4=1 B2: MN(M=4); * Xác định bài toán: Lần 1: B3: M<2(4<2) =>sai + Input: Số nguyên dương N, dãy số B4:MM-1=4-1=3, i0; nguyên dương: a1, a2, , aN B5: ii+1=0+1=1 + Output: Dãy số a đã xếp B6: (i=1)>(M=3)=>sai thành dãy không giảm B7: (a1=4)>(a1+1=2)=>đúng nên tráo đổi a1và a2 cho * Thuật toán: nhau.=>a =2,a =4 B1: nhập N và dãy số nguyên dương B8: Quay lại B5 a1, a2, , aN B5: i i+1=1+1=2; B2: MN B3: Nếu M<2 thì đưa dãy đã B6: (i=2)>(M=4)=>sai B7: (a2=4)>(a3=7)=>sai xếp và kết thúc B8: Quay lại B5 B4: MM-1, i0; B5: ii+1=2+1=3 B5: ii+1; B6: (i=3)>(M=3)=>sai B6: Nếu i>M thì quay lại B3; B7: Nếu ai>ai+1 thì tráo đổi và ai+1 B7:(a3=7)>(a3+1=1)=>đúng nên tráo đổi a3 và a4 cho cho nhau; nhau=>a3=1, a4=7 B8: quay lại B5 B8: quay lại B5 B5: ii+1=3+1=4 B6: (i=4)>(M=3)=>đúng nên Học sinh theo dỏi, ghi chép và làm bài (53) * Viết chương trình Var N, i, j, tam: integer; A:arr; Begin Clrscr; write(‘nhập số lượng các phần tử dãy số:’); readln(N); for i:=1 to N begin write(‘phần tử a[‘,i,’]:’); readln(a[i]); end; For j = N dowto For i=1 to j-1 If a[i]>a[i+1] then Begin Tam:=a[i]; A[i]:=a[i+1]; A[i+1]:=a[i]; End; Writeln(‘ dãy số nguyên xếp lại:’); For i:=1 to N write(a[i]:4); Readln; End 20 ph VD3: Tìm kiếm nhị phân *Xác định bài toán: - Input: Dãy số A là dãy tăng gồm N (N≤300) số nguyên dương và số nguyên K - Output: Đưa kết không tìm thấy tìm thấy khóa K và vị trí K quay lại B3 Lần 2: … Lần 3:… Lần 4:… Tương tự cách thực lần ta có dãy xếp thành dãy không giảm:1 ? Theo các em qua thuật toán trên ta cần khai báo biến nào? - Nhận xét và kết luận biến cần khai báo Trước hết chúng ta làm quen với thuật toán tráo đổi 2số và aj sau: Tam:=ai; ai=aj; aj=tam; Vì chúng ta cần khai báo các biến sau: N, i, tam, mảng số nguyên, j - Chúng ta có phần khai báo: tên chương trình, thư viện, hằng, khai báo liệu mảng ví dụ yêu cầu các em tự viết vào Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời - Ta sang VD VD3: Tìm kiếm nhị phân - Em nào có thể nêu ý tưởng tìm giá trị khóa là K theo phương pháp tìm kiếm nhị phân - VD ta có dãy số gồm chữ số, tìm giá trị có khóa là 12 Học sinh * Thuât toán: 10 11 12 theo dỏi, B1: Nhập N, A1, A2, ,AN, và khóa K ghi chép và B2: Dau ← Cuoi, Cuoi ← N; - Dựa vào thuật toán đã cho em trả lời B3: Giua ← (Dau+Cuoi) div 2; nào có thể thực các bước B4: Nếu AGiua = K thì thông báo tìm để tìm giá trị khóa là 12 thấy và kết thúc B5: Nếu Agiua>K thì gán Cuoi ← Học sinh Giua – B7; theo dỏi, B6: Dau ← Giua +1; - Em nào có thể viết ghi chép và B7: Nếu Dau>Cuoi thì thông báo chương trình cài đặt cho bài trả lời không tìm thấy kết thúc; toán trên B8: Quay lại B3 * Chương trình cài đặt: program TK_Nhiphan; const max=300; type mangnguyen =array [1 max] of integer; var a:mangnguyen; (54) n,i,k:integer; dau,cuoi,giua:integer; timthay:boolean; begin write('nhap so luong phan tu: n='); readln(n); write('nhap cac phan tu cua day tang'); for i:=1 to n begin write('a[',i,']='); readln(a[i]); end; write('nhap khoa can tim: k='); readln(k); dau:=1; cuoi:=n; timthay:=false; while (dau<=cuoi) and not(timthay) begin giua:=(dau+cuoi) div 2; if a[giua]=k then timthay:=true else if a[giua]>k then cuoi:= giua - else dau:=giua+1; end; if timthay then writeln('tim thay khoa',k:3,'tai vi tri thu',giua:3) else writeln('khong tim thay khoa k=',k:3); readln end III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: + Cách sử dụng mảng số bài toán phức tạp + Thao tác duyệt các phần tử trên mảng Bài tập: Bài 1: Viết chương trình nhập vào dãy số và in màn hình dãy số vừa nhập Bài 2: Tìm hiểu mảng chiều Bài 3: Viết chương trình nhập vào n số nguyên dương tính trung bình cộng và trung bình nhân 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 - Sử dụng lệnh for tính tổng, tích 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 dãy số thực cho mảng a gồm n phần tử, tính trung bình cộng 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; (55) write('nhap so phan tu n= ');readln(n); writeln('nhap gia tri cho mang:'); for i:=1 to n begin write('a[',i,']= '); readln(a[i]); end; s:=0; d:=0; for i:=1 to n if a[i]<0 then begin inc(d); s:=s+a[i]; end; if d>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 (BT giao nhà không sửa để dành kiểm tra 1t): Nhập 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 write('nhap so phan tu n= ');readln(n); writeln('nhap gia tri cho mang:'); for i:=1 to n 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 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 (56) BÀI 11: KIỂU MẢNG (tiết bổ sung không theo PPCT) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Minh hoạ, củng cố và nâng cao hiểu biết học mảng chiều ( cấu trúc, cách khai báo, cách tham chiếu phần tử và ích lợi kiểu liệu này), bước hình thành thao tác trên mảng chiều - Hình thành kỹ sử dụng kiểu mảng 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á Yêu cầu: HS cần nắm được: - Kiểu mảng chiều - Biết thao tác trên mảng 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 chiều - Cách khai báo mảng 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 dãy số và in 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 tính trung bình cộng 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 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 (57) II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 11: KIỂU MẢNG - Giới thiệu VD SGK (trang 59): Tính và đưa màn Kiểu mảng hai chiều hình bảng cửu chương Các yếu tố xác định mảng hai chiều: - Hỏi: Sử dụng kiến thức mảng + Tên mảng chiều chiều, hãy đưa cách lưu + Số phần tử trên dòng và trữ bảng cửu chương? => Sử cột dụng mảng chiều, + Kiểu liệu phần tử mảng lưu hàng bảng +Cách khai báo biến mảng chiều - Hỏi tiếp: Với các lưu trữ 15 ph * cách tạo kiểu mảng chiều: a) Khai báo: Cách 1: Khai báo trực tiếp Var <tên biến mảng>:array[chỉ số hang, số cột] of <kiểu phần tử>; Cách 2: Khai báo gián tiếp Type <Tên kiểu mảng> = array [chỉ số dòng, Chỉ số cột] Of <Kiểu phần tử>; Var <tên mảng>:<tên kiểu mảng>; VD: Khai báo mảng chiều dùng cho bảng cửu chương: C1:Khai báo trực tiếp: Var Bang_CC : array [1 9,1 10] of integer; C2: Khai báo gián tiếp Type Mang = array [1 9,1 10] of integer; Var Bang_CC : Mang; Chú ý: - Ngoài mảng và chiều còn có mảng nhiều chiều - Tham chiếu đến các phần tử: Tên_biến_mảng[chỉ_số_dòng, Chỉ_số_cột]; - Để nhập liệu và xuất liệu từ mảng ta sử dụng vòng FOR-DO lồng - Cách nhập liệu mảng chiều: Writeln('nhap mang chieu:'); ta cần phải khai báo bao nhiêu biến mảng? => Dùng mảng chiều ta khai báo biến mảng - Vậy khó khăn gì khai báo biến mảng => Khó khăn viết chương trình nhập xuất liệu dài - Để khắc phục khó khăn ta xem mảng chiều là phần tử, ta ghép mảng chiều thành mảng hai chiều - Yêu cầu HS nhận xét mảng hai chiều => Nhận xét: Nếu xem hàng mảng hai chiều là phần tử thì ta có thể nói mảng hai chiều là mảng chiều mà phần tử là mảng chiều - Hỏi: Để mô tả kiểu mảng hai chiều, ta cần xác định yếu tố chính nào? - Em hãy nêu cách khai báo biến mảng chiều - Để tham chiếu đến các phần tử mảng chiều ta làm nào? - Em nào nêu cách nhập và xuất liệu mảng chiều ? - Vậy việc nhập và xuất liệu giống mảng chiều dùng câu lệnh FOR-DO lồng Học sinh theo dỏi, ghi chép bài học Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời (58) For i:=1 to n For j:=1 to n Begin Write('a[',i,',',j,']= '); Readln(a[i,j]); End; - Cách xuất liệu mảng chiều: Writeln(‘xuat DL mang chieu:'); For i:=1 to n For j:=1 to n Begin Write('a[',i,',',j,']= ', a[i,j]:3); End; 15 ph b) Một số ví dụ: VD1: Viết chương trình tính và đưa màn hình bảng cửu chương.(SGK) VD2:Viết chương trình nhập vào từ bàn phím các phần tử mảng hai chiều B gồm 5, hàng cột với các phần tử là các số nguyên và số nguyên K Sau đó, đưa màn hình các phần tử mảng có giá trị nhỏ K - Các em nghiên cứu VD sách giáo khoa và cho biết cách tính bảng cửu chương chương trình? - Các em nghiên cứu VD1 sách giáo khoa và trả lời các câu hỏi sau: + Để giải bài toán trên cần loại mảng nào, vì sao? + Giá trị lưu mảng là kiểu số gì? + Khi cài đặt bài toán trên có cần nhập giá trị cho mảng không? Vì sao? + Để tính giá trị bảng cửu chương ta làm nào? + Để in giá trị bảng cửu chương ta làm nào? - Em nào có thể viết chương trình cài đặt cho bài toán trên - Các em nghiên cứu VD 2: Để nhập các giá trị cho mảng ta làm nào? - Để so sánh các giá trị mảng nhỏ K ta làm nào? - Em nào có thể viết chương trình cài đặt cho bài toán trên III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: + Nguyên tắc sử dụng mảng chiều + Cách khai báo và thao tác trên mảng chiều Bài tập: Bài 1: Chuẩn bị bài thực hành số Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và làm bài Học sinh theo dỏi, ghi chép và làm bài (59) BÀI TẬP VÀ THỰC HÀNH SỐ (tiết 23-24) - (Ngày soạn: 28/10/2009) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Nâng cao kĩ sử dụng số câu lệnh và số kiểu 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 số bài toán tính toán, tìm kiếm đơn giản trên máy tính Yêu cầu: - Học sinh nắm các kiến thức mảng B PHƯƠNG PHÁP GIẢNG DẠY - Chia lớp thành nhóm 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 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 chiều và 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 gian Nội dung ghi bảng BÀI TẬP VÀ THỰC HÀNH SỐ (tiết 23-24) 40 ph Bài 1: Tạo mảng A gồm n (n<=100) số nguyên, số có trị tuyệt đối không vượt quá 300 Tính tổng các phần tử mảng là bội số số nguyên dương k cho trước Hoạt động thầy Hoạt động trò Học sinh theo dỏi, ghi chép và - Đưa nội dung bài thực hành: Tạo mảng A gồm n (n<=100) trả lời số nguyên, số có trị tuyệt đối không vượt quá 300 Tính tổng các phần tử mảng là bội số 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: - Yêu cầu học sinh tìm hiểu và Program sum1; Học sinh chạy thử chương trình trên uses crt; theo dỏi, const nmax=100; ghi chép và type myarray= array[1 max] of trả lời integer; Var a:myarray; S, n, i, k: integer; Begin Clrscr; randomize; writeln(‘nhập n=:’); readln(n); Học sinh for i:=1 to n (60) a[i]:=random(300)- random(300); for i:=1 to n write(a[i]:5); writeln; write(‘nhập k=’);readln(k); s:=0; For i:=1 to n if a[i] mod k =0 then s:=s+a[i]; Writeln(‘tổng cần tính là:’, s); Readln End 40 ph b Hãy đưa các câu lệnh sau đây vào vị trí cần thiết nhằm sửa chương trình câu a) để có chương trình đưa các số dương và số các số âm mảng posi, neg: integer posi:= 0; neg:=0; if a[i] >0 then posi:=posi+1 else if a[i]<0 then neg:=neg+1; writeln(posi:4, neg:4); Bài 2: Viết chương trình tìm phần tử lớn mảng và đưa màn hình số và giá trị phần tử tìm Nếu có nhiều phần tư có cùng giá trị lớn thì đưa phần tử có số nhỏ a Hãy tìm hiểu chương trình sau đây: program maxelment; const nmax=100; type myarray=array[1 nmax] of integer; var a:myarray; n, i, j: integer; begin writeln(‘nhập số lượng phần tử dãy số, n=’); readln(n); for i:=1 to n begin write(‘phần tử thứ’,i,’=’); readln(a[i]); end; j:=1; for i:=2 to n if a[i]>a[j] then j:=i; write(‘chi so:’,j,’gia trị:’, a[j]:4); readln; end - dỏi, Yêu cầu HS trả lời theo ghi chép và yêu cầu bài toán trả lời - Nhận xét và yêu cầu HS thực hành sửa chương trình câu a)và chạy chương trình vừa sửa - Suy nghĩ và trả lời Program sum1; uses crt; const nmax=100; type myarray= array[1 max] of integer; Var a:myarray; S, n, i, k, posi, neg: integer; Begin Clrscr; randomize; writeln(‘nhập n=:’); readln(n); for i:=1 to n a[i]:=random(300)- random(300); for i:=1 to n write(a[i]:5); writeln; write(‘nhập k=’);readln(k); posi:= 0; neg:=0; if a[i] >0 then posi:=posi+1 else if a[i]<0 thenneg:=neg+1; writeln(posi:4, neg:4); Readln End Học sinh theo dỏi, ghi chép và trả lời Học sinh theo dỏi, ghi chép và trả lời Bài Hướng dẫn HS thực hành và làm bài tập Bài 2: câu b:?Chương trình có cần giữ lại đoạn tìm phần tử có giá trị lớn không? ? Để đưa tất các số các phần tử đạt giá trị lớn đó có cần duyệt lại tất các phần tử mảng không? b Ta sửa nhu sau: for i:=2 to n if a[i]>=a[j] then j:=i; - Cần giữ lại; Học sinh (61) b Chỉnh sửa chương trình để đưa số lớn các phần tử có cùng giá trị lớn Cần duyệt lại tất các dỏi, phần tử mảng để làm theo ghi chép và việc đó trả lời III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) Củng cố: Cho HS dừng thực hành để kiểm tra 5phút Đánh giá kết làm và chưa làm HS Bài tập nhà: Viết chương trình để đưa số các phần tử có cùng giá trị lớn Chuẩn bị bài thực hành số Viết chương trình nhập n phần tử là các số nguyên dương vào mảng chiều a và đếm xem có bao nhiêu phần tử k? (k nhập từ bàn phím) (62) BÀI TẬP VÀ THỰC HÀNH SỐ (tiết 25-26) - (Ngày soạn: 28/10/2009) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Củng cố cho HS kiến thức và kĩ đã có lập trình với kiểu liệu mảng - Củng cố cho HS thuật toán xếp các phần tử dãy (bằng tráo đổi) và kĩ diễn đạt thuật toán này chương trình sử dụng liệu kiểu mảng - Rèn luyện HS ý thức cần có người lập trình là viết chương trình với khối lượng tính toán ít có thể - Góp phần hình thành và rèn luyện tư lập trình, tác phong người lập trình Yêu cầu: - Học sinh nghiêm túc 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 gian 30 ph Nội dung ghi bảng Hoạt động thầy BÀI TẬP VÀ THỰC HÀNH SỐ (tiết 25-26) - Đưa nội dung bài thực hành: - Đoạn nào thể lần tráo đổi giá trị hai phần tử liền kề mảng? - For j:=n dowto For i:=1 to n j-1 If a[i]>a[i+1] then Begin T:=a[i]; A[i]:=a[i+1]; A[i+1]:=a[i]; End; - Qua bài thực hành số 3, chúng ta thấy có thể tăng biến Dem để đếm số lần tráo đổi hay không? Để làm điều đó phải đăt câu lệnh tăng biến Dem đâu? - Có thể làm Và ta đặt nó sau: Dem:integer; Dem:=0; For j:=n dowto For i:=1 to j-1 If a[i]>a[i+1] then Begin T:=a[i]; Bài 1: Tìm hiểu và chạy thử chương trình thực thuật toán xếp dãy số nguyên thuật toán tráo đổi với cac giá trị khác n đây Qua đó nhận xét thời gian chạy chương trình a {Chương trình SGK trang 65, 66} b Khai báo thêm biến nguyên Dem và bổ sung vào chương trình câu lệnh cần thiết để biến Dem tính số lần thực tráo đổi thuật toán Đưa kết tìm màn hình 30 ph ph Bài 2: Hãy đọc và tìm hiểu phân tích để viết chương trình giải bài toán: Cho mảng a gồm n phần tử Hãy viết chương trình tạo mảng b[1 n], đó b[i] là tổng i phần tử đầu tiên a Hoạt động trò Học sinh theo dỏi, ghi chép và trả lời Chú ý theo dõi SGK nội dung bài thực hành Học sinh theo dỏi, thực hành và trả lời (63) Program subsum1; uses crt; const nmax=100; type myarray= array[1 max] of integer; Var a, b:myarray; n, i, j: integer; Begin Clrscr; randomize; writeln(‘nhập n=:’); readln(n); for i:=1 to n a[i] := random(300)random(300); for i:=1 to n write(a[i]:5); writeln; {Bắt đầu tạo b} for i:=1 to n begin b[i]:=0; for j:=1 to i b[i]:=b[i]+a[j]; end; {Kết thúc tạo b} for i:=1 to n write(b[i]:5); readln; end 20 ph A[i]:=a[i+1]; A[i+1]:=a[i]; Dem:=dem+1; End; - Hướng dẫn học sinh thựchành Học sinh theo dỏi, thực hành và trả lời Bài 2: - Thực hành theo hướng dẫn GV - Để ý ta thấy có hệ thức sau: B[1]=a[1]; B[i]=b[i-1]+a[i]; Do đó, ta có thể đổi đoạn {băt đầu tạo b} đến{kết thúc tạo b} hai lệnh: b[1]:=a[1]; for i:=2 to n B[i]:= b[i1]+a[i]; Học sinh theo dỏi, thực hành và trả lời Bài 3: Hướng dẫn HS thực hành bổ sung Bài 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 chiều a và đếm xem có bao nhiêu phần tử k? (k nhập từ bàn phím) III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) Củng cố: Cho HS dừng thực hành để kiểm tra 5phút Đánh giá kết làm và chưa làm HS Bài tập nhà: Sửa chương trình bài thành chương trình hoàn chỉnh thay đổi đoạn {băt đầu tạo b} đến {kết thúc tạo b} hai lệnh: b[1]:=a[1]; for i:=2 to n B[i]:=b[i-1]+a[i]; Chuẩn bị bài học kiểu xâu (64) 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 Mục đích: - Học sinh biết xâu là dãy ký tự (có thể coi xâu là mảng chiều) - Biết cách khai báo xâu và truy cập phần tử xâu - Sử dụng số thủ tục, hàm thông dụng xâu - Cài đặt số chương trình đơn giản xâu Yêu cầu: - Học sinh đã nắm kiểu mảng - Hình thành tư 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 E NỘI DUNG GIẢNG DẠY II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng BÀI 12: KIỂU XÂU (tiết 27-28) 10 ph 15 ph Hoạt động thầy Hoạt động trò - Đặt vấn đề: Để lưu trữ thông tin họ tên người, các * Một số khái niệm: kiểu liệu đã học có đáp ứng Học sinh theo dỏi, - Xâu là dãy ký tự bảng mã không? ghi chép ASCII bài học - Mỗi ký tự gọi là phần tử - Phân tích các phương án của xâu học sinh, từ đó đưa yêu cầu - Số lượng ký tự xâu gọi cần phải sử dụng kiểu là độ dài xâu liệu đó là kiểu xâu - Xâu có độ dài gọi là xâu rỗng - Tham chiếu tới phần tử xâu xác định thông qua số phần tử xâu - Chỉ số phần tử xâu thường - Giới thiệu số khái niệm và Học sinh theo dỏi, đánh số là 1, 2, thao tác thường dùng làm ghi chép và - Trong NNLT Pascal, tham chiếu tới việc với xâu ký tự lập trả lời phần tử nó viết là: trình nói chung <Tên biến xâu> [chỉ số] - Đây là cách khai báo * Cách khai báo và thao tác trên NGLT Pascal, các ngôn kiểu xâu: ngữ lập trình khác có thể có Khai báo: cách khai báo khác Var <tên biến> : String [độ dài lớn (65) xâu]; Học sinh Trong đó: dỏi, - Nếu không khai báo độ dài tối theo - String: Là tên dành riêng để khai đa cho biến xâu ký tự thì độ dài ghi chép và báo kiểu xâu ngầm định nó là bao nhiêu? trả lời VD: Var Ten : String[10] ; Ho_dem : String[50] ; Que : String ; 15 ph 40 ph Chú ý: - Nếu không khai báo độ dài tối đa cho biến xâu ký tự thì độ dài ngầm định nó là 255 VD: Var xaumax : String; - Hằng xâu đặt cặp dấu nháy đơn ‘’ Các thao tác xử lý xâu: - Ghép xâu, nối xâu (+): VD: S1 = ‘HA’, S2 = ‘NOI’ S = S1+S2 = ‘HA NOI’ - Các phép so sánh xâu (SGK): * Pascal so sánh xâu theo thứ tự từ trái sang phải * S1 > S2 ký tự đàu tiên khác chúng kể từ trái sang phải xâu S1 có mã ASCII lớn VD: S1 = ‘aB’, S2 = ‘AB’ => S1 > S2 vì a = 97, A = 65 * Nếu S1  S2 thì S1 < S2 S1 = ‘Bc’ , S2 = ‘aBcd’ => S1 < S2 - Một số thủ tục và hàm chuẩn: * Delete(St,vt,n): Xóa n ký tự vị trí vt xâu st VD: St = ‘Song Hong’ Delete(St,1,5) Kết St1 = ‘Hong’ * INSERT(St1, St2, vt): Chèn xâu St1 vào xâu St2 vị trí vt VD: St1 = ‘vi-’ St2 = ‘May-tinh’ Insert(St1,st2,5) Kết St2 = ‘May-vi-tinh’ COPY(St, vt, n): Tạo xâu gồm n ký tự liên tiếp lấy xâu St vị trí vt VD: St1 = ‘Xau-ky-tu’ Copy(St,5,5) Kết St2 = ‘ky tu’ - Cho xâu ký tự: ‘nGuyen vaN A’ Để xử lý xâu trên cần bao nhiêu thao tác để xâu hoàn chỉnh ‘Nguyen Van A’ ? Học sinh theo dỏi, - Làm để biết ký tự là ghi chép và trả lời dấu cách ? - Làm nào để xóa vài ký tự? - Làm nào để thêm vài ký tự ? - Để in chữ hoa thì làm nào? - Làm nào để kiểm tra xâu có bao nhiêu ký tự? Học sinh theo dỏi, => Từ đó đưa số thủ tục ghi chép và và hàm chuẩn trả lời - Ứng với thủ tục và hàm chuẩn giáo viên lấy VD cụ thể Pascal để các em hiểu Học sinh theo dỏi, ghi chép và làm bài - Trong các VD đã có Sách giáo khoa, giáo viên đặt các câu hỏi gợi mở để học sinh viết chương trình Học sinh (66) LENGTH(St): St = ‘Tin hoc’ Length(St) Kết St có độ dài là POS(St1, St2): Cho vị trí xuất đầu tiên xâu St1 xâu St2 Nếu xâu St1 không có xâu St2 thì cho kết là VD: St2 = ‘Tin hoc’ St1 = ‘hoc’ Pos(St1,St2) Kết xuất đầu tiên St1 vị trí UPCASE(Ch): Cho giá trị là ký tự in hoa ứng với ký tự Ch Ch:= Upcase(a) cho kết là ch = A * Một số VD SGK: VD1: Viết chương trình nhập vào biến xâu và in xâu dài VD2: Nhập vào xâu ký tự và kiểm tra ký tự đầu tiên xâu thứ có trùng với ký tự cuối cùng xâu thứ không ? 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À (10 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Nhắc lại số khái niệm xâu - Các thủ tục và hàm 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 xâu S Cách 1: Write(‘Nhap xau St: ‘); Readln(St); For i:=1 to length(St) If St[i] IN [‘0’ ’9’] Then d:=d+1; Write(‘So ky tu chu so xau: ‘, d); Cách 2: For i:=1 to length(St) If ( ‘0’ <= st[i] ) and ( s[i] <= ‘9’ ) Then d:=d+1; Write(‘So ky tu chu so xau: ‘, d); Bài 2: Viết chương trình nhập xâu ký tự Thực thao tác chép xâu vị trí var s1,s2:string; pos, num:integer; begin write('nhap xau s1: '); readln(s1); write('vi tri ky tu can chep: '); readln(pos); write('so luong ky tu can chep: '); readln(num); s2:=copy(s1,pos,num); writeln('xau moi la: ',s2); readln end Bài 3: Nhập xâu, viết màn hình xâu dài Sử dụng câu lệnh: If length(s1) > Length(s2) then (67) BÀI TẬP VÀ THỰC HÀNH SỐ (tiết 30-31) - (Ngày soạn: 16/11/2009) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Khắc sâu thêm phần kiến thức 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 số thuật toán bản: tạo xâu mới, đếm số lần xuấ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 kí tự xâu - Sử dụng các hàm và thủ tục chuẩn Yêu cầu: - Tích cực chủ động thực hành B PHƯƠNG PHÁP GIẢNG DẠY - Chia lớp thành nhóm không đủ máy, 3HS/1máy C PHƯƠNG TIỆN DẠY HỌC Chuẩn bị giáo viên: - Máy chiếu Chuẩn bị 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 gian Nội dung ghi bảng BÀI TẬP VÀ THỰC HÀNH SỐ (tiết 30-31) 30 ph Hoạt động thầy Bài thực hành 1: - Tìm hiểu đề bài Bài thực hành 1: Nhập vào - Giới thiệu nội dung đề bài lên xâu, kiểm tra xem nó có phải là bảng - Diễn giài: xâu gọi là palindrome hay không? palidrom ta đọc các kí tư từ a) Chạy thử chương trình: phải sang trái giống đọc từ Var i, x: byte; a, p: string; trái sang phải (Xâu đảo) Begin - Yêu cầu học sinh cho hai ví dụ Write(‘nhap vao mot xau’); xâu palidrom và ví dụ Readln(a); không phải là palidrom x:= length(a); - Tìm hiểu chương trình gợi ý p:=’ ‘; for i:=x downto p := p+a[i]; - Chiếu chương trình lên bảng - Hỏi: chương trình sau đây có if a = p then write(‘xau la chức làm gì? kết in palidrom’) màn hình nào? else write(‘xau khong la palindrome’); - Thực chương trình để học readln; sinh kiểm nghiệm suy luận end mình b) Viết lại chương trình trên - Cải tiến chương trình: đó không dùng biến xâu p - Nêu yêu cầu mới: viết lại Hoạt động trò Học sinh theo dỏi, thực hành và trả lời Học sinh theo dỏi, thực hành và trả lời Học theo sinh dỏi, (68) Cách 1: Var i, x: byte; a: string; Palin: boolean; Begin Write(‘nhap xau’); Readln(a); x:= length(a); palin := true; for i:=1 to x div if a[i]<>a[x-i+1] then palin:=false; if palin then write(‘ la palidrom’) else write(‘xau khong la palindrome’); readln; end Cách 2: Var i, x: byte; a: string; Begin Write(‘nhap xau’); Readln(a); x:= length(a); i:=1; while (i<=(x div 2)) and (a[i]=a[x-i+1]) i:=i+1; if i>(x div 2) then write(‘ la palidrom’) else write(‘xau khong la palindrome’); readln; end 30 ph Bài thực hành 2: Viết chương trình nhập vào xâu kí tự S và thông báo màn hình số lần xuất chữ cái tiếng anh S (không phân biệt chữ hoa chữ thường) 20 ph Bài thực hành 3: Thay xâu kí tự “anh” xâu “em” var st:string; i, vt:integer; begin write('nhap xau ');readln(st); writeln; while pos('anh',st) <> begin vt:= pos('anh',st); delete(st,vt,3); insert('em',st,vt); end; chương trình mà không sử dụng biến trung gian p - Yêu cầu: nhận xét các cặp vị trí đối xứng xâu palidrom? - Hỏi: kí tự thứ i đối xứng với kí tự vị trí nào? - Hỏi: cần phải so sánh bao nhiêu kí tự xâu để biết đươc xâu đó là palidrom? - Hỏi: dùng cấu trúc lặp để so sánh? - Yêu cầu học sinh viết chương trình hoàn chỉnh - Yêu cầu học sinh nhập liệu cho sẵn giáo viên và thông báo kết - Xác nhận bài làm có kết đúng Bài thực hành 2: Giới thiệu đề bài: - Chiếu nội dung đề bài lên bảng nêu mục đích bài toán - Chia lớp thành hai nhóm + Nhóm 1: đặt câu hỏi phân tích + Nhóm 2: trả lời các câu hỏi phân tích Theo dõi câu hỏi phân tích nhón và trả lời câu hỏi phân tích nhóm Bổ sung và sửa sai cho nhóm và nhóm Nhóm 1: - Hỏi: liệu vào, liệu bài toán? - Nêu các nhiệm vụ chính cần thực giải bài toán - Hỏi cấu trúc liệu phải sử dụng nào? - Ta phải sử dụng hàm nào Nhóm 2: - Vào: xâu S - Ra: giải các số ứng với sụ xuất loại kí tự xâu - TT:duyệt từ trái sang phải, thêm đơn vị cho kí tự đọc - Cấu trúc liệu: Dem[‘A’ ’Z’] - Dùng hàm Upcase() Độc lập soạn chương trình vào máy : thực hành và trả lời Học sinh theo dỏi, thực hành và trả lời Học sinh theo dỏi, thực hành và trả lời Học theo thực sinh dỏi, hành (69) write('xau moi la ',st); readln end.} - Nhập liệu giáo viên và thực chương trình và để xem và trả lời xét kết - Thông báo kết cho giáo viên Bài thực hành 3: - Hướng dẫn học sinh sử dụng các hàm Pos, Insert, và hàm Delete III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) Củng cố: Một số thuật toán đơn giản liên quan đến xâu kí tự: kiểm tra xâu đối xứng, tìm tần suất xuất các kí tự có xâu Bài tập nhà: Nhập xâu ký tự S1 và S2, kiểm tra xem xâu S2 có phải là xâu đảo xâu S1 không ? (70) ÔN TẬP HỌC KỲ I (tiết 32-33) - (Ngày soạn: 17/11/2009) LÝ THUYẾT: Câu 1: So sánh câu lệnh lặp với số lần biết trước và chưa biết trước? Câu 2: So sánh kiểu liệu mảng và kiểu xâu? BÀI TẬP: Viết chương trình thực các bài toán sau: (Cần nêu ý tưởng thuật toán trước viết chương trình) Câu 1: Nhập vào số nguyên N có chữ số, sau đó in màn hình tổng các chữ số N VD: N = 123 kết là: Câu 2: Hoán đổi số nguyên M và N theo cách: dùng biến trung gian và không dùng biến trung gian Câu 3: Tính giá trị biểu thức: a) S a  a b sin x b) e ¿ a+sin ( x)− x∨¿ √¿ b  ac c) e Câu 4: Nhập vào độ dài hai cạnh tam giác và góc hai cạnh đó, sau đó tính và in màn hình diện tích tam giác Gợi ý: Công thức tính diện tích tam giác: S = a b sin(θ) Câu 5: Hãy in màn hình các số nguyên từ đến 100 cho dòng có 10 chữ số Gợi ý: for i := to 100 If (i mod 10 = 0) then writeln; Câu 6: Tính xy Câu 7: Tính n x Gợi ý: n x = x1/n = 1/ n e ln x 1/ n ln x e exp(1/ n *ln x ) = Câu 8: Tính các tổng sau: với N nhập vào từ bàn phím S0 = n! = 1*2* *n{n giai thừa} Câu 9: Tìm giá trị N nhỏ để: S = n! > A gt := 1; n:= 1; While gt<=A {cho vòng lặp giới hạn đến s=a} Begin Inc(n); gt := gt*n; End; Với A, B nhập từ bàn phím Câu 10: Viết chương trình nhập vào số nguyên N In màn hình tất các ước số N Ý tưởng: Cho biến i chạy từ tới N Nếu N MOD i=0 thì viết i màn hình Var N,i : Integer; Begin Clrscr; Write('Nhap so nguyen N= '); Readln(N); (71) For i:=1 To N Do If N MOD i=0 ThenWrite(i:5); Readln; End Câu 12: Viết chương trình tìm các số có chữ số abc cho: abc = a3 + b3 + c3 Câu 13: Viết chương trình nhập số nguyên a và b từ bàn phím (a<b) Xác định số lượng các số nguyên lẻ i thỏa mãn điều kiện a ≤ i ≤b Đưa màn hình số lượng tính và thân các số lẻ này theo thứ tự tăng dần (mỗi số trên dòng) dem:=0; for i:=a to b if (i mod <> 0) then begin inc(dem); writeln(i); end; write('vay co ',dem,' so le'); Bài 13: Viết chương trình nhập vào xâu ký tự từ bàn phím Đổi xâu ký tự đó sang chữ in hoa in kết màn hình Ví dụ :Xâu abcdAbcD cho xâu ABCDABCD Write(‘Nhap xau St: ‘); Readln(St); For i:=1 to length(St) St[i]:=Upcase(St[i]); Write(‘Xau ket qua: ‘, St); Bài 14: Nhập xâu, viết màn hình xâu đó đã bỏ tất các ký tự là dấu cách Var i,k : Byte ; a,b : String ; Begin Write('Nhap xau : '); Readln(a) ; k := length(a); b :=' ' ; For i := to k if a[i] <> ' ' then b := b+a[i]; Write(‘xau moi la: ’,b); Readln; End Bài 15: Viết chương trình nhập xâu ký tự In màn hình xâu ký tự là chữ hoa, xâu ký tự là chữ thường Var s1,s2 : String ; {Chữ thường là: S1[i] in ['a' 'z']} i : Byte ; Begin Write('Nhap xau s1 : '); Readln(s1) ; s2 := ' ' ; For i := to length(s1) If (S1[i] in ['A' 'Z']) then s2 := s2 + s1[i] ; Write(‘cac ky tu la chu HOA xau la: ’,s2); Readln ; End (72) BÀI 13: KIỂU BẢN GHI (tiết 35) (Ngày soạn: 28/11/2010; Ngày dạy: / ./20 ) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Học sinh biết các khái niệm ghi - Biết cách khai báo ghi Yêu cầu: - Học sinh hăng say học tập 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 ghi - Các thuật toán xử lý trên kiểu ghi D PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa E NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 13: KIỂU BẢN GHI (tiết 35) 20 ph 25 ph - Xét VD sau: Viết chương trình quản lý các * Một số khái niệm: thí sinh kỳ thi tuyển VD: Bảng điểm kết thi sinh Chương trình cần quản lý - Kiểu ghi dùng để mô tả được: các đối tượng có cùng thuộc tính, có + SBD thí sinh thể có các kiểu liệu khác + Họ tên - Bản ghi gọi là Record, + Giới tính Record lưu trữ liệu đối tượng cần quản lý => Có thể quản lý các thông tin - Mỗi thuộc tính đối tượng trên mảng chiều tương ứng với ghi không? - Các ngôn ngữ lập trình thường cho => Từ đó đưa kiểu ghi phép xác định:  Tên kiểu ghi - GV lấy VD và cho học sinh  Tên các trường nhận biết các thành phần  Kiểu liệu trường kiểu ghi  Cách khai báo biến  Cách tham chiếu đến các trường Khai báo * Cách định nghĩa kiểu và khai báo - Ngôn ngữ Pascal không cho biến: phép khai báo biến ghi trực Type <tên kiểu ghi> = Record Học sinh theo dỏi, ghi chép bài học Học sinh theo dỏi, ghi chép và trả lời (73) <tên trường 1>:<kiểu trường1> <tên trường 2>:<kiểu trường2> <tên trường n>:<kiểu trườngn> End; Var <tên biến>:<tên kiểu ghi>; VD: Type HOCSINH = Record Hoten : String [30]; Ngaysinh : String [10]; Gioitinh : boolean; Toan, ly, hoa : real; End; Var A, B : HOCSINH; Lop:array[1 Max]of HOCSINH 40 ph tiếp mà phải khai báo biến ghi thông qua các kiểu ghi Học sinh theo dỏi, - Làm nào có thể khai báo ghi chép và nhiều biến ghi cùng trả lời kiểu ? => Sử dụng kiểu mảng đó phần tử mảng có kiểu ghi Var <tên mảng>:Array[1 n] of <tên kiểu ghi>; - Đưa số VD - Từ VD trên em hãy cho biết ý nghĩa cách khai báo hai Học sinh theo dỏi, Trong đó: biến ghi A, B và Lop ghi chép và - A, B là hai ghi đơn chứa tất các thông tin Hoten, Ngaysinh, - Khi nhập thông tin vào từ bàn trả lời Gioitinh phím ta phải nhập thông tin vào - Lop là mảng chứa nhiều từ trường ghi (giống dạng bảng chứa nhiều dòng) chứa tất các thông tin Hoten, Ngaysinh, Gioitinh - Chương trình viết NNLT Pascal dùng kiểu ghi *Cách truy cập trường để xử lý kết thi bao kiểu ghi: gồm môn toán và văn học Học sinh <tên biến mảng> <tên trường> sinh Sau nhập xong đưa theo dỏi, VD: kết học tập và hạnh kiểm ghi chép và A.hoten (SGK) trả lời B.ngaysinh Lop[i].Hoten (i là vị trí bất kỳ) Gán giá trị: Có cách: C1: Dùng lệnh gán trực tiếp - Nếu A, B là ghi cùng kiểu ta có thể gán giá trị A cho B: VD: A:=B; B:=A; C2: Gán giá trị cho trường VD: A.hoten := ‘nguyen van an’; Readln(A.ngaysinh); II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Nhắc lại số khái niệm kiểu ghi - Cấu trúc kiểu ghi Bài tập: (74) Bài 11 (trang 80-SGK): a) Nếu cần in kiểu xếp loại là GIOI, KHA, TRUNG BINH, YEU thì chương trình XEP_LOAI cần khai báo nào? b) Hãy bổ sung thêm vào chương trình XEP_LOAI lệnh cần thiết để chương trình đưa danh sách học sinh xếp loại A Program XeploaiA ; uses crt ; Type Hocsinh = Record Ten : String[30] ; Ngaysinh : String[10] ; Diachi : String[50] ; toan, van : real ; Xeploai : Char ; End ; Var Lop : array[1 100] of Hocsinh ; i, n : Byte ; Tg : Real ; Begin Clrscr ; Write(' Cho biet so hoc sinh : ') ; Readln(n) ; For i := to n Begin Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ; Write (' Ho ten : ') ; readln(Lop[i].ten) ; Write(' Ngay sinh : ') ; readln(Lop[i].Ngaysinh) ; Write(' Dia chi : ') ; readln(Lop[i].Diachi) ; Write(' Diem Toan : ') ; readln(Lop[i].toan) ; Write(' Diem Van ') ; readln(Lop[i].van) ; Tg := Lop[i].toan + Lop[i].van ; if Tg >= 18 then Lop[i].Xeploai := 'A' Else if Tg >= 14 then Lop[i].Xeploai := 'B' Else if Tg >= 10 then Lop[i].Xeploai := 'C' Else Lop[i].Xeploai := 'D' End ; Readln ; For i := to n Writeln(i : 4, Lop[i].ten : 30 , ' - Loai : ', Lop[i].Xeploai); writeln('danh sach hoc sinh xep loai A la:'); for i:=1 to n if Lop[i].xeploai='A' then writeln('Hoc sinh o vi tri thu ',i,': ', lop[i].ten); Readln ; End (75) CÂU HỎI VÀ BÀI TẬP (tiết 36) (Ngày soạn: 29/11/2010; Ngày dạy: / ./20 ) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Giúp HS viết số chương trình đơn giản kiểu ghi - Hiểu cấu trúc kiểu ghi, ghi tổ chức theo mảng, theo kiểu xâu - Học sinh giải tốt các bài tập tương tự Yêu cầu: - Học sinh chú ý làm bài tập - Chuẩn bị tốt bài tập nhà B PHƯƠNG PHÁP GIẢNG DẠY - Hướng dẫn HS nêu ý tưởng thuật toán, sau đó viết chương trình và test 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 Kiểu ghi D PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng E NỘI DUNG GIẢNG DẠY Câu 1: Nhập tọa độ điểm M(x,y) và xuất màn hình tọa độ vừa nhập M TYPE Toa_do=RECORD x,y:Integer; END; VAR M:Toa_do; Begin Writeln('TOA DO DIEM M(x,y)'); Writeln('-Nhap toa diem M= '); Write('+X= '); Readln(M.x); Write('+Y= '); Readln(M.y); Writeln('-Xuat toa diem M= (',M.x,',',M.y,’)’); Readln End Câu 2: Hãy in màn hình kết là hai người cùng thông tin: họ tên, tuổi Trong đó thông tin người đã có sẵn Pascal TYPE NhanVien = RECORD Holot : String[17]; Ten : String[7]; Tuoi : 18 60; END; VAR Nv1, Nv2 : Nhanvien; Begin Writeln('PHEP GAN BAN GHI'); Writeln('Dung toan tu gan'); Nv1.Holot:='Nguyen Van'; Nv1.Ten:='Xuan'; Nv1.Tuoi:=30; Nv2:=Nv1; Writeln(Nv1.Holot,' ',Nv1.Ten,' ',Nv1.Tuoi,' tuoi'); Writeln(Nv2.Holot,' ',Nv2.Ten,' ',Nv2.Tuoi,' tuoi'); Readln End (76) Câu 3: Viết chương trình cho bài toán sau: Nhà trường muốn quản lý danh sách học sinh theo các thông tin sau: Họ tên, quê quán, gioitinh Hãy nhập thông tin trên và in màn hình số lượng học sinh cùng quê (quê nhập từ bàn phím) Type Hocsinh = Record Ten : String[30] ; Diachi : String[50] ; gioitinh : string[3] ; End ; Var Lop : array[1 100] of Hocsinh ; i,n,dem : Byte ; que:string[50]; Begin Write(' Cho biet so hoc sinh : '); Readln(n) ; For i := to n Begin Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ; Write (' Ho ten : ') ; readln(Lop[i].ten) ; Write(' Dia chi : ') ; readln(Lop[i].Diachi) ; Write(' gioi tinh: ') ; readln(Lop[i].gioitinh) ; End ; write('nhap que quan de dem so HS: '); readln(que); dem:=0; For i := to n if lop[i].diachi=que then inc(dem); write('co ',dem,' hoc sinh cung que ',que); Readln ; End (77) BÀI 14-15: KIỂU DỮ LIỆU TỆP VÀ THAO TÁC VỚI TỆP (tiết 37) (Ngày soạn: 04/12/2010; Ngày dạy: / ./20 ) A MỤC ĐÍCH VÀ YÊU CẦU Kiến thức : - Học sinh biết vai trò kiểu liệu tệp - Học sinh biết có hai cách phân loại tệp - Học sinh biết khai báo biến tệp và các thao tác tệp văn Kỹ : - Dần dần hình thành kỹ các thao tác với tệp văn Thái độ : - Rèn luyện cho học sinh có ý thức lưu trữ liệu cách khoa học, phòng chống mát thông tin nhiễm virút B PHƯƠNG PHÁP GIẢNG DẠY - Sử dụng PP thuyết trình, giảng giải, gợi ý nêu 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: - Khái niệm kiểu liệu tệp - Các thao tác tạo và xử lý tệp D PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa E NỘI DUNG GIẢNG DẠY Đặt vấn đề cho bài học: Trong các thực hành đã học, sau chạy chương trình ta thấy kết in lên màn hình, nhiên muốn sử dụng kết đó sau thì không Để khắc phục nhược điểm này ta nghiên cứu liệu kiểu tệp II NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 14: KIỂU DỮ LIỆU TỆP VÀ THAO TÁC VỚI TỆP (tiết 37) 10 ph ph GV: Trong máy tính có loại nhớ nào? Loại nhớ nào không bị liệu tắt * Phân loại tệp : máy điện? - Theo cách tổ chức liệu : - GV hỏi: Em hãy cho biết + Tệp văn liệu các kiểu liệu từ + Tệp có cấu trúc trước đến ta sử dụng - Theo cách thức truy cập : lưu trữ loại nhớ nào + Tệp truy cập thực chương trình? Vì sao? + Tệp truy cập trực tiếp - GV diễn giải: Để lưu trữ * Các thao tác trên tệp (Hình SGK liệu ta phải lưu nó nhớ trang 86) : ngoài thông thông qua kiểu Khai báo liệu tệp Mọi ngôn ngữ lập trình Cú pháp: có các thao tác: khai báo Var <tên biến tệp>: Text ; biến tệp, mở tệp, đọc/ ghi Đó là nhớ RAM Vì nó liệu điện + Không thông tin tắt máy + Dung lượng (78) 25 ph VD: Var t1, t2: text; liệu, đóng tệp - Yêu cầu học sinh nghiên cứu SGK và cho biết đặc điểm kiểu tệp? Có loại kiểu tệp? liệu lưu trữ lớn Thao tác với tệp + Có hai a) Gắn tên tệp loại kiểu Cú pháp: tệp: tệp có Assign(<tên biến tệp>, <tên tệp>); - Yêu cầu HS trình bày khái cấu trúc và VD1: Để gán tên tệp baihoc.txt cho niệm tệp có cấu trúc và tệp văn tệp văn biến tệp f ta có cách: bản Assign(f, ‘baihoc.txt’); Assign(f, ‘D:\baihoc.txt’); Chú ý: Không tác tác trên tên tệp mà - GV giới thiệu cấu trúc chung thao tác thông qua biến tệp khai báo biến tệp Học sinh b) Mở tệp theo dỏi, - Yêu cầu HS tìm ví dụ cụ thể * Mở tệp để ghi: ghi chép và Cú pháp: GV giới thiệu các thao tác xử lý trả lời Rewrite(<tên biến tệp>); tệp như: gán tên tệp, tạo tệp VD2: để ghi, mở tệp để đọc, đóng tệp Assign(f, ‘baihoc.txt’); Rewrite(f); * Mở tệp để đọc: Cú pháp: Reset(<tên biến tệp>); VD3: Assign(f, ‘baihoc.txt’); Reset(f); - Yêu cầu HS lấy ví dụ minh hoạ mở tệp để ghi thông tin và Học sinh mở tệp để đọc thông tin theo dỏi, ghi chép và trả lời c) Đọc/ghi tệp văn * Đọc tệp: Cú pháp: Read(<biến tệp>,<DS biến>); Hoặc Readln(<biến tệp>,<DS biến>); VD: Ghi vào tệp các số nguyên m, n vào tệp baihoc thông qua biến tệp f: Read(f, m, n); * Ghi tệp: Cú pháp: Write(<biến tệp>,<DS kết quả>); Hoặc Writeln(<biến tệp>,<DS kết quả>); VD: In màn hình các số nguyên m, n vừa ghi vào tệp bài học: Write(f, ’m= ‘,m,’ va n=’,n); Trong đó: - DS biến: Là nhiều biến đơn - DS kết quả: Là nhiều phần tử - Để tác động lên tệp đếm các pt - GV chiếu sơ đồ làm việc với tệp lên bảng, hình 16 trang 86 SGK Yêu cầu học sinh giải thích ý nghĩa sơ đồ - GV giới thiệu cấu trúc chung thủ tục đọc ghi liệu tệp văn Yêu cầu HS lấy ví dụ minh hoạ Học sinh theo dỏi, - HS sinh quan sát cấu trúc ghi chép và chung và tìm ví dụ minh họa: trả lời - Readln(f, x1, x2); Đọc liệu từ biến tệp f, đặt giá trị vào hai biến x1, x2 - Writeln(g, ‘Tong la’, x1+x2); Ghi vào biến tệp g hai tham số dòng chữ ‘Tong la’ và giá trị tổng x1+x2 (79) tệp thì phải đọc tệp trước thao tác Chú ý: - Hàm EOF(<biến tệp>) trả giá trị TRUE trỏ tệp vị trí cuối tệp - Hàm EOLN(<biến tệp>) trả giá trị TRUE trỏ tệp vị trí cuối dòng d) Đóng tệp Cú pháp: Close(<biến tệp>); Học sinh dỏi, - Các hàm này thường dùng với theo hàm While-Do để kiểm tra vị trí ghi chép và trả lời trỏ tệp VB - Sau thao tác với tệp VB cần phải đóng VB thủ tục Close III CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Gọi học sinh khái quát lại vai trò kiểu tệp và phân loại tệp - Học sinh khái quát lại các thao tác phải thực đọc liệu từ tệp và ghi liệu vào tệp dựa vào hình 16 SGK) Bài tập: (HS chuẩn bị trước các bài tập đây để tiết sau làm BT và thi KT 15ph) 1.Đọc trước bài 16: Ví dụ làm việc với tệp (trang 87) 2.Nhập và tính tổng số nguyên, giá trị lưu vào tệp songuyen.txt var f:text; tong,m,n:integer; begin assign(f,'D:\songuyen.txt'); rewrite(f); write('nhap n= '); readln(n); write('nhap m= '); readln(m); writeln(f,n); writeln(f,m); tong:=n+m; writeln(f,tong); close(f); readln; end 3.Hiển thị trên màn hình giá trị số nguyên và tổng chúng bài 4.Nhập thông tin học sinh gồm họ tên, quê quán, lớp và lưu vào tệp hocsinh.txt var hoten, quequan, lop:string; f:text; begin assign(f,'d:\hocsinh.txt'); rewrite(f); write('nhap ho va ten:'); readln(hoten); writeln(f,'ho va ten: ',hoten); write('nhap que quan:'); readln(quequan); writeln(f,'que quan: ',quequan); write('nhap lop hoc:'); readln(lop); writeln(f,'hoc sinh lop: ',lop); close(f); end 5.Hiển thị thông tin đã nhập bài var f:text; st:string; begin (80) assign(f,'d:\hocsinh.txt'); while not eof(f) begin readln(f,st); writeln(st); end; close(f); readln end reset(f); (81) BÀI 16: VÍ DỤ VỀ THAO TÁC VỚI TỆP (tiết 38) (Ngày soạn: 10/12/2010; Ngày dạy: / ./20 ) A MỤC ĐÍCH VÀ YÊU CẦU Mục đích: - Biết các lệnh khai báo tệp văn - Biết các bước làm việc với tệp : gán tên cho biến tệp, mở tệp, đọc/ghi tệp,đóng tệp Yêu cầu: - Khai báo đúng kiểu tệp - Nắm các bước thao tác với tệp B PHƯƠNG PHÁP GIẢNG DẠY - Gợi mở nêu vấn đề, chia nhóm thảo luận C PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa E NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Thời gian Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI 16: VÍ DỤ VỀ THAO TÁC VỚI TỆP (tiết 38) ph 10 ph 10 ph Giới thiệu sơ lược nội dung cần quan tâm: Tệp liệu là gì? Thảo luận theo nhóm Câu hỏi thảo luận 1: - Tệp lưu trữ liệu (không xem tài liệu) Ưu điểm tệp nào? quá trình lưu trữ liệu là Gợi ý để HS trả lời tốt câu - Đại diện gì? nhóm phát biểu ý kiến Trả lời: Tệp có thể lưu trữ hỏi: nhóm mình lượng lớn liệu trên - Tệp lưu trữ liệu nhớ - Các nhóm nhận xét nhớ ngoài, vì vậy, nào? đánh giá cho nhóm bạn liệu không bị - Lưu trữ liệu có ưu điểm gì? cúp điện tắt máy Câu hỏi thảo luận 2: Nêu số trường hợp cần phải dùng tệp? Trả lời: Khi lượng thông tin lớn và cần lưu trữ lâu dài thì chúng ta dùng tệp Câu hỏi thảo luận 3: Trong sơ đồ thao tác với tệp, cần nhập liệu Gợi ý để HS trả lời sau trình chiếu Các nhóm nêu ý kiến và nhận xét ý kiến nhóm bạn - Khi liệu cần sử dụng ngày thì có cần dùng tệp không? - Lượng liệu có kích thước nào thì nên lưu trữ dạng tệp? Nghe gợi ý, hướng dẫn (82) từ tệp phải dùng thao tác nào? Trả lời:Gắn tên tệp, mở tệp để ghi, ghi liệu vào tệp, đóng tệp để hoàn tất việc ghi liệu assign (f, fi); rewrite(f); write(f,’ ‘,y,’ ‘,z); close(f); ph ph Câu hỏi thảo luận 4: Tại cần có câu lệnh mở tệp trước đọc/ ghi tệp? Trả lời: Trước sử dụng tệp phải có câu lệnh mở tệp để trình dịch biết thực mục đích mở tệp để đọc hay ghi, đồng thời đặt trỏ tệp vào vị trí thích hợp Câu hỏi thảo luận 5: Tại sai phải dùng câu lệnh đóng tệp sau đã kết thúc ghi liệu vào tệp? Trả lời: Phải dùng câu lệnh đóng tệp sau đã kết thúc ghi liệu vào tệp để hệ thống hoàn tất việc ghi liệu tệp Gợi ý để HS trả lời câu hỏi: -Khi làm việc với tệp liệu cần có gì?, thao tác nào là không thể thiếu? - Gợi ý phạm vi để HS có sở làm bài: bài 14 Gợi ý để HS trả lời: - Tệp liệu chương trình nào quản lý? - đọc và ghi liệu có gì khác nhau?, và chương trình dịch có thể hiểu chúng ta muốn làm gì không không mở tệp? và thảo luận nhóm để có câu trả lời chính xác Các nhóm nêu ý kiến nhóm mình và trao đổi ý kiến với nhóm bạn Thảo luận để trả lời câu hỏi Đại diện nhóm phát biểu ý kiến nhóm mình Hướng dẫn để HS làm bài: - Trao đổi ý kiến - Khi khỏi nhà chúng ta nhóm có cần phải đóng cửa nhà lại hay không?, mục đích việc đóng cửa nhà lại là gì? - Việc đóng tệp gần giống việc đóng cửa nhà II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Lệnh var tep, tep1: text; có ý nghĩa gì? TL: Khai báo biến tep và tep1 - Lệnh assign(tep1,’BAITAP.DAT’); có nghĩa là gì? TL: gắn biến tep1 với tệp liệu có tên là BAITAP.DAT - Lệnh close(tep1); có ý nghĩa gì? TL: Đóng tệp có chứa biến tệp là tep1 Bài tập: Thực hành các chương trình bài 16 (tiết 38) và các bài tập đã làm bài học trước (tiết 37) (83) BÀI 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (tiết 39-40) (Ngày soạn: 20/12/2010; Ngày dạy: / ./ ) A MỤC TIÊU Kiến thức - Biết khái niệm chương trình - Biết ý nghĩa chương trình con, cần thiết phải viết chương trình thành các chương trình - Biết cấu trúc chương trình - Phân biệt loại chương trình là hàm và thủ tục Kĩ - Nhận biết các thành phần phần đầu thủ tục - Nhận biết hai loại tham số hình thức phần đầu thủ tục - Nhận biết cách khai báo hai loại chương trình cùng với tham số hình thức chúng Thái độ - Rèn luyện phẩm chất người lập trình tinh thần hợp tác làm việc theo nhóm, tuân thủ yêu cầu vì công việc chung B PHƯƠNG PHÁP GIẢNG DẠY - Giảng giải, thuyết trình và mô C KIẾN THỨC TRỌNG TÂM - Khái niệm chương trình - Cấu trúc 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 E NỘI DUNG GIẢNG DẠY Đặt vấn đề cho bài học mới: Khi viết chương trình giải các bài toán phức tạp, chương trình thường dài, người đọc khó nhận biết chương trình thực công việc gì vấn đề đặt là phải cấu trúc chương trình nào để dễ đọc dễ hiểu Mặt khác việc giải các bài toán lớn thường đòi hỏi phải phân thành nhiều bài toán con, vì lập trình cần phải chia chương trình thành nhiều chương trình CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CTC PROGRAM Tên_chương_trình; USES CRT; CONST ; TYPE ; VAR ; PROCEDURE THUTUC[(Các tham số)]; [Khai báo Const, Type, Var] BEGIN <Các câu lệnh>; END; FUNCTION HAM[(Các tham số)]:<Kiểu liệu>; [Khai báo Const, Type, Var] (84) BEGIN <Các câu lệnh>; HAM:=<Giá trị>; END; BEGIN {Chương trình chính} <Các câu lệnh>; THUTUC[( )]; <Các câu lệnh>; A:= HAM[( )]; <Các câu lệnh>; END II NỘI DUNG BÀI HỌC Nội dung ghi bảng Hoạt động thầy BÀI 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (tiết 39-40) - Chiếu hai chương trình viết sẵn: (Có sẵn SGK), chương trình không sử dụng ctc, ct có sử dụng ctc - Gọi HS nhận xét tính ngắn gọi và dễ hiểu ct? - Khi nào nên sử dụng ct con? - Yêu cầu học sinh cho biết k/n chương trìng con? - Có loại ctc? gọi tên chúng? Khái niệm chương trình Khái niệm: Chương trình là dãy lệnh mô tả số thao tác định và có thể thực (được gọi) từ nhiều vị trí chương trình VD: SGK * Lợi ích việc sử dụng chương trình con: - Tránh việc phải viết lặp lặp lại cùng dãy lệnh - Hỗ trợ việc thực các chương trình lớn - Phục vụ quá trình trừu tượng hóa - Mở rộng khả ngôn ngữ - Thuận tiện cho việc nâng cấp, phát triển chương trình Phân loại chương trình a) Phân loại: * Hàm (Function): Thực số thao tác nào đó và trả giá trị thông qua tên hàm VD: SGK * Thủ tục (Procedure): Thực các thao tác định, không trả giá trị thông qua tên nó VD: SGK b) Cấu trúc chương trình Cấu trúc chung ctc <Phần đầu> Hoạt động trò - Học sinh quan sát ctc giáo viên đưa ra, nhằm so sánh đầu khác biệt ct này - Nhận xét ct có sử dụng ctc, ngắn gọi dễ hiểu so với ct không sử dụng ctc - Đối với bài toán lớn, nhiều người viết, ct dài cần chia nhiều đoạn, có nhiều lệnh lặp - Các em đã sử dụng hàm và thủ lặp lại đó nên sử tục chưa? lấy số hàm và thủ dụng ctc tục đã học? - HS đọc SGK và trả - Ý nghĩa hàm và thủ tục? lời - Yêu cầu hs so sánh với cấu trúc ct chính - Yêu cầu hs giải thích phần khai báo, phần thân ctc? - GV diễn giảng: Phần đầu ctc có - Có hai loại chương tên ctc các tham số ctc các tham trình con: hàm và thủ số này gọi là tham số hình tục thức, dùng chương trìng - Hàm và thủ tục ta phải truyền tham số cho chúng, chuẩn tham số truyền vào đgl - VD: Hàm sqrt(), hàm abs(), length(), … tham số thực - Để sử dụng hàm và thủ tục các - Hàm sử dụng số em thường viết đâu và viết thao tác nào đó và trả giá trị kiểu đơn nào? giản thông qua tên VD: Tìm hiểu CTCon sau: hàm - Thủ tục thực các (85) <[phần khai báo]> <phần thân> * Trong đó: - Phần đầu chương trình là bắt buộc phải có - Phần khai báo có thể là biến, hằng,… - Phân thân là dãy lệnh thực nhiệm vụ định ctc *Chú ý tham số: + Tham số hình thức: Là tham số đưa vào định nghĩa chương trình - CT có thể có không có tham số hình thức + Tham số thực sự: Là tham số viết lời gọi chương trình Gồm các và biến nằm dấu ngoặc (và) có tên CTCon + Biến toàn cục: Là các biến khai báo CT chính + Biến cục bộ: Là các biến khai báo CTCon + Mọi CT sử dụng biến toàn cục + CT chính và CT khác không sử dụng biến cục CT b) Thực chương trình - Lệnh gọi CT thực từ trên xuống CT chính - Khi thực gọi CT con, các tham số hình thức dùng để nhập liệu vào tham số thực tương ứng Khi xuất liệu thì tham số hình thức lưu trữ liệu trả giá trị cho tham số thực tương ứng thao tác định, không trả giá trị thông qua tên nó - Giống kiểu khai báo chương trình chính - Khác nhau: Phần đầu chương trình là bắt buộc phải có - Phần khai báo có thể là biến, hằng,… - Phân thân là dãy lệnh thực nhiệm vụ định ctc - A,B là biến toàn cục, x1,y1,x2,y2 là biến cục dùng các CT cong và tru - x1,y1,x2,y2 là các tham số hình thức thủ tục và hàm đây: - Viết ct chính, viết thủ tục kèm theo các tham số và kết thúc là dấu chẩm phẩy (;) Viết hàm lệnh nào đó thủ tục, hàm không viết lệnh - Khi nhập giá trị A và B, thực CTCon CONG(A,B) thì A,B là tham số thực truyền cho x1,y1 tương ứng - Nếu viết lời gọi CTCon CONG(2, 5) thì tham số hình thức x1,y1 nhận giá trị tham số thực là x1=1, y1=5 - Tiếp tục thực lời gọi CT TRU(A,B) tương tự - Nếu viết TRU(B,A) thì x2 nhận giá trị B, y2 nhận giá trị A để thực phép toán CTC II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Ctc đóng vai trò quan trọng lập trình, đặc biệt là lập trình có cấu trúc - Các lơị ích ctc - Có hai loại ctc - Cấu trúc ctc - Ctc gọi thông qua tên nó Bài tập: - Đọc trước nội dung bài: Ví dụ cách viết và sử dụng ctc, sách giáo khao trang 96 - Ôn lại các khái niệm tham số, biến cục bộ, biến toàn cục và cách thực chương trình (86) BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 41) (Ngày soạn: 22/01/2011; Ngày dạy: / ./20 ) A MỤC ĐÍCH – YÊU CẦU Kiến thức: - Biết cấu trúc chung và vị trí thủ tục chương trình chính - Phân biệt tham số giá trị và tham số biến thủ tục - Nắm khai báo biến toàn cục và biến cục Kỹ năng: - Nhận biết các thành phần đầu thủ tục - Nhận biết hai loại tham số hình thức đầu thủ tục - Nhận biết lời gọi thủ tục chương trình chính cùng với tham số thực Thái độ: - Rèn luyện cho học sinh phẩm chất người lập trình tinh thần hợp tác, làm việc theo nhóm, tuân thủ các yêu cầu công việc chung - Rèn luyện cho học sinh đức tính chịu khó học hỏi, cẩn thận lúc làm việc B PHƯƠNG PHÁP GIẢNG DẠY - Giảng giải, thuyết trình và mô C KIẾN THỨC TRỌNG TÂM - Cách viết và sử dụng thủ tục - Cách viết và sử dụng hàm D PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa E KIỂM TRA BÀI CŨ: Câu 1: Em hãy nêu khái niệm thủ tục? Nêu cấu trúc chung chương trình con? Câu 2: Em hãy lên viết chương trình vẽ hình chữ nhật F NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Nội dung ghi bảng BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 41-42) Hoạt động thầy Hoạt động trò - Giới thiệu ví dụ mở đầu GV: Từ bài cũ dẫn dắt vấn đề sang bài Khi muốn vẽ HCN thì Cách viết và sử dụng thủ tục chúng ta phải viết các lệnh trên bảng -> thời gian Để khắc VD:Vẽ hình chữ nhật SGK phục điều đó chúng ta phải làm gì? HS: Viết chương a) Cấu trúc thủ tục: GV: Cụ thể là chúng ta viết thủ trình tục Cách viết đó nào hôm chúng ta cùng tìm hiểu GV: Chiếu vidu_thutuc1, giới thiệu cho học sinh cấu trúc thủ tục, lời HS: Quan sát theo gọi thủ tục Lưu ý: dõi ví dụ - Procedure: Từ khoá HS: Nằm phần * Tìm hiểu cấu trúc thủ tục - Tên thủ tục: Bắt buộc phải có GV: Vị trí thủ tục nằm phần khai báo,sau khái - Kết thúc thủ tục từ khoá báo biến nào chương trình chính? (87) End; GV: Cấu trúc chung thủ tục - Kết thúc chương trình chính là bao gồm có phần? dấu (.) sau End GV: Phân biệt giống khác thủ tục và chương trình b Ví dụ thủ tục chính VD: Vẽ hình chữ nhật cách GV: Em hãy nêu cấu trúc chung xây dựng thủ tục (SGK) thủ tục? Các khái niệm: - Tham số hình thức gồm loại: * Tìm hiểu tham số hình thức và Tham biến và tham số giá trị tham số thực (tham trị) GV: Chiếu VD_thutuc2 <sgk T98) - Tham biến: Khai báo phải có từ GV: Phân biệt VD_thutuc2 với khoá Var Khi gọi chương trình thutuc1 con, các tham số hình thức là biến GV: Thutuc2 cho phép vẽ nhiều phép thay các hình chữ nhật với kích thước khác tham số thực là biến và các giá vì có hai tham số trị này có thể thay đổi quá chdai,chrong trình thực chương trinh GV: Trong chương trình chúng ta - Tham số giá trị: Khi khai báo vẽ bao nhiêu nhiêu hình chữ không có từ khoá Var trước, nhật gọi chương trình con, các tham số GV: Vì sao? giá trị thay các GV: Đưa phương án đúng và tham số thực là giá trị giải thích cho học sinh biến Trong lời gọi ve_hcn(a,b) vì có VD1: Viết CT tính tổng, hiệu vòng lặp (for i:=1 to ) nên ta số nguyên a và b vẽ hình chữ nhật Giáo viên chạy chương trình cho học sinh quan sát GV: Theo em chdai, chrong, 25, 10, a, b gọi là gì? HS: Ba phần: Tên thủ tục, khai báo thủ tục, phần thân HS: Thủ tục nằm chương trình chính, thủ tục mở đầu từ Procedure HS: Quan sát, nghiên cứu trả lời câu hỏi HS: Thutuc2 có thêm chdai, chrong phần đầu thủ tục HS: hình chữ nhật HS: Thông qua lời gọi: Ve_hcn(25,10); Ve_hcn(5,10); GV: Em hãy tham số hình Ve_hcn(a,b); thức và tham số thực ví dụ trên a,b: Là tham số thực 4/ Tìm hiểu tham số giá trị và tham số biến GV: Chiếu ví dụ thambien1 lên bảng HS: Quan sát ví dụ và trả lời câu HS: Tham số hỏi GV: Trong phần đầu thủ tục có tên thambien1 có gì khác với thủ tục ve_hcn HS: chdai, chrong: HS: Phần khai báo có chữ Var tham số hình thức GV: Tham số chương trình có hai chức năng: Đưa liệu vào, đưa kết - x1, y1, x2, y2 là tham biến Nếu CTC tổng không có tham số thì ta viết: Procedure cong; và lời gọi là cong; Khi đó thân CTC phải sử dụng biến CT chính: tong := A + B; HS: x, y thuộc loại VD2: Tìm hiểu tham biến GV: Quan sát ví dụ thambien1 cho (88) (SGK) biết x, y thuộc loại tham biến nào? tham số biến GV: Chiếu ví dụ tham bien2, x, y HS: x: Tham số giá thuộc loại tham số nào? trị, y: Tham số biến GV: Chiếu và cho chạy chương trình các ví dụ học sinh nắm rõ tham số biến và tham số giá trị II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: Bài tập: Đọc trước nội dung mục 2: Cách viết và sử dụng hàm Viết chương trình dạng thủ tục tính tích, thương số A và B Và cho biết các cách viết khác tham số, CTC không có tham số, cách thực CTC Viết chương trình tính diện tích các hình tròn, hình thang, hình chữ nhật biết độ dài các cạnh Const Pi: real =3.14; Var r, a, cr, cd: real; chon: integer; Procedure dien_tich_hinh_tron (r: real); Var dt: real; Begin dt:=Pi*2*r; Writeln('dien tich hinh tron la :', dt:6:2); End; Procedure dien_tich_hinh_vuong (a: real); Var dt: real; Begin dt:=a*a; Writeln('Dien tich hinh vuong la :', dt:6:2); End; Procedure dien_tich_hinh_CN (cr, cd: real); Var dt:real; Begin (89) dt:=(cr+cd)/2; Writeln(' Dien tich hinh chu nhat la :', dt); End; Begin Writeln('nhap ban kinh :'); Readln(r); Writeln('Nhap canh hinh vuong:'); Readln(a); Writeln('nhap chieu rong hinh chu nhat:'); Readln(cr); writeln('Nhap chieu dai hinh chu nhat'); readln(cd); Writeln('chon:'); Readln(chon); dien_tich_hinh_tron(r); dien_tich_hinh_vuong(a); dien_tich_hinh_CN(cr,cd); Readln; End Viết chương trình dạng thủ tục để tính N! var n,gt:integer; Procedure tinhgt(n: integer; var gt:integer); var i:integer; begin if i=0 then gt:=1 else begin gt:=1; for i:=1 to n gt:=gt*i; end; end; BEGIN write('nhap n= '); readln(n); write('giai thua cua ',n,' la: '); tinhgt(n,gt); write(‘Giai thua cua so la: ’,gt); readln; (90) BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 42) (Ngày soạn: 22/01/2011; Ngày dạy: / ./20 ) A MỤC ĐÍCH – YÊU CẦU Kiến thức: - Học sinh biết cấu trúc chung hàm (Function) - Học sinh nắm giống và khác thủ tục và hàm - Học sinh nhận biết các thành phần đầu hàm - Học sinh nhận biết câu lệnh sử dụng hàm chương trình cùng các tham số thực Kỹ năng: - Nhận biết các thành phần đầu hàm Thái độ: - Rèn luyện cho học sinh phẩm chất người lập trình tinh thần hợp tác, làm việc theo nhóm, tuân thủ các yêu cầu công việc chung - Rèn luyện cho học sinh đức tính chịu khó học hỏi, cẩn thận lúc làm việc B PHƯƠNG PHÁP GIẢNG DẠY - Giảng giải, thuyết trình và mô C KIẾN THỨC TRỌNG TÂM - Cách viết và sử dụng hàm D PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa E KIỂM TRA BÀI CŨ: Em hãy cho biết cấu trúc chung thủ tục (Procedure) và giải thích rõ thành phần? Làm các bài tập 2, 3, đã nêu bài học trước F NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Nội dung ghi bảng BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 42) Hoạt động thầy Hoạt động trò GV: - Chúng ta đã tim hiểu thủ Lắng nghe tục (Procedure), đây là chương trình không có giá trị trả Hôm chúng ta tìm hiểu Cách viết và sử dụng hàm loại chương trình có giá trị * Cấu Trúc Hàm: Function <Tên hàm>[(Danh sách trả đó là Hàm (Function) Vậy Hàm và Thủ tục khác tham số)]:<kiểu liệu>; nào? Cách viết và sử dụng Hàm [( Phần khai báo)]; nào? Begin - Ghi tựa đề bài và phần [<dãy các lệnh>]; <Tên hàm> := <Biểuthức>; GV: Xét bài toán tìm số nhỏ end; số: a và b * Sự giống và khác -Đặt câu hỏi: Theo các em bài toán thủ tục và hàm: trên cho ta kết là gì? Giống nhau: Lắng nghe và trả - Đều là chương trình con, có cấu lời (Học sinh trả lời (91) trúc giống chương trình - Đều có thể chứa các tham số, cùng tuân theo các quy định khai báo và sử dụng các loại tham số này (Có thể không có tham số) Khác nhau: - Hàm luôn trả giá trị thuộc kiểu xác định thông qua tên hàm (các kiểu liệu đơn giản: integer, real, boolean, char, string) - Đầu hàm khóa Function còn thủ tục bắt đầu với từ khóa Procedure - Phải kết hàm thuộc kiểu liệu nào - Trong thân hàm thường có câu lệnh gán giá trị cho tên hàm - Khi viết các bài toán có giá trị luôn thay đổi, mà giá trị này cần in Kết thì sử dụng hàm vì kq lấy thông qua tên hàm mà không cần tham biến Nếu viết dạng thủ tục thì phức tạp vì phải khai báo thêm tham biến để lấy giá trị thay đổi * Cách sử dụng hàm: Việc sử dụng hàm giống việc sử dụng các hàm chuẩn => Khi viết lệnh gọi tên hàm gồm: Tên hàm và tham số thực tương ứng với các tham số hình thức VD 1: Rút gọn phân số (SGK) - Nếu ý tưởng giải bài toán - Chương trình (SGK) - Cách thực bài toán theo chương trình: VD: nhập tuso=21, mauso=27 => a = 3, kq = được) GV: Vậy thì bài toán trên chúng ta không thể sử dụng thủ tục mà phải sử dụng hàm Các em hãy quan sát cấu trúc chung Hàm sau:  Dùng máy chiếu chiếu cấu trúc hàm  Các em hãy điểm giống và khác Thủ tục và Hàm?  Kiểu liệu là các kiểu nào? HS: Thảo luận nhóm thời gian phút và GV: Nhận xét, giải thích và chốt em trả lời lại - Các nhóm khác nhận xét và bổ GV: Các em xem ví dụ SGK sung trang 101 và cho biết việc sử dụng Tự ghi bài Hàm nào? GV: Nhận xét, giải thích và chốt lại Xem ví dụ SGK trang 101 và thảo luận nhóm phút Một em trả lời câu hỏi Các nhóm khác nhận xét và bổ - Học sinh nêu ý tưởng giải bài toán sung VD 1> Tự ghi bài Tìm UCLN tử số và mẫu số, sau đó lấy tử số và mẫu số chia cho UCLN - Học sinh nêu ý tưởng và thực bài toán tìm giá trị nhỏ số a, b, c VD 2: Tìm Min số (SGK) II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: + Ví dụ trên thực chương trình gì? + Hãy cho biết kết trả hàm MIN? + Giải thích lời gọi hàm: Min(Min(a,b),c)? + Hãy tham số hình thức, tham số thực sự, biến toàn cục và biến cục bộ? Bài tập: (92) Bài 1: Viết CTC dạng hàm để tính n! = 1.2 n Ý tưởng: Vì bài toán này trả giá trị nên ta dùng hàm Bài 2: Viết hàm tìm Max số thực x,y Bài 3: Viết hàm XMU(x:Real;n:Byte):Real; để tính giá trị xn (93) BÀI TẬP VÀ THỰC HÀNH (tiết 43-44) (Ngày soạn: 20/02/2011; Ngày dạy: / ./2011) A MỤC ĐÍCH – YÊU CẦU - Rèn luyện các thao tác xử lí xâu, kĩ tạo hiệu ứng chữ chạy trên màn hình - Nâng cao kĩ viết, sử dụng chương trình - Tổ chức hoạt động phòng máy để học sinh có các kĩ việc tổ chức và sử dụng chương trình lập trình B PHƯƠNG PHÁP GIẢNG DẠY - Thuyết trình, vấn đáp C PHƯƠNG TIỆN DẠY HỌC - Máy chiếu, máy tính, phông chiếu bảng, phòng thực hành E NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Nội dung ghi bảng Hoạt động thầy Hoạt động trò BÀI TẬP VÀ THỰC HÀNH (tiết 43-44) Bài tập 1: a) Tìm hiểu cách xây dựng thủ tục sau: - Thủ tục CatDan(s1,s2); - Thủ tục CanGiua(s); b) Viết chương trình nhập xâu kí tự từ bàn phím và đưa xâu đó màn hình có dạng dòng chữ chạy màn hình văn 25x80 Uses crt; Type str79 = string[79]; Var s1, s2: str79; stop: boolean; Procedure catdan(s1:str79; var s2: str79); begin s2:=copy(s1,2,length(s1)- 1) + s1(1); end; procedure cangiua(var s:str79); var i, n: integer; begin n:= length(s); n:= (80-n) div 2; for i:= to n s:=’ ‘ + s; end; begin clrscr; write(‘Nhap xau s1:’); readln(s1); cangiua(s1); clrscr; GV: Cho bài tập ( làm bài tiết trước) + Hướng dẫn học sinh đưa giải thuật + Giáo viên hướng dẫn cách viết Hướng dẫn cách khai báo xâu ký tự:  Cách : gián tiếp TYPE Tên chuoi1 = string[ spt tối đa ]; Tên chuoi1 = HS: thực hành string; trên máy Var biên1: tên chuoi 1; Biến : ten chuoi 2; Cách 2: Trực tiếp VAR biến 1: string[spt tối đa]; Biến 2: string; GV: cho học sinh giải bài trên máy GV: hướng dẫn học sinh sửa lỗi (94) stop:=false; while not (stop) begin gotoxy(1,12); write(s1); delay(500); catdan(s1,s2); s1:= s2; stop:= keypressed; end; readln; end c) Bổ sung câu lệnh theo yêu cầu SGK Bài tập 2: Thực hành các bài tập dạng thủ tục và dạng hàm là các bài tập nhà đã giao: a) Tích và thương số b) Diện tích các hình c) Tính xy d) Tính n! HS: thực hành GV: Cho bài tập : trên máy + Học sinh đưa giải thuật + Giáo viên hướng dẫn học sinh giải thuật và cách viết chương trình II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph) Bài 1: Thực hành trên máy chương trình sau để tìm hiểu tham số và cách thực chương trình trên máy tính: * Bạn hãy in và chạy thử chương trình sau đây: a Program Tham-so; Var a, b: Integer; (*==========================================*) Procedure VD-thamso(x,y: interger); Begin x:=x+1; y:= y+1; Writeln(x:5,y:5); End; (*==========================================*) Begin a:=1; b:=4 VD-thamso(a,b) Writeln(a:5,b:5) END Kết chạy là: 25 14 b Program Tham-so; Var a,b: interger (*==========================================*) Procedure VD-thamso(x:integer; Var y: integer) Begin x:= x+1; y:=y+1; (95) Writeln(x:5, y:5); End; (*==========================================*) Begin {Chương trình chính} a:=1; b:=4; VD-thamso(a,b); Writeln(a:5,b:5); END Kết chạy là: 14 15 c Program Tham-so; Var a, b: integer; (*==========================================*) Procedure VD-thamso(Var x, y: integer) Begin x:= x+1; y:= y+1; Writeln (x:5, y:5); End; (*==========================================*) Begin {chương trình chính} a:= 1; b:=4; VD-thamso(a,b); Writeln(a:5,b:5); END Kết chạy là: 25 25 Bạn hãy giải thích xem kết lại (phân biệt số tham biến và tham trị) Giải thích: a Cả tham số x và y thủ tục VD_ thamso là tham trị cho nên gọi thủ tục VD_thamso (a, b) với a=1; b=4 thì x=1; y=4 ,sau đó x,y bị thay đổi giá trị (cộng thêm 1) và trên màn hình in ra: 25 Kết thúc thủ tục này biến a và b không bị thay đổi giá trị vì lệnh Writeln (a:5, b:5); in ra: 14 b Thủ tục VD_ thamso sử dụng tham trị x và tham số biến y cho nên gọi thủ tục VD_thamso(a, b) thì giống a màn hình hiện: 25 Tuy nhiên kết thúc thủ tục biến a giữ nguyên giá trị, c ̣n biến b bị thay đổi nên màn hình hiện: 15 c Thủ tục VD_thamso sử dụng tham số hình thức là tham biến cho nên gọi thủ tục VD_thamso (a, b) thì màn hình xuất hiện: 25 Kết thúc thủ tục này biến a, b bị thay đổi cho nên lệnh Writeln(a:5, b:5) in màn hình 25 (96) KIỂM TRA 15 ph Viết chương trình chính cho các bài toán sau: Đề Bài (6 đ): Nhập vào số nguyên dương a, b, c Hãy kiểm tra xem a, b, c có lập thành độ dài cạnh tam giác không? Bài (4 đ): Viết chương trình nhập xâu ký tự In màn hình xâu ký tự trên và số lần xuất ký tự chữ cái xâu (Tương tự bài - Ôn tập kỳ 1) Đề Bài (6 đ): Nhập số nguyên N, kiểm tra N là số chẵn hay số lẻ? Bài (4 đ): Viết chương trình nhập xâu ký tự In màn hình xâu ký tự trên và số lần xuất ký tự chữ cái xâu (Tương tự bài - Ôn tập kỳ 1) Đề Bài (6 đ): Nhập số nguyên N, kiểm tra N là số dương hay số âm? Bài (4 đ): Viết chương trình nhập xâu ký tự In màn hình xâu ký tự trên và đếm xem có bao nhiêu ký tự giống ký tự X, X nhập từ bàn phím (Tương tự đề kiểm tra kỳ 1) Đề Bài (6 đ): Viết chương nhập vào số nguyên dương bất kỳ, thông báo số vừa nhập có chia hết cho và không? Bài (4 đ): Viết chương trình nhập xâu ký tự In màn hình xâu ký tự trên và đếm xem có bao nhiêu ký tự giống ký tự X, X nhập từ bàn phím (Tương tự đề kiểm tra kỳ 1) (97) BÀI TẬP VÀ THỰC HÀNH (tiết 45-46) (Ngày soạn: 22/02/2012; Ngày dạy: / ./2012) A MỤC ĐÍCH – YÊU CẦU Kiến thức + Nâng cao kỹ viết, sử dụng chương trình Kĩ năng: + Rèn luyện cho học sinh kĩ lập trình giải số bài toán đơn giản + Rèn luyện học sinh có kĩ việc tổ chức và sử dụng chương trình lập trình + Biết cách viết chương trình có cấu trúc để giải bài toán trên máy tính Thái độ: + Tích cực học tập, hứng thú tiếp thu kiến thức B PHƯƠNG PHÁP GIẢNG DẠY - Thuyết trình, vấn đáp C PHƯƠNG TIỆN DẠY HỌC - Máy chiếu, máy tính, phông chiếu bảng, phòng thực hành E NỘI DUNG GIẢNG DẠY I NỘI DUNG BÀI HỌC Nội dung ghi bảng BÀI TẬP VÀ THỰC HÀNH (tiết 45-46) Tiết Câu 1: Tại các chương trình con: Kh_cach, chuvi, dientích, là hàm mà không là thủ tục? Tại các hàm trên trả cho ta số thực? Câu 2: Tại các chương trình hienthi, tinhchat, dacanh lại là thụ tục mà không là hàm? Hoạt động thầy Ổ định lớp Để mô tả hay quản lý điểm hay tam giác ta dùng kiểu liệu nào? Khi biết toạ độ ba đỉnh tam giác thì ta có thể tìm yếu tố nào? -> Mỗi yếu tố là chương trình lập trình -> Theo yêu cầu đề bài ta cần xây dựng chương trình nào? Hãy tìm hiểu và thảo luận chương trình câu b và trả lời các câu hỏi sau: Câu 1: Tại các chương trình con: Kh_cach, chuvi, dientích, là hàm mà không là thủ tục? Tại các hàm trên trả cho ta số thực? Câu 2: Tại các chương trình hienthi, tinhchat, dacanh lại là thụ tục mà Hoạt động trò Độ dài của các cạnh, chu vi, diện tích, tính chất tam (đều, cân hay) vuông tam giác đó Trả lời: +Procedure daicanh (var R:tamgiac, var a,b,c: real); + function chuvi (varR:tamgiac) : real ; + function dientich (var R:tamgiac):real; + function kh_cach (var P,Q: Diem):real; + Procedure hienthi (var R:tamgiac); (98) không là hàm? Yêu cầu học sinh copy bài chuẩn bị nhà vào máy (hay giáo viên chuẩn bị sẵn) và tiến hành kiểm tra lỗi và chạy thử + Procedure tinhchat (var R:tamgiac, var deu,can,vuong: boolean); Tra lời: trả giá trị qua tên Quan sát giúp đỡ học sinh hàm gặp khó khăn Do khoảng các hai điểm có thể là số thực -> chuvi, dientich cũmg có thể là số thực Không trả giá trị cụ thể Tiết uses crt; type Diem=record x,y: real; end; tamgiac=record A,B,C: Diem; end; const eps = 1.0E-6; var T:tamgiac; d,cn,v:boolean; n,i,deu,can,vuong:word; f,f1:text; function kh_cach(P,Q:Diem):real; begin kh_cach:=sqrt((P.x-Q.x)*(P.x-Q.x)+(P.yQ.y)*(P.y-Q.y)); end; procedure daicanh(var R:tamgiac; var a,b,c: real); begin a:=kh_cach(R.B,R.C); b:=kh_cach(R.A,R.C); c:=kh_cach(R.A,R.B); end; procedure tinhchat(var R:tamgiac; var deu,can,vuong:boolean); Phân tích bài toán: + Input là gì? + Output là gì? + Input và Output nằm đâu? -> Vì để lập trình giải bài toán ta cần có thao tác nào? Hướng giải bài toán: + Bài toán cần có chương trình nào? Có thể khai thác đâu? Dòng đầu tiên chứa số N N dòng toạ độ ba đỉnh tam giác Dòng đầu là số tam giác Dòng thứ hai là số tam giác cân (không đều) Dòng thứ ba là số tam giác vuông + Các thao tác đọc tệp văn + Các thao tác đếm các loại tam giác + Các thao tác để ghi kết đạt Trả lời: nằm hai tệp có tên là tamgiac.dat và tamgiac.out -> Các thao tác thực trên chương trình chính( sử dụng máy chiếu ghi lên bảng): - khởi tạo các biến đếm - Mở tệp tamgiac.dat để đọc Cần chương trình con: kh_cách, daicanh, tinhchat.(sử dụng các (99) var a,b,c: real; begin deu:=false; can:=false; vuong:=false; daicanh(R,a,b,c); if (abs(a-b) < eps) and (abs(a-c)<eps) then begin deu:=true; can:=true; end else if (abs(a-b)<eps) or (abs(a-c)<eps) or (abs(b-c)<eps) then can:=true; if (abs(a*a+b*b-c*c)<eps) or (abs(a*a+c*c-b*b)<eps) or(abs(c*c+b*b-a*a)<eps) then vuong:=true; end; begin deu:=0; can:=0; vuong:=0; assign(f,'tamgiac.dat'); reset(f); readln(f,n); assign(f1,'tamgiac.out'); rewrite(f1); for i:=1 to n begin readln(f,T.A.x,T.A.y,T.B.x,T.B.y,T.C.x,T.C y); tinhchat(T,d,cn,v); if d then deu:=deu+1 else begin if cn then can:=can+1; if v then vuong:=vuong+1; end; writeln(f1,'co: ',deu,'tam giac deu'); writeln(f1,'co: ',can,'tam giac can(khong deu)'); writeln(f1,'co:',vuong,'tam giacvuong'); writeln(f1); end; close(f); close(f1); end - Đọc số N Từ dòng đến dòng N thực các thao tác : + Đọc số vào biến (readln(T.A.x,T.A.y,T.B.x,T B.y,T.C.x,T.C.y)) + Gọi thủ tục tính chất + Kiểm tra điều kiện và đếm - Mở tệp tamgiac.out để ghi kết Yêu cầu học sinh lập trình giải bài toán Quan sát và giải đáp thắc mắc học sinh Hướng dẫn học sinh chạy thử và kiểm tra chương trình trên tệp có sẵn cách đổi tên tệp tamgiac.dat thành các tên tệp có sẵn chương trình có sẵn câu b) Theo dõi Thực hành trên máy Chạy thử và kiểm tra lỗi Kiểm tra chương trình với các tệp thông số có sẵn và đối chiểu kết (100) II CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: - Thủ tục, hàm , tham số giá trị, tham số biến, tham số thực sự, biến tòan cục, biến cục - Tìm hiểu số chương trình liên quan đến tam giác Bài tập: Viết chương trình nhập vào số tự nhiên N thông báo lên màn hình số đó có phải là số nguyên tố hay không Viết chương trình nhập vào số nguyên N In màn hình tất các ước số N For i:=1 To N Do If N MOD i=0 ThenWrite(i:5); Viết chương trình nhập dãy N số nguyên Tính tổng bình phương các số dương và tổng bình phương các số âm Với giá trị N nhập từ bàn phím, hãy thực các công việc sau: a) Nhập N số nguyên và tính tổng giá trị các số âm, tổng giá trị các số dương b) Tìm và in giá trị, vị trí số lớn nhất, số nhỏ {trường hợp có nhiều GTNN và GTLN giống thì in tất các vị trí đó: dùng vòng FOR i và If A[i] = GTLN để in tất các vị trí GTLN} c) Sắp xếp dãy giảm dần (101) BÀI 19: THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN (tiết 48-49) (Ngày soạn: 03/03/2011; Ngày dạy: / ./2011) A MỤC TIÊU: Kiến thức: - Học sinh biết số chương trình chuẩn Kỹ năng: - Bước đầu sử dụng các thư viện đó lập trình - Khởi động chế độ đồ họa - Sử dụng các thủ tục vẽ điểm, đường, hình tròn, hình ellipse, hình chữ nhật Thái độ: - Học sinh chú ý học tập B PHƯƠNG PHÁP GIẢNG DẠY - Giảng giải, thuyết trình và mô C KIẾN THỨC TRỌNG TÂM - Tìm hiểu các thư viện: CRT, GRAPH, các thủ tục vẽ điểm, đường thẳng và các hình D PHƯƠNG TIỆN DẠY HỌC - Bảng đen, phấn trắng, máy chiếu đa E NỘI DUNG GIẢNG DẠY I HOẠT ĐỘNG I: Tìm hiểu thư viện CRT (tiết 1) Mục tiêu: - Học sinh biết số chương trình chuẩn thư viện Nội dung: - Thư viện CRT chứa các thủ tục liên quan đến việc quản lý, khai thác màn hình, bàn phím VD: + Thủ tục Clrscr: xóa màn hình + Textcolor(c): đặt màu chữ cho màn hình, đó c là biến có giá trị nguyên không âm để xác định màu + Thủ tục Texbackground(c): đặt màu cho màn hình (Giá trị màu SGK) + Thủ tục Gotoxy(x,y): đưa trỏ đến vị trí cột x dòng y màn hình văn Tiến hành dạy học: Hoạt động thầy Hoạt động trò Tìm hiểu thủ tục Clrscr: - Yêu cầu học sinh nghiên cứu SGK, kể tên các chương trình thư viện CRT - Cho HS tham khảo chương trình sau: Begin Clrscr; Readln; End - Biên dịch chương trình Hỏi? Tại lại xuất lỗi? khắc phục nào? - Thêm Uses CRT; vào đầu chương trình và thực chương trình để HS thấy kết quả, chú ý cho HS ghi nhớ màn hình trước lúc thực chương trình - Hỏi: Chức thủ tục Clrscr; Tham khảo SGK: - Clrscr, textcolor, textbackground, gotoxy - Quan sát chương trình - Vì sử dụng thủ tục chưa sử dụng thư viện CRT - Thêm lệnh Uses CRT; - Quan sát giáo viên thực chương trình - Xóa màn hình (102) Tìm hiểu thủ tục Textcolor - Chiếu chương trình VD sau: Uses CRT; Begin Write(‘chua dat mau chu’); Textcolor(4); Write(‘da dat mau chu do’); Readln End - Thực chương trình để HS thấy kết - Hỏi: Chức lệnh Textcolor(4); Tìm hiểu thủ tục Texbackground - chiếu chương trình VD sau: Uses CRT; Begin Textbackground(1); Write(‘da dat mau nen’); Readln End - Thực hiệc CT để HS thấy kết - Hỏi: Chức lệnh Texbackground(1) Tìm hiểu thủ tục Gotoxy - Chiếu chương trình VD sau: Uses CRT; Begin Write(‘con tro dang o cot 10 dong 20’); Gotoxy(10,20); Readln End - Thực CT để HS thấy kết - Hỏi: Chức lệnh Gotoxy(10,20); - Quan sát chương trình - HS quan sát chương trình - Đặt màu chữ thành màu chữ đỏ - HS quan sát chương trình - Đặt màu thành màu xanh da trời - Quan sát chương trình - Quan sát kết - Đưa trỏ vị trí cột 10, dòng 20 II HOẠT ĐỘNG II: Tìm hiểu thư viện Graph (tiết 1) Mục tiêu: - Học sinh biết cách khởi động chế độ đồ họa Nội dung: - Thư viện Graph chứa các chương trình phục vụ khai thác khả đồ họa MT mức độ thông dụng vẽ điểm, các đường, tô màu,… - Các thiết bị và chương trình hỗ trợ đồ họa: + Có hai chế độ màn hình: đồ họa và văn + Bảng mạch điều khiển màn hình là thiết bị đảm bảo tương tác xử lý và màn hình để thực các chế độ phân giải và màu sắc + TP Pascal cung cấp các chương trình điều khiển (có phần mở rộng là BGI) tương ứng với các loại card đồ họa Khi khởi động chế độ đồ họa cần đường dẫn đến chương trình này + Tọa độ màn hình đánh số từ Cột đánh số từ trái qua phải, dòng đánh số từ trên xuống Giá trị lớn tọa độ dòng và tọa độ cột gọi là độ phân giải màn hình (103) + Để thực các chức đồ họa và sử dụng các thủ tục và hàm thư viện Graph - Khởi động chế độ đồ họa: Initgraph(dr,md:integer;pth:string); dr : Là số hiệu trình điều khiển BGI md : Là số hiệu độ phân giải pth : Là đường dẫn tới các tệp BGI: Closegraph; - Kết thúc chế độ đồ họa chế độ văn bản: Tiến hành dạy học: Hoạt động thầy Yêu cầu HS nghiên cứu SGK để trả lời các câu hỏi: - Hỏi: Các dạng liệu nào có thể hiển thị trên màn hình? - Hỏi: Nhiệm vụ chính Card màn hình? - Hỏi: Khi nói màn hình có độ phân giải 640x480 là nói đến điều gì? Hoạt động trò Tham khảo SGK để trả lời - Văn và hình ảnh - Làm cầu nối CPU và màn hình thể thông tin - Là nói đến màn hình có 640 dòng và 480 cột Đưa cấu trúc chung thủ tục khởi động Quan sát theo dõi dẫn dắt giáo đồ họa viên * Initgraph(dr, md : integer ; pth : string) ; - Giải thích các thông số thủ tục cho HS - Cho HS thấy VD khởi động đồ họa - Quan sát giáo viên thực Giới thiệu thủ tục trở chế độ đồ văn Quan sát và so sánh hai chế độ Closegraph; - Yêu cầu khởi động chế độ đồ họa và chuyển văn và đồ họa - Thay phiên thực việc chuyển chế độ văn đổi hai chế độ văn và đồ họa III HOẠT ĐỘNG III: Tìm hiểu các thủ tục vẽ điểm, đường và các hình (tiết 2) Mục tiêu: - Học sinh biết các thủ tục vẽ điểm, đường và các hình bản, biết các thủ tục, các tham số và các chức thủ tục Nội dung: - Trước vẽ, ta đặt màu cho nét vẽ: Setcolor(word); - Vẽ điểm: Putpixel(x,y:integer; color:word); - Vẽ đường thẳng: Line(x1,y1,x2,y2:integer); (x1,y1,x2,y2: các tọa độ điểm đầu-cuối) Lineto(x,y:integer); (vẽ từ vị trí trỏ đến điểm có tọa độ x,y) Linerel(dx,dy:integer); (tọa độ cộng với gia số dx,dy) - Vẽ hình tròn: Circle(x,y:integer; r:word); - Vẽ hình chữ nhật: Rectang(x1,y1,x2,y2:integer); - Vẽ hình Elip: Ellipse(x,y:integer; stangle,endangle,xr,yr:word); Tiến hành dạy học: Hoạt động thầy Tìm hiểu thủ tục Setcolor - Cấu trúc chung thủ tục: Setcolor(m:word); - Chương trình VD: Hoạt động trò Quan sát cấu trúc chung và suy nghĩ để trả lời câu hỏi - Quan sát chương trình (104) Uses graph Begin Drive:=0; Initgraph(drive,mode,‘c:\Tp\BGI’); Circle(12,40,100); Setcolor(4); Circle(12,40,200); Readln; End - Thực CT để HS thấy kết - Hỏi: Chức thủ tục Setcolor Tìm hiểu thủ tục Putpixel - Cấu trúc chung thủ tục: Putpixel(x,y:integer;color:word); - Chiếu chương trình VD: Uses graph; var driver,mode:integer; Begin Driver:=0; Initgraph(driver, mode, 'D:\tp\BGI'); Putpixel(100,40,14); readln End - Thực chương trình để HS thấy kết - Hỏi: Chức thủ tục Putpixel - Quan sát kết chương trình - Vẽ điểm có màu Color trên màn hình tọa độ (x,y) Quan sát cấu trúc chung và suy nghĩ để trả lời câu hỏi - Quan sát chương trình - Quan sát kết chương trình - Vẽ đường thẳng từ điểm có tọa độ (x1,y1) đến điểm có tọa độ (x2,y2) Quan sát cấu trúc chung và suy nghĩ để trả lời câu hỏi - Quan sát chương trình - Quan sát kết chương trình - Vẽ đoạn thẳng từ điểm đến điểm có tọa độ (x,y) Quan sát cấu trúc chung và suy nghĩ để trả lời câu hỏi - Vẽ đoạn thẳng nối điểm với điểm có tọa độ tọa độ điểm cộng với dx, dy Tìm hiểu thủ tục Line - Cấu trúc chung thủ tục Line: Line(x1,y1,x2,y2:integer); - Chiếu chương trình VD thay lệnh Putpixel(12,40,15); lệnh Line(1,1,20,20); Quan sát cấu trúc chung và suy - Thực CT để HS thấy kết nghĩ để trả lời câu hỏi - Hỏi: Chức thủ tục Line Tìm hiểu thủ tục Lineto - Quan sát chương trình - Cấu trúc chung thủ tục: Lineto(x,y:integer); - Chiếu chương trình VD trên thay lệnh - Quan sát kết chương trình Putpixel(12,40,15); lệnh Lineto(20,20); - Thực CT để HS thấy kết + Circle : Vẽ đường tròn có tâm - Hỏi: Chức thủ tục Lineto (x,y) và bán kính r Tìm hiểu thủ tục Linerel + Ellipse : Vẽ cung Ellipse có tâm - Cấu trúc chung thủ tục: điểm x,y với bán kính trục xr, yr, từ Linerel(dx,dy:integer); góc khởi đầu stangle đến góc kết thúc - Hỏi: Chức thủ tục Linerel endangle Tìm hiểu thủ tục Circle, Ellipse, Quan sát cấu trúc chung và suy Rectangle nghĩ để trả lời câu hỏi - Cấu trúc chung thủ tục: (105) * Circle(x,y:integer;r:word); * Ellipse(x,y:integer; stangle, endangle, xr,yr:word); * Rectangle(x1,y1,x2,y2:integer); - Chương trình VD: Uses graph; var driver,mode:integer; Begin Driver:=0; Initgraph(driver, mode, 'D:\tp\BGI'); setcolor(86); Circle(40,40,30); setcolor(14); Ellipse(500,200,50,120,50,100); setcolor(2); Rectangle(100,100,200,200); readln End - Quan sát chương trình - Quan sát kết chương trình - Setcolor (m:word) : đặt màu cho nét vẽ với màu có số hiệu m IV HOẠT ĐỘNG IV: Tìm hiểu số thư viện khác (tiết 2) Mục tiêu: - Học sinh biết tên và chức thư viện: System, Dos, Printer Nội dung: - Thư viện System chứa các hàm sơ cấp và các thủ tục vào/ra mà các chương trình dùng tới - Thư viện DOS chứa các thủ tục cho phép thực trực tiếp các lệnh tạo thư mục, thiết lập ngày hệ thống - Thư viện Printer cung cấp các thủ tục làm việc với máy in Tiến hành dạy học: Hoạt động thầy Hoạt động trò Yêu cầu HS nghiên cứu SGK, nêu tên các Các thư viện:System, Dos, Printer thư viện Chức thư viện: - System : Chứa các hàm và thủ tục vào/ra Yêu cầu HS nêu chức thư sơ cấp viện - Dos : Chứa các thủ tục tạo thư mục, đóng mở file,… - Printer : Chức các thủ tục liên quan đến máy in V HOẠT ĐỘNG V: Rèn luyện kỹ lập trình (Thời gian bổ sung) Mục tiêu: - Bước đầu HS sử dụng các thủ tục thư viện Graph để viết chương trình vẽ số hình Nội dung: Viết chương trình vẽ 20 hình tròn lồng có tọa độ tâm là điểm chính màn hình, các hình có bán kính cách điểm ảnh (106) Tiến hành dạy học: Hỏi: Chức thủ tụcạt động thầy Giới thiệu nội dung yêu cầu lên bảng Định hướng cách giải vấn đề cho HS - Thủ tục để vẽ hình tròn có tâm là điểm chính màn hình - Cần bao nhiêu câu lệnh vậy, dùng cấu trúc nào để điều khiển Chia lớp làm nhóm, nhóm viết chương trình trên máy, nhóm viết lên bìa - Thu phiếu trả lời Chiếu lên bảng gọi HS nhóm khác lên nhận xét đánh giá Sửa chương trình hoàn chỉnh cho học sinh viết trên máy Hỏi: Chức thủ tụcạt động trò Quan sát yêu cầu GV: Circle(x,y : integer ; r : word); - Cần 20 câu lệnh, nên dùng vòng For để chương trình ngắn gọn Thảo luận theo nhóm để viết chương trình lên giấy bìa - Báo cáo kết viết - Nhận xét, đánh giá và bổ sung thiếu sót các nhóm khác Thực chương trình trên máy để HS thấy Quan sát kết trên màn hình kết VI CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph) Củng cố: Qua bài học HS nắm vững kiến thức trọng tâm sau: + Thư viện chương trình cung cấp chương trình chuẩn nhằm mở rộng khả ứng dụng + Khởi động chế độ đồ họa Chuyển từ chế độ màn hình đồ họa sang chế độ màn hình văn + Thủ tục vẽ điểm, đường và các hình Bài tập: * Đọc thêm bài đọc thêm SGK, Trang upload.123doc.net (107) BÀI TẬP, ÔN TẬP HỌC KỲ II (tiết 50) (Ngày soạn: 20/02/2010; Ngày dạy: / ./2010) A MỤC ĐÍCH – YÊU CẦU Kiến thức + Tiếp tục củng cố cho học sinh kiến thức đã học Kĩ năng: + Rèn luyện cho học sinh kĩ lập trình giải số bài toán dạng CT Thái độ: + Tích cực học tập, hứng thú tiếp thu kiến thức B PHƯƠNG PHÁP GIẢNG DẠY - Thuyết trình, vấn đáp E NỘI DUNG ÔN TẬP Viết chương trình dạng CTC cho các bài tập sau: (Mỗi BT là chương trình chính) Chú ý: Khi viết chương trình dạng hàm, giá trị trả cần gán phép tính giá trị thực nhiều lần VD chương trình tính giai thừa… Viết chương trình cách thực các công việc sau: a) Lập thủ tục nhập ba số thực dương a, b, c từ bàn phím b) Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh tam giác hay không c) S  ab sin C Viết thủ tục tính diện tích tam giác theo công thức: d) Viết thủ tục tính các trung tuyến tam giác: Nhập n, m là các số nguyên dương, liệt kê các số nguyên tố nằm khoảng từ n đến m (n < m) Viết chương trình sử dụng hàm tính: giai thừa a và an var n:longint; Tối giản phân số a/b Nhập tử và mẫu số phân số (a, b) và (c, d) Thực phép toán @ (có thể là +, -, a c p @  b d q *, /) và in kết là phân số tối giản: Nhập n phần tử là các số nguyên dương và số k và thực các công việc sau: a) Đếm xem dãy có bao nhiêu số k? b) Đếm xem dãy có bao nhiêu số lớn k? c) Đếm xem dãy có bao nhiêu số nhỏ k? Nhập dãy số thực a Nhập số x Sắp xếp lại dãy a thành dãy giảm Nhập dãy số thực a Xét xem có thể xếp dãy a thành dãy cấp số cộng không? const max=100; type mang=array[1 max] of real; var i,n,k: integer; a:mang; x:real; function ktsc:boolean; var i:integer; d:real; begin ktsc:=false; d:=a[2]-a[1]; (108) for i:=1 to n-1 if a[i+1]-a[i]<>d then exit; ktsc:=true; end; begin write('nhap so phan tu n= '); readln(n); writeln('nhap gia tri cho mang:'); for i:=1 to n begin write('a[',i,']= '); readln(a[i]); end; for i:=1 to n-1 for k:=i+1 to n if a[i]>a[k] then begin x:=a[i]; a[i]:=a[k]; a[k]:=x; end; if ktsc then writeln('co the sap xep cap so cong') else writeln('khong the sap xep cap so cong'); readln end 10 Viết chương trình nhập xâu ký tự Thực xóa các ký tự là chữ số VAR s:string; FUNCTION posnum(s:string):byte; var ok:boolean; i:integer; begin ok:=false; i:=1; while (i<=length(s))and(not ok) if s[i] in ['0' '9'] then ok:=true else i:=i+1; if ok then posnum := i else posnum:=0; end; BEGIN writeln('nhap xau s: ');readln(s); while posnum(s)<>0 delete(s,posnum(s),1); writeln('xau moi la: ',s); readln END 11 Nhập xâu ký tự và tách xâu đó thành xâu với vị trí và số lượng ký tự cần tách nhập từ bàn phím: VD: Nhập xâu s1 = “HOANG NGOC QUE” , cần tách kí tự lưu xâu s2 vị trí thứ => kq: s1= ‘HOANG QUE’ và s2 = “NGOC” var s1,s2:string; pos, num:integer; procedure tachxau; begin (109) write('nhap vi tri can tach: '); readln(pos); write('nhap so ky tu can tach: '); readln(num); s2:=copy(s1,pos,num); delete(s1,pos,num); writeln('xau s1= ',s1); writeln('xau s2= ',s2); end; begin write('nhap xau s1: '); readln(s1); tachxau; readln end 12 Nhập xâu ký tự và thực hiện: a) Xóa tất các kí tự trắng dư thừa xâu ký tự: (kí tự trắng dư thừa là kí tự trắng xuất đầu xâu, cuối xâu và có từ KT trắng trở lên các từ) b) Từ xâu đã chuẩn hóa câu a, hãy đếm xem xâu có bao nhiêu từ 13 Giả sử có tệp VB.txt trên ổ đĩa D Thực các công việc sau: a) Nhập xâu kí tự : b) Đếm số kí tự là chữ số, chữ cái xâu c) In xâu chữ hoa 14 Giả sử có tệp VB.txt trên ổ đĩa D Thực các công việc sau: a) Nhập và ghi xâu văn vào tệp VB.txt b) Đọc và in xâu văn đó c) Nhập kí tự K (K là kí tự bất kỳ), đếm xem có bao nhiêu kí tự K xuất xâu VAR f:text; s:string; PROCEDURE NHAP; begin assign(f,'D:\vb.txt'); rewrite(f); write('Nhap xau KT: '); readln(s); writeln(f,s); close(f); end; PROCEDURE DOC_IN; begin assign(f,'d:\vb.txt'); reset(f); while not eof(f) begin readln(f,s); writeln('xau tep la: ',s); end; close(f); end; PROCEDURE DEMK; var ik,demk:integer; k:char; begin assign(f,'d:\vb.txt'); reset(f); write('nhap k= '); readln(k); (110) demk:=0; for ik:=1 to length(s) if s[ik] = k then inc(demk); writeln('co ',demk,' phan tu la ',k); close(f); end; PROCEDURE DEMDONG; var dong: integer; id: byte; begin Assign(f,'d:\vb.txt'); reset(f); dong:=0; while not EOF(f) begin readln(f,s); inc(dong); end; writeln('so dong ',dong:2); close(f); end; BEGIN clrscr; nhap; doc_in; demk; demdong; readln END 15 Nhà trường cần quản lý lớp học gồm N học sinh Hãy viết chương trình kiểu ghi thực các công việc sau: a) Nhập thông tin học sinh: số thứ tự, họ tên, giới tính, quê quán, điểm toán, điểm văn b) Xếp loại và in màn hình kết bảng điểm theo loại:  Loại “GIOI” điểm TB ≥ 8.0  Loại “KHA” điểm 6.5 ≤ TB < 8.0  Loại “TB” điểm 5.0 ≤ TB < 6.5  Trường hợp còn lại là loại yếu 16 Nhà trường cần in danh sách lớp học gồm N học sinh Hãy viết chương trình kiểu ghi thực các công việc sau: a) Nhập thông tin học sinh: số thứ tự, họ tên, điểm toán, điểm lý, điểm tin b) In danh sách vừa nhập theo mẫu sau: 17 Viết chương trình kiểu ghi để quản lý thư viện sách theo các yêu cầu sau: a) Nhập thông tin cần quản lý gồm: Tên sách (tens), tên nhà xuất (nxb), năm xuất (nxb), giá tiền (gia), số lượng (sl) (111) b) Đưa danh sách là tên sách, năm XB các sách cùng nhà xuất NXB nhập từ bàn phím c) Tính tổng số tiền sách thư viện (112)

Ngày đăng: 09/06/2021, 23:41

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w