< Return to Video

Function Parameters | Computer Programming | Khan Academy

  • 0:01 - 0:06
    Trong video này, ta sẽ tiếp tục lập trình
    vẽ Winston và thêm phần văn bản.
  • 0:06 - 0:11
    Nhiệm vụ của chúng ta là điều chỉnh vị trí
    để Winston nằm ngay dưới mỗi dòng chữ
  • 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 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 đúng một vị trí
  • 0:27 - 0:30
    và vị trí đó cần được
    xác định trong mỗi lần gọi hàm,
  • 0:30 - 0:33
    tương tự như với
    hàm "ellipse()" và hàm "rect()".
  • 0:34 - 0:40
    Vậy là ta cần vẽ mỗi Winston tại
    bốn vị trí sau 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
    ở đầu chương trình
  • 0:53 - 0:57
    và tại lời gọi hàm ở dưới chương trình
    khi ta cho chương trình chạy hàm.
  • 0:57 - 1:02
    Chúng ta truyền cho hàm "drawWinston()"
    giá trị của hai biến "faceX" và "faceY"
  • 1:02 - 1:09
    để hàm này sử dụng giá trị hai biến trên
    thay vì các giá trị ngẫu nhiên.
  • 1:09 - 1:15
    Ta bắt đầu bằng việc xem xét nên truyền gì
    cho các lời gọi hàm ở dưới chương trình.
  • 1:15 - 1:20
    Ta cần đặt mỗi Winston dưới một dòng chữ
    nên tham số x và y của mỗi Winston
  • 1:20 - 1:24
    phải gần với giá trị
    ta truyền vào các hàm "text()".
  • 1:24 - 1:32
    Ta sẽ thử tọa độ dưới y 10 điểm ảnh.
    Như vậy, hàm đầu tiên có tham số 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
    Tọa độ các hàm "drawWinston" giống với hàm
    "text()", nhưng ta thêm 10 vào tham số y
  • 1:45 - 1:47
    để mỗi hình được vẽ
    bên dưới phần chữ một chút.
  • 1:50 - 1:55
    Tuy nhiên, các hình vẽ Winston chưa đổi
    vị trí vì hàm phía trên chưa đọc được
  • 1:55 - 1:59
    rằng ta đang truyền cho nó tham số, vì vậy
    nó vẫn sử dụng các giá trị ngẫu nhiên.
  • 1:59 - 2:04
    Để cho hàm này đọc được
    ta đang truyền cho nó tham số,
  • 2:04 - 2:08
    chúng ta phải đưa tên các tham số
    vào trong cặp dấu ngoặc đơn này.
  • 2:08 - 2:14
    Vì vậy, chúng ta nhập "faceX"
    và "faceY", ngăn cách bởi dấu phẩy.
  • 2:14 - 2:21
    Đây là cách chúng ta gọi các
    tham số được truyền vào trong hàm.
  • 2:21 - 2:23
    Bằng cách này, chúng ta
    không cần phải viết lại mã nữa.
  • 2:23 - 2:29
    Tuy nhiên, vẫn chưa có gì
    thay đổi trên khung kết quả.
  • 2:29 - 2:31
    Nếu nhìn vào phần trên cùng của 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
    Như vậy, tất cả những gì chúng ta
    cần làm là xóa hai dòng mã này đi.
  • 2:39 - 2:45
    Khi này, hai biến "faceX" và "faceY"
    đang được truyền vào trong hàm
  • 2:45 - 2:50
    và hàm đang sử dụng các giá trị
    trong lời gọi hàm ở dưới chương trình.
  • 2:50 - 2:55
    Tuy nhiên, vị trí của các Winston chưa
    được chính xác vì vị trí văn bản thay đổi
  • 2:55 - 3:01
    theo điểm trên cùng bên trái và
    vị trí mặt thay đổi theo điểm trung tâm.
  • 3:01 - 3:06
    Vì vậy, chúng ta cần thay đổi
    một số giá trị trong hàm "drawWinston"
  • 3:06 - 3:13
    bằng cách tăng giá trị
    tham số x và tham số y.
  • 3:13 - 3:18
    Sau đó, chúng ta tiếp tục thay đổi các
    giá trị tham số được truyền vào 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ì định nghĩa 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 nhận
    thấy kích thước của các Winston 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
    Vì chúng ta đã đưa các
    chuỗi mã 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ả Winston cùng lúc
  • 3:42 - 3:45
    bằng cách thay đổi giá trị của
    tham số trong hàm "ellipse()".
  • 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 tiếp tục căn chỉnh
  • 3:56 - 4:02
    để Winston nằm giữa
    hai dòng chữ. Được rồi.
  • 4:02 - 4:09
    Hãy cùng ôn lại nội dung vừa học.
    Đây là mã xác định hàm "drawWinston()"
  • 4:09 - 4:15
    và cho phép hàm này nhận hai giá trị
    được gọi là "faceX" và "faceY".
  • 4:15 - 4:20
    Hai giá trị này được 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 ở đầu chương trình.
  • 4:23 - 4:29
    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
  • 4:29 - 4:34
    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.
  • 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
    Một công thức chung là khi
    bạn viết tập lệnh chung
  • 4:49 - 4:53
    và nhận ra mình cần thay đổi
    cả 4 hình thay vì chỉ 1 hình vẽ,
  • 4:53 - 4:56
    bạn không cần viết mã lại từ đầu
    mà chỉ cần thay đổi tập lệnh gốc
  • 4:56 - 4:58
    và sao chép thành
    4 tập lệnh như vậy.
  • 4:58 - 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