Lý thuyết Tin học 11 Bài 17 (Kết nối tri thức): Dữ liệu mảng một chiều và hai chiều

Tóm tắt lý thuyết Tin học lớp 11 Bài 17: Dữ liệu mảng một chiều và hai chiều hay, chi tiết sách Kết nối tri thức sẽ giúp học sinh nắm vững kiến thức trọng tâm, ôn luyện để học tốt Tin học 11.

1 12,643 08/08/2026


Lý thuyết Tin học 11 Bài 17: Dữ liệu mảng một chiều và hai chiều

A. Lý thuyết Dữ liệu mảng một chiều và hai chiều

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

- Dữ liệu mảng một chiều trong Tin học được gọi là cấu trúc dữ liệu tuyến tính, bao gồm các phần tử dữ liệu truy cập theo chỉ số.

- Trong Python, mảng một chiều được biểu diễn bằng danh sách (list) với các phần tử có cùng kiểu dữ liệu.

- Các mảng một chiều có thể được thiết lập dễ dàng bằng kiểu dữ liệu list trong Python.

A = [1,3, 5, 7, 9, 11]

B = ["Hà","Bình","Ngọc","Anh"]

C = [9.5, 8.0, 10, 7.2]

- Có thể truy cập phần tử của mảng một chiều bằng chỉ số và kiểm tra phần tử có nằm trong mảng hay không bằng toán tử in trong Python.

7 in A
True

- Sử dụng lệnh for để dễ dàng duyệt từng phần tử của mảng một chiều trong Python.

for hs in B:
print(hs, end = "")
Hà Bình Ngọc Anh

- Các lệnh thao tác với danh sách trong Python như append, remove, insert, clear có thể được sử dụng để thao tác với mảng một chiều được biểu diễn bằng kiểu dữ liệu list.

- Chú ý: Mảng trong khoa học máy tính không tương đương với kiểu dữ liệu List trong Python.

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

- Tạo bộ dữ liệu điểm học sinh trong lớp bằng cách lưu trữ mỗi phần tử là một danh sách gồm hai thông tin: tên học sinh và điểm số.

- Truy cập một phần tử sẽ trả về một danh sách gồm tên và điểm của học sinh tương ứng.

- Để truy cập giá trị điểm của một học sinh cụ thể, ví dụ "Quang", ta sử dụng lệnh: DS_diem[0][1].

- Duyệt các phần tử của danh sách bằng vòng lặp for, mỗi phần tử là một danh sách có hai giá trị, tên và điểm số của học sinh.

- Một ma trận là một cấu trúc dữ liệu hai chiều bao gồm hàng và cột. Trong Python, ma trận có thể được biểu diễn bằng cấu trúc list trong list với mỗi hàng là một list con.

- Phần tử nằm tại hàng i và cột j sẽ kí hiệu là aij. Như vậy aij là phần tử của ma trận tại vị trí hàng i, cột j.

- Duyệt các phần tử của ma trận sẽ được thực hiện bằng cách sử dụng hai lệnh for lồng nhau.

Sơ đồ tư duy Dữ liệu mảng một chiều và hai chiều

Lý thuyết Tin học 11 Bài 17 (Kết nối tri thức): Dữ liệu mảng một chiều và hai chiều (ảnh 1)

B. Bài tập Dữ liệu mảng một chiều và hai chiều

Câu 1: Phát biểu nào dưới đây về kiểu mảng một chiều là phù hợp?

A. Là một tập hợp các số nguyên

B. Độ dài tối đa của mảng là 255

C. Là một dãy hữu hạn các phần tử cùng kiểu

D. Mảng không thể chứa kí tự

Câu 2: Để khai báo số phần tử của mảng trong PASCAL, người lập trình cần:

A. khai báo một hằng số là số phần tử của mảng

B. khai báo chỉ số bắt đầu và kết thúc của mảng

C. khai báo chỉ số kết thúc của mảng

D. không cần khai báo gì, hệ thống sẽ tự xác định

Câu 3: Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất?

A. Dùng để truy cập đến một phần tử bất kì trong mảng

B. Dùng để quản lí kích thước của mảng

C. Dùng trong vòng lặp với mảng

D. Dùng trong vòng lặp với mảng để quản lí kích thước của mảng

Câu 4: Phát biểu nào sau đây về mảng là không chính xác?

A. Chỉ số của mảng không nhất thiết bắt đầu từ 1

B. Có thể xây dựng mảng nhiều chiều

C. Xâu kí tự cũng có thể xem như là một loại mảng

D. Độ dài tối đa của mảng là 255

Câu 5: Thế nào là khai báo biến mảng gián tiếp?

A. Khai báo mảng của các bản ghi

B. Khai báo mảng xâu kí tự

C. Khai báo mảng hai chiều

D. Khai báo thông qua kiểu mảng đã có

Câu 6: Phương án nào dưới đây là khai báo mảng hợp lệ?

A. Var mang : ARRAY[0..10] OF INTEGER;

B. Var mang : ARRAY[0..10] : INTEGER;

C. Var mang : INTEGER OF ARRAY[0..10];

D. Var mang : ARRAY(0..10) : INTEGER;

Câu 7: 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 phần tử lớn nhất trong mảng;

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

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

Câu 8: Cho khai báo mảng như sau: Var a : array[0..10] of integer ;

Phương án nào dưới đây chỉ phần tử thứ 10 của mảng?

A. a[10];

B. a(10);

C. a[9];

D. a(9);

Câu 9: Khai báo mảng hai chiều nào sau đây là sai?

A. var m : array[1..10] of array[0..9] of integer;

B. var m : array[1..20,1..40] of real;

C. var m : array[1..9;1..9] of integer;

D. var m : array[0..10,0..10] of char;

Câu 10: Mảng là kiểu dữ liệu biểu diễn một dãy các phần tử thuận tiện cho:

A. chèn thêm phần tử

B. truy cập đến phần tử bất kì

C. xóa một phần tử

D. chèn thêm phần tử và xóa phần tử

Trắc nghiệm Tin học 11 Bài 17: Dữ liệu mảng một chiều và hai chiều

Câu 1: Cấu trúc dữ liệu mảng một chiều trong Python được biểu diễn bằng kiểu dữ liệu nào?

A. Tuple

B. Set

C. List

D. Dictionary

Đáp án: C

Giải thích: Trong Python, mảng một chiều có thể được biểu diễn bằng danh sách (list), cho phép lưu trữ nhiều phần tử và truy cập thông qua chỉ số.

Câu 2: Lệnh nào sau đây kiểm tra xem giá trị 7 có tồn tại trong mảng A = [1, 3, 5, 7, 9]?

A. 7 in A

B. A.has(7)

C. A.contains(7)

D. A.search(7)

Đáp án: A

Giải thích: Lệnh 7 in A kiểm tra xem giá trị 7 có tồn tại trong danh sách A hay không. Đây là cú pháp đúng của Python.

Câu 3: Để thêm một phần tử vào cuối danh sách trong Python, ta dùng lệnh nào?

A. append()

B. insert()

C. extend()

D. pop()

Đáp án: A

Giải thích: Lệnh append() trong Python được dùng để thêm một phần tử vào cuối danh sách.

Câu 4: Mảng hai chiều là gì?

A. Một chuỗi các phần tử cùng kiểu dữ liệu

B. Một danh sách chứa các danh sách con

C. Một bảng với dữ liệu không có cấu trúc

D. Một danh sách các giá trị ngẫu nhiên

Đáp án: B

Giải thích: Mảng hai chiều là một danh sách chứa các danh sách con, giúp biểu diễn dữ liệu dưới dạng bảng với hàng và cột.

Câu 5: Lệnh nào sau đây được dùng để truy cập phần tử tại hàng 2 cột 3 của ma trận A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]?

A. A[1][2]

B. A[2][3]

C. A[3][2]

D. A[0][1]

Đáp án: A

Giải thích: Trong Python, chỉ số bắt đầu từ 0, do đó phần tử tại hàng 2 cột 3 của ma trận sẽ là A[1][2].

Câu 6: Trong Python, ta có thể duyệt qua từng phần tử của mảng hai chiều bằng lệnh nào sau đây?

A. Một lệnh for đơn

B. Hai lệnh for lồng nhau

C. Hàm map()

D. Lệnh while

Đáp án: B

Giải thích: Để duyệt qua từng phần tử của mảng hai chiều, ta cần sử dụng hai lệnh for lồng nhau: một lệnh duyệt theo hàng, một lệnh duyệt theo cột.

Câu 7: Để tính tổng các phần tử của một danh sách trong Python, ta sử dụng hàm nào?

A. sum()

B. max()

C. min()

D. avg()

Đáp án: A

Giải thích: Hàm sum() trong Python được sử dụng để tính tổng các phần tử trong một danh sách.

Câu 8: Cho danh sách A = [1, 2, 3, 4, 5]. Kết quả của lệnh print(A[-1]) là gì?

A. 1

B. 3

C. 5

D. Lỗi

Đáp án: C

Giải thích: Sử dụng chỉ số âm trong Python sẽ truy cập từ phần tử cuối cùng trở về đầu, do đó A[-1] trả về giá trị 5.

Câu 9: Mảng hai chiều trong Python có thể được biểu diễn bằng cách nào?

A. Dictionary chứa danh sách

B. List chứa list

C. Tuple chứa set

D. Set chứa tuple

Đáp án: B

Giải thích: Mảng hai chiều trong Python được biểu diễn bằng cách sử dụng danh sách chứa các danh sách con, biểu diễn các hàng và cột.

Câu 10: Lệnh nào sau đây dùng để xoá một phần tử trong danh sách tại vị trí cụ thể?

A. list.remove(index)

B. list.delete(index)

C. list.clear(index)

D. list.pop(index)

Đáp án: D

Giải thích: Lệnh pop() trong Python được sử dụng để xoá phần tử tại một vị trí cụ thể trong danh sách.

PHẦN II. Câu trắc nghiệm đúng sai. Thí sinh trả lời từ câu 1 đến câu 2. Trong mỗi ý a), b), c), d) ở mỗi câu, thí sinh chọn đúng hoặc sai

Câu 1: Một danh sách chứa chiều cao của các học sinh trong lớp được lưu dưới dạng một mảng một chiều trong Python. Để tính số học sinh có chiều cao lớn hơn chiều cao trung bình, chúng ta cần làm gì?

a) Tính chiều cao trung bình và sau đó so sánh từng phần tử của mảng với chiều cao trung bình.

b) Lặp qua tất cả các phần tử của mảng để tìm ra giá trị trung bình và cao nhất.

c) Tạo một mảng mới chứa những giá trị cao hơn chiều cao trung bình, rồi tính tổng.

d) Dùng hàm min() để tìm chiều cao nhỏ nhất và từ đó suy ra những người có chiều cao lớn hơn chiều cao trung bình.

a) Đúng. Đây là cách tiếp cận đúng nhất. Bạn cần tính chiều cao trung bình trước, sau đó duyệt qua mảng để đếm số học sinh có chiều cao lớn hơn trung bình.

b) Sai. Lệnh yêu cầu chỉ so sánh với chiều cao trung bình, không phải giá trị cao nhất.

c) Sai. Không cần thiết phải tạo mảng mới chỉ để chứa những giá trị này, điều này không hiệu quả.

d) Sai. Hàm min() tìm giá trị nhỏ nhất, không liên quan đến việc tính chiều cao trung bình.

Câu 2: Giả sử bạn có một bảng 2 chiều mô tả điểm thi của học sinh, mỗi hàng đại diện cho một học sinh và mỗi cột đại diện cho điểm của một môn học. Làm thế nào để tính điểm trung bình của từng học sinh?

a) Duyệt qua từng hàng, tính tổng điểm của mỗi hàng rồi chia cho số cột.

b) Duyệt qua từng cột, tính tổng điểm của mỗi cột và chia cho số hàng.

c) Sử dụng hàm sum() để tính tổng điểm của mỗi hàng và chia cho tổng số học sinh.

d) Dùng lệnh max() để tìm điểm cao nhất trong từng hàng và sau đó chia cho số môn học.

a) Đúng. Đây là cách đúng để tính điểm trung bình của từng học sinh: tính tổng điểm của mỗi hàng (đại diện cho mỗi học sinh) và chia cho số môn học (cột).

b) Sai. Điều này sẽ cho ra điểm trung bình của mỗi môn học, không phải điểm trung bình của từng học sinh.

c) Sai. Hàm sum() chỉ tính tổng, bạn vẫn cần phải chia tổng điểm của mỗi hàng cho số môn học để có điểm trung bình.

d) Sai. Hàm max() chỉ tìm điểm cao nhất, không giúp tính trung bình điểm.

PHẦN III. Câu trả lời ngắn. Thí sinh trả lời từ câu 1 đến câu 3

Câu 1: Làm thế nào để tính tổng và giá trị trung bình của các phần tử trong mảng một chiều trong Python?

Đáp án: Để tính tổng các phần tử của mảng, bạn có thể sử dụng hàm sum(), và để tính giá trị trung bình, bạn chỉ cần chia tổng đó cho số lượng phần tử trong mảng. Ví dụ:

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

total = sum(A)

average = total / len(A)

Giải thích: Hàm sum(A) trả về tổng các phần tử trong mảng A, và len(A) trả về số lượng phần tử trong mảng, cho phép tính giá trị trung bình.

Câu 2: Có thể duyệt mảng một chiều từ cuối về đầu trong Python không?

Có, trong Python bạn có thể duyệt mảng theo chiều ngược lại bằng cách sử dụng cú pháp lặp ngược với lệnh for và hàm range() hoặc sử dụng slicing. Ví dụ:

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

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

print(A[i])

Giải thích: range(len(A)-1, -1, -1) tạo một dãy số ngược từ chỉ số cuối đến chỉ số đầu của mảng, cho phép bạn duyệt mảng từ cuối về đầu.

Câu 3: Làm thế nào để biểu diễn một ma trận 3x3 trong Python và truy cập một phần tử cụ thể trong ma trận đó?

Đáp án: Một ma trận 3x3 có thể biểu diễn dưới dạng danh sách lồng nhau trong Python. Ví dụ:

A = [[12, 10, 91], [11, 45, 20], [15, 34, 55]]

print(A[2][1])

Giải thích: Mảng A được biểu diễn như một ma trận 3x3. Để truy cập phần tử tại hàng thứ 3 và cột thứ 2 (phần tử 34), ta sử dụng chỉ số A[2][1], vì chỉ số trong Python bắt đầu từ 0.

Xem thêm các bài lý thuyết Tin học 11 sách Kết nối tri thức hay, chi tiết tại:

Lý thuyết Bài 19: Bài toán tìm kiếm

Lý thuyết Bài 21: Các thuật toán sắp xếp đơn giản

Lý thuyết Bài 23: Kiểm thử và đánh giá chương trình

Lý thuyết Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Lý thuyết Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình

Xem thêm tài liệu Tin học lớp 11:

Giải Tin học 11 Bài 17: Dữ liệu mảng một chiều và hai chiều

Giải SBT Tin học 11 Bài 17: Dữ liệu mảng một chiều và hai chiều

1 12,643 08/08/2026


Xem thêm các chương trình khác: