< Return to Video

Functions (Video Version)

  • 0:01 - 0:04
    Giờ hãy nói về thứ mà ta đã dùng
  • 0:04 - 0:06
    trong toàn bộ thời gian này: Hàm.
  • 0:06 - 0:09
    Bất cứ khi nào bạn đã sử dụng các lệnh như rect() hoặc fill() hoặc text(),
  • 0:09 - 0:12
    ta đã gọi các hàm và hàm đó vẽ nên
  • 0:12 - 0:15
    những gì ta bảo chúng làm.
  • 0:15 - 0:17
    Một hàm thực sự là gì?
  • 0:17 - 0:19
    Đó là một bộ code mà ta nhóm lại với nhau
  • 0:19 - 0:21
    và được đặt tên bởi ta muốn
  • 0:21 - 0:23
    dùng hàm đó nhiều lần.
  • 0:23 - 0:26
    Hãy nghĩ về rect()? Hàm rect() làm gì?
  • 0:26 - 0:29
    Nó chỉ vẽ bốn dòng thôi, phải không?
  • 0:29 - 0:31
    Ta chỉ có thể làm điều đó bằng cách dùng hàm line(), phải không?
  • 0:31 - 0:34
    Và ở đây ta thứ trông giống hình chữ nhật.
  • 0:34 - 0:37
    Nhưng ta nhận ra rằng ta muốn
  • 0:37 - 0:39
    vẽ một hình chữ nhật rất nhiều lần,
  • 0:39 - 0:41
    và nó sẽ thực sự phiền toái
  • 0:41 - 0:43
    khi phải làm toán mỗi lần để thử và tìm ra
  • 0:43 - 0:44
    cách vẽ một đường từ góc này sang góc khác
  • 0:44 - 0:46
    và tiếp nữa, tiếp nữa.
  • 0:46 - 0:49
    Vì vậy, thay vào đó, ta chỉ cần hàm rect() thôi,
  • 0:49 - 0:51
    và hàm đó thực hiện chính xác điều tương tự như
  • 0:51 - 0:55
    4 dòng code đó đã làm, nhưng code thì ít hơn nhiều.
  • 0:55 - 0:58
    Vì vậy, nó thật tuyệt, và rect() là một trong những hàm đó,
  • 0:58 - 1:01
    ta đã có sẵn cho TẤT CẢ các chương trình
  • 1:01 - 1:03
    để dùng ở đây, trên Khan Academy.
  • 1:03 - 1:05
    Nhưng bạn cũng có thể tạo nên các hàm của riêng mình
  • 1:05 - 1:08
    để dùng trong các chương trình của mình.
  • 1:08 - 1:11
    Giả sử ta đang viết một chương trình
  • 1:11 - 1:14
    và ta muốn vẽ Winston nhiều lần -
  • 1:14 - 1:17
    có lẽ bởi ta sẽ kể chuyện đời của Winston
  • 1:17 - 1:20
    và thể hiện anh ấy ở mọi lứa tuổi trong đời.
  • 1:20 - 1:24
    Vì vậy, đây là code vẽ Winston, ta có thể bắt đầu như sau:
  • 1:24 - 1:27
    Ta có các biến 'faceX' và 'faceY'
  • 1:27 - 1:29
    để lưu tâm điểm của khuôn mặt,
  • 1:29 - 1:31
    và rồi ta vẽ mắt và miệng
  • 1:31 - 1:33
    tương ứng với các biến đó.
  • 1:33 - 1:35
    Ngay bây giờ chương trình đã thấy code,
  • 1:35 - 1:37
    và nó không nằm trong bất kỳ hàm nào cả, vì vậy nó chỉ chạy bình thường,
  • 1:37 - 1:40
    và nó chỉ chạy một lần mà thôi.
  • 1:40 - 1:44
    OK, hãy biến nó thành một hàm.
  • 1:44 - 1:46
    Để làm được điều đó, ta làm nó như cách
  • 1:46 - 1:48
    khai báo một biến, vì đó thực sự là
  • 1:48 - 1:50
    những gì ta làm.
  • 1:50 - 1:52
    Vì vậy, ta gõ 'var drawWinston'.
  • 1:52 - 1:55
    Ta đặt cho nó một cái tên đẹp, rất gợi tả,
  • 1:55 - 1:59
    và sau đó là dấu '=', nhưng ở đây, thay vì viết một số hoặc một chuỗi,
  • 1:59 - 2:03
    ta sẽ viết 'hàm' (chắc chắn bạn đánh vần đúng nhé)
  • 2:03 - 2:08
    và sau đó là dấu ngoặc đơn rỗng '()' và sau đó là một dấu ngoặc nhọn '{'
  • 2:08 - 2:12
    và sau đó là dấu ngoặc nhọn nữa '}' và dấu chấm phẩy ';'
  • 2:12 - 2:14
    OK, những gì ta cần làm là đặt mọi thứ
  • 2:14 - 2:19
    ta muốn bên trong hàm ở giữa ngoặc nhọn bắt đầu '{' và kết thúc '}'.
  • 2:19 - 2:22
    Vì vậy, ta sẽ lấy tất cả code ở chỗ này,
  • 2:22 - 2:27
    đặt vào trong hàm (thụt lề cho đẹp) và Ta Da!
  • 2:27 - 2:29
    Như vậy, giờ ta có biến này
  • 2:29 - 2:32
    để lưu một hàm - vì vậy về cơ bản ta đã đưa ra
  • 2:32 - 2:36
    một nhãn cho khối code này, để ta có thể gọi
  • 2:36 - 2:38
    nó bất cứ lúc nào,
  • 2:38 - 2:41
    "Này, hãy tìm khối code có nhãn đó và chạy nó!"
  • 2:41 - 2:44
    Ta đã khiến cho đoạn code này có thể tái sử dụng.
  • 2:44 - 2:47
    Nhưng giờ đây để ý rằng ta không còn Winston nữa!
  • 2:47 - 2:49
    Ta đã mất Winston rồi! Anh ấy đã đi đâu nhỉ?
  • 2:49 - 2:53
    OK - Những gì xảy ra là khi ta đặt cái này vào trong một hàm,
  • 2:53 - 2:56
    ta nói với chương trình rằng "đây là một loạt các code
  • 2:56 - 2:58
    mà anh muốn chạy sau này,
  • 2:58 - 3:01
    nhưng chỉ khi anh bảo chú chạy thôi nhé"
  • 3:01 - 3:04
    Vì vậy, ta phải bảo nó chạy code, có nghĩa là ta cần
  • 3:04 - 3:09
    'gọi' hàm - giống như ta làm với ellipse() và rect() và line().
  • 3:09 - 3:14
    Vì vậy, ta chỉ cần viết tên hàm ('drawWinston')
  • 3:14 - 3:16
    theo sau là dấu ngoặc đơn bắt đầu và kết thúc '()'
  • 3:16 - 3:19
    và, tất nhiên, dấu chấm phẩy và Ta Đa -
  • 3:19 - 3:21
    Ta đã có lại Winston rồi!
  • 3:21 - 3:24
    OK! Như vậy, tôi nghĩ rằng nó ngon đấy, nhưng bạn có thể thấy nó chưa ổn
  • 3:24 - 3:27
    bởi tất cả những gì ta vừa làm là khiến máy tính thực hiện chính xác
  • 3:27 - 3:30
    những gì nó đã làm trước đó. Nghe có vẻ ngớ ngẩn nhỉ?
  • 3:30 - 3:33
    Toàn bộ ưu điểm của hàm là ta có thể tái sử dụng chúng.
  • 3:33 - 3:35
    Như vậy, hãy làm ngay bây giờ thôi.
  • 3:35 - 3:41
    Ta chỉ có thể copy và paste hàm tên là "ta da!" "ta da!" thêm lần nữa và thêm lần nữa
  • 3:41 - 3:47
    Hmmm, nhưng nó trông giống nhau - - ngon - nó đã hoạt động -
  • 3:47 - 3:49
    và đang vẽ nhiều Winstons, nhưng vấn đề là
  • 3:49 - 3:51
    tất cả đều ở cùng một chỗ
  • 3:51 - 3:54
    Nếu ta có tia X, ta có thể chụp X-quang
  • 3:54 - 3:58
    và thấy ba Winstons, nhưng tôi không có tia X.
  • 3:58 - 4:00
    (Tôi không biết bạn có không).
  • 4:00 - 4:03
    Nhưng, ta có thể thay đổi một chút trong hàm
  • 4:03 - 4:05
    Để khiến nó rõ ràng hơn.
  • 4:05 - 4:09
    Như vậy, bạn thấy faceX và faceY - luôn luôn là 202 và 208?
  • 4:09 - 4:12
    Ta có thể thay đổi nó bằng hàm random() -
  • 4:12 - 4:15
    - hãy gõ random() từ 50 đến 350 và nó sẽ tạo ra
  • 4:15 - 4:19
    một số ngẫu nhiên trong khoảng đó - và ta có thể làm điều tương tự ở đây -
  • 4:19 - 4:23
    và như vậy mỗi khi hàm này được gọi, nó sẽ tạo ra số ngẫu nhiên mới,
  • 4:23 - 4:27
    và nếu khởi động lại, ta có thể có được các Winstons xuất hiện ngẫu nhiên.
  • 4:27 - 4:29
    Thật tuyệt! Whoo!!
  • 4:29 - 4:32
    Được rồi - như vậy tôi nghĩ ngon rồi đáy vì nó sẽ
  • 4:32 - 4:35
    tốn khá nhiều code để viết cái này nếu ta không gói trong một hàm.
  • 4:35 - 4:38
    Nó sẽ phải code gấp 3 lần.
  • 4:38 - 4:41
    Nhưng nó vẫn không hữu dụng cho lắm,
  • 4:41 - 4:44
    bởi vì có lẽ ta không muốn Winstons xuất hiện ngẫu nhiên.
  • 4:44 - 4:46
    Ta muốn có thể xác định vị trí cho Winston
  • 4:46 - 4:48
    tại các điểm cụ thể trên màn hình.
  • 4:48 - 4:50
    Vì vậy, hãy theo dõi, vì ta sẽ nói về cách truyền các tham số
  • 4:50 - 4:52
    để các hàm sau đây có thể
  • 4:52 - 0:00
    để làm chính xác điều đó.
Title:
Functions (Video Version)
Description:

more » « less
Video Language:
Turkish
Duration:
04:56

Vietnamese subtitles

Incomplete

Revisions