[Powered by Google Translate] [Astea 4] [David J. Malan] [Harvardeko Unibertsitateko] [Hau da CS50.] [CS50.TV] Ondo da, hau CS50 da, eta hau da aste 4 Irteeran, eta honen arabera ordenatzeko algoritmo geldoena posible bat da. Zein izan zen besterik ez da han ikusi dugu? Burbuila sort zen, big O (n ^ 2) + batura, eta, hain zuzen ere, ez gara mundu honetan dauden bakarrak jakin dirudi zer da burbuila sort edo bere denborak. Izan ere, Eric Schmidt Google-ekin elkarrizketa bat izan zen ohia eta senatari Barack Obama Duela urte gutxi batzuk besterik ez. Orain, senatariak, hemen duzu Google eta lan-elkarrizketa bat lehendakaritza pentsatzea gustatzen zait. Orain, gogorra da presidente gisa lan bat aurkitzeko, eta rigors bidez joan zaren. Da zaila, halaber, Google-lan bat lortzeko. Galdera bat daukagu, eta gure hautagaien galderak ditugu, eta Larry Schwimmer da. You guys uste Txantxetan ari naiz? Hemen da. 32-bit milioi bat zenbaki osoen ordenatzeko modurik eraginkorrena Zer da? [Barreak] Beno- Sentitzen dut. >> Ez, ez, ez, ez. Bubble sort litzateke gaizki joan dela uste dut. Goazen, nork esan zion hau? Azken aste gogorarazten kodea atseden bat hartu dugu, gutxienez egun bat, eta batzuk maila altuagoa ideia gehiago, oro har, eta arazoa konpontzeko ardaztuta hasi zen bilatu eta ordenatzeko testuinguruan, eta zerbait ez dugu izen hori ez Slap azken astean sartu gara, notazioa, baina asymptotic Big O, Big Omega eta, batzuetan, Big Theta notazioa, eta horiek izan ziren, besterik gabe, modu algoritmoak iraupena deskribatzeko, zenbat denbora exekutatu algoritmo bat da. Eta gogoratzen denborak buruz hitz egin ahal izango duzu tamaina sarrera, deitu dugu, oro har, n, edozein arazoa izan daiteke, non n gelan pertsonen kopurua da, telefono-liburuaren orrialde kopurua, eta hasi ginen gauzak idazteko O bezala (n ^ 2) edo O (n) edo O (n log n), eta math, nahiz eta ez nahiko lan egin, beraz, ezin hobeto eta n izan zen ² - n / 2 edo horrelako zerbait ordez genuke bota ordena beheko termino batzuk, eta motibazioa ez da benetan nahi dugun ebaluatzeko modu objektiboa sort programen errendimendua edo algoritmoak errendimendua egunaren bukaeran, ezer egin du, esate baterako, zure ordenagailuaren abiadura gaur egun. Esate baterako, ezartzeko burbuila sort izanez gero, edo batu sort edo hautapena gaur egungo ordenagailuan ordenatu ezartzeko, 2 GHz ordenagailuan, eta exekutatu, eta segundo batzuk hartzen du, eta datorren urtean 3 GHz edo 4 GHz ordenagailua, eta agian gero erreklamatzeko, "Wow, nire algoritmoa birritan azkar gisa, "denean errealitatea hori da, jakina, ez da kasua. Hardwarea ahaztuak azkarragoa da, baina zure ordenagailuan ez du, eta, beraz, nahi dugu gauzak bezala urrun bota multiploak 2 edo 3 multiplo orduan deskribatzen nola azkarra edo motela algoritmo bat da eta benetan besterik ez fokua n edo horien faktore batzuk, botere batzuk kontratuan astetik mota kasuan bezala. Eta gogoratzen merge sort laguntza gai burbuila sort eta aukeraketa sort baino askoz hobeto egin ginen eta are txertatzeko sort. N log n behera lortu dugu, eta, berriro ere, gogoratzen log n, oro har, zerbait hazten aipatzen poliki-poliki, gero n, eta, beraz, n log n, beraz, orain arte ona izan zen izan zen n ² baino gutxiago delako. Baina n lortzeko saioa n merge sort zer izan zen ideia bat germen oinarrizko izan dugun leverage ere egiten dugu aste 0 back leveraged? Nolatan ordenatzeko arazoari aurre cleverly merge sort? Zer da gako insight izan, agian? Edonork guztiak. Ados, dezagun urrats bat atzera. Azaldu zure hitzetan sort batu. Nola egin du lan? Ados, aste 0 errenkadan itzuliko gara. Ados, bai. [Inaudible-ikaslea] Ongi, ona da, beraz, zenbaki-array 2 zatitan banatu dugu. Pieza horietako bakoitzean horrela antolatu dugu, eta gero batu ditugu, eta aurretik ikusi dugu ideia hori arazo bat handi hau hartu eta Tajadura sortu den arazo bat da hau handia edo handi honetan sartu. Gogoratu telefono book adibidez. Gogoratu aste ago algoritmoa auto-zenbaketa beraz batu sort pseudocode hau hemen laburbildu zen. Duzunean n elementuak eman, eta lehen behatu egiaztatu zen. N <2 ondoren ez bada ez du ezer guztiak n <2 ondoren n da, jakina, 0 edo 1 bada delako, eta, beraz, bai bada 0 edo 1 ez dago ezer ordenatzeko. Egin duzu. Zure zerrenda dagoeneko kenduz ordenatuko da. Baina bestela duzun got elementu 2 edo gehiago aurrera eta horiek zatitzeko 2 halves sartu, ezkerreko eta eskuineko. Sort halves horietako bakoitzean, eta ondoren ordenatuko halves batu. Baina hemen arazoa da, hasiera batean hori sentitzen ari gara punting bezala. Horretan definizio zirkular bat da eskatu Nik baduzu n elementu horiek ordenatzeko eta ni ari zaren kontatzea "All right, fina, n / 2 eta n duten / 2 elementu horiek ordenatzeko dugu" ondoren, nire galdera hurrengoa da izango "Ederren, nola n / 2 elementuak ordenatzeko duzu?" Hala ere, programa honen egitura, oinarri kasu honetan delako, eta, beraz, hitz egiten, Kasu berezi hau dioen n bueltan 2 bezalako balio finko batzuk > Sara, eskubidea. Kelly. >> Kelly eta? Willy. >> Willy, Sara, Kelly, eta Willy. Oraintxe bertan jaso dut norbaitek galdera zenbat pertsona dira fase honetan, eta ez dut ideia. Hau benetan zerrenda luzea da, eta, beraz, trikimailu hau egin nahi dut ordez. Pertsona me ondoan lana egiteko eskatu dut, eta behin zuen egiten da lan gehien egiten Lan gutxien posible egin dut eta bakarrik 1 gehitu edozein izanik ere bere erantzuna da, eta, beraz, hemen goaz. Dut galdetuko zenbat pertsona eszenatokian. Zenbat pertsona eszenatokian ezkerreko? Nire ezker? >> Ados, baina ez tranparik. Hori ona da, zuzena da, baina nahi dugu logika hori jarraitu nahi izanez gero Demagun, era berean, nahi duzun punt arazo hau ezkerreko beraz, ez erantzun baino zuzenean joan aurretik eta Buck pasatzeko. Oh, zenbat pertsona me ezkerreko dira? Zenbat pertsona ezkerretara daude? 1. [Barreak] Ongi da, eta, beraz, 0, eta, beraz, orain Willy egin du itzuliko da duzun zure erantzuna norabide honetan 0 esanez. Orain, zer egin behar? >> 1. Ongi da, beraz, 1 Oraindik duzu, beraz, esan duzu, "eskubidea guztiak, 1. Gehitzeko naiz joan edozein Willy-en kopuruan izan zen, beraz, 1 + 0. Zara orain 1 eskubidea erantzuna da, beraz, gaur egun- 1. >> Eta nirea 2 izango litzateke. Ona, eta, beraz, aurreko 1 erantzun hartzen ari zarela, egin nahi duzu lan gutxieneko zenbatekoa gehituz, +1 da. Orain 2, eta gero entregatu me balio? 3, esan nahi dut, barkatu, 2. Good. Beno, 0 izan dugu ezkerretara. Ondoren, 1 izan dugu, eta, ondoren, 2 gehitu dugu, eta, gaur egun, me ari zaren kopurua 2 gozamenerako, eta, beraz, naiz esaten ados, +1, 3. Dago, hain zuzen ere 3 pertsona me ondoan zutik etapa honetan, ondorioz, jakina, genezake egin hau oso linealki Oso nabarmenak moda asko, baina zer egin dugu benetan? 3 tamaina arazo bat hartu genuen hasieran. Hautsi dugu tamaina 2 arazo bat sartu, ondoren, tamaina 1 arazoa, eta, ondoren, behin betiko oinarri kasuan izan zen benetan, oh, ez inork ez dago, puntua Willy itzuli eraginkortasunez hard-kodetuak erantzun pare bat aldiz, eta bigarrena izan zen, ondoren bubbled, bubbled, bubbled sortu eta, ondoren, hau 1 gehiago gehituz inplementatu dugu errekurtsio oinarrizko ideia hau. Orain, baina kasu honetan ez da benetan arazo bat konpontzen gehiago eraginkortasunez ondoren ikusi dugu, beraz, oso urrun. Baina algoritmo etapa egin dugu horrela, orain arte pentsatzen. 8 paper-pieza Edukien gainean izan genuen, video Sean zen kopurua 7 bila, eta zer egin ez benetan? Beno, ez zuen egin arrail edozein motatako eta konkistatzeko. Ez zuen egin errekurtsio edozein motatako. Deigarria egin zuen algoritmo lineal hau. Baina etapa horrela antolatu zenbakiak ideia sartu dugu bizi azken astean ondoren instinto hau erditik joan behar izan genuen, eta amaitzen da tamaina tamaina 4 4 edo zerrenda beste zerrenda txikiagoa izan genuen, zehatza eta, ondoren, arazo bera izan genuen, eta, beraz, behin eta berriz errepikatzen dugu, behin eta berriz, behin eta berriz errepikatzen. Beste era batera esanda, recursed. Eskerrik asko gure 3 boluntario hemen gurekin errekurtsio erakutsiz. Ikus dezagun ezin dugu egin orain apur bat gehiago hormigoi, arazo bat berriro egin genezake nahiko erraz konpontzeko, baina oinarrizko ideia hori ezarrita harri hurrats gisa erabiliko dugu. Nahi dut zenbaki-sorta bat summation konputatu nahi izanez gero, Adibidez, 3 zenbakia pasatzen bada, Sigma 3 balioa eman nahi dut beraz, batura 3 + 2 + 1 + 0. Erantzun 6 itzuli nahi dut, beraz, hau sigma funtzioa, summation funtzio hau gauzatzeko dugu eta, berriro ere, sarrera hartzen du, eta, ondoren, summation itzultzen zenbaki hori modu behera 0. Horretarako izan dugu nahiko besterik gabe, ezta? Begizta batean egitura mota batzuk egin izan dugu, beraz aurrera nau eta hau hasi. Artean, besteak beste stdio.h. Neure burua me nagusitan hemen lan egiteko. Dezagun, gorde hau sigma.c gisa. Orduan hemen joan naiz joan, eta int n bat deklaratzen dut, eta honako hauek egin ahal izateko, erabiltzaileak ez du kooperatu noa. Erabiltzaileak ez du zenbaki positibo bat eman dit utzi aurrera eta gonbita n = GetInt eta utzi eman dit zer egin argibideak batzuk, beraz, printf ("zenbaki oso positiboak mesedez"). Just zerbait nahiko simple hau atsegin dute denbora line 14 hit dugu zenbaki oso positibo bat ustez n. Orain egin dezagun zerbait. Dezagun aurrera eta summation kalkulatzeko, beraz, int batura = sigma (n). Sigma besterik ez da summation, beraz, besterik ez dut idatzi modu fancier. Deitu besterik ez dugu han sigma da. Batura da, eta gaur egun, emaitza inprimatu dut joan, printf ("batura% d \ n", batura). Eta gero, 0-ra itzuliko dut neurri ona. Programa behar hori guztia egin dugu interesgarria zatian izan ezik, hau da, benetan ezartzeko sigma funtzioa. Behera joan me hemen beheraino, eta utzi Funtzio sigma deklaratzeko me. Handia lortu aldagai mota osokoa, eta zer datu-mota ez sigma from zentzuzkoa itzuli nahi dut? Int, nire itxaropenak dator line 15 nahi dudalako. Hemen utzi aurrera, eta hau ezartzeko modu nahiko sinplea da. Dezagun aurrera eta esan int batura = 0, eta, gaur egun, begizta txiki bat hemen joan noa den honen antzeko zerbait esan nahi du, for (int i = 0; I <= kopurua; i + +) batura + = i. Eta gero, batura itzuli egingo naiz. Ezarri nuen modu edozein zenbaki. Erabili nuen bitartean begizta bat. Saltatu nuen batura aldagaia erabiltzen dut nahi izanez gero, baina azken finean, funtzio bat besterik ez dugu egin ez badut goof adierazten batura 0 da. Ondoren iterates 0-tik gora zenbaki bidez, eta iterazio bakoitzean uneko balioa hori gehitzen da batura, eta ondoren batura itzultzen du. Orain, ez optimizazioa apur bat hemen. Hau da, ziur aski urrats bat alferrik galtzen da, baina hala izan da. Hori da orain ongi. Gara, gutxienez, sakon eta 0 modu guztiak joan gora. Ez da oso gogorra eta nahiko erraza da, baina bihurtzen da sigma funtzioa duten aukera bera dugu egin dugun bezala, hemen eszenatokian. Etapa On zenbatuko dugu zenbat pertsona izan ziren ondoan me, baizik eta nahi izan dugu, 3 + 2 + 1 zenbatu nahi izanez gero 0 behera, era berean, ezin izan dugu punt funtzio egingo duten I ordez recursive bezala deskribatzeko. Hemen dezagun behatu ez azkar bat egiaztatu eta ziurtatu ez nuen goof. Gutxienez programa honetan gauza bat oker I egin ez da ezagutzen dut. Noiz sartu hit I am me at yelling edozein motatako lortu nahi dut? Zer egingo buruz behar yelled dut? Bai, prototipoa ahaztu dut, deitu sigma 15 on line funtzio bat erabiltzen dut, beraz, baina ez line 22 arte deklaratu eta, beraz, onena modu proaktiboan sortu dut hemen eta prototipo bat aldarrikatu, eta int sigma (int zenbakia) esan dut, eta hori da. Beheko aldean ezarri da. Edo hau konpontzeko beste modu bat izan nuen, Funtzio eraman izan dut sortu, hau da, ez da txarra, baina, gutxienez, zure programak hasten luze lortzeko, Egia, Nik uste dut beti nagusia izatea goialdean balio batzuk beraz, fitxategi irakurlea ireki daiteke eta, ondoren, berehala ikusiko programa horren bidez bilatzeko beharrik gabe egiten duten funtzio nagusia bila. Goazen behera nire terminal leihoa Hemen, sigma egin sigma egiten saiatu, eta dena izorratu nuen hemen ere. Funtzioa GetInt adierazpen inplizitua ahaztu dut zer gehiago egin esan nahi du? [Inaudible-ikaslea] Ona, beraz, itxuraz, eta, beraz, komun akats bat jarri hau hemen utzi, cs50.h, eta, orain, goazen atzera nire terminal leihoa. Pantaila garbitu dut, eta berrabiarazi egin sigma dut. Konpilatu dirudi. Dezagun exekutatu me now sigma. 3 zenbakia idatzi dut, eta 6 lortu nuen, beraz, ez da txeke bat zorrotza, baina, gutxienez, hasiera batean lan egiten ari dela dirudi, baina gaur egun dezagun rip gain, dezagun benetan errekurtsio ideia leverage, berriz, testuinguruan oso erraza da, beraz, aste batzuk denbora fancier datu egiturak aztertuz hasten gara array baino toolkit, beste tresna dugu eta horrek manipulatzeko datuen egitura horiek ikusi dugu. Etorriko ikuspegia, loop-oinarritutako hurbilketa bat da. Let me ordez orain hau. Let me ordez esan zenbakiaren summation : 0 behera benetan gauza bera zenbakia + sigma (zenbakia - 1). Beste era batera esanda, etapa on bezala punted me ondoan bakoitzaren I, eta aldi berean mantendu dute azkenik dugu bottomed arte Willy at punting, 0 bezala erantzun gogor kodetuak itzuli zuten. Hemen ari gara gaur egun, era berean, sigma punting Halaber, funtzio bera izan zen jatorriz izenekoa,, baina funtsezko ezagutzeko hemen ari garen ez sigma berdinean deituz. Ez ari gara n pasatzerakoan. Kopurua argi eta garbi ari gara pasatzen - 1, beraz, apur bat txikiagoak arazoa, apur bat txikiagoak arazoa. Zoritxarrez, hori ez da oraindik nahiko irtenbide bat, eta konpondu aurretik zer jauzi baliteke out bistako batzuk utzi aurretik joan eta berrabiarazi egin. Ongi konpilatu dirudi. Sigma berrabiarazi me 6. Whoops, utzi sigma berrabiarazi me 6. Ikusi dugu, aurretik denbora ustekabean a izan arren ere. Zergatik segmentaziuo hutsegitea críptica hau lortu dut? Bai. [Inaudible-ikaslea] Base kasuan ez da, eta, zehazki, zer ziurrenik gertatu da? Zer portaera sintoma bat da? Esan apur bat altuagoa. [Inaudible-ikaslea] Begizta infinitu eraginkortasunez eta loops infinitua arazoa da errekurtsio inplikatzen dute, kasu honetan, funtzio bat bera deituz, bakoitzak funtzio bat deitu zer gertatzen da? Beno, uste atzera nola ordenagailu batean memoria ezarri dugu. Ez dagoela, pila, behealdean izeneko zatia memoria esan dugu, eta bakoitzak funtzio bat deitu apur bat gehiago memoria lortzen jarri funtzioa aldagai lokalak edo parametroak duten deiturikoak pila honetan, hala badagokio sigma sigma deiak dei sigma sigma deiak  deiak sigma non istorioa hau? Beno, azkenean overruns guztizko zenbatekoa memoria duzula zure ordenagailuan eskuragarri. Ari ustezko lo barruan segmentu inbaditu, segmentaziuo hutsegitea hau, core isuritako eta zer core iraultzeko esan nahi dut orain dela core izeneko fitxategi bat fitxategi bat da zeroen eta bai duten benetan etorkizunean diagnostikoan erabilgarria izango da. Begi-bistakoa da ez bada non zure bug benetan egin dezakezu auzitegiko azterketa apur bat, eta, beraz, hitz egiten, core dump fitxategia hau, eta, berriro ere, besterik ez da zeroen eta bai sorta osoa funtsean zure programaren memoria egoera adierazten une kraskatu modu honetan. Fix Hemen da ezin dugula besterik ez blindly itzultzeko sigma, kopurua + apur bat txikiagoak arazoa sigma. Base kasuan nolabaiteko izan behar dugu hemen, eta zer egin behar oinarriaren kasuan seguruenik izango ote da? [Inaudible-ikaslea] Ongi da, eta, beraz, zenbaki positiboa da benetan behar dugu itzuli honetan, edo beste modu bat jarri, kopurua bada, esan, <= 0 badakizu zer, aurrera eta 0-ra itzuliko naiz, askoz ere atsegin Willy egin, eta bestela, aurretik joan naiz joan eta itzuli honetan, beraz, ez da askoz laburragoa etorriko bertsioa harrotua dugun lehen erabiliz loop bat baino, baina ez da dotorezia mota da hau. Zenbaki batzuk itzuli eta math hau guztia eszenikoen ordez eta gauzak gehituz aldagai tokiko ordez, esaten ari zaren "Ados, hau da super erraza arazo bat bada, zenbakia <0 bezala, let me berehala itzultzeko 0. " Ez dugu onartzen negatiboa zenbakiak sartuko hain gogorra kodea 0 balioa joan naiz. Baina, bestela, summing ideia hau martxan jarri ahal izateko zenbaki horiek guztiak elkarrekin eraginkortasunez dezakezu txiki ziztadak hartu arazoa da, askoz ere atsegin Hemen genuen agertokian, ondoren, punt arazoa gainerako pertsona hurrengo baina kasu honetan hurrengo pertsona bakarrik da. Berdinean izeneko funtzio bat da. Just aldi bakoitzean gainditu txikiagoak eta txikiagoak eta arazo bat txikiagoa da, eta nahiz eta ez nahiko formalizatu kodea gauzak dugu hemen hau da, zehazki zer izan zen telefonoaren liburua aste 0. Hau da, zehazki zer zen joan aste iraganeko Sean eta gure zenbakiak bilatzen manifestazioak. Arazo bat da, hartu eta zatituz behin eta berriro. Beste era batera esanda, ez dago modu bat da, gaur egun itzultzeko mundu honetan benetako eraikuntza, goi-mailako eraikuntza zatitzea eta konkistatzeko, eta gauza behin eta berriro kodea, eta, beraz, ikusi ahal izango dugu berriro, denboran zehar zerbait da. Orain, bat alde batera utzita, Oraindik errekurtsio berri bada, gutxienez, behar duzu ulertzen gaur egun zergatik hau dibertigarria da. Google.com joan noa, eta zenbait aholku eta trikimailuak errekurtsio bilatzeko noa, sartu. Esan pertsona duzu ondoan ziren ez bada oraintxe barre. Ba al errekurtsio esan nahi al duzu? Esan nahi zenuen-ah, ez gara. Ongi da, orain dela gainerako guztientzat. Un poco de Pazko arrautza Txertatutako nonbait dago Google. Bat alde batera utzita, estekak ikastaroaren web orrian jarri dugu gaur egun Ordenatzeko hainbat algoritmo sareta hau da, horietako batzuk, astetik begiratu ditugu, baina zer nice bistaratze honi buruz saiatu zure kontuan itzulbiratu, algoritmoak zerikusia inguruan hainbat gauza ezagutu ahal izango dituzu oso erraz sarrera-mota ezberdinak hasteko. Sarrerek trukatuta, batez ere input ordenatuta, input ausazko eta abar. Da, saiatu berriz, bereizteko gauza horiek zure kontuan konturatzen ikastaroa Hitzaldiak orrian web orrian URL honetan horietako batzuetan zehar arrazoia lagun dezake. Gaur egun, azkenik, lortu dugu arazo hau konpondu ahal izateko pixka bat atzera, izan zen swap funtzioa besterik ez du funtzionatzen. eta zer funtzio swap honekin funtsezko arazoa zen, helburua izan zen, berriz, balio bat trukatzeko hemen eta hemen hala nola, hori gertatzen da? Hau ez da ondo lan egitea. Zergatik? Bai. [Inaudible-ikaslea] Zehazki, bugginess honen azalpen besterik ez zen C funtzioak deitzen duzulako eta funtzioak horiek argumenturik hartzen, a eta b hemen bezala, edozein izanda ere balio du funtzio hori ari zaren eskaintzen kopiak pasatzen ari zaren. Ez zara jatorrizko balioak bere burua, beraz, hau ikusi genuen buggyc testuinguruan, buggy3.c, pixka bat begiratu honen antzeko zerbait. Gogoratu izan ditugu, x eta y 1 eta 2 hasieratu, hurrenez hurren. Inprimatutako dugu zer izan ziren. Erreklamatu ondoren nintzen ditut aldaketa x, y swap telefonora deituz. Baina arazoa zen aldaketa hori lan egin zuen, swap-esparrua, baina soilik funtzionatzen bera. Bezain laster line 40 truka balio horiek hit ziren bota, eta, beraz, ez da ezer jatorrizko funtzio nagusia izan zen benetan aldatu guztiak hala badagokio uste baduzu, orduan zer itxura gure memoria dagokionez taula ezkerreko eskuko hau adierazten du-bada eta nire onena egingo dut guztiontzat ikus-taula ezkerreko eskuko hau adierazten du, esan, zure RAM, eta pila hazten da modu honetan, eta nagusiak bezalako funtzio bat deitu dugu, eta nagusia 2 aldagai lokalak, x eta y, dezagun deskribatzeko x bai hemen, eta utzi hauek deskribatzeko y hemen, dezagun balioak 1 eta 2 jarri, hau hemen nagusia da, beraz, eta nagusiak swap funtzioa deiak sistema eragilearen swap funtzioa ematen bere memoria swath propioa pilaketan bere pilaketan markoa propioa, eta, beraz, hitz egiten. Era berean, 32 ints horiek bit esleitzen. Horietako bat, eta b deitu gertatzen da, baina hori erabat arbitrarioa da. Deitu daiteke edozein izanda ere nahi, baina zer gertatzen da nagusiak deiak swap hau 1 hartzen du, kopia bat han jartzen, kopia bat jartzen du. 1 swap tokiko beste aldagaia da, baina, deitu zer? >> Tmp. Aurkitu, eta, beraz, neure burua ematen dit beste 32 bit hemen utzi, eta zer ez egin funtzio honetan I? Int tmp lortzen, eta, beraz, du 1 esan dut, beraz, hau egin nuen adibide honetan azken aldiz jokatu dugu. Ondoren lortzen b, beraz, b 2, eta, beraz, gaur egun hau bihurtzen da: 2, eta gaur egun b lortzen temp, beraz, temp 1 beraz, gaur egun b bihurtzen da. Hori handia da. Lan egin. Baina orduan bezain laster, funtzioak swap memoria eraginkortasunez desagertzen beraz, berrerabili daiteke etorkizunean beste funtzio batzuk, eta nagusietako bat da, jakina, erabat aldatu gabe. Funtsean, arazo hau konpontzeko modu bat behar dugu, eta, azkenik, gaur egun hau egiten Horren bidez, modu bat izan dugu zerbait erakuslea izeneko aurkeztu ahal izango dugu. Bihurtzen da, arazo hau konpondu ahal izango dugu x eta y kopiak ez pasa baina zer pasatu ordez, ez, uste duzu swap funtzioa? Bai, helbide buruzko zer? Ez dugu benetan helbide buruzko xehetasun askoz ere hitz egin zuen, baina arbel hau nire ordenagailuko memorian adierazten badu zalantzarik gabe izan dugu bytes nire RAM zenbakikuntza eta esan byte # 1 da, hau da, byte # 2 # 3 byte byte # 4 byte # ... 2 milioi daukat 2 RAM gigabyte bada, beraz, zalantzarik gabe izan dugu batzuk zenbakitze arbitrarioak eskema nire ordenagailuaren memoria banakako bytes guztiak. Zer ordez bada swap deitzen I x eta y kopiak gainditu baino zergatik ez x helbidea hemen ordez igaroko da, y helbidea hemen, funtsean posta helbidea Ondoren, x eta y swap delako, baina informatuta x eta y memoria helbidea, ondoren, trukatu, entrenatu dugu berarekin pixka bat, potentzialki helbidea gidatuko izan zuen, eta, beraz, hitz egiten, x, eta bertan kopurua aldatzeko, eta gero y helbidea gidatu zenbakia aldatu bitartean, nahiz eta ez benetan balio horiek berak kopiak, beraz, nahiz eta hitz honi buruz nagusia memoria bezala eta hau ari swap memoria indartsu eta C zati arriskutsua funtzio edozein memoria ukitu edozein ordenagailuan, eta hau indartsua da oso fancy gauza egin dezakezu ordenagailua C. programak Arriskutsua da dezakezu ere hondatzeko oso erraz. Izan ere, egun hauetan programetan modu ohikoena bat ustiatu ahal izateko oraindik programatzailea ez egiteko konturatzen zuen datuak bat egitea ahalbidetzen helburua ez zen memoria kokalekua idatzi behar da. Esate baterako, bere 10. Tamaina array bat adierazten baina gero, ustekabean array hori memoria 11 byte jarri saiatzen da, eta memoria zati ez diren baliozko ukitu hasten zara. Just contextual honetan, batzuk baliteke jakin software askotan galdetzen serie zenbakiak, edo izena emateko gakoak, Photoshop eta Word eta programa hau atsegin dute. Existitzen arrailak, batzuk bezala ezagutzen, online programa txiki bat exekutatu ahal izango duzu, eta voila, serie-zenbakia eskaera gehiago ez. Nola lan? Kasu askotan, gauza horiek, besterik gabe, ordenagailu aurkitzeko ordenagailuaren zeroen eta bai testu-segmentu non funtzio hori non serie-zenbakia eskatu da, eta espazio hori guztia "" gainidatziko duzu, edo programa exekutatzen ari den bitartean irudikatu dezakezu gakoa da benetan non gordetzen zerbait izeneko araztaileak erabiliz, eta software modu crack dezakezu. Hau ez da, hori da gure helburua esan hurrengo bi egun, baina oso mundu real-Adar askoko du. Hori gertatzen da software lapurreta inplikatzeko, baina ez da makina osoa konpromisoa ere. Izan ere, webgune egun horiek ustiatzen eta arriskutsua eta datuak leaked eta pasahitzak lapurtzen dira hau askotan oso bat memoria kudeaketa txarra dagokio, edo, datu-base kasuan, porrota aurrea adversarial sarrera, horrela gehiago datozen asteetan, baina orain kalteak sort preview Sneak ahal izango duzu ez da gauzak nola kanpaia azpian lan ulertzeko. Dezagun zergatik hori hautsi ulertzeko tresna bat duten, gero eta gehiago erabilgarria izango da gure programak lortu konplexuagoak. Horrela urrun denean zure programaren akats bat izan duzun nola joan arazteko buruzko duzu? Zein da zure teknika izan dira, beraz, orain arte, zure TF ez irakasten edo, besterik gabe, autodidakta? [Student] printf. Printf, eta, beraz, printf du ziurrenik zure laguna izan duten ikusi nahi izanez gero zer gertatzen da zure programa barruan jarri besterik ez duzu printf hemen, printf hemen, printf hemen. Ondoren, exekutatu, eta stuff sorta pantailan oso bat lortuko duzu ondoren ondorioztatzea zer da benetan okerra zure programa erabil dezakezu. Printf joera oso indartsua gauza bat izango da, baina oso eskuzko prozesu bat da. Printf bat jarri hemen duzu, printf hemen eta jartzen baduzu begizta baten barruan 100 lerro dezakezu irteera orduan duzu sift bidez. Ez da programa arazteko user-friendly edo oso mekanismo interaktiboa, baina zorionez ez badago alternatiba. Programa bat, esate baterako, deitu GDB, GNU Debugger, nola erabiltzen duzun arcane txiki bat da. Txiki konplexu bat da, baina Egia, gauza horiek non aste honetan jarri da, eta hurrengo GDB antzeko zerbait ulertzeko aparteko ordu gordetzeko aukera izango da, ziurrenik ordu hamarnaka epe luzera, horrela, utzi dizu me gauza hau nola funtzionatzen teaser bat. Nire terminal-leiho batean nago. Dezagun aurrera eta programa hau, buggy3 konpilatu. Dagoeneko da data. Dezagun exekutatu niri bezala, berriz, atzera egin dugu, eta, hain zuzen ere, hautsi. Baina zergatik da hau? Agian dena izorratu nuen swap funtzioa. Agian eta b da. Ez dut nahiko mugitu inguruan behar bezala. Dezagun aurrera eta hau egin. Baino aski da buggy3 utzi ordez exekutatu me programa GDB, eta kontatzeko buggy3 exekutatu noa, eta besteak beste, komando-lerroko argumentu, Tui noa, eta hau jarri dugu zehaztapenak etorkizuneko arazoak gogorarazteko. Eta orain, zuri-beltza eta interfaze hau popped sortu hori, berriz, pixka bat jasanezinak lehen ez da hori guztia delako Hemen bermerik behera informazioa, baina, gutxienez, zerbait ezagutzen. Leihoaren goiko, nire benetako kodea da, eta joan I bada hemen utzi joan nire fitxategia goiko Oso me, eta, hain zuzen ere, ez da buggy3.c, eta oharra leiho honen behealdeko GDB galdera hau egin behar dut. Hau ez da nire normal John Harvard gonbitean bezala. Gonbitean bat GDB kontrolatzeko me ahal izateko. GDB araztailea da. Araztaileak ibiltzeko aukera ematen dizu programa bat da zure programa-line exekuzioa lerroz lerro, Bidean ezer nahi programa egiten batera, are funtzio telefonora deituz, edo bilatzen, are garrantzitsuagoa dena, hainbat aldagai balio. Dezagun aurrera, eta hori egin. Aurretik joan eta GDB en gonbitean run idatzi dut, beraz, idatzi dut exekutatu pantaila behealdeko ezkerreko nabarituko, eta sakatu dut sartu, eta zer egin horretarako? Ran literalki nire programa, baina ez nuen benetan ikusi hemen askoz joan dut ez delako benetan esan araztailea bereziki denbora une batean gelditu. Just run idazten programa exekutatzen da. Benetan, ez dut ezer ikusi. Ezin dut manipulatzeko. Horren ordez utzi Horretarako me. At GDB galdera hau utzi ordez idatzi me emateko, sartu. Hori ez da zer idatzi esan nahi dut. Dezagun ordez idatzi break nagusia. Beste era batera esanda, zerbait izeneko etendura bat ezarri nahi dut, egokiekin izendatzen den edo apurtu delako eteteko leku jakin hori zure programaren exekuzioa. Main nire funtzioaren izena da. Oharra GDB pretty smart da. Hurrena nagusia gertatzen den gutxi gorabehera hasteko line 18 buggy3.c, eta gero konturatu hemen goiko ezkerreko b + line 18 hurrengo. Hori me gogoraraziz etendura ezarri dudan line 18. Oraingo honetan run idatzi dut, nire programa exekutatzen noa arte etendura hori hits, beraz, programa me eteteko line 18. Hemen, gara exekutatu. Ez da ezer gertatu agertzen dute, baina beheko oharra utzi hasierako programa, buggy3, 1 etendura nagusian buggy3.c line 18. Zer egin dezaket orain? Iragarki hasteko inprimatu bezalako gauzak idazten dut, ez printf, inprimatu x, eta gaur egun hori da arraroa. $ 1 besterik ez da jakin-mina, ikusten dugu aldi bakoitzean zerbait inprimatu berri bat $ balioa lortuko duzu. Hori da, beraz, atzera duzula erreferentzia badaezpada aurreko balioak, baina orain zer inprimatu me kontatzea da x balioa istorioa Puntu honetan itxuraz 134514032. Zer? Non zuen ere etorri? [Inaudible-ikaslea] Izan ere, hau da, zer da zabor balio bat deitu dugu, eta ez dugu honi buruz hitz egin gabe, baina arrazoia hasieratu duzula aldagai da, jakina, beraz, nahi duzu horietako batzuk balio dute. Baina harrapatzen duen aldagai gogoratzen deklaratu ahal izango da nuen, duela une bat bezala nire Adibidez sigma benetan balio bat emanez gabe. Gogoratu zer egin nuen hemen sigma. N deklaratu nuen, baina zer balio zuen ematen dut? None, bazekien dudalako datozen lerro GetInt zaindu n barruan balio bat jarriz arazoa. Baina istorioa line 11 puntu honetan eta lerro 12 eta 13 lerro eta 14 lerro duten hainbat lerro zehar n balioa zer da? C ez besterik ez duzu ez dakit. Da, oro har, zenbait zabor balioa, erabat ausazko zenbaki batzuk utzi baino gehiago funtsean, batzuk aurreko funtzioa ondoren exekutatu da, beraz, zure programa exekutatzen gogora ekarri funtzioa funtzioa, funtzio, funtzio lortzen. Fotograma horiek guztiak jarri get memoria, eta, ondoren, duten funtzio bueltan, eta bezala suggested Eraser, azkenean, beren memoria berrerabili dut. Beno, eta, beraz, besterik ez da x aldagaia hori gertatzen da programa honetan badirudi jasotako 134514032 atsegin dute balio zabor batzuk batzuk aurreko funtzioa, ez dut idatzi. Zerbait eraginkortasunez dator sistema eragilea izan daiteke, kanpaia azpian funtzio batzuk. Ados, fina, baina utzi gaur egun hurrengo lerroan aurrera. Idatzi dut nire GDB gonbitean "next" bada, eta sartu hit I, nabarituko dela mugitzen da nabarmenduz line 19, baina logikoa inplikazioa da 18 lerro horretan gaur egun amaitu exekutatzean, hala bada berriz idatzi dut "print x" Behar dut orain, 1, eta, hain zuzen ere, egin dut. Berriz ere, $ stuff GDB duzu gogoraraziz modu bat da grabatuak historia duzula egin. Orain aurrera eta inprimatu y me utzi, eta, hain zuzen ere, y balioa batzuk crazy da baita, baina big aurre ez line 19 buruz esleitzeko Oraindik dugulako 2 balioa, eta, beraz, "next" idatzi me berriro. Eta orain printf line on Oraindik dugu. Inprimatu x do me. Let inprimatu y do me. Egia, hau inprimatzeko apur bat nekatuta nago. Idatzi ordez me "display x" eta "display y," eta une bakoitzean etorkizunean komando bat idatzi nuen I gogorazi nahi zaie, x eta y, zer da zer izango x eta y, x eta y. I ere, bat alde batera utzita, mota "info locals." Info komando bat berezia da. Locals esan nahi du me erakusten du aldagai lokalak. Badaezpada, edo ahaztu dut zoro bat, funtzio korapilatsu I edo beste norbaitek idatzi info locals esango dizu zer dira, tokiko funtzio honen barruan aldagai tokiko guztiak baliteke duzula nahi duzun ikutu zaintzeko. Orain, printf exekutatu behar da, eta, beraz, utzi Animatu eta idatzi me "hurrengo". Ingurumena honetan Oraindik ez delako ari gara benetan ikusten exekutatu behera hemen, baina apur bat Kudeatutako lortzean hemen da nabarituko. Baina konturatu pantaila gainidazteko da bertan, beraz, ez da perfektua programa hemen, baina ados naiz ni beti delako Poke inguruan inprimatu nahi badut. Dezagun hurrengo berriro idatzi, eta, orain, hemen parte interesgarria da. Y 2 istorioa Puntu honetan da, eta x 1, iradoki hemen, eta, berriro ere, arrazoia hau da automatikoki bistaratzeko erabiltzen dut komandoa duelako display x eta display y, beraz, une idatzi dut hurrengo x eta y teoria truka izan behar du. Orain, badakigu hori ez da kasua izango da, baina une batean ikusi dugu nola murgiltze sakonago dezakegu irudikatu zergatik da hori egia. Ondoren, eta zoritxarrez, y oraindik 2 eta x da oraindik 1, eta berretsi bezain dezaket. Inprimatu x, y inprimatu. Izan ere, ez da aldaketa benetan gertatu da, eta, beraz, utzi hasiko honetan zehar. Begi bistakoa da swap hondatuta dago. Dezagun ordez idatzi "run" berriro. Demagun baietz me, hasieratik berrabiarazi nahi dut, idatzi. Orain atzera line 18 naiz. Orain konturatu x eta y dira zabor balioak berriro. Ondoren, hurrengo, hurrengo, hurrengo. Lortu dut aspertzen bada ere ezin dut idatzi n etorkizunean. Karaktere-sekuentzia laburrena posible laburtu ahal izango duzu. Swap dago orain hautsita. Dezagun dive, beraz, ordez hurrengo idatziz, urratsa idatzi dut, beraz, barruan dut hurrats funtzio honen horrela barrena oinez I, step sakatu eta, ondoren, idatzi, beraz. Iragarki nabarmenduz jauzi behera nire programa txikiagoa line 36. Orain zer aldagai lokalak? Info locals. Ezer ez besterik ez oraindik Nik ez dugulako lerroa ahaztuak, beraz, goazen Animatu eta esan "hurrengo". Orain tmp, inprimatu tmp izan dirudi dugu. Garbage balioa, ezta? Baietz uste dut. Nola buruz inprimatu inprimatu b, 1 eta 2? Une batean, ahalik eta azkarren idatzi dut hurrengo berriz tmp 1 balioa hartu, zorionez, tmp esleitutako balioa joan delako. Dezagun, inprimatu b inprimatzeko ez, baina orain tmp inprimatu, eta, hain zuzen ere, 1. Dezagun hurrengo do me. Dezagun hurrengo do me. Swap funtzioa amaitu dut. Naiz oraindik barruan line 40, eta, beraz, utzi inprimatzeko me, inprimatu b, eta ez dut axola zer tmp da. Swap da zuzena bezala orduan eta b aldaketa dirudi. Baina orain badut idatzi ondoan, atzera salto egin dut line 25, eta, jakina, mota y x eta inprimatu badut Oraindik ez da aldatu, beraz, ez dugu arazoa konpondu. Baina diagnostikoan orain agian GDB programa honen gutxienez dugu ahaztuak urrats bat ulertzeko hurbilago Zer gertatzen da zaborrik gure kodea printf jarri beharrik gabe, printf hemen printf hemen, eta, ondoren, exekutatzen ari da behin eta berriro zer oker joan irudikatu nahian. Aurrera joan eta irten hau guztiz irten batera noa. Ondoren esan, "Irten hala ere?" Bai. Orain itzuli naiz nire gonbitean normal, eta egin dut GDB erabiliz. Bat alde batera utzita, behar ez baduzu, hau-Tui Ez erabili. Izan ere, alde izanez gero, funtsean, lortuko duzu beheko pantailaren erdia. Dut gero idatzi bada break nagusia eta, ondoren, exekutatu Oraindik ezin dut nire programa exekutatu, baina zer egingo da, textually show me uneko lerroa ko denbora batean. Tui, textual erabiltzaile-interfazea, erakusten dizu programaren behin, hau da, ziurrenik pixka bat kontzeptualki errazagoa. Baina, hain zuzen ere, besterik gabe, ez dut hurrengo, hurrengo, hurrengo, naiz eta aldi berean lerro bat ikusteko joan, eta benetan nahi izanez gero, zer ari den gertatzen Zerrenda idatzi ahal izango dut, eta lerro inguruko sorta osoa ikusteko. Bideo bat ikusi duzun arazoa ezartzen du 3. Eskatu ditudan dugu Nate estaltzen GDB-intricacies batzuk, eta hau gauza horietako bat da, zintzotasunez, non ehunekoa ez-hutsala batzuk GDB ez da inoiz ukitu, eta hori txarra izango da literalki amaitzeko sortu duzulako denbora gehiago gastua geroago seihileko honetan behera jarraitzen bugs gero nahi duzun hori ordu erdi / ordu jarri bada aste honetan eta hurrengo ikaskuntza GDB eroso. Printf zure laguna izan zen. GDB behar orain zure laguna izan. GDB edozein galdera? Eta hemen zerrenda azkar bat da indartsua eta erabilgarria komandoak batzuk. Bai. >> Kate bat inprimatzeko duzu? Ezin kate bat inprimatzeko duzu? Absolutely. Ez du zenbaki osoen izan nahiko luke. Aldakorra s kate bat inprimatu s mota bada. Erakutsiko dizu zer katea aldagaia dela. [Inaudible-ikaslea] Helbidea eta katea bera emango dizu. Duzu, bai erakutsiko ditu. Eta azken gauza bat, besterik gabe, horiek onak dira ere jakin nahi duelako. Backtrace eta markoaren, murgiltze hau azken aldiz sartu me, berean GDB programa zehatza. Dezagun aurrera eta erabiltzaile-interfazearen bertsioa textual exekutatu, apurtu nagusia. Dezagun aurrera eta berriro exekutatu. Here I am. Orain hurrengo, hurrengo, hurrengo, hurrengo, hurrengo me, step, idatzi. Eta orain, suposatzen dut orain swap en nahita, baina nago atsegin dut "Damn, x balioa zer zen?" Ezin dut egin x jada. Ezin dut egin y Esparru Oraindik ez direlako. Oraindik ez dute testuinguruan, baina inolako arazorik gabe. Backtrace idatzi ahal izango dut. Hori erakusten du me exekutatu duten une honetan funtzio guztiak. Hasiera behean, nagusia, lerro nagusi hemen gure argazkia beheko izanik. Izan ere, swap da lerro gainetik dago swap gainean memoria izan hemen, eta itzuli nahi badut nagusira aldi baterako esan dezaket "markoa." Zein zenbaki? # 1 Main markoa da. Aurretik joan eta esan dut "frame 1." Orain itzuli naiz nagusian, eta x inprimatu ahal izango dut, eta y inprimatu ahal izango dut, baina ezin dut inprimatu edo b. Baina esan badut ezin dut, "Ongi da, minutu bat itxaron. Non izan da swap?" Dezagun aurrera me eta esan "0 markoa." Orain itzuli naiz non izan nahi dut, eta bat alde batera gisa, beste komandoak ere, bada atsegin benetan ari zaren aspertuta Idazteko hurrengo, hurrengo, ondoren, hurrengo oro har, esan dezakezu gauzak bezala "10 hurrengoa," eta hori egingo hurrengo 10 lerro bidez urratsa. Ere egin dezakezu, "jarraitu" duzunean, benetan elikatzen sortu bidez hurrats idatzi. Jarraitu zure programa exekutatu egingo da etenik gabe hits etendura beste arte, begizta batean edo jaistea behera programan. Kasu honetan, jarraitu bukatu dugu, eta programa amaitu da normalean. Hau Fancy modu bat, beheko prozesua da. Just zure programa amaitu da normalean. Horretan gehiago bideo eta saioak arazteko etorri. Asko izan zen. Dezagun gure 5 minutuko break hemen, eta itzuli dugu structs eta fitxategiak. Duzu aste honetan pset, bada dived dagoeneko banaketa-kodea erabiltzen dugun jakin beharko duzu, iturburua kodea duzun ditugu abiapuntu, teknika batzuk berriak. Hain zuzen ere, deitzen struct hitz hori berria sartu dugu, egitura, beraz, era askotako aldagai pertsonalizatuak sor ditzake. I / O, fitxategi fitxategi-sarrera eta irteera nozioa ere sartu dugu, eta hau da beraz, egoera gorde ahal izango dugu. Scramble taula disc fitxategi batean beraz, irakaskuntza bekadun modura eta nik ulertzen zer zure programaren barruan, eskuz jolasteko beharrik gabe joan Scramble jokoak dozenaka. Hau egin ahal izango dugu gehiago automatedly. Eta egitura baten ideia hori nahiko sinesgarria arazoa konpontzen. Demagun programa batzuk ezartzea nahi dugun nolabait mantentzen pista ikasle buruzko informazioa eta ikasleek, esate baterako, izan dezake ID bat, izen bat eta Harvard bezalako leku batean etxe bat, eta, beraz, informazio horiek 3 zuzenak dira mantendu nahi dugu, eta, beraz, utzi aurretik, joan eta programa txiki bat idazten hasteko, besteak beste, stdio.h. Besteak beste, do me cs50.h. Eta gero, nire funtzio nagusia. Ez dut traba edozein komando-lerroko argumentuak, eta hemen ikasle bat izan nahi dut, beraz, esan nahi dut ikasleak izen bat dauka, beraz, esan nahi dut "izena katea." Ondoren, ikasle batek ere, ID bat du, beraz, int id esan nahi dut, eta ikasleen etxe bat du, beraz, esan nahi dut, halaber, "katea etxea". Ondoren, pixka bat hauek eskatu dut gehiago garbian hau atsegin dute. Ongi da, orain 3 aldagai dituen ikasle bat irudikatu nahi izan dut, eta, beraz, "ikasle bat". Eta orain, balio horiek populatu nahi dut, beraz aurrera eta antzeko zerbait esan "Id = 123." Izena David iritsi. Demagun etxea Mather iritsi, eta, ondoren, zerbait egin arbitrarioki printf atsegin dut ("% s, horren ID% d,% s bizi da. Eta orain, zer hemen entxufatu nahi dut, bata bestearen ondoren? Izena, id, etxea; bueltan 0. Ados, izorratu ezean dut nonbait hemen Pretty good-programa bat da, ikasle batek gordetzen dugu uste dut. Jakina, hori ez da interesgarria guztiak. Zer egin behar dut 2 ikasle izatea? Big aurre ez da. 2 pertsonek onartzen dut. Dezagun aurrera, eta hau nabarmendu eta joan behera hemen, eta esan "id = 456" I Rob bezalako norbait Kirkland bizi. Ongi, itxaron, baina ezin dut deitu horiek gauza bera dut kopiatu behar bezala ikusten da, beraz esan me horiek Daviden aldagai izango da, eta horien kopia batzuk get me Rob utzi. Rob hauek deitu dugu, baina hau ez da lanera joan gaur egun dudalako itxaron, dezagun aldatu me id1, NAME1 eta house1. Rob 2 izango da, 2. Dut hau aldatzeko hemen, hemen, hemen, hemen, hemen, hemen. Itxaron, zer Tommy buruz? Egin dezagun berriro. Jakina bada oraindik uste duzu, hau da hori egiteko modu ona da, ez da, beraz, kopiatu / itsatsi txarra. Baina hau konpondu Duela aste bat. Zein izan da gure konponbidea datu mota bereko hainbat instantzia izan nahi dugu? [Ikasleak] array bat. Array bat, eta, beraz, utzi saiatu me up hau garbitzeko. Dezagun batzuk niretzat gela goialdean me, eta utzi egin ordez me hau hemen. Pertsona horiek deitu dugu, eta horren ordez, esan nahi dut "ids int," eta orain gurekin 3 onartzen dut. Esan nahi "katea izenak," eta gurekin 3 onartzen dut noa, eta gero esan nahi "katea etxeak," eta gurekin 3 onartzen dut noa. Orain ordez, David eta bere tokian tokiko aldagai hemen horiek kentzeko ahal izango dugu. Hori sentitzen ona ari garen honetan garbitzeko. Esan dezaket, orduan, David [0] eta izenak [0] izango da eta etxeak [0]. Eta gero, Rob, era berean, hau gorde ahal izango dugu. Dezagun jarri hau behera hemen, eta, beraz, arbitrarioki ids [1] ditu. Izenak izan du [1], eta, ondoren, azkenik, etxe [1]. Oraindik apur bat lapurtera, eta orain hau irudikatu behar dut, beraz, demagun "izenak [0], id [0], etxe [0] eta dezagun pluralize hau. Identifikadoreak ids, ids. Eta berriro ere, egiten ari naiz, eta, beraz, berriro ere, dagoeneko ari naiz berriro / kopiatu itsatsi jo beraz, odds dira beste irtenbide bat da hemen. Ziurrenik I garbitu sortu begizta bat edo horrelako zerbait, beraz, azken finean, pixka bat hobea da, baina oraindik ere sentitzen atsegin Kopiatu / itsatsi dut jo, baina, nahiz eta hau, diotenez, I, ez da benetan, batez ere, irtenbide egokia baita zer erabakitzen dugu noizbait bada zer ezagutzen duzu? Dira benetan ditugu helbide elektronikoak gordetzeko David eta Rob eta gainontzeko programa honetan. Telefono zenbakiak ere gorde behar dugu. Larrialdi kontaktua zenbakiak ere gorde behar dugu. Datu-pieza horiek guztiak gorde nahi dugun izan dugu, beraz, nola egiten duzu? Array beste deklaratzeko duzu goialdean, eta, ondoren, zuk eskuz helbide elektroniko bat [0], e-posta helbidea [1] David eta Rob eta abar. Baina ez da benetan suposizio bat besterik ez diseinu hau azpiko ohorea dudan sistema erabiltzen duten jakin nahi [I] hainbat array bakoitzean besterik ez, beraz, gertatzen da pertsona bera aipatzeko, [0] ids zenbakia 123 da, eta izen hori bereganatzeko noa [0] pertsona beraren izena eta etxe [0] pertsona bera etxe eta abarren matrizeak sortzen dut hainbat. Baina ez dagoela funtsezko batzeko ez da informazioa, id, izena eta etxe pieza 3 artean, nahiz eta erakunde eredu saiatzen ari gara programa hau ez da array. Arrayak hau egiteko modu programazioko hau. Zer nahi dugu gure programa eredua pertsona bat da David, Rob bezalako pertsona horietatik barruan bezalako edo izen bat eta ID encapsulating eta etxe bat da. Ezin dugu nolabait adierazteko kapsulatzea ideia hau Horren bidez, pertsona bat ID bat, izen bat eta etxe bat eta ez benetan hack jotzea horren bidez dugu fidatzen bracket zerbait horiek desberdinak array bakoitzean giza berarentzat aipatzen? Benetan egin ahal izango dugu hau. Goiko joan me nagusia orain, eta utzi nire datu-mota sortzeko me benetan lehen aldiz. Teknika hau erabiliko dugu Scramble baina hemen aurretik joan eta datu-mota bat sortu dut, eta badakizu zer, ikasle edo pertsona deitu noa, typedef define mota noa. Hau egitura bat da, esan nahi dut, eta, ondoren, egitura hori mota ikaslea, esan dugu, nahiz eta datatua me now txiki bat da. Esan dugu "int id." Esan dugu "izena katea." Ondoren, "katea etxea," esan dugu beraz, gaur egun kode batzuk lerro hauen amaieran Irakasten dut clang existitzen dela ints gain, datu mota bat, kateak, gainera, bikoiztu gain, karroza gain. Denbora line 11 une honetan bezala, ez dago datu-mota berri bat izeneko ikasle, eta gaur egun edozein lekutan ikasleen aldagai bat deklaratzeko I nahi dut, beraz hemen behera joan me to pertsona. Orain kentzeko I, eta joan I behera David hemen eta David benetan esan dezaket David dela, literalki izena eman dezakegu aldagai neure burua ondoren, mota ikaslea izango da. Txiki hau bitxi bat begiratu daiteke, baina hau ez da hori, hainbat int bat edo kate bat edo mugikor bat zerbait geratuko. Beraz, zerbait gertatzen deitzen zaio ikasleari gaur egun, eta egitura honen barruan zerbait jarri nahi dut Dute gaur egun I sintaxia pieza berri bat erabili ahal izateko, baina nahiko erraza da, david.id = 123, david.name = "David" D hiriburua, eta david.house = "Mather," eta, orain, stuff hau kentzeko dut hemen. Nabarituko dugu orain gure programa benetan askoz hobeto birmoldatu hori gaur egun gure programa benetako mundua islatzen. Ez dago benetako pertsona bat edo ikaslea ideia-mundu bat da. Hemen dugu orain C pertsona bat edo gehiago bereziki ikasle baten bertsio bat. Pertsona horren Inside ezaugarri hauek garrantzitsuak dira, ID, izena eta etxea, eta, beraz, Rob funtsean gauza bera bihurtzen behera hemen, ikaslea rob, beraz, eta, gaur egun, = 456 rob.id rob.name = "Rob". Izan ere, aldagai deritzo Rob zentzugabeak moduko da. Deitu genezake x edo y edo z. Izendatu besterik ez dugu semantikoki koherentea izan Rob da, baina benetan izena da barruan, eremu horretan bertan, beraz, gaur egun hau dut. Honek ere ez du horretan gogor Nik kodetuta David diseinu onena bezala sentitzen. Gogor Nik kodetuta Rob. Eta oraindik kopia batzuk jotzea eta aldagai berriak nahi ditut bakoitzean denbora itsatsi. Gainera, itxuraz ematen aldagai horietako bakoitzak izen bat behar dut, nahiz eta askoz ere nahiago dut deskribatzeko aldagai horiek  oro gisa gehiagotan ikasleak. Orain duten ideiak ongi Gurekin lan batu ahal izango dugu. eta horren ordez, esan, "Badakizu zer, emaidazu aldakorreko izenekoa ikasle, eta dezagun dituzte tamaina 3 ", beraz, gaur egun birfin hau gehiago, eskuz izendatu David kentzeko, eta horren ordez, ikasleek antzeko zerbait esan dezaket [0] hemen. Esan dezaket, orduan ikasle [0] hemen, ikasleak [0] hemen, eta abar, eta I joan daiteke inguruan garbitu eta hori sortu Rob. Ere izan dut, orain agian begizta bat gehituz joan eta benetan balio hauek erabiltzaileak, GetString eta GetInt erabiliz. Konstante bat gehituz joan izan dut hau txarra da, oro har, baita praktika 3 gogor kodea bezalako zenbaki arbitrarioak hementxe batzuk eta, ondoren, gogoratu 3 ikasle baino gehiago jarri beharko luke. Ziurrenik izango litzateke hobeto # define nire fitxategiaren goialdean faktorea dela, eta, beraz, hain zuzen ere, aurrera eta hau orokortu. Dezagun adibide bat ireki me gaur egungo artean adibide lehenago, structs1. Osoagoa # define Hemen erabiltzen duen programa bat da dio 3 ikasle default goaz. Hemen ikasle klase bat merezi naiz geratuko, ikasleek ikasgelan, beraz, eta orain loop bat erabiltzen dut kodea apur bat gehiago dotorea egiteko, populatu klase erabiltzailearen sarrera, eta, beraz, 0 = i batetik bestera joateko ikasleek, hau da, 3. Eta gero, bertsio honetan erabiltzaileari galdetuko dut  ikaslearen ID, eta I GetInt. Zer da ikaslearen izen-abizenak, eta, ondoren, GetString duten I. Zein da ikaslearen etxea? I GetString. Eta gero, behean hemen erabaki dut aldatu hauek nola naiz inprimatzeko eta benetan loop bat erabili, eta nor naiz inprimatzeko? Iruzkina arabera Mather edonork dut inprimatzea, eta hori izan da Rob eta Tommy beraz, eta abar-benetan Tommy Mather. Tommy eta David kasu honetan izango litzateke inprimatuta, baina nola lan? Ez dugu funtzio hau ikusi aurretik, baina zer hau da, etxebizitza bat hartu. Konparatzen kateak. Apur bat ez-bistako da nola kateak konparatzen bihurtzen da delako itzultzen du 0 bada horrek esan nahi du kateak berdinak dira. Itzultzen du -1 bat bada, horrek esan nahi du alfabetikoki dator bat bestea baino lehen, eta itzultzen du +1 bada beste hitz esan nahi du datorren alfabetikoki aurretik, eta begiratu online edo man orrialdean dezakezu zehazki modu bat da hori, baina hori guztia gaur egun egiten da, esaten da [i]. etxea da "Mather" berdina bada gero aurrera eta inprimatu, beraz, eta, beraz, Mather da. Baina hemen zerbait ez dugu ikusi aurretik, eta itzuli dugu hau. Ez dut gogoratzen inoiz Horretarako nire programak edozein izatea. Free da itxuraz: memoria, aipatuz memoria askatzeaz, baina zer memoria am begizta honetan itxuraz programa honen behealdeko libre uzten? Dut pertsona baten izena bezala askatzeaz dirudi eta pertsona baten etxea, baina zergatik da hori? Bihurtzen da aste horiek guztiak izan duzula GetString erabiliz mota dugu bug bat sartzea, behin zure programak batean. Diseinu esleitzen memoria GetString, beraz, kate bat itzuli, David bezala, edo Rob, eta ondoren egin dezakezu nahi duzuna hori zure programa katea dugu gordeak memoria dugulako. Arazoa denbora hori guztia denbora GetString deitu bakoitzean dugu, GetString egileek, izan dira sistema eragilearen eskatuz ezagutzera emango RAM apur bat kate honetan. Emaiguzu RAM apur bat hau hurrengo Kate. Emaiguzu batzuk gehiago hurrengo kate honen RAM. Zer programatzailea, inoiz ez dira egiten emango digu memoria-back hori, beraz, zenbait aste hauetan programak guztiak, idatzitakoa izan dute zer izeneko memoria horren bidez, jauzi bat erabiliz mantentzen dute gero eta memoria gehiago aldi bakoitzean GetString deitu, eta hori fina. Nahita egiten dugu, lehen asteetan ez delako interesgarria dela non katea da datozen kezkatu. Nahi duzun guztia gertatzen da, hain zuzen ere, hitza Rob itzuli erabiltzaile mota sartu Baina aurrera gaur egun honi buruz gehiago sofistikatu hasteko. Edonoiz memoria esleitu dugu azkenean hobeto entregatu dugu berriro. Bestela, zure Mac edo PC mundu errealaren noizean behin esperientzia izan dezakezu sintomak non ordenagailua gelditu azkenean artezketa edo ergelak spinning hondartza (e) k besterik ez da ordenagailuaren okupatuko arreta osoa eta ezin gauzak. Bugs kopuru edozein daiteke azaldu, baina horiek ahalik eta bugs artean deitzen dira gauzak memoria ihesak horren bidez norbait software pieza idatzi memoria libratzeko ez gogoratzeko erabiltzen ari zaren zuen galdetu sistema eragilea, ez GetString erabiliz, CS50 gauza bat delako, baina antzeko funtzioak erabiliz eskatzen memoria sistema eragilearen. Edo hondatzeko bada, eta inoiz ez benetan itzultzeko memoria hori diren programa bat motelduz, eta slows eta moteldu sintoma bat izan daiteke gogoratu free deitzeko ezean. Itzuli dugu noiz eta zergatik deitu nahi duzun, baina dezagun aurrera neurri ona eta saiatu bereziki programa hau abiarazi. Deitzen zen structs1, sartu. Dezagun aurrera eta exekutatu structs1, 123, David Mather, 456, 789, Rob Kirkland Tommy Mather, eta David-en ikusiko dugu Mather, Tommy Mather. Apur bat behatu kontrol-programa lan hori. Orain, zoritxarrez, programa hau da, pixka bat horretan frustrating Lan hori guztia ez dut 9 kateak hainbat idatzi, sakatu sartu, izan zen esan Mather izan zen, eta, hala ere, jakina, Mather zen dagoeneko idatzi dut delako banekien. Gutxienez nice litzateke programa hau datu-base bat bezala gehiago bada eta gogoratzen da benetan zer idatzi dut beraz, berriro inoiz ez dut sarrera ikaslea erregistro horiek. Agian da sistema bat registrarial bezala da. Hau egin ahal izango dugu, I / O, fitxategi fitxategi-sarrera eta irteera gisa ezagutzen den teknika hau erabiliz, fitxategiak irakurri edo idatzi fitxategiak nahi duzun edozein unetan esaten Oso modu generic zenbait funtzio multzo bat egin ahal izango duzu. Dezagun aurrera me eta adibide structs2.c hau ireki hau da, ia-ia berdinak, baina zer ez gaur egun ikus dezagun. Fitxategia goialdean ikasle klase bat deklaratzen dut. Erabiltzailearen sarrera klase populatu ondoren I beraz, kode lerro horiek zehatz-mehatz nahi aurretik. Ondoren, joan I erorita badago hemen inprimatu guztioi Mather da arbitrarioki nahi baino lehen, baina hau ezaugarri berri interesgarri bat da. Kode lerro hauek berriak dira, eta zerbait aurkeztu dute hemen, FITXATEGIA, txanoak guztiak, eta * du hemen baita. Dezagun hau mugitu me hemen, * hemen baita. Funtzio hau ez da ikusi ditugu aurretik, fopen, baina fitxategia esan nahi du irekita, eta, beraz dezagun gaingabetuak horien bidez, eta hau da zerbait itzuli dugu psets etorkizuneko baina lerro hau hemen, funtsean, datu-basea izeneko fitxategi bat irekitzen du eta irekitzen berariazko modu bat da zer egin dezake, hala nola? [Inaudible-ikaslea] Eskuin, eta, beraz, "w", besterik gabe esan nahi du sistema eragilea, kontatzea fitxategi hau ireki dut idatzi. Ez dut nahi, irakurtzeko. Ez dut nahi begiratu besterik ez da. Aldatzeko eta stuff gehitu potentzialki nahi dut, eta fitxategi izeneko datu-basean. Deitu behar izan ezer. Database.txt izan daiteke. Izan daiteke. Db. Hau foo bezalako hitz bat izan daiteke, baina aukeratu zuen, arbitrarioki I fitxategia datu-basean izena. Apur bat behatu check itzuli garela etorri egingo zehaztasun handiz denborak aurrera egin ahala, LH, erakuslea fitxategi bada, ez du horrek esan nahi du berdintasuna NULL guztiak ongi dago. Long Narrazio laburren, fopen bezala funtzio batzuetan huts egin. Agian fitxategia ez da existitzen. Agian disko leku Oraindik duzu. Agian ez duzu baimenik karpeta horretan, beraz bada fopen null zerbait txarra gertatu itzultzen. Aitzitik, fopen ez badu itzultzeko null guztiak ongi eta hasi fitxategi hau idazten dut. Hona hemen beste trikimailu bat da. Begizta bat baino gehiago errepikatzean nire ikasle bakoitzak, eta antzeko itxura, beraz, zer egin dugu aurretik, baina funtzio hau printf fitxategi printf fprintf izeneko lehengusu bat da, eta 2 bakarrik modu desberdina da. One, ordez p f hasten da, baina gero, bere lehen argumentua da itxuraz zer? [Ikasleak] fitxategia. >> Fitxategi bat da. Izeneko gauza hau LH, azkenean dugu tease gain fitxategi erakuslea da, baina orain LH besterik ez dut ireki fitxategia adierazten du, fprintf hemen erabiltzaile hau inprimatu fitxategi ID esaten, ez pantailan. Inprimatu erabiltzailearen fitxategi izena, ez pantaila fitxategia, ez da pantailan, eta, ondoren, behera hemen, jakina, etxea, fitxategia itxi, eta gero behera hemen memoria libre. Bertsio honetan 2 eta version 1 arteko desberdintasun bakarra fopen sarrera eta * FITXATEGIA hau da eta fprintf nozioa, beraz, zer da azken emaitza. Utzi nire terminal leiho me. Structs2 exekutatu me, sartu. Looks guztiak ongi bezala. Dezagun berrabiarazi structs2. 123, David Mather, 456, Rob Kirkland, 789, Tommy Mather, sartu. Looks portaera bera bezala, baina orain ez dut bada ls nabarituko zer fitxategia hemen da nire kode guztien artean, datu-basea, beraz, datu-base gedit, eta begirada ireki. Fitxategi-formatuak ez da sexiest. Benetan datuak pieza lerro bakoitzeko lerro bakoitzeko lerro bat, baina duzun Excel edo CSV fitxategiak erabiltzen dutenen artean, komaz bereiztutako balioak, Nuen, zalantzarik gabe erabili dute fprintf ordez agian honen antzeko zerbait egin Excel fitxategi bat baliokidea beraz, benetan izan dut sortu gauzak banantzen koma, ez bakarrik ildo berriak. Kasu honetan nuen ordez erabiltzen bada koma lerro berriak ordez Literalki izan dut hau Excel datu-base fitxategia ireki ordez egin nuen gero begiratu hau atsegin dute. Azken finean, gaur egun dugun fitxategiak idaztea has dezakegu persisting datuak mantenduz inguruan Diskoko beraz, informazio gorde ahal izango dugu, behin eta berriro inguruan. Ohartu, orain pixka bat gehiago ezagutzen diren beste gauza pare bat. C fitxategi honen goialdean typedef dugu nahi izan dugu, datu-mota bat sortzeko hitz bat adierazten du delako, beraz mota honetako deritzo hitza, eta honen barruan egitura apur bat fancier da orain. Zergatik hitz bat osatzen da, itxuraz array bat? Zer da hitz bat intuizioz? Karaktere array bat da. Karaktere-sekuentzia bat da Itzuli. Txanoak guztietan CARTAS gertatzen esan arbitrarioki dugu gehienezko luzera dictionary Scramble erabiltzen ari garen edozein hitz. Zergatik +1 behar dut? Karakterea nulua. Gogoratu Bananagrams Adibidez genuen balio berezi bat behar dugu hitzaren amaieran ordena pista mantentzeko non hitz benetan amaitu, eta arazo multzo zehaztapen dio Hemen emandako hitza boolear bat lotzen ari gara, Ez, beraz, hitz egiteko, egia edo gezurra. Dute hitz hau aurkitu duzu dagoeneko, konturatzen garelako benetan behar dugu gogoratzeko modu bat ez da bakarrik hitz bat Scramble baina ala ez duzu, giza, aurkitu du beraz, hitz egiten aurkituko dituzu izanez gero, "" ezin duzu idatzi, idatzi, idatzi, idatzi eta 3 puntu, 3 puntu, 3 puntu, 3 puntu lortu. Hitz zerrenda beltza boolearra ezarriz gai izan nahi dugu eta egia duzun dagoeneko aurkitu du, eta, beraz, hori zergatik egiten dugun kapsulatuaren egitura honetan. Orain, behera hemen Scramble izeneko beste hiztegi eta egitura hau. Absenteak hemen hitza typedef kasu honetan delako hiztegi baten ideia enkapsulatu behar dugu, eta hiztegi bat hitz sorta osoa dauka, array hau engaiatuko, eta nola hitz horiek asko daude? Beno, edozein izeneko hau aldakorra tamaina dio. Baina besterik ez dugu behar hiztegi bat. Ez dugu behar izeneko hiztegi datu-mota bat. Besterik ez dugu behar horietako bat, beraz, bihurtzen da C ez baduzu, esan typedef, esan besterik ez duzu eta egitura, eta, ondoren, kizkur giltza barruan zure aldagai jarri gero, izena jarri behar duzu. Aldagai bat izeneko hiztegi geratuko itxura hau. Por el contrario, lerro hauek berrerabilgarriak sortzeko izeneko datu egitura hitza anitz kopiak sor ditzakezula bezala sortu dugu ikasleek hainbat kopia. Zer esan nahi du, azken finean, egiten uzten digu? Dezagun atzera me, demagun, errazagoa da adibide bat aldiz errazagoa, eta utzi ireki me,, demagun, compare1.c. Arazoa hemen ibili da benetan itzuli zuritu kate baten geruza eta prestakuntza gurpilak horiek ari bihurtzen da, kate bat dela denbora hori guztia aste 1 benetan agindu ezizen bat besterik ez, sinonimo, zerbait itxura apur bat gehiago críptica liburutegia CS50 char *, eta ikusi dugu star hau baino lehen. Fitxategiak testuinguruan ikusi dugu. Dezagun zergatik izan dugu zehatz-mehatz hau ezkutatzen denbora pixka bat ikusteko. Here compare1.c izeneko fitxategi bat da, eta galdetzen itxuraz erabiltzaileak 2 kateak, s eta t eta, ondoren, kateak horiek alderatu line 26 berdintasuna saiatzen da, ari dira eta berdina esaten baldin bada, "gauza bera idatzi duzu," Oraindik ez badira berdinak, esaten du "gauza desberdinak idatzi duzu." Dezagun aurrera eta programa hau exekutatzeko. Dezagun joan nire iturburu direktorioan sartu Niri, compare1. Ados konpilatu da. Dezagun compare1 exekutatu me. Mapan handiago dut, sartu. Esan zerbait. HELLO. Zerbait esan dut berriro. HELLO. Ez dut behin betiko ez idatzi gauza desberdinak. Dezagun honetan saiatu berriro. Bye Bye. Definitely ez da desberdina, beraz, zer gertatzen da hemen? Beno, zer da benetan ari line 26 alderatuta? [Inaudible-ikaslea] Bai, eta, beraz, kate bat, datu-mota bihurtzen da zuri gezur mota da. Katea A char * bat da, baina zer da char *? Char * A, esan bezala, erakusle bat da, eta erakuslea da helbide bat eraginkortasunez memoria kokapena batura, eta gertatuko HELLO bezalako hitz batean idatzitako bada, kate eztabaidak iraganeko gogoratzen hitza bezala HELLO da. Gogoratu HELLO bezalako hitz bat irudikatzen daiteke karaktere array hau atsegin dute eta, ondoren, bukaeran, karaktere berezi bat izeneko pertsonaia null \ lu byte irakurtzerakoan gisa. Zer da benetan kate bat? Iragarki hau dela memoria zatiak baino gehiago, eta hain zuzen ere, amaieran ezagun bakarra kate osoan zehar behin null karaktere berezi bila. Baina hau nire ordenagailuko memorian memoria zatia bada, dezagun arbitrarioki esan Kate hori inoiz baino zortea, eta got nire ordenagailuaren RAM hasieran kokatzen da. Byte 0, 1, 2, 3, 4, 5, 6 ... Noiz GetString antzeko zerbait esan dut, eta katea s = GetString do I zer benetan ari itzuli? Hainbat astez hauek, zer da benetan ari s gordetzen kate hau berez ez da, baina, kasu honetan, zer gordetzen da zer GetString benetan ez delako 0 zenbakia da, fisikoki ez du itzuli kate bat. Horrek ez du, nahiz eta benetan kontzeptuala zentzua. Zer bueltan zenbaki bat du. HELLO memoria helbidea, eta katea s ondoren, atzera zuritu geruza hau bada, katea ez da benetan existitzen. CS50 liburutegia sinplifikazio bat besterik ez da. Honek benetan zerbait char * izenekoa da. Char zentzua hitz bat delako, HELLO bezala? Beno, bat karakteretan serieak, pertsonaia multzo bat da. * Char pertsonaia baten helbidea esan nahi du, beraz, zer du kate bat itzuli esan nahi du? A nice, kate bat itzultzeko modu sinple baino gehiago saiatu figura nola itzuli, 5 edo 6 byte I utzi duen byte helbidea itzultzeko me? Lehena. Beste era batera esanda, memorian pertsonaia bat emateko me helbidea. Horixe adierazten char *, helbidea memoria pertsonaia bakarra. Dei aldakorreko s hori. S denda helbidea, jakin esan arbitrarioki I 0 da, gauza simple mantentzeko, baina errealitatean, oro har, handiagoa da zenbaki bat. Itxaron minutu bat. Ari zaren besterik ez bada me lehen karaktere helbidea ematea, nola ezagutzen dut zer da helbidea pertsonaia bigarren, hirugarren, laugarren eta bosgarren? [Inaudible-ikaslea] Bakarrik ezagutzen duzu non katearen amaieran handy trikimailu honen bidez, beraz, zerbait erabiltzen duzun printf bezala, zer printf literalki bere argumentu gisa hartzen du, gogoratzen erabiliko dugu% s biltegian, eta, ondoren, gainditu duzu kate bat gordetzeko aldagaia. Zer da benetan ari zaren pasatzen kate horretako lehen karaktere helbidea da. Printf ondoren erabiltzen loop edo, berriz, begizta bat helbidea jaso gainean, esate baterako, 0, beraz Horretarako me now, printf ("% s \ n"); When I deitzen printf ("% s \ n", s); benetan zer naiz printf emanez s lehen karaktere helbidea, arbitrarioak kasu honetan, H. Nola ez dakit zer erakutsi pantailan printf? Duen pertsonak jarri du martxan, printf bitartean loop bat inplementatu edo bat loop esaten duen pertsonaia hau ez dira berdinak null karaktere berezi? Hala ez bada, inprimatu. Nola honi buruz? Ez bada inprimatu, inprimatu, inprimatu, inprimatu. Oh, hau berezia da. Gelditu inprimatzeko eta erabiltzaileari itzultzeko. Eta hori da, hitzez hitz guztiak kanpaia azpian gertatzen ari, eta horrek asko klase baten lehenengo egunean digeritzen baina orain benetan eraikin guztia ulertzeko bloke gure ordenagailuaren memoria barruan joan eta, azkenean, hau tease dugu gain laguntza apur bat gure lagun bat Stanford at. Irakaslea Nick Stanford Parlante bideo sekuentzia zoragarri honetan egin du hizkuntza ezberdinetan sartu era guztietako Claymation pertsonaia Binky txiki honetan. Buruz Oraindik duzu ahots bat besterik ez gutxi bigarren Sneak preview entzun Stanford irakasle batek, eta lortzean ari zaren 5 edo 6 segundotan eskubide hori gaur egun, baina ohar hau horren gainean amaituko dugu eta asteazkenean hasiko da. Erakuslea Binky, preview Fun ematen dizut. [♪ Music ♪] [irakaslea Parlante] Hey, Binky. Esnatu. Erakuslea fun denbora da. [Binky] Zer da hori? Erakusleak buruz ikasi? Oh, GOODY! Asteazkenean ikusiko dugu. [CS50.TV]