Tin học 11 Bài tập và thực hành 4

Mời các em học sinh cùng tham khảo nội dung bài thực hành số 4 được biên soạn và tổng hợp bên dưới đây. Qua tài liệu này các em sẽ bước đầu làm quen với dữ liệu có cấu trúc và bài toán sắp xếp từ đó có cái nhìn tổng quan hơn về bộ môn Tin học lớp 11. Chúc các em học tốt!

Tin học 11 Bài tập và thực hành 4

1. Tóm tắt lý thuyết

1.1. Mục đích, yêu cầu

a. 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.

b. 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.

1.2. Nội dung

Hoạt động 1:

a) Hãy tìm hiểu và chạy thử chương trình 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 chương trình.

Trả lời

Kết quả:

b) Khai báo thêm biến nguyên Dem và bổ sung vào chương trình những câu 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ả ra màn hình.

Trả lời:

Kết quả:

Hoạt động 2: 

Hãy đọc và tìm hiểu những phân tích để viết chương tình giải bài toán :

Cho mảng A gồm n phần tử. Hãy biế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 trong A.

Trả lời:

Có 2 cách:

Cách 1: Duyệt lần lượt các phần từ của mảng B. Đến vị trí I ta sẽ duyệt từ 1 đến I của mảng A rồi cộng dồn vào B[i]

Kết quả:

Số lần thực thi phép cộng là:

Cách 2: B[j]=B[j-1]+A[j] nếu j khác 1và B[j]=A[1] nếu j=1.

Kết quả:

Số lần thực thi phép cộng là

Nhận thấy sử dụng cách 2 có thể làm giảm đáng kể số lượng phép toán cần thực hiện. Tuy tốc độ máy tính rất nhanh nhưng cũng có giới hạn. Vì thế ta nên tìm cách viết sao cho chương trình thực hiện càng ít phép toán càng tốt.

2. Luyện tập

Câu 1: Mảng table dưới đây chứa bao nhiêu phần tử?

CONST

            COLUMNS = 3;

           ROWS = 4;

table : ARRAY [ 0..COLUMNS + 1, 0..ROWS ] of INTEGER;

A. 16

B. 20

C. 12

D. 25

Câu 2: Cho khai báo mảng và đoạn chương trình như sau: Var a : array[0..50] of real; k := 0 ; for i := 1 to 50 do if a[i] > a[k] then k := i; Đoạn chương trình trên thực hiện công việc gì dưới đây?

A. Tìm phần tử nhỏ nhất trong mảng

B. Tìm chỉ số của phần tử lớn nhất trong mảng

C. Tìm chỉ số của phần tử nhỏ nhất trong mảng

D. Tìm phần tử lớn nhất trong mảng

Câu 3: Cho trước var B: array[1..N] of real; Hãy cho biết đoạn lệnh sau dùng để làm gì? tong:= 0; for i:= 1 to N do if B[i] < 0 then tong:= tong + B[i];

A. Gán giá trị 0 cho biến tong

B. Tính tổng giá trị của các phần tử ở trong mảng

C. Tính tổng giá trị của các phần tử nhỏ hơn 0 ở trong mảng

D. Tính tổng giá trị của các phần tử lớn hơn 0 ở trong mảng

Câu 4: Cho khai báo sau: a : array[0..16] of integer ; Câu lệnh nào dưới đây sẽ in ra tất cả các phần tử của mảng trên?

A. for k := 1 to 16 do write(a[k]);

B. for k := 16 down to 0 write(a[k]);

C. for k := 16 downto 0 do write(a[k]);

D. for k:= 0 to 15 do write(a[k]);

Câu 5: Cho trước var A: array[1..N] of real; Hãy cho biết đoạn lệnh sau dùng để làm gì? write('Day so vua nhap vao la: '); for i:= 1 to N do write(A[i]:4);

A. Hiển thị trên màn hình nội dung: "Day so vua nhap vao la: "

B. Hiển thị trên màn hình nội dung: "Day so vua nhap vao la: A[i]:4 "

C. Hiển thị trên màn hình nội dung: "A[i]:4"

D. Tất cả đáp án A, B và C đều sai

3. Kết luận

Thông qua nội dung bài học các em cần nắm được một số nội dung chính sau đây:

  • Tổng hợp được các nội dung đã được học
  • Phân tích, nhận định bài toán, sắp xếp bài toán
  • Đề xuất thuật toán giải bài toán, dữ liệu
Ngày:11/09/2020 Chia sẻ bởi:Thanh Nhàn

CÓ THỂ BẠN QUAN TÂM