1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funksionet janë seksionet e kodit të përdorura brenda një programi më të madh 2 00:00:09,640 --> 00:00:11,430 për të kryer një detyrë të veçantë. 3 00:00:11,430 --> 00:00:15,060 Ata janë të njohur edhe si procedura, subroutines, dhe Sub-programet, 4 00:00:15,060 --> 00:00:18,320 pasi që ata me të vërtetë janë vetëm programe mini brenda programeve. 5 00:00:18,320 --> 00:00:20,340 Edhe pse ju nuk mund të keni vënë re, 6 00:00:20,340 --> 00:00:24,090 ju më patjetër kanë përdorur funksionet tashmë në qoftë se ju keni programuar në C. 7 00:00:24,090 --> 00:00:26,770 Kur ju shkruani sende në ekran duke përdorur printf, 8 00:00:26,770 --> 00:00:29,380 ju jeni në të vërtetë duke përdorur një funksion të quajtur printf. 9 00:00:29,380 --> 00:00:33,760 Gjithashtu, GetInt dhe getString janë funksione që CS50 ofron për ju. 10 00:00:33,760 --> 00:00:37,750 Si programuesit, ne përdorim funksionet për një numër arsyesh. 11 00:00:37,750 --> 00:00:41,240 >> Duke pasur funksione për të kryer detyra të përbashkëta si shkrim në ekran 12 00:00:41,240 --> 00:00:44,480 dhe duke bërë përdorues për input na kursen kohë kur programimit. 13 00:00:44,480 --> 00:00:47,510 Kjo nuk është e nevojshme që të shkruani kodin për të bërë ato të njëjtat gjëra 14 00:00:47,510 --> 00:00:49,520 pasi ata janë bërë tashmë për ne. 15 00:00:49,520 --> 00:00:54,580 Kjo nuk është edhe e nevojshme për ne për të kuptuar saktësisht se si ato funksione punojnë brenda. 16 00:00:54,580 --> 00:00:58,880 Në vend të kësaj, ne vetëm duhet të dini se si të përdorin ose telefononi ata në programet tona. 17 00:00:58,880 --> 00:01:02,040 Është gjithashtu e dobishme për të shkruar funksionet në programet më të mëdha 18 00:01:02,040 --> 00:01:04,330 edhe në qoftë se ju nuk jeni duke planifikuar të paturit e tjerë përdorin ato, 19 00:01:04,330 --> 00:01:06,830 vetëm për të ndarë dorë detyrën më të madhe në dorë. 20 00:01:06,830 --> 00:01:11,910 Në këtë mënyrë, ju jepni strukturën për kodin tuaj shumë si ju do të jepni struktura të një ese, 21 00:01:11,910 --> 00:01:15,180 dhe me projekte të mëdha me të vërtetë që ju mundësojnë njerëzit të shumta 22 00:01:15,180 --> 00:01:16,730 për të punuar në pjesë të ndryshme në të njëjtën kohë 23 00:01:16,730 --> 00:01:20,480 pasi është e qartë se ku puna e një personi përfundon dhe një tjetër fillon. 24 00:01:20,480 --> 00:01:26,530 >> Funksionet tipike operojnë në 1 ose më shumë inpute, i njohur si argumente apo parametrat, 25 00:01:26,530 --> 00:01:30,520 shndërruar ato në një vlerë inputeve të prodhimit që është kthyer pas. 26 00:01:30,520 --> 00:01:34,950 Megjithatë, është gjithashtu e mundur që të ketë funksione që nuk përdorin argumente të dhëna 27 00:01:34,950 --> 00:01:36,400 dhe nuk kthehen një dalje. 28 00:01:36,400 --> 00:01:38,790 Mirë, mjaft me gjëra gëzof. 29 00:01:38,790 --> 00:01:41,790 Le të marrin një vështrim në disa funksione të patundshme në C. 30 00:01:41,790 --> 00:01:45,570 >> Këtu kemi një funksion të quajtur shesh që, besoni apo jo, 31 00:01:45,570 --> 00:01:47,570 Llogarit sheshin e input. 32 00:01:47,570 --> 00:01:49,490 Le të analizoj sintaksa e saj. 33 00:01:49,490 --> 00:01:51,860 Fjala e parë që ju shihni në funksion, int, 34 00:01:51,860 --> 00:01:57,460 specifikon llojin e kthimit të funksionit, që është, lloji i prodhimit C funksioni së. 35 00:01:57,460 --> 00:02:00,370 Ky funksion do të prodhimit me një vlerë int lloji. 36 00:02:00,370 --> 00:02:04,100 Fjala tjetër që ju shikoni është emri i funksionit, katrore në këtë rast. 37 00:02:04,100 --> 00:02:07,390 Emërtimin e funksioneve të përshtatshme është veçanërisht e rëndësishme 38 00:02:07,390 --> 00:02:11,260 pasi ajo është ndoshta dokumentacioni më i dukshëm i asaj që nuk funksion. 39 00:02:11,260 --> 00:02:14,880 Ajo mund të jetë ftohtë, për të përmendur këtë Shazam funksion ose booyah, 40 00:02:14,880 --> 00:02:18,340 por kjo nuk do të na tregoni diçka në lidhje me atë që nuk funksion. 41 00:02:18,340 --> 00:02:23,470 >> Pas emri i funksionit vijnë inputeve në funksion, argumentet. 42 00:02:23,470 --> 00:02:26,380 Ato janë të rreshtuara në brendësi të një sërë kllapa 43 00:02:26,380 --> 00:02:30,160 me të dy llojit të tyre dhe një emër për të përdorur për ta brenda trupit të funksionit. 44 00:02:30,160 --> 00:02:34,030 Sheshi merr vetëm argumentin 1, int të sheshit, 45 00:02:34,030 --> 00:02:36,160 që unë kam vendosur për të dhënë x emrin. 46 00:02:36,160 --> 00:02:40,760 Kjo përfundon deklaratën e funksionit apo prototip. 47 00:02:40,760 --> 00:02:43,320 Formatimin e teksteve kaçurrel që rrethojnë pjesën tjetër të funksionit 48 00:02:43,320 --> 00:02:45,870 treguar fillimin dhe fundin e trupit të funksionit, 49 00:02:45,870 --> 00:02:48,320 përkufizimi i funksionit vetë. 50 00:02:48,320 --> 00:02:50,300 Sheshi është një funksion shumë e thjeshtë. 51 00:02:50,300 --> 00:02:54,100 Është marrë vetëm 1 linjë, pasi të gjithë ne duhet të bëni është të shumohen x vetvete. 52 00:02:54,100 --> 00:02:59,250 Kthimi fjalë përcakton vlerën e prodhimit dhe shkakton fundin e funksionit. 53 00:02:59,250 --> 00:03:03,430 Për të përdorur funksionin katror, ​​ne kemi nevojë për furnizimin e inputeve të përshtatshme 54 00:03:03,430 --> 00:03:05,310 dhe pastaj të kapur e prodhimit. 55 00:03:05,310 --> 00:03:08,140 Këtu, ju shihni një çift të mënyrave për të bërë këtë. 56 00:03:08,140 --> 00:03:13,600 Ne mund të kalojë në një int papërpunuara, si 6, ose ne mund të kalojë në një variabël si një. 57 00:03:13,600 --> 00:03:15,700 Vini re se sa herë që ne e quajmë katror, 58 00:03:15,700 --> 00:03:18,330 ne kapjen e prodhimit në një variabël të dhe pastaj të shtypura atë. 59 00:03:18,330 --> 00:03:22,690 Megjithatë, ne nuk kemi për të ruajtur vlerën e kthimit në një ndryshore dhe pastaj të shtypura. 60 00:03:22,690 --> 00:03:27,090 Ne vetëm mund të dërgoni direkt në printf siç bëjmë ne kur ne sheshin 10, 61 00:03:27,090 --> 00:03:30,580 por kjo do të thotë se ne nuk kemi qasje në vlerën e kthimit të sheshit 10 62 00:03:30,580 --> 00:03:32,230 gjetkë në kodin. 63 00:03:32,230 --> 00:03:34,890 Le të shikojmë një shembull tjetër të thjeshtë. 64 00:03:34,890 --> 00:03:38,750 >> Këtë herë, ne do të përmbledhur 2 gjithandej së bashku në mënyrë që ne mund të shohim se çfarë një funksion duket si 65 00:03:38,750 --> 00:03:41,220 kur ajo e mori 2 inputeve në vend të vetëm 1. 66 00:03:41,220 --> 00:03:43,950 Siç mund ta shikoni, kjo nuk është shumë e ndryshme. 67 00:03:43,950 --> 00:03:47,330 Të gjithë ne bëjmë është të shtoni në argumentin e 2, a noton quajtur b, 68 00:03:47,330 --> 00:03:51,820 në listën argument të përdorur një presje për të ndarë atë nga argumenti i parë, noton një. 69 00:03:51,820 --> 00:03:55,550 Pra, katrore tonë dhe funksionet shuma janë goxha të lehtë për të kuptuar 70 00:03:55,550 --> 00:03:58,930 sepse ata janë të barabartë me funksionet që ju keni parë më parë në klasë matematikë. 71 00:03:58,930 --> 00:04:01,610 Tani, le të shohim në një funksion që është pak më ndryshe. 72 00:04:01,610 --> 00:04:04,620 Në vend që të kthehen një vlerë, ajo modifikon një shtet. 73 00:04:04,620 --> 00:04:07,260 Kjo është e njohur si të paturit e një efekt anësor. 74 00:04:07,260 --> 00:04:10,750 Në këtë program, funksioni printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 ka një lloj të kthimit që ne nuk e kemi parë më parë, i pavlefshëm. 76 00:04:13,410 --> 00:04:16,730 >> Void është përdorur për të thënë se një funksion nuk ka kthim asgjë. 77 00:04:16,730 --> 00:04:19,410 Nuk ka variabla të tipit pavlefshme, 78 00:04:19,410 --> 00:04:22,760 kështu që nëse ju përpiqeni të kthehen diçka nga një funksion si printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 përpilues do të bërtas në ju. 80 00:04:24,290 --> 00:04:29,390 Brenda printf_fudd_style, ne shohim se ndërsa funksioni ende kryen një detyrë, 81 00:04:29,390 --> 00:04:31,890 domethënë, kalimi gjitha të RS për Ws, 82 00:04:31,890 --> 00:04:36,380 pika e funksionit është për të modifikuar të vargut dhe pastaj të shtypura atë në ekran, 83 00:04:36,380 --> 00:04:39,400 ndryshon gjendjen e programit në vend të kthyer një rezultat. 84 00:04:39,400 --> 00:04:43,700 Duke përdorur këtë funksion është shumë si duke përdorur sheshin tonë dhe funksionet shume, 85 00:04:43,700 --> 00:04:46,950 përjashtim ne nuk ruajtur rezultatin në një ndryshore ose të kalojë atë në një tjetër funksion 86 00:04:46,950 --> 00:04:49,520 pasi që nuk ka rezultat për të folur. 87 00:04:49,520 --> 00:04:53,180 Pra, kur ne përpilojnë dhe të drejtuar Elmer Fud programin tonë, 88 00:04:53,180 --> 00:04:56,970 ju shihni se "Ju pandershëm lepuri!" merr transformuar drejtë të 89 00:04:56,970 --> 00:04:58,730 "Ju wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Së fundi, ka funksion 1 më me vlerë duke diskutuar 91 00:05:02,250 --> 00:05:06,810 pasi ju keni qenë duke e përdorur atë në çdo program C keni shkruar ndonjëherë, kryesore. 92 00:05:06,810 --> 00:05:09,450 Kryesor është një funksion shumë si çdo tjetër. 93 00:05:09,450 --> 00:05:13,580 Ajo e mori një lloj të kthimit, një emër, një listë të argumenteve, dhe një trup. 94 00:05:13,580 --> 00:05:16,110 Lloji Kthimi i kryesor është gjithmonë një int, 95 00:05:16,110 --> 00:05:19,120 dhe kjo int është përdorur për të komunikuar statusin e programit kur ajo mbaron. 96 00:05:19,120 --> 00:05:23,360 >> A është drejtuar me sukses, apo e bëri atë të përfundojë në fillim për shkak të një gabimi? 97 00:05:23,360 --> 00:05:26,390 Pas kthimit në zero tregon një të kandidojë suksesshëm, 98 00:05:26,390 --> 00:05:29,510 dhe kthimin ndonjë vlerë jo-zero tregon një gabim. 99 00:05:29,510 --> 00:05:31,950 Varësisht nga lloji i programit ju jeni me shkrim, 100 00:05:31,950 --> 00:05:34,960 kthyer kode të ndryshme për gabime të ndryshme mund të jenë të dobishme 101 00:05:34,960 --> 00:05:37,210 për njerëzit që përdorin programin tuaj më vonë. 102 00:05:37,210 --> 00:05:40,220 Rrjeta Argumentet janë pak më të komplikuara. 103 00:05:40,220 --> 00:05:42,150 >> Lista Argumenti ose mund të jetë bosh, 104 00:05:42,150 --> 00:05:45,330 që ne të tregojnë duke shkruar zbrazëti në mes të kllapa, 105 00:05:45,330 --> 00:05:50,220 ose lista mund të ketë 2 argumente: një int dhe një grup i char * s. 106 00:05:50,220 --> 00:05:52,820 Këto janë përdorur kur programi juaj ka ndërmend të përdorë 107 00:05:52,820 --> 00:05:56,490 Argumentet kaluar në në rreshtin e komandave, kur programi thirret. 108 00:05:56,490 --> 00:05:59,690 Argumenti int quhet zakonisht argc, 109 00:05:59,690 --> 00:06:03,300 dhe kjo është e barabartë gjatësia e array * char, i njohur si argv. 110 00:06:03,300 --> 00:06:07,080 Argv përmban argumente command line kaloi në program. 111 00:06:07,080 --> 00:06:11,440 Në një tjetër fjalë, ne do të flasim rreth asaj se si të përdorin këto variabla në detaje më shumë. 112 00:06:11,440 --> 00:06:15,220 Tani për tani, ju mund të ndjeheni të lirë për të deklaruar kryesore ose rrugën. 113 00:06:15,220 --> 00:06:19,410 Unë zakonisht zgjedhin për të shkruar atë rrugën më të shkurtër, pa argumente, kur të jetë e mundur. 114 00:06:19,410 --> 00:06:22,230 >> Tani që ju e dini se si të shkruani funksionet, 115 00:06:22,230 --> 00:06:25,030 ju jeni edhe në rrugën tuaj për zhvillimin e programeve të mëdha, më komplekse. 116 00:06:25,030 --> 00:06:29,740 Emri im është Nate Hardison. Kjo është CS50.