Ngày soạn: Ngày dạy: Tiết theo PPCT: 19 Chương IV. KIỂU DỮ LIỆU CÓ CẤU TRÚC §11. KIỂU MẢNG I. Mục tiêu: Sau khi học xong bài học này, học sinh sẽ: 1. Kiến thức: - Biết được kiểu dữ liệu mới là kiểu mảng một chiều. - Biết được cấu trúc tạo kiểu mảng một chiều và cách khai báo biến mảng một chiều. 2. Kỹ năng: - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể. II. Đồ dùng dạy học 1. Chuẩn bò của giáo viên: Giáo án, Laptop, Projector để giới thiệu các ví dụ và minh họa. 2. Chuẩn bò của học sinh: Sách giáo khoa, vở ghi chép và học bài cũ ở nhà. III.Hoạt động dạy – học: 1. n đònh lớp: (1’) - Kiểm tra só số: - Tổng số: Vắng: - có phép: - không phép: - Kiểm tra tác phong. 2. Kiểm tra bài cũ: (8’) Câu hỏi: Viết chương trình nhập từ bàn phím dãy A gồm 10 số nguyên: a 1 , a 2 , a 3, a 4 , a 5 , a 6 , a 7 , a 8 , a 9 , a 10 . Trả lời: Program Nhap _ So_nguyen; Uses crt; Var a1,a2,a3,a4,a5,a6,a7,a8,a9,a10: integer; BEGIN Clrscr; Writeln(‘Nhap gia tri cua cac so nguyen:’); Write(‘a1=’); Readln(a1); Write(‘a2=’); Readln(a2); Write(‘a3=’); Readln(a3); Write(‘a4=’); Readln(a4); Write(‘a5=’); Readln(a5); Write(‘a6=’); Readln(a6); Write(‘a7=’); Readln(a7); Write(‘a8=’); Readln(a8); Write(‘a9=’); Readln(a9); Write(‘a10=’); Readln(a10); Readln END. 3. Dẫn dắt vào bài: (2’) - Bài toán trên yêu cầu chúng ta thực hiện bao nhiêu công việc? - Bài toán trên đã khai báo bao nhiêu biến? và sử dụng bao nhiêu cặp câu lệnh Write và Readln? - Giả sử yêu cầu của bài toán là nhập vào 100 số nguyên thì chúng ta sẽ phải khai báo bao nhiêu biến? sử dụng bao nhiêu câu lệnh Readln? Như vậy, các em thấy bản chất của bài toán là không khó nhưng khi viết chương trình thì phải khai báo rất nhiều biến và lặp đi lặp lại một câu lệnh nhiều lần. Để khắc phục vấn đề này, Pascal cung cấp một kiểu dữ liệu mới là Kiểu mảng. Để hiểu rõ hơn, Thầy và các em cùng nghiên cứu qua bài học hôm nay. 4. Tổ chức các hoạt động dạy – học trên lớp HOẠT ĐỘNG CỦA THẦY – TRỊ NỘI DUNG Hoạt động 1: Tìm hiểu ý nghĩa của mảng một chiều (3’) 1. Kiểu mảng một chiều GV: u cầu Hs nghiên cứu Sgk HS: Nghiên cứu nội dung Sgk. ? Em hiểu thế nào về Mảng 1 chiều? ? Trình bày các kiểu dữ liệu đã học? ? Để mơ tả mảng 1 chiều, cần xác định những yếu tố nào? HS: Trả lời các câu hỏi. Chép bài. - Mảng 1 chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu. - Các phần tử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số. - Để mơ tả mảng 1 chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó. Hoạt động 2: Tạo kiểu mảng 1 chiều và khai báo biến mảng. (17’) GV: u cầu Hs nghiên cứu Sgk, rồi trả lời các câu hỏi sau: HS: Nghiên cứu nội dung Sgk. a. Khai báo * Cách 1: Khai báo trực tiếp Var <Tên biến mảng>: array[kiểu chí số] of <kiểu phần tử>; ? Để khai báo biến ta sử dụng từ khóa nào? ? Có mấy cách khai báo biến mảng 1 chiều? Trình bày? HS: Trả lời các câu hỏi. Chép bài vào vở. * Cách 2: Khai báo gián tiếp Type <Tên kiểu mảng>=array[kiểu chỉ số] of <kiểu phần tử>; Var <tên biến mảng>: <tên kiểu mảng>; Trong đó: Kiểu chỉ số thường là một đoạn số ngun liên tục có dạng n1 n2 xác định chỉ số đầu và chỉ số cuối (n1 ≤ n2); Kiểu phần tử là kiểu của các phần tử mảng. ? Đây là khai báo mảng trực tiếp hay gián tiếp? HS: Trực tiếp. ? Tên biến mảng là gì? (HS: A) ? Kiểu chí số là gì? (Integer) ? Em thử cho biết ý nghĩa của khai báo biến này? HS: Tạo mảng A gồm 10 phần tử, có kiểu ngun. ? Thử chuyển sang khai báo gián tiếp? (dẫn dắt hs trả lời) Ví dụ: Var A: array[1 10] of Integer; Type MangInt = array[1 10] of Integer; Var A: MangInt; GV: Lấy thêm một vài ví dụ khác (chiếu ví dụ lên màn hình rồi giải thích cho hs) Ví dụ: ? Cho biết tên của các kiểu dữ liệu mới? HS: MangInt và MangChar. ? MangInt và MangChar có bao nhiêu phần tử? Kiểu chỉ số là gì? (HS: 20 phần tử; Từ 1 đến 20) ? Mỗi phần tử của MangInt thuộc kiểu gì? HS: Kiểu ngun ? Mỗi phần tử của MangChar thuộc kiểu gì? HS: Kiểu kí tự ? MI, MJ, MK là gì? (HS: biến có kiểu MangInt) ? M1, M2 là mảng gồm bao nhiêu phần tử? Kiểu chỉ số là gì? (HS: 21 phần tử; Từ -10 đến 10) Type MangInt = array[1 20] of Integer; MangChar = array[1 20] of Char; Var MI, MJ, MK: MangInt; X, Y: mangChar; M1, M2: array[-10 10] of Integer; M3: array[‘A’ ‘Z’] of Integer; M3 là mảng các số ngun được xác định chỉ số từ A đến Z. Gồm bao nhiêu phần tử? (HS: 26 phần tử) Để tham chiếu đến từng phần tử của mảng ta thực hiện như sau: (Diễn giảng, cho ví dụ để hs hiểu) * Tham chiếu đến từng phần tử Tên biến mảng[chỉ số] Ví dụ: - A[1]: là phần tử ở vị trí 1 của mảng A. - A[i]: là phần tử ở vị trí i của mảng A. Hoạt động 3: Rèn luyện kỹ năng sử dụng kiểu mảng 1 chiều. (10’) ? Hãy khai báo một mảng số thực B gồm các phần tử được đánh số từ -100 đến 200? HS: Lắng nghe, suy nghĩ rồi thực hiện. * Khai báo trực tiếp: Var B: array[-100 200] of Real; * Khai báo gián tiếp: Type MangReal = array[-10 200] of Real; Var B: MangReal; ? Sử dụng kiểu mảng để viết chương trình nhập từ bàn phím dãy A gồm 10 số nguyên: a 1 , a 2 , a 3, a 4 , a 5 , a 6 , a 7 , a 8 , a 9 , a 10 . Program Nhap_Day_so; Uses Crt; Var A: array[1 10] of Integer; {khai báo mảng} i: Integer; ? Công việc nhập các số nguyên được lặp lại bao nhiêu lần? Sử dụng vòng lặp nào? HS: lặp lại 10 lần, sử dụng vòng lặp FOR. ? Các em chú ý cách nhập dữ liệu cho mảng? ? So sánh với chương trình ban đầu. 5. Củng cố, sơ kết bài học. (1’) Qua bài học này, các em cần nắm vững: - Cách khai báo mảng 1 chiều. - Tham chiếu đến các phần tử của mảng 1 chiều. 6. Dặn dò, ra bài tập về nhà. (3’) Bài tập: Viết chương trình nhập từ bàn phím dãy A gồm 10 số nguyên: a 1 , a 2 , a 3, a 4 , a 5 , a 6 , a 7 , a 8 , a 9 , a 10 . Rồi thực hiện: a. Tính tổng của các số nguyên có trong dãy A. b. Tính tổng của các số chẵn. Ngày soạn: Ngày dạy: Tiết theo PPCT: 43 Chương VI. CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CĨ CẤU TRÚC §18. VÍ DỤ VỀCÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (Tiết 2) I. Mục tiêu: sau khi học xong bài học này, học sinh sẽ: 1. Kiến thức: - Biết được cấu trúc chung của hàm. Biết được vị trí khai báo hàm trong chương trình chính. 2. Kỹ năng: - Phân biệt được khác nhau cơ bản của hàm và thủ tục. - Sử dụng đúng lời gọi hàm trong chương trình chính. II. Đồ dùng dạy học 1. Chuẩn bò của giáo viên: Giáo án, Bảng phụ để giới thiệu các ví dụ và minh họa. 2. Chuẩn bò của học sinh: Sách giáo khoa, vở ghi chép và học bài cũ ở nhà. III. Hoạt động dạy – học: 1. n đònh lớp: (1’) - Kiểm tra só số: - Tổng số: Vắng: - có phép: - không phép: - Kiểm tra tác phong. 2. Kiểm tra bài cũ: (5’) Câu hỏi 1: Trình bày cấu trúc của Thủ tục? Câu hỏi 2: Tham trị là gì? Tham biến là gì Trả lời: Câu 1 Câu 2 Procedure <tên thủ tục>[(<Danh sách tham số>)]; [<Phần khai báo>] Begin [<dãy các lệnh>] End; - Tham số hình thức được thay bằng tham số thực sự là các giá trị cụ thể gọi là tham trị. - Tham số hình thức được thay bằng tham số thực sự là các biến chứa dữ liệu gọi là tham biến. 3. Dẫn dắt vào bài: (1’) - Chương trình con gồm mấy loại? Ở tiết học trước, chúng ta đã được làm quen với cách viết và sử dụng thủ tục. Còn với chương trình con là hàm thì cách viết và sử dụng sẽ như thế nào? Tiết học này chúng ta sẽ tiếp tục tìm hiểu? 4. Tổ chức các hoạt động dạy – học trên lớp HOẠT ĐỘNG CỦA THẦY – TRỊ NỘI DUNG Hoạt động 1: Tìm hiểu cấu trúc của hàm (20’) 2. Cách viết và sử dụng hàm GV: ? Hàm là gì? (Hàm là CTC thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó) ? Trình bày các kiểu dữ liệu đã học? ? Kể tên một số hàm số học chuẩn mà em đã học? HS: - Hàm ABS(): Tính giá trị tuyệt đối. - Hàm SQRT(): Tính căn bậc 2…. ? Để tính x , trong pascal ta sẽ viết như thế nào? HS: SQRT(x) ? SQRT là thành phần nào của hàm? ? x là thành phần nào của hàm? - Cách viết như thế này gọi là cách sử dụng hàm. Còn để viết một hàm như thế nào thì trước hết chúng ta cần tìm hiểu cấu trúc của hàm là như thế nào? ? Khai báo hàm ta dùng từ khóa nào? a. Cấu trúc của hàm ? So sánh sự giống và khác nhau của hàm và thủ thục? (Cho hs làm nhanh, lấy 5 hs nhanh nhất để chấm điểm) - Giống: có cấu trúc tương tự. - Khác: Phần đầu (Tên dành riêng, tên hàm phải quy định kiểu dữ liệu) Function <Tên hàm>[(<ds tham số>)]: <kiểu dữ liệu>; [<phần khai báo>] Begin [<dãy các lệnh>] End; GV: Nhận xét kết quả, đánh giá cho điểm. Để thấy rõ hơn, chúng ta cùng nhau tìm hiểu Ví dụ 1, trang 100/ SGK. GV: Treo bảng phụ HS: Kết hợp xem SGK + Bảng phụ. Trong đó: Kiểu dữ liệu gồm: Integer, Real, Char, Boolean, String. Phần thân hàm phải có câu lệnh gán. <Tên hàm>:=<biểu thức> ? Trong chương trình có mấy hàm? Đó là những hàm nào? (HS: một hàm: UCLN) ? Chỉ ra vị trí xuất hiện của hàm? ? Chỉ ra các tham số của hàm? Đây là tham biến hay tham trị? (HS: x, y là các tham trị) ? Kiểu dữ liệu của hàm là gì? (HS: Integer) ? Chỉ ra câu lệnh gán giá trị cho tên hàm? HS: UCLN:=x; Hoạt động 2: Cách sử dụng hàm (15’) Thông qua ví dụ này, các em đã thấy được sự giống và khác nhau giữa thủ tục và hàm. Còn hàm được sử dụng ntn? Chúng ta sẽ sang phần b. b. Sử dụng hàm ? Lệnh gọi hàm được thực hiện như thế nào? Hoàn toàn tương tự như sử dụng các hàm chuẩn. Lệnh gọi hàm có thể tham gia vào biểu thức và có thể là tham số của lời gọi hàm, thủ tục khác. Để thấy rõ hơn vấn đề này, chúng ta cùng nhau tìm hiểu ví dụ 2, SGK/trang 102. GV: Treo bảng phụ HS: Kết hợp theo dõi SGK + Bảng phụ ? Đâu là biến toàn cục? (HS: a, b, c) ? Đâu là biến cục bộ? (HS: không có) ? Tên và các tham số của hàm? (HS: Min(a,b)). ? Kiểu dữ liệu của hàm? (HS: Real) ? Chỉ ra lời gọi hàm? (HS: Min(Min(a,b),c)) Như vậy, các em thấy hàm Min(a,b) lại là một tham số của hàm Min bên ngoài. 5. Củng cố, sơ kết bài học. (2’) Qua bài học này, các em cần nắm được: - Có 2 loại Chương trình con (Thủ tục và hàm). - Cấu trúc và vị trí của Chương trình con trong chương trình chính. (? Chương trình con được viết ở phần nào của Chương trình chính?). - Phân biệt được tham số hình thức, tham số thực sự, tham biến, tham trị? - Chương trình con được gọi thông qua tên của nó. 6. Dặn dò, ra bài tập về nhà.(1’) Chuẩn bị trước bài tập và thực hành 6, trang 103/SGK. Ngaøy soaïn: Ngaøy daïy: Tieát theo PPCT: 04 BÀI TẬP VÀ THỰC HÀNH 1 I. MỤC TIÊU 1. Kiến thức - Cũng cố hiểu biết ban đầu về tin học, máy tính. - Sử dụng bộ mã ASCII để mã hóa kí tự, số nguyên. - Viết được số thực dưới dạng dấu phẩy động. 2. Kĩ năng - Biết được cách mã hóa của máy tính. - Biết biểu diễn các hệ đếm cơ số 10, 2, 16. 3. Tư tưởng, tình cảm,Thái độ - Giúp cho học sinh có tính sáng tạo, tìm tòi, nghiên cứu. - Gây động cơ học tập tích cực. II. ĐỒ DÙNG DẠY HỌC 1. Chuẩn bị của giáo viên - Sách Giáo khoa, Sách Giáo viên. 2. Chuẩn bị của học sinh - Sách Giáo khoa. III. TIẾN TRÌNH TỔ CHỨC DẠY VÀ HỌC 1. Ổn định tổ chức lớp: (2’) - Nắm sĩ số: - Ổn định trật tự, tạo tâm lý tốt để bắt đầu tiết học. 2. Kiểm tra bài cũ: (3’) - Câu hỏi 1: Hệ đếm cơ số 10, 2, 16 sử dụng các ký hiệu nào? - Câu hỏi 2: Cách biểu diễn của hệ nhị phân? Biểu diễn số 1012? 3. Dẫn dắt vào bài mới: (1’) Bài trước ta đã học về tin học và máy tính, mã hóa thông tin, biểu diễn số nguyên và số thực. Hôm nay ta sẽ đi vào giải một số bài tập cụ thể. 4. Tổ chức các hoạt động Dạy và Học trên lớp: HOẠT ĐỘNG CỦA THẦY – TRÒ NỘI DUNG 1. Hoạt động 1: Tin học và Máy tính (10’) a. Tin học, máy tính GV: Hãy cho biết Tin học là gì? Đáp án: - Gọi hs trả lời tại chổ. Câu a1) C và D GV: Em hãy cho biết 1GB bằng bao nhiêu MB? - Gọi hs trả lời tại chổ. Rồi làm câu a2) Câu a2) B GV: Đổi 1GB = ?byte - Gọi hs lên bảng làm. GV: Hôm trước các em đã được học cách mã hóa thông tin. Các em đã biết được cách biểu diễn trạng thái của bóng đèn, bây giờ các em làm tương tự như vậy các e có thể biểu diễn tương ứng với học sinh nam là bit 1, tương ứng với học sinh nữ là bit 0. - Gọi một số học sinh lên bảng làm. Rồi nhận xét. Câu a3) trang 16/SGK. Hoạt động 2: Sử dụng bảng mã ASCII để mã hóa và giải mã. (10’) b. Sử dụng mảng mã ASCII để mã hóa và giải mã GV: Thông tin đưa vào máy tính được mã hóa như thế nào? - Gọi hs trả lời tại chổ. - Yêu cầu hs xem bảng Phụ lục 1 trang 169/SGK. Rồi dựa vào đó để mã hóa và giải mã. - Gọi 2 hs lên bảng làm bài b1) và b2) Đáp án: b1) “VN” 01010110 01001110 “Tin” 01010100 01101001 01101110 b2) 01001000 01101111 01100001 là Hoa - Cho một số ví dụ khác đề hs tự giải. Hoạt động 3: Biểu diễn thông tin trong máy(17’) c. Biểu diễn số nguyên và số thực GV: Gọi 2 hs lên bảng làm bài tập sau: - Chuyển 111 2 sang ? 10 10 012 2 72*12*12*1111 =++= - Chuyển 1AE 16 sang ? 10 37616*1416*1016*11 012 16 =++= AE - Yêu cầu hs làm bài tập c1), c2) trang 16, 17/SGK 5. Củng cố, sơ kết bài học (1’) - Nhận xét, rút kinh nghiệm. - Các em cần phải nắm vững cách sử dụng bảng mã ASCII để mã hóa các kí tự. - Nắm vững cách biểu diễn thông tin trong máy tính. 6. Dặn dò, ra bài tập cho học sinh (1’) - Đọc Bài đọc thêm 2 trang 17/SGK. - Xem trước bài số 3 trang 19/SGK để chuẩn bị cho tiết học sau . chiều và cách khai báo biến mảng một chiều. 2. Kỹ năng: - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể. II. Đồ. của mảng một chiều (3’) 1. Kiểu mảng một chiều GV: u cầu Hs nghiên cứu Sgk HS: Nghiên cứu nội dung Sgk. ? Em hiểu thế nào về Mảng 1 chiều? ? Trình bày các kiểu dữ liệu đã học? ? Để mơ tả mảng. TRÚC §11. KIỂU MẢNG I. Mục tiêu: Sau khi học xong bài học này, học sinh sẽ: 1. Kiến thức: - Biết được kiểu dữ liệu mới là kiểu mảng một chiều. - Biết được cấu trúc tạo kiểu mảng một chiều và cách