[Muusika mängib] ANDI PENG: See on CS50 ja tere nädalal kaks punkti. See on tegelikult samas nädalal kaks meie class-- tegelikult, Esimesel nädalal oleme olnud osa. Käetõstmisega, kui palju sa kõik tuli super osa eelmisel nädalal? OK, see on OK. See on OK. Kui paljud teist vaatasin super osa eelmisel nädalal? OKEI. Ja kutid tegid trahvi probleemse seatud üks? Nii et ma lähen seda võtma, et meil on kamp tõesti intelligentne lapsed Selle klassi ja asju saab trahvi. OKEI. Nii first-- Esiteks, me lihtsalt läheb korraks minna üle päevakorda täna. Me räägime muidugi logistika. Palju siis ilmselt on küsimusi kuidas asjad töötavad selles muidugi. Me neile vastata. Me läheme lühidalt minna üle silmuseid korral mõni kutid vastamata super osa. Me räägime ASCII kaardistamine. Me räägime massiivid, funktsioone, käsurea argumente. Ja lõpuks, mida kutid ilmselt kõik tõesti tahan olla siin, et õppida, on oma pset2. Me peame mõne kena trikke ja nõuanded, kuidas seda teha. OKEI. Ka teiseks, meil on palju kommi siin. Igaüks, kes tahab kommi, lihtsalt tulla siia. Haara mõned. Mul on hunnik. Meil on ton kontoris. Ma tõesti ei taha süüa kommi kogu päeva. Te peaks sööma kõik kommid, sest ma tõin ta siin kutid. Just süüa kommi. Seal saad kommi iga osa. Nii esimene, kes ma olen? Minu nimi on Andi Peng. Ma olen pea TA CS50 siin Yale'i. Ja lisaks et ma ka olla-- kui keegi oleks like-- oma jooksvate sõber, oma õla najal nutta. Kui õhtul oma pset maksetähtaega, sa ei tea, mis toimub, tabas mind. Me kaastunnet koos, jne. Lihtsalt tean, et ma olen siin nagu ressurss teile eesliinil aidata kutid nuputada, kuidas lahendada probleeme CS50 ja kaugemalgi. Minu email on andi.peng@yale.edu. Ma ka saata individuaalne kirjuta oma telefoninumbri see nii, et kõik ei ole kohta Internetis saab näha minu telefoninumber. Julgelt helistage mulle igal ajal. Tõsiselt, mu telefon on tavaliselt seotud minu käest. Ma ei pruugi vastata paari minutit. Ma ei pruugi vastata paari tunni jooksul. Aga ma ei saa teile garanteerida, kui Teile e-maili mulle, kui sa helistad mulle, teksti mulle, ma vastan 24 tunni jooksul. Sageli ma vastata enne et kuna ma saan aru, et igaüks sai mõned probleemid, ja sa tahad oma vastused tuleb vastata väga kiiresti. Kui te helistate mulle 30 minutit enne et tükk, mis on tingitud neljapäev night-- olla nagu, Andi, aita mind, Ma ei ole started-- ma annan Teile, et õlg nutta. Aga see võib olla aega mõelda kuidas seda teha, et järgmine kord. OKEI. Oops. Kuidas ma tagasi minna? Seal me läheme. Nii see muidugi on meil ton toetuste kõigile. Lisaks lihtsalt sektsioonid siin, mis sul Iga nädal saad veeta 90 Imeline minuti minuga, meil on ka tööaega. Kui paljud kutid on juba olnud tööaega abi? Hea. See on tõesti hea näha, sest me on töötajad üle 45 ajutised ja koolitatud selle käigus, et siin aidates kutid oma psets. Esmaspäeviti nad toimuvad Teal klassis 17 Hill House siin Yale'i. Teisipäeviti ja neljapäeviti, nad toimuvad Commons. 8:00-11:00 päris palju igal nädalapäeval. Tule, tule välja. Iga probleem ei problem-- lihtsalt tulevad sisse, ja siis me aitame teil välja, et. Teiseks, lisaks tööaega ja lõigud, meil on ka lühikesed püksid. Kas keegi on kunagi näinud paar kohta lühikesed püksid või trajektooridega videos veebilehel? OKEI. Nii nad tõesti kasulik. Meie armas Harvard tootmine tiimide seal peal, et kooli kuni põhja, nad on filmitud ja toodetud Nende uskumatu läbikäiguks videod. Nad võtan teid samm-sammult läbi kuidas edasi minna probleemi lahendamiseks. Sageli, kui sa oled segaduses lihtne mõiste, ainsuses mõiste, heita, sest meil on arvatavasti Lühikese seda kusagil meie kodulehel. Ja see on tavaliselt suurepärane vahend otsida, kui sa oled esimene kaotas selle kohta, kuidas probleem. Kolmandaks on meil ka study50 ja reference50. Nii õppima 50 kohta Kodulehel on vaid link. See on, ma arvan, study.cs50.net või midagi sellist. Google'ist. Meil on palju slaide valmis. Meil on palju lühikesi pükse ja walkthroughs-- asjad kõik kompileeritud väga kena ja puhas kutid kõik sirvida, näe mõisted et sa oled segaduses. Vist oleks kaetud seal on study50. Reference50-- sarnased. Meil on palju erinevaid märkmeid kergesti kättesaadav teie käsutuses. Ja lõpuks, meil on, mida on nimetatakse CS50 Arutle, foorum, kus, kui õhtul sa teed teie probleemidele, ütleme, teil on küsimus. Logi sisse, et CS50 Arutle. Postita oma küsimus. Ja siis üks hundreds-- ehk thousands-- eakaaslastega võttes selles klassis Internetti sisse. Ja äkki keegi saab Teie vastus enne TA saab. See on sisuliselt lihtsalt Interneti-foorumis, et me kõik kasutada, et arutada meie probleeme. See on lahe. OKEI. Nii probleem seab. Oleme umbes õige paks probleem seatud kaks. Paljud meist on juba võitlesid läbi probleemi seatud üks. Teame juba, et võib-olla ootab viimase öö teha oma pset ei ole kõige targem tegu on CS50. Nõuandeid ja näpunäiteid peamiselt Edu on lugeda kogu spec. Kui paljud teist on juba loe spec pset 2? OKEI. See on kindel summa. Ma tean, et kutid on ilmselt tunnustatud tänaseks on näitajad on tõesti pikk. Nad on tõesti väga pikk. See on tõesti raske lugeda iga rida Selle hoolikalt sõna-sõnalt. Sa tahad lihtsalt koorima, kus ta ütleb teile midagi. Võin garanteerida teile, ei tee seda. Kui sa seda teha, sa oled ilmselt kavatse lasta kusagil kus ta ütleb teile kuidas alustada probleem või ta ütleb teile, mida nimi Teie probleem või ta ütleb teile, see on tõenäoliselt parim viis algust teha oma probleemiga. Ja siis sa kaduma. Kui proovite lugeda spec keskel, palju olulisem information--, et sa ei ole ilmselt võimeline tõesti ligipääsu. Nii et loe kogu spec. Püüdke lugeda kogu spec Enne tulevad osas sest siis, kui me rääkida pset, me kõik saame aimu kohta, mis toimub. Teiseks, see on kontseptsioon et ma tahaks viide palju vältel poolaastal. Aga sisuliselt vastavad meie poolel, eks? Me, kui teie TA ja Jason kui muidugi manager ja Scaz oma professor ja David oma professor ja kõik Teisest armas ajutise töötaja selle kursuse, assistendid selles course-- Me teeme oma parima, tagada, et teil on seatud kuni see õnnestub muidugi. Me hoidke osa. Me ametist tundi. Me vastame teie telefoni kõned, vastame teie e-kirju, teha kõike saame teha Veenduge, et teie küsimused on vastatud. Kuid meid aidata ka. Tutvu meie poolel. Kui sa tuled tööaega ei mindud punktist, ei Nähes loenguid, millel ei ole Idee, mis toimub, on nagu, mind aidata. Ma lähen nagu, noh, ma vabandan. See võib olla aeg laenata et õlg nutta, sest ma ei ole kindel mida ma saan teha, et aidata teil kui sa ei püüa vähemalt abi ise natuke alguses. Tutvu meie poolel. Tead, palun tulge valmis vastama ja saada valmis osalema materjali. See teeb asjad nii palju lihtsam kõigile osapooltele. Jah, see on päris palju see. Hindamisviis. Nii ainekava, see on päris põhjalikku selle kohta, kuidas me hinne. Aga sisuliselt jaotus Selles on 50% oma hinne saab psets, mille on armas, sest see on kuhu kulutada suur enamuse oma kursuse aega. Viktoriinid 40%, ja teie Lõplik projekt on 10%. Seal on kaks viktoriinid kogu Kursuse semestri. Ma arvan, et ajad ja kuupäevad on nimetatud ka ainekava. Nii, et me liigitamise oma psets on see, et meil on sisuliselt neli väärtused, et anname igale palgaastmele. Meil on väärtus ulatus, õigsust, disaini ja stiili. Nii nagu te näete, et on selline meie arvutamise valem psets. Kolm anname kõige kaalu õigsust, sest ilmselt oma treener Tuleks testitakse juhtudel et me tahame seda testida. Te kõik on check50 teie käsutuses. See on väga kasulik funktsioon et kutid saavad kõik laadige kood meie serverid kus me kontrollime seda sinu jaoks. Ja sa oled näinud neid kurba nägu, smiley nägu. Nad on tõesti väga abivalmis. Palun ärge olla õpilase et meeldib üritab hardcode kõik vastused neile. Olen kindlasti näinud pset, kus keegi nägi kõik väärtused check50 ja nad lihtsalt kõva kodeeritud in-- kui see number, välja printida see number. Kui see number, välja printida, et number. Ära tee seda. Kuigi tehniliselt check50 on õige, teed lahendada Probleem ei ole õige. Nii lihtsalt kasutada check50 säästlikult. Aga ka veenduda, et teil mõista, kuidas see toimib, programmi toimimise Lisaks check50, sest me ei saa katsetada igat võimalik puhul check50. Me testime mõned neist. Disain on sisuliselt kuidas hästi kavandatud on oma kood? Kui te olete kopida mitu koodiread palju, palju kordi. Võib-olla sa ei ole päris parima disaini oma koodi. Ehk on aeg lisada, et loop. Sisuliselt on see siin on lihtsalt kõik umbes üritavad teha oma kood, üritan kirjutada oma koodi nii tõhusalt kui võimalik, et teie programm töötab nii kiiresti kui võimalik. Lõpuks on meil stiilis. Nii stiil on omamoodi meelevaldne, subjektiivne mõiste. Ma tean, et me ametlikult on stiil 50 juhend CS50, kus ta ütleb teile, oh, sa peaks olema ruumi siin. Sa peaksid liiki vormi koodi sel viisil. Sa peaksid nimetama asju nii. Ma tõesti ei hooli, per se, kuidas valid stiilis oma kood, just nii kaua, kui teil püsida järjepidev. Näiteks, kui soovid jäta ruumi pärast nelja Enne oma nelja silmuse, just seda, et iga kord. Ärge sellist teha. Ära tee seda muul ajal. Kui soovite, et hoida lokkis traksid ruumi teatud viisil, lihtsalt alati see nii. Ärge sellist teha seda kusagil Siin ja kusagil pole. Kui me liigitamine, see on tõesti raske kui ma ei tea, kuidas sa vormindamist koodi asjad on hull ja kohatu. Kui sa lihtsalt hoida seda järjekindlalt, et see on palju lihtsam minu jaoks, sest suurem saaks lugeda oma koodi. See on palju lihtsam kui õpilane et oleks võimalik vaadata läbi oma koodi ja vaata, mis sul viga on see kaldkriips, miks seal on küsimusi. Stiil on üks lihtsamaid asju kutid teha, et saada täis skoori. Sisuliselt, kui sa just huvita, kui maksad viie minuti tähelepanu oma koodi iga nädal, siis tuleb saada täis stiili punktid. Lõpuks on meil, mida nimetatakse koefitsiendi ulatus. Scope-- Ma tean, et see on suur Sõna, eriti selles klassis. Aga ulatus, kõik, mis vahenditega on see, et sa oled püüdnud psets parima teie võimet. Kui lülitate kolmes oma neli probleemi ja ei püüagi Viimane, oled ilmselt kavatse kaotada mõned punktid ulatus. Isegi kui sa lihtsalt alustada probleemi, teha oma parima, et kõndige läbi. Isegi kui see ei tööta, lülitage see sisse, sest see näitab ja tõestab meile, et sa üritad, et proovisid probleemi seatud parima oma võimete. Ja siis saame anda teile täis punkte ulatus. Ulatus on väga oluline ka siis, kui me rääkida madalaim pset skoor langus. Nii üle käigus semester, teiega on üheksa psets. Ja me tegelikult kukkumine madalaim tulemus välja need üheksa, kuid ainult siis, kui teil on täies ulatuses punktid. Nii et kui teil pöörduda mittetäieliku pset, Kahjuks ei saa me tilk, et üks, sest teie ulatus punktid ei lõpetanud. Nii et isegi kui teil on kohutav nädal kus sa oled suremas ja sa oled haige või teie koer sureb, teie kass sureb, ja sa ülekoormatud kodutöö, lihtsalt püüdke pset. Kas see parim teie võimet. Kui see ei tööta, see ei loe. Lihtsalt lülita see sisse. Vähemalt saame anda sa punkte pingutust. A jõupingutusi selles klassis. Vähemalt väikseim punktisumma tilga vaeva. Nii et jah. See on päris palju see. Kas kellelgi on küsimusi, palju sellest, kuidas me hinne klassis? Või mõni neist? Kõiki neid nii far-- sektsioonid, tööaega? Cool. OKEI. Nii et see on teema, mis ei ole keegi tõesti meeldib rääkida. Ma tõesti ei meeldi sellest rääkida. Te ei taha kuulda mind rääkida. Aga kahjuks me kõik on sellest rääkida. David veetis 20 minutit loengu räägi sellest. Ja see on teema akadeemilise aususe. Nii et me kõik siin on ilmselt kirjutatud essee millalgi meie Yale karjääri. Me oleme ilmselt saanud rääkida, kus me oleme öeldi, et ei Plagioida meie essee, sest, et töö ei ole meie. Computer Science, meil sama liiki mõiste. Kõik tööd, et te esitate, kõik kirjutatud koodi peaks olema kood, et olete kirjutanud. Kui ei ole koodi, mis sa oled kopeeritud kusagilt mujalt. Ei tohiks olla kood, mis olete googled ja plopped sisse ja sa tõesti ei tea, kas see toimib. Sa selline on tunne mida ta teeb, kuid tegelikult mitte. Kui kahtled, sisuliselt, see on lihtsalt mõistlik. Meie õppekava on meil terve nimekiri asjadest näeme mõistlikuks versus ole mõistlik. Näiteks mõistlik on sinu ja su sõber arutada, milline on parim viis minna umbes loogiliselt probleemi lahendamiseks. See on üsna mõistlik. Mis ei oleks mõistlik on, kui sa poisid tulid kokku, kirjutada sama kood, ja lahkus sama koodi. See ei ole mõistlik. Sama asi, millist essee. Kui soovite, et arutada su sõber, hei, see on see, mida ma tahan kirjutada. Need on sammud ma tahan võta sellest kirjutada, suur. See on imeline. Pane üksteisega koostööd. Kui te poisid alustada kirjalikult sama asi, pöörduda sama essee, mis on vähem OK. Nii et kui kahtled, lihtsalt ei tee seda. Siin on CS50, meil on skriptid et run automatiseerida testida mitte ainult õigsuse koodi, vaid ka unikaalsust oma koodi. Nii et palun ärge pange meid seisukoha võttes viidata oma asja EXCOMM. Palun lihtsalt kõigile, olgem lihtsalt muuta see suurepärane kogemus. Igaüks õpib paremini, me kõik oleme õnnelikumad, ja me kõik oleme loodud õnnestub see muidugi. Midagi, mis on väga ainulaadne selle klassi et ma arvan, et igaüks peaks tõesti pöörata tähelepanu, et meil on mida nimetatakse kahetsust § meie õppekava. Nii et sisuliselt 72 tunni jooksul, kui sa usud sa oled teinud midagi sa ei ole päris kindel ei asjakohane, siis tulevad meile. Lubame teile, et 72 tunni jooksul me käsitleda juhtumit ise viitamata suurem asutuse administratsioon. Nii et kui sa tuled minu juurde ja öelda, Andi, hei, Mul on väga kahju, aga ma arvan, et seal on paar rida minu kood eile õhtul, et ma mingi googled, maha tuli Stack Overflow, kopeerida ja kleepida, ja ma olen tõesti kahju sellest, andke teada. Palun ärge lihtsalt lase tal mädanema ja loodan, et ma kinni püüda. Me püüda seda. Just minu juurde tulla. Tahaksin teada 72 tunni jooksul. Me nuputada lahendus. Ja me lubame, et me ei osuta ülikooli asutused sisuliselt. Nii et see on teie endi huvides lihtsalt olla aus kõigiga seotud muidugi. OKEI. OKEI. Nüüd, kiiresti enne Ma liikuda, kas keegi on küsimusi logistika kuidas kursused me läheme sõitma, kuidas lõigud ei kavatse joosta, ükskõik mis? OKEI. Jah. Sihtrühm: [kuuldamatu]? ANDI PENG: Jah. Nii quizzes-- kui paljud teist on esmaspäeva / kolmapäev osa? Kui paljud teist on teisipäeval / neljapäev? OK, nii et see on kindel split siin. Nii nii, et võtame see Yale'i on, et me on plaanis teha kaks eraldi quizzes-- üks iga section-- et võetakse ajal klassis. Ma arvan, et see oktoobril oktoobri lõpus, midagi sellist, nagu nädal üks Viktoriini. Jah, nii lihtsalt tulla klassi. Selle esmaspäeval või kolmapäeval siis võtan viktoriini. Selle teisipäev või neljapäev, saate teha teistsuguse viktoriin. Aga samast materjalist kaetakse. Jah. Hea küsimus. Jah. Sihtrühm: Kus me minge vaadake meie klassid? ANDI PENG: Jah. Nii ma siis välja saatma e-mail iganes igal nädalal kui viktoriinid on graded-- või sorry, kui psets liigitatakse. Psets tavaliselt välja poolt keskpäeval või reedel. Nii et ma luban, et ma teen seda proovida saada neid sulle tagasi lõunaks järgmisel reedel. Kui ma hinne pset, ma saadan välja märguande klass raamat mis ütleb teile oma skoori saab vaadata online. Nii õige sel nädalal, kui ma lõpetada liigitamise eelmisel nädalal psets, kutid saada e-mail teate räägin teile, hey see on koht, kus sa minna, et vaadata oma hindeid. Ja näed iga jaotus oma klassid. Sa näed kommentaare. Oh, kiire asi ka. Kommentaar sektsiooni suur Raamat on koht, kus ma ilmselt veedavad suurema osa oma ajast mune. Nii et üks asi, mis on tõesti oluline, kui kutid vaatad Sinu klassid teie psets ei otsi ainult füüsilisel tulemus kuid võtab samuti aega tõesti lugeda minu kommentaare. Sageli, mis annab teile tagasisidet kuidas sa oma probleemi lahendamisel. Kui teil on vaja teha midagi veidi parem, konstruktiivne kriitika on tavaliselt Parim toodud need kommentaarid lõik. Nii et palun, palun, ma lähen veeta aega kirjutate kommentaare. Palun, ma tõesti hindan seda kui te poisid oleks lugeda neid kommentaare. OKEI. Cool. Hästi. Nii et me ei kavatse hakata rääkima ja lihtsalt vaatab kiiresti mõned materjal nädal null lihtsalt nii et me oleme paremal lehel algavad sel nädalal probleemid. Nii et samas silmus on üks Kõigi kolme silmuseid Arutasime varem selles klassis. Aega loop sisuliselt on kirjutatud süntaks kus sel ajal, kui teatud tingimus, Selleks korduvalt, eks? Mõtle selle graafilise siin. Sa lähed alata Teatud hetkel oma koodi. Sa lähed siseneda loop seisukorras kui-- Ma ei sead ühendit väljakirjutada x on väiksem kui üks. Kui see on tõsi, sa lähed täita loop keha. Ja sa lähed hoida teed et jälle, jälle, üle ja over-- mistõttu on loop-- kuni teie seisund muutub vale. Nii et sel viisil, mõneks ajaks loop on üks lihtsamaid viise kirjutada mingit tingimusel, et peab kordama üle ja üle ja üle. Lihtsalt olla ettevaatlik, kui sa oled kirjalikult mingit loop et teil on exit tingimus samuti update kõik, on nii, et teie loop ei ole lihtsalt sõidetakse ja üle lõpmatult. Igal juhul, sa lähed et soovite veenduda et siis muutub teatud osa oma koodi või lõpus silmuse lihtsalt veenduda, et teil on võimalus on liikuda seisukorras mis sa tahad, et rahuldada lõpuni. Kas see mõtet kõigile? Me lihtsalt ei taha olla haaratud selle spiraali, kus me minna ringi ja ringi ja ei ole nii, et murda loop. Ja iga loop sisuliselt on lahenduseks oleks. OKEI. Teiseks, paljud teist Teie Mario psets Tõenäoliselt oli tööle Seda ahelat. Seda nimetatakse do samas loop. Esiteks saab keegi mulle öelda, Mis vahe on do samas loop ja samas loop on? Jah. Sihtrühm: Do samas loop jookseb esimene [kuuldamatu]. ANDI PENG: Jah, täpselt. Nii do samas silmus teeb seda alati olenemata on sees do, sulgudes seal ja kas see tingimus Enne kontrollimist the-- kahju, kas see kood enne kontrollimine seisukorras. Ja see on eriti oluline meile Siit selles klassis, sest enamik korda me tahame seda küsib kasutaja jaoks mingi sisend. Ja siis, sõltuvalt sisend nad annavad meile siis saame hinnata, oh, teha peame kallutada neid uuesti? Nii Mario, kui kasutaja saatis sulle negatiivne kõrgust, näiteks sa lähed esmalt kiire ja mida iganes on sees. Siis sa lähed, et kontrollida samal ajal. Sa tead, on negatiivne 1, on see, et positiivne arv? Kui see ei ole, ma lähen tagasi ja korrake do ja korrake ja korrata ja korrata, kuni nad Lõpuks annab sulle mitmeid, mis sulle meeldib, et me kõik kasutavad meie koodi. See on päris oluline sisuliselt iga kasutaja sisend. Võin garanteerida teile korda pset, kus Palume sisestada mingit koodi, me oleme Tõenäoliselt annan teile proovikivi, kus me oleme annan sulle midagi halba, mis on kavatsen proovida murda koodi. Kui me püüame palun-sisend täisarv, siis võib lihtsalt teile string ja kuidas te hakkama. Kui me palume teil võtta tööle vanusest, me võime teile negatiivne number kuidas te hakkama. Lihtsalt veenduge, et poisid on testimine juhtumeid, kus sa ei saa parim sisend, ütleme lihtsalt. Ja teha, kui silmus on sageli parim kuidas kujundada oma koodi nii et ta vastab nimetatud kohaldamisalasse. OKEI. OKEI. Nii et see on tõenäoliselt kõige keeruline loop kolmest et me vaatasime siiani. Ja tundub väga hirmutav alguses. Aga ma garanteerin teile, kui te poisid saama, kuidas kasutada silmus, see on üks kõige kasulikum asju, kõige kasulikud vahendid oma arsenal edasiliikumise selles klassis. Nii näiteks Scratch, meil oli see väga lihtne blokeerida et just ütlesid korrata teatud laused teatud arv kordi. Muide, SAJ-- see on Scaz Andi Jason. Me sageli kirjutama meie e-kirju SAJ. Kui me ütleme SAJ, ei tohi segi. See on lihtsalt meie. Nii Scratch, suutsime olla plokk, mis ütles, korrata Ma armastan SAJ! 10 korda. Väga lihtne. Loogika, et on väga, väga lihtne, eks? Tahan kõigepealt läbida esimesel aega ja vaata, et teist korda ja vaata, et kolmandat korda, jne ja nii edasi, kuni jõuad 10. Ja kuidas me kujutaks, et kood on lihtsalt läbi lihtsa silmus. Nii, sa lähed, et kuulutada Teie muutuva Siit võivad sel juhul kusjuures int. Me läheme nime i. Me läheme selle vormindamiseks 0. Ja seiskumise väljaanne on saab olema i on väiksem kui 10. Ja uuendus saab olema i ++. Ja kontuuris, siis läheb täita kuni lõpuks see ainulaadset lõppu condition-- kus Juhul, see läheb katki silmus. Seal peaks olema kraami, mida poisid on igasugu näinud ja tuli teha oma probleemi seatud üks. Kas kellelgi on mingeid küsimusi osas ette silmad kohe? OKEI. Hea. OKEI. Nii neile, kes on loe pset spec sel nädalal tean, et me ei kavatse on tööle midagi, mida nimetatakse ASCII ja ASCII tabelis. Taavet loengus läks lühidalt kuidas arvutid essentially-- kõike kodeeritakse arvuti binaarne, on ühtede ja nullide. Ja nii, et arvutid suudavad salvestada erinevaid väärtusi lisaks et ühtede ja nullide on läbi kaardistamine need numbrid esindama teisi numbrit või sisuliselt muid sümboleid. Nii Sellisel juhul teeb ASCII table-- kõik see on kaart tähemärki või sümbolit, et numbrid. Nii lähtekoodi faili Sinu computer-- ta näeb, hey, hunnik nulle ja need, ühtede ja nullide, ühtede ja nullide. See, mida hoitakse Tegelik mälu arvuti. Aga kui meie, inimesed tahavad arvutiga suhelda, me want-- öelda, näiteks, kui ma tahan suur- A, Ma vajan viis ütlen arvuti, oh, kui ma kirjutada suur- A, ma mõtlen Selle esinduse binaarne. Ja nii, kuidas me seda teeme on viskas suvaline asi, mida nimetatakse ASCII tabel, kus meie, inimesed, nagu programmeerijad, mõni aeg tagasi, meil meelevaldselt otsustatud, et me ei kavatse määrata nende arvu väärtused need märgid. Nii kutid google seda online. Ma arvan, et seal on link sellele oma pset-- lihtsalt ASCII kaardilaud ASCII tabelis. See lihtsalt tähendab binaarne numbrid tähemärki. Ja see saab olema väga kasulik teie probleem komplekt kui soovite arvutada midagi või kui te soovite kuvada teatud tegelased või täisarvud või manipuleerida teatud tegelased. See saab olema väga oluline, et te kõik tea, kuidas navigeerida ASCII tabelis. Nii näiteks suurtäheliseks esindab mitmeid 65. Ja väiketähti esindab 97. Seega on oluline teada, et Erinevus nende kahe vahel väärtused on 32. Sageli, kui teil on vaja teisendada ühelt teisele, vahe on 32. Ja ärge muretsege, kui sa oled lahke segaduses selle alguses. Me läheme üle, kuidas me oleks kasutavad seda tegeliku koodi. OKEI. Nii neile, sülearvutid välja, julgelt tõmba ASCII tabel, sest need ilmselt nõuavad kutid viide Mis tegelased on. OKEI. Nii on teada, et teatud tegelased map teatud numbrid, kui ma jooksma alles esimene rida, et code-- printf a, väiketähed a, miinus suur- A. Kas keegi on vist sellest, mida oleks väljatrükk ekraani kohe? Nii esiteks, mida ei väiketähed esindavad? Mis number on see, et kodeeritud ASCII tabelis. Vabandust? Sihtrühm: 97? ANDI PENG: 97, suur. Ja mis on suur- A Sihtrühm: 65. ANDI PENG: Mis on 97 miinus 65? Sihtrühm: 32. ANDI PENG: OK. Mis te poisid arvavad läheb juhtub, kui ma sisend, et koodirida minu arvutis? Sihtrühm: [kuuldamatu]. ANDI PENG: Sorry, rääkida. Ära muretse. See on väga turvaline keskkond, miinus kaamera. Me kõik läheb mina-- ei muretse. Lihtsalt me ​​kõik teeskle, nagu see on lihtsalt meie jahutamine selles ruumis. Ära muretse. No küsimus on liiga loll. No vastus on loll vastus. Ma ilmselt läheb eksida käigus oma õpetuse. Tõsiselt, poisid, lihtsalt lobiseda välja. Ole kindel ise, kas tead? Mis see oli? Kes ütles, et viimase vastuse? OKEI. Karju, et kena ja selge. Sihtrühm: 32? ANDI PENG: 32. OK, olgem käivitada koodi ja vaata, kas see, mis juhtub. OKEI. Nii nagu te poisid saavad liiki vaata, tüüpiline märke Olen luua siin, kuidas me tööd mingit programmi meie arvuti. Meil on meie peamine ülesanne meie peamine ülesanne. Ma lihtsalt kopeerida ja kleebi see rida koodi. Samuti ole ettevaatlik, kui poisid on kopeerige kood. Mõnikord teatavad ettevõtjad ei kleebi enam korrektselt. Sel juhul on minus märk oli tegelikult kriips. Ja nii arvuti ei korja see üles. Nii et ma pidin minema tagasi füüsiliselt korrake seda. Lihtsalt olla ettevaatlik kutid teevad seda. OKEI. Me läheme sõitma seda siin. Nii et me läheme cd meie section2. Olen seda nimetanud programmi asciimath. Seega pidage meeles, kui me kasutada mistahes Programm tahame esimene kompileerida töötab läbi meie make. Ja siis me tahame tegelikult töötavad programmi tehes dot-kaldkriipsuga. Nii et me läheme ./asciimath. Õigus, seal me läheme. Ja me näeme 32. Hästi tehtud. Sa väärid tükk kristalliseerunud. Candy teile. Vabandust. Hästi. OKEI. Nii saame minna tagasi oma näites siin. Aah, no. Aah. OKEI. Ma lihtsalt hoida seda niimoodi. OKEI. OKEI. Nii nagu te poisid ei vaata, mida me teha saame palju väga huvitavaid asju, palju väga lahedaid asju palju väga keerulised asjad, mis hõlmab ASCII märke ja numbreid. Kui sa saad maha liinile viis, see on palju jälgida mööda. Me ei lähe läbi osa. Julgelt, kui saad, Motivatsioon välja paberkandjal Esimene mida tuleb juhtub siis, kui sisestad selline jada väärtustega. Näiteks, et viimane rida, on meil · Z- mis kujutab endast teatud number-- a-- mis kujutab endast ka Teatud number-- pluss 1 modulos 26 pluss väiketähed a. Kui kutid hoida lugemisel Läbi nende võib näha mustrit tulla kuidas me manipuleerides koodi. Ma väga, väga soovitan Pärast punkti teid kõiki poisid minna ja sisend need kõik arvuti ja näha, millist numbrid tulevad välja ja arutlusi läbi, miks need on juhtub, sest teie psets see saab olema väga oluline sa aru miks teatud asju juhtub. Kõik need slaidid on võrgus. Nii ei ole muret, püüdes füüsiliselt kopeerida märkmeid. Kõik online. See osa ise on online. Kõik minu lähtekoodi, et Ma töötab on online. Jah. Kas sul on veel küsimus? Sihtrühm: Mis on modulos? ANDI PENG: OK. Nii moodul on operaator, kes läheb päris oluline oma poisid on pset siin. Nii nii, et operaatorid C ja programmeerimine töö on see, et teil on, mida nimetatakse division symbol ja moodul sümbol, mis on nagu protsenti märk. Nii C, kui sa täisarv jagatuna täisarv kaldkriipsuga, C on kalduvus tahavad kärpida välja kõik peale koma, sest täisarv tahab teisendada täisarv. Ta ei kavatse taha olla kahekordne hunnik kümnendkohtade kõik pärast seda. Nii et kui ma teen 3 jagatuna 2, siis läheb katkestas 0,5 ja lihtsalt annab sulle 1. Nii et midagi olla väga ettevaatlik, kui sa oled teed mingit matemaatikat programmeerimine, on see, et numbrid saate pruugi olla numbrid mis sa mõtlesid, mistõttu ümardamine oma viimase pset on nii oluline. Moodul annab teile ülejäänu. Nii näiteks, kui ma tegin 3 moodul 2-- nii 3 protsenti märk 2-- see annaks sulle ülejäänud seda. Nii 3 jagatuna 2 on 1,5. See on 1 ülejäänud 1. See annaks sulle 1, mis on ülejäänud osa selle. Nii et kui te poisid liiguvad läbi ASCII tabel, moodul lõpetad midagi, mis on väga oluline, ja me arutada, et hiljem. OKEI. Nii et kui miski on ilus, päris uus ja üsna ainulaadne et me oleme arutanud sel nädalal on mõiste, mida massiivi on. Nii massiiv on esimene tüüpi andmestruktuuri et me ei kavatse tekib selles klassis. Kõik andmestruktuur on mingi suvaline sõna otseses mõttes asjad struktuur et me programmeerijad on loonud, et me panime meie koodi See võib sisaldada muid tükke koodi. Nii selles mõttes, mis on array-- ma arvan et kui faili kapis, kus, kui avate erinevat riiulid faili kapis, pääsete erinevaid asju. Mälu, massiiv on lihtsalt teeme sama asi arvutis. Sul võib olla erinev blocks-- me helista neile indices-- massiivi. See on nagu plokk, riiul mälu et oleme loonud teie arvuti, et saate sisestada teatud asjad erinevates kohtades. Nii array, siis alati specify-- sul määrata tunnistamise massiivi järgmises vormingus. Sa lähed esimese määrata andmetüüp et soovid luua massiivi. Kui ma tahan array täisarvud, Ma kavatsen panna int seal. Kui ma tahan massiivi stringe, Ma panen stringid seal, nimi oma valikut ja seejärel sa lähed on nurksulgudes. Ja sees nurksulgudes, sa oled läheb on suurus oma valikut. Midagi, mis on tõesti oluline meeles pidada, luues massiivid on et kui loote massiivi, et suurus ei muutu. Nii et kui sa tead, et just nüüd sul on massiivi suurus 10, sa tead, et ma lähen on 10 lahtrit jooksul või 10 indeksid selle massiiv, ja see ei saa kunagi laiendada või vähendada Ükskõik mida, ja et seal on praegu vaid 10 plokki ruumi eraldatud oma mälu, mida saab salvestada kuni 10 asjad, mida sa pannud. Nii et sel viisil, hulga andmete tüübi, andmestruktuuri mis on üle massiivi on väga erinev mõned teised jagame saab katab hiljem seda muidugi. Jah. Näiteks kui sa tahad luua massiivi suurus 3, et sisalduvate parameetrite integer-- oh, sorry, on temperature-- ja temperatuuri, ning Loomulikult on täisarv. Nii et me looks int, mis on andmete tüüpi, mida me tahame hoida. Me läheme nimetame seda temperatuuri huvides nomenklatuuri nime midagi, mida me kõik aru. Ja me ei kavatse on nurksulgudes. Ja me tahame kolm numbrit. Nii et me läheme panna kolme sees on. Midagi, mis on tõesti oluline meeles pidada, on see, et massiivid on null indekseeritud. Kõik see tähendab, et sa Alustame indeks 0, ja sa eel läbi suurus massiivi miinus 1. Nii näiteks siin, me on massiivi suurus 3. See saab olla võimalik hoidke kolm väärtust. Aga numbrid themselves-- et number, massiiv, et indeks, massiivi, on 0 kuni 2. Nii poisid, tõesti, tõesti ettevaatlik sa lähed läbi oma püstitatud probleemi ja luua mingit valikut, sest palju kordi on tõesti lihtne unustada. Ma tegelikult ei ole indeks 3, et ma praegu lihtsalt on indeks 2. Ja kui sa püüad juurdepääsu kolmanda indeks, see saab olema, mida on nimetatakse null terminaator. Ta ei kavatse tegelikult olemas massiiv. Ja arvuti on ei meeldi, et. Nii et ole ettevaatlik, kui sa juurdepääsu asjad lihtsalt tagada, et sa mäletad et massiivid on null-indekseeritud. OKEI. Nii et esimene näide on lihtsalt üks võimalus luua massiivi. Teine näide mul allpool on lihtsalt eraldi teed loomise, mis on samu andmeid struktuuri, et oleme lihtsalt sisestatud. Nii et selle asemel füüsiliselt töötab läbi ja luues temperatuur 0 võrdub iganes, temperatuur 1 võrdub iganes, temperatuur 2 võrdsete mida iganes, ma võiks tegelikult lihtsalt otse luua see kõik ühele joonele arvesse temperatuuri nurksulgudes võrdne. Ja teate Sel juhul ei ole vaja täpsustada, kui suur on teie massiiv on, sest arvuti läheb läbida ja näed, et seal on kolm elementi need looksulg. Ja see läheb tea, OK, Mul on vaja massiivi suurus 3. Sa ei kavatse vaja input see järgmiselt. Ja ka, jah, niimoodi. Kas kellelgi on küsimusi selle kohta, kuidas me teeme massiivid või kuidas struktuuri massiivi töötab? Jah. Sihtrühm: [kuuldamatu]? ANDI PENG: Jah, täpselt. Nii et kui sa olid kuulutada ja initsialiseerida massiivi järgmist meetodit, mis on teine ​​viis, sa võid jätta need. Ja arvuti automaatselt teab, et see peab lugema, kui palju elemente on neis looksulg eraldatud komadega. Nii et siin nad näevad 65, 87, 30. Nii arvuti teab, oh, seal on kolm täisarvu. Ma tean, et luua massiivi nimi temperatuur kolme elemente. Hea küsimus. Jah. Sihtrühm: Kas pole võimalik luua massiivi eri tüüpi andmeid mida võiks sinna sisestatakse? Näiteks täisarve [kuuldamatu]? ANDI PENG: eesmärgil Selle klassi, ei, just nüüd. Kui loote andmeid struktureerida nagu massiivi, sa räägid arvuti, hei, ma vajan sind eraldada nii palju mälu minu kõvaketas, Iga rakk olles teatud bittide arv. Pea meeles, me õppisime nädal null, et erinevate andmete tüüpidel on erineva suurusega? Nii näiteks string on erineva suuruse ruumi kui char, mis on erineva suuruse ruumi täisarvu. Ja kui sa ei määra ja sa segada ja sobitada, milliseid muutujaid sul on, arvuti saab olema väga segaduses. Ja ta ei kavatse teada kui palju mälu teile. Nii eesmärgil õigus Nüüd saab kasutada ainult tunda üht tüüpi massiivi. Hea küsimus. OKEI. Nii loomulikult Teine küsimus on meil on ka nüüd, et oleme loonud massiivi ja me panime kõik need asjad massiivi, kuidas me läheb pääse ta? Nii tüüpiline struktuur, mida me alati juurdepääsu massiivi on meie armas silmus. Ma luban teile, poisid, et me oleme näha palju see mehe siin. Sisuliselt millal soovite sisestada väärtused massiivi või soovite neid kasutada, siis Parim viis seda teha on silmus, sest jaoks silmus, siis tea, mitu korda sa oled lähed tahan joosta massiiv, sest sa oled stop väljaanne, eks? Ja iga kord, kui sa jooksed läbi, pääsete teist massiivi element. Ja ka see on üks põhjus, miks tavaliselt hakkame meie jaoks silmuseid on 0 väärtusega, sest kui sisenete massiivid, pääsete null indeks. Ja nii see paralleele väga kenasti. Te võib-olla tahtis kirjutada int i võrdub 1. i on väiksem või võrdne 3. Aga see ei tööta päris nii ka siin, sest sa ainult on elemendid 0, 1 ja 2. Ja nii, kui sa olid hakata Teie i at elemendi 1, 2 ja 3, sa lähed lõpuks töötab välja piire oma rida, ja halvad asjad hakkavad juhtuma. Nii et ma loodan, et te nägite Segue miks varasemas klassidesse me õpetasime kutid, kuidas juhtida ja vormindab silmus nii, et me olime. See on sellepärast, nüüd me oleme transitioned massiivid, näed, miks 0 laenab ise väga kenasti juurdepääsuga. Nii, kuidas me seda teeme on selle-- ma olen lihtsalt lasta välja trükkida siin huvides lasta välja trükkida. Aga mul on kohatäide, koma. Ja tegelik ligipääsemiseks osa toimub. Nimi massiivi kutsuti temperatuuri. Nii et see on temperatuur ja i-nda elemendi massiivist. Nii nagu silmus jookseb läbi, see saab alguse 0. See saab välja trükkida 0. indeks seda valikut. Siis läheb printida välja esimene element. Siis läheb printida välja teine. Ja siis me murrame. Kas kõik selge kuidas see toimub? Hea. Hästi. Nii et siin on meil võimalus öeldes, kui me ei taha raskesti kood in-- mind programmeerija. Ma ei taha tegelikult füüsiliselt panna iga üksiku elemendi Selle massiivi. Kui ma tahtsin asemel on kasutaja sisend väärtusi, Mis on parim viis seda teha? Noh, siin ma olen loodud see armas funktsiooni, kus ma võin tunnistada massiivi. Nii int scores-- olgem lihtsalt öelda, et me tahame teha massiivi, mis toimus klassid kõigi 18 Õpilaste siin selles osas. Ma arvan, et meil on natuke rohkem kui 18 lapsed täna. Aga näiteks pärast, olgem lihtsalt eeldada, meil oli 18. Ma looks massiivi nimi hinded tüübist int, sest hinded muidugi on numbrid. Ja ma lähen 18 nurksulgudes, sest see, kuidas paljud õpilased ma soovite, et oleks võimalik salvestada hulgaliselt. Ja kuidas ma asustada massiiv on, et ma kestab see läbi silmus, ning Muidugi, kus 0 on minu 0. indeks. Ja siis 18 on minu peatusteta väljaanne, sest seal on 18 massiivi elementide. Ja siis ma lähen tegema printf, Enter skooriks student-- JANKUTUSTA jutt. Kas keegi mulle öelda, miks siin ma olen trükkimine i pluss 1 ja eks? See on selline trikk küsimus, tegelikult mitte. See ei ole tegelikult füüsiliselt mõjuta töötavat koodi. Jah. Sihtrühm: [kuuldamatu] 0? ANDI PENG: Jah, täpselt. See on natuke ebamugav öelda, hei, sa oled 0. õpilane selles klassis. See on natuke imelik. Nii meil, kui inimestel ei ole tõesti mõelda, kuidas arvutid mõtlema. Nii et kuigi on arvuti, see hoidmiseks väärtused on 0-nda indeks, kui me oleme inimesed, me tõesti ei meeldib viidata end nulli. Nii et kui ma lihtsalt printida, et Ma lähen välja printida ja lisada 1 lihtsalt selguse huvides. Nii et kui ma printida, ma lähen võimalik printida õpilased 1.-18. See tegelikult ei mõjuta jooksvad kood kuidagi, kuidas printida. Kuid ole ettevaatlik, kui sa oled tegelikult juurdepääsu massiivi. Kui näed hinded i, märkate siin ma olen tegelikult juurdepääsu 0. indeks ja mitte 1 pluss 0-- või 1 + 1, sel juhul indeks nii et see on tegelikult selge. Kas igaüks omamoodi OK kuidas see töötab läbi ja iga indeks ma olen pannes väärtuse massiivi ja luua massiivi 18 numbrid et kasutaja saab sisestada? OKEI. Cool. OKEI. Nüüd liiguvad midagi, mis on päris asjakohased selle osaline komplekt samuti. Ma tean loengus, David-- kahju, et sul oli küsimus? Sihtrühm: Kas sa pildile? ANDI PENG: Jah, nii ma proovisin. Aga ma ei tea. Mingil põhjusel see versiooni PowerPoint ei ole tegelikult töötab hästi ekraani. Nii et me lihtsalt läheb hoida seda niimoodi. Kõik need laetakse üles online. Vabandame, poisid. Jah. OKEI. Nii saame ka stringid. Nii et kui te poisid tegelikult notice-- ma tean Rob läks üle seda, et loeng et ta did-- string on tegelikult lihtsalt massiivi tähemärki kui sa mõtled seda, eks? String on nimi või lause või sõna, eks? Kui ma oleksin luua string nimega Andi-- lihtsalt minu nimi, A-N-D-I. Sa mõtle, et vaid üks muutuja. Aga tegelikult, see on jaotatud arvesse ainult array tähemärki. Nii see sai iseloomu Salvestatud massiivi väärtuse. See ju iseloomu n salvestatud teine ​​indeks ja nii edasi ja nii edasi. Nii nii, me tegelikult on selline on esitatud struktuuri Koht meie stringid. Nii et siin, kui ma oleksin sisestada Sõna "süüa" - nii string sõna võrdub saada string. Kui ma oleksin sisestada sõna "sööma", et on füüsiliselt nii, et minu arvuti salvestab et string minu mälu. Ja kui ma tahtsin joosta, et ja print et out-- nii osadeks i võrdub nulliga, pea meeles, loengus, me kaetud midagi, mida nimetatakse strlen, või stringi pikkusena. Sest ma tegelikult ei tea, kui suur massiiv on mis tahes kasutaja inputting-- Näiteks olen sisestanud Sõna "süüa," ja ma tean see on kolm tähemärki, eks? Nii et ma võiks panna kolme seal ja kõik saab trahvi. Aga kui teie kasutaja sisend midagi see on erinev arv väärtusi, sa lähed, ei saa tõesti tean, et kui sa programmi koodi. Nii et kuidas me hakkama test juhtudel nagu see, et meil on midagi nimetatakse strlen, mis on vaid funktsiooni mis ütleb teile, kui kaua string on. Nii strlen sõna. Minu sõna on süüa. n võrdub strlen sõna. Kas keegi mulle öelda, mida see väärtus tegelikult on seal? Mida n esindavad õigus Nüüd on selles näites, kui mul oleks süüa? Sihtrühm: 3. ANDI PENG: 3, täpselt. Nii meil on int i võrdub null, n on 3, sisuliselt. Ja ma ei kavatse joosta kuni see on vähem kui 3i ++. Ja see läheb sisuliselt minna läbi ja teha sama asja. See saab välja trükkida Iga hinna ja teile E-A-T. See on lihtsalt mis tähistab teistmoodi kirjutamist. See saab olema väga kasulik. Jah. Sihtrühm: Mis kasu pannes n võrdub strlen sõna sees, et for loop [kuuldamatu]? ANDI PENG: Jah. Nii et kui ma oleksin mina-- öelda, näiteks, kui ma seda teha ja siis do-- oop--, et minu kood oleks tegelikult teed nagu sama asi. Kuid see, kuidas David selgitas see ajal loeng, kui keegi teile poisid mäleta, et nagu Inimestel nagu programmeerijatele, me tõesti püüame programmeerida meie koodi nii, et meie arvuti on töötada võimalikult väike, nii et meie kood on väga tõhus. Nii et kui mul oli see olemas, mida juhtuks läbi minu jaoks silmus on see, et ma esimesel kuulutada muutuja nimega i saab olema 0. Ma lähen, et kontrollida, oh, Mis on strlen sõna? Oh, strlen on 3. Nii on mul vähem kui kolm? Jah see on. Ma lähen jooksma. Ja siis teine ​​kord tagasi umbes silmus, ma lähen juurdekasvu i. i saab olema üks. Ja ma ei kavatse vaadata, oh, Aga mis on strlen sõna? Oh, see on kolm. Ja kas see tunduda selline raiskamine, Iga kord, kui sa jooksed läbi silmuse, tuleb talitluse kontrollimise, kuigi strlen sõna tegelikult kunagi muutub? Nii et see on ekstra võimu arvuti. Kui hakkad rääkima asjadest mis on miljardeid ja miljardeid ja miljardeid kohad pikk, kujutada arvutis võttes füüsiliselt läbima ja vaadake kõik, et iga kord. Sellepärast, et teha lihtsalt et tõhususe huvides meil on kombeks lihtsalt seda, sest see, kuidas me oleme ainult kutsutakse funktsioon kui alguses, ja et iga kord, kui ta läbib see läheb Väärtuse salvestamiseks 3 seal, et sa seda ei tee pead pidevalt kontrollima iga kord. Jah. Sihtrühm: Vabandust. Just [kuuldamatu]. Kas sa int n võrdub strlen ja panna et eespool välisküljele jaoks silmus samuti? ANDI PENG: Jah. Sa võid seda teha, absoluutselt. Põhjus on meil seda siin sest tee jaoks silmus tööd on, et seda nimetatakse kohaliku muutuja selles mõttes, et kõik, mida sa oled luues sees jaoks silmus eksisteerib ainult seestpoolt jaoks silmus. Nii muutuja i ainult olemas nendes sulgudes. Ja siin muutujate n ka eksisteerib vaid need sulgudes. Nii et kui sa olid kasutada strlen kohta Sõna mitu korda allapoole, absoluutselt parim viis seda teha oleks kuulutada see üles tippu nii et sa ei pea seda tegema kord. Jah. Sihtrühm: Miks teil on Uus liin pärast protsenti nägi, kui sa tahad panna kõik tähed kõrval eraldi? ANDI PENG: Oh, ma tahtsin prindi neid kõiki igal real. See ei ole tähtis. Jah, see on vormingu. See on hea küsimus, kuigi. Jah, kui ma tahtsin printida see kõik vaid üks rida, Ma ei oleks kriips. OKEI. Igaüks hea? OKEI. Cool. Nii et ma arvan, et ma olen rääkinud piisavalt. Te käik joosta koodi ja ütle mulle, mis on valesti siin. Kus viga? Nii et nagu näete, ma olen kuulutanud uue massiivi tüüpi string nimega klass. Ja ma olen sisestanud Sam, Jess, ja Kim ta. Ja ma üritades välja printida kõik elemendid massiivi. Kas keegi mulle öelda, miks see läheb mulle probleeme? Ma annan sulle poisid 10 sekundit mõtlema. OKEI. Jah? Sihtrühm: Kas vasakul center võrdub 3 või [kuuldamatu]? ANDI PENG: Right. Nii mitu korda on see tegelikult läbiks see loop? Sihtrühm: Neli. ANDI PENG: Täpselt. See saab läbi neli korda. See saab joosta 0, 1, 2 ja 3, sest nende element on i on väiksem või võrdne 3. Ta ei kavatse lõpetada, kui see on 2. See saab hoida läheb kuni see tabab 3. Ja nagu me teame, on ainult kolm elemendid meie tegelik massiivi. Kui me püüame pääseda neljas element või indeks 3, sa lähed lüüa kusagil mälu, mida ei ole olemas. Seda nimetatakse null terminaator. Midagi läheb sinna. Arvuti ei lähe väga rahul olete. Jah. Kas kellelgi on küsimusi miks see juhtus? See on ühine ala, et vältida. Jah. Sihtrühm: Kas mitte esimene lükake ka string 2? ANDI PENG: Ei Nii sisuliselt kui sa üritad massiivi, et sulg õigus seal, et number-- kõik see ütleb teile, kuidas palju elemente olen. See ei ole tegelikult räägib mulle indeksid midagi. Nii et kui ma tean, et ma tahan kirjutada koos kolme kohta kolm füüsilist kohti hoidke iganes ma tahan hoida. Nii et miks number kolm on olemas. Siiski, kui ma tahtsin tegelikult seda kasutada, kui ma tahtsin öelda, printf klassi sulg number, siis sa lähed tegelikult panna füüsilise indeks seal. Jah, hea küsimus. Sihtrühm: Nii on füüsiline indeks peaks olema [kuuldamatu]? ANDI PENG: mul on kahju. Kas te räägite natuke? Sihtrühm: Nii on füüsiline indeks [Kuuldamatu] iga kastid? [Kuuldamatu]? ANDI PENG: Jah. Nii et ma lähen tagasi siinsamas. Mõtle siin. Meil on hulgaliselt suurus 3. Seal on kolm kohtades, nagu, füüsilise kohatäitjaid siin. Aga nad nimeks 0, 1 ja 2. Nii et kui ma tahtsin neid kasutada, nii, et ma neid kasutada on printf iganes ma tahtsin siin. Sa oleks printida välja nime see, sest siis arvuti teab, oh, ma pean otsima Selles massiivi jaoks 0. indeks. Jah. Aga suurust see ei muuda. Suurus on 3, sõltumata kuidas sa märgistama. OKEI. Igaüks hea? Sihtrühm: Nii et iga kord, kui ma [kuuldamatu]? ANDI PENG: OK. Nii et kui me tõesti ei saada sinna kohe käigus. Aga tean, et string-- nagu ma enne ütlesin, string on sisuliselt array tähemärki. Nii et kui ma luua massiivi stringid, ma selline on hulgaliselt massiivi märke, eks? Nii et sel juhul, sest ma on massiivi stringe, kui sa olid sisend tõesti pikk sõna, et ikka kulub ainult üks ruum, sest see on üks string. Aga kui sa olid mõelda tegelased, et massiiv, siis see asumist palju märke kui ükskõik milline Teisisõnu on. Pole tõesti oluline just nüüd. Aga see on lihtsalt üldiselt kuidas see töötab. OKEI. Nii et see on midagi, mida ma lasen sul palju jooksul semestri. Ma pean puhkuse mu häält. Te peate stimuleerida ise. Palju siis ilmselt on magama kohe. Ma sisestanud juhuslik probleeme kus me klassina või sa koos partneriga kõrval sa lähed veeta paar minutit arutada kuidas me läheks umbes lahendamisel või luua programmi, nagu seda. Nii kohe, me tahame luua program-- me ei kavatse seda kutsuda upper.c-- mis teisendab väiketähti sõna ülemise klassi string-- suur-, vabandust. Sõna stringid, sorry, on sünonüümid. Ma lähen neid muuta tähendab sama asja. Jah. Võtke paar minutit. See ei pea olema mistahes keeles. Lihtsalt pseudokoodi koodi või loogiliselt, kuidas me oleks isegi minema umbes teeb selline probleem. Jah. [SIDE CONVERSATION] Olen ka märganud, et kutid can-- Ma nagu näha juba programmi. Ma arvan, et minu puudumine saatejuht režiim on probleem. Aga see on ok. [SIDE CONVERSATION] Jah, palun, poisid. Tule saada kommi. Tule saada kommi. Sihtrühm: Jah! [SIDE CONVERSATION] ANDI PENG: Ka yeah, Ma hakkan viskamine kommi inimestele, kes ei vastata küsimustele. Nii et sa peaksid kõik vastata küsimustele. Või ma arvan inimesed ei vastata küsimustele. Jah, teistpidi. [SIDE CONVERSATION] Sihtrühm: [kuuldamatu] ANDI PENG: Jah. Jah. [SIDE CONVERSATION] Olgu, poisid. Võtame näiteks, 10 sekundit. [SIDE CONVERSATION] OK, poisid. Nii et enne kui hakkame üritab tegelikult füüsiliselt kirjutada koodi, hea harjumus arendada, et tahame esimene selline põhjus välja loogiliselt, kuidas me seda teha. Sa tahad teha kindel, Enne füüsiliselt alustada üritab koodi Mario, et te teete Veenduge, et teil on oma pseudokoodi. See võtab teid läbi mida teil on vaja luua nii et kui sa füüsiliselt kirjuta oma programmi hiljem sa suudaksid paremini püüda vigu oma koodi ja asju. Nii et me läheme lihtsalt alustada by-- inglise keeles pseudokoodi, Kas keegi taha anda minu üldine selgitus kuidas me minna seda teed? Jah. Sihtrühm: [kuuldamatu]. ANDI PENG: Muidugi, ei muretse. Sihtrühm: Kas sa küsid seda või küsi keegi saada string 1-- yeah, string, ja siis-- ANDI PENG: Jah, nii see on hea algus. Ma hakkan kirjutama, sorry, kui sa räägid. So-- Sihtrühm: --the väiketähed numbrid on suuremad, eks? Või väiketähti on suur hulk? ANDI PENG: Täpselt. Sihtrühm: Siis me lahutama 32, olenemata [kuuldamatu]. ANDI PENG: Hea. Nii me sellist on üldises mõttes kuidas töötada selle probleemi kohta. Teades, et me oleme omamoodi õppinud füüsilise nii, et stringid salvestatakse mällu, mida sa juba tean, et sa lähed, et ilmselt on vaja kirjutada oma koodi et liikuda string? Sihtrühm: For loop. ANDI PENG: A loop, täpselt. Hea. Nii me sellist on üldine pseudokoodi allahinnatud sellist annab sa märgib selle kohta, kuidas oleks liikuda probleemi lahendamisel. Nüüd, kui sul on selline, siis võib viidata see alles millal sa üritad tegelikult kirjutada oma koodi. Nii saame tegelikult minna siin. Ja mul on funktsioon nimega upper.c-- seal on-- lihtsalt tühi blankett kohe, et kutid ei kavatse aidake mind välja nuputada, kuidas kirjutada see rida code-- ei koodirida. See oleks mitu rida koodi. Kui alustada mingit Tühjade pset, mis on esimene asi, mida ma vaja meeles pidada teha? Sihtrühm: [kuuldamatu]. ANDI PENG: Hea Yep. Kaasa. stdio.h. Sageli on see üks kõige lihtne vigu inimesed teeb, kui nad on kirjalikult, et nad tulen unustage lisada tähtis raamatukogu nad vajavad. Nii et kui see on tööaega ja sa oled nagu, Ma ei tea, miks minu kood ei tööta. Kas oskate öelda, miks see ei tööta? Me läheme öelda sa # include? Sa peaksid # include see. OKEI. Nii on meil standard I / O siin. Kas see on ainult raamatukogu me läheme siit vaja? Mida me saame teha? Vabandust. Keegi lihtsalt karjuda välja? Sihtrühm: [kuuldamatu]. ANDI PENG: Seal sa lähed. OKEI. Ja kuidas ma minna alustades mingit funktsiooni, mingit põhiülesanne meie programm? Int peamine. OKEI. Mida ma sinna sisse panna siin? Mis on esimene asi, mida sa teha tahad? Kui me tahame saada string kasutaja, mida me tahame olla teha seda esimest rida? Vabandame, kutid lihtsalt tunnen tasuta rääkida ja valju. Just hüüda iganes. Sihtrühm: Küsi kasutaja? ANDI PENG: Kuidas me seda teeme? Ask-- olen ma kavatsen kirjutada "paluda kasutajal"? Sihtrühm: printf. ANDI PENG: OK. Printf. Mida ma tahan printf? Sihtrühm: Type midagi. ANDI PENG: niimoodi? Poisid, teeselda nagu ma olen arvuti. Füüsiliselt mulle igal sammul et mul on vaja kirjutada siin? Kas ma teen midagi valesti? Kui mul on kirjutatud midagi? Sihtrühm: Sa pead hinnapakkumisi. ANDI PENG: mul on vaja hinnapakkumisi? OKEI. OKEI. Sihtrühm: Ja siis uus liin. Semikooloniga. ANDI PENG: semikoolon? OKEI. Väga hea. Sihtrühm: Ja äkki täpsustada et sa tahad seda väiketähtedega? ANDI PENG: Hea. Te naerate mind unustades panna semikooloniga. Ma garanteerin teile kuskil käigus selles klassis, siis unustage panna semikooloniga ning see viib teid kolm tundi aru miks teie kood ei tööta. See juhtus meile kõigile. Tõenäoliselt juhtuda. Olge hea harjumus kasutada semikoolonit. OKEI. Sihtrühm: Kas soovid teha längkriipsu aastal? ANDI PENG: Muidugi. Kas sa tahad teha längkriipsu aastal? Sihtrühm: Jah. ANDI PENG: Hea. OKEI. Mida teha edasi? Sihtrühm: siia string. ANDI PENG: Get string. Mida ma kirjutada? Keegi? Sihtrühm: String s. ANDI PENG: String s. Sihtrühm: getString. ANDI PENG: Keegi, võite mulle öelda, kus Selle funktsiooni getString on pärit? Sihtrühm: string. ANDI PENG: string? Sa arvad, et see on string? Sihtrühm: [kuuldamatu]. ANDI PENG: Seal sa lähed. See on CS50.h. Kui sa oled alati segaduses, kus raamatukogu fail või päisefailist on, google sõna otseses mõttes string, ja ma ütlen sulle Mis on kõik funktsioonid mis on string. OKEI. Nüüd, et olen loonud string Ja ma olen kiire kasutajal seda, Olen hoidnud seda muutuvat nimeks s, mida ma pean nüüd tegema? Sihtrühm: Kontrolli, kas see on väiketähtedega. ANDI PENG: Vabandust? Sihtrühm: Kontrolli, kas see on väiketähtedega. ANDI PENG: Olgu, teeme seda. Kuidas ma seda teen? Tegelikult eesmärgil klassi kohe, me lihtsalt läheb eeldada, et kõik et me panus on juba väiketähed. Kui sa tahad, et kontrollida, siis oleks lihtsalt lisada tingimisi avalduse et kontrollida, et jooksis läbi iga massiivi element ja kontrollida, kas see on vahel teatud väärtusi. Ma unustan, mida arv väärtuste väiketähed on. Võite vaadata seda üles ASCII tabelis. Aga jah, see on tõesti hea koht. Aga just nüüd, me lihtsalt läheb eeldada, et kõik stringid me sisend on väiketähtedega. OKEI. Niisiis, kuidas ma saan minna Selle probleemi saab edasi? Sihtrühm: For loop. ANDI PENG: For loop? OKEI. Ütle mulle, mida kirjutad. Sihtrühm: For int i võrdub 0. ANDI PENG: OK. Sihtrühm: Oh, tegelikult, siis teha komaga ja teha n võrdub strlen. ANDI PENG: Nii tähtsam et ma arvan, et ta märkas siin on see, et me ei pea ütlema int n teist korda tegime seda. Lihtsalt tean, et on ette loop kui sa kuulutatakse, sa tegelikult ei vaja int kohta teist korda sa muutuv. Võite öelda n strlen. Sihtrühm: S. ANDI PENG: s. OKEI. Sihtrühm: Siis semikooloniga. ANDI PENG: Muidugi. Sihtrühm: Ja siis [kuuldamatu] n. Siis i ++. ANDI PENG: Hea. Hästi. Mida me tahame sees Selle jaoks silmus nüüd? Pea meeles, kui me ei kavatse joosta string ja jookseb läbi massiivi, tahame vaadata asju ta. Mida me vajame? See on omamoodi keeruline osa nüüd. Igaüks on vist? OKEI. Nii esimene, kui me isegi juurde? Kuidas me isegi esimene kontroll või ligi element massiivi? Kuidas me seda teeme? Mis on märke, mida me kasutame seda teha? Mis nimi see massiivi nimetatakse? Seda nimetatakse s, eks? Pea meeles, et ükskõik string on alati massiivi. Nii s sulg i, eks? Sest see on praegune väärtus või indeksi väärtus me kontrollida. Ja me ei kavatse seada, et võrdse mina-- tahame väiketähti väärtus, eks? Soovime keerata, et lower-- sorry, me tahame suur-. Me tahame keerata väiketähed väärtuse suurtähtede. Ja nii like-- Vabandust, mis on Sinu nimi? Sihtrühm: Heidi. ANDI PENG: Vabandust? Sihtrühm: Heidi. ANDI PENG: Heidi. Nagu Heidi ütles Esialgu me ilmselt läheb vaja the-- me oleme ilmselt läheb lahutama 32, olenemata charc see on õige? Kuna kohta ASCII Tabelis on erinevus vahel väiketäht ja suurtähega on 32. Nii et kui me teeme seda, me oleme ilmselt lähed tahan lahutada 32, eks? Nii et me teeme s i. Kas igaüks aru, miks ma seda tegin? Sest just nüüd, meie massiiv, me kontrollida 0. indeks, eks? Ja 0. indeks string, mis on esimene märk. Ja see märk me läheme eeldada, et see on väiketähed. Kui me tahame, et oleks suur- me lahutame 32 oma väärtusest, sest meie ASCII tabel, see on, kuidas me seda saada järgmisele vastab väärtus, mis muudab ta suur-. Kas igaüks aru? Jah. Sihtrühm: Kas te saaksite ka ei väiketähed minus-- ANDI PENG: Jah, nii see on tegelikult väga hea. Ma lähen tagasi tulla, et Küsimus pärast me seda teeme. Jah. Ja siis, kui ma tahan näha, mis toimub, Ma ilmselt läheb soovite printida, eks? Keegi öelge mulle, mida Kuidas printida siin. Sihtrühm: printf protsenti c kurakriips [kuuldamatu]. See on väärtus [kuuldamatu] s i. ANDI PENG: s i, vabandust? Sihtrühm: [kuuldamatu]. ANDI PENG: Ma ei tea. Mida sa arvad? Sihtrühm: Noh, ma wouldn't-- Ma arvan, et ma ei bring-- Ma võtaks selle välja sees, sest [kuuldamatu]. ANDI PENG: Oh, sa oleks pidanud seda tegema? Sihtrühm: Jah. ANDI PENG: Jätame selle, kuidas see on, ja ma seletan, miks hiljem. Pea meeles, et isegi kui on koht, omanik, sa tahad panna sulgudesse ümber. Hästi. Nii et see peaks olema kindel funktsioon siin. Laseme ta ja vaata, kas see kogub. Tee ülemine. Uh-oh. See ei näe hea välja. Miks see nii on? Nagu iga viga, sa tahad minna tagasi alustage esimene, sest tavaliselt üks viga põhjused palju muid vigu pärast seda. Siin näeme upper.c: 18: 25, mis ütleb, mulle see programm nimega upper.c, real 18, viga kaudselt kuulutatakse raamatukogu funktsioonid strlen tüüpi unassigned-- blah, ma ei tea mis toimub pärast seda. Kõik see räägib mulle kohe on et midagi läheb on strlen. Ja arvuti segi, sest See on nagu, ma ei tea, mida strlen on? Mida see ilmselt ütlen sulle sa oled kadunud? Sihtrühm: Sa oled kadunud [kuuldamatu]. ANDI PENG: Sul on õigus. Täpselt. Nii et see on koht, kus see on oluline tagada et iga funktsiooni saate kasutada oma kood on lasknud õige päise kaudu esitama raamatukogu, või siis sa lähed, et saada palju vigu ja oma koodi ei kavatse teada, mis toimub. Nii et me läheme lisada string siin. Nüüd, kui me püüame koostada ülemine. Koostage õigesti. Laseme selle programmi. Nii kirjuta midagi väiketähed. Mis te poisid tahavad kirjutada? Hüüab midagi. Olgu, Charly lihtsalt kõndis. Me kirjutada Charly nime. Charly väiketähtedega. Ja loodetavasti loodetavasti on see hüüdmas välja ja sülitama Charly suure algustähega. Jei! ei igaüks aru, kuidas Käisin umbes lahendada seda? Nii, et ma ei saa manipuleerida kasutades täisarvu lahendada midagi, mis Ma tahan teha stringid, sest tegelased ja täisarvu viitamisele samamoodi, sest ASCII kaardistamine. Nii et jätkake punktist, kui ma tahtsin panna siin, mitte 32 suur- miinusmärk väiketähed õiglane nagu et mis toimivad sama hästi, sest see on lihtsalt lihtsalt Nende kahe vahe väärtused. Kui ma tahan teha seda again-- Charly. Oh ei. Ma arvan, et me läksime vales suunas, jah? Sihtrühm: [kuuldamatu] väiketähed a. ANDI PENG: Seal sa lähed. Yep. Ja välja sülitab Charly. Nii et ole ettevaatlik sa lahutades väärtused meeles pidada, millest üks on suurem kui teine. Näiteks siin ma unustasin et väiketähed a on tegelikult suurem kui suur- A. Nii et kui ma püüdis lahutada neid muul viisil ümber, sain negatiivse 32. Ja minu arvuti oli nagu, Ma ei tea, mis see on. See on tõenäosus lihtsalt mingi suvaline väärtus, mis ei ole väga hea. Ja nii veenduge, et olete lahutades õige pikkusega leida soovitud täht. OKEI. Kas keegi segaduses, kuidas me käis kirjutamise funktsioon? OKEI. Seega tegelikult funktsioon juba olemas raamatukogu nimetatakse ctype.h. Raamatukogu kutsus ctype.h. See funktsioon tegelikult on juba kirjutatud teile. Seda nimetatakse ülemiste. Ja nii otstarbel Selle pset, sa lähed leida, et sa tõesti tahad kasutada palju funktsioone sisalduvate jooksul ctype raamatukogu. Ülem, alandada, on ülemine, on lower-- need on kõik funktsioonid et siis saab kasutada väga, väga kiiresti oma koodi ei täpselt, mida see teeb. Me kirjutasime, kuidas teisendada string suurtäheks. Aga see on tegelikult koodi et keegi teine ​​on kirjutanud ja millele pääseb ligi via teist funktsiooni. Jah? Sihtrühm: Nii et sa lihtsalt kopeerida A seal ja teha seda iga kirja? ANDI PENG: Jah, sest ma ei ole hooli väärtusi. Ma lihtsalt huvita, et erinevus nende vahel on 32, eks? Erinevus väiketähed b ja suur- B on ka 32. Ja vahest c ja suur- C on alati 32. Ma lihtsalt hoolivad Erinevus nende kahe vahel, sest kõik kirjad Samasugust skeemi, eks? Kui mul on vahe vahelise üks neist, Ma tean, mida vahe vahelise kõik neist on. Hea küsimus. Jah. Igaüks hea? OKEI. Oop. OKEI. Nii teine ​​mõiste, mis on saab olema väga kasulik, kui teil edasi arendada koodi on seda ideed loomise funktsioone või võtmiseks. Nii kohe, me kõik oleme võtnud algebra. Algebra, siis on õpetanud, et on olemas see imeline asi nimega funktsiooni masin, kus, kui sa sisend üks omamoodi number, see jookseb läbi selle imelise funktsiooni ja välja hüppab erineva väljundi, eks? In kood, sama asi juhtub aastal mingit funktsiooni. Nii et ma võiks füüsiliselt kirjutada minu keha minu koodi peamine väide, et tegelikult teeb olenemata keha kood teeb. Aga väljaspool seda, ma ei saa ka kirjuta palju erinevaid funktsioone et teha palju erinevaid asju. Näiteks oleme juba hakkasin kasutama mõned neist. Printf-- et on funktsiooni, et keegi teine on juba kirjutatud, et me nimetame meie koodi. Et upper-- sel juhul, upper-- on teine ​​funktsioon oleme kirjutanud, et me võib helistada meie koodi. Ja nii ma arvan miks meil on isegi funktsioone? Miks me lihtsalt ei sulpsti see kõik sama rida koodi? See on lihtne kõigile. Noh, põhjendusi, et on, esiteks, organisatsiooni. See on tõesti tüütu läheb läbi kellegi koodi ja üks funktsioon, nagu printf. Kui te poisid tegelikult teadis, mida funktsiooni printf kaasnevad kirjutada, see on nagu 1000 rida koodi. Kui iga kord kui ma tahtsin to printf midagi, Ma pidin kirjutama 1000 rida koodi, See oleks väga tüütu lugeda, õige? See on põhjus, miks me oleme lihtsalt loodud abstraktne funktsiooni et meil on juba keegi teine ​​on kirjutanud kusagil mujal. Ja iga kord, kui meil on vaja seda kasutada Meie koodi, me lihtsalt pean ütlema printf. Ja see on võimalik kasutada funktsiooni keegi on kirjutatud meie koodi. See muudab lihtsamaks organisatsiooniliselt lugeda koodi. Teiseks, see on lihtsustamine. See lihtsustab samme meil võtta, et lahendada meie probleem. Printf, funktsioone nagu printf, funktsioone nagu ülemiste on kõik asjad, mis võimaldavad meil lihtsustavad meie koodi alla nii see on lihtsam. Ja viimane asi on taaskasutada. Nii et meil on funktsioon nimega printf et meil on võimalik helistada palju erinevaid ajad ja võimaldab tal olla korduvalt. Kui ma kirjutada printf, Ma ainult seda kirjutada üks kord. See eksisteerib ainult selles ühes kohas. Kui ma tahtsin seda uuesti teha, oleksin pea kopeeri ja kleebi see kõik minu teine ​​rida koodi. Sellepärast, kui me loome funktsiooni mis eksisteerib väljaspool meie peamine, saame lihtsalt kutsuda seda ja seda kasutada, kui vajame nii, et see on palju lihtsam meie jaoks programme kirjutada. Nii nii, et me oleks tegelikult kirjutada funktsioon on väga sarnased, eks? See on selline esimene Näiteks kus me tulen vaata funktsioon võtma stiil teistsugune kui meie int main void. Sel juhul, kui tahtsin kirjutada funktsiooni nimetatakse q, eks? Ja int väärtus siin on kõik mulle öelda, Mida ma tahan seda toimida naasta mind? Kui ma tahan kuubik täisarv, Ma tahan, et sisestada. Need on parameetrid. Ma lähen sisestab väärtus tüüpi int. Ja ma lähen tagasi teist tüüpi väärtuse int. Ja siin, nagu sa näete, kõik teen on cubing iganes minu panus on nagu mu väljund ja selle tagasi. Nii et kõik see funktsioon teeb on võtab mingi täisarv. See korrutab ise kaks korda nii, et see kuubikud mõju. Ja siis ta naaseb mida iganes, et väljund on. Nii et sel juhul on kaks rida kood, mis meil oli kirjutada extra. Aga kui me tahame helistada peale seda mitu korda, see on palju lihtsam kirjutada, et üks line siin see on kuubik kui läbima mitu korda. Nii nii, et sisuliselt mingit vormindamise mingit funktsiooni läheb olemas on, nagu siin. Nii et meil on funktsiooni nimi. Sel juhul nimetatakse seda kuup. Ja me nime kuubik, sest see on lihtne meeles pidada. Saate nimi on ruudu ja see võib tegelikult kuubis,. Ei ole oluline. Just nimi, mis sa oled määrates oma funktsiooni. See siin, int, on tüüp parameeter, mida vaja. Mida see funktsioon vaja, et see töötaks? Noh, ta vajab sisendina. Ma nimeks sisend. Saate nimi see, mida sa tahad. Aga mul on vaja midagi tüüpi int. See saab tegelikult teostada kõik, mis on sees siin, kere funktsiooni. Ja siis tüübi tagastamise siin, see int-- kõik see räägib mulle on et see funktsioon on läheb tagasi mind int. Nii see läheb võtma int, ja see läheb teile tagasi int. Kas igaüks aru, kuidas vormingu selline töötab? Cool. OKEI. Nii et ärge mures, kui tundub veidi abstraktne kohe. See on midagi, mida me räägime. Me sukelduda sügavamale hiljem muidugi. Nii, et mingit kõrgemat võtmiseks need asjad töö seisneb selles, et mälu, in arvuti, kõik hoitakse seda tüüpi korstna, ma ütlen. Nii seal tipus. Ma ei tea, kas sa poisid on näha, et hästi. Ma püüan suumida. Siin üleval, me on füüsilise teksti mida arvuti on interpreting-- kõik nullid ja need, mis eksisteerivad meie arvuti. Ja siis on meil vormindatud andmed ja deinitsialiseerimine andmed, mida me nimetame globaalseid muutujaid. Nii muutujad, mis on olemas kõigis programmides ja kogu teie, Sisuliselt koodi. Ära muretse, kui teiega on selline ebaselge seda. See ei ole tegelikult küsimus kohe. Ja siis on meil mida on nimetatakse hunnik virna. Mõtle virna sõna otseses mõttes nagu nagu virna asju, virna erinevate asju, mida lükatakse peal üksteisest mis talletavad erinevate muutujad ja süntaksi Koodi. Ja siis siin väga põhjas, meil keskkonnamuutujateta mida te täidesaatva jooksul lihtsalt su väike rida koodi. Ja me lihtsalt läheb suurendamiseks in tegelik stack osa. Nii siin, kui me olime suurendamiseks aastal just selles valdkonnas korstna, see on see, mida ta näeb. Ja see on tegelikult päris oluline kui poisid räägivad funktsioone, sest teate, et mälu arvuti salvestab muutujad ja funktsioonid ja parameetreid nii oma funktsiooni ja teie põhimuutujana erinevates kohtades. Nii kohe, peamine on tegelik funktsioon et sa täidesaatva koodi. Olete oma salvestatud parameetrite siin ja tema kohalikud muutujad hoitakse siin. Kohalik muutuja vaid mis tahes muutuja et on olemas ainult selle funktsiooni. Ja peale seda, siis on see Eraldi funktsioon nimega kuup. Sul on see parameetrid samuti need kohalikega. Ja põhjus saate vaata siin on see, et mida juhtub, kui kuubi omastab kasu oma põhifunktsiooni on see, et tegelikult on see kopeerimine, et üle. Nii et kui ma tahtsin kuubik 2 ja tagastab 8, et 2 tegelikult sisestatud parameetrina ja see on kopeerida üle nii, et teil on see olemasolevate kahes erinevas kohas mälus. Ja sa pead olema väga ettevaatlik mäleta mille üks nendest sa oled tegelikult manipuleerides. Ja näide sellest, mis juhtus et oleks väga, väga halb olemas siinsamas. Nii siin, olen saanud, teoreetiliselt Programmi siinsamas, põhiülesanne et ma tunnistamise int x võrdub 1. Ma kuulutatakse teise int y võrdub 2. Ja siis mul hakkab see läbi selle funktsiooni nimetatakse swap, kus ma eeldan, et see vahetades kaks väärtust. Ja siis ma lähen prindi neid välja, eks? Seda ma tahan seda programmi teha. Nii saab tule alla ja võtab pilk. Nii et kui ma tegelikult kirjutada eri funktsioon, nagu näete, meil põhiülesanne siin. Ja siis on meil teine ​​funktsioon siin. Void swap. Kehtiv tähendab lihtsalt, et see on ei kavatse tagasi midagi. Funktsiooni nimi on nimetatakse swap, ja see on läheb tarbimist kahe muutuja, int a ja int b, oma [kuuldamatu] funktsiooni. Nii et sisuliselt on siin, et me oleme associated x ja y sellesse funktsiooni. Ja kui me luua see-- nii et me tahame luua ajutine väärtus, eks? Me läheme määrata, et a. Ja siis läheb nüüd võrdne b. Ja b läheb tagasi kus temp väärtus oli, mis on, sest kui tahad vahetada asju, sa ei saa lihtsalt meeldib vahetada neid. Sa pead hoidma ühe välja siin nii, et see mäletab mis see on, sest kui sa vahetada üks, siis unusta mida see algne väärtus oli, eks? Nii teoreetiliselt, see programm peaks töötama, eks? Kui ma tahtsin vahetada kaks, nad peaksid vahetama. Nii saab käivitada ja vaata, kas see toimib. Nii nagu te poisid ei vaata, x kunagi oli 1 ja y kunagi oli 2. Ja kui ma seda välja printida, x on endiselt 1 ja y on 2. Hmm, see programm ei tundu olevat töötab nii, et ma tahan seda teha. Kas keegi taha võtta tulistas aim, miks see juhtus? See on seotud sellega, kuidas et erinevad asjad ladustatakse eri kohtades mälu. OKEI. Nii kutid ei pea muretsema liiga palju seda kohe. Aga tean, et kuubik kohaliku näitajateks olid a ja b, sest siin meie ülesanne, oleme kuulutanud ja b kui muutujaid, mis eksisteerivad jooksul kuubik, et funktsioon. Aga nagu näete, parameetrid, see võtab ka ladustati siin. Aga me ei olnud tegelikult tagasi midagi. Me ei tegelikult muutumas x ja y. Me lihtsalt muutuvas a ja b. Meil oli kopeeritud x ja y sisse midagi, mida nimetatakse a ja b. Aga me tegelikult kunagi manipuleeritud x ja y ise. Kas te näe kuidas see toimub? Kas me oleme lihtsalt kopeerida seda üle, kuid me ei ole tegelikult hoida lugu sellest, kus nad olid mälu. Ja nii nüüd arvuti otsib, oh, ma olen käivitada see asi läbi see armas funktsiooni. Aga x ja y on endiselt x ja y. Midagi juhtus neid asjaolu tõttu et need parameetrid ja kohalikud muutujad hoitakse teist paigutama mälu. Ja see on kõrgema taseme mõiste, et me tulen ilmuvad hiljem muidugi. Aga tean, et see on probleem, mis võib juhtuda ja et me nuputada, kuidas selle kohta, kuidas käsitleda seda hiljem muidugi. OKEI. Hästi. Nii viimase kontseptsiooni me oleme tõesti, et katta mis saab olema kasulik jaoks pset sel nädalal on nn käsurea argumente. Nii Rob loengul läks läbi Selline lühidalt, kuidas need töötavad. Sisuliselt teada, et kui olete kirjalikult nagu põhifunktsiooni, kui me kirjutas funktsioone enne minevikus, meil oli int main void. Ja põhjus oli meil void seal oli, sest meie programmid ei vaja sisendväärtused joosta, eks? Kui ma jooksin Mario, ma ei pea tegelikult lihtsalt kirjuta midagi kui ma jooksin Mario. Ma võiks kiire kasutajal hiljem. Aga see ei ole alati nii. Näiteks selles nädala probleem seab, sa lähed küsitakse, et Lisaks töötab oma programmi, sa lähed tahan sisend Teatud asjad otse kui käivitada oma programmi. Nii, kuidas me seda nimetatakse käsurea argument, mis on nagu argument saate sisestada otse kui sa üritad käivitada oma programmi. Nii et tähistada seda, see on üsna keeruline välimusega, aga see on tõesti ei ole, et raske. Nii int main-- see on lihtsalt oma põhifunktsiooni. Into Argc komaga string argv sulgudes. Nii et kõik, mis ütleb, et see int argc-- kõik, mis ütleb, on see, et need on mitmeid argumendid arvuti oodata. Nii et üks asi, mis on tõesti oluline jälgida on füüsiline oma programmi nime loeb üks nendest argumentidest. Nii et kui ma tahtnud minu programmi joosta pluss üks käsurea argument, ma olen tegelikult läheb on kaks. Argc on tegelikult saab olema kaks. Ja siis string argv bracket-- kõik, mis teeb, see annab mulle massiivi stringe, mis on läheb lihtsalt kuvada ja salvestada mida kõik need käsurea argumendid. Nii näiteks, kui ma tahtnud seda Programm, ./copy inFile outfile, eks? See on lihtsalt tüüpiline Linux käsk. Mis tegelikult on Argc? Mitu käsurea argumente on seal tegelikult on? Kõik see teeb on teha koopia infile nime ühe faili ja see koopiad see teise faili, eks? See on kõik see teeb. Nagu näete, ma teen seda ühel real ilma tegelikult vajavad programmi. Mis on meie Argc sel juhul? Mitu argumendid meil on? Sihtrühm: Kolm? ANDI PENG: Meil ​​on kolm, täpselt. Nii et see on väga intuitiivne lihtsalt arvan, et see on lihtsalt infile ja outfile. Aga tean, et füüsilise nimi Programm näed moodustab ühe. Nii et sel juhul Argc on tegelikult kolm. Kuidas, mida on argv 0? Pidage meeles, et kõik käsureaargumentidena hoiti massiivi stringe. Nii et kui ma püüan sellele juurde, mida oleks argv sulg 0 anna mulle? Sihtrühm: [kuuldamatu]. ANDI PENG: Täpselt. See annaks mulle dot kaldkriips koopia, sest see on 0. element, Esimene osa minu rida. Aga argv 1? Sihtrühm: inFile. ANDI PENG: inFile, täpselt. Aga argv 2? Sihtrühm: outFile. ANDI PENG: outFile. See on natuke keeruline nüüd. Mis te poisid arvavad argv 3 läheb andis mulle kui ma proovisin printida, et välja? Sihtrühm: [kuuldamatu]? ANDI PENG: Kas teil on käsi püsti? Jah. Sihtrühm: alternatiiv. ANDI PENG: Täpselt. Seega pidage meeles loengus, et me on lõpus rassi midagi nimetatakse null terminaator? Me võtame arvesse seda ka edasi klassis. Aga tean, et märke, kuidas arvuti teab, et see on lõpp massiiv on, et see paneb midagi, mida nimetatakse null terminaator või kriips null. Nii et kui sa püüad pääseda argv 3, sa lähed tabanud see kriips 0. See on isegi rohkem konksuga küsimus. Aga argv 4? Nii et see on minevikus null terminaator Varem piire meie massiivi. Mis sa arvad läheb juhtuda, kui me püüame seda teha? Sihtrühm: [kuuldamatu]? ANDI PENG: Vabandust? Ütle, et natuke kõvemini? Sihtrühm: [kuuldamatu]. ANDI PENG: Jah. See on nimi ala saate tõenäoliselt saada. Aga tean, et argv 4-- mis võimaldab teil juurdepääsu kohti arvuti mälu, et sa tõesti ei tohiks olla liigutav, sest kohe tead, mis argv on. Sa tead, et see on massiivi suurus 3 mis on dot koopia, infile ja outfile. Kui te proovida minna nii kaugele, et et sa oled mööda null terminaator arvuti on ilmselt salvestatud midagi argv 4. Ja sa tõesti ei tohiks olla võimaldada juurdepääsu argv 4, sest sa oled faili kapis ja sa oled ainult lubatud juurdepääs nendele kolmele riiulid. Aga kui te üritate jõuda palju kaugemale riiulile, kus teil on lubatud, sa lähed alustada jama muid asju arvuti mällu. See saab olema tõesti halb. Nii lihtsalt tean seda. Ole väga ettevaatlik, et sa ei ole lihtsalt juhuslikult alustada juurdepääsu elemendid massiivi et ei olnud, mida sa tahtsid luua. Yep. OKEI. Nii et me teeme teise terminal näiteks siin. OKEI. Nii Rob kiiresti loengu teisel päeval läks läbi selle näiteks siis, kui ta oli int main int Argc string argv sulgudes, mis ütleb mulle, et ma olen läheb on käsurea argumente. Ta on, kui Argc võrdub võrdub 2-- mäletan, võrdub võrdsete võrdlemine. Kui see võrdub 2, siis ma olen trükkimineku hello, olenemata esimene massiivi element on. Else print, tere. Mis see läheb juhtuda sisuliselt? Kas keegi lihtsalt seletada Inglise, mida see programm teeb? Jah. Sihtrühm: Kui keegi kirjutada käsk ja ütles oma ees- ja perekonnanimi, see ei ole lihtsalt printida Esimene ja öelda, hello, Mis iganes on Sinu esimene nimi on. ANDI PENG: OK, lähme käivitada. Nii näiteks, kui ma oleksin teha Selle faili teha hello mina-- hello mina-- mida sa tahad, et sisend? Sihtrühm: Ees- ja perekonnanimi. ANDI PENG: Ees- ja perekonnanimi? Spaces? Sihtrühm: Jah. ANDI PENG: Kas keegi ütleks mulle kohe, mis on Argc? Just seal? Oih, vabandust. Lubage mul tagasi minna. Mitu käsurea argumente are-- kutid tõesti ei näe. Aga ma püüan suumida. Ma üritan. Jah, seal on kolm, eks? See dot kaldkriipsuga hello, see on Andi, ja see on Peng. Mida te poisid arvate, et see Programm läheb välja trükkida? Oh. Oi vabandust. Vale nime. See prindib, tere. Kas keegi tahtma selgitada miks see juhtub? Jah? Sihtrühm: [kuuldamatu]. ANDI PENG: Täpselt. Nii et siin on tingimuslik tähendab, et kui Argc võrdub võrdub 2. Nii ainult juhul, et seal on kaks käsurea argumente. Siis ma lähen printida, tere, mis see on. Aga muidu, ma lähen prindi lihtsalt, tere. Nii ei keegi taha mulle näiteks kuidas ma saaks tegelikult saada see printimiseks väärtus argv 1? Mida ma pean sisend siin? Ainult üks asi, eks? Kuna dot tere juba loeb esimene argument. Mul on ainult üks. Nii dot hello kui ma lihtsalt ei Andi. Tere, Andi. Kas kõik mõistavad miks see juhtub? Jah. Sihtrühm: Nii vaheline ruum käsk LINE on see [kuuldamatu]? ANDI PENG: Ei Nii et ruumi käsurea argument, x, rääkige oma arvuti et see on algus uus string. Nii string argv siin-- see kauplustes kõik oma käsud line argumendid ridades. Ja nii ruumi käsurea argument-- kõik, mis teeb, on sulle öelda, see on lõpus üks string ja see on aeg edasi liikuda teisele. Jah. See on päris oluline Sinu pset, sest sa oled läheb testime neid. Nii kas keegi on Küsimuste selle? OK, lahe. Jah? Sihtrühm: Nii põhjus soovid pane täisarv argument calc asemel on [kuuldamatu] oleks, kui soovite kirjuta täiendavat teavet [Kuuldamatu]? ANDI PENG: Jah, täpselt. Mõned programmid teil vaja sisestada käsurea argument et see möödub ja kasutab seda. Jah. Sihtrühm: Mis siis, kui [kuuldamatu]? ANDI PENG: Noh, mida ma pean muuta, siis minu programm? Sihtrühm: Just 3. ANDI PENG: Miks on see, et juhtub, sa arvad? Sihtrühm: Kuna [kuuldamatu]. Sihtrühm: Sa pead muuda see 2 [kuuldamatu]. Sihtrühm: 1 ja 2. ANDI PENG: 1 ja 2, täpselt. Nii et sel juhul sa ilmselt tahad olla kaks printf statements-- mis trükitakse argv 1 ja üks, mis trükitud argv 2. Siin. Ma ei saa tegelikult teha, et reaalne kiire. Palun. Oh. Mitte päris, mida sa tahtsid. Aga kui te poisid jändama vormingu, siis tulevad välja. Jah. Cool. Ma tean, et me oleme natuke vähe aega. Aga ma olen lihtsalt kavatse kiiresti kulutada paari minuti läbimas helpful-- Sihtrühm: Sul on kaks minutit. ANDI PENG: Mul on kaks minutit? Aitäh. Natuke kiiret pset näpunäiteid. Nii see pset, ma väga soovitada, nagu ma ütlesin, igaüks lugeda spec. Sul kirjalikult kolme programs-- üks nimetatakse initials.c, üks nn caesar.c, üks nn vigenere.c. Mõned olulised näpunäited, et kutid tõesti hoida mind-- nii on see funktsioon nimetatakse atoi-- nagu mulle meeldib öelda, trois. Selge, kas see on tegelikult, kuidas sa seda ütled. Aga kõik see teeb, see on sisestanud. See teisendab stringi int. Nii kujutab ASCII i täisarv. See on lihtsalt konverteeriva ASCII väärtused täisarve. Seega pidage meeles argv, massiiv, et kauplustes kõik oma käske ritta arguments-- ta salvestab neid kõiki stringe. Ja kui sa tahad, et oleks võimalik on üks neist saanud täisarv, sa lähed on kasutada seda väärtust siin. Moodul, nagu me käsitlesime varem klassis täna võimaldab teil olema Ülejäänud iganes on. Nii et kui meil on tõesti suur hulk Caesar, Mis siis, kui meil on lõpuks string Vigenere? Kuidas sul läheb, et oleks võimalik saada, et ümbritsev? Kui ma tabanud z ja ma tahan see tagasi minna, kuidas ma kavatsen saada et ümbritsev? Tõenäoliselt soovid kasutada moodul seal kuskil. Teiseks, sirvida ringi teegi. ctype.h. See on uus raamatukogu on meil. Leiad palju tõesti kasulik functions-- isupper, islower, toupper, tolower, isalpha, jne. Kõik funktsioonid on väga kasulik kui sa üritad aru saada, on see märk väiketähti kirja? Kuidas muuta see stringi suur-? Kõik need asjad on väga, väga kasulik oma pset. OKEI. Lahtiolekuajad täna on 8.00 11:00 Teal klassiruumis homme samuti kolmapäeval ja neljapäeval õhtul. Lahtiolekuajad on commons. Väga soovitan teil poisid kõik alustada kohe, sest sa ei taha olla, et poiss, kes neljapäeva õhtul on probleeme esitades oma pset ja nagu, ma ei tea, mida teha. Hakkasin, ma lõpetasin ma esitanud. Proovige anda endale ruumi, sest koodi probleeme esineb alati. Sa tahad teha kindel, et sa annad ise palju aega, et oleks võimalik lõpetada psets. Cool. Ma logelema siin. Sihtrühm: Kas see online juba? ANDI PENG: Ma ei tea, kas see on Internetis juba olemas, kuid see saab olema. Ma logelema siin, kui keegi on küsimusi juba. Tänan, et tulid.