Tin học 11 Bài 17: Dữ liệu mảng một chiều và hai chiều Giải Tin học 11 Định hướng Khoa học máy tính Kết nối tri thức

Giải bài tập SGK Tin học 11 trang 81→85 sách Kết nối tri thức với cuộc sống giúp các em học sinh lớp 11 xem gợi ý giải các câu hỏi Bài 17: Dữ liệu mảng một chiều và hai chiều thuộc Chủ đề 6: Kỹ thuật lập trình.

Soạn Tin học 11 Kết nối tri thức Bài 17 giúp các bạn học sinh nắm được kiến thức về cấu trúc mảng 1 chiều và cấu trúc mảng 2 chiều. Đồng thời qua tài liệu này giúp giáo viên nhanh chóng xây dựng hoàn thiện giáo án dạy học của mình.

Trả lời Nội dung bài học Tin 11 Bài 17

1. Cấu trúc dữ liệu mảng một chiều

Hoạt động 1. Thực hiện các thao tác sau, quan sát, trao đổi và thảo luận, từ đó nhận biết về cấu trúc dữ liệu mảng một chiều trong Python.

Gợi ý đáp án

Cấu trúc dữ liệu mảng một chiều trong Python có thể biểu diễn bằng kiểu dữ liệu canh sách (list) với chức năng truy cập dễ dàng từng phần tử theo chỉ số, truy cập theo vùng chỉ số. Toán tử in và lệnh for .. in sẽ hỗ trợ duyệt từng phần tử của mảng.

Câu hỏi 1. Sử dụng hàm sum() tính tổng các số của một dãy. Hãy viết câu lệnh tính giá trị trung bình của dãy số A cho trước.

Gợi ý đáp án

tb = sum(A) / len(A)

print(tb)

Câu hỏi 2. Có thể duyệt các phần tử của mảng theo chiều ngược lại, từ cuối về đầu, được không?

Gợi ý đáp án

Ta có thể duyệt các phần tử của mảng theo chiều ngược lại từ cuối về đầu bằng cách sử dụng index âm trong Python. Cụ thể, các phần tử của mảng có thể được truy cập bằng cách sử dụng index âm bắt đầu từ -1 đến -n, trong đó n là số phần tử của mảng.

Ví dụ, giả sử ta có một mảng như sau:

arr = [1, 2, 3, 4, 5]

Để duyệt các phần tử của mảng theo chiều ngược lại từ cuối về đầu, ta có thể sử dụng vòng lặp for như sau:

for i in range(len(arr)-1, -1, -1):

print(arr[i])

Ở đây, ta sử dụng hàm range() để tạo ra một chuỗi các index từ len(arr)-1 (index của phần tử cuối cùng của mảng) đến 0 (index của phần tử đầu tiên của mảng) với bước lùi -1. Trong mỗi lần lặp, ta sử dụng index để truy cập phần tử tương ứng trong mảng và thực hiện các thao tác xử lý mong muốn.

5 4 3 2 1

2. Cấu trúc dữ liệu mảng hai chiều

Hoạt động. Thực hiện các lệnh sau, sau sát, trao đổi và thảo luận, từ đó nhận biết về mô hình danh sách trong Python.

Gợi ý đáp án

Python hỗ trợ mô hình dữ liệu danh sách trong danh sách, tức là mỗi phần tử của danh sách là một đối tượng dạng danh sách khác.

Câu hỏi 1. Thiết lập mảng bao gồm dữ liệu là toạ độ các điểm trên mặt phẳng, mỗi điểm P được cho bởi hai toạ độ (px, py).

Gợi ý đáp án

Ta có thể sử dụng kiểu dữ liệu danh sách (list) trong Python để lưu trữ các điểm trên mặt phẳng. Mỗi điểm sẽ được biểu diễn bằng một danh sách chứa hai phần tử là toạ độ px và py.

Ví dụ, để tạo một mảng bao gồm 3 điểm A(1,2), B(3,4), và C(5,6), bạn có thể sử dụng mã như sau:

p = [[1, 2], [3, 4], [5, 6]]

Câu hỏi 2. Thiết lập màng bao gồm dãy các thông tin là danh sách học sinh và thông tin 3 điểm thi của học sinh tương ứng các bải thi số 1, 2, 3. Viết đoạn lệnh nhập bộ đữ liệu trên và chương trình in ra danh sách học sinh cùng với điểm trung bình của các bài thi.

Gợi ý đáp án

Để lưu trữ danh sách học sinh và thông tin điểm thi của họ, bạn có thể sử dụng một danh sách chứa nhiều danh sách con. Mỗi danh sách con sẽ chứa tên học sinh (dạng chuỗi) và ba điểm số (dạng số) của họ tương ứng với ba bài thi.

Ví dụ, để tạo một mảng danh sách học sinh với thông tin điểm số, ta có thể sử dụng mã như sau:

# Nhập danh sách học sinh và điểm số

students = []

n = int(input("Nhập số lượng học sinh: "))

for i in range(n):

name = input(f"Nhập tên học sinh thứ {i+1}: ")

mark1 = float(input(f"Nhập điểm bài thi 1 của {name}: "))

mark2 = float(input(f"Nhập điểm bài thi 2 của {name}: "))

mark3 = float(input(f"Nhập điểm bài thi 3 của {name}: "))

students.append([name, mark1, mark2, mark3])

# Tính điểm trung bình và in ra danh sách học sinh và điểm trung bình của họ

for student in students:

name = student[0]

mark1 = student[1]

mark2 = student[2]

mark3 = student[3]

avg_mark = (mark1 + mark2 + mark3) / 3

print(f"Học sinh {name} có điểm trung bình là {avg_mark}")

Hoạt động 3. Đọc, trao đổi, thảo luận về cấu trúc dữ liệu mảng hai chiều trong Python.

Gợi ý đáp án

Trong tin học, một cấu trúc dữ liệu hai chiều được hiểu là một bảng hay còn gọi là ma trận, bao gồm các hàng và cột dữ liệu. Bảng có thể có kích thước vuông n x n hoặc kích thước bất kì m x n.

Câu hỏi 1. Câu lệnh sau sẽ tạo dữ liệu thuộc thể loại gì?

temp = [1, 2, 3, 4]

A = [temp, temp]

Gợi ý đáp án

Câu lệnh trên sẽ tạo ra một dữ liệu thuộc thể loại List (danh sách) trong Python, với tên biến A là một danh sách chứa hai phần tử. Mỗi phần tử của danh sách A là một tham chiếu đến đối tượng danh sách temp, được tạo ra trước đó.

Vì vậy, A sẽ chứa hai tham chiếu đến cùng một danh sách temp, với giá trị của temp là [1, 2, 3, 4]. Nếu giá trị của danh sách temp thay đổi, thì giá trị của các phần tử trong danh sách A cũng sẽ thay đổi theo.

Câu hỏi 2. Nếu A là bảng (ma trận) kích thước m x n thì đoạn chương trình sau sẽ in ra thông tin gì trên màn hình?

for i in range(m):

for j in range(n):

print(A[i][j],end=” “)

print()

Gợi ý đáp án

Nếu A là một ma trận kích thước m x n, đoạn chương trình trên sẽ in ra giá trị của từng phần tử trong ma trận A, mỗi dòng một.

Cụ thể, với mỗi giá trị của i trong khoảng từ 0 đến m - 1, vòng lặp đầu tiên sẽ lặp qua từng phần tử trong hàng thứ i của ma trận A. Với mỗi giá trị của j trong khoảng từ 0 đến n-1, vòng lặp thứ hai sẽ in ra giá trị của phần tử tại vị trí (i,j) trong ma trận A bằng lệnh print(A[i][j],end=" "), kết thúc bằng một khoảng trắng.

Sau khi in hết các phần tử trong hàng thứ i, lệnh print() trong vòng lặp đầu tiên sẽ xuống dòng, chuyển sang in hàng tiếp theo của ma trận A. Như vậy, tổng hợp lại, đoạn chương trình sẽ in ra ma trận A dưới dạng bảng trên màn hình.

Giải Luyện tập Tin học 11 Bài 17

Câu hỏi 1

Giả sử số đo chiều cao các bạn trong lớp được cho trong dãy số A. Hãy viết đoạn chương trình tính:

- Số đo chiều cao trung bình của cả lớp.

- Số bạn có chiều cao lớn hơn chiều cao trung bình của cả lớp.

Câu hỏi 2

Viết chương trình nhập từ bàn phím số tự nhiên m, sau đó lần lượt nhập m dòng, mỗi dòng bao gồm n số cách nhau bởi dấu cách, đưa dữ liệu đã nhập vào ma trận A, sau đó in ma trận A ra màn hình.

Giải Vận dụng Tin học 11 Bài 17

Câu hỏi 1

Viết hàm số UnitMatrix(n) với n là số tự nhiên cho trước, hàm trả lại giá trị là ma trận bậc n như Hình 17.1.

Câu hỏi 2

Viết chương trình cho phép người dùng nhập từ bàn phim một dãy số tự nhiên, hãy đếm với mỗi giá trị của dây có bao nhiêu số lặp lại. Ví dụ nếu dãy ban đầu là:

0 1 5 7 0 2 5 1 1 2

thì chương trình cần thông báo như Hình 17.2.

Số 0 lặp lại 2 lân

Số 1 lặp lại 3 lần

Số 6 lặp lại 2 lần

Số 7 lặp lại 1 lần

Số 2 lặp lại 2 lần.

Câu hỏi 3

Em ghi số tiền điện gia đình em theo từng tháng vào một danh sách gồm 12 số. Mỗi năm lại ghi lại số tiền điện vào một danh sách và ghép với danh sách các năm trước. Như vậy em thu được một bảng kích thước n x 12, trong đó hàng thứ k là số tiễn điện của nãm thứ k, cột tương ứng số tiền điện theo tháng.

a) Thiết lập mảng mới tính số tiền điện trung bình của các năm, mối năm ghi một số.

b) Tính số tiền điện trung bình của tất cả các năm đã được ghi dữ liệu trong bảng.

Chia sẻ bởi: 👨 Trịnh Thị Thanh
Mời bạn đánh giá!
  • Lượt tải: 25
  • Lượt xem: 404
  • Dung lượng: 138,8 KB
Sắp xếp theo