>> [Duke luajtur muzikë]
>> DAVID Malan: Të gjithë të drejtë.
Mirë se vini mbrapa.
Kjo është CS50, dhe kjo është Week One, Vazhdon.
Pra, një nga arsyet që ne kemi qenë që kalojnë rreth teknologjive si
Google Glass është se ata vijnë me diçka e njohur si një API, një
Application Programming Interface.
Dhe çfarë kjo do të thotë është se me Fotografi të duhur dhe me të drejtë
dokumentacioni, ju në fakt mund të shkruani software për pajisje edhe si këto.
>> Dhe kështu që ajo që ne kemi në mendje drejt semestra fund është, në qoftë se një projekt
përfshin, të themi, qelqi Google mund të apeli, ne do të shohim se çfarë mund të bëjmë në
Kushtet e ju up hooking me disa hardware loaner si
API-të qasshme publikisht në mënyrë që ju mund të në të vërtetë të fillojë krijimin e softuerit
që shkon në atë Glass njëjtën Google.
>> Një pajisje që ne kemi qenë duke luajtur e me vonë se ne kemi menduar mund të jetë
fun në fund semestër është kjo gjë pak këtu.
Ajo që quhet Motion brishtë, dhe atë që ju jeni gati për të parë është teknikisht një
shpallje për pajisjen, por ajo flet për atë që kjo të veçantë
pajisja është e aftë të.
Dhe kjo, gjithashtu, vjen me një API me anë të të cilat ju mund të shkruani software për
të kontrollojë kompjuterin tuaj në një mënyrë të mjaft e pëlqen këtë film një-minutësh këtu.
>> [Video playback]
>> [VIDEO END rishikim]
>> Deri tani, kjo pajisje ndodh me të zbatohet si një USB pak
lidhës që ju mund të plug në tuaj kompjuter, por unë nuk do të çuditesha
në qoftë se para se të gjatë kemi këto lloje të teknologjive në grumbull të ardhshëm të PC
dhe Macs kështu që ju mund të, në të vërtetë, bashkëveprojnë me të në
një mënyrë të tillë.
Në fakt, ajo që unë mendova se do të bëjë, gjithashtu, është I nxorrën një demonstratë pak
program që vjen me këtë softuer.
Kështu që unë kam vënë sensor pak në frontin e laptop tim.
>> Dhe si ju mund të shihni, ajo tashmë e kupton se dora ime është atje
kontrollin atë.
Dhe e gjithë kjo kërkesë nuk është e vaj pak gjëra si kjo.
Por ju mund të shihni se, në të vërtetë, Unë kam pesë gishtat atje.
Nëse ne mund të merrni atë për të bërë të gjitha 10, ju mund të imagjinohet një piano zoti
Aplikimi apo si.
Pra, nëse ju dëshironi të dalë pas klasës sot dhe të luajë me se si
mirë, ju jeni të mirëpritur për të.
Pra, më shumë se drejt fund semestër.
>> Pra, një çift i administrative njoftime.
Një, bëjnë pjesë në këtë e premte në mesditë në cs60.net/section.
Kjo URL është në kurs të faqe si edhe.
Në ndërkohë, edhe pse, supersections do të debutojnë këtë të dielë.
Supersections janë një kohë gjë, sepse kjo na merr disa kohë për të punuar
se kush është në cilin seksion dhe ku.
>> Pra, kjo dielën e ardhshme, nuk do të jetë një Seksioni për ata më pak të rehatshme,
një seksion për ata më të rehatshme.
Dhe ata prej jush diku në në mes të janë të mirëpritur për të shkuar në
ose të dyja, ose as.
Të dyja këto do të filmohet.
Ata do të jenë në një auditor të madh se një seksion normalisht do të jetë in
Por qëllimi këtu është që t'ju pajisë me disa rehati me një problem të caktuar,
me C, me aplikim CS50, këtë fundjavë, madje edhe para se ju të gjeni tuaj
Caktimi formal seksion.
Pra, ju do të takohet TF tuaj dhe të vogël juaj grupi i sectionmates ne rreth
një javë kohë.
>> Orari i punës, ndërkohë, kanë qenë duke shkuar në.
A të përfitojnë prej tyre sonte apo nesër natën në qoftë se ju do të donte.
Set Problem 0 është për shkak të premten.
Kjo është një ditë më vonë se rregullisht-planifikuar të enjten.
Por me grup Problemi 1, ju do të shihni se ajo përfshin disa të ngrohtë-up
Ushtrimet me të cilat ju vetë mund të zgjasë Juaj
Afati i fundit të enjten për të premten.
Problemi 1 set, ndërkohë, do të debutojnë në faqen e internetit rrjedhën e kjo vjen
E premte, në qoftë se ju dëshironi të rehatohem me ajo si unë e bëri një herë e një kohë në fund
Natën e premte në dhomën tuaj.
>> Pra cs50.net/appliance është vendi ku ju mund të merrni pajisjen CS50
që kemi filluar duke përdorur të hënën.
Ne do të përdorim atë pak më sot.
Por pjesa tjetër e siguroi se problemi Set 1 specifikim do të ecin ju nëpërmjet
pikërisht hapat që duhet për të marrë atë dhe drejtimin.
Pra, mos u bëni merak për të bërë para se Pset 1 në qoftë se ju nuk do të më tepër.
>> Dakord.
Pra, kemi shikuar të hënën në kodin e burimit, por në kontekstin e një të re
gjuhë programimi, domethënë C. Dhe C, ndryshe nga zeroja, nuk është grafik.
Kjo nuk është mister copë.
Kjo është sintaksa më Anglisht-si.
Dhe ka një çift i hapave të përfshira në të vërtetë shkrim dhe drejtimin e një
program në C, sepse përveç burimit Kodi si kjo, keni nevojë për diçka
quajtur një përpilues.
Dhe në kushtet e laik, çfarë bën një përpilues të bëni për ne?
Po.
>> STUDENT: Ai konverton kodin që ju të shkruani për të 0s dhe 1s.
>> DAVID Malan: Mirë.
Pra, ajo konverton kodin që kemi shkruar për 0s dhe 1s.
Ai konverton kodin ashtuquajturin burim për Kodi objekt, kjo e fundit e cila duket
një diçka të vogël si kjo.
Dhe kjo është CPU juaj, truri brenda e kompjuteri juaj, se për shkak të
njerëz të cilët krijuan ata kompjutera, dini se çfarë ato sekuenca
e mesatares 0s dhe 1s.
>> Ndoshta kjo do të thotë të shtypura.
Ndoshta kjo do të thotë shtesë.
Ndoshta kjo do të thotë zbritja.
Ndoshta kjo do të thotë të shfaqin një grafik.
Ka modele paracaktuara të bit se bota ka vendosur të thotë
gjëra të caktuara.
Por, për pjesën më të madhe në këtë kurs, ne do të punojmë në një nivel më të lartë, dhe
ne do të marrë për të dhënë se ekzistojnë gjëra të tilla si hartuesit që mund të
të bëjë funksion kodin burimor tonë në mënyrë që ne synojmë.
>> Pra, programin e parë kemi shkruar javën e kaluar dhe pastaj filloi të portit, në mënyrë që të
flasin, për këtë C kaluara E hënë, ishte kjo.
Kur flamuri gjelbër klikuar, thonë hello.
Kjo ishte, sigurisht, shkruar në Scratch.
Dhe unë pohoi se ekuivalenti program në C dukeshin pak
diçka si kjo.
>> Pra, ajo që unë mendova që ne do të bëjmë në fillim është, le të ngas përveç asaj që duket, në fillim
shikim, pa dyshim, si mjaft misterioze sintaksë, por ju do të filloni të vini re
modele mjaft shpejt.
Ajo që ne gjithashtu do të bëjmë sot është të sigurojë ju me një model mendor për disa
kanonike, disa nga konstruktet standarde në programim.
Dhe pastaj ne do të vërtetë të marrë në duart tona pista me disa shembuj si.
>> Pra, për ata prej jush më të rehatshme, të kuptojë se kjo javë dhe pastaj e ardhshme
Javën e shumë mirë mund të jetë pak e shqyrtimit.
Por sidomos kur edicioni hacker e problemit set 1 shkon jashtë në
Sigurisht website të premten, unë mendoj ju do të gjeni se edhe si ju plotësoni në
disa boshllëqet gjatë javës së ardhshme ose dy, ju do të fillojnë për të marrë gjithnjë e më shumë
sfidohen dhe të hasni gjëra të reja dhe më të reja.
>> Pra, le të ngas këtë program veç e veç disa rreshta në një kohë.
Në shumë të lartë, ne kemi atë që është quajtur teknikisht një
direktivë preprocessor.
Kjo është vetëm një linjë e kodit që thotë të përfshijnë përmbajtjen e një skedar,
I quajtur standard / N, input standard - ose, më vjen keq, standardi I / O, standard
input / output,. h, brenda e programit tim.
>> Pra, me fjalë të tjera, në qoftë se kam shkruar këtë program me një editor teksti të thjeshtë si
gedit, ekuivalenti i thjeshtë diçka si Microsoft Word, që
udhëzim, # include stdio.h, është vetëm do të them përpiluesit, grab
Përmbajtja e kësaj dosje tjetër, stdio.h, dhe ngjiti ato të drejtë këtu.
>> Tani, pse nuk kam intereson?
Çfarë kemi pretendojnë është në brendësi të këtij file quajtur stdio.h, e cila është ruajtur
diku në hard drive time, apo në këtë rasti, diku në aplikim CS50?
Dikush tjetër e vënë atë atje për mua.
Por çfarë është në të?
>> Yeah, kështu që kjo është një deklaratë e një funksion të quajtur printf.
Pra printf kujton funksion që tregon fjalët dhe karaktere dhe
numrat në ekran në ankandin e mia.
Por unë nuk e shkruajnë atë.
CS50 nuk e shkruajnë atë.
Vjet më parë dikush shkroi atë, dhe ata në thelb na dha recetë për atë
në një skedar të quajtur stdio.h.
Kështu që vija e parë vetëm jep mua qasje për funksionet që dikush tjetër
shkroi vjet më parë, në mesin e të cilat janë printf.
>> Tani, linja tjetër unë jam duke shkuar për të valë m'i në dorë, të paktën deri në javën e ardhshme.
Por tani për tani, e di se int kryesor (i pavlefshëm) është në thelb ekuivalent i kësaj
verdhë puzzle copë kur flamuri gjelbër klikuar.
Bota, vite më parë, vendosi që nëse ju jeni duke shkruar një program në
gjuha quajtur C, ju filloni programi juaj me një linjë
që duket si kjo.
Në vetëm rreth një javë kohë, ajo do të bëjë çfarë kuptimi int është, çfarë është e pavlefshme.
Por tani për tani, vetëm të mendojnë për atë si ky verdhë puzzle copë.
>> Tani e ardhshëm, ne kemi një mbajtëse kaçurrel ndjekur nga një tjetër shtrëngoj ngushtë kaçurrel,
kështu që të flasin.
Dhe ne do të shohim këto gjatë gjithë programe në C, si dhe
JavaScript dhe PHP.
Dhe këto vetëm encapsulate Linjat e lidhura me të kodit.
Braçe hapur kaçurrel thelb thotë se, këtu vjen kod komputeri.
Dhe mbyllura shtrëngoj kaçurrel, i cili është angled në drejtimin tjetër, vetëm
do të thotë, kjo është ajo për Kodi relevante.
>> Pra, linja me lëng në këtë e parë Programi është i fundit, printf,
quote-mbyll thonjëzat, Tungjatjeta botë.
Dhe unë e thirra gjë në mes citon atë herën e fundit?
Pra, kjo është një varg.
Dhe një varg është vetëm techie Termi për një sekuencë të
karaktere, një fjalë, një frazë.
Madje edhe një shkronjë e vetme mund të të jenë cituar dyfishtë.
Por kjo është një sekuencë e zero ose më shumë shenja.
>> Backslash-n, edhe pse, duket pak e çuditshme.
Por kjo thjesht do të thotë diçka thjeshtë në kompjuter.
Çfarë është backslash-n?
Linja e re.
Pra, kjo është vetëm sekuencë të veçantë të karaktere që bota ka vendosur
Mjetet vënë një pushim linjë të drejtë atje, sepse përpilues të vërtetë do të merrni
hutuar, zakonisht, në qoftë se ju, shumë të kuptueshme, por gabimisht, vetëm
të fillojë goditur Enter për të vënë Linjat e reja në kodin tuaj.
Ju duhet të jetë pak më shumë eksplicite me backslash-n.
>> Dhe ne do të shohim se ka një të tillë disa të tjera modele për karaktere të veçanta.
Për shembull, në qoftë se ju të kërkuar për të le tuaj mendje enden në një rast qoshe,
mendoj se kam kërkuar për të shtypur një quote dyfishtë në ekran për
çfarëdo arsye, që duket se do të të jetë pak problematike, e drejtë?
Sepse në qoftë se kam vënë një kuotë të dyfishtë në e mesme e "Hello World," për çfarëdo
Arsyeja, pse nuk duket se potencialisht problematike?
Ajo thyen string.
>> Përpiluesi është vetëm një program.
Një program si një përpilues është vetëm do për të lexuar kodin tuaj të lartë deri në fund,
majta në të djathtë.
Dhe në qoftë se e sheh tre kuotat e dyfishtë në vend të dy, ajo nuk do të dinë
në qoftë se ju do të thotë se gjëja për të majtë duhet të jetë string, ose gjë për të
drejtë, apo gjithë gjë.
Është e paqartë, dhe kështu çfarë është një tipik përpilues do të bëni është thjesht të trullos,
dhe ju jap disa mesazh gabimi, dhe të bëjë që ju të merren me problemin.
>> Pra, duke pasur parasysh se backslash-n do të thotë një i ri line, çfarë do instinktet tuaja tani
të fillojë të jetë në qoftë se ju të kërkuar për të përfshirë diçka anormale si një të dyfishtë
japin kuotën e tyre brenda e kësaj ndryshe i cituar string?
Backslash-quote dyfishtë.
Dhe kështu që ne do të shohim këtë lloj model shumë.
>> Nëse ju doni të bëni diçka pak çuditshme, ju do të gjeni se
Zgjidhjet shpesh ndjekin një model, dhe backslash
tregon një sekuencë shpëtojnë.
Dhe kjo thjesht do të thotë diçka të veçantë se ne kemi nevojë për të përfaqësuar në një
mënyrë të ndryshme.
Sa për mënyrën se si mendoni ju përfaqësojnë një backslash, pra, ne do
kthehen në atë.
Por përgjigja, gjithashtu, është në të vërtetë pak e qartë.
>> Pra, tani le të prezantoj disa të tjera konstrukte programimi
që ju panë në Scratch.
Ju keni marrë ndoshta për të dhënë tashmë në qoftë se ju keni fetar tashmë në
Problemi vendosur 0.
Por tani le të prezantuar sintakse në C për këto përndryshe mjaft intuitiv
Idetë, të paktën disa prej tyre.
>> Pra ky nocion i një gjendje apo një degë, ndërsa më parë ne
përfaqësuar atë me kodin që dukej si kjo në të majtë në Scratch -
nëse x është më pak se y, atëherë them kështu -
në vend që tani në C - më lejoni të grihë ne në rastin thjeshtë -
ne jemi thjesht do të thotë, në qoftë se, të hapur parantezë, diçka është e vërtetë - një
Shprehje boolean është duke shkuar për të shkuar ku kam thënë kusht -
kllapë të ngushtë, atëherë bëni çfarë është e brenda këtyre formatimin e teksteve kaçurrel.
>> Pra, edhe këtu, formatimin e teksteve kaçurrel janë lloj si të zeroja
U-formë copa mister.
A atë që është brenda këtyre formatimin e teksteve kaçurrel.
Në këtë rast, çaj çaj.
Dhe vini re kjo është një përpara çaj, jo një backslash.
Forward plagë, plagë përpara, për ata që kam programuar
para, thjesht do të thotë -
kjo është vetëm një koment.
Një koment nuk është një linjë e kodit, në vetvete.
Kjo është një linjë e gjuhës angleze që ju, njerëzor, kanë shkruar për veten tuaj për të
ndoshta ju kujtoj për të bërë diçka, për të shpjegojë për veten tuaj, për të shpjeguar për
dikush tjetër, çfarë kodi juaj është duke bërë.
Është vetëm një koment përshkrues.
>> Tani, sigurisht, ne mund të kemi një rrugë dy- pirun në rrugë vetëm duke bërë këtë, një
tre-palësh pirun në rrugë duke bërë këtë, dhe nëse ju vazhdoni këtë
model, ju mund të ketë katër-mënyrë, pesë-mënyrë, gjashtë kalime forks në rrugë nëse
ju keni nevojë për të trajtuar, me të vërtetë, se kushtet shumë.
Dhe pastaj njoftim paralelizëm këtu -
në qoftë se (kusht), tjetër në qoftë se (kusht), dhe i vetmi që është pak
çuditshme është e fundit, të cilat është tjetër vetëm se.
Por përsëri, kjo është identik, konceptualisht, për atë që kemi bërë
tashmë, edhe pse do sintaksa të marrë pak duke u përdorur për të.
>> Tani, në këtë shembull, nuk janë Sintaksa e disa të tjera të çuditshme.
Ne e shohim printf përsëri, parantezë të hapur, dhe kllapë të ngushtë.
Dhe brenda i ka një varg cituar.
Të kllapat, në kontekstin e printf, shkoni në të majtë
dhe e drejta e kujt?
Çfarë ne përshkruajmë se cituar string si më në përgjithësi?
>> Pra, kjo është një argument.
Çdo herë që të ketë një funksion, si printf, dhe pastaj një Paren hapur dhe një
Paren ngushtë dhe diçka në brendësi të ajo, nëse kjo është një string, ose një
integer, apo ndonjë gjë tjetër, gjë të ndërmjet ato kllapat quhet
një argument.
>> Dhe një argument vetëm ndikon Sjellja e funksionit.
Në këtë rast, kjo është goxha e qartë se si.
x <y është se çfarë është duke kaluar në, kështu që të flasin, si një argument.
Dhe printf është duke shkuar për të shtypura pikërisht këtë.
Sepse me siguri, vitet personi më parë i cili zbatohet printf kishte asnjë ide
ajo që ne ishin pasuesit e njeriut duke shkuar për të përdorur printf për të.
Pra, kjo është arsyeja pse argumentet ekzistojnë, për të ndikojnë në sjelljen pas një funksion të
qenë shkruar.
>> Tani, shprehje Boolean.
Ne kemi parë këto para në Scratch.
Ajo rezulton në C, ju gjithashtu mund të "ose" ata së bashku, kështu që të flasin.
Dy bare vertikale do të thotë se ky bllok e kodit, kjo e bëjnë këtë, do të
ekzekutuar në qoftë se kushti i parë është e vërtetë ose kushti i dytë është vertete.
Dhe, edhe pse ju nuk mund të ketë bërë këtë në Scratch, ju mund të vërtetë
bëni këtë në Scratch, dhe ju gjithashtu mund shprehur veten ndryshe -
nëse kushti i parë dhe i dytë Kushti janë të vërteta, atëherë bëni çfarë është e
brendësi të braces kaçurrel.
>> Dhe ashtu si një mënjanë, kjo është arsyeja një simbol të dyfishtë dhe një të dyfishtë
bar vertikale, ne do të shohim përfundimisht se një bar të vetme vertikale dhe një
simbol të vetme në të vërtetë kanë të ndryshme që do të thotë në C. Pra, tani për tani,
se dyfishim i simboleve është i qëllimshëm.
>> Pra, le të prezantoj, shkurtimisht, ky bit tjera të sintaksës.
Kjo nuk ka fare të kryer mbi të Scratch, por unë pretendojnë që unë mund të
zbatojë nocionin e një tjetër në qoftë se, në qoftë se tjetër, nëse tjetër, nëse deklaratë tjetër duke përdorur
diçka që quhet një deklaratë të kaloni.
Dhe arsyeja e vetme kjo me të vërtetë ekziston është që vetëm të ju jap, programues, një
mënyrë pak më të ndryshme për zgjidhjen e disa problem, edhe pse logjikisht ajo
nuk ju japin ndonjë aftësive të reja.
>> Me këtë dua të them këtë.
Kur ju thoni kaloni, dhe pastaj një hapësirë, dhe pastaj një palë e kllapa, brenda
i cili shkon një shprehje -
dhe kjo mund të jetë pak jo-dukshme në fillim, por kjo nuk është një argument,
teknikisht, sepse kaloni nuk është një funksion.
Kështu që tani për tani, vetëm të supozojmë se ne jemi duke përdorur kllapat në vende të ndryshme
për arsye të ndryshme.
>> Pra kaloni në shprehje do të thotë unë mund të vënë një brenda ndryshueshme të atyre
kllapat ku ai thotë se shprehjes.
Dhe në qoftë se pastaj të ndryshueshme -
mendoj se është quajtur x, dhe kjo është vetëm një numër të plotë -
Unë pastaj mund të numëroj në rrëshqitje tim këtu diçka si kjo.
Nëse x është e ndryshueshme im, dhe unë doni të bëni diçka në qoftë se x
është e barabartë me 1, unë mund ta bëjë këtë.
>> Nëse në vend të kësaj unë dua të bëj diçka nëse x është 2, unë mund ta bëjë këtë.
Tjetër, në qoftë se unë dua të bëj diçka tjetër në tërësi, unë mund të ketë një rast të parazgjedhur në
cilin rast unë bëj këtë gjë tjera.
Pra, në këtë kuptim, kjo është ekuivalente me një nëse x është e barabartë e barabartë me 1, tjetër, nëse tjetër,
por unë përmend këtë tani vetëm për shkak se ne do të shohim atë përsëri.
Por tani për tani, vetëm e di se ajo ekziston.
>> Dakord.
Pra, këto dy të fundit janë pak më kompleks në shikim të parë, por ata e bëjnë
diçka mjaft i thjeshtë.
Një per lak në C eshte nje copë i kodit që thjesht e bën diçka përsëri dhe
përsëri dhe përsëri.
Dhe e vetmja gjë e bezdisshëm për këtë është që është se kjo është pak fshehtë
për të shprehur veten në këtë ciklike model, por bota standardizuar në
Mënyra më poshtë.
>> Kur ju përdorni një për lak, ju keni marrë një palë kllapa përsëri.
Dhe vini re dy semicolons në atje.
Këto dy semicolons të ndara në tre shprehje të ndryshme brenda e
kllapat.
Njëra është të ashtuquajturat initializations.
Njëra është e ashtuquajtura kusht.
Dhe një është e ashtuquajtura përditësimet.
>> Shikoi në abstrakte, kjo është tërësisht jo-e qartë, kështu që le të shohim
në një shembull konkret.
Në Scratch kemi pasur një bllok të përsëritur.
Dhe ky bllok tha përsëritur 10 herë, të themi "Hello, World". Më lejoni të pretendojnë për
tani, dhe ne do të vijnë përsëri në këtë, dhe Kjo, gjithashtu, do të merrni më të njohur të
ju para se të gjatë, C ekuivalent Kodi mund të thuhet të jetë kjo -
nje per deklaratës dhe një hapësirë, një palë të kllapat, njoftim semicolons në
atje, e cila ndajë tre të dallueshme gjërat, inicializimit, të
kusht, dhe azhornimi.
>> Dhe të marrë një guess what parë është bërë.
Int i = 0.
Në terma laik e përafërt, ajo që është se duke bërë për ne, ndoshta?
Pra, vërtet.
Është deklaruar një ndryshore të quajtur unë, dhe kjo është duke i dhënë asaj çfarë vlere?
0.
Pra, kjo është duke krijuar një ndryshore të quajtur Unë, ruajtjen 0 Vlera në të.
Kjo është e ashtuquajtura initialization.
>> Të gjithë të drejtë, tani unë pretendoi para se gjëja e mesme, unë
<10, është kusht.
Pra, çfarë po bën?
E pra, çfarë bën kur lak për një program me një për lak është drejtuar, është
çdo herë kompjuteri shkon përmes kjo loop, fund e krye, të lartë të
fund, ashtu si ju djema bëri kur duke numëruar veten dhe duke u ulur poshtë,
përsëri dhe përsëri dhe përsëri, kompjuteri është duke shkuar
për të kontrolluar atë kusht.
Dhe në qoftë se unë është më pak se 10, ajo do të bëjë atë përsëri.
Nëse unë është më pak se 10, ajo do të bëjë atë përsëri.
Nëse unë është më pak se dhjetë, ajo do të bëjë atë përsëri.
Kështu që duket se sugjerojnë se shpresojmë se unë po ndryshon.
Përndryshe, ne do të kemi një lak pafund.
Dhe me të vërtetë, unë po ndryshon, sepse Gjëja e fundit pasi ka pikëpresje
Sintaksa është paksa i mistershëm i + +.
Por ato prej jush që e kam bërë këtë para, që vetëm do të thotë
mjaft thjesht çfarë?
>> STUDENTËT: [Mbivendosje Zërat].
>> DAVID Malan: 1 Shtoje tek unë.
Zmadhimi i.
Pra, ne pamë një mister zeroja copë për këtë, në të vërtetë.
Ajo nuk duket si unë + +, por që vetëm do të thotë, thjesht, rritje
I vlerësojmë nga 1 çdo herë që bëni këtë.
Pra, fjalë për fjalë, ju filloni duke Initializing i në 0.
Ju pastaj kontrolloni gjendjen tuaj.
0 është më pak se 10?
Po.
Ne do të shkojmë përmes lak.
>> Gjë tjetër unë pretendojnë kompjuterin e do të bëni është ajo që po ndodh
në rritje i.
Kështu që unë tani është 1.
Ajo kontrollon gjendjen.
Është 1 më pak se 10?
Natyrisht.
Pra, e bën atë përsëri.
Atëherë ajo increments i + + me 2.
Është 2 më pak se 10?
Po.
Dhe përsëri dhe përsëri dhe përsëri.
Dhe përfundimisht, për shkak të plus-plussing, ne kemi marrë për i barabartë me 10.
10 është më pak se 10?
E pra, nuk është e qartë.
Dhe kjo është pika në të cilën për lak vetëm ndalesa.
Dhe në qoftë se ju keni kodin më shumë në Ekran poshtë më poshtë, kompjuter
ardhurat për të drejtuar këtë kod në vend.
>> Pra, përsëri, edhe pse kjo do të shikoni dhe të ndjehen pak e çuditshme në
së pari, sigurisht për ato prej jush që kurrë nuk kanë programuar më parë, ajo
fjalë për fjalë redukton konceptualisht për çfarë është përndryshe një shumë të
mister i thjeshtë pjesë në Scratch.
>> Të gjithë të drejtë, kam premtuar se nuk do të të jetë analoge tjera në Scratch.
Nuk është kjo një shumë.
Dhe ne pamë këtë kohë shkurtimisht fundit.
Por mbani mend përgjithmonë bllokuar në Scratch?
Ajo thjesht bën diçka përgjithmonë?
Unë pretendonte se ju mund të zbatojë këtë në këtë mënyrë.
Dhe ju në fakt mund të zbatojë këtë në një bandë e mënyra të ndryshme.
>> Por, ndërsa loop është vetëm një tjetër Mënyra në C për të shprehur veten.
Në fund të ditës, ju nuk mund të bëjë çdo gjë me një lak, ndërsa që ju
nuk mund me një për lak.
Pra, ata janë në fund të ditë funksionalisht njëjtë.
Por, kjo ju mundëson për të shprehur veten pak ndryshe në
Mënyra më poshtë.
>> Me lak ndërsa, kjo është ajo që është në kllapat që është kontrolluar përsëri dhe
përsëri dhe përsëri.
Dhe sa më shpejt që shprehja është e rreme, atëherë loop ndalon ekzekutimin,
dhe kompjuteri vazhdon te Kodi drejtuar çfarëdo tjetër që ju
keni në dosjen tuaj.
>> Por ajo që është interesante këtu është që unë typed fjalë për fjalë e vërtetë.
Dhe vërtetë është një lloj i vlerës Boolean, një vlerë e vërtetë apo e rreme.
Pra, mund të bëhet e vërtetë kurrë rreme, nëse unë kam fjalë për fjalë
vështirë-koduar atë në programin tim?
Pra, nr.
Është pak e çuditshme që unë e bëri këtë.
Por e vërtetë është e vërtetë.
Nuk ka asnjë plus-plussing.
Nuk ka përdorimi i variablave në këtu.
Pra, sepse unë e vështirë-koduar, ndërsa e vërtetë, kjo loop është gjithmonë do të vlerësojë
përsëri dhe përsëri dhe përsëri.
>> Pra, sa herë është botë Hello do të shtypura në ekran?
Gjithmone.
Një numër i pafund i herë deri Vdes bateri ose disa të tjerë të jashtëm
Ngjarja ndodh.
Pra, kjo nuk është ndoshta programi më të mirë për të shkruar, sepse në qoftë se përdoruesi
kurrë nuk mund të lë programin tuaj, kjo është ndoshta jo atë që ju qëllim.
>> Por ndonjëherë, programet duhet të kanë një lak pafund.
Për shembull, në qoftë se kompjuteri juaj ka një ora në të, ajo me siguri do të jetë
mirë nëse ora juaj ai nuk mbani përditësimin Vetë përgjithmonë, megjithëse një herë në
dytë ose një herë në minutë ose diçka të tillë.
Pra, edhe sythe pafund kanë vendin e tyre.
>> Dakord.
Së fundi, kjo.
Dhe kjo është një pak të ndryshme funksionalisht, dhe ne do të kthehen në
kjo ndoshta në Pset 1.
Por ka një tjetër lloj i lak quhet bëni ndërsa lak.
Dhe dallimi i vetëm këtu në mes të një bërë, ndërsa loop dhe, të themi, një lak, ndërsa,
është se gjendja është i kontrolluar nuk para se të ekzekutojë kodin, por pas
ju ekzekutojë kodin.
Pra, në krye për kohë loop, ndërsa bëni ndërsa
kontrollon atë në fund.
>> Dhe kjo thjesht do të thotë se ndërsa loop zakonisht do të ekzekutojë herë më shumë
ose herë më pak se një lak, ndërsa?
Potencialisht herë më shumë, për shkak se një të bëjë ndërsa loop është i qartë duke thënë se bëni këtë,
vetëm pasi që ju kontrolloni pikë në qoftë se brenda gjendja e
kllapat është e vërtetë.
>> Pra, ne do të shohim këtë përsëri ndoshta në Pset 1.
Nëse ju ndonjëherë të dëshironi të bëni diçka në paktën një herë dhe pastaj ndoshta disa më shumë
herë, kjo është një e mirë ndërtuar për t'u përdorur.
Por një lak, ndërsa, nga ana tjetër, do kontrolloni gjendjen e saj të parë.
Dhe kjo është ajo për sythe në C, nuk ndërsa, ndërkohë, dhe për sythe.
Dhe përsëri, ata hartë goxha bukur mbrapa për Scratch, përveç kjo nuk
kanë mjaft analog njëjtë në Scratch.
>> E pra, si në lidhje me, tani, variabla?
Pra, kjo është se si kam deklaruar një ndryshore sintaksore ditë të tjera.
Kam pasur një int, të cilën unë pretendonte eshte nje numer i plote.
Unë pastaj kishte një counter ndryshueshme quajtur, dhe pastaj një pikëpresje.
Pra, çfarë është kjo linjë e kodit duke bërë?
Kjo është, thjesht, duke deklaruar një variabël -
që është, duke i kërkuar kompjuterin, jepni disa kujtesës, më jepni disa copa - në
të cilën unë mund të ruajë çfarë?
Një int.
Dhe pikëpresje thjesht do të thotë fundi i vijës së kodit.
>> Tani, linja e dytë është ndoshta goxha guessable.
Çfarë është counter = 0; duke bërë?
Është caktimin 0 t'iu kundërvënë.
Dhe kështu kjo është gjë tjetër kjo është pak i bezdisshëm
kundrejt, thonë, algjebër.
Ndërsa në algjebër, shenjë të barabartë do të thotë barabartë, këtu në C, të barabartë
shenjë të thotë detyrë.
Pra, kjo do të thotë të vënë atë që është në të drejtën në atë që është në të majtë.
Dhe ne do të shohim një tjetër simbol, është e barabartë me barabartë, kur ne duam që në fakt të provuar
për, të cilësisë disi annoyingly.
>> Por kjo është pak i paefektshëm.
Kjo është lloj i bezdisshëm që kam të deklarojë një ndryshore dhe të
pastaj të jepte një vlerë.
Pra, në fakt C ju lejon të na lehtësuar këtë dhe vetëm të bëjë atë të gjitha përnjëherë.
Ju mund të deklarojë ndryshueshme nga e majta.
Ju mund të bëni ende detyrën në drejtë duke vënë atë shenjë të barabartë në
mesme.
Pra, në fund të ditës, këto dy janë ekuivalente, por kjo një, sinqerisht,
ndoshta është zakon i mirë për të marrë në vetëm për shkak se ajo është një pak më pak
Kodi, kjo është pak më e lehtë për të lexuar, dhe vetëm ajo forcon deri
Kodi juaj, kështu që të flasin.
>> Ndonjë pyetje deri më tani në sythet, mbi variablat, të kushteve, në
Booleans, ose teknikisht apo konceptualisht?
Dakord.
Deri tani ky tjetri merr një pak më shumë interesante.
Dhe ky është shembulli kam vënë dalë i fundit kohë që vetëm një shembull harta zeroja
mbi të C.
>> Pra, një funksion.
Në terma laik, çfarë është një funksion?
Got të jetë e guximshme me përgjigjen tuaj.
Çfarë është një funksion?
>> STUDENT: A ka diçka.
>> DAVID Malan: Çfarë është ajo?
>> STUDENT: A ka diçka.
>> DAVID Malan: A ka diçka.
OK.
Ne do të fillojë atje.
Pra, një funksion bën diçka.
Pra, kjo është një pjesë e kodit që është implementohen kryesisht diku tjetër që
me të vërtetë e bën diçka.
Tani, çfarë është interesante në lidhje me një funksion është se ajo mund të marrë të dhëna,
dhe ajo mund të prodhojë dalje.
Dhe le të vërtetë të marrë një vështrim në këtë.
>> Pra, njeriu prapa perdes ishte e qëllimshme një moment më parë.
Këtu kemi një tryezë.
Por mendoj se ky fakt përfaqëson një kuti të madhe.
Pra, kjo është një e ashtuquajtura kuti e zezë.
Dhe në përgjithësi, në projektimin, në kompjuter shkenca, kuti e zezë i referohet vetëm
copa e funksionalitetit që dikush ka zbatuar, dhe ju nuk e bëni
domosdoshmërisht dini ose kujdesen se si kjo është zbatuar nën kapuç.
Ju vetëm intereson që kjo kuti e zezë, të cilat ne tani do të fillojnë duke e quajtur një
funksion, bën diçka.
>> Kështu, për shembull, në qoftë se kjo kuti e zezë në Faza këtu përfaqëson printf, një
funksion, unë e di nga shembujt e mëparshme se printf merr një ose më shumë
argumente, dhe i pari i atyre Argumentet duhet të jetë një string, si
"Hello, World". E pra, në qoftë se unë jam personi shkruar programin, dhe unë dua
për të përdorur printf, unë, për shembull, mund të marrë një copë letër të bardhë këtu dhe një
shënues i zi dhe shkruaj mbi të -
Unë misspelled "botën" -
H-E-L-L-O.
>> Kështu që unë do të marrë shënues tim të zi dhe unë do të shkruajnë, si i madh dhe lexueshëm si unë mund të në
kjo copë letër, "Hello, World," Dhe tani unë pretendojnë se kjo është argumenti im.
Ky është një varg përfaqësohet me një copë letër të bardhë.
Dhe input im tani për funksionin e printf do të jetë kjo.
Kështu që unë jam duke bërë thirrje printf, duke kaluar Argumenti se si input ndaj saj.
>> Dhe tani, unë nuk e di se si personi i cili shkroi printf bëri atë vjet më parë, por
Unë e di se nga dokumentacioni saj se qëllimi i tij në jetë është për të shtypur atë që unë
ofrojnë atë si input.
Dhe kështu, edhe pse kjo implementimi është unbeknownst për mua
nën kapuç, tani Unë po të shoh, oh, kjo është bërë.
Ajo ka shtypur diçka në ekran.
Dhe tani kontrollin e programit, në qoftë se ka ishin më shumë linja të kodit, do të
janë kthyer tani tek unë.
Dhe kështu fakti që Colton -
bekoni zemrën e tij, është e fshehur këtu nën një tavolinë në frontin e të gjithë ju -
është i qëllimshëm në se unë nuk e di dhe unë nuk e kujdesit se sa printf është
zbatuar.
Unë vetëm e di se, përsëri, nga e saj Dokumentacioni, atë që bën dhe si unë
jam duke menduar për të përdorin atë.
>> Tani, kujtoj se printf mund të merrni pak më të sofistikuar.
Përsëri, ne jemi vetëm duke folur rreth ekuivalent i bllokut zeroja thonë.
Por unë gjithashtu e bëri këtë për herë të fundit.
Kam kërkuar për të bërë programin tim një përshëndetje pak më dinamike dhe jo vetëm e vështirë
Kodi diçka si "botë", dhe definitivisht nuk është diçka e vështirë kodi
arbitrare si D-A-V-I-D në program.
Doja të kërkojë nga shfrytëzuesi për tij apo saj emri, dhe pastaj të bëjë diçka me
se string që ato ofrojnë.
>> Pra, ka diçka pak më ndryshe këtu. printf, një moment më parë,
ka, me të vërtetë, të bëjë diçka, por ajo nuk kthehen asgjë për mua.
E drejta?
Colton nuk dorëzojnë mua asgjë mbrapa, asnjë copë letër.
Nuk ishte vetëm një efekt anësor.
Sigurimin ime "Hello, World" si një Argumenti për Colton rezultuar në
efekt anësor i një fjalë, disa fjalë, shfaqeshin në ekran.
>> getString, edhe pse, është pak ndryshme. getString është gjithashtu një
funksionojë, por ajo kthehet disa vlera.
Ajo nuk ka vetëm të ketë një Efekti anësor estetike.
Ajo në fakt jep mua, personi telefonuar ose duke përdorur funksionin,
diçka mbrapa.
Pra, në këtë rast, është getString quajtur me getString hapur
Paren, Paren afër.
A getString, pra, të marrë ndonjë argument apo input?
Jo, ajo nuk duket.
Qëllimi i tij në jetë është vetëm për të marrë një varg.
Ajo ka nevojë për asnjë detaj më shumë se kaq.
Pra më lejoni të shkoj përpara dhe të pretendojë se, përsëri, kjo kuti e zezë nuk është printf,
por getString, dhe le mua, personi shkruar këtë program, telefononi ose përdorni
getString vetëm me shkrim G-E-T-S-T-R-I-N-G, hapur Paren, afër
Paren, getString.
>> Tani, unë nuk kam asnjë ide se si CS50 stafi zbatuar getString, por unë e di se
në qoftë se unë pres mjaft të gjatë, ajo do të bëjë SAJ Gjëja nën kapuç, ndoshta duke përdorur
disa variabla, ndoshta duke përdorur disa kushte, ndoshta duke përdorur disa sythe,
ndoshta duke përdorur disa funksione, ndoshta duke përdorur -
vetëm duke u përpjekur për të ngadalësuar - ndoshta duke përdorur disa karakteristika të tjera të programimit.
Por në qoftë se unë pres kohë të mjaftueshme - në realitet, në kompjuter, kjo ndodh
super të shpejtë -
në qoftë se unë pres kohë të mjaftueshme, ky funksion getString është duke shkuar për të marrë një varg
nga përdoruesi, i cili me sa duket është shkruajtja ajo jashtë në tastierë e tyre, dhe
atëherë, kur ju getString është bërë duke ato karaktere nga përdoruesit
dhe ruajtjen e tyre në një varg, që funksion, getString, do të ketë
gati për mua disa dalje të cilën unë jam duke shkuar për të tërhequr nga rruga e
Operatori detyrë.
>> Dhe nëse unë shkoj, në të vërtetë, në dalje këtu, Obosi ka bujarisht
marrë pjesë, pa e ditur këtë në avancojë, duke shkruar emrin e tij mbi këtë
e ndryshueshme, e cila është duke përfaqësuar një varg.
Tani, operatori detyrë do të thotë, edhe edhe pse kjo mund të ndjehen pak
të tepërta, unë në fakt kanë nevojë për për të bërë kopje e mia vet të kësaj.
Për shkak se në anën e majtë Ana - uh! -
vëreni se unë thelb kanë string përmendur në anën e majtë.
Kështu që unë jam gjithashtu do të bëjë Kopja e mi për këtë.
Dhe kjo është pak e një gënjeshtër të bardhë, sepse ne do të shohim në një javë ose dy të
koha që vargjet nuk janë në të vërtetë çfarë ato duken të jenë.
>> Por tani për tani, këtu është vlera e kthimit.
Këtu është kopja ime personale e saj pas duke përdorur operatorin detyrë.
Dhe tani, çfarë unë dua të bëj tjetër?
Ne tani e kemi të dytë nga dy rreshta të kodit.
Kështu që unë tani duan të thërrasë printf.
Le të pretendojë tani që e zezë Kutia është kthyer përsëri për të qenë
printf dhe jo getString.
>> Printf këtë herë do të marrë sa argumente?
Pra shikoni, kjo është si dy.
Ka dy presje në atje, por një nga ato presje, kjo është
brendësi të kuotat.
Pra, argumenti i parë është fjalë për fjalë do të jetë kjo.
H-E-L-L-O,, presja përqind S, backslash-n.
Dhe tani unë jam i siguruar jo argumentin një, por dy argumentet printf.
>> Dhe çfarë është menduar printf të bëjë me këto dy inpute, pasi kam kaluar ato në
si argumente?
Ajo është menduar për të marrë e dytë e atyre, të cilën unë e quajti, kështu që
pjesë të dytë të letrës kam shkruar jashtë një moment më parë është quajtur emrin.
Ajo do të plug të vlerës brenda e asaj variabël në placeholder,
% S, në mënyrë që, përsëri, vetëm në një moment të kohë, ne do të shohim një efekt anësor i
thirri printf, ku tani ne nuk shohin "Hello, World," por "hello,
Obosi. "
>> Pra, një raund i duartrokitje e madhe për të dyja Vullnetarët tanë, vetëm njëri prej të cilëve e dinte
kjo do të ndodh.
Dakord.
Pra, ndoshta, thjeshtë si ajo ishte, sigurisht, nëse ju jeni tashmë të njohur
Me të tilla, shpresojmë se ju kurrë nuk do të harrojmë se sa i veçantë vizual
Funksionet punojnë.
>> Pra, nuk ka më shumë se vetëm getString.
Brenda bibliotekës CS50, ka një bandë e tërë e funksioneve, të cilat
kapitalizohen vetëm për të bërë të qartë se ne shkroi këto funksione.
Në mënyrë tipike, në C, pothuajse çdo tjetër Funksioni që ju do të përdorni është Fjala.
Por ne qëllimisht përdorni shkronja kapitale vetëm për të bërë të qartë se këto
janë rrota trajnimit në terezi se ne do përdorin për vetëm disa javë që
thjeshtojë procesin e gjetjes së input nga përdoruesi.
>> Biblioteka CS50 nuk ka të bëjë asgjë se edhe ju nuk mund të bëjë nga
vetëm duke përdorur kodin e C, nga një teksteve oldschool.
Por, përsëri, ne i përdorim ato si trajnim rrotat e llojet vetëm për një çift të
javë në mënyrë që ne mund të shpëtoj prej Kompleksiteti që ju së shpejti do të kuptojnë
veten për të bërë diçka si relativisht i thjeshtë si marrjen e
input nga një përdorues.
>> Pra, e di se ju do të keni akses për GetChar, GetDouble -
dyfishohet.
What's - dhe pastaj GetFloat.
Çfarë është një noton?
Le të fillojë atje.
>> STUDENT: [padëgjueshme].
>> DAVID Malan: Po.
Kjo është një numër me një pikë dhjetore.
Kështu ndërsa një int është një numër i plotë, e cila është vetëm një numër me 0 deri 9,
disa numri i repetitions tyre, një noton është diçka
me një pikë dhjetore.
Dhe një të dyfishtë, ndërkohë, është gjithashtu një Numri me një presjes dhjetore, por më shumë
numra pas presjes dhjetore, pikë, potencialisht.
>> Pra, ne do të kthehemi tek kjo para se të gjatë.
Por zakonisht, secila prej këtyre llojeve të dhënave, secila prej këtyre llojeve të variablave
se një bibliotekë si e jona mund të kthehen në ju, përdorin numrat e ndryshme të bit për
ruajtur informacione.
Në mënyrë tipike, një Char, i cili vetëm do të thotë një karakter, përdor 8 bit.
Dhe kjo është në fakt në përputhje me tonë bajt i vullnetarëve të cilët javën e kaluar
erdhi dhe përfaqësonte një Karakteri ASCII në një kohë.
Pra, një Char është 8 bits.
>> Një noton ndodh të jetë 32 bit, në mënyrë tipike.
Dhe një të dyfishtë, si ju mund të me mend, është në fakt 64 bit, e cila është vetëm më shumë,
që do të thotë që ju mund të keni më të mëdha Numrat apo më shumë saktësi.
Por përsëri, më shumë se një tjetër kohë.
GetLongLong, ndërkohë, edhe pse stupidly emrin, është me të vërtetë vetëm një
numër i plotë që është dy herë më i madh, dy herë më gjatë, potencialisht, si një rregullt
integer, 64 bit në vend të 32.
Dhe getString ne kemi qenë duke përdorur.
>> Por kjo rezulton, në bibliotekë CS50, e cila është zbatuar, siç do të shohim, në
Forma e dy dosjeve, njëra prej të cilave quhet cs50.h, ka dy të tjerë
lloje të të dhënave në të.
Booleans nuk ekzistojnë në C. Ju mund të simulojë ato duke përdorur vetëm 0s dhe 1s
të gjithë programet tuaja.
Por ne në bibliotekë CS50 kanë krijuar simbolet "e vërtetë" dhe "false"
për të përfaqësuar 1 dhe 0 kështu që ju nuk e bëni kanë për diçka të vështirë kodit
fjalë për fjalë si 1 dhe 0.
Por ne do të shohim ato përsëri.
>> String, gjithashtu, nuk ekziston.
Dhe kjo është arsyeja pse kam përmendur është pak e një gënjeshtër e bardhë tani për tani.
Por ne do të zhvishem mbrapa se Shtresa para se të gjatë.
Por tani për tani, një varg është një Sekuenca e karaktereve.
>> Ndërkohë, në C, ju me të vërtetë kemi lloje të ndryshme të të dhënave.
Vini re këto janë të vogla.
Pra, funksionet që ju panë një moment më parë Funksionet janë shkruar nga CS50 atë
do të kthehet tek ju një vlerë që bie në një nga këto kategori.
>> Një fletë mashtrojnë çift vetëm për të mbjellë farë këtu. printf nuk bën vetëm
marrë% s si placeholders.
Ajo merr% d për integers dhjetore, ose% unë do të punojnë si.
F% është vlera lundrues pikë. C% është për një char, në qoftë se ju doni të vetëm plug një
Karakteri në një varg Preformatted si ne kemi qenë duke bërë, ju mund të përdorni% c.
>> Dhe pastaj, disi% annoyingly, Lld është për një numër të plotë të gjatë, të gjatë decimal,
që thjesht do të thotë në qoftë se keni nevojë për një të vërtetë Numri i madh dhe ju jeni duke përdorur diçka
quhet një kohë të gjatë, të cilat ne do të vijë kthehet në një pset, ju mund të përdorni për të LLD%
tregoni printf plug, në një të vërtetë të madhe integer këtu nga rruga e dytë të saj ose
një argument tjetër.
>> Dhe së fundi, kam premtuar se ka një ikje disa të tjera
Sekuencat që printf mbështet.
Ne kemi parë backslash-n.
Backslash-r që ju mund të shihni.
Kjo është lloj i një gjë e vjetër-shkollën.
Nëse keni përdorur ndonjëherë një vjet reale Makina shkrimit më parë dhe ju nxorrën mbi fiksime
të cilat jo vetëm për të ndërruar rrotën lëvizin formacion, ajo gjithashtu u zhvendos
Gjithë gjë të gjithë rrugën prapa mbi të majtë, mirë, backslash-r vetëm
thelb juaj kursori lëviz mbrapa në fillim të rreshtit
pa lëvizur atë poshtë.
Por përsëri, më shumë se, ndoshta, në të ardhmen.
>> Backslash-quote, backslash-quote dyfishtë, backslash-backslash eshte
zgjidhje për shoshë vogël pak Unë aludoi për të parë.
Dhe backslash-0 është në të vërtetë mjaft interesante.
Por ne do të kthehen në që para se të gjatë.
>> Pra më lejoni të shkoj në, tani, CS50 aplikim, dhe le të bëjë në fakt një
shpejtë ngrohur me një nga shembujt kemi bërë tashmë dhe pastaj të kalojnë në
diçka pak më komplekse.
Pra, nëse unë i hapur deri programin tim quajtur gedit -
kjo është redaktori im grafike.
Dhe unë mund ta bëjë këtë -
më lejoni ta mbyll atë dritare atje -
me anë të këtij ikonë këtu poshtë, gedit, në fund të majtë
qoshe e ardhshëm në menu.
>> Unë jam duke shkuar për të shkuar përpara dhe të avancojë, dhe shpëtuar në këtë shembull, të themi, Gjoni
Dosje Harvardit.
Folder John Harvardit është vetëm në shtëpinë e tij dosjen ku të gjitha dosjet e tij të jetojnë
by default.
Dhe unë jam duke shkuar për të shpëtuar këtë si një file i quajtur Hello-0.c.
Dhe unë kam zgjedhur këtë emër vetëm kështu ajo linjat deri me kodin e mostrës për
website natyrisht dhe në YouTube videos online.
>> Deri tani unë jam duke shkuar për të filluar të shkruajnë programin tim të parë.
Më lejoni të zoom në për lexueshmëri.
Dhe unë jam duke shkuar për të shkuar përpara dhe të thonë int void kryesore, e cila është vetëm si se
copë verdhë mister që fillon një program.
Unë kam marrë në zakonin e mbi vjet të hapjes Brace time kaçurrel, atëherë
edhe mbylljen e saj dhe pastaj duke shkuar prapa në ku unë dua të vënë kodin tim, vetëm
sepse ajo ndihmon mua të mbajtur gjithçka balancuar, sidomos si tim
Programi i merr kohë të gjatë.
>> Dhe tani, në këtu, unë jam duke shkuar për të shkuar përpara dhe thonë, printf, të japin kuotën e mbyll thonjëzat,
Përshëndetje Të Gjithëve, backslash-n, të japin kuotën ngushtë, kllapë të ngushtë, pikëpresje.
Kështu që unë jam vetëm duke përsëritur çdo gjë që ne kemi qenë duke marrë për të dhënë deri tani.
Tani unë jam duke shkuar për të zoom out.
>> Dhe kjo dritare terminali poshtë këtu, çfarë Unë jam i lejohet të bëjë në këtë zi
dhe të bardhë dritare?
Çfarë mund të përdorni atë për të?
Pra, ky është vendi ku unë të kandiduar komandat dhe ku unë mund të përpilojë gjëra.
Dhe unë jam duke shkuar për të mbajtur atë të thjeshtë.
Unë jam duke shkuar për të përdorur një program quajtur bërë, e cila nuk eshte
teknikisht një përpilues.
Tingëllimë quhet përpiluesi, por ne do të vijnë përsëri në se në një
javë ose dy herë: së.
>> Tani për tani, unë jam vetëm duke shkuar për të bërë shkruani Hello-0, Por ata prej jush të cilët ishin
krahasuar në mendjen tuaj atë që unë sapo shtypur në atë që unë duhet të ketë shtypur mundet
e di tashmë se unë e bëri diçka të gabuar këtu.
Tani, nuk ka në mënyrë të qartë disa gabime.
Para se unë të shikoni edhe në atë që ata janë, çdo Mendimet si për atë që kam bërë gabim?
>> STUDENTËT: [Mbivendosje Zërat].
>> DAVID Malan: Po.
Unë jam i humbur dosjen e bibliotekës header.
Çdo të këtyre dosjeve. H quhen header fotografi, dhe ata kolektivisht
përkasin gjërave të quajtura bibliotekat.
Bibliotekat janë vetëm chunks e kodit që njerëzit e tjerë shkruajtur.
Pra, [standardi? I?] biblioteka eshte nje koleksion i dosjeve që përmbajnë kodin
që njerëzit e tjerë shkruajtur.
>> Kështu që unë jam i humbur se.
Pra, pse jam unë duke marrë një gabim?
E pra, më lejoni të lëviz mbrapa deri në Dritarja ime terminal këtu.
Dhe fatkeqësisht, ne C, si në një shumë prej gjuhët e programimit, sidomos
nëse kjo është e gjitha e re për ju, gabim Mesazhet janë të sakta, por ata janë edhe
mjaft i mistershëm.
Dhe gabimi këtu, në të kuqe, është "Funksioni i nënkuptuar deklaruar bibliotekë
printf me llojin e ", dhe pastaj ajo fletushkat për vijën e ardhshme ", int const char *,
... "Ajo thjesht merr me të vërtetë dërrmuese shpejt.
>> Por ajo që ju duhet të fillojë të bëjë, në qoftë se, përsëri, të reja për të gjithë këtë, është vetëm për të
filloni të shikoni për fjalë kyçe.
Në mënyrë të qartë, unë nuk mund të kuptoj gjysma nga fjalët që unë jam duke parë vetëm ende.
Ju do të, megjithatë, në kohën e një jave.
Por unë shoh printf.
Dhe kjo duhet të fillojë, para se të gjatë, për të shkund kujtesën tuaj, të gjithë të drejtë, printf.
Diçka është e gabuar me printf.
A e kam të spell it wrong?
Jo, kjo nuk duket si - oh.
Unë nuk mund ta përdorni atë nëse kam mësuar përpilues se ajo ekziston.
Dhe kështu, përsëri, shkoni me instinktet tuaja, edhe në qoftë se ju në fakt nuk e kuptojnë
aktuale mesazhet e gabimit.
>> Dhe me të vërtetë, zgjidhja këtu është për të vetëm përfshijnë atë në krye të file
si kjo, resaving dosjen time me Kontrolli-S ose File menu.
Dhe në qoftë se tani unë kthehem këtu poshtë, Unë jam duke shkuar për të pastruar këtë.
Kontrolli-L është vetëm një mënyrë e mirë për të pastruar në ekran.
Dhe atëherë unë jam duke shkuar për të tipit të "bëjë përshëndetje 0 "Enter, dhe tani unë ende shoh një
Sekuenca fshehtë e simboleve, por ne do të kthehen në atë.
Kjo është ajo që bëni është bërë për ju.
Është automating procesin e marrjes së një komandë mjaft i bezdisshëm që përfshin
Tingëllimë, përpilues aktuale.
Por fakti që kam marrë asnjë gabime do të thotë se kjo gjë duhet të punojnë.
>> Kështu që unë tani jam duke shkuar për të bërë - më lejoni të zoom në përsëri -
./hello-0 Enter, dhe në të vërtetë, unë po shoh "Hello, World". Pra, le të tani të rritur
kjo ndonjëherë në mënyrë pak vetëm për të replikuar hapat e kemi menduar.
Unë jam duke shkuar për të riemërtoni këtë me Ruaj Si për të hello1.c.
Dhe tani unë jam duke shkuar për të deklarojë një ndryshore quajtur emrin, kështu që emri string,
dhe unë jam duke shkuar për të vënë në atë Vlera e mbyll thonjëzat kuotë-
D-A-V-I-D ngushtë quote pikëpresje.
Dhe tani unë jam duke shkuar për të zëvendësuar "botën" me atë që placeholder për një varg?
% S.
>> Dhe tani, sa argumente duhet printf marrë këtë kohë?
Pra dy.
Kështu që unë shkoj jashtë kuotat.
Unë tipit "emrin" pas një presje.
Por unë kam bërë diçka tjetër gabim këtë herë.
Por le të supozojmë se unë nuk e bëri të kuptojë se ende.
Më lejoni të shkojnë deri këtu.
>> Dhe vini re, gjithashtu, unë jam duke marrë një pak mërzitur të shtypni "make Përshëndetje 0" të gjitha
kohës, "të bëjë", dhe e gjithë kjo.
Pra, ajo rezulton, në Linus ju mund të goditur shpesh arrow deri në tuaj
tastierë, dhe ju në fakt mund të lëvizni nëpër të gjitha komandave që unë kam
mëparshme për të ekzekutuar vetëm tani.
Pra, në qoftë se unë bëj këtë, Up, Up, nuk ka të bëjë përshëndetje 0.
Unë nuk dua që.
Unë vetëm dua që kjo të ndryshojë për të përshëndetje 1 këtë herë, Enter.
Përfundimisht, që do të ju kursejnë disa kohë.
>> Dakord.
Për fat të keq, nuk është një gabim.
Pra më lejoni të lëvizni lart.
Kjo duket si unë me të vërtetë therrje këtë program.
Unë do të thotë, Perëndia im, kjo është dy rreshta të kodit, dhe linjat e saj të 10 gabime.
Por shikoni në një krye të parë.
Përdorimi i vargut identifikues padeklaruar.
A e kam të thotë standardi I n?
Jo unë nuk e bëri.
Unë do të thotë string.
>> Por ku është variabël string Lloji i deklaruar, dd themi?
Pra, kjo është në CS50 bibliotekës.
Pra, kjo nuk do të mjaftojë, në këta parë Nja dy javë, vetëm për t'u përdorur
C çfarë na jep.
Unë jam gjithashtu duke shkuar për të shkuar deri këtu, dhe unë mund të vënë atë më lart ose më poshtë, por unë do të
vetëm ta mbani atë alfabetik për të mbajtur gjërat rregullt.
Unë jam duke shkuar për të përfshirë cs50.h, cila është e para-instaluar për
ju në aplikim CS50.
Dhe kjo është burim i hapur, kështu që edhe njerëzit në internet mund të përdorin atë në e tyre
kompjutera vet.
Por kjo vjen me aplikim CS50.
>> Pra, tani më lejoni të shkuar mbrapa dhe recompile kjo të bëjë me përshëndetje 1.
Damn it.
Akoma një tjetër gabim.
Më lejoni të lëviz deri në të parë, edhe pse.
Ky është një kompleks i vogël.
Multi-karakter karakter konstante.
Kjo nuk është ndihmuar mua.
Por vini re, është tingëllimë të paktën një pak bit të mirë, ku me pak
jeshile caret simbol, është thënë këtu është ku unë screwed up.
Pse është treguar, me pak se gjelbër shigjetë, të japin kuotën e vetme e ardhshëm
për emrin tim?
>> Pra, kjo është një nga gjërat që ju vetëm të marrë të përdoret për të, veçanërisht në qoftë se ju keni qenë
programuar në Python, ose JavaScript, apo gjuhët e tjera ku ky detaj
nuk ka rëndësi.
Në C, kjo ka rëndësi.
Nëse ju jeni duke deklaruar një varg, i cili është një sekuencë prej 0 ose më shumë personazheve,
ju të vërtetë duhet të përdorni kuotat e dyfishtë.
Kështu që unë në fakt duhet të ndryshojë këtë shpinën për të hapur kuotë, të japin kuotën e mbyllur, me
Kuotat e dyfishtë.
Kuotat e vetme kanë vendin e tyre, por vetëm kur ju jeni duke përdorur individ
chars, por më shumë në atë kohë tjetër.
Tani për tani, kuotat e dyfishtë janë të domosdoshme.
>> Deri tani, më lejoni të kthehem në terminalin e mia dritare, bëni përshëndetje 1.
Dhe kush është i sigurt?
A është ky program tani do të hartojë në mënyrë korrekte?
OK.
Pra, tre prej nesh mendoj se kjo.
Dakord.
Enter.
Dhe ai në fakt e bëri.
Pra, nuk ka gabime kjo kohë, madje edhe pse ky program ka marrë një grimë
më komplekse.
Nëse unë tani bëj dot vizë-1 Përshëndetje, Enter, ajo do të thonë "hello, David."
>> Por le të bëjë përsëritje e tretë prej kësaj, ku
Programi është me të vërtetë dinamike.
Më lejoni të shkojnë përpara dhe të ndryshoni skedarin e emri, vetëm për konsistencë me
fotografi ju do të keni në dispozicion për ju pas online.
Enter.
Dhe tani unë jam duke shkuar për të shkuar në dhe nuk ruajtur "David" kodifikua e vështirë këtu.
Çfarë mund të bëj për shumë thjesht përmirësuar këtë program?
>> Unë mund të telefononi getString.
Kjo mund të jetë pak jo-e qartë se çfarë është gati të ndodhë, kështu që unë jam duke shkuar
që në fakt të shtoni një tjetër linjë, printf, dhe thonë, emrin e zorrës së trashë, të japin kuotën e ngushtë, vetëm
për të dhënë një përdorues të shpejtë në ekran.
Dhe tani unë jam duke shkuar për të shkuar këtu, dhe unë jam do të përdorni shkurtore tastiere time.
Unë jam duke shkuar për të shkuar lart, lart, dhe për të ndryshuar përshëndetje 1 deri hello 2, Futni.
Dhe fatmirësisht, unë jam duke bërë përparim.
>> Dhe tani unë jam duke shkuar për të shkuar deri dot për çaj Përshëndetje dhe
ndryshojë atë në 2, Enter.
Dhe tani programi im -
Unë do të zoom in - është duke u pak prettier.
Emri do të jetë, le të themi Rob këtë herë, Enter, hello, Rob.
Ne mund të bëjë atë përsëri.
Emri, Lauren, Enter.
Emri, Joseph, Enter.
Emri, le të përpiqet të jetë vështirë, Enter.
Eh.
Kjo nuk është me të vërtetë një bug.
Pra, kjo është vetëm një e shëmtuar pak.
Pra, ndoshta ne mund të zgjidhur këtë në të ardhmen, jo tani.
>> Por si do ju instinktivisht shkoni në lidhje me trajtimin e
se sfidë e veçantë?
Ajo vetëm duket idiotike.
Si mendoni ju shmangur gjëra kërkim budalla?
Pra, ne mund të bëjmë, OK, kam dëgjuar një çift i gjërave, një kusht dhe një lak.
Ne mund të përdorim, një, një kusht, që të kontrolloni ajo është gjatësia e vargut
përdorues i dha na?
Dhe nëse kjo është 0, kjo është vetëm japin kuotën e mbyll thonjëzat, ata vetëm hit Enter, pastaj
ndoshta unë duhet të çirrem në to dhe të nxisë ato përsëri.
Por si do të shkaktonte një ato përsëri?
E pra, edhe unë dëgjova lak, dhe unë mund të të bëjë që përsëri dhe përsëri dhe përsëri
nxitur nga shfrytëzuesi për të njëjtën gjë.
>> E pra, le të bëjmë një shembull tjetër duke përdorur një ndryshme
Funksioni në bibliotekë CS50.
Më lejoni të mbyllë këtë skedë.
Më lejoni të krijuar një të re.
Dhe unë do të thërrasë atë adder.c, vetëm për shkak se është e lehtë për të bërë aritmetikë të thjeshtë,
edhe pse kjo do të jetë plotësisht underwhelming me atë që ju mund të bëni
me çdo kompjuter moderne.
>> Por më lejoni të shkoj përpara dhe tani -
Kam mësuar mësimin tim herën e fundit - të përfshijë cs50.h, përfshijnë stdio.h, int
void kryesore, të cilat, tani për tani, unë vetëm do të të marrë në besim të verbër, por ne do të supozojmë
që do të kuptojnë se çfarë që do të thotë para se të gjatë.
Dhe unë jam duke shkuar për të thënë diçka si "më jepni një int."
>> Dhe tani, si mund të merrni një int?
Unë dua që përfundimisht të deklarojë një ndryshore x quhet i tipit int dhe
ruajtur në të një numër të plotë nga ana e përdoruesit.
Kështu që ishte një kafshatë.
Por në qoftë se dikush dëshiron të propozojë, si unë deklaroj një x integer quajtur?
X int.
>> Pra, kjo është me të vërtetë kaq e thjeshtë.
Më jepni një int.
Tërhiqni vëmendjen se x.
Tani unë përdorin operatorin detyrë.
Dhe si mund ta ruajë nga la një vlerë e përdoruesit?
Unë nuk dua për të thirrur getString, natyrisht, por getint.
Çdo argumente?
Jo.
Pra, kjo është e hapur Paren, Paren afër menjëherë, dhe pastaj një
pikëpresje përfundon linjë.
>> Tani më lejoni të bëjë këtë përsëri.
Më jepni një tjetër int.
Këtë herë unë do të bëj int, le të telefononi atë y, e barabartë me getint.
Dhe tani më lejoni të bëj diçka super-thjeshtë si disa matematikë.
Printf Pra, shuma e% d është vendshënuesi per nje int.
Dhe% d, periudha, backslash-n.
>> Dakord.
Kështu që nuk është e vërtetë matematikë.
Por në qoftë se unë dua të them shumën e këtij Vlera plus kjo vlerë është e barabartë me këtë
vlera të tjera, se sa argumente në përgjithshëm duhet të jetë i dhënë printf,
në fund të fundit?
Pra, katër, e drejtë?
Ky varg dhe pastaj tre vlerat.
Pra, x është së pari unë dua të jenë të lidhej ne fillim te d%.
y do të jetë e ardhshme.
>> Dhe tani unë lloj i duan të thonë z, por z nuk ekziston.
Por kjo nuk është një punë e madhe.
Sepse çfarë do të bëni instinktivisht, veçanërisht në qoftë se keni pasur një
Llogaritësi i grafikët, çfarë ju shkruani?
Si në lidhje me x plus y?
Pra, kjo nuk është një variabël aktuale.
Kjo është vetëm shuma e dy variabla të tjerë.
Dhe kjo është krejtësisht legjitime.
C me siguri e kupton thjeshtë aritmetike si kjo.
>> Pikëpresje, të shpëtuar.
Tani më lejoni të shkoj poshtë këtu dhe tipit të bëjë nëpërkë, Enter.
Jo gabim, kështu që është shumë progres.
Lloji kuçedër.
Dhe një tjetër shkurtore tastiere, nëse ju filloni për të mërzitem
me të gjitha komandat -
nëse ju filloni të shtypni një komandë, si dot pakësojë shpalljen, dhe kjo është ku tuaj
fillon në mërzitje, ju zakonisht mund të goditur Tab që të ketë kompjuter përfundojë
pushoni i frazës për ju, nëse ajo nuk është paqartë se çfarë duhet të vijë pas ad.
>> Pra më lejoni të shkoj përpara tani dhe ju klikoni Enter.
Më jepni një int, 1, 2, dhe fatmirësisht, kjo është 3.
Por si gjithmonë, testimin e programeve nuk duhet reduktuar në
vetëm duke u përpjekur atë një herë.
Më lejoni të provoni një rast qoshe, si negative 1, jep 1, dhe që një
kontrollon jashtë si.
Dhe unë ndoshta dëshironi të bëni disa më shumë testimit rigoroz, por unë jam goxha i
rehat me se ku është në.
>> E pra, tani le të përpiqemi një program tjetër se këtë herë përdor një
bit e sintaksës tjetër.
Më lejoni të krijoni një skedar të ri.
Unë do të thërrasë këtë conditions0.c të vijë me disa online Kodi mostrës.
Dhe më lejoni të shkoj përpara dhe të bëjë përfshijnë cs50.h, përfshijnë
stdio.h, në zbrazëti kryesore -
OK.
Ka të shkojmë.
Ne kemi Boilerplate tonë standarde.
>> Dhe këtë herë unë jam duke shkuar për të thënë printf, "Unë do të doja një int, të lutem," vetëm për
të bëjë një të shpejtë pak më shumë miqësore.
Dhe tani unë dua të merrni një int nga përdoruesi.
Unë jam duke shkuar për të thirrur atë n këtë kohë, vetëm sepse n tingëllon si numër.
getint, dhe tani, çfarë bëjnë Unë dua të bëj me të?
E pra, nëse n është - dhe unë do të zoom në -
nëse n është më e madhe se 0, unë dua të bëni në vijim -
printf "Ju kap një numër pozitiv." Tjetër, unë jam duke shkuar për të tipit printf "Ju
kap një negativ
numër. "Të gjithë të drejtë.
Pra ky program, edhe pse unë e bëri atë shpejtë, duket e drejtë sintaksore.
Më lejoni të provoni këtë.
Bëni gjendjen 0.
Duket për të kandiduar.
Kushti 0, të hyjë.
Le t'i jepte një int të 50.
I kap një numër pozitiv.
Le të provoni përsëri.
Kushti 0.
Negativ 50.
I kap një numër negativ.
>> Por tani, më lejoni të marr atë që ne do të vazhdojmë duke e quajtur një rast këndi, e cila është më e
një rast interesant që ju mendoni se mund të ju jap disa probleme, 0.
Tani, unë jam goxha i sigurt se kjo është një nga ato raste qoshe ku është zero
as pozitive as negative, kështu mia Programi, edhe pse në sintaksore
korrigjuar - ajo harton, ajo shkon - nuk është logjikisht e saktë.
Pra, çfarë është fix thjeshtë këtu nëse unë dua për të zbuluar, nëse unë dua për të trajtuar n
është e barabartë me 0 veç e veç?
>> Pra, nëse n është e barabartë me 0, atëherë unë dua të them diçka si printf "Ju kap 0".
Më lejoni të provoni këtë tani.
Më lejoni të kthehem këtu, të qartë Dritarja ime, dhe përpilim.
Hm.
Një gabim gjenerojë.
Por unë nuk ju doni të kontrolloni nëse n është e barabartë me 0.
>> Pra, përsëri, një tjetër gjë e trashë të mësohen për të, shenjë të barabartë është
operatori detyrë.
Pra, kjo është në të vërtetë gabim në atë që, teknikisht, edhe pse përpiluesit
mbrojtur mua nga vetja, ne do të teknike te kopjimi 0 ne n, e cila
nuk është ajo që unë dua.
Unë dua për të provuar për barazi barabartë me të barabartë.
Dhe kështu që tani mund të jetë zgjidhja ime më e mirë.
>> Më lejoni të vërtetë kjo resave si, të themi, conditions1, të jenë të reja dhe të përmirësuara.
Deri tani, nëse unë recompile kjo, ajo do të bëjë kushte -
uh - conditions1 bëjnë dot slash conditions1, Enter, "Unë do të doja një int,
ju lutem. "Unë jam duke shkuar për të shkuar përpara dhe të tipit 50.
Ajo është ende e mirë.
Negativ 50, ende e mirë.
0, dhe kjo, me të vërtetë, zbuluar që unë kap 0.
>> Pra, ajo që më shumë mund të bëj unë tani me këtë?
E pra, ne me siguri mund të bëjë gjithnjë e më të gjërat komplekse.
Por ajo që unë do të doja të propozojë është që ne të përfundojë në këtë shënim këtu.
Në qoftë se ne tërheq lart këtë, ju do të shihni, ndoshta, një karikaturë preferuar i juaji
deri sot ju mund të kurrë nuk e kanë kuptuar.
Dhe kjo është në lidhje me cilësinë e të qeshurit ju duhet të merrni me shaka SHC.
Pra, kjo është për të drejtën.
>> Por më shumë compellingly, unë mendova se do na japin një ngacmues pak për të hënën.
Pra, ne kemi filluar përdorimin e integers.
Ne kemi përmendur gjithandej.
Ne kemi përmendur edhe në dyshe, e cila, përsëri, ju jap numrat
pas pikë dhjetore.
>> Por kjo rezulton se gjithandej dhe dyshe, dhe, me të vërtetë, kompjutera,
rrënjësisht, nuk mund të shprehin disa vlera saktësisht.
Ne e dimë nga klasa e math që ju mund të të ketë ndonjë numër të numrave pas
Pika decimale.
Dhe ju mund të vihet edhe një bar vertikale të thonë këta të shkojnë përgjithmonë.
>> Për fat të keq, ju nuk mund të vërtetë të bëjë që në një kompjuter.
Dhe kështu raste qoshe të lindin.
Për shembull, mendoj që ju jeni bërë diçka financiar.
Ju jeni duke bërë matematikë me përqindje, dhe
me dollarë dhe cent.
Dhe ato cent nuk e bëjnë domosdoshmërisht përzgjedhjen.
E pra, ajo rezulton se fraksionet e pennies mund të fillojë të shtoni deri kur
modeluar me një sistem kompjuterik në mënyrë të tillë që i zgjuar
njerëzit mund të përfitojnë.
>> Dhe ata prej jush të cilët nuk e kanë parë, unë do të të doja të ju jap një ngacmues 30-të dytë
një film i mrekullueshëm i njohur si Office Space, e cila do të përshkruaj një foto të një
Problemi ne do të trajtojë Gjëja e parë që të hënën.
Nëse ne mund të rritur volumin pak, unë ju jap 30
sekondat e hapësirë ​​për zyre.
>> [Video playback]
>> -Unë do të thotë, që ju, ju nuk keni qenë duke treguar dhe ju merrni për të mbajtur punën tuaj.
>> -Në fakt, unë jam duke u promovuar.
>> -Unë mund të programojnë një virus që do të shqyej atë vend off kohë e madhe.
>> -E pra, si e bën këtë punë?
>> -Sa herë që ka një transaksioni bankar ku interesi i llogaritur, dhe atje
janë mijëra në ditë, kompjuteri përfundon deri 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.
>> -Ne duhet të betohem për Zotin.
>> -Në qoftë 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.
>> -Sigurisht.
>> -Dakord.
>> -Don ', njeri merak.
Unë nuk do ti tregoj askujt as.
>> [VIDEO END rishikim]
>> DAVID Malan: Pra, kjo, atëherë, është CS50, se ishte Office Space, dhe të gjithë do të
kuptim të hënën.
Shihemi pastaj.
>> Transmetuesi: Në CS50 ardhshëm, Rob përshtat për të qenë jashtë
Plani i Harvardit vakt.