Kiến thức: Củng cố những hiểu biết về kiểu dữ liệu mảng; Cung cấp cho học sinh ba thuật toán cơ bản và đơn giản thường gặp với kiểu dữ liệu mảng là: Tính tổng các phần tử thỏa mãn đi
Trang 1Tuần: 21 Tiết: 23 -Ngày soạn: 10/2/2008
Ngày dạy: Lớp:
Chương IV: Kiểu dữ liệu có cấu trúc
Bài tập và thực hành 3
I Mục đích, yêu cầu:
1 Kiến thức:
Củng cố những hiểu biết về kiểu dữ liệu mảng;
Cung cấp cho học sinh ba thuật toán cơ bản và đơn giản thường gặp với kiểu dữ liệu mảng là: 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 nào đó và tìm phần tử lớn nhất (hay nhỏ nhất) của mảng;
Giới thiệu hàm random(N) cho học sinh thấy có thể dùng lệnh để máy lấy ngẫu nhiên
một số nguyên trong khoảng từ 0 đến N-1
2 Kỹ năng: Rèn luyện cho học sinh các kĩ năng cơ bản làm việc với kiểu mảng trong
lập trình như:
Khai báo kiểu dữ liệu mảng;
Nhập dữ liệu cho mảng, đưa ra màn hình chỉ số và giá trị các phần tử của mảng;
Duyệt qua tất cả các phần tử của mảng để xử lí từng phần tử
3 Thái độ:
Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình
II Phương pháp - phương tiện dạy học:
Thực hành, thực hiện minh họa trực quan, quan sát và hướng dẫn;
Giáo viên chuẩn bị: Giáo án, phòng máy nối mạng LAN, cài đặt Turbo Pascal; Netop school; chương trình mẫu lưu trên máy server để HS tìm hiểu; máy chiếu; laptop;
Học sinh chuẩn bị: Đọc trước nội dung bài, sách giáo khoa, vở ghi
III NộI dung dạy – học:
Ổn định lớp;
Ghi sổ đầu bài
Chào thầy
Cán bộ lớp báo sĩ số
Bài 1: Tạo mảng A gồm n (n≤100)
số nguyên, mỗi số có giá trị tuyệt
đối không vượt quá 300 Tính
tổng các phần tử của mảng là bội
số của một số nguyên dương k
cho trước
a) Tìm hiểu và chạy thử
chương trình sau:
Program Sum1;
Uses crt;
Const nmax=100;
Type Mang1=array[1 nmax] of
integer;
Var A: Mang1;
s, n, i, k: integer;
Begin
Clrscr; randomize;
Quan sát, hướng dẫn HS khởi động máy tính
Quan sát, hướng dẫn HS khởi động TP
Nêu nội dung công việc trong tiết thực hành: Thực hiện bài 1
Yêu cầu HS thực hiện gõ chương trình theo mẫu trong câu a) trang 63_sgk
Quan sát và hướng dẫn
Giải thích: hàm random(n) là lệnh
yêu cầu máy tính lấy ngẫu nhiên một số nguyên trong phạm vi từ 0
đến n-1; thủ tục randomize để
khởi tạo cơ chế sinh số ngẫu
Khởi động máy tính Khởi động TP
Gõ chương trình
Chú ý, quan sát, lắng nghe
Trang 2Nội dung bài giảng Hoạt động của thầy Hoạt động của trò
Write(‘Nhap n= ‘); readln(n);
For i:=1 to n do A[i]:=
random(300) – random(300);
For i:=1 to n do write(A[i]:5);
Writeln;
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
nhiên
Thực hiện minh họa thao tác lưu chương trình
Đường dẫn\tên_bài.pas
Quan sát và hướng dẫn HS nhận biết và sửa lỗi chương trình
Quan sát và hướng dẫn HS chạy thử chương trình
Nhớ lưu chương trình trước khi sang câu b)
Thực hiện lưu chương trình
Nhận biết và sử lỗi chương trình
Chạy thử chương trình
Ấn F2.
b) Hãy đưa những câu lệnh sau
vào những vị trí cần thiết nhằm
sửa chương trình trong câu a) để
có được chương trình đưa ra số
các số dương và số các số âm
trong mảng
(1) posi, neg: integer;
(2) posi := 0; neg := 0;
(3) If A[i] > 0 then posi := posi + 1
(4)else if A[i]<0 then neg:=neg+1;
(5) Writeln(posi:5, neg:5);
Hướng dẫn:
(1) Khai báo 2 biến chứa số
lượng phần tử dương và âm;
(2) Khởi tạo giá trị cho các biến;
(3) Đếm số phần tử dương trong
mảng;
(4) Đếm số phần tử âm trong
mảng;
(5) Xuất kết quả ra màn hình
HD học sinh lưu chương trình ở câu a) với tên khác sau đó thực hiện câu theo yêu cầu ở câu b) Gọi HS nêu các vị trí đặt các câu lệnh tương ứng vào chương trình
để có được CT theo đề ra?
Nhận xét, chốt lại phương án đúng kết hợp giải thích để HS hiểu
Quan sát và hướng dẫn HS thực hiện
Chú ý, quan sát, lắng nghe
Xung phong trả lời Nhận xét, bổ sung
Chú ý lắng nghe
Thực hiện sửa chương trình theo đề
ra và chạy thử CT
Ấn F2 để lưu CT;
Ấn tổ hợp Alt + X
Có thể bỏ khai báo hằng nmax được không? Nếu được phải sửa đổi chỗ nào?
Chỉ ra những dòng lệnh tạo ra mảng A?
Ý nghĩa của lệnh gán: A[i] := random(300) – random(300);
Ý nghĩa của biến posi và neg? Vì sao biết được biến nào để đếm số phần tử dương
và biến nào để đếm số phần tử âm trong mảng?
Xem trước nội dung câu 2 của bài thực hành 3; Tiết sau tiếp tục thực hành bài này
VI Rút kinh nghiệm:
Trang 3
Tuần: 21 Tiết: 24 -Ngày soạn: 12/2/2008
Ngày dạy: Lớp:
Chương IV: Kiểu dữ liệu có cấu trúc
Bài tập và thực hành 3 (tt)
I Mục đích, yêu cầu:
1 Kiến thức:
Củng cố những hiểu biết về kiểu dữ liệu mảng;
Cung cấp cho học sinh ba thuật toán cơ bản và đơn giản thường gặp với kiểu dữ liệu mảng là: 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 nào đó và tìm phần tử lớn nhất (hay nhỏ nhất) của mảng;
Giới thiệu hàm random(N) cho học sinh thấy có thể dùng lệnh để máy lấy ngẫu nhiên
một số nguyên trong khoảng từ 0 đến N-1
2 Kỹ năng: Rèn luyện cho học sinh các kĩ năng cơ bản làm việc với kiểu mảng trong
lập trình như:
Khai báo kiểu dữ liệu mảng;
Nhập dữ liệu cho mảng, đưa ra màn hình chỉ số và giá trị các phần tử của mảng;
Duyệt qua tất cả các phần tử của mảng để xử lí từng phần tử
3 Thái độ:
Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình
II Phương pháp - phương tiện dạy học:
Thực hành, thực hiện minh họa trực quan, quan sát và hướng dẫn;
Giáo viên chuẩn bị: Giáo án, phòng máy nối mạng LAN, cài đặt Turbo Pascal; Netop school; chương trình mẫu lưu trên máy server để HS tìm hiểu; máy chiếu; laptop;
Học sinh chuẩn bị: Đọc trước nội dung bài, sách giáo khoa, vở ghi
III NộI dung dạy – học:
Ổn định lớp;
Ghi sổ đầu bài
Chào thầy
Cán bộ lớp báo sĩ số
Bài 2: Viết chương trình tìm phần
tử có giá trị lớn nhất của mảng và
đưa ra màn hình chỉ số và giá trị
của phần tử tìm được 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
a) Tìm hiểu chương trình sau:
Program Max;
Const nmax=100;
Type Mang1=array[1 nmax] of
integer;
Var A: Mang1;
n, i, j: integer;
Begin
Write(‘Nhap so phan tu n= ‘);
Readln(n);
Quan sát, hướng dẫn HS khởi động máy tính
Quan sát, hướng dẫn HS khởi động TP
Nêu nội dung công việc trong tiết thực hành: Thực hiện bài 2
Yêu cầu HS thực hiện gõ chương trình theo mẫu trong câu a) trang 64_sgk
Quan sát và hướng dẫn
Quan sát và hướng dẫn HS nhận biết và sửa lỗi chương trình
Khởi động máy tính Khởi động TP
Gõ chương trình
Thực hiện lưu chương trình
Nhận biết và sử lỗi chương trình
Trang 4Nội dung bài giảng Hoạt động của thầy Hoạt động của trò
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]);
Readln
End
Quan sát và hướng dẫn HS chạy thử chương trình và kiểm tra kết quả
HD: Thực hiện thử CT trên giấy nháp trước khi chạy trên máy để
dễ dàng kiểm tra kết quả
Thực hiện minh họa cách theo dõi giá trị của biến bằng công cụ Dubeg
Nhớ lưu chương trình trước khi sang câu b)
Chạy thử chương trình và kiểm tra kết quả
Chú ý quan sát, lắng nghe sau đó thực hiện
Ấn F2.
b) Chỉnh sửa chương trình trên
để đưa ra chỉ số của các phần tử
có cùng giá trị lớn nhất
Hướng dẫn theo chương trình
Program Max;
Const nmax=100;
Type Mang1=array[1 nmax] of
integer;
Var A: Mang1;
n, i, j: integer;
Begin
Write(‘Nhap so phan tu 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;
For i:=1 to n do if A[i]=A[j] then
Write(i:5);
Writeln;
Write(‘Gia tri: ‘,A[j]);
Readln
End
Yêu cầu HS lưu chương trình ở câu a) với tên khác sau đó thực hiện câu theo yêu cầu ở câu b) Gọi HS nêu phương án chỉnh sửa chương trình theo đề ra?
Nhận xét, chốt lại phương án đúng kết hợp giải thích để HS hiểu
Quan sát và hướng dẫn HS thực hiện
Nêu cách sửa chương trình để tìm phần tử nhỏ nhất?
Nhận xét, kết luận và yêu cầu HS sửa lại và chạy thử chương trình
Chú ý, quan sát, lắng nghe rồi thực hiện
Xung phong trả lời Nhận xét, bổ sung
Chú ý lắng nghe
Thực hiện sửa chương trình theo đề
ra và chạy thử CT Xung phong trả lời Lắng nghe
Sửa chương trình theo yêu cầu của giáo viên và chạy thử
Ấn F2 để lưu CT Thoát khỏi TP
Có thể bỏ khai báo hằng nmax được không? Nếu được phải sửa đổi chỗ nào?
Chỉ ra những dòng lệnh nhập mảng A?
Nêu cách thay câu lệnh tạo mảng ngẫu nhiên cho các lệnh nhập mảng;
Nêu ý nghĩa của đoạn lệnh:
j := 1;
For i:=2 to n do if A[i]>A[j] then j := i;
Xem trước nội dung của bài thực hành 4; Tiết sau thực hành bài này
VI Rút kinh nghiệm: