Mục đích yêu cầu - KT: + Củng cố thuật toán sắp xếp cơ bản mà học sinh đã học ở lớp 10; + Minh họa, củng cố và nâng cao những hiểu biết của học sinh trong tiết 19 về mảng một chiều cấu t[r]
(1)Tiết 23 KIỂU MẢNG VÀ BIẾN CÓ CHỈ SỐ (t3) I Mục đích yêu cầu - KT: + Củng cố thuật toán xếp mà học sinh đã học lớp 10; + Minh họa, củng cố và nâng cao hiểu biết học sinh tiết 19 mảng chiều (cấu trúc, cách khai báo, cách tham chiếu phần tử và lợi ích kiểu mảng chiều); - KN: Vận dụng kiểu mảng chiều cài đặt chương trình II Chuẩn bị bài giảng: 1/ GV: bài giảng tiết 23; SGK, SGV; Thuật toán bài toán xếp phóng lớn; 2/ HS: tìm hiểu trước bài toán xếp đã giới thiệu L10; III Nội dung và tiến trình bài giảng Ổn định lớp (1’) ; Kiểm tra bài cũ (15’): - GV hỏi: Câu hỏi 1: Khai báo mảng số thực gồm 50 phần tử cách đã học? Câu hỏi 2: Viết đoạn chương trình nhập vào mảng B gồm 45 phần tử số 1? Câu hỏi 3: Qua ví dụ đã họcvà thực hành Cho nhận xét cách giải chương trình: Bài toán VD1tr 56: chương trình Tim_Max; Bài toán Bài chương trình MaxElement; - HS lên bảng trả lời: - GV nhận xét và cho điểm Nội dung bài giảng: Hoạt động thầy và trò Nội dung bài giảng §11 KIỂU MẢNG VÀ BIẾN CÓ CHỈ SỐ <tiếp> -GV lưu ý HS hàm Random qua VD1 BT&TH3 Random(n) sinh số nguyên ngẫu nhiên từ -> n-1 Khi không cần chính xác số liệu, có thể sử dụng hàm sinh số ngẫu nhiên để không thời gian nhập mảng (số lượng lớn) -HS theo dõi và ghi bài Chú ý: đoạn chương trình nhập vào mảng B gồm 45 phần tử số 1? For I := to 45 Begin Write(‘Nhap phan tu thu ‘,I,’ : ’) ; readln(B[i]) ; End ; Hoặc For I := to 45 Begin Write(‘B[‘,I,’] = ’) ; readln(B[i]) ; End ; Hoặc Khởi tạo sinh số ngẫu nhiên VD1 BT&TH3: Randomize ; For I := to 45 B[i] := random(300) – random(300) ; Lop11.com (2) Hoạt động thầy và trò -HS tìm hiểu và xác định bài toán: Nội dung bài giảng b/ Ví dụ: Ví dụ 2: Sắp xếp dãy số nguyên thuật toán tráo đổi: Xác định bài toán: Input: N (N<=250), A1, A2, …, AN (Ai <=500, i= 1, 2, …, N) Output: Dãy A thành dãy không giảm -GV yêu cầu HS liệt kê thuật toán bài Chương trình bài toán: toán Sau đó treo khổ giấy phóng lớn Program sapxep ; thuật toán đã hoàn thiện câu trả lời Const nmax = 250 ; -HS theo dõi thuật toán và viết chương Type ArrInt = array[1 100] of integer ; trình vào Nhận biết các bước thuật var A : ArrInt ; toán cài đặt chương trình m, n, i, j : integer ; -GV giới thiệu thuật toán và viết chương tg : integer ; trình cài đặt Thuật toán: A1 A2 A3… AN Begin {Bước 1} B1 Nhập số nguyên dương N và dãy số write('Nhap so phan tu mang N= ') ; readln(n) ; nguyên An; For i := to n B2 M <- N ; Begin B3 M <- N -1 ; j <- ; write('a[',i,']=') ; readln(a[i]) ; B4 Nếu M < thì chuyển đến B8; end ; B5 j <- j + ; B6 Nếu j > M thì quay lại B3; {Thao tác xếp gồm B3 -> B7} B7 Nếu Aj > Aj+1 thì đổi chỗ phần tử m := n-1 ; B8 Đưa dãy A kết thúc while not (m<2) begin -GV giải thích lại thuật toán xếp: for j := to m Bằng cách tìm phần tử lớn if a[j] >a[j+1] then cuối dãy; phần tử lớn thứ 2; phần tử lớn begin tg := a[j] ; a[j] := a[j+1] ; a[j+1] := tg ; End ; thứ Vì thể thuật toán trên còn gọi là m := m-1 ; thuật toán bọt end ; writeln; {Hiển thị mảng đã xếp lên màn hình} for i := to n write(a[i] : 4) ; readln end Lop11.com (3) Hoạt động thầy và trò Nội dung bài giảng -HS quan sát kết mô thực Nhap so phan tu mang N = chương trình A[1] = A[2] = A[3] = 10 A[4] = 11 A[5] = 10 11 Củng cố bài học và BTVN: -GV yêu cầu HS nhận biết củng cố: Khai báo gián tiếp mảng chiều thông qua định nghĩa kiểu: Const nmax = 250 ; Type ArrInt = array[1 100] of integer ; var A : ArrInt ; Nhập các mảng là nhập phần tử mảng: For i := to n Begin write('a[',i,']=') ; readln(a[i]) ; end ; Duyệt các phần tử mảng để xếp; for j := to m if a[j] >a[j+1] then begin tg := a[j] ; a[j] := a[j+1] ; a[j+1] := tg ; End ; Duyệt các phần tử mảng để hiển thị phần tử: for i := to n write(a[i] : 4) ; BTVN: Tìm hiểu trước mảng chiều; BTVN: hoàn thành BT đã cho: 5, 6, 7, SGK tr79; Bài làm thêm 4.6 -> 4.15 SBT (tr31->35) Lop11.com (4)