[Powered by Google Translate] David J. Malan: Olgu, see on CS50 ja see on
1. nädala lõpust, nii et uuring kaardid on ja koguarv
klassikaaslastega, et teil on sel aastal on 745.
Ja me oleme nii põnevil, et on nii palju sa aasta jooksul
Sel poolaastal, kuid isegi kui see muidugi on nii suur,
aru, et see on need asjad nagu reede lõunaks, nagu
tööaega, 15-isik lõigud, ja nii edasi, et
on tegelikult tähendas, et luua see intiimsem
keskkond.
Nii et kuigi me võime koguda üks kord või kaks korda nädalas, siin
Sanders, tean, et palju teie kogemused selles muidugi
on väga palju olla käed-peal koos oma klassikaaslastega
ja õppejõud.
>> Nii et siin me läheme, Fall 2012.
Nii et tuletada meelde, et viimane kord kui me lõppes teadmiseks
ebatäpsuse, räägime esindatus numbrid.
Ja me vaatasime üks ebaõnnestumisi, mis juhtus, et
reaalses maailmas, kui ta tuli arusaamatus
kuidas arvutid töötavad.
Noh, täna me uuesti veel üks neist ideid
samuti jätkame arutelu CS50 kliendi
ja C ning mida see tähendab tegelikult programmeerida.
Aga kõigepealt paar tuulispask teadaandeid.
>> Sektsioonid algab sel pühapäeval, ja esimene nädal on alati
natuke kiire algus, sest me saime sisse
oma osa vorme.
Me teeme sama, nüüd, kus õppetöö stipendiaatide nüüd
et nad teavad nende graafikuid, nii et me oleme eesmärk, mida
Laupäeva hommikul, et jälgida teie oma osa
loovutamine ja TF.
Aru, et siis hakatakse neid järgmisel päeval, pühapäeval
või esmaspäeval või teisipäeval.
Ja siis me majutada osa muudatusi, kui need tekivad
päevil tulla.
Tööaeg, vahepeal on taas täna, 08:00 kuni 11,
Annenberg, samuti homme õhtul.
Kuigi probleem komplektid on tavaliselt tingitud neljapäeviti
keskpäeval aru, teil on kuni viis hilja päeva veeta,
seega kättesaadavus tööajal neljapäeviti, kui
te raha ühes neist hilja päeva ja seeläbi esitama
midagi reedel.
Lubage mul oletada, et Scratch on üks lõbusam seas
rohkem madala võti probleem seab.
Ja ma riputada peale nende hilinenud päeva, strateegiliselt, lihtsalt
käesolevaks poolaastaks kui elu hakkab saada takistuseks
koos midterms ja teistesse klassidesse.
Ülesanded 1, vahepeal oleks postitati kursuse
kodulehel sel reedel, kui antakse kell käigus jalutuskäigu
läbi video, mis filmiti 02:30 reedel
ja siis Internetti järgmisel päeval.
>> Nii et me lõppes esmaspäeval.
Ma tahan - tegelikult, üks märkus siin.
Kuna klassid - sest Sanders täpselt ei laenata
ise juhutöö Q & edasi-tagasi väga hästi, et me oleme
kavatsen proovida midagi veidi uut sel aastal, kusjuures
kui sa ei ole mugav tõsta oma käsi või sa lihtsalt
pigem ei tõsta oma kätt sellises ruumis,
me lähed on mõned õpetamise stipendiaatide ja CA
mehitamise cs50.net/discuss ajal loeng.
Nii et kui teil on küsimus, sest ma olin täiesti
ebaselge midagi või oled uudishimulik mõned
teema, proovige postitad sinna.
Tag seda silti Loeng, ja me teeme oma parima,
täna ja järgmisel nädalal - we'll proovida seda välja - et väljakujunenud kohtupraktika
kas elektrooniliselt internetis, või kui see tundub peaksime
tõesti käsitleda seda massiliselt, üks õpetamise stipendiaatide või
SK tõstab oma käe ja paluma
anonüümselt teie nimel.
Nii et me anname seda proovida ja näha, kui hästi see töötab.
Aga, kõigi vahenditega, jätkuvalt tõsta käed, kui sa sooviksid.
>> Nii et viimasel ajal oleme selgus, et 10% või üks kümnendik ei ole, on
Tegelikult 0.1, nagu teid on õpetatud juba aastaid tagasi.
See on tegelikult väärtus niimoodi.
Aga see pole täielikult tõsi, eks?
Meil on lihtsalt see piirang arvutid, mille abil, kui te
ainult piiratud kogus mälu, RAM või rohkem
spetsiaalselt bitti, noh, seal on ainult piiratud arv
asju saab esindada.
Näiteks, kui meil on number null, ja me tahame
esindama kahekomponentsete kasutades kaheksa bitti, kus natuke,
jälle on null või üks, me võiksime
esindada seda 00000000.
Ja see on veidi asjatult paljusõnaline.
Täpselt nagu detsimaalsüsteem reaalses maailmas,
Üldiselt, kui sa tahad kirjutada number 123, me
inimesed ilmselt ei kirjuta 00000123 kuigi
funktsionaalselt, see on täpselt sama number.
Me lihtsalt tilk nulle, kui nii võib öelda.
>> In binaarne, mida me saame teha sama.
Binary ja null, null ja binaarne on lihtsalt null.
Sa pead ainult ühe natuke.
Aga jälle, kõige levinum mõõtühik maailmas
arvutustehnika on baiti, kaheksa bitti.
Lihtsalt, sest üks natuke, üsna kasutu.
Kaheksa bitti, ei ole väga kasulik, kuid vähemalt on see rohkem
kasulik kui üks mõõtühik.
Nii kaheksa bitti, siis me tüüpiliselt binaarne.
Nii et siin on meil numbrid null, üks, kaks, ja siis, kui
Nate tegi meie video eelmisel kolmapäeval, saame jätkata
lugedes kuni seitse, kaheksa.
Ja siis kui me kasutame rohkem ja rohkem bitte, me
võib loota kuni lõpmatus.
Aga kui sul on ainult piiratud arv neid bitti, nagu on
Kui mingil arvutisüsteemi või isegi raketi
süsteemi, hästi, tõepoolest, kui vaid
piiratud kogus täpsusega.
Nii et kui soovite esindama arvu nagu 0.1, noh,
arvuti peab hoolikalt valima.
Ja kui see on ainult piiratud arv numbreid ta saab
esindama, võib see tulla tihe 0,1 teid, kuid see ei saa
tingimata teile täpselt soovitud väärtus.
Ja see on vaid üks väljakutseid arvutid,
all kapuuts, õnneks.
>> Nagu me liikuda kaugemale semester, need madalamal tasemel
üksikasjad muutunud palju vähem huvitav, kuid kindlasti
rakendada neid ideid saab mõned väga reaalne maailm
tagajärgi.
Üks on natuke lõbus.
Kui paljud teist on näinud hämmastav film Office Space?
Kui sa ei ole, et su mitteametlik
kodutööd nädalas.
Aga bürooruumid, stipendiaatide, et filmi teha
ära just see mõte, kuid nad tegelikult varastas
see teise filmi, et sa võisid
näinud, isegi aastaid enne.
Nii et lubage mul anda teile mõned sekundid selle haagis
see hämmastav film ja see on väga palju
akadeemiliselt asjakohane.
>> [Mängib Filmi]
Tegelikult ma reklaamitakse.
Võin programmeerida viirus, et rebin et
asetage maha suur aega.
Noh, kuidas see toimib?
Iga kord, kui seal on pangaoperatsioon kus huvi on
arvutatud, on tuhandeid päevas, arvuti jõuab
nende fraktsioonid protsenti.
Aga ma ei kavatse teha midagi ebaseaduslikku.
Ebaseaduslik? Samir, see on Ameerika.
Sa pead Jumala nimel.
Kui keegi teab sellest aga meile, eks? Ei pereliikmed, ei
sõbrannade keegi.
[Kuuldamatu].
Ära muretse, mees, ma ei ütle kellelegi kas.
[Video lõpeb]
>> Olgu, võibolla ma leidsin selle filmi paremini kui enamik
inimesed siin, aga igal juhul, viirus, et nad olid
püüame luua -
ja filmides, millal nad tahaks helistada midagi viirus,
et üldiselt ei ole tegelikult viirus.
See on lihtsalt programm, et keegi kirjutas midagi teha.
Ja sel juhul, poisid üritasid kirjutada programm
et võttis ära oma firma nimega Innotech on
arvutisüsteem, mille arvutid, liiga isegi siis, kui see
tegemist on raha, ei pruugi tingimata
esindada raha täpselt.
Nii et kuigi sa võisid $ 0,10 pangakontole,
0,10, noh, arvuti võib tegelikult arvan, et teil on
Selle paljud senti pangakontole.
Ja mis need kutid olid soovivad teha - ja nad
varastas idee, selgub alates Superman III, kus
Richard Pryor tegi sama asja - nad olid peamiselt
kirjutamise programmid, et soovivad võtta kõik trailing
numbrid, kõik tilluke, pisike, tiny fraktsioonid
penne, ja siphoning need ära nii, et inimestele lihtsalt
mõtlesin, oh, see on ainult $ 0,10 seal, kuid kõik need
trailing numbrid lõpuks tõusta.
Nii tore mõte ja see tagasilöögi lõbusalt selles
eelkõige film.
>> Aga reaalses maailmas, liiga, seal on palju rohkem seotud
mõju nende erinevaid asju.
Ja üks põhjus sukelduda valdkonnas arvuti
teadus on jällegi selle kohaldamist ei
tehnikateaduste üksi, vaid lihtsalt
teistes valdkondades.
Nii et see on vähem lighthearted pilk saab valesti minna, kuid
see on ka üsna silmade avanemise, ma arvan, kui tegemist on
mõista täpselt, kuidas kõikjal tehnoloogiad nagu
arvutid ja programmeerimine või nendel päevadel,
kujul tarkvara.
Nii et see järgmine klipp on lihtsalt umbes kuus minutit, jätkub
kus meil pooleli jäi eelmine kord, kuid võimaldab meil vaadata veidi
süvendatult ühte sellist nendest küsimustest.
Lubage mul otse soovitud kus pooleli jäime,
mis oli siinsamas.
Ja meil on osa Kahest, umbes kuus minutit siin.
>> [Play Movie]
Vaevavad kaasaegse raketi tehnoloogiat.
Aastal 1991, siis algas esimese Lahesõja, Patriot
rakett kogenud sarnast tüüpi
number konverteerimise probleem.
Ja nagu tulemuse, 20 inimest, 20 ameerika sõdurit, tapeti
ja umbes 100 muud haavata, kui Patriot, mis pidi
kaitsta sissetulevad Scuds,
suutnud tulekahju rakett.
>> Kui Iraak tungis Kuveiti ja Ameerika käivitas Desert
Torm alguses 1991 Patriot rakettide patareid olid
kasutusele kaitsta Saudi Araabia ja Iisraeli Iraagi
Scud rakettide rünnakud.
Patriot on USA keskmise ulatusega maa-õhk süsteem,
toodetud Raytheon ettevõte.
Suurus Patriot püüdurhävitajaga ise, see on umbes
umbes 20 jalga pikk ja ta kaalub umbes 2000 naela.
Ja see viib lõhkepea umbes - Ma arvan, et see on enam-vähem
150 £.
Ja lõhkepea ise on väga plahvatusohtlikus mis on
killud selle ümber.
Korpust lõhkepea on mõeldud tegutsema nagu haavlid.
Raketid on läbi nelja konteineri kohta ja on
veab pool haagis.
>> Patriot raketitõrjesüsteem läheb tagasi vähemalt
20 aastat nüüd.
See oli algselt mõeldud õhutõrje rakettide
tulistama vaenlase lennukid, esimese Lahesõja.
Kui see sõda tuli mööda, Armee tahtis kasutada seda tulistada
alla Scuds, mitte lennukid.
Air Iraagi vägede olnud nii suur probleem, kuid armee
muretsesin Scuds.
Ja nii nad üritasid minna Patriot.
Pealtkuulamist vaenlase raketi sõita Mach 5 läksin
tuleb raske piisavalt.
Aga kui Patriot oli tormas teenus, armee
ei olnud teadlik Iraagi muudatustest, mis tehakse nende
Scuds peaaegu võimatu tabada.
>> Juhtus see Scuds mis olid
tulevad olid ebastabiilsed.
Nad olid wobbling.
Selle põhjuseks oli iraaklaste, et saada 600
kilomeetrisel lõigul 300 kilomeetri rakett, võttis
massist välja ees lõhkepea ja
tehtud lõhkepea kergem.
Nüüd Patriot üritab tulla Scud, ja enamik
aega, et valdav enamik ajal oleks
lihtsalt lennata Scud.
Kui Patriot haldurid aru Patriot
oma eesmärki täitnud, nad lõhkeda Patriot lõhkepea.
Et vältida võimalikke õnnetusi, see oli lubatud
langevad maapinnale.
See oli see, mida enamik inimesi nägin, kui suur fireballs taevas,
ja vääriti kui lõikepunktide Scud lõhkepeade.
>> Kuigi öösel taevas, patrioodid osutus
edukalt hävitatud Scuds, kell Dhahran, ei saa olla
viga selle toimivuse.
Seal Patriot radarisüsteemi kaotanud jälgida
sissetulevad Scud ja kunagi käivitatud tõttu
et tarkvara viga.
See oli iisraellasi, kes esimesena avastas, et mida kauem
süsteem oli, mida pikem on lahknevus sai,
tõttu kella varjatud süsteemi arvuti.
Umbes kaks nädalat enne tragöödiat Dhahran,
Iisraeli teatada kaitseministeerium, et
Süsteem oli kaotame aega.
Pärast umbes kaheksa tundi järjest, nad märkasid, et
süsteem oli muutumas märgatavalt vähem täpne.
Defense Department vastas, rääkides kõik
Patriot-rakettide patareid ei jääks süsteemid
juba pikka aega.
Nad ei ole kunagi öelnud, mida pikka aega oli - 8 tundi, 10
tundi, 1000 tundi.
Keegi ei teadnud.
>> Patriot aku seisvad kasarmute juures Dhahran
ja selle vigane sisemine kell oli üle 100 tunni
Ööl vastu 25. veebruar.
See jälgida aega täpsusega umbes kümnendik sekundit.
Nüüd kümnendik teine ​​on huvitav number, sest
seda ei saa väljendada binaarne, täpselt, mis tähendab,
see ei ole võimalik esitada täpselt igas
kaasaegne raal.
Seda on raske uskuda.
Aga kasutada seda kui näidet.
>> Võtame arvu kolmandiku võrra.
Üks kolmandik ei saa kümnendkraadides, täpselt.
Üks kolmandik on 0,333 kestnud lõpmatuseni.
Ei ole nii, et seda teha ülima täpsusega kohaga.
See on täpselt samasugune probleem, mis juhtus
Patriot.
Mida kauem süsteem jooksis hullem aeg viga sai.
Pärast 100 töötundi, viga ajal oli ainult
umbes kolmandik sekundis.
Aga nii suunatud raketi sõita Mach 5,
see põhjustas jälgimise viga üle 600 meetri.
Oleks saatuslik viga sõdurid Dhahran.
>> Juhtus see Scud käivitada avastati varajase hoiatamise
satelliite ja nad teadsid, et Scud oli tulemas nende
üldine suund.
Nad ei teadnud, kust see tuli.
See oli nüüd kuni radari komponent Patriot
süsteem, kaitstes Dhahran, leida ja jälgida
sissetulevad vaenlase rakett.
Radar oli väga tark.
Sa oleks tegelikult jälgida olukorda Scud ja seejärel
ennustada, kuhu see ilmselt oleks järgmine kord
radar saatis impulsi läbi.
See kutsuti vahemikus värava.
Siis, kui Patriot otsustab piisavalt aega on möödas minna
seljatoele ja kontrollitakse järgmisel asukoht Avastatud
objekti, siis läheb tagasi.
Nii et kui ta läks tagasi vales kohas, see siis ei näe
vastuväiteid ning ta otsustab, et seal ei olnud.
See oli vale tuvastamise ja langeb teele.
>> Sissetulevad Scud kadus radari ekraanilt.
Ja sekundit hiljem ta slammed arvesse kasarmud. Scud
hukkus 28 ja oli viimane vallandati ajal
esimest Lahesõda.
Traagiliselt, uuendatud tarkvara saabus Dhahran
järgmisel päeval.
Ja tarkvara viga oli kinnitatud, sulgedes ühe peatüki
rahutu ajalugu Patriot rakettide.
PATRIOT on tegelikult akronüüm "suunadiagrammiga jälgimine
Vabaliige Target. "
>> Olgu, nii palju kurblik tulemus ei ole päris
mõistmiseks sellesse maailma.
Ja Buffee, tõesti, filmist on see, et lahendus
seal oli taaskäivitab teie raketitõrjesüsteemi
iga kord samal ajal.
Ja nii jälle, üks eesmärke on see muidugi, kindlasti
kohta rohkem tagasihoidlik skaala kui neid taotlusi, on
tõesti avatud kõigile silmad täpselt, kuidas sa minna
valmistamise masinad seda, mida sa tahad neid teha ja kuidas minna
seda teed, et õigesti, kui mööda teed tee seda
Noh, elegantselt, ja nii edasi.
Ja nii täna, lähme sukelduda natuke rohkem seda, kuid
nii et me ei lähe liiga kiiresti, eriti neile vähem
mugav, vaid ka selleks, et saaksime säilitada huvi
need mugavamaks, lähme lihtsalt kiiresti alustada natuke
ning sulgege mõned neist ideedest.
Ja jälle küsima minema, nii isiklikult või online, kui teil on
küsimustele, et saaksime hoida kõik samal leheküljel.
>> Nii CS50 Appliance, kiire samm tagasi, on
Mis, oma sõnadega?
See on OK, kui sa ei tea, mida need sõnad võivad olla veel.
[Kuuldamatu]
Okei, nii universaalne liides -
et me kõik jagame.
Absoluutselt.
Nii et me võiks näiteks öelda, et minna mõnele
veebilehel, lae see tarkvara Mac OS.
Lae see tarkvara Windows, konfigureerida sisse
Sel viisil ja et.
Kuid reaalsus on see siis satume lugematu tehniline
toetada küsimusi.
Ja ka nendel päevadel, palju sellest, mida on juba tehtud serveripoolne,
maailma arvutustehnika, eriti kui tegemist on
veebiarendust ja veebipõhiseid rakendusi, on tegelikult
üsna sageli teha Unix või Linux arvutid, erinevalt
Mac või Windows arvutites.
>> Nii hulgas tasa, siis kasutades seda asja nimetatakse
CS50 Appliance on meil kõigil on sama keskkond.
Nii et igaühel on samal lehel ükskõik millist riistvara sa
tuli campus, vaid ka siis espalla täpselt
samas keskkonnas, mis teid kasutades suunas
semestri lõpuks ka veebi arengut, samuti
tulevik reaalses maailmas rakendusi sätestatut.
Nii konkreetsemalt, CS50 Appliance on tasuta tükk
tarkvara, mis võimaldab käivitada teise operatsioonisüsteemi,
Linux, sel juhul oma arvutisse, akna.
Nüüd sa ei saa lihtsalt alla laadida seadmesse.
Sa pead programm, millega mängida või epileerijat.
Ja see tükk tarkvara on üldiselt tuntud kui
hypervisor.
Hypervisors tulevad vormis tooteid nagu VMware,
Virtual Box, Parallels.
Igasuguseid ettevõtted teevad tarkvara, nii vaba ja
kaubandus-, samasugused.
Mida te näete Ülesanded nr 1 on juhised, kuidas
saada tasuta tarkvara, mille abil
käivitada CS50 Appliance.
Ja kui sa teed, sa pead, et aken Mac või PC,
töölaua keskkond, mis näeb välja üsna nagu see, kus
see on Start menüü moodi asi
alumises vasakus nurgas.
See on kodukataloog või kodu kataloogi ülemises vasakus
seal, prügikast jne.
Nii et me tease peale vajalikud üksikasjad nagu me minna.
>> Aga nüüd alustame sukelduda C.
Nii et C on see programmeerimiskeelt sarnase sisuga
Scratch, kuid palju vähem graafiline, kuid irooniliselt, kaugele
võimsam kui sa saad Savvy koos sellega.
Nii C, me kirjutada programme kirjutades lähtekoodi, mis on
ingliskeelse nagu süntaks, mis on sarnane sokid
tõestus, et me tegime viimane kord, mis võimaldab teil
väljendada ennast üsna täpselt, kui
arcanely, et arvuti.
>> Nii et millist toodet tarkvara sa tegelikult vajad
kirjutada programme keeles nagu C, mis põhineb meie
vestlus esmaspäeval?
[Kuuldamatu]
OK, sa lihtsalt vaja tekstiredaktorit.
Sa ei vaja mingit erilist tarkvara
iseenesest kirjutada programme.
Sa lihtsalt vaja tekstiredaktoriga nagu Notepad, Windows,
TextEdit Mac, või midagi, mida nimetatakse gedit, maailma
Linux, mis me kasutame siin.
Ja ongi selleks, et kirjutada programme.
>> Kuid kirjutamine on ainult pool võrrandit.
Seejärel tuleb käivitada neid.
Aga selleks, et käivitada programme -
sa ei saa joosta lähtekoodi.
Sa asemel pead tegema, mida ta esimesena?
Jah.
David J. Malan: Sa pead
kompileerida.
Ja keegi teine, koostamise lähtetekst tähendab -
[Kuuldamatu]
David J. Malan: Täpselt.
Tõlkides seda nulle ja ühtesid.
Sest me kõik, nendel päevadel, on arvutid, mis on protsessoriga,
peaaegu kõik, mis on tehtud firma nimega Intel ja
Intel Inside, tähendab, et see on aju sees oma
arvuti, tuntud kui CPU.
Ja üks neist asjadest, et aju ei ole, see teab
kuidas mõista mustrid nulle ja ühtesid.
Ta teab, mida muster bitti moodustab Lisaks mida
muster kujutab tehet, mis muster
bitti esindavad trüki ja luua kuuldav heli.
>> Nii lühike, CPU, koos operatsioonisüsteemi,
mis on tarkvara, mis jookseb peal CPU,
nii rääkida.
Koos need kaks teavad, kuidas käivitada programme, mis
meie, inimesed kirjutavad.
>> Nii et kui ma minema CS50 Appliance siin, mul on vaja avada
kuni tekstiredaktor ja võin kasutada seda
aastal paar võimalust.
Võin kas minna Menüü, programmeerimine,
ja siis ma saan valida -
nope, ei ole, et menüü.
Ma ei saa minna Tarvikud / gedit siin avada
mu väike tekstiredaktorit.
Või lihtsamalt, ma ei kliki seda väikest ikooni alumises
vasakus nurgas.
Ja nüüd ma saan seda keskkonda siin.
See on päris meenutavad lihtne tekstiredaktor, vaid
üks või kaks erinevust.
Üleval, kus kursor vilgub nüüd, see on koht, kus
Ma ei hakake minu koodi.
Põhjas on see asi, mida nimetatakse terminaliakent.
Ja milliseid asju ma saan teha selles
nn terminaliakent?
[Kuuldamatu]
>> Okei, nii et ma jooksen käske.
Ja mõned käsud me jooksime esmaspäeval oli vähe
segasena alguses, kuid ls nimekirja, cd muutus kataloog,
rm jaoks eemaldada.
Nii et see on omamoodi vana kooli viis navigeerida oma
arvuti, kasutades ainult klaviatuuri ja tekstiline käske,
ja ei, üldiselt, kasutades hiirt.
Aga eks näis, enne pikk, see tegelikult annab meile
veidi rohkem võimu ja vähe rohkem täpsust, millega
väljendada end.
Ja siis siin vasakul, me lihtsalt näeme,
kui me hakkame kirjutamise tarkvara, väike kokkuvõte
programm, et oleme kirjutanud vasakus ülaservas.
Aga me näeme, et jälle enne pikk.
>> Teeme midagi üsna lihtne siin.
Lubage mul kõigepealt minna ja minge File, Save, ja ma olen lihtsalt
läheb klõpsa jharvard siin, üle vasakul, ja
jharvard on jällegi nimi minu kodukataloogi, minu
isiklikud failid, mind, nüüd on John Harvard, nagu te kõik
varsti John Harvard selles keskkonnas.
Tal on see kodu kataloogi My Documents ja nii edasi,
et ma tahan salvestada, nüüd see fail sisse
Nii et ma lähen kutsun seda hello.c. Siis ma lähen
edasi ja vajuta Save, ja nüüd, mida ma olen siin sakk
nimetatakse hello.c, nii palju nagu teist tüüpi toimetaja.
>> Nüüd lubage mul minna ja hakake kirjutama programmi.
int main (void).
Ja siis ma lihtsalt tegin viimane kord, printf, trüki-vormindatud,
("Hello, world!"
);.
Peaaegu valmis.
Aga ma olen kadunud paar üksikasju.
Mis puudub selle programmi, et ma tõesti vaja
see tegelikult kompileerida?
Jah.
[Kuuldamatu]?
>> David J. Malan: Jah, nii et ma vaja lisada standardne
I / O teek.
Nii et see peab minema üle peamine, nii et ma olen lihtsalt kavatse
teha mõned ruumi seal.
Ja ma teen # include .
Ja märkate nurga sulgudes seal.
Ja kui kõrvale, gedit on väike kasutajasõbralik, kui
mõnikord segadusse ajav, sest see püüab aidata oma
silmad teate, mis ridade järele mida.
Nii et minu kursor on kohe selle nurga
sulg, märgata, kuidas see esile teiste nurgaga
sulg pluss see üks.
Ja see on ainult mu tähelepanu juhtida sellele, et ma
on sümmeetria.
Ja sümmeetria programmeerimine on üldiselt hea.
Samamoodi, kui ma liikuda mu kursor lõpus, märgata, kuidas
looksulg rivistama näidata, et jah, mul on avatud üks
ja suletud üks, nii rääkida.
>> Hea küll, ja ma suudan veel üks asi.
See ei ole tingimata vajalik, kuid hea tava öelda
return 0.
Ja return 0 teeb mida meile siin?
Või tähendab mida?
[Kuuldamatu]
David J. Malan: Aga midagi on valesti.
Ja ausalt öeldes on raske palju valesti minna
programmeerida see lühike.
Nii et ma olen lihtsalt super selge, et kõik on hästi.
Mina, inimene, kui ma saan selle programmi, ei saa vist kunagi
näha, et 0.
Üldiselt on need numbrid, mida parasjagu naasnud peamine
ainult kasvatada oma pead inimestele kui
midagi läheb valesti.
Ja sa saad vähe pop-up öeldes süsteemi viga, üks,
kaks, kolm või mis iganes arv oli
tegelikult tagastatud.
Nii et midagi valesti on?
[Kuuldamatu]
>> David J. Malan: Nii et see ei ole nii palju funktsionaalne viga
kuid esteetiline üks.
Ma peaks ilmselt kasutusele reavahetus sümbol seal
lõpuks see string nii et me tegelikult liikuda kursoriga
järgmisele reale ja programm lihtsalt tundub veidi ilusam.
>> Nüüd lubage mul minna minu terminaliakent
ja suum sisse tagasi
Ja see asi siin, seda kutsutakse viivitamatult.
See on lihtsalt meenutas mulle, kes ma olen, jharvard @ aparaat, kus
Seade on arvuti nime ma olen.
Sulgudes on see tilde, kriipseldus sümbol, mis
näitab, mida?
Sihtrühm: Kodu kataloog.
David J. Malan: Kodu kataloog.
Nii et see on lihtsalt stenografisti märke öeldes olete
Isikliku kausta, kus kõik failid lähevad vaikimisi.
Nüüd, siin, ma ei kirjuta LS nimekirja.
Ja ainus asi, ma näen siin hetkel on hello.c.
Ja see on hea, sest ma lihtsalt kirjutasin selle.
>> Nii et lubage mul minna ja ei tee tere.
Ja märka ma ei kirjutades teha hello.c.
Selle asemel, ma olen ainult kirjutades baasi faili nimi, tere.
Ja teha, nagu me nägime esmaspäeval, lihtsalt järeldada, et ma tahan
. c faili.
Nii et nüüd ma olen kirjutatud tegema tere.
Nüüd ma näen seda üsna pikk käsk ja jätkab
nähes seda ikka ja jälle.
Aga peab olema selge, rõkkama sõna, et just ilmunud,
see on tegelik koostaja.
Tee on lihtsalt ehitada kasulikkust.
See on lihtsalt rohkem kasutajasõbralik programm, mis säästab mind, et
Pikemas perspektiivis omamast tüüp välja uskumatult tüütu pikk
käske, et üks.
Nii et sa võiksid minna rõkkama käsitsi.
Sa võiksid kirjutada kõik, et käsitsi.
Lihtsalt läheb väga tüütu.
Ja nii teha on lihtsalt programm, mis lihtsustab meie elu ja
jookseb keerulisem käsud meile.
>> Olgu, nüüd mida faili ma peaksin
minu praegune kataloog?
Mitte ainult hello.c, vaid ka tere.
Nii et kui ma tahan joosta tere, meelde tuletada, et ma ütlen dot kaldkriips,
kus dot vahendid lähevad praegune kaust, kuhu
on, ja seejärel käivitage programm nimega tere, ja tõepoolest, nüüd,
Mul on tere.
Olgu, mingeid küsimusi tööprotsesside või süntaks
mida me tegime?
>> Olgu, võtame asju pügala uuesti.
Nii et see oli underwhelming lihtsalt kirjutada programm, mis ainult
kunagi ütleb tere, maailm.
Nii muutsime ta esmaspäeval, et öelda, tere, David.
See on natuke rohkem isiklikku, aga lihtsalt nii raske kodeeritakse
esimene versioon.
Nii et ole nii veenvad.
Kuid on olemas, C, funktsioonide kindlasti lisaks
prindi, funktsioone, mis võimaldavad teil saada kasutaja sisend.
Ja kuidas me seda tegime, teisel päeval, oli järgmine.
Enne kui ma tegelikult välja printida midagi, ma esimest korda sain
midagi kasutaja.
Nii et las ma teen seda uuesti.
>> String s, kus s on lihtsalt suvaline nimi, siin,
string, võrdub getString.
Mis siis oli getString?
See ilmselt saab stringi, mis põhineb tema nimi.
Aga mida see enam tehniliselt?
See funktsioon.
Nii et see on funktsioon, mis ei tule koos C iseenesest.
CS50 töötajad kirjutas selle.
Ja nii kasutada seda, sa ei saa lihtsalt lisada stdio.h,
Teil on vaja ka lisada seda, mida?
Jah.
Nii cs50.h, mis on lihtsalt fail me kirjutas mõned aastad tagasi.
Me paigaldatud see seade teie kõrval
kõik kindlad failid.
Ja nii need esimestel nädalatel klassi, me kasutame
see lihtsalt lihtsustada protsessi teed väga lihtne
asjad nagu saada kasutaja sisend.
Sest nagu me näha paari nädala jooksul, saada kasutaja sisend
keeles nagu C on tegelikult üllatavalt keeruline,
eriti kuna sa ei tea ette, tavaliselt, kuidas
palju asju kasutaja saab tippida sisse
Ja kui sa ei tea, kui palju andmeid oodata, sa ei pea
teada, kui palju mälu eraldada.
Ja kui sa tegelikult võistleva kasutaja, kes üritab
sissemurdmist teie süsteemi krahhi arvuti, noh,
üldiselt esimene meetod rünnak on, nagu ma tegin
Esmaspäev, kirjuta terve pikk jada juhuslikult valitud märgist,
Enter, ja vaata, mis murrab.
Sest üldiselt, kui programm pause, et vihjab
turvaprobleem, mis võib.
Kindlasti vihjab sulle, programmeerija, kes on teinud
viga, kuid rohkem ohtlikult, mida oleks võinud teha
turvalisusega seotud viga, ja üldiselt me ​​näeme, et
see on, kuidas masinad on ohus, et sellel päeval, nii
maailmas veebi-ja programmid
käsurealt, nagu see.
>> Hea küll.
Nii et string s võrdub getString.
Nii konkreetsemalt nüüd, mida see rida 6 teha siin?
Nii funktsiooni paremal saab stringi,
võtab mitu argumendid?
Okei.
Nii et mitte ükski.
Vähe meelerahu vaadata.
Argument jällegi, on ainult sisend funktsiooni muuta
selle vaikimisi käitumist mingil moel.
Aga sel juhul, ma ei taha muuta
käitumist getString.
Ma tahtsin saada stringi.
Nii et ma panin midagi sulgudes ja siis panin
semikooloniga demarking lõppu rida koodi.
Nüüd võrdusmärki ei tähenda võrdne iseenesest.
See tähendab, loovutamine, mis tähendab, pane mis iganes
väljastada paremal sees kõik, mis on vasakul.
>> Nii vasakul, me ütleme, et meil on deklareeritud
string nimega s.
Ja täpsemalt, oleme eraldatud mälu sees
mis me paneme bitti, mis tähistab jada
tähemärki.
Aga täna oleme eraldatud
või deklareeritud string.
Hea küll.
Nüüd kui olen seda teinud, ma tahan ühendada väärtus
s, mitte väärtus David.
Nii et see on vale, miks?
Nii et see on lihtsalt sõna otseses mõttes püsiprogrammeeritud s.
See on öelda "tere, s," mis ei ole mida ma tahan.
Nii et ma suudan seda.
Protsendimärk on kohatäide, kuid nüüd pean
erituda printida teine ​​argument.
Tuletame meelde, et argumendid, mis funktsioonid on eraldatud
komasid, nii et järgmine eralda siin panin pärast seda kirja s.
Ja selles kontekstis nüüd, s on muutuv ja printf,
saamisel need kaks sisendit -
string vasakul ja muutuja nimi on paremal -
siis ühendage sellest saab endise meile ja
lihtsalt välja printida kena ilus sisaldav string
mis iganes see on, et me kirjutada logida
>> Nii et proovime seda.
Lähen edasi minna ja välja suumida, tagasi
minu terminaliakent.
Pildi suurendamiseks allosas siin.
Korrake teha tere.
Rõkkama on ilmselt kordamisega.
Ma lähen kirjuta. / Hello, Enter.
Miski tundub toimuvat veel, kuid see on seda kiire
et ma ei kirjuta midagi Nate, Enter, ja nüüd on meil
Tere, Nate.
Ja ma ei saa seda uuesti teha koos Rob ja nii edasi.
Nii et loodetavasti nüüd see programm käitub kavatsen.
>> Nüüd, mitte kõik, et kasutajasõbralik.
Mul pole aimugi, mis on minult oodatakse.
Nii saame kindlasti korista see ära natuke.
Lubage mul tagasi minna siia üles, ja mitte lihtsalt sukeldumine ja
küsib kasutajalt string, lubage mul selgelt öelda
kasutaja mida ma ootan.
Nii printf ("Sisesta string"
);
Nii ei muutujad siin.
Ei protsenti märke.
Lihtsalt lihtne inglise fraas.
Lubage mul nüüd minna põhja siin ja uuesti, minu programmi.
Kuid mitte miski ei muutunud.
Miks?
Mul on kompileeri see.
Nii lihtne viga teha.
Aga sa pead mitte ainult faili salvestada vaid
kompileeri programm.
Ja nii kui ma uuesti käivitada tegema tere, nüüd rõkkama jookseb.
Nüüd ma saan käivitada. / Hello. Ja nüüd ma näen, "Sisesta string".
Okei.
Nüüd on natuke rohkem kasutajasõbralikumaks.
Nate, Enter, tere, Nate.
>> Noh, proovime seda uuesti ja hakata mõtlema
umbes nurgas juhtudel.
Nii nagu ka Scratch, sa julgustada või on sellel
julgustada spec omamoodi mõelda, mida võiks minna
vale, kui sa ei usu kõike, kasutaja võiks teha.
Bugs, seetõttu võib tekkida.
Nii et sisestada stringi -
Mis nurgas asjas?
Mis on stsenaarium, et mina, programmeerija, ei pruugi olla
oodata?
Jah.
Okei.
Mis siis, kui ma kirjuta number, nagu see on?
Hea küll.
Nii et see ikka töötab.
Gramatically ei ole mõtet.
Aga vähemalt programm töötab.
>> Mis on teise nurga puhul?
Midagi ma ei arvanud.
Jah?
Okei.
Nii et me võiksime teha midagi tõesti väga suur number.
Teeme seda siin.
Lubage mul välja suumida teist, lubage mul rõhutada.
Ei saa kopeerida ja kleepida siia.
Hea küll.
Nii et ma ei saa kopeerida ja kleepida see terminaliakent, nii me
lihtsalt simuleerida seda.
Lubage mul suumimiseks läheb pakkima.
Ma ei kavatse seda teha liiga kaua, sest see ei
tegelikult murda selles programmis.
Aga võiks.
Enter.
Aga seda ei juhtunud.
Hea küll.
Aga see on tõeline nurgas puhul.
Ja ainus põhjus, et käitus õigesti, nii et
rääkida, sest CS50 funktsioon getString on tegelikult
kavandatud all kapuuts, nagu me näha paari nädala jooksul,
automaatselt eraldama rohkem ja rohkem RAM, rohkem ja rohkem
mälu operatsioonisüsteemi, kui ta mõistab, wow,
olete tõesti kirjutatus midagi üsna pikk.
Nüüd on see natuke hädavale.
Kui me tegelikult peatatud pikka aega ja ma ei tippinud
midagi 5000000000 tähemärki klaviatuuri
siin, või tõesti tabanud copy-paste üsna natuke, me üsna tõenäoliselt
võib põhjustada programmi crash.
Lihtsalt veidi raskem jäljendada et koos piiratud
aja jooksul.
>> Mis on teise nurga juhul me võiks proovida?
Jah?
Jah.
Nii et miks me ei vastata midagi?
Nii et me tegelikult võtta teatud meetmeid, sest muidu
Programmi kavatse istuda seal vilgub kogu päeva.
Aga kui ma lihtsalt Enter -
OK, nüüd, ikka ootab vale.
Kas ei ole viga, aga äkki seal on nüüd võimalus
rakendamise alustamine rangem programmi
et tegelikult kontrollib.
Ja kui string, lause, sõna, mida ma
kirjutatus on pikkusega 0, noh, äkki ma peaks kisa
kasutaja, või ütle talle sisestada stringi uuesti, nii et
me tegelikult saada, mida näeb õiget käitumist ja ei
lihtsalt täielik kontroll minu poolt.
>> Küsimus on tagasi?
Kümnendikuni.
Nii et me võiks proovida seda ka.
1,10000005.
Tundub, et läheb lihtsalt tööd tegelikult midagi.
Ja et tegelikult oodatakse.
Isegi kui me oleks kirjutatud, et number on olemas, või
suurem hulk varem aru, et kui me kirjutades kasutaja
sisend ja me kasutame getString funktsioon, ei
ükskõik, kui ma olen masinakirja välja näeb arvu.
Tuletame meelde, et vastavalt ASCII, kõik oma
Klaviatuuril on numbriline väärtus, mis saab kaardistada
iseloomu, char.
Nii et sel juhul, kuigi ma võiks kirjutada number,
arvuti läheb mõtlevad, kui nii võib öelda, kui string -
midagi, mis näeb välja nagu hulk, kuid on
ei tegelikult arv.
Aga see on tegelikult täiuslik segue, sest nüüd saame
tegelikult üleminek kirjalikult programmid, mis
kasutada muid andmetüüpe.
>> Nii et peale kasutades sümboleid, või õigemini peale kasutades stringid,
mõistma, et meil on ka teisi andmetüüpe C kui ka
teistes keeltes.
Char, nagu nimigi ütleb, on lihtsalt üks sümbol.
Ujuk on ujukoma väärtust ja see on lihtsalt väljamõeldud
viis öelda tegelikku arvu - midagi, millel on kohaga
mõtet seda mõned numbrid vasakule ja / või paremale.
Väravavahi on täisarv, mis on lihtsalt number, nagu 123.
Ja nüüd veel huvitavalt on asjad topelt.
Mida me ütleme topelt oli viimane kord?
See on 64, õigus.
Nii et arvestades tavaliselt Ujuk on 32-bitine -
nii et see on see pikk mälu, ta kasutab 32 nulle ja ühtesid kuni
esindavad väärtused - topelt on sõna otseses mõttes kaks korda suurem, mis
tähendab, et sa saad ise esindada suurem numbrid või
saate esindama täpsemad numbrid.
Nii et sul võib olla mitu numbrit pärast koma, kuid
kui mehe sõnul on video, isegi midagi lihtsat
kontseptuaalselt nagu 1/3 ei saa olla esindatud just
arvuti, sest lõpuks otsa bitti, ja
Seega saab teha ainult .33333333 nii palju kordi, on
mis hetkel sa lihtsalt pean ütlema, ma kaon esindus
ruumi, ma pean lihtsalt nimetavad seda päeva ja esindada
mõnevõrra ebatäpselt meeldib.
Ja pikka -
loll nimi, kuid see on, sest seal on andmetüüp, mida nimetatakse
pikk C, mis juhuslikult on sageli 32 bitti, nagu
int on 32 bitti, kuid pikk pikk on
üldiselt 64 bitti.
Nii see lihtsalt tähendab, et saate esindama suurem
numbreid kui see.
>> Hea küll.
Nii et kui me tegelikult tahame alustada esindavad asju, me
võib olla vaja keerukamaid tüüpi ning
Sellepärast on meil string.
Nii CS50 raamatukogu, et fail nimega cs50.h, oleme
tegelikult deklareeritud andmete tüüp, nii et rääkida, mida nimetatakse jada,
kuid string tegelikult ei ole.
See on taas üks neist kihtidest läheme koor
tagasi nädala või kaks ja see ära visata, ja tegelikult
alla vaadata kapuuts, mida string tegelikult on, ja
kuidas see esindatud.
Töötame ka läheb pilk Boolean väärtused.
>> Mis siis oli bool kontekstis Scratch?
See on õige või vale.
Nii et see on lihtsalt väärtus, mis on õige või vale, või välja lülitada, 1 või
0, aga mida soovite vaadata kogu maailma.
Nii C tänu CS50 raamatukogu, mis omakorda
sisaldab teise raamatukogu all kapuuts, meil on
juurdepääsu andmetüüp, mis kutsutakse bool, kes edastab
sõna otseses mõttes võimaldab meil määrata väärtused õige või vale, et
asjad programm.
>> Nii lähme edasi siin ja kirjutada väike programm, mis
ei midagi seotud numbrite asemel.
Nii et lubage mul tagasi minna CS50 Appliance, lubage mul minna ja
Uue faili siin nimetatakse -
ütleme lihtsalt midagi lihtsat, nagu math.c.
Hea küll.
Ja nüüd tõusta tippu minu programm, ma olen
teeme ikka -
# Include , nii et võin kasutada
printf, int main (void) -
me tuleme tagasi, lõpuks, mis int tähendab
siin, mida tühine tähendab siin, aga praegu, lihtsalt tean, et
sa pead alustama programmid nagu see.
Nüüd ma lähen edasi minna ja öelda midagi veidi
erinev - printf ("Anna mulle number:"
);.
Siis ma teen int n = GetInt, sest see
Tuleb välja, GetInt on teine ​​funktsioon CS50 raamatukogu
lisaks getString.
Ja nüüd ma teen midagi rumalat, nagu "tänu
jaoks% d "jaoks kohaga täisarv, ja siis koma n ja
siis tagastab 0.
Nii et taas, tagastab 0 on midagi pistmist arvu ma olen
küsib kasutaja jaoks.
Lihtsalt tähistab lõpus, et kõik, arvatavasti, on hästi.
>> Nii et lubage mul minna minu terminaliakent siin.
Lubage mul tippida teha matemaatika, siseneda.
Ja midagi on valesti.
Tee matemaatika ei tööta.
Siin on esimene meie veateateid.
Miks?
Vähe segasena, kuid -
Jah.
Nii cs50.h.
Nii et taas, eriti varakult, siis saad kirjutada oma esimese
programmi pset 1 osadeks, tööaega ja
ausalt, see saab olema valdav mõnikord millised need asjad
tegelikult öelda.
Aga saate aru väga kiiresti nad hakkavad langema
arvesse ämbrid, millega see tähendab, et olete lahkunud välja üks
on # sisaldab ülaosas faili.
Ja rõkkama, kompilaator on teavitab teid selle poolt
öeldes, pigem luulelennuliselt kaudne deklaratsioon
funktsioon GetInt on kehtetu.
>> Hea küll.
Nii et mida see tähendab?
See lihtsalt tähendab, et olete vaikimisi, GetInt sisse
selles mõttes, et sa ei ole selgesõnaliselt kuulutanud.
Selgesõnaliselt deklareerida int, sa pead õpetama
Rõkkama, et see on olemas.
Ja väga lihtne lahendus, mis on õpetada seda
sealhulgas selle teise faili, cs50.h, kell
üles oma faili.
Sest sõna otseses mõttes, mida # include ei ole see ütleb rõkkama
päris palju minna leia faili nimega cs50.h, kopeerida,
kleepige see automaatselt peale minu programm minu jaoks,
ja seejärel teisendada lähtekoodi nulle ja ühtesid.
Aga see oleks ilmselt väga tüütu, kui meie, inimesed pidid
minna kopeerides ja kleepides need suured failid kogu aeg,
nii # include lihtsalt teeb kõik, et automaatselt ilma
muddying minu kood kellegi teise raamatukogu.
Ja raamatukogu on lihtsalt üks fail funktsioone ja
muid asju, mida keegi teine ​​on kirjutanud, et me oleme
võimendades meie endi huvides.
>> Hea küll.
Proovime uuesti.
Tee matemaatikat.
Enter.
Hea.
Nii et tundub, et on töötanud.
Nii et lubage mul nüüd jooksma matemaatika;. / Matemaatika.
Sisesta annab mulle number, 123.
Täname 123.
Nüüd proovime teise nurga puhul.
String on üsna helde, sest
string võib olla mis iganes.
Kas nägema numbrid, nägema
tähemärki, näeb välja sõnad.
Aga int on int.
Nii et nüüd, kui ma olen raske kasutaja ja see ütleb: "Anna mulle
arvu, "mis siis, kui ma üritan teha midagi 0,1?
Noh, see on number, ja see on kooskõlas
grammatika ma siin kasutatud, kuid all kapuuts, ma olen
Muidugi, kasutades funktsiooni GetInt.
>> Nii et vaatame, mis juhtub.
Sisesta, proovige uuesti.
Hea küll.
Lubage mul olla raske ja lihtsalt Enter uuesti.
Sisesta Enter.
Nüüd tundub, et GetInt on natuke rohkem
võimsam kui getString.
Meie, personal, rakendatakse nii, et kui märkame
te ei ole andnud meile int - ja int on kümnendmurruna
sisaldab nulle, need, kahekesi, kolmekesi, püksid, viied, kuuekaupa
seitsmed, kaheksad või üheksad.
Ja ongi kõik.
Ei koma, ühtegi märki, mitte kirjavahemärke.
Tundub, et me peame koostööd tegema.
Nii et lubage mul proovida neli, viis, kuus, ja mis saab mind läbi.
Nii et tõesti, et anal siin, ma peaks ilmselt öelda: "Anna mulle
täisarv ", et edastada kasutaja
täpselt, mida ma kavatsen.
>> Nüüd mõtleme selle all kapuuts.
Me ei lähe vaatama, kuidas cs50.h rakendatakse täna,
et raamatukogu.
Aga kui ta hoiab öeldes proovige uuesti, uuesti, uuesti, mida programmeerimine
ehitada ma arvatavasti kasutades all kapuuts
rakendada seda?
Nii lihtsalt loop, eks?
Üks lihtsamaid ideid, mida nägime Scratch.
Forever ehitada, kordamise konstruktsiooni.
Arvatavasti selles programmis all kapuuts, isegi
kuigi see on kirjutatud C ja mitte nullist, see läheb
midagi, mida nimetatakse samaväärseks igavesti kui kasutaja ei ole
sisestatud täisarv, öelda uuesti, uuesti, uuesti, uuesti, nii
siis lõpuks, kui me ei saada täisarvu, siis
murda läbi selle kontuuri.
>> Mis siis muud funktsioonid saame kasutada siin CS50 raamatukogu?
Noh, selline ilmne need, vähemalt põhineb
andmetüübid, et me teame nüüd olemas.
Me rakendatakse getString, GetInt, kuid kogu
esimeste nädalate perspektiivis, võid kasutada ka GetFloat ja
GetDouble ja GetLongLong, et saada täpselt
andmetüübid, mida soovite.
Sest võti detail on see, et erinevalt mõnest keeles,
nagu Python ja Ruby, kus sa ei pea tingimata
tunnistada andmete tüüpi muutuja -
sa ei pea ütleb arvuti, mida sellist kraami
sa lähed panna muutuja -
C, peate olema kunagi nii täpne.
Nii et kui soovite muutuja nimega n, patakas ladustamine
et sel juhul juhtub olema 32 bitti, kokkuleppeliselt te
pean ütlema arvuti, et need bitid on
lähed salvestada arv -
ei iseloomu, ei ole string, mitte sularahaga.
Ja see lahendab probleemi, me tõhusalt
sattus eelmisel nädalal.
Kui me kasutame nulle ja ühtesid numbreid esindama mitte ainult
numbrid aga As ja Bs ja Cs, kuidas maailmas on
arvuti läheb teame, et see muster bitti tegelikult
esindab arv 65, vastandina esindavad
kirja, mis juhuslikult, vastavalt
ASCII, mäletate, oli see võrdub 65?
>> Nii et need andmetüübid luua kontekst arvutiga, nii
et ta teab, kui need bitid tuleks tõlgendada
int või string.
Kõik küsimused, siis sellest?
Jah?
David J. Malan: Hea küsimus.
Kui me võtame välja stdio.h, me salvestada faili -
lubage mul minna terminaliakent ja kestab teha matemaatika, zoom
ja sisestage -
nüüd ma saan erinevaid viga, sest ma olen kaudselt
kuulutatakse missugust ülesannet nüüd?
Printf.
Nii et nüüd ma olen loonud uue probleemi, mille lahendamine on
sisuliselt sama.
Ma pean tagasi jalga panna.
Sihtrühm: [kuuldamatu]
David J. Malan: Oh.
Nii et kui ma võtan välja -
Okei, jah.
Nii et kui ma eemaldan standard I / O raamatukogu kaasamise üles
siin ja siis sa ütled kui ma vabaneda printf, saada
lahti printf?
Jah.
See peaks töötama, sest ma ei kasuta enam üldse - Ups.
Kas ma lihtsalt valetada?
Oh, okei.
See ei toimi, sest uus viga me lihtsalt sisse.
Ja see üks on natuke rohkem iseenesestmõistetavad.
>> Milles probleem?
Kasutamata muutuja n.
Nii et see viga on tingitud meie olles seadistatud
Seade on eriti pedantne, tõesti kisa
sa iga võimalikku viga, isegi kui see on selline
mitte-fataalne viga niimoodi - kas see on tõesti nii suur
tegeleda, et ma eraldatud int, pane number see ja seejärel
lihtsalt ei teinud midagi sellega?
Nii funktsionaalselt, ei.
See ei kavatse murda programm.
See on lihtsalt tobe, eks?
Ei ole väärtust, kes palus, et number, salvestatakse
see muutujale, kui sa oled kunagi midagi teha
seda, kas printida või salvestada.
Nii et sel juhul rõkkama on teadvustamine nii palju, ja
ta ütleb kasutamata muutuja n.
>> Nii saame määrata seda kui me tõesti tahame.
Aga jälle, see ei ole hea programmeerimise nüüd.
Ma võiks lihtsalt teha -
minna siin, lubage mul selge ekraan, teha matemaatikat.
See toimib.
Nüüd ma saan käivitada mu matemaatika programm, võtab sisend -
Noh, see oli halb.
Teeb panuse, ja see on kõik see, käesoleval juhul.
>> Nii et tegelikult, proovime ühte teist nurka nii, et me
ei mõelnud varem.
Sel juhul - siin, lähme tagasi üks, mis on
natuke rohkem kasutajasõbralikumaks.
Laske mul minna siia tagasi ja käivitage teha matemaatika uuesti.
Oih, mida ma valesti tegin?
Sain tagasi pöörata veelgi.
Okei.
Nüüd oleme tagasi algne olek, kus kõik
on loodetavasti hästi.
Ja nüüd, kui ma saan matemaatika, 123 tundub töötavat.
Kuid see ei ole tõesti tõhus tõend, et lihtsalt öelda
okei, mis töötab.
789, mis töötab.
Aega esitada.
Sest seal on teises nurgas juhtudel siin.
String tegelikult ei anna meile palju pahandust kirjutades
kogu palju tähemärke.
Aga kui ma kirjuta see?
Lööb number 1 kogu palju, palju siin -
Olgu, see läheb natuke igav, nii et ma lähen
lõpe siin, ja ma lähen Enter.
>> Mis kurat nüüd juhtus?
Nii et see võib tegelikult seletada.
Nii kulus seda binaarne?
Hea mõte, aga ei, see ei ole asjaolu, et ta võttis selle
nagu binaarsed, sest tõepoolest, see oli lihtsalt selline
kokkusattumus.
Me saame seda teha uuesti.
Seega puudub 2 binaarne süsteem, mis on
ilmselt piisavalt niikuinii.
Enter.
Nii et see ei olnud probleem.
Mis veel?
Täpselt.
>> Nii et mõtle sellele, mida int tegelikult on.
See on 32 bitti, mis kokku on tõlgendatud
nagu number.
Kui teil on 32 bitti, mis tähendab, et iga bitti võib olla
0 või 1, 0 või 1.
See tähendab, seal on kaks võimalust seda natuke,
kaks võimalust seda, on kaks võimalust selle
natuke - nii see on 2 korda 2 korda -
nii et on 2 kuni 32 võimsus on kokku
permutatsiooni nulle ja ühtesid kui teil on 32
kohatäited, nulli või need, teie ees.
Nii et kui mul on 2 kuni 32, matemaatiliselt, see on, mida?
Nii et see on palju.
See on 4 miljardit anda või võtta.
Ja 4000000000 ei tundu olema, mida trükiti siin.
Tegelikult see näeb välja 2 miljardit eurot.
Kuid see ei ole juhus.
Asjaolu, et arvuti on valesti minu suur arv,
minu tohutu jada ühtesid ja siis mu tohutu järjekord kahekesi
kui umbes 2 miljardit on selgitatud kuidas?
Seal on piir int.
Seal on kindlasti suurim väärtus, mida saab esindada.
Aga see on tavaliselt 4000000000, eks?
Kui 2 32 on ligikaudu 4 miljardit eurot, mis tundub
See on suurim number.
Nii ei jäänud, kuid hea mõte.
Negatiivsed arvud.
Nii et kui teil on 4000000000 võimalik asju saab
esindada nende erinevate kombinatsioonide 32 0s ja
1s, noh, siis loogiline, et meie, inimesed, võiksite
esindada mitte ainult positiivsed täisarvud
kuid taisarvud.
Ja tõepoolest, see on eeldusel, et C teeb.
Nii 32 bitti, saab esindada jämedalt negatiivne 2
miljardi kõik viis kuni positiivseid 2 miljardit eurot.
Ja nii sel juhul, mida me tegelikult näeme, on lihtsalt
kulgev suutlikkust meie täisarv, ja meil on, nii
rääkida, ülevoolavalt täisarv.
Oleme püüdnud tuupima rohkem bitte sinna peale saab tegelikult sobivad.
Nii et lõpptulemus on meil sisuliselt on kõik 1 bitti.
Oleme keerata kõik meie bitti, oleme püüdnud esindada
Kõige rohkem võimalik, kuid see on selgelt ei pea
piisavalt suur, et esindada kahte asja ma olen lihtsalt kirjutada logida
Jah?
Sihtrühm: [kuuldamatu]
>> David J. Malan: Hea küsimus.
Miks me ei võiks lihtsalt esindavad et negatiivne
kirjutama kui lihtsalt iseloomu?
Nii et me absoluutselt suutnud, võiksime päästa
täiendavaid natuke.
Aga sa ikkagi ise esindada, et kriips, ja
et läheb teile maksma vähemalt midagi,
eeldatavasti veidi.
Nii et jah, me võiks olla 32 bitti kasutatakse meie number, kuid nüüd
vajame teist natuke kasutatud meie kriips
sümbol, miinusmärgiga.
Nii et nüüd on meil 33 bit väärtused, mida me võiksime teha, aga see on
lihtsalt ei tee seda tehakse.
Tegime otsuse kõne aastat tagasi, 32 bitti on omamoodi
mõõtühik siin.
Nii et me ei kavatse kasutada üks neist bitti tõhusalt
esindada negatiivsus, ja 31 bitti esindama arvu.
Muud küsimused?
Hea küll.
See on palju.
Miks me ei võiks minna edasi ja võtta meie viieminutiline paus siin?
>> Hea küll.
Nii et taas, mitte overemphasize matemaatika rakendusi
programmeerimine, lähme lihtsalt sikutama välja see üks näide
enne Astume muud skeemid, lihtsalt sellepärast, et see
illustreerivad mõned ühised komistuskivi punkte mõned
põhitõdesid, kui on tegemist kirjalikult programmid.
Sellisel juhul teeb aritmeetilised avaldised et mõned
huvitav olulised süntaks.
>> Nii et see on lihtsalt valem, mille abil saame muuta
temperatuurid Fahrenheiti Celsiuse järgi.
Kui te ei mäleta, see on lihtsalt valem.
Nii et kui me lülitame sisse Fahrenheiti väärtus 32 kraadi, mis on
külmutamine, mis saab olema 32 miinus 32 on 0, ja tõepoolest,
0 Celsiuse järgi on ka külmutamiseks.
Nii kiire meelerahu vaadata seal - see on tuttav valem.
Lubage mul minna üle seadme, kuigi ja alustada
kirjalikult programmi nimega, nagu, f2c; "Fahrenheiti
Celsiuse dot c ".
Ja kuni ülaosas siin, ma lähen alustad # include
stdio.h, ja ma teen int main (void), ja
Jällegi, me tuleme tulevikus, milliseid int tähendab
ja millised tühine tähendab seal.
Ja nüüd lubage mul minna ja rakendama programmi, et
sisuliselt teeb see muundumine meile.
>> Nii printf, oletame, temperatuur Fahrenheiti järgi.
Ja siis lubage mul minna ja saada raha kasutaja.
Millist väärtust ma peaksin kasutaja, kui ma tahan
neid mulle temperatuuri Fahrenheiti?
Jah?
Mida soovitaksite?
Jah.
Nii Ujuk tundub päris mõistlik.
Meil on jällegi vaid mõned võimalused, mis
oleme näinud siiani.
Meil on asjad nagu paalia, double, float, int, long pikk,
bool, string.
Nii et need, float tundub päris mõistlik.
Me võiksime kasutada topelt, eks, sest kui me tõesti tahame
esindab inimese temperatuur -
98,60000 -
saaksime kasutada 64 bitti teha, kuid tundub, nagu
overkill temperatuur.
Nii Lähme koos sularahaga.
Nüüd on mul vaja muutuja.
Lihtsalt hoida asjad lihtsad, ma lähen kutsun seda f, aga ma
võiks sama õigesti nimetan seda temperatuuri,
kuid kas on hea.
Nii float f = GetFloat.
Niipea, kui ma nüüd oleme otsustanud kasutada GetFloat, kuigi ma
vaja teha ühe korrektsiooni.
Jah.
Seega peame # include , muidu kompilaator on
läheb kisa meile.
Nüüd, kui mul on ujuk, lubage mul minna ja teha
vahetamisega.
>> Nii et esimene, las ma ka sattuda harjumus siin
Kommenteerides minu koodi.
Nii et taas, kommentaar on lihtsalt märge inimese, mis on
ei kuulu programm iseenesest, kuid see üks, mis aitab teil
mõista, mida sa tegid järgmisel hommikul või järgmisel
kuus, see aitab teie õpetamise mehe aru, mida sa tegid
või mida sa ette teha, nii et see on
üldiselt väga häid tavasid.
Iga paar rida koodi, kirjutada kommentaari
ise või teie kolleeg.
Nii et siin, ma lähen ütlen, "Küsi kasutajalt temperatuur."
Ei pea olema täielik lause, vaid lühikese fraasi.
Aga mõte kommenteerib C on see, et iga teie
märkusi tuleks anda teile - või, ütleme, TF või kolleeg -
koorima oma programmi ja teavad täpselt, mida ta teeb, mida ei
nii palju koodi lugemine, kuid lugedes kommentaare, mis
peaks olema lühike ja selge.
Olgu, nüüd las ma minna ja öelda: "Convert
Fahrenheiti Celsiuse järgi. "Ma lähen edasi minna ja teha,
oletame, float c.
Hoiame Celsiuse kui ujukoma väärtus.
>> Ja las ma võtke torkehaav seda.
Valem on taas siin.
Nagu 09/05 korda F miinus 32.
Nii et teeme seda.
Nii 5 jagatud 9, miinus -
Oih, ma messed see üles juba.
Times.
Nii 09/05 korda F miinus 32.
Nii et F miinus 32, semikoolon.
Ja nüüd, siin, ma lähen edasi minna
ja öelda, printida tulemust.
Ja see osa on lihtne. Printf.
Kuidas minna umbes trükkimiseks?
Noh, ma võiks öelda: "See number Celsiuse järgi on% f \ n",
ainult mõned esteetika.
Ja mis siis raha ma tahan ühendada siin printf poolt
Teine argument?
Okei.
Nii lihtsalt c.
Nii et hakkame koos seda ja siis lihtsalt tagasi 0.
Jällegi, see on midagi pistmist matemaatikat.
See tähendab lihtsalt, et kõik on hästi.
>> Nüüd on see õige, see programm?
Hea küll.
Nii et ma olen teinud vigu.
Isegi kui sa ei tea, mida programmeerimine on, saate sortida
ja järeldavad tagasi algkool mida
vigu siin olla.
Mis on üks esimesi?
Sihtrühm: [kuuldamatu]
David J. Malan: Jah.
Nii et meil puuduvad sulud.
See oli tahtlik, et ma tegin sulgudes Keynote
lükake siia, sest seal on tegelikult see mõiste selleks,
tegevusest või pretsedendist, kus teatavad toimingud -
korrutamine -
on suurem siduvad, on suurem pretsedendist, kui asjad
nagu lisamise või mahaarvamise.
Nii et me oleme teinud seda juba aastaid just täpselt selgeks
mida matemaatilist operatsiooni tuleks teha esimene.
Nii et ma peaks ilmselt jäljendada täpselt seda.
Muidu arvuti on arvatavasti läheb püüdma teha
midagi lõhe 5 9, siis korrutatakse F, lahutage
32 alates kogu asi.
Mis ei ole tegelikult see, mida me tahame teha.
Nii et olgem parenthesize.
Olgem lisada oma sulud siia, sulgudes siin.
Paneme selle siia.
Siin ma lihtsalt märkasin teise viga tegin mööda teed.
Jah?
Sihtrühm: [kuuldamatu]
>> David J. Malan: Ah.
Hea.
Nii et meil on tegelikult sama täisarv
jagunemise küsimusega enne.
Ma korrigeerida, et vaatame, mis sümptom on.
Aga me ei kavatse on õige
muud viga siin.
Jah?
Sihtrühm: [kuuldamatu]
David J. Malan: Jah.
Nii loll viga tegin, kuid uskumatult oluline.
Arvuti ei kavatse lihtsalt silmi kinni pigistama ja lase
mul kasutada kapitali F, kui ma tegelikult deklareeritud muutuja
kui väiketähti f siia, reas 8.
Nii et mul on vaja korrigeerida line 11 minu kapitalisatsiooni, mis
hetk tagasi oli kapital F kogemata.
Aga siin?
Kas see peaks olema väiketähtedega ka?
See peaks olema, kuid see on kokkusattumus.
See% f on midagi pistmist muutuja.
Nii lihtsalt olema super selge siin, lubage mul minna ja
Nimeta lühidalt "temperatuuri." Lubage mul ümber
see "temperatuuri." Las ma ei nimeta seda.
Sest jällegi% f maailmas tähendab, "ujukoma väärtus."
Pole midagi pistmist minu muutuja.
Aga "temperatuur" kogu koht on natuke sõnaohter,
nii et ma lähen tagasi oma väike "f" s.
>> Nüüd lubage mul minna kuni mu akna siin.
Tee f2c -
mis oli jällegi suvalise nime ma
andis sellele failile.
Tundub, et on koostatud.
Ma jooksen f2c.
Enter.
Temperatuuri Fahrenheiti - teeme lihtne.
32.
OK, parandage.
Aga kui ma nüüd tegema 212 keeva -
neetud.
Hea küll.
Niisiis, selgelt vale, kui teie TF püüab
vähemalt kaks väärtust.
Mis siis probleem?
Noh, sa juba näpuga näidata, mida on küsimus.
Aga miks on see nii?
Siin üleval, kui teen matemaatika 5. jagatud 9.
Nii et põhimõtteliselt, see on täiesti õige.
Täielikus kooskõlas valem.
Aga arvutid teha ainult täpselt, mida sa
ütle neile, mida teha.
Ja mida me tegelikult ütleb arvuti, siin on
jagada täisarv 5, täisarv 9
ja mulle tulemus.
Probleem on, aga kui sa rajoon andmeid kasutades
tüübid, väljund on sama andmetüüp kui sisendeid.
Ja nii kui kaks sisendit on nii ints, toodang läheb
olema int.
Ja nii 5 jagatud 9 on punkt midagi.
Aga mis on lähim täisarv juhtida midagi?
Nii, see on tegelikult 0.
Nii et kui me arutasime esmaspäeval, kõike pärast koma
Punkti saab kärbitud.
See lihtsalt läheb minema visata.
Nii et see on täielik vale, sest ma võin ka lihtsalt
korrutab kõike 0 siin.
>> Nüüd saan selle kohta paar võimalust.
Ma võiksin seda teha.
5,0 jagatuna 9.0.
Tehniliselt, ma isegi ei pea seda tegema.
See ei piisa lihtsalt üks arvudest float -
või topelt - pannes koma siin.
Sest see, mis juhtub nüüd on, kui sa jagad täisarv poolt
float või topelt, arvuti läheb mõistma
oh, üks neist on täpsem.
Lubage mul Syyllistyä annab teile rohkem täpsust kui
Te soovisite.
Nii et see teisendada tulemus -
ta naaseb tulemus ujukoma väärtus samuti.
Nii, et oleks tööd.
See teeks.
Ja seal on üks teine ​​mehhanism, et me näeme
üksikasjalikumalt järgmisel nädalal.
Võite tegelikult, nagu programmeerija, ütleb arvuti
tegelikult ravida ühe andmetüübi nagu
kuigi see oli teine.
>> Ma võiks tegelikult teha.
Sulgudes võin öelda midagi sellist (float), avatud
paren lähedal paren.
Ja see on, mida nimetatakse "casting." Jällegi rohkem
selle järgmisel nädalal.
Kuid see on vaid programmilise viis öelda
arvuti, jah ma tean 9 on täisarv või pikk.
Ma tean, et see pole ujukoma väärtus.
Aga käsitleme seda sellisena niikuinii.
Nii et enamus andmetüüp tähendab teisendada
ühest teise.
Ausalt, see on lihtsalt natuke inetu, et ma teeksin ettepaneku, me läheme
Tagasi esialgne ettepanek lihtsalt konverteeriva
need asjad murdarve käsitsi.
Sest nüüd, see on lihtsalt super selge, mis toimub, ja
see pole kõik, mis häirivad.
>> Nii et olgem nüüd minna tagasi minu terminaliakent.
Tee f2c.
Lubage mul minna ja teha selle.
Ja nagu kõrvale, kui teil igav kirjutades neid käske
ikka ja jälle aru, et arvutid, nagu Linux siin,
kipuvad olema üsna nutikas.
Ja kui ma tabanud, me ei lähe läbi kogu mu ajalugu
käske, üles ja alla.
Nii et selles asjas, ma ei saa lihtsalt minna kuni kestab teha f2c.
Mind karjusin, sest ma just tegin seda hetk tagasi.
See on juba kursis.
Nii et nüüd ma saan käivitada f2c uuesti.
Proovime 32 Fahrenheiti järgi.
Nüüd proovime 212 Fahrenheiti järgi.
>> Phew.
Tundub, et töö.
Nüüd on see hea, kuid tundub veidi meelevaldne, et
Ma näitan kuus numbrit pärast koma.
Eks?
Kui oled ilm inimene televisioonis, et sa oled mingi jobu
kui sa loed temperatuuri
Selle täpsusega.
Nii et olgem seda lihtsustada.
Nii et olgem ikka lendab siin, et minu printf.
Ja jah, ma tahan ujuma.
Aga ma tahan nüüd täpsustada täpsusega.
Ja ma lähen olema natuke lühike.
Ma ütlen, anna mulle üks punkt pärast koma.
Nii et pigem öelda% f, ma lähen ütlen% .1 f.
Ja see tähendab lihtsalt, anna mulle üks positsioon
pärast koma.
Hea küll.
Proovime seda uuesti.
Lubage mul uuesti käivitada pärast kompileerimist.
Ja nüüd ma kirjuta 32, ja ma saan tagasi
sisutihe väärtus.
Ja ma ei kirjuta, nüüd, 212, ja saada tagasi sisutihe
väärtus samuti.
Ja seal on teisi asju, mida saate teha printf.
Võite tegelikult täpsustada, kuidas suur hulk peaks olema.
Kui sa tahad olla pehmendus see, et saaksite paremjoondamiseks või
vasaku viia kõik oma numbrid või
proovige keskus asju.
Nii aru, seal on vähe trikke saab teha seal.
Aga nad lihtsalt taanduvad vormingu tähistamine,
nagu oleme seal.
>> Nii et nii see küsimus tähtsam.
See on väga igav tabel minna läbi metoodiliselt.
Aga mõistan, et autorid C on tulla
eeskirjad, mis määravad, mida ettevõtjad on suurem
pretsedendist, mitu siduvat jõudu, kui teised.
Nii et arvestades algkool, me üldiselt teadsime, et see oli
korrutamine ja jagamine, siis liitmine ja lahutamine,
siis mõned muud kraami.
Maailmas, programmeerimine, seal on palju
enam nimekirja asjadest.
Ja see ei ole midagi väärt meeldejätmist nüüd.
Saad harjutada enne pikk.
Aga nagu algkool, sulgudes üldiselt lahendada
küsimustes ülimuslik, tehes super selge
arvuti ja inimese moodi mida on mõeldud.
Nii et pean seda natuke petma lehte seal.
Aga enamik neist üksikasju me ei jõua mõnda aega.
>> Hea küll.
Nüüd saab luua ja eemalduda neist rumal vähe
matemaatilisi näiteid.
Ikka kasutada sama põhialuste, kuid alustada
eneseväljendamisel veidi nagu nullist.
Nii Scratch, meil oli neid Boole'i ​​avaldised.
Ja inglise keeles, Boole'i ​​avaldis on mis?
Õige või vale.
See on midagi, mis hindab õige või vale.
1 või 0.
Sisse või välja.
Mida iganes sa tahad seda kutsuda.
Nüüd Scratch, puzzle tükki nägi välja selline.
Ja see on kombinatsioon, põhja seal, kolme
puzzle tükki.
Üks koos -
midagi, mis on tühi ja tühjaks.
Ja siis kaks Boole'i ​​avaldiste sees on.
Nii saad pesa Loogiline väljendeid saada rohkem
keeruline Boole'i ​​avaldised.
Näiteks, kui see on laupäev, ja see on tore
ilm, siis mine välja.
Või midagi meelevaldset niimoodi.
Nii saab liituda Loogiline väljendeid tulla
suurem tõde väärtus, mille vastus põhineb
kohta väiksemad.
>> Nüüd, C, õnneks see kaardistamine on
tegelikult päris lihtne.
Sulgudes aidata teha asju selgeks siin.
&& On see, mida tähendab "ja". Nii see on, kuidas
me ei kavatse muuta need plokid nullist C.
Ja tingimused nägime Scratch, vasakul
poolel, võin korstnat neid samamoodi ka C. Kui x on väiksem
kui y, siis tee seda.
Else if x on suurem kui y, siis tee seda.
Else loogiliselt need peavad olema võrdsed, nii öelda
et nad on võrdsed.
Nii saame nüüd hakata ehitama neid asju.
>> Teeme näite.
Lubage mul avada faili, mis on rajal veebilehte, et
Ma kirjutasin eelnevalt.
Seda nimetatakse nonswitch.c.
Ja me näeme, miks just hetk.
Nii et see fail - nonswitch.c--
kõigepealt mõistma, et seal on terve hunnik
kommentaarid ülaosas.
See on lihtsalt selgitades faili nimi, mida ta
ei, ja nii edasi.
Ja see ilmselt näitab kasutamist Loogiline JA-se -
konjungeerimise kaks väljendit.
>> Nii et vaatame, kuidas see programm töötab.
Ma sisaldama minu kaks faili, cs50.h ja stdio.h.
Kui ma keri, nüüd, et programm, see on natuke pikem
kui oleme kirjutanud varem, kuid päris loetav.
Nii et ma esimest printida kasutaja on line 18
"Anna mulle täisarv vahemikus 1 kuni 10." Nii
see on seal.
Nüüd ma saan täisarv.
Aga mõistan, et GetInt - päris lihtne.
See on lihtsalt hakka int.
See saab tagada, et see ei saa int ja ei
jada või sularahaga.
Aga ta ei kavatse teha mingeid piire kontrollitakse.
Ta ei kavatse filtreerida numbrid olla vahel
teatud piirides.
Seega peame rakendama, et ise.
Nii nagu ka Scratch, kus ma võiksin teha koosmõjul
kaks väljendit, mida ma teha saan, et C järgmiselt.
Kui n on võrdne või suurem kui 1, ja n on väiksem kui ja
3 või sellega võrdne, ma väga meelevaldselt dekreet, et
arv olema väike arv.
Lihtsalt huvides oma avalduses.
Else if n on vahemikus 4 kuni 6, print "Sa valisid keskmise
arvu. "Else kui n on vahemikus 7 ja 10, print" Sa valisid
suur arv. "Else print" Sa vali vale number. "
Sest loogiliselt, et järgmine, kui oleme
ammendatud meie valik.
>> Nii et realiseerida see ei ole päris, kuidas me kirjutame suurem või
võrdne aastal matemaatika klassi.
Eks?
Te tavaliselt joonistan selle niimoodi, koos rida selle alusel.
Aga ei ole olemas sellist klahvi minu klaviatuuri.
Nii sümbol C väljendamiseks suurem või
võrdne on kaks märki ja sümbolit alla
või võrdne on kaks märki ka.
Hea küll.
Nii et kui ma saan selle programmi, saate ilmselt arvata, mis see on
teeme.
Kui ma minna ja teha nonswitch, Enter.
Ja siis joosta nonswitch.
Anna mulle number vahemikus 1 kuni 10.
Ma annan ta 11.
Ma valisin vale numbri.
Las ma proovin number 3.
Ma valisin väikese arvu.
Nii et üsna lihtne on.
>> Mida teha, kui ma tahan muuta käitumist selle programmi ja
teha midagi veidi teistsugune asemel?
Lubage mul minna ja öelda.
Lubage mul vabaneda sellest kõigest.
Ja lubage mul öelda, kui (n == 42).
Ja siis ma lähen edasi minna ja öelda print "Sa valisid
õige vastus. "muidu me läheme edasi minna ja öelda,
printf ("Sa valisid
vale vastus. "); Okei.
Lihtsalt.
>> Nüüd, mõned punktid saame teha siin.
Üks, ma ei kirjuta sümbol, mis sa arvad on
kõige mõistlikum.
Kui ma tahan vaadata võrdsus, selgub te ei kasuta
võrdusmärk.
Sa asemel kasutada võrdse võrdusmärk.
Ja miks see võiks olla, lihtsalt intuitiivselt?
Jah.
Sihtrühm: [kuuldamatu]
David J. Malan: Õige.
Võrdusmärk on juba kasutatud loovutamisega.
Keegi tegelikult ei usu, et see läbi.
Ja nüüd, kui on tegemist võrdõiguslikkuse katsetamine, peame
olema selgem, ja öelda võrdub võrdsetena.
Väga levinud viga on seda teha.
Ja kui ka tööaega või millalgi järgmisel nädalal või
Järgmise kahe nädala jooksul sa midagi sellist ja siis
võitlevad sellega 10, 20 minutit püüab välja selgitada
Mis kuradi viga on, aru, et te olete üks neist,
inimesed, kes tegid selle vea.
Nii super lihtne teha.
Aga eesmärk on nüüd ennekuulmatut seda viga.
See võiks hinnata, sest see, mida see tegelikult öelda?
Kui n saab 42.
Nii tegusõna inimesed kasutavad, verbaalselt väljendada
mõiste loovutamine on "läheb." Nii et kui n saab 42.
Nii et see tähendab määrata 42 kuni n.
Nüüd on mul Boole'i ​​avaldis sulgudes,
sees see tingimus, mille väärtus on 42.
Eks?
Sest kui sa seda hinnata seest kokku
vastus, nüüd on 42.
>> Nii et kui ma küsisin sult küsimuse, "kas (42)," Mis on
et tegelikult öelda?
Noh, Boole'i ​​avaldiste saab olla ainult õige või vale.
1 või 0.
Sisse või välja.
Nii näib, et oleme nurka asjas, mille kohaselt tuleb kõik
ootamatu, ma ütlen "kui (42)". See ei ole tõeväärtus.
Nii et mida arvutid teha, kuigi on see sisuliselt võrdsustab
midagi, mis ei ole 0 on tõlgendanud, et olla tõsi.
1.
Sees.
Nad kõik funktsionaalselt võrdväärsed.
Ainult väärtus 0 või märksõna vale, nagu me
lõpuks näha, on tegelikult vale.
Nii et "if (42)" oleks tegelikult tõsi, sest see ei ole null.
Nii et täpsemalt siin, Boole'i ​​väärtus ei ole tegelikult nii
palju õige või vale, vaid see
juhul, kui on 0 või nullist.
Nii et vale või ei ole vale.
Ja see lubab meil hõlmata kõiki rohkem
võimalusi Sulgudes väljend.
Nii et me peame kunagi nii hoolikalt, ütlen seda -
if (n == 42).
Lihtsalt sellepärast peame täpsustama test võrdsuse,
ei loovutamise väärtust.
>> Mida veel märkida siin?
Need looksulg on tegelikult ei vaja.
Olen teinud neid lihtsalt olla ting-Nirso siin.
Aga kui teil on seisund, et on ainult üks rida
kood, nagu mugavus, programmeerijad ei pea kasutama
looksulg.
Piisab lihtsalt taandes esteetilistel põhjustel, ja
seejärel kirjutage rida koodi.
Ainult siis, kui sa tahad kirjutada kaks rida koodi - eest
Näiteks teine ​​printf ("Bye!"). Kui sa tahad teha
et see on katki.
Võite taandes kõik soovid, kuid asjaolu, et teil on
trükitud kaks rida koodi ilma looksulg
tähendab, et see programm ei tööta õigesti või võib
isegi mitte koostada õigesti.
Nii et nüüd, kui aus olla, siis ma arvan, et parim harjumus on lihtsalt
kasutada looksulg, ja leiad, et nad teevad
super selge, mis toimub.
>> Samuti, nagu kõrvale - eriti kui oled nende seas, kes kasutavad
soovitusliku kirjanduse või ressursse internetis -
aru, et seal on see mõiste stiili
programmeerimine.
Ja mõned inimesed tegelikult eelistavad panna lokkis traksidega
siin joonel.
Mõned inimesed eelistavad teha naeruväärsed asjad,
meeldib panna neid siia.
Ei ole vale vastus, kui tegemist on
stiili, kuid see on vale.
Aga mõned inimesed teevad seda.
[Naer]
David J. Malan: Ma mainin seda nüüd lihtsalt sellepärast, et nii
teil lugeda üles asjad raamatute või online, sa lähed, et saada
erinevaid sõnumeid erinevate õpetajate ja
erinevatelt autoritelt.
Ja just sellest aru, funktsionaalselt on nad
üldiselt samaväärne, kuid olla järjekindel.
Nii et sel juhul me standardiseerida lokkis
traksid vooder kuni siin vasakul.
>> Hea küll.
Nii lähme edasi nüüd ja käivitada see, ja vaata, mis juhtub
selle programmiga.
Tee nonswitch.
Seejärel käivita nonswitch.
Anna täisarv vahemikus 0 kuni - nii et ei ole asjakohane
enam, kuid ma lihtsalt suvaliselt öelda 42.
Ja ma valisin õige vastus.
Noh nüüd, lähme tegelikult seda teises suunas.
Tuleb välja, seal on mõned muud süntaks me
saab kasutada programmi.
Siin on uus tükk süntaks, mis on funktsionaalselt sama,
aga lihtsalt tutvustab teises viis väljendada ennast.
Nii et see on, mida nimetatakse "lüliti avaldus." Ja
lüliti avaldus toimib järgmiselt.
See võtab, sulgudes väärtus, mida soovite
"Lüliti" kohta.
Sa tahad käituda erinevalt põhineb selle väärtus.
Nii et see tähendab, lülitage n väärtus.
Ja mida see tähendab?
Noh, kui n on 1, 2 või 3, edasi minna ja välja printida "Sa
korjatakse suur hulk "ja seejärel murda.
Põhjuseks katkestus on, et teed C töötab on
Niipea kui ta leiab juhtumi, mis sobib, hakkab ta täidesaatva
kõik koodi all.
Nii et kui mul on üks rida koodi, kui mina siin rida 27, siis
saab teostada.
Kui ma lisada veel rida siin, see läheb täide.
Teine rida siin, see läheb täide.
Programm ainult peatub täidesaatva mis on allpool
kohaldatakse juhul avaldus, kui ma otseselt
öelda "murda." Nii vale.
Õigus, antud juhul, kui tulemus.
Aasta otsus kohtuasjas 4 või 5 või 6, samamoodi läheb
välja trükkida sõnum.
Sel juhul keskmise arvu.
Break.
Aasta otsus kohtuasjas 7, 8, 9, 10, see saab välja printida "Sa valisid suur
arvu. "Break.
Ja siis seal on sõna otseses mõttes märksõna nimega "default"
see on tegelikult nagu "veel" ehitada.
Nii et uus süntaks, kuid intellektuaalselt,
mitte midagi uut siin.
See on nagu nullist.
Kui muidu, kui muidu kui mingi plokk.
>> Nii et lülitada versioon sellest programmist.
Aga teate, et me tegime seda numbrid siin.
Lubage mul avada teine ​​versioon, lihtsalt näidata
midagi natuke konkreetsem.
Nii et siin on meil klassid asemel.
Selgub, saate kasutada lüliteid mitte ainult täisarvud, kuid
tähemärki.
Mitte kõik andmetüübid, kuid vähemalt tähemärki.
Nii et siin, me võiksime teha midagi kui väärtus C, et
kasutaja sisestatud kooskõlas 19, kasutades getchar funktsioon,
on kapitali või väiketähed, vaatame seda tõlgendada kui klass,
ja ütlevad, et nad valisid hea hinne.
Ja mööda lüliti avaldus, meil on muud
juhtudel "B" s ja "C" s, ja nii edasi.
Kuid olgem nüüd ringi läbi üks teine ​​asi.
Ja jälle, lendamine läbi
Mõned näited.
Aga see on tõesti nii, et saame rakendada neid, nüüd -
või tegelikult, lihtsalt tõlkida neid nüüd -
et C.
>> Nii et lubage mul minna ja seda teha.
Ma lähen avada uus fail.
Ja ma teen sisaldavad .
Ja siis ma teen int main (void).
Las ma salvestada see fail loop.c.
Lihtsalt näitena.
Ja ma lähen edasi minna ja teha järgmist.
Ma tahan kirjutada väga tüütu programm.
Nii 10.
Teeme seda.
9.
Hea küll.
Niipea kui hakkate seda teed programmeerimise, sa oled
Ilmselt teen midagi valesti.
Aga me hakkame niikuinii.
Oih.
See on tegelikult vale.
7.
6.
5.
4.
Midagi ei juhtu, kui me kuni 0.
3.
2.
1.
Okei.
0.
Kustuta.
>> Hea küll.
Nii return 0.
Nii et see programm on ilmselt läheb seda, mida ta väga
tüütult ütleb ta tegema hakkab.
See saab printida kõik need
väärtused, ülevalt alla.
Nii et las ma teen tegema silmus.
Ja siis - Ups.
Tee silmus.
Ma olin vales kataloogis.
Ja nüüd ma jooksma silmus.
Enter.
Woohoo.
Väga kena.
Kena, pikk programm.
>> Olgu, aga nüüd teeme seda parem.
Täpselt nagu Scratch, kui sa hakkasid kasutama silmuspõletamise
ehitada, selle asemel, et lihtsalt kopeerida ja kleepida kõik
puzzle tükki, lubage mul tutvustada seda asja.
Nii C, on erinevaid silmuspõletamise skeemid,
üks mis näeb välja selline.
"For" loop on kolm asja, eraldatud kahe semikoolonit.
Ja siis, seest keha silmus, nii rääkida -
kraami sees looksulg -
me saame teha midagi uuesti ja uuesti.
Mis mul siin ekraanil, see on
sõna otseses mõttes lihtsalt kommentaari.
/ / Tähendab siin tuleb kommentaari.
See ei ole koodi.
See on lihtsalt ingliskeelne kirjeldus mulle inimene.
>> Nii initializations, tingimused ja uuendused.
Noh, vaatame, kuidas see töötab.
See võimaldab mul kirjutada selle programmi järgmiselt.
Sest -
Nii et siin on minu loop -
int i -
siin tuleb muutuja nimega "i" -
saab initsialiseerida 10.
Seega on minu ettekanne.
Ma tahan seda teha silmus, nii kaua kui "i" on suurem või
võrdne 0-ga.
Ja iga iteratsiooni see silmus, ma tahan
teha i -.
Nii nägime + + esmaspäeval.
- On vastupidine.
See Count väärtus 1.
Toas see silmus, ma tahan tegelikult midagi teha.
Nii et ma ütlen midagi printf.
Ma ei taha öelda 10 praegu, sest see ilmselt on lihtsalt
trükkimineku sama väärtusega.
Mida ma tahan printida selle asemel, ilmselt?
Jah.
Nii "i." Nii% d, i.
>> Ma lähen varastada üks neist ideid varem -
Selle asemele vormingu tähistamine -
ja siis siia alla, alt, ma naasen 0, lihtsalt
hea meede.
Aga nüüd, mul on sisutihe programm.
See on ainult paar rida, ja mitte mingi 10 või 11 rida.
Las ma lähen oma kiire siia alla.
Remake silmus.
Rerun silmus.
Ja see tundub olevat sama.
Nüüd programm on enam huvitav.
Aga nüüd ma ei kirjuta midagi sellist.
Ma ei muuda seda 100-le.
Saan siis kompileeri oma programmi.
Ja siis ma saan uuesti käivitada oma programmi.
Ja nüüd ta läheb ülikiire tänapäeva arvutid.
Kuid mul on -
ja tegelikult, minu Ajaloo puhver ei
isegi nii kaugele minna.
Nii juba läheb.
Nii et meil on kõik 100.
Aga see on lihtne teha vigu siin.
Mis saab olema oodatud käitumine, kui ma
kogemata teha?
Nii tundub lõputu.
Nii et vaatame, kui arvuti käitub.
>> Nii et lubage mul minna ja teha silmus.
Ja las ma joosta silmus.
Nii et olgem tagasi tulla, et üks hetk.
Me teavitame, et perspektiivis.
Sest see, mida me peaksime kokku lugema, minimaalselt?
Tõenäoliselt vähemalt 2 miljardit, kui meil on, et paljud bitti, ja
me kasutame positiivseid väärtusi.
Nii et olgem hüpata siia tagasi.
Peale selliseid silmuseid, meil on nn samas
silmuseid. Nii, nagu Scratch, siis tuli Forever
plokid, ja siis tuli Korda plokke.
Samamoodi C, sa lihtsalt muid võimalusi
väljendada ennast.
Nii et teil on see mõiste samas silmus, mis võimaldab teil
väljendada ennast natuke teistmoodi.
Ja siis on midagi, mida nimetatakse do-kui ahela,
mis tegutseb veidi erinevalt samuti.
Ja me tease nende peale ajas.
>> Aga võtame pilk see viimane siin.
Kui me astume -
ikka töötab.
See on päris lõpmatu.
Nii et lubage mul minna positiivne, ja näidata, kuidas me saame tegelikult
reguleerivad kasutaja sisend veidi tõhusamalt.
See on üsna lühike programm.
Ja siin on meil, on peamine, int n deklaratsiooni.
Nii et anna mulle muutuja nimega n. Nüüd ma sõna otseses mõttes öelda
"Teha." Ja siis ma sain lahti lokkis
traksidega, lähedal lokkis traksidega.
Ja siis märkate, kohe pärast seda, ta ütleb samas n
on väiksem kui 1.
Nii märkate, et need read -
19-24 -
koostada ühiselt do-kui ahela.
Ja jälle uus süntaks, ei ole uus idee.
See on lihtsalt üks viis silmuspõletamise, süntaktiliselt.
Mida see teeb?
Kas järgmine samas n on väiksem kui 1.
Mida ma tahan teha?
Ma nõuan, et sa annad mulle positiivne täisarv.
Siis ma tegelikult üritavad täisarv kasutaja.
Aga nii et toimingute siin, sest
samas seisukorras on siin all, ma siis lähen vaatan, on n
vähem kui 1?
Olgu, oletame, et kasutaja -
pärast seda nõudis sel moel -
liigid väärtus 0.
See tingimus saab olema õige või vale?
Noh, see tegelikult toimub, et olla tõsi.
Kuna n on 0, ja 0 on väiksem kui 1.
Mis siis, et tähenda?
Tee seda uuesti.
Alles siis, kui see tingimus on FALSE.
Kui ma tüüpi 42.
Hästi ei, 42 on mitte vähem kui 1.
Seega see silmus tehakse täidesaatva.
Ja nii sel hetkel, programm öelda, aitäh
42, sel juhul.
Nüüd, kui teil on see võimalus väljendada ennast -
Me ei peaks ootama, kuni see lõpuni.
See vőtab aega.
Et jätkata järgmine kord, ehk.
>> Aga nüüd, teil on võime loodetavasti aru
natuke geek huumorit.
Vabandused.
See ei iseloomusta huumorit arvutiteadus
maailmas, kuid see on armas.
[Naerab] Lõpetame selle teadmiseks.
Ja me näeme esmaspäeval.
[Aplaus]