Giáo án Tin học 11 tiết 21 đến 28

Tiết ppct : 26-27

Chủ đề: BÀI TẬP VÀ THỰC HÀNH 3

I/ Mục tiêu bài học

1. Kiến thức

- Nâng cao kỹ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn;

- Biết giải môt số bài toán, tìm kiếm đơn giản trên máy tính

2. Kĩ năng

- Nhận biết được các thành phần trong khai báo kiểu mảng một chiều.

- Nhận biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình.

- Biết cách khai báo mảng đơn giản và chỉ số kiểu miền con của kiểu nguyên.

 

doc30 trang | Chia sẻ: binhan19 | Lượt xem: 686 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo án Tin học 11 tiết 21 đến 28, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
: Số nguyên dương N và dãy số A1, A2, .., AN Output : Chỉ số và giá trị của số lớn nhất trong dãy Ý tưởng : Đặt số A1 là số lớn nhất (max) Cho i lặp từ 2 đến N, nếu A[i]> thì đổi max = A[i] và lưu lại vị trí i . GV: Đưa ra ví dụ Chỉ số: 1 2 3 4 5 dãy A: 5 10 4 7 9 Phần tử Max: A[2] = 10 Chỉ số phần tử Max là: 2 4.Các thao tác xử lý mảng 1 chiều:    a. Nhập dữ liệu cho các phần tử của mảng A: C1.  Dùng vòng for   For i:=0 to 10 do       begin         Write(‘Nhập phần tử thứ ‘ , i , ‘: ‘);         Readln(A[i]);       end; C2. Dùng While :     i:=0;     While i<= 10 do       begin         Write(‘Nhap phần tử thứ ‘, i, ‘: ‘);         Readln(A[i]);         i:=i+1;      end; b. Ðể in các gía trị của mảng A lên màn hình, ta viết :             For i:=0 to 10 do Write(A[i]:6:2); 5. Một số ví dụ : VD1: Viết chương trình cho bài toán tính nhiệt độ trung bình của năm Ví dụ 2 : Tìm phần tử lớn nhất của một dãy số nguyên . Chương trình như sau : Program timmax ; Uses crt ; var a : array[1..250] of integer ; n,i,max,csmax : Integer ; Begin clrscr ; Write('Nhap n = ') ; Readln(n) ; For i := 1 to n do Begin Write('a[',i,'] = ') ; readln(a[i]) ; End ; max := a[i] ; 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 : ',max) ; Writeln('chi so ptu lon nhat : ',csmax) ; Readln ; End . V. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ Các kiến thức đã học: Xem lại thuật toán tìm phần tử lớn nhất của dãy số nguyên Xem trước thuật toán sắp xếp dãy số nguyên bằng thuật toán hoán đổi. VI. RÚT KINH NGHIỆM, BỔ SUNG: Tiết 23: KIỂU MẢNG (Tiết 3) I. Mục đích, yêu cầu 1. Kiến thức: Củng cố và làm HS hiểu xâu sắc hơn về những thuật toán tìm kiếm, sắp xếp cơ bản mà học sinh đã học ở lớp 10. 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. 3. Tư duy, thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức 4. Phát triển năng lực Hình thành và phát triển cho học sinh năng lực tự học, năng lực công nghệ thông tin, năng lực giải quyết vấn đề. Mô hình hoá các tình huống trong thực tiễn bằng cấu trúc mảng một chiều qua việc xử lí bài toán sắp xếp, đếm số lần xuất hiện. II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC 1. Phương pháp: Thuyết trình, vấn đáp. 2. Phương tiện: Máy chiếu, máy tính, phòng máy, bảng. III. LƯU Ý SƯ PHẠM. HS cần hình dung được cơ bản về hoạt động của mảng 1 chiều. Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để học sinh đạt được những kĩ năng theo yêu cầu. IV. TIẾN TRÌNH BÀI DẠY. 1. Ổn định lớp: (Thời lượng:........) 2. Kiểm tra bài cũ, gợi động cơ (Thời lượng:..........) HOẠT ĐỘNG CỦA GV VÀ HS NỘI DUNG GV:Nêu bài toán, y/cầu hs xác định In/Output của bài toán. HS: Đọc đề và xác định bài toán. In: N (N£250), dãy A (A[i]<500). Out: dãy A không giảm GV: Y/cầu hs trình bày lại thuật toán sắp xếp tráo đổi. (Đã học ở lớp 10) HS:Thuật toán B1: Nhập N, dãy A ; B2: j!N; B3: nếu j<2 thì đưa ra dãy đã được sắp xếp, KT; B1: j!j-1; i!1; B2: Nếu i>j thì Qlại B3; B6: Nếu A[i]>A[i+1] thì tráo đổi A[i] và A[i+1]; B7: Quay lại B2. Ta dùng biến Dem kiểu nguyên để đếm số lần xuất hiện của x. Ðầu tiên ta gán Dem:=0, sau đó duyệt từng phần tử A1, A2, ..., An, mỗi khi có một phần tử bằng x thì tăng biến Dem lên một đơn vị. Kết qủa là biến Dem có gía trị đúng bằng số phần tử bằng x. Hai lệnh chính của thuật toán là: VD: Đếm trong dãy số A có bao nhiêu số 0, ta viết:     Nhận xét: Ðẳng thức A[i]=x ( hay A[i]=0 ) là điều kiện để biến Dem được tăng thêm 1, vậy bài toán trên có thể mở rộng là: hãy đếm số phần tử của mảng A thỏa mãn một điều kiện cho trước. Trong lệnh For ở trên, khi thay đẳng thức A[i]=x bằng A[i] thỏa mãn điều kiện , ta được thuật toán tổng quát hơn : 4. Một số ví dụ : VD4: Số nguyên dương N (N£250) và dãy A gồm N số nguyên dương, mỗi số đều không vượt quá 500. Hãy sắp xếp dãy A thành dãy không giảm Var A: array[1..300] of integer; N, i, j :integer; Begin {tao mang} Write(‘Nhap n = ’); readln(n); For i:=1 To n Do begin write(‘phan tu thu ’,i,’ =’); readln(A[i]); end; {sap xep mang} For j := N Downto 1 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; {dua ra mang da sap xep} Writeln (‘Mang da duoc sap xep ’); For i :=1 To N Do write (a[i]:4); Readln End. VD4: Ðếm số lần xuất hiện của gía trị x trong dãy A1, A2, ..., An .     Dem:=0;     For i:=1 to N do If A[i]=x then Dem:=Dem+1;       Dem:=0;     For i:=1 to N do if A[i]=0 then Dem:=Dem+1;     Writeln(‘ Có ‘, Dem , ‘ số không ‘); Dem:=0;                 For i:=1 to N do If A[i] thỏa mãn điều kiện then Dem:=Dem+1; V. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ Các kiến thức đã học. Xem lại thuật toán sắp xếp dãy số nguyên bằng thuật toán hoán đổi, thuật toán tìm kiếm. VI. RÚT KINH NGHIỆM, BỔ SUNG: Tiết 24: KIỂU MẢNG (Tiết 4) I. Mục đích, yêu cầu 1. Kiến thức: Củng cố và làm HS hiểu xâu sắc hơn về mảng một chiều, cách khai báo, cách tham chiếu đến một phần tử của mảng, cách nhập dữ liệu cho phần tử của mảng. 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. 3. Tư duy, thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. 4. Phát triển năng lực Hình thành và phát triển cho học sinh năng lực tự học, năng lực công nghệ thông tin, năng lực giải quyết vấn đề. Mô hình hoá các tình huống trong thực tiễn bằng cấu trúc mảng một chiều qua việc xử lí bài toán tính tổng. II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC 1. Phương pháp: Thuyết trình, vấn đáp. 2. Phương tiện: Máy chiếu, máy tính, phòng máy, bảng. III. TIẾN TRÌNH BÀI DẠY. 1. Ổn định lớp: (Thời lượng:........) 2. Kiểm tra bài cũ, gợi động cơ (Thời lượng:..........) 3. Nội dung bài giảng. Hoạt động 1: Vận dụng kiểu mảng một chiều Hoạt động của Giáo viên và Học sinh Nội Dung 1. Nêu đề bài toán (Nội dung) Y/cầu hs xác định In/Output của bài toán. HS: In: mảng A, số k Out: Tổng (S) các p/tử trong mảng A là bội của k. 2. Ở lớp 10 ta đã xây dựng t/toán cho bài toán này rồi. Y/cầu hs nhắc lại t/toán. 3. Y/cầu hs cho biết các việc chính cần thực hiện trong chtrình là gì? Trả lời + Cho biết số ptử của mảng A. + Nhập giá trị cho các ptử của mảng A + Tính tổng. 4. Y/cầu hs cho biết các biến chính cần sử dụng là gì? TL: mảng A biến đơn: N, k, S. - Y/cầu hs khác lên viết phần khai báo các biến đó? HS Lên bảng trình bày Var S, N, k: integer; A: array[1..100] of integer; 5. Tiếp tục y/cầu hs lên viết phần chtrình tạo giá trị cho các ptử của mảng A. (lưu ý nhập số lượng ptử của mảng trước) Gọi hs khác nhận xét * Chỉnh sửa đoạn chtrình hs vừa hoàn thành. 6. Để viết tiếp đoạn chtrình còn lại (tính tổng) theo thuật toán ta phải kiểm tra lần lượt tất cả các ptử của mảng từ A[1] đến A[n]. vậy ta sử dụng câu lệnh gì ở đây? TL: Sử dụng cấu trúc lặp For. - Hỏi: trước khi tính tổng, ngoài mảng A trong CT cần có thêm gì không? (GV bổ sung) TL: Giá trị k và Biến S := 0 - Y/cầu hs khác lên viết đoạn chtrình còn lại? - 1 hs Lên bảng trình bày Chạy thử chtrình N = 8 A: 5, 6, -8, 13, 24, 7, -4, -12 và k =3 Bài 1: Viết CT tạo mảng A gồm N (N£100) số nguyên. Tính tổng các phần tử của mảng là bội của một số nguyên dương k cho trước. Var S, n, k, i : integer; A: array[1..100] of integer; Begin Write(‘Nhap n = ’); readln(n); {tao mang} For i:=1 To n Do begin write(‘phan tu thu ’,i,’ =’); readln(A[i]); end; write(‘Nhap k = ’); readln(k); S := 0; {khoi tao S ban dau} {tinh tong} For i:=1 To n Do If A[i] mod k = 0 Then S := S + A[i]; Writeln(‘Tong can tinh la ’, S); End. Hoạt động 2: Mở rộng bài toán có vận dụng mảng một chiều Hoạt động của Giáo viên và Học sinh Nội Dung (Treo bảng) chứa nội dung câu lệnh cần thêm vào chtrình ở bài 1. 1. Y/cầu hs n/cứu nội dung các câu lệnh và hỏi: - Ý nghĩa của biến am, duong? - Chức năng của lệnh (3)? - Lệnh (4) đưa ra thông tin gì? HS N/cứu ý nghĩa các câu lệnh và trả lời: - Dùng để lưu số lượng đếm được. - Đếm số dương hoặc đếm số âm. - Số các số dương, số các số âm. 2. Y/cầu hs tìm vị trí bổ sung các lệnh vào cho phù hợp để chtrình đếm được số dương, số âm. HS Chỉ ra vị trí cần bổ sung và các câu lệnh cần loại bỏ bớt. 3. Y/cầu hs lên hoàn chỉnh lại chương trình? HS Lên bảng , chỉnh sửa lại chương trình. ** Chuẩn hoá lại chtrình. * Chạy thử chtrình với 1 bộ giá trị: Chạy thử chtrình N = 8 A: 5, 6, -8, 13, 24, 7, -4, -12 A 5 6 - 8 13 24 7 - 4 - 12 Duong 1 2 2 3 4 5 5 5 m 0 0 1 1 1 1 2 3 Var n, i : integer; am, duong : integer; A : array[1..100] of integer; Begin Write(‘Nhap n = ’); readln(n); {tao mang} For i:=1 To n Do begin write(‘phan tu thu ’,i,’ =’); readln(A[i]); end; am := 0; duong := 0; {dem} For i:=1 To n Do If A[i] >0 Then duong := duong + 1 Else if A[i]<0 Then am := am + 1; Writeln(duong: 4, am:4); End. V. ĐÁNH GIÁ CUỐI BÀI 1. Nội dung đã học Tính tổng các phần tử trong mảng thoả mãn một điều kiện. Đếm số phần tử trong mảng thoả mãn một điều kiện. 2. Câu hỏi, bài tập về nhà Làm các bài 5,6,7 VI. RÚT KINH NGHIỆM, BỔ SUNG: Tiết 25. BÀI TẬP I. MỤC TIÊU 1. Về kiến thức: Củng cố các kiến thức về: Các quy tắc kiểu dữ liệu có cấu trúc để thực hiện dữ liệu thực tế. Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu cơ sở theo một số cách thức tạo kiểu do ngôn ngữ lập trình Pascal quy định. Mỗi kiểu dữ liệu có cấu trúc thường hữu ích trong việc giải quyết một số bài tập. Trong ngôn ngữ Pascal dùng mô tả kiểu dữ liệu mới với từ khoá Type. 2. Về kĩ năng: Rèn luyện kĩ năng khai báo kiểu dữ liệu có cấu trúc (với Pascal, sử dụng thành thạo các từ khoá Var, Type). Sử dụng thành thạo các thao tác vào/ ra và các phép toán trên các thành phần cơ sở. 3. Về tư duy và thái độ: Thái độ học tập tích cực, ham thích lập trình. Tiếp tục hình thành và xây dựng phẩm chất cần thiết của người lập trình. 4. Phát triển năng lực Hình thành và phát triển cho học sinh năng lực tự học, năng lực công nghệ thông tin, năng lực giải quyết vấn đề. Diễn đạt cấu trúc mảng một chiều vào bài toán tạo mảng. II.PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC 1. Phương pháp: thuyết trình, vấn đáp, ... 2. Phương tiện GV: Computer Nêu vấn đề, Dẫn dắt, gợi ý... HS: Chuẩn bị bài tập về nhà. III. LƯU Ý SƯ PHẠM GV cần định hướng cho HS công thức tổng quát để xác định cấp số cộng, dãy Fibonaci IV. TIẾN TRÌNH BÀI DẠY Hoạt đông 1: Củng cố nội dung lý thuyết Hoạt động của GV và HS Nội dung GV: Yêu cầu HS hãy nêu 2 cách để khai báo mảng? GV: Hãy giải thích các đại lượng? GV: Cách tham chiếu đến phần tử của mảng? GV: Cách nhập dữ liệu? GV: Cách in dữ liệu? 1. Khai báo mảng: Có 2 cách: - Cách 1: Khai báo trực tiếp: Var : array[kiểu chỉ số] of ; - Cách 2: Khai báo gián tiếp Type = array[kiểu chỉ số] of ; Var :; Trong đó: +Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1...n2(n1<n2)(n1,n2 là các hằng hoặc biểu thức) + Kiểu phần tử là kiểu dl của các phần tử của mảng. 2. Cách tham chiếu: Tên_biến[chỉ số] 3. Nhập, xuất dữ liêu a. Nhập dữ liệu Có 2 cách C1.  Dùng vòng for C2. Dùng While : b. In dữ liệu của mảng Ðể in các gíá trị của mảng A lên màn hình, ta viết :             For i:=0 to 10 do Write(A[i]:6:2); Hoạt động 2: giao nhiệm vụ: Các em hãy giải quyết các bài toán sau: Bài 1: Nhập N nguyên (N<=250), dãy A: A1,A2,..., AN nguyên (Ai<=500). Tìm phần tử nhỏ nhất. Bài 2: Nhập M nguyên (M<=200), dãy B: B1,B2,..., BM nguyên (Bi<=500). In các phần tử vừa nhập của dãy B ra màn hình. Bài 3: Nhập k nguyên (k<=50), dãy c: c1,c2,..., ck nguyên (ci<=500). Cho biết dãy C có bao nhiêu số âm? Hoạt động 3: HS tiếp nhận và giải quyết nhiệm vụ GV: chia bài theo nhóm yêu cầu HS thảo luận và trình bày HS thảo luận và trình bày GV cho các nhóm khác quan sát và nhận xét phần trình bày của nhóm GV nhận xét và cho điểm. Hoạt động 4: Mở rộng Mở rộng bài toán 1 đếm xem có bao nhiêu số có giá trị nhỏ nhất trng dãy A? Mở rộng bài toán 2: in các phần tử chẵn của mảng B? GV yêu cầu HS giải quyết trên lớp hoặc về nhà hoàn thiện. VI. RÚT KINH NGHIỆM, BỔ SUNG: Ngày soạn: Tiết ppct : 26-27 Chủ đề: BÀI TẬP VÀ THỰC HÀNH 3 I/ Mục tiêu bài học 1. Kiến thức - Nâng cao kỹ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn; - Biết giải môt số bài toán, tìm kiếm đơn giản trên máy tính 2. Kĩ năng - Nhận biết được các thành phần trong khai báo kiểu mảng một chiều. - Nhận biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình. - Biết cách khai báo mảng đơn giản và chỉ số kiểu miền con của kiểu nguyên. 3.Thái độ - Tạo sự ham muốn giải các bài tập lập trình, trước mắt thấy được ích lợi của lập trình phục vụ tính toán và giải được một số bài toán đã nêu trong nội dung của chương IV. 4. Định hướng phát triển năng lực - Năng lực giải quyết vấn đề thông qua trao đổi, thảo luận. - Năng lực tự hoc. - Năng lực hợp tác. - Năng lực giao tiếp, sử dụng ngôn ngữ. II. PHƯƠNG PHÁP, THIẾT BỊ, TÀI LIỆU DẠY - HỌC 1. Giáo viên: Phòng máy tính đã cài sẵn chương trình Turbo Pascal hoặc Free Pascal, các chương trình mẫu. 2. Học sinh: - Sách giáo khoa, sách bài tập và bài viết sẵn ở nhà. - Xem trước nội dung bài thực hành số 3. - Tìm hiểu trước hàm Random(n), thủ tục randomize. - Tìm hiểu thêm phần phụ lục B/sgk tr122-127. 3. Phương pháp: Gởi mở thông qua hoạt động tư duy. - Dạy học theo quan điểm hoạt động. - Sử dụng máy chiếu, máy tính, cài đặt môi trường NNLT pascal, SGK để minh họa, bảng phụ. III. TIẾN TRÌNH TỔ CHỨC CÁC HOẠT ĐỘNG HỌC TẬP A. HOẠT ĐỘNG TẠO TÌNH HUỐNG HỌC TẬP 1. Mục tiêu: Củng cố cho học sinh những hiểu biết về kiểu dữ liệu mảng 1 chiều. 2. Phương thức: # GV giao nhiệm vụ cho HS: (1) Các cách khai báo mảng 1 chiều. (2) Cách nhập dữ liệu cho mảng, đưa ra màn hình chỉ số và giá trị các phần tử mảng. (3) Cách làm việc với từng phần tử mảng. # Học sinh suy nghĩ, trao đổi thực hiện theo yêu cầu. - Trong quá trình HS làm việc, GV chú ý đến hoạt động của HS - Giáo viên nhận xét. 3. Gợi ý sản phẩm: Mỗi HS có thể trình bày sản phẩm với các mức độ khác nhau, GV lựa chọn một câu trả lời nào đó của HS để làm tình huống kết nối vào bài thực hành. B. HOẠT ĐỘNG KIẾN THỨC HÌNH THÀNH 1. Hoạt động 1: Tìm hiểu bài tập 1 * Mục tiêu: Học sinh hiểu được chương trình và thấy được kết quả khi chạy chương trình, qua đó hình thành các kỹ năng cơ bản làm việc với mảng 1 chiều: Khai báo dữ liệu liên quan tới mảng 1 chiều. Tính tổng các phần tử thỏa mãn điều kiện nào đó. Đếm số các phần tử thỏa mãn điều kiện. Hoạt động 1.1: Tìm hiểu chương trình bài 1-a/sgk-tr63. Mục tiêu: -Học sinh hiểu chương trình làm việc với mảng 1 chiều có sử dụng bộ sinh số ngẫu nhiên. - Hiếu được thuật toán tính tổng các phẩn tử thỏa mãn điều kiện nào đó. * Phương thức: - GV giao nhiệm vụ cho HS: + Xác định input và output bài toán 1-a sgk/tr63. + Thực hiện phần khai báo cho chương trình. + Tìm hiểu hàm random(N), thủ tục Randomize. + Cho dãy A: 23 ;4;3;12;9;15 và K= 2. hỏi có tổng các phần tử trong dãy A là bội của K? + Yêu cầu học sinh gõ chương trình bài 1-a và chạy thử quan sát kết quả. + Lưu lại chương trình câu a. - Học sinh tiếp nhận nhiệm vụ, trao đổi thực hiện theo yêu cầu. - Trong quá trình HS làm việc, GV chú ý đến hoạt động của học sinh. - Giáo viên nhận xét, theo dõi, uốn nắn học sinh hình thức viết chương trình trình để thể hiện được tính cấu trúc. * Sản phẩm: - Học sinh hiểu kỹ yêu cầu bài toán, xác định được input và output bài toán. - Thực hiện khai báo dữ liệu cho bài toán. - Biết hàm Random(N) để máy tạo ngẫu nhiên 1 số nguyên dương trong khoảng từ 0 đến N-1.( Người lập trình giới hạn N). - Tổng các phần tử là bội của K(K=2) trong dãy A là 4+12=16. từ đó học sinh phát hiện ra thuật toán tính tổng các phần tử trong dãy là bội của 1 số nguyên dương cho trước, qua đó hiểu được vai trò của vòng lặp For..do...khi duyệt kiểm tra các phần tử mảng. - Học sinh tự sửa được các lỗi cú pháp trong chương trình. Hoạt động 1.2: Chỉnh sửa chương trình để đưa ra số các số âm và số dương trong mảng. *Mục tiêu: Học sinh thấy được sự khác nhau của chương trình 1ª và chương trình 1b: Chương trình 1ª kiểm tra lần lượt các phần tử mảng để cộng tích lũy, còn chương trình 1b thì kiểm tra từng phần tử mảng để tăng biến đếm cho các số âm hay các số dương. * Phương thức: - GV giao nhiệm vụ cho HS: + Cho biết ý nghĩa biến posi, neg? + Vì sao biết được biến posi dùng để đếm số lượng phần tử dương ? Biến neg đếm số lượng phần tử âm? + Đưa các lệnh vào vị trí thích hợp để được chương trình đếm số lượng số âm, số dương trong dãy. - Học sinh tiếp nhận nhiệm vụ, trao đổi thực hiện theo yêu cầu. - Trong quá trình HS làm việc, GV chú ý đến hoạt động của HS - Giáo viên nhận xét. * Sản phẩm: + Học sinh giải thích được mục đích sử dụng biến neg và posi. + Hoàn thiện chương trình đếm số lượng số âm số dương. + Chạy chương trình, quan sát kết quả. + Sửa lỗi cú pháp (nếu có). 2. Hoạt động 2: Tìm hiểu bài 2 * Mục tiêu: Học sinh hiểu được chương trình và thấy được kết quả khi chạy chương trình, qua đó hình thành các kỹ năng cơ bản làm việc với mảng 1 chiều: Khai báo dữ liệu liên quan tới mảng 1 chiều. Kỹ năng nhập các phần tử mảng. Hiểu thuật toán tìm giá trị lớn nhất( nhỏ nhât) cùng với vị trí của nó trong mảng. * Phương thức: - GV giao nhiệm vụ cho HS: + Xác định input và output bài toán 2 sgk/tr64. + Thực hiện phần khai báo cho chương trình. + Thực hiện nhập số lượng và các phần tử mảng. + Cho dãy A: 1; 4; 12; 3; 7; phần tử lớn nhất trong dãy A ? hãy mô phỏng việc chạy doạn chương trình vào giấy nháp? + Yêu cầu học sinh gõ chương trình bài 2a và chạy thử quan sát kết quả. + Xác định vai trò của biến j? + Sử dụng công cụ Debug của pascal để theo dõi sự thay đổi của các biến khi chạy đoạn chương trình tìm max. + Tìm hướng giải quyết cho yêu cầu: Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất? + Chỉnh sửa chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất - Học sinh tiếp nhận nhiệm vụ, trao đổi thực hiện theo yêu cầu. - Trong quá trình HS làm việc, GV chú ý đến hoạt động của học sinh. - Giáo viên nhận xét, theo dõi, uốn nắn học sinh hình thức viết chương trình trình để thể hiện được tính cấu trúc. * Sản phẩm: - Học sinh hiểu kỹ yêu cầu bài toán, xác định được input và output bài toán. - Thực hiện khai báo dữ liệu cho bài toán. - Thực hiện nhập được các phần tử mảng. - Thông qua việc so sánh các giá trị học sinh đưa ra được chỉ số j xác định vị trí phần tử lớn nhất trong dãy. A 1 4 12 7 i 1 2 3 4 j 1 2(A[i]>A[j]) 3(A[i]>A[j]) 3(A[i]<A[j]) từ đó học sinh phát hiện ra thuật toán tìm giá trị lớn nhất : Tại bước lặp thứ i trong câu lệnh for...do , phần tử A[i] được so sánh với A[j], tức là so sánh với phần tử lớn nhất tìm được trong phạm vi các phần tử đã được duyệt qua ở bước ngay trước nó( từ 1->i-1). Biến j luôn giữ chỉ số của phần tử lớn nhất đã tìm được trong phạm vi từ A[1] đến A[i]. - Học sinh sửa câu lệnh: if A[i]>A[j] then j:=i thành : If A[i]>=A[j] then j:=i. để đưa ra màn hình phần tử lớn nhất có chỉ số nhỏ nhất. C. LUYỆN TẬP * Mục tiêu: Vận dụng các kiến thức đã thu được từ các hoạt động 1,2 để luyện tập củng cố kiến thức. * Phương thức: GV giao nhiệm vụ cho HS: (1). sửa lại chương trình ở bài 1- a để có thể nhập dữ liệu từ bán phím. với kích thước mảng gồm tối đa 7 phần tử. (2) Sửa lại chương trình bài 2a để tìm giá trị nhỏ nhất của dãy, nếu có nhiều phần tử cùng giá trị nhỏ nhất thì đưa ra phần tử có vị trí lớn nhất. * Gợi ý sản phẩm: (1) Program Sum1; uses crt; Const nmax=7; Type myarray=array[1..nmax] of interger; Var a:myarray; s,n,i,k:integer; Begin clrscr; Write(‘Nhap so luong phan tu day, n=’); Readln(n); For i:= 1 to n do Begin Write(‘ phan tu thu ‘,i,’ =’); readln(a[i]); end; Write (‘nhap k=’);Readln (k); S:=0; For i:=1 to n do If a[i] mod k = 0 then S:= s+ a[i]; Writeln (‘tong can tinh la: ’,s); Readln End. (2) Program min; Const nmax=100; Type myarray=array[1..nmax] of interger; Var a:myarray; n, i, j:integer; Begin Write(‘Nhap so luong phan tu day, n=’); Readln(n); For i:= 1 to n do Begin Write(‘ phan tu thu ‘,i,’ =’); readln(a[i]); end; j:=1; for i:=2 to n do if a[i]<=a[j] then j:=i; write(‘ chi so:’,j,’ Gia tri:’,a[j]:4); readln end. Lưu ý:- Việc tạo mảng có phần tử là các số ngẫu nhiên tạo điều kiện cho việc chạy chương trình với kích thước mảng tương đối lớn. D. VẬN DỤNG VÀ MỞ RỘNG 1. Mục tiêu: Giúp hoc sinh tự vận dung, tìm tòi mở rộng cá kiến thức trong bài học và tương tác với cộng đồng. Tùy theo năng lực mà các em sẽ thực hiện ở các mức độ khác nhau. 2. Phương thức: - GV giao nhiệm vụ cho HS (học sinh có thể làm bài tập ở nhà): Bài toán: Viết chương trình nhập dãy N số nguyên a1...aN (N<=100). Đếm số lượng số chẵn ở vị trí lẻ trong dãy. 3. Gợi ý sản phẩm: - Học sinh biết cách khai báo mảng 1 chiều, nhập các phần tử mảng. - Duyệt lần lượt các phần tử mảng để kiểm tra phần tử chẵn: A[i] mod 2=0 - Duyệt lần lượt các vị trí i ( i=1->n)của các phần tử mảng để kiểm tra vị trí lẻ: i mod 2 0. - Sử dụng biến đếm để ghi nhận số lượng các phần tử chẵn ở vị trí lẻ, và ghi kết quả ra màn hình. Ngày soạn: Tiết ppct : 28 Chủ đề: BÀI TẬP VÀ THỰC HÀNH 4 I/ Mục tiêu bài học 1. Kiến thức - Củng cố lại các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng. - Làm quen với thuật toán sắp xếp đơn giản. 2. Kĩ năng - Rèn luyện kỹ năng sử dụng kiểu dữ liệu có cấu trúc, kỹ năng diễn đạt thuật toán bằng chương trình sử dụng dữ liệu kiểu mảng. - Rèn luyện kỹ năng nhận xét, phân tích và đề xuất cách giải bài toán sao cho chương trình chạy nhanh hơn. 3.Thái độ - Tự giác, chủ động trong khi thực hành. 4. Định hướng phát triển năng lực - Năng lực giải quyết vấn đề thông qua trao đổi, thảo luận. - Năng lực tự hoc. - Năng lực hợp tác. - Năng lực giao tiếp, sử dụng ngôn ngữ. II. PHƯƠNG PHÁP, THIẾT BỊ, TÀI LIỆU DẠY - HỌC 1. Giáo viên: Phòng máy tính đã cài sẵn chương trình Turbo Pascal hoặc Free Pascal, các chương trình mẫu. 2. Học sinh: - Sách giáo khoa, sách bài tập và bài viết sẵn ở nhà. - Xem trước nội dung bài thực hành số 4. 3. Phương pháp: Gởi mở thông qua hoạt động tư duy. - Dạy học theo quan điểm hoạt động. - Sử dụng máy chiếu, máy tính, cài đặt môi trường NNLT pascal, SGK để minh họa, bảng phụ. III. TIẾN TRÌNH TỔ CHỨC CÁC HOẠT ĐỘNG HỌC TẬP A. HOẠT ĐỘNG TẠO TÌNH HUỐNG HỌC TẬP 1. Mục tiêu: - Củng cố cho học sinh những hiểu biết về kiểu dữ liệu mảng 1 chiều: Khai báo mảng, nhập các phần tử mảng từ bàn phím, nhập ngẫu nhiên các phần tử mảng. - Củng cố lại thuật toán sắp xếp dãy số đã học. 2. Phương thức: # GV giao nhiệm vụ cho HS: (1) Các cách khai báo mảng 1 chiều. (2) Cách nhập dữ liệu cho mảng từ bàn phím? (3) Cách nhập ngẫu nhiên các phần tử mảng? (4) Cho dãy A: 1;3; 12;6 ; 4; 8 hãy mô phỏng thuật toán sắp xếp bằng tráo đổi trên dãy A để được dãy không giảm? (5) Đếm số lần thực hiện tráo đổi trên dãy A. # Học sinh suy nghĩ, trao đổi thực hiện theo yêu cầu. - Trong quá trình HS làm việc, GV chú ý đến hoạt động của HS - Giáo viên nhận xét. 3. Gợi ý sản phẩm: Mỗi HS có thể trình bày sản phẩm với các mức độ khác nhau, GV lựa chọn một câu trả lời nào đó của HS để làm tình huống kết nối vào bài thực hành: Cài đặt chương trình giải quyết bài toán sắp xếp bằng Pascal... B. HOẠT ĐỘNG KIẾN THỨC HÌNH THÀNH 1. Hoạt động 1: Tìm hiểu bài tập 1 * Mục tiêu: Học sinh hiểu được chương trình và thấy được kết quả khi chạy chương trình, qua đó hình thành các kỹ năng cơ bản làm việc với mảng 1 chiều: Khai báo dữ liệu liên quan tới mảng 1 chiều. Sắp xếp các phần tử của dãy bằng thuật toán tráo đổi. Đếm số các phần tử thỏa mãn điều kiện. Hoạt động 1.1: Tìm hiểu chương trình bài 1-a/sgk-tr65-66. Mục tiêu: -Học sinh hiểu chương trình làm việc với mảng 1 chiều có sử dụng bộ sinh số ngẫu nhiên. - Hiếu được thuật toán sắp xếp dãy số bằng tráo đổi. * Phương thức: - GV giao nhiệm vụ cho HS: + Xác định input và output bài toán 1-a sgk/tr65-66. + Thực hiện phần khai báo cho chương trình. + Tìm hiểu hàm random(N), thủ tục Randomize. + Yêu cầu học sinh gõ chương trình bài 1-a và chạy thử quan sát kết quả. + Lưu lại chương trình câu a. + Cho biết vai trò của biến i, j trong chương trình? + Xác định đoạn chương trình thực hiện tráo đổi? + Làm thế nào để đếm số lần thực hiện tráo đổi? + Quan sát chương trình và cho biết đoạn lệnh nào thể hiện 1 lần tráo đổi giá trị 2 phần tử liền kề của mảng? - Học sinh tiếp nhận nhiệm vụ, trao đổi thực hiện theo yêu cầu. - Trong quá trình HS làm việc, GV chú ý đến hoạt động của học sinh. - Giáo viên nhận xét, theo dõi, uốn nắn học sinh hì

Các file đính kèm theo tài liệu này:

  • docBai 11 Kieu mang_12529656.doc