Giáo án NLS chuyên đề Tin học 12 KHMT Bài 5: Thực hành kiểu dữ liệu ngăn xếp và hàng đợi
Giáo án chuyên đề NLS Tin học 12 - Khoa học máy tính (bộ SGK thống nhất từ 2026 - 2027) Bài 5: Thực hành kiểu dữ liệu ngăn xếp và hàng đợi. Với năng lực số được tích hợp, tiết học sẽ giúp học sinh tăng cường khả năng ứng dụng công nghệ, tin học vào việc tìm hiểu các chuyên đề học tập. KHBD này là file word, tải về dễ dàng.
=> Giáo án tích hợp NLS chuyên đề Tin học 12 Khoa học máy tính
Các tài liệu bổ trợ
Ngày soạn:…/…/…
Ngày dạy:…/…/…
BÀI 5: THỰC HÀNH KIỂU DỮ LIỆU NGĂN XẾP VÀ HÀNG ĐỢI
(2 tiết)
I. MỤC TIÊU
1. Kiến thức
Sau bài học này, HS sẽ:
- Biết cách kết hợp các kiểu dữ liệu hàng đợi và ngăn xếp để biểu diễn các loại dữ liệu khác nhau.
2. Năng lực
Năng lực chung:
- Năng lực giao tiếp và hợp tác: Biết lựa chọn hình thức làm việc nhóm với quy mô phù hợp với yêu cầu và thực hiện tốt nhiệm vụ.
- Năng lực tự chủ và tự học: Chủ động học tập, tìm hiểu nội dung bài học, biết lắng nghe và trả lời nội dung trong bài học.
- Giải quyết vấn đề và sáng tạo: Trả lời được các câu hỏi, giải quyết được các vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông.
Năng lực Tin học:
- Sử dụng được cấu trúc dữ liệu ngăn xếp và hàng đợi.
Năng lực số:
- 3.4.NC1a: Lập trình (HS viết chương trình Python sử dụng kiểu dữ liệu ngăn xếp và hàng đợi).
- 2.1.NC1a: Tương tác thông qua công nghệ số (HS xem video được tạo bởi công cụ AI và trả lời câu hỏi, sử dụng máy tính cá nhân hoặc thiết bị di động có kết nối Internet để làm bài tập trắc nghiệm củng cố trên môi trường số).
- 5.3.NC1a: Sử dụng sáng tạo công nghệ số (HS sử dụng công cụ lập trình Python IDE trên máy tính cá nhân để tự gõ, kiểm thử và thực thi thành công chương trình mô phỏng quản lý bếp ăn tập thể với sự kết hợp nhuần nhuyễn của Stack và Queue).
- 1.3.NC1a: Quản lí dữ liệu, thông tin và nội dung số (HS thực hiện thao tác xử lý đọc/ghi các tệp dữ liệu cấu trúc input1.inp và input2.inp bằng Python để tổ chức dữ liệu vào hàng đợi và ngăn xếp tương ứng).
- 6.2.NC1a: Sử dụng trí tuệ nhân tạo (HS sử dụng công cụ AI hoặc sản phẩm số do GV cung cấp để tiếp nhận thông tin, trả lời câu hỏi đơn giản).
- 1.1.NC1a: Duyệt, tìm kiếm và lọc dữ liệu, thông tin và nội dung số (HS tiếp cận, khai thác được thông tin từ nguồn học liệu số dưới sự hướng dẫn của GV).
Năng lực AI:
- 12.A3.1: Trách nhiệm công dân trong xã hội có AI (HS thể hiện trách nhiệm học thuật số bằng việc tự tư duy xây dựng giải pháp thuật toán, tự gõ code Python; chỉ sử dụng Chatbot AI dưới sự kiểm soát để hỗ trợ sửa lỗi cú pháp (debug) hoặc tối ưu dòng lệnh, tuyệt đối không lạm dụng sao chép mã nguồn do AI tạo ra hoàn toàn để đối phó).
- 12.C2.1: Các yêu cầu dành cho công cụ AI hỗ trợ các hoạt động học tập và xã hội (HS biết cách thiết lập prompt phù hợp để nhờ Chatbot AI (như ChatGPT hoặc Gemini) hỗ trợ phân tích tri thức mở rộng về cơ chế ứng dụng hàng đợi và ngăn xếp trong việc tối ưu hóa sơ đồ lập lịch tiến trình hệ thống lớn).
3. Phẩm chất
- Có khả năng phân tích yêu cầu của bài toán để sử dụng kiểu dữ liệu ngăn xếp hoặc hàng đợi một cách phù hợp.
II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU
1. Đối với giáo viên
- SGK, KHBD Chuyên đề học tập Tin học 12 – Định hướng Khoa học máy tính.
- Phòng thực hành máy tính cài đặt sẵn môi trường lập trình Python (IDLE, PyCharm, VS Code,…) và có kết nối Internet, máy trình chiếu.
- Học liệu số & Công cụ AI:
- Bộ câu hỏi trắc nghiệm trên website kenhhoctap.edu.vn.
- Video AI được tạo bằng các công cụ AI để khởi động bài học.
- Công cụ Chatbot AI (ChatGPT/Gemini).
2. Đối với học sinh
- SGK Chuyên đề học tập Tin học 12 – Định hướng Khoa học máy tính.
- Vở ghi.
III. TIẾN TRÌNH DẠY HỌC
1. HOẠT ĐỘNG KHỞI ĐỘNG
…………………………………………..
…………………………………………..
…………………………………………..
2. HOẠT ĐỘNG THỰC HÀNH
Nhiệm vụ: Viết chương trình mô phỏng bếp ăn tập thể
a. Mục tiêu: HS biết và nắm được cách sử dụng kiểu dữ liệu list trong Python để mô tả hàng đợi thông qua sơ đồ hoặc mô tả bằng lời, chưa cần lập trình.
b. Nội dung: GV giao nhiệm vụ; HS tìm hiểu nội dung mục 1. Biểu diễn hàng đợi bằng mảng một chiều, kết hợp với những hiểu biết về thực tiễn, thảo luận nhóm thực hiện nhiệm vụ.
c. Sản phẩm: HS biểu diễn được hàng đợi bằng mảng một chiều.
d. Tổ chức thực hiện:
| HOẠT ĐỘNG CỦA GV - HS | DỰ KIẾN SẢN PHẨM | NLS/AI |
Bước 1: GV chuyển giao nhiệm vụ học tập - GV yêu cầu HS hoạt động cá nhân, đọc và phân tích Nhiệm vụ SGK tr.20 sau đó thực hành theo hướng dẫn: Bài toán: + Nhà ăn tập thể của một doanh nghiệp, phục vụ cho người lao động xếp hàng vào chọn suất ăn. Nhà ăn này chỉ có đúng hai loại là cơm gà và cơm bò. Mỗi người khi vào phải xếp hàng và đăng kí món ăn (gà hoặc bò). Thông tin đăng kí suất ăn sẽ được lưu trong tệp input1.inp như hình bên. Trong đó, mỗi hàng tương ứng với lượt đăng kí của một người, số đầu tiên là số định danh (ID của người đăng kí), theo sau là loại suất ăn mà người đó chọn.
+ Căn cứ vào tệp đã đăng kí, người quản lí sẽ cho người lao động xếp thành hai hàng, một hàng gồm toàn bộ những người đã chọn cơm gà, hàng còn lại gồm những người chọn cơm bò. + Do nhà bếp không biết trước thông tin đăng kí của người lao động nên sẽ chuẩn bị trước các suất ăn một cách ngẫu nhiên. Các suất ăn được chuẩn bị sẵn và được đưa vào một ngăn xếp, tổng số lượng các suất ăn bằng với tổng số người lao động. Thông tin các suất ăn đã chuẩn bị sẵn được lưu trong tệp input2.inp có dạng như sau:
+ Quy tắc nhà bếp hoạt động như sau: Mỗi lần người quản lí sẽ lấy một suất ăn trong ngăn xếp và đưa cho người đầu tiên trong hàng đợi tương ứng. Ví dụ, nếu suất ăn được lấy ra là cơm gà thì sẽ đưa cho người đầu tiên trong hàng chọn cơm gà. + Nếu số lượng các loại suất ăn không đúng với số lượng các suất ăn mà mọi người đăng kí, sẽ xảy ra hiện tượng một hàng đợi (ví dụ hàng đợi cơm gà) đã được phục vụ xong nhưng loại đó vẫn còn. Khi đó, người quản lí bắt buộc người đã đăng kí cơm bò phải chuyển sang cơm gà. Yêu cầu: Hãy viết chương trình mô phỏng quá trình trên. Nhận đầu vào là hai tệp input1.inp thể hiện việc đăng kí suất ăn của mọi người và tệp input2.inp thể hiện các suất ăn đã được chuẩn bị trước và đưa vào ngăn xếp. Hãy cho biết có người nào buộc phải đổi suất ăn của mình hay không. Nếu có thì hãy in ra số ID của những người đó. Hướng dẫn: Duyệt lần lượt từng suất ăn trong ngăn xếp. ………………………………………….. ………………………………………….. …………………………………………..
| Nhiệm vụ: Viết chương trình mô phỏng bếp ăn tập thể Phân tích: Để xử lí bài toán này, việc đầu tiên là phải tiến hành đọc dữ liệu từ hai file input và đưa chúng vào những kiểu dữ liệu phù hợp: - Với dữ liệu người lao động trong hàng đợi, yêu cầu người xếp hàng trước sẽ được phục vụ món ăn trước nên chúng ta sẽ sử dụng kiểu dữ liệu hàng đợi để mô phỏng hai hàng đợi của suất ăn gà và suất ăn bò. - Với dữ liệu các suất ăn được đưa vào ngăn xếp, các suất ăn sẽ được lấy lần lượt từ trên xuống dưới nên chúng ta sử dụng dạng dữ liệu ngăn xếp để lưu trữ loại dữ liệu này. * Chương trình thực hiện bài toán:
| - 1.3.NC1a: HS thực hiện các thao tác mở rộng đọc/ghi và phân tích cấu trúc tệp dữ liệu để tổ chức, lưu trữ bộ dữ liệu đầu vào vào bộ nhớ tạm bằng Python. - 3.4.NC1a: HS viết chương trình Python sử dụng kiểu dữ liệu ngăn xếp và hàng đợi. - 5.3.NC1a: HS sử dụng công cụ lập trình Python IDE trên máy tính để viết, biên dịch và chạy thành công chương trình mô phỏng thuật toán xử lý hàng đợi và ngăn xếp kết hợp. - 12.A3.1: HS thể hiện trách nhiệm học thuật số: tự nghiên cứu tài liệu, tự thiết lập giải pháp thuật toán và lập trình; chỉ sử dụng trợ lý AI có kiểm soát để hỗ trợ gỡ lỗi ngoại lệ đầu vào, cam kết không chép mã nguồn giải hộ hoàn toàn. |
C. HOẠT ĐỘNG LUYỆN TẬP
a. Mục tiêu: GV hướng dẫn HS thực hiện các yêu cầu trong phần Luyện tập để đảm bảo HS thực sự hiểu được chương trình của nhiệm vụ thực hành chứ không dừng lại ở mức sao chép và chạy chương trình.
b. Nội dung: HS thực hiện hoạt động Luyện tập SGK tr.22.
c. Sản phẩm học tập: HS hoàn thành hoạt động Luyện tập SGK tr.22.
d. Tổ chức thực hiện:
…………………………………………..
…………………………………………..
…………………………………………..
D. HOẠT ĐỘNG VẬN DỤNG
a. Mục tiêu: HS sử dụng kiểu dữ liệu hàng đợi, ngăn xếp viết được chương trình giải bài toán thực tế.
b. Nội dung: GV hướng dẫn HS thực hiện các bài tập phần Vận dụng SGK tr.22.
c. Sản phẩm học tập: HS hoàn thành bài tập phần Vận dụng SGK tr.22.
d. Tổ chức thực hiện:
Bước 1: GV chuyển giao nhiệm vụ học tập
- GV yêu cầu HS hoạt động cá nhân, hoàn thành bài tập phần Vận dụng SGK trang 22.
Bài toán nhà bếp được thay đổi như sau:
Yêu cầu người lao động xếp thành một hàng để nhận đồ ăn, trong đó những người đăng kí suất cơm gà và những người đăng kí suất cơm bò sẽ đứng lẫn với nhau. Các suất ăn vẫn được nhà bếp thực hiện và đưa vào một ngăn xếp để phục vụ người lao động.
Quy tắc chọn suất ăn như sau: Mỗi người đến lượt sẽ nhận suất ăn được đưa ra từ ngăn xếp, nếu suất ăn đó đúng với suất ăn đã đăng kí thì người này sẽ được nhận suất ăn và đưa ra khỏi hàng đợi. Ngược lại nếu suất ăn không đúng với đăng kí thì người này sẽ ra khỏi hàng đợi và xếp lại vào cuối hàng và tiếp tục đợi. Quá trình chọn suất ăn như trên sẽ dừng lại nếu tất cả số người xếp hàng đều nhận được suất ăn đúng của mình hoặc tất cả mọi người trong hàng đợi đều không thể nhận được suất ăn như đã đăng kí.
Em hãy viết chương trình đọc hai tệp dữ liệu chứa thông tin về các suất ăn của người lao động và tính số người không nhận được suất ăn của mình.
Dữ liệu đầu vào gồm hai tệp, tệp input1.inp chứa thông tin về các suất ăn của người lao động trong hàng đợi, tệp input2.inp chứa thông tin về các suất ăn mà nhà ăn đã chuẩn bị và đưa vào trong ngăn xếp. Ví dụ dữ liệu đầu vào và đầu ra như sau:
![]() | ![]() |
Dữ liệu đầu ra là một số nguyên cho trước chỉ số lượng người xếp hàng không thể chọn được suất ăn của mình. Trong ví dụ trên kết quả đưa ra là 2.
- GV lưu ý: Trong quá trình làm bài có thể sử dụng AI nhưng HS phải tự phân tích thuật toán và tự viết chương trình trước; chỉ dùng AI để gợi ý/gỡ lỗi khi cần, sau đó kiểm chứng bằng cách chạy thử và đối chiếu yêu cầu bài toán.
- GV đặt câu hỏi mở rộng: "Ngoài quản lý tiến trình in ấn, hãy cho biết cơ chế Round-Robin lập lịch CPU trong hệ điều hành máy tính sử dụng hàng đợi như thế nào? Liên hệ sự giống nhau với bài toán vận dụng trên" để mở rộng tri thức.
Bước 2: HS tiếp nhận, thực hiện nhiệm vụ học tập
- HS tiếp nhận và thực hiện nhiệm vụ.
- GV quan sát và hỗ trợ khi HS cần.
Bước 3: Báo cáo kết quả hoạt động, thảo luận
- GV mời một số HS trình bày kết quả.
- HS quan sát bài làm của các bạn khác, nhận xét nhau.
Gợi ý đáp án:
+ Ở bài toán này, chúng ta vẫn sử dụng kiểu dữ liệu hàng đợi để lưu thông tin về suất ăn mà người lao động đăng kí, sử dụng kiểu dữ liệu ngăn xếp để lưu thông tin về các suất ăn mà bếp ăn đã chuẩn bị.
…………………………………………..
…………………………………………..
…………………………………………..
Bước 4: Đánh giá kết quả thực hiện nhiệm vụ học tập
- GV chữa bài.
- Từ kết quả thực hành của HS, GV nhận xét, đánh giá quá trình HS thực hiện nhiệm vụ.
- GV chuẩn kiến thức và kết thúc tiết học.
[3.4.NC1a: HS viết chương trình Python sử dụng kiểu dữ liệu ngăn xếp và hàng đợi.
5.3.NC1a: HS áp dụng công cụ Python IDE thiết kế, thực thi thành công chương trình giải bài toán vận dụng sắp xếp suất ăn lẫn lộn và bắt lỗi lặp vô hạn trên máy tính.
12.A3.1: HS sử dụng AI an toàn, trung thực, có trách nhiệm và không phụ thuộc AI.]
E. THÔNG TIN BỔ SUNG
Khi sử dụng dữ liệu list trong Python làm hàng đợi thì các thao tác cơ bản trên hàng đợi có thể được mô tả bằng các lệnh hoặc phương thức đơn giản đối với list như sau:
| STT | Thao tác chuẩn với hàng đợi | Phương thức trên list tương ứng |
| 1 | Q = Queue() | Q = [] |
| 2 | isEmptyQueue(Q) | Q == [] hoặc len(Q) == 0 |
| 3 | front(Q) | Q[0] |
| 4 | back(Q) | Q[-1] hoặc Q[len(Q)-1] |
| 5 | dequeue(Q) | Q.pop(0) |
| 6 | enqueue(Q,x) | Q.append(x) |
* HƯỚNG DẪN VỀ NHÀ
- Xem lại kiến thức đã học ở Bài 5.
- Xem trước nội dung Bài 6: Cây nhị phân.



