[Powered by Google Translate] David J. Malan V redu, to je CS50 in to je
konec tedna 1, tako da so v študijskih kartice in skupno število
sošolci, ki jih imate v letošnjem letu je 745.
In smo tako navdušeni, da so tako mnogi od vas v okviru
ta semester, pa čeprav je to seveda ni tako velika,
Zavedajo se, da je te stvari, kot so kosila petek, kot je
Uradne ure, 15-oseba, profili, in tako naprej, da
je res mišljeno, da ustvarite to bolj intimno
okolje.
Torej, čeprav smo se enkrat ali dvakrat na teden, tukaj v
Sanders, vem, da je velik del svoje izkušnje v tem letu
bo v veliki meri je hands-on na poleg svojih sošolcev
in učitelji.
>> Torej, gremo, jesen 2012.
Tako opozarjajo, da je zadnji čas, da smo se na noto
nenatančnost, ki govori o zastopanju številk.
In smo si ogledali eno od napak, ki se je zgodilo v
realni svet, ko je prišlo do nesporazuma
kako računalniki delujejo.
No, danes bomo ponovno še enega od teh idej
ter nadaljevali razpravo o CS50 stranke
in C, in kaj to pomeni res do programa.
Najprej pa le nekaj objav vihar.
>> Skupine začne v nedeljo, in prvi teden je vedno
Malo hiter začetek, saj smo dobili v
sekcije oblike.
Delamo enako, zdaj, z učnimi štipendistov, zdaj
da poznajo svoje urnike, tako da smo cilj, ki ga
V soboto zjutraj, za nadaljnje ukrepanje pri vas s svojim oddelkom
Prirejanje in TF.
Zavedaj se, da se bodo začeli naslednji dan, v nedeljo
ali ponedeljek ali torek.
In potem bomo prilagoditi razdelek spremembe, ko se pojavijo
V dneh, ki prihajajo.
Uradne ure, medtem, so spet nocoj, 08:00 do 11, v
Annenberg, kot tudi jutri zvečer.
Čeprav problem seti so na splošno posledica ob četrtkih
Opoldne zavedaš, imate do pet dni prepozno, da preživijo,
zato razpoložljivost uradnih ur ob četrtkih, če
si denar v eno od teh poznih dneh in s tem predloži
Nekaj ​​v petek.
Naj kažejo, da Scratch je med več zabave, med
Več nizki ključni problem množice.
In jaz bi viseti na teh poznih dni, strateško, samo
za pozneje v polletju, ko je življenje začne v napoto
z vmesni izpit in drugih razredov.
Problem Set 1, bi medtem, objavljene na tečaj je
Spletna stran je ta petek, bo, kot je na sprehod v teku
skozi video bo, kar bo posnet na 02:30 v petek
in nato objavljene na spletu, ki jih naslednji dan.
>> Tako smo se znašli v ponedeljek.
Želim - pravzaprav omeniti tukaj.
Ker so razredi - ker Sanders ni ravno posojajo
sama občasno Q & A sem ter tja strašno dobro, da smo
bo poskusil nekaj malo novih letos, pri čemer
Če niste zadovoljni dvigne roko ali pa samo
Raje ne bi dvignil roko v prostoru, kot je ta,
da bomo imeli nekaj učnih fantov in CAS
vozniki cs50.net/discuss med predavanjem.
Torej, če imate kakšno vprašanje, ker sem bil popolnoma
jasno, o čem ali vas zanima o nekaterih
temo, jo poskusite objavljate tukaj.
Ga označi z oznako Predavanje, mi pa se bomo potrudili,
danes in naslednji teden - bova poskusiti to jasno - na področju IT
bodisi v elektronski obliki, na spletu, ali če se počuti, kot bi se morali
Res je obravnavala množično, eno od učnih štipendistov ali
CA bo dvignil roko in vprašal
anonimno v vašem imenu.
Torej bomo dal to poskusiti in videli, kako dobro to deluje.
Ampak, z vsemi sredstvi, še naprej opozarjala na roke, kot bi želeli.
>> Torej, zadnjič, ko smo pokazali, da 10% ali ena desetina pa ni v
Dejstvo, 0,1, tako kot so vas naučili že pred mnogimi leti.
To je v bistvu vrednost, kot je ta.
Toda to ni povsem res, kajne?
Pravkar smo imeli to omejitev na računalnikih, s katerim v primeru, da
le končno količino pomnilnika, RAM ali več
posebej bitov, no, tam je le končno število
stvari lahko predstavljajo.
Na primer, če imamo številko nič, in želimo, da
predstavlja binarno, z uporabo 8 bitov, kjer je malo,
Ponovno je nič ali ena, morda smo
jo predstavljajo kot 00000000.
In to je malo po nepotrebnem verbose.
Tako kot v decimalni sistem v realnem svetu,
na splošno, če želite, da napišete številko 123, se
ljudje verjetno ne pisati 00000123, čeprav
funkcionalno, to je točno isto številko.
Samo spusti vodilne ničle, tako rekoč.
>> V binarne, lahko naredimo enako.
Binary in nič, nič in je le binarna nič.
Potrebujete samo en bit.
Ampak še enkrat, najbolj pogosti merska enota na svetu
računalništva je bajta, 8 bitov.
Samo zato, ker en bit, precej neuporabna.
Osem bitov, ni strašno koristen, vendar vsaj, da je bolj
uporaben kot eno mersko enoto.
Torej, z 8 bitov, bomo običajno predstavlja binarno.
Torej, tukaj imamo številke nič, ena, dva, nato pa, kot je
Nate si v našem video prejšnjo sredo, bomo lahko še naprej
štetje do 7, na osem.
In potem, če jih uporabljamo več in več bitov, smo
Lahko računate do neskončnosti.
Ampak, če ste le končno število teh bitov, kot je
velja v vsakem računalniškem sistemu, ali celo raketa
sistem, dobro, res imate samo
končna količina natančnosti.
Torej, če želite prikazati število kot 0,1, je dobro,
Računalnik mora izbirati.
In če ima le končno število številk je v njeni moči
predstavljajo, lahko pride blizu 0,1 za vas, vendar ne more
nujno, da vam točno vrednost, ki jo želite.
In to je le eden od izzivov, računalnikov,
Pod pokrovom motorja na srečo.
>> Kot smo korak naprej v semestru, ti nižji ravni
Podrobnosti postal veliko manj zanimiva, vsekakor pa
Uporaba teh idej lahko nekaj zelo resničnega sveta
posledice.
Ena je malo zabave.
Koliko vas je videti neverjetno prostor Pisarna film?
Če še niste, to je tvoj neuradno
domače naloge za teden dni.
Toda v Office Space, so fantje v tem filmu bo
Prednost ravno to idejo, ampak so dejansko ukradli
je iz drugega filma, ki jih lahko imajo
videl, celo leta prej.
Torej, naj ti dam nekaj sekund te prikolico od
to neverjetno film in to je zelo veliko
akademsko pomembno.
>> [IGRA MOVIE]
Pravzaprav sem se oglašuje.
Jaz lahko program virus, ki bo zajel da
postavite off velik časa.
Torej, kako deluje?
Vsakič, ko je plačilni posel, kjer je interes
Izračunana je na tisoče dan, računalnik konča
s temi frakcijami centa.
Ampak jaz ne bom naredil nič nezakonitega.
Nezakonito? Samir, to je Amerika.
Moraš prisežem pri Bogu.
Če nihče ne ve o tem, vendar nas, v redu? Brez družinskih članov, ne
prijateljice, nihče.
[Neslišno].
Ne skrbi, človek, ne bom nikomur ne.
[MOVIE KONEC]
>> V redu, mogoče sem našla ta film boljši od večine
Ljudje tukaj, ampak v vsakem primeru je virus, ki so bili
poskušajo ustvariti -
in v filmih, kadarkoli bi rečejo nekaj, virus,
je na splošno niso dejansko virus.
To je samo program, ki je nekdo napisal nekaj storiti.
In v tem primeru, fantje so poskušali napisati program
da je prednost njihovega podjetja pozval Innotech je
računalniški sistem, s katerim računalniki, preveč, tudi če je
gre za denar, ne more nujno
predstavljajo denar natančno.
Torej, čeprav je morda 0,10 $ na vaš bančni račun,
0,10, dobro, lahko računalnik dejansko mislite, da imate
to je veliko centov na vašem bančnem računu.
In kaj so ti ljudje so bili v upanju, da ne - in jih
ukradel idejo, se je izkazalo iz Superman III, kjer je
Richard Pryor storil isto stvar - so bili v glavnem
pisanje programov, ki si prizadevajo, da bi vse zaključnimi
številke, vse od drobnih, majhnih, drobnih frakcij
penijev, in tistimi, nedovoljeno off, tako da se ljudje le
misel, oh, to je samo 0,10 $, toda vse tiste,
sledilni številke na koncu seštejejo.
Tako čudovito idejo in je izjalovilo veselo v tem, da
Zlasti film.
>> Toda v resničnem svetu, tudi tu so veliko bolj v zvezi z
Posledice teh mogočih stvareh.
In eden od razlogov, da se potopite v področju računalniške
Znanost je, še enkrat, njegova uporaba pa ne na
inženiring znanosti same, ampak le
drugih področjih, kot dobro.
Torej, to je manj Vesel pogledati, kaj lahko gre narobe, ampak
je tudi precej oko odprtju mislim, da ko gre za
razumevanje, kako točno vseprisotna tehnologij, kot so
računalnikov in programske ali v teh dneh,
v obliki programske opreme.
Torej, to naslednji posnetek je skoraj šest minut, je še
kjer smo končali zadnji čas, vendar nam omogoča, da si malo
bolj v globino na enem takem teh vprašanj.
Naj preskočite naprej do točke, kjer smo končali,
ki je bil prav tukaj.
In imamo drugega dela 2, na približno šestih minutah tukaj.
>> [PLAY MOVIE]
Pestijo sodobnega raketno tehnologijo.
Leta 1991 je z začetkom prve zalivske vojne, Patriot
raketa doživela podobno vrsto
število preusmeritev problem.
In kot rezultat, je bilo ubitih 20 ljudi, 20 ameriških vojakov,
in približno 100 ranjenih drugi, ko Patriot, ki se je moral
za zaščito pred dohodnih Scuds,
ni ogenj izstrelkov.
>> Ko je Irak napadel Kuvajt in Amerika začela Desert
Neurje v začetku leta 1991, Patriot raketne baterije so
uporabljena za zaščito Saudska Arabija in Izrael iz Iraka
Oblaki raketnimi napadi.
Patriot je ameriški srednjega dosega zemlja-zrak,
proizvaja podjetje Raytheon.
Velikost Patriot Interceptor sam, gre
približno 20 metrov dolga in tehta okoli 2.000 kilogramov.
In nosi bojno glavo približno - mislim, da je približno
150 £.
In bojno glavo sam je zelo eksploziven, ki ima
delci okoli njega.
Ohišje za bojno konico je zasnovan tako, da delujejo kot buckshot.
Rakete so se izvajajo na 4 posode in so
prevaža polpriklopnik.
>> Patriot protiraketni sistem, sega vsaj do
20 let.
To je bil prvotno zasnovan kot protiraketni obrambi letalskem
ustreli določitvi sovražnik letal, v prvi zalivski vojni.
Ko se je vojna prišla je vojska želela, da jo uporabljajo za snemanje
določitvi Scuds, ne letala.
Air Force Iraški ni bilo tako veliko težav, vendar pa je vojska
Skrbelo me je Scuds.
In tako so poskušali nadgraditi Patriot.
Prestrezanje sovražnik izstrelkov potuje Mach 5 je dogajalo
, dovolj velik izziv.
Toda, ko je bil Patriot planila v službi, vojska
ni bil seznanjen z iraško spremembe, ki so izrazili svoja
Scuds skoraj nemogoče zadeti.
>> Kaj se je zgodilo, je Scuds, ki so bile
prihajajo bila nestabilna.
Bili so premikanja.
Razlog za to je bil Iračanov, da bi dobili 600
kilometrov izven 300-kilometrskega projektil območju, je
teže iz sprednjega in bojne glave
podana bojno glavo vžigalnik.
Torej, zdaj Patriot poskuša priti na Scud, in večina
čas, velika večina časa, bi bilo
Samo letenje, ki jih Scud.
Ko upravljavci Patriot spoznal Patriot
zgrešil svoj cilj, jih je sprožil The Patriot bojno konico.
Da bi se izognili morebitnim žrtev, je bilo dovoljeno, da
pade na tla.
To je tisto, kar večina ljudi videli kot velike ognjene krogle na nebu,
in narobe, kot prestreza z bojnimi glavami Scud.
>> Čeprav je na nočnem nebu, Patriots se je izkazalo
Uspešno uničenih Scuds na Dhahran bi smelo biti
pomote o njeni uspešnosti.
Tam je Patriot radarski sistem izgubil občutek za
Prihodnje Scud in nikoli začel zaradi
programski pomanjkljivost.
To je bil Izraelci, ki je prvi odkril, da več
Sistem je bil na, večja je razlika, ko je postal,
Zaradi ura vgrajena v računalnik sistema.
Približno dva tedna pred tragedijo v Dhahran, na
Izraelci poročajo, da je obrambno ministrstvo
Sistem je izgubljal časa.
Po približno osmih urah obratovanja, so opazili, da je
Sistem je bil vedno občutno manj natančna.
The Defense Department odzvala povedal vse
Patriot baterije ne pustite sistemov
na za dolgo časa.
Nikoli rekel, kar je bilo dolgo časa - 8 ur, 10
ur in 1.000 ur.
Nihče ni vedel.
>> Patriot baterije nameščene v vojašnici v Dhahran
in je njegovo neustrezno notranja ura že na več kot 100 ur na
v noči 25. februar.
To sledil čas za natančno približno desetino sekunde.
Zdaj desetina drugi je zanimiv zato, ker število
ne more biti izraženo v binarni, točno, kar pomeni,
ni mogoče natančno izražena v katerikoli
sodoben digitalni računalnik.
To je težko verjeti.
Ampak to uporabijo kot primer.
>> Oglejmo Številko eno tretjino.
Ena tretjina ne more biti izraženo v decimalni, točno.
Ena tretjina je 0,333 dogaja v neskončnost.
Ni šans, da to storite z absolutno natančnostjo decimalko.
To je točno isto vrsto problema, ki se je zgodilo v
Patriot.
Dlje sistem vodil, slabša je čas, prišlo je postal.
Po 100 urah delovanja, je prišlo v času, le
približno ena tretjina sekunde.
Ampak v smislu ciljnih izstrelek potuje Mach 5,
je prišlo do napake pri sledenju več kot 600 metrov.
To bi bilo usodno napako za vojake na Dhahran.
>> Kaj se je zgodilo, je začela Scud je bila odkrita z zgodnjim opozarjanjem
sateliti in so vedeli, da je Scud prihaja v njihovem
splošna usmeritev.
Niso vedeli, kje je bil prišel.
To je bil do sedaj radarske komponente Patriot
Sistem, ki brani Dhahran, da poiščete in spremljate od
Prihodnje sovražnik izstrelkov.
Radar je bil zelo pameten.
Ti bi dejansko slediti stališču Scud in nato
napovedati, kje bi bilo verjetno naslednjič, ko
Radarska poslala pulz ven.
To je bil imenovan obseg vrata.
Potem, ko se odloči, Patriot, dovolj časa je minilo, da gredo
nazaj in preverite naslednjo lokacijo za to ugotovi
predmet, gre nazaj.
Torej, ko se je vrnil na napačnem mestu, potem ne vidi
nasprotuje, in sklene, da ni bilo nobenega objekta.
To je napačno zaznavanje in spusti skladbo.
>> Prihodnje Scud izginilo iz radarskega zaslona.
In sekund kasneje pa je treščilo v vojašnice. The Scud
ubil 28 in je bil zadnji streljal med
prvi zalivski vojni.
Tragično je posodobitev programske opreme prišel Dhahran
naslednji dan.
In je bila programska napaka določi, zapiranje eno poglavje v
zmedena Zgodovina Patriot raket.
PATRIOT je pravzaprav kratica za "postopoma sledenje Array
Prestreči TARGET. "
>> V redu, torej veliko bolj žalosten izid ni povsem
razumevanju tega sveta.
In hrana za s seboj, res iz filma je, da je rešitev
je bil ponovno zagnati sistem raketne obrambe
vsake toliko časa.
In tako spet eden izmed ciljev tega seveda, vsekakor
na bolj skromnem obsegu kot teh vlog, je
Oči zelo odprti za vsakogar točno, kako si šel o
Stroji za izdelavo, kaj želite od njih in kako greste
O tem, da je pravilno, medtem ko so na poti početje
dobro, elegantno, in tako naprej.
In tako je danes, kaj je potopite v malo več, vendar
tako da ne bomo prehitro, še posebej za tiste manj
udoben, ampak tudi zato, da bomo lahko ohrani interes
tisti bolj udobno, kaj je samo hitro začeti z malo
Rekapitulacija o nekaterih od teh idej.
In še enkrat, se posvetujte stran, tako osebno ali na spletu, če imate
vprašanja, tako da lahko vodijo vsi na isti strani.
>> Torej CS50 Appliance, hiter korak nazaj, je
kaj, s svojimi besedami?
To je v redu, če nimate pojma, kaj se lahko te besede biti še.
[Neslišno]
Ok, tako univerzalen vmesnik za -
da bomo lahko vsi delijo.
Absolutno.
Tako bi lahko, na primer, ti povem, da gre za nekaj
spletni strani, prenesete programsko opremo za Mac OS.
Prenesete programsko opremo za Windows, nastavite na
na ta način in to.
Ampak dejstvo je, potem smo naleteli na nešteto tehničnih
podporo vprašanj.
In prav te dni, veliko tega, kar se je naredil strani strežnika,
V svetu računalništva, še posebej, ko gre za
izdelava spletnih strani in spletnih aplikacij, je dejansko
pogosto poteka na Unix ali Linux računalnikov, v nasprotju z
Mac ali Windows računalniki.
>> Torej med upsides, nato pa, da se uporabi to stvar, imenovano
CS50 Appliance je, da bomo vsi imeli isto okolje.
Torej, vsi smo na isti strani, ni važno, kaj strojne opreme,
prišel na kampusu z ampak bo dabbling v točno
isto okolje, ki ga boste uporabljali proti
semester konec tudi za spletni razvoj, kot tudi v
Prihodnost realnih svetovnih njih.
Torej, bolj konkretno, CS50 Appliance je brezplačna kos
programsko opremo, ki omogoča izvajanje drug operacijski sistem,
Linux, v tem primeru na svojem računalniku v oknu.
Zdaj pa ne moreš prenesti na napravi.
Potrebuješ program, s katerim lahko igrajo ali zagon naprave.
In ta kos programske opreme, na splošno znani kot
hypervisor.
Hypervisors prišel v obliki izdelkov, kot so VMware,
Virtual Box, Vzporednice.
Vse vrste podjetij, da programsko opremo, tako prost in
komercialne, podobni.
Kaj boste videli Problem Set 1 so navodila o tem, kako
dobiti brezplačno programsko opremo, s katero bi
teči CS50 aparata.
In ko boste to storili, boste imeli v oknu na vaš PC ali Mac,
namizno okolje, ki je videti zelo všeč to, kje
ima meniju Start podobno stvar v
spodnjem levem kotu.
Ima Home mapo ali domači imenik, v zgornjem levem
tam, lahko smeti, in tako naprej.
Torej bomo draži narazen potrebne podrobnosti, kot smo.
>> Toda zdaj, začnimo se potopite v C.
Torej je to C programski jezik, podoben duh
Scratch, vendar veliko manj grafična, a ironično, če
močnejša, ko boste dobili zdrava pamet z njim.
Torej v C, pišemo programe za pisanje izvorne kode, ki je
To Angleški podobno skladnjo, podobno kot nogavice
dokaz, da smo naredili zadnji čas, da vam omogoča, da
izraziti sebe dokaj natančno, če
arcanely, na računalnik.
>> Torej, kakšno programsko opremo izdelka vam dejansko potrebujejo
pisati programe v jeziku, kot je C, ki temelji na našem
pogovor v ponedeljek?
[Neslišno]
OK, morate samo urejevalnik besedil.
Vi ne potrebujete nobene posebne programske opreme
per pisati programe.
Potrebuješ samo urejevalnik besedila, kot Beležnica, v operacijskem sistemu Windows,
TextEdit na Mac ali nekaj, kar ti gedit v svetu
Linux, ki jih bomo uporabili tukaj.
In to je to, da napišete programe.
>> Toda pisanje je le polovica enačbe.
Nato jih moramo teči.
Ampak, da za izvajanje programov -
ne morete zagnati izvorno kodo.
Če namesto tega narediti kaj z njim najprej?
Ja.
David J. Malan: Moraš se
njihovo zbiranje.
In nekdo, zbiranje izvorne kode pomeni -
[Neslišno]
David J. Malan: Točno tako.
Prevedli v ničel in enic.
Zaradi vseh nas, v teh dneh, so računalniki, ki imajo procesorje,
so skoraj vsi, ki so jih podjetje, imenovano Intel, in
Intel Inside, pomeni, da je to beg v notranjosti vašega
Računalnik, znan kot CPU.
In ena od stvari, ki da možgani počne je, da ve,
kako razumeti vzorce ničel in enic.
Ve, kaj se vzorec bitov predstavlja dodatek, kaj
vzorec predstavlja odštevanja, kaj vzorec
bitov predstavljajo tiskanje in ustvarjanje zvočno zvok.
>> Torej na kratko, CPU, skupaj z operacijskim sistemom,
, ki je del programske opreme, ki teče na vrhu CPU,
tako rekoč.
Skupaj ta dva kosa vem, kako delujejo programi, da
mi ljudje pišejo.
>> Torej, če sem šel v CS50 Appliance tukaj, moram odpreti
se urejevalnik besedila, in sem lahko dostop do teh
V nekaj načinov.
Lahko bodisi pojdite v Meni, programiranje,
in potem sem lahko izberite -
nope, ne da meni.
Lahko grem oprema / gedit tukaj, da odprete
moj mali urejevalnik besedila.
Ali bolj preprosto, lahko kliknete to malo ikono na dnu
levi ovinek.
In zdaj sem dobil to okolje tukaj.
To je precej spominja na navadno urejevalnik besedila, s samo
eno ali dve razlike.
Na vrhu, kjer je kazalec utripa zdaj, to je, če
Lahko začnete pisati svojo kodo.
Na dnu je ta stvar imenovano terminala okno.
In kakšne stvari lahko storim v tem
ti terminalsko okno?
[Neslišno]
>> Ok, bom pognal ukaze.
In nekateri ukazi smo zagnali v ponedeljek, so malo
Cryptic na prvi, ampak ls za seznam, cd imenik za spremembe,
rm za odstranitev.
Torej, to je neke vrste old-school način Krmarjenje
Računalnik, ki uporablja le tipkovnice in tekstovnih ukazov,
in ne, na splošno, z miško.
Ampak bomo videli, prej ali slej, to je dejansko nam
malo več moči in malo bolj natančno, s katerimi se
izraziti sebe.
In potem sem na levi strani, smo le, da bo videl,
kot smo začeli pisanje programske opreme, malo povzetek od
Program, ki smo jih napisal v zgornjem levem kotu.
Ampak bomo videli, da spet kmalu.
>> Torej, kaj je naredil nekaj precej enostavno tukaj.
Naj najprej gredo naprej in pojdite na File, Save, in sem samo
dogaja, da kliknete na jharvard tukaj, pa na levi,
jharvard je spet ime za mojo domačo mapo, joj
osebne mape, meni, zdaj pa John Harvard, kot vsi vi
Kmalu bo John Harvard v tem okolju.
Ima to Domači imenik Moji dokumenti in tako naprej,
, ki ga želim rešiti, zdaj pa to sliko noter
Torej bom, da ga pokličete hello.c. Potem sem šel
naprej in kliknite Shrani in kaj zdaj imam tukaj je kartica
imenovano hello.c, toliko kot druge vrste urednik.
>> Torej, zdaj pa grem naprej in začnite pisati program.
int main (void).
In potem sem naredil zadnjič, printf za tisk oblikovana,
("Pozdravljen svet!"
).
Skoraj končana.
Ampak mi manjka še nekaj podrobnosti.
Kaj manjka v tem programu, ki sem jo zares potrebujejo za
je dejansko prevedite?
Ja.
[Neslišno]?
>> David J. Malan: Ja, tako da moram tudi standard
I / O knjižnici.
Torej, to pa je treba iti nad glavno, tako da sem le, da bo
naredite nekaj prostora za njo tam.
In jaz bom storil # include .
In opazil kotne oklepaje tam.
In kot prahi, gedit je malo prijazen do uporabnika, če
včasih malo zmedeno, v tem, da poskuša pomagati vaš
Oči opažati linije z kakšnimi.
Zato je dejstvo, da je moj kazalec zraven tega kotno
nosilec, opazili, kako se je poudariti drugo kotno
Nosilec plus tega.
In to je samo, naj svojo pozornost na dejstvo, da sem
ima simetrijo.
In simetrije pri programiranju je na splošno dobra stvar.
Podobno je, če sem premakniti svoj kazalec na koncu ugotovi, kako
Zaviti oklepaji line up dokazati, da, da, imam odprt 1
in zaprta 1, če se tako izrazim.
>> V redu, in sem lahko naredil še eno stvar.
To ni nujno potrebno, ampak dobra praksa, in sicer
0 vrne.
In return 0 počne kaj za nas?
Ali pomeni kaj?
[Neslišno]
David J. Malan: Ampak ni nič narobe.
In odkrito povedano, da je težko za veliko iti narobe
Program Ta kratek.
Torej, jaz sem samo da zelo jasno, da je vse v redu.
Jaz, človek, ko sem teči ta program, bo verjetno nikoli
glej, da se 0.
Na splošno so te številke, da se vrne iz glavnega
Samo vzredijo svoje glave za ljudi, kadar
gre kaj narobe.
In dobiš malo pop up rekel sistemske napake, 1,
2, 3, ali ne glede na število, ki je bila
je dejansko vrnil.
Torej, kaj je narobe s tem?
[Neslišno]
>> David J. Malan: To ni toliko funkcionalna napaka
vendar estetsko.
Verjetno bi dal v znak za novo vrstico tam na
Ob koncu tega niza, tako da smo dejansko premaknete kazalec
naslednja vrstica, program pa samo izgleda malo lepši.
>> Torej, zdaj pa grem na moj terminalsko okno
in zoom nazaj noter
In ta stvar tukaj, se imenuje poziv.
To me spominja, kdo sem, jharvard @ aparata, kjer je
Aparat je ime računalnika, sem na.
V oklepaju je to Tilda je squiggle simbol, ki
pomeni kaj?
OBČINSTVO: domačega imenika.
David J. Malan: domačega imenika.
Torej, to je samo okrajšava za zapis pravi, da ste v
vaša osebna mapa, v kateri vse datoteke kraju privzeto.
Torej, zdaj, tukaj, lahko vnesete ls za seznam.
In edina stvar, ki sem videl tukaj, v tem trenutku je hello.c.
In to je dobro, ker sem to napisal.
>> Torej, naj gredo naprej in ne bo pozdravil.
In opazil sem, da ne tipkate hello.c.
Namesto tega sem samo tipkanje osnovno ime datoteke, prosim.
In da, kot smo videli v ponedeljek, bo le sklepamo, da želim
c datoteko..
Torej, zdaj sem tipkal, da zdravo.
Zdaj vidim to precej dolgo ukaz in bo še naprej
vidite to znova in znova.
Vendar mora biti jasno, Jek, je beseda, ki jo pravkar pojavil,
To je dejansko prevajalnik.
Znamka je le pripomoček graditi.
To je samo bolj uporabniku prijazen program, ki me reši v
Dolgoročno, ki imajo za vrsto iz neverjetno dolgočasno dolgo
Ukazi, kot je ta.
Torej, lahko zaženete ročno Jek.
Lahko vnesete vse to ročno.
Tako postane zelo dolgočasno.
In tako se je le program, ki poenostavlja naše življenje in
poteka bolj zapletenih ukazov za nas.
>> V redu, kaj pa zdaj datoteko moram imeti
v mojem trenutnem imeniku?
Ne samo hello.c, temveč tudi zdravo.
Torej, če želim teči zdravo, opozarjajo, da sem rekel dot poševnice,
če dot sredstva gredo v trenutni mapi, kjerkoli že ste
so, in nato zaženite program, imenovan zdravo, in res, zdaj,
Imam zdravo svet.
V redu, na vsa vprašanja o poteku ali sintaksa
kaj smo pravkar naredil?
>> V redu, tako da je lahko stvari zarezo znova.
Torej, to je underwhelming, da samo napisati program, ki samo
ne reče zdravo, svet.
Zato smo jo spremenili v ponedeljek povedal, halo, David.
To je malo bolj osebno, ampak ravno tako težko šifre
Prva različica.
Torej sploh ni tako prepričljiv.
Toda obstaja v C funkcije zagotovo poleg
tiskanje funkcije, ki vam omogočajo, da se vnos uporabnika.
In kako bomo to naredili, drugi dan, je bil naslednji.
Preden sem dejansko natisniti nekaj, sem prvič dobil
Nekaj ​​od uporabnika.
Torej, kaj mi to še enkrat.
>> String s, kjer je le poljubno ime, tukaj, na
string, enako GetString.
Torej, kaj je GetString?
Očitno dobi niz, ki temelji na njeno ime.
Ampak kaj je bolj tehnično?
To funkcijo.
Torej je funkcija, ki ne prihaja z C po sebi.
CS50 osebje to napisal.
In tako, da brez tega, ne moreš kar vključuje stdio.h,
Prav tako je treba tudi kaj?
Ja.
Torej cs50.h, ki je le datoteka smo pisali pred nekaj leti.
Mi ga namestili na napravi za vas poleg
vse standardne datoteke.
In tako se v teh prvih nekaj tednih po razredu, bomo uporabili
samo, da bi poenostavili proces gre zelo osnovni
stvari, kot so dobili navodilo za vnos.
Ker, kot bomo videli v nekaj tednih dobili navodilo za vnos v
jezik C, kot je pravzaprav presenetljivo zapletena,
zlasti zato, ker ne veš vnaprej, običajno, kako
veliko stvari si bo tip noter
In če ne veš, koliko podatkov lahko pričakujem, da ne
vedeti, koliko pomnilnika za dodelitev.
In če imate celo kontradiktornost, ki si je poskušal
vdreti v sistem, crash računalnik, no,
na splošno je prvi način napada je, kot sem storil, o
Ponedeljek, vnesite celotno dolgo zaporedje naključnih znakov,
pritisnite tipko Enter, in videti, kaj zlomi.
Ker na splošno, če je program olajšav, ki namiguje na
varnostna pomanjkljivost, kar lahko.
Prav gotovo namiguje na vas, programer, potem ko je
napaka, ampak bolj nevarno, morda so se
povezanih z varnostjo napaka, in na splošno bomo videli, da
to je, kako so stroji ogrožena na ta dan, tako
v svetu spleta in programe na
ukazni vrstici, kot je ta.
>> V redu.
Torej niz je enak GetString.
Torej, bolj konkretno zdaj, kaj linija 6 tukaj?
Torej je funkcija na desni dobi niz,
meni, koliko argumentov?
Ok.
Torej nič.
Malo Razum preveriti.
Trditev, spet je le vhod na funkcijo za spreminjanje
njeno privzeto vedenje na nek način.
Ampak v tem primeru, ne želim spremeniti
obnašanje GetString.
Želel sem, da bi dobili niz.
Zato sem dal ničesar v oklepaju, potem pa sem dal
podpičje demarking konec vrstice kode.
Zdaj, enačaj ne pomeni enako, samo po sebi.
To pomeni odstop, kar pomeni, da naj kar pride
izhodne na desni notranji strani, kar je na levi strani.
>> Torej, na levi strani, smo rekli, da smo prijavljeni
Niz se imenuje i.
In še posebej, smo dodeljen spomin znotraj
ki jih bomo dal bitov, ki predstavlja zaporedje
znake.
Ampak danes smo dodeljena
ali razglasijo za niz.
V redu.
Torej, zdaj, ko sem to naredil, bi rad, da bi zapolnili vrednosti
i, ne pa vrednost Davida.
Torej, to je narobe, zakaj?
Torej, to je samo dobesedno težko kodirane s.
To je rekel "zdravo, s", ki ni tisto, kar si želim.
Torej, lahko to storim.
Odstotek znak ograda, zdaj pa moram
prehaja v natisniti drugo trditvijo.
Spomnimo se, da so argumenti, ločeni s funkcijami
vejice, tako da naslednjič, vejica tukaj sem dal po tem črko s.
In v tem kontekstu zdaj, je je spremenljivka, in printf,
po prejemu teh dveh vhodov -
niz na levi in ​​spremenljive ime je na desno -
da bo zapolnila slednji v nekdanji za nas,
Samo izpisal lep lep niz, ki vsebuje
karkoli že je, da vtipka
>> Torej, kaj je poskusiti.
Going, da gredo naprej in pomanjšanje nazaj
po mojem terminalskem oknu.
Povečajte na dnu tukaj.
Znova vnesite bo pozdravil.
Zvoka se zdi, da so bila ponovljena.
Grem na vrsto. / Zdravo, Enter.
Nič se zdi, da se še dogaja, vendar je na ta poziv
da sem lahko vnesete nekaj podobnega Nate, Enter in sedaj imamo
Zdravo, Nate.
In lahko to storite še enkrat z roba, in tako naprej.
Torej, upam, da zdaj ta program obnaša kot nameravam.
>> No, ne vsi, da je prijazen do uporabnika.
Pojma nimam, kaj se je se pričakuje od mene.
Tako bomo lahko zagotovo očistiti to gor malo.
Naj grem nazaj gor, in namesto le potapljanje in
prosi uporabnika za vrvico, naj jasno povedati
si tisto, kar sem pričakoval.
Torej printf ("Vnesi niz:"
);
Torej ne spremenljivke tukaj.
Ni znaki za odstotek.
Tako enostavno Angleški izraz.
Naj zdaj iti na dno tukaj in znova moj program.
Ampak nič ne zdi, da so se spremenile.
Zakaj?
Moram ga prevedem.
Tako enostavno narediti napako.
Ampak moraš ne samo shranite, vendar
prevesti programa.
In tako, če sem ponovno zagnati, da zdravo, zdaj teče Jek.
Sedaj lahko tečem. / Zdravo. In sedaj vidim "Vpišite niz:".
Ok.
Zdaj je malo bolj uporabniku prijazen.
Nate, vnesite Zdravo, Nate.
>> No, poskusimo še enkrat in začeti razmišljati
O kotiček primerih.
Torej, tako kot v Scratch, vas spodbuja ali pa
spodbujati spec za neke vrste razmišljati o tem, kaj bi lahko šla
narobe, če ne pričakujemo vse, kar si lahko storijo.
Bugs, zato bi lahko nastale.
Torej vpišite niz -
Kaj je kotiček tem primeru?
Kaj je scenarij, da sem programer, ne bi imeli
pričakujemo?
Ja.
Ok.
Pa kaj, če sem tipa v vrsti, kot je ta?
V redu.
Torej, še vedno deluje.
Gramatically nima smisla.
Ampak vsaj program deluje.
>> Kaj je še en kotiček primer?
Nekaj ​​nisem pričakoval.
Ja?
Ok.
Tako bi lahko storil kaj takega res, res veliko število.
Torej, kaj je to tukaj.
Naj pomanjšati za 2. Naj izpostaviti.
Ne morem kopirati in prilepiti tukaj.
V redu.
Torej, ne morem kopirati in prilepiti v tem terminalskem oknu, zato bom
samo simulirajo.
Naj pomanjšati, gre za zavijanje.
Jaz ne grem v to predolgo, saj ne bo
dejansko prekinil v tem programu.
Vendar pa lahko.
Enter.
Ampak to ni.
V redu.
Ampak to je pravi kotiček primer.
In edini razlog, da je ravnala pravilno, tako da
govoriti, je zato, ker CS50 funkcija GetString je dejansko
oblikovana pod pokrovom motorja, kot bomo videli v nekaj tednih,
samodejno dodeli več in več RAM, vse več
pomnilnik operacijskega sistema, ko je opazila, wow,
ste res vnesli nekaj precej dolgo.
No, to je malo belo laž.
Če smo dejansko zaustavljena že kar nekaj časa in sem tipkal v
nekaj podobnega 5000000000 znakov na tipkovnici
tukaj, ali res hit copy-paste zelo malo, smo zelo verjetno
lahko povzroči, da program sesuje.
Samo malo težje, da simulira, da je s končno
časa.
>> Kaj drugega kota tako, da bi lahko poskusil?
Ja?
Ja.
Torej, zakaj ne bomo odgovorili nič?
Tako smo dejansko morali sprejeti nekaj ukrepov, saj bi v nasprotnem
Program se bo tam sedel utripa ves dan.
Ampak, če sem Enter -
V redu, zdaj pa še vedno izgleda narobe.
Ni crash, ampak morda je zdaj priložnost, da se
začeti izvajati bolj strog program
ki dejansko preveri.
In če je niz, stavek, beseda, ki sem
vnesli v ima dolžino 0, no, mogoče bi moral kričati hotelu
uporabnik, ali mu povedati, ali ji vnesti niz še enkrat, tako da je
smo dejansko dobili tisto, kar izgleda pravilno obnašanje in ne
Samo popoln nadzor na moji strani.
>> Vprašanje v hrbet?
Decimalno število.
Tako naj bi poskušali tudi to.
1,10000005.
Izgleda, da se bo to dejansko samo delam prav.
In to je pravzaprav pričakovano.
Čeprav morda smo vnesli to številko tam, ali
večje število prej, ko smo ugotovili, da tipkate uporabnika
vhod in smo z uporabo GetString funkcijo, ne
glede na to, kaj sem tipkanje zgleda kot število.
Spomnimo, da je v skladu z ASCII, vse, kar je na vašem
Tipkovnica ima številčno vrednost, ki se lahko preslikan
znak, znak.
Torej v tem primeru, čeprav bi jaz vnesite številko,
Računalnik se bo spomnil, da se tako izrazim, kot niz -
nekaj, kar izgleda kot nekaj, vendar je
dejansko ni več.
Ampak to je pravzaprav popoln segue, ker zdaj smo lahko
dejansko prehod za pisanje programov, ki
uporabljajo druge vrste podatkov.
>> Torej, poleg uporabo znakov, ali bolje, poleg uporabo nizov,
zavedati, da imamo druge vrste podatkov v C kot tudi v
drugih jezikih.
Char, kot že ime pove, je le en sam znak.
Plovec je plavajoča vrednost točke, in da je samo fancy
besedami realno število - kar je decimalno vejico
točka v njej z nekaj številkami, levo in / ali desno.
Int je celo število, ki je prav tako kot število 123.
In zdaj bolj zanimivo, so stvari, kot so dvojno.
Kaj smo rekli dvakrat je bil nazadnje?
To je 64, kajne.
Torej, ker ponavadi Plovec je 32-bitni -
zato je tako dolgo v spominu, ki jih uporablja 32 ničel in enic, da
predstavljajo vrednote - zakonska je dobesedno dvakrat, kar
pomeni, da se lahko bodisi zastopajo večje številke, ali
lahko predstavljajo bolj natančne številke.
Tako imate lahko več številk za decimalno vejico, vendar
kot je kolega povedal v videu, celo nekaj preprostega
konceptualno kot 1/3, ni mogoče natančno zastopa
računalnik, ker na koncu zmanjka bitov, in
Zato lahko le to .33333333 toliko krat, na
kateri točki boste morali povedati, da sem ven za zastopanje
prostor, moram samo call it dan in jo zastopa
nekoliko nenatančno všeč.
In dolgo dolgo -
neumno ime, ampak to je zato, ker je podatkovni tip znan kot
dolgo v C, ki je pogosto po naključju 32 bitov, tako kot
int je 32 bitov, ampak dolgo časa je
64 bitov na splošno.
Torej, to samo pomeni, da lahko predstavlja večji
številke, kot to.
>> V redu.
Torej, če bi dejansko želeli začeti predstavlja stvari, smo
morda potrebujejo bolj zapletene vrste, in
zato imamo niz.
Torej, v knjižnici CS50, da datoteka z imenom cs50.h, smo
dejansko razglašena za vrsto podatkov, če se tako izrazim, ki se imenuje niz
vendar niz dejansko ne obstaja.
To je spet ena od teh plasti bomo lupine
nazaj v tednu ali dveh, in ga vrgel stran, in dejansko
poglej pod pokrov motorja, kaj dejansko je niz, in
kako je to predstavljal.
Mi smo tudi bo pogled na logičnih vrednosti.
>> Torej, kaj je bool v okviru Scratch?
To je resnična ali neresnična.
Torej, to je samo vrednost, ki je resničen ali neresničen, vklopiti ali izklopiti, 1 ali
0, vendar si želite ogledati svet.
Torej v C, zahvaljujoč CS50 knjižnice, kar
vključuje novo knjižnico, ki je pod pokrovom, smo
dostop do vrste podatkov, ki se imenuje bool, ki bo
Dobesedno nam omogoča, da določite vrednosti true ali false
stvari v programu.
>> Torej, gremo naprej tu in napišite majhen program, ki
naredi nekaj številk, ki vključuje namesto tega.
Naj se vrnem k CS50 napravo, naj gredo naprej in
ustvarite novo datoteko z imenom tu -
recimo, nekaj preprostega, kot math.c.
V redu.
In zdaj gredo do vrha mojem programu sem
storili ponavadi -
# Vključujejo , tako da sem lahko uporabite
printf, int main (void) -
bomo prišli nazaj, na koncu, kar pomeni, int
tukaj, kaj pomeni nična tukaj, ampak za zdaj samo vem, da
boste morali začeti programe, kot je ta.
Zdaj bom, da gredo naprej in rekli nekaj malega
drugačna - printf ("Daj mi številko:"
).
Potem bom naredil int n = GetInt, saj
Izkazalo se je, GetInt je še ena funkcija v knjižnici CS50
poleg GetString.
In zdaj bom naredil nekaj tako neumnega, kot je "zahvaljujoč
za% d "za desetiško celo število, nato vejico n,
nato vrne 0.
Torej, še enkrat, vrne 0 nima nič opraviti s številko sem
prosi za uporabnika.
Samo pomeni, da na koncu koncev, verjetno, je dobro.
>> Torej, pusti me na moj terminalsko okno tukaj.
Naj napišete make matematiko, vnesite.
In kaj je narobe.
Naredite matematika ne deluje.
Tukaj je prvi od naših sporočil o napakah.
Zakaj?
Malo skrivnosten, ampak -
Ja.
Torej cs50.h.
Torej, še enkrat, še posebej zgodaj, boste napisali svoj prvi
Program za pset 1 v oddelkih, v uradnih ur, in
odkrito rečeno, bo to velika včasih kaj te stvari
so dejansko rekel.
Vendar boste spoznali zelo hitro začnejo padati
na segmente, s katerim ta pomeni, da ste končali 1
od # vključuje na vrhu datoteke.
In Jek, prevajalnik, ki vas obvešča o tem s
pravi, ne fancifully, implicitno izjavo
Funkcija GetInt je neveljavna.
>> V redu.
Torej, kaj to pomeni?
To samo pomeni, da si implicitno prijavljeni v GetInt
Občutek, da niste izrecno navesti.
Na izrecno izjavi, int, se morate naučiti
Jek, da obstaja.
In zelo preprosta rešitev za to je, da se učiti
vključno s to drugo datoteko, cs50.h, na
na vrh datoteko.
Ker dobesedno, kar # include ne pove, ali je Jek
precej, da bi našel datoteko z imenom cs50.h, kopiranje,
ga prilepite samodejno na vrhu mojega programa za mene,
in potem pretvarjanja izvorno kodo ničel in enic.
Ampak to bi seveda bilo zelo dolgočasno, če smo ljudje imeli
iti kopiranje in lepljenje teh velikih datotek ves čas,
# vključujejo tako preprosto pa vse, ki se samodejno, brez
muddying svoj zbornik z nekoga drugega knjižnici.
In Knjižnica je samo še ena datoteka, ki vsebuje naloge in
druge stvari, ki je nekdo drug napisan, da smo
vplivno zaradi nas samih.
>> V redu.
Poskusimo še enkrat.
Naredi matematiko.
Enter.
Dobro.
Tako se zdi, da so delali.
Torej, kaj mi zdaj prost matematika;. / Math.
Vpišite mi daje številko 123.
Hvala za 123.
Zdaj pa poskusimo še kotu primer.
Niz je zelo radodarna, saj
Niz je lahko karkoli.
Lahko videti številke, izgleda
znaki, izgledajo kot besede.
Ampak int je int.
Torej, zdaj, če sem si težko, in je rekel: »Daj mi
številka, "kaj pa če sem poskusil narediti nekaj podobnega 0,1?
No, to je številka, in to v skladu z
slovnica sem tukaj, ampak pod pokrovom motorja, jaz sem
Tečaj uporabo funkcije GetInt.
>> Torej, poglejmo, kaj se bo zgodilo.
Vstopi, poskusite znova.
V redu.
Naj bo težko in šele zadeti nastopiti še enkrat.
Enter, Enter.
Torej, zdaj se zdi, da GetInt je malo več
močnejša od GetString.
Mi, osebje, ki se izvaja na tak način, da če opazimo
ste nam ni dal int - in int je decimalno število
vsebujejo ničle, tisti, dvojke, trojke, štiric, petke, šestic,
sedmice, osmice, ali devetke.
In to je to.
Ni decimalki, brez znakov, brez ločila.
Zdi se, da moramo sodelovati.
Torej, naj poskusim 4, 5, 6, in da mi pride skozi.
Torej res, da je analni tukaj, bi najbrž rekel: »Daj mi
celo "za posredovanje uporabniku
točno to, kar nameravam.
>> Zdaj pa pomislite pod pokrovom.
Ne bomo gledati, kako se izvaja cs50.h danes,
da knjižnico.
Ampak, če ga ohranja rek retry, retry, retry, kaj programiranje
zgraditi sem čemer bi pod pokrovom na
izvajajo to?
Torej samo zanka, kajne?
Eden od najpreprostejših idej, ki smo videli na Scratch.
The Forever konstrukt, je konstrukt ponovitev.
Domnevam, da v tem programu, pod pokrovom motorja, čeprav
čeprav je bilo napisano v C in ne vrag, da to počne
nekaj, kar ti ustreza večno, če se uporabnik ne
vnesli v celo število, torej retry, retry, retry, retry, tako
nato pa na koncu, ko bomo dobili celo število, potem
premakniti iz te zanke.
>> Tako lahko kaj druge funkcije, ki jih uporabljamo tukaj v knjižnici CS50 je?
No, nekako očitnih tiste, temelji vsaj na
tipi podatkov, da zdaj vemo, obstajajo.
Izvedli smo GetString, GetInt, ampak po vsej
v prvih tednih mandat, lahko uporabite tudi GetFloat in
GetDouble in GetLongLong, da bi dobili ravno
vrste podatkov, ki jih želite.
Ker je ključna podrobnost v tem, da za razliko od nekaterih jezikih
kot Python in Ruby, če vam ni nujno, da
ugotovi podatkovni tip spremenljivke -
nimaš kaj povedati, računalnik, kakšne stvari
boš dal v spremenljivko -
v C, da moraš biti vedno tako natančno.
Torej, če želite spremenljivko z imenom n, kos shranjevanje
da se v tem primeru zgodi, da je 32 bitov z dogovorom, da
moram povedati, da ti računalnik bitov
bo shranite številko -
ne narave ni niz, ne plavajo.
In ta obravnava vprašanja smo uspešno
zašel v zadnjem tednu.
Če smo z ničle in tiste številke, ki zastopa, ne samo
številke pa AS in BS in Cs, kako v svetu
Računalnik bo vedel, da je ta vzorec bitov dejansko
predstavlja številko 65, v nasprotju z zastopa
Pismo, ki je po naključju, v skladu s
ASCII, spomnim, je bila enaka 65?
>> Torej te vrste podatkov zagotoviti kontekst na računalnik, tako da
da se ve, če je treba razlagati tako, da ti bitov
int ali kot niz.
Vsa vprašanja, nato pa na to?
Ja?
David J. Malan: Dobro vprašanje.
Če vzamemo ven stdio.h, da shranite -
Naj gredo dol v terminalsko okno in zaženite da matematiko, zoom
in vnesite -
Zdaj sem dobil drugačno napako, ker sem implicitno
razglasi, kaj deluje zdaj?
Printf.
Torej, zdaj sem ustvaril nov problem, katerega rešitev
v bistvu enaki.
Moram dati nazaj.
OBČINSTVO: [neslišno]
David J. Malan: Oh.
Torej, če vzamem ven -
Prav, ja.
Torej, če sem odstraniti vključitev standard I / O knjižnice navzgor
tukaj, in potem praviš, da če se znebim printf, se
printf znebiti?
Da.
To bi moralo delati, ker nisem več s katerokoli - Ops.
Sem samo ležati?
Oh, v redu.
To ne bo delovalo, ker nove napake smo pravkar uvedla.
In ta je malo bolj samoumevno.
>> V čem je težava?
Neizkoriščene spremenljivka n.
Torej je ta napaka posledica naše ko nastavljen
aparat še posebej pedanten, da res nadrl
da za vse možne napake, čeprav je kar nekako
ni usodna napaka, kot je ta - ali je res tako velika
ravnati, da sem dodelil int, dal nekaj v njem, nato pa
Samo ni storil nič s tem?
Torej, funkcionalno, št.
To se ne bo prekinil program.
To je samo malo butast, kajne?
Ni vrednosti, ki je zaprosil za to številko, shranjeno
je v spremenljivko, če si ne bo nikoli ničesar
z njim, ali ga natisnete ali shranite.
Torej, v tem primeru Jek je priznalo veliko, in
to je rekel neuporabljenih spremenljivk n.
>> Tako bomo lahko to popravimo, če res želimo.
Ampak spet, to ni dobro načrtovanje zdaj.
Zato sem lahko naredil to -
pojdi dol, mi počistiti zaslon, da matematiko.
To deluje.
Sedaj lahko vodim svojo matematiko program, se prispevek -
dobro, da je to slabo.
Meni vnosa in da je vse, kar počne, v tej zadevi.
>> Torej, dejansko, poskusimo še en primer, ki ga kotiček
ne mislim prej.
V tem primeru - tukaj, pojdimo nazaj k tistemu, ki je
malo bolj uporabniku prijazen.
Naj grem nazaj in da deluje matematiko znova.
Joj, kaj sem naredil narobe?
Moram nazaj roll naprej.
Ok.
Zdaj smo spet v prvotnem stanju, kjer je vse
upam, da je dobro.
In zdaj, če sem teči matematike, 123 zdi, da dela.
Ampak to ni res učinkovit dokaz, da samo reči
OK, to deluje.
789, ki deluje.
Čas za oddajo.
Zato, ker je v drugih primerih kotiček tukaj.
Niz ni res, da nam veliko težav z vpisom
cel kup znakov.
Kaj pa, če sem tip v to?
S pritiskom na številko 1 cel kup, cel kup tukaj -
V redu, to je že malo dolgočasno, zato bom
ustavi tukaj in bom pritisnite tipko Enter.
>> Kaj za vraga se je zgodilo?
Torej je to dejansko mogoče pojasniti.
Torej si jo vzeti kot binarna?
Dobra misel, ampak ne, to ni dejstvo, da jo je
kot binarna, ker je res, da je bilo kar nekako
naključje.
To lahko naredimo še enkrat.
Torej ni 2 v binarnem sistemu, ki je
verjetno dovolj anyway.
Enter.
Tako, da ni bil problem.
Kaj še?
Točno tako.
>> Torej, mislim nazaj na to, kar je dejansko int.
To je 32 bitov, ki so skupaj razlagati
kot število.
Če imate 32 bitov, kar pomeni, da vsak bitov lahko
0 ali 1, 0 ali 1.
Torej to pomeni, da je dve možnosti za to bit,
dve možnosti za to, dve možnosti za to
malo - tako, da je 2-krat 2-krat -
tako da je 2 na 32 oblasti, je skupno število
permutacije iz ničel in enic, če imate 32
ograd, ničle in enice, ki je pred vami.
Torej, če imam 2 do 32, matematično, ki je kaj?
Torej je veliko.
To je 4 milijarde EUR, gor ali dol.
In 4000000000 ne zdi, da je tisto, kar je bila natisnjena tukaj.
V bistvu je to videti bližje 2000000000.
Ampak to ni naključje.
Dejstvo, da je računalnik napačno razlagal svojo ogromno število,
moja velika zaporedje enic in potem mi veliko zaporedje parih,
kot približno 2 milijard, je pojasnil, kako?
Tam je omejitev na notr.
Tam je zagotovo največja vrednost, ki jo lahko predstavlja.
Ampak to je ponavadi 4 milijarde EUR, kajne?
Če 2 do 32, je približno 4 milijarde EUR, da se zdi, kot
To je največje število.
Torej ni ostanek, ampak dobra misel.
Negativne številke.
Torej, če imate 4000000000 možne stvari, ki jih lahko
zastopa v teh različnih permutacij 32 0s in
1s, no, lahko sklepamo, da bi mi ljudje radi
predstavlja ne le pozitivnih celih
vendar negativni cela števila.
In res, da je predpostavka, da je C naredi.
Torej s 32-bitno, lahko predstavljajo približno 2 negativni
milijarde vso pot do pozitivnega 2000000000.
In tako v tem primeru, kaj smo res videli le
robu zmogljivosti našega celo število, in smo tako
govoriti, prekoračil celo število.
Poskušali smo Strpati več bitov v njem, kot si lahko dejansko ustreza.
Torej končni rezultat je, da smo v bistvu vse 1 bitov.
Smo zrcaljeno vse naše bitov na smo poskušali predstavljati
največje število možnosti, vendar je očitno še zdaleč ni
dovolj velika, da predstavlja dve stvari, ki sem jih pravkar vtipka
Ja?
OBČINSTVO: [neslišno]
>> David J. Malan: Dobro vprašanje.
Zakaj ne moreva predstavljati, da se negativni
prijavite kot le znak?
Tako smo lahko absolutno in še bi lahko shranite
Dodatna bit.
Ampak ste še vedno dogaja, da imajo, ki bi predstavljal pomišljaj in
da se bo to stalo vsaj nekaj,
verjetno malo.
Torej, ja, lahko imamo 32 bitov, ki se uporabljajo za našo številko, zdaj pa
Potrebujemo še nekaj, ki se uporablja za naše pomišljajem
simbol, znak minus.
Torej, zdaj imamo 33 bitne vrednosti, kar lahko storimo, je pa
samo ne tako se to dela.
Naredili smo sodbo klic leti, 32 bitov je nekako
merska enota tukaj.
Tako se bomo, da uporabite eno od teh bitov učinkovito
predstavljajo negativnosti in 31 bitov za zastopanje številko.
Druga vprašanja?
V redu.
To je veliko.
Zakaj ne gremo naprej in vzamemo 5-minutni odmor tukaj?
>> V redu.
Torej, še enkrat, da ne bo overemphasize matematične aplikacije
programiranja, kaj je samo drobovja off to en primer
preden gremo v drugih konstruktih, samo zato, ker
bo ponazorjena nekaj skupnih točk spotike za nekatere
Osnove, ko gre za pisanje programov.
V tem primeru gre aritmetične izraze, ki so del
Zanimivo pomen za sintakso.
>> Torej, to je samo formula, s katero bomo lahko pretvorite
temperature od Fahrenheit v stopinjah Celzija.
Če se ne spomnite, to je samo formula.
Torej, če priključite Fahrenheit vrednosti 32 stopinj, kar je
zamrzovanje, da se dogaja, da je 32 minus 32 je 0, in sicer,
0 v stopinjah Celzija, je tudi zamrznitev.
Tako hitro sanity preverite, ali je - to je znano formulo.
Naj iti čez na aparatu, čeprav, in začnite
pisati program, imenovan, kot, f2c, "Fahrenheit za
Celzija dot c ".
In na vrhu tukaj, bom začnete z # include
stdio.h, in jaz bom naredil int main (void) in
spet vrnemo v prihodnosti, kar pomeni, int
tam in kaj pomeni, da je ničen.
In sedaj mi daj in izvaja program, da
v bistvu pa je to konverzijo za nas.
>> Torej printf, recimo, temperature v Fahrenheit.
In potem mi gredo naprej in dobili vrednost od uporabnika.
Kakšno vrednost naj dobim od uporabnika, če hočem
jim, da mi temperaturo v Fahrenheit?
Ja?
Kaj bi predlagali?
Ja.
Torej plovec počuti precej razumne.
Imamo spet le nekaj možnosti, da se
smo videli doslej.
Imamo stvari, kot char, double, float, int, dolgo časa,
int, string.
Torej od teh, float zdi zelo razumna.
Mi lahko uporabite dvojnega, pravico, ker če res želimo
predstavljajo človekova na temperaturo -
98,60000 -
da bi nam 64 bitov za to, vendar je občutek
pretiravanje pri temperaturi.
Torej, pojdiva s plovcem.
Zdaj moram spremenljivke.
Samo ohraniti stvari preproste, grem, da ga pokličete f, but I
bi prav tako pravilno imenujejo temperatura,
ampak ali je vse v redu.
Torej float f = GetFloat.
Takoj, ko sem se odločila za uporabo GetFloat, čeprav sem
morali narediti eno korekcijo.
Ja.
Zato moramo # include , sicer prevajalnik je
bom kričati na nas.
Zdaj, ko imam plovec, naj gredo naprej in
pretvorbe.
>> Torej, najprej, mi tudi priti v navado tukaj za
komentirajo mojo kodo.
Torej, še enkrat, komentar je le zapis za človeka, ki je
ni del programa sama po sebi, ampak je ena, vam pomaga
razumem, kaj si storil naslednje jutro ali naslednji
mesec, pomaga tvoj fant poučevanje razumem, kaj si naredil
ali kaj naj bi storili, tako da je
na splošno zelo dobra praksa.
Vsakih nekaj vrstic kode, napišite komentar
sami ali vaš kolega.
Torej, tukaj bom rekel, "Vprašaj uporabnika za temperaturo."
Ni nujno, da je celoten stavek, le kratek stavek.
Toda ideja komentirati C je, da vsak od vaših
Pripombe bi ti pooblaščajo - ali, recimo, TF ali sodelavca -
prelistati svoj program in natančno vedeli, kaj počne, ko ni
Toliko branje kodo, vendar z branjem pripombe, ki
mora biti kratko in jasno.
V redu, zdaj pa grem naprej in reči, "spremeniti
Fahrenheit v stopinjah Celzija. "Torej bom, da gredo naprej in ne,
recimo, float c.
Še naprej si bomo Celzija kot plavajoča vrednosti točke.
>> In naj bo zabodel to.
Formula je spet tu.
Kot 5/9 krat F minus 32.
Torej, kaj je to.
Torej 5 deljeno z 9, minus -
Ups, sem zamočil že.
Times.
Torej 5/9 krat F minus 32.
Torej F minus 32, podpičje.
In zdaj, tukaj, grem, da gredo naprej
in pravijo, tiskanje rezultat.
In ta del je enostavno. Printf.
Kako naj grem o tiskanju to?
No, lahko bi rekel "To število v stopinjah Celzija je% f \ n"
Samo za nekaj estetike.
In kaj potem vrednost ne želim, da priključite tukaj je printf
Drugi argument?
Ok.
Torej samo c.
Torej bomo začeli s tem in potem samo vrne 0.
Še enkrat, to nima nič opraviti z matematiko.
To samo pomeni, da je vse v redu.
>> Zdaj je to res, je ta program?
V redu.
Tako sem naredil nekaj napak.
Tudi če nimate pojma, kaj je programiranje lahko razvrstite
hrbta sklepata na osnovni šoli, kar
Napake tukaj lahko.
Kaj je ena izmed prvi?
OBČINSTVO: [neslišno]
David J. Malan: Ja.
Torej nam manjka oklepaje.
To je bilo namerno, da sem v oklepaje keynote
potisnite tukaj, ker je pravzaprav ta pojem, da
poslovanja ali vrstni red, po katerem nekatere operacije -
razmnoževanje -
imajo višjo zavezujoča, imajo večjo prednost, kot stvari
kot dodajanjem ali odvzemanjem.
Tako smo naredili ta leta samo zato, da bi natančno jasno
kaj matematične operacije je treba najprej storiti.
Torej bi se verjetno posnema točno to.
V nasprotnem primeru se računalnik verjetno bo poskusil narediti
nekaj takega razkoraka 5 do 9, nato pomnoži F, nato odštevanje
32 iz vso stvar.
Ki ni v resnici, kaj želimo narediti.
Torej parenthesize.
Naj dodam svoje oklepaje, tukaj, tukaj oklepaje.
Dajmo to tukaj.
Tukaj sem opazil še eno napako, ki sem ga na tej poti.
Ja?
OBČINSTVO: [neslišno]
>> David J. Malan: Ah.
Dobro.
Torej smo dejansko imajo enako stevilo
Delitev vprašanje od prej.
I popraviti, da vidimo, kaj se je simptom je.
Vendar pa bomo morali popraviti 1
druga napaka.
Ja?
OBČINSTVO: [neslišno]
David J. Malan: Da.
Torej, neumna napaka sem se, vendar zelo pomembna.
Računalnik se ne bo kar zatiska oči in pustite
jaz uporabljati kapitalsko F, ​​ko sem dejansko spremenljivka deklarirana
kot male f tukaj, v skladu 8.
Torej moram popraviti v vrstici 11 mojih kapitalizacijo, ki
Malo prej je bil kapital F po pomoti.
Kaj pa tukaj?
Če bi se to lahko male, kot tudi?
To bi moralo biti, ampak to je naključje.
To je% f nima nič opraviti s spremenljivko.
Torej, samo, da je zelo jasno, tukaj, naj gredo naprej in
preimenovati, na kratko, "temperaturo." Naj preimenovati
Ta "temperatura". Naj ne preimenujete to.
Ker je spet% f globalno pomeni, "plava vrednost točke."
Nima nobene veze z mojim spremenljivke.
Toda "temperatura" Povsod je le malo Razvučen,
tako da bom šel nazaj v mojo malimi črkami "f" s.
>> Zdaj pa mi daj dol z mojega okna tukaj.
Naredite f2c -
ki je bila spet poljubno ime, sem
je s to sliko.
Zdi se, da so pripravljeni.
Naj teče f2c.
Enter.
Temperatura v Fahrenheit - naredimo preprost 1.
32.
OK, pravilni.
Ampak, če bom zdaj naredil 212 za temperaturo -
Prekleto.
V redu.
Torej, očitno ne popravi, če je vaš TF poskuša
vsaj dve vrednosti.
Torej, kaj je problem tukaj?
No, ti že dal prst na to, kaj je težava.
Toda zakaj je tako?
Do tu, ko delam math 5 deljeno z 9.
Torej konceptualno, to je popolnoma pravilna.
Popolnoma v skladu s formulo.
Toda računalniki samo to tisto, kar si
jim povedal, da ne.
In kaj smo dejansko povedal računalnik tukaj
razdeliti celo število 5 jih celo 9
in mi rezultat.
Problem je, čeprav, ko vam delitev na podlagi podatkov
tipi, proizvodnja je enako vrsto podatkov kot surovine.
In tako, če sta oba vhoda ints, proizvodnja bo
za int.
In tako 5 deljeno z 9, je točka nekaj.
Toda kaj je najbližje celo točko kaj?
Torej, to je dejansko 0.
Tako kot smo razpravljali v ponedeljek, vse po decimalko
točka postane okrnjena.
To postane le vrgli proč.
Torej, to je popolna napaka, ker sem morda tudi samo
pomnožimo vse po 0 tukaj.
>> Zdaj lahko to popravimo na več načinov.
Jaz bi to storil.
5,0 deljeno z 9,0.
Tehnično, jaz sploh ne potrebujete, da to storim.
To pa zadostuje, da samo, da eno od številk float -
ali dvojno - s tem da decimalno vejico tukaj.
Ker to, kar se dogaja zdaj, ko si delimo celo število s
float ali dvakrat, računalnik bo za uresničitev
oh, eden od teh je bolj natančen.
Naj napačno na strani, ki vam daje večjo natančnost, kot
ste nameravali.
Tako bo pretvoril rezultat -
se bo vrnil rezultat kot plavajoča vrednosti točke kot tudi.
Torej bi to delovalo.
To bi delovalo.
In tu je še en mehanizem, ki ga bomo videli v
podrobneje naslednji teden.
Lahko dejansko, kot programer, povej računalniku
dejansko zdravljenje enega vrsto podatkov, kot
da bi bili drugi.
>> Tako sem lahko dejansko narediti.
V oklepaju, lahko rečem, nekaj podobnega (float), odprt
paren, blizu paren.
In to je tisto, kar se imenuje "casting". Spet več
o tem naslednji teden.
Ampak to je samo programsko način pripovedovanja
Računalnik, ja vem, 9 je celo število ali dolgo.
Vem, da to ni plavajočo vejico vrednost.
Toda zdravljenje je kot tako nekako.
Torej, da odda vrsto podatkov pomeni pretvorbo
od enega do drugega.
Odkrito povedano, je to le malo grd, zato bi predlagal, gremo
nazaj na prvotni predlog, da preprosto pretvorbo
te stvari plavajočo vejico vrednosti ročno.
Ker zdaj je samo zelo jasno, kaj se dogaja, in
to ni vse, kar moteča.
>> Torej, kaj je zdaj iti nazaj v svojo terminalsko okno.
Naredite f2c.
Naj gredo naprej in prost dostop to.
In, kot stran, boste dobili dolgčas tipkanje ukazov
spet in spet, se zavedaš, da računalnike, kot je Linux tukaj,
ponavadi zelo pameten.
In če sem udaril gor, gremo lahko skozi mojo celotno zgodovino
ukazi, gor in dol.
Torej v tem primeru tukaj, sem lahko šel gor za zagon, da f2c.
Jaz sem pa kričala, ker sem to storila pred sekundo.
To je že do datuma.
Sedaj lahko tečem f2c znova.
Poskusimo 32 Fahrenheit.
Zdaj pa poskusimo 212 Fahrenheit.
>> Fuj.
Zdi se, da delo.
No, to je dobro, vendar se mu zdi nekoliko samovoljna, da
Jaz prikazuje šest številk po pikami.
Imam prav?
Če ste oseba, ki je vreme na televiziji, si nekako doofus
Če berete temperaturo
Ta stopnja natančnosti.
Torej, kaj je to poenostavitev.
Torej, kaj je dejansko šel gor, da mi printf.
In ja, želim plavati.
Ampak jaz želim zdaj določiti natančnost.
In jaz bom se malo kratko.
Jaz bom rekel, da mi eno točko po decimalki.
Torej, namesto da pravijo% f, bom povedal% .1 f.
In to samo pomeni, da mi eno mesto
decimalno vejico.
V redu.
Poskusimo še enkrat.
Naj ponovno zagnati ga po pripravi.
In zdaj sem tip pri 32, in sem dobil nazaj
bolj jedrnat vrednost.
In lahko sem tipa, zdaj, 212, in dobili nazaj več kratka
vrednost, kot dobro.
In tu je drugih stvari, ki jih lahko storite s printf.
Lahko dejansko določa, kako široka mora biti številka.
Če želite, da oblazinjenje na to, da lahko z desno poravnati ali
levo poravnati vse vaše številk ali
poskusite središče stvari.
Torej zavedaš, da so majhni triki lahko storite tukaj.
Ampak samo omejijo na formatne kode,
kot da imamo tam.
>> Torej, glede tega vprašanja po prednostnem.
To je zelo dolgočasno miza šel skozi metodično.
Toda zavedati, da so avtorji v C prišli do
pravila, ki določajo, katere imajo operaterji višje
vrstni red, bolj zavezujoča moč, kot drugi.
Torej, medtem ko je v osnovni šoli, smo na splošno vedel, da je bila
množenje in deljenje, nato seštevanje in odštevanje,
še nekaj drugih stvari.
V svetu programiranja, tam je veliko
daljši seznam stvari.
In to ni nekaj, kar je vredno zapomniti zdaj.
Boste dobili aklimatizirajo, preden dolgo.
Toda tako kot v osnovni šoli, oklepaje splošno rešitev
so vprašanja, s tem da prednostne super jasno, na
Računalnik in podobni človeški, kar je bilo predvideno.
Tako da to le malo list goljufija tam.
Vendar je večina teh informacij ne bomo prišli do kar nekaj časa.
>> V redu.
Zdaj pa hitro in se oddaljiti od teh neumnih
Matematični primeri.
Še vedno uporabljajo iste osnove, ampak začetek
izražanje sebe malo več kot Scratch.
Torej v nič, smo imeli teh logičnih izrazov.
In v angleščini Logični izraz je kaj?
Drži ali ne drži.
To je nekaj, kar je ovrednoten kot resničen ali neresničen.
1 ali 0.
Vklop in izklop.
Karkoli želite, da ga pokličete.
Zdaj v Scratch, koščke sestavljanke videti takole.
In to je kombinacija, na dnu tam, od 3
puzzle kosov.
Ena povezavi -
nekaj, kar je prazno in prazna.
In še dve logični izrazi znotraj nje.
Torej lahko gnezdo logični izrazi, da bi dobili več
zapleteno logičnih izrazov.
Na primer, če je to soboto, in je lepo
vreme, potem pa gredo ven.
Ali nekaj takega samovoljno.
Tako se lahko pridružite logičnih izrazov, naj pripravi
Večja resnica vrednost, ki temelji odgovor
na manjših.
>> Zdaj, v C, na srečo, to je preslikava
pravzaprav zelo preprost.
Oklepaji pomagajo, da se stvari jasno tukaj.
&& Je tisto, kar pomeni "in". Torej, to je, kako
bomo spremeniti te bloke od začetka do C.
In pod pogoji, smo videli v Scratch, na levi strani
strani pa, da jih bom lahko kup podobno v C. Če je x manjši
od y, potem pa to.
Sicer če je x večji od y, potem to.
Sicer je logično, da morajo biti enaka, tako pravijo,
da so enaki.
Tako smo lahko zdaj začnete graditi te stvari.
>> Torej, kaj je to primer.
Naj odpre datoteko, ki je na spletni strani seveda je to
Napisal sem vnaprej.
To se imenuje nonswitch.c.
In bomo videli, zakaj v trenutku.
Torej, v tem spisu - nonswitch.c--
najprej zavedati, da obstaja cel kup
Komentarji na vrhu.
To je samo razložiti ime datoteke, kar je
ne, in tako naprej.
In to očitno kaže na uporabo logičnim IN-ing -
conjoining 2 izraze.
>> Torej, da vidimo, kako ta program deluje.
Jaz tudi moji dve datoteki, cs50.h in stdio.h.
Če bi se pomaknite navzdol, zdaj pa s programom, je malo dlje
kot smo napisal prej, ampak lepo berljivo.
Zato sem najprej natisniti na uporabnika, na liniji 18,
"Daj mi celo število med 1 in 10". Tako
da je tam.
Zdaj sem dobil celo število.
Toda zavedati, da GetInt - zelo preprosta.
To je le, da bo dobil int.
To se dogaja, da se zagotovi, da ne dobite int in ne
niz ali float.
Ampak to se ne bo naredil kakršnokoli preverjanje meje.
To se ne bo izločiti številke, da je med
določenega obsega.
Zato moramo izvesti, da nas.
Torej, tako kot v Scratch, kjer sem lahko naredil zvezo
dva izraza, lahko storim to v C, kot sledi.
Če je n večji ali enak 1, n pa je manj kot in
ali enaka 3, bom zelo samovoljno odloka, ki
Številka za majhno število.
Samo zaradi izjave.
If n je med 4 in 6, print "Izbral si medij
številko. "Else če je n med 7 in 10, print" Izbral
Veliko število. "else print" Če izberete neveljavno številko. "
Ker je logično, da se sledi, če smo se
izčrpala našo ponudbo.
>> Torej zavedaš, da to ni prav, kako pišemo več ali
enako v matematičnem razredu.
Imam prav?
Ti ponavadi pripravijo tako, s črto pod njo.
Ampak ni tako ključnega pomena na moji tipkovnici.
Torej, simbol v C za izražanje večje ali
enako je dva znaka in simbol za manj kot
enako ali je dva znaka, kot dobro.
V redu.
Torej, če sem teči ta program, boste verjetno lahko uganiti, kaj je to
naredili.
Če grem naprej in da nonswitch, Enter.
In potem teče nonswitch.
Daj mi številko med 1 in 10.
Jaz grem, da ga 11.
Izbral sem napačen številko.
Naj poskusim s številko 3.
Izbral sem manjše število.
Zato je dokaj enostavna.
>> Kaj, če želim spremeniti obnašanje tega programa in
narediti nekaj drugačnega namesto tega?
Naj gredo naprej in to povem.
Naj se znebite vsega tega.
In naj povem, če (n == 42).
In potem se bom, da gredo naprej in rekli print "Izbral si
Pravi odgovor. "Sicer se bomo, da gredo naprej in reči,
printf ("Izbral
napačen odgovor ");. redu.
Samo zato, ker.
>> Zdaj pa lahko nekaj točk naredimo tukaj.
Ena, nisem tip simbol, ki bi mislite, da je
Najbolj razumna.
Ko sem želel preveriti enakost, se izkaže, da ne uporabljate
enačaj.
Če namesto tega uporabite enako enačaj.
In zakaj bi naj bila, samo intuitivno?
Ja.
OBČINSTVO: [neslišno]
David J. Malan: Pravilno.
Enačaj se že uporablja za dodelitev.
Nekdo ni res, da to skozi.
In zdaj, ko gre za testiranje enakosti, moramo
bolj jasna, in pravijo, enako enako.
Zelo pogosta napaka je, da to storijo.
In, če bi v uradnih ur ali enkrat v naslednjem tednu ali
Naslednja dva tedna, naredite kaj takega, nato pa
borijo z njim za 10, 20 minut, poskuša ugotoviti,
Kaj prekleto bug je vedeti, da ste eden izmed tistih,
osebe, ki so to napako.
Torej, zelo enostavno narediti.
Toda zdaj je cilj, da se ubranijo pred to napako.
To bi lahko ocenila, ker je to res tisto, kar pravi?
Če n dobi 42.
Torej glagol ljudje uporabljajo, verbalno, da izražajo
Pojem naloge je "dobil". Torej, če dobi 42 n.
Torej to pomeni, da dodelijo 42 n.
Zdaj imam logični izraz v oklepaju,
znotraj tega pogoja, katerega vrednost je 42.
Imam prav?
Ker če ga oceni od znotraj navzven, skupne
odgovor, zdaj pa je 42.
>> Torej, če sem vas vprašal vprašanje, "če je (42)," kaj je
da je res rekel?
No, lahko logični izrazi samo resnična ali neresnična.
1 ali 0.
Vklop in izklop.
Tako se zdi, da imajo kotiček primer tukaj, pri čemer vsi
Nenadoma sem rekel, "če (42)". To ni logično vrednost.
Torej, kaj storiti, računalniki, čeprav je v bistvu enaka
vse to ni 0, je razlaga, da je res.
1.
On.
Vsi so funkcionalno enakovreden.
Samo vrednost 0, ali je ključna beseda napačna, saj bomo
nazadnje videli, je dejansko napačen.
Torej, "če je (42)" bi dejansko res, saj ni nič.
Torej, natančneje tukaj, Boolova vrednost res ni tako
zelo resnična ali neresnična, toda za to
primeru, če je 0 ali ni nič.
Torej, lažne ali napačne.
In to nam omogoča, da zajame vse bolj
možnosti v parenthetical izražanja.
Zato moramo, kdaj tako natančno, reči -
if (n == 42).
Preprosto zato, ker smo morali določiti preizkus enakosti,
Ne dodelitev vrednosti.
>> Kaj je še treba omeniti tukaj?
Te zavitih oklepajih so pravzaprav ni potrebno.
Jaz sem jih delal samo, da je nit-izbirčen tukaj.
Toda, če imate bolezen, ki ima le eno vrstico
kodo, zgolj zaradi priročnosti, programerji, ni treba uporabljati
Zaviti oklepaji.
Dovolj je, da samo alinee, zaradi estetskih razlogov,
napišite kode.
Šele, ko želite napisati 2 vrstic kode - za
Na primer, drugega printf ("Adijo!"). Če želite narediti
da je pokvarjen to.
Lahko alinea vse, kar želite, vendar je dejstvo, da imate
tipkal 2 vrstic kode brez uporabe zavite oklepaje
pomeni, da ta program ne bi potekal pravilno ali bi lahko
sploh ne pripravijo pravilno.
Torej za zdaj, če sem iskren, mislim, da je najbolje, navada je le
uporabite zavitih oklepajih, in boste ugotovili, da so ti
super jasno, kaj se dogaja.
>> Prav tako, kot prahi - še posebej, če ste med tistimi, ki uporabljajo
priporočene knjige ali spletne vire -
zavedati, da je ta pojem v stilu
programiranje.
In nekateri ljudje dejansko raje dal kodraste brace
sem na progi.
Nekateri ljudje raje naredil neumnosti,
kot jih je dala tukaj.
Ni napačen odgovor, ko gre za
stil, vendar je to narobe.
Toda nekateri ljudje to.
[Smeh]
David J. Malan: Torej, sem omenil to zdaj, preprosto zato, ker so
si preberite na stvari v knjigah ali na spletu, boste dobili
različna sporočila iz različnih učiteljev in
različni avtorji.
In samo zavedati, da je funkcionalno, oni
na splošno enakovredni, vendar je treba dosledno.
Torej, v tem primeru bomo standardizirali na kodrasta
naramnice obloge gor na levi strani.
>> V redu.
Torej, gremo naprej in zdaj vodijo to in videli, kaj se bo zgodilo
s tem programom.
Naredite nonswitch.
Potem teči nonswitch.
Daj mi celo število med 0 in - tako, da ni pomembno
več, ampak bom samo rekel, da samovoljno 42.
In jaz sem izbral pravi odgovor.
No, kaj je dejansko si to v drugo smer.
Izkazalo se je, da je nekaj drugega sintaksa smo
lahko uporabite v programu.
Tukaj je nov del sintakse, ki je funkcionalno enaka,
ampak predstavlja še en način izražanja sebe.
Torej, to je tisto, kar se imenuje "switch". In
switch deluje na naslednji način.
To traja, v oklepaju, je vrednost, ki jo želite
"Stikalo" naprej.
Hočeš, da ravna drugače na podlagi njegove vrednosti.
Torej to pomeni, da stikalo na vrednost n.
In kaj to pomeni?
No, če je n 1, 2 ali 3, pojdi naprej in izpisal "You
pobral veliko število ", nato pa prekinil.
Razlog za odmor, da tako deluje klimatizacija, kot je
Takoj ko ugotovi zadevo, ki se ujema, se začne izvršilni
vse kode pod njo.
Torej, če imam eno vrstico kode, kot jaz sem na liniji 27,
dobi usmrčen.
Če dodam še eno vrstico tukaj, dobi izvršena.
Druga linija tu dobi izvršena.
Program le ustavi izvršitve, kar je pod
veljavne sodne izjavo, ko sem nedvoumno izraža
pravijo "break". Torej narobe.
Seveda, v tem primeru, kot rezultat.
Primer 4 ali 5 ali 6, podobno pa se dogaja
natisniti sporočilo.
V tem primeru je srednje število.
Break.
Primer 7, 8, 9, 10, da se bo izpisal "Izbral si velik
številka. "Break.
In potem je tukaj dobesedno ključno besedo imenujemo "default"
To je dejansko tako kot "drug" konstrukt.
Torej novo sintakso, ampak intelektualno,
nič novega tukaj.
To je tako kot nič.
Če pa če pa če nekako bloku.
>> Tako da je vklopljen različica tega programa.
Ampak opazili, da nam je uspelo s številkami tukaj.
Naj odprejo drugo različico, samo za prikaz
Nekaj ​​malo bolj konkretna.
Torej, tukaj imamo namesto ocene.
Izkazalo se je, lahko uporabite stikala ne samo na cela števila, ampak na
znake.
Ne v vseh vrst podatkov, vendar pa vsaj znakov.
Torej, tukaj, bi lahko storili kaj takega, če je vrednost C,
uporabnik vnesli v vrstici 19, s pomočjo GetChar funkcijo,
kapitalsko ali male črke, kaj je to razlagajo kot razred,
in pravijo, da so izbrali odlično oceno.
In navzdol po switch stavku, ali imamo druge
primerih za "B" in s "C" s, in tako naprej.
Ampak kaj je sedaj zaokrožujejo še eno stvar.
In spet nekako plujejo skozi
nekatere od teh primerov.
Ampak je res tako, da jih lahko uporabljajo zdaj -
ali res, samo jih prevesti zdaj -
do C.
>> Torej, naj gredo naprej in to je to.
Jaz bom odprl novo datoteko.
In jaz bom storil tudi .
In potem bom naredil int main (void).
Naj shranite datoteko kot loop.c.
Samo kot primer.
In jaz bom, da gredo naprej in ne za naslednje.
Želim, da napišete zelo dolgočasno program.
Torej 10.
Naredimo to.
9.
V redu.
Takoj, ko s tem začnemo pri načrtovanju, si
Verjetno delaš nekaj narobe.
Ampak bomo začeli tam nekako.
Ups.
To je pravzaprav narobe.
7.
6.
5.
4.
Nič se ne bo zgodilo, ko bomo prišli do 0.
3.
2.
1.
Ok.
0.
Izbriši.
>> V redu.
Torej vrne 0.
Torej, ta program je očitno bo to, kar je zelo
tediously pravi, da bo naredil.
To bo tiskanje vseh tistih
vrednosti, od vrha do dna.
Torej mi ne bi zanko.
In potem - Ops.
Naredite zanko.
Bil sem v napačnem imeniku.
In sedaj mi deluje zanko.
Enter.
Woohoo.
Zelo lepo.
Lep, dolg program.
>> V redu, sedaj pa dajmo to narediti bolje.
Tako kot v nič, ko ste začeli uporabljati zanka
gradnjo, namesto le kopiranjem in lepljenjem vse
puzzle kosov, naj vam predstavim to stvar.
Torej, v C pa obstajajo različni looping konstrukti,
1, ki je videti takole.
"Za" zanka ima tri stvari, ločene s podpičji 2.
In potem, notranjost telesa zanke, če se tako izrazim -
stvari v notranjosti so zavite oklepaje -
lahko storimo nekaj, kar znova in znova.
Torej, kaj imam tukaj na zaslonu, to je
dobesedno samo komentar.
The / / pomeni, prihaja komentarja.
To ni številka.
To je samo Angleški opis, mene, človek.
>> Torej initializations, pogoji in posodobitve.
No, pa poglejmo, kako to deluje.
To mi omogoča, da znova ta program, kot sledi.
Za -
tako da tukaj je moj zanko -
int i -
Prihaja spremenljivka se imenuje "i" -
dobi initialized do 10.
Torej je moja inicializacija.
Rad bi naredil to zanko, tako dolgo, kot "i" je večja ali
enak 0.
In na vsaki ponovitvi te zanke, želim
da jaz -.
Tako smo videli + + v ponedeljek.
- Prav nasprotno.
To postopno znižanje vrednosti do 1.
Znotraj te zanke, želim, da dejansko nekaj storiti.
Tako bom rekel nekaj podobnega printf.
Nočem reči, zdaj 10, ker je to očitno le
tiskanjem enako vrednost.
Kaj hočem natisniti namesto, verjetno?
Ja.
Tako "i". Torej% d, i.
>> Torej, jaz bom ukradel eno od teh idej od prej -
To nadomestilo za formatne kode -
in potem sem dol, na dnu, se bom vrnil 0, samo
za dobro mero.
Ampak zdaj imam bolj zgoščen program.
To je le nekaj vrstic, ne pa okrog 10 ali 11 vrstic.
Pusti me, da moj poziv tukaj.
Remake zanka.
Ponovitev zanke.
In zdi se, da je enako.
Zdaj, program ni več zanimiv.
Ampak zdaj sem lahko vnesete nekaj takega.
Lahko spremenite na 100.
Lahko pa prevedem program.
In potem bom lahko ponovno zagnati svoj program.
In zdaj gre super hitro na današnjih računalnikih.
Vendar pa moram -
in dejansko moj notesnik buffer ne
gredo celo tako daleč.
Takole.
Torej imamo vse 100.
Ampak to je enostavno narediti napake tukaj.
Kaj se dogaja, da je pričakovano vedenje, če bi
nehote naredil?
Tako se zdi, kot neskončno.
Torej, da vidimo, če je računalnik obnaša.
>> Torej, naj gredo naprej in da zanko.
In mi deluje zanko.
Torej, kaj je prišel nazaj, da je v trenutku.
Pustili bomo, da teče.
Ker kaj naj bi štel do, minimalno?
Verjetno vsaj 2 milijard EUR, če želimo imeti, da je veliko bitov, in
smo z uporabo pozitivnih vrednot.
Torej, kaj je skok nazaj.
Poleg teh vrst zank, imamo tisto, kar imenujemo medtem
zanke. Torej, tako kot v nič, si imel vedno
bloki, ti pa ponovite blokov.
Podobno je v C, boste morali druge načine
za izražanje sebe.
Torej imate ta pojem while zanke, ki omogoča
predstavljajo si malo drugače.
In potem imaš nekaj, kar ti ne počne while zanko,
ki deluje nekoliko drugače kot dobro.
In bomo to draži narazen daljšem časovnem obdobju.
>> No, pa si oglejte na tej zadnjega tukaj.
Če bomo šli v -
še vedno teče.
To je zelo neskončno.
Torej, naj gredo v pozitivno, in pokazati, kako lahko dejansko
urejajo vnos uporabnika nekoliko bolj učinkovito.
To je zelo kratek program.
In tukaj imamo v main, int n deklaracije.
Daj mi spremenljivko, imenovano n. Zdaj sem dobesedno pomeni
"Ne". In potem imam odprt kodrasti
naramnicami, blizu kodrasti naramnicami.
In potem opazil, takoj po tem, ko pravi, n
je manj kot 1.
Torej, opazil, da te vrstice -
19-24 -
sestavljajo kolektivno ne počne while zanko.
In spet, novo sintaksa, ni nova ideja.
To je samo še en način zanka, sintaktično.
Torej, kaj to storiti?
Naredite, medtem ko je n manj kot 1.
Torej, kaj bi rad naredil?
Zahtevam, da mi daš pozitivno celo število.
Potem sem dejansko poskušal priti celo število od uporabnika.
Ampak glede na vrstni red operacij tukaj, ker
medtem ko je stanje tukaj, jaz pa bom preveril, je n
manj kot 1?
Torej, predvidevam, da si -
potem ko je zahteval na ta način -
vrste v vrednosti 0.
Ta pogoj se bo drži ali ne?
No, to je dejansko dogaja, da bi bilo res.
Ker je n 0, 0 je manj kot 1.
Kaj to pomeni?
Daj še enkrat.
Šele ko je ta pogoj ovrednoten kot neresničen.
Če vpišem v 42.
Pa ne, 42 ni manjša od 1.
Zato je ta krog narediti izvršitve.
In tako se na tej točki, bo program rekli, hvala za
42, v tej zadevi.
Sedaj, ko imate tak način izražanja sebe -
Ne smemo čakati, da se to konča.
To bo trajalo nekaj časa.
Se nadaljuje naslednjič, mogoče.
>> Toda zdaj, imate možnost, da upajmo, da bi razumeli
malo geek humor.
Opravičilo.
To ni reprezentativen za humor v računalniški znanosti
svet, vendar je srčkan.
[Smeh] Gremo na koncu tega zapisa.
In se vidimo v ponedeljek.
[APLAVZ]