-
Trong video này, ta đang có chương trình
vẽ Winston và nhập một số văn bản.
-
Nhiệm vụ của chúng ta là điều chỉnh vị trí
để Winston nằm dưới mỗi dòng văn bản
-
mô tả các mốc
trong cuộc đời của bạn ấy.
-
Trên khung kết quả, các Winston
đang nằm lộn xộn vì chúng ta
-
vẫn gán giá trị ngẫu nhiên
cho biến "faceX" và "faceY" trong hàm.
-
Trong khi đó, ta cần lập trình sao cho
Winston được vẽ tại đúng một vị trí
-
và vị trí đó cần được
xác định trong mỗi lần gọi hàm,
-
tương tự như với
hàm "ellipse()" và hàm "rect()".
-
Vậy là ta cần vẽ mỗi Winston tại
bốn vị trí khoanh đỏ trên khung kết quả
-
chứ không phải tại các vị trí
ngẫu nhiên trong mỗi lần gọi hàm.
-
Để làm được điều này, chúng ta cần
xác định các "tham số" cho hàm
-
tại phần định nghĩa hàm
ở đầu chương trình
-
và ở lệnh gọi hàm ở dưới chương trình
khi ta cho chương trình chạy hàm.
-
Chúng ta truyền cho hàm "drawWinston()"
giá trị của hai biến "faceX" và "faceY"
-
để hàm này sử dụng giá trị hai biến trên
thay vì các giá trị ngẫu nhiên.
-
Ta bắt đầu xét nên truyền tham số nào
cho các lệnh gọi hàm ở dưới chương trình.
-
Ta cần đặt mỗi Winston dưới một dòng
văn bản nên tham số x và y của mỗi Winston
-
phải gần với giá trị tham số
ta truyền vào các hàm "text()".
-
Ta sẽ thử tọa độ y tăng thêm 10 pixel.
Như vậy, hàm đầu tiên có tham số 10 và 30,
-
hàm tiếp theo là 200 và 30,
rồi đến 10 và 230, 200 và 230.
-
Tọa độ các hàm "drawWinston" như hà
"text", nhưng ta thêm 10 vào tham số y
-
để mỗi hình được vẽ
bên dưới phần văn bản một chút.
-
Tuy nhiên, các Winston vẫn ở vị trí
ban đầu vì hàm phía trên chưa đọc được
-
rằng ta đang truyền tham số cụ thể, vì vậy
hàm vẫn sử dụng các giá trị ngẫu nhiên.
-
Để cho hàm này đọc được
các tham số ta đang truyền,
-
chúng ta phải đưa tên các tham số
vào trong ngoặc đơn cạnh "function".
-
Ta nhập "faceX" và "faceY",
ngăn cách với nhau bởi dấu phẩy.
-
Đây là cách chúng ta gọi các
tham số được truyền vào trong hàm.
-
Bằng cách này, chúng ta
không cần phải viết lại lệnh nữa.
-
Tuy nhiên, vẫn chưa có gì
thay đổi trên khung kết quả.
-
Nếu nhìn vào phần đầu
của các lệnh trong hàm,
-
ta nhận thấy hai biến "faceX" và "faceY"
vẫn được gán với giá trị ngẫu nhiên.
-
Nên ta chỉ cần xóa hai dòng lệnh này đi.
-
Khi này, hai biến "faceX" và "faceY"
đang được truyền vào trong hàm
-
và hàm đang sử dụng các giá trị
trong lệnh gọi hàm ở dưới chương trình.
-
Tuy nhiên, vị trí của các Winston chưa
chính xác. Ta nhớ rằng vị trí văn bản
-
xác định bởi điểm dưới cùng bên trái và
vị trí mặt xác định bởi tâm của hình.
-
Vì vậy, chúng ta cần thay đổi
các giá trị tham số x và tham số y
-
trong lệnh gọi hàm "drawWinston"
để Winston hiển thị ở vị trí ta muốn.
-
Như vậy, ta đang thay đổi giá trị
các tham số được truyền vào hàm.
-
Ta không cần phải
thay đổi định nghĩa hàm
-
vì định nghĩa hàm sẽ nhận
mọi giá trị được truyền vào.
-
Tương tự như hàm "ellipse()"
và hàm "rect()".
-
Sau khi điều chỉnh xong vị trí, ta nhận
thấy kích thước của các Winston hơi to
-
và bị đè lên nhau,
không vừa trong khung kết quả.
-
Và vì ta đã đưa các lệnh vẽ
Winston vào một hàm
-
nên ta có thể thay đổi kích thước
của tất cả Winston cùng một lúc
-
bằng cách thay đổi giá trị của
tham số trong hàm "ellipse()" vẽ mặt.
-
Ta đổi giá trị của tham số
thứ ba và tham số thứ tư thành 190.
-
Như vậy, Winston trông đã vừa vặn hơn
trong khung kết quả. Ta tiếp tục căn chỉnh
-
để Winston nằm giữa
hai dòng văn bản. Được rồi.
-
Vậy, hãy cùng ôn lại nội dung vừa học.
Ta có các lệnh xác định hàm "drawWinston()"
-
và cho phép hàm này nhận
hai giá trị "faceX" và "faceY".
-
Hai giá trị này truyền vào hàm dưới dạng
các biến và có thể được sử dụng trong hàm
-
tương tự như các biến được
khai báo ở đầu chương trình.
-
Sau khi khai báo hàm này,
chúng ta có thể gọi hàm bất kì lúc nào
-
và truyền vào hàm các giá trị khác nhau
để mỗi lần hàm lại sử dụng giá trị mới.
-
Đó chính là chức năng tuyệt vời của
các hàm. Và ta hoàn toàn có thể nghĩ ra
-
các hàm tương tự để ứng dụng trong
lập trình hoặc sử dụng các tham số
-
để điều chỉnh các hàm sao cho phù hợp.
-
Một công thức chung là khi lập trình,
-
bạn nhận ra mình cần thay đổi
cả 4 hình thay vì chỉ 1 hình vẽ,
-
bạn không cần viết lệnh lại từ đầu
mà chỉ cần thay đổi tập lệnh gốc
-
và sao chép thành
4 tập lệnh như vậy.
-
Hãy tiếp tục thực hành với các hàm
và hẹn gặp lại bạn trong video tiếp theo.