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

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

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

  • docxgiao_an_tin_hoc_lop_9_chuong_trinh_ca_nam.docx

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

  1. Tuần 01 Ngày soạn: Tiết 01 Ngày dạy: CHƯƠNG I. MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH BÀI 1. KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Nắm được các thành phần cơ bản của ngôn ngữ lập trình nói chung - Biết được khái niệm về chương trình dịch - Phân biệt được chươn trình dịch là biên dịch và thông dịch 2. Kỹ năng - Biết vai trò của chương trình dịch - Hiểu ý nghĩa nhiệm vụ của chương trình dịch 3. Thái độ - Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, luôn tự tìm hiểu học tập II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Đọc trước SGK, xem lại một số kiến thức Tin học lớp 10. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG: 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ - Thông qua giảng bài 3. Bài mới TG Hoạt động của GV & HS Nội dung GV: Đặt câu hỏi 1: Em hãy cho biết các bước giải một bài toán trên máy tính? HS: Suy nghĩ và trả lời câu hỏi. GV: Phân tích câu trả lời của học sinh. 1. Khái niệm lập trình: Lập trình là sử dụng Nhắc lại các bước giải bài toán trên máy tính đã học ở lớp một cấu trúc dữ liệu và các câu lệnh của một 10. ngôn ngữ lập trình cụ thể để mô tả dữ liệu và GV: Đặt câu hỏi 2: Em hãy cho biết có mấy loại ngôn ngữ diễn đạt thuật toán . lập trình? HS: Trả lời câu hỏi của giáo viên. Chương trình viết bằng ngôn ngữ máy có thể Trả lời câu hỏi: Có 3 loại ngôn ngữ lập trình: Ngôn ngữ nạp trực tiếp vào bộ nhớ thi hành ngay. máy, hợp ngữ và ngôn ngữ bậc cao. GV: Phân tích câu trả lời của học sinh. Chương trình viết bằng ngôn ngữ bậc cao nói Mỗi loại máy có một ngôn ngữ riêng, thường thì chương chung không phụ thuộc loại máy, muốn thi trình viết bằng ngôn ngữ của máy nào chỉ chạy được trên hành được thì nó phải được chuyển sang ngôn máy đó. ngữ máy. Khi viết chương trình bằng ngôn ngữ bậc cao muốn thi hành được trên loại máy nào thì cần chuyển chương trình sang ngôn ngữ máy của máy đó. GV: Đặt câu hỏi 3 : Làm thế nào để chuyển chương trình 2. Chương trình dịch viết bằng ngôn ngữ bậc cao sang ngôn ngữ máy? có 2 loại: Biên dịch và thông dịch =>Cần phải có chương trình dịch để chuyển chương trình viết bằng ngôn ngữ lập trình bậc cao sang ngôn ngữ máy để + Biên dịch (Compiler): Thực hiện các bước máy có thể thi hành được. sau: Đưa ra ví dụ : Bạn là người không biết tiếng Anh vậy làm  Duyệt, kiểm tra, phát hiện lỗi và kiểm tra tính sao để bạn có thể nói chuyện với người Anh hay đọc một đúng đắn của các câu lệnh trong chương trình cuốn sách tiếng Anh? nguồn . + Khi một người làm phiên dịch người đó phải dịch như thế nào? (Dịch ngay từng câu khi 2 người nói chuyện)
  2. + Khi một người muốn dịch 1 cuốn sách sang tiếng Việt  Dịch toàn bộ chương trình nguồn thành một thì làm thế nào? (Dịch toàn bộ cuốn sách đó sang tiếng chương trình đích (ngôn ngữ máy) để có thể Việt để người đó có thể đọc được) thực hiện trên máy và có thể lưu trữ để sử dụng GV: Lấy ví dụ về biên dịch và thông dịch cho học sinh có lại khi cần. thể hình dung được mỗi công việc. Biên dịch: Sử dụng ngôn ngữ lập trình Pascal để dịch một + Thông dịch (Interpreter): Dịch lần lượt từng chương trình viết sẵn ra đĩa và thi hành chương trình đã dịch câu lệnh và thực hiện ngay câu lệnh ấy. để học sinh quan sát. Thông dịch được thực hiện bằng cách lặp lại dãy Thông dịch: Sử dụng các lệnh trong Command promt để các bước sau: thực hiện một số lệnh của DOS hoặc dùng ngôn ngữ Foxpro  Kiểm tra tính đúng đắn của câu lệnh tiếp theo để thực hiện một số lệnh quản trị dữ liệu, học sinh dễ dàng trong chương trình nguồn nhận ra việc thông dịch.  Chuyển đổi các câu lệnh đó thành một hay Đi kèm với các chương trình dịch thường có các công cụ nhiều câu lệnh trong ngôn ngữ máy. như soạn thảo chương trình nguồn, lưu trữ, tìm kiếm, phát  Thực hiện các câu lệnh vừa chuyển đổi hiện lỗi, thông báo lỗi, ngôn ngữ lập trình thường chứa được tất cả các dịch vụ trên. V. Cũng cố: Nhắc lại một số khái niệm mới. VI. Dặn dò: học bài và xem trước bài 2. các thành phần của ngôn ngữ lập trình Tuần 02 Tiết 02 Ngày soạn: Ngày dạy: Bài 2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Biết một số khái niệm như: tên, tên chuẩn, tên dành riêng, . 2. Kỹ năng - Phân biệt được tên chuẩn với tên dành riêng và tên do người lập trình đặt. - Nhớ các quy tắc đặt tên hằng và biến - Biết đặt tên đúng, nhận biết tên sai. 3. Thái độ - Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, luôn tự tìm hiểu học tập II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Hiểu kiến thức ở bài 1, đọc trước SGK bài 2. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Câu 1: Thế nào là lập trình, ngôn ngữ lập trình? Câu 2: Chương trình dịch là gì? Có mấy loại chương trình dịch? 3. Bài mới TG Hoạt động của GV & HS Nội dung GV: Các ngôn ngữ lập trình nói chung thường có chung một số thành phần như: Dùng những ký hiệu nào để viết chương 1.Các thành phần cơ bản: trình, viết theo quy tắc nào, viết như vậy có ý nghĩa là gì? Mỗi Mỗi ngôn ngữ lập trình thường có 3 thành phần cơ ngôn ngữ lập trình có một quy định riêng về những thành phần bản là : bảng chữ cái, cú pháp và ngữ nghĩa. này. Ví dụ: Bảng chữ cái của các ngôn ngữ lập trình khác nhau có sự khác nhau. Chẳng hạn ngôn ngữ Pascal không sử dụng dấu ! a.Bảng chữ cái: Là tập các ký hiệu dùng để viết nhưng ngôn ngữ C++ lại sử dụng ngôn ngữ này. chương trình.
  3. -Trong ngôn ngữ Pascal bảng chữ cái gồm: Các chữ - Cú pháp các ngôn ngữ lập trình khác nhau cũng khác nhau, cái trong bảng chữ cái tiếng Anh, các chữ số 0 9 ngôn ngữ Pascal dùng cặp từ Begin – End để gộp nhiều lệnh và một số ký tự đặc biệt (xem trong SGK) thành 1 lệnh nhưng C++ lại dùng cặp kí hiệu {}. Ví dụ: Xét 2 biểu thức: b.Cú pháp: Là bộ quy tắc dùng để viết chương A + B (1) A, B là các số thực. trình. I + J (2) I, j là các số nguyên. c. Ngữ nghĩa: Xác định ý nghĩa thao tác cần thực Khi đó dấu + trong (1) sẽ là cộng hai số thực, trong (2) là cộng hiện ứng với tổ hợp ký tự dựa vào ngữ cảnh của nó. hai số nguyên. - Mỗi ngôn ngữ khác nhau cũng có cách xác định ngữ nghĩa - Cú pháp cho biết cách viết chương trình hợp khác nhau. lệ, ngữ nghĩa xác định ý nghĩa của các tổ hợp ký tự trong chương trình. HS: Lắng nghe, ghi chép. - Lỗi cú pháp được chương trình dịch phát hiện và thông báo cho người lập trình. Chương GV: Đưa ra ví dụ ngôn ngữ tự nhiên cũng có bảng chữ cái, ngữ trình không còn lỗi cú pháp thì mới có thể dịch pháp (cú pháp) và nghĩa của câu, từ. sang ngôn ngữ máy. - Lỗi ngữ nghĩa được phát hiện khi chạy chương trình. TG Hoạt động của GV & HS Nội dung GV: Trong các ngôn ngữ lập trình nói chung, các đối tượng sử dụng trong chương trình đều phải đặt tên để 2. Một số khái niệm tiện cho việc sử dụng. Việc đặt tên trong các ngôn ngữ khác nhau là khác nhau, có ngôn ngữ phân biệt chữ hoa, a. Tên chữ thường, có ngôn ngữ không phân biệt chữ hoa, chữ - Mọi đối tượng trong chương trình đều phải được đặt tên. thường. Mỗi ngôn ngữ lập trình có một quy tắc đặt tên riêng . - Trong ngôn gnữ Turbo Pascal tên là một dãy liên tiếp GV: Giới thiệu cách đặt tên trong ngôn ngữ cụ thể không qúa 127 ký tự bao gồm các chữ cái, chữ số và Pascal. dấu gạch dưới nhưng phải bắt đầu bằng chữ cái hoặc dấu gạch dưới. Ví dụ : - Trong Free Pascal, tên có thể có tối đa 255 ký tự. Tên đúng: a, b, c, x1, x2, _ten - Ngôn ngữ lập trình Pascal không phân biệt chữ hoa, chữ Tên sai: a bc,2x, a&b thường nhưng một số ngôn ngữ lập trình khác lại phân biệt chữ hoa và chữ thường. GV: Ngôn ngữ nào cũng có 3 loại tên cơ bản này nhưng - Ngôn ngữ lập trình thường có 3 loại tên cơ bản: Tên tùy theo ngôn ngữ mà các tên có ý nghĩ khác nhau trong dành riêng, tên chuẩn và tên do người lập trình tự đặt. các ngôn ngữ khác nhau. o Trong khi soạn thảo chương trình, các ngôn ngữ Tên dành riêng: lập trình thường hiển thị các tên dành riêng với một - Là những tên được ngôn ngữ lập trình quy định với ý màu chữ khác hẳn với các tên còn lại giúp người nghĩa xác định mà người lập trình không thể dùng với lập trình nhận biết được tên nào là tên dành riêng ý nghĩa khác. (từ khóa). Trong ngôn ngữ Pascal, từ khóa thường - Tên dành riêng còn được gọi là từ khóa hiển thị bằng màu trắng. Ví dụ: Một số từ khóa GV: Mở một chương trình viết bằng Pascal để học sinh Trong ngôn ngữ Pascal: Program, Var, Uses, Begin, End, quan sát cách hiển thị của một số từ khóa trong chương trình. Trong ngôn ngữ C++: main, include, while, void, - Các ngôn ngữ lập trình thường cung cấp một số đơn vị chương trình có sẵn trong các thư viện Tên chuẩn: chương trình giúp người lập trình có thể thực hiện - Là những tên được ngôn ngữ lập trình (NNLT) dùng với được nhanh một số thao tác thường dùng. ý nghĩa nào đó trong các thư viện của NNLT, tuy nhiên người lập trình có thể sử dụng với ý nghĩa khác. - Giáo viên chỉ cho học sinh một số tên chuẩn trong ngôn ngữ Pascal. Ví dụ: Một số tên chuẩn GV: Đưa ra ví dụ: Để viết chương trình giải phương Trong ngôn ngữ Pascal: Real, Integer, Sin, Cos, Char, trình bậc hai ta cần khai báo những tên sau: Trong ngôn ngữ C++: cin,cout. Getchar + a,b,c là ba tên để lưu ba hệ số của chương trình. Tên do người lập trình tự đặt + X1,X2 là 2 tên dùng để lưu nghiệm nếu có.
  4. + Delta là tên để lưu giá trị của Delta. - Được xác định bằng cách khai báo trước khi sử dụng và không được trùng với tên dành riêng. - Các tên trong chương trình không được trùng nhau - Hằng thường có 2 loại, hằng được đặt tên và hằng không được đặt tên. Hằng không được đặt tên là b. Hằng và biến những giá trị viết trực tiếp khi viết chương trình. Mỗi ngôn ngữ lập trình có một quy định về cách Hằng: Là các đại lượng có giá trị không đổi trong quá trình viết hằng riêng.Hằng được đặt tên cũng có cách thực hiện chương trình. đặt tên cho hằng khác nhau. - Các ngôn ngữ lập trình thường có: - Biến là đối tượng được sử dụng nhiều nhất trong + Hằng số học : số nguyên hoặc số thực. khi viết chương trình. Biến là đại lượng có thể thay + Hằng xâu : là chuỗi ký tự đặt trong d6áu nháy “ hoặc ”” đổi được nên thường được dùng để lưu trữ kết qủa, + Hằng Logic : là các giá trị đúng hoặc sai làm trung gian cho các tính toán, Mỗi loại ngôn ngữ có những loại biến khác nhau và cách khai báo Biến: cũng khác nhau. - Là đại lượng được đặt tên, giá trị có thể thay đổi được trong chương trình. - Khi viết chương trình, người lập trình thường có - Các NNLT có nhiều loại biến khác nhau. nhu cầu giải thích cho những câu lệnh mình viết, - Biến phải khai báo trước khi sử dụng. để khi đọc lại được thuận tiện hoặc người khác đọc có thể hiểu được chương trình mình viết, do vậy các ngôn ngữ lập trình thường cung cấp cho ta cách để đưa các chú thích vào trong chương trình. c. Chú thích - Ngôn ngữ khác nhau thì cách viết chú thích cũng khác nhau. - Trong khi viết chương trình có thể viết các chú thích cho chương trình. Chú thích không làm ảnh hưởng đến GV: Mở một chương trình Pascal đơn giản có chứa chương trình. các thành phần là các khái niệm của bài học, nếu không có máy để giới thiệu thì có thể sử dụng bản in Trong Pascal chú thích được đặt trong { và } hoặc (* và *) sẵn khổ lớn. chỉ cho học sinh từng khái niệm được thể hiện trong chương trình . Trong C++ Chú thích đặt trong /* và */ V. Cũng cố - Nhắc lại một số khái niệm mới - Cho bài tập về nhà VI. Dặn dò - Học bài, xem trước phần bài tập - Chuẩn bị tiết sau làm bài tập Tuần 03 Ngày soạn: Tiết 03 Ngày dạy: BÀI TẬP I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Cũng cố lại kiến thức về ngôn ngữ lập trình, chương trình dịch - Biết ngôn ngữ lập trình có 3 thành phần cơ bản là: bảng chữ cái, cú pháp và ngữ nghĩa. 2. Kỹ năng - Biết các thành phần cơ bản của Pascal: Bảng chữ cái, tên, tên chuẩn, tên riêng (từ khóa), hằng và biến. Quy tắc đặt tên trong Pascal, biết đặt tên đúng. - Phân biệt được tên, hằng và biến - Biết một trong những nhiệm vụ quan trọng của chương trình dịch là phát hiện lỗi cú pháp của chương trình nguồn. 3. Thái độ - Nghiêm túc, tích cực trong học tập. II. CHUẨN BỊ
  5. 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Học bài cũ, đọc trước SGK bài mới. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Kiểm tra trong khi giảng bài 3. Bài mới TG Hoạt động của GV & HS Nội dung Gv:Trước khi giải bài tập trong SGK, các em tự ôn lại một số kiến thức mà chúng ta đã học ở các Câu 1: bài trước dựa trên yêu cầu của câu hỏi trang 13 - Ngôn ngữ bậc cao gần với ngôn ngữ tự nhiên hơn, thuận tiện SGK. cho đông đảo người lập trình. Đặt câu hỏi số 1: Tại sao người ta phải xây - Chương trình viết bằng ngôn ngữ bậc cao nói chung không dựng các ngôn ngữ lập trình bậc cao? phụ thuộc vào phần cứng máy tính và một chương trình có thể Hs: - Suy nghĩ để đưa ra phương án trả lời. thực hiện trên nhiều máy tính khác nhau. - Suy nghĩ, trả lời câu hỏi. - Chương trình viết bằng ngôn ngữ bậc cao dễ hiểu, dễ hiệu Gv: Nhận xét, đánh giá và bổ sung hướng dẫn chỉnh và dễ nâng cấp. cho học sinh trả lời câu hỏi số 1: - Ngôn ngữ bậc cao cho phép làm việc với nhiều kiêu dữ liệu và cách tổ chức dữ liệu đa dạng, thuận tiện cho mô tả thuộc toán. Đặt câu hỏi 2: Chương trình dịch là gì? Tại sao cần phải có chương trình dịch? Câu 2: Hs: Suy nghĩ, trả lời câu hỏi, cho ví dụ - Chương trình dịch là chương trình đặc biệt, có chức năng chuyển đổi chương trình được viết trên ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy tính cụ thể. Gv:Đặt câu hỏi 3: Biên dịch và thông dịch khác Chương trình nguồn -> Chương trình dịch -> Chương trình đích nhau như thế nào? Hs: Suy nghĩ, trả lời, giải thích từng câu hỏi, Câu 3: - Trình biên dịch: duyệt, kiểm tra, phát hiện lỗi, xác định Gv: Phân tích câu trả lời của học sinh. 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 một 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. Trình thông dịch lần lượt dịch từng câu lệnh ra ngôn ngữ máy rồi thực hiện ngay câu lệnh vừa dịch được hoặc báo lỗi nếu không dịch được. Gv: Đặt câu hỏi 4: Hãy cho biết các điểm khác nhau giữa tên dành riêng và tên chuẩn? Câu 4: - Gọi hs trả lời và cho ví dụ - Tên dành riêng không được dùng khác với ý nghĩa đã xác Hs: Suy nghĩ, trả lời, giải thích từng câu hỏi, định, tên chuẩn có thể dùng với ý nghĩa khác. Gv: Phân tích câu trả lời của học sinh. VD: Tên dành riêng trong Pascal: program, uses, const, type, var, Gv: Đặt câu hỏi 5: Hãy tự viết ra ba tên đúng begin, end. theo quy tắc của Pascal Tên chuẩn: trong Pascal abs, integer. - Gọi 3 học sinh lên bảng cho ví dụ về tên do người lập trình đặt. Hs: Suy nghĩ trả lời Gv: Nhận xét, sửa chữa, góp ý. Câu 5: Gợi ý: Trong Pascal tên (do người lập trình đặt) được đặt tuân theo các quy tắc sau: - Chỉ bao gồm chữ cái, chữ số và dấu gạch dưới; Gv: Đặt câu hỏi 6: Hãy cho biết những biểu diễn - Không bắt đầu bằng chữ số; nào dưới đây không phải là biểu diễn hằng trong - Độ dài theo quy định của chương trình dịch (TP không quá Pascal và chỉ rõ trong từng trường hợp: 127 kí tự, Free Pascal không quá 255 kí tự). a) 150.0 b) -22
  6. c) 6,23 d) ‘43’ - Tuy nhiên, không nên đặt tên quá dài hay quá ngắn mà nên e) A20 f) 1.06E-15 đặt sao cho gợi ý nghĩa đối tượng mang tên đó. g) 4+6 h) ‘C i) ‘TRUE’ Câu 6: Hs: Suy nghĩ trả lời -Những biểu diễn sau đây không phải là hằng trong Pascal: Gv: Nhận xét, sữa chữa, góp ý 6,23 dấu phẩy phải thay bằng dấu chấm; A20 là tên chưa rõ giá trị; 4+6 là biểu thức hằng trong Pascal chuẩn cũng được coi là hằng trong Turbo Pascal; ‘TRUE’ là hằng xâu nhưng không là hằng lôgic. V. Cũng cố - Ôn lại các khái niệm, các tên - Các qui tắt đặt tên, nhận biết tên hợp lệ và không hợp lệ VI. Dặn dò - Xem lại phần bài tập đã làm, đọc bài đọc thêm 2 : ngôn ngữ pascal - Chuẩn bị bài Cấu trúc chương trình Tuần 04 Ngày soạn : Tiết 04 Ngày dạy : CHƯƠNG II. CHƯƠNG TRÌNH ĐƠN GIẢN Bài 3: CẤU TRÚC CHƯƠNG TRÌNH I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Cấu trúc chung của một chương trình và cấu trúc chung của một chương trình Pascal 2. Kỹ năng - Hiểu và phân biệt các thành phần trong cấu trúc của một chương trình. - Nhận biết được các thành phần của một chương trình đơn giản. 3. Thái độ - Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, luôn tự tìm hiểu học tập II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Học bài cũ, đọc trước SGK bài mới. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Câu 1: Nêu các thành phần của ngôn ngữ lập trình? Câu 2: Trong Pascal có máy loại tên?nêu quy tắc đặt tên? 3. Bài mới TG Hoạt động của GV và HS Nội dung GV : 1. Cấu trúc chung HS: Lắng nghe, ghi chép - Mỗi chương trình nói chung gồm 2 phần: phần khai báo và phần thân chương trình. GV : Thuyết trình đưa ra kiến thức [ ] HS : Lắng nghe, ghi chép . GV : Phần khai báo sẽ báo cho máy biết 2. Các thành phần của chương trình chương trỉnh sẽ sử dụng những tài nguyên nào của máy. a.Phần khai báo
  7. - Có thể khai báo tên chương trình, hằng được đặt tên, biến, thư GV : Mỗi ngôn ngữ lập trình có cách khai viện, chương trình con, báo khác nhau và tùy thuộc vào ngôn ngữ mà ta cần tìm hiểu xem trong chương trình ta cần Khai báo tên chương trình khai báo những gì . - Trong Turbo pascal Program ; - Tên chương trình do người lập trình tự đặt theo đúng quy tắc đặt GV : Thư viện chương trình thường chứa tên. những đoạn chương trình lập sẵn giúp người Ví dụ : Program Bai_1; lập trình thực hiện một số công việc thường Program Tong; dùng, các đoạn chương trìnhnày cực kỳ hữu ích cho gnười lập trình, nhất là trong những Khai báo thư viện: ngôn ngữ lập trình tiên tiến hiện nay. - Trong ngôn gnữ Pascal : Uses ; GV : Lấy một ngôn ngữ lập trình mới nhất - Trong ngôn ngữ C++ : hiện nay, chẳng hạn Visual Basic.NET, lấy #include một số lệnh để học sinh thấy được sự tiện dụng khi sử dụng thư viện. Ví dụ: Trong Turbo Pascal : Uses CRT, GRAPH; GV : Khai báo hằng là việc đặt tên cho hằng Trong VISUAL STUDIO 2005 : để tiện khi sử dụng và tránh việc phải viết lặp Imports System.Xml lại nhiều lần cùng một hằng trong chương trình. Khai báo hằng còn tiện lợi hơn khi cần thay đổi giá trị của nó trong chương trình. Khai báo hằng : - Những hằng sử dụng nhiều lần trong chương trình thường được GV : Lập trình bằng ngôn ngữ nào cần tìm đặt tên cho tiện khi sử dụng. hiểu cách khai báo hằng của ngôn ngữ ấy. Ví dụ: Trong Pascal : GV : Nếu có thể giáo viên giải thích để học Const N = 100; sinh có thể hiểu được rằng, khai báo biến là e = 2.7; xin máy tính cấp cho chương trình một vùng Trong C++ : nhớ để lưu trữ và xử lý thông tin trong bộ nhớ Const int N = 100; trong. Const float e = 2.7 Khai báo biến : GV : Mỗi ngôn ngữ lập trình có cách tổ chức - Mọi biến sử dụng trong chương trình đều phải khai báo để chương trình khác nhau, thường thì phần chưoyng trình dịch biết để xử lý và lưu trữ. thân chứa các câu lệnh của chương trình. - Biến chỉ mang một giá trị gọi là biến đơn (Khai báo biến sẽ trình bày ở bài 5) GV : Đưa ra những ví dụ khác nhau về cách viết thân chương trình trong các ngôn ngữ lập Phần thân chương trình : trình khác nhau. - Thân chương trình thường là nơi chứa toàn bộ các câu lệnh của chương trình hoặc lời gọi chương trình con. - Thân chương trình thường có cặp dấu hiệu bắt đầu và kết thúc chương trình Ví dụ: Trong ngôn gnữ Pascal Begin [ ] End. GV : Cho học sinh quan sát 2 chương trình trong 2 ngôn ngữ khác nhau là Pascal và C++. 3. Ví dụ chương trình đơn giản Xét hai chương trình đơn giản trong 2 ngôn ngữ khác nhau sau đây : HS : Quan sát và nhận xét về cách viết của hai chương trình trong 2 ngôn ngữ khác Chương trình 1 : Trong ngôn ngữ Turbo Pascal nhau. Program VD; Thông qua đó học sinh cần nhận ra : hai Begin chương trình cùng thực hiện một công việc Write(‘Chao cac ban’); nhưng viết bằng hai ngôn ngữ khác nhau nên Readline;
  8. hệ thống các câu lệnh trong chương trình End. cũng khác nhau. Chương trình 2 : Trong ngôn ngữ C++ Có thể thêm câu lệnh hiển thị một xâu vào #include trong chương trình Pascal để thể hiện rõ hơn Main() là nếu muốn đưa ra câu thông báo thì ta có { thể sử dụng lệnh. Writeln và xâu được để Printf(“Chao cac ban”); trong dấu nháy đơn . } V. Cũng cố - Nhắc lại một số khái niệm mới - Cho một chương trình mẫu về nhà yêu cầu học sinh phân biệt và chỉ rõ từng thành phần của chương trình đó. VI. Dặn dò - Xem lại nội dung đã học - Chuẩn bị bài một số kiểu dữ liệu chuẩn Tuần 05 Ngày soạn: Tiết 05 Ngày giảng : Bài 4: MỘT SỐ KIỂU DỮ LIỆU CHUẨN Bài 5: KHAI BÁO BIẾN I. MỤC ĐÍCH YÊU CẦU 1. Kiến thức - Biết được cấu trúc chung của một chương trình. - Biết được một số kiểu dữ liệu chuẩn: nguyên, ký tự, logic, thưc. - Biết đực cấu trúc chung của khai báo biến. 2. Kỹ năng - Sử dụng được kiểu dữ liệu và khai báo biến để viết được một chương trình đơn giản - Hiểu được khai báo biến. Khai báo đúng, nhận biết được khai báo sai. 3. Thái độ - Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, luôn tự tìm hiểu học tập II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Học bài cũ, đọc trước SGK bài mới. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Câu 1: Nêu cấu trúc chung của chương trình? Cách khai báo các thành phần của chương trình? 3. Bài mới TG Hoạt động của GV & HS Nội dung GV : Khi cần viết chương trình quản lý học sinh ta cần sử lý thông tin ở những dạng nào ? NNLT Pascal có một số kiểu dữ liệu chuẩn sau : HS : Suy nghĩ, trả lời câu hỏi của GV 1. Kiểu số nguyên GV : Phân tích câu trả lời của học sinh, đưa ra một vài dạng thông tin như sau : Kiểu Số Miền giá trị - Họ tên học sinh là những thông tin dạng Byte văn bản hay là dạng ký tự . BYTE 1 0 255 - Điểm của học sinh là các thông tin các số INTEGER 2 -215 215 – 1 thực . WORD 2 0 216 – 1 - Số thứ tự của học sinh là các số nguyên. LONGINT 4 -231 231 – 1 - Một số thông tin khác lại chỉ cần biết chúng là đúng hay sai . 2. Kiểu thực
  9. GV : Thuyết trình đưa ra một số bổ sung như - Có nhiều kiểu cho giá trị là số thực nhưng hay dùng một số kiểu sau : sau : - Ngôn ngữ lập trình nào cũng đưa ra một Tên kiểu Miền giá trị Số Byte số kiểu dữ liệu chuẩn đơn giản, từ những REAL 0 hoặc nằm trong (10-38 6 kiểu đơn giản này ta có thể xây dựng 1038) thành những kiểu dữ liệu phức tạp hơn. EXTENDED 0 hoặc nằm trong (10-4932 10 - Kiểu dữ liệu nào cũng có miền giới hạn 104932) của nó, máy tính không thể lưu trữ tất cả các số trên trục số nhưng nó có thể lưu 3. Kiểu kí tự trữ với độ chính xác cực cao. - Tùy thuộc vào ngôn ngữ lập trình mà tên - Tên kiểu: CHAR của các kiểu dữ liệu khác nhau và miền - Miền giá trị: Là các kí tự trong bảng mã ASCII gồm 256 ký giá trị của các kiểu dữ liệu này cũng khác tự nhau. - Mỗi ký tự có 1 mã tương ứng từ 0 đến 255 - Với mỗi kiểu dữ liệu người lập trình cần - Các kí tự có quan hệ so sánh, việc so sánh dựa trên mã của ghi nhớ tên kiểu, miền giá trị và số lượng từng kí tự. ô nhớ để lưu một giá trị thuộc kiểu đó. - Trong lập trình nói chung thì kiểu kí tự Ví dụ: Trong bảng mã ASCII, các kí tự trong bảng chữ cái tiếng thường là tập các kí tự trong các bảng mã Anh xếp liên tiếp vối nhau, các chữ số cũng xếp liên tiếp, cụ thể: A kí tự, trong các bảng mã hóa kí tự người mã 65; a mã 97, 0 mã 48 ta quy định có bao nhiêu kí tự khác nhau và mỗi kí tự có một mã thập phân tương 4. Kiểu logic ứng. Để lưu các giá trị là kí tự thì phải lưu mã thập phân tương ứng của nó . - Tên kiểu : Boolean GV : Đặt câu hỏi: Em biết những bảng mã - Miền giá trị : Chỉ có 2 giá trị là TRUE (Đúng) hoặc FALSE nào? (Sai) HS : HS sẽ đưa ra một số bảng mã nhưng GV - Một số ngôn ngữ có cách mô tả các giá trị logic bằng những chú ý các em NNLT Pascal chỉ sử dụng bảng cách khác nhau. mã ASCII cho kiểu kí tự. - Khi viết chương trình bằng ngôn ngữ lập trình nào thì cần tìm - Kiểu logic là kiểu thường chỉ có 2 giá trị hiểu đặc trưng của các kiểu dữ liệu của ngôn ngữ đó. đúng – sai. Mỗi ngôn ngữ khác nhau lại có cách mô tả kiểu logic khác nhau, Pascal dùng True – False nhưng một số ngôn ngữ khác lại mô tả bằng 0 – 1, Có ngôn ngữ lại không có kiểu logic mà người lập trình phải tự tìm cách để thể hên những giá trị dạng này. GV : Khai báo biến là chương trình báo cho - Trong ngôn ngữ Pascal, biến đơn được khai báo như sau : máy biết phải dùng những tên nào trong Var : chương trình. HS : Lắng nghe và ghi chép Trong đó: Ví dụ : - Để giải phương trình bậc hai + Var : là từ khóa dùng để khai báo biến ax2 + bx + c = 0 + Danh sách biến : tên các biến cách nhau bởi dấu phẩy cần khai báo các biến như sau: + Kiểu dữ liệu : là một kiểu dữ liệu nào đó của ngôn ngữ Pascal Var a, b, c, x1, x2, delta : real; + Sau Var có thể khai báo nhiều danh sách biến có những kiểu - Để tính chu vi và diện tích tam giác cần dữ liệu khác nhau khai báo các biến sau: + Cần đặt tên biến sao cho gợi nhớ đến ý nghĩa của nó. Var a, b, c, p, s, cv: Real; + Không nên đặt tên quá ngắn hay quá dài, dễ dẫn tới mắc lỗi Trong đó : hoặc hiểu nhầm. a, b, c: dùng để lưu độ dài 2 cạnh của Khai báo biến cần quan tâm đến phạm vi giá trị của nó . tam giác. p: nửa chu vi tam giác Ví dụ 1: cv, s: chu vi và diện tích tam giác Khai báo biến giải phương trình ax2+bx+c=0(a<>0) GV : Đặt câu hỏi: Khi khai báo biến cần chú ý những điều gì ? Var a, b, c, x1, x2, Delta :Real; HS : Suy nghĩ trả lời câu hỏi Ví du 2: Khai báo biến giải hệ phương trình bậc nhất
  10. a1x+b1y=c1 GV : Phân tích câu trả lời của học sinh. a2x+b2y=c2 {Phương pháp thông thường} GV: Lấy ví dụ về khai báo biến giải phương Var a1, a2, b1, b2, c1, c2, x, y:Real; trình bậc 2, giải hệ phương trình bậc nhất, tính {Phương pháp định thức} diên tích tam giác khi biết 3 cạnh. Var a1, a2, b1, b2, c1, c2, x, y:Real; GV: Phân tích ví dụ đầu, 2 ví du sau cho học D, Dx, Dy :real sinh phân tích và tự khai báo GV: Phân tích và chữa lại Ví du 3: khai báo biến tính diện tích tam giác biết độ dài 3 cạnh Var a, b, c, p, S: Real; V. Cũng cố - Nhắc lại các kiểu dữ liệu đơn giản hay dùng. - Cho về nhà một số ví dụ về việc lưu trữ trong cuộc sống và yêu cầu học sinh tìm kiểu dữ liệu tương ứng VI. Dặn dò: học bài và chuẩn bị trước bài 6. phép toán, biểu thức, câu lệnh gán Tuần 06 Ngày soạn: Tiết 6 Ngày giảng : Bài 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN I. MỤC ĐÍCH, YÊU CẦ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 số hình thức trong ngôn ngữ lâp trình - Biết được chức năng của câu lệnh gán - Biết được cấu trúc câu lệnh gán và một số hàm chuẩn 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 lệnh gán để viết chương trình. 3. Thái độ - Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, luôn tự tìm hiểu học tập. II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Học bài cũ, đọc trước SGK bài mới. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Câu 1: Nêu cú pháp khai báo biến trong Pascal? Cho ví dụ. 3. Bài mới TG Hoạt động của GV & HS Nội dung GV : Dẫn dắt vào bài: Trong khi viết chương trình ta thường phải thực hiện các tính toán, 1. Phép toán thực hiện các so sánh để đưa ra quyết định xem NNLT Pascal sử dụng một số phép toán sau: làm việc gì? Vậy trong chương trình ta viết thế - Với số nguyên : +, -, * (nhân), div (chia lấy nguyên), mod nào? Có giống với ngôn ngữ tự nhiên hay (chia lấy dư) không? Tất cả các ngôn ngữ có sử dụng chúng - Với số thực : +, -, *, / (chia) một cách giống nhau không ? - Các phép toán quan hệ , >=, =, <>: Cho kết qủa là một giá trị logic (True hoặc False) GV : Toán học có những phép toán nào? HS : Đưa ra một số phép toán thường dùng trong toán học
  11. GV : Chúng có dùng được trong các ngôn ngữ - Các phép toán Logic : NOT (phủ định), OR (hoặc), AND lập trình ? (và): thường dùng để kết hợp nhiều biểu thức quan hệ với Chỉ một số phép dùng được, một số phép phải nhau. xây dựng từ các phép toán khác. VD : Phép lũy thừa không phải ngôn ngữ nào cũng viết được. GV : Mỗi ngôn ngữ khác nhau lại có cách kí hiệu phép toán khác nhau. GV : Trong toán học, biểu thức là gì? HS : Đưa ra khái niệm. 2. Biểu thức số học GV : Đưa ra khái niệm biểu thức trong lập trình. - Là một dãy các phép toán +, -, *, /. Div và Mod từ các hằng, biến kiểu số và các hàm. GV: Cách viết các biểu thức này trong lập - Dùng cặp dấu () để qui định trình tự tính toán. trình có giống cách viết trong toán học ? Vd: 2a +3b + c -> 2*a + 3*b + c HS : Đưa ra ý kiến của mình GV : Phân tích ý kiến của học sinh. Thứ tự thực hiện các phép toán : GV : Đưa ra cách viết biểu thức và thứ tự thực hiện phép toán trong lập trình. - Trong ngoặc trước, ngoài ngoặc sau. - Nhân chia trước cộng trừ sau. GV : Cách viết biểu thức phụ thuộc cú pháp - Giá trị của biểu thức có kiểu là kiểu của biến hoặc hằng có từng ngôn ngữ lập trình. miền giá trị lớn nhất trong biểu thức. Đưa ra một số biểu thức toán học và yêu cầu 3. Hàm số học chuẩn các em viết chúng trong ngôn ngữ Pascal. - Các ngôn ngữ lập trình thường cung cấp sẵn một số hàm số học để tính một số giá trị thông dụng. HS : Gọi một vài học sinh lên bảng viết. - Cách viết : Tên_hàm (Đối số) - Kết qủa của hàm phụ thuộc vào kiểu của đối số. GV : Đặt câu hỏi, muốn tính X 2 ta viết thế - Đối số là một hay nhiều biểu thức số học đặt trong dấu ngoặc nào? () sau tên hàm. HS : Có thể đưa ra là X*X - Bản thân hàm cũng có thể coi là biểu thức số học và có thể tham gia vào biểu thức như toán hạng bất kỳ. GV : Muốn tính ,sinx, cosx, làm thế Bảng một số hàm chuẩn: nào ? (Theo dõi SGK ) HS : Chưa biết cách tính GV : Để tính các giá trị đó một cách đơn giản, người ta xây dựng sẵn một số đơn vị chương trình trong các thư viện chương trình giúp người lập trình tính toán nhanh các giá trị thông dụng. GV : Với các hàm chuẩn, cần quan tâm đến kiểu của đối số và kiểu của giá trị trả về. VD : Sinx thì được đo bằng độ hay radian ? GV : Trong lập trình thường ta phải so sánh hai giá trị nào đó trước khi thực hiện lệnh nào 4. Biểu thức quan hệ đó. Biểu thức quan hệ còn được gọi là biểu - Có dạng như sau: thức so sánh 2 giá trị, cho kết quả là đúng hoặc sai (logic). Trong đó: biểu thức 1 và biểu thức 2 phải cùng kiểu. - Biểu thức quan hệ được thực hiện theo trình tự: VD : 3>5: Cho kết quả sai + Tính giá trị các biểu thức + Thực hiện phép toán quan hệ + Kết quả của biểu thức quan hệ thuộc kiểu logic Ví dụ: A < B;
  12. 2*A >= 4+ B GV : Đặt câu hỏi, muốn so sánh nhiều điều kiện đồng thời làm thế nào? 5. Biểu thức logic - Biểu thức logic đơn giản là hằng hoặc biến logic. HS : Đưa ra ý kiến của mình. (và, hoặc, ) - Biểu thức logic thường dùng để liên kết nhiều biểu thức quan hệ lại với nhau bởi các phép toán logic. - Kết quả của biểu thức logic là true hoặc false Đưa ra ví dụ và cách viết đúng trong ngôn ngữ Ví dụ: Pascal - Ba số dương a, b, c là độ dài ba cạnh tam giác nếu biểu thức sau cho giá trị đúng Chú ý : Mỗi ngôn ngữ có cách viết khác nhau. (a+ b > c) and (b+ c >a) and (c+ a >b) - Biểu thức điều kiện 0≤X≤5 được viết như sau: (x >= 0) and (x := ; - Trong đó biểu thức phải phù hợp với tên biến. Có nghĩa là kiểu của tên biến phải cùng kiểu với kiểu của biểu thức hoặc phải bao hàm kiểu của biểu thức. - Hoạt động của lệnh gán : Tính giá trị của biểu thức sau đó ghi giá trị đó vào tên biến. Ví dụ: GV : Minh họa một vài lệnh gán bằng một ví X1 := (-b –sqrt(b*b – 4*a*c))/(2*a); dụ trực quan trên bảng hoặc trên màn hình. X2 := (-b +sqrt(b*b – 4*a*c))/(2*a); I := I + 1; J := J – 2; Trong đó : lệnh thứ 3 tăng giá trị của I một đơn vị, lệnh thứ 4 giảm giá trị biến J hai đơn vị. V. Cũng cố - Nhắc lại một số khái niệm mới. - Cho bài tập về nhà, ngoài bài tập có trong sách có thể cho thêm nhiều biểu thức logic để học sinh về nhà tính toán tìm giá trị của nó, cho học sinh một số biểu thức trong toán học và yêu cầu viết nó trong tin học (NNLT); có thể cho thêm bài theo cột, một cột là biểu thức toán học, một cột là biểu thức trong tin học tương ứng và tìm chỗ sai của biểu thức so với trong toán. VI. Dặn dò: - Làm bài tập và học bài - Chuẩn bị bài . Tuần 7 Ngày soạn: Tiết 7 Ngày giảng : Bài 7: CÁC THỦ TỤC CHUẨN VÀO/RA ĐƠN GIẢN 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 ĐÍCH, YÊU CẦU 1. Kiến thức - Biết được ý nghĩa của các 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. - Biết được các bước để hoàn chỉnh một chương trình. - Biết được các file chương trình cơ bản của Turbo Pascal 7.0
  13. 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. - Biết khởi động và thoát khỏi hệ soạn thảo Turbo Pascal. - Soạn thảo được một chương trình vào máy - Dịch được chương trình để phát hiện lỗi cú pháp. - Thực hiện chương trình để nhập dữ liệu và thu kết quả, tìm lỗi của thuật toán và sủa lỗi. 3. Thái độ - Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, luôn tự tìm hiểu học tập II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Học bài cũ, đọc trước SGK bài mới. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Câu 1: Kể tên và cho ví dụ về biểu thức số học? Câu 2: Nêu cú pháp câu lệnh gán và cho ví dụ 3. Bài mới TG Hoạt động của GV & HS Nội dung GV: Khi sử dụng các ứng dụng ta thường nhập thông tin vào, như vậy bằng cách nào ta nhập được thông tin nào khi lập trình? Làm cách nào để nhập giá trị từ bàn phím vào cho biến. Trong ngôn ngữ Pascal các thủ tục vào ra chuẩn viết như sau : GV: Diễn giải hoạt động của READ/READLN, nêu sự khác nhau khi dùng Read/Readln. 1. Nhập dữ liệu từ bàn phím GV: Mỗi ngôn ngữ có cách nhập thông tin vào khác nhau. - Ta dùng thủ tục chuẩn READ hoặc READLN có cấu trúc như sau: READ/READLN( , , ); GV: Đưa ra hai ví dụ về chương trình có nhập thông tin vào từ bàn Ví dụ: Read(N); phím . Readln(a,b,c); Chú ý : Khi nhập dữ liệu từ bàn phím Ví dụ 1 : Xét chương trình sau: READ và READLN có ý nghĩa như nhau, Program VD; thường hay dùng READLN hơn. READLN Uses crt; luôn chờ gõ phím Enter. Var Tuoi: Byte Begin Clrscr; Ví dụ 2 : Xét chương trình sau: Write(‘Moi ban cho biet tuoi cua ban’); Readln(tuoi); Program VD; Write(‘Cam on, tuoi cua ban la’,tuoi, ‘Tuoi’); Uses crt; Readln; Var a, b, c : Integer; End. Begin Clrscr; GV : Chạy chương trình cho học sinh quan sát, nhận xét về chương Write(‘Moi ban nhap 3 so:’); trình . Readln(a, b, c); Giải thích việc nhập giá trị cho nhiều biến đồng thời . Write(‘Ban vua nhap vao 3 so:, a, b, c); Có thể thay đổi lệnh Readln(a, b, c) trong ví dụ 2 thánh Read(a, b, Readln; c), chạy chương trình để học sinh thấy sự khác nhau khi sử dụng End. hai lệnh này . GV : Ta thấy ở ví dụ 2 của phần 1 việc ghi ra dữ liệu thì 3 giá trị a, b, c dính liền vào nhau và người sử dụng không thể phân biệt được Việc lập dữ liệu cho nhiều biến thì giá trị mỗi biến phải cách nhau ít nhất một dấu cách
  14. giá trị của từng biến. Vậy làm thế nào và có những cách nào để hiển hoặc dấu Enter,máy sẽ gán giá trị cho các thị dữ liệu theo ý muốn của người lập trình . biến theo thứ tự như trong lệnh tương ứng . GV : Mỗi ngôn ngữ có cách đưa thông tin ra màn hình khác nhau. Lấy thêm ví dụ về các thủ tục đưa thông tin ra màn hình của ngôn 2. Đưa dữ liệu ra màn hình ngữ khác C++: cout . - Để đưa dữ liệu ra màn hình tại vị trí con trỏ, ta dùng thủ tục WRITE hoặc GV : Giải thích sự khác nhau giữa Write, Writeln. WRITELN với cấu trúc : Lấy ví dụ minh họa cụ thể bằng chương trình. Write/Writeln( , , , ); việc khác nhau giữa 2 lệnh Write và Writeln. - Trong đó các Giá trị có thể là tên biến, Minh họa quy cách đưa thông tin ra bằng chương trình. tên hằng, giá trị cụ thể, biểu thức hoặc Sửa lại ví dụ 2 của phần 1 để dữ liệu của 3 số phân cách nhau – tên hàm. người dùng có thể phân biệt được. Ví dụ: Write(a, b, c); Writeln(‘Gia tri cua N la : ’,N); GV : Đưa ra 2 ví dụ : -Thủ tục Writeln sau khi đưa kết quả ra sẽ Ví dụ 1: chuyển con trỏ màn hình xuống đầu dòng Để nhập giá trị từ bàn phím ta thường dùng: tiếp theo . Write(‘Nhap gia tri cua M:’); {1} Ngoài ra trong TP còn có qui cách đưa Readln(M) {2} thông tin ra như sau : Kết quả thực hiện : : Nhap gia tri cua M: Còn {2} Dùng để đọc giá trị và gán cho biến M. Kết quả khác: : Cấu trúc {1}, {2} gọi là giao tiếp người – máy. Ví dụ: Write(N : 8); Writeln(‘X = ’,X:8:3); Ví dụ 2 : Xét chương trình đầy đủ sau: Program VD2; Var N : Integer; Begin Write(‘lop ban co bao nhieu nguoi:’); Readln(N); Write(‘Vay la ban co’,N -1,‘nguoi ban trong lop’); Write(‘Go Enter de ket thuc chuong trinh’); Readln; End. Màn hình làm việc ngôn ngữ Pascal có dạng như sau: GV : Giới thiệu một số tập tin vần thiết để Turbo Pascal có thể chạy được, hướng dẫn các em cách khởi động Pascal trên máy tính. Turbo.exe (file chạy) Một số thao tác thường dùng trong Turbo.tpl (file thư viện) Pascal: Turbo.tph (file hướng dẫn) -Xuống dòng: Enter -Ghi file vào đĩa: F2 GV : Giới thiệu một số thao tác thường dùng khi soạn thảo chương -Mở file đã có: F3 trình trong môi trường soạn thảo Turbo Pascal . -Biên dịch chương trình: Alt + F9 -Soát lỗi chương trình: F9 GV : Thực hiện một vài lần các thao tác này để các em nhận thấy -Chạy chương trình: Ctrl + F9 mức độ tiện lợi của nó khi soạn thảo cũng như chạy chương trình . -Đóng cửa sổ chương trình: Alt + F3 -Chuyển qua lại giữa các cửa sổ: F6 GV : Viết một chương trình ví dụ, thực hiện các thao tác sửa lỗi -Xem lại màn hình kết qủa: Alt + F5
  15. Có thể lấy ví dụ yêu cầu người dùng nhập vào năm sinh, trả ra kết -Thoát khỏi Turbo Pascal: Alt + X quả là tuổi của người đó. V. Cũng cố - Lấy 1 ví dụ đơn giản lập trình trực tiếp trên máycho học sinh quan sát . - Ra bài tập về nhà . VI. Dặn dò: - Học bài và xem lại nội dung chương 2 - Chuẩn bị bài tập và thực hành 2 Tuần 8 Ngày soạn: Tiết 8 Ngày giảng : BÀI TẬP VÀ THỰC HÀNH 1 I. MỤC ĐÍCH, YÊU CẦU 1. Về kiến thức: - Biết được một chương trình Pascal hoàn chỉnh. - Biết sử dụng một số dịch vụ chủ yếu của Pascal trong soạn thảo, lưu, dịch và thực hiện chương trình. 2. Về kỹ năng: - Viết được chương trình đơn giản, lưu được chương trình trên đĩa, dịch lỗi cú pháp, thực hiện và tìm lỗi thuật toán, hiệu chỉnh. - Bước đầu biết phân tích và hoàn thành một chương trình đơn giản trên Pascal hoặc Free Pascal. 3. Về tư duy và thái độ: - Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc. - Tự giác, tích cực và chủ động hoàn thành. II. CHUẨN BỊ 1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng. 2. Hs: Học bài cũ, chuẩn bị bài thực hành trong SGK. III. PHƯƠNG PHÁP - Thuyết trình, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ: Thông qua bài dạy 3. Bài mới TG Hoạt động của GV và HS Nội dung - GV kiểm tra sự chuẩn bị nội dung thực hành của học sinh. - HS để nội dung thực hành trước mặt. - GV hướng dẫn học sinh khởi động máy, và khởi động chương trình Turbo Pascal hoặc Free Pascal. - Chý ý hướng dẫn của GV để khởi động máy và chương trình Turbo Pascal hoặc Free Pascal. - GV ghi chương trình Giai_PTB2 lên bảng Chương trình giải phương trình bậc - GV yêu cầu học sinh đọc và gõ chương trình Giai_PTB2 như trên hai: bảng. program Giai_PTB2; - Học sinh quan sát trên bảng và độc lập gõ chương trình vào máy. uses crt; var a, b , c, D: real; x1, x2: real; - GV yêu cầu học sinh thực hiện các nhiệm vụ sau: begin + Lưu chương trình bằng cách nhấn phím F2 với tên PTB2.PAS. clrscr; + Dịch và sửa lỗi cú pháp với tổ hợp phím Alt+F9. write(‘ a, b, c: ‘); + Thực hiện chương trình với tổ hợp phím Ctrl+F9. readln(a, b, c); + Nhập các giá trị 1; -3; và 2. Thông báo kết quả của máy đưa ra. D:=b*b - 4a*b*c; x1:= (-b - sqrt(D))/(2*a);
  16. Hs: x2:= -b/a - x1; - Nhấn phím F2 và gõ PTB2.PAS write(‘x1 = ‘, x1 : 6 : 2, ’ - Nhấn phím Alt+F9 ‘x2: = ‘, x2 : 6 : 2); - Nhấn phím Ctrl+F9 readln - x1 = 1.00 x2 = 2.00 end. Gv: - Trở về màn hình soạn thảo bằng phím Enter. - Tiếp tục thực hiện chương trình - Nhập các giá trị 1 ; 0 ; -2. Thông báo kết quả của máy đưa ra. - Nhấn phím Ctrl+F9 readln(a, b, c); x1:= (-b -sqrt(b*b - 4a*b*c))/(2*a); Hs: x2:= -b - x1; - Thông báo lỗi write(‘x1 = ‘, x1 : 6 : 2, ’x2: = ‘, x2 : Gv: Vì sao lại có lỗi xuất hiện? và sửa lại cho đúng 6 : 2); Hs: Suy nghĩ trả lời: do delta âm. + Sửa lại chương trình trên không dùng đến biến D và thực hiện readln(a, b, c); chương trình đã sửa. x1:=(-b - sqrt(b*b - 4a*b*c))/(2*a); - Thông báo lỗi và cho biết vì sao: Do căn bậc hai của một số âm. x2:=(-b+ sqrt(b*b - 4a*b*c))/(2*a); - Thông báo lỗi với lý do delta của pt là số âm. write(‘x1 = ‘, x1 : 6 : 2, ’x2: = ‘, + Thực hiện chương trình đã sửa với bộ dữ liệu 1 ; - 5 ; 6. Thông báo x2 : 6 : 2); kết quả. - x1 = 2.00 x2 = 3.00 + Thực hiện chương trình với bộ dữ liệu 1 ; 1 ; 1. Thông báo kết quả. V. Cũng cố Nhắc lại các bước khi hoàn thành một chương trình. + Soạn chương trình + Biên dịch chương trình + Lưu chương trình + Thực hiện và hiệu chỉnh chương trình. VI. Dặn dò: - Xem lại các bước lập trình trên máy tính - Chuẩn bị bài tập SGK trang 35, 36 Rèn luyện thêm về kỹ năng lập trình cho học sinh Hoạt động của Gv và Hs Ghi bảng GV: yêu cầu học sinh hãy viết một chương trình tính diện tích một tam giác khi biết độ dài ba cạnh của nó. Hs: Nghe và nhận nhiệm vụ. - Phân tích theo yêu cầu của giáo viên. GV định hướng để học sinh phân tich bài toán. + Dữ liệu vào (Input) +Diệu liệu ra (Output) + Cách tính: Hs + Dữ liệu vào ba cạnh a; ; b ; c + Dữ liệu ra S: + p:= (a+b+c)/2 S: = sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c)) + Dữ liệu vào ba cạnh a; ; b ; c - Thực hiện theo yêu cầu của giáo viên: + Dữ liệu ra S: + Soạn chương trình + p:= (a+b+c)/2 + Bấm phím F2 để lưu chương trình. S: = sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c)) +Bấm Alt+F9 để dịch lỗi cú pháp. Chương trình: + Bấm Ctrl+F9 để chạy chương trình. Program Tinh_dien_tich_tam_giac;
  17. + Thông báo kết quả cho giáo viên. Var a, b, c, p, S:real; Begin - GV yêu cầu học sinh nhập dữ liệu và thông báo kết Write(‘a, b, c =’);readln(a, b,c); quả ; P:=(a+b+c)/2; a = 3; b = 6; c = 5 S: = sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c)); a = 2; b = 5; c = 10; Write(); Readln - Hs thông báo kết quả. End. 4. Cũng cố Nhắc lại các bước khi hoàn thành một chương trình. + Phân tích bài toán để xác định dữ liệu vào/ ra. + Lưu chương trình + Xác định thuật toán. + Biên dịch chương trình + Soạn chương trình + Thực hiện và hiệu chỉnh chương trình. 5. Dặn dò: - Xem lại nội dung chương 2 - làm bài tập SGK trang 35, 36 Tuần 9 Ngày soạn: Tiết 9 Ngày giảng : BÀI TẬP I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Cũng cố cho học sinh kiến thức đã đạt được ở bài thực hành 1. 2. Kỹ năng - Rèn luyện kỹ năng vận dụng các thủ tục vào/ra chuẩn. - Biết xác định input và output của bài toán 3. Thái độ - Tự giác, tích cực, chủ động trong giải bài tập II. CHUẨN BỊ 1. Gv - Máy vi tính giới thiệu, minh họa một số bài tập mẫu (chương trình soạn trước). 2. Hs. - Sách giáo khoa, vở bài tập III. PHƯƠNG PHÁP - Thuyết trình, gợi mở, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. - Làm việc theo nhóm. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ Kiểm tra khi giảng bài 3. Bài mới GV Hoạt động của Gv & Hs Nội dung Gv. Câu 1 đến câu 5 chuyển thành câu hỏi đầu giờ dạy, lấy điểm bài cũ. Hs. Trả lời Gv. Nhận xét và cho điểm Gv. yêu cầu 2 học sinh lên bảng làm bài tập Hs. Lên bảng làm theo yêu cầu 6.Bg: Biểu thức sang Pascal (1+z)*(x+y/z)/(a-1/(1+x*x*x)))
  18. 2a abc 7. a) b) b 2 b b c) c) ac a2 b Gv. Nêu đề bài câu 8 Cho học sinh viết biểu thức logic theo đề bài yêu 8. Hãy viết biểu thức cho giá trị true khi tọa độ (x,y) là điểm cầu dưới dạng toán học(ngôn ngữ tự nhiên) nằm trong vùng tô màu kể ca đường biên của hình 2.a và Hs. Trả lời câu hỏi 2.b a. (Y |x| hoặc y=|x|) hay y 1 và y |x| b. |x| 1 và |y| 1 Gv. Nhận xét và cho học sinh khác lên chuyển sang ngôn ngữ pascal Hs. Học sinh làm bài Gv. Nhận xét 2.a 2.b Bg: a. ((y abs(x)) or (y=abs(x))) hay (y =abs(x)) b. (abs(x)<=1) and (abs(y)<=1) Bài tập 9 và 10 Bài tập 9: Gv. Hướng dẫn phân tích bài toán Var a:real; Yêu cầu học sinh hoạt động nhóm giải bài toán Begin trên. Write(‘nhap gia tri cua a=’);readln(a); Hs. Hoạt động nhóm Write(‘Dien tich phan bi gach la’,a*a*pi/2); Báo cáo kết quả. readln Gv. Nhận xét đánh giá theo nhóm End. Chiếu chương trình soạn sẳn Cho chạy với kết quả cụ thể Bài tập 10: Hs. Chú ý lắng nghe và ghi Const g=9.8; Var v, h: real; Begin Write(‘nhap do cao h=’);readln(h); V:=sqrt(2*g*h) Write(‘van toc khi cham dat la v=’,v); readln End. 4. cũng cố - Nhắc lại cấu trúc câu lệnh rẽ nhánh và câu lệnh lặp - Yêu cầu học sinh làm các bài tập còn lại. 5. Dặn dò: Học bài chuẩn bị kiểm tra một tiết. Chương 3: CẤU TRÚC RẼ NHÁNH VÀ LẶP Tuần 10 Ngày soạn: Tiết 10 Ngày giảng : / / . Bài 9: CẤU TRÚC RẼ NHÁNH
  19. I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức: - Hiểu nhu cầu của cáu trúc rẽ nhánh trong biểu diễn thuật toán. - Học sinh nắm vững ý nghĩa và cú pháp của câu lệnh rẽ nhánh dạng khuyết và dạng đủ, hiểu được cách sử dụng câu lệnh ghép. 2. Kĩ năng: - Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản. - Viết được các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng được để thể hiện thuật toán của một số bài toán đơn giản 3. Về tư duy và thái độ: - Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc. - Tự giác, tích cực và chủ động hoàn thành. II. CHUẨN BỊ 1. Giáo viên: + Soạn giáo án. + Chuẩn bị bảng phụ sau: IF Đ Điều kiện Câu lệnh S IF S Đ Câu lệnh 2 Điều kiện Câu lệnh 1 2. Học sinh: học bài cũ, đọc và chuẩn bị bài mới. III. PHƯƠNG PHÁP - Thuyết trình, gợi mở, vấn đáp - Diễn giải, đàm thoại, giải quyết tình huống có vấn đề. - Làm việc theo nhóm. IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: + Chào thầy cô. + Cán bộ lớp báo cáo sỉ số + Chỉnh đốn trang phục 2. Kiểm tra bài cũ: Bài toán: cho 2 số nguyên a, b; tìm Max(a,b). Yêu cầu: viết phần tên, phần khai báo, và câu lệnh nhập a, b. Nêu thuật toán tìm Max(a,b). 3. Bài mới TG Hoạt động của GV & HS Nội dung GV : Đưa ra ví dụ rồi cùng học sinh thảo luận phương pháp giải quyết bài toán. 1. Khái niệm rẽ nhánh Ví dụ : Để viết chương trình giải phương trình bậc 2, ta phải: Kiểm tra Tính = b2 – 4ac; >=0 Sau đó tùy thuộc vào giá trị của mà ta có tính nghiệm hay không. Thông báo Tính và đưa vô nghiệm ra nghiệm Trong thực tế : Kết thúc
  20. - Nếu =0 thì phương trình có nghiệm - Như vậy tùy thuộc vào giá trị của mà ta đưa ra vô nghiệm hay có nghiệm. Đưa ra khái niệm rẽ nhánh trong lập trình. - Hoặc có thể nói : Nếu Như vậy ta thấy một số mệnh đề có dạng + Nếu thì + Nếu thì ngược lại thì Cấu trúc này được gọi là cấu trúc rẽ nhánh Gv. Mỗi NNLT có cách thể hiện rẽ nhánh khác nhau . Cấu trúc rẽ nhánh là một điều khiển chọn thực hiện hay không thực hiện công việc phù hợp một điều kiện đang xảy ra GV : Đưa ra cấu trúc lệnh rẽ nhánh trong Pascal. Nhắc nhở học sinh đây là cấu trúc quan trọng, nó sẽ được sử dụng rất nhiều trong các chương trình sau này. GV : Lưu ý các em sau Then và sau Else chỉ 2. Câu lệnh If – Then có một lệnh chương trình. Pascal dùng câu lệnh If – then để mô tả việc rẽ nhánh tương ứng với hai loại mệnh đề rẽ nhánh như nhau - Dạng thiếu : If Then ; GV : Với hai dạng này, dạng nào dùng thuận - Dạng đầy đủ : tiện hơn ? If Then Else ; HS : Tìm câu trả lời, giáo viên gợi ý để học sinh đưa ra được tùy trường hợp cụ thể mà dùng dạng thiếu hay dạng đủ. Trong đó: - Điều kiện : Là biểu thức quan hệ Logic. - Câu lệnh, câu lệnh 1, câu lệnh 2 là 1 câu lệnh của Pascal Ý nghĩa của các câu lệnh : - Dạng thiếu : Nếu điều kiện đúng thì câu lệnh được thực Đưa ra các ví dụ có sử dụng lệnh rẽ nhánh, hiện, nếu điều kiện sai thì không thực hiện gì nếu không có lệnh rẽ nhánh thì không thể thực - Dạng đủ : Nếu điều kiện đúng thì thực hiện câu lệnh 1, nếu hiện được. điều kiện sai thì thực hiện câu lệnh 2. GV : ở VD3: Cách nào nhanh hơn, tiện hơn? VD 1 : If (X Mod 2 = 0) Then => Cách 2 tiện hơn WRITE(x,’La so chan’); GV : Phân tích sự tiện lợi trong cách 2 và số VD 2: If DELTA a Then max :=b; Cách 2 : If a >b Then max :=a Else max :=b;
  21. GV : Trong câu lệnh If – Then muốn thực hiện nhiều lệnh sau Then hay nhiều lệnh sau 3. Câu lệnh ghép Else làm thế nào ? - Trong ngôn ngữ Pascal, Câu lệnh ghép có dạng: HS : Phát biểu ý kiến của mình. Begin GV : Khi đó ta cần gộp nhiều lệnh đó lại và coi đó là một câu lệnh trong chương trình. Các End ; ngôn ngữ lập trình thường có cấu trúc để giúp ta thực hệin điều này. Chú ý : GV : Giới thiệu lệnh ghép của một vài ngôn - Sau End phải là dấu; và trước Else không chứa dấu ; ngữ lập trình khác - Từ nay nói đến câu lệnh thì đó có thể là câu lệnh đơn hoặc C==: {} là câu lệnh ghép. VB: If – Then – Endif Ví dụ : Đoạn chương trình sau trong ngôn ngữ Pascal có sử dụng chương trình ghép. IF DELTA <0 THEN WRITELN(‘Phuong trinh vo nghiem’) ELSE GV : Chỉ rõ đâu là lệnh ghép trong chuỗi lệnh BEGIN này. X1 :=(-B-SQRT(DELTA))/(2*A); X2 := - B/A – X1; WRITELN(‘X1=’,X1:6:3,’X2=’,X2:6:3); GV nên soạn sẵn hai chương trình này và END; cho các em quan sát cách viết chương trình để các em hình thành dần cách viết một chương trình . Chạy thử chương trình và chỉ rõ các lệnh trong chương trình dùng để làm gì . Nếu có nhiều thời gian, GV có thể gõ từng lệnh 4. Một số ví dụ chương trình, gõ đến đâu giải thích cho học sinh đến đó. Quan sát các chương trình sau trong ngôn ngữ lập trình Pascal . Nếu còn thời gian, gọi học sinh lên bảng viết câu lệnh If – Then cho một số bài toán đơn Ví dụ 1 : giản . Tìm nghiệm thực của phương trình bậc hai AX2 + BX + C= 0 Có thể viết chương trình mẫu cho học sinh xong, yêu cầu các em gõ lại chương trình vừa Ví dụ 2 : được theo dõi mà không cần nhìn vào bài mẫu Tìm số ngày của một năm: Năm nhuận là năm chia hết cho . 400 hoặc chia hết cho 4 nhưng không chia hết cho 100 . 4. Cũng cố - Nhắc lại một số khái niệm mới . - Nhắc lại cấu trúc câu lệnh IF – THEN, IF – THEN – ELSE thông qua các ví dụ . - Cho bài tập về nhà . 5. Dặn dò: học bài và chuẩn bị bài 10. Câu lệnh lặp Tuần 11 Ngày soạn: Tiết 11 Ngày giảng : / / . BÀI TẬP VÀ THỰC HÀNH I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức: - Nắm chắc cấu trúc và sơ đồ thực hiện của cấu trúc rẽ nhánh 2. Kỹ năng: - Rèn luyện kỹ năng sử dụng cấu trúc rẽ nhánh trong việc giải một số bài toán cụ thể
  22. - Làm quen với công cụ phục vụ và hiệu chỉnh chương trình 3. Về tư duy và thái độ: - Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc. - Tự giác, tích cực và chủ động hoàn thành. II. CHUẨN BỊ 1. Giáo viên: SGK, Giáo án 2. Học sinh: SGK, vỏ III. PHƯƠNG PHÁP - Gợi mở, vấn đáp. - Làm việc theo nhóm Tiết 12 IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: - Chào thầy cô. - Cán bộ lớp báo cáo sỉ số - Chỉnh đốn trang phục 2. Kiểm tra bài cũ: Trong khi giảng bài 3.Bài mới: Rèn luyện kỹ năng lập trình hoàn thiện một bài toán a. Mục tiêu: Học sinh biết đọc hiểu đề, phân tích yêu cầu của đề. Từ đó chọn được cấu trúc dữ liệu và lệnh phù hợp để lập trình b. Nội dung: Viết chương trình giải phương trình ax+b=0 c. Các bước tiến hành TG Hoạt động của Gv & Hs Nội dung Gv. Nêu nội dung , mục đích, yêu cầu của bài 1. Xác định Input/Output toán - Input: hệ số a, b - bước đầu tiên để giải bài toán - Output: giải phương trình; - Để xác định ta phải đặt các câu hỏi như 2. Thuật toán thế nào? Gọi học sinh đặt câu hỏi và gọi học B1: Nhập hệ số a và b sinh trả lời B2: - Nêu a=0 và b=0 thì thông báo phương trình vố số Hs. Làm theo dẫn dắt của giáo viên nghiệm. Gv. Yêu cầu học sinh xác định Input/Output - Nếu a=0 và b 0 thì phương trình có nghiệm Thảo luận nhóm viết chương trình X=-b/a; Hs. Xđ Input/Output B3: Đưa ra và kết thúc. Viết thuật toán 3. Chương trình Viết chương trình theo nhóm Program giaipt; Báo cáo kết quả Var a, b:integer; Begin Gv. Yêu cầu học sinh nhập dữ liệu dùng thử Write(‘nhap he so a, b’);readln(a,b); Hs. Làm bài theo yêu cầu. If a=0 and b=0 then Write(‘phương trình vo so nghiem’); If a=0 and b 0 then x:=-b/a; Write(x); readln End. 4. Củng cố - Nhắc lại cấu trúc câu lệnh rẽ nhánh If_then - Cho bài tập về nhà. 5. Dặn dò: ôn lại bài 9, bài 10 chuẩn bị làm tiếp bài tập trong SGK Tuần 13 Ngày soạn: Tiết 13 Ngày giảng : / / .
  23. Bài 10: CẤU TRÚC LẶP I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức: - Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán. - Biết được cấu trúc chung của lệnh lặp FOR trong ngôn ngữ lập trình. - Hiểu được cấu trúc lặp với số lần biết trước và câu lệnh FOR - DO 2. Kỹ năng: Bước đầu sử dụng được lệnh lặp FOR để lập trình giải quyết được một số bài toán đơn giản 3. Về tư duy và thái độ: - Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc. - Tự giác, tích cực và chủ động hoàn thành. II. CHUẨN BỊ 1. Giáo viên: SGK, Giáo án 2. Học sinh: HS: SGK, vỏ III. PHƯƠNG PHÁP - Gợi mở, vấn đáp. - Làm việc theo nhóm IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: - Chào thầy cô. - Cán bộ lớp báo cáo sỉ số - Chỉnh đốn trang phục 2. Kiểm tra bài cũ: Cho biết kết quả của doạn chương trình sau Program VD; Begin Writeln (‘PASCAL’); Writeln (‘PASCAL’); Writeln (‘PASCAL’); Writeln (‘PASCAL’); Writeln (‘PASCAL’); Readln; End. 3. Bài mới TG Hoạt động của GV & HS Nội dung Gv: Nếu giải bài toán trên với việc in khoảng 10 dòng có từ PASCAL? 1. Khái niệm lặp Hs: Chương trình dài dòng - Xét 2 bài toán như sau với a > 2 là số nguyên cho trước : Gv: Có nhận xét gì về các dòng lệnh trong chương trình trên? Bài toán 1 : Tính tổng Hs: Lặp lại nhiều lần với câu lệnh: Writeln 1 1 1 1 S1= Gv: Đối với những thuật toán có những thao tác a a 1 a 2 a 100 phải thực hiện lặp đi lặp lại một số lần thì máy tính có thể thực hiện hiệu quả hơn các thao tác lặp Bài toán 2 : Tính Tổng đó bằng các cấu trúc lặp. 1 1 1 1 S2= GV : Đưa ra bài toán, yêu cầu học sinh tìm cách a a 1 a 2 a N để lập trình giải các bài toán này . 1 Với điều kiện 0.0001 a N HS : Đưa ra cách giải của mình, học sinh có thể đưa ra những cách giải khác nhau . Cách giải : GV : Đưa ra cách giải cho bài toán . - Bắt đầu S được gán giá trị 1/a. Giải theo các lệnh tuần tự - Tiếp theo mỗi lần cộng thêm vào S là 1/(a+N) với N = S1:=0; 1, 2, 3, If (1/a>0.0001) then S1:=S1+ 1/a; - Với bài toán 1, việc cộng thêm dừng khi 1/(a+N) 0.0001) then S1:=S1+ 1 /(a+1); 0.0001, => số lần lặp chưa biết. If (1/(a+2)>0.0001) then S1:=S1+ 1 /(a+2); - Với bài toán 2, việc cộng thêm dừng khi N = 100, => số If (1/(a+3)>0.0001) then S1:=S1+ 1 /(a+3); lần lặp đã biết trước.
  24. HS : Nhận xét với việc giải bài toán theo cách đó Trong lập trình, có những thao tác phải lặp lại nhiều lần, ? khi đó ta gọi là cấu trúc lặp. Với N = 100 thì lặp 100 lần như thế nhưng theo Lặp thường có 2 loại : việc kiểm tra điều kiện thì không biết phải làm  Lặp với số lần biết trước . theo cách nào? Theo cả hai trường hợp thì đều quá  Lặp với số lần không biết trước . dài. NNLT nào cũng cung cấp một số câu lệnh để mô tả các cấu trúc lặp như trên. Sau đây chúng ta sẽ tìm hiểu các câu lệnh trong ngôn ngữ Để học sinh hiểu được khái niệm lặp, giáo viên Pascal. đưa ra một số ví dụ trong thực tế được tính toán lặp đi lặp lại nhiều lần. VD1 : Bài toán gửi tiền vào ngân hàng. Hằng tháng phải tính lãi và cộng thêm vào gốc đang gửi hay nói cách khác gốc của tháng sau = gốc + lãi tháng trước. VD 2: Tính tổng của một đoạn số nguyên mà không được dùng công thức. GV : Đưa ra ví dụ: So sánh hai thuật toán sau: Thuật toán Thuật toán 2. Lặp có số lần biết trước và câu lệnh for – do Tong_1a Tong_1b B1: S:=1/a; N:=0; B1:S:=1/a;N:=101; Trong Pascal, có 2 lọai câu lệnh lặp có số lần biết trước : B2: N:=N+1; B2: N := N -1; B3: Nếu N >100 thì B3: Nếu N := to do ; rồi quay lại B2; rồi quay lại B2; - Lặp dạng lùi B5: Đưa ra S rồi kết B5: Đưa ra S rồi kết For := downto do thúc. thúc. ; Trong đó: GV : Gọi một số học sinh nhận xét về 2 thuật toán  Biến đếm thường là biến kiểu số nguyên. trên về một số vấn đề :  Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với  Thuật toán có lặp không? biến đếm. Giá trị đầu phải nhỏ hơn hay bằng giá trị  Lặp bao nhiêu lần? cuối.  Hai thuật toán giống và khác nhau như Ở dạng lặp tiến: Biến đếm tự tăng dần từ giá trị đầu thế nào? đến giá trị cuối.  Cái gì thay đổi trong thuật toán này? Ở dạng lặp lùi: Biến đếm tự giảm dần từ giá trị cuối đến giá trị đầu. Sau khi so sánh hai thuật toán trên, giáo viên đưa Tương ứng với mỗi giá trị của biến đếm, câu lệnh sau do thực ra hai cách lặp trong ngôn ngữ Pascal, giải thích hiện 1 lần. ý nghĩa của các thành phần trong câu lệnh . Gv. Nêu thuật toán của bài toán tong_1a Ví dụ Ví dụ 1 : Chương trình cài đặt thuật toán tong_1a Gv. Viết chương trình pascal tính tong_1a. và giải thích thành phần các câu lệnh. tong_1a: Hs. Học sinh chú ý nghe giảng. program tong_1a; var a,N:integer; S:real; Begin Write(‘nhap gia tri cua a=’);readln(a); S:=1/a; For N:=1 to 100 do S:=S+1/(a+N) GV : Lấy ví dụ minh họa trong Pascal để các em Write(S:8:4); thấy được sự thay đổi giá trị của biến đếm trong readln một chương trình thực sự của Pascal . End. Vd: a=2;
  25. Gv. Nêu thuật toán của bài toán tong_1b nhóm viết chương trình với thuật toán tính tong_1b: tong_1b. program tong_1a; Hs. Học sinh thảo luận nhóm var a,N:integer; Báo cáo kết quả S:real; Begin Write(‘nhap gia tri cua a=’);readln(a); S:=1/a; For N:=100 downto 100 do S:=S+1/(a+N) Write(S:8:4); readln End. Gv. Định hướng phương pháp và yêu cầu học sinh Ví dụ 2 : Tính tổng các số nguyên chia hết cho 3 hoặc 5 trong lên bảng làm bài phạm vi từ M đến N (M<N). Hs. Suy nghĩ trả lời Var M,N,i:Integer; Begin Write(‘nhap so M nho hon so N’); Write(‘M, N =’); Readln(M,N); T:=0; For i:=M to N do Gv. Với 2 ví dụ này, giáo viên nên chạy nháp If (i mod 3 =0) or (i mod 5=0) then chương trình trên bảng để hs thấy rõ quá trình lặp T:=T+I; của câu lệnh. Write(‘Ket qua’,T); Readln End. 4. Cũng cố - Nắm lại các cấu trúc lặp. - Nhớ được 2 dạng tiến lùi của câu lệnh FOR - DO trong Pascal 5. Dặn dò: Xem trước bài mới Tuần 14 Ngày soạn: Tiết 14 Ngày giảng : / / . KIỂM TRA 1 TIẾT I. MỤC ĐÍCH, YÊU CẦU 1. Mục tiêu đánh giá: Đánh giá kết quả học tập của học sinh sau khi học xong chương II: Các thành phần cơ sở của Ngôn ngữ Pascal; phép toán, biểu thức, câu lệnh gán; tổ chức vào ra đơn giản, cấu trúc rẽ nhánh và lặp. 2. Yêu cầu của đề: - Về kiến thức: kiểm tra kiến thức của HS về quy tắc đặt tên biến; biết cách khai báo; viết biểu thức; hiểu câu lệnh gán. - Vận dụng kiến thức về biểu thức, câu lệnh gán, vào ra đơn giản, cấu trúc rẽ nhánh và lặp. II. NỘI DUNG 1. Ma trận đề: Nội dung- Đề 1 Đề 2 Điểm Mức độ Biết Câu 1, 2 Câu 1, 2 1 điểm 1 điểm Hiểu Câu 3, 5, 9 Câu 3, 5, 9 4 điểm 4 điểm Vận dụng Câu 4, 6, 7, 8, 10 Câu 4, 6, 7, 8, 10
  26. 5 điểm 5 điểm Tổng 10 câu 10 câu 10 điểm 10 điểm 2. Nội dung đề kiểm tra: ( Đề đính kèm). 3. Đáp án đề kiển tra: A. Phần trắc nghiệm: 0,5 điểm/ câu Câu 1 Câu 2 Câu 3 Câu 4 Câu 5 Câu 6 Câu 7 Câu 8 Đề 1 C B C C B B C D Đề 2 C D B C A D B B B. Phần tự luận: Đề 1: Câu 9 (3điểm) Dòng 1: khai báo biến i thuộc kiểu số nguyên (Byte). Dòng 2: gán giá trị 100 cho biến i. Dòng 3: Đưa xâu kí tự và giá trị của biến i ra màn hình. Dòng 4: gán giá trị của biểu thức i+10 cho biến i. Dòng 5: đưa xâu kí tự và giá trị của i lúc sau ra màn hình và chừa 5 chỗ để ghi giá trị của i. Dòng 6: Tạm dừng chương trình để quan sát kết quả trên màn hình. Câu 10: (3điểm) Var i, n, S : Integer; Begin S := 0; For i := 1 to n Do If i Mod 2 <> 0 Then S := S+ sqr(i); Writeln(‘Tong cac so le la: ’,S); Readln End. Đề 2: Câu 9: (3điểm) Dòng 1: khai báo biến s, n, i thuộc kiểu số nguyên (Byte). Dòng 2: Thông báo nhập giá trị n, đọc giá trị n. Dòng 3: Gán giá trị đầu tiên cho biến s là 1999. Dòng 4: Cho biến i lặp từ giá trị đầu bằng 0 cho tới n và thực hiện câu lệnh tương ứng tăng giá trị của tổng s:= s+ (2*i +1). Dòng 5: Đưa kết quả tính tổng ra màn hình Dòng 6: Tạm dừng chương trình để quan sát kết quả trên màn hình. Câu 10: (3điểm) Var i, n, S : Integer; Begin S := 0; For i := 1 to n do S := S+ sqr(i); Writeln(‘Tong cac so le la: ’,S); Readln End. Lưu ý: HS có thể sử dụng câu lệnh While_Do Var i, n, S : Integer; Begin S := 0; i := 1; While i < n do Begin S := S+ sqr(i); i := i+1; End; Writeln(‘Tong cac so le la: ’,S); Readln
  27. Bài 15: CẤU TRÚC LẶP I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức: - Biết được cấu trúc chung của lệnh lặp WHILE trong ngôn ngữ lập trình. - Hiểu được cấu trúc lặp với số lần không biết trước và câu lệnh While_do 2. Kỹ năng: Sử dụng được lệnh lặp While để lập trình giải quyết được một số bài toán đơn giản 3. Về tư duy và thái độ: - Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc. - Tự giác, tích cực và chủ động hoàn thành. II. CHUẨN BỊ 1. Giáo viên: SGK, Giáo án 2. Học sinh: SGK, vỏ III. PHƯƠNG PHÁP - Gợi mở, vấn đáp. - Làm việc theo nhóm IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: - Chào thầy cô. - Cán bộ lớp báo cáo sỉ số - Chỉnh đốn trang phục 2. Kiểm tra bài cũ: Dùng câu lệnh lặp For_do tính tổng sau S=12+32+52+ +(2n-1)2 với n được nhập vào từ bàn phím. 3.Bài mới: TG Hoạt động của Gv & Hs Nội dung GV : Đưa ra thuật toán hoặc có thể yêu 3. a)Lặp với số lần chưa biết trước cầu học sinh tự xây dựng thuật toán giải Để giải bài toán 2 ta dùng thuật toán như sau : bài toán 2, nếu tự xây dựng được thuật Bước 1 : S :=1/a; N :=0; toán thì các em sẽ hiểu hơn về lặp Bước 2 : Nếu 1/(a+N) A thì cần gửi trong bao lâu với lãi suất là k%. - Từ bước 2 đến bước 4 được lặp lại nhiều lần nếu điều kiện Yêu cầu học sinh đưa ra cách giải 1/(a+N) Do ; Trong đó - Điều kiện là biểu thức quan hệ hoặc logic. - Câu lệnh là một câu lệnh trong Pascal. Ý nghĩa : Khi điều kiện còn đúng thì còn thực hiện câu lệnh sau Do Gv: Đưa ra bài toán 2. sau đó lại quay lại kiểm tra điều kiện. - Định hướng và cùng học sinh phân tích đưa ra thuật toán. Bài toán 2: Hs. Nghe và trả lời b1: S1/a; N0; b2: Nếu 1/(a+N)<0.0001 Chuyển đến b5
  28. Gv. Cài đặt thuật toán, chạy thử chương b3: NN+1; trình. Giải thích các dòng lệnh của b4: SS+1/(a+N) rồi quay lại bước 2 chương trình. b5: Đưa S ra màn hình Hs. Nghe giảng Chương trình: Var a,N:Integer; S: real; Gv. Đưa ra ví dụ 2. Begin Phân tích, định hướng và yêu cầu Hs Write(‘Nhap gia tri a=’);readln(a); nêu thuật toán. While not(1/(a+N) N thì M := M – N rồi quay lại B1, ngược lại N := N – M rồi quay lại B1 Sau đây là chương trình tìm UCLN; 4. Củng cố - Nhắc lại cấu trúc câu lệnh lặp không biết trước số lần lặp While_do - Cho bài tập về nhà. 5. Dặn dò: Xem lại bài 9, bài 10 chuẩn bị cho tiết bài tập Tiết 16 IV. NỘI DUNG BÀI GIẢNG 1. Ổn định lớp: - Chào thầy cô. - Cán bộ lớp báo cáo sỉ số - Chỉnh đốn trang phục 2. Kiểm tra bài cũ: Dùng câu lệnh lặp For_do tính tổng sau S=12+32+52+ +(2n-1)2 với n được nhập vào từ bàn phím. 3.Bài mới: Làm quen với một chương trình và các công cụ hiệu chỉnh chương trình a. Mục tiêu - Học sinh hiểu được nội dung chương trình và kết quả sau khi thực hiện chương trình. Biết các công cụ hiệu chỉnh chương trình khi cần thiết như thực hiện từng bước và xem kết quả trung gian b. nội dung - Ba số nguyên dương a, b, c được gọi là bộ số Pitago nếu tổng bình phương của hai số bằng bình phương số còn lại. - Yêu cầu: Viết chương trình nhập từ bàn phím ba số nguyên dương a, b, c và kiểm tra xem chúng có phải là bộ số Pitago hay không TG Hoạt động của Gv & Hs Nội dung Gv. Gợi ý để học sinh nêu khái niện về bộ số 1. Bộ số Pitago Pitago Tổng bình phương của hai số bằng bình phương số còn lại. Hs. Theo dõi dẫn dắt để nêu khái niệm về bộ a2=b2+c2 số Pitago. Vd: bộ ba số: 5 4 3 Gv. Yêu cầu học sinh lấy ví dụ cụ thể. a, b, c là bộ số Pitago thì xãy ra một trong các đẳng thức sau Hs. Lấy ví dụ a2 = b2 + c2. Gv. Để kiểm tra bộ ba số a,b,c có phải là bộ b2 = a2 + c2. 3 số Pitago ta phải kiểm tra đẳng thức nào? c2 = a2 + b2. Hs. Dựa vào khái niệm trả lời
  29. Program Pitago; Var a, b, c: Integer; Gv. Yêu cầu học sinh soạn vào máy theo yêu Begin cầu. Write(‘Nhap a, b, c=’);readln(a, b, c); Hs. Làm bài If (a2 = b2 + c2 ) or ( b2 = a2 + c2 ) or ( c2 = a2 + b2) then write(a, b, c ,‘la bo ba Pitago’) Else write(‘khong phai la bo ba pitago’); Gv. Yêu cầu học sinh lưu chương trình, soát readln lỗi, chạy chương trìn, để học sinh làm End. quen với công cụ trong môi trường Turbo pascal 7.0. F2 (File/save): Lưu chương trình Nhập các bộ số để kiểm tra thuật toán F9 : Soát lỗi chương trình Vd: 3 4 5 / 4 7 10 / Ctrl+ F9 : Chạy chương trình Hs. Làm theo yêu cầu của gv 4. Củng cố - Nhắc lại cấu trúc câu lệnh rẽ nhánh If_then - Các thao tác cơ bản trong việc soạn thảo và biên dịch chương trình 5. Dặn dò: ôn lại các thao tác chuẩn bị cho tiết thực hành sau BAI KIEM TRA HOC KI I
  30. Tuần 16 Ngày soạn: Tiết 16 Ngày giảng : / / . BÀI TẬP I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Biết sử dụng đúng lệnh lặp For . . . Do - Biết sử dụng đúng lệnh lặp While . . . Do 2. Kĩ năng: - Bước đầu sử dụng được 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. 3. Tư duy và thái độ: Tích cực trong học tập, cẩn thận , chính xác. II. CHUẨN BỊ 1. Giáo viên: Sách giáo khoa, sách giáo viên, một số bài tập áp dụng 2. Học sinh: sgk, và chuẩn bị bài tập trước III. PHƯƠNG PHÁP 1. Phương pháp: Gợi mở, vấn đáp, đan xen hoạt động nhóm 2. Phương tiện: Giáo án. IV. TIẾN TRÌNH BÀI HỌC 1. Ổn định lớp. - Chào thầy cô. - Cán bộ lớp báo cáo sỉ số - Chỉnh đốn trang phục 2. Kiểm tra bài cũ Kiểm tra trong khi giảng bài 3. Bài mới TG Hoạt động của Gv & Hs Nội dung Gv. Dẫn dắt: Từ bài toán KTBC ở trên, Bài 1: Viết CT nhập vào 2 số nguyên dương a, b (a<b), tính và nếu ta y/cầu tính và đưa ra màn hình tổng đưa ra màn hình tổng các số chẵn và tổng các số lẻ trong phạm vi các số chẵn và tổng các số lẻ trong phạm vi từ a đến b. từ a đến b. Ghi bảng (sửa lại nội dung đề bài toán) Phân tích Tl: tính tổng các số chẵn và tổng các số lẻ riêng Y/cầu hs phân tích đề bài và trả lời câu Tl: 2 giá trị (S1: tổng chẵn; S2: tổng lẻ) hỏi. Tl: Kiểm tra biến đếm i : nếu i là chẵn thì S1:=S1+i ngược lại (i là Hs. -Ghi đề bài toán lẻ)thì S2:=S2+i. -Lắng nghe, phân tích bài toán và trả lời: Chương trình Var a, b, i , S1, S2 : longint; Gv. - So sánh với bài toán trước thì có gì Begin khác? Write(‘Nhap a va b (a<b): ‘); - Ta cần đưa ra màn hình mấy giá trị? Readln(a, b); - Việc chính cần thực hiện trong câu lệnh S1 := 0; S2 := 0; lặp là gì? For i := a To b Do - Hãy mô tả việc trên bằng lệnh lặp For? If i mod 2 = 0 Hs. Đứng tại chổ trả lời: then S1 := S1 + i For I:=a To b Do else S2 := S2 + i; If I mod 2 =0 Writeln(‘Tong chan: ’, S1, then S1:=S1+I ’ Tong le: ’,S2); else S2:=S2+I ; Readln End. 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
  31. 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) Gv. Nêu đề bài toán (Ghi bảng) 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 - Cách tính tiền gửi tiết kiệm hàng tháng suất 1.5%/tháng. Hỏi sau 12 tháng gửi (không rút tiền lãi hàng như thế nào? tháng), ông ta được số tiền là bao nhiêu? - Vậy, công thức tính tiền thu được sau mỗi tháng như thế nào? Phân tích - câu lệnh lặp này lặp bao nhiêu lần? Tl: Với số tiền S, sau mỗi tháng sẽ có lãi là: 0.015*S. - Xác định giá trị đầu và giá trị cuối của câu Số tiền này sẽ cộng vào số tiền ban đầu để tính lãi cho tháng tiếp lệnh For để thực hiện việc lặp trên? theo. Hs. Đọc đề bài, phân tích và trả lời câu hỏi Tl: S := S + 0.015*S; Tl: 12 lần Tl: gtrị đầu là 1; gtrị cuối là 12. Cài đặt chương trình Var s:real; i:byte; Begin -Thảo luận nhóm và tự viết chương Write(‘So tien ban dau: ’); trình Readln(S); Gv. Chuẩn hóa lại bài làm của hs bằng For i:= 1 To 12 Do S:= S + 0.015*S; chương trình mẫu (treo chtrình đã chuẩn bị Writeln(‘So tien nhan duoc la: ’,S:8:3); trên bảng phụ). Readln - Chạy chương trình. - Thử nghiệm với 1 năm, 14 tháng, . End. Hs. Quan sát chtrình của giáo viên và ghi nhớ. Gv. hướng dẫn học sinh tìm thuật toán Bài 2 : Tính tổng sau. - Hs nghe giảng S 1 2 3 4 n Gv. phân nhóm cho hs thảo luận tính tổng sử dụng lệnh While_do Phân tích Hs. thảo luận nhóm b1: S0; i0; - Báo cáo kết quả b2:Nếu i<n Chuyển đến b5 - Chú ý theo dõi và nhận xét b3: ii+1; - Ghi chép. b4: SS+i; rồi quay lại bước 2 Gv. treo kết quả hs lên hoặc gọi hs lên b5: Đưa S ra màn hình trình bày Cài đặt chương trình * Chuẩn hóa lại bài làm của hs bằng Program vd; chương trình mẫu (treo chtrình đã chuẩn bị Var I,n, S:integer; trên bảng phụ). Begin Writeln(‘Nhập vào gtrị n = ’); S:=0; i:=0; While i<=n do Begin S:=S+1; Inc(i); End; Writeln(‘Tổng của ’,n,’ số là ‘,S); Readln; End. 4. Cũng cố, dăn dò - 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. 5. Dặn dò: xem lại bài tập và chuẩn bị trước bài 11. Kiểu mảng một chiều Chương 4: KIỂU DỮ LIỆU CÓ CẤU TRÚC Tuần 13 Ngày soạn: Tiết 25 Ngày giảng : / / .
  32. Bài 11: KIỂU MẢNG I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Biết được một kiểu dữ liệu mới là kiểu mảng một chiều. - Biết được một loại biến có chỉ số; - Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều. 2. Kĩ năng - Biết được các thành phần trong khai báo kiểu mảng một chiều; - Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình; - Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên; - Biết cách tham chiếu đến các phần tử của mảng một chiều. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. CHUẨN BỊ 1. Giáo viên: giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều 2. Học sinh: sgk III. PHƯƠNG PHÁP: -Đặt vấn đề,gợi mở thuyết giảng. IV. HOẠT ĐỘNG DẠY HỌC 1. Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ (Không kiểm tra) 3. Bài mới Hoạt động của Gv & Hs Nội dung Trước khi vào bài, giáo viên đưa ra một số vấn đề cần giải quyết như sau : Có thể sử dụng ví dụ trong SGK để học sinh dễ theo dõi, gõ trước Với những kiểu dữ liệu như đã biết, làm thế nào để : chương trình để có thể sử dụng cho các phần tiếp theo . - Lưu trữ và xử lý một dãy số ? - Lưu trữ và xử lý Họ và tên của một người ? - Lưu trữ và xử lý bảng kết quả thi tốt nghiệp ? HS : Đưa ra các phương án để trả lời cho 3 câu hỏi trên . GV : Các ngôn ngữ lập trình thường cung cấp một số kiểu dữ liệu được xây dựng từ những kiểu dữ liệu chuẩn gọi là kiểu dữ liệu có cấu trúc . Chương này chúng ta sẽ tìm hiểu một số kiểu dữ liệu trong ngôn ngữ Pascal để trả lời 3 câu hỏi trên . GV : Đưa ra ví dụ, cần lập lập trình xử lý một dãy số nguyên, hãy tìm cách lưu trữ một dãy số nguyên trong khi lập trình ? GV : Các ngôn ngữ lập trình thường cung cấp một Trong lập trình thường có 2 loại mảng : số kiểu dữ liệu được xây dựng từ những kiểu dữ liệu - Mảng một chiều . chuẩn gọi là kiểu dữ liệu có cấu trúc . - Mảng hai chiều . Chương này chúng ta sẽ tìm hiểu một số kiểu dữ liệu trong ngôn ngữ Pascal để trả lời 3 câu hỏi trên . 1. Kiểu mảng một chiều
  33. GV : Đưa ra ví dụ, cần lập lập trình xử lý một dãy số - Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu, nguyên, hãy tìm cách lưu trữ một dãy số nguyên mảng được đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng trong khi lập trình ? một chiều ta cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử . Bằng cách nào để lưu trữ được thông tin dưới dạng bảng khi lập trình ? Với mảng một chiều ta quan tâm đến : - Tên mảng một chiều . HS : Đưa ra ý kiến . - Số lượng phần tử trong mảng . - Kiểu dữ liệu của phần tử . GV : Đánh giá ý kiến của học sinh, sau đó đưa ra - Cách khai báo biến mảng một chiều . mục đích của việc sử dụng cấu trúc mảng trong - Cách truy cập vào từng phần tử của mảng . chương trình . Xét ví dụ : Nhập vào nhiệt độ trung bình mỗi ngày trong tuần . Tính và đưa ra màn hình nhiệt độ trung bình của cả tuần và đếm số ngày GV : Đưa ra khái niệm mảng một chiều và một số có nhiệt độ lớn hơn nhiệt độ trung bình này . yếu tố liên quan trong lập trình nói chung . Quan sát hai chương trình viết bằng ngôn ngữ Pascal cùng để giải bài toán trên . GV : Đi sâu phân tích hai chương trình để cho học - Chương trình 1 : Không sử dụng kiểu mảng . sinh nhận thấy sự tiện lợi khi sử dụng mảng . - Chương trình 2 : Sử dụng kiểu mảng một chiều . HS : Trong khi giáo viên phân tích hai chương trình, a> Khai báo mảng một chiều học sinh sẽ đưa ra ý kiến nhận xét về 2 chương trình. Trong ngôn ngữ Pascal, mảng một chiều được khai báo bằng hai cách như sau : Cách 1 : GV : Đưa ra cách khai báo mảng một chiều trong Var : Array[kiểu chỉ số] of ; ngôn ngữ Pascal, giải thích ý nghĩa của các từ khóa mới . Cách 2 : Type = Array [ ] of GV : Khai báo bằng cách nào tiện lợi hơn ? ; Var : ; HS : Thường thì học sinh trả lời cách 1 tiện lợi hơn Trong đó : ? - Type là từ khóa dùng để khai báo biến, Array là từ khóa để khai báo mảng . - Kiểu chỉ số thường là đoạn số nguyên liên tục có n1 n2, với GV : Tùy trường hợp cụ thể mà ta dùng cách 1 hay n1 là chỉ số đầu và n2 là chỉ số cuối. cách 2 nhưng thông thường ta sử dụng cách 1 . - Kiểu thành phần là kiểu dữ liệu của phần tử mảng . - Để truy cập vào phần tử mảng ta viết : - [Chỉ số] GV : Sử dụng một sồ hình ảnh trực quan minh họa Ví dụ : cho học sinh cấu trúc mảng và chỉ số của phần tử A[20] Truy cập phần tử mang chỉ số 20 trong mảng A . Ví dụ : Chỉ Khai báo biến mảng thông qua kiểu mảng : 1 2 3 4 5 6 7 8 số Type Giá ArrayInteger=Array[1 100] of Integer; 53 81 62 18 26 41 24 53 trị ArrayReal=Array[1.50] of Real; Var A : Array[1 50]; Đưa ra một số khai báo mảng trong Pascal . B : Array[1 50] of Real; Khai báo mảng trực tiếp : Var A : Array[1 100] of Integer ; B : Arrat[1 50] of Real ; 4. Cũng cố, dăn dò - Cấu trúc của mảng và hai cách khai báo mảng - Làm bài tập và xem bài mới 5. Dặn dò: Học bài và chuẩn bị nội dung bài tiếp theo
  34. Tuần 10 Ngày soạn: / / Tiết 20 Ngày giảng : / / . Bài 11: KIỂU MẢNG I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức: Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng. 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. CHUẨN BỊ 1. Giáo viên: giáo án, bảng phụ, sgk 2. Học sinh: sgk III. PHƯƠNG PHÁP Thuyết trình vấn đáp, gợi mở giải quyết vấn đề IV. HOẠT ĐỘNG DẠY HỌC 1. Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ 3. Bài mới Hoạt động của Gv & Hs Nội dung GV : Đưa ra ví dụ . b> Một số ví dụ : Ví dụ 1 : Tìm phần tử lớn nhất của một dãy số nguyên . HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học - Input : Số nguyên dương N và dãy số A1, A2, , ở lớp 10) . AN - Output : Chỉ số và giá trị của số lớn nhất trong dãy - Ý tưởng : GV soạn sẵn chương trình và cho học sinh quan sát chương + Đặt số A1 là số lớn nhất (max) trình . + Cho i lặp từ 2 đến N, nếu A[i]> thì đổi max = A[i] vả lưu lại vị trí i . Chương trình như sau : Nếu có nhiều thời gian, giáo viên sẽ tiến hành soạn chương Program timmax ; trình từ đầu để học sinh có thể dễ dàng nhận ra các thao tác Uses crt ; cần phải thực hiện khi viết chương trình . var a : array[1 250] of integer ; n,i,max,csmax : Integer ; Begin clrscr ; Write('Nhap n = ') ; Readln(n) ; For i := 1 to n do Begin Write('a[',i,'] = ') ; readln(a[i]) ; End ; max := a[i] ; csmax := 1 ; For i := 2 to n do If a[i] > max then Begin max := a[i] ; csmax :=i ; End ; Writeln('Gia tri lon nhat : ',max) ; Writeln('chi so ptu lon nhat : ',csmax) ; Readln ;
  35. End . Hoạt động 2: Bài toán sắp xếp với thuật toán tráo đổi GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán . Ví dụ 2 : Sắp xếp dãy số nguyên theo bằng thuật toán tráo đổi . - Input : Số nguyên dương N và dãy số A1, A2, , HS : Xây dựng thuật toán để giải bài toán (thuật toán đã học AN ở lớp 10) . - Output : Dãy A được sắp xếp theo thứ tự không giảm . - Ý tưởng : GV soạn sẵn chương trình và cho học sinh quan sát + Đổi để đưa số lớn nhất về vị trí cuối cùng . chương trình . + Làm tương tự đối với những số còn lại . Chương trình như sau : Nếu có thời gian, giáo viên sẽ tiến hành soạn chương trình Program sapxep ; từ đầu để học sinh có thể dễ dàng nhận ra việc chuyển đổi Uses crt ; ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình . var A : Array[1 250] of integer ; n,i,j,tg : Integer ; Begin clrscr ; Write('Nhap so phan tu mang n = ') ; Readln(n) ; For i := 1 to n do Begin Write('A[',i,'] = ') ; readln(A[i]) ; End ; For j := n downto 2 do Begin For i := 1 to j-1 do If A[i] > A[i+1] then Begin tg := A[i] ; A[i] := A[i+1] ; A[i+1] := tg ; End ; End ; Writeln('day sau khi sap xep : ') ; For i := 1 to n do write(a[i]:8) ; readln ; End . Writeln('chi so ptu lon nhat : ',csmax); readln ; End . 4. Cũng cố, dăn dò - Cấu của mảng một chiều - Cách khai báo, nhập và truy xuất phần tử của mảng - Về nhà làm bài tập sách giáo khoa 5. Dặn dò: Học bài và chuẩn bị nội dung tiếp theo của bài Tuần 14 Ngày soạn: Tiết 26 Ngày giảng : / / .
  36. Bài 11: KIỂU MẢNG I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức: Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng. 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. CHUẨN BỊ 1. Giáo viên: giáo án, bảng phụ, sgk 2. Học sinh: sgk III. PHƯƠNG PHÁP Thuyết trình, vấn đáp, gợi mở giải quyết vấn đề IV. HOẠT ĐỘNG DẠY HỌC 1. Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ 1. Nêu cách khai báo mảng và giải thích từng thành phần câu lệnh 2. Cách nhập giá trị cho mảng và truy xuất giá trị của mảng. 3. Bài mới Hoạt động của Gv & Hs Nội dung GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán . HS : Xây dựng thuật toán để giải bài toán (thuật toán đã Ví dụ 3 : Tìm kiếm nhị phân . học ở lớp 10) . - Input : Dãy số A 1, A2, , AN đã được sắp xếp tăng dần . GV soạn sẵn chương trình và cho học sinh quan sát chương - Output : Có hay không chỉ số i mà A[i] = k hoặc trình . thông báo không tìm thấy . - Ý tưởng : Xem lại thuật toán tìm kiếm nhị phân trong SGK lớp 10 . Nếu có thời gian, giáo viên sẽ tiến hành soạn chương trình từ đầu để học sinh có thể dễ dàng nhận ra việc chuyển Chương trình như sau : đổi ngôn ngữ từ ngôn ngữ thuật toán sang ngôn ngữ lập trình . Program sapxep ; Uses crt ; var A : Array[1 250] of integer ; n,i,k : Integer ; dau,cuoi,giua : Integer ; TK : boolean ; Begin clrscr ; Write('Nhap so ptu mang n = ') ; Readln(n) ; For i := 1 to n do Begin Write('A[',i,'] = ') ; readln(A[i]) ; End ; Write('nhap so can tim k : ') ; Readln(k); dau := 1 ; cuoi := n ; TK := false ; while (dau <= cuoi) and Not TK Do Begin giua := (dau+cuoi) div 2 ; If A[giua] = k then TK := true
  37. Else If a[giua]>k then cuoi := giua - 1 Else dau := giua + 1 ; End ; If TK then write('Chi so la : ',giua) else write(' Khong tim thay '); readln ; End . 4. Cũng cố, dăn dò - Làm lại các ví du để khắc sâu lý thuyết. - Làm bài tập SGK - Học bài mới phần 2. Kiểu mảng hai chiều 5. Dặn dò: học bài và chuẩn bị cho tiết thực hành Tuần Ngày soạn: / / Tiết 22 Ngày giảng : / / . Bài 11: KIỂU MẢNG I. MỤC ĐÍCH, YÊU CẦU 1. 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ử của mảng 2. 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 một số bài toán cụ thể 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. CHUẨN BỊ 1. Giáo viên: giáo án, bảng phụ, sgk, projector, phiếu học tập. 2. Học sinh: sgk III. PHƯƠNG PHÁP Thuyết trình, vấn đáp, gợi mở, hoạt động project IV. HOẠT ĐỘNG DẠY HỌC 1. Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ Lập trình nhập vào từ bàn phím một dãy số nguyên bất kỳ sau đó đưa ra giá trị lớn nhất và nhỏ nhất của dãy số đó 3. Bài mới Hoạt động của Gv & Hs Nội dung Hoạt động 1: Khái niệm và khai báo mảng hai chiều GV : Quay lại ví dụ về lưu trữ dữ liệu dạng bảng để các em nhận ra nhu cầu phải sử dụng mảng 2 chiều trong lập trình . 2. Kiểu mảng 2 chiều : - Mảng hai chiều là một bảng các phần tử cùng kiểu . Với mảng hai chiều ta quan tâm đến : - Tên kiểu mảng hai chiều . - Số lượng phần tử của mỗi chiều trong mảng .
  38. - Kiểu dữ liệu của phần tử . - Cách khai báo biến mảng hai chiều . - Cách truy cập vào từng phần tử của mảng . a> Khai báo mảng hai chiều GV : Khai báo cách nào tiện lợi hơn (tương tự mảng 1 chiều) ? - Trong ngôn ngữ Pascal, mảnh hai chiều được khai báo như sau : HS : Thường thì học sinh vẫn chọn cách 1 . Cách 1 : Khai báo trực tiếp GV : Tùy theo trường hợp cụ thể nhưng thường thì cách 1 hay Var : : Array[kiểu chỉ số dòng, kiểu được dùng hơn . chỉ số cột] of ; Cách 2 : Khai báo gián tiếp thông qua khai báo kiểu mảng Type = Array[kiểu chỉ số dòng, kiểu chỉ số cột] of ; Var : ; Ví dụ : Khai báo biến mảng thông qua kiểu mảng : GV : Khi khai báo mảng 2 chiều cần chú ý điều gì ? Type ArrayInteger = Array[1 10,1 15] of Integer ; HS : Tìm câu trả lời, GV gợi ý để các em chỉ ra được chỉ số của ArrayReal=Array[1 50,1 100] of Real ; mảng, số dòng, số cột và kiểu của mỗi phần tử trong mảng . Var A : ArrayInteger ; B : ArrayReal ; Khai báo mảng trực tiếp : Var A : Array[1 10,1 15] og Integer ; GV : Gọi một số học sinh lên khai báo một số biến mảng một B : Aarray[1 50,1 100] og Real ; chiều theo yêu cầu của giáo viên . Cách truy cập vào phần tử của mảng hai chiều : [chỉ số dòng, chỉ số cột] Minh họa bằng hình ảnh mảng 2 chiều và chỉ số các phần tử mảng hai chiều cũng như cách viết truy cập phần tử mảng . Ví dụ : A[1,3], B[23,66], Hoạt động 2: Một số ví dụ về mảng hai chiều GV cho học sinh quan sát chương trình và giải thích các lệnh trong > Một số ví dụ : chương trình, chú ý đi sâu vào các lệnh lặp để các em nhận ra thường thì ta sử dụng vòng lặp for - do để duyệt qua các phần tử Ví dụ 1 : mảng . Chương trình sau đưa ra màn hình bảng cửu chương . GV nên soạn sẵn chương trình và cho các em quan sát chương Program cuuchuong; trình, và chạy thử chương trình trên máy để các em tiện theo dõi . Uses crt ; var A : Array[1 9,1 9] of Integer ; Program Timkiem; i, j : Byte ; Uses crt; var A : Array[1 100,1 100] of Integer; Begin i,j,n,m : Byte ; Clrscr ; k,d : integer ; Writeln('Bang cuu chuong 1 -> 9 : '); Writeln ;
  39. Begin For i := 1 to 9 do Clrscr ; For j := 1 to 9 do Write(' Nhap so dong, so cot cua mang : ') ; A[i,j] := i*j ; Readln(m,n); For i := 1 to 9 do For i := 1 to m do Begin For j := 1 to n do For j := 1 to 9 do Write(a[i,j]:4); Begin Writeln ; Write(' A[',i,',',j,'] = '); Writeln ; Readln(A[i,j]); End ; End ; Readln ; Writeln(' Mang vua nhap vao la : '); End . Writeln; For i := 1 to m do Begin Ví dụ 2 : For j := 1 to n do Chương trình sau nhập vào một mảng 2 chiều và số Write(a[i,j]:4) ; nguyên k, sau đó in ra các phần tử có giá trị nhỏ Writeln; hơn k của mảng . Writeln; End; Write(' Nhap gia tri k : '); Readln(k) ; d := 0 ; For i := 1 to m do For j := 1 to n do If a[i,j] < k then Begin write('So nho hon ',k,' la '); write(a[i,j]:8); d := d+1 ; End ; If d = 0 then Write('Khong co ptu nao nho hon ',k); readln; End . 4. Cũng cố, dăn dò - Ôn cấu trúc mảng - ôn lại cấu trúc lặp để nhập giá trị và truy xuất phần tử của mả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. V. PHỤ LỤC Tuần Ngày soạn: / / Tiết Ngày giảng : / / . BÀI TẬP VÀ THỰC HÀNH 3 I. MỤC ĐÍCH, YÊU CẦU 1. Về kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng. 2. Về kỹ năng: - Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn hình chỉ số và giá trị của các phần tử mảng. - Duyệt qua phần tử của mảng để xử lý từng phần tử. - Nâng cao kĩ năng sử dụng một số kiểu lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể: + Khai báo kiểu dữ liệu mảng một chiều + Nhập, xuất dữ liệu cho mảng
  40. + Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử. - Biết giải một số bài toán thường gặp: + Tính tổng các phần tử thoả mãn các điều kiện nào đó + Đếm số các phần tử thoả mãn điều kiện nào đó + Tìm phần tử lớn nhất, nhỏ nhất 3. Về tư duy và thái độ: - Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình. II. CHUẨN BỊ: 1.GV: Phòng máy tính, máy chiếu Projector. 2. HS: SGK, bài tập. III. PHƯƠNG PHÁP - Vấn đáp tìm tòi, vấn đáp tái hiện, giải quyết vấn đề. Tiết 23 IV. TIẾN TRÌNH BÀI HỌC 1. Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ Lập trình nhập vào từ bàn phím một dãy số nguyên bất kỳ sau đó đưa ra giá trị lớn nhất và nhỏ nhất của dãy số đó 3. Bài mới Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu qua chương trình có sẵn: Hoạt động của Gv & Hs Nội dung Gv. Cài đặt và trình chiếu CT mẫu bài 1a. Bài 1a. {1}Program sum1; {2}Type Myarray=array[1 100] of integer; {3}Var A : Myarray; s,n,i,k: integer; {4}begin {5}write(‘nhap n=’); readln(n); {6}for i:=1 to n do A[i]:=radom(301)- radom(301); {7}for i:=1 to n do write(A[i]:5);writeln; {8}write(‘nhap k=’);readln(k); {9}s:=0; {9}for i:=1 to n do {10} if A[i] mod k= 0 then s:=s+A[i]; {11}writeln(‘tong so can tinh la’,s); - MyArray là tên kiểu dữ liệu hay tên biến? {12}readln Hs. Xem bài mẫu được trình chiếu và trả lời {13}end. Gv. Nhận xét. Chạy thử chương trình 1a - Dòng lệnh nào dùng để tạo biến mảng A? Giải thích một số dòng lệnh cơ bản - Lệnh For i:=1 to n do Write(A[i]:5); có ý nghĩa gì? {2}: khai báo một kiểu mảng tối đa 100 phần tử - Lệnh For i:=1 to n do If A[i] mod k = {3}: tạo ra biến mảng A 0 then s:=s + A[i]; thực hiện nhiệm vụ gì? {6}: Tạo mảng ngẫu nhiên gồm n số nguyên - Lệnh s:=s+A[i]; được thực hiện bao {7}: viết ra mảng vừa tạo nhiêu lần. - Lệnh For i:=1 to n do If A[i] mod k = 0 then s:=s + A[i]; thực dùng để Hs. Trả lời các câu hỏi đặt ra tính tổng các bội số của k Gv. Cho hs tự chạy thử chương trình. Để lấy - s:=s+A[i]; thực hiện n lần kết quả. Gv. Chiếu bài 1b. cho học sinh phân tích ý nghĩa và tác dụng của từng dòng lệnh Hs. Thảo luận nhóm Bài 1b. Báo cáo kết quả {1}Program Maxelement; Gv. Nhận xét {2}Type Myarray=array[1 100] of integer; {3}Var A : Myarray;
  41. Gv. Cho học sinh chạy chương trình và quan n,i,j: integer; sát kết quả {4}begin {5}write(‘nhap sl day so n=’); readln(n); {6}for i:=1 to n do Begin {7} Write(‘nhap phan tu thu’,i,’=’);readln(A[i]); End; J:=1 {8}for i:=2 to n do {9} if A[i]>A[j] then j:=i; {10}writeln(‘chi so’,j,’ gia tri ‘,A[i]:4); {11}readln {12}end. 4. Củng cố: - Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn phím. - Học bài cũ và làm bài tập sgk 5. Dặn dò: chuẩn bị cho tiết thực hành sau Tiết 24 IV. TIẾN TRÌNH BÀI HỌC 1. Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ: Không kiểm tra 3. Bài mới Hoạt động của Gv & Hs Nội dung Hoạt động 1: Ôn lại kiến thức để chuẩn bị làm bài tập và thực hành Gv. Cách khai báo mảng trực tiếp? gián tiếp ? 1. Khai báo mảng Hs. Trả lời câu hỏi - Khai báo trực tiếp Gv. Nhận xét bổ sung var : array[kiểu chỉ số] of ; - Cách khai báo gián tiếp type = array[kiểu chỉ số] of ; var : Hoạt động 2: Đọc đề và tìm hiểu yêu cầu bài tập 2 SGK Gv. Yêu cầu HS đọc đề BT2 SGK - Tìm phần tử có giá trị lớn nhất trong mảng Yêu cầu của bài toán là gì? - In ra màn hình chỉ số nhỏ nhất của phần từ có giá trị lớn nhất Hs. Đọc đề và tìm hiểu yêu cầu của đề Trả lời câu hỏi Hoạt động 3: Đọc chương trình và chạy chương trình trên giấy để hiểu thuật toán của chương trình. 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 Treo bảng phụ chương trình của bài toán. Gv. - Việc tạo mảng dữ liệu được thể hiện ở phần nào trong chương trình ? B1: j=1, i=2, A[i]=2, A[j]=4 Hs. Thể hiện ở câu lệnh for thứ nhất của chương A[i] A[j] , j=3 nhỏ nhất của phần từ có giá trị lớn nhất được thể B3: j=3, i=4, A[i]=7, A[j]=5 hiện ở phần nào ? A[i]>A[j] j=4 Hs. Từ j:=1 đến cuối chương trình B4: j=4, i=5, A[i]=6, A[j]=7 Hs. Vai trò của biến j trong chương trình nhằm A[i]<A[j] mục đích gì ? B5: j=4, i=6, A[i]=7, A[j]=5 Hs. Giữ lại chỉ số của phần tử có giá trị lớn nhất. kết quả chỉ số: 4
  42. Gv. Thực hiện chương trình với giá trị của mảng A[4] = 7 nhập vào cụ thể như sau: 4 2 5 7 6 7 - Hãy dựa vào phần tìm giá trị lớn nhất và chạy chương trình trên giấy nháp và cho kết quả ? - Gọi HS lên bảng chạy lại chương trình Hs. Thực hiện yêu cầu của GV. Gv. - Có cần giữ lại đoạn chương trình tìm giá trị lớn nhất không ? - Để đưa ra màn hình tất các chỉ số của các phần tử đạt giá trị lớn nhất có cần duyệt lại các phân tử của mảng không ? - Cần thêm lệnh nào có thê in được tất cả các chỉ số của các phần tử có giá trị lớn nhất ? - Đưa câu lệnh đó vào vị trí nào của chương trình ? Hs. - Có {1,2} - Trả lời câu hỏi. - Đưa vào cuối chương trình For i:=1 to n do If A[i] = A[j] then write (i); Hoạt động 4: HS chạy chương trình trên máy tính và cho kết quả: 4. Củng cố: - Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn phím. - HS về nhà làm bài tập 4.15 trong sách bài tập. - Chuẩn bị chương trình bài 2 bài thực hành 3 chương IV trong SGK. Tuần Ngày soạn: / / Tiết Ngày giảng : / / . BÀI TẬP VÀ THỰC HÀNH 4 I. MỤC ĐÍCH, YÊU CẦU 1. Kiến thức - Củng cố kiến thức về dữ liệu kiểu mảng. - Xây dựng cấu trúc dữ liệu, hiểu thuật toán sắp xếp bằng tráo đổi. 2. Kĩ năng - Biết chỉnh sữa lỗi trong chương trình. - Tự nhập các bộ dữ liệu để hiểu ý nghĩa một số câu lệnh. - Nhận xét, phân tích và đề xuất các cách giải bài toán sao cho chương trình chạy nhanh hơn. 3. Thái độ - Nghiêm túc thực hiện đúng nội quy phòng máy, tự giác trong khi lập trình. II.CHUẨN BỊ 1. Gv:Bảng phụ viết sẵn chương trình, phòng máy, project. 2. Hs: Sgk, CT đã được viết sẵn. III. PHƯƠNG PHÁP Thuyết trình vấn đáp, gợi mở giải quyết vấn đề Tiết 25 IV. TIẾN TRÌNH BÀI HỌC 1. Ổn định tổ chức lớp. - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ: Câu 1: Nêu cách khai báo kiểu mảng 1 chiều. Câu 2: Nhập từ bàn phím xây dựng mảng một chiều A có 6 phần tử.
  43. 3. Bài mới Hoạt động của Gv & Hs Nội dung Hoạt động 1: Xác định bài toán và tìm hiểu chương trình. Đề: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi với các giá trị khác nhau của n số. Gv. Chiếu đề bài lên bảng. Hs. Quan sát đề và lằng nghe câu hỏi của gv. * Chương trình Gv. Y/cầu hs xác định dữ liệu vào/ra của bài toán? SGK_trang 56 Hs. Trả lời câu hỏi. - Vào: mảng A - Ra: mảng A đã sắp xếp Gv. minh hoạ bài toán: A 5 7 2 8 6 4 1 2 3 4 5 6 Mảng A đã sắp xếp: A 2 4 5 6 7 8 1 2 3 4 5 6 - Yêu cầu hs nhắc lại ý tưởng thuật toán(Lớp 10) - TL: Dùng làm biến chỉ số. Hs. Theo dãy số minh họa, nhớ lại thuật toán sắp xếp đã học. - TL:3 lệnh: tg := a[i]; Gv. Nhận xét và chiếu thuật toán đã được liệt kê các bước. a[i]:= a[i+1]; Từ thuật toán yêu cầu học sinh viết chương trình a[i+1]:= tg; Hs. Viết chương trình Gv. Nhận xét và chạy chương trìn * Tìm hiểu chương trình Gv. - Vai trò của biến i, j trong CT? - Vai trò của biến i, j trong CT? - Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền kề của mảng? Hs. Trả lời câu hỏi. Gv. Giải thích một số lệnh của CT. Hs. Chú ý, lắng nghe, quan sát và ghi nhớ. Gv. - Yêu cầu hs tự nhập dữ liệu với CT có sẵn. - Giúp hs phát hiện và sữa lỗi. - Thuật toán trên tiến hành đưa số lớn thứ j về đến vị trí j sau mỗi vòng lặp: For i:= 1 to j-1 do Hs. Chạy CT, nhập dữ liệu, xm kết quả. - Chỉnh sữa CT thông qua các thông báo lỗi. - Chú ý hiểu rõ thêm về CT - Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền kề của mảng? Giải thích một số lệnh của CT. Hs. - Chú ý, lắng nghe, quan sát và ghi nhớ Hoạt động 2: Xác định bài toán câu b. Gv. - Y/cầu hs xác I/O bài toán? Đề: Khai báo biến đếm nguyên Dem và bổ - Biến Dem được tăng lên khi nào? sung vào chương trình những câu lệnh cần Hs. Trả lời câu hỏi thiết để biến Dem tính số lần tráo đổi trong Gv. - Cần đưa câu lệnh tăng Dem vào chỗ nào trong CT trên? chương trình. - - Câu lệnh khởi tạo Dem:= 0 được đặt vào vị trí nào trong CT? 1. Xác định bài toán: + Trước CL đầu tiên: + I: mảng a; For j:= N down to 2 do +O: mảng a đã sắp xếp, số lần tráo đổi + Trước CL duyệt: (Dem); For i:= 1 to j-1 do TL: Khi A[i] > A[i+1] + Trước 3 CL tráo đổi (tức là biểu thức đk trong CL If đúng) + Sau 3 CL tráo đổi TL: Trong thân CL If: trước hoặc sau 3 lệnh Hs. Học sinh trả lời câu hỏi tráo đổi. Gv. - Yêu cầu hs sữa lại CT theo gợi ý đã nêu. - Hướng dẫn hs chỉnh sửa và chạy CT. TL: Chọn một trong hai phương án 3, 4. Hs. – Học sinh thảo luận nhóm (Thêm các CL như đã hướng dẫn vào CT.) - báo cáo kết quả (Chạy CT)
  44. Gv. – Đánh giá kết quả của hs * chương trình: Sửa câu lệnh theo gợi ý của chương trình SGK_trang 65 4.Củng cố Uốn nắn những sai sót thường gặp của Hs. Ôn tập lại lý thuyết Xem, chuẩn bị trước bài toán thực hành Tiết 26 IV. TIẾN TRÌNH BÀI HỌC 1. Ổn định tổ chức lớp. - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ: Không kiểm tra 3. Bài mới Hoạt động của Gv & Hs Nội dung Hoạt động 1: Ôn lại kiến thức và nêu đề bài toán, tìm hiểu Gv. cách khai báo kiểu mảng 1 chiều Hs. gián tiếp: trực tiếp: * Tìm hiểu đề bài Đề: Cho mảng A gồm n phần tử. Viết CT tạo ra Gv. Ghi đề bài lên bảng. mảng B[1 n], trong đó B[i] là tổng của i phần tử Y/cầu hs xác định dữ liệu vào/ra của bài toán? đầu tiên của mảng A. Hs. Trả lời câu hỏi. Input: A gồm n phần tử * Phân tích thuật toán Output: In ra mảng B(theo yêu cầu) Gv. lấy ví dụ minh hoạ Tóm lại: B[i] = A[1] + + A[i] A 4 5 1 2 3 7 i A[j ] 1 2 3 4 5 6 =  j= 1 B 1 2 3 4 5 6 Ban đầu: mọi B[i] = 0 Khai báo: + k/báo mảng Hs. Theo dõi ví dụ minh hoạ + biến đơn Gv. Hỏi: mỗi B[i] được tạo mới bằng bao nhiêu? Phần thân: Gv. GV minh hoạ một số phần tử: B[1], B[2], B[3] B1: tạo mảng A. - Y/cầu hs tìm kết quả mảng B theo ví dụ trên. B2: xd mảng B theo A. Hs. Học sinh trả lời: B3: In mảng B. B 4 9 10 12 15 22 1 2 3 4 5 6 Gv. Y/cầu hs cho biết từng phần của CT cần xây dựng? Hs. Học sinh trả lời câu hỏi Gv. Bước B2 được cụ thể trong CT như thế nào? Hs. sử dụng 2 vòng for lồng nhau. for i:=1 to n do begin b[i]: =0; for j:=1 to i do b[i]:=b[i]+a[j]; end; * Tối ưu thuật toán Gv. Dựa vào phần phân tích ví dụ thuật toán ở trên. Chương trình cải tiến_SGK.tr 65/66 Gv hỏi: So sánh giá trị B[i] và B[i-1]? Đặc biệt: B[1]=? Hs. Tl: B[i]:=B[i-1]+A[i] Tl: B[1]=A[1]
  45. Gv. Chúng ta luôn hướng tới thuật toán tối ưu. Đối với bài toán này theo phân tích ở trên ta đã tận dụng được kết quả của việc tính tổng i -1 phần tử có sẵn ở bước trước. - Do vậy ta có được: + Số lượng phép toán '+' ít hơn +Chỉ dùng 1 vòng lặp for -> chỉ sd 1 biến chỉ số i cho cả 2 mảng A, B Hs. Nhìn bảng, tự điều chỉnh hành vi nhận thức. Hoạt động 2: Hs thực hành trên máy theo nhóm Gv. Hs thực hành theo nhóm Hs. Thực hành theo nhóm, báo cáo kết quả Gv. Nhận xét, đánh giá kết quả 4.Củng cố Uốn nắn những sai sót thường gặp của Hs. Ôn tập lại lý thuyết Xem, chuẩn bị trước bài 12: Kiểu xâu. Tuần Tiết Ngày soạn: / / Ngày giảng : / / . Bài 11: KIỂU XÂU I. MỤC ĐÍCH, YÊU CẦU 1. Về kiến thức - 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 mảng với kiểu xâu. - Biết được cách khai báo biến, nhập/xuất dữ liệu, tham chiếu dến từng kí tự của xâu. - Biết các phép toán liên quan đến xâu. 2. Về kĩ năng - Khai báo được biến kiểu xâu trong ngôn ngữ lập trình Pascal. - Sử dụng biến xâu và các phép toán trên xâu để giải quyết một bài toán đơn giản. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. CHUẨN BỊ 1. GV: Máy vi tính, Máy chiếu để giới thiệu ví dụ. 2. HSSGK. III. PHƯƠNG PHÁP Thuyết trình, vấn đáp IV. NỘI DUNG BÀI GIẢNG 1.Ổn định lớp : - Chào thầy cô . - Cán bộ lớp báo cáo sĩ số . - Chỉnh đốn trang phục . 2. Kiểm tra bài cũ Câu 1: Lập trình nhập một dãy số và đưa ra dãy số vừa nhập với thứ tự ngược lại 3. Bài mới Hoạt động của Gv & Hs Nội dung Hoạt động 1: Khái niệm về xâu GV : Để lưu trữ và xử lý Họ tên của một người, các kiểu dữ liệu Một số khái niệm đã học có đáp ứng được ? - Xâu là một dãy kí tự trong bảng mã ASCII . - Mỗi kí tự được gọi là một phần tử của xâu . - Số lượng kí tự trong xâu được gọi là độ dài của xâu HS : Đưa ra một số phương án . . - Xâu có độ dài bằng 0 gọi là xâu rỗng.