Return to Video

函數傳回值 (影視版)

  • 0:01 - 0:06
    我們又回到用函數
    來畫4個溫斯頓的程式了
  • 0:06 - 0:07
    我修改了一下
  • 0:07 - 0:09
    以便顯示溫斯頓不同人生階段的年紀
  • 0:09 - 0:11
    你等一下就會明白
  • 0:11 - 0:14
    我要告訴你一件關於溫斯頓的事:
  • 0:14 - 0:16
    溫斯頓愛死甜甜圈了
  • 0:16 - 0:18
    他每天吃3個
  • 0:18 - 0:22
    難怪一張臉又大又黃
  • 0:22 - 0:25
    為了提醒他
    甜甜圈對身體不好
  • 0:25 - 0:27
    我想修改一下程式
  • 0:27 - 0:32
    以便顯示於每個年紀
    他累計吃下多少甜甜圈
  • 0:32 - 0:36
    例如,他2歲時
  • 0:36 - 0:42
    他共吃了3﹡365﹡2
  • 0:42 - 0:46
    1天3個,1年365天,2年
  • 0:46 - 0:50
    讓數量顯示在標頭下
  • 0:50 - 0:52
    哇!2千個甜甜圈
  • 0:52 - 0:54
    對2歲娃來說太多了
  • 0:54 - 0:57
    現在他14歲
  • 0:57 - 1:04
    他吃了 3﹡365﹡14
  • 1:04 - 1:08
    共吃了1萬5千個甜甜圈
  • 1:08 - 1:13
    我一直這樣算也行
    但我開始發現一個規律
  • 1:13 - 1:17
    我正在重複我的運算
  • 1:17 - 1:20
    而我只改變其中的一樣東西:年數
  • 1:20 - 1:23
    每當我看到像這樣重複的程式碼
  • 1:23 - 1:28
    我便想:「嗯,這能否寫成函數?」
  • 1:28 - 1:30
    對,我們絕對可以的
  • 1:30 - 1:33
    我們動手吧
  • 1:33 - 1:34
    我在這裡定義函數
  • 1:34 - 1:41
    叫它做 calcTotalDonuts = function
  • 1:41 - 1:44
    裡面只有一個參數,年數
  • 1:44 - 1:49
    因為那是我們每次做這計算時
    唯一變動的東西
  • 1:49 - 1:53
    程式裡面,我們做計算
  • 1:53 - 2:01
    將它存為變數
    也就是 3﹡365﹡numYears
  • 2:01 - 2:03
    我們現在有了這函數
  • 2:03 - 2:09
    我將利用 calcTotalDonuts
    去取代在這裏的表示式
  • 2:09 - 2:13
    以便召喚程式,及傳遞數值 2
  • 2:13 - 2:17
    好,現在我們看不到任何總數
  • 2:17 - 2:19
    嗯,怎麼了呢?
  • 2:19 - 2:22
    我們的函式確實計算了總數
  • 2:22 - 2:23
    在這
  • 2:23 - 2:26
    但它沒有告知任何人那總數
  • 2:26 - 2:30
    好比學校老師點你回答問題
  • 2:30 - 2:32
    而你只在腦中回答
  • 2:32 - 2:34
    因爲你太害羞去講出答案
  • 2:34 - 2:37
    你有答案,但老師永遠不會知道
  • 2:37 - 2:41
    如果我們想函數
    傳某值給召喚它的人
  • 2:41 - 2:46
    函數就要寫明去回傳 (return) 那值
  • 2:46 - 2:50
    要函數回傳一個值
    我們須輸入 return
  • 2:50 - 2:51
    不管它想回傳什麼
  • 2:51 - 2:55
    可以是變數、數值或表示式
  • 2:55 - 2:58
    這裡我們指明
    return totalDonuts
  • 2:58 - 3:02
    所以誰召喚此函數
    誰就會得到這回答
  • 3:02 - 3:05
    總計顯示出來了, 耶!
  • 3:05 - 3:07
    這裡我們可簡化函數
  • 3:07 - 3:08
    不必儲存成變數
  • 3:08 - 3:10
    只需把整個表示式
  • 3:10 - 3:14
    寫在 return 裡
    函數就變成一行
  • 3:14 - 3:14
  • 3:15 - 3:18
    現在我們可以來回顧和計算
  • 3:18 - 3:20
    每個年紀吃下的甜甜圈總量
  • 3:20 - 3:24
    就是召喚這函數
    傳遞年數
  • 3:24 - 3:29
    嗯,這裡是 calcTotalDonuts(25)
  • 3:29 - 3:36
    位置沒錯 calcTotalDonuts(65)
  • 3:36 - 3:40
    好!哇!如果他吃到65歲
  • 3:40 - 3:45
    他將吃下7萬個甜甜圈
    那真是超多甜甜圈
  • 3:45 - 3:48
    我不覺得溫斯頓能辦到(笑)
  • 3:48 - 3:50
    不過現在我們寫了這函數
  • 3:50 - 3:53
    做些小調整並不難
  • 3:53 - 3:55
    好比溫斯頓看到這結果
  • 3:55 - 3:59
    說: 「噢!這太多了
    如果我1天只吃1個?」
  • 3:59 - 4:03
    那我們可以來到這
    修改這一個數字
  • 4:03 - 4:04
    所有都改好了
  • 4:04 - 4:07
    2萬3千個,還是很多
  • 4:07 - 4:10
    也許溫斯頓說:
    「好吧好吧!如果我1週吃1個呢?」
  • 4:10 - 4:12
    嗯,這比較合理
  • 4:12 - 4:15
    那我們改 365 為 50
  • 4:15 - 4:18
    因為一年有50週,對吧?
  • 4:18 - 4:23
    好,看來好多了,是吧?
    3千個,那蠻合理的
  • 4:23 - 4:27
    所以你看,運用函數和數值回傳
  • 4:27 - 4:31
    我們能保存程式碼,亦能保護生命
Title:
函數傳回值 (影視版)
Description:

本影片為互動編程實作影片講解剪輯,目的為便字幕製作與翻譯。更完整的影片目錄請見:https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
04:32

Chinese, Traditional subtitles

Revisions