I./ Muïc ñích yeâu caàu:
-Về kiến thức:
+ Hs biết được khái niệm mảng
+ Hs hiểu được thuật toán tìm số lớn nhất của dãy
+ Hs hiểu được thuật toán tìm nhỏ nhất của 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ử của mảng
+ Hs viết được đ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 khi 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 9 “Làm việc với dãy số”
Tuaàn 31 Ngaøy soaïn: Tieát: 61, 62 Ngaøy daïy: Baøi 9: Laøm vieäc vôùi daõy soá I./ Muïc ñích yeâu caàu: -Về kiến thức: + Hs biết được khái niệm mảng + Hs hiểu được thuật toán tìm số lớn nhất của dãy + Hs hiểu được thuật toán tìm nhỏ nhất của 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ử của mảng + Hs viết được đ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 khi 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 9 “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ế về tổ chức thông tin dạng dãy số, mô hình và tính ứng dụng của dãy số IV./ Kieåm tra baøi cuõ: (5 phuùt) -GV yêu cầu 1 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 từng bước câu lệnh lặp và cho biết giá trị của biến A khi thực hiện xong đoạn chương trình sau ? A:= 0; i:= 3; While i<=7 do 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 9 “Làm việc với dãy số”. V./ Daïy hoïc baøi môùi: Hoaït ñoäng cuûa giaùo vieân Hoaït ñoäng cuûa hs Noäi dung baøi hoïc 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ê những khó khăn khi phải sử dụng nhiều biến có cùng tên và cùng kiểu dữ liệu để nhập điểm cho nhiều học sinh? 2./ Có cách nào giải quyết vấn đề trên không? Em hiểu như thế nào về vấn đề vừa nêu ? -GV: Nhấn mạnh các ý: + “Khai báo và nhập dữ liệu mỗi câu lệnh tương ứng với điểm của một HS” + Số học sinh càng nhiều thì đoạn khai báo và đọc dữ liệu càng dài. +Việc so sánh các điểm đã nhập còn khó khăn hơn +Ta cần nhớ hết tên các biến đã khai báo trong khi lập trình và rất khó tránh khỏi nhầm lẫn, sai sót. -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 lặp để xử lý dữ liệu một cách đơn giản hơn”. èĐể giải quyết các vấn đề trên hầu hết các ngôn ngữ lập trình đều có một kiểu dữ liệu gọi là kiểu mảng. èDữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có cùng một kiểu dữ liệu, gọi là kiểu của phần tử. Việc sắp thứ tự được thực hiện bằng cách gán cho mỗi phần tử một chỉ 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 của “số thứ tự” và một vài câu lệnh lặp để xử lí dữ liệu một cách đơn giản: + Với i = 1 đến 100: Hãy nhập Diem_i; + Với i = 1 đến 100: Hãy so sánh Max với Diem_i; HĐ2 : Ví dụ về biến mảng (40 phút) - GV nhận xét : + Cách khai báo biến mảng trong các ngôn ngữ lập trình có thể khác nhau, nhưng luôn cần chỉ rõ: tên biến mảng, số lượng phần tử, kiểu dữ liệu chung của các phần tử. + Dùng một câu lệnh lặp, có thể thay rất nhiều câu lệnh nhập và in dữ liệu ra màn hình + Để so sánh điểm của mỗi HS với một giá trị nào đó, ta cũng chỉ cần một câu lệnh lặp + Để xử lí đồng thời các loai điểm của từng môn học, ta có thể khai báo nhiều mảng + Khi một mảng đó được khai báo, có thể làm việc với các phần tử của nó như: gán giá trị, đọc giá trị và thực hiện 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ỏ nhất của dãy số nguyên(học ở Bài 5 ). -GV giải thích về thuật toán tìm giá trị lớn nhất của 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 ra số nhỏ nhất. HĐ3 : Tìm giá trị lớn nhất và nhỏ nhất của dãy số (15 phút) -GV cho HS đọc ví dụ 3: + Để nhập các số nguyên sẽ được nhập vào, trước hết phải làm gì ? +Sau khi khai báo N, biến lưu các số được nhập vào như là các phần tử của một biến mảng A. Ngoài ra, cần khai báo thêm các biến nào nữa ? -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. + 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, nhỏ nhất. - HS đọc ví dụ 3. - HS theo dõi 1. Dãy số và biến mảng: *VD1/ sgk75 * Dữ liệu kiểu mảng: Là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có cùng một kiểu dữ liệu gọi là kiểu của phần tử. Việc sắp xếp thứ tự thực hiện bằng cách gán cho mỗi phần tử một chỉ số: + Biến mảng thực chất là các biến có cùng tên khác chỉ số và cùng kiểu dữ liệu + Giá trị của biến mảng là một mảng 2. Ví dụ về 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 [.. ] of ; Trong đó: + Chỉ số đầu và chỉ số cuối: là 2 số nguyên hoặc biểu thức nguyên (Chỉ số đầu £ chỉ số cuối ); + Kiểu dữ liệu: integer hoặc real * VD2/sgk76. - Khai báo biến mảng Diem như sau: Var Diem : array [1..50] of real; - Dựng một câu lệnh lặp For i:= 1 to 50 do readln( Diem [ i ]); - Để so sánh điểm của mỗi HS với một giá trị nào đó For i:= 1 to 50 do 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: Var DiemToan, DiemVan, DiemLi : array [1..50] of real; - Khi một mảng đó được khai báo, có thể : gán giá trị, đọc giá trị và thực hiện các tính toán với các giá trị đó.A[1]:=5; A[2]:= 8; hoặc nhập dữ liệu từ bàn phím bằng câu lệnh: For i:= 1 to 5 do readln ( A [ i ] ); 3./ Tìm giá trị lớn nhất và nhỏ nhất của dãy số: -Tìm giá trị lớn nhất ( Max ) của 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ừ 2 đến N thực hiện: Nếu Max < A1 thử Max ¬ Ai; Bước 4: Đưa ra màn hình giá trị Max rồi 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 sẽ tương tự dưới đây:} Begin Clrscr; Write(‘Hay nhap do dai day N = ‘); readln (n); writeln(‘Nhap cac pt day so:’); For i:= 1 to n do Begin write( ‘a[‘,i,’] = ‘); readln(a[i]); end; Max:= a[1]; Min:= a[1]; For i:= 2 to n do 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. HĐ4: Cuûng coá, daën doø: (10 phuùt) -GV: Hãy nêu lợi ích của việc sử dụng biến mảng trong 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 9 “Làm việc với dãy số” V./ Ruùt kinh nghieäm tieát daïy
Tài liệu đính kèm: