[Musiikkia] ANDI Peng: Tämä on CS50, ja tervetuloa viikko kaksi osassa. Tämä on todella, kun viikko kaksi meidän class-- todella, ensimmäisellä viikolla meillä on ollut kohta. Kättä, kuinka moni teistä kaikki tuli Super § viime viikolla? OK, se on OK. Se on ok. Kuinka moni teistä katseli Super jakso viime viikolla? OK. Ja te teki hieno ongelma-asettaa yhden? Joten aion ottaa sen, että meillä on nippu todella älykkäitä lapsia tässä luokassa ja asiat tulee sakko. OK. Niin first-- Ensinnäkin, olemme juuri menossa lyhyesti mennä yli tämän päivän esityslistaa. Puhutaan tietenkin logistiikka. Monet teistä luultavasti on kysymyksiä miten asiat hoituvat tällä kurssilla. Me vastata niihin. Aiomme lyhyesti mennä yli silmukoita tapauksessa tahansa te jäi Super osiosta. Puhutaan ASCII kartoitus. Puhutaan paneelit, toiminnot, komentoriviargumentteja. Ja lopuksi, mitä te luultavasti kaikki todellakaan halua olla täällä oppia, on pset2. Meidän täytyy muutamia kivoja temppuja ja vinkkejä, miten se tehdään. OK. Myös toiseksi, meillä on paljon karkkia täällä. Joku tykkää karkkia, vain tulla tänne. Napata joitakin. Minulla on nippu. Meillä on ton toimistossa. En todellakaan halua syödä karkkia koko päivän. Te pitäisi syödä kaikki karkkia, koska Toin sen tästä te. Vain syödä karkkia. Siellä tulee olemaan karkkia joka osassa. Joten ensimmäinen, kuka minä olen? Nimeni on Andi Peng. Olen johtaja TA CS50 täällä Yalen. Ja lisäksi että aion myös be-- jos joku olisi like-- käyttökustannuksia kaveri, teidän olkapää itkeä. Jos yö ennen PSET due, sinulla ei ole aavistustakaan, mitä on tekeillä, hit me up. Me sääliä yhdessä, jne. Juuri tietää, että olen täällä voimavara sinulle etulinjassa auttaa te selvittää, miten ratkaisemaan ongelmia CS50 ja sen jälkeen. Minun email on andi.peng@yale.edu. Otan myös lähettää yksittäisen sähköpostiin puhelinnumeroni siinä niin että ei kaikille Internetissä voi nähdä puhelinnumeroni. Voit vapaasti soittaa minulle milloin tahansa. Vakavasti, minun puhelin on yleensä liitetty käteni. En ehkä vastata muutaman minuutin. En voi vastata muutamassa tunnissa. Mutta voin vakuuttaa teille, jos olet minulle sähköpostia, jos soitat minulle, tekstin minulle, Vastaan ​​24 tunnin kuluessa. Usein minä vastata ennen että, koska ymmärrän että jokainen sai joitakin ongelmia, ja haluat vastauksia vastataan hyvin nopeasti. Kuitenkin, jos soitat minulle 30 minuuttia ennen että pala, joka johtuu torstai täksi yöksi olla, Andi, auttaa minua, En ole started-- voin antaa teille, että olkapää itkeä. Mutta se voi olla aika miettiä miten tehdä sitä seuraavalla kerralla. OK. Oho. Miten voin mennä takaisin? Siellä mennään. Joten tässä tietenkin meillä tonni tuen kaikille. Lisäksi vain kohdat täällä, johon viikoittain saavat viettää 90 ihana minuuttia kanssani, meillä on myös virka-ajan. Kuinka moni teistä kaverit ovat jo ollut virka apua? Suuri. Se on todella hyvä nähdä, koska me on henkilökuntaa yli 45 TA ja CA koulutettu tähän tietenkin, että tässä auttaa te teidän psets. Maanantaisin he pidettiin TEAL yhtä 17 Hill House täällä Yalen. Tiistaisin ja torstaisin, he pidettiin Commons. 8:00-11:00 melko paljon joka arkipäivä. Tule, tule ulos. Mitään ongelmaa, ei problem-- juuri tullut päälle, ja sitten autamme sinua ulos että. Toiseksi, lisäksi virka ja kohdat, meillä on myös shortsit. Onko kukaan koskaan nähnyt pari shortsit tai walkthroughs vuonna videot sivuilla? OK. Joten he todella, todella hyödyllinen. Meidän ihana Harvard tuotanto joukkueen tuolla että koulu pohjoisessa, he ovat kuvattu ja tuottanut uskomattomia läpikäynti videoita. He vievät sinut askel askeleelta läpi miten edetä ratkaista ongelma. Usein jos olet hämmentynyt yksinkertainen konsepti, yksittäinen käsite, katsomaan, koska meillä todennäköisesti lyhyt jonnekin sivuillamme. Ja se on yleensä suuri voimavara etsiä, kun olet ensin hävisi siitä, miten käsitellä ongelmaa. Kolmanneksi, meillä on myös study50 ja reference50. Tutki siis 50 sivusto on vain linkki. Se on mielestäni study.cs50.net Tai jotain sellaista. Vain googlettaa. Meillä on paljon dioja valmis. Meillä on paljon shortsit ja walkthroughs-- asiat kaikki koottu erittäin mukava ja siisti varten te kaikki selata, näe mitään käsitteitä että olet hämmentynyt. Se olisi todennäköisesti käsitellään tuolla study50. Reference50-- samanlaisia. Meillä on paljon erilaisia ​​muistiinpanoja helposti saatavilla käytettävissänne. Ja lopuksi, meillä on mitä nimeltään CS50 Keskustele, foorumi, jossa, jos iltana teet oman ongelmia, sano, sinulla on kysymys. Kirjaudu sisään CS50 Keskustele. Lähettää kysymyksesi. Ja sitten yksi hundreds-- ehkä, thousands-- ikäisensä ottamisen luokan online kirjautuu. Ja ehkä joku voi saada vastauksesi ennen TA voi. Se on pohjimmiltaan vain online-foorumi, että voimme kaikki käyttää keskustella ongelmista. Hyvä juttu. OK. Joten ongelma asettaa. Olemme noin oikeassa paksu ongelma asettaa kaksi. Monet meistä ovat jo taisteli läpi ongelma asetettu. Tiedämme jo, että ehkä odottamassa viime yönä tehdä PSET ei ole viisain asia tehdä CS50. Vinkkejä ja vihjeitä pääasiassa menestys luetaan koko spec. Kuinka moni teistä on jo lue spec PSET 2? OK. Se kiinteä määrä. Tiedän te luultavasti tunnustettu nyt tiedot ovat todella pitkiä. He todella, todella pitkä. On todella vaikea lukea joka rivi Tämän huolellisesti sana sanalta. Haluat vain silmäillä missä se käskee tekemään jotain. Voin vakuuttaa teille, älä tee sitä. Jos teet niin, olet luultavasti menetät jonnekin jossa se kertoo miten aloittaa ongelma tai se kertoo, mitä nimi ongelman tai se kertoo, tämä on todennäköisesti paras tapa alkaa tekemään ongelman. Ja Tulet menetetään. Kun yrität lukea spec puolivälissä, paljon tärkeä information-- että et ole tulee pystyä todella pääsy. Joten lue koko spec. Yritä lukea koko spec ennen kuin tulet §, koska silloin, kun puhua PSET, voimme kaikki idea mitä on meneillään. Toiseksi, tämä on käsite että minä mielelläni viite paljon koko kurssin lukukauden. Mutta pohjimmiltaan, meitä vastaan ​​puolitiehen, eikö? Me, kuten TA ja Jason kuin kurssi johtaja ja Scaz kuin professori ja David kuin professori ja kaikki muita ihania avustajat tällä kurssilla, avustajat tässä course-- me teemme parhaamme varmistaa, että sinulla on asetettu jopa onnistua tällä kurssilla. Pidämme osiosta. Pidämme virka. Vastaamme puhelimeen puhelut, vastata sähköposteihin, teemme kaikkemme, jotta Varmista kysymyksiin vastataan. Kuitenkin auttaa meitä liikaa. Tapaa meidät puoliväliin. Jos tulet virka ei mentyään §, ei nähtyään luentoja, joilla ei ole aavistustakaan mitä tapahtuu, on kuin, auttaa minua. Aion olla, hyvin, olen pahoillani. Se voi olla aika lainata että olkapää itkeä, koska en ole varma mitä voin tehdä auttaakseni sinua jos et yritä ainakin auttaa itsesi hieman alussa. Tapaa meidät puoliväliin. Tiedäthän, tulkaa valmis vastaamaan ja saada valmis aloittamaan materiaali. Se tekee asiat niin paljon helpompaa kaikille mukana. Joo, se on aika paljon se. Arvostelu. Joten oppimäärä, ihan syvällistä siitä, miten me luokka. Mutta pohjimmiltaan, erittely Tässä on 50% luokka on psets, joka on ihana, koska se on jossa olet menoja valtava Suurin osa kurssin aikaa. Tietokilpailuja 40%, ja teidän Opinnäytetyö on 10%. Tulee kaksi tietokilpailuja koko aikana lukukauden. Mielestäni ajat ja päivämäärät ovat myös listattu oppimäärän. Siten, että me on luokittelu teidän psets on, että meillä on olennaisesti neljä arvot, joita me määrittää kunkin luokan. Meillä arvo soveltamisala, oikeellisuuden, suunnittelu, ja tyyli. Joten kuten näette, se on tavallaan meidän laskentakaava psets. Kolme annamme eniten paino oikeellisuudesta, koska ilmeisesti valmentaja olisi testaus tapausten että haluamme sen testata. Te kaikki on check50 käytettävissänne. Se on erittäin hyödyllinen toiminto että te voi kaikki ladata koodia meidän palvelimia, jossa me tarkistaa sen sinulle. Ja olet nähnyt ne frowny kasvoja, hymiöitä. He todella, todella hyödyllinen. Älkää opiskelija, jotka haluavat yrittää hardcode kaikissa niihin vastauksia. Olen ehdottomasti nähnyt PSET jossa joku näki kaikki arvot check50 ja he vain vaikea koodattu in-- jos Numeron tulostaa tämän numeron. Jos määrä, tulostaa että määrä. Älä tee sitä. Vaikka teknisesti check50 on oikea, teidän tapa ratkaista Ongelma ei ole oikea. Niin vain käyttää check50 säästeliäästi. Mutta myös varmistaa, että olet ymmärtää, miten se toimii, ohjelma toimii lisäksi check50, koska emme voi testata jokaisen mahdollinen tapauksessa check50. Tulemme testataan joitakin niistä. Design on lähinnä, miten hyvin suunniteltu on koodi? Jos olet copy-liittäminen useita riviä koodia monta, monta kertaa. Ehkä sinulla ei ole aivan paras design koodissa. Ehkä on aika lisätä, että silmukka. Pohjimmiltaan tässä se on vain kaikki noin yrittää tehdä koodia, yrittää kirjoittaa koodia tehokkaasti kuin mahdollista, jotta ohjelma toimii niin nopeasti kuin mahdollista. Lopuksi meillä on tyyli. Joten tyyli on eräänlainen mielivaltainen, subjektiivinen aikavälillä. Tiedän, että meillä virallisesti on tyyli 50 opas CS50, jossa se kertoo, oi, te pitäisi olla tilaa täällä. Kannattaa sellainen muoto koodi tällä tavalla. Sinun pitäisi nimetä asioita tällä tavalla. En todellakaan välitä, sinänsä, miten päätät muotoilla koodin, kunhan pysyt johdonmukainen. Esimerkiksi, jos haluat jättää tilaa jälkeen neljän ennen neljä silmukka, vain tehdä joka kerta. Älä sellaista tehdä sitä. Älä tee sitä muina aikoina. Jos haluat pitää kihara olkaimet tilaa tietyllä tavalla, vain aina tehdä niin. Älä sellaista tehdä sitä jossain täällä ja jossain ei siellä. Kun olemme luokittelua, se on todella vaikeaa jos minulla ei ole aavistustakaan siitä, miten olet alustus koodia, asiat ovat Outoa ja paikallaan. Jos vain pitää se johdonmukainen, se on paljon helpompaa minulle kuin suurempi pystyä lukemaan koodia. Se on paljon helpompaa sinulle kuin opiskelija voitava katsoa läpi koodi ja mitä vikaa se slash miksi siellä kysymyksiä. Tyyli on yksi helpoimmista asioista te voi tehdä saada täyden maalin. Pohjimmiltaan, jos vain välitä, jos maksat viisi minuuttia huomiota koodisi joka viikko, sinun pitäisi olla täyttymässä tyyli pistettä. Lopuksi, meillä on mitä kutsutaan kertoimella soveltamisalaa. Scope-- Tiedän, että se on iso sana, varsinkin tässä luokassa. Mutta laajuus, kaikki, että välineet on, että yrität psets parhaan kykysi. Jos otat kolmessa teidän neljä ongelmia ja ei edes yritä viimeinen, olet luultavasti menossa menettää joitakin kohtia soveltamisalaa. Vaikka olet vain alkaa ongelma, tee parasta kulkea läpi. Vaikka se ei toimi, käännä sitä, koska joka näyttää ja osoittaa meille, että yrität, että yritit Harjoitus parhaan kykysi. Ja sitten voimme antaa sinulle täysi pistettä soveltamisalaan. Soveltamisala on myös erittäin tärkeää, kun puhua alin PSET pisteet pudota. Joten aikana lukukausi, teillä yhdeksän psets. Ja me todella pudottamalla alin pistemäärä pois näiden yhdeksän, mutta vain jos sinulla on täysi laajuus pistettä. Joten jos kääntyä epätäydellinen PSET, Valitettavasti emme voi pudota, että yksi, koska soveltamisala pistettä ei saatu päätökseen. Joten vaikka sinulla on kauhea viikko jossa olet kuolee ja olet sairas tai koira kuolee, kissa kuolee, ja olet ylikuormitettu läksyjä, vain yrittää PSET. Tehdä sen parhaan kykysi. Jos se ei toimi, sillä ei ole väliä. Vain kääntää se. Ainakin voimme antaa te pisteitä vaivaa. Ponnistelun tässä luokassa. Ainakin alin pistemäärä pudota vaivaa. Niin joo. Se on aika paljon se. Onko kellään kysymyksiä niin pitkälle siitä, miten me arvosana luokassa? Tai jokin näistä? Tahansa näistä niin far-- kohdat, virka? Viileä. OK. Joten tämä on aihe, joka ei yksi todella pitää puhua. En todellakaan halua puhua siitä. Te eivät todellakaan halua kuulla minun puhua siitä. Mutta valitettavasti, me kaikki täytyy puhua siitä. David vietti 20 minuuttia luento puhua siitä. Ja että on aihe akateemisen rehellisyys. Joten me kaikki täällä ovat luultavasti kirjallisen essee joskus meidän Yale ura. Olemme luultavasti saanut puhua missä olemme kertonut ei plagioida meidän essee, koska työ ei ole meidän. Tietotekniikassa, meillä on samanlaista käsitettä. Kaikki työt, jotka lähetät, kaikki koodi, että kirjoitat pitäisi olla koodi, että olet kirjoittanut. Ei pitäisi olla koodia että olet kopioitu muualta. Ei pitäisi olla koodi, joka olet googled ja plopped vuonna ja et todellakaan tiedä, jos se toimii. Sinulla sellainen on tunne mitä se tekee, mutta ei oikeastaan. Jos olet epävarma, lähinnä, se on vain oltava kohtuullinen. Meidän oppimäärän, olemme Koko lista asioista näemme kohtuullisena vs. ole järkevää. Esimerkiksi kohtuullinen on sinun ja ystäväsi keskustella mikä on paras tapa edetä noin loogisesti ongelman ratkaisua. Se on melko kohtuullinen. Mikä ei olisi kohtuullista on, jos kaverit sai yhdessä, kirjoitettu sama koodi, ja kääntyi samaa koodia. Se ei ole kohtuullista. Sama juttu, tavallaan essee. Jos haluat keskustella ystäväsi kanssa, hei, tämä on mitä haluan kirjoittaa. Nämä ovat vaiheet haluan kestää kirjoittaa siitä, suuri. Sepä ihanaa. Ole hyvä yhteistyötä keskenään. Jos te aloitat kirjallisesti sama asia, käännä samassa essee, se on vähemmän OK. Joten jos on epävarma, mutta älä tee sitä. Täällä me CS50, meillä on skriptejä jotka kulkevat automatisoida testata paitsi oikeellisuutta koodin, mutta myös ainutlaatuisuuden koodin. Joten älä laita meidät tilanteeseen ottaa viitata teidän tapauksessa EXCOMM. Kiitos vain kaikille, haluan vain tekevät tästä hieno kokemus. Jokainen oppii paremmin, me kaikki ovat onnellisempia, ja olemme kaikki perustettu onnistua tällä kurssilla. Jotain, joka on hyvin ainutlaatuista tässä luokassa mielestäni kaikkien pitäisi oikeastaan kiinnittää huomiota on, että meillä on mitä kutsutaan pahoillani lauseke meidän oppimäärän. Niin olennaisesti, 72 tunnin kuluessa, jos uskot tehnyt jotain et ole varma oli tarkoituksenmukaista, tulkaa meille. Lupaamme, että 72 tunnin kuluessa me käsitellä asian itse viittaamatta korkeampaa viranomaisen hallintoon. Joten jos tulet luokseni ja sanoa, Andi, hei, olen todella pahoillani, mutta mielestäni siellä on pari riviä minun koodi viime yönä että olen sellainen googled, lähtenyt Stack Ylivuoto, kopioida ja liittää, ja olen todella, todella pahoillani siitä, haluaisin tietää. Älä anna sitä jäytää ja vain toivoa, että saan kiinni sen. Me kiinni. Tule luokseni. Haluaisin tietää 72 tunnin kuluessa. Me keksiä ratkaisu. Ja lupaamme, ettemme katso yliopisto viranomaiset olennaisesti. Joten se on paras etu vain olla rehellinen kaikkien kanssa mukana kurssin. OK. OK. Joten nyt, nopeasti ennen I eteenpäin, ei kukaan on kysymyksiä logistiikka miten kurssit aiomme ajaa, miten osat on menossa juosta, mitään siitä? OK. Joo. Yleisö: [äänetön]? ANDI Peng: Joo. Niin quizzes-- kuinka moni teistä on Monday / keskiviikko jakso? Kuinka moni teistä ovat tiistai / torstai? OK, joten se on vankka split täällä. Niin että otamme se Yalen on, että me ovat menossa on kaksi erillistä quizzes-- yksi kutakin section--, että otetaan tunnilla. Minusta se on lokakuu, lokakuun lopussa, jotain, kuten viikko yksi Quiz. Joo, niin juuri tullut luokkaan. Tuona maanantaina tai keskiviikkona sinä otat tietokilpailu. Tuona tiistaina tai torstaina, voit ottaa eri tietokilpailu. Mutta samaa materiaalia katetaan. Joo. Hyvä kysymys. Joo. Yleisö: Minne mene tutustu laadut? ANDI Peng: Joo. Joten aion lähettää sähköposti riippumatta viikoittain kun tietokilpailuja ovat graded-- tai, pahoillani, kun psets arvostellaan. Psets yleensä käännetään vuonna puoltapäivää tai perjantaina. Niin lupaan, että minä yrittää saada ne takaisin sinulle mukaan keskipäivään saakka seuraavana perjantaina. Aina kun luokka PSET, minä lähetän ulos ilmoitus asteen kirja joka kertoo pisteet on nähtävissä verkossa. Joten juuri tällä viikolla, kun olen loppuun luokittelu viime viikon psets, te saat sähköpostitse ilmoitusta kerron, hei tämä on, jos Siirry tarkastella laadut. Ja näet jokaisen erittelyn laadut. Näet kommentteja. Voi, nopea juttu myös. Kommentti osio suuri kirja on, jos olen luultavasti viettää suurimman osan ajastani luokittelu. Niin yksi asia, joka on todella tärkeää, kun te katselet sinun laadut teidän psets ei vain etsii fyysisessä pisteet mutta myös ottaa aikaa todella lukea kommentteja. Usein joka antaa sinulle palautetta miten olet ratkaista ongelma. Jos sinun täytyy tehdä jotain hieman parempaa, rakentavaa kritiikkiä yleensä on paras annettu huomautusten osassa. Joten kiitos, kiitos, aion viettää aikaa kirjoittaa kommentteja. Ole hyvä, olisin todella kiitollinen jos te lukisi nämä huomautukset. OK. Viileä. Selvä. Joten aiomme alkaa puhua ja vain tarkistaa nopeasti osa materiaalista peräisin viikko nolla juuri niin olemme oikealla sivulla varten alkaa tämän viikon ongelmia. Joten kun silmukka on yksi kolmen tyyppisiä silmukoita keskustelimme aiemmin tässä luokassa. Kun taas silmukka olennaisesti on kirjoitettu syntaksin jossa, kun taas tietyt ehdot, tehdä tämän toistuvasti, eikö? Ajattele sitä tällä graafinen täällä. Olet menossa alkaa tietyssä vaiheessa koodissa. Olet menossa päästä silmukan ehto if-- En know-- x on pienempi kuin yksi. Jos tämä on totta, olet menossa suorittaa silmukan runko. Ja aiot pitää tehdä että jälleen, uudestaan, uudestaan, yli ja over-- minkä vuoksi se on loop-- kunnes tilasi muuttuu vääriä. Joten tällä tavalla, kun taas silmukka on yksi yksinkertaisempia tapoja kirjoittaa minkäänlaista edellytyksellä, että tarvitsee toistaa uudestaan ​​ja uudestaan ​​ja uudestaan. Vain olla varovainen, kun olet kirjallisesti minkäänlaista silmukan että sinulla poistua kunnossa sekä päivitys mitä se on niin, että silmukka ei ole vain ajaa yli ja yli äärettömän. Joka tapauksessa, olet menossa haluavat varmistaa että muutat jostakin koodi tai lopussa silmukan vain varmista, että sinulla on tapa etenemään kohti kunto että haluat tavata loppuun. Tarkoittaako tämä järkevää kaikille? Emme vain halua olla kiinni tässä kierre missä menemme ympäri ja ympäri ja ei ole keino murtaa silmukka. Ja jokainen silmukka olennaisesti on tapa tehdä se. OK. Toiseksi, monet teistä teidän Mario psets oli luultavasti palkata Tämän tyyppinen silmukan. Sitä kutsutaan tehdä, kun silmukka. Ensinnäkin, voi joku kertoa minulle mitä eroa tee kun taas silmukka ja kun silmukka on? Joo. Yleisö: do while-silmukka kulkee aluksi [kuultavissa]. ANDI Peng: Joo, täsmälleen. Niin tehdä, kun silmukka aina tekee kaiken on sisällä do sisällä suluissa siellä ja tekee sen kunto ennen tarkistaa the-- pahoillani, tekee sen koodin ennen tarkistamalla kunnossa. Ja tämä on erityisen tärkeää meille täällä tässä luokassa, koska useimmat kertaa aiomme haluavat kysymään käyttäjä jonkinlaista tulon. Ja sitten, riippuen panos ne antavat meille, voimme arvioida, oh, do meidän täytyy pyytää niitä uudelleen? Joten Mario, jos käyttäjä antoi sinulle negatiivinen korkeus, esimerkiksi, aiot ensimmäinen nopea ja tehdä mitä on sisällä. Sitten aiot tarkistaa samalla. Tiedäthän, on negatiivinen 1, on, että positiivinen luku? Jos se ei ole, aion mennä takaisin ja toista tee ja toista ja toista ja toista, kunnes ne lopulta antaa sinulle useita että pidät, että voimme kaikki käyttää meidän koodi. Se on aika tärkeää olennaisesti käyttäjän toimia. Voin taata sinulle mitään aika PSET jossa pyydämme sinua antamaan minkäänlaista koodia, olemme luultavasti aio antaa sinulle testi tapaus, jossa olemme annan sinulle jotain pahaa, joka on yrittävät murtaa koodi. Jos yritämme pyytää sinua antamaan kokonaisluku, voimme vain antaa sinulle merkkijono ja miten voit käsitellä sitä. Jos pyydämme sinua palkata ikä, voimme antaa sinulle negatiivinen luku miten voit käsitellä sitä. Varmista vain kaverit ovat testaus joissa et saa paras tulo, Sanotaan vain. Ja tehdä, kun silmukka on Usein paras tapa suunnitella koodin siten että se täyttää että soveltamisalaa. OK. OK. Joten tämä on luultavasti monimutkainen silmukka kolmesta että teimme toistaiseksi. Ja se näyttää erittäin pelottavalta aluksi. Mutta Takaan, kun te tajuta miten käyttää silmukka, se on yksi kaikkein hyödyllisiä asioita, eniten hyödyllisiä työkaluja arsenaali etenemiselle tässä luokassa. Niinpä esimerkiksi, Scratch, meillä oli hyvin yksinkertainen lohko että juuri sanoi toista tämä tietty lausekkeet tietyn määrän kertoja. Muuten, SAJ-- se Scaz Andi Jason. Me Usein allekirjoita sähköposteja SAJ. Jos sanomme SAJ, älä pidä sekoittaa. Se on vain meille. Joten Scratch, pystyimme olla lohko, joka sanoi, toista rakastan SAJ! 10 kertaa. Hyvin yksinkertainen. Logiikka, että on hyvin, hyvin yksinkertainen, eikö? Haluan ensin mennä läpi ensimmäisen aika ja nähdä, että, toisen kerran ja nähdä, että kolmas kerta, niin edelleen ja niin edelleen, kunnes osut 10. Ja miten me edustaisi että koodi on vain läpi yksinkertainen silmukka. Joten, olet menossa julistaa muuttuja täällä, tässä tapauksessa, kanssa int. Aiomme name it i. Aiomme alustaa sen 0. Ja pysähtyminen painos on olemaan i on pienempi kuin 10. Ja päivitys tulee olemaan i ++. Ja sisällä silmukan, se tulee suorittaa kunnes lopulta se osuu loppuun condition-- jossa tapauksessa se tulee murtaa silmukan. Siellä pitäisi olla juttuja, että olet kaverit ovat kaikenlaisia ​​ennen nähnyt ja piti tehdä ongelman asettaa yhden. Onko kellään mitään kysyttävää koskevat silmukoita juuri nyt? OK. Suuri. OK. Joten ne teistä, jotka ovat Lue PSET spec tällä viikolla tiedämme, että olemme menossa on palkata jotain kutsutaan ASCII ja ASCII pöytä. Daavid luennossa meni lyhyesti kuinka tietokoneet essentially-- kaikki on koodattu tietokone binary, vuonna nollia ja ykkösiä. Ja siten, että tietokoneet pystyvät tallentaa eri arvoja lisäksi että nollia ja ykkösiä ovat kautta kartoitus näitä numeroita edustaa muita numeroa tai olennaisesti muita merkkejä. Joten tässä tapauksessa, ASCII table-- kaikki se on kartta merkkiä, tai merkkiä, numeroihin. Joten lähdekoodin tiedosto sinun computer-- se näkee, hei, joukko nollia ja ykkösiä, nollia ja ykkösiä, nollia ja ykkösiä. Sitähän tallennettu todellinen muisti tietokoneen. Mutta kun me ihmiset haluamme kommunikoida tietokone, me want-- sanoa esimerkiksi, jos haluan isoja, Aion pitää jollakin tavalla kertoa tietokoneen, OH, kun kirjoitan isoja, tarkoitan edustus binary. Ja niin tapa teemme joka heitti mielivaltainen asia sanottu ASCII pöytä, jossa me, ihmisinä, kuin ohjelmoijat, jokin aika sitten, me mielivaltaisesti päättänyt, että me aikoivat siirtää nämä numero arvot nämä merkit. Joten te voi google tätä verkossa. Mielestäni siellä on linkki siihen teidän pset-- vain ASCII kartta pöytä, ASCII pöytä. Se vain kääntää binary numeroita merkkiä. Ja se tulee olemaan hyvin hyödyllinen ongelman asettaa kun haluat laskea mitään tai jos haluat näyttää tietyt merkkiä tai kokonaislukuja tai manipuloida tiettyjä merkkejä. Se tulee olemaan hyvin tärkeää, että kaikki osaa navigoida ASCII taulukossa. Niinpä esimerkiksi, isot edustaa numero 65. Ja pieniä edustaa 97. Joten on tärkeää tietää, että ero kahden arvon on 32. Usein jos haluat muuntaa toisiinsa, ero on 32. Ja älä huoli, jos olet ystävällinen sekava tätä aluksi. Menemme yli kuinka olisimme käyttävät tätä todellisessa koodi. OK. Joten ne teistä läppäreissä ulos, rohkeasti vetää ASCII-taulukko, koska nämä luultavasti vaatia te viittaus mitä hahmot ovat. OK. Tietäen että tietyt merkkiä kartta tiettyihin numeroihin, jos olisin ajaa vain ensimmäinen rivi että code-- printf, pieniksi, miinus isoja A. Onko kukaan on arvata, mikä olisi tulostamisen näytön juuri nyt? Joten ensinnäkin, mitä pieniä edustaa? Mikä numero on, että koodattu ASCII taulukossa. Anteeksi? Yleisö: 97? ANDI Peng: 97, suuri. Ja mikä on isoja? Yleisö: 65. ANDI Peng: Mitä on 97 miinus 65? Yleisö: 32. ANDI Peng: OK. Mitä te olette mieltä aikoo tapahtuu kun panos Koodirivin minun tietokone? Yleisö: [äänetön]. ANDI Peng: Anteeksi, puhua. Ei huolia. Tämä on erittäin turvallinen ympäristö, miinus kamera. Me kaikki menossa to-- ei hätää. Vain olemme kaikki menossa teeskennellä kuten se vain meille jäähdyttäminen tässä huoneessa. Ei huolia. Ei kysymys on liian tyhmä. Ei vastausta on tyhmä vastaus. Olen luultavasti tehdä virheitä aikana minun opetus. Vakavasti, kaverit, vain suustaan ​​ulos. Luottaa itseesi, tiedäthän? Mitä se oli? Kuka sanoi, että viime vastaus? OK. Huutaa, että kaunis ja selkeä. Yleisö: 32? ANDI Peng: 32. OK, nyt suorittaa tämän koodin ja onko se, mitä tapahtuu. OK. Niin te voi sellaista nähdä, tyypillinen merkintä olen perustettu täällä miten me työllistäisi minkäänlaista ohjelmaa meidän tietokone. Meillä päätehtävä meidän päätehtävä. Olen juuri menossa kopioida ja liitä tämä rivi koodia. Myös olla varovainen, kun te kopioit ja liität koodin. Joskus tietyille toimijoille älä liitä yli oikein. Tällöin miinus merkki oli todella viiva. Ja niin tietokone ei noutaa. Joten minun piti mennä takaisin ja fyysisesti kirjoita se. Vain olla varovainen, kun te teette niin. OK. Me aiomme ajaa täällä. Joten aiomme cd meidän section2. Minä olen kutsunut tätä ohjelmaa asciimath. Joten muistakaa, kun otamme mitään ohjelma, haluamme ensin kääntää se ajamalla sen kautta tehdä. Ja sitten me haluamme todella ajaa ohjelma tekemällä piste-slash. Joten aiomme ./asciimath. Oikea, siellä mennään. Ja näemme 32. Hyvin tehty. Ansaitset karamelli. Candy sinulle. Anteeksi. Selvä. OK. Joten voimme mennä takaisin meidän esimerkki tästä. Aah, ei. Aah. OK. Aion pitää sen niin. OK. OK. Niin te voi nähdä, voimme tehdä paljon erittäin mielenkiintoisia asioita, paljon erittäin hienoja asioita, paljon erittäin monimutkaisia ​​asioita, joihin liittyy ASCII-merkkejä ja numeroita. Kun saat alas linja viisi, että on paljon seurata mukana. Emme aio mennä osan läpi. Voit vapaasti, jos voit, Perustelu paperille ensin mitä pitäisi tapahtua, kun syötät tällainen merkkijono arvoja. Esimerkiksi että viimeinen rivi, meillä on z-- joka edustaa tiettyä number-- a-- mikä on myös tietyt number-- plus 1 modulos 26 plus pieniksi. Jos te pitää käsittelyssä läpi nämä, sinun voi nähdä kuvio keksiä miten me manipuloimalla koodi. Olen erittäin, erittäin ehdottaa jakson jälkeen kaikille teille kaverit mennä eteenpäin ja panos ne kaikki tietokoneen ja nähdä millaisia numerot ovat tulossa ulos ja perustelut kautta miksi ne ovat tapahtuu, koska teidän psets se tulee olemaan todella tärkeä sinua ymmärtämään miksi tietyt asiat tapahtuvat. Kaikki nämä dioja on verkossa. Joten ei huolestuta yrittää fyysisesti kopioida muistiinpanoja. Kaikki on verkossa. Tässä osassa itsessään on verkossa. Kaikki minun lähdekoodi, joka Olen käynnissä on verkossa. Joo. Oliko sinulla on vielä kysymys? Yleisö: Mikä on modulos? ANDI Peng: OK. Joten modulo on toimija, joka tulee melko tärkeää, että teidän kaverit n PSET täällä. Niin että toimijat C ja ohjelmatyön on, että sinulla on mitä kutsutaan jako symboli ja moduuli symboli, joka on aivan kuten prosentin merkki. Joten C, kun teet kokonaisluku jaettuna kokonaisluku kauttaviivalla, C on taipumus haluta leikata pois kaikki desimaalin pistettä, koska kokonaisluku haluaa muuntaa kokonaisluvun. Se ei tule halua olla kaksinkertainen kanssa joukko desimaalien kaiken sen jälkeen. Joten jos en 3 jaettuna 2, se on menossa katkaista 0,5 ja vain antaa sinulle 1. Niin, että on jotain olla hyvin varovainen, kun olet teet minkäänlaista matematiikka ohjelmoinnissa, on että numerot saat voi olla numeroita että olit ajatellut, minkä vuoksi pyöristys teidän viime PSET on niin tärkeä. Modulo antaa sinulle loput. Niinpä esimerkiksi, jos tein 3 modulo 2-- joten 3 prosenttia merkki 2-- se antaa sinulle loput että. Joten 3 jaettuna 2 on 1.5. Se on 1 jäljellä 1. Se antaa sinulle 1, joka on jäljellä, että. Joten kun kaverit ovat siirtymässä kautta ASCII taulukon modulo on lopulta jotain, joka on hyvin tärkeä, ja kerromme mielellämme että myöhemmin. OK. Joten jotain, joka on kaunis, melko uusi ja melko ainutlaatuinen että olemme keskustelleet tällä viikolla käsite mitä array on. Joten array on ensimmäinen tyyppi tietorakenne että aiomme kohtaavat tässä luokassa. Kaikki tiedot rakenne on jonkinlainen mielivaltainen, kirjaimellisesti asioita, kuten rakenne että me ohjelmoijat luoneet, että olemme laittaa meidän koodi, joka voi sisältää muita koodiksi. Joten tässä mielessä, array-- ajattele sitä arkistokaappi, jossa jos avaat eri hyllyt oman arkistokaappi, voit käyttää eri asioita. Muistiin array on juuri tekemässä sama asia tietokoneellesi. Voit olla eri blocks-- me soittaa heille indices-- array. Se on aivan kuten lohko, hylly muistia että olemme luoneet omassa tietokone että voit syöttää tiettyjä asioita erilaisissa tiloissa. Joten array, voit aina specify-- sinun on määritettävä julistamisesta array seuraavassa muodossa. Olet menossa ensimmäiseen määritä tietotyyppi että haluat luoda array. Jos haluan joukko kokonaislukuja, Olen menossa laittaa int oikeassa. Jos haluan joukko jouset, Aion laittaa jouset siellä, nimi array, ja sitten olet menossa on hakasuluissa. Ja sisällä hakasulkeissa, olet menossa on kokoa array. Jotain, joka on todella tärkeää pitää mielessä, kun luodaan paneelit on että kun luot array, että koko ei voi muuttaa. Joten jos tiedät, että juuri nyt sinulla on joukko koko 10, te tiedätte, että aion olla 10 solua sisällä tai 10 indeksejä tämän taulukon, ja se ei ikinä laajentaa tai vähentää mitä, ja että on olemassa tällä hetkellä vain 10 korttelin tilaa jaetaan muistin, johon voi tallentaa jopa 10 asioita mitä olet laittaa. Joten tällä tavalla, joukko datatyypin, tietorakenne joka on array on hyvin erilainen kuin toiset me will käsittelen myöhemmin tällä kurssilla. Joo. Esimerkiksi, jos halusi luoda taulukon koko 3 että sisälsi muuttujat integer-- Anteeksi, on temperature-- ja lämpötila, sekä Tietenkin on kokonaisluku. Joten me loisi int, joka on tietotyyppi mitä haluamme säilyttää. Aiomme kutsua tätä lämpötilat vuoksi nimikkeistön nimeäminen jotain, että me kaikki ymmärrämme. Ja me aiomme olla hakasuluissa. Ja haluamme kolme numeroa. Joten aiomme laittaa kolme sen sisälle. Jotain, joka on todella tärkeää pitää mielessä on, että taulukot ovat nolla indeksoitu. Kaikki tämä tarkoittaa, että voit aloittaa indeksi 0, ja suoritat läpi taulukon koko miinus 1. Niinpä esimerkiksi täällä, me on taulukon koko 3. Se tulee pystyä pitää kolme arvoa. Mutta numerot themselves--, että numero, array, että indeksi, array, ovat 0 kautta 2. Joten kaverit, todella, todella varovainen käytte läpi ongelmia asettaa ja luoda minkäänlaista array, koska paljon kertaa se on todella, todella helppo unohtaa. Olen itse ei ole indeksi 3, että olen tällä hetkellä vain on indeksi 2. Ja jos yrität pääsy kolmas indeksi, se tulee olemaan mitä nimeltään null terminaattori. Se ei aio itse olemassa jono. Ja tietokone on aio pidä siitä. Joten ole varovainen, kun käytätkö asiat vain varmistaa, että muistat että taulukot ovat nolla-indeksoitu. OK. Joten ensimmäinen esimerkki on vain yksi tapa luoda array. Toinen esimerkki Minulla Alla on vain erillinen tapa luoda mikä on samat tiedot rakenne että olemme juuri syötetty. Joten sen sijaan fyysisesti käynnissä kautta ja ottamalla lämpötilassa 0 vastaa mitä tahansa, lämpötila 1 vastaa mitä tahansa, lämpötila 2 tuloksena mitä, voisin oikeastaan ​​vain suoraan luoda se kaikki yhdellä rivillä osaksi lämpötila hakasulkeita tasavertaisina. Ja huomaa, että tässä tapauksessa, et tarvitse Määritä kuinka suuri joukko on, koska tietokone tulee läpi ja nähdä, että siellä on kolme elementtiä näiden aaltosulkeita. Ja se tulee tietää, OK, Tarvitsen taulukon koko 3. Et aio tarvitse tulo se seuraavalla tavalla. Ja myös, joo, näin. Onko kellään kysymyksiä siitä, miten teemme taulukot tai miten rakenne array toimii? Joo. Yleisö: [äänetön]? ANDI Peng: Joo, täsmälleen. Joten jos olisit julistaa ja alustaa array seuraavaa menetelmää, joka on toinen tapa, voit jättää ne. Ja tietokone automaattisesti tietää, että se on laskea kuinka monta elementtiä ovat näissä aaltosulkeita, erotettu pilkuilla. Joten tässä he näkevät 65, 87, 30. Niin tietokone tietää, OH, siellä on kolme kokonaislukuja. Tiedän luoda array nimi lämpötilan kolme elementtiä se. Hyvä kysymys. Joo. Yleisö: Eikö ole mahdollista luoda joukko eri tyyppisiä tietoja että voitaisiin ottaa se? Esimerkiksi kokonaisluvuilla [äänetön]? ANDI Peng: tarkoitetaan Tämän luokan, ei juuri nyt. Kun luot data jäsentää kuten array, kerrot tietokone, hei, tarvitsen sinua jakaa näin paljon muistia minun kovalevy, jossa kukin kammio on tietty määrä bittejä. Muistakaa, että olemme oppineet viikolla nolla että eri tiedot tyypit ovat erikokoisia? Niinpä esimerkiksi, merkkijono on eri summan tilaa kuin char, joka on eri määrä tilaa alkaen kokonaisluku. Joten jos et määritä ja sinua mix and match millaisia ​​muuttujia sinulla on, tietokoneen tulee hyvin sekava. Ja se ei tule tietää kuinka paljon muistia antaa sinulle. Joten varten oikeus nyt, tietokoneet voivat vain tunnustaa yhdenlaista jono. Hyvä kysymys. OK. Joten luonnollisesti, Toinen kysymys meillä on, hyvin, nyt, että olemme luoneet array ja olemme laittaa kaikki nämä asiat array, kuinka olemme menossa voi käyttää sitä? Joten tyypillinen rakenne että me aina pääsyn matriisi on meidän ihana silmukka. Lupaan teille kaverit, että tulemme nähdä paljon tämä mies täällä. Pohjimmiltaan, milloin haluat syöttää arvot taulukkoon tai haluat käyttää niitä, Paras tapa tehdä se on silmukka, koska silmukka, sinulle tiedä kuinka monta kertaa olet menossa haluavat ajaa läpi array, koska sinulla on pysäkki painos, eikö? Ja aina käyttää kautta, voit käyttää eri alkiota. Ja myös, tämä on syy, miksi tyypillisesti aloitamme varten silmukoita 0 arvoon, koska kun käytät paneelit, voit käyttää nolla indeksi. Ja niin se yhtäläisyyksiä erittäin hienosti. Olette ehkä halunnut kirjoittaa int i on 1. i on pienempi tai yhtä suuri kuin 3. Mutta se ei toimi aivan yhtä hyvin täällä, koska sinulla on vain on elementtejä 0, 1, ja 2. Ja niin jos olit aloittaa Näin i elementistä 1, 2, ja 3, aiot päätyä käynnissä ulos pelikentältä oman array, ja huonoja asioita tapahtuu. Joten toivon te nähdä segue miksi aikaisemmissa luokissa me opettivat teitä miten ajaa ja alustaa silmukan tavalla olimme. Se johtuu, nyt olemme siirtynyt osaksi paneelit, voit nähdä, miksi 0 se lainaa itse hienosti saatavuudelle. Joten miten teemme, että on that-- olen vain tulostaa sen täällä vuoksi tulostus sitä. Mutta minulla on paikkamerkki, pilkku. Ja todellinen sisäänpääsyä osa tapahtuu. Nimi array kutsuttiin lämpötila. Joten se on lämpötila ja i: nnen taulukon alkiota. Niin silmukka kulkee, se tulee alkavat 0. Se tulee tulostaa 0th indeksi tämän taulukon. Sitten se tulee tulostaa ulos ensimmäinen elementti. Sitten se tulee tulostaa pois toinen. Ja sitten me aiomme rikkoa. Onko kaikki selvää miten se tapahtuu? Suuri. Selvä. Joten tässä meillä on tapa sanomalla, jos emme halunneet vaikeasti koodi in-- minulle ohjelmoija. En halua todella fyysisesti laittaa jokaisen yksittäisen elementin tämän taulukon. Jos halusin sijaan on käyttäjä syöttää arvot, mikä on paras tapa tehdä se? No, tässä olen luonut tämä ihana toiminto, jossa voin julistaa array. Joten int scores-- nyt vain sanoa haluamme tehdä array, joka järjestetään laadut kaikkien 18 opiskelijoista täällä tässä osassa. Mielestäni meillä vähän yli 18 lasten tänään. Mutta esimerkiksi tähden, Haluan vain olettaa meillä oli 18. Haluaisin luoda array nimi tuloksiasi int, koska tulokset, tietenkin, ovat numeroita. Ja aion olla 18 hakasulkeissa, koska niin monet opiskelijat I haluavat pystyä tallentamaan tulokset. Ja miten olin asuttaa array on, että olisin ajaa se läpi silmukka, ja Tietenkin, jossa 0 on minun 0th indeksi. Ja sitten 18 on minun pysähtymättä painos, koska siellä 18 elementtejä jono. Ja sitten aion tehdä printf, Anna pääsi student-- yada Yada Yada. Voiko joku kertoa minulle, miksi tässä olen tulostus i plus 1 ja en? Se on eräänlainen temppu kysymys, ei oikeastaan. Se ei varsinaisesti fyysisesti vaikuttaa käynnissä koodin. Joo. Yleisö: [äänetön] 0? ANDI Peng: Joo, täsmälleen. Se on vähän hankala sanoa, hei, olet 0. opiskelija tässä luokassa. Se on vähän outo. Joten meille, ihmisinä, oikein pidä ajatella, kuinka tietokoneet ajatella. Joten vaikka tietokone, se on tallentamalla arvot in 0-th indeksi, kun olemme ihmiset, emme oikeastaan Viittaan itsemme nolla. Joten kun olen vain tulostaa että, Aion tulostaa ja lisätä 1 vain selvyyden vuoksi. Joten kun tulostan, aion olla voi tulostaa opiskelijat 1 kautta 18. Se ei oikeastaan ​​vaikuta käynnissä koodi millään tavalla, miten voin tulostaa. Mutta ole varovainen, kun olet todella päästä jono. Kun näet tulokset I, huomaa täällä Olen oikeastaan päästä 0th indeksi ja ei 1 plus 0-- tai 1 plus 1, tässä tapauksessa indeksi niin että se on todella selvä. On jokainen sellainen OK miten tämä on käynnissä kautta ja jokaisen indeksi olen laskemisesta arvo array ja luoda array 18 numeroa että käyttäjä on menossa panos? OK. Viileä. OK. Siirrymme nyt jotain, ihan merkitystä tämän osainen sarja samoin. Tiedän luento, David-- pahoillani, sinulla oli kysymys? Yleisö: Voitko suurentaa sen? ANDI Peng: Joo, niin olen yrittänyt. Mutta en tiedä. Jostain syystä tämä versio PowerPointin ei todellakaan ei toimi hyvin näytön. Joten me vain menossa pitää sen näin. Kaikki nämä ladataan verkosta. Anteeksi, kaverit. Joo. OK. Jotta voimme myös olla jouset. Joten jos te todella notice-- I tietää Rob meni tänä vuonna että luento että hän did-- merkkijono on todella vain joukko merkkejä, jos ajattelee sitä, eikö? Merkkijono on nimi tai lause tai sana, eikö? Jos olisin luoda merkkijono nimeltä Andi-- vain nimeni,-N-D-I. Luuletko, että vain yksi muuttuja. Mutta todellisuudessa, se on eriteltynä osaksi vain joukko merkkiä. Joten se sai luonnetta talletettu taulukkoon arvo. Se sai luonnetta n tallennettu Toinen indeksi ja niin edelleen ja niin edelleen. Joten siten, me todella on tällainen rakenteen asetettu paikka meidän jousille. Joten tässä, jos olisin syöttää sana "syö" - niin merkkijono sana vastaa saada merkkijono. Jos minun pitäisi syöttää sanan "syödä", että on fyysisesti niin, että minun tietokone on tallentamiseen että merkkijono mieleeni. Ja jos halusin juosta läpi ja tulostaa että out-- niin osaksi i on nolla, muista, luento, me peitetty jotain kutsutaan strlen, tai merkkijonon pituus. Koska en itse tietää kuinka suuri joukko on riippumatta käyttäjän inputting-- Esimerkiksi minä syötetään sana "syö", ja tiedän se on kolme merkkiä, eikö? Niin voisin laittaa kolme siellä ja kaikki on hyvin. Mutta jos käyttäjä syöttää jotain se on eri määrä arvoja, olet menossa ei voi todella tietää, että kun ohjelmoida koodin. Niin että hoidamme testitapauksia kuin että on, että meillä on jotain nimeltään strlen, joka on vain funktio joka kertoo, kuinka kauan merkkijono on. Joten strlen sanan. Sanani on syödä. n on strlen sanan. Voiko joku kertoa minulle, mitä se arvo todella on oikeassa? Mitä n edustavat oikea nyt, tässä esimerkissä, jos olisin syödä? Yleisö: 3. ANDI Peng: 3, tarkalleen. Joten meillä on int i vastaa nolla, n on 3, olennaisesti. Ja i on menossa ajaa kunnes se on alle 3i ++. Ja se tulee olennaisesti mennä läpi ja tehdä sama asia. Se tulee tulostaa jokainen arvo ja antaa sinulle E--T. Se on vain ilmaiseva eri tapa kirjoittaa se. Tämä tulee olemaan erittäin hyödyllistä. Joo. Yleisö: Mikä edut laskemisesta n on strlen sanan sisällä että silmukan [äänetön]? ANDI Peng: Joo. Joten jos olisin to-- sanoa, esimerkiksi, jos tekisin niin ja sitten do-- oop--, että minun koodi, se todella tekee kuin sama asia. Kuitenkin, että David selitti se aikana luento, jos joku teistä kaverit muistaa, oli että, kuten ihmiset, kuten ohjelmoijat, me todella yrittää ohjelmoida meidän koodi niin, että tietokone on työskennellä mahdollisimman pieni, niin että koodi on hyvin tehokas. Joten jos minulla oli, että siellä, mitä tapahtuisi läpi minun silmukka on että olin ensin ilmoitettava muuttuja nimeltä i tulee olemaan 0. Aion tarkistaa, OH, mikä on strlen sanan? Voi, strlen on 3. Joten on i alle kolme? Kyllä se on. Aion ajaa. Ja sitten toisen kerran takaisin noin silmukka, aion kasvattaa i. i tulee olemaan yksi. Ja i on menossa tarkistaa, OH, mutta mitä strlen sanan? Voi, se on kolme. Ja ei, jotka näyttävät sellainen tuhlausta, aina käyttää silmukan läpi, on tarkkailun toiminnon vaikka strlen sanan ei koskaan todella muuttuu? Joten se lisätehoa tietokonetta. Kun alkaa puhua asioista jotka ovat miljardeja ja miljardeja ja miljardeja paikkoja pitkä, kuvitella tietokoneesi ottaa fyysisesti käydä läpi ja katso kaikki tuon joka kerta. Siksi, tehdä vain vuoksi tehokkuuden, meillä on tapana vain tehdä tämän, koska tällä tavalla olemme vain kutsut funktiota kerran alussa, ja että joka kerta se menee läpi se menee Tallenna arvo 3 siellä, että et täytyy jatkuvasti tarkistaa joka kerta. Joo. Yleisö: Anteeksi. Vain [äänetön]. Voisitteko tehdä int n on strlen ja laittaa että edellä ulkopuolella silmukan yhtä hyvin? ANDI Peng: Joo. Voisit tehdä, ehdottomasti. Siksi meidän on se tässä koska tie silmukka töitä on, että sitä kutsutaan paikallinen muuttuja siinä mielessä että kaikki olet luo sisällä silmukan on olemassa vain sisällä varten silmukan. Joten muuttujaa i vain olemassa näissä suluissa. Ja tässä muuttujat n myös on olemassa vain niissä suluissa. Joten jos olisit käyttää strlen of sana useita kertoja alas alla, ehdottomasti paras tapa tehdä se olisi julistaa sen alkuun joten sinun ei tarvitse tehdä sitä kerran. Joo. Yleisö: Miksi teillä on uudelle viivalle prosenttia nähdä, jos haluat laittaa kaikki kirjeet sen vieressä erottaa? ANDI Peng: Oh, halusin tulostaa ne kaikki pituinen. Sillä ei ole väliä. Joo, se on muotoilu. Se on hyvä kysymys, mutta. Joo, jos halusin tulostaa se kaikki vain yhdellä rivillä, Minulla ei olisi Dash. OK. Jokainen hyvä? OK. Viileä. Joten mielestäni olen puhunut tarpeeksi. Te vuoro käydä läpi koodi ja kerro mitä on pielessä. Missä vika? Joten kuten näette, olen julistanut uusi joukko tyyppiä string nimeltä luokka. Ja olen syötetty Sam, Jess, ja Kim siihen. Ja olen yrittänyt tulostaa kaikki taulukon alkiot. Voiko joku kertoa minulle, miksi tämä aikoo antaa minulle ongelmia? Annan te 10 sekuntia ajatella tätä. OK. Joo? Yleisö: Onko vasen keskus yhtä suuri kuin 3 tai [äänetön]? ANDI Peng: Oikea. Niin kuinka monta kertaa tämä todella menossa läpi tämän silmukan? Yleisö: Neljä. ANDI Peng: Aivan. Se tulee läpi neljä kertaa. Se tulee käydä läpi 0, 1, 2, ja 3, koska niiden elementti on i on pienempi tai yhtä suuri kuin 3. Se ei aio lopettaa, kun se on 2. Se tulee säilyttää käynnissä kunnes se osuu 3. Ja kuten tiedämme, on vain kolme elementit meidän todellinen array. Jos yritämme päästä neljänteen elementti tai indeksi 3, aiot lyödä jonnekin muisti, johon ei ole olemassa. Sitä kutsutaan null terminaattori. Mikään tulee olemaan siellä. Tietokoneessa ei aio erittäin onnellinen kanssasi. Joo. Onko kellään kysymyksiä miksi se oli tapahtumassa? Se on yhteinen alue välttämiseksi. Joo. Yleisö: Eikö ensimmäinen slide on myös merkkijono 2? ANDI Peng: Ei. Joten olennaisesti, kun teet array, että kiinnike oikea siellä, että number-- kaikki se kertoo sinulle, miten monia elementtejä olen. Se ei ole oikeastaan ​​kertoo minulle indeksit mitään. Joten tässä tapauksessa, tiedän haluan kirjoittamaan kolme paikkaa, kolme fyysinen paikkoja Pidä mitä haluan pitää. Joten siksi numero kolme on siellä. Kuitenkin, jos halusin todella käyttää sitä, jos halusin sanoa, printf luokka kiinnike numero, sitten aiot tosiasiallisesti fyysinen indeksi siellä. Joo, hyvä kysymys. Yleisö: Niin on fyysinen indeksi pitäisi olla [äänetön]? ANDI Peng: Olen pahoillani. Voitko puhua vähän? Yleisö: Niin on fyysinen indeksi [Äänetön] kunkin laatikot? [Äänetön]? ANDI Peng: Joo. Joten aion palata täällä. Ajattele täällä. Meillä on joukko koko 3. On kolme paikkaa, kuten, fyysinen paikanvaraajia täällä. Mutta he nimeltään 0, 1, ja 2. Joten jos halusin käyttää niitä, että minä käyttää niitä on printf riippumatta halusin tänne. Sinulla olisi tulostaa pois sen nimen, koska silloin tietokone tietää, oh, minun täytyy katsoa tässä matriisia 0th indeksin. Joo. Mutta koko se ei muutu. Koko on 3, riippumatta miten voit merkitä ne. OK. Jokainen hyvä? Yleisö: Joten joka kerta kun [äänetön]? ANDI Peng: OK. Joten tässä tapauksessa, emme oikeastaan mennä sen nyt aikana. Mutta tiedän, että string-- kuin olisin sanoi ennen, merkkijono on olennaisesti joukko merkkiä. Joten jos Luon array jouset, olen sellainen on joukko array merkkien, eikö? Joten tässä tapauksessa, koska olen on joukko jouset, jos olit syöttää todella pitkä sana, että vielä vie vain yhtä tilaa, koska se on yksi merkkijono. Mutta jos olit ajatella merkkiä, joka array, niin se aloittamisesta paljon enemmän merkkiä kuin mikä tahansa Toisin sanoen ovat. Ei todella tärkeää juuri nyt. Mutta se on vain yleisesti miten se toimii. OK. Joten tämä on jotain annan sinun tehdä paljon aikana lukukauden. Minun täytyy levätä ääneni. Te täytyy edistää itseänne. Monet teistä luultavasti täytyy nukkua nyt. Olen syöttäminen satunnainen ongelmia jossa luokkana tai olet kumppanin kanssa vieressä aiot viettää pari minuuttia keskustella kuinka voisimme edetä ratkaista tai luoda ohjelma, kuten tämä. Joten nyt, haluamme luoda program-- aiomme kutsua sitä upper.c-- joka muuntaa pieniä sanan yläluokan string-- isoja, sorry. Sana jouset, anteeksi, on synonyymi. Aion muuttaa niitä tarkoittavan samaa asiaa. Joo. Kestää muutaman minuutin. Sen ei tarvitse olla kirjoitettu millä tahansa kielellä. Vain pseudokoodilla koodi tai loogisesti kuinka olisimme edes edetä tee tällaista ongelmaa. Joo. [SIDE CONVERSATION] Olen myös huomannut, että te can-- Olen sellainen nähdä jo ohjelman. Luulen puute juontaja tila on ongelma. Mutta se on OK. [SIDE CONVERSATION] Joo, kiitos, kaverit. Tule saada karkkia. Tule saada karkkia. Yleisö: Kyllä! [SIDE CONVERSATION] ANDI Peng: Myös joo, Aloitan heittää karkkia ihmisiä, jotka eivät vastaa kysymyksiin. Joten kannattaa kaikki vastauksen kysymyksiin. Tai kai ihmiset do kysymyksiin. Joo, päinvastoin. [SIDE CONVERSATION] Yleisö: [äänetön] ANDI Peng: Joo. Joo. [SIDE CONVERSATION] Selvä, kaverit. Ota, kuten 10 sekuntia. [SIDE CONVERSATION] OK, kaverit. Joten ennen kuin alkaa yrittää todella fyysisesti kirjoittaa koodia, hyvä tapa kehittää on, että haluamme ensin sellainen syy out loogisesti miten me tekisimme sen. Haluat varmistaa, ennen kuin fyysisesti alkaa yrittää koodata Mario, että teet Varmista, että sinulla on pseudokoodilla. Joka vie sinut läpi mitä sinun täytyy luoda niin että, kun fyysisesti kirjoita ohjelma myöhemmin, olet parempi saada kiinni virheitä koodissa ja tuollaista. Joten aiomme vain alkaa by-- Englanti, pseudokoodilla, ei kukaan halua antaa minulle yleinen selitys kuinka voisimme edetä tässä? Joo. Yleisö: [äänetön]. ANDI Peng: Toki, ei hätää. Yleisö: Voitko pyytää sitä tai pyytää joku saada merkkijono 1-- joo, merkkijono, ja sitten-- ANDI Peng: Kyllä, joten tämä on hyvä alku. Aloitan kirjoittaa, anteeksi, kun puhut. So-- Yleisö: --The pieniä numerot ovat korkeammat, eikö? Tai pienet kirjaimet on suuri määrä? ANDI Peng: Aivan. Yleisö: Niin me vähennä 32 mistä tahansa [kuultavissa]. ANDI Peng: Suuri. Joten meillä sellainen on yleinen tunne miten toimia tästä ongelmasta. Tietäen, että olemme tavallaan oppineet fyysinen että jouset tallennetaan muistiin, Mitä jo tietää, että olet menossa luultavasti täytyy kirjoittaa koodissa jotta liikkua merkkijono? Yleisö: For silmukka. ANDI Peng: silmukka, tarkalleen. Suuri. Joten meillä sellainen on yleinen pseudokoodilla kirjoitettu sellainen antaa sinä toteaa siitä, miten olisi liikkua ongelman ratkaisemiseksi. Nyt sinulla on tämä, te voi viitata sen myöhempää kun yrität todella kirjoittaa koodia. Jotta voimme todella mennä täällä. Ja minulla toiminto nimeltään upper.c-- siellä se is-- vain tyhjä arkki nyt, että te aiotte auttaa minua selvittää, miten kirjoittaa tätä linjaa code-- ei riviä koodia. Se tulee olemaan useita riviä koodia. Käynnistettäessä minkäänlaista tyhjä PSET, mitä ensimmäinen asia tarvitsen muistaa tehdä? Yleisö: [äänetön]. ANDI Peng: Suuri Jep. Sisällytä. stdio.h. Usein tämä on yksi useimmat helppo virheistä ihmiset tekee kun he kirjallisesti, on, että ne will unohda tärkeä kirjasto he tarvitsevat. Joten jos se on virka ja olet kuin, En tiedä, miksi minun koodi ei toimi. Voitteko kertoa minulle, miksi se ei toimi? Aiomme sanoa sinä # include? Sinun pitäisi #include sitä. OK. Joten meillä vakio I / O täällä. Onko se vain kirjasto olemme menossa on täällä? Mitä muuta me aiomme tehdä? Anteeksi. Joku vain huutaa se ulos? Yleisö: [äänetön]. ANDI Peng: Niin sitä pitää. OK. Ja miten voin mennä noin alkaa minkäänlaista toiminnon, minkäänlaista päätehtävä meidän ohjelma? Int main. OK. Mitä voin laittaa sisälle täällä? Mikä on ensimmäinen asia, jonka haluat tehdä? Jos haluamme saada merkkijonon käyttäjä, mitä aiomme olla tehdä tämän ensimmäisen rivin? Anteeksi, te vain tuntea vapaasti puhua ja ääneen. Vain huutaa riippumatta. Yleisö: Pyydä käyttäjää? ANDI Peng: Miten teemme sen? Ask-- olen menossa kirjoittaa "pyytää käyttäjää"? Yleisö: printf. ANDI Peng: OK. Printf. Mitä haluan printf? Yleisö: Kirjoita jotain. ANDI Peng: Näinkö? Kaverit, teeskennellä kuin olen tietokone. Fyysisesti kertoa minulle joka askeleella että minun täytyy kirjoittaa täällä? Olenko tehnyt jotain väärin? Pitäisikö minun kirjoittanut jotain? Yleisö: Tarvitset lainausmerkkejä. ANDI Peng: Tarvitsen lainausmerkit? OK. OK. Yleisö: Ja sitten uusi rivi. Puolipisteellä. ANDI Peng: Semicolon? OK. Hyvä. Yleisö: Ja ehkä määritä että haluat sen pienillä kirjaimilla? ANDI Peng: Suuri. Te nauravat minulle unohtamatta laittaa puolipiste. Takaan jonnekin aikana tämän luokan, et unohda laittaa puolipiste, ja se vie kolme tuntia selvittää miksi koodi ei toimi. Se on tapahtunut meille kaikille. Se luultavasti tapahtua sinulle. Saada hyvä tapa käyttää puolipistettä. OK. Yleisö: Haluatko tehdä kenoviiva sen? ANDI Peng: Toki. Haluatko tehdä kenoviiva sen? Yleisö: Kyllä. ANDI Peng: Suuri. OK. Mitä teen seuraavaksi? Yleisö: Get merkkijono. ANDI Peng: Get merkkijono. Joten mitä kirjoitan? Joku? Yleisö: String s. ANDI Peng: String s. Yleisö: GetString. ANDI Peng: Joku, voitteko kertoa minulle, missä tämä toiminto GetString on peräisin? Yleisö: string.h. ANDI Peng: string.h? Luuletko se on peräisin string.h? Yleisö: [äänetön]. ANDI Peng: Niin sitä pitää. Se on peräisin CS50.h. Jos olet aina sekava missä kirjasto tiedosto on tai header-tiedosto on, google kirjaimellisesti string.h, ja minä kerron sinulle mitkä ovat kaikki toiminnot jotka ovat string.h. OK. Joten nyt olen luonut merkkijono ja olen kysyy käyttäjältä siitä, Olen tallentanut sen muuttujaan nimeltään s, mitä minun täytyy tehdä nyt? Yleisö: Tarkista, jos sitä on pieniä. ANDI Peng: Anteeksi? Yleisö: Tarkista, jos sitä on pieniä. ANDI Peng: Hyvä on, tehdään se. Miten teen sen? Oikeastaan ​​varten luokan juuri nyt, olemme juuri menossa olettaa, että kaikki että me panos on jo pienillä kirjaimilla. Jos halusi tarkistaa, olisit vain lisätä ehdon että tarkastetaan, että juoksi läpi jokainen ryhmän elementin ja tarkastetaan, onko se välillä tiettyjä arvoja. Unohdan mitä numero arvojen pieniä ovat. Voit etsiä se ASCII-taulukon. Mutta joo, se on todella hyvä pointti. Mutta juuri nyt, olemme juuri menossa olettaa, että kaikki jouset me tulo ovat pienillä kirjaimilla. OK. Joten miten lähden siitä tämä ongelma seuraavaksi? Yleisö: For silmukka. ANDI Peng: For silmukka? OK. Kerro, mitä kirjoittaa. Yleisö: INT i on yhtä suuri kuin 0. ANDI Peng: OK. Yleisö: Voi, todella, niin voit do pilkku ja tehdä n on strlen. ANDI Peng: Niin tärkeintä mielestäni hän huomannut täällä on, että meillä ei ollut sanoa int n toisen kerran teimme tämän. Juuri tietää, että varten silmukka kun olet julistamisesta, te itse ei tarvitse INT toisen kerran teet muuttuja. Voit sanoa n strlen. Yleisö: s. ANDI Peng: s. OK. Yleisö: Sitten puolipiste. ANDI Peng: Toki. Yleisö: Ja sitten [kuultavissa] n. Sitten i ++. ANDI Peng: Suuri. Selvä. Mitä haluamme sisällä Tämän silmukan nyt? Muista, jos aiomme käydä läpi merkkijono ja ajaa läpi erilaisia, haluamme tarkistaa asioita se. Mitä me tarvitsemme? Tämä on tavallaan hankala osa nyt. Kellään arvaus? OK. Joten ensimmäinen, miten me jopa käyttää? Kuinka me edes ensimmäinen tarkastus tai pääsyn elementti array? Miten me sen teemme? Mikä merkintätapa käytämme tehdä näin? Mikä nimi tämän array nimeltään? Sitä kutsutaan s, eikö? Muista, mikä tahansa merkkijono on aina jono. Joten s kiinnike i, eikö? Koska se on käypä arvo tai indeksin arvo olemme tarkkailun. Ja aiomme asettaa yhdenvertainen to-- haluamme pieniä arvo, eikö? Haluamme kääntää että lower-- pahoillani, haluamme isoja. Haluamme kääntää pieniä arvo osaksi isoja. Ja niin like-- olen pahoillani, mikä on nimesi? Yleisö: Heidi. ANDI Peng: Anteeksi? Yleisö: Heidi. ANDI Peng: Heidi. Kuten Heidi sanoi aluksi, olemme luultavasti menossa on the-- olemme luultavasti menossa on vähentää 32 mistä tahansa charc että on, eikö? Koska on ASCII- pöytä, ero välillä pieni kirjain ja iso kirjain on 32. Joten kun teemme tämän, olemme luultavasti menossa haluavat vähentää 32, eikö? Joten aiomme tehdä s i. Onko jokainen ymmärtää, miksi tein sen? Koska juuri nyt, meidän array, Tarkistamme 0. indeksi, eikö? Ja 0. indeksi merkkijono, se on ensimmäinen merkki. Ja että merkki aiomme olettaa se on pieniä. Jos haluamme tehdä isoja, me on vähennettävä 32 sen arvosta, koska meidän ASCII pöytä, näin saamme sen seuraavaan vastaavaa arvoa, joka tekee isoja. Onko jokainen ymmärtää, että? Joo. Yleisö: Voisitko myös do pieniksi minus-- ANDI Peng: Joo, niin se on todella todella hyvä. Aion palata että kysymys jälkeen teemme tämän. Joo. Ja sitten jos haluan katso mitä tapahtuu, Olen luultavasti haluat tulostaa, eikö? Joku kertoa minulle, mitä Haluan tulostaa täällä. Yleisö: printf prosenttia C kenoviiva [kuultavissa]. Se arvo [äänetön] s i. ANDI Peng: s i, pahoillani? Yleisö: [äänetön]. ANDI Peng: En tiedä. Mitä mieltä olet? Yleisö: No, minä wouldn't-- Luulen En bring-- Haluan ottaa sen pois sisällä, koska [äänetön]. ANDI Peng: Oh, olisit tehnyt sen? Yleisö: Joo. ANDI Peng: Jätetään se tapa se on, ja selitän miksi myöhemmin. Muista, vaikka olisit on paikka haltija, haluat laittaa sulkeet ympärille. Selvä. Joten tämän pitäisi olla kiinteä funktio tässä. Katsotaanpa käyttää sitä ja katso jos se kokoaa. Tee ylempi. O-ou. Tämä ei näytä kovin hyvältä. Miksi näin tapahtuu? Kuten minkä tahansa virheen, haluat mennä takaisin ja aloittaa ensimmäinen, koska tyypillisesti yksi virhe syy paljon muita virheitä sen jälkeen. Tässä näemme upper.c: 18: 25, joka kertoo minua tässä ohjelmassa nimeltä upper.c, linjalla 18, virhe epäsuorasti julistamisesta kirjaston toimintoja strlen tyypin unassigned-- blaa, en tiedä mitä tapahtuu sen jälkeen. Kaikki se kertoo minulle juuri nyt että jotain on meneillään strlen. Ja tietokone on hämmentynyt, koska Se on kuin, en tiedä mitä strlen on? Mitä se luultavasti kertoa olet puuttuu? Yleisö: Menetät [kuultavissa]. ANDI Peng: Olet oikeassa. Aivan. Joten tämä on, jos se on tärkeää varmistaa, että jokainen toiminto käytät oman koodi on ottaa oikea otsikko tiedoston kirjastoon, tai muuten aiot saada paljon virheitä ja koodi ei aio tietää, mitä on tekeillä. Joten aiomme sisällyttää string.h täällä. Nyt kun yritämme kääntää ylempi. Koota oikein. Katsotaanpa suorittaa tämän ohjelman. Joten kirjoita jotakin pieniä kirjaimia. Mitä te haluat kirjoittaa? Huutaa jotain. Hyvä, Charly vain käveli sisään. Me kirjoita Charly nimi. Charly pienillä. Ja toivottavasti, toivottavasti, tämä on menossa huutaa ja sylkemään Charly isoja kirjaimia. Jee! ei jokainen ymmärtää, miten Menin siitä, että ratkaistaan, että? Tavalla, että voin manipuloida käyttämällä kokonaislukuja ratkaisemaan jotain Haluan tehdä jouset, koska merkkiä ja kokonaislukuja voi voi viitata samalla tavalla, koska ASCII kartoitus. Joten mennä takaisin kohtaan, jos minä halusi laittaa tänne sijasta 32 isoja miinus pieniä kirjaimia kuten että, joka toimisi yhtä hyvin, koska se on yksinkertaisesti vain ero näiden kahden arvon. Jos haluan tehdä tämän again-- Charly. Voi ei. Mielestäni menimme väärällä tavalla, joo? Yleisö: [äänetön] pieniksi. ANDI Peng: Niin sitä pitää. Jep. Ja ulos sylkee Charly. Joten ole varovainen, kun olet vähentämällä arvot muistaa kumpi on suurempi kuin muut. Esimerkiksi täällä unohdin että pieniä on todella suurempi kuin isoja A. Kun siis yritti vähentää niitä toisinpäin noin, sain negatiivinen 32. Ja minun tietokone oli kuin, En tiedä mikä se on. Se on todennäköisyys vain joitakin satunnaisia arvo, joka ei ole kovin hyvä. Ja niin varmista, että olet vähentämällä oikeassa pituus löytää haluamasi merkki. OK. Onko kukaan sekava miten me kulki kirjoitan tätä toimintoa? OK. Joten oikeastaan, funktio jo olemassa kirjastossa nimeltään ctype.h. Kirjaston nimeltään ctype.h. Tämä toiminto on itse asiassa jo kirjoittanut teille. Sitä kutsutaan ylemmän. Ja niin varten Tämän PSET, olet menossa löytää että todella haluat käyttää paljon sisältämät toiminnot sisällä CNäppäile kirjasto. Ylä-, alentaa, on ylempi, on lower-- ne ovat kaikki toiminnot että voit käyttää hyvin, hyvin nopeasti oman koodin että tekee juuri tämä tekee. Kirjoitimme miten muuntaa merkkijonon isoiksi. Mutta tämä on todella koodi että joku muu on kirjoittanut ja että voit käyttää kautta on eri tehtävä. Joo? Yleisö: Joten vain kopioida on tuolla ja tehdä sen joka ikinen kirjain? ANDI Peng: Joo, koska en välitä arvoja. Minä vain välitä, että ero niiden välillä on 32, eikö? Ero pieniä b ja isoja B on myös 32. Ja ero C ja isoiksi C on aina 32. Minulla on vain huolta Ero näiden kahden välillä, koska kaikki kirjaimet noudattaa samaa kaavaa, eikö? Jos minulla on erotus välillä yksi heistä, Tiedän, mitä eroa niiden kaikkien välillä on. Hyvä kysymys. Joo. Jokainen hyvä? OK. Oop. OK. Niin toinen käsite, joka on olemaan erittäin hyödyllinen, kun edelleen kehittää koodi on tämä ajatus luoda toimintoja tai abstraktio. Joten nyt olemme kaikki otettu algebran. Algebra, olet opettanut, että on olemassa tämä ihana asia sanottu toiminto kone, jossa jos panos yksi sellainen määrä, se kulkee tässä ihanassa toiminto ja ulos ponnahtaa eri tuotos, eikö? Koodin, sama asia tapahtuu vuonna minkäänlaista toimintaa. Niin voisin fyysisesti kirjoittaa ruumiissani minun koodi tärkein lausunto siitä, että itse ei riippumatta rungon koodin tekee. Mutta ulkopuolella, että voin myös kirjoittaa monia eri toimintoja että tehdä monia eri asioita. Esimerkiksi, olemme jo alkoivat käyttää joitakin niistä. Printf--, että on toiminto että joku muu on jo kirjoittanut, että voimme kutsua meidän koodi. Voit upper-- tässä tapauksessa, upper-- on toinen toiminto olemme kirjoitettu, että me voi soittaa meidän koodi. Ja niin kai miksi meillä on jopa toimintoja? Miksi emme vain plop se kaikki samassa rivi koodia? Se on helppo kaikille. No, perustelut, että on ensinnäkin, organisaatio. Se on todella ärsyttävää menossa kautta jonkun koodi ja yksi toiminto kuin printf. Jos te todella tiesi, mitä toiminto printf merkitsi kirjoittaa, se on, kuten, 1000 riviä koodia. Jos joka kerta halusin ja printf jotain, Jouduin kirjoittamaan 1000 riviä koodia, että olisi todella ärsyttävää lukea, oikea? Siksi olemme juuri luonut tämän abstrakti toiminto että meillä on jo joku muu on kirjoittanut jossain muualla. Ja joka kerta kun täytyy käyttää sitä meidän koodi, meidän täytyy vain sanoa printf. Ja joka pystyy käyttää toimintoa joku muu on kirjoittanut meidän koodi. Se helpottaa organisatorisesti lukea koodia. Toiseksi, se on yksinkertaistaminen. Se yksinkertaistaa vaiheet olemme ryhtyä ratkaista ongelmamme. Printf, toimintoja, kuten printf, toiminnot, kuten ylemmän ovat kaikki asioita, joiden avulla voimme yksinkertaistaa koodi alas niin se on helpompaa. Ja viimeinen asia on uudelleenkäyttöä. Niin että meillä on toiminto nimeltään Printf että voimme soittaa monia eri kertaa ja sallii sen olevan uudelleenkäytettäviä. Jos minun pitäisi kirjoittaa printf, Minä vain kirjoitan sen kerran. Se on olemassa vain tässä yhdessä paikassa. Jos halusin tehdä sen uudestaan, olisin on kopioida ja liittää kaikki kyseisen minun toinen rivi koodia. Siksi jos luomme toiminto joka on olemassa ulkopuolella tärkein, voimme vain pyytää se ja käyttää sitä aina Tarvitsemme niin että se on paljon helpompaa meille ohjelmia kirjoittaa. Niin että me todella kirjoittaa funktio on hyvin samankaltainen, eikö? Tämä on tavallaan ensimmäinen Esimerkiksi jossa me will katso toiminto ottamaan tyyli erilainen kuin meidän int main mitätön. Tässä tapauksessa, jos halusin kirjoittaa toiminto nimeltään q, oikea? Ja int arvo täällä on kaikki kertoo minulle, mitä haluan tämän Toiminto palauttaa minulle? Jos haluan kuutio kokonaisluku, Aion haluat syöttää. Nämä ovat parametreja. Aion syöttää arvo tyyppiä int. Ja aion palata toisentyyppistä arvo int. Ja täällä, kun voi nähdä, kaikki olen tekemässä on cubing mitä minun panos on minun tuotanto ja palauttamalla sen. Joten kaikki tämä toiminto ei ei ottaa jonkinlainen kokonaisluku. Se kertoo sen itse kahdesti niin että se kuutiot vaikutus. Ja sitten se palaa mitä se tuotos on. Joten tässä tapauksessa, se on kaksi riviä koodi, joka meidän piti kirjoittaa ylimääräistä. Mutta jos halusimme soittaa tälle useita kertoja, se on paljon helpompi kirjoittaa, että yksi line täällä, joka on vuonna kuutio kuin täytyy käydä läpi useita kertoja. Niin siten, että oleellisesti kaikki alustamista varten minkäänlaista toiminto tulee olla olemassa on kuin täällä. Joten meillä on funktion nimi. Tässä tapauksessa, sitä kutsutaan kuutio. Ja me name it kuutio koska se on helppo muistaa. Voit nimetä sen lähtöruutuun ja se voidaan todella cubed. Ei ole väliä. Vain nimi, joka olet määrittämällä funktio. Tämä täällä, int, on tyyppi parametrin tarvitset. Mitä tämä toiminto tarvitsevat voidakseen toimia? No, se tarvitsee syöttää. Nimesin sen panos. Voit nimetä sen mitä haluat. Mutta minä tarvitsen jotain tyyppiä int. Se tulee todella toteuttaa mikä on sisällä täällä, kehon funktion. Ja sitten palautuva täällä, tämä int-- kaikki se kertoo minulle on että tämä toiminto on aio palata minulle int. Joten se aikoo ryhtyä int, ja se tulee antaa sinulle takaisin int. Onko jokainen ymmärtää, miten muotoilun tällaista toimii? Viileä. OK. Joten älä olla huolissaan, jos tämä näyttää hieman abstrakti juuri nyt. Tämä on jotain, että me puhumme. Me sukeltaa syvemmälle myöhemmin kurssin. Että minkäänlaista korkeamman tason abstraktio näistä asioista työtä on, että muistissa, vuonna tietokone, kaiken tallennetaan tämän tyyppinen pino, sanoisin. Joten siellä huipulla. En tiedä, jos kaverit voivat nähdä, että hyvin. Yritän zoomata. Täällä huipulla, me on fyysinen teksti mitä tietokone on interpreting-- kaikki nollia ja ykkösiä, että ovat olemassa meidän tietokone. Ja sitten meillä on alustettu tiedot ja alustamattoman tiedot, mitä kutsumme globaaleja muuttujia. Niin muuttujia, jotka ovat olemassa kaikkiin ohjelmiin ja poikki koko, olennaisesti, koodi. Ei hätää, jos te olette eräänlainen epäselvä tästä. Se ei ole oikeastaan ​​väliä juuri nyt. Ja sitten meillä on mitä kutsutaan kasaan pino. Ajattele pinon kirjaimellisesti kuten pino asioita, pino eri asiat työnnettiin päälle toistensa jotka tallentavat eri muuttujat ja syntaksi oman koodin. Ja sitten täällä alareunassa, meillä ympäristömuuttujat mitä olet täytäntöönpanovaltion sisällä vain pikku riviä koodia. Ja me vain menossa zoomata on todellinen pino osa. Joten täällä, jos me zoomata on juuri tällä alueella pino, tämä on mitä se näyttää. Ja tämä on oikeastaan ​​aika tärkeä kun te puhua toimintoja, koska ilmoitus, että muistia tietokoneen on tallennetaan muuttujat ja toiminnot ja parametrit sekä oman toiminta ja tärkeimmät muuttujat eri paikoissa. Joten nyt, tärkein on todellinen toiminto että olet suoritettavana koodin. Olet sen parametrit tallennettu täällä ja sen paikallisia muuttujia tallennettu täällä. Paikallinen muuttuja vain mitä tahansa muuttujan jotka ovat olemassa vain kyseisessä toiminto. Ja sen päälle, sinulla on tämä erillinen toiminto nimeltään kuutio. Sinulla on, että parametrit samoin kuin paikalliset. Ja syy voit katso tässä, että mitä tapahtuu, kun kuutio ottaa sisään arvo teidän päätehtävä on, että itse asiassa se on kopiointi että yli. Joten jos halusin kuutio 2 ja palata 8, että 2 on todella syötetään parametri ja se on kopioida niin, että sinulla on se nykyisten kahdessa eri paikassa muistiin. Ja sinun täytyy olla hyvin varovainen muistamiseen kumpi näistä olet todella manipuloimalla. Ja esimerkki siitä, mitä tapahtui että olisi hyvin, hyvin huono olemassa täällä. Joten täällä, olen saanut, teoriassa, ohjelma täällä, päätehtävä että olen julistaa int x on 1. Olen julistaa toisen int y = 2. Ja sitten olen käynnissä se kautta tämä toiminto kutsutaan swap, jossa oletan, että se vaihtamalla kaksi arvoa. Ja sitten aion tulostaa ne, eikö? Se, mitä haluan tämän ohjelman tehdä. Joten tule alas ja katsomaan. Joten jos olen itse kirjoittaa eri toiminto, kuten näette, meillä on päätehtävä täällä. Ja sitten meillä on Toinen funktio tässä. Void swap. Void vain sitä, että se on ei aio palata mitään. Funktion nimi on kutsutaan swap, ja se on menossa saanti kaksi muuttujaa, int ja int b, teidän [kuultavissa] toiminto. Joten lähinnä täällä, olemme kulkee X ja Y osaksi tätä toimintoa. Ja jos me luoda this-- joten haluamme luoda tilapäisen arvon, eikö? Aiomme antaa että. Ja sitten on menossa nyt yhtäläiset b. Ja b tulee olemaan takaisin jossa lämpötila arvo oli, joka on, koska kun haluat vaihtaa asioita, et voi vain haluavat vaihtaa niitä. Sinun pitää yksi tässä niin, että se muistaa mitä se on, koska kerran vaihdat yksi, unohdat mitä se alkuperäinen arvo oli, eikö? Joten teoriassa, tämän ohjelman pitäisi toimia, eikö? Jos halusin vaihtaa kaksi, ne tulisi vaihtaa. Joten käyttää sitä ja katso jos se toimii. Niin te voi nähdä, X oli kerran 1 ja y oli kerran 2. Ja jos minä tulostaa sen, x on edelleen 1 ja y on 2. Hmm, tämä ohjelma ei näytä olevan työ siten, että haluan sen toimivan. Onko kukaan halua ottaa ampui arvailla miksi tämä tapahtui? Se liittyy siihen, miten että eri asiat ovat varastoitu eri paikkoihin muistissa. OK. Joten te ei tarvitse huolehtia liian paljon tästä juuri nyt. Mutta tiedän, että kuution paikallinen muuttujat olivat a ja b, koska täällä meidän tehtävämme, olemme julisti ja b kuten muuttujat olemassa sisällä kuutio, että toiminto. Mutta kuten näette, parametrit, se ryhtyy ne on varastoitu täällä. Mutta emme olleet oikeastaan palaavat mitään. Emme olleet todella muuttuu x ja y. Olimme juuri muuttumassa ja b. Olimme kopioitu x ja y osaksi jotain kutsutaan ja b. Mutta emme koskaan itse manipuloitu x ja y itse. Oletteko nähdä miten se tapahtuu? On, että olemme yksinkertaisesti kopioitu se yli, mutta emme ole oikeastaan ​​pidetty kirjaa, jossa hänellä oli muistissa. Ja nyt tietokone etsii, OH, olen suorita tämä asia läpi tämä ihana toiminto. Mutta x ja y ovat edelleen x ja y. Mitään ei tapahtunut niitä, koska se että kyseiset parametrit ja paikalliset muuttujat tallennetaan eri laita muistiin. Ja tämä on korkeamman tason käsite, että me will alat nähdä myöhemmin kurssin. Mutta vain tietää, että tämä on ongelma, joka voi tapahtua ja että me selvittää keinoja, miten käsitellä tätä myöhemmin kurssin. OK. Selvä. Niin viimeinen käsite olemme todella aikoo kattaa että tulee olemaan hyödyllinen sillä PSET tällä viikolla ovat mitä kutsutaan komentoriviargumentteja. Joten Rob hänen luento meni läpi eräänlainen lyhyesti, miten nämä työt. Pohjimmiltaan tietää, että kun olet kirjoittamassa kuten päätehtävä, kun kirjoitti toiminnot ennen aikaisemmin, meillä oli int main mitätön. Ja syy meillä oli mitätön siellä oli sillä ohjelmia ei on syötettävä arvot ajaa, eikö? Kun juoksin Mario, en tarvinnut todella vain kirjoittaa jotain kun juoksin Mario. Voisin kysyy käyttäjältä myöhemmin. Mutta se ei aina tapahdu. Esimerkiksi, tässä viikon ongelma asetetaan, aiot pyydetään, että lisäksi suorittaa ohjelma, olet menossa halua syöttää tiettyjä asioita suorassa, kun ajaa ohjelma. Joten miten teemme, jota kutsutaan Komentoriviargumentti, joka on kuin argumentti voit syöttää suoraan kun yrität ajaa ohjelman. Joten merkintätapa tämän, se on melko monimutkainen näköisiä, mutta se ei todellakaan ole, että vaikea. Niin int main-- se on vain teidän päätehtävä. Osaksi argc pilkku merkkijono argv suluissa. Niin kaikki mitä sanon, että tämä int argc-- kaikki se kertoo sinulle on, että ne ovat määrä perustelut tietokone pitäisi odottaa. Niin yksi asia, joka on todella tärkeää seurata on fyysinen nimi ohjelman lasketaan yhdeksi nämä väitteet. Joten jos halusin olla minun ohjelma ajaa plus yksi ylimääräinen komentoriviltä argumentti, olen oikeastaan menossa on kaksi. Argc on todella olemaan kaksi. Ja sitten merkkijono argv bracket-- kaikki, joka tekee, se antaa minulle joukko merkkijonoja, jotka on menossa vain näyttää ja tallentaa mitä kaikki nämä komentoriviargumentteja ovat. Niinpä esimerkiksi, jos halusin saada tämä ohjelma, ./copy INFILE outfile, eikö? Se on vain tyypillinen linux komento. Mikä oikeastaan ​​on argc? Kuinka monta komentoriviargumentteja ovat siellä todella tämän? Kaikki tämä tekee on kopioida INFILE nimen yksi tiedosto ja se kopioi se toinen tiedosto, eikö? Siinä kaikki tämä tekee. Kuten näette, teen sen yhdelle riville ilman todella tarvitsee ohjelman. Mikä on meidän argc tässä tapauksessa? Kuinka monta argumenttia meillä on? Yleisö: Kolme? ANDI Peng: Meillä on kolme, tarkalleen. Joten on hyvin intuitiivinen vain ajatella, että se on vain INFILE ja outfile. Mutta tiedän, että fyysinen nimi ohjelma käytät lasketaan yhdeksi. Joten tässä tapauksessa, argc on oikeastaan ​​kolme. Entä, mitä on argv 0? Muista, kaikki komentoriviargumentteja säilytettiin erilaisia ​​jouset. Joten jos yritän käyttää sitä, mitä olisi argv kiinnike 0 antaa minulle? Yleisö: [äänetön]. ANDI Peng: Aivan. Se antaisi minulle piste slash kopioida, koska se on 0. elementti, ensimmäinen osa minun array. Entä argv 1? Yleisö: INFILE. ANDI Peng: INFILE, tarkalleen. Entä argv 2? Yleisö: outfile. ANDI Peng: outfile. Tämä on vähän hankala nyt. Mitä olette mieltä argv 3 aiotaan antaa minulle jos Yritin tulostaa että ulos? Yleisö: [äänetön]? ANDI Peng: Oliko sinulla käsi ylös? Joo. Yleisö: vaihtoehto. ANDI Peng: Aivan. Joten muistaa luento että me on lopussa rodun jotain kutsutaan null terminaattori? Pääsemme tähän myös edelleen luokassa. Mutta tiedämme, että merkintätapa, Muuten tietokone tietää, että se päättyy array on, että se laittaa jotain kutsutaan null terminaattori tai viiva nolla. Joten jos yrität käyttää argv 3, aiot lyödä tämän viiva 0. Tämä on jopa enemmän kompakysymys. Entä argv 4? Joten tämä on ohi null terminaattori, ohi rajat meidän array. Mitä luulet tulee tapahtuu, kun yritämme tehdä niin? Yleisö: [äänetön]? ANDI Peng: Anteeksi? Sano että hieman kovempaa? Yleisö: [äänetön]. ANDI Peng: Kyllä. Että on nimi alue sinulla todennäköisesti saada. Mutta tiedämme, että argv 4-- jonka avulla voit käyttää paikkoja tietokoneen muisti, että olet todella ei pitäisi olla koskematta, koska nyt tiedät mitä argv on. Te tiedätte, että se on taulukon koko 3 että on piste kopioida, INFILE ja outfile. Jos yrität mennä niin kauas, että että olet ohi null Terminator, tietokoneessa on todennäköisesti tallennettu jotain argv 4. Ja sinun ei todellakaan pitäisi olla sallittava pääsy argv 4, koska sinulla on tiedosto kaappi ja olet vain päästetä näiden kolme hyllyä. Mutta jos yrität päästä pidemmälle hyllyllä jossa sallitaan, aiot aloittaa Messing kanssa muita asioita tietokoneen muistiin. Se tulee olemaan todella, todella huono. Joten vain tietää, että. Ole tarkkana, että olet eivät vain satunnaisesti käynnisty pääsy elementtejä array, joka eivät olleet mitä halusi luoda. Jep. OK. Joten aiomme tehdä uuden terminaali esimerkki tästä. OK. Joten Rob nopeasti luento toinen päivä meni läpi tämän esimerkin, jossa hän oli int main int argc merkkijono argv kiinnikkeet, joka kertoo minulle, että olen menossa on komentoriviargumentteja. Hänellä on, jos argc vastaa vastaa 2-- muistaa, vastaa tasavertaisten tarkoittaa vertailua. Jos se on 2, niin olen painoon Hei, mitä ensimmäinen alkio on. Else tulostaa Hello World. Mitä tämä tulee tapahtua olennaisesti? Voiko joku vain selittää Englanti, mitä tämä ohjelma tekee? Joo. Yleisö: Jos joku kirjoitetaan komento ja sanoi heidän ensimmäinen ja viimeinen nimi, se ei vain tulostaa Ensimmäinen ja sanoa, hei, Mikä tahansa etunimi on. ANDI Peng: OK, katsotaanpa käyttää sitä. Niinpä esimerkiksi, jos olisin tehdä tämä tiedosto tehdä hei to-- hei to-- mitä haluat minun syöttää? Yleisö: Etu- ja sukunimi. ANDI Peng: etu- ja sukunimi? Spaces? Yleisö: Joo. ANDI Peng: Voiko joku kertoa minua juuri nyt, mikä on argc? Juuri tuolla? Oho, anteeksi. Anna minun mennä takaisin. Kuinka monta komentoriviargumentteja are-- te voi oikeastaan ​​nähdä. Mutta yritän zoomata. Yritän. Joo, siellä on kolme, eikö? Se on piste slash Hei, se on Andi, ja se on Peng. Mitä te olette mieltä tästä ohjelma aiotaan tulostaa? Oi. Anteeksi. Väärän nimen. Se tulostamisen, Hello World. Onko kukaan halua selittää miksi tämä tapahtuu? Joo? Yleisö: [äänetön]. ANDI Peng: Aivan. Joten tässä, ovat ehdollisia on, jos argc vastaa = 2. Joten vain siinä tapauksessa, että on olemassa kaksi komentoriviargumentteja. Sitten aion tulostaa, Hei, mitä se on. Mutta muuta, aion tulostaa vain, Hello World. Joten ei joku halua antaa minulle esimerkki miten voisin todella saada se tulostaa arvon argv 1? Mitä minun täytyy syöttää täällä? Vain yksi asia, eikö? Koska piste hello to jo lasketaan ensimmäinen argumentti. Minulla on vain yksi. Joten piste hei jos vain tehdä Andi. Hei, Andi. Onko jokainen ymmärtää miksi tämä tapahtuu? Joo. Yleisö: Niin väli komento line-- on se [äänetön]? ANDI Peng: Ei. Joten tilaa komentoriviltä argumentti, X, kertoa tietokoneen että tämä on alku uuden merkkijonon. Joten merkkijono argv here-- se myymälöissä kaikki komennot argumentteja in jouset. Ja niin tilaa komentoriviltä argument-- tämä vain kertoa, tämä on lopussa yhden merkkijonon ja on aika siirtyä toiseen. Joo. Tämä on aika tärkeää sinun PSET, koska olet aiotaan testaamalla nämä. Joten ei kellään kysyttävää tästä? OK, viileä. Joo? Yleisö: Eli syy olisit laittaa kokonaisluku argumentti lask sijaan of [äänetön] olisi kun haluat kirjoittaa lisätietoja [Äänetön]? ANDI Peng: Joo, täsmälleen. Jotkin ohjelmat vaativat sinua syöttää Komentoriviargumentti että se kulkee ja jotka sitä käyttävät. Joo. Yleisö: Mitä jos [äänetön]? ANDI Peng: No, mitä minulla on vaihtaa sitten minun ohjelma? Yleisö: Vain 3. ANDI Peng: Miksi näin tapahtuu, luulet? Yleisö: Koska [kuultavissa]. Yleisö: Sinun täytyy vaihda se 2 [kuulumattomiin]. Yleisö: 1 ja 2. ANDI Peng: 1 ja 2, tarkalleen. Joten tässä tapauksessa, olet luultavasti haluavat olla kaksi printf statements-- joka painetut argv 1 ja joka painetun argv 2. Täällä. Itse asiassa voin tehdä sen todella nopeasti. Ole hyvä. Oi. Ei ihan mitä halusit. Mutta jos te pelleillä muotoilua, se tulee ulos. Joo. Viileä. Tiedän olemme vähän vähän aikaa. Mutta olen juuri menossa nopeasti viettää pari minuuttia läpi helpful-- Yleisö: Sinulla on kaksi minuuttia. ANDI Peng: Minulla on kaksi minuuttia? Kiitos. Nopea PSET vinkkejä. Joten tämä PSET, suosittelen lämpimästi, kuten sanoin, jokainen lukea spec. Sinulta kirjallisesti kolme programs-- yksi kutsutaan initials.c, yksi nimeltään caesar.c, yksi nimeltään vigenere.c. Muutamia tärkeitä vinkkejä, että te todella haluat pitää mind-- niin on tämä toiminto nimeltään atoi-- kuin haluan sanoa, trois. Epäselvät jos se oikeastaan ​​miten sen sanot. Mutta kaikki se tekee, se syöttämällä. Se muuttaa merkkijonon int. Joten edustaa ASCII i kokonaisluku. Se on vain muuntaa ASCII arvot kokonaislukuina. Muista siis argv, array, joka tallentaa kaikki komennot linja arguments-- se tallentaa ne kaikki merkkijonoina. Joten jos haluat pystyä on yksi heistä tulee kokonaisluku, olet menossa on käyttää tätä arvoa täällä. Modulo, kuten kävimme aiemmin luokan tänään, voit olla Loput mitä sinulla on. Joten jos meillä on todella, todella suurin joukoin Caesar, mitä jos meillä on lopussa merkkijono Vigenere? Miten aiotte pystyä saada, että kääri ympärille? Jos osuin z ja haluan se palata, miten olen menossa saada että kääri ympärille? Luultavasti halua käyttää modulo siellä jossain. Toiseksi, selata noin kirjastosta. ctype.h. Se on uusi kirjasto meillä on. Löydät paljon todella, todella hyödyllinen functions-- isupper, islower, toupper, tolower, isalpha, jne. Kaikki toiminnot, jotka ovat erittäin hyödyllisiä kun olet yrittää selvittää, on tämä merkki pieni kirjain? Miten voin muuttaa tätä merkkijono isoja? Kaikki nämä asiat ovat hyvin, erittäin hyödyllistä oman PSET. OK. Virka tänä iltana ovat 8:00 11:00 in TEAL luokkahuoneessa huomenna sekä keskiviikkona ja torstai-iltana. Virka ovat Commons. Erittäin ehdottaa te kaikki aloittaa heti, koska et halua olla, että lapsi, joka torstai-iltana on ongelmia lähetät PSET ja on kuten, en tiedä mitä tehdä. Aloitin, olen valmis, olen esittänyt. Yritä antaa itsellesi tilaa, koska koodi ongelmia aina esiintyä. Haluat varmistaa että annat itsellesi paljon aikaa pystyä loppuun psets. Viileä. Minä roikkua täällä. Yleisö: Onko tämä verkossa jo? ANDI Peng: En tiedä, jos se on verkossa jo, mutta se tulee olemaan. Minä roikkua täällä, jos joku on kysyttävää jo. Kiitos, että tulit.