Trường THCS Nhơn Phú Năm học: 2014 - 2015 Tiết: 44 Ngày soạn: 27/01/2015 Ngày dự: 30/01/2015 BÀI 9. LÀM VIỆC VỚI DÃY SỐ (tiết 3) I. MỤC TIÊU: 1. Kiến thức: − Biết cách khai báo mảng, nhập phần tử của mảng và in chúng ra màn hình. − Hiểu thuật toán tìm số lớn nhất nhỏ nhất của một dãy số. − Ôn luyện các cách sử dụng câu lệnh lặp for … do. − Hiểu và ứng dụng được thuật toán tìm số lớn nhất, số nhỏ nhất của một dãy số. − Hứng thú với học lập trình, yêu thích ngôn ngữ lập trình Pascal. 2. Kỹ năng: − Biết cách khai báo mảng và sử dụng biến mảng. − Cũng cố khả năng đọc hiểu và sửa lỗi các chương trình trong Pascal. − Vận dụng được cấu trúc dãy số trong các tình huống cụ thể. − Rèn luyện kĩ năng tìm giá trị lớn nhất và giá trị nhỏ nhất của dãy số 3. Thái độ: − Hiểu được tầm quan trọng của việc khai báo biến mảng trong giải quyết các bài toán dãy số. − Nghiêm túc trong học tập, có tinh thần hay say phát biểu xây dựng bài, tích cực nghiên cứu tài liệu có liên quan … II. CHUẨN BỊ: 1. Chuẩn bị của giáo viên: − Giáo án, sách giáo khoa, hình ảnh minh hoạ, nghiên cứu tài liệu − Phương án dạy học: Giải quyết vấn đề, vấn đáp, hoạt động nhóm 2. Chuẩn bị của học sinh: − Bút , sách, vở ghi, học bài trước khi đến lớp, xem trước nôi dung bài mới… III. HOẠT ĐỘNG DẠY HỌC: 1. Ổn định tình hình lớp: (1’) − Kiểm tra sĩ số, nề nếp lớp học 2. Kiểm tra bài cũ: (4’) − Câu hỏi: ? Dữ liệu kiểu mảng là gì?. Hãy cho biết cách khai báo mảng trong Pascal. − Trả lời: + Dữ liệu kiểu mảng: là 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ố. + Cách khai báo mảng trong Pascal: var <tên mảng>: array[<chỉ số đầu> <chỉ số cuối>] of <kiểu dữ liệu>; 3. Giảng bài mới: Giáo án tin học 8 Trang 1 Trường THCS Nhơn Phú Năm học: 2014 - 2015 − Gới thiệu bài mới: ( 1’) Trong tiết trước chúng ta đã tìm hiểu khái niệm dữ liệu kiểu mảng, biết cách khai báo mảng trong ngôn ngữ lập trình Pascal và biết cách truy cập vào các phần tử của mảng. Trong tiết này chúng ta sẽ tìm hiểu thuật toán tìm giá trị lớn nhất, giá trị nhỏ nhất của một dãy số. − Tiến trình bài dạy: Thời gian Hoạt động của giáo viên Hoạt động của học sinh Nội dung 33’ HĐ1: Tìm giá trị lớn nhất của dãy số 3. Tìm giá trị lớn nhất của dãy số Ví dụ 1: Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số lớn nhất và nhỏ nhất. Tìm Input, Output của bài toán? Để dễ hiểu hơn về thuật toán bài này chúng ta sẽ tìm hiểu thuật toán của bài tìm giá trị lớn nhất. yêu cầu HS xác định lại Input và Output của bài toán. Giáo viên nhận xét và giải thích thuật toán này và cho ví dụ minh hoạ. Cả lớp cùng đọc đề và xác định Input và Output của bài toán. - HS suy nghĩ và phát biểu. Input: • Dãy A gồm các số a1, a2, …, an (n ≥ 1). Output: • Số lớn nhất trong dãy a1, a2,…, an. (max=max{a1, a2, … an}. Thuật toán: Bước 1:MAX:= a1; i:=1 Bước 2:Nếu a i > MAX, MAX:= a i . Bước 3: i:= i+1 Bước 4: Nếu i<= N thì quay lại bước 2. Bước 5: Thông báo giá trị MAX và kết thúc Ví dụ 4(SGK trang 76) - Input: Số nguyên N N số nguyên a1, a2, …, an (n ≥ 1). - Output: Số lớn nhất và nhỏ nhất trong dãy a1, a2, …, an. Bài toán: Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số lớn nhất. Bài tập 1: Cho dãy số như hình vẽ dưới đây, hãy thực hiện các bước của thuật toán để tìm ra số lớn nhất N=7 Giáo án tin học 8 Trang 2 Trường THCS Nhơn Phú Năm học: 2014 - 2015 - Em nào có thể xác định các biến, kiểu biến và viết khai báo biến? - Đối với chương trình này trước hết ta khai báo biến N để nhập các số nguyên sẽ được nhập vào từ bàn phím. Sau 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 một biến I làm biến đếm cho vòng lặp và biến Max để lưu giá trị lớn nhất, min để lưu giá trị nhỏ nhất. - Giải thích rõ ý nghĩa từng câu lệnh cho hoc sinh hiểu -Trong chương trình này, chúng ta hãy lưu ý một số điểm sau: Số tối đa các phần tử của mảng phải được khai báo bằng một số cụ thể (Ở đây là 100) thuật toán. Var i, n, Max : Integer; A : array[1 100] of integer; Dãy A 5 3 4 7 6 15 9 i 1 2 3 3 5 6 7 i>n ? s s s s s s s Ai>Max s s s đ s đ s Max 5 5 5 7 7 15 15 Chương trình tìm số lớn nhất, nhỏ nhất cảu dãy số. Program Max_Min; Uses crt; Var n,I,max,min: integer; A : array[1 100] of ineteger; begin clrscr; write('Hay nhap do dai cua day so, = '); readln(n); writeln('Nhap cac phan tu cua 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 Giáo án tin học 8 Trang 3 Trường THCS Nhơn Phú Năm học: 2014 - 2015 = ',Min); readln; end. 5’ HĐ2: Cũng cố Qua tiết học này HS cần nắm rõ các nội dung sau: + Thuật toán tìm số lớn nhất và nhỏ nhất của dãy số. + Từ thuật toán đó để viết đúng chương trình Bài 1: Các lệnh khai báo biến mảng trong Pascal sau đây đúng hay sai? Hãy giải thích. A. Sai, vì thừa một dấu chấm. (Giữa chỉ số đầu và chỉ số cuối là dấu ) B. Sai, vì n phải là số cụ thể. (Chỉ số phải là số cụ thể). C. Đúng D. Sai, vì chỉ số đầu phải nhỏ hơn hoặc bằng chỉ số cuối E. Sai, vì các chỉ số phải viết trong ngoặc vuông. Bài 2: Câu lệnh điều kiện nào sau đây tìm giá trị lớn nhất của dãy số? A. If Max > a[i] then Max :=a[i] ; B. If Max >= a[i] then Max :=a[i] ; C. If Max = a[i] then Max :=a[i] ; D. If Max < a[i] then Max :=a[i] ; Lắng nghe 4. Dặn dò học sinh chuẩn bị tiết học tiếp theo: (1’) - Chuẩn bị bài mới: Xem nội dung bài thực hành 7: “Xử lý dãy số trong chương trình” - Làm các bài tập: 2; 5 trang 78 SGK. IV. RÚT KINH NGHIỆM, BỔ SUNG: Giáo án tin học 8 Trang 4 Trường THCS Nhơn Phú Năm học: 2014 - 2015 Quy Nhơn, ngày … tháng … năm 2015 Quy Nhơn, ngày … tháng … năm 2015 GVHD GSTT Giáo án tin học 8 Trang 5