[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]