Tin Học KHMT
Ôn tập Tin học THPT › Tin học 11 - Khoa học máy tính › Bài 19
Tin học 11 - Khoa học máy tính

Bài 19. Mảng một chiều và cách xử lí dãy số

Bài này giới thiệu cách Python lưu và xử lí một dãy nhiều giá trị cùng loại bằng list - mảng một chiều - cùng những thao tác cơ bản nhất trên một dãy số: duyệt, tính tổng, tính trung bình, đếm theo điều kiện, và tìm giá trị lớn nhất, nhỏ nhất.

Chủ đề F · Lập trình, Thuật toán & CTDL (KHMT) - đọc khoảng 12 phút · 25 câu luyện tập trong ứng dụng

Tương ứng sách giáo khoa
  • Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 1. Kiểu mảng và cấu trúc mảngtr. 89
  • Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 3. Thực hành về tệp, mảng và danh sáchtr. 97
  • Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 17. Dữ liệu mảng một chiều và hai chiềutr. 81–85
Xem bảng đối chiếu cả bộ →

Bắt đầu bằng một hình dung

Hãy tưởng tượng một dãy ngăn kéo dài, đặt sát nhau thành một hàng, phía trên mỗi ngăn có dán một con số thứ tự bắt đầu từ 0: ngăn số 0, ngăn số 1, ngăn số 2... Mỗi ngăn chỉ đựng đúng một giá trị, chẳng hạn một điểm số. Muốn biết giá trị ở ngăn thứ ba, bạn không cần mở lần lượt từng ngăn từ đầu - chỉ cần nhớ đúng số thứ tự rồi mở thẳng ngăn đó ra. Khi một lớp học có vài chục điểm số, hay một trạm đo ghi nhiệt độ của cả một tháng, việc gom tất cả giá trị vào một dãy ngăn kéo đánh số như vậy giúp xử lí gọn gàng hơn nhiều so với việc đặt cho mỗi giá trị một cái tên riêng. Trong lập trình, cấu trúc đóng vai trò dãy ngăn kéo ấy được gọi là mảng một chiều; trong Python, nó được cài đặt bằng kiểu dữ liệu list.

Nội dung bài học

  1. Danh sách: mảng một chiều trong Python
  2. Duyệt danh sách bằng vòng lặp for

Tóm tắt lý thuyết cần nhớ

  • Khi cần lưu và xử lí nhiều giá trị cùng loại theo một thứ tự nhất định (điểm số cả lớp, nhiệt độ nhiều ngày...), Python dùng list làm mảng một chiều thay vì tạo nhiều biến rời rạc.
  • Chỉ số của list bắt đầu từ 0; phần tử ở vị trí i được truy cập bằng ten_list[i], và toàn bộ danh sách có thể được duyệt qua bằng vòng lặp for.
  • Tính tổng, tính trung bình và đếm theo điều kiện trên một dãy số đều theo cùng một khuôn mẫu: khởi tạo một biến trung gian bằng 0 rồi cộng dồn (hoặc cộng thêm 1) qua từng vòng lặp.
  • Tìm giá trị lớn nhất, nhỏ nhất bằng vòng lặp là một thuật toán cụ thể: giữ tạm giá trị đầu tiên làm chuẩn, rồi so sánh và cập nhật dần khi duyệt qua các phần tử còn lại.

Thuật ngữ tiếng Anh trong bài

Tiếng AnhĐọc làNghĩa
arrayơ-RÂYmảng
Dãy các ô chứa dữ liệu cùng loại, xếp liền nhau và được đánh số - như dãy ô để giày ở cửa lớp, mỗi ô một số.
listlítdanh sách
Một dãy nhiều giá trị xếp hàng, giống hộp bút có nhiều ô.
matrixMÂY-trixma trận (bảng số hàng và cột)
Một bảng số xếp ngay ngắn theo hàng và cột - giống một bàn cờ ca-rô có nhiều hàng, nhiều cột.
indexIN-đécchỉ số
Số thứ tự của một phần tử.

Câu hỏi trắc nghiệm có đáp án

Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 25 câu, chấm điểm tự động và giải thích từng câu sai.

Câu 1 · Nhận biết
Trong Python, kiểu dữ liệu nào thường được dùng để lưu một dãy nhiều giá trị cùng loại theo đúng thứ tự, đóng vai trò một mảng một chiều?
  1. int
  2. list
  3. str
  4. bool
Đáp án: B - list lưu được nhiều giá trị theo đúng thứ tự và cho phép truy cập từng phần tử qua chỉ số nên đóng vai trò mảng một chiều; intbool chỉ lưu đúng một giá trị, còn str dùng để lưu một chuỗi kí tự chứ không phải một dãy các giá trị độc lập như điểm số.
Câu 2 · Nhận biết
Danh sách diem có 5 phần tử. Chỉ số nào dùng để truy cập phần tử đầu tiên của diem?
  1. diem[1]
  2. diem[0]
  3. diem(0)
  4. diem.dau
Đáp án: B - Chỉ số trong Python bắt đầu từ 0 chứ không phải từ 1, nên phần tử đầu tiên là diem[0]; diem(0)diem.dau không phải cú pháp truy cập phần tử của list trong Python.
Câu 3 · Thông hiểu
Cho diem = [6, 7, 8, 9] và đoạn code sau. Sau khi đoạn code chạy xong, biến tong có giá trị bằng bao nhiêu?
tong = 0
for d in diem:
    tong = tong + d
  1. 21
  2. 24
  3. 30
  4. 7.5
Đáp án: C - Biến tong được cộng dồn giá trị từng phần tử của diem qua mỗi vòng lặp: 0+6=6, 6+7=13, 13+8=21, 21+9=30; kết quả cuối cùng là 30. Đáp án 21 là do bỏ sót phần tử cuối, 24 là do bỏ sót phần tử đầu, còn 7.5 là nhầm sang giá trị trung bình (30 chia 4) - đoạn code chỉ cộng dồn chứ không chia.
Câu Đúng/Sai (Phần II) · Thông hiểu
Cho biết mỗi phát biểu sau đúng hay sai:
  • a)Trong Python, chỉ số của phần tử đầu tiên trong một danh sách luôn là 0.Đúng
  • b)Muốn duyệt qua toàn bộ phần tử của một danh sách, bắt buộc phải dùng vòng lặp while; vòng lặp for không dùng được.Sai
  • c)Điểm trung bình của một dãy số bằng tổng các phần tử chia cho số lượng phần tử, tức là chia cho len() của danh sách.Đúng
  • d)Hàm max() có sẵn là cách duy nhất để tìm giá trị lớn nhất trong một danh sách; hoàn toàn không thể tự viết thuật toán tìm giá trị lớn nhất bằng vòng lặp.Sai
Vì sao:
  • (a) Đúng vì Python đánh chỉ số bắt đầu từ 0.
  • (b) Sai vì vòng lặp for (dạng for phần_tử in danh_sách hoặc for i in range(len(danh_sách))) là cách rất thông dụng và thuận tiện để duyệt danh sách.
  • (c) Đúng, đây chính là công thức tính trung bình: tổng chia cho số lượng phần tử.
  • (d) Sai vì như bài học đã trình bày, hoàn toàn có thể tự viết thuật toán tìm giá trị lớn nhất bằng vòng lặp so sánh dần từng phần tử, không phụ thuộc vào hàm max() có sẵn.

Thử ngay: minh hoạ từng bước

Bấm từng bước để tự xem cơ chế hoạt động, hoặc bấm “Tự chạy” cho nó tiến mỗi giây một lần. Đổi được dữ liệu đầu vào - không cần đăng nhập.

Học trọn bài này trong ứng dụng

Bài giảng đầy đủ, 25 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.

Mở bài 19 trong ứng dụng

Phần học miễn phí, không cần tạo tài khoản.