1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Swyddogaethau yn rhannau o cod a ddefnyddir mewn rhaglen fwy 2 00:00:09,640 --> 00:00:11,430 i gyflawni tasg benodol. 3 00:00:11,430 --> 00:00:15,060 Maent yn cael eu elwir hefyd yn gweithdrefnau, is-reolweithiau, a subprograms, 4 00:00:15,060 --> 00:00:18,320 gan eu bod mewn gwirionedd dim ond rhaglenni mini o fewn rhaglenni. 5 00:00:18,320 --> 00:00:20,340 Hyd yn oed er efallai nad ydych wedi sylwi, 6 00:00:20,340 --> 00:00:24,090 ydych yn sicr wedi defnyddio swyddogaethau sydd eisoes os ydych wedi rhaglennu yn C. 7 00:00:24,090 --> 00:00:26,770 Pan fyddwch yn ysgrifennu stwff i'r sgrîn gan ddefnyddio printf, 8 00:00:26,770 --> 00:00:29,380 rydych chi mewn gwirionedd yn defnyddio swyddogaeth o'r enw printf. 9 00:00:29,380 --> 00:00:33,760 Yn yr un modd, GetInt a GetString maen nhw'n swyddogaethau sydd CS50 yn darparu ar eich cyfer chi. 10 00:00:33,760 --> 00:00:37,750 Fel rhaglenwyr, rydym yn defnyddio swyddogaethau am nifer o resymau. 11 00:00:37,750 --> 00:00:41,240 >> Cael swyddogaethau i gyflawni tasgau cyffredin fel ysgrifennu at y sgrîn 12 00:00:41,240 --> 00:00:44,480 ac annog y defnyddiwr am fewnbwn yn arbed amser i ni wrth raglennu. 13 00:00:44,480 --> 00:00:47,510 Does dim rhaid i ysgrifennu cod i wneud y pethau hynny yr un 14 00:00:47,510 --> 00:00:49,520 gan eu bod nhw'n gwneud yn barod i ni. 15 00:00:49,520 --> 00:00:54,580 Dyw hi ddim hyd yn oed yn angenrheidiol i ni i ddeall yn union sut y bydd y swyddogaethau yn gweithio'n fewnol. 16 00:00:54,580 --> 00:00:58,880 Yn hytrach, rydym yn unig rhaid i ni wybod sut i ddefnyddio neu eu ffonio yn ein rhaglenni. 17 00:00:58,880 --> 00:01:02,040 Mae hefyd yn ddefnyddiol i ysgrifennu swyddogaethau mewn rhaglenni mwy 18 00:01:02,040 --> 00:01:04,330 hyd yn oed os nad ydych yn bwriadu ar gael eraill yn eu defnyddio, 19 00:01:04,330 --> 00:01:06,830 dim ond er mwyn rhannu'r dasg llawer ehangach wrth law. 20 00:01:06,830 --> 00:01:11,910 Mae hyn yn ffordd, byddwch yn rhoi strwythur i'ch cod yn debyg y byddech yn rhoi strwythur i'r traethawd, 21 00:01:11,910 --> 00:01:15,180 a chyda phrosiectau fawr iawn eich bod yn galluogi pobl lluosog 22 00:01:15,180 --> 00:01:16,730 i weithio ar rannau gwahanol ar yr un pryd 23 00:01:16,730 --> 00:01:20,480 gan ei fod yn glir lle mae gwaith un person yn dod i ben ac un arall yn dechrau. 24 00:01:20,480 --> 00:01:26,530 >> Swyddogaethau fel arfer yn gweithredu ar 1 neu fwy o fewnbynnau, a elwir yn dadleuon neu baramedrau, 25 00:01:26,530 --> 00:01:30,520 trawsnewid y mewnbwn i'r gwerth allbwn sy'n cael ei ddychwelyd wedyn. 26 00:01:30,520 --> 00:01:34,950 Fodd bynnag, mae hefyd yn bosibl i fod â swyddogaethau nad ydynt yn defnyddio unrhyw ddadleuon mewnbwn 27 00:01:34,950 --> 00:01:36,400 ac nid ydynt yn dychwelyd allbwn. 28 00:01:36,400 --> 00:01:38,790 Iawn, digon gyda'r stwff blewog. 29 00:01:38,790 --> 00:01:41,790 Gadewch i ni edrych ar rai swyddogaethau go iawn yn C. 30 00:01:41,790 --> 00:01:45,570 >> Yma mae gennym swyddogaeth a elwir yn cysoni hynny, credwch neu beidio, 31 00:01:45,570 --> 00:01:47,570 computes y sgwâr y mewnbwn. 32 00:01:47,570 --> 00:01:49,490 Gadewch i ni dorri drwy'r cystrawen ohono. 33 00:01:49,490 --> 00:01:51,860 Y gair cyntaf a welwch yn y swyddogaeth, int, 34 00:01:51,860 --> 00:01:57,460 yn nodi'r math dychwelyd y swyddogaeth, hynny yw, y math C o allbwn y swyddogaeth yn. 35 00:01:57,460 --> 00:02:00,370 Bydd y swyddogaeth hon allbynnu gwerth gyda int fath. 36 00:02:00,370 --> 00:02:04,100 Y gair nesaf y byddwch yn gweld yw'r enw ar y swyddogaeth, sgwâr yn yr achos hwn. 37 00:02:04,100 --> 00:02:07,390 Enwi swyddogaethau yn briodol yn arbennig o bwysig 38 00:02:07,390 --> 00:02:11,260 gan ei fod yn debyg y ddogfennaeth fwyaf gweladwy o'r hyn y mae'r swyddogaeth yn ei wneud. 39 00:02:11,260 --> 00:02:14,880 Gallai fod yn oer i enwi swyddogaeth hon neu shazam booyah, 40 00:02:14,880 --> 00:02:18,340 ond ni fyddai hynny'n dweud rhywbeth wrthym am yr hyn y mae'r swyddogaeth yn ei wneud. 41 00:02:18,340 --> 00:02:23,470 >> Yn dilyn yr enw swyddogaeth yn dod i'r mewnbynnau i'r swyddogaeth, y dadleuon. 42 00:02:23,470 --> 00:02:26,380 Maent yn cael eu rhestru y tu mewn i set o cromfachau 43 00:02:26,380 --> 00:02:30,160 gyda'r ddau eu math ac enw i'w defnyddio ar eu cyfer o fewn y corff y swyddogaeth. 44 00:02:30,160 --> 00:02:34,030 Sgwâr yn cymryd dim ond 1 dadl, yr int yn y man, 45 00:02:34,030 --> 00:02:36,160 yr wyf wedi penderfynu rhoi x enw. 46 00:02:36,160 --> 00:02:40,760 Mae hyn yn dod i ben y datganiad swyddogaeth neu prototeip. 47 00:02:40,760 --> 00:02:43,320 Mae'r braces cyrliog o gwmpas gweddill y swyddogaeth 48 00:02:43,320 --> 00:02:45,870 dynodi dechrau a diwedd y corff swyddogaeth, 49 00:02:45,870 --> 00:02:48,320 y diffiniad o swyddogaeth ei hun. 50 00:02:48,320 --> 00:02:50,300 Sgwâr yn swyddogaeth eithaf syml. 51 00:02:50,300 --> 00:02:54,100 Mae'n cael dim ond 1 llinell, gan fod yr holl rhaid i ni ei wneud yw lluosi x ei ben ei hun. 52 00:02:54,100 --> 00:02:59,250 Mae'r ffurflen gair yn nodi'r gwerth allbwn a sbardunau diwedd y swyddogaeth. 53 00:02:59,250 --> 00:03:03,430 I ddefnyddio'r swyddogaeth sgwâr, mae angen i gyflenwi y mewnbynnau priodol 54 00:03:03,430 --> 00:03:05,310 ac yna dal yr allbwn. 55 00:03:05,310 --> 00:03:08,140 Yma, byddwch yn gweld un neu ddau o ffyrdd o wneud hynny. 56 00:03:08,140 --> 00:03:13,600 Gallwn drosglwyddo mewn int crai, fel 6, neu gallwn drosglwyddo mewn newidyn fel a. 57 00:03:13,600 --> 00:03:15,700 Sylwer bod pob tro y byddwn yn galw sgwâr, 58 00:03:15,700 --> 00:03:18,330 rydym yn dal yr allbwn mewn newidyn ac yna ei argraffu. 59 00:03:18,330 --> 00:03:22,690 Fodd bynnag, nid oes gennym i storio gwerth dychwelyd mewn newidyn ac yna ei argraffu. 60 00:03:22,690 --> 00:03:27,090 Gallai Rydym yn unig hanfon yn uniongyrchol i'r printf fel yr ydym yn ei wneud pan fyddwn yn sgwâr 10, 61 00:03:27,090 --> 00:03:30,580 ond mae hyn yn golygu nad oes gennym fynediad at y gwerth dychwelyd sgwâr 10 62 00:03:30,580 --> 00:03:32,230 mewn mannau eraill yn y cod. 63 00:03:32,230 --> 00:03:34,890 Gadewch i ni edrych ar enghraifft arall syml. 64 00:03:34,890 --> 00:03:38,750 >> Y tro hwn, byddwn yn crynhoi 2 fflotiau at ei gilydd fel y gallwn weld beth yw swyddogaeth yn edrych fel 65 00:03:38,750 --> 00:03:41,220 pan mae'n cael 2 mewnbynnau yn hytrach na dim ond 1. 66 00:03:41,220 --> 00:03:43,950 Fel y gallwch weld, nid yw'n wahanol iawn. 67 00:03:43,950 --> 00:03:47,330 Mae pob rydym yn ei wneud yw ychwanegu yn y ddadl 2, fflôt a enwir b, 68 00:03:47,330 --> 00:03:51,820 at y rhestr ddadl gan ddefnyddio coma i wahanu oddi wrth y ddadl gyntaf, arnofio a. 69 00:03:51,820 --> 00:03:55,550 Felly, mae ein sgwâr a swyddogaethau swm yn eithaf hawdd i'w ddeall 70 00:03:55,550 --> 00:03:58,930 oherwydd eu bod yn cyfateb i swyddogaethau yr ydych wedi ei weld o'r blaen yn y dosbarth mathemateg. 71 00:03:58,930 --> 00:04:01,610 Nawr, gadewch i ni edrych ar swyddogaeth sydd ychydig yn wahanol. 72 00:04:01,610 --> 00:04:04,620 Yn hytrach na dychwelyd gwerth, ei bod yn addasu wladwriaeth. 73 00:04:04,620 --> 00:04:07,260 Gelwir hyn yn cael sgîl-effaith. 74 00:04:07,260 --> 00:04:10,750 Yn y rhaglen hon, y swyddogaeth printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 Mae math o ddychwelyd nad ydym wedi gweld o'r blaen, ddi-rym. 76 00:04:13,410 --> 00:04:16,730 >> Void yn cael ei ddefnyddio i ddweud nad yw swyddogaeth yn dychwelyd unrhyw beth. 77 00:04:16,730 --> 00:04:19,410 Nid oes unrhyw newidynnau y lle gwag mewn fath, 78 00:04:19,410 --> 00:04:22,760 felly os ydych yn ceisio dychwelyd rhywbeth o swyddogaeth fel printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 Bydd y compiler gweiddi ar chi. 80 00:04:24,290 --> 00:04:29,390 Y tu mewn printf_fudd_style, rydym yn gweld, er bod y swyddogaeth yn dal i perfformio tasg, 81 00:04:29,390 --> 00:04:31,890 sef, newid pob Rs i WS, 82 00:04:31,890 --> 00:04:36,380 y pwynt y swyddogaeth yw addasu y llinyn ac yna argraffwch hi ar y sgrin, 83 00:04:36,380 --> 00:04:39,400 newid cyflwr y rhaglen yn hytrach na dychwelyd o ganlyniad. 84 00:04:39,400 --> 00:04:43,700 Gan ddefnyddio'r swyddogaeth hon yn debyg iawn i ddefnyddio ein sgwâr a swyddogaethau swm, 85 00:04:43,700 --> 00:04:46,950 ac eithrio nad ydym yn storio canlyniad mewn amrywiol neu ei drosglwyddo i ffwrdd i swyddogaeth arall 86 00:04:46,950 --> 00:04:49,520 gan nad oes canlyniad i siarad o. 87 00:04:49,520 --> 00:04:53,180 Felly, pan fyddwn yn llunio ac yn cynnal ein rhaglen Fudd Elmer, 88 00:04:53,180 --> 00:04:56,970 byddwch yn gweld bod "Rydych rascally cwningen!" yn cael ei gweddnewid hawl i 89 00:04:56,970 --> 00:04:58,730 "Rydych wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Yn olaf, mae swyddogaeth 1 yn fwy werth trafod 91 00:05:02,250 --> 00:05:06,810 ers i chi wedi bod yn ei ddefnyddio ym mhob rhaglen C ydych wedi ysgrifennu erioed, prif. 92 00:05:06,810 --> 00:05:09,450 Main yn swyddogaeth lawer fel unrhyw un arall. 93 00:05:09,450 --> 00:05:13,580 Mae'n cael, math dychwelyd enw, rhestr o ddadleuon, a chorff. 94 00:05:13,580 --> 00:05:16,110 Mae'r math dychwelyd brif bob amser yn int, 95 00:05:16,110 --> 00:05:19,120 ac mae hyn yn int yn cael ei ddefnyddio i gyfathrebu statws y rhaglen pan mae'n gorffen. 96 00:05:19,120 --> 00:05:23,360 >> A oedd yn rhedeg yn llwyddiannus, neu a oedd yn dod i ben yn gynnar oherwydd gwall? 97 00:05:23,360 --> 00:05:26,390 Dychwelyd i sero yn dangos rhediad llwyddiannus, 98 00:05:26,390 --> 00:05:29,510 a dychwelyd unrhyw werth nad yw'n sero yn dangos gwall. 99 00:05:29,510 --> 00:05:31,950 Yn dibynnu ar y math o raglen yr ydych yn ysgrifennu, 100 00:05:31,950 --> 00:05:34,960 Gall dychwelyd codau gwahanol ar gyfer gwahanol gwallau yn ddefnyddiol 101 00:05:34,960 --> 00:05:37,210 ar gyfer pobl sy'n defnyddio eich rhaglen yn nes ymlaen. 102 00:05:37,210 --> 00:05:40,220 Dadleuon prif gyflenwad yn ychydig yn fwy cymhleth. 103 00:05:40,220 --> 00:05:42,150 >> Gall y rhestr ddadl naill ai fod yn wag, 104 00:05:42,150 --> 00:05:45,330 yr ydym yn dangos drwy ysgrifennu gwag rhwng y cromfachau, 105 00:05:45,330 --> 00:05:50,220 neu gall y rhestr gael 2 dadleuon: yn int ac amrywiaeth o * torgoch s. 106 00:05:50,220 --> 00:05:52,820 Mae'r rhain yn cael eu defnyddio pan fydd eich rhaglen yn bwriadu defnyddio 107 00:05:52,820 --> 00:05:56,490 dadleuon pasio i mewn ar y llinell orchymyn pan fydd y rhaglen yn cael ei galw i rym. 108 00:05:56,490 --> 00:05:59,690 Mae'r ddadl int elwir fel arfer argc, 109 00:05:59,690 --> 00:06:03,300 ac mae'n gyfartal ar hyd y rhesi * torgoch, a elwir yn argv. 110 00:06:03,300 --> 00:06:07,080 Argv yn cynnwys y dadleuon llinell orchymyn basio i mewn i'r rhaglen. 111 00:06:07,080 --> 00:06:11,440 Mewn un arall byr, byddwn yn siarad am sut i ddefnyddio'r newidynnau hyn yn fwy manwl. 112 00:06:11,440 --> 00:06:15,220 Am y tro, gallwch deimlo'n rhydd i ddatgan brif naill ffordd neu'r llall. 113 00:06:15,220 --> 00:06:19,410 Rwyf fel arfer yn dewis i ysgrifennu allan y ffordd byrrach, heb unrhyw dadleuon, pan fo hynny'n bosibl. 114 00:06:19,410 --> 00:06:22,230 >> Nawr eich bod yn gwybod sut i ysgrifennu swyddogaethau, 115 00:06:22,230 --> 00:06:25,030 eich bod yn dda ar eich ffordd i ddatblygu mwy o faint, mwy o rhaglenni cymhleth. 116 00:06:25,030 --> 00:06:29,740 Fy enw i yw Nate Hardison. Mae hyn yn CS50.