1 00:00:00,000 --> 00:00:02,350 >> [Musika jotzen] 2 00:00:02,350 --> 00:00:05,444 3 00:00:05,444 --> 00:00:06,360 DOUG LLOYD: Ondo da. 4 00:00:06,360 --> 00:00:07,770 Gai bitxi bat mota da, ezta? 5 00:00:07,770 --> 00:00:09,050 Zenbakiak Magic. 6 00:00:09,050 --> 00:00:12,012 Zer doe esan zuen zenean Zenbakien magia buruz hitz egiten? 7 00:00:12,012 --> 00:00:14,220 Beno, programetako batzuk CS50 dugun idatzita dagoela 8 00:00:14,220 --> 00:00:16,660 orain arte arraro batzuk izan dute zenbakiak, eurekin bota. 9 00:00:16,660 --> 00:00:19,680 Agian arrazoiak direla eta, ez dugu erabat ulertzen oraintxe. 10 00:00:19,680 --> 00:00:23,950 Adibidez, Mario arazoa, dugu piramidearen altuera capped 23 at. 11 00:00:23,950 --> 00:00:26,880 Esplizituki esan dizuegu Ezin 23a baino handiagoa izan joan. 12 00:00:26,880 --> 00:00:28,702 >> Baina zer esan nahi du 23? 13 00:00:28,702 --> 00:00:30,410 Beno, irakurri nahi izanez gero egin zehaztapenak arretaz, zuk 14 00:00:30,410 --> 00:00:32,493 ikusi ahal izan liteke hori Arrazoia da capped dugu 23 15 00:00:32,493 --> 00:00:36,160 da altuera estandarra delako terminal-leiho baten 24 da. 16 00:00:36,160 --> 00:00:38,860 Eta behar badugu piramide hori baino altuagoa izan, 17 00:00:38,860 --> 00:00:41,290 Gauza bitxi hori egin zitekeen non off exekutatzen da pantailan. 18 00:00:41,290 --> 00:00:45,140 Eta badakizu, zer egiten du duten testuinguruan esan nahi du, ezta? 19 00:00:45,140 --> 00:00:48,880 >> 23. berehala bistako esanahia da norbaiti nork zure programa eta etorkizunari begira 20 00:00:48,880 --> 00:00:51,550 eta, agian ditu desberdin bat tamaina terminal leihoa? 21 00:00:51,550 --> 00:00:52,330 Seguru asko ez. 22 00:00:52,330 --> 00:00:53,080 Badirudi bezalakoa da, OK. 23 00:00:53,080 --> 00:00:55,005 Beno, zergatik da besterik 23 baino gutxiago? 24 00:00:55,005 --> 00:00:56,880 Oro har, gauza ohitura txarra benetan 25 00:00:56,880 --> 00:00:58,940 konstanteak idatzi Zure kodea. 26 00:00:58,940 --> 00:01:02,190 Hori egitean, denean, egia esan, ez duzu konstante bat idatzi zure kodea sartu, 27 00:01:02,190 --> 00:01:05,630 Honez batzuetan aipatzen gisan Zenbakien magia, eta horrek zerbait da 28 00:01:05,630 --> 00:01:08,030 Oro har, saiatu eta saihestu nahi dugu. 29 00:01:08,030 --> 00:01:12,830 >> Esate baterako, dezagun begirada bat funtzio sinple hau hemen. 30 00:01:12,830 --> 00:01:15,726 Jakina, ez da daturik C motako txartela edo bizkarreko deitzen. 31 00:01:15,726 --> 00:01:16,600 Beraz, nirekin hartu. 32 00:01:16,600 --> 00:01:18,910 Da apur bat It pseudocode hemen nahasten. 33 00:01:18,910 --> 00:01:21,050 Hau izeneko funtzio bat da Aurre-txartela itxuraz 34 00:01:21,050 --> 00:01:26,570 sorta bat hartzen du argumentu bezala, eta Niri irteera txartel bakar batean. 35 00:01:26,570 --> 00:01:30,990 >> Eta zerbait egiten ari naiz hemen I 0tik 52 exekutatzen begizta bat, 36 00:01:30,990 --> 00:01:33,394 eta txartel bat landu dut. 37 00:01:33,394 --> 00:01:35,310 Beno, lortu dugu magiko bat Hemen ere zenbakia, eskubidea. 38 00:01:35,310 --> 00:01:38,790 Ikusten duzu zer zenbaki magikoa da? 39 00:01:38,790 --> 00:01:42,280 Edo are garrantzitsuagoa dena, ez duzu ikusi du zein den arazoa hemen? 40 00:01:42,280 --> 00:01:44,310 Bereziki hau bada funtzio bat besterik ez da 41 00:01:44,310 --> 00:01:48,030 Bere batean fitxategi propioan dituen karpeta 42 00:01:48,030 --> 00:01:49,970 ezberdinak sorta bat fitxategiak, eta bakoitzak bere 43 00:01:49,970 --> 00:01:51,670 beste gauza bat egiten duen karta-sorta bat da. 44 00:01:51,670 --> 00:01:57,310 Agian horiek nahasten da, edo esku bat jorratzen bost txartelak txartel bakar baten ordez. 45 00:01:57,310 --> 00:01:59,420 >> Ba al dakizu zer ikusten duzu Arazoa hemen izan daiteke? 46 00:01:59,420 --> 00:02:03,220 Ez zenbaki magikoa ikusten duzu Nik injektatu kodea sartu? 47 00:02:03,220 --> 00:02:04,390 Da 52, eskuinera. 48 00:02:04,390 --> 00:02:06,440 >> Atsegin dut, senez ezagutzen duzu, ziurrenik, OK. 49 00:02:06,440 --> 00:02:09,740 Bizkarreko estandar bat Like txartelak 52 karta ditu. 50 00:02:09,740 --> 00:02:12,570 Baina gure programa, besterik ez da motatako inguruan flotatzen han ere. 51 00:02:12,570 --> 00:02:15,280 Da bezala bat-batean, ez da 52 a. 52 00:02:15,280 --> 00:02:18,290 >> Hau konpontzeko modu bat Arazoa da hori egin ahal izateko. 53 00:02:18,290 --> 00:02:22,724 Oso esplizituki ari gara orain Bizkarreko tamainaren 52 gisa deituz. 54 00:02:22,724 --> 00:02:25,390 Intuitiboa apur bat gehiago ematen du zentzua begizta for the denean 55 00:02:25,390 --> 00:02:28,650 ondoren, geroago esan dugu, i Bizkarreko tamaina baino txikiagoa da. 56 00:02:28,650 --> 00:02:32,666 Badirudi zerbait esanez 52 baino hobeto. 57 00:02:32,666 --> 00:02:34,290 Orain hori da benetan arazoa konpondu. 58 00:02:34,290 --> 00:02:38,460 It emango die sinboliko batzuk konstante zentzua. 59 00:02:38,460 --> 00:02:40,820 Baina ez da mota horretako benetan beste arazo bat aurkeztu 60 00:02:40,820 --> 00:02:43,770 agian hori ez da berehala itxurazko. 61 00:02:43,770 --> 00:02:45,859 Nahiz eta aldagai hau deklaratu globally-- 62 00:02:45,859 --> 00:02:47,650 gogoan al duzue zer da esan nahi denean aldarrikatzen dugu 63 00:02:47,650 --> 00:02:50,500 aldagai bat globalean lokalean versus? 64 00:02:50,500 --> 00:02:53,340 Aldagai bat izendatuko badugu ere orokorrean, zer ez da bada 65 00:02:53,340 --> 00:02:55,500 beste funtzio bat Gure funtzioen suite 66 00:02:55,500 --> 00:02:59,750 txartela manipulazioa akordio hori oharkabean bizkarreko tamaina aldatzen, 67 00:02:59,750 --> 00:03:02,727 edo hura areagotu egiten da arabera 1 edo gutxitzen 1. 68 00:03:02,727 --> 00:03:04,060 Hori arazoak ortografia izan da, ezta? 69 00:03:04,060 --> 00:03:08,261 Multzo bat aurre ari gara, batez ere bada txartelak non nahasteko bizkarreko osoa 70 00:03:08,261 --> 00:03:08,760 beharrezkoa da. 71 00:03:08,760 --> 00:03:12,804 Bizkarreko tamaina jaitsi ziren badago 1-ek, adibidez, 51, 72 00:03:12,804 --> 00:03:14,970 ez gara benetan nahasteko Karta guztiak seguru. 73 00:03:14,970 --> 00:03:16,500 Oraindik horietako bat utziz dugu out. 74 00:03:16,500 --> 00:03:21,680 Eta balio zezakeen agian izan iragarri edo aktore txarra ustia. 75 00:03:21,680 --> 00:03:24,920 >> C zer deitzen bat ematen Preprocessor, bertan 76 00:03:24,920 --> 00:03:27,764 halaber, makro bat deitzen da konstanteak sinbolikoak sortzerik. 77 00:03:27,764 --> 00:03:30,180 Eta hain zuzen ere, dagoeneko duzun ikusi preprocessor direktiba, 78 00:03:30,180 --> 00:03:32,916 Egin ez bada ere entzun ezazu Hori # besteak deitu. 79 00:03:32,916 --> 00:03:37,150 Makro bat beste adibide bat da edo Preprocessor. 80 00:03:37,150 --> 00:03:41,290 >> Modu konstanteak sinbolikoa sortzea da, edo izen bat emanez konstante bat 81 00:03:41,290 --> 00:03:43,740 duelako orain zentzua, honako hau da. 82 00:03:43,740 --> 00:03:47,030 define, izena, bere ordez. 83 00:03:47,030 --> 00:03:49,140 Benetan garrantzitsua alde batera utzita Hemen oso bizkorra. 84 00:03:49,140 --> 00:03:54,180 Ez jarri semicolon batean Zure #defines amaieran. 85 00:03:54,180 --> 00:03:57,310 Beraz, # define, izen, ordezko da. 86 00:03:57,310 --> 00:03:59,540 >> Programa bildu, benetan gertatzen 87 00:03:59,540 --> 00:04:01,740 joan konpiladoreak da Zure kodearen bidez 88 00:04:01,740 --> 00:04:06,770 eta berdinetan aldaketa hitza "name" edozer duzu 89 00:04:06,770 --> 00:04:08,860 ordezko gisa jarri. 90 00:04:08,860 --> 00:04:13,060 Berdintsuan, #include bada moduko kopiatzea eta itsastea antzekoa, 91 00:04:13,060 --> 00:04:15,700 ondoren sort da define aurkitzeko eta ordezkatu antzekoa, 92 00:04:15,700 --> 00:04:19,180 duzun inoiz erabiltzen Ezaugarri hori bada batean hitza prozesatzeko programa, adibidez. 93 00:04:19,180 --> 00:04:26,345 >> Beraz, adibidez, badut # define pi 3.14159265 bezala, 94 00:04:26,345 --> 00:04:28,720 Oraindik bada hobeto matematikoki inklinatu eta bat-batean 95 00:04:28,720 --> 00:04:31,640 ikusi 3.14159265 hegalaria inguruan zure kodea, 96 00:04:31,640 --> 00:04:33,517 Seguruenik ezagutzen duzu pi buruz hitz egiten ari da. 97 00:04:33,517 --> 00:04:35,850 Baina, agian, bat eman ahal izango dugu esanahi sinboliko gutxi. 98 00:04:35,850 --> 00:04:39,850 Eta horren ordez, ezin dugu esan define pi zenbakiak mokadu duten bezala 99 00:04:39,850 --> 00:04:42,110 Ni ez naiz hori mantendu egingo da eta gehiagoko baino gehiago irakurtzen. 100 00:04:42,110 --> 00:04:45,560 >> Eta zer da, orduan gertatuko joan bildu denbora da denean programa da 101 00:04:45,560 --> 00:04:48,530 bildu, lehenengo gauza dela gertatuko bidez egingo da joan 102 00:04:48,530 --> 00:04:51,520 eta aldi bakoitzean ordezkatuko du capital P, kapital dut ikusten da, 103 00:04:51,520 --> 00:04:55,610 literalki izango da ordeztu dituzten 3.14 eta abar, eta, beraz, 104 00:04:55,610 --> 00:04:58,090 ez dute idazten da behin denbora zure programa oraindik 105 00:04:58,090 --> 00:05:00,631 funtzionalitatea du duzula Espero, zuk lanean ari delako 106 00:05:00,631 --> 00:05:05,090 manipulatzeko, biderkatzeko, , zatituz bidezko dena Pi da. 107 00:05:05,090 --> 00:05:08,230 >> Ez zara honetara mugatuta zenbakiak bakarrik ordezkatzea. 108 00:05:08,230 --> 00:05:12,279 Adibidez, # define nezakeen Jakina katea CS50 bezala. 109 00:05:12,279 --> 00:05:14,070 Kasu honetan, denean programa konpilatu, 110 00:05:14,070 --> 00:05:16,236 bidez egingo define joan kodea, ordezkatu aldi bakoitzean 111 00:05:16,236 --> 00:05:19,900 "Noski" ikusten duen katea CS50 batera. 112 00:05:19,900 --> 00:05:21,720 >> Konturatu hemen duzu Bestalde, ohikoa dut 113 00:05:21,720 --> 00:05:26,090 define guztiak nire definitzen sinbolikoa konstanteak, nolabait esateko, 114 00:05:26,090 --> 00:05:28,130 beti dira txapelak guztietan. 115 00:05:28,130 --> 00:05:28,960 Konbentzio bat da. 116 00:05:28,960 --> 00:05:30,170 Ez da beharrezkoa. 117 00:05:30,170 --> 00:05:33,900 Arrazoia, oro har, pertsona erabiliko du hiriburuetan denean #defining ari dira 118 00:05:33,900 --> 00:05:37,590 hau da, besterik gabe, benetan argia dela egiteko Nire kode elementu jakin honetan 119 00:05:37,590 --> 00:05:38,820 definitutako konstante bat da. 120 00:05:38,820 --> 00:05:43,730 Minuskulaz balitz, posible da aldagai batekin liteke nahastu. 121 00:05:43,730 --> 00:05:46,120 Eta hori da, ziurrenik, Ez da gauza ona egin. 122 00:05:46,120 --> 00:05:48,910 >> Beraz, jakin honetan konponbidea askoz hobeto 123 00:05:48,910 --> 00:05:50,550 aurrekoen bai baino. 124 00:05:50,550 --> 00:05:59,950 I lehen define bizkarreko tamaina 52, orduan bada orain nire 52, edo bizkarreko tamaina hemen erabilera, 125 00:05:59,950 --> 00:06:01,850 da asko intuitiboagoa eta asko seguruagoa. 126 00:06:01,850 --> 00:06:03,280 Ezin duzu konstante bat manipulatzen. 127 00:06:03,280 --> 00:06:05,259 Ezin da esan 52 plus plus. 128 00:06:05,259 --> 00:06:06,800 Hori ez da bihurtzeko 53 joan. 129 00:06:06,800 --> 00:06:09,390 Ezin duzu 52 aldatzeko zerbait. 130 00:06:09,390 --> 00:06:12,470 >> Aldagai bat aldatu dezakezu horren balioa 52 da, 131 00:06:12,470 --> 00:06:14,870 bertan aurretik izan genuen lehen fix zen. 132 00:06:14,870 --> 00:06:17,000 Eta handitu ahal izango duzu 53 aldagai hori. 133 00:06:17,000 --> 00:06:21,100 Baina ezin esan duzu 52 plus plus eta Bat-batean piztu 52 53 sartu dute. 134 00:06:21,100 --> 00:06:23,350 52 52 da beti. 135 00:06:23,350 --> 00:06:28,860 Eta, beraz, ezin oharkabean aldatu Bizkarreko tamaina hemen manipulatuz arabera, 136 00:06:28,860 --> 00:06:29,940 137 00:06:29,940 --> 00:06:32,390 >> Beste alde ona nahiz eta honen eragina da 138 00:06:32,390 --> 00:06:38,310 direla badakigu ez duzula Mundu osoko herrialde guztietako 139 00:06:38,310 --> 00:06:40,690 erabili tamaina 52 karta-sorta bat? 140 00:06:40,690 --> 00:06:45,630 Esate baterako, benetan ohikoa da Alemania bizkarreko 32 tamaina bat erabili, 141 00:06:45,630 --> 00:06:48,020 non kenduko dute batzuk behekoan balio txartelak. 142 00:06:48,020 --> 00:06:50,960 Eta, kasu honetan, I Nire suite ataka nahi diela 143 00:06:50,960 --> 00:06:55,390 jorratzen dituzten funtzioen txartela Alemaniara manipulazioa. 144 00:06:55,390 --> 00:06:59,440 Ahal lehen kasuan, I dugu erakutsi dute joan eta ordeztu 145 00:06:59,440 --> 00:07:03,570 52 agerpen guztiak 32 nire kodea. 146 00:07:03,570 --> 00:07:07,940 >> Baina hemen, I # define bada bizkarreko tamaina 32 nire kodearen hasieran zenbait bezala, 147 00:07:07,940 --> 00:07:11,730 aldatu behar badut, I can besterik gabe, joan eta gauza bat dela aldatuko. 148 00:07:11,730 --> 00:07:15,010 Berkonpilatu nire kodea, eta guztia Bat-batean hedatzen da bidez. 149 00:07:15,010 --> 00:07:18,850 Izan ere, bizkarreko aldatzeko aukera izango dugu Nahi dugu inolako baliorik den tamainan. 150 00:07:18,850 --> 00:07:22,500 >> Ezer egin dezaket interesatzen batean Bizkarreko tamaina bilketa jokoa? 151 00:07:22,500 --> 00:07:23,430 >> Naiz Doug Lloyd. 152 00:07:23,430 --> 00:07:25,840 Eta hau da CS50. 153 00:07:25,840 --> 00:07:27,772