SPEAKER 1: Okei. Tervetuloa takaisin. Tämä on viikko Kaksi CS50, ja meillä on tähän mennessä funktioiden avulla, mutta suurelta osin niitä itsestäänselvyytenä. Olemme käyttäneet printf joka on sivuvaikutus tulostus asiat näytöltä. Olemme käyttäneet get-int, saa kellua. Mutta mitä jos todella haluat luoda omaan toimintoja, kuten jotkut olet ehkä jo alkaneet tehdä Ongelma Set One, vaikka ei ehdottoman välttämätöntä? No, mennään eteenpäin ja uudelleen, että ongelma vain pyytää käyttäjältä nimensä ja tulostus jotain näyttö, mutta yritä tekijä joitakin sekä yhteisöllisyyden että olemme nähdä meidän koodi toistaiseksi. Joten tällä tarkoitan seuraavaa. Aion mennä eteenpäin ja luoda uusi ohjelma, soita se hello.c kuten tavallista. Aion mennä eteenpäin ja antaa itselleni ovat standardin io.h yläreunassa. Aion myös antaa itselleni preemptively CS50 kirjastoon, jotta En saa häiriinny kääntäjä. Ja nyt aion mennä eteenpäin ja julistaa int, tärkein, mitätön. Ja sitten täällä, tämä on, jos haluan alkaa ulkoistaa toimintoja muuna että olen itse aikoo kirjoittaa, mutta joka ei tällä hetkellä. Oletetaan esimerkiksi, että halusin Kirjoita funktio, joka antaa minulle mahdollisuuden tulostaa hello, pilkku, sitten jotkut käyttäjän nimi. Sen sijaan edelleen tehdä printf Hei,% s, eikö olisi mukavaa, jos oli vain toiminto nimeltään ei printf mutta tulosta nimi? Eli toisin sanoen, haluan pystyä kirjoittaa ohjelma, joka tekee vähän jotain tällaista. Ensinnäkin aion sanoa printf oman nimi, mikä käyttäjää kehotetaan antaa minulle hänen nimensä, ja niin olen aio käyttää tuttuja merkkijono s julistaa merkkijono. Anna minulle muuttuja tyyppiä string, kutsuvat sitä s, ja myymälä että johtaa kutsuvan saada merkkijono. Mutta nyt viikkoa aikaisemmin, olisin hieman ikävän tehnyt hei,% s / n. Ja toisin sanoen, olemme nähneet tämän Esimerkiksi joukko kertaa, ja se on triviaali esimerkki, koska siellä on vain yksi koodiriviä niin se todellakaan ole iso juttu pitää kirjoittaa uudelleen. Mutta oletetaan, että tämä rivi koodia todella oli tulossa rasite, ja se ei ole yhtä riviä koodia, mutta se on 10 riviä koodia parin viikon päästä, ja olet vain väsyä kopiointi ja liittäminen tai retyping että sama koodi. Eikö olisi mukavaa sijaan tehdä printf hei,% s ja niin edelleen, eikö olisi mukavaa, jos siellä oli vain toiminto nimeltä print nimi vie argumentti - Toisin sanoen, se vie tulo - ja sitten puolipiste. Niin, että toiminto, eikö olisi mukavaa, jos se olemassa? Sitten minun ei tarvitse murehtia mitä printf on, mitä% s ja kaikki Näistä ongelmista, jotka ovat ei kovin kiinnostavaa. Ne ovat hyödyllisiä. Joten tekstaa, valitettavasti ei ollut keksi noin 40 plus vuotta sitten. Kukaan ei ajatellut kirjoittaa sitä. Mutta se kauneus ottaa ohjelmointikieli, aivan kuten Scratch voit määrittää mukautettuja korttelin, joten C ja useimmat tahansa kielellä, voitte määritellä omia toimintoja, voi voit määrittää omia funktioita. Joten vaikka saamme tärkeimmät by automaattisesti ilmaiseksi, voimme julistaa omia toimintoja. Joten aion tehdä jonkin verran täällä ylös, ja aion julistaa minun oma toiminto, joka tulee näyttämään hieman oudolta aluksi, mutta tulemme takaisin tähän ennen pitkää. Aion sanoa mitätön, mikä osoittaa tämä toiminto ei jotain, on sivuvaikutus, mutta se ei palaa jotain minulle samalla tavalla saada int tai saada string itse tekee. Ja aion antaa tämän toiminnon Nimi tekstaa, ja aion täsmentää, että tämä kaveri vie merkkijono, ja aion soittaa, että merkkijonon nimi. Voisin kutsua sitä mitä haluan, mutta en haluavat minun koodi on itsedokumentoiva. Toisin sanoen, jos yksi olit avaa tämä tiedosto ja lukea sen, voisit eräänlainen päättelevät nimi, joka input mikä rooli sen pitäisi pelata. Ja nyt alla, että aion avata kihara ahdin ja suljettu kihara ahdin, ja niin huomaa Olen seurannut samaa kuvio linjat neljä kautta oli seitsemän Olen seurannut hyvän viikossa plus nyt välillä vaikkapa linjat yhdeksän ja 14, joka säveltää tärkein. Toisin sanoen, tulostaa nimi on toinen toiminto. Nyt kääntäjä ei aio tietää kutsua tämä asia automaattisesti koska olen kirjaimellisesti vain keksi sen, mutta se tietää silti soittaa tärkeimmät automaattisesti, ja sitten tietenkin linja 13, kehotan oma toiminto. Ja koska olen ilmoittanut, että toiminto up line neljä ennen isoja, tämä tulee opettaa kääntäjä mitä lainaus, lainaus, "print nimi" tarkoittaa ja mitä sen pitäisi tehdä. Joten olen tavallaan antaa sille uuden mukautetun estää yhteydessä vaikkapa Scratch. Joten täällä, voin laittaa että hyvin yleinen tai toistuva koodia pidän kirjallisesti luokassa, printf % S hello,% s / n ", - mitä haluan laittaa tänne? S? Joten haluan laittaa nimi tässä yhteydessä. Niin huomaa hieman kahtiajako täällä. Koska minä julistan oman toiminnan ja olen hieman mielivaltaisesti kutsutaan se tulostaa nimi, ja koska olen määritelty suluissa, että tämä Funktio ottaa yhden argumentin, tyyppi joka on merkkijono - niin se sana tai lause tai jotain - ja Soitan tämän väitteen nimi, että tarkoittaa vain muuttuja, joka on vuonna soveltamisala, niin sanoakseni, on nimi. S vain välillä mitä kahden aaltosulkeita, tietenkin? No oikeastaan, aivan kuten linja 10 kautta 14, joten aivan kuten maanantaina voi käyttää S, mutta mitä voin tehdä, on läpäistävä S tulosteeksi nimi. Tulosta nimi vain niin antaa se alias, synonyymi, lempinimi, kutsuen sitä nimeä, ja nyt käyttää sitä tätä linjaa. Joten nyt haluan pelastaa tämän, loitontaa. Anna minun mennä eteenpäin ja tehdä hei. Näyttää hyvältä. Sylkenyt ulos virheitä. . / Hei Enter. Mikä minun nimeni on? David. Ja hei David. Joten kaikki niin jännittävää, mutta ajatelkaa nyt. Sinulla on nyt, että sama aine kuten teimme tyhjästä tehdä omia toimintoja. Mutta on vähän ähäkutti. Oletetaan, että en ollut oikeastaan ​​ajatellut Tämän kautta ja olen itse ilman todella ajatellut sitä kirjoitti että toiminta täällä. Tuntuu täysin järkevää. Scratch ei ole käsitystä ja paikkaan skriptejä. Voisit laittaa yhden tänne, yksi täällä, yksi täällä, ja se saattaa alkaa näyttää hieman sotkuinen, jos et antaa se pois siististi, mutta se ei väliä missä fyysisesti skriptejä olivat ruudulla. Valitettavasti C - ja tämä on toisin kuten Java-ja Python ja toiset, että saatat tuntea kanssa - valitettavasti C, jotta ei väliä, koska katsella mitä tapahtuu nyt. Oletuksena toiminto, joka menee suorittaa on, tietenkin, main. Main aikoo kutsua tulosta nimi line kahdeksan, mutta valitettavasti kääntäjä ei edes tiedä, että nimen selvennys olemassa, kunnes se pääsee linja 11, joka valitettavasti on tulee liian myöhään. Tehdäänpä tehdä hei. Ja nyt perkele, kaksi virhettä syntyy. Joten nyt haluan siirtyä jopa hyvin Ensinnäkin meidän pitäisi aina tehdä, ja huomaa, että se huutaa minua, "Implisiittinen ilmoitus toiminto tulostaa nimi. " Joten olemme nähneet tämän viestin ennen, implisiittinen ilmoitus toiminto. Kun olemme nähneet, että sellainen virhe? Kun en ole kirjasto. Jos unohdin cs50.h ja saisin huusi ja saavat merkkijono tai saada int. Mutta tässä tapauksessa, tämä toiminto tulostaa nimi ei ole kirjastossa, eikö? Se on kirjaimellisesti tätä kuvaa, niin mitä todella ongelma? No valitettavasti C, se vie niin uskomattoman kirjaimellisesti, että jos haluavat toiminto nimeltään tulostaa nimen olemassa, sinulla on joko toteuttaa että toiminto hyvin alkuun koodia niin, että se on helposti laskea toimintoja, mutta suoraan sanottuna, että tulee huolimaton hyvin nopeasti. Henkilökohtaisesti pidän laskemisesta ensimmäinen merkittävä koska silloin se on hyvin selvää, mitä tämä ohjelma tekee ensi silmäyksellä. Ja plus, voit päästä outoa nurkkaan jos jos x haluaa soittaa y mutta y kutsua x, juuri fyysisesti ei voi oikeastaan ​​laittaa yksi edellä muita. Mutta näyttää siltä, ​​C, voimme ratkaisemaan tämän hyvin yksinkertaisesti. Aion laittaa hieman tilaa täällä, ja olen juuri menossa ennaltaehkäisevästi, vaikkakin tarpeettomasti, aiomme opettaa kääntäjä, joka on olemassa funktio nimeltään tekstaa, se vie merkkijono, ja aion soittaa se nimi puolipiste. Joten tämä nyt linjassa neljä, jotka olemme ole ennen nähneet, on ilmoitus funktion nimen selvennys, mutta se on vain luvata, että tämä funktio lopulta määritellään, lopulta toteutetaan. Tämä nyt voin lähteä yksin, koska nyt tämä on määritelmä, täytäntöönpanoa, eräänlainen viimeisen mailin täytäntöönpanon tämän tiettyä toimintoa. Joten suoraan sanottuna se on tyhmä, se on ärsyttävää, mutta tämä on tapa C on, ja se on koska se vie hyvin kirjaimellisesti ja, kuten tietokoneeseen suoraan sanottuna olisi Paitsi että mitä kerrot sen tehdä, ja niin, että tilaus on tärkeää. Niin pitää tämä mielessä ja taas alkaa huomaa toistumisen kuvioita. Kertoimet ovat sinun, jos et ole jo, alkaa kohdata viestejä näin, että ensi silmäyksellä näyttää täysin arvoituksellisesti, mutta jos aloitat etsiä näitä avainsanoja, kuten "Implisiittinen ilmoitus," mainita tässä tapauksessa toimi - ja rehellisesti, et joskus jopa saada pieni vihreä porkkana symboli, joka kertoo minne ongelma todennäköisesti on - voit alkaa käy läpi vielä luettu virheilmoituksia. Kaikki kysymykset kirjoittamiseen oma tehtävänsä tällä tavalla? Tehdään jotain, joka on hieman enemmän pakottavia. Eikä vain tehdä jotain, joka on sivuvaikutus tulostus, anna minun mennä eteenpäin ja tallentaa uuden tiedoston, ja me kutsuvat tätä positive.c, vaikka se on olemaan hieman erilainen vs. viime kerralla. Ja tällä kertaa, en halua uudelleen käyttöön Edellisen kerran n positive.C esimerkiksi, mikä on pakottaa käyttäjä antaa minulle positiivinen kokonaisluku. Mutta jouduin käyttämään saada int viimeisen kerran. Eikö olisi ollut kiva, jos siellä oli toiminto nimeltään saada myönteisiä int että voisin vain ulkoistaa tämän pala toimintoja? Joten ero on, hyvitämme toteuttaa saada myönteisiä int, mutta toisin Tulosta nimi, joka oli sivuvaikutus - se ei palannut minulle jotain, kuten numero tai merkkijono - saada positiivinen int on, tietenkin, menossa palata, toivottavasti positiivinen int. Joten tehdään tämä. Ovat cs50.h, Lisää vakio io.h. Int main mitätön. Ja nyt täällä, aion mennä eteenpäin ja sanotaanko int, kutsuvat sitä n, vastaa saada myönteisiä int. Ja aivan kuten saada int jo olemassa koska henkilöstö kirjoitti sen, aion olettaa tällä hetkellä, jotka saavat positiivinen int olemassa, ja nyt aion mennä eteenpäin ja sanoa printf, kiitos% i / n ", n. Joten jos nyt kokoamaan tätä ohjelmaa, mitä tapahtuu minun terminaalin ikkunan alareunassa näytön? Aion luultavasti saada, että sama virhe kuin ennen. Joten kokeile tätä. Tee positiivinen. Ja vielä, implisiittinen ilmoitus toiminnon, saada myönteisiä int. Jotta voimme ratkaista tämän pari tapaa. Aion pitää yksinkertaisena ja vain laittaa ilmoituksen tänne ja saada positiivinen int. Tarvitsen ns allekirjoitus. Allekirjoitus vain viittaa esteettisyyteen ensimmäinen rivi ohjelman. Joten mitä pitäisi saada myönteisiä int palata? Joten int. Siis mieluiten se palaisi jotain positiivista int, mutta ei ole olemassa. Olemme ole nähnyt, että yksi meidän tiedot tyyppejä, joten meidän on käsiteltävä Se, että meillä on hyvin vähän tietotyypit työskennellä. Mutta me voimme palata int ja vain luottaa siihen, että se on positiivinen. Se tulee kutsua saada myönteisiä int. Ja nyt miten sen perustelut? Kestääkö mitään panosta? Pitääkö se mitään panosta? Joten se ei tarvitse tietää etukäteen mitään. Hanki merkkijono ei saa int ei. Printf tekee - sen on oltava jonkin verran tulo siirtyi sen - ja nimen tarvitsi tulo, mutta saat positiivinen int ei. Joten aion nimenomaisesti Kerro kääntäjä mitätön. Void on ilman muuta. Joten void avulla mikään ei sisällä näistä suluissa, puolipiste. Ja nyt alareunassa minun tiedosto - ja taas, Olen vain sellainen anaali täällä laskemisesta tärkeimmät yläreunassa, joka on hyvä käytäntö, koska tällä tavalla, milloin sinä tai joku muu avaa tiedoston, toiminnallisuus on oikeassa. Voit sukeltaa lähtöruudusta. Joten nyt aion kopioida tämän, saada myönteisiä int void, mutta en ole iskemään puolipiste nyt. Aion avata aaltosulkeita, ja nyt minun täytyy lainata ideoita maanantaista. Niin kuin muistatte, teimme jotain kuten tee alla jotain oli totta. Ja mitä minä tein? Tein jotain antaa minulle positiivinen kokonaisluku, hieman nopeasti. Voisin käyttää sanoja haluan. Ja sitten käytin mitä? Int n on saada int, Ei perusteluja sille. Ja huomaat eron. Kun soitat toiminto, kun käytät toiminto, et laittaa mitätön. Tämä tarvitsee tehdä vain, että kun julistamisesta toiminto, opetus kääntäjä mitä sen pitäisi odottaa. Joten sinun ei tarvitse laittaa mitätöidä siellä itse. Ja nyt, mitä oli tilani? No, n ei ole yhtä suuri kuin positiivinen, mutta se on vain pseudo-koodi. Joten miten voin ilmaista tämän puhtaammin? Niin vähemmän kuin tai yhtä suuri kuin nolla. Joten jälleen, huomaa voit tehdä pienempi kuin tai yhtä suuri kuin. Vaikka se on kaksi erillistä symboleja, voit tehdä sen näppäimistön sellaisenaan. Mutta siellä on vielä vika, joka Minä mokasin viimeisen kerran liikaa. Minun täytyy julistaa - tarkalleen. Minun täytyy julistaa n ulkopuolella ja silmukka. Joten minun täytyy laittaa n tänne, enkä halua uudelleen julistaa, että se täällä etten saa uuden muuttujan. Haluan vain antaa arvoa täällä. Ja nyt en ole aivan täällä tehneet. Anna minun päästä eteenpäin itsestäni ja teeskennellä olen tehnyt. Tee positiivinen, ja nyt on uusi virhe. Ohjaus on päättymässä ei-void funktio. Joten uusi virheilmoitus, mutta jos sellainen on erottaa toisistaan ​​kunkin sanoen luultavasti vihjaa mikä on vialla. Hallita. Ohjaus tarkoittaa vain järjestyksessä toimintojen ohjelma. Tietokoneen hallinnassa ja jokin meni pieleen. Joten se on lopussa ei-mitätön toiminto. Mikä funktio on se ilmeisesti viittaa? Mikä toiminto on ei-mitätön? Joten positiivinen int, ja hieman hämmentävää, että hyvin, se on aika mitätön. Se on erittely mitätön sen argumentteja, mutta sen teho on menossa on tyyppiä n. Joten sana vasemmalle on ns palautuva. Sana täällä sisällä on nolla tai useampia argumentteja että toiminto vie. Joten mitä minun pitää tehdä? Tässä vaiheessa minun koodi, rivi 21, jossa vilkkuu nopeasti nyt, minä on positiivinen int sisällä muuttujan Kutsutaan. Miten annan sen takaisin tärkein? Kirjaimellisesti. Paluu n puolipiste. Aivan kuten Colton palasi pala paperi vastaus minulle pudottamalla että pala paperia pieni musta laatikko pöydällä, tehdä, että koodia, voit kirjaimellisesti vain kirjoittaa, palauta n, ja se on ikään kuin Colton oli luovuttamalla minulle jotain fyysistä takaisin. Tässä tapauksessa mitä tapahtuu on saada positiivinen int on menossa luovuttamaan mikä oletettavasti positiivinen kokonaisluku kenelle? Mistä tämä arvo päätyvät? Se päätyy tämän muuttujan, n ja Sitten siirrymme linja yhdeksän. Eli toisin sanoen, järjestyksessä toimintaa, tämä ohjelma käynnistyy täytäntöönpanosta, ja kääntäjä tajuaa, oh, haluat kirjastoon? Anna minun mennä napata mitä on sisällä, että. Oh, haluatko standardin IO kirjasto? Anna minun mennä napata mitä on sisällä, että. Mitä kääntäjä sanoa itselleen kun se osuu rivi neljä? Voi, sinä lupasivat panna toiminto nimeltään saada myönteisiä, mutta palaamme siihen myöhemmin, jotain tämänsuuntaista. Int main void vain tarkoittaa tässä rohkeutta minun ohjelma. Line seitsemän on vain kihara ahdin. Line kahdeksan sanoo vasemmalla, antaa minulle 32 bittiä kokonaisluku, kutsuvat sitä n. Oikealla puolella, se on sanomalla saada myönteisiä int. Nyt Katsotaanpa tauko että tarina, koska nyt En pidä liikkuvat minun kohdistin alas. Oma kursori menee nyt tänne, koska nyt saada positiivinen int suorittaa. Int n on julistettu. Toimi seuraavasti. Printf antaa minulle positiivinen kokonaisluku. Hanki int käyttäjältä, säilytä se n, ja ehkä tehdä tämän uudestaan ​​ja uudestaan. Tämä silmukka tarkoittaa, että koodi saattaa suorittaa ylös ja alas kuin tämä taas ja uudestaan, mutta kun käyttäjä lopulta tekee yhteistyötä ja antaa minulle positiivista int, osuin linja 21, jolloin määrä on palautettu, ja kumpi pitäisi korostaa nyt? Yhdeksän. Ohjaus, niin sanotusti palaa rivin yhdeksän. Se on linja, joka on nyt vastuussa. Niin, että mitä on tapahtunut kaikki Tällä kertaa alla huppu, mutta kun olemme käyttäneet toimii kuten printf tai edes string, että joku muu kirjoitti sinulle, ohjaus oltiin luovutettiin pois jonkun toisen koodirivien mukaan rivi riviltä. Se vain emme voineet nähdä sitä ja me ei todellakaan kuvata sitä tässä ohjelmaa, koska se on eräissä muissa tiedoston kiintolevylle tietämättä meille. Joten itse koota ja suorittaa tämän nyt. Tee positiivinen. Koota, se on edistystä. . / Positiivinen. Anna minulle positiivinen kokonaisluku. Katsotaanpa olla vaikeaa. Negatiivinen 1. Zero. Annetaan sen 50. Kiitos 50, ja niin ohjaus on nyt palannut. Kaikki kysymykset, sitten siitä? Niin? [Äänetön]. Sano uudestaan. Voi, hyvä kysymys. Joten saatat huomata rinnakkain tässä, että Olen sellainen leikkaus nurkkaan. Linjassa 12, sanon, saada myönteisiä int palauttaa int, vaan saman logiikka, se nyt aivan selvää, että line kuusi, sanon, että tärkein palaa int, mutta mitä meillä koskaan ollut missään meidän ohjelmia? Meillä ei ole koskaan ollut mainintaa Tämä avain sana paluuta. Joten käy ilmi, että C, vähintään versio siitä, että käytämme vuonna 1999, teknisesti, tämä on tapahtuu automaattisesti. Aina kun toteuttaa ohjelmaa ja olet toteuttaa toimia kutsutaan pää, että funktio palauttaa nollan Oletuksena jos et sano toisin, ja nolla on vain sopimusta. Maailma palaa nolla näin osoittaa, että kaikki on hyvin, tehokkaasti jättäen meille neljä miljardia mahdolliset asiat, jotka voivat mennä väärin niin, että jos palaamme yhteen, että saattaa merkitä koodi, joka tarkoittaa tätä asia meni pieleen. Voisimme palata kaksi, mikä tarkoittaa, tämä toinen asia meni pieleen. Voisimme palata neljä miljardia, joka tarkoittaa tämä muu asia meni pieleen. Ja jos nyt mieti omia PC-tai Mac, saatatte muistaa, että joskus saat arvoituksellinen virheilmoitukset ohjelmistojen, että olet käyttäen, ja joskus se on ihmisen ystävällinen kuvaus, mutta siellä on usein koodin tai numeron ruudulla? Jos tämä ei tule mieleen, vain pitää silmällä sitä. Se on yleensä mitä nämä koodit viittaavat. He sisältyvät Microsoft Word ja muita ohjelmia niin, että jos tiedosto Vikailmoitus yritys, voit kerro heille, oh, sain virheen numero 45. Ja jotkut ohjelmoija takaisin yritys voi katsoa, ​​että jopa hänen koodi ja sanoa, oh, että koska tein tämä virhe ja siksi käyttäjä sai tämän viestin. Mutta rehellisesti sanottuna, se on vain hieman häiritsevät ja vähän ikävä päätellä, että ainakin meidän Ensimmäinen muutamia ohjelmia, joten olemme on pois jättäminen. Mutta koko tämän ajan jokainen oman TOIMINNOT on salaa ollut tämän line lisätään automaattisesti sinulle kääntäjä, vain sopimuksen mukaan säästää aikaa. [Äänetön]. Sinun ei tarvitse sisällyttää se tärkein. Se on hienoa. Sinun täytyy sisällyttää se olisit täytäntöön toimivat näin. Muussa tapauksessa se tasainen out ei toimi. Mutta tärkein, se ei ole välttämätöntä. Vuonna viikon tai kaksi, me alkaa saada tuohon tapana kerran haluamme aloittaa merkitsee virheitä. Todella hyvä kysymys. Niin nopea sanallinen tauon mainita, että perjantaina, emme lounaalla sinänsä, mutta me voidaan ottaa illallinen jotkut opiskelijat ja henkilökunta. Jos haluat liittyä meihin, tuntuu vapaasti mennä cs50.net/rsvp. 18:00 perjantaina. Avaruus on, kuten aina, rajallinen, mutta me edelleen tehdä näitä on lähes viikoittain jos tilaa loppuu tällä viikolla. Joten jännitysnäytelmä, että jätimme pois Oli maanantaina, että jouset voi todella indeksoidaan, joka vain tarkoittaa, voi saada ensimmäisen merkin, Toinen merkki, kolmannen merkin ja niin edelleen, koska voit tehokkaasti ajatella merkkijono, kuten Hei, olevan tässä tapauksessa viisi kirjaimet laatikoita. Ja voit saada kaikki nämä laatikot mitä syntaksin teimme käyttöön maanantaina? Ne hakasuluissa näppäimistöllä. Se vain tarkoitti mennä paikkaan nolla. Meillä alkaa laskea nollaan, niin kiinnike nolla merkitsee h, kiinnike yksi merkitsee e, ja niin edelleen. Ja niin koko ajan, kun olemme olleet käyttämällä jousille ja kirjoittamalla "hei" ja "maailma" ja muita asioita näyttö, se on tallennettu laatikoihin näin. Ja arvaa. Mitä jokainen laatikko edustaa fyysisesti tietokoneesi sisälle? [Äänetön]. Anteeksi? Merkkiä. Joten merkki, että ainakin jouset, ja merkki on vain kahdeksan bittiä tai yhden tavun. Joten luultavasti ainakin epämääräisesti tuntee, että tietokoneessa on muistia. Se on kahdenlaisia ​​muistia vähintään. Yksi on kiintolevy, jossa voit tallentaa tavaraa pysyvästi, ja se on tyypillisesti suuri, joten voit olla elokuvia ja musiikkia ja niin edelleen. Sitten on toinen muisti kutsutaan RAM, R-A-M-, Random Access Muisti, ja se on muisti, , jota käytetään, kun tietokone on käynnissä, mutta jos tapahtuu sähkökatkos tai akku kuolee, jotain, joka on tallennettu RAM katoaa, jos menettää tehoaan kokonaan, koska se ei ole pysyviä. Sinulla on yleensä, näinä päivinä, keikka se, kaksi keikkaa, ehkä enemmän. Ja ylösalaisin RAM on, että se on paljon paljon, paljon nopeammin kuin kiintolevyt tai jopa SSD näinä päivinä, mutta se on yleensä kalliimpi niin sinulla on vähemmän. Joten tänään keskustelun todella viittaa RAM, että muisti, joka on olemassa vain siellä valtaa syötetään tietokoneeseen. Joten kun kirjoitat H-E-L-L-O, Enter näppäimistö, H on menossa yhteen tavun RAM-muistia, E on menossa toisen tavun RAM-muistia, kuten loput sanan. Joten muistaa mitä pystyimme tehdä viime kerralla oli tämä. Anna minun mennä eteenpäin ja avata tiedosto että vaadimme string.c, ja muistaa että se näytti hieman jotain tällaista. Saanen todella perua ja muuttaa sitä, mitä se näytti, merkkijonon pituus s. Joten katso ohjelma täältä. Olemme myös CS50 kirjastoon, jotta että voimme käyttää saada merkkijono. Olemme myös vakio io.h joten voimme käyttää printf. Miksi me myös string.h? Tämä oli uusi maanantaina. Joten halusimme merkkijonon pituus. Str Leng. Ihmiset päättivät vuosia sitten, Haluan vain olla ytimekäs. Sen sijaan, kutsuen sitä "merkkijonon pituus," kutsukaamme sitä "str pi" ja anna maailman luku ulos, ja niin se on mitä saamme pääsyn kanssa string.h. Tämä on tuttu. Tämä on tuttu. Tämä on tuttu. Tämä on vähän uutta. Linjassa 22 - ja palaamme tähän, mutta nyt tiedämme - ja te vain tiedä tätä saamasta lukea ohjeita tai jos tiesit C jo - saada string joskus voi tyriä. Jos käyttäjä on todella kontradiktorisen tai yhteistyöhaluinen ja hän vain ei kirjoita mitään näppäimistön tai tyypit niinkään näppäimistö, joka se varjoonsa tietokoneen muistiin, teoriassa saada string voisi palata jotain muuta kuin merkkijono. Se voisi palata erityinen arvo nimeltään NULL kokonaan isoilla kirjaimilla, N-U-L-L, ja tämä on vain ns Sentinel-arvo. Se on erityinen arvo, joka merkitsee jotain pahaa tapahtunut tässä tapauksessa. Se on ilman merkkijono. Joten null olen tarkistanut yksinkertaisesti niin, että pitkän tarinan lyhyesti, str Leng ja muita toimintoja, jotka tulevat C, jos he odottavat merkkijono mutta ohitit Koska merkkijono, jos ohitat ne nolla, tietokoneen tai ohjelman vain kaatua kokonaan. Se jumittui. Se heittää joitakin virheilmoituksen. Pahoja asioita tapahtuu. Joten, vaikka tämä on yhä ole hyvin määritelty - tämä tekee enemmän järkeä viikossa tai kaksi - linjassa 22, tämä on vain Esimerkiksi itse puolustava virheentarkistus vain jos kerran ulos miljoonaa jokin menee pieleen, on ainakin minun ohjelma ei kaatua. Joten jos s ei vastaa jotain pahaa, Olen tätä varten silmukka, ja tämä oli jossa meillä oli, että muut uusi pala syntaksin. Minulla on silmukka iteroimalla alkaen nolla asti pituus s. Ja sitten täällä, olin tulostamisen s kiinnike i, mutta miksi käytän% c kaikki äkillinen sijaan% s jopa vaikka s on merkkijono? Se on merkki, eikö? S on merkkijono, mutta s kiinnike jotain, s kiinnike i jossa i on nolla tai yksi tai kaksi, joka on yksittäinen merkin merkkijono, ja niin että printf on ilmoittanut, että se on todellakin merkin odottaa. Ja sitten muistaa, mitä teki tämä ohjelma itse tehdä? Painettu sitä sarakkeissa. Joo, aivan. Se vain painettu sana, jonka minä kirjoita sarake, yksi merkki per rivi. Katsotaanpa tätä uudelleen. Joten tee merkkijono. Käännetty OK. . / String. Saanen kirjoittaa H-E-L-L-O, Enter todellakin ymmärrän, yksi per rivi. Joten anna minun tehdä yksi optimointi täällä. Jos ajattelee sitä, varsinkin jos olet ohjelmoinut aikaisemmin, siellä on luultavasti tehottomuutta linja 24. Toisin sanoen, se ei ole välttämättä paras design. Suoraviivainen, ainakin kun muistaa, mitä str leng on, mutta se on tekee jotain tyhmää mahdollisesti. Mikä se voisi olla? [Äänetön]. Täsmälleen. Se tarkistamalla pituuden s joka kerta, vaikka H-E-L-L-O on aina menossa olla viisi merkkiä. Joka kerta Tämän silmukan kautta, viisi ei muutu. Saatan olla monesko i, mutta mitä on pituus s välein iteraatioon tämän silmukan? Se on viisi, se on viisi, se on viisi, ja Olen kuitenkin silti kysyä tätä kysymys uudestaan ​​ja uudestaan ​​ja uudestaan. Nyt rehellisesti, tietokone on niin pirun nopeasti, kukaan ei tule huomata ero tässä tapauksessa, mutta tällaiset köyhien suunnittelun päätöksiä voidaan alkaa lisätä ylös, jos kääntäjä itse ei yritä korjata tämän sinulle, joka se yleensä ei olisi kello ainakin laitteen. Joten aion tehdä tämän. Aion lisätä pilkkua ensimmäinen muuttuja, i. Aion antaa itselleni toisen muuttuja, kutsuen sitä n, vain yleissopimus numeroita, ja sitten olen menossa antaa n arvo merkkijono pituus s. Ja sitten aion muuttaa tilani on mitä? Aion muuttaa tilani ja kun i on pienempi kuin n. Joten nyt, kuinka monta kertaa olen tarkkailun pituus s? Kerran, mutta se on OK tarkistaa i vastaan n uudestaan ​​ja uudestaan, koska nyt ne arvot eivät ole todella muuttuu. Nyt nyt, vain tietää, että milloin soittaa toiminto, siellä on vähän yläpuolella, ei riitä lannistaa sinua todella ikinä käyttää toimintoja, mutta varmasti kun on koodiriviä pidä siitä - ja linjat saavat mielenkiintoisempaa ennen pitkää - jos siellä on mahdollisuus ajatella, jos olen kirjoita tämä koodi, kuinka monta kertaa se toteuttaa? Voit alkaa nähdä ajan suorituskykyä ohjelmia voidaan todellakin muuttaa. Itse asiassa yksi ongelma asettaa olemme tehnyt menneinä vuosina liittyy täytäntöönpanoa, kuten ehkä muistatte viikolla nolla, oikeinkirjoituksen tarkistus, mutta oikoluku, joka on suunniteltu tukemaan sanakirja 150000 plus sanoen, että annamme teille. Sinun olisi pitänyt kirjoittaa koodia, joka lataa nämä sanat RAM, niin tulee laatikot kuten näimme ruudulla hetki sitten, ja sen jälkeen niin nopeasti kuin voit voi, sinun täytyy pystyä vastaamaan Kysymys muodossa, on tämä sana väärin? Onko tämä sana kirjoitettu väärin? Onko tämä sana kirjoitettu väärin? Ja jotain, mitä olemme tehnyt menneinä vuosina on tehnyt siitä, vaikkakin opt-in vapaaehtoisuuden pohjalta kilpailu tapaisena, jolloin opiskelijat, jotka käyttävät vähemmän muistia ja vähemmän aikaa, vähemmän suorittimen käytön, päätyä kuplii ylös pienen johtaja aluksella tai ranking että laitamme Kurssin kotisivu Kuten olemme tehnyt menneinä vuosina. Joten jälleen, täysin valinnainen, mutta tämä puhuu suunnittelun mahdollisuuksia jotka ovat ennen kun alamme rakennuksen huipulla joitakin näistä kulmakivistä. Joten anna minun mennä takaisin tähän kaavio vain hetken ja paljastaa hieman jotain enemmän. Tämä todellakin on merkkijono, ja olemme ottaneet etuna muutaman kirjastot, standardin io.h joka on - Printf. Printf, muun muassa. cs50.h, joka on saada int ja saada string ja niin edelleen, string.h, joka oli str Leng. Mutta näyttää siltä, ​​siellä on vielä toinen. Suoraan sanottuna, siellä on paljon ja paljon header tiedostot julistaa toiminnot kirjastoille, mutta tämä ctype.h on todella olemaan hieman edullista, koska aion mennä eteenpäin ja toteuttaa yksi muu ohjelma täältä. Anna minun mennä eteenpäin ja avata jotain Kirjoitin aiemmin nimeltään capitalize.c, ja sallikaa Katso, miten tämä toimii. Huomaa, että olen käyttäen, tässä versiossa se, kolme tuttu tiedostoja. Huomaa, että linja 18, olen saada rivi tekstiä. Ilmoituksen linja 21, olen väittäen, että seuraava koodi on menossa hyödyntämään s, mitä käyttäjä kirjoittaa vuonna, ja miten teen sen? No, otan - opetus oli viimeisen kerran - Olen julistaa i ja n ja iteroimalla yli merkkejä merkkijonon. Ja mitä sitten on tämä lohko koodi linjaan 24, 27 tekee maallikon termein? Kirjain takaisin. Täsmälleen. Jos s kiinnike i - joten jos i: nnen luonnetta s, mikä on erityinen nieriää merkkijono, on suurempi kuin tai yhtä pieniksi ja - muistaa, että kaksinkertainen et- merkitsevät ja - ja sama merkki, s kiinnike i, on pienempi kuin tai yhtä suuri kuin pieniksi z, se tarkoittaa, että se on tai b tai c tai piste, piste, piste, tai z, mikä tarkoittaa se on pieniä. Mitä haluan tehdä tässä tapauksessa? No, voin tehdä tämän hieman arvoituksellisesti, mutta Katsotaanpa kiusaa tämän toisistaan. Aion soittaa printf, tulostaa% c koska haluan uusintapainoksia tämä merkki ruudulla. Olen sitten menossa ottamaan s kiinnike i, i: nnen merkin s, ja sitten miksi teen tätä pikku temppu täällä, lowercase miinus pääoman? Mikä on, että aikoo antaa minua yleisesti ottaen? [Äänetön]. Täsmälleen. En oikeastaan ​​muista - se oli 65 pääoman A. En todellakaan muistaa, mitä pienet kirjaimet on, mutta ei väliä. Tietokone tietää. Joten sanomalla, pieniksi miinus pääomaa, se on outoa olla vähentämällä yksi char toisesta, mutta mitä merkkiä alla huppu? Ne ovat vain numeroita. Joten mitä nämä numerot ovat, anna tietokoneen muista sitä eikä minua ihmisen. Niin pieniksi miinus pääoman on aio antaa minulle eroa. Se sattuu olemaan 32, ja se olisi tapauksessa pienillä b ja pääoman B ja niin edelleen. Se pysyy yhdenmukaisena, onneksi. Joten olen lähinnä sanomalla, ota pieni kirjain, vähennä pois, että standardi ero, ja että tehokkaasti muutoksia s kiinnike i: pieniksi ja tietysti isoja, ilman minun varsinaisesti ajatella noin tai muistaa, mitä olivat numerot puhuimme, kun kahdeksan vapaaehtoisia lavalle? Nyt Samaan aikaan muualla, jos se ei ole kirjain määritetty riviltä 24, vain tulostaa sen. Haluan vain koskettaa merkkejä, jotka olivat oikeastaan ​​perin pieniksi. Katsotaanpa tätä. Tee hyödyntää. Käännetty, OK. . / Hyödyntää. Ja haluan kirjoittaa H-E-L-L-O pieniä kirjaimia, Anna. Ja huomaa, että se muuttuu osaksi isoja. Anna minun tehdä tämä uudelleen eri sanaa. Entä D-A-V-I-D ensimmäinen D aktivoidaan nimi tyypillisesti on? Anna. Huomaa se on silti oikea. Se vain lähtönä, että ensimmäinen D ennallaan kautta, että muu rakentaa. Joten pitää mielessä, sitten pari asiaa täällä. Yksi, jos joskus haluat tarkistaa kaksi olosuhteet kerralla, voit ja niitä yhdessä ennakoidusti. Voit verrata merkkiä tällä tavalla ja tehokkaasti hoitaa merkit numeroita, mutta suoraan sanottuna, tämä on niin pirun arvoituksellinen En koskaan muistaa miten keksiä tämän tyhjästä ilman perusteluja sen läpi melko vähän aikaa. Eikö olisi ollut kiva, jos joku siellä kirjoitti toiminto nimeltään on alentaa tuota voisi vastata minulle tosi tai väärä, tämä merkki on pieniä? No onneksi kuka kirjoitti ctype.h teki juuri niin. Päästä minut tänne ja lisätä ctype C tyypit, ja nyt haluan mennä tänne ja kirjoittaa tämän linjan seuraavasti. Joten jos sitä kutsutaan on pienempi, väitän, s kiinnike i, niin aion poistaa nämä kaksi riviä kokonaan. Joten nyt joku muu, toivon, kirjoitti toiminto nimeltään on alhaisempi, ja se osoittautuu he tekivät ja he ilmoittivat se sisällä ctype.h. Ja nyt aion lähteä line 27 yksin, aion lähteä line 31 yksin, mutta huomaa, miten paljon olen tiukennetaan minun koodi. Nyt on puhtaampaa. Se on niin vaikea katsoa läpi koska nyt toiminto, lisäksi on niin ihanan nimeltään se vain mitä se sanoo. Joten nyt aion tallentaa. Aion loitontaa. Ja aivan kuten Scratch sinulla voisi olla Booleans, Loogiset arvot tosi tai väärä, se on juuri sitä, mitä on alentaa tehokkaasti palaa. Minäpä kääntää. Saanen uusinnassa. Ja nyt yritetään uudestaan, H-E-L-L-O, Enter. Se on melko hyvä. Ja yritä uudelleen, varmista, että I ei kierrä jotain. Se aktivoidaan samoin. Mutta tämä ei riitä, koska Toinen asia, että olen koskaan Muistan ellen työstää sitä todella huolellisesti, sanovat, paperi on hemmetin viiva. Eikö olisi mukavaa, jos siellä oli toiminto nimeltään ylempään? No se kääntyy siellä on ctype.h samoin. Aion mennä eteenpäin ja kirjoita - haluan tuoda että linja takaisin. Sen sijaan täällä, anna minun mennä eteenpäin ja sanoa, korvaa% c tuloksena kutsuvan tätä toimintoa ylempi on i: nnen luonnetta s. Ja nyt huomaa se alkaa hieman tasapainossa. Minun täytyy seurata, kuinka monta Suluissa Olen avataan ja suljetaan. Joten nyt se on jopa puhtaampaa. Nyt tämä ohjelma on paranemassa ja paremmin suunniteltu luultavasti koska se on paljon, paljon enemmän luettavaa, mutta se ei nyt korjata. Tee hyödyntää. . / Hyödyntää. H-E-L-L-O. Kokeillaan uudestaan, D-A-V-I-D. OK, joten olemme edelleen hyvässä kunnossa. Mutta nyt ylempi. Ehdotan, että vielä yksi hienostuneisuus voisimme tehdä, että olisi todella mukavaa, että voisi todella kiristä tätä koodia ja todella antaa meille viisi viidestä suunnittelun, esimerkiksi. Mikä olisi kiva päästä eroon? No, katsokaa kuinka pirun kauan tämä lohko koodi on vain tehdä jotain yksinkertaista. Nyt kun syrjään, koska saatat olla nähdään Super osassa viime viikonloppu, et ehdottomasti tarvitse aaltosulkeita kun sinulla on vain yksi koodiriviä, vaikka ehdotimme pitää ne niin, että se tekee paljon selvemmäksi, kuten Scratch U-muotoinen lohkot, mitä sisällä haara. Mutta eikö olisi mukavaa, jos ylempään, kun otetaan huomioon sen tulon, kääntyi sen isoiksi, jos se ei ole, ja mitä olisi ihana päinvastaisessa tapauksessa, jos se on jo isoja? Vain siirtää sitä kautta ja jätä se yksin. Joten ehkä se, että. Voisin yrittää vain toivoa että se, mutta haluan käyttöön toinenkin asia. Sen sijaan, että käyttämällä tätä sisäänrakennettu terminaali ikkuna täällä, muistaa, että Tämän neliön musta kuvake antaa sinulle isompi terminaali-ikkuna, että en voi täynnä seuloa jos haluan? Joten se kääntyy pois he tavallaan kumma nimetty, mutta siellä on näitä asioita kutsutaan man-sivut, ohjesivuja, mies lyhyitä, ja voin käyttää näitä by kirjoittamalla mies - mitä haluan tyyppi? Man ylempi. Ja nyt huomaa, jos on olemassa toimivat sisällä tietokoneen, vuonna Tässä tapauksessa laite, joka on vain käyttöjärjestelmä Linux, se menee antaa minulle hieman arvoituksellisesti joukko tuotos, mutta huomaat ajan mittaan se aina on muotoiltu melko paljon Sama niin alatte tottua siihen. Huomaa huipulla ylemmän ja ilmeisesti on samat asiakirjat ja alentaa. Kuka kirjoitti se vähentää joidenkin kulmat ja laita se kaikki yhdellä sivulla. Nämä asiat "tarkoitukseen elämä on muuntaa kirjeen ylä-tai pieniä. Huomaa, että alle Synopsis, man-sivulta opettaa minulle, mitä tiedosto olen sisällyttää käyttää tätä asia. Se antaa minulle allekirjoitukset nämä toimintoihin, molemmat, jopa vaikka me nyt vain välitä yksi. Tässä on nyt kuvaus. Ylempään muuntaa kirjeen c isoiksi, jos mahdollista. Vielä ole, että opettavaista, mutta haluan nyt näyttää alle palauttaa arvon, asia joka on palautettu. Joten palautettu arvo on, että muunnetaan kirjain tai c jos muuntaminen ei ollut mahdollista. Mikä on c? Alkuperäisen luonteen. Omaperäinen ja tiedämme että taas menee jopa synopsis, ja kuka kirjoitti tämän toiminto juuri päättänyt, että tulo että ylempään ja alempaan on vain mielivaltaisesti olemaan nimeltään c. He olisivat voineet kutsua sitä eniten mitään he haluavat, mutta he pitivät sitä yksinkertaista kuin c. Joten olen kuullut man-sivulta. Tämä lause vakuuttaa minulle, että jos se ei ole pieni kirjain, se on aio vain antaa minulle takaisin c, joka on täydellinen, eli en voi päästä eroon minun muuten kunnossa. Joten anna minun mennä takaisin gedit, ja Nyt haluan vain tehdä tämän. Aion kopioida minun printf selvitys. Aion mennä eteenpäin ja oikeus sisällä silmukka tulostaa että ulos, ja saada eroon nyt koko tämä jos rakennelma. Ei ollut huono idea, ja se oli hyvin paljon oikeita ja yhdenmukaisia kaikki olemme saarnanneet, mutta vain ei ole välttämätöntä. Heti kun huomaat joitakin kirjasto toiminto on olemassa, että joku muu kirjoitti, tai ehkä kirjoitit muualla tiedoston, voit käyttää sitä ja todella alkaa tiukentaa koodi. Ja kun sanon asioita, kuten hyvä tyyli, siitä, että tämä henkilö nimeltä toiminto ylä, tai aiemmin on pienempi on ihanan hyödyllistä, koska he ovat hyvin kuvaava. Et halua soittaa toiminnot x ja y ja z, jotka ovat paljon, paljon vähemmän merkitystä. Kysyttävää, että sarja parannuksia? Niin riittää kun sanoo yhden noutoruokapaikkoja on niin kuin teidän oma ongelma set - ehkä ongelma setin, mutta varmasti P asettaa kaksi ja edelleen, jopa kun he oikein ei välttämättä tarkoita, että ne ovat täydellisiä vain vielä tai erityisen hyvin suunniteltu. Se muun akselin alkaa miettiä. Joten tämä oli merkkijono sisäpuolelle tietokoneen muistiin, mutta jos sinulla on koko joukko merkkejä, kuten H-E-L-L-O sisällä RAM, ja kai että sinua ohjelmassa soittaa saada merkkijono useita kertoja, jotta voit soittaa saada string kerran, sinun soittaa saada merkkijono uudelleen. No, mitä tulee tapahtuu ajan myötä? Toisin sanoen, jos sinulla on rivi koodi, joskin asiayhteydestään, kuten string s saa - Tehdään tämä. String nimi vastaa saada merkkijono. Joten kai Koodirivin tarkoitetaan kysyä käyttäjältä hänen nimensä. Tämä seuraava rivi koodia on tarkoitus kysyä käyttäjälle hänen koulun ja Tämän seuraavalle riville, ja niin edelleen. Oletetaan, että meillä pitää kysyä käyttäjältä toiselle ja toinen ja toinen merkkijono. He aikovat jäädä muistiin samaan aikaan. Yksi ei aio hakata muita. Koulu ei korvaa muita. Mutta mistä ne kaikki päätyvät muistia? No, jos alamme piirtää ruudulle, joita voimme käyttää tätä asia täällä kuin liitutaulu, jos tämä musta suorakulmio edustaa tietokoneeni muisti, aion mielivaltaisesti alkaa jakamalla se ylös vähän neliöitä, joista jokainen edustaa yhden tavun muistia. Suoraan sanottuna, jos sinulla on gigatavu RAM-muistia näinä päivinä, sinulla on miljardi tavua muistin tietokoneen, niin miljardia näistä neliöt. Joten riittävää todeta, tämä ei oikeastaan ​​mittakaavassa. Mutta voisimme pitää piirustus kaikki nämä selvästikään ole mittakaavassa neliöitä, ja tämä kollektiivisesti edustaa tietokoneen muistiin. Nyt meidän täytyy vain tehdä piste, piste, piste. Eli toisin sanoen, kun kehottaa nyt käyttäjälle get merkkijono antaa minulle string, mitä tapahtuu? Jos käyttäjä on "hei", joka päättyy vuonna H-E-L-L-O. Mutta oletetaan Sitten käyttäjä tyyppejä - Oikeastaan ​​minun ei olisi pitänyt tehdä Hei, koska pyydämme heitä heidän nimensä. Joten mennään takaisin, jos en voi tehdä tätä. Joten jos en kirjoita D-A-V-I-D minun nimeni, mutta muistuttaa, että toisella rivillä koodi on saada string jälleen saada kouluun. Missä on se sana, että käyttäjä tyyppejä menossa seuraavaksi? No, ehkä se tulee mennä H-A-R-V-A-R-D. Joten vaikka olen piirretään sen kaksi riviä, tämä on vain koko joukko tavua oman tietokoneen RAM. Ei ongelma nyt, koska nyt jos olen käyttämällä RAM tässä erittäin kohtuullinen mutta tavallaan naiivi tapa, mitä voit ei ilmeisesti erottaa? Kun yksi alkaa ja missä yksi päättyy, eikö? He tavallaan hämärtää yhdessä. Joten se kääntyy pois tietokoneen ei tee tätä. Let Me todella selata ajassa taaksepäin muutama kirjain, ja Harvardin sijasta menee heti sen jälkeen, kun käyttäjän nimi, käyttäjä todella saa, takana kohtauksia, erikoismerkit lisätty tietokoneen häntä. / 0, joka tunnetaan myös nul merkki ärsyttävän nimeltään N-U-L, ei N-U-L-L, mutta voit kirjoittaa sen / 0. Se on vain kaikki nollabittejä on markkeri välinen ensimmäinen sana, joka käyttäjän kirjoitetaan ja toinen. Joten Harvardin nyt itse asiassa päätyy koska tämä merkkijono ja yksi / 0. Eli toisin sanoen, kun nämä Sentinel-arvot, kahdeksan peräkkäistä nolla bittiä, voit nyt alkaa erottaa yhden merkin toisesta. Joten koko tämän ajan mitä "hei" on todella "hei" kanssa / 0, ja Samaan aikaan, saattaa hyvin olla hieman enemmän RAM sisällä tietokoneen. Anna minun tehdä yksi asia nyt. On käynyt ilmi, että kaikki nämä neliöt olemme piirustus, ne ovat, kyllä, jouset, mutta yleisemmin nämä asiat ovat paneelit. Matriisi on vain kimpale muisti se takaisin takaisin takaisin takaisin, ja yleensä käytät array tavalla Tämän hakasulkeen merkintätapa. Joten aiomme nähdä nämä melko vähän ajan, mutta haluan mennä eteenpäin ja avata, kutsukaamme se vanhenee. Ja huomaa, mitä voimme tehdä näitä samoja temppuja, hieman hieman syntaksin täällä. Joten line 17 tämän ohjelman - Oikeastaan ​​haluan ajaa ohjelman ensimmäinen jotta voimme nähdä, mitä tämä asia tekee. Soitan tehdä ikuisuuden kokoamaan tätä ohjelmaa. . / Ikäisille. Kuinka monta ihmistä huoneessa? Soita se kolme. Age of ensimmäinen henkilö? 18, 19, ja 20. Ja nyt hieman naurettavan, minä vain tehnyt ohjelman, joka ikääntyy nämä kolme ihmistä. Joten on selvästi mahdollisuus pitämään hauskaa aritmeettinen täällä. Onneksi matematiikka on oikea. 18 meni 19, 19 meni 20 ja niin edelleen. Mutta mitä todella tarkoitus olla havainnollinen tässä on se, miten me tallentamiseen nämä kolme ihmisten ikäisille. Saanen zoomata, mitä on täällä. Ensin nämä muutaman ensimmäisen rivin pitäisi saada tuttuja. Olen vain kehotukset käyttäjä ihmisten määrä huoneessa. Sitten Käytän saada int ja tehdä aikaa tehdä tämän uudestaan ​​ja uudestaan ​​ja uudestaan. Olemme nähneet, että malli ennen, mutta linja 27 on uusi ja itse asiassa varsin hyödyllisiä, ja tulee enemmän hyötyä. Huomaa, että mitä eri linjassa 27 on, että olen ilmeisesti julistaa int nimeltään aikoihin, mutta odota. Se ei ole vain int ikäisille. Ei näitä hakasulkeissa jonka sisällä on n. Joten kiinnike n tässä yhteydessä, ei sisällä printf selvitys täällä, mutta Tässä ainoa linja 27, tämä linja on sanomalla, anna minulle n ints, joista kukin on tyyppiä int. Joten tämä on ämpäri, niin sanotusti, Tässä tapauksessa kolme kokonaislukua takaisin takaisin takaisin, jotta voin tehokkaasti on kolme muuttujaa. Vaihtoehto, olla selkeä, olisi tämä. Jos haluaisin ensin opiskelijan ikä, voisin tehdä tämän. Jos haluaisin toisen opiskelijan ikä voisin tehdä tämän. Jos haluaisin kolmannen opiskelijan ikä, voisin tehdä tämän. Ja Jumala varjelkoon meidän kaikkien ikä tässä huoneessa - Tarkoitan, tämä on pahus paljon kopio, liitä uudestaan ​​ja uudestaan ​​ja uudestaan. Ja plus kun olen kokoamaan tätä ohjelmaa, jos toinen opiskelija kävelee yli ulos Tämän oven, nyt minun numero muuttujien on virheellinen. Joten mitä mukavaa noin array on yhtä Heti kun käynnistät tunne itseäsi kopioimalla, kertoimet ovat se ole paras lähestymistapa. Matriisi on dynaaminen mahdollisesti. En tiedä etukäteen, kuinka monta ihmistä tulevat olemaan huoneessa, mutta tiedän tarvitsen n niistä, ja minä selvittää n, kun aika tulee. Tämä koodiriviä nyt sitä, antaa minulle kimpale muisti, joka näyttää tältä jossa laatikoiden lukumäärä ruudulla on täysin riippuvainen n että käyttäjän kirjoitetaan sisään Joten nyt loput tämän ohjelman oikeastaan ​​aika samanlainen kuin mitä me vain teki merkkiä. Huomaan on silmukka alkaen linjan 30. Niin oikeassa kun saan array, I kerrata y on nolla on jopa n. Minulla on vain tämä opettavainen printf viestin vain sanoa, anna minulle ikä henkilö #% i, niin numero yksi, numero kaksi, numero kolme. Ja miksi teen tätä? Suoraan sanottuna, ihmiset haluavat laskea yhdestä ylös taas tietotekniikan tutkijoita, nollaan asti. tietojenkäsittelyasiantuntijat aio käyttää tällaista ohjelmaa, joten olemme menossa juuri alkaa laskea yksi kuten tavalliset ihmiset. Ja nyt linja 33, huomaa hieman eri pala syntaksin. I: nnen iän muuttujan tyyppiä array on menossa int. Ja nyt lopuksi, tämä on vain aritmeettinen tänne. Päätin erillisessä silmukan vaatia aikaa kuluu, ja nyt tässä erillinen silmukka, nämä rivit suorittaa. Vuoden päästä, henkilö aion i vuotias, mutta huomaa tätä ei ole muuttujan i. Tämä on nyt% I int. Ja huomaa ensimmäisenä paikanvaraajassa I plug in i + 1, joten laskemme kuin normaali ihminen. Ja sitten arvon ikänsä, sillä i vuotias, otan aikojen kiinnike i - ja miksi teen plus yksi täällä? He vain vuotiaita. Se on typerän valinnan ohjelmia. He vain vuotiaiden yksi vuosi. Voisin kirjoittaa minkä tahansa numeron, joka Olen todella haluavat siellä. Joten mitä oikeastaan ​​kaikki merkitystä täällä? No, minäpä itse kelaamaan taaksepäin tänne ja maalata kuva mitä edessänne. Mitä me voidaan tehdä meidän seuraava Ongelma asettaa kaksi on leikittelevät maailman salauksen. Joten tämä on merkkijono, niin sekvenssi useita merkkiä, ja mitä ei tämä kertoo? Se ei ole online-versio ja dioja. Olen siis väittävät, että tämä vastaa tätä, tyhmä mainos monta vuotta sitten, että voisi itse muistaa yksi sen alkuperää. Joten tämä on esimerkki salauksen tai salausta. On käynyt ilmi, että jos haluat itse lähettää tietoa tai jakaa tietoa jonkun turvallisesti, kuin tällaisen viestin, voit ryntäily kirjaimet. Mutta yleensä, sanat ovat ei sekoiteta satunnaisesti. He permutoitu tavalla tai muuttanut jotenkin niin, että - oho. Se on hauska spoileri seuraavan kerran. Joten voit kartoittaa, mikä on ilmeisesti O B. Huomaa, että linjat ylös arvo-viisas. Ilmeisesti r tulee e. Ilmeisesti F-H-E-R tulee S-U-R-E. Niin se kääntyy pois siellä kartoitus ja Tässä tapauksessa on tyhmä kartoitus jos joku on tajunnut sitä? Tämä on jotain kutsutaan Rot 13, Kierrä 13. Se on typerin salauksen mekanismeja, koska se kirjaimellisesti vain lisää 13 jokainen kirjeitä, tyhmä siinä mielessä, että jos vain on vähän vapaa-aikaa kädet ja kynä, tai et vain sitä mieltä, että läpi pään, voit kokeilla kaikki mahdolliset lisäykset - yksi, kaksi, kolme, piste, piste, piste, 25 vain kiertää kaikki aakkoset, ja lopulta, voit selvittää mitä tämä viesti on. Joten jos et jotain tämän alakoulussa kulkee viestejä paras ystävä, jos alakoulussa opettaja yksinkertaisesti lukea läpi viestin ja raa'alla pakotti ratkaisun, olet ehkä saanut vastauksen, että. Nyt tietenkin, todellisessa maailmassa, salakirjoitus on kehittyneempi. Tämä on pätkä tekstiä tietokonejärjestelmän, joka on käyttäjätunnukset ja salasanoja, koska lähes kaikki meidän tehdä, ja tämä on mitä salasanasi saattaa näyttäisi, jos tallennettu kova ajaa mutta salatussa muodossa. Tämä ei ole vain kierto kirjeitä, A on B, ja B on C. Tämä on paljon kehittyneempää, mutta se käyttää mitä yleisesti tunnettu salainen avain salausta. Tämä kuva kertoo seuraavat tarina muutaman kuvakkeet. Vasemmalla, meillä on mitä soitamme pelkkää tekstiä. Kun maailma salauksen, tavallinen teksti on vain alkuperäisen viestin kirjoitettu Englanti tai ranska tai millään kielellä. Jos haluat salata sitä, ohitamme se kuvallisesti kautta riippulukko, joten jotkut sellainen algoritmi, jokin funktio tai ohjelma, joku kirjoitti että sekoittaa kirjaimet toivottavasti enemmän monimutkaisesti kuin vain lisäämällä 13 kuhunkin niistä. Mitä saat pois, että prosessin Keskellä on nimeltään salatun. Joten tavallaan seksikäs sana. Se vain tarkoittaa, se on salattu versio pelkkää tekstiä. Ja vain jos sinulla on, että sama salaisuus, 13 tai miinus 13, pystytkö purkaa viestiä vastaan. Joten Harjoitus Kaksi muun muassa voit tehdä jos Hacker Edition, sinun täytyy kirjoittaa koodia crack nämä salasanat, mietitään mitä ne olivat ja miten he olivat salattu, vaikka me ei anna sinulle hieman ohjauksen matkan varrella. Standard Edition, esittelemme pari salaus-, salaus mekanismeja, yksi nimeltään Caesar, yksi kutsutaan Vigenere, jotka ovat edelleen rotaatio salaus jos tulee jotain, B tulee jotain, mutta sinun täytyy tehdä se ohjelmallisesti koska siellä todellakin olla salaisuus avain mukana, jotka on tyypillisesti useita tai avainsanan, että vain lähettäjän ja vastaanottajan näiden Viestien pitäisi ymmärtää. Nyt tämä todella on ruumiillistumia todellisessa maailmassa. Tämä esimerkiksi on vähän orpo Annien salainen dekooderi rengas, ja sinä voi itse toteuttaa nämä rotaatio ciphers - Tulee jotain, B tulee jotain - parilla pyörät, yksi ulkopuolella, yksi sisäpuolella siten, että jos käännät pyörää tai rengas, voit itse riviin kirjaimia eri kirjaimia, saada salainen koodi. Ja niin kuin jännitysnäytelmä tänään, mitä ajattelin tehdä, on vähän takaisku, että jos otat TV 24. joulukuuta, voit katsella Elokuvan loputtomiin varten 24 tuntia peräkkäin. Mutta tänään, Avaan sen tänne ja antaa meille vain kaksi minuuttia pedagogisesti asiaa Joulutarina hieman mies nimeltä Ralphie. [VIDEOTOISTOSTA] -On se tiedossa iikka että Ralph Parker nimitetään jäsen Pikku Orphan Annie salaisuus ympyrä ja on oikeutettu arvosanoin ja hyödyt esiintyviä siihen. -Allekirjoitettu, Pikku Orphan Annie. Nimikirjoituksellaan, Pierre Andre musteella. Kunnianosoituksia ja etuja jo iässä yhdeksän. [Huutaminen RADIO] Tule, mennään sen kanssa. En tarvitse kaikki muu noin salakuljettajia ja merirosvoja. -Kuuntele huomenna yö tehdä seikkailu musta merirosvolaiva. Nyt on aika Annien Secret Viesti sinulle jäsenille salaisen ympyrän. Muista, lapset. Vain jäsenet Annien Secret Circle pystyy purkamaan Annien salainen viesti. Muista, Annie on kiinni sinusta. Aseta nastat B2. Tässä on viesti. 12, 11, 2 - -Olen ensimmäinen salaisen kokouksen. -25, 14, 11, 18, 16 - -Pierre oli suuri ääni tänään. Voisin kertoa, että illan viesti oli todella tärkeä. -3, 25. Se viesti Annie itse. Muista, älä kerro kenellekään. -90 Sekuntia myöhemmin, olen ainoa huone talossa, jossa poika yhdeksän voisi istua rauhassa ja purkaa. Aha, B. menin seuraavaan. E. Ensimmäinen sana on "olla." S. Se oli tulossa helpompaa nyt. U. 25. Se on R. -Tule, Ralphie. Minun on mentävä. -Tulen kohta alas, Ma. Gee hurahtaa. -T. O. Muista. Muista mitä? Mikä oli Pikku Orphan Annie yrittää sanoa? Muista mitä? -Ralphie, Randy on mentävä. Voisitko tulla ulos? -Okei, Ma. Tulen ulos. -Aloin lähempänä nyt. Jännitys oli kauhea. Mikä se oli? Planeetan kohtalo voi vaakalaudalla. -Ralphie, Randy mentävä. -Tulen kohta ulos itkeä ääneen. -Melkein. Sormet lensi. Mieleni oli teräs ansa. Jokainen pore värähtelemään. Se oli melkein selvä. Kyllä, kyllä, kyllä, kyllä, kyllä. -Muista juoda Ovaltine. Ovaltine? Crummy kaupallinen? Paskiainen. [END VIDEOTOISTOSTA] KAIUTTIMEN 1: Tämä on CS50, ja että on ongelma asettaa kaksi. Nähdään ensi viikolla. SPEAKER 2: Seuraavalla CS50, tämä tapahtuu. SPEAKER 1: Niin yksi aihe meillä ei katsoin tähän mennessä on että funktio-osoittimia. Nyt toiminto osoitin on vain osoite julkisen toiminto, mutta aivan kuten - poika -