< Return to Video

Function Parameters | Computer Programming | Khan Academy

  • 0:00 - 0:06
    Trong video này, ta đang có chương trình
    vẽ Winston và nhập một số văn bản.
  • 0:06 - 0:11
    Nhiệm vụ của chúng ta là điều chỉnh vị trí
    để mỗi hình Winston nằm dưới mỗi dòng văn bản
  • 0:11 - 0:13
    mô tả các mốc
    trong cuộc đời của bạn ấy.
  • 0:13 - 0:16
    Trên khung kết quả, các hình Winston
    đang nằm lộn xộn vì chúng ta
  • 0:16 - 0:20
    vẫn gán giá trị ngẫu nhiên
    cho biến "faceX" và "faceY" trong hàm.
  • 0:20 - 0:27
    Trong khi đó, ta cần lập trình sao cho
    Winston được vẽ tại một vị trí cụ thể
  • 0:27 - 0:30
    và vị trí đó cần được
    xác định rõ trong mỗi lần gọi hàm,
  • 0:30 - 0:34
    tương tự như khi ta dùng
    hàm "ellipse()" và hàm "rect()".
  • 0:34 - 0:40
    Vậy là ta cần vẽ các hình Winston tại
    bốn vị trí được khoanh đỏ trên khung kết quả
  • 0:40 - 0:44
    chứ không phải tại các vị trí
    ngẫu nhiên trong mỗi lần gọi hàm.
  • 0:44 - 0:49
    Để làm được điều này, chúng ta cần
    xác định các "tham số" cho hàm
  • 0:49 - 0:53
    tại phần định nghĩa hàm bên trên
  • 0:53 - 0:57
    cũng như ở lệnh gọi hàm phía dưới
    khi ta cho chương trình chạy hàm.
  • 0:57 - 1:02
    Cụ thể, ta sẽ truyền hai tham số
    "faceX" và "faceY" cho hàm "drawWinston()"
  • 1:02 - 1:09
    và truyền giá trị cụ thể cho hai tham số này
    thay vì giá trị ngẫu nhiên.
  • 1:09 - 1:15
    Đầu tiên, ta xét xem nên truyền giá trị nào cho
    tham số ở các lệnh gọi hàm phía dưới.
  • 1:15 - 1:20
    Ta thấy rằng, 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
  • 1:20 - 1:24
    phải gần với các giá trị ta truyền vào
    các tham số ở hàm "text()".
  • 1:24 - 1:30
    Ta có thể cho các hình
    nằm cách văn bản 10 pixel.
  • 1:30 - 1:32
    Như vậy, hàm vẽ đầu tiên
    có giá trị tham số là 10 và 30,
  • 1:32 - 1:41
    hàm tiếp theo là 200 và 30,
    rồi đến 10 và 230, 200 và 230.
  • 1:41 - 1:45
    Giá trị tham số x của các lệnh gọi hàm
    "drawWinston" vẫn giống như các hàm "text",
  • 1:45 - 1:46
    nhưng ta thêm 10 vào tham số y
  • 1:46 - 1:49
    để mỗi hình được vẽ
    bên dưới phần văn bản một chút.
  • 1:49 - 1:55
    Tuy nhiên đến đây, ta thấy các Winston vẫn ở vị trí
    ban đầu. Đó là vì ở phần định nghĩa hàm ở trên,
  • 1:55 - 2:00
    ta chưa truyền tham số cụ thể cho hàm, nên hàm
    vẫn dùng các giá trị ngẫu nhiên theo biến ở dưới.
  • 2:00 - 2:04
    Để hàm này đọc được
    các tham số ta đang truyền giá trị,
  • 2:04 - 2:08
    chúng ta phải đưa tên các tham số
    vào trong ngoặc đơn ở cạnh từ "function".
  • 2:08 - 2:14
    Ta nhập "faceX" và "faceY",
    ngăn cách với nhau bởi dấu phẩy.
  • 2:14 - 2:21
    Ta dùng luôn "faceX" và "faceY" để khớp với
    tên các tham số ở các câu lệnh bên dưới.
  • 2:21 - 2:24
    Và nhờ đó, chúng ta cũng không cần
    viết lại các lệnh ở dưới.
  • 2:24 - 2:29
    Tuy nhiên đến đây, vẫn chưa có gì
    thay đổi trên khung kết quả.
  • 2:29 - 2:31
    Nhìn lại vào phần đầu
    của các lệnh trong hàm,
  • 2:31 - 2:35
    ta nhận thấy hai biến "faceX" và "faceY"
    vẫn được gán với giá trị ngẫu nhiên.
  • 2:35 - 2:39
    Nên ta chỉ cần xóa hai dòng lệnh này đi.
  • 2:39 - 2:45
    Lúc này, hai tham số "faceX" và "faceY"
    đã được truyền vào trong hàm
  • 2:45 - 2:50
    và chúng nhận các giá trị
    có trong các lệnh gọi hàm ở dưới.
  • 2:50 - 2:55
    Tuy nhiên, vị trí của các Winston vẫn chưa
    chính xác. Đó là vì vị trí văn bản
  • 2:55 - 3:01
    được xác định bởi điểm trên cùng bên trái
    còn vị trí mặt được xác định bởi tâm của hình.
  • 3:01 - 3:06
    Vì vậy, chúng ta cần thay đổi
    các giá trị tham số x và tham số y
  • 3:06 - 3:13
    trong lệnh gọi hàm "drawWinston"
    để Winston hiển thị ở vị trí ta muốn.
  • 3:13 - 3:18
    Như vậy, ta đang thay đổi các giá trị
    truyền cho các tham số trong hàm.
  • 3:18 - 3:23
    Ta không cần phải
    thay đổi định nghĩa hàm
  • 3:23 - 3:26
    vì hàm sẽ nhận
    mọi giá trị được truyền vào.
  • 3:26 - 3:28
    Tương tự như hàm "ellipse()"
    và hàm "rect()".
  • 3:28 - 3:33
    Sau khi điều chỉnh xong vị trí,
    ta có thể thấy kích thước các hình hơi to
  • 3:33 - 3:36
    và bị đè lên nhau,
    không vừa trong khung kết quả.
  • 3:36 - 3:39
    Trước đó, ta đã đưa các lệnh vẽ
    Winston vào một hàm
  • 3:39 - 3:42
    nên ta có thể thay đổi kích thước
    của tất cả các hình cùng một lúc,
  • 3:42 - 3:45
    bằng cách thay đổi giá trị của
    tham số trong hàm "ellipse()" vẽ mặt.
  • 3:45 - 3:51
    Ta đổi giá trị của tham số
    thứ ba và tham số thứ tư thành 190.
  • 3:51 - 3:56
    Như vậy, Winston trông đã vừa vặn hơn
    trong khung kết quả. Ta có thể tiếp tục căn chỉnh
  • 3:56 - 4:02
    để Winston nằm giữa
    hai dòng văn bản. Được rồi.
  • 4:02 - 4:09
    Vậy, hãy cùng ôn lại nội dung vừa học.
    Ta đã định nghĩa hàm "drawWinston()"
  • 4:09 - 4:15
    và cho phép hàm này nhận
    hai tham số "faceX" và "faceY".
  • 4:15 - 4:20
    Hai tham số 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
  • 4:20 - 4:23
    tương tự như các biến được khai báo
    mà ta từng dùng ở đầu chương trình.
  • 4:24 - 4:29
    Sau khi định nghĩa hàm này,
    chúng ta có thể gọi hàm bất kì lúc nào
  • 4:29 - 4:34
    và truyền các giá trị khác nhau
    vào tham số trong các lệnh gọi hàm.
  • 4:34 - 4:38
    Đó 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
  • 4:38 - 4:43
    các hàm tương tự để ứng dụng trong
    lập trình hoặc sử dụng các tham số
  • 4:43 - 4:46
    để điều chỉnh các hàm sao cho phù hợp.
  • 4:46 - 4:49
    Khi lập trình, ta có thể
    áp dụng công thức chung sau.
  • 4:49 - 4:53
    Giả sử bạn nhận ra mình cần vẽ
    4 hình thay vì chỉ 1 hình,
  • 4:53 - 4:56
    bạn không cần viết lệnh lại từ đầu
    mà chỉ cần thay đổi các lệnh gốc
  • 4:56 - 4:59
    dùng để vẽ hình đầu tiên và sao chép
    thành 4 nhóm lệnh như vậy.
  • 4:59 - 5:02
    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.
Title:
Function Parameters | Computer Programming | Khan Academy
Description:

more » « less
Video Language:
English
Team:
Khan Academy
Duration:
05:05

Vietnamese subtitles

Revisions Compare revisions