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

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
Xem thêm các chương trình khác:
- Soạn văn lớp 11 Kết nối tri thức - hay nhất
- Văn mẫu lớp 11 - Kết nối tri thức
- Tóm tắt tác phẩm Ngữ văn 11 – Kết nối tri thức
- Tác giả tác phẩm Ngữ văn 11 - Kết nối tri thức
- Giải SBT Ngữ văn 11 – Kết nối tri thức
- Bố cục tác phẩm Ngữ văn 11 – Kết nối tri thức
- Giải Chuyên đề học tập Ngữ văn 11 – Kết nối tri thức
- Nội dung chính tác phẩm Ngữ văn lớp 11 – Kết nối tri thức
- Soạn văn 11 Kết nối tri thức (ngắn nhất)
- 100+ đề Đọc hiểu Ngữ Văn 11 (có đáp án)
- Giải sgk Toán 11 – Kết nối tri thức
- Giải Chuyên đề học tập Toán 11 – Kết nối tri thức
- Lý thuyết Toán 11 - Kết nối tri thức
- Giải sbt Toán 11 – Kết nối tri thức
- Bài tập Tiếng Anh 11 Global success theo Unit có đáp án
- Giải sgk Tiếng Anh 11 – Global success
- Giải sbt Tiếng Anh 11 - Global Success
- Trọn bộ Từ vựng Tiếng Anh 11 Global success đầy đủ nhất
- Ngữ pháp Tiếng Anh 11 Global success
- Giải sgk Vật lí 11 – Kết nối tri thức
- Lý thuyết Vật lí 11 – Kết nối tri thức
- Giải sbt Vật lí 11 – Kết nối tri thức
- Giải Chuyên đề học tập Vật lí 11 – Kết nối tri thức
- Chuyên đề dạy thêm Vật lí 11 cả 3 sách (2026 có đáp án)
- Giải sgk Hóa học 11 – Kết nối tri thức
- Giải Chuyên đề học tập Hóa học 11 – Kết nối tri thức
- Lý thuyết Hóa 11 - Kết nối tri thức
- Giải sbt Hóa học 11 – Kết nối tri thức
- Chuyên đề dạy thêm Hóa 11 cả 3 sách (2026 có đáp án)
- Giải sgk Sinh học 11 – Kết nối tri thức
- Lý thuyết Sinh học 11 – Kết nối tri thức
- Giải Chuyên đề học tập Sinh học 11 – Kết nối tri thức
- Giải sbt Sinh học 11 – Kết nối tri thức
- Giải sgk Giáo dục Kinh tế và Pháp luật 11 – Kết nối tri thức
- Giải Chuyên đề học tập Kinh tế pháp luật 11 – Kết nối tri thức
- Lý thuyết Kinh tế pháp luật 11 – Kết nối tri thức
- Giải sbt Kinh tế pháp luật 11 – Kết nối tri thức
- Giải sgk Lịch sử 11 – Kết nối tri thức
- Giải Chuyên đề học tập Lịch sử 11 – Kết nối tri thức
- Lý thuyết Lịch sử 11 - Kết nối tri thức
- Giải sbt Lịch sử 11 – Kết nối tri thức
- Giải sgk Địa lí 11 – Kết nối tri thức
- Giải Chuyên đề học tập Địa lí 11 – Kết nối tri thức
- Lý thuyết Địa lí 11 - Kết nối tri thức
- Giải sbt Địa lí 11 – Kết nối tri thức
- Giải sgk Công nghệ 11 – Kết nối tri thức
- Lý thuyết Công nghệ 11 - Kết nối tri thức
- Giải sbt Công nghệ 11 – Kết nối tri thức
- Giải sgk Giáo dục quốc phòng an ninh 11 – Kết nối tri thức
- Lý thuyết Giáo dục quốc phòng 11 – Kết nối tri thức
- Giải sbt Giáo dục quốc phòng 11 – Kết nối tri thức
- Giải sgk Hoạt động trải nghiệm 11 – Kết nối tri thức
