[Powered by Google Translate] [Artikulua 4] [Less erosoa] [Nate Hardison] [Harvardeko Unibertsitateko] [Hau da CS50.] [CS50.TV] Ondo da, ongi etorria itzuli atala. Aste honetan atalean, gauza pare bat egin dugu. Lehen laburpena Arazoa Set 2 goaz, Caesar eta Vigenère arazo multzo bat da. Eta gero Quiz 0 berrikuspena murgiltzea goaz eta denbora pixka zer hitz egin dugu recapping hitzaldi bakoitzean orain arte, eta, gainera, dugu arazo gutxi aurreko urteko galdetegiak. Horrela, you guys modu ona da hori prestatzeko. Hasteko, irtenbide ona pare bat abiaraziko dut aurreko arazo multzo, Problem Ezarri 2, gune honetan sartu. You guys guztiak hit bada, esteka honetan, eta klik eginez gero, nire izena bada, eta egin klik nire lehen berrikuspena caesar.c, hau da, zehazki zer bilatzen dut ikusiko duzu. Dezagun benetan azkar honi buruz hitz egiteko. Hau besterik ez da, lagin irtenbide bat. Hau da, ez da perfektua konponbidea egotea. Daude hainbat modu hau idazteko, baina badaude zenbait gauza nabarmendu nahi duten I ikusi nuen nik bezala kalifikatzean, ohikoa akatsak uste dut irtenbide hau manipulazio oso lan ona egiten da. Lehen goiburua comment nolabaiteko izaten ari da, goialdean. 1 lineak On 7 xehetasunak ikusteko, programa hau zer egiten ari da. A praktika onak estandarra C kodea idazten ari zaren kontuan hartu gabe zure programa fitxategi bakar bat edo barruan du hainbat fitxategi baino gehiago zatitu ala ez da nolabaiteko goialdean comment orientatzea. Duten pertsonen joan eta mundu errealean kodea idatzi ere. Hau da, non copyright informazioa jarriko dute. Jarraian # barne hartzen du. Line 16 On da hau # define, itzuli gara pixka bat. Eta gero, behin funtzioa hasten da, hasten behin nagusia, Programa hau izan delako funtzio bakar batean jasotako Oso lehenengo gauza gertatzen da-eta, hau da, oso hizkuntza eta C programa bat ohiko komando lerroan argumenturik hartzen da berehala dela egiaztatzen argumentu Aldaketa, argc. Eskuin hemen programa hori 2 argumentu espero zehazki, ikusiko dugu. Gogoratu lehen argumentua berezi bat beti ari diren programa exekutatu izena, fitxategi exekutagarria izena. Eta beraz, zer honek erabiltzaileari eragozten programa exekutatzen ari argumentuak gehiago edo gutxiago. Eskubide hori egiaztatu kanpoan nahi dugu arrazoia delako ezin dugu benetan eskubide hau sartzeko argv array hemen fidagarrian dugu hautatuta arte ikusi nola big da. Ikusi nuen akatsak komun bat izan zen pertsona litzateke berehala joateko eta grab argv [1]. Funtsezko argumentua array grab litzaidake dute eta ez egiaztatzeko on i eta, ondoren, test ez litzaidake dute argc baita hurrengo proba gisa, ala ez da lehen argumentua zenbaki oso bat izan zen, hain zuzen ere, eta, aldi berean, eta hori ez da lan kasua delako daudela argumentuak ez hornitu grabbing behar duzu argumentu bat da, ez, edo bat da, ez hartzen saiatzen ari da. Beste gauza egin behar duzula big nabarituko da beti nahi duzun error lagungarria mezua nolabaiteko inprimatu to erabiltzaileak orientatzeko horiek. Ziurtatu guztiak run programak, non Bat-batean kraskatzen duzun naiz, eta txiki hau barregarria elkarrizketa-koadroa azalduko da eta dio horribly críptica eta, agian, zerbait ematen dizu errore kode bat edo horrelako zerbait ez du zentzurik. Hau da, non nahi duzu zerbait lagungarria eskaintzeko eta beraz, erabiltzaileari zuzendutako denean exekutatu dute "Oh," aurpegia palmondo joan ziren. "Zehazki zer egin jakin dut. Dakit hau nola konpondu". Mezu bat inprimatu ez baduzu, eta gero azkenean benetan Erabiltzaileak joan utziz aztertu zure iturburu-kodea figuraren txarto joan. Badira ere, batzuetan error kodeak desberdinak erabili ahal izango duzu. Hemen dugu errorea gertatu da esatea, Errore bat gertatu da, errorea gertatu da. Bigger programak, sarritan diren programak izeneko programak beste, error berezia kodeak nolabaiteko itzuliko da eszenatoki desberdinetan programazioaren komunikatzeko zer bestela egiten duzun erabili English mezu polit bat. Cool. Lan egiten dugu behera, ikus dezakezu gako out tira dugu. Tekla egokitzen ikusteko probatu dugu. Erabiltzaileak mezu bat lortu dugu. Arrazoia honetan egiten dugu begizta-eta hau, berriz, zerbait egingo dugula estaltzeko apur bat bit-baina bihurtzen da idatzi control D GetString hori terminalean gonbita lortuko duzu benetan ez da karaktere berezi bat bidaltzen du programa. Izeneko fitxategi pertsonaia ELF edo amaieran. Eta kasu horretan, gure mezua katea null izango da, beraz, hau ez zen zerbait berrikusi dugu arazoa ezartzen du bere burua. Baina joan gara, gaur egun ditudan hasi ginen erakusleak buruz hitz eta zeure buruzko memoria dinamikoa esleipena, null, betiere funtzio bat might duzu egiaztapena itzuli null balio bat egiteko ohitura lortu duzu nahi izango duzu zerbait. Hau da, hemen batez ere ilustrazioa. Baina ikus etorkizunean GetString Arazoa Ezarri 4, hau mantentzeko kontuan hartu nahi duzu. Berriz ere, hau ez da Problem Ezarri 3 bai izan dugu, ez baita estalita oraindik arazo bat. Azkenik, lortzen dugu non enkriptatze begizta nagusia zati honetan, daude eta pare bat gauza gertatzen da hemen. Lehenik eta behin, batetik bestera joateko mezu kate osoa bera baino gehiago dugu. Hemen mantenduko dugu baldintza dei strlen, zenbaki bat nabarmendu dute, ez da modu handi bat joan. Bihurtzen da, kasu honetan ere ez da handia, partzialki delako mezua beraren edukia ari gara aldatzea loop, barruan beti dugu 10 karakterekoa izan da mezu bat izanez gero, loop strlen zer itzuliko da lehen aldiz hasten gara? 10. Baina gero, mezua aldatu dugu, bere 5 izaera aldatu esaten dugu, eta bota \ 0 karakterea posizio 5ean, strlen (mezua), ondorengo iterazio ez itzultzeko zer egin Oso lehen aldiz iterated baizik eta itzuli egingo du 5 null amaierako horretan bota delako, eta katea luzera definitzen da \ 0 posizioa. Kasu honetan, hau ari gara delako aldatzea leku joateko modu handi bat da. Baina hori da, benetan harrigarriro simple enkriptatzeko nabarituko duzu math zuzena bazara. Behar den ala ez gutun ikusteko begira ari zaren maiuskulaz edo minuskulaz. Arrazoia besterik ez dela egiaztatu dugu eta ez dugu egiaztatu da alfa kasu delako pertsonaia bat da maiuskulaz edo bada minuskulaz da ondoren, behin betiko hizki bat da, dugu ez duelako maiuskulaz eta minuskulaz digituak. Beste gauza egiten dugu, eta pixka bat delikatua da- aldatu dugu Zesarrek zifratze formula estandar , arazo multzo zehaztapen eman dugun. Zer da hainbat Hemen da kendu dugun Kasu maiuskulaz hiriburuan, eta, ondoren, kapital-A gehitu ditugu kopiak amaieran. Batzuk egin hau zure kodea ezagutzen dut. Ba al edozein zure bidalketak? Hau egin duzu. Ezin, zer honek azaldu, Sahb? Kenduz out, eskuinera ondoren egin mod bat delako, ateratzea, eta, beraz, modu horretan [eztula] lortuko duzu posizioa duzu. Eta ondoren, gehituz itzuli geroago aldatu duzula nahi baino gehiago. Bai, hain zuzen. Zer Sahb zuen gehitu nahi dugu gure mezua eta gure gakoa elkarrekin eta, ondoren, mod, mod NUM_LETTERS gure mezua egokiak 0 eta 25 barruti eskalatzeko ez badugu lehenik eta behin, ondoren, azkenean dugu agian benetan bitxi zenbaki bat eskuratzerakoan balioak mezua [i] begira ari delako, begiratzen dugu, gure plain-text message Ith pertsonaia balio bat da nonbait 65 122 sorta honetan maiuskulaz A z minuskulaz bidez ASCII balioak oinarritzen da. Eta, beraz, 26 edo NUM_LETTERS by mod dugu, geroztik izan da gure # goiko eskuineko definitu hemen, digute balio bat 0 eta 25 sorta eta ondoren, eskalatzeko back up behar dugu eta ASCII sorta egokia. Horretarako modurik errazena da eskalatzeko guztia behera 0 eta 25 barruti sartzen hasteko, eta, ondoren, guztia atzera mugitzeko amaieran. Beste komun error ikusi nuen pertsona exekutatu sartu dela ez baduzu benetan egiten eskalatzea hau berehala eta mezu eta gakoa gehitu zaituzte elkarrekin eta gehi duzu, adibidez, char aldagaia batean, hori arazoa Mezu geroztik [i] Hasteko, kopurua handi samarra da- gogoratu gutxienez 65 da maiuskulaz bat izanez gero, karaktere- duzu gako handi bat, esan genezake, 100 bezalako zerbait bada, eta horiek 2 gehitu zaituzte elkarrekin char bat sinatu, gainezkatzea bat lortzeko ari zaren. Balioa 127 baino handiagoa eskuratzen ari zara, balio handiena char aldagai bat sakatuta mantendu ahal izango da. Berriz ere, zergatik hasteko gauza sort hori egin nahi duzun. Kasu horretan inguruan pertsona batzuk got bat bestela, egiten eta probatzen gainezkatzea egiten bada ikusten hasi aurretik egiten dela, baina modu hori inguru izaten jarraitzen du. Eta gero, irtenbide hau inprimatutakoak dugu kate osoa oso amaieran. Beste pertsona inprimatutako pertsonaia bat aldi berean. Biak dira awesome. Une honetan, ez duzu guys edozein galdera, iruzkinak edozein honi buruz? Gauzak nahi duzun, ez duzu gustatzen gauzak? Galdera bat izan nuen. Agian galdu dut zure azalpen zehar, baina programa honek saltatzeko espazio gakoa testuaren luzera konektatzeko? Hau besterik ez da Zesarrek zifratze. >> Oh, barkatu, bai. Bai, hori ikusiko dugu. Zesarrek zifratze lortu dugu inguruan delako iraulitako besterik ez dugu karaktereak. Jartzen ditugu ziren maiuskulaz edo minuskulaz bada. Zaudete honi buruz nahiko ondo sentitu naiz? Sentitzen free home kopiatu, hartu du, konparatu duzuna guys idatzi. Definitely sentitzen free buruzko galderak bidaltzeko ere. Eta berriro ere, konturatzen helburua hemen zure arazoa ezartzen du ez duzu guys zure arazoa multzo kodea perfektua idazteko. Ikasteko esperientzia bat da. Bai. Itzuli do loop, berdinen bada null, berriz, beraz, null besterik ez du ezer esan nahi, sakatu besterik ez dute sartu? Null berezi bat balio erakuslea da, eta null erabiltzen ditugu, esan nahi dugu erakuslea aldagai bat izan dugu, hori ez da ezer seinalatuz. Eta, beraz, normalean esan nahi du aldagai hau, mezu aldagai hau hutsik dago, eta hemen ari gara CS50 kate berezia mota erabiltzen delako, zer CS50 kate mota da? Have David bota atzera kanpaia hitzaldia da ikusi al duzu? Funky-it bat da erakuslea da, ezta? Ados, bai. >> Char * da. Eta beraz, oso ordezkatu izan dugu hementxe * char mezua, eta, beraz, GetString funtzioa, ez bada behar bezala kate bat erabili, kate analizatu ezin du, eta kasu horretan ezin da kate bat analizatu Erabiltzaile mota fitxategia pertsonaia, kontrol D amaiera bada, ez den zerbait egiten normalean, baina bada gertatzen gero funtzioa null balioa itzuliko da esaten modu gisa "Hey, ez dut kate bat." Zer gertatuko litzateke jartzen ez badugu, mezua = null zerbait behar dugu oraindik ez da egiten den? Zergatik arazo bat egongo da hemen? Ezagutzen dut pixka bat hitz egiten dugun memoria filtrazioen buruzko hitzaldia delako. Bai, utzi egin, eta zer gertatzen den ikus dezagun. Basil bere galdera izan zen zer gertatzen den benetan ez badugu izan Mezu hau = null proba? Dezagun joan goian. Zaudete hau komentatu daiteke. Egia esan, gorde dut berrikuspena batean. Berrikusketa, ordua: 3 izango da. Zer izan duzu programa hau exekutatzeko egin da engranaje ikono hau sakatu hemen duzu, eta argumentu bat gehitzeko duzu. Eman behar diote funtsezko argumentua duzu komando-lerroko argumentu bat pasa nahi dugu geroztik. 3 zenbakia eman dut. 3 gustatzen zait. Orain atzera zoom-out, programa martxan. Da, exekutatzen ari konpilatzean, eraikitzeko. Hemen goaz. Galdetzea zain. Zerbait idatzi kaixo-non atsegin ez bada? Oh, nire programa hartu luzeegia exekutatu. Luzeegia jawing nintzen. Hemen doa. Orain idatzi kaixo dut. Enkriptatzen dela egokia ikusi dugu. Orain zer gertatzen den gonbita egiten dugu GetString bada null itzultzeko? Gogoan izan, ez dugu esan I, kontrol D sakatuz aldi berean. Korrituko dut hemen. Exekutatu dugu berriro. Eraikina. Hor doa. Orain control D hit I Lerro hau dioen opt/sandbox50/bin/run.sh, segmentaziuo hutsegitea dut. Have you guys ikusi baino lehen? [Student] Zergatik ez dago ez >> Sentitzen dugu? [Student] Zergatik ez dago, kasu honetan core dump ez? Core dump-galdera da, zergatik ez dago core dump ez hona? Galdera ez dagoela izan daiteke, baina core dump fitxategi bat da lortzen disko gogorrean gordetzen dira. Desgaitu dugu kasu honetan core zabortegiak run zerbitzariak, beraz, ez dugu pertsona faulting seg eta eraikitzeko core zabortegiak tona. Baina bat jaso ahal izango duzu. Core zabortegiak askotan desgaitu ditzakezun gauza sort dira, eta batzuetan ez. Segmentaziuo hutsegitea, zure galderari erantzuteko, Basil, erakuslea sartzeko saiatu garela esaten ez zela ezer seinalatu. Gogoratu Binky bideoa Binky saiatzen joan erakuslea ez den ezer seinalatuz sartzeko? Kasu honetan uste dut, teknikoki erakuslea da zerbait seinalatuz. Null, hau da, teknikoki 0 seinalatuz, baina hori definitutako segmentu bat ez da eskuragarria programa, eta, beraz, segmentaziuo hutsegitea bat lortuko duzu ez delako ari zaren memoria sartzeko baliozko segmentuan zeure segmentu edo pila segmentu edo datuak segmentu atsegin dute. Cool. Caesar buruzko galdera gehiago? Dezagun aurrera. Dezagun benetan azkar begiratu berrikusketa, ordua: 2. Hori Vigenère. Hemen Vigenère ko honen bidez dugu oinez nahiko azkar, izan ere, berriro ere, Vigenère eta Caesar antzekoak dira. Header comment aurretik, # Define magia zenbakiak hauek erabiliz saihesteko aurretik. Gauza polita da esaten mugitu nahi izan dugu alfabeto desberdin bat edo horrelako zerbait. Baizik eta, eskuz aldatu 26 kodea guztiak joan beharrik baino hau aldatu izan dugu 27 edo jaregin behera ginen hainbat alfabeto, hizkuntza ezberdinak erabiliz gero. Berriz ere, lortu dugu argumentu Aldaketa egiaztapen hau, eta benetan ia dezakezu hartu txantiloi gisa. Programa Pretty askoz ere idazten bakoitzean izan behar du hartzen du komando-lerroan bada argumentuak-lerro sekuentzia bat atsegin dute hau irakurtzen oso hasiera-hasieratik. Hori behatu lehenengo probak egin nahi duzu. Hemen duguna ez zaitez egin genuen keyword baliozko izan zen, eta hori ez dugu bigarren kontrol. Iragarki berriro bereizten dugun hau argc eta 2. Kontuan izan kasu honetan gauza bat egin behar izan dugu izan ordez bat erabiliz i kate osoa egiaztatu nahi izan dugu, eta ordena benetan duzula karaktere karaktere joan kate osoan zehar. Ez dago modu ona da zerbait deitu ere, adibidez, delako, eta 0 itzuliko da i da zenbaki oso bat ez bada, horrek ez du, nahiz eta lan egin. Berriz ere, mezu nice diezu zehazki zer gertatu zen. Gero, hemen, berriz, kudeatzeko ere kasuan, non user control D ausazko karaktere mota. Eta gero Charlotte izan galdera bat lehenago, nola espazio saltatzeko kudeatzen dugu gure katea hemen. Mota honek zer egin dugu Myspace programa antzekoa izan zen atalean egin genuen, eta modu honetan lan egin arloak litzaidake ikusi dugun letrak kopurua. Mezuaren kate baino gehiago dugun bezala ibili, pertsonaia baino gehiago ibili karaktere indizearen jarraipena egin dugu gure parte begizta gisa, eta, gero, jarraipena egin ere egiten dugu letren kopurua, beraz, ez karaktere berezirik, ez zenbakiak, ez zuri-espazioa bereizi aldagai ikusi dugu litzaidake. Eta gero, irtenbide hau gakoa aldatu benetako gako zenbaki oso bat, eta hori ez da hegan, eskuineko aurretik doa gero mezu benetako pertsonaia enkriptatzeko. Primeran handia izan ziren ere zenbait irtenbide daude gakoa aldatzeko litzateke gakoa baliotasunerako probatzeko. Ziur eginez gain pertsonaia eta keyword zenbaki oso bat sartzen zen hizki ere aktibatuta 0 eta 25 sorta gero, saltatzeko beranduago honetan on begizta beharrik. Berriz ere, hemen ikusten duzun hau da, benetan zehatza kode bera Caesar erabiltzen dugun puntu honetan. Zehatza gauza bera egiten ari zarenean eta, beraz, benetako tranpa da kalkulatzen keyword zenbaki oso bat sartu aktibatzeko. Gauza bat egin dugu hemen apur bat trinko Esaldi hau da, behin eta berriz errepikatzen dugu, deitu ahal izango duzu uste dut, 3 lineak 58, 59, eta 61 aldiz bereizita. Can norbait azaldu zer esaldi honek? Karaktere bat sartzeko, esan nahi duzu. Bai, [inaudible] hitzarekin pertsonaia bat da, eta beraz gutunak ikus kopurua zaren soilik batera mugitzen keyword gutun ikusi dugu behin, den espazio eta horrelako gauzak modu eraginkorrean saltatzeko. Bai, hain zuzen. Eta gero, behin ikusi duzun keyword hutsik mod besterik ez duzu mugitzen atzera inguruan. Hain zuzen ere. Azalpen bat da perfektua. Zer Kevin esan nahi dugun keyword sartu indizea. Pertsonaia num_letters_seen lortu nahi dugu, bada, baina num_letters_seen gako-luzera gainditzen badu, gama egokiak sartu bueltan da mod eragilea erabiltzen dugu eraginkortasunez itzulbiratu inguruan. Esate baterako, labur bezala, gure keyword hirugiharra, eta 5 letrak luzea da. Baina ikusi dugu gure testu arrunteko 6 hizkiak Puntu honetan eta enkriptatutako 6. Azkenean egingo dugu sartzeko num_letters_seen, 6, mod gako-luzera, 5, eta, beraz, 1 lortu dugu, eta, beraz, zer egin dugu zaitugu gure keyword aurreneko karaktereari barruan puntu horretan sartzeko. Eskubidea guztiak, Vigenère edozein zalantza argitzeko dugu aurretik? Zaudete honi buruz nahiko ondo sentitu naiz? Cool, great. Ziurtatu duzu guys diren ikusteko aukera kodea lortzean egin nahi dut uste dugu, itxura ona eta bertatik ikasteko aukera dute. Hau da azkena izango erabili beharko dugu espazio momentuz, eta trantsizio ari gara gaur egun joan, eta cs50.net/lectures joan noa quiz berrikuspena pixka bat egin ahal izango dugu. Quiz berrikuspena egiten hasteko modurik onena uste dut Hitzaldiak Orri honetan, cs50.net/lectures, eta aste epigrafe bakoitzaren azpian, eta, beraz, begiratzen dut hemen Astea 0 Astea 0 estali gai-zerrenda bat ikusi dut. Edozein gai hauek badirudi duzu ezezagunetan atzera joan eta scour hitzaldia oharrak eta ziurrenik behin betiko duzu nahi are gehiago, hitzaldi bidez gaingabetuak, horiek berriro ikusi nahi baduzu zer ari den gertatzen gai horietako bakoitzarekin sentitzen lortzeko. Dugu got baliabideak cool esan egingo dut, gainera, urtebete honetan Nik sortu dugu film labur horiek, eta Aste 0 begiratzen baduzu, ez dugu gai guztiak estaltzen, baina horietako batzuk nahiko dugu, direnak trickier batzuk, eta, beraz, film labur horiek berriro behaketa lortzeko modu ona abiadura bat da. Hain zuzen ere, 3 behean plug batean jarri nuen, haietatik noa. Baina ari zaren bitar bada borrokan, bit, hex, stuff mota hori, bitarra hasteko leku handi bat da. ASCII ona ere ikusteko beste bat da. Ere ikusi ahal izango duzu me abiadura 1.5x dut zuk ere geldoa baldin bada joan. Da berrikuspena geroztik, sentitzen free horretarako. Just benetan azkar hasteko, galdetegi arazo horietako pare baten bidez joan goaz besterik ez azkar horien bidez churn. Esate baterako, dezagun begiratu arazoa 16 lortu dudan eskubidea hemen taula gainean. Lortu dugu kalkulua honako hau binary eta edozein lan erakutsi nahi dugu. Ados, hau da tiro bat eman nahi dut. You guys batera jarraitu behar paper, eta hori benetan azkar egin dugu. Bitarra kalkulu hauek egin nahi dugu. Nik 00110010. Eta gehitu du 00110010 noa. Math, jenio batera etxean, hau da, modu eraginkorrean 2 biderkatuz. Dezagun hasteko. Egiten dugun gain algoritmoa bera jarraitu behar dugu zenbaki hamartar gehitu dugu elkarrekin. Really Ezberdintasun bakarra da atzera loop dugu inguruan behin 1 + 1 ordez behin 10. Eskubidea dugu hasten bada, oso azkar, zer aurreneko digitua? [Student] 0. >> [Nate H.] 0. Great, bigarren digitua? [Student] 1. [Nate H.] 1 da? 1 + 1 da? [Student] 10. [Nate H.] Zehazki, eta, beraz, zer digitu idazten diot batzen 2 direnak azpian? [Student] 1, 0, edo 0 eta, ondoren, eraman 1. [Nate H.] 0 eta 1 egiteko, zehazki. Hurrengo bat sortu, Basil, ari zaren. Zer da hirugarren? >> [Basil] 1. [Nate H.] 1, perfektua. Kevin? [Kevin] 0. >> [Nate H.] 0, Charlotte? [Charlotte] 0. >> [Nate H.] Bai, eta zer egin? [Student] 1. [Nate H.] Eta zer egin dezaket? Eta gero egiten dut 1. Perfect, Sahb? >> [Sahb] orain 1 duzu. [Nate H.] Eta ezer egiten dut hemen? [Sahb] Ondoren, hurrengo 1 1 baino gehiago egin delako. [Nate H.] Great, eta, beraz, hemen amaitu ahal izango dugu. Cool. [Student] Does 0 + 0 = 0? 0 + 0 = 0. 1 + 1, esan bezala, 10, edo 1, 0, baizik. 10 misnomer bat da niretzat 10 10 zenbakia esan nahi delako, eta nola ari gara ordezkatzen denean idazten ari gara bitxikerien da. 2 zenbakia adierazten ditugu, 1, 0, eta 10 zenbakia da, apur bat desberdina da. Zein da binary buruzko nice mota dago benetan ez dira asko Kasu ikasi behar duzu. Ez 0 + 0 = 0, 0 + 1 = 1, 1 + 1 0 da, eta, ondoren, 1 egiteko, eta, ondoren, ikusi dezakezu hemen eskubidea hirugarren zutabean 1, 1, eta 1 izan genuen. Eta 1 + 1 + 1 1 eta beste 1 eramanez gero. Bitarra gain zarenean, nahiko erraza da. Horietako pare bat gehiago egin dut behatu egiaztatu zuei dagoelako joan aurretik ziurrenik galdetegiaren ikusi dugu zerbait. Orain egin dezagun hurrengo hau baita. Egin dezagun arazoa 17. Honako zenbaki bitar hamartarra bihurtzeko goaz. Nik 10100111001. Ez dut bideo bitar Gogoratu Adibide pare baten bidez ibili nintzen, eta nola erakutsi dut dena funtzionatzen ari hamartarrean. Ordezkaritza hamartar ari zara lanean Oraindik uste dut gure bizitza Puntu honetan, beraz, hobeto moldatzen dela nola jarduten benetan mekanika Gloss nahiko erraza da. Baina azkar laburpena bat egin ahal izateko, kopurua 137 benetan esan nahi du-eta, berriro ere, hau hamartar da ordezkaritza- 137 hamartar kopurua esan nahi du que tengo 1 x 100 + 3 x 10 + 7 x 1. Hori guztia pantailan ostatu da. Eta gero zenbaki horiek begiratzen baduzu hementxe, 100, 10 eta 1, Oraindik dutela benetan 10 eskumen guztiak ikusiko duzu. 10 ², 10 ¹, eta 10 I zero. Antzeko gauza sort ditugu binary izan ezik gure oinarria, deitu dugun bezala, 2 ordez 10. 10s hauek idatzi dut behera hemen, behealdean, 10 ², 10 ¹, zero, 10 10 gure oinarria da, eta berretzailea, 0, 1 edo 2, idazten dugun zenbakia digitua posizioa engaiatuko da. 1, begiratuz gero, hau 1 2 posizioan da. 3 1go posizioa da, eta 7 0th posizioa da. Hori da hainbat ordezkari azpian gure oinarriak nola lortuko dugu. Hau we'll-benetan guztien ondoren, zer ezagutzen duzu? Do-non dugu zuen nire desegin botoia? Hor doa. Hau desegin gauza I love. Hau jarraituz, uste dut gutxienez zenbaki bitar bat bihurtzeko hasteko modurik errazena edo zenbaki hamaseitar bat non base 16 eta ez 10 edo 2 aurretik joan eta idatzi oinarriak eta adierazlerik my goialdean zenbaki bitar zenbakiak guztiak. Ezkerretik hasten bada berriro mota da counterintuitive Aldatu dut beltza hemen dugu, 2 posizioa 0th eta, ondoren, 2 dugu ¹, 2 ², eta, ondoren, 2, 3, 2, 4, 2, 5, 6, 7, 8, 9, eta 10. Zenbaki hauek idatzi dut adierazlerik guztiak dira. Oinarriak idatzi besterik ez dut hemen, espazio zerbait lehen 3. Puntu honetan aurrera noa eta benetan dut ezabatuko stuff hamartar genuen, hori ondo dagoen. Duzun got. Duzun dutenek online behaketa ziur nago me atzeratzean Nahi izanez gero, gai izango da. Modura itzuliko da luma. Orain, zer dugu ez baduzu guys ez dira guztiz 2 eskumenak bizkortu, guztiz cool. Gertatzen da. Dut ulertzen. Behin izan nuen lan-elkarrizketa bat non esan zidaten 2 eskumenak guztiak jakin behar dut 2 bidez 30ean. Ez zen lan bat dut. Dena den, guys aurrera daiteke, eta math egin hemen baina binary ez benetan zentzurik, eta ez du zentzurik hamartarra edo hamaseitarra bai, non zeroen duzu out math egin. 0 daukat hemen, 0, 0 Hemen, 0 Hemen, 0 Hemen, 0 hemen ikusi ahal izango duzu. Zergatik izan liteke ez da zentzu benetako math egiteko boterea 2 egokia kalkulatzeko posizio hori? Zehazki, Charlotte bezala esan, 0 izango izango da. Agian bai eta gorde zeure burua denbora 2 eskumenak kalkulatzeko zure strong palo ez bada. Kasu honetan kalkulatu besterik ez dugu behar, hau da, 0-2? [Student] 1. [Nate H.] 1, 2 eta 3-? [Student] 8. >> [Nate H.] 8. 2 eta 4? [Student] 2. Sentitzen dut, 1. [Nate H.] 2 4 16 urtekoa da, zehazki. 2 eta 5, Kevin? >> 32. [Nate H.] 32, 2 eta 8? [Student] 32 x 8, 256. [Nate H.] Perfect. Eta 2 10? [Student] 1024. [Nate H.] Bai, 1024. Behin lortu dugu zenbaki horiek denak laburbildu ahal izango dugu. Eta hori da, non benetan garrantzitsua da gauza pare bat egin. Joan motela bat da eta zure lana egiaztatu. Esan du ez dagoela bat 1 dezakezu zenbaki honen amaieran, beraz, behin betiko, bakoitiak zenbaki bat behar dut nire ondorioz, beste batzuk ere izan behar du zenbakiak delako joan emandako zenbaki bitar bat dela. Puntu honetan beste gauza bazara proba eta idatzi duzun arte eta exekutatzen ari zaren denbora puntu kopurua begiratu arazo hau dela merezi du. Arazo hau, ikusi balitz bezala irauli dut nire laptop itzuli benetan azkar- Arazo hau merezi 2 puntu, beraz, hau da, ez da gain ordena joan behar duzu bidez benetan ari bada, aldiz sakatzen. Baina itzul dugu iPad, eta horren bidez dugu benetan azkar. Lehen zenbakiak txikiak egiten gustatzen zait aurkitu dut errazagoa delako. 32 eta 8 gustatzen zait joan ziren elkarrekin delako nahiko erraz, eta 50 lortzen dugu. 16 eta 1 17 lortzen. Bertan 57 lortzen dugu, eta, ondoren, gainerako ahal izango dugu, eta, beraz, dugu 57 egin dezake, 156. Goazen. Man, ondo, dezagun ikusteko. 57, 256, eta 1024 izan genuen. Puntu honetan, nahiago dut joan bidez. Ez dut pista. Irakurri behar dut, argi eta garbi. 7, 6, eta 4, 17 lortuko duzu. 1, 5, 5, 2, 13. Ondoren, 3 lortu dugu, eta, ondoren, 1 lortuko dugu. 1337. Pazko arrautza, inor? Edozein zenbaki hau ezagutzen? Chris zenbaki aitortzen. Zer esan nahi du, esan nahi du Chris? [Chris] Leet. Leet, eta, beraz, hau begiratzen baduzu, itxura Leet bezala. Hacker stuff. Watch stuff mota horretako midterm edo quiz, baizik eta. Ikusiko duzu stuff mota hori bada, eta galdetzen ari zaren "Huh," agian benetan esan nahi duen zerbait. Ez dakit. David likes jarriz sartu Behatu egiaztatu da modu ona da. Ados bezala, ikusteko zer ari den gertatzen. Astea 0/Week 1 stuff. Aldatzen dugu atzera gero gure laptop orain, mapan handiago, eta beste gauza pare bat. Ez ASCII, eta horrek asko egiten dugu arazo multzo. Hiriburua A. nozioa Zer da benetan? Zenbaki hamartar da ezagutzea. 65 zer da mapatzen ASCII taulan, eta hori da, beraz, nola ordenagailuan idazten du, eta hori nola urruntzen dugu benetan idazten pertsonaia hiriburua A eta pertsonaia minuskula izan duzula egiten konponbide horiek eta arazo multzo batzuk. Beste gauza pare bat. Dugu got adierazpenak, adierazpen boolearrak, baldintzak, begiztak, aldagaiak eta hariak. Horiek guztiak dirudi zentzurik gehien? Terminologia hau batzuk, aldiz at funky txiki bat da. Zerbait gehien parte hartzea da puntu eta komaz bukatzen adierazpen bat dela uste dut. Hala nola, x gisa adierazpenak = 7, aldagai bat ezartzen du, zentzuzkoa izeneko x = 7. Ustezko x mota bat da, halaber, kopurua 7 gordetzeko, int bat edo, agian, mugikor bat edo labur bat edo char bat da, horrelako zerbait. Adierazpen boolearra A bikoitza horiek erabiltzen ari da berdin eta bang berdinen edo ez, berdin da, baino gutxiago, baino handiagoa da, baino gutxiago edo, stuff mota guztiak berdinak. Baldintzak, gero, bestela, adierazpenak dira. Izan ezin duzula, bestela, dagokion bat bada gabe gogoratu nahi nuke. Era berean, ezin duzu, bestela bat ez badago dagokion bada. Loops, gogoratzen loops 3 mota egin dugu sartuko zara hammering atal eta arazo multzo azken bikotea. Ez erabiltzea, erabiltzailearen sarrera duzun bitartean lortzean, baldintza jakin bat arte loops, egia da bitartean erabiliz, eta, ondoren, horiek erabiliz loops, behar izanez gero jakin zein begizta-iterazio Gaur egun Oraindik duzu nola uste dut. Edo ari zaren bat egiten bada, eta pertsonaia bakoitzari kate bat zerbait egin nahi dut, elementu hori zerbait egin nahi dut array elementu bakoitzerako. Hariak eta ekitaldiak. Hauek ditugu, beraz, ez da estalita esplizituki C baina gogoratu honek Scratch from. Hainbat scripts izatea nozioa da. Hau da, gertaera bat igortzen nozioa ere. Batzuek ez erabili beren proiektuak emisio hasieran, guztiz cool baina horiek 2 handiagoa den arazo hau kudeatzeko modu ezberdinak izeneko concurrency hau da, nola ez programak exekutatu edo itxuraz aldi berean exekutatu? Hainbat ataza bestelako lanak ere exekutatzen ari da exekutatzen ari. Hau da, zure sistema eragilearen nola lan dirudi. Hori dela eta, nahiz eta, adibidez, Got dut nire nabigatzailea exekutatzen I Spotify eta berriz Abesti bat erreproduzitzeko. Hori ulertzeko kontzeptuzko gauza bat gehiago da. Begirada bat hartu nuke hari labur gehiago jakiteko horri buruz nahi izanez gero. Ikus dezagun, izan liteke uste dut hori arazo horietako bat. Berriz ere, hari eta gertaerak ez dira C estali egingo dugu zerbait, uste dut besterik ez delako nabarmen da Scratch baino gehiago zaila da. Ez zenuke buruz kezkatu ez dago, baina behin betiko kontzeptuak ulertzeko, ulertzen zer ari den gertatzen. Aurretik mugitzen dira, edozein 0 material Astea buruzko galderak? Denek nahiko ondo sentitu naiz? Understanding aldagai eta zer aldakorra da? On mugimenduan. Aste 1. Gauza pare bat, hemen ez ziren batez ere estalita quiz berrikuspena nahitaez, eta, gainera, gauza gehiago kontzeptuala pentsatu. Iturburu-kodea, konpiladoreak eta objektu-kodea lehen ideia hau da. Edozein? Basil. Da objektu-kode-I iturburu-kodea da zer jarri clang esan nahi, eta objektu-kodea da zer clang jartzen beraz, zure ordenagailuan programa irakur daiteke. Hain zuzen ere. Iturburu-kodea C kodea benetan idazten dituzun sortu da. Objektu kodea da zer lortuko duzu clang. 0 s eta 1s bitar formatu hori da. Orduan, zer gertatzen da Objektu fitxategiak sorta bat duzu, esaten ari zaren proiektu edo programa bat baino gehiago erabiltzen duten iturri kodea fitxategiak konpilatzeko, duen hitzarmen ematen dira. c fitxategi-luzapena. Horregatik caesar.c, vigenère.c dugu. Java programa izanez gero idatziz emateko luzapena. Java. Python programak luzapena. PY askotan. Behin baino gehiago. C fitxategiak baduzu, konpilatu duzu. Clang spits binary junk hori guztia. Ondoren delako Programa 1 bakarrik nahi duzu estekatzailearen objektu horiek guztiak elkarrekin fitxategiak duzu 1 fitxategi exekutagarri batean. Hau da, halaber, zer gertatzen den CS50 liburutegia erabili, adibidez. CS50 liburutegi bai dela. H goiburua fitxategia irakurri duzula, includecs50.h #. Eta gero ere bitar berezi bat da liburutegia dira konpilatu 0 s da eta 1s, eta hori l Ez, eta, beraz, joaten gara gure Espazioak itzuliz gero eta benetan azkar dugu zer gertatzen da hemen gure clang komando begiratzen dugu, zer lortu dugu, hau da gure iturburu-kodea fitxategia ez da hemen. Horiek konpilazio sorta bat dira. Eta gero, amaieran, hauen-l banderak esteka 2, liburutegi hauek bitar benetako fitxategiak, CS50 liburutegia eta gero math liburutegia. Fitxategiak 'helburua mota bakoitzean ulertzea konpilazio prozesuak nahi duzu zerbait gai izango da eman, gutxienez, goi-mailako ikuspegi orokorra-. Iturburu-kodea dator Object kodea ateratzen sartu. Objektu kodea fitxategiak elkarrekin lotzeko, eta eder bat, fitxategi exekutagarria lortzen duzu. Cool. Hau da, non akatsak puntu baino gehiago lor dezakezu konpilazio prozesuak. Hau da, non, adibidez, hartu bada lotzen dituen bandera hau da, CS50 Ez, eta alde duzu Espazioak edo zure kodea exekutatzen ari zaren, hau da, non lotzen fasean errore bat jasoko duzu, eta estekatzailearen, esan du, "Hey, funtzio GetString izeneko CS50 liburutegian. " "Esan zidan CS50 liburutegia da, eta ezin dut kodea aurkitu." Hori da, non lotu behar duzu, eta hori aparteko konpilatzailea errore bat konpilatzailea sintaxia eta stuff mota hori delako bila. Oso ona da zer ari den gertatzen jakin nahi. Beste gauza batzuk ezagutzen. Esan nahi behin betiko Jordan egindako typecasting laburra, begirada bat hartu nahi dut ulertzeko zer ints kanpaia azpian daude, zer karakteretan kanpaia azpian daude. Hitz ASCII gara, eta ASCII taula benetan dugu, zer da hori egiten emango digu kanpaia itxura pean nola ordenagailua benetan adierazten du kapital eta digitu 7 eta koma bat eta galdera-marka bat. Era berean, ordenagailu berezia modu ordezkatzen ditu kopurua 7 zenbaki oso bat. Koma mugikorreko zenbaki gisa kopurua 7 irudikatzeko modu berezi bat du, eta horiek oso ezberdinak dira. Typecasting da nola ordenagailua "Hey, bihurtu nahi dizut ko ordezkaritza ordezkaritza beste ". Zergatik ez begirada bat hartuko dugu. Liburutegiak labur eta Konpilatzaileak laburrak begirada bat ere hartu nahi dut. Konpilazio-prozesuari buruzko eztabaida horiek, liburutegi bat da, eta galdera horietako batzuk eskatu egin daitezke baino gehiago joan. Aste 1 material galderak? Ba al dago hemen gaiak Beraz, badirudi hori estali nahi duzun? Lehenago gai hauen bidez kolpe saiatzen ari naiz, beraz, ezin dugu erakusleak eta zer errekurtsio pixka bat. Pentsamenduak? Ezer estaltzeko? Denbora txokolate batzuk agian? Zaudete horren bidez lan egiten ari dira. Nire kafea sipping mantentzeko noa. Aste 2. Good dei, dei ona. Astean 2 apur bat gehiago hitz egiten dugu funtzioak. Lehen arazo multzo batzuk ez genuen benetan funtzio batere idatzi beste zein funtzio baino? [Student] Main. >> Main, zehazki. Eta horrela ikusi dugu hainbat jantziak nagusia janzten. Bat dago, hain zuzen, ez dute argumenturik hartzen du, eta esatea besterik ez dugu void parentesi artean, eta, ondoren, beste bat non nahi egiten dugu, komando lerroko argumentu, eta ikusi dugun bezala, non int argc eta katea argv array duzu edo gaur egun ditudan dugu benetan jasan katea dela char * char * argv eta, ondoren, parentesi artean gisa idazten hasteko goaz. Arazoa Set 3, guys funtzio sorta bat ikusi eta funtzio-sorta bat jarri du martxan, marraztu, begiratu, Scramble. Prototipo guztiak idatzi ziren zuretzat. Zer nahi nuen hemen buruz hitz egin, funtzio benetan azkar daudela 3 zatiak funtzio bat idazten duzun bakoitzean. Funtzioaren mota itzulera zehaztu behar duzu. Funtzioa izen bat zehaztu behar duzu, eta, gero, zehaztu behar duzu argumentu zerrenda edo parametro zerrenda. Adibidez, funtzio bat idazten badut osoko zenbakien sorta bat laburbildu eta, ondoren, niri itzuli eta nire itzulera mota izango litzateke batura Osoko zenbaki batzea nahi nuen eta, ondoren, batura itzultzeko bada? Gero, funtzioaren izena. I joan aurretik eta idazten berdea, zati hori itzultzeko mota da. Zati honek izena da. Eta, ondoren, parentesi artean non argumentuak ematen dut, sarritan argumentuak, batzuetan izeneko params parametro gisa laburtua. Eta baldin baduzu, zehaztu besterik ez duzu. Hainbat bada, bakoitzak bereizteko koma batekin. Eta argumentu bakoitzeko ematen 2 gauza diren-Kevin? [Kevin] mota eta, ondoren, izena eman behar duzu. Eta gero, izena, eta izena izena erabili behar zarela argumentu hori erreferentzia batura funtzioa barruan, ari zaren funtzioa gaur egun idatziz barruan. Ez daukazu adibide-, laburbildu egingo naiz badut, esan, zenbaki osoen-we'll array bat do int array, eta neure burua ematen dut kizkur tirantes batzuk han- orduan, array bat pasatzen dut batura funtzioa Argumentu-zerrendako lehen posizioa pasatzen dut. Baina I pasatzen array ez izen ARR dute. ARR nola argumentu hori aipatzen dut funtzioaren gorputza barruan izango da. Kontuan hartu behar dugu, beste gauza eta, hau da, pixka bat funtzio desberdinak dira, baina puntu garrantzitsu bat dela uste dut, C hau atsegin funtzio bat idazten ari naiz nola egin array honetan zenbat elementu ezagutzen dut? Trikimailu galdera bat da pixka bat. Hitz egin gara pixka bat azken astean atalean. Nola C array bat barruan dauden elementuen kopurua ezagutzen dut? Ba al dago modu bat? Bihurtzen da, ez dagoela ez jakin. Bereizita gainditu behar duzu. Ez dago trikimailu bat egiten baduzu funtzioa bera array izendatu baduzu, eta pila array bat ari zara lanean. Baina hori soilik funtzionatzen funtzio berbera baduzu. Behin array bat pasatzen duzu beste funtzio duzun edo deklaratu bada, array bat array zeure gainean jarri, erabili duzun malloc  eta stuff mota hori, orduan apustuak guztiak dira off. Ondoren, benetan gainditu inguruan argumentu berezi bat edo beste parametro diozu nola big array da. Kasu honetan, erabili koma-I'm sorry, off da pantaila nahi nuke hemen eta argumentu beste pasatu nuen  eta deitu Len int luzera. One gauza izan liteke galdetegia dizun izeneko zerbait bereziki funtzio bat idatzi edo ezartzeko. Ez badugu ez dizu prototipoa, beraz, hau dena hemen, nahastea, hau da osoa izeneko funtzioa adierazpena edo funtzioa prototipoa, hau lehen gauza bat da behera egitetik nahi duzun izango da ematen ez bada eta berehala galdetegiaren. Beste trikimailu ikasi dut da esan funtzio bat emango dizu prototipo bat egiten dugu, eta esaten dugu, "Hey, baina idazten duzun." Tirantes kizkur galdetegiaren duzula Inside konturatu ez dagoela itzulera mota bat bada eta nabarituko duzu itzultzeko mota void, horrek esan nahi du, funtzioa ez du ezer baino beste zerbait da, ondoren, gauza bat egin nahi behin betiko idatzi batzuk bueltan adierazpen sort funtzioaren amaieran. Return, eta kasu honetan, huts bat jarri dugu nahi dugu hutsik bete duelako. Baina hori lortzen du, modu egokian nola joan naiz arazo hau hurbiltzen dut pentsatzen? Eta zuk gogorarazten balio bat itzuli joan zaren funtzioaren deitzaileari. Bai. >> [Student] Ba al estilo aplikatuko kodea galdetegiaren idazten ari gara? Koska eta stuff mota hori, hala nola? >> [Student] Bai. Ez, ez da askoz ere. -Hau asko galdetegiaren argitzeko eguna dugu zerbait dela uste dut, baina normalean buruz kezkagarria # stuff mota hori barne hartzen eta, kanpo-mota da. [Student] behar duzu zure eskuz kodea behar duzu? Zure eskuz kodea komentatu behar duzu? Komentatuz beti da ona kreditu partziala buruz ari kezkatuta edo zure asmo komunikatzeko to kalifikatzailearen nahi duzun. Baina, berriro ere, I, egingo galdetegi bera eta quiz eguna argitzeko, baina ez dut uste behar dugu iruzkinak idazteko, ez. Normalean ez, baina behin betiko da gauza sort non zure asmo komunikatu dezakezu, "Hey, hau da, bertan egingo dut." Eta batzuetan, kreditu partziala laguntzeko. Cool. Basil. [Basil] Zer da, adibidez, geratuko int lang arteko aldea argumentuak edo parametro aldagai baten funtzioa barruan geratuko versus? Wow, kafea jaitsi ziren windpipe. [Basil] argumentuetan zein gauzak jarri nahi dugun bezala. Bai, hori oso galdera bat da. Nola argumentuak zer jarri nahi duzun aukeratu behar duzu barruan egin behar duzu funtzio gauzak versus? Kasu honetan, horietako biak barne argumentu gisa Oraindik zerbait duenak hori batura funtzioa erabiltzeko behar du gauza horiek zehaztu. Batura funtzioa, hitz atsegin dugu, ezagutzeko modu ez du nola big array da lortzen bere deitzailearen edo duenarentzat batura funtzioa erabiliz. Nola big array dela jakin ez ditu. Luzera hori pasatzen dugu hemen argumentu gisa arrazoia hori zerbait delako ari gara, funtsean, funtzio deitzailearen kontatzea, duenak batura funtzioa erabiltzeko, "Hey, ez bakarrik ez digute array bat duzu ints, izan ere digute nola big duzula array eman da. " [Basil] dutenek bi komando-lerroko argumentuak? Ez, horiek benetako argumentu zela funtzio pasatzeko. Orri berri bat egin me hemen. [Basil] izena Like pasatzeko litzateke [Nate H.] daukat int nagusia bada (void), eta nire itzulera 0 jarri behera hemen, behealdean noa, eta esan batura funtzioa deitu nahi dut. Esan nahi dut int x = sum (); Batura funtzioa erabiltzeko array bi pasatzeko laburbildu nahi dut behar dut eta array-luzera, eta, beraz, non dago ints array bat izan nuen suposatuz, esaten nuen int numbaz [] = 1, 2, 3, erabilera mota hacked sortu sintaxia bertan, ondoren, zer egin nahi dut batura pasatzeko nahi nuke bai numbaz eta 3 zenbakia batura funtzioa kontatzeko "Ongi da, hemen array laburbildu nahi dut". "Hemen, bere tamaina." Ez duela zentzurik? Ez duela erantzun zure galdera? Modu askotan paraleloan du nagusiak egiten ari gara komando-lerroko argumentuak behar dugu. Zesarrek zifratze bezalako programa bat, adibidez, behar komando-lerroko argumentuak ez litzateke, edozer egiteko gai izango da. Ez daki nola litzateke enkriptatzeko ez baduzu kontatu zer tekla erabili edo ez baduzu, ez dira katea enkriptatu nahi duzun. Sarrera galdetu, hau da, non lortu dugu hainbat mekanismo 2 sarrera hartuta, erabiltzaileak, informazioa hartu erabiltzaileari. Arazoa Ezarri 1 GetInt honetan, GetString, modu GetFloat ikusi genuen. galdetu sarrera, eta deitzen den sarrerako korrontean estandarra erabiliz. Apur bat desberdina da. Garai batean egin ditzakezun aurrean zerbait da programa, deitu da programa exekutatzen hasten zara. Komando-lerroko argumentuak zehazten dira programa lasterka hasten zara. Izan ditugu, horietako bi nahastuz. Argumentuak erabiltzen dugu funtzio bat, askoz ere komando lerro nagusiak argumentuak bezala. Esan behar duzun funtzioa deitu behar da zer behar du bere zereginak egiteko. Beste gauza ona da-eta itxura itxura duzu zure aisialdian utzi dut, eta estalitako esparrua nozioa quiz- eta tokiko aldagai global versus aldagai. Do arreta hori. Orain horretan ari gara beste stuff honetan, Astea 3 bilatzeko eta ordenatzeko buruz hitz egiten hasi ginen. Bilatu eta ordenatzeko, eta gutxienez CS50 oso sarrera bat informatika teoriko zati batzuk. Bilatzen arazoa, ordenatzeko arazoa handia, kanonikoa arazoak dira. Nola bilioika zenbaki osoen array bat kopuru jakin bat aurkitu duzu? Nola bereziki izen bat aurkituko duzu telefono-liburu baten barruan zure ordenagailu eramangarria gordetako? Eta horrela, run asymptotic aldiz ideia hau aurkeztu dugu benetan zenbatzea zenbat denbora, zer moduz arazo horiek dira, zenbat denbora konpondu dute. , Nire ustez, 2011-en galdetegi arazo bat uste dut merezimendu Oso azkar estaltzen, hau da, arazoa 12. O ez, Omega da. Hemen, denbora azkarrena posible run buruz ari gara hitz egiten jakin baten algoritmoa, eta, ondoren, ahalik eta exekuzio-denbora motelena. Omega hau eta O benetan lasterbideak. Lasterbideak notational Oraindik dute esaten nola azkar ahalik eta kasu horretan, gure algoritmoaren run, eta txarrena ahalik eta kasu horretan, nola motela da gure algoritmoa exekutatu? Egin dezagun horietako pare bat, eta horiek ere estalita notazioa asymptotic, gomendatzen dut laburrak. Jackson, oso lan ona egin zuten. Bitarra search, algoritmo bat izateaz gain bilaketa bitarra buruz hitz egiten dugu, eta horri buruz ohi dugu eztabaida bere O. handien arabera Zer da handi O? Zer da bilaketa bitarra run geldoena posible da? [Student] N ²? Itxi, antzekoa dela uste dut. Asko hori baino azkarragoa da. [Student] Binary? >> Bai, bilaketa bitarra. [Student] log n da. Saioa hasi n, beraz, saioa n esan nahi du? Halves da iterazio bakoitzerako. Zehazki, eta, beraz, ahalik eta geldoena kasu horretan, esan duzu horrela antolatu array bat bada milioi bat zenbaki osoen eta zenbaki bilatzen ari zaren Edo array edo oso elementu a array elementu oso lehen. Gogoratu, bilaketa algoritmo bitar elementu erdiko begira lan egiten du, eta ikusten duten partidaren bila ari zaren bada. Da, bada, orduan handia da, aurkitu duzu. Kasu horretan, ahalik eta ondoen, nola azkar binary bilaketa run? [Ikasleak] 1. 1., Etengabeko denbora da, O big 1. Bai. [Student] galdera bat daukat. N saioa diozu, 2 oinarria dagokionez esan nahi duzu, ezta? Bai, eta, beraz, beste gauza da. Log n esaten dugu, eta noiz izan zen batxilergoko dut uste dut Bere gain hartu dut beti log zela 10 oinarrian. Bai, beraz, bai, saioa normalean 2 oinarria da, zer erabili behar dugun. Berriz ere, atzera bilaketa bitarra joan zaren, bai baldin bada amaieran, oso elementu edo elementu oso hasiera-hasieratik, erdian hasten delako, eta, ondoren, baztertu adina erdia ez irizpideak betetzen bila ari zaren, eta joan hurrengo erdia eta hurrengo erdia eta hurrengo erdia. Dut, milioi osokoa array elementu handiena bada 1 milioi aldiz log halve noa azkenik, I probatzeko aurretik ikusi eta elementu bila nabil handiena edo array indizea altuena da, eta hori log hartuko n, 1 milioi aldiz saioa. Bubble sort. Do you guys burbuila sort algoritmoa gogoratzen? Kevin, ezin me burbuila sort algoritmoa zer gertatu laburpena azkar bat emango dizu? [Kevin] Funtsean doa zerrenda guztia bidez. Itxura lehen bi at. Lehenengoa ko bigarren trukeak da baino handiagoa bada. Gero, bigarren eta hirugarren, gauza bera, trukeak alderatzen ditu, hirugarren eta laugarren, modu guztiak behera. Bigger zenbakiak amaiera arte jarraituko du. Eta ondoren hainbat loops ordea Bukatutakoan. Zehazki, beraz, zer Kevin esan handiagoa zenbakiak ikusi ahal izango dugu burbuila array amaieran. Esate baterako, ez gurekin oinez axola, adibide honen bidez, hau da, gure array bada? [Kevin] 2 hartu duzu eta 3. 3 2 baino handiagoa da, eta, beraz horiek trukatu duzu. [Nate H.] Eskuin, eta, beraz, horiek trukatu ditugu, eta beraz, 2 lortuko dugu, 3, 6, 4, eta 9. [Kevin] Ondoren, 3 eta 6 alderatu. 3 6 baino txikiagoa da, eta, beraz, utzi duzu, eta 6 eta 4, eta horietako swap dituzu, 4 6 baino txikiagoa delako. [Nate H.] Eskuin, eta, beraz, 2, 3, 4, 6, 9 zait. [Kevin] Eta 9 6 baino handiagoa da, eta, beraz, utzi duzu. Eta atzera jo nahi duzuna bidez berriro. [Nate H.] Am Puntu honetan egin dut? >> [Kevin] N º Eta zergatik nago puntu honetan ez dut egin? Badirudi nire array da horrela antolatu bezala delako. Naiz bila. [Kevin] bidez berriro joan eta ziurtatu ez direla gehiago ez trukeak dezakezu, erabat gelditu baino lehen. Zehazki, eta, beraz, bidez jarraitzeko eta trukeak ez daudela ziurtatu behar duzu. Puntu honetan egin ahal izango dituzu. Benetan izan zen besterik ez zortea, esan nahi duzu, amaitu dugu 1 pass bidez izatea, eta horrela antolatu gaude. Baina kasu orokorra Horretarako benetan eta gehiagoko berriz hau egin nahi izan dugu. Eta, hain zuzen ere, hau ahalik eta ondoen kasuan adibide bat izan zen, arazoa bezala ikusi dugu. Ahalik eta ondoen kasuan n zela ikusi dugu. Array 1 denboran zehar joan ginen. Zer da algoritmoa honen kasuan txarrena posible da? [Kevin] N ². Eta zer da begirada hori ez? Zer izango litzateke array begirada bat bezala n ² denbora behar luke? [Kevin] [inaudible] ordenatuko da. Zehazki, eta, beraz, bada array 9, 7, 6, 5, 2 izan nuen, lehen 9 litzateke burbuila guztiak. 7, 6, 5, 2, 9 1 iterazio ondoren izan genuen. Ondoren, 7 horiekin burbuila sortu, 6, 5, 2, 7, 9, eta, beraz, eta abar. Array osoa n aldiz bidez joan ginen, eta benetan lor dezake hori baino apur bat gehiago zehatza behin mugitu dugu dugulako 9 modu guztiak bere azken lana ahalik eta sartu inoiz ez dugu ezagutzen dugu elementu aurka alderatu berriro. Behin 7 bubbling martxan dugu 7 9 aurretik behin geldituko gara ezagutzen dugun dugu dagoeneko geroztik aldean 9 da. Hori eginez gero smart modu batean, ez da benetan, I guess, hainbeste denbora. Ez duzu ahalik eta [inaudible] konbinazio guztiak alderatu egingo aldi bakoitzean bakarra iterazio bakoitzean bidez duzu. Baina, hala ere, goiko doazen buruz hitz dugu esan n ari zaren ² bilatzen konparaketak modu guztien bidez. Dezagun atzera jo, eta geroztik ari gara denbora pixka bat lortzeko hasi Esan behin betiko behar duzu taula hau gainerako zehar joan nahi nuke, bete dena. Adibide pentsatu. Adibide hormigoizko pentsatu. Hau da, benetan erabilgarria eta lagungarria egin. Marraztea. Hau da taula sort bidez joan ahala, informatikako Nork bihotza horiek ezagutzeko benetan hasi behar duzu. Galderak elkarrizketak mota horiek dira. Gauza mota hauek onak dira ezagutu dira, , eta ertzean Kasu horietan pentsatzen, benetan kalkulatzen nola pentsatu burbuila dela ordenatzeko txarrena posible array jakitea duten ordenatzeko alderantzizko ordenan. Erakusleak. Dezagun eztabaida pixka bat erakusle buruz. Azken minutu Hemen dugu I / O nahiko berria fitxategi batera zerbait ezagutzen dut. Erakusleak buruz hitz arrazoia erakusleak buruz hitz egin nahi dugu delako bat, C ari gara lanean Benetan gara modernoenak programazio-lengoaia oso maila altua aldean. Benetan memorian aldagaiak manipulatzeko gai gara, irudikatu non benetan ari dira gure RAM barruan kokatzen da. Behin joan duzun sistema eragilearen eskolak ikusiko duzu Hori da, berriro ere, abstrakzioa bat mota. Hori ez da kasua. Lortu dugu memoria birtuala den xehetasun horiek ezkutatzen gurekin. Baina orain bere gain hartzen dezakezu programa bat behar duzu, Adibidez, abiarazten duzunean, zure Zesarrek zifratze programa-arriskuen Piztu dut nire iPad benetan azkar- zure oso hasten programa, baldin baduzu, esan, 4 RAM gigabyte zure ordenagailu eramangarria, zatia hau ezarri barneratuko zara alde batera utzi, eta RAM hau deitu dugu. Eta 0 deitu dugu leku bat hasten da, eta leku bat eta ondorioz 4 gigabyte deituko dugun. Benetan ez dut idazten. Man, hacked da. Zure programa exekutatzen denean sistema eragilearen carves RAM, eta segmentu ezberdinak zehazten programa sartu bizi zati ezberdinetan Hemen Down Arlo honetan inoren lurralde baten antzeko zerbait da. Igo zara pixka bat urrunago hemen duzun got benetan lekuan zure programa bizitza kodea. Hori benetako bitar-kodea, fitxategi exekutagarri hori benetan lortzen memorian kargatu programa bat exekutatzen baduzu, bizi da, eta kode-segmentua da. Eta zure programa exekutatzen prozesadorearen kodea segmentu honen begiratzen out irudikatu hurrengo aginduarekin zer da? Exekutatu behar dut hurrengo kode lerro da? Ere datuak segmentu bat, eta hau da, non kate konstanteak horiek get gordetzen dira duzula erabiliz. Eta gero, urrunago sortu izeneko zeure leku hau. Han memoria sartzeko malloc erabiliz, eta, ondoren, oso programa goiko aldera pila, eta hori han dugu hasieratik gehienak jolasean. Hau ez da eskala edo ezer. Hau asko oso makina menpeko, sistemaren menpe jarduten du, baina hori nahiko gauzak nola sortu chunked get. Programa bat exekutatzen baduzu eta deitzen x-aldagai bat deklaratzeko Kutxa behera beheko beste marraztu dut, eta hau RAM izan baita. Eta begiratzen dut. RAM sekzio txiki bat besterik ez da adierazi zorrotzak marrak marrazteko dugu eta ez da goialdean dugu marraztu. Deklaratzeko I izeneko x aldagaia zenbaki oso bat izanez gero, orduan zer lortu actually I mapaketa nire programa sinboloa taula hori gordeta izena-x lotzen memoria eskualde honetan ditudan marraztuta hementxe barra bertikalak artean. X = 7 dioen nire programa daukat kode lerro bat bada prozesadorearen daki "Oh, ados, badakit x kokapena memorian bizi da." "Aurretik joan eta 7 bat idazteko bertan noa." Nola jakin zer kokapena memorian? Beno, hori konpilatzerakoan egin. Konpilatzailea hartzen du arreta esleitzean non aldagai bakoitza joan eta kartografia berezi bat sortuz edo, hobeto esanda, puntuak lotzen Sinbolo eta non egingo da, aldagai baten izena artean eta non memoria bizi da. Baina bihurtzen da benetan sartzeko dugun gure programa baita. Lortzen garrantzitsua da datu-egitura batzuk buruz hitz egiten hasten gara. geroago aurkeztu behar dugun kontzeptu bat da. Baina orain, zer jakin ahal izango duzu erakuslea sortu daiteke, kokaleku honetan, x. Esate baterako, erakusle aldagai bat sortu ahal izango dut. Erakuslearen aldagai bat sortzen dugu, star idazkera erabiliko dugu. Kasu honetan, hau dio int bat erakuslea bat sortu nahi dut. Mota bat da, beste edozein bezala. Ematen dugu y bezalako aldagai bat, eta, ondoren, berdintasuna, helbide, helbide bat ezarri dugu. Kasu honetan, y ezarri ahal izango dugu x seinalatu ampersand honekin x helbidea, egiten dugu, eta, ondoren, y ezarri du seinalatu. Zer da hau, funtsean, ez da gure RAM begiratuz gero beste aldagai bat sortzen du. Y deitu eta kodea lerro hau exekutatzen denean benetan erakuslea gezi bat normalean marrazteko dugu apur bat sortzeko, eta y x seinalatu ezartzen du. Bai. [Student] x erakuslea da dagoeneko bada, ez besterik ez duzu int * y = x ordez ampersand izatea? Bai. X erakuslea dagoeneko, eta ondoren 2 erakusleak bata bestearen berdinak ezarri ahal izango duzu, kasu horretan, ez luke y x seinalatu baina, edozein dela ere x seinalatuz seinalatu litzateke. Zoritxarrez, denbora gara. Zer esango nuke puntu honetan, offline honi buruz hitz egin ahal izango dugu, baina esan arazo honen bidez, lan # 14 hasteko nuke. Dagoeneko zuretzat bete pixka bat hemen ikusi ahal izango duzu. Ikusten duzu 2 erakusleak aldarrikatzen dugu, int * x * y, eta seinalatuz * aldagaia hurrengo ohar zerbait egin zen iaz. Bihurtzen da, hau da, aurten zer ari gara egiten antzekoa. Ez du axola non * idazten duzunean erakuslea deklaratzen ari zara. Baina idatzi dugu, * hurrengo mota horri esker, erakuslearen aldagai bat deklaratzen ari zaren oso argi duelako. Ikus 2 erakusleak geratuko que nos 2 kutxak dezakezu. Hemen x malloc berdintasuna ezarri dugu Zer da hau esaten da, alde batera zeure en memoria. Txiki hau kutxa hemen, zirkulu honetan, zeure gainean kokatzen da. X da seinalatuz. Kontuan izan, eta oraindik ez dago ezer seinalatuz. Lortzeko memoria-kopurua 42 x sartu gorde zer notazioa erabiliko genuke? [Student] * x = 42. Zehazki, * x = 42. Horrek esan nahi du, gezi jarraitu eta 42 bota bertan. Hemen y eta x y ezarri dugu dugu x seinalatuz. Berriz ere, hori besterik ez like zer Kevin esan non y x berdinak ezarri dugu. Y ez da x seinalatuz. Izan ere, zer da, x, baita seinalatuz seinalatuz. Eta gero, azkenik, azken koadroan daude 2 gauza posible izan dugu. * X = 13 esan izan dugu. Beste gauza da, esan-Alex izan dugu, ez badakizu zer egiten dugu hemen? Esan dezakegu * x = 13 or- [Student] int edozein dela ere esan izan duzu. [Nate H.] ziren bada bat int aldagai gisa aipatzen egin genezake. Ere esan izan dugu, * y = 13 ari dira, bai. Izan ere, leku berean seinalatuz, beraz, aldakorra bai erabili izan dugu iritsi. Bai. >> [Student] Zer izango litzateke, bada atsegin esatea besterik ez dugu, int x 13 itxura? Hori geratuko litzateke izeneko x aldagai berri bat, eta horrek ez luke funtzionatuko. Talka izan genuen deklaratu x erakuslea bat sortu hemen delako. [Student] besterik ez dugu izan bada, adierazpena berak zer egingo itxura zirkulua dagokionez? Izan dugu x = 13 gero, kutxa bat izan genuen, eta gezi bat izan beharrean Datozen koadroan marraztu genuke, besterik gabe, 13. [Student] koadroan. Ongi da. Eskerrik asko ikusteko, eta zorte ona Quiz 0. [CS50.TV]