>> [Musiikki soi]
>> DAVID MALAN: Okei.
Tervetuloa takaisin.
Tämä on CS50, ja tämä on Viikko sitten, jatkuu.
Joten yksi syy olemme ohimennen noin teknologiat, kuten
Google Glass on, että ne tulevat jotain tunnetaan API,
Application Programming Interface.
Ja mitä tämä tarkoittaa, että oikea tiedostoja ja oikea
dokumentointi, voit itse kirjoittaa ohjelmisto jopa laitteita kuten nämä.
>> Ja niin mitä meillä on mielessä kohti lukukauden lopussa on, jos hanke
mukana vaikkapa Google Glass saattaa valitus, näemme, mitä voimme tehdä
kannalta koukkaaminen sinut joitakin raajan laitteita sekä
julkisesti saatavilla API jotta voit todella alkaa luoda ohjelmisto
joka toimii saman Google Glass.
>> Toinen laite, että olemme pelanneet kanssa myöhään, että luulimme voisi olla
hauskaa lukukauden lopussa on tämä pikku juttu täällä.
Sitä kutsutaan Leap Motion, ja mitä olet tulleet on teknisesti
mainos laite, mutta se ei puhu, mitä tässä
laite pystyy.
Ja sekin tulee API kautta jossa voit kirjoittaa ohjelmiston
hallitsemaan omaa tietokonetta tavalla aivan kuin tämä yksi minuutin elokuva täällä.
>> [VIDEOTOISTOSTA]
>> [END VIDEOTOISTOSTA]
>> Joten nyt, tämä laite sattuu toteutetaan hieman USB
liitin, jonka voit liittää oman tietokone, mutta en olisi yllättynyt
jos ennen pitkää meillä on tällaisia teknologioiden seuraavan erän tietokoneet
ja Macit niin, että voit todellakin vuorovaikutuksessa sen kanssa
tavalla kuin että.
Itse asiassa, mitä ajattelin tehdä, sekin on Vedin jopa hieman esittelyä
ohjelma, joka tulee tämän ohjelmiston.
Joten olen koonnut pienen anturin edessä minun laptop.
>> Ja kuten näette, se on jo tajuaa että käteni on olemassa
valvoa sitä.
Ja kaikki tämä sovellus ei ei sutjakasti vähän asioita, kuten tämä.
Mutta voit nähdä, että todellakin, Minulla on viisi sormea ​​siellä.
Jos saamme sen tehdä kaikki 10, voitte kuvitella siisti piano
sovelluksen tai kuten.
Joten jos haluat keksiä tunnin jälkeen tänään ja leikkiä, että
hyvin, olet tervetullut.
Joten siitä lisää kohti lukukauden lopussa.
>> Joten pari hallinnollisten ilmoitukset.
Yksi, tehdä jakson perjantaina keskipäivällä klo cs60.net/section.
Että URL on kurssin kotisivu samoin.
Sillä välin, kuitenkin, supersections debyytti tänä sunnuntaina.
Supersections ovat yhden kerran asia, koska se vie meidät jonkin aikaa työskennellä
kuka on, jossa osassa ja missä.
>> Joten tulevana sunnuntaina siellä tulee olla yksi osa niille vähemmän mukava,
yksi osa niille mukavampaa.
Ja ne teistä jossain välillä ovat tervetulleita mennä
jompikumpi tai molemmat tai ei kumpikaan.
Molemmat taltioidaan.
He olla suurempi auditorio kuin ja tavallisesti olisi sisään
Mutta tavoitteemme on varustaa sinulle Joissakin mukavuutta ongelma asettaa yhden,
C: n kanssa, jossa CS50 laitteen, tämän viikonloppuna, jopa ennen kuin selvittää oman
muodollinen osa tehtävän.
Joten voit tavata TF ja pienempiä ryhmä sectionmates noin
viikon ajan.
>> Virka puolestaan ovat jatkuneet.
Onko hyödyntää niitä tänään tai huomenna jos haluat.
Harjoitus 0 johtuu perjantaina.
Tämä on päivää myöhemmin kuin säännöllisesti-aikataulun torstaina.
Mutta ongelma set 1, näet että se sisältää joitakin warm-up
harjoituksia, jotka itse voi laajentaa
Torstai määräaikaa perjantaihin.
Harjoitus 1 puolestaan ​​debyytti kurssin verkkosivuilla tulevana
Perjantai, jos haluat käpertyä sen tein aikoinaan myöhään
Perjantai-iltana huoneeseen.
>> Joten cs50.net/appliance on paikka, jossa saat CS50 laitteen
että aloimme käyttää maanantaina.
Käytämme sitä hieman tänään.
Mutta varma, että ongelma asetettu 1 erittely käydään läpi
Juuri mitä sinun saada, että vauhtiin.
Joten älä ole huolissasi tee sitä ennen Pset 1, jos et halua.
>> Selvä.
Joten me katsoimme maanantaina lähdekoodia, mutta osana uutta
ohjelmointikieli, nimittäin C. ja C, toisin Scratch, ei ole graafinen.
Se ei ole palapelin palaset.
Se on enemmän Englanti-syntaksi.
Ja siellä on pari askelta mukana vuonna todella kirjoittaa ja käynnissä
ohjelma C, koska lisäksi lähde koodi näin, tarvitset jotain
kutsutaan kääntäjä.
Ja maallikon termein, mitä ei kääntäjä tehdä meille?
Joo.
>> Opiskelija: Se muuntaa koodin että kirjoitat 0 ja 1 s.
>> DAVID MALAN: Hyvä.
Joten se muuntaa koodin, joka kirjoitamme 0 ja 1 s.
Se muuntaa ns lähdekoodin kohdekoodi, joista jälkimmäinen näyttää
vähän jotain tällaista.
Ja se on teidän CPU, aivot sisällä tietokone, että koska
luoneita näillä tietokoneilla tietää, mitä ne sekvenssit
0 ja 1 s keskiarvo.
>> Ehkä se tarkoittaa tulosta.
Ehkä se tarkoittaa lisäksi.
Ehkä se tarkoittaa vähennyslaskua.
Ehkä se tarkoittaa, näyttää graafinen.
On ennalta bittikuvioina että maailma on päättänyt tarkoittaa
tiettyjä asioita.
Mutta suurin osa tämän kurssin, me työtä korkeammalla tasolla, ja
me itsestään selvänä, että on olemassa asioita, kuten kääntäjät, jotka voivat
tekevät lähdekoodin toiminta tavalla aiomme.
>> Joten ohjelma kirjoitimme ensin viime viikolla ja sitten alkoi satamaan, niin
puhua, C viime Maanantai oli tämä.
Kun vihreä lippu napsautetaan, tervehtimään.
Tämä on tietysti kirjoitettu Scratch.
Ja väitin, että vastaava ohjelma C näytti hieman
jotain tällaista.
>> Joten mitä ajattelimme tehdä aluksi on, Katsotaanpa erottaa toisistaan, mikä näyttää ensi
silmäyksellä, tosin sillä melko mystistä syntaksin, mutta voit alkaa huomata
kuvioita melko nopeasti.
Mitä me myös tehdä tänään on tarjota sinulle henkistä mallia jostain
kanoninen, joitakin standardin konstruktioita ohjelmoinnissa.
Ja sitten me itse saada käsiimme likainen joitakin esimerkkejä samoin.
>> Joten ne teistä mukavampaa, ymmärtää, että tällä viikolla ja sitten ensi
viikko saattaa hyvinkin olla hieman tarkistaa.
Mutta varsinkin kun hakkeri painos Ongelman set 1 sammuu
Kurssin verkkosivuilla perjantaina, mielestäni huomaat, että vaikka täytät
joitakin aihioita seuraavan viikon tai kaksi, voit alkaa saada yhä enemmän
haastoi ja kohdata uusia ja uudempia asioita.
>> Joten kiusaa tämä ohjelma eroaa muutama rivi kerrallaan.
Huipulla, meillä on mitä teknisesti kutsutaan
preprocessor direktiivi.
Tämä on vain rivi koodia, joka kertoo sisällyttää tiedoston sisällön,
nimeltään vakio I / N, vakiosyöte - tai, anteeksi, vakio I / O, standardi
input / output,. h sisällä oman ohjelman.
>> Eli toisin sanoen, jos kirjoitin tämän Ohjelma on yksinkertainen tekstieditori, kuten
gedit, yksinkertaisempi vastaa jotain Microsoft Word, että
opetusta, # include stdio.h, on vain kerron kääntäjä, tartu
sisältö että muu tiedosto stdio.h, ja liittää ne täällä.
>> Nyt, miksi hoito?
Mitä me väitämme on sisällä tätä kuvaa kutsutaan stdio.h, joka on tallennettu
jonnekin minun kovalevy, tai tässä tapauksessa jossain CS50 laite?
Joku laittaa sen siellä minua.
Mutta mitä se sisältää?
>> Joo, niin se ilmoitus toiminto nimeltään printf.
Joten printf muistuttaa toiminto näytöt sanat ja merkit ja
numerot ruudulla minun hinnoittelua.
Mutta en kirjoita sitä.
CS50 ei kirjoittanut sitä.
Joku vuosi sitten kirjoitti sen, ja he olennaisesti antoi meille resepti se
tiedosto nimeltä stdio.h.
Niin, että ensimmäinen rivi vain antaa minulle pääsyn toimintoihin, että joku muu
kirjoitti vuotta sitten, joukossa jotka ovat printf.
>> Nyt seuraava rivi aion aalto minun käsi, ainakin vasta ensi viikolla.
Mutta nyt tiedämme, että int main (void) on olennaisesti vastaa tämän
keltainen palapelin pala, kun Vihreä lippu napsautetaan.
Maailman vuotta sitten päätti, että jos kirjoitat ohjelman
kieltä kutsutaan C, aloitat ohjelman kanssa linja
joka näyttää, että.
Vain noin viikon ajan, se tulee tehdä mielessä mitä int on, mitä tyhjiö on.
Mutta nyt vain ajatella sitä koska tämä keltainen palapelin pala.
>> Nyt seuraava, meillä on kihara ahdin jälkeen toisen lähellä kihara ahdin,
niin sanoakseni.
Ja näemme nämä koko ohjelmia C, samoin kuin
JavaScript ja PHP.
Ja nämä vain koteloida liittyvien riviä koodia.
Avoin kihara ahdin olennaisesti sanoo, tässä tulee koodia.
Ja suljettu kihara ahdin, joka on kulma toiseen suuntaan, vain
tarkoittaa, se on siinä vastaavan koodin.
>> Niin mehukas linja tässä ensimmäisessä Ohjelma on viimeinen, printf,
quote-lainaus, hello world.
Ja pyysin asia välillä lainauksia mitä viime kerralla?
Joten se on merkkijono.
Ja merkkijono on vain techie termi sekvenssin
merkkiä, sana, lause.
Jopa yksi kirjain voisi on kaksinkertainen lainattu.
Mutta se on sekvenssin nolla tai useampia merkkejä.
>> Kenoviiva-n, vaikka näyttää hieman outo.
Mutta se tarkoitti yksinkertaisesti sitä jotain yksinkertainen tietokone.
Mitä kenoviiva-n?
Uusi linja.
Joten se on vain erityinen järjestys merkkejä, että maailma on päättänyt
keino laittaa rivinvaihdon oikeassa, koska kääntäjä itse saada
sekava, yleensä, jos hyvin ymmärrettävästi, mutta väärin, vain
alkaa enteriä laittaa uudet linjat koodissa.
Sinun täytyy olla hieman enemmän yksiselitteisenä kenoviiva-n.
>> Ja näemme siellä muutamia muita tällaisia kaavoja erikoismerkkejä.
Esimerkiksi jos halusi anna mieli vaeltaa nurkkaan tapauksessa
Oletetaan, että halusin tulostaa lainausmerkki ruudulla
Jostain syystä, että näyttäisi olla hieman ongelmallista, eikö?
Koska jos laitan kaksinkertainen lainaus keskellä "Hello, world" jostain
Syy, miksi, jotka näyttävät mahdollisesti ongelmallista?
Se rikkoo merkkijono.
>> Kääntäjä on vain ohjelma.
Ohjelma kuten kääntäjä on juuri menossa lukea koodin ylhäältä alas,
vasemmalta oikealle.
Ja jos näkee kolme lainausmerkit sijaan kaksi, se ei tule tietää
Jos tarkoitat, että asia vasemmalle pitäisi olla merkkijono tai asia
oikealle tai koko juttu.
Se on epäselvä, ja niin mitä tyypillinen kääntäjä olisi tehdä, on vain älyttömästi,
ja antaa sinulle virheilmoituksen, ja sinut käsitellä ongelmaa.
>> Joten koska kenoviiva-n tarkoittaa uutta line, mitä olisi vaistosi nyt
alkaa olla jos halusi sisällyttää jotain epänormaalia kuin kaksinkertainen
Lainaan sisällä tässä muuten lainatun merkkijono?
Backslash-lainausmerkki.
Ja niin näemme tämän Tällainen malli liikaa.
>> Jos haluat tehdä jotain hieman outoa, huomaat, että
ratkaisuja usein seurata mallia, ja kenoviiva
tarkoittaa ohjausmerkkijonon.
Ja se tarkoittaa vain sitä jotain erityistä että meidän täytyy edustaa
eri tavalla.
Kuten miten te edustatte kenoviiva hyvin, hyvitämme
palata asiaan.
Mutta vastaus, sekin on oikeastaan hieman selvää.
>> Joten nyt käyttöön joitakin muita ohjelmointi konstruktioita
että näit Scratch.
Olet varmaan itsestäänselvyytenä jo, jos olet jo sukeltanut
Harjoitus 0.
Mutta katsotaanpa nyt esitellä syntaksi C Näiden muuten melko intuitiivinen
ideoita, ainakin osa niistä.
>> Joten tämä käsite kunnossa tai haara, kun aikaisemmin meillä
edustaa sitä koodia, joka näytti näin vasemmalla Scratch -
jos x on pienempi kuin y, niin sanoa -
sijaan nyt C - haluan hioa sisään yksinkertaisimmillaan -
Me olemme todella aikoo sanoa, jos avaa suluissa, jokin on totta -
Boolen lauseke on menossa jos olen sanonut kunnossa -
lähellä suluissa, niin älä mitä sisällä näitä aaltosulkeita.
>> Niin tässäkin aaltosulkeiden ovat ikään kuin Scratch n
U-muotoinen palapelin palaset.
Älä mitä sisällä nämä aaltosulkeita.
Tässä tapauksessa, Slash Slash.
Ja huomaa tämä on eteenpäin slash, ei kenoviiva.
Vinoviiva, vinoviiva, niille, jotka ovat ohjelmoitu
ennen, tarkoittaa vain sitä, -
se on vain mielipide.
Kommentti ei ole linjaa koodia, sinänsä.
Se on linja Englanti, että te, ihmisen, ovat kirjoittaneet itse
ehkä muistuttaa sinua tekemään jotain, jotta selittää itse, selittää
joku muu, mitä koodi tekee.
Se on vain kuvaava kommentti.
>> Nyt tietenkin voimme olla kaksisuuntainen tienhaarasta vain tekemällä tämän,
kolmitie tienhaarasta tekemällä Tämän ja jos jatkat tätä
kuvio, voit olla neljä, viisisuuntaisella, kuusi-tie haarautuu tie, jos
sinun täytyy käsitellä, todellakin, että monia ehtoja.
Ja sitten huomaa rinnakkaisuus täällä -
if (ehto), if (ehto), ja ainoa, joka on hieman
outoa on viimeinen, joka on juuri sitä muuta.
Mutta jälleen kerran, tämä on sama, käsitteellisesti, mitä olemme tehneet
jo, vaikka syntaksi kestää hieman totuttelua.
>> Nyt, tässä esimerkissä, on joitakin muita outoja syntaksin.
Näemme printf uudelleen, alkusulun, ja lähellä suluissa.
Ja sisällä on noteerataan merkkijono.
Sulkeissa yhteydessä printf, mene vasemmalla
ja oikeus mitä?
Mitä me kuvaamme, että lainasi merkkijonon yleisemmin?
>> Joten se argumentti.
Aina kun on toiminto, kuten printf, ja sen jälkeen avoimen paren ja
lähellä kantatuote ja jotain sisällä se, onko se merkkijono, tai
kokonaisluku, tai jotain muuta, asia välillä suluissa kutsutaan
argumentti.
>> Ja argumentti juuri vaikuttaa funktion käyttäytymistä.
Tässä tapauksessa se on melko selvää miten.
x <y on mitä on kulunut, niin sanotusti, koska argumentti.
Ja printf on menossa tulostaa juuri sitä.
Koska varmasti, henkilö vuotta sitten jotka toteutetaan printf ei ollut aavistustakaan
mitä me ihmiset seuraajien aio käyttää printf varten.
Joten siksi argumentteja olemassa, vaikuttaa käyttäytymiseen jälkeen funktion
on kirjoitettu.
>> Nyt, Boolen lauseke.
Olemme nähneet näitä ennen Scratch.
On käynyt ilmi, C voit myös "tai" ne yhteen, niin sanoakseni.
Kaksi pystypalkit tarkoittaa, että tämä lohko koodia, tämä tehdä tämän, tulee
suorittaa, jos ensimmäinen ehto on tosi tai toinen ehto on tosi.
Ja vaikka et ehkä ole tehneet Tämän Scratch, voisit todellakin
tehdä tämän Scratch, ja voit myös ilmaista itseäsi eri tavalla -
jos ensimmäinen edellytys ja toinen kunnossa ovat totta, niin älä mitä
sisällä aaltosulkeiden.
>> Ja aivan kuten syrjään, syy on kaksinkertainen et-merkki ja kaksinkertainen
pystypalkissa näemme lopulta että yksi pystysuora palkki ja
yhden ampersand todella ovat erilaisia tarkoittaen C. Joten nyt
että päällekkäisyyttä symbolit on tahallinen.
>> Joten esitellä lyhyesti, tämä toinen vähän syntaksin.
Tämä ei ole aivan tehdä yli Scratch, mutta väitän, että voin
toteuttaa käsite, jos muuta, jos muu, jos muu, jos muu selvitys käyttäen
jotain kutsutaan kytkin selvitys.
Ja ainoa syy tähän on oikeasti olemassa on vain antaa sinulle, ohjelmoija,
hieman erilainen tapa ratkaista joitakin ongelma, vaikka loogisesti
ei anna sinulle mitään uusia ominaisuuksia.
>> Tällä tarkoitan tätä.
Kun sanot kytkin, ja sitten tilaa, ja sitten pari suluissa sisällä
josta menee ilme -
ja tämä saattaa olla hieman ei-ilmeinen aluksi, mutta tämä ei ole peruste,
teknisesti, koska kytkin ei ole toimintoa.
Joten nyt, vain olettaa, että käytämme Suluissa eri paikoissa
eri syistä.
>> Niin kytkin ilmaus tarkoittaa voin laittaa muuttuja sisällä näitä
Suluissa jossa sanotaan ilme.
Ja sitten jos muuttuja -
kai sitä kutsutaan x ja se on vain kokonaisluku -
Voin sitten luetella minun slide täällä jotain tällaista.
Jos x on minun vaihteleva, ja minä haluavat tehdä jotain, jos x
on 1, voin tehdä sen.
>> Jos minä sen sijaan haluavat tehdä jotain jos x on 2, voin tehdä sen.
Else, jos haluan tehdä jotain muuta kokonaan, voin olla oletuksena tapaus
jolloin minä teen tämän toinen asia.
Joten siinä mielessä, se vastaa jos x vastaa yhtä 1, if muuta,
mutta mainitsen tässä nyt vain siksi, näemme sen uudelleen.
Mutta nyt, vain tietää, että se on olemassa.
>> Selvä.
Joten nämä viimeiset pari ovat hieman monimutkainen ensi silmäyksellä, mutta ne
jotain melko yksinkertaista.
Silmukka C on kimpale koodi, joka vain tekee jotain uudestaan ​​ja
uudelleen ja uudelleen.
Ja vain ärsyttävää asia on se on, että se on hieman arvoituksellinen
ilmaista itseäsi tässä suhdanne kuvio, mutta maailma standardoitu
seuraavalla tavalla.
>> Kun käytät silmukan, sinulla pari suluissa uudelleen.
Ja huomaa kaksi puolipisteet siellä.
Nämä kaksi puolipisteet erillistä kolmen eri ilmenemismuotoja sisällä
suluissa.
Yksi on ns alustukset.
Yksi on ns kunnossa.
Ja yksi on ns päivityksiä.
>> Tarkasteltava abstrakti, tämä on täysin ei-ilmeinen, joten katsotaanpa
klo konkreettinen esimerkki.
Scratch meillä oli toista lohko.
Ja tämä lohko sanoi toista 10 kertaa, sano "Hei, maailma." Saanen vaatia
nyt, ja me palaamme tähän, ja Tämäkin saavat tutumpia
olet ennen pitkää vastaa C koodi voisi sanoa olevan tämän -
Lausuntopyyntö ja tilaa, pari suluissa, huomaa Puolipisteitä
siellä, jotka erottavat kolme erillistä asiat, alustuksen
kunnossa, ja päivitys.
>> Ja arvaa mitä Ensimmäinen tekee.
Int i = 0.
Kovassa Maallikon termein, mikä on että tekee meille, luultavasti?
Niin joo.
Se julistaa muuttuja nimeltä i, ja se antaa sille mitä arvoa?
0.
Joten se luo muuttuja nimeltä i, tallentamiseen arvo 0 sitä.
Se on ns alustuksen.
>> Okei, nyt olen väittänyt ennen että keskellä asia, i
<10, on kunnossa.
Joten mitä teet?
No, mitä varten silmukka tekee, kun ohjelman silmukka suoritetaan, on
aina, kun tietokone kulkee Tämän silmukan, ylhäältä alas, ylhäältä
pohja, aivan kuten teitte kaverit kun laskenta itsenne ja istuu alas,
uudestaan ​​ja uudestaan ​​ja uudestaan, tietokone on menossa
tarkistaa, että kunnossa.
Ja jos i on pienempi kuin 10, se tulee tehdä uudelleen.
Jos i on pienempi kuin 10, se tulee tehdä uudelleen.
Jos i on pienempi kuin kymmenen, se tulee tehdä uudelleen.
Niin, että vaikuttaa siltä, ​​että Toivottavasti on muuttumassa.
Muuten olisimme päättymättömään silmukkaan.
Ja todellakin, i on muuttumassa, koska Viimeinen asia jälkeen puolipiste siellä
on hieman arvoituksellinen syntaksin i + +.
Mutta ne teistä, jotka olette tehneet tämän ennen, että vain sitä,
yksinkertaisesti mitä?
>> Opiskelijat: [interposing ÄÄNTÄ].
>> DAVID MALAN: Lisää 1 i.
Kasvattaa i.
Joten näimme Scratch palapeli pala, että todellisuudessa.
Se ei näyttänyt i + +, mutta vain tarkoittaa yksinkertaisesti, lisäys
Arvostamme i 1 aina teet tämän.
Niin kirjaimellisesti, aloitat alustetaan i 0.
Sitten tarkistaa kunnossa.
On 0 vähintään 10?
Kyllä.
Käymme läpi silmukka.
>> Seuraava asia Väitän tietokoneen aikoo tehdä, on se menee
kasvattamaan i.
Joten olen nyt 1.
Se tarkistaa kunnossa.
On 1 vähemmän kuin 10?
Tietenkin.
Joten se uudelleen.
Sitten se välein i + + 2.
On 2 alle 10?
Kyllä.
Ja uudestaan ​​ja uudestaan ​​ja uudestaan.
Ja lopulta, koska plus-plussing, saamme i vastaa 10.
On 10 vähemmän kuin 10?
No, ei tietenkään.
Ja se piste, jossa silmukka vain lakkaa.
Ja jos sinulla on enemmän koodia näytön alhaalla, tietokone
etenee suorittaa kyseisen koodin sijasta.
>> Joten jälleen, vaikka tämä on menossa näyttää ja tuntuu hieman oudolta
Ensimmäinen, varmasti niille, jotka ole koskaan ohjelmoitu aiemmin, se
kirjaimellisesti vähentää käsitteellisesti mitä on muuten hyvin
suoraviivainen palapeli pala Scratch.
>> Okei, lupasin, että osaisimme olla muita analogit Scratch.
On tämäkin.
Ja näimme tämän hetken viimeisen kerran.
Mutta muista ikuisesti estää Scratch?
Se vain tekee jotain ikuisesti?
Olen väittänyt, että voisit toteuttaa tämä tällä tavalla.
Ja voit itse toteuttaa tämän vuonna joukko eri tavoin.
>> Mutta kun silmukka on vain erilainen miten C ilmaista itseäsi.
Lopussa päivän, et voi tehdä mitään kun silmukka, joka olet
voi eikä silmukka.
Joten he lopussa päivä toiminnallisesti sama.
Mutta sen avulla voit ilmaista itseäsi hieman eri tavalla
seuraavalla tavalla.
>> Kun taas silmukka, se mitä on Suluissa joka tarkistetaan uudelleen, ja
uudelleen ja uudelleen.
Ja heti kun lauseke on epätosi, Sitten silmukka pysähtyy täytäntöönpanosta,
ja tietokone etenee ajaa mitä muita koodin
ovat tiedosto.
>> Mutta mitä mielenkiintoista täällä että olen kirjaimellisesti kirjoittanut totta.
Ja totta on eräänlainen loogisen arvon, tosi tai epätosi.
Joten voisi totta koskaan tulla epätosi, jos olen kirjaimellisesti
koodannut se minun ohjelma?
Joten ei.
Se on vähän outoa, että tein tämän.
Mutta totta on totta.
Ei ole plus-plussing.
Ei ole muuttujien käyttöä täällä.
Joten koska olen koodannut vaikka totta, tämä silmukka on aina menossa arvioida
uudestaan ​​ja uudestaan ​​ja uudestaan.
>> Eli kuinka monta kertaa on hello world painoon ruudulla?
Ikuisesti.
Lukemattomia kertoja, kunnes akku kuolee tai muu ulkoinen
tapahtuma tapahtuu.
Joten tämä ei luultavasti ole paras ohjelma kirjoittaa, koska jos käyttäjä
voi koskaan lopettaa ohjelman, se on luultavasti ole sitä, mitä on tarkoitettu.
>> Mutta joskus, ohjelmien olisi on päättymättömään silmukkaan.
Esimerkiksi, jos tietokoneessa on kellon, se varmasti olisi
mukavaa, jos kellon se pitää päivittää itse ikuisesti, vaikkakin kerran
toisen tai minuutin välein tai jotain.
Joten vaikka ääretön silmukoita eivät ole niiden paikka.
>> Selvä.
Lopuksi tämä.
Ja tämä on hieman erilainen toiminnallisesti, ja tulemme takaisin
tämä luultavasti Pset 1.
Mutta on olemassa toinen tyyppi silmukka kutsutaan tehdä, kun silmukka.
Ja ainoa ero tässä välillä tehdä, kun silmukka ja vaikkapa while-silmukka,
on, että ehdon täyttymistä valvotaan ole ennen kuin suorittaa koodia, mutta sen jälkeen
voit suorittaa koodia.
Joten huipulla taas silmukka, kun taas tehdä, kun
tarkistaa sen alareunassa.
>> Ja tämä tarkoittaa vain sitä, että kun silmukka tyypillisesti suorittaa kertaa
tai vähemmän kertaa kuin while-silmukka?
Mahdollisesti useamman kerran, koska eivät kun silmukka on selvästi sanoo tähän,
minkä jälkeen vasta kohta sinua tarkistaa Jos ehto sisällä
Suluissa on totta.
>> Niin näemme tämän uudelleen luultavasti Pset 1.
Jos haluat joskus tehdä jotain vähintään kerran ja sitten ehkä jonkin verran enemmän
kertaa, tämä on hyvä rakentaa käyttää.
Mutta kun silmukka, sen sijaan tulee tarkista sen kunto ensin.
Ja se on siinä silmukoita C, älä samalla, kun taas, ja silmukoita.
Ja vielä, he map melko mukavasti takaisin raapia, paitsi tämä yksi ei
aivan sama analoginen Scratch.
>> No, entä nyt, muuttujia?
Joten tämä on, miten julistettu muuttuja syntaktisesti toinen päivä.
Minulla oli int, joka väitin on kokonaisluku.
Sitten oli muuttuja nimeltä laskuri, ja sitten puolipiste.
Joten mitä tämä rivi koodia teet?
Tämä on yksinkertaisesti julistaa muuttuja -
että on, kysyy tietokone, anna minulle muistia, antaa minulle bittiä - vuonna
jota en voi tallentaa mitä?
Int.
Ja puolipiste tarkoittaa vain sitä, loppuun riviä koodia.
>> Nyt, toisella rivillä on luultavasti melko guessable.
Mikä on laskuri = 0; teet?
Se osoitetaan 0 torjumiseksi.
Ja niin tämä on toinen asia joka on hieman ärsyttävää
vs. vaikkapa algebran.
Kun taas algebran, yhtäläisyysmerkki merkitsee vastaa, täällä C, yhtä
merkki tarkoittaa tehtävän.
Niin se tarkoittaa laittaa mitä on oikealla , mitä on vasemmalla.
Ja näemme toisen symbolin, vastaa vastaa, kun haluamme todella testata
laatua, hieman ärsyttävän.
>> Mutta tämä on hieman tehotonta.
Se on tavallaan harmittaa, että minulla on julistaa muuttuja ja
sitten antaa sen arvon.
Joten C todella antaa meille yksinkertaistamiseksi ja tee se kerralla.
Voit ilmoittaa muuttujan vasemmalla.
Voit silti tehdä luovutettavaksi aivan laittamalla että yhtäläisyysmerkki
keskellä.
Joten loppujen lopuksi, nämä kaksi ovat vastaava, mutta tämä yksi, rehellisesti,
on luultavasti parempi tapa päästä vain koska se on hieman vähemmän
koodia, se on hieman helpompi lukea, ja se vain kiristyy
koodia, niin sanoakseni.
>> Kaikki kysymykset on toistaiseksi silmukoita, Muuttujia, olosuhteista, on
Booleans joko teknisesti tai käsitteellisesti?
Selvä.
Joten nyt tämä seuraava kukaan hieman mielenkiintoisemman.
Ja tämä on esimerkki Laitoin viime aika vain kartoittaa Scratch esimerkki
yli C.
>> Niin funktio.
Maallikon termein, mitä funktio?
Täytyy olla rohkeampia vastauksesi.
Mikä funktio?
>> Opiskelija: Onko jotain.
>> DAVID MALAN: Mikä tämä on?
>> Opiskelija: Onko jotain.
>> DAVID MALAN: Onko jotain.
OK.
Aloitamme siellä.
Joten toiminto tekee jotain.
Joten se on koodinpätkä, joka on toteutetaan pääosin muualla, että
todellakin tekee jotain.
Nyt, mitä mielenkiintoista toiminto on, että se voi ottaa tulo,
ja se voi tuottaa lähdön.
Ja antaa todella ottaa Katsokaa tätä.
>> Joten mies verhon takana oli tahallinen hetki sitten.
Täällä meillä on pöytä.
Mutta oletetaan, että tämä todella edustaa iso laatikko.
Joten tämä on niin sanottu musta laatikko.
Ja yleensä, suunnittelu, atk tiede, mustat laatikot vain viitata
kappaletta toiminnallisuutta, että joku on toteutettu, ja et
välttämättä tiedä tai välitä siitä, miten se on täytäntöön alla huppu.
Sinä vain välitä siitä, että tämä musta laatikko, jotka me nyt aloittaa kutsuvan
toiminto, tekee jotain.
>> Niinpä esimerkiksi, jos tämä musta laatikko vaiheessa täällä edustaa printf,
toiminto, tiedän Aikaisemmissa että Printf ottaa yhden tai useamman
argumentteja, ja ensimmäinen näistä väitteet pitäisi olla merkkijono, kuten
"Hei, maailma." No, jos olen henkilö kirjallisesti ohjelma, ja haluan
käyttää printf, I, esimerkiksi voisi ottaa pala tyhjä paperi täällä
mustalla tussilla ja kirjoita siihen -
I väärin kirjoitettu "maailma" -
H-E-L-L-O.
>> Joten Otan mustalla tussilla ja minä kirjoittaa, niin iso ja selvästi kuin voin päälle
tämä pala paperia "Hello, world" Ja nyt Väitän tämä on minun argumentti.
Tämä on merkkijono edustettuina valkoiselle paperille.
Ja minun panos nyt toiminto printf tulee olemaan tämän.
Joten kehotan printf, kulkee Tämä väite syötteenä sitä.
>> Ja nyt, en tiedä miten henkilö kirjoitti printf teki sen vuosia sitten, mutta
En tiedä sen ohjeista sen tarkoitus elämässä on tulostaa mitä
toimittamaan sille syötteenä.
Ja niin, vaikka tämä toteutus on tietämättä minulle
alla huppu, nyt Näen, oh, se tehdään.
Se on painettu jotain ruudulla.
Ja nyt hallita ohjelmaa, jos olivat riviä koodia, olisi
ovat nyt palanneet minulle.
Ja niin, että Colton -
siunatkoon hänen sydämensä, on piilossa tässä alla taulukko edessä kaikille teille -
on tahallista, että en tiedä ja en välitä miten printf on
täytäntöön.
Tiedän vain, jälleen, sen dokumentointi, mitä se tekee ja miten
Olen tarkoitus käyttää sitä.
>> Nyt muistaa, että printf voisi saada hieman kehittyneempiä.
Jälleen me vain puhumme vastaa Scratch n Say lohko.
Mutta tein myös viimeisen kerran.
Halusin tehdä minun hei-ohjelma hieman dynaaminen eikä vain kovaa
koodi jotain "maailmassa" ja varmasti ole vaikeaa koodia jotain
mielivaltainen, kuten D-A-V-I-D ohjelmaan.
Halusin kysyä käyttäjältä hänen nimi, ja sitten tehdä jotain
merkkijonon, että ne tarjoavat.
>> Joten siellä on jotain hieman erilaista tässä. printf, hetki sitten,
ei todellakin tehdä jotain, mutta se ei palannut minulle mitään.
Oikea?
Colton ei ojentaa minulle mitään takaisin, ei pala paperia.
Oli vain sivuvaikutus.
Oma tarjoamalla "Hello, world", kuten argumentti Colton johti
haittavaikutus sana, joitakin sanoja, näy ruudulla.
>> getString on kuitenkin hieman erilainen. getString on myös
toimiakseen, mutta se palaa jotain arvoa.
Se ei ole vain esteettinen sivuvaikutus.
Se itse asiassa antaa minulle, henkilö soittamalla tai käyttämällä toimintoa,
jotain takaisin.
Joten tässä tapauksessa, getString on maksoi getString auki
kantatuote, lähellä paren.
Onko getString siis ottaa mitään väitteitä tai tulo?
Ei, se ei tunnu.
Sen tarkoitus elämässä on vain saada merkkijono.
Se ei tarvitse tarkemmin kuin että.
Joten anna minun mennä eteenpäin ja teeskennellä, että uudelleen, tämä musta laatikko ei printf,
mutta getString, ja haluan, henkilö Kirjoitan tämän ohjelman avulla tai soittaa
getString vain kirjallisesti G-E-T-S-T-R-I-N-G, avoin paren lähellä
kantatuote, getString.
>> Nyt minulla ei ole aavistustakaan siitä, miten CS50 henkilöstö täytäntöön getString, mutta tiedän, että
jos en odota tarpeeksi kauan, se tekee asia alla huppu, ehkä käyttäen
joitakin muuttujia, ehkä käyttää joitakin olosuhteissa, ehkä käyttää joitakin silmukoita,
ehkä joidenkin muiden toimintojen, ehkä käyttäen -
vain yrittää pysähtyvän - ehkä käyttäen joitakin muita ohjelmointia.
Mutta jos odottaa tarpeeksi kauan - todellisuudessa tietokoneella, tämä tapahtuu
huippunopea -
jos en odota tarpeeksi kauan, tämä toiminto getString on menossa merkkijono
käyttäjältä, joka on oletettavasti kirjoittamalla sitä niiden näppäimistö ja
sitten, kun getString tehdään tulossa ne merkit käyttäjältä
ja tallentaa ne merkkijonon, joka toiminto, getString, joutuu
valmis minulle tuotanto, jota olen aio hakea Poiketen
sijoitusoperaattori.
>> Ja vaikka minä menen todellakin tulee lähtö täällä, Obosi on anteliaasti
osallistui, tietämättä tämän etukäteen, kirjoittamalla hänen nimensä päälle tämä
muuttuja, joka edustaa merkkijono.
Nyt sijoitusoperaattorin tarkoittaa, vaikka vaikka tämä saattaa tuntua hieman
tarpeeton, olen todella tarvitsevat tehdä oman kopion tästä.
Koska vasemmalla puolella - oho! -
huomaan lähinnä on merkkijono nimen vasemmalla puolella.
Joten olen myös menossa tekemään oma kopio tästä.
Ja tämä on hieman valkoinen valhe, koska näemme viikon tai kahden n
aika, että jouset eivät oikeastaan mitä ne näyttävät olevan.
>> Mutta nyt, tässä on palauttaa arvon.
Tässä on oma kopio jälkeen käyttäen sijoitusoperaattori.
Ja nyt, mitä haluan tehdä seuraavaksi?
Meillä on nyt toinen kaksi riviä koodia.
Joten en nyt halua kutsua printf.
Teeskennelläänpä nyt, että musta laatikko on jälleen olemaan
printf eikä getString.
>> Printf tällä kertaa on menossa ottaa kuinka monta argumenttia?
Joten katso, se on kuin kaksi.
On kaksi pilkkuja siellä, mutta yksi niistä pilkkuja, se on
sisällä lainausmerkkejä.
Joten ensimmäinen argumentti on kirjaimellisesti olemaan tämän.
H-E-L-L-O, pilkku, prosenttia s, kenoviiva-n.
Ja nyt olen tarjoamalla ole yhden argumentin, mutta kaksi väitettä printf.
>> Ja mitä printf pitäisi tehdä Näiden kahden tulon jälkeen jätän ne
argumentteina?
Se on tarkoitus ottaa toinen niitä, jotka kutsuin nimi, joten
Toinen paperi Kirjoitin ulos hetki sitten kutsutaan nimellä.
Se tulee pistoke arvon sisällä Tämän muuttujan paikanvaraajassa
% S, joten taas vain hetken aikaa, näemme sivuvaikutus
kutsui printf, jossa nyt olemme näe "Hello, world", mutta "hei,
Obosi. "
>> Joten aplodit molemmille meidän vapaaehtoisille, joista vain yhdellä tiesi
tämä olisi tapahtunut.
Selvä.
Niin, ehkä, yksinkertaista oli, varmasti, jos olet jo tuttuja
niin, toivottavasti et koskaan unohtaa, että erityisesti visuaalisen miten
toiminnot toimivat.
>> Joten siellä on enemmän kuin vain getString.
Sisällä CS50 kirjasto, siellä koko joukko toimintoja, jotka kaikki
aktivoidaan vain tehdä selväksi että me kirjoitimme nämä toiminnot.
Tyypillisesti C, lähes joka toinen toiminnon voit käyttää on pieniksi.
Mutta me tietoisesti käyttää isoja kirjaimia vain tehdä selväksi, että nämä
ovat apupyörät tapaisena, että me käyttää vain muutaman viikon, että
yksinkertaistaa prosessia saada käyttäjän syötettä.
>> CS50 kirjasto ei tee mitään että te itse voinut tehdä by
vain käyttämällä C-koodia oldschool oppikirja.
Mutta jälleen kerran, käytämme niitä koulutus pyörät tapaisena vain pari
viikkoa, jotta voimme päästä eroon monimutkaisia, että huomaa pian,
itse tehdä jotain niin suhteellisen yksinkertaista kuin saada
panosta käyttäjä.
>> Niin tiedät, että sinulla on oikeus to getchar, GetDouble -
kaksinkertaistuu.
What's - ja sitten GetFloat.
Mitä kellua?
Aloitetaan siellä.
>> Opiskelija: [kuultavissa].
>> DAVID MALAN: Joo.
Se on numero desimaalipilkun.
Joten taas int on kokonaisluku, joka on vain numero 0 kautta 9,
jotkut toistojen määrä artiklan, float on jotain
kanssa desimaalin tarkkuudella.
Ja kaksinkertainen puolestaan ​​on myös numeron desimaalipilkun, mutta enemmän
jälkeiset numerot desimaalin kohta, mahdollisesti.
>> Joten saamme takaisin tämän ennen pitkää.
Mutta tyypillisesti kukin tämäntyyppisiä tietoja, jokainen näistä tyyppisiä muuttujia
että kirjasto kaltaisiamme voi palata sinua, käytä eri määrä bittejä
tallentaa tietoa.
Tyypillisesti Char, joka tarkoittaa vain sitä yhden merkin, käyttää 8 bittiä.
Ja se todella vastaa meidän tavu vapaaehtoisia viime viikolla, jotka
tuli ja oli yksi ASCII-merkki kerrallaan.
Joten Char on 8 bittiä.
>> Float sattuu olemaan 32 bittiä, tyypillisesti.
Ja kaksinkertainen, kuten arvata saattaa, on oikeastaan ​​64 bittiä, joka on vain enemmän,
eli voit olla isompi numeroita tai enemmän tarkkuutta.
Mutta jälleen kerran, siitä lisää toisella kertaa.
GetLongLong, välin, vaikka stupidly nimeltään, on oikeastaan ​​vain
kokonaisluku, joka on kaksi kertaa niin suuri, kaksi kertaa pitkä, mahdollisesti, sillä säännöllinen
kokonaisluku, 64 bittiä sijasta 32.
Ja getString olemme käyttäneet.
>> Mutta näyttää siltä, ​​että CS50 kirjasto, joka on toteutettu, kuten tulemme näkemään, vuonna
muodossa kaksi tiedostoa, joista toinen kutsutaan cs50.h, on kaksi muuta
tietotyyppejä sitä.
Booleans ei ole olemassa C. Voit simuloida niitä vain käyttämällä 0 ja 1 s
koko ohjelmia.
Mutta me CS50 kirjasto ovat luoneet symbolit "tosi" ja "epätosi"
edustaa 1 ja 0, joten et on kova koodi jotain
kirjaimellisesti kuin 1 ja 0.
Mutta näemme ne uudelleen.
>> String, liian, ei ole olemassa.
Ja siksi mainitsin se on hieman valkoinen valhe nyt.
Mutta me kuori takaisin, että kerros ennen pitkää.
Mutta nyt, merkkijono on merkkijonoa.
>> Samaan aikaan C, voit todellakin on erilaiset tiedot.
Huomaa nämä ovat pieniä.
Joten toiminnot näit hetki sitten ovat toimintoja kirjoittanut CS50, että
palaa luoksesi arvo laskee johonkin näistä luokista.
>> Pari huijata arkkia vain istuttaa siemen tässä. printf ei vain
ota% s paikkamerkeiksi.
Se vie% d desimaalin kokonaislukuja, tai% i toimisi samoin.
% F liukuluvuiksi. % C on char, jos haluat vain liittää yhteen
merkin osaksi alustettu merkkijono kuten olemme tehneet, voit käyttää% c.
>> Ja sitten, hieman ärsyttävän,% lld on pitkään, pitkään desimaalin kokonaisluku,
joka vain tarkoittaa, jos tarvitset todella suuri määrä ja käytät jotain
nimeltään pitkään pitkään, mikä tulemme takaisin vuonna PSET, voit käyttää% LLD: lle
Kerro printf, kytke todella iso kokonaisluku täällä tavalla sen toisen tai
joitakin muita argumentti.
>> Ja lopuksi, lupasin, että siellä on muutamia muita paeta
sekvenssit printf tukee.
Olemme nähneet kenoviiva-n.
Backslash-r saatat nähdä.
Se on eräänlainen vanhan koulukunnan juttu.
Jos olet koskaan käyttänyt todella kirjoituskone vuotta sitten ja olet veti kampi
joka ei vain kääntää pyörää Siirrä kokoonpanolla, sillä myös siirrettiin
Koko juttu aina takaisin yli vasemmalle, hyvin, kenoviiva-r juuri
lähinnä siirtää kohdistimen takaisin alkuun linja
siirtämättä sitä alas.
Mutta jälleen kerran, siitä lisää, ehkä tulevaisuudessa.
>> Kenoviiva-lainaus, kenoviiva-lainausmerkki, kenoviiva-kenoviiva on
ratkaisu pikku arvoitus Viittasin aiemmin.
Ja kenoviiva-0 on oikeastaan varsin mielenkiintoinen.
Mutta me palaamme että ennen pitkää.
>> Joten anna minun mennä, nyt CS50 laitteen, ja nyt itse tehdä
nopeasti lämmetä yksi esimerkeistä teimme jo ja sitten siirtyä
jotain hieman monimutkaisempi.
Joten jos avaan minun ohjelma nimeltään gedit -
tämä on minun graafinen editori.
Ja voin tehdä sen -
Lopuksi haluan, että ikkuna on -
Poiketen tätä kuvaketta tänne, gedit, että vasemmassa alakulmassa
nurkassa vieressä valikosta.
>> Aion mennä eteenpäin ja eteenpäin, ja tallentaa esimerkiksi sanokaamme John
Harvardin kansioon.
John Harvardin kansio on vain kotiinsa hakemisto, jossa kaikki hänen tiedostoja elää
oletuksena.
Ja aion tallentaa tämän tiedosto nimeltä hei-0.c.
Ja olen valinnut tämän nimen vain niin se on linjassa näytteen koodi
Kurssin verkkosivuilla ja YouTube-videoita verkossa.
>> Joten nyt aion alkaa kirjoittaa ensimmäinen ohjelma.
Saanen suurentaa luettavuutta.
Ja aion mennä eteenpäin ja sanoa int Tärkeimmät mitätön, joka on juuri tuollainen
keltainen palapelin pala, että alkaa ohjelma.
Olen ottanut tavaksi yli vuotta avaan kihara ahdin, sitten
myös sen sulkeminen ja sitten menee takaisin missä haluan laittaa koodia, vain
koska se auttaa minua pitämään kaiken tasapainoinen, varsinkin kun minun
ohjelma saa pitkä.
>> Ja nyt, täällä, aion mennä eteenpäin ja sanoa, printf, lainata lainaus,
hello world, kenoviiva-n, lähellä lainaus, lähellä suluissa, puolipiste.
Joten olen vain toistaa kaikki olemme toteuttanut jo myönnetty toistaiseksi.
Nyt aion loitontaa.
>> Ja tämä pääteikkunaa tänne, mitä Voinko tehdä tämä musta
ja valkoinen ikkuna?
Mitä voin käyttää sitä?
Joten tässä minä ajaa komentoja ja jossa voin koota asioita.
Ja aion pitää yksinkertaisena.
Aion käyttää ohjelmaa nimeltään Make, joka ei ole
teknisesti kääntäjä.
Kääntäjän nimeltään kalahtaa, mutta Palaamme tähän asiaan
viikon tai kahden kuluttua.
>> Nyt olen juuri menossa kirjoittaa tehdä hei-0, Mutta ne teistä, jotka olivat
vertaamalla mielessänne mitä vain kirjoitettu, mitä minun olisi pitänyt kirjoittanut voi
tiedämme jo, että tein jotain pielessä.
Nyt siellä on selvästi joitakin virheitä.
Ennen kuin edes katsoa, ​​mitä he ovat kaikki ajatuksia, mitä tein väärin?
>> Opiskelijat: [interposing ÄÄNTÄ].
>> DAVID MALAN: Joo.
Olen puuttuu kirjaston header-tiedosto.
Mikä tahansa näistä. H tiedostoja kutsutaan header tiedostoja, ja ne yhdessä
kuuluvat asioita kutsutaan kirjastot.
Kirjastot ovat vain paloina koodia että muut ihmiset kirjoittivat.
Joten standardin [? i?] kirjasto on kokoelma tiedostoja, jotka sisältävät koodia
että muut ihmiset kirjoittivat.
>> Joten olen puuttuu se.
Miksi saan virheen?
No, minäpä vierittää takaisin ylös minun terminaali-ikkuna täällä.
Ja valitettavasti, C, kuten paljon ohjelmointikieliä, erityisesti
jos se kaikki sinulle uusi, virhe viestit ovat täsmällisiä, mutta ne ovat myös
melko arvoituksellinen.
Ja virhe täällä, punainen, on "Implisiittisesti julistaa kirjastofunktion
printf tyypin "ja sitten se rullaa seuraavalle riville "int const char *,
... "Se vain saa todella ylivoimainen nopeasti.
>> Mutta mitä pitäisi alkaa tehdä, jos taas uusi kaiken tämän, on vain
alkaa etsiä avainsanoja.
On selvää, en ehkä ymmärrä puoli sanojen näen vielä.
Et, vaikka, viikon ajan.
Mutta näen printf.
Ja että pitäisi alkaa ennen pitkää, että hölkätä muistisi, okei, printf.
Jotain vikaa printf.
Teinkö kirjoittaa väärin?
Ei, se ei näytä - oh.
En voi käyttää sitä, jos opetan kääntäjä, että se on olemassa.
Ja niin taas mennä vaistosi, vaikka et itse ymmärrä
todellinen virheilmoituksia.
>> Ja todellakin, ratkaisu tässä vain sisällyttää sen yläreunassa tiedosto
niin, resaving minun tiedosto Ohjaus-S tai File-valikosta.
Ja jos minä nyt takaisin tänne, Aion tyhjentää.
Ohjaus-L on vain mukava tapa Tyhjennä näyttö.
Ja sitten aion kirjoittaa "tehdä hei 0 "Anna, ja nyt näen yhä
kryptinen symbolien sekvenssi, mutta Palaamme tähän.
Sitähän Tee tekee sinulle.
Se automatisoimalla ottaen melko ärsyttävää komennon mukana
Kalahtaa, todellinen kääntäjä.
Mutta se, että minulla ei ole virheitä tarkoittaa että tämä asia pitäisi toimia.
>> Joten olen nyt menossa tehdä - haluaisin suurentaa uudelleen -
./hello-0 Anna, ja todellakin, näen "Hei, maailma." Joten nyt parantaa
tämä koskaan niin hieman vain jäljitellä vaiheet halusimme.
Aion nimetä tätä Tallenna nimellä hello1.c.
Ja nyt aion julistaa muuttuja kutsutaan nimellä, niin merkkijonon nimi
ja aion laittaa sen arvo quote-lainaus
D-A-V-I-D close-quote puolipiste.
Ja nyt aion korvata "maailma" mitä paikanpitäjä merkkijono?
% S.
>> Ja nyt, kuinka monta argumenttia tulisi printf ottaa tällä kertaa?
Joten kaksi.
Joten menen ulkopuolella lainausmerkkejä.
En kirjoita "name" pilkun jälkeen.
Mutta olen tehnyt jotain muuta vikaa tällä kertaa.
Mutta oletetaan, että en ymmärtää, että vielä.
Päästä minut tänne.
>> Ja ilmoitus, minäkin saan vähän kyllästynyt kirjoittamalla "tehdä hei 0" kaikki
aikaa "tehdä" ja kaikki tämä.
Niin, se kääntyy pois, ja Linus voit usein osui nuoli ylös teidän
näppäimistö, ja voit itse selata läpi kaikki komennot, että olen
suoritetaan ennen juuri nyt.
Joten jos teen sen, ylös, ylös, siellä tehdä hei 0.
En halua, että.
Haluan vain vaihtaa sen hei 1 tällä kertaa, Anna.
Lopulta, että tulee säästää aikaa.
>> Selvä.
Valitettavasti siellä on virhe.
Joten anna minun selaamalla ylöspäin.
Tämä näyttää todella teurasti ohjelman.
Tarkoitan, minun Jumalani, se on kaksi riviä koodia, ja sen 10 riviä virheitä.
Mutta katsokaa alkuun ensin.
Käytä pimeän tunnisteen merkkijono.
Teinkö tarkoita tavallinen i n?
Ei en.
Tarkoitin merkkijono.
>> Mutta missä on merkkijonomuuttujaa tyyppi julisti, dd sanomme?
Joten se on CS50 kirjastoon.
Joten se ei riitä, kun nämä ensimmäiset pari viikkoa, vain käyttää
mitä C antaa meille.
Olen myös menossa täällä, ja minä laittaa sen ylä-tai alapuolella, mutta minä
vain pitää se aakkosjärjestyksessä pitää asiat hallitusti.
Aion myös cs50.h, joka on esiasennettu
sinut CS50 laitteen.
Ja se on avoimen lähdekoodin, joten vaikka ihmiset Internetissä voi käyttää niiden
omat tietokoneet.
Mutta se tulee CS50 laitteen.
>> Joten nyt haluan mennä takaisin ja kääntää tätä tehdä hei 1.
Hitto.
Vielä toinen virhe.
Saanen siirry ensimmäiseen, vaikka.
Tämä yksi on hieman monimutkainen.
Multi-merkki merkin vakio.
Se ei auta minua.
Mutta huomaa, kalahtaa on ainakin hieman bittinen kunnon, jolloin hieman
vihreä caret symboli, se sanoo tässä on, jos minä mokasin.
Miksi se osoittaa, jossa on tavanomaista vihreä nuoli, on yksi tarjous ensi
nimeni?
>> Joten tämä on yksi niistä asioista, juuri tottua, varsinkin jos olet ollut
ohjelmointi Python, tai JavaScript, tai muita kieliä, jos tämän yksityiskohdan
ei ole väliä.
C, sillä on väliä.
Jos julistaa merkkijono, joka on sarja 0 tai useampia merkkejä,
todella täytyy käyttää lainausmerkkejä.
Joten en oikeastaan ​​tarvitse muuttaa takaisin Avaa lainaus, lähellä lainaus, jossa
lainausmerkkeihin.
Puolilainausmerkkejä eivät ole niiden paikka, mutta vain, kun käytät yksittäisiä
merkkiä, mutta siitä lisää toisella kertaa.
Nyt lainausmerkit ovat tarpeen.
>> Joten nyt, anna minun mennä takaisin minun terminaalin ikkuna, tee hei 1.
Ja kuka uskoo?
Onko tämä ohjelma nyt menossa kääntää oikein?
OK.
Joten me kolme mielestäni tämä.
Selvä.
Anna.
Ja se todella teki.
Joten ei ole mitään virheitä tällä kertaa, vaikka vaikka tämä ohjelma on mennyt vähän
monimutkaisempi.
Jos en nyt dot slash hei 1, Anna, se tulee sanoa "hei, David."
>> Mutta tehkäämme kolmas iteraatio Tässä, jos
Ohjelma on todella dynaaminen.
Anna minun mennä eteenpäin ja muuttaa tiedoston nimen, johdonmukaisuuden
tiedostoja sinulla on käytettävissä sinulle jälkeenpäin verkossa.
Anna.
Ja nyt aion mennä eikä säilytä "David" kova koodattu täällä.
Mitä voisin tehdä hyvin yksinkertaisesti parantaa tätä ohjelmaa?
>> Voisin kutsua getString.
Se voi olla vähän kuin selvää, mitä on tapahtumassa, joten aion
todella lisätä toisen linjan, printf, ja sano nimi, paksusuoli, lähellä lainaus, vain
antaa käyttäjälle nopeasti ruudulla.
Ja nyt aion mennä tänne, ja olen aio käyttää minun pikanäppäimen.
Aion mennä ylös, ylös, ja muuttaa Hei 1 Hei 2, Anna.
Ja onneksi, olen edistynyt.
>> Ja nyt minä menen ylös piste slash Hei ja
vaihtaa sen 2, Anna.
Ja nyt minun ohjelma -
Minä suurentaa - on tulossa hieman kauniimpi.
Nimi tulee olemaan, sanotaanko Rob tällä kertaa, Anna, hello, Rob.
Me voimme tehdä sen uudestaan.
Nimi, Lauren, Anna.
Nimi, Joseph, Anna.
Nimi, yritetään olla vaikeaa, Anna.
Eh.
Se ei ole oikeastaan ​​bugi.
Joten se on vain hieman ruma.
Joten ehkä voisimme ratkaista tämän tulevaisuudessa, ei nyt.
>> Mutta miten te vaistomaisesti edetä käsitellään
että erityinen haaste?
Se vain näyttää tyhmä.
Miten välttää asioita etsivät tyhmä?
Jotta voisimme tehdä, OK, kuulin pari asioita, kunto ja silmukka.
Voisimme käyttää, yksi, ehto, tarkistaa mikä on merkkijonon pituus
käyttäjä antoi meille?
Ja jos se on 0, se on vain lainata lainaus, ne vain Enter, sitten
Ehkä minun pitäisi huutaa niitä ja pyytää niitä uudelleen.
Mutta miten ryhtyisivät uudelleen?
No, olen myös kuullut silmukka, ja voisin tehdä uudestaan ​​ja uudestaan ​​ja uudestaan
kehotukset käyttäjä sama asia.
>> No, jokin muu esimerkki käyttämällä eri
toiminnon CS50 kirjastossa.
Haluan lopettaa tämän tiedoston.
Saanen luoda uuden.
Ja minä kutsun sitä adder.c, vain koska se on helppo tehdä yksinkertaisia ​​laskutoimituksia,
vaikka tämä on täysin underwhelming mitä voisit tehdä
kaikki nykyaikaisen tietokoneen.
>> Mutta haluan mennä eteenpäin nyt ja -
Olen oppinut läksyni viimeisen kerran - ovat cs50.h, kuuluu stdio.h, int
Tärkeimmät mitätön, joka nyt, minä vain ottaa sokea usko, mutta oletamme
joka ymmärtää, mitä se tarkoittaa, että ennen pitkää.
Ja aion sanoa jotain kuten "anna minulle int."
>> Ja nyt, miten saan int?
Haluan lopulta julistaa muuttuja nimeltään x tyypin int ja
tallentaa se kokonaisluku käyttäjälle.
Niin, että oli suupala.
Mutta jos joku haluaa ehdottaa, miten voin julistaa kokonaisluku kutsutaan x?
Int x.
>> Niin se todella on niin yksinkertaista.
Anna minulle int.
Soita se x.
Nyt käytän sijoitusoperaattori.
Ja miten voin tallentaa alkaen jäljellä arvo käyttäjä?
En halua soittaa getString, tietenkin, vaan getint.
Kaikki argumentit?
Ei.
Joten se on auki kantatuote, lähellä kantatuote välittömästi, ja sen jälkeen
puolipiste päättyy linja.
>> Nyt haluan tehdä tämän uudestaan.
Anna minulle toinen int.
Tällä kertaa teen int, katsotaanpa kutsuvat sitä y, vastaa getint.
Ja nyt haluan tehdä jotain super-yksinkertainen kuten jotkut matematiikka.
Joten printf, summa% d on paikanvaraaja int.
Ja% d, kauden, kenoviiva-n.
>> Selvä.
Joten se ei ole oikeastaan ​​matematiikkaa.
Mutta jos haluan sanoa summa tämän arvo plus tämä arvo on tällä
muu arvo, kuinka monta argumenttia osaksi yhteensä minun pitäisi antaa printf,
lopulta?
Joten neljä, eikö?
Tämä merkkijono ja sen jälkeen kolme arvoa.
Joten x on ensimmäinen haluan olla kytketty ensin% d.
y tulee olemaan seuraava.
>> Ja nyt olen sellainen halua sanoa z, mutta z ei ole olemassa.
Mutta se ei ole iso juttu.
Koska mitä tekisit vaistomaisesti, varsinkin jos sinulla on ollut
graafinen laskin, mitä kirjoitat?
Entä x plus y?
Joten se ei ole todellinen muuttuja.
Se on vain summa kahden muut muuttujat.
Ja se on täysin laillista.
C varmasti ymmärtää yksinkertaisia aritmeettinen näin.
>> Puolipiste, tallenna.
Nyt haluaisin mennä tänne ja kirjoita tehdä lisätoiminto, Anna.
Ei virhe, niin se on käynnissä myös.
Kirjoita lisätoiminto.
Ja toinen pikanäppäimen jos alkaa kyllästyä
kaikki komennot -
jos aloitat kirjoittamalla komennon, kuten piste slash mainos, ja se jos sinun
ikävystyminen potkuja, voit yleensä lyödä Välilehti on tietokoneen loppuun
levätä lause, jos se ei ole epäselvä, mitä pitäisi tulla, kun mainoksen.
>> Joten anna minun mennä eteenpäin nyt ja valitset Enter.
Anna minulle int, 1, 2, ja Onneksi se on 3.
Mutta kuten aina, testaus ohjelmat ei pitäisi vähentää
vain yrittää sitä kerran.
Yritän nurkkaan tapauksessa kuin kielteisiä 1, anna minulle 1, ja että yksi
tarkastusten perusteella samoin.
Ja minä luultavasti halua tehdä lisää tiukkoja testejä, mutta olen melko
mukava, jos se on.
>> No, nyt yritetään toista ohjelmaa että tällä kertaa käyttää
hieman muita syntaksin.
Saanen luo uuden tiedoston.
Soitan tämän conditions0.c riviin jopa joidenkin koodista verkossa.
Ja anna minun mennä eteenpäin ja tehdä ovat cs50.h, ovat
stdio.h, pää void -
OK.
Siellä mennään.
Meillä on standardin boilerplate.
>> Ja tällä kertaa aion sanoa printf, "Haluaisin int, kiitos" vain
tehdä nopeasti hieman ystävällisempiä.
Ja nyt haluan saada int käyttäjältä.
Aion kutsua sitä n tällä kertaa, vain koska n kuulostaa numero.
getint, ja nyt, mitä Haluan tehdä sen kanssa?
No, jos n on - ja minä suurentaa -
jos n on suurempi kuin 0, haluan tehdä seuraavat -
printf "Valitsit positiivinen luku." Else, aion kirjoittaa printf "You
poimitaan negatiivinen
numero. "Selvä.
Joten tämä ohjelma, vaikka tein sen nopeasti, näyttää oikein lauseopillisesti.
Yritän tässä.
Tee kunnon 0.
Näyttää valuvan.
Kunto 0, anna.
Annetaan se int 50.
Otin positiivinen luku.
Yritetään uudestaan.
Kunto 0.
Negatiivinen 50.
Otin negatiivinen luku.
>> Mutta nyt haluan valita mitä pidämme soittamalla nurkassa tapauksessa, joka on enemmän
mielenkiintoinen tapaus, että luulet saattaa antaa sinulle joitakin ongelmia, 0.
Nyt olen melko varma, että tämä on yksi ne rajatapauksissa, joissa nolla on
ei myönteinen eikä kielteinen, niin minun ohjelma, vaikka rakenteeltaan
korjata - se kokoaa, se toimii - ei ole loogisesti oikein.
Mikä siis yksinkertainen korjata, jos haluan havaita, jos haluan käsitellä n
vastaa 0 erikseen?
>> Joten jos n = 0, niin haluan sanoa jotain printf "Otit 0."
Yritän tässä nyt.
Päästä minut takaisin tänne, tyhjennä minun ikkuna, ja käännä uudelleen.
Hm.
Yksi virhe tuottaa.
Mutta en haluat tarkistaa jos n = 0.
>> Joten jälleen, toinen tyhmä juttu tottua, yhtäläisyysmerkki on
sijoitusoperaattori.
Joten tämä on oikeastaan ​​virhe, että teknisesti, vaikka kääntäjä
suojattu minua itseäni, olimme teknisesti kopiointi 0 otetaan n, joka
ei ole sitä mitä haluan.
Haluan testata tasa-arvon kanssa yhtä vastaa.
Ja niin, että nyt voisi olla minun parempi ratkaisu.
>> Saanen todella tallenna tätä vaikkapa conditions1, on uusia ja parannettuja.
Joten jos nyt kääntää tämän, se tekisi olosuhteet -
oho - tehdä conditions1 dot slash conditions1, Anna, "Haluaisin int,
kiitos. "Aion mennä eteenpäin ja kirjoita 50.
Se on edelleen hyvä.
Negatiivinen 50, edelleen hyvä.
0, ja se todellakin havaittu että otin 0.
>> Mitä muuta voin nyt tehdä tämän?
No, voimme varmasti tehdä yhä monimutkaisia ​​asioita.
Mutta mitä haluaisin ehdottaa on että lopetan tähän.
Jos me vetää tätä, näet, ehkä suosikki sarjakuva omasi
asti tänään saatat koskaan ymmärtänyt.
Ja se laadusta naurua sinun pitäisi saada CS vitsejä.
Niin, että noin oikeassa.
>> Mutta enemmän vetoavasti, ajattelin antaa meille hieman teaser maanantaina.
Siksi olemme alkaneet käyttää kokonaislukuja.
Olemme tarkoitetun kelluu.
Olemme jopa tarkoitettujen tuplaa, joka taas antaa sinulle numerot
jälkeen desimaaleja.
>> Mutta näyttää siltä, ​​että kellukkeet ja tuplaa, ja todella, tietokoneet,
pohjimmiltaan, voi ilmaista joitakin arvoja tarkasti.
Tiedämme matematiikkaa luokkaa, että voit olla kuinka monta tahansa jälkeiset numerot
desimaalin tarkkuudella.
Ja voit jopa laittaa pystypalkki sanoa näitä loputtomiin.
>> Valitettavasti et voi oikeastaan tehdä sen tietokoneeseen.
Ja niin kulma voi esiintyä.
Oletetaan esimerkiksi, että olet tekee jotain taloudellista.
Teet matematiikka prosenttiosuudet, ja
dollaria ja senttiä.
Ja ne senttiä eivät välttämättä riviin.
No, käy ilmi, että jakeet penniä voi alkaa lisätä, kun
mallinnetaan tietokonejärjestelmän siten, että taitava
ihmiset voivat hyödyntää.
>> Ja ne teistä, jotka eivät ole nähneet, olisin haluan antaa sinulle 30 sekunnin teaser
ihana elokuva tunnetaan Toimistotilaa, joka maalaa kuvan
ongelma meillä on puuttua Ensimmäinen asia maanantaina.
Jos voisimme nostaa äänenvoimakkuutta vähän, minä annan sinulle 30
sekunnin toimistotilaa.
>> [VIDEOTOISTOSTA]
>> -Tarkoitan, olet, et ole ollut osoittaa ja saat pitää työsi.
>> -Oikeastaan ​​olen edistetään.
>> -Voisin ohjelmoida virus, joka had rip että paikka pois suuria aikaan.
>> -No, miten se toimii?
>> -Joka kerta siellä pankkisiirtona jossa korko lasketaan, ja siellä
tuhansia päivässä, tietokone päättyy kanssa nämä jakeet prosenttia.
>> -Mutta en aio tee mitään laitonta.
>> Internetin laiton?
Samir, tämä on Amerikka.
>> -Meidän täytyy vannoa.
>> -Jos kukaan ei tiedä tästä mutta meille, jooko?
Ei perheenjäseniä, ei tyttöystäviä, kukaan.
>> -Tietenkin.
>> -Sovittu.
>> -Älä huoli, mies.
En kerro kenellekään myöskään.
>> [END VIDEOTOISTOSTA]
>> DAVID MALAN: Eli tämä on siis CS50, että oli Toimistotilaa, ja se kaikki
järkeä maanantaina.
Nähdään sitten.
>> Kertoja: Seuraavassa CS50, Rob sopeutuu on pois
Harvardin aterian suunnitelman.