Bài tập thực hành 3 - Nguyễn Thị Huê

7 18 0
Bài tập thực hành 3 - Nguyễn Thị Huê

Đang tải... (xem toàn văn)

Thông tin tài liệu

- 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.. Giáo viên chuẩn bị: máy chiế[r]

(1)BÀI TẬP THỰC HÀNH 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 hiểu biết kiểu liệu mảng - Tổ chức hoạt động phòng máy để học sinh có các kĩ làm việc với kiểu mảng chiều lập trình - Cung cấp cho học sinh số thuật toán đơn giản thường gặp 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 lên các máy học sinh thực hành III NỘI DUNG Ổn định tổ chức lớp Sĩ số: vắng: có phép: không phép: Kiểm tra bài cũ  Câu hỏi: Em hãy nêu cách khai báo biến mảng chiều (7 điểm) và lấy 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 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 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; -1Lop11.com (2) Bài Hoạt động giáo viên Hoạt động học sinh Các em đã tìm hiểu kiểu BÀI TẬP THỰC HÀNH liệu có cấu trúc đầu tiên là kiểu mảng Bài 1: Để hiểu nó, chúng ta cùng xét số bài tập cụ thể buổi thực hành hôm Bài (trang 63 SGK): a, Hãy chạy thử chương trình sau: Đọc bài và xác định: ? Em hãy đọc đề bài và xác định - Input: Mảng A gồm N số nguyên Input, Output bài toán? A1, A2, …, AN, N <= 100, |Ai|<=300, 1<=i<=N, số k nguyên dương - Output: Tổng các phần tử chia hết cho k Với bài toán này, ta có thể chia thành Nghe và ghi bài các công việc nhỏ: - Nhập N và k - Nhập dãy A - Tính tổng các phần tử chia hết cho k Trong chương trình có: thủ tục Randomize dùng để khởi tạo lấy số ngẫu nhiên; hàm Random(n) để lấy số ngẫu nhiên phạm vi từ đến n – VD: lệnh n:=Random(20) thì n gán giá trị bất kì khoảng từ đến 19 Ta xét công việc cụ thể: -2Lop11.com TG (3)  Nhập N và nhập k Trả lời: đoạn lệnh nhập N: ? Trong chương trình, đoạn lệnh nào Write(‘nhap n=’); readln(n); dùng để nhập N, đoạn lệnh nào dùng đoạn lệnh nhập k: Write(‘nhap k=’); readln(k); để nhập k?  Nhập dãy A ? Câu lệnh A[i] := random(300) – Trả lời: lấy hiệu số ngẫu nhiên khoảng từ đến 299, random(300) có ý nghĩa gì? Vậy nên câu lệnh For i:=1 to n gán cho A[i] 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 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 sau: Dùng S để lưu tổng cần tìm, khởi tạo Duyệt từ đầu đến cuối mảng, phần tử nào chia hết cho k thì cộng thêm phần tử đó vào S ? Đoạn chương trình nào thực -Trả lời: đoạn chương trình: S:=0; công việc này? For i:=1 to n If A[i] mod k = then S:=S+A[i]; ? Lệnh S:=S+A[i] thực Trả lời: số lần thực tuỳ thuộc vào số phần tử mảng A chia bao nhiêu lần? hết cho k Để kiểm tra kết chương trình, Test thử chương trình chúng ta cùng test thử với vài Input nhỏ -5Lop11.com (4) ? Em hãy bỏ câu lệnh xoá màn hình Nhận xét: Dãy A tạo không Clrscr, bỏ thủ tục Randomize, chạy thay đổi giá trị các phần tử thử chương trình 2,3 lần với Input và đưa nhận xét? → Ý nghĩa thủ tục Randomize: xáo trộn sinh số ngẫu nhiên để lần thực chương trình có kết ngẫu nhiên khác Thấy rằng, dùng đoạn lệnh nhập N 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 Trả lời: nhập n=103 thì ra? chương trình bị thoát Để tránh nhập N sai, ta phải kiểm tra sau nhập Nếu N<=100 thì thôi không nhập nữa, không thì phải nhập lại N Gợi ý: Dùng biến KT kiểu Boolean, khởi tạo False Thực lặp KT còn False: nhập N; kiểm tra N; đúng thì gán lại KT := True, không thì nhập lại N Tương tự vậy, ta 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 lặp i<=N: nhập A[i]; kiểm tra A[i] thoả mãn |A[i]|<=300 thì tăng lên đơn vị để -6Lop11.com (5) nhập phần tử BTVN: Hãy sửa lại chương trình để nhập N, dãy A từ bàn phím thoả mãn yêu cầu bài toán b, Sửa đổi chương trình Đọc bài và xác định: ? Em hãy đọc đề bài và xác định - Input: Mảng A gồm N số nguyên Input, Output bài toán? A1, A2, …, AN, N <= 100, |Ai|<=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 mảng ? Em hãy cho biết: đoạn chương trình sau có ý nghĩa gì? Trả lời: + posi, neg : integer; + Khai báo biến posi và neg thuộc kiểu liệu Integer + posi := 0; neg := 0; + Khởi tạo giá trị cho posi và neg + If A[i] > then posi := posi +1 + Kiểm tra A[i] lớn thì Else if A[i] < then neg := neg +1; tăng biến posi lên đơn vị, còn A[i] nhỏ thì tăng biến neg lên đơn vị + Writeln ( posi : , neg : 4); + Viết màn hình giá trị posi và neg ? Vậy thì biến posi neg dùng để làm Trả lời: biến posi dùng để lưu số gì? các phần tử lớn 0, neg lưu số các phần tử nhỏ dãy ? Em hãy thay các đoạn lệnh đó vào Thay các đoạn lệnh và chương chương trình vị trí cần thiết, trình để đưa số các phần tử nguyên -7Lop11.com (6) dương và số các phần tử nguyên âm mảng? Đưa chương trình hoàn chỉnh Bài 4.9 (trang 32 SBT): Đọc bài và xác định: ? Em hãy đọc đề bài và xác định - Input: Mảng A gồm N số nguyên Input, Output bài toán? A1, A2, …, AN, <= N <= 100 - Output: Số phần tử vị trí chẵn có giá trị là lẻ ? Với bài toán này, ta có thể chia Trả lời: Ta có thể cha thành các thành công việc nhỏ nào? công việc nhỏ sau: + Nhập N + Nhập dãy A + Đếm số phần tử vị tí chẵn có giá trị lẻ  Việc nhập N thoả mãn <= N <= 100 giống cô đã hướng dẫn bài 1, em hãy tìm hiểu cách viết đoạn lệnh này nhà  Việc nhập dãy A: làm dãy thông thường  Việc đếm số phần tử: ? Em hãy cho biết: điều kiện A[i] vị Trả lời: trí chẵn và có giá trị lẻ thì biểu i mod = and A[i] mod <> diễn dạng biểu thức logic nào? ? Em hãy nêu cách đếm số phần tử vị trí chẵn có giá trị lẻ? Trả lời: Duyệt từ đầu đến cuối dãy, A[i] thoả mãn điều kiện trên Đoạn lệnh sau: thì tăng biến đếm lên đơn vị -6Lop11.com (7) For i := to n If (i mod = 0) and (A[i] mod <> 0) then dem := dem + 1; Về nhà, em hãy hoàn thiện chương trình 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 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 trang 64 GSK V NHẬN XÉT VÀ ĐÁNH GIÁ -7Lop11.com (8)

Ngày đăng: 01/04/2021, 20:25