[Musika jotzen] DOUG LLOYD: Ondo da. Gai bitxi bat mota da, ezta? Zenbakiak Magic. Zer doe esan zuen zenean Zenbakien magia buruz hitz egiten? Beno, programetako batzuk CS50 dugun idatzita dagoela orain arte arraro batzuk izan dute zenbakiak, eurekin bota. Agian arrazoiak direla eta, ez dugu erabat ulertzen oraintxe. Adibidez, Mario arazoa, dugu piramidearen altuera capped 23 at. Esplizituki esan dizuegu Ezin 23a baino handiagoa izan joan. Baina zer esan nahi du 23? Beno, irakurri nahi izanez gero egin zehaztapenak arretaz, zuk ikusi ahal izan liteke hori Arrazoia da capped dugu 23 da altuera estandarra delako terminal-leiho baten 24 da. Eta behar badugu piramide hori baino altuagoa izan, Gauza bitxi hori egin zitekeen non off exekutatzen da pantailan. Eta badakizu, zer egiten du duten testuinguruan esan nahi du, ezta? 23. berehala bistako esanahia da norbaiti nork zure programa eta etorkizunari begira eta, agian ditu desberdin bat tamaina terminal leihoa? Seguru asko ez. Badirudi bezalakoa da, OK. Beno, zergatik da besterik 23 baino gutxiago? Oro har, gauza ohitura txarra benetan konstanteak idatzi Zure kodea. Hori egitean, denean, egia esan, ez duzu konstante bat idatzi zure kodea sartu, Honez batzuetan aipatzen gisan Zenbakien magia, eta horrek zerbait da Oro har, saiatu eta saihestu nahi dugu. Esate baterako, dezagun begirada bat funtzio sinple hau hemen. Jakina, ez da daturik C motako txartela edo bizkarreko deitzen. Beraz, nirekin hartu. Da apur bat It pseudocode hemen nahasten. Hau izeneko funtzio bat da Aurre-txartela itxuraz sorta bat hartzen du argumentu bezala, eta Niri irteera txartel bakar batean. Eta zerbait egiten ari naiz hemen I 0tik 52 exekutatzen begizta bat, eta txartel bat landu dut. Beno, lortu dugu magiko bat Hemen ere zenbakia, eskubidea. Ikusten duzu zer zenbaki magikoa da? Edo are garrantzitsuagoa dena, ez duzu ikusi du zein den arazoa hemen? Bereziki hau bada funtzio bat besterik ez da Bere batean fitxategi propioan dituen karpeta ezberdinak sorta bat fitxategiak, eta bakoitzak bere beste gauza bat egiten duen karta-sorta bat da. Agian horiek nahasten da, edo esku bat jorratzen bost txartelak txartel bakar baten ordez. Ba al dakizu zer ikusten duzu Arazoa hemen izan daiteke? Ez zenbaki magikoa ikusten duzu Nik injektatu kodea sartu? Da 52, eskuinera. Atsegin dut, senez ezagutzen duzu, ziurrenik, OK. Bizkarreko estandar bat Like txartelak 52 karta ditu. Baina gure programa, besterik ez da motatako inguruan flotatzen han ere. Da bezala bat-batean, ez da 52 a. Hau konpontzeko modu bat Arazoa da hori egin ahal izateko. Oso esplizituki ari gara orain Bizkarreko tamainaren 52 gisa deituz. Intuitiboa apur bat gehiago ematen du zentzua begizta for the denean ondoren, geroago esan dugu, i Bizkarreko tamaina baino txikiagoa da. Badirudi zerbait esanez 52 baino hobeto. Orain hori da benetan arazoa konpondu. It emango die sinboliko batzuk konstante zentzua. Baina ez da mota horretako benetan beste arazo bat aurkeztu agian hori ez da berehala itxurazko. Nahiz eta aldagai hau deklaratu globally-- gogoan al duzue zer da esan nahi denean aldarrikatzen dugu aldagai bat globalean lokalean versus? Aldagai bat izendatuko badugu ere orokorrean, zer ez da bada beste funtzio bat Gure funtzioen suite txartela manipulazioa akordio hori oharkabean bizkarreko tamaina aldatzen, edo hura areagotu egiten da arabera 1 edo gutxitzen 1. Hori arazoak ortografia izan da, ezta? Multzo bat aurre ari gara, batez ere bada txartelak non nahasteko bizkarreko osoa beharrezkoa da. Bizkarreko tamaina jaitsi ziren badago 1-ek, adibidez, 51, ez gara benetan nahasteko Karta guztiak seguru. Oraindik horietako bat utziz dugu out. Eta balio zezakeen agian izan iragarri edo aktore txarra ustia. C zer deitzen bat ematen Preprocessor, bertan halaber, makro bat deitzen da konstanteak sinbolikoak sortzerik. Eta hain zuzen ere, dagoeneko duzun ikusi preprocessor direktiba, Egin ez bada ere entzun ezazu Hori # besteak deitu. Makro bat beste adibide bat da edo Preprocessor. Modu konstanteak sinbolikoa sortzea da, edo izen bat emanez konstante bat duelako orain zentzua, honako hau da. define, izena, bere ordez. Benetan garrantzitsua alde batera utzita Hemen oso bizkorra. Ez jarri semicolon batean Zure #defines amaieran. Beraz, # define, izen, ordezko da. Programa bildu, benetan gertatzen joan konpiladoreak da Zure kodearen bidez eta berdinetan aldaketa hitza "name" edozer duzu ordezko gisa jarri. Berdintsuan, #include bada moduko kopiatzea eta itsastea antzekoa, ondoren sort da define aurkitzeko eta ordezkatu antzekoa, duzun inoiz erabiltzen Ezaugarri hori bada batean hitza prozesatzeko programa, adibidez. Beraz, adibidez, badut # define pi 3.14159265 bezala, Oraindik bada hobeto matematikoki inklinatu eta bat-batean ikusi 3.14159265 hegalaria inguruan zure kodea, Seguruenik ezagutzen duzu pi buruz hitz egiten ari da. Baina, agian, bat eman ahal izango dugu esanahi sinboliko gutxi. Eta horren ordez, ezin dugu esan define pi zenbakiak mokadu duten bezala Ni ez naiz hori mantendu egingo da eta gehiagoko baino gehiago irakurtzen. Eta zer da, orduan gertatuko joan bildu denbora da denean programa da bildu, lehenengo gauza dela gertatuko bidez egingo da joan eta aldi bakoitzean ordezkatuko du capital P, kapital dut ikusten da, literalki izango da ordeztu dituzten 3.14 eta abar, eta, beraz, ez dute idazten da behin denbora zure programa oraindik funtzionalitatea du duzula Espero, zuk lanean ari delako manipulatzeko, biderkatzeko, , zatituz bidezko dena Pi da. Ez zara honetara mugatuta zenbakiak bakarrik ordezkatzea. Adibidez, # define nezakeen Jakina katea CS50 bezala. Kasu honetan, denean programa konpilatu, bidez egingo define joan kodea, ordezkatu aldi bakoitzean "Noski" ikusten duen katea CS50 batera. Konturatu hemen duzu Bestalde, ohikoa dut define guztiak nire definitzen sinbolikoa konstanteak, nolabait esateko, beti dira txapelak guztietan. Konbentzio bat da. Ez da beharrezkoa. Arrazoia, oro har, pertsona erabiliko du hiriburuetan denean #defining ari dira hau da, besterik gabe, benetan argia dela egiteko Nire kode elementu jakin honetan definitutako konstante bat da. Minuskulaz balitz, posible da aldagai batekin liteke nahastu. Eta hori da, ziurrenik, Ez da gauza ona egin. Beraz, jakin honetan konponbidea askoz hobeto aurrekoen bai baino. I lehen define bizkarreko tamaina 52, orduan bada orain nire 52, edo bizkarreko tamaina hemen erabilera, da asko intuitiboagoa eta asko seguruagoa. Ezin duzu konstante bat manipulatzen. Ezin da esan 52 plus plus. Hori ez da bihurtzeko 53 joan. Ezin duzu 52 aldatzeko zerbait. Aldagai bat aldatu dezakezu horren balioa 52 da, bertan aurretik izan genuen lehen fix zen. Eta handitu ahal izango duzu 53 aldagai hori. Baina ezin esan duzu 52 plus plus eta Bat-batean piztu 52 53 sartu dute. 52 52 da beti. Eta, beraz, ezin oharkabean aldatu Bizkarreko tamaina hemen manipulatuz arabera, Beste alde ona nahiz eta honen eragina da direla badakigu ez duzula Mundu osoko herrialde guztietako erabili tamaina 52 karta-sorta bat? Esate baterako, benetan ohikoa da Alemania bizkarreko 32 tamaina bat erabili, non kenduko dute batzuk behekoan balio txartelak. Eta, kasu honetan, I Nire suite ataka nahi diela jorratzen dituzten funtzioen txartela Alemaniara manipulazioa. Ahal lehen kasuan, I dugu erakutsi dute joan eta ordeztu 52 agerpen guztiak 32 nire kodea. Baina hemen, I # define bada bizkarreko tamaina 32 nire kodearen hasieran zenbait bezala, aldatu behar badut, I can besterik gabe, joan eta gauza bat dela aldatuko. Berkonpilatu nire kodea, eta guztia Bat-batean hedatzen da bidez. Izan ere, bizkarreko aldatzeko aukera izango dugu Nahi dugu inolako baliorik den tamainan. Ezer egin dezaket interesatzen batean Bizkarreko tamaina bilketa jokoa? Naiz Doug Lloyd. Eta hau da CS50.