Tải bản đầy đủ (.pdf) (8 trang)

Giáo án môn Tin học 11 - Bài 11: Kiểu mảng

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

<span class='text_page_counter'>(1)</span>Tieát PPCT: 21 – 22. GA: Tin hoïc 11. Ngày soạn: 10/01/2008 Chöông IV: Baøi:. KIỂU DỮ LIỆU CÓ CẤU TRÚC §11. KIEÅU MAÛNG (Tieát PPCT: 21). I. MUÏC TIEÂU BAØI HOÏC: 1. Kiến thức: -HS hiểu khái niệm mảng một chiều và hai chiều; -Hiểu cách khai báo và truy cập đến các phần tử của mảng. 2. Kyõ naêng: -Cài đặt được thuật toán giải một số bài toán đơn giản với kiểu dữ liệu mảng một chiều; -Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. II. CHUAÅN BÒ: 1. Taøi lieäu, baøi taäp: SGK, SGV. 2. Duïng cuï, thieát bò: III. TIẾN TRÌNH LÊN LỚP: 1. Ổ định, tổ chức lớp: CBL báo cáo sĩ số. 2. Kieåm tra baøi cuõ: Khoâng. 3. Baøi giaûng: Hoạt động của Thầy và Trò. Noäi dung ghi baûng. Hoạt động 1: -Noäi dungHÑ: Tìm hieåu yù nghóa cuûa maûng một chieàu. -Mục tiêu: HS biết được ý nghĩa và sự cần thieát cuûa kieåu maûng moät chieàu trong vieäc giaûi quyết một số bài toán. Biết được khái niệm cuûa maûng moät chieàu. -Các bước tiến hành: GV: Cho HS xem ví duï trong SGK tr.53: GV giaûi thích: -Nếu số ngày khá lớn (N=365 ngày) thì cách làm tương tự, nhưng đòi hỏi phải khai báo nhiều biến và đoạn chương trình viết khá dài. -Để khắc phục những hạn chế trên, người ta thường ghép chung 7 biến trên thành một dãy và đặt cho nó chung một tên và đánh số cho một phần tử mộ chỉ số. -GV viết chương trình giải bài toán tổng quát với N ngày lên bảng. HS: Chuù yù laéng nghe vaø ghi cheùp.. 1/Kiểu mảng một chiều: Xeùt Ví dụ: SGK tr.53. Sử dụng kiểu dữ liệu mảng một chiều để mô tả dữ liệu và chương trình được viết như sau:. Lop11.com. Program NhietDo_Nngay; Const Max =7; Type Kmang1 = Array[1 . . Max] of real; Var Nhietdo: Kmang1; Dem, i, N: byte; Tong, TB: real; Begin Writeln(‘Nhap vao so ngay: ‘); readln(N); Tong := 0; For i:=1 to N do Begin Write(‘nhap nhiet do ngay’, i ,’: ’); Readln(Nhietdo[i]); Tong := Tong + Nhietdo[i]; End; Dem := 0; TB := Tong/N; For i:=1 to N do If Nhietdo[i] > TB then dem:= dem +1; Writeln(‘Nhiet do TB’ ,N , ‘ngay’, TB:8:2); Writeln(‘So ngay co nh.do cao hon TB:’, dem); Readln End..

<span class='text_page_counter'>(2)</span> Tieát PPCT: 21 – 22. GA: Tin hoïc 11. GV yeâu caàu HS tham khaûo SGK vaø hoûi: Em -Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu. hieåu nhö theá naøo veà maûng moät chieàu? -Mảng được đặt tên và mỗi phần tử trong mảng HS: Trả lờ câu hỏi. có cùng chung một tên và phân biệt nhau bởi GV: Để mô tả mảng một chiều, ta cần xác chỉ số. -Đeå mô tả mảng một chiều cần xác định kiểu định những yếu tố nào? của các phần tử và cách đánh số các phần tử của HS: Trả lờ câu hỏi. nó. GV: Để xây dựng và sử dung kiểu mảng một -Hầu hết các NNLT đều có quy tắc cho phép chiều, các NNLT đều có quy tắc cho phép xaùc ñinh: xác định: Tên mảng, số lượng phần tử, cách +Tên mảng một chiều; khai baùo moät bieán maûng vaø caùch tham chieáu +Số lượng phần tử; đến từng phần tử của mảng. +Kiểu dữ liệu của phần tử; HS: chuù yù laéng nghe. +Cách khai báo biến mảng; +Cách tham chiếu đến phần tử. Hoạt động 2: -Noäi dungHÑ: Taïo kieåu maûng moät chieàu vaø khai baùo bieán maûng. -Mục tiêu: HS biết được cách tạo kiểu dữ liệu maûng moät chieàu trong NNLT Pascal, bieát cách khai báo biến và tham chiếu đến từng phần tử của mảng. -Các bước tiến hành: GV: Yêu câu HS nghiên cứu SGK và cho biết cách tạo kiểu dữ liệu mảng một chiều trong NNLT Pascal. HS: Trình bày cách tạo kiểu dữ liệu mảng moät chieàu trong NNLT Pascal.. GV: Đưa ra hai cách khái báo mảng một chiều trong ngôn ngữ Pascal, giải thích ý nghĩa của các từ khóa mới. HS: Chuù yù theo doõi. GV chuù yù cho HS: -Phân biệt được giữa tên biến và tên kiểu maûng trong khai baùo. VD: A: teân bieán maûng; ArrInt: teân kieåu maûng.. a/ Khai baùo: Khai baùo bieán maûng moät chieàu coù daïng: -Khai báo trực tiếp biến mảng một chiều: Var <tên biến mảng>: Array[kiểu chỉ số] of <kiểu phần tử>; -Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type <tên kiểu mảng> = Array[kiểu chỉ số] of <kiểu phần tử>; Var <tên biến mảng>: <tên kiểu mảng>; Trong đó: Kiểu chỉ số là một đoạn số nguyên (hoặc đoạn kí tự) liên tục cĩ dạng n1..n2 với n1,n2 là các hằng hoặc các biểu thức 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. * Ví dụ: - Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type ArrInt=Array[1..100] of Integer; Var A: ArrInt; - Khai báo trực tiếp biến mảng một chiều: Var A: Array[1..100] of Integer;. -GV: Trong VD trên, dung lượng bộ nhớ của -Dung lượng bộ nhớ của biến A là: bieán A laø bao nhieâu? 100(phần tử)x2(byte) = 200 byte. -HS: Biến A chiếm 200 byte bộ nhớ.. Lop11.com.

<span class='text_page_counter'>(3)</span> Tieát PPCT: 21 – 22. GA: Tin hoïc 11. GV: Hướng dẫn tham chiếu đến các phần tử *Để tham chiếu đến phần tử của mảng một của mảng, đưa ra ví dụ: tham chiếu tới nhiệt chiều ta cần xác định: <tên biến mảng>[chỉ số] . độ của ngày trong tuần. VD: -Tham chiếu tới ngày thứ 1 của tuần: i 1 2 ... 6 7 Chỉ số Nhietdo[1] là 22.5 (phần tử ở vị trí thứ 1 Teân cuûa maûng Nhietdo); Nhietdo 22.5 25.0 ... 27.0 26.5 bieán maûng -Tham chiếu tới ngày thứ 2 của tuần: Nhietdo[2] là 25.0 (phần tử ở vị trí thứ 2 HS: Quan sát lắng nghe và trả lời. cuûa maûng Nhietdo); -. . . -Tham chiếu tới ngày thứ i của tuần: -Nhietdo[i] (phần tử ở vị trí thứ i của maûng Nhietdo). Hoạt động 3: -Nội dungHĐ: Rèn luyện kĩ năng sử dụng kieåu maûng moät chieàu. -Mục tiêu: HS sử dụng được biến kiểu mảng một chiều để giải bài toán: Tìm phần tử lớn nhaát, Tìm kieám vaø Saép xeáp. -Các bước tiến hành: VD1: SGK tr.56 HS: Đọc nội dung VD1 GV gợi ý HS: Nhắc lại thuật tốn tìm phần tử lớn nhất cuûa daõy soá đã học ở lớp 10. HS: Nêu các bước: B1: Nhập N và dãy A1,A2,..,AN. B2: Max  A1, i  2; B3: Nếu i >N thì đưa giá trị Max và kết thúc; B4: B4.1: Nếu Ai > Max thì Max Ai. B4.2: i  i+1. Quay lại B3. GV: Hướng dẫn HS viết chương trình HS cùng GV thực hiện.. Lop11.com. b/ Moät soá ví duï: VD1: Tìm phần tử lớn nhất của dãy số nguyên Chương trình được viết như sau: program TimMax; uses crt; const Nmax = 250; type ArrInt = array[1..Nmax] of integer; var N, i, Max, csmax : integer; A: ArrInt; BEGIN clrscr; write('Nhap so phan tu cua day so, N = '); readln(N); for i := 1 to N do begin write('Phan tu thu ', i, ' ='); readln(A[i]); end; Max := A[1]; 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 cua day la: ', Max); writeln('Chi so phan tu lon nhat la: ', csmax); readln END..

<span class='text_page_counter'>(4)</span> Tieát PPCT: 21 – 22. GA: Tin hoïc 11. *VD2: SGK tr.57 HS: Đọc nội dung VD2 GV gợi ý HS: Nhắc lại thuật toán Sắp xếp dãy số nguyên bằng thuật toán tráo đổi, đã học ở lớp 10. HS: Nêu các bước: B1: Nhaäp N vaø caùc soá haïng A1, A2,…, AN; B2: M  N; B3: Nếu M < 2 thì đưa ra dãy A đã được saép xeáp roài keát thuùc; B4: M  M – 1; i  0; B5: i  i + 1; B6: Neáu i > M thì quay laïi B3; B7: Nếu Ai > Ai+1 thì tráo đổi Ai và Ai+1 cho nhau; B8: Quay laïi B5. GV: Hướng dẫn HS viết chương trình HS cùng GV thực hiện.. Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi. - Input: Số nguyên dương N và dãy số A1, A2, …, AN. - Output: Dãy số A được sắp xếp theo thứ tự tăng. Chương trình: PROGRAM Sap_xep; uses Crt; const Nmax = 250; TYPE ArrInt = ARRAY[1..NMax] OF integer; var N, i, j, t : integer; A: ArrInt; BEGIN clrscr; write('Nhap so phan tu cua day so, N = '); readln(N); for i:=1 to n do begin write('Phan tu thu ', i,' = '); readln(A[i]); end; writeln('Day so da cho la: '); for i:= 1 to N do write(A[i]:4); writeln; for j:= N downto 2 do for i:= 1 to j -1 do if A[i] > A[i+1] then begin t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; end; writeln('Day so duoc sap xep la: '); for i:= 1 to N do write(A[i]:4); readln END.. *VD3: Tìm kiếm nhị phân. *VD3: SGK tr.58 -Input: Dãy số A1, A2, …, AN. đã được sắp xếp HS: Đọc nội dung VD3 tăng dần (N <= 250). GV gợi ý HS: Nhắc lại thuật toán Tìm kiếm -Output: Chỉ số i mà A[i] = hoặc thơng báo “Không tìm thấy ” Nếu không có A[i] nào của nhị phân, đã học ở lớp 10. dãy bằng k HS: Nêu các bước:. Lop11.com.

<span class='text_page_counter'>(5)</span> Tieát PPCT: 21 – 22. GA: Tin hoïc 11. B1: Nhập N; A1, A2, . . ., AN và khoá k; B2: Đầu  1; Cuối  N;  Dau  Cuoi  B3: Giữa    ; 2  B4: Nếu AGiữa = k thì thông báo chỉ số Giữa, roài keát thuùc; B5: Nếu AGiữa > k thì đặt Cuối  Giữa – 1, roài chuyeån sang B7; B6: Đầu  Giữa + 1; B7: Nếu Đầu > Cuối thì thông báo daõy A khoâng coù soá haïng coù giaù trò baèng k, roài keát thuùc; B8: Quay laïi B3. GV: Hướng dẫn HS viết chương trình HS cùng GV thực hiện.. Chương trình: PROGRAM tk_nhi_phan; uses Crt; const Nmax = 250; type ArrInt = ARRAY[1..NMax] OF integer; var N, i, k, t, dau, cuoi, giua : integer; A: ArrInt; tim_thay: Boolean; BEGIN clrscr; write('Nhap so phan tu cua day so, N = '); readln(N); writeln('Nhap cac ph.tu theo thu tu tang dan'); for i:=1 to n do begin write('Phan tu thu ', i,' = '); readln(A[i]); end; writeln; write('Nhap gia tri can tim , k = '); readln(k); dau:=1; cuoi:=N; tim_thay:=false; while (dau<=cuoi) and not (tim_thay) do begin giua:=(dau + cuoi) div 2; if A[giua] = k then tim_thay:= true else if A[giua] > k then cuoi:= giua - 1 else dau:=giua + 1; end; if tim_thay then writeln('Chi so la', giua) else writeln('Khong tim thay'); readln END.. 4.Tổng kết nội dung, đánh giá cuối bài: -Caùch taïo maûng moät chieàu vaø caùch khai baùo bieán. TYPE <tên_kiểu_mảng> = ARRAY[kiểu chỉ số] OF <kiểu_phần_tử>; VAR <teân_bieán_maûng> : <teân_kieåu_maûng>; -Tham chiếu đến từng phần tử: <teân_bieán_maûng>[chæ soá] 5.Dặn dò, kế hoạch học tập tiết sau: -Học bài và làm bài: 1 đến 7 SGK tr.79; -Đọc trước nội dung về kiểu mảng hai chiều. IV. NHỮNG VẤN ĐỀ CẦN RÚT KINH NGHIỆM: .................................................................................................................................................................. .................................................................................................................................................................. ................................................................................................................................................................... Lop11.com.

<span class='text_page_counter'>(6)</span> Tieát PPCT: 21 – 22. Baøi:. GA: Tin hoïc 11. §11. KIEÅU MAÛNG (tt) (Tieát PPCT: 22). III. TIẾN TRÌNH LÊN LỚP: 1. Ổ định, tổ chức lớp: CBL báo cáo sĩ số. 2. Kieåm tra baøi cuõ: Neâu caùch khai baùo bieán maûng moät chieàu vaø cho ví duï? 3. Baøi giaûng: Hoạt động của Thầy và Trò. Noäi dung ghi baûng. Hoạt động 1: -Noäi dungHÑ: Tìm hieåu yù nghóa cuûa maûng hai chieàu. -Mục tiêu: HS biết được ý nghĩa và sự cần thieát cuûa maûng hai chieàu trong vieäc giaûi quyết một số bài toán. -Các bước tiến hành: GV: Giới thiệu Bài toán trong SGK và yêu caàu HS ñöa ra khaùi nieäm veà maûng hai chieàu. HS: Nghiên cứu SGK và trả lời.. 2/ Kieåu maûng hai chieàu: Xét bài toán tính và đưa ra màn hình bảng nhaân (SGK tr.59) -Mảng hai chiều làbảng các phần tử cùng kiểu. -Nhaän xeùt: Neáu coi moãi haøng cuûa maûng hai chiều là một phần tử thì ta có thể nói mảng hai chiều là mảng một chiều mà mỗi phần tử là maûng moät chieàu.. -Hầu hết các NNLT đều có quy tắc cho phép GV: Để mô tả mảng hai chiều, ta cần xác xác đinh: +Teân kieåu maûng hai chieàu; định những yếu tố nào? +Số phần tử của mỗi chiều; HS: Trả lờ câu hỏi. +Kiểu dữ liệu của phần tử; GV: Tương tự như mảng một chiều, để xây +Caùch khai baùo bieán; dựng và sử dung kiểu mảng hai chiều, các +Cách tham chiếu đến phần tử. NNLT đều có quy tắc cho phép xác định những yếu tố nào? HS: chú ý lắng nghe và trả lời câu hỏi.. Hoạt động 2: -Noäi dungHÑ: Taïo kieåu maûng hai chieàu vaø khai baùo bieán maûng. -Mục tiêu: HS biết được cách tạo kiểu dữ liệu maûng hai chieàu trong NNLT Pascal, bieát caùch khai báo biến và tham chiếu đến từng phần tử của mảng. -Các bước tiến hành: GV: Yêu câu HS nghiên cứu SGK và cho biết cách tạo kiểu dữ liệu mảng hai chiều trong NNLT Pascal. HS: Trình bày cách tạo kiểu dữ liệu mảng hai chieàu trong NNLT Pascal.. a/ Khai baùo: Khai baùo bieán maûng hai chieàu trong Pascal: *Khai báo trực tiếp biến mảng hai chiều: VAR <teân_bieán_maûng> : ARRAY [kieåu chæ số hàng, kiểu chỉ số cột] OF <kiểu phần tử>; VD: Var B : ARRAY[1 . . 9, 1 . . 10] OF integer;. *Khai baùo giaùn tieáp bieán maûng qua kieåu maûng hai chieàu: TYPE <teân_kieåu_maûng> = ARRAY [kieåu chæ số hàng, kiểu chỉ số cột] OF <kiểu phần tử>; VAR <teân_bieán_maûng> : <teân_kieåu_maûng>; VD: GV: Yeâu caàu HS cho VD khai baùo bieán maûng TYPE mang_2_chieu = ARRAY[1 . . 9, 1 . . 10] hai chieàu. OF integer; HS: Cho VD. VAR B : mang_2_chieu;. Lop11.com.

<span class='text_page_counter'>(7)</span> Tieát PPCT: 21 – 22. GA: Tin hoïc 11. GV: Giới thiệu cách tham chiếu đến phần tử -Tham chiếu đến phần tử của mảng hai chiều: cuûa maûng hai chieàu. Teân_bieán_mang[chæ soá haøng, chæ soá coät] HS: Chuù yù theo doõi. VD: B[i, j] là phần tử ở hàng i, cột j của mảng B B[1, 2] là phần tử ở hàng 1, cột 2 của mảng B; B[2, 1] --------------------- 2, ---- 1 --------------; Hoạt động 3: -Nội dungHĐ: Rèn luyện kĩ năng sử dụng kieåu maûng hai chieàu. -Mục tiêu: HS sử dụng được biến kiểu mảng hai chiều để giải bài toán đơn giản. -Các bước tiến hành: *VD1: SGK tr.61 GV hướng dẫn HS: Viết chương trình tính và ñöa ra maøn hình baûng nhaân. HS: Thực hiện theo yêu cầu của GV.. b/ Moät soá ví duï: VD1: SGK tr.61 PROGRAM Bang_Nhan; uses crt; var B : ARRAY[1 . . 9, 1 . . 10] OF integer ; i, j : integer ; BEGIN clrscr ; for i := 1 to 9 do for j := 1 to 10 do B[i, j] := i*j ; for i := 1 to 9 do begin for j := 1 to 10 do write(B[i, j]); writeln; end; readln END.. VD2: (SGK tr.62) *VD2: SGK tr.62 PROGRAM Mang_Hai_Chieu; HS: Đọc nội dung VD2. var B: ARRAY[1 . . 5, 1 . . 7] OF integer ; GV: Yeâu caàu HS xaùc ñònh input, output. d, i, j, k : integer ; HS: Xác định input và output của bài toán. BEGIN writeln(‘Nhap cac phan tu cua mang’) ; GV hướng dẫn HS: Viết chương trình tính và for i := 1 to 5 do ñöa ra maøn hình baûng nhaân. begin HS: Thực hiện theo yêu cầu của GV.. for j := 1 to 7 do read(B[i, j]) ; writeln; end; write(‘Nhap vao gia tri k = ‘); readln(k); for i := 1 to 5 do for j := 1 to 7 do if B[i, j] < k then begin write(B[i, j], ‘ ‘); d:= d + 1; end; if d=0 then writeln(‘Khg co p.tu nao nho hon’, k); readln END.. Lop11.com.

<span class='text_page_counter'>(8)</span> Tieát PPCT: 21 – 22. GA: Tin hoïc 11. 4.Tổng kết nội dung, đánh giá cuối bài: -Caùch taïo maûng hai chieàu vaø caùch khai baùo bieán. TYPE <tên_kiểu_mảng> = ARRAY[kiểu chỉ số hàng, kiểu chỉ số cột]OF <kiểu_phần_tử>; VAR <teân_bieán_maûng> : <teân_kieåu_maûng>; -Tham chiếu đến từng phần tử: <teân_bieán_maûng>[chæ soá] 5.Dặn dò, kế hoạch học tập tiết sau: -Hoïc baøi vaø laøm baøi: 8, 9 SGK tr.79-80; -Xem trước Bài tập và thực hành 3. IV. NHỮNG VẤN ĐỀ CẦN RÚT KINH NGHIỆM: .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. ................................................................................................................................................................... Lop11.com.

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

×