Tip:
Highlight text to annotate it
X
>> 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 -