1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

8 24 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 213,97 KB

Nội dung

-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 [r]

(1)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: Kiến thức: -HS hiểu khái niệm mảng chiều và hai chiều; -Hiểu cách khai báo và truy cập đến các phần tử mảng Kyõ naêng: -Cài đặt thuật toán giải số bài toán đơn giản với kiểu liệu mảng chiều; -Thực khai báo mảng, truy cập, tính toán các phần tử mảng II CHUAÅN BÒ: Taøi lieäu, baøi taäp: SGK, SGV Duïng cuï, thieát bò: III TIẾN TRÌNH LÊN LỚP: Ổ định, tổ chức lớp: CBL báo cáo sĩ số Kieåm tra baøi cuõ: Khoâng Baøi giaûng: Hoạt động 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 chieàu -Mục tiêu: HS biết ý nghĩa và cần thieát cuûa kieåu maûng moät chieàu vieäc giaûi số bài toán Biết 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ï 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ự, đò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 hạn chế trên, người ta thường ghép chung biến trên thành dãy và đặt cho nó chung tên và đánh số cho phần tử mộ 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 chiều: Xeùt Ví dụ: SGK tr.53 Sử dụng kiểu liệu mảng chiều để mô tả liệu và chương trình viết 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 Begin Write(‘nhap nhiet ngay’, i ,’: ’); Readln(Nhietdo[i]); Tong := Tong + Nhietdo[i]; End; Dem := 0; TB := Tong/N; For i:=1 to N If Nhietdo[i] > TB then dem:= dem +1; Writeln(‘Nhiet TB’ ,N , ‘ngay’, TB:8:2); Writeln(‘So co nh.do cao hon TB:’, dem); Readln End (2) 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 chiều là 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 đặt tên và phần tử mảng HS: Trả lờ câu hỏi có cùng chung tên và phân biệt GV: Để mô tả mảng chiều, ta cần xác số -Đeå mô tả mảng chiều cần xác định kiểu định yếu tố nào? các phần tử và cách đánh số các phần tử HS: Trả lờ câu hỏi nó GV: Để xây dựng và sử dung kiểu mảng -Hầu hết các NNLT có quy tắc cho phép chiều, các NNLT 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 chiều; khai baùo moät bieán maûng vaø caùch tham chieáu +Số lượng phần tử; đến phần tử mảng +Kiểu liệu 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ách tạo kiểu liệu maûng moät chieàu NNLT Pascal, bieát cách khai báo biến và tham chiếu đến phần tử 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 liệu mảng chiều NNLT Pascal HS: Trình bày cách tạo kiểu liệu mảng moät chieàu NNLT Pascal GV: Đưa hai cách khái báo mảng chiều ngôn ngữ Pascal, giải thích ý nghĩa các từ khóa HS: Chuù yù theo doõi GV chuù yù cho HS: -Phân biệt tên biến và tên kiểu maûng 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 chiều: Var <tên biến mảng>: Array[kiểu số] of <kiểu phần tử>; -Khai báo gián tiếp biến mảng qua kiểu mảng chiều: 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>; Trong đó: Kiểu số là đ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 các biểu thức xác định số đầu và số cuối (n1<= n2) Kiểu phần tử là kiểu 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 chiều: Type ArrInt=Array[1 100] of Integer; Var A: ArrInt; - Khai báo trực tiếp biến mảng chiều: Var A: Array[1 100] of Integer; -GV: Trong VD trên, dung lượng nhớ -Dung lượng nhớ 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 nhớ Lop11.com (3) 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ử mảng mảng, đưa 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ố] độ ngày tuần VD: -Tham chiếu tới ngày thứ tuần: i Chỉ số Nhietdo[1] là 22.5 (phần tử vị trí thứ 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ứ tuần: Nhietdo[2] là 25.0 (phần tử vị trí thứ 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 tuần: -Nhietdo[i] (phần tử vị trí thứ i maûng Nhietdo) Hoạt động 3: -Nội dungHĐ: Rèn luyện kĩ sử dụng kieåu maûng moät chieàu -Mục tiêu: HS sử dụng biến kiểu mảng 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 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 Lop11.com b/ Moät soá ví duï: VD1: Tìm phần tử lớn dãy số nguyên Chương trình viết 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 := to N begin write('Phan tu thu ', i, ' ='); readln(A[i]); end; Max := A[1]; csmax :=1; for i := to N 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 (4) 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 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 < thì đưa dãy A đã 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 Ví dụ 2: Sắp xếp dãy số nguyên 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 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 begin write('Phan tu thu ', i,' = '); readln(A[i]); end; writeln('Day so da cho la: '); for i:= to N write(A[i]:4); writeln; for j:= N downto for i:= to j -1 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:= to N 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 đã 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] = thơng báo “Không tìm thấy ” Nếu không có A[i] nào nhị phân, đã học lớp 10 dãy k HS: Nêu các bước: Lop11.com (5) 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    ;  B4: Nếu AGiữa = k thì thông báo 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 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 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) begin giua:=(dau + cuoi) div 2; if A[giua] = k then tim_thay:= true else if A[giua] > k then cuoi:= giua - 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 số] OF <kiểu_phần_tử>; VAR <teân_bieán_maûng> : <teân_kieåu_maûng>; -Tham chiếu đến 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: đến SGK tr.79; -Đọc trước nội dung kiểu mảng hai chiều IV NHỮNG VẤN ĐỀ CẦN RÚT KINH NGHIỆM: Lop11.com (6) 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: Ổ định, tổ chức lớp: CBL báo cáo sĩ số 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ï? Baøi giaûng: Hoạt động 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 ý nghĩa và cần thieát cuûa maûng hai chieàu vieäc giaûi số bài toán -Các bước tiến hành: GV: Giới thiệu Bài toán SGK và yêu caàu HS ñöa 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 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à phần tử thì ta có thể nói mảng hai chiều là mảng chiều mà phần tử là maûng moät chieàu -Hầu hết các NNLT 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 yếu tố nào? +Số phần tử chiều; HS: Trả lờ câu hỏi +Kiểu liệu phần tử; GV: Tương tự mảng 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 có quy tắc cho phép xác định 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ách tạo kiểu liệu maûng hai chieàu NNLT Pascal, bieát caùch khai báo biến và tham chiếu đến phần tử 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 liệu mảng hai chiều NNLT Pascal HS: Trình bày cách tạo kiểu liệu mảng hai chieàu NNLT Pascal a/ Khai baùo: Khai baùo bieán maûng hai chieàu 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 số cột] OF <kiểu phần tử>; VD: Var B : ARRAY[1 9, 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 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, 10] hai chieàu OF integer; HS: Cho VD VAR B : mang_2_chieu; Lop11.com (7) 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ử 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 mảng B B[1, 2] là phần tử hàng 1, cột mảng B; B[2, 1] - 2, ; Hoạt động 3: -Nội dungHĐ: Rèn luyện kĩ sử dụng kieåu maûng hai chieàu -Mục tiêu: HS sử dụng 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 maøn hình baûng nhaân HS: Thực theo yêu cầu GV b/ Moät soá ví duï: VD1: SGK tr.61 PROGRAM Bang_Nhan; uses crt; var B : ARRAY[1 9, 10] OF integer ; i, j : integer ; BEGIN clrscr ; for i := to for j := to 10 B[i, j] := i*j ; for i := to begin for j := to 10 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, 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 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 := to ñöa maøn hình baûng nhaân begin HS: Thực theo yêu cầu GV for j := to read(B[i, j]) ; writeln; end; write(‘Nhap vao gia tri k = ‘); readln(k); for i := to for j := to 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 (8) 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 số hàng, kiểu 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 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, SGK tr.79-80; -Xem trước Bài tập và thực hành IV NHỮNG VẤN ĐỀ CẦN RÚT KINH NGHIỆM: Lop11.com (9)

Ngày đăng: 01/04/2021, 05:10

TỪ KHÓA LIÊN QUAN

w