-GV: Đặt vấn đề “Giả sử để lưu nhiều dữ liệu có liên quan với nhau bằng một tên biến duy nhất, đánh số thứ tự cho các giá trị đó, sử dụng qui luật tăng giảm của số thứ tự và vài câu lệnh[r]
(1)Trường THCS Đoàn Giỏi-Năm học: 2009-2010 Tuaàn 31 Tieát: 61, 62 GV: Phaïm Taán Phaùt Ngày soạn: Ngaøy daïy: Bài 9: Làm việc với dãy số I./ Muïc ñích yeâu caàu: -Về kiến thức: + Hs biết khái niệm mảng + Hs hiểu thuật toán tìm số lớn dãy + Hs hiểu thuật toán tìm nhỏ dãy -Về kỹ năng: + Hs biết cách khai báo mảng, nhập, in, truy cập các phần tử mảng + Hs viết đoạn chương trình có sử dụng biến mảng bài toán đơn giản -Về thái độ: tích cực tìm hiểu cách làm việc với dãy, cẩn thận viết chương trình II./ Chuaån bò: - GV: Máy chiếu, máy tính - HS: Sgk, chuẩn bị trước bài “Làm việc với dãy số” III./ Löu yù sö phaïm: - GV chuẩn bị ví dụ thực tế tổ chức thông tin dạng dãy số, mô hình và tính ứng dụng dãy số IV./ Kieåm tra baøi cuõ: (5 phuùt) -GV yêu cầu hs lên trả lời các câu hỏi 1./ Viết câu lệnh lặp với số lần xác định và số lần chưa biết trước? 2./ Chạy bước câu lệnh lặp và cho biết giá trị biến A thực xong đoạn chương trình sau ? A:= 0; i:= 3; While i<=7 Begin A:=A+i*i+(i+1)*(i+1); i:=i+2; end; -GV nhận xét và cho điểm, nhận xét quá trình chuẩn bị nhà bài “Làm việc với dãy số” V./ Dạy học bài mới: Hoạt động giáo viên Hoạt động hs HĐ1 : Dãy số và biến mảng (20 phút) -GV: Yêu cầu hs đọc sgk/75, nhận xét và trả lời : 1./ Để nhập điểm cho nhiều hs ta phải sử dụng nhiều biến, em liệt kê khó khăn phải sử dụng nhiều biến có cùng tên và cùng kiểu liệu để nhập điểm cho nhiều học sinh? 2./ Có cách nào giải vấn đề trên không? Em hiểu nào vấn đề vừa nêu ? Noäi dung baøi hoïc Dãy số và biến mảng: *VD1/ sgk75 -GV: Nhấn mạnh các ý: + “Khai báo và nhập liệu câu lệnh tương ứng với điểm HS” + Số học sinh càng nhiều thì đoạn khai báo và đọc liệu càng dài +Việc so sánh các điểm đã nhập còn khó khăn Trang Lop8.net (2) Trường THCS Đoàn Giỏi-Năm học: 2009-2010 +Ta cần nhớ hết tên các biến đã khai báo lập trình và khó tránh khỏi nhầm lẫn, sai sót -GV: Đặt vấn đề “Giả sử để lưu nhiều liệu có liên quan với tên biến nhất, đánh số thứ tự cho các giá trị đó, sử dụng qui luật tăng giảm số thứ tự và vài câu lệnh lặp để xử lý liệu cách đơn giản hơn” Để giải các vấn đề trên hầu hết các ngôn ngữ lập trình có kiểu liệu gọi là kiểu mảng Dữ liệu kiểu mảng là tập hợp hữu hạn các phần tử có thứ tự, phần tử có cùng kiểu liệu, gọi là kiểu phần tử Việc thứ tự thực cách gán cho phần tử số -GV: Var Diem_1, Diem_2, Diem_3, … : real; Read (Diem_1) ; Read (Diem_2) ; Read (Diem_3) ; … -GV: có thể sử dụng quy luật tăng hay giảm “số thứ tự” và vài câu lệnh lặp để xử lí liệu cách đơn giản: + Với i = đến 100: Hãy nhập Diem_i; + Với i = đến 100: Hãy so sánh Max với Diem_i; HĐ2 : Ví dụ biến mảng (40 phút) - GV nhận xét : + Cách khai báo biến mảng các ngôn ngữ lập trình có thể khác nhau, luôn cần rõ: tên biến mảng, số lượng phần tử, kiểu liệu chung các phần tử + Dùng câu lệnh lặp, có thể thay nhiều câu lệnh nhập và in liệu màn hình GV: Phaïm Taán Phaùt * Dữ liệu kiểu mảng: Là tập hợp hữu hạn các phần tử có thứ tự, phần tử có cùng kiểu liệu gọi là kiểu phần tử Việc xếp thứ tự thực cách gán cho phần tử số: + Biến mảng thực chất là các biến có cùng tên khác số và cùng kiểu liệu + Giá trị biến mảng là mảng Ví dụ biến mảng: *VD/sgk76: Var chieucao:array[1 50] of real; Var Tuoi:array[21 80] of integer; *Cách khai báo mảng trongPascal: Tên_mảng : array [<chỉ số đầu> <chỉ số cuối>] of <kiểu liệu >; Trong đó: + Chỉ số đầu và số cuối: là số nguyên biểu thức nguyên (Chỉ số đầu số cuối ); + Để so sánh điểm HS với giá trị nào đó, ta cần câu lệnh lặp + Kiểu liệu: integer real * VD2/sgk76 - Khai báo biến mảng Diem sau: + Để xử lí đồng thời các loai điểm môn học, ta có thể khai báo nhiều mảng Var Diem : array [1 50] of real; - Dựng câu lệnh lặp + Khi mảng đó khai báo, có thể làm việc với các phần tử nó như: gán giá trị, đọc giá trị và thực các tính toán với các giá trị đó -GV hướng dẫn hs tìm hiểu lại thuật toán tìm giá trị lớn nhất, nhỏ dãy số nguyên(học Bài ) -GV giải thích thuật toán tìm giá trị lớn dãy số nguyên … Sau đó cho HS nhắc lại +Cho HS thảo luận, chỉnh sửa thuật toán trên để tỡm số nhỏ For i:= to 50 readln( Diem [ i ]); - Để so sánh điểm HS với giá trị nào đó For i:= to 50 If Diem[i]>8.0 then writeln (‘Gioi’); - Để xử lí đồng thời các loai điểm => khai báo nhiều mảng: Var DiemToan : array [1 50] of real; Var DiemVan : array [1 50] of real; Var DiemLi : array [1 50] of real; Hoặc: Trang Lop8.net (3) Trường THCS Đoàn Giỏi-Năm học: 2009-2010 GV: Phaïm Taán Phaùt Var DiemToan, DiemVan, DiemLi : array [1 50] of real; - Khi mảng đó khai báo, có thể : gán giá trị, đọc giá trị và thực các tính toán với các giá trị đó.A[1]:=5; A[2]:= 8; nhập liệu từ bàn phím câu lệnh: For i:= to readln ( A [ i ] ); HĐ3 : Tìm giá trị lớn và nhỏ dãy số (15 phút) -GV cho HS đọc ví dụ 3: + Để nhập các số nguyên nhập vào, trước hết phải làm gì ? +Sau khai báo N, biến lưu các số nhập vào là các phần tử biến mảng A Ngoài ra, cần khai báo thêm các biến nào ? -GV:Trình bày phần khai báo chương trình … + HS: …trước hết ta khai báo biến N - HS đọc ví dụ + Cần khai báo thờm biến i làm biến đếm cho các lệnh lặp, biến Max và Min để lưu số lớn nhất, - HS theo dõi nhỏ HĐ4: Cuûng coá, daën doø: (10 phuùt) -GV: Hãy nêu lợi ích việc sử dụng biến mảng chương trình? -GV: Trả lời các câu hỏi 2,3/sgk79 -GV: BTVN 4,5/sgk79, xem và học bài “Làm việc với dãy số” V./ Ruùt kinh nghieäm tieát daïy Trang Lop8.net 3./ Tìm giá trị lớn và nhỏ dãy số: -Tìm giá trị lớn ( Max ) dãy số nguyên nhập từ bàn phím + Thuật toán Bước 1: Nhập N và dóy A1, … , An; Bước 2: Max A1; Bước 3: Với i từ đến N thực hiện: Nếu Max < A1 thử Max Ai; Bước 4: Đưa màn hình giá trị Max kết thúc Ví dụ 3: (SGK)/ Tr 78 Chương trình minh họa: Program MaxMin; Uses crt; Var i, n, Max, Min : integer; A : array [1 100] of integer; {Phần thân chương trỡnh tương tự đây:} Begin Clrscr; Write(‘Hay nhap dai day N = ‘); readln (n); writeln(‘Nhap cac pt day so:’); For i:= to n Begin write( ‘a[‘,i,’] = ‘); readln(a[i]); end; Max:= a[1]; Min:= a[1]; For i:= to n Begin if Max < a[i] then Max:= a[ i ]; if Min < a[ i ] then Min:= a[ i ]; end; write (‘So lon nhat la Max =‘ Max); write (‘So nho nhat la Min =‘ Min); readln (n); End (4)