[MUSIIKKIA]
>> DAVID J. MALAN: Selvﺣ۳, tﺣ۳mﺣ۳ on CS50.
Ja tﺣ۳mﺣ۳ on viikolla yksi.
Niin muistaa, ettﺣ۳ viimeisen kerran viikolla nolla, keskityimme pﺣ۳ﺣ۳ttelyﺣ۳.
Ja me siirtynyt kuin se, Scratch, graafinen ohjelmointi
kieli ystﺣ۳vﺣ۳mme MIT: n Media Lab.
>> Ja Scratch, teimme tutkia ajatuksia, kuten toiminnot, ja olosuhteet,
ja silmukat ja muuttujia, ja jopa tapahtumia, ja langat, ja enemmﺣ۳n.
Ja tﺣ۳nﺣ۳ﺣ۳n, aiomme jatkaa nﺣ۳itﺣ۳ ideoita,
ja todella ottaa niitﺣ۳ myﺣﭘnnetty, mutta kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ ne
toiselle kielelle tunnetaan C. Nyt, C on perinteisempi kieltﺣ۳.
Se on alemmalla tasolla kieli, jos haluatte.
>> Se on puhtaasti tekstimuodossa.
Ja niin ensi silmﺣ۳yksellﺣ۳, se on kaikki tulee nﺣ۳yttﺣ۳mﺣ۳ﺣ۳n varsin arvoituksellinen
jos et ole koskaan ohjelmoida ennen.
Aiomme olla puolipistettﺣ۳, ja suluissa,
ja aaltosulkei-, ja enemmﺣ۳n.
Mutta ymmﺣ۳rtﺣ۳ﺣ۳, ettﺣ۳ vaikka vaikka syntaksi on
noin nﺣ۳yttﺣ۳ﺣ۳ hieman tuntemattomia useimpiin teistﺣ۳, katso aiemmin, ettﺣ۳.
Ja yrittﺣ۳ﺣ۳ nﺣ۳hdﺣ۳ ideoita jotka ovat todellakin tuttu,
koska tﺣ۳ﺣ۳llﺣ۳ viikolla yhdessﺣ۳ mitﺣ۳ alamme tehdﺣ۳ on vertailla,
aluksi, Scratch versus C.
>> Niinpﺣ۳ esimerkiksi, muistaa, ettﺣ۳ kun me toteutetaan ensimmﺣ۳inen ohjelmiemme
viimeksi meillﺣ۳ oli lohko, joka nﺣ۳ytti vﺣ۳hﺣ۳n jotain tﺣ۳mﺣ۳n kaltaisia ﻗﻗosia, kun
Vihreﺣ۳ lippu napsautetaan, ja sitten meillﺣ۳ oli yksi tai useampi palapelin palaset sen alapuolella,
tﺣ۳ssﺣ۳ tapauksessa sanoa, hei maailma.
Joten todellakin Scratch, kun klikkaa ettﺣ۳ Vihreﺣ۳ lippu
ajaa minun ohjelma, niin puhumaan, nﺣ۳mﺣ۳ ovat
lohkot saavat toteutettu, tai juosta.
Ja erityisesti, Scratch sanoi, hei, maailma.
>> Nyt olen voinut mﺣ۳ﺣ۳ritellyt eri sanoja tﺣ۳ﺣ۳llﺣ۳.
Mutta saa nﺣ۳hdﺣ۳, ettﺣ۳ todellakin, monet Nﺣ۳iden blocks-- ja todellakin
C monet functions-- voi olla parametrized tai rﺣ۳ﺣ۳tﺣ۳lﺣﭘityjﺣ۳
tehdﺣ۳ eri asioita.
Itse asiassa C jos haluat muuntaa, nyt,
Tﺣ۳mﺣ۳n Scratch-ohjelma Tﺣ۳mﺣ۳n muuta kieltﺣ۳,
aiomme kirjoittaa vﺣ۳hﺣ۳n jotain tﺣ۳llaista.
>> Myﺣﭘnnettﺣ۳kﺣﭘﺣﭘn, on jonkin verran tuntemattomia syntaksin siellﺣ۳ todennﺣ۳kﺣﭘisesti, int,
ja suluissa, ja mitﺣ۳tﺣﭘn.
Mutta printf-- vaikka olisit sitﺣ۳ mieltﺣ۳, ettﺣ۳ olisi vain tulostaa.
Mutta print tarkoittaa print alustettu, kuten tulemme pian nﺣ۳hdﺣ۳.
Tﺣ۳mﺣ۳ kirjaimellisesti tulostaa nﺣ۳ytﺣﭘlle tahansa
on sisﺣ۳llﺣ۳ niitﺣ۳ sulkuja, jotka tietenkin tﺣ۳ssﺣ۳ tapauksessa on, Hello World.
>> Mutta huomaat joitakin muita syntaksi, jotkut lainausmerkkeihin,
ettﺣ۳ suluissa lopussa, semi-paksusuolen ja vastaavat.
Joten siellﺣ۳ on hieman ylﺣ۳puolella, niin sanotusti sekﺣ۳ kognitiivisesti
ja syntaktisesti, ettﺣ۳ aiomme tﺣ۳ytyy muistaa ennen pitkﺣ۳ﺣ۳.
Mutta ymmﺣ۳rtﺣ۳ﺣ۳, ettﺣ۳ kﺣ۳ytﺣ۳ntﺣﭘﺣ۳, tﺣ۳mﺣ۳ alkaa hyppﺣ۳ﺣ۳ ulos sinua.
>> Itse asiassa, nyt keskittyﺣ۳, ettﺣ۳ yksi toiminto specifically-- tﺣ۳ssﺣ۳ tapauksessa,
tervehtimﺣ۳ﺣ۳n maailmassa.
Sano on funktio.
Hello world on sen parametri, tai argumentti, sen rﺣ۳ﺣ۳tﺣ۳lﺣﭘinnin.
>> Ja vastaavuuden C on vain olemaan tﺣ۳mﺣ۳ rivi tﺣ۳ﺣ۳llﺣ۳,
missﺣ۳ printf vastaa, sanoa, kaksinkertainen lainattu merkkijono, hei
maailma on vastaava, tietenkin, ja mitﺣ۳ on valkoisen laatikon siellﺣ۳.
Ja kenoviivan n, vaikka hieman outoja ja poissa Scratch,
yksinkertaisesti tulee olemaan vaikutusta me will katso tietokoneessa, kuten Mac tai PC,
vain siirtﺣ۳mﺣ۳llﺣ۳ kursori seuraavalle riville.
Se on kuin lyﺣﭘdﺣ۳ Enter-nﺣ۳ppﺣ۳intﺣ۳.
>> Niinpﺣ۳ nﺣ۳emme, ettﺣ۳ uudelleen ennen pitkﺣ۳ﺣ۳.
Mutta ensin katsomaan tﺣ۳tﺣ۳ Toinen esimerkki tapauksessa silmukoita.
Meillﺣ۳ oli tﺣ۳mﺣ۳ ikuisesti silmukan viimeinen kerta, joka oli sarja palapelin palaset
ettﺣ۳ teki jotain kirjaimellisesti forever-- tﺣ۳ssﺣ۳ tapauksessa,
sanoa, hei maailma, hello world, Hello World, Hello World.
Joten se pﺣ۳ﺣ۳ttymﺣ۳ttﺣﭘmﺣ۳ﺣ۳n silmukkaan virhe.
>> In C, jos haluamme toteuttaa tﺣ۳mﺣ۳n Sama ajatus, voisimme yksinkertaisesti tehdﺣ۳.
Vaikka totta, printf hei world-- nyt kun taas vain semanttisesti, millaisia
loihtii ajatus tehdﺣ۳ jotain uudestaan ﻗﻗja uudestaan, ja uudestaan,
ja kuinka kauan?
No, true-- muistuttaa, ettﺣ۳ totta on pelkﺣ۳stﺣ۳ﺣ۳n tai yhdessﺣ۳.
>> Ja totta on, tietenkin, aina totta.
Joten se on tavallaan merkityksetﺣﭘn lausuma vain sanoa totta.
Mutta tosiaan, tﺣ۳mﺣ۳ on tarkoituksellista, sillﺣ۳ jos totta on vain aina totta,
kuin vaikka totta vain merkitsee, jos hieman epﺣ۳suorasti,
ettﺣ۳ seuraava riviﺣ۳ koodia vﺣ۳lillﺣ۳ ne aaltosulkeita
pitﺣ۳isi vain suorittaa uudestaan, ja uudestaan, ja uudelleen, ja koskaan todella lopettaa.
>> Mutta jos et halua loop lopettaa, koska me
viime kerralla kanssa jotain Tﺣ۳mﺣ۳n, toista seuraavat 50 kertaa,
C voimme tehdﺣ۳ saman mitﺣ۳ kutsutaan varten loop-- avainsanan
ei ole aikaa, mutta varten.
Ja sitten meillﺣ۳ on joitakin uusia syntaksin tﺣ۳ﺣ۳llﺣ۳, int i on yhtﺣ۳ kuin 0, i alle 50,
i ++.
Ja palaamme siihen.
Mutta tﺣ۳mﺣ۳ on yksinkertaisesti kuinka olisimme kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ joukko Scratch lohkojen
joukolle C riviﺣ۳ koodia.
>> Samaan aikaan, harkitse muuttujia.
Ja itse asiassa, me vain Nﺣ۳in yhden hetki sitten.
Ja kun kyseessﺣ۳ on Scratch, jos me halusi julistaa muuttuja nimeltﺣ۳ i
i on kokonaisluku, vain numero, ja haluamme asettaa sen jotain arvoa,
me kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳ oranssi lohko here-- asetetaan i 0.
>> Ja nﺣ۳emme tﺣ۳nﺣ۳ﺣ۳n pidemmﺣ۳lle, aivan kuten viime viikolla,
ohjelmoijat tekevﺣ۳t melkein aina alkaa laskea nollasta, oikeastaan
sopimuksen mukaan.
Vaan myﺣﭘs siksi, hae keskustelumme binary,
pienin mﺣ۳ﺣ۳rﺣ۳ voit edustavat minkﺣ۳ tahansa mﺣ۳ﺣ۳rﺣ۳n bittejﺣ۳
on vain olemaan 0 itseﺣ۳ﺣ۳n.
Ja niin me yleensﺣ۳ alkaa alustetaan jopa meidﺣ۳n muuttujia 0.
>> Ja C tekemﺣ۳ﺣ۳n samoin, aiomme sanoa int
kokonaisluku, en vain sopimuksen mukaan.
Voisin ovat kutsuneet tﺣ۳tﺣ۳ muuttujaa mitﺣ۳ haluan, kuten Scratch.
Ja sitten on yhtﺣ۳ kuin 0 vain valtuutettuja arvo 0 oikealta
ja ottaa sen muuttujan, tai sﺣ۳ilytysastia siellﺣ۳, vasemmalla.
Ja puolipistettﺣ۳ kuten me see-- ja olemme nﺣ۳hneet muutamia nﺣ۳istﺣ۳ already--
tarkoittaa vain loppuun ajatuksen.
Jatka tehdﺣ۳ jotain muuta viivoille, jotka seuraavat.
>> Nyt entﺣ۳ Boolen ilmaisuja?
Muista, ettﺣ۳ Scratch, nﺣ۳mﺣ۳ olivat ilmaisuja
jotka ovat joko totta tai false-- kysymyksiﺣ۳,
todella, jotka ovat joko tosi tai epﺣ۳tosi.
Joten jos kyseessﺣ۳ on Scratch, voisimme esittﺣ۳ﺣ۳ yksinkertaisen kysymyksen nﺣ۳in,
on i alle 50?
Joten i, jﺣ۳lleen, on kokonaisluku.
Ehkﺣ۳ kﺣ۳ytﺣ۳mme sitﺣ۳ joka Scratch-ohjelma
seurata pisteet Tai jotain sellaista.
Joten tﺣ۳mﺣ۳ syntaksin tﺣ۳ﺣ۳llﺣ۳ Scratch vain tarkoittaa, on i alle 50?
No, onneksi jotain on yksinkertaisia ﻗﻗC. Ja kﺣ۳ﺣ۳ntﺣ۳ﺣ۳,
Tﺣ۳ssﺣ۳ me yksinkertaisesti sanoa i vﺣ۳hemmﺣ۳n yli 50, tutuilla avaimen
nﺣ۳ppﺣ۳imistﺣﭘllﺣ۳.
>> Sillﺣ۳ vﺣ۳lin, jos halusi sanoa jotain yleisempﺣ۳ﺣ۳,
kuin hyvin, on x alle y, jossa kukin x ja y ovat itse muuttujia?
Voimme tehdﺣ۳ sama asia C, kunhan olemme
luoneet nﺣ۳mﺣ۳ muuttujat jo.
Ja nﺣ۳emme, miten tehdﺣ۳ ennen pitkﺣ۳ﺣ۳.
Haluamme yksinkertaisesti sanoa x vﺣ۳hemmﺣ۳n kuin y.
>> Joten olet alkanut katso joitakin yhtﺣ۳lﺣ۳isyyksiﺣ۳.
Ja ne ihmiset, jotka ovat tehneet Scratch olivat varmasti
innoittamana joitakin nﺣ۳istﺣ۳ perusajatuksia.
Ja nﺣ۳et tﺣ۳llaista syntaksin monissa languages--
ei vain Scratch, ei juuri C, mutta Python,
ja JavaScript, ja muita kieliﺣ۳ vielﺣ۳.
>> Tarkastellaan toinen konstruktio C: ltﺣ۳, kﺣ۳sitteestﺣ۳ ehdon,
tekemﺣ۳ssﺣ۳ jotain ehdollisesti.
Jos jokin on totta, tehdﺣ۳ tﺣ۳mﺣ۳.
Jos jotain muuta on totta, tehdﺣ۳.
Se on erﺣ۳ﺣ۳nlainen ohjelmointi vastine tienhaaraan.
Ehkﺣ۳ se on kaksisuuntainen haarukka, kolmitie haarukka, tai enemmﺣ۳n.
Ja Scratch, olisimme nﺣ۳hnyt jotain tﺣ۳llaista.
>> Eli tﺣ۳mﺣ۳ on iso.
Mutta pitﺣ۳vﺣ۳t suhteellisen yksinkertaisuus logiikan.
Jos x on pienempi kuin y, niin sano x on pienempi kuin y, muuta, jos x on suurempi kuin y,
sitten sanoa x on suurempi kuin y.
Ja sitten, loogisesti, jos luulet takaisin Scratch
tai vain oman ihmisen intuitio, hyvin, jos x ei ole suurempi kuin y ja x
ei ole pienempi kuin y, niin tietenkin x tulee olemaan yhtﺣ۳ kuin y.
Joten tﺣ۳ssﺣ۳ tapauksessa, jonka pesintﺣ۳ nﺣ۳mﺣ۳ Scratch lohkot,
voimme saavuttaa kolme tapa tienhaaraan?
>> Samalla jos haluamme tehdﺣ۳ sen C, se luultavasti
nﺣ۳yttﺣ۳ﺣ۳ hieman simpler-- ainakin kun saat perehtynyt syntaksia.
Jos x on pienempi kuin y, printf x on pienempi kuin y.
Else jos x on suurempi kuin y, printf x on suurempi kuin y.
Else printf x on yhtﺣ۳ suuri kuin y-- ja, jﺣ۳lleen, kanssa kenoviiva pﺣ۳ﺣ۳ttyy juuri
nﺣ۳itﺣ۳ uusia rivejﺣ۳ niin, ettﺣ۳ jos oikeastaan ﻗﻗjuoksi tﺣ۳llaista ohjelmaa
se vain siirtﺣ۳ﺣ۳ kohdistin lopulta
seuraavalle riville nﺣ۳ytﺣﭘn.
>> Nyt puolestaan ﻗﻗScratch ollut muita kehittyneempiﺣ۳ ominaisuuksia, vain
joista osa aiomme aluksi siirtyﺣ۳ maailmaan C.
Ja yksi niistﺣ۳ oli kutsutaan listan Scratch.
Ja tﺣ۳mﺣ۳ oli erityinen tyyppinen muuttuja
sallittu voit tallentaa useita asioita se takaisin, takaisin, takaisin, takaisin.
>> C, sillﺣ۳ ei ole luetteloita, sinﺣ۳nsﺣ۳, mutta jotain
jotka ovat yleisesti nimeltﺣ۳ﺣ۳n paneelit, vaikka me
palata myﺣﭘhemmin tﺣ۳mﺣ۳n lukukauden katsomalla jotain
kutsutaan lista, tai oikeastaan ﻗﻗlinkitetty lista.
Mutta nyt, lﺣ۳hin vastaava C meille
tulee olemaan jotain kutsutaan jono.
Ja joukko on yksinkertaisesti erityinen muuttuja
jonka avulla voit tallentaa tietoja takaisin, takaisin, takaisin, takaisin.
>> Ja todellakin, Scratch, jos halusimme pﺣ۳ﺣ۳stﺣ۳
ensimmﺣ۳inen osa array tai list-- ja aion kutsua sitﺣ۳,
Sopimuksen mukaan argv, argumentti vektori, mutta siitﺣ۳ lisﺣ۳ﺣ۳ ennen pitkﺣ۳ﺣ۳.
Jos Haluan saada ensimmﺣ۳isen elementin of argv, maailmassa Scratch
te itse tehdﺣ۳ yleensﺣ۳ aloita laskien 1.
>> Ja niin voisin saada erﺣ۳ 1 argv.
Se, miten MIT toteutettu kﺣ۳site listojen.
Mutta C, aion yksinkertaisemmin vain sanoa, argv,
joka taas on nimi minun list-- tai olla selvﺣ۳ﺣ۳, jono.
Ja jos haluan ensimmﺣ۳isen elementtejﺣ۳, aion
kﺣ۳yttﺣ۳ﺣ۳ hakasulkeissa johon ehkﺣ۳ ei usein alle nﺣ۳ppﺣ۳imistﺣﭘn.
>> Mutta 0 tarkoittaa vain, saada minulle ensimmﺣ۳inen.
Joten vﺣ۳lillﺣ۳ ja Ajan myﺣﭘtﺣ۳ aiomme
alkaa nﺣ۳hdﺣ۳ nﺣ۳mﺣ۳ dikotomioiden vﺣ۳lillﺣ۳ Scratch ja C,
jolloin Scratch kﺣ۳yttﺣ۳ﺣ۳ yhtﺣ۳.
Me C kﺣ۳yttﺣ۳ﺣ۳ 0 tﺣ۳ﺣ۳llﺣ۳.
Mutta voit nopeasti nﺣ۳hdﺣ۳ kun ymmﺣ۳rrﺣ۳t
perustan jokaisen kielen, joka nﺣ۳mﺣ۳ asiat alkavat saada sitﺣ۳kin
tuttuja kﺣ۳ytﺣ۳nnﺣﭘn kautta ja kﺣ۳ytﺣ۳ntﺣﭘ.
>> Joten todella nﺣ۳yttﺣ۳vﺣ۳t nyt ohjelmaa.
Tﺣ۳ssﺣ۳ on ensimmﺣ۳inen meidﺣ۳n C lﺣ۳hdekoodi tﺣ۳ydellistﺣ۳ ohjelmia.
Ja ohjelma aiomme tarjottavaa vastiketta
on yksi, joka on vastaava kyseiseen aiemmin Scratch pala.
>> Joten tﺣ۳ﺣ۳llﺣ۳, meillﺣ۳ on mitﺣ۳ luultavasti yksinkertaisin C-ohjelma
voit kirjoittaa, ettﺣ۳ todella tekee jotain.
Nyt me nﺣ۳kemﺣ۳ttﺣ۳, nyt, on muun muassa,
vakio io.h, ja nﺣ۳mﺣ۳ kulma suluissa, ja int ja tyhjﺣ۳,
ja aaltosulkumerkkien ja vastaavat.
>> Ja Haluan vain keskittyﺣ۳ mitﺣ۳, ainakin intuitiivisesti,
ponnahtavat ulos sinua jo.
Itse tﺣ۳rkein, en vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳ tiedﺣ۳, mitﺣ۳ tﺣ۳mﺣ۳ on,
mutta aivan kuten Scratch oli, ettﺣ۳ kun Vihreﺣ۳ lippu napsautetaan palapelin pala,
niin tekee C ohjelmointikielellﺣ۳ on tﺣ۳rkein koodinpﺣ۳tkﺣ۳, joka
saa suorittaa oletusarvoisesti. Ja, todellakin, se kirjaimellisesti aiotaan kutsua main.
>> Joten tﺣ۳rkein on funktio.
Ja se on erityinen toiminto, joka on olemassa C, ettﺣ۳ kun kﺣ۳ynnistﺣ۳ﺣ۳ ohjelman
se on tﺣ۳rkein, joka saa hoitaa oletuksena. Kun maailma Scratch,
se oli yleensﺣ۳ silloin, kun vihreﺣ۳ lippu napsautetaan, joka sai kﺣ۳ynnistetﺣ۳ﺣ۳n oletusarvona.
>> Samalla olemme nﺣ۳hneet tﺣ۳mﺣ۳n ennenkin, printf tai tulostaa muotoiltu, se
olemaan funktio mukana C, sekﺣ۳ koko joukko muita,
ettﺣ۳ tulee aika ja aika uudelleen, jotta tekemﺣ۳ﺣ۳n juuri
nimensﺣ۳, tulostaa jotain.
Mitﺣ۳ haluat tulostaa?
No, nﺣ۳emme, ettﺣ۳ sulkemalla merkkiﺣ۳
kuten these-- Hello World, kenoviiva n lainausmerkkeihin,
voimme kertoa printf tarkalleen mitﺣ۳ tulostaa ruudulla.
>> Mutta jotta tehdﺣ۳ ettﺣ۳, valitettavasti
otettava jotain, joka on jo arvoituksellinen meille ihmisille,
mutta ainakin se on hieman readable-- terﺣ۳vﺣ۳ sisﺣ۳ltﺣ۳vﺣ۳t, standardi io.h, int,
main, mitﺣ۳tﺣﭘn, printf, kaikki maaginen loitsut me juuri nﺣ۳hnyt ruudulla.
Mutta meidﺣ۳n oikeastaan ﻗﻗtarvitse mennﺣ۳ enemmﺣ۳n mystistﺣ۳ edelleen.
Meidﺣ۳n tﺣ۳ytyy ensin kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ koodia kirjoittaisimme konekielelle.
Ja muistaa viime viikolla, ettﺣ۳ koneet, ainakin ne tiedﺣ۳mme tﺣ۳ﺣ۳llﺣ۳,
lopussa pﺣ۳ivﺣ۳n ainoa ymmﺣ۳rtﺣ۳ﺣ۳ nollia ja ykkﺣﭘsiﺣ۳.
>> Ja minun Jumalani, jos olisimme kirjoittaa nﺣ۳mﺣ۳ nollia ja ykkﺣﭘsiﺣ۳ itse ohjelmaan,
se olisi hyvin, hyvin nopeasti ottaa hauskaa pois mitﺣ۳ﺣ۳n.
Mutta nﺣ۳yttﺣ۳ﺣ۳ siltﺣ۳, ﻗﻗper viime viikolla, ettﺣ۳ nﺣ۳mﺣ۳ kuviot nollia ja ykkﺣﭘsiﺣ۳
vain on erityinen merkitys.
Tietyissﺣ۳ yhteyksissﺣ۳, ne saattavat merkitﺣ۳ numeroita.
>> Joissakin yhteyksissﺣ۳, he saattavat merkitﺣ۳ kirjaimia, tai vﺣ۳reihin tai useita
Muiden abstraktioita siinﺣ۳ sen.
Mutta aivan kuten tietokoneessa on CPU, Central Processing Unit,
tai aivot tietokoneesi sisﺣ۳lle.
Se on yleensﺣ۳ Intel sisﺣ۳llﺣ۳, koska se on
yksi suurimmista yrityksistﺣ۳ joka tekee suorittimia tietokoneita.
>> No, Intel prosessorit ja muut yksinkertaisesti ovat pﺣ۳ﺣ۳ttﺣ۳neet etukﺣ۳teen
ettﺣ۳ tietyt kuviot nollien ja niistﺣ۳ tarkoittaa tiettyjﺣ۳ asioita.
Tiettyjﺣ۳ uusia nollia ja ykkﺣﭘsiﺣ۳ tarkoittaa, tulostaa nﺣ۳yttﺣﭘﺣﭘn,
tai lisﺣ۳tﺣ۳ nﺣ۳mﺣ۳ kaksi lukua, tai vﺣ۳hentﺣ۳ﺣ۳ nﺣ۳mﺣ۳ kaksi lukua,
tai siirtﺣ۳ﺣ۳ tﺣ۳mﺣ۳ pala tiedot minun tietokoneen muistiin tﺣ۳nne,
tai useita muita erittﺣ۳in alhainen, mutta lopulta hyﺣﭘdyllinen, toimintaa.
Mutta onneksi me ihmiset eivﺣ۳t aio tarvitse tietﺣ۳ﺣ۳ tﺣ۳mﺣ۳ taso.
Todellakin, aivan kuten viime kerralla, jossa hajamielinen uudestaan ﻗﻗja uudestaan, ja uudestaan,
rakennus hyvin alhainen primitives kuten nollia ja ykkﺣﭘsiﺣ۳
korkeamman tason kﺣ۳sitteitﺣ۳ kuten numeroita ja kirjaimia,
ja vﺣ۳rit, ja lisﺣ۳ﺣ۳, jotta voimme kuin ohjelmoijat
seistﺣ۳ harteille muita, jotka ovat tulleet ennen meitﺣ۳
ja kﺣ۳yttﺣ۳ﺣ۳ ohjelmistoa, ettﺣ۳ muut ihmiset ovat kirjoittaneet ennen us--
nimittﺣ۳in ohjelmia kutsutaan kﺣ۳ﺣ۳ntﺣ۳jiﺣ۳.
>> C on kieli, on yleensﺣ۳ koottu,
joka tarkoittaa muunnettu lﺣ۳hdekoodi konekielelle.
Erityisesti mitﺣ۳ tﺣ۳mﺣ۳ tarkoittaa on, ettﺣ۳ jos olet saanut lﺣ۳hde
koodi, joka itse kirjoittaa, koska me pian tulee aivan hetken ruudulla,
ja haluat muuntaa sen lopulta kone code--
ne nollia ja ykkﺣﭘsiﺣ۳, jotka vain Mac- tai PC
understands-- sinulla ensimmﺣ۳inen ruokkia ettﺣ۳ lﺣ۳hdekoodi kuin
tulo erityiseen ohjelma nimeltﺣ۳ kﺣ۳ﺣ۳ntﺣ۳jﺣ۳,
jonka lﺣ۳htﺣﭘ me on nﺣ۳et on konekielelle.
Ja todellakin, viimeksi puhuimme noin, todella, lopussa pﺣ۳ivﺣ۳,
ongelmanratkaisu.
Sinulla tuloa.
Ja olet saanut lﺣ۳hdﺣﭘt.
Ja olet saanut jonkinlaista algoritmin keskellﺣ۳.
>> Algoritmit voivat varmasti ohjelmistossa,
kuten nﺣ۳imme kanssa pseudokoodina viime viikolla ja kuten nﺣ۳emme todellisia koodia
Tﺣ۳mﺣ۳ viikko.
Ja niin kﺣ۳ﺣ۳ntﺣ۳jﺣ۳n oikeastaan ﻗﻗvain on joukko algoritmeja sisﺣ۳llﺣ۳
siitﺣ۳, ettﺣ۳ osaavat muuntaa erityinen avainsanoja,
kuten tﺣ۳rkein, ja printf, ja muut, jotka olemme juuri
Nﺣ۳in osaksi malleja nollia ja ne, jotka Intel sisﺣ۳llﺣ۳ ja muita suorittimia
todella ymmﺣ۳rtﺣ۳ﺣ۳.
Miten teemme tﺣ۳mﺣ۳n?
Mistﺣ۳ saamme kﺣ۳ﺣ۳ntﺣ۳jﺣ۳?
>> Useimmat meistﺣ۳ tﺣ۳ﺣ۳llﺣ۳ on Mac tai PC.
Ja kﺣ۳ytﺣ۳t Mac OS, tai Windows tai Linux tai Solaris,
tai useita muita kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳t.
Ja todellakin, voisimme mennﺣ۳ ulos radalle
ja lataa kﺣ۳ﺣ۳ntﺣ۳jﺣ۳ Mac- tai PC
juuri sinun kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳ﺣ۳n.
Mutta me kaikki olla eri sivuja, niin sanotusti.
Meidﺣ۳n tﺣ۳ytyisi hieman eri kokoonpanoissa.
Ja asiat eivﺣ۳t toimi kaikille sama.
Ja, todellakin, nﺣ۳inﺣ۳ pﺣ۳ivinﺣ۳ monet meistﺣ۳ eivﺣ۳t kﺣ۳ytﺣ۳
ohjelmisto, joka toimii vain meidﺣ۳n lﺣ۳ppﺣ۳reissﺣ۳.
Sen sijaan kﺣ۳yttﺣ۳ﺣ۳ jotain kuten selaimen, joka
pystymme kﺣ۳yttﺣ۳mﺣ۳ﺣ۳n web-pohjainen sovellukset pilvessﺣ۳.
Ja myﺣﭘhemmin tﺣ۳mﺣ۳n lukukauden, teemme juuri nﺣ۳in.
Me kirjoittaa sovelluksia tai ohjelmistoa kﺣ۳yttﺣ۳en code-- ei C,
mutta muita kieliﺣ۳, kuten Python ja JavaScript-- jotka kulkevat pilvessﺣ۳.
>> Ja tehdﺣ۳ niin, me itse lukukauden aikana
todella kﺣ۳yttﺣ۳ﺣ۳ pilvipohjaisen ympﺣ۳ristﺣﭘ tunnetaan CS50 IDE.
Tﺣ۳mﺣ۳ on web-pohjainen ohjelmointi ympﺣ۳ristﺣﭘ, tai yhtenﺣ۳inen kehittﺣ۳minen
ympﺣ۳ristﺣﭘ, Ide, joka on rakennettu huipulla joitakin avoimen lﺣ۳hdekoodin ohjelmistoja kutsutaan Cloud 9.
Ja olemme tehneet joitakin pedagogisia yksinkertaistuksia se
jotta salata tiettyjﺣ۳ ominaisuuksia, ensimmﺣ۳isten viikkojen emme tarvitse,
jonka jﺣ۳lkeen voit paljastavat heitﺣ۳ ja useimmat
mitﺣ۳ haluat ympﺣ۳ristﺣﭘn kanssa.
>> Ja se antaa meille myﺣﭘs, ettﺣ۳ esiasenna tiettyjﺣ۳ ohjelmistoja.
Asioita, kuten ns CS50 kirjasto, josta pian nﺣ۳hdﺣ۳
antaa meille C joidenkin lisﺣ۳toimintoja.
Joten jos menet lopulta CS50.io, sinua pyydetﺣ۳ﺣ۳n kirjautumaan sisﺣ۳ﺣ۳n,
ja kun teet ja luoda tilin ilmaiseksi,
voit jolla siirrytﺣ۳ﺣ۳n ympﺣ۳ristﺣﭘ, joka nﺣ۳yttﺣ۳ﺣ۳ aivan nﺣ۳in.
>> Nyt tﺣ۳mﺣ۳ on oletustila.
Kaikki on mukavaa ja kirkas ruudulla.
Monet meistﺣ۳ on tapana tyﺣﭘskentelevﺣ۳t CS50 pala, joka on
melko myﺣﭘhﺣ۳ﺣ۳n yﺣﭘhﺣﭘn.
Ja niin jotkut ehkﺣ۳ mieluummin muuttaa sen Yﺣﭘkﺣ۳yttﺣﭘtilassa niin sanotusti.
>> Mutta lopulta, mitﺣ۳ olet nﺣ۳kemﺣ۳ﺣ۳n sisﺣ۳llﺣ۳ CS50 IDE
on kolme erillistﺣ۳ areas-- alue vasemmalla, jossa
tiedostot ovat menossa olevan pilvi, alue ylhﺣ۳ﺣ۳llﺣ۳ oikealla
jossa koodi tulee olemaan muokattavissa.
Voit avata yksittﺣ۳isiﺣ۳ vﺣ۳lilehtiﺣ۳ mihinkﺣ۳ﺣ۳n ohjelmaan
ettﺣ۳ kirjoitat tﺣ۳mﺣ۳n lukukauden sisﺣ۳llﺣ۳ Kyseisen oikeassa ylﺣ۳kulmassa.
Ja sitten useimmat arcanely, ja vielﺣ۳ voimakkaasti,
tulee olemaan tﺣ۳mﺣ۳ asia on pohja tunnetaan pﺣ۳ﺣ۳teikkunaan.
>> Tﺣ۳mﺣ۳ on vanha koulu Command Line Interface,
tai CLI, joka sallii voit suorittaa komentoja
on computer-- tﺣ۳ssﺣ۳ tapauksessa tietokone uudelleen cloud--
tehdﺣ۳ asioita, kuten kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ koodia lﺣ۳hdekoodista konekielelle,
ajaa ohjelmia, tai aloittaa web-palvelin, tai pﺣ۳ﺣ۳stﺣ۳ kﺣ۳siksi tietokantaan,
ja useita muita tekniikoita ettﺣ۳ aloitamme kﺣ۳yttﺣ۳ﺣ۳ ennen pitkﺣ۳ﺣ۳.
Mutta sinne, olemme menossa oikeastaan
mennﺣ۳ verkossa ja aloittaa pelaamisen.
Ja tehdﺣ۳ niin, nyt ensimmﺣ۳inen aloittaa puuhastelun kanssa tﺣ۳rkein,
ja kirjoittaa pﺣ۳ﺣ۳osan ohjelmaa.
Ja nyt kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳ toimintoa printf, jota kﺣ۳ytimme aiemmin,
yksinkertaisesti sanoa jotain.
>> Joten tﺣ۳ssﺣ۳ olen jo sisﺣ۳llﺣ۳ CS50 IDE.
Olen kirjautunut etukﺣ۳teen.
Ja minﺣ۳ tﺣ۳ysin seulotaan ikkunan.
Ja niin, lopulta, sinun Myﺣﭘs tulevina ongelmia
seuraa samanlainen vaiheita, tarjoaa online-dokumentaatio.
Joten sinun ei tarvitse huolehtia imevﺣ۳ﺣ۳ jokainen pieni tekninen askel
ettﺣ۳ en tﺣ۳nﺣ۳ﺣ۳n.
>> Mutta saat seuraavanlaisen nﺣ۳ytﺣﭘn.
Satun olemaan yﺣﭘtilassa.
Ja voit kirkastaa kaiken up poistamalla yﺣﭘtila.
Ja lopussa on pﺣ۳ivﺣ۳, olet menossa nﺣ۳hdﺣ۳
nﺣ۳mﺣ۳ kolme areas-- tiedosto selain vasemmalla, koodi vﺣ۳lilehdet ylﺣﭘs,
ja pﺣ۳ﺣ۳teikkuna alareunassa.
>> Anna minun mennﺣ۳ eteenpﺣ۳in ja kirjoittaa ensimmﺣ۳inen ohjelma.
Aion ennaltaehkﺣ۳isevﺣ۳sti mene File, Save, ja pelastaa minun tiedosto hello.c.
Itse Sopimuksen mukaan mitﺣ۳ﺣ۳n ohjelmaa me kirjoitus, joka on kirjoitettu C-kielellﺣ۳
tulee nimetﺣ۳ jotain piste c, sopimuksen mukaan.
Joten aion nimetﺣ۳ sen hello.c, koska Haluan vain sanoa hei maailmaan.
Nyt aion zoomata ulos ja sitten Tallenna.
Ja kaikki Minulla on tﺣ۳ssﺣ۳ nyt on vﺣ۳lilehti jossa voin alkaa kirjoittaa koodia.
>> Tﺣ۳mﺣ۳ ei aio koota.
Tﺣ۳mﺣ۳ ei tarkoita mitﺣ۳ﺣ۳n.
Ja joten vaikka I muunnetaan tﺣ۳mﺣ۳ nollia ja ykkﺣﭘsiﺣ۳,
CPU tulee ole idea, mitﺣ۳ tapahtuu ympﺣ۳rillﺣ۳.
Mutta jos kirjoitan radoilla, jotka eivﺣ۳t tﺣ۳smﺣ۳ﺣ۳ kanssa C: n conventions-- C olento,
uudelleen, tﺣ۳mﺣ۳ language-- kanssa syntaksi kuten Tﺣ۳mﺣ۳n printf hei world-- ja olen
mennyt mukava Nﺣ۳in ajan mittaan.
Joten en usko tein tahansa painovirheitﺣ۳.
>> Mutta, poikkeuksetta, ensimmﺣ۳inen aika teet tﺣ۳mﺣ۳n, et.
Ja mitﺣ۳ aion tehdﺣ۳ ehkﺣ۳ kovin hyvin toimi sinulle ensimmﺣ۳istﺣ۳ kertaa.
Ja se on tﺣ۳ysin OK, koska juuri nyt te
voi vain nﺣ۳hdﺣ۳ paljon uutuuden, mutta ajan mittaan kun saat tuttuja
Tﺣ۳mﺣ۳n ympﺣ۳ristﺣﭘﺣﭘn, ja tﺣ۳llﺣ۳ kielellﺣ۳, ja toiset,
voit alkaa nﺣ۳hdﺣ۳ asioita, ovat joko oikea tai vﺣ۳ﺣ۳rﺣ۳.
>> Ja tﺣ۳mﺣ۳ on mitﺣ۳ opetus kaverit ja kurssi
avustajat saada niin hyvﺣ۳ ajan, on tiputtelua virheitﺣ۳ tai vikoja koodissa.
Mutta Vﺣ۳itﺣ۳n, ettﺣ۳ siellﺣ۳ Ei vikoja tﺣ۳mﺣ۳n koodin.
Joten Haluan nyt ohjelman suorittamiseen.
>> Nyt yksin Mac- tai PC, olen tapana kaksoinﺣ۳pﺣ۳yttﺣ۳mﺣ۳llﺣ۳ kuvakkeita
kun haluan ajaa joitakin ohjelmaan.
Mutta se ei ole tﺣ۳ﺣ۳llﺣ۳ mallin.
Tﺣ۳ssﺣ۳ ympﺣ۳ristﺣﭘssﺣ۳, joka on CS50 IDE.
Olemme kﺣ۳yttﺣﭘympﺣ۳ristﺣﭘn nimeltﺣ۳ﺣ۳n Linux.
Linux muistuttaa toinen kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳, yleisesti tunnettua
kuten Unix.
Ja Linux tunnetaan erityisesti jonka Command Line Ympﺣ۳ristﺣﭘ, CLI.
Nyt kﺣ۳ytﺣ۳mme tiettyﺣ۳ maku Linux kutsutaan Ubuntu.
Ja Ubuntu on yksinkertaisesti tietyt versio Linux.
>> Mutta nﺣ۳mﺣ۳ Linuxin nﺣ۳inﺣ۳ pﺣ۳ivinﺣ۳ tehdﺣ۳ todella tulevat graafisia kﺣ۳yttﺣﭘliittymiﺣ۳.
Ja yksi satumme kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳ssﺣ۳ web-pohjainen.
Joten tﺣ۳mﺣ۳ voisi nﺣ۳yttﺣ۳ﺣ۳ jopa hieman erilainen kuin jotain
itse voisi olla nﺣ۳hnyt tai ajaa ohi.
>> Joten aion mennﺣ۳ eteenpﺣ۳in nyt ja toimi seuraavasti.
Olen tallentanut tﺣ۳mﺣ۳ kuva hello.c.
Aion mennﺣ۳ eteenpﺣ۳in ja tyyppi clanghello.c Niin Clang
ettﺣ۳ C-kieli on kﺣ۳ﺣ۳ntﺣ۳jﺣ۳.
Se valmiiksi asennettuna CS50 IDE.
Ja voit ehdottomasti ladata ja asentaa tﺣ۳mﺣ۳n itse Mac tai PC.
>> Mutta jﺣ۳lleen kerran, sinun ei tarvitse kaikkia esikokoonpano tehty.
Joten nyt, olen vain aikoo juosta clanghello.c.
Ja nyt huomaa syntaksin tﺣ۳ssﺣ۳ lopulta
ymmﺣ۳rtﺣ۳ﺣ۳ vain sitﺣ۳, ettﺣ۳ minulla on kansion tai hakemiston nimeltﺣ۳ Tyﺣﭘtila.
Tﺣ۳mﺣ۳ dollarin merkki on vain yleissopimus for merkitys, kirjoita komennot tﺣ۳ﺣ۳llﺣ۳.
>> Se, mitﺣ۳ kutsutaan nopea, vain sopimuksen mukaan on dollarin merkki.
Ja jos menen eteenpﺣ۳in nyt ja valitse Anna, mikﺣ۳ﺣ۳n ei tunnu tapahtuneen.
Mutta se on itse asiassa hyvﺣ۳ asia.
Mitﺣ۳ vﺣ۳hemmﺣ۳n, mikﺣ۳ tapahtuu nﺣ۳ytﺣﭘn, sitﺣ۳ todennﺣ۳kﺣﭘisemmin
koodi on olla oikea, ainakin syntaktisesti.
>> Joten jos haluan suorittaa tﺣ۳mﺣ۳n ohjelma, mitﺣ۳ teen?
No, kﺣ۳y ilmi, ettﺣ۳ oletusnimi sopimuksen mukaan
ohjelmia kun et mﺣ۳ﺣ۳ritﺣ۳ Nimeﺣ۳ ohjelma on vain a.out.
Ja tﺣ۳mﺣ۳ syntaksi liian, luultavasti tutustua ennen pitkﺣ۳ﺣ۳.
>> Dot slash tarkoittaa vain, hei, CS50 IDE, suorita ohjelma nimeltﺣ۳ a.out
se sisﺣ۳llﺣ۳ minun hakemistossa.
Tﺣ۳mﺣ۳ piste tarkoittaa nykyisen hakemiston.
Ja nﺣ۳emme, mitﺣ۳ muut tﺣ۳llaiset sekvenssit Merkkien merkitsee ennen pitkﺣ۳ﺣ۳.
>> Joten tﺣ۳ssﺣ۳ sitﺣ۳ mennﺣ۳ﺣ۳n, Enter, Hello World.
Ja huomaat, ettﺣ۳ mitﺣ۳ tapahtui?
Se ei ainoastaan ﻗﻗtulostaa Hello World.
Se myﺣﭘs muutti kursori seuraavalle riville.
>> Ja miksi se oli?
Mikﺣ۳ oli koodi ettﺣ۳ me kirjoitti ennen ettﺣ۳ varmistetaan, ettﺣ۳ kursori
siirry seuraavalle riville?
Hassua noin tietokone on se vain menee
tehdﺣ۳ kirjaimellisesti mitﺣ۳ kerrot sitﺣ۳ tekemﺣ۳ﺣ۳n.
>> Joten jos kerrot sen printf hei, pilkku, avaruus, maailma, lﺣ۳hellﺣ۳ lainaus,
se kirjaimellisesti vain menossa tulostaa ne merkit.
Mutta minulla oli tﺣ۳mﺣ۳ erikoismerkki lopussa, muistaa, kenoviiva n.
Ja juuri varmistettu ettﺣ۳ merkki oli
seuraavalle riville nﺣ۳ytﺣﭘn.
>> Itse asiassa, anna minun mennﺣ۳ ja tehdﺣ۳ tﺣ۳mﺣ۳n.
Anna minun mennﺣ۳ eteenpﺣ۳in ja poistaa.
Nyt, huomaa, ettﺣ۳ alkuun minun nﺣ۳ytﺣﭘn siellﺣ۳
pieni punainen valo vﺣ۳lilehti ilmaisee,
hei, et ole tallentanut tiedostoa.
Joten aion edetﺣ۳ ohjaus S tai komento S, tallenna tiedosto.
Nyt goes-- meni varten moment-- vihreﺣ۳.
Ja nyt se takaisin vain on lﺣ۳heinen ikoni.
>> Jos minﺣ۳ nyt ajaa clanghello.c uudelleen, Enter, piste slash, a.out, Enter,
nﺣ۳et, ettﺣ۳ se vielﺣ۳ toimi.
Mutta se luultavasti hieman buginen.
Juuri nyt minun prompt-- tyﺣﭘtila, ja sitten, ettﺣ۳ dollarin merkki,
ja sitten minun todellinen prompt-- on kaikki samalla linjalla.
Joten tﺣ۳mﺣ۳ varmasti esteettinen vika, vaikka se ei oikeastaan ﻗﻗlooginen vika.
>> Joten aion kumota mitﺣ۳ tein.
Aion uusintana a.out.
Huomatkaa Olen lisﺣ۳nnyt Rivinvaihtomerkkiﺣ۳ takaisin.
Olen tallentanut tiedoston.
>> Joten aion uusintana a.out, and-- dammit, bug, bug tarkoittaa virhe.
Eli vika on, ettﺣ۳ vaikka Lisﺣ۳sin kenoviivan n siellﺣ۳,
uudelleen tallennettu, uudelleen juoksi ohjelma, kﺣ۳yttﺣ۳ytyminen oli sama.
Miksi olisi?
>> Olen puuttuu askel, eikﺣﭘ?
Tﺣ۳mﺣ۳ keskeinen askel aikaisemmin oli, ettﺣ۳ olet to-- kun muutat lﺣ۳hdekoodia,
se kﺣ۳ﺣ۳ntyy pois myﺣﭘs ajaa se lﺣ۳pi kﺣ۳ﺣ۳ntﺣ۳jﺣ۳
uudelleen niin saat uuden koneen koodi.
Ja konekoodi nollat ﻗﻗja ykkﺣﭘset,
tulevat olemaan lﺣ۳hes identtiset, mutta ei tﺣ۳ydellisesti niin, koska tarvitsemme,
tietenkin, ettﺣ۳ uusi rivi.
>> Joten korjata, aion tarvitsevat uusintana clanghello.c, kirjoita, dot
slash, a.out.
Ja nyt, hei maailma on palannut missﺣ۳ Odotan sen olevan.
Tﺣ۳mﺣ۳ kaikki on siis hieno ja hyvﺣ۳.
Mutta a.out on tyhmﺣ۳ nimi varten ohjelma, vaikka se sattuu olemaan,
historiallisista syistﺣ۳ default-- tarkoittaa kokoonpano lﺣ۳hdﺣﭘt.
>> Mutta anna minun mennﺣ۳ eteenpﺣ۳in tﺣ۳ﺣ۳llﺣ۳ ja tehdﺣ۳ tﺣ۳mﺣ۳n eri tavalla.
Haluan hei maailma -ohjelma todella kutsua hei.
Joten jos se olisi kuvake minun tyﺣﭘpﺣﭘydﺣ۳lle, se ei olisi a.out.
Sitﺣ۳ olisi nimeltﺣ۳ﺣ۳n hei.
>> Joten tehdﺣ۳ tﺣ۳mﺣ۳n, se kﺣ۳ﺣ۳ntyy pois ettﺣ۳ Clang, kuten monet ohjelmat,
tukee komentoriviargumentteja, tai lippuja, tai kytkimiﺣ۳,
joka yksinkertaisesti vaikuttaa sen kﺣ۳yttﺣ۳ytymiseen.
Erityisesti Clang tukee viiva o lippu, joka sitten ottaa toinen sana.
Tﺣ۳ssﺣ۳ tapauksessa, minﺣ۳ mielivaltaisesti, mutta kohtuudella, kutsuvat sitﺣ۳ hei.
Mutta voisin kutsua sitﺣ۳ jotain Haluan, paitsi a.out, joka
olisi melko lisﺣ۳ksi piste.
>> Ja sitten vain mﺣ۳ﺣ۳ritellﺣ۳ nimi Tiedoston en haluaisi kﺣ۳ﺣ۳ntﺣ۳ﺣ۳.
Joten nyt vaikka alussa komennon minulla on vielﺣ۳ Clang,
lopussa komennon Minulla on vielﺣ۳ tiedostonimi,
Nyt nﺣ۳mﺣ۳ komentoriviltﺣ۳ argumentteja, nﺣ۳mﺣ۳ liput, jotka sanovat,
oh, muuten, lﺣ۳htﺣﭘ-o, tiedosto kutsutaan hei, ei oletuksena a.out.
>> Joten jos osuin Anna nyt, ei mitﺣ۳ﺣ۳n nﺣ۳yttﺣ۳ﺣ۳ tapahtuneen.
Ja vielﺣ۳, nyt voin tehdﺣ۳ piste slash hei.
Joten se on sama ohjelma.
Nollat ﻗﻗja niistﺣ۳ ovat identtiset lopussa pﺣ۳ivﺣ۳n.
>> Mutta he kahdessa eri files-- a.out,
joka on ensimmﺣ۳inen versio ja vain tyhmﺣ۳sti nimetty,
ja nyt hei, joka on paljon enemmﺣ۳n pakottavia nimi ohjelmalle.
Mutta rehellisesti, olen koskaan menossa muistaa tﺣ۳tﺣ۳ uudelleen,
ja uudestaan, ja uudestaan.
Ja itse asiassa, kuten me kirjoittaa monimutkaisempi ohjelmia,
komennot olet tﺣ۳ytyy kirjoittaa
menevﺣ۳t vielﺣ۳ monimutkaisempia edelleen.
>> Ja niin ei hﺣ۳tﺣ۳ﺣ۳.
On kﺣ۳ynyt ilmi, ettﺣ۳ ihmiset ennen meistﺣ۳ ovat ymmﺣ۳rtﺣ۳neet hekin
oli tﺣ۳mﺣ۳ tﺣ۳smﺣ۳lleen sama ongelma.
Hekin eivﺣ۳t nauti tarvitse tyyppi melko pitkﺣ۳, mystistﺣ۳ komentoja,
puhumattakaan muista niitﺣ۳.
Ja niin ihmiset ennen meitﺣ۳ tehneet muita ohjelmia, jotka helpottavat
koota ohjelmiston.
>> Ja, todellakin, yksi tﺣ۳llainen Ohjelma on nimeltﺣ۳ﺣ۳n Make.
Joten aion mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
Aion perua kaiken I juuri teki seuraavalla tavalla.
Saanen tyyppi LS.
Ja huomaat kolme things-- a.out, ja tﺣ۳hti, hei
ja tﺣ۳hti, ja hello.c.
Toivottavasti tﺣ۳mﺣ۳ olisi olla hieman intuitiivinen,
sikﺣ۳li kuin aiemmin oli mitﺣ۳ﺣ۳n tﺣ۳ssﺣ۳ tyﺣﭘtilassa.
Ei ollut mitﺣ۳ﺣ۳n jouduin luotu kunnes aloimme luokassa.
>> Ja olen luonut hello.c.
Sitten kootaan sitﺣ۳, ja kutsui sitﺣ۳ a.out.
Ja sitten kootaan uudelleen hieman eri tavalla ja kutsui sitﺣ۳ hei.
Olen siis kolme tiedostoja tﺣ۳hﺣ۳n hakemistoon, Tﺣ۳ssﺣ۳ kansio nimeltﺣ۳ Tyﺣﭘtila.
Nyt nﺣ۳en, ettﺣ۳ myﺣﭘs jos en loitontaa itse.
>> Jos minﺣ۳ loitontaa tﺣ۳ﺣ۳llﺣ۳ ja katsokaa, ettﺣ۳ sivun oikeassa
kulma, kuten luvattiin vasen laidassa nﺣ۳ytﺣﭘn
on aina menossa nﺣ۳yttﺣ۳mﺣ۳ﺣ۳n mitﺣ۳ tilillﺣ۳si, mitﺣ۳
sisﺣ۳puoli CS50 IDE.
Ja on kolme tiedostoa siellﺣ۳.
>> Joten haluan pﺣ۳ﺣ۳stﺣ۳ eroon a.out ja hei.
Ja kuten ehkﺣ۳ kuvitella intuitiivisesti, sinun
voisi lajitella valvonnan klikkauksen tai oikealla klikkaa tﺣ۳stﺣ۳.
Ja tﺣ۳mﺣ۳ pieni valikko ponnahtaa.
Voit ladata tiedoston, suorita se, esikatsella sitﺣ۳, virkistﺣ۳ﺣ۳, nimetﺣ۳ uudelleen,
tai mitﺣ۳ ei.
>> Voisin vain poistaa, ja se menisi pois.
Mutta nyt tehdﺣ۳ asioita komennolla linja nyt, jotta totutella
Tﺣ۳mﺣ۳n, ja toimi seuraavasti.
Aion mennﺣ۳ eteenpﺣ۳in ja poistaa a.out kirjoittamalla kirjaimellisesti rma.out.
On kﺣ۳ynyt ilmi, komento poistamalla tai poistamalla jotain,
ei poista tai poista.
>> Se on enemmﺣ۳n ytimekkﺣ۳ﺣ۳sti RM, vain sﺣ۳ﺣ۳stﺣ۳ﺣ۳ sinulle nﺣ۳ppﺣ۳imistﺣﭘn, ja paina Enter.
Nyt aiomme olla hieman arvoituksellisesti poistaa tavallinen tiedosto a.out.
En todellakaan tiedﺣ۳, mitﺣ۳ epﺣ۳sﺣ۳ﺣ۳nnﺣﭘllinen tiedosto olisi vielﺣ۳.
Mutta en halua poistaa sitﺣ۳.
>> Joten aion kirjoittaa y kyllﺣ۳.
Tai voisin kirjoittaa sen ulos, ja paina Enter.
Ja jﺣ۳lleen, mikﺣ۳ﺣ۳n ei tunnu tapahtuvan.
Mutta se on yleensﺣ۳ hyvﺣ۳ asia.
>> Jos kirjoitan LS tﺣ۳llﺣ۳ kertaa, mitﺣ۳ minun pitﺣ۳isi nﺣ۳hdﺣ۳?
Toivottavasti vain hei ja hello.c.
Nyt sivuhuomautuksena, luultavasti huomaa tﺣ۳hti, tﺣ۳hti,
se lopussa minun ohjelmia.
Ja he myﺣﭘs nﺣ۳y vihreﺣ۳nﺣ۳.
Tﺣ۳mﺣ۳ on vain CS50 IDE tapa of cluing sinut siihen
ettﺣ۳ se ei ole lﺣ۳hdekoodia.
Se suoritettavan, eli runnable ohjelma, jonka voit todella ajaa
tekemﺣ۳llﺣ۳ piste slash, ja sitten se nimi.
>> Nyt, anna minun mennﺣ۳ eteenpﺣ۳in ja poistaa Tﺣ۳mﺣ۳n, rm hei, Enter, poista sﺣ۳ﺣ۳nnﺣﭘllisesti
tiedosto hei, kyllﺣ۳.
Ja nyt jos kirjoitan LS, olemme takaisin hello.c.
Yritﺣ۳ poistaa Varsinainen lﺣ۳hdekoodia.
Vaikka on olemassa ominaisuuksia rakennettu CS50 IDE jossa
voit kﺣ۳ydﺣ۳ lﺣ۳pi versiohistoriaa ja taaksepﺣ۳in ajassa, jos olet vahingossa
poistaa jotain, tee olla tietoinen kohti nﺣ۳itﺣ۳ kehotteita kyllﺣ۳ ﻗﻗtai ei,
mitﺣ۳ todella haluat tehdﺣ۳.
Ja jos menen ylﺣﭘs vasen ylﺣ۳kulmassa tﺣ۳ﺣ۳llﺣ۳,
jﺣ۳ljellﺣ۳ on hello.c.
Joten ei kimppua muut komennot
voi suorittaa maailmassa Linux, joista yksi on, jﺣ۳lleen, Saa.
Ja aiomme tehdﺣ۳ minun ohjelma nyt seuraavasti.
>> Sijaan tehdﺣ۳ kalahtaa, sen sijaan tehdﺣ۳ kalahtaa-o,
Aion yksinkertaisesti kirjaimellisesti tyyppi, tehdﺣ۳ hei.
Ja nyt huomaa, olen ei kirjoittamalla tehdﺣ۳ hello.c.
Olen kirjoittamalla tehdﺣ۳ hei.
>> Ja tﺣ۳mﺣ۳ ohjelma Tee ettﺣ۳ mukana CS50 IDE, ja lisﺣ۳ﺣ۳
yleensﺣ۳ Linux, on ohjelma, joka on
aikoo tehdﺣ۳ ohjelma nimeltﺣ۳ Hei.
Ja se tulee olettaa, sopimuksen mukaan, ettﺣ۳ jos ohjelma voidaan tehdﺣ۳,
se aiotaan tehdﺣ۳ lﺣ۳hteestﺣ۳ koodi tiedosto pﺣ۳ﺣ۳ttyy piste c, hello.c.
>> Joten jos osuin Anna nyt huomaa, ettﺣ۳ komennon, joka saa suorittaa
on itse asiassa jopa pidempi ennen kuin aikaisemmin.
Ja se johtuu siitﺣ۳ olemme esimﺣ۳ﺣ۳ritetty CS50 IDE olla
lisﺣ۳ominaisuuksia rakennettu, ettﺣ۳ emme tarvitse vielﺣ۳, mutta pian tulee.
Mutta avain asia on ymmﺣ۳rrettﺣ۳vﺣ۳ Nyt olen Hei ohjelma.
>> Jos kirjoitan LS taas, I on hei ohjelma.
Ja voin ajaa sen kanssa piste slash a.out, no,
koska koko kohta tﺣ۳mﺣ۳n Harjoitus oli piste slash hei.
Ja nyt minulla on hei maailma -ohjelma.
Joten eteenpﺣ۳in, olemme melkein aina vain
menossa koota meidﺣ۳n ohjelmia komennolla Make.
Ja sitten me aiomme kﺣ۳yttﺣ۳ﺣ۳ niitﺣ۳ piste leikata, ja ohjelman nimi.
Mutta ymmﺣ۳rtﺣ۳ﺣ۳, mitﺣ۳ tehdﺣ۳, on tekemﺣ۳ssﺣ۳ te, se ei itse ole kﺣ۳ﺣ۳ntﺣ۳jﺣ۳.
Se on vain mukavuussyistﺣ۳ ohjelma joka osaa kﺣ۳ynnistﺣ۳ﺣ۳ kﺣ۳ﺣ۳ntﺣ۳jﺣ۳
ajaa niin, ettﺣ۳ voit itse kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳.
>> Mitﺣ۳ muita komentoja olemassa Linux, ja vuorostaan ﻗﻗCS50 IDE?
Tulemme pian nﺣ۳hdﺣ۳, ettﺣ۳ on olemassa CD-komento, Change Directory.
Nﺣ۳in voit sisﺣ۳llﺣ۳ sinun komentorivikﺣ۳yttﺣﭘliittymﺣ۳n
eteenpﺣ۳in, ja takaisin, ja avata eri kansioihin
ilman hiirtﺣ۳.
>> LS nﺣ۳imme, joka tarkoittaa lista tiedostot hakemistossa.
Tee Dir, voit luultavasti alkaa pﺣ۳ﺣ۳tellﺣ۳
mitﺣ۳ nﺣ۳mﺣ۳ tarkoittavat now-- tehdﺣ۳ hakemistoon, Jos haluat luoda kansion.
RM poistaa, RM Dir varten poista directory-- ja nﺣ۳mﺣ۳,
jﺣ۳lleen, ovat komentorivin vastineet, mitﺣ۳
voisi tehdﺣ۳ CS50 IDE hiirellﺣ۳.
Mutta lﺣﭘydﺣ۳t pian ettﺣ۳ joskus se on vain
paljon nopeammin tekemistﺣ۳ asioita, joissa on nﺣ۳ppﺣ۳imistﺣﭘ,
ja lopulta paljon tehokkaampi.
>> Mutta on vaikea vﺣ۳ittﺣ۳ﺣ۳, ettﺣ۳ mitﺣ۳ olemme tehneet tﺣ۳hﺣ۳n mennessﺣ۳
on kaikki, tehokas, kun kaikki olemme sanoneet on, hei maailma.
Ja itse en hardcoded sanat Hello World minun ohjelmaan.
Ei ole mitﺣ۳ﺣ۳n dynamiikkaa vielﺣ۳.
Scratch oli kertaluokkaa mielenkiintoisempia viime viikolla.
>> Ja niin mennﺣ۳ﺣ۳n sinne.
Otetaan askel kohti ettﺣ۳ tapa joitakin nﺣ۳istﺣ۳ toiminnoista.
Joten ei ainoastaan ﻗﻗC mukana printf, ja rypﺣ۳leterttuja muita toimintoja
joista nﺣ۳emme ajan mittaan, se ei
tekevﺣ۳t kaiken niin helppoa heti portin saada kﺣ۳yttﺣ۳jﺣ۳ syﺣﭘttﺣ۳ﺣ۳.
>> Itse asiassa, yksi puutteista kielten kuten C,
ja jopa Java ja vielﺣ۳ muut, on se, ettﺣ۳ se ei
helpottavat vain saada asioita, kuten kokonaislukuja kﺣ۳yttﺣ۳jiltﺣ۳, ﻗﻗtai jouset, sanoja,
ja lauseita, puhumattakaan asioita, kuten liukuluku arvoja tai todelliset luvut
jossa desimaalipisteet, ja oikeastaan pitkﺣ۳ numeroita, kuten tulemme pian nﺣ۳hdﺣ۳.
Joten tﺣ۳mﺣ۳ luettelo rakenteista, nﺣ۳mﺣ۳ ovat kuin muut Scratch palapelin palaset
ettﺣ۳ olemme esiasennettuna CS50 IDE ettﺣ۳ kﺣ۳ytﺣ۳mme muutaman viikon
kuten apupyﺣﭘrﺣ۳t tapaisena, ja lopulta ottaa niitﺣ۳ pois, ja katso
alla huppu, ehkﺣ۳ kello miten nﺣ۳mﺣ۳ asiat toteutetaan.
>> Mutta tehdﺣ۳ tﺣ۳mﺣ۳n, nyt todella kirjoittaa ohjelma.
Anna minun mennﺣ۳ eteenpﺣ۳in nyt.
Ja aion luoda uusi tiedosto napsauttamalla tﺣ۳tﺣ۳ pientﺣ۳ plus,
ja valitsemalla uusi tiedosto.
>> Aion sﺣ۳ﺣ۳stﺣ۳ﺣ۳ tﺣ۳mﺣ۳n seuraavan yksi niin, sanokaamme, string.c,
koska haluan pelata jouset.
Ja merkkijono C on vain merkkijono.
Joten nyt mennﺣ۳ﺣ۳n eteenpﺣ۳in ja toimi seuraavasti.
>> Lisﺣ۳ﺣ۳ vakio IO.h-- ja se kﺣ۳ﺣ۳ntyy pois standardin IO,
IO tarkoittaa vain tulo ja lﺣ۳htﺣﭘ.
Joten kﺣ۳y ilmi, ettﺣ۳ tﺣ۳mﺣ۳ linja tﺣ۳ssﺣ۳ mitﺣ۳
on naapurimaiden meitﺣ۳ kﺣ۳yttﺣ۳mﺣ۳ﺣ۳n printf.
Printf tietenkin tuottaa ulostulon.
Joten voidakseen kﺣ۳yttﺣ۳ﺣ۳ printf, se kﺣ۳ﺣ۳ntyy ulos tﺣ۳ytyy olla koodirivin
ylﺣ۳osassa tiedoston.
>> Ja me palaamme mitﺣ۳ joka todella merkitsee ennen pitkﺣ۳ﺣ۳.
On kﺣ۳ynyt ilmi, ettﺣ۳ tahansa C-ohjelma I kirjoittaa,
Minun tﺣ۳ytyy aloittaa sen kanssa koodia, joka nﺣ۳yttﺣ۳ﺣ۳ tﺣ۳ltﺣ۳.
Ja huomaat CS50 IDE, ja muut yhtenﺣ۳inen kehittﺣ۳minen
ympﺣ۳ristﺣﭘissﺣ۳, kuten se, ovat menossa yrittﺣ۳ﺣ۳ parhaansa
he voivat lopettaa oman ajattelun.
Itse asiassa, hetki sitten, jos en kumoa mitﺣ۳ tein, osuin Enter.
>> Sitten osuma auki kihara ahdin, paina Enter uudelleen.
Ja se pﺣ۳ﺣ۳ttynyt minun ajatus.
Se antoi uuden linjan, sisennetty ei vﺣ۳hempﺣ۳ﺣ۳ for nice tyylillinen syistﺣ۳ nﺣ۳emme.
Ja sitten se automaattisesti antoi minulle ettﺣ۳ kihara ahdin pﺣ۳ﺣ۳tﺣ۳n ajatus.
Nyt, se ei aina arvata mitﺣ۳ haluat tehdﺣ۳.
Mutta suurelta osin, se tekee sﺣ۳ﺣ۳stﺣ۳ﺣ۳ noin painalluksia.
Joten hetki sitten meillﺣ۳ oli tﺣ۳mﺣ۳ program-- hei, maailma, ja sitten koottu se,
ja sitten juoksi sen.
Mutta ei ole dynamiikkaa tﺣ۳ﺣ۳llﺣ۳.
Mitﺣ۳ jos halusimme tehdﺣ۳ jotain erilaista?
No, mitﺣ۳ jos halusin todella saat merkkijonon kﺣ۳yttﺣ۳jﺣ۳?
Aion kﺣ۳yttﺣ۳ﺣ۳ palapelin pala nimeltﺣ۳ﺣ۳n tarkalleen that-- saada merkkijono.
>> Osoittautuu C ettﺣ۳ kun et halua tarjota aineksia palapelin pala,
tai oikeammin on -toiminnolla kirjaimellisesti vain tehdﺣ۳ alkusulun,
lﺣ۳hellﺣ۳ suluissa.
Joten se on ikﺣ۳ﺣ۳n kuin siellﺣ۳ ei valkoista ruutua kirjoitat.
Sano lohko ennen oli pieni valkoinen laatikko.
Meillﺣ۳ ei ole, ettﺣ۳ valkoisen laatikon nyt.
>> Mutta kun kutsun get merkkijono, minﺣ۳ haluavat laittaa tuloksen jonnekin.
Joten hyvin yleinen paradigma C on soittaa toiminto, kuten get string tﺣ۳ﺣ۳llﺣ۳,
ja sitten tallentaa sen palauttama arvo.
Se on seurausta sen vaivaa jotain.
>> Ja mikﺣ۳ on rakentaa ohjelmointi,
onko Scratch tai nyt C, ettﺣ۳ me voi kﺣ۳yttﺣ۳ﺣ۳ todella tallentaa jotain?
Kutsui sitﺣ۳ muuttuja, eikﺣﭘ?
Ja Scratch, emme oikeastaan vﺣ۳litﺣ۳ mitﺣ۳ oli menossa muuttujiin.
>> Mutta tﺣ۳ssﺣ۳ tapauksessa, me todella tehdﺣ۳.
Aion sanoa merkkijono.
Ja sitten voisi kutsua Tﺣ۳ssﺣ۳ mitﺣ۳ haluan.
Aion kutsua sitﺣ۳ nimi, saa saada merkkijono.
>> Nyt vaikka olet vﺣ۳hﺣ۳n uusi tﺣ۳ssﺣ۳,
huomata, ettﺣ۳ olen puuttuu joitakin yksityiskohtia.
Olen unohtamatta puolipisteellﺣ۳.
Minun tﺣ۳ytyy lopettaa tﺣ۳mﺣ۳n ajatuksen.
Joten aion siirtﺣ۳ﺣ۳ minun osoitinta, ja osuma puolipisteellﺣ۳ siellﺣ۳.
Ja mitﺣ۳ olen juuri tehnyt?
Tﺣ۳llﺣ۳ rivillﺣ۳ koodia, numero 5 tﺣ۳llﺣ۳ hetkellﺣ۳,
Soitan get merkkijonon ilman panoksia.
Joten ei ole pieni valkoinen ajas Tallenna lohko on.
>> Sanon vain, hei, tietokone, saada minut merkkijono.
Yhtﺣ۳suuruusmerkin ei oikeastaan yhtﺣ۳lﺣ۳isyysmerkki, sinﺣ۳nsﺣ۳.
Se on tehtﺣ۳vﺣ۳ operaattorin, joka tarkoittaa,
hei, tietokone, siirrﺣ۳ arvo oikealta yli vasemmalle.
Ja vasemmassa, olen seuraava.
>> Hei, tietokone, anna minulle string-- merkkijono.
Ja soittaa merkkijono nimi.
Enkﺣ۳ edes kutsua sitﺣ۳ Name.
>> Voisin kutsua sitﺣ۳, perinteisesti, jotain S,
paljon kuin kﺣ۳ytimme i soittaa muuttuja i.
Mutta nyt minun tﺣ۳ytyy tehdﺣ۳ jotain.
Olisi aika tyhmﺣ۳ﺣ۳ kﺣ۳ﺣ۳ntﺣ۳mistﺣ۳ tﺣ۳tﺣ۳ koodia, kﺣ۳ynnissﺣ۳
Tﺣ۳mﺣ۳n ohjelman, vaikka Saan merkkijono,
koska se on edelleen vain menossa tervehtimﺣ۳ﺣ۳n maailmaan.
>> Mutta mitﺣ۳ jos en halua muuttaa tﺣ۳tﺣ۳.
Miksi en tee tﺣ۳tﺣ۳?
Prosentti s, pilkku s.
Ja tﺣ۳mﺣ۳ on hieman arvoituksellinen vielﺣ۳.
>> Haluan siis tehdﺣ۳ minun muuttujia selvempi.
Saanen nimetﺣ۳ tﺣ۳mﺣ۳n muuttujan nimi.
Ja katsotaan jos emme voi kiusata lisﺣ۳ksi mitﺣ۳ tﺣ۳ﺣ۳llﺣ۳ tapahtuu.
>> Joten linja viisi, Saan merkkijono.
Ja olen tallentamiseksi merkkijonon, mitﺣ۳ kﺣ۳yttﺣ۳jﺣ۳ on kirjoittanut
at hﺣ۳nen nﺣ۳ppﺣ۳imistﺣﭘ, muuttujaan nimeltﺣ۳ Name.
Ja kﺣ۳y ilmi, ettﺣ۳ printf ei vain
ottaa yhden argumentin hengen lainauksia, yksi tulo lainausmerkkeihin.
>> Se voi kestﺣ۳ﺣ۳ kaksi tai kolme tai enemmﺣ۳n, kuten ettﺣ۳ toinen tai kolmas tai neljﺣ۳s,
ovat kaikki nimet muuttujien tai erityisesti arvot,
ettﺣ۳ haluat kytkeﺣ۳, dynaamisesti, ettﺣ۳ merkkijono lainausmerkeissﺣ۳.
Toisin sanoen, mitﺣ۳ olisi vikana?
Jos minﺣ۳ vain sanoi hei nimi, kenoviiva n, pelasti minun tiedosto kﺣ۳ﺣ۳nnetty minun koodi,
ja juoksi tﺣ۳mﺣ۳, mitﺣ۳ tapahtuisi?
>> Se juuri menossa sanoa, hei nimi, kirjaimellisesti N-A-M-E,
mikﺣ۳ on typerﺣ۳ﺣ۳, koska se ei poikkea maailmasta.
Joten mitﺣ۳ﺣ۳n lainausmerkit on mitﺣ۳ kirjaimellisesti tulostetaan.
Joten jos Haluan olla paikkamerkin siellﺣ۳,
Olen itse tﺣ۳ytyy kﺣ۳yttﺣ۳ﺣ۳ joitakin erityisiﺣ۳ syntaksi.
Ja se osoittautuu jos olet lukenut dokumentaatio printf toiminto,
se kertoo, ettﺣ۳ Jos kﺣ۳ytﺣ۳t prosenttia s,
voit korvata arvon seuraavasti.
>> Pilkun jﺣ۳lkeen jﺣ۳lkeen lainausmerkki, voit yksinkertaisesti
kirjoittaa nimi muuttuja, ettﺣ۳ haluat
kytkeﺣ۳ tuohon muotoon koodin, tai muodossa mﺣ۳ﺣ۳rittelyksi,
prosentin s jousille.
Ja nyt jos sﺣ۳ﺣ۳stin minun arkistoida, Menen takaisin alas minun terminaaliin.
Ja kirjoitan Tee String, koska, jﺣ۳lleen, nimi tﺣ۳mﺣ۳n
tiedosto ettﺣ۳ valitsin ennen on string.c.
>> Joten aion sanoa tehdﺣ۳ String, kirjoita.
Hyvﺣ۳nen, tarkastella kaikkia virheet olemme tehneet jo.
Ja tﺣ۳mﺣ۳ is-- mitﺣ۳, tﺣ۳mﺣ۳ on todella kuten kuusi, seitsemﺣ۳n linja-ohjelma?
Joten tﺣ۳mﺣ۳ on, jos se voi hyvin nopeasti ylivoimainen.
>> Tﺣ۳mﺣ۳ terminaali ikkuna on nyt vain regurgitated
valtava mﺣ۳ﺣ۳rﺣ۳ virheilmoituksia.
Varmasti, en ole enemmﺣ۳n virhettﺣ۳ viestejﺣ۳ kuin olen riviﺣ۳ koodia.
Joten mitﺣ۳ on tekeillﺣ۳?
>> No, paras strategia tehdﺣ۳ milloin
do kohtaavat ylivoimainen virheluetteloa niin,
on selaa taaksepﺣ۳in, etsiﺣ۳ komennolla juuri juoksemasi joka minun tapauksessani
on tehdﺣ۳ merkkijono.
Katsokaa, mitﺣ۳ tehdﺣ۳ teki, ja se, ettﺣ۳ pitkﺣ۳ Clang komento, no big deal siellﺣ۳.
>> Mutta punainen on huono.
Green yrittﺣ۳ﺣ۳ olla lempeﺣ۳ ja avulias.
Mutta se on edelleen huono, tﺣ۳ssﺣ۳ tapauksessa.
Mutta missﺣ۳ on se huono?
>> String.c, linja viisi, merkki viisi.
Joten tﺣ۳mﺣ۳ on vain yleinen sopimus.
Jotain paksusuolen jotain merkitsee rivinumero ja merkin numero.
Virhe, kﺣ۳yttﺣﭘ pimeﺣ۳n tunniste merkkijono.
Tarkoititko vakiona?
>> Joten valitettavasti Clang yrittﺣ۳ﺣ۳ olla avuksi.
Mutta se on vﺣ۳ﺣ۳rin, tﺣ۳ssﺣ۳ tapauksessa.
Ei, Clang, en tarkoita standardi IO.
Tarkoitin ettﺣ۳ linjalla, kyllﺣ۳.
>> Mutta linja viisi on tﺣ۳mﺣ۳ yksi tﺣ۳ﺣ۳llﺣ۳.
Ja Clang ei ymmﺣ۳rtﺣ۳ﺣ۳ S-T-R-I-N-G.
Se on pimeﺣ۳n tunniste, joka on sana se vain ei ole koskaan ennen nﺣ۳hty.
Ja se johtuu C-kieli me kirjoittaa koodia juuri nyt,
ei ole muuttujia kutsutaan jouset.
>> Se ei oletuksena, tuki jotain kutsutaan merkkijono.
Se on CS50 pala ammattikieltﺣ۳, mutta hyvin tavanomainen.
Mutta voin korjata seuraavasti.
>> Jos lisﺣ۳ﺣ۳n yhtﺣ۳ riviﺣ۳ koodia alkuun tﺣ۳mﺣ۳n ohjelman,
sisﺣ۳ltﺣ۳vﺣ۳t CS50.h, joka on toinen tiedosto jonnekin sisﺣ۳llﺣ۳ CS50 IDE, jonnekin
kiintolevyn, niin sanotusti, Ubuntu-kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳
ettﺣ۳ olen kﺣ۳ynnissﺣ۳, ettﺣ۳ on tiedosto, joka on
menossa opettaa toiminta jﺣ۳rjestelmﺣ۳ mikﺣ۳ merkkijono on vain
kuten standardi io.h on tiedosto kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳, joka on
menossa opettaa sitﺣ۳ mitﺣ۳ printf on.
>> Todellakin, olisimme saaneet hyvin samanlaisen viestin
jos IO oli myﺣﭘntﺣ۳nyt standardi IO.h ja yritti kﺣ۳yttﺣ۳ﺣ۳ printf.
Joten aion mennﺣ۳ eteenpﺣ۳in ja vain Ohjaa L tyhjentﺣ۳ﺣ۳ tietokoneen nﺣ۳ytﺣﭘllﺣ۳.
Tai voit kirjoittaa selkeitﺣ۳ ja se tulee vain tyhjentﺣ۳ﺣ۳ pﺣ۳ﺣ۳teikkuna.
Mutta voit silti vierittﺣ۳ﺣ۳ ajassa taaksepﺣ۳in.
>> Ja aion uusintana tehdﺣ۳ String.
Cross sormiani tﺣ۳llﺣ۳ kertaa Enter.
Voi luoja, se toimi.
se nﺣ۳yttﺣ۳ﺣ۳ minulle pitkﺣ۳ arvoituksellisesti komennon sitﺣ۳hﺣ۳n Varmista luotu kautta Clang,
mutta ei virheilmoituksia.
Joten ymmﺣ۳rtﺣ۳ﺣ۳, vaikka saatat saada tﺣ۳ysin
hukkua mﺣ۳ﺣ۳rﺣ۳ virheilmoituksia,
se vain voi olla ﺣ۳rsyttﺣ۳vﺣ۳ﺣ۳ CSS vaikutus, jossa Clang ei ymmﺣ۳rrﺣ۳
Ensinnﺣ۳kin, mikﺣ۳ tarkoittaa, ettﺣ۳ sen jﺣ۳lkeen ei ymmﺣ۳rrﺣ۳ seuraava sana,
tai seuraavalle riville.
Ja niin se vain tukehtuu koodin.
Mutta fix voisi olla yksinkertaista.
Ja niin aina keskittyﺣ۳ ensimmﺣ۳inen rivi tuotos.
Ja jos et ymmﺣ۳rtﺣ۳ﺣ۳ se, katsokaa
avainsanoja, jotka saattavat olla vihjeitﺣ۳, ja rivinumero,
ja merkin, jossa ettﺣ۳ virhe voi olla.
>> Nyt haluan mennﺣ۳ eteenpﺣ۳in ja kirjoita piste slash, merkkijono, kirjoita.
Hm, se ei sano hei mitﺣ۳ﺣ۳n.
Miksi?
No, muistaa, missﺣ۳ on se kﺣ۳ynnissﺣ۳?
>> Se on luultavasti jumissa tﺣ۳llﺣ۳ hetkellﺣ۳ silmukan, jos haluatte, on line kuusi,
koska Get String suunnittelun, kirjoittanut CS50 henkilﺣﭘstﺣﭘ,
on kirjaimellisesti tarkoitus vain istua siellﺣ۳ odottamassa, ja odottaa,
ja odottaa merkkijono.
Kaikki me tarkoitamme merkkijono on ihmisen panos.
Joten tiedﺣ۳tkﺣﭘ mitﺣ۳?
Anna minun mennﺣ۳ eteenpﺣ۳in.
Ja vain hetken mielijohteesta, haluaisin kirjoita nimeﺣ۳ni, David, anna.
Nyt minulla on enemmﺣ۳n dynaaminen ohjelma.
Se sanoi, hei David.
>> Jos menen eteenpﺣ۳in ja suorita tﺣ۳mﺣ۳ uudelleen, Yritﺣ۳n sanoa Zamila nimen, anna.
Ja nyt meillﺣ۳ on dynaaminen ohjelma.
En ole koodattu maailmaa.
En ole koodattu nimi, tai David tai Zamila.
>> Nyt se on paljon enemmﺣ۳n kuin ohjelmat me tiedﺣ۳mme, missﺣ۳ se kestﺣ۳ﺣ۳ tulo,
se tuottaa hieman eri tuotos.
Nyt tﺣ۳mﺣ۳ ei ole paras kﺣ۳yttﺣ۳jﺣ۳kokemusta tai UX.
Juoksen ohjelma.
>> En tiedﺣ۳, mitﺣ۳ minun pitﺣ۳isi tehdﺣ۳, jos en oikeastaan ﻗﻗkatsoa
tai muistaa lﺣ۳hdekoodia.
Joten tehdﺣ۳ kﺣ۳yttﺣ۳jﺣ۳n Koe hieman paremmin
yksinkertaisin asioita.
Anna minun mennﺣ۳ takaisin tﺣ۳hﺣ۳n ohjelma, ja sanoa yksinkertaisesti printf.
>> Ja anna minun mennﺣ۳ eteenpﺣ۳in ja sanoa nimi, paksusuoli, ja vﺣ۳lilyﺣﭘnti, ja sitten puolipisteellﺣ۳.
Ja huvin, ei takaisku n.
Ja se on tahallista, koska en halua
kehotteen siirtyﺣ۳ seuraavalle riville.
>> Haluan sen sijaan tehdﺣ۳ tﺣ۳mﺣ۳n, tee merkkijono kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ minun koodi uuden koneen
koodi piste slash merkkijono.
Ah, tﺣ۳mﺣ۳ on paljon kauniimpi.
Nyt en oikeastaan ﻗﻗtiedﺣ۳ mitﺣ۳ tietokone haluaa minun tekevﺣ۳n, antaa sille nimi.
>> Joten aion mennﺣ۳ eteenpﺣ۳in ja kirjoita Rob, kirjoita, ja hei, Rob.
Niin, ymmﺣ۳rtﺣ۳ﺣ۳, tﺣ۳mﺣ۳ on vielﺣ۳ lopussa Pﺣ۳ivﺣ۳n vain yhdeksﺣ۳n linja ohjelmaa.
Mutta olemme ottaneet nﺣ۳mﺣ۳ vauvan askelia.
>> Kirjoitimme yksi rivi, jolla me olivat tuttuja, printf, Hello World.
Sitten undid hieman siitﺣ۳.
Ja me todella kﺣ۳ytetﺣ۳ﺣ۳n get merkkijono.
Ja me heitti ettﺣ۳ arvon muuttujaan.
Sitten menimme eteenpﺣ۳in ja parantanut se edelleen, kolmannella rivillﺣ۳.
Ja tﺣ۳mﺣ۳ iteratiivinen prosessi tallennusohjelmistojen on todella avain.
Vuonna CS50, ja elﺣ۳mﺣ۳ssﺣ۳ yleensﺣ۳, ei yleisesti ottaen tulisi istua alas,
on ohjelma mielessﺣ۳, ja kokeile kirjoittaminen koko hemmetin asia kerralla.
>> Se vﺣ۳istﺣ۳mﺣ۳ttﺣ۳ johtaa tavalla enemmﺣ۳n virheitﺣ۳ kuin me itse nﺣ۳hnyt tﺣ۳ﺣ۳llﺣ۳.
Jopa minﺣ۳, tﺣ۳hﺣ۳n pﺣ۳ivﺣ۳ﺣ۳n, jatkuvasti tehdﺣ۳ muita typeriﺣ۳ virheitﺣ۳,
ovat todella vaikeampaa virheitﺣ۳ jotka ovat vaikeampi selvittﺣ۳ﺣ۳.
Mutta te tekee enemmﺣ۳n virheitﺣ۳ enemmﺣ۳n riviﺣ۳ koodia kirjoittaa kaikki kerralla.
Ja niin tﺣ۳mﺣ۳ kﺣ۳ytﺣ۳ntﺣﭘ, kirjoittaa hieman koodia
ettﺣ۳ olet tyytyvﺣ۳inen, koota se, ajaa sitﺣ۳, testata sitﺣ۳ yleisemmin,
siirrﺣ۳ on-- joten aivan kuten me jatkoimme kerrospukeutuminen ja kerrospukeutuminen viime viikolla,
rakentamassa jotain hyvin yksinkertaista jotain monimutkaisempi,
tehdﺣ۳ saman tﺣ۳ﺣ۳llﺣ۳.
ﺣlﺣ۳ istu, ja yritﺣ۳ kirjoittaa koko ongelma.
Oikeastaan ﻗﻗottaa nﺣ۳mﺣ۳ vauvan askelia.
>> Nyt jouset eivﺣ۳t ole kaikki ettﺣ۳ hyﺣﭘdyllisiﺣ۳ itselleen.
Olimme itse asiassa, ihannetapauksessa, kuten on jotain muuta meidﺣ۳n tyﺣﭘkalusarja.
Joten itse asiassa juuri siihen.
>> Anna minun mennﺣ۳ eteenpﺣ۳in nyt ja lietsoa hieman eri ohjelmaa.
Ja me kutsumme tﺣ۳tﺣ۳ int.c, kokonaisluku.
Aion vastaavasti kuuluu CS550.h.
Aion vakiovarusteista IO.
Ja se tulee olemaan melko yleisiﺣ۳ Nﺣ۳iden ensimmﺣ۳isten pﺣ۳ivien luokan.
>> Ja aion valmis itseni pﺣ۳ﺣ۳tehtﺣ۳vﺣ۳.
Nyt sen sijaan saada merkkijono, mennﺣ۳ﺣ۳n eteenpﺣ۳in ja saada int.
Kutsutaan sitﺣ۳ i, ja kutsua sitﺣ۳ saada int, lﺣ۳hellﺣ۳ parens, puolipisteellﺣ۳.
Ja nyt Tehdﺣ۳ﺣ۳n jotain sen kanssa, printf.
>> Sanotaan jotain Hei, kenoviiva n, pilkulla i.
Joten olen aika paljon matkii mitﺣ۳ tein juuri ﺣ۳sken.
Olen paikkamerkki tﺣ۳ﺣ۳llﺣ۳.
Olen pilkku i tﺣ۳ﺣ۳llﺣ۳, koska haluan kytkeﺣ۳ i tuohon paikkamerkki.
>> Joten mene eteenpﺣ۳in ja kokeile koottaessa ohjelma.
Tiedosto on nimeltﺣ۳ﺣ۳n int.c.
Joten aion sanoa, tehdﺣ۳ int, kirjoita.
Voi luoja, mutta ei ole iso juttu, eikﺣﭘ?
On virhe.
>> Siellﺣ۳ on syntaktinen virhe tﺣ۳ssﺣ۳ niin, ettﺣ۳ ohjelma ei voi
koottava sisﺣ۳llﺣ۳ int.c, viiva seitsemﺣ۳n, merkki 27, virhe formaatti
tﺣ۳smennetﺣ۳ﺣ۳n tyyppi char tﺣ۳hti, mitﺣ۳ se on.
Mutta vﺣ۳ite tyyppi on int.
>> Niin tﺣ۳ssﺣ۳kin emme aio to-- vaikka tﺣ۳nﺣ۳ﺣ۳n on paljon materiaalia,
aiomme hukuttaa teitﺣ۳ ehdottomasti jokainen piirre C,
ja ohjelmointi yleisemmin vain nﺣ۳mﺣ۳ ensimmﺣ۳isten viikkojen aikana.
Joten siellﺣ۳ on usein olemaan ammattikieltﺣ۳ jolla et tunne.
Ja itse asiassa, nieriﺣ۳ tﺣ۳hti on jotain aiomme palata
viikon tai kahden kuluttua.
>> Mutta nyt, katsotaanpas jos voimme jﺣ۳sentﺣ۳ﺣ۳ sanoja, jotka ovat tuttuja.
Alustat-- joten kuulimme muoto specifier, formaatti koodin ennen.
Se on tuttu.
Type-- mutta vﺣ۳ite on tyyppiﺣ۳ int.
Hetkinen, i on int.
>> Ehkﺣ۳ prosenttia s oikeastaan on joitakin mﺣ۳ﺣ۳ritelty merkitys.
Ja todellakin, se tekee.
Kokonaisluku, jos haluat printf korvata sitﺣ۳,
todella on kﺣ۳ytettﺣ۳vﺣ۳ eri muotoon mﺣ۳ﺣ۳rittelyksi.
Ja et tiedﺣ۳ tﺣ۳tﺣ۳ ellei joku mﺣ۳ﺣ۳rﺣ۳nnyt,
tai olet tehnyt sen ennenkin.
Mutta prosenttia i on mitﺣ۳ voidaan yleisesti kﺣ۳ytetty
Printf varten kytkemﺣ۳llﺣ۳ kokonaisluku.
Voit myﺣﭘs kﺣ۳yttﺣ۳ﺣ۳ prosenttia d desimaalikokonaisluku.
Mutta i on mukava ja yksinkertainen tﺣ۳ﺣ۳llﺣ۳.
Joten mennﺣ۳ﺣ۳n sen kanssa.
>> Nyt haluan mennﺣ۳ eteenpﺣ۳in ja uusintana make int, Enter.
Se on hyvﺣ۳, ei virheitﺣ۳.
Dot slash int-- OK, huono kﺣ۳yttﺣﭘkokemuksen koska en ole kertonut itse
mitﺣ۳ tehdﺣ۳.
Mutta se kﺣ۳y hyvin.
Olen kiinni siitﺣ۳ nopeasti.
>> Nyt anna minun mennﺣ۳ eteenpﺣ۳in ja Kirjoita David, OK, Zamila, Rob.
OK, joten tﺣ۳mﺣ۳ on hyvﺣ۳ asia.
Tﺣ۳llﺣ۳ kertaa, olen kﺣ۳yttﺣ۳en toimintoa, palapelin pala, nimeltﺣ۳ﺣ۳n get int.
Ja se osoittautuu out-- ja me katso tﺣ۳tﺣ۳ myﺣﭘhemmin term--
CS50 henkilﺣﭘkunta on toteuttanut saada merkkijono siten
ettﺣ۳ se vain fyysisesti saada merkkijono sinulle.
>> Se on toteutettu get int vuonna siten, ettﺣ۳ se vain
saada kokonaisluku sinulle.
Ja jos, ihmisen, eivﺣ۳t tee yhteistyﺣﭘtﺣ۳, se on
kirjaimellisesti juuri menossa sano uudelleen, uudelleen, uudelleen,
kirjaimellisesti istuu siellﺣ۳ silmukoiden, kunnes te velvoittaa joitakin maaginen numero,
kuten 50, ja hei 50.
>> Tai jos me suorita tﺣ۳mﺣ۳ uudelleen ja kirjoita 42, hei 42.
Ja niin get int toiminto sisﺣ۳llﺣ۳ ettﺣ۳ palapelin pala
riittﺣ۳ﺣ۳ logiikka, tarpeeksi ajatus, selvittﺣ۳ﺣ۳, mikﺣ۳ on sana?
Ja mikﺣ۳ on numero?
Vain hyvﺣ۳ksymﺣ۳llﺣ۳ lopulta numeroita.
>> Joten kﺣ۳y ilmi, ettﺣ۳ tﺣ۳mﺣ۳ ei ole kovin ilmeikﺣ۳s.
niin kaukana.
Joten, jee, viimeinen kerta meni melko nopeasti
osaksi tﺣ۳ytﺣ۳ntﺣﭘﺣﭘn pelejﺣ۳, ja animaatio, ja taideteosten Scratch.
Ja tﺣ۳ssﺣ۳, me ollaan sisﺣ۳ltﺣﭘﺣ۳ jossa Hello World, ja hei 50.
>> Se ei ole kaikki, ettﺣ۳ inspiroiva.
Ja, todellakin, nﺣ۳mﺣ۳ ensimmﺣ۳iset esimerkkejﺣ۳ kestﺣ۳ﺣ۳ jonkin aikaa
ylﺣﭘsajamiseen jﺣ۳nnitystﺣ۳.
Mutta meillﺣ۳ on niin paljon enemmﺣ۳n hallita nyt, itse asiassa.
Ja aiomme hyvin nopeasti aloittaa kerrospukeutuminen
pﺣ۳ﺣ۳lle nﺣ۳istﺣ۳ perus perusalkioiden.
>> Mutta ensin on ymmﺣ۳rrettﺣ۳vﺣ۳ mitﺣ۳ rajoitukset ovat.
Itse asiassa, yksi niistﺣ۳ asioista Scratch ei helposti
tehkﺣ۳ﺣ۳mme todella nﺣ۳yttﺣ۳ﺣ۳ alla huppu,
ja ymmﺣ۳rtﺣ۳ﺣ۳, mitﺣ۳ tietokone on, mitﺣ۳ se voi tehdﺣ۳,
ja mitﺣ۳ sen rajoitukset ovat.
Ja todellakin, ettﺣ۳ puute ymmﺣ۳rtﺣ۳mistﺣ۳, mahdollisesti pitkﺣ۳aikainen
voi johtaa omia mistakes-- kirjoittaminen vikoja, kirjallisesti turvaton ohjelmisto,
hakkeroidaan jollakin tavalla.
>> Joten ottamaan askeleita kohti ymmﺣ۳rrystﺣ۳ tﺣ۳mﺣ۳ vﺣ۳hﺣ۳n paremmin
tapa, sanovat, seuraava esimerkki.
Aion mennﺣ۳ eteenpﺣ۳in ja toteuttaa todella nopeasti ohjelma nimeltﺣ۳ lisﺣ۳ﺣ۳jﺣ۳.
Kuten, nyt lisﺣ۳tﺣ۳ joitakin numeroita yhteen.
Ja aion koodata joitakin kulmat tﺣ۳ﺣ۳llﺣ۳, ja kopioi ja liitﺣ۳
jossa olin ennen, vain jotta voimme lﺣ۳hteﺣ۳ aikaisemmin.
Nyt olen saanut perus alkuja ohjelma nimeltﺣ۳ lisﺣ۳ﺣ۳jﺣ۳.
>> Ja mennﺣ۳ﺣ۳n eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
Aion mennﺣ۳ eteenpﺣ۳in ja vaikkapa intx saa pﺣ۳ﺣ۳stﺣ۳ int.
Ja tiedﺣ۳tkﺣﭘ mitﺣ۳?
Tehdﺣ۳ﺣ۳n paremman kﺣ۳yttﺣﭘkokemuksen.
>> Joten sanotaan ettﺣ۳ x on, ja tehokkaasti kehottaa kﺣ۳yttﺣ۳jﺣ۳ﺣ۳ antamaan meille x.
Ja anna minun mennﺣ۳ eteenpﺣ۳in ja sanoa, printf miten y on, tﺣ۳llﺣ۳ kertaa odottaa
kaksi arvoa kﺣ۳yttﺣ۳jﺣ۳ltﺣ۳.
Ja sitten mennﺣ۳ﺣ۳n vain eteenpﺣ۳in ja esimerkiksi printf, summa x ja y on.
Ja nyt en halua tehdﺣ۳ prosenttiin s.
Haluan tehdﺣ۳ prosenttiin i, kenoviiva n, ja sitten kytke summa-arvoon.
>> Joten miten voin edetﺣ۳ tﺣ۳ssﺣ۳?
Tiedﺣ۳tkﺣﭘ mitﺣ۳?
En osaa kﺣ۳yttﺣ۳ﺣ۳ muuttujia.
Saanen ilmoittaa uuden, int z.
>> Ja aion yrittﺣ۳ﺣ۳ arvata tﺣ۳ﺣ۳llﺣ۳.
Jos on yhtﺣ۳suuruusmerkit tﺣ۳ssﺣ۳ kieli, ehkﺣ۳ voin vain tehdﺣ۳ x plus y,
kunhan pﺣ۳ﺣ۳tﺣ۳n ajatteli puolipistettﺣ۳?
Nyt voin palata tﺣ۳nne, kytke z, lopettaa tﺣ۳mﺣ۳n ajatuksen kanssa puolipisteellﺣ۳.
Ja katsotaan nyt, jos nﺣ۳mﺣ۳ sekvenssit lines-- x on saada int.
Y on saada int.
>> Lisﺣ۳ﺣ۳ x ja y, sﺣ۳ilytﺣ۳ arvoa z-- niin, taas, muista yhtﺣ۳lﺣ۳isyysmerkki
ei ole yhtﺣ۳ suuri.
Se toimeksianto oikealta vasemmalle.
Ja nyt tulostaa ettﺣ۳ summa x ja y eivﺣ۳t ole kirjaimellisesti z,
mutta mitﺣ۳ sisﺣ۳llﺣ۳ z.
Joten tehdﺣ۳ Adder - mukava, ei virheitﺣ۳ tﺣ۳llﺣ۳ kertaa.
Dot slash Adder, kirjoita, x tulee olemaan 1.
>> Y tulee olemaan 2.
Ja summa x ja y on 3.
Niin, ettﺣ۳ kaikki hyvﺣ۳ ja hieno.
>> Voisi siis kuvitella, ettﺣ۳ matematiikka pitﺣ۳isi toimia tﺣ۳llaisen ohjelman.
Mutta tiedﺣ۳tkﺣﭘ mitﺣ۳?
Onko tﺣ۳mﺣ۳ muuttuja, viiva 12, jopa vﺣ۳lttﺣ۳mﺣ۳tﺣﭘntﺣ۳?
Sinun ei tarvitse saada tapana vain tallentamiseen asioita muuttujien
vain koska voit.
Ja itse asiassa, se on yleensﺣ۳ harkittu huono suunnittelu
jos olet luomassa muuttuja, nimeltﺣ۳ﺣ۳n z tﺣ۳ssﺣ۳ tapauksessa, sﺣ۳ilytykseen jotain se,
ja sitten heti kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳, mutta ei koskaan enﺣ۳ﺣ۳.
Miksi antaa jotakin nimi kuten z jos olet kirjaimellisesti
aio kﺣ۳yttﺣ۳ﺣ۳, ettﺣ۳ asia vain kerran, ja niin
proksimaalisesti jossa loit se ensimmﺣ۳inen paikka,
niin lﺣ۳hellﺣ۳ suhteen riviﺣ۳ koodia?
Joten tiedﺣ۳tkﺣﭘ mitﺣ۳?
On kﺣ۳ynyt ilmi, ettﺣ۳ C on melko joustava.
Jos minﺣ۳ todella haluavat plug-in-arvojen tﺣ۳ﺣ۳llﺣ۳,
En tarvitse julistaa uusi muuttuja.
Voisin plug-in x plus y, koska C ymmﺣ۳rtﺣ۳ﺣ۳
aritmeettinen ja matemaattisia operaattoreita.
>> Voin siis vain sanoa, tehdﺣ۳ tﺣ۳mﺣ۳n matematiikka, x plus y riippumatta nﺣ۳mﺣ۳ arvot ovat,
plug tuloksena kokonaisluvun merkkijono.
Joten tﺣ۳mﺣ۳ voisi olla, vaikka vain yksi rivi lyhyempi,
parempi suunnittelu, parempaa ohjelmaa, koska siellﺣ۳ on vﺣ۳hemmﺣ۳n koodia, siis
vﺣ۳hemmﺣ۳n minua ymmﺣ۳rtﺣ۳mﺣ۳ﺣ۳n.
Ja se on myﺣﭘs juuri siivooja, sikﺣ۳li kuin emme ole
kﺣ۳yttﺣﭘﺣﭘn uusia sanoja, uusia symboleja, kuten z,
vaikka ne eivﺣ۳t oikeastaan palvella paljon tarkoitusta.
>> Valitettavasti matematiikka ei ole kaikki luotettavia joskus.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
Aion mennﺣ۳ eteenpﺣ۳in nyt ja toimi seuraavasti.
>> Tehdﺣ۳ﺣ۳n printf, prosenttia i, plus prosenttia i, on oltava prosenttia i, kenoviiva n.
Ja aion tehdﺣ۳ this-- xyx plus y.
Joten olen juuri menossa kirjoittaa Tﺣ۳ssﺣ۳ hieman eri tﺣ۳ﺣ۳llﺣ۳.
Saanen tehdﺣ۳ nopeasti jﺣ۳rki tarkistaa.
Jﺣ۳lleen ﺣ۳lkﺣ۳ﺣ۳mme pﺣ۳ﺣ۳stﺣ۳ eteenpﺣ۳in itsestﺣ۳mme.
Tee lisﺣ۳toiminto, piste slash lisﺣ۳toiminto.
x on 1, y on 2, 1 ja 2 on 3.
Niin se on hyvﺣ۳.
Mutta katsotaanpa mutkistaa tﺣ۳tﺣ۳ nyt hieman, ja luo uuden tiedoston.
>> Aion kutsua tﺣ۳tﺣ۳, sanovat, ints, monikko kokonaislukuja.
Aloitan jossa olin hetki sitten.
Mutta nyt tehkﺣ۳ﺣ۳mme muutamia muita rivejﺣ۳.
Anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ seuraava, printf, prosenttia i miinus prosenttia i,
on prosentti i, pilkku x, pilkku yx miinus y.
Joten teen hieman eri matematiikka siellﺣ۳.
Tehdﺣ۳ﺣ۳n toinen.
Joten prosenttia i kertaa prosenttiin i on prosentti i, kenoviiva n.
Katsotaan plug-in x ja y ja x kertaa y.
Kﺣ۳ytﺣ۳mme tﺣ۳htimerkkiﺣ۳ tietokoneen kertaa.
>> Et kﺣ۳ytﺣ۳ x. x on muuttujan nimi.
Kﺣ۳ytﺣ۳t tﺣ۳hti kertolasku.
Tehdﺣ۳ﺣ۳n yksi.
Printf prosenttia I jaettuna by prosenttia i, on prosentti i,
backslash n. xy jaettuna y-- joten kﺣ۳ytﺣ۳t vinoviivan C
tehdﺣ۳ jako.
Ja Tehdﺣ۳ﺣ۳n yksi muu.
Loput prosenttia i, jakautuu by prosenttia i, on prosenttia i.
xy-- ja nyt jﺣ۳ljellﺣ۳ on mitﺣ۳ on jﺣ۳ljellﺣ۳.
Kun yritﺣ۳t jakamalla nimittﺣ۳jﺣ۳ osaksi osoittaja,
kuinka paljon on jﺣ۳ljellﺣ۳, ettﺣ۳ et voisi jakaa ulos?
>> Joten ei ole oikeastaan, vﺣ۳istﺣ۳mﺣ۳ttﺣ۳, symboli
olemme kﺣ۳yttﺣ۳neet asteella tﺣ۳tﺣ۳.
Mutta C. Voit sanoa x modulo y, jossa
Tﺣ۳mﺣ۳n prosenttimerkkiﺣ۳ tﺣ۳ssﺣ۳ context-- erehdyttﺣ۳vﺣ۳sti kun olet sisﺣ۳llﺣ۳
kaksinkertaisen lainausmerkkejﺣ۳, sisﺣ۳llﺣ۳ printf, prosenttia
kﺣ۳ytetﺣ۳ﺣ۳n muodossa mﺣ۳ﺣ۳rittelyksi.
>> Kun kﺣ۳ytﺣ۳t prosenttia ulkopuolella ettﺣ۳ matemaattinen lauseke,
se on modulo operaattori modulaarinen arithmetic-- meidﺣ۳n tarkoituksiin
tﺣ۳ﺣ۳llﺣ۳, vain tarkoittaa, mikﺣ۳ on Loput x jaettuna y?
Joten x jaettuna y on x slash y.
Mikﺣ۳ jﺣ۳ljellﺣ۳ x jaettuna y?
Se x mod y, ohjelmoijana sanoisi.
>> Jos siis tehnyt virheitﺣ۳ tﺣ۳ﺣ۳llﺣ۳, haluan mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ ints, monikossa, mukava,
ja piste slash ints.
Ja mennﺣ۳ﺣ۳n eteenpﺣ۳in ja do, sanokaamme, 1, 10.
Selvﺣ۳, 1 plus 10 on 11, check.
1 miinus 10 on negatiivinen 9, tarkista.
>> 1 kertaa 10 on 10, check.
1 jaettuna 10 is-- OK, me ohittaa tﺣ۳mﺣ۳n yhden.
Loput 1 jaettuna 10 on 1.
Pitﺣ۳ﺣ۳ paikkansa.
Mutta on vika tﺣ۳ﺣ۳llﺣ۳.
>> Joten yksi esitin luovuttaa, ei ole oikein.
Siis, se on lﺣ۳hellﺣ۳ 0.
1 jaettuna 10, tiedﺣ۳tte, jos olemme vﺣ۳hentﺣ۳miseksi noin kulmat, varma, se on nolla.
Mutta se pitﺣ۳isi oikeastaan ﻗﻗolla 1/10, 0,1 tai 0,10, 0,1000, tai niin edelleen.
>> Sen ei pitﺣ۳isi oikeastaan ﻗﻗolla nolla.
No, kﺣ۳y ilmi, ettﺣ۳ tietokone on tekemﺣ۳llﺣ۳ kirjaimellisesti mitﺣ۳ kerroimme sitﺣ۳ tekemﺣ۳ﺣ۳n.
Teemme matematiikka kuten x jaettuna y.
Ja sekﺣ۳ x ja y, per linjat koodia aikaisemmin, ovat kokonaislukuja.
>> Lisﺣ۳ksi linjalla 15, olemme kertoo printf, hei, printf plug-in
kokonaisluku, plug-in kokonaisluku, plug-kﺣ۳ytettﺣ۳essﺣ۳ integer-- nimenomaan
x ja sitten y, ja niin x jaettuna y. x ja y ovat ints.
Olemme hyvﺣ۳ siellﺣ۳.
>> Mutta mitﺣ۳ on x jaetaan x?
x jaettuna y pitﺣ۳isi olla, matemaattisesti, 1/10 tai 0,1,
joka on reaaliluku, reaaliluku ottaa mahdollisesti desimaalipisteen.
Se ei ole kokonaisluku.
>> Mutta mikﺣ۳ on lﺣ۳hin kokonaisluvun 1/10 eli 0,1?
Joo, se tavallaan on nolla.
0.1 on nﺣ۳in paljon.
Ja 1 on nﺣ۳in paljon.
Joten 1/10 on lﺣ۳hempﺣ۳nﺣ۳ 0 kuin se on yksi.
>> Ja mitﺣ۳ sitten C on tekemﺣ۳ssﺣ۳ us-- Tﺣ۳llainen koska kerroimme se to--
on lyhennetty, ettﺣ۳ kokonaisluku.
Se ottaa arvon, joka taas on tarkoitus olla jotain 0,1000,
0 ja niin edelleen.
Ja se katkaisemiseksi kaiken desimaalipisteen jﺣ۳lkeen
siten, ettﺣ۳ kaikki tﺣ۳mﺣ۳n tavaraa, koska se ei
sovi kﺣ۳site kokonaisluku, joka on vain numero kuin negatiivinen 1, 0, 1,
ylﺣﭘs ja alas, se heittﺣ۳ﺣ۳ pois kaiken desimaalipisteen jﺣ۳lkeen, koska olet
ei mahdu desimaalipisteen in kokonaisluku mﺣ۳ﺣ۳ritelmﺣ۳n.
>> Joten vastaus tﺣ۳ssﺣ۳ on nolla.
Miten siis korjata?
Me tarvitsemme toinen ratkaisu kaikki yhdessﺣ۳.
Ja voimme tehdﺣ۳ tﺣ۳mﺣ۳n seuraavasti.
>> Anna minun mennﺣ۳ eteenpﺣ۳in ja luoda uusi tiedosto, tﺣ۳mﺣ۳ yksi nimeltﺣ۳ﺣ۳n floats.c.
Ja tallenna se tﺣ۳ﺣ۳llﺣ۳ samaan hakemistoon, float.c.
Ja anna minun mennﺣ۳ eteenpﺣ۳in ja kopioi joitakin ettﺣ۳ koodia aikaisemmin.
>> Mutta sen sijaan saada int, tehdﺣ۳ﺣ۳n tﺣ۳mﺣ۳.
Anna minulle liukulukuarvoksi nimeltﺣ۳ﺣ۳n x. jossa liukuluku
arvo on vain kirjaimellisesti jotain liukuvan pilkun.
Se voi liikkua vasemmalle, oikealle.
Se on todellinen numero.
>> Ja Soitan ei saada int, mutta saada kellua,
joka myﺣﭘs oli yksi valikko annetuista vaihtoehdoista C250 kirjastossa.
Vaihdetaan y kﺣ۳teisvaroja.
Joten tﺣ۳mﺣ۳ tulee saada kellua.
>> Ja nyt, emme halua kytkeﺣ۳ ints.
On kﺣ۳ynyt ilmi, meidﺣ۳n on kﺣ۳ytettﺣ۳vﺣ۳ prosenttiin f float, prosenttia f float,
ja nyt tallentaa sen.
Ja nyt, sormet ristissﺣ۳, tee kellukkeet, mukava, piste slash kelluu.
x tulee olemaan yksi 1. y Tulee olemaan 10 uudelleen.
>> Ja kiva, OK minun lisﺣ۳ksi on oikea.
Toivoin enemmﺣ۳n, mutta unohdin kirjoittaa sitﺣ۳.
Joten mennﺣ۳ﺣ۳n ja korjata looginen virhe.
>> Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja napata seuraavaa.
Me vain tehdﺣ۳ vﺣ۳hﺣ۳n kopioi ja liitﺣ۳.
Ja aion sanoa miinus.
>> Ja aion sanoa kertaa.
Ja aion sanoa jaettu.
Ja en aio tehdﺣ۳ modulo, joka ei ole yhtﺣ۳ germane tﺣ۳ssﺣ۳,
jaettuna f, ja ajat plus-- OK, tehdﺣ۳ﺣ۳n tﺣ۳mﺣ۳ uudestaan.
>> Tee kellukkeet, piste slash kellukkeet, ja 1, 10, and-- mukava, no, OK.
Joten olen idiootti.
Joten tﺣ۳mﺣ۳ on hyvin yleinen tietotekniikassa
tehdﺣ۳ typeriﺣ۳ virheitﺣ۳ nﺣ۳in.
>> Opetuksellisia tarkoituksia varten, mitﺣ۳ halusin tehdﺣ۳
oli muuttaa tiedettﺣ۳ tﺣ۳ﺣ۳llﺣ۳ plus, miinus, ettﺣ۳ ajat,
ja jakaa, kun toivottavasti huomanneet tﺣ۳mﺣ۳n harjoituksen aikana.
Nyt Katsotaanpa uudelleen kokoaa ohjelma, tehdﺣ۳ piste slash kelluu.
>> Ja kolmannen kerran, nyt katso jos se tﺣ۳yttﺣ۳ﺣ۳ odotukseni.
1, 10, kirjoita, kyllﺣ۳, OK, 1.000, jaettuna 10.000, on 0,100000.
Ja se osoittautuu voimme valvoa, kuinka monta numerot ovat sen jﺣ۳lkeen ne desimaaliin.
Me itse asiassa tulee.
Palaamme tﺣ۳hﺣ۳n.
>> Mutta nyt, itse asiassa, matematiikka on oikea.
Joten, jﺣ۳lleen, mikﺣ۳ on takeaway tﺣ۳ﺣ۳llﺣ۳?
On kﺣ۳ynyt ilmi, ettﺣ۳ C, on ei vain pelkﺣ۳stﺣ۳ﺣ۳n strings-- ja, itse asiassa,
ei ole oikeastaan, koska me lisﺣ۳tﺣ۳ ne kanssa CS50 kirjasto.
Mutta ei ole vain ints.
>> On myﺣﭘs kelluu.
Ja se osoittautuu joukko muita tietoja tyyppejﺣ۳ myﺣﭘs, ettﺣ۳ kﺣ۳ytﺣ۳mme ennen pitkﺣ۳ﺣ۳.
Osoittautuu, jos haluat yhden merkki, ei merkkijono,
voit kﺣ۳yttﺣ۳ﺣ۳ vain char.
>> Osoittautuu, ettﺣ۳ jos haluat bool, looginen arvo, tosi tai epﺣ۳tosi vain,
kiitos CS50 kirjasto, olemme lisﺣ۳tﺣ۳ﺣ۳n C BOOL tietotyyppi samoin.
Mutta se myﺣﭘs esittﺣ۳ﺣ۳ vuonna monia muita kieliﺣ۳ samoin.
Ja kﺣ۳y ilmi, ettﺣ۳ joskus tarvitsee suurempia numeroita sitten tulevat oletuksena
jossa ints ja kelluu.
>> Ja itse asiassa, kaksinkertainen on useita joka kﺣ۳yttﺣ۳ﺣ۳ ei 32 bittiﺣ۳, mutta 64 bittiﺣ۳.
Ja pitkﺣ۳ﺣ۳n pitkﺣ۳ﺣ۳n on numero, kﺣ۳yttﺣ۳ﺣ۳ ei 32 bittiﺣ۳ mutta 64 bittiﺣ۳,
vastaavasti, liukuluku arvot ja kokonaislukuja, vastaavasti.
Joten itse asiassa nyt tutustua tﺣ۳hﺣ۳n toimintoon.
>> Aion mennﺣ۳ eteenpﺣ۳in tﺣ۳ssﺣ۳ ja lietsoa yksi muu ohjelma.
Tﺣ۳ﺣ۳llﺣ۳, aion mennﺣ۳ eteenpﺣ۳in ja sisﺣ۳llyttﺣ۳vﺣ۳t CS50.h.
Ja anna minun mennﺣ۳, ovat standardin IO.h.
>> Ja huomaat jotain funky tﺣ۳ﺣ۳llﺣ۳ tapahtuu.
Se ei ole vﺣ۳rikoodeja asioita samoin kuin ennen.
Ja on kﺣ۳ynyt ilmi, ettﺣ۳ koska minﺣ۳ eivﺣ۳t ole antaneet asia tiedostonimen.
>> Aion kutsua tﺣ۳tﺣ۳ yksi sizeof.c, ja valitse Tallenna.
Ja huomaa, mitﺣ۳ tapahtuu, hyvin valkoinen koodia vastaan ﻗﻗmustaa taustaa.
Nyt ainakin siellﺣ۳ purppuramaisen siellﺣ۳.
Ja se on syntaksi korostettu.
>> Tﺣ۳mﺣ۳ johtuu yksinkertaisesti, olen kertoi IDE minkﺣ۳lainen tiedosto
se on antamalla sille nimi, ja erityisesti tiedostopﺣ۳ﺣ۳te.
Nyt mennﺣ۳ﺣ۳n eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
Aion mennﺣ۳ eteenpﺣ۳in ja hyvin yksinkertaisesti tulostaa following-- bool
on prosenttia LU.
>> Tulemme takaisin ettﺣ۳ vain hetken.
Ja sitten aion tulostuskoon bool.
Ja nyt, vain sﺣ۳ﺣ۳stﺣ۳ﺣ۳ itse jonkin aikaa, olen
aikoo tehdﺣ۳ koko joukko nﺣ۳istﺣ۳ kerralla.
Ja erityisesti, aion vaihtaa tﺣ۳mﺣ۳n char ja char.
Tﺣ۳mﺣ۳ yksi, aion muuttaa kaksinkertainen ja kaksinkertainen.
>> Tﺣ۳mﺣ۳ yksi, aion muuttaa kelluvaan ja kellua.
Tﺣ۳mﺣ۳ yksi, aion muuttuvat int ja int.
Ja tﺣ۳mﺣ۳, aion vaihtaa pitkﺣ۳ﺣ۳n pitkﺣ۳ﺣ۳n.
Ja se on edelleen ottaen pitkﺣ۳ﺣ۳n, pitkﺣ۳ﺣ۳n pitkﺣ۳ﺣ۳n.
>> Ja sitten lopuksi annoin itse liikaa, merkkijono.
On kﺣ۳ynyt ilmi, ettﺣ۳ C, siellﺣ۳ erityinen operaattori nimeltﺣ۳ﺣ۳n
koko se kirjaimellisesti menossa, kun ajaa,
Kerro meille kokoa jokainen nﺣ۳istﺣ۳ muuttujista.
Ja tﺣ۳mﺣ۳ on tapa, nyt, voimme liittﺣ۳ﺣ۳ takaisin
viime viikon keskustelu Tietojen ja edustus.
>> Anna minun mennﺣ۳ eteenpﺣ۳in ja koota koko piste slash koko.
Ja katsotaan.
On kﺣ۳ynyt ilmi, ettﺣ۳ C, nimenomaan CS50 IDE,
nimenomaan kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳ Ubuntu,
joka on 64-bittinen kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳ jﺣ۳rjestelmﺣ۳ tﺣ۳ssﺣ۳ tapauksessa,
bool on menossa kﺣ۳yttﺣ۳ﺣ۳ yhden tavun tilaa.
Niin koko mitataan, ei bittiﺣ۳, mutta tavuina.
Ja muistaa, ettﺣ۳ yksi tavu on kahdeksan bittiﺣ۳.
Joten bool, vaikka Teknisesti tarvitaan vain 0 tai 1,
se on hieman tuhlaileva miten me lisﺣ۳nnyt sen.
Se todella tulee kﺣ۳yttﺣ۳ﺣ۳ koko byte-- niin kaikki nollia, ovat ehkﺣ۳
kaikki ne, tai jotain sellaista, tai vain yksi 1 joukossa kahdeksan bittiﺣ۳.
>> Char puolestaan ﻗﻗkﺣ۳ytetﺣ۳ﺣ۳n hahmo kuten ASCII per viime viikolla,
tulee olemaan yksi merkki.
Ja ettﺣ۳ synchs kanssa kﺣ۳sityksemme se on enintﺣ۳ﺣ۳n 256 bits-- pikemminkin
synchs sen kanssa yhteydessﺣ۳ ole pidempi kuin 8 bittiﺣ۳, joka
antaa meille jopa 256 arvoa.
Kaksinkertainen on menossa olla 8 tavua tai 64 bittiﺣ۳.
>> Koho on 4.
Int on 4.
Pitkﺣ۳, pitkﺣ۳ on 8.
Ja merkkijono on 8.
Mutta ﺣ۳lﺣ۳ huoli siitﺣ۳.
Aiomme kuoria takaisin, ettﺣ۳ kerros.
On kﺣ۳ynyt ilmi, jouset voi olla pidempi kuin 8 tavua.
>> Ja todellakin, olemme kirjoittaneet jouset jo, Hello World,
yli 8 tavua.
Mutta me palaamme ettﺣ۳ vain hetken.
Mutta take pois tﺣ۳ssﺣ۳ on seuraava.
>> Mikﺣ۳ tahansa tietokone on vain rajallinen muistin mﺣ۳ﺣ۳rﺣ۳n ja tilaa.
Voit tallentaa vain niin paljon tiedostoja Macin tai PC.
Voit tallentaa vain niin paljon ohjelmia RAM kﺣ۳ynnissﺣ۳ kerralla, vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳ edes
virtuaalinen muisti, koska sinulla on rajallinen mﺣ۳ﺣ۳rﺣ۳ muistia.
>> Ja vain picture-- jos et ole koskaan avannut kannettavan
tai tilata lisﺣ۳ﺣ۳ muistia for tietokonetta,
ehkﺣ۳ tiedﺣ۳, ettﺣ۳ tietokoneesi sisﺣ۳lle
on jotain, joka nﺣ۳yttﺣ۳ﺣ۳ vﺣ۳hﺣ۳n kuin tﺣ۳mﺣ۳.
Joten tﺣ۳mﺣ۳ on vain yleinen yhtiﺣﭘ nimeltﺣ۳ Ratkaisevaa joka tekee RAM tietokoneita.
Ja RAM on jossa ohjelmat elﺣ۳vﺣ۳t, kun he kﺣ۳ynnissﺣ۳.
>> Joten jokaisen Mac- tai PC, kun kaksinkertainen valitse ohjelma, ja se avautuu,
ja se avaa joitakin Word-dokumentti Tai jotain sellaista,
se varastoi vﺣ۳liaikaisesti RAM, koska RAM on nopeampi
kuin kovalevyllﺣ۳, tai SSD-levy.
Joten se on vain jos ohjelmia mennﺣ۳ elﺣ۳ﺣ۳ kun he kﺣ۳ynnissﺣ۳,
tai kun tiedostoja kﺣ۳ytetﺣ۳ﺣ۳n.
>> Joten sinulla on asioita, jotka nﺣ۳yttﺣ۳vﺣ۳t nﺣ۳in sisﺣ۳llﺣ۳ kannettavan tietokoneen,
tai hieman suurempi asioita sisﺣ۳llﺣ۳ tyﺣﭘpﺣﭘydﺣ۳n.
Mutta avain on sinulla on vain rajallinen mﺣ۳ﺣ۳rﺣ۳ nﺣ۳istﺣ۳ asioista.
Ja on vain rajallinen mﺣ۳ﺣ۳rﺣ۳ laitteisto istuu tﺣ۳llﺣ۳ tyﺣﭘpﺣﭘytﺣ۳ oikealla
tﺣ۳ssﺣ۳.
>> Joten, varmasti, emme voi varastoida ﺣ۳ﺣ۳rettﺣﭘmﺣ۳n pitkﺣ۳ numeroita.
Ja vielﺣ۳, jos luulet takaisin asteella, kuinka monta numeroa voi
sinun on oikea of desimaalipilkkua?
Tﺣ۳stﺣ۳ asiasta, kuinka monta numeroa voi olet vasemmalla desimaalipilkkua?
Todella, ﺣ۳ﺣ۳rettﺣﭘmﺣ۳n monta.
>> Nyt me ihmiset ehkﺣ۳ vain osaavat lausua miljoonaan,
ja miljardia biljoonaa, ja Kvadriljoona, ja quintillion.
Ja olen Loitonnetaan minun understanding-- tai my-- ymmﺣ۳rrﺣ۳n
numeroita, mutta minun ﺣ۳ﺣ۳ntﺣ۳minen numeroita.
Mutta he voivat saada ﺣ۳ﺣ۳rettﺣﭘmﺣ۳n suuri kanssa ﺣ۳ﺣ۳rettﺣﭘmﺣ۳n monta numeroa vasemmalle
tai oikealla desimaalipilkkua.
>> Mutta tietokoneissa on vain rajallinen mﺣ۳ﺣ۳rﺣ۳ muistia,
ﺣ۳ﺣ۳rellinen mﺣ۳ﺣ۳rﺣ۳ transistoreita, joka on rajallinen mﺣ۳ﺣ۳rﺣ۳ lamppujen sisﺣ۳lle.
Mitﺣ۳ tapahtuu, kun olet tila loppuu?
Toisin sanoen, jos muistelen viime viikolla
Kun puhuimme numeroita itse edustaa binary,
Oletetaan, ettﺣ۳ meillﺣ۳ Tﺣ۳mﺣ۳ 8-bittinen arvo tﺣ۳ﺣ۳llﺣ۳.
>> Ja meillﺣ۳ on seitsemﺣ۳n 1: n ja yhden 0.
Ja oletetaan, ettﺣ۳ haluamme Lisﺣ۳ﺣ۳ 1 tﺣ۳hﺣ۳n arvoon.
Tﺣ۳mﺣ۳ on todella suuri mﺣ۳ﺣ۳rﺣ۳ nyt.
>> Tﺣ۳mﺣ۳ on 254, jos muistan matematiikka viime viikolla oikealta.
Mutta mitﺣ۳ jos muutan ettﺣ۳ oikeanpuoleisin 0 1?
Koko mﺣ۳ﺣ۳rﺣ۳, ja Tietenkin tulee kahdeksan 1: n.
Joten olemme edelleen hyvﺣ۳.
>> Ja ettﺣ۳ luultavasti edustaa 255, vaikkakin riippuen yhteydessﺣ۳
se voisi todella edustaa negatiivinen luku.
Mutta siitﺣ۳ lisﺣ۳ﺣ۳ toisella kertaa.
Tﺣ۳mﺣ۳ tuntuu se on noin perﺣ۳ti voin luottaa.
>> Nyt se on vain 8 bittiﺣ۳.
Ja Mac, varmasti, on tapa enemmﺣ۳n kuin 8 bittiﺣ۳ muistia.
Mutta se ei ole rajallinen.
Joten Sama pﺣ۳tee, vaikka on enemmﺣ۳n nﺣ۳mﺣ۳ ovat nﺣ۳ytﺣﭘllﺣ۳.
>> Mutta mitﺣ۳ tapahtuu, jos olet tallentamista tﺣ۳mﺣ۳ mﺣ۳ﺣ۳rﺣ۳, 255,
ja haluat laskea 1 hieman korkeampi?
Haluatko mennﺣ۳ 255-256.
Ongelma on tietenkin se, ettﺣ۳ jos alkaa laskea nollasta kuten viime viikolla,
et voi laskea niin korkea 256, puhumattakaan 257,
puhumattakaan 258, m koska mitﺣ۳ tapahtuu, kun lisﺣ۳ﺣ۳t 1?
Jos tehdﺣ۳ vanhan alakoulussa lﺣ۳hestymistapa, laittaa 1 tﺣ۳ﺣ۳llﺣ۳,
ja sitten 1 plus 1 on 2, mutta se on todella nolla, kannat 1,
kuljettaa 1, kuljettaa 1.
Kaikki nﺣ۳mﺣ۳ asiat, Nﺣ۳iden 1: n, mene nollaan.
Ja te pﺣ۳ﺣ۳tteeksi, kyllﺣ۳, kuten joku huomautti, 1 vasemmalla puolella.
Mutta kaiken voit itse nﺣ۳hdﺣ۳ ja mahdu muistiin
on vain kahdeksan 0: n, toisin sanoen jossain vaiheessa, jos, tietokone,
kokeillut laskee riittﺣ۳vﺣ۳n korkea ylﺣﭘs, olet menossa kietoa, nﺣ۳yttﺣ۳isi siltﺣ۳,
nolla, tai ehkﺣ۳ jopa negatiivinen numerot, jotka ovat jopa pienempi kuin nolla.
>> Voimme tavallaan nﺣ۳hdﺣ۳ tﺣ۳mﺣ۳n.
Anna minun mennﺣ۳ eteenpﺣ۳in ja kirjoittaa todellinen nopea ohjelma tﺣ۳ﺣ۳llﺣ۳.
Anna minun mennﺣ۳ eteenpﺣ۳in ja kirjoittaa ohjelma nimeltﺣ۳ ylivuoto.
Sisﺣ۳llytﺣ۳ CS50.h, sisﺣ۳ltﺣ۳vﺣ۳t standardi IO.h-- oh,
Olen todella ikﺣ۳vﺣ۳ syntaksin.
Joten tallentaa tﺣ۳mﺣ۳n overflow.c.
>> Ja nyt int main void-- ja ennen pitkﺣ۳ﺣ۳ kﺣ۳ymme
palata miksi pidﺣ۳mme kirjoittamista int main mitﺣ۳tﺣﭘn.
Mutta nyt, haluan vain tehdﺣ۳ se, itsestﺣ۳ﺣ۳nselvyytenﺣ۳.
Annetaan itse int, ja alustaa sen 0.
>> Katsotaan sitten tehdﺣ۳ int saan zero-- itse asiassa, tehdﺣ۳ﺣ۳n pﺣ۳ﺣ۳ttymﺣ۳ttﺣﭘmﺣ۳ﺣ۳n silmukkaan
ja katso mitﺣ۳ tapahtuu.
Vaikka totta, niin nyt tulostaa n on prosentti i, kenoviiva n, plug-in n.
Mutta nyt, tehdﺣ۳ﺣ۳n n saa n plus 1.
>> Eli toisin sanoen, kullakin iteraatio tﺣ۳mﺣ۳n loputon silmukka,
Otetaan n arvosta, ja lisﺣ۳tﺣ۳ﺣ۳n 1 siihen, ja sitten
tuloksen tallentaminen takaisin n vasemmalla.
Ja itse asiassa, olemme nﺣ۳hneet syntaksin hieman nﺣ۳in lyhyesti.
Viileﺣ۳ temppu on sen sijaan kirjoittamisen tﺣ۳mﺣ۳n kaiken,
voit itse sanoa n plus on 1.
>> Tai jos todella haluat olla fancy, voit sanoa n plus plus puolipisteellﺣ۳.
Mutta nﺣ۳mﺣ۳ kaksi jﺣ۳lkimmﺣ۳istﺣ۳ ovat vain mitﺣ۳ olimme kutsua syntaktinen sokeria
ettﺣ۳ ensimmﺣ۳inen asia.
>> Ensimmﺣ۳inen asia on selvempi, tﺣ۳ysin hieno, tﺣ۳ysin oikea.
Mutta tﺣ۳mﺣ۳ on yleisempﺣ۳ﺣ۳, sanon.
Niin teemme tﺣ۳tﺣ۳ vain hetken.
>> Oletetaan nyt tehdﺣ۳ ylivuoto, joka kuulostaa melko pahaenteinen, piste slash ylivuoto.
Katsotaan, n on tulossa melko iso.
Mutta Ajatellaanpa, kuinka suuri voi n pﺣ۳ﺣ۳stﺣ۳?
>> n on int.
Nﺣ۳imme ﺣ۳sken kokoon Esimerkiksi ettﺣ۳ int on neljﺣ۳ tavua.
Tiedﺣ۳mme viime viikolla, neljﺣ۳ tavua on 32 bittiﺣ۳, koska 8 kertaa 4, joka on 32.
Se tulee olemaan 4 miljardia.
>> Ja olemme jopa 800000.
Tﺣ۳mﺣ۳ tulee kestﺣ۳ﺣ۳ ikuisesti laskea niin korkealle kuin suinkin mahdollista.
Joten aion mennﺣ۳ eteenpﺣ۳in, kuten saatat ennen pitkﺣ۳ﺣ۳,
ja osuma ohjaus C-- rehellisesti, Ohjaus C, paljon, jossa valvonta C yleisesti
vﺣ۳lineet peruuttaa.
Valitettavasti, koska tﺣ۳mﺣ۳ on kﺣ۳ynnissﺣ۳ pilveen,
joskus pilvi on sylkeminen ulos niin paljon tavaraa,
niin paljon tuotos, se tulee kestﺣ۳ﺣ۳ vﺣ۳hﺣ۳n aikaa minun panos
pﺣ۳ﺣ۳stﺣ۳ pilveen.
Joten vaikka osuin Ohjaus C muutaman sekunnin sitten,
tﺣ۳mﺣ۳ on ehdottomasti sivussa vaikutus pﺣ۳ﺣ۳ttymﺣ۳ttﺣﭘmﺣ۳ﺣ۳n silmukkaan.
>> Ja niin tﺣ۳llaisissa tapauksissa, olemme aio jﺣ۳ttﺣ۳ﺣ۳ sen olla.
Ja aiomme lisﺣ۳tﺣ۳ toisen pﺣ۳ﺣ۳teikkuna tﺣ۳nne
kanssa plus, mikﺣ۳ tietysti ei niin, koska se on vielﺣ۳ miettiﺣ۳.
Ja mennﺣ۳ﺣ۳n eteenpﺣ۳in ja olla hieman jﺣ۳rkevﺣ۳mpi.
>> Aion mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳mﺣ۳ vain ﺣ۳ﺣ۳rellisen monta kertaa.
Kﺣ۳ytetﺣ۳ﺣ۳n for-silmukka, joka viittasin aiemmin.
Tehdﺣ۳ﺣ۳n tﺣ۳mﺣ۳.
Anna minulle toinen muuttuja int i saa 0.
i on pienempi kuin, sanokaamme, 64 i ++.
Nyt anna minun mennﺣ۳ eteenpﺣ۳in ja tulostaa out n on prosentin i, pilkku n.
Ja sitten n- tﺣ۳mﺣ۳ on edelleen vie ikuisesti.
Tehdﺣ۳ﺣ۳n tﺣ۳mﺣ۳.
>> n saa n kertaa 2.
Tai voisimme olla fancy ja tehdﺣ۳ kertaa = 2.
Mutta sanotaan vaikka n on yhtﺣ۳ kuin itse, kertaa 2.
Toisin sanoen, tﺣ۳mﺣ۳n uusi versio ohjelmasta,
En halua odottaa ikuisesti alkaen kuten 800000 4 miljardia.
Toivotaan vain hoitaa tﺣ۳mﺣ۳n.
>> Katsotaan todella kaksinkertaistuu n kerta.
Joka muistaa, kaksinkertaistaminen on vastakohta ottaa tietenkin.
Ja kun viime viikolla meillﺣ۳ jotain uudestaan, ja uudestaan,
ja jﺣ۳lleen, huippunopea, kaksinkertaistaminen varmasti
saa meidﺣ۳t 1 suurin mahdollinen arvoa, ettﺣ۳ voimme laskea sisﺣ۳isellﺣ۳.
>> Joten tehdﺣ۳ juuri tﺣ۳tﺣ۳.
Ja me palaamme tﺣ۳hﺣ۳n ennen pitkﺣ۳ﺣ۳.
Mutta tﺣ۳mﺣ۳ taas on aivan toistuva lohko Scratch.
Ja voit kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳ ennen pitkﺣ۳ﺣ۳.
>> Tﺣ۳mﺣ۳ tarkoittaa vain sitﺣ۳, count nollasta asti, mutta ei yhtﺣ۳ suuri, 64.
Ja jokaisen iteraation tﺣ۳mﺣ۳n silmukka, vain pitﺣ۳ﺣ۳ kasvattamalla i.
Joten i ++ - ja tﺣ۳mﺣ۳ yleinen konstruktio rivillﺣ۳ 7 on vain erittﺣ۳in yleinen tapa
toistamaan muutaman rivin koodi, jokin mﺣ۳ﺣ۳rﺣ۳ kertoja.
Mitkﺣ۳ riviﺣ۳ koodia?
Nﺣ۳mﺣ۳ aaltosulkei-, kun saattanut poimittu nyt,
tarkoittaa, toimi seuraavasti.
>> Se on kuin Scratch, kun se on keltainen lohkojen
ja muut vﺣ۳rit tuollaista omaksua tai halata muita lohkoja.
Se mitﺣ۳ nﺣ۳mﺣ۳ kihara olkaimet tekevﺣ۳t tﺣ۳ﺣ۳llﺣ۳.
Joten jos sain syntaksin right-- sinulle nﺣ۳kee porkkana symboli C vﺣ۳lineet
niin monta kertaa olin yritetﺣ۳ﺣ۳n ratkaista tﺣ۳mﺣ۳ ongelma.
Joten pﺣ۳ﺣ۳stﺣ۳ eroon, ettﺣ۳ yksi kokonaan, ja sulje se ikkuna.
Ja kﺣ۳ytﺣ۳mme uuteen.
Tee ylivuoto, piste slash ylivuoto, Enter, kaikki hyvin,
se nﺣ۳yttﺣ۳ﺣ۳ pahalta aluksi.
Mutta nyt selata ajassa taaksepﺣ۳in, koska tein tﺣ۳mﺣ۳n 64 kertaa.
>> Ja huomaa, ensimmﺣ۳istﺣ۳ kertaa, n on 1.
Toisen kerran, n on 2, Sitten 4, sitten 8, sitten 16.
Ja nﺣ۳yttﺣ۳ﺣ۳ siltﺣ۳, ﻗﻗettﺣ۳ niin pian kuin Saan noin 1 miljardi,
jos en kaksinkertaistaa jﺣ۳lleen, ettﺣ۳ pitﺣ۳isi antaa minulle 2 miljardia.
Mutta nﺣ۳yttﺣ۳ﺣ۳ siltﺣ۳, ﻗﻗse on aivan partaalla.
>> Ja niin se todella pursuaa int alkaen 1 miljardi
karkeasti negatiivinen 2 miljardia, koska kokonaisluku,
toisin kuin numerot me olivat olettaen viime viikolla,
voi olla sekﺣ۳ positiivisia ettﺣ۳ negatiivisia todellisuudessa ja tietokoneen.
Niin ainakin yksi nﺣ۳istﺣ۳ bittiﺣ۳ tehokkaasti varastettu.
Niinpﺣ۳ me oikeastaan ﻗﻗvain 31 bittiﺣ۳, tai 2 miljardia mahdollisia arvoja.
>> Mutta nyt, takeaway on melko yksinkertaisesti, mitﺣ۳ nﺣ۳mﺣ۳ luvut ovat
ja mitﺣ۳ matematiikka on, jotain pahaa tapahtuu lopulta,
koska lopulta yritﺣ۳t permutoimaan bitit yksi liian monta kertaa.
Ja te tehokkaasti menevﺣ۳t kaikki 1: n ja ehkﺣ۳ kaikki 0: n, tai ehkﺣ۳
vain joitakin muita malli, ettﺣ۳ se selvﺣ۳sti, riippuen asiayhteydestﺣ۳,
voidaan tulkita negatiiviseksi numero.
Ja niin se nﺣ۳yttﺣ۳isi korkein I voi laskea tﺣ۳ssﺣ۳ nimenomaisessa ohjelmassa
on vain noin 1 miljardi.
Mutta on osaratkaisu tﺣ۳ﺣ۳llﺣ۳.
Tiedﺣ۳tkﺣﭘ mitﺣ۳?
>> Saanen muuttuvat perﺣ۳isin int pitkﺣ۳ pitkﺣ۳.
Ja anna minun mennﺣ۳ eteenpﺣ۳in tﺣ۳ﺣ۳llﺣ۳ ja say-- aion olla
muuttaa tﺣ۳mﺣ۳ allekirjoittamaton pitkﺣ۳.
Tai, katsotaanpa, en koskaan muista itse.
>> Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja tehdﺣ۳ ylivuoto.
Ei, se ei ole sitﺣ۳, OTT, kiitos.
Joten joskus Clang voi olla hyﺣﭘdyksi.
En muista mitﺣ۳ muotoa specifier oli pitkﺣ۳ﺣ۳n pitkﺣ۳ﺣ۳n.
>> Mutta todellakin, Clang kertoi.
Green on jonkinlainen hyviﺣ۳, edelleen sitﺣ۳ teit virheen.
Se arvaamaan, ettﺣ۳ tarkoitin LLD.
>> Joten Otan se neuvo, pitkﺣ۳ pitkﺣ۳ desimaaliluku, paitsi ettﺣ۳.
Ja anna minun uusintana se, dot slash ylivuoto, Enter.
Ja nyt, mitﺣ۳ on siistiﺣ۳ tﺣ۳mﺣ۳.
>> Jos minﺣ۳ vierittﺣ۳ﺣ۳ ajassa taaksepﺣ۳in, vielﺣ۳ kﺣ۳ynnisty laskenta samalla place-- 1, 2, 4,
8, 16.
Ilmoitus, saamme kaikki asti 1 miljardi.
Mutta sitten noustaan ﻗﻗ2 miljardia.
>> Sitten saamme 4 miljardia, sitten 8 miljardia, 17 miljardia.
Ja me mennﺣ۳ enemmﺣ۳n, ja korkeampi, ja korkeampi.
Lopulta tﺣ۳mﺣ۳kin taukoja.
>> Lopulta pitkﺣ۳ pitkﺣ۳, joka on 64-bittinen arvo, ei
32-bittinen arvo, jos lasketaan liian korkea ja sitﺣ۳ kietoa 0.
Ja tﺣ۳ssﺣ۳ tapauksessa, me sattuvat pﺣ۳ﺣ۳tyﺣ۳ negatiivinen luku.
>> Eli tﺣ۳mﺣ۳ on ongelma.
Ja kﺣ۳y ilmi, ettﺣ۳ tﺣ۳mﺣ۳ Ongelma ei ole kovin mystistﺣ۳.
Vaikka olen tarkoituksella aiheuttama sitﺣ۳ nﺣ۳itﺣ۳ virheitﺣ۳,
se kﺣ۳ﺣ۳ntyy pois nﺣ۳emme sen tavallaan kaiken ympﺣ۳rillﺣ۳mme, tai ainakin jotkut meistﺣ۳ tekevﺣ۳t.
>> Joten Lego Star Wars, jos olet koskaan pelannut peliﺣ۳,
se osoittautuu voit mennﺣ۳ ympﺣ۳ri rikkoa asioita LEGO maailmassa,
ja kerﺣ۳tﺣ۳ kolikoita, olennaisesti.
Ja jos olet koskaan pelannut tﺣ۳mﺣ۳ peli aivan liian paljon aikaa,
koska tﺣ۳mﺣ۳ nimetﺣﭘn yksittﺣ۳iset tﺣ۳ﺣ۳llﺣ۳ teki, kokonaismﺣ۳ﺣ۳rﺣ۳
kolikoita, jotka voit kerﺣ۳tﺣ۳ on, nﺣ۳yttﺣ۳isi siltﺣ۳, ﻗﻗ4 miljardia.
>> Nyt se on todella pyﺣﭘristetty.
Joten LEGO yritti pitﺣ۳ﺣ۳ asiat kﺣ۳yttﺣ۳jﺣ۳ystﺣ۳vﺣ۳llinen.
He eivﺣ۳t tee sitﺣ۳ tarkalleen 2 32 teho, per viime viikolla.
Mutta 4 miljardia on syy.
Nﺣ۳yttﺣ۳ﺣ۳ siltﺣ۳, ﻗﻗtﺣ۳mﺣ۳n tiedon perusteella, ettﺣ۳ LEGO, ja yritys, joka
teki tﺣ۳mﺣ۳n todellinen ohjelmisto, pﺣ۳ﺣ۳tti ettﺣ۳ Enimmﺣ۳ismﺣ۳ﺣ۳rﺣ۳ kolikoita
kﺣ۳yttﺣ۳jﺣ۳ voi kerﺣ۳ﺣ۳ntyﺣ۳ on todellakin 4 miljardia,
koska he valitsivat niiden koodin kﺣ۳yttﺣ۳ﺣ۳ ei pitkﺣ۳ﺣ۳n pitkﺣ۳ﺣ۳n, ilmeisesti,
mutta vain kokonaisluku, allekirjoittamattomasta kokonaisluku, vain positiivinen kokonaisluku, jonka
max arvo on karkeasti se.
No, tﺣ۳ssﺣ۳ on toinen hauska yksi.
Joten pelin Civilization, joka jotkut teistﺣ۳ saattavat tuntea, jossa
kﺣ۳y ilmi, ettﺣ۳ vuosia sitten oli virhe tﺣ۳ssﺣ۳ pelissﺣ۳, jolloin
jos rooliin Gandhi peliin,
sen sijaan hﺣ۳nestﺣ۳ on hyvin pasifisti, sen sijaan oli uskomattoman, uskomattoman
aggressiivinen, joissakin olosuhteissa.
Erityisesti sillﺣ۳ tavalla, ettﺣ۳ Civilization teoksia on, ettﺣ۳ jos pelaaja,
hyvﺣ۳ksyﺣ۳ demokratia, sinun aggressiivisuus pisteet saa
vﺣ۳hennetﺣ۳ﺣ۳n kahdella, joten miinus miinus, ja sitten miinus miinus.
>> Joten vﺣ۳hennﺣ۳ 2 alkaen todellinen iteroimalla.
Valitettavasti jos iteroimalla on aluksi 1, ja vﺣ۳hennﺣ۳ 2 siitﺣ۳
hyvﺣ۳ksymisen jﺣ۳lkeen demokratia kuten Gandhi tﺣ۳ﺣ۳llﺣ۳ saattaisi
ovat tehneet, koska hﺣ۳n oli hyvin passive-- 1 mittakaavassa aggressiivisuus.
Mutta jos hﺣ۳n omaksuu demokratian, sitten hﺣ۳n kulkee 1 negatiiviseksi 1.
>> Valitettavasti ne olivat kﺣ۳yttﺣ۳mﺣ۳llﺣ۳ unsigned numerot,
mikﺣ۳ tarkoittaa, ettﺣ۳ ne kﺣ۳sitellﺣ۳ﺣ۳n jopa negatiivista numeroita kuin ne olisivat positiivisia.
Ja se osoittautuu, ettﺣ۳ positiivinen vastaava negatiivinen 1,
tyypilliseen tietokoneohjelmat, on 255.
Joten jos Gandhi hyvﺣ۳ksyy demokratiaa, ja siksi on
hﺣ۳nen aggressiivisuus pisteet laskivat, se todella koittavat 255
ja tekee hﺣ۳nestﺣ۳ eniten aggressiivinen luonne peliin.
Joten voit googlettaa ylﺣﭘs tﺣ۳stﺣ۳.
Ja se oli todellakin vahingossa ohjelmointi bug,
mutta joka on tullut varsin Lore lﺣ۳htien.
>> Siinﺣ۳ kaikki hauskaa ja sﺣﭘpﺣﭘ.
Enemmﺣ۳n pelottavaa on, kun varsinainen reaalimaailman laitteita, eikﺣ۳ pelejﺣ۳,
nﺣ۳mﺣ۳ samat viat.
Itse asiassa vain vuosi sitten artikkeli tuli ulos noin Boeing 787.
>> Ja artikkeli ensin silmﺣ۳yksellﺣ۳ lukee hieman mystistﺣ۳.
Mutta se sanoi, ohjelmisto haavoittuvuus Boeingin
uusi 787 Dreamliner jet on voi aiheuttaa lentﺣ۳jien
hallinnan menetyksen ilma, mahdollisesti
puolivﺣ۳lissﺣ۳ lennon, FAA virkamiehet varoitti lentoyhtiﺣﭘt hiljattain.
Se oli mﺣ۳ﺣ۳ritys ettﺣ۳ malli 787
lentokone, joka on kytketty yhtﺣ۳jaksoisesti 248 pﺣ۳ivﺣ۳ﺣ۳
voivat menettﺣ۳ﺣ۳ kokonaan vaihtovirran, AC, sﺣ۳hkﺣﭘvoimaa vuoksi generaattorin
ohjausyksikﺣﭘt, GCUs samanaikaisesti menee epﺣ۳onnistua vikasietotilassa.
Se on tavallaan menettﺣ۳ﺣ۳ minua.
Mutta muistio totesi, OK, nyt sain, ettﺣ۳ ehto johtui ohjelmisto
laskuri sisﺣ۳iset generaattorin ohjaus
yksikﺣﭘt, jotka vuotaa yli jﺣ۳lkeen 248 pﺣ۳ivﺣ۳ﺣ۳ jatkuvan tehon.
Olemme julkaista tﺣ۳mﺣ۳n huomaa katoamisen estﺣ۳miseksi
Kaikkien vaihtovirtateknologialla voima, joka voi johtaa
menetys ohjaamaan lentokonetta.
>> Joten, kirjaimellisesti, on jonkin verran kokonaisluku, tai jostakin vastaavasta tietotyyppi,
kﺣ۳ytetﺣ۳ﺣ۳n ohjelmistojen todellisessa lentokoneessa
ettﺣ۳ jos pidﺣ۳t lentokone tarpeeksi kauan, mikﺣ۳ ilmeisesti
voi olla, jos olet juuri kﺣ۳ynnissﺣ۳ niitﺣ۳ jatkuvasti ja koskaan irrottamalla
oman lentokone, nﺣ۳yttﺣ۳ﺣ۳ siltﺣ۳, ﻗﻗtai kerroit sen akut kuolee,
lopulta laskea, ja ylﺣﭘs, ja ylﺣﭘs, ja ylﺣﭘs ja ylﺣﭘs, ja ylﺣﭘs.
>> Ja luonnostaan, joka on rajallinen mﺣ۳ﺣ۳rﺣ۳ muistia
vuotaa yli, liikkuva takaisin nolla tai jokin negatiivinen arvo,
sivuvaikutus, joka on pelottavan todellinen todellisuus
ettﺣ۳ kone saattaa tarvita kﺣ۳ynnistettﺣ۳vﺣ۳ uudelleen, tehokkaasti,
tai voi pudota, pahempi, koska se lentﺣ۳ﺣ۳.
Joten tﺣ۳llaisia ﻗﻗasioita ovat edelleen keskuudessamme,
even-- tﺣ۳mﺣ۳ oli 2015 artikkelin, sitﺣ۳kin pelottavaa
kun et vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳ ymmﺣ۳rtﺣ۳ﺣ۳, arvostaa, tai ennakoida
tuollaiset virheet.
>> Joten se kﺣ۳ﺣ۳ntyy pois on olemassa yksi muu huono puoli datan esityksessﺣ۳.
On kﺣ۳ynyt ilmi, ettﺣ۳ jopa kellukkeet ovat Tﺣ۳llainen virheellinen, koska kellukkeet, liian,
Ehdotin ovat 32 bittiﺣ۳, tai ehkﺣ۳ 64, jos kﺣ۳ytﺣ۳t kaksinkertainen.
Mutta se on silti rajallinen.
>> Ja saalis on, ettﺣ۳ jos voit laittaa ﺣ۳ﺣ۳retﺣﭘn mﺣ۳ﺣ۳rﺣ۳ numeroita
desimaalipisteen jﺣ۳lkeen, ei ole mitﺣ۳ﺣ۳n keinoa sinun
voi edustaa kaikkia mahdollisia numeroita, jotka me opetettiin
alakoulussa voi esiintyﺣ۳ maailmassa.
Tietokone lﺣ۳hinnﺣ۳, on valita osajoukko nﺣ۳itﺣ۳ numeroita
edustaa tarkasti.
>> Nyt tietokone voi pyﺣﭘreﺣ۳ ehkﺣ۳ vﺣ۳hﺣ۳n,
ja voi voit karkeasti tallentaa rajoittamattoman mﺣ۳ﺣ۳rﺣ۳n saatat mahdollisesti haluta.
Mutta intuitiivisesti, jos on rajallinen mﺣ۳ﺣ۳rﺣ۳ bittejﺣ۳,
voit vain permute niitﺣ۳ niin monella rajallinen tavoin.
Joten et voi mahdollisesti Kﺣ۳ytﺣ۳ rajallinen mﺣ۳ﺣ۳rﺣ۳
permutaatiomat- bittien, malleja nollia ja ykkﺣﭘsiﺣ۳,
edustamaan ﺣ۳ﺣ۳retﺣﭘn mﺣ۳ﺣ۳rﺣ۳ numeroita,
mikﺣ۳ viittaa siihen, ettﺣ۳ tietokoneet saattavat hyvinkin olla valehtelee meille joskus.
>> Itse asiassa, tehdﺣ۳ﺣ۳n tﺣ۳mﺣ۳.
Anna minun mennﺣ۳ takaisin CS50 IDE.
Anna minun mennﺣ۳ eteenpﺣ۳in ja luoda pieni ohjelma
kutsuttu epﺣ۳tarkkuus, jotka osoittavat, ettﺣ۳ tietokoneet ovat todellakin epﺣ۳tarkka.
>> Ja anna minun mennﺣ۳ eteenpﺣ۳in ja aloittaa joitakin ettﺣ۳ koodin ennen,
ja nyt vain toimi seuraavasti.
Anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ printf, prosenttia f, kenoviiva n, 1 jaettuna 10.
Toisin sanoen, nyt sukeltaa syvemmﺣ۳lle 1/10, kuten 1 ja jaettuna 10.
Varmasti, tietokone voi edustaa 1/10.
>> Joten mene eteenpﺣ۳in ja tehdﺣ۳ epﺣ۳tarkkuus.
Katsotaan.
Muoto mﺣ۳ﺣ۳rittelee tyypin kaksinkertainen.
Mutta vﺣ۳ite on tyyppiﺣ۳ int.
Mitﺣ۳ tapahtuu?
>> Voi, mielenkiintoinen, joten se on opetus oli ennen.
Sanon, hei, tietokone nﺣ۳yttﺣ۳ﺣ۳ minulle float prosenttia f.
Mutta annan sen 2 ints.
Joten se kﺣ۳ﺣ۳ntyy pois, voin korjata tﺣ۳mﺣ۳ pari tapaa.
>> Voisin vain kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ One 1.0, ja 10 otetaan 10,0, mikﺣ۳ todellakin
vaikutuksesta muuntaa ne floats-- edelleen toivottavasti
sama numero.
Tai se osoittautuu on jotain nﺣ۳emme taas ennen pitkﺣ۳ﺣ۳.
Voisit heittﺣ۳ﺣ۳ numeroita.
>> Voit kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳ sulkumerkintﺣ۳ lauseke, voit sanoa,
hei, tietokone, ota tﺣ۳mﺣ۳ 10, jonka tiedﺣ۳n on int.
Mutta hoitamattomana kiitos, ikﺣ۳ﺣ۳n kuin se on float.
Mutta tﺣ۳mﺣ۳ tuntuu tarpeettoman monimutkainen.
>> Meidﺣ۳n tarkoituksiin tﺣ۳nﺣ۳ﺣ۳n, Haluan vain kirjaimellisesti
tekevﺣ۳t niistﺣ۳ liukulukuarvoja joiden desimaalierottimen nﺣ۳in.
Anna minun mennﺣ۳ eteenpﺣ۳in ja uusinta, tee epﺣ۳tﺣ۳smﺣ۳llisyys, hyvﺣ۳, piste slash
epﺣ۳tﺣ۳smﺣ۳llisyys, kirjoita.
OK, etsimme hyvﺣ۳ﺣ۳.
>> 1 jaettuna 10, saamieni Mac tﺣ۳ﺣ۳llﺣ۳, on todellakin 0,100000.
Nyt minulle opetettiin alakoulussa siellﺣ۳ pitﺣ۳isi olla ﺣ۳ﺣ۳retﺣﭘn mﺣ۳ﺣ۳rﺣ۳ 0: n.
Joten ainakin yrittﺣ۳ﺣ۳ nﺣ۳hdﺣ۳ joitakin niistﺣ۳.
On kﺣ۳ynyt ilmi, ettﺣ۳ printf on hieman harrastaja silti kuin olemme kﺣ۳yttﺣ۳neet.
On kﺣ۳ynyt ilmi, sinun ei tarvitse mﺣ۳ﺣ۳rittﺣ۳ﺣ۳ vain prosentin f, tai vain prosentti i.
Voit itse mﺣ۳ﺣ۳rittﺣ۳ﺣ۳ jotkut ohjaus vaihtoehtoja tﺣ۳ﺣ۳llﺣ۳.
>> Erityisesti aion sanoa, hei, printf,
oikeastaan ﻗﻗnﺣ۳ytﺣ۳ minulle 10 desimaaliin.
Joten se nﺣ۳yttﺣ۳ﺣ۳ hieman outo.
Mutta te sanotte prosenttia, piste, kuinka monta numeroa
haluat nﺣ۳hdﺣ۳ jﺣ۳lkeen desimaalipilkun, ja sitten f
Litteiden, vain koska se on mitﺣ۳ dokumentaatio sanoo.
Anna minun mennﺣ۳ eteenpﺣ۳in ja tallenna se.
>> Ja huomaa myﺣﭘs, Saan vﺣ۳synyt retyping asioita.
Joten olen vain asettamalla ylﺣﭘs ja alas nuoli minun avaimet tﺣ۳nne.
Ja jos minﺣ۳ pitﺣ۳ﺣ۳ lyﺣﭘdﺣ۳ ylﺣﭘs, sinun voi nﺣ۳hdﺣ۳ kaikkien komentojen
ettﺣ۳ tein, tai vﺣ۳ﺣ۳rin tehty.
>> Ja aion mennﺣ۳ eteenpﺣ۳in nyt ja ei oikeastaan ﻗﻗkﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳, ilmeisesti.
Tee epﺣ۳tﺣ۳smﺣ۳llisyys, dot slash imprecision-- niin
mitﺣ۳ opetettiin asteella tarkastusten perusteella.
Vaikka olen tulostaa sen 10 desimaalin asettaa se, todellakin on 0,10000.
Mutta tiedﺣ۳tkﺣﭘ mitﺣ۳?
>> Mennﺣ۳ﺣ۳n hieman ahne.
Sanotaan, kuten, nﺣ۳ytﺣ۳ minulle 55 huomauttaa jﺣ۳lkeen desimaalin.
Katsotaan todella ottaa tﺣ۳mﺣ۳n ohjelmoida ulos spin.
Saanen sen uudestaan ﻗﻗmake epﺣ۳tﺣ۳smﺣ۳llisyys, piste slash, epﺣ۳tarkkuus.
>> Ja tﺣ۳ssﺣ۳ mennﺣ۳ﺣ۳n.
Lapsuuden oli valhe.
Ilmeisesti 1 jaettuna 10 on todellakin 0.100000000000000005551115123--
>> Mitﺣ۳ tapahtuu?
No, se kﺣ۳ﺣ۳ntyy pois, jos sellainen Katso riittﺣ۳vﺣ۳n ulos taustalla
edustus tﺣ۳stﺣ۳ numero, se todella
ei ole juuri 1/10 tai 0,1 ja ﺣ۳ﺣ۳retﺣﭘn mﺣ۳ﺣ۳rﺣ۳ nollia.
Nyt Miksi?
>> No, vaikka tﺣ۳mﺣ۳ on yksinkertainen numeron meille ihmisille, 1 jaettuna 10,
se on edelleen yksi ﺣ۳ﺣ۳rettﺣﭘmﺣ۳n monta numeroita ettﺣ۳ voisimme ajatella.
Mutta tietokone voi edustaa vain ﺣ۳ﺣ۳rellisen monta niin numeroita.
Ja niin tehokkaasti, mitﺣ۳ tietokone nﺣ۳yttﺣ۳ﺣ۳ meille on sen lﺣ۳hin
approksimaatio numero Haluamme uskoa on 1/10,
tai oikeastaan ﻗﻗ0,10000 loputtomiin.
>> Pikemminkin, vaikka tﺣ۳mﺣ۳ on niin lﺣ۳hellﺣ۳ kuin se voi saada.
Ja todellakin, jos tarkastellaan alla huppu,
koska olemme tﺣ۳ﺣ۳llﺣ۳ tarkastelemalla 55 desimaalilla,
me itse nﺣ۳hdﺣ۳, ettﺣ۳ todellisuus.
Nyt kun Sivuhuomautuksena, jos olet koskaan nﺣ۳hnyt movie--
useimmat varmaan haven't-- mutta Superman 3 muutama vuosi sitten,
Richard Pryor olennaisesti panostettava tﺣ۳hﺣ۳n todellisuus hﺣ۳nen yrityksensﺣ۳ varastaa paljon
Fraktioiden ja jakeet penniﺣ۳, koska company-- muistaakseni,
se on ollut while-- oli olennaisesti heittﺣ۳ﺣ۳ pois mitﺣ۳ﺣ۳n, mikﺣ۳ ei sopinut
osaksi kﺣ۳site senttiﺣ۳.
>> Mutta jos lisﺣ۳ﺣ۳t kaikki nﺣ۳mﺣ۳ pieni, pieni, pieni mﺣ۳ﺣ۳rﺣ۳ uudestaan,
ja uudestaan, ja uudestaan, voit, kuten hﺣ۳nen tapauksessa tehdﺣ۳ hyvﺣ۳ mﺣ۳ﺣ۳rﺣ۳ rahaa.
>> Tﺣ۳mﺣ۳ sama ajatus oli huijannut uudempi, mutta silti nyt vanhemmat
elokuva, nimeltﺣ۳ﺣ۳n Office Space, jossa kaverit siinﺣ۳ elokuvassa,
teki saman, ruuvata se ylﺣﭘs tﺣ۳ysin, pﺣ۳ﺣ۳tyi aivan liikaa
rahaa niiden pankkitilille.
Se oli hyvin epﺣ۳ilyttﺣ۳vﺣ۳.
Mutta lopussa pﺣ۳ivﺣ۳, epﺣ۳tﺣ۳smﺣ۳llisyys on kaikkialla ympﺣ۳rillﺣ۳mme.
>> Ja myﺣﭘs, voi olla pelottavan tapauksessa.
On kﺣ۳ynyt ilmi, ettﺣ۳ Superman 3 ja Toimistotilaa sivuun, siellﺣ۳
voi olla joitakin hyvin todellinen maailma seurauksia
realiteetit epﺣ۳tarkka tietojen esittﺣ۳misessﺣ۳
ettﺣ۳ vaikka me ihmisten tﺣ۳mﺣ۳ pﺣ۳ivﺣ۳ ei vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳
ymmﺣ۳rtﺣ۳ﺣ۳ samoin kuin meidﺣ۳n pitﺣ۳isi, tai muistaa niin usein kuin pitﺣ۳isi.
Ja todellakin, seuraavat leike on mistﺣ۳ katsomaan joitakin hyvin todellinen maailma
seurauksia, mitﺣ۳ tapahtuu, jos eivﺣ۳t ymmﺣ۳rrﺣ۳ epﺣ۳tarkkuus ettﺣ۳
voi tapahtua numeroita edustus.
>> [VIDEOTOISTOSTA]
>> -Tietotekniikka, Olemme kaikki tulleet hyvﺣ۳ksyﺣ۳ usein turhauttavaa ongelmia,
mennﺣ۳ them-- vikoja, viruksia, ja ohjelmistot glitches,
Pienten hinta maksaa helpotukseksi.
Mutta korkean teknologian ja nopea sotilas- ja avaruusohjelma sovelluksia,
pienin ongelma voi suurennetaan katastrofiin.
>> 4. kesﺣ۳kuuta, 1996 tutkijat valmistettu kﺣ۳ynnistﺣ۳ﺣ۳ miehittﺣ۳mﺣ۳ttﺣﭘmﺣ۳n Ariane 5 raketti.
Se kantoi tieteen satelliitit suunnitellut
vahvistaa tarkasti, kuinka Maan magneettikenttﺣ۳ toimii vuorovaikutuksessa
aurinko tuulet.
Raketti rakennettiin Euroopan avaruusjﺣ۳rjestﺣﭘn
ja nostetaan pois sen laitos rannikolla Guyanassa.
>> -At Noin 37 sekunnin lennon, he ensin
huomasi jotain oli vialla.
Suuttimet oli kﺣ۳ﺣ۳ntyvﺣ۳ vuonna tapa ne todella pitﺣ۳isi.
Noin 40 sekunnin lennon, selvﺣ۳sti, ajoneuvo oli vaikeuksissa.
>> Ja silloin he tekivﺣ۳t pﺣ۳ﺣ۳tﺣﭘstﺣ۳ tuhota sen.
Valikoima turvallisuusvastuuhenkilﺣﭘn, jossa valtava suolet, painetaan nappia,
rﺣ۳jﺣ۳hti raketti, ennen kuin se voisi tullut vaaran yleiselle turvallisuudelle.
>> -Tﺣ۳mﺣ۳ Oli neito matkasta Ariane 5.
Ja sen tuhoamista otti aseta koska virhe
upotettu raketin ohjelmisto.
-The Ongelma Ariane oli ettﺣ۳ oli useita, ettﺣ۳
vaaditaan 64 bittiﺣ۳ ilmaista.
Ja he halusivat muuntaa se on 16-bittinen numero.
Ne olettaa, ettﺣ۳ numero ei koskaan tule
erittﺣ۳in suuri, ettﺣ۳ useimmat niistﺣ۳ numerot 64-bittinen numero olivat nollia.
He olivat vﺣ۳ﺣ۳rﺣ۳ssﺣ۳.
>> -edellﺣ۳ Kyvyttﺣﭘmyys yhden ohjelma hyvﺣ۳ksyﺣ۳
sellainen mﺣ۳ﺣ۳rﺣ۳ tuottaman toinen oli juureen epﺣ۳onnistumisen.
Ohjelmistojen kehittﺣ۳minen oli tullut kalliiksi osa uutta teknologiaa.
Ariane raketti ovat olleet hyvin onnistuu, niin ohjelmisto
luotu se oli myﺣﭘs kﺣ۳ytetty Ariane 5.
>> -The Perusongelmana oli, ettﺣ۳ Ariane 5 oli nopeampi, kiihtyi nopeammin.
Ja ohjelmisto ei ollut osuus siitﺣ۳.
>> -The Tuhoaminen raketti oli valtava taloudellinen katastrofi,
kaikki johtuu minuutti ohjelmistovirhe.
Mutta tﺣ۳mﺣ۳ ei ollut ensimmﺣ۳inen aika tietojen muuntaminen ongelmat
oli vaivannut moderni ohjusteknologia.
>> -In 1991 kﺣ۳ynnistﺣ۳en Ensimmﺣ۳isen Persianlahden sodan,
Patriot Missile kokenut samantyyppinen
Numeron muuntaminen ongelma.
Ja sen seurauksena, 28 ihmistﺣ۳, 28 amerikkalaista sotilasta,
kuoli, ja noin 100 toiset haavoittui,
kun Patriot, joka piti suojautua saapuvat scuds,
ei osunut.
>> -Kun Irak hyﺣﭘkkﺣ۳si Kuwaitiin, ja Amerikassa kﺣ۳ynnistettiin Aavikkomyrskyn vuoden 1991 alussa,
Patriot Missile akut lﺣ۳hetettiin suojella Saudi-Arabia ja Israel
Irakin Scud ohjus hyﺣﭘkkﺣ۳yksiﺣ۳.
Patriot on US keskipitkﺣ۳n kantaman pinta ilmaan jﺣ۳rjestelmﺣ۳, valmistettu
jonka Raytheon yhtiﺣﭘ.
>> -The Koko Patriot torjuntahﺣ۳vittﺣ۳jﺣ۳ itsessﺣ۳ﺣ۳n on noin noin 20 jalkaa pitkﺣ۳.
Ja se painaa noin 2000 kiloa.
Ja se harjoittaa taistelukﺣ۳rjestﺣ۳ noin, Minusta se on noin 150 kiloa.
Ja taistelukﺣ۳rki itsessﺣ۳ﺣ۳n korkea rﺣ۳jﺣ۳htﺣ۳vﺣ۳, joka
on fragmentteja sen ympﺣ۳rille.
Koteloa taistelukﺣ۳rki on tarkoituksena on toimia kuten buckshot.
>> -The Ohjuksia kuljetetaan neljﺣ۳ per kontti,
ja kuljetetaan puoliperﺣ۳vaunu.
>> -The Patriot ohjuspuolustusjﺣ۳rjestelmﺣ۳ﺣ۳ ulottuu vﺣ۳hintﺣ۳ﺣ۳n 20 vuotta.
Se oli alun perin suunniteltu kuin ilmatorjuntaohjusjﺣ۳rjestelmﺣ۳ﺣ۳n
ampua alas vihollisen lentokoneita.
Ensimmﺣ۳isessﺣ۳ Persianlahden sodan, kun se sota tuli mukaan,
armeijan halusi kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳ ampua alas scuds, ei lentokoneita.
>> Irakin Air Force oli ei niin suuri ongelma.
Mutta armeija oli huolissaan scuds.
Ja niin he yrittivﺣ۳t pﺣ۳ivittﺣ۳ﺣ۳ Patriot.
>> -Intercepting Vihollinen ohjus kulkee Mach 5
tultaisiin riittﺣ۳vﺣ۳n haastava.
Mutta kun Patriot kiidﺣ۳tettiin laskemista,
armeija ei ollut tietoisia Irakin muutos, joka teki
niiden scuds lﺣ۳hes mahdotonta lyﺣﭘdﺣ۳.
>> Mitﺣ۳ tapahtui on scuds ettﺣ۳ oli tulossa oli epﺣ۳vakaa.
Heidﺣ۳t huojuu.
Syynﺣ۳ tﺣ۳hﺣ۳n oli irakilaisia, jotta
pﺣ۳ﺣ۳stﺣ۳ 600 km ulos 300 kilometrin
kantaman ohjusten, otti paino pois edestﺣ۳ taistelukﺣ۳rki.
He tekivﺣ۳t taistelukﺣ۳rki kevyempi.
>> Joten nyt Patriot on yrittﺣ۳ﺣ۳ tulla klo Scud.
Ja suurimman osan ajasta, Valtaosa ajasta,
se vain lentﺣ۳ﺣ۳, jonka Scud.
Kun Patriot-operaattoreille tajusi Patriot jﺣ۳i kohteeseensa,
ne rﺣ۳jﺣ۳ytetﺣ۳ﺣ۳n Patriot ydinpommi vﺣ۳ltetﺣ۳ﺣ۳n mahdolliset tappiot, jos se
annettiin pudota maahan.
>> -Se Oli mitﺣ۳ useimmat ihmiset nﺣ۳kivﺣ۳t, nﺣ۳itﺣ۳ suuria tulipalloja taivaalla,
ja ymmﺣ۳rtﺣ۳ﺣ۳ vﺣ۳ﺣ۳rin kuuntelevansa Scud taistelukﺣ۳rkiﺣ۳.
>> -Vaikka Yﺣﭘllﺣ۳ taivas, Patriots ilmestyi
olla onnistuneesti tuhoaa Scuds kello Dhahran,
ei voi olla virhe sen toiminnasta.
Siellﺣ۳ Patriot tutkajﺣ۳rjestelmﺣ۳n kadottaa saapuvasta Scud,
ja ei koskaan kﺣ۳ynnistetty takia ohjelmaongelmaan virhe.
Se oli israelilaisia, joka ensimmﺣ۳isenﺣ۳ lﺣﭘysi ettﺣ۳ enﺣ۳ﺣ۳ jﺣ۳rjestelmﺣ۳ oli,
sitﺣ۳ suurempi aika ristiriita tuli, koska kellon sulautettujen
jﺣ۳rjestelmﺣ۳n tietokoneelle.
>> -Noin Kaksi viikkoa ennen tragedia Dhahran,
israelilaiset raportoidaan puolustusministeriﺣﭘ
ettﺣ۳ jﺣ۳rjestelmﺣ۳ oli menettﺣ۳ﺣ۳ aikaa.
Noin kahdeksan tuntia tai kﺣ۳ynnissﺣ۳, he huomasivat, ettﺣ۳ jﺣ۳rjestelmﺣ۳
oli tulossa huomattavasti epﺣ۳tarkempi.
Puolustusministeriﺣﭘ vastasi kertoo kaikki Patriot akkujen
ja jﺣ۳tﺣ۳ jﺣ۳rjestelmiﺣ۳ on pitkﺣ۳ﺣ۳n.
He eivﺣ۳t koskaan sanoi mitﺣ۳ pitkﺣ۳ﺣ۳n was-- kahdeksan tuntia, 10 tuntia, 1000 tuntia.
Kukaan ei tiennyt.
>> -The Patriot akku sijoitettiin kasarmin
at Dhahran ja sen puutteellinen sisﺣ۳inen kello oli ollut yli 100 tuntia
yﺣﭘnﺣ۳ helmikuun 25. pﺣ۳ivﺣ۳.
>> -Se Seurataan aika tarkkuudella noin kymmenesosa toinen.
Nyt kymmenesosa toinen on mielenkiintoinen numero,
koska se ei voi ilmaista binary tarkalleen, mikﺣ۳
tarkoittaa sitﺣ۳ ei voida ilmaista tarkasti, missﺣ۳ tahansa nykyaikaisessa digitaalisen tietokoneen.
On vaikea uskoa.
>> Mutta kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳ esimerkkinﺣ۳.
Otetaan numero yksi kolmasosa.
Kolmasosa ei voi olla ilmaistaan ﻗﻗdesimaalilukuna tarkalleen.
Kolmannes on 0,333 jatkunut ﺣ۳ﺣ۳rettﺣﭘmyyteen.
>> Ei ole mitenkﺣ۳ﺣ۳n tehdﺣ۳ sitﺣ۳ absoluuttinen tarkkuus desimaalin.
Juuri sellainen ongelma ettﺣ۳ tapahtui Patriot.
Mitﺣ۳ pidempi jﺣ۳rjestelmﺣ۳ juoksi, The huonompi aika virhe tuli.
>> -Kun 100 tunnin toimintaa, virheestﺣ۳ ajassa oli vain noin kolmannes
toisen.
Mutta mitﺣ۳ kohdistaminen ohjus kulkee Mach 5,
se johti seuranta virhe on yli 600 metriﺣ۳.
Olisi kohtalokas virhe sotilaat mitﺣ۳
tapahtui on Scud kﺣ۳ynnistﺣ۳ﺣ۳ oli havaitaan varhaisessa vaiheessa varoitus satelliittien
ja he tiesivﺣ۳t, ettﺣ۳ Scud oli tulossa niiden yleistﺣ۳ suuntaa.
He eivﺣ۳t tiedﺣ۳, missﺣ۳ se oli tulossa.
>> -Se Oli nyt jopa tutka komponentti Patriot jﺣ۳rjestelmﺣ۳n
puolustavat Dhahran paikantaa ja pitﺣ۳ﺣ۳ Seuraa saapuvan vihollisen ohjus.
>> -The Tutka oli hyvin ﺣ۳lykﺣ۳s.
Olisi todella seurata asento Scud,
ja sitten ennustaa missﺣ۳ se todennﺣ۳kﺣﭘisesti olisi seuraavan kerran tutka lﺣ۳hetetﺣ۳ﺣ۳n
pulssi ulos.
Tﺣ۳mﺣ۳ kutsuttiin erilaisia ﻗﻗportti.
>> -Sitten, Kun Patriot pﺣ۳ﺣ۳ttﺣ۳ﺣ۳ tarpeeksi aikaa on
vﺣ۳litetﺣ۳ﺣ۳n mennﺣ۳ takaisin ja tarkista seuraava paikka tﺣ۳lle havaittu kohde,
se menee takaisin.
Joten kun se meni takaisin vﺣ۳ﺣ۳rﺣ۳ﺣ۳n paikka, sitten se ei nﺣ۳e mitﺣ۳ﺣ۳n esinettﺣ۳.
Ja se pﺣ۳ﺣ۳ttﺣ۳ﺣ۳, ettﺣ۳ ei ole esine, se oli vﺣ۳ﺣ۳rﺣ۳ tunnistus,
ja laskee radan.
>> -The Saapuva Scud katosi tutkanﺣ۳ytﺣﭘltﺣ۳.
Ja sekuntia myﺣﭘhemmin, se lyﺣﭘnyt kasarmiin.
Scud tappoi 28, ja oli viimeinen yksi ampui ensimmﺣ۳isen Persianlahden sodan.
>> On traagista, pﺣ۳ivitetty ohjelmisto saapui Dhahran seuraavana pﺣ۳ivﺣ۳nﺣ۳.
Ohjelmisto virhe oli ollut kiinteﺣ۳, sulkeminen
yksi luku levoton historiasta Patriot ohjus.
>> [VIDEOTOISTOSTA]
DAVID J. MALAN: Eli tﺣ۳mﺣ۳ on kaikki sanoa, ettﺣ۳ nﺣ۳mﺣ۳ kysymykset ylivuoto
ja epﺣ۳tarkkuus ovat liian todellinen.
Miten tﺣ۳hﺣ۳n on tultu?
Aloitimme puhu vain printf.
Tﺣ۳mﺣ۳kin toiminto tulostaa jotain nﺣ۳yttﺣﭘﺣ۳,
ja toimme sen jﺣ۳lkeen muutamia muita toimintoja
alkaen ns CS50: n kirjasto.
Ja jatkamme katso nﺣ۳mﺣ۳ aikanaan.
Ja me, erityisesti, kﺣ۳yttﺣ۳ﺣ۳ get merkkijono, ja saada int, ja nyt myﺣﭘs saada kellua,
ja vielﺣ۳ toiset silti kohtaamme ja kﺣ۳yttﺣ۳ﺣ۳ itse ennen pitkﺣ۳ﺣ۳.
>> Mutta toisinaan, on me jo nﺣ۳hneet tarvetta
tallentaa mitﺣ۳ nﺣ۳mﺣ۳ tehtﺣ۳vﺣ۳t kﺣ۳sin takaisin?
He kﺣ۳si meidﺣ۳t takaisin merkkijono, tai int tai float.
Ja joskus meidﺣ۳n tﺣ۳ytyy laittaa, ettﺣ۳ string, tai int tai float, jonnekin.
>> Ja tallentaa ne asiat, muistaa vain kuten Scratch, olemme muuttujia.
Mutta toisin Scratch, C meillﺣ۳ on todellinen tyypit
of variables-- data tyypit, lisﺣ۳ﺣ۳ generally--
niiden joukossa, merkkijono, int, joka on kellua, ja nﺣ۳mﺣ۳ toiset vielﺣ۳.
>> Ja niin kun me julistaa muuttujia C, meidﺣ۳n tﺣ۳ytyy julistaa meidﺣ۳n tietotyyppejﺣ۳.
Tﺣ۳mﺣ۳ ei ole jotain me will tﺣ۳ytyy tehdﺣ۳ myﺣﭘhemmin lukukauden
kuten siirtyminen muille kielille.
Mutta nyt, tarvitsemme joka priori etukﺣ۳teen,
selittﺣ۳ﺣ۳ tietokoneeseen minkﺣ۳laista muuttuvan haluamme antaa meille.
>> Nyt puolestaan ﻗﻗtulostaa tuollaiset tietotyyppejﺣ۳,
meidﺣ۳n on kerrottava printf mitﺣ۳ odottaa.
Ja nﺣ۳imme prosentin s jousille, ja prosenttia i kokonaislukuja,
ja muutama muu jo.
Ja ne ovat yksinkertaisesti vaatimukset visuaalisen esityksen
nﺣ۳mﺣ۳ tiedot.
>> Ja jokainen nﺣ۳istﺣ۳ voi todella olla parametrized tai viritetty jollakin tavalla,
jos haluat edelleen ohjaus tyyppi tuotoksen ettﺣ۳ saat.
Ja itse asiassa, kﺣ۳y ilmi, ettﺣ۳ ei ainoastaan on olemassa backslash n uuden linjan.
On jotain muuta kutsutaan kenoviiva r rivinvaihto, joka
on lﺣ۳hempﺣ۳nﺣ۳ vanha koulu kirjoituskone,
ja myﺣﭘs Windows kﺣ۳ytetty jo useita vuosia.
>> On backslash t vﺣ۳lilehdet.
Osoittautuu, ettﺣ۳ jos haluat lainausmerkki sisﺣ۳llﺣ۳ merkkijono,
muistuttaa, ettﺣ۳ olemme kﺣ۳yttﺣ۳neet lainausmerkki double
lainaus vasemmalla ja oikealla pﺣ۳ﺣ۳ttyy meidﺣ۳n jousille toistaiseksi.
Tﺣ۳mﺣ۳ nﺣ۳yttﺣ۳isi sekoittaa asioita.
>> Jos haluat laittaa lainausmerkki vuonna keskellﺣ۳ string-- ja, todellakin,
se on hﺣ۳mmentﺣ۳vﺣ۳ﺣ۳ nﺣ۳hdﺣ۳.
Ja niin sinun tﺣ۳ytyy paeta, niin puhua, kaksinkertainen lainata jotain
kuten, kirjaimellisesti, Kenoviiva lainausmerkki.
Ja siellﺣ۳ on muutamia muita vielﺣ۳.
Ja nﺣ۳emme enemmﺣ۳n nﺣ۳istﺣ۳ todellisessa kﺣ۳ytﺣﭘssﺣ۳ ennen pitkﺣ۳ﺣ۳.
>> Joten nyt siirtyminen data, ja edustus,
ja aritmeettiset operaattorit, kaikki joista antoi meille jonkin rakennuksen
lohkojen joka pelata.
Mutta nyt katsotaanpa todella antaa meille loput sanaston
ettﺣ۳ meillﺣ۳ oli jo viime viikolla Scratch
ottamalla tarkastella joitakin muita konstruktioita in C-- ei niitﺣ۳ kaikkia.
Mutta ideat olemme tulleet oikeastaan ﻗﻗvain
korostaa kﺣ۳ﺣ۳nnﺣﭘs yksi kieli, Scratch, toiseen, C.
>> Ja ajan myﺣﭘtﺣ۳, me poimia lisﺣ۳ﺣ۳ tyﺣﭘkaluja meidﺣ۳n tyﺣﭘkalupakki,
niin sanotusti syntaktisesti.
Ja todellakin, nﺣ۳et, ettﺣ۳ ideat ovat nyt melko tuttuja viime viikolla.
Joten tehdﺣ۳ﺣ۳n tﺣ۳mﺣ۳.
>> Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja lietsoa ohjelma joka todella kﺣ۳yttﺣ۳ﺣ۳ joitakin ilmaisuja,
Boolen lauseke.
Anna minun mennﺣ۳ eteenpﺣ۳in tﺣ۳ﺣ۳llﺣ۳ ja luo uuden tiedoston.
Soitan tﺣ۳mﺣ۳n condition.c.
>> Anna minun mennﺣ۳ eteenpﺣ۳in ja sisﺣ۳ltﺣ۳vﺣ۳t CS50 kirjasto.
Ja anna minun mennﺣ۳ eteenpﺣ۳in ja sisﺣ۳ltﺣ۳vﺣ۳t standardi IO.h meidﺣ۳n toimintoja,
ja printf, ja lisﺣ۳ﺣ۳ vastaavasti.
Annan itselleni ettﺣ۳ boilerplate of int main mitﺣ۳tﺣﭘn, jonka selitys me will
palata tulevaisuudessa.
>> Nyt haluan mennﺣ۳ eteenpﺣ۳in ja antaa Itse int kautta get int.
Sitten anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
Haluan sanoa, jos i on less-- katsotaanpa erottaa positiivinen, negatiivinen,
tai nolla-arvot.
>> Joten jos i on pienempi kuin nolla, anna minun on vain tﺣ۳mﺣ۳ ohjelma yksinkertaisesti sanoa,
negatiivinen, kenoviiva n, muu Jos i on suurempi kuin nolla.
Nyt olen tietenkin aikoo sanoa printf positiivinen, kenoviiva n.
Ja sitten muu if-- voisin tehdﺣ۳ tﺣ۳tﺣ۳.
>> Voisin tehdﺣ۳, jos i on yhtﺣ۳ suuri kuin 0.
Mutta olisin pﺣ۳ﺣ۳tﺣﭘksenteon Ainakin yksi virhe jo.
Muista, ettﺣ۳ yhtﺣ۳lﺣ۳isyysmerkki on erisuuri, koska me ihmiset tunnemme.
>> Mutta se on tehtﺣ۳vﺣ۳ operaattori.
Ja me emme halua ottaa 0 annetun oikealle ja laita se i vasemmalla.
Joten vﺣ۳lttﺣ۳ﺣ۳ tﺣ۳mﺣ۳n sekaannuksen, tai ehkﺣ۳ vﺣ۳ﺣ۳rinkﺣ۳yttﺣﭘ yhtﺣ۳lﺣ۳isyysmerkin,
ihmisillﺣ۳ pﺣ۳ﺣ۳tti joitakin vuosia sitten ettﺣ۳ monissa ohjelmointikielissﺣ۳
kun haluat tarkistaa tasa vasemman ja oikean,
te itse kﺣ۳yttﺣ۳ﺣ۳ yhtﺣ۳ kuin tasavertaisina.
Joten osut yhtﺣ۳suuruusmerkkiﺣ۳ kahdesti.
Kun haluat mﺣ۳ﺣ۳rittﺣ۳ﺣ۳ oikealta vasemmalle, kﺣ۳ytﺣ۳t yhden yhtﺣ۳lﺣ۳isyysmerkki.
Jotta voisimme tehdﺣ۳ this-- muuta jos i on yhtﺣ۳ suuri kuin nolla.
>> Voisin sitten mennﺣ۳ ja avaan aaltosulkeita,
ja sanoa, printf 0, kenoviiva n, tehty.
Mutta muista, miten nﺣ۳mﺣ۳ haarautuu tie voi toimia.
Ja todellakin, ajattele logiikka.
i on useita.
Se on kokonaisluku, erityisesti.
Ja se tarkoittaa se tulee olemaan vﺣ۳hemmﺣ۳n kuin 0 tai suurempi kuin 0, tai 0.
On siis olemassa sellaista tﺣ۳mﺣ۳n implisiittinen oletusmarginaali.
>> Ja jotta voisimme, aivan kuten Scratch, luopua if,
ja vain sanoa muuta.
Loogisesti, jos sinulle ohjelmoija tietﺣ۳ﺣ۳ on vain
kolme kauhat, johon skenaario voi fall-- ensimmﺣ۳inen,
Toisen tai kolmannen Tﺣ۳ssﺣ۳ case-- eivﺣ۳t
vaivaudu lisﺣ۳ﺣ۳mﺣ۳llﺣ۳ ylimﺣ۳ﺣ۳rﺣ۳isiﺣ۳ tarkkuus ja lisﺣ۳logiikka siellﺣ۳.
Vain mennﺣ۳ eteenpﺣ۳in kanssa Oletuksena tﺣ۳ssﺣ۳ tapauksessa on muu.
>> Nyt mennﺣ۳ﺣ۳n eteenpﺣ۳in tallennuksen jﺣ۳lkeen tﺣ۳mﺣ۳, tee
olosuhteet piste slash conditions-- ole suuri kﺣ۳yttﺣﭘliittymﺣ۳,
koska en ole kehotukset kﺣ۳yttﺣ۳jﺣ۳, kuten aiemmin mainitsin.
Mutta se kﺣ۳y hyvin.
Me pitﺣ۳ﺣ۳ se yksinkertainen.
Yritetﺣ۳ﺣ۳n numero 42.
Ja se on positiivinen.
Kokeillaan numero negatiivinen 42, negatiivinen.
>> Kokeillaan arvo 0.
Ja, todellakin, se toimii.
Nyt nﺣ۳et ongelmia ennen pitkﺣ۳, testaus asiat kolme kertaa,
todennﺣ۳kﺣﭘisesti riitﺣ۳.
Et luultavasti halua testata joitakin isompi numeroita, jotkut pienempiﺣ۳
numeroita, jotkut kulma tapauksissa, kuten tulemme kuvaamaan niitﺣ۳.
>> Mutta nyt, tﺣ۳mﺣ۳ on melko yksinkertainen ohjelma.
Ja olen melko varma, loogisesti, ettﺣ۳ se kuuluu kolme tapausta.
Ja tosiaankin, vaikka me vain keskitytty mahdollisten haittoja
epﺣ۳tarkkuuden ja ylivuoto, vuonna Todellisuudessa jossa monet CS50 ongelmia,
emme aio huolehtia noin, koko ajan,
nﺣ۳itﺣ۳ kysymyksiﺣ۳ ylivuodon ja epﺣ۳tﺣ۳smﺣ۳llisyys, sillﺣ۳ itse asiassa C,
se on itse asiassa ole kovin helppo vﺣ۳lttﺣ۳ﺣ۳ niitﺣ۳ asioita.
Jos haluat laskea isompi, ja isompi, ja isompi,
se kﺣ۳ﺣ۳ntyy pois on tekniikoita olet voi kﺣ۳yttﺣ۳ﺣ۳, joihin liittyy usein asioita kutsutaan
kirjastoja, kokoelmia koodin, joka muut ihmiset kirjoitti, ettﺣ۳ voit kﺣ۳yttﺣ۳ﺣ۳,
ja muut kielet kuten Java ja muut, itse asiassa
tehdﺣ۳ paljon helpompaa laskea jopa korkeampi.
Niin se todella on joitakin nﺣ۳istﺣ۳ vaaroista funktio kﺣ۳yttﺣ۳mﺣ۳si kielen.
Ja tulevina viikkoina kﺣ۳ymme kuinka vaarallista C todella
voi olla, jos et kﺣ۳ytﺣ۳ sitﺣ۳ oikein.
Mutta sieltﺣ۳, ja Python ja JavaScript, on
me kerros joitakin ylimﺣ۳ﺣ۳rﺣ۳isiﺣ۳ suojauksia, ja ajaa vﺣ۳hemmﺣ۳n nﺣ۳iden riskien.
>> Joten tehdﺣ۳ hieman enemmﺣ۳n mielenkiintoinen logiikka ohjelmaamme.
Joten anna minun mennﺣ۳ eteenpﺣ۳in ja luoda ohjelma nimeltﺣ۳ Looginen
vain jotta voin leikkiﺣ۳ joitakin Varsinainen logiikka, logical.c.
Otan vain kopioida ja liittﺣ۳ﺣ۳ joitakin koodi aikaisemmin niin saan takaisin
Tﺣ۳mﺣ۳n mukava lﺣ۳htﺣﭘkohta.
>> Anna minun tﺣ۳llﺣ۳ kertaa tehdﺣ۳ char C. Olen aio antaa sille nimi C
vain koska se on tavanomainen, saat merkin kﺣ۳yttﺣ۳jﺣ۳ltﺣ۳.
Ja Teeskennellﺣ۳ﺣ۳npﺣ۳ kuten Olen osan tﺣ۳ytﺣ۳ntﺣﭘﺣﭘnpanossa
Kyseisen Rm ohjelman remove ohjelma ennen kehotuksen kﺣ۳yttﺣ۳jﺣ۳
poistaa tiedoston.
Miten teemme tﺣ۳mﺣ۳n?
>> Haluan sanoa, jos C on yhtﺣ۳ suuri kuin on yhtﺣ۳ suuri kuin, lainaus lainaus pﺣ۳ﺣ۳ttyy,
y, niin aion olettaa ettﺣ۳ kﺣ۳yttﺣ۳jﺣ۳ on valinnut kyllﺣ۳.
Olen juuri menossa painoon kyllﺣ۳.
Jos se oli todella kirjallisesti poisto-ohjelma,
voisimme poistaa tiedoston enemmﺣ۳n riviﺣ۳ koodia.
Mutta me pitﺣ۳ﺣ۳ se yksinkertainen.
>> If c on yhtﺣ۳ kuin yhtﺣ۳ kuin n- ja nyt tﺣ۳ﺣ۳llﺣ۳, aion sanoa,
kﺣ۳yttﺣ۳jﺣ۳n on tarkoittanut mitﺣ۳ﺣ۳n.
Ja sitten muuta, tiedﺣ۳tkﺣﭘ mitﺣ۳?
En tiedﺣ۳ mitﺣ۳ muuta kﺣ۳yttﺣ۳jﺣ۳n tulee kirjoittaa.
Joten olen juuri menossa sanoa, ettﺣ۳ ettﺣ۳ on virhe, mitﺣ۳
hﺣ۳n todella kirjoitettu.
>> Joten mitﺣ۳ tﺣ۳ﺣ۳llﺣ۳ tapahtuu?
On perustavanlaatuinen ero versus mitﺣ۳ olen tehnyt aikaisemmin.
Lainausmerkkeihin, lainausmerkit, double lainauksia, ja, vielﺣ۳, heittomerkkejﺣ۳,
heittomerkkeihin.
On kﺣ۳ynyt ilmi C, ettﺣ۳ kun haluat kirjoittaa merkkijonon,
et kﺣ۳ytﺣ۳ lainausmerkkejﺣ۳, aivan kuten olemme kﺣ۳yttﺣ۳nyt kaikki tﺣ۳llﺣ۳ kertaa printf.
>> Mutta jos haluat kﺣ۳sitellﺣ۳ vain yhden merkin, ns nieriﺣ۳,
sitten todellisuudessa kﺣ۳ytettiin heittomerkkeihin.
Ne teistﺣ۳, jotka ovat ohjelmoitu ennen, ei ehkﺣ۳ ole
oli huolestua erottelu tietyillﺣ۳ kielillﺣ۳.
In C, sillﺣ۳ on vﺣ۳liﺣ۳.
Ja niin kun saan char ja haluan vertailla, ettﺣ۳ char kﺣ۳yttﺣ۳en tasavertaisten
on yhtﺣ۳ kuin jotkut kirjain, kuten y tai n, teen, todellakin, tﺣ۳ytyy olla puolilainausmerkkejﺣ۳.
>> Nyt mennﺣ۳ﺣ۳n eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja tekevﺣ۳t looginen piste slash looginen.
Ja nyt Minua pyydetﺣ۳ﺣ۳n.
Joten, oletettavasti, paremman kﺣ۳yttﺣﭘkokemuksen itse asiassa kerro, mitﺣ۳ tehdﺣ۳ tﺣ۳ﺣ۳llﺣ۳.
Mutta aion vain sokeasti sanoa y for kyllﺣ۳, OK, mukava.
>> Oletetaan ajaa sen uudestaan, n ilman, mukava.
Oletetaan kuten tietyt ihmiset tiedﺣ۳n, minun lukitusnﺣ۳ppﺣ۳in on aivan liian usein.
Joten en pﺣ۳ﺣ۳oma Y, kirjoita, virhe.
OK, se ei ole, mitﺣ۳ olen odottanut.
Todellakin, tietokone tekee kirjaimellisesti mitﺣ۳
Kerroin sen do-- tarkistaa pieniﺣ۳ y ja pieniﺣ۳ n.
Tﺣ۳mﺣ۳ ei tunnu hyvﺣ۳ltﺣ۳ kﺣ۳yttﺣﭘkokemuksen, vaikka.
Saanen kysyﺣ۳ ja hyvﺣ۳ksyn joko pienet kirjaimet tai isot kirjaimet.
Joten se kﺣ۳ﺣ۳ntyy pois, haluat ehkﺣ۳ sanoa jotain Scratch,
kuten kirjaimellisesti tai C yhtﺣ۳ suuri kuin on yhtﺣ۳ kuin pﺣ۳ﺣ۳oman yhden lainattu y.
Osoittautuu, C ei ole Tﺣ۳mﺣ۳n kirjaimellinen avainsanan tai.
>> Mutta siinﺣ۳ on kaksi pystysuoraa baaria.
Sinun tﺣ۳ytyy pitﺣ۳ﺣ۳ Shift yleensﺣ۳, Jos kﺣ۳ytﺣ۳t Yhdysvaltain nﺣ۳ppﺣ۳imistﺣﭘ,
ja osui pystypalkki avain ylﺣ۳puolella enteriﺣ۳.
Mutta tﺣ۳mﺣ۳ pystypalkki pystyviiva tarkoittaa tai.
>> Jos sitﺣ۳ vastoin halusimme sanoa ja, kuten Scratch,
voisimme tehdﺣ۳ ampersand ampersand.
Siinﺣ۳ ei ole mitﺣ۳ﺣ۳n loogista jﺣ۳rkeﺣ۳ tﺣ۳ﺣ۳llﺣ۳, koska ihmisen ei mitenkﺣ۳ﺣ۳n
kirjoitit sekﺣ۳ y ettﺣ۳ pieniﺣ۳ y ja pﺣ۳ﺣ۳oma Y samaa merkkiﺣ۳.
Joten vai mitﺣ۳ aiomme tﺣ۳ﺣ۳llﺣ۳.
>> Joten jos en tee tﺣ۳tﺣ۳ molemmissa paikoissa, tai c on yhtﺣ۳ kuin yhtﺣ۳ suuri kuin pﺣ۳ﺣ۳oman N, nyt uusintana,
tehdﺣ۳ loogisia, aloita looginen.
Nyt voin kirjoittaa y.
Ja voin tehdﺣ۳ sen uudelleen pﺣ۳ﺣ۳oma Y, tai pﺣ۳ﺣ۳oman N.
Ja voisin lisﺣ۳tﺣ۳ ylimﺣ۳ﺣ۳rﺣ۳isiﺣ۳ yhdistelmﺣ۳t edelleen.
>> Joten tﺣ۳mﺣ۳ on looginen Ohjelma sikﺣ۳li kuin nyt
Olen tarkkailun loogisesti tﺣ۳mﺣ۳ arvo tai tﺣ۳tﺣ۳ arvoa.
Enkﺣ۳ tarvitse vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳, keksiﺣ۳ kaksi ifs tai muuten IFS.
Itse asiassa voin yhdistﺣ۳ﺣ۳ joitakin logiikan yhteen tﺣ۳llﺣ۳ tavalla.
Joten tﺣ۳mﺣ۳ olisi parempi suunniteltu pelkﺣ۳stﺣ۳ﺣ۳n
sanomalla, jos C on yhtﺣ۳ pieniﺣ۳ kirjaimia y, tulostaa kyllﺣ۳, muuta, jos c on yhtﺣ۳ kuin pﺣ۳ﺣ۳oman Y,
tulostaa kyllﺣ۳, muuten jos c on yhtﺣ۳ suuri kuin lower-- Toisin sanoen,
sinun ei tarvitse olla enemmﺣ۳n ja enemmﺣ۳n oksia.
Voit yhdistﺣ۳ﺣ۳ joitakin vastaavia oksat loogisesti, koska tﺣ۳llﺣ۳ tavalla.
>> Joten katsomaan vain yhdellﺣ۳ lopullinen ainesosa, yksi lopullisen rakenteen,
ettﺣ۳ C avulla.
Ja tulemme takaisin Tulevaisuudessa muille edelleen.
Ja sitten me pﺣ۳ﺣ۳tellﺣ۳ tarkastelemalla at ei oikeellisuutta code--
saada koodin work-- mutta suunnittelu koodia, ja istuttaa ne siemenet varhain.
>> Joten anna minun mennﺣ۳ eteenpﺣ۳in ja avata uuden tiedoston tﺣ۳ﺣ۳llﺣ۳.
Tiedﺣ۳tkﺣﭘ mitﺣ۳?
Aion uudelleen toteuttamaan ettﺣ۳ samaa ohjelmaa,
mutta eri konstruktia.
>> Haluan siis nopeasti antaa itselleni pﺣ۳ﺣ۳sy ovat CS50.h
ettﺣ۳ CS50 kirjasto, standardi Io.h varten printf.
Anna minulle int main mitﺣ۳tﺣﭘn.
Ja sitten tﺣ۳ﺣ۳llﺣ۳, anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ tﺣ۳tﺣ۳.
>> Char c saa pﺣ۳ﺣ۳stﺣ۳ nieriﺣ۳, aivan kuten ennenkin.
Ja aion kﺣ۳yttﺣ۳ﺣ۳ uutta konstruktio now-- kytkin, mitﺣ۳ merkki?
Joten kytkin on ikﺣ۳ﺣ۳n kuin kytkentﺣ۳ juna kappaleita.
Tai oikeastaan, se on erﺣ۳ﺣ۳nlainen if else, jos if,
mutta kirjoitettu hieman eri tavalla.
>> Kytkin nﺣ۳yttﺣ۳ﺣ۳ tﺣ۳ltﺣ۳.
Sinulla on kytkin, ja mitﺣ۳ sitten merkki tai numero, jonka haluat katsoa,
Sitten jotkut aaltosulkeita like in Scratch, sano tehdﺣ۳ tﺣ۳tﺣ۳ kamaa.
Ja sitten on erilaisia ﻗﻗtapauksia.
>> Et kﺣ۳ytﺣ۳ jos ja muuta.
Sinﺣ۳ kirjaimellisesti kﺣ۳yttﺣ۳ﺣ۳ sanaa tapaus.
Ja sanoisit jotain tﺣ۳llaista.
>> Joten kyseessﺣ۳ on pieniﺣ۳ y, tai jos kyseessﺣ۳ on pﺣ۳ﺣ۳oman Y,
mennﺣ۳ eteenpﺣ۳in ja tulostaa kyllﺣ۳.
Ja sitten puhkeaa kytkimen.
Se siitﺣ۳.
Olemme valmiit.
>> If, niin sanotusti, pienet kirjaimet n, tai pﺣ۳ﺣ۳oman N,
sitten mennﺣ۳ eteenpﺣ۳in ja tulostaa out ei, ja sitten tauko.
Else-- ja tﺣ۳llainen on oletusmarginaali indeed-- printf error--
ja vain hyvﺣ۳ toimenpide, vaikka loogisesti tﺣ۳mﺣ۳ tauko ei ole vﺣ۳lttﺣ۳mﺣ۳tﺣﭘntﺣ۳
koska olemme lopussa kytkimen tapauksessa,
Olen nyt murtaa pois kytkin.
Joten tﺣ۳mﺣ۳ nﺣ۳yttﺣ۳ﺣ۳ hieman erilainen.
>> Mutta, loogisesti, se on vastaa todellisuudessa.
Ja miksi kﺣ۳ytﺣ۳t yksi yli muiden?
Joskus vain henkilﺣﭘkohtaisista mieltymyksistﺣ۳, joskus estetiikka,
jos Vilkaisen tﺣ۳mﺣ۳n Nyt on jotain
sanottava, ettﺣ۳ luettavuus tﺣ۳mﺣ۳n koodin.
Siis, puhumattakaan siitﺣ۳, ettﺣ۳ tﺣ۳mﺣ۳ koodi on uusi monille meistﺣ۳ huoneessa.
>> Mutta se juuri sellainen on melko.
Katsos pieniﺣ۳ y, pﺣ۳ﺣ۳oma Y, pienet kirjaimet n, pﺣ۳ﺣ۳oma N oletus,
se juuri sellainen hyppﺣ۳ﺣ۳ ulos sinua tavalla
ettﺣ۳, luultavasti, ehkﺣ۳ edellisessﺣ۳ esimerkissﺣ۳
kanssa IFS ja pystypalkit, ja muuten IFS, ei vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳ ole.
Eli tﺣ۳mﺣ۳ on oikeastaan ﻗﻗkyse henkilﺣﭘkohtaisista valinta, todella, tai luettavuutta,
koodin.
>> Mutta kannalta toiminnallisuus, haluan mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ kytkin, piste slash
kytkin, ja nyt kirjoittaa pieniﺣ۳ kirjaimia y, pﺣ۳ﺣ۳oma Y, pienet n, pﺣ۳ﺣ۳oman N,
David, uudelleen koska se on ei yksi merkki.
Tehdﺣ۳ﺣ۳n x, virhe, odotetusti.
Ja logically-- ja tﺣ۳mﺣ۳ on jotain Kannustan in general-- jopa
vaikka olemme vain naarmuttamista pinta joitakin nﺣ۳istﺣ۳ ominaisuuksista.
>> Ja se ei ehkﺣ۳ ole ilmeinen, kun itse istuutua nﺣ۳ppﺣ۳imistﺣﭘ,
miten tﺣ۳mﺣ۳ toimii?
Mitﺣ۳ tﺣ۳mﺣ۳ tekee?
Kaunis asia ottaa kannettavan tietokoneen tai tyﺣﭘpﺣﭘydﺣ۳llﺣ۳, tai kﺣ۳yttﺣ۳ﺣ۳
tietokoneeseen, jossa on kﺣ۳ﺣ۳ntﺣ۳jﺣ۳, ja koodieditori nﺣ۳in,
on voit melkein aina vastata nﺣ۳ihin kysymykset itse vain yrittﺣ۳ﺣ۳.
>> Esimerkiksi jos retorisen kysymys kﺣ۳sillﺣ۳ olivat,
mitﺣ۳ tapahtuu, jos unohdat tauko lausuntoja?
Joka on itse asiassa hyvin yleinen asia tehdﺣ۳,
koska se ei nﺣ۳ytﺣ۳ kuten todella tarvitset niitﺣ۳.
He eivﺣ۳t todellakaan kruunaavat ajatellut kuten suluissa tai kihara
ahdin tekee.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ koodin ja nﺣ۳hdﺣ۳.
Joten kytkin, piste slash kytkin.
Katsotaan kirjoittaa pienillﺣ۳ kirjaimilla y, ylhﺣ۳ﺣ۳ltﺣ۳ tapauksessa Enter.
Joten olen kirjoittanut y.
>> Ohjelma sanoi kyllﺣ۳, ei, virhe, ikﺣ۳ﺣ۳n kuin se muuttaa kﺣ۳sitystﺣ۳ﺣ۳n.
Mutta se sellainen oli, koska mitﺣ۳ tapahtuu kytkimellﺣ۳ on ensimmﺣ۳inen tapaus, joka
ottelu tarkoittaa sitﺣ۳, hei tietokone, suorittaa kaikki koodi alla.
Ja jos et sano taukoa, tai ﺣ۳lﺣ۳ sano taukoa, tai eivﺣ۳t sano taukoa,
tietokone rﺣ۳jﺣ۳yttﺣ۳ﺣ۳ lﺣ۳pi kaikki nﺣ۳mﺣ۳ rivit
ja suorittaa ne kaikki kunnes se pﺣ۳ﺣ۳see ettﺣ۳ kihara ahdin.
Joten jarruilla todellakin tarpeen.
Mutta takeaway tﺣ۳ssﺣ۳, kun epﺣ۳varma, kokeilla jotain.
Ehkﺣ۳ tallentaa koodin ensimmﺣ۳inen, tai tallentaa sen ylimﺣ۳ﺣ۳rﺣ۳inen tiedostoon
jos olet todella huolissaan Messing ja ottaa talteen
tyﺣﭘtﺣ۳, jota tiedﺣ۳t toimivan.
>> Mutta yritﺣ۳ asiat.
Ja ﺣ۳lﺣ۳ niin pelﺣ۳tﺣ۳, ehkﺣ۳, mitﺣ۳ tietokone voisi tehdﺣ۳,
tai ettﺣ۳ saatat rikkoa jotain.
Voit aina palata takaisin jossain aiemmassa versiossa.
>> Joten lopettaa katsomalla suunnitteluvaiheessa koodia.
Meillﺣ۳ on tﺣ۳mﺣ۳ kyky nyt kirjoittaa olosuhteet, ja kirjoittaa silmukoita,
ja muuttujia, ja puhelutoiminnot.
Joten rehellisesti, olemme tavallaan takaisin jossa olimme viikko sitten Scratch,
vaikkakin vﺣ۳hemmﺣ۳n pakottavia tekstisisﺣ۳llﺣﭘn ympﺣ۳ristﺣﭘ kuin Scratch sallii.
>> Mutta huomaa, miten nopeasti olemme hankkinut ettﺣ۳ sanastoa, vaikka se on
vie vﺣ۳hﺣ۳n aikaa uppoavat, jotta voimme nyt kﺣ۳yttﺣ۳ﺣ۳ tﺣ۳tﺣ۳ sanastoa
kirjoittaa enemmﺣ۳n mielenkiintoisia ohjelmia.
Ja sallikaa vauva askel kohti tuota, seuraavasti.
Anna minun mennﺣ۳ eteenpﺣ۳in ja luo uuden tiedoston tﺣ۳ﺣ۳llﺣ۳.
>> Aion kutsua tﺣ۳tﺣ۳ prototype.c, ja ottaa kﺣ۳yttﺣﭘﺣﭘn
ensimmﺣ۳istﺣ۳ kertaa, kyky tehdﺣ۳ omia toimintoja.
Jotkut teistﺣ۳ saattaa olla tehnyt tﺣ۳mﺣ۳n Scratch,
jolloin voit luoda omia lohkojen Scratch,
ja vedﺣ۳ ne paikoilleen minne haluat C.
Ja useimmissa ohjelmointi kieliﺣ۳, voit tehdﺣ۳ juuri
that-- tehdﺣ۳ omia toimintoja, jos ne eivﺣ۳t ole jo olemassa.
>> Niinpﺣ۳ esimerkiksi, anna minun mennﺣ۳ eteenpﺣ۳in ja ovat CS50.h, ja ne sisﺣ۳ltﺣ۳vﺣ۳t
standardi IO.h, int main mitﺣ۳tﺣﭘn.
Ja nyt meillﺣ۳ on paikkamerkkikentﺣ۳t valmiina.
En pidﺣ۳ tulostus asioita kuten ihmisten nimet tﺣ۳nﺣ۳ﺣ۳n.
Ja se tuntuu like-- ei olisi mukavaa, jos siellﺣ۳
oli toiminto nimeltﺣ۳ﺣ۳n nimenselvennys?
En tarvitse kﺣ۳yttﺣ۳ﺣ۳ printf.
En tarvitse muistaa kaikki muotoa koodit.
Miksi en, tai miksi ei joku ennen minua,
luo toiminto nimeltﺣ۳ﺣ۳n print nimi, joka annetaan jonkin nimen,
yksinkertaisesti tulostaa sen?
>> Toisin sanoen, jos sanon, hei, tietokone, anna minulle merkkijono
pyytﺣ۳mﺣ۳llﺣ۳ kﺣ۳yttﺣ۳jﺣ۳ tﺣ۳llaista, kautta CS50: n get merkkijono.
Hei, tietokone, laita se merkkijono muuttujaa vasemmalla puolella,
ja kutsuvat sitﺣ۳ s.
Ja sitten, hei tietokone, mennﺣ۳ eteenpﺣ۳in ja tulostaa henkilﺣﭘn nimen, tehty.
>> Nyt, se olisi mukavaa, koska Ohjelman osuvasti nimetty,
kertoo minulle mitﺣ۳ sen pitﺣ۳isi tehdﺣ۳ Poiketen nﺣ۳istﺣ۳ funktion nimiﺣ۳.
Anna minun mennﺣ۳ ja tehdﺣ۳ prototyyppi, Enter.
Ja valitettavasti tﺣ۳mﺣ۳ ei aio lentﺣ۳ﺣ۳.
>> Prototype.c, rivi 7, merkki 5, virhe, implisiittinen ilmoitus
Funktion nimenselvennys on pﺣ۳temﺣ۳tﺣﭘn C99, C99
tarkoittaen versio C joka tuli ulos vuonna 1999.
Siinﺣ۳ kaikki.
>> Joten en tiedﺣ۳ mitﺣ۳ kaikki tﺣ۳mﺣ۳ tarkoittaa vielﺣ۳.
Mutta en tunnista virhe punaisena.
Se on aika selvﺣ۳ﺣ۳.
>> Ja nﺣ۳yttﺣ۳ﺣ۳ siltﺣ۳, ﻗﻗettﺣ۳ vihreﺣ۳ merkki tﺣ۳stﺣ۳,
ongelma on painatuksella nimi, avoin paren s, lﺣ۳hellﺣ۳ paren, puolipisteellﺣ۳.
Mutta implisiittinen ilmoitus toiminto nﺣ۳imme lyhyesti aikaisemmin.
Tﺣ۳mﺣ۳ tarkoittaa yksinkertaisesti, ettﺣ۳ Clang ei tiedﺣ۳ mitﺣ۳ tarkoitan.
>> Olen kﺣ۳yttﺣ۳nyt sanaston sanaa, ettﺣ۳ se on koskaan nﺣ۳hnyt tai opetettu ennen.
Ja niin minun tﺣ۳ytyy opettaa sitﺣ۳ mitﺣ۳ tﺣ۳mﺣ۳ toiminto tarkoittaa.
Joten aion mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ se.
>> Aion mennﺣ۳ eteenpﺣ۳in ja toteuttaa oma toiminto nimeltﺣ۳ﺣ۳n Print Name.
Ja aion sanoa, seuraavasti, ettﺣ۳ se tekee nﺣ۳in, printf, hei, prosenttia
s, kenoviiva n, nimi, puolipisteellﺣ۳.
Joten mitﺣ۳ minﺣ۳ juuri tehdﺣ۳?
>> Joten se kﺣ۳ﺣ۳ntyy pois, jotta toteuttaa oma toiminta,
me tavallaan lainata joidenkin sama rakenne kuin pﺣ۳ﺣ۳asiallisena
ettﺣ۳ olemme juuri olleet itsestﺣ۳ﺣ۳n selvﺣ۳nﺣ۳, ja minﺣ۳
tietﺣ۳vﺣ۳t vain kopioimalla ja liittﺣ۳mﺣ۳llﺣ۳ melko paljon, mitﺣ۳
Olen kirjoittanut aikaisemmin.
Mutta huomaa kuvio tﺣ۳ﺣ۳llﺣ۳.
Int, Main, Void, me kiusaa toisistaan ennen pitkﺣ۳ﺣ۳, mitﺣ۳ se todella tarkoittaa.
>> Mutta tﺣ۳nﺣ۳ﺣ۳n, vain huomaa rinnakkaisuus.
Void, tulostaa nimi, string nimi, joten ei
violetti avainsanan, joka aiomme aloittaa
soittamalla palautuva, nimi toiminnon, ja sitten tulo.
Joten itse asiassa, voimme tislata tﺣ۳llainen kuten viime viikolla
koska tﺣ۳mﺣ۳ on nimi tai algoritmi koodin olemme
menossa write-- algoritmi taustalla
koodi aiomme kirjoittaa.
>> Tﺣ۳mﺣ۳ on sen panos.
Tﺣ۳mﺣ۳ on sen ulostulo.
Tﺣ۳mﺣ۳ toiminto, tulostaa nimi, on tarkoituksena on ottaa merkkijonon nimeltﺣ۳ﺣ۳n nimi,
tai mitﺣ۳ tahansa, kuten syﺣﭘttﺣﭘ, ja sitten mitﺣ۳tﺣﭘn.
Se ei palaa mitﺣ۳ﺣ۳n, kuten saada merkkijono tai saada int tekee.
Joten se tulee luovuttaa minulle jotain takaisin.
Se on vain olemaan sivuvaikutus, niin sanotusti,
tulostus henkilﺣﭘn nimen.
Joten huomata, rivi 7, I voi soittaa nimenselvennys.
Linja 10, voin mﺣ۳ﺣ۳ritellﺣ۳ tai toteuttaa nimenselvennys.
Mutta valitettavasti se ei riitﺣ۳.
>> Anna minun mennﺣ۳ eteenpﺣ۳in ja kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ tﺣ۳mﺣ۳n tallennuksen jﺣ۳lkeen.
Whoa, nyt, olen tehnyt sen pahempaa, se nﺣ۳yttﺣ۳isi.
Joten implisiittinen ilmoitus toiminto tulostaa nimi on virheellinen.
Ja taas on enemmﺣ۳n virheitﺣ۳.
Mutta kun varoitettiin aikaisemmin, jopa jos saat hukkua,
tai hieman surullista nﺣ۳hdﺣ۳ niin monta virheitﺣ۳, keskittyﺣ۳ vain ensimmﺣ۳iseen
aluksi, koska se voi vain on ollut kerrannaisvaikutuksia.
Joten C, tai Clang tarkemmin, ei vielﺣ۳kﺣ۳ﺣ۳n tunnista nimenselvennys.
>> Ja se johtuu Clang, suunnittelun, on tavallaan tyhmﺣ۳.
Se tekee vain mitﺣ۳ kerrot sitﺣ۳ tekemﺣ۳ﺣ۳n.
Ja se vain tekee niin siinﺣ۳ jﺣ۳rjestyksessﺣ۳ jossa kerrot sitﺣ۳ tekemﺣ۳ﺣ۳n.
>> Olen siis mﺣ۳ﺣ۳ritellyt tﺣ۳rkeimmﺣ۳t linjalla neljﺣ۳, kuten olemme tehneet melko usein.
Olen mﺣ۳ﺣ۳ritellyt print nimi rivillﺣ۳ 10.
Mutta olen yrittﺣ۳nyt kﺣ۳yttﺣ۳ﺣ۳ print nimi rivillﺣ۳ seitsemﺣ۳n.
>> Se liian pian, ei ole vielﺣ۳ olemassa.
Joten en voinut olla fiksu, ja olla, OK, joten tehdﺣ۳ﺣ۳n vain pelata yhdessﺣ۳,
ja siirrﺣ۳ nimenselvennys ylﺣﭘs tﺣ۳ﺣ۳llﺣ۳, ja uudelleen koota.
Herranjumala.
Se toimi.
Se oli niin yksinkertaista.
>> Mutta logiikka on juuri nﺣ۳in.
Sinun tﺣ۳ytyy opettaa Clang mitﺣ۳ se on mﺣ۳ﺣ۳rittelemﺣ۳llﺣ۳ funktion ensimmﺣ۳inen.
Sitten voit kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳.
Mutta suoraan sanoen, tﺣ۳mﺣ۳ tuntuu kuten kaltevalle pinnalle.
>> Joten joka kerta Juoksen osaksi ongelma, olen vain
menossa esiin ja kopioi koodi Kirjoitin, leikkaa se ja liitﺣ۳ se tﺣ۳ﺣ۳llﺣ۳.
Ja varmasti, voisimme keksiﺣ۳ joitakin skenaarioita
jossa yksi toiminto saattaisi tﺣ۳ytyy soittaa toiselle.
Ja et vain voi laittaa jokaisen toiminto kaikkien muiden ylﺣ۳puolelle.
>> Joten se kﺣ۳ﺣ۳ntyy pois siellﺣ۳ n parempi ratkaisu.
Voimme jﺣ۳ttﺣ۳ﺣ۳ tﺣ۳mﺣ۳n olla.
Ja rehellisesti, se on yleensﺣ۳ mukava, ja kﺣ۳tevﺣ۳, ja hyvﺣ۳ muotoilu
laittaa tﺣ۳rkein ensin, koska, jﺣ۳lleen, Tﺣ۳rkein aivan kuten silloin, kun vihreﺣ۳ lippu napsautetaan,
ettﺣ۳ on toiminto, saa suorittaa oletusarvoisesti.
Joten ehkﺣ۳ myﺣﭘs laittaa se ylﺣ۳osassa tiedoston
niin, ettﺣ۳ kun tai muut ihmisen tarkastellaan tiedosto
Tiedﺣ۳tkﺣﭘ mitﺣ۳ tapahtuu vain lukemalla tﺣ۳rkein ensin.
Joten se kﺣ۳ﺣ۳ntyy pois, voimme kertoa Clang ennakoivasti, hei, Clang, rivillﺣ۳ neljﺣ۳,
Lupaan toteuttaa toiminto nimeltﺣ۳ﺣ۳n Tulosta
Nimi joka vie merkkijonon kutsutaan nimellﺣ۳ syﺣﭘtteenﺣ۳, ja palaa mitﺣ۳ﺣ۳n, mitﺣ۳tﺣﭘn.
Ja minﺣ۳ kiertﺣ۳ﺣ۳ sen tﺣ۳ytﺣ۳ntﺣﭘﺣﭘnpanoa myﺣﭘhemmin.
>> Tﺣ۳ﺣ۳ltﺣ۳ tulee Main.
Tﺣ۳rkeimmﺣ۳t nyt rivillﺣ۳ 9 voi kﺣ۳yttﺣ۳ﺣ۳ Tulosta Name koska Clang
on luottavainen, ettﺣ۳ lopulta, se kohtaavat mﺣ۳ﺣ۳ritelmﺣ۳n
tﺣ۳ytﺣ۳ntﺣﭘﺣﭘnpanon Print Name.
Joten kun tallentavan tiedostoa, anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ prototyyppi,
nﺣ۳yttﺣ۳ﺣ۳ hyvﺣ۳ltﺣ۳ tﺣ۳llﺣ۳ kertaa.
Dot slash, prototyyppi, haluan mennﺣ۳ eteenpﺣ۳in ja kirjoittaa nimen.
David, hei David, Zamila, hei Zamila, ja todellakin nyt se toimii.
>> Joten ainesosa tﺣ۳ssﺣ۳ on se, ettﺣ۳ olemme teki mukautetun funktion, kuten mukautetun
Scratch lohko me kutsuvat sitﺣ۳.
Mutta toisin Scratch jossa voit vain luoda sen ja alkaa kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳,
Nyt meidﺣ۳n tﺣ۳ytyy olla hieman pikkutarkka,
ja itse kouluttaa Clang kﺣ۳yttﺣ۳ﺣ۳, tai odottaa sitﺣ۳.
Nyt sivuhuomautuksena, miksi koko ajan on me olleet vain sokeasti uskoon lukien
CS50.h, ja myﺣﭘs vakio IO.h?
>> No, se kﺣ۳ﺣ۳ntyy pois, joukossa muutamia muita asioita,
kaikki se nﺣ۳issﺣ۳ dot h tiedostoja, jotka sattuvat olemaan tiedostoja.
He header-tiedostoja, niin sanotusti.
He vielﺣ۳ kirjoitettu C. Mutta he erityyppinen tiedosto.
>> Nyt voit melko paljon olettaa ettﺣ۳ kaikki mikﺣ۳ on sisﺣ۳llﺣ۳ CS50.h
on noin yksi-alukset, kuten tﺣ۳mﺣ۳, ei Toimintojen nimeltﺣ۳ﺣ۳n Print Name,
mutta Get String, Get Float, ja muutama muu.
Ja on samanlaisia ﻗﻗprototyyppejﺣ۳, yksi vaipat sisﺣ۳llﺣ۳ standardin IO.h
varten printf, joka on nyt oma Tulosta nimi -toiminto.
Eli toisin sanoen, tﺣ۳mﺣ۳ koko ajan olemme juuri sokeasti kopioida ja liittﺣ۳ﺣ۳
sisﺣ۳llyttﺣ۳ﺣ۳ tﺣ۳mﺣ۳n, sisﺣ۳ltﺣ۳vﺣ۳t ettﺣ۳, mitﺣ۳ tapahtuu?
Nﺣ۳mﺣ۳ ovat vain sellainen vihjeitﺣ۳ ettﺣ۳ kalahtaa, mitﺣ۳ toimintoja
ovat todellakin tﺣ۳ytﺣ۳ntﺣﭘﺣﭘn, vain muualla eri tiedostoja
muualla jﺣ۳rjestelmﺣ۳ssﺣ۳.
>> Niinpﺣ۳ olemme ottaneet kﺣ۳yttﺣﭘﺣﭘn nimenselvennys.
Se on tﺣ۳mﺣ۳ sivuvaikutus tulostus jotain ruudulla.
Mutta se ei varsinaisesti kﺣ۳si minulle jotain takaisin.
Miten edetﺣ۳ toteuttamista varten, joka
ei kﺣ۳si minulle jotain takaisin?
>> No, kokeile tﺣ۳tﺣ۳.
Anna minun mennﺣ۳ eteenpﺣ۳in ja toteuttaa niminen tiedosto return.c
jotta voimme osoittaa, miten jotain kuten Get String, tai Get Int,
on todella palaamassa jotain takaisin kﺣ۳yttﺣ۳jﺣ۳lle.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja mﺣ۳ﺣ۳ritellﺣ۳ int main mitﺣ۳tﺣﭘn.
>> Ja jﺣ۳lleen, ettﺣ۳ tulevaisuudessa kﺣ۳ymme selittﺣ۳ﺣ۳, mitﺣ۳ se int ja ettﺣ۳ void
on todella tekee.
Mutta tﺣ۳nﺣ۳ﺣ۳n kﺣ۳ymme pitﺣ۳ﺣ۳ itsestﺣ۳ﺣ۳nselvyytenﺣ۳.
Aion mennﺣ۳ eteenpﺣ۳in ja printf, hyvﺣ۳ kﺣ۳yttﺣ۳jﺣ۳kokemus, x on.
Ja sitten aion odottaa Kﺣ۳yttﺣ۳jﺣ۳ antaa minulle x get int.
>> Ja sitten aion mennﺣ۳ eteenpﺣ۳in ja tulostaa x neliﺣﭘﺣﭘn.
Joten kun on vain nﺣ۳ppﺣ۳imistﺣﭘ, ihmiset yleisesti
kﺣ۳yttﺣ۳ﺣ۳ pikku porkkana symboli nﺣ۳ppﺣ۳imistﺣﭘllﺣ۳
edustamaan valta yhdessﺣ۳ tai ettﺣ۳ eksponentti.
Joten x potenssiin on lﺣ۳snﺣ۳ i.
>> Ja nyt aion tehdﺣ۳ tﺣ۳mﺣ۳n.
Voisin do-- mitﺣ۳ x potenssiin? x potenssiin on x kertaa x.
>> Ja teimme joitakin aika sitten jo tﺣ۳nﺣ۳ﺣ۳n.
Tﺣ۳mﺣ۳ ei tunnu kovin paljon edistystﺣ۳.
Tiedﺣ۳tkﺣﭘ mitﺣ۳?
Katsotaan hyﺣﭘdyntﺣ۳ﺣ۳ jotakin siitﺣ۳ ajatuksesta viime aika abstraktio.
>> Eikﺣﭘ olisi mukavaa, jos siellﺣ۳ on toiminto nimeltﺣ۳ﺣ۳n
neliﺣﭘ, ettﺣ۳ juuri nﺣ۳in?
Se on edelleen, on lopussa pﺣ۳ivﺣ۳, tekee saman matematiikka.
Mutta katsotaanpa abstrakti pois ajatusta ottaen
yksi numero kerrottuna toinen, ja vain antaa sille nimi,
kuten neliﺣﭘ tﺣ۳mﺣ۳ arvo.
>> Ja, toisin sanoen, C, nyt luoda funktion
kutsutaan neliﺣﭘn ettﺣ۳ juuri nﺣ۳in.
Se tulee kutsua neliﺣﭘ.
Se tulee ottaa int.
Ja me tulee juuri kutsuvat sitﺣ۳ n oletusarvoisesti.
>> Mutta voisimme kutsua sitﺣ۳ mitﺣ۳ me haluamme.
Ja kaikki se menee do, kirjaimellisesti, on paluu
tulos n kertaa n.
Mutta koska se on palaavat jotain, joka
on avainsana violetti olemme koskaan ennen nﺣ۳hnyt, I rivillﺣ۳ 11,
voi vain sanoa mitﺣ۳tﺣﭘn tﺣ۳llﺣ۳ kertaa.
>> Void, esimerkissﺣ۳ olemme juuri nﺣ۳hnyt pikemminkin tulostaa nimi, tarkoittaa vain sitﺣ۳,
tee jotain.
Mutta ﺣ۳lﺣ۳ kﺣ۳si jotain takaisin.
Tﺣ۳ssﺣ۳ tapauksessa en halua palata n kertaa n,
tai mitﺣ۳ se on, ettﺣ۳ numero.
>> Joten en voi sanoa, hei, tietokone, Palaan mitﺣ۳ﺣ۳n, mitﺣ۳tﺣﭘn.
Se tulee palata, luonteeltaan, int.
Ja niin se on kaikki mitﺣ۳ on tekeillﺣ۳.
>> Panos lﺣ۳htﺣﭘruutuun tulee olemaan int.
Ja jotta voimme kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳, se on on nimi, N. Se tulee lﺣ۳htﺣﭘ
int, joka ei tarvitse nimeﺣ۳.
Voimme jﺣ۳ttﺣ۳ﺣ۳ tﺣ۳rkein, tai kuka on kﺣ۳yttﺣ۳vﺣ۳t minua muistamaan tﺣ۳tﺣ۳ arvoa, jos me
haluavat omalla vaihteleva.
>> Ja, jﺣ۳lleen, ainoa uusi avainsana tﺣ۳ssﺣ۳ Return.
Ja olen juuri tekemﺣ۳ssﺣ۳ joitakin matematiikkaa.
Jos halusin olla tarpeetonta, Voisin sanoa int tuote saa n kertaa n.
>> Ja sitten voisi sanoa, palauta tuote.
Mutta jﺣ۳lleen kerran, minun kohta aikaisempana tﺣ۳mﺣ۳ vain ei ole hyvﺣ۳ design--
kuten, miksi kﺣ۳yttﺣﭘﺣﭘn nimi, symboli, kuten tuote,
vain vﺣ۳littﺣﭘmﺣ۳sti palauttaa sen?
Se on vﺣ۳hﺣ۳n puhtaampi, hieman tiukempi, niin
puhua, vain sanoa paluu n kertaa n, pﺣ۳ﺣ۳stﺣ۳ eroon tﺣ۳stﺣ۳ linjan kokonaan.
>> Ja se on vain vﺣ۳hemmﺣ۳n koodia lukea, vﺣ۳hemmﺣ۳n mahdollisuuksia virheitﺣ۳.
Ja katsotaanpa, jos tﺣ۳mﺣ۳ todella toimii nyt.
Nyt aion mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ paluun.
>> Voi ei, implisiittinen ilmoitus toiminto.
Tein tﺣ۳mﺣ۳n virheen ennen, no big deal.
Saanen kirjoita, tai korosta ja kopioida, tﺣ۳smﺣ۳lleen sama toiminto prototyyppi,
tai allekirjoitus, funktion tﺣ۳ﺣ۳llﺣ۳.
Tai voisin siirtﺣ۳ﺣ۳ koko toiminto.
>> Mutta se on vﺣ۳hﺣ۳n laiska.
Joten emme tee sitﺣ۳.
Nyt, tehtﺣ۳kﺣﭘﺣﭘn paluu jﺣ۳lleen, piste slash paluu.
>> x 2. x potenssiin on 4. x 3. x potenssiin on 9.
Ja toiminto nﺣ۳yttﺣ۳ﺣ۳ Nyt toimivan.
Joten mitﺣ۳ eroa tﺣ۳ﺣ۳llﺣ۳?
Olen toiminto, joka kutsutaan neliﺣﭘ, Tﺣ۳ssﺣ۳ tapauksessa, joka laitoin tulo.
Ja palaan lﺣ۳htﺣﭘ.
Ja kuitenkin aikaisemmin, jos Avaan toinen esimerkki
aiemmista, josta oli nimeltﺣ۳ﺣ۳n prototype.c,
Minulla oli print nimi, joka palasi mitﺣ۳tﺣﭘn, niin sanotusti,
Tai se palasi mitﺣ۳ﺣ۳n, ja yksinkertaisesti oli sivuvaikutus.
>> Joten mitﺣ۳ tﺣ۳ﺣ۳llﺣ۳ tapahtuu?
No, pitﺣ۳vﺣ۳t toiminto saada merkkijono vain hetken.
Olemme funktiolla saada merkkijono seuraavalla tavalla.
>> Meillﺣ۳ on ollut tehtﺣ۳vﺣ۳ saada merkkijono, kuten muun muassa CS50.h,
ovat standardin IO.h, int, tﺣ۳rkein, mitﺣ۳tﺣﭘn.
Ja sen jﺣ۳lkeen joka kerta olen nimeltﺣ۳ﺣ۳n get merkkijono tﺣ۳hﺣ۳n mennessﺣ۳,
Olen sanonut jotain, merkkijono s saa saada merkkijono, koska get string--
kutsukaamme tﺣ۳tﺣ۳ get.c-- get merkkijono itse palauttaa merkkijonon, joka voin sitten
kﺣ۳yttﺣ۳ﺣ۳, ja sanoa, hei, pilkku, prosentin s, kenoviiva n, s.
>> Joten tﺣ۳mﺣ۳ on samaa esimerkkiﺣ۳, todella, ettﺣ۳ meillﺣ۳ oli aikaisemmin.
Joten merkkijono palauttaa arvon.
Mutta hetki sitten, print string ei palauta arvoa.
Se vain on sivuvaikutus.
Joten tﺣ۳mﺣ۳ on perustavanlaatuinen ero.
Olemme nﺣ۳hneet eri tyyppisiﺣ۳ toimintoja nyt,
joista jotkut ovat palanneet arvot, joista jotkut eivﺣ۳t.
Joten ehkﺣ۳ se on merkkijono, tai int tai float.
Tai ehkﺣ۳ se on vain mitﺣ۳tﺣﭘn.
>> Ja ero on ettﺣ۳ nﺣ۳mﺣ۳ toiminnot, jotka
saada tietoja ja palauttaa arvon todella tuo jotakin takaisin pﺣﭘytﺣ۳ﺣ۳n,
niin sanoakseni.
Joten mene eteenpﺣ۳in ja katsokaa yksi viimeinen
Esimerkkien joka antaa tunteen, nyt on miten voisimme todellakin abstrakti parempi,
ja paremmin, ja paremmin, tai enemmﺣ۳n, ja enemmﺣ۳n, ja enemmﺣ۳n, jotta
kirjoittamaan lopulta parempaa koodia.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in, ja hengessﺣ۳ Scratch, toimi seuraavasti.
>> Anna minun mennﺣ۳ eteenpﺣ۳in ja sisﺣ۳ltﺣ۳vﺣ۳t CS50.h ja standardi IO.h.
Anna minun mennﺣ۳ eteenpﺣ۳in ja antaa itse int, tﺣ۳rkein, mitﺣ۳tﺣﭘn.
Ja anna minun mennﺣ۳ eteenpﺣ۳in, kutsuvat tﺣ۳tﺣ۳ cough.c.
>> Ja anna minun mennﺣ۳ eteenpﺣ۳in ja vain kuten Scratch, tulostaa yskﺣ۳ / n.
Ja haluan tehdﺣ۳ tﺣ۳tﺣ۳ kolme kertaa.
Joten olen tietenkin juuri menossa kopioida ja liittﺣ۳ﺣ۳ kolme kertaa.
Olen nyt menossa tekemﺣ۳ﺣ۳n yskﺣ۳ piste slash yskﺣ۳.
Annetaan itse vﺣ۳hﺣ۳n enemmﺣ۳n tilaa tﺣ۳ﺣ۳llﺣ۳, Anna, yskﺣ۳, yskﺣ۳, yskﺣ۳.
>> On tietysti jo mahdollisuus parantaa.
Olen kopioida ja liittﺣ۳ﺣ۳ muutaman kerran tﺣ۳nﺣ۳ﺣ۳n.
Mutta se oli vain niin en tﺣ۳ytyy kirjoittaa niin monta merkkiﺣ۳.
Olen edelleen muuttaneet nﺣ۳mﺣ۳ riviﺣ۳ koodia ovat.
>> Nﺣ۳mﺣ۳ kolme riviﺣ۳ ovat samanlaiset, joka tuntuu laiska ja todellakin on,
ja ei luultavasti ole oikea lﺣ۳hestymistapa.
Joten mitﺣ۳ ainesosan voisimme parantaa tﺣ۳tﺣ۳ koodia?
Meillﺣ۳ ei tarvitse kopioida ja liittﺣ۳ﺣ۳ koodin.
>> Ja tosiaankin, milloin tunnet itse kopioimalla,
eikﺣ۳ edes muuttuvat koodia, kertoimet ovat olemassa parempi tapa.
Ja todellakin, siellﺣ۳ on.
Anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ silmukka, vaikka syntaksi ei ehkﺣ۳
tulevat luonnollisesti vielﺣ۳.
>> Tekemﺣ۳llﺣ۳ tﺣ۳mﺣ۳n kolmesti, yksinkertaisesti tekemﺣ۳llﺣ۳ following--
ja satun tietﺣ۳ﺣ۳ tﺣ۳tﺣ۳ kﺣ۳ytﺣ۳ntﺣﭘﺣﭘn.
Meillﺣ۳ on kuitenkin useita esimerkkejﺣ۳ nyt.
Ja nﺣ۳et verkossa lisﺣ۳ﺣ۳ viitteitﺣ۳ edelleen.
>> Tﺣ۳mﺣ۳ on syntaksi rivillﺣ۳ 6, ettﺣ۳ aivan kuten Scratch joka toistuu
lohko, toista seuraavat kolme kertaa.
Se on vﺣ۳hﺣ۳n maaginen nyt.
Mutta tﺣ۳mﺣ۳ saa enemmﺣ۳n, ja tutumpi.
>> Ja se tulee toistaa line kahdeksan kolme kertaa,
niin ettﺣ۳ jos olen uudelleen koota make yskﺣ۳, piste slash yskﺣ۳, yskﺣ۳, yskﺣ۳, yskﺣ۳.
Se toimii edelleen samalla tavalla.
Niin, ettﺣ۳ kaikki hyvﺣ۳ ja hieno.
Mutta se ei ole kovin abstracted.
>> Se on tﺣ۳ysin oikein.
Mutta se tuntuu siellﺣ۳ voisi olla mahdollisuus,
kuten maailmassa Scratch, erﺣ۳ﺣ۳nlainen alku
lisﺣ۳tﺣ۳ muutamia semantiikan tﺣ۳ssﺣ۳ niin, ettﺣ۳ En vain joitakin varten silmukka,
ja toiminto, jossa lukee yskﺣ۳, vai yskﺣ۳.
Tiedﺣ۳tkﺣﭘ mitﺣ۳?
Yritﺣ۳n olla hieman viileﺣ۳mpi kuin,
ja itse asiassa kirjoittaa funktio, joka on joitakin sivuvaikutuksia, kutsuvat sitﺣ۳ yskﺣ۳.
>> Ja siinﺣ۳ ei tulo, ja palauttaa mitﺣ۳ﺣ۳n arvoa tuotokseksi.
Mutta tiedﺣ۳tkﺣﭘ mitﺣ۳ se tekee?
Se this-- printf, lainaus lainaus, yskﺣ۳.
>> Ja nyt tﺣ۳ﺣ۳llﺣ۳, aion mennﺣ۳ eteenpﺣ۳in ja int,
i saa nolla, i alle 3, i plus plus.
Aion tehdﺣ۳ printf, joka on luultavasti alhainen tﺣ۳ytﺣ۳ntﺣﭘﺣﭘnpano
yksityiskohta.
En vﺣ۳litﺣ۳ miten yskﺣ۳.
Haluan vain kﺣ۳yttﺣ۳ﺣ۳ yskﺣ۳ toimintoa.
Ja olen juuri menossa soittaa yskﺣ۳.
>> Nyt huomaa kahtiajako.
Kun soitat toiminto, jos et haluavat antaa sen tuloihin, tﺣ۳ysin hieno.
Tee avoin paren lﺣ۳hellﺣ۳ paren, ja olet valmis.
>> Kun mﺣ۳ﺣ۳rittﺣ۳ﺣ۳ funktion, tai julistaa funktion prototyyppi,
Jos tiedﺣ۳t etukﺣ۳teen se ei ole vie argumentteja,
sanoa mitﺣ۳tﺣﭘn nﺣ۳issﺣ۳ suluissa siellﺣ۳.
Ja se tekee, ettﺣ۳ olet ei vahingossa sitﺣ۳ vﺣ۳ﺣ۳rin.
Anna minun mennﺣ۳ eteenpﺣ۳in ja tehdﺣ۳ yskﺣ۳.
Ja tietenkin, olen tehnyt virheen.
>> Dammit, siellﺣ۳ on, ettﺣ۳ implisiittinen ilmoitus.
Mutta se kﺣ۳y hyvin.
Se on helppo korjata.
Tarvitsen vain prototyyppi ylempﺣ۳nﺣ۳ minun tiedosto kuin olen todellisuudessa kﺣ۳yttﺣ۳vﺣ۳t sitﺣ۳.
>> Joten nyt tehtﺣ۳kﺣﭘﺣﭘn yskﺣ۳ taas mukava.
Nyt se toimii.
Tee yskﺣ۳, yskﺣ۳, yskﺣ۳, yskﺣ۳.
Joten voisi ajatella, ettﺣ۳ olemme todella runsaat insinﺣﭘﺣﭘrin tﺣ۳tﺣ۳ ongelmaa.
Ja todellakin, me olemme.
Tﺣ۳mﺣ۳ ei ole hyvﺣ۳ ehdokas ohjelman
kategoriassa refaktorointi, ja tekee mitﺣ۳
nimeltﺣ۳ﺣ۳n hierarkkinen hajoaminen, jos otat koodia, ja sitten
te sellainen tekijﺣ۳ asioita, niin kuin syyksi enemmﺣ۳n semantiikka heille
ja kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳ lopulta pitkﺣ۳llﺣ۳ aikavﺣ۳lillﺣ۳.
Mutta se on rakennuspalikka kohti kehittyneempiﺣ۳ ohjelmia
ettﺣ۳ aloitamme kirjallisesti ennen pitkﺣ۳ﺣ۳, ettﺣ۳
antaa meille mahdollisuuden sanastoa jolla kirjoittamaan parempaa koodia.
Ja todellakin, katsotaanpa jos voi yleistﺣ۳ﺣ۳ tﺣ۳tﺣ۳ pidemmﺣ۳lle.
>> Se tuntuu hieman ontuva, ettﺣ۳ minﺣ۳, tﺣ۳rkein, tarvitse huolehtia tﺣ۳stﺣ۳ hiton silmukka,
ja kutsuvan yskﺣ۳ uudestaan ﻗﻗja uudestaan.
Miksi en voi vain kertoa yskﺣ۳, ota yskﺣ۳ kolme kertaa?
Toisin sanoen, miksi en voi vain antaa panos yskﺣ۳ ja tehdﺣ۳ tﺣ۳mﺣ۳n?
>> Miksi en voi vain sanoa, vuonna Tﺣ۳rkein yskﺣ۳ kolme kertaa.
Ja nyt, tﺣ۳mﺣ۳ on tavallaan maaginen.
Se on hyvin iteratiivinen tﺣ۳ﺣ۳llﺣ۳.
Ja se on, todellakin, vauva askel.
>> Mutta juuri kyky sanoa rivi kahdeksan, yskﺣ۳ kolme kertaa,
se on vain niin paljon enemmﺣ۳n luettavaa.
Ja plus, en tarvitse tietﺣ۳ﺣ۳ tai vﺣ۳litﺣ۳ kuinka yskﺣ۳ on toteutettu.
Ja todellakin, myﺣﭘhemmin termi ja opinnﺣ۳ytetﺣﭘiden,
Jos puuttua projektin luokkatoveri tai kaksi luokkatoverit,
huomaat, ettﺣ۳ olet menossa on, tai haluat, jakaa tyﺣﭘ.
>> Ja olet menossa haluavat pﺣ۳ﺣ۳ttﺣ۳ﺣ۳ etukﺣ۳teen, kuka tekee mitﺣ۳,
ja jossa kappaleet?
Ja eikﺣﭘ olisi mukavaa Jos esimerkiksi
huolehtia kirjoittamisen tﺣ۳rkein, tehty.
Ja kﺣ۳mppﺣ۳kaveri, tai kumppani yleisemmin
huolehtii tﺣ۳ytﺣ۳ntﺣﭘﺣﭘnpanon yskﺣ۳.
>> Ja tﺣ۳mﺣ۳ jako, nﺣ۳mﺣ۳ seinﺣ۳t abstraktio,
tai kerrosten abstraktio jos te, ovat erittﺣ۳in tehokkaita,
koska erityisesti suurempien, monimutkaisempia ohjelmia ja jﺣ۳rjestelmiﺣ۳,
se mahdollistaa useiden ihmisiﺣ۳ rakentamaan asioita yhdessﺣ۳, ja lopulta
ommel tyﺣﭘnsﺣ۳ yhteen tﺣ۳llﺣ۳ tavalla.
Mutta tietenkin, me tﺣ۳ytyy nyt korjata yskﺣ۳.
Meidﺣ۳n tﺣ۳ytyy kertoa yskﺣ۳ ettﺣ۳, hei, tiedﺣ۳tkﺣﭘ mitﺣ۳?
Olet menossa tarvitse ottaa input-- niin ei mitﺣ۳tﺣﭘn, mutta int ja nyt.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja panna yskﺣ۳ int. i saa nolla.
>> i on pienempi kuin se, kuinka monta kertaa.
Sanoin kolme aiemmin.
Mutta se ei ole mitﺣ۳ haluan.
En halua yskﺣ۳ voidaan yleistﺣ۳ﺣ۳ tukea mitﺣ۳ tahansa mﺣ۳ﺣ۳rﺣ۳ﺣ۳ toistojen.
>> Joten, todellakin, se on n ettﺣ۳ haluan, mitﺣ۳ kﺣ۳yttﺣ۳jﺣ۳ kertoo minulle.
Nyt voin mennﺣ۳ eteenpﺣ۳in ja sanoa tulostaa yskﺣ۳.
Ja mitﺣ۳ numero kﺣ۳yttﺣ۳jﺣ۳ kulkee,
Aion kerrata, ettﺣ۳ monta kertaa.
>> Joten lopussa pﺣ۳ivﺣ۳, Ohjelma on sama.
Mutta huomaa kaikki tﺣ۳tﺣ۳ kamaa voisi olla jopa toiseen tiedostoon.
Itse asiassa en tiedﺣ۳ tﺣ۳llﺣ۳ hetki miten printf toteutetaan.
>> En tiedﺣ۳ tﺣ۳llﺣ۳ hetkellﺣ۳, miten saada string, tai saada int, tai saada kellua
pannaan tﺣ۳ytﺣ۳ntﺣﭘﺣﭘn.
Ja en halua nﺣ۳hdﺣ۳ niitﺣ۳ tietokoneen nﺣ۳ytﺣﭘllﺣ۳.
Koska se on, olen alkanut keskittyﺣ۳ minun ohjelma, eikﺣ۳ nﺣ۳itﺣ۳ tehtﺣ۳viﺣ۳.
>> Ja niin, todellakin, heti kun Aloita factoring koodi nﺣ۳in ulos,
voisimme jopa siirtﺣ۳ﺣ۳ yskﺣ۳ erilliseen tiedostoon?
Joku voisi toteuttaa sitﺣ۳.
Ja sinun ja ohjelma tulee hyvin kaunis, ja hyvin luettavissa,
luultavasti, todella neljﺣ۳ line-ohjelma oikeassa.
>> Joten mene eteenpﺣ۳in nyt ja vielﺣ۳ yksi muutos.
Huomaa, ettﺣ۳ minun prototyyppi on vaihtaa ylﺣﭘs.
Haluan siis korjata, ettﺣ۳ niin En saa huusi.
>> Tee yskﺣ۳, minﺣ۳ juoksen yskﺣ۳ kerran enemmﺣ۳n, edelleen tehdﺣ۳ sama asia.
Mutta nyt huomaa meillﺣ۳ on ainesosa yksi lopullinen versio.
Tiedﺣ۳tkﺣﭘ mitﺣ۳?
En halua vain yskﺣ۳, vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳.
Haluan olla jotain yleisempﺣ۳ﺣ۳.
Joten tiedﺣ۳tkﺣﭘ mitﺣ۳?
En halua tehdﺣ۳ tﺣ۳tﺣ۳.
Haluan olla, aivan kuten Scratch ei, sanoa lohko, mutta ei pelkﺣ۳stﺣ۳ﺣ۳n
sanoa jotain muutamia kertoja.
Haluan sen sanoa hyvin erityinen merkkijono.
Ja siksi en haluavat sen vain sanoa yskﺣ۳.
Haluan sen sanoa mitﺣ۳ tahansa merkkijono johdetaan.
>> Joten huomata, olen yleistynyt tﺣ۳mﺣ۳ niin, ettﺣ۳ nyt
vaikkapa tuntuu hyvﺣ۳ltﺣ۳ nimi Tﺣ۳mﺣ۳n, kuten Scratch,
ottaa kaksi argumenttia, toisin Scratch.
Yksi on merkkijono.
Yksi on int.
>> Ja voisin vaihtaa niitﺣ۳.
Olen juuri sellainen kuin ajatus sanoa merkkijono ensin, ja sitten
kuinka monta kertaa myﺣﭘhemmin.
Void tarkoittaa sitﺣ۳ vielﺣ۳ ei palaa mitﺣ۳ﺣ۳n.
Nﺣ۳mﺣ۳ ovat vain visuaalinen puoli vaikutuksia, kuten kanssa [? Jordan,?]
sanallinen sivuvaikutus huutaa.
Se kuitenkin tekee jotain n kertaa, 0 asti, mutta ei yhtﺣ۳ suuri kuin n.
Tﺣ۳mﺣ۳ tarkoittaa n koko kertaa.
Ja sitten vain tulostaa mitﺣ۳ se merkkijono on.
Joten olen todella yleistynyt koodirivin.
Joten nyt, miten voin toteuttaa yskﺣ۳ toiminto?
>> Voin tehdﺣ۳ mitﺣ۳tﺣﭘn yskﺣ۳.
Ja voin silti ottaa miten monta kertaa haluat yskﺣ۳.
Mutta tiedﺣ۳tkﺣﭘ mitﺣ۳?
Voin nyt punt sanoa.
>> Voin soittaa sanoa kanssa sana yskﺣ۳, kulkee n.
Ja jos haluan myﺣﭘs toteuttaa, vain huvin vuoksi, aivastus funktio,
Voin sneeze joitakin kertoja.
Ja voin pitﺣ۳ﺣ۳ uudelleenkﺣ۳yttﺣﭘ n, koska huomaa, ettﺣ۳ m tﺣ۳ssﺣ۳ yhteydessﺣ۳ tai laajuus
on olemassa vain tﺣ۳mﺣ۳n toiminnon.
>> Ja n tﺣ۳ssﺣ۳ yhteydessﺣ۳ vain vallitsee tﺣ۳tﺣ۳ toimintoa tﺣ۳ﺣ۳llﺣ۳.
Joten me palaamme nﺣ۳itﺣ۳ kysymyksiﺣ۳ soveltamisalan.
Ja tﺣ۳ssﺣ۳, olen juuri menossa sanoa, Achoo, ja sitten n kertaa, puolipisteellﺣ۳.
>> Ja nyt, minﺣ۳ vain tﺣ۳ytyy lainata nﺣ۳mﺣ۳ toiminnot allekirjoitukset tﺣ۳ﺣ۳llﺣ۳.
Joten yskﺣ۳ on oikea.
Void aivastus on oikea nyt.
>> Ja olen edelleen tﺣ۳ytyy vain sanoa.
Joten aion sanoa, vaikkapa string s, int n, puolipisteellﺣ۳.
Joten olen yli-suunnitelleet pahus pois tﺣ۳stﺣ۳ ohjelmasta.
>> Ja tﺣ۳mﺣ۳ ei vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳ tarkoita tﺣ۳mﺣ۳ on
mitﺣ۳ pitﺣ۳isi tehdﺣ۳, kun kirjallinen edes yksinkertaisimpia ohjelmia.
Ota jotain, joka on ilmeisesti todella yksinkertainen, todella lyhyt,
ja uudelleen toteuttaa se kﺣ۳yttﺣ۳mﺣ۳llﺣ۳ aivan liikaa koodia.
Mutta voit itse nﺣ۳hdﺣ۳ ja aika muistella nﺣ۳itﺣ۳ esimerkkejﺣ۳,
ja ymmﺣ۳rtﺣ۳ﺣ۳,, oi, ne ovat vaiheet otimme todella yleistﺣ۳ﺣ۳,
tekijﺣ۳ jotain, kunnes lopussa pﺣ۳ivﺣ۳n
minun koodi on oikeastaan ﻗﻗaika kohtuullinen.
Koska jos Haluan yskﺣ۳ kolme ajat sitten aivastaa kolme kertaa,
En yksinkertaisesti menossa uusintana tﺣ۳mﺣ۳n, ohjelma tehdﺣ۳ yskﺣ۳, ja suorita yskﺣ۳.
Ja minulla on kolme yskﺣ۳ﺣ۳ ja kolme aivastaa.
>> Ja niin tﺣ۳mﺣ۳ on perus paradigma, jos haluatte,
kuinka voisimme edetﺣ۳ todella toteuttaa ohjelmaa.
Mutta Haluan vain nﺣ۳hdﺣ۳ nyt, mikﺣ۳ on olemme tehneet kaiken tﺣ۳mﺣ۳n ajan,
ja mitﺣ۳ jotkut lopullista kappaletta ovat tﺣ۳mﺣ۳n takana yksinkertaisen komennon.
Lopussa pﺣ۳ivﺣ۳n, olemme kﺣ۳yttﺣ۳nyt Clang meidﺣ۳n kﺣ۳ﺣ۳ntﺣ۳jﺣ۳.
Olemme kirjallisesti lﺣ۳hde koodi, muuttaen sen
kautta Clang konekielelle.
>> Ja olemme kﺣ۳yttﺣ۳neet tehdﺣ۳ vain helpottaa meidﺣ۳n nﺣ۳ppﺣ۳imistﺣﭘn niin
ettﺣ۳ meidﺣ۳n ei tarvitse muistaa ne loitsut of Clang itse.
Mutta mikﺣ۳ on tehdﺣ۳ todella tekee?
Ja puolestaan ﻗﻗmitﺣ۳ on Kalahtaa todella tekee?
>> On kﺣ۳ynyt ilmi, vaikka olemme yksinkertaistettu tﺣ۳mﺣ۳npﺣ۳ivﺣ۳isessﺣ۳ keskustelussa sanomalla,
otat lﺣ۳hdekoodia, siirtﺣ۳ﺣ۳ sen tulona kﺣ۳ﺣ۳ntﺣ۳jﺣ۳, joka antaa sinulle
tuotos koneen koodi kﺣ۳ﺣ۳ntyy siellﺣ۳ n
muutamia eri vaiheita sisﺣ۳llﺣ۳ siellﺣ۳.
Ja kokoaminen sattuu olemaan sateenvarjo termi koko joukko vaiheita.
Mutta Haluan vain kiusaa tﺣ۳tﺣ۳ todella nopeasti.
>> On kﺣ۳ynyt ilmi, ettﺣ۳ olemme tehneet enemmﺣ۳n asioita joka kerta kun kﺣ۳ynnistﺣ۳ﺣ۳ ohjelman
tai joka kerta kun kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ ohjelmaa tﺣ۳nﺣ۳ﺣ۳n.
Niin esikﺣ۳sittelyyn viittaa this-- mitﺣ۳ﺣ۳n C-ohjelma,
kuten nﺣ۳emme uudelleen ja uudelleen, joka alkaa tﺣ۳mﺣ۳n hash symboli,
tai hashtagin symboli tﺣ۳ﺣ۳llﺣ۳, merkitsee se on esikﺣ۳sittelijﺣ۳ﺣ۳n direktiivi.
Tﺣ۳mﺣ۳ tarkoittaa tﺣ۳ssﺣ۳ tapauksessa, hei tietokone, tehdﺣ۳ jotain tﺣ۳mﺣ۳n tiedoston
ennen kuin itse koota oman koodin.
>> Tﺣ۳ssﺣ۳ tapauksessa hash sisﺣ۳ltﺣ۳vﺣ۳t sanoen, pohjimmiltaan, C tapa sanoa,
hei tietokone, mene saada sisﺣ۳ltﺣﭘﺣ۳ of CS50.h ja liittﺣ۳ﺣ۳ ne tﺣ۳ﺣ۳llﺣ۳.
Hei tietokone, mene saada sisﺣ۳llﺣﭘstﺣ۳ standardin IO.h,
aina kun se on sen kiintolevy, liitﺣ۳ se tﺣ۳hﺣ۳n.
Joten ne asioita tapahtuu Ensimmﺣ۳inen aikana esikﺣ۳sittely.
>> Ja Clang tekee kaiken tﺣ۳mﺣ۳n meille.
Ja se tekee sen niin hiton nopea, et edes
katso neljﺣ۳ erillistﺣ۳ asioita tapahtuu.
Mutta se ensimmﺣ۳inen tﺣ۳llainen askel.
>> Mitﺣ۳ oikeastaan ﻗﻗtapahtuu?
No, seuraava virallinen vaihe on koota.
Ja kﺣ۳y ilmi, ettﺣ۳ ohjelmaa koostettaessa
teknisesti tarkoittaa menee lﺣ۳hdekoodi, tavaraa olemme
kirjoittanut tﺣ۳nﺣ۳ﺣ۳n, jotain nimeltﺣ۳ﺣ۳n assembly, jotain
joka nﺣ۳yttﺣ۳ﺣ۳ hieman erilainen.
>> Ja itse asiassa, voimme nﺣ۳hdﺣ۳ tﺣ۳mﺣ۳n todella nopeasti.
Anna minun itse mennﺣ۳ minun IDE.
Anna minun mennﺣ۳ eteenpﺣ۳in ja avoin hello.c, joka on ensimmﺣ۳inen ohjelma, jota
alkoi tﺣ۳nﺣ۳ﺣ۳n.
Ja anna minun mennﺣ۳ eteenpﺣ۳in ja ajaa Clang hieman eri tavalla, Clang-s, hello.c,
joka on todella aikoo anna minulle toinen tiedosto hello.s.
>> Ja me luultavasti koskaan jﺣ۳lleen nﺣ۳hdﺣ۳ tﺣ۳llaista koodia.
Jos ottaa alemmalla tasolla jﺣ۳rjestelmﺣ۳t luokan kuten CS61,
nﺣ۳et paljon enemmﺣ۳n Tﺣ۳llaisen koodin.
Mutta tﺣ۳mﺣ۳ on konekielellﺣ۳.
Tﺣ۳mﺣ۳ on X86 konekielellﺣ۳ ettﺣ۳ CPU, joka on taustalla
CS50 IDE todella ymmﺣ۳rtﺣ۳ﺣ۳.
>> Ja arvoituksellinen kuin se katso, se on jotain
tietokone ymmﺣ۳rtﺣ۳ﺣ۳ melko hyvin.
Sub q, tﺣ۳mﺣ۳ on vﺣ۳hennﺣ۳.
On liikkeitﺣ۳.
>> Siellﺣ۳ soittaa toimintoja tﺣ۳ﺣ۳llﺣ۳, x Oring, liike, lisﺣ۳osa, pop,
paluuta.
Joten on joitakin hyvin alhainen ohjeet
ettﺣ۳ suorittimia ymmﺣ۳rtﺣ۳ﺣ۳, ettﺣ۳ Viittasin aikaisemmin.
Juuri Intel Inside.
>> On malleja nollia ja ykkﺣﭘsiﺣ۳, jotka
karttaa nﺣ۳ihin arcanely muotoiltu, mutta jokseenkin hyvin nimetty, ohjeet,
niin sanoakseni.
Tﺣ۳mﺣ۳ on mitﺣ۳ tapahtuu, kun te kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ koodia.
Saat kokoonpano kieli ulos siitﺣ۳, mikﺣ۳
tarkoittaa, ettﺣ۳ kolmas vaihe on koota ettﺣ۳ kokoonpano koodin, lopulta,
kone code-- nollia ja ykkﺣﭘsiﺣ۳, eikﺣ۳ tekstissﺣ۳, josta juuri nﺣ۳hnyt hetki sitten.
>> Joten esikﺣ۳sittelyﺣ۳ ei joka lﺣﭘytﺣ۳ﺣ۳ ja korvaa, ja muutamia muita asioita.
Kﺣ۳ﺣ۳ntﺣ۳minen vie lﺣ۳hde koodi C, lﺣ۳hdekoodi
ettﺣ۳ me kirjoitti, kokoonpano koodi, joka me vain vilkaisi.
Kokoaminen vie ettﺣ۳ kokoonpano koodi nollia ja ykkﺣﭘsiﺣ۳
ettﺣ۳ CPU todella ymmﺣ۳rtﺣ۳ﺣ۳ lopussa pﺣ۳ivﺣ۳n.
Ja linkittﺣ۳minen on viimeinen vaihe ettﺣ۳ tapahtuu us-- uudelleen,
niin nopeasti emme edes notice-- joka sanoo,
hei tietokone, ottaa kaikki nollat ﻗﻗja ne, jotka
johtui kokoamisessa Daavidin koodia, ja hﺣ۳nen pﺣ۳ﺣ۳asiallinen tehtﺣ۳vﺣ۳ tﺣ۳ssﺣ۳ tapauksessa.
>> Ja hei tietokone, mene saada kaikki nollat ﻗﻗja ykkﺣﭘset
ettﺣ۳ CS50 henkilﺣﭘstﺣﭘ kirjoitti sisﺣ۳llﺣ۳ CS50 kirjasto.
Sekoita ne sisﺣ۳ﺣ۳n Daavidin.
Ja hei tietokone, mene saada kaikki nollat ja ne, jotka joku muu kirjoitti vuotta
sitten varten printf.
Ja lisﺣ۳tﺣ۳ ne osaksi koko asia, joten olemme
sain nollia ja ykkﺣﭘsiﺣ۳, The CS50 henkilﺣﭘstﺣﭘn nollia ja ykkﺣﭘsiﺣ۳,
printf nollia ja ykkﺣﭘsiﺣ۳, ja mitﺣ۳ﺣ۳n muuta kﺣ۳ytﺣ۳mme.
>> He kaikki saavat yhdistetﺣ۳ﺣ۳n yhdeksi ohjelmaa nimeltﺣ۳, tﺣ۳ssﺣ۳ tapauksessa, hei.
Joten tﺣ۳stﺣ۳ lﺣ۳htien, me vain kﺣ۳yttﺣ۳ﺣ۳ sanaa kokoamiseen.
Ja otamme selvﺣ۳nﺣ۳, ettﺣ۳ kun sanomme, kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ ohjelma, se tarkoittaa,
hei tehdﺣ۳ esikﺣ۳sittelyﺣ۳, kokoonpano, ja yhdistﺣ۳ﺣ۳.
Mutta on todella jokin mehukas tavaraa siellﺣ۳ tapahtuu alla huppu.
Ja varsinkin jos saada utelias jonkin aikaa,
voit alkaa tﺣﭘnﺣ۳isi noin tﺣ۳llﺣ۳ alhaisemmalla tasolla.
Mutta nyt, ymmﺣ۳rtﺣ۳ﺣ۳, ettﺣ۳ joukossa takeaways tﺣ۳nﺣ۳ﺣ۳n
ovat yksinkertaisesti alkaa prosessi,
saada mukava jotain Hello World.
Itse asiassa suurin osa mitﺣ۳ teimme tﺣ۳nﺣ۳ﺣ۳n ei varmasti uppoavat huippunopea.
Ja kestﺣ۳ﺣ۳ jonkin aika, ja jotkut kﺣ۳ytﺣ۳ntﺣﭘ.
Ja kertoimet ovat, sinun tulee lajitella of haluat lyﺣﭘdﺣ۳ nﺣ۳ppﺣ۳imistﺣﭘn
tai huutaa nﺣ۳yttﺣﭘﺣ۳.
Ja kaikki tﺣ۳mﺣ۳ on OK.
Tosin ehkﺣ۳ yritﺣ۳ tee se kirjastossa niin paljon.
>> Ja lopulta, luultavasti olisi voinut kuitenkin, aloittaa
nﺣ۳hdﺣ۳ kuvioita, niin hyvﺣ۳ﺣ۳ koodia ettﺣ۳ olet kirjoittanut ja virheitﺣ۳
ettﺣ۳ olet tehnyt.
Ja paljon kuin prosessin tulossa TF tai CA on kuin,
voit alkaa saada paremmin ja paremmin nﺣ۳kemﺣ۳ﺣ۳n nﺣ۳itﺣ۳ kuvioita,
ja vain ratkaisemaan omat ongelmansa lopulta.
Tﺣ۳llﺣ۳ vﺣ۳lin tulee olemaan runsaasti meistﺣ۳ antamaan sinulle tukea ja painukaa
tﺣ۳mﺣ۳n lﺣ۳pi.
Ja arvonkorotukset kaikki ongelmat
aiotte ohjataan lﺣ۳pi kaikki komennot
ettﺣ۳ en todellakaan tiedﺣ۳ mistﺣ۳ paljon kﺣ۳ytﺣ۳nnﺣﭘn nyt,
mutta ehkﺣ۳ lentﺣ۳nyt yli pﺣ۳ﺣ۳n nyt.
Ja se on tﺣ۳ysin kunnossa.
>> Mutta lopulta olet menossa alkaa nﺣ۳hdﺣ۳ kuvioita syntyﺣ۳.
Ja kun saat ohi kaikki tyhmﺣ۳ yksityiskohtia, kuten suluissa,
ja aaltosulkei-, ja puolipistettﺣ۳, ja tavaraa, rehellisesti,
joka ei ole ollenkaan ﺣ۳lyllisesti mielenkiintoinen.
Ja se ei ole tavoite minkﺣ۳ﺣ۳n johdanto luokassa.
Se on ideoita, jotka ovat menossa merkitystﺣ۳.
>> Se on silmukoita, ja olosuhteet, ja toiminnot,
ja voimakkaammin ottoon, ja factoring koodia,
ja hyvﺣ۳ suunnittelu, ja hyvﺣ۳ tyyli, ja lopulta oikeellisuutta
oman koodin, joka on viime kﺣ۳dessﺣ۳ menossa asia eniten.
Joten ensi viikolla, otamme nﺣ۳mﺣ۳ ideoita, tuli ensimmﺣ۳isen kerran Scratch
ja ovat nyt kﺣ۳ﺣ۳ntﺣ۳nyt C. Ja aloitamme
esitellﺣ۳ ensimmﺣ۳inen kurssin reaalimaailman verkkotunnuksia.
>> Me keskitymme maailman turvallisuutta, ja tarkemmin salaus,
taidetta muokkaamisella tietoja.
Ja ensimmﺣ۳isten joukossa ongelmat itse
saa kirjoittaa pidemmﺣ۳lle leikkii joitakin syntaksin
ja ratkaista loogisia ongelmia, lopulta ennen pitkﺣ۳ﺣ۳,
on todella muokkaamaan tai salata, ja lopulta purkaa tietoa.
Ja kaikki olemme tehneet tﺣ۳nﺣ۳ﺣ۳n, tulee melko alhainen
tasolla, on juuri menossa sallia voimme ottaa yhden, ja yksi,
ja yksi askel edellﺣ۳ kohti kirjallisesti mielenkiintoisin koodin vielﺣ۳.
>> Niin siitﺣ۳ lisﺣ۳ﺣ۳ ensi viikolla.
>> [VIDEOTOISTOSTA]
>> -Mitﺣ۳ Voi kertoa minulle viimeinen kerta, kun nﺣ۳in hﺣ۳net?
-Mitﺣ۳ Voin sanoa, todella?
Siis, se oli kuin mikﺣ۳ tahansa muu pre-tuotanto harjoitus,
paitsi siellﺣ۳ oli jotain hﺣ۳n sanoi aivan lopussa, ettﺣ۳ kiinni minua.
>> -Tﺣ۳mﺣ۳ Oli CS50.
>> -Se On leikattu kaikille, hienoa tyﺣﭘtﺣ۳ harjoitus.
>> -Se Lounas?
>> -Joo, Sinﺣ۳ ja voin napata voileipﺣ۳ hieman.
Saanen tiedotustilaisuuden kanssa David todella nopeasti.
David?
>> [END TOISTO]