Trong Scratch, ta đã biết vị trí của một nhân vật trên màn hình sẽ được biểu diễn bằng cặp tọa độ x (hoành độ – theo chiều ngang) và tọa độ y (tung độ – theo chiều dọc). Chiều rộng và chiều cao của màn hình Scratch tương ứng là 480 và 360.
2. Tìm hiểu về các màn chơi trong trò chơi “Miu Phiêu Lưu Ký”
Khi Miu di chuyển qua lại, màn hình di chuyển theo chuyển động của Miu.
Nói tóm lại, các màn chơi có vị trí tương đối, tọa độ phụ thuộc vào biến di chuyển ngang (của nhân vật Miu) chứ không có tọa độ cố định.
3. Ý tưởng lập trình màn chơi
Để lập trình các màn chơi ban đầu, ta sẽ đặt các màn chơi ở một tọa độ (hoành độ x và tung độ y) cố định, sau đó khi Miu di chuyển thì các hoành độ (tọa độ x) của các màn chơi sẽ đồng loạt thay đổi thành tọa độ x ban đầu của nó trừ đi số bước Miu đã di chuyển.
Trong bài này, tọa độ ban đầu của Đất 1, Đất 2, Đất 3 lần lượt là 0, 480, 960. Chúng ta kí hiệu số bước Miu đã di chuyển chính là giá trị của biến di chuyển ngang. Thay vì thay đổi tọa độ của Miu khi Miu di chuyển, chúng ta sẽ cho Miu đứng yên, và cho các cảnh di chuyển ngược lại dựa vào số bước của Miu.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Trong 2 hình, hình nào bạn Miu giống như đang đi bộ hơn?
Hình 1: Bạn Miu giữ nguyên tư thế khi di chuyển (toàn bộ cơ thể và chân tay không hề thay đổi), tạo cảm giác không chân thực
Hình 2: Bạn Miu di chuyển tay chân giống như đang đi bộ
Tại sao cần làm cho nhân vật di chuyển linh hoạt?
Khi nhân vật di chuyển càng chân thật, trò chơi sẽ trở nên thú vị và sinh động hơn. Đây là một kĩ thuật được sử dụng rất nhiều trong lập trình trò chơi.
Làm sao để cho nhân vật di chuyển linh hoạt?
1. Sử dụng nhiều hình ảnh để thể hiện các trạng thái khác nhau của nhân vật khi thực hiện hành động
Để tạo cảm giác nhân vật chuyển động linh hoạt, chúng ta sẽ cố gắng tạo càng nhiều hình ảnh để miêu tả các trạng thái khác nhau của nhân vật càng tốt. Giữa các trạng thái có càng ít thay đổi, thì chuyển động sẽ càng có cảm giác mượt mà hơn.
Ví dụ: Sử dụng 1 trang phục để thể hiện trạng thái Miu đứng yên và 8 trang phục để thể hiện các trạng thái Miu đi (được sắp xếp theo thứ tự từ 1 đến 9), qua đó miêu tả trạng thái của Miu khi di chuyển qua lại (*). Giữa các trạng thái chỉ có thay đổi rất nhỏ.
2. Dùng khối lệnh để nhân vật thay đổi trang phục
Do các trang phục đã được sắp xếp đúng trình tự, nên chúng ta có thể sử dụng lệnh “trang phục kế tiếp” nếu muốn thay đổi lần lượt trong các trang phục này. Tuy nhiên, nếu chúng ta chỉ thay đổi trong một số trang phục nhất định, chúng ta cần sử dụng biến.
Ví dụ: nếu Miu có 1 trang phục số 1 có tư thế đứng, 8 trang phục từ số 2 đến số 9 là các tư thế đi lần lượt, 1 trang phục số 10 là tư thế rơi, và 1 trang phục số 11 là tư thế nhảy. Nếu chúng ta sử dụng khối lệnh dưới đây, các trang phục sẽ thay đổi từ 1 đến 11 rồi quay lại 1 và tiếp tục, như vậy cả trang phục nhảy và rơi cũng xuất hiện.
Sử dụng trang phục kế tiếp trong khối lệnh bước đi
Sử dụng khối lệnh bước đi để lập trình khối lệnh di chuyển trái phải
Sử dụng khối lệnh di chuyển trái phải để chạy trong chương trình chính
Trong trường hợp này, chúng ta cần kết hợp biến để đảm bảo là chỉ thay đổi các trang phục từ 1 đến 9 khi Miu đi trên mặt đất.
Ví dụ ở đây chúng ta sử dụng biến số Số thứ tự của trang phục như sau:
Thay đổi biến Số thứ tự của Trang Phục mỗi khi di chuyển
Liên tục cập nhật trang phục dựa vào biến Số thứ tự của Trang Phục
Như vậy là con đã biết cách sử dụng trang phục để nhân vật của con di chuyển linh hoạt và sinh động hơn rồi đấy!
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Bài viết đầu tiên trong series Women in Tech sẽ giới thiệu những câu chuyện “chưa bao giờ kể” đến từ một gương mặt vô cùng quen thuộc với các học sinh của STEAM for Vietnam. Đó là cô Zi Vũ, giảng viên lớp CS 101 – Nhập môn Khoa học Máy tính với Python, hiện đang là Kỹ sư Phần mềm (Senior Software Engineer) tại Twitter.
Cô Zi Vũ, tên thật là Vũ Viết Quỳnh Hương, sinh ra và lớn lên ở Hà Nội. Là một cô gái có cá tính, từ bé bạn nhỏ Zi đã cảm thấy vô cùng đam mê với máy tính và công nghệ – khác hẳn với những bạn gái cùng tuổi. Khi sở hữu chiếc máy tính đầu tiên năm 9 tuổi, cô bé ấy đã bị mê mẩn bởi những phần mềm có thể giúp con người làm việc hiệu quả hơn như Microsoft Word, Excel, hay những trò chơi kinh điển như Civilization, Đế chế, vv…
Từ đó, cô Zi mơ ước sẽ có ngày bản thân mình viết ra được những phần mềm tuyệt như vậy. Nhưng mọi con đường theo đuổi đam mê đều không dễ dàng, nhất là với một cô gái đi theo ngành khoa học và máy tính.
Dù có lợi thế tiếp cận lập trình từ hồi cấp Hai nhưng con đường cô Zi trở thành một lập trình viên cũng không hoàn toàn bằng phẳng.
Thi vào cấp Ba, cô Zi không đỗ nguyện vọng 1 là khối chuyên Tin của trường chuyên Khoa học Tự nhiên, Hà Nội. Vào học khối chuyên Lý nhưng vẫn ao ước được học thêm lập trình, cô Zi đã không đầu hàng trước thất bại ấy. Mày mò tìm hiểu cơ hội khác, cô quyết định đăng ký khóa học Lập trình viên Quốc tế 2 năm tại Hanoi Aptech để lấy bằng lập trình viên, khi mới chỉ 16 tuổi. Đó là quãng thời gian bận rộn khi vừa học cấp Ba, cô Zi vừa theo lớp lập trình buổi tối, vừa đi làm thêm và tham gia các hoạt động ngoại khóa khác. Nhưng đó cũng là khi cô Zi cảm nhận được nhiều niềm vui nhất, nhìn thấy mục tiêu trở thành lập trình viên chuyên nghiệp đang gần lại.
Năm cuối cấp Ba, một lần nữa cô lại gặp thử thách khi không vượt qua được kì thi tuyển của các trường Đại học nước ngoài. Thất bại này khiến cô thay đổi cách mình quản lý thời gian để tập trung học tập trong một năm tiếp theo, xuất sắc giành học bổng toàn phần vào một trong các đại học hàng đầu về công nghệ trên thế giới – Đại học Quốc gia Singapore NUS (National University of Singapore). Những trải nghiệm thất bại và thành công đó đã giúp cô Zi có một tâm lý vững vàng hơn khi đối mặt với thử thách.
Ngày bé, cô Zi luôn có ước mơ được khám phá và đặt chân đến mọi nơi trên thế giới. Tuy nhiên hơn 20 năm trước, mạng Internet, truyền hình cáp và ngành hàng không giá rẻ đều chưa phát triển. Ước mơ đó của một cô gái nhỏ trong một gia đình bình thường nghe quả thật xa vời. Khi đó cô Zi cũng không ngờ rằng, đam mê lập trình của mình lại chính là chìa khóa mở ra rất nhiều cơ hội cho cô thực hiện ước mơ thuở nhỏ.
Năm 19 tuổi, với tấm vé vào đại học NUS, cô Zi lần đầu tiên đi máy bay đến một đất nước mới, khám phá một nền văn hoá mới và bắt đầu cuộc sống tự lập. Trải nghiệm học tập và sống ở một đất nước hiện đại như Singapore cùng một môi trường giáo dục hàng đầu đã tiếp thêm tự tin cho cô để khám phá những vùng đất mới.
Năm thứ ba Đại học, cô Zi ứng tuyển và nhận được cơ hội tham gia chương trình thực tập khởi nghiệp một năm tại Thung lũng Silicon (Hoa Kỳ), cùng lúc theo học tại Đại học Stanford theo chương trình trao đổi của trường. Ra trường, cô đầu quân cho một công ty consulting ở Singapore chuyên tư vấn cho các công ty startups trong khu vực. Công việc đó đã giúp cô được trải nghiệm làm việc với các đội ngũ ở khắp Đông Nam Á.
Những năm sau đó, cô Zi đã đi thăm thú và sống ở nhiều nơi trên thế giới, đúng như ước mơ khi còn nhỏ. Cô đã làm dự án ở Indonesia, New Zealand, đầu quân cho các công ty ở Đức, Canada, Mỹ và hiện giờ, cô đang tạm dừng chân ở một thành phố nhỏ bên bờ Tây của Canada trong khi làm việc với các đồng sự ở khắp nơi trên thế giới.
Cô Zi mà các bạn học sinh của STEAM for Vietnam thường thấy qua màn hình máy tính không chỉ là một kỹ sư phần mềm, cô còn là một người phụ nữ với những câu chuyện đầy tính phiêu lưu và một trái tim thực sự nhiệt huyết với tất cả những điều mình theo đuổi.
Đã hơn 20 năm kể từ khi gắn bó với lập trình, và cô Zi vẫn luôn thấy hài lòng về lựa chọn của mình.
Cô Zi cũng muốn dành lời nhắn gửi tới những ai còn đang băn khoăn về rào cản cho các bạn gái trong ngành công nghệ nói chung và lập trình nói riêng:
“Trong 5 năm trở lại đây thì sự hỗ trợ dành cho phụ nữ trong công nghệ nói riêng và những nhóm thiểu số trong công nghệ nói chung đã tốt hơn rất nhiều. Chính vì vậy, cơ hội cho các bạn nữ trong công nghệ cũng nhanh chóng tăng lên, ví dụ: học bổng của các công ty lớn như Google, các chương trình của chính phủ, các Hội chợ nghề nghiệp như Grace Hopper Career Fair, những chương trình hỗ trợ nữ giới làm công nghệ của các công ty lớn nhỏ, vv…
Hãy liên hệ với những người đi trước để hiểu hơn về thực tế những khó khăn có thể gặp phải và cách khắc phục khi là một cô gái làm công nghệ. Nên nói chuyện với những “người thật việc thật”, chứ đừng chỉ nghe những ý kiến không có cơ sở của người ngoài ngành như “con gái ai lại làm nghề này”. Bên cạnh đó, hãy tập trung vào rèn luyện và nâng cấp bản thân. Khi mình có khả năng và kinh nghiệm thì những định kiến cũng không còn có cơ sở để tồn tại nữa.
Dù có khó khăn, được làm điều mình thích và theo đuổi đam mê của mình là một hạnh phúc lớn. Chúc các bạn có được sự quyết tâm và bền bỉ trên con đường mình lựa chọn nhé!”
Kết thúc bài viết, STEAM for Vietnam muốn gửi tặng một câu nói đến những cô gái còn đang chần chừ với đam mê hay chưa có đủ niềm tin vào bản thân. Đó là câu nói của Zig Ziglar – một trong những người bán hàng giỏi nhất nước Mỹ và tác giả của cuốn sách bán chạy mọi thời đại “Hẹn bạn trên đỉnh thành công”:
Bạn là người duy nhất biết rõ và sử dụng tốt nhất khả năng của mình. Đó là một trách nhiệm lớn của mỗi chúng ta.
Zig Ziglar
Vì vậy, STEAM for Vietnam chúc bạn luôn sống có trách nhiệm với những khả năng tiềm tàng bên trong mình, dũng cảm theo đuổi ước mơ của bản thân và tạo ra được những giá trị tốt đẹp cho cuộc sống.
— — —
Designer: Nghi Bùi
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Như hình vẽ minh họa ở trên, hộp va chạm thực chất là một trang phục của nhân vật, thường có kích thước nhỏ hơn nhân vật một chút.
Tại sao chúng ta cần sử dụng hộp va chạm?
Hộp va chạm dùng để xác định chiều rộng và chiều cao thực của nhân vật. Hộp va chạm giúp kiểm tra hành động chạm vào các nhân vật khác hoặc với nền đất một cách chính xác hơn.
Hộp va chạm thường có kích thước nhỏ hơn nhân vật một chút. Tại sao lại phải nhỏ hơn nhỉ ?
Câu trả lời là: để tránh những trường hợp như râu hay đuôi của nhân vật chạm tường mà đã dừng ngay trò chơi. Nếu râu hay đuôi của nhân vật chạm tường mà được tính như cả nhân vật chạm tường thì trò chơi có lẽ chưa được chân thật và thuyết phục cho lắm.
Trong hình trên, Miu phía bên trái không có hộp va chạm thì Miu sẽ dừng lại khi râu của Miu chạm vào tường. Khi đó, tuy chỉ có râu của Miu chạm vào tường nhưng trò chơi sẽ tính là cả nhân vật chạm vào tường. Như vậy người chơi sẽ có thể cảm thấy trò chơi chưa đủ chân thật và sống động.
Ngược lại, Miu ở phía bên phải sử dụng hộp va chạm, Miu sẽ không dừng lại khi râu của mình chạm vào tường nữa. Miu sẽ chỉ dừng lại và bị tính là chạm tường khi hộp va chạm chạm vào tường.
Một ví dụ khác trong bài học số 6: Miu Phiêu Lưu Ký
Hình 1: Có sử dụng kỹ thuật hộp va chạm Hình 2: Không sử dụng kỹ thuật hộp va chạm
Như chúng ta đã thấy, ở hình 1 – Có sử dụng hộp va chạm, chân của nhân vật Miu có chạm sát đất và một phần râu vẫn có thể chạm nền đất bên phải.
Trong khi đó ở hình 2 – Không sử dụng hộp va chạm, chân Miu luôn bị cách đất một khoảng và Miu không thể đến quá gần phía nền đất bên phải. Tuy khoảng cách không quá xa nhưng vẫn sẽ làm cho người chơi cảm giác không được thuyết phục, trò chơi không chân thật và sống động bằng hình 1.Link trò chơi Miu Phiêu Lưu Ký để các bạn có thể thử: https://bit.ly/s4v_cs001_sp21_bai6_coban
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
1. Nhóm khối lệnh giúp trả về số thứ tự của giá trị của phần tử trong danh sách
a. Khối lệnh “phần tử thứ 1 của đồ dùng học tập” giúp trả về giá trị của phần tử có số thứ tự 1 trong danh sách đồ dùng học tập
Gõ số thứ tự của phần tử (phải là số).
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Ví dụ:
Khối lệnh “phần tử thứ 3 của đồ dùng học tập” sẽ trả về giá trị của phần tử có số thứ tự 3 trong danh sách đồ dùng học tập. Đó là phần tử “bút”.
Lưu ý: Khối lệnh trả về số hoặc chữ nên cần ghép vào khối lệnh khác để tạo hành động cho nhân vật.
b. Khối lệnh “số thứ tự của sách trong đồ dùng học tập” giúp trả về số thứ tự của phần tử có có giá trị là sách trong danh sách đồ dùng học tập
Gõ giá trị của phần tử (có thể là chữ hoặc số).
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Ví dụ:
khối lệnh “số thứ tự của vở trong đồ dùng học tập” sẽ trả về số thứ tự của phần tử mang giá trị là vở trong danh sách đồ dùng học tập. Đó là thứ tự 4.
Lưu ý: Trong trường hợp phần tử đó không có trong danh sách, khối lệnh sẽ trả về số 0. Do khối lệnh trả về số nên cần phải ghép vào khối lệnh khác để tạo hành động cho nhân vật.
2. Khối lệnh trả về kích thước của danh sách
Khối lệnh “kích thước của đồ dùng học tập” trả về độ dài của danh sách đồ dùng học tập. Đó cũng chính là số phần tử có trong danh sách đồ dùng học tập.
Lưu ý: Khối lệnh trả về số nên cần ghép vào khối lệnh khác để tạo hành động cho nhân vật.
3. Khối lệnh kiểm tra xem một phần tử có thuộc danh sách hay không
Khối lệnh “đồ dùng học tập chứa phần tử sách?” giúp kiểm tra xem có phần tử nào mang giá trị là sách trong danh sách đồ dùng học tập hay không. Nếu có, khối lệnh sẽ trả về True. Trái lại, nếu không có phần tử đó trong danh sách, khối lệnh sẽ trả về False.
Lưu ý: Do khối lệnh trả về True (Đúng) hoặc False (Sai) nên cần đặt vào các khối lệnh nhận giá trị True hay False để tạo thành một hành động cụ thể cho nhân vật
4. Khối lệnh ẩn/hiện danh sách
Khối lệnh hiện danh sách đồ dùng học tập giúp hiện danh sách đồ dùng học tập trên màn hình
Khối lệnh ẩn danh sách đồ dùng học tập giúp hiện danh sách đồ dùng học tập trên màn hình
Ví dụ:
— — — STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới. — — —
Khối lệnh “Thêm phần tử đèn học vào trong đồ dùng học tập” giúp thêm phần tử đèn học vào vị trí cuối cùng trong danh sách.
Gõ phần tử bạn muốn thêm vào ô trống thay cho chữ đèn học (có thể là chữ hoặc số).
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Kết quả sau khi thực hiện khối lệnh:
Khối lệnh “Xóa phần tử thứ 2 của đồ dùng học tập” giúp xóa phần tử có số thứ tự là 2 trong danh sách
Gõ số thứ tự của phần tử bạn muốn xóa trong danh sách đồ dùng học tập.
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Kết quả sau khi thực hiện khối lệnh:
Khối lệnh “xóa hết tất cả trong liệt kê đồ dùng học tập” giúp xóa hết tất cả các phần tử có trong danh sách đồ dùng học tập.
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Kết quả sau khi thực hiện khối lệnh:
Khối lệnh “Thêm phần tử bàn học tại vị trí số 2 của đồ dùng học tập” giúp thêm phần tử “bàn học” vào vị trí số 2 của danh sách đồ dùng học tập.
Gõ phần tử (có thể là chữ hoặc số) và số thứ tự (phải là số) của phần tử đó bạn muốn xóa trong danh sách đồ dùng học tập.
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Kết quả sau khi thực hiện khối lệnh:
Khối lệnh “thay thế phần tử tứ 4 của danh sách đồ dùng học tập bằng vở” giúp ta thay giá trị của phần tử có số thứ tự 4 trong danh sách đồ dùng học tập
Gõ số thứ tự của phần tử (phải là số) và giá trị mới của phần tử đó mà bạn muốn thay thế (có thể là chữ hoặc số).
Để thay đổi danh sách, hãy click mũi tên chỉ xuống ở phía cuối khối lệnh. Sau đó, chọn tên danh sách thích hợp.
Kết quả sau khi thực hiện khối lệnh:
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Danh sách cho tất cả các nhân vật trong trò chơi: Danh sách này có thể sử dụng cho tất cả các nhân vật trong trò chơi
Danh sách chỉ cho nhân vật này: Danh sách này chỉ có thể sử dụng bởi chính nhân vật mà chúng ta chọn lúc đầu để tạo danh sách.
HƯỚNG DẪN TẠO DANH SÁCH
Bước 1: Chọn nhân vật bạn muốn để tạo danh sách
Bước 2: Chọn nhóm lệnh Các biến số
Bước 3: Chọn Tạo một Danh sách. Sau đó màn hình sẽ hiển thị hộp thoại:
Bước 4: Điền tên danh sách, chọn loại danh sách thích hợp rồi sau đó nhấn nút OK
Kết quả:
Sau khi nhấn OK, danh sách mới được tạo ra và xếp ở dưới như hình vẽ.
Ngoài ra để thao tác với danh sách, chúng ta có các khối lệnh sau đây. STEAM for Vietnam sẽ có các bài viết chi tiết hơn về từng khối lệnh.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Trong bài viết trước nói về Biến, chúng ta đã sử dụng Biến để lưu dữ liệu. Ví dụ, chúng ta có thể dùng biến để lưu điểm của người chơi. Tuy nhiên, hạn chế của biến là một biến cùng lúc chỉ có thể lưu được một giá trị dữ liệu. Cụ thể, biến có thể lưu trữ điểm của người chơi hiện tại. Khi có người chơi khác chơi trò chơi, ta phải đặt lại biến đó về 0 và sau đó lưu điểm của người chơi mới.
Vậy nếu ta muốn lưu điểm số của tất cả các người chơi đã từng chơi trò chơi để tạo thành danh sách những người chơi xuất sắc nhất?
DANH SÁCH LÀ GÌ?
Danh sách (List) có thể hiểu là một kiểu biến đặc biệt. Nó cho phép lưu nhiều biến khác bên trong nó.
Danh sách được cấu thành bởi nhiều phần tử. Mối phần tử gồm 2 thành phần là “số thứ tự” và “giá trị” (tương tự như biến). Trong Scratch, số thứ tự của danh sách được bắt đầu từ số 1.
Ví dụ:
Ở ví dụ trên, danh sách có tên là “đồ dùng học tập”. Danh sách này có 8 phần tử. Các phần tử được đánh số thứ tự từ 1 cho đến 8.
Các số 1, 2, 3,… 8 là số thứ tự của phần tử
Các giá trị sách, máy tính,… cặp sách là giá trị của phần tử
Giá trị của các phần tử trong list thì có thể trùng nhau. Ví dụ như trong danh sách “đồ dùng học tập”, phần tử thứ 3 và 5 đều có giá trị là “bút”.
Tuy nhiên số thứ tự của phần tử là duy nhất. Chúng ta có thể dùng số thứ tự để ám chỉ giá trị của phần tử đó. Ví dụ mylist[6] có nghĩa là phần tử thứ 6 trong danh sách “đồ dùng học tập” và nó có giá trị là “máy tính”. Sẽ chỉ có duy nhất một phần tử thứ 6, không thể có 2 phần tử có cùng số thứ tự là 6.
Các bạn có thể tham khảo thêm về định nghĩa của danh sách trong khoa học máy tính tại đây.
— — —
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Office Hour (giờ học ngoại khoá) là một buổi trao đổi để giúp học sinh có hội được giải đáp các thắc mắc liên quan đến bài tập lập trình và học hỏi các bạn cùng lớp. Tuy khá phổ biến trong các trường học phương Tây, hình thức học này vẫn còn khá mới lạ với các bạn học sinh Việt Nam.
Bài viết này sẽ giới thiệu một vài câu hỏi được quan tâm nhiều nhất trong buổi Office Hour đầu tiên của STEAM for Vietnam.
“Bộ tứ” giảng viên của khoá học CS101: Nhập môn Khoa học Máy tính bao gồm Trần Mạnh Hùng, Ngô Minh Đức, Nguyễn Quốc Khánh, và Vũ Viết Quỳnh Hương – kỹ sư phần mềm đến từ các tập đoàn công nghệ hàng đầu trên thế giới gồm có Amazon, Google, Twitter và Chan Zuckerberg Initiative (tổ chức phi lợi nhuận của vợ chồng nhà sáng lập Facebook). Các thầy cô đều từng là những sinh viên Việt Nam xuất sắc với thành tích học tập “khủng” và hiện có nhiều năm kinh nghiệm làm việc trong lĩnh vực lập trình.
Khi lên ý tưởng khoá học, các thầy cô mong muốn giúp các em học sinh xây dựng được những kỹ năng nền tảng vững chắc để trở thành các kỹ sư phần mềm, nhà quản lý sản phẩm, hay các nhà nghiên cứu về các công nghệ tiên tiến trong tương lai.
Do đó, các giờ học được định hướng ưu tiên phát lối tư duy logic và kỹ năng giải quyết vấn đề bên cạnh việc sử dụng thành thạo ngôn ngữ Python.
Office Hour không giống như những buổi học thông thường. “Người điều hành nội dung” chính của lớp học lại chính là các bạn học sinh. Những câu hỏi thắc mắc về bài tập về nhà hay “bí kíp” học lập trình sẽ được đem ra thảo luận cùng với cả lớp.
Câu hỏi: (Bạn Phương Linh)
Các thầy cô ơi, con nên học lập trình bao nhiêu tiếng mỗi tuần? Và sau bao nhiêu tiếng thì con có thể lập trình nhuần nhuyễn như các thầy cô ạ?
Trả lời: (Thầy Ken)
Theo một nghiên cứu thầy được biết, khi mình muốn giỏi một lĩnh vực nào, mình phải dành ít nhất 10,000 giờ đồng hồ để học và thực hành lĩnh vực ấy để có thể thành thạo được.
Hồi thầy còn học ở Đại học Bách khoa Hà Nội, thầy chỉ mới biết một chút kiến thức về lập trình và thuật toán cơ bản. Thầy muốn lập trình ứng dụng game “Ai Là Triệu Phú” trên nền tảng Android. Thầy phải tìm hiểu dần dần các kiến thức để áp dụng vào phát triển sản phẩm. Sau vài tháng lập trình, khi thầy đưa game đó lên Google Play thì được nhiều người tải và đứng đầu Android Top 1 mấy tháng liền.
Các bạn có hứng thú với lập trình thì không cần phải chờ đến khi mình giỏi rồi mới làm sản phẩm. Hãy bắt đầu nghĩ về sản phẩm mình muốn làm ngay từ bây giờ và bắt tay vào làm thôi.
Câu hỏi: (Bạn Hùng Mạnh – Học viên trên LiveApp)
Khi bắt đầu giải một bài tập nên bắt đầu suy nghĩ từ đâu ạ? Con bám vào bài học rồi mà chưa biết định hướng ạ.
Trả lời: (Thầy Harry)
Những buổi học vừa qua, thầy thấy có nhiều bạn cũng có khúc mắc khi làm bài. Thầy có một số gợi ý để các bạn làm theo.
Đầu tiên, hãy tìm cách suy nghĩ. Chúng mình chưa nên code vội mà tự mình làm bài tập bằng tay, lập luận xem mình sẽ giải quyết theo phương hướng nào.
Nếu khó quá, các em có thể lên hệ thống LMS để đặt câu hỏi cho các thầy cô và trợ giảng. Các bạn có thể chia sẻ với nhau những khó khăn hoặc những phương pháp giải mới và cùng tiến bộ. Đừng ngại khi mình phải đặt câu hỏi để giải bài tập.
Ngoài ra, hãy sử dụng chương trình Thonny (để luyện code Python) để viết và thử chạy code. Mình có thể viết nhiều code để hiểu hơn cách vận hành của chương trình, nó giúp mình có thêm ý tưởng để giải bài tập.
Câu hỏi: (Bạn Cao Đức – Học viên trên Live App)
Khi nói đến lập trình ai cũng nghĩ nó là cái gì đó rất cao siêu, như kiểu mặc định phải giỏi toán lắm mới làm được. Vậy có cần phải giỏi toán để theo đuổi môn lập trình không ạ?
Trả lời: (Thầy Đức)
Lập trình cần một số kiến thức nhất định về toán: tư duy logic, và học lên chuyên sâu sẽ cần thêm các lĩnh vực khác. Các thầy cô của STEAM for Vietnam sẽ dạy cho bạn những kiến thức cần thiết để nắm được kiến thức lập trình. Những kiến thức về toán học cần thiết đều là rất cơ bản và có hàng triệu học sinh, sinh viên theo học được.
Bên cạnh các câu hỏi liên quan đến bài học, các bạn học viên rất hứng thú muốn tìm hiểu thêm công việc của một kỹ sư máy tính. Dường như đây sẽ là một ngành học mà nhiều bạn nhỏ hứng thú và có mong muốn theo đuổi. Câu hỏi: (Bạn Tuấn Anh – Học viên trên Live App)
Các thầy cô có thể chia sẻ một ngày làm việc của kỹ sư lập trình được không ạ? Mình ngồi gõ code ngày này qua ngày khác thôi ạ?
Trả lời: (Thầy Đức)
Một ngày làm việc của kỹ sư lập trình chủ yếu là chia sẻ, làm việc chung với đồng nghiệp để tìm ra hướng giải quyết cho vấn đề, và lập trình chỉ là một phần trong số đó. Đối với công việc cụ thể của thầy Đức ở Google, thì môi trường làm việc ở Google rất tốt, làm việc ở đây hiệu quả nhưng cũng có rất nhiều thời gian dành cho gia đình và bạn bè.
Cô Zi:
Từ kinh nghiệm của một người đã gắn bó với lập trình được 20 năm rồi thì cô thấy là quan niệm làm lập trình viên chỉ ngồi code ngày này qua ngày khác là chưa đầy đủ. Mình như một người “thợ xây” phải luyện tập nhuần nhuyễn, từng đoạn code là từng viên gạch, phải làm nhiều thì mới thẳng hàng lối.
Hiện tại, khi đã có nhiều kinh nghiệm hơn, thì công việc của cô giống một “kiến trúc sư” hơn là một “thợ xây”. Với một dự án đưa ra, cô sẽ định hướng xem căn nhà sẽ xây như thế nào, đặt nền móng ra sao, từng phòng ốc và cách sử dụng các nguyên vật liệu thế nào. Hệ thống này ngày càng phức tạp hơn nên việc trao đổi, làm việc nhóm, viết báo cáo cũng ngày càng chiếm nhiều thời gian hơn và cô cũng không còn trực tiếp viết nhiều code nữa. Ngoài ra, các lập trình viên có kinh nghiệm cần đào tạo các lớp lập trình viên mới trong công ty và công việc này cũng sẽ chiếm một phần thời gian.
Bạn nào muốn đi theo lập trình thì mình xác định đây là quá trình học hỏi không ngừng nghỉ. Code của ngày hôm nay sẽ khác với code của ngày hôm qua, nên sẽ không lo là phải làm đi làm lại một cái quá lâu đâu.
Câu hỏi: (Bạn Hồng Anh – Học viên trên Zoom)
Con muốn trở thành một kỹ sư lập trình như cô Zi. Nhưng nhiều người nói với con rằng Công nghệ thông tin không dành cho con gái và định hướng con với ngành khác. Con phải làm sao bây giờ ạ?
Trả lời: (Cô Zi)
Cô rất đồng cảm với Hồng Anh. Hồi cô mới học lập trình cách đây 20 năm hồi ấy quan niệm việc lập trình không dành cho con gái vẫn còn là quan niệm phổ biến ở Việt Nam nên cô cũng thường gặp phải sự nghi ngờ và không ủng hộ của những người xung quanh. Cô nghĩ là nếu bạn nữ nào muốn theo con đường này thì cũng phải chuẩn bị tinh thần và bản lĩnh để đương đầu với những sự nghi ngại như thế đấy.
Tuy nhiên, bên cạnh những thiệt thòi đó, chúng ta cũng có rất nhiều thuận lợi. Hiện tại việc đa dạng hóa nhân lực cho ngành lập trình đang được chú trọng, nên có nhiều cơ hội về học bổng, việc làm, giảng dạy dành cho nữ. Là số ít, chúng ta cũng dễ gây ấn tượng hơn với đồng nghiệp và người đối diện. Ngoài ra, các công việc của lập trình viên giàu kinh nghiệm bao gồm rất nhiều làm việc nhóm, trao đổi, giao tiếp mà phụ nữ cũng có nhiều lợi thế trong việc này.
Cô hy vọng Hồng Anh vững bước trên con đường mà mình lựa chọn và cũng đừng buồn khi chưa có được nhiều sự ủng hộ, chúng mình cứ vững tin trên con đường mình chọn thôi ha.
TẠM KẾT
Ngay trong lần thử nghiệm đầu tiên, ý tưởng về buổi Office Hour đã dành được nhiều sự ủng hộ. Rất nhiều học sinh đã sôi nổi đặt rất nhiều câu hỏi thú vị cho các thầy cô. Và chính những thắc mắc của các bạn lại khiến các thầy cô như được nhìn thấy chính mình cách đây nhiều năm, khi mới chập chững học lập trình.
Tuy chỉ diễn ra trong 2 tiếng, buổi học Office Hour là một trong những buổi học có lượng tương tác cao nhất giữa thầy và trò của STEAM for Vietnam. Các bạn học sinh quan tâm có thể xem lại video buổi học Office Hour tại đây.
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.
Một ngày cuối tháng 05 – 2020, Justin Hoàng (Hoàng Thế Sơn) khi đang lướt Facebook đã vô tình nhìn thấy bài chia sẻ về STEAM for Vietnam từ một người bạn. Justin đã nhanh chóng bị thu hút bởi những sứ mệnh mà tổ chức hướng đến, sau đó gia nhập làm tình nguyện viên với vai trò một Graphic Designer (thiết kế đồ hoạ).
Công việc thường ngày của Justin – sinh viên Năm cuối ngành Thiết kế Công nghiệp tại DAAP, Trường Đại học Cincinnati (Ohio, Hoa Kỳ) – là khảo sát người dùng, lên ý tưởng, thiết kế, ứng dụng VR (công nghệ thực tế ảo)…
Tưởng chừng như mọi thứ chẳng liên quan đến lập trình, nhưng Justin lại sớm “bén duyên” với STEAM for Vietnam từ những ngày đầu. Là Designer chính và chàng trai duy nhất của team Marketing, Justin đã “bất đắc dĩ” trở thành thầy giáo cho Bài học đặc biệt 3.1 của lớp CS 001 – Nhập môn Tư duy máy tính và Lập trình Scratch. Chia sẻ về hành trình đến với STEAM for Vietnam, anh cho biết: “Những sứ mệnh mà STEAM for Vietnam muốn mang lại cho nền giáo dục nước nhà đã thôi thúc mình “nhanh tay đăng kí” để chung tay góp sức cùng mọi người”.
Từ đây, Justin đã cùng các giáo viên tạo ra những nhân vật đầu tiên đại diện cho STEAM for Vietnam trong Trại hè Lập trình 2020 kết thúc thành công vào tháng 10 vừa qua.
Tuy nhân vật trong các khóa học đều là sản phẩm mà Justin tạo ra, nhưng anh chưa bao giờ nghĩ đến một ngày mình sẽ trở thành giáo viên cho một buổi học nào đó. Cơ duyên này đã xuất hiện vào một ngày cuối tháng 10/2020, khi đội ngũ tình nguyện viên đang bắt tay chuẩn bị cho Học kỳ Mùa xuân 2021. Các thầy cô khoá CS 001 đã gợi ý Justin biến câu chuyện thiết kế nhân vật của mình trở thành một bài học đặc biệt.
Hành trình tạo ra bạn Trâu không hề đơn giản. Ban đầu, Justin dự tính sẽ vẽ cô gái mặc áo dài vì hình ảnh ấy đã rất quen thuộc với người dân Việt Nam. Nhưng sau đó, được sự góp ý của mọi người, Justin đã tìm kiếm một hình ảnh trung lập để tạo hứng thú cho cả các bé trai lẫn bé gái. Trùng hợp thay, lịch học chính thức được dời đến gần Tết Tân Sửu. Sau khi nhận được cái “gật đầu” của mọi người trong đội ngũ CS 001, bạn Trâu đã trở thành nhân vật chính cho Bài học đặc biệt 3.1.
Trước tiên, Justin phác thảo hình ảnh bạn Trâu trên giấy để có được những nét hoạ cơ bản. Sau đó, anh bắt đầu vẽ trên Scratch những hình ảnh đầu tiên. Tuy nhiên, từ bản vẽ đầu này, Justin đã mất hơn 3 tuần để chỉnh sửa với 15 phiên bản Trâu khác nhau trước khi đem đến phiên bản hoàn chỉnh và đẹp mắt cho các bạn nhỏ.
Không chỉ đẹp mắt, các thầy cô cũng bàn bạc thêm với Justin để có thể tối ưu hoá các bước vẽ, giúp cho các bé có thể tạo ra bạn Trâu một cách dễ dàng nhất. Ngoài ra, khi bắt đầu buổi dạy thử cùng cô Joy (quản lý vận hành) và cô Trang (giáo viên lớp CS 001), Justin nhận ra vấn đề nảy sinh trong buổi dạy: “Làm sao để giúp học sinh chọn màu nhanh hơn khi vẽ?” Thế là anh đã nhanh trí chuẩn bị sẵn những màu cần dùng cho bạn Trâu trong Cột mốc số 0, giúp các em tiết kiệm thời gian vẽ và không phải lúng túng tìm màu của bạn Trâu.
Qua trải nghiệm một buổi làm thầy giáo, Justin bộc bạch: “Trải nghiệm này với mình rất thú vị, bởi mình đã học được rất nhiều kĩ năng mới, cũng như “thấm thía” hơn công sức và tâm huyết của các thầy cô trong quá trình chuẩn bị cho những bài giảng.”
STEM và STEAM dù chỉ khác nhau ở chữ “A” — Arts (Nghệ thuật) nhưng đây là một yếu tố không thể thiếu trong quá trình tìm hiểu các vấn đề khoa học xoay quanh STEAM, giúp các em học sinh phát triển khả năng sáng tạo trong các cách tiếp cận và giải quyết vấn đề, mở ra những phương án lựa chọn mới.
Khi được hỏi về “bí kíp” vẽ đẹp và cách lồng ghép “A” vào lập trình của mình, Justin cho biết chúng ta nên bắt đầu từ những gì đơn giản nhất. Sau đó chọn các màu sắc hài hoà và đặc biệt, phải tìm được niềm vui trong lúc vẽ. Về phần đưa “A” vào các trò chơi, anh tin rằng chúng ta nên hiểu rõ rằng mình đang lập trình cho ai (đối tượng khán giả), với mục đích gì, từ đó chúng ta có thể phát triển và đưa sức sáng tạo của mình bay xa.
Với Bài học 3.1 – Hoạt hoạ, Justin hy vọng các bạn nhỏ có thể hiểu rằng, kỹ năng sáng tạo là rất cần thiết! Anh cũng khuyên các bạn, “Dù các bạn có làm gì, chúng ta cũng hãy nên tìm kiếm niềm vui để tạo động lực trên con đường lâu dài. Và hãy “Take one step at a time” – bắt đầu những thứ phức tạp từ những điều đơn giản nhất, như cách các bạn được học trong bài Hoạt hoạ”.
Lời kết, nhân dịp đầu xuân, xin chúc cho tất cả quý phụ huynh, cùng các em học sinh một năm mới an lành và hạnh phúc. Mong rằng mọi người sẽ tiếp tục đồng hành cùng STEAM for Vietnam trên chặng đường dài sắp tới để tạo ra thế hệ trẻ tài năng, đại diện cho Việt Nam vươn ra bản đồ khoa học và công nghệ trên thế giới!
STEAM for Vietnam Foundation là tổ chức phi lợi nhuận 501(c)(3) được thành lập tại Hoa Kỳ với sứ mệnh thúc đẩy các hoạt động liên quan tới giáo dục STEAM (Science — Khoa học, Technology — Công nghệ, Engineering — Kỹ thuật, Arts — Nghệ thuật, Mathematics — Toán học) tại Việt nam. STEAM for Vietnam được thành lập và vận hành bởi đội ngũ tình nguyện viên là du học sinh và chuyên gia người Việt trên khắp thế giới.