[Powered by Google Translate] DAVID Malan: See on CS50, ja see on alguse nädal 1.
Mida me arvasime me tahaks teha täna on võtta tagasi vaadata
midagi paljud teist on ilmselt kõndis varem mõnda
Kell on praegu ja võib tunduda natuke tuttav.
See asi siin, see muidugi on -
Sihtrühm: Science.
DAVID Malan: teaduskeskus.
Nii et see on tegelikult üks esimesi arvuteid
tagasi 1940.
See oli üks esimesi elektromehaanilised arvutid
et oli võimeline eriti pikk,
füüsilisest isikust püsivat arvutused, ja mida me tegelikult näeme
Ahhaas on ainult tükike sellest asjast.
Mida me arvasime me tahaks teha, siis on võtta tagasi vaadata video
mis tehti mõni aeg tagasi, kehtestades selle
asi maailmas.
Ja te näete, alates muusika ja hääl, et tõepoolest need
olime väga õnnelikud ajad.
>> [VIDEO PLAYBACK]
-Triumf matemaatiliste ja mehaaniliste oskus on see
suur uus automaatne kalkulaator Harvardi ülikoolis.
Keerukad probleemid matemaatikas, läbib
masin kodeeritult lindile, on täpselt lahendatud
minut murdosa aega, mis kulub inimeste
arvutamisel.
Mõeldud kiirendada igasuguse matemaatilised ja teaduslikud
teadusuuringute, hiiglane mehaaniline aju töötab Ameerika
Ühendriikide mereväe kuni sõja lõppu.
>> DAVID Malan: Mida sa ei pruugi teada, et see oli
see sama seade, mis perspektiivis me kõik nüüd võtta päris palju
enesestmõistetavaks võeti kasutusele, et on bug.
Nii et üks insenerid töötavad selles arvutis
sõna otseses mõttes leiti väike koiliblikas masin, mille tulemusena
mõnel vigased arvutused.
Ja kui räägitakse, et koi oli teibitud see samamoodi
Ajakirja siin, tagasi 9. september 1940-midagi,
ja seega sündis maailma mõiste "bug".
Nii et nüüdsest me peame vigu olla mingit vigu
programme, kas inimtegevuse või, käesoleval juhul, putukad.
>> Nii vähe teateid, kui astume.
Nii CS50 on traditsioon pakkuda lõunaks kehvasti kohta
kõige reedeti poolaastal, kus me võtame 30
40 õpilast kuni Tule ja Jää in the Square'i igapäevaseks
lobast, räägime infotehnoloogia,
rääkida tulevikust.
Kutsume vilistlased ja sõbrad tööstuse vestelda üles
õpilased samuti.
Tõesti suunas lõpuni teha mis on üsna suur klass
kõik intiimsem, vähemalt üks kord samal ajal
alamhulgad õpilased.
Nii et kui soovite meiega liituda sellel reedel, 01:15, minge
CS50.net/lunch et RSVP.
Ja me teeme seda kordumatult, et ärge muretsege, kui te ei ole
esimeste seas 30 või nii sel nädalal.
>> Nii kirjutaja märkmed.
Sõna vahendid, mis nüüd alustada on saadaval
et õpilased klassis.
Nii et teie juhid ei pea olema alla ajal loenguid
Kirjoittelu alla kõik, mida ma öelda ja nii edasi, mida me teeme
asemel on pakkuda alates õppejõudude
kanooniline hulk märkmeid.
Nii et meil on üks meie õpetamise stipendiaatide Andrew Sellergren,
kes istub igal nädalal ülevaate videod ja seejärel
kirjutab ette, mida me arvame on üsna
autoriteetne komplekt märkmeid.
Ja Andrew kiindunud, ka, pannes snarky joonealustes märkustes
põhja.
Nii et sa loodetavasti nautida neid nagu teatmeteos
lõbus, ja ka, tule Viktoriin aega, kui võimalust vaadata
mis juhtus üksikute loenguid.
Nii et need on seotud loengutel lehel.
>> Ülesanded 0, vahepeal on läbi.
Ja nii vahendeid te -
läbikäiguks.
Milo juhtis esimest reedel.
See oli filmitud, pane Internetis laupäeval.
Ja nii aru, kui sa ei ole päris kindel, kust alustada,
selle või tulevikus p-komplektid, alati pöörduda esmalt
läbikäiguks või video sätestatut.
Liigendamine on pooleli; kell cs50.net/section on koht, kus te
peaks esitama oma eelistused, kui te pole
juba tänaseks.
Kuna lõigud algab sel pühapäeval, esmaspäeval,
ja teisipäeval.
Teeme lõigud need kolm päeva, iga nädal
semestri enamasti.
Ja meil on ka tutvustada jällegi eri lugusid.
Nii küsitakse teilt selle osadeks vorm, kui te
ei ole näinud seda juba, kui sa oled nende hulgas vähem
mugav, mugavam, või kusagil vahepeal.
Ja kui sa oled omamoodi tara, tavaliselt kusagil
vahel on see, mida enamik õpilasi lõpuks kontrollida.
Tööaeg algab täna.
>> Nii Scratch on suhteliselt väike võti, kuigi see on täiesti loomulik
joosta erinevaid putukaid või olla kindel, kuidas
rakendada midagi.
Nii mõistame, et hakkame tööaega sel nädalal.
Nad olla Annenberg Esmaspäev, teisipäev, kolmapäev,
Neljapäev, 20:00-23:00 ajal aju pausi.
Ülemine classmen võite, ja kui sa kunagi tekib probleeme,
uksest sisse, kuna nad saate swiping, lihtsalt rääkida oma tee
aastal ning selgitab oled koos CS50.
Tavaliselt 20 kuni 30 meid töötajad on seal, et aidata
sa üks ühele.
>> Saabumisel idee on selline: saate tuua oma sülearvuti,
sa pead oma laadija, me peame ekstra juhtmed,
eriti mööda lõunamüüri Annenberg kus
seal on palju elektrikontakte.
Ja peamine lähtepunkt, et tööaega Q & A on minna
cs50.net/discuss ja postitada
oma küsimusele.
Ja märgistada see pset 0 või pset 1, olenemata nädal
Võib juhtuda, et olla.
Ja siis me teeme on olnud tabelis õpetamise stipendiaatide
ja muidugi assistendid, tavaliselt 8 või 10 või nii meist,
läbimas, hoides tähelepanelikult laual, ja
kitkumise maha küsimused tõesti nii kiiresti kui saame,
viidates teil seotud ametikohta, kui te ei leidnud neid
endid, online viited vastavalt vajadusele.
Ja siis kui on probleeme, sest paratamatult
on, või ta lihtsalt mõttekam istuda üks ühele,
töö kaudu probleeme kellegagi.
>> Või sa lihtsalt sattuda tööaega tõesti
vajavad, et mõtteviisi.
Sa ei taha minna läbi elektroonilisel kujul, siis
tõesti tahan kohtuda kellegagi.
Suhelda, et meile, ja mis juhtub, kui teie
küsimus on nähtud töötaja ning me
kindlaks, yup, see tuleb saata üks 20 või
30 meeskonna liikmed siin kohapeal, näed ülemises vasakus see
vähe Sisesta järjekorda nupp hakkab vilkuma cs50.net /
arutada.
Ja see ütleb teile, et teil nüüd on kutsutud, nii
rääkida, et siseneda järjekorda.
Ja kui klõpsate seda nuppu, oma nimi siis ilmuvad
iPad et CS50 tervitaja, üks kursus peadesse, tahe
korralda sissepääsu lähedal Annenberg, kes siis
vaata, mida on kujutatud siin, üliõpilased, kes on küsimustele
Vasakul töötajad, kes viibivad õigus.
Ja klõps vasakule ja paremale, oma veebibrauser
hakkavad vilkuma kohe, kui näiteks professor McGonnagal
on valmis näinud sind eriti tabeli Annenberg.
>> Nii tegime natuke seda eelmisel aastal.
Oleme rebooted tööaega ja
uuesti ellu palju tarkvara.
Nii mõistavad, et see on soojendada sel nädalal.
Aga ka aru ka varasematel aastatel, nagu te olete kuulnud
sõpradelt, tööajal oli tõepoolest 50
150 õpilast korraga.
Ja see lihtsalt ei ole meil võimalik hakkama
tõhusalt, üks ühele, kogu õhtu.
Ja mis me tõesti püüame teha see aasta on
ära asjaolu, et palju küsimusi on
korduma kippuvad ja võib sageli paremini vastata
asünkroonselt.
Nii saab omamoodi mõelda läbi personali vastus,
ja me ei mõtle läbi oma kood, ilma soojendusega
rõhu tingimata hädas
läbi kõrvuti.
Nii et meie hinnangul umbes kolmandiku või poole küsimused
siis saadetakse inimene, ja me proovime ära kiskuda maha nii
palju kui pool või enam elektrooniliselt,
tööajal.
Ja me jätkuvalt kasutada Arutage
kogu nädala samuti.
>> Ja lõpuks, aru, et see muidugi võib võtta katse läbimise / mitteläbimise.
Nii et kui te olete tara või lihtsalt arvan, et sa oled tõesti
ei tea kas see on maailma teid, või see on tõesti
üsna võõras sa, aru, et see on suurepärane võimalus
omandada mõned usaldust, kellega astuda
klass, nagu ma tegin ausalt öeldes aastat tagasi.
Ja siis on viis nädalat omamoodi näitaja läbi
ise, kui soovite jääda katse läbimise / mitteläbimise, minna kirja
klass, või nagu.
Ja tavaliselt see, mis katse läbimise / mitteläbimise ei, ma arvan, õpilastele on
et kui paned, et 10 tundi, 20 tundi, mis iganes see
võivad olla mõned probleemid, ja sa peksma oma pead
vastu seina,
ja sa tõesti lihtsalt ei saa jälitama midagi maha, ja te
on nii palju muid asju, mida pead tegema, ausalt, mida ma
arvan, katse läbimise / mitteläbimise on, see võtab pinged maha ja
olukordi niimoodi.
Kui olete võtnud asi 90% teed.
Tead, see pole päris täiuslik.
Aga sul on palju sellest välja, siiski.
Nii leiavad katse läbimise / mitteläbimise annab sulle, et
vaimne mudel, võibolla.
>> Olgu, nii eelmisel nädalal me tuvi arvesse Scratch, ja me
rääkis saateid üsna kõrge graafilise tasandil.
Ja täna me teeme ülemineku keel
nimetatakse C madalam programmeerimiskeelt peal
mis paljude kaasaegsete keelte nüüd ehitatud, sh mõned
neid, siis me kasutame poole semestri lõpus.
Ja süntaktiliselt, millised nad välja näevad
on kõik üsna sarnased.
Nii alustame et muuta see üleminek siin.
Nii et see oli programm eelmisel nädalal, et oli lihtsam
tere programmid.
See lihtsalt trükkida ekraanil tere maailmas,
väike kõne mull tulevad välja kass.
Noh, kui me hakkame nüüd tõlkida see teisele
keel, aru, et ideede täna ja kolmapäeval
on identsed, kuid süntaks hakkab muutuma.
Nii et arvestades, et eelmisel nädalal oli meil, kui roheline lipp klõpsatud, ütleme
tere.
Täna me ei kavatse on int, peamine, tühine printf,
Vastutasuks mõne muu süntaksi seal hästi.
Looksulg ja sulud ja jutumärgid, ja tühi-tähi.
Aga mõistan, et tuum idee siin on trükkimine,
ja lõpuks, et peamine on nüüd olla
sünonüüm algab programmi.
Peamised saab olema kus roheline lipp peksab asjad ära.
>> Nii et nüüd lähme tease peale mõned ehitusplokkide siin
Enne kui me sukelduda mõned konkreetsed näited.
Nii me kutsusime seda avaldust eelmisel nädalal, milles ta on lihtsalt
juhendamine.
Kas see - sel juhul öelda tere.
Noh C, kui me vaatame lihtsalt, et liin on see, kuidas me oleme
hakkan väljendades, et eelkõige pusletükk:
printf ("Hello World");.
Ja nüüd me tease nende peale rohkem ja rohkem aja jooksul,
aga aru, et seal on muster siin.
Nii et üks, meil on see asi, mida nimetatakse printf, mis on
sisuliselt analoogne sõna öelda.
Just see tegema hakkab.
Printf ja f tähendab siin "vormindatud".
Nii see lihtsalt tähendab, et saate sisestada
erinevate esteetiliste detailide.
Nii viitega Tsitaat lõppeb on algus, mida me ei kavatse
kutsuma hakata string.
Sõna, fraas, lause.
Stringi programmeerimiskeelt on jada nullist
või enam märki.
Nii et h-e-l-l-o, koma jne on
Tsiteeri Tsitaat lõppeb, on string.
Ja nüüd längkriips n, vähe süntaktiliselt veider, kuid me
juba määratletud, et eelmisel nädalal nii mis?
See on lihtsalt uus liin.
See on lihtsalt viis edasitoimetamiseks arvuti soovite
samaväärne lööb Sisesta olemas, kuid sa ei
taha tegelikult Enter ja seega segi ajama kõik
vormingu oma tegelikku programmi.
Nüüd sulgudes lisama selle stringi, avatud paren ja
Sulge paren, ja sees, mis on meie string.
Sest see on, sest C ja muude programmitöö
keeles, asjad printf võtta argumendid, või võtta
parameetrid.
>> Nii et mõelda nüüd selle lilla Ütle blokeerida
funktsioon, kui meetodit, kui menetlus.
Te võite tõesti kutsuvad seda, mida tahad nüüd, aga
See on omamoodi miniatuurne programm, mis ainult ei üks
asi, mis ühele reale, mitte vähem.
Nii printf on ka see, mida me kavatseme alustada kutsudes
funktsioon ja funktsioonid midagi teha - antud juhul
prindib vormindatud stringi ekraan -
kuid funktsioonid võtta ka argumente või parameetrid.
Ja argumente või parameetreid, tänan teid, mean
et nende käitumine võib mõjutada mida sa läbima
sees sulgudes.
Nii et sel juhul printf vajadustele tuleks öelda, et printida, ja me
lihtsalt läbida, jutumärgid siin, string, mis me
tegelikult soovite printida.
Ja semikooloniga päris lõpus see liin on lihtsalt
ajalooline ebameeldivalt mille lõpus kõige rida koodi,
paned semikooloniga teha super selge, et arvuti
et see koodirida lõpeb siin.
Nüüd on see hea, sest nagu me näeme nagu programmid rohkem
keeruline, semikoolon teeb super selge, et meie inimesed,
ja ka arvuti, kus rida koodi algus ja lõpp.
Mõistame, et mõned keeled ei ole mõned
Nende samade täpsustusi.
Ja tegelikult, JavaScript, sa ei vaja alati midagi
nagu semikooloniga.
Aga rohkem sellest tulla.
>> Nii et silmad.
Meil oli midagi sellist, väga intuitiivselt, selge, kas
midagi uuesti ja uuesti ja uuesti.
Nagu hakanud sokid, või öelda tere, antud juhul.
Noh, alates tänasest C, võiksime väljendada seda Scratch
blokeerida kui while (true) printf ("Hello World").
Nii märkate me hakkame ehitama sõna otseses mõttes puzzle
tüki enne.
Meil on sama lilla blokaad, aga see on sees see
sulgudes Forever blokaad, ja parim viis tõlkida, et
kuni C on järgmine.
Pole Forever märksõna.
Sa ei saa lihtsalt kirjutada f-o-r-e-vs-e-r C.
Nii lähim analoog on samas.
>> Nüüd, while (true) tundub veidi rumal, sest ei väärtus
Tõelise kunagi muuta?
Arvatavasti mitte.
See on nagu öelda, samas kui üks, samas, kui tõsi.
See kõik on sama asi, tõsi on see alati nii.
Nii et see silmus tegelikult sundida millist ahela?
Lihtsalt lõputu silmuse, eks.
Forever kliendiliinile või kui me kutsusime eelmisel nädalal,
lihtsalt lõputu silmuse.
Nii et mõnikord see on halb.
Mõnikord see viga, mõnikord sellepärast saad
ketrus rannas palli või liivakell vms.
Aga sel juhul, me teadlikult mingil
Seepärast tahtsin printida sama asja uuesti
ja uuesti ja uuesti.
Või puhul meeldib vaadata, mida sa teha tahad
midagi uuesti ja uuesti ja uuesti.
Nii lõputu ring võiks mõtet.
Ja see, kuidas C võiksime tõlkida igavesti kood.
>> Nii et nüüd see üks on natuke konkreetsem.
Meil oli korrata 10 korda järgmise avalduse.
Nii while (true) ei ole päris tööd seal, sest tõsi on
alati tõsi.
Nii et kui me selle asemel vaatate C versioon, nüüd süntaks muutub
veidi segasena.
Aga olgem ausad, kui hakkate seda näha, see kõik muutub
päris tuttav kiiresti.
Nii et see on, mida nimetatakse jaoks silmus.
Jaoks silmus ei ütle arvuti midagi teha
uuesti ja uuesti ja uuesti niikaua
need asjad on õiged.
Nüüd, mida me mõtleme, et?
Noh, seal on kolm osa jaoks silmus, ja me ei kavatse
tulla tagasi selle konteksti tegeliku
näited hetkel.
Nii et ärge muretsege, kui see ei ole päris imbuma kõik korraga.
Aga int i = 0 on pikk lugu lühike, öeldes mulle
muutuja, mis on tüüpi täisarv, nii et anna mulle number
nimega i ja initsialiseerida see 0-ks.
See on mulle nagu algebraline muutuja x ja
initsialiseerida see 0-ks.
Aga sel juhul me kutsusime seda i.
Siis keskel, see ütleb, et ma alla 10.
See räägib arvuti teha järgmist kraami nii kaua
kui i on väiksem kui 10.
Ja ilmselt hakkab ta vähem kui 10, sest
see algab 0-ga.
Siis lõpuks, saate võib-olla arvan, mida ma + + vahenditega.
See on natuke süntaks see tähendab lihtsalt juurdekasvu i.
Nii et lisada 1 i, uuesti ja uuesti ja uuesti.
>> Ja nii nagu me näeme seda silmus, see süntaks, pigem rakendab
täpselt sama asi, mis ausalt öeldes Scratch oli lihtsalt nii
palju lihtsam väljendada.
Korrake 10, ja sa oled teinud.
C ja kõige programmeerimiskeeltest, peame olema
veidi rohkem õpetlik arvuti ja tegelikult
määrata midagi sellist.
Aga me tuleme tagasi selle ja teiste süntaks.
>> Aga muutujad?
Scratch meil oli midagi nagu need oranž plokid,
kus ma võiksin kuulutada muutuja.
Olgem meelevaldselt nimetame seda counter.
Olgem initsialiseerida see 0 ja seejärel
olgem igavesti midagi.
Sel juhul Scratch ma räägin counter, nii
kass läheb on vähe kõnemulli et räägib
number, mis on antud muutuja.
Ja siis on meil muutus counter 1.
Nii et see kõik on pakitud sees Forever lukk.
Nii et me juba praegu on ehitusplokkide C
mis tõlkida seda.
>> Üks viis, kuidas me võiks teha on see.
Anna täisarv, nimetame seda counter.
Vorminda see 0
esimeses reas seal.
While (true), nii et ma varastamine et idee üks hetk
tagasi minna ja teha järgmist.
Prindi välja võidelda, ja siis juurdekasvu counter,
uuesti ja uuesti ja uuesti.
Või jälle, + + tähendab lihtsalt lisada 1 midagi.
Aga seal on uus tükk süntaks siin.
Mis hüpped välja ei hulgas meie eelmise näite?
Jah, see% d.
Nii saab ehk järeldada mida see teeb ausalt öeldes põhineb
mida Scratch plokk teeb.
Aga jälle C, me lihtsalt peame olema natuke rohkem konkreetse
kui tegemist on eneseväljendamisel.
>> Nii printf ("% d \ n").
Noh enamus, et saame visata nagu tuttav.
Hinnapakkumisi tähendab lihtsalt, et see on string, längkriips n
on lihtsalt uus liin.
Nii et ainus uus asi siin on% d.
Ja kõik, mis on on kohatäide.
% D läheb tähistavad kümnendmurruna.
Ja% d abil arvutiga, pane kümnendmurruna siin.
Noh, mis numbrit sa tahad panna sinna?
Noh, kui saad ehk järeldada, pärast koma ütleme
counter, see on nimi muutuja, mida me välja kuulutatud või
loodud paar rida varem.
Nii et see on lihtsalt C on viis ühendades muutuja ümber
string dünaamiliselt.
Sest kui aga olin selle asemel teha midagi
Selle printf ("counter"), milline oleks see
programmi asemel teha, arvatavasti?
Seda saad sõna otseses mõttes print "counter".
Mis ei ole selle kohta, et ma tahan.
Mul on vaja asendada mõnel numbrilist väärtust.
Nii näeme, mis toimib siis, nagu printf, võite võtta ei
alles ühe argumente, nagu
"Hello World".
Nad võivad võtta Tsiteeri Tsitaat lõppeb koma, ja siis mõned muutujad
mis saab ühendatud, nagu me näha eelmise string
kaudu neid% märk kohatäited.
>> Noh kuidas Boole'i ​​väljendeid?
Boole'i ​​väljendeid olid need väärtused, õige või vale.
Jah või ei.
1 või 0.
Sisse või välja.
Nii Scratch nad näevad välja nagu see, ja märgata, et
alumine plokk on siin tegelikult koos
kahe väiksema plokke.
Nii et ma selline venitas ja kukkus kolme puzzle tükki
koos teha, et enam puzzle tükk seal, nii et ma
võiks edasi mõtet, mida ma tahan x peab olema väiksem kui y ja
y on väiksem kui z.
Ja et ma saaks muuta nimetatud kaks eraldi read järgmiselt.
Top üks saab väga triviaalselt tõlkida C,
vaid x <y.
Võibolla mõned sulud hea meede.
Ja siis C, siis ärge kirjutage ja tähistamiseks
koosmõjul midagi.
Sa asemel kirjutada &&.
Ja kui me lõpuks näha, ühe ampersand juhtub
tähendab midagi muud.
Nii && lihtsalt tähistab idee JA.
>> Nii et taas, kuigi see hakkab välja nägema üsna keerukas,
üheks eesmärgiks kehtestada Scratch lisaks
lihtsalt võttes omamoodi lõbus-ramp, kus saab teha
midagi, mis on väga graafiline ja animeeritud, ja
jagatavad jms, on ka anda edasi ideed, et
kõik ideed hakkame sukeldudes täna ja edasi
on kehastab isegi nii lihtne
liides alates esimesest päevast.
Aga see siin?
>> Nii tingimustel.
Nii Scratch ploki vasakul seal näeb
veidi keerulisem.
Aga see on vaid mõned lohistamist
täpseks tuttav tükki.
Kui x on väiksem kui y, ütleme nii.
Else if x on suurem kui y, ütleme nii.
Else, saame loogiliselt eeldada, see on järeldada, et
nad peavad olema võrdsed.
Nii et öelda, et nad on võrdsed.
Nüüd C paremal, sama täpne asi.
Ja märkate, et looksulg ei kavatse olla
funktsioon C ja teistesse keeltesse, et teha selline
kapseldus.
Just nagu siis, kui plokk on see kollane asi, mis on omamoodi
haarates lilla ploki sees on.
Samuti on need traksid -
Nende looksulg -
mõeldud võluda, et sama idee omaks ühe või mitme
rida koodi, mis on liigestatud sees neist.
Nii paremal servas siin, kui x vähem kui y, printf
("X on väiksem kui y").
Else if x on suurem kui y, välja printida sama.
Else välja printida, et nad on võrdsed.
>> Nii lühike, seal on üsna otsene kaardistamise või tõlge
keele oleme näinud siiani, sh mõned
keerulisemad funktsioonid.
Nii ei pruugi te kasutate seda oma projekti, või ei pruugi
kasutate seda oma projekti sel nädalal.
Aga me oleme neid asju nimetatakse massiivid C. Scratch,
neid nimetatakse nimekirju.
Ja me nägime neid koos Fruitcraft RPG eelmisel nädalal.
Väike sinine poiss, et kõndisin ringi, pealevõtmine
kirsid ja apelsinid jms.
Noh Scratch, mis viidi ellu koos selle oranži
blokk, mis sõnadega; sel juhul me sõna otseses mõttes
lisades "oranž", et
muutuja nimega inventuuri.
Nii C, see süntaks läheb natuke rohkem segasena.
Ja me tuleme selle juurde tagasi järgmisel nädalal ja rohkem
huvitavaid asju maailmas krüptograafia sellega.
Aga allosas siin, need kaks rida sisuliselt
tõlkida, mida teeme ühes Scratch ummistada seal.
Aga rohkem sellest tulla.
>> Nii paneb ta kokku, siin on programmi C. niiet
kiiresti tease peale mõned tükid süntaks siin, kuid
siis olgem tegelikult hakake kirjutama mõned kood, tutvustada
Teile mõned tööriistad me kasutame, ja vaata, kas me
võib põhineda nüüd mõned neist põhiplokke alates
Eelmisel nädalal nüüd süntaktiliselt aastal C. Nii ülaosas siin, see
on ilmselt üks kõige igav programme võid
kirjutada kõige tahes programmeerimiskeeles.
Aga see on omamoodi eriline tähendus, sest see on
kanooniline programmi, mis tahes arvuti teadlane kirjutab kui
õpetamise keegi programmeerimiskeelt -
Tere maailm programm.
>> Nii tipus, me näeme seda mõistet # include
ja siis, angled sulgudes stdio.h.
Me läheme tagasi tulla, aga tõesti, mida see
tähendab, et seal on fail selles maailmas nimetatakse standard
I / O, stdio dot h, ja see on lihtsalt tekstifaili
keegi kirjutas aastat tagasi.
Ja sees, et tekstifail on terve hunnik
funktsioone või meetodeid, või kord, et keegi teine
kirjutas, et oleme saajad, sest me
saab nüüd kasutada selle isiku kood.
Funktsioone ta kirjutas.
Sel juhul printf ei ole midagi, et ma kirjutasin, et see on
ei midagi, mida CS50 kirjutas.
See on midagi, mida keegi kirjutas aastat tagasi ja kasutusele
fail nimega stdio.h ja siis, kui kõrvale panna
teise osa funktsioon teise faili.
Aga me jõuame sinna.
>> Nii # include on lihtsalt meie viis öelda, et
C, anna mulle juurdepääs funktsioone, et keegi teine ​​kirjutas.
Ja sel juhul ma hoolin, sest ma tahan printf.
Nüüd saame int main (void).
Nii et see on üks neid asju, ausalt öeldes, et päeval 0,
päris palju Mul on selline tsoon välja, sest see on lihtsalt
ei ole huvitav
intellektuaalselt, mõned süntaks.
Aga nüüd teame, et funktsioone, mida nimetatakse
menetluste või meetoditega, tavaliselt toodavad veidi raha.
Nad teevad midagi.
Nad tulla vastus.
Nad toodavad toodangut.
Nii int kõrval peamine on lihtsalt meie stenografisti viis öelda
et see funktsioon on see menetlus, on lõpuks läheb
Teile tagasi number.
Ja miks see nii on, me tuleme tagasi.
Peamine on lihtsalt default maailma standard vaikimisi
funktsioon, mis on hakka hukati C programmi kui
käivitamisel.
Tühjus tähendab lihtsalt see asi, peamine, ei võta
argumente, antud juhul.
Nii et ma oleks super selge.
Pole stringid seal, ei ole komasid.
Tühjus tähendab, ühtegi argumenti peamine.
>> Nüüd lõpuks, õnneks kaks viimast rida on tuttav.
Toas looksulg meil printf
ja meil tulu.
Ja tagasipöördumine on omamoodi kahju, et me peame
panin selle siia, sest sel juhul ei tee kõik, et
palju huvi.
Aga arvutiprogramm, kui funktsioon tagastab 0,
see tähendab, et kõik on hästi.
Midagi läks valesti.
Seevastu kui funktsioon tagastab 1, või negatiivne 1, või
negatiivne 1337, või mõned juhuslikud numbrid niimoodi, et
üldjuhul tähendab, et viga tegelikult on toimunud.
Nii et kui sa oled oma Mac või arvutisse, kui olete kunagi näinud
mõned tüütu sõnum, sest arvuti jooksis kokku või
külmutatud, ja seal on segasena veateate,
ja siis mingi kood, nagu süsteemi kood
1,2,3,4, mõned number,
et üldiselt on tarbetu detail öelda
enamik meist inimesi, kuid see, mida mõned funktsioon või mõni
Programm on tegelikult tagastatud, ei ole null.
Ja kasu sellest on, et 0 tähendab kõik nii hästi ja
siis sisuliselt on lõpmatu arv asju, mis
võib minna valesti.
Kumb on, miks nad valisid 0 hea ja nullist väärtust
halb, kui me näeme peagi.
>> Nii lähme edasi ja kirjutan seda.
Nii et meelde tuletada, et ühel päeval ma kasutasin oma Mac avada
terminaliakent, ja siis ma avanud tekst programmi nagu
TextEdit, ja ma hakkasin kirjalikult mingi kood.
Noh see on hea.
Aga oma kogemus saab olema erinev Mac või
edasi Solaris arvuti, Linux arvuti, mida iganes operatsioonisüsteemi
süsteem teil juhtub olema kasutades.
Ja seda muidugi, mida me selle asemel kasutada midagi
nimetatakse CS50 Appliance.
Nii CS50 Appliance on allalaaditav tarkvara
mis võimaldab teil käivitada operatsioonisüsteemi nimega Linux,
spetsiaalselt Fedora Linux, ise Mac või PC.
Ja teete seda allalaadimine midagi, mida nimetatakse hypervisor.
Nii et kõik see tuleb dokumenteerida probleem set 1.
Ja sa juhinduma suunas, mida sa pead alla laadima.
Aga lõpptulemus, kas teil on Mac või PC, on teil
laadida mõned tasuta tarkvara.
Seejärel lae CS50 Appliance, ja sa ütled, et
vaba tarkvara - hypervisor -
joosta CS50 Appliance aken arvutis.
Ja mis juhtub on see.
>> Olen nüüd, märkate siin, mis tundub olevat töölaual
keskkond.
Ja las ma tegelikult kahaneb see ühes aknas.
Nii et see on praegu minu Mac, millel on väike aken siin, ja sees
Selle akna juhtub olema täiesti
erinevate operatsioonisüsteemi.
Tõepoolest seal on see algus menüü siia, meenutab
Windows, mis on terve hunnik alammenüüd, sealhulgas
link CS50 manuaal, Dropbox, jms.
Ja mis selles keskkonnas nüüd on standardne keskkond
et me kõik saab nüüd kasutada nii, et ükskõik, mida teie
arvuti on, mida te olete installitud, milline versioon
Mac OS või Windows näed, me kõik nüüd
samas keskkonnas.
Ja nüüd selles keskkonnas saame alustada kirjalikult mõned koodi.
>> Nii et ma lähen edasi minna ja avada programmi nimega gedit.
See on võrreldav notepad.exe või
TextEdit Mac.
Ja see on lihtsalt super lihtsa teksti redigeerimise programm
mis näeb välja selline esmapilgul.
Nüüd tipus, mul on valge palett, alt ma
on see must aken, mis ütleb jharvard @ aparaat.
Ja ongi, sest kasutaja konto, et me eelnevalt loodud
kõigile nimetatakse John Harvard.
Ta on kaust, kuhu kõik oma failid lähevad, ja
siin on koht, kus saame alustada kirjalikult mõned koodi.
Nii et lubage mul minna siin ja suumida ainult natuke, ja ma olen
teeme # include , int main (void), ja
siis ma teen printf ("Hello World")
; Return 0.
Nüüd on see kõik üsna must ja valge.
>> Lubage mul minna ja teha üks asi õpetada gedit mida ma
tegelikult teevad.
Lubage mul minna Save As.
Ma lähen valima vasakul pool siin jharvard.
Nii et taas, isegi kui sa ei ole kunagi kasutanud Linuxi enne, ausalt
Nendel päevadel, need kõik on tema valdusse läinud arvesse sisuliselt
sama tüüpi liides -
Mac OS, Windows ja Linux.
Nii valisin jharvard kodukataloogi siin.
Ja ma lähen salvestada see fail hello.c.
Nii ülaservas, ma kirjutada hello.c; nimetades C
programmi. c pikendamine on
Mis on ühist tava.
Ja ma vajuta Save.
Ja nüüd, mida on tore, et ma olen tegelikult õpetatakse gedit,
et see on C programm.
Pange tähele, et mu must ja valge tekst on nüüd värv kodeeritud, või
süntaksi esile tõstetud, mis lihtsalt tõmbab mu tähelepanu
semantiline programmi osi.
Ülaosas vasakul seal, kui minu programmid saada keerulisem, ma olen
läheb on kokkuvõttes kõik asjad, mida ma olen kirjutanud.
Nii et see seal üleval.
Nii et lubage mul nüüd välja suumida ja minna seda terminaliakent.
>> Nii et see on võib-olla uue paljudele inimestele.
Kui olete kunagi kasutanud käsurea keskkond, olete kunagi
kasutatakse DOS, või olete kunagi kasutanud Linuxi või olete kunagi avada
Mac OS terminaliakent, seal on palju asju, mida
võiks teha GUI, nagu osutab, ja klõpsates, ja
lohistades ja kukutades, jms, kuid üldiselt -
kindlasti maailma infotehnoloogia -
kasutades käsurida, kus sa ei pea hiirt
üldiselt, sul on ainult klaviatuuri, on tegelikult palju
võimsam kui liides, et saad harjutada
erinevaid käske.
Ja sa omamoodi tasuta ennast oleks vaja punkti ja klõpsa
kõike.
Nii gedit me omamoodi on parim nii maailmad.
Me ei saa lohistada teksti, me näeme seda
kena ja värv kodeeritud.
Aga kui on aeg näidata meie programmi, siis me mõnikord
lihtsalt kasutada seda väikest akent siin.
>> Nii et ma lähen edasi minna ja seda teha.
Põhjas must ja valge aken, ma lähen edasi minna
ja kirjutada rõkkama.
Ja rõkkama on nimi kompilaator.
See on programm, mis teisendab minu lähtekoodi
arvesse, nii, objekti kood.
0. ja 1s, et me nägime lühidalt eelmisel nädalal.
Meenuta eelmisel nädalal, me lubasime, et me ei kavatse
minna midagi sellist - meil oli vaja olla
midagi sellist -
ja see ei ole kindlasti midagi, et inimene läheb
teha käsitsi.
Nii et selle asemel me ei kavatse kasutada programmi, ja et programmi
Sel juhul nimetatakse rõkkama.
Ja nimi minu programm on hello.c.
Nii et koostada hello.c alates lähtekoodi
objekti kood, või 0. ja 1s, siis peaks piisama lihtsalt teha
see ja vajuta Enter.
>> Okei, midagi näib olevat juhtunud.
Aga ma tean nüüd, või eelmisel nädalal, et vaikenimi
programm, kui kirjutatud C, on rumalalt nimega a.out.
Enamik ebahuvitav nimi siis võiks tulla.
On esimene täht, välja on see, mis oli
väljastada, aga olgu.
See on minu programm, ja nüüd dot kaldkriips, nagu me näha, on
tegelikult lihtsalt omamoodi turvaelement, sest
a.out on programm, ma kirjutasin.
See ei tulnud minu arvutis, see on
mitte Program Files.
See ei ole Mac OS on kausta Rakendused.
Ma pean olema super selgesõnalise koos arvuti ja öelda
Selle programmi a.out, on praeguses kaustas
jooksev kataloog.
Ja kuidas te esindate seda keskkonda niimoodi
on dot esindab iganes kausta, kus kasutaja parajasti sisse
Ja nii. / Tähendab lihtsalt joosta a.out
Aktiivses kaustas.
Ja ma saan seda Sisesta ja voila, minu kõige esimene programm.
>> Nüüd lubage mul astuda samm tagasi.
See aken on natuke väike, ja mõistma, et alumine
vasakul aparaat siin on teine ​​ikoon.
Üks on Chrome, mis peaks olema üsna tuttav, lihtsalt veebis
brauseri seadme sisemust.
Ja see must ja valge ikoon on lihtsalt
suurem terminaliakent.
Nii et kui see muutub natuke tüütu omamoodi on lihtsalt
see tilluke tükk aken, kellega tuleb suhelda
programmidega, saame selle asemel teha.
Ja nüüd lubage mul alustada kirjutades paar varsti
tuleb tuttav käske.
ls.
Nii et LS on käsk noteerimiseks.
Nii Mac OS või Windows, siis oleks üldiselt topeltklõpsake
kausta ja siis voila, näed kõik erinevad failid
ja kaustu.
In käsurea keskkond, kus saab ainult kirjutada
käske või tekst, ls on samaväärne.
Nii et näita mulle, mida kuradit see kataloog.
>> Nüüd on hunnik asju siin, mis on nii vähe
tuttav ja veidi harjumatu.
Aga teate, et just nagu Windows ja Mac OS, jharvard
on töölaua kausta.
Nii et kõik ikoonid, mis on minu töölaual juhtuda
olla selles kaustas.
Seal downloads kausta, stuff, et
Chrome võib panna sinna.
Dropbox.
Nii Seade on varustatud sisseehitatud toetus Dropbox
nii et üle semester, saate sünkroonida oma Dropbox
arvesse, et kõik teie programmid on varundada.
Nad on kättesaadavad oma teise arvuti.
Kui midagi kunagi läheb valesti seade, saate
väga kerge toibuda Dropbox.
Nii et kausta seal selle eest.
Seal on kaks faili, et ma tegin - hello.c
ja a.out.
Ja siis seal on mõned muud kaustad, et me
saada poole semestri lõpuks, web
programmeerimine.
Nii et kui ma teen. /, A.out, Enter, et ütleb minna
kataloogi ma olen, jooksva kataloogi ja käivitage
programmi nimega a.out seal.
>> Olgu, see on tore ja hea, kuid see pole veel kõik, et
kaalukaid Kirjutada programm nimega aitab a.out.
Nii saame tegelikult teha seda natuke teistmoodi.
Nii et selle asemel lihtsalt töötab rõkkama, hello.c, lisame
mida nimetatakse käsurea argument.
Nii käsurea argument, või lüliti sel juhul on lihtsalt
teise sõna või fraas, et kirjutad on kiire pärast
programm, mida soovite käivitada.
Nii et sel juhul rõkkama on programmi ma tahan joosta,-o
vahenditega väljund faili, mis on enam nn a.out.
Väljund faili nimega tere, ja seda koostades
viimane sõna rida, hello.c.
Nii lühike, see on väga marginaalne paranemine, mille
selle asemel, seda rumalalt nimega faili a.out,
Nüüd saan teha rõkkama-o hello, siis hello.c ja
siis Enter.
Miski tundub juhtuda, kuid taas meelega koos 0 - kui
midagi tundub juhtuda, et tähenda midagi valesti juhtunud -
nii teeme LS nüüd, Enter, ja tõesti ma nüüd
on tere programm.
Nii et kui ma tüüpi tere nüüd, command not found.
OK,. /.
Nii et täpselt õige.
Nii, kuna selle programmi ma kirjutasin, ja see ei tulnud
arvuti,. / hello, Enter, tähendab
Ma olen nüüd töötab tere.
>> Nii ongi seal.
Nüüd, mida me lõpuks saada rohkem ja rohkem käsurea
argumente, mis võimaldavad meil teha rohkem, kuid just need,
kellele see võiks olla vana müts, las ma tegelikult minna
Kataloog siin ja just sulle teaser kuidas muidu me
võiks minna rakendamisel tere.
Lubage mul minna siin, ja ma lähen, et seda avada.
Nii et tegelikult, ma lähen selgitada, mida ma teen, nii
see on kasulik.
Lubage mul varundada.
>> Nii et ma olen seda juba pikka aega.
Nii märkate üle paremal on paar
kataloogides, mida veidralt nimega source1m ja source1w.
See on lihtsalt rumal konventsiooni, mida me kasutame.
Allikas lihtsalt tähendab lähtekoodi, 1 tähendab see nädal üks ja
m tähendab see esmaspäev ja w tähendab see kolmapäeval.
Nii et midagi segasena seal.
See on lihtsalt stenografisti märke.
Need sinised asjad on kaustad, mida nimetatakse
katalooge.
Ma tahan minna samasse kausta nüüd, ja tavaline arvuti
Ma võiks lihtsalt topeltklõps kausta ikoon ja
seal on kõik minu faile.
Aga käsurea keskkond, ma ei saa päris teha
et, nii et selle asemel, ma pean muutma kataloogid käsitsi.
Nii et kui ma tüüp CD ja seejärel source1m, Enter, märkate, et
minu kiire, asi valge vasakul, lihtsalt muutunud.
Ja nii tõesti, kui ta just ütles sulgudes ning seejärel
vähe kriipseldus, tilde sümbol, et lihtsalt tähendas olin
John Harvard kodukataloogi, tema My Documents
tema isiklikud failid.
Aga nüüd sulgudes öeldakse ~ / source1m.
See tähendab lihtsalt, et ma olen kausta nimega source1m
see on Johannese Harvardi kodukataloogi.
Nii et kui ma nüüd taha loetleda failid selles kaustas, lihtne
küsimus, writing lihtsalt ls.
Ja nüüd ma näen, kõik failid, mida ma eelnevalt loodud tänapäeva
loeng, mis kõik või enamik neist, juhtub
lõppema. c.
>> Nii et lubage mul minna nüüd ja kestab gedit programm nimega
holloway.c, mis on kirjutatud mõne juhusliku häkker
Internet, mis näeb välja natuke nagu see.
Ja me ei lähe läbi see mingil
detail, kuid neile mugavam, eriti kui
Kui soovite võtta oletada, milline see programm teeb siin.
Võite kindel olla, kas sa oled vähem või rohkem rahul,
me isegi ei saada selline asi lõpuks
see semester.
See on see, mida on näide obfuscated C võistlus, mis
vahenditega kirjutada kõige segasena otsin programmi, mida võib-olla
saab üle trumbata teisi tarku inimesi, kes on sarnaselt
üritan kirjutada asju ja uhkeldama, et nad võivad kirjutada
rohkem segasena asjad kui sulle.
Nii et see ei ole näide hästi kirjutatud programmi
perspektiivi stiil, see on näide programmist, mis
võidab võistluse, inimesed üritavad
olla ebamäärane ja abstraktne.
>> Nii et kui me teeme selle asja, lase mul minna minu terminaliakent,
nii rääkida.
Nii et see must ja valge keskkond nimetatakse
terminaliakent üldiselt.
Lubage mul minna ja kompileerida.
Ma ei kavatse kasutada rõkkama, sest see programm on
vähe segasena ja ta vajab erinevat
tõlkija, üks nn GCC.
Aga see teeb sama asja.
See võtab lähtekoodi objekti kood.
Ja nüüd, kui ma saan a.out, et programm, mida
just nägin seda teeb.
Nii et mehe sel aastal võitis selle võistluse.
Igatahes, me ei kavatse selles suunas iseenesest.
>> Nii et olgem tegelikult proovida nüüd tease peale mida me saame teha
Nende põhiplokke teha rohkem ja rohkem
huvitavaid programme.
Nii oleme kirjutanud programmi, oleme käivitada programmi.
Nüüd saame tegelikult lihtsustada ja ei pea enam kirjutama
sõna rõkkama käsureale.
Tuleb välja, sest meie programmid rohkem segasena, saame, või
keerulisem pigem saame tegelikult selle käsu.
Nii et lubage mul minna tagasi oma kodukataloogi, nii et rääkida, las ma
eemaldada - rm Eemalda käsk - Ma lähen eemaldada
fail nimega a.out ja tere.
Ja nüüd märgata käsurea keskkonda nii nagu see oli
GUI, saad seda teha palutakse. Ma ei saa klõpsata nuppu küll, ma
pead kirjutama y jah, y jah.
Ja nüüd, kui ma tüüpi LS uuesti, teate, et need rohelised
programmid - a.out ja tere -
on läinud.
Hoiduge rm.
Seda saab teha halbu asju, just nagu saate lohistada
asjad prügikasti.
>> Nüüd lähme edasi - ja ma võiks seda teha - rõkkama-o
tere, tere -
Olen juba igav kirjutades, et käsk.
Kuigi ma kirjutada seda veidi kiiremini.
Nii saame selle asemel peavad tegema tere.
Nii et ei ole kompilaatorit.
See on lihtsalt sõbralik programm, mis pakub Linux, selles
puhul - operatsioonisüsteemi -
et automatiseerib protsessi koostamise programmid.
Nii et selle asemel meeles rõkkama-o failinimi ja
siis nii edasi, eriti kui need read saada enam ja
enam, ma lihtsalt kirjutan teha.
Ja see saab sülitama terve hunnik asju, mis
me lõpuks näeme seda poolaastal.
Aga märkate nüüd, kui ma tüüpi LS, tere on tagasi minu kataloogis.
Ja tõepoolest ma saan käivitada seda. / Hello.
Nii et lihtsalt automatiseerib protsessi töötab, mis oli,
sel juhul palju kauem, keerukamad käsk.
Nii et me ei kavatse hakata kasutama mark, lihtsalt sellepärast, et see on palju
kasutajasõbralikumaks.
>> Aga nüüd teeme rohkem huvitav programm
kui lihtsalt tere öelda.
Nii programmides oleme kirjutanud siiani seal peamine.
See on lihtsalt default asi, mis lööb kõik maha.
Kuid on ka teisi funktsioone seal samuti, ja
stdio.h on asi, mida me nägime ülaosas meie
faili enne, ja see on, mida on tuntud kui standard raamatukogu.
Toas standard raamatukogu on terve hunnik funktsioone
et keegi teine ​​kirjutas, ja me saame hakata kasutama neid
funktsioonid kirjutada rohkem
huvitavaid programme ise.
>> Nii et lubage mul minna tagasi seadme.
Ma lähen sulgeda see terminal akna.
Ma lähen sulgeda asju, mida me varem kirjutasin, ja minge
arvesse hello.c ja märkate nüüd võin teha järgmist.
Tere maailm ei ole nii huvitav, ma tahaks
isikupärastada seda programmi ennast.
Nii et selle asemel, et öelda maailmale, et ma lähen
minna ja öelda -
Ma ei kirjuta David - kuid see on tõesti omamoodi
põhimõtteliselt sama.
Kuid olgem proovida seda kohatäide idee.
Tuletame meelde, et C, pigem printf, meil oli neid
kohatäited, ja seal on rohkem kui ainult% d.
Nii% d oli kiire meelerahu kontrolli.
Okei, kümnendmurruna, see on kõik.
Murdarvud, see on kõik.
Nii% c, kui kohtame, saab olema iseloomu.
Pane märk siin kirja teel z,
või kirjavahemärke sümbol.
Ühe märgi,% f, keegi teab teistest keeltest?
Nii ujukoma väärtus.
Reaalne arv.
Nii ei kümnendmurruna - see on tegelikult reaalne number
koma, ja mõned numbritele vasakule
ja paremal see.
% S, nöörid.
See üks me näeme üsna sageli.
String, jälle on lihtsalt üks sõna, fraas, jada
individuaalne tähemärki.
Ja lõpuks, LLD?
Nii et see on pigem nurgas puhul.
Pikk, pikk kohaga.
Nii et kui soovite mitte ainult number, et see on suur, siis
tahan suurem number, siis lähed on täpsustada,
arvuti, et see on teatud suurusest.
>> Nii et olgem näpistama see natuke.
Selle asemel, et lihtsalt raske koodi David, andke mulle veidi
dünaamiliselt öelda% s.
Nii pannakse% s siin, mis on kohatäide string.
Siis las mina koma ja seejärel "David" siin.
Nüüd ei ole see kõik, et intellektuaalselt huvitavad,
sest kõik, mida ma olen teinud nüüd on tõesti luua rohkem tööd
arvuti.
Selle asemel, et öelda, et arvuti ei see kõik korraga, ma olen nüüd
öeldes seda teha ja sisestada stringi siin lõpuks, koma
siin on see, et string.
Nii et see ei ole paranemist, kuid see on vähemalt
samm veel huvitav programm.
Sest nüüd, lubage mul minna ja teha see aken natuke
suurem, lubage mul minna ja joosta tegema tere.
Ja nüüd,. / A.out ei tööta, miks?
Olgu, nüüd nimetatakse seda tere.
Nii et jälle teha, ning ka rõkkama koos-o, ümber
programm oleks midagi huvitavat.
Ja voila: nüüd ta ütleb tere David.
>> Olgu, ikka loll programm.
Nii et nüüd teeme tegelikult minna tagasi siia ja tutvustada mõistet
Muutuva.
Kas poleks tore, kui ma saaks kuulutada muutuja
mille tüüp on string?
Ja muutuja väärtus tegelikult pärineb kasutaja
ennast.
Nii suvaliselt, ma lähen helistada minu muutuja s, mis on
lihtsalt Tavaks kui teil on üks muutuja nimega
string.
Ma teen võrdusmärk, ja siis ma lähen helistada
funktsioon nimega getString.
Nii getString ei ole midagi, mis tuleb sisse ehitatud C. See
funktsioon, mis CS50 töötajad kirjutas, tõesti lihtsalt
need esimesed paar nädalat, et lihtsustada protsessi
saada kasutaja sisend ja saada kasutaja sisend kujul
stringe või numbrid, ja selline.
Nii getString on nagu printf, kuid ilmselt mitte
prindi see saab teha seda, mida nimigi ütleb, saada stringi.
Aga kasutada getString, me lähed on teha muutusi
siin kaugemale.
Nii intuitiivselt, see programm loodetavasti läheb kuidagi
saada stringi kasutaja ja siis mida läheb tegema
selle stringi, mida nimetatakse s?
See on lihtsalt trükkimise, eks?
Ikka ei stimuleeriva programmina, sest kõik see läheb
teha, on pistik, mis väärtuse kus% s
ütleb, et see peaks minema.
>> Nii et olgem vähemalt näeme seda tegevust.
Lubage mul salvestada ja välja suumida.
Nüüd on minu terminaliakent siia, väike tükk üks,
andke mulle jälle ei tee tere.
Okei, ja ah, neetud, ma sain terve hunnik vigu.
Lubage mul liikuge üles, ja me näeme meie esimene -
niiet tegelikult seda teha isegi suurem aken siis
saab näha, kuidas halvasti ma silmamunad -
nii et tere.
Okei, see on katastroof, eks?
Olen kirjutanud kolm rida koodi, ja
see on andnud mulle 12 viga.
Miks see nii on?
Nii et õnneks Sageli, kui sa näed palju, palju vigu
sülitada välja korraga, see on tõesti lihtsalt, sest sa oled
segaduses arvuti siin.
Ja see jääb segi ajaks ta saab näha siin.
Ja nii see lihtsalt hakkab komistamist ja komistamine, ja
sülitamine rohkem hirmutav kraam kui tegelikult kehtib.
Nii et üldiselt alati alustada top üks.
>> Nii et väga top kõige astme punane,
veateade on see.
Kasutage deklareerimata tunnus string, ma
tähendab standard?
Ma ei teinud seda.
Ma mõtlesin string, kuid see on, sest ka sõna string
et ma saan kasutada verbaalselt tegelikult
ei eksisteeri C kas.
See on midagi, me kasutame ainult esimesel nädalal või kaks
siin, aga see on olemas fail nimega cs50.h.
Nii et nüüd tean, et seal on see teine ​​raamatukogu, mis
personali kirjutas, nii et see on kirjutatud rohkem hiljuti kui
stdio.h.
Aga sees cs50.h on mõiste, sünonüüm
kehvasti, et loob selle sõna string.
>> Nüüd lubage mul minna tagasi oma terminali aknas.
Ma lähen selge kogu see jama poolt Ctrl-L. Me lihtsalt
pühkida kõik puhas ja ma lähen edasi minna ja teha
tere jälle, Enter.
Mis on siis juhtunud nüüd?
Nüüd on kõik need vead ära läks.
Nii et mida ma tegelikult teha?
Ma olen lihtsalt õpetanud arvuti, et string on olemas, ja see on
selles failis nimega cs50.h.
Nii et lõpetage kaevates, sest nüüd sa tead, kust leida
et funktsiooni deklaratsioon nii rääkida.
Kui on olemas kogu maailmas.
>> Nii et nüüd ma lähen edasi minna ja käivitada tere.
Mulle tundub, et on lõputu silmuse, midagi on toimumas.
Nii et ma pean kirjutama siia midagi, eks.
Esimene rida koodi oma programmi getString.
Nii et see on sõna otseses mõttes ootavad, et ma saan stringi.
Nii et selles mõttes jah, see on lõputu silmuse.
Ilmselt getString on vaikimisi, et me
kirjutas - personal -
et lihtsalt ütleb oodata ja oodata ja oodata ja oodata ja oodata,
kuni kasutaja annab teile string kirjutades midagi sisse
Nii et lubage mul minna ja tüüp D-A-v - i-d, Enter.
Ja siin see on, tere David.
>> Nüüd ei see tunduda see lihtsalt tegu?
Lubage mul minna ja kirjuta Tommy.
Sisesta, okei, näib toimivat.
Tööd Rob rajatised Zamyla, töötab - okei.
Nii see läheb tööle, kõige tõenäolisem.
Nii et see peaks välja printida ükskõik mida me tegelikult annab see,
ja me saame olla natuke raske siin.
Vaatame, kas me teeme midagi tere.
Kas minna üle siin, vaatame, kopeerida, kleepida.
Ma ei saaks kleepida, et mitu korda siin.
Kleebi, okei, Shift + Ctrl + V. Mis võiks
juhtuda, et halb on?
>> Okei, nii, segfaults.
Nii et mõned teist eelneva taustaga teavad, et
üldiselt, andes arvutid palju sisendeid kui nad
ilmselt ei tule saavad pikad nimed nagu see - halb
asjad juhtuvad.
Tõepoolest, maailma veebis, liiga, see juhtub üsna vähe,
kusjuures kui olete projekteerimisel veebilehel, kui olete
projekteerimine Facebook, sa pead tegema meelevaldseid otsuseid üles
ees, nagu kui kaua kellegi
Facebook kasutajanimi on?
Või kui kaua kellegi eesnimi olla?
Kui kaua keegi telefoninumber olla jms.
Ja kui programmeerijad teevad halba eeldused, programmide murda
sest sa püüad neile rohkem toodangut, suurem panus
pigem, kui neil on mälu.
Või RAM eraldatud, ja nii kui nüüd ma Enter,
et programm tegelikult töötatud, sest olime raamatukogus
ja me tegelikult seda ette näinud konkreetse juhtumi puhul.
Aga kahtlemata see semester, siis kirjutage vähemalt üks
programm, mis ütleb neid sõnu.
Pea meeles, see nädala pärast, võib-olla kaks päeva nüüd.
Segmentimise viga on halb.
See viitab, et teie teete midagi, et arvuti
ei osatud ette näha.
Ja sel juhul on sul, programmeerija, ei osatud ette näha.
Palju meeldib, mida see hunnik sokke, seal olid erinevad
nurgas juhtudel saame kokku puutunud.
Samamoodi programme, kui sa ei usu, kui kaua on
kellegi nime saab olema.
Või mis siis, kui mul on pahatahtlik kasutaja, ja tema nimi on
tegelikult päris lühike, aga nad lihtsalt üritan
minuga jamada?
Mis saab olema käitumine minu programm?
Noh, sel juhul midagi võiks tegelikult põrgata.
>> Nii et teeme seda.
90 minutiga, see on meeletult kaua aega
teha arvutiteadus.
Miks me ei tekiks harjumus võtta viieminutiline
murda siin, ja kui me tagasi tuleme, siis me sukelduda mõned
keerulisem ja kaalukad programme?
Viis minutit.
>> Hea küll.
Nii et üks kiire kommentaari.
Mulle öeldi, et kuigi see oli ekraanil enne, mida
tuli mu suust oli cs50.net/rsvp.
See on õige. cs50.net/lunch.
Nüüd võite proovida RSVPing selle juures / lunch.
Aga teeme seda nüüd.
Nii et see on super kiire, super uus, palju toredaid inimesi.
Vana müts mõned inimesed.
Nii et olgem tagasikerimiseks hetkeks, ja vaata, kuidas me saime
Selle tere väljund hetk tagasi.
>> Nii et esimene, seal on see CS50 Appliance.
Jällegi tükk tarkvara, probleem set 1 inimest ütlen
kuidas seda alla laadida, kus seda alla laadida, mida klikkida
ja nii edasi.
Ja siis kui te järgite neid juhiseid, saate
maksimeerida oma aknas ja Mac või PC näeb välja
natuke midagi sellist.
Mustal taustal, kodukataloogi ülaosas, kuhu kõik
Failide minna, prügikast ülaosas vasakul,
menüü allosas.
Nii et taas, päris sarnase sisuga Mac OS või Windows,
kuigi ta juhtub olema Linux.
Nii et mis me siis järgmisel teha?
Noh, hakkasime kirjalikult programmid.
Ja mäletate eelmisel nädalal, et kõik see võtab kirjutada
Programm on lihtne tekstiredaktor,
nagu Notepad või TextEdit.
Ausalt, saate isegi kasutada Microsoft Word.
Aga halvad asjad lõpuks juhtub, sest see on väga
raskepärast lahendus kirjalikult programmi, pluss see tulen
salvestage see vales vormingus.
Aga see on lihtsalt tekstiredaktoriga, sõna protsessor, on kõik, mis on
vaja kirjutada programm.
>> Nii CS50 Appliance, saame seda teha üks lihtne viis.
Me ei saa lihtsalt klõpsa seda ikooni all vasakul.
Ja jälle probleem set 1 ütleb teile seda ja voila -
sa selle musta ja valge liides, kus saame alustada
kirjalikult koodi.
Nii alustame kirjalikult super lihtne programm uuesti.
Ma lähen kuni File, Save, ja ma lähen helistada
see, ütleme, hello2.c.
Ja ma lihtsalt ütlen seda, klikkides jharvard, pane see
oma kodukataloogi, ma tõesti ei hooli
kus see läheb.
Ja siis Salvesta.
Ja nüüd ma ei hakake minu programm.
Ja ma mäletan varasematest et ma pean kirjutama int
main (void).
Suurenda peal vasakule.
Ja siis ma tahan öelda printf, võtan kaks.
Ja nüüd reavahetus lähedal tsiteerin sulgeda
sulgudes semikooloniga.
Ja siis ma lähen siia, et minu terminaliakent see on
varjatud gedit, lihtsalt mugavamaks.
Ja ma lähen edasi minna ja kirjutada tegema tere, kuid mitte
Tema üksi, hello2.
>> Nii et minu faili nimi on hello2.c. Minu toimiku seetõttu
tuleks kutsuda hello2, käesoleval juhul.
Kurat, mida ma valesti tegin?
Olgu, ma selgelt välja jäetud rida, kui te mäletate, mida
varasemate programmide nägema.
Aga vaatame, kas me ei tease see peale.
Kahjuks enamik inimesi, kes kirjutavad programme, mis
me kirjutame programmid ei lihtsustada asjad kõik hästi.
Nii et me peame sellist koorima üle, mida ei ole päris teha
tunnetan siin ja vaata, kas suudame aru saada, mis on valesti.
Kõige esimene rida seal ütleb kaudselt kuulutatakse C
raamatukogu funktsiooni printf tüüpi int.
OK, sain aru osa sellest.
Aga see tundub olevat vihjates sellele, et ma kasutasin printf
vale, kuidagi.
Ja mis mõttes on see vale?
Ma lihtsalt ei õpeta arvuti, et see on faili
nimetatakse stdio.h.
Nüüd mul on ainult veidi meelde nüüd, et printf on
aastal stdio.h, ja tõepoolest seal saad teiste
funktsioone, et sama faili, et me harjuda.
>> Nüüd lubage mul minna ja vajuta Ctrl-L lihtsalt selgeks, et
ära uuesti, teha hello2 ja voila.
Ja see käsk uuesti, keerulisem kui me selgitame jaoks
Tänapäeva eesmärkidel.
Aga see ei jookse rõkkama ja rõkkama võtab lähtekoodi ja
sülitab välja 0. ja 1s.
Ja need 0. ja 1s sel juhul nimetatakse mida?
Okei, objekti kood.
Ja fail, mis nad on, nimetatakse nii,
hello2, käesoleval juhul.
Kuna mu tekstifaili oli hello2.c, Enter.
Ja nüüd Ma olen võtavad kaks hüüumärki, hüüatus
punkt, hüüumärk.
Olgu, nii et meil on nüüd võimalus saada stringid,
ilmselt.
Noh, mida muud me saame kasutajatelt?
>> Noh CS50 raamatukogu, seal on muid funktsioone, mis
ei kavatse lihtsustada meie elu nendel esimestel päevadel.
Getchar, GetDouble, GetFloat, GetInt,
GetLongLong, getString.
Noh, kisu maha lihtsaim neist esimene.
GetString sõna otseses mõttes ei tee seda.
See lihtsalt istub seal, oodates kasutaja tippida midagi,
ja niipea, kui ma kirjuta midagi ja vajuta Enter, see
teeb midagi selle väärtus.
Nii et lähme tagasi, et näiteks täpselt näha, mida
GetString tegin.
Lubage mul minna ja avanevad gedit, hello.c ja meenutada
et vahetult enne vaheaega, see on koht, kus me pooleli jäime.
>> Nii et olgem nüüd tease seda üksteisest veidi täpsemalt.
Nii on line 6, seal on kaks asja
praegu toimub.
Võrdusmärk on eraldav esimesel poolel ja teine ​​pool.
Nii vasakul pool võrdusmärki, me oleme
öeldes string s.
Ja siis, üldarusaadavat mõttes, mis on string s
teed, mis sa arvad?
See loob mida?
Nii et see loob string nimega s.
Nüüd, mida see tegelikult tähendab?
Noh, see reserveeritakse ruumi string nimega s.
See ei ole päris õige.
Mis on selle teed?
Noh arvutid, nagu te teate, on kõvakettad; et seal
teie failid salvestatakse.
Arvutid on RAM, ja see on kui programmid on koormatud
kui nad töötavad.
Nii et kui te topeltklõpsake ikooni ja Microsoft Word avab
kuni Microsoft Word töötab, nii et rääkida, RAM, mis on
elektrooniline osa arvuti.
Ei füüsilisi, mehaanilisi osa, mis käib ringi, kus
andmeid on salvestatud pikemas perspektiivis.
Nii et string s on päris palju ütleb arvuti mulle
piisavalt RAM sobib stringi.
Nüüd ongi natuke järeleandmisi, sest
kui suur on string saab olema?
Noh me tegelikult ei tea veel, nii et lähinädalatel
me tegelikult tõmmake kiht, mis on string ja
me ütlen teile, mis see tegelikult on.
String, nüüd, on lihtsalt tore lihtsustamine meie maailma.
Aga string s deklareerib string nimega s, nüüd.
Tunnistab string.
See jätab ruumi ka RAM string kasutaja on
umbes trükkida.
>> Nüüd vaatame õiges võrdusmärki.
Nii ta ütleb getString ().
Ja vähe meelerahu vaadata.
Asjaolu, et seal on midagi sees sulgudes
tähendab kuidas getString?
See ei võta argumente.
See tähendab, et te ei saa mõjutada oma käitumist kuidagi.
Iga kord, kui seda kasutada, siis saad nööri ja ongi kõik.
Seevastu printf loodetavasti oma käitumist ei
muuta iga kord.
Muidu on üsna kasutu printimise funktsioon, kui
see teeb sama asja.
Kui see alati prindib David või midagi
meelevaldne kogu aeg.
Nii printf mõttekas olla argument.
GetString ei ole tegelikult vaja argument, sest ma tahtsin
saada stringi kasutaja ja see on kasutaja, kes läheb
pakkumise dünaamikat kirjutades erinevaid tähti
iga kord klaviatuuri.
>> Mis siis getString ei lõpuks?
Mõtle seda nagu see väike must kast.
Ja see must kast ei võta sisend, aga kui sa paugu
, see sülitab välja stringi et kasutaja on kirjutatud sisse
Ja asjaolu, et seal on võrdusmärk seal tähendab võtta
Mis on sülitama paremale ja hoidke seda sees
Mis on vasakul.
Nii võrdusmärk siin, siis tegelikult ei tähenda
võrdsuse, see pigem tehniliselt tähendab loovutamisega.
Võtke väärtus paremal, ja pane see
muutuja vasakul.
Nii ongi kõik, mis seal toimub.
>> Nüüd joon 7, me nõuame printf.
Nii printf loodetavasti muutub vähe igav nüüd.
Nii et printida vormindatud stringi.
Mis nöör?
Prindi välja, "h-e-l-l-o,% s
! \ N ".
Olgu, nii et mida ma tahan plug-in for% s?
Sõna otseses mõttes, olenemata salvestatakse s.
Nii et sel juhul vähe meelerahu vaadata, kui palju argumente ei
printf võtta?
Okei, ma kuulsin, et üks.
Ma kuulsin jälle.
Kaks, ma kuulsin kaks.
Ja kuidas umbes kolm?
Okei, kolm?
Suurepärane.
Kolm võimalikku vastust, vaid üks neist on õige.
Nii et argumendid uuesti mõjutamiseks funktsioon.
Varem printf ei võtta ainult üks argument.
"Hello World" oli üks argument.
Kuid nüüd, märkate, kui see koma on.
See koma on väljaspool quote / Tsitaat lõppeb, mis tähendab,
hei printf, siit tuleb teine ​​argument.
>> Nii komaga kõige programmeerimiskeeled
Eraldage argumendid.
Nii et vastus on siin kindlasti ei ole üks, sest
on see koma.
Nii minimaalselt printf ilmselt võtta kaks
argumendid seekord.
Aga võimaluse trikiga küsimus siin on, mida
selle koma?
Kas see tähendab, et seal on tegelikult kolm argumenti?
See, see ja see.
Nii et ei, sest see koma on sees hinnapakkumisi, mis
tähendab see on tõesti ainult esteetiline inglise keelt.
See on midagi pistmist arvu
argumendid selles programmis.
Nii et see koma on väljaspool jutumärgid.
Ja siis tagastab 0.
Praegu teeme lihtsalt omamoodi võtta see üks usu
täna, ja lihtsalt tean, et kui funktsioonid on teinud täidesaatva
rida koodi, üldiselt peaksid tagasi mingi väärtus.
Sellisel juhul lihtsalt sellepärast peamised peab tagastama int,
see on lihtsalt viis keele C töötab.
>> Nii et kuna midagi läks valesti, tundub selle programmi
hea küll, ma lihtsalt kõva kodeeritud return 0.
Aga vastupidi, ja ma lähen kirjutan seda pseudo kood
nüüd palju nagu Joosep tegid, kui me tegime sokk
Näiteks eelmisel nädalal.
Kui midagi läks valesti - see ei ole tegelik kood - läks
vale, siis tagasi, ütleme, 1.
Teine tagasi 0.
Nii et see on, kuhu me läheme sellega.
See ei ole tegelik C kood, lihtsalt pseudokoodi.
Aga see, kuidas sa võiksid tagasi
erinevaid võimalikke väärtusi.
Aga nüüd Ma lähen edasi minna ja tagastab 0.
Olgu, mingeid küsimusi senised süntaks, funktsioonid
vms?
Jah, tagasi.
>> Sihtrühm: [kuuldamatu]
DAVID Malan: Kas te räägite veidi valjem?
Miks see programm return 0, ja?
Sihtrühm: [kuuldamatu]
DAVID Malan: Oh, see on sellepärast, et ma sain laisk, vabandust.
No hea akadeemiline vastus, return 0.
Võin liiki päästa seda, öeldes tehniliselt C, kui peamine
selgesõnaliselt ei tagasta väärtus, 0 tagastatakse
automaatselt teile.
Kumb on tõsi, ma ei ole lihtsalt peitis.
Aga ma oleks pidanud tegema seda nii.
No huvitav Buffee kui peale minu viga.
Jah?
>> Sihtrühm: Tavaliselt, kui sa kirjutad tühine, mis tähendab, et sa
ei tule midagi.
DAVID Malan: Õige.
Kui selle asemel, saab määrata nime ees funktsioon,
Näiteks siin, tühine, siis funktsioon
ei tagasta midagi.
Ja seetõttu tahaksin öelda, tagastamist või üldse mitte midagi,
ja mis oleks kooskõlas.
Ja me tuleme tagasi selle.
Ja lihtsalt FYI, üks saak õpiraskustega
programmeerimise maailmas, mis on sadu raamatuid ja
sadu veebilehed seal on siis alati
vaata teistsugune süntaks erinevates raamatud
erinevad inimesed.
Aru me teeme oma parima, lõigete ja loengud olema
järjepidev.
Aga mõnikord näed vastuoluliste süntaks.
Nii et kui kahtled, siis küsi.
Ja üldiselt, me hoolitseme loengute ja sektsioonideks
peaaegu alati esitab selle õigel viisil.
Ja ma ütlen peaaegu alati, sest näide.
Muud küsimused?
>> Sihtrühm: Kas% s eksisteerida väljaspool seadet?
DAVID Malan: Kas% s olemas seadme välispinda?
Jah.
Nii et% s on pistmist C. asjaolu, et me kasutame seda
Seadme põhimõtteliselt ei ole midagi pistmist
tunnuseid keel me kasutame.
Tõepoolest, eelmisel nädalal, kui me kasutasime mu Mac, ma kirjutasin
C koodi oma Mac.
Ma oleks võinud kasutada% s oma Mac, ja sa võid seda kasutada
Windowsi arvuti kui installite kompilaator, nagu
Visual Studio Microsoft.
Nii et% s.
Kõik, mida me teeme sees see aken täna peab
pistmist C. Ja põhimõtteliselt midagi pistmist
operatsioonisüsteemi küsimus.
Seevastu must ja valge terminaliakent - kui
Ma olen masinakirja asjad nagu ls, ja rm, ja cd -
et on pistmist operatsioonisüsteem ja
navigeerimise ümber.
Jah.
Sihtrühm: Ma mõtlesin raamatukogu CS50 raamatukogu.
DAVID Malan: Okei, nii et kui sa mõtled märksõna string, mis
eksisteerib üksnes CS50 raamatukogu õige.
See ei eksisteeri C ise, ja tõepoolest paari
Nädalate me visata CS50 raamatukogu ja alustada
asju nullist ise, kui nii võib öelda.
Muud küsimused?
Jah.
>> Sihtrühm: [kuuldamatu]
DAVID Malan: Hea küsimus.
Kas käsud tõstutundlik?
Ja las ma teen vahet siin.
Nii et käsud on üldiselt asjad me kirjutame kell
akna allosas, terminali aknas.
Midagi siin üleval oleks avaldusi või C-koodi.
Aga mõlemal juhul vastus on sama, jah.
Mõlemad keskkonnad, C-koodi ülaosas ja
operatsioonisüsteemi käsureal kell
alt, on tõstutundlik.
Nii et peate ära getString kapitaliga G
kapitali S. Peate kirjutama printf kõik väiketähed.
Peate tippima ls kõik väiketähed.
Nii et peaaegu igas olukorras see semester, juhul tuleb aga
Tegelikult asi.
Jah.
>> Sihtrühm: [kuuldamatu]
DAVID Malan: Ah, et okei, aga kui me pidime fail
nimetatakse hello.d.
Nii selgub D programmeerimiskeelt.
Ja nii mõningatel juhtudel me võiks tegelikult kirjutada programmi
et faili ja on see koostatud, et mood.
Me saame ja tegelikult, Lühike vastus on, ma ei tea.
Nii et me ei kavatse seda teha.
Lubage mul minna ja luua uus fail.
Ja spin siin, ausalt üldiselt on alati kahtlus
see semester, ja teil on oma seadme või arvuti
avada, minna ja proovida midagi.
Nii et ma lähen salvestada faili nimega hello.d.
Salvesta see.
Ja ma lähen jooksma teha tere Enter.
Tundus, et järeldada, et C oli tõenäoliselt
kui d sel juhul.
Muud küsimused.
Jah.
>> Sihtrühm: [kuuldamatu]
DAVID Malan: Okei, ütleme, et veel kord.
Sihtrühm: [kuuldamatu]
DAVID Malan: Kuidas minna umbes diagnoosimiseks et või
vigade et?
Nii et kõige tõenäolisem, sest nad on erinevates keeltes,
tõenäoliselt sa saaksid täielikult
erinevat programmi väljastada.
Sa saaksid täiesti erinevaid veateateid.
Ja ka lihtsalt poolest disaini, oleks ilmselt oleks
kehv kujundus otsus olema kirjalikult kahe erineva
keelte peaaegu identselt nimega faile,
täpselt sama kataloog, kasutades
automaatne vahend nagu teha.
Ma võin ka tagurdamise ja ütleme 15 aastat seda teed,
kunagi teinud seda viga.
Võiks juhtuda.
Aga seal on lihtsalt erinevad, ma arvan,
logistilise kaitsemehhanismid paigas.
Plus veateated, mis võivad tekkida, et oleks
lõpuks paljastada, mis probleem on.
Aga võimalik nurgas puhul.
>> Olgu, olgem tutvustada vaid paar muud
funktsioonid siin nüüd, et saaksime alustada hoone üles võetud rohkem
ja keerulisem programm.
Nii et kõigepealt matemaatikat.
Nii matemaatika näited on lihtsalt selline lihtne esimesel nädalal.
See ei tähenda, et kõik programmid on umbes
matemaatika.
Kindlasti mõista erinevaid funktsioone
matemaatika, algebra eelkõige on
üsna tähtsusetud.
Aastal kõrgem CS klassid, Lineaaralgebra,
calculus, jms.
Aga siis leiad kõige kohta, mida me teeme sel semestril vähendab ole
et matemaatika, ja kindlasti mitte aritmeetika, iseenesest, kuid tegelikult
lihtsalt loogika ja hoolikat mõtlemist.
Ja nii see seos, et arvutiteadus on pikka aega olnud,
eriti keskkooli tasemel, matemaatika, on
veidi eksitav.
Kuna enamik programme, mis me kirjutame, tõesti, on
omamoodi kõrgema ja keskenduda probleemide lahendamisele, et
Kindlasti võiks kasutada mõningaid liitmine, lahutamine ja erinevate
matemaatilisi valemeid vms,
kuid lõpus päeval, see on umbes mõelda ja mitte
lihtsalt rakendada, mida sa oleks võinud teha nagu TI
kalkulaator keskkoolis.
>> Nii, et ütles, lähme nüüd midagi nende
matemaatilisi tehteid on küll olemas, et saaksime reisi
üle mõned aluseks olevad aspektid programmeerimine, või
Sel juhul C. Seega on, nagu CS50 raamatukogu soovitas,
ja täna me kasutame ainult getString - ja hetke pärast
ilmselt üks teine ​​funktsioon -
kuid on olemas eri tüüpi andmeid arvuti.
Aasta lõpus päeval, arvutid tean vaid 0. ja 1s.
Aga mäletate, et eelmisel nädalal rääkisime binaarne süsteem
esindavad numbrid, nagu number 0 ja 1 ja 2,
kõik teed edasi kuni 8, nagu Nate video.
Ja siis me saame loota palju suurem kui me
tegid laval siin.
Aga kui sa tahad esindada mitte ainult numbrid, vaid tähed,
meil, inimestel, on tulnud välja mõned suvalise
konventsioonid, mille kohaselt juhul, kui lõpus päeval kõik minu arvutis
on on suutlikkus väljendada 0. ja 1s, hästi Parem
alustada standardiseerimiseks mustrid 0. ja 1s, mis esindavad
erinevaid asju.
Muster 0. ja 1s, mis tähistab täht.
Mustrid 0. ja 1s, mis esindavad kirja z.
Mustrid 0. ja 1s, mis esindavad värv sinine, või
punane, vms.
Me peame kasutama kõiki neid 0. ja 1s väljendada end
erinevates kontekstides, erinevalt, mis ei ole
tingimata numbreid.
>> Nii nii esindus-, C on eri tüüpi andmeid,
ja me oleme näinud ühte neist siiani.
Nägime int, ja teate mis mitte ekraanil
praegu on string.
String ei, tegelikult olemas C. Jällegi, see on
lihtsustamine Me esineme esimest
Paar nädalat.
Char on eristatav.
Ujuk on reaalne number, koma ja numbrid
vasakul ja paremal pool.
Topelt ongi, neile selja enne tausta?
Nii et topelt on kaks korda midagi.
Lisab kaks korda nii palju täpsust.
Mida see tähendab?
Nii et kõik need juhtumid, maailm on omamoodi standardiseeritud
mitu bitti kasutatakse esindama
kõik need asjad.
Nii et kui olete jälginud Nate'i ASCII video juba osa
kohta pset 0, või hiljem sel nädalal siis on teil ilmselt teavad
et ASCII -
iseloomu esindused -
kasutada mitu bitti?
Ja võite isegi mäletan meie demo eelmisel nädalal sellest, kuidas
paljud inimesed olid laval.
Nii et 7 või 8, tavaliselt.
Nii et üldiselt 8, ja seal on midagi, mida nimetatakse laiendatud
ASCII, mis kasutab kõik 8 bitti, asemel 7.
Aga üldiselt me ​​räägime volitusi 2, seega sel juhul, 8.
Nii char programmeerimiskeeles on tavaliselt 8 bitti.
Nii int on tavaliselt 32 bitti.
Ujuk on tavaliselt 32 bitti.
Topelt tavaliselt 64 bitti.
Ja mida see tähendab?
See tähendab, et saate esindavad suuremaid numbrid, või juhul,
tegelik arv, sul võib olla palju rohkem numbreid pärast
kümnendkohani.
Palju rohkem täpsust, et sellisel juhul.
Nüüd pikk pikk on kahjuks nime.
Nii et seal on int, mis on 32 bitti.
Seal on pikk, mis on nope, 32 bitti.
Ja pikka, mis on 64 bitti.
Kuid mõned neist on kontekstitundlikud, see sõltub
milliseid arvuti sul on.
Nii et üldiselt me ​​täpsustada, kodutöö või viktoriini kui
see tegelikult oluline on.
Aga point on seal kõik need erinevad
esindused siin.
>> Nii et olgem tegelikult sukelduda programm.
Selle asemel, et kirjutada see üks nullist, lase mul minna
ja avada alates tänasest lähtekoodi - kõik, mis on
internetis - kui soovite käpard umbes online või tulu
Kolmapäeval seadme arvuti juhiseid
jaoks, mis ühendaksid käigus kodulehte.
Siin on super lihtne programm.
Aga see sai natuke midagi uut ülaosas et
meil ei olnud enne.
Palju sinine rida teksti.
Nii et need sinised jooned kujutavad kommentaare.
Nii et see on üsna kasulik programm suutma kirjutada
mõned märkused ise või kolleegide või sõpradega, või
õpetamise stipendiaatide et mingisugune kirjeldada, mis siin toimub
seda faili, kuid ei ole midagi pistmist C koodi ise.
Midagi pistmist programm funktsionaalselt, see on lihtsalt
esteetika.
Niisiis, kuidas sa seda teha C on teil üldiselt alustada oma
märkusi / * ja sa lõpuks oma märkusi
* /.
Ja kui sa oled tõesti anal ja juhtida omamoodi pilte,
siis paneksin kogu palju tähti, sinust saaks
väikest kasti niimoodi.
Kuid ükski, et küsimusi.
Ainuke asi mis loeb, on kõige esimene
ja kõige viimane.
See on see, mida nimetatakse mitmeliiniline kommentaari.
Ja see on lihtsalt inimeste konventsiooni tihti tähed ja kast
asjad niimoodi, kui sul on palju vaba aega.
>> Nii et pärast olete kirjutanud mõned kommentaarid, üldiselt, tule
tegelik julgust programmi.
Siin on meie tuttav # include .
Ja just kiire, see on vajalik või ei ole vaja?
Sihtrühm: Vajalikud.
DAVID Malan: Nii see tegelikult ei ole vaja.
Miks on aga see ei ole vajalik?
Seega puudub printf.
Tõepoolest.
Kõik me teeme on see programm on matemaatika.
Nii et ma ei saa tegelikult kustutada.
Nii et sa ei pea alati sisaldama midagi
ülaosas programmi.
>> Nii et olgem lihtsustada seda natuke.
Ja nüüd teate, mis see programm teeb.
Mitte palju huvi.
int x = 1.
Noh, mida see teeb?
Noh, arvan, et tagasi vaimse mudeli enne.
Vasakul pool seda väljendit mida teeb?
Loo ruumi täisarv.
Nii palju ruumi?
Noh, me juhtumisi tean nüüd, et see on 32 bitti.
Varem string oli tehniliselt 32 bitti, kuid rohkem
kohta, et tulevikus.
Aga int on 32 bitti.
Nii et see väljend vasakul siin, int x lihtsalt ütleb hei
operatsioonisüsteemi, anna mulle 32 bitti RAM -
muidu tuntud 4 baiti RAM -
nii et ma ei pane täisarv, et ruumi.
Mis täisarv sa tahad panna?
Noh, lihtsalt number 1.
int y saab 2, teeb täpselt sama asja, kuigi
arv on suurem, seoses selle ulatuse.
Number ise on ikka lihtsalt 32 bitti.
See on lihtsalt muster bitti on erinevad
esindada 1 vs 2.
int z nüüd ütleb anna mulle veel 32 bitti, nimetame seda z, ja panna
liitmise 1 ja 2 sinna.
Nii et nüüd z on arvatavasti ladustamiseks väärtus 3,
ja siis tagasi 0.
>> Nüüd on see programm, see teeb midagi huvi?
Nii see tegelikult ei tee midagi huvitavat, igal
mõtet, sest miks? See teeb natuke matemaatikat.
Aga see ei tule vastust, eks.
See on jälle 0.
See ei trüki vastus.
Nii et see programm on täiesti väärtusetu, sest see
Praegusel kujul.
See teeb natuke tööd.
See saab võtta mõne arvu sekundit või mikrosekundites, et
joosta, aga see tegelikult ei tee midagi
kasulik inimese.
>> Nii et olgem tegelikult nüüd avatud math2, kus nüüd olen tegelikult
trüki tulemus.
Nii see ka saab tuletada meie eelnevatest näidetest.
Kui ma tahan teha mõned lihtsad matemaatika, int x = 1, y
= 2. z on 1 pluss 2 nüüd.
Mida see läheb välja trükkida ilmselt?
Lihtsalt 3.
Nii kiire meelerahu vaadata.
Lubage mul liikuda selles kataloogis.
Nii CD source1m.
Lubage mul minna ja kirjuta teha math2.
Ei veateateid tuli välja, et andke mulle joosta -
ei a.out--Ma jooksen math2. Enter.
Ja tõepoolest, see välja trükkida 3.
Noh olgem heita pilk variant see.
Aastal math3.c, meil on nüüd see näide siin.
>> Nii et see on omamoodi huvitav.
Nii et see siin, vastust ei hakka 1 jagatud 10
ja teate ma olen kuulutanud kui sularahaga.
Miks ma tahan, et see oleks sularahaga?
Noh, see on vaid murdosa.
See saab olema reaalne number.
Nii et see saab olema 0.1, loodetavasti - 10%, käesoleval juhul.
Ja mida ma siis tahan välja printida?
Noh, see vastus.
Noh, olgem tease nende peale esimesena.
Nii vasakul servas, kuulutada
float, nimetame seda vastata.
Paremal pool, ei 1 jagatud 10 ja pane see
vastata sees muutuja.
Nüüd on see rida paistab pisut rohkem segasena.
Aga märgata tuttavaid funktsioone. % Tähendab siin tuleb
kohatäide.
f tähendab siin ujukoma väärtus, vaid reaalne
arvu, midagi koma.
0,2 tähendab mida?
Keegi teab eelnevate kogemuste?
Kaks kohta pärast koma.
Nii et me pole näinud seda varem, aga see on lihtsalt viis
kasutades natuke rohkem kontrolli printf ja
ütlus ei anna mulle 30 punkti peale koma,
selle asemel mulle vaid 2.
>> Ja siis lähme edasi ja tee see.
Nii et matemaatika 3 ja nüüd andke mulle joosta matemaatika 3 Enter.
Ja see ei ole õige.
Tundub, et me oleme tulnud meie esimene tõeline viga.
Noh, võibolla ma lihtsalt ei otsi piisavalt lähedal.
Nii et lase mul minna siia üles, ja lase mul panna 20 kohaga
punkt kohti seal.
Ja las ma kompileerida seda teha math3, joosta.
Päris kindlasti 1 jagatud 10 ei ole 0.
Mis siis toimub?
Noh okei, tegelikult see ei ole pistmist.
See on hea mõte.
See on tõesti lihtsalt kokkusattumus
et me seda teeme.
Aga lihtsalt tõestada, et see ei ole see, ma tulen
tagasi midagi juhuslikku.
Ära tee seda kodus, sest see on lihtsalt vale.
Aga teha math3, lubage mul kasutada seda.
Nii et ei ole midagi pistmist sellega, mida ma teen sulle tagasi, vaid peab tegema
mida ma olen trükkimine.
Aga ma kuulsin seda siin all.
Mida?
Sihtrühm: Nii et me peame kirjutama numbrid
rajoon -
>> DAVID Malan: Okei hea.
Seega on meil vaja kirjutada numbrid osalevad
rajoon siin kui murdarve ise.
Nii et probleem on nagu enne: C, kus on palju
keeles, on eri tüüpi andmeid.
Ja need andmetüübid, näiteks need siin.
Ja andmed kõnealuste tooteliikide siin, kui ma tüüpi 1 ja siis ma
tüüp 10, on ilmselt, mida andmetüüpe?
Nii et see on tõenäoliselt int, eks?
See on kindlasti mitte float sest puudub koma
punkt või midagi sellist.
Nii et tõesti, mul on int jagatud int.
>> Nii huvitav asi matemaatika ja arvuti on see, et
kui sa teed rajoon kasutades täisarvu -
1 jagatud 10, jah on 0.1.
Samas, kui sa jagades täisarv poolt täisarv,
vastus peab ka olema täisarv lihtsalt sellepärast, praeguseks.
Ja mis tähendas siis?
Noh, kui vastus on 1 jagatud 10 võrdub 0,1, mis
arvuti läheb selleks vaja on ma ei tea, kuidas
esindada 0.1, sest see on Murdarv, ei
täisarv, see on raiun maha kõik pärast
Koma ja lihtsalt näitan sulle 0 alguses.
Ja asjaolu, et see prinditakse ujukoma
väärtus, see on lihtsalt esteetiline asi.
See on sellepärast, et ma sundides arvuti printida seda
Murdarv.
Ja tõepoolest olen kuulutanud, nagu float, kuid matemaatika on
toimub siin.
>> Nii et lubage mul tegelikult määrata see üks päris lihtne.
Miks ma ei lihtsalt ei 10.0 ja 1.0, kuigi
tehniliselt ma ei pääse lihtsalt teeme üks neist.
Nüüd lubage mul minna ja teha math3.
Lubage mul minna ja nüüd joosta math3, Enter.
Ja nüüd, oh boy.
Nüüd on meil uus probleem hoopis.
Nii et parem, eks, me oleme lähemal 0,1, aga mida täpselt on
valesti?
Kui me oleme valetab sulle juba aastaid, eks?
1 jagatud 10 on tegelikult mitte päris 0.1, et milline
tegelikult siin toimub?
Noh saate mingi põhjus selle kaudu loogiliselt.
Kui arvuti on ainult piiratud kogus RAM alustada
koos ja tegelikult arvuti ainult kasutab 32 bitti jaoks
Murdarv, siis loogiline, et koos
hulga bitti, 32 sel juhul, jah, saate
esindada palju asju.
See on tegelikult 4000000000 erinevaid väärtusi saab
esindatud 32 bitti, 2 32, aga see on siiski piiratud.
Nii et probleem on olemas lõpmatu arv reaalne
numbreid, eks.
Kui sa annad mulle päris mitmeid, saan alati leida teile ühe
veidi suurem, veidi vähem, lihtsalt tutistamine
numbrid, mis on pärast koma.
Nii et kui teil ei ole lõpmatu bittide arv, siis
ei saa kuidagi esindada lõpmatu
arvu reaalarvud.
>> Nii et seal on see omane ebatäpne arvutite ja
see saab otsa komistada kogu aeg isegi kõige lihtsamaid
programmid nagu see.
Aga ka mõnel väga reaalses maailmas probleeme.
Tegelikult, võtame hetk lihtsalt, kui heita pilk
midagi, mis tegelikult juhtus tegelikult.
Me vaatame ainult esimese paari minuti jooksul ning seejärel
Saadame link internetis.
Aga see on märk sellest, just see, mida saab valesti minna, üsna
ausalt, väga traagiline tee, kui neid asju ei ole
hinnatud või lihtsalt meie, inimesed teevad vigu, kui tegemist on
selliseid rakendamise üksikasju kaasaegseid arvuteid.
>> [Video mängimine]
-Me nüüd tagasi inseneri katastroofide Modern Marvels.
Arvutid.
Me kõik oleme tulnud vastu sageli heidutav probleeme
et minna koos nendega.
Bugs, viirused ja tarkvara tõrgete on väikesed hinnad
maksma mugavuse.
Aga kõrgtehnoloogia ja kiire sõjalise ja ruumi
programmi rakendusi, väikseim probleem võib olla
suurendatud võtta katastroof.
4. juunil 1996, teadlased valmis käivitada mehitamata
Ariane 5 raketi.
See vedas teaduslik satelliidid, mille eesmärk on
täpselt määratleda, kuidas maa magnetvälja
suhtleb päikese tuul.
Raketi ehitati Euroopa Kosmoseagentuuri ja
kergitatud selle rajatise rannikul Prantsuse Guajaana.
>> -Umbes umbes 37 sekundit arvesse lennu nad esimest korda
märkasin midagi oli valesti, et pihustid olid
pööramisega nii nad tõesti ei peaks.
Umbes 40 sekundit arvesse lennu selgelt sõiduki
oli probleeme, ja see, kui nad tegid otsuse
hävitada.
Range Safety Officer tohutu julgust pressitud
nuppu, plahvatas rakett enne seda võiks saada
ohustada avalikku julgeolekut.
>> -See oli esireis Ariane 5 ning selle
hävitamine toimus, sest viga põimitud
raketi tarkvara.
>> -Probleem Ariane oli see, et see arv
nõuab 64 bitti väljendada ja nad tahtsid, et muuta see
kuni 16 bit number.
Nad eeldasid, et number oli kunagi
saab olema väga suur,
et enamik neist numbrit 64 bit number oli 0s.
Nad eksisid.
>> -Suutmatus ühe programmi vastu
selline number, mille teine ​​oli keskmes
rike.
Tarkvaraarendus on muutunud väga kulukas osa
uus tehnoloogia.
Ariane 4 rakett on olnud väga edukad.
Nii palju tarkvara loodud Seda kasutati ka
aastal Ariane 5.
>> -Peamine probleem oli see, et Ariane 5 oli kiirem,
kiirendada kiiremini.
Ja tarkvara ei arvestatud selle eest.
>> -Hävitamise raketi oli suur rahaline
katastroof, kõik tänu minut tarkvara viga.
Kuid see ei olnud esimene kord, andmete konverteerimise probleeme olnud
vaevavad kaasaegse raketi tehnoloogiat.
>> DAVID Malan: Me jätame selle nii.
Aga see on märk sellest, kuidas kohaldatakse isegi mõned
Nende madalaimal tasemel üksikasjad, et oleme hakanud
uurima täna on.
Nii et isegi kui sa saad natuke segane ehk mõned
süntaks ja arcaneness siin aru, et üle
perspektiivis oleme me keskendunud ainult sellele, kuidas kohaldatakse seda on
maailmad kaugemale CS.
Me näeme teid kolmapäeval.