< Return to Video

Function Parameters | Computer Programming | Khan Academy

  • 0:01 - 0:06
    Ето ни обратно при нашата програма за рисуване на Уинстън, но съм добавила текст към нея.
  • 0:06 - 0:11
    Искам да позиционирам Уинстън под всеки от тези надписи,
  • 0:11 - 0:13
    за да го покажа на всеки етап от живота му.
  • 0:13 - 0:16
    В момента той е навсякъде. Това е защото задаваме
  • 0:16 - 0:20
    на faceX и faceY стойности на произволни числа вътре във функцията.
  • 0:20 - 0:27
    Това, което искаме да кажем, е: "Ето точната позиция, където искам да нарисуваш този Уинстън".
  • 0:27 - 0:30
    Искам да мога да задам тази позиция всеки път, когато извиквам функцията,
  • 0:30 - 0:33
    точно както при ellipse() и rect().
  • 0:34 - 0:40
    Искам да сложа Уинстън тук, тук и един Уинстън тук, и един Уинстън тук
  • 0:40 - 0:44
    и не искам произволни места всеки път, когато извикам функцията.
  • 0:44 - 0:49
    За да направим това, ние трябва да зададем "параметри" на функцията
  • 0:49 - 0:53
    както в дефиницията на функцията ни – тук горе,
  • 0:53 - 0:57
    така и в извикването на функцията – тук долу, където всъщност я извикваме.
  • 0:57 - 1:02
    За drawWinston() подаваме faceX и faceY
  • 1:02 - 1:09
    и тя използва тези стойности, които сме ѝ подали, вместо да ги генерира произволно.
  • 1:09 - 1:15
    Нека като начало помислим какво бихме подали при извикванията на функцията тук долу.
  • 1:15 - 1:20
    Позиционираме Уинстъните под всеки надпис, така че вероятно ще искаме x и y на всеки
  • 1:20 - 1:24
    Уинстън да бъдат подобни на числата, подадени в text() функциите.
  • 1:24 - 1:32
    Може би 10 пиксела по-ниско по y. Първата би била 10 и 30,
  • 1:32 - 1:41
    после може би 200, 30... 10, 230... 200, 230
  • 1:41 - 1:45
    Същото като координатите на текста, само добавям по 10 към всеки у,
  • 1:45 - 1:47
    защото искам да е малко по-надолу.
  • 1:50 - 1:55
    Добре, но Уинстън не се е преместил. Причината е, че не сме казали на функцията си тук горе, че
  • 1:55 - 1:59
    ѝ подаваме параметри, затова тя все още използва тези произволни стойности.
  • 1:59 - 2:04
    За да кажем на тази функция "Вместо това, ще ти дадем тази нова информация",
  • 2:04 - 2:08
    трябва да дадем имена на параметрите вътре в тези скоби.
  • 2:08 - 2:14
    Ще ги наречем faceX и faceY, ще ги разделим със запетая.
  • 2:14 - 2:21
    Ще ги наречем така, защото вече ги използваме с тези имена вътре във функцията.
  • 2:21 - 2:23
    По този начин няма нужда да пренаписваме останалия код.
  • 2:23 - 2:29
    Но все още нищо не се е случило; Уинстън все още е навсякъде.
  • 2:29 - 2:31
    Ако видиш най-горната част на функцията ни,
  • 2:31 - 2:35
    ние все още задаваме произволни стойности на faceX и faceY върху старите.
  • 2:35 - 2:39
    Тоест всичко, което трябва да направим, е да изтрием тези редове...
  • 2:39 - 2:45
    Готово! Сега подаваме faceX и faceY на функцията
  • 2:45 - 2:50
    и тя използва стойностите, с които я извикваме тук.
  • 2:50 - 2:55
    Не позиционирах Уинстън много правилно, защото забравих, че текстът се позиционира
  • 2:55 - 3:01
    според горния си ляв ъгъл, а лицето се позиционира според центъра си.
  • 3:01 - 3:06
    Трябва малко да пооправя числата си тук, нали?
  • 3:06 - 3:13
    Трябва да променя стойностите на x на доста места... и тези също...
  • 3:13 - 3:18
    Всичко, което трябва да направя, е да променя стойностите, които подавам на функцията,
  • 3:18 - 3:23
    няма нужда да променям каквото и да е в дефиницията на функцията,
  • 3:23 - 3:26
    винаги ще приема стойностите, които ѝ подаваме.
  • 3:26 - 3:28
    Точно както с ellipse() и rect().
  • 3:28 - 3:33
    Позиционирах ги, но забелязвам, че Уинстън е прекалено голям.
  • 3:33 - 3:36
    Застъпва се, не се побира.
  • 3:36 - 3:39
    Сложила съм кода за нарисуването му във функция,
  • 3:39 - 3:42
    мога да променя размерите на всичките едновременно,
  • 3:42 - 3:45
    като променя един ред код, който рисува елипсата.
  • 3:45 - 3:51
    Ако го сложим на 190, да, Уинстън е на диета, на 190.
  • 3:51 - 3:56
    Супер! Сега се побира по-добре, после мога да продължа да променям кода,
  • 3:56 - 4:02
    докато го вкарам вътре, нали? Готино.
  • 4:02 - 4:09
    Нека направим обобщение на това какво прави този код. Той дефинира функция, наречена drawWinston(),
  • 4:09 - 4:15
    и казва, че тази функция приема две стойности, и ги нарича faceX и faceY
  • 4:15 - 4:20
    и тези стойности се приемат като променливи, които можем да използваме навсякъде във функцията си,
  • 4:20 - 4:23
    точно както използвахме променливите, които декларирахме най-отгоре.
  • 4:23 - 4:29
    След това можем да извикваме тази функция, когато поискаме, след като я декларираме,
  • 4:29 - 4:34
    можем да ѝ подаваме различни стойности, за да използва тези нови стойности всеки път.
  • 4:34 - 4:38
    Сега видяхте защо функциите са толкова готини. Можем да измисляме код, за който
  • 4:38 - 4:43
    смятаме, че би имало смисъл да използваме отново, но можем и да използваме параметри, за да кажем:
  • 4:43 - 4:46
    "Хей, ето нещо малко, което можеш да промениш в този код, да го настроиш".
  • 4:46 - 4:49
    Като рецепта е. Записваш основните инструкции
  • 4:49 - 4:53
    и ако осъзнаеш, че изведнъж трябва да нахраниш 4 Уинстъна вместо 1,
  • 4:53 - 4:56
    няма нужда да започваш отначало, само изменяш първоначалните инструкции
  • 4:56 - 4:58
    и умножаваш всичко по 4.
  • 4:58 - 5:02
    Сега можеш да започнеш да мислиш за рецептите в кода си! Вкусно!
Title:
Function Parameters | Computer Programming | Khan Academy
Description:

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

Bulgarian subtitles

Revisions