GA bai 11 Tin hoc 11

10 436 0
GA bai 11 Tin hoc 11

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

Thông tin tài liệu

Tuần : Tiết : 21+22+23+24 Ngày soạn: Ngày giảng: Bài 11. Kiểu mảng I. mục tiêu của bài: 1. Kiến thức - Hiểu khái niệm mảng một chiều và mảng hai chiều. - Hiểu cách khai báo và truy cập đến các phàn tử trong mảng. 2. Kĩ năng - Cài đặt một số thuật toán của 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 khai báo mảng, truy cập, tính toán các phần tử của mảng. 3. Thái độ - Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính. - Tiếp tục rèn luyện các phẩm chất cần thiết của ngời lập trình. II. Chuẩn bị của Giáo viên và học sinh: 1. Giáo viên: SGK, giáo án, STK (máy chiếu nếu có). 2. Học sinh: SGK, chuẩn bị trớc bài ở nhà. III. Phơng pháp giảng dạy - Thuyết trình, đàm thoại. IV. Tiến trình bài học và các hoạt động: 1. ổn định tổ chức: 1 2. Kiểm tra bài cũ: (Không kiểm tra bài cũ) 3. Bài mới: Tiết 21 * Hoạt động 1: Trình bày cho HS biết khái niệm của kiểu mảng một chiều. Hoạt động của GV và HS Nội dung - GV: ĐVĐ Với những kiểu dự liệu đã biết, làm thế nào để lu trữ đợc một dãy số? - HS: Suy nghĩ và trả lời. - GV: Các ngôn ngữ lập trinhg thờng cung cấp một số kiểu dự liệu đợc xây dựng từ những kiểu dự liệu chuẩn đợc gọi là kiểu dự liệu có cấu trúc. Bây giờ chúng ta tìm hiểu kiểu mảng một chiều. - GV: Đa ra một số ví dụ cần lập trình đa ra một dãy các số nguyên, hãy tìm cách lu trữ một dãy số nguyên trong lập trình? Bằng cách nào lu trữ một dãy các số nguyên dới dạng bảng? - HS: Suy nghĩ và trả lời câu hỏi. - GV: Nhận xét câu trả lời của HS sau đó đa ra khái niệm mảng một chiều và một số yếu tố liên quan. - GV: Em nào hãy xác định Input và Output của bài toán? - HS: Đứng tại chỗ trả lời câu hỏi. - GV: Ghi nháp lên bảng. - GV: Ghi hai chơng trình lên bảng và Phân tích rõ hai chơng trình để HS nhận thấy sự tiện lợi khi sử dụng mảng. 1. Kiểu mảng một chiều. - KN: Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu, mảng đợc đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng một chiều ta cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử. - Với mảng một chiều ta cần quan tâm đến: + Tên mảng một chiều. + Số lợng các phần tử trong mảng. + Kiểu dữ liệu của các phần tử. + Cách khai báo biến mảng một chiều. + Cách truy cập đến từng phần tử trong mảng. * Xét hai ví dụ: + Ví dụ 1: 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 độ trung bình của tuần và số lợng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong tuần? Input: t1, t2, t3,t4, t5, t6, t7. Output: tb, dem Program Nhietdotrungbinh; Uses Crt; Var t1, t2, t3,t4, t5, t6, t7: Integer; TB: Real; dem:byte; Begin Writeln(Nhap vao nhiet do cua bay 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 tuan la ,TB:6:2); Writeln(So ngay co nhiet do cao - HS: Trong khi GV phân tích hai chơng trình, HS đa ra ý kiến nhậm xét hai chơng trình. - GV: Nhận xét ý kiến của HS và đa ra ý kiến để HS hiểu rõ hơn sự cần thiết của mảng một chiều trong cài đặt thuật toán. hon nhiet do trung binh la:,dem); Readln; End. + Ví dụ 2: Nhập vào nhiệt độ (trung bình) của mỗi ngày trong năm. Tính và đa ra màn hình nhiệt độ trung bình của năm và số lợng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong năm? Program Nhietdo_Nngay; Uses Crt; Var Nhietdo : Array[1 365] of Integer; Dem, i, n: Byte; Tong, TB:Real; Begin Write(Nhap so ngay n = ); readln(n); Tong:=0; Dem:=0 For i:=1 to n do Begin Write(Nhap nhiet do ngay thu ,i,=); Readln(Nhietdo[i]); Tong:= Tong+Nhietdo[i]; End; TB:=tong/n; For i:=1 to n do If Nhietdo[i]>TB then dem:=dem+1; Writeln(Nhiet do trung binh ,n, ngay la = ,TB:6:2); Writeln(So ngay co nhiet do cao hon nhiet do trung binh la: ,dem); Readln; End. - GV: Củng cố. - Nêu sự khác nhau giữa hai bài toán và sự cần thiết phải sử dụng mảng một chiều. Tiết 22 * Hoạt động 2: Giới thiệu cách hai báo mảng một chiều và Phân tích một số các ví dụ để HS hiểu và biết cách vận dụng khai báo mảng một chiều trong cài đặt. Hoạt động của GV và HS Nội dung * ổn định lớp: (1 phút) - Kiểm tra bài cũ (lồng trong bài giảng). - GV: Đặt vấn đề, và đa ra cách khai báo mảng một chiều trong ngôn ngữ lập trình Pascal. Giải thích các từ khoá mới. - GV: Khai báo bằng cách nào thuận tiện hơn? - HS: Suy nghĩ và trả lời. - GV: Tuỳ vào từng trờng hợp cụ thể những thờng sử dụng cách 2. - GV: Lấy ví dụ cụ thể để HS truy vấn đến các phần tử trong mảng, sau đó lấy một số ví dụ có sử dụng kiểu mảng trong cài đặt. - GV: Em nào hãy xác định Input và Output của bài toán? - HS: Suy nghĩ và trả lời. - GV: Ghi lên bảng Input và Output. - GV: Hãy nêu ý tởng của thuật toán tìm max? - HS: Suy nghĩ và trả lời. - GV: Nhận xét, bổ xung và viết ý tởng thuật toán lên bảng. - GV: Viết chơng trình để HS có thể dễ dàng nhận ra các thao tác phải thực hiện a. Khai báo mảng một chiều. * Cách 1: Khai báo gián tiếp. Type <tên kiểu mảng>=array[<chỉ số đầu> <chỉ số cuối>] of <kiểuphần tử>; Var <ds biến mảng> : <tên kiểu mảng>; * Ví dụ: Type nhietdo = array[1 365] of integer; Var A: nhietdo; * Cách 2: Khai báo trực tiếp. Var <Ds biến mảng> : array[<chỉ số đầu> <chỉ số cuối>] of <kiểuphần tử>; * Ví dụ: Var nhietdo : array[1 365] of integer; Var A,B : array[1 100] of real; - Trong đó: + Type là từ khoá dùng để khai báo Kiểu dự liệu. Array là từ khoá dùng để khai báo mảng. + Kiểu chỉ số thờng là đoạn số nguyên liên tục có n1 n2, với n1 là chỉ số đầu, n2 là chỉ số cuối. + Kiểu phần tử là kiểu dự liệu của các phần tử trong mảng. + Để truy cập đến các phần tử trong mảng, ta làm: <Tên biến mảng>[chỉ số] b. Các ví dụ * Ví dụ 1: Tìm phần tử lớn nhất của dãy các số nguyên. - Input: Số nguyên dơng n và dãy A1,A2, ,An. N<250 - Output: Giá trị của số lớn nhất trong dãy và vị trí của số đó. - ý tởng: + Đặt A1 là số lớn nhất (Max). + Cho i lặp từ 2 đến n, nếu A[i]>Max thì đổi Max:=A[i] và lu lại vị trí i. Program Search_Max; Uses Crt; khi viết chơng trình. - GV: Vừa viết chơng trình vừa phân tích cho HS hiểu rõ cách thực hiện chơng trình. GV trình bày rõ các thao tác khi viết chơng trình. - GV: Phát vấn HS về kiến thức đã học ở những bài trớc để xây dựng bài toán mới. - HS: Xem lại toàn bộ kiến thức đã học và trả lời. Var A: Array[1 100] of Integer; N, i, Vt: Byte; Max: Integer; Begin Write(Nhap so cac phan tu n = ); Readln(n); For i:=1 to n do Begin Write(A[,i,]= ); readln(a[i]); End; Max:=A[i]; Vt:=1; For i:=2 to n do If A[i] > Max then Begin Max:=A[i]; Vt:=i; End; Writeln(Gia tri phan tu max = ,Max); Writeln(Vi tri phan tu max = ,Vt); Readln; End. * Củng cố - Nhắc lại cách khai báo mảng một chiều Tiết 23 Hoạt động của GV và HS Nội dung * ổn định lớp: (4 phút) - Kiểm tra bài cũ: Em hãy viết cách cú pháp khai báo mảng một chiều và trình bày chức năng các từ khoá trong cú pháp khai báo? b. Các ví dụ (Tiếp) * Ví dụ 2: Sắp xếp dãy các số nguyên bằng thuật toán tráo đổi. - Input: Số nguyên dơng n, và dãy A1, A2, ,An - Output: Dãy A đợc sắp xếp theo thứ tự tăng dần. - ý tởng: + Đổi để đa số lớn nhất về vị trí cuối cùng. - GV: Em nào hãy xác định Input và Output của bài toán sắp xếp? - HS: Suy nghĩ và trả lời. - GV: Ghi lên bảng Input và Output. - GV: Hãy nêu ý tởng của thuật toán sắp xếp? - HS: Suy nghĩ và trả lời. - GV: Nhận xét, bổ xung và viết ý tởng thuật toán lên bảng. - GV: Viết chơng trình để HS có thể dễ dàng nhận ra các thao tác phải thực hiện khi viết chơng trình. + Làm tơng tự đối với những số còn lại. Program Sort; Uses Crt; Var A: Array[1 100] of Integer; N,i,j: Byte; tg: Integer; Begin Write(Nhap so cac phan tu n = ); Readln(n); For i:=1 to n do Begin Write(A[,i,]= ); readln(a[i]); End; For i:=1 to n-1 do For j:=i+1 to n do If A[i]>A[j] then Begin Tg:=A[i]; A[i]:=A[j]; A[j]:=tg; End; Writeln(Mang sau khi sap xep la); For i:=1 to n do Write(A[i]:5); Readln; End. - GV: Em nào hãy xác định Input và Output của bài toán? - HS: Suy nghĩ và trả lời. * Ví dụ 3: Tìm kiếm nhị phân. - Input: Số nguyên dơng n, và dãy A 1 , A 2 , ,A n đã đợc sắp xếp tăng dần. Và số nguyên k. - Output: Có hay không chỉ số i mà A[i]=k hoặc thông báo không tìm thấy. - ý tởng: + Ta sử dụng tính chất tăng dần của dãy A, ta so sánh k với số hạng A Giữa trong đó Giữa = (n+1/2). Khi đó sảy ra 1 trong 3 trờng hợp. Nếu A Giữa =k thì Giữa là chỉ số cần tìm. Việc tìm kiếm kết thúc. Nếu A giữa >k thì việc tìm kiếm trong - GV: Ghi lên bảng Input và Output. - GV: Hãy nêu ý tởng của thuật toán tìm max? - HS: Suy nghĩ và trả lời. - GV: Nhận xét, bổ xung và viết ý tởng thuật toán lên bảng. - GV: Viết chơng trình để HS có thể dễ dàng nhận ra các thao tác phải thực hiện khi viết chơng trình. phạm vi từ A 1 ,A 2 , ,A Giữa . Nếu A giữa <k thì việc tìm kiếm trong phạm vi từ A Giữa , A giữa+1 , ,A n . + Việc tìm kiếm sẽ lặp lại một số lần hoặc đã tìm thấy khoá k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng. Program Binary_Search; Uses Crt; Var A: Array[1 250] of Integer; N, i, Dau, Cuoi, Giua: Byte; k: Integer; ok: Boolean; Begin Write(Nhap so cac phan tu n = ); Readln(n); For i:=1 to n do Begin Write(A[,i,]= ); readln(a[i]); End; Write(Nhap so k = ); Readln(k); Dau:=1; Cuoi:=n; ok:=false; While Dau <=Cuoi and not ok do Begin Giua:=(Dau+Cuoi) div 2; If A[giua] = k then ok:=true Else If A[giua] = k then Cuoi:=Giua-1 Else Dau:=Giua+1; End; If ok then Writeln(Chi so can tim la:,Giua) Else Writeln(Khong tim thay); Readln; End. * Củng cố. - Nhấn mạnh một số kiến thức cơ bản trong khi cài đặt. Tiết 24 Hoạt động của GV và HS Nội dung * ổn định lớp: (1 phút) - Kiểm tra bài cũ: (Lồng trong bài giảng). - GV: Đặt vấn đề, và đa ra những vấn đề cần thiết về nlu trữ dự liệu dới dạng bảng để các em thấy nhu cầu sử dụng mảng hai chiều trong lập trình. - GV: Khai báo bằng cách nào thuận tiện hơn? - HS: Suy nghĩ và trả lời. - GV: Tuỳ vào từng trờng hợp cụ thể những thờng sử dụng cách 2. - GV: Khi khai báo mảng hai chiều cần chú ý điều gì? - HS: Tìm câu trả lời. Gv gợi ý để các em chỉ ra đợc chỉ số của mảng, số dòng, số cột và kiểu của mỗi phần tử trong mảng. - GV: Gọi HS lên bảng khai báo một số biến mảng hai chiều theo yêu cầu của GV. - HS: Lên bảng và làm theo yêu cầu của GV. - GV: Lấy ví dụ cụ thể để HS truy vấn đến các phần tử trong mảng, sau đó lấy một số ví dụ có sử dụng kiểu mảng hai chiều trong cài đặt. 2. Kiểu mảng hai chiều - KN: Mảng hai chiều là một bảng các phần tử cùng kiểu - Với mảng hai chiều ta cần quan tâm đến: + Tên kiểu mảng hai chiều. + Số lợng các phần tử của mỗi chiều trong mảng. + Kiểu dữ liệu của các phần tử. + Cách khai báo biến mảng hai chiều. + Cách truy cập đến từng phần tử trong mảng. a. Khai báo mảng hai chiều. * Cách 1: Khai báo gián tiếp. Type <tên kiểu mảng>=array[<Kiểu chỉ số hàng>,<Kiểu chỉ số cột>] of <kiểuphần tử>; Var <ds biến mảng> : <tên kiểu mảng>; * Ví dụ: Type MaTran = array[1 100,1 100] of integer; Var A: MaTran; * Cách 2: Khai báo trực tiếp. Var <Ds biến mảng> : array[<Kiểu chỉ số hàng>,<Kiểu chỉ số cột>] of <kiểuphần tử>; * Ví dụ: Var A : array[1 100,1 100] of integer; + Để truy cập đến các phần tử trong mảng, ta làm: <Tên biến mảng>[chỉ số hàng,chỉ số cột] * Ví dụ: A[2,13], B[23,55], - GV: Viết chơng trình để HS có thể dễ dàng nhận ra các thao tác phải thực hiện khi viết chơng trình. Và giải thích và phân tích các câu lệnh trong chơng trình và cách thực hiện của các câu lệnh. - HS: Chú ý nghe giảng và ghi bài. - GV: Vừa viết chơng trình, vừa phát vấn HS về những câu lệnh đã học ở những bài trớc. - HS: Xem lại kiến thức đã học và trả lời. b. Ví dụ. * Ví dụ 1: Viết chơng trình đa ra màn hình bảng cửu chơng. Program Cuuchuong; Uses Crt; Var A: Array[1 9,1 10] of integer; i,j: Byte; Begin For i:=1 to 9 do For j:=1 to 10 do A[i,j]:=i*j; For i:=1 to 9 do Begin For j:=1 to 10 do Write(A[i,j]:5) Writeln; Writeln; End; Readln; End. * Ví dụ 2: Viết chơng trình nhập vào từ bàn phím các phần tử của mảng 2 chiều A gồm n hàng, m cột với các phần tử là các số nguyên và một số nguyên k. Đa ra màn hình các phần tử của mảng nhỏ hơn k và có bao nhiêu số. Program Mang_hai_chieu; Uses Crt; Var A: Array[1 100,1 100] of integer; d, i, j: Byte; ;: Integer; Begin Write( Nhap vao so dong, cot:); Readln(n,m); For i:=1 to n do For j:=1 to m do Begin Write(a[,i,,,j,]=); Readln(a[i,j]); End; Write(Nhap vao gia tri k = ); Readln(k); d:=0; For i:=1 to n do For j:=1 to m do If a[i,j] < k then Begin Write(a[i.j]:6); d:= d+1; End; If d = 0 then Writeln(Khong co phan tu nao nho hon ,k) Else Writeln(Co ,d, so nho hon,k); Readln; End. v. Củng cố - Nhắc lại một số khái niệm mới. - Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 đồng thời gọi bôn HS lên bảng viết lại các cách khai báo, truy xuất và hiển thị đê nhập dự liệu. VI. Dặn dò - Vê nhà xem lại bài và làm bài tập 5, 6, 7, 8, 9 SGK 11/trang 79-80. - Xem trớc bài tập và thực hành 3 trang 63. . năm? Program Nhietdo_Nngay; Uses Crt; Var Nhietdo : Array[1 365] of Integer; Dem, i, n: Byte; Tong, TB:Real; Begin Write(Nhap so ngay n = ); readln(n);. Nhietdo[i]>TB then dem:=dem+1; Writeln(Nhiet do trung binh ,n, ngay la = ,TB:6:2); Writeln(So ngay co nhiet do cao hon nhiet do trung binh la: ,dem); Readln;

Ngày đăng: 03/07/2013, 21:50

Hình ảnh liên quan

- GV: Ghi lên bảng Input và Output. - GA bai 11 Tin hoc 11

hi.

lên bảng Input và Output Xem tại trang 6 của tài liệu.
- GV: Ghi lên bảng Input và Output. - GA bai 11 Tin hoc 11

hi.

lên bảng Input và Output Xem tại trang 7 của tài liệu.
- Nhắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 đồng thời gọi bôn HS lên bảng viết lại các cách khai báo, truy xuất và hiển thị đê nhập dự liệu. - GA bai 11 Tin hoc 11

h.

ắc lại cấu trúc câu lệnh bằng cách chia bảng thành 4 đồng thời gọi bôn HS lên bảng viết lại các cách khai báo, truy xuất và hiển thị đê nhập dự liệu Xem tại trang 10 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan