Tải bản đầy đủ (.docx) (155 trang)

giao an tin hoc 11

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (533.89 KB, 155 trang )

<span class='text_page_counter'>(1)</span>Ngày soạn: 20-08-2016 Tiết CT: 01 Bài 1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH I. MỤC TIÊU 1. Kiến thức: - Học sinh nhận biết được có ba lớp ngôn ngữ lập trình và các mức của ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao. - Biết được vai trò của chương thình dịch. 2. Kĩ năng: Phân biệt được hai khái niệm biên dịch và thông dịch, phân biệt được các loại ngôn ngữ lập trình. 3. Thái độ: Thấy được sự cần thiết và tiện lợi khi sử dụng các ngôn ngữ lập trình bậc cao. Liên hệ được với quá trình giao tiếp trong đời sống. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ 2. Kết nối: Hoạt động của GV và HS GV: Có mấy cách mô tả thuật toán? HS: Có 3 cách mô tả thuật toán: - Mô tả bằng ngôn ngữ tự nhiên. - Mô tả bằng sơ đồ khối. - Mô tả bằng ngôn ngữ lập trình. GV: Mô tả thuật toán bằng ngôn ngữ tự nhiên và bằng sơ đồ khối thì máy có thể hiểu và thực hiện được không? HS: Máy không thể hiểu và thực hiện được. GV: Để máy có thể hiểu và thực hiện được thì chúng ta phải mô tả thuật toán bằng một ngôn ngữ lập trình cụ thể nào đó. GV: Hoạt động để diễn đạt thuật toán thông qua một ngôn ngữ lập trình được gọi là lập trình. GV: Hãy phát biểu đầy đủ khái niệm lập trình. HS: Xem SGK trả lời câu hỏi. GV: Hãy phát biểu đầy đủ khái niệm ngôn ngữ lập trình. HS: Dựa vào SGK trả lời câu hỏi. GV: Có những loại ngôn ngữ lập trình. Nội dung. - Lập trình: là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán. - Ngôn ngữ lập trình: là một phần mềm dùng để diễn đạt thuật toán thành một chương trình giúp cho máy hiểu được thuật toán đó..

<span class='text_page_counter'>(2)</span> nào? HS: Có 3 loại ngôn ngữ lập trình: Ngôn ngữ máy. Hợp ngữ. Ngôn ngữ bậc cao. GV: Cho biết ưu điểm nổi bật của ngôn ngữ lập trinh bậc cao? HS: - Gần gủi với ngôn ngữ tự nhiên. - Có thể thực hiện được trên nhiều loại máy. GV: Máy tính có thể trực tiếp hiểu và thực hiện được chương trình viết bằng ngôn ngữ lập trình bậc cao hay không? HS: Không. GV: Vậy làm thế nào để máy tính có thể hiểu và thực hiện được chương trình viết bằng ngôn ngữ bậc cao? HS: Cần có một chương trình dịch để dịch chương trình viết bằng ngôn ngữ bậc cao sang ngôn ngữ máy sao cho máy có thể hiểu và thực hiện được. - Chương trình dịch: là chương trình có GV: Chương trình dịch là gì? chức năng chuyển đổi một chương trình HS: Dựa vào SGK khái niệm chương được viết bằng ngôn ngữ bậc cao thành trình dịch. một chương trình có thể thực hiện được GV: Bạn chỉ biết tiếng Việt, người trên máy. khách du lịch chỉ biết tiếng Anh, vậy thì để giới thiệu về trường mình cho người *) Thông dịch: Lần lượt dịch và thực khách đó biết bạn có thể thực hiện bằng hiện từng câu lệnh. cách nào? HS: Trả lời câu hỏi. *) Biên dịch: Kiểm tra, phát hiện lỗi GV: Thông dịch là gì? và dịch toàn bộ chương trình nguồn HS: Dựa vào SGK trả lời câu hỏi. thành một chương trình thực hiện trên GV: Biên dịch là gì? máy. HS: Dựa vào SGK trả lời câu hỏi. 3. Củng cố: - Khái niệm lập trình và ngôn ngữ lập trình. - Có ba loại ngôn ngữ lập trình: Ngôn ngữ máy, hợp ngữ và ngôn ngữ lập trình bậc cao. - Khái niệm chương trình dịch. - Có 2 loại chương trình dịch: Thông dịch và biên dịch. 4. Bài tập về nhà: Học bài và làm bài tập ở cuối bài học..

<span class='text_page_counter'>(3)</span> Ngày soạn: 25-08-2016 Tiết CT:02 Bài 2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH I. MỤC TIÊU 1. Kiến thức: - Biết một số khái niệm: tên, tên chuẩn, tên dành riêng, hằng và biến. - Học sinh ghi nhớ được các quy định về tên, hằng và biến trong một ngôn ngữ lập trình. 2. Kĩ năng: - Phân biệt được tên, hằng và biến. - Biết cách đặt tên chúng và nhận biết được tên viết sai quy tắc. 3. Thái độ: Rèn luyện cho HS tính nguyên tắc, chặt chẽ trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Khái niệm lập trình, ngôn ngữ lập trình? Câu trả lời: - Lập trình: là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán. - Ngôn ngữ lập trình: là một phần mềm dùng để diễn đạt thuật toán thành một chương trình giúp cho máy hiểu được thuật toán đó. 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Có những yếu tố nào dùng để xây 1. Các thành phần cơ bản: dựng nên ngôn ngữ tiếng Việt? Bảng chữ cái tiếng Việt, số, dấu. Cách ghép các kí tự thành từ, ghép các từ thành câu. Ngữ nghĩa của từ và câu. GV: Trong ngôn ngữ lập trình cũng vậy, Mỗi ngôn ngữ lập trình có ba thành nó cũng gồm 3 thành phần: Bảng chữ cái, phần cơ bản là bảng chữ cái, cú pháp và cú pháp và ngữ nghĩa. ngữ nghĩa. a) Bảng chữ cái: Bảng chữ cái các ngôn ngữ lập trình nói chung không khác GV: Bảng chữ cái tiếng Anh gồm những nhau nhiều. Sau đây là bảng chữ cái của kí tự nào? ngôn ngữ Pascal: HS: Thảo luận theo nhóm trả lời câu hỏi. - Các chữ cái thường và chữ cái hoa GV: Hệ thập phân cần bao nhiêu chữ số của bảng chữ cái tiếng Anh: để biểu diễn các số và đó là những số a b c d ….z và A B C D … Z. nào? - 10 chữ số thập phân: 0 1 2 3 4 5 6 HS: Trả lời câu hỏi. 7 8 9. GV: Kể ra một số kí tự đặc biêt khác. - Các kí tự đặc biệt: + - * / = > < [ ] . , ; # ^ $ @ & ( )   : ‘ _ (dấu.

<span class='text_page_counter'>(4)</span> GV: Hầu hết các ngôn ngữ đều sử dụng dấu cộng (+) để chỉ phép cộng. Giã thiết A, B là đại lượng nhân giá trị nguyên và X, Y là đại lượng nhận giá trị thực. Khi đó dấu “+” trong biểu thức A+B là cộng 2 số nguyên, còn trong biểu thức X+Y là cộng 2 số thực. GV: Hãy cho biết phát biểu sau đây đúng hay sai? Vì sao? “Chương trình nguồn bị lỗi cú pháp thì chương trình đích cũng bị lỗi cú pháp”. HS: Trả lời câu hỏi. GV: Một chương trình mà chương trình dịch không còn báo lỗi thì chương trình đó đã đảm bảo hoàn toàn đúng hay chưa? HS: Trả lời câu hỏi.. GV: Trình bày những hiểu biết của em về tên dành riêng, cho ví dụ. HS: Tham khảo sách giáo khoa trả lời câu hỏi. GV: Trình bày những hiểu biết của em về tên chuẩn, cho ví dụ. HS: Tham khảo sách giáo khoa trả lời câu hỏi. GV: Trình bày những hiểu biết của em về tên do người lập trình tự đặt, cho ví dụ. HS: Tham khảo sách giáo khoa trả lời câu hỏi. GV: Cho biết các tên do người lập trình tự đặt sau đây tên nào đúng và tên nào sai: A; A BC, 6AB, X!Y. HS: Trả lời câu hỏi. GV: Hằng là gì? Biến là gì? HS: Tham khảo SGK trả lời câu hỏi. GV: Cho ví dụ về hằng số học, logic, chuỗi.. cách). b) Cú pháp: là bộ quy tắc để viết chương trình. c) Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp kí tự dựa vào ngữ cảnh của nó. * Ghi chú: - Các lỗi cú pháp được chương trình dịch phát hiện và thông báo cho người lập trình biết. Chỉ có các chương trình không còn lỗi cú pháp mới được dịch sang ngôn ngữ máy. - Các lỗi ngữ nghĩa khó phát hiện hơn. Chương trình dịch chỉ phát hiện được lỗi cú pháp chứ không phát hiện được lỗi ngữ nghĩa. Phần lớn các lỗi ngữ nghĩa chỉ phát hiện khi thực hiện chương trình trên dữ liệu cụ thể. 2. Một số khái niệm: a) Tên: +) Tên dành riêng: là những tên được ngôn ngữ lập trình quy định với ý nghĩa riêng xác định (còn gọi là từ khoá), người dùng không được dùng với ý nghĩa khác. +) Tên chuẩn: là tên được ngôn ngữ lập trình dùng với ý nghĩa riêng nào đó, người lập trình có thể định nghĩa lại để dùng với ý nghĩa khác. +) Tên do người lập trình tự đặt: Tên được đặt tuỳ ý, nhưng phải tuân thủ các quy tắc sau: Không được dài quá 127 kí tự (Turbo pascal) và không dài quá 255 kí tự (Free Pascal). Không được chứa khoảng trắng (dấu cách). Không được bắt đầu bằng chữ số. Không được chứa các kí tự đặc biệt. Không được trùng với tên dành riêng. b) Hằng và biến: - Hằng là đại lượng có giá trị không thay.

<span class='text_page_counter'>(5)</span> GV: Phần chú thích có ảnh hưởng đến nội dung của chương trình không? Và có phần chú thích để làm gì? HS: Trả lời câu hỏi.. đổi trong quá trình thực hiện chương trình, gồm có hằng số học, hằng logic, hằng chuỗi. - Biến là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình. c) Ghi chú: Phần chú thích không ảnh hưởng đến nội dung của chương trình và giúp người đọc hiểu chương trình dễ hơn. Pascal đoạn chú thích được đặt trong cặp dấu  hoặc cặp dấu (* *). C++ được đặt trong cặp dấu /* */.. 3. Củng cố: Tên do người lập trình tự đặt phải tuân thủ những quy tắc nào? 4. Bài tập về nhà: Học bài và làm bài tập ở cuối bài học..

<span class='text_page_counter'>(6)</span> Ngày soạn: 02-09-2016 Tiết CT: 03 BÀI TẬP CHƯƠNG I I. MỤC TIÊU 1. Kíến thức: Củng cố lại cho HS những kiến thức đã học về lập trình, ngôn ngữ lập trình bậc cao, ngôn ngữ máy, chương trình dịch, thông dịch, biên dịch qua các bài tập trắc nghiệm. 2. Kĩ năng: - Xác định được tên đúng, tên sai, tên chuẩn, từ khoá. - Biết viết hằng và tên đúng trong một ngôn ngữ lập trình cụ thể. 3. Thái độ: - Nhận thức được quá trình phát triển của ngôn ngữ lập trình gắn liền với quá trình phát triển của tin học. - Ham muốn học một ngôn ngữ lập trình cụ thể để có khả năng giải các bài toán bằng máy tính điện tử. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ Câu hỏi: Hằng là gì? Biến là gì? Có những đại lượng hằng nào? Câu trả lời: - Hằng là đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình. Gồm hằng số học, hằng logic và hằng xâu. Biến là đại lượng được đặt tên và giá trị có thể bị thay đổi trong quá trình thực hiện chương trình. 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Ghi câu hỏi lên bảng và gọi 1 Câu 1: Tại sao người ta phải xây dựng các HS lên bảng trả lời câu hỏi. ngôn ngữ lập trình bậc cao? HS: Lên bảng trả lời câu hỏi. Đáp án: GV: Nhận xét, đánh giá và cho Ngôn ngữ bậc cao gần với ngôn ngữ tự điểm. nhiên hơn, do đó thuận tiện cho đông đảo người lập trình. Chương trình viết bằng ngôn ngữ lập trình bậc cao chạy được trên nhiều loại máy. Chương trình viết bằng ngôn ngữ lập trình bậc cao dễ đọc hiểu, dễ hiệu chỉnh và dễ nâng cấp. Ngôn ngữ bậc cao cho phép làm việc GV: Ghi câu hỏi lên bảng và gọi 1 với nhiều kiểu dữ liệu và cách tổ chức dữ HS lên bảng trả lời câu hỏi. liệu đa dạng, thuận tiện cho mô tả thuật HS: Lên bảng trả lời câu hỏi. toán. GV: Nhận xét, đánh giá và cho Câu 2: Chương trình dịch là gì? Tại sao phải.

<span class='text_page_counter'>(7)</span> điểm. có chương trình dịch? GV: Hãy cho biết Input và Output Đáp án: của chương trình dịch? - Chương trình dịch là chương trình có chức HS: Tra lời câu hỏi. năng chuyển đổi chương trình viết bằng ngông ngữ lập trình bậc cao thành chương trình thực hiện được trên máy. - Vì máy tính không thể hiểu và thực hiện được chương trình viết bằng ngôn ngữ bậc cao, vì vậy cần có chương trình dịch để dịch GV: Ghi câu hỏi lên bảng và gọi 1 chương trình viết bằng ngôn ngữ bậc cao HS lên bảng trả lời câu hỏi. sang chương trình thực hiện được trên máy. HS: Lên bảng trả lời câu hỏi. Câu 3: Thông dịch và biên dịch khác nhau GV: Nhận xét, đánh giá và cho như thế nào? điểm. Đáp án: - Trình biên dịch duyệt, kiểm tra, phát hiện lỗi, xác định chương trình nguồn có dịch được không, dịch toàn bộ chương trình nguồn thành chương trình đích có thể thực hiện trên máy và có thể lưu trữ lại để sử dụng về sau khi cần thiết. GV: Ghi câu hỏi lên bảng và gọi 1 - Trình thông dịch lần lượt dịch từng câu lệnh HS lên bảng trả lời câu hỏi. ra ngôn ngữ máy rồi thực hiện ngay câu lệnh HS: Lên bảng trả lời câu hỏi. vừa dịch được hoặc báo lỗi nếu không dịch GV: Nhận xét, đánh giá và cho được. điểm. Câu 4: Hãy cho biết điểm khác nhau giữa tên chuẩn và tên dành riêng? Kể ra 3 tên chuẩn và 3 tên dành riêng trong ngôn ngữ Pascal. Đáp án: - Tên dành riêng không được dùng GV: Ghi câu hỏi lên bảng và gọi 1 với ý nghĩa đã xác định, tên chuẩn có thể HS lên bảng trả lời câu hỏi. định nghĩa lại và dùng với ý nghĩa khác. HS: Lên bảng trả lời câu hỏi. 3 tên chuẩn: real, integer, sqrt. GV: Nhận xét, đánh giá và cho 3 tên dành riêng: Program, BEGIN, điểm. End. Câu 5: Hãy nêu quy tắc đặt tên trong Pascal và cho biết các tên sau tên nào đúng tên nào sai? Tại sao? (theo quy tắc đặt tên trong Pascal). A45; A BC; 6ABC, A#BC Đáp án: Quy tắc đăt tên trong ngôn ngữ Pascal: + Không được dài quá 127 kí tự (Turbo Pascal) và không dài quá 255 kí tự (Free Pascal). + Không được trùng tên với tên chuẩn. GV: Ghi câu hỏi lên bảng và gọi 1 + Không được chứa dấu cách và các kí HS lên bảng trả lời câu hỏi. tự đặc biệt..

<span class='text_page_counter'>(8)</span> HS: Lên bảng trả lời câu hỏi. GV: Nhận xét, đánh giá và cho điểm.. + Không được bắt đầu bằng chữ số. A45 đúng. A BC là tên sai, vì có chứa khoảng trắng. 6ABC là tên sai, vì chứa chữ số đầu tiên. A#BC là tên sai, vì chứa kí tự đặc biệt. Câu 6: Hãy cho biết những biểu diễn nào dưới đây không phải là biểu diễn hằng trong Pascal và chi rõ lỗi trong từng trường hợp: a)150.0 b) -22 c) 6,23 d) ‘43’ e)A20 f) 1.06E-15 g) 4+6 h) ‘C i) ‘TRUE”. Đáp án: c, e, h. 3. Củng cố: Ghép một câu ở cột 1 và một câu thích hợp ở cột 2 ở bảng sau: (A) là đại lượng có giá trị không đổi trong quá trình thực (1) Biên dịch. hiện chương trình. (B) dịch và thực hiện từng câu lệnh, nếu còn câu lệnh tiếp (2) Thông dịch. theo thì quá trình này còn tiếp tục. (3) Chương trình viết (C) là những đại lượng được đặt tên, dùng để lưư trử giá trị bằng ngôn ngữ lập trình và giá trị có thể được thay đổi trong quá trình thực hiện bậc cao. chương trình. (D) Dịch toàn bộ chương trình nguồn thành một chương (4) Biến. trình đích có thể thực hiện trên máy và có thể lưu trữ để sử dụng lại khi cần thiết. (E) Phải được chuyển đổi thành chương trình trên ngôn ngữ (5) Hằng. máy mới có thể thực hiện được. 4. Bài tập về nhà: Học bài và làm bài tập ở cuối bài học..

<span class='text_page_counter'>(9)</span> Ngày soạn: 05-09-2016 Tiết CT: 04 Chương II: CHƯƠNG TRÌNH ĐƠN GIẢN Bài 3: CẤU TRÚC CHƯƠNG TRÌNH I. MỤC TIÊU 1. Kiến thức: - Hiểu chương trình là sự mô tả của thuật toán bằng một ngôn ngữ lập trình. - Biết cấu trúc của một chương trình đơn giản: cấu trúc chung và các thành phần. 2. Kĩ năng: - Nhận biết được các thành phần của một chương trình đơn giản. - Xác định kiểu cần khai báo của dữ liệu đơn giản. 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ Câu hỏi: Nêu quy tắc đặt tên trong ngôn ngữ lập trình Pascal? Câu trả lời: Không được dài quá 127 kí tự (Turbo pascal) và không dài quá 255 kí tự (Free Pascal). Không được chứa khoảng trắng (dấu cách). Không được bắt đầu bằng chữ số. Không được chứa các kí tự đặc biệt. Không được trùng với tên dành riêng 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Cấu trúc của một chương trình bao gồm 1. Cấu trúc của một chương trình: mấy phần? Đó là những thành phần nào? [<phần khai báo>] HS: Gồm 2 phần: Phần khai báo và phấn thân <Phần thân chương trình> chương trình. GV: Phần nào bắt buộc phải có, phần nào có thể có hoặc không? HS: Phần khai báo có thể có hoặc không, phần thân chương trình bắt buộc phải có. GV: Tên chương trình không bắt buộc phải có, 2. Các thành phần của chương trình: nếu có thì phải bắt đầu bằng từ khoá Program, a) Phần khai báo: còn tên chương trình phải được đặt theo đúng - Khai báo tên chương trình: quy tắc của ngôn ngữ lập trình. Program <Tên chương trình>; VD: Program Vi_du1; Program Giai_phuong_trinh; GV: Mỗi ngôn ngữ lập trình có sẵn một số thư - Khai báo thư viện: Uses < DS Tên thư.

<span class='text_page_counter'>(10)</span> viện, mỗi thư viện cung cấp cho chúng ta một viên>; số chương trình thông dụng. Chúng ta phải VD: khai báo sử dụng thư viện trước khi sử dụng Pascal: Uses Crt, Graph; các chương trình trong thư viện đó. C++: #Iclude <Stdio.h>; #Inclde <Conio.h>; - Khai báo hằng: Const <Tên hằng> = <Giá trị>; VD: Const pi = 3.14; Max = 1000; Min = 10; GV: Cách khai báo biến sẽ được học kĩ hơn ở phần sau. - Khai báo biến: Var <DS tên biến>:<Kiểu dữ liệu>; GV: Theo cách biểu diễn trên thì phần thân chương có thể không có lệnh nào được hay b) Phần thân chương trình: không? BEGIN HS: Có. [<Dãy lệnh>] GV: Phần thân của chương trình có thể có rất END. nhiều lệnh phụ thuộc vào chương trình. 3. Ví dụ chương trình đơn giản: GV: Ở ví dụ 1 ta có thể bỏ bớt phần nào mà Ví dụ 1: Chương trình đưa ra màn hình cũng không ảnh hưởng đến NỘI DUNG của dòng chữ “Xin chào các bạn”. chương trình? Program Vi_du1; HS: Progran Vi_du1; Begin Clrscr; (* Xoa Man hinh *) Writeln(‘Chao cac ban!’); Readln; (*Tam dung CT de xem GV: Hãy chỉ rõ phần nào là phần khai báo, ket qua *) phần nào là phần thân của chương trình? End. Ví dụ 2: Chương trình đưa ra 2 dòng chữ “Xin chao cac ban!”, “Moi cac ban lam quen voi Pascal”. Program Vi_du2; Uses Crt; Begin Clrscr; Writeln(‘Chao cac ban!’); Writeln(‘Moi cac ban lam quen voi pascal’); Readln; End. 3. Củng cố: Cấu trúc của một chương trình, các thành phần của một chương trình. 4. Bài tập về nhà:.

<span class='text_page_counter'>(11)</span> Học bài cũ, xem trước bài học số 4 và chuẩn bị một số kiến thức về thuật toán sau: - Giải phương trình bậc nhất 1 ẩn: ax+b=0. - Giải phương trình bậc hai 1 ẩn: ax2+bx+c=0 (a0). Tìm USCLN(a,b); BSCLN(a,b)..

<span class='text_page_counter'>(12)</span> Ngày soạn: 10-09-2016 Tiết CT:05 Bài 4: MỘT SỐ KIỂU DỮ LIỆU CHUẨN Bài 5: CÁCH KHAI BÁO BIẾN I. MỤC TIÊU 1. Về kiến thức: - Biết một số kiểu dữ liệu chuẩn: nguyên, thực, kí tự, lôgic. - Xác định được kiểu khai báo của dữ liệu đơn giản. - Hiểu cách khai báo biến, biết khai báo biến đúng. 2. Về kỹ năng: - Khai báo biến đúng, nhận biết khai báo sai. - Xác định kiểu cần khai báo của dữ liệu đơn giản. 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Nêu cấu trúc chung của một chương trình? Phần khai báo báo gồm những khai báo nào? Câu trả lời: + Cấu trúc của một chương trình: [<phần khai báo>] <Phần thân chương trình> + Phần khai báo bao gồm: Khai báo tên chương trình, khai báo thư viện, khai báo hằng, khai báo biến. 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Một số kiểu dữ liệu chuẩn là I. Một số kiểu dữ liệu chuẩn: Kiểu số những kiểu nào? nguyên, số thực, kiểu kí tự, kiểu lôgic. HS: Dựa vào SGK trả lời câu hỏi. 1. Kiểu nguyên: SGK GV: Tập số nguyên là vô hạn và có thứ tự, đếm được nhưng trong máy tính kiểu nguyên là hữu hạn, có thứ tự. Kiểu số nguyên cho kết quả là số đúng, nhưng hạn chế về miền giá trị. 2. Kiểu số thực: SGK GV: Các kiểu số thực cho kết quả tính toán là gần đúng với sai số không đáng kể, nhưng miền giá trị được mỡ rộng hơn kiểu nguyên. Cũng như kiểu nguyên, kiểu số thực trong máy * Ghi chú: - Cần phải khai báo đúng kiểu là rời rạc và hữu hạn. dữ liệu chuẩn để tiết kiệm bộ nhớ của.

<span class='text_page_counter'>(13)</span> GV: Kiểu kí tự là các kí tự thuộc bộ mã ASCII. GV: Kiểu logic trong Pascal chỉ gồm 2 giá trị là False (sai) và True (đúng). Kiểu Logic cũng là kiểu dữ liệu đếm được với True có giá trị là 1 và False có giá trị là 0. GV: Nêu cú pháp khai báo biến? HS: Dựa vào SGK trả lời câu hỏi. GV: Hãy khai báo 1 biến KT thuộc kiểu kí tự, 1 biến Tuoi thuộc kiểu số nguyên Byte, một biến DTB thuộc kiểu số thực và một biến Dk thuộc kiểu logic.. máy tính và độ chính xác của dữ liệu. - Số thực thường thích hợp với những đại lượng lớn và có độ chính xác cao. 3. Kiểu kí tự : SGK 4. Kiểu logic: SGK 5. Khai báo biến: - Cú pháp: Var <DS biến>:<kiểu dữ liệu>; - VD: Var Kt: Char; Tuoi:Byte; DTB: Real; GT: Boolean;. * Một số chú ý khi khai báo biến: SGK. GV: Khi khai báo một biến ta cần quan tâm đến yếu tố nào: HS: Bộ nhớ lưu trữ và phạm vi giá trị. 3. Củng cố: Một số kiểu dữ liệu chuẩn, cách khai báo biến. 4. Bài tập về nhà: Xem trước bài học số 6..

<span class='text_page_counter'>(14)</span> KIỂM TRA 15 PHÚT (lần 1) Đề: Nêu cấu trúc chung của một chương trình? Phần khai báo có thể có những khai báo nào, viết cú pháp khai báo và cho ví du trong ngôn ngữ lập trình Pascal. Đáp án: - Cấu trúc của một chương trình: [<phần khai báo>] <Phần thân chương trình> - Phần khai báo gồm: Khai báo tên chương trình, khai báo thư viện, khai báo hằng, khai báo biến. + Khai báo tên chương trình: Program <Tên chương trình>; VD: Program Vi_du1; Program Giai_phuong_trinh; + Khai báo thư viện: Uses < DS Tên thư viên>; VD: Uses Crt, Graph; + Khai báo hằng: Const <Tên hằng> = <Giá trị>; VD: Const pi = 3.14; Max = 1000; Min = 10; + Khai báo biến: Var <DS tên biến>:<Kiểu dữ liệu>; VD: Var a,b:byte;.

<span class='text_page_counter'>(15)</span> Ngày soạn:15-09-2016 Tiết CT:06 Bài 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN I. MỤC TIÊU 1. Kiến thức: - Biết được các phép toán thông dụng trong ngôn ngữ lập trình. - Biết diễn đạt một biểu thức trong ngôn ngữ lập trình. - Biết được chức năng của lệnh gán. - Biết được cấu trúc của lệnh gán và một số hàm chuẩn thông dụng trong ngôn ngữ lập trình pascal. 2. Kĩ năng: - Sử dụng được các phép toán để xây dựng biểu thức. - Sử dụng được lệnh gán để viết chương trình. 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Kể tên các kiểu dữ liệu chuẩn đã học? Cho biết phạm vi, dung lượng lưu trữ một giá trị? Câu trả lời: Kiểu Bộ nhớ lưu trữ một giá trị - Kiểu nguyên: Byte 1 byte Integer 2 byte Word 2 byte Longint 4 byte - Kiểu thực:. Phạm vi giá trị Từ 0 đến 255 Từ -215 đến 215-1 Từ 0 đến 216-1 Từ -231 đến 231-1 0 hoặc có giá trị năm trong phạm vi từ 10-38 đến 1038. 0 hoặc có giá trị năm trong phạm vi từ 10-4932 đến 104932.. Real. 6 byte. Extended. 10 byte. - Kiểu kí tự: Char. 1 byte. 256 kí tự trong bộ mã Asccii. - Kiểu logic: Boolean. 1 byte. True hoặc False.

<span class='text_page_counter'>(16)</span> 2. Kết nối: Hoạt động của GV và HS. Nội dung. 1. Phép toán: GV: Cho biết các phép toán đối với số - Các phép toán số học với số nguyên: +, -, nguyên trong toán học và kí hiệu của *, div, mod. nó. HS: Xem SGK trả lời câu hỏi. - Các phép toán số học với số thực: +, - , *, GV: Cho biết các phép toán đối với số / thực trong toán học và kí hiệu của nó. HS: Xem SGK trả lời câu hỏi. GV: Cho biết các phép toán quan hệ và - Các phép toán quan hệ: <,<=,=,>,>=,< >. các phép toán logic? - Các phép toán Logic: not, and, or. HS: Xem SGK trả lời câu hỏi. 2. Biểu thức số học: GV: Cho biết quy tắc viết biểu thức số - Quy tắc viết biểu thức số học: học? + Chỉ dùng cặp ngoặc tròn để xác định HS: Xem SGK trả lời câu hỏi. trình tự thực hiện phép toán trong trường hợp cần thiết. + Viết lần lượt từ trái qua phải. + Không được bỏ qua dấu nhân (*) trong tích. GV: Cho biết trình tự thực hiện của - Trình tự thực hiện các phép toán: các phép toán trong biểu thức? + Thực hiện các phép toán trong ngoặc HS: Xem SGK trả lời câu hỏi. trước. + Trong dãy các phép toán không chứa GV: Cho biết các hàm chuẩn thường ngoặc thì thực hiện từ trái qua phải, theo dùng trong Pascal? thứ tự: *,/,div,mod,+,HS: Xem SGK trả lời câu hỏi. 3. Hàm số học: SGK GV: Nêu cú pháp của biểu thức quan hệ? HS: Xem SGK trả lời câu hỏi. 4. Biểu thức quan hệ: - Cú pháp: <biểu thức 1> <phép toán quan hệ> <biểu thức 2> Trong đó: Biểu thức 1, biểu thức 2 cùng là xâu hoặc cùng là biểu thức số học. - Ví dụ: ‘Tin hoc’ < ‘Tin hoc A’; x<5; i+1<=2*j; GV: Biểu thức logic đơn giản là gì? Nếu x có giá trị là 3 thì x<5 cho giá trị HS: Xem SGK trả lời câu hỏi. True. Nếu i có giá trị bằng 2 và j có giá trị GV: Biểu thức logic là gì? bằng 3 thì i+1<=2*j cho giá trị là False. HS: Xem SGK trả lời câu hỏi. 5. Biểu thức logic:.

<span class='text_page_counter'>(17)</span> GV: Cho biết cú pháp của câu lệnh gán. HS: Xem SGK trả lời câu hỏi.. - Biểu thức logic đơn giản là biến logic hoặc hằng logic. - Biểu thức logic là biểu thức logic đơn giản, các biểu thức quan hệ liên kết với nhau bởi phép toán logic. Ví dụ1: not(x<1)--> “x không nhỏ hơn 1”. Ví dụ 2: "5 x vaø x 11" thì trong Pascal viết: (5<=x) and (x<=11) 6. Phép toán gán: - Cú pháp: <tên biến>:=<biểu thức>; - Ví dụ: z:=z-1; i:=i+1;. 3. Củng cố: Các phép toán thông dụng, biểu thức số học, biểu thức quan hệ 4. Bài tập về nhà: Làm bài tập 6-trang 35, 7-trang 36 và xem trước bài 7..

<span class='text_page_counter'>(18)</span> Ngày soạn:20-9-2016 Tiết CT:07 Bài 7: CÁC THỦ TỤC VÀO RA ĐƠN GIẢN I. MỤC TIÊU 1. Kiến thức: - Biết ý nghĩa của thủ tục vào/ra chuẩn đối với lập trình. - Biết được cấu trúc chung của thủ tục vào ra trong ngôn ngữ lập trình Pascal. 2. Kĩ năng: - Viết đúng lệnh vào/ra dữ liệu. - Biết nhập đúng dữ liệu khi thực hiện chương trình. 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: - Nêu quy tắc viết biểu thức số học và trình tự thực hiện các phép toán? - Nêu các hàm số học thường dùng trong Pascal? Câu trả lời: - Quy tắc viết biểu thức số học: + Chỉ dùng cặp ngoặc tròn để xác định trình tự thực hiện phép toán trong trường hợp cần thiết. + Viết lần lượt từ trái qua phải. + Không được bỏ qua dấu nhân (*) trong tích. - Trình tự thực hiện các phép toán: + Thực hiện các phép toán trong ngoặc trước. + Trong dãy các phép toán không chứa ngoặc thì thực hiện từ trái qua phải, theo thứ tự: *, /, div, mod, +, -. - Các hàm số học thường dùng: Sqr(x), Sqrt(x), abs(x), ln(x), exp(x), Sin(x), Cos(x). 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Trong các bước để giải một bài toán I. Các thủ tục vào/ra chuẩn: trong tin học thì bước xác định bài toán có nghĩa là ta đi xác định cái gì? 1. Nhập dữ liệu vào từ bàn phím: HS: Xác định Input và Ouput của bài toán. - Cú pháp: GV: Cho biết cú pháp của thủ tục nhập dữ Read(<Danh sách các biến vào>); liệu trong ngôn ngữ lập trình Pascal. Hoặc Readln(<Danh sách các biến HS: Dựa vào sách giáo khoa trả lời câu hỏi. vào>); - Ý nghĩa: Nhận giá trị được gõ từ bàn GV: Viết 2 thủ tục nhập giá trị cho biến k và phím và gán cho danh sách các biến 3 biến a, b, c. (Mỗi biến cách nhau bởi phím cách HS: Lên bảng viết thủ tục. hoặc phím Enter).

<span class='text_page_counter'>(19)</span> GV: Cho biết cú pháp của thủ tục xuất dữ liệu trong ngôn ngữ lập trình Pascal. HS: Dựa vào sách giáo khoa trả lời câu hỏi.. - Ví dụ: readln(k); Readln(a,b,c);. 2. Đưa dữ liệu ra màn hình: GV: Thủ tục Write khác với Writeln chỗ - Cú pháp: nào? Write(<danh sách kết quả ra>); HS: trả lời câu hỏi. (1) Writeln(<danh sách kết quả ra>); (2) GV: Cho biết kết quả hiện ra màn hình của 2 Writeln; thủ tục sau: - Ý nghĩa: Thủ tục (1) đưa danh sách Writeln(k:6:2); kết quả ra màn hình và con trỏ nằm ngay Write(a:4,b:4,a+b:8); sau kết quả cuối cùng, thủ tục (2) sau khi Với k=35.6; a=245; b=65; đưa danh sách kết quả ra màn hình thì con trỏ xuống đầu dòng tiếp theo, còn GV: Hãy xác định dữ liệu vào và ra của bài thủ tục (3) không ghi gì hết đưa con trỏ toán? xuống một dòng. HS: Trả lời câu hỏi. - Ví dụ: GV: Viết chương trình minh hoa. Write(‘Nhap he so k=’); Readln(k); HS: Xem, nghe giảng và ghi chép. Writeln(‘Nhap he so a, b, c:’); Readln(a,b,c); * Chú ý: Trang 31-SGK 3. Ví dụ áp dụng: Viết chương trình nhập vào 2 số nguyên. Tính và in ra màn hình tổng của 2 số nguyên vừa nhập. Program Tinhtong; Uses Crt; Var a,b:byte; S:integer; BEGIN Clrscr; Writeln('Nhap vao 2 so nguyen duong:'); Write('Nhap vao so nguyen a:'); readln(a); Write('Nhap vao so nguyen b:'); readln(b); S:=a+b; Write('Tong cua 2 so la:',s:6); readln; END. 3. Củng cố: Các thủ tục vào ra chuẩn của Pascal, các bước để viết chương trình. 4. Bài tập về nhà: Làm bài tập 6-10 (trang 36 SGK)...

<span class='text_page_counter'>(20)</span> Ngày soạn: Tiết CT:08 Bài 8: SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH I. MỤC TIÊU 1. Kiến thức: - Biết các lệnh vào/ra đơn giản để nhập thông tin từ bàn phím và đưa thông tin ra màn hình. - Biết các bước: Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình. - Biết một số công cụ của môi trường Turbol Pascal. 2. Kĩ năng: - Viết được một số lệnh vào/ra đơn giản. - Bước đầu sử dụng được chương trình dịch để phát hiện lỗi. - Bước đầu chỉnh sửa được chương trình dựa vào thông báo lỗi của chương trình dịch và tính hợp lí của kết quả thu được. 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: - Ngôn ngữ lập trình Pascal có những phép toán nào? - Cú pháp câu lệnh gán trong ngôn ngữ lập trình Pascal được trình bày như thế nào? - Cho ví dụ về câu lệnh gán trong ngôn ngữ lập trình Pascal Câu trả lời: - Cú pháp và ý nghĩa thủ tục nhập dữ liệu: + Cú pháp: Read(<Danh sách các biến vào>); Hoặc Readln(<Danh sách các biến vào>); + Ý nghĩa: Nhận giá trị được gõ từ bàn phím và gán cho danh sách các biến. - Cú pháp và ý nghĩa thủ tục xuất dữ liệu: + Cú pháp: Write(<danh sách kết quả ra>); (1) Writeln(<danh sách kết quả ra>); (2) + Ý nghĩa: Thủ tục (1) đưa danh sách kết quả ra màn hình và con trỏ nằm ngay sau kết quả cuối cùng, còn thủ tục (2) sau khi đưa danh sách kết quả ra màn hình thì con trỏ xuống đầu dòng tiếp theo. 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Nêu các cách để khởi động Turbo I. Soạn thảo, dịch, thực hiện và hiệu Pascal. chỉnh chương trình:.

<span class='text_page_counter'>(21)</span> HS: Lăng nghe và ghi bài. GV: Soạn thảo chương trình là gì? HS: Gõ NỘI DUNG của chương trình. GV: Nêu các bước để lưu một chương trình? HS: Dựa vào SGK trả lời câu hỏi. GV: Nêu các thao tác biên dịch, đóng cửa sổ chương trình, thoát khỏi chương trình. HS: Dựa vào SGK trả lời câu hỏi.. - Khởi động chương trình: C1: Nháy đúp vào biểu tượng Turbo Pascal trên màn hình nền. C2: Vào C:\Program files\TP\BIN\TURBO.EXE - Soạn thảo chương trình: Gõ Nội dung của chương trình. - Lưu chương trình: Nhấn F2-->gõ tên tệp (ko được có dấu cách) --> Enter. - Biên dịch chương trình: Nhấn F9 để kiểm tra và sửa lỗi cú pháp (nếu có). - Chạy chương trình: Nhấn tổ hợp phím Ctrl+F9. GV: Thực hiện khởi động chường trình - Đóng cửa sổ chương trình: Nhấn tổ Turbo Pascal và soạn chương trình: Nhập hợp phím Alt+F3. vào 2 số nguyên. Tính và in ra màn hình - Thoát khỏi phần mềm: Alt + X. tổng của 2 số nguyên vừa nhập. Thực hiện các thao tác lưu chương trình, kiểm tra, sửa lỗi và thực hiện chương trình. HS: Theo dõi thực hiện của giáo viên. 3. Củng cố: Các thủ tục vào ra chuẩn của Pascal, các bước để viết chương trình. 4. Bài tập về nhà: Làm bài tập 6-10 (trang 36 SGK)...

<span class='text_page_counter'>(22)</span> Ngày soạn: Tiết CT:09 BÀI TẬP CHƯƠNG II (Tiết 1) I. MỤC TIÊU 1. Kiến thức - Biết phânbiệt các loại biểu thức trong NNLT - Làm quen các dịch vụ chủ yếu của Turbo Pascal trong việc soạn thảo, lưu, dịch, thực hiện chương trình. 2. Kĩ năng Viết được các biểu thức số học và logic với các phép toán thông dụng. - Bước dầu biết phân tích và hoàn thành chương trình đơn giản trên Pascal 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Kết hợp trong bài học 2. Kết nối: Hoạt động của thầy Hoạt động của trò Câu 1: Cho biết sự khác nhay giữa hằng - Hằng là đại lượng có giá trị không thay có đặt tên và biến. đổi trong quá trình thực hiện chương trình. - Biến là đại lượng có thể bị thay đổi trong quá trình thực hện chương trình. Câu 2: Tại sao phải khai báo biến? - Khai báo biến để cho chương trình dịch biết để lưu trữ và xử lí. Câu 3: (Trang 35-SGK) - Biến đó có thể được khai báo bằng các kiểu dữ liệu là: Integer, Word, Longint. Câu 4: (Trang 35-SGK) - Biến P có thể khai báo bằng kiểu dữ liệu nào? - Biến P có thể khai báo bởi kiểu số nguyên byte, integer, word, longint hay kiểu số thực real, extended. - Biến X có thể khai báo bằng kiểu dữ - Biến X có thể khai báo bởi kiểu số thực liệu nào? real hoặc extended. Đáp án đúng là: B, D - Vậy lựa chọn nào là lựa chọn đúng? Câu 5: (Trang 35-SGK) - Diện tích S nhỏ nhất là 10000 và lớn - Với A có giá trị nguyên nằm trong nhất là 40000. phạm vi từ 100 đến 200 thì diện tích S.

<span class='text_page_counter'>(23)</span> của hình vuông nhỏ nhất và lớn nhất là bao nhiêu? - S khai báo thuộc kiểu Word là đúng và - Với diện tích S nhỏ nhất là 10000 và tốn ít bộ nhớ nhất. Vậy phương án đúng lớn nhất là 40000 thì S có thể được khai là C. báo bằng kiểu dữ liệu nào trong các kiểu dữ liệu đã nêu là đúng và tốn ít bộ nhớ nhất? Câu 6: (Trang 35-SGK) Hãy viết biểu - Biểu thức trong Pascal: thức toán học dưới đây trong Pascal: (1+z)(x+y/x)/(a-1/(1+x*x*x)) y x z . (a  z ) 1 a - Biểu thức toán học tương ứng là: 1  x3 2a abc Câu 7: (Trang 36-SGK) Chuyển biểu a) b) b 2 thức Pascal thành biểu thức toán học b tương ứng: d) b c) a) a/b*2; b) a*b*c/2; a2  b ac c) 1/a*b/c; d) b/sqrt(a*a+b); GV: Cho biết Input và Output của bài toán? HS: Input: Độ dài 3 cạnh của tam giác. Output: Diện tích, Chu vi của tam giác. GV: Nêu công thức tính diện tích và chu vi tam giác. HS: p. S  p ( p  a )( p  b)( p  c). với. a b c c. C=2p. GV: Gọi một học sinh lên bảng viết chương trình. HS: Lên bảng viết chương trình.. Bài 8: Viết chương trình nhập vào độ dài 3 cạnh của tam giác. In ra màn hình diện tích, chu vi của nó. Program Dt_CV_TamGiac; Uses Crt; Var a,b,c,p,cv,dt:real; BEGIN Clrscr; Write('Nhap vao do dai 3 canh cua tam giac a,b,c:'); readln(a,b,c); P:=(a+b+c)/2; dt:=Sqrt(p*(p-a)*(p-b)*(p-c)); cv:=2*p; Writeln('Dien tic=',dt:6:2); Writeln('Chu vi=',cv:6:2); readln; END. 3. Củng cố: Hằng, biến, các kiểu dữ liệu chuẩn. 4. Bài tập về nhà: Xem lại các bài toán đã giải và xem trước ..

<span class='text_page_counter'>(24)</span> Ngày soạn: Tiết CT:10 BÀI TẬP CHƯƠNG II (Tiết 2) I. MỤC TIÊU 1. Kiến thức - Biết phânbiệt các loại biểu thức trong NNLT - Làm quen các dịch vụ chủ yếu của Turbo Pascal trong việc soạn thảo, lưu, dịch, thực hiện chương trình. 2. Kĩ năng Viết được các biểu thức số học và logic với các phép toán thông dụng. - Bước dầu biết phân tích và hoàn thành chương trình đơn giản trên Pascal 3. Thái độ: Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Kết hợp trong bài học 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Cho biết Input và Output của bài Bài 1: Nhập vào thời gian một công toán? việc nào đó là x giây. Hãy chuyển đổi HS: Input: Thời gian tính bàng giây. và viết ra màn hình số thời gian trên Output: Giời, phút, giây. dưới dạng bằng bao nhiêu giờ, bao GV: 1h=? giây. nhiêu phút, bao nhiêu giây. 1 phút =? giây. Program Bai4; Uses Crt; HS: 1h =3600 giây. Var x,h,m,s:Word; 1 phút =60 giây. BEGIN GV: Giả sử 8000 giây thì bằng bao nhiêu Clrscr; giờ. Công thức tính là gì? Write('Nhap vao so day:'); HS: Số giời =8000 div 3600 =2. readln(x); Số phút=(8000 mod 3600) div h:=x div 3600; 60=13. m:=(x mod 3600) div 60; Số giây =8000 mod 60=20. s:=x mod 60; GV: Gọi một học sinh lên bảng viết Write(h,' gio ',m,' phut ',s,' giay'); chương trình. readln; HS: Lên bảng viết chương trình. END. GV: Cho biết Input và Output của bài toán? HS: Input: Độ dài a. Output: Diện tích phần gạch chéo.. Bài 9(SGK trang 36) Hãy viết chương trình nhập số a (a>0) rồi tính và đưa ra diện tích phần được gạch chéo trong hình1 (Kết quả làm tròn đến 4.

<span class='text_page_counter'>(25)</span> GV: Diện tích phần gạch chéo bàng ½ chữ số thập phân). diện tích hình tròn. Hãy nêu công thức tính diện tích phần gạch chéo? S.  a 2. HS: GV: Trong bài toán có những hằng và biến nào? HS: Có hằng số  và biến a,s. GV: Gọi một học sinh lên bảng viết chương trình. HS: Lên bảng viết chương trình.. GV: Cho biết Input và Output của bài toán? HS: Input: Độ cao h. Output: Vận tốc v lúc chạm đất. GV: Trong bài toán có những hằng và biến nào? HS: Có hằng số g và biến h,v. GV: Gọi một học sinh lên bảng viết chương trình. HS: Lên bảng viết chương trình.. Program Bai9_SGK; Uses Crt; Const pi=3.14; Var a,dt:real; BEGIN Clrscr; Write('Nhap vao so a='); Readln(a); dt:=1/2*pi*sqr(a); Write('Dien tich phan gach cheo la:',dt:8:4); Readln; END. Bài 10(SGK trang 36) Lập trình tính và đưa ra màn hình vận tốc v khi chạm đất của một vật rơi tự do từ độ cao h, biết rằng v  2 gh , trong đó g là gia tốc rơi tự do và g=9,8 m/s2. Độ cao h(m) được nhập từ bàn phím. Program Bai10_SGK; Uses Crt; Const g=9.8; Var h,v:real; BEGIN Clrscr; Write('Hay cho biet do cao h='); readln(h); v:=Sqrt(2*g*h); Write('Van toc cua vat khi cham dat la=',v:6:2); Readln; END.. 3. Củng cố: Hằng, biến, các kiểu dữ liệu chuẩn. 4. Bài tập về nhà: Xem lại các bài toán đã giải và xem trước ..

<span class='text_page_counter'>(26)</span> Ngày soạn: Tiết CT:11 BÀI TẬP VÀ THỰC HÀNH 1 I. MỤC TIÊU 1. Kiến thức - Biết được một chương trình Pascal hoàn chỉnh. - Làm quen các dịch vụ chủ yếu của Turbo Pascal trong việc soạn thảo, lưu, dịch, thực hiện chương trình. 2. Kĩ năng - Soạn thảo được chương trình, lưu lên đĩa, dịch lỗi cú pháp, thực hiện và tìm lỗi thuật toán và hiệu chỉnh. - Bước dầu biết phân tích và hoàn thành chương trình đơn giản trên Pascal 3. Thái độ: Tự giác, tích cực và chủ động trong thực hành II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Cho biết chức năng của các phím và tổ hợp phím sau: F2, F3, Alt+F9, Ctrl+F9, Alt + X. Câu trả lời: - F2 : Lưu chương trình. - F3 : Mở chương trình. - Alt+F9 : Dịch chương trình. - Ctrl+F9 : Chạy chương trình. - Alt+X : Thoát khỏi phần mềm Turbo Pascal. 2. Kết nối: Hoạt động của thầy Hoạt động của trò - Hãy cho biết cú pháp khai báo tên - Cú pháp khai báo tên chương trình: chương trình, khai báo thư viện, khai Program <Tên chương trình>; báo hằng và khai báo biến? - Cú pháp khai báo thư viện: Uses <Tên thư viện>; - Khai báo hằng: Const <Tên hằng> = <Giá trị>; - Khai báo biến: Var <Danh sách biến> : <Kiểu dữ liệu>; - Yêu cầu học sinh gõ chương trình Giai_PTB2 trong SGK. - Quan sát và hướng dẫn việc soạn thảo chương trình của học sinh.. a) Gõ chương trình: Program Giai_PTB2; Uses Crt; Var a,b,c,d:real; x1,x2:real; BEGIN Clrscr; Write('Nhap a, b, c, d:');.

<span class='text_page_counter'>(27)</span> - GV yêu cầu học sinh lưu lại chương trình vừa soạn thảo với tên PTB2.PAS lên đĩa. - Yêu cầu học sinh dịch, kiểm tra và sửa lỗi của chương trình (nếu có). - GV yêu cầu học sinh chạy thử chương trình với các bộ đầu vào đã cho trong SGK và quan sát kết quả nhận được. - GV yêu cầu HS chạy lại chương trình với bộ đầu vào khác (1, 0, -2). - Sửa lại chương trình trên sao cho không dùng biến trung gian D. Thực hiện chương trình với các bộ dữ liệu như trên.. - Sửa lại chương trình nhận được ở câu c) bằng cách thay đổi công thức tính x2 (có 2 cách để tính x2). - Chạy chương trình với các bộ đầu vào đã cho trong mục h và I, quan sát kết quả nhận được.. readln(a,b,c,d); d:=b*b-4*a*c; x1:=(-b-sqrt(d))/(2*a); x2:=-b/a-x1; Write('X1=',x1:6:2,'X2:=',x2:6:2); Readln; End. b) Nhấn phím F2 và lưu chương trình với tên là PTB2.PAS lên đĩa. c) Nhấn phím Alt + F9 để dịch và sửa lỗi cú pháp (nếu có). d) Nhấn phím Ctrl + F9 để thực hiện chương trình. Nhập các giá trị 1; -3; 2. Quan sát kết quả trên màn hình (x1=1.00; x2=1.41). e) Nhấn tổ hợp phím Ctrl + F9 rồi nhập các giá trị 1; 0; -2. Quan sát kết quả hiện trên màn hình (x1=-1.41; x2=1.41). f) Thay đoạn chương trình d:=b*b-4*a*c; x1:=(-b-sqrt(d))/(2*a); bằng đoạn chương trình: x1:=(-b-sqrt(sqr(b)-4*a*c))/(2*a); Thực hiện lại chương trình với bộ dầu vào trên. g) Sửa lại công thức tính x2:= (-b+sqrt(sqr(b)-4*a*c))/(2*a); h) Thực hiện chương trình đã sửa với bộ dữ liệu1; -5; 6. Quan sát kết quả hiện trên màn hình (x1=2.00 x2=3.00). i) Thực hiện chương trình với bộ dữ liệu 1; 1; 1 và quan sát kết quả trên màn hình.. 3. Củng cố: Khởi động Tubo Pascal, soạn thảot, lưu trữ, dịch và thực hiện chương trình. 4. Bài tập về nhà: Thực hành lại các bài tập đã làm..

<span class='text_page_counter'>(28)</span> Ngày soạn: Tiết CT: 12 Tiết 12: KIỂM TRA 1 TIẾT HỌC KỲ I I. MỤC TIÊU: Đánh giá lại khả năng tiếp thu kiến thức của học snh. II. MA TRẬN ĐỀ III. ĐỀ RA IV. ĐÁP ÁN.

<span class='text_page_counter'>(29)</span> Ngày soạn: Tiết CT: 13 Bài 9: CẤU TRÚC RẼ NHÁNH I. MỤC TIÊU: - Hiểu nhu cầu của cấu trúc rẽ nhánh trong việc giải quyết các bài toán. - Hiểu cơ chế hoạt động của câu lệnh rẽ nhánh dạng thiếu và dạng đủ. - Hiểu câu lệnh ghép. - Sử dụng được cấu trúc rẽ nhánh để mô tả thuật toán của một số bài toán đơn giản. - Viết được các lệnh rẽ nhánh áp dụng trong một số trường hợp đơn giản. II. CÁC KỸ NĂNG ĐẠT ĐƯỢC: Kỹ năng tư duy sáng tạo, kỹ năng lắng nghe tích cực, kỹ năng tự nhận thức, kỹ năng kiềm chế cảm xúc, kỹ năng tìm kiếm sự hỗ trợ… III. PHƯƠNG PHÁP/ KỸ THUẬT: Sử dụng phương pháp thuyết trình có minh họa kết hợp vấn đáp. IV. PHƯƠNG TIỆN: - Giáo viên: Giáo án, sách giáo, máy chiếu, máy tính, phần mềm pascal… - Học sinh: Vở ghi, giấy nháp, sách giáo khoa… V. TIẾN TRÌNH TIẾT DẠY 1. Khám phá: - Ổn định lớp. - Bài cũ: 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Nêu ví dụ thực tiển có rất nhiều việc 1. Rẽ nhánh: chỉ được thực hiện khi một điều kiện nào - Dạng thiếu (khuyết): đó được thỏa mãn. Nếu...thì... VD: - Dạng đủ: - Nếu ngày mai trời nắng Nam sẽ Nếu...thì..., ngược lại thì.... đi đá bóng. - Nếu ngày mai trời nắng Nam sẽ đi đá bóng, ngược lại Nam ở nhà xem ti vi. GV: Yêu cầu học sinh tìm thêm một số ví 2. Câu lệnh if-then: dụ một việc nào đó trong thực tiển mà chỉ a) Dạng thiếu (khuyết): được thực hiện khi thỏa một điều kiện nào - Cú pháp: if <Điều kiện> then <Câu đó? lệnh>; HS: Đưa ra các ví dụ. GV: Nêu cú pháp của câu lệnh rẽ nhánh dạng khuyết? HS: Dựa vào SGK trả lời câu hỏi. GV: Vẽ sơ đồ khối mô tả hoạt động của câu lệnh if dạng thiếu? HS: Dựa vào SGK trả lời câu hỏi..

<span class='text_page_counter'>(30)</span> GV: Nêu ý nghĩa của câu lệnh rẽ nhánh dạng khuyết? HS: Dựa vào SGK trả lời câu hỏi. GV: Hãy viết đoạn lệnh sử dụng cấu trúc rẽ nhánh dạng khuyết tìm giá trị lớn nhất của 2 số a, b được nhập vào. HS: Viết đoạn chương trình tìm Max.. GV: Nêu cú pháp của câu lệnh rẽ nhánh dạng đủ? HS: Dựa vào SGK trả lời câu hỏi.. - Ý nghĩa: Nếu Điều kiện đúng thực hiện câu lệnh sau từ khóa then, nếu điều kiện sai thì bỏ qua câu lệnh. - Ví dụ: (vd1) Tìm Max (số lớn nhất) của a, b. Max:=a; If Max<b then Max:=b; (vd2) Kiểm tra số a có phải là số chẵn hay không? If a mod 2=0 then Write(‘a la so chan’); b) Dạng đủ: - Cú pháp: if <Điều kiện> then <Câu lệnh 1> Else <Câu lệnh 2>;. GV: Vẽ sơ đồ khối mô tả hoạt động của câu lệnh if dạng đủ? HS: Dựa vào SGK để vẽ sơ đồ khối.. GV: Nêu ý nghĩa của câu lệnh rẽ nhánh dạng đủ? HS: Dựa vào SGK trả lời câu hỏi.. - Ý nghĩa: Nếu điều kiện đúng thì thực hiện câu lệnh 1, ngược lại thì thực hiện câu lệnh 2. - Ví dụ: GV: Hãy viết đoạn lệnh sử dụng cấu trúc (1) Tìm Max, Min của a, b: rẽ nhánh dạng đủ tìm giá trị lớn nhất, nhỏ If a>b then Max:=a nhất của 2 số được nhập vào. Else Min:=b; HS: Viết đoạn chương trình tìm Max, (2) Kiểm tra a là chẵn hay lẻ: Min. If a mod 2=0 then write(‘a la so chan’) Else write(‘a la so le’); GV: Lệnh ghép là gì? Nêu cú pháp câu 3. Lệnh ghép: là câu lệnh gộp một dãy lệnh ghép. lệnh. HS: Dựa cào SGK trả lời câu hỏi. - Cú pháp: BEGIN <các câu lệnh>; GV: Hãy viết đoạn chương trình tìm Max, End; min của 2 số a, b nhập vào. - Ví dụ: (1) HS: Viết đoạn chương trình tìm Max, if a>b then BEGIN Max:=a; Min:=b; Min. End Else BEGIN Max:=b; Min:=a; End; (2) if Delta>0 then BEGIN X1:=(-b-sqrt(delta))/.

<span class='text_page_counter'>(31)</span> (2*a); X2:=(-b+sqrt(delta))/ (2*a); End; GV: Viết chương trình nhập vào 2 số a, b bất kỳ. In ra màn hình số lớn nhất (Max). Chương trình giải phương trình bậc nhất ax+b=0. HS: Lên bảng viết chương trình. GV: Kiểm tra và sửa lỗi (nếu có).. * Ghi chú: - Câu lệnh có thể là 1 lệnh hoặc một khối lệnh (lệnh ghép), lệnh ghép phải được đặt trong cặp từ khóa BEGIN...End; - Câu lệnh trước từ khóa Else không có dấu chấm phẩy. 4. Một số ví dụ: Ví dụ 1: Program Tim_max; Ví dụ 2: Program Giai_PTB1;. 3. Củng cố bài học: GV nhắc lại: -Cấu trúc rẽ nhánh if… then… dạng đầy đủ, dạng thiếu và ý nghĩa câ lệnh -Câu lệnh 4. Vận dụng: Viết chương trình giải và biện luận PTB2: ax2+bx+c=0 (a≠0). VI. RÚT KINH NGHIỆM ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ......................................................................................................................................................

<span class='text_page_counter'>(32)</span> Ngày soạn: Tiết CT: 14 Bài 10: CẤU TRÚC LẶP (Tiết 1) I. MỤC TIÊU: - Biết được ý nghĩa của cấu trúc lặp, cấu trúc chung của lệnh lặp For trong ngôn ngữ lập trình Pascal. - Biết sử dụng đúng hai dạng lệnh lặp For trong ngôn ngữ lập trình Pascal. - Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần định trước. - Bước đầu sử dụng được lệnh lặp For để lặp trình giải các bài toán đơn giản. II. CÁC KỸ NĂNG ĐẠT ĐƯỢC: Kỹ năng tư duy sáng tạo, kỹ năng lắng nghe tích cực, kỹ năng tự nhận thức, kỹ năng kiềm chế cảm xúc, kỹ năng tìm kiếm sự hỗ trợ… III. PHƯƠNG PHÁP/ KỸ THUẬT: Sử dụng phương pháp thuyết trình có minh họa kết hợp vấn đáp. IV. PHƯƠNG TIỆN: - Giáo viên: Giáo án, sách giáo, máy chiếu, máy tính, phần mềm pascal… - Học sinh: Vở ghi, giấy nháp, sách giáo khoa… V. TIẾN TRÌNH TIẾT DẠY 1. Khám phá: - Ổn định lớp. - Bài cũ: Câu hỏi: Nêu cú pháp và ý nghĩa của câu lệnh rẽ nhánh dạng thiếu và đủ. Trả lời: - Dạng thiếu: + Cú pháp: if <Điều kiện> then <Câu lệnh>; + Ý nghĩa: Nếu Điều kiện đúng thực hiện câu lệnh sau từ khóa then, nếu điều kiện sai thì bỏ qua câu lệnh. - Dạng đủ: + Cú pháp: if <Điều kiện> then <Câu lệnh 1> Else <Câu lệnh 2>; + Ý nghĩa: Nếu điều kiện đúng thì thực hiện câu lệnh 1, ngược lại thì thực hiện câu lệnh 2. 2. Kết nối: Hoạt động của GV và HS Nội dung GV: Trong thực tiễn cũng như trong khoa học, có nhiều bài toán đòi hỏi phải thực hiện lặp đi lặp lại một số thao tác nhất định. Tuy nhiên số lần lặp có thể biết trước hoặc không biết trước. GV: Xét bài toán 1 và bài toán 2 (SGK). 1. Lặp với số lần biết trước For-do: GV: Nêu cú pháp của lệnh lặp For a) Cú pháp: dạng tiến? - Cú pháp dạng tiến: HS: Dựa vào SGK trả lời câu hỏi. For <BĐ>:=<GT đầu> to <GT cuối> do <câu lệnh>; GV: Nêu cú pháp của lệnh lặp For - Cú pháp dạng lùi:.

<span class='text_page_counter'>(33)</span> dạng lùi? HS: Dựa vào SGK trả lời câu hỏi. GV: For, to, Downto, do là gì? HS: Là các từ khóa. GV: Biến đếm, giá trị đầu, giá trị cuối có thể nhận những loại dữ liệu nào? HS: Dựa vào SGK trả lời câu hỏi. GV: Cho biết ý nghĩa của câu lệnh lặp For-do? HS: Dựa vào SGk trả lời câu hỏi.. GV: Số lần lặp =0 khi nào? HS: Dựa vào SGK trả lời. GV: Số lần lặp được tính như thế nào? HS: Trả lời câu hỏi. GV: Yêu cầu học sinh viết chương trình in ra màn hình 10 dòng chữ ‘chao cac ban’ có sử dụng vòng lặp For-do. HS: Viết chương trình vào nháp.. GV: Viết chương trình in ra màn hình 2 hàng số nguyên: 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1 HS: Soạn chương trình vào nháp. GV: Kiểm tra học sinh viết chương trình và sửa lỗi chương trình cho hs (nếu có). GV: Yêu cầu học sinh Viết chương trình tính tổng các số chẵn từ 1 tới N. Với N nhập từ bàn phím. HS: Viết chương trình vào nháp.. For<BĐ>:=<GT cuối> Downto <GT đầu> do <câu lênh>; Trong đó: For, to, Downto, do là các từ khóa. Biến đếm, giá trị đầu, giá trị cuối phải cùng kiểu và thuộc kiểu dữ liệu đếm được (nguyên, char). b) Ý nghĩa: - Ở lặp tiến: Câu lệnh sau từ khóa DO sẽ được thực hiện tuần tự với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. - Ở lặp lùi: Câu lệnh sau từ khóa DO sẽ được thực hiện tuần tự với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. * Ghi chú: - SLL=0 Khi cận đầu > cận cuối. - SLL= Cận cuối - cận đầu +1 (For tiến). c) Các ví dụ: Ví dụ 1: Viết chương trình in ra màn hình 10 dòng chữ ‘chao cac ban’. Program Chao; Uses Crt; var i:byte; BEGIN Clrscr; For i:=1 to 10 do Writeln('Chao cac ban'); readln; END. Ví dụ 2:Viết chương trình in ra 2 hàng số nguyên: 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1 Ví dụ 3: Viết chương trình tính tổng các số chẵn từ 1 tới N. Với N nhập từ bàn phím. Program tinh_tong_chan; Uses Crt; Var i,n,s:integer; BEGIN Clrscr; Write('Nhap N='); readln(N); S:=0; For i:=1 to N do if i mod 2=0 then S:=S+i;.

<span class='text_page_counter'>(34)</span> Write('Tong cac so chan=',S); Readln; END. 3.Củng cố bài học: Cú pháp, ý nghĩa của cấu trúc lặp For-do. 4.Vận dụng: Bài 1, 2, 4 trang 51 Hướng dẫn: Bài 4: If (sqr(x) + sqr(y)<=1) then z:=sqr(x) + sqr(y) Else If (y>=x) then z:=x+y Else z:=0.5 VI. RÚT KINH NGHIỆM ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ......................................................................................................................................................

<span class='text_page_counter'>(35)</span> Ngày soạn: 21/11/2013. Tiết CT: 15 Bài 10: CẤU TRÚC LẶP (Tiết 2) I. MỤC TIÊU: - Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa xác định. - Biết được cấu trúc chung của lệnh lặp While trong ngôn ngữ Pascal. - Biết được sự thực hiện của máy khi gặp lệnh lặp While. - Phân biệt được sự giống và khác nhau giữa cấu trúc lặp For và While. - Sử dụng đúng lệnh lặp While trong lập trình. - Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết được một số bài toán đơn giản. II. CÁC KỸ NĂNG ĐẠT ĐƯỢC: Kỹ năng tư duy sáng tạo, kỹ năng lắng nghe tích cực, kỹ năng tự nhận thức, kỹ năng kiềm chế cảm xúc, kỹ năng tìm kiếm sự hỗ trợ… III. PHƯƠNG PHÁP/ KỸ THUẬT: Sử dụng phương pháp thuyết trình có minh họa kết hợp vấn đáp. IV. PHƯƠNG TIỆN: - Giáo viên: Giáo án, sách giáo, máy chiếu, máy tính, phần mềm pascal… - Học sinh: Vở ghi, giấy nháp, sách giáo khoa… V. TIẾN TRÌNH TIẾT DẠY 1. Khám phá: - Ổn định lớp. - Bài cũ: Câu hỏi: Nêu cú pháp và ý nghĩa của câu lệnh lặp For tiến. Trả lời: + Cú pháp: For <BĐ>:=<GT đầu> to <GT cuối> do <Câu lệnh>; + Ý nghĩa: B1: Tính giá trị cận đầu, cận cuối. B2: Gán GT cận đầu cho biến đếm. B3: Nếu GT biến đếm <=GT cuối thì thực hiện câu lệnh sau từ khóa Do Ngược lại thoát khỏi vòng lặp. B4: Tắng giá trị biến đếm và quay lại B3. 2. Kết nối: Hoạt động của GV và HS GV: Nêu cú pháp của cấu trúc lặp? HS: Dựa vào SGK nêu cú pháp cấu trúc lặp. GV: Nêu ý nghĩa của cấu trúc lặp? HS: Dựa vào SGK trả lời câu hỏi. GV: Hãy cho biết SLL=0 khi nào và trong trường hợp nào thi câu lệnh. Nội dung 2. Cấu trúc lặp với số lần chưa biết trước, câu lệnh lặp While-do (điều kiện trước): - Cú pháp: While <Điều kiện> do <Câu lệnh>; - Ý nghĩa: B1: Tính giá trị của biểu thức điều kiện. B2: Nếu điều kiện đúng thì thực hiện câu lệnh sau Do và quay lại bước 1. Ngược lại thoát khỏi While. - Nhận xét:.

<span class='text_page_counter'>(36)</span> While lặp vô hạn lần. + SLL=0 nếu ngay từ đầu biểu thức điều HS: Dựa vào sự hoạt động của câu lệnh kiện có giá trị False. While trả lời câu hỏi. + Nếu biểu thức điều kiện luôn có giá trị đúng thì While sẽ bị Loop (Lặp vô hạn lần). Do đó các câu lệnh trong While phải có sự tham gia tính toán làm thay đổi giá GV: Xác định InPut và Output của bài trị của biểu thức điều kiện. toán. - Các ví dụ: HS: Input: a VD1: Bài toán tính tổng: 1 1 1 1 Output: S S    ...   ... a a 1 a  2 aN GV: Xác định sử dụng vòng lặp nào? 1 Điều kiện dừng của vòng lặp là gì?  0, 0001 Công việc được thực hiện trong vòng cho đến khi a  N . lặp là gì? HS: - Sử dụng vòng lặp While-do. - Điều kiện để vòng lặp dừng là: 1  0, 0001 aN. - Công việc trong vòng lặp là: S S . 1 (i 1, 2,...) a i. VD2: Viết chương trình tìm UCLN của 2 GV: Xác định Input và Output của bài số nguyên a,b. toán. Program Tim_UCLN; HS: Input: 2 số nguyên a,b. Uses Crt; Output: UCLN của a,b. Var a,b:integer; BEGIN GV: Xác định điều kiện dừng của vòng Clrscr; lặp? Công việc thực hiện trong vòng Write('Nhap vao 2 so lặp là gì? nguyen:');readln(a,b); HS: - Điều kiện để vong lặp dừng là: While a<>b do a=b. if a>b then a:=a-b Else b:=b-a; - Công việc được thực hiện trong Write('UCLN=',b); vòng lặp: Readln; if a>b then a:=a-b Else b:=b-a; END. 3.Củng cố bài học: Có thể dùng câu lệnh While-do để thay thế cho câu lệnh For-do được không? Nếu được, hãy thực hiện điều đó với chương trinhg Tong_1a của SGK. 4.Vận dụng: Làm bài tập 5.b;7;8 – SGK trang 51 VI. RÚT KINH NGHIỆM ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ......................................................................................................................................................

<span class='text_page_counter'>(37)</span>

<span class='text_page_counter'>(38)</span> Ngày soạn: 22/11/2013. Tiết CT: 16 BÀI TẬP I. MỤC TIÊU: - Biết sử dụng đúng cấu trúc rẽ nhánh If-then - Biết sử dụng đúng lệnh lặp For . . . Do - Biết sử dụng đúng lệnh lặp While . . . Do II. CÁC KỸ NĂNG ĐẠT ĐƯỢC: Kỹ năng tư duy sáng tạo, kỹ năng lắng nghe tích cực, kỹ năng tự nhận thức, kỹ năng kiềm chế cảm xúc, kỹ năng tìm kiếm sự hỗ trợ… III. PHƯƠNG PHÁP/ KỸ THUẬT: Sử dụng phương pháp vấn đáp kết hợp hoạt động nhóm. IV. PHƯƠNG TIỆN: - Giáo viên: Giáo án, sách giáo, máy chiếu, máy tính, phần mềm pascal… - Học sinh: Vở ghi, giấy nháp, sách giáo khoa… V. TIẾN TRÌNH TIẾT DẠY 1. Khám phá: - Ổn định lớp. - Bài cũ: Câu hỏi: Nêu cú pháp và ý nghĩa của câu lệnh lặp For tiến. Trả lời: + Cú pháp: For <BĐ>:=<GT đầu> to <GT cuối> do <Câu lệnh>; + Ý nghĩa: B1: Tính giá trị cận đầu, cận cuối. B2: Gán GT cận đầu cho biến đếm. B3: Nếu GT biến đếm <=GT cuối thì thực hiện câu lệnh sau từ khóa Do Ngược lại thoát khỏi vòng lặp. B4: Tắng giá trị biến đếm và quay lại B3. 2. Kết nối: Hoạt động của Gv & Hs Gv. Dẫn dắt: Từ bài toán KTBC ở trên, nếu ta y/cầu tính và đưa ra màn hình tổng các số chẵn và tổng các số lẻ trong phạm vi từ a đến b. Ghi bảng (sửa lại nội dung đề bài toán) Y/cầu hs phân tích đề bài và trả lời câu hỏi. Hs. -Ghi đề bài toán -Lắng nghe, phân tích bài toán và trả lời:. NỘI DUNG Bài 1: Viết CT nhập vào 2 số nguyên dương a, b (a<b), tính và đưa ra màn hình tổng các số chẵn và tổng các số lẻ trong phạm vi từ a đến b.. Phân tích Tl: tính tổng các số chẵn và tổng các số lẻ riêng Tl: 2 giá trị (S1: tổng chẵn; S2: tổng Gv. - So sánh với bài toán trước thì có gì lẻ) khác? Tl: Kiểm tra biến đếm i : nếu i là - Ta cần đưa ra màn hình mấy giá trị? chẵn thì S1:=S1+i ngược lại (i là.

<span class='text_page_counter'>(39)</span> - Việc chính cần thực hiện trong câu lệnh lặp là gì? - Hãy mô tả việc trên bằng lệnh lặp For? Hs. Đứng tại chổ trả lời: For I:=a To b Do If I mod 2 =0 then S1:=S1+I else S2:=S2+I ; Gv. Cho hs thảo luận nhóm Hs. Học sinh thảo luận nhóm Báo cáo kết quả theo nhóm Gv. Nhận xét chỉnh sửa và cho chạy thử chương trình.(chương trình soạn trước). lẻ)thì S2:=S2+i. Chương trình Var a, b, i , S1, S2 : longint; Begin Write(‘Nhap a va b (a<b): ‘); Readln(a, b); S1 := 0; S2 := 0; For i := a To b Do If i mod 2 = 0 then S1 := S1 + i else S2 := S2 + i; Writeln(‘Tong chan: ’, S1, ’ Tong le: ’,S2); Readln End.. Gv. Nêu đề bài toán (Ghi bảng) - Cách tính tiền gửi tiết kiệm hàng tháng như thế nào? - Vậy, công thức tính tiền thu được sau mỗi tháng như thế nào? - câu lệnh lặp này lặp bao nhiêu lần? - Xác định giá trị đầu và giá trị cuối của câu lệnh For để thực hiện việc lặp trên? Hs. Đọc đề bài, phân tích và trả lời câu hỏi. Bài 2: Ông Ba có số tiền là S, ông gửi tiết kiệm ngân hàng với lãi suất 1.5%/tháng. Hỏi sau 12 tháng gửi (không rút tiền lãi hàng tháng), ông ta được số tiền là bao nhiêu?. -Thảo luận nhóm và tự viết chương trình Gv. Chuẩn hóa lại bài làm của hs bằng chương trình mẫu (treo chtrình đã chuẩn bị trên bảng phụ). - Chạy chương trình. - Thử nghiệm với 1 năm, 14 tháng,…. Hs. Quan sát chtrình của giáo viên và ghi nhớ.. Cài đặt chương trình Var s:real; i:byte; Begin Write(‘So tien ban dau: ’); Readln(S); For i:= 1 To 12 Do S:= S + 0.015*S; Writeln(‘So tien nhan duoc la: ’,S:8:3); Readln. Phân tích Tl: Với số tiền S, sau mỗi tháng sẽ có lãi là: 0.015*S. Số tiền này sẽ cộng vào số tiền ban đầu để tính lãi cho tháng tiếp theo. Tl: S := S + 0.015*S; Tl: 12 lần Tl: gtrị đầu là 1; gtrị cuối là 12.. End..

<span class='text_page_counter'>(40)</span> Gv. hướng dẫn học sinh tìm thuật toán - Hs nghe giảng Gv. phân nhóm cho hs thảo luận tính tổng sử dụng lệnh While_do Hs. thảo luận nhóm - Báo cáo kết quả - Chú ý theo dõi và nhận xét - Ghi chép.. Bài 2 : Tính tổng sau. S 1  2  3  4  ...  n. Phân tích b1: S0; i0; b2:Nếu i<n Chuyển đến b5 b3: ii+1; b4: SS+i; rồi quay lại bước 2 b5: Đưa S ra màn hình Cài đặt chương trình Program vd; Var I,n, S:integer; Begin Writeln(‘Nhập vào gtrị n = ’); Gv. treo kết quả hs lên hoặc gọi hs lên trình S:=0; bày i:=0; While i<=n do * Chuẩn hóa lại bài làm của hs bằng chương Begin trình mẫu (treo chtrình đã chuẩn bị trên bảng S:=S+1; phụ). i:=i+1; End; Writeln(‘Tổng của ’,n,’ số là ‘,S); Readln; End. 3.Củng cố bài học: - Cấu trúc chung của Câu lệnh lặp While . . . Do, Câu lệnh lặp For . . . do - Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk. 4.Vận dụng: VI. RÚT KINH NGHIỆM ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ......................................................................................................................................................

<span class='text_page_counter'>(41)</span> Ngày soạn: 25/11/2013. Tiết CT: 17 BÀI TẬP I. MỤC TIÊU: - Biết sử dụng đúng cấu trúc rẽ nhánh If-then - Biết sử dụng đúng lệnh lặp For . . . Do - Biết sử dụng đúng lệnh lặp While . . . Do - Bước đầu sử dụng được cấu trúc rẽ nhánh, lệnh lặp For . . . do , và While . . . Do để lập trình giải quyết 1 số bài toán đơn giản. - Phân biệt được sự giống và khác nhau giữa cấu trúc lặp For và While. - Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết một số bài toán đơn giản II. CÁC KỸ NĂNG ĐẠT ĐƯỢC: Kỹ năng tư duy sáng tạo, kỹ năng lắng nghe tích cực, kỹ năng tự nhận thức, kỹ năng kiềm chế cảm xúc, kỹ năng tìm kiếm sự hỗ trợ… III. PHƯƠNG PHÁP/ KỸ THUẬT: Sử dụng phương pháp vấn đáp kết hợp hoạt động nhóm. IV. PHƯƠNG TIỆN: - Giáo viên: Giáo án, sách giáo, máy chiếu, máy tính, phần mềm pascal… - Học sinh: Vở ghi, giấy nháp, sách giáo khoa… V. TIẾN TRÌNH TIẾT DẠY 1. Khám phá: - Ổn định lớp. - Bài cũ: 2. Kết nối: Hoạt động của Gv & Hs GV:Yêu cầu học sinh thảo luận nhóm để làm bài tập Hs. Học sinh thảo luận nhóm Báo cáo kết quả theo nhóm Gv. Nhận xét chỉnh sửa. Nội dung 1/ Bài tập 4: Viết câu lệnh rẽ nhánh tính: a) x2 + y2 nếu x2 + y2 ≤ 1 Z= x+y nếu x2 + y2 > 1 và y ≥ x 0.5 nếu x2 + y2 > 1 và y < x IF x*x + y*y <= 1 Then Z:= x*x + y*y Else If y >= x Then Z:= x + y Else Z:= 0.5; b) |x| + |y| nếu điểm (x,y)  hình Z= tròn bán kính r >0, tâm (a,b). x+y trong trường hợp còn lại.

<span class='text_page_counter'>(42)</span> IF (x-a)*(x-a) + (y-b)*(y-b) <= r * r Then Z:= ABS(x) + ABS(y) Else Z:= x +y; 2/ Bài tập 5a): Uses Crt; GV: Yêu cầu học sinh phân tích bài Var y: Real; toán N: Byte; Giá trị đầu, giá trị cuối, giá trị khởi Begin tạo, biến đếm của bài toán? Clrscr; HS: Suy nghĩ trả lời và viết chương Y:=0; trình For n:= 1 To 50 Do Y:= y+n/(n+1); Writeln(‘Tong = ’,y:10:4); Readln End. GV:Yêu cầu học sinh trả lời các câu 3/ Bài tập 5b): hỏi: Uses Crt; Cách tính giai thừa Var n: Longint; Điều kiện dừng của bài toán T, sh: Real; Giá trị khởi tạo được gán như thế Begin Clrscr; nào(Biến chạy N, biến tính giai thừa Sh:= 1/2; và biến tính tổng)? N:= 2; HS:Hoạt động theo nhóm để trả lời T:= 2+sh; câu hỏi của GV và đưa ra cách giải While sh >= 2* 1E-6 Do cho bài toán Begin Gv. Chuẩn hóa lại bài làm của hs N:=n+1; bằng chương trình mẫu (treo chtrình Sh:= sh *(1/n); đã chuẩn bị trên bảng phụ). T:= T + sh; End; Writeln(‘Tong = ’,T:10:4); Readln End. Gv. Nêu đề bài toán (Ghi bảng) Program Bài 8: - Cách tính tiền gửi tiết kiệm hàng user crt; tháng như thế nào? const laisuat=0.002; - Vậy, công thức tính tiền thu được var tiengui, tienrutve,luu:real; sau mỗi tháng như thế nào? thang:integer; - câu lệnh lặp này lặp bao nhiêu lần? begin.

<span class='text_page_counter'>(43)</span> - Xác định giá trị đầu và giá trị cuối của câu lệnh For để thực hiện việc lặp trên? Hs. Đọc đề bài, phân tích và trả lời câu hỏi. clrscr; write(‘nhap vao tien gui’); readln(tiengui); luu:=tiengui; write(‘nhap vao tienrutve’); readln(tienrutve); thang:=0; while tiengui<tienrutve do begin -Thảo luận nhóm và tự viết chương tiengui:=tiengui+luu*laisuat; trình thang:=thang+1; Gv. Chuẩn hóa lại bài làm của hs end; bằng chương trình mẫu (treo chtrình write(‘gui tien sau ‘,thang,’thang’); đã chuẩn bị trên bảng phụ). writeln(‘nhan duoc so tien - Chạy chương trình. la’,tienrutve:16:4,’dong’); - Thử nghiệm với 1 năm, 14 tháng,…. Hs. Quan sát chtrình của giáo viên và ghi nhớ. 3.Củng cố bài học: - Cấu trúc chung của Câu lệnh lặp While . . . Do, Câu lệnh lặp For . . . do 4.Vận dụng: Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk. VI. RÚT KINH NGHIỆM ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ......................................................................................................................................................

<span class='text_page_counter'>(44)</span> Ngày soạn: 29/11/2013. Tiết CT: 18 ÔN TẬP HỌC KỲ I I. MỤC TIÊU: -Củng cố lại kiến thức đã học ở các chương:Một số khái niệm lập trình và ngôn ngữ lập trình, Các chương trình đơn giản và cấu trúc rẽ nhánh và lặp - Sử dụng các kiến thức đã học trong chương 1 và 2 để làm các bài toán và trả lời câu hỏi - Biết sử dụng cấu trúc lặp For và While trong từng trường hợp bài toán cụ thể - Biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết một số bài toán đơn giản. II. CÁC KỸ NĂNG ĐẠT ĐƯỢC: Kỹ năng tư duy sáng tạo, kỹ năng lắng nghe tích cực, kỹ năng tự nhận thức, kỹ năng kiềm chế cảm xúc, kỹ năng tìm kiếm sự hỗ trợ… III. PHƯƠNG PHÁP/ KỸ THUẬT: Sử dụng phương pháp vấn đáp kết hợp hoạt động nhóm. IV. PHƯƠNG TIỆN: - Giáo viên: Giáo án, sách giáo, máy chiếu, máy tính, phần mềm pascal… - Học sinh: Vở ghi, giấy nháp, sách giáo khoa… V. TIẾN TRÌNH TIẾT DẠY 1. Khám phá: - Ổn định lớp. - Bài cũ: 2. Kết nối: NỘI DUNG CẦN ĐẠT HĐ CỦA GV VÀ HS Hỏi bài cũ GV: Nêu câu hỏi Câu hỏi: Nêu cấu trúc câu lệnh while-do HS: Lên bảng trả lời câu hỏi và nguyên tắc hoạt động của câu lệnh GV: Nhận xét đánh giá và cho điểm GV: Hệ thống lại kiến thức đã học Nội dung: - Cấu trúc CT + Cấu trúc chung -HS: Nghe giảng và ghi bài +Các thành phần của CT: Khai báo tên CT, thư viện, biến, hằng - Một số kiểu dữ liệu: kiểu nguyên, thực, kí tự, logic - Khai báo biến Var <Ds biến>: <Kiễu Dl>; - Các phép toán, biểu thức, câu lệnh gán - Các thủ tục chuẩn vào/ra đơn giản - Cấu trúc rẽ nhánh + Dạng lặp tiến:.

<span class='text_page_counter'>(45)</span> 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>; - Cấu trúc lặp +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>; + Cấu trúc: While <Điều kiện> do <Câu lệnh>;. GV: Đưa ra một số bài tập để cũng cố kiến thức lại cho HS Bài toán: LT để giải bài toán cổ sau Vừa gà, vừa chó Bó lại cho tròn Ba mươi sáu con Một trăm chân chẵn Hỏi có bao nhiêu con mối loại? GV: Hướng dẫn: S g+Sch=36 2*Sg+3*Sch=100  Sch tối đa 25 con(100/4) Nên chúng ta sử dụng vòng for: For Sch:=1 to 25 do …. ứng với mỗi giá trị Sch ta tính được Sg nếu thoả mản điều kiện 2*Sg+3*Sch=100 thì hiển thị Sg, Sch HS: Lên bảng thực hiện. Program Bai_toán_co; Var Sg, Sch; Integer; Begin For Sch:=1 to 25 do Begin Sg:=36-Sch; ? Nếu sử dụng while-do thực hiện như thế If (2*Sg+4*Sch=100) then Write(‘So ga:’,Sg:5,’So cho:’,Sch:5); nào HS: Sg:=36; Sch:=0; End; While (2*Sg+4*Sch=100) do Readln; Begin end. Sg:=Sg-1; Sch:=Sch=1; End; Bài toán 2: Lập Ct giải bài toán cổ Trăm trâu, trăm cỏ Trâu đứng ăn năm Program Nguyen-to; Trâu nằm ăn ba Var dem, td, tg, tn:inter; Lọm khọm trâu già Begin Ba con một bó Begin Hỏi có bao nhiêu trâu mổi loại Dem:=0; For td:=1 to 20 do ? Số trâu đứng tối đa For tn:=1 to 33 do ? Số trâu nằm tối đa Begin HS: Số trâu đứng tối đa: [100/5]=20 Tg:=100-td-tn; Số trâu nằm tối đa: [100/3]=33 If (5*td+3*tn+tg/3=100 then GV: Gợi ý sử dụng 2 vòng for lồng nhau Begin HS: Thực hiện.

<span class='text_page_counter'>(46)</span> Dem:=dem+1; Write(‘Nghiem thư’, dem); Write(‘Trau dúng’, 5,…) End; Readln; End. 3.Củng cố bài học: 4.Vận dụng: Lập trình nhập vào một số nguyên dương N xem N có phải là số nguyên tố hay không? Hướng dẫn: Program Nguyen-to; Var N,i:Integer; Ktra:Boolean; Begin Write(‘Nhap N=’); readln(N); Ktra:=true; If (N=1) then write(N,’ khong phai là so nguyen’); If (N<4) then write(N,‘La so nguyen to’) Else Begin For i:=2 to (N div 2) do If (N mod i=0) then ktra:=false; If ktra=true then write(N,’Là so nguyen to’) Else write(N, ‘Khong phai là so nguyen to’); End; Readln; End. VI. RÚT KINH NGHIỆM ..................................................................................................................................................... ..................................................................................................................................................... ..................................................................................................................................................... ......................................................................................................................................................

<span class='text_page_counter'>(47)</span> Ngày soạn: 5/12/2013. Tiết CT: 19 Tiết 19: KIỂM TRA HỌC KỲ I I. MỤC TIÊU: Đánh giá lại khả năng tiếp thu kiến thức của học snh. II. MA TRẬN ĐỀ III. ĐỀ RA IV. ĐÁP ÁN.

<span class='text_page_counter'>(48)</span> Ngày soạn : 27-12-2014 Tiết PPCT : 20 BÀI TẬP VÀ THỰC HÀNH 2(Tiết 1) I. MỤC TIÊU 1. Kiến thức - Củng cố lại cho học sinh những kiến thức liên quan đến tổ chức rẽ nhánh và lặp: cấu trúc lặp, sơ đồ thực hiện, sự thực hiện của máy khi gặp lệnh lặp. 2. Kĩ năng - Rèn luyện kĩ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp phù hợp để giải quyết bài toán đặt ra. 3. Thái độ - Tự giác, tích cực, chủ động trong giải quyết các bài tập. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu, phòng máy, phần mềm pascal... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: kết hợp trong bài dạy 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS Nội dung GV: Chương trình ở câu a) thực hiện công a) Gõ chương trình: việc gì? Program Pi_ta_go; HS: Kiểm tra bộ 3 số nhập vào từ bàn Uses Crt; phím có phải là bộ số Pi-ta-go. Var a,b,c:integer; a2,b2,c2:Longint; GV: Kiểm tra HS gõ chương tình và thực BEGIN hiện chương trình. Clrscr; HS: Soạn thảo chương trình trong sách Write('a, b, c: '); giáo khoa. Readln(a,b,c); a2:=a; b2:=b; c2:=c; a2:=a2*a; b2:=b2*b; c2:=c2*c; if (a2=b2+c2) or (b2=a2+c2) or (c2=a2+b2) then Writeln('Ba so da nhap la bo so Pita-go') Else Writeln('Ba so da nhap k0 la bo so Pi-ta-go'); Readln; HS: Nhấn phím F2 và lưu chương trình END. với tên PITAGO. b) Lưu chương trình với tên PITAGO lên HS: Nhấn phím F7 để thực hiện từng đĩa..

<span class='text_page_counter'>(49)</span> bước của chương trình. HS: Thực hiện theo hướng dẫn của SGK. GV: Quan sát và hướng dẫn học sinh thực hành.. GV: Cho biết kết quả chương trình khi thay dãy lệnh a2:=a; b2:=b; c2:=c; a2:=a2*a; b2:=b2*b; c2:=c2*c; bằng dãy lệnh: a2:=a*a; b2:=b*b; c2:=c*c; HS: Trả lời câu hỏi.. c) Nhấn phím F7 để thực hiện từng câu lệnh chương trình, nhập các giá trị a=3, b=4, c=5. d) Vào bảng chọn Debug mở cửa sổ hiệu chỉnh để xem giá trị a2, b2, c2. e) Nhấn phím F7 để thực hiện các câu lệnh tính những giá trị nói trên, so sánh với kết quả a2=9, b2=16, c2=25. f) Quan sát quá trình rẽ nhánh. g) Lặp lại quá trình trên với bộ dữ liệu a=700, b=1000, c=800. h) Nếu thay dãy lệnh: a2:=a; b2:=b; c2:=c; a2:=a2*a; b2:=b2*b; c2:=c2*c; bằng dãy lệnh: a2:=a*a; b2:=b*b; c2:=c*c; thi kết quả có gì thay đổi với bộ dữ liệu cho ở câu g). 3. Củng cố Các bước để hoàn thành một chương trình + Xác định Input, output. + Soạn chương trình vào máy tính. + Lưu chương trình. + Biên dịch. + Thực hiện và hiệu chỉnh chương trình. 4. Bài tập về nhà: Yêu cầu học sinh chuẩn bị cho tiết bài tập và thực hành 2: Bài tập 1: Viết chương trình tính tổng các số nguyên từ 100 đến 500 Bài tập 2: Nhập từ bàn phím 2 số nguyên dương M và N (M < N). Tính và đưa ra màn hình tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ M đến N..

<span class='text_page_counter'>(50)</span> Ngày soạn : 28-12-2014 Tiết PPCT : 21 BÀI TẬP VÀ THỰC HÀNH 2(Tiết 2) I. MỤC TIÊU 1. Kiến thức - Củng cố lại cho học sinh những kiến thức liên quan đến tổ chức rẽ nhánh và lặp: cấu trúc lặp, sơ đồ thực hiện, sự thực hiện của máy khi gặp lệnh lặp. 2. Kĩ năng - Rèn luyện kĩ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp phù hợp để giải quyết bài toán đặt ra. 3. Thái độ - Tự giác, tích cực, chủ động trong giải quyết các bài tập. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: kết hợp trong bài dạy 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS Nội dung GV: Hãy cho biết dữ liệu vào và ra của Bài 1: Bài 7 trang 51-SGK bài toán? Program Cha_con; HS: - Input: Tuổi cha, tuổi con. Uses Crt; - Output: Số năm để tuổi cha = 2* Var tcn,tch,sn:byte; tuổi con. BEGIN Clrscr; Writeln('Nhap tuoi cha va con, voi tuoi GV: Câu lệnh lặp sử dụng trong bài toán cha lon hon 2 lan tuoi con, tuoi cha lon này là gì? hon con 25 tuoi:'); HS: Câu lệnh While. Write('Nhap tuoi cha:'); readln(tch); Write('Nhap tuoi con:'); readln(tcn); sn:=0; While tch<>2*tcn do GV: Điều kiện của vòng lặp là gì? BEGIN HS: Tuổi cha chưa gấp 2 tuổi con. tch:=tch+1; tcn:=tcn+1; GV: Câu lệnh lặp sau Do là gì? sn:=sn+1; HS: Tăng tuổi cha, tăng tuổi con, tăng số End; năm lên 1. Write('Sau ',sn,' nua tuoi cha bang 2 lan tuoi con'); Readln; END. Bài 2: Bài8 trang 51-SGK Program Guitietkiem; Uses Crt; Var a,b:real; st:longint;.

<span class='text_page_counter'>(51)</span> BEGIN GV: Cho biết dữ liệu và ra của bài toán. Clrscr; HS: - Input: Số tiền gửi vào a. Write('Nhap so tien gui a='); readln(a); - Output: Số tiền cần có b. Write('So tien can dat duoc b='); GV: Số tiền gửi ban đầu là a thì số tiền readln(b); nhận được của các tháng kế tiếp là bao St:=0; T:=a; nhiêu? While a<b do HS: Tháng 1: T1:=a+0.003*a BEGIN Tháng 2: T2:=T1+0.003*a; T:=T+a*0.003; Tháng 3: T3:=T2+0.003*a; st:=st+1; ... End; GV: Để giải bài toán này chúng ta sử Write('Ban can gui trong ', st,' thang'); dụng cấu trúc lặp nào? Readln; HS: Sử dụng cấu trúc lặp While. END. GV: Điều kiện lặp là gì? HS: Số tiền gửi a còn nhỏ hơn số tiền nhận b. 3. Củng cố: - Câu lệnh rẽ nhánh + Dạng thiếu: If <điều kiện> then <câu lệnh>; + Dạng đủ: If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>; - Lặp với số lần xác định + Dạng lặp tiến: For <biến đếm>:=<Giá trị đầu> To <Giá trị cuối> do <câu lệnh>; + Dạng lặp li: For <biến đếm>:=<Giá trị cuối> downto <Giá trị đầu> do <câu lệnh>; - Lặp với số lần chưa xác định: While <điều kiện> do <câu lệnh>; 4. Bài tập về nhà:.

<span class='text_page_counter'>(52)</span>

<span class='text_page_counter'>(53)</span> Ngày soạn : 29-12-2017 Tiết PPCT : 22 KIỂU MẢNG(Tiết 1) I. MỤC TIÊU 1. Kiến thức - Hiểu được khái niệm mảng 1 chiều. - Biết cách khai báo biến và truy cập đến các phần tử mảng một chiều. 2. Kỹ năng - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình pascal để giải quyết một số bài toán cụ thể. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Hãy kể tên các kiểu dữ liệu chuẩn * Kiểu dữ liệu chuẩn là các kiểu dữ liệu đã học? được ngôn ngữ lập trình cung cấp sẵn. HS: Trả lời câu hỏi. VD: Số nguyên, số thực, ký tự, Logic. GV: Kiểu dữ liệu có cấu trúc là gì? HS: Dựa vào SGK trả lời câu hỏi. * Kiểu dữ liệu có cấu trúc là kiểu dữ liệu do GV: Kiểu mảng gồm có mấy kiểu? người lập trình xây dựng dựa trên các kiểu HS: Gồm 2 kiểu: Mảng một chiều và dữ liệu đã có. kiểu mảng 2 chiều. VD: Kiểu mảng (mảng 1 chiều, mảng 2 GV: Cho mảng một chiều A gồm 10 chiều), kiểu xâu ký tự, kiểu bản ghi. phần tử là số nguyên. A=4, 6, 8, 3, 4, 6, 9, 2, 3, 7 1. Kiểu mảng một chiều: Mảng 1 chiều là một dãy hữu hạn các GV: Nêu khái niệm mảng một chiều? phần tử có cùng kiểu dữ liệu, số phần tử của HS: Dựa vào SGK trả lời câu hỏi. mảng được xác định khi khai báo. a)Khai báo: Gồm 2 cách GV: Khai báo mảng một chiều có mấy - Cách 1: Khai báo trực tiếp mảng một cách khai báo? Nêu cú pháp khai báo chiều: mỗi cách? Var <Tên biến mảng>:array[kiểu chỉ số] of HS: Dựa vào SGK trả lời câu hỏi. <kiểu PT>; - Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type <tên kiểu mảng>= array[kiểu chỉ số] of <Kiểu PT>; Var <Tên biến mảng>:<tên kiểu mảng>; Trong đó: + Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 (n1n2)..

<span class='text_page_counter'>(54)</span> + Kiểu phần tử là kiểu của các phần tử mảng GV: Cho ví dụ. (kiểu dữ liệu chuẩn). HS: Lên bảng khai báo (bằng cả 2 Ví dụ 1: Khai báo mảng có tên k gồm 10 số cách). nguyên (byte). Cách 1: Khai báo trực tiếp: Var k:array[1..10] of byte; Cách 2: Khai báo gián tiếp: Type songuyen=array[1..10] of byte; Var k:songuyen; Ví dụ 2: Khai báo một mảng a gồm 20 phần tử có kiểu kí tự. Cách 1: Khai báo trực tiếp: Var a:array[1..20] of char; Cách 2: Khai báo giàn tiếp: Type kitu=array[1..20] of char; Var k:kitu; b) Tham chiếu đến phần tử của mảng: - Cú pháp: Tênbiếnmảng[chỉ số]; GV: Cho biết cú pháp để tham chiếu - Ví dụ: k[5] phần tử có chỉ số 5 trong đến phần tử của mảng. mảng. HS: Dựa vào SGK trả lời câu hỏi. a[12] phần tử có chỉ số 12 trong mảng. * Ghi chú: Không được nhập/xuất trực tiếp đối với biến kiểu mảng. Mà phải nhấp/xuất từng phần tử trong mảng. Ví dụ: Readln(A); --> sai GV: Để nhập/xuất dữ liệu cho các phần Writeln(A);--> sai tử mảng ta phải nhập/xuất từng phần tử. c) Cách nhập/xuất các phần tử của mảng: - Cú pháp: For i:= n1 to n2 do BEGIN GV: Cho ví dụ, yêu cầu học sinh dựa Nhập/xuất từng phần tử của mảng; vào cú pháp nhập/xuất để viết đoạn End; chương trình thực hiện việc nhập/xuất - Ví dụ: các giá trị cho mảng. + Nhập dữ liệu cho dãy số nguyên A: HS: Lên bảng viết đoạn chương trình. For i:=1 to 10 do BEGIN Write(‘Nhap phan tu thu’,i,’:’); Readln(a[i]); End; + Xuất dữ liệu cho dãy số nguyên A: For i:=1 to 10 do Write(a[i], ‘ ’); 3. Củng cố: Viết chương trình nhập vào 10 số nguyên. Tính và in ra màn hình TBC của các số đó 4. Bài tập về nhà: Học lí thuyết và xem trước các ví dụ ở phần b)-SGK..

<span class='text_page_counter'>(55)</span> Ngày soạn : 2-01-2017 Tiết PPCT : 23 KIỂU MẢNG(Tiết 2) I. MỤC TIÊU 1. Kiến thức - Học sinh sử dụng được biến kiểu mảng một chiều để giải quyết một số bài toán đơn giản. - Thực hiện được khai báo, truy cập, tính toán các phần tử của mảng 1 chiều. 2. Kỹ năng - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình pascal để giải quyết một số bài toán cụ thể. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ Câu hỏi: Khái niệm kiểu dữ liệu có cấu trúc? Khái niệm kiểu mảng một chiều? Nêu cú pháp khai báo biến kiểu mảng một chiều (bằng cả 2 cách)? Trả lời: - Kiểu dữ liệu có cấu trúc là kiểu dữ liệu do người lập trình xây dựng dựa trên các kiểu dữ liệu đã có. - Mảng 1 chiều là một dãy hữu hạn các phần tử có cùng kiểu dữ liệu, số phần tử của mảng được xác định khi khai báo. - Cú pháp khai báo biến mảng một chiều: + Cách 1: Khai báo trực tiếp mảng một chiều: Var <Tên biến mảng>:array[kiểu chỉ số] of <kiểu PT>; + Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type <tên kiểu mảng>= array[kiểu chỉ số] of <Kiểu PT>; Var <Tên biến mảng>:<tên kiểu mảng>; 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Ghi đề bài ví dụ 1 lên bảng. Yêu d) Một số ví dụ: cầu học sinh cho biết dữ liệu vào và dữ Ví dụ 1: Tìm phần tử lớn nhất của dãy số liệu ra? nguyên A1,A2,...,AN và cho biết chỉ số HS: Trả lời câu hỏi. của phần tử lớn nhất. - Dữ liệu vào và dữ liệu ra của bài toán: + Input: Số nguyên dương N và dãy số nguyên A1,A2,...,AN. + Ouputs: Giá trị lớn nhất và chỉ số GV: Hãy mô tả thuật toán tìm kiếm tuần của giá trị lớn nhất. tự? - Thuật toán tìm kiếm tuần tự: SGK HS: Lên bảng mô tả thuật toán tìm kiếm tuần tự. - Chương trình: SGK.

<span class='text_page_counter'>(56)</span> GV: Hãy khai báo một mảng số nguyên (integer) gồm 100 phần tử? HS: Lên bảng khai báo. GV: Viết đoạn chương trình nhập các giá trị cho các phần tử của mảng? HS: Lên bảng viết đoạn chương trình. GV: Viết đoạn chương trình tìm giá trị lớn nhất của mảng. GV: Gọi một học sinh lên bảng viết chương trình. HS: Viết chương trình. GV: Ghi đề bài ví dụ 2 lên bảng. Yêu cầu HS cho biết dữ liệu vào và dữ liệu ra? HS: Lên bảng xác định dữ liệu vào và dữ liệu ra.. Ví dụ 2: Dãy A là dãy tăng gồm N số nguyễn dương A1,A2,...,AN. và số nguyên k. Có hay không chỉ số i mà Ai=k. Nếu có thì cho biết chỉ số đó, nêu không thì thông báo “không tìm thấy”. - Dữ liệu vào và sữ liệu ra của bài toán. Input: Dãy A tăng dần gồm N số nguyên dương A1,A2,...,AN và số nguyên k. Ouput: Chỉ số i mà Ai=k hoặc thông báo “không tìm thấy”. - Thuật toán tìm kiếm nhị phân: SGK. GV: Gọi một học sinh lên bảng mô tả lại - Chương trình: thuật toán tìm kiếm nhị phân? SGK HS: Lên bảng mô tả thuật toán. GV: Gọi một học sinh lên bảng viết chương trình. HS: Lên bảng chương trình. GV: Sửa chương trình (nếu sai), nhận xét cho điểm. 3. Củng cố: Khi viết chương trình cần mô tả thuật toán trước. 4. Bài tập về nhà: Xem lại các ví dụ ở mục b-SGK..

<span class='text_page_counter'>(57)</span> Ngày soạn : 4-01-2015 Tiết PPCT : 24 KIỂU MẢNG(Tiết 3) I. MỤC TIÊU 1. Kiến thức - Học sinh sử dụng được biến kiểu mảng một chiều để giải quyết một số bài toán đơn giản. - Thực hiện được khai báo, truy cập, tính toán các phần tử của mảng 1 chiều. 2. Kỹ năng - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình pascal để giải quyết một số bài toán cụ thể. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ Câu hỏi: Khái niệm kiểu dữ liệu có cấu trúc? Khái niệm kiểu mảng một chiều? Nêu cú pháp khai báo biến kiểu mảng một chiều (bằng cả 2 cách)? Trả lời: - Kiểu dữ liệu có cấu trúc là kiểu dữ liệu do người lập trình xây dựng dựa trên các kiểu dữ liệu đã có. - Mảng 1 chiều là một dãy hữu hạn các phần tử có cùng kiểu dữ liệu, số phần tử của mảng được xác định khi khai báo. - Cú pháp khai báo biến mảng một chiều: + Cách 1: Khai báo trực tiếp mảng một chiều: Var <Tên biến mảng>:array[kiểu chỉ số] of <kiểu PT>; + Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type <tên kiểu mảng>= array[kiểu chỉ số] of <Kiểu PT>; Var <Tên biến mảng>:<tên kiểu mảng>; 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG 3. Củng cố: Khi viết chương trình cần mô tả thuật toán trước. 4. Bài tập về nhà: Xem lại các ví dụ ở mục b-SGK..

<span class='text_page_counter'>(58)</span>

<span class='text_page_counter'>(59)</span> Ngày soạn : 10-01-2017 Tiết PPCT : 25 BÀI TẬP I. MỤC TIÊU 1. Kiến thức - Học sinh sử dụng được biến kiểu mảng một chiều để giải quyết một số bài toán đơn giản. - Thực hiện được khai báo, truy cập, tính toán các phần tử của mảng 1 chiều. 2. Kỹ năng - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình pascal để giải quyết một số bài toán cụ thể. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ KIỂM TRA 15 PHÚT (lần 2) Đề: Câu 1: Tại sao mảng là kiểu dữ liệu có cấu trúc? Câu 2: Tại sao phải khai báo kích thước của mảng? Câu 3: Các phần tử của mảng có thể có những kiểu gì? Đáp án: Câu 1: Mảng là kiểu dữ liệu do người lập trình xây dựng nên. Câu 2: Phải khai báo kích thước mảng để máy tính dành số ô nhớ cần thiết để lưu trữ các giá trị trong mảng. Câu 3: Các phần tử mảng có thể có các kiểu dữ liệu chuẩn và các kiểu dữ liệu có cấu trúc đã được xây dựng trước đó. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Ghi đề bài 5-trang 79 lên bảng. d) Một số ví dụ: Yêu cầu học sinh cho biết dữ liệu vào Bài 5: (trang 79-SGK) và dữ liệu ra? Program Bai5_trang79; HS: Trả lời câu hỏi. Uses Crt; Var a:array[1..100] of byte; i,n,d:byte; BEGIN Clrscr; GV: Hãy cho biết cách tính công bội Write('Nhap N='); Readln(N); của cấp số cộng? For i:=1 to N do HS: d=a[2]-a[1]; BEGIN GV: Day số thỏa mãn điều kiện gì thi Write('Nhap phan tu thu',i,':'); được gọi là dãy số cấp số cộng. Readln(a[i]); HS: Dãy A=A1,A2,…,AN là cấp số End; cộng nếu d:=a[2]-a[1];.

<span class='text_page_counter'>(60)</span> d=Ai-Ai-1 với mọi i=2..N. GV: Gọi một học sinh lên bảng viết chương trình. HS: Viết chương trình. GV: Ghi đề bài ví dụ 2 lên bảng. Yêu cầu HS cho biết dữ liệu vào và dữ liệu ra? HS: Lên bảng xác định dữ liệu vào và dữ liệu ra.. i:=2; While ((i<=N) and (a[i]=a[i-1]+d)) do i:=i+1; if i>N then write('cac so vua nhap la cap so cong') Else Write('cac so vua nhap khong la cap so cong'); Readln; END.. Bài 6: (trang 79-SGK) program bai6_79; uses crt; GV: Cho biết input và Output của bài var a:array[1..100] of byte; toán. i,j,N,slsc,slsl,slnt,slch:byte; HS: BEGIN - Input: Clrscr; Số nguyên N và dãy N số nguyên Write('Nhap so phan tu cua day:'); A1,A2,…,AN. Readln(N); - Output: For i:=1 to N do Số lượng số lẻ, số lượng số chẵn, BEGIN số lượng số nguyên tố. Write('Nhap phan tu thu ',i,':'); Readln(a[i]); GV: Số như thế nào thì được gọi là số End; chẵn, số lẻ, làm thế nào để kiểm tra. Slsc:=0; HS: Số chẵn là số chia hết cho 2, số lẻ For i:=1 to N do không chia hết cho 2. Ta kiểm tra bằng if a[i] mod 2=0 then slsc:=slsc+1; cách lấy số đó mod 2, nếu =0 thì là Slsl:=N-slsc; chẵn, nếu <>0 thì là lẻ. Writeln('-So luong so chan=',slsc,'-So GV: Làm thế nào để đếm được slsl và luong so le=',slsl); slsc? slnt:=0; HS: Kiểm tra lần lượt từ số đầu tiên cho For i:=1 to N do đến số cuối cùng, nếu có số mod 2=0 Begin thì tăng số lượng số chẵn lên 1, ngược slch:=0; lại thì tăng số lượng số lẻ lên 1. For j:=1 to a[i] do if a[i] mod j=0 then slch:=slch+1; GV: Số như thế nào gọi là số nguyên if slch=2 then slnt:=slnt+1; tố? end; HS: Số nguyên tố là số chỉ chia hết cho write('-So luong so nguyen to=',slnt); 1 và chính nó. readln; GV: Làm thế nào để đếm số lượng số END. nguyên tố trong dãy. HS: Lần lượt kiểm tra ước số của các phần tử trong dãy từ phần tử A1 tới AN, số nào có 2 ước số thì ta tăng số lượng số nguyên tố lên 1..

<span class='text_page_counter'>(61)</span> 3. Củng cố: Khi viết chương trình cần mô tả thuật toán trước. 4. Bài tập về nhà: Làm bài tập 1 đến 7 trang 79-SGK..

<span class='text_page_counter'>(62)</span> Ngày soạn : 12-01-2017 Tiết PPCT : 26 BÀI TẬP VÀ THỰC HÀNH 3 I. MỤC TIÊU 1. Kiến thức - Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm kiểu, chạy thử các chương trình có sẵn. - Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính. - Biết nhận xét, phân tích, đề xuất thuật toán sao cho chương trình chạy nhanh hơn. - Làm quen với kiểu dữ liệu có cấu trúc và bài toán sắp xếp. 2. Kỹ năng - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình pascal để giải quyết một số bài toán cụ thể. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ Câu hỏi: Nêu cú pháp khai báo biến mảng một chiều (cả 2 cách)? Trả lời: - Khao báo biến mảng một chiều: + Cách 1: Khai báo trực tiếp mảng một chiều: Var <Tên biến mảng>:array[kiểu chỉ số] of <kiểu PT>; + Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type <tên kiểu mảng>= array[kiểu chỉ số] of <Kiểu PT>; Var <Tên biến mảng>:<tên kiểu mảng>; 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Ghi yêu đề bài lên bảng, yêu cầu Bài 1: (Bài 1-BTTH3) Tạo mảng A gồm HS đưa đoạn chương trình vào vị trí thíc n (n  100) sồ nguyên, mỗi số có giá trị hợp. tuyệt đối không vượt quá 300. Tính tổng HS: Điền đoạn chương trình vào vị trí các phần tử của mảng là bội của một số thích hợp. nguyên k cho trước. GV: Nhận xét, đánh giá cho điểm. a) Hãy tìm hiểu và chạy thử chương trình GV: Giả sử nhập các giá trị cho mảng sau: SGK như sau: b) Hãy đưa các câu lệnh sau đây vào {3, 6, 4, 8, 10, 8, 10} thì kết quả in ra những vị trí cần thiết nhằm sửa đổi màn hình là gì? chương trình trong câu a) để có được HS: Trả lời câu hỏi. chương trình đưa ra số các số dương và số các số âm trong mảng. SGK GV: Gọi một HS lên bảng chỉnh sửa chương trình để đưa ra chỉ số của các Bài 2: (Bài 2-BTTH3) Viết chương trình.

<span class='text_page_counter'>(63)</span> phần tử có cùng giá trị lớn nhất. HS: Lên bảng chỉnh sửa chương trình. GV: Cho HS 5 phú để tìm hiểu chương trình. HS: Xem chương trình ở SGK.. GV: Gọi một HS lên bảng khai báo thêm biến Dem và bổ sung những câu lệnh cần thiết để biến Dem số lần trao đổi trong thuật toán. HS: Hoc sinh lên bảng khai báo thêm biến đếm và bổ sung các câu lệnh. GV: Dựa vào chương trình SGK hãy cho biết số lần thực hiện phép toán cộng? HS: Trả lời câu hỏi. GV: Nếu thay đoạn chương trình từ chú thích {Bat dau tao B} đến {Ket thu tao B} bởi 2 lệnh: B[1]:=A[1]; For i:=2 to n do B[i]:=B[i-1] + A[i]; thì số lần thực hiện phép toán cộng là bao nhiêu? HS: Trả lời câu hỏi.. tìm phần tử lớn nhất của mảng và đưa ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất. a) Hãy tìm hiểu chương trình: SGK b) Chỉnh sửa chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất. Bài 3: (Bài 1 -BTTH4): a) Hãy tìm hiểu và chạy thử chương trình thực hiện thuật toán sắp xếp dãy số nguyên bằng thuật toán trao đổi với các giá trị khác nhau của n dưới đây. Qua đó nhận xét về thời gian chạy của chương trinh SGK. b) Khai báo thêm biến nguyên Dem và bổ sung vào chương trình những câu lệnh cần thiết để biến Dem số lần thực hiện trao đổi trong thuật toán. Đưa kết quả tìm được ra màn hình. Bài 2 (BTTH4): Hãy đọc và tìm hiểu những 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ử. Bài 3: Chương trình nhập vào từ bàn phím các phần tử của mảng hai chiều B GV: Hãy xác định Input và Output của gồm 5 hàng, 7 cột với các phần tử là số bài toán? nguyên và một số nguyên k. Sau đó đưa HS: Trả lời câu hỏi. ra màn hình các phần tử nhỏ hơn k. Program Vidu2; Uses Crt; Var B:array[1..2,1..3] of integer; i,j,k:byte; GV: Khai báo mảng B gồm 2 hàng và 3 BEGIN cột có kiểu phần tử là integer? clrscr; HS: Lên bảng viết cú pháp. For i:=1 to 2 do For j:=1 to 3 do BEGIN Write('Nhap vao phan tu GV: Viết đoạn chương trình nhập giá trị b[',i,',',j,']'); cho các phần tử của mảng B? readln(b[i,j]); HS: Lên bảng viết đoạn chương trình. end;.

<span class='text_page_counter'>(64)</span> Write('Nhap gia tri k='); readln(k); Write('Cac phan tu nho hon ',k,' la:'); For i:=1 to 2 do GV: Viết đoạn chương trình in các phần For j:=1 to 3 do tử của mảng B ra màn hình (chỉ in các if b[i,j]<k then write(b[i,j],' '); phần tử nhỏ hơn k)? readln; HS: Lên bảng viết đoạn chương trình. End. 3. Củng cố: Một bài toán ta có thể có nhiều thuật toán giải, vì vây ta chọn thuật toán sao cho sao cho số phép toán thực hiện càng ít càng tốt..

<span class='text_page_counter'>(65)</span> Ngày soạn : 17-01-2017 Tiết PPCT : 27 BÀI TẬP I. MỤC TIÊU 1. Kiến thức - Học sinh sử dụng được biến kiểu mảng một chiều để giải quyết một số bài toán đơn giản. - Thực hiện được khai báo, truy cập, tính toán các phần tử của mảng 1 chiều. 2. Kỹ năng - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình pascal để giải quyết một số bài toán cụ thể. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: kết hợp trong bài mới 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Ghi đề bài tập 1 lên bảng. Yêu cầu Bài tập1: Nhập 1 mảng số thực từ bàn học sinh xác định dữ liệu vào và dữ liệu phím. Tính tổng và in mảng đó ra màn ra? hình. Input: cho n và dãy số thực a1, a2, ..., an. HS: Lên bảng xác định dữ liệu vào và Output: Tổng dãy a1, a2, ..., an dữ liệu ra. Program Tinh_tong; Var A: Array [1..100] of Real; GV: Hướng dẫn I, n: Integer; S: Real; Để tính tổng của dãy ta thực hiện lệnh: Begin For i:=1 to n do Write(‘Nhap so pt mang:’); Readln(n); S:=s+A[i]; For i:=1 to n do HS: Lên bảng viết CT Begin GV: Nhận xét và bổ sung. Write(‘A[’,i,’]=’); Readln(A[i]); End; S:=0; For i:=1 to n do S:=s+A[i]; Writeln(‘Mang vua nhap la:’); for i:=1 to n do write(A[i]:3); write(‘Tong s=’,s:5:2); Readln; End. GV: Ghi đề bài tập 2 lên bảng. Yêu cầu học sinh xác định dữ liệu vào và dữ liệu ra?. Bài tập 2. Dãy số sau được gọi là dãy Fibonaci: A1=1, A2=1, A3=2, A4=3… An=An-1-An-2.

<span class='text_page_counter'>(66)</span> HS: Lên bảng xác định dữ liệu vào và dữ liệu ra.. Lập CT tính N số Fibonaci dầu tiên, in ra màn hình dãy đó?. Program Fibonaci; GV: Gợi ý Var A: Array [1..100] of Integer; Để giải quyết bài toán này chúng ta sử I, n: Integer; dụng mảng 1 chiều Begin A[1]:=1; Write(‘Nhap N(N>2)’); Readln(N); A[2]:=1; A[1]:=1; For i:=3 to N do A[2]:=1; A[i]:=A[i-1]+A[i-2]; For i:=3 to N do A[i]:=A[i-1]+A[i-2]; Writeln(‘Day Fibonaci la:’); For i:=1 to n do write(A[i]:3); Readln; End. 3. Củng cố: Khi viết chương trình cần mô tả thuật toán trước. 4. Bài tập về nhà: Xem lại các đã làm..

<span class='text_page_counter'>(67)</span> Ngày soạn : 01-02-2016 Tiết PPCT : 28 BÀI TẬP VÀ THỰC HÀNH 4 (Tiết 1) I. MỤC TIÊU 1. Kiến thức - Giúp học sinh hiểu rõ hơn cách khai báo và sử dụng kiểu dữ liệu mảng 1 chiều và mảng 1 chiều. 2. Kỹ năng - Rèn luyện kĩ nămg viết chương trình trên máy tính. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Yêu cầu học sinh gõ và chạy thử Uses crt; chương trình bài 1 trong sách giáo khoa Const Namx=250; trang 65. Type Arrint = array[1..nmax] of integer; GV: quan sát học sinh gõ chương trình Var n,I,j,t: integer; và hưỡng dẫn học sinh thực hành A:arrint; Begin Clrscr; Randomize; Write(‘ nhap n=’); Readln(n); For i:=1 to n do A[i]:= random(300) – random(300); For i:=1 to n do write(A[i]:5); Writeln; For i:= n downto 2 do For i:= 1 to j-1 do If A[i] >A[i+1] then GV: yêu cầu học sinh nghiên cứu khai báo thêm biến nguyên Dem và bổ sung vào chương trình những câu lệnh cần thiết để biến Dem tính được số lần thực hiện tráo đổi trong thuật toán. Dưa kết. Begin T:=A[i]; A[i]:= A[i+1]; A[i+1]:=t; End; Writeln;.

<span class='text_page_counter'>(68)</span> quả tìm được ra màn hình. For i:=1 to n do write(a[i]:7); Writeln; readln End.. GV: Ghi NỘI DUNG thực hành lên Gõ và chạy thử chương trình sau: bảng. program Sum1; HS: Soạn chương trình và chạy thử chương trình với nhiều bộ dầu vào khác Uses Crt; nhau. Var A:array[1..100] of integer; GV: Quan sát lớp, hướng dẫn các em thực hành.. k,i,n,S:integer; neg,posi:byte; BEGIN Clrscr; randomize; Write('Nhap so phan tu can tao: '); Readln(N); For i:=1 to N do A[i]:=random(300)random(300); Writeln(N,' so ngau nhien vua tao:'); For i:=1 to N do Write(A[i]. :6);. Writeln; Write('Nhap k='); readln(k); S:=0;posi:=0; neg:=0; For i:=1 to N do BEGIN if a[i] mod k = 0 then S:=S+A[i]; if A[i]>=0 then Posi:=posi+1 else Neg:=neg+1; end; Writeln('Tong can tinh la:',S); Writeln('So luong so am: ',neg,'; so luong so duong: ',posi); readln; END. 3. Củng cố: Khi viết chương trình cần mô tả thuật toán trước. 4. Bài tập về nhà: Xem trước bài tập và thực hành số 4..

<span class='text_page_counter'>(69)</span> Ngày soạn: 02-02-2016 Tiết PPCT: 29 BÀI TẬP VÀ THỰC HÀNH 4 (Tiết 2) I. MỤC TIÊU 1. Kiến thức - Giúp học sinh hiểu rõ hơn cách khai báo và sử dụng kiểu dữ liệu mảng 1 chiều và mảng 1 chiều. 2. Kỹ năng - Rèn luyện kĩ nămg viết chương trình trên máy tính. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: kết hợp trong bài mới. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Ghi NỘI DUNG thực hành lên NỘI DUNG TH 2: Gõ và chạy thử bảng. chương trình sau: HS: Soạn chương trình và chạy thử chương trình với nhiều bộ dầu vào khác Program Tim_Max; nhau. Uses Crt; GV: Quan sát lớp, hướng dẫn các em Var A:array[1..100] of integer; thực hành. i,n,Csmax:byte; BEGIN {Clrscr;} Write('Nhap so luong phan tu cua day so:'); Readln(N); For i:=1 to N do BEGIN Write('Nhap phan tu thu ',i,' ='); Readln(A[i]); End; CsMax:=1; For i:=2 to N do if A[i]>A[Csmax] then Csmax:=i; Write('Chi so: '); For i:=1 to N do.

<span class='text_page_counter'>(70)</span> if A[Csmax]=A[i] then Write(i,' '); Write('Gia tri: ',A[Csmax]); Readln; END. 3. Củng cố: Khi viết chương trình cần mô tả thuật toán trước. 4. Bài tập về nhà: Xem trước Kiểu xâu.

<span class='text_page_counter'>(71)</span> Ngày soạn: 05-02-2016 Tiết PPCT: 30 Bài 12: KIỂU XÂU (tiết 1) I. MỤC TIÊU 1. Kiến thức - Biết được lợi ích của các hàm và thủ tục của hàm liên quan đến xâu trong ngôn ngữ lập trình pascal. - Năm được cấu trúc chung và chức năng của một số hàm và thủ tục liên quan đến xâu trong ngôn ngữ lập trình pascal. 2. Kỹ năng - Nhận biết và bước đầu sử dụng được một số hàm và thủ tục để giải quyết một số bài toán đơn giản liên quan. - Biết được một kiểu dữ liệu mới, biết được khái niệm kiểu xâu. - Phân biệt được sự giống và khác giữa kiểu dữ mảng và kiểu liệu xâu kí tự. - Biết được cách khai báo biến, nhập xuất dữ liệu, tham chiếu đến phần tử của xâu. - Biết các phép toán liên quan đến xâu. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: kết hợp trong bài mới 2. Kết nối HOẠT ĐỘNG CỦA THẦY VÀ TRÒ NỘI DUNG GV: Cho 1 xâu ‘2015 la nam Ất Mùi’. 1. Khai báo: Yêu cầu học sinh cho biết độ dài của - Cú pháp: xâu. Var <Tên biến>:String[độ dài lớn nhất HS: Trả lời câu hỏi. của xâu>; GV: Hãy nêu cú pháp khai báo biến - Ví dụ: kiểu xâu? Var ht:string[26]; HS: Dựa vào SGK trả lời câu hỏi. Var S:String; 2. Nhập/xuất dữ liệu cho xâu: - Nhập/xuất giống như kiểu dữ liệu GV: Nhập/xuất biến kiểu chuỗi tương tự chuẩn. Ngoài ra ta có thể sử dụng lệnh như nhập/xuất biến dữ liệu chuẩn. gán để nhập giá trị cho biến xâu. - Ví dụ: Nhập: Readln(ht); hoặc ht:=’Cao Thi Thap’; Xuất: Writeln(ht); hoặc Write(‘Cao Thi Thap’); GV: Hãy nêu cú pháp tham chiếu đến phần tử của chuỗi?. 3. Tham chiếu đến từng kí tự của xâu: - Cú pháp: Tênbiến[chỉ số].

<span class='text_page_counter'>(72)</span> HS: Trả lời câu hỏi. GV: Cho biết kí hiệu của phép ghép xâu? Và cho biết kết quả của phép xâu sau: ‘Ha Noi’ + ‘Viet Nam’. GV: Cho biết các phép so sánh xâu? Và so sánh các cặp xâu kí tự sau: ‘Tin hoc’= ’Tin hoc’. ‘Tin hoc’<’Tin hoc voi may tinh’. ‘Tin hoc A’<’Tin hoc B’. ‘Hoàng’ < ‘Hoạt’. HS: Dựa vào SGK trả lời câu hỏi. GV: Cho biết ý nghĩa của thủ tục delete(xâu,vt,n)? HS: Dựa vào SGK trả lời câu hỏi. GV: Ví dụ: S:=’Viet Nam’ thì các thủ tục sau có kết quả như thế nào? Delete(S,1,5); Delete(S,5,3). HS: Trả lời câu hỏi. GV: Cho biết ý nghĩa của các thủ tục Insert(xâu1,xâu2,vt)? HS: Dựa vào SGK trả lời câu hỏi. GV: Ví dụ: S1:=’ Thi Hong ’ và S2: =’Nguyen Hoa’ thì thủ tục Insert(S1,S2,7) cho kết quả là gì? HS: Trả lời câu hỏi. GV: Cho biết ý nghĩa của hàm Copy(xâu,vt,N)? HS: Dựa vào SGK trả lời câu hỏi? GV: Cho biết ý nghĩa của hàm length(xâu) ? HS: Dựa vào SGK trả lời câu hỏi? GV: Cho biết giá trị trả về của hàm length(xâu)? HS: Trả lời câu hỏi. GV: Cho biết ý nghĩa của hàm Pos(xâu1,xâu2)? HS: Dựa vào SGK trả lời câu hỏi? GV: Cho biết giá trị trả về của hàm pos(‘ef’,’abcdefgh’)? HS: Trả lời câu hỏi. GV: Cho biết ý nghĩa của hàm Upcase(ch)?. - Ví dụ: ht[6]; Kí tự ở vị trí thứ 6 trong xâu. 4. Các thao tác xữ lí xâu: a) Phép ghép xâu: - Kí hiệu: + - Ví dụ: ‘KBang’ + ‘ - ’ + ‘Gia Lai’  kết quả được xâu ‘Kbang – Gia Lai’. b) Các phép so sánh: >,>=,=,<>,<,<=. Ví dụ: ‘Tin hoc’= ’Tin hoc’. ‘Tin hoc’<’Tin hoc voi may tinh’. ‘Tin hoc A’<’Tin hoc B’.. c) Thủ tục delete(xâu,vt,n): thực hiện việc xóa n kí tự bắt đầu từ vị trí vt. Ví dụ: S:=’Viet Nam’. Delete(S,1,5) kết quả ‘Nam’. Delete(S,5,3) kết quả ‘Viet’. d) Thủ tục Insert(xâu1,xâu2,vt): thực hiện việc chèn xâu1 vào xâu2 bắt đầu từ vị trí vt. Ví dụ: S1:=’mn ’; S2: =’abcdefghijk’; Insert(S1,S2,4); ‘abcmndefghijk’. e) Hàm Copy(xâu,vt,N): Tạo xâu gồm N kí tự bắt đầu từ vị trí vt. Ví dụ: Copy(S,6,3) ‘Van’. f) Hàm length(xâu): cho giá trị là độ dài của xâu. Ví dụ: S:=’abcdefghijk’; length(s)=11; g) Hàm Pos(xâu1,xâu2): cho vị trí đầu tiên xâu1 xuất hiện trong xâu2. Ví dụ 1: Pos(‘ef’,’abcdefgh’)=5. Ví dụ 2: S1:=’def’; S2:=’abcdefghijk’; h) Hàm Upcase(ch): cho chữ cái in hoa ứng với chữ cái ch..

<span class='text_page_counter'>(73)</span> HS: Dựa vào SGK trả lời câu hỏi? GV: Cho biết giá trị trả về của hàm Upcase(‘a’)? HS: Trả lời câu hỏi. 3. Củng cố: Cho xâu S:=’Tran Van Truong’. Hãy cho biết kết quả của S[1], S[length[S]]. 4. Bài tập về nhà: xem trước phần 3-SGK..

<span class='text_page_counter'>(74)</span> Ngày soạn: 07-02-2017 Tiết PPCT: 31 Bài 12: KIỂU XÂU (tiết 2) I. MỤC TIÊU 1. Kiến thức - Biết được lợi ích của các hàm và thủ tục của hàm liên quan đến xâu trong ngôn ngữ lập trình pascal. - Năm được cấu trúc chung và chức năng của một số hàm và thủ tục liên quan đến xâu trong ngôn ngữ lập trình pascal. 2. Kỹ năng - Nhận biết và bước đầu sử dụng được một số hàm và thủ tục để giải quyết một số bài toán đơn giản liên quan 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Hãy nêu các thao tác xử lí xâu đã học? Học sinh: - Phép ghép xâu: + - Phép so sánh xâu: >,>=,=,<,<=,<>. - Thủ tục Delete(xâu,vt,n). - Thủ tục Insert(xâu 1, xâu 2,vt). - Hàm Copy(xâu,vt,n). - Hàm Length(xâu). - Hàm Pos(xâu1, xâu2). - Hàm upcase(kt). 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Nêu cú pháp của hàm cho biết độ dài Ví dụ 1: SGK của xâu? HS: Hàm Length(xâu). GV: Cho ví dụ: S1:=’Nguyen Van An’; S2:=’Tran Thi B’; Giả sử xâu S1 nhập trước và xâu S2 nhập sau. Thì xâu nào được in ra? Tại sao? HS: Trả lời câu hỏi. GV: Cho ví dụ: S1:=’Nguyen Van A’; S2:=’Nguyen Van B’; Giả sử xâu S1 nhập trước và xâu S2 nhập sau. Thì xâu nào được in ra? Tại sao? HS: Xâu ‘Nguyen Van B’ sẻ được in ra vì 2 xâu này có độ dài bằng nhau, nhưng xâu ‘Nguyen Van B’ nhập sau..

<span class='text_page_counter'>(75)</span> GV: Gọi một HS lên bảng viết lại đoạn chương trình SGK. HS: Lên bảng viết chương trình. GV: Kiểm tra, sửa lỗi (nếu có), nhận xét, cho điểm. GV: Giả sử có 2 xâu a, b thi kí tự đầu tiên của xâu thứ là a[1] và kí tự cuối cùng của xâu thứ 2 là b[length(n)]. Nếu a[1]=b[length(s)] thì ‘Trung nhau’, ngược lại thì ‘không trung’. GV: Gọi một học sinh lên bảng viết lại chương trình SGK? HS: Lên bảng viết chương trình. GV: Nhận xét đánh giá cho điểm. GV: Giả sử có xâu S thì thứ tự của các kí tự trong xâu là S[1],S[2],…,S[n] (n là độ dài của xâu). Vì vậy ngược lại của xâu S được viết như thế nào? HS: Được viết theo thứ tự S[n], S[n-1], …,S[1]. GV: Gọi một học sinh lên bảng viết lại đoạn chương trình SGK. GV: Nhận xét đánh giá cho điểm. GV: Xâu a là xâu nhập vào và xâu b là xâu thu được từ xâu a mà không chứa kí tự trống. Ví dụ: a:=’Nguyen Van Anh’; thì xâu b là xâu nào? HS: Trả lời câu hỏi. GV: Gọi một học sinh lên bảng viết lại đoạn chương trình SGK. GV: Nhận xét đánh giá cho điểm.. Ví dụ 2: SGK. Ví dụ 3: SGK. Ví dụ 4: SGK. Ví dụ 5: SGK. 3. Củng cố: Nhớ cú pháp và ý nghĩa của các hàm để áp dụng vào giải các bài toán tương tự. 4. Bài tập về nhà: Viết chương trình để giải các bài toán ở BTVTH 5-SGK + BT 10 trang 80..

<span class='text_page_counter'>(76)</span> Ngày soạn: 15-02-2017 Tiết PPCT: 32 BÀI TẬP (Kiểu xâu) I. MỤC TIÊU 1. Kiến thức - Biết nhập xâu vào từ bàn phím và xuất xâu. - Truy cập đến phần tử của xâu. - Sử dụng hàm và thủ tục xử lí xâu. 2. Kỹ năng - Nhận biết và bước đầu sử dụng được một số hàm và thủ tục để giải quyết một số bài toán đơn giản liên quan 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Kết hợp trong bài mới. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Cho ví dụ về xâu đối xứng? Bài 1: SGK HS: Cho ví dụ. GV: Để kiểm tra một xâu có phải là đối a) Viết chương trình nhập vào một xâu. Kiểm tra xâu đó có đối xứng không? xứng hay không ta thực hiện như sau: sinh ra xâu ngược của xâu vừa nhập, nếu Var i,x:byte; xâu sinh ra bằng xâu nhập thì xâu đó là a,p:string; xâu đối xứng, ngược lại không đối xứng. Yêu câu 1 hs lên bảng viết chương trình BEGIN giải bài toán trên. write('Nhap vao xau:');readln(a); HS: Lên bảng viết chương trình. x:=length(a); GV: Nhận xét, sửa lỡi CT (nếu có) và p:=''; cho điểm. for i:=length(a) Downto 1 do p:=p+a[i]; if a=p then write('xau doi xung') else write('xau khong doi xung'); GV: Không sử dụng biến p để sinh ra xâu ngược của xâu vừa nhập thì ta phải so sánh từng cặp kí tự trong xâu. a[1] với a[n], a[2] với a[n-1]...(n là độ dài xâu). GV: Gọi 1 hs lên bảng viết lại chương trình ở mục a) không sử dụng biến p.. readln; end. b) Hãy viết lại chương trình trên, trong đó không dùng biến xâu p: Var i,x,n:byte; a,p:string;.

<span class='text_page_counter'>(77)</span> HS: Lên bảng viết chương trình. GV: Nhận xét, sửa lỗi CT (nếu có) và cho điểm.. BEGIN write('Nhap vao xau:');readln(a); x:=length(a) div 2; n:=length(a); for i:=1 to x do if a[i]<>a[length(a)-i+1] then BEGIN write('Xau khong doi xung'); readln; exit;. GV: Mỗi lần lấy một kí tự trong xâu (kí tự đầu tiên) đem so sánh với các kí tự còn lại, nếu bằng thì cập nhật số lần xuất hiện của kí tự đó. Sau đó xoá hết các kí tự bằng với kí tự đem so sánh. Cứ tiếp tục như vậy cho đến khi xâu đó là xâu rỗng. GV: Sau khi gợi ý, gọi một học sinh lên bảng viết chương trình. GV: Nhận xét, sửa lỗi CT (nếu có) và cho điểm.. end; write('xau doi xung'); readln; end. Bài 2: SGK Program bai2; var s:string; kt:char; i,j,n,slxh:byte; BEGIN write('Nhap vao mot xau:'); readln(s); while length(s)<>0 do Begin slxh:=0; for j:=1 to length(s) do if upcase(s[1]) = upcase(s[j]) then slxh:=slxh+1;. GV: Ý tưởng để giải bài toán này: Tìm vị trí xuất hiện của xâu ‘anh’ trong xâu vừa nhập, nếu tìm thấy thì xoá và thay thế bằng xâu ‘em’. GV: Làm thế nào để kiểm tra được trong xâu S không còn xâu ‘anh’. HS: Pos(‘anh’,S) trả về giá trị =0. GV: Dùng thủ tục hay hàm nào để tìm vị. writeln('So lan xuat hien cua ', s[1],' la:',slxh); kt:=s[1]; i:=pos(s[1],s); while i<>0 do Begin delete(s,i,1);.

<span class='text_page_counter'>(78)</span> trí mà xâu ‘anh’ xuất hiện trong S. HS: i:=pos(‘anh’,S); GV: Dùng thủ tục nào để xóa xâu ‘anh’ tại vị trí i vừ tìm được. HS: Delete(S,i,3); GV: Dung thủ tục nào để chèn xâu ‘anh’ vào S tại vị trí i. HS: Insert(‘em’,S,i); GV: Sau khi gợi ý, gọi một học sinh lên bảng viết chương trình. GV: Nhận xét, sửa lỡi CT (nếu có) và cho điểm.. i:=pos(kt,s); end; end; readln; END. Bài 3: SGK program vd; var. s:string; i:byte;. BEGIN WRITE('Nhap vao mot xau: '); readln(s); i:=pos('anh',s); while i<>0 do Begin delete(s,i,3); insert('em',s,i); i:=pos('anh',s); end; write('Xau sau khi da thay the: ',s); readln; END. 3. Củng cố: Phải nắm vững các thủ tục và hàm biến đổi xâu để giải quyết các bài toán về xâu. 4. Bài tập về nhà: Xem lại các bài toán đã giải để chuẩn bị cho tiết bài tập sau..

<span class='text_page_counter'>(79)</span> Ngày soạn: 15-02-2017 Tiết PPCT: 33 BÀI TẬP VÀ THỰC HÀNH 5 I. MỤC TIÊU 1. Kiến thức - Sử dụng các phép xử lí xâu để viết các chương trình giải các bài toán liên quan đến xâu. 2. Kỹ năng - Sử dụng các phép xử lí xâu để viết các chương trình giải các bài toán liên quan đến xâu. - Rèn luyện kĩ năng viết chương trình trên máy. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Kết hợp trong bài mới. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Soạn và chạy thử chương trình ở NỘI DUNG thực hành 1: Soạn và chạy bài tập 1a-SGK. thử chương trình sau:(nhập vào một xâu, HS: Soạn NỘI DUNG và chạy thử in ra xâu đảo ngược). chương trịnh. Var i,x:byte; GV: Quan sát lớp và hướng dẫn học sinh thực hành. a,p:string; BEGIN write('Nhap vao xau:');readln(a); x:=length(a); p:=''; for i:=length(a) Downto 1 do p:=p+a[i]; if a=p then write('xau doi xung') GV: Soạn và chạy thử chương trình ở bài tập 1b-SGK. HS: Soạn NỘI DUNG và chạy thử chương trịnh. GV: Quan sát lớp và hướng dẫn học sinh thực hành.. else write('xau khong doi xung'); readln; end. NỘI DUNG thực hành 2: Soạn và chạy thử chương trình sau: (nhập vào một xâu, kiểm tra xâu đó có phải là xâu đối xứng không)..

<span class='text_page_counter'>(80)</span> Var i,x,n:byte; a,p:string; BEGIN write('Nhap vao xau:');readln(a); x:=length(a) div 2; n:=length(a); for i:=1 to x do if a[i]<>a[length(a)-i+1] then begin. GV: Soạn và chạy thử chương trình ở bài tập 2-SGK. HS: Soạn NỘI DUNG và chạy thử chương trịnh. GV: Quan sát lớp và hướng dẫn học sinh thực hành.. write('Xau khong doi xung'); readln; exit; end; write('xau doi xung'); readln; end. NỘI DUNG thực hành 3: Soạn và chạy thử chương trình sau: Program bai2; var s:string; kt:char; i,j,n,slxh:byte; BEGIN write('Nhap vao mot xau:'); readln(s); while length(s)<>0 do Begin slxh:=0; for j:=1 to length(s) do. GV: Soạn và chạy thử chương trình ở bài tập 3-SGK. HS: Soạn NỘI DUNG và chạy thử chương trịnh. GV: Quan sát lớp và hướng dẫn học sinh thực hành.. if upcase(s[1]) = upcase(s[j]) then slxh:=slxh+1; writeln('So lan xuat hien cua ', s[1],' la:',slxh); kt:=s[1]; i:=pos(s[1],s);.

<span class='text_page_counter'>(81)</span> while i<>0 do Begin delete(s,i,1); i:=pos(kt,s); end; end; readln; END. NỘI DUNG thực hành 4: Soạn và chạy thử chương trình sau: program vd; var. s:string; i:byte;. BEGIN WRITE('Nhap vao mot xau: '); readln(s); i:=pos('anh',s); while i<>0 do Begin delete(s,i,3); insert('em',s,i); i:=pos('anh',s); end; write('Xau sau khi da thay the: ',s); readln; END. 3. Củng cố: Phải nắm vững các thủ tục và hàm biến đổi xâu để giải quyết các bài toán về xâu. 4. Bài tập về nhà: Đọc trước bài 14, 15.

<span class='text_page_counter'>(82)</span>

<span class='text_page_counter'>(83)</span> Ngày soạn: 20-02-2017 Tiết PPCT: 34 Bài 14: KIỂU DỮ LIỆU TỆP Bài 15: THAO TÁC VỚI TỆP I. MỤC TIÊU 1. Kiến thức - Biết được đặc điểm của kiểu dữ liệu tệp. - Biết khái niệm tệp có cấu trúc và tệp văn bản. 2. Kỹ năng - Khai báo đúng biến kiểu tệp. - Thực hiện được thao tác xử lí tệp: Gán tên tệp, mở/đóng tệp, đọc/ghi tệp 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Kết hợp trong bài mới. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Em hãy cho biết dữ liệu trong - Bộ nhớ RAM. các kiểu dữ liệu từ trước đến nay ta sử dụng được lưu trữ ở bộ nhớ nào trong khi thực hiện chương trình? HS: Dựa vào SGK trả lời câu hỏi. GV: Vì sao em biết được điều đó? - Mất điện hoặc tắt máy sẻ mất dữ liệu. HS: Trả lời câu hỏi. I. Kiểu dữ liệu tệp: - Đặc điểm của kiểu dữ liệu tệp: GV: Đặc điểm của kiểu tệp? + Không bị mất thông tin khi tắt máy. HS: Trả lời câu hỏi. + Dung lượng lưu trữ dữ liệu lớn. - Có hai loại tệp: tệp có cấu trúc và tệp văn GV: Có mấy loại tệp? Nêu khái niệm bản. mỗi loại? + Tệp có cấu trúc: là loại tệp mà các thành HS: Dựa vào SGK trả lời câu hỏi. phần của nó được tổ chức theo một cấu trúc nhất định. + Tệp văn bản: là tệp mà dữ liệu được ghi dưới dạng các kí tự theo mã ASCII. GV: Tệp được chia thành mấy loại, II. Thao tác với tệp văn bản: cho biết khái niệm mỗi loại? 1. Khai báo: HS: Dựa vào SGK trả lời câu hỏi. - Cú pháp: Var <Tên biến tệp>:text; - Ví dụ: khai báo 2 biến tệp tep1, tep 2 thuộc kiểu tệp văn bản: Var tep1,tep2:text; GV: Nêu cú pháp khai báo biến tệp 2. Thao tác với tệp: thuộc kiểu văn bản? a) Gán tên tệp:.

<span class='text_page_counter'>(84)</span> HS: Trả lời câu hỏi.. - Cú pháp: Assign(<Tên biến tệp>,<định vị tệp>); Trong đó: định vị tệp là biến xâu hoặc hằng xâu xác định một tệp trên bộ nhớ ngoài. GV: Nêu cú pháp gán tên tệp cho - Ví dụ: Giả sử có tệp dulieu.txt trên ổ C. biến tệp? Để gán tên tệp cho biến tệp tep1 ta thực HS: Dựa vào SGK trả lời câu hỏi. hiện: Assign(tep1,’C:\dulieu.txt’) GV: Khi thao tác với tệp ta thao tác Hoặc S:=’C:\dulieu.txt’; trực tiếp với tên tệp hay với biến tệp? Assign(tep1,a); HS: Dựa vào SGK trả lời câu hỏi. * Ghi chú: Tên tệp không dài quá 8 kí tự, phần mở rộng (nếu có) không quá 3 kí tự. Định vị tệp phải chỉ rõ đường dẫn nếu không ngầm định sẽ năm trong thư mục bin của Turbopascal. 3. Củng cố: Nêu một số trường hợp sử dụng đến tệp? Các thao tác chính thao tác với tệp 4. Bài tập về nhà: Xem lại nội dung để chuẩn bị cho tiết sau..

<span class='text_page_counter'>(85)</span> Ngày soạn: 28-02-2017 Tiết PPCT: 35 Bài 14: KIỂU DỮ LIỆU TỆP Bài 15: THAO TÁC VỚI TỆP I. MỤC TIÊU 1. Kiến thức - Biết được đặc điểm của kiểu dữ liệu tệp. - Biết khái niệm tệp có cấu trúc và tệp văn bản. 2. Kỹ năng - Khai báo đúng biến kiểu tệp. - Thực hiện được thao tác xử lí tệp: Gán tên tệp, mở/đóng tệp, đọc/ghi tệp - Sử dụng được các thủ tục để đọc/ghi dữ liệu của tệp. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Hỏi: Nêu cú pháp khai báo biến tệp?lấy ví dụ khai báo 1 biết tệp? 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG . 2. Thao tác với tệp: a) Gán tên tệp: - Cú pháp: Assign(<Tên biến tệp>,<định vị tệp>); b) Mở tệp: GV: Có 2 trường hợp mở tệp là mở một - Mở tệp mới (để ghi): tệp mới và mở một tệp đã có. Hãy cho + Cú pháp: Rewrite(<biến tệp>); biết thao tác mở tệp mới là mở ra để đọc + Ví dụ: Mở một tệp có tên baitho.txt trong ổ hay mở ra để ghi? đĩa C: Assign(tep1,’C:\baitho.txt’); HS: Dựa vào SGK trả lời câu hỏi. Rewrite(tep1); GV: Nêu cú pháp lệnh mở một tệp mới. * Ghi chú: Nếu tệp cần mở trùng tên với một HS: Dựa vào SGK trả lời câu hỏi. tệp đã có thì nội dung tệp cũ sẽ bị mất. - Mở một tệp đã có (để đọc): + Cú pháp: Reset(biến tệp>); GV: Hãy cho biết mở tệp đã có là để đọc + Ví dụ: Mở tệp baitho.txt trong ổ C: hay để ghi? Assign(tep1,’C:\baitho.txt’); HS: Dựa vào SGK trả lời câu hỏi. Reset(tep1); GV: Nêu cú pháp lệnh mở một tệp đã có. c) Các thủ tục đọc/ghi dữ liệu đối với tệp: HS: Dựa vào SGK trả lời câu hỏi. - Thủ tục đọc: Read(<biến tệp>,<Danh sách biến>); Readln(<biến tệp>,<Danh sách biến>); GV: Hãy cho biết cú pháp và ý nghĩa Readln(<biến tệp>); của các thủ tục đọc ghi? - Thủ tục ghi: HS: Dựa vào SGK trả lời câu hỏi. Write(<biến tệp>,<danh sách kết.

<span class='text_page_counter'>(86)</span> quả>); Writeln(<biến tệp>,<danh sách kết quả>); Writeln(<biến tệp>); * Một số hàm chuẩn thường dùng trong GV: Nêu cú pháp và ý nghĩa của các khi đoc/ghi tệp văn bản: hàm chuẩn thường dùng với tệp? - EOF(<biến tệp>): trả về giá trị đúng nếu HS: Dựa vào SGK trả lời câu hỏi. con trỏ tệp đang ở vị trí cuối tệp. - EOLN(<biến tệp>): trả về giá trị đúng nếu GV: Nêu cú pháp của thủ thục kết thúc con trỏ tệp đang ở vị trí cuối dòng. tệp (đóng tệp)? d) Kết thúc tệp: HS: Dựa vào SGK trả lời câu hỏi. - Cú pháp: Close(<bến tệp>); - Ví dụ: Close(tep1); 3. Củng cố: Nêu một số trường hợp sử dụng đến tệp? Các thao tác chính thao tác với tệp? 4. Bài tập về nhà: Làm bài tập 1,2,3,4 SGK (trang 89) và xem trước các ví dụ ở bài 16..

<span class='text_page_counter'>(87)</span> Ngày soạn: 02-03-2017 Tiết PPCT: 36 Bài 16: VÍ DỤ LÀM VIỆC VỚI TỆP I. MỤC TIÊU 1. Kiến thức Củng cố lại kiến thức đã học về tệp thông qua ví dụ. 2. Kỹ năng - Khai báo đúng biến kiểu tệp. - Thực hiện được thao tác xử lí tệp: Gán tên tệp, mở/đóng tệp, đọc/ghi tệp - Sử dụng được các thủ tục để đọc/ghi dữ liệu của tệp. - Sử dụng được các hàm và thủ tục liên quan để giải quyết các bài tập. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Hỏi: Nêu cú pháp của các thủ tục gán tên tệp, mở tệp, tạo tệp mới, đóng tệp? Trả lời: - Gán tên tệp cho biến tệp: Assign(<Biến tệp>,<Định vị tệp>); - Mở tệp đã có: Reset(<Biến tệp>); - Tạo tệp mới: Rewrite(<Biến tệp>); - Đóng tệp: Close(<Biến tệp>); 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Giới thiệu Nội dung đề bài. Ghi 1. Tìm hiểu ví dụ 1: SGK Nội dung chính của đề bài lên bảng và gợi ý học sinh tìm hiểu chương trình. GV: Tệp TRAI.TXT đã tồn tại hay chưa? GV: Hàm EOF(f) có chức năng gì? HS: Hàm cho giá trị true khi con trỏ tệp nằm ở vị trí cuối tệp và cho kết quả False khi con trỏ tệp chưa nằm vị trí cuối tệp. GV: Có thể thay câu trúc While bằng câu trúc For được không? HS: Không, vì số lượng phần tử của tệp là không biết trước. GV: Chương trình ở ví dụ 1 SGK thực hiện công việc gì? HS: Tính và in ra màn hình khoảng 2. Tìm hiểu ví dụ 2: SGK cách từ trại của các giáo viên đến trại của thầy hiệu trưởng. GV: Thực hiện chạy từng bước chương.

<span class='text_page_counter'>(88)</span> trình cho học sinh thấy được kết quả. GV: Giới thiệu đề bài và ghi NỘI DUNG đề bài lên bảng. Phân tích yêu cầu của bài. GV: Hãy cho biết mảng a trong chương trình dùng để lưu giữ giá trị nào? HS: Dùng để lưu trữ điện trở tương đương của 3 điện trở theo 5 cách ghép nối như sơ đồ. GV: Ghi đề bài lên bảng, phân tích những yêu cầu của đề bài. Gọi một học sinh lên bảng viết chương trình. HS: Lên bảng viết chương trình. GV: Nhận xét, đánh giá, sửa lỗi CT (nếu có) và cho điểm.. 3. Viết chương trình tạo một tệp có tên Baitho.txt trong ổ đĩa C, ghi vào đó một bài thơ mà em thích. Sau đó mở lại tệp đó đọc và ghi Nội dung của bài thơ ra màn hình. Program baitap; var f:Text; i,n:byte;s:string; BEGIN clrscr; write('Bai tho gom bao nhieu dong:'); readln(n); Assign(f,'C:\baitho.txt'); rewrite(f); for i:=1 to n do BEGIN Write('Nhap vao cau thu ',i,':'); readln(s); writeln(f,s); end; Close(f); Reset(f); While not(EOF(f)) do Begin readln(f,s); Writeln(s); end; readln; END.. 3. Củng cố: Các thao tác xử lí tệp: + Gán tên tệp. + Mở tệp. + Tạo tệp mới. + Đọc/ghi thông tin của tệp. + Đóng tệp. Hàm và thủ tục liên quan: + Hàm EOF(<Biến tệp>); 4. Bài tập về nhà: Xem lại các bài tập đã sửa chuẩn bị cho tiết thực hành tới và làm bài tập sau: BT: Viết chương trình tạo một tệp songuyen.txt trong ổ đĩa C:, ghi vào đó n số nguyên với mỗi số trên một dòng. Sau đó mở lại tệp songuyen.txt đọc và in ra màn hình các số nguyên có giá trị >0..

<span class='text_page_counter'>(89)</span> Soạn: 10-03-2017 Tiết PPCT: 37 BÀI TẬP I. MỤC TIÊU 1. Kiến thức - Hiểu rõ hơn kiểu dữ liệu tệp. 2. Kỹ năng - Rèn luyện kỹ năng viết chương trình đối với kiểu dữ liệu tệp. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Hỏi: Nêu cú pháp của các thủ tục gán tên tệp, mở tệp, tạo tệp mới, đóng tệp? Trả lời: - Gán tên tệp cho biến tệp: Assign(<Biến tệp>,<Định vị tệp>); - Mở tệp đã có: Reset(<Biến tệp>); - Tạo tệp mới: Rewrite(<Biến tệp>); - Đóng tệp: Close(<Biến tệp>); 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Nêu cú pháp khai báo biến tệp, thủ Bài tập 1: Viết chương trình tạo một tệp tục gán tên tệp cho biến tệp và thủ tục mở TRAI.TXT. Nhập dữ liệu từ bàn phím tọa một tệp mới. độ của các trại GVCN và ghi vào tệp (tọa HS: độ là các số nguyên cách nhau bởi dấu Cú pháp khai báo biến tệp: cách và không kết thúc bởi kí tự xuống Var <tên biến tệp>:TEXT; dòng). Thủ tục gán tên tệp cho biến tệp: Program Khoang_cach; Assign(<biến tệp>,<Định vị tệp>); Uses Crt; Thủ tục mở một tệp mới: Var f:text; Rewrite(<biến tệp>); d:real; x,y,n,i:integer; BEGIN Clrscr; Assign(f,'Trai.txt'); GV: Giả sử có 3 trại GVCN có tọa độ như Rewrite(f); sau: Write('Co bao nhieu trai GVCN:'); (2,3); (4,3); (4,7) thì các tọa độ đó được Readln(n); ghi vào tệp như thế nào? For i:=1 to N do HS: 2 3 4 3 4 7 BEGIN GV: Để ghi dữ liệu vào tệp đúng theo quy write(f,' '); cách trên thì ta phải sử dụng những thủ tục Write('Nhap toa do cua gvcn ghi nào? thu',i,':'); HS: Write(f, ‘ ’); và Write(f,x, ‘ ’,y); readln(x,y); write(f,x,' ',y);.

<span class='text_page_counter'>(90)</span> end; Close(f); Readln; END.. 3. Củng cố: Các thao tác xử lí tệp: + Gán tên tệp. + Mở tệp. + Tạo tệp mới. + Đọc/ghi thông tin của tệp. + Đóng tệp. Hàm và thủ tục liên quan: + Hàm EOF(<Biến tệp>); 4. Bài tập về nhà: Xem lại các bài tập đã sửa chuẩn bị cho tiết làm bài tập sau:.

<span class='text_page_counter'>(91)</span> Ngày soạn: 11-03-2017 Tiết PPCT: 38 BÀI TẬP I. MỤC TIÊU 1. Kiến thức - Hiểu rõ hơn kiểu dữ liệu tệp. 2. Kỹ năng - Rèn luyện kỹ năng viết chương trình đối với kiểu dữ liệu tệp. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Hỏi: Nêu cú pháp của các thủ tục gán tên tệp, mở tệp, tạo tệp mới, đóng tệp? Trả lời: - Gán tên tệp cho biến tệp: Assign(<Biến tệp>,<Định vị tệp>); - Mở tệp đã có: Reset(<Biến tệp>); - Tạo tệp mới: Rewrite(<Biến tệp>); - Đóng tệp: Close(<Biến tệp>); 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG Bài tập 2: Viết chương trình tạo tệp RESIST.DAT. Nhập dữ liệu từ bàn phím các bộ số thực tương ứng là 3 điện trở R1, R2, R3 và ghi dữ liệu vào tệp (các số GV: Giả sử ta có biến tệp f1, f2 thuộc cách nhau bởi dấu cách và mỗi bộ 3 số kiểu tệp văn bản. Viết các lệnh tạo tệp trên một hàng). mới RESIST.DAT. Program Dientro; HS: Assign(f1,'Resist.Dat'); Uses Crt; Rewrite(f1); Var a:array[1..5] of real; GV: Giả sử có 2 bộ số thực như sau: R1,R2,R3:real; (1,2,3); (2,3,4), (3,4,5) thì các bộ số thực i,N:integer; này được trình bày trong tệp như thế f1,f2:Text; nào? BEGIN Clrscr; Assign(f1,'Resist.Dat'); Rewrite(f1); Write('Ban nhap vao bao nhieu bo:'); HS: Soạn và chạy thử chương trình. Readln(N); GV: Quản lí lớp và hướng dẫn học sinh For i:=1 to N do thực hành. BEGIN Write('Nhap vao bo thu ',i,':'); Readln(r1,r2,r3); Writeln(f1,r1,' ',r2,' ',r3);.

<span class='text_page_counter'>(92)</span> End; Close(f1); Readln; END. 3. Củng cố: Các thao tác xử lí tệp: + Gán tên tệp. + Mở tệp. + Tạo tệp mới. + Đọc/ghi thông tin của tệp. + Đóng tệp. Hàm và thủ tục liên quan: + Hàm EOF(<Biến tệp>); 4. Bài tập về nhà: Xem lại các bài tập đã sửa chuẩn bị cho tiết kiểm tra một tiết.

<span class='text_page_counter'>(93)</span> Ngày soan: 15-03-2015 Tiết 39: KIỂM TRA 1 TIẾT I. MỤC TIÊU Đánh giá quá trình tiếp thu của học sinh sau khi học xong chương III II. MA TRẬN ĐỀ III. ĐỀ RA IV. ĐÁP ÁN.

<span class='text_page_counter'>(94)</span>

<span class='text_page_counter'>(95)</span> Ngày soạn: 19-03-2017 Tiết PPCT: 40 Bài 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (Tiết 1) I. MỤC TIÊU 1. Kiến thức - Biết được khái niệm chương trình con. - Biết được ý nghĩa của chương trình con. 2. Kỹ năng Biết được ý nghĩa của chương trình con. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Hỏi: Nêu cú pháp của các thủ tục gán tên tệp, mở tệp, tạo tệp mới, đóng tệp? Trả lời: - Gán tên tệp cho biến tệp: Assign(<Biến tệp>,<Định vị tệp>); - Mở tệp đã có: Reset(<Biến tệp>); - Tạo tệp mới: Rewrite(<Biến tệp>); - Đóng tệp: Close(<Biến tệp>); 2. Kết nối: HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Chương trình giải các bài toán phức 1. Khái niệm chương trình con: tạp thường rất dài. Khi gặp những bài toán - Các bài toán phức tạp thường dài, như vậy ta thường gặp những khó khăn gì? do đó rất khó nhận biết được HS: Khó đọc hiểu CT và khó hiệu chỉnh. chương trình thực hiện công việc gì GV: Vi vậy khi gặp những bài toán như và việc hiệu chỉnh chương trình vậy ta phải làm gì? cũng khó khăn. GV: Chiếu 2 chương trình đã chuẩn bị sẵn. - Vì vậy khi gặp các bài toán phức Một chương trình có sử dụng chương trình tạp ta nên chia bài toán đó thành các con, một chương trình không sử dụng bài toán con. chương trình con. - Xét bài toán tính tổng bốn lũy * Chương tình tính thừa: n m p q Tluythua=a +b +c +d có sử dụng Tluythua=an+bm+cp+dq chương trình con. - Khái niệm: Chương trình con là Program vidu; một dãy lệnh mô tả một số thao tác {uses crt;} nhất định và có thể được thực hiện var a,b,c,d,tlthua:real; từ nhiều vị trí trong chương trình. m,n,p,q:integer; Function luythua(n:real;k:byte):real; var i:byte;lt:real; BEGIN lt:=1; For I:=1 to k do.

<span class='text_page_counter'>(96)</span> lt:=lt*n; luythua:=lt; end; BEGIN Write('Nhap du lieu theo thu tu a,b,c,d,n,m,p,q:'); readln(a,b,c,d,n,m,p,q); tlthua:=luythua(a,n)+luythua(b,m) +luythua(c,p)+luythua(d,q); writeln('Tong luy thua:',tlthua:4:1); Write(a:4:0,' luy thua ',n,' =',luythua(a,n):4:0); readln; END. * Chương tình tính Tluythua=an+bm+cp+dq không sử dụng chương trình con. SGK-trang92. Yêu cầu học sinh cho nhận xét về tính ngắn gọn, rõ ràng, tính dễ đọc, dễ hiểu của chương trình đó. HS: Quan sát và trả lời câu hỏi. GV: Khi nào cần viết chương trình con? HS: Dựa vào SGK trả lời câu hỏi. GV: Cho biết khái niệm chương trình con? HS: Dựa vào SGK trả lời câu hỏi. GV: Cho biết những lợi ích của việc sử dụng chương trình con? HS: Dựa vào SGK trả lời câu hỏi.. - Lợi ích của việc sử dụng chương trình con: + Tránh được viết lặp đi lặp lại cùng một dãy lệnh. + Hỗ trợ việc thực hiện các chương trình lớn. + Phục vụ cho quá trình trừu tượng hoá. + Mở rộng khả năng ngôn ngữ. + Thuận tiện cho phát triển và nâng cấp chương trình.. 3. Củng cố: Khái niệm chương trình con, các lợi ích của chương trình con. 4. Bài tập về nhà: Xem trước phần 2 của bài Chương trình con và phân loại..

<span class='text_page_counter'>(97)</span> Ngày soạn: 20-03-2017 Tiết PPCT: 41 Bài 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (Tiết 2) I. MỤC TIÊU 1. Kiến thức - Biết được cấu trúc chương trình con 2. Kỹ năng - Phân biệt được 2 loại chương trình con là hàm và thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Chương trình con là gì? Khi nào cần sử dụng đến chương trình con? Lợi ích của việc sử dụng chương trình con? Trả lời:  Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện từ nhiều vị trí trong chương trình.  Ta cần sử dụng đến chương trình con khi viết chương trình các bài toán phức tạp và khi trong chương trình có những đoạn lệnh được viết lặp đi lặp lại nhiều lần.  Lợi ích của việc sử dụng chương trình con: + Tránh được viết lặp đi lặp lại một đoạn lệnh nào đó. + Hỗ trợ việc thực hiện các chương trình lớn. + Phục vụ cho quá trình trừu tượng hoá. + Mỡ rộng khả năng ngôn ngữ. + Thuận tiện cho phát triển và nâng cấp chương trình 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Chương trình con được phân thành 2. Phân loại chương trình con: mấy loại, kể tên? a) Phân loại: HS: Dựa vào SGK trả lời câu hỏi. - Hàm (Function): là chương trình con thực GV: Hàm là gì? Thủ tục là gì? Choví dụ. hiện một số thao tác nào đó và trả về giá trị qua tên của hàm. Vi dụ: Sin(x), Sqrt(x), length(x)... - Thủ tục (Procedure): là chương trình con thực hiện một số thao tác nhất định nhưng không trả về giá trị nào qua tên của nó. Ví dụ: Delete, readln, Writeln... GV: Chương trình con gồm có mấy phần? b) Cấu trúc chương trình con: Là những phần nào? - Cấu trúc: <Phần đầu> HS: Dựa vào SGK trả lời câu hỏi. [<Phần khai báo>] GV: Chiếu chương trình tính tổng (có sử <Phần thân> dụng chương trình con), chỉ rõ vị trí.

<span class='text_page_counter'>(98)</span> chương trình con. Yêu cầu học sinh chỉ rõ phần nào là phần đầu, phần nào là phần khai báo, phần nào là phần thân của chương trình con? HS: Trả lời câu hỏi. GV: Tham số hình thức là gì? Cho ví dụ. HS: Trả lời câu hỏi.. - Tham số hình thức là các biến được khai báo cho dữ liệu vào ra trong phần đầu của chương trình. Ví dụ: Chương trình con Luythua(x,k) GV: Biến cục bộ là gì? Biến toàn cục à thì x, k là tham số hình thức. gì? - Biến cục bộ là biến được khai báo để HS: Trả lời câu hỏi. dùng riêng trong chương trình con. Ví dụ: i, Lt là biến cục bộ. - Biến toàn cục là biến được khai báo ở chương trình chính và chương trình con có GV: Thực hiện chương trình con bằng các thể sử dụng. nào? Ví dụ: a,b,c,d,n,m,p,q,tlt... HS: Dựa vào SGK trả lời câu hỏi. c) Thực hiện chương trình con: - Để thực hiện chương trình con thì ta phải GV: Tham số thực sự là gì? có lệnh gọi nó bao gồm tên hàm và các HS: Dựa vào SGK trả lời câu hỏi. tham số (nếu có). Ví dụ: LuyThua(a,n), LuyThua(b,m)... - Tham số thực sự là các hằng và các biến chứa dữ liệu vào và ra tương ứng với các tham số hình thức. Ví dụ: Trong lệnh gọi thủ tục luythua(a,n), luythua(2,3) thì a, n, 2, 3 là các tham số thực sự. 3. Củng cố: Cấu trúc của chương trình, vị trí của chương trình, tham số hình thức, tham số thực sự, hàm và thủ tục. 4. Bài tập về nhà: Xem trước bài 18..

<span class='text_page_counter'>(99)</span> Ngày soạn: 23-03-2017 Tiết PPCT: 42 Bài 18: VÍ DỤ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (Tiết 1) I. MỤC TIÊU 1. Kiến thức: - Biết được cấu trúc chung và vị trí của thủ tục trong chương trình. - Phân biệt được tham số giá trị và tham số biến. - Nắm được khái niệm về biến toàn cục và biến cục bộ. 2. Kĩ năng: - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được 2 loại tham số hình thức trong đầu của thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Cho biết vị trí của chương trình con trong chương trình chính? Cấu trúc của một chương trình con? Tham số hình thức là gì? Tham số thực sự là gì? Biến cục bộ là gì? Biến toàn cục là gì? Trả lời: - Chường trình con năm sau phần khai báo và trước BEGIN của chương trình chính. - Cấu trúc của CTC: SGK - Tham số hình thức là các biến chứa dữ lệu vào và ra được khai báo ở phần đầu của CTC. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Nêu cấu trúc của thủ tục? 1. Cách viết và sử dụng thủ tục: HS: Dựa vào SGK trả lời câu hỏi. a) Cấu trúc thủ tục: Procedure <Tên thủ tục>[(<DS tham GV: Thành phần nào của thủ tục bắt số>)]; buộc phải có và thành phần nào có thể [<Phần khai báo>] có hoặc không? BEGIN HS: Dựa vào SGK trả lời câu hỏi. [<Dãy các lệnh>] End; b) Ví dụ về thủ tục: GV: Tham biến là gì? Tham trị là gì? Sự khác nhau giữa tham biến và tham trị: HS: Dựa vào SGK trả lời câu hỏi. Tham trị Tham biến GV: Nêu sự khác nhau giữa tham biến - Khi khai báo - Khai báo phải có và tham trị? không có từ khoá từ khoá Var. HS: Trả lời câu hỏi. var. - Khi gọi thực hiện - Khi gọi thực chương trình con, hiện chương trình các tham số hình con, các tham số thức chỉ được hình thức sẽ được phép thay thế các.

<span class='text_page_counter'>(100)</span> thay thế bằng các tham số thực sự là tham số thực sự là biến. giá trị cụ thể hoặc biến. - Giá trị của nó có - Giá trị của nó thể bị thay đổi sau GV: Nhận xét về thủ tục ve_hcn ở không bị thay đổi khi thực hiện chương trình VD_thutuc1 và sau khi thực hiện chương trình con. VD_thutuc2? chương trình con. HS: Cho nhận xét. - Xét ví dụ: Vẽ hình chữ nhật. GV: Trong chương trình VD_thutuc1 vẽ SGK được bao nhiêu hình chữ nhật? HS: Trả lời câu hỏi. GV: Cho biết kết quả của chương trình VD_thutuc2? HS: Trả lời câu hỏi. GV: So sánh các tham số của lời gọi thủ tục ve_hcn(5,10); và ve_hcn(a,b)? HS: Trả lời câu hỏi. GV: Hãy cho biết hai tham số x,y trong thủ tục Hoan_doi của chương trình - Xét ví dụ: Hoán đổi 2 số nguyên. VD_thambien1 và VD_thambien2 thuộc SGK loại nào? GV: Tham số nào có thể sẽ bị thay đổi giá trị sau khi thực hiện chương trình? HS: Trả lời câu hỏi. 3. Củng cố: Cấu trúc của thủ tục, tham biến, tham trị và sự khác nhau giữa tham biến và tham trị. 4. Bài tập về nhà: Xem trước phần 2 – Cách viết và sử dụng hàm..

<span class='text_page_counter'>(101)</span> Ngày soạn: 26-03-2017 Tiết PPCT: 43 Bài 18: VÍ DỤ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (Tiết 2) I. MỤC TIÊU 1. Kiến thức: - Biết được cấu trúc chung của hàm, vị trí của hàm trong chương trình chính. - Khai báo đúng biến toàn cục và biến cục bộ. 2. Kĩ năng: - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được 2 loại tham số hình thức trong đầu của thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Nêu sự giống và khác nhau giữa tham số biến và tham số trị? Trả lời: Tham trị Tham biến - Khi khai báo không - Khai báo phải có từ có từ khoá var. khoá Var. - Khi gọi thực hiện - Khi gọi thực hiện chương trình con, chương trình con, các các tham số hình tham số hình thức chỉ thức sẽ được thay thế được phép thay thế bằng các tham số các tham số thực sự thực sự là giá trị là biến. hoặc biến. - Giá trị của nó - Giá trị của nó có không bị thay đổi sau thể bị thay đổi sau khi thực hiện chương khi thực hiện chương trình con. trình con. 2. Kết nối HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Nêu cấu trúc của hàm và thủ tục? 2. Cách viết và sử dụng hàm: HS: Trả lời câu hỏi. a) Cấu trúc: GV: Cho biết sự giống và khác nhau giữa Function <Tên hàm>[(<DS tham hàm và thủ tục? số>)]:<kiểu dữ liệu>; HS: Phần đầu của hàm có kiểu giá trị trả [<Phần khai báo>] về, trong phần thân hàm phải có lệnh gán BEGIN biểu thức cho tên hàm. [<Danh sách các lệnh>]; GV: Kiểu giá trị trả về có thể là những <Tên hàm>:=<giá trị trả về>; kiểu dữ liệu nào? End; HS: Kiểu số nguyên, số thực, kiểu kí tự, kiểu chuổi, kiểu lôgic..

<span class='text_page_counter'>(102)</span> b) Ví dụ: GV: Trong chương trình ở ví dụ 1 có mấy - Xét ví dụ 1: SGK hàm? HS: Trả lời câu hỏi. GV: Hàm UCLN(x,y) dùng để làm gì? HS: Trả lời câu hỏi. GV: Nêu các thuật toán tìm UCLN đã được học ở lớp 10. HS: Trả lời câu hỏi. GV: Lời gọi hàm ở đâu? Có gì khác với thủ tục trong lời gọi hàm. HS: Trả lời câu hỏi. GV: Trong chương trình có bao nhiêu - Xét ví dụ 2: SGK hàm? Chức năng của hàm? HS: Trả lời câu hỏi. GV: Có bao nhiêu lời gọi hàm trong * Ghi chú: Lời gọi hàm phải được đặt trong chương trình chính. một lệnh hoặc một chương trình con khác. - Ví dụ 3: Viết chương trình nhập vào một dãy số nguyên dương, in ra màn hình các số nguyên tố (có sử dụng CT con Nguyento). GV: Gọi một học sinh lên bảng viết Program Vidu3; chương trình. Var i,k:byte; HS: Lên bảng viết chương trình. a:array[1..50] of word; Function Nguyento(n:Word):boolean; var i,slch:byte; BEGIN slch:=0; For i:=1 to n do if n mod i = 0 then slch:=slch+1; if slch=2 then nguyento:=true else nguyento:=false; end; BEGIN Write('Cho biet so luong so cua day:'); readln(k); For i:=1 to k do BEGIN Write('Nhap vao so thu ',i,':'); readln(a[i]); end; For i:=1 to k do if nguyento(a[i]) then write(a[i]:4); readln; END. 3. Củng cố: Cấu trúc của hàm, lời gọi hàm. 4. Bài tập về nhà: Xem trước bài tập và thực hành 6. Làm các bài tập sau:.

<span class='text_page_counter'>(103)</span> k Bài 1: Viết chương trình tính Cn (có sử dụng chương trình con tính LT và tính tổ hợp C). n. x. i. Bài 2: Viết chương trình tính tổng S= i 1 (có sử dụng CT con tính LuyThua). Bài 3: Viết chương trình nhập vào một dãy số nguyên A gồm N số. Sau đó in ra màn hình các số nguyên chẵn (có sử dụng 2 CT con la Nhap va Xuat)..

<span class='text_page_counter'>(104)</span> Ngày soạn: 29-03-2017 Tiết PPCT: 44 BÀI TẬP (Tiết 1) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện các thao tác viết và sử dụng chương trình con (hàm và thủ tục). 2. Kĩ năng: - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được 2 loại tham số hình thức trong đầu của thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Nêu cấu trúc của hàm và thủ tục? Trả lời: - Cấu trúc thủ tục: Procedure <Tên thủ tục>[(<DS tham số>)]; [<Phần khai báo>] BEGIN [<Dãy các lệnh>] End; - Cấu trúc của hàm: Function <Tên hàm>[(<DS tham số>)]:<kiểu dữ liệu>; [<Phần khai báo>] BEGIN [<Danh sách các lệnh>]; <Tên hàm>:=<giá trị trả về>; End; 2. Kết nối Hoạt động của GV và HS Nội dung + Hỏi bài cũ Em hãy nêu cấu trúc của chương trình GV: nêu câu hỏi con ở hai dạng hàm và thủ tục HS: Lên bảng trả lời câu hỏi GV: Nhận xét đánh giá và cho điểm. Bài 1: Viết chương trình bằng thủ tục kiểm tra xem ba số nguyên dương a, b, c có tạo thành tam giác không?. GV: Nêu nội dung tiết chữa bài tập Chương trình Program Tam_giac; Var a, b, c: Integer; Procedure KT(a,b,c:Integer); Begin.

<span class='text_page_counter'>(105)</span> GV: Hướng dẫn phương pháp và gọi HS lên bảng làm bài HS: Lên bảng làm bài. 3. Củng cố: Cấu trúc của hàm, lời gọi hàm. 4. Bài tập về nhà: - Mối liên kết giữa thủ tục và xâu ký tự - Cách tạo xâu bằng thủ tục. If(a>0)and(b>0)and(c>0)and(a+b>c) and(b+c>a)and(c+a>b) then Write(‘Tao thanh tam giac’) Else Write(‘Khong tao thanh tam giac’); End; Begin Write(‘Nhap 3 canh cua tam giac:=’); Readln(a,b,c); Write(‘3 canh’,KT(a,b,c)); Readln End..

<span class='text_page_counter'>(106)</span> Ngày soạn: 02-04-2017 Tiết PPCT: 45 BÀI TẬP (Tiết 2) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng các thao tác xử lí xâu. - Rèn luyện các thao tác viết và sử dụng chương trình con (hàm và thủ tục). 2. Kĩ năng: - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được 2 loại tham số hình thức trong đầu của thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Nêu cấu trúc của hàm và thủ tục? Trả lời: - Cấu trúc thủ tục: Procedure <Tên thủ tục>[(<DS tham số>)]; [<Phần khai báo>] BEGIN [<Dãy các lệnh>] End; - Cấu trúc của hàm: Function <Tên hàm>[(<DS tham số>)]:<kiểu dữ liệu>; [<Phần khai báo>] BEGIN [<Danh sách các lệnh>]; <Tên hàm>:=<giá trị trả về>; End; 2. Kết nối Hoạt động của GV và HS Nội dung GV: Tóm tắt bài toán và gọi HS lên bảng Bài 2: Viết CT bằng hàm tính diện tích làm bài tam giác khi biết độ dài chiều cao và cạnh đáy HS: Lên bảng làm bài Program Tam_giac; Var a,h:Integer; Function DT(a,h:Integer):Integer; Begin DT:=a*h/2; End; Begin.

<span class='text_page_counter'>(107)</span> GV: Tóm tắt bài toán và nêu phương pháp giải. GV: Gọi HS lên bảng làm bài. HS: Lên bảng làm bài. GV: Nhận xét và bổ sung nếu có sai sót.. 3. Củng cố: Cấu trúc của hàm, lời gọi hàm. 4. Bài tập về nhà:. Write(‘Nhap a,h:=’); Readln(a,h); Write(‘DT:=’,DT(a,h)); Readln End. Bài tập 3: Viết chương trình kiển tra một số nguyên dương a có phải là số nguyên tố hay không? Chương trình Program Nguyen_to; Var a: Integer; Procedure nt(a:integer); Var kt:Boolean; i:Integer; Begin Kt:=False; While(a mod i<>0) and (i<struc(sqrt(a)) do i:=i+1 If i>struc(sqrt(a)) then kt:=true; If kt then Write(‘a la so nguyen to’); End; Begin Write(‘nhap a:=’); Readln(a); nt(a); Readln End..

<span class='text_page_counter'>(108)</span> Ngày soạn: 05-04-2017 Tiết PPCT: 46 BÀI TẬP THỰC HÀNH 6 (Tiết 1) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng các thao tác xử lí xâu. - Rèn luyện các thao tác viết và sử dụng chương trình con (hàm và thủ tục). 2. Kĩ năng: - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được 2 loại tham số hình thức trong đầu của thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Nêu cấu trúc của hàm và thủ tục? Trả lời: - Cấu trúc thủ tục: Procedure <Tên thủ tục>[(<DS tham số>)]; [<Phần khai báo>] BEGIN [<Dãy các lệnh>] End; - Cấu trúc của hàm: Function <Tên hàm>[(<DS tham số>)]:<kiểu dữ liệu>; [<Phần khai báo>] BEGIN [<Danh sách các lệnh>]; <Tên hàm>:=<giá trị trả về>; End; 2. Kết nối Hoạt động của GV và HS Nội dung GV: Nêu nội dung của buổi thực hành Phân nhóm cho HS thực hành. GV: Hướng dẫn phương pháp cho HS. HS: Suy nghĩ và gõ chương trình trên máy tính.. GV: Hướng dẫn trực tiếp trên máy cho Hs. a. Viết CT nhập xâu S1 từ bàn phím. Sử dụng chương trình con bằng thủ tục tạo xâu S2 bằng chuyển ký tự đầu tiên S1 xuông ký tự đầu tiên của xâu. Vd: S1:=’abcd’ -> S2:=’bcda’ Chương trình Program xau; Var S1,S2:String; Procedure xaumoi(S1:String); Var S2: String; Begin S2:=Copy(S1,S2,Length(S1)-1)+S[1]; End;.

<span class='text_page_counter'>(109)</span> HS: Nghiêm túc thực hành. GV: Nêu nội dung bài thực hành 2 GV: Hướng dẫn Hs thực hành. 3. Củng cố: Cấu trúc của hàm, lời gọi hàm. 4. Bài tập về nhà: - Mối liên kết giữa thủ tục và xâu ký tự - Cách tạo xâu bằng thủ tục. Begin Write(‘nhap xau S1:=’); Readln(S1); Xaumoi(S1); End. b. Nhập xâu S có độ dài không quá 79 ký tự, bổ sung vào đầu xâu s một số dấu cách trống để khi đưa ra màn hình xâu ký tự S ban đầu được căn giữa dòng(80 ký tự). Chương trình Program bt2; Var S: String; Procedure xau(S:tring); Var i,n:Integer; Begin N:=length(S); n:=(80-n) div 2; For i:=1 to n do S:=’ ‘+S; End; Begin Write(‘Nhap xau S:=’); Readln(S); Xau(S); Readln End..

<span class='text_page_counter'>(110)</span>

<span class='text_page_counter'>(111)</span> Ngày soạn: 10-04-2017 Tiết PPCT: 47 BÀI TẬP THỰC HÀNH 6 (Tiết 2) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng các thao tác xử lí xâu. - Rèn luyện các thao tác viết và sử dụng chương trình con (hàm và thủ tục). 2. Kĩ năng: - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được 2 loại tham số hình thức trong đầu của thủ tục. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Kết hợp trong bài mới 2. Kết nối Hoạt động của GV và HS Nội dung GV: Giới thiệu nội dung của tiết thực hành GV: Phân nhóm thực hành. Viết chương trình nhập một xâu ký tự từ bàn phím. In và đưa xâu đó ra màn hình có dạng chữ chạy giữa màn hình văn bản GV: Hướng dẫn HS gõ chương trình vào 25x80 máy Chương trình: HS: Gõ chương trình vào máy. Program chu_chay; Var S1, S2: String; Stop:Boolean; Begin Procedure cat_dan((S1: String); Var S2: string; Begin S2:=Copy(S1,S2,Length(S1)-1)+S1[1]; End; Procedure can_giua(S: string); Var i,n:Integer; Begin n:=length(S); n:=(80-n) div 2; S:=’ ‘+S; End; Begin Write(‘nhap xau S1:=’); Readln(S1); Stop:=False; HS: Chạy chương trình While not Stop do GV: Kiểm tra chương trình và sửa lỗi nếu có Begin Goto(1,12); Write(S1); Delay(500);.

<span class='text_page_counter'>(112)</span> Cat_dan(S1,S2); S1:=S2; Stop:=Keypressed; End; Readln End.. 3. Củng cố: Cấu trúc của thủ tục, lời gọi thủ tục. 4. Bài tập về nhà: - Phương pháp viết chương trình bằng thủ tục - Cách chạy chương trình bằng thủ tục.

<span class='text_page_counter'>(113)</span> Ngày soạn: 20-04-2017 Tiết PPCT: 48 BÀI TẬP (Tiết 1) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng các thao tác mảng và xử lí xâu. 2. Kĩ năng: - Nhận biết và bước đầu sử dụng được một số hàm và thủ tục để giải quyết một số bài toán đơn giản liên quan 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Câu hỏi: Nêu cú pháp khai báo biến kiểu mảng một chiều (bằng cả 2 cách)? Trả lời: - Kiểu dữ liệu có cấu trúc là kiểu dữ liệu do người lập trình xây dựng dựa trên các kiểu dữ liệu đã có. - Mảng 1 chiều là một dãy hữu hạn các phần tử có cùng kiểu dữ liệu, số phần tử của mảng được xác định khi khai báo. - Cú pháp khai báo biến mảng một chiều: + Cách 1: Khai báo trực tiếp mảng một chiều: Var <Tên biến mảng>:array[kiểu chỉ số] of <kiểu PT>; + Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type <tên kiểu mảng>= array[kiểu chỉ số] of <Kiểu PT>; Var <Tên biến mảng>:<tên kiểu mảng>; 2. Kết nối Hoạt động của GV và HS Nội dung GV: Khái quát lại chương mảng Bài 1: Viết chương trình nhập từ bàn phím bằng các bài tập tổng quát dãy số nguyên a1 , a2 ,. . .. .. . .. .. , an . Tìm giá trị lớn nhất của dãy số. Chương trình HS: Lên bảng làm bài Program max; Var A: Array[1..100] of integer; max, i, n:Integer; Begin Wrtie(‘nhap so luong phan tu mang n:=’); Readln(n); For i:=1 to n do Begin Write(‘phan tu thu’,i,’:=’); Readln(A[i]); End; Max:=A[1];.

<span class='text_page_counter'>(114)</span> For i:=2 to n do If A[i]>Max then Max:=A[i]; Write(‘Max la :=’,Max); Readln End. GV: Em hãy nêu quy tắc khai báo và các thao tác xử lý xâu. HS: Lên bảng làm bài. 2. Kiểu xâu Bài tập: Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm từ ‘anh’ bằng cụm ký tự ‘em’ Chương trình Program xau; Var a, s: String; I,k: byte; Begin Write(‘Nhap xau a:=’); Readln(a); While pos(‘anh’,a)<>0 do Begin I:=pos(‘anh’,a); Delete(a,i,3); Insert(‘em’,a,i); End; For k:=1 to length(a) do Write(a); Readln End.. 3. Củng cố: Cấu trúc mảng và xâu. 4. Bài tập về nhà: Về nhà xem lại các bài tập liên quan đến tệp để tiết sau làm bài tập..

<span class='text_page_counter'>(115)</span> Ngày soạn: 26-04-2017 Tiết PPCT: 49 BÀI TẬP (Tiết 2) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng các thao tác xử lí tệp. 2. Kĩ năng: - Thực hiện được thao tác xử lí tệp: Gán tên tệp, mở/đóng tệp, đọc/ghi tệp - Sử dụng được các thủ tục để đọc/ghi dữ liệu của tệp. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: Kết hợp trong bài mới 2. Kết nối Hoạt động của GV và HS Nội dung GV: Em hãy nêu quy tắc khai báo và các 1. Khai báo Var<Tên biến tệp>: Text; thao tác với tệp? 2. thao tác HS: Trả lời câu hỏi - Gán tên tệp Assign(<Biến tệp>,<Tên tệp>); - Mở tệp + Mở tệp để ghi dữ liệu Rewrite(<Biến tệp>); + Mở tệp để lấy dữ liệu Reset(<Biến tệp>); - Đọc ghi tệp văn bản + Đọc tệp văn bản - Read(<Biến tệp>,<Danh sáchbiến>); - Readln(<Biến tệp>,<Danh sáchbiến>); + Ghi tệp văn bản - Write(<Biến tệp>,<Danh sáchbiến>); - Write(<Biến tệp>,<Danh sáchbiến>); GV: Giới thiệu bài tập để HS về tệp cho - Đóng tệp HS thực hiện Close(<Biến tệp>); Bài 1 Viết chương trình đọc vào tệp F1 gồm dãy số nguyên a1 , a2 ,. . .. .. . .. .. , an từ HS: Trả lời câu hỏi bàn phím. Tính tổng và đưa tổng vào tệp F2;.

<span class='text_page_counter'>(116)</span> Chương trình Program Tep; Var A: Array[1..100] of Integer; f1,f2:Text; I, n: Integer; Begin Write(‘Nhap so luong phan tu mang n:=’); Readln(n); For i:=1 to n do Begin Write(‘A’,i,’:=’); Readln(A[i]); End; Assign(f1,’Tep1.txt’); Rewrite(f1); For i:=1 to n do Write(f1,A[i]); Reset(f1); For i:=1 to n do While not eof(f) do Begin Read(f1,A[i]); S:=0; For i:=1 to n do S:=S+A[i]; Rewrite(f2); Write(f2,S); Close(f1); Close(f2); Readln End. 3. Củng cố: Cấu trúc tệp, các thao tác làm việc với tệp. 4. Bài tập về nhà: Về nhà ôn lại tất cả nội dung về mảng, xâu, tệp để tiết sau ôn tập học kỳ II.

<span class='text_page_counter'>(117)</span> Ngày soạn: 02-05-2017 Tiết PPCT: 50 ÔN TẬP HỌC KỲ II (Tiết 1) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng toàn bộ kiến thức đã được học từ học kì 2 2. Kĩ năng: - Vận dụng được các lệnh và kiểu dữ liệu được học để lập trình giải các bài toán một cách trọn vẹn. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: kết hợp trong bài mới 2. Kết nối Hoạt động của GV và HS Nội dung Giáo viên nêu bài toán Bài toán 1: Viết chương trình tạo mảng A Hs ghi bài gồm N (n ≤ 100) số nguyên, in ra màn hình Gv: xác định Input, Output của bài các số nguyên lẻ. toán? Program Bt1; Hs: trả lời câu hỏi Uses crt; Gv: nêu cú pháp khai báo mảng 1 Var A: array[1..10] of byte; chiều? i, n: byte; Hs: trả lời câu hỏi BEGIN Gv yêu cầu hs khai báo mảng A Write(‘Moi nhap so phan tu cua mang:’); gồm N (n ≤ 100) số nguyên readln(n); Gv gọi 1 hs lên bảng khai báo for i:=1 to n do Hs lên bảng khai báo mảng A BEGIN Gv: Phép toán kiểm tra tính lẻ của write(‘A[‘,i,’]=’); readln(A[i]); 1 số? end; Hs: trả lời câu hỏi for i:=1 to n do Gv yêu cầu 1 hs lên bảng viết if A[i] mod 2 = 1 then write(A[i]:3); chương trình. readln; Hs lên bảng viết chương trình End. Bài toán 2: (bài 8_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 Gv yêu cầu hs khác nhận xét quá 100. Cho biết có bao nhiêu chữ số xuất Gv sửa bài, đánh giá và cho điểm. hiện trong xâu. Đưa kết quả ra màn hình. Program Baitoan1; Gv nêu bài toán Var S: string[100]; Hs ghi bài i, dem: byte; BEGIN Gv: xác định Input, Output của bài write(‘ nhap xau ki tu dai khong qua 100’);.

<span class='text_page_counter'>(118)</span> toán? readln(S); Hs: trả lời câu hỏi dem:=0; Gv: tính giá trị trung bình của n for i:=1 to length(S) do phần tử? if (‘0’ <= S[i]) and (S[i] <= ‘9’) then Hs: trả lời câu hỏi dem:=dem + 1; Gv yêu cầu 1 hs lên bảng viết writeln(‘trong xau S co’, dem, ‘chu so’); chương trình. readln; Hs lên bảng viết chương trình end.. Gv yêu cầu hs khác nhận xét Gv sửa bài, đánh giá và cho điểm. 3. Củng cố: Cấu trúc mảng và xâu. 4. Bài tập về nhà: Về nhà xem lại các bài tập liên quan đến tệp để tiết sau ôn tập học kỳ 2..

<span class='text_page_counter'>(119)</span> Ngày soạn: 04-05-2017 Tiết PPCT: 51 ÔN TẬP HỌC KỲ II (Tiết 2) I. MỤC TIÊU 1. Kiến thức: - Rèn luyện kỹ năng toàn bộ kiến thức đã được học từ học kì 2 2. Kĩ năng: - Vận dụng được các lệnh và kiểu dữ liệu được học để lập trình giải các bài toán một cách trọn vẹn. 3. Thái độ - Ham thích môn học, có tính kỷ luật cao. II. PHƯƠNG TIỆN - Giáo viên: Giáo án, sách giáo khoa, bảng, phấn, tài liệu,... - Học sinh: Vở ghi, sách giáo khoa tin học 11, bút, ... III. TIẾN TRÌNH TIẾT DẠY 1. Kiểm tra bài cũ: 2. Kết nối Hoạt động của GV và HS Nội dung GV: Công thức tính diện tích hình Bài tập 1: Lập hàm tính diện tích hình thang. thang là gi? Nhập Dl của 2 thửa ruộng hình thang và tính tổng diện tích. -HS. S=(a+b)*h/2 Program hinh_thang; Var a1, b1, h1, a2, b2, h2, s: Real; Function Hthang(a,b,h:real): real; GV Bài toán này cần khai báo Begin những biến nào Hthang:=(a+b)*h/2; End; -HS. A1, b1, h1, a2,b2,h2,s:real Begin -GV cùng HS xây dựng Control Write(‘ Nhap hinh thang1:’); panel Readln(a1,b1,h1); Write(‘Nhap hinh thang 2:’); Readln(a2,b,2,h2); S:=Hthang(a1,b1,h1) + Hthang(a2,b2,h2); Write(‘s=’,s;8:2); Readln; End. . Bài 2: Lập chương trình viết PT đường thẳng GV: Bài toán này có thể chia thành là 3 cạnh của tam giác. Khi nhập vào từ bàn những bài toán con nào? phím toạ độ 3 đỉnh. Program PT; -HS. Tìm a Var x1,y1,x2,y2,x3,y3: real; Function HS(h1,t1,h2,t2:Real):Real;.

<span class='text_page_counter'>(120)</span> Tìm b Thông báo PT đường thẳng -GV. Lưu ý b>0 thì viết: ‘+’ b b<0 thi không viết gì cả. GV: Khi A(h1,t1) và B(h2,t2) thì a=?, b=? -HS. A:=(t2-t1)/(h2-h1) B:=t1- a*h1 GV. Trong bài toán này ta sử dụng 3 CTC: CTC tìm a, CTC tìm b, 1 CTC thông qua PT đường thẳng. Begin HS:=(t2-t1)/(h2-h1); End; Function TD(h1,t1,h2,t2:Real):Real; Begin TD:=t1-HS(h1,t1,h2,t2)*h1; End; Procedure PT(h1,t1,h2,t2:Real); Begin Write(‘Pt duong thang di qua 2 diem:’); Write(‘y=’,HS(h1,t1,h2,t2):8:2,’*x’); If TD(h1,t1,h2,t2)>0 then Writeln(‘+’,TD(h1,t1,h2,t2):8:2) Else writeln(TD(h1,t1,h2,t2:8:2)); End; Begin Wtire(‘Nhap toa do 3 dinh:’); Readln(x1,y1,x2,y2,x3,y3); PT(x1,y1,x2,y2); PT(x1,y1,x3,y3); PT(x2,y2,x3,y3); Readln; End.. 3. Củng cố: Cấu trúc về chương trình con. 4. Bài tập về nhà: Về nhà xem lại các nội dung đã học để tiết sau Kiểm tra học kỳ 2.

<span class='text_page_counter'>(121)</span> Ngày soạn: 07-05-2017 Tiết 52: KIỂM TRA HỌC KỲ II I. MỤC TIÊU: Đánh giá lại khả năng tiếp thu kiến thức của học snh. II. MA TRẬN ĐỀ III. ĐỀ RA IV. ĐÁP ÁN.

<span class='text_page_counter'>(122)</span> TẬP CUỐI NĂM. I. MỤC TIU: 1/ Kiến thức: Nắm được toàn bộ kiến thức đ được học từ học kì 2 2/ Kĩ năng: Vận dụng được các lệnh và kiểu dữ liệu đ học để lập trình giải cc bi tốn một cch trọn vẹn II. ĐỒ DÙNG DẠY HỌC: III. HOẠT ĐỘNG DẠY – HỌC: 1/ Nhắc lại kiến thức đ được học: a) Mục tiu: HS nắm chắc tất cả cc kiến thức lí thuyết cơ bản đ được học từ học kì 2 b) Các bước tiến hành: Hoạt động của giáo viên Hoạt động của học sinh 1. Đặc câu hỏi để giúp HS nhớ lại kiến 1. Theo di cc cu hỏi của gio vin v suy nghĩ thức đ được học trả lời - Cách khai báo kiểu mảng, khai báo + Đối với mảng một chiều biến kiểu mảng và tham chiếu đến từng Type tnkiểu=Array[chỉ số] of kiểu_phần_tử; phần tử của mảng Var tnbiến:tnkiểu; Tnbiến[chỉ số] + Đối với mảng hai chiều Type tnkiểu=Array[chỉ số dịng, chỉ số cột] of kiểu_phần_tử; Var tnbiến:tnkiểu; Tnbiến[chỉ số dịng, chỉ số cột] - Var tnbiến:String; - Cách khai báo biến xâu, tham chiếu đến Tnbiếnxu[chỉ số] từng kí tự của xâu, các hàm và thủ tục Hm length(st), upcase(ch), copy(st,vt,n), liên quan đến xâu pos(s1,s2) Thủ tục Delete(st,vt,n), insert(st1,st2,vt) - Type tn_kiểu_bản_ghi = Record - Cách tạo kiểu bản ghi, khai báo biến Tên trường 1: kiểu dữ liệu 1; kiểu bản ghi và cách tham chiếu đến … từng phàn tử của biến bản ghi Tên trường n: kiểu dữ liệu n; End; Var tn_biến_bản_ghi:tn_kiểu_bản_ghi; Tên_biến_bản_ghi.tên_trường 2/ Rèn luyện kĩ năng viết chương trình: a) Mục tiu: HS sử dụng được kiến thức tổng hợp để giải quyết được một bài toán đặt ra b) Nội dung: Viết chương trình nhập vo một dy số gồm N phần tử nguyn dương. In ra mn hình ước số chung lớn nhất của dy số đó c) Các bước tiến hành: Hoạt động của giáo viên Hoạt động của học sinh 1. Giới thiệu nội dung đề bài lên bảng. 1. Quan sát nội dung đề bài và suy nghĩ Định hướng phương pháp giải quyết phương pháp giải theo định hướng phân.

<span class='text_page_counter'>(123)</span> - Cc nhiệm vụ phải thực hiện: nhập một dy tích của GV số. Tìm ước số chung lớn nhất của hai số, tìm ước số chung lớn nhất của n số và in kết quả ra màn hình 2. Chia lớp lm 3 nhĩm 2. Thảo luận theo nhóm, viết chương trình Nhóm 1: viết chương trình con nhập gi trị cho một mảng - Thơng bo kết quả cho GV khi hồn thnh Nhóm 2: viết chương trình con tìm ước số chung lớn nhất của 2 số Nhóm 3: viết chương trình chính khi có chương trình con nhập mảng v tìm ước số chung lớn nhất của hai số - Gọi đại diện các nhóm lên bảng viết - Nhận xét, đánh giá và bổ sung những chương trình. Gọi HS cc nhĩm nhận xt thiếu sĩt của cc nhĩm khc đánh giá lẫn nhau - Thảo luận để ghép chương trình - Yêu cầu HS ghép các chương trình con để được chương trình chính - Quan sát để thấy kết quả của bài tập - Thực hiện chương trình để toàn lớp thấy kết quả IV. ĐÁNH GIÁ CUỐI BÀI: 1/ Những nội dung đ học: 2/ Cu hỏi v bi tập về nh: Chuẩn bị kiến thức cho tiết sau kiểm tra cuối năm: xem lại toàn bộ các kiến thức đ được ôn tập.

<span class='text_page_counter'>(124)</span> Tiết: 53. KIỂM TRA HỌC KÌ II. I. MỤC TIÊU CẦN ĐÁNH GIÁ: - Kiểm tra kết quả tiếp thu của HS trong năm học - Đánh giá kĩ năng phân tích một bài toán và tư duy lập trình trn giấy - Có thái độ tích cực, tự giác trong làm bài kiểm tra II. MỤC ĐÍCH YÊU CẦU CỦA ĐỀ: 1/ Kiến thức: HS nắm được các kiến thức về kiểu mảng, kiểu xâu và kiểu bản ghi 2/ Kĩ năng: có kĩ năng phân tích bài toán, viết chương trình III. NỘI DUNG ĐỀ BÀI VÀ ĐÁP ÁN: I. Phần trắc nghiệm (3đ): Câu 1: Khai báo nào sau đy hợp lệ? a. Var a: array[1..10] of Real; b. Var a=array[1..10] of Real; c. Var a:array[1:10] of Real; d. Var a:rray[1,10] of Real; Câu 2: Để khai báo biến mảng a gồm 5 hàng 6 cột: a. Var a:array[1..6,1..5] of byte; b. Var a:array[1..5,1..6] of byte; c. Var a=array[1..6,1..5] of byte; d. Var a=array[1..5,1..6] of byte; Câu 3: Để tham chiếu đến phần tử hàng 3 cột 4 của biến mảng b, ta viết: a. b[4,3] b. b[3,4] c. array[3,4] d. array[4,3] Cu 4: Viết khai bo var a: array[1..5]of read; cĩ nghĩa l a. Khai bo biến mảng a l biến mảng một chiều b. Khai bo biến mảng a l biến mảng hai chiều c. Khai bo biến a l biến kiểu số thực d. Cu lệnh sai Câu 5: Khai báo nào sau đây chưa hợp lệ? a. var a: string; b. var a: string[25]; c. var a: strinh; d. var a: string[255];.

<span class='text_page_counter'>(125)</span> Cu 6: Cho n l biến nguyn, lệnh n:=length(‘Tin_hoc’); write(n); kết qủa in ra mn hình l: a. 6 b. 7 c. 8 d. 9 Câu 7. Cho t:=’Tin_hoc’; để có kết qủa là xâu ‘Tin’ ta thực hiện: a. Delete(t,1,3); b. Delete(t,3,1); c. Delete(t,4,4); d. Delete(t,4,3); Cu 8: Cho s1:=’tin’; s2:=’hoc’; Lệnh insert(s1,s2,4); cho kết qủa l: a. hoctin b. tinhoc c. hoc tin d. tin hoc Câu 9. Dữ liệu kiểu…….dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thụôc tính có thể có các kiểu dữ liệu khác nhau. a. Kiểu mảng b. Kiểu xu c. Kiểu bản ghi d. Kiểu số nguyn Cu 10. Để tham chiếu đến trường X của bản ghi A ta viết: a. A.X b. X.A c. A:X d. X:A II. Phần tự luận (7đ): Cu 1: Viết chương trình nhập vo một mảng gồm n phần tử, tìm phần tử cĩ gi trị nhỏ nhất của mảng. Đưa ra màn hình chỉ số v gi trị của phần tử tìm được Cu 2: Viết chương trình nhập từ bn phím xu kí tự S cĩ độ dài không quá 150. cho biết có bao nhiêu chữ số xuất hiện trong xâu S. thông báo kết quả ra màn hình ĐÁP ÁN VÀ BIỂU ĐIỂM I. Phần trắc nghiệm (3đ): 1. a 2. b 3. b 4. d 6. b 7. c 8. a 9. c II. Phần tự luận (7đ): Câu 1: (4đ) Program gtri_nhonhat; Uses Crt; Var A:array[1..100] of Integer; N,I,j:integer; BEGIN Clrscr; Write(‘nhap so luong phan tu cua day so, n= ’); Readln(n); For i:=1 to n do BEGIN Write(‘Phan tu thu ‘,I,’ =’); Readln(A[i]); End; J:=1; For i:=2 to n do if A[i] < A[j] then j:=I; Write(‘Chi so: ‘,j,’ gia tri nho nhat la: ‘,A[j]:5); Readln;. 5. c 10. a.

<span class='text_page_counter'>(126)</span> End. Câu 2: (3đ) Program xau_ktu; Uses Crt; Var S:string[100]; I,dem:byte; BEGIN Clrscr; Writeln(‘nhap xau ki tu bat ki:’); Readln(S) ; Dem :=0 ; For i :=1 to length(S) do If (‘0’ <= S[i]) and (S[i] <= ‘9’) then dem:=dem + 1; Writeln(‘Trong xau S co ‘,dem,’ chu so.’); Readln; End..

<span class='text_page_counter'>(127)</span> Tuần: 21, tiết: 31. Ngày soạn: 20/11/2010. day:22/11/2010. Đề bài dạy:. Ngày KIỂU MẢNG (Tiết 4). I. Mục đích yêu cầu: Kiến thức: - Biết được một kiểu dữ liệu mới là kiểu mảng hai chiều. - Biết được cách tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến từng phần tử trong mảng. Kĩ năng: Tạo được kiểu mảng hai chiều và khai báo biến mảng hai chiều trong ngôn ngữ lập trình pascal. Sử dụng đúng biến mảng để giải quyết các bài toán cụ thể. II. Chuẩn bị của thầy và trò: Thầy: SGK + Giáo án. Trò: SGK + xem trước bài học ở nhà. III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Kiểm tra bài cũ: Câu hỏi: Cho mảng A gồm N phần tử. Viết đoạn chương trình để nhập và xuất các giá trị cho mảng? Trả lời: + Đoạn chương trình nhập giá trị cho mảng A: For i:=1 to N do BEGIN Write(‘Nhap vao phan tu thu’,i,’:’); Readln(a[i]); End; + Đoạn chương trình xuất các giá trị của mảng A ra màn hình: For i:= 1 to N do Write(a[i],‘ ’); 3. Vào bài mới: HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG III. Kiểu mảng hai chiều: GV: Có mấy cách khai báo biến mảng hai 1. Khai báo: chiều? Nêu các cách? - Cách 1: Khai báo trực tiếp: HS: Dựa vào SGK trả lời câu hỏi. Var <Tên biến mảng>:array[kiểu chỉ số hàng,kiểu chỉ 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[kiểu chỉ số hàng, kiểu chỉ số cột] of <Kiểu phần tử>; Var <Tên biến mảng>:<Tên kiểu mảng>; GV: Gọi một học sinh lên bảng khai báo Ví dụ: Khai báo một mảng B gồm 9 hàng và một mảng B gồm 9 hàng và 10 cột, có 10 cột, có kiểu phần tử integer. kiểu phần tử integer. Cách 1: Var B:array[1..9,1..10] of integer; HS: Lên bảng viết khai báo. Cách 2: Type Mnguyen=array[1..9,1..10] of GV: Cho biết mảng B gồm bao nhiêu integer; phần tử? Var B:Mnguyen; HS: Trả lời câu hỏi. 2. Cách tham chiếu đến phần tử của GV: Nêu có pháp tham chiếu đến phần tử mảng: mảng 2 chiều? Tên biến mảng[chỉ số hàng, chỉ số.

<span class='text_page_counter'>(128)</span> HS: Trả lời câu hỏi. GV: Nêu cú pháp khai báo nhập/xuất các phần tử của mảng? HS: Trả lời câu hỏi.. GV: Viết đoạn chương trình thực hiện việc nhập giá trị cho mảng B? HS: Lên bảng viết chương trình.. GV: Viết đoạn chương trình thực hiện việc xuất giá trị cho mảng B? HS: Lên bảng viết chương trình. GV: Cho biết input và output của bài toán? HS: Trả lời câu hỏi. GV: Dựa vào bảng nhân hãy cho biết các chỉ số hàng và chỉ số cột của các phần tử trong bảng? HS: Trả lời câu hỏi. GV: Hãy cho biết giá trị của các phần tử sau b[5,6], b[8, 9]? HS: Trả lời câu hỏi. GV: Hãy xác định công thức tính giá trị của các phần tử? HS: Trả lời câu hỏi. GV: Khai báo một mảng B gồm 9 hàng và 10 cột có kiểu phần tử integer? HS: Lên bảng viết khai báo.. cột] Ví dụ: b[4,5] là phần tử ở vị trí hàng 4 và cột 5 của mảng B. b[i,j] là phần tử ở vị trí hàng i và cột j của mảng B. 3. Cách nhập/xuất các phần tử của mảng: - Cú pháp: + Nhập: For i:=1 to <số hàng> do For j:=1 to <số cột> do BEGIN <Nhập từng phần tử>; End; + Xuất: For i:=1 to <số hàng> do BEGIN For j:=1 to <số cột> do <xuất từng phần tử>; Writeln; End; - Ví dụ: + Nhập các phần tử cho mảng B: For i:=1 to 9 do For j:=1 to 10 do BEGIN Write(‘Nhap PT a[’,i,’,’,j,’]’); Readln(a[i,j]; End; + Xuất các phần tử cho mảng B: For i:=1 to 9 do BEGIN For j:=1 to 10 do Write(b[i,j]; Writeln; End; Ví dụ 1: Chương trình tính và đưa ra màn hình bảng nhân. Program Vidu1; uses crt; Var B:array[1..9,1..10] of integer; i,j:byte; BEGIN clrscr; {Tinh gia tri cho mang nhan B} For i:= 1 to 9 do For j:=1 to 10 do.

<span class='text_page_counter'>(129)</span> GV: Viết đoạn chương trình tính giá trị của các phần tử của mảng B? HS: Lên bảng viết đoạn chương trình.. b[i,j]:=i*j; {In cac gia tri cua mang ra MH} For i:=1 to 9 do BEGIN GV: Viết đoạn chương trình in các giá trị For j:=1 to 10 do Write(b[i,j]:5); của mảng B (dưới dạng bảng nhân). Writeln; HS: Lên bảng viết đoạn chương trình. end; readln; END. 4. Củng cố: Viết chương trình nhập vào một mảng gồm 9 hàng và 10 cột, sau đó in các giá trị đó ra màn hình. Dặn dò: Làm bài tập 8, 9 SGK/79, 80..

<span class='text_page_counter'>(130)</span> Tuần 23 tiết . Ngày soạn: 19/12/2010. 20/12/2010. Đề bài dạy:. Ngày dạy: ÔN TẬP KIỂM TRA HỌC KỲ I. I. Mục đích yêu cầu: - Ôn tập lại kiến thức đã học ở học kỳ I. - Vận dụng các kiến thức đã học để viếc các chương trình giải các bài toán đơn giản. II. Chuẩn bị của thầy và trò: Thầy: Giáo án+ đề cương và đáp án. Trò: Vở ghi + đề cương ôn tập. III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Vào bài: Phương pháp GV: Đọc câu hỏi trắc nghiệm và yêu cầu học sinh trả lời. HS: Trả lời câu hỏi. GV: Sửa lại các đáp án sai (nếu có). GV: Viết chương trình giải phương trình bậc nhất: ax+b=0. HS: Lên bảng viết chương trình. GV: Nhận xét và sửa lại chương trình nếu sai.. GV: Viết chương trình nhập giải phương trình bậc hai: ax2+bx+c=0. HS: Lên bảng viết chương trình. GV: Nhận xét và sửa lại chương trình nếu sai.. Nội dung I. Phần các câu hỏi trắc nghiệm: Đề cương ôn tập tin 11 II. Các bài tập tự luận: Program De001; Uses Crt; Var a,b:real; BEGIN Clrscr; Write('Nhap he so a, b:'); Readln(a,b); if a<>0 then write('Phuong trinh co nghiem la x=',-b/a:6:2) Else if b<>0 then Write('Phuong trinh vo nghiem') Else Write('Phuong trinh vo so nghiem'); Readln; END. Program De002; Uses Crt; Var a,b,c,delta,x1,x2:real; BEGIN Clrscr; Write('Nhap vao he so a,b,c:'); Readln(a,b,c); Delta:=b*b-4*a*c; if Delta<0 then write('Phuong trinh vo.

<span class='text_page_counter'>(131)</span> GV: Viết chương trình nhập vào từ bàn phím một số nguyên dương N. In ra màn hình các số nguyên chẵn nằm trong đoạn [1,N]. HS: Lên bảng viết chương trình. GV: Nhận xét và sửa lại chương trình nếu sai.. GV: Viết chương trình nhập vào từ bàn phím một số nguyên dương N. Tính tổng các số lẽ trong đoạn [1,N] và in kết quả ra màn hình. HS: Lên bảng viết chương trình. GV: Nhận xét và sửa lại chương trình nếu sai.. GV: Viết chương trình nhập vào hai số nguyên dương M, N (M<N). Tính tổng các số nguyên trên đoạn [M,N] và in kết quả ra màn hình. HS: Lên bảng viết chương trình. GV: Nhận xét và sửa lại chương trình nếu sai.. nghiem') Else if Delta=0 then Write('Phuong trinh co nghiem kep x1=x2=',-b/a:6:1) Else BEGIN x1:=(-b-sqrt(delta))/(2*a); x2:=(-b+sqrt(delta))/(2*a); Writeln('Phuong trinh co 2 nghiem:'); Writeln('x1=',x1:6:1); Writeln('x2=',x2:6:1); end; Readln; END. Program De003; Uses Crt; var i,N:integer; BEGIN Clrscr; Write('Nhap vao mot so nguyen duong N:'); Readln(N); Write('Cac so nguyen chan tren doan [1',',',N,'] la:'); For i:=1 to N do if i mod 2 =0 then Write(i:4); Readln; END. Program De004; Uses Crt; Var i,n,s:integer; BEGIN Clrscr; Write('Nhap N='); readln(N); For i:=1 to N do if i mod 2=0 then S:=S+i; Write('Tong cac so chan=',S); Readln; END. Program De005; Uses Crt; Var M,N,i:integer; S:longint; BEGIN Clrscr; Write('Nhap vao 2 so nguyen M,N.

<span class='text_page_counter'>(132)</span> (M<N):'); Readln(M,N); S:=0; For i:=M To N do S:=S+i; Write('Tong cac so tren doan [',M,',',N,'] la:',s); Readln; END. 3. Củng cố: Các kiến thức đã học. Dặn dò và bài tập về nhà: Xem lại các câu hỏi trace nghiệm và bài tập đã giải + lam tiếp các bài tập còn lại trong đề cương để chuan bị cho tiết kiểm tra học kỳ..

<span class='text_page_counter'>(133)</span> Tuần 22 tiết 30. Ngày soạn: 09/01/2011. 10/01/2011. Đề bài dạy:. Ngày dạy: KIỂU BẢN GHI. I. Mục đích yêu cầu: Kiến thức: - Biết được khái niệm về kiểu bản ghi. - Phân biệt được sự giống và khác nhau giữa kiểu bản ghi với kiểu mảng một chiều. Kĩ năng: Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi trong ngôn ngữ lập trình Pascal. Nhập xuất được dữ liệu cho biến bản ghi. Tham chiếu đến tứng trường trong biến bản ghi. Sử dụng kiểu bản ghi để giải quyết một số bài tập đơn giản. II. Chuẩn bị của thầy và trò: Thầy: SGK + Giáo án. Trò: SGK + xem trước bài học ở nhà. III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Vào bài mới: HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV: Để quản lí học sinh, hãy cho biết một học sinh thường có những thông tin nào? HS: Dựa vào SGK trả lời câu hỏi. - Dữ liệu kiểu bản ghi dùng để mô tả các đối GV: Mỗi học sinh được gọi là một bản tượng có cùng một số thuộc tính mà các ghi, các thông tin của học sinh đó được thuộc tính có thể có kiểu dữ liệu khác nhau. gọi là các trường. Hãy xác định kiểu dữ - Mỗi thông tin của một đối tượng được gọi là liệu tương ứng của các trường đó? một trường. Mỗi đối tượng được mô tả bằng HS: Trả lời câu hỏi. nhiều thông tin được gọi là một bản ghi. GV: Nêu cú pháp định nghĩa kiểu bản ghi. HS: Dựa vào SGK trả lời câu hỏi.. GV: Nêu cú pháp khai báo biến bản. 1. Khai báo: - Định nghĩa kiểu bản ghi: Type <Tên kiểu bản ghi>=Record <Tên trường 1>:<Kiểu trường 1>; <Tên trường 2>:<Kiểu trường 2>; ..................................................... . <Tên trường n>:<Kiểu trường n>; End;.

<span class='text_page_counter'>(134)</span> ghi? HS: Dựa vào SGK trả lời câu hỏi. GV: Cho ví dụ và yêu cầu một học sinh lên bảng viết định nghĩa kiểu, khai báo biến bản ghi. HS: Lên bảng viết khai báo.. - Khai báo biến bản ghi: Var <Tên biến bản ghi>:<Tên kiểu bản ghi>; Ví dụ: Định nghĩa một kiểu bản ghi có tên là hocsinh gồm các thông tin: họ tên, ngày sinh, điểm TB và khai báo 2 biến bản ghi A, B thuộc kiểu bản ghi hocsinh. Type hocsinh=record Hoten:string[30]; Ngaysinh:String[10]; Dtb:real; End; Var A, B:hocsinh; GV: Nêu cú pháp tham chiếu đến các Lop:array[1..50] of hocsinh; trường của bản ghi? HS: Dựa vào SGK trả lời câu hỏi. 2. Tham chiếu đến trường của bản ghi: - Cú pháp: <Tên biến bản ghi>.<Tên trường>; - Ví dụ: - Để tham chiếu đến hoten và DTB của học sinh A: A.hoten và A.Dtb - Để tham chiếu đến hoten, DTB của học sinh thứ 5 trong mảng lop: lop[5].hoten; GV: Có mấy cách để gán giá trị cho lop[5].dtb; biến bản ghi? Những cách nào? HS: Dựa vào SGK trả lời câu hỏi. 3. Gán giá trị: GV: Hai biến bản ghi phải thoả mãn điều kiện gì thì mới gán giá trị được cho nhau? - Dùng lệnh gán trực tiếp: 2 biến bản ghi có HS: Dựa vào SGK trả lời câu hỏi. cùng kiểu thì ta có thể gán giá trị của nó cho nhau. Ví dụ: A:=B; Lop[1]:=lop[3]; GV: Cho ví dụ ghán giá trị cho trường - Gán giá trị cho từng trường: Có thể thực thuộc biến bản ghi A gồm 2 trường hiện bằng lệnh gán hoặc nhập từ bàn phím. hoten và Dtb. Ví dụ: Gán giá trị cho các trường thuộc biến HS: Lên bảng viết cấu lệnh gán giá trị bản ghi A. cho biến bản ghi A bằng cả 2 cách. + Gán: A.hoten:=’Vu Thi Dep’; A.Dtb:=8.5; + Nhập: Write(‘Nhap HT:’); readln(A.hoten); Write(‘Nhap DTB:’);readln(A.Dtb); * Ghi chú: Giống như kiểu mảng, không thể nhập/xuất trực tiếp đối với biến bản ghi, mà phải nhập/xuất từng trường của biến bản ghi đó. 4. Câu lệnh With – do:.

<span class='text_page_counter'>(135)</span> - Cú pháp: With <biến bản ghi> do <các lệnh>; - Ví dụ: Để nhập giá trị cho các trường hoten, Dtb của biến bản ghi A. With A do BEGIN Write(‘Nhap ho ten:’); readln(hoten); Write(‘Nhap DTB:’); readln(dtb); End; 3. Củng cố: Khai báo, tham chiếu đến trường trong biến bản ghi. 4. Dặn do và bài tập về nhà: Xem ví dụ trang 77-SGK và làm bài tập 11 trang 80-SGK. Viết chương trình nhập vào DS học sinh từ bàn phím, học sinh gồm họ tên, ngày sinh, điểm tb. Sau dó in danh sách của học sinh đó ra màn hình, mỗi học sinh trên một hàng..

<span class='text_page_counter'>(136)</span> Tuần 23 tiết 31. Ngày soạn: 17/01/2011. 19/01/2011. Đề bài dạy:. Ngày dạy: BÀI TẬP KIỂU BẢN GHI. I. Mục đích yêu cầu: - Giúp học sinh hiểu sâu hơn kiểu dữ liệu bản ghi. - Rèn luyện kỹ năng lập trình với kiểu dữ liệu có câu trúc. II. Chuẩn bị của thầy và trò: Thầy: SGK + Giáo án. Trò: SGK + chuẩn bị bài tập ở nhà. III. Tiền trình tiết dạy: 1. Ổn định lớp. 2. Kiểm tra bài cũ: Câu hỏi: Nêu cú pháp định nghĩa kiểu bản ghi và khai báo biến thuộc kiểu bản ghi? Trả lời: - Định nghĩa kiểu bản ghi: Type <Tên kiểu bản ghi>=Record <Tên trường 1>:<Kiểu trường 1>; <Tên trường 2>:<Kiểu trường 2>; ...................................................... <Tên trường n>:<Kiểu trường n>; End; - Khai báo biến bản ghi: Var <Tên biến bản ghi>:<Tên kiểu bản ghi>; 3. Vào bài mới: HOẠT ĐỘNG CỦA GV NỘI DUNG VÀ HS GV: Ghi đề bài lên bảng. Bài 1: Toạ độ điểm trên mặt phẳng được cho bởi cặp hai số thực tương ứng với hoành độ và tung độ của điểm đó. GV: Cho biết công thức a) Mô tả kiểu bản ghi để biểu diễn toạ độ điểm. tính tọa độ trọng tâm G b) Viết chương trình có sử dụng kiểu bản ghi trong mục a) của tam giác ABC. để thực hiện: HS: - Nhập vào từ bàn phím toạ độ 3 đỉnh A,B,C của tam giác ABC. xG:=(xA+xB+xC)/3; - Tính và hiện thị ra màn hình toạ độ trọng tâm của tam giác đó. yG:=(yA+yB+yC)/3; program baitap; GV: Hãy định nghĩa một Type diem=record kiểu bản ghi tên Diem hoanhdo:real; gồm 2 trường x và y có Tungdo:real; kiểu số thực. end; HS: Lên bảng viết định var A,B,C,G:diem; nghĩa kiểu bản ghi Diem. BEGIN clrscr;.

<span class='text_page_counter'>(137)</span> GV: Viết đoạn chương trình nhập giá trị cho 3 điểm A, B, C. HS: Lên bảng viết đoạn chương trình. GV: Viết đoạn chương trình tính tọa độ trung điểm G của tam giác ABC và in kết quả ra màn hình. HS: Lên bảng viết đoạn chương trình.. GV: Ghi đề bài lên bảng.. GV: Hãy mô tả kiểu bản ghi biểu diễn thông tin học sinh và khai báo một mảng lop gồm 50 phần tử có kiểu học sinh. HS: Lên bảng viết khai báo.. GV: Số học sinh mà ta cần nhập thông tin là bao nhiêu?. write('Nhap toa do diem A:');readln(A.hoanhdo,A.tungdo); write('Nhap toa do diem B:');readln(B.hoanhdo,B.tungdo); write('Nhap toa do diem B:');readln(C.hoanhdo,C.tungdo); G.hoanhdo:=(A.hoanhdo+B.hoanhdo+C.hoanhdo)/3; G.Tungdo:=(A.tungdo+B.tungdo+C.tungdo)/3; Write('Toa do trong tam cua tam giac ABC la: (',G.hoanhdo:4,';',G.tungdo:4,')'); readln; END. Bài 2: Lớp 11A có không quá 50 học sinh. Bảng điểm môn tin học của lớp có 7 cột. Cột 1 là STT, cột 2 là Họ và tên, cột 3,4,5,6,7 là điểm Miệng, 15 phút, 1 tiết, hoc kỳ, TBKT (với miệng, 15 phút là hệ số 1, 1 tiết hệ số 2, học kì hệ số 3). Viết chương trình thực hiện: a) Mô tả kiểu bản ghi biểu diễn thông tin của một học sinh đối với môn tin học. b) Nhập vào từ bàn phím các thông tin sau đây cho từng học sinh. STT, các điểm thành phần. c) Tính điểm TBKT cho từng học sinh. d) Hiện thi ra màn hình thông tin của các học sinh gồm STT, họ tên và TBKT (mỗi học sinh trên một hàng). program baitap; uses Crt; Type hocsinh=record stt:byte; Hoten:string[30]; m,kt15p,kt1t,hk,tbkt:real; end; var lop:array[1..50] of hocsinh; i,n:byte; BEGIN clrscr; Write('Cho biet so hoc sinh cua lop:');readln(n); for i:=1 to n do BEGIN Writeln('Nhap thong tin cua hoc sinh thu ',i,':'); write('Nhap so TT:'); readln(lop[i].stt); write('Nhap ho ten:'); readln(lop[i].hoten); Write('Nhap diem mieng:'); readln(lop[i].m); Write('Nhap diem 15 phut'); readln(lop[i].kt15p); write('Diem kiem tra 1 tiet:'); readln(lop[i].kt1t); Write('Diem kiem tra hoc ky:'); readln(lop[i].hk); lop[i].tbkt:=(lop[i].m+lop[i].kt15p+lop[i].kt1t*2+lop[i].hk*.

<span class='text_page_counter'>(138)</span> HS: Số học sinh can nhập 3)/7; là N (N<=50). end; GV: Mỗi học sinh thì cần Writeln('Bang diem mon tin cua lop:'); nhập mấy thông tin và đó For i:=1 to N do là những thông tin nào? writeln(Lop[i].stt:5,lop[i].hoten:30,lop[i].tbkt:10:2); HS: Mỗi học sinh cần readln; nhập 6 thông tin đó là: END. STT, HoTen, M, kt15p, kt1t, HK. GV: Hãy nhắc lại cú pháp tham chiếu đến trường của biến bản ghi. HS: <Tên biến bản ghi>.<Tên trường> GV: Viết đoạn chương trình nhập thông tin học sinh. HS: Lên bảng viết đoạn chương trinh. GV: Nhận xét đánh giá cho điểm. GV:Chúng ta cần in nhưng thông tin nào ra màn hình của các học sinh? HS: Lên bảng viết đoạn chương trinh in danh sách học sinh ra màn hình. GV: Nhận xét đánh giá cho điểm. 4. Củng cố: Khi sử dụng kiểu bản ghi để biểu diễn thông tin của một đối tượng nào đó thì ta cần xác định đối tượng đó gồm những thông tin nào? 5. Dặn dò: Xem lại các bài tập hôm nay để chuẩn bị tiết thực hành..

<span class='text_page_counter'>(139)</span> Tuần 24 tiết 32. Ngày soạn: 23/01/2011. 26/01/2011. Đề bài dạy:. Ngày dạy: THỰC HÀNH (kiểu bản ghi). I. Mục đích yêu cầu: - Hiểu hơn về kiểu dữ liệu bản ghi. - Rèn luyện kỹ năng viết chương trình trên máy tính. II. Chuẩn bị của thầy và trò: Thầy: SGK + Giáo án + phòng máy. Trò: SGK + chuẩn bị bài tập ở nhà. III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Vào bài mới: HOẠT ĐỘNG CỦA NỘI DUNG GV VÀ HS GV: Khởi động Hoạt động 1: Soạn và chạy thử chương trình sau: chương trình pascal program baitap; soạn và chạy thử 2 Type diem=record chương trình đã được hoanhdo:real; sửa ở tiết bài tập. Tungdo:real; GV: Soạn và chạy end; thử chương trình ở var A,B,C,G:diem; bài tập 1. BEGIN HS: Soạn chương clrscr; trình và chạy thử write('Nhap toa do diem A:');readln(A.hoanhdo,A.tungdo); chương trình. write('Nhap toa do diem B:');readln(B.hoanhdo,B.tungdo); GV: Quan sát lớp và write('Nhap toa do diem B:');readln(C.hoanhdo,C.tungdo); hướng dẫn học sinh G.hoanhdo:=(A.hoanhdo+B.hoanhdo+C.hoanhdo)/3; thực hành. G.Tungdo:=(A.tungdo+B.tungdo+C.tungdo)/3; Write('Toa do trong tam cua tam giac ABC la: (',G.hoanhdo:4,';',G.tungdo:4,')'); readln; END.. GV: Soạn và chạy thử chương trình ở bài tập 2. HS: Soạn chương trình và chạy thử. Hoạt động 2: Soạn và chạy thử chương trình sau: program baitap; {uses Crt;} Type hocsinh=record stt:byte; Hoten:string[30]; m,kt15p,kt1t,hk,tbkt:real; end; var lop:array[1..45] of hocsinh; i,n:byte;.

<span class='text_page_counter'>(140)</span> chương trình. GV: Quan sát lớp và hướng dẫn học sinh thực hành.. BEGIN {clrscr;} Write('Cho biet so hoc sinh cua lop:');readln(n); for i:=1 to n do BEGIN Writeln('Nhap thong tin cua hoc sinh thu ',i,':'); write('Nhap so TT:');readln(lop[i].stt); write('Nhap ho ten:');readln(lop[i].hoten); Write('Nhap diem mieng:');readln(lop[i].m); Write('Nhap diem 15 phut');readln(lop[i].kt15p); write('Diem kiem tra 1 tiet:');readln(lop[i].kt1t); Write('Diem kiem tra hoc ky:');readln(lop[i].hk); lop[i].tbkt:=(lop[i].m+lop[i].kt15p+lop[i].kt1t*2+lop[i].hk*3)/7; end; Writeln('Bang diem mon tin cua lop:50'); For i:=1 to N do writeln(Lop[i].stt:5,lop[i].hoten:30,lop[i].tbkt:10:2); readln; END. 3. Nhận xét và dặn dò cuối buổi thực hành..

<span class='text_page_counter'>(141)</span> Tuần 25 tiết 33 Ngày soạn:12/02/2011 15/02/2011. Bài dạy:. Ngày dạy:. ÔN TẬP CHƯƠNG IV (tiết 1). I. Mục tiêu: 1. Kiến thức - Ôn tập lại kiến thức của chương cho học sinh 2. Kĩ năng - Rèn luyện kỹ năng viết chương trình. 3. Thái độ Xây dựng lòng ham thích lập trình nhằm giải quyết các bài toán bằng máy tính. II. Đồ dùng dạy học SGK + Giáo án + phòng máy III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Bài mới Hoạt động của Giáo viên và học sinh Nội dung Giáo viên nêu bài toán Bài toán 1: Viết chương trình tạo mảng A Hs ghi bài gồm N (n ≤ 100) số nguyên, in ra màn hình Gv: xác định Input, Output của bài toán? các số nguyên lẻ. Hs: trả lời câu hỏi Program Bt1; Gv: nêu cú pháp khai báo mảng 1 chiều? Uses crt; Hs: trả lời câu hỏi Var A: array[1..10] of byte; Gv yêu cầu hs khai báo mảng A gồm N (n i, n: byte; ≤ 100) số nguyên BEGIN Gv gọi 1 hs lên bảng khai báo Write(‘Moi nhap so phan tu cua Hs lên bảng khai báo mảng A mang:’); Gv: Phép toán kiểm tra tính lẻ của 1 số? readln(n); Hs: trả lời câu hỏi for i:=1 to n do Gv yêu cầu 1 hs lên bảng viết chương BEGIN trình. write(‘A[‘,i,’]=’); readln(A[i]); Hs lên bảng viết chương trình end; for i:=1 to n do if A[i] mod 2 = 1 then write(A[i]:3); readln; Gv yêu cầu hs khác nhận xét End. Gv sửa bài, đánh giá và cho điểm. Gv nêu bài toán Hs ghi bài Gv: xác định Input, Output của bài toán? Hs: trả lời câu hỏi. Bài toán 2: Viết chương trình tạo mảng A gồm N (n ≤ 100) số nguyên, tính giá trị trung bình các phần tử và in kết quả ra màn hình. Program Bt2;.

<span class='text_page_counter'>(142)</span> Gv: tính giá trị trung bình của n phần tử? Uses crt; Hs: trả lời câu hỏi Var A: array[1..10] of byte; Gv yêu cầu 1 hs lên bảng viết chương i, n, S: byte; trình. tb: real; Hs lên bảng viết chương trình BEGIN Write(‘Moi nhap so phan tu cua mang:’); readln(n); Gv yêu cầu hs khác nhận xét for i:=1 to n do Gv sửa bài, đánh giá và cho điểm. BEGIN write(‘A[‘,i,’]=’); readln(A[i]); end; for i:=1 to n do BEGIN S:=S + A[i]; Tb:= S/n; End; Write(‘gia tri trung binh cua mang la tb=’, tb:6:2); readln; End. 3. Củng cố: - Cách khai báo, nhập/xuất dữ liệu cho mảng. - Xác định input, output của bài toán -> ý tưởng -> viết chương trình - Xem lại nội dung bài học 4. Dặn dò: Bài 10/ sgk tr80: Khai báo xâu S không dài quá 100? Sử dụng biến dem để đếm chữ số xuất hiện trong xâu S: + For i:= 1 to length(S) do + Nếu (‘0’ <= S[i]) và (S[i] <= ‘9’) thì tăng biến dem - Thông báo số kí tự xuất hiện trong xâu: dem.

<span class='text_page_counter'>(143)</span> Tuần 26 tiết 34. Ngày soạn:20/02/2011. 22/02/2011. Bài dạy:. Ngày dạy: ÔN TẬP CHƯƠNG IV (tiết 2). I. Mục tiêu: 1. Kiến thức - Ôn tập lại kiến thức của chương cho học sinh 2. Kĩ năng - Rèn luyện kỹ năng viết chương trình. 3. Thái độ Xây dựng lòng ham thích lập trình nhằm giải quyết các bài toán bằng máy tính. II. Đồ dùng dạy học SGK + Giáo án + phòng máy. III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Bài mới: Hoạt động của Giáo viên và học sinh Nội dung Gv: nêu bài toán Baì toán1: Viết chương trình nhập từ bàn phím xâu Hs: ghi bài tự S có độ dài không quá 100. Cho biết có bao nh chữ số xuất hiện trong xâu. Đưa kết quả ra màn hìn Gv: Hãy cho biết yêu cầu của bài toán. Program Baitoan1; Hs: trả lời câu hỏi. Var S: string[100]; i, dem: byte; BEGIN write(‘ nhap xau ki tu dai khong qua 100’); readln(S); dem:=0; for i:=1 to length(S) do if (‘0’ <= S[i]) and (S[i] <= ‘9’) then dem:=dem 1; writeln(‘trong xau S co’, dem, ‘chu so’); readln; Gv: nêu bài toán 2 end. Bài toán 2: Một lớp học chứng chỉ tin nghề gồm học viên (N<=50). Cần quản lí học viên gồm thuộc tính như: Họ tên, địa chỉ, điểm lý thuyết, đi thực hành, xếp loại. Biết rằng việc xếp loại được định như sau: - Nếu tổng điểm lý thuyết và thực hành >17 thì x loại A. - Nếu tổng điểm lý thuyết và thực hành lớn hơn ho bằng 14 và nhỏ hơn hoặc bằng 17 thì xếp loại B. - Nếu tổng điểm lý thuyết và thực hành nhỏ hơn 14 xếp loại C..

<span class='text_page_counter'>(144)</span> Gv: Cho biết yêu cầu bài toán? Hs: trả lời câu hỏi. Gv: gọi 1 hs lên định nghĩa kiểu bản ghi, khai báo biến kiểu bản ghi Hs lên bảng Gv: cho biết cách truy xuất đến trường của biến bản ghi. Hs: <tên biến bản ghi>.<tên trường> Gv: gọi 1 hs lên nhập thông tin cho các học viên Hs: lên bảng viết đoạn chương trình nhập thông tin. Gv: Dựa vào điều kiện của xếp loại, hãy viết đoạn chương trình xếp loại cho từng học viên? Hs: Viết đoạn chương trình xếp loại Gv: In thông tin ra màn hình học viên xêp loại A? Hs: trả lời câu hỏi. Gv: hoàn chỉnh chương trình Hs: ghi bài.. Viết chương trình nhập vào các thông tin và xếp loai từng học viên. In ra màn hình Ds học viên xếp loại A.. Program bt2; Uses Crt; Type Hocvien= Record Hoten: string[30]; Diachi: string[50]; DTH, DLT: Real; Xeploai: char; end; var lop: array[1..50] of hocvien; i, N: byte; BEGIN clrscr; write(‘nhap so luong hoc vien cua lop:’);readln(N); for i:=1 to N do BEGIN writeln('Nhap thong tin cua hoc vien thu ',i,':'); write('Nhap ho ten:');readln(lop[i].hoten); Write('Nhap dia chi:');readln(lop[i].diachi); Write('Nhap diem ly thuyet:’);readln(lop[i].DLT); write('Nhap diem thuc hanh:');readln(lop[i].DTH); if (lop[i].DTH + lop[i].DLT>17) then lop[i].xeploai:=’A’; if (lop[i].DTH + lop[i].DLT>=14) and (lop[i].DTH + lop[i].DLT<=17) then lop[i].xeploai:=’B’; if (lop[i].DTH + lop[i].DLT<14) then lop[i].xeploai:=’C’; end; Writeln(‘Danh sach hoc vien xep loai A’); For i:=1 to N do if lop[i].xeploai=’A’ then writeln(lop[i].hoten:30) readln; END.. 3. Củng cố và dặn dò: - Xem lại nội dung bài học - Cách định nghĩa kiểu bản ghi và khai báo biến bản ghi. Cách truy xuất đến các trường của bản ghi: <tên biến bản ghi>.<tên trường>.

<span class='text_page_counter'>(145)</span> 3. Bi mới HOẠT ĐỘNG CỦA GV VÀ HS GV: Cho biết Input, Output của bài toán. HS: - Input: a,b - Output: Max, Min. GV: Nêu ý tưởng của thuật toán. HS: Nếu a>b thì Max=a, Min=b. Ngược lại thì Max=b, Min=a. GV: Nêu thuật toán giải bài toán. HS: B1: Nhập a,b. B2: Nếu a>b thì Max=a; Min=b; Ngược lại: Max=b; Min=a; B3: Thông báo Max, Min. GV: Gọi một học sinh lên bảng viết chương trình. HS: 1 HS lên bảng viết chương trình, các học sinh còn lại viết chương trình vào giấy nháp. GV: Kiểm tra, sửa lỗi (nếu có) và cho điểm.. NỘI DUNG Bài 1: Tìm GTLN (Max), GTNN (Min) của 2 số a và b. Program Max_Min; Var a, b, Max, Min: Real; BEGIN Writeln(‘Moi nhap 2 so a, b:’); Readln(a,b); If a < b then BEGIN Max := b; Min := a; End Else BEGIN Max := a; Min := b; End; Writeln(‘Max =’, Max:8:2, ‘Min=’, Min:8:2); Readln; End.. Bài 2: Viết chương trình tính tổng các số chẵn từ 1 tới N. Với N được nhập từ bàn GV: Cho biết Input, Output cảu bài toán. phím. HS: - Input: Số nguyên N Program tong_so_chan; - Output: Tổng S. Uses Crt; GV: Câu lệnh lặp sử dụng phù hợp với bài Var i, n, s: integer; toán này là gì? BEGIN HS: Câu lệnh lặp với số lần định trước Clrscr; For-do. Write('Nhap N= '); readln(N); GV: Xác định giá trị đầu và giá trị cuối S:=0; của vòng lặp For. For i:=1 to N do HS: GT đầu=1; GT cuối =N. if i mod 2=0 then S:=S+i; GV: Làm thế nào để kiểm tra 1 số là chẵn Write('Tong cac so chan=',S); hay lẻ. Readln; HS: Số chẵn là số chia hết cho 2. End. GV: Công việc được thực hiện lặp đi lặp lại là công việc gì? HS: Kiểm tra giá trị biến đếm là chăn hay lẻ, nếu chẵn thì cộng vào trong tổng S. GV: Gọi một học sinh lên bảng viết Bài 3: Viết lại chương trình giải bài 2 với chương trình. câu lệnh While-do. HS: 1 HS lên bảng viết chương trình, các Program Bai3;.

<span class='text_page_counter'>(146)</span> học sinh còn lại viết chương trình vào giấy Uses Crt; nháp. Var i,N:byte; S:Longint; GV: Kiểm tra, sửa lỗi (nếu có) và cho BEGIN điểm. Clrscr; Write('Nhap N='); readln(N); i:=1; S:=0; While i<=N do BEGIN GV: Gọi một học sinh lên bảng viết if i mod 2 =0 then S:=S+i; chương trình. i:=i+1; HS: 1 HS lên bảng viết chương trình, các end; học sinh còn lại viết chương trình vào giấy Write('Tong cac so chan la:', S); nháp. Readln; GV: Kiểm tra, sửa lỗi (nếu có) và cho END. điểm. 4. Củng cố: Mọi quá trình tính toán đều có thể mô tả và thực hiện dựa trên 3 cấu trúc cơ bản là cấu trúc tuần tự, cấu trúc rẽ nhánh và cấu trúc lặp. 5. Dặn dò: Ôn tập kiến thức chuẩn bị cho tiết kiểm tra tới..

<span class='text_page_counter'>(147)</span> Tuần: 13 tiết: 17. Ngày soạn: 07/11/2010. day:09/11/2010. Đề bài dạy:. Ngày KIỂM TRA 1 TIẾT. I. Mục đích yêu cầu: - Đánh giá kiến thức, kĩ năng của học sinh về: Phép toán, biểu thức, câu lệnh gán và các thủ tục chuẩn vào/ra đơn giản. II. Chuẩn bị của thầy và trò: Thầy: Đề kiểm tra. Trò: Ôn tập các kiến thức đã học. III. Tiến trình lên lớp: 1. Ổn định lớp. 2. Phát đề kiểm tra: 3. Nội dung đề kiểm tra: I. Phần trắc nghiệm: (7,5 điểm) 16 Cu 1: Kiểu dữ liệu nào có phạm vi giá trị từ 0 đến 2  1 trong cc kiểu dữ liệu sau? A Kiểu LongInt B Kiểu Integer C Kiểu Word D Kiểu Byte Cu 2: Cho cu lệnh gn M:=12; N:=21; A:=(M mod 3=0) and (N div 5=1); Hỏi A cĩ gi trị thuộc kiểu dữ liệu gì v gi trị nhận được? A Kiểu số v cĩ gi trị l 1 B Kiểu logic v gi trị l True C Kiểu số v cĩ gi trị l 0 D Kiểu logic v gi trị l False Cu 3: Cc tn hm SQRT, SQR, ABS cĩ ý nghĩa lần luợt l hm lấy gi trị? A Bình phương, căn bậc hai, trị tuyệt đối B Trị tuyệt đối, căn bậc hai, bình phương C Căn bậc hai, trị tuyệt đối, bình phương D Căn bậc hai, bình phương, trị tuyệt đối Cu 4: Xét khai báo sau: Var x, y: Integer; c: Char; r: Real; kt: Boolean; Hỏi tổng bộ nhớ cấp cho tất cả các biến đó là bao nhiêu Byte? A 10 byte B 11 byte C 13byte D 12 byte Cu 5: Cc phần mềm lập trình như TURBO PASCAL, VISUAL BASIC, VISUAL FOXPRO, C/C++… thuộc loại ngôn ngữ lập trình no? A Một phương án khác B Ngôn ngữ lập trình bậc cao C Hợp ngữ D Ngơn ngữ my Cu 6: “Lập trình l sử dụng (1)… v (2)… của một ngơn ngữ lập trình no đó để mô tả (3) … và diễn đạt các thao tác của (4)...”. Cc cụm từ cịn thiếu theo đúng thứ tự là: A Cc cu lệnh, dữ liệu, thuật tốn, cấu trc dữ liệu. B Cc cu lệnh, thuật tốn, dữ liệu, cấu trc dữ liệu C Dữ liệu, thuật tốn, cấu trc dữ liệu, cc cu lệnh.D Cấu trc dữ liệu, cc cu lệnh, dữ liệu, thuật tốn. Cu 7: Một biểu thức quan hệ thì cho gi trị thuộc kiểu dữ kiệu gì trong cc kiểu dữ liệu sau? A Số nguyn B Kí tự C Lơgic D Số thực Cu 8: Có mấy loại biểu thức cơ bản trong Pascal? A 4 B 2 C 3 D 5.

<span class='text_page_counter'>(148)</span> Cu 9: Ngôn ngữ dùng để viết chương trình gọi l gì? A Ngơn ngữ my B Ngơn ngữ lập trình C Một phương án khác D Lập trình Cu 10: Biểu thức (x>y) and (y>3) thuộc loại biểu thức no trong Pascal? A Biểu thức quan hệ B Biểu thức logic C Một loại biểu thức khc D Biểu thức số học Cu 11: Cho dy cc cu lệnh gn z:=3; z:=z-1; y:=sqr(z)-3*z+abs(z); Sau khi thực hiện dy cc cu lệnh trn thì y cĩ gi trị l bao nhiu? A 1 B 2 C 0 D 3 Sin( x 2  3x  5)  y 2  2 y  3. Cu 12: Biểu thức được viết trong Pascal là biểu thức? A sqrt(sin(x*x+3*x+5))+abs(y*y-2*y-3) B Sin(sqrt(x*x+3*x+5))+abs(y*y2*y-3) C Sin(sqrt(x*x+3*x+5)+abs(y*y-2*y-3)) D Sin(sqr(x*x+3*y+5))+(y*y-2*x-3) Cu 13: Khẳng định nào trong các khẳng định sau đây là đúng? A Một chương trình cĩ thể khơng cần cĩ phần khai bo B Biến dùng trong chương trình khi dng khơng cần khai bo C Bắt buộc phải khai báo tên chương trình D Một chương trình cĩ thể khơng cần cĩ phần thn Cu 14: Để đưa dữ liệu ra màn hình dng cu lệnh no trong cc cu lệnh sau? A Writeln hoặc read B Read hoặc readln C Write hoặc readln D Write hoặc writeln Cu 15: Biến P cĩ thể nhận cc gi trị 5; 10; 15; 20; 30; 60; 90 v biến X cĩ thể nhận cc gi trị 0,1; 0,2; 0,3; 0,4; 0,5. Khai báo nào trong các khai báo sau là đúng v tốn ít bộ nhớ nhất? A Var X, P: Byte; B Var P: Real; X: Byte; C Var X: Real; P: Byte; D Var X, P: Real; Cu 16: Biểu thức sqrt(x+y)/x-sqr(x-y)/y viết trong tốn học sẽ l biểu thức no? A. x y  x y    x y  . ( x  y) 2  x. 2. B. x y  x y    x y  . 2. C. x  y ( x  y) 2  x y. D. x y y. Cu 17: Một chương trình viết bằng ngơn ngữ lập trình bậc cao thì gồm cc phần: A Phần khai báo thư viện và phần thân B Phần thân và phần khai báo C Phần khai báo tên chương trình v phần thn D Phần thn v phần khai bo biến Cu 18: Bin dịch l? Hy chọn phương án đúng: A Dịch toàn bộ chương trình B Tất cả các phương án C Chạy chương trình D Dịch từng lệnh Cu 19: Trong Pascal nếu một biến chỉ nhận giá trị thuộc phạm vi từ 10 đến 256 thì biến đó có thể được khai báo bằng kiểu dữ liệu nào? A Kiểu Real B kiểu Byte C Kiểu Char D Kiểu Word Cu 20: Trong Pascal php tốn Div, Mod thuộc nhĩm php tốn no? A Nhĩm php tốn số học với số thực B Nhĩm cc php tốn quan hệ C Nhĩm php tốn lơgic D Nhĩm php tốn số học với số nguyn Cu 21: Kiểu dữ liệu số nguyên trong Pascal bao gồm: byte, integer, word, longInt lần lượt có bộ nhớ lưu trữ giá trị là:.

<span class='text_page_counter'>(149)</span> A 4 – 2 – 2 – 4 byte B 4 – 2 – 1 – 2 byte C 1 – 4 – 2 – 2 byte D 1 – 2 – 2 – 4 byte Cu 22: Những tn no trong cc tn sau thuộc loại tn dnh ring trong Pascal? A PROGRAM, VAR, BEGIN, TYPE, CONSTB BAI_TAP, BEGIN, TYPE, CONST, USES C PROGRAM, BEGIN, TYPE, CONST, SQRT D VAR, BEGIN, END, A, B, DELTA. Cu 23: Các từ khóa Const, Var, Type, Uses trong Pascal lần lượt để khai báo gì? A Hằng, biến, kiểu, thư viện B Biến, kiểu, thư viện, hằng C Hằng, thư viện, biến, kiểu D Biến, kiểu, hằng, thư viện Cu 24: Cho cc cu lệnh gn a:=1; b:=3; c:=-4; D:=(b*b-4*a*c); x1:=(-b-sqrt(d))/(2*a); x2:=(-b+sqrt(d))/(2*a); Hỏi sau khi thực hiện tuần tự dy cc cu lệnh trn thì d, x1, x2 nhận cc gi trị lần lượt là bao nhiêu? A 25, -4, 1 B 25, 1, -4 C -4, 25, 1 D 1, 25, -4 Cu 25: Thông dịch là? Chọn phương án đúng: A Dịch từng lệnh B Tất cả cc phương án C Chạy chương trình D Dịch toàn bộ chương trình II. Phần tự luận: (2,5 điểm) Viết chương trình nhập vo độ dài 2 cạnh a, b của hình chữ nhật. Tính chu vi, diện tích của hình chữ nhật v in kết quả ra mn hình. ___Hết___ Đáp án: I. Trắc nghiệm: 1. C 2. B 3. D 4. D 5. B 6. D 7. C 8. C 9. B 10. B 11. C 12. B 13. A 14. D 15. C 16. C 17. B 18. A 19. D 20. D 21. D 22. A 23. A 24. A 25. A II. Tự luận: Program Dientich_HCN; Uses Crt; Var a,b,s,Cv:real; BEGIN Clrscr; Write('Nhap do dai hai canh HCN:'); readln(a,b); S:=a*b; Cv:=(a+b)*2; Writeln('Dien tich HCN=',S:6:1); Writeln('Chu vi HCN=',CV:6:1); Readln; END. Tuần 25 tiết 38 Ngày soạn:12/02/2012 Ngày dạy: 14/02/2012. Bài dạy:. ÔN TẬP CHƯƠNG IV. I. Mục tiêu: 1. Kiến thức - Ôn tập lại kiến thức của chương cho học sinh.

<span class='text_page_counter'>(150)</span> 2. Kĩ năng - Rèn luyện kỹ năng viết chương trình. 4. Thái độ Xây dựng lòng ham thích lập trình nhằm giải quyết các bài toán bằng máy tính. II. Đồ dùng dạy học SGK + Giáo án + phòng máy III. Tiến trình tiết dạy: 5. Ổn định lớp. 6. Bài mới HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG Giáo viên nêu bài toán Bài toán 1: Viết chương trình tạo mảng Hs: ghi bài A gồm N (n ≤ 100) số nguyên, in ra màn Gv: xác định Input, Output của bài toán? hình các số nguyên lẻ. Hs: trả lời câu hỏi Program Bt1; Gv: nêu cú pháp khai báo mảng 1 chiều? Uses crt; Hs: trả lời câu hỏi Var A: array[1..10] of byte; Gv: yêu cầu hs khai báo mảng A gồm N i, n: byte; (n ≤ 100) số nguyên BEGIN Gv: gọi 1 hs lên bảng khai báo Write(‘Moi nhap so phan tu cua Hs: lên bảng khai báo mảng A mang:’); Gv: Phép toán kiểm tra tính lẻ của 1 số? readln(n); Hs: trả lời câu hỏi for i:=1 to n do Gv: yêu cầu 1 hs lên bảng viết chương BEGIN trình. write(‘A[‘,i,’]=’); readln(A[i]); Hs: lên bảng viết chương trình end; for i:=1 to n do if A[i] mod 2 = 1 then write(A[i]:3); Gv: yêu cầu hs khác nhận xét readln; Gv: sửa bài, đánh giá và cho điểm. End. Gv: nêu bài toán Hs: ghi bài Gv: Hãy cho biết yêu cầu của bài toán. Hs: trả lời câu hỏi. GV: Khai báo xâu S không dài quá 100? Sử dụng biến dem để đếm chữ số xuất hiện trong xâu S: + For i:= 1 to length(S) do + Nếu (‘0’ <= S[i]) và (S[i] <= ‘9’) thì tăng biến dem - Thông báo số kí tự xuất hiện trong xâu: dem. Bài toán 2: (bài 8_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. Cho biết có bao nhiêu chữ số xuất hiện trong xâu. Đưa kết quả ra màn hình. Program Baitoan1; Var S: string[100]; i, dem: byte; BEGIN write(‘ nhap xau ki tu dai khong qua 100’); readln(S); dem:=0; for i:=1 to length(S) do if (‘0’ <= S[i]) and (S[i] <= ‘9’) then.

<span class='text_page_counter'>(151)</span> dem:=dem + 1; writeln(‘trong xau S co’, dem, ‘chu so’); readln; end. 7. Củng cố: - Cách khai báo, nhập/xuất dữ liệu cho mảng. - Xác định input, output của bài toán -> ý tưởng -> viết chương trình - Xem lại nội dung bài học 8. Dặn dò:.

<span class='text_page_counter'>(152)</span> Tuần 25 tiết 39. Ngày soạn: 12/02/2012. 15/02/2012. Đề bài dạy:. Ngày dạy: KIỂM TRA 1 TIẾT. I. Mục đích yêu cầu: - Đánh giá nhận xét kết quả học tập của học sinh. - Có được sự điều chỉnh trong HOẠT ĐỘNG CỦA GV VÀ HS giảng dạy. II. Chuẩn bị của thầy và trò: Thầy: Đề kiểm tra. Trò: Ôn bài trước ở nhà. III. Tiến trình tiết dạy: 1. Ổn định lớp. 2. Phát đề: Đề: I. Trắc nghiệm: Câu 1: Để khai báo một mảng A có 15 phần tử có kiểu số nguyên ta khai báo, nhưng mỗi phần tử không vượt quá 5000 : a/ A :array [1 …15] of byte; b/ A:array [1..15] of byte; c/ A:array [1…15] of integer; d/ A:array [ 1..15] of integer; Câu 2: Giả sử ta có mảng A như sau: A 5 10 15 20 25 30 35 40 45 50 Để có giá trị là 35 ta truy xuất như sau: a/ 35 b/ A[35] c/ [35] d/ A[7] Câu 3: Hãy cho biết cú pháp khai báo nào sau đây là đúng : a/ < tên biến > : string[độ dài lớn nhất của xâu ]; b/ Var string[độ dài lớn nhất của xâu ]; c/ Var < tên biến > string[độ dài lớn nhất của xâu ]; d/ Var < tên biến >:string[độ dài lớn nhất của xâu ]; Câu 4: Giả sử xâu A là: ‘ABCD’ khi đó lệnh write(A) có kết quả là: a/ AB b/ BC c/ CD d/ ABCD Câu 5: Giả sử xâu A là :’ABCD’ khi đó lệnh write(A[1]) có kết quả là: a/ D b/ B c/ A d/ C Câu 6: Giả sử : st:=’abcd’; thủ tục Delete(st,2,2); có kết quả là: a/ ad b/ cd c/ bc d/ bd Câu 7: Giả sử : st:=’abcd’; thủ tục Insert(‘ab’,st,2); có kết quả là: a/ abcdab b/ ababad c/ ababcd d/ aabbcd Câu 8: Giả sử : st:=’Thuan Hoa’; hàm copy(st,7,3); có kết quả là: a/ Hoa b/ uan Hoa c/ n Ho d/ an Hoa Câu 9: Giả sử : st:=’Thuan Hoa’; hàm length(st); có kết quả là: a/ 6 b/ 8 c/ 9 d/ 10 Câu 10: Giả sử : st:=’Thuan Hoa’; hàm Pos(‘m’,st); có kết quả là: a/ 0 b/ 2 c/ 3 d/ 4 Câu 11: Ta có khai báo sau : Var a,b,c : integer; d: Real; e,f : char; g: Boolean;.

<span class='text_page_counter'>(153)</span> Với khai báo trên thì máy tính sẽ cấp phát bộ nhớ là bao nhiêu byte ? A. 15 B. 17 C. 20 D. 23 II. Tự luận: (5 điểm): Viết chương trình nhập vào moat dãy số nguyên. In ra màn hình các số nguyên chẵn..

<span class='text_page_counter'>(154)</span> Đáp án: I. Trắc nghiệm: Cu 1 2 3 4 5 6 7 8 9 10 11 Đ.Án II. Tự luận: program TuLuan; Uses Crt; Var a:array[1..100] of byte; i,n:byte; BEGIN Clrscr; Write('Nhap N='); readln(n); For i:=1 to N do Begin Write('Nhap phan tu thu ',i,' :'); readln(a[i]); End; Write('Cac so nguyen chan la:'); For i:=1 to N do if a[i] mod 2=0 then write(a[i],' '); Readln; END..

<span class='text_page_counter'>(155)</span>

<span class='text_page_counter'>(156)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×