JASON Hirschhorn: Ongi etorri A5, guztiontzat. Zirraragarria aste bat dugu gurekin aurretik, Han batez ere delako berria hainbeste dira gela honetan aurpegiak. Zoragarria da. Duzu asko daude hemen istripuak, hau da, are hobea. Beraz, espero mantendu dituzu sartu dira. Aste honetan ari gara gastatzen joan ataleko gehienak galdetegia prestatzen. Beraz, gure agenda per, hitz egin dugu klasea baliabide buruz pixka bat, baina, halaber, galdetegia, eta, ondoren, berriz ere, pasatzeko klase hitz gehienak galderei buruz. Bukatutakoan behin dugu erantzunez zure galderak, edo bada zure galderak naturalean gaituzte kodifikazioa batzuk, I midterms lagin arazoak iragan duten zuzeneko kode jarriko gara atalean elkarrekin ere ekarri beste batzuk Gai ona estaltzeko. Beraz, lehenik eta behin, joan gisa dugun bidez egiteko iragan aste pare gogorarazteko Guys, ez dago baliabide tona bat Ikastaro honetan eskuragarri. Horietako asko oso lagungarria izango da aurrera jarraitu behar duzu galdetegi 0 ikastera, zeren Astearte arratsaldean da. Beraz, guztiak izan dira pixka bat ikasten. Badira hitzaldia oharrak eta iturri kodea duten behar duzu behin betiko begiratu. Watch film laburrak. Begiratu study.cs50.net. Eta, ondoren, jarraian aipatzen diren, zenbaki bat beste baliabide. Berriz ere, galdetegi 0 bihar da 1 goizeko. Egin ez baduzu, hala bada dagoeneko, begiratu buruz Quiz 0 Dokumentuan on atera ikastaroa homepage irudikatu non galdetegia hartzen ari zaren. Galdetegia 1:10 etan hasiko da eta bukatzen da 70 minutu beranduago. Beraz erakusteko baduzu 1:10 ondoren, zauden duten askok minutu gutxiago lortzeko ari 70 baino galdetegi hartzeko. Beraz, ziurtatu Oraindik garaiz han. Oraindik luzapena ikaslea bada edo izan beste azterketa gogoetak batzuk, hura agian ez 1 goizeko bihar izango da. Baina, berriro ere, egiazta buruz Quiz 0 dokumentatzeko ziur duzu jakin noiz galdetegia hartzen ari zaren. 75 minutuan idatzi nuen hemen. Nik uste dut, hori da, ez 70. Material guztia estaltzen astean 0tik da azken astean asteazkenean hitzaldia emateko. Eta berriro ere, galdetegi hau, duten per Dokumentuan, lortuko duzu bat, bi aldetako eta 8 1/2 11 paper eskuratu duzun arabera ohar gisa erabili galdetegi zehar. Jende askok, ez bada jende gehienak, izan aurkitu duten gehien lagungarria modu bakar galdetegi egiteko aztertzea da azterketa orri bat, bat egiteko bat-sider, beren. Beraz, lehengo begiratu iragan direnak ikusi duzun. Iristea, lagunak ikustea zer berea ari dira jarriz. Baina esku-behera, ahal duzun modurik onena azterketa da guztia bidez joan eta whittle behera zer egin beharko lukete edo hori behar den ez orri horretan sartzen dira papera, hori besterik ez da benetan bat delako ziur zuretzako modu lagungarria guztia zeharkatzen ari zaren eta da ezagutza batzuk izan. , Jende gehienak, aurkituko dugu nahiz eta dute paper eskuineko eserita haien ondoan galdetegi oinarrituta, ez piztu da, izan ere, berriro ere, oso Informazio igaro prozesua lagundu egiten ikasten. Du inor edozein zalantza galdetegi 0 buruz? Denek du - Ez dut esku hutsezko egin. Never mind. I zen nork eskatu joan ikasten hasi zen. Baina ez dut nahi duzuna egiteko guztiak ez zure eskuak goratzeko. Esan dudan bezala, beraz, - bai, Avi, aurrera. AVI: Zer gauza erabilgarria izango litzateke hemen bat-pager jarri? STUDENT: Hori da, sortu nahi duzun. JASON Hirschhorn: You get zure epaia erabili. Erabilgarria gauza hemen bat-pager jarri, you O big buruz nahastu badira bilaketak mota desberdinen exekuzio eta ordenatzen, jarri duten batean han handy dandy diagrama. Horrela, bada galdetu ari da galdetegi, ez duzu eta saiatu figura it out edo arrazoia exekuzio bidez. Besterik ez dezakezu kopiatu behera. Begiratuz gero galdetegiak iragana, asko at aldiz, denbora galderak bertan exekutatzen da. Beraz, ona adibide bat izango litzateke Gauza zure bat-pager jarri. Beste gauza onak jarri, Oraindik baduzu nola deklaratzen buruz nahastu bat funtzio edo zer zati desberdinak funtzioaren adierazpena dira, idazten han zela, bertsio generiko eta, gero, agian, adibide bat. Oraindik erakusleak buruz nahasten dira, erakusleak lana nola den diagrama bat Ziurrenik benetan lagungarria. Oraindik errekurtsibitate, bat buruz nahasten dira funtzioa errekurtsiboa dastatzeko han on izan ere frogatu benetan lagungarria izan nahi du. Du horrek emango dizu ideia batzuk? AVI: ulertu behar duzu osoa konpilazioaren prozesua, bezalako obra guztiak nola hori? JASON Hirschhorn: Everything que ha sido estalita Could erakusteko sortu galdetegi da. Galderak - baina berriro ere, gauza batzuk izango ugari haztatuta besteak baino. Gauza batzuk berriro etorri eta berriro klasean, in hitzaldia, eta atala. Beste gauza ez izan zatoz gora askotan. Asko hitz egin dugu about # include eta -L zerbait eta zer horiek esan nahi konpilazio prozesuak. Asko hitz egin dugu GDB buruz, txirrindularitza, erabiltzen ditugun desberdinetako banderak horiek denean zerbait konpilatu dugu, eta zer make15, adibidez, benetan esan nahi du, eta benetan ez. Ez dugu hitz egin bezala buruz askoz urrats bakoitzean bakarra konpilazio prozesuak. Dugu oraindik ere, horri buruz hitz egin zuen. Beraz, oraindik ere, zerbait duzula ezagutzea izan behar du. Baina, berriro ere, ez gara izango da - etortzen diren sarriago klasean sortu gauzak gehiago egongo dira gehiago etortzen sarri eta ugari galdetegiaren haztatuta. Cool. Galdetegi 0 buruzko beste edozein galdera? Ados, beraz, zerrenda bat jarri dut taula gainean gaiak. Curriculumaren bidez joan nintzen. Berrikuspena etatik atalaren bitartez joan nintzen bart eta diapositibak horiek etorri Gai zerrenda ez zehatza batekin beraz, orain arte estaltzen dugu CS50 eta gauzak agian galdetegi agertuko. Beraz, ez naiz joan deneko joan horietako bat bakoitza. Askoz gehiago hartuko luke Denbora orain dugu baino. Baina hau jarri dut hemen, zorionez jog izateko Zure memoria gauza gisa duten may edo agian ez duzu ezagutzen. Eta maite nuen gehiena pasatzeko Sekzio buruzko zure galderak erantzuten gai hauek, gaiak duen hemen ez dira estalita. Sasi-kodea idatzi ahal izango dugu. Benetako kodea idatzi ahal izango dugu bermatzeko duzula - Zure galdera erantzun ahal izango dut eta laguntza denek funtsean ulertu bat Gai horiek asko sentitzen duzu beraz prestatuago eta eroso joan sartu galdetegia bihar. Beraz, irakurri baino gehiago zerrendan. Duzu espero dute atal etorri baita galdera batzuk. Prest zaudenean, goratzeko zure esku eta lehen urratsak egingo ditugu. Gogoan izan, galdera duzu, izan daude galdera ergelak ez. Asko entzun dugu. Eta galdera batzuk egin behar duzu, prest nago , beste hainbat pertsona apustu egitea, bai hemen eserita eta behaketa konektatuta izan baita. Beraz, pertsona bakarra zaitzake galderak eginez. Marcus. MARCUS: pila eta Between the zeure, ez dago bat aurrez esleitu hori bezala definitzen memoriaren ehunekoa hau da pila edo zeure egiteko? Edo nola lan egiten duten, zehazki ez? JASON Hirschhorn: Great galdera. Pixka bat traza atzera noa. Denek ez - mesedez izan zintzoa. Duzun galdetzen dut goratzeko ezagutzen dut zure Zure ikaskideek aurrean eskua. Baina hor daude sentitzen duten pertsonek pila eta zeure deseroso eta gehiago joan behar duten nahi eta esan nahi horiek zer? Goratu zure eskua bada - Ados. Eskerrik asko. Beraz, pila baino gehiago joan eta joan zeure benetan azkar eta gero Zure galderari erantzunez mugitu. Marrazteko dugu irudikatzeko kutxa bat, hala bada memoria ordenagailuan, zer hemen batzuk duten kutxa horretara joanez gauzak? Nagusia. Funtzio nagusi bat. Nora doa nagusia? STUDENT: [INAUDIBLE]. JASON Hirschhorn: Beraz zaitugu jarri nagusian behera hemen. Zer gehiago koadro honetan doa? STUDENT: deitu duten funtzioak. JASON Hirschhorn: funtzioak dugu deitu duten. Eta, zertara bideratzen dira? STUDENT: pila batean. JASON Hirschhorn: dute pila joan. Beraz, hau deitzen da joan Gauza behera hemen pila. Eta goian, zeure dugu. Beraz, memoria ez da besterik hau bezalako koadro bat. Baina nahiko antzekoa da, benetan. Honez kutxak asko izan pasa eta gehiagoko, arabera nola big zure ordenagailua da edo memorian nola big da. Du aurrekontu-unquote "behean" at pila da. Eta ez dira gauza anitz pila joan. Eta horiek funtzioen araberakoak Zure kodea behar duzu. Duzu beti funtzio bat erabiliz kodea izeneko nagusia, beraz, ez da beti bat Hemen behera atalean pilatu ardatz. Pila atal horietako pila markoak deitzen dira. Noiz deitu funtzioa beste, esan nagusiak bitarra bilatzeko funtzio bat dei egiten du, markoa beste bat jarri dugu pilan. Zehatzago, joan ari gara dohaintzan memoria zatia batean gure ordenagailuan gordetzeko bitar bilaketa tokiko aldagai eta bitarra exekutatu bilaketa kodea. Beraz, bilaketa bitarra deitzen diogu. Memoria zatia honetan, goazen bere aldagai lokalak gordetzeko. Bere printf deiak gordetzeko goaz. Zer gerta ere, funtzio hori da bertan gordeko da joan. Binary bilaketa da exekutatu behar. Da exekuzioa osatzeko egingo. Zer da C hitza dela ondorioztatzen funtzio bat egin beharko lukete horretan bere exekuzioa osatzeko? STUDENT: Sartu. JASON Hirschhorn: itzuli. Beraz, betiere bueltan adierazpen bat ikusten duzu, funtzioaren muturrak duten hits. Bilaketa beraz bitarra bere itzulera kolpatu du. Memoria zati hau izango da, funtsean, be hori askatzea. Eta nagusia exekuzioa itzuli egingo. Lekuan zegoen, beraz dei nagusia pausatu egingo bilaketa bitarra, bueltan balio batzuk eskuratu, eta exekuzioa jarraitu. Pila markoak urrun joan dira. Funtzioa errekurtsiboa bat, deitu badugu horrek deiak bere gainera funtzioa da eta baino gehiago, agian lortuko dugu - esaten dugu Egin bilaketa bitarra errekurtsiboki. Agian bitar bilaketa bat bertsio lortuko dugu, bilaketa bitarra bi, bilaketa bitarra hiru, bilaketa bitarra lau, bilaketa bitarra bost. Eta ondoren, hau final bilaketa bitarra bost oinarri kasuan, eta pila kolpatu du markoak atzera egingo eta itxiera mantentzeko nagusira itzuli arte. Errekurtsibitate baino gehiago ezin dugu pixka bat joan. Baina hori guztia da, Oraindik baduzu funtzio bat baino gehiago deituz aldi berean, Han pila bat baino gehiago izango pila markoak. Zeure, bestetik, sortu Hemen, ez da funtzio, Ez aldagai lokalak egiteko. Da dinamikoki esleitu It aldagaiak. Beraz, horiek izan daitezke aldagaiak dira bai nagusiak edo batean hasieratu funtziona deiak nagusia. Edonon zure kodea, dute hasieratu daitezke. Eta dinamikoki a hasieratzean esleitu aldakorra. Zer funtzio C erabiltzen dugu? STUDENT: Malloc. JASON Hirschhorn: Malloc. Malloc deitu. Oroimenaren espazio bat lortzen duzu. Eta oroimenaren espazio hori zeure gainean. Eta oroimenaren espazio hori egonaldiak there free deitu arte. Beraz dinamikoki esleitu aldagai zeure egingo betiere existitzen duzun bezala nahi existitzen horiek, eta ez dute irteteko esplizituki arte kontatu urrun joan. Horiek sor dezakezu funtzio bakar batean. Funtzio horren pila markoa urrun joan dira. Baina aldagai hori oraindik existitzen egingo zeure, hura askatu arte, izeneko funtzioaren bidez potentzialki bilaketa bitarra edo dena delakoa. Beraz zeure aldagai horiek han egoten betiere nahi duzun bezala bertan geratuko horiek. Eta hemen jarri dute get. Eta, ondoren, hurrengo bat jarri lortzen. Ohitu bete hartu dute, eta dute han egoten free deitu arte. Eta, funtsean, zeure, eta pila, Marcus galdera lortzean, bata bestearen bidean hazten. Eta exekutatu dute beste bat sartu bada, duzun Erabilitako memoria guztietan zure ordenagailua, eta zure programa egingo irten ez duzulako edozein memoria gehiago dute utzi da erabiltzeko. Haien artean, badira Beste gauza batzuen potentzialki. Baina noski honen esparrutik, zuretzat behar ez kezkatu. Beraz, hori izan zen erantzuna Zure galderari. Ez kezkatu. Baina horrek erantzun luzea zen. Guztiak jakin behar duzun da zeure eta pila izango - hasten da, behealdean bat. Pila egiten du. Zeure da han. Beste bat hurbilago hazten dute. Eta ukitu izanez gero, hori arazo bat da. Memoria agortu duzu. Baina, aldi berean, jakinda gainera non dira, zer da bai gordeta pila eta zeure. Curtis. CURTIS: Noiz dute talka, pila duten gainezkatzea bat da? JASON Hirschhorn: Noiz dute talka, hori ez da pilaren gainezkatzea. Pilaren gainezkatzea bat hainbat eremu bat da dugun baino gehiago joan daiteke nahi izanez gero. Ados, etorri egingo dugu atzera pixka batean. STUDENT: Zer da izeneko hitza denean elkarrengandik hit dute, pilatu eta zeure? JASON Hirschhorn: Oraingoz, ez kezkatu. Besterik ezagutzen - Galdera horri erantzun egingo dut klase ondoren. Exekutatu dute elkarrengandik sartu bada, agortu duzu ez da, oroimenaren, delako gehiago ez espazioan bertan. STUDENT: Barkatu, zer seg matxura bat? JASON Hirschhorn: segmentu batek errua daiteke izeneko - zergatik errua seg en izeneko araberakoa da. Batzuetan, zure pilaren gainezkatzea, bertan egingo esan seg errua error gisa. STUDENT: Zer dereferencing buruz null aldagai bat? Seg errua da? JASON Hirschhorn: Dereferencing null erakuslea - Ados, beraz erakuslea duzula duzu bada ezarri berdinak null, erakusleak, abisuaren, denda memoria helbideak beren balore gisa. Eta null erakuslea da, funtsean 0 gehiagorik, 0-garren aldagai horretan aurre. Beraz 0x, 0, 0, 0, 0, et cetera. Hori ez da memorian Helbidea 0-garren duten gure argazki batean, hori da han nonbait, hori gordeak ordenagailua da. Ez dugu onartuko ukitzeko. Beraz, zure programa exekutatzen denean, bada zerbait memoria joan nahian Helbidea 0, badaki dela duten Balio huts bat da. Deus ez, behar daki. Beraz, ez saiatu eta erabiltzen baduzu zerbait eta tratatzeko zerbait bezala edo kokaleku horretara joan nahian, zaren seg matxura bat edo erroreren bat iritsi. Du horrek zure galderari erantzuteko? Eta orain atzera egin dugu gainezkatzea pilatu. Pila gauza, you guys gisa ikusi aurretik, in - dezagun marrazteko estua pila marko bat sortu. Ikusten denek? Beraz, gure pila markoa dugu. Array bat aurrezten ari gara tokiko gisa funtzio honetan aldagai. Beraz, esan gure array bost lekuak ditu. Horietako bost guztiak bilduko dituen pila marko horretan. Harago dugu idazten hasi egiten bada array honen mugetatik - beraz sartu idazten hasteko badugu, demagun hori da 0. Horiek dira bost indizeak gure array. Indizea 5, sartu hasten gara idazten bada eta horrek ez dugu denean bat dugu tamaina 5 array, hasten sartu idazten dugu Indize 6, 7, 8, 9, Stack bat eskuratu ahal izango dugu Gainezkatzea error. Oro har, ez da - ziurrenik arazoak sartu baino gehiago joan behar izanez gero banan. Baina, oro har, ez duzu sartu arazoak gehienetan baino gehiago duzu joan asko bada eta orain arte baino gehiago idatzi duzula joan duzun itzulera horren helbidea gorako funtzioa, hau da, kokatuta dago pila marko behealdean. , Izan ere, ezta? In the - - zuk barkatu. Ez "eskubidea delako". Pila markoan, duzu Zure aldagai lokalak. Pilaren Oso behealdean marko itzulera helbidea da. Hori da funtzioa non joaten denean baino gehiago da. Eta bueltan gainidatzi baduzu helbidea, orduan pila markoak denean, duzunean pila igarotzen ari marko eta lerro bakoitzean exekutatzean, zaren zure itzulera helbidea berrietara joan bertan idatzita izan beharrean du Bat benetako. Eta hori, nola ikusi dugu segurtasun Arau-hauste batzuk ordenagailuekin gertatuko. Beraz, pila gainezkatzea, azken batean, da noiz zatia gainidatzi duzu pila zauden ustezko, erabili tokiko joan aldagai zauden ustezko erabili, eta bereziki denean gainidatziz hasten zara bezalako gauza garrantzitsu itzultzeko helbidea. Eta hor errore bat jasoko duzu. Edo agian hasiko gara are sartu idazten - esan bilaketa bitarra zen eskubidea nagusiaren gainetik. Asko gainidatzi duzu bada, zuk zezakeen nagusitan idatzi. Baina, oro har, akats bat lortuko duzu aurretik ordenagailua daki gero, delako zerbait egiten ari zarenean behar ez den egiten. Bai. STUDENT: Zein da diferentzia pilaren gainezkatzea baten arteko eta buffer gainezkatzea bat? JASON Hirschhorn: Buffer gainezkatzea mota generiko bat da zer besterik ez dut deskribatu. STUDENT: Beraz, pila gainezkatzea bat da bufferraren gainezkatzea bat adibide. JASON Hirschhorn: Zehazki. Hau array bat bezala gara daitekeela uste da buffer, sartu joan gauzak egiteko espazioa Hau bat pila bufferraren gainezkatzea da. Zeure bufferraren gainezkatzea bat izan dugu. Han buffer bat, hau ez da, askotan izan zen bada array bat zeure da, eta guk mugetatik horiek gainidatzi, orduan ez genuke zeure bufferraren gainezkatzea bat. Eta ikastaro honen esparrutik haratago, pixka bat ezberdinean ari dira detektatu. Konpiladore berezia dauka bakoitza detektatzeko moduak. Baina bufferraren gainezkatzea da generiko bat dudana deskribatu mota, horietatik bat pila bufferraren gainezkatzea zen. Duten zure galdera erantzun zuen? Gozoa. Han beste edozein galdera erlazionatutako ziren pila edo zeure egiteko? Bai. STUDENT: Badakit izan kateak free nahi duzu Oraindik dute zeure delako eta ez duzu nahi memoria Leak. Baina aldagai global askatzea duzu eta horrelako gauzak? Edo automatikoki libratuko dute? JASON Hirschhorn: Ona galdera. Cs50.h, gauza hau sortu dugu kate bat deitzen duzu. Kate bat da, benetan zer? STUDENT: Char izarra. JASON Hirschhorn: char izar bat, erakuslea pertsonaia bat, erakusle bat pertsonaiak ezagutuko ditu. Hori da katea zein den. Beraz, askatu behar dugu, zeren GetString, eta horrek asko erabiltzen dugu - izena katea GetString berdin - Gurekin buruzko memoria batzuk mallocs zeure eta ondoren erakuslea itzultzen da duen lehen pertsonaia katea, char izar bat. Beraz, itxuraz, ez baduzu izan dira zure kateak edozein free idazten beraz, orain arte deitzen duzun, duzu sido memoria batzuk leaking. Jakina ez dugu hitz egin eta, beraz, inork ez in ahaztuak egiten arazoak. Baina aurrera joan, bai. Noiz GetString deitu, zauden zeure gainean espazio batzuk mallocing. Eta ez baduzu, deitu doako geroago horretan katea, memoria leak duzu. Duten zure galderari erantzuteko? Yeah STUDENT: Beraz, ez da egin behar, ez dugu erabili itzulera aurretik eskuinera doan? Bezala, esparruan, asmatzen badut , esan dugun bezala, int nagusia, barruko kodearen duten horiek barruan da esparrua kizkur, eskuineko aurretik - dakizu non duzu litzaidake Normalean jarri bueltan. Ez librea jarri duzu horren aurretik? JASON Hirschhorn: Beraz libre jarri ahal izango duzu lekuan doan jarri nahi duzun. Horiek dinamikoki esleitu delako aldagaiak, ezin dutelako zehatz baten esparrutik kanpo bizi funtzioa, malloc deitu bada batean funtzioa bereizi, adibidez, GetString, doan deitu ahal duzu nagusian. Zuk ez duzu deitu funtzio zehatzetan non malloc deritzo. Baina agian ez duzu deitu itzultzen nagusia aurretik. Eta benetan araberakoa da. Araberakoa zergatik malloced duzula on da Lehenik eta espazioa. Batzuek deituko libratzeko nahiko azkar. Pertsona batzuek ez deitu doan arte Euren programaren bukaeran. Eta ikusiko orduan dituzten eta doakoa dena. Zergatik malloc deitzen duzun araberakoa da. STUDENT: Eta zer esango zenuke deitzen duzunean erabilera GetString bada? Zer free esan nahi duzuna? JASON Hirschhorn: Beraz, sintaxia free besterik gabe, doan, paren, itxi da paren, eta erakuslea izenarekin. Beraz, izena katea berdinen idazten baduzu GetString, jarri duzun izena hemen. Duten erakuslea izenaren da. Eta memoria hori libratzeko daki. STUDENT: Beraz, memoria hori askatzen da, erakuslea oraindik ere leku horretan seinalatzen memorian? Edo erakuslea ere hustu da Helbide puntu hori da. JASON Hirschhorn: horretan saiatu beharko dugu. Kode behar dugu. Dezagun itzuli denean lortuko dugu programazioan, eta bere kodea duten utzi. Eta irudikatu erantzuna nahi baduzu hori, zuk ere kode dezake horrek Bitartean. Baina horrek galdera bat da. STUDENT: Posible al da doan zerbait goizegi? Beraz, oraindik behar duzu zure programa, eta libratuko duzu memoria espazio hori? JASON Hirschhorn: Bai. Posible da, baduzu doan zerbait eta, ondoren, berriro erabiltzen duzu, izango duzu Errore bat sartu exekutatu. Baina zuk on da, libratuko duzulako zerbait eta gero deitu zion. Beraz, programatzaile baten akatsa izan zen. Baina bai. Duten idatzi izan duzu. Galdera gehiago - bai. STUDENT: Beraz, ustezko badira besterik askatzea da, oro har, aurretik programa bukatzen da, ez duela esan nahi du bada programa bukatzen da eta ez duzu askatzea da, memoria hori esleitu da oraindik? JASON Hirschhorn: zure programa amaitzen bada eta ahaztu duzun zerbait askatzea, gero memoria hori zehar esleitu zen Zure programaren iraupenari eragingo. Zure programa guztiz ixten denean, memoria hori ez da gertatzen bertan geratuko da betiko. Ordenagailua da smart nahikoa ezagutzen duten programa ixten denean, hura behar memoria guztia kentzeko duten zen programa hori lotuta. Hala ere, badira exekutatu dezakezu tresna antzemateko programa bat, bada orduan programa amaitu, ahaztu duzu memoria batzuk libratzeko. Eta zure hurrengo arazoa ezarri non egon malloc erabiliz dituzu eta erabiliz erakusleak, behar hau abiarazi beharko duzu Zure programa on programatu bada ikusteko, denean itzultzen nagusia, batzuk izan duzu gauzak unfreed gelditu ziren. Beraz ari ez malloced lo egingo betiko zure ordenadorean. Duten hondakin-ekoizpena izango litzateke, zeren Oso azkar, ordenagailuak memoria agortu litzateke. Baina exekutatu dute zure amaiera arte bada programatu eta ez dute askatu eta zure programaren irteerak, hori da oraindik arazo bat duten tresna hau lagungarria izango da aurre duzu. STUDENT: Is Valgrind hori? JASON Hirschhorn: Da Valgrind izeneko. Eta izango duzu - STUDENT: Baina ez dugu jakin duten galdetegia egiteko, nahiz eta? Esan nahi dut, hitz egin zen hitzaldia pixka bat. JASON Hirschhorn: Beraz Valgrind tresna duten izena da. Zer egiten duen jakitea da galdetegia nahikoa. Baina Oraindik ez baduzu erabil ezazu zure Arazoa ezarri dugu, ez delako izan bat Arazo multzo dela esplizituki tratatzen malloc edo malloc erabiliz duzu. Beraz duzu Valgrind oraindik ez erabili. Baina lehenago erabili ahal izango duzu baino beranduago. STUDENT: Ezin duzu errepikatu zer Valgrind da? JASON Hirschhorn: Barkatu? STUDENT: zer errepikatu duzu Valgring da helburua? JASON Hirschhorn: Valgrind izena da - GDB bezala zure programa arazteko laguntzen dizu Valgrind laguntzen irudikatu duzu bada gauzak ez dira libratuko Zure programa ixten denean. Beraz, exekutatu duzu zure programa da. Eta zure programaren irteerak, eta esango da malloc deitu zure programa askok honetan byte asko honetarako aldiz, eta zuk free bakarrik izeneko hau, hainbat aldiz. Eta beraz byte askotan horiek utzi duzu ari askatu gabe. Edo esango da duzun guztia askatuko. Lan ona. STUDENT: Ados. Eta deitzen Valgring? JASON Hirschhorn: V-A-L-G-N-I-N-D. STUDENT: erakusleak buruzko galdera bat. Beraz, esan dute n izarra duzu x zerbait berdin. Duten berdin, edozein ari zara jartzen Han, zer da hori barruan jarri ari zer x da seinalatuz, edo x erakuslea? JASON Hirschhorn: Can you galdera errepikatu? Daiteke esan duzun bitartean marraztu dugu? STUDENT: galdetegi batean, egia esan, da inork guri bidali dizu, izan zen, char bezala izar egia berdinen CS50 arroka, ezta? Beraz, esan nahi du horrek arroka CS50 duten zer da egia apuntatzen da? JASON Hirschhorn: Beraz, hitz egiten ari zaren char katea izar bati buruz, nola lan egiten duen? Bai. Ados. Dezagun hemen baino gehiago marraztu honetan. [SIDE SOLASEAN] JASON Hirschhorn: Beraz, aldagai hau da mota char izarra izango da. Zein handia aldagai bat da mota char star? Zenbat byte? IKASLEAK: Lau. JASON Hirschhorn: lau byte da. Zenbat Eskubide aldagai bat da mota int star? IKASLEAK: Lau. JASON Hirschhorn: Lau byte. Erakuslea bat izanez gero, orduan ez da beti lau byte, erakusleak delako, bere balioa memoria-helbide bat da. Eta memoria helbideak CS50 on tresnaren dira lau byte luzea. Beraz, GetString, edo dugunean deitzen dugun esan, stringname berdin, eta gero in komatxo kate bat jarri, ari gara - bai, hori pixka bat hainbat. Dugu GetString dezaket adibide gisa. Edo char izar zerbait katea izango dira. Sentitzen dut, emaidazu adibidea irakurri? STUDENT: char izar egia berdinen "Cs50 arroka" komatxo. JASON Hirschhorn: Beraz, izar honek, hau aldakorra x hau deitu dugu gure helburu generikoak. X izeneko aldagai bat sortu dugu. Mota char izarra da. Serie baten erakuslea da karaktere. Beraz, hemen behera - Beraz, hau da nola litzateke hau memoria batean lan egiteko. Hau memoria-helbide bat gordeko luke. Memorian gorde helbidea litzateke matrizeko lehen karakterea. Eta orduan, jarraitu duzun erakuslea, duzun lehen karaktere lortzeko. Eta gauza hau irakurtzen ari zaren bezala Kate bat, zure ordenagailua ez da smart Nahikoa da jakitea, irakurtzeko gauza hau osoa daukala arte erreakzio bat 0. Baina zuk irakurtzen ari bada pertsonaia bat Garai batean, hain bitartez errepikatzean zaren kate hau, gero, besterik irakurri bat aldi berean izaera lortu arte behar backslash 0. Agian ez erantzun zure galdera, baina. STUDENT: Bai, baina ez duzu malloced espazio hori oraindik erakuslea da. JASON Hirschhorn: Beraz, ez nago oso ziur zehazki zer bilatzen ari zaren, Ez nuen galdetegi hori egin duelako. Duten ustezko lagungarria izan nahi du TF beste baliabide. You buruzko kate bat sortzen ari bazara pilatu edo tokiko aldagai gisa, bertan egingo nahiko luke karguak sorta baino oro har, char izar bat seinalatuz katea beste. Baina ez dakit. Duten beste erakuslea izan daiteke kate pila baita. Bai. STUDENT: Badakit behar duzula esleitu memoria erakuslea da agertzen ohitu barruan deklaratu Funtzio beste. Ez da gauza bera egin behar da bada behar duzun ari nagusiaren barruan deklaratu, erabiltzen ari zaren nagusien barruan? JASON Hirschhorn: Beraz, bai. Erakuslea deklaratzeko edozein dezakezu memoria memoria helbidea. Memoria lokal baten helbidea izan daitekeela aldakorra, oftentimes ordea, jendeak ez deklaratzeko memoria helbideak dute joan delako aldagai lokalak izateko behin kanpoan funtzio hori ematen du, eta horrek Horregatik, oro har, gauzak malloc dugu. Baina bai, erakuslea deklaratzeko izan duzu beste tokiko aldagai izateko. Besterik ez da, oro har, ez da egin. Baina hori begirada bat hartu ahal izango dut Gauza zehatz klase ondoren. Bai. STUDENT: Nik uste dut, hau da, nolako zer gertatzen ari den galdetu du. Badirudi arraroa du egon behar hasieratzean ez bezala erakuslea helbidea, baina baita zer balio bat dirudi. Badirudi bezalako CS50 da zer barruan gauza diren adierazi eta Ez da benetako helbidea, ezta? JASON Hirschhorn: Beraz, ez da kasua, baina. Hori ez da zer gertatzen ari den. Noiz char izar bat aldarrikatu duzu, memoriaren helbide bat da. Erakusleak memoria helbideak guztiak dira beste zerbait seinalatuz. Zerbait, bestela ezin da izan pila, baina ia beti piztuta Bide egiterako ikusiko dugu zeure. Baina stringname bikoitzeko aurrekontua berdinen ", GetString" duten ikusi ahal izango dugu eta guk horren bidez begiratu eta duten kodea. GetString kate ari ez atalean gordetako aldagai hori, edo dena katea izen da ari ez duten atalean gordetako aldakorra, ez delako nola erakusleak lan. Ez duela zentzurik? STUDENT: Bai. JASON Hirschhorn: Ados. Zorionez, ez zen inori nahasia. Baina izan bada, dugu begiratu ahal izango da berriro pixka batean, zeren benetan goaz izango dela espero zerbait kode kateak lan eta sentitzen duzu laguntzeko gehiago haiekin eroso. Horiekin lotura duten beste edozein galdera gaiak edo beste gai horretan Jarri dut atzera? Eta - oraintxe. Bai, Alden. ALDEN: Beraz, hau da erabat zerikusirik, baina ezin besterik joan baino gehiago dugu benetan azkar zer jakin behar dugu 32 eta arteko ezberdintasuna 64-bit makina? JASON Hirschhorn: Bai. Beraz, 32 bit zenbat byte? ALDEN: lau byte da. JASON Hirschhorn: lau byte da. Eta 64 bit da zenbat byte? STUDENT: Zortzi. JASON Hirschhorn: Zortzi byte. Beraz, berriro ere, zortzi bit, byte bat da. Zure CS50 tresnaren da 32-bit makina bat. Beraz, memoria-helbideak lau byte luzea. Badira 2 dira 32 arte memoria helbideak. 0 eta 2 32 ken 1. Eta ez naiz positiboa, baina hori da seguruenik zer behar duzun esparrua 32-bit makina bat dakit, hori memoria helbideak dira, berriro ere, lau byte luze, eta gehienezko zenbatekoa da memoria helbideak. Halaber, datu motak - honek zerbait izan liteke bai hori da nabarmendu behar. Datu mota baten tamaina araberakoa on makina lanean ari zaren. Beraz char bat, pertsonaia bakar bat, nola gure CS50 tresnaren on byte asko? Byte bat. Eta, egia esan, byte bat bezala bai 64-bit makina batetan. Eta datu-mota gehienak dira kopuru bera bi makina bytes. Baina datu-mota batzuk desberdina izango da bai makinak. Beraz, potentzialki izango litzateke Jakin behar duzun gauza bakarra. Hala ere, hori, uste dut, mugetatik kanpo dago - Ia positiboa naiz, atzera begiratuz gero galdetegiak zaharra at, dio, bere gain hartzen arazoak erabiltzen ari zaren kodifikazioa 32-bit makina bat. Baina badira, batera joan zela eta hona Kasu interesa Oraindik ere, badira Datu mota berdinak dira tamaina makinak guztietan. Duzu antzeko zerbait ikusi dut bada uint32_t, edo may you may ez ikusi ahal izan duten. Duten datu-mota bat da. Duten, esaten be 32 bit axola zaio hau zer da makina da. Beraz, jendea eramangarri idazten kodea, dute ziurrenik ez ints erabili. Ordez erabili beharko dute beste datu hauek dakite duten mota bera izango da tamaina makina bakoitzean bakarra da. Madhu. Madhu: inguruko galdera bat izan nuen konpilazio prozesuak. Beraz, zuk erabiltzen duen programa bat idazten ari bada CS50 edo antzeko zerbait liburutegi bat duten bezala, badakit duten Liburutegian ditu, eta, uneren batean, izan bildu eta lotuta sartu Baina zenbat dira A gertatuta Zure programa batzeko? Zer liburutegi prozesu horren zati gertatzen denean Oraindik zure programa propioa konpilatzean? JASON Hirschhorn: Beraz, goazen baino gehiago oro har, prozesu honen urratsak. Zure. C fitxategia idatzi duzu. Zure. C fitxategian, besteak beste, zuk # ​​zure goiburua liburutegiek, adibidez, cs50.h. Zer esan nahi du, besteak zorrotz lerroa zure programa egin? Akchar. AKCHAR: prototipoak gehitzen da goiburuarekin egindako funtzioak liburutegietan fitxategiak. JASON Hirschhorn: Zehazki. Funtzioa prototipoak horiek gehitzen Zure kodea da. Beraz, zure kodea konpilatu ari da Hastapenak, konpiladore daki funtzio horiek benetan existitzen, eta nonbait definitu dute. . H fitxategiak ez dituzte barnean hartzen du funtzio hauen definizioak edo nola benetan lan egiten dute. Cs50.h zerbait esaten duen barne hartzen GetString benetako gauza bat dela gerta daiteke. Eta standardio.h dio printf da Gauza erreal bat gerta litekeen. Beraz, zure c honekin hizkuntza. Goiburua fitxategia lortzen batzuk bihurtu makinak irakurgai kodea; azkenean lortzen bitar bihurtu kodea, 0 eta 1. Eta hori kodearen da, azken finean, lortzen exekutatu. -L cs50 line - adibidez, denean Clang idazten ari zaren - eta ondoren, besteak beste,-l duzu cs50, duten idaztean sartu Eta hori ikusten duzu. Noiz egin idazten duzun, duzu ikusi lerroa sortu hemen. Eta hori, ikusiko dugu bigarren bat denean kode dugu edo ondorengo dugunean kodea da. Baina hori-l cs50 lerroko zerbait egiten baino pixka bat desberdina # besteak beste cs50.h. Zer egiten du hori l cs50 line? Avi? AVI: hura lotzen duen esan nahi dut funtzioa liburutegian deitu du. o fitxategiak bezala. JASON Hirschhorn: Beraz, oso itxi, ez bada gelditzea-on. -L cs50 fitxategi bitar hartu eta konbinatzen ditu zure fitxategi bitarra. Beraz cs50.h, ez da inflexio puntua ez C hizkuntzatik cs50.h behin bitarra egiteko denbora bakar erabiltzen ari da. Silly izango litzateke, hori delako denbora asko alferrik litzateke. Beraz, dagoeneko konpilatu da sido eta exekutagarria bihurtu zen. Eta orain da batu egingo Zure amaieran agiriarekin. Beraz, horiek 1 eta 0 dira joan Zure direnak batu eta 0-ren amaieran. Beraz, gaur egun, benetan izango duzu benetako 1 eta 0 nola GetString definitzen duten, adibidez, lan egiten du, edo nola printf, adibidez, lan egiten du. Eta informazio gehiagorako, ez da bat duten Nate ematen Konpilatzaileak laburrak check out behar duzu doan urrats hauek bidez. Baina - bai. STUDENT: al dira beti in o fitxategiak. Oraindik liburutegi formularioa dute, lotuta batu prest, - bezala Oraindik dute bitar kodean? JASON Hirschhorn: Ados. Zer - STUDENT: Dela beti kasua liburutegiak denean horiek lotzen duzu? JASON Hirschhorn: Bai. Beraz, ez da. S fitxategiak, zein izango da makina kodea; ere izango dira Zuri bat zailago. Zuk ez duzu nahi dutenek kezkatu. Baina, oro har, bai, egingo dute izango dira. o prest joan fitxategiak. STUDENT: Beraz, noiz ontziratu duzu liburutegi bat, ez bakarrik ontziratu duzu ditu. h eta. o? Ez duzu ere. C edo. Z ontziratu. JASON Hirschhorn: So - eta hau labur honetan dago baita, bada Informazio hau dela dirudi, bat datozen Apur azkar. Baina Konpilatzaileak laburrak honi buruz hitz egiten baita. Denean liburutegi bat zenezakete, ontziratu baduzu ditu. h, goiburu-fitxategia, horiek funtzioa prototipoak, eta 1-en eta 0-ren, hori da eman behar duzun guztia. Zuk ez duzu eman nola funtzioa egiten du lan,. C fitxategia. Delako abstrakzioa puntua, edo APIak seinalatu, SPL honetan puntua, Stanford liburutegia eramangarri, hura da zuretzat ez kezkatu nola berria GRect lan egiten du, edo nola mugitzeko lanak, edo nola gehitu lanak. Guztiak jakin behar duzun da Gehigarrien duten funtzio hori ahal duzun da erabili, eta hau ez da. Beraz, benetan behar ez daki nola Da C. You idatzitako besterik behar Badakizu, hemen funtzioak, zer egin, eta hona hemen 1 eta 0 denean benetan horiek erabili nahi duzun. Cool. Konpiladoreak galdera gehiago edo taula gainean bestelako gaiak? STUDENT: galdera bat daukat funtzio errekurtsiboa ezartzeko. Errekurtsibitate buruzko galdera bat. Etorriko litzateke sentsazioa izan nuen. Hargatik azkar bidez joan jakin batekin errekurtsibitate Adibidez, funtzioa faktore bat. Honen adibide bat da delako askotan sortu dator edo erabiltzen da errekurtsibitate ilustratzeko. Beraz, "4!" 4 faktore bezala irakurri. Eta zer esan nahi du 4 faktore? Zer ari da hori egiten? Nola ez 4 faktoriala kalkulatzeko duzu? 4 aldiz 3 aldiz 2 aldiz 1. Beraz, beste 4 faktore idazteko modu da hau idazteko. 4 aldiz 3 faktore. 3 faktore delako 3 aldiz 2 aldiz 1. Beraz, 4 aldiz 3 faktorial 4 da aldiz 3 aldiz 2 aldiz 1. Horregatik faktoriala da handia errekurtsibitate hautagai, delako han argi duten zerbait da gertatzen eta gehiagoko eta gehiagoko batean arte gauza kopuru txikiagoak amaierara iritsi. Noiz iritsiko gara 1, 1 faktore 1 da. Ezin duzu askoz urrunago joan. 0 faktore ere 1 bezala definitzen da. Beraz, noiz lortuko 1 edo 0, zu amaieran, eta ahal duzun hasteko atzera gora. Recursive bat idatzi nahi, beraz, badugu funtzioa faktore bat kalkulatu ahal izateko, batzuk idatzi goaz hori orain pseudocode. Pseudocode hori idatzi aurretik dugu - Emango dizut mutil minutu pare bat sasi-kodea idazteko edo, besterik gabe, uste Horri buruz - Bi gauza guztietan daude Funtzio errekurtsiboak behar. Zer dira bi gauza horiek? JACK: berez deitu ditu. JASON Hirschhorn: Noah? Oh, Jack. Anima zaitez. JACK: berez deitu ditu. JASON Hirschhorn: Beraz errekurtsiboa funtzioa dei errekurtsiboa bat behar du, bat berak deitu. Hori da bat. Eta zer beste gauzarik? JACK: base kasu bat. JASON Hirschhorn: base kasu bat. Base kasu bat da, hemen denean geldituko gara. Beraz, zure funtzioa lortzen izeneko. Base kasuan lehen dator. Oraindik amaieran bada jakin nahi duzu. Eta ez bazaude amaieran, zuk zure dei errekurtsiboa egin. Eta funtzio honen bidez berriro joan beharko duzu, begiratu berriro zure oinarria kasuan. Oraindik amaieran ez bada, egiten dituzun beste dei errekurtsiboa, et cetera, et cetera. Horregatik funtzio errekurtsiboa beti oinarri horiek kasu eta horiek behar dei errekurtsiboak. Ez baduzu, dei errekurtsiboa bat izan, hura ez litzateke funtzio errekurtsiboa izango. Ez baduzu dute oinarri kasu bat, betiko joan nahi duzun eta han amaiera ez litzateke. Eta base kasuan beti dator lehen, Beti izango duzu begiratu nahi duelako Lehenengo bazaude amaieran. Pseudocode batzuk egiten dugu, beraz, aurretik, zergatik ez minutu bat eman beharko duzu pentsatu nola recursive funtzioa faktore bat idatzi behar litzateke? Halaber, asko egiten ari zaren bezala, idatziz it out paper orri baten gainean dago zer ari zaren behar joan galdetegiaren egin bihar. Praktikan, beraz, seguruenik ona egiteko ziur kodearen idazten ari zaren paper on behera - edo hori egin ahal izango duzu. Badakizu non puntu dira. Sintaxia gogoratzen duzu. Zu ez egon behar gai delako bat konpiladore esango akatsik egon zaren. Ere, lerro horiek, bihar, batera denean arazoak kodifikazioa zuk, zuk daude aldiz oldartu, edo Oraindik oso balitz nola zauden ustezko gisa nahastu gauza zehatz idaztea c, hara sasi-kodea idazten duzun zilegi litzateke edo iruzkinak idazteko baita. Han bat kreditu partziala delako galdetegiaren galdera asko. Beraz duzu rushed liteke, edo zuk agian besterik nahastu behar. Iruzkinak edo sasi-kodea idazten modu askotan zarela kreditu partziala lor daiteke. Beraz, ez zerbait utzi hutsik quiz da. Ez dago zigorrak gauzak jarriz sartu Izan ere, sasi-kodean edota jarriz iruzkinak da kalifikatzailearen laguntzeko joan irudikatu benetan badakizu zer saria aipatzen dituzu, eta agian duzu horretarako kreditu partzial batzuk. Lerro horiek ere batera, idatzi argi eta garbi. Ezin dugu benetan zer, idazten ari bazara Ez ari gara zuri deitzeko joan gauerditik bihar figura at zer idatzi duzu. Besterik ez gara off hartzeko puntuak egingo. Idazteko, argi eta garbi, beraz, entzun ahal izango dugu, edo, hobeto esanda, irakurri ahal izango dugu zer idatzi duzu. Eta bi esaldi dio bada, ez paragrafo bat idazteko. Jarraitu argibideak. Idazteko, argi eta garbi. Eta iruzkinak horietan idatzi edo galdera pseudocode duten Could Sari kreditu partziala. OK, goazen faktore. Beraz funtzioa faktore bat dugu. Benetan idatzi C banintz, zer izenaren aurretik jarri behar dut funtzioaren? Itzulerako mota, izan ere, honetan Kasu, eman int dugu. Eta gero, kizkur giltza barruan, da kizkur giltza barruan zer doa funtzio bat? IKASLEAK: argumentu mota. JASON Hirschhorn: Bere argumentuak. Beraz, faktore izango da seguruenik argumentu bat hartzen. Da ziurrenik: argumentu bat bakarrik hartzen. Eta esaten dugu hartuko da x izeneko zenbaki oso bat. Eta berriro ere, prototipoa idazterakoan funtzio bat edo funtzioa idatziz Zure kodea da definitzeko, aurretik dauden datu-mota eta izena idatzi funtzio hori baino ez dugu aldagai hori. Beraz, zenbaki batzuk pasatzeko dezakezu hau sartu funtzioa, hura egingo aipatzen x gisa barrutik. Gure funtzioa faktore dugu. Bi gauza, oinarri kasu bat behar dugu eta dei errekurtsiboa bat. Zein da faktore oinarri kasuan? Norbait idatzi ezazu eta nork ez ditu Oraindik hitz egiten, zer oinarria da faktorial kasua? STUDENT: n da gutxiago bada 2 baino, itzuliko 1. JASON Hirschhorn: n badago 2 baino gutxiago, itzuliko 1. Zait gustatzen, zeren horrek bere gain hartuko ditu, 0 eta 1. Beraz, egin dugu x <2, itzuliko 1. Dugu pasatu bada get 0, lortuko badugu gainditu 1, funtzio hau izango berehala itzuliko 1. Kopuru handiagoa batzuk pasa dugu gero edo baino 2 berdina, goazela Gure dei errekurtsiboa izan. Eta beraz, nola duten lanera joan da? Can norbaitek nor honetan lan egin nork ez du oraindik hitz egiten ematen dit dei errekurtsiboa funtzio horretarako pseudocode? Kopurua x batean ezagutu genuen gainditu bada eta 2 baino handiagoa da, zer egin nahi dugu? Guk ere izan Adibide on idatzizko duzula aholku bat eman dezake alboko. STUDENT: Dei x aldiz faktorial x ken 1 of? JASON Hirschhorn: Zehazki eskubidea. X aldiz itzuli goaz x ken 1 faktoriala. Eta, hori idatzi nuen, nahiz eta, Funtsean, zer ingelesez esan dizu, funtzioa faktore hau berriro deitu egingo dira. Egingo x ken 1 abiaraziko da. Osoko zenbaki batzuk itzultzeko aukera izango da, eta gero biderkatu egingo bi hauek elkarrekin, eta balio hori izango da edozein dela ere, honek deitzen itzuli funtzioa faktore, eta horrek agian instantzia bat izango funtzioa faktore hau. Beraz recursive baten adibidea da funtzioa, oso bat recursive funtzio sinpleak. Baina gehienak horrela izango. Duzu recursive on bat egin nahi baduzu galdetegia erronka, saiatu coding bitarra bilatu errekurtsiboki. Delako bilaketa bitarra egin baduzu Arazo multzo hiru, seguruenik ez duzu iteratively berriz, begizta batean. Baina era berean idatzi behar da errekurtsiboki. Zeure idatzi behar joan zaren duten batzuk hartzen aparteko funtzioa komando lerroko argumentuak desberdinak - edo ez komando lerroko argumentuak, zenbait dituen argumentuak besterik erregularra. Baina bilaketa bitarra idatzi izan duzu errekurtsiboki baita. STUDENT: Beraz, gainera, ezin duzu idatzi dute, ordez x ken 1, duzun ere idatzi zitekeen x ken ken, edo izan duzu idatzizko ken ken x. Ezin azaldu besterik benetan azkar zergatik horiek gauza desberdinak izango litzateke, arteko aldea zein den bezala x ken ken eta ken ken x? JASON Hirschhorn: Ez, ez naiz , horretan joango gara. Baina zurekin hitz egingo dut horri buruz ondoren klase. x ken ken, ken ken x decrement x 1 eta. Baina egin dute pixka bat ezberdinean. Baina ez dut horretan sartu nahi. Errekurtsibitate buruzko beste galdera edo funtzio hori? Hori ez da benetan, nahiz pseudocode. Hori da, funtsean in kodearen C honetan zuk idazten litzateke. Ados, beste edozein galdera gaiak hemen inguruan? Bai. STUDENT: rundown azkar bat daukat Puntu eta doitasun flotatzen. JASON Hirschhorn: askea Puntu eta doitasun. Can norbait benetan azkar emaidazu rundown Puntu eta doitasun flotatzen? Horretarako zure izan duzun guztia Arazo multzo, beraz Oraindik guztiak hura ezagutzen. Edo agian duzun guztia ez. Edozeinek? Give me hasi spot bat. Puntu eta doitasun flotatzen. Zein da arazoa? Bai. Victoria? VANESSA: Vanessa. JASON Hirschhorn: Vanessa. Barkatu. VANESSA: Badira kopuru mugatu bat besterik ez ordezka daitekeen zenbakien Oraindik on bat, delako gure kasuan, 32 bit-sistema bat. Beraz duzu motatako behar zenbaki batzuk osatzen. JASON Hirschhorn: Beraz, zehazki eskubidea. Badira soilik kopuru jakin bat ordezka daitekeen zenbakiak. Bi zenbaki oso handiak biderkatu baduzu, zenbatekoa gainezkatzea zitekeen espazioak irudikatu behar duzu zenbaki oso bat. Horregatik, batzuetan erabiltzen dugu bat luze luze ordez int bat. Duten espazioak gehiago ditu. Duten kopuru handiago bat eduki dezakete. Puntu mugikorreko doitasun zerikusia du , duten baina baita ere hemen egin behar du Izan ere zenbakiak hamartar daudela ez beti irudikatzen. Barkatu. Dezagun jarri me back up hau. Zenbakia hamartar 1.0 ez da beti Zu bezalako irudikatzen espero, 1,000000000. Da batzuetan gisa irudikatzen 1,000000001 edo 0,999999999. Litekeena da, nahiz eta 89 bota behar nonbait han. Zenbakiek hamartar horiek ez dira zehazki egiten duzun bezala irudikatzen espero ordezkaritza izan dezaten. Beraz, arazo girotuta - izan zen bi? - Arazo bi, non tratatzen dugu ezarri puntu mugikorreko zenbakiekin, noiz nahi izan dugu zehazki nahi duguna adierazteko haiek irudikatu horiek, kopuruari pennies, edo zentimo kopurua, horiek biderkatu dugu 100. Horietako biribilduko dugu. Eta, ondoren, moztu dugun guztia du dezimal atzean. Zela bermatzeko dutela litzateke benetan berdinak zehazki nahi duguna berdinak haiek. Zerbait hartu duzu hori delako bat flotatzen eta piztu int bat sartu, zuk moztu eskubidea dena du dezimal. Puntu mugikorreko zenbait delako imprecision, 100.000 izan liteke 99,999999999 gisa irudikatzen. Eta zuk ebaki besterik off guztia bada eskuinetik berehala, zu joan behar okerreko zenbakia lortzeko. Bai. STUDENT: dut galdera bat izan galdaketa buruz. Zer ordena gertatzeko in da? Duzun karroza egin litzaidake bada, parentesi artean, 1 banatuta 10, du ez 1 10 banatzen da, ondoren lortu 0,1, gero buelta mugikor bat sartu? JASON Hirschhorn: Ez baduzu flotatzen 1 10 arabera banatzen da - STUDENT: Bai, eta orduan berdin - Ondo, beti egin ohi da berdinetan egiten dute - Bai. Mugikor bat egin nahi duzu, ezta? JASON Hirschhorn: Ados, beraz ari gara joan erabili dela kalkulatzen sartu segue galdera hauen erantzunak coding bidez. Baliteke zuk asko izan delako minutuko galdera horiek, eta modu ona horiek konpontzeko coding bidez. Beraz, eskubide hori kode orain joan, eta orduan ari gara atzera joan eta joan galdera izan duzu kodea. Beraz, lehen lerroan - Ez behar dut idatzia da - zer da lehenengo gauza egin nahi dugunean ireki gedit fitxategi berri bat? STUDENT: Include. JASON Hirschhorn: Include zer? STUDENT: CS50 liburutegian. JASON Hirschhorn: Ados. Zer gehiago sartu behar dugu? Besterik ari gara zer gertatzen den ikusteko joan zerbait bota duzu mugikor bat da. Baina zer egiten ari bagara, besteak behar dugu C programa bat idazteko joan? STUDENT: Standard I / O. JASON Hirschhorn: stdio.h. Egia esan, ez dugu behar, horretarako programa, cs50.h, horri nahiz beti lagungarria da, besteak beste. Baina beti stdio.h behar dugu. STUDENT: C coding Noiz? JASON Hirschhorn: C. coding When Beraz. C fitxategi hau gorde dut. Batzuk polita sintaxiaren nabarmentzea lortu dut. Nagusiaren barruan void idatzi nuen. Zer esan nahi du hutsunea? STUDENT: Ez du inongo hartu komando lerroko argumentuak. JASON Hirschhorn: Void bitartez, honetan kasuan, nagusiak ez du inolako hartu komando lerroko argumentuak. Beste kasu batzuetan, funtzioa esan nahi du ez du komando-lerroko argumentuak hartu. Edo funtzioa, void idatzi beharko banu izateko main (void), duten nagusiaren esango lukeen ezer ez itzuliz. Beraz, hutsunea besterik ez du ezer esan nahi. Zer idatziko nuke ziren I nahi izanez komando lerroko argumentuak hartu? STUDENT: int arku c katea arku v JASON Hirschhorn: int argc katea argv. Eskubidea dela? STUDENT: char izar argv parentesi bat da. JASON Hirschhorn: Beraz, idatzi ahal izango duzu katea argv parentesi edo char izar argv parentesi artean, baina parentesi beharrezkoa da. Delako argv array bat da kateen, gogoratu. Ez da kate bakar bat. Beraz, katea argv da, hemen argv izeneko kate bat. Katea argv Parentesi da, hemen kateak array bat. Beraz, int argc katea argv parentesi zerbait izango litzateke duten I seguruenik idatziko litzateke. Beraz, zenbaki oso bat gorde nahi duzu? STUDENT: Bai, zenbaki oso. Edo karroza batean. JASON Hirschhorn: karroza batean? Bezala, x karroza berdinen 1 10 arabera banatuta. JASON Hirschhorn: Ados. Nola ez mugikor bat atera dut inprimatu printf in? Zer? STUDENT:% f. JASON Hirschhorn:% f. Zer da zenbaki oso bat? d o i. Zer da kate bat? STUDENT: s. JASON Hirschhorn: s. Nola ez, lerro berri bat lortu dut? STUDENT: Alderantzizko barra n. JASON Hirschhorn: Zer egin behar dut itzultzeko eskailerak nagusia behar bezala bada? STUDENT: 0. Ez lerro hori idazten, nahiz eta behar dut? STUDENT: N º Ados, ez dugu idazten, eta gero. Daiteke denek irakurri? Apur bat txiki ikusten da. Daiteke mundu guztiak ikusteko, edo egin beharko lukete Handiago egiteko I? Uste dut kamera, egin dugu pixka bat handiagoa da, baina. JASON Hirschhorn: honi buelta eman nahi badut . C exekutagarria sartu fitxategia, zer ez idazten dut? STUDENT: Egin proba. JASON Hirschhorn: Barkatu? STUDENT: Egin proba. JASON Hirschhorn: Egin proba. Buruz hitz egiten ari ginen lerro hau lehenago. Clang. Zer da clang? Konpiladore baten izena. Zer da lerro hau? STUDENT: ezartzen du gora GDB erabiltzeko. JASON Hirschhorn: Sets GDB erabiltzeko sortu da. Lerro hau, zer da hori? STUDENT: Iturburu kodea. JASON Hirschhorn: Hori da iturburu fitxategia,. C fitxategia. Zer egin bi lerro hauek? Edo bi ez lerro hauek. STUDENT: izen da probatzeko. JASON Hirschhorn: Beraz etenaren o dio, izendatzeko zerbait ezberdina izan. Eta hemen da proba deitzen ari zaren. Ez dut ez bada dute horretan, zer hau izendatzeko litzateke? STUDENT: A.out. JASON Hirschhorn: A.out. Zer egin? STUDENT: Loturak matematika liburutegian. JASON Hirschhorn: It lotzen matematika liburutegian. Ez genuen besteak beste, matematika liburutegian, baina hori da hain ohikoa geroztik, dut dute idatzizko marka beti sartzea matematika liburutegian. Eta, orobat, horretan sartzen dira CS50 liburutegian. Ados, beraz, dugu zerrendatu bada, orain dugu test izeneko exekutagarria. Hura exekutatzeko, proba idazten dut. Nire puntu mugikorreko dela ikusten dut, espero bezala, funtzioak 0 itzultzen du. Horrek - beraz - STUDENT: Ondoren jarri baduzu flotatzen, orain, bezala karroza bota duzu - JASON Hirschhorn: Cast 1 mugikor bat hemen? STUDENT: Ez, bota du gauza osoa - bai. Zenuen besterik ez bada ere, ez litzateke horregatik da 0.1? JASON Hirschhorn: Ados, beraz, oso azkar, 1 10 arabera banatzen da, horiek dira ari banatuta osokoak. Beraz, osoko zenbakiak zatitzea duzu, Oraindik dute 0, eta aurrezten ari zaren 0 batean flotatzen, barra delako besterik zatiketa osoa. Beraz, gaur egun zerbait inflexio ari gara karroza batean. Ikusi dezagun zer gertatzen den. Proba egin dugu. Beraz, gaur egun ikusten dugun barra hori ez zen Zatiketa, flotatzen zuten Puntu banaketa. Delako bere argumentuak bat izan dira mugikor bat bota. Beraz, gaur egun, esaten zen hau tratatzeko zatiketa bezala aurre ari gara puntu mugikorreko, ez osokoak ere. Eta beraz, erantzuna espero dugu lortuko dugu. Ikusi dezagun zer gertatzen den - trabatzen. Gehiago hamartar inprimatu nahiko banu lekuak, nola izan behar dut? STUDENT: Point dot f, edo asko bezala hamarrenekin nahi duzun bezala. JASON Hirschhorn: So I inprimatu 10 lekuak hamartar. Eta orain ikusten dugun ari gara stuff bitxi batzuk. Eta hori zure galderaren atzera egingo buruzko puntu mugikorreko imprecision. Han hemen gordetzen dira gauza arraroa da. Ados, zure galderari erantzun du? Zer gehiago nahi zenuten azkar kode? STUDENT: nahi dut ala ikusten ez, gora libratuko duzu erakuslea batzuk izanez gero, erakuslea duten oraindik ere izan gordetako ala zer izan da helbidearen Aurretik seinalatuz. JASON Hirschhorn: Ados, beraz, utzi egin dela. Char izar ptr, hau aldagai bat sortzen mota char star ptr deritzo. Nola ez idazten dut malloc? Alden? ALDEN: Just malloc. Baina gero tamaina izan behar du, eta Kasu honetan, uste dut zuk litzaidake egon seinalatuz char. Beraz char litzaidake. JASON Hirschhorn: Ados, beraz, gehiago generikoki, Inside - dezagun editatzeko. Malloc barruan, kopurua nahi duzun zeure on bytes. Oro har, zer ikusi dugu gaudela egiten da malloc goaz kateak, adibidez, edo zenbaki osoen array. Beraz, 10 zenbaki osoko, edo 10 nahi badugu karakteretan, 10 emango digu 10. Eta gero chars tamaina luke gurekin chars tamaina duen, eta bertan, Kasu honetan 1 byte da. 10 byte lortuko dugu. Int tamaina idatzi egin behar izanez gero, hori ezagutzera emango litzateke 40 byte. Beraz oro, malloc barruan Nahi duzun byte kopurua da. Kasu honetan, ari 1 byte lortzean dugu. Zein erabilera bitxi bat dirudi malloc, baina gure helburu zentzurik. Beraz, ez da hori. Free deitu goaz. Ditugun kentzeko eta ptr erabiltzen dugu berriro. Eta zer ez zuen begiratu nahi duzun? STUDENT: nahi dut behar den ala ez egiaztatzeko edo ez, ez zen ezer barruan. JASON Hirschhorn: Beraz, ala Adierazi ezer nahi du? STUDENT: Bai, hain zuzen, ea oraindik ere memoria-helbide bat izan zuen. JASON Hirschhorn: Beraz, nahi duzun ptr balioa egiaztatzeko? STUDENT: Bai, hain zuzen. JASON Hirschhorn: Zer egin, hemen idazten dut balioari begiratu nahi badut puntua - zer da, Jordan esan zuen, balioa? Edo zer da ptr barruan gordetzen? STUDENT: memoria-helbide bat. JASON Hirschhorn: memoria-helbide bat. Beraz idazten dut, besterik gabe, hau bada, egingo emaidazu ptr balioa. Eta nola ez dut inprimatu memoria-helbide bat? Zer da formatu katea memoria-helbide bat? STUDENT:% p. JASON Hirschhorn:% p. % S katea da. % Erakuslea for p. Eskubidea dela? Duten eskubidea da. Beraz ptr berdin - hala ere, zerbait dauka. Hau da, ziurrenik gehiago bat Galdera interesgarria. Zer egiten du lerro hori? STUDENT: Seg matxurak. JASON Hirschhorn: Zer? STUDENT: uste dut matxurak seg da. JASON Hirschhorn: Hm? STUDENT: uste dut seg izango da errua. JASON Hirschhorn: Beraz, lerro hau kodea, izar ptr du, zer esan nahi du izarraren? STUDENT: edukia. JASON Hirschhorn: Bai. Joan edukiari lortzeko. Beraz, hau da memoria joan aurre han eta eman zidan. % C erabiltzen dut hementxe delako han han gordetzen diren pertsonaiak. Beraz, joan helbide dugula joango gara besterik ikusi - edo ziurrenik izango da izan Pixka hau desberdina denbora programa exekutatu dugu. Baina joan beharko dugu helbide horretara eta badakigu oraindik badago eta ikusi zer han. Beraz, ez zuen seg errua. Ez bakarrik ez ematen diguten ezer. Izan liteke, benetan eman digu zerbait, ezin dugu ikusi. Eta hori ideia hori atzera doa - eta ez gara gehiegi sartu lortzeko ari hau, hori baino haratago delako Ikastaro honen esparrua. Baina hitz egin dugu hemen, badugu array mugetatik haratago joan by 1, agian ez dugu arazorik izango. Batzuetan, joan off besterik ez duzu 1, zerbait gaizki egiten ari zaren, eta zuk liteke arazoak lortu. Baina ez duzu beti arazoak lortu. Araberakoa zenbat gauza txar bat duzu dezaket, arazoak lortu bazoazela. Eta hori ez da, esateko izan sloppy zure kodea. Baina esan da, programa ez beti irten, nonbait, joan nahiz zu ez luke joan. Horren adibide ona da, asko Beren arazoa pertsona ezarri 3, zein zen 15, ez konprobatu taula mugetatik. Beraz, begiratu ezkerrera duzunean, begiratu eskuin, goitik begiratu, begiratu beheraino. Baina ez duzu egiaztatu bada ikusteko goiko zen benetan taula gainean izango da. Eta nork egin duen jende asko eta aktibatuta horretan, euren programan lan egin primeran, non taula zela delako memorian gordetzen dira, banan joan ezkero gainetik edo egiaztatuko duen memoria helbidea, han ez zen ezer bereziki horri buruz izugarria, horrela, programa ez zen nahi duzun Yell. Baina oraindik dugu hartuko luke off puntuak bada ez duzu egiaztatu, duzulako ziren zerbait ez zinen egiten ustezko egin, eta izan dezakezu arazoak ahaztuak. Aurka daude, nahiz eta, seguruenik ez duzu. Beraz, hau da duela erakusteko, bai, da oraindik gaude joan daiteke. Eta ez ari gara lortzean kasu honetan arazoak. Irakurri egiten saiatu ginen bada hurrengo 100 karaktere, genuke Ziurrenik arazoak lortu. Eta hurrengo 100 irakurketa moldatu daitezke karaktere batzuk eginez nahi baduzu Sort begizta. Bai. STUDENT: esleitutako ziren geroztik dugu espazioaren benetako balioa bat, ez genuke benetan ezer ikusteko gai. Egiten saiatu beharko dugu ezarpena dela c berdinak edo zerbait gustatzen? JASON Hirschhorn: Great galdera. Nola ez, balio hori ezarri dut - zer lerro kode do idazten dut on line zer esan dizu zazpi egin? STUDENT: Star ptr berdinen bakar aurrekontua barra arrunta amaituko c. JASON Hirschhorn: Beraz jarriz pertsonaia bat, c, kokaleku horretan, delako berriro, izarra duten esan nahi du ez joan. Eta ezkerreko eskua bestaldean erabiltzen denean zeregin eragile bat, dela berdin sinatzeko, ez dugu iritsi dela balioa hainbeste balio hori ezarri bezala. Ikus dezagun orain zer gertatzen den. Zerbait han jarri genituen eta han izan zen. Free deitzen dugu. Gauza batzuk ziurrenik gertatu zeure gainean. Beraz, ez da, ez da jada. Baina, berriro ere, ez dugu lortzean Hara joan egiteko arazoak. Hau egiten ari naiz ateratzen kodean ilustratzeko duten horiek asko duzula galdera, ari dira benetan interesgarria Denbora asko erantzuten. Eta galdera benetan onak dira. Eta horiek irudikatu dezakezu on Zeure bada, adibidez, ez gara atalean. Bai. STUDENT: delako ari zaren bidaliz erakuslea edonon, egin behar duzun malloc erabili? JASON Hirschhorn: Beraz, hau atzera egingo Zure hasierako galderara. [? ?] Da tokiko aldagai bat besterik ez? Malloc hemen ez dela sinesgarria. Malloc erabilera hemen ez da duten sinesgarria delako tokiko aldagai bat besterik ez. STUDENT: Beraz ezin char egiten duzu izar ptr berdinen kaixo? JASON Hirschhorn: Oh. Beraz, atzera, orain joan Zure hasierako galderara. Ez ziren bete uste dut nire erantzuna ere. OK? Horrela? STUDENT: Bai. Itxaron. JASON Hirschhorn: Eta non ez inprimatu nahi dituzu? Beraz dugu inprimatu egingo horrelako kate bat? STUDENT: interesgarriak. JASON Hirschhorn: Beraz, hau dio honi Argumentu pertsonaia bat mota ditu. Beraz, hau pertsonaia bat izan behar du. STUDENT: Just lehenengoa hartzen. JASON Hirschhorn: Beraz, hau da, zer esan dudan. Atsegin dut, esan nuen, ez da gordetzeko duen erakuslea aldagai barruan katea. Honez gordetzeko - STUDENT: Aurreneko balioak katea. JASON Hirschhorn: helbide Katearen lehen balioa. Inprimatu hau bagenu, gaude erakuslea barruan balioa lortzean. Eta ikusten da, hain zuzen ere, dugu, memoria-helbide bat. Ez duela zentzurik? Barkatu. Itxaron, ez dela zure erantzun Galdera, ordea? STUDENT: Bai. JASON Hirschhorn: kode-lerro hau da Kate bat eta gero beste bat sortzeko erakuslea aldagai hori seinalatuz kate hori, array duten. Bai. Memoria bat joan Beraz badugu: STUDENT aurre gehiago, litzateke h lortuko dugu? Du izan kate gisa gordetzen dira? JASON Hirschhorn: Like, egin genuen - beraz, hau baliotsua da egin. Puntu honetan aritmetika, eta horrek you guys da dute ikusi aurretik eta behar izan nahiko eroso. Hau da idazten Akin - kode-lerro hau idatzi izan dugu, bada, aurretik ikusi dugu array idazkera. Hau gurekin eman behar bigarrenean array honetan, h balio. Hau egin badugu, hau ere eman beharko gurekin Array horretan bigarren balioa. Ez da joan delako memoria lehenengo gauza baten helbidea, baina memoria gauza bat biztanle baino gehiagoren helbidea. Eta, ondoren, izar operadorea dereferences du erakuslea. Eta berriro ere, ikus dezagun. H berriro lortuko dugu. STUDENT: Zer da zehazki egiten du erreferentzia kenduta esan nahi? JASON Hirschhorn: Dereference joan Fancy hitz bat da. Horretara joan eta lortzeko zer han dereference erakuslea da. Besterik fancy horrentzat hitz bat da. Nahi izanez gero, inprimatu nahi dugu: STUDENT kate osoan, ezin izan dugu egin erakuslea ampersand? JASON Hirschhorn: Ados, gaude Hemen eteteko joan. Hor bukatzen ditugu. Ampersand ematen dizu baten helbidea kokapena, beraz, noiz of ampersand egiten duzu aldagai bat, ematen du helbide non aldagai hori gordetzen da. Ampersand erakuslea dizu emango ptr non ptr memoria da helbidea. Ez gara joan da joan Adibide honetan. Irudikatu dezakezu horiek zeure gauzak. Baina, berriro ere, hori ere izan daiteke bat verging zer jakin behar duzun haratago pixka epe ertainean honen esparrutik - edo galdetegi hau, baizik. Barkatu. Mugitu ditugu, I delako litzateke one coding arazo egin nahi aurretik denbora da eman. Eta ari gara zer uste dut kode joan da gehienetan horien sinesgarria adibideak, atoi. Beraz, honi buruzko galdera bat izan zen galdetegi bat, duela bi urte. Eta izan dut taula gainean hemen. Jende galdetegiaren eskatu ziren - ziren tesxt apur bat gehiago eman galdera, baina kendu dut beharrezkoak ez zen testua delako orain gure helburuetarako. Besterik atzeko batzuk izan zen zer atoi egin da. Baina badakizu, eta oso atoi ezagutzen. Honek kode gomendatzen dut paper orri baten gainean. Ere estrategia erabiltzea gomendatzen dut desagertu baino gehiago dugu gure atalean asko. Lehen, ziurtatu ulertzen duzu zer atoi en egiten. Irudi bat marraztu edo etorri batzuekin da irudi mental zure buruan. Ondoren, idatzi pseudocode honetarako. Galdetegi oinarrituta, lortzen duzun guztia bada pseudocode, gutxienez duzu zerbait jarri. Eta ondoren, mapa pseudocode duten kalera C. txeke bat baduzu zure pseudocode, atsegin check bada zerbait 1 da, hori kalera bada bat mapak Baldintza eta abarren arabera. Eta, azkenik, kode C. programa Beraz atoi atzera jo eta bost minutu iraun hau kode-orri baten gainean papera, hau da, ziurrenik inguruko zenbat denbora duzun bat hartuko luke kodea atoi galdetegia. Bost eta 15 minutu, bost eta 12, eta bost 10 minutuan, zenbatekoa ingurukoa da Denbora honetan litzaidake pasatzeko galdetegi batean galdera. Beraz, bost minutu hartu, mesedez. Eta edozein zalantza izanez gero, goratzen eskua eta ni etorri egingo inguruan. [SIDE CONVERSATIONS] JASON Hirschhorn: Ados, beraz, duten bost minutu izan zen. Hori izan zen, ziurrenik zenbatekoa buruz Garai hartan litzaidake pasatzeko galdetegi baten gainean, agian, denbora hori baxua amaieran. Apur bat aurkituko duzu hemen laburpena dugu. Kodeketa hau has gaitezen. Eta ez badugu modu guztiak gainditu beharko dituzte, horri emandako erantzuna eta honen galdetegi galdera daude eskuragarri, berriz ere, Fall 2011 galdera hau denean da galdetegi agertu. Eta zortzi puntu merezi izan du ondoren galdetegi da. Zortzi puntu amaieran altua dago puntu zerbait zenbatekoa merezi. Galdera gehienak barruti dira bat sei puntu. Beraz, hau da gehiago Challenging bat Galdera, ziur. Daiteke inor Hasteko me? Oro har, zer ari gara honekin nahi atoi funtzionatu, logikoki? Zer egin nahi dugu? Beraz, idatzi joan pseudocode batzuk. STUDENT: pertsonaiak Bihurtu osokoak sartu. JASON Hirschhorn: pertsonaiak Bihurtu osokoak sartu. Ados. Beraz, zenbat karaktere gara bidez joan behar du? STUDENT: Horiek guztiak. STUDENT: karaktere guztiak katean. JASON Hirschhorn: du guztiak katea karaktere. Den guztietan zehar joan nahi beraz badugu kate bateko pertsonaia, zer gauza bat da C que ha permitido ikusi dugu Gurekin guztietan zehar joan kate batean pertsonaia? IKASLEAK: loop bat. JASON Hirschhorn: loop bat. Beraz, begizta igaro s karaktere guztiak. Orduan, zer ari gara egin nahi joan denean karaktere zehatz batera lortuko dugu? Esaten ohitu gara gainditu 90 bat. 9 lortuko dugu. Pertsonaia bat da. Zer egin nahi dugu izaera duten 9? STUDENT: Kendu ezazu pertsonaia 0tik? STUDENT: Gehitu 0? JASON Hirschhorn: Kendu pertsonaia 0tik da? STUDENT: Bai. JASON Hirschhorn: Zergatik hori egin nahi duzula? STUDENT: [INAUDIBLE] balioa. Bere int balioa. JASON Hirschhorn: Ados, beraz, hartuko dugu pertsonaia 9, kendu bertatik pertsonaia 0 bat lortzeko Benetako integer 9. Gozoa. Eta nola ez, pertsonaia zenekien 9 ken 0 pertsonaia da 9? Zer diagrama begiratzen zenuen at? STUDENT: Badira logikoki bederatzi 9 eta 0 arteko lekuak. Edo ASCII taulan begiratu ahal izango duzu. JASON Hirschhorn: ASCII taula. Baina bai, zuzena baita zaudenean. Beraz kentzen dugu 0. Beraz, gaur egun osokoa 9 dugu. Eta zer ez duten egin nahi dugu? 90 dugu bada, lehenengo osoko zenbakia da dute, zer egin nahi dugu? STUDENT: nuke aldi baterako osoko zenbaki bat jarri array, ondoren, egin math da gerora izan dadin amaiera bat sartu. JASON Hirschhorn: Ados. STUDENT: amaieran hasi zaitezke matrizearen eta ondoren aurrera beraz duten aurrera duzun bakoitzean, , biderkatu 10. JASON Hirschhorn: Ados. Hori nahiko bat bezala soinuak sinesgarria ideia. Gure array amaieran hasi ahal izango dugu, eta strleng erabili ahal izango dugu. Strleng erabili ahal izango dugu hemen. Gure katea luzera lortu dugu. Hasteko amaieran dugu. Eta + lehenengoa, hartzen dugu besterik ez Zenbaki oso, eta, agian, bat bezala sortzen dugu osoko aldagai berria sortu top non guztia gordetzeko ari gara. Beraz, begizta dugu s char guztietatik bidez aurrean atzera, kentzen dugu 0, eta gero hartuko dugu, eta arabera non da, bertan biderkatu dugu 10 boterea batek. Delako lehena, zer egiten dugu biderkatu eskuinekoa pertsonaia by? STUDENT: 10 0 da. JASON Hirschhorn: 10 0 da. Zer bigarrenean biderkatu dugu eskuinekoa by pertsonaia? STUDENT: [INAUDIBLE]. JASON Hirschhorn: Zer? STUDENT: 10 1 arte. JASON Hirschhorn: 10 1 arte. Hirugarren-eskuinekoa pertsonaia? STUDENT: 10 2 arte. JASON Hirschhorn: 10 2 arte. STUDENT: Barkatu, ez dut ulertu hemen zer egiten ari garen. JASON Hirschhorn: Ados, goazen atzera, gero. Beraz, iritsi kate batean pasatu. Dugu atoi idazten ari delako. Beraz, kate batean ezagutu genuen gainditu. Esaten ohitu gara gainditu katea du 90. Lehenengo gauza egin goaz ezartzen da osoko aldagai berri bat gara besterik sortzen joan gure osokoa berri gisa. Hori da, zer ari gara amaieran itzuliko. Den pertsonaia bakoitzaren bidez joan behar dugu katea erabaki dugu zeren bakoitzak ukitzeko behar ditugu eta gero gehitu ezazu gure osokoa berrira. Baina guk ezin gehitu zenbaki gisa. Ezin dugu besterik hartu 9 eta gehitu 9 gure osokoa. Araberakoa zer leku on da den katea da. Biderkatu behar dugu 10 potentzia bat da. Hori delako nola base 10 lanak. Beraz, benetako lortzeko ari pertsonaia, edo benetako osokoa zenbakia, pertsonaia 0 kenduz pertsonaia 9 egin genuen bezala bitarte pertsonaia capital bat kenduz edozein dela ere pertsonaia izan batean dugu arazo horiek. Beraz, benetan egingo zenbaki bat lortuko 0 tik 9 zenbaki erreal bat bezala gorde, eta guk egingo biderkatu 10 potentzia arabera non daude katea dugu. Eta gero ari gara gehitu atzera joan gure osoko aldagai berriak sartu. Beraz, zer litzateke lukeen itxura egon - hemen marraztu egingo dugu gainetik. Katea 90 urtean ezagutu genuen gainditu bada - STUDENT: [INAUDIBLE]. JASON Hirschhorn: Baina atoi kate bat hartzen du. Beraz, bidez joan da joan deiaren. 90 dugu gainditu ezagutu. Bizkarrean frontera joan ginen. 0 hartuko dugu. STUDENT: Sentitzen dut. Agian hau ergela da. Ari gara ohitu kate bat aurrera ateratzen bada, zergatik da 90 zer gara ohitu gainditu? Delako 90 oso bat da. JASON Hirschhorn: atoi hartzen delako bat katea eta bihurtzen da osokoa sartu katea duten ordezkaritza. Baina katea 90 ez da osokoa 90 edo 90 zenbakia. Katea 90 bi array bat, edo da hiru pertsonaiak, baizik eta, 9 pertsonaia, 0 pertsonaia, eta backslash 0 karakterea. Eta atoi idazten ari garelako, aldeko Adibidez, noiz komandoa hartu duzu lerroko argumentu, eta nik atalean gordetako argv, kate gisa da gorde. Baina zenbaki gisa tratatu nahi izanez gero, bihurtzeko bat behar duzu Benetako zenbaki oso. Gure arazo multzo bat egin genuen. Zein zenbaki bat egin genuen gure arazo multzo. Denek zenbaki oso bat hartu komando lerroko argumentu gisa. Beraz, horregatik gure atoi funtzioa kate bat hartzen du. Beraz, berriro ere, gure Adibidez hemen, gaude azkena hartu du. Pertsonaiaren kenketak goaz 0 bertatik, zeren pertsonaiak 0 pertsonaiaren 0 arabera kentzea ematen dizu benetako 0 zenbakia, arabera ASCII matematika egiten dugun. Pertsonaiak dira gisa irudikatzen duelako beren benetako baino ezberdinak - du pertsonaia bat, adibidez, minuskulaz 97 da. Ez da - trabatzen! Ez da edozein dela espero duzun , izango da 0, adibidez. Beraz, kendu duzu pertsonaia bat 0 lortzeko. Beraz, esaten ari gara hemen egin behar joan benetako kopurua lortzeko. Eta gero biderkatu by goaz 10 potentzia non arabera katea da, eta gero hartuko duten eta gehitu gure leku titularra den aldakorra beraz etorri ahal dugun gure azken osoko zenbaki berria. Du zentzua guztiontzat? Beraz, ez gabiltza honek kode joan oraintxe, Oraindik dugulako denbora labur lortzean. Duten denbora Barkatu. Baina hau da, zer, zorionez, duzun izateko galdetegi on egin ahal - at Oso gutxienez, get pseudocode honetan idatzita daudelarik. Eta, ondoren, idatzi bagenitu du pseudocode, benetan, hau egin ahal izan genuen nahiko azkar. Iruzkinak lerro bakoitzean idatzi dugu dugu hemen buruz itzultzen C kode lerro bat. Aldakorra, idazketa berri bat deklaratzen begizta bat, kenketa batzuk, batzuk biderketa, eta esleipen batzuk. Genuke seguruenik ere nahi bueltan lerro bat idazteko. Baliteke dugu jarri nahi hemen egiaztapen batzuk. Bai. STUDENT: Beraz dezake tratatzen dugu s benetako katea gisa? Dakit zeren besterik helbide bat da. Bezala, nola litzateke luzera lortuko duzu pasatzen ari katea? JASON Hirschhorn: Beraz, nola egin kate baten luzera? Strlen. STUDENT: strlen, bai. Baina ahal bezain s jarri duzu argudio hori? JASON Hirschhorn: Beraz strlen char izar bat hartzen du. Eta char star jarraitzen du, eta hura lortzen den arte kontatuta mantentzen backslash 0. strlen zen benetan Beste programa bat dugu ziren kodearen joan. Duten kodeari beste bat oso ona da. Alde hori da pixka bat errazagoa, bada delako nahi duten pentsatzen ari zaren kontzeptualki - Esan dut ozen - strlen honela erakuslea eta bizirik mantentzen eta kontatuta eta jarraipena arte backslash bat 0 helduko zara. STUDENT: Ados, lortu du. JASON Hirschhorn: Beraz, hoberena Zorte galdetegi 0 bihar. Edozein zalantza baduzu, ez dut izan kanpotik honen ondoren. Sentitzen me email doan. Iristea propioak TF Oraindik baduzu Ez nire sailean, edo nire email, nahi izanez gero. Freak nahi baduzu eta besterik bidali niri email bat, FreakOut email bat, ez dut atzera bidali duzu, bezala, aurpegi alai bat, edo, nahi, txantxa bat edo zerbait. Beraz, sentitzen free horretarako baita. Zorte on berriro, eta nik egingo ikusten duzu hurrengo aste osoan.