D, x1, x2: real; Begin clrscr;
BàI TậP Và THựC HàNH 3 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 về kiểu dữ liệu mảng.
2. Kĩ năng
- Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu mảng một chiều trong lập trình, cụ thể:
o Khai báo kiểu dữ liệu mảng một chiều.
o Nhập/xuất dữ liệu cho mảng.
o Duyệt qua tất cả các phần tử của mảng để xử lí từng phần tử. - Biết giải một số bài toán cơ bản thờng gặp:
o Tính tổng các phần tử thoả mãn điều kiện nào đó.
o Đếm số phần tử thoả mãn điều kiện nào đó.
o Tìm phần tử lớn nhất, nhỏ nhất.
3. Thái độ
- Góp phần rèn luyện tác phong, t duy lập trình: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm kiến thức.
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 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: Chiếu chơng trình lên bảng để HS tìm hiểu. GV: Myarray là tên kiểu dữ liệu hay tên biến?
HS: Suy nghĩ và trả lời.
GV: Vai trò của nmax và n có gì khác nhau?
HS: Suy nghĩ trả lời.
GV: Những dòng lệnh nào dùng để khai báo
biến mảng A?
GV: Giải thích và thực hiện chơng trình để HS
thấy kết quả.
GV: Lệnh For...do cuối cùng thực hiện nhiệm
vụ gì? Lệnh s := s + A[i]; đợc thực hiện bao nhiêu lần?
GV: Thực hiện lại chơng trình lần cuối để HS
thấy kết quả.
Hoạt động 2. Tìm hiểu bài tập 2.
GV: Yêu cầu HS nêu thuật toán tìm phần tử có
giá trị lớn nhất. Sau đó tìm hiểu chơng trình bài 2.
GV: Vai trò của biến j trong chơng trình là gì? Nếu muốn tìm phần tử nhỏ nhất, cần sửa ở chỗ nào? Nếu muốn tìm phần tử lớn nhất với chỉ số
Bài 1 program Sum1; uses crt; const nmax=100; type MyArray = array[1..nmax] of integer; var A: MyArray; s,n,i,k: integer; begin clrscr; randomize; write('Nhap n ='); readln(n); for i:= 1 to n do A[i] := random(301)- random(301); 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. Bài 2 program MaxElement; const Nmax= 100;
lớn nhất ta sửa ở chỗ nào?
GV: Yêu cầu HS viết chơng trình đa ra các chỉ
số của các phần tử có giá trị lớn nhất. Với các câu hỏi gợi ý sau:
- Cần giữ lại đoạn chơng trình tìm giá trị lớn nhất không?
- Cần thêm lệnh nào nữa? - Vị trí thêm các lệnh đó?
GV: Yêu cầu HS nhập dữ liệu vào và báo cáo
kết quả.
GV: Đánh giá kết quả của HS.
type MyArray = array[1..Nmax] of integer; var A: MyArray; n,i,j: integer; begin write('Nhap so luong phan tu cua day so, 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;
write ('Chi so: ',j, ' Gia tri:',A[j]:4); readln
end.
3. Củng cố, dặn dò
- Tóm tắt nội dung các bài thực hành, lu ý các nội dung chính. - Xem lại bài.
- Chuẩn bị trớc Bài tập và thực hành 4.