Để mô tả mảng một 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ó - Để người lập trình có thể xây dựng và sử - Nghiên cứu SGK và trả lời dụng kiểu mảng một chi[r]
(1)Ngày soạn Tiết 19: BÀI TẬP I Mục tiêu Kiến thức Củng cố lại cho học sinh kiến thức liên quan đến tổ chức rẽ nhánh và lặp: Cấu trúc lặp, sơ đồ thực hiện, thực máy gặp lệnh lặp Kĩ Rèn luyện kĩ vận dụng và linh hoạt việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp phù hợp để giải bài toán đặt Thái độ Tự giác, tích cực, chủ động giải các bài tập II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ Kiểm tra quá trình học bài Bài Hoạt động giáo viên Ví dụ 1: Lập trình tính giá trị hàm số: Hoạt động học sinh TL: x3 x5 x n 1 n sin( x) x (1) 3! 5! (2n 1)! Đưa kết màn hình Hỏi: - Input: x, n - Input bài toán là gì? - Output: hàm số sin(x) - Output bài toán ? - Hãy nêu tư tưởng thực bài toán - Tư tưởng: Đầu tiên i← 1, t←x, gt←1, lt←x trên ? Trong vòng lặp: + i←i+2 + gt←gt*i + lt←(-1)*lt*x*x + t←t+lt/gt Thực nào (i= 2*n + 1) thì thôi Lop11.com (2) - Viết chương trình - Hãy viết CT cho bài tóan trên ? Ví dụ 2: Lập chương trình nhập liên tiếp dãy số tích chúng > a (a là số thực nhập từ bàn phím) Tính: Tổng dãy số Trung bình cộng dãy số đó Số lượng các số dương Số lượng các số âm Số bé Số lớn Đưa kết màn hình Hỏi: - Input bài toán là gì? - Input: Dãy số a1, a2, , an và số a - Output bài toán ? - Output: Tổng dãy, TBC, Số lượng các số dương, số lượng các số âm, giá trị Max, Min - Hãy nêu tư tưởng thực bài toán - Tư tưởng: tong←0; TBC←0; d1←0; d2←0; tich←1 trên ? - Nhập phần tử thử 1, a1< a thì thực cv sau: + max ←a1, min← a1 + Thực vòng lặp Repeat-Until While-Do: Nhập dãy số nào a1*a2* *an >a thì thôi Thực việc lặp sau: Nhập ptử ai, kiểm tra xem ai>0 thì d2←d2+1, ngược lại d1←d1 + Kiểm tra xem, ai> max thì max ←ai Nếu ai< thì min←ai tong←tong+ai - Ra khỏi vòng lặp - TBC←tong/(d1+d2) - Số lượng các số dương= d2 - Số lượng các số âm = d1 - giá trị lớn là Max - Giá trị nhỏ là Min - Ycầu hs viết CT - Viết CT cho bài toán Củng cố Xem lại cấu trúc các câu lệnh lặp, và cấu trúc rẽ nhánh Bài tập- dặn dò Về nhà làm các bài tập sách bài tập Ngày soạn Chương IV Lop11.com (3) KIỂU DỮ LIỆU CÓ CẤU TRÚC Tiết 20: KIỂU MẢNG I Mục tiêu Kiến thức Biết số kiểu liệu là kiểu mảng chiều, biết loại biến có số Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Kĩ Tạo kiểu mảng chiều và sử dụng biến mảng chiều ngôn ngữ Pascal để giải số bài toán cụ thể Thái độ II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ Hãy nêu lưu đồ và số chú ý sử dụng lệnh Bài Hoạt động giáo viên Hoạt động học sinh Kiểu mảng chiều - Nêu khái niệm: Là dãy hữu hạn các - Chú ý lắng nghe phần tử cùng kiểu Mảng đặt tên và phần tử nó có số Để mô tả mảng chiều cần xác định kiểu các phần tử và cách đánh số các phần tử nó - Để người lập trình có thể xây dựng và sử - Nghiên cứu SGK và trả lời dụng kiểu mảng chiều, các ngôn ngữ LT - Cách 1: Khai báo trực tiếp biến mảng chiều có các qui tắc, cách thức cho phép xác định: Var <tên biến mảng>: array [kiểu Tên kiểu mảng chiều số] of <kiểu phần tử>; Số lượng phần tử Kiểu liệu phần tử Trong đó: Cách khai báo biến mảng - Kiểu số thường là đoạn số nguyên liên tục có Cách tham chiếu đến phần tử dạng n1 n2 với n1, n2 là các biểu thức a, Khai báo nguyên xác định số đầu và số cuối (n1 ≤ n2) Lop11.com (4) - GV: Yêu cầu hs nghiên cứu SGK và cho - Kiểu phần tử là kiểu các phần tử mảng biết cách tạo kiểu liệu mảng chiều - Ví dụ: ngôn ngữ LT Pascal Var a: array[1 100] of integer; - Tạo kiểu liệu có tên a, gồm 100 phần tử, có kiểu nguyên - Quan sát bảng và chọn khai báo đúng: Arr1= array[1 200] of real; Arr3= array[-100 0]of boolean; - GV: Tìm ví dụ để minh họa - GV: Gọi học sinh khác, hỏi: Ý nghĩa lệnh bạn vừa viết? - GV: Chiếu lên bảng số khai báo kiểu - Nghiên cứu SGK và trả lời Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng mảng chiều Type chiều Arr1= array[1 200] of real; Type <tên kiểu mảng> = array Arr2= array[byte] of real; [kiểu số] of <kiểu phần tử>; Arr3= array[-100 0]of boolean; Var <tên biến mảng>:<tên kiểu Hỏi: Những khai báo nào đúng? mảng>; Yêu cầu hs cho biết cách khai báo biến và - Ví dụ: Type a=array[1 200] of integer; Var a1, a2: a; ví dụ khai báo biến mảng ứng với - Khai báo biến mảng chiều kiểu liệu vừa tạo - a đã chiếm 200 byte nhớ - Gọi học sinh khác hỏi: Ý nghĩa lệnh bạn vừa viết? - Dung lượng nhớ biến a đã chiếm là bao nhiêu? - Chú ý cho học sinh cách đặt tên kiểu liệu và tên biến, tránh nhầm lẫn Giới thiệu cách tham chiếu đến phần tử mảng chiều Yêu cầu học sinh lấy ví dụ - Theo dõi hướng dẫn giáo viên và độc lập suy nghĩ để trả lời: A[1] là phần tử vị trí mảng A[i] là phần tử vị trí thứ i mảng - Viết CT, giải thích câu lệnh và cách khai báo, tham chiếu đến phần tử mảng cho học sinh Ví dụ: Nhập n phần tử thực In phần tử có giá trị sai khác với giá trị TBC là -1 Củng cố Lop11.com (5) Những nội dung đã học: Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Bài tập- dặn dò Làm các bài tập sách bài tập Ngày soạn Tiết 21 KIỂU MẢNG (Tiếp) I Mục tiêu Kiến thức Biết số kiểu liệu là kiểu mảng chiều, biết loại biến có số Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Kĩ Tạo kiểu mảng chiều và sử dụng biến mảng chiều ngôn ngữ Pascal để giải số bài toán cụ thể Thái độ Tự giác, tích cực, chủ động giải các bài tập II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ - Nêu hai cách khai báo trực tiếp và gián tiếp biến mảng chiều? Bài Hoạt động giáo viên Hoạt động học sinh b Một số ví dụ VD1: Lop11.com (6) Ví dụ 1: Viết CT nhập vào mảng số nguyên Tìm các giá trị max, và vị trí chúng dãy - Hỏi: Hãy nêu tư tưởng thuật toán - Yêu cầu học sinh viết CT cho bài toán - Tư tưởng: + B1: Nhập vào dãy số + B2: max ← a1, ← a1 + B3: Duyệt từ đầu đến cuối dãy số, ai> max thì max ← ai, < thì ← Kết thúc vòng lặp, ta tìm số max thực và số thực dãy + B4: Lấy giá trị max và vừa tìm được, đem so sánh với phần tử dãy số Nếu phàn tử nào có giá trị = max thì ta in số i tương ứng chính là vị trí nó dãy số - Viết CT Ví dụ 2: Viết CT tính tổng các số lẻ và trung VD2: - Tư tưởng: + Có TL← 0, TC ← bình cộng các số chẵn thuộc [20, 200] - Hỏi: Hãy nêu tư tưởng thuật toán + Cho i chạy từ 20 đến 200 + kiểm tra i chia hết cho thì TC ← TC + i; dem ← dem + ngược lại thì TL ← TL + i; + thoát khỏi vòng lặp, ta in TL - Yêu cầu học sinh viết CT cho bài toán và TBC= TC/dem Ví dụ 3: Viết CT: - Viết CT - Nhập vào số nguyên n (1 <n ≤ 20)và n số thực b1, b2, , bn Mỗi số có không quá số lẻ sau VD3: - Tư tưởng: dấu chấm thập phân - Đưa màn hình: B1: Nhập vào số nguyên n và dãy số Số nguyên k là số lượng số dãy có B2: K← 0; giá trị nhỏ số bên trái cạnh nó B2: Duyệt từ đầu đến cuối dãy số (i:=2→n) Nếu k > thì đưa tiếp màn hình k Nếu a[i+1] < a[i] thì tăng biến k lên, và đưa dòng, dòng hai số: số i, và số thực a[i] Thoát khỏi vòng lặp, k=0 thì thông báo Số thứ tự i Số thực bi < số cạnh nó bên trái, không có phần tử nào dãy có giá trị thỏa các số trên dòng cách mãn điều kiện trên dấu cách Củng cố Những nội dung đã học: Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Bài tập- dặn dò Làm các bài tập sách bài tập Ngày soạn Tiết 22 Lop11.com (7) KIỂU MẢNG (Tiếp) I Mục tiêu Kiến thức Biết số kiểu liệu là kiểu mảng chiều, biết loại biến có số Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Kĩ Tạo kiểu mảng chiều và sử dụng biến mảng chiều ngôn ngữ Pascal để giải số bài toán cụ thể Thái độ Tự giác, tích cực, chủ động giải các bài tập II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ - Lồng vào quá trình học bài Bài Hoạt động giáo viên b Một số ví dụ Ví dụ 1: Tìm phần tử lớn dãy số nguyên - Yêu cầu hs xác định Input và Output bài toán - Thuật tóan: B1: Nhập N và dãy A1,…, AN B2: Max ← a1, i← B3: Nếu i > N thì đưa giá trị Max kết thúc B4: B4.1: Nếu > Max thì Max ← B4.2 : i← i + quay lại bước Ví dụ 2: Sắp xếp dãy số nguyên thuật toán tráo đổi Hoạt động học sinh Input: Số nguyên dương N (N≤ 250) và dãy A gồm N số nguyên dương A1,…, AN, số không vượt quá 500 Output: Chỉ số và giá trị phần tử lớn dãy số đã cho Input: Số nguyên dương N (N≤ 250) và dãy A gồm N số nguyên dương A1,…, AN, số Lop11.com (8) b1 Nhập N, các số hạng a1, aN b2: M ← N b3: Nếu M < thì đưa dãy A đã xếp kết thúc b4: M ← M -1, i ← b5: i ← i + b6: Nếu i > M thì quay lại bước b7: Nếu > ai+1 thì tráo đổi ai, ai+1 cho b8: Quay lại bước Ví dụ 3: Tìm kiếm nhị phân B1: Nhập N, các số hạng, các số hạng a1, a2,…,aN và k B2: Dau←1, Cuoi←N Dau Cuoi B3: Giữa ← không vượt quá 500 Output: Dãy số A đã xếp thành dãy không giảm Input: Dãy A là dãy tăng gồm N (N ≤ 250) số nguyên dương A1,…, AN và số nguyên k Output: Chỉ số i mà Ai = k thông báo “Không tìm thấy” không có số hạng nào dãy A có giá trị k B4: Nếu agiữa = k thì thông báo số giữa, kết thúc B5: Nếu agiữa > k thì đặt Cuoi= Giua – chuyển đến bước B6: Dau←Giua + B7: Nếu Dau > Cuoi thì thông báo A không có số hạng nào có giá trị k và kết thúc B8: Quay lại bước Ví dụ 4: Viết CT tính TBC 100 phần tử - Nghiên cứu thuật tóan và viết CT nguyên nhập từ bàn phím Củng cố Những nội dung đã học: Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Bài tập- dặn dò Làm các bài tập sách bài tập và bài tập sau: Viết CT nhập vào mảng số nguyên Tìm các giá trị max, và vị trí chúng dãy Ngày soạn Tiết 23 KIỂU MẢNG (Tiếp) I Mục tiêu Kiến thức Biết kiểu liệu là kiểu mảng hai chiều Lop11.com (9) Biết cách tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến phần tử mảng Kĩ Tạo kiểu mảng hai chiều và khai báo biến mảng hai chiều ngôn ngữ lập trình Pascal Sử dụng đúng biến mảng để giải số bài toán cụ thể Thái độ Tự giác, tích cực, chủ động giải các bài tập II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ - Nêu hai cách khai báo trực tiếp và gián tiếp biến mảng chiều? - Làm bài tập VN đã cho: Nhập n phần tử thực In phần tử có giá trị sai khác với giá trị TBC là -1 Bài Hoạt động giáo viên Hoạt động học sinh Hoạt động 1: Giới thiệu ví dụ sách - Chú ý theo dõi yêu cầu và dẫn dắt giáo giáo khoa Tính và đưa màn hình bảng viên cửu chương - Hỏi: Sử dụng kiến thức mảng chiều, hãy đưa cách sử dụng kiểu mảng đó để lưu - Sử dụng mảng chiều, mảng lưu trữ bảng cửu chương hàng bảng - Với cách lưu trữ vậy, ta phải khai báo - Khai báo biến mảng chiều bao nhiêu biến mảng? - Có khó khăn gì? - Để khắc phục các khó khăn này, ta xem - Khai báo nhiều biến, viết chương trình nhập, mảng chiều là phần tử, ghép mảng xuất liệu dài - Nếu xem hàng mảng hai chiều là một chiều thành mảng hai chiều - Yêu cầu học sinh nhận xét mảng chiều? phần tử thì ta có thể nói mảng hai chiều là mảng Hoạt động 2: Tìm hiểu kiểu mảng chiều mà phần tử là mảng chiều - Các yếu tố xác định mảng hai chiều? Lop11.com (10) Hỏi: Để mô tả kiểu mảng hai chiều, ta cần xác Các yếu tố xây dựng mảng hai chiều? - Tên kiểu mảng định yếu tố chính nào? a Khai báo - Số phần tử trên dòng, số phần tử trên - Cách 1: Khai báo trực tiếp biến mảng hai cột chiều: - Kiểu liệu chung phần tử Var <tên biến mảng> : array [kiểu số - Cách khai báo biến - Cách tham chiếu đến phần tử hàng, kiểu số cột] of <kiểu phần tử>; - Cách 2: Type <tên kiểu mảng> = array [kiểu số hàng, kiểu số cột] of <kiểu phần tử>; var <tên biến mảng>: <tên kiểu mảng>; - Ví dụ: Các khai báo sau đây là hợp lệ: var a: array [-100 200,1 15]of integer; type arr= array [0 3*(n+1), n] of longint; - đó: n là nguyên - Tham chiếu tới phần tử mảng hai chiều xác định tên mảng cùng với hai số phân cách dấu phẩy và viết cặp ngoặc [ và ] b Một số ví dụ Ví dụ : Viết CT tính và đưa m.h bảng nhân Ví dụ : Viết CT nhập vào từ b.p các phần tử - Yêu cầu hs viết CT mảng chiều B gồm hàng, cột với các - Yêu cầu hs viết CT ptử là các số nguyên và số nguyên k Sau đó đưa mh các ptử mảng có giá trị < k Củng cố Những nội dung đã học: Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Bài tập- dặn dò Làm các bài tập sách bài tập Ngày soạn Tiết 24 BÀI TẬP VÀ THỰC HÀNH (tiết 1) I Mục tiêu Kiến thức Củng cố lại các kiến thức kiểu liệu mảng Kĩ Nâng cao kĩ sử dụng số lệnh kiểu liệu mảng chiều lập trình, cụ thể: Khai báo kiểu liệu mảng chiều Nhập/ xuất liệu cho mảng Duyệt qua tất các phần tử mảng để xử lý phần tử Lop11.com (11) Biết giải số bài toán thường gặp: Tính tổng các phần tử thỏa mãn điều kiện nào đó, Đếm số các phần tử thỏa mãn điều kiện nào đó, Tìm phần tử lớn nhất, nhỏ Thái độ Rèn luyện tác phong, tư lập trình: Tự giác, tích cực, chủ động, sáng tạo tìm kiếm kiến thức II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ - Nêu hai cách khai báo trực tiếp và gián tiếp biến mảng chiều? - Làm bài tập VN đã cho: Nhập n phần tử thực In phần tử có giá trị sai khác với giá trị TBC là -1 Bài Hoạt động 1: Tìm hiểu cách sử dụng lệnh và kiểu liệu mảng chiều qua chương trình có sẵn Ví dụ 1: Tạo mảng A gồm n (n≤ 100) số nguyên, số có trị tuyệt đối không vượt quá 300 Tính tổng các phần tử mảng là bội số số nguyên dương k cho trước a, Tìm hiểu, gõ vào máy và chạy thử CT sau: Program Sum; uses crt; const nmax= 100; type myArray=array[1 nmax] of Integer; var a: myArray; s, n, i, k: Integer; Begin clrscr; randomize; write (‘Nhap n= ’); readln(n); {Tao ngau nhien mang gom n so nguyen} for i:=1 to n a[i]:= random(300) – random(300); for i:=1 to n write (a[i]: 5); {In mang vua tao} writeln; write(‘Nhap k=’); Lop11.com (12) readln(k); s:=0; for i:=1 to n if a[i] mod k=0 then s:= s+ a[i]; writeln(‘Tong can tinh la:’, s); readln end Hoạt động giáo viên Tìm hiểu chương trình bài 1.a (sgk-63) - Chiếu CT lên bảng - Hỏi: Khai báo uses crt; có ý nghĩa gì? Hoạt động học sinh - Quan sát, chú ý và trả lời - Khai báo thư viện chương trình crt để sử - Hỏi: myArray là tên kiểu liệu hay tên dụng thủ tục clrscrt; - Tên kiểu liệu biến? - Hỏi: Những dòng lệnh nào dùng để tạo biến - type myArray=array[1 nmax] of Integer; mảng a? - Thực chương trình để học sinh thấy kết var a: myArray; quả: + Hỏi: Lệnh gán a[i]:= random(300) – - Lệnh sinh ngẫu nhiên giá trị cho mảng a từ -299 random(300); có ý nghĩa gì? + Hỏi: Lệnh for i:=1 to n write (a[i]: 5); đến 299 - In màn hình giá trị phần tử có ý nghĩa gì? + Hỏi: Lệnh s:= s+ a[i]; thực bao mảng a, phần tử dành cho vị trí - Có số lần đúng số phần tử a[i] chia hết k nhiêu lần? - Thực lại chương trình lần cuối để học - Quan sát giáo viên thực chương trình và sinh thấy kết kết trên màn hình b Đưa các câu lệnh sau vào vị trí - Quan sát và chú ý các câu hỏi giáo viên cần thiết nhằm sửa đổi CT câu a, để có CT đưa số các số dương và số các số âm mảng - Chiếu lên màn hình các lệnh cần thêm vào - Quan sát các lệnh và suy nghĩ vị trí cần sửa chương trình câu a chương trình câu a - Hỏi: Ý nghĩa biến posi và neg? - Dùng để lưu số lượng đếm - Hỏi: Chức lệnh: If a[i] > then - Đếm số âm đếm số dương posi:= posi + else if a[i] < then neg:=neg +1; - Ycầu hs thêm vào vị trí cần thiết để chương - Chỉ vị trí cần thêm vào chương trình trình đếm số - Yc hs gõ nội dung và lưu lại với tên - Lưu CT, thực CT và thông báo kết caub.pas Thực chương trình và báo cáo Lop11.com (13) kết Rèn luyện kĩ lập trình Ví dụ 2: Viết chương trình tìm phần tử có giá trị lớn mảng và đưa màn hình số và giá trị phần tử tìm Nếu có nhiều phần tử có cùng giá trị lớn thì đưa phần tử có số nhỏ a Tìm hiểu CT tìm số và giá trị lớn - Yêu cầu hs nghiên cứu bài 2.a (sgk-64) - Hỏi: Vai trò biến j chương trình - Hỏi: Nếu muốn tìm phần tử nhỏ nhất, cần sửa chỗ nào? - Hỏi: Nếu muốn tìm phần tử lớn với số lớn ta sửa chỗ nào? b Yêu cầu hs: Viết CT đưa các số các phần tử có giá trị lớn - Hỏi: Cần thêm lệnh nào nữa? - Yêu cầu học sinh viết chương trình - Quan sát CT, suy nghĩ và trả lời - Giữ lại số phần tử có giá trị lớn - Phép so sánh a[i] < a[j] - Chuyển thứ tự duyệt từ n-1 - Theo dõi yêu cầu, suy nghĩ các câu hỏi định hướng để viết chương trình - Lệnh để in các số có giá trị giá trị lớn tìm - Sau tìm giá trị lớn - Viết chương trình hòan thiện - Hỏi: Vị trí thêm các lệnh đó? - Yêu cầu: Viết CT hòan thiện Củng cố Những nội dung đã học: Một số thuật toán: Tính tổng các phần tử thỏa mãn đk nào đó, đếm số ptử tm đk nào đó, tìm max, Bài tập- dặn dò Làm các bài tập sách bài tập Xem trước nội dung bài thực hành số Ngày soạn Tiết 25.BÀI TẬP VÀ THỰC HÀNH (Tiết 2) I Mục tiêu Kiến thức Củng cố lại các kiến thức lập trình với kiểu liệu mảng Làm quen với thuật toán xếp đơn giản Kĩ Rèn luyện kĩ sử dụng kiểu liệu có cấu trúc, kĩ diễn đạt thuật toán chương trình sử dụng liệu kiểu mảng Rèn luyện kĩ nhận xét, phân tích và đề xuất cách giải bài toán cho chương trình chạy nhanh Thái độ Tự giác, tích cực, chủ động giải các bài tập Lop11.com (14) II.Chuẩn bị thầy và trò 1.Chuẩn bị giáo viên: Hệ thống bài tập,máy chiếu 2.Chuẩn bị học sinh: SGK, ôn lại các bài đã học III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số HS vắng Lớp Ngày dạy Sĩ số HS vắng Kiểm tra bài cũ - Nêu hai cách khai báo trực tiếp và gián tiếp biến mảng chiều? - Làm bài tập VN đã cho: Nhập n phần tử thực In phần tử có giá trị sai khác với giá trị TBC là -1 Bài Hoạt động giáo viên Hoạt động học sinh Hoạt động 1: Giới thiệu ví dụ sách - Chú ý theo dõi yêu cầu và dẫn dắt giáo giáo khoa Tính và đưa màn hình bảng viên cửu chương - Hỏi: Sử dụng kiến thức mảng chiều, hãy đưa cách sử dụng kiểu mảng đó để lưu - Sử dụng mảng chiều, mảng lưu trữ bảng cửu chương hàng bảng - Với cách lưu trữ vậy, ta phải khai báo - Khai báo biến mảng chiều bao nhiêu biến mảng? - Có khó khăn gì? - Để khắc phục các khó khăn này, ta xem - Khai báo nhiều biến, viết chương trình nhập, mảng chiều là phần tử, ghép mảng xuất liệu dài - Nếu xem hàng mảng hai chiều là một chiều thành mảng hai chiều - Yêu cầu học sinh nhận xét mảng chiều? phần tử thì ta có thể nói mảng hai chiều là mảng Hoạt động 2: Tìm hiểu kiểu mảng chiều mà phần tử là mảng chiều - Các yếu tố xác định mảng hai chiều? Hỏi: Để mô tả kiểu mảng hai chiều, ta cần xác Các yếu tố xây dựng mảng hai chiều? định yếu tố chính nào? - Tên kiểu mảng a Khai báo - Số phần tử trên dòng, số phần tử trên - Cách 1: Khai báo trực tiếp biến mảng hai cột - Kiểu liệu chung phần tử chiều: Var <tên biến mảng> : array [kiểu số - Cách khai báo biến - Cách tham chiếu đến phần tử hàng, kiểu số cột] of <kiểu phần tử>; Lop11.com (15) - Cách 2: Type <tên kiểu mảng> = array [kiểu số hàng, kiểu số cột] of <kiểu phần tử>; var <tên biến mảng>: <tên kiểu mảng>; - Ví dụ: Các khai báo sau đây là hợp lệ: var a: array [-100 200,1 15]of integer; type arr= array [0 3*(n+1), n] of longint; - đó: n là nguyên - Tham chiếu tới phần tử mảng hai chiều xác định tên mảng cùng với hai số phân cách dấu phẩy và viết cặp ngoặc [ và ] b Một số ví dụ Ví dụ : Viết CT tính và đưa m.h bảng nhân Ví dụ : Viết CT nhập vào từ b.p các phần tử - Yêu cầu hs viết CT mảng chiều B gồm hàng, cột với các - Yêu cầu hs viết CT ptử là các số nguyên và số nguyên k Sau đó đưa mh các ptử mảng có giá trị < k Củng cố Những nội dung đã học: Biết cấu trúc tạo kiểu mảng chiều và cách khai báo biến kiểu mảng chiều Bài tập- dặn dò Làm các bài tập sách bài tập Ngày soạn: Tiết : 26 BÀI TẬP I MỤC TIÊU Kiến thức - Củng cố lại các kiến thức kiểu liệu mảng chiều Kĩ - Biết giải số bài toán thường gặp Thái độ - Góp phần rèn luyện tác phong, tư lập trình: Tự giác, tich cực, chủ động và sáng tạo tìm kiếm kiến thức II CHUẨN BỊ CỦA THẦY VÀ TRÒ Chuẩn bị giáo viên - Giáo án, SGK, phiếu học tập Chuẩn bị học sinh Lop11.com (16) - Sách giáo khoa III TIẾN TRÌNH BÀI HỌC Ổn định tổ chức Lớp Ngày dạy Sĩ số Hs vắng Kiểm tra bài cũ Thực quá trình dạy học Bài Hoạt động 1: Củng cố lại các kiến thức đã học mảng chiều HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH ? Thế nào là mảng chiều Là dãy các phần tử có cùng kiểu liệu ? Để mô tả mảng chiều ta phải xác định các Ta cần xác định các yếu tố sau: yếu tố nào + Tên kiểu mảng chiều + Kiểu số + Kiểu liệu + Cách khai báo + Cách tham chiếu ? Có cách để khai báo mảng chiều? Đó là Có hai cách để khai báo mảng chiều: cách nào + C1: Khai báo trực tiếp Var <Tên biến mảng>: array[<kiểu số>] of <kiểu phần tử>; + C2: Khai báo gián tiếp Type <Tên kiểu mảng>= array[<kiểu số>] of <kiểu phần tử>; Var <Tên biến mảng>: <Tên kiểu mảng>; ? Lấy ví dụ minh họa VD: Var a: array[1 100] of byte; Var b: array[a z] of char; Type c=array[1 100] of byte; Var a:c; …………… Hoạt động 2: Chữa số bài tập SGK HOẠT ĐỘNG CỦA GIÁO VÊN Bài tập trang 79: Gợi ý hướng dẫn học sinh viết chương trình gọi học sinh lên bảng chữa bài Nhận xét và sửa chữa có HOẠT ĐỘNG CỦA HỌC SINH Dựa vào gợi ý giáo viên suy nghĩ viết chương trình Nhận xét bài làm bạn và bổ sung cần Củng cố Nhấn mạnh cho học sinh cách khai báo mảng và cách dùng vòng lặp for-do hợp lí Lop11.com (17) 5.Hướng dẫn nhà: Đọc và chuẩn bị bài tập thực hành Lop11.com (18) Ngày giảng: Tiết PPCT: 27 BÀI THỰC HÀNH SỐ 4(tiết 1) I MỤC TIÊU Kiến thức - Củng cố lại các kiến thức lập trình với kiểu liệu mảng - Làm quen với thuật toán xếp đơn giản Kĩ - Rèn luyện kĩ sử dụng kiểu liệu có cấu trúc, kĩ diễn đạt thuật toán chương trình sử dụng liệu kiểu mảng - Rèn luyện kĩ nhận xét, phân tích và đề xuất cách giải bài toán cho chương trình chạy nhanh Thái độ - Tự giác, chủ động thực hành II CHUẨN BỊ CỦA THẦY VÀ TRÒ Chuẩn bị giáo viên -SGK, hệ thống câu hỏi và bài tập Chuẩn bị học sinh - Sách giáo khoa, bài tập nhà III Tiến trình bài học Ổn định tổ chức Lớp Ngày dạy Sĩ số Hs vắng 2.Kiểm tra bài cũ: Thực quá trình dạy học 3.Bài Hoạt động 1: Tìm hiểu chương trình diễn đạt thuật toán xếp HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH Gợi ý cho học sinh thuật toán xếp tăng dần Chú ý theo dõi dẫn dắt giáo - Lấy ví dụ thực tiễn: Người mù xếp dãy viên để trả lời câu hỏi các viên bi theo kích thước không giảm - Yêu cầu: Vạch các bước để xếp các phần tử mảng không giảm - Lần lượt lấy phần tử từ trái qua phải - Cứ phần tử ta đem so sánh với các phần tử đứng bên phải nó Tìm hiểu chương trình ví dụ, sách giáo khoa, trang - Nếu nhỏ thì đổi chỗ 65 Quan sát chương trình, suy nghĩ câu hỏi - Chiếu chương trình ví dụ lên bảng và trả lời - Hỏi: Vai trò biến i, j chương trình? Lop11.com (19) vòng lặp For đoạn chương trình xếp có ý nghĩa gì? - Hỏi: Ba lệnh tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg; có ý nghĩa gì? - Thực chương trình, nhập liệu để học sinh thấy kết chương trình - Hỏi: Chương trình làm công việc gì? - Biến i, j dùng làm số - Mỗi vòng lặp For ứng với phép duyệt - Dùng để đổi giá trị hai phần tử a[i] với a[i+1] - Quan sát giáo viên thực chương trình - Chương trình xếp dãy số thao thứ tự Sửa chương trình để giải bài toán câu b không giảm - Đặt yêu cầu mới: Khai báo thêm biến nguyên Dem và Quan sát yêu cầu mới, chú ý định bổ sung vào chương trình đoạn lệnh cần thiết để biến hướng giải giáo viên Dem tính số lần thực tráo đổi thuật toán In kết tìm màn hình - Hỏi: Đoạn chương trình nào dùng để thực tráo đổi giá trị? - Yêu cầu hoc sinh viết lệnh để đếm số lần tráo đổi - Hỏi: Lệnh này viết vị trí nào chương tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg; trình? - Yêu cầu học sinh soạn chương trình vào máy - Dem := Dem+1; - Yêu cầu học sinh nhập liệu vào giáo viên và - Ngay sau đoạn lệnh tráo đổi thông báo kết - Soạn chương trình vào máy, thực chương trình và thông báo kết - Đánh giá kết học sinh Hoạt động 2: Rèn luyện kĩ nhận xét, phân tích và đề xuất cách giải bài toán cho chương trình chạy nhanh HOẠT ĐỘNG CỦA GIÁO VIÊN HOẠT ĐỘNG CỦA HỌC SINH Xác định bài toán - Yêu cầu: Xác định liệu vào, liệu ra? Quan sát đề bài và tả lời câu hỏi - Vào: Mảng A gồm n phần tử - Ra: Mảng B gồm n phần tử - Gợi ý để học sinh đề xuất thuật toán thô - Tại vị trí i ta tính tổng giá trị các phần tử từ đến i Giới thiệu chương trình chưa cải tiến Quan sát chương trình trên bảng - Hỏi: Trong chương trình phải thực bao nhiêu - Phải thực n(n+1)/2 phép cộng phép cộng? - Hỏi: Có cách nào để cải tiến? - Để tính bước thứ i, ta sử dụng kết đã tính bước thứ i-1 B[i]:=B[i-1]+A[i]; - Lệnh này thay lệnh nào chương trình? - Thay đoạn lệnh For j:=1 to i B[i]:=B[i]+A[j]; Viết vị trí nào? Yêu cầu: Viết chương trình hoàn thiện 4.Củng cố - Thuật toán xếp đơn giản - Một bài toán có thể có nhiều cách viết thành chương trình Cần chọn cách có số phép tính ít 5.Hướng dẫn nhà - Xem lại tất các kiến thức đã học, bao gồm: lệnh bản, lệnh điều khiển, kiểu liệu bản, kiểu liệu có cấu trúc Lop11.com (20) Lop11.com (21)