[Musika jotzen] DAVID J. MALAN: Ondo da. Hau CS50 da, eta hau Astean 2 amaiera da. Beraz, gaur egun, goazen gure begirada jarraitzeko Gauzak nola adierazten dugu at hood-- kanpoan mugitzen azpian osokoak bezala zenbakiak eta puntu balio flotatzen eta kateak eta bideratua programak, azken finean interesgarria. Baina, gainera, dugu bat begirada bat hartu domeinu-berariazko arazoak pare Lehendabizikoa will izan kriptografia inplikatuz, informazio scrambling artea, bertan, goian ikusten duzu hemen Radio umerzurtzak Annie argazki bat da deskodetzailea sekretua antaño batetik ring. Hau da, benetan oso primitibo eta seme-alabak errespetatzen cryptopgraphy formularioa Horren bidez eraztun hau bi disks-- ditu barruan eta kanpoan inor. Eta horietako bat biratzen, dezakezu funtsean, lerro sortu A bezalako letrak beste letrekin Z bidez B A. bidez Bestela esanda bezala, literalki biratu dezakezu alfabetoa, horrela, datozen etatik mapping batekin letrak gutunak beraz, baduzu Mezu sekretu bat bidali nahi izan Annie bezalako norbait, idatzi ahal izango duzu Zure mezua behera eta gero biratu letrak, Horren bidez, esan nahi badituzu esateko "A", ordez esan duzu "B" esan nahi duk, "B" ordez esan duzu "C" - edo zerbait apur bat gehiago clever Egia baino eta, ondoren, azken finean, beti ere Annie deskodetzailea hau dauka ring, mezua deskodetu ahal izango du. Orain, gogora ekarri ahal izango duzu, hain zuzen ere, hori film oso ezaguna erabiltzen zen duten zehar ad nauseum juega Gabonetan. Ikus dezagun begirada bat hemen. Ralphie PARKER: "Izango da laburtuak guztiak ezagutzen Ralph Parker duten egileak izendatu da Little umerzurtzak Annie Secret kidea Circle and guztia jasotzeko eskubidea ohoreak eta onurak bertan agertutako gertatzen. " Ralphie PARKER (kontatuz): Sinatu Little umerzurtzak Annie. Berretsiak, Pierre Andre! Tinta. Ohore eta onurak, Dagoeneko bederatzi urte zituela. [Musika jotzen] [RADIO chatter] Ralphie PARKER: Goazen. Gaitezen berarekin. Ez dut behar jazz hori guztia kontrabandistak eta piratak buruzko. Irrati esataria: entzun bihar Ondorioak abentura gau The Black Pirate Ship of. Orain, denbora da Annie for You kideentzat Mezua Secret Circle Secret du. Gogoratu haurrek, bazkideek bakarrik Annie Circle Secret Annie sekretua mezua onar ditzake. Gogoratu, Annie duzun arabera. Ezarri zure pin B-2. Hemen da message-- 12, 11, 2-- Ralphie PARKER (kontatuz): I Nire sekretua lehen bileran nago. Irrati esataria: --25, 14, 11, 18, saioa 16 Ralphie PARKER (kontatuz): Oh, Pierre ahots gaur gauean handia izan zen. Esan izan dut gaur gauean horren mezua benetan garrantzitsua izan zen. Irrati esataria: --3, 25. Annie bere burua mezu bat da. Gogoratu, ez inori. [Arnasestuka] Ralphie PARKER (kontatuz): Laurogeita segundo geroago, naiz gela bakarra ere etxea non bederatzi mutiko bat pribatutasuna eta dekodetzailearen eseri. Ah. "B." [Chuckles] Ralphie PARKER (kontatuz): Joan hurrengo dut. "E." Lehen hitza da "izan". Bai! Orain errazagoa datozen zen. "U." [Chuckles] RANDY PARKER: Aw, goazen, Ralphie. Joan behar dut! Ralphie PARKER: eskuineko behera egongo naiz, Ma. Gee whiz. "T." "O." "Ziurtatu arte. "" Ziurtatu "zer? Zein izan da Little umerzurtzak Annie esan nahian? "Be ziur" zer? AMA: Ralphie, Randy joan lortu. Egingo Atera duzu? Ralphie PARKER: Ondo da, ama! Izan dut eskuineko out! Ralphie PARKER (kontatuz): Hurbilago lortzean orain nintzen. Tentsioa ikaragarria zen. Zer izan da? Planetaren patua Baliteke oreka zintzilikatzeko. AMA: Ralphie, Randy en got to joan! Ralphie PARKER: Ondo egongo naiz out, izarrekin negarrez ozen! Ralphie PARKER (Kontatuz): Ia ez! Nire behatzak hegan! Nire kontuan altzairu tranpa bat izan zen. Poro bakoitza vibrated. Ia argia izan da! Bai! Bai! Bai! Bai! Ralphie PARKER: "Ziurtatu zure Ovaltine edan. " Ovaltine? Crummy merkataritza? [Musika jotzen] Ralphie PARKER: putakumea. [Barre] DAVID J. MALAN: Beraz, orduan da zer kriptografia ohi bat this-- bat izan daiteke antaño edatea. Beraz, iragarkia azkar bat. Free zara honek badu Ostirala at 1:15 PM eta iba gurekin CS50 gustatuko bazkaria, URL honen buru hemen. Lehenengo etorria, lehen zerbitzatu ohi bezala. Baina denborak aurrera egin ahala, ziur lortuko dugu duten eta parte hartu nahi nuke gehien edonork antola-wise daiteke. Beraz kateak. Zamyla-- nori daukagu orain dituzun betetzen ziurrenik Arazoa Ezarri diren 1-- zeinen izena horrela idatzita dago. Eta demagun bere izena idatzi duzula programa informatiko bat hori da sartu getString antzeko zerbait erabiliz. Ordena berreskuratu In zanpatze horiek, nola do bat ordezkari joan gara katea, hitz bat, paragrafo bat, edo hemen horrelako letrak anitz? Buruz azken aldiz hitz egin dugu osokoak eta arazoak sortzen diren zenbaki oso gainezkatze-ekin eta puntu balio flotatzen eta arazoak doitasun barruan sortzen. Kateak, gutxienez dugu malgutasun pixka bat gehiago dute strings-- delako, besterik gabe, benetako world-- saioa luzera nahiko arbitrarioa izan daiteke. Nahiko laburra, nahiko luzea. Baina orduan ere, ari gara joan ordenagailuak can batzuetan memoria eta ezta exekutatu nahikoa kate handi bat gordetzeko. Baina orain, dezagun hasteko bistaratu kate bat kutxak horietan zerbait gisa hemen. Beraz, sei kutxak esaterako, eta horietako bakoitzak Pertsonaia bat edo adierazten "char". Beraz, gogora ekarri "char" dela - c-h-a-r-- da eraikitako-datuak C. mota bat Eta zer polita da hori erabili ahal izango duzu duen moduko eraikin bloke gisa, puzzle pieza bat, bada, bat osatzeko Datu mota handiago duten jarraituko dugu "katea". bat deitzeko Orain, zer da pentsatzen erabilgarria modu honetan kateak bezalako gauzak buruz? Beno, bihurtzen da, ahal dugun benetan leverage egitura honetan banakako pertsonaiak benetan sartzeko modu nahiko sinplea da. Aurretik joan eta sortzeko noa izeneko fitxategi bat "stringzero.c" baina zuk edozein dela ere gustatuko litzaidake dei daiteke. Eta ikastaroaren web orrian dago Dagoeneko aldez aurretik Adibide honetan, beraz, ez duzu behar guztia idatz itzazu. Eta aurrera noa joan eta lehen egin int hutsune nagusia. Eta egun batzuk barru, gain tease hasiko dugu zer hutsa da hemen, zergatik da int nagusiaren ondoan, eta abar. Baina orain, dezagun jarraitu kopiatu itsatsi duten. S izeneko kate bat aldarrikatu nahi dut. Eta ez dut nahi bueltan joan Edozein dela ere, erabiltzaile motak GetString. Hau da sinple bat izango da joan programa, jarraibideak ez, Besterik ez naiz itsu-itsuan joan Espero erabiltzaileak badaki zer simple mantentzeko egin. Eta orain bat izatea loop da. Eta nire begizta barruan nago int i lortzen zero izan behar da. Eta i da, berriro ere, hitzarmen bat besterik ez, indizea zenbaketa aldagai bat, baina hori nahi dut edozein dela ere deitu izan dut. I gutxiago than-- da ondo egin nahi dut Zamyla izenaren sei letrak luzea da. Beraz, ez dut gogorra joan kode hori ez oraingoz. Eta gero i ++. Eta orain kizkur horiek barruan giltza naiz printf egin, eta bat inprimatu nahi dut garai batean pertsonaia. Beraz, ez dut% c erabiltzeko joan agian, lehen aldiz. Eta gero bakoitzak inprimatu nahi dut karaktere lerro batean. Beraz, ez dut bat jarri nahi dut backslash gutxi n ez. Itxi aurrekontua. Eta orain zerbait hemen egin nahi dut. To inprimatu nahi dut katean letra jakin, s, errepikatzean naiz gisa zerotik sei gora. Beste era batera esanda, nahi dut i'th s izaera inprimatu. Orain nola egin dezaket hori? Beno, askoz ere koadroak bezalakoak ordezkaritza honetan hemen, Mota da, conjure boxeo nozioa letrak, era berean, egin ahal izango duzu sintaktikoki C besterik zehaztuz, S-ren inprimatu pertsonaia i'th nahi dut. Plaza parentesi erabiliz Zure ordenagailuaren teklatuan AEBetan teklatu bat daude oro har, zure itzulera gako gainetik. Beraz, hau ez da nahiko eskubidea hala ere, konturatuko ahal izango duzu ere. Baina ez dut motatako joan blindly burdinola aurretik hemen. Eta ez dut kate 0 egin. Baina hau ez dut aurretik, utzi ikusten baduzu ren dugu ezin komuna akats batzuk aurreratzen. Hau al konpilatu egingo? Ez, gauza osoa sorta bat dut falta da. Liburutegiak dut entzun. Beraz fitxategiak goiburua bertan Baliteke hemen gehitu nahi dut? Bai. IKUSLEEN: ez duzu egin behar I standard / O [INAUDIBLE] DAVID J. MALAN: Bikain. Beraz, I / O estandarra behar dut. Zer helburuarekin egin I / O standard nahi dut? Printf da. Beraz, besteak beste stdio.h. Eta, era berean proposatzen dut: hor sartzen dira CS50 liburutegia zer arrazoirengatik? Kateak izatea. Beraz, ikusiko dugu zer CS50 liburutegia egiten ari da kate baten ideia hau sortzeko. Baina, oraingoz, besterik pentsa dezakezu haren benetako datu-mota bat bezala. Beraz, apur bat egingo garbitu dirudi. Eta orain aurrera joan eta halaxe egin kate 0. Konpilatu. Beraz, hori ona da. Beraz ./string0 gerturatzeko me beraz, ahal dugun utzi ikusi gehiago estuki zer ari den gertatzen. Sartu. Z-A-M-Y-L-A sartu. Eta inprimatutako dugu out Zamyla izenaren. Beraz, hori da nahiko ona. Beraz, gaur egun dezagun aurrera, eta Programa honetan berriro exekutatu, eta idatz itzazu Daven izen osoa. Sorpresa, sorpresa. Sartu. Hmm. Ez dugu inprimatutako Daven en behar bezala beteta lehen izena. Orain honetan, begi-bistakoa izan beharko luke zer delako atzera begirako, Ordena, ergelak diseinu erabakia? Bai, gogor kodetuta dut Sei nire begizta barruan. Orain ez dut egin duen bakarra delako Zamyla izena banekien zuten sei letrak izango da. Baina ziur aski, hau ez da irtenbide orokor bat. Beraz, izarrekin bihurtzen da dinamikoki ahal dugun irudikatu kate baten luzera strlen izeneko funtzio bat deituz. Berriz ere, nahita succinctly besterik izeneko komenigarria gehiago idatzi dadin. Baina hori sinonimoa Kate baten luzera lortzeko. Atzera joan my terminal sartu noa konpiladoreak leiho eta re-exekutatu. Baina me at yelling. Inplizituki liburutegi funtzioa geratuko mota unsigned int const-- batera strlen Galdu dut. Erabat. Beraz, batez ere, zure begiak baino gehiago Glaze hasteko Honen antzeko akats mezuak, foku zintzotasunez lehen hitz batzuk ere. Badakigu arazoa da line 8, hemen adierazten den bezala. Eta kate-0.c da. Inplizituki deklaratzen liburutegi funtzioa strlen. Beraz, oro har, joan akats mezuak eredu bat izan. Inplizituki zerbait geratuko. Beraz, azken finean, zer izan zirudien dut aldean egin duten 8 lerro, hemen. Zer izan liteke irtenbidea izan nahiz Nik inoiz erabiltzen bada yourself strlen? IKUSLEEN: ezberdinak liburutegi baten zati da? DAVID J. MALAN: Taldea ezberdinak liburutegian datza. Beraz, deklaratu da, nolabait esateko. Da fitxategia batzuk aipatu stdio.h eta cs50.h. baino beste Orain non da definitu? Egia esan, izan besterik ez duzu, bai Badakizu zure burua goiko off, edo honek Google duzu eta jakin. Edo jakin honetan, inauguratu sortu dut CS50 en terminal programa, tresnak eta horrek besterik ez big, pantaila osoan bertsioa da zer gedit leihoaren azpialdean da. Eta bihurtzen da ez dagoela da bat era berean, succinct komandoa, deitu eskuliburua, non idazten baduzu gizon funtzio baten izena eta sakatu Sartu, itzuli ahal izango duzu nahiko arcane dokumentazioa. Testua besterik ez da, oro har, honen antzeko zerbait apur bat itxura. Da pixka bat jasanezinak Lehen begiratuan. Baina, Egia, naiz joan utzi nire begiak Glaze baino gehiago eta soilik zati izango ditu ardatz Oraingoz buruz zaintzen dut. Zer da hau. Zein itxura egituraz bezala zerbait ezagutzen dut. Izan ere man orrialdean, beraz, esateko, esango dizu zer goiburua fitxategia funtzio bat bezalako strlen definitzen da. Beraz, ez naiz orain atzera joan gedit joan. Eta aurrera noa joan eta gehitu hemen #include eta fitxategia gorde. Pantaila garbitzeko noa Kontrol L duzu egin bada galdetzen. Eta naiz berriro exekutatu make noa string.0, oraingo honetan biltzen. ./string.0 Zamyla. Hori zirudien me lan egiteko Animatu eta berrabiarazi Davenport batera. Sartu. Eta hori ere, zirudien lanera. Beraz, pixka bat hori baino hobeto egin ahal izango dugu, ordea, txukun gauzak hasi gaitezke apur bat gora. Eta noa benetan aurkezteko beste gauza bat orain. Aurretik joan naiz eta gorde honek fitxategi ezberdin batean. Eta ez dut deitu joan fitxategia string1.c hau besterik Kodea koherentea izan gai online aurkitu ahal izango duzu. Eta dezagun buruzko zehazki kode bera. Bihurtzen da nik dudan hartze berezia izan da emandako Izan ere, nire ordenagailu eramangarria dela, eta, aldi berean, CS50 tresnaren memoria asko, asko ditu RAM, espazioaren byte asko bertan I kateak gordetzeko. Baina errealitatea luzea idatzi dut bada nahikoa, eta nahikoa zanpatze, Could teoria mota dut karaktere gehiago nire ordenagailuan baino fisikoki memoria dauka. Eta hau problematikoa da. Askoz int bat bakarrik, ahal bezala hain handiak zenbatzeko, teorian, pertsonaiak hainbeste zuk bakarrik Cram daiteke zure ordenagailuaren RAM edo Random sartu Access Memory. Beraz, I hobeto aurreratzen zuen Arazo hau, nahiz Arraroa izan arren, agian izkina kasuan, nolabait esateko. Ez da gertatuko, maiz, gerta liteke. Eta gertatzen bada, eta ez dut aurrea eta horretarako programa, nire programa batek daki zer egin izan. Izoztu, zintzilikatzeko, berrabiarazi, edozein dela ere. Zerbait aurreikusi gerta liteke. Beraz, zer egin behar dut orain, hemendik aurrera benetan, nuen aurretik inoiz blindly s bezalako aldagai bat erabiltzen duten izan da itzulera balioa esleituko beste zenbait funtzio GetString bezala, Noa ziurtatu bere balioa baliozkoa dela. Beraz, ondoren irakurri batetik bakarrik ezagutzen dut CS50 GetString dokumentazioa, azken finean dugu seinalatu egingo at, GetString duten sinbolo berezi bat itzultzen du NULL, guztiak ere N-U-L-L izeneko txanoak, zerbait oker joan ezkero. Beraz, normalean, kate bat itzultzen du. Baina bestela N-U-L-L-- itzultzen bada Azkenean ikusiko dugu zer benetan esan nahi, besterik gabe esan nahi duen zerbait txarra gertatu. Orain horrek esan nahi du, askoz Scratch bezala, Hemen baldintza bat egiaztatu ahal izango dut C, s ez berdinak NULL bada. Beraz, ez da ikusi duzun bada hau baino lehen, hori esan nahi du, ez du berdina. Beraz, kontrakoa da berdinen berdinak, eta horrek, gogoratzen, da bakar ezberdina berdin, eta horrek esleipena da. Beraz, s ez da berdina ez badu NULL, orduan bakarrik egin Kode lerro hauek exekutatu nahi dut. Beraz, beste era batera esanda, murgiltze I blindly aurretik eta hasi errepikatzean ak baino gehiago, eta hura tratatzeko sekuentzia bat bagina bezala da pertsonaiak, naiz lehenik begiratu dut, minutu bat itxaron, zalantzarik gabe, ez s Balio berezi hori berdina, NULL? Bada, gauza txarrak gertatuko daitekeelako. Eta, oraingoz, gauza txarra dela suposatuko gertatzen ari dena esan nahi du zure programa matxurak, eta ezin da nahitaez berreskuratu duzu. Beraz, Egia, uglier badirudi. mota da nahasgarria da orain begiratu nahi du. Baina hori gehiago izango da ezagunak baino askoz lehenago. Baina nago, proposatzen dugu I orain beste hobekuntza bat. Hori hobetzen zuzentasuna da. Nire programa da orain gehiago zuzena, zeren kasu gutxitan gertatzen bada ere, hori ez da nahikoa memoria badago, hura kudeatzeko egingo dut, eta besterik egiten dut ezer. Dut behintzat, ez du huts egin. Baina egin dezagun azken bertsioa hemen. Eta string2.c izeneko fitxategi bat. Duten itsatsi noa une bat besterik ez bera, eta nago hau nabarmendu nahi dut line, 11, hemen, une bat besterik ez da. Orain errealitatea Konpilatzaileak smart dela Clang bezala, hau konpondu ahal izan da guretzat atzealdean Gure inoiz jakin gabe. Baina dezagun uste honi buruz funtsean diseinu problematikoa bezala. Kode-lerro hau da, jakina, esanez, hasieratu aldagai batzuk i 0. Hori nahiko erraza. Eta zer da berriro honetan adierazpena, hemen, i ++, egiten? Ikusi dugu aurretik, baina ez benetan horri buruz hitz egin. IKUSLEEN: i incrementing. DAVID J. MALAN: incrementing i. Beraz, iterazio bakoitzean zehar begizta hau, ziklo bakoitzean, i incrementing zaren banan. Beraz, handiagoa eta handiagoa lortzen da, eta handiagoa begizta bukatzen den arte. Nola ez da itxiko da? Beno, ez du erditik, hau da, Baldintza horrek, erabili izan dugu. Ikusi duzu, eta hasi P multzoan walkthroughs. Baina zer gertatzen da esaera hau? Egin honako begizta beraz luze i zer baino gutxiago dagoen bezala? IKUSLEEN: kate luzera. DAVID J. MALAN: The katearen luzera. Beraz, nahiko garbi itzultzen du English zentzu horretan ere. Orain arazoa da denbora dut bakoitza begizta honen bidez batetik bestera joateko teorian, Galdera hau galdetzen dut. Da i katea s luzera baino gutxiago? Da i katea s luzera baino gutxiago? Orain da i aldatzen iterazio bakoitzean? It da. ++ Etorri delako. Beraz, iterazio bakoitzean i handiagoa lortzean da. Baina z handiagoa lortzean, edo txikiagoa edo batere aldatzen? N º Beraz, diseinu aldetik, ardatzen batean batera kodea ebaluatu nahi dugu klasean, hau ergelak mota sentitzen. Zara literalki bezala, iterazio bakoitzean begizta honen galdetuz bera madarikatua galdera berriz, eta berriro, eta berriro, eta hitzez hitz da inoiz aldatuko denik. Gutxienez ez dut e ukituta s edukia aldatzeko nahian. Beraz, pixka bat hori baino hobeto egin ahal izango dut. Eta zer egin behar dut, ez da i aldagai bat besterik ez deklaratzeko, baina bigarren aldagai bat arbitrarioki dut, baina conventionally, n deitu. Esleitu n berdina katea s luzera. Eta gero, hemen baino gehiago, ez dut joan clever little optimizatu bat egin, beraz, , egunaren amaieran hitz egiteko duten no gehiago zuzena edo gutxiago ez da zuzena lehen baino. Baina diseinu hobe bat da. Izan ere erabiliz naiz duten I denbora gutxiago, PUZaren ziklo gutxiago, beraz, esateko, bera erantzuteko Galdera, baina behin bakarrik. Oro duten edozein galdera hobetzeko printzipioa, esan, programa baten eraginkortasuna? Bai? IKUSLEEN: Zergatik duzu [INAUDIBLE] erabili? DAVID J. MALAN: Ona galdera. Beraz, zergatik ez ++ jarri dugu bukaeran i-ren ordez i hasieran? Kasu honetan, ez du inpaktu funtzionalak ez. Eta, oro har, joera dut postfix operadorea erabili dela apur bat argiagoa, beraz, operazioa gertatzen denean. Ohituta dituztenentzat, ez da beste adierazpenak zeinaren ++ egin dezakezu i. Hauek dira funtzionalki kasu honetan baliokidea ez beste ezer delako incrementation inguruan. Baina etorri dezakezu ekin kasu eta kode lerro zeinean horrek aldaketa ekarri du. Beraz, oro har, ez dugu nahiz eta honi buruz hitz egiteko. Egia delako, zure egiten du kodea sexier, eta Ordena slicker, eta karaktere gutxiago. Baina errealitatea da da askoz zailagoa da, Uste dut, nahiz eta nire buruan biltzeko me batzuetan inguruan, eragiketak ordena. Beraz, alde batera utzita, baduzu benetan ez dute hori, are gehiago, hau da, mota sexy arren bila, ere egin dezakezu i + = 1, bertan uglier bertsioa da postfix incrementation ideia bera. Hau eta badiotsuet fun egin behar den, baina kode gisa ikusteko etorriko da zerbait eder luze baino lehen. [Barreak] DAVID J. MALAN: Eskuin? Bai. Erdian Galdera. IKUSLEEN: int n esan behar duzu? DAVID J. MALAN: You egin Ez behar int n esateko. Beraz, esan dugun delako int, ez duzu behar da berriro esateko. Harrapaketa da n duela datu mota bereko i bezala izango. Beraz, onerako besterik ez da hemen. Bai. IKUSLEEN: Ezin duzu baino gehiago joan inprimatu pertsonaia s tarte i berriro? DAVID J. MALAN: Absolutely. Beraz,% c, azken gogoratzen denbora, leku-marka bat besterik ez da. Char bat jarri hemen esan nahi du. backslash n, jakina, besterik gabe, bitartekoak jarri line break bat hemen. Beraz, besterik gabe uzten duten, gaur egun, sintaxia berrien pieza hau. Eta hau da, hitzez hitz, esaten grab s izeneko kate eta joan zaitez bere i'th pertsonaia, nolabait esateko. Eta i'th pertsonaia esaten jarraituko dut begizta honen iterazio bakoitzean delako inprimatzeko bezain larria da out, lehen s tarte 0, gisa programatzaile esan liteke. Ondoren s tarte 1, orduan s parentesirik 2, ondoren, 3, eta 4. Baina, jakina, aldagai bat da, beraz, besterik adierazi dut i batekin. Gakoa, ordea, ez da konturatzen, Ez dut batez ere, Izan acclimating mundu honetara programazioa, non dugu guztien badirudi hutsetik zenbatu, gotta hasteko, gaur zero hasita. Kateak denez, lehen pertsonaia da, Zamyla in z onerako zein txarrerako da to kokapena zero zenbakian bizi da. Ondo da, beraz, let me ekarri gaituena hemen Zamyla to eta ikusi zer benetan gertatzen kanpaia azpian on. Beraz, ez casting mota nozioa da. Izan dezakezu benetan honekin jokatu du dagoeneko, agian, hacker egiteko P edizio bat ezarri. Baina casting-mota besterik ez du aipatzen C gaitasuna eta beste hizkuntza batzuk datu-mota bat bihurtzeko bestera. Orain nola liteke hau ikusiko dugu Nahiko straightforwardly? Beraz, abisuaren hau, hasiera da English alfabetoa. Eta testuinguruan, gogoratzen, bertatik atsegin duela astebete ASCII da. The American Standard Code Informazioa trukatzeko. Zein bide benetan luze bat besterik ez da letrak kartografia esaten zenbakiak, eta zenbakiak gutunak egiteko. Beraz, A M hemen, dot dot bidez dot, lerro gora, oroitzapen, gora on hamartar zenbaki 65. Eta ez genuen hitz egin hau esplizituki buruz, baina ziur asko ez da antzeko minuskulak zenbakiak. Eta, hain zuzen, daude. Mundua urte batzuk erabaki duela pixka bat, minuskula bat, dago 97 izango da. Eta b gutxi va 98, eta abar izan. Eta beste edozein gako erabiltzeko Zure teklatua, han Antzeko bit patroi bat izango da. Edo baliokidean, zenbaki hamartar. Beraz, esku artean, galdera, orduan, nola dezakegu benetan hau kanpaia azpian? Beraz, ez dut baino gehiago berriro joan gedit joan. Eta, baizik eta mota baino Hutsetik bat hau, Aurretik joan naiz eta besterik ireki zerbait Gaur egungo kodigoa ASCII zero izeneko. Eta ASCII zero itxura hau. Hargatik hura biltzeko gure adimenak honen inguruan. Beraz, lehenik eta behin, komentatzen dut Kodea, hau da, polita. Literalki delako me kontatzea zer espero, maiuskulaz letrak mapping bat erakutsi. Orain ez dakit nik zer dut horrek esan nahi du, beraz dezagun infer. Ingelesez, akaso zertxobait udalerri English, zer linea 18 agertzen beharreko egiten Gurekin? Just lerro 18. Zer da inducing? Zer da off jaurtitzeko hemen gertatzen da? IKUSLEEN: Begizta bat. DAVID J. MALAN: begizta bat. Eta zenbat aldiz da batetik bestera joateko gertatzen da hori? IKUSLEEN: [VOICES INTERPOSING] sei aldiz. DAVID J. MALAN: ez da sei aldiz. IKUSLEEN: 26. DAVID J. MALAN: 26. Bai, barkatu. 26 aldiz. Zergatik? Beno, pixka bat arraroa da, baina 65-tik kontatuta hasi dut. Zein da arraroa, baina ez da gaizki. Ez da esan per txarra. Eta egiten ari naiz hori bakarrik zeren, kasu horretan, Naiz motatako aurreratuz dut A kapitala duten 65 izan zen. Orain hori ez da dotoreena bide hori egin ahal izateko, kodea gogorrean mota inork ez duela esoterikoak balioak Inoiz gogoratu espero da. Baina orain, konturatu naiz I 65 gehi 26 bidez lan hau egiteko sortu. Itxuraz Ere ez dut nahi duelako aritmetikoa egin nire buruan. Hargatik dut konpilatzailea egin. Baina, ondoren, begizta bakoitzean, iterazio bakoitzean begizta, i naiz incrementing. Beraz, gaur egun hau itxura apur bat críptica. Baina oinarrizko eraikina izan behar dugu zein bloke hau ulertzeko. % C besterik ez char bat biltegian dago. % I int biltegia da. Eta bihurtzen da hori erabiliz sintaxia, Parentesi honetan, beraz, esateko, datu mota bat, beraz, parentesi baten barruan, Konpiladoreak behartu ahal izango dut, tratatzeko Ez dut oso bat da, baina char bat bezala. Horrela me pertsonaia erakusten kopuru horren baliokidea. Orain hemen, kode hori pretty askoz ere berdin. Nahi nuen egin super esplizitua Izan ere, I duten 97 at hasita nago, zein da minuskula bat. 26 letrak gehiago bidez sortu On. Eta berriro doing-- naiz, galdaketa i, nolabait esateko. Edo mota casting i, nolabait esateko. Char bat int bat. Beraz, azken emaitza izango da, Egia, informazio badakigu. Noa egin ascii-0 dot-- ez c dot. Oharra, Ziurrenik hori egin akats egin nuen ustekabean. Egin ascii-0. Orain naiz ./ascii-0 egin. Handiagotzeko dut, eta zoritxarrez nik off korritu pantailaren joan. Baina taula oso bat non ikusiko dugu 97 mapak bat, 98 mapak b, eta gora joan gara gehiago A, jakina, eta 65 mapak. Beraz, hau da, bakarrik behar dela esan zer izan dugu predikatzen Nik, ez baliokidetza hau da, errealitatean hain zuzen ere kasuan. Beraz, honen aldaketa azkar bat. Ireki me ascii-1.c. Eta konturatu clever honetan, ordenatu ren, hau argitzea. Hau ascii-1.c, eta nabarituko crazy gauza hau. Eta hau benetan bihotzean lortzen zer ordenagailuetan egiten ari. Dugu gizakiak litzateke, nahiz eta, are gehiago, Ez letters-- dagokionez zenbatu Ez dut pentsatzen hasteko, guztiak ondo egin ondoren a b, eta erabili dutenen objektu fisikoak zenbatzen. Duzu, zalantzarik gabe esan dezaket nahi dut izeneko aldagai batzuk hasieratu bc baina ez dut ezer hau deitzen zitekeen beraz c kapital A. hasieratu Egunaren amaieran, ordenagailua delako ez du axola zer gordetzeko ari zarenean, nola nahi duzun bakarrik zaintzen da Informazio hori aurkezteko. Zelan ordenagailua nahi duzu bit eredua dela interpretatu? Beraz, hau ez da zerbait dut litzateke, oro har, gomendatzen egiten. Benetan, besterik gabe, adibide bat da transmititzea erabat ulertzen duzula hasieratu karaktere bat zenbaki oso bat. Azpian delako char baten kanpaia, noski, 0 eta 255 arteko zenbaki bat besterik ez da. Beraz, zalantzarik gabe, ahal duzun ipini int baten barruan. Eta zer hau ere erakusten da dugun batetik bihurtu daiteke bestera idatzi, hemen, azken finean, gauza bera inprimatzen. Eta hain zuzen ere, hau on-line konpondu egingo dut zen hau esatea, berriz ere, hona ekarri. Demagun hau garbitu me online, eta zaitugu online gidatua batean ikusi behar izan ahala, zer ez zen helburua. Ados. Beraz, azken adibidea orain inplikatuz ren eta b-ren eta, ondoren egingo dugun gauzak hartu Notch bat. Beraz, a eta b-ren eta ekin c-ren kapitalizazioa ere eta baliokidetza haietan, dezagun Adibide honetan begirada bat hartu, hemen. Kodea beste adibide bat. Alde hori ireki egingo dugu dagoeneko egina, dugu, beraz, ez dute idatzi behar guztiak hutsetik kanpo. Eta aurrea hartzeko nabarituko goiburu bat baino gehiago erabiltzen ari gara fitxategiak, eta horien artean dago gure lagun berria, string.h. Orain itxura, hasiera batean begiratuan, apur bat críptica. Baina ikus dezagun ezin dugu arrazoia zer gertatzen da hemen bidez. Lehen kate bat erabiltzaileari I, eta katea jarri dut aldagai batean s izeneko. Kopiatu itsatsi aurretik. Line 22, itxuraz naiz zehatz-mehatz zer egiten ari Duela momentu bat egin nuen, errepikatzean naiz s karaktere baino gehiago. Eta trikimailu berriak hemen erabiltzen ari katea luzera, adingabe optimizatu katea n luzera gordetzeko, deituz berriro strlen beharrean, eta berriro, eta berriro. Eta besterik egiaztapena i n baino gutxiago da hori. Orain hemen, gauzak apur bat interesgarri. Baina aplikazio bat besterik ez da bera ideia berri hau. Zer in English du s tarte i ordezkatzen? IKUSLEEN: bakoitza zenbatzea pertsonaia [INAUDIBLE]. DAVID J. MALAN: pertsonaia bakoitzak zenbatzea. Eta are gehiago succinctly, s tarte i ordezkatzen zer? Litzateke esan duzu. Ez duzu jarri hemen spot. IKUSLEEN: Well-- DAVID J. MALAN: Beraz, hitza bada is-- bada katea Zamyla, starts-- hau da, IKUSLEEN: aurre --you Pertsonaien separately-- DAVID J. MALAN: Ongi. Zehazki. Kortxetea notazioa ematen dizu pertsonaia bakoitzak banaka sartu behar, beraz s tarte 0 da izango Kateko lehenengo karakterea. s tarte 1 izango da bigarrena, eta abar. Beraz, galdera galdetzen dut, Hemen, baldintza hori ez da zer? I'th s handiagoko pertsonaia da bat baino edo berdina minuskula? Eta zer esan nahi du horrek, hemen, the ampersands bikoitzarekin? AUDIENCE (TOGETHER): Eta. DAVID J. MALAN: Eta. Besterik honen baliokidea da. Eta ez da C hitz bat, izan nahi al duzu erabilera, amorrarazita, ampersand ampersand. Eta hau, alderantziz, galdetzen da s izaera i'th baino txikiagoa edo berdina z minuskula? Eta berriro ere, hemen non azpiko ulertzeko bat ezartzeko ordenagailu zentzurik. Ohartu, nahiz eta dut dot dot dot han, baten itxura z bidez minuskulaz dira Alboko balio guztiak 97 gora aurrera sortu. Eta maiuskulaz berdina 65 at hasita. Beraz eramateko eta, ondoren, dela ingelesez, nola egingo zenuke deskribatuko zer line 24 egiten ari da? Bai? IKUSLEEN: 24 On da ikustea egiaztapena pertsonaia bakoitzak minuskulaz ala ez. DAVID J. MALAN: egiaztapena ala pertsonaia bakoitzak minuskulaz gutun bat da. Beraz, are gehiago succinctly, da z minuskulaz izaera i'th? Hori guztia gara logikoki hemen adierazteko, Apur bat cryptically, baina azken finean, nahiko zuzen. S izaera minuskulaz i'th da? Hala bada, eta hemen, non gauzak lortu adimena pixka bat okertuz une bat besterik ez, beraz, bada, joan Animatu eta pertsonaia bat inprimatu. Beraz, hau leku-marka bat besterik ez da, baina zer pertsonaia? Zergatik nago s tarte i egiten ken adierazpen hau hemen? Beno, nabarituko eredua hemen. Benetako zenbakiak ez du axola hainbeste. Baina oharra ere 97 da noraino 65 urruntzen? IKUSLEEN: 32. DAVID J. MALAN: 32. Nola urrun 98 66-tik? IKUSLEEN: 32. DAVID J. MALAN: C handietatik Little c? 32. Beraz, ez da 32 lupulua beste gutun bat. Beraz Egia I, Could sinplifikatzen hori. Baina orduan ez naiz gogor mota kodifikazioa mailako ulermena txikia honetan irakurlea ez da inoiz ulertzen joan. Beraz, ez dut hura bezala orokortu egingo, I jakin minuskulak handiagoak dira. Ezagutzen dut letra larriak dira balioak txikiagoak, ironikoki. Baina hori da, modu eraginkorrean baliokidea kenketak 32 s tarte i-tik esanez. Beraz, hauek testuinguruan gutunak, gutuna bada Gertatzen da, minuskulaz izaten bat, eta kendu nuen 32, zer eragina duten ez bada, Matematikoki, minuskula bat? IKUSLEEN: Capitalizes-- DAVID J. MALAN: kapitalizatzen da. Eta hain zuzen ere, horregatik gure Programa egikaritzerako larriz zero. Programa hau bai gutun bat kapitalizatzen, bada egiaztatu ondoren hain zuzen ere, letra minuskulaz. Bestela, line 30, zer egiten badut Ez da minuskulaz gutun bat naiz I at jakin bati begira Begizta iterazio. Just inprimatu. Beraz, ez gauzak aldatzeko hori ez da, nahiz minuskulaz. Murriztu buruari a little z txiki bidez. Orain hau da nahiko urrutira. Baina egunaren bukaeran, hau da nola dugu, Bazen behin, Gauzak martxan jarri behar izan zuen. Ireki ordez I larriz bada bat, oh eskerrak jainkoari. Badira funtzio bat ahal goiko izeneko guztia egin besterik ez dugu egin nahiko maila baxua at. Orain goiko interesgarria da Da, fitxategi batean deklaratu delako, eta bakarra litzateke badakizu honetan dokumentazioa markatuz, edo kontatzen ari, esan, klasea, non dauden egongo da, izeneko fitxategi ctype.h batean. Beraz, hau beste bat gure lagun berria da. Eta goiko du zehazki zein den bere izena iradokitzen. Gainditu ahal izango duzu ere, argumentu bezala, arteko Parentesi horiek, pertsonaia batzuk. To the i'th pertsonaia pasatzen dut s Gure fancy idazkera berria erabiliz kortxete inplikatuz. Eta etxebizitza bat hartu, zer bueltan da goiko balioa itxuraz joan izan? Maiuskulaz. Maiuskulaz. Beraz, pasatzen dut minuskulaz batean bada, zorionez, goiko definizioa arabera, nik bat itzuli du maiuskulaz A. Bestela, Ez da letra minuskulaz bada Lehenik, inprimatu besterik ez dut egiten. Eta hain zuzen ere, nabarituko Bigarren laguna hemen. Ez bakarrik goiko existitzen den, baina txikiagoa da, eta horrek egia esan, niretzat galdera horri erantzuten. Orain duenak gauza hauek idatzi zituen, 10s Duela urte, zer ezagutzen duzu? Goiko egitea eta hau da jaistea hau atsegin kodea erabiliz. Baina, berriro ere, koherentea kanpoan abstrakzio ideia hau, Ordena, maila txikiagoa ezartzeko xehetasunak. Eta zutik sorbaldak nor gure aurretik etorri ziren, funtzioak erabiliz Goiko behar bezala eta txikiagoa da, eta horrek wonderfully nahikoa dira nicely Egiten dutena esateko izendatzen da, paradigma zoragarri bat hartzea. Orain, bihurtzen da hori irakurriko banu man, orria esateko, goiko, Beste zerbait ikasi nuen. Beraz, gizon toupper. Pixka bat jasanezinak. Baina oharra, hemen aipamen duten goiburu fitxategi hori erabili behar dut. Alde batera utzita, hau delako gisa Nahasgarria da, funtzioa ints karakteretan ordez erabiltzen error egiaztapena arrazoiengatik. Baina agian, ikusiko dugu horretan itzuli etorkizunean. Baina konturatu, hemen, goiko bihurtzen den c posible bada, maiuskulaz. Beraz, nahiko erraza. Eta orain dezagun apur bat zehatzagoa. Dezagun zatia at Gizon bueltan balioa pean orria. Itzulitako balioa dela bihurtutako letra. Edo c, bihurtze bada ez zen posible izan, non c jatorrizko sarrera da. Zein dakit hemendik I, bertatik Goiko nahi den argumentua. Beraz, zer honen eramateko da? Itzulitako balioa dela bihurtutako letra, edo c, jatorrizko gutuna, bada Bihurketa ez zen posible. Zer hobekuntza ezin dut, beraz, Nire kode diseinua egiteko? Bai? IKUSLEEN: beste kendu ditzakezu. DAVID J. MALAN: I can kendu, bestela baieztapena, eta ez soilik, bestela baieztapena. IKUSLEEN: ken dezakezu [INAUDIBLE]. DAVID J. MALAN: I can bidegurutze osoa kendu Errepidean, berriz, beste badu guztira. Beraz, hain zuzen ere, let me ireki honen azken bertsioa, larriz-2 eta konturatu besterik ez nola, bada egingo du, sexy, kodea da lortzean orain duzu, horretan ez dut batzuk murriztu zazpi edo beraz lau lerro, funtzionalitate dudala xedea besterik gabe, goiko deituta, s tarte i, eta inprimatzeko igaroz out, biltegian% c-rekin, pertsonaia jakin horretan. Orain, dudarik gabe, hor akats bat dago, edo, gutxienez, akatsen bat izateko arriskua, programa honetan. Beraz, besterik gabe itzuli lehenago eramateko batera, dudana ziurrenik ere egin beharko Programa honen sendoa izan dadin, beraz, ez dago modurik, ahal huts egin, nahiz eta oso gutxitan gertatzen bada ere? IKUSLEEN: Ziurtatu ez da NULL. DAVID J. MALAN: Ziurtatu ez da NULL. Beraz, benetan, super hau egiteko egokia, antzeko zerbait egin behar dut, s ez da NULL, ondoren, bada aurrera eta exekutatu Kode lerro hauek, eta horrek Orduan ezin dut horrelako koska, eta, ondoren, jarri nire itxi giltza. Beraz ona elkarrekin bi ideia tying. Bai? IKUSLEEN: Ezin duzu erabili a loop bitartean, ordez? DAVID J. MALAN: Ezin Do bitartean begizta bat egin dut? IKUSLEEN: ziurtatu nahi --you benetan [INAUDIBLE]. DAVID J. MALAN: Ezin do bat erabiltzen duzun bitartean? Erantzun laburra, ez. Oraindik buruz delako beste izkinan kasuan aurkeztu. Katea zero luzera bada. Adibidez, I hit bada Sartu, inoiz Zamyla idatzi gabe. Atzera zuk eskuz benetako bat noa katea, zaitugu azkenean, ikusi, zero karaktereak ditu. Oraindik da kate bat, besterik super laburra da. Baina ez bat erabiltzen baduzu, berriz, zaren blindly saiatu zerbait egin behar dituzten kate hori errespetatu, eta ez da ezer ez da izango. IKUSLEEN: Beno, ez baduzu egin [INAUDIBLE] s-- bitartean DAVID J. MALAN: Oh ikusten dut, mantendu erabiltzaileak kate bat eskuratzerakoan. Galdera Beraz, azken finean, zuk liteke, eta mantentzeko pestering kate hori emateko labur nahikoa memoria egokitzeko. Inolaz ere. Aukeratu nuen, besterik ez. Ez badute, emaidazu kate dut Nahi, nago irtetea, uzten ari naiz. Baina erabat, horretarako, erabat ezin duzu hori egin. Beraz, liburutegiko goiburua fitxategiak orain ezagutzen dira hauek, hemen gaude. I Standard / O, CS50.h, string.h, ctype.h, eta ez dira, hain zuzen ere, beste batzuk. Batzuk aurkitu dituzte matematika math.h. liburutegia Baina dizute aurkeztu me, orain, baliabide hori CS50 langileek, Davin, eta Rob, eta Gabe bereziki Elkarrekin jarri dute. Hori laster lotzeko on egingo ikastaroaren web. Deitzen da CS50 erreferentzia. Zer besterik ez duzu amore azkar bati zaporea, honela lan egiten du. Joan den reference.cs50.net. Egingo ezquerrecoy Ikusiko duzu jasanezinak zerrenda baten alde c etortzen diren funtzioen. Baina, axola badut oraingoz, strlen antzeko zerbait buruz, Bertan idatzi ahal izango dut han. Behera iragazten zerrendan It besterik zer buruz zaintzen dut. Bertan klik noa. Eta orain, ezkerrean, Ikusiko duzu, zer espero dugu bat gehiago zuzenean, giza da nola azalpen errespetatzen funtzio honetan lan egiten du. Kate baten luzera itzultzen du. Hona hemen laburpena da, hemen nola duzu erabili da goiburua fitxategia dagokionez, eta zer funtzioa terminoetan bere argumentuak dagokionez itxura. Eta gero, hara, itzultzen kate baten luzera. Baina horiek erosoago egiteko, benetan sakatu duzu gehiago comfy, eta honen edukia orria, orain, aldatu egingo da zer-ko balio lehenetsiak izateko man orria erabiliz lortuko duzu. Bestela esanda, CS50 erreferentzia sinplifikazio bat da Gizon langileek orriak, ikasleentzat. Bereziki, horiek gutxiago erosoa eta, bitartean, beraz, zu ez dute hura biltzeko saiatzeko your mind inguruan, Egia, Nahiko críptica sintaxia batzuk eta dokumentazio noizbait. Beraz, kontuan izan hori egunetan etorri. Beraz, hemen, berriz, Zamyla da. Demagun galdera bat hori da galdetu orain giza apur bat gehiago irisgarria. Chang esker, nor izan elefante gehiago inprimatzeko Azken egunetan for nonstop. Aukera bat eman behar dugu Gutxienez horietako bat kanpoan. Boluntario bakar bat lortuko bagenu etorri pantailan marrazteko. Zelan buruz? Goazen sortu. Zein da zure izena? ALEX: Alex. DAVID J. MALAN: Alex. Guztiak eskubidea. Alex, goazen gora. Ikusi buruz ari gara zure pantailan idazkera hemen. Ondo da, politak zu ezagutzeaz. ALEX: Nice duzu bete. DAVID J. MALAN: Ondo da. Beraz, ariketa super simple. Taberna ez da altua elefante bat lortu du gaur. GetString rola jotzen ari zara. Eta noa besterik esango dizu duzula ahaztuak katea. Eta uste duzu, GetString, deituak izan dira. Eta giza, ni bezala, Zamyla, Z-A-M-Y-L-A idatzitako. Just joan aurretik, eta idatzi Zamyla buruzko pantaila gisa, nahiz eta ahaztuak duzu eta nonbait gordetzen da memorian. Utzita zer Hainbat izango da gela OK beste words--, mantendu egingo da. [Barreak] Beraz Zamyla, Bikain. Beraz, orain uste duzu, GetString, berriro deitzen dira. Eta, beraz, eman dut, bertan teklatua, beste izen bat, Belinda batekin. Guztiak eskubidea. Eta orain hurrengoan GetString da izenekoa, idatzi Gabe antzeko zerbait dut, G-A-B-E. Benetan hartzen ari Bihotza ausazko sarbidea memoria. Zein da dena marrazketa erabat ausaz. Ados. [Barreak] ALEX: Sentitzen dut nire idazkera txarra da. DAVID J. MALAN: Ez, hori da OK. Eta nola Rob, R-O-B buruz. Ados. Good. Beraz, ez nuen aurreratzen duzu litzateke motatako arautuko gauzak modu honetan. Baina lan hau egin ahal izango dugu. Beraz, nola etzanda buruz joan zineten memorian chars horiek? Bestela esanda, uste badugu pantaila beltz angeluzuzen honetan baten ordezkari gisa ordenagailuaren RAM edo memoria. Eta gogoratzen RAM hori besterik ez da byte-sorta oso bat, eta byte bit-sorta oso bat dira. Eta bit dira, nolabait, inplementatu, oro har, inprimaki batzuk hardwarean elektrizitatea. Beraz, hori da honen moduko layering hitz egin dugu eta, gaur egun hartu ahal dutena egiteko. Nola buruz joan zineten erabakitzeko nora idatzi Rob versus Gabe versus Belinda versus Zamyla? ALEX: egin zuen besterik ez dut parte aginduko Berak esan duzula. DAVID J. MALAN: Eta egia da. Baina zer gobernatzen non jarri duzu Belinda izena eta Gabe-ren izena? ALEX: Ez da ezer? DAVID J. MALAN: [Barreak] Beraz, lan egiten duen, hori da isuna. Beraz, ordenagailuak gutxi dira Hori baino hobeto antolatua. Eta beraz, ez lo implement-- dugu une bat besterik ez denean, benetan antzeko zerbait ezartzeko ordenagailu batean GetString, Zamyla ezarritako liteke nahiko askoz bezalako pantailan zenuen, ez. Eta zer da gakoa nabarituko Hemen, Alex zer egin, dago mugaketa baten antzeko zerbait da hitz hauetako bakoitzaren artean, ezta? Ez duzu idatzi Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- beste era batera esanda, ez dago mota batzuk mugaketa horrek badirudi be, Ordena, ausazko arteko tartea hainbat hitz horien artean. Baina hori ona da, zeren dugu gizakiak orain bistaratu horiek lau soka ezberdinak. Ez da sekuentzia bat besterik ez da karaktere handia. Beraz, ordenagailu bat, eta, ondoren, bere aldetik, kate bat igaro daiteke Zamyla bezala, horietako bakoitzaren letrak jarri memoria byte baten barruan. Baina kopuru hori askoz handiagoa da, jakina, sei karaktere baino. Badira RAM sorta oso bat da. Eta horrela, aurrerantzean, hau kutxak sareta va Alex zer besterik irudikatzeko egin hemen pantailan. Eta orain, Alex, zuk bat eskaini ahal izango dugu urdina edo Chang etatik elefante laranja bat. ALEX: urdin elefante bat hartuko dut. DAVID J. MALAN: urdin elefante bat. Beraz Txalo bero bat, ahal izango banu, Alex hemen. [Txaloak] ALEX: Eskerrik asko. DAVID J. MALAN: Eskerrik asko. Beraz eramateko da, nahiz eta, nahiz Eredu mota da aldatu denboran zehar, hemen taula gainean, ez zen honetan hainbat kateak mugatzen Alex guretzat lortu duten. Orain ordenagailuak, Egia, Gauza bera egin daiteke. Ezin motatako plop dute RAM edozein lekutan kateak. Up hemen, hemen baino gehiago, Hemen, hemen behera behera. Zehazki hori egin izan dute. Baina, noski, hori da Ziurrenik ez plangintza onena. Eskuin? Alex galdetuz mantentzen badut izenik lortu, seguruenik zuen litzaidake jarri batzuk gehiago behera hemen, agian, sortu Hemen, hemen, hemen, azkenean hemen baino gehiago. Baina plangintza bit more bat, zalantzarik gabe, Gauza gehiago garbian arautuko genezake out. Eta, hain zuzen, hori da ordenagailu bat duenaren. Baina harrapatzen dela bada hurrengo katea dut lortu Zamyla zerbait da ondoren Belinda bezala, Bertan idatzi genuke proposatzen gutun grid horri dagokionez b? Nora joan nahi duzu? Bat etorri eskubidea, z, a beheko azpitik? Zer da zure lehenengo sena izango litzateke? IKUSLEEN: z azpian. DAVID J. MALAN: Beraz, z azpitik. Eta hori nahiko erraza, ezta? Neat mota da, da zer egiten dugun teklatu bat denean Sartu hit dugu, edo email bat denean bat egiteko Buletdun gauzak zerrenda. Baina errealitatea ordenagailuak dela saiatu eraginkorragoa izan dadin, eta Cram zalantzarik gabe, askoz ere RAM ahalik eta sartu datuak, beraz, ez duzu edozein bytes alferrik. Beraz, erabiltzen ez diren hondakinak Edozein pantaila higiezinen. Eta arazoa, nahiz eta, hori da, literalki jarri dugu hizkia izan ez b baten ondoren, nola goazen non Zamyla izena amaitzen jakin eta Belinda izenaren hasten? Beraz, gizakiak besterik proposatu duzu, bai, sakatu Sartu tekla, funtsean. Jarri behera beheko. Edo Alex egin nahiz bezala, besterik gabe, hasi idazten aurrekoaren azpitik datorren izena da, eta bat azpitik, eta ondoren, bat gehiagorekin. Hori bisuala da. Informatika beste bisuala dute, baina apur bat gehiago succinct da. Funky pertsonaia hori da. Backslash 0, hau da, beharbada, of backslash n gogora, eta abar, gaur egun. Irteera sekuentzi bereziak. Backslash 0 bidean da ilara batean zortzi zero bit ordezkari. 0000 0000. Modu hori adierazteko ez da hit kopurua zero teklatuan, Izan ere, hori ASCII char bat delako. Itxura zenbaki bat bezalakoa da, baina da, benetan zenbaki hamartarren duen zirkular bat irudikatzen tipoak, eta tipografia zirkularra. Bien bitartean, backslash zero esan nahi du, hitzez hitz Zortzi zero byte jarri hemen niretzat. Beraz, hau da zertxobait arbitrarioa da. Eredua edozein erabili ahal izan ditugu, bit, baina munduan urte batzuk erabaki duela, hori adierazten kate baten amaieran memoria, besterik jarri zeroen sorta osoa. Hori detektatu ahal izango dugulako. Orain dela esan nahi du, ez du gutuna alfabetoaren zeroz irudika daitezke. Baina hori OK, Jadanik ikusi dugu 65 erabiltzen ari gara 97 urtean sortu up on hori. Guk ez dugu edozein lekura iristeko zeroen guztiak itxi. Beraz Belinda ordenagailu bat memoria batean benetan hemen joan behar da. Nik marrazten Horia besterik gure atentzioa ematen du. Eta oharra ere, hau guztiz arbitrarioa da. Nik marrazten da lauki-sare bat bezala. Atsegin dut, RAM objektu fisiko batzuk besterik ez da. Ez du zertan errenkadak eta zutabeak, per se. Besterik lortu byte sorta osoa hardwarean inplementatuta nolabait. Baina Belinda I ondoren bada Gabe izena idatzi, zuen sortu hemen amaitzeko memorian joan, eta idatzi dut Daven izenean bada, esate baterako, azkenean hemen zuen joan. Eta dut jarraitu ahal izateko izenak are gehiago idatzi. Zoritxarrez, saiatzen naiz bada Izen super luze bat idatzi, Azkenean dut agian memoria agortu. Kasu horretan, GetString da NULL itzuli egingo da, esan bezala. Baina zorionez, gutxienez entzunezko honetan Hemen, ez dugu lortu nahiko urrun. Orain zer polita da hori gauzak tratatzeko ideia orokor gisa kutxetan izatea da C ezaugarri bat ordezkari eta hizkuntza asko, array bat bezala ezagutzen. Array bat datu-mota bat da. Datu-egitura bat da, izango bada. Zentzu-egitura benetan, Mota da, kaxa bat bezala bila, gutxienez zure kontuan bere begi. Array bat da alboko bat berdin-datu motak sekuentzia, atzera itzuli Itzuli behar. Beraz, kate bat, beste era batera hitzak, karakteretan array bat da. Pertsonaiak ezagutuko ditu. Baina bihurtzen da izan dezakezu gauza sortak array. Izan ere, nahiz eta jarri ahal izango dugu array batean zenbakiak. Beraz, modu horretan ez hasteko goaz Datu hau deklaratzen array bat bezala ezagutzen egitura da, halaber, kortxete erabili behar. Baina kortxete horiek joan Testuinguru honetan esanahi ezberdinak dituzte. Eta dezagun honela ikusten. Suposatzen dut ireki fitxategi berri bat sortu hemen. Eta gorde dut hau ages.c. gisa Eta gorde dut hau nire karpetan hemen. Eta orain aurrera joan eta hasi zerbait idazten horien artean CS50.h, besteak beste, stdio.h, int hutsune nagusia. Eta gero, hemen barruan, nahi dut adin int izeneko lehenengo dute. Eta ez dut hori erabili bat iritsi bere adinerako erabiltzaileak int. Baina programa honetan erabili ahal da, ondorioz, Jende anitz, edozein dela ere testuingurua da. Jende-lerro bat lortu dut. Horiek guztiek idatzi beharko dute euren agian batzuk, ez dakit adin, lehiaketa, edo gertaera Nik direla iritsi. Beraz, hurrengo pertsona, dut beste aldagai bat behar. I egin ez baduzu izan delako adina lortzen getInt, hori da , gainean idazteko joan edo gainidatzi aurreko pertsonaren adin. Beraz, hori ez da ona. Beraz, nire lehen sena izan liteke, ai, eskubidea, Jende anitz horrek lortu nahi badut ages-- dezagun dei age1 honetan, int age2 lortzen int int age3 lortzen getInt. Eta orain arte erabili joan pseudocode kodea batzuk hemen. Egin zenbaki horiek batera zerbait. Beste baterako utziko ditugu zer han egiten ari gara, garelako bakarrik Oraingoz zaintzeko age1, age2, age3 buruz. Zoritxarrez, I once programa hau konpilatu eta jarri benetako erabiltzaileen aurrean, zer da diseinu funtsean pobrea Erabaki nuen, badirudi egin dute? Bai? IKUSLEEN: [INAUDIBLE] DAVID J. MALAN: Bai, Ere ez saiatu naiz irudikatu adin zenbat ez benetan axola buruz I? Hiru pertsona baino gutxiago izan dut bada hemen, eta hiru baino gutxiago, beraz, adin, Jarraitzen dut blindly hiru espero. Jainkoa debekatzeko lau pertsona erakusteko sortu. Nire programa besterik ez du, nahiz eta horiek onartzen. Eta, beraz, hau da, istorio luzea laburra, ez da ohitura ona. Eskuin? I funtsean kopiatzea zen eta kodea itsatsi eta besterik ez tweaking aldagai izenak. Eta, nire Jainkoa, izan baduzu, ez hiru Adin, baina 10, edo 100, edo are gehiago, 6.500 ikasmailari, esate baterako. Hau ez da bereziki izango da dotore kodea, edo iraunkorra. Nahi izan ari zara Programaren aldi bakoitzean berridatzi Zure jendea aldaketen kopurua. Beraz, zorionez, gure benetako in gaur ages.c fitxategia, gehiago clever irtenbide bat behar dugu. Lehenik eta behin, naiz maileguan dut eraikitzeko hainbat aldiz erabili dugu, Horretarako, begizta bitartean, hori lortzeko, gelan pertsonen kopurua. Besterik ez naiz erabiltzaileak pester berriro, eta, berriro ere, berak arte dizkit zenbaki oso positibo bat, n balio bat. Erabili nuen, azken denbora horrek lortu int positiboa. Baina ez duten benetako, beraz, aurrera egin genuen eta berriro ideia hori inplementatu. Orain hemen, hau trikimailu berria. Line 27, iruzkin gisa har linea 26 iradokitzen du, Array bat aldarrikatu bertan Guztion adin gordetzeko. Beraz, lortu ez int bat, nahi ez baduzu bi ints, baina ints sorta osoa. Zehazki n osokoak, zeuden n agian izan hiru, 100 izango da agian, 1.000 ere izan daiteke. Sintaxia, nahiko besterik gabe, behar da esan, zer datu-mota nahi ez duzun? Zer deitu nahi duzun zatia memoria hori? Zer sarera deitu nahi duzu hori pictorially itxura? Eta parentesi hemen, esan duzu nola big array izan nahi duzu. Eta, beraz, lehenago, esan dut sintaxia apur bat desberdina da hemen, oraindik kortxete ari gara erabiliz, baina array bat deklaratzen dut, barrutik kopurua kortxete bitartekoak zein handia egin array izan nahi duzu. Aitzitik, orduan s erabiliz ginen tarte i duela une bat, s, kate bat, da, hain zuzen chars array bat, baina ari ez denean aldagai bat deklaratzen, hitz hori hemen gertatzen den moduan, besterik gabe ari zaren lortzean duzu indize zehatz bat, zehatz bat array horretatik elementu. Dela jakin bezain laster, gainerako Hori erraza da. Berria naiz lehen inprimatu da bada zer pertsona kopurua i urtetik da. Non esan dut pertsona kopuru bat, Pertsona bi zenbaki, pertsona hiru zenbaki. Eta besterik ez dut aritmetika egiten, beraz, horrelako pertsona normal, zenbatu ditugu horretarako batetik programa, eta ez zero from. Gero GetInt deitzen dut, baina gordetzeko Adin erantzuna tarte i. Zein array i'th adina da. Beraz, azken aldian berriz tratatzeko ginen kutxa horiek Zamyla izenaren for chars gisa, eta beste batzuk. Orain, kutxa horiek adierazten 32 bit, edo lau byte bertan gorde ahal izango dugu Int bat, int bat, int bat. Horrek guztiak, berriz ere, datu mota bereko dira. Orain egiten dudan zerbait silly, Denbora pasatzen bezala, besterik gabe, Programa honetan idatziz justifikatzeko. Eta gero behera hemen, berriz ere, batetik bestera joateko I Array hemendik urte bat esaten baino gehiago, Pertsona borondate zenbaki Zerbait urte izatea. Eta irudikatu duten math-- esan nahi dut, hau ez da oso konplikatua aritmetika Gehitu besterik ez dut inor, haien adinaren arabera. Just, frogatzeko berriro ere, hau. Just indizea, ahal dudan bezala kate bat sartu, s, beraz, ahal indizea adin array bat sartu dut, han bezala. Beraz, non da hau gertatzen ari dela gurekin? Beraz, ikusiko dugu, azken finean, bat egunetan gauza batzuk etorri. One, denbora honetan guztian, noiz zure programak idazteko, Mario, Greedy, kreditu bezala. Zaituzte izena idazterakoan programa eta kolpeak Sartu. Eta gero, erabiltzailearen sarrera lortzeko. GetString, GetInt batera, GetLongLong, hain zuzen, edo antzekoak. Baina bihurtzen da C euskarri duen Komando-lerroan zerbait izeneko argudioak, hau da, joan gaitezen benetan Zuk idatzitako hitzak at lortu, keinu gonbitean, Zure programa izenaren ondoren. Beraz, egun batean, zuk etortzeko Zesarrek antzeko zerbait idatzi daiteke, edo Zesarren zenbakia 13, hortik aurrera. Nola funtzionatzen duen ikusiko dugu. Hain zuzen ere, delako Arazoa bi ezarri, gaude aurkeztuko joan zerbait apur bat Ralphie en gogorarazten erronka kartografiaren lehenago. Informazio scrambling artea. Honek, hain zuzen ere, oso Ralphie zer egin gogorarazten. Hau enkriptatze baten adibidea da algoritmoa izeneko ROT13, R-O-T 13. Zer besterik esan nahi biratu alfabetoaren 13 leku letrak. Eta hori egiten baduzu, ikusiko duzu orain zer da, agian, ezagutzen den esaldi bat. Baina bidean goaz erabili joan hau, azken finean, da, oro har. P urtean bi ezarri, estandarra edizioan, zifratze pare bat martxan jarri ahal izango duzu, Alde Caesar izeneko, inork Vigenere izenekoa. Biek errotazio dira zifratze, izan ere, nolabait duzu gutun bat buelta beste gutun batean. Eta Zesarrek super erraza da. Bat gehitzeko, gehitu duzu 13, edo zenbaki batzuk arte 26. Vigenere ez dela on a letra bakoitzeko oinarri. Beraz Vigenere, ikusiko duzun bezala zehaztapenean, seguruagoa da. Baina egunaren amaieran zer gauzatzeko zaizu eta P ezarri bi, biak erabiltzen duzun gakoa dela zifratzeko eta deszifratzeko. Inflexio-prozesuari dagokionez testu soila, jatorrizko mezua batzuk, Cypher testua, sartu bertan enkriptatuta zerbait da. Eta gero, desenkriptatu berriro. Hacker edizioan, Bien bitartean, egingo duzu Antzeko zerbait tasked espirituz, non emango dizugu fitxategi bat, Linux tipiko bat, edo bertatik Mac, edo Unix ordenagailu izeneko etsy pasahitza, eta horrek oso bat dauka izenak eta pasahitzak sorta. Eta pasahitzak horiek guztiak enkriptatuko dira, edo hashed, beraz, behar bezala hitz egiteko zehaztapenean ikusi ahal izango duzu. Eta hacker edizioan erronka izango sarrera bat hartuz, honen antzeko batekin, eta pasahitza cracking. Hau da, kalkulatzen zer egin giza pasahitza benetan izan zen. Zeren eta, hain zuzen ere, pasahitzak dira oro har, ez da argi eta garbi gordetzen dira, eta, oro har, pasahitzak zaila asmatzen egon behar. Hori ez da kasu askotan. Eta zer egiten dugu pentsatu nuen da Pare bat minutu amaituko batik bat begirada pasahitzak aukera pobrea film batetik fondly gogoratzen dezakezu. Eta hala ez bada, alokatu behar duzu. [Bideo-erreprodukzioa] -Helmet Fiend, zer gertatzen da? Zer egiten duzu nire alaba? -Baimena Me aurkezteko bikaina gazte zirujau plastikoari, Phillip Schlotkin Doctor. Handiena sudurra lan gizonik Unibertso osoa eta Beverly Hills. -Zure Highness. -Nose Lana? Ez dut ulertzen. Dagoeneko izan da sudurra lan bat. 16 gozoa bere present izan zen. -No, Ez da zer uste duzu. Askoz ere, askoz okerragoa. Ez baduzu, eman dit aire armarria konbinazioa, doctor Schlotkin emango dizu zure alaba atzera bere zaharra sudurra. - [Gasps] Nooooooooooooo. Non ez duzu? -Guztiak Eskubidea. Esango dut, esango dut. -No, Daddy, ez. Ez behar duzu. -Arrazoi Eskuineko maitea. Berria sudurra galdu dut. Baina ez dut haiek kontatzeko konbinazioa axola zer. -Oso Ondo. Doctor Schlotkin, egin zure txarrena. -Nire Plazerra. -No! Itxaron, itxaron. Esango dut. Esango dut. -I Bazekien lan litzateke. Guztiak eskubidea, eman dit. -Konbinazio Bat da. -One. -One. -Bi. -Bi. -Bi. -Hiru. -Hiru. -Hiru. -lau. -lau. -lau. -Bost. -Bost. -Bost. -Beraz, Konbinazio bat da, bi, hiru, lau, bost. Hori da konbinazio stupidest Dut inoiz nire bizitzan entzun. Hori da gauza bat-mota lelo luke bere ekipajea. Eskerrik asko, jauna. [URRUTIKO clicks] -Zer egin duzu? -I off aktibatuta horman. -Ez, Ez duzu, zuk itzalita filma osoa. -I Must've sakatzen okerreko botoia. Beno, jarri berriz! Jarri filma berriro! Bai, jauna! Bai, jauna. Ekarri ditzagun joan, Arnold. Goazen, Gretchen. Jakina badakizu ez dut you fakturatzen honetarako dute. -Beno? Ba al du lan? Non da erregea? -It, Lan egin jauna dugu konbinazioa izan. Saritzea da. Orain azken arnasa behin hartu ahal izango dugu planeta Druidia aire freskoa. Zer da konbinazioa? -Bat, Bi, hiru, lau, bost. -Bat, Bi, hiru, lau, bost? Bai. Hori da harrigarria. Nik gauza bera konbinazioa nire ekipajea. Prestatu Spaceball 1 berehalako irteera. Bai, jauna. Aldatu -eta konbinazioa nire ekipajea. [Atea itxi SOUND] [Ateak Anime KASKOA sakatuz] -Ahh. [END bideo-erreprodukzioa] DAVID J. MALAN: Hori da CS50, datorren astean ikusiko duzu dugu. Narratzailea: Eta orain, Deep Pentsamenduak, Daven Farnham arabera. DAVEN FARNHAM: C Kodetze da Scratch baino askoz zailagoa da. printf, Scratch gezurra zela. [Barreak soundbite]