bai tap thuc hanh 3(11) - Pdf 15

BÀI TẬP THỰC HÀNH 3
Người soạn: Nguyễn Thị Huê.
SV lớp: SP Tin K40.
Ngày soạn: 27/10/08.
Người hướng dẫn: Nguyễn Văn Trường.
I. MỤC ĐÍCH, YÊU CẦU.
- Củng cố cho học sinh những hiểu biết về kiểu dữ liệu mảng.
- Tổ chức hoạt động trong phòng máy để học sinh có được các kĩ năng cơ
bản làm việc với kiểu mảng một chiều trong lập trình.
- Cung cấp cho học sinh một số thuật toán đơn giản thường gặp trong lập
trình, như: tính tổng phần tử thoả mãn điều kiện, đếm số phàn tử thoả mãn điều
kiện.
II. CHUẨN BỊ.
Giáo viên chuẩn bị: máy chiếu, chương trình phần a và phần b bài 1, cài đặt
chương trình phần a bài 1 lên các máy học sinh thực hành.
III. NỘI DUNG.
1. Ổn định tổ chức lớp.
Sĩ số: vắng: có phép: không phép:
2. Kiểm tra bài cũ
• Câu hỏi: Em hãy nêu cách khai báo biến mảng 1 chiều (7 điểm) và lấy 1 ví
dụ (3 điểm)?
• Đáp án:
Cách 1: Khai báo trực tiếp:
Var <tên biến mảng>: array [kiểu chỉ số] of <kiểu phần tử>;
Cách 2: Khai báo gián tiếp:
Type <tên kiểu mảng> = array [kiểu chỉ số] of <kiểu phần tử>;
Var <tên biến mảng>: <tên kiểu mảng>;
Ví dụ:
Var A: array [1 20] of integer;
1
3. Bài mới

1
, A
2
, …, A
N
, N <= 100, |A
i
|
<=300, 1<=i<=N, số k nguyên
dương.
- Output: Tổng các phần tử chia
hết cho k.
Nghe và ghi bài.
2
• Nhập N và nhập k.
? Trong chương trình, đoạn lệnh nào
dùng để nhập N, đoạn lệnh nào dùng
để nhập k?
• Nhập dãy A.
? Câu lệnh A[i] := random(300) –
random(300) có ý nghĩa gì?
Vậy nên câu lệnh For i:=1 to n do
A[i]:= random(300) – random(300);
chính là câu lệnh tạo mảng A thoả
mãn: giá trị tuyệt đối mỗi phần tử
không quá 300.
• Tính tổng các phần tử chia hết
cho k.
Việc này ta làm như sau: Dùng S để
lưu tổng cần tìm, khởi tạo bằng 0.

Input và đưa ra nhận xét?
→ Ý nghĩa của thủ tục Randomize:
xáo trộn bộ sinh số ngẫu nhiên để mỗi
lần thực hiện chương trình sẽ có kết
quả ngẫu nhiên khác nhau.
Thấy rằng, nếu dùng đoạn lệnh nhập
N như trên thì ta có thể nhập N có giá
trị bất kì.
? Nếu nhập N=103 thì chuyện gì sảy
ra?
Để tránh nhập N sai, ta phải kiểm tra
ngay sau khi nhập. Nếu N<=100 thì
thôi không nhập nữa, nếu không thì
phải nhập lại N.
Gợi ý: Dùng biến KT kiểu Boolean,
khởi tạo bằng False. Thực hiện lặp
trong khi KT còn bằng False: nhập N;
kiểm tra N; nếu đúng thì gán lại KT :=
True, không thì nhập lại N.
Tương tự như vậy, ta cũng có thể
nhập lại mảng A từ bàn phím thoả
mãn |A[i]| <=300.
Gợi ý: Không dùng biến KT kiểu
Boolean nữa, mà khởi tạo biến i:=1.
Thực hiện lặp trong khi i<=N: nhập
A[i]; kiểm tra A[i] thoả mãn |A[i]|
<=300 thì tăng 1 lên 1 đơn vị để nhập
Nhận xét: Dãy A được tạo không
thay đổi giá trị các phần tử.
Trả lời: nếu nhập n=103 thì

i
|
<=300, 1<=i<=N, số k nguyên
dương.
- Output: Số các số nguyên dương
và số các số nguyên âm trong
mảng.
Trả lời:
+ Khai báo 2 biến posi và neg
thuộc kiểu dữ liệu Integer.
+ Khởi tạo giá trị cho posi và neg
bằng 0.
+ Kiểm tra nếu A[i] lớn hơn 0 thì
tăng biến posi lên 1 đơn vị, còn
nếu A[i] nhỏ hơn 0 thì tăng biến
neg lên 1 đơn vị.
+ Viết ra màn hình giá trị của posi
và neg.
Trả lời: biến posi dùng để lưu số
các phần tử lớn 0, neg lưu số các
phần tử nhỏ hơn 0 trong dãy.
Thay các đoạn lệnh và chương
trình.
5
dương và số các phần tử nguyên âm
trong mảng?
Đưa ra chương trình hoàn chỉnh.
Bài 4.9 (trang 32 SBT):
? Em hãy đọc đề bài và xác định
Input, Output của bài toán?

+ Nhập N.
+ Nhập dãy A.
+ Đếm số phần tử ở vị tí chẵn có
giá trị lẻ.
Trả lời:
i mod 2 = 0 and A[i] mod 2 <> 0
Trả lời: Duyệt từ đầu đến cuối dãy,
nếu A[i] thoả mãn điều kiện trên
thì tăng biến đếm lên 1 đơn vị.
6
If (i mod 2 = 0) and (A[i] mod 2
<> 0) then dem := dem + 1;
Về nhà, em hãy hoàn thiện chương
trình của bài này.
IV. C ỦNG CỐ VÀ DẶN DÒ.
- Sau bài thực hành hôm nay, các em cần nhớ và hiểu được tính tổng phần tử
thoả mãn điều kiện, đếm số phần tử thoả mãn điều kiện.
- BTVN: 4.10, 4.12, đọc và tìm hiểu trước bài 2 trang 64 GSK.
V. NHẬN XÉT VÀ ĐÁNH GIÁ.

7


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status