1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Một số kinh nghiệm hướng dẫn thực hành bài kiểu tệp cho học sinh lớp 11 tại trường THPT lê lợi

24 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,04 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Không nhưcác chương trình không sử dụng kiểu tệp mà học sinh đã học trước đó thì chỉ cần gõ đầy đủ nội dung một chương trình sách giáo khoa viết thì nó sẽ chạy được vàthế là có thể xem k

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA

TRƯỜNG THPT LÊ LỢI

SÁNG KIẾN KINH NGHIỆM

MỘT SỐ KINH NGHIỆM HƯỚNG DẪN THỰC HÀNH BÀI KIỂU TỆP CHO HỌC

SINH LỚP 11 TẠI TRƯỜNG THPT LÊ LỢI

Người thực hiện: Nguyễn Thị Trang Chức vụ: Giáo viên

SKKN thuộc lĩnh vực (môn): Tin học

THANH HÓA NĂM 2021

Trang 2

MỤC LỤC

Phần 1 MỞ ĐẦU 1

1.1 Lí do chọn đề tài 1

1.2 Mục đích nghiên cứu 1

1.3 Đối tượng nghiên cứu 2

1.4 Phương pháp nghiên cứu 2

1.5 Những điểm mới của SKNN 3

Phần 2: NỘI DUNG 4

2.1 Cơ sở lí luận 4

2.1.1 Pascal và kiểu tệp văn bản 4

2.1.2 Thao tác với tệp 4

2.1.2.1 Khai báo kiểu tệp văn bản 4

2.1.2.2 Gắn tên tệp 4

2.1.2.3 Mở tệp để ghi 5

2.1.2.4 Ghi dữ liệu vào tệp 5

2.1.2.5 Ghi thêm dữ liệu vào tệp đã có nội dung 6

2.1.2.6 Mở tệp để đọc 6

2.1.2.7 Đọc dữ liệu từ tệp 6

2.1.2.8 Đóng tệp 8

2.1.2.9 Một số hàm và thủ tục chuẩn thường dùng trong thao tác tệp 8

2.2 Thực trạng vấn đề nghiên cứu 8

2.3 Biện pháp tiến hành 9

2.3.1 Ghi dữ liệu vào tệp 9

2.3.1.1 So sánh thủ tục ghi dữ liệu ra màn hình và thủ tục ghi tệp 9

2.3.1.2 Ghi vào tệp tất cả dữ liệu của các lần thực hiện chương trình 10

2.3.1.3 Ghi thêm dữ liệu vào tệp đã được khởi tạo trước đó 11

2.3.1 Đọc dữ liệu từ tệp 12

2.3.1.1 Đọc dữ liệu kiểu xâu trên một dòng vào một biến 12

2.3.1.2 Đọc dữ liệu kiểu xâu của cả tệp 13

2.3.1.3 Đọc dữ liệu kiểu số 14

2.3.2 Bài tập vận dụng 17

2.4 Hiệu quả của sáng kiến kinh nghiệm 18

Phần 3 KẾT LUẬN VÀ KIẾN NGHỊ 19

1 Kết luận 19

2 Kiến nghị 20

TÀI LIỆU THAM KHẢO 20

Trang 3

Phần 1 MỞ ĐẦU 1.1 Lí do chọn đề tài

Pascal là một môn học không hề dễ đối với tất cả mọi người, không nhiềuhọc sinh yêu thích môn học này Tuy nhiên với học sinh, việc học ngôn ngữ lậptrình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua

đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợicủa các chương trình hoạt động trong máy tính, các máy tự động… Qua đó các

em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp màcác em chọn sau này

Trong quá trình giảng dạy môn tin học 11 tôi đã rút ra nhiều bài học kinhnghiệm cho bản thân qua từng tiết dạy và luôn mong muốn học sinh có thể vậndụng hiệu quả máy tính để phục vụ cho việc tiếp thu kiến thức cho bản thân Vìvậy với điều kiện phòng máy nhà trường hiện có tôi đã luôn tạo điều kiện chocác em học tập trực quan trên máy tính không chỉ các tiết thực hành mà còn cả

đa số các tiết lí thuyết Tuy nhiên ở chương V Tệp và thao tác với tệp, sẽ rất khócho học sinh trong việc tự mình thực hành được một bài tập về kiểu tệp nếukhông có sự hướng dẫn của giáo viên bởi sách giáo khoa chưa làm rõ nhiều vấn

đề và cũng không hướng dẫn học sinh thực hành Bởi việc chạy được mộtchương trình có sử dụng kiểu tệp phải đảm bảo nhiều yếu tố đi kèm Không nhưcác chương trình không sử dụng kiểu tệp mà học sinh đã học trước đó thì chỉ cần

gõ đầy đủ nội dung một chương trình sách giáo khoa viết thì nó sẽ chạy được vàthế là có thể xem kết quả còn với kiểu tệp thì không Để cho học sinh có thể hiểuđược sâu sắc một số vấn đề cơ bản khi làm việc với kiểu tệp và tạo hứng thú chocác em ở nội dung này tôi đã tìm hiểu, xây dựng và áp dụng sáng kiến kinh

nghiệm “Một số kinh nghiệm hướng dẫn thực hành bài Kiểu tệp cho học sinh lớp 11 tại trường THPT Lê Lợi”.

1.2 Mục đích nghiên cứu.

Mục đích của đề tài tôi muốn hướng đến là giúp học sinh có thể thực thựchành một cách hiệu quả các bài tập cơ bản về kiểu tệp văn bản mà cụ thể là cóthể viết chương trình trên máy tính để ghi dữ liệu vào tệp, đọc dữ liệu từ tệp Nhiệm vụ của đề tài là hướng dẫn người học giải quyết được các vấn đềxung quanh việc dùng Pascal để: Khởi tạo một tệp, ghi dữ liệu của các lần thực

Trang 4

hiện chương trình vào tệp, ghi thêm dữ liệu vào tệp đã có nội dung, đọc dữ liệukiểu xâu trên một dòng, đọc dữ liệu kiểu xâu của cả tệp, đọc dữ liệu kiểu số, đọc

dữ liệu từ tệp có nội dung là kiểu xâu và kiểu số,…

1.3 Đối tượng nghiên cứu.

Với phạm vi bài viết này tôi xin trao đổi với các đồng nghiệp một số kinhnghiệm thực hành nhằm phát huy tính tích cực, chủ động của học sinh trong dạyhọc tin học lớp11 tại trường THPT Lê Lợi

Học sinh lớp 11A1, 11A2, 11A3 của năm học 2019-2020

So với các lớp 11A2, 11A4, 11A5 của năm học 2020-2021

1.4 Phương pháp nghiên cứu.

- Phương pháp quan sát: là phương pháp thu thập thông tin về quá trình giáo

dục trên cơ sở tri giác trực tiếp các hoạt động sư phạm cho ta những tài liệu sống

về thực tiễn giáo dục để có thể khái quát nên những qui luật nhằm chỉ đạo tổchức quá trình giáo dục được tốt hơn Phương tiện để quan sát chủ yếu là tri giáctrực tiếp

- Phương pháp điều tra: thể hiện qua việc tác động trực tiếp của người

nghiên cứu vào đối tượng nghiên cứu thông qua câu hỏi để có những thông tincần thiết cho công việc của mình

- Phương pháp thực nghiệm sư phạm: là phương pháp thu nhận thông tin về

sự thay đổi số lượng, chất lượng trong nhận thức và hành vi của các đối tượnggiáo dục do giáo viên tác động đến bằng một số câu hỏi và bài tập kiểm tra.Thực nghiệm sư phạm là so sánh kết quả tác động của giáo viên lên một nhómlớp - gọi là nhóm thực nghiệm - với một nhóm lớp tương đương không đượctác động (dạy, giáo dục theo cách bình thường vẫn được giáo viên phổ thông sửdụng) - gọi là nhóm đối chứng Tuy nhiên vì trong năm học này tôi chỉ dạy Tinhọc 11 ở lớp 11A2 nên đây là nhóm đối chứng (khi chưa tác động) và vừa lànhóm thực nghiệm (sau khi đã tác động)

Trang 5

- Phương pháp thống kê: sau khi thực nghiệm kết quả cần được xử lí bằng

toán học thống kê Qua bảng thống kê sẽ phản ánh được một cách chi tiết kếtquả đạt được qua quá trình thực nghiệm Từ đó người nghiên cứu có thể đánhđược vấn đề mình đang nghiên cứu và đưa ra phương pháp dạy học tốt hơn

- Phương pháp so sánh: dùng để đối chiếu giữa các vấn đề nghiên cứu nhằm

làm bật lên tác dụng của cách thực hiện đối với từng vấn đề Qua đó giúp ngườihọc hiểu rõ hơn nội dung được lĩnh hội Khi nghiên cứu đề tài này tôi đã trìnhbày theo hình thức: chương trình trên Pascal, kết quả trên màn hình, nội dungtrên tệp được ghi hoặc đọc (tất cả đều được chụp từ màn hình nhằm mục đíchgiúp người đọc dễ phân biệt và so sánh)

- Phương pháp phân tích: ở mỗi vấn đề được nghiên cứu tôi đã sử dụng

phương pháp phân tích để làm rõ nội dung Phương pháp phân tích là đặc biệtquan trọng và đó chính là chìa khóa để mở ra những kiến thức mới nhưng dễtiếp thu hơn

1.5 Những điểm mới của SKNN.

Đề tài nhằm hướng dẫn học sinh lớp thực hành các bài tập đơn giản về kiểutệp văn bản trên Pascal, giúp các em giải quyết được 2 thao tác cơ bản đối vớitệp là đọc và ghi tệp Những điều này sách giáo khoa chỉ nói chung chung, chưa

cụ thể rõ ràng và cũng không hướng dẫn học sinh thực hành bài tập về kiểu tệp(cách khởi tạo một tệp để đọc, ghi thêm dữ liệu vào tệp, ghi tất cả input vàoutput của các lần thực hiện chương trình vào tệp, cách để kiểm tra kết quả đọcđược từ tệp hay kiểm tra kết quả ghi tệp,…) Những vấn đề trên sẽ được trìnhbày trong đề tài này

Trang 6

Phần 2: NỘI DUNG 2.1 Cơ sở lí luận.

2.1.1 Pascal và kiểu tệp văn bản.

Pascal do Niklaus Wirth phát triển dựa trên Algol năm 1970 Pascal là tênnhà toán học và triết học người Pháp Blaise Pascal Cho đến nay Pascal vẫnđược dùng để giảng dạy về lập trình trong nhiều trường trung học và đại họctrên thế giới Đó là ngôn ngữ cho phép mô tả thuật toán thuận tiện

Trong chương trình tin học 11 học sinh được làm quen với Pascal Trong đókiểu tệp văn bản là một trong những nội dung được đề cập đến Tệp văn bản làtệp mà dữ liệu được ghi dưới dạng các kí tự theo mã ASCII Trong tệp văn bản,dãy kí tự được kết thúc bởi kí tự xuống dòng hay kí tự kết thúc tệp tạo thành mộtdòng Tất cả các dữ liệu thuộc các kiểu dữ liệu mà học sinh đã được học đềuđược lưu trữ trên bộ nhớ trong (RAM) và do đó dữ liệu sẽ bị mất khi tắt máy.Với một số bài toán có khối lượng dữ liệu lớn, có yêu cầu lưu trữ để xử lí nhiềulần, cần có kiểu dữ liệu tệp (file) Với lợi ích của kiểu tệp được đề cập ở trên thìviệc sử dụng được kiểu tệp một cách thành thạo trong quá trình lập trình là mộtđiểu thật sự quan trọng và cần thiết

2.1.2 Thao tác với tệp.

Qua quá trình tìm hiểu từ sách giáo khoa tin học 11, sách giáo viên tin học

11, quyển “Lý thuyết và bài tập Pascal” của tác giả Quách Tuấn Ngọc tôi xintrình bày những kiến thức cơ bản về kiểu tệp văn bản để hỗ trợ cho học sinhtrong quá trình giải (thực hành) các bài toán đơn giản về kiểu dữ liệu này

2.1.2.1 Khai báo kiểu tệp văn bản.

Khai báo biến tệp để sau đó có thể thực hiện các thao tác với tệp thông quabiến tệp

Cú pháp khai báo: var <biến tệp>:text;

Ví dụ: var f: text;

2.1.2.2 Gắn tên tệp.

Trong lập trình ta không thao tác trực tiếp với tệp dữ liệu trên đĩa mà thôngqua biến tệp Gắn tên tệp với biến tệp thực chất là tạo một tham chiếu giữa tệptrên đĩa và biến tệp trong chương trình, làm cho biến tệp trở thành đại diện chotệp

Trang 7

Cú pháp: assign(<biến tệp>, <tên tệp>);

VD: assign(f, ‘kieutep.txt’);

Giáo viên cần phân tích cho học sinh thấy rõ sự cần thiết phải gắn tên tệp.Trong cú pháp, tên tệp là hằng xâu kí tự hoặc giá trị của một biểu thức kiểu xâu

kí tự (để hệ điều hành có thể xác định được tệp) Tất cả các phép toán trên biến

tệp sẽ tác động tới tệp Sau khi gọi thủ tục assign, sự liên kết giữa biến tệp và tệp chỉ kết thúc khi có lời gọi asign khác thực hiện cũng trên biến tệp này (nghĩa

là lúc đó biến tệp được chuyển sang gắn cho một tên tệp khác) Tên tệp có thể làđường dẫn chứa ổ đĩa, danh sách các thư mục liên tiếp cách nhau bởi dấu đường

dẫn (\), cuối cùng là tên tệp: <ổ đĩa>:\<tên thư mục>\<tên thư mục>\ \<tên

thư mục>\<tên tệp>

Độ dài lớn nhất của tên tệp là 79 kí tự Đặc biệt khi tên tệp là xâu rỗng (độdài xâu bằng 0) thì biến tệp được gắn cho tên tệp vào/ra chuẩn Các tệp vào rachuẩn được quy định tương ứng với thiết bị nào là tùy thuộc vào sự mở rộng của

mỗi chương trình dịch Pascal, nhưng thường quy định tệp input chuẩn là bàn phím, tệp output chuẩn là màn hình.

2.1.2.3 Mở tệp để ghi.

Trước khi ghi dữ liệu vào tệp ta phải dùng thủ tục mở tệp để ghi Thủ tục nàyđược gọi sau khi đã gắn tên tệp Cú pháp như sau:

rewrite(<biến tệp>);

Khi thực hiện thủ tục rewrite(<biến tệp>), nếu trên thư mục gốc của ổ đĩa

chưa có tệp cần ghi dữ liệu thì tệp sẽ được tạo với nội dung rỗng (tên tệp đãđược xác định trong thủ tục gắn tên tệp Nếu đã có, thì nội dung cũ sẽ bị xóa đểchuẩn bị ghi dữ liệu mới vào

Ví dụ:

assign(f,’tong2so.txt’)

; rewrite(f);

2.1.2.4 Ghi dữ liệu vào tệp.

Việc ghi dữ liệu vào tệp giống như ghi dữ liệu ra màn hình Câu lệnh dùngthủ tục ghi có dạng:

Write(<biến tệp>,<danh sách kết quả>);

hoặc

Trang 8

Writeln(<biến tệp>,<danh sách kết quả>);

Trong đó, danh sách kết quả gồm một hoặc nhiều phần tử Phần tử là biếnđơn hoặc biểu thức (số học, quan hệ hoặc lôgic) hoặc hằng xâu Trường hợp cónhiều phần tử thì các phần tử được ngăn cách bởi dấu phẩy Khi hai kết quả liềnnhau cùng là kiểu số thì thì cần xen vào giữa hai kết quả này một kết quả trung

gian là hằng kí tự dấu cách Ví dụ write(f, x,y) Trong đó f là biến tệp, x và y là

hai biểu thức số Trước khi gọi thủ tục này, tệp tương ứng với biến tệp phải là

đang mở Thủ tục write sẽ ghi lần lượt các kết quả theo danh sách kết quả vào

tệp kể từ vị trí hiện thời của con trỏ tệp

2.1.2.5 Ghi thêm dữ liệu vào tệp đã có nội dung

Đây là một nội dung mới không được đề cập trong chương trình sách giáokhoa nhưng tôi nghĩ nó thật sự cần thiết trong nhiều tình huống cụ thể

Để ghi thêm dữ liệu vào tệp đã có nội dung ta dùng thủ tục append có cú

pháp:

append(<biến tệp>); Ví dụ: append(f);

Sau khi gọi thủ tục append thì tệp sẽ sẵn sàng để ghi dữ liệu mới vào.

Lưu ý: Trong cùng một chương trình nếu muốn ghi thêm dữ liệu thì không

thể đồng thời sử dụng thủ tục rewrite và append vì khi dùng rewrite nội dung

tệp sẽ bị xóa (nếu tệp đã có nội dung) Vì vậy mục đích ghi thêm dữ liệu mớivào sẽ không được thực hiện như ý muốn

Trang 9

Ví dụ: read(f, x, y); hoặc readln(f, x, y);

Thủ tục read ghi xong con trỏ tệp không xuống dòng tiếp theo, thủ tục readln ghi xong con trỏ tệp xuống đầu dòng tiếp theo.

Danh sách biến là một hoặc nhiều tên biến đơn Trong trường hợp nhiều biếnthì các biến cách nhau bằng dấu phẩy Các dữ liệu cần đọc trong tệp gán vàodanh sách biến phải lần lượt có kiểu tương ứng với kiểu của biến trong danhsách biến Nếu sai kiểu thì chương trình mắc lỗi Lỗi này thường gặp khi biến cókiểu số, dữ liệu đọc được lại là kiểu xâu

Ví dụ: tệp docdulieu.txt chỉ có một dòng là tin hoc 11

Chương trình mắc lỗi “Invalid numberic format” vì sau khi đọc được s =

‘tin ho‟ , tiếp theo đọc dữ liệu cho x thì mắc lỗi thì mắc lỗi vì ‘c’ không là dạng

số Nếu thay lại khai báo s:string[7] hoặc string[8] thì chương trình không mắc

lỗi khi thực hiện đọc tệp, kết quả trên màn hình là

Với biến kiểu xâu, thủ tục read sẽ đọc các kí tự trên một dòng vào biến (loại

trừ các kí tự đánh dấu hết dòng hoặc hết tệp) Số kí tự đọc vào biến xâu bằng độdài đã khai báo của xâu

Với biến kiểu nguyên hoặc thực, thủ tục read sẽ không đọc dấu cách, dấu tab

hoặc dấu xuống dòng đứng trước xâu chữ số Nếu xâu chữ số không phù hợp với

Trang 10

kiểu của biến tương ứng thì xuất hiện lỗi vào/ra (I/O) Trong trường hợp ngược

lại, giá trị kiểu số tương ứng của xâu chữ số sẽ được gán cho biến Lệnh read

tiếp theo sẽ sẽ được bắt đầu bằng dấu cách, dấu tab, hoặc kí tự hết dòng vàchúng cũng lại được bỏ qua Những dấu này vạch định cho các xâu chữ số

2.1.2.9 Một số hàm và thủ tục chuẩn thường dùng trong thao tác tệp.

Hàm EOF: trả lại giá trị true nếu con trỏ tệp ở vị trí cuối tệp, ngược lại trả

2.2 Thực trạng vấn đề nghiên cứu.

Trường THPT Lê Lợi là một ngôi trường có đa phần học sinh nông thôn, họcsinh không có máy tính cá nhân để hỗ trợ cho việc học nên học sinh chủ yếuthực hành tin học tại phòng máy của nhà trường Điều này ít nhiều ảnh hưởngđến khả năng tự rèn luyện cũng như kiến thức về tin học của các em

Qua khảo sát các lớp tôi đã từng dạy qua nội dung mà đề tài đang nghiên cứuthì có đa số học sinh không biết viết một chương trình đơn giản để ghi dữ liệuvào một tệp và đọc dữ liệu từ tệp đó rồi ghi kết quả đọc được ra màn hình Các

em chỉ biết cú pháp khai báo, gắn tên tệp, các thao tác với tệp cùng các ví dụriêng lẻ mà không hệ thống lại được thành một chương trình hoàn chỉnh được.Nguyên nhân là do:

Trang 11

- Thời lượng phân phối chương trình không đủ để vừa cho học sinh học lýthuyết và thực hành ngay sau đó;

- Nội dung sách giáo khoa không có bài tập thực hành cho nội dung nàyđồng thời cũng không nêu ra các yếu tố để một chương trình có sử dụng kiểu tệpchạy được trên máy;

- Phần mở rộng của các tệp ghi trong sách giáo khoa xa lạ với học sinh Do

đó, nếu chạy được chương trình thì không biết cách để kiểm tra kết quả;

- Không có niềm đam mê dành cho môn học

- Số lượng máy trên phòng máy ít, không đủ đáp ứng như cầu thực hành của

1 lớp trong thời lượng 1 tiết

2.3 Biện pháp tiến hành.

Sau khi trình bày xong phần lý thuyết, giáo viên phát cho mỗi học sinh mộtphiếu bài tập thực hành kiểu tệp văn bản Vì học sinh chưa từng thực hành mộtbài tập nào về kiểu dữ liệu này nên với từng ví dụ giáo viên nhắc lại kiến thức

và yêu cầu học sinh xem lại lý thuyết đồng thời đặt các câu hỏi gợi mở, các câuhỏi yêu cầu học sinh so sánh các vấn đề mà dễ gây nhầm lẫn cho các em Trongquá trình thực hành giáo viên yêu cầu học sinh ghi vào phiếu bài tập mỗi khihoàn thành xong một bài Cụ thể biện pháp tiến hành hướng dẫn thực hành cácbài tập như sau:

2.3.1 Ghi dữ liệu vào tệp

2.3.1.1 So sánh thủ tục ghi dữ liệu ra màn hình và thủ tục ghi tệp

Học sinh có thể dễ dàng trả lời thông qua việc so sánh cú pháp giữa 2 thủ tục

này Giống nhau: đều dùng tên thủ tục là write hoặc writeln, các phần tử của

danh sách kết quả; khác nhau: thủ tục ghi tệp có thêm biến tệp

Tuy nhiên giáo viên cần nhấn mạnh cho học sinh nội dung sau: nếu muốn

ghi dữ liệu vào tệp trên nhiều hàng thì cần dùng thủ tục writeln (ghi xong xuống

dòng để chuẩn bị ghi tiếp dòng sau) Điều này tương tự như ghi dữ liệu ra mànhình

Để làm rõ những nội dung về gắn tên tệp, so sánh việc ghi dữ liệu ra mànhình và ghi tệp tôi đã đưa ra vài tập ví dụ 1 như sau:

Ví dụ 1 Hãy viết chương trình trên Pascal tính tổng của 2 số (ghi kết quả ra màn hình đồng thời ghi 2 số nhập từ bàn phím và tổng của chúng vào tệp

Trang 12

Giáo viên yêu cầu học sinh viết một chương trình nhập 2 số từ bàn phím,tính tổng của chúng và xuất kết quả ra màn hình Sau đó mới bổ sung vào cáccâu lệnh để ghi giá trị của 2 biến đã nhập, kết quả tổng của chúng

Sau đó, giáo viên cần mở tệp đã ghi xem nội dung cần ghi vào tệp có thực sự

được ghi vào tệp chưa (tệp ở đây là tong2so.out) đồng thời yêu cầu các em so

sánh nội dung đã được ghi trên tệp này và nội dung được ghi ra màn hình

Chương trình trên Pascal

Như vậy, nếu muốn ghi nhiều dòng dữ liệu vào tệp thì cứ thêm thủ tục

Writeln(<biến tệp>,<danh sách kết quả>);

2.3.1.2 Ghi vào tệp tất cả dữ liệu của các lần thực hiện chương trình.

Câu hỏi thứ nhất học sinh có thể trả lời được như sau: tệp chỉ ghi kết quả củalần thực hiện chương trình sau cùng Vì sau mỗi lần thực hiện chương trình thủ

tục rewrite(f) lại được gọi, điều đó có nghĩa là nội dung đã ghi trên tệp sẽ được

Ngày đăng: 20/05/2021, 21:10

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w