[Powered by Google Translate] David J. MALAN: Selvä, tämä on CS50 ja tämä on
loppuun Viikko 1, joten tutkimuksessa kortit ovat, ja kokonaismäärä
luokkatoverit että sinulla on tänä vuonna 745.
Ja olemme niin innoissamme on niin paljon teistä aikana
Tämän lukukauden, mutta vaikka tämä kurssi on niin suuri,
ymmärtää, että se on näitä asioita, kuten perjantai lounaita, kuten
toimisto tuntia, 15-henkilö osastot, ja niin edelleen, että
todella tarkoitus luoda tätä intiimimpi
ympäristöön.
Joten vaikka saatamme kerätä kerran tai kahdesti viikossa, täällä
Sanders, tietävät, että paljon teidän kokemuksia tällä kurssilla
tulee hyvin paljon on käytännön on rinnalla oman luokkatovereiden
ja opetushenkilöstön.
>> Joten tässä sitä mennään, Fall 2012.
Niin muistaa, että viime kerta päättyi muistiin
epätarkkuus, puhumme edustus numerot.
Ja me katsoimme yhdessä epäonnistumisia tapahtui vuonna
Todellisessa maailmassa, kun se tuli väärinkäsitys
miten tietokoneet toimivat.
No, tänään me uudelleen toinen niistä ideoita
samoin kuin jatkamme keskustelua CS50 asiakkaan
ja C ja mitä se merkitsee todella ohjelmaan.
Mutta ensin vain pari pyörremyrsky ilmoituksia.
>> Kohdat alkavat tänä sunnuntaina, ja ensimmäinen viikko on aina
Hieman nopean alun, sillä saimme juuri sisään
osiosi lomakkeita.
Me teemme samoin, nyt, opetus kaverit, nyt
että he tietävät niiden aikataulut, joten pyrimme, jonka
Lauantaiaamuna, seurata mukana sinua §
toimeksianto ja TF.
Tiedä, että he alkavat seuraavana päivänä, sunnuntaina
tai maanantaina tai tiistaina.
Ja sitten me majoittaa osan muutokset, koska ne syntyvät
vuonna lähipäivinä.
Aukioloajat puolestaan ​​ovat jälleen tänään, kaksikymmentä 11, vuonna
Annenberg sekä huomenna.
Vaikka ongelma sarjat johtuvat yleensä torstaisin
keskipäivällä, huomaat on enintään viisi myöhään päivää viettää,
joten saatavuus virka torstaisin, jos
te käteistä yhdessä näistä myöhään päivinä ja siten antaa
jotain perjantaina.
Saanen ehdottaa, että Scratch on yksi hauskempaa joukossa
enemmän alasävy ongelma sarjaa.
Ja haluaisin pitää kiinni niitä myöhään päivinä, strategisesti juuri
varten myöhemmin lukukauden kun elämä alkaa tiellä
kanssa midterms ja muihin luokkiin.
Harjoitus 1, puolestaan ​​olisi lähetetty kurssin
verkkosivuilla perjantaina, sillä tulee olemaan kurssin kävelymatka
kautta video, joka kuvattiin 14:30 perjantaina
ja sitten julkaistaan ​​verkossa seuraavana päivänä.
>> Joten me päättyi maanantaina.
Haluan - oikeastaan ​​yksi nuotti täältä.
Koska luokat - koska Sanders ei tarkalleen lainata
itse rento Q & edestakaisin hirveän hyvin, olemme
aio yrittää jotain hieman uutta tänä vuonna, jolloin
jos et ole mukava nostaa kättä tai juuri
mieluummin ei nosta käsi huoneeseen näin,
aiomme olla joitakin opetuksen stipendiaattien ja CA
Miehistöä cs50.net/discuss aikana luento.
Joten jos sinulla on kysymys, koska olin täysin
epäselvä jotain tai olet utelias joitakin
aihe, kokeile lähettämistä sinne.
Merkitse se etiketissä Luento, ja me teemme parhaamme
tänään ja ensi viikolla - we'll kokeilla tätä - ja alalta
joko sähköisesti verkossa tai jos se tuntuu meidän pitäisi
todella käsitellä se joukoittain, yksi opetus stipendiaattien tai
CAS nostaa kätensä ja pyytää
nimettömänä teidän puolesta.
Joten annamme tämän kokeilla ja nähdä kuinka hyvin tämä toimii.
Mutta kaikin mokomin, edelleen nostaa kädet kuin haluaisit.
>> Joten viimeinen kerta paljasti, että 10% tai yksi kymmenesosa ei, on
Itse asiassa, 0,1, kuten sinäkin opetettiin monta vuotta sitten.
Se on itse asiassa arvo kuin tämä.
Mutta se ei ole täysin totta, eikö?
Meillä on vain tämä rajoitus tietokoneiden jolloin, jos
on vain rajallinen määrä muistia, RAM-muistia, tai enemmän
erityisesti bittiä, hyvin, on vain rajallinen määrä
asioita voit edustaa.
Esimerkiksi, jos meillä on numero nolla, ja haluamme
edustavat binary, käyttäen kahdeksan bittiä, jossa vähän,
jälleen, on nolla tai yksi, voisimme
edustaa sitä 00000000.
Ja se on vähän turhan monisanainen.
Aivan kuten kymmenjärjestelmässä todellisessa maailmassa,
Yleisesti, jos haluat kirjoittaa numero 123, me
ihmiset luultavasti eivät kirjoita 00000123 vaikka
toiminnallisesti, se täsmälleen sama numero.
Me vain pudota etunollia, niin sanoakseni.
>> Binary, voimme tehdä saman.
Binary ja nolla, nolla ja binaarinen on vain nolla.
Tarvitset vain yhden bitin.
Mutta jälleen kerran, yleisin mittayksikkö maailmassa
laskenta on tavun, kahdeksan bittiä.
Vain koska yksi bitti, melko hyödytön.
Kahdeksan bittiä, ei kovin hyödyllistä, mutta ainakin se on enemmän
hyödyllisiä kuin yksi mittayksikkö.
Joten kahdeksan bittiä, me tyypillisesti edustaa binary.
Joten tässä meillä on numerot nolla, yksi, kaksi, ja sitten, kuten
Nate teki meidän video viime keskiviikkona, voimme jatkaa
counting jopa seitsemän, kahdeksan.
Ja sitten jos käytämme enemmän bittejä, me
voi laskea äärettömyyteen asti.
Mutta jos on vain äärellinen määrä näitä bittejä, kuten on
Jos missä tahansa tietokonejärjestelmässä, tai jopa ohjus
järjestelmä, hyvin, olet todellakin vain
rajallinen määrä tarkkuutta.
Joten jos haluat edustaa numero kuin 0,1, hyvin,
tietokone on valita.
Ja jos se on vain äärellinen määrä numeroita se voi
edustaa, se voi tulla lähelle 0,1 teille, mutta se ei voi
välttämättä anna sinulle juuri haluamasi arvo.
Ja tämä on vain yksi haasteista tietokoneiden,
alla huppu, onneksi.
>> Kun siirrymme kauemmas lukukauden nämä alemman tason
yksityiskohdat tulee vähemmän kiinnostava, mutta varmasti
soveltaa näitä ideoita voi olla hyvin reaalimaailman
seurauksia.
Yksi on vähän hauskaa.
Kuinka moni teistä on nähnyt uskomattomia elokuvan Office Space?
Jos et ole, se on sinun epävirallinen
kotitehtäviä viikon.
Mutta Toimistotilaa, kaverit siinä elokuvassa otetaan
hyödyntää juuri tätä ajatusta, mutta ne todella minulle
se toinen elokuva, saatat olla
nähnyt, jopa vuosia ennen.
Joten annan sinulle muutaman sekunnin traileri alkaen
Tämä hämmästyttävä elokuva ja tämä on hyvin
akateemisesti asiaan.
>> [Toistaa MOVIE]
Oikeastaan ​​olen edistetään.
En voi ohjelmoida virus, joka repii, että
laita pois big time.
No, miten se toimii?
Joka kerta siellä pankkisiirtona, jossa korko on
laskettu, on olemassa tuhansia päivässä, tietokone päätyy
nämä jakeet prosenttia.
Mutta en aio tehdä mitään laitonta.
Laiton? Samir, tämä on Amerikassa.
Sinun vannon.
Jos kukaan ei tiedä tästä, mutta meille, okei? Ei perheenjäseniä, ei
tyttöystäviä, nobody.
[Kuulumattomissa].
Älä huoli, ihminen, en kerro kenellekään myöskään.
[Elokuva päättyy]
>> Selvä, joten ehkä löysin tämän elokuvan paremmin kuin useimmat
täällä, mutta joka tapauksessa, virus, että he olivat
yrittää luoda -
ja elokuvia, milloin he kutsuvat jotakin virus,
se on yleensä ole oikeastaan ​​virus.
Se on vain ohjelma, että joku kirjoitti jotain.
Ja tässä tapauksessa, kaverit yrittivät kirjoittaa ohjelma
että käytti heidän nimisen yhtiön Innotech n
tietokonejärjestelmä, jossa tietokoneet myös, vaikka se
on rahaa, ei välttämättä
edustavat rahaa tarkasti.
Joten vaikka saatat olla 0,10 dollaria tilillesi,
0,10, hyvin, tietokone saattaisi ajatella, että sinulla on
näin monta senttiä pankkitilille.
Ja niin, mitä nämä kaverit olivat aikeissa tehdä - ja he
varasti idean, se kääntyy pois Superman III, jossa
Richard Pryor teki saman - he olivat pääasiassa
kirjoittaa ohjelmia, jotka pyrkivät ottamaan kaikki perään
numerot, kaikki pieni, pieni, pieni jakeet
penniä, ja siphoning ne pois, niin että ihmiset vain
ajatus, oi, se on vain 0,10 dollaria siellä, mutta kaikki nämä
perään numerot lopulta täsmää.
Joten ihana idea ja se kostautui hulvattoman että
Erityisesti elokuva.
>> Mutta todellisessa maailmassa, myös olemassa paljon enemmän koskevat
vaikutukset näitä puheita.
Ja yksi syy sukeltaa alalla tietokoneen
tiede on jälleen sen soveltuvuus ei
insinööritieteiden yksin, vaan vain
muilla aloilla.
Joten tämä on yhtä hilpeä katsomaan mikä voi mennä pieleen, mutta
Se on myös varsin silmien avautuminen, luulen, kun se tulee
ymmärtämään kuinka läsnäoleva tekniikat, kuten
tietokoneita ja ohjelmointia tai näinä päivinä,
muodossa ohjelmiston.
Joten tämä seuraava leike on vain noin kuusi minuuttia, jatkuu
mihin jäimme viime kerralla, mutta voimme tarkastella hieman
enemmän perusteellisesti yksi tällainen näistä asioista.
Saanen siirtyä suoraan mihin jäimme,
joka oli täällä.
Ja meillä on toinen osa kaksi, noin kuusi minuuttia täältä.
>> [PLAY MOVIE]
Vaivannut modernin ohjusteknologia.
Vuonna 1991, kun ensimmäinen Persianlahden sota, Patriot
ohjus kokenut samantyyppinen
numero conversion ongelma.
Ja sen seurauksena 20 henkilöä, 20 amerikkalaista sotilasta sai surmansa
ja noin 100 muuta haavoittui, kun Patriot, joka piti
suojaamaan saapuvan Scuds,
ei palo ohjus.
>> Kun Irak hyökkäsi Kuwaitiin ja Amerikassa käynnisti Desert
Storm vuoden 1991 alussa, Patriot ohjuspattereita olivat
lähetettiin suojelemaan Saudi-Arabiassa ja Israelin Irakin
Scud ohjus hyökkäyksiä.
Patriot on Yhdysvaltain keskipitkän kantaman pinta-ilma järjestelmään,
valmistanut Raytheon company.
Koko Patriot torjuntahävittäjä itse, se on noin
noin 20 metriä pitkä ja se painaa noin 2000 kiloa.
Ja se harjoittaa taistelukärki noin - Mielestäni se on suunnilleen
150 kiloa.
Ja taistelukärki itsessään on suuri räjähde, joka on
fragmentit sen ympärille.
Kotelo Warhead on suunniteltu toimimaan kuten Buckshot.
Ohjukset kuljetetaan neljä prosenttia kontti ja ovat
kuljettaa puoliperävaunu.
>> Patriot ohjuspuolustusjärjestelmä ulottuu ainakin
20 vuotta.
Se oli alun perin suunniteltu ilmatorjunnan ohjus
ampua alas vihollisen lentokoneita, ensimmäisessä Persianlahden sodassa.
Kun sodan tuli, armeija halusi käyttää sitä ampua
alas Scuds, ei lentokoneita.
Air Irakin Force ei ollut niin suuri ongelma, mutta armeija
oli huolissaan Scuds.
Ja niin he yrittivät päivittää Patriot.
Kuuntelua vihollisen ohjuksia kulkee 5 Machin oli menossa
on riittävän haastava.
Mutta kun Patriot kiidätettiin käyttöön, armeija
ei ollut tietoinen Irakin muutos, joka teki heidän
Scuds lähes mahdotonta osua.
>> Mitä tapahtui on Scuds jotka olivat
tulossa oli epävakaa.
He olivat huojuu.
Syynä tähän oli irakilaisia, saadakseen 600
kilometriä ulos 300 km kantaman ohjusten otti
paino pois edestä taistelukärjen ja
tehty taistelukärki kevyempi.
Joten nyt Patriot yrittää tulla milloin Scud, ja useimmat
aika, valtaosa aikaa, se olisi
kuin siivillä Scud.
Kun Patriot verkonhaltijoiden toteutunut Patriot
jäi tavoitteesta, ne räjäytettiin Patriot ydinpommi.
Välttääksesi mahdollisen uhreja, sen annettiin
pudota maahan.
Se oli mitä useimmat ihmiset näkivät, yhtä iso tulipalloja taivaalla,
ja ymmärtää väärin kuuntelevansa Scud ydinkärkien.
>> Vaikka yötaivaalla, Patriots vaikutti
tuhosivat Scuds kello Dhahran, ei voinut olla
erehtykö sen suorituskykyä.
Siellä Patriot tutkajärjestelmän kadottaa
saapuvan Scud ja koskaan käynnistetty, koska
että ohjelmisto virhe.
Se oli israelilaisten joka ensimmäisenä huomasi, että enää
Järjestelmän oli, sitä enemmän aikaa ero tuli,
johtuen kellon upotettu järjestelmän tietokone.
Noin kaksi viikkoa ennen tragedia Dhahran,
Israelilaiset raportoitu puolustusministeriön että
järjestelmä menettää aikaa.
Noin kahdeksan tuntia käynnissä, he huomasivat, että
järjestelmä oli tulossa huomattavasti epätarkempi.
Puolustusministeriö vastasi kertomalla kaikki
Patriot paristot jättää järjestelmät
on pitkään.
He eivät koskaan sanonut mitä pitkään oli - 8 tuntia, 10
tuntia, 1000 tuntia.
Kukaan ei tiennyt.
>> Patriot Akku asemapaikkanaan kasarmille Dhahran
ja sen puutteellinen sisäisen kellon oli ollut yli 100 tuntia
yönä helmikuun 25. päivä.
On seurataan aika tarkkuudella noin sekunnin kymmenesosaan.
Nyt kymmenesosa toinen mielenkiintoinen numero, koska
sitä ei voida ilmaista binary, täsmälleen, mikä tarkoittaa,
sitä ei voida ilmaista tarkasti missä tahansa
moderni digitaalinen tietokone.
On vaikea uskoa.
Mutta käyttää tätä esimerkkinä.
>> Otetaan numero kolmasosaa.
Kolmasosa ei voida desimaaliasteina, tarkalleen.
Kolmasosa on 0,333 jatkunut ääretön.
Ei ole mitään keinoa tehdä sitä absoluuttinen tarkkuus desimaalin.
Juuri samanlaista ongelmaa, joka tapahtui
Patriot.
Kauemmin järjestelmä juoksi, huonompi aika virhe tuli.
Jälkeen 100 käyttötunnin virhe aika oli vain
noin kolmasosa toisen.
Mutta kannalta kohdistaminen ohjus kulkee MACH 5,
se johti tracking error on yli 600 metriä.
Olisi kohtalokas virhe sotilaat Dhahran.
>> Mitä tapahtui on Scud käynnistää havaittiin varhaisvaroitus
satelliitit ja he tiesivät, että Scud oli tulossa heidän
yleinen suunta.
He eivät tiedä, mistä se tuli.
Se oli nyt jopa tutkan osa Patriot
järjestelmä, puolustaa Dhahran, paikantaa ja seurata
saapuvan vihollisen ohjuksia.
Tutka oli hyvin älykäs.
Sinun olisi todella seurata aseman Scud ja sitten
ennustamaan, missä se todennäköisesti olisi seuraavan kerran
tutka lähetti pulssi ulos.
Se oli nimeltään alue portti.
Sitten, kun Patriot päätä riittävästi aikaa on kulunut mennä
takaisin tarkistamaan seuraavan sijainti Tämä havaittu
esine, se menee takaisin.
Joten kun se meni takaisin väärään paikkaan, sitten se ei näe mitään
vastustaa, ja se päättää, että ei ole vastusta.
Se oli väärä tunnistus ja putoaa radan.
>> Tuleva Scud katosi tutkan.
Ja sekuntia myöhemmin se törmäsi kasarmeja. Scud
tappoi 28 ja oli viimeinen potkut aikana
Ensimmäisen Persianlahden sodan.
Traagisesti, päivitetty ohjelmisto saapui Dhahran
seuraavana päivänä.
Ja ohjelmiston vika oli korjattu, sulkemalla yhden luvun
levoton historia Patriot ohjus.
Patriot on oikeastaan ​​lyhenne sanoista "vaiheittain array seuranta
Leikkaus Target. "
>> Selvä, niin paljon surullinen tulos ei ole aivan
ymmärtää tätä maailmaa.
Ja nouto, todella, mistä elokuva on, että ratkaisu
siellä oli käynnistä ohjuspuolustusjärjestelmä
aina silloin tällöin.
Ja niin taas yksi tavoitteista tämän kurssin, varmasti
on nöyrempiä mittakaavassa kuin näissä sovelluksissa, on
todella avoin kaikkien silmissä tarkalleen miten edetä
valmistuskoneet tehdä mitä haluat heidän tekevän ja miten mennä
noin tekee, että oikein, vaikka matkan varrella tehdä se
hyvin, tyylikkäästi, ja niin edelleen.
Ja niin tänään, katsotaanpa sukeltaa hieman enemmän, mutta
joten emme mene liian nopeasti, etenkin niille vähemmän
mukava, mutta myös jotta voimme säilyttää edun
nämä mukavampaa, mennään vain nopeasti alkaa hieman
ja kertaus näitä ajatuksia.
Ja vielä, kysy pois, niin henkilökohtaisesti tai verkossa, jos sinulla on
kysymyksiä, joten voimme pitää kaikki samalla sivulla.
>> Joten CS50 Appliance, nopea askel taaksepäin, on
mitä, omin sanoin?
Se on OK, jos sinulla ei ole aavistustakaan, mitä nuo sanat saattavat olla vielä.
[Kuulumattomissa]
Okei, joten yleinen käyttöliittymä -
että me kaikki voimme jakaa.
Ehdottomasti.
Joten voisimme esimerkiksi kertoa mennä joitakin
verkkosivuilla ladata tämän ohjelmiston Mac OS.
Lataa ohjelma Windows, määritä vuonna
tällä tavalla ja että.
Mutta todellisuus on sitten joutunut lukemattomia teknisiä
tukikysymykset.
Ja myös näinä päivinä, paljon siitä, mitä tehdään palvelimen puolella,
maailman tietojenkäsittely, varsinkin kun se tulee
Web-kehitys ja web-pohjaisia ​​sovelluksia, on oikeastaan
varsin usein tehty Unix-tai Linux-tietokoneita, toisin kuin
Mac-tai Windows-PC.
>> Joten joukossa upsides, sitten, käyttämällä tätä asia, jota kutsutaan
CS50 Appliance on meidän kaikkien täytyy samassa ympäristössä.
Joten kaikki ovat samalla sivulla mitä laitteita sinulla
tuli kampuksella, mutta myös se leikittelevät täsmälleen
samassa ympäristössä, joka aiot käyttää kohti
lukukauden lopussa sekä web-kehitys, sekä
tulevaisuutta reaalimaailman sovelluksia sen.
Joten konkreettisemmin, CS50 Appliance on ilmainen pala
ohjelmisto, jonka avulla voit suorittaa toisen käyttöjärjestelmän,
Linux, tässä tapauksessa omalle koneelle, ja ikkunan.
Nyt et voi vain ladata laitetta.
Tarvitset ohjelman, joka toistaa tai käytä laitetta.
Ja että ohjelmisto on yleisesti tunnettu
hypervisor.
Hypervisor tulevat tuotteiden muodossa, kuten VMware,
Virtual Box, Parallels.
Kaikenlaisia ​​yritykset tekevät ohjelmistoja sekä vapaa ja
kaupallinen, samankaltaisia.
Mitä näet, Harjoitus 1 on ohjeet
saada ilmainen ohjelmisto, jolla voidaan
ajaa CS50 Appliance.
Ja kun et, sinulla on, on ikkuna Macin tai PC,
työpöytäympäristö, joka näyttää aivan kuten tämä, jossa
se on Käynnistä-valikon kaltainen asia
näytön vasemmassa alakulmassa.
Se on Home kansioon tai kotihakemisto, vasemmassa yläkulmassa
siellä, roskakori, ja niin edelleen.
Joten me erottaa toisistaan ​​välttämättömiä täsmennyksiä mennään.
>> Mutta nyt aloitamme sukeltaa C.
Eli C on tällä ohjelmointikieli, hengeltään samanlaisia
Scratch, mutta paljon vähemmän graafinen, mutta ironista kyllä, paljon
voimakkaampi kun saat taju kanssa.
Joten C, voimme kirjoittaa ohjelmia kirjoittamalla lähdekoodi, joka on
Tämä Englanti kaltainen syntaksi, samanlainen sukat
osoitus siitä, että teimme viime kerralla, jonka avulla voit
ilmaista itseäsi melko tarkasti, jos
arcanely, tietokoneeseen.
>> Millainen tuoteohjelmiston sinä todella tarvitset
kirjoittaa ohjelmia kielellä kuten C, perustuvat
keskustelu maanantaina?
[Kuulumattomissa]
OK, sinun tarvitsee vain tekstieditorilla.
Sinun ei tarvitse mitään erityisiä ohjelmistoja
sinänsä kirjoittaa ohjelmia.
Tarvitset vain tekstieditori kuten Notepad, Windows,
TeXturi Mac, tai jotain nimeltään gedit, maailman
Linux, jonka käytämme täällä.
Ja se on siinä, kirjoittaa ohjelmia.
>> Mutta kirjoitus on vain puolet yhtälöstä.
Sitten on käyttää niitä.
Mutta jotta ajaa ohjelmia -
et voi suorittaa lähdekoodia.
Sinulla sen sijaan on tehtävä mitä se ensin?
Joo.
DAVID J. MALAN: Sinun
kääntää sen.
Ja joku muu, kokoamiseen lähdekoodi tarkoittaa -
[Kuulumattomissa]
DAVID J. MALAN: Aivan.
Kääntäminen se nollia ja ykkösiä.
Koska me kaikki, näinä päivinä, joiden tietokoneet ovat suorittimet,
lähes kaikki, jotka on valmistettu niminen yhtiö Intel, ja
Intel Inside, tarkoittaa, että tämä aivojen sisäpuolelle
tietokone, joka tunnetaan nimellä CPU.
Ja yksi niistä asioista, että aivot tekee on, se tietää
miten ymmärtää malleja nollia ja ykkösiä.
Se tietää mitä mallia bittien edustaa lisäksi, mitä
malli edustaa subtractions, mikä malli
bittiä edustavat tulostus, ja luoda kuultavan äänen.
>> Niin lyhyt, CPU, joka on kytketty käyttöjärjestelmän kanssa,
joka on pala ohjelmisto, joka toimii päälle CPU,
niin sanoakseni.
Yhdessä nämä kaksi osaa ajaa ohjelmia
me ihmiset kirjoittaa.
>> Joten jos menen CS50 Appliance täällä, minun täytyy avata
ylös tekstieditorissa ja voin käyttää tätä
parin tavoin.
Voin joko mennä Menu, ohjelmointi,
ja sitten voin valita -
Ehei, ei se valikko.
Voin mennä Tarvikkeet / gedit tästä avataksesi
pikku tekstieditorilla.
Tai yksinkertaisemmin, voin napsauttaa tätä pientä kuvaketta alareunassa
vasemmassa alakulmassa.
Ja nyt saan tämän ympäristön tänne.
Ihan mieleen yksinkertainen tekstieditori, vain
yksi tai kaksi eroja.
Vuonna alkuun, missä kursori vilkkuu nyt, tämä on silloin
Voin aloittaa kirjallisesti minun koodi.
Pohjaan on tämä asia sanottu pääteikkuna.
Ja millaisia ​​asioita voin tehdä tässä
ns pääteikkunassa?
[Kuulumattomissa]
>> Okei, joten minä ajaa komentoja.
Ja jotkut komennot me juoksi maanantaina olivat hieman
arvoituksellinen aluksi, mutta ls-luettelosta cd muutoksen hakemistoon,
rm varten poista.
Joten se on tavallaan vanhan koulukunnan tapa selaamisesta
tietokone, käyttäen vain näppäimistön ja tekstuaalinen komentoja,
ja ei, yleensä, hiiren avulla.
Mutta näemme, ennen pitkää, tämä todella antaa meille
hieman enemmän tehoa ja hieman enemmän tarkkuutta, jolla on
ilmaista itseämme.
Ja sitten tänne vasemmalle, olemme juuri menossa nähdä,
kun alamme kirjallisesti ohjelmisto, pieni yhteenveto
ohjelma, olemme kirjoittaneet ylhäällä vasemmalla.
Mutta me näemme, että vielä ennen pitkää.
>> Joten jotain melko yksinkertainen täällä.
Sallikaa minun ensin mennä eteenpäin ja mene Tiedosto, Tallenna ja olen juuri
menossa klikkaa jharvard täällä yli vasemmalla, ja
jharvard on jälleen nimi kotini kansion, minun
henkilökohtaisia ​​tiedostoja, minulle, nyt John Harvard, kuten te kaikki
pian John Harvardin tässä ympäristössä.
Hän sai tämän kotihakemisto, Omat tiedostot ja niin edelleen,
että haluan pelastaa, nyt, tämän tiedoston sisään
Joten aion kutsua sitä hello.c. Sitten menen
eteenpäin ja valitse Tallenna, ja mitä nyt olen tässä välilehti
kutsutaan hello.c, niin paljon kuin muunlaista editori.
>> Joten nyt haluan mennä eteenpäin ja alkaa kirjoittaa ohjelman.
int main (void).
Ja sitten tein viimeisen kerran, printf, tulostus alustettu,
("Hei, maailma!"
);.
Lähes täydellinen.
Mutta minulta puuttuu pari yksityiskohtia.
Mitä puuttuu tästä ohjelmasta että olen todella tarvitsevat
se todella koota?
Joo.
[Kuulumattomissa]?
>> DAVID J. MALAN: Joo, niin minun täytyy sisällyttää standardin
I / O-kirjasto.
Joten tämä mentävä edellä main, joten olen juuri menossa
tehdä joitakin tilaa siellä.
Ja aion tehdä # include .
Ja huomaa kulmikas suluissa siellä.
Ja kuten syrjään, gedit on pieni käyttäjäystävällinen, jos
joskus hieman sekava, koska se yrittää auttaa
silmät huomaa mitä on linjassa sen kanssa, mitä.
Niin että minun kohdistin on aivan tämän kulma
kiinnike, huomaa kuinka se korostaa muiden kulmikas
kiinnike plus tämä.
Ja juuri kiinnittää huomioni siihen, että olen
on symmetria.
Ja symmetria ohjelmointi on yleensä hyvä asia.
Samoin jos voin siirtää kohdistimen loppuun, huomaa, miten
aaltosulkeita riviin osoittamaan, kyllä, olen avaa jokin
ja suljettu, niin sanotusti.
>> Selvä, ja voin tehdä yksi asia.
Se ei ole välttämätöntä, mutta hyvä käytäntö, eli
palauttaa 0.
Ja return 0 mitäkin meille täällä?
Tai merkitsee mitä?
[Kuulumattomissa]
DAVID J. MALAN: Mutta mitään vikaa.
Ja suoraan sanottuna on vaikea paljon mennä pieleen
ohjelmoida tämän lyhyen.
Joten olen juuri parhaillaan Super nimenomaisesti, että kaikki on hyvin.
Minä, ihminen, kun suoritat tämän ohjelman, luultavasti koskaan
nähdä, että 0.
Yleensä nämä numerot ovat palanneet tärkeimmistä
vain kasvattaa päänsä ihmisille, kun
jokin menee pieleen.
Ja saat vähän pop up sanoa järjestelmä virhe, yksi,
kaksi, kolme, tai mitä tahansa määrä oli se, että
oli palannut.
Joten jotain muuta vikaa?
[Kuulumattomissa]
>> DAVID J. MALAN: Eli tämä ei ole niinkään toiminnallinen virhe
mutta esteettinen yksi.
Minun pitäisi varmaan laittaa rivinvaihtomerkki siellä
lopussa merkkijonon, jotta me todella siirtää osoitinta
seuraavalle riville, ja ohjelma vain näyttää hieman kauniimpi.
>> Joten nyt haluan mennä alas minun pääteikkunassa
ja zoom takaisin sisään
Ja tämä juttu täällä, sitä kutsutaan viipymättä.
Se vain muistuttaa minulle, kuka olen, jharvard @ laite, jossa
Laite on nimi tietokoneen olen.
Suluissa on tämä tilde, koukero symboli, joka
edustaa mitä?
YLEISÖ: kotihakemisto.
DAVID J. MALAN: kotihakemisto.
Joten se on vain lyhennetty merkintätapa sanomalla olet
henkilökohtainen kansio, johon kaikki tiedostot menevät oletuksena.
Joten nyt, täällä, voin kirjoittaa ls-luettelosta.
Ja ainoa asia näen täällä tällä hetkellä hello.c.
Ja se on hyvä, koska olen juuri kirjoitin tämän.
>> Joten anna minun mennä eteenpäin ja tehdä tee hei.
Ja huomaa En kirjoittamalla tee hello.c.
Sen sijaan olen vain kirjoittamalla pohjan tiedoston nimeä, hei.
Ja tee, kuten näimme maanantaina, tulee vain päätellä, että haluan
. C-tiedoston.
Joten nyt olen kirjoittanut tehdä hei.
Nyt näen tämän melko pitkä komento ja jatkuu
nähdä tämä uudestaan ​​ja uudestaan.
Mutta selvää, clang, sana joka vain ilmestyi,
se todellinen kääntäjä.
Tee vain rakentaa apuohjelma.
Se on vain entistä käyttäjäystävällisempiä ohjelma säästää minua,
pitkällä aikavälillä, saamasta kirjoittaa ulos uskomattoman tylsiä pitkä
komennot kuten että yksi.
Joten voisit ajaa clang manuaalisesti.
Voisit kirjoittaa kaiken tuon manuaalisesti.
Vain saa erittäin tylsiä.
Ja niin tekevät on vain ohjelma, joka yksinkertaistaa elämäämme ja
toimii monimutkaisempia komentoja meille.
>> Selvä, joten nyt mitä tiedostoa minun tulisi
minun hakemistossa?
Ei vain hello.c, vaan myös hei.
Joten jos haluan ajaa Hei, muistaa, että sanon piste slash,
missä piste tarkoittaa mennä nykyisen kansion, missä
ovat, ja suorita sitten ohjelma nimeltä Hei, ja todellakin, nyt,
Minulla on Hello world.
Selvä, kysyttävää työnkulun tai syntaksia
mitä me juuri teimme?
>> Selvä, joten otetaanpa asioita notch uudelleen.
Joten tämä oli underwhelming vain kirjoittaa ohjelma, että vain
koskaan sano hei, maailma.
Niinpä muutimme sen, maanantaina sanoa, hei, David.
Se on hieman enemmän henkilökohtaista, mutta aivan yhtä kovaa koodattu
ensimmäinen versio.
Joten ei kaikki pakottavia.
Mutta on olemassa, C, toimii varmasti lisäksi
Tulosta, toimintoja, joiden avulla saat käyttäjän syötettä.
Ja miten me teimme tämän, toinen päivä, oli seuraava.
Ennen kuin itse tulostaa jotain, Sain ensin
jotain käyttäjältä.
Joten anna minun tehdä tätä uudelleen.
>> String s, missä s on vain mielivaltainen nimi, tähän,
string, vastaa GetString.
Joten mitä GetString?
Se ilmeisesti saa merkkijonon, joka perustuu sen nimeä.
Mutta mitä se on, enemmän teknisesti?
Se on funktio.
Joten on toiminto, joka ei tule C sinänsä.
CS50 henkilökunta kirjoitti tämän.
Ja niin käyttää tätä, et voi vain sisällyttää stdio.h,
Tarvitset myös sisällyttää mitä?
Joo.
Joten cs50.h, joka on vain tiedosto kirjoitimme muutamia vuosia sitten.
Asensimme sen laitteen sinulle rinnalla
kaikki tavalliset tiedostot.
Ja niin näiden muutaman ensimmäisen viikon luokkaa, käytämme
tämä vain yksinkertaistaa tekemässä very basic
asioita, kuten saada käyttäjä syöttää.
Koska kuten tulemme näkemään muutaman viikon päästä käyttäjän panos
kieli kuin C on oikeastaan ​​yllättävän monimutkainen,
varsinkin koska et tiedä etukäteen, yleensä, miten
paljon tavaraa käyttäjä aikoo kirjoittaa tuumaa
Ja kun et tiedä, kuinka paljon dataa odottaa, et
tietää kuinka paljon muistia jakaa.
Ja jos todella on vastineensa käyttäjä, joka yrittää
murtautua järjestelmään, kaataa tietokoneen, hyvin,
yleensä ensimmäinen tapa hyökkäys on, aivan kuten tein
Maanantai, kirjoita koko pitkä jono satunnaisia ​​merkkejä,
Enter, ja mitä rikkoo.
Koska yleensä, jos ohjelma taukoja, että vihjaa
turvallisuuden puute, mahdollisesti.
Se varmasti vihjaa sinua, ohjelmoija, joka on tehnyt
virhe, mutta vaarallisesti, olet ehkä tehnyt
turvallisuuteen liittyviä virhe, ja yleensä näemme, että
näin koneet ovat vaarassa tänä päivänä, niin
maailmassa web ja ohjelmat
komentoriviltä, ​​kuten tämä.
>> Selvä.
Joten string s vastaa GetString.
Joten konkreettisemmin nyt, mitä rivillä 6 tehdä täällä?
Joten toiminnon oikealla saa merkkijonon,
ottaa kuinka monta argumenttia?
Okei.
Niin mikään.
Vähän järki tarkistaa.
Argumentti, jälleen, on vain tulo funktion muuttamaan
sen oletusasetus jollakin tavalla.
Mutta tässä tapauksessa en halua muuttaa
käyttäytymistä GetString.
Halusin vain saada merkkijono.
Joten laitoin mitään suluissa, ja sitten laitoin
puolipiste demarking loppuun riviä koodia.
Nyt, yhtäsuuruusmerkki ei tarkoita yhtä, sinänsä.
Se tarkoittaa tehtävän, mikä tarkoittaa laittaa mitä saa
ulos oikealla sisäpuolella mitä on vasemmalla.
>> Joten vasemmalla, sanomme, että meillä on julistettu
merkkijono kutsutaan s.
Ja tarkemmin sanottuna, olemme jaettu muisti sisällä
jonka laitamme bitit, joka edustaa sekvenssi
merkkiä.
Mutta tänään, olemme varanneet
tai julistettu merkkijono.
Selvä.
Joten nyt kun olen tehnyt tämän, haluan kytkeä arvon
s, ei ole arvoa David.
Joten tämä on väärin, miksi?
Joten tämä on vain kirjaimellisesti kovakoodatuilla s.
On sanoa "Hei, s", joka ei ole sitä mitä haluan.
Joten en voi tehdä tätä.
Prosenttimerkki on paikkamerkki, mutta nyt minun täytyy
erittyä tulostaa toisesta väitteestä.
Muistutan, että argumentit toiminnot erotetaan
pilkut, joten seuraava pilkku tässä esitin tämän jälkeen kirjeen s.
Ja tässä yhteydessä nyt s on muuttuja, ja printf,
saatuaan nämä kaksi tuloa -
merkkijono vasemmalla ja muuttujan nimi s oikealla -
se kytke jälkimmäinen entiseen meille, ja
vain tulostaa kiva kaunis merkkijono sisältää
mitä se on, että me kirjoitetaan sisään
>> Joten kokeile tätä.
Menossa eteenpäin ja loitontaa, selkä
minun pääteikkuna.
Lähennä alareunassa täällä.
Kirjoittamalla tekevät Hei.
Clang on ilmeisesti uusintana.
Aion kirjoittaa. / Hei, Anna.
Mikään ei tunnu tapahtuvan vielä, mutta se on tällä kehotteeseen
että voin kirjoittaa jotain Nate, Anna, ja nyt meillä on
Hei, Nate.
Ja voin tehdä sen uudelleen Rob, ja niin edelleen.
Joten toivottavasti nyt tämän ohjelman käyttäytyy aion.
>> Nyt ei kaikki käyttäjäystävällinen.
Minulla ei ole aavistustakaan, mitä on odotettavissa minua.
Niinpä voimme varmasti puhdistaa tähän asti hieman.
Saanen palata tänne, ja eikä vain sukellus ja
pyytää käyttäjältä merkkijonon, haluan nimenomaan sanoa
käyttäjä mitä olen odottanut.
So printf ("Anna merkkijono:"
);
Joten ei muuttujia täällä.
Ei prosenttia merkkejä.
Aivan yksinkertaista Englanti lause.
Sallikaa minun nyt mennä pohjaan täällä ja uusintana minun ohjelma.
Mutta mikään ei tunnu muuttuneen.
Miksi?
Minun täytyy kääntää se.
Niin helppo virhe tehdä.
Mutta sinun täytyy ei vain tallentaa tiedoston, mutta
kääntää ohjelman.
Ja niin jos uusinnassa tekevät Hei, nyt clang toimii.
Nyt voin ajaa. / Hello. Ja nyt näen "Anna merkkijono:".
Okei.
Nyt se on hieman käyttäjäystävällisempi.
Nate, Anna, hei, Nate.
>> No, yritetään tätä uudelleen ja alkaa ajatella
noin rajatapauksissa.
Eli aivan kuten Scratch, olet rohkaissut tai ollaan
kannustetaan spec sellaista miettiä mitä voisi mennä
väärin, jos et ennakoida kaikkea käyttäjä voisi tehdä.
Vikoja, siis voisi seurata.
Joten anna merkkijono -
mitä nurkassa tässä tapauksessa?
Mikä skenaario, että minä, ohjelmoija, ei ehkä
odotettavissa?
Joo.
Okei.
Joten mitä jos en kirjoita numero näin?
Selvä.
Niin se toimii edelleen.
Gramatically ei ole mitään järkeä.
Mutta ainakin ohjelma toimii.
>> Mikä on toinen kulma tapauksessa?
Jotain en odottanut.
Niin?
Okei.
Joten voisimme tehdä jotain todella, todella iso määrä.
Tehdäänpä tämä täällä.
Saanen loitontaa toinen, haluan korostaa.
Ei voi kopioida ja liittää tänne.
Selvä.
Joten en voi kopioida ja liittää tämän pääteikkunaa niin me
vain simuloida sitä.
Saanen loitontaa, menossa kääri.
En aio tehdä tätä liian pitkään, koska se ei
todella rikkoa tässä ohjelmassa.
Mutta se voisi.
Enter.
Mutta se ei ole.
Selvä.
Mutta se on aito nurkkaan tapaus.
Ja ainoa syy, että käyttäytyi oikein, niin
puhua, johtuu siitä, että CS50 toiminto GetString on oikeastaan
suunnitellut alla huppu, kuten tulemme näkemään muutaman viikon,
automaattisesti jakaa enemmän ja enemmän muistia, enemmän ja enemmän
muisti käyttöjärjestelmästä, kun se tajuaa, wow,
olet todella kirjoittanut jotain melko pitkä.
Nyt tämä on vähän valkoinen valhe.
Jos me todella pysähtyi jo jonkin aikaa, ja olen kirjoittanut
jotain 5000000000 merkkiä näppäimistöllä
täällä, tai oikeastaan ​​osuma copy-paste melko vähän, me hyvin mahdollisesti
saattaa aiheuttaa ohjelman kaatumisen.
Hieman vaikeampi simuloida että äärellinen
aikaa.
>> Mikä on toinen nurkka tapauksessa voisimme kokeilla?
Niin?
Joo.
Joten miksi emme vastaa mitään?
Joten meillä on todellakin ryhtyä joihinkin toimiin, koska muuten
Ohjelman tulee istua siellä vilkkuu koko päivän.
Mutta jos minä vain Enter -
OK, nyt näyttää silti väärässä.
Eikö kaatua, mutta ehkä siellä on nyt tilaisuus
alkaa toteuttaa tiukempaa ohjelmaa
että todella tarkastaa.
Ja jos merkkijono, lause, sana, jonka minä
kirjoitettu on pituus 0, hyvin, ehkä minun pitäisi huutaa
käyttäjä, tai kertoa hänelle syöttää merkkijonon uudelleen, jotta
me todella saada mitä näyttää oikeaa käyttäytymistä eikä
juuri täydellinen valvonta omasta puolestani.
>> Kysymys takana?
Desimaaliluku.
Joten voisimme kokeilla sekin.
1,10000005.
Tuntuu että menee vain toimivat todella hyvin.
Ja se todella odotetaan.
Vaikka olisimme kirjoittanut, että numero on, tai
isompi numero aiemmin, ymmärtää, että kun olemme kirjoitat käyttäjä
tulo-ja käytämme GetString toimintoa, ei
väliä, jos olen kirjoittamalla näyttää numero.
Muistutan, että mukaan ASCII, kaiken sinun
Näppäimistössä on numeerinen arvo, joka voidaan kuvata
merkki, char.
Joten tässä tapauksessa, vaikka voisin kirjoittaa numero,
tietokone tulee ajatella sitä, niin sanotusti, koska string -
jotain, joka näyttää useita, mutta on
ei itse asiassa useita.
Mutta se on oikeastaan ​​täydellinen SEGUE, koska nyt voimme
todella siirtyminen kirjallisesti ohjelmia
käyttää muita tietotyyppejä.
>> Joten lisäksi käyttää merkkiä, tai pikemminkin, lisäksi käyttämällä jouset,
ymmärrettävä, että meillä on muita tietotyyppejä C sekä
muita kieliä.
Char, kuten nimestä voi päätellä, on vain yksi merkki.
Koho on Liukulukuarvo, ja se on vain hieno
tapa sanoa reaaliluku - jotain, joka on desimaaliluku
kohta sen joitakin numeroita vasemmalle ja / tai oikealle.
Int on kokonaisluku, joka on vain numero kuin 123.
Ja nyt mielenkiintoisesti ovat asioita, kuten kaksinkertainen.
Mitä sanomme kaksinkertainen viime kerralla?
Se on 64, oikea.
Joten taas tyypillisesti float on 32-bittinen -
niin se on tämä pitkä muisti, se käyttää 32 nollia ja ykkösiä ja
edustavat arvoja - kaksinkertainen on kirjaimellisesti kaksinkertainen, mikä
tarkoittaa, että voit joko edustaa isompia numeroita tai
voit sen tarkempia numeroita.
Joten voit olla enemmän numeroita desimaalipilkun jälkeen, mutta
kuten kaveri sanoi videon, vaikka jotain yksinkertaista
käsitteellisesti kuten kolmasosa ei voi edustaa nimenomaan
tietokone, koska lopulta te loppuu bittiä ja
Siksi voit vain tehdä .33333333 niin monta kertaa,
jolloin sinun tarvitsee vain sanoa, että olen poissa edustuksen
tila, minun täytyy vain kutsua sitä päivä ja edustaa sitä
hieman epätarkasti tuosta.
Ja pitkä pitkä -
tyhmä nimi, mutta se on koska siellä tietotyyppi tunnetaan
kauan C, joka sattumoisin on usein 32 bittiä, aivan kuten
int on 32 bittiä, mutta pitkä pitkä
yleensä 64 bittiä.
Niin se vain tarkoittaa, että voit edustaa isompi
numerot kuin tämä.
>> Selvä.
Joten jos todella haluat aloittaa edustavat asioita, me
ehkä kehittyneempiä tyyppejä, ja
Siksi meillä on merkkijono.
Joten CS50 kirjastossa, että tiedosto nimeltä cs50.h, olemme
itse julisti tietotyyppi, niin sanotusti, kutsutaan merkkijono,
mutta merkkijono ei ole olemassakaan.
Tämä on jälleen yksi näistä kerroksista aiomme kuoria
takaisin viikon tai kaksi ja heitä se pois, ja oikeastaan
katso alla huppu, mitä merkkijono oikeastaan ​​on, ja
miten se oli.
Olemme myös menossa katsomaan Boolean-arvot.
>> Joten mikä oli bool yhteydessä Scratch?
Se on tosi tai epätosi.
Joten se on vain arvo, joka on tosi tai epätosi, päälle tai pois päältä, 1 tai
0, mutta haluat tarkastella maailmaa.
Joten C, kiitos CS50 kirjasto, joka puolestaan
sisältää toisen kirjaston alla huppu, olemme
pääsy tietotyyppi kutsutaan bool, joka
kirjaimellisesti avulla voimme määrittää arvot true tai false
asioita ohjelmassa.
>> Joten mene eteenpäin tänne ja kirjoittaa pieni ohjelma, joka
tekee jotain johon numeroita sijaan.
Joten anna minun mennä takaisin CS50 Appliance, anna minun mennä eteenpäin ja
Luo uusi tiedosto tähän nimi -
Sanotaan vain jotain yksinkertaista, kuten math.c.
Selvä.
Ja nyt mene ylös minun ohjelma, olen
aikoo tehdä tavallista -
# Include , jotta voin käyttää
printf, int main (void) -
tulemme takaisin, lopulta, mitä int tarkoittaa
täällä, mitä void tarkoittaa tässä, mutta nyt vain tietää, että
joudut ohjelmia kuten tämä.
Nyt aion mennä eteenpäin ja sanoa jotain hieman
Eri - printf ("Anna minulle numero:"
);.
Sitten aion tehdä int n = GetInt, koska se
Osoittautuu GetInt on toinen funktio CS50 kirjastossa
lisäksi GetString.
Ja nyt aion tehdä jotain typerää, kuten "kiitos
on% d ", desimaali kokonaisluku, ja sitten pilkku n ja
palaa sitten 0.
Joten jälleen, palauttaa 0 ei ole mitään tekemistä numero olen
pyytää käyttäjää.
Vain merkitsee lopussa kaikki, oletettavasti, on hyvin.
>> Joten anna minun mennä alas minun pääteikkuna täällä.
Saanen kirjoita tehdä matematiikkaa, kirjoita.
Ja jotain on vialla.
Tee matematiikka ei toimi.
Tässä on ensimmäinen meidän virheilmoituksia.
Miksi?
Hieman arvoituksellinen, mutta -
Joo.
Niin cs50.h.
Joten jälleen, varsinkin aikaisin, voit kirjoittaa ensimmäinen
ohjelma PSET 1 kohdassa, on virka-ja
rehellisesti, se tulee olemaan valtava joskus mitä nämä asiat
todella sanovat.
Mutta huomaat nopeasti ne alkavat laskea
segmentteihin, jolloin tämä tarkoittaa, että olet jättänyt pois yhden
ja # sisältyvät yläosassa tiedoston.
Ja clang, kääntäjä, on ilmoittaa teille tämän
sanoen melko fancifully, implisiittinen ilmoitus
toiminto GetInt on virheellinen.
>> Selvä.
Joten mitä se tarkoittaa?
Se vain tarkoittaa, olet epäsuorasti ilmoitettu GetInt vuonna
mielessä, että et ole erikseen ilmoittanut sitä.
Nimenomaisesti julistaa int, sinun täytyy opettaa
Clang että se on olemassa.
Ja hyvin yksinkertainen ratkaisu, joka on opettaa sitä
lukien tämä muu tiedosto, cs50.h klo
alkuun tiedoston.
Koska kirjaimellisesti, mitä # include ei se kertoo clang
melko paljon mennä etsimään tiedosto nimeltä cs50.h, kopioida,
liitä se automaattisesti alkuun minun ohjelma minulle,
ja sitten muuntaa lähdekoodin nollia ja ykkösiä.
Mutta se olisi tietenkin erittäin ikävä, jos me ihmiset olisi
mennä kopioiminen ja liittäminen näitä suuria tiedostoja koko ajan,
joten # include juuri tämä kaikki automaattisesti ilman
muddying minun koodi jonkun kanssa kirjastossa.
Ja kirjasto on vain yksi tiedosto, joka sisältää toimintoja ja
muun muassa, että joku muu on kirjoittanut, että olemme
Hyödyntämällä meidän vuoksemme.
>> Selvä.
Yritetään uudestaan.
Tee matematiikka.
Enter.
Hyvä.
Niin, että näyttää toimineen.
Sallikaa minun nyt ajaa matematiikka;. / Math.
Anna antaa minulle numero, 123.
Kiitos 123.
Nyt yritetään toista kulma tapaus.
Merkkijono on melko antelias, koska
merkkijono voi olla mitä tahansa.
Voi näyttää numerot, näyttävät
merkkejä, näyttävät sanoja.
Mutta int on int.
Joten nyt jos olen vaikea käyttäjä, ja se sanoo "Anna minulle
numero, "mitä jos yritän tehdä jotain 0,1?
No, se on numero, ja se on sopusoinnussa
kielioppi käytin täällä, mutta alla huppu, olen of
kurssille toimintoa GetInt.
>> Joten mitä tapahtuu.
Anna, yritä uudelleen.
Selvä.
Saanen olla vaikeaa ja painaa Enter uudelleen.
Anna, Anna.
Joten nyt näyttää siltä, ​​että GetInt on hieman
voimakas kuin GetString.
Me, henkilöstö, toteutetaan siten, että jos huomaamme
et ole antanut meille int - ja int on desimaaliluku
sisältää nollia, niitä, kaksittain, kolmosta, nelosta, vitosta, kuutosta,
seiskat, kasia tai ysiä.
Ja siinä se.
Ei desimaaleja, ei merkkiä, ei välimerkkejä.
Näyttää siltä, ​​että meidän on tehtävä yhteistyötä.
Sallikaa minun yrittää neljä, viisi, kuusi, ja joka saa minut läpi.
Siis todella, olla anaali täällä, minun pitäisi varmaan sanoa "Antakaa minulle
kokonaisluku "voidakseen välittää käyttäjälle
mitä aion.
>> Nyt ajatella alla huppu.
Emme menossa katsomaan miten cs50.h toteutetaan tänään,
että kirjasto.
Mutta jos se pitää sanoa yrittää, yrittää, yrittää, mitä ohjelmointi
rakentaa minä oletettavasti käyttämällä alla huppu
toteuttaa se?
Joten silmukan, eikö?
Yksi yksinkertaisimmat ideat näimme Scratch.
Ikuisesti rakentaa, Toista rakentaa.
Oletettavasti tässä ohjelmassa, alla huppu, vaikka
vaikka se on kirjoitettu C eikä tyhjästä, se tekee
jotain nimeltään vastaa ikuisesti, jos käyttäjä ei ole
kirjoittanut kokonaisluku, vaikkapa yrittää, yrittää, yrittää, yrittää, joten
lopulta kun me ei saada kokonaisluku, niin
murtautua ulos että silmukka.
>> Joten mitä muita toimintoja voidaan käytämme täällä CS50 kirjastossa?
No, tavallaan selvää niistä, ainakin perustuvat
tietotyyppejä että tiedämme nyt olemassa.
Otimme GetString, GetInt, vaan koko
ensimmäisten viikkojen ajan, voit käyttää myös GetFloat ja
GetDouble ja GetLongLong saadakseen tarkasti
tietotyypit, jotka haluat.
Koska avain yksityiskohta on, että toisin kuin joissakin kielissä,
kuten Python ja Ruby, jossa sinun ei välttämättä tarvitse
julistaa tietotyyppi muuttujan -
sinun ei tarvitse kertoa tietokoneen millaista tavaraa
aiot laittaa muuttuja -
C, sinun täytyy olla aina niin tarkka.
Joten jos haluat muuttuja nimeltä N kimpale varastointi
että tässä tapauksessa sattuu olemaan 32 bittiä sopimuksen mukaan, voit
on kertoa tietokoneen nämä bitit ovat
menossa tallentaa numeron -
ei merkki, eikä merkkijono, eikä float.
Ja tämä ratkaisee ongelman me tehokkaasti
juoksi viime viikolla.
Jos käytämme nollia ja ykkösiä numeroita edustaa paitsi
numeroita vaan ja B ja Cs, miten maailma on
tietokone tulee tietää, että tämä malli bittien todella
edustaa numero 65, toisin kuin edustavan
kirjeen, joka sattumalta mukaan
ASCII, muistuttaa, vastasi 65?
>> Joten nämä tiedot tyypit tarjoavat yhteydessä tietokoneeseen, niin
että se tietää, että jos nämä bitit pitäisi tulkita
int tai merkkijono.
Kaikki kysymykset, sitten tämän?
Niin?
DAVID J. MALAN: Hyvä kysymys.
Jos otamme pois stdio.h, me tallenna tiedosto -
anna minun mennä alas pääteikkuna ja suorita make matematiikka, zoom
ja anna -
Nyt saan eri virhettä, koska olen implisiittisesti
julistaa mitä toimia nyt?
Printf.
Joten nyt olen luonut uuden ongelman, jonka ratkaisu on
olennaisesti sama.
Minun täytyy laittaa se takaisin.
YLEISÖ: [kuulumattomissa]
DAVID J. MALAN: Oh.
Joten jos otan pois -
Okei, joo.
Joten jos voin poistaa vakio I / O-kirjasto sisällyttäminen ylös
täällä, ja sitten sanot jos pääsen eroon printf, saavat
eroon printf?
Kyllä.
Tämän pitäisi toimia, koska en enää käytä mitään - Hupsista.
Sanoinko juuri valehdella?
Selvä.
Tämä ei toimi, koska uuden virheen me vain käyttöön.
Ja tämä on hieman itsestäänselvyyksiä.
>> Mikä on ongelmana?
Käyttämätön muuttujan n.
Niin tämä virhe on tulos siitä, että se on konfiguroitu
Laitteen erityisen pikkutarkka, todella huutaa
jokaisesta mahdollinen virhe, vaikka se on eräänlainen
ei-fataali virhe näin - on se todella niin suuri
käsitellä, että olen varattu int, laita numero, ja sitten
juuri tehnyt mitään sen kanssa?
Niin toiminnallisesti, no.
Se ei tule rikkoa ohjelmaan.
Se on vain typerää, eikö?
Ei arvoa hakeneista että numero, varastoitu
se muuttuja, jos olet koskaan tehdä mitään
sen kanssa, onko tulostaa tai tallentaa sen.
Joten tässä tapauksessa, clang on tunnustaa niin paljon, ja
se sanoo käyttämätön muuttuja n.
>> Jotta voimme korjata tämän, jos todella haluamme.
Mutta taas, tämä ei ole hyvä ohjelma nyt.
Joten voisin tehdä tätä -
mene tänne, haluan tyhjentää näytön, tee matematiikka.
Se toimii.
Nyt voin ajaa minun matematiikka ohjelma vie tulo -
No, se oli huono.
Tulee tulo, ja että on kaikki se, tässä tapauksessa.
>> Joten oikeastaan, yritetään yhdessä muussa nurkassa tapaus, että me
ei ajattele aikaisemmin.
Tässä tapauksessa - tässä mennään takaisin yksi, joka on
hieman käyttäjäystävällinen.
Saanen palata tänne ja suorita make matematiikka uudelleen.
Oho, mitä tein väärin?
Täytyy perua entisestään.
Okei.
Nyt olemme takaisin alkuperäiseen tilaan, jossa kaikki
on toivottavasti hyvin.
Ja nyt jos juoksen matematiikkaa, 123 tuntuu toimivan.
Mutta tämä ei ole todellakaan tehokkaita todisteita, vain sanoa
Okei, se toimii.
789, joka toimii.
Aikaa toimittaa.
Koska siellä on muita rajatapauksissa täällä.
Merkkijono ei todellakaan anna meille paljon vaivaa kirjoittamalla
paljon merkkejä.
Mutta entä jos en kirjoita tähän?
Lyömällä numero 1 paljon, paljon täällä -
Selvä, se alkaa hieman tylsä, joten aion
lopettaa tähän, ja aion Enter.
>> Mitä helvettiä juuri tapahtui?
Joten tämä voi todella selittää.
Joten ei se ota se binary?
Hyvä ajatus, mutta ei, se ei ole sitä, että se otti
kuten binary, koska todellakin, se oli vain sellainen
sattuma.
Voimme tehdä tämän uudestaan.
Joten ei ole mitään 2-binary-järjestelmän, joka on
luultavasti tarpeeksi muutenkin.
Enter.
Niin että ei ollut ongelma.
Mitä muuta?
Aivan.
>> Joten muistelen mitä int todellisuudessa on.
Se on 32 bittiä, jotka yhdessä tulkitaan
lukuna.
Jos on 32 bittiä, se tarkoittaa, että kukin bitit voivat olla
0 tai 1, 0 tai 1.
Joten se tarkoittaa, että on kaksi vaihtoehtoa tämän bitin,
kaksi mahdollisuutta, että kaksi mahdollisuuksia tämän
bit - niin se on 2 kertaa 2 kertaa -
niin se on 2 32 teho on kokonaismäärä
permutaatioista nollia ja ykkösiä, jos sinulla on 32
paikkamerkkejä nollista tai ykkösistä, edessä.
Joten jos olen 2 32, matemaattisesti, että mitä?
Joten se on paljon.
Se on 4000000000, antaa tai ottaa.
Ja 4000000000 ei näytä olevan mitä tulostaa täältä.
Itse asiassa tämä näyttää lähempänä 2000000000.
Mutta tämä ei ole sattumaa.
Siitä, että tietokone on tulkinnut minun valtava määrä,
minun valtava jono ykkösiä ja sitten minun valtava jono kaksittain,
kuin noin 2 miljardia selitetään miten?
On korkki int.
Siellä on varmasti suurin arvo, joka voi edustaa.
Mutta se on yleensä 4000000000, eikö?
Jos 2 ja 32 on noin 4 miljardia euroa, joka tuntuu
se on suurin numero.
Joten ei muilta, mutta hyvä ajatus.
Negatiivisia lukuja.
Joten jos sinulla on 4 miljardia mahdollisia asioita voit
edustavat näitä eri permutaatiot 32 0 ja
1s, hyvin, on järkevää, että me ihmiset saattavat haluta
edustavat ei vain positiivisia kokonaislukuja
mutta negatiivisia kokonaislukuja.
Ja todellakin, se olettaa, että C tekee.
Joten 32 bittiä, voit edustaa karkeasti negatiivinen 2
miljardia kaikki tavalla jopa myönteisiä 2000000000.
Ja niin tässä tapauksessa, mitä me oikeastaan ​​nähdä vain
laitamilla kykyjä kokonaisluku, ja olemme, niin
puhua, tulvimisesta kokonaisluku.
Olemme yrittäneet ahtaa enemmän bittejä sinne kuin voi oikeastaan ​​sovi.
Niin lopputulos on, että meillä on olennaisesti kaikki 1 bittiä.
Olemme selattava kaikessa bittiä, olemme yrittäneet edustamaan
suurin mahdollinen määrä, mutta se ei selvästikään ole läheskään
tarpeeksi suuri edustaa kaksi asiaa olen juuri kirjoittanut tuumaa
Niin?
YLEISÖ: [kuulumattomissa]
>> DAVID J. MALAN: Hyvä kysymys.
Miksi emme edusta vain että negatiiviset
merkki vain hahmo?
Joten me ehdottomasti voisi, ja voisimme sitten pelastaa
lisäbitin.
Mutta olet silti täytyy edustaa tätä viiva, ja
että tulee maksamaan sinulle ainakin jotain,
oletettavasti hieman.
Joten kyllä, meillä voisi olla 32 bittiä käytetään meidän numero, mutta nyt
Tarvitsemme toinen vähän käytetty meidän Dash
symboli, miinusmerkki.
Joten nyt meillä on 33 bitin arvot, joita voisimme tehdä, mutta se on
juuri ole, miten se on tehty.
Teimme arvostele vuotta sitten, 32 bittiä on eräänlainen
mittayksikkö täältä.
Joten aiomme käyttää yhtä näistä biteistä tehokkaasti
edustavat negatiivisuutta, ja 31 bittiä edustaa numero.
Muita kysymyksiä?
Selvä.
Se on paljon.
Miksi emme mene eteenpäin ja otamme viiden minuutin taukoa täällä?
>> Selvä.
Joten jälleen, ei apunasi matemaattinen sovelluksia
ohjelmoinnin, haluan vain nyppiä pois tästä yksi esimerkki
ennen kuin siirrymme muihin konstruktioita, vain koska se
havainnollistavat muutamia yhteisiä kompastuskivi pistettä joihinkin
perusasiat, kun se tulee kirjoittaa ohjelmia.
Tässä tapauksessa, laskutoimitusten ilmaisuja, jotka ovat jonkin
mielenkiintoista merkitystä syntaksin.
>> Joten tämä on vain kaava, jolla voimme muuntaa
lämpötilat Fahrenheit ja Celsius.
Jos et muista, tämä on vain kaava.
Joten jos me kytkeä Fahrenheit arvo 32 astetta, mikä on
jäädyttäminen, että tulee olemaan 32 miinus 32 on 0, ja todellakin,
0 Celsius on myös jäätymisen.
Niin nopeasti järki tarkistaa siellä - se on tuttu kaava.
Antakaa minun mennä yli laitteeseen, vaikka, ja aloita
kirjoittaminen ohjelma nimeltä, kuten, f2c, "Fahrenheit
Celsius piste c ".
Ja ylös huipulla täällä, aion aloittaa pois # include
stdio.h, ja aion tehdä int main (void), ja
jälleen, tulemme takaisin tulevaisuudessa, mitä int tarkoittaa
siellä ja mitä void tarkoittaa siellä.
Ja nyt haluan mennä eteenpäin ja toteuttaa ohjelma, joka
lähinnä tämä muuntaminen meille.
>> Joten printf, sanokaamme, lämpötila Fahrenheit.
Ja sitten haluan mennä eteenpäin ja saada arvoa käyttäjältä.
Millainen arvo pitäisi saada käyttäjän jos haluan
heitä antamaan minulle lämpötila Fahrenheit?
Niin?
Mitä ehdotatte?
Joo.
Joten float tuntuu melko kohtuullinen.
Meillä on taas vain muutamia vaihtoehtoja, jotka
olemme nähneet tähän mennessä.
Meillä on asioita, kuten nieriä, kaksinkertainen, kellua, int, pitkä pitkä,
bool, merkkijono.
Joten näistä, float tuntuu melko kohtuullinen.
Voisimme käyttää kaksinkertainen, oikea, sillä jos haluamme todella
edustavat ihmisen lämpötila -
98.60000 -
voisimme käyttää 64 bittiä tehdä niin, mutta se tuntuu
ylilyönti lämpötilan.
Joten vain mennä kellua.
Nyt tarvitsen muuttuja.
Vain pitää asiat yksinkertaisina, aion kutsua sitä f, mutta
voisi yhtä perustellusti kutsua sitä lämpötilaa,
mutta joko on hieno.
Joten float f = GetFloat.
Heti kun olen nyt päättänyt käyttää GetFloat, olen kuitenkin
täytyy tehdä yksi korjaus.
Joo.
Joten meidän # include , muuten kääntäjä on
menossa huutaa meille.
Nyt minulla on float, anna minun mennä eteenpäin ja tehdä
muuntaminen.
>> Joten ensin haluan myös tottua täällä
kommentoi minun koodi.
Joten jälleen, kommentti on vain merkintä ihmisen, joka on
ei ole osa ohjelmaa sinänsä, mutta se on yksi, auttaa
ymmärtää, mitä teit seuraavana aamuna, tai seuraava
kuukaudessa, se auttaa opetuksen stipendiaatti ymmärtää, mitä teit
tai mitä aikoi tehdä, joten se on
yleensä erittäin hyviä toimintatapoja.
Aina muutaman rivin koodia, kirjoittaa kommentin
itseäsi tai työtoverisi.
Joten tässä, aion sanoa, "Kysy käyttäjältä lämpötilan."
Ei tarvitse olla kokonainen lause, vain lyhyt lause.
Mutta idea kommentoimalla C on, että jokainen
kommentit olisi annettava sinä - tai vaikkapa TF tai kollega -
silmäillä ohjelman ja tietää tarkalleen, mitä se tekee, se ei
niin paljon lukemista koodia, mutta lukemalla kommentit, jotka
tulisi olla ytimekäs ja selkeä.
Selvä, joten nyt haluan mennä eteenpäin ja sanoa, "Convert
Fahrenheit Celsius. "Joten aion mennä eteenpäin ja tehdä,
sanotaanko, float c.
Pidämme Celsius kuin Liukulukuarvo.
>> Ja anna minun ottaa puukottaa tätä.
Kaava on jälleen täällä.
Koska 5/9 kertaa F miinus 32.
Joten tehdään tämä.
Joten 5 jaettuna 9, miinus -
Oho, olen sekaisin sen jo.
Times.
Joten 5/9 kertaa F miinus 32.
Joten F miinus 32, puolipiste.
Ja nyt, täällä, aion mennä eteenpäin
ja sanoa, tulostaa tuloksen.
Ja tämä osa on helppo. Printf.
Miten edetä tulostamista tästä?
No, voisin sanoa "Tuo luku Celsius on% f \ n",
vain muutamia estetiikkaa.
Ja mitä sitten arvoa en halua kytkeä täällä printf n
Toinen perustelu?
Okei.
Joten c.
Niinpä aloitamme tämän ja sitten vain palata 0.
Uudelleen, se ei ole mitään tekemistä matematiikkaa.
Se vain tarkoittaa että kaikki on hyvin.
>> Nyt on tämä oikea, tämä ohjelma?
Selvä.
Joten olen tehnyt joitakin virheitä.
Vaikka sinulla ei ole aavistustakaan, mitä ohjelmointi on, voit lajitella
ja päättelevät takaisin peruskoulun mitä
virheitä täällä voisi olla.
Mitä yksi ensimmäisistä?
YLEISÖ: [kuulumattomissa]
DAVID J. MALAN: Joo.
Eli meiltä puuttuu sulkeita.
Se oli tahallinen, että tein suluissa perussävel
liu'uta täällä, koska siellä oikeastaan ​​tämä käsite tilauksen
toiminnan tai edelle, jolloin tietyt toiminnot -
kertolasku -
on korkeampi sitova, on korkeampi etusija kuin asiat
kuten lisäys tai vähennys.
Joten olemme tehneet tätä jo vuosia vain tehdä selväksi täsmälleen
Mitä matemaattinen operaatio pitäisi tehdä ensin.
Joten minun pitäisi varmaan jäljitellä juuri tätä.
Muuten tietokone on oletettavasti yrittävät tehdä
jotain jakautuminen 5 9, niin kerrotaan F, vähennä
32 alkaen koko juttu.
Joka ei itse asiassa mitä haluamme tehdä.
Joten parenthesize.
Katsotaanpa lisätä minun sulkeisiin tässä, suluissa täällä.
Laitetaan tämä tänne.
Täällä olen vain huomannut toisen virheen tein matkan varrella.
Niin?
YLEISÖ: [kuulumattomissa]
>> DAVID J. MALAN: Ah.
Hyvä.
Joten meillä on todellakin sama kokonaisluku
jako asiaa ennen.
Olen paikkansa, että katsotaanpa mitä oire on.
Mutta aiomme pitää korjata yhden
muut erehdys.
Niin?
YLEISÖ: [kuulumattomissa]
DAVID J. MALAN: Kyllä.
Joten tyhmä virhe tein, mutta uskomattoman tärkeä.
Tietokone ei aio vain sulkea silmänsä ja antaa
minun käyttää pääomaa F, kun olen itse julisti muuttujan
kuten pieniä f täällä, vastaa 8.
Joten minun täytyy korjata vastaamaan 11 minun arvo, joka
hetki sitten oli pääkaupunki F vahingossa.
Entä täällä?
Pitäisikö tämän olla pieniä samoin?
Olisi, mutta se sattumaa.
Että% f ei ole mitään tekemistä muuttuja.
Joten vain olla super selväksi täällä, anna minun mennä eteenpäin ja
Nimeä lyhyesti "lämpötila". Saanen nimeä
Tämä "lämpötila". Saanen ei nimeä tätä.
Koska taas% F maailmanlaajuisesti tarkoittaa "Liukulukuarvo."
Ei ole mitään tekemistä minun muuttuvan.
Mutta "lämpötila" levällään on vain vähän monisanainen,
joten aion mennä takaisin minun pieni "F" s.
>> Nyt haluan mennä eteenpäin alas minun ikkunaan täällä.
Make f2c -
joka oli jälleen mielivaltainen nimi I
antoi tähän tiedostoon.
Näyttää koonneet.
Saanen juosta f2c.
Enter.
Lämpötila Fahrenheit - Tehdään helppo.
32.
OK, korjata.
Mutta, jos en nyt tee 212 kiehuvaa -
damn.
Selvä.
Joten selvästikään ole oikein, jos TF yrittää
ainakin kaksi arvoa.
Joten mikä on ongelma?
No, olet jo laittaa sormi mitä asiasta on.
Mutta miksi näin on?
Täällä, kun olen tekemässä matematiikkaa 5 jaettuna 9.
Niin käsitteellisesti, että on täysin oikein.
Täysin sopusoinnussa kaavalla.
Mutta tietokoneet vain tehdä juuri mitä
kertoa heille tehdä.
Ja mitä me tosiasiassa kertoo tietokoneen tässä
jaa kokonaisluku 5 kokonaisluvun 9
ja anna minulle tulosta.
Ongelmana on kuitenkin, kun et jakolaskuja tietoja
tyyppejä, lähtö on samaa tietotyyppiä kuin tulot.
Ja joten jos kaksi tuloa ovat molemmat ints, lähtö on menossa
olla int.
Ja niin 5 jaettuna 9 on pilkku jotain.
Mutta mitä lähin kokonaisluku kohtaan jotain?
Joten, se on oikeastaan ​​0.
Niin kuin olemme keskustelleet maanantaina, kaikki desimaalipilkun jälkeen
kohta saa katkaistu.
Se vain saa heittää pois.
Joten tämä on täydellinen virhe, koska voisin yhtä hyvin
kerrotaan kaiken 0 tänne.
>> Nyt voin korjata tämän pari tapaa.
Voisin tehdä tätä.
5,0 jaettuna 9,0.
Teknisesti, en edes tarvitse tehdä.
Se riittää vain tehdä yhden numerot float -
tai kaksinkertaisen - laittamalla desimaalipilkun täällä.
Koska mitä tapahtuu nyt, kun jaat kokonaisluku by
float tai kaksinkertainen, tietokone menee ymmärtää
oh, yksi niistä on tarkempi.
Saanen err puolella antaa sinulle enemmän tarkkuutta kuin
sinulle tarkoitettu.
Joten se muuntaa tulos -
se palauttaa tuloksen Liukulukuarvo samoin.
Joten se toimisi.
Tämä toimisi.
Ja vielä yksi muu mekanismi, joka nähdään vuonna
tarkemmin ensi viikolla.
Voit itse, kuten ohjelmoija, kerro tietokone
todella kohtelevat tietotyypin
vaikka se oli toinen.
>> Joten voisin itse tehdä tämän.
Suluissa, voin sanoa jotain (float), avoin
Paren, sulje paren.
Ja tämä on mitä kutsutaan "valu". Jälleen, lisää
tästä ensi viikolla.
Mutta tämä on vain ohjelmallinen tapa kertoa
tietokone, joo tiedän 9 on kokonaisluku tai pitkä.
Tiedän, että se ei ole Liukulukuarvo.
Mutta kohdella sitä sellaisena tapauksessa.
Joten heittää tietotyyppi tarkoittaa muuntaa
yhdestä toiseen.
Rehellisesti sanottuna tämä on vain pieni ruma, joten ehdotan mennään
takaisin alkuperäiseen ehdotukseen vain muuntaa
näitä asioita liukuluvuiksi manuaalisesti.
Koska nyt on aivan super selväksi, mitä on tekeillä, ja
se ei ole kaikki, että häiritsevä.
>> Joten nyt mennä takaisin minun pääteikkuna.
Tee f2c.
Anna minun mennä eteenpäin ja ajaa tätä.
Ja kuten syrjään, et kyllästy kirjoittaa näitä komentoja
uudestaan ​​ja uudestaan, ymmärtää, että tietokoneet, kuten Linux täällä,
melkoisen fiksu.
Ja jos minä osuma, voimme käydä läpi koko historian
komentoja, ylös ja alas.
Eli tässä tapauksessa täällä, voin vain mennä jopa ajaa tekemään f2c.
Minua huusin, koska tein että toinen sitten.
Se on jo ajan tasalla.
Joten nyt voin ajaa f2c uudelleen.
Kokeillaan 32 Fahrenheit.
Nyt yritetään 212 Fahrenheit.
>> Huoh.
Tuntuu toimivan.
Nyt tämä on hyvä, mutta se tuntuu hieman mielivaltaista joka
Näytän kuusi numeroa desimaalipilkun jälkeen kohdat.
Oikea?
Jos olet sää henkilö televisiossa, olet sellainen Doofus
jos luet lämpötila
Tämä tarkkuus.
Joten yksinkertaistamiseksi.
Joten itse mennä tänne, minun printf.
Ja joo, haluan kellua.
Mutta haluan nyt määritellä tarkasti.
Ja aion olla hieman ytimekäs.
Aion sanoa, anna minulle yksi piste kuluttua desimaalin tarkkuudella.
Joten sen sijaan sanoa% f, aion sanoa% .1 f.
Ja tämä tarkoittaa vain antaa minulle yhden paikan
desimaalipilkun jälkeen.
Selvä.
Kokeillaan uudestaan.
Saanen uusinnassa sen jälkeen kokoamisessa.
Ja nyt minä kirjoita 32 ja minä saada takaisin
ytimekkäämpi arvoa.
Ja voin kirjoittaa, nyt 212, ja saada takaisin suppeampi
arvo.
Ja siellä on muita asioita voit tehdä printf.
Voit itse määrittää, kuinka suuri määrä olisi.
Jos haluat olla pehmusteet sitä, joten voit hiiren tasata tai
vasen-align kaikki numerot tai
yrittää center asioita.
Joten ymmärtää olemassa vähän temppuja voit tehdä siellä.
Mutta he vain keitetään alas muotoon koodeja,
kuten olemme siellä.
>> Joten mitä tässä numerossa edelle.
Tämä on erittäin tylsä ​​pöydän läpi järjestelmällisesti.
Mutta ymmärtää, että laatijat C on keksiä
säännöt, joissa määritellään toimijat ovat korkeammat
edelle, enemmän sitovaa valtaa, kuin toiset.
Joten taas alakoulussa, me yleensä tiesi, että se oli
kerto-ja jakolasku, sitten yhteen-ja vähennyslaskua,
sitten joitakin muita juttuja.
Maailmassa ohjelmointi, siellä paljon
pidempi lista asioista.
Ja tämä ei ole jotain syytä muistaa nyt.
Saat totutettu ennen pitkää.
Mutta aivan kuten alakoulussa, suluissa yleensä ratkaista
kysymykset edelle, tekemällä erittäin selväksi
tietokoneen ja ihmisen lailla, mitä on tarkoitettu.
Joten pitää tätä hieman lunttilappua siellä.
Mutta suurin niistä yksityiskohtia emme pääse vähään aikaan.
>> Selvä.
Nyt, rakentaa ja siirtymään pois näiltä typerä pikku
matemaattisia esimerkkejä.
Silti käyttää samoja perusteita, mutta aloita
ilmaista itseämme hieman enemmän kuin Scratch.
Joten Scratch, meillä oli nämä Boolen lausekkeita.
Ja Englanti, Boolen lauseke on mitä?
Totta vai tarua.
Se on jotain, tosi tai epätosi.
1 tai 0.
Päälle tai pois päältä.
Mitä haluat kutsua sitä.
Nyt Scratch, palapelin palat näytti tältä.
Ja se on yhdistelmä, pohjassa siellä kolme
palapelin palaset.
Yksi yhdessä -
jotain, joka on tyhjä ja tyhjä.
Ja sitten kaksi Boolen sisälle.
Joten voit pesä Boolen saada enemmän
monimutkaista Boolean ilmaisuja.
Esimerkiksi, jos se on lauantai, ja se on mukavaa
sää, sitten mennä ulos.
Tai jotain mielivaltaista tuollaista.
Joten voit liittyä Boolen keksiä
suurempi totuusarvo, jonka vastaus perustuu
on pienempiä.
>> Nyt, C, onneksi tämä kartoitus on
oikeastaan ​​aika yksinkertainen.
Sulut auttaa selvittää asioita täällä.
&& Mitä tarkoittaa "ja". Niin, että miten
aiomme muuttaa nämä lohkot tyhjästä C.
Ja edellytykset näimme Scratch, vasemmalla
puolella, voin pinota niitä samankaltaisesti C. Jos x on pienempi
kuin y, tee tätä.
If x on suurempi kuin y, niin tähän.
Else loogisesti niiden on oltava sama, joten sano
että ne ovat yhtä suuret.
Joten voimme nyt alkaa rakentaa näitä asioita.
>> Tehdäänpä esimerkki.
Saanen avata tiedoston, joka on kurssin verkkosivuilla, että
Kirjoitin etukäteen.
Tätä kutsutaan nonswitch.c.
Ja näemme miksi vain hetken.
Joten tämä tiedosto - nonswitch.c--
ensin ymmärtää, että on olemassa koko joukko
kommentit yläreunassa.
Se on vain selittää tiedoston nimi, mitä se
ei, ja niin edelleen.
Ja se ilmeisesti osoittaa käytön Boolen JA-ta -
conjoining kaksi ilmaisua.
>> Joten miten tämä ohjelma toimii.
Voin lisätä kaksi tiedostoa, cs50.h ja stdio.h.
Jos minä selaa, nyt on ohjelma, se on vähän pidempi
kuin olemme kirjoitettu ennen, mutta melko luettavissa.
Joten haluan ensin tulostaa käyttäjälle, linjalla 18,
"Anna minulle kokonaisluku väliltä 1 ja 10". Niin
että on tuolla.
Nyt saan kokonaisluku.
Mutta ymmärrä, että GetInt - melko yksinkertainen.
Se vain mennä int.
Se aikoo varmistaa, että se saa int eikä
merkkijono tai float.
Mutta se ei aio tehdä minkäänlaista rajan tarkkailun.
Se ei aio suodattaa numeroita olla välillä
tietyissä rajoissa.
Joten meidän täytyy toteuttaa se itse.
Eli aivan kuten Scratch, jossa voisin tehdä konjunktio
kaksi lauseketta, voin tehdä sen C seuraavasti.
Jos n on suurempi tai yhtä suuri kuin 1, ja n on pienempi kuin ja
tai yhtä suuri kuin 3, aion hyvin mielivaltaisesti käskyn, että
numero olla pieni määrä.
Vain vuoksi julkilausuman.
Else jos n on välillä 4 ja 6, print "Valitsit keskipitkällä
numero. "if n on välillä 7 ja 10, print" Valitsit
suuri määrä. "muuta tulosta" Valitset virheellinen numero. "
Koska loogisesti, että seuraa jos olemme
loppuun valikoimaamme.
>> Joten ymmärtää tämä ei ole aivan miten kirjoittaa tai suurempi
vastaa vuonna matematiikan luokassa.
Oikea?
Voit yleensä tehdä se näin, jossa viiva sen alle.
Mutta ei ole sellainen keskeinen minun näppäimistö.
Niin symboli C ilmaisemiseen tai suurempi kuin
yhtä suuri kuin on kaksi merkkiä, ja symboli alle
tai yhtä suuri kuin on kaksi merkkiä samoin.
Selvä.
Joten jos suoritat tämän ohjelman, voit varmaan arvata mitä se on
teemme.
Jos menen eteenpäin ja tehdä nonswitch, Enter.
Ja sitten ajaa nonswitch.
Anna minulle numero 1 ja 10.
Aion antaa sen 11.
Otin virheellinen numero.
Yritän numero 3.
Otin pienen määrän.
Joten melko suoraviivaista siellä.
>> Mitä jos haluan muuttaa käyttäytymistä tämän ohjelman ja
tehdä jotain hieman erilaista sijaan?
Anna minun mennä eteenpäin ja sanoa.
Saanen päästä eroon kaikesta tästä.
Ja haluan sanoa, jos (n == 42).
Ja sitten aion mennä eteenpäin ja sanoa print "Valitsit
oikea vastaus. "Else aiomme mennä eteenpäin ja sanoa,
printf ("Valitsit
väärä vastaus. "); Okei.
Vain siksi.
>> Nyt muutamia kohtia voimme tehdä täällä.
Yksi, en kirjoita symboli luulisi on
järkevin.
Kun haluan tarkistaa tasa-kääntyy pois et käytä
yhtäläisyysmerkki.
Voit sen sijaan käyttää yhtä yhtäläisyysmerkki.
Ja miksi se voisi olla vain intuitiivisesti?
Joo.
YLEISÖ: [kuulumattomissa]
DAVID J. MALAN: Oikea.
Yhtäläisyysmerkki käytetään jo tehtävän.
Joku ei tosiaan tätä kautta.
Ja nyt, kun se tulee tasa testaus, meidän on
olla selkeä, ja sano vastaa yhtä.
Hyvin yleinen virhe on tehdä tämä.
Ja jos virka tai ensi viikolla tai
Seuraavat kaksi viikkoa teet jotain tällaista, ja sitten
kamppailemaan sen 10, 20 minuuttia yrittää selvittää
Mikä hemmetin vika on, ymmärtää, että olet yksi niistä
ihmisiä, jotka teki tämän virheen.
Joten, super helppo tehdä.
Mutta tavoitteena onkin nyt torjua tämän virheen.
Tämä voi arvioida, sillä se, mitä tämä todella sanoo?
Jos n saa 42.
Joten verbi ihmiset käyttävät, sanallisesti ilmaista
käsite luovutus on "saa". Joten jos n saa 42.
Joten se tarkoittaa antaa 42-n.
Nyt minulla on Boolen lauseke suluissa,
sisällä tämän edellytyksen, jonka arvo on 42.
Oikea?
Koska jos arvioimaan sen sisältä ulos, yhteensä
vastaus, nyt on 42.
>> Joten jos Kysyin teiltä kysymyksen, "Jos (42)," mikä on
todella sanoa?
No, Boolen lausekkeita voi olla vain tosi tai epätosi.
1 tai 0.
Päälle tai pois päältä.
Joten meillä näyttää olevan nurkkaan tässä tapauksessa, jolloin kaikki
äkillinen, en sano "jos (42)". Tämä ei ole totuusarvon.
Joten mitä tietokoneet tekevät, vaikka on se lähinnä vastaa
mitään, ei 0 tulkitaan olevan totta.
1.
On.
He kaikki toiminnallisesti vastaavat.
Ainoastaan ​​arvo 0 tai avainsanan väärä, kuten tulemme
lopulta nähdä, on oikeastaan ​​väärä.
Joten ", jos (42)" olisi todella olla totta, koska se on ei-nolla.
Joten tarkemmin sanottuna tässä Boolen arvo ei todellakaan ole niin
paljon totta vai tarua, mutta tämä
tapauksessa, jos on 0 tai ei-nolla.
Joten vääriä tai ole vääriä.
Ja jonka avulla voimme kattaa kaikki enemmän
mahdollisuuksia sulkulausekkeesta.
Joten meidän täytyy, aina niin huolellisesti, sanoa -
jos (n == 42).
Yksinkertaisesti siksi meidän on määrittää testin tasa-
ei siirrosta arvo.
>> Mitä muuta on syytä huomata täällä?
Nämä aaltosulkeita eivät oikeastaan ​​ole tarpeen.
Olen tehnyt niitä vain olla NIT-nirso täällä.
Mutta kun sinulla on sairaus, joka on vain yksi rivi
koodia, kuten mukavuus, ohjelmoijat ei tarvitse käyttää
aaltosulkeita.
Riittää vain luetelmakohdan esteettisistä syistä, ja
Sitten kirjoita rivi koodia.
Vasta kun haluat kirjoittaa kaksi riviä koodia - ja
Esimerkiksi muuten printf ("Hei!"). Jos haluat tehdä
, että tämä on rikki.
Voit luetelmakohta kaiken haluamasi, mutta se, että olet
kirjoitettu kaksi riviä koodia ilman aaltosulkeita
tarkoittaa, että tämä ohjelma ei toimi oikein tai saattavat
ei edes kääntää oikein.
Joten nyt, ollakseni rehellinen, minusta paras tapa on vain
Käytä aaltosulkeita, ja huomaat, että he tekevät
erittäin selväksi, mitä on tekeillä.
>> Myös, koska syrjään - varsinkin jos olet yksi niistä, jotka käyttävät
Suositeltavia teoksia tai resursseja verkossa -
tajuaa, että tämä käsite tyylin
ohjelmointi.
Ja jotkut ihmiset todella haluavat laittaa kihara ahdin
tänne linjalla.
Jotkut ihmiset haluavat tehdä naurettavia asioita,
haluaisin laittaa ne tänne.
Ei ole väärää vastausta, kun se tulee
tyyli, mutta tämä on väärin.
Mutta jotkut ihmiset tekevät sen.
[Naurua]
DAVID J. MALAN: Eli Mainitsen tämän nyt yksinkertaisesti siksi koska
luet ylös asioita kirjoista tai verkossa, olet menossa
erilaisia ​​viestejä eri opettajien ja
Eri kirjoittajat.
Ja juuri ymmärtää, että toiminnallisesti, he
yleensä vastaa, mutta johdonmukaisesti.
Joten tässä tapauksessa, me standardisoida kihara
housunkannattimet riviin tänne vasemmalle.
>> Selvä.
Joten mene eteenpäin nyt ja ajaa tätä, ja katso mitä tapahtuu
tällä ohjelmalla.
Tee nonswitch.
Sitten ajaa nonswitch.
Anna kokonaisluku välillä 0 ja - niin, että ei ole merkitystä
enää, mutta olen juuri menossa mielivaltaisesti sanoa 42.
Ja otin oikean vastauksen.
No nyt mennään todella ottaa tämän eri suuntaan.
On käynyt ilmi, on olemassa joitakin muita syntaksin me
voi käyttää ohjelmaa.
Tässä on uusi pala syntaksia on toiminnallisesti sama,
vaan tuo toinen tapa ilmaista itseämme.
Joten tämä on mitä kutsutaan "kytkin lausunto." Ja
vaihtolause toimii seuraavasti.
Kestää, suluissa, arvo, jonka haluat
"Kytkin".
Haluat käyttäytyä eri perusteella sen arvosta.
Joten tämä tarkoittaa kytkin n: n arvo.
Ja mitä tämä tarkoittaa?
No, jos n on 1 tai 2 tai 3, mennä eteenpäin ja tulostaa "You
valitsi iso numero "ja sitten tauko.
Syynä tauko on, että tapa C toimii on yhtä
Heti kun se toteaa tapauksessa, joka vastaa, se alkaa täytäntöönpanovaltion
kaikki koodi alla.
Joten jos minulla on yksi rivi koodia, niin kuin minä täällä line 27, se
saa suorittaa.
Jos voin lisätä toisen rivin tässä, se saa teloitettiin.
Toinen linja täällä, se saa teloitettiin.
Ohjelma pysähtyy vain täytäntöönpanovaltion mitä alla
soveltaa tapaus tuloslaskelmaan, kun I nimenomaan
sanoa "break". Niin väärin.
Aivan, tässä tapauksessa seurauksena.
Asia 4 tai 5 tai 6, vastaavasti, on menossa
tulostaa viestin.
Tässä tapauksessa, keski-numero.
Riko.
Tapaus 7, 8, 9, 10, se tulee tulostaa "Valitsit iso
numero. "Break.
Ja sitten on kirjaimellisesti avainsanan nimeltään "default"
se tehokkaasti kuin "muuten" rakentaa.
Joten uusi syntaksi, mutta älyllisesti,
mitään uutta täällä.
Se on aivan kuten Scratch.
Jos if, if, tavallaan lohkon.
>> Niin, että virta versio ohjelmasta.
Mutta huomaa, että me teimme sen numerot tähän.
Saanen avata toinen versio vain näyttää
jotain vähän konkreettisempaa.
Joten tässä meillä on arvosanoja sijaan.
Osoittautuu voit käyttää valitsimia ei vain kokonaislukuja, vaan
merkkiä.
Ei kaikki tiedot tyyppejä, mutta ainakin merkkiä.
Joten tässä, voisimme tehdä jotain, jos arvo C, että
käyttäjän kirjoitettu, linjassa 19, käyttämällä GetChar toimintoa,
on pääoman tai pieniksi, mennään tulkita sen laatu,
ja sanovat poimitaan kiitettävän arvosanan.
Ja alas pitkin kytkimen lausuman, meillä on muita
tapauksissa "B": n ja "C": n, ja niin edelleen.
Mutta katsotaanpa nyt pyöristää yksi asia.
Ja vielä, millaisia ​​lentää
Joissakin näistä esimerkeistä.
Mutta se on todella niin, että voimme soveltaa niitä, nyt -
tai oikeastaan ​​vain kääntää ne nyt -
ja C.
>> Joten anna minun mennä eteenpäin ja tehdä tätä.
Aion avata uuden tiedoston.
Ja aion tehdä sisällyttää .
Ja sitten aion tehdä int main (void).
Saanen tallentaa tiedoston loop.c.
Vain esimerkkinä.
Ja aion mennä eteenpäin ja tehdä seuraavasti.
Haluan kirjoittaa erittäin ikävä ohjelma.
Joten 10.
Tehdään tämä.
9.
Selvä.
Heti kun alkaa tehdä tämän ohjelmoinnin, olet
luultavasti jotain väärin.
Mutta aloitamme siellä joka tapauksessa.
Oho.
Se on todella väärin.
7.
6.
5.
4.
Mitään ei tapahdu, kun pääsemme 0.
3.
2.
1.
Okei.
0.
Poista.
>> Selvä.
Niin palata 0.
Joten tämä ohjelma on toki mitä se hyvin
ikävän sanoo se aikoo tehdä.
Se tulee tulostaa kaikki nämä
arvot, ylhäältä alas.
Joten anna minun tehdä tehdä silmukka.
Ja sitten - Hupsista.
Tee silmukka.
Olin väärässä hakemistossa.
Ja nyt haluan juosta silmukka.
Enter.
Woohoo.
Very nice.
Nice, pitkä ohjelma.
>> Okei, mutta nyt tehdään tämä paremmin.
Aivan kuten Scratch, kun alkoivat käyttää looping
rakentaa, eikä vain kopioimalla kaikki
palapelin palaset, haluan esitellä tämän asian.
Joten C, on olemassa erilaisia ​​kiehkura rakenteita,
joista yksi näyttää tältä.
"For" loop on kolme asiaa, erottaa kaksi puolipisteillä.
Ja sitten sisällä rungon silmukan, niin sanotusti -
tavaraa sisällä aaltosulkeita -
Voimme tehdä jotain uudestaan ​​ja uudestaan.
Joten mitä olen täällä ruudulla, tämä on
kirjaimellisesti vain kommentti.
/ / Tarkoittaa tässä tulee kommenttia.
Tämä ei ole koodia.
Tämä on vain Englanti kuvaus, minulle ihmisen.
>> Joten alustukset, olosuhteet ja päivityksiä.
No, katsotaanpa miten tämä toimii.
Tämä antaa minulle mahdollisuuden kirjoittaa tähän ohjelmaan seuraavasti.
For -
joten tässä tulee minun loop -
int i -
tässä tulee muuttuja nimeltään "I" -
saa alustetaan 10.
Joten ei minun alustusta.
Haluan tehdä tämän silmukan niin kauan kuin "i" on suurempi tai
yhtä suuri kuin 0.
Ja jokainen iteraatio tämän silmukan, haluan
tehdä i -.
Joten näimme + + maanantaina.
- On päinvastainen.
Se pienentää arvoa 1.
Inside tämän silmukan, haluan todella tehdä jotain.
Joten aion sanoa jotain printf.
En halua sanoa 10 nyt, koska tämä on luonnollisesti vain
painoon sama arvo.
Mitä haluan tulostaa sijaan, luultavasti?
Joo.
Joten "i". Joten% d, i.
>> Joten aion varastaa yksi niistä ideoita aiemmin -
Tämä substituutio muotoa koodit -
ja sitten täällä, alareunassa, palaan 0, vain
hyvä toimenpide.
Mutta nyt minulla on enemmän ytimekäs ohjelma.
Se on vain muutaman rivin, eikä noin 10 tai 11 riviä.
Anna minun mennä minun nopeasti tänne.
Remake silmukka.
Uusintana silmukka.
Ja se näyttää olevan sama.
Nyt ohjelma ole mielenkiintoisempaa.
Mutta nyt voin kirjoittaa jotain tällaista.
Voin vaihtaa tämän 100.
Voin sitten kääntää minun ohjelma.
Ja sitten voin ajaa uudelleen oman ohjelman.
Ja nyt se menee supernopea tämänpäiväisestä tietokoneissa.
Mutta minulla on -
ja oikeastaan ​​minun scrollback puskuri ei
menevät jopa niin pitkälle.
Siellä mennään.
Joten siellä olemme kaikki 100.
Mutta se on helppo tehdä virheitä täällä.
Mitä tulee olemaan odotettua käyttäytymistä, jos
vahingossa tehdä?
Joten se tuntuu äärettömän.
Joten katsotaanpas jos tietokone käyttäytyy.
>> Joten anna minun mennä eteenpäin ja tehdä silmukka.
Ja anna minun ajaa silmukka.
Joten palata että vain hetken.
Annamme että aikavälillä.
Koska mitä pitäisi laskea jopa minimaalisesti?
Luultavasti vähintään 2 miljardia jos meillä on, että monet bittiä, ja
käytämme positiivisia arvoja.
Joten hyppää takaisin tänne.
Näiden lisäksi erilaisia ​​silmukoita, meillä on mitä kutsutaan taas
silmukoita. Eli aivan kuten Scratch, sinulla oli Ikuisesti
lohkot, ja teillä oli Repeat lohkoja.
Vastaavasti C, juuri muita keinoja
ilmaista itseäsi.
Joten sinulla on käsitys while-silmukka, jonka avulla voit
ilmaista itseäsi hieman eri.
Ja sitten sinulla on jotain kutsutaan do-while-silmukka,
joka toimii hieman eri tavalla samoin.
Ja me kiusata näitä toisistaan ​​ajan.
>> Mutta katsotaanpa katsomaan tämä viimeinen täällä.
Jos menemme -
edelleen käynnissä.
Se on melko loputon.
Joten anna minun mennä positiivinen, ja miten voimme todella
ohjaavat käyttäjän syöttää hieman tehokkaammin.
Se on melko lyhyt ohjelma.
Ja tässä meillä, main, int n ilmoitusta.
Joten anna minulle muuttuja nimeltä N. Nyt olen kirjaimellisesti sanoa
"Do." Ja sitten minulla auki kihara
ahdin, sulje kihara ahdin.
Ja sitten huomaat, heti sen jälkeen, se sanoo taas n
on vähemmän kuin 1.
Niin huomaa, että nämä linjat -
19-24 -
säveltää yhdessä do-while-silmukka.
Ja vielä, uutta syntaksia, eikä uusi idea.
Se on vain yksi tapa kiehkura, syntaktisesti.
Mitä tämä tekee?
Toimi seuraavasti, kun n on alle 1.
Joten mitä haluan tehdä?
Vaadin, että annat minulle positiivinen kokonaisluku.
Sitten itse yrittää saada kokonaisluku käyttäjältä.
Mutta suhteen järjestyksessä toiminnan tässä, koska
kun ehto on täällä, olen sitten menossa tarkistaa, on n
vähemmän kuin 1?
Joten Oletetaan, että käyttäjä -
jälkeen vaati tällä tavalla -
tyyppejä arvo 0.
Tämä ehto tulee olemaan tosi vai epätosi?
No, se on todella olemaan totta.
Koska n on 0, ja 0 on pienempi kuin 1.
Mitähän tämä merkitsee?
Tee se uudestaan.
Vain kerran, että ehto on epätosi.
Jos minä kirjoita 42.
No ei, 42 ei ole pienempi kuin 1.
Siksi tämä silmukka tehdään täytäntöönpanovaltiossa.
Ja niin siinä vaiheessa, ohjelma sanoo, kiitos
42, tässä tapauksessa.
Nyt sinulla on tapa ilmaista itseäsi -
Meidän ei pitäisi odottaa tätä loppuun.
Se vie aikaa.
Jatkuu seuraavalla kerralla, ehkä.
>> Mutta nyt, sinulla on kyky toivottavasti ymmärtää
vähän pelle huumoria.
Pahoittelut.
Tämä ei edusta huumoria tietojenkäsittelytieteen
maailmassa, mutta se on söpö.
[Nauraa] ​​Lopetetaan tältä huomautuksen.
Ja näemme sinut maanantaina.
[Taputuksia]