1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> SPEAKER 1: Do mi sentas min kiel mi emas skribi printf saluton mondo aŭ printf 3 00:00:04,010 --> 00:00:08,160 saluton procento s tre ofte en kuntekstoj kie mi volas printi a 4 00:00:08,160 --> 00:00:11,360 kordo, foje demandi al la uzanto parto de tiu ĉeno. 5 00:00:11,360 --> 00:00:14,980 Nu, ĉu ne estus agrable, se ni kreis funkcio de nia propra nomi, 6 00:00:14,980 --> 00:00:19,900 diri, presi nomo, kies celo en la vivo Estas simple printi saluton komo 7 00:00:19,900 --> 00:00:24,560 tiom-kaj-tiel per akcepto de la tiel-kaj-tiel kiel argumento por tiu funkcio? 8 00:00:24,560 --> 00:00:29,220 Ni povas deklari funkcio de nia propra ĝuste kiel ni povas en Scratch jene. 9 00:00:29,220 --> 00:00:35,280 >> En aliaj vortoj, supozu mi ŝatus printf vian nomon kaj poste peti de la uzanto 10 00:00:35,280 --> 00:00:39,470 cxar lia aŭ ŝia nomo kun kordo s egalas GetString. 11 00:00:39,470 --> 00:00:42,060 Kaj tiam mi volas nomi funkcio vokis print nomo 12 00:00:42,060 --> 00:00:44,340 pasante s kiel ĝia enigo. 13 00:00:44,340 --> 00:00:47,770 >> Nun bedaŭrinde, ne estas funkcio vokis print nomo en C aŭ en 14 00:00:47,770 --> 00:00:48,950 la cs50 biblioteko. 15 00:00:48,950 --> 00:00:51,220 Sed ne gravis, ĉar ni povas fari ĝin. 16 00:00:51,220 --> 00:00:54,560 Deklari funkcio de nia propra kaj tiam apliki ĝin, ni povas simple fari 17 00:00:54,560 --> 00:00:59,000 iu ĉambro en tiu dosiero kaj deklari ĉi funkcio kiel sekvas, void - 18 00:00:59,000 --> 00:01:01,900 montrante, ke la funkcio estas ne fakte tuj revenos ion, 19 00:01:01,900 --> 00:01:03,890 eĉ se ĝi havos flanka efiko - 20 00:01:03,890 --> 00:01:08,030 presi nomo, kaj tiam ni specifi en Parentezoj ke print nomo atendas an 21 00:01:08,030 --> 00:01:09,680 argumento de tipo kordo. 22 00:01:09,680 --> 00:01:12,180 Kaj ĝenerale, ni devos pensi de tiu kiel nomo. 23 00:01:12,180 --> 00:01:15,140 >> Kaj ni malfermu niajn krampoj kaj fermi niajn streĉa. 24 00:01:15,140 --> 00:01:21,930 Kaj tiam printf interne saluton komo procento nova linio komo nomo. 25 00:01:21,930 --> 00:01:24,570 En aliaj vortoj, eĉ se tiu funkcio estas nur unu linion de kodo, ĝi 26 00:01:24,570 --> 00:01:27,290 ne nun havas iom pli alta nivelo intencas presi 27 00:01:27,290 --> 00:01:28,950 ies nomon kun saluto. 28 00:01:28,950 --> 00:01:33,115 >> Nun interne de ĉefaj, ili rimarkas, ke mi estas nomante print nomo pasante s. 29 00:01:33,115 --> 00:01:35,830 Kaj do mi ŝajnas nun havi kompletan programon. 30 00:01:35,830 --> 00:01:38,650 La sola diferenco de aliaj ni jam skribis estas kiu ne nur faras 31 00:01:38,650 --> 00:01:42,480 ĉi programo ĉefa, ĝi ankaŭ havas deklaro kaj efektivigo de 32 00:01:42,480 --> 00:01:44,740 print nomo, funkcio de mia propra. 33 00:01:44,740 --> 00:01:49,505 >> Ni nun kompili mian programon per ŝminko funkcio nulo, kaj ruli ĝin per skalara 34 00:01:49,505 --> 00:01:51,080 oblikvo funkcio nulo. 35 00:01:51,080 --> 00:01:53,390 Kiam instigis mian nomon Mi tajpas en David. 36 00:01:53,390 --> 00:01:55,830 Kaj mi ja estas salutis kun "Saluton, Davido." 37 00:01:55,830 --> 00:02:00,160 >> Nun, ĝi rezultas Mi tre intence deklaris print nomon supre ĉefa, 38 00:02:00,160 --> 00:02:03,860 per tio diri C anticipe, ke ekzistas Ekzistas funkcio nomita print 39 00:02:03,860 --> 00:02:06,930 nomo tiel ke mi povus uzi ĝin poste en ĉefa. 40 00:02:06,930 --> 00:02:11,610 Nun, se mi anstataŭ meti print nomo ĉe la fundo de mia dosiero, kiel sincere mi 41 00:02:11,610 --> 00:02:15,310 probable devus fari por ke ĉefa restaĵojn la unua afero, kiun mi aŭ 42 00:02:15,310 --> 00:02:18,450 alia uzanto vidas en mia kodo, rezultas, ke mia kodo estas 43 00:02:18,450 --> 00:02:19,780 Ne tuj kompili. 44 00:02:19,780 --> 00:02:23,610 >> Specife, se mi reirus al mia fina fenestro kaj run fari funkcio 45 00:02:23,610 --> 00:02:26,120 nulo nun rimarkas, ke mi kriis al. 46 00:02:26,120 --> 00:02:30,340 Se mi rulumu supren en mia fina fenestro, Mi vidos ĉi unua eraro en ruĝa, 47 00:02:30,340 --> 00:02:33,120 implica deklaro de funkcio print nomo. 48 00:02:33,120 --> 00:02:34,220 >> Nun, kio signifas tio? 49 00:02:34,220 --> 00:02:37,190 Nu, kvankam mi implementado presi nomo en tiu dosiero, mi ne 50 00:02:37,190 --> 00:02:40,080 implementado gxin antaux mi havas uzis ĝin en ĉefa. 51 00:02:40,080 --> 00:02:43,160 Nun, ni povus reiri al la malnova versio kaj meti print nomo 52 00:02:43,160 --> 00:02:44,450 efektivigo supren top. 53 00:02:44,450 --> 00:02:48,730 >> Sed mi povas anstataŭ simple doni C aludo ke estas funkcio venos. 54 00:02:48,730 --> 00:02:55,390 Specife, supre ĉefa mi povas deklari presi nomon same kiel mi faris antaŭe, sed 55 00:02:55,390 --> 00:02:59,450 fini la linion kun punktokomo, tiamaniere promesante apliki sed ankoraux ne 56 00:02:59,450 --> 00:03:02,180 efektive apliki la funkcio vokis print nomo. 57 00:03:02,180 --> 00:03:05,860 Mi povas do havi ĉefan ĉe la supro de mia dosiero kiel mi atendis, kaj mi povos reale 58 00:03:05,860 --> 00:03:07,440 apliki print nomon ĉe la malsupro. 59 00:03:07,440 --> 00:03:12,860 >> Se mi nun revenas al mia fina fenestro kaj rekompili funkcio nulo per ŝminko, 60 00:03:12,860 --> 00:03:14,390 Siatempe estas kompilanto. 61 00:03:14,390 --> 00:03:18,240 Kaj se mi kuras kun skalara oblikvo funkcio nulo havigi mian nomon, mi estas 62 00:03:18,240 --> 00:03:20,650 salutis kiel "Saluton, Davido." 63 00:03:20,650 --> 00:03:22,268