1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Функции се делови од кодот се користи во поголеми програма 2 00:00:09,640 --> 00:00:11,430 да се изврши одредена задача. 3 00:00:11,430 --> 00:00:15,060 Тие се исто така познат како процедури, subroutines, и потпрограми, 4 00:00:15,060 --> 00:00:18,320 бидејќи тие навистина се само мини програми во рамките на програми. 5 00:00:18,320 --> 00:00:20,340 И покрај тоа што не може да се забележи, 6 00:00:20,340 --> 00:00:24,090 најмногу ви дефинитивно се користат функции веќе ако сте програмирани во C. 7 00:00:24,090 --> 00:00:26,770 Кога пишувате работи на екран со користење printf, 8 00:00:26,770 --> 00:00:29,380 сте всушност користење на функција наречена printf. 9 00:00:29,380 --> 00:00:33,760 Исто така, GetInt и GetString се функции кои CS50 обезбедува за вас. 10 00:00:33,760 --> 00:00:37,750 Како програмери, ние ги користиме функции за голем број на причини. 11 00:00:37,750 --> 00:00:41,240 >> Има функции за вршење на заеднички задачи како пишување на екран 12 00:00:41,240 --> 00:00:44,480 и се прашува корисникот за влез ни заштедува време кога програмирање. 13 00:00:44,480 --> 00:00:47,510 Тоа не е потребно да се напише кодот за да се направи истите нешта 14 00:00:47,510 --> 00:00:49,520 бидејќи тие се веќе направено за нас. 15 00:00:49,520 --> 00:00:54,580 Тоа не е дури и неопходно за нас да се разбере токму онака како тие функции работат внатрешно. 16 00:00:54,580 --> 00:00:58,880 Наместо тоа, ние само треба да знаете како да ги користат или јавете се на нив во нашите програми. 17 00:00:58,880 --> 00:01:02,040 Тоа е исто така корисни да се напише функции во поголеми програми 18 00:01:02,040 --> 00:01:04,330 дури и ако не сте за планирање на што имаат другите да ги користат, 19 00:01:04,330 --> 00:01:06,830 само за поделба на поголемите задачата при рака. 20 00:01:06,830 --> 00:01:11,910 На овој начин, ви даде структура на кодот многу како тебе би даде структура на есеј, 21 00:01:11,910 --> 00:01:15,180 и со навистина големи проекти ќе им овозможи на повеќе луѓе 22 00:01:15,180 --> 00:01:16,730 да работат на различни делови во исто време 23 00:01:16,730 --> 00:01:20,480 бидејќи тоа е јасно каде работат една личност завршува, а друг е почнува. 24 00:01:20,480 --> 00:01:26,530 >> Функции обично работат на 1 или повеќе влезови, познат како аргументи или параметри, 25 00:01:26,530 --> 00:01:30,520 трансформирање на тие влезови во излез вредност, кои потоа се врати. 26 00:01:30,520 --> 00:01:34,950 Сепак, тоа е, исто така, е можно да имаат функции кои не се употребуваат никакви влезни аргументи 27 00:01:34,950 --> 00:01:36,400 и не се врати излез. 28 00:01:36,400 --> 00:01:38,790 Океј, доволно со меки нешта. 29 00:01:38,790 --> 00:01:41,790 Ајде да ги разгледаме во некои реални функции во C. 30 00:01:41,790 --> 00:01:45,570 >> Тука имаме функција наречена квадратен, кои, верувале или не, 31 00:01:45,570 --> 00:01:47,570 пресметува квадрат на влез. 32 00:01:47,570 --> 00:01:49,490 Ајде да го сецира синтаксата на неа. 33 00:01:49,490 --> 00:01:51,860 Првиот збор ќе видите во функција, int, 34 00:01:51,860 --> 00:01:57,460 одредува враќање тип на функција, а тоа е, тип C на излез на функцијата. 35 00:01:57,460 --> 00:02:00,370 Оваа функција ќе излез вредност со тип int. 36 00:02:00,370 --> 00:02:04,100 Следниот збор што го гледате е името на функцијата, плоштадот во овој случај. 37 00:02:04,100 --> 00:02:07,390 Именување функции соодветно е особено важно 38 00:02:07,390 --> 00:02:11,260 бидејќи тоа е веројатно најголемиот видлив документација на која функција го прави тоа. 39 00:02:11,260 --> 00:02:14,880 Тоа може да биде кул да се именува оваа функција Shazam или booyah, 40 00:02:14,880 --> 00:02:18,340 но тоа не би ни каже ништо за она што функција го прави тоа. 41 00:02:18,340 --> 00:02:23,470 >> По името на функцијата дојде на влезовите на функцијата, аргументите. 42 00:02:23,470 --> 00:02:26,380 Тие се наведени во внатрешноста на сет на загради 43 00:02:26,380 --> 00:02:30,160 со двете нивниот вид и име да се користи за нив во телото на функцијата. 44 00:02:30,160 --> 00:02:34,030 Квадратни зема само 1 аргумент, int на плоштад, 45 00:02:34,030 --> 00:02:36,160 што решив да даде името х. 46 00:02:36,160 --> 00:02:40,760 Ова завршува функција декларација или прототип. 47 00:02:40,760 --> 00:02:43,320 Кадрави загради околу остатокот од функцијата 48 00:02:43,320 --> 00:02:45,870 означување на почетокот и на крајот на функцијата тело, 49 00:02:45,870 --> 00:02:48,320 дефиницијата на функцијата себе. 50 00:02:48,320 --> 00:02:50,300 Плоштадот е прилично едноставна функција. 51 00:02:50,300 --> 00:02:54,100 Тоа е само доби 1 линија, бидејќи сите ние треба да направите е да се размножуваат x по себе. 52 00:02:54,100 --> 00:02:59,250 Зборот враќање одредува излез вредност и предизвикувачи на крајот на функцијата. 53 00:02:59,250 --> 00:03:03,430 За да го користите квадратни функција, ние треба да се обезбедат соодветни инпути 54 00:03:03,430 --> 00:03:05,310 а потоа го фати на излез. 55 00:03:05,310 --> 00:03:08,140 Еве, ќе видите неколку начини тоа да го направам. 56 00:03:08,140 --> 00:03:13,600 Ние може да помине во суровини int, како 6, или ние може да помине во променлива како. 57 00:03:13,600 --> 00:03:15,700 Имајте на ум дека секој пат кога ние го нарекуваме плоштад, 58 00:03:15,700 --> 00:03:18,330 ние фаќање на излез во променливата, а потоа печати неа. 59 00:03:18,330 --> 00:03:22,690 Сепак, ние не треба да се чува на повратната вредност во променлива, а потоа печати. 60 00:03:22,690 --> 00:03:27,090 Ние може само да го испрати директно до printf како што правиме кога сме квадратни 10, 61 00:03:27,090 --> 00:03:30,580 но тоа не значи дека ние немаме пристап до повратната вредност на квадратен 10 62 00:03:30,580 --> 00:03:32,230 друго место во кодот. 63 00:03:32,230 --> 00:03:34,890 Ајде да погледнеме во уште еден едноставен пример. 64 00:03:34,890 --> 00:03:38,750 >> Овој пат, ние ќе ги сумира 2 плови заедно, така што можеме да видиме што функција изгледа како 65 00:03:38,750 --> 00:03:41,220 кога тоа е се здобија 2 влезови, наместо само 1. 66 00:03:41,220 --> 00:03:43,950 Како што можете да видите, ова не е многу различно. 67 00:03:43,950 --> 00:03:47,330 Сите ние направите е да додадете во 2 аргумент, плови по име б, 68 00:03:47,330 --> 00:03:51,820 на аргументот листата со користење запирка за да ја раздели од првиот аргумент, плови. 69 00:03:51,820 --> 00:03:55,550 Значи, нашиот плоштад и збирот функции се прилично лесно да се разбере 70 00:03:55,550 --> 00:03:58,930 затоа што тие се еднакви на функциите што сте виделе досега во траат часовите по математика. 71 00:03:58,930 --> 00:04:01,610 Сега, ајде да погледнеме функција која е малку поинаква. 72 00:04:01,610 --> 00:04:04,620 Наместо да се врати вредност, ја менува држава. 73 00:04:04,620 --> 00:04:07,260 Ова е познато како има ефект. 74 00:04:07,260 --> 00:04:10,750 Во оваа програма, функцијата printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 има враќање тип кој не сме виделе порано, неважечки. 76 00:04:13,410 --> 00:04:16,730 >> Празнина се користи да се каже дека функцијата не враќа ништо. 77 00:04:16,730 --> 00:04:19,410 Нема променливи од типот празнина, 78 00:04:19,410 --> 00:04:22,760 па ако се обиде да се врати нешто од функцијата како printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 компајлерот ќе се развикам. 80 00:04:24,290 --> 00:04:29,390 Внатре printf_fudd_style, можеме да видиме дека додека функција се уште врши задачата, 81 00:04:29,390 --> 00:04:31,890 имено, прекинувачки сите РС да WS, 82 00:04:31,890 --> 00:04:36,380 точка на функцијата е да се измени стринг, а потоа печати ја надвор на екранот, 83 00:04:36,380 --> 00:04:39,400 промена на државното на програмата наместо враќање резултат. 84 00:04:39,400 --> 00:04:43,700 Користење на оваа функција е многу сличен на користење на нашата плоштад и збирот функции, 85 00:04:43,700 --> 00:04:46,950 освен ние не чување на резултат во променлива или да го исклучите во друга функција 86 00:04:46,950 --> 00:04:49,520 бидејќи не постои резултат би можеле да зборуваме. 87 00:04:49,520 --> 00:04:53,180 Значи, кога ќе се собере и да ја стартувате нашите Elmer овски програма, 88 00:04:53,180 --> 00:04:56,970 ќе видите дека "Ти rascally зајакот!" добива трансформира во право на 89 00:04:56,970 --> 00:04:58,730 "Ти wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Конечно, тука е уште 1 функција вреди да се разговара 91 00:05:02,250 --> 00:05:06,810 откако сте го користат во секоја програма Ц некогаш сте се напишани, главниот. 92 00:05:06,810 --> 00:05:09,450 Главните е во функција многу како и секој друг. 93 00:05:09,450 --> 00:05:13,580 Тоа е се здобија со враќање тип, име, листа на аргументи, и телото. 94 00:05:13,580 --> 00:05:16,110 Враќањето тип на главната е секогаш int, 95 00:05:16,110 --> 00:05:19,120 и ова int се користи за да комуницираат статусот на програма, кога ќе заврши. 96 00:05:19,120 --> 00:05:23,360 >> Дали може да работи успешно, или не ја заврши рано поради грешка? 97 00:05:23,360 --> 00:05:26,390 Враќање на нула означува успешна рок, 98 00:05:26,390 --> 00:05:29,510 и враќање било не-нулта вредност укажува на грешка. 99 00:05:29,510 --> 00:05:31,950 Во зависност од видот на програма сте пишување, 100 00:05:31,950 --> 00:05:34,960 враќање различни кодови за различни грешки можат да бидат корисни 101 00:05:34,960 --> 00:05:37,210 за луѓе кои користат вашата програма подоцна. 102 00:05:37,210 --> 00:05:40,220 Мрежа аргументи се малку посложена. 103 00:05:40,220 --> 00:05:42,150 >> Аргументот листа може да биде празна, 104 00:05:42,150 --> 00:05:45,330 кои укажуваат на пишување празнина помеѓу заградите, 105 00:05:45,330 --> 00:05:50,220 или листа може да има 2 аргументи: на int и низа на char * s. 106 00:05:50,220 --> 00:05:52,820 Тие се користат кога вашата програма има намера да ја користите 107 00:05:52,820 --> 00:05:56,490 аргументи предадена во на командната линија, кога на програмата е повикана. 108 00:05:56,490 --> 00:05:59,690 На int аргумент е обично се нарекува argc, 109 00:05:59,690 --> 00:06:03,300 и тоа е еднакво на должината на char * низа, познат како argv. 110 00:06:03,300 --> 00:06:07,080 Argv содржи командната линија аргументи предадена во програмата. 111 00:06:07,080 --> 00:06:11,440 Во друг кратко, ние ќе зборуваме за тоа како да ги користат овие променливи во повеќе детали. 112 00:06:11,440 --> 00:06:15,220 За сега, можете да се чувствуваат слободни да прогласи главната било начин. 113 00:06:15,220 --> 00:06:19,410 Јас обично изберете да го пишувам од пократок начин, без аргументи, кога е можно. 114 00:06:19,410 --> 00:06:22,230 >> Сега дека знаете како да се напише функции, 115 00:06:22,230 --> 00:06:25,030 вие многу добро на вашиот начин на развивање на поголеми, посложени програми. 116 00:06:25,030 --> 00:06:29,740 Моето име е Нејт Hardison. Ова е CS50.