D, x1, x2: real; Begin clrscr;
BàI TậP Và THựC HàNH 4 I Mục tiêu
I. Mục tiêu
1. Kiến thức
- Củng cố lại các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng. - Làm quen với thuật toán sắp xếp đơn giản.
2. Kĩ năng
- Rèn luyện kĩ năng sử dụng kiểu dữ liệu có cấu trúc, 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.
- Rèn luyện kĩ năng nhận xét, phân tích và đề xuất cách giải bài toán sao cho chơng trình chạy nhanh hơn.
3. Thái độ
- Tự giác, chủ động trong khi thực hành.
II. Chuẩn bị của giáo viên và học sinh
1. Chuẩn bị của giáo viên
- Phơng pháp: Thuyết trình, vấn đáp
- Phơng tiện:
o Máy vi tính và máy chiếu.
o Một số chơng trình mẫu.
2. Chuẩn bị của học sinh
- Sách giáo khoa.
III. Tiến trình lên lớp
1. ổn định lớp
2. Hoạt động dạy - học
Hoạt động của giáo viên và học
sinh Nội dung
Hoạt động 1. Tìm hiểu bài tập 1.
GV: Gợi ý cho HS nhớ lại thuật toán sắp xếp đã học.
- Lấy một ví dụ thực tiễn: Ngời mù bán táo, muốn sắp xếp các quả táo thành một dãy theo khối lợng không giảm.
- Yêu cầu HS đa ra các bớc để sắp xếp các phần tử trong một mảng.
GV: Cho HS tìm hiểu chơng trình, SGK, trang
65. Đặt câu hỏi:
- Vai trò của biến i, j trong chơng trình? mỗi vòng lặp For...do trong đoạn chơng trình sắp xếp có ý nghĩa gì?
- Ba lệnh tg := a[i]; a[i] := a[i+1]; và
a[i+1] := tg; có ý nghĩa gì?
GV: Thực hiện chơng trình, nhập dữ liệu để HS
thấy kết quả chơng trình. Sau đó yêu cầu HS trả lời câu hỏi: Chơng trình xử lí công việc gì?
GV: Hớng dẫn HS sửa chơng trình để giải quyết
bài toán ở câu b với các câu hỏi gợi ý:
Bài 1 uses crt; const Nmax = 250; type ArrInt = array[1..Nmax] of integer; var n, i, j, y: integer; A: ArrInt; begin clrscr; 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 begin for i:=1 to j-1 do
if A[i]> A[i+1] then
begin
- Đoạn chơng trình nào dùng để thực hiện tráo đổi giá trị?
- Lệnh này đợc viết ở vị trí nào trong chơng trình?
GV: Yêu cầu HS nhập dữ liệu vào chạy chơng
trình và thông báo kết quả.
GV: Nhận xét đánh giá kết quả của HS. Hoạt động 2. Thực hiện bài tập 2.
Xác định bài toán.
GV: Chiếu đề bài lên bảng. Yêu cầu HS xác định
dữ liệu vào, dữ liệu ra. Gợi ý để HS tìm thuật toán.
Giới thiệu chơng trình cha cải tiến.
GV: Thực hiện chơng trình để HS quan sát kết quả. GV: Trong chơng trình phải thực hiện bao nhiêu
phép cộng?
HS: Suy nghĩ trả lời câu hỏi. GV: Thấy rằng:
B[1] := A[1];
B[i] := B[i−1] + A[i], (1 < i ≤ n)
nên có thể thay bởi:
B[1]:= A[1];
for i:= 2 to n do
B[i]:= B[i-1]+A[i];
GV: Yêu cầu HS viết chơng trình hoàn thiện và
chạy lại để so sánh với kết quả trớc đó.
GV: Cùng một bài toán, có nhiều cách giải quyết
khác nhau. Ngời lập trình cần chọn cách sao cho máy thực hiện nhanh nhất.
A[i]:= A[i+1]; A[i+1]:=t end; end; writeln('Day so duoc sap xep: '); for i:=1 to n do write(A[i]: 7); writeln; readln end. Bài 2 program SubSum1; const nmax=100; type MyArray = array[1..nmax] of integer; var A, B: MyArray; 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 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. 3. Củng cố, dặn dò
- Thuật toán sắp xếp đơn giản.
- Một bài toán có thể có nhiều cách viết thành một chơng trình. Cần chọn cách có số phép tính ít nhất.
- Xem lại tất cả các kiến thức đã học, bao gồm: lệnh cơ bản, lệnh điều khiển, kiểu dữ liệu cơ bản, kiểu dữ liệu có cấu trúc.
- Tiết sau kiểm tra 15 phút.