Kiến thức Củng cố cho học sinh những kiến thức đã có khi lập trình với kiểu dữ liệu mảng; Củng có thuật toán sắp xếp các phần tử của một dãy bằng tráo đổi; 2.. Kỹ năng Củng cố kỹ n
Trang 1Tuần: 22 Tiết: 25 -Ngày soạn: 16/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 4
I Mục đích, yêu cầu:
1 Kiến thức
Củng cố cho học sinh những kiến thức đã có khi lập trình với kiểu dữ liệu mảng;
Củng có thuật toán sắp xếp các phần tử của một dãy bằng tráo đổi;
2 Kỹ năng
Củng cố kỹ năng đã có khi lập trình với kiểu dữ liệu mảng;
Rèn luyện 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;
3 Thái độ
Rèn luyện cho học sinh ý thức cần có của người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể được;
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
a) Hãy tìm hiểu và chạy thử
chương trình thực hiện thuật toán
sắp xếp dãy số nguyên bằng thuật
toán tráo đổi với các giá trị khác
nhau của n dưới đây Qua đó,
nhận xét về thời gian chạy của
chương trình
Const nmax=250;
Type ArrInt=array[1 nmax] of
integer;
Var A: ArrInt;
n, i, j, t: integer;
Begin
Randomize;
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;
For j:=n downto 2 do
For i:=1 to j – 1 do
If A[i] > A[i+1] then
Begin
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 65-66_sgk
(HD HS có thể lấy chương trình xuống từ máy server)
Quan sát và hướng dẫn
HD HS lưu chương trình
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
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
Chạy thử chương trình và kiểm tra kết quả
Trang 2Nội dung bài giảng Hoạt động của thầy Hoạt động của trò
t := A[i]; A[i] := A[i+1];
A[i+1] := t;
End;
Writeln(‘Day so da sap xep:‘);
For i:=1 to n do Write(A[i]:6);
Writeln;
Readln
End
Nhắc HS nhớ lưu chương trình trước khi sang câu b) Ấn F2.
b) Khai báo thêm biến nguyên
Dem và bổ sung vào chương trình
những lệnh cần thiết để biến Dem
tính số lần thực hiện tráo đổi trong
thuật toán Đưa kết quả tìm được
ra màn hình
Hướng dẫn:
Const nmax=250;
Type ArrInt=array[1 nmax] of
integer;
Var A: ArrInt;
Dem, n, i, j, t: integer;
Begin
Randomize;
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; Dem := 0;
For j:=n downto 2 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;
Dem := Dem + 1;
End;
Writeln(‘So lan trao doi:‘,Dem);
Writeln(‘Day so da sap xep:‘);
For i:=1 to n do Write(A[i]:6);
Writeln;
Readln
End
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
Yêu cầu HS cho biết: Cần sửa đổi câu lệnh nào để có chương trình sắp xếp các phần tử theo thứ tự không tăng?
Kết luận:
Sửa điều kiện: A[i] > A[i+1] thành điều kiện: A[i] < A[i+1]
Hãy sửa chương trình theo cách trên và chạy thử để kiểm tra kết quả
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 Lắng nghe, trả lời câu hỏi
Chú ý lắng nghe
Thực hiện yêu cầu của giáo viên
Chạy thử CT, kiểm tra kết quả
Ấn F2 để lưu CT;
Ấn tổ hợp Alt + X
IV Củng cố:
Những câu lệnh nào thực hiện một lần tráo đổi giá trị của hai phần tử liền kề?
Ý nghĩa của lệnh gán: A[i] := random(300) – random(300);
V Dặn dò:
Xem trước nội dung Bài 2 trang 66 – 67_sgk; 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: 22 Tiết: 26 -Ngày soạn: 17/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 4 (tt)
I Mục đích, yêu cầu:
1 Kiến thức
Củng cố cho học sinh những kiến thức đã có khi lập trình với kiểu dữ liệu mảng;
Củng có thuật toán sắp xếp các phần tử của một dãy bằng tráo đổi;
2 Kỹ năng
Củng cố kỹ năng đã có khi lập trình với kiểu dữ liệu mảng;
Rèn luyện 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;
3 Thái độ
Rèn luyện cho học sinh ý thức cần có của người lập trình là viết chương trình với khối lượng tính toán ít nhất có thể được;
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
Hãy đọc và tìm hiểu những
phân tích để viét chương trình giải
bài toán:
Cho mảng A gồm n phần tử
Hãy viết chương trình tạo mảng
B[1 n], trong đó B[i] là tồng của i
phần tử đầu tiên của A.
Chương trình:
Const nmax=100;
Type Mang1=array[1 nmax] of
integer;
Var A, B: Mang1;
n, i, j: integer;
Begin
Randomize;
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;
For i:=1 to n do
Begin
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 trang 66-67_sgk
(HD HS có thể lấy chương trình xuống từ máy server)
Quan sát và hướng dẫn
HD HS lưu chương trình
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
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
Chạy thử chương trình và kiểm tra kết quả
Trang 4Nội dung bài giảng Hoạt động của thầy Hoạt động của trò
B[i] := 0;
For j:=1 to i do
B[i] := B[i] + A[j];
End;
For i:=1 to n do Write(B[i]:6);
Readln
End
Nhắc HS nhớ lưu chương trình trước khi sang câu b)
Ấn F2.
Sửa lại chương trình sao cho
thực hiện càng ít phép toán càng
tốt
Hướng dẫn:
Áp dụng hệ thức:
B[1] = A[1]
B[i] = B[i-1] + A[i]; với 1 < i ≤ n
Như vậy, ta có thể thay đoạn lệnh:
For i:=1 to n do
Begin
B[i] := 0;
For j:=1 to i do
B[i] := B[i] + A[j];
End;
Bằng đoạn lệnh:
B[1] := A[1];
For i:=2 to n do
B[i] := B[i-1] + A[i];
HD học sinh lưu chương trình trên với tên khác sau đó thực hiện sửa đổi chương trình theo hướng dẫn
Quan sát và hướng dẫn HS thực hiện
Quan sát và hướng dẫn HS thực hiện
Nhờ đó, ta có thể bỏ bớt một biến j trong chương trình, chương trình ngắn gọn hơn;
Đặc biệt, máy tính chỉ phải thực hiện n – 1 phép toán cộng thay vì phải thực hiện n(n+1)/2 phép cộng Tiết kiệm được một lượng tính toán đáng kể
Chú ý, quan sát, lắng nghe
Thực hiện sửa chương trình theo hướng dẫn
Chạy thử CT, kiểm tra kết quả Quan sát thời gian thực hiện chương trình
Chú ý lắng nghe
Ấn F2 để lưu CT;
Ấn tổ hợp Alt + X
IV Củng cố:
Nêu các lệnh thực hiện tạo mảng B[1 n] từ mảng A gồm n phần tử sao cho B[i] là tổng của i phần tử đầu tiên của A?
Cần xây dựng chương trình sao cho khối lượng tính toán là ít nhất có thể được
V Dặn dò:
Chuẩn bị bài mới: §12 Kiểu xâu
VI Rút kinh nghiệm: