[Musika jotzen] DAVID J. MALAN: Hau bezalakoa da gaur freshman mintegi batean. ONDO DA. Beraz, oso euritsua atera. Honetarako asteazkenetan gertatuko, baina zenbat eta gehiago aukera guztiak galdera gaur. Hargatik hasteko off benetan une bat besterik filmarekin. Baina holuku hasiko dugu, beti bezala. Hau CS50 da, eta hau Aste 4 bukaera da. Beraz, bada inoiz zaintzen TV movie edo dua bat informatikariak batzuk han eta polizia edo FBI, edo agentzia batzuk batzuk harrapatzen saiatzen aurkariarekiko, bai, duzun ziurrenik adierazpena entzun "hobetzeko" Horren bidez, teknikari, nolabait, magikoki infinituki ere zooma handituko du urrun gaizkile ikusteko identitate edo matrikula kopuruari nahiz eta ispilu baten shimmer batean edo norbait begi distira. Beraz, hain zuzen ere, dezagun begirada bat Hollywood, hala nola eszena batzuk. [Bideo-erreprodukzioa] -Ados, Orain gaitezen duzu itxura ona. Eutsi da. Exekutatu back hori. -Itxaron minutu bat. Joan eskubidea. -Ez, Izozteko duten. -Pantaila osoa. -Ados, Izozteko duten. -Estutu Sortu horretan, ahal izango duzu? -Vector Ere horretan atzeko gurpila arabera lasaia. Hementxe Leku honetako in Zoom. Eskuineko -Ekipoak, irudia ampliada litezke eta zorroztu. -Zer da hori? -Ez Hobekuntza programa bat da. -Ezin Duela garbitu sortu duen? -Nik Ez dakit. Dezagun areagotuko da. -Hobetu Atal A6. -I Xehetasun hobetu, and-- Uste dut ez da nahikoa hobetzeko, askatu nire pantailara. -I Bere begi isla hobetu. -Dezagun Exekutatu honen bidez Bideo hobekuntza. -Edgar, Hau hobetzeko? -Hang Orrian. -I've Dira hausnarketa hori lantzen. Norbaitek-en gogoeta. -Hausnarketa. -Ez Gizonaren aurpegia, gogoeta bat da. -Hausnarketa. -Bada, Gogoeta bat da. Ispilu orrian. Hausnarketa bat ikusiko beharretara. -Leku Irudia hobetzeko hemendik aurrera? -Ezin Hura hobetzeko duzu hemen? -Ezin Hobetzen duzu? Ezin da hobetzeko? -Ezin Dugu hau hobetzeko? -Ezin Hobetzen duzu? Bigarren an-Eutsi, hobetu dut. Ate-en Txikiagotu orrian. -Times 10. Zoom. Ere -Move. -Informazio. -ez Alde, gelditzeko. -Gelditu. -Pause Da. -Biratu Digu 75 gradu bertikalaren inguruan, mesedez. -Gelditu. Joan atzera zatia atea, berriro buruz. Got-irudi Enhancer ahal bit? -Aizu, Agian Pradeep erabili ahal izango dugu Sen metodoa leihoetatik sartzen ikusi. -Hau Software artearen egoera da. Autobalio -The da off. Eskubidea -partaide algoritmo konbinazioa -Hartu Zuen ezabatzea Hurrengo mailara algoritmoak, eta horiek erabili ahal izango dut argazki hau indartzeko. -Lock Eta z ardatzean handitzeko. -Hobetu. -Hobetu. -Hobetu. Izoztu-eta hobetzeko. [END erreprodukzioa] DAVID J. MALAN: Ondo da, beraz, horiek guztiak ez dira benetan hitzak. Bakarrik ari dira elkarrekin bat zabalduta Bide hori ez da benetan sensible. Eta, hain zuzen ere, CS50 eta hura bezalako ikastaroak Telebista eta film asko hondatu ohi zuretzat. Informatikariak horietan delako ari dagokionez off rattling eta esanez bezalako beste gauza autobektorearen, eta z ardatzean, eta beste edozein zenbaki benetan, termino tekniko, ari dira benetan besterik stringing hitzak elkarrekin askotan. Da gure itxaropen bat dela, alde jarriz ikastaroak efektu gisa Hau atsegin, izango du pertsona gehiago Mundu benetan izan nahi du pisatzen duela eta besterik ez inoiz beraz, apur eragina du kalitatea eta filmak badira zehaztasuna? Izan ere, dezagun errealitate begirada bat. Hortaz, hona hemen langileen argazkia da Mary, gure irakaskuntza bekadun bat. Eta suposatzen zuen da Zerbait susmatzen. Eta, hala ere, ez izpi bat da frogak pieza batzuk bere begi, edo bere betaurrekoak isla ere. Beno, zehazki ez bada filmetan bezala dugu proposatzeko, dua mapan handiago eta "hobetzeko", honek informazio zenbat da Mary aurpegia da argazki bat ateratzen duzu jatorrizko Ebazpen horrekin. Eta, hain zuzen ere, puntu horiek ikusi ahal izango duzu. Eta horiek zer dira pixel izeneko, P-I-X-E-L-S, bertan plaza bat besterik ez da, normalean Hori dela irudi bat konposatzen dot bat da. Eta egun atzera, eta, egia esan, nahiz eta Gaur egungo LED telebistak batzuk gaur edo LCD telebistak, duzun got bada Zure gelan edo etxean, Igo zara super hurbil bada, eta TV zaharxeagoa da batez ere, ziurrenik ere ikusi ahal izango duzu, puntu horiek eta zer konposatzen irudi bat da. Eta ez da gehiago hau baino informazio. Zitekeen "hobetu" dugu zentzuan Gauzak baino gehiago eta Ordena leuntzeko motatako, ordenatzeko zer ondorioztatu kolore Mariaren begi ondoan egon behar du beraz, ez da benetan, beraz, pixelated. Baina mantendu dut zooma bada, ez dago bere begi txarra lasaia da. Horrelakoa da guztien Informazio daukagun. Ezin duzu sortu Informazio ezerezetik. Ni bakarrik finitua bit han kopurua. Arazoa Ezarri 4, non ere aukera duzu mundu-mota honetan jolasteko. Arazoa Set 4, aztertuko dituzu grafikoak, eta auzitegi-munduan, eta benetan idatzi kodea hori galdu irudiak berreskuratzen. Idatzi dituzu Código Lehendik dauden irudiak manipulatzen eta, azken finean, ulertzen zer da gertatzen kanpaia azpian. Eta, bihurtzen da, egia esan, ez dela konplikatuak. Esate baterako, nahi izanez gero smiley face non adierazten pixel beltza hauekin, edo puntu beltzak horiek, ondo, besterik gabe, ezin dugu ordezkatzen horiek benetan gisa bitmap bat. Eta baduzu inoiz entzun zuen hori adierazpen bitmap, agian orain bat egiten hasten da little more gaur zentzurik. Dagoeneko badakigu pixka bat zer den. Da 0 edo 1. Eta mapa bat besterik ez da, zerbait paper bat bezala norabide ematen dizu, eta duela Agian x- eta y-koordenadak sare bat. Hortaz, hona hemen bitmap bat da. Da bit-mapa bat egiten Horren bidez, 1 a itxuraz da pixel zuri bat irudikatu nahi du, eta bat 0 da pixel beltz bat irudikatu nahi du. Baina zalantzarik gabe izan dugu irauli inguruan. Ez du benetan axola orain luze koherentea ari garen bezala. Eta hemen nola, binary barruan ordenagailu baten memoria, edo are barruan Zure gogorrean fitxategi baten drive-- ezin gorde duzu smiley face irudiak errazena. Baina zer egin behar dugu, noski, irudi hau peitu Kolorea, ezta? Hurrengo pausoa bistako bat da, edo hobekuntza hau hobetzeko kolorez. Beraz, besterik bakar batez zoritxarrez bit, 0 edo 1, kolore irudikatu izan dugu. Hau da, gorria, edo urdina izan daiteke, edo beltza edo zuria, berdea, edo arrosa, edo kolore bikoteak edozein. Baina soiltasun en mesedetan, dizkizugu suposatuko zuri-beltzean. Beraz, zer logikoki egin behar dugu badugu Irudi bateko kolore ezartzea nahi? Zer egin behar dugu? Mugatuz faktore hemen bada Like dela pixka batekin egin dezakezu bakarrik ordezkatzen bi estatu, 0 edo 1, zuriak edo beltzak, zer egin nahi duzu? Ikusleak: More datuak. DAVID J. MALAN: bit gehiago, yeah datu gehiago, bit gehiago. Eta, hain zuzen ere, hori zehazki nola kolore irudiak irudikatzen dira. Bit bakar bat erabili beharrean, a 0 edo 1 pixel bakoitzeko, puntu bakoitza, anitz erabili besterik ez duzu. Agian erabili 8, agian, gehiago normalean erabili 24, eta hain zuzen ere, arazo multzo 4, izango da play fitxategia batekin 24 bit egunero erabiltzen normalean formatuan. Baina duzun gehienak dira ziurrenik JPEGs ezagutzen. Nik inoiz hartu bada argazki bat zure telefonoan, edo igo edo zerbait ikusten Facebook edo Flickr, edozein zenbaki argazki oinarritutako webguneen, duzun Seguruenik JPEG irudi bat lehenago. Eta bihurtzen da, hau fitxategia da formatu goaz pset 4 erabili doa, Horren bidez, zu joan irudiak berreskuratu behar dudan ustekabean a ezabatuko hondaturik memoria txartela kamera ere, izango bada. Eta bihurtzen da, nahiz eta JPEG nahiko sophisticated-- da askoz ere sofistikatuagoa da eta zuri-beltzeko dots baino duela une bat ikusi genuen, ez delako benetan fancy algoritmoak JPEG bat konprimitzeko erabiltzen dira, beraz, benetan polit bat izan dezakezu, kalitate argazki baizik erabiliz bit gutxi. Eta itzuli dugu nahi luze baino lehen konpresioa. Bihurtzen lehena dela hiru byte JPEG image-- batean ez du axola zein argazki bat hartu duzun of-- balioak 255, 216, 255 dira. Beste era batera esanda, nahi izanez gero, besterik gabe, ikusi bit eredua dela, Hemen hiru gisa irudikatzen byte, edo 24 bit osotara, probabilitate handia duten inferitu ahal izango duzu egiten lehen hiru honetan bilatzen ari zaren JPEG a byte. Eta hau da, zer da ezaguna ikusi JPEG baten sinadura gisa. Fitxategia formatu asko han joera hasteko 0 s eta 1s eredu jakin batzuk batera, beraz, Windows eta Mac OS, eta iOS, eta Android dakit zer motatako fitxategia dute dira, fitxategia deiturikoak gain luzapena duten fitxategiak asko izan. Duzu .jpg izan bada, hori da Ordenagailua den beste gako bat. Hargatik orai honetan begiratu apur bat gehiago teknikoki. Digituak hamartarra Badakigu sistemaren 0 9 bidez. Badakigu binary 0 eta 1 da. Eta uste itzuliz gero pset nahi 0, borrokarako batekin izan genuen, Pixka, zerbait batentzat hamaseitar deitzen, Bertan 16 digituak duzu, ordez 10 edo 2 ordez. Eta digituak horiek, konbentzio, 0 9 eta gero baten bidez f, non f zer adierazten bidez zenbaki hamartar bezala, behatu azkar bat bezala egiaztatu? Beraz, 15. Eta a 10 izan beharko du, besterik arabera dudan jakin arazi izaera. Konbentzio arbitrario bat besterik ez da, baina nahiko estandarra da. Beraz begiratzen dugu patroi hau hartuz gero Hiruren utzi byte en besterik begiratzen hasteko nola koherentea informatikariak, oro har, begiratu eta fitxategiak pentsatzen. Zalantzarik gabe, ezin duzu pentsatu 0 s fitxategiak, eta 1s, eta dezimaletik baina, egia esan, binary erabili ohi dugu edo gehiago normalean hexadecimal-- 0 pset itzulia. Hargatik proposatzen duten 255, 216, 255 eta 0 s eta 1s eredu horiek besterik ez dira. Eta hau egiaztatu dezakezu baduzu math egin Astea 0 diona. Baina, oraingoz, besterik ez ditu bere gain hartuko hori da, hain zuzen ere, zuzena. Dut berridatzi hiru hamartar zenbakiak hiru balio bitar bezala. Orain zer egin behar dut da besterik espazio zuri batzuk gehitu, besterik irakurgarritasuna en mesedetan. Eta, adi, I besterik ez noa gauzak mugitzeko aparte. Beraz, aurretik, ondoren, aurretik, atzetik. Ezer interesgarri batzuk egiten ari naiz besterik gabe, gauza beraz zabaltzeko asmoz ohar horretan zortzi multzo bakoitzeko bit bi lau bit multzo da orain. Hau oso erabilgarria da hamaseitar delako da bereziki modan delako hamaseitar bakoitzak 0 bitartez f, edo 15, zehatzago esanda 0 bitartez, irudikatzen daiteke zehazki, lau bit. Beste era batera esanda, hamaseitarrean baduzu 0 bat irudikatu nahi, da, besterik gabe, 0000, lau zero. Eta 15 ordezkatzen nahi baduzu, da 1111 da, eta bertan lau bit da. Eta math egiten baduzu, hau da leku direnak bada, hau da 16s lekua, hori da zuk eman joan baizik eta hori joan Sentitzen zaie, bitarretan, hori da zuk emateko 15 joan, bai lekua, twos leku, hankan eta eights lekua. Hargatik proposatzen duten me lau bit ezarri ezkerrean zer ari gara f deitu behar. Kopuru handiena da duzu lau bit adierazten daiteke. Eta badakigu hamaseitarrean dugu, f hamaseitarrean digitu handiena da. Lortu f beste ditugu han, Bi han gehiago. Eta orain, fede on hori egin nuen, matematika eskubidea eta ezkerreko erdian dagoela bit horiek, 1101, hamaseitarrean d gauza bera da. Eta eskuineko eskua, 1000, 8 da. Eta erraz bat, en, ikusi nahi ez? 8 represents-- da eskubidea leku eights hori azpian. Beraz eights zutabean bat daukagu eta hankan, binaka edo direnak ere, ez da ezer. Beraz, gaur egun gehiago conventionally, gizakiak joera hamaseitarra digituak honetan bezala idazten, squish besterik ez duzu elkarrekin, eta, ondoren, horien zeinua duzu 0x batera. Ezer ez den beste esan nahi du bisuala human-- bat pista batean Hemen balioa hamaseitar bat delako dator agian ez bestela argi dago. Zein da, esateko, azken finean, hori zeroen eta bai patroia, edo hamaseitarra patroia digituak baliokidean duzu zarela bila joan hasteko Arazoa Ezarri 4 da hau eta arazo multzo 4 zehaztapenak oinez egingo honen bidez detail-- gehiago baina konturatzen urrutira moduko bezain Baliteke hau Lehen begiratuan itxura, hau asko ikusten hasteko ari zaren. Eta hain zuzen ere, nahiz eta GDB batean, araztailea sartu astelehenean dugu eta Dan PSet 3 aurkezten, va sarritan erakusten duzun balio hamaseitar besterik gehiago izan ohi dute delako hamartarrekin edo binary baino konbentzionalak ordenagailuen munduan. Orain dezagun jarri hau testuinguru batean. Askoren duzu hau gogoratzeko liteke argazki hemen, eta horrek zer zetorren? Vista, beraz, nahiz eta lehenago baino hori, Windows XP debut honetan egin. Beraz, hau paisaia eder bat da. Eta hain zuzen ere, ikutu duzu online-- bada Uste dut Wikipedia artikulu bat da, dua norbait oso amazingly egitera atera aurkitutako kokapena honetan munduan girotutako eman bere kamerarekin hain zuzen ere, eskuineko place-- eta, gaur egun, hau itxura antzekoak baina zehazki, ez da ezarpen berberak. Irudi hori, ordea, fitxategi batean dagoen bitmap izeneko formatuan, b-m-p. Eta ari gara super aterako Begirada azkar zer esan nahi zuen. Baina bitmap ezberdinak modu bat besterik ez da Irudi ordezkari oraindik pixel erabiliz 0 s eta 1s, azken finean. Baina begiratu azkar batean, eta egundaino Sinadura interesgarriagoa Fitxategiaren hasieran. Ez da bakarrik hiru byte, hobeto esanda, ez da byte ereduak sorta oso bat duten esanahia aurrez ezarria dute. Esate baterako, nonbait ere etorri bitmap irudi baten lehen byte gutxi da tamaina izango da irudia, irudi zabalera, Irudiaren altuera, beraz, metadata erabilgarria, izango bada. Informazio baliagarria dela Photoshop edo grafikoak edozein programa erabiltzen ari zarela agian benetan zaintzeko. Beraz honetako gehiago Arazoa Ezarri 4, baina hau bakarrik nahi duela esaten Egunaren amaieran formatuen guztiak dira erabiltzen dituzun years-- Microsoft Word fitxategiak dira, Zenbakiak fitxategiak, Excel fitxategiak, Edozein formatuak duten batzuk izan liteke ezagutzen fitxategi-luzapen 0 s eta 1s besterik kanpaia azpian daude. Eta gizakiak erabaki dute zer konbentzio daude, zer 0 s eta 1s ereduak ordezkatzen Word-en fitxategi Excel fitxategi bat versus, Edozein beste formatuak honako versus. Beraz, 4 pset ere, bat izango duzu Aukera horrekin jolastu. Baina zer egiten du egitura bat behar izateak. Hau da, benetan segue polit bat orain C sartu, bertan pare bat besterik ez du Ezaugarriz osagarriak oraindik ez dugula begiratu zion. Da hizkuntza eta bat nahiko txiki bat egiten C inguru polita ezaugarriak eta egitura bat da. Esate baterako, baduzu dezagun irudikatzeko nahi aldagai bat izan nahi duzu esan programa batzuk ere ikasle bat adierazten du. Agian ikastaro bat idazten ari zinen Izena emateko programa, edo core erosketak tresna, edo horrelako zerbait. Zer dira lotutako datu zati etortzen burura ikasle izatea? Like ikaslea da zer balioekin irudikatzen? Bai? Izen bat ikasle gisa duzu. Zer gehiago Ikasle arrunt bat izan? Ikusleak: [INAUDIBLE] DAVID J. MALAN: Beraz, barkatu. Ikusleak: Age. DAVID J. MALAN: adin bat edo urtebetetzea hots, bai. Zer gehiago? Ikusleak: NAN zenbakia? DAVID J. MALAN: Beraz ID zenbakia, agian, Telefono zenbaki bat, agian, gela bat, edo etxe, edo unibertsitatean, edo horrelako zerbait. Datu zati edozein zenbaki hori Kontaktuen zerrendan agian duzu horixe ikasle bat definitu liteke. Beraz, hori egin ahal izateko, kodea ere nahi badugu, honelako zerbait simple egiten dugu hori. Baliteke, beraz, programa bat daukagu ditu demagun, int main (void). Eta bat irudikatu nahi badut Ikasle izan nuen, esate baterako, izen izeneko ikasle haren kate bat, ikasleari gela izeneko kate bat, agian, ikasle haren NAN izeneko int bat. Eta nik katea erabiliz delako, I atzera egin eta jarri cs50.h. behar Agian ez dut stdio.h behar du. Hargatik egin didaten preemptively eta ez naiz student.c hau deitu oraingoz joan eta gorde hau. Eta orain zerbait egin ahal dut aldagai hauekin. Eta besterik ez gabiltza idatzi joan sasi kodea iruzkin bat bezala, Ez da interesgarria delako orain artean egiten dugu. Ados, beraz, hau da, programa bat dela nolabait ikasle bat gordetzen. Zer egin halakoetan nahi dut bi ikasle gorde nahi? Beraz, nire lehen sena va eskubidea izango, minutu bat itxaron, Adiskide batek behar badut, zergatik ez dut besterik ez kate izena 2, kate gela 2, int id2. Eta egin dugu desagertu Errepide honen aurretik behera eta zer gure dirudien irtenbide zen hackish kopia itsatsi baten antzeko zerbait izan nahi du Lana hemen? Ikusleak: Array bat. DAVID J. MALAN: Bai, array bat erabili izan dugu. Eskuin hau oso azkar unwieldy bihurtzen. Ren arbitrarioki ordenatzeko behar duzu aldagai horiek guztiak izendatzen hasteko. Eta zuk, giza, izan mantentzeko jarraipena OK izena2 dagokion dorm2 batera id2 dagokio. Nahaspila bat bihurtzen da, besterik ez da. Beraz, asko errazagoa da, Duela aste gutxi batzuk gogora ekarri, besterik kate izenak izeneko izatea eta, agian, ematen diguten horietako hiru. Eta gero, agian, ez dugu katea gela eta horietako hiru, edo konstante bat izan da, ids int eta horietako hiru izan. Baina, nahiz eta gaur egun hori sentitzen a little sloppy, eskubidea. Ikasle eta oraindik ari gara I benetan maila baxuko etxebizitza nabil ezartzeko xehetasunak. Ikaslea izen bat eta gela bat eta NAN da. Zergatik ezin deklaratzeko besterik ez dut aldagai bat Ikasle deitzen eta deitzen s. Eta beste ikasle batek nahi badut, zergatik ez deitu nuen t. Edo sorta oso bat nahi badut Ikasle, zergatik besterik ez dut esan klase oso bat daukat ikasleak, eta horietako hiru da. Beste era batera esanda, zergatik ezin dut etortzen nire datu-mota propioa, deitzen sortu Ikasleak, horien barruan dago, Izen bat, identifikazio bat da, gela bat da, beste edozein alorretan kopurua da. Eta bihurtzen da duzu zehazki hori egin daiteke. Beraz, C eta egitura izeneko ezaugarri hau. Hizkuntza ezaugarri bat dela ahalbidetzen zehazki hau egin digu. Aurrera joan noa eta ireki structs.h non ari gara ikusteko joan Ikasle baten definizioa jarraituz. Bihurtzen da - eta hau, nahiz eta Bat ID bat inplikatuz baino errazagoa une bat duela. Etorri nahi baduzu Zure datuak etxekoa mota, eta, gainera, INT eta char eta karroza eta besteei horiek guztiak existitzen dela, hacerlo literalki dezakezula Typedef struct idazten, ondoren, kizkur giltza batzuk, barruan zein duzu Nahi duzun aldagaiak zerrendatu Ohiko datuak berriari lotu Izen bat eta gela bat bezala idazten, eta ondoren, kizkur giltza ondoren datu-mota berri den izen bat ematen dizute. Beraz, adibidez, ikaslea. Eta zer da honi buruz nice orain dela begiratzen dugu dagokion kodea kontuan hartuz gero, konbentzio, lehen guztia, da hau jarri izeneko fitxategi zerbait dot h batean, Goiburu-fitxategi bat, eta hori ez daukagu geure erabiliz gehiegi zen. Baina ari gara hasiko joan nahiko pixka bat erabiliz orain. Eta zer egin dezakegu, azken finean, kode lerro gutxi hauetan zehazki dela deklaratzen da datu-mota, ikasle batek. Eta orain, hura erabiltzeko. Sartu orain joan noa fitxategi batean structs1.c deitzen. Eta dezagun begirada bat Ezaugarri batzuk hemen. Beraz, gauza bat ireki da hemen batez ere, ezaguna, eta dizkizugu itzuli, zer ez da une bat besterik ezagutzen. Ikastaro hau da nire barne goiburua fitxategia, berria da, bai, PSet 3 non ezik, oroitzapen, helpers.h ditugu. Beraz # besteak helpers.h gogoratzen dezakezu. Zergatik arren komatxorik erabiltzen dut angeluarekin parentesi ordez? Noiz aukeratzen da bien arteko I? Ia beti dirudi I angeluarekin parentesi erabili. Eta gero, bat-batean guztiak on lerro sei komatxo erabiltzen dut. Zergatik izan liteke hori? Bai? Ikusleak: [INAUDIBLE] DAVID J. MALAN: Hori da benetako bat, eta zer? Ikusleak: Hori da zure IDE ere. DAVID J. MALAN: Bai, Hori da nire benetako IDE bat da. Eta dezagun IDE Ohar ez, zeren Hori dela erabiltzen dut tresna bat besterik ez da. Hori da nire uneko gida, zehazki. Beraz structs.h nire fitxategia egin da Ez IDE dauka egoitza, sistema eragilea berez, baizik eta nire uneko direktorioan da. Beraz, hitzarmena nahi baduzu Egin zure goiburua fitxategia, besteak beste, komatxo erabili besterik ez duzu. Zer gauza hau deitzen dugun line 8, oro har? Hau da, zer? define zerbait. Hau konstanteak adierazten du, ezta? Eduki nahi baduzu programan balio osotasunean erabiltzen duzula aldiz sorta, da ona konbentzio da faktore atera, deklaratzen da, hash sinbolo batera definitzeko, ondoren, konbentzio, guztiak ere maiuskulaz word-- ez izan arren Guztiz beharrezkoak, baina giza konbentzio da konstanteak larriz salto beraz dutela espaziorik visually-- duzu eta ondoren, nahi duzun balioa izan etengabeko izenaren baliokidea. Puntu eta koma, baina besterik ez duzu eredu hori jarraitu ez. Beraz, nik zer egiten dugun kodea honetako dut. Beraz, dezagun begirada bat Programa nagusia hemen. Linea 12 dudalako Izan structs.h barne, Izan magikoki dut orain nire esku datu-mota berri bat. Ez dut besterik behar int sarbidea, eta char, eta karroza, eta katea, eta urdinak eta beste batzuk. Orain sarbidea daukat Ikasle datu-mota bat. Beraz line 12, bi konbinatuz naiz ideas-- datu-mota pertsonalizatua bat eta bi, array bat erabiliz. Eta beraz, programa honen bada ere Benetan lagundu nahi dut hiru ikasle ezberdinak nire programa, I besterik gabe, esan daiteke eman dit aldagai bat ikasleak deitzen ditu, hauetako bakoitza mota ikasleak, da bertan Nire datuak pertsonalizatua mota da. Eta, zehazki, ematen dit Nire lerrotan horietako hiru. Beraz, orain zer egiten dugu programa honetan? Hemen da besterik begizta errepikatzean for a 0 eta 3, hori delako zer ikasleak balioa da. Besterik ez naiz erabiltzaileari galdetu eman dit ikaslearen izena. Eta gero, linea 17, dugu lerro batez ere ezagutzen dute. Gure lagun zaharra daukagu Eskuin hegaletik GetString. Eta zer sintaxia pieza itxuraz berria, Nik inoiz ez C programatu bada aurretik, eta inoiz erabili structs du? Bai? Ikusleak: .name The. DAVID J. MALAN: .name The. Baina hori ez da gehiegi jauzi bat askoz, orain Ikasle tarte delako i i-garren ikaslearen ematen dizu. Eta murgiltze nahi baduzu egitura horren barruan, aldi bakar bat erabili besterik ez duzu, eta aldagai-izenaren barruan, edo barruan jabetza sarbidea lortu nahi duzun. Era berean, ondoren, badut hau ekidin du Erabiltzaile, ematen dit ikaslearen gela, era berean, ezin duzu gordetzea gela aldakorra barnean katea Ikasle egitura hori. Eta, orain, gauzak apur fancy bat. Eta hau da, itxura joan agian asko nahiko laster. Baina hau oso urruti pset gehiago ikusiko duzu 4, beraz dezagun at begiratu besterik ez gaur egun. Bihurtzen linea 23 bidez dela 38, zer uste duzu dut agian egiten ari naiz? Kendu Nik iruzkinak gaur egun, baina bertsioari Kodea online egiteko erreferentziazko iruzkinak ditu. Zer egiten egon badirudi I? Ikusleak: guztiarekin Agiria gordetzea duten erabiltzaileak sartu dituzun datuak. DAVID J. MALAN: Bai, zehazki, modu berri bat da bi ari garela ikustea, C ezaugarri bat, Horren bidez, nire fitxategiak propioa sortu ahal izango dut. Horrela, orain arte, ia programa guztietan estaturik gabeko duzu zuk idatzitako. Nik egin bezala exekutatzen bezain laster, kito. Ez dago memoria edo haren oroitzapena ez da. Ez dago gordetako fitxategiak. Baina ez baduzu nahi gorde ditu sarrerako gertatu zen, joko bat bezala edo programa batean Hau atsegin, bihurtzen da, beraz, egin ahal izango dugu. Eta hau gehiago ikusiko duzu pset 4 eta artikulua ere. Baina lerro hau 23 funtsean students.csv izeneko fitxategi bat sortzen du. Eta zuk ikusi dezake hau baino lehen. Nik inoiz ikasi Nahiz CS aurretik, CSV komaz bereizitako aldagaiak. Da gizon oso eskasa izan da bat bezalakoa da Excel fitxategi baten bertsioa, horrek esan nahi du ireki behar izan Excel eta Apple zenbakiak ere, eta lerro eta zutabe ditu. Baina ez da jabetza- Microsoft edo Apple bezalako formatuan. Besterik komaz banantzen da balioak momentu batean ikusiko dugu. Eta besterik ez, etxebizitza bat. Linea 23, oso at azkenean, nire bigarren argumentu izeneko funtzio berri honetara f ireki fitxategia irekita w da. Zer w adierazteko liteke? Bai? Ikusleak: idatzi beharreko fitxategia aukera ematen du? DAVID J. MALAN: aukera ematen du idatzi duzun fitxategia. Beraz, ez da aldaera pare bat Hori irudirik konektatu ahal izango duzu. Baina irakurtzeko besterik nahi ez baduzu fitxategiak orduan, hori dela begiratzeko eta irakurri memorian, zuk besterik erabili aurrekontua unquote "r". To the idatzi nahi baduzu fitxategia, aurrekontua erabili duzu "w" unquote. Ez da, gainera, eta erantsi Beste gauza pare bat Dauden fitxategiak aldatu nahi izanez gero. Orain ari gara hau ikusten jarraitzea gauza, ondoren, itzuli dugu 24 lerro. NULL, bihurtzen da, da balio berezia duten beharreko zenbait eginkizun ak itzulitako dezake Zerbait desagertu wrong-- izan baditu fitxategia ez badago, Nik memoria agortu bada, edo beste huts mordo bat. Baina, oraingoz, Demagun besterik hori besterik konbentzionalak error egiaztapena da. Hemen line 26, errepikatzean naiz 0 eta 3 Nire ikasle guztiak baino gehiago. Eta hau da, mota moduko funtzio berri bat, fprintf, baina besterik etxebizitza bat. Printf besterik inprimatu badago formatu kate bat, zer esan nahi du seguruenik fprintf? Ikusleak: inprimatzen fitxategi batean gordetzeko. DAVID J. MALAN: Print bat formateatuta fitxategi batean gordetzen katea. Hau da, zer gehiago behar izateagatik f bitartekoak fitxategia da. Eta lehen argumentua berri du izan aldakorra, zure fitxategia adierazten du. Ondoren, besterik ez dugu formatu bat katea bezala printf. Eta hori, nahiz eta sintaxia berria da, hau da, besterik gabe esan nahi du ikaslearen izen-abizenak, konektatu plug-in ikaslea gela, eta, ondoren, fclose, fitxategia itxi. Eta gero lastly-- hau da berria eta itzuli dugu honetarako long-- libre uzten ari naiz aurretik arrazoiak direla eta ikaslearen Hori gertatu da han goian. Baina itzuli egingo dugu long-- hori iritsi aurretik Hori of GetString nola dagoelako benetan kanpaia azpian lanean. Beraz, dezagun begirada bat hemen. Ls idazten dudanean bada nire direktorioa, nabarituko ez duten I students.csv izeneko fitxategi bat dute, Ez dago besterik, ez da existitzen. Beraz, programa honetan bildu badut, structs-1,. / Structs-1, eta aurrera joan eta idatzi egingo dut Andi, nor Berkeley-en bizi Yale. Rob izan goaz nor Thayer bizi da egun hauetan. Eta ez dezagun etorriko non batera da, nire ustez, Maria Mather da, I behar bezala gogoratuko dute gero. Beraz, ezer gutxi gertatzen. Baina ls badut orain, ez students.csv da. Dezagun aurrera eta students.csv irekita. Hau da, berriro ere oso bat arin fitxategi formatua. Baina ez dut besterik konbentzio bat onartu bi lerro eta zutabe hemen dudala. Lehenengo zutabean pertsonen abizenak. Bigarren zutabean da ikaslearen du gela, edo unibertsitatean, edo etxe edo whatnot. Eta orain salbatu honek Nik fitxategi batean betirako. Beraz, ez da hori guztia interesgarria. Baina hau ez da, besterik gabe, urrats harri bat orain Informazio diraute ahal izateaz betirako. Beraz, ikus dezagun orain zer gehiago ezin dugu Ezaugarri horiek eta beste egin. Baina lehen, edozein galdera? Asko izan zen, eta hori izan zen azkar. Baina asko ikusiko duzu pset 4 gehiago, eta baita. Bai? Ikusleak: Ba al dago modu bat izenak gehituz fitxategi hori jarraituko? DAVID J. MALAN: Galdera ona. Ba al dago jarraituko modu bat izenak gehituz fitxategi hori? Bai. Eta, hain zuzen ere, azkenean baduzu ireki fitxategia berriro irekitzea, aurrekontua erabili beharko duzu: unquote "a" append, bertan besterik linea berri bat gehitu litzateke, bat linea berria behin eta berriro, zehazki. Ona galdera. Beste galdera? Bai? Ikusleak: you ran badu programa berriro oraintxe, litzateke izenak gehituz mantendu da artxibatzen edo litzateke zabalduko da fitxategi berri bat? DAVID J. MALAN: Ah, galdera ona. Programaren berriro eskuineko ran baduzu orain, agian, izen berriak idatzi, litzateke gehitu beharko diote da edo gainidatzi fitxategiak orduan? Bigarrenak, berriz, ez naiz delako Ez erantsi moduarekin. Eta besterik blindly nagoelako fitxategia ireki idazteko ireki, besterik ez da fitxategia gainidatzi egingo da. Beraz, ez dut hain zuzen ere, behar litzateke egin eransteko da, epe luzean benetan izan nahi badut datu-basea. Orain CSV erabilgarria da, Egia, nahiz eta bezalako bazaude writing-- eta azkenean, ikusiko dugu hau geroago seihilekoan denean beste helburuetarako CSVs erabiltzen dugu. Pertsona guztiak gorde nahi baduzu duten ekitaldi batzuk matrikulatu edo sinatu zure ikaslea taldea, edo horrelako zerbait, datuak gordetzeko mota honetan formatuaren da super erosoa. Literalki delako, badut ziren fitxategi hau deskargatzeko. Double-- izan dut eta utzi benetan saiatu honetan Excel edo zenbakiak izan beharko dut hemen. Eskuin-klik noa edo kontrol-klikatu nire fitxategia. Whoops. Eskuin-klikatu edo kontrol-klikatu nire fitxategia. Tira, nire saguaren ez da lankideen. Download-- noa fitxategi guztiak deskargatzeko hemen orain Besterik ez, beraz, batek hartu ahal izango dut. Eta ikus dezagun lan egiten bada students.csv-- lehen aldiz I aktibatu duzun. Orain nire kontaktuak ikusi nahi dute. Orain, izena eman behar dut. Ikusi nola erraza CSVs erabili ahal da? Bai, gorde sortu data. Ados, orain class egiteko prest gaude. Ados, ai, zer berri? Ados, hurbil. Hori magikoa izan zen. Ados, orain eguneratu dugu. Eta orain, hura ahaztu eta artxibatzen jatorriz ireki nuen, baina zer a-- Hor dugu. Ados, beraz, orain Excel fitxategi bat daukagu. Eskerrik asko. Ados, beraz, zer egin nuen zatia erraza izan zen. Noski, ezin izan du aurrez instalatutako Excel edo zenbakiak, edo dena delakoa programa. Baina hau ez da polita, zeren orain manipulatu ahal izango dut formatu estandar batean dauden datuak. Beraz, gaur egun dezagun testuingurua non utzi dugun aldatzeko azken aldiz, bertan zegoen hasteko off hartu prestakuntza gurpilak. Baina lehen, zuk ez ikusi lehenago bazkaria honetan da berriro hemen gertatzen Fire at eta Cambridge, Sitar New Haven izotza. Kontu CS50s webgunean ASAP CS50 ikasleak eta langileak batzeko. Beraz, prestakuntza gurpilak hartu genuen astelehenean off follows-- gisa katea izan ere deklaratu CS50s denbora pixka liburutegian. Eta polita da, aukera ematen duelako digu aldagai buruz hitz izateaz hitzak osatu eta esaldi eta gehiago. Baina bihurtzen da katea ez da existitzen. Hori besterik ez da sinonimo bat, edo alias bat da, zerbait sortu dugu hori Egia esan, apur bat gehiago tekniko char bat izeneko *. Eta hain zuzen ere, adibide bat ikusi genuen astelehenean programa baten Ez zuela jokatu espero dugu nahiko. Hau fitxategia bere, konparazio-0. Eta gogoratzen duten alderatu-0, bada Asteleheneko programa berkonpilatu dut eta exekutatu alderatu-0 eta mota ama ere Minuskulaz, eta ama minuskula berriro. Programak azpimarratu dut idatzi gauza desberdinak, nahiz eta ama, guztiak ere, nahiz eta Minuskulaz, berdin-berdina da ikusmen. Beraz, zer erantzun laburra izan zen zergatik ordenagailua pentsatzen bi kate horiek desberdinak dira? Bai? Ikusleak: [INAUDIBLE] DAVID J. MALAN: Eskuin. Beraz, ama eta, lehen aldiz , Idatzi dut, ez dago izateaz nonbait gordetzen nire ordenagailuan memoria, baina beste leku batean Bigarren denbora baino idatz ama naiz. Orain zalantzarik optimizatzeko zitekeen. Ordenagailua smart izan daiteke eta bi kateak konturatzen, beno, berdin-berdina ari dira. Gurea ez dit premiazkoak gorde. Baina ordenagailuak ez egin, optimizazioa haiei kontatu ezean. Beraz, besterik ezean, ari dira besterik azkenean joan oroimenez bi leku desberdinetan. Eta beraz, argiagoa, noiz izango den bi kate alderatu dugu, s lehen deitzen zen, Bigarren deitzen zen t, zer zehazki nengoen on line 13 hemen alderatuz? Bai. Ikusleak: da memorian tokia da aldakorra dela seinalatzen duten. DAVID J. MALAN: Zehazki, nengoen memorian lekua alderatuz aldagai horiek duten adierazi da. Beraz, zehazki, ama balitz zen byte 2 zenbakia 1, eta, eta 3, eta, 4 delako gogoratu backslash 0 beharra amaieran modu guztiak izan nahi du. Eta beste ama, m-o-m instantzia, helbidea, 10, 11, 12, eta 13 izan zen. Zen alderatuz I 1, helbide hori, memoria kokaleku horretara, 10 aurka, hau da, jakina, ez da gauza bera. 1 ez da 10. Beraz, hau da, polita, nahiko erraza da. Baina problematikoa da heinean Ezin dugu badirudi kateak konparatzeko. Beraz fundamentally-- eta maila baxua honetan, ezartzea nahi baduzu programa bat konparatu bi hitz bereizten dituzten Erabiltzaile kalitateagatik idatzitako, egiten sortu line gastatuen char, besterik oro har, Zer egin itxuraz behar dugu? Ez da nahikoa, besterik gabe, Bi helbide horiek begiratu. Zer egin behar dugu? Bai? Ikusleak: Batetik bestera joateko bitartez katea [INAUDIBLE]. DAVID J. MALAN: Bai, dezagun kate bidez batetik bestera joateko. Dezagun erabili ren bat amaitzen da, berriz, begizta bat egiteko, edo edozein dela ere ari erosoenak. Eta nik bi kateak lortu dugu nonbait oroimenean, dezagun en bakoitzeko Lehenengo karaktereak, ondoren, bakoitzak egin bigarren pertsonaia, ondoren, hirugarren eta laugarren, eta bosgarrena, dugu hit arte zer Sentinel balio berezia? Ikusleak: [INAUDIBLE] DAVID J. MALAN: Bai, backslash zero, eta amaitzen bai katea at erabaki hori dela esan daiteke. Agian karaktere bakar bat datorren dugu? Hala ez bada, faltsua itzuliko. Hala bada, itzultzeko egia. Eta beraz, hori zehazki zer bertsio honetan Programaren konparazio-1.c du. Berdina da zer egiten dugun Astelehena begiratu nuen ditudan ezik Ahaztuak hitza kate kentzeko arren Hori ez impact-- funtzionalak ditu guztiak Orain egiten ari naiz da kendu visual prestakuntza gurpilak batzuk, baina argi eta garbi ikusi ahal izateko s eta t helbideak dira. Eta hori da, izar ditu, izartxoa, adierazten Helbide bat da, bestela ezaguna Gehiago teknikoki erakuslea. Beraz, noiz s on deklaratzen dut 9 lerro eta char * s esaten, horrek ez du esan emaidazu kate bat. Horrek esan nahi du eman dit aldagai baten helburua bizitza Helbide bat gordetzeko. Eta azkenean buruz diodalako sartu kate baten helbidea. Eta hain zuzen ere, GetString, nahi izan argi eta garbi, ez du kate bat itzuli. Ez du ama itzultzeko backslash zero, per se. Zer esan nahi du zehazki, GetString eta, hain zuzen itzultzeko? Ikusleak: [INAUDIBLE] DAVID J. MALAN: helbide bat, lehen karaktere helbidea kate batzuk ere egiten ditu ahaztuak. Eta, beraz, gaur egun ikusten ari gara keyword berezi bat berriro. Eta, aipatu lehenago dut. Hau da konbentzio ona izango da orain ikusiko dugu behin eta berriro. Dut egiaztatuz ziur dagoela egiteko s ez da nulua eta t ez da nulua. Oinarritutako delako benetan nire on Aipamen azkar lehenago, GetString ez itzultzen bada, zer esan nahi helbide bat baina N-U-L-L, hau da, berriro, balio berezi batzuk? Ikusleak: Akatsa. DAVID J. MALAN: error bat da. Zerbait oker joan. Eta zer normalean Gerta liteke, batez ere, bertan strings-- batera egongo den advance-- luzera ezezaguneko agian, ordenagailuak ' oroimen gabe, agian, mekanografiatuak, besteak beste, bat duzu Hitz edo esaldi luze edo, besteak beste, idazlan erraldoi bat itsatsiko ez da nahikoa memoria da. Eta beraz, GetString ezin itzuli gauza osoa helbidea, beraz, besterik ez da ezer itzuliko da. Eta akats bat gertatu esaten du NULL balioa berezi itzuliz. Zero helbidea da, nolabait esateko. Orain bihurtzen da C bat dator Funtzio hori iterazio egiten duen. Guk ez dugu izan, hau ezartzeko batera begizta edo bitartean geure begizta bat izan da. Funtzio bat erabili ahal izango dugu, laburki izeneko, irabiatu comp, edo kate alderatu, zeinen bizitzako helburua da, zehazki horretarako. Dela bi erakusle, bi helbide ematean, eta izango da helbide horiek joan eta gero alderatu gutun for kalitateagatik gutun egiteko gutun, denean bakarrik zer da egia gelditu? When senez comp irabiatu behar gelditu errepikatzean, argi izaten? When 0 barra hits ere bai katea, eta amaitzen da erabaki ahal izango da ha guztia datorren, edo han izan da desadostasun bat? Beraz, hau abiarazi dugu orain eta saiatu bada gure little kapitalizazio jokoa, beraz, alderatu-1, ./compare-1, eta ama idatzi minuskulaz bi aldiz. Orain, gauza bera da. Eta berriro egiten badut batera Minuskulaz eta gero, agian, maiuskulaz. Orain, hain zuzen ere bereizten ditu goiko eta minuskulak. Beraz, ez dela gogor edo magikoa, baina ez du orain azaldu zer ari den gertatzen kanpaia azpian. Beraz, zer gehiago atera ikasgai mota honetan? Beraz, dezagun begirada bat. Aurrera joan eta idatzi bat noa programa azkar hemen kopia-0 deitzen. Eta orain, goazen aurrera, eta benetan en hau egin kopia-0 batera utzi, hemen zer dut begirada bat hartu. Lehenengo erabiltzaileak esaten dut, esan zerbait. Ondoren kate bat lortuko dut eta bertan gordeta I s ere. Gero check I s berdinen NULL, besterik gabe itzultzeko 1. Beraz, hau da, besterik gabe standard error egiaztapena da. Ezer interesgarria gertatu da. Eta hain zuzen ere, lortuko dugu error kentzeko bada egiaztapena, hau bezalako aste 1 kodea itxura une honetan. Baina hasi naiz bat lortzeko apur hori hobeto. 16 linea Orain, duela astebete, agian, nahiz eta duela pare bat egun edo minutu, esan dezakezue line 16 da t aldakorra izeneko bat sortzeko eta kopiatzea sartu s. Eta hori ezin hobeto bat arrazoizkoa eramateko. Baina zehazkiago orain. Zer da line 16 gertatzen da? Zer da ohitu kopiatutako eskuinetik ezkerrera? Bai? Ikusleak: t s helbide bat lortzeko? DAVID J. MALAN: Zehazki, t s, helbide lortzean. Beraz, argi izan orain, alde egiten badut Adibide horretan itzuli eta marraztu dut gauza idatzi dut. Eta zer idatzi dut in-- hemen s da, eta hemen dago zer nonbait idatzi dut ere memoria, ama eta, ondoren, barra bat 0 hori niretzat gehitu. Zer gordetzen dut hemen ere, gogora ekarri, hau kokapena 1, 2, 3, 4, da, hau da, zer da gaur egun, s ere. Beraz, on line 16 bada, ematen dit esaten dut beste t eta denda aldakorra izeneko s balioan ere, zer ez dut hemen gordeta lortzen ez ama baizik eta, besterik gabe, 1 zenbakia. Beraz, aurrera begiratu behar dugu programa honetan bada orain, zer gertatuko? Beraz, ez dagoela ohartuko da Funtzio honek dituzun Duela denbora batzuk erabili dituzte, hau Zesar, edo Vigenere, edo, agian, ez da batere. Diotenez, nire printf dut, ez naiz kopia t larriz joan. Lehen lerroan 19, azkar behatu ere egiaztatu, strlen egiaztapen t luzera. Zeren eta ez dut nahi saiatu zerbait larriz ez katerik ez bada. Erabiltzaile hit bada bakarrik sartzen, ez dago ezer larriz. Beraz, ez dut nahi line 21 egin. Beraz line 21 kapitalizatuz da letra, antza denez, t? Ikusleak: m? DAVID J. MALAN: Itxura atsegin kopiatzea da zein den? Ikusleak: m. DAVID J. MALAN: Uh, m. Ados, beraz, lehen m, oharra naizela delako , toupper aurretik igaro bertan Nik inoiz ez baduzu ikusi da, da, funtzio bat Bere sarrera gisa larriz. t tarte zero esan eman me zero t izaera. Eta beraz, nola ez hau irudi aldaketa, argi izan behar du? Zer berridatzi emateko edo aldatu behar s errespetua eta t eta ama backslash zero. Ikusleak: [INAUDIBLE] DAVID J. MALAN: Bai, Beraz, hau hemen, besterik gabe, beharrak aldatu emateko zaie Halako konpondu den kapital m a ezagutu aldatu beharra. Baina orain, begiratu geroago ere programa, bada inprimatu dut s eta t hemen garbitu nuen bezala, kontuz zer da s eta t inprimatzeko gertatuko. Beraz, kopia-0, ./copy-0. Dezagun aurrera me eta idatzi Minuskulaz guztiak ama ere. Iragarki bai jatorrizko eta kopiarekin izan kapitalizatzen dira. Zergatik? Beno, s eta t dira biak seinalatuz, izango bada, memoria zatia berdina. Eta Egia, lortzean honetan Izan ere, benetan uninteresting-- helbide zero erabiltzen ari gara hemen. Esan nahi dut, ez dut benetan axola non gauzak oroimenean da. Sentitzen dut pixka bat gehiegi ezabatuz naiz. Baina ez dut benetan axola non gauzak memorian dira. Eta, beraz, hain zuzen ere, zer programatzaileak joera pentsatu dela buruz ari zarenean helbide bat, edo erakuslea, zaintzen duten non dagoen memorian. Ez zait axola da kontuan hartuz gero byte bat edo bat milioi. Berdin zait, besterik gabe, hori aldakorra da eraginkortasunez zatia memoria hori seinalatuz. Eta, beraz, gaurtik aurrera, baino quibble arbitrarioa memoria helbideak baino gehiago, dezagun besterik hasteko erakusleak marrazteko erakusleak, geziak bezala. Beraz, zer s eta t benetan dira, Programa honen arabera, t nola sortu dut delako, aldagai bi besterik bereizi da memoria zatia bera seinalatuz. Eta ez dugu axola non dauden. Beraz, ezin dugu zehatz-mehatz hori urruntzen abstraktuak. Beraz, nola ez hau konpontzeko? Kopia bertsio bat idatzi nahi dut programa hori benetan kopiak katea eta kapitalizatzen bakarrik kopia, besterik gabe, intuizioa, zer da lortu bat izan nahi du gure irtenbide osagai? Ikusleak: [INAUDIBLE] DAVID J. MALAN: a zer behar dugu? Ikusleak: memoria zatia. DAVID J. MALAN: behar dugu beste zatia memoria, ezta? Ez dakigu nola oraindik ez da, nahitaez. Baina mota behar dut, beraz gertatuko Hori minuskulatan jatorrizko ama ondorioz sortu memoria zatia aparteko hori ere. Eta orduan, kopia aldatu dut, ez dute nahi, kopia hau aldatzeko hemen. Ordez, aldaketa hori bakarrik nahi dut kopia, beraz, jatorrizkoa ez da aldatu. Beraz, ikus dezagun nola egiten dugu agian. Kopia-1, dagoeneko sido iruzkin aintzat harturik, baina online iruzkindu da. Ordez egiten dugu honako hau horiek lerro-berdinak dira, get me kate bat eta deitu s. Baina orain dezagun gure gehien batean konplexu baina konplexutasuna azkena awhile, 16 lerro ez zehazki hau. Beraz, zure comfy batera bada Irudian drew-- besterik ez dugu eman dit zatia memoria bat, dena kopiatu sartu, ikus dezagun hori nola itzuli dugu kodeari. Beraz, 16 lerro, ezkerreko aldean, char * t ematen dit kutxa hau hemen baino. Hori guztia egiten du. Eskuinean On, m esleipenen, edo malloc, memoria esleipena, super fancy da, besterik esateko modu bat críptica ematen dit memoria zatia. Zenbat memoria behar dugu? Beno, adierazpen handi baten antzeko zerbait da. Baina ikus dezagun hemen zer dioen. Beraz, hau, noski, ez da emango me katea s luzera. Beraz, ama zer izan behar du? Beraz, hiru, ezta? ama, hiru pertsonaia da. Zuk ez duzu zenbatu du backslash zero duzunean Kate bat da, luzera buruz hitz egin Egia esan, giza ikusgai letrak. Beraz, ama, beraz, honek ematen dit 3. Baina itxaron minutu bat eta ni hala gehituz nabil 1. Zergatik ez dut benetan nahi esleitu 4 byte, eta ez soilik 3? Bai? Ikusleak: Sentinel balioa For? DAVID J. MALAN: Zehazki, Sentinel balio horretarako. Backslash zero, Behar dut 4 byte guztira. Beraz, luzera behar dut katea gehi 1. Eta gero measure-- ona besterik baita sistema honetan, nahiz eta, nik beti 1-- egoteko esaten dut joan biderkatu hau char bat tamainaren arabera. Turns sizeof da C operadore batek besterik esaten dizu hori da byte kopurua datu-mota jakin bat behar da. Ez du arrayak lan, normalean, batzuetan ez. Baina kasu orokorra, ez. Baina esango dit zenbat byte bat char da, eta horrek bihurtzen da beti 1. Beraz, hau 1 biderkatuz bezalakoa da. Bila Beraz super críptica kode lerro. Baina guztiak du ematen me memoria zatia. Baina ez du, kopiatzea dirudien ezer memoria hori sartu? Oraindik ez. Eta orain zer egin behar dut on line 22, eta 23, 24, 25, bai, ez dut besterik honetan. Eta hau da Ordena eskola zaharra stuff orain. Hau PSet 2, non bezalakoa da besterik gauzak mugitzen ari zarenean Inguruan oroimenez, edo hobeto esanda, kateak. Beraz, ez dut 0tik errepikatzean katea s luzera. Eta i-garren pertsonaia kopiatzea naiz s i-garren t izaera sartu ere. Eta dudalako, programatzailea, egin Ziur byte zehazki asko esleitu behar dudan bezala, ezin hobea da bat-bateko harremana. Eta ama kopiatu dut berria minuskulan. Eta gero, azkenik, lerro hau egin dut. Eta beraz, eragina da soilik t honi probetxua ateratzen hemen. Beraz, asko, xurgatzeko baina kontuan hartu besterik ez baduzu zer benetan joan kanpaia azpian on hau da, besterik gabe, horiek mugitzen byte inguruan, hori guztia behar da arazo hau konpondu ahal izateko besterik digute zatia memoria. Orain arriskuan jartzen erabatekoa, let me erakutsi beste adibide bat hori da, ia berdin-berdina, batek ezik kode lerro. Beraz, hau hacker bertsioa da Programa honen, izango bada. Baina utzi destila nahiko luke zer ari den gertatzen sartu da. 24 Line t hau izaten zen tarte i s tarte i lortzen. Orain, aldatzen ari naiz hau askoz gehiago críptica izar t plus 1 berdinen izar s gehi 1. Beraz, zer gertatzen ari den eta zergatik Zer izar pertsonaia bat behar dugu? Izarraren aurretik ikusi dugu, eta ezberdinean hemen erabiltzen ari. Aurretik char * ikusi dugu, orain ikusten dut a hasieran izarra, eta hori OK. Bihurtzen da dugulako motatako ondoriozta daiteke, besterik gabe, Lehenengo ditugunen printzipio zer gertatzen den. Beraz, argi izan behar, zer da? Joan den astean, kate bat izan zen. Hori ez da nahikoa jada. Zer da s, zehazki? Ikusleak: [INAUDIBLE] DAVID J. MALAN: erakuslea da. Helbidea sartu da Lehenengo karaktereak idatzitako dugu. Ados, zer da t? Ikusleak: [INAUDIBLE] DAVID J. MALAN: The Lehenengo byte helbidea t ere, zatia memoria hori reallocated. Eta gertatu da guk 0 eta batetik bestera joateko katea gora luzera, lehenik eta behin, i Hasten 0, zeren begizta gauza egiteko eskola zahar hau. Beraz, soilik Erraza, dezagun Lehenengo duten kode lerro suposatuko Benetan, besterik gabe hau, eskuinera. I zero bada, zero gehitzen zerbait zentzuzkoa Ez da ondorio bat izan da. Beraz, zer da esaera hau? Bihurtzen izarraren dela Testuinguru honetan operadorea dereference da operadorea, besterik ez da go esaten modu dotore bat ondoko helbidera. Beraz s bada lehenengoa helbidea da memoria zatia honetan pertsonaia, * S bitartez joan. Eta guk marrazten duelako Modu honetan, argazkia, adoptatu ahal izango duzu eredu mental jarraituz. Hau s badago, eta esaten duzu * s, * s motatako buzoiak eta eskailerak bezala, Joko gogoratzen duzu bada haurtzarotik, gezi hori jarraitu eta joan bezalakoa da helbidera. * T gauza bera da. Beraz, hasteko hemen, joan bere zatia da. Ezin dut besterik marraztu Pantaila honetan, era horretan. * Hemen joateko t esan nahi du. Eta gero, begizta for besterik ez da mugitu pertsonaia hau hemen esaten, mugitu pertsonaia hau hemen, mugitu pertsonaia hau hemen. Baina, nola egin dezaket incrementation hori? Zer ezabatu besterik ez dut desegin behar dut. Hau da, oro har izeneko erakuslea aritmetika, eta horrek helbideak matematika esan nahi du. Bada, hau begizta, I Incrementing jarraitzen dut, eta s helbide bat da eta t da helbidea, I besterik ez duzu bada gehituz 1, bakarrik esan nahi segi horrela, eta aurrera, eta memorian aurrera. Oxford Street bezalakoa da, etorri kale CS eraikinean dago. CS eraikinak 33 Oxford Street da. Beraz, bada, 33 egin zinen Oxford Street plus 1, eramango zaitu 34 Oxfordera Street, ondoren, 35 Oxford Street, ondoren, 36 Oxford Street, edozein dela horiek eraikin benetan dira - balego. Eta beraz, hori guztia egiten ari gara Hemen erakuslea aritmetika batera. Beraz, modu super urrutira bat da geure burua adierazteko. Baina hori guztia gertatzen ari kanpaia azpian Helbide hauek honako hau da, besterik gabe, Mapa bat jarraituz bezala, izango bada, edo honako bezalako geziak pantailan agertzen dugun marrazten. Ados, asko digeritzeko. Sintaxia edozein zalantza argitzeko, kontzeptuak, erakusleak, malloc, edo antzekoak. Bai, hemen baino lehen. IKUSLEEN: non duten dio * t berdin toupper * t, da hori larriz joan Hizki guztiak edo just DAVID J. MALAN: Ah, Galdera benetan ona. Beraz, lerro hau hemen ere, 31 da hau larriz joan Lehenengo letra edo letrak guztiak. Hargatik erantzun hori joanda lehenengo printzipioak itzuli. Eta hemen lehen printzipioak esan nahi dut besterik joan oinarrizko definizioei Zer da parte hartzen dute. Beraz toupper funtzio bat hori char kapitalizatzen. Hori da dena. * Lehen aukera joateko t esan nahi du t helbide joan. Beraz, irudian, hau zatika bada oroimenaren esleitu malloc dugu, eta hau t da, * t esan nahi du hemen. Bien bitartean, pasatzen ari zaren balio hori, minuskula m toupper, atzera lortzean ari zaren capital M, non bizi zara jarriz? Zuk jartzen ari gara duten leku berean. Eta beraz, horien logika horren arabera Oinarrizko definizioak da soilik Lehenengo letra kapitalizatuz batetik bestera joateko ezean i edo batekin begizta edo bitartean begizta bat, ez da joan ezer gehiago eskatu duzun baino ez da. Ona galdera. Bai? Ikusleak: Zergatik erabili zenuen du beharrean metodoa erreferentzia kenduta Array? DAVID J. MALAN: Ah, galdera ona. Zergatik dereference erabili duzu ordez array metodoaren metodoa? Ez dago arrazoi berezirik, egia esateko. Eta, hain zuzen ere, horretarako Adibidez mota, eskubidea, Besterik ez naiz egiten argudiatuz programa zailagoa, Begiak gehiago dira behin kristal, Jende dira egiaztatzen honek itxura super urrutira delako, baina nahiz eta gauza bera egiten ari da, nahiz eta. Eta beraz, Egia, hau da Konponbidea alferrik ikusmen konplexua arazoari. Oraindik ere ez da ona diseinua, bost bost diseinua egiteko daudelarik, da parentesi ala notazioa edo erakuslea idazkera. But-- batez ere lortuko dugu Ikasturtean zehar beranduago pset 5 denean hiztegi ezartzeko dugun Garaietatik pare bat aipatu dut benetan dugu buruzko zaintzeko maila baxua memoria helbideak Benetan ulertzen dugun Zer gertatzen ari da. Baina, oraingoz, bihurtzen da hori kodea parentesi hemen koadroko lerroa ez da benetan existitzen. Zer deitzen dira Azukre sintaktikoa, eta horrek Bat esateko modu besterik weirdly cool da Konpiladore bihurtzen karratu parentesi izan adierazpen matematiko hori. Beraz, giza konbentzio bat da besterik idatzi ahal izateko oso lagungarria parentesi horiek. Baina zer konpilatzailea, Clang, Zinez edonoiz egiten zer gertatzen den lerro nabarmenduta idatzi duzun 24, kanpaia azpian da benetan bihurtzeko honetarako. Besterik gizatiarragoa gisa dibertigarriagoa irakurtzen eta 24 linea bezala idatzi kodea. Baina azkenean horiek prestakuntza gurpilak ere etorri off norberaren erosotasuna propioak indartsuagoa lortzen denean. Ondo da, beraz, gogora ekarri ondoren, hori Arazorik larriena moduko zen sartu zuena dugu. Eta hori da, zer piztu osoak honetan erakusleak buruzko elkarrizketa madarikatua, eta helbideak, eta kopiatzea gauzak. Erori garelako izan da ergelak, ergelak Arazo hau, zeinaren Logically-- ezarri dut Lauren batera Hemen demo eta laranja zukua eman milk-- ere primeran bat Funtzio karguen zuzena Bi aldagai 'trukea egiteko balioak, baina gauza madarikatua ez dute iraunkorrak edozein, edo iraunkorra, efektu nire kodea orrian. Eta zergatik gertatu zen hori? Hitz batean, zergatik da hau swap ezartzeko logikoki zuzena, baina eragina ez du direla bertan pasatako aldagaien gainean, x eta y nagusientzako bezala? Zein izan zen gai bi ideia nagusi? Bai? Ikusleak: delako aldakorra egin aldakorreko kopiak mendatean funtzioaren bidez. DAVID J. MALAN: Zehazki, pasatzen duzu funtzio batean aldagai edo argumentuak funtzio batean, Oraindik dute kopia, onartu zuen bertan esan nahi berdina aurkezten ari lortuko duzu bai x eta y bit eredua, a eta b hemen deitzen. Eta ezer egin dezakezu kopia horiek nahi baduzu, baina ari dira ez dute joan zenbakira deituz funtzioa eragin. Eta, hain zuzen ere, genuen hori Irudian pantailan, oroitzapen on Azken aldian, zeinaren baduzu benetan zer pentsatzen gertatzen hood-- bada azpian hau da ordenagailuaren memoria da, eta hemen behera zatia da memoria ari nagusia erabiltzen, honen zatia da memoria ari swap erabiltzen, eta duela nagusia bada, beraz, nahiz eta bi aldagai, x eta y, swap bila berdin-berdina izan liteke balioak, biak dira 1 eta 2, baina erabat ari dira memoria zatiak ezberdinak. Beraz, horri irtenbide bat behar dugu. Eta Egia, ez dugu orain dela iruditzen zait Arazo horri irtenbidea izan, eskubidea. Orain gaitasuna to the baditugu gauzak manipulatzeko helbideak bidez eta, ordenatzeko buzoiak eta eskailerak style, jarraitu gezi horiek eta inora joan nahi dugu memoria, ezin izan dugu Arazo hau konpontzeko nagusitik pasatzen trukatzeko balioak ez dadin nahi dugu swap, baina intuizioz zer pasatu izan dugu ordez trukatu? [AHOTS INTERPOSING] DAVID J. MALAN: Zergatik ez dugu besterik pasa ezazu helbideetara, ezta? Zergatik ez swap bat eman dugu altxorra mapa, izango bada, eramango da behar Benetako balioak x eta y. Dezagun swap, benetan aldatzeko jatorrizko bit horiek, baino bit kopiak pasatuz. Eta, beraz, hain zuzen ere, horixe da joan konponbidea izan nahi du. Bertsio hau hemen dago Argi eta garbi txarra eta flawed. Eta orain, hasiera batean, itxura besterik ez da atsegin ko sorta bat gehitu dugu ausaz eta gure behatzak zeharkatu Hori konpilatu litzateke. Baina, gaur egun biltzeko litzateke. Baina ikus dezagun zer gauza horiek esan. Eta, zoritxarrez, egileek C sinbolo bat aukeratu ahal izan Hau apur bat egiteko argiagoa, baina izar operadoreak esanahi desberdinak ditu bi testuinguru desberdinetan. Eta ikusi dugu bai, baina dezagun bereizteko. Beraz goialdean dago up, denean eta b aldatu dut int izatearen txarrak ere bertatik Bertsio izarrak, eta b Int Aurretik, osokoak izan ziren. Zeintzuk dira gaur egun eta b ona, berde bertsioa? Helbideak ari dira. Zer, helbideak argi izan behar du? Osokoak helbideak. Izan ere, naiz dela int izar bitartekoak esanez honen helbidea da zenbaki oso bat, zehazki. Beraz, orain, kode lerro nabarituko, beste zerbait ere aldatu egin da. tmp berdin jarraituko du, izan ere, Aldi baterako osokoa besterik ez da, no memoria magia ez. Baina bat orain izar bat behar du. Eta, hain zuzen ere, behin beste bat, eta b aipamen, nabarituko da hori guztia gorritik berdera aldatzen dela aurretik naiz izarrez aldagai horiek. Ez dudalako nahi eta b kopiatzeko. Dudalako kopiatu besterik ez bada bat eta b swap a eta b, zer naiz benetan aldaketa dut? Just helbideak, swap nahi dut zer helbideak horiek at da. Hara joan nahi dut. Eta beraz, izar-operadorea barruan nire funtzioa, Ez parametro-zerrendaren barruan, esan nahi du horiek joan helbideak duzu eta balio horiek benetan aldatzeko. Beraz, zer irudian egiten du orain ordez itxurarik. Beno, pasatzen dut ordez batez ere, eta B, ez 1 eta 2-- Benetan dut gehitu behar beste definizio bat hemen. Beraz, eman dezagun pusketa hori oroimenaren kokapena 10ekoa baldin bada. Hau kokapena 11a da, baina hau sinplifikazio bat pixka bat da, Daukat orain bi aukera egin dut gainditu x eta y edo ez, beren helbideak igaroko da? Beren helbide pasatzen dut bada Hau atsegin, besterik ez dut orain ezartzeko behar berde kodea per swap beraz, ikusten duten bat eta noiz ikusten b, ez du besterik kopia bat eta b eta esnea eta laranja zukua mugitu. Esnea eta laranja zukua Metafora orain hausten behera, edalontziak dira horiek delako likido eta ez mapak. Ordez joan behar dugu 10 eta guk aurre egiteko 11 helbidera joan behar, eta gero aldaketa logika lantzeko. Beraz, logika bera da, baina pixka bat eta beste modu bat behar dugu ren aldagai horiek sartzeko. Eta beraz, azken batean, zer egin programa da hau itxura emateko. Swap.c literalki kopiatu egin eta itsatsiko berde bertsioa. Baina aldaketa bat egin behar dut. Ez da nahikoa besterik swap aldatzeko. Zer beste kode lerro ez da aldatu behar dut? Bai? Ikusleak: Non argudioak hartzen du. DAVID J. MALAN: Non Bere argumentu hartzen du. Beraz, joan I nagusira bada, I Ezin duzu besterik ez x eta y gainditu, eta, zin egiten dut, azkena sintaxia berrien pieza gaur. Ez x gainditu behar dut eta y baina x eta y helbidea. Eta bihurtzen da, ikurra C egileek aukeratu da & ikurra hemen erabiltzen baduzu, ez egon bitekin ampersand nahastu, & ikurra erabiltzen baduzu Hemen eta ampersand bat hemen, hau zifrak zuretzat, Zer da x helbidea, Agian da 10, zer da y helbidea, agian, 11 eta pasatzen ordez dutenak. Beraz, asko guztia xurgatzeko aldi berean. Baina utzi bizkor ikusiko orain hamarkadaren gure gainerako lau minutu non gauzak gaizki joan daiteke. Eta alde batera, benetan gisa Argazki hau hartu dut, TF hartu zuten argazki hau urte bat edo bi ago. Beraz, hau da atzera izkinan da Eliot Jantokia Hall of. Erakusle dira agian gogorrena Gai hori estaliko dugu CS50. Beraz moduko kezkatu baduzu malda da, agian atsegin da hockey makila bat gehiago Hau atsegin, konturatzen Oraindik ere gailurra motatako eska dugu kontzeptuala konplexutasuna dagokionez. Eta eman hau ekarri dut Argazkia, I zin delako jainkoa, jaitsiera 1996an, noiz hartu nuen Nire irakaskuntza fellow CS50, Nishat Mehta, me eseri zuen behera en izkinan Eliot D. Hall of bazkaria baino gehiago, edo afaria, edo zerbait saiatu erakusleak ulertu ahal izateko. Eta hau da, non aste ondoren nengoen hitzaldia denean ere sartu zen Azkenik ulertu nuen erakusleak. Eta itxaropentsu hori naiz urrun lehenago zuretzat klik egingo. Baina konturatzen hau erabat artean gaiak sofistikatuagoa begiratu dugu. Baina boteretsuena artean. Eta noiz lortuko duzu, benetan denak da besterik azkenik etorri elkarrekin joan. Beraz, atseden ziurtaturik ez du egiten gaur konketa guztiak behar. Hortaz, hona hemen azken programa da begiratzen goaz. Eta ari gara batekin amaituko joan claymation hiru minutu azkar gure laguna, Nick Parlante egindako. Hemen programa bat da, goiko bi on lerro x eta y aldagai bat deklaratzen. Biak dira helbideak osokoak, AKA erakusleak. Ondoren, esleitu nahikoa dugu int bat gordetzeko memoria eta helbidea gordetzeko x memoria hori. Beraz, nahiz eta errazagoa da Adibidez baino. Give me lau memoria byte, int baten tamaina da, eta jarri helbide hori x ere. Linea horrek esan nahi hemen x-en helbide joan eta esanahia jarri Bizitza, 42 zenbakian dago. Baina lerro honek kezkatzen nau. Star y helbide joan y esan nahi du, eta jarri unlucky 13 zenbakia ez. Zergatik da arriskutsua, puntu honetan kontu batean bada ere, oso azkar kontatu Gure Ilbeheran minututan hemen zergatik da txarra Ba niri esateko, joan y en helbide honetara? Ikusleak: ez daukazu [INAUDIBLE]. DAVID J. MALAN: ez daukat ezer ipini y en. Beraz, zer y balioa da, Istorioa Puntu honetan? Ez dakigu. Zabor balio batzuk da eta ezta daki hegazti. Ohar honetan genezake amaituko bada. [Bideo-erreprodukzioa] -Aizu, Hegazti, esnatu. Erakuslea pasatzeko garaia da. -Zer da hori? Erakusleak buruz ikasi? Oh, Goody. -Ba, Urratsak emateko, asmatzen dut gaude erakusleak pare bat behar da. -ONDO DA. Kode hau bi erakusleak esleitzen bertan zenbaki osoen seinalatu dezake. -Ados, Ondo ikusten dut bi erakusleak, baina ez dute ez dirudi ezer behar seinalatuz. -Hori Da. Hasieran Erakusleak ez ezer seinalatu. Seinalatzen dute gauzak dira pointees izeneko eta horien ezarpena beste urrats bat da. -Oh, Eskuinera, eskuinetik. Hori banekien. Pointees dira bereizita. Beraz, nola ez pointee esleitu duzu? -Ados, Bai kodea bideratzen honetan zenbaki oso pointee berri bat, eta zati honetan ezartzen x da seinalatu. -Aizu, Itxura hobea. Beraz, zerbait egin da. -Ados, Ez dut erakuslea x dereference 42 zenbakia gordetzeko bere pointee. Trikimailu hau egiteko, behar dut nire dereferencing makila magikoa. -Zure Dereferencing makila magikoa? Ai, hori, handia da. Zer kodea itxura da horra. Besterik ez dut sortu kopurua and-- [POP SOUND] -Aizu, Itxura ez da doan. Beraz, x dereference bat egiten jarraitzen ditu gezi bere pointee sartzeko. Kasu honetan, 42 gordetzeko han. Hey, saiatu erabiltzen zenbakia gordetzeko 13 beste erakuslea, y. -ONDO DA. Dut joan Hemen y, eta kopurua 13 set up. Eta gero, hartu makila dereferencing eta just [Buzzer soinu] -Oh, Beno ez zuen lan. Esan, uh, hegazti, baina nik ez dut Uste dereferencing y ideia ona da, zeren, pointee beste urrats bat da. Eta ez dut uste inoiz egin dugu. -Hmm, Puntu ona. -Bai, Erakuslea, y bideratu dugu, baina ez dugu inoiz ezarri da pointee bat seinalatu. -Hmm, Oso observant. -Aizu, Ona ez bilatzen ari zaren, hegazti. Ezin konpondu da, beraz, y puntuak pointee x-ren berdina da. -Sure, Nire makila magikoa erabili dut erakuslea esleitzeko. -Hau Da, bat izango da Arazoa, lehen bezala? -Ez, Horrek ez du pointees ukitzeko. Aldatzen erakuslea bat egiten den gauza bera ez seinalatuko [Soinu leihoa] beste --as. -Oh, Ikusten dut. X bezala, leku berean Orain y puntu. Beraz, itxaron, orain y finkoa da. Pointee bat du. Beraz, makila dastatu ahal izango dituzu berriro dereferencing 13 baino gehiago bidaltzeko. -Oh, OK, hemen doa. -Aizu, Hori begiratu. Orain y gaineko lan dereferencing. Eta erakusleak partekatzen ari delako pointee bat dela, biek ikusi du 13. -Bai, Partekatzea, uh, edozein dela ere. Beraz, leku batetik bestera joateko gaur egun? -Oh, Begiratu gara denbora. -But-- Kolektiboaren hiru erakuslea arauak gogoratu. Zenbakia 1, oinarrizko egitura da erakuslea bat duzula, eta puntu baino gehiagoko da pointee bat. Baina erakuslea eta pointee bereizi dira. Eta akats arruntenak konfiguratzeko erakuslea baina pointee emateko ahaztea. Zenbakia 2, erakuslea dereferencing erakusleak hasten eta gehiagoko bere gezi bere pointee sartzeko. Dakigun bezala, hau bakarrik ez bada lan egiten du pointee bada, mota horretako lortzen da zenbakia 1 araua. 3. zenbakia, erakuslea esleitzeko erakuslea bat hartzen eta aldaketak egiteko puntu da pointee bera erakuslea beste gisa. Beraz, esleipena egin ondoren, bi erakusleak bera pointee seinalatu, Batzuetan izeneko partekatzea. Eta hori guztia ez da egin behar da, benetan. Bye-bye orain. [END erreprodukzioa] DAVID J. MALAN: Hori da CS50 da. Nick Parlante Irakaslea esker. Datorren astetik Ikusiko dugu. [ELECTRONIC Musika jotzen]