1. Trang chủ
  2. » Giáo án - Bài giảng

kieu mang

14 297 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 225,5 KB

Nội dung

Trêng THPT Thêng TÝn ngµy so¹n : / /20 Líp11a9 Ngêi so¹n: ng« v¨n phóc KiÓu m¶ng @&? I. Mục tiêu 1. Kiến thức: - Khái niệm kiểu mảng: là kiểu dữ liệu có cấu trúc; - Biết khái niệm kiểu mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu; - Biết khai báo mảng một chiều. 2. Kĩ năng: - Biết cách khai báo mảng (với Pascal có 2 cách: mô tả trực tiếp kiểu dư liệu trong khai báo biến với từ khóa Var và khai báo biến thuộc kiểu dư liệu đã được mô tả với từ khóa Type). 3. Thái độ - Tích cực trong tìm hiểu ngôn ngữ lập trình và kiểu dữ liệu mảng. II. Chuẩn bị của GV và HS 1.Chuẩn bị của GV: Sách GK tin 11, Sách GV tin 11, các ví dụ, máy chiếu (nếu có). 2. Chuẩn bị của HS - Sách GK tin học 11, bài cũ ở nhà, đồ dùng học tập cần thiết. III. Tiến trình bài dạy 1. Kiểm tra bài cũ: không kiểm tra bài cũ 2. Nội dung bài mới(42 phút): Hoạt động 1(25 phút): Khái niệm mảng một chiều Hoạt động của GV và HS Nội dung bài GV: theo các em thế nào gọi là mảng: HS: Trả lời câu hỏi: …. GV: lấy ví dụ - Trên sông nước người ta đóng các mảng gỗ - Trong đời sống xã hội người ta giao nhiệm vụ công việc cho từng người phụ trách các mảng công việc như: Mảng Kinh tế, mảng Giáo dục, mảng xây dựng, …; phân tích mảng gỗ. . . HS: nghe giảng và ghi bài Tiết 21. §11. KIỂU MẢNG (Tiết 1/4) 1. Kiểu mảng một chiều Mảng một chiều là dãy các phần tử cùng kiểu. Mảng được đặt tên và mỗi phần tử của nó có một chỉ số. 68 GV: Vậy khái niệm kiểu mảng một chiều như sau: Mảng một chiều là dãy các phần tử cùng kiểu. Mảng được đặt tên và mỗi phần tử của nó có một chỉ số. HS: nghe và ghi bài GV: để lập trình có thể xây dựng và sử dụng kiểu mảng một chiều ngôn ngữ lập trình có quy tác và cách thức cho phép như sau: + Tên kiểu mảng một chiều; + Số lượng phần tử; + Kiểu dữ liệu của phần tử; + Cách khai báo biến mảng; + Cách tham chiếu đến phần tử. HS: nghe và ghi bài GV: Lấy ví dụ: Bài toán nhập vào nhiệt độ các ngày trong tuần và tính nhiệt độ trung bình của tuần. Ta sử dụng câu lệnh rẽ nhánh để thực hiện (IF … THEN … ELSE …) HS: nghe và quan sát GV: đưa ra chương trình đã chuẩn bị trước, dùng bảng phụ (hoặc máy chiếu). GV: em nào có thể cho biết trong chương trình này có nhược điểm gì không? HS: nghe, quan sát và trả lời caau hỏi . . . GV: phân tích và nhận xét về chương trình tính nhiệt độ trung bình khi sử dụng các kiểu dữ liệu chuẩn để khai báo và dùng cấu trúc câu lẹnh re nhánh để thực hiện là chưa tối ưu. - Để thực hiện được tốt hơn và có thể cho biết số ngày muốn tính và chương trình không kồng kềnh. Ta có thể sử dụng kiểu dữ liệu mảng một chiều để khai báo và sử dụng trong chương trình. HS: nghe và ghi bài - Để lập trình có thể xây dựng và sử dụng kiểu mảng một chiều, các ngôn ngữ lập trình có quy tắc, cách thức cho phép xác định: + Tên kiểu mảng một chiều; + Số lượng phần tử; + Kiểu dữ liệu của phần tử; + Cách khai báo biến mảng; + Cách tham chiếu đến phần tử. VD: Xét bài toán nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa ra màn hình nhiệt độ của tuần và số lượng ngày có nhiệt độ cao hơn nhiệt độ trung bình của tuần. Chương trình tính như sau: Program Nhiet_Do_Tuan; Var t1, t2, t3, t4, t5, t6, t7, TB: real; Dem : integer; Begin Writeln(‘Nhap vao nhiet do cua 7 ngay: ’); Readln(t1, t2, t3, t4, t5, t6, t7 ); TB := (t1, t2, t3, t4, t5, t6, t7)/7; Dem := 0; If t1>TB then Dem := Dem + 1; If t2>TB then Dem := Dem + 1; If t3>TB then Dem := Dem + 1; If t4>TB then Dem := Dem + 1; If t5>TB then Dem := Dem + 1; If t6>TB then Dem := Dem + 1; If t7>TB then Dem := Dem + 1; Writeln(‘Nhiet do trung binh cua tuan: ’,TB:4:2); Writeln(‘So ngay co nhiet do cao hon trung binh: ’, Dem); Readln End. - Khi cần giải một bài toán với N ngày thì cách làm như trên là không tối ưu. Vậy để giải quyết được vấn đề đó, ta sử dụng kiểu dữ liệu mảng một chiều để mô tả dữ liệu. Chương trình như sau: Program Nhiet_Do_Tuan; Const Max = 366; Type Kmang1 = array[1 Max] of real; Var Nhietdo: Kmang; Dem, i, n: byte; Tong, TB: real; 69 Begin write(‘Nhap nhiet do 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 trung binh’,n,’ ngay: ’,TB:8:3); Writeln(‘So ngay cos nhiet do cao hon trung binh: ’,DEm); Readln End. Hoạt động 2 (16 phút): Khai báo mảng 1 chiều Hoạt động của GV và HS Nội dung bài GV: đưa ra cách khai báo mảng một chiều gồm có 2 cách. HS: nghe, quan sát và ghi bài GV: phân tích để HS hiểu được cách khai báo mảng một chiều và phân biệt với các loại dữ liệu khác. HS: nghe, quan sát GV: lấy VD để minh hoạ và Gọi hai HS lên bảng lấy VD về khai báo kiểu mảng một chiều. HS: lên bảng lấy VD, các em ở dưới lớp viết VD vào vở và quan sát bạn mình làm ở trên bảng, sau đó cho nhận xét. a. Khai báo mảng một chiều Tổng quát: Cách 1: 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ử>; Cách 2: 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>; VD: các khai báo mảng sau đây là hợp lệ: ArrayReal = array [-100 200] of real; ArrayBoolean = array [-n+1 n+1] of boolean; ArrayInt = array [-100 0] of integer; trong đó n là hằng nguyên 3. Củng cố và nhắc nhở(3 phút): - Mảng một chiều là dãy các phần tử cùng kiểu. Mảng đực đặt tên và mỗi phần tử của nó có một chỉ số. - Khai báo mảng một chiều Cách 1: khai báo trực tiếp biến mảng một chiều: 70 Var <tên biến mảng> : array[ kiểu chỉ số] of <kiểu phần tử>; Cách 2: 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>; 4. Nhắc nhở về nhà chuẩn bị giờ sau - Các em làm các bài tập trong sách bài tập trang 41. Xem tiếp bài giờ sau học tiếp. Ngày dạy Lớp Sĩ số Học sinh nghỉ / / 2010 11B3 / , / / 2010 11B4 / , / / 2010 11B5 / , / / 2010 11B6 / , Theo PPCT: 22 BÀI 11. KIỂU MẢNG (Tiết 2/4) I. Mục tiêu 1. Kiến thức: - Biết cách khai báo mảng một chiều; - Duyệt tuần tự để tìm phần tử lớn nhất của day số nguyên; - Sắp xếp dãy số nguyên bằng thuật toán tráo đổi. 2. Kĩ năng: - Củng cố và làm cho học sinh hiểu sâu về thuật toán tìm kiếm, sắp xếp cơ bản mà học sinh được học ở lớp 10; - Hình thành kỹ năng cơ bản về sử dụng kiểu mảng trong chương trình. II. Chuẩn bị của GV và HS 1.Chuẩn bị của GV: Sách GK tin 11, Sách GV tin 11, các ví dụ, máy chiếu (nếu có). 2. Chuẩn bị của HS - Sách GK tin học 11, bài cũ ở nhà, đồ dùng học tập cần thiết. III. Tiến trình bài dạy 1. Kiểm tra bài cũ (10 phút): Câu hỏi 1: Nêu khai niệm kiểu mảng? Học sinh trả lời: …. Câu hỏi 2: Em hãy nêu cách khai báo tổng quát dữ liệu kiểu mảng một chiều? Học sinh trả lời: …. 71 2. Nội dung bài mới (33 phút): Hoạt động 1(20 phút): tìm hiểu ví dụ 1 Hoạt động của GV và HS Nội dung bài GV: nhắc lại cách khai báo mảng 1 chiều và đưa ra VD1 cho HS tìm hiểu. HS: nghe, suy nghĩ GV: Em nào cho biết Input và Output của bài toán này? gọi HS trả lời. HS: Đứng dạy và đưa ra Input và Output GV: các em quan sát thuật toán của bài toán trong SGK và đưa ra khai báo mảng 1 chiều của bài toán này. HS: suy nghĩ và đưa ra khai báo mảng 1 chiều của bài toán. GV: hướng dẫn HS tìm hiểu và viết chương trình thực hiện tìm phần tử lớn nhất của mảng được đưa vào. HS: nghe, suy nghĩ viết các câu lệnh nhập số lượng phần tử của mảng, từng phần tử của mảng, so sánh và đưa ra màn hình phần tử có giá trị lớn nhất. Tiết 22. §11. KIỂU MẢNG (Tiết 2/4) 1. Kiểu mảng một chiều a. Khai báo b. Một số ví dụ Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên. - Input: Số nguyên N(N<=250) và dãy N số nguyên A 1 , A 2 , A 3 , . . ., A N , mỗi số đều không vượt quá 500. - Output: Chỉ số và giá trị của phần tử lớn nhất trong dãy số đã cho. - Thuật toán có dạng: Bước 1: Nhập N và dãy A 1 , A 2 , . . ., A N ; Bước 2: Max  A 1 , i  2; Bước 3: Bước 3: Nếu i > N thì đưa ra giá trị Max rồi kết thúc; Bước 4: Bước 4.1: Nếu A i > Max thì Max  A i ; Bước 4.2: i  i +1 rồi quay lại bước 3; - Chương trình 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 luong 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; 72 For i := 2 to N do If A[i] > Max then Begin Max := A[i]; Csmax := i; End; Writeln(‘Gia tri cua phan tu Max : ’, Max); Writeln(‘Chi so cua phan tu Max : ’, csmax); Readln End. Hoạt động 2(12 phút): tìm hiểu ví dụ 2 Hoạt động của GV và HS Nội dung bài GV: Em nào cho biết Input và Output của bài toán này? gọi HS trả lời. HS: Đứng dạy và đưa ra Input và Output GV: các em quan sát thuật toán của bài toán trong SGK và đưa ra khai báo mảng 1 chiều của bài toán này. HS: suy nghĩ và đưa ra khai báo mảng 1 chiều của bài toán. GV: hướng dẫn HS tìm hiểu và viết chương trình thực hiện sắp xếp các phần tử của mảng thành dãy số tăng dần. HS: nghe, suy nghĩ viết các câu lệnh nhập số lượng phần tử của mảng, từng phần tử của mảng, so sánh và đưa ra màn hình dãy số tăng dần. Ví dụ 2: Tìm phần tử lớn nhất của dãy số nguyên. - Input: Số nguyên N(N<=250) và dãy N số nguyên A 1 , A 2 , A 3 , . . ., A N , mỗi số đều không vượt quá 500. - Output: Dãy số A đã được sắp xếp thành dãy không giảm. - Thuật toán có dạng: Bước 1: Nhập N và dãy A 1 , A 2 , . . ., A N ; Bước 2: Max  A 1 , I  2; Bước 3: Nếu I > N thì đưa ra giá trị Max rồi kết thúc; Bước 4: Bước 4.1: Nếu A i > Max thì Max  A i ; Bước 4.2:  I +1 rồi quay lại bước 3; - Chương trình như sau: Program Sapxep; 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 luong phan tu cua day so, N = ’); Readln(N); 73 For i := 1 to N do Begin Write(‘Phan tu thu’,i,’ = ’); Readln(A[i]); End; For j := N downto 2 do For i := i 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 Writeln(A[i]: 4); Readln End. 3. Củng cố và nhắc nhở(2 phút): * Nhắc lại các kiến thức cơ bản - Trong giờ này các em đã biết cách khai báo mảng của các bài toán cụ thể thông qua cách khai báo mảng một chiều. Cách 1: 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ử>; Cách 2: 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>; - Bước đầu biết sử dụng mảng một chiều để thực hiện các bài toán cụ thể đê thực hiện giải các bài toán đơn giản. 4. Nhắc nhở về nhà chuẩn bị giờ sau - Các em trả lời các câu hỏi trong SGK trang 41 và làm các bài tập trong sách bài tập. Xem trước ví dụ 3 để giờ sau học. Ngày dạy Lớp Sĩ số Học sinh nghỉ / / 2010 11B3 / , / / 2010 11B4 / , / / 2010 11B5 / , / / 2010 11B6 / , 74 Theo PPCT: 23 BÀI 11. KIỂU MẢNG (Tiết 3/4) I. Mục tiêu 1. Kiến thức: - Biết cách khai báo mảng một chiều; - Tìm một số hạng trong một dãy số nguyên tăng bằng thuật toán tìm kiếm nhị phân. 2. Kĩ năng: - Củng cố và làm cho học sinh hiểu sâu về thuật toán tìm kiếm cơ bản mà học sinh được học ở lớp 10; - Hình thành kỹ năng cơ bản về sử dụng kiểu mảng trong chương trình. II. Chuẩn bị của GV và HS 1.Chuẩn bị của GV: Sách GK tin 11, Sách GV tin 11, các ví dụ, máy chiếu (nếu có). 2. Chuẩn bị của HS - Sách GK tin học 11, bài cũ ở nhà, đồ dùng học tập cần thiết. III. Tiến trình bài dạy 1. Kiểm tra bài cũ(10 phút): Câu hỏi: Hãy viết chương trình nhập từ bàn phím mảng A gồm N (N<100) phần tử. Học sinh lên bảng thực hiện: …. 2. Nội dung bài mới(33 phút): Hoạt động 1(10 phút): tìm hiểu ví dụ 3 Hoạt động của GV và HS Nội dung bài GV: vừa rồi các em đã được bạn nhắc lại về cách khai báo mảng thông qua bài kiểm tra của bạn. Giờ này thầy cùng các em tiếp tục tìm hiểu một bài toán nữa về tìm phần tử của mảng, đó là VD3 trong SGK về tìm kiếm nhị phân. GV: Em nào cho biết Input và Output của bài toán này? gọi HS trả lời. HS: Đứng dạy và đưa ra Input và Output Tiết 23. §11. KIỂU MẢNG (Tiết 3/4) 1. Kiểu mảng một chiều a. Khai báo b. Một số ví dụ Ví dụ 3: Tìm kiếm nhị phân. - Input: Số nguyên N(N<=250) và dãy N số nguyên A1, A2, A3, . . ., An, và số nguyên k. - Output: Chỉ số i và Ai = k hoặc thông báo “Khong tim thay” nếu không thấy số hạng nào của dãy A có giá trị bằng k. 75 GV: các em quan sát thuật toán của bài toán trong SGK và đưa ra khai báo mảng 1 chiều của bài toán này. HS: suy nghĩ và đưa ra khai báo mảng 1 chiều của bài toán. GV: hướng dẫn HS tìm hiểu và viết chương trình thực hiện so sánh các phần tử của mảng để tìm ra phần tử có giá trị bằng một khoá K cho trước. HS: nghe, suy nghĩ viết các câu lệnh nhập số lượng phần tử của mảng, từng phần tử của mảng, so sánh và đưa ra màn hình phần tử có giá trị bằng khoá K. - Thuật toán có dạng: Bước 1: Nhập N, các số hạng A1, A2, . . ., An và khoa k; Bước 2: Dau  1, Cuoi  N; Bước 3:       + ← 2 CuoiDau Giua ; Bước 4: Nếu A giua = k thì thông báo chỉ số Giua, rồi kết thúc; Bước 5: Nếu A Giua > k thì đặt Cuoi = Giua- 1 rồi chuyển đến bước 7; Bước 6: Dau  Giua + 1; Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k, rồi kết thúc; Bước 8: Quay lại bước 3. - Chương trình như sau: Program TK_nhiphan; Uses crt; Const Nmax = 250; Type ArrInt = array[1 . . Nmax] of Integer; Var N, i, k: integer; Dau, Cuoi, Giau: integer; A: ArrInt; Tim_thay: boolean; Begin Clrscr; Write(‘Nhap so luong phan tu cua day so, N = ’); Readln(N); Write(‘Nhap cac phan tu cua day so tang : ’); For i := 1 to N do Begin Write(‘Phan tu thu’,i,’ = ’); Readln(A[i]); End; Write(‘Nhap gia tri cua k = ’); Readln(k); Dau := 1; Cuoi := N; Tim_thay := false; While (Dau <=Cuoi) and not (Tim_thay) do Begin Giau := (Dau + Cuoi) div 2; 76 If A[Giau] = k then Tim_thay := true Else If A[Giau] > k then Cuoi = Giua-1 Else Dau := Giua + 1; End; If Tim_thay then Writeln(‘Chi so tim duoc la: ’, Giua); else Writeln(‘Khong tim thay’); Readln End. 3. Củng cố và nhắc nhở(2 phút): * Nhắc nhở về nhà chuẩn bị giờ sau - Các em trả lời các câu hỏi trong SGK trang 41 và làm các bài tập trong sách bài tập tiếp. Xem trước mục 2 về mảng 2 chiều để giờ sau học tiếp. 77 [...]... bảng viết đoạn lệnh dùng để Program Mang_ hai_chieu; uses crt; Var B: array[1 5,1 7] of integer; d, i, j, k: integer; Begin clrscr; writeln(‘Nhap cac phan tu cua mang theo dong: ’); for i := 1 to 5 do begin 80 nhập các phần tử của mảng 2 chiều for j := 1 to 7 do readln(B[i,j]); writeln; end; write(‘Nhap vao gia tri k = ’); readln(k); d := 0; writeln(‘DS cac phan tu mang nho hon’,k,’:’); for i := 1 to . liệu. Chương trình như sau: Program Nhiet_Do_Tuan; Const Max = 366; Type Kmang1 = array[1 Max] of real; Var Nhietdo: Kmang; Dem, i, n: byte; Tong, TB: real; 69 Begin write(‘Nhap nhiet do ngay:. mảng có giá trị nhỏ hơn k. Program Mang_ hai_chieu; uses crt; Var B: array[1 5,1 7] of integer; d, i, j, k: integer; Begin clrscr; writeln(‘Nhap cac phan tu cua mang theo dong: ’); for i := 1 to. do readln(B[i,j]); writeln; end; write(‘Nhap vao gia tri k = ’); readln(k); d := 0; writeln(‘DS cac phan tu mang nho hon’,k,’:’); for i := 1 to 5 do for j := 1 to 7 do if B[i,j] < k then begin write(B[i,j],’

Ngày đăng: 01/07/2015, 17:00

Xem thêm

TỪ KHÓA LIÊN QUAN

w