[Powered by Google Translate] DAVID J. Malan: Në rregull, kjo është CS50 dhe ky është
fund të javës 1, kështu që kartat e studimit janë në dhe numri i përgjithshëm i
shokët e klasës që ju e keni këtë vit është 745.
Dhe ne jemi të pushtuar në mënyrë që të ketë kaq shumë prej jush gjatë
këtë semestër, por edhe pse ky kurs është aq i madh,
të kuptojë se kjo është këto gjëra si dreka e premte, si
orarit të punës, 15-personi seksione, dhe kështu me radhë që
janë të destinuara të vërtetë për të krijuar këtë më intime
mjedisit.
Pra, edhe pse ne mund të mblidhen një herë ose dy herë në javë, këtu në
Sanders, e di se shumë nga përvoja juaj në këtë kurs
do të jetë shumë duart-në në së bashku me shokët e klasës tuaj
dhe stafit mësimor.
>> Pra, këtu ne do të shkojmë, Fall 2012.
Pra, kujtojmë se koha e kaluar ne përfundoi në një notë të
pasaktësi, duke folur në lidhje me përfaqësimin e numrave.
Dhe ne shikoi në një prej dështimeve që ndodhur, në
bota reale, kur ai erdhi për keqkuptim
si kompjutera punë.
E pra, sot ne do të rishqyrtojnë një tjetër një nga ato ide, si
dhe vazhdojmë diskutimin tonë të klientit CS50
dhe C dhe çfarë do të thotë me të vërtetë të programit.
Por së pari, vetëm një çift i njoftimeve shakullimë.
>> Seksione fillojnë kjo diel, dhe javë parë është gjithmonë një
pak e një fillim të shpejtë, sepse ne sapo mori në
format tuaja seksion.
Ne jemi duke bërë të njëjtën gjë, tani, me miqtë mësimore, tani
se ata e dinë oraret e tyre, kështu që ne jemi duke synuar, duke
Shtunën në mëngjes, për të ndjekur deri me ju me seksionin tuaj
Caktimi dhe TF.
Kuptojnë se ata do të fillojnë ditën e nesërme, e diel
ose hëna apo e marta.
Dhe pastaj ne do të pranohen ndryshimet seksion si ato të lindin
në ditët që do të vijnë.
Orari i punës, ndërkohë, janë, përsëri, sonte, 8:00 në 11, në
Annenberg, si edhe natën nesër.
Edhe pse problemi grupe janë në përgjithësi për shkak të enjteve
në mesditë, ju duhet të kuptojë deri në pesë ditë me vonesë për të shpenzuar,
prandaj disponueshmërinë e orarit të punës të enjten, nëse
ju të holla në një nga ato ditë dhe në fund, në këtë mënyrë, të paraqesë
diçka të premten.
Më lejoni të sugjeroj se Scratch është në mesin e më shumë argëtim, ndër
më të ulëta grupe kyçe problem.
Dhe unë do të rri në fund të këtyre ditëve, strategjikisht, vetëm
për më vonë në semestrin kur jeta fillon të marrë në mënyrë
me midterms dhe klasave të tjera.
Set 1 Problem, ndërkohë, do të jetë postuar në kursin e
website të premten, pasi do të jetë në këmbë e kursit të
përmes video, që do të filmohet në 02:30 të premten
dhe pastaj të postuar në internet nga dita e ardhshme.
>> Pra, ne përfundoi të hënën.
Unë dua të - në fakt, një shënim këtu.
Sepse klasat - Sanders, sepse nuk bën pikërisht të japë
vetë të rastit Q & A mbrapa dhe me radhë tmerrësisht të mirë, ne jemi
do të provoni diçka pak më të re të këtij viti, ku
në qoftë se ju nuk jeni të rehatshëm duke ngritur dorën tuaj apo ju vetëm
vend nuk do të ngrejë dorën tuaj në një dhomë si kjo,
ne do të kemi disa nga miqtë e mësimdhënies dhe CAS-it
ruajtja cs50.net/discuss gjatë ligjëratës.
Pra, nëse ju keni ndonjë pyetje, sepse unë kam qenë plotësisht i
paqartë në lidhje me diçka ose ju jeni kurioz rreth disa
temë, provoni postimi atë atje.
Tag atë me një etiketë të ligjëratës, dhe ne do të bëjmë më të mirën
sot dhe javën e ardhshme - we'll provoni këtë jashtë - për fushën e IT
ose elektronike, online, ose në qoftë se ai ndjehet si ne duhet
me të vërtetë trajtuar atë masë, një nga Fellows mësimore ose
AK do të ngrejë dorën e tyre dhe të kërkojë
anonime në emër tuaj.
Pra, ne do të japim këtë një provoni dhe shikoni se sa mirë punon kjo.
Por, me të gjitha mjetet, të vazhdojë të ngrejë duart si ju dëshironi.
>> Pra, është koha e fundit që zbuloi se 10% ose një e dhjeta nuk është, në
fakt, 0.1, si ju ishin mësuar shumë vite më parë.
Është në fakt, një vlerë si kjo.
Por kjo nuk është tërësisht e vërtetë, apo jo?
Ne vetëm kemi këtë kufizim në kompjuter ku, në qoftë se ju
kanë vetëm një sasi e fundme e kujtesës, RAM, ose më shumë
posaçërisht bit, mirë, ka vetëm një numër i kufizuar
gjëra që ju mund të përfaqësojnë.
Për shembull, në qoftë se ne kemi numrin zero, dhe ne duam të
përfaqësojnë në binar, përdorur tetë bit, ku një pak,
përsëri, është një zero ose një një, ne might
paraqesin atë si 00.000.000.
Dhe kjo është një fjalëshumë pak panevojshme.
Ashtu si në sistemin decimal në botën reale,
Në përgjithësi, në qoftë se ju doni të shkruani numrin 123, ne
njerëzit ndoshta nuk shkruaj edhe pse 00000123,
funksionalisht, që është numri i saktë njëjtë.
Ne vetëm rënie zero kryesore, në mënyrë që të flasin.
>> Në binar, ne mund të bëjmë të njëjtën gjë.
Binary dhe zero, zero dhe binar është vetëm zero.
Ju duhet vetëm një grimë të vetme.
Por përsëri, njësia më e zakonshme e masës në botë
e informatikë është bytes, tetë BITS.
Vetëm për shkak se një pak, mjaft të padobishme.
Tetë BITS, jo tmerrësisht e dobishme, por të paktën kjo është më shumë
dobishme se një njësi të vetme të masës.
Pra, me tetë BITS, ne do të zakonisht përfaqësojnë binar.
Pra, këtu kemi numrat zero, një, dy, dhe pastaj, si
Nate bëri në video tonë mërkurën e kaluar, ne mund të vazhdojmë
numëruar deri në shtatë, të tetë.
Dhe pastaj, nëse ne përdorim bit gjithnjë e më shumë, ne
mund të llogarisë deri në pafundësi.
Por në qoftë se ju keni vetëm një numër i caktuar i këtyre bit, siç është
rasti në çdo sistem kompjuterik, apo edhe raketave
sistemit, edhe, në të vërtetë ju keni vetëm një
Shuma e fundme e saktësi.
Pra, nëse ju doni të përfaqësojnë numrin si 0,1, mirë,
kompjuter ka për të zgjedhë dhe të zgjedhin.
Dhe në qoftë se ajo ka vetëm një numër i caktuar të numrave që mund
përfaqësojnë, kjo mund të vijë afër 0.1 për ju, por kjo nuk mund të
domosdoshmërisht të ju jap pikërisht vlerën që ju dëshironi.
Dhe kjo është vetëm një nga sfidat e kompjuterëve,
nën kapuç, fatmirësisht.
>> Si ne shkojmë më larg në semestrin, këto nivel më të ulët
detaje të bëhet shumë më pak interesante, por sigurisht
Zbatimi i këtyre ideve mund të ketë disa botën reale shumë
degëzime.
Njëra është një argëtim pak.
Sa prej jush e kanë parë të mahnitshme Office Space film?
Nëse ju nuk e keni, se është jozyrtare tuaj
Detyrat e shtëpisë për javën.
Por në Office Space, se miqtë në këtë film marrin
Avantazhi i kësaj ideje pikërisht, por ata në fakt vodhi
atë nga një tjetër film që ju mund të keni
parë, edhe vite para.
Pra më lejoni t'ju jap disa sekonda e këtij rimorkio nga
ky film mahnitshme dhe kjo është shumë e
shkollë përkatëse.
>> [Luan MOVIE]
Në fakt unë jam duke u promovuar.
Unë mund të programit një virus që do të shqyej se
vend jashtë kohë të mëdha.
E pra, si e bën këtë punë?
Sa herë që ka një transaksioni bankar, ku interesi është
llogaritur, nuk janë mijëra në ditë, kompjuter përfundon
me këto fraksionet e një qind.
Por unë nuk jam duke shkuar për të bërë diçka të paligjshme.
Paligjshme? Samir, kjo është Amerika.
Ju duhet të betohen për Zotin.
Nëse askush nuk e di në lidhje me këtë, por ne, të gjithë të drejtë? Asnjë anëtarët e familjes, nuk ka
girlfriends, askush.
[E padëgjueshme].
Mos u bëni merak, njeriu, unë nuk do të tregoj askujt as.
[MOVIE FUND]
>> Të gjithë të drejtë, kështu që ndoshta kam gjetur këtë film më të mirë se shumica
njerëzit këtu, por në çdo rast, virusi që ata ishin
duke u përpjekur për të krijuar -
dhe në filma, në çdo kohë ata do të thërrasë diçka një virus,
kjo nuk është në përgjithësi në fakt një virus.
Kjo është vetëm një program që dikush shkroi për të bërë diçka.
Dhe në këtë rast, djemtë ishin duke u përpjekur për të shkruar një program
që mori avantazhin e quajtur kompaninë e tyre të Innotech
Sistemi informatikë, ku kompjuterat, gjithashtu, edhe kur
fjala për para, nuk mund domosdoshmërisht
paraqesin para saktësisht.
Pra, edhe pse ju mund të keni 0,10 $ në llogarinë tuaj bankare,
0.10, mirë, kompjuteri mund të vërtetë mendoj se ju keni
kjo cent shumë në llogarinë tuaj bankare.
Dhe kështu që ajo që këta njerëz ishin të aspirojnë për të bërë - dhe ata
vodhi idenë, ajo rezulton nga Superman III, ku
Richard Pryor bëri të njëjtën gjë - ata ishin në thelb
programe shkrim që aspirojnë për të marrë të gjitha të zvarritës
numra, të gjithë e vogël,, fraksionet e vogël e vogël
pennies dhe vjedhur ato jashtë në mënyrë që njerëzit vetëm
mendim, oh, kjo është vetëm 0,10 $ atje, por të gjithë ata që
Numrat zvarritës përfundimisht të shtoni deri.
Pra, një ide të mrekullueshme dhe kjo backfired hilariously në atë
film veçanti.
>> Por në botën e vërtetë, gjithashtu, ka shumë më tepër në lidhje
Implikimet e këtyre llojet e gjërave.
Dhe një nga arsyet të zhyten në fushën e kompjuterit
shkenca është, përsëri, zbatueshmëria e tij të mos
inxhinieri shkenca vetëm, por vetëm për
fusha të tjera si.
Pra, kjo është një vështrim pak lighthearted se çfarë mund të shkojnë keq, por
ajo është gjithashtu mjaft e hapjes sy, unë mendoj se, kur është fjala për
kuptuar saktësisht se si i gjithëpranishëm teknologjive si
kompjutera dhe programimi apo këto ditë,
në formën e software.
Pra, ky klip tjetër është vetëm rreth gjashtë minuta, vazhdon
ku ne u ndërpre për herë të fundit, por na lejon të shohim pak
më në thellësi në një nga këto çështje të tillë.
Më lejoni të kaloni përpara për të ku ne u ndërpre,
që është e drejtë këtu.
Dhe ne kemi pjesën e dytë të dy, për rreth gjashtë minuta këtu.
>> [PLAY MOVIE]
Rrënuar teknologji moderne raketash.
Në vitin 1991, me fillimin e Luftës së parë të Gjirit, të Patriot
raketave përjetuar një lloj të ngjashëm të
konvertimit numri problem.
Dhe si rezultat, 20 njerëz, 20 ushtarë amerikanë, janë vrarë
dhe rreth 100 të tjerë u plagosën, kur Patriot, e cila ishte menduar
për të mbrojtur kundër Scuds hyrëse,
dështuar të zjarrit një raketë.
>> Kur Iraku pushtoi Kuvajtin dhe Amerika filloi një shkretëtirë
Stuhia në vitin 1991 e hershme, raketa Patriot bateritë ishin
vendosur për të mbrojtur Arabinë Saudite dhe Izraeli, nga Irakut
Raketa Skud sulmet.
Patriot është një medium-varg amerikane tokë-ajër të sistemit,
prodhuar nga kompania Raytheon.
Madhësia e interceptorëve Patriot vetë, është në lidhje
afërsisht 20 metra e gjatë dhe peshon rreth £ 2000.
Dhe ajo mbart një kokë rakete prej rreth - Unë mendoj se është afërsisht
£ 150.
Dhe mbushjen vetvete është një eksploziv i lartë i cili ka
fragmente rreth tij.
Shtresë e jashtme e mbushje është projektuar për të vepruar si buckshot.
Raketat janë kryer katër për enë dhe janë
transportohen nga një rimorkio gjysmë.
>> Anti-raketë Patriot sistemi shkon prapa të paktën në
20 vjet tani.
Ajo ishte projektuar fillimisht si një raketë e mbrojtjes ajrore të
xhiruar poshtë aeroplanë të armikut, në Luftën e parë të Gjirit.
Kur se lufta erdhi së bashku, Ushtria donte të përdorin atë për të xhiruar
poshtë Scuds jo, aeroplanë.
Forcat Ajrore Irakut nuk ishte aq shumë e një problemi, por ushtria
ishte i shqetësuar në lidhje me Scuds.
Dhe kështu ata u përpoqën për të përmirësuar Patriot.
Intercepting një raketë armik udhëtojnë në Mach 5 ishte duke shkuar
për të sfiduese mjaftueshme.
Por kur Patriot u nxituan në shërbim, ushtria
nuk ishte në dijeni të një modifikim të Irakut që e bëri e tyre
Scuds gati e pamundur për të goditur.
>> Çfarë ka ndodhur është Scuds që ishin
vijnë në ishin të paqëndrueshme.
Ata ishin luhatja.
Arsyeja për këtë ishte se irakianët, në mënyrë që të merrni 600
kilometra jashtë e një rakete me rreze 300 km, mori
pesha nga mbushje përparme dhe
bërë mbushjen lehta.
Deri tani Patriot është duke u përpjekur për të ardhur në Skud, dhe shumica e
koha, shumica dërrmuese e kohës, kjo do të
vetëm fluturojnë nga Skud.
Pasi operatorët e sistemit Patriot realizuar Patriot
humbur objektivin e saj, ata shpërthyen në kokë rakete Patriot.
Për të shmangur viktimat e mundshme, ajo u lejua
të bjerë në tokë.
Kjo ishte ajo që shumica e njerëzve e panë, si fireballs mëdha në qiell,
dhe keqkuptuar si interceptimin e raketave Skud.
>> Edhe pse, në qiellin e natës, patriotë duket të jetë
Scuds shkatërruar me sukses, në Dhahran, nuk mund të ketë
gabim në lidhje me punën e saj.
Atje, sistemi i radarëve Patriot i humbur gjurmët e një
Skud në hyrje dhe kurrë nuk filloi për shkak
tek një krisje software.
Ai ishte i pari që izraelitët zbuluar se më
sistemi ishte në, aq më i madh mospërputhja kohë u bë,
për shkak të një orë ngulitur në kompjuterin e sistemit.
Rreth dy javë para tragjedisë në Dhahran, The
Izraelitët raportuar në Departamentin e Mbrojtjes se
Sistemi ishte duke humbur kohë.
Pas rreth tetë orë në punë, kanë vërejtur se
Sistemi është duke u bërë dukshëm më pak i saktë.
Departamenti i Mbrojtjes u përgjigj duke i thënë të gjitha
the Patriot bateritë që të mos largohen nga sistemet
për një kohë të gjatë.
Ata kurrë nuk tha se çfarë është një kohë të gjatë ishte - 8 orë, 10
orë, 1,000 orë.
Askush nuk e dinte.
>> Bateria Patriot vendosur në kazermat në Dhahran
dhe ora meta e saj të brendshme kishin qenë në më shumë se 100 orë në
nata e 25 shkurt.
Është koha për të gjurmuar një saktësi prej rreth një të dhjetën e një të dytë.
Tani një e dhjeta e dytë është një numër interesante sepse
ajo nuk mund të shprehet në binar, saktësisht, që do të thotë
ajo nuk mund të shprehet saktësisht në ndonjë
kompjuteri modern dixhital.
Është e vështirë të besohet.
Por përdorin këtë si një shembull.
>> Le të marrë numrin një të tretën.
Një e treta nuk mund të shprehet në decimal, pikërisht.
Një e treta e 0,333 vazhduar për pafundësi.
Nuk ka asnjë mënyrë për të bërë këtë me saktësi absolute në decimal.
Kjo është saktësisht të njëjtin lloj problemi që ka ndodhur në
Patriot.
Sa më gjatë që sistemi u, më keq gabim kohë u bë.
Pas 100 orësh operacion, gabim në atë kohë ishte vetëm
Rreth një e treta e një të dytë.
Por në drejtim të synimeve të dhënësit të një raketë udhëtonte në Mach 5,
kjo ka rezultuar në një gabim ndjekja e mbi 600 metra.
Ajo do të jetë një gabim fatal për ushtarët në Dhahran.
>> Çfarë ka ndodhur është një nisjen Skud u zbulua nga paralajmërimin e hershëm
satelitë dhe ata e dinin se Skud u vijnë në e tyre
Drejtimi i përgjithshëm.
Ata nuk e dinë se ku ai po vinte.
Ajo tani ishte deri në komponentin e radarëve Patriot
sistemit, mbrojtjen Dhahran, për të gjetur dhe për të mbajtur gjurmët e
raketave në hyrje armikut.
Radari ishte shumë i zgjuar.
Ju në fakt do të ndjekur qëndrimin e Skud dhe pastaj
parashikojnë ku ajo ndoshta do të jetë hera e ardhshëm
radar dërguar një impuls jashtë.
Kjo u quajt porta e varg.
Pastaj, sapo vendos Patriot kohë të mjaftueshme ka kaluar për të shkuar
mbështetur dhe kontrolloni vendin tjetër për këtë zbuluara
objekt, ajo shkon prapa.
Pra, kur ai u kthye në vendin e gabuar, atëherë nuk sheh
kundërshtojnë, dhe ajo vendos se nuk kishte asnjë objekt.
Kjo ishte një zbulimi të rreme dhe bie pista.
>> The Skud në hyrje zhdukur nga ekrani i radarit.
Dhe sekonda më vonë, ajo u përplas në kazermë. The Skud
28 të vrarë dhe ishte i fundit gjuajtur gjatë
i pari Luftës së Gjirit.
Tragjikisht, software updated arriti në Dhahran
nesërmen.
Dhe metë software ishte fiksuar, duke mbyllur një kapitull në
historia e trazuar e raketave Patriot.
Patriot është në fakt një akronim për "Ndjekja Array faza
Ndërpres të synuar. "
>> Të gjithë të drejtë, kështu që një rezultat shumë më të pikëlluar se nuk mjaft
kuptuar këtë botë.
Dhe takeaway, me të vërtetë, nga filmi është se zgjidhja
u ristartoni sistemin mbrojtës nga raketat tuaj
çdo herë në një kohë.
Dhe kështu përsëri, një prej qëllimeve të këtij kursi, sigurisht
në një shkallë më të përulur se këtyre kërkesave, është që të
Sytë e të gjithëve me të vërtetë hapura për të pikërisht si ju shkoni në lidhje me
Makinat bërë bëni atë që ju doni ta bëni dhe si ju shkoni
për të bërë që të saktë, ndërsa gjatë rrugës duke e bërë atë
mirë, elegante, dhe kështu me radhë.
Dhe kështu sot, le të zhyten në një pak më shumë për këtë, por
kështu që ne nuk do të shkojnë shumë shpejt, sidomos për ata më pak
rehatshme, por edhe kështu që ne mund të mbajë interesin e
ato më të rehatshme, le të vetëm të shpejt të fillojë me pak
e radhitje e disa prej këtyre ideve.
Dhe përsëri, pyesni larg, si në personin ose në internet, nëse ju keni
Pyetjet kështu që ne mund të mbajë të gjithë në të njëjtën faqe.
>> Pra CS50 Appliance, hap të shpejtë mbrapa, është
çka, me fjalët tuaja?
Është në rregull nëse ju nuk kanë idenë se çfarë ato fjalë mund të jetë ende.
[E padëgjueshme]
Mirë, kështu që një ndërfaqe universale për -
që ne të gjithë mund të ndajnë.
Absolutisht.
Pra, ne mund të, për shembull, ju them për të shkuar në disa
internetit, shkarkoni këtë softuer për Mac OS.
Shkarko këtë softuer për Windows, konfiguroni në
në këtë mënyrë dhe se.
Por realiteti është atëherë ne të kandidojë në të panumërta teknike
mbështetur çështje.
Dhe gjithashtu këto ditë, shumë nga ajo që është duke u bërë krah server,
në botën e informatikes, sidomos kur është fjala për
web zhvillim dhe aplikimet web bazuar, është në të vërtetë
mjaft shpesh bëhet në Unix ose Linux kompjutera, në krahasim me
Macs PC apo Windows.
>> Pra, midis upsides, pastaj, duke përdorur këtë gjë të quajtur
CS50 Appliance është që ne do të kemi të gjithë të njëjtin ambient.
Pra, të gjithë e në të njëjtën faqe pa marrë parasysh se çfarë hardware që ju
erdhi në kampus me të, por gjithashtu do të dabbling pikërisht
mjedisi njëjta që ju do të jetë duke përdorur drejt
Fundi semestrit si edhe për web zhvillim, si dhe në
ardhmen për aplikimet botës reale të tyre.
Pra më konkretisht, Appliance CS50 është një pjesë e lirë e
software që ju lejon të kandidojë një sistem tjetër operativ,
Linux, në këtë rast, në kompjuterin tuaj, në një dritare.
Tani ju nuk mund të shkarkoni aplikim.
Keni nevojë për një program me të cilin do të luajë apo të drejtuar pajisjen.
Dhe kjo pjesë e software është i njohur përgjithësisht si një
hypervisor.
Hypervisors vijnë në formën e produkteve si VMware,
Box Virtual, Paralele.
Të gjitha llojet e kompanive të bëjë software, dy të lirë dhe
komerciale, njësoj.
Çfarë ju do të shihni në Set 1 Problem janë udhëzime se si të
të marrë software të lirë me të cilin do të
drejtuar Appliance CS50.
Dhe një herë ju bëni, ju do të keni në një dritare në Mac apo PC tuaj,
një mjedis desktop që duket mjaft si kjo, ku
ajo ka një gjë e Fillimit menu-si në
fund majtë qoshe.
Ajo ka një dosje në shtëpi, apo directory shtëpi, në të majtë të lartë
atje, një plehra mund, dhe kështu me radhë.
Pra, ne do të vë në lojë përveç detajet e nevojshme si ne do të shkojmë.
>> Por tani le të fillojë të zhyten në C.
Pra C është kjo gjuhë programimi, të ngjashme në frymë të
Zeroja, por shumë më pak grafike, por për ironi, tani
më të fuqishme sapo ju të merrni tru me të.
Pra në C, kemi shkruar programe duke shkruar kodin burim, i cili është
kjo Anglisht-si sintaksë, të ngjashme me çorape
Demonstrata që ne e bëmë herën e fundit që ju lejon të
shprehin veten mjaft saktësisht, nëse
arcanely, tek kompjuter.
>> Pra, çfarë lloji të programeve të produktit keni vërtetë nevojë
për të shkruar programe në një gjuhë si C, të bazuar në tonë
Biseda të hënën?
[E padëgjueshme]
OK, ju vetëm duhet një editor teksti.
Ju nuk keni nevojë për ndonjë softuer të veçantë
në vetvete për të shkruar programe.
Ju duhet vetëm një editor teksti si Notepad-in, në Windows,
TextEdit në Mac, ose diçka të quajtur gedit, në të botës e
Linux, të cilat ne do të përdorim këtu.
Dhe kjo është ajo, për të shkruar programet.
>> Por shkrim është vetëm gjysma e ekuacionit.
Atëherë ju duhet të drejtuar ata.
Por në mënyrë që të drejtuar programet -
ju nuk mund të kandidojë kodin burim.
Ju në vend të kësaj duhet të bëni atë për të parë?
Po.
DAVID J. Malan: Ju duhet të
përpiloni atë.
Dhe, dikush tjetër, hartimin e kodit burimor të thotë -
[E padëgjueshme]
DAVID J. Malan: Pikërisht.
Përkthimin atë në zero dhe ato.
Sepse të gjithë ne, këto ditë, kanë kompjuterë që kanë CPUs,
pothuajse të gjithë që janë bërë nga një kompani e quajtur Intel, dhe
Intel Brenda, do të thotë se kjo brenda truri i juaj
kompjuter, i njohur si CPU.
Dhe një nga gjërat që bën që truri është, ai e di
si për të kuptuar modelet e zero dhe ato.
Ai e di se çfarë modeli i përfaqëson bit shtesë, çfarë
model përfaqëson ZBRITJET, çfarë modeli i
bit përfaqësojnë shtypjen, dhe krijimin e një tingull zanor.
>> Pra me pak fjalë, CPU, së bashku me sistemin operativ,
cila është një pjesë e software që shkon në majë të CPU,
mënyrë që të flasin.
Së bashku, këto dy copa e di se si për të drejtuar programet që
ne njerëzit shkruajnë.
>> Pra, nëse unë shkoj në Appliance CS50 këtu, kam nevojë për të hapur
deri një editor teksti dhe unë mund të hyni në këtë
në disa mënyra.
Unë mund të shkoni në Menu, Programim,
dhe pastaj unë mund të zgjidhni -
Jo, jo se menu.
Unë mund të shkoj në Accessories / gedit këtu për të hapur
editor teksti pak e mia.
Ose më thjesht, unë mund të klikoni këtë ikonë të vogël në fund
qoshe majtë.
Dhe tani kam marrë këtë mjedis këtu.
Kjo është goxha e kujton një editor teksti të thjeshtë, me vetëm
një ose dy dallime.
Në krye, ku kursori është keq tani, ky është vendi ku
Unë mund të filloni të shkruani kodin tim.
Në fund është kjo gjë quhet dritare terminali.
Dhe çfarë llojet e gjërave mund të bëj unë në këtë
ashtu-quajtur dritare terminali?
[E padëgjueshme]
>> Mirë, kështu që unë do të kandidojë komandat.
Dhe disa nga komandat ne u të hënën ishin pak
fshehta në fillim, por për ls listë, cd per directory ndryshimit,
rm, për të hequr.
Pra, kjo është lloj i një mënyrë e vjetër-shkollën e lundrimit tuaj
kompjuter, duke përdorur vetëm tastierën tuaj dhe komandat tekstuale,
dhe jo, në përgjithësi, duke përdorur një mouse.
Por ne do të shohim, para se të gjatë, ky fakt na jep një
pak më shumë pushtet dhe saktësi pak më shumë me të cilin do të
shprehin veten.
Dhe pastaj mbi këtu në të majtë, ne jemi vetëm duke shkuar për të parë,
si ne të fillojnë software shkrim, një përmbledhje pak
Programi që ne kemi shkruar në të majtë të lartë.
Por ne do të shohim që përsëri para se të gjatë.
>> Pra, le të bëjë diçka mjaft të thjeshtë këtu.
Më lejoni së pari të shkojnë përpara dhe shkoni tek File, Save, dhe unë jam vetëm
do të klikoni mbi jharvard këtu, gjatë në të majtë, dhe
jharvard është, përsëri, emër për dosjen time në shtëpi, im
fotografi personale, mua, tani po John Harvardit, si të gjithë ju
shpejti do të jetë John Harvard në këtë mjedis.
Ai e mori këtë directory shtëpi, Dokumentet e mia dhe kështu me radhë,
që unë dua të të shpëtuar, tani, këtë fotografi in
Kështu që unë jam duke shkuar për të thirrur atë hello.c. Atëherë unë jam duke shkuar për të shkuar
përpara dhe klikoni Save, dhe tani ajo që unë kam këtu është një tab
quajtur hello.c, aq shumë si një lloj tjetër të redaktorit.
>> Kështu që tani më lejoni të shkoj përpara dhe të filloni të shkruani një program.
int main (void).
Dhe atëherë unë vetëm e bëri për herë të fundit, printf për shtyp formatuar,
("Hello, World!"
);.
Pothuajse i plotë.
Por unë jam humbur një çift të dhënat.
Çfarë është zhdukur nga ky program që unë me të vërtetë nevojë për
ajo që në fakt hartojnë?
Po.
[E padëgjueshme]?
>> DAVID J. Malan: Yeah, kështu që unë duhet të përfshijë standarde
I / O bibliotekë.
Pra, kjo duhet të shkojë më lart kryesor, kështu që unë jam vetëm do të
të bëjë hapësirë ​​për atë atje.
Dhe unë jam duke shkuar për të bërë # include .
Dhe vini re kllapa angled atje.
Dhe si një mënjanë, gedit është një përdorues pak miqësore, në qoftë se
nganjëherë pak konfuze, në atë që përpiqet për të ndihmuar tuaj
Sytë njoftim se çfarë linja me çfarë.
Pra, fakti që kursori im është e drejtë tjetër për këtë angled
kllapa, vëreni se si është theksuar kënddrejtë tjera
kllapa plus këtë.
Dhe kjo është vetëm për të tërhequr vëmendjen time për faktin se unë
kanë simetri.
Dhe simetri në programimin e në përgjithësi është një gjë e mirë.
Në mënyrë të ngjashme, në qoftë se unë të lëvizur kursorin e mia deri në fund, vini re se si
formatimin e teksteve kaçurrel vijë deri për të treguar se, po, unë kam një e hapur
dhe një mbyllur, mënyrë që të flasin.
>> Të gjithë të drejtë, dhe unë mund të bëjë një gjë tjetër.
Kjo nuk është e domosdoshme, por praktikë e mirë, për të thënë
0 kthehen.
Dhe 0 kthimin e bën atë për ne këtu?
Ose të thotë çfarë?
[E padëgjueshme]
DAVID J. Malan: Por asgjë nuk është e gabuar.
Dhe sinqerisht kjo është e vështirë për shumë të shkojnë keq në një
këtë program të shkurtër.
Kështu që unë jam vetëm duke u super të qartë se të gjitha është mirë.
Unë, njeriu, kur kam drejtuar këtë program, do të ndoshta kurrë
shihni se 0.
Në përgjithësi, këto shifra që janë duke u kthyer nga kryesore
vetëm pasme kokat e tyre tek njerëzit kur
diçka shkon keq.
Dhe ju merrni një pop up pak gabim sistemit thënë, një,
dy, tre, apo çfarëdo numri ishte se
u kthye në të vërtetë.
Pra, çdo gjë tjetër të keqe me këtë?
[E padëgjueshme]
>> DAVID J. Malan: Pra, kjo nuk është aq shumë një gabim funksionale
por një estetike.
Unë ndoshta duhet të vënë në një karakter newline atje në
fund të këtij vargut në mënyrë që ne të vërtetë të lëvizur kursorin në
linjë tjetër, dhe programi i vetëm duket pak prettier.
>> Kështu që tani më lejoni të shkoj poshtë në dritaren time terminal
dhe zoom in mbrapa
Dhe kjo gjë këtu, ajo që quhet shpejtë.
Është vetëm kujtuar mua që unë jam, jharvard @ aplikim, ku
aplikim është emri i kompjuterit unë jam në.
Në kllapa është kjo tildë, simbol squiggle, e cila
përfaqëson çfarë?
Audienca: Faqja directory.
DAVID J. Malan: Faqja directory.
Pra, kjo është vetëm një simbol stenografi për të thënë ju jeni në
dosjen tuaj personale, ku të gjitha dosjet tuaja të shkojnë by default.
Deri tani, në këtu, unë mund të shtypni ls për listën.
Dhe e vetmja gjë që unë shoh këtu në këtë moment është hello.c.
Dhe kjo është e mirë, sepse unë vetëm shkroi këtë.
>> Pra më lejoni të shkoj përpara dhe të bëni përshëndetje.
Dhe vini re unë nuk jam bërë shtypur hello.c.
Në vend të kësaj, unë jam vetëm shtypni emrin e file bazë, hello.
Dhe të bëjë, siç e pamë hënën, thjesht do të tregoj se unë dua
. fotografi c.
Deri tani unë kam shtypur bërë hello.
Tani unë shoh këtë komandë mjaft të gjatë dhe do të vazhdojë
shohim këtë përsëri dhe përsëri.
Por të jetë i qartë, tingëllimë, fjalë që sapo u shfaq,
kjo është përpilues aktuale.
Të bëjë është vetëm një dobi e ndërtuar.
Kjo është vetëm një program shumë përdorues miqësore që kursen mua, në
afatgjatë, nga detyrimi për të tipit më tepër të lodhshme gjatë
komandat si se një.
Kështu që ju mund të kandidojë tingëllimë dorë.
Ju mund të shkruani të gjithë se me dorë.
Vetëm merr shumë e lodhshme.
Dhe kështu bëjnë është vetëm një program që thjeshton jetën tonë dhe
shkon komandat më komplekse për ne.
>> Të gjithë të drejtë, kështu që tani se çfarë fotografi duhet të ketë
në directory tim aktual?
Jo vetëm hello.c, por edhe përshëndetje.
Pra, nëse unë dua të drejtuar hello, kujtojmë se them dot plagë,
ku thotë dot shkoni në dosjen aktuale, kudo që
janë, dhe pastaj të drejtuar programin e quajtur hello, dhe në të vërtetë, tani,
Kam botë Hello.
Të gjithë të drejtë, ndonjë pyetje në workflow ose Sintaksa e
ajo që ne vetëm e bëri?
>> Të gjithë të drejtë, kështu që le të marrin gjërat një nivel përsëri.
Pra, kjo ishte underwhelming të vetëm të shkruaj një program që vetëm
ndonjëherë thotë hello, bota.
Pra, ne kemi ndryshuar atë, të hënën, për të thënë, hello, David.
Kjo është pak më shumë personale, por vetëm sa e vështirë koduar si
Versioni i parë.
Pra, jo të gjithë që imponues.
Por ekziston, në C, sigurisht përveç funksioneve
shtypura, funksionet që ju lejojnë të merrni të dhëna të përdoruesit.
Dhe mënyra se si e bëri këtë, ditë të tjera, ishte si më poshtë.
Para se unë në fakt të shtypura nga diçka, kam parë mori
diçka nga përdoruesit.
Pra më lejoni të bëjë këtë përsëri.
>> String s, ku s është vetëm një emër i arbitrare, këtu, për një
string, e barabartë getString.
Pra, çfarë është getString?
Ajo padyshim merr një varg, bazuar në emrin e saj.
Por çfarë është ajo, më teknikisht?
Kjo është një funksion.
Pra, kjo është një funksion që nuk ka ardhur me C në vetvete.
CS50 Stafi shkroi këtë.
Dhe në mënyrë që të përdorni këtë, ju nuk mund të përfshijnë vetëm stdio.h,
Ju gjithashtu duhet të përfshijë çfarë?
Po.
Pra cs50.h, e cila është vetëm një skedar kemi shkruar disa vite më parë.
Ne instaluar atë në aplikim për ju së bashku
të gjitha dosjet standarde.
Dhe kështu në këto javët e para e klasës, ne do të përdorim
kjo vetëm për të lehtësuar procesin e bërë shumë themelore
gjëra si të dhëna marrjen përdoruesit.
Sepse si ne do të shohim në disa javë, duke marrë të dhëna përdoruesi në një
Gjuha C si është në të vërtetë e habitshme komplekse,
veçanërisht për shkak se ju nuk e dini paraprakisht, zakonisht, si
gjëra shumë përdorues do të shkruani in
Dhe kur ju nuk e dini se sa të dhëna të presin, ju nuk e bëni
e di se sa memorie të ndajë.
Dhe në qoftë se ju në të vërtetë keni një përdorues i cili është duke u përpjekur pavolitshëm
të kollitem në sistemin tuaj, të rrëzimit kompjuterin tuaj, edhe,
përgjithësi metoda e parë e sulmit është, ashtu siç kam bërë në
E hënë, shtypni një rend të gjatë të tërë shkronja të rastit,
hit Enter, dhe shikoni se çfarë prishet.
Sepse në përgjithësi, në qoftë se një program prishet, që aludon në
një krisje të sigurisë, potencialisht.
Kjo sigurisht aludon në ju, programues, duke bërë një
gabim, por më shumë të rrezikshme, ju mund të keni bërë një
sigurisë të lidhura me gabim, dhe në përgjithësi ne do të shohim se
kjo është se si makina janë komprometuar në këtë ditë, të dyja
në botën e internetit dhe programeve në
command line, si kjo.
>> Dakord.
Pra string s barabartë getString.
Pra, më konkretisht tani, çfarë do të vijë 6 bëjmë këtu?
Pra, funksioni në të djathtë merr varg,
merr sa argumente?
Rregull.
Pra askush.
Një mendje e shëndoshë pak kontrolloni.
Një argument, përsëri, është vetëm një input për një funksion për të ndryshuar
sjellja e saj e parazgjedhur në një farë mënyre.
Por në këtë rast, unë nuk dua të ndryshojnë
Sjellja e getString.
Unë vetëm të kërkuar për të marrë një varg.
Pra, kam vënë asgjë në kllapa, dhe pastaj kam vënë një
pikëpresje demarking fundin e vijës së kodit.
Tani, është e barabartë me shenjë nuk do të thotë të barabartë, në vetvete.
Kjo do të thotë detyrë, që do të thotë të vënë çdo gjë merr
outputted në brendësi të drejtën e çdo gjë që është në të majtë.
>> Pra, në të majtë, të themi se ne kemi deklaruar një
string quajtur s.
Dhe më konkretisht, ne kemi ndarë memorie brenda
të cilat ne do të vënë copa që përfaqëson një sekuencë të
karaktere.
Por për sot, ne kemi ndarë
ose deklaruar një varg.
Dakord.
Deri tani sapo kam bërë këtë, unë dua të plug në vlerën e
nuk është, vlera e Davidit.
Pra, kjo është e gabuar pse?
Pra, kjo është vetëm fjalë për fjalë hard-coded s.
Është për të thënë "Hello, s", i cili nuk është ajo që unë dua.
Kështu që unë mund ta bëjë këtë.
Shenja për qind është një placeholder, por tani kam nevojë për të
kalojnë në printoni një argument të dytë.
Kujtojnë se argumentet për funksionet janë të ndara nga
presje, kështu presje tjetër këtu kam vënë pas kësaj letër s.
Dhe në këtë kontekst tani, s është e ndryshueshme, dhe printf,
pas marrjes këto dy inpute -
string në të majtë dhe s ndryshueshme emrin në të djathtë -
ajo do të plug të fundit në ish për ne, dhe
vetëm të shtypura nga një varg bukur bukur që përmban
çfarëdo qoftë ajo është që ne të shtypen in
>> Pra, le të provoni këtë.
Do të shkojnë përpara dhe zoom jashtë, përsëri
në dritaren time terminal.
Zoom në në fund këtu.
Rivendos bëni përshëndetje.
Tingëllimë duket të ketë qenë përsëritje.
Unë jam duke shkuar për të tipit. / Hello, Enter.
Asgjë nuk duket të jetë ndodh ende, por kjo është në këtë shpejtë
që unë mund të shtypni diçka si Nate, Enter, dhe tani ne kemi
Hello, Nate.
Dhe unë mund të bëjë atë përsëri me Rob, dhe kështu me radhë.
Kështu që shpresojmë se tani ky program po sillet si kam ndërmend.
>> Tani, jo të gjitha që përdorues miqësore.
Kam asnjë ide se çfarë është duke pritur për mua.
Pra, ne me siguri mund të pastruar këtë deri pak.
Më lejoni të shkojë mbrapa deri këtu, dhe në vend të vetëm dhe zhytjen në
kërkuar e përdoruesit për një varg, më lejoni t'ju them në mënyrë eksplicite
Përdorues atë që unë jam duke pritur.
Pra printf ("Shkruani një varg:"
);
Kështu që nuk ka variabla këtu.
Ka shenja për qind.
Vetëm fraza anglisht thjeshtë.
Më lejoni tani të shkojnë në fund këtu dhe ribërjen programin tim.
Por asgjë nuk duket të ketë ndryshuar.
Pse?
Unë duhet të përpiluar atë.
Pra gabim e lehtë për të bërë.
Por ju duhet jo vetëm të ruajtur kartelën por
recompile programin.
Dhe kështu, nëse unë të ri-drejtuar bëjë hello, tani tingëllimë shkon.
Tani unë mund të kandidojë. / Hello. Dhe tani shoh "Futni një varg:".
Rregull.
Tani ajo është një pak më shumë përdorues-miqësor.
Nate, Enter, hello, Nate.
>> E pra, le të provoni këtë përsëri dhe të fillojnë të mendojnë
për raste qoshe.
Pra, ashtu si në Scratch, ju jeni të inkurajuar ose janë duke u
inkurajuar në spekulim për lloj të mendoni se çka mund të shkojnë
keq në qoftë se ju nuk parashikojnë çdo gjë përdorues mund të bëjë.
Mete, prandaj, mund të pasojnë.
Kështu hyjnë në një varg -
çfarë është një rast qoshe këtu?
Çfarë është një skenar që unë, programues, nuk mund të ketë
parashikuar?
Po.
Rregull.
Pra, çfarë nëse unë të shkruani në një numër si ky?
Dakord.
Pra, ai ende punon.
Gramatically nuk ka kuptim.
Por të paktën programi punon.
>> Çfarë është një rast tjetër qoshe?
Diçka që unë nuk pres.
Po?
Rregull.
Pra, ne mund të bëjmë diçka si një numër të vërtetë, të vërtetë e madhe.
Pra, le ta bëjmë këtë këtu.
Më lejoni të zoom jashtë për një sekondë, më lejoni të theksoj.
Nuk mund të kopjoni dhe ngjisni këtu poshtë.
Dakord.
Kështu që unë nuk mund të kopjoni dhe ngjisni këtë dritare terminali, kështu që ne do të
vetëm simulojnë atë.
Më lejoni të zoom jashtë, do të përfundojë.
Unë nuk jam duke shkuar për të bërë këtë për një kohë të gjatë, sepse ajo nuk do të
të vërtetë thyer në këtë program.
Por ajo mund të.
Enter.
Por ai nuk e bëri.
Dakord.
Por kjo është një rast i vërtetë qoshe.
Dhe arsyeja e vetme që sillen si duhet, në mënyrë që të
flasin, sepse CS50 getString funksioni është në të vërtetë
projektuar nën kapuç, siç do të shohim në disa javë,
automatikisht të ndajë RAM më shumë, gjithnjë e më shumë
kujtim nga sistemi operativ, kur ajo realizon, wow,
ju keni shtypur të vërtetë në diçka mjaft të gjatë.
Tani, kjo është pak e një gënjeshtër të bardhë.
Nëse ne fakt ndaluar për një kohë mjaft dhe unë shtypur në
diçka si 5 miliardë karaktereve në tastierë
këtu, apo goditur me të vërtetë copy-paste mjaft, ne mjaft ndoshta
mund të shkaktojë programin për të rrëzuar.
Vetëm pak më e vështirë për të simuluar se me një fundme
Sasinë e kohës.
>> Çfarë është një tjetër rast këndi ne mund të provoni?
Po?
Po.
Pra, pse nuk kemi përgjigje asgjë?
Pra, ne në fakt duhet të marrë disa masa, sepse përndryshe
Programi do të rrinë atje keq gjatë gjithë ditës.
Por në qoftë se unë vetëm hit Enter -
OK, tani, ende duket e gabuar.
A nuk e rrëzimit, por ndoshta ka tani një mundësi për të
të fillojë zbatimin e një programi më rigoroz
që aktualisht kontrollon.
Dhe nëse vargu, fjalia, fjala që unë
shtypur në ka gjatësi 0, mirë, ndoshta unë duhet të çirrem në
user, ose thoni atij apo të saj për të hyrë në një varg sërish, në mënyrë që
ne fakt ajo që duket si sjellje korrekte dhe të mos
vetëm mbikëqyrje të plotë nga ana ime.
>> Pyetje në shpinë?
Numri dhjetor.
Pra, ne mund të përpiqemi që, too.
1,10000005.
Duket si kjo do të punojnë vetëm të vërtetë në rregull.
Dhe që në fakt pritet.
Edhe pse ne mund të keni shtypur atë numër atje, ose një
Numri më i madh më herët, e kuptojnë se kur ne jemi duke shtypur përdorues
input dhe ne jemi duke përdorur funksionin getString, nuk
marrë parasysh nëse ajo që unë jam duke shtypur duket si një numër.
Kujtojnë se në bazë të ASCII, çdo gjë në tuaj
Tastierë ka një vlerë numerike që mund të jetë plotësisht në një
karakter, një char.
Pra, në këtë rast, edhe pse unë mund të shtypni një numër,
kompjuteri do të mendoj për të, kështu që të flasin, si një varg -
diçka që duket si një numër, por është
jo të vërtetë një numër.
Por kjo është në fakt një Segue përsosur, sepse tani ne mund
në fakt kalimi në programet shkrim se
përdorin të dhëna të tjera lloje.
>> Pra, përveç përdorimit të chars, ose më mirë, përveç duke përdorur vargjet,
kuptojnë se ne kemi të dhëna të tjera lloje në C si dhe në
gjuhë të tjera.
Një char, siç sugjeron emri, është vetëm një karakter të vetme.
Një noton është një vlerë lundrues pikë, dhe kjo është vetëm një tekë
mënyrë për të thënë një numër të vërtetë - diçka që ka një decimal të
pikë në atë me disa numra të majtë dhe / apo të djathtë.
Një int është një numër i plotë, e cila është vetëm një numër si 123.
Dhe tani më interesant janë gjëra të tilla si dyfishin.
Çfarë të themi një të dyfishtë ishte hera e fundit?
Kjo është 64, e drejtë.
Pra, ndërsa zakonisht një noton është 32-bit -
kështu që kjo kohë të gjatë në kujtesë, ai përdor 32 zero dhe ato të
përfaqësojnë vlerat - një dyfishtë është fjalë për fjalë dy herë se, e cila
do të thotë që ju mund ta përfaqësojnë numra të mëdha, ose
ju mund të përfaqësojnë numrat më të sakta.
Kështu që ju mund të ketë më shumë numra pas presjes dhjetore, por
si shokët e tha në video, edhe diçka e thjeshtë
konceptualisht si 1/3 nuk mund të përfaqësohet pikërisht nga një
kompjuter, sepse përfundimisht ju drejtuar nga copa dhe
prandaj ju mund ta bëni vetëm .33333333 herë kaq shumë, në
cilën pikë ju vetëm duhet të them unë jam nga përfaqësimit
hapësirë, unë kam për të vetëm e quajti atë një ditë dhe përfaqësojnë atë
disi imprecisely pëlqen këtë.
Dhe një kohë të gjatë -
Emri budalla, por kjo është për shkak se ka një lloj të dhënave njohur si një
gjatë në C e cila rastësisht është shpesh 32 bit, ashtu si një
int është 32 bit, por një kohë të gjatë është
zakonisht 64 bit.
Pra, kjo thjesht do të thotë që ju mund të përfaqësojnë të mëdha
Numrat se kjo.
>> Dakord.
Pra, në qoftë se ne të vërtetë duan të fillojnë përfaqësojnë gjëra, ne
mund të kenë nevojë më shumë lloje të sofistikuara, dhe
kjo është arsyeja pse ne kemi string.
Pra, në bibliotekë CS50, që file i quajtur cs50.h, ne kemi
vërtetë është deklaruar një lloj të dhënave, kështu që të flasin, të quajtur string,
por varg nuk ka të vërtetë ekziston.
Kjo është, përsëri, një prej këtyre shtresave ne do të zhvishem
përsëri në një javë ose dy dhe hedhin atë larg, dhe në fakt
shikoni nën kapuç në atë që në fakt është një varg, dhe
se si është përfaqësuar.
Ne jemi gjithashtu do të shikojmë në vlerat Boolean.
>> Pra, çfarë ishte një bool në kontekstin e Scratch?
Është e vërtetë apo e rreme.
Pra, kjo është vetëm një vlerë që është e vërtetë apo e rreme, ose jashtë, 1 ose
0, megjithatë ju dëshironi për të parë botën.
Pra në C, në sajë të bibliotekës CS50, e cila nga ana
përfshin një bibliotekë nën kapuç, ne kemi
qasje në një lloj të dhënave që është quajtur bool, e cila do të
fjalë të na lejojë që të caktojë vlerat e vërtetë apo e rreme të
gjërat në një program.
>> Pra, le të shkojnë përpara këtu dhe shkruani një program i vogël që
bën diçka që përfshin numra në vend.
Pra më lejoni të shkoj përsëri në Appliance CS50, më lër të shkoj përpara dhe të
të krijojë një skedar të ri të quajtur këtu -
le të them vetëm diçka e thjeshtë, si math.c.
Dakord.
Dhe tani të shkojnë deri në krye të programit tim, unë jam
do të bëjë zakonisht -
# Include , në mënyrë që unë mund të përdorni
printf, int main (void) -
ne do të kthehen në, përfundimisht, çfarë do të thotë int
këtu, se çfarë do të thotë pavlefshëm këtu, por tani për tani, vetëm e di se
ju duhet për të filluar programe si kjo.
Tani unë jam duke shkuar për të shkuar përpara dhe të thonë diçka pak
ndryshme - printf ("Jepni një numër:"
);.
Atëherë unë jam duke shkuar për të bërë int n = GetInt, sepse ajo
Rezulton GetInt është një tjetër funksion në bibliotekë CS50
përveç getString.
Dhe tani unë jam duke shkuar për të bërë diçka stupid, si "falë
për të d%, "për integer decimal, dhe pastaj n presje, dhe
pastaj kthehen 0.
Pra, përsëri, kthehet 0 ka asgjë të bëjë me numrin e unë jam
kërkuar e përdoruesit për të.
Vetëm tregon në fund që të gjithë, me sa duket, është e mirë.
>> Pra më lejoni të shkoj poshtë në dritaren time terminal këtu.
Më lejoni të bëjë matematikë shkruani, shkruani.
Dhe diçka është e gabuar.
Bëjë matematikë nuk keni punuar.
Këtu është i pari i mesazheve tona gabimit.
Pse?
Një fshehtë pak, por -
Po.
Pra cs50.h.
Pra, përsëri, sidomos në fillim, ju do të shkruani tuaj të parë
Programi për pset 1 në seksione, në orarit të punës, dhe
sinqerisht, ajo do të jetë e madhe ndonjëherë se çfarë këto gjëra
në të vërtetë janë thënë.
Por ju do të kuptojë shumë shpejt ata fillojnë të bien
në kova ku kjo do të thotë se ju kam lënë jashtë një
i # përfshin në majë të dosjes.
Dhe tingëllimë, përpilues, është informuar për këtë nga
thënë, në vend fancifully, deklarata e nënkuptuar
GetInt funksion është i pavlefshëm.
>> Dakord.
Pra, çfarë do të thotë kjo?
Kjo thjesht do të thotë që ju keni deklaruar në mënyrë implicite GetInt
ndjenja që ju nuk e kanë deklaruar në mënyrë eksplicite atë.
Të deklarojë shprehimisht int, ju duhet për të mësuar
Tingëllimë se ajo ekziston.
Dhe zgjidhje shumë e thjeshtë për këtë është për të mësuar atë nga
duke përfshirë edhe këtë skedë tjetër, cs50.h, në
të lartë të dosjen tuaj.
Sepse fjalë për fjalë, çfarë e bën # include është ajo tregon tingëllimë
shumë e shumë për të shkuar të gjetur dosjen e quajtur cs50.h, kopje,
ngjitur automatikisht në krye të programit tim për mua,
dhe pastaj konvertohet kodin burim për zero dhe ato.
Por që padyshim do të jetë shumë e lodhshme qoftë se ne njerëzit kishin
për të shkuar kopjimi dhe pasting këto fotografi të mëdha gjatë gjithë kohës,
kështu # përfshijë vetëm bën të gjitha ato që automatikisht pa
muddying kodin tim me bibliotekën e dikujt tjetër.
Dhe një bibliotekë është vetëm një tjetër dosje që përmban funksione dhe
gjëra të tjera që dikush tjetër ka shkruar, se ne jemi
leveraging për të mirën tonë.
>> Dakord.
Le të provoni përsëri.
Të bëjë matematikë.
Enter.
Mirë.
Kështu që duket se kanë punuar.
Pra më lejoni tani të drejtuar matematikë;. / Math.
Shkruani jep mua një numër, 123.
Faleminderit për 123.
Tani le të provoni një tjetër rast qoshe.
Një varg është shumë bujare, sepse një
string mund të jetë çdo gjë.
Mund të duket si numra, duken si
karaktere, duken si fjalë.
Por një int është një int.
Kështu që tani, nëse unë jam përdoruesi i vështirë, dhe është thënë: "Më jep edhe mua
një numër, "çka nëse unë të përpiqet të bëjë diçka si 0,1?
E pra, kjo është një numër, dhe kjo është në përputhje me
gramatika kam përdorur këtu, por nën kapuç, unë jam i
Kursi përdorur GetInt funksion.
>> Pra, le të shohim se çfarë ndodh.
Shkruani, rigjykuar.
Dakord.
Më lejoni të jetë e vështirë dhe goditi vetëm Shkruani përsëri.
Shkruani, Enter.
Deri tani duket se GetInt është pak më
fuqishëm se getString.
Ne, stafi, zbatohet në mënyrë të tillë që në qoftë se ne njoftim
ju nuk na kanë dhënë një int - dhe një int është një numër decimal
zero përmbajnë, ato, dy, katër këmbë, five, sixes,
Sevens, tetë, ose numër nëntë.
Dhe kjo është ajo.
Asnjë pikë dhjetore, ka karaktere, nuk ka shenja pikësimi.
Duket se ne duhet të bashkëpunojmë.
Pra më lejoni të provoni katër, pesë, gjashtë, dhe që merr mua përmes.
Pra me të vërtetë, për të anal këtu, unë ndoshta duhet të thonë "Më jep edhe mua
një numër të plotë "në mënyrë që të përcjellë të përdoruesit
pikërisht ajo që kam ndërmend.
>> Tani le të mendojmë për nën kapuç.
Ne nuk jemi duke shkuar për të parë se si po zbatohet cs50.h sot,
se biblioteka.
Por në qoftë se ajo mban duke thënë rigjykuar, rigjykuar, rigjykuar, çfarë programimi
ndërtojnë jam unë duket përdorur nën kapuç në
zbatojnë atë?
Pra, vetëm një lak, e drejtë?
Një nga idetë më të thjeshtë që ne pamë në Scratch.
Gjithmone ndërtimin, Përsërit ndërtojnë.
Me sa duket, në këtë program, nën kapuç, edhe
pse është e shkruar në C dhe jo zeroja, ajo është bërë
diçka që quhet ekuivalente përgjithmonë në qoftë se përdoruesi nuk ka
shtypur në një numër të plotë, të themi rigjykuar, rigjykuar, rigjykuar, rigjykuar, kështu që
pastaj në fund, kur ne do të marrë një numër të plotë, atëherë ju
thyer nga ky lak.
>> Pra, çfarë funksione të tjera mund të përdorim këtu në bibliotekën CS50 s?
Mirë, lloj nga ato të dukshme, të paktën bazuar në
lloje të të dhënave që ne tani e dimë ekzistojnë.
Ne zbatuar getString, GetInt, por në të gjithë
javëve të para të mandatit, ju gjithashtu mund të përdorni dhe GetFloat
GetDouble dhe GetLongLong në mënyrë që të merrni pikërisht
lloje të të dhënave që ju dëshironi.
Sepse detaj kyç këtu është se ndryshe nga disa gjuhë,
si Python dhe Ruby, ku ju nuk domosdoshmërisht duhet të
deklaruar llojin e të dhënave të një variable -
ju nuk keni për të të treguar në kompjuter se çfarë lloj të gjëra
ju do të jeni për të vënë në variabli -
në C, ju duhet të jetë ndonjëherë në mënyrë të saktë.
Pra, nëse ju doni një ndryshore të quajtur n, një copë e magazinimit
se në këtë rast ndodh të jetë 32 bit nga Konventa, ju
duhet të them se këto bit kompjuter janë
duke shkuar për të ruajtur një numër -
nuk është një karakter, jo një varg, nuk noton.
Dhe kjo adreson çështje ne mënyrë efektive
u zhvillua në javën e kaluar.
Në qoftë se ne jemi duke përdorur zero dhe ato numrat për të përfaqësuar jo vetëm
Numrat por si dhe BS dhe Cs, si në botë është një
kompjuter do të dinë se ky model i vërtetë bit
paraqet numrin 65, në krahasim me përfaqësojnë
letër Një, e cila coincidentally, sipas
ASCII, kujtojnë, ishte ekuivalente me 65?
>> Pra, këto lloje të të dhënave të sigurojë kontekstin në kompjuter, kështu që
se ajo e di nëse këto copa duhet të interpretohet si një
int ose si një varg.
Çfarëdo pyetjeje, atëherë, në këtë?
Po?
DAVID J. Malan: Pyetje e mirë.
Nëse marrim nga stdio.h, ne ruani skedarin -
më lejoni të shkoj poshtë në dritaren e terminalit dhe të drejtuar, të bëjë matematikë zoom
në dhe të hyjë -
tani kam marrë një gabim tjetër, sepse unë jam pa dyshim
deklaruar atë që funksionojnë tani?
Printf.
Deri tani unë kam krijuar një problem të ri, të cilit zgjidhja është
në thelb të njëjtën gjë.
Unë kam nevojë për të vënë atë përsëri.
Audienca: [padëgjueshme]
DAVID J. Malan: Oh.
Pra, nëse unë të marrë jashtë -
Mirë, po.
Pra, nëse unë heq përfshirjen e standardit I / O bibliotekës deri
këtu, dhe pastaj ju jeni duke thënë, nëse unë të shpëtoj printf, të merrni
shpëtoj printf?
Po.
Kjo duhet të punojë, sepse unë nuk jam më duke përdorur ndonjë - uh.
A Unë vetëm gënjeshtër?
Oh, në rregull.
Kjo nuk do të punojë për shkak të një gabimi të ri që sapo futur.
Dhe kjo është një pak më shumë vetë-shpjeguese.
>> Çfarë është problemi?
N papërdorura ndryshueshme.
Pra, ky gabim është rezultat i ynë ka konfiguruar
aplikim të jetë veçanërisht pedant, me të vërtetë çirrem në
ju për çdo gabim të mundshëm, edhe në qoftë se kjo është një lloj i
një organizatë jo-fatale gabim si kjo - është me të vërtetë të tillë një i madh
merren se kam ndarë një int, të vënë një numër në të, dhe pastaj
vetëm nuk bëri asgjë me të?
Pra funksionalisht, nr.
Kjo nuk do të thyejnë këtë program.
Kjo është vetëm lloj i trashë, e drejtë?
Nuk ka asnjë vlerë për të ka kërkuar atij numri, të ruhet
atë në një variabël, në qoftë se ju nuk do të jeni për të bërë asgjë
me atë, nëse shtypura apo ruani atë.
Pra, në këtë rast, është pranuar tingëllimë sa më shumë, dhe
kjo është thënë n papërdorura ndryshueshme.
>> Pra, ne mund të rregullojmë këtë në qoftë se ne të vërtetë duan.
Por përsëri, kjo nuk është duke programuar mirë tani.
Kështu që unë vetëm mund ta bëjë këtë -
të shkojnë poshtë këtu, më lejoni të qartë në ekran, të bëjë matematikë.
Që punon.
Tani unë mund të drejtuar programin tim të matematikës, merr input -
mirë, se ishte e keqe.
Merr të dhëna, dhe kjo është e gjitha e bën atë, në këtë rast.
>> Pra në fakt, le të përpiqemi një rast tjetër që ne qoshe
nuk mendoj se e parë.
Në këtë rast - këtu, le të kthehemi në atë që është një
pak më shumë përdorues-miqësor.
Më lejoni të kthehem këtu dhe të drejtuar make matematikë përsëri.
Uh, çfarë nuk kam bërë gabim?
Got për të rrokulliset përsëri më tej.
Rregull.
Tani ne jemi kthyer në gjendjen origjinale, ku të gjithë
është shpresë mirë.
Dhe tani, nëse unë të drejtuar matematikë, 123 duket për të punuar.
Por kjo nuk është me të vërtetë një dëshmi efektive, të them vetëm
rregull, që punon.
789, që punon.
Koha për të paraqitur.
Sepse nuk ka raste të tjera qoshe këtu.
Një varg nuk ka të vërtetë të na japë shumë probleme nga shtypja në një
tërësi shumë të karaktereve.
Por çfarë nëse unë lloji në këtë?
Goditur numrin 1 një tërësi shumë më shumë, gjithë këtu -
të gjithë të drejtë, ai është duke marrë një mërzitshëm pak, kështu që unë jam duke shkuar për të
ndalet këtu, dhe unë jam duke shkuar për të goditur Enter.
>> Çfarë dreqin ka ndodhur vetëm?
Kështu që kjo në fakt mund të shpjegohet.
Pra, e bëri atë të marrë atë si binar?
Një mendim i mirë, por jo, nuk është fakti se ai e mori atë
si binar, sepse në të vërtetë, kjo ishte vetëm një lloj i
rastësi.
Ne mund ta bëjë këtë përsëri.
Kështu që nuk ka 2 në sistemin binar, kjo është
ndoshta e mjaftueshme anyway.
Enter.
Kështu që nuk ishte problem.
Çfarë tjetër?
Saktësisht.
>> Pra, mendoni përsëri në atë që një int fakt është.
Kjo është 32 bit të cilat janë interpretuar kolektive
si një numër.
Nëse ju keni 32 bit, do të thotë se secili prej bit mund të jetë
një 0 ose një. 1, 0 ose një 1
Pra, kjo do të thotë se ka dy mundësi për këtë pak,
dy mundësi për këtë, dy mundësi për këtë
bit - kështu që është 2 herë 2 herë -
kështu që është 2 në fuqinë 32 është numri i përgjithshëm i
permutations e zero dhe ato në qoftë se ju keni 32
placeholders, zero ose ato, në frontin e ju.
Pra, nëse unë kam 2 në 32, matematikisht, që është ajo?
Pra, kjo është një shumë.
Kjo është 4 miliardë, të japë ose të marrë.
Dhe 4 miliardë nuk duket të jetë ajo që është shtypur këtu.
Në fakt, kjo duket më afër 2 miliardë.
Por kjo nuk është një rastësi.
Fakti që kompjuteri ka keqinterpretuar numrin tim të madh,
Sekuenca im i madh nga ato dhe pastaj rendin tim të madh të twos,
si rreth 2 miliardë, është shpjeguar se si?
Ka një kapak në int.
Ka një siguri një vlerë maksimale që ju mund të përfaqësojnë.
Por kjo është zakonisht 4 miliardë, e drejtë?
Nëse 2 të 32 është afërsisht 4 miliardë, që duket si
që është numri më i madh.
Pra, jo një tjetër, por një mendim të mirë.
Numrat negative.
Pra, nëse ju keni 4 miliard gjëra mundshme që ju mund
përfaqësojnë me këto permutations të ndryshme të 32 0s dhe
1s, mirë, ajo qëndron për arsye se ne njerëzit mund të dëshironi të
përfaqësojnë jo vetëm integers pozitiv
por integers negative.
Dhe vërtet, kjo është supozimi se C bën.
Pra, me 32 bit, ju mund të përfaqësojnë përafërsisht negative 2
miliardë të gjithë rrugën deri në 2 miliardë pozitive.
Dhe kështu në këtë rast, ajo që ne jemi me të vërtetë shohim është vetëm
ekstremi periferik i kapaciteteve të integer tonë, dhe ne kemi, kështu që
për të folur, mbush një numër të plotë.
Ne kemi provuar për të mbushur bit më shumë në atë se në fakt mund të përshtaten.
Pra, rezultati përfundimtar është se ne thelb kemi krejt 1 bit.
Ne kemi kthyer të gjitha bit tona në, ne kemi provuar për të përfaqësuar
numri më i madh të jetë e mundur, por kjo nuk është e qartë gati
mjaft e madhe për të përfaqësuar dy gjëra që unë kam shtypur vetëm in
Po?
Audienca: [padëgjueshme]
>> DAVID J. Malan: Pyetje e mirë.
Pse nuk mund të kemi vetëm përfaqëson se negative
nënshkruajnë vetëm si një karakter?
Pra, ne mund absolutisht, dhe ne mund të pastaj të shpëtuar
një grimë shtesë.
Por ju jeni ende do të duhet të përfaqësojë atë dash, dhe
që do të ju kushtojë të paktën diçka,
duket pak.
Pra, po, ne mund të kemi 32 bit përdoren për numrin tonë, por tani
ne kemi nevojë për një tjetër pak përdoret për dash tonë
simbol, shenjë minus.
Deri tani ne kemi 33 bit vlerat, të cilat ne mund të bëjmë, por është e
jo vetëm mënyrën se si ajo është bërë.
Ne kemi bërë një gjykim years thirrje më parë, 32 bit është lloj i
njësia e matjes këtu.
Pra, ne jemi duke shkuar për të përdorur një nga ato copa në mënyrë efektive për të
paraqesin negativitet, dhe 31 bit të përfaqësojnë numrin.
Pyetje të tjera?
Dakord.
Kjo është një shumë.
Pse nuk shkojmë përpara dhe të marrë pesë-minutësh pushim tonë këtu?
>> Dakord.
Pra, përsëri, për të mos overemphasize aplikimet matematikore
e programimit, le të vetëm nxirre jashtë këtë një shembull
para se të shkojë në konstruktet e tjera, vetëm për shkak se ajo
do të ilustruar disa pika të përbashkëta pengues në disa nga
bazat kur është fjala për programet e shkruar.
Në këtë rast, duke bërë shprehje aritmetike që kanë disa
Rëndësia interesante për sintaksë.
>> Pra, kjo është vetëm një formulë me të cilën ne mund të konvertohet
Temperaturat nga Fahrenheit për gradë Celsius.
Nëse ju nuk kujtohet, kjo është vetëm formula.
Pra, nëse ne të vihet në prizë Fahrenheit vlerë prej 32 gradë, që është
ngrirjes, që do të jetë 32 minus 32 është 0, dhe në të vërtetë,
0 në Celsius është gjithashtu ngrirjes.
Pra, mendje e shëndoshë të shpejtë shikoni atje - kjo është formula e njohur.
Më lejoni të shkoj mbi të pajisjes, edhe pse, dhe të fillojnë të
shkruar një program të quajtur, si, f2c, "Fahrenheit të
Celsius dot c ".
Dhe deri në fillim këtu, unë jam duke shkuar për të nisem me # përfshijnë
stdio.h, dhe unë jam duke shkuar për të bërë kryesore int (i pavlefshëm), dhe
përsëri, ne do të kthehet në të ardhmen se çfarë do të thotë int
atje dhe se çfarë do të thotë pavlefshme atje.
Dhe tani më lejoni të shkoj përpara dhe të zbatojë një program që
thelb e bën këtë konvertim për ne.
>> Pra printf, le të themi, temperatura në gradë Fahrenheit.
Dhe pastaj më lejoni të shkoj përpara dhe të marrë vlera nga përdoruesi.
Çfarë lloj i vlerës duhet të marrë nga përdoruesi, nëse unë dua
ata të më jepni një temperaturë në Fahrenheit?
Po?
Çfarë do të propozojë?
Po.
Pra noton ndihet mjaft i arsyeshëm.
Ne kemi, përsëri, vetëm disa opsione që
ne kemi parë deri tani.
Ne kemi gjëra të tilla si char, float, int dyfishtë,, kohë të gjatë,
bool, string.
Pra nga këto, noton ndihet mjaft i arsyeshëm.
Ne mund të përdorim një të drejtë, të dyfishtë, sepse në qoftë se ne të vërtetë duan të
përfaqësojnë temperaturës së njeriut -
98,60000 -
ne mund të përdorim 64 bit për të bërë këtë, por ajo ndjehet si
overkill për temperaturën.
Pra, le të shkojnë vetëm me noton.
Tani kam nevojë për një ndryshore.
Vetëm për të mbajtur gjërat e thjeshta, unë jam duke shkuar për të thirrur atë f, por unë
mund të saktë ashtu siç e quajnë atë temperatura,
por as është e mirë.
Pra noton f = GetFloat.
Sa më shpejt që unë tani kam vendosur për të përdorur GetFloat, edhe pse, unë
nevojë për të bërë një korrigjim.
Po.
Pra, ne duhet të përfshijë # , përndryshe përpiluesit është
do të çirrem në ne.
Tani që unë kam një noton, më lejoni të shkoj përpara dhe të bëjë
konvertimit.
>> Pra, së pari, më lejoni të merrni në zakonin e këtu
komentuar kodin tim.
Pra, përsëri, një koment është vetëm një simbol të njeriut që është
nuk është pjesë e programit në vetvete, por një, ju ndihmon
kuptuar se çfarë keni bërë mëngjes, ose tjetër
muaj, ajo ndihmon shokët tuaj Mësimi kuptoni se çfarë keni bërë
ose çfarë keni menduar për të bërë, kështu që është e
Praktika përgjithësisht shumë mirë.
Çdo disa rreshta të kodit, të shkruar një koment për
veten ose kolegu juaj.
Kështu që këtu, unë jam duke shkuar për të thënë, "Pyetni përdorues për temperaturë."
Nuk duhet të jetë një fjali e plotë, vetëm një frazë të shkurtër.
Por ideja komentuar në C është se secili prej tuaj
Komentet duhet të fuqizojë ty - ose, të themi, një TF ose një koleg -
të cek programin tuaj dhe e di saktësisht se çfarë e bën atë, duke mos
aq shumë duke lexuar kodin, por duke lexuar komentet, të cilat
duhet të jetë i ngjeshur dhe i qartë.
Të gjithë të drejtë, kështu që tani më lejoni të shkoj përpara dhe të thonë, "Convert
Fahrenheit për gradë Celsius. "Kështu që unë jam duke shkuar për të shkuar përpara dhe të bëjë,
le të themi, noton c.
Ne do të vazhdojmë Celsius si një vlerë lundrues pikë.
>> Dhe më lejoni të marrë një goditje me thikë në këtë.
Formula është, përsëri, deri këtu.
Siç 5/9 herë F minus 32.
Pra, le ta bëjmë këtë.
Pra 5 ndarë nga 9, minus -
uh, unë messed it up tashmë.
Herë.
Pra 5/9 herë F minus 32.
Pra F minus 32, pikëpresje.
Dhe tani, këtu poshtë, unë jam duke shkuar për të shkuar përpara
dhe thonë, të shtypura rezultat.
Dhe kjo pjesë e lehtë. Printf.
Si mund të shkoj në lidhje me shtypjen e kësaj?
E pra, unë mund të them "Ky numër në Celsius është% f \ n",
vetëm për disa estetikë.
Dhe atëherë çfarë vlera dua të vihet në prizë këtu si të printf
Argumenti i dytë?
Rregull.
Pra, vetëm c.
Pra, ne do të fillojmë me këtë dhe pastaj të kthehen vetëm 0.
Përsëri, kjo nuk ka të bëjë me matematikë.
Kjo thjesht do të thotë të gjitha është e mirë.
>> Tani, kjo është e saktë, ky program?
Dakord.
Kështu që unë kam bërë disa gabime.
Edhe nëse ju nuk kanë idenë se çfarë programimi është, ju mund të lloj
e mbrapa konkludoj në klasën e shkollës çfarë
gabimet këtu mund të jetë.
Çfarë është një e parë?
Audienca: [padëgjueshme]
DAVID J. Malan: Po.
Pra, ne jemi të humbur kllapa.
Ajo ishte e qëllimshme që kam bërë në kllapa ide kryesore
rrëshqitje këtu, sepse nuk ka në fakt ky nocion e rendit
e operacioneve, ose përparësi, ku operacionet e caktuara -
shumëzimit -
kanë të detyrueshme të lartë, kanë përparësi të lartë, se sa gjëra të
si mbledhjen ose zbritjen.
Pra, ne kemi bërë këtë për vite me rradhë vetëm për të bërë të qartë pikërisht
çfarë operacioni matematik duhet të bëhet së pari.
Kështu që unë ndoshta duhet të imitojnë pikërisht këtë.
Përndryshe, kompjuteri është me sa duket do të përpiqemi të bëjmë
diçka si përçaj 5 nga 9, pastaj shumohen F, pastaj të zbriten
32 nga të gjithë gjë.
E cila nuk është, në fakt, ajo që ne duam të bëjmë.
Pra, le të kllapa.
Le të shtoni kllapa e mia këtu, kllapa këtu.
Le të vënë mbi këtë këtu.
Ja, unë vetëm vënë re një tjetër gabim kam bërë përgjatë rrugës.
Po?
Audienca: [padëgjueshme]
>> DAVID J. Malan: Ah.
Mirë.
Pra, ne në fakt kemi të njëjtin numër të plotë
Çështja e ndarjes nga para.
I saktë se, le të shohim se çfarë është simptomë.
Por ne do të kemi për të korrigjuar një
Gabimi tjetër këtu.
Po?
Audienca: [padëgjueshme]
DAVID J. Malan: Po.
Pra, kam bërë gabim budalla, por tepër të rëndësishme.
Kompjuteri nuk do të vetëm të kthehet një sy qorr dhe le
mua përdorin F kapitalit, kur unë vërtetë është deklaruar variabël
si një f vogla këtu, në përputhje 8.
Kështu që kam nevojë për të korrigjuar në linjë kapitalizimit 11 tim, që një
Momenti më parë ishte një F kryeqyteti gabimisht.
Po në lidhje këtu?
Kjo duhet të jetë të vogla, si dhe?
Ajo duhet të jetë, por kjo është një rastësi.
Kjo f% ka të bëjë asgjë me ndryshore.
Pra, vetëm të jetë super e qartë këtu, më lejoni të shkoj përpara dhe të
riemërtoni këtë, shkurtimisht, "temperaturën". Më lejoni të riemërtoni
kjo "temperaturë". Mos më lër të riemërtoni këtë.
Sepse, përsëri, f% globalisht do të thotë, "vlera lundrues pikë."
Ka asgjë të bëjë me ndryshore tim.
Por "temperatura" në të gjithë vendin është vetëm pak gojor,
kështu që unë jam duke shkuar për të shkuar përsëri në Fjala ime s "F".
>> Tani, më lejoni të shkoj përpara deri në dritaren time këtu.
Bëni f2c -
që ishte, përsëri, emri arbitrare unë
dha tek kjo skedë.
Duket se kanë hartuar.
Më lejoni të drejtuar f2c.
Enter.
Temperatura në gradë Fahrenheit - le të bëjë një e lehtë.
32.
OK, korrigjuar.
Por, nëse unë tani bëj 212 për valë -
damn.
Dakord.
Pra, nuk është e qartë saktë, nëse TF juaj përpiqet
të paktën dy vlerat.
Pra, çfarë është problemi këtu?
E pra, ju tashmë e vënë gishtin tuaj në atë çështje është.
Por pse është se çështja?
Deri këtu, kur unë jam duke bërë matematikë e 5 ndarë nga 9.
Pra konceptualisht, që është krejtësisht e saktë.
Tërësisht në përputhje me formulën e.
Por kompjuterat vetëm që pikërisht atë që ju
tregoni atyre për të bërë.
Dhe ajo që ne jemi në mënyrë efektive duke u thënë kompjuterin këtu është
ndani me 5 nga 9 numër i plotë numër i plotë
dhe jepni rezultatin.
Problemi është se, edhe pse, kur ju bëni ndarje duke përdorur të dhënat
lloje, prodhimi është i njëjtë dhënave lloji si inputeve.
Dhe kështu që nëse të dy inputet janë dy ints, prodhimi është duke shkuar
të jetë një int.
Dhe kështu 5 ndarë nga 9 është diçka pikë.
Por ajo që është numër i plotë më të afërt të vinte në diçka?
Pra, është e vërtetë 0.
Pra, siç kemi diskutuar të hënën, gjithçka pas decimal
Pika merr cunguar.
Ajo thjesht merr hedhur larg.
Pra, kjo është një gabim i plotë, për shkak se si edhe unë mund vetëm
shumohen gjithçka nga 0 këtu.
>> Tani, unë mund ta rregullojmë këtë në disa mënyra.
Unë mund ta bëjë këtë.
5.0 ndarë nga 9,0.
Teknikisht, unë as nuk duhet ta bëjnë këtë.
Ai e bën të mjaftojë për të vetëm të bëjë një nga numrat një noton -
ose të dyfishtë - duke vendosur pikën decimal këtu.
Sepse ajo që ndodh tani është kur ju ndani një numër të plotë nga
a noton, ose një të dyfishtë, kompjuteri do të kuptojnë
oh, një nga ata që është më e saktë.
Më lejoni të gaboj në anën e duke ju dhënë më shumë saktësi se
ju qëllim.
Pra, kjo do të konvertohet në rezultat -
ajo do të kthejë rezultatin si një vlerë lundrues pikë si.
Kështu që do të punojë.
Kjo do të punojë.
Dhe ka një mekanizëm tjetër që ne do të shohim në
hollësi të madhe javën e ardhshme.
Ju mund të vërtetë, si programues, tregoni kompjuterin
që në fakt të trajtuar një lloj të të dhënave si
edhe pse kjo ishte një tjetër.
>> Kështu që unë në fakt mund të bëjë këtë.
Në kllapa, unë mund të them diçka si (noton), hapur
prindërve, prindërve afër.
Dhe kjo është ajo që quhet "hedh". Përsëri, më shumë
në këtë javën e ardhshme.
Por kjo është vetëm mënyrë programatike për të thënë
kompjuter, vërtet unë e di 9 është një numër të plotë apo të gjatë.
Unë e di se nuk është një vlerë lundrues pikë.
Por trajtojnë atë si të tillë gjithsesi.
Pra, për të hedhur një lloj të dhënave do të thotë për të kthyer
nga njëri në tjetrin.
Sinqerisht, kjo është vetëm pak e shëmtuar, kështu që unë do të propozojë që të shkojmë
Kthehu në sugjerimin origjinal të vetëm konvertimin e
këto gjëra për vlerat lundrues pikë dorë.
Sepse tani kjo është vetëm super e qartë se çfarë po ndodh, dhe
kjo nuk është e gjitha që vëmendjen.
>> Pra, le të kthehemi tani në dritaren time terminal.
Bëni f2c.
Më lejoni të shkojnë përpara dhe për të drejtuar këtë.
Dhe, si një mënjanë, ju mërzitem shtypur këto komanda
përsëri dhe përsëri, e kuptojnë se kompjuterët, si Linux ketu,
kanë tendencë të jetë goxha i zgjuar.
Dhe në qoftë se unë goditi Up, ne mund të shkoni nëpër historinë time të tërë të
komandat, lart dhe poshtë.
Pra, në këtë rast këtu, unë mund të shkoni vetëm për të kandiduar bërë f2c.
Unë jam duke u yelled at, sepse unë vetëm e bëri atë një të dytë më parë.
Kjo është tashmë deri në datën.
Deri tani unë mund të kandidojë f2c përsëri.
Le të përpiqemi 32 Fahrenheit.
Tani le të përpiqemi 212 Fahrenheit.
>> Uh.
Duket për të punuar.
Tani, kjo është e mirë, por ajo ndihet pak arbitrare që
Unë jam duke treguar gjashtë numra pas pikë dhjetore.
Drejtë?
Nëse ju jeni personi i motit në TV, ju jeni lloj i një Doofus
në qoftë se ju jeni duke e lexuar temperaturën në
kjo shkallë e saktësisë.
Pra, le të thjeshtojë këtë.
Pra, le të vërtetë të shkojnë deri këtu, për të printf im.
Dhe vërtet, unë dua të noton.
Por tani unë dua të specifikojë saktësi.
Dhe unë jam do të jetë një ngjeshur pak.
Unë jam duke shkuar për të thënë, ma jep një pikë pas vendin dhjetore.
Pra, në vend se të them f%, unë jam duke shkuar për të thonë% .1 f.
Dhe kjo thjesht do të thotë të më jepni një pozicion
pas presjes dhjetore.
Dakord.
Le të provoni këtë përsëri.
Më lejoni të ri-drejtuar atë pas përpilimit.
Dhe tani unë lloji në 32, dhe kam marrë përsëri një
vlera më e ngjeshur.
Dhe unë mund të shkruani, tani, 212, dhe për të marrë përsëri një ngjeshur më shumë
vlera si.
Dhe nuk ka gjëra të tjera që ju mund të bëni me printf.
Ju në fakt mund të specifikoni se sa e gjerë numër duhet të jetë.
Në qoftë se ju dëshironi të keni mbushje në të, kështu që ju mund të drejtë-align ose
majtë-align gjithë numrat tuaj ose
përpiqen për gjëra qendër.
Pra, nuk janë realizuar truket pak ju mund të bëni atje.
Por ata vetëm të valoj poshtë për kodet format,
si ne kemi atje.
>> Pra, për sa i përket kësaj çështjeje të përparësisë.
Kjo është një tabelë shumë e mërzitshme për të shkuar nëpër methodically.
Por e kuptojnë se autorët e C kanë dalë me
rregulla që specifikojnë që operatorët kanë larta
përparësi, më shumë pushtet detyrues, se të tjerët.
Pra, ndërsa në klasën e shkollës, ne përgjithësi e dinte se ajo ishte
shumëzimit dhe pjesëtimit, atëherë mbledhjes dhe të zbritjes,
pastaj disa sende të tjera.
Në një botë të programimit, ka një shumë të
Lista më e gjërave.
Dhe kjo nuk është diçka me vlerë memorizimin tani.
Ju do të merrni përshtaten me klimën me të para se të gjatë.
Por ashtu si në klasën e shkollës, kllapat në përgjithësi zgjidhur
çështjet e përparësisë, duke i bërë super të qartë
Kompjuteri dhe njerëzore ashtu çfarë është menduar.
Pra, e konsiderojnë këtë vetëm fletë mashtrojnë pak atje.
Por shumica e këtyre detaje ne nuk do të merrni për të për disa kohë.
>> Dakord.
Tani, le të ndërtojë dhe të lëvizin larg nga këto pak budalla
shembuj matematikore.
Ende përdorin bazat e njëjta, por të fillojë
shprehur veten pak më shumë si Scratch.
Pra, në Scratch, kemi pasur këto shprehje boolean.
Dhe në anglisht, një shprehje Boolean është ajo?
Vërtetë apo e rreme.
Kjo është diçka që vlerëson të vërtetë apo e rreme.
1 ose 0.
On ose off.
Çfarëdo që ju doni të telefononi atë.
Tani në Scratch, copa mister dukej si kjo.
Dhe kjo është kombinimi, në fund atje, prej tre
copa mister.
Një lidhje -
diçka që ka bosh dhe bosh.
Dhe pastaj dy shprehjet Boolean në brendësi të saj.
Kështu që ju mund të shprehjet fole Boolean për të marrë më shumë
komplikuar shprehje boolean.
Për shembull, në qoftë se ajo është e shtunë, dhe kjo është e bukur
moti, atëherë shkoni jashtë.
Ose diçka si kjo arbitrare.
Kështu që ju mund të bashkohet me shprehje boolean për të dalë me një
vlera më e madhe e vërteta, të cilit përgjigja është e bazuar
në ato më të vogla.
>> Tani, në C, fatmirësisht, kjo hartë është
në fakt shumë e thjeshtë.
Kllapat ndihmojë për ta bërë të qartë gjërat këtu.
&& Është ajo që do të thotë "dhe." Pra, kjo është se si
ne jemi duke shkuar për të kthyer ato blloqe nga e para për të C.
Dhe për kushtet e pamë në Scratch, në anën e majtë
Ana atje, unë mund të rafte e tyre të ngjashme në C. Nëse x është më pak
se y, pastaj të bëjë këtë.
Tjetër në qoftë se x është më i madh se y, pastaj të bëjë këtë.
Tjetër logjikisht ato duhet të jenë të barabartë, kështu thonë
se ata janë të barabartë.
Pra, ne tani mund të fillojnë për të ndërtuar këto gjëra deri.
>> Pra, le të bëjmë një shembull.
Më lejoni të hapur një skedë që është në faqen e internetit të kursit që
Kam shkruar më parë.
Kjo është quajtur nonswitch.c.
Dhe ne do të shohim se pse në vetëm një moment.
Pra, në këtë skedë - nonswitch.c--
së pari të kuptojnë se ka një bandë e tërë e
Komentet në krye.
Kjo është vetëm shpjeguar emrin e file, ajo
bën, dhe kështu me radhë.
Dhe kjo duket demonstron përdorimin e Bulit dhe-ing -
conjoining dy shprehje.
>> Pra, le të shohim se si punon ky program.
Unë të përfshijë dosjet e mia, dy cs50.h dhe stdio.h.
Nëse unë lëvizni poshtë, tani, në programin, kjo është një pak më të gjatë
se ne kemi shkruar më parë, por shumë i lexueshëm.
Kështu që unë së pari të shtypura të përdoruesit, on line 18,
"Më jep një numër të plotë në mes të 1 dhe 10." Kështu
kjo është e drejtë atje.
Tani kam marrë numër i plotë.
Por të kuptojë se GetInt - shumë e thjeshtë.
Është vetëm do të merrni një int.
Kjo do të sigurojë që ajo ka marrë një int dhe jo një
varg ose një noton.
Por kjo nuk do të bëjë çdo lloj të kontrollit të kufijve.
Kjo nuk do të filtruar numrat të jetë në mes të një
varg të caktuar.
Pra, ne kemi për të zbatuar atë veten.
Pra, ashtu si në Scratch, ku unë mund të bëjë një lidhje të
dy shprehjet, unë mund të bëjë që në C si më poshtë.
Nëse n është më e madhe se ose e barabartë me 1, dhe n është më pak se dhe
ose e barabartë me 3, unë jam duke shkuar për shumë dekret arbitrare që
Numri i të jetë një numër i vogël.
Vetëm për hir të një deklarate.
Tjetër në qoftë se n është në mes 4 dhe 6, print "Ju kap një medium
Numri ". Else nëse n është ndërmjet 7 dhe 10, print" Ju kap një
Numri i madh ". Else print" Ju vini një numër të pavlefshme. "
Sepse logjikisht, që vijon në qoftë se ne kemi
rraskapitur gamën tonë.
>> Pra, kjo nuk është realizuar fare se si kemi shkruar më e madhe se, ose
barabartë në një klasë matematikë.
Drejtë?
Ju zakonisht tërheqë atë si kjo, me vijë nën atë.
Por nuk ka asnjë të tillë kyç në tastierën time.
Pra, simbol në C për të shprehur e madhe se, ose
është e barabartë me dy karaktere, dhe simbol për më pak se
ose e barabartë me dy karaktere është si.
Dakord.
Pra, nëse unë të drejtuar këtë program, ju ndoshta mund të me mend se çfarë është e
do të bëjë.
Nëse unë të shkojnë përpara dhe të bëjë nonswitch, Enter.
Dhe pastaj të drejtuar nonswitch.
Më jepni një numër midis 1 dhe 10.
Unë jam duke shkuar për të dhënë atë 11.
I kap një numër të pavlefshme.
Më lejoni të provoni numrin 3.
I kap një numër të vogël.
Pra mjaft i thjeshtë atje.
>> Çka nëse unë dua të ndryshojë sjelljen e këtij programi dhe
të bëjë diçka pak të ndryshme në vend?
Më lejoni të shkoj përpara dhe të thonë se kjo.
Më lejoni të shpëtoj të gjithë këtë.
Dhe më lejoni të them në qoftë se (n == 42).
Dhe atëherë unë jam duke shkuar për të shkuar përpara dhe të them të shtypura "kap je ti
përgjigje të drejtë. "Else ne jemi duke shkuar për të shkuar përpara dhe të thonë,
printf ("Ju kap
Përgjigja e gabuar ");. Mirë.
Vetëm për shkak se.
>> Tani, disa pika që ne mund të bëjë këtu.
Një, unë nuk shkruani simbol që ju do të mendoni se është
më e arsyeshme.
Kur unë dua të shikoni barazi, rezulton nga ju nuk e përdorni
shenjë të barabartë.
Ju në vend që të përdorni shenjën e barabartë të barabartë.
Dhe pse mund që të jetë, vetëm intuitive?
Po.
Audienca: [padëgjueshme]
DAVID J. Malan: Correct.
Shenjë të barabartë është përdorur tashmë për detyrë.
Dikush nuk ka të vërtetë mendoj se kjo përmes.
Dhe kështu tani, kur është fjala për testimin e barazisë, ne duhet të
të jetë më i qartë, dhe thonë barabartë barabartë.
Një gabim shumë i zakonshëm është që të bëjë këtë.
Dhe, në qoftë se në orët zyrë apo diku tjetër javë ose në
dy javëve të ardhshme ju bëni diçka si kjo dhe pastaj
luftojnë me të për 10, 20 minuta duke u përpjekur të kuptoj se
çfarë është bug mallkuar, të kuptojë se ju jeni një nga ata
njerëz që kanë bërë këtë gabim.
Pra, super të lehtë për të bërë.
Por tani qëllimi është për të shmangur këtë gabim.
Kjo mund të vlerësojë, sepse ajo që është kjo me të vërtetë duke thënë?
Nëse merr n 42.
Kështu që njerëzit përdorin folje, me gojë, për të shprehur
Nocioni i detyrës është "merr". Pra, nëse merr n 42.
Kështu që do të thotë të caktojë 42 në n.
Tani unë kam një shprehje Boolean në kllapa,
brenda kësaj gjendje, vlera e të cilave është 42.
Drejtë?
Sepse në qoftë se ju vlerësoni atë nga jashtë brenda, gjithsej
Përgjigjja, tani, është 42.
>> Pra, nëse ju pyeta pyetjen, "në qoftë se (42)," çfarë është
që me të vërtetë duke thënë?
E pra, shprehje Boolean mund të jetë e vërtetë apo e rreme.
1 ose 0.
On ose off.
Pra, ne duket të ketë një rast qoshe këtu, ku të gjithë një
papritur, unë jam duke thënë se "në qoftë se (42)". Kjo nuk është një vlerë Boolean.
Pra, çfarë të bëjë kompjuterat, megjithatë, është ajo në thelb barazon
çdo gjë që nuk është 0 interpretohet që të jetë e vërtetë.
1.
Në.
Ata janë të gjithë ekuivalente funksionalisht.
Vetëm vlera 0, ose fjalen rreme, si ne do të
përfundimisht të parë, në fakt është e rreme.
Pra, "në qoftë se (42)" në fakt do të jetë e vërtetë, sepse është jo-zero.
Pra, për të qenë më të saktë këtu, një vlerë Boolean nuk është me të vërtetë kështu
shumë e vërtetë apo e rreme, por për këtë
rast, nëse është 0 ose jo-zero.
Pra false ose jo të rreme.
Dhe kjo na lejon të përfshijë të gjitha më shumë
Mundësitë në shprehjen kllapa.
Pra, ne kemi nevojë për të, ndonjëherë kaq kujdes, thonë se kjo -
në qoftë se (n == 42).
Thjesht sepse ne kemi nevojë për të specifikoni një test të barazisë,
jo një caktimi i një vlerë.
>> Çfarë tjetër Vlen të përmendet këtu?
Këto formatimin e teksteve kaçurrel nuk janë të vërtetë e nevojshme.
Unë kam qenë bërë ata vetëm të jenë lajthi-picky këtu.
Por kur ju keni një gjendje që vetëm ka një linjë të
Kodi, si një lehtësi, programuesit nuk kanë nevojë të përdorin
formatimin e teksteve kaçurrel.
Kjo mjafton për të vetëm porosit, për arsye estetike, dhe
pastaj shkruani linjë tuaj të kodit.
Vetëm kur ju dëshironi të shkruani dy rreshta të kodit - për
shembull, tjetër printf ("Mirupafshim!"). Nëse ju doni të bëni
se, kjo është e thyer.
Ju mund të porosit të gjithë ju duan, por fakti që ju keni
shtypur dy rreshta të kodit pa përdorimin e formatimin e teksteve kaçurrel
do të thotë se ky program nuk do të kandidojë saktë, ose mund të
jo edhe përpilojnë saktë.
Kështu që tani për tani, të jem i sinqertë, unë mendoj se është vetëm zakon të mirë
përdorni formatimin e teksteve kaçurrel, dhe ju do të gjeni se ata bëjnë
super e qartë se çfarë po ndodh.
>> Gjithashtu, si një mënjanë - veçanërisht nëse ju jeni në mesin e atyre që përdorin
librat e rekomanduara apo burime online -
të kuptojë se nuk ka ky nocion e stilit në
programimit.
Dhe disa njerëz preferojnë të vërtetë për të vënë në mbajtëse kaçurrel
mbi këtu në një linjë.
Disa njerëz preferojnë të bëjnë gjëra qesharake,
si ata vënë këtu.
Nuk ka përgjigje të gabuar kur është fjala për
stil, por kjo është e gabuar.
Por disa njerëz bëjnë atë.
[Qeshura]
DAVID J. Malan: Kështu që unë përmend këtë tani, thjesht sepse si
keni lexuar deri në gjërat në libra apo online, ju jeni do të merrni
mesazhe të ndryshme nga mësuesit e ndryshme dhe
autorë të ndryshëm.
Dhe vetëm të kuptojë se, funksionalisht, ata janë
në përgjithësi e barabartë, por të jenë në përputhje.
Pra, në këtë rast, ne do të standardizohet në kacurrela
formatimin e teksteve rreshtuar këtu në të majtë.
>> Dakord.
Pra, le të shkojnë përpara dhe për të drejtuar këtë tani, dhe shikoni se çfarë ndodh
me këtë program.
Bëni nonswitch.
Pastaj të drejtuar nonswitch.
Më jepni një numër të plotë në mes 0 dhe - kështu që nuk është e rëndësishme
më, por unë jam vetëm duke shkuar për të thonë në mënyrë arbitrare 42.
Dhe unë kap përgjigjen e duhur.
E pra tani, le të vërtetë të marrë këtë në një drejtim tjetër.
Ajo rezulton se ka disa sintaksë tjetër ne
mund të përdorni në një program.
Këtu është një copë e re e sintaksës që është funksionalisht i njëjtë,
por vetëm prezanton një tjetër mënyrë për të shprehur veten.
Pra, kjo është ajo që quhet një "deklaratë switch". Dhe një
Deklarata kaloni vepron si më poshtë.
Ajo merr, në kllapa, një vlerë që ju dëshironi për të
"Kaloni" në.
Ju dëshironi që të sillen ndryshe në bazë të vlerës së saj.
Pra, kjo do të thotë kaloni në vlerën e n.
Dhe çfarë do të thotë kjo?
Pra, nëse n është 1 ose 2 ose 3, shkojnë përpara dhe printuar nga "You
kap një numër të madh "dhe pastaj pushim.
Arsyeja për pushim është se mënyra C punon është si
shpejt që gjen një rast që përputhet, ajo fillon ekzekutimin e
të gjithë kodin e mëposhtëm saj.
Pra, nëse unë kam një linjë të kodit, siç po bëj unë këtu on line 27, ai
merr ekzekutuar.
Nëse unë shtoni një tjetër linjë këtu, ajo merr ekzekutuar.
Një tjetër linjë këtu, ajo merr ekzekutuar.
Program vetëm ndalon ekzekutimin çfarë është më poshtë
Deklarata e zbatueshme rasti kur unë në mënyrë eksplicite
thonë "pushim". Në mënyrë të gabuar.
Të drejtë, në këtë rast, si rezultat i kësaj.
4 rasti ose 5 ose 6, në mënyrë të ngjashme, po shkon
për të shkruar një mesazh.
Në këtë rast, numri mesme.
Pushim.
Rasti 7, 8, 9, 10, ajo do të shtypura nga "ju kap një i madh
Numri i. "Pushim.
Dhe pastaj nuk ka fjalë për fjalë një fjalen quajtur "prezgjedhur"
që është në mënyrë efektive si "tjetër" të ndërtuar.
Pra Sintaksa e re, por intelektualisht,
asgjë të gjithë këtu të re.
Është vetëm si Scratch.
Nëse, tjetër në qoftë se, në qoftë se tjetër, lloj i bllokut.
>> Pra, kjo është versioni i kaloi i këtij programi.
Por vini re se ne e bëmë atë me numra këtu.
Më lejoni të hapë një version të dytë, vetëm për të treguar
diçka pak më konkrete.
Pra, këtu kemi nota vend.
Rezulton nga ju mund të përdorni çelsin jo vetëm në integers, por në
karaktere.
Jo në të gjitha llojet e të dhënave, por të paktën në karaktere.
Kështu që këtu, ne mund të bëjmë diçka si në qoftë se vlera e C që
përdoruesit shtypur në, në përputhje 19, duke përdorur funksionin GetChar,
është kryeqyteti A ose me të vogla a, le të interpretuar atë si një gradë,
dhe thonë se ata morën një notë të shkëlqyer.
Dhe poshtë së bashku deklaratë kaloni, a kemi të tjera
raste për "B" s dhe "C" s, dhe kështu me radhë.
Por tani le të rrumbullakët një gjë tjetër.
Dhe përsëri, lloj fluturuar përmes
disa nga këto shembuj.
Por është e vërtetë në mënyrë që ne mund të aplikojnë ato, tani -
apo me të vërtetë, vetëm përkthejnë ato tani -
për C.
>> Pra më lejoni të shkoj përpara dhe të bëjë këtë.
Unë jam duke shkuar për të hapur një skedë të re.
Dhe unë jam duke shkuar për të bërë përfshijë .
Dhe atëherë unë jam duke shkuar për të bërë int kryesor (i pavlefshëm).
Më lejoni të ruaj këtë foto si një loop.c.
Ashtu si një shembull.
Dhe unë jam duke shkuar për të shkuar përpara dhe të bëjë në vijim.
Unë dua të shkruaj një program shumë të lodhshme.
Pra 10.
Le ta bëjmë këtë.
9.
Dakord.
Sa më shpejt që ju të fillojnë të bëjnë këtë në programimin, ju jeni
ndoshta duke bërë diçka të gabuar.
Por ne do të fillojë atje anyway.
Oops.
Kjo është në fakt e gabuar.
7.
6.
5.
4.
Asgjë nuk do të ndodhë kur ne të merrni për të 0.
3.
2.
1.
Rregull.
0.
Fshini.
>> Dakord.
Pra, kthehet 0.
Pra, ky program është padyshim do të bëjë atë që shumë
tediously thotë se ajo do të bëjë.
Ajo do të shtypur të gjithë ata
vlerat, nga maja e deri në fund.
Pra më lejoni të bëjë të bërë lak.
Dhe pastaj - uh.
Bëni lak.
Unë kam qenë në directory gabuar.
Dhe tani më lejoni të kandidojë lak.
Enter.
Woohoo.
Very nice.
Bukur, programi gjatë.
>> Të gjithë të drejtë, por tani le ta bëjmë këtë më mirë.
Ashtu si në Scratch, kur ju keni filluar duke përdorur një looping
ndërtimin, në vend të vetëm kopjimi dhe pasting të gjithë
copa mister, më lejoni të prezantoj këtë gjë.
Pra në C, ka konstruktet ndryshme looping,
njëra prej të cilave duket si ky.
Një "për" loop ka tre gjëra, ndarë nga dy pika.
Dhe pastaj, në brendësi të trupit të lak, kështu që të flasin -
brenda sende të formatimin e teksteve kaçurrel -
ne mund të bëjmë diçka përsëri dhe përsëri.
Pra, ajo që unë kam këtu në ekran, kjo është
fjalë për fjalë vetëm një koment.
/ / Do të thotë këtu vjen një koment.
Kjo nuk është kodi.
Kjo është vetëm përshkrim angleze, për mua, njeriut.
>> Initializations Pra, kushtet, dhe përditësime.
E pra, le të shohim se si punon kjo.
Kjo lejon mua që të ndryshonin këtë program si më poshtë.
Për -
kështu që këtu vjen lak time -
int -
këtu vjen një ndryshore të quajtur "i" -
merr nisur në 10.
Kështu që nuk është initialization ime.
Unë dua të bëj këtë lak për aq kohë sa "i" është më i madh sesa ose e
barabartë me 0.
Dhe në çdo përsëritje të këtij loop, unë dua
të bëjë i -.
Pra, ne pamë + + hënën.
- Është kundërta.
Ajo decrements vlerën nga 1.
Brenda këtij loop, unë dua të bëjë në fakt diçka.
Kështu që unë jam duke shkuar për të thonë diçka si printf.
Unë nuk dua të them 10 tani, sepse kjo padyshim është vetëm
duke shkuar për të shkruar të njëjtën vlerë.
Çfarë unë dua të shtypura në vend, ndoshta?
Po.
Pra, "i." Kështu% d, i.
>> Kështu që unë jam duke shkuar për të vjedhur një nga ato ide nga më parë -
ky zëvendësim për kodet format -
dhe pastaj këtu poshtë, në fund, unë do të kthehen 0, vetëm
për masë të mirë.
Por tani, unë kam një program më të ngjeshur.
Është vetëm disa rreshta, dhe jo rreth 10 ose 11 rreshta.
Lermë të shkoj të shpejtë time këtu poshtë.
Loop xhirim.
Përsëritje lak.
Dhe kjo duket të jetë e njëjtë.
Tani, programi nuk është më interesante.
Por tani unë mund të shtypni diçka si kjo.
Unë mund të ndryshojë këtë në 100.
Unë pastaj mund recompile programin tim.
Dhe atëherë unë mund të ri-drejtuar programin tim.
Dhe tani ajo shkon super-fast në kompjuterët e sotëm.
Por nuk kam -
dhe në fakt, tampon im rrëshqitje nuk
madje shkojnë aq larg.
Nuk shkojmë.
Pra, nuk kemi të gjithë 100.
Por është e lehtë për të bërë gabime këtu.
Çfarë do të jetë sjellja e pritshme në qoftë se unë
aksidentalisht bëjë këtë?
Pra, ai ndjehet si pafund.
Pra, le të shohim nëse kompjuteri sillet.
>> Pra më lejoni të shkoj përpara dhe të bëjë lak.
Dhe më lejoni të kandidojë lak.
Pra, le të vijë përsëri në se në një moment të vetëm.
Ne do të le që të kandidojë.
Sepse çfarë duhet të llogariten deri në, minimalisht?
Ndoshta të paktën 2 miliardë, në qoftë se ne kemi bit shumë, dhe
ne jemi duke përdorur vlerat pozitive.
Pra, le të hidhen përsëri këtu.
Përveç këtyre llojeve të sythe, ne kemi atë që janë quajtur, ndërsa
sythe. Pra, ashtu si në Scratch, keni pasur Forever
blloqe, dhe ju kishin blloqe të përsëritur.
Në mënyrë të ngjashme, në C, ju vetëm duhet mënyra të tjera
për të shprehur veten.
Pra, ju e keni këtë idenë e një lak, ndërsa që ju lejon të
shprehin veten pak ndryshe.
Dhe atëherë ju keni diçka të quajtur një lak për ta bërë, ndërsa,
e cila vepron pak më ndryshe si.
Dhe ne do të vë në lojë përveç këtyre kalimin e kohës.
>> Por le të marrë një sy në këtë të fundit këtu.
Nëse ne do të shkojmë në -
ende running.
Kjo është goxha e pafund.
Pra më lejoni të shkoj në pozitive, dhe të tregojnë se si ne mund të vërtetë
qeverisur dhëna përdoruesi pak më efikase.
Është një program mjaft të shkurtër.
Dhe këtu ne kemi, në kryesore, një int n deklaratë.
Pra, më jepni një ndryshore të quajtur n. Tani, unë them fjalë për fjalë
"Bëjnë." Dhe pastaj kam hapur kaçurrel
Braçe, shtrëngoj ngushtë kaçurrel.
Dhe pastaj vini re, menjëherë pas kësaj, ajo thotë se ndërsa n
është më pak se 1.
Pra, vini re se këto rreshta -
19-24 -
kompozojnë kolektivisht një lak për ta bërë kohë.
Dhe përsëri, sintaksë e re, nuk është një ide e re.
Kjo është vetëm një tjetër mënyrë për të looping, syntactically.
Pra, çfarë do të bëni këtë?
Të bëjë në vijim, ndërsa n është më pak se 1.
Pra, çfarë unë dua të bëj?
Unë të kërkojë që ju të jepni një numër i plotë pozitiv.
Pastaj unë në fakt përpiqen për të marrë një numër të plotë nga ana e përdoruesit.
Por në aspektin e rendit të operacioneve këtu, sepse
ndërsa gjendja është këtu poshtë, unë jam duke shkuar për të kontrolluar atëherë, është n
më pak se 1?
Pra, mendoj se përdoruesit -
pasi u kërkuar në këtë mënyrë -
Llojet në 0 vlerë.
Ky kusht do të jetë e vërtetë apo e rreme?
E pra, kjo është në fakt do të jetë e vërtetë.
Sepse n është 0, dhe 0 është më pak se 1.
Pra, çfarë do të thotë kjo?
Bëjë atë përsëri.
Vetëm një herë se gjendja e vlerëson të rreme.
Nëse unë lloji në 42.
E pra jo, 42 është jo më pak se 1.
Prandaj ky loop është bërë ekzekutimin.
Dhe kështu në këtë pikë, programi do të thonë, faleminderit për
42, në këtë rast.
Tani që ju e keni këtë mënyrë për të shprehur veten -
Ne nuk duhet të presim që kjo të përfundojë.
Ajo do të marrë disa kohë.
Për të vazhduar herën tjetër, ndoshta.
>> Por tani, ju keni mundësinë për të shpresojmë për të kuptuar një
bit e humorit geek.
Apologies.
Kjo nuk është përfaqësues i humorit në shkencën kompjuterike
botë, por është e bukur.
Fundi [Qesh] Le në këtë shënim.
Dhe ne do të shohim ju në hënën.
[Duartrokitje]