[Powered by Google Translate] DAVID J. Malan: Në rregull.
Kjo është CS50, dhe ky është fundi i javës së dytë.
Nëse ju presin që të jenë të uritur rreth kësaj kohe nesër, e di se ne jemi duke shkuar
të mblidhet nesër si një grup i vogël, e enjte, 01:15.
Nuk është kjo URL këtu nëse ju dëshironi të RSVP.
Hapësira është e kufizuar, kështu që ju lutemi falë nëse formulari është plotësuar nga koha që ju të
plotësoni këtë.
Një tjetër URL edhe pse kjo mund të jetë me interes është kjo.
>> Pra, në vetëm rreth një muaj, kursi do të vihen në dispozicion
gjithë më gjerësisht nëpërmjet EDX, nëpërmjet të cilës folks në internet do të jetë
në gjendje të ndjekin së bashku, të angazhohen në kursin mjaft aktive, në fakt.
Ata do të jenë duke përdorur aplikim CS50 dhe CS50 diskutuar dhe më i
mjete të ndryshme software që ne tashmë kanë qenë duke përdorur këtë semestër.
Dhe një nga nismat që ne do të donim për të marrë si një eksperiment këtë vit
është për të parë se sa i kënaqur që ne mund të përkthehet në të folur dhe të tjera
gjuhë të shkruara.
Pra, nëse ju mund të ketë një interes në pjesëmarrjen në këtë projekt, ku
ne do të sigurojë transkriptin anglisht dhe titra per kurs të
ligjërata dhe pantallona të shkurtra dhe seminaret dhe seksionet dhe si -
në qoftë se ju flisni rrjedhshëm ose shkruani rrjedhshëm gjuhën ndonjë tjetër, ne do të
dashuri te angazhohen ju në këtë projekt, ku ju të marrë në një ose më shumë të
video, përkthimin e tyre në gjuhën që ju e dini mjaft mirë.
Për të ju jap një ndjenjë të ndërfaqes, nuk është kjo web-based user interface
se ne do të jetë duke përdorur që do të krijojë një thelb UI si kjo.
Kjo është më mësim disa Halloween më parë.
Dhe në anën e djathtë atje në të zezë e ardhshëm të këtyre vulave kohore,
ju do të shihni gjëra të ndryshme që erdhi nga goja ime atë ditë.
Dhe pastaj poshtë atë, ju do të jetë në gjendje për të përkthyer në disa gjuhë tjetër.
Pikërisht ajo që është në mes të hartës, në këtë rast, Shqip
dhe, të themi, spanjisht.
Pra, kjo është në fakt një shumë përdorues-miqësor mjet.
Ju mund të Rewind dhe të shpejtë përpara shumë lehtë me shkurtesat e tastierës.
Pra, nëse ju do të donte për të marrë pjesë në këtë eksperiment dhe kanë fjalët tuaja
shihet dhe lexohet nga potencialisht mijëra njerëz atje, ju lutem mos ndjehen të
lirë për të marrë pjesë.
>> Tani një fjalë në lidhje me kotele nga e hëna, mos kemi dërguar një tepër
Mesazhi frikshme.
A e kupton se sa orë zyra sugjerojnë dhe si seksionet e sugjerojnë, të
Dizajni i kursit është shumë që kanë bashkëpunuar dhe studentët
duke folur për të punuar me grupe probleme dhe problemet së bashku.
Dhe me të vërtetë të vijë vetëm vjen poshtë për të, përsëri, puna që në fund të fundit
duhet të dorëzojnë duhet të jetë tuaj.
Dhe kështu kjo është, krejt sinqerisht - në orarit të punës, kjo është krejtësisht normale -
kjo është krejtësisht për të pritur, madje - për të biseduar me disa
miqtë tjetër për ju.
Nëse ai ose ajo është duke luftuar me disa çështje, dhe ju jeni si, oh, edhe le
mua ju jap një paraqitje e shkurtër e disa linjë të kodit që kam shkruar.
Kjo është në rregull.
Kjo ndodh.
Dhe kjo është shumë e favorshme, unë mendoj se, me procesin e të mësuarit.
Kur linjë, përsëri, merr kaloi është kur koka është lloj i tilted mbi
sekonda këtu për më shumë ose minuta për të vërtetë që të ketë vetëm
qenë një mundësi zhbllokimin për mikun tuaj.
Dhe sigurisht, kur gjërat merrni shkëmbehet nëpërmjet postës elektronike dhe Dropbox dhe
si, atje është vija.
Pra, me të gjitha mjetet, të ndjehen rehat dhe të ndjehen të inkurajuar për të biseduar me miqtë
dhe shokët e klasës për psets dhe më shumë.
Dhe vetëm të kuptojë se çfarë ju duhet të vërtetë në fund të fundit të paraqesë jetë
produkt i krijimit tuaj dhe jo dikush tjetër.
>> Pra, në të njëjtën mënyrë e krijesave Shtazët e buta, ju mund të
e di këtë djalë këtu.
Pra, kjo është një film tmerrësisht dobët nga vite më parë.
Çdokush parë këtu Spaceballs?
Dakord.
Kështu që një numër i mirë këtu.
Pra, kjo është mënyra jonë mrekullisht akademik i prezantuar sot përfundimisht
nocioni i cryptography.
Dhe kështu një nga problemet domain specifike për pset 2, i cili do të vijë
nga natën vonë nesër, është që të zhyten në botën e kriptografisë, që
është arti i encrypting ose përpiqen informacion.
Dhe kjo në fund të fundit ka të bëjë me botën e sigurisë.
>> Tani sigurie për më na vjen në formën e mekanizmave mjaft mondane.
Të gjithë ne kemi përdoruesve dhe fjalëkalimet.
Dhe të gjithë prej nesh kanë shumë të këqija përdoruesve dhe fjalëkalimet, ka shumë të ngjarë.
Nëse fjalëkalimi juaj është i njëjtë në faqet e internetit të shumta, që ndoshta nuk
ide e mirë, si ne do të diskutuar drejt përfundimit Semestri-së.
Nëse fjalëkalimi juaj është i shkruar në një shënim ngjitet - nuk është shaka - në tuaj
monitor, se shumë nuk është domosdoshmërisht dizajn të mirë, por mjaft të zakonshme
fenomen.
Dhe në qoftë se ju nuk jeni duke përdorur kriptografinë të encrypt passwords tuaj, ata janë
veçanërisht të ndjeshme.
Pra, nëse ju mendoni se ju jeni duke u super zgjuar duke pasur një Word fshehur
dokumentuar diku në hard drive tuaj që ka të gjitha fjalëkalimet tuaja, por
kjo është në një dosje që askush nuk do të shikoni në, se edhe nuk është një shumë e
Mekanizmi i sigurt.
Dhe kështu ajo do të prezantoj 2 pset kjo është arti i kriptografisë dhe
përpiqen informacion në mënyrë që gjëra të tilla si fjalëkalimet janë
të gjitha më i sigurt.
Pra, si për të motivuar këtë problem shumë i vërtetë botërore me një shumë jo-real-botëror
Skenari, më lejoni të prezantoj me një nga clips favorite tona këtu nga kjo
film, Spaceballs.
>> [Rishikim video]
-Helmetë, ju dreq, çfarë po ndodh?
Çfarë jeni duke bërë për vajzën time?
-Më lejoni të prezantoj kirurg plastike shkëlqyer të ri, Dr Philip
Schlotkin, më i madhi punë hundë njeri në tërë
universi dhe Beverly Hills.
Lartësia Juaj-.
-Nose punë?
Nuk të kuptoj.
Ajo është tashmë kishte një punë hundë.
Kjo ishte një ëmbël 16 pranishëm.
-Jo, kjo nuk është ajo që ju mendoni.
Është shumë, shumë keq.
Nëse ju nuk jepni kombinim me mburojën e ajrit, Dr Schlotkin do
jepni vajzën tuaj mbrapa hundën e saj të vjetër.
-Jo!
Ku e keni marrë këtë?
-Në rregull.
Do ta tregoj.
-Jo, babi, nr.
Ju nuk duhet.
-You're drejtë, my dear.
Unë do të humbasë hundën tuaj të re.
Por unë nuk do të tregoj atyre kombinimin pa marrë parasysh çfarë.
-Shumë mirë.
Dr Schlotkin, të bëjë keq juaj.
-Im kënaqësi.
-Jo!
Prisni, prisni.
Do ta tregoj.
-E dija se do të punojë.
Të gjithë të drejtë, t'i jepte për mua.
-Kombinim është një.
-Një.
-Dy.
-Tre
-Tre.
-Katër.
-Five
-Pesë.
-Kështu kombinim është një, dy, tre, kater, pese.
Kjo është kombinimi stupidest kam dëgjuar ndonjëherë në jetën time.
Kjo është lloj i gjë një idiot do të ketë në bagazhin e tij.
-Faleminderit, lartmadhëria juaj.
-Çfarë keni bërë?
-I fikur mur.
-Jo, ju nuk e keni.
Ju fikur filmin e tërë.
-Unë duhet të ketë presion butonin e gabuar.
-E pra, e vënë atë përsëri në.
Vendos filmin prapa.
-Po, zotëri.
Po, zotëri.
-Le të shkojë, Erna.
Eja, Gretchen.
Sigurisht që ju e dini se unë ende do të duhet të faturojë ju për këtë.
-E pra, e bëri atë punë?
Ku është dera?
-Ajo ka punuar, zotëri.
Ne kemi kombinimin.
-Madhe.
Tani ne mund të marrë çdo frymë e ajrit të freskët fundit nga Druidia planetit.
Çfarë është kombinimi?
-Një, dy, tre, katër, pesë.
-Një, dy, tre, katër, pesë?
-Po.
-Kjo është e mahnitshme.
Unë kam marrë kombinimin e njëjtë në bagazhin tim.
Përgatitja Spaceball 1 për largimin e menjëhershëm.
-Po, zotëri.
-Dhe ndryshojë kombinim në bagazhin tim.
-Ow!
[VIDEO END rishikim]
>> DAVID J. Malan: Një film mahnitshme që ju duhet tani të gjithë e shohin.
Pra, konteksti këtu është se me të dhëna të pasigurta vjen një mundësi për të
encrypt atë dhe të përpiqen atë.
Dhe kështu kjo, për shembull, është një shembull i një mesazhi të koduar.
Ky fakt thotë diçka në gjuhën angleze.
Por kjo nuk është e qartë tërësisht e qartë.
Dhe ne do të vijnë rreth të plotë sot për të ngas përveç asaj këtë sekret
Mesazhi këtu është.
Por në botën e vërtetë të kompjuterëve, gjërat nuk duken edhe si ata mund të
të jetë fraza anglisht.
Për shembull, kjo është ajo që ju mund të gjeni në një Linux apo Mac, ose standarde
Kompjuter Unix në një skedar që ishte një herë e një kohë të quajtur file password.
Në ditët e sotme, ajo është lëvizur në vende të tjera.
Por në qoftë se ju shikoni në vendin e duhur në një sistem, ju do të shihni jo vetëm tuaj
Username ose e njerëzve të tjerë në sistem, por ju do të shihni një
Versioni i koduar fjalëkalim të tyre.
Në të vërtetë, fjala Crypt nuk sugjeron se stuff vijim është shifruar.
Dhe kjo seri e në dukje të rastit shkronja dhe karaktere dhe numrat dhe
kështu me radhë mund të decrypted vetëm nga zakonisht ditur disa sekrete -
një fjalë të fshehtë, një numër i fshehtë.
Dhe kështu me të vërtetë, arti i kriptografisë përfundimisht boils poshtë për të besimit të disa
lloj dhe duke ditur diçka që dikush tjetër nuk e bën.
Ne do të shqyrtojë këtë në hollësi pak më sot dhe në pset që do të vijnë.
>> Dhe tani një fjalë të kalojë / dështojnë.
Pra sidomos, si disa prej jush kanë fetar në pset 1, aplikim, dhe
një botë shumë i ri për veten tuaj, e kuptoi se frustrimet dhe
konfuzion dhe vetëm teknike vështirësitë janë për të pritur.
Sidomos me pset parë, ku ka vetëm aq shumë i ri, vetëm duke u
njohur me ls dhe CD dhe të gjitha këto komanda misterioze në një mjedis të ri.
Dhe kjo është e ndarë nga materiali faktik dhe programimin e vetë.
Pra e kuptojnë, gjithashtu, se ka sigurisht orarit të punës që ekzistojnë në
Struktura mbështetje.
Seksione të fillojnë këtë të dielë vjen.
Por më e rëndësishmja, në qoftë se ju jeni ndjeheni vetëm se kjo nuk është e
bota për ty, e kupton se ai me të vërtetë ka vetëm të marrë kohë.
Dhe po të mos ishte për këtë mundësi vjet më parë për mua që të marrë një klasë
kalojë / dështojnë, sinqerisht, unë kurrë nuk do të kishte vendosur edhe këmbë në klasë.
Dhe ju mund ta ndryshoni këtë deri në, të themi, të hënën e pestë e kursit.
Pra, nëse ju jeni në buzë tani, të kuptojë se në vend se kreu në disa të tjera
Ujërat krejt, e sigurisht që e konsiderojnë vetëm ndryshimin për të kaluar / dështojnë.
Përsëri, nuk është e vërtetë kjo kulturë këtu në Harvard që të marrë gjëra
kalojë / dështojnë që të gjithë me të vërtetë dëshiron të arrijë apo të overachieve.
Por sinqerisht, kjo është një mënyrë e mrekullueshme e duke u përpjekur diçka jashtë që mund të mos
jenë të njohura për ju.
Dhe ju do të përfundojë duke bërë në shumicën e rasteve mjaft të bukura, ndoshta
shumë për habinë tuaj.
Dhe në terma më konkrete, atë që unë mendoj se të kalojë / dështojnë në përgjithësi e bën,
sidomos si ju mund të keni përjetuar me pset 0, në qoftë se ju keni vënë
në 10 orë, 15 orë, 25 orë në disa pset - dhe ju jeni vetëm banging
kokën tuaj kundër murit,
dhe kjo është duke u super natën vonë,
por ju keni marrë pset si 90% të rrugës,
ju e dini që ju thjesht nuk mund ta kuptoj një gjë -
kalojë / dështojnë me të vërtetë merr off buzë e një klase si kjo, ku ju mund të lloj
për fat të mirë i thonë në rregull, unë e di se nuk është e përsosur.
Por kam punuar ass tim jashtë për këtë.
Unë jam goxha i kënaqur me të, ku ai përfundoi.
Dhe se do të përmbushë pritjet për kalojë / dështojnë.
Pra, do të mbani në mend.
>> Dakord.
Pra, ata prej jush që kanë luftuar për të përdorur në Universitetin e Harvardit Wi-Fi e di
se ka një SSID CS50, një Wi-Fi lidhje lundrues rreth që ju të
mund të ketë fat më të mirë për të.
Kjo është një ironi pak se fjalëkalimi për këtë - në qoftë se ju do të donte të provoni
lidh me këtë për shpejtësi më të mirë dhe le të na tregoni, nëse nuk është më mirë -
është një, dy, tre, katër, pesë, të gjithë rrugën deri në tetë, sepse tetë është
më e sigurt se pesë.
Pra, nëse keni nevojë për fjalëkalimin e Wi-Fi, të lidheni me valë CS50 këtu.
Një, dy, tre, katër, pesë, gjashtë, shtatë, tetë.
Dhe pas më CS50 Diskutoni në qoftë se ju ende keni çështje të përhershme të lidhjes,
dhe ne do të le pushtetin që të dinë për këtë hapësirë.
>> Dakord.
Pra, një ngacmues të shpejtë, sidomos për ato prej jush që janë djem ose vajza tifoz
të gjitha gjërat Apple.
Ajo që unë nxorën nga disa vite mbrapa ishte kjo fotografi ketu, ilock.c, vetëm për
lloj bëjë më konkret dhe më komplekse disa nga C më themelore
Programet ne kemi qenë të shkruar.
Kështu që unë u hap këtë skedar, ilock.c.
Është në dispozicion në faqen e leksioneve për sot.
Në anën e majtë, ju shihni një listë të gjatë të funksioneve.
Pra, shoku i cili ka shkruar këtë shkroi një shumë të funksioneve,
më shumë se vetëm kryesor.
Ai përdori një bandë e tërë e bibliotekave këtu.
Dhe në qoftë se ne fillojmë Scroll anë, atë që kjo është në të vërtetë është shumë e
Së pari, unë besoj, plas për iPhone origjinal.
Kur ju të kërkuar për të jailbreak iPhone origjinal, që do të thotë untether
atë nga AT & T dhe në fakt të instaluar softuer të veçantë mbi të dhe të bëjë gjëra
se Apple nuk dua që njerëzit të bëjnë -
edhe, dikush mori kohë të kuptoj se saktësisht se si ata mund të shfrytëzojnë
software metat, gabimet, bugs, në softuer Apple.
Dhe kështu lindi ilock.c.
Se në qoftë se ju përpiluar atë në një kompjuter dhe instaluar atë mbi një iPhone që
ishte i lidhur me kompjuterin tuaj nëpërmjet, të themi, një kabëll USB, kjo do t'ju japë
privilegje administrative ose rrënjë në iPhone tuaj dhe të ju lejojnë të bëjë shumë e shumë
çdo gjë që ju dëshironi.
>> Dhe kështu ka qenë kjo mace interesante dhe lojë miun mes Apple dhe
pjesa tjetër e botës, në veçanti, si ata, si shumë kompani, do të përpiqen për të kyçur
stuff e tyre poshtë në mënyrë që ju mund ta bëni vetëm me atë që ata duan.
Por në sajë të njerëzve si kjo dhe të kuptuarit e tyre të nivelit të ulët
detaje dhe, në këtë rast, programimit C dhe një shumë të njohura konstruktet
që ne kemi filluar të luajë me të, ju jeni në gjendje me të vërtetë të levave
hardware në një mënyrë që ju të shihni të arsyeshme dhe jo domosdoshmërisht një entitet të korporatave.
Kështu për shembull, unë nuk kam asnjë ide se çfarë e gjithë kjo është bërë.
Por GetVersion tingëllon mjaft i thjeshtë.
Dhe kjo duket si kjo është një funksion që ky person ka shkruajtur.
Të marrë disa lloj numër i plotë si një argument, nuk ka kthim asgjë, por
duket lak me një për lak këtu dhe nëse një kusht, nëse gjendja,
thyer, dhe disi të bëjë me numra version.
Nëse ne lëvizni poshtë -
edhe pse shumë nga këto fjalë kyçe do të jetë e re, dhe ka një
tërësi shumë të funksioneve në këtu ne kurrë nuk kam parë dhe nuk mund të shihni ndonjëherë mbi
kurs i semestrit -
në fund të ditës, ajo ndjek të njëjtat rregulla dhe logjikën që ne kemi qenë
duke luajtur me deri tani.
Pra, kjo është shumë e vjetër për të goditur 3s tuaj iPhone 4S ose ose së shpejti 5s, këto ditë,
por e di se kjo është e gjitha shumë që rrjedhin nga kjo botë që ne kemi
fetar në.
>> Pra, le të marrin një vështrim në një shembull pak më të thjeshtë.
Ky i fundit, vetëm për të marrë ngrohur me disa sintaksë dhe gjithashtu disa të dhëna të tjera
lloji që ne kemi biseduar rreth, por nuk e kam parë të vërtetë në C. Pra, kjo është një
file i quajtur positive1.c.
Dhe sipas komenteve në krye, kjo vetëm kërkon që një përdorues të sigurojë një
numër pozitiv.
Pra, kjo është një shembull i një lak për ta bërë, ndërsa, e cila është e bukur për user-interaktive
Programet ku ju duhet të tregoni përdorues për të bërë diçka.
Dhe në qoftë se ata nuk bashkëpunojnë, ju bërtas me ta ose refuzojë kontributin e tyre.
Rasti në pikën, unë jam duke shkuar për të bërë linjat e 19 me anë të 24 aq kohë sa përdoruesi ka
nuk është dhënë mua një numër pozitiv.
Tani ky detaj këtu on line 18, pse nuk kam deklaruar n mbi këtë tërësi
konstrukt looping në krahasim me të drejtë tjetër të linjës 22, ku unë
të vërtetë kujdeset për të marrë n?
Po?
[E padëgjueshme]
>> DAVID J. Malan: Yeah, kështu që kjo çështje të fushës.
Dhe në afat laik, çfarë do qëllimi i referohen?
Po?
[E padëgjueshme]
DAVID J. Malan: A mund të flisni pak louder?
Kryetari 1: Ku ju mund të hyni në një variabël të veçantë.
DAVID J. Malan: Perfect.
Ku ju mund të hyni në një variabël të veçantë.
Dhe në përgjithësi, sundimi i gishtit deri tani ka qenë se qëllimi i disa
variabël është përcaktuar nga formatimin e teksteve kaçurrel më të fundit që e keni parë.
Dhe kështu në këtë rast, në qoftë se kam bërë gabim të deklarimit n on line 22,
se linja do të punojë.
Unë do të merrni një int, dhe unë do të vënë atë në atë n ndryshueshme në linjë 22.
Por cila linjë e kodit tani do të ketë asnjë ide se çfarë unë jam duke folur për?
Pra 25, dhe kjo rezulton 24, si edhe, për shkak se në këtë rast, ai bie jashtë
e braces kaçurrel.
Pra, vetëm pak një njeri i bezdisur, por zgjidhen shumë lehtë nga thjesht deklaruar
jashtë ndryshueshme e funksionit vetë.
>> Tani ne do të shohim më vonë sot, ju mund të shkoni një hap më tej.
Dhe ju mund të merrni edhe pak dembel -
dhe kjo nuk është për të rekomanduar, në të përgjithshme -
por ju mund të merrni edhe dembel dhe të vënë një ndryshore globale, kështu që të flasin, jo
brenda një funksion, jo brenda një lak, por në dosjen e vetë, jashtë
nga të gjitha funksionet që ju keni shkruar, siç kam bërë këtu në linjë 15.
Por kjo është në përgjithësi frowned.
Por të realizuar këtë është një zgjidhje ndonjëherë për probleme të tjera, si ne do të
përfundimisht të parë.
Kështu që tani për tani, ne do të lënë atë si kjo.
Por le të shohim nëse ne mund të ndryshonin këtë vetëm për të filluar shprehur veten a
pak ndryshe.
>> Pra ky program, vetëm të jetë i qartë, është positive1.
Më lejoni të shkojnë përpara këtu dhe në dritaren time terminalit të bëjë positive1, Enter.
Harton, në rregull.
Unë jam duke shkuar për të drejtuar positive1, hit Enter.
Unë të kërkojë që ju të jepni një numër i plotë pozitiv.
Unë do të them -1.
Që nuk punojnë.
0, 99, që duket për të punuar.
Ndoshta jo më testi rigoroz.
Por të paktën kjo është një kontroll mendje e shëndoshë e bukur se ne jemi në rrugën e duhur.
Kështu që tani më lejoni të shkoj përpara dhe të hapur versionin e dytë të kësaj.
Dhe çfarë është e ndryshme tashmë?
Ajo zbaton të njëjtën gjë.
Por çfarë është hedhur jashtë si kohë të ndryshme në mënyrë të qartë këtë?
Yeah, kështu që kjo bool në të gjelbër.
Gedit ka theksuar në këtë keyword gjelbër njohur si bool,
cila është një lloj dhënave.
Ajo nuk vijnë të ndërtuar në të gjitha versionet e C. Ju duhet të përfshijë një
Biblioteka specifike.
Në rastin tonë, unë përfshirë bibliotekën CS50 në mënyrë që ne
të kenë qasje në bool.
Por në linjë 18, ne duket të ketë një vlerë Boolean këtu quhet mirënjohës.
Kështu që unë mund të ketë e quajti këtë gjë.
Por unë e quajti atë mirënjohës vetëm për të përcjellë disa lloj kuptim semantik.
Pra, fillimisht on line 18, unë nuk jam mirënjohës, sepse me sa duket
Vlera Boolean mirënjohës është initialized të rreme në linjë 18.
Dhe pastaj ajo duket ajo që unë kam bërë këtu në linjat e 21 me anë të 23 është Unë kam vetëm
lloj i rishkruar logjikën time.
Kështu që nuk ka funksionalisht të ndryshme.
Por në linjë 22 tani, unë kontrolloni nëse int përdoruesi ka dhënë është më i madh se
0, atëherë unë thjesht të ndryshojë vlerën e mirënjohës për të vërteta.
Dhe pse ta bëj këtë?
Sepse në linjë 25, me sa duket, unë jam duke shkuar për të kontrolluar një kusht.
Bëni këtë lak, ndërsa mirënjohës është e rreme.
>> Kështu kam propozojë kjo si një alternativë ndaj version njëra sepse ajo është të paktën një
pak më shumë intuitive, ndoshta.
Kjo është pak më shumë bazuar në gjuhën angleze.
Pra, nuk e mëposhtme, ndërsa ju nuk jeni mirënjohës ose mirënjohës, ndërsa është e rreme.
Dhe këtë herë, gjithashtu, unë me sa duket nuk e kujdesit për të kujtuar se çfarë përdoruesit shtypur
sepse në njoftim nuk ka n ndryshueshme.
Pra në fakt, unë -
një gënjeshtër e vogël të bardhë atje.
Funksionalisht, programi është pak më ndryshe sapo të marrë në fund të
kjo sepse unë nuk jam duke kujtuar se çfarë është n.
Por unë të kërkuar për të demonstruar edhe këtu se edhe pse ne kemi parë GetInt dhe
GetString duke u përdorur në anën e djathtë të një shenjë të barabartë deri tani në mënyrë që
kujtojmë vlerën, teknikisht, që nuk është e domosdoshme.
Nëse për çfarëdo arsye ju thjesht nuk bëni kujdes për të ruajtur vlerën, ju vetëm doni
të kontrolloni vlerën, njoftim se ne thjesht mund të shkruaj këtë si GetInt hapur
prindërve, prindërve afër.
Se funksioni do të kthehen një vlerë, si ne kemi qenë të thënë.
Kjo do të ju jap përsëri një int.
Dhe kështu që nëse ju mendoni se mendërisht për të ndodhur kjo, kur unë lloji në 99, GetInt
kthen numrin 99.
Dhe kështu konceptualisht, është sikur kodi im ishte në fakt këtë.
99 Pra, nëse është me të vërtetë e madhe se 0, atëhere mirënjohës bëhet e vërtetë.
Pastaj Shkarko 25 realizon ooh, ne jemi duke bërë, sepse unë jam tani mirënjohës.
Dhe në linjë 26, ne thjesht themi, falenderon për numër i plotë pozitiv, çfarëdo qoftë ajo
ndodhur në jetë.
>> Tani le të bëjmë sheqer lehtë sintaktik këtu, në mënyrë që të flasin.
Le të shohim nëse ne mund të pastër deri këtë linjë 25 me këtë grindje të tretë dhe përfundimtare
në positive3.
Pra njoftim i vetmi ndryshim tani është ajo linjë e kodit?
Yeah, kështu që 25.
Dhe ne nuk e kemi parë këtë mashtrim të vërtetë vetëm ende.
Por ne nuk shoh pikë thirrje të hënën, i cili përcakton çfarë?
Kështu jo, ose mohim.
Pra, të marrë një vlerë Boolean dhe rrokullisje vlerën e saj.
Vërtetë bëhet rreme.
False bëhet e vërtetë.
Pra, kjo, unë do të propozojë, është edhe një pak më shumë intuitiv për një mënyrë për të
shkruar kodin sepse unë ende nisja mirënjohës për të rreme.
Unë ende nuk e mëposhtme.
I vendosur për të vërtetë mirënjohës kur të vjen koha.
Por tani ju mund të vërtetë vetëm përkthejnë këtë kod lënë me gojë në të djathtë,
ndërsa nuk mirënjohës.
Sepse zhurmë, ose pikë thirrje, tregon nocionin e jo kështu ndërsa
jo mirënjohës.
>> Pra, përsëri, ne nuk kemi futur ndonjë koncepteve të reja në vetvete.
Ne kemi biseduar për Booleans mbrapa, kur ne kemi luajtur me Scratch.
Por tani ne mund të kuptojnë vetëm të filloni të shkruani kodin tonë në
mënyra të ndryshme.
Pra, veçanërisht në pset1, nëse ju jeni lloj i luftuar për të kuptoj rrugën
shkruani disa program, shanset janë që ju jeni me fat sepse nuk do të ketë ndonjë
Numri i zgjidhjeve që ju mund të ndodhin mbi të.
Për shembull, kjo është vetëm tre për edhe më të thjeshtë të programeve.
Dakord.
Dhe tani kujtojnë të hënën, ne e kemi lënë në këtë shënim me vlerat e kthimit.
Pra, për herë të parë, ne shkroi një program që nuk ka vetëm kryesor,
ajo gjithashtu ka vet funksionin e saj porosi që kam shkruar këtu.
Pra, në përputhje përmes 31 34, unë kam zbatuar një funksion kubike.
Kjo nuk është komplekse.
Është vetëm një herë një herë, në këtë rast.
Por ajo është rëndësishme rreth saj është se jam marrë input në formën e një dhe
Po kthyer dalje në formën e një herë një herë a.
>> Kështu që tani unë kam mundësinë, ashtu si kam përdorur për të me printf vetëm, për të thirrur
ky funksion duke e quajtur funksion kubike.
Dhe funksioni kubike merr disa të dhëna.
Dhe funksioni kubike kthen disa dalje.
Dhe kështu nga ana tjetër, printf vetëm e bëri diçka.
Ajo nuk u kthye asgjë që kujdesej për ne - edhe pse, si një
mënjanë, ajo nuk kthehet një vlerë.
Ju vetëm në përgjithësi të injorojë atë.
Printf vetëm e bëri diçka.
Ajo kishte një efekt anësor i shtypjes në ekran.
Nga ana tjetër këtu, ne kemi funksionin kubike, të cilat
në fakt kthehet diçka.
>> Pra, kjo është në përgjithësi -
për ata të njohur me këtë, kjo është një ide mjaft të thjeshtë.
Por për ata më pak të njohur me këtë idenë e kalimit në inpute dhe për të gjetur
Rezultatet prapa, le të përpiqemi vetëm e thjeshtë diçka super.
Është dikush të rehatshme vijnë në skenë shkurtimisht?
Ju duhet të jenë të kënaqur me një aparat fotografik mbi ju, po ashtu.
Po.
Mirë, çfarë është emri juaj?
KEN: Ken.
DAVID J. Malan: Ken.
Të gjithë të drejtë, Ken.
Come on up.
Pra, Ken do të jetë një funksion i terezi këtu.
Dhe le të shkojnë përpara dhe të bëjë këtë.
Le të marrë një dashuroj pak.
Gëzohem që u njohëm.
Mirë se vini në fazën e qendrës.
Dakord.
Le goditi këtë buton këtu.
Dakord.
Kështu që këtu ju keni një dërrasë e zezë moderne.
Dhe atë që unë jam, është funksioni kryesor, për shembull.
Dhe unë nuk kanë një iPad në dorë.
Unë vërtetë nuk e mbani mend se si për të - mirë, në fakt, nuk mund të them se.
Unë vërtetë nuk kanë dorëshkrimit të mirë.
Dhe kështu pra, unë dua që ju të shtypura në ekran diçka për mua.
>> Kështu që unë jam duke Programi kryesor.
Dhe unë jam i do të ketë të ju them këtë duke e shkruar atë në zeroja tim pule dhe
pastaj kalon ju një kontribut.
Pra, si pa kuptim pse ky ushtrim është nocioni i funksioneve dhe e quan një
funksion dhe duke kthyer një funksion të vërtetë boils poshtë për këtë.
Unë jam kryesore.
Unë kam shkruar vetëm printf ("diçka") në ekran.
Unë jam running këtë program.
Dhe sa më shpejt printf merr quajtur, ajo merr një argument - ose një parametër,
ndonjëherë -
mes kuotat e dyfishtë.
Këtu është se argumenti.
Unë jam duke kaluar atë për Ken.
Tani ai është një kuti e zezë me shkrim disa numrin e viteve më parë se sa duket
vetëm e di se si për të shtypur gjëra në ekran.
>> Pra, ekzekutuar.
Kjo nuk është e keqe.
Pra, shumë i mirë.
Deri tani Ken është bërë ekzekutimin.
A ai duhet të japë asgjë prapa?
Pra, jo se ne kemi parë deri tani.
Përsëri, printf ka të vërtetë të kthejë një numër.
Por ne jemi duke shkuar për të injorojë se për tani, sepse ne kurrë nuk e kam përdorur atë.
Pra, kjo është ajo për Ken.
Dhe kështu që tani kryesore kthehet për të ekzekutuar -
kryesor merr kontrollin e programit përsëri, sepse këtë linjë të kodit,
printf, është bërë ekzekutimin.
Dhe ne do të shkojmë në lidhje me rrugën tonë ekzekuton çfarëdo linjat e tjera janë atje.
>> Dakord.
Pra, tani le të provojmë një shembull paksa të ndryshme.
Dhe kjo kohë këtu, le të parë të qartë në ekran këtu.
Dhe këtë herë, ne do të bëjmë funksionin cubing.
Por këtë herë, unë pres një vlerë të prodhimit.
Pra, le të shkojnë përpara dhe të bëjë këtë.
Deri tani unë kam një linjë të kodit që thotë se x = kubike (x).
Pra në fakt let's -
linjë e kodit, risjell, duket si ky.
x = kubike (x).
Pra, si është kjo do të punojë?
Pra, le të shkojnë përpara dhe do t'ju japë një ekran të bardhë përsëri.
Dhe unë jam duke shkuar për të shkruar tani poshtë vlerën e x, e cila në këtë moment në
Ora ndodh të jetë, le të themi, 2, për ta mbajtur atë të thjeshtë.
Kështu që unë kam shkruar në një copë letër vlera e 2,
cila është vlera e x im.
Unë dore atë për Ken.
KEN: Dhe unë vetëm shkruaj përgjigje?
DAVID J. Malan: Po, le të vetëm të shkruar përgjigjen.
Rregull.
Dhe tani ai ka për të kthyer mua diçka.
Pra -
përsosur.
Bukur Segue.
>> Kështu që tani ai dorëzon mua mbrapa vlerën e 8, në këtë rast.
Dhe çfarë të bëj me të?
E pra, në fakt, le të shohim.
Merrni këtë të drejtë.
Çfarë jam unë do të bëj me të?
Tani unë jam duke shkuar për të marrë këtë vlerë dhe në fakt ruajtur atë në ato
bit njëjta në kujtesë.
Por njoftim, unë jam natyrë e luftuar këtu.
Unë jam pak i hutuar, sepse ku unë në fakt shkruani vlerën e x?
Sepse ajo që unë kam bërë vetëm fizikisht është dora Ken një copë letër
që kishte vlerën e 2, e cila ishte x.
Dhe vërtet, kjo është pikërisht ajo që ndodh.
Kështu del se kur ju telefononi një funksion, dhe ju të kalojë në një argument
si "Hello World" ose ju të kalojë në një argument si 2, në përgjithësi, ju jeni
kalon në një kopje të atij argumentit.
Dhe kështu ashtu siç kam shkruar numrin 2 këtu dhe dorëzuar atë në Ken, që duhet të
do të thotë se unë ende kanë një kopje të 2 vlerës diku.
Sepse në të vërtetë, tani që unë kam marrë përsëri vlerën 8, kam nevojë për të shkuar mbrapa në
RAM dhe në fakt shkruani 8 ku unë dikur kishte numrin 2.
>> Kështu shikimi i mbani mend këtë nocion të kalimit në fjalë
një kopje të vlerës.
Ken bën gjë tij, duart më mbrapa diçka - në këtë rast,
si një vlerë 8.
Dhe atëherë unë duhet të bëjë diçka me këtë vlerë në qoftë se unë
doni të mbani atë rreth.
Pra, e gjithë kjo do të jetë mbi të gjitha shumë i njohur para se të gjatë.
Thank you so much për këtë demo këtu, Ken.
Dakord.
Bërë shumë mirë.
Pra, le të shohim se si në fund të fundit ka të bëjë me disa prej funksionit
bërë thirrje që ne kemi qenë duke bërë këtu.
Pra më lejoni të shkoj përpara dhe të na sjellë përsëri në shembullin cubing këtu.
Dhe vini re se në qoftë se ne duam që në fakt të fillojë të marrë këtë më tej, ne jemi duke shkuar
të duhet të jenë të ndërgjegjshëm për faktin se x numri që është duke u kaluar në
këtu është ndryshe nga ajo që është në fakt duke u kaluar në funksion.
Pra, përsëri, kjo kaloi nga një kopje do të bëhet mjaft
i përshtatshëm në vetëm një moment.
>> Pra, le të marrin një vështrim në diçka që nuk ka fare të drejtë të punojnë ende.
Unë jam duke shkuar për të shkuar përpara dhe për të hapur një shembull të tretë buggy, e cila
është me të meta nga natyra.
Dhe ajo që quhet buggy3, dhe zbaton një funksion shkëmbejnë.
Pra, këtu kemi një funksion kryesor që ka x dhe y initialized arbitrare të
1 dhe 2, përkatësisht.
Ne mund të përdorim GetInt, por ne vetëm duhet një ushtrim të thjeshtë.
Pra, është e vështirë-koduar si 1 dhe 2.
Në linjat 21 dhe 22, ne duket të shtypura nga X dhe Y, një për çdo rresht.
Pastaj, on line 23, unë jam pretendojnë shkëmbejnë këto vlera, dot, dot, dot.
I duket të thërrasë një funksion në përputhje quajtur 24 swap
që merr dy argumente.
Është krejtësisht legit për funksionet për të marrë dy argumente.
Ne kemi parë printf bëjmë atë tashmë.
Pra, me sa duket swap merr x dhe y.
Dhe si emrin e saj sugjeron se, unë do të shpresoj se kjo do të
shkëmbim këto dy vlera.
Pra, atëherë unë pretendojnë on line 25, swapped.
Dhe unë ribotim x dhe y nën supozimin se
ata kanë qenë me të vërtetë swapped.
Por në qoftë se unë në fakt të drejtuar këtë program -
më lejoni të hapur një dritare terminali.
Më lejoni të bëjë buggy3.
Si emri sugjeron, kjo nuk do të përfundojë mirë.
Sepse kur kam hit Enter, vini re se x është 1.
y është 2.
Dhe ende në fund të programit, ata janë ende, në fakt, të njëjtën gjë.
>> Pra, bazuar në demonstratën vetëm tani me Ken, çfarë po ndodh në të vërtetë?
E pra, le të zhytem në këtë funksion swap.
Kjo është super të shkurtër.
Është vetëm disa rreshta të kodit të gjatë.
Por çfarë është problemi themelor i bazuar në histori të thjeshtë i tha
deri këtu me Ken?
Pse është swap thyer?
[E padëgjueshme]
Saktësisht.
Pra, ne jemi ruajtjen në një kopje, jo variable vetë.
Me fjalë të tjera, duket swap merr dy argumente, një Int.
Dhe ajo që quhet në mënyrë arbitrare a dhe b.
Dhe deri këtu, unë kam kaluar në x dhe y, të cilat janë respektivisht 1 dhe 2.
Por unë nuk jam vërtetë kalon në x.
Unë nuk jam vërtetë kalon në y.
Unë jam duke kaluar një kopje e X dhe një kopje të y.
Është si pothuajse sikur ju kopjohet dhe të ngjit në shkëmbim të vlerave që
ju dëshironi që ajo të vërtetë të manipuluar.
Pra, në qoftë se është rasti, kur unë, programi, të fillojë ekzekutimin e
Shkarko 35, pastaj 36 -
kur të shkoj në linjë 37, në këtë pikë, në histori, ajo që është vlera e një?
Në këtë moment në histori, line 37, çfarë është vlera e një në këtë pikë?
Kështu që ajo duhet të jetë vetëm 1.
Drejtë?
Sepse x u miratua në si argument i parë.
Dhe kjo funksion vetëm në mënyrë arbitrare është duke bërë thirrje argumentin e tij të parë, një.
Ngjashëm është y, argumenti i dytë.
Dhe kjo është vetëm në mënyrë arbitrare duke e quajtur b dytë argument.
>> Tani kjo dikotomi është në të vërtetë mjaft të shpjegohet thjesht.
Mendoni se ajo.
Asnjë prej nesh kanë takuar personin i cili shkroi printf.
Pra, me siguri, ai ose ajo nuk ka asnjë ide se çfarë variablat tona 30 vjet më vonë po shkojnë
për të quajtur.
Pra, nuk duhet të jetë një dallim në mes të asaj që ju e quani variablave në
Funksionet jeni të shkruar dhe atë që ju e quani variablave në funksionet e ju jeni
telefonuar ose duke përdorur.
Pra, me fjalë të tjera, unë kam shkruar variablave mia si x dhe y.
Por në qoftë se dikush tjetër kishte shkruar funksionin swap, ai ose ajo sigurisht
nuk do të dinë se çfarë variablat e mi do të quhet.
Pra, të kuptojnë se kjo është arsyeja pse ju keni këtë dualitet e emrave.
Teknikisht, unë mund ta bëjë këtë nga koincidenca.
Por ata ende do të kalojë në aq kopje.
Ajo do të jetë vetëm një rastësi e pastër estetikisht nëse atij personi i cili shkroi
swap kishte përdorur emrat e njëjta.
>> Dakord.
Pra, në këtë pikë në histori, line 37, një është 1.
b është 2.
Dhe tani unë të vazhdojë të bie në ujdi tyre.
Pra, para së gjithash, më lejoni të vërtetë e bëjnë këtë shumë më thjesht.
Unë nuk e di se çfarë ato tre rreshta të kodit janë bërë.
Më lejoni vetëm të bëjë këtë.
b merr.
a merr b.
Bërë.
Pse është kjo thyera, logjikisht?
Kjo është lloj i gjë e intuitive, e drejtë?
Pra, a bëhet b.
Dhe b të bëhet një.
Por problemi është se sa më shpejt të linjës 37 ekzekuton, çfarë është
vlera e një dhe b?
Njëjtë, 1.
Sepse ju keni clobbered, në mënyrë që të flasin, ju keni ndryshuar b të barabartë a.
Pra, një herë Shkarko 37 është ekzekutuar, që është e madhe.
Ju tani keni dy kopje të numrit brenda 1 të këtij funksioni.
Pra, atëherë kur ju thoni në linjë 38, një merr b, mirë, ju jeni lloj i dehur.
Sepse ju jeni vetëm caktimin 1-1.
Ju keni lloj i humbur vlerën që kujdesej për.
>> Pra në versionin origjinal të kësaj, njoftim se çfarë kam bërë.
Unë në vend që kishte një linjë të tretë të kodit që dukej si kjo.
Unë deklaroj një ndryshore të përkohshme - tmp është një emër shumë i zakonshëm
për një ndryshore të përkohshme.
Kjo është një int, sepse ai ka për të përputhen me atë që unë dua të bëjë një kopje të.
Kam ruajtur një kopje të një brendësi të tmp. Pra, një herë Shkarko 37 ka ekzekutuar,
vlera e një është -
mendje e shëndoshë të shpejtë shikoni -
1.
Vlera e B është 2.
Dhe vlera e tmp është gjithashtu 1.
Deri tani unë kryej linjë 38.
Pra, një herë Shkarko 38 ekzekuton, një merr mbi vlerën e b.
Dhe b ishte 2.
Kështu një është tani 2.
Kështu në këtë pikë në tregimit, një është 2, b është 2,
dhe tmp është 1.
Kështu që tani logjikisht, ne mund vetëm vlera tmp pllum-së në b.
Dhe ne jemi duke bërë.
>> Pra, ne kemi zgjidhur atë problem.
Për fat të keq, kur kam drejtuar këtë program në këtë formë, ai nuk ka të vërtetë të bie në ujdi
ndonjë vlerave.
Por të jetë i qartë, pse?
I fiksuar problemin logjik nga vetëm një moment më parë.
Por përsëri, në qoftë se unë të drejtuar këtë program, x dhe y të mbeten të pandryshuara deri në fund të
Ekzekutimi i programit.
[E padëgjueshme]
DAVID J. Malan: Pra, ne nuk kemi kthyer asgjë.
Pra, kjo është e vërtetë.
, Por ajo rezulton se ka pak e një problemi këtu, sepse deri më tani
vetmja gjë që ne kemi qenë në gjendje për t'u kthyer është një gjë.
Dhe ky është një kufizim i C. Ju vetëm mund të kthehen një vlerë të vërtetë,
në të cilin rast, unë jam natyrë e mbërthyer këtu
sepse unë mund të kthehen vlerën e re e X ose unë mund të kthehen
Vlera e re e y.
Por unë dua të dy mbrapa.
Pra, nuk është kthyer zgjidhje e thjeshtë këtu.
Por problemi në thelb është arsyeja pse?
Çfarë kemi swapped të vërtetë?
a dhe b.
Por a dhe b janë kopje e X dhe Y, që do të thotë që ne vetëm e bëri të gjithë këtë
punojnë - kemi shpenzuar ashtu si tre minuta duke folur për të swap-it
funksioni dhe të gjitha tre prej këtyre variablave.
Dhe kjo është e madhe, të përkryer i saktë në izolim.
Por a dhe fushëveprimi B është vetëm në këto rreshta këtu.
Pra, vetëm si një për lak, në qoftë se ju të deklarojë një numër të plotë i brenda për
loop - Në mënyrë të ngjashme, në qoftë se ju jeni brenda shpalljen a dhe b të një funksion që
ju keni shkruar, ata janë vetëm brenda vlefshme të atij funksioni.
Që do të thotë sa më shpejt që swap është bërë ekzekutimin dhe ne të shkojnë nga 24 deri linjë
Shkarko 25, x dhe y nuk kanë ndryshuar fare.
Ju vetëm humbur një të tërë shumë kohë shkëmbejnë kopje të variablave.
>> Pra, del se zgjidhja për këtë është në fakt jo të dukshme.
Kjo nuk është mjaft e mjaftueshme për të kthyer vlerat sepse ne mund të
kthehen vetëm një vlerë.
Dhe unë me të vërtetë dua të bie në ujdi dy x dhe y në të njëjtën kohë.
Pra, ne jemi duke shkuar për të ardhur përsëri në këtë.
Por tani për tani, e kuptojnë se çështja krejtësisht derivon nga fakti
se a dhe b janë kopje.
Dhe ata janë në fushëveprimin e tyre.
E pra, le të përpiqemi për të zgjidhur këtë në një farë mënyre.
Më lejoni të vërtetë lëviz prapa dhe e hapur deri këtu, le të themi, një variant i katërt
të kësaj, buggy4.
Dhe çfarë lidhje me këtë?
Ky është një problem i ngjashëm, por më e thjeshtë për të parë para se të marrë një goditje me thikë në
zgjidhjen e saj.
Ky program quhet rritje.
Dhe kjo duket initializes një numër të plotë x me 1 në linjë 18.
Unë pastaj pretendojnë x është 1.
Unë pastaj pretendojnë bën rritjen, dot, dot, dot.
Unë pastaj e quajnë rritje të.
Por pastaj në linjat 22 dhe 23, unë pretendojnë kjo është incremented.
Unë pretendojnë x tani është çfarëdo qoftë ajo është, me sa duket 2.
>> Por ky program është buggy.
Çfarë është problemi?
Po?
[E padëgjueshme]
DAVID J. Malan: Pikërisht.
Pra, x është deklaruar qartë on line 18.
Kjo është brenda formatimin e teksteve kaçurrel KRYESORE së.
Pra, përgjigja e thjeshtë këtu është se, mirë, x ekziston këtu.
Ajo nuk ekziston në linjë 32.
Pra, ky program të vërtetë nuk do të përpilojnë.
Përpilues, kur unë të përpiqet hartimin këtë kod, do të bërtas në mua
për disa identifikues padeklaruar ose diçka për këtë qëllim.
Në fakt, le të përpiqemi.
Kjo është bërë buggy4.
Nuk është.
Përdorimi i x identifikues padeklaruar në linjë 32.
Dhe në fakt, le të jenë më të qartë këtu sot në mënyrë që kjo është e dobishme në
orarit të punës dhe në shtëpi.
Vini re se kjo është pak shkruar cryptically.
Por fakti se ka tingëllimë yelled në ne, duke thënë:
buggy4.c: 32:5, është në të vërtetë të dobishme.
Kjo do të thotë se gabimi është në linjë 32 në pozicionin e karakterit pesë.
Pra, një, dy, tre, katër, pesë.
Kjo është, në fakt, ku është problemi.
Dhe gjithashtu për të mbajtur në mend në orarit të punës dhe në shtëpi, unë jam me fat këtu.
Unë kam një gabim.
Ajo do të jetë relativisht e lehtë për të rregulluar.
Por në qoftë se ju merrni një ekran të plotë të tërë mesazhet e gabimit e madhe, përsëri,
të kuptojë se ai më i fundit mund të jetë vetëm tregues i
ato larti.
Pra, gjithmonë ndjekje poshtë mete tuaj nga poshtë lartë.
Sepse nuk mund të jetë vetëm një daisy-zinxhir efekt që është sugjeruar që ju
kanë probleme mënyrë më shumë se ju në të vërtetë të bëjë.
>> Pra, si mund ta rregullojmë këtë, ne në qoftë se qëllimi im është që rritja x?
Çfarë është ajo?
Rregull.
Pra, ne mund të bëjë x globale.
Le të marrin shkurtore që kam paralajmëruar për më herët.
Por dreq, ne vetëm duhet një doze.
Pra, le të them vetëm int x deri këtu.
Kjo e bën x globale.
Deri tani kryesor ka qasje në të.
Rritja dhe ka qasje në të.
Dhe kështu më lejoni të shkoj përpara dhe të përpilojnë këtë tani.
Bëni buggy4, Enter.
Duket për të hartuar tani.
Le të drejtuar buggy4, dhe kjo duket të vërtetë punojnë.
Tani kjo është një nga këto gjëra -
bëj si them unë, jo si bëj unë, siç e kam bërë vetëm këtu.
Sepse në përgjithësi, programet tona janë duke shkuar për të marrë shumë më interesante dhe
shumë më tepër se kjo.
Dhe nëse zgjidhja juaj për problemet e jetës është vetëm ah, të vënë të gjitha
Variablat në krye të dosjes suaj, shumë shpejt të bëjë Programet marrë
horrifically e vështirë për të menaxhuar.
Ajo merr vështirë për të menduar deri emra të rinj ndryshueshme.
Ajo merr vështirë për të kuptuar se çfarë është duke bërë çfarë ndryshueshme.
>> Dhe kështu në përgjithësi, kjo nuk është një zgjidhje e mirë.
Pra, le ta bëjmë këtë më mirë.
Ne nuk duam që të përdorni një ndryshore globale këtu.
Unë dua të ardhura x.
Kështu që unë mund të duket -
në fund të ditës, kjo është lloj i një histori pa kuptim, sepse ne vetëm të bëjë këtë.
Por në qoftë se unë nuk e di për atë operatori, ose unë nuk u lejohet të
ndryshojë atë në vetvete kryesore, si tjetër mund ta zbatojë Ken gjatë këtu, kjo
koha nuk të kubike, por të ardhura?
Si mund ta ndryshoj këtë gjë këtu?
Po.
[E padëgjueshme]
DAVID J. Malan: Mirë, mirë.
Kështu që pse nuk e kam të kalojë në X?
Dhe pastaj në vend se ta kthejë atë, pse nuk kam vetëm të bëjë kthimin x + 1?
Tani, gjërat një çift shumë duhet të ndryshojë këtu.
Unë jam në rrugën e duhur.
Çfarë tjetër nuk kam nevojë të shkulje?
Dikush tjetër.
Po?
[E padëgjueshme]
DAVID J. Malan: Unë kam nevojë për të ndryshuar llojin e kthimit të ardhura
për shkak se ajo nuk është e pavlefshme.
Void do të thotë asgjë duke u kthyer.
Por në mënyrë të qartë, tani ajo është.
Pra, kjo duhet të ndryshojë për të int të jenë në përputhje me çfarëdo
Unë në fakt jam kthyer.
>> Tani diçka tjetër është ende buggy këtu.
Po?
[E padëgjueshme]
DAVID J. Malan: Kështu që unë duhet të ardhura x?
[E padëgjueshme]
DAVID J. Malan: Ah, kështu që kam nevojë për të kaluar x.
Kështu që kam nevojë për të bërë këtë këtu.
Pra, prototip, unë kam për të ndryshuar këtë deri këtu.
Pra, kjo duhet të bëhet një int.
Kjo ka për të bërë -
hmm.
Unë në fakt kam një bug këtu poshtë.
Le të zgjidhur këtë një të parë.
Çfarë duhet të vërtetë të jetë kjo?
Pra, ai e mori të jetë një diçka int.
Kjo mund të jetë x.
Por sinqerisht, në qoftë se ju filloni duke bërë thirrje të gjitha variablave x tuaj, ajo do të marrë
më pak dhe më pak qartë cila është cila.
Pra, le të vetëm në mënyrë arbitrare të zgjidhni një konventë të ndryshme emërtimin për tim
funksionet ndihmëse, funksionet unë jam shkrim.
Ne do të thërrasë atë një.
Ose ne mund ta quajmë atë - le të thërrasë atë even_number të jetë edhe më i qartë.
Pra, atëherë unë duhet të kthehen çfarëdo numri është plus 1.
Dhe tani unë kam për të ndryshuar një gjë tjetër deri këtu dhe një
Gjë tjetër deri këtu.
Çfarë duhet të ndryshojë në përputhje parë 21?
Unë duhet të caktojë atë në x.
Kështu që unë nuk mund të telefononi x ardhura.
Unë kam nevojë për të kujtuar përgjigjen duke ndryshuar vlerën e x më
anën e majtë.
Dhe, edhe pse x është tani në të majtë dhe të djathtë, që është krejtësisht gjobë për shkak të
anën e djathtë merr ekzekutuar parë pastaj merr plopped në të majtë
Gjëja dorë, x në këtë rast.
Dhe pastaj në fund, kjo është një fix lehtë tani.
Kjo duhet vetëm të përputhen me atë që është më poshtë.
Numri i int.
>> Dakord.
Kështu që një bandë e tërë e ndryshimeve për një funksion të vërtetë budallaqe.
Por përfaqësuesi i gjërave që ne do të duan të bëjnë gjithnjë.
Pra, ti buggy4.
Unë kam dehur diku.
Oh Perëndia im.
Pesë gabime në, si, një gjashtë-line program.
Pra, çfarë është e gabuar on line 18, karakteri 5?
Dakord.
Kështu që unë duhet të deklaroj këtë int.
Dakord.
Pra, le të shohim, një bandë e tërë e gabimeve të tjera.
Oh my god.
19, 18, 21.
Por përsëri, le të vetëm të pastruar në ekran -
L kontrolli këtu - dhe ri-drejtuar tingëllimë.
Pra, pesë probleme në fakt është vetëm se një.
Pra, tani le të kandidojë buggy4, Enter.
Uf.
x është incremented saktë.
>> Dakord.
Ndonjë pyetje si të ardhura numrat?
Po?
Gjuha 2: Pse është ajo që ju mund vetëm të ndryshojë x me numrin në ndryshore
emrin dhe ajo do të dini se çfarë ju thotë?
DAVID J. Malan: Pyetje e mirë.
Si është e mundur që unë mund vetëm të ndryshojë x me numrin dhe programi do të dinë
menjëherë?
Pra, përsëri, të mendojnë për atë si ky abstraksion.
Pra, nëse unë jam kryesor dhe Ken është në rritje, sinqerisht, unë nuk e kujdesit
çfarë Ken quan iPad e tij.
Unë nuk bëj kujdes atë që ai e quan çdo gjë që ka të bëjë me zbatimin e tij
të këtij funksionalitetit.
Pra, ky është një detaj zbatimi që unë, kryesore, nuk
duhet të kujdeset për.
Dhe kështu thjesht duke ndryshuar atë vazhdimisht brenda funksionit, numri këtu
dhe numri këtu, është e gjitha ajo merr kaq kohë që unë recompile.
Kjo është lloj i si në qoftë se ju mendoni rreth - shumë prej nesh, ata prej jush me shofer e
Licencat që kam drejtuar, ose në qoftë se ju keni shtyrë edhe në një makinë -
shumica prej nesh kanë asnjë ide se si punon një makinë nën kapuç.
Dhe me të vërtetë, në qoftë se keni hapur deri individualitet, shumica prej nesh - përfshirë veten time -
nuk do të me të vërtetë e di se çfarë ne jemi duke kërkuar në.
Lloj si ju mund të ndjeheni me sende si këtë të drejtë tani.
Por ne nuk mund të vërtetë duhet të kujdesen se si punon makina.
Ne nuk duhet të kujdeset se çfarë të gjitha shufra dhe Pistons dhe kabllot brenda të
makinë në të vërtetë janë duke bërë.
>> Pra, diçka si ajo që ju e quani pistoni nuk ka rëndësi
këtu në këtë rast.
Njëjtën ide.
Po?
[E padëgjueshme]
DAVID J. Malan: Nëse do të kishte më shumë përdorime të momentit ndryshueshme xa më parë,
ju, programues, do të duhet të ndryshojë ato kudo.
Ose ju mund të vërtetë të bëjë, File menu, dhe pastaj a / Replace,
diçka të tillë.
Por ju do të keni për të bërë këto ndryshime veten.
Ju duhet të jenë në përputhje.
[E padëgjueshme]
DAVID J. Malan: Një mënyrë të veçantë si këtu?
Nëse kjo ishte një tjetër int numrin?
Po.
Pra, për çështje, kur ju jeni duke e quajtur funksion.
Pra, nëse unë u quajtur rritje të këtu me presje diçka diçka,
ka një hartë të drejtpërdrejtë.
Ndryshueshme parë, çfarëdo qoftë ajo është quajtur, është bërë një kopje të parë
Argumenti mbi këtu.
Na vjen keq, kjo nuk duhet të jetë një parantezë.
Linjat e dytë argumenti deri me një të dytë.
>> Kështu që, po, ka rëndësi.
Dakord.
Na vjen keq unë mora një rrugë të gjatë për të arritur atje.
Pyetje të tjera?
Dakord.
Pra, le të shohim nëse ne nuk mund të pikturoj një tablo të asaj që po ndodh në të vërtetë
këtu nën kapuç, në mënyrë që të flasin.
Pra, kjo është një drejtkëndësh që mund përfaqësojë kujtesën e kompjuterit tuaj.
Pra, edhe në qoftë se ju nuk keni ide se sa memorie punon apo si punon RAM, të paktën
supozojmë se ju keni bunches e saj këto ditë.
Ju keni marrë megabajt të saj.
Ju keni marrë gigabajt të saj.
Dhe ne e dimë nga zero jave se një bajt është vetëm ajo?
8 bit.
Drejtë, kështu që 8 zero dhe ato.
Pra, në qoftë se kompjuteri juaj ka një koncert të RAM, dy koncerte të RAM këto ditë, ju keni një
miliardë lekë ose 2 miliard byte memorje, ose afërsisht 8 miliardë, ose 16 miliardë
bit, brenda e kompjuterit tuaj.
Tani ndryshe nga shembull pak leshtë Willy, kjo nuk është grimca magnetike
zakonisht më.
Gjithnjë e më shumë, në laptopë të paktën, kjo është disqet të forta shtetërore, SSD, që
thjesht nuk kanë lëvizur pjesë.
Kjo është e gjitha elektronike.
Kjo është e gjitha elektrike bazuar.
Pra, mendoj se, edhe pse, për këtë drejtkëndësh si vetëm përfaqëson një ose dy
gigabajt të memories që ju keni.
>> Pra, kjo është një copë e kujtesës.
Tani bota e shkencave kompjuterike ka lloj të chunks të ndarë jashtë
kujtesës për të bërë gjëra të ndryshme.
Kështu për shembull, nëse kjo është e RAM kompjuterit tuaj - siç sugjerohet nga
drejtkëndësh ka - rezulton se nga Konventa, në krye të RAM tuaj, kështu që
për të folur, në përgjithësi është ajo që quhet një segment tekst.
Ata janë zero dhe ato që ju keni hartuar.
Pra, kur ne kemi shikuar nën kapuç në atë a.out është, të gjitha
nga zero dhe ato -
kur ju drejtuar një program, ato zero dhe ato janë të ngarkuar nga hard juaj
makinë në diçka që quhet RAM.
Dhe në RAM, ata janë vënë në krye.
Tani ndërkohë, ju keni gjëra të tjera.
Të dhënat initialized, të dhënat uninitialized.
Zona të tëra këto dy të memories referohen variablave globale, e cila
ju nuk e përdorin shpesh.
Por ndonjëherë, nëse ju bëni, ata përfundojnë deri atje si.
Pastaj ka disa sende të tjera.
Mjedis të ndryshueshëm, të cilat ne nuk do të kalojnë shumë kohë me radhë.
Por pastaj dy gjëra të rëndësishme që do të kthehet në të gjithë këtë
, semestri rafte dhe tog.
>> Pra, shumica e kujtesë të kompjuterit tuaj është e rezervuar kur drejtimin e një program për
diçka që quhet rafte dhe diçka të quajtur tog.
Dhe ne nuk do të flasim rreth një grumbulli gurësh sot, por ne do të
flasim për rafte.
Dhe rafte është menduar të sjell në mendje deri vizual si sallën e ngrënies
tabaka vakt në Shtëpinë Mather, ose kudo që ju ndodh që të jetë, ku
ngrënie sallë Stafi pastrimin e tyre çdo ditë.
Ata rafte e tyre deri nga dyshemeja në UP.
Dhe në mënyrë të ngjashme në kujtesë, nuk është kjo ide të vënë diçka në një
rafte, vënë diçka në një pirg, duke vënë diçka në një pirg.
Dhe çfarë ne do të thotë me këtë?
E pra, le të zoom në në gjysmën e vetëm më të ulët të këtij foto, e kompjuteri juaj
RAM, të propozojë në vijim.
Ajo rezulton se kur ju drejtuar një program si a.out apo hello, çfarëdo
programi është që ju keni shkruar,
përsëri, ato zero dhe ato janë të ngarkuar nga hard drive tuaj - e cila është
ruajtjen afat të gjatë, qëndron atje edhe kur ju tërheq plug -
ngarkuar në RAM.
RAM është më e shpejtë se hard drives.
Kjo është më e vogël se hard drives.
Por kjo është ajo ku programet jetojnë ndërsa ju jeni drejtimin e tyre.
>> Pra, ju klikoni dy herë një program në një Mac apo PC - është ngarkuar nga
hard drive në RAM.
Sa më shpejt që është e ngarkuar në RAM, zero dhe ato të shkojnë në krye mënyrë,
ashtu-quajtur segmenti tekst.
Por pastaj sa më shpejt që programi juaj në fakt fillon running, kryesore
Funksioni quhet.
Dhe kryesore, siç kemi parë, shpesh ka variablat lokale.
Dhe kjo ka ints dhe vargjet dhe karaktere dhe si.
Pra, nëse programi juaj që keni shkruar ose program që ju keni
dyfishtë klikuar përdorur disa variabla brenda kryesor, ata të përfundojnë deri në
fund e rafte tuaj të kujtesës, kështu që të flasin.
Tani më konkretisht, çfarë e bën këtë të vërtetë do të thotë?
Kjo thjesht do të thotë se në qoftë se ne do të numërojmë gjërat -
në qoftë se ne ishim duke shkuar për numrin e bytes e RAM në kompjuterin tuaj, vëreni se
kjo mund të jetë zero byte numër.
Kjo mund të jetë numri i bajt një, dy, tre, katër, pesë, gjashtë, të gjitha
rrugën deri në si -
2 miliardë do të jetë mbi të gjitha rrugën deri atje në krye.
Pra, me fjalë të tjera, kur ne flasim për memorie RAM ose në drejtim të bytes, ajo
thjesht do të thotë se dikush ka vendosur se çfarë duhet të numërojmë çdo
ato chunks e kujtesës.
>> Pra, kur ju keni nevojë për 32 bit për një int, apo keni nevojë për 8 bit për një char, aty ku
ata përfundojnë në kujtesë?
Edhe konceptuale, ata vetëm të përfundojë deri në fund të këtij
Gjëja e quajtur rafte.
Por ajo që është interesante tani është, kur e quan një funksion kryesor.
Supozoni një funksion të quajtur foo, vetëm një emër arbitrare.
Çfarë ndodh është kryesor është në fund të këtij rafte e kujtesës.
Foo tani është vënë në krye të kryesore në kujtesë.
Kështu që çdo ndryshore lokale që foo ka përfundojë lloj konceptualisht më sipër
ato kryesore.
Nëse foo quan një funksion të quajtur bar, ato variabla të përfundojnë këtu.
Nëse bar e quan diçka tjetër, këtu, këtu, këtu.
Pra, çfarë është interesante në lidhje me drejtimin e një programi është se si ju e quani funksionet,
dhe si ato funksione telefononi funksionet, dhe si ato funksione telefononi funksionet,
keni ndërtuar këtë turrë e funksioneve në memorje.
Dhe vetëm një herë në kthimin e funksionit ju filloni të keni atë kujtesës prapa.
Pra, një nga mënyrat më të lehta për të dalë jashtë kujtesës në një program kompjuterik është që të
shkruani funksione që nuk kthehen.
>> Kështu për shembull, le të tregojë sa më shumë me një
Programi qëllimisht buggy.
Më lejoni të shkojnë përpara dhe nuk përfshijnë # , kryesore int (i pavlefshëm).
Dhe unë jam duke shkuar për të bërë, ndërsa (2> 1), i cili ndoshta kurrë nuk do të
të ndryshojë në ne.
Dhe më lejoni të shkoj përpara dhe të bëjë tani printf.
Në fakt, kjo do të jetë më pak vizualisht interesante.
Le ta bëjmë këtë.
Për int (I = 0; I> 0).
Le të bëjnë këtë gabim, unë + +.
Dhe le të mos printf këtu.
Le të praktikuar atë që unë u predikonte.
Le të ketë një metodë këtu.
Kor pavlefshme, dhe ne do të themi int.
Dhe atëherë unë jam duke shkuar për të thënë, printf -
oh, le ta bëjë këtë më interesante.
Le të mos të vërtetë të shtypura asgjë në të gjitha.
Le të vetëm të bëjë këtë.
Chorus (i).
>> Dakord.
Pra, kjo është buggy, sepse pse?
Unë jam duke e bërë këtë deri sa të shkoj, sepse programi nuk ka të vërtetë të bëjë asgjë
e interes.
Por kjo nuk është qëllimi.
Qëllimi është për të shkruar një program funksioni kryesor i të cilit e bën atë, me sa duket?
Telefononi veten.
Dhe në fakt, ne nuk kemi nevojë lak.
Le të lehtësuar edhe kjo vetëm jo aq sa për të humbur shikim të vërtetë
bug themelore.
Thirrjet kryesore kor për të kënduar disa kor.
Pastaj kam bërë diçka stupid, dhe kam pasur thirrje kor kor sepse unë supozuar
dikush tjetër ishte duke shkuar për të zbatuar atë ndoshta.
Dhe tani kjo nuk do të përpilojë ende.
Unë kam nevojë për të bërë çfarë?
Unë kam nevojë për prototip, mos harroni.
Kështu që unë duhet të ketë deri këtu kor void (int i);.
>> Deri tani, nëse unë shkoj poshtë këtu -
në fakt, le të përdorim dritaren e madhe.
Le të shkojnë përpara dhe të bëjë kor.
Përdorimi i deklaruesi i paidentifikuar.
Oh, se ishte budalla.
Ne nuk kemi nevojë për argument.
Le të vetëm të bëjë këtë.
Wish ne kishim filluar këtë mënyrë.
Ajo do të kishte qenë një program shumë më të lehtë për të shkruar.
Kështu që nuk ka.
Tani le të shkojë mbi në dritaren time terminal, ri-drejtuar tingëllimë.
Dhe këtu ne do të shkojmë.
Kjo ishte me të vërtetë të shpejtë.
Çfarë në të vërtetë ndodhi ashtu, pse?
E pra, tani unë do të shtoni linjë të shtypura, kështu që ne mund të shohim.
Pra më lejoni të them printf, le të themi, unë jam këtu.
Mirë, nuk ka variabla, ne do të lënë atë si kjo.
Më lejoni të ri-drejtuar bërë.
Më lejoni të ri-drejtuar kor.
Dhe të vijë në.
Do të mbajë.
Si një mënjanë, pse nuk e ka ai u rrëzua ende?
Faji segmentimit ndodhi super të shpejtë përpara.
[E padëgjueshme]
DAVID J. Malan: Pikërisht.
Pra, kjo merr kohë për të shkruar.
Ajo merr vetëm më shumë punë nga ana e kompjuterit.
Dhe nuk është.
Faji segmentimit.
>> Pra, vini re se sa programet e shpejtë të kandidojë.
Nëse ju nuk jeni shtypjen asgjë, e super të shpejtë.
Por ne ende mori këtë faji segmentimit sepse ajo që po ndodhte?
E pra, në qoftë se ju mendoni se si memorie kompjuteri juaj është hedhur jashtë, kjo
ndodh të jetë kryesor.
Por këtu -
le të vetëm quajmë këtë kor, dhe le të quajmë këtë kor.
Dhe tani, nëse unë bëj estetikë e mia të drejtë, kjo është vetëm do të them kor,
kor, kor, kor, kor, kor, kor, nauseum ad.
Dhe përfundimisht, çfarë do të ndodhë?
Nëse foto e madhe fjalë për fjalë është kjo, ajo që ndodh vetëm konceptualisht?
The overruns rafte këtij togu.
Apo më keq, ju muar vetëm çdo gjë, duke përfshirë edhe segmentin e tekstit, e cila është
nga zero dhe ato që përfaqësojnë programin tuaj.
Me pak fjalë, kjo është vetëm super, super e keqe.
Drejtë?
Programi juaj ka dalë jashtë kontrollit.
Ju jeni duke përdorur memorie mënyrë më shumë se ju për qëllim të gjithë për shkak të një trashë
gabim, në këtë rast.
Ose në këtë rast, një funksion shumë qëllimisht bërë thirrje vetë.
Tani kjo nuk është e gjitha e keqe.
Funksionet e quajtur veten e tyre të vërtetë ka fuqi të madhe
kur ju përdorni atë saktë.
Unë nuk e kanë përdorur atë saktë këtu.
>> Pra, kjo nuk është e gjitha e keqe.
Por fakti që unë kurrë nuk të vërtetë të ndaluar duke e quajtur veten është thelbësore
Dobësia këtu e këtij programi.
Pra, ku jemi duke shkuar me të gjithë këtë?
E pra, çfarë po ndodh realisht?
Kur kam thirrur funksionin rritje, si ne ishim duke bërë në këto shembuj,
Unë kam një vlerë si 1 që unë të kalojë in
Unë të kalojë në një kopje të numrit një të tillë.
Kështu ndodh poshtë.
Pra, le të shkojnë në shembull rritjeje.
Dhe ky djalë të drejtë mbi këtu.
Kështu që këtu është ajo që po ndodh në të vërtetë.
Kur kam quajtur rritje të, dhe unë të kalojë në x, pictorially çfarë është
ndodh këtu është kjo -
nëse kam vlerën e 1 ruajtur këtu, dhe unë në fakt e quajnë rritje të, e cila
tani quhet kor -
yeah, që është hedhur me off këtu.
Pra, le të quajmë këtë rritje të.
Dhe ne nuk e dimë se çfarë ky funksion tjetër do të jetë.
Pra, çfarë po ndodh në të vërtetë është këtu diku në kryesore, unë kam një copë të
kujtesës që është ruajtja e numrit 1.
Kur unë të kërkoj rritje të, unë jam duke përdorur një copë e kujtesës, por tani unë
kanë kopje të 1.
Kur unë rritje atë vlerë, kjo bëhet 2 - shkruar tmerrshëm në
Ekran këtu.
Por atëherë, çfarë ndodh sa më shpejt të kthimit të ardhura?
Kjo memorie vetëm merr dorëzuar përsëri në sistemin operativ, që do të thotë të gjitha
ju keni bërë asgjë të dobishme.
Ai që u përmbahet fillimisht në kryesor është ende në të vërtetë atje.
>> Pra, ku jemi duke shkuar me këtë?
E pra, ajo rezulton se në kujtesën ju e keni këtë të kthyer prapa rend të
bytes që ju mund të vënë sende in
Dhe kjo rezulton se ne kemi parë tashmë diçka që përfshin vënien
gjëra për të kthyer prapa për të kthyer prapa.
Çfarë është një varg, bazuar në një javë dhe tani dy javë?
Pra, kjo është vetëm një koleksion i karaktereve.
Pra, ajo rezulton, ashtu si ju mund të vënë numrat në kujtesë, në mënyrë të ngjashme ju mund të
vënë personazhet në kujtesë.
Dhe sapo kemi filluar karaktere vënë në kujtim të kthehet prapa për të mbështetur të
mbrapa, rezulton se duke përdorur të thjeshtë të gjërave si një për lak ose
një lak, ndërsa, ne mund iterate -
nga e majta në të djathtë mbi personazhet në një varg -
dhe të fillojnë të fërkoni ato në karaktere të ndryshme krejt.
A mund të bëhet B. B mund të bëhet C. Kështu që në fund të fundit, ne mund të marrë një
Dënimi Shqip që në fakt e bën kuptim dhe konvertohet secili prej atyre
letra në një kohë duke ecur nëpër kujtesë të kompjuterit tonë lihet
e drejta që në fakt encrypt.
>> Pra, le të marrin pesë-minutësh pushim tonë këtu, dhe kur kemi ardhur përsëri, ne do
të fillojnë këtë proces të përpiqen informacion.
>> Dakord.
Pra, para se të zhyten në të disa kripto dhe këto gjëra quhet vargjeve, le më
pauzë për çdo pyetje, sepse unë të ndjehen si unë me të vërtetë lloji i muddled disa prej
ato tema.
Pra, le të rregulluar tani në qoftë se ne mund.
Pra, ne vetëm të biseduar në lidhje me vlerat e kthimit.
Ne biseduam në lidhje me argumente.
Dhe kemi biseduar në lidhje me këtë nocion, të cilat ne do të kthehen në javët që
vijnë, të shikojnë kujtesës si një bandë e tërë e këtyre bërë pirg
tabaka, në mënyrë që të flasin.
Nga thellësia më lart, e tillë që çdo tabaka që merr vënë në rafte paraqet
një funksion që është aktualisht duke u quajtur.
Çdo pyetje?
Pra, si në lidhje - më lejoni të provoni duke i kërkuar një pyetje.
Unë mbaj cënuese se, por tani it's - you've parë të gjithë fytyrën e djalit.
Pra, ne do të kthehen në atë.
>> Pra më lejoni të bëj një pyetje këtu.
Më lejoni të lehtësuar këtë përsëri në atë që ishte para disa Q & A. tonë të parë
Dhe fakti që rritja ka hapur parantezë, numri int, e mbyllur
kllapa.
Çfarë do të përfaqësojnë numrin int?
[E padëgjueshme]
DAVID J. Malan: Një argument.
Mirë, por ajo është një argument?
[E padëgjueshme]
DAVID J. Malan: Na vjen keq, çfarë është ajo?
Kryetari 3: Diçka ju kaloni in
DAVID J. Malan: Mirë.
Pra, diçka që ju të kalojë in
Dhe më në përgjithësi, kjo është vetëm input.
Nëse jeni të shkruar një funksion dhe qëllimin që funksionojnë në jetën është të bëj
diçka pak të ndryshme çdo herë që e përdorin atë, atëherë mënyra e vetme për
që kjo të ndodhë me të vërtetë do të duket të jetë për të siguruar atë me të dhëna në mënyrë që ajo
mund të bëjë diçka të ndryshme me atë input çdo kohë.
>> Kështu që ju duhet të specifikoni dy gjëra kur një funksion merr inputet.
Ju duhet të specifikoni emrin që ju dëshironi të jepni kontributin për këtë, thjesht për
komoditet tuaj në mënyrë që ju mund t'i referohet asaj në funksion që ju
vetë janë shkruar, siç kam bërë këtu në linjë 32.
Por ju gjithashtu duhet të specifikojë llojin e vet, sepse C është një gjuhë programimi
që vetëm kërkon
se në qoftë se ju doni një ndryshore, ju duhet të tregoni se çfarë kompjuterin
Të dhënat shkruani ajo është,
në pjesën më të madhe në mënyrë që ajo e di se sa copa të
akordojë për këtë variabël.
Për shkak se ajo mund të jetë gjashtë -
keq, kjo nuk do të jetë gjashtë.
Ajo mund të jetë 16.
Kjo mund të jetë 8.
Ajo mund të jetë 32, edhe 64.
Por kompjuteri duhet të dini.
Tani int në anën e majtë përfaqëson çfarë, nga ana tjetër?
[E padëgjueshme]
DAVID J. Malan: Çfarë është ajo?
[E padëgjueshme]
DAVID J. Malan: Lloji i funksionit dhe, më konkretisht,
Lloji i prodhimit të saj.
Drejtë.
Pra, ndërsa gjë në kllapa përfaqëson input e saj, nëse ka ndonjë, të
Gjëja në të majtë paraqet prodhimin e saj.
Dhe në këtë rast, duket Rritja kthen një int.
Dhe kështu është lloji int kthimi i këtij funksioni.
>> Çfarë do të thotë të kthehen?
Fjalë për fjalë, ju përdorni kthimin fjalen.
Dhe pastaj, nëse ajo që ju janë duke u kthyer në të djathtë të fjalen është një
integer, atëherë kjo është me të vërtetë në përputhje me atë që kemi premtuar.
Ju nuk mund të bëni diçka si kjo -
Hello, World -
sepse kjo është një varg.
Natyrisht ajo nuk është një numër i plotë.
Pra me pak fjalë, barra është me të vërtetë për ne, programues, të jetë specifike si
për çfarë ne jemi kthyer dhe për të pastaj të shkoni në fakt në lidhje me kthimin e tij.
Dhe pastaj të bëjë një fëmijë më i qartë konteksti -
atje ai është përsëri.
Konteksti -
surprizë e madhe vjen në një moment të vetëm.
Konteksti këtu tani është se kujtesa e kompjuterit tuaj është, përsëri, një
Gigabyte, dy gigabajt, çfarëdo.
Ndoshta kjo është më shumë.
Ndoshta kjo është pak.
Por kompjuteri sheh atë si ka seksione të ndryshme.
Diçka shkon poshtë atje.
Diçka tjetër shkon deri atje.
Sende të ndryshme shkon në mes.
Dhe sot, ne vetëm fillojmë thënë këtë histori.
>> Por ne do të vijnë përsëri në këtë kohë mbi.
Tani për tani, pjesa e vetme e kujtesës me të vërtetë intereson është segmenti teksti
për shkak se vetëm përfaqëson zero dhe ato
tingëllimë që ka outputted.
Kështu që kur ju drejtuar një komandë në tastierë si a.out, ose ju të dyfishtë
klikoni një ikonë në Mac ose Windows OS, programi juaj është ngarkuar nga hard juaj
përzënë në RAM.
Dhe kjo është plopped në krye të RAM kompjuterit tuaj, në mënyrë që të flasin.
Tani ndërkohë, si programi juaj fillon drejtimin dhe kryesor merr quajtur në
program që ju ka shkruajtur ose Microsoft programi ose Apple shkroi, ndonjë prej saj
Variablat lokale të përfundojë deri atje poshtë në pjesën e poshtme kujtesën e kompjuterit tuaj.
Por në qoftë se bën thirrje edhe një funksion tjetër kryesor që vetë ka variabla ose
argumente, ata përfundojnë mbi të.
Dhe në qoftë se funksioni i quan diçka, ata përfundojnë mbi të,
mbi të, mbi atë.
Dhe vetëm një herë një funksion është bërë ekzekutimin e bën pirg të tabaka, kështu
për të folur, të fillojë të marrë më të ulët dhe më të ulët.
Dhe kjo është ajo që pastaj, në një fjalë, shpjegon se pse, kur ju telefononi kubike -
ose ju telefononi rritje të -
ju jeni duke kaluar në një kopje të vlerës.
Dhe se çfarë do të thotë pictorially është se ju jeni fjalë për fjalë me shkrim
numër 1 në një pjesë tjetër të memories, ndryshimin se 1 deri në 2, në rastin e
Rritja -
ose tek një 8, në rastin e kubike -
dhe pastaj duke hedhur atë larg kujtesë sa më shpejt të ardhura ose kubike
kthimit të funksionojë.
>> Pyetje.
[E padëgjueshme]
DAVID J. Malan: Ku - variablave globale janë ruajtur në atë që është
quhet aktualisht dhënat initialized ose të dhëna uninitialized.
Dallimi që, në qoftë se ju keni një ndryshore globale, dhe ju të caktojë atë
menjëherë një vlerë me të barabartë të nënshkruar, ai përfundon deri në krye atje.
Dhe në qoftë se ju vetëm thoni int x pikëpresje me asnjë vlerë, ajo përfundon deri pak
ulët në RAM thjesht nga Konventa.
Pyetje të tjera.
Dakord.
>> Pra, kjo foto do të kthehet si ne të merrni më të fuqishëm me atë që ne mund të bëjmë
me kompjuter.
Por tani për tani, le të kemi një intro të shkurtër për cryptography, një lloj specifik i
Kriptografia që nuk zgjidhë të gjitha problemet e botës, por e zgjidh
disa prej tyre.
Në këtë rast këtu, ne kemi diçka që quhet Kriptografia sekret kyç.
Dhe cryptography sekret kyç, siç sugjeron emri, rrjedh sigurinë e saj
nga një sekretit.
Kështu për shembull, nëse ju jeni kthyer në klasën e shkollës dhe ju jeni duke kaluar një
pak letra sekrete dashuri me djalë apo vajzë që ju jeni në dërrmuese të - në qoftë se ju
donte të ndodhë që përmes audiencë, ju ndoshta nuk do të shkruaj
tillë një shënim në gjuhën angleze ose çfarëdo gjuha juaj amtare është, përkundrazi, ju
mund të encrypt atë.
Ose ju mund të thjesht dërgoni atyre një mesazh shkrimor këto ditë.
Por ju mund të vërtetë të kalojë atyre një shënim të gjithë klasës.
Dhe për të bërë këtë të sigurt, në mënyrë të tillë që miqtë tuaj dhe mësimdhënësit
nuk e di se çfarë jeni duke shkruar, ju mund të dalë me një mjaft të thjeshtë
algorithm -
ri pse ju mund të jetë -
të vetëm të ngjitem fjalë.
Pra, në vend e të shkruarit A, ju mund të shkruani B. Në vend të B, ju mund të shkruani
C. Në vend të C, ju mund të shkruani D, dhe kështu me radhë.
Ose ju mund të dalë me një përkthim më të sofistikuar të letrave
shkronja të ndryshme.
Por kapur është djalë apo vajzë për të cilin ju jeni dërguar këtë shënim ka nevojë për
dini diçka.
Cila është ajo që, natyrisht?
Ashtu si, çfarë sekreti juaj.
Si, çfarë është kjo hartë në mes si dhe BS dhe CS dhe DS?
Është vetëm duke shtuar një të tillë, kështu që të flasin, për secilën prej letrave të shkuar nga
A në B, B në C?
A është më komplekse se kaq?
Pra, ju dhe shtrydhje tuaj duhet të ketë këtë informacion sekret.
Por ka një lloj Catch-22 këtu.
Nëse kjo është hera e parë që ju jeni dërguar këtë letër nëpërmjet dashurie
klasë, si është se djalë apo vajzë do të dini se çfarë sekret edhe është?
Pra, sekreti kryesor kripto nuk i zgjidh të gjitha problemet e botës.
Dhe ka në fakt një marrëdhënie që ne do të kthehen në drejtim të
Fundi Semestri-së.
>> Në mënyrë të ngjashme, kanë askush prej nesh ndoshta dërguar ndonjëherë një -
në mënyrë të ngjashme, mos shumica prej nesh e dinë dikush që punon, për shembull, në
Amazon.com.
Dhe akoma, shumë prej nesh kanë blerë sende ndoshta në Amazon.com.
Dhe ne kemi qenë të mësuar të supozojmë se këto e-commerce
Transaksionet janë të sigurta.
Drejtë?
URL ndoshta thotë https.
Ka ndoshta një budalla pak ikonë dry diku.
Ka disa lloj cryptography siguruar informacion kartën tuaj të kreditit
mes jush dhe Amazon.com.
Dhe akoma, në qoftë se cryptography përfshin ditur disa sekrete, por unë nuk
e di dikush në Amazon, dhe nuk e kam rregulluar me siguri ndonjë lloj të
Sekreti me dikë në Amazon, si është kompjuterin tim ose shfletuesi im bërë këtë?
E pra, rezulton se ka lloje të tjera të kriptografisë krejt se zgjidhin
se problemi.
Por për sot, ne do të përqëndrohet në një të thjeshtë, ku ju mund të organizoni në
përparuar të dini disa sekrete, si plus 1 ose disa hartës mes si dhe BS.
>> Dhe procesi i cryptography në përgjithësi përfshin këtë.
Ju keni disa plain text, përshkruar këtu në të majtë.
Ju drejtuar atë nëpërmjet disa lloj algoritmi ose procedurë
për encrypting atë.
Ndoshta kjo është vetëm një behet B, B bëhet C. Dhe pastaj ju të përfundojë me
shifrojë tekst.
Ndërkohë, pasi shtrydhje juaj merr shënim të fshehtë, ai ose ajo ka për të, atëherë
decrypt atë duke përmbysur përgjithësi se algoritmi në mënyrë që të merrni
mbështesë plain text.
Tani ka incarnations fizike të kësaj.
Për shembull, kjo është pak unazë sekret decoder.
Dhe kjo është një unazë në kuptimin se ka dy dials këtu.
Në periferi të jashtë këtë gjë, nuk ka shkronja A deri Z,
edhe pse ata janë në mënyrë të rastit.
Dhe në brendësi, nuk ka në fakt disa numra të tilla, se me këtë
Unaza, ju mund të lloj të kthehet jashtë, por jo brenda në mënyrë që të vijë deri
numra me letra.
Dhe në clip ju jeni gati për të parë - disa prej të cilave ju mund të keni parë 24/7
rreth sezonit të Krishtlindjeve nga një film të quajtur A Christmas Story.
Ju do të shihni se Ralphie vogël ishte aq i etur për të kuptoj se çfarë jetim pak
Mesazhi sekret Annie ishte për atë që kishte qenë komunikuar, unë mendoj se, në
formën e mesazheve numerike në një kuti serial.
Dhe keni pasur për të grumbulluar të gjitha kartat që erdhi pak
në kuti dritherash.
Ju kishte të postës ato in
Ju kishte për të marrë mbrapa unazën sekret decoder, kështu që ju mund të më në fund të kuptoj
se çfarë është në mes të hartës shkronja dhe numra,
ose letra dhe letra.
Kështu që unë ju jap këtë clip shkurtër nga një histori e Krishtlindjeve për të motivuar pset 2 dhe
diskutimi ynë, në një moment, të vargjeve.
Pra, këtu kemi Ralphie.
>> [Rishikim video]
-Jini të njohur për të gjithë dhe i ndryshëm se Ralph Parker emërohet një
anëtar i Vogël Rrethi Orphan Annie Sekrete dhe ka të drejtë për të gjithë
nderon dhe përfitimet ndodh me to.
-Nënshkruar, Annie pak jetimë.
Bashkënënshkruara, Pierre Andre!
Në bojë!
Nderon dhe përfitimet, tashmë në moshën nëntë.
Come on, le të merrni më me të.
Unë nuk kam nevojë të gjithë jazz se rreth kontrabandistëve dhe piratët.
-Dëgjoni natën nesër për aventurë përmbyllëse të Zi
Pirate Ship.
Tani është koha për mesazhin sekret Annie për ju anëtarë
i rrethit Sekret.
Mbani mend, fëmijët, vetëm anëtarët e rrethit Sekret Annie mund të deshifroj
Mesazhi sekret Annie.
Mos harroni, Annie është në varësi të ju.
Vendosur këmbët tuaja në B2.
Këtu është mesazhi.
12, 11 -
-Unë jam në takimin e parë time të fshehtë.
-14, 11, 18, 16 -
Pierre-sonte ishte në zë të madh.
Unë mund të them se mesazhi sonte ishte me të vërtetë e rëndësishme.
-3, 25.
Kjo është një mesazh nga Annie veten.
Mos harroni, mos tregoni askujt.
-90 Sekonda më vonë, unë jam në dhomën e vetme në shtëpi, ku një djalë i nëntë
mund të ulem në jetën private dhe deshifroj.
Aha, B. unë shkova për të ardhshëm.
E. Fjala e parë është jetë.
S. Ajo u vjen më lehtë tani.
U.
-Oh, eja, Ralphie.
Unë kam për të shkuar.
-Do të jetë e drejtë poshtë, ma.
-Gee kampion.
-T, O. Jetë i sigurt për të.
Jetë i sigurt për çfarë?
Cili ishte Annie Pak jetim duke u përpjekur për të thënë?
Jetë i sigurt për çfarë?
-Ralphie!
Randy ka marrë për të shkuar.
Do ju lutem të dalë?
-Në rregull, ma.
Unë do të jetë e drejtë jashtë.
-Unë kam qenë duke iu afruar tani.
Tensioni ishte e tmerrshme.
Çfarë ishte kjo?
Fati i planetit mund të ul receptorin e telefonit në ekuilibër.
-Ralphie!
Randy e mori për të shkuar.
-Do të jetë e drejtë jashtë, për të qarë me zë të lartë.
-Gee, pothuajse atje.
Gishtat e mi fluturoi.
Mendja ime ishte një kurth çeliku.
Çdo pore vibrated.
Ajo ishte pothuajse e qartë.
Po, po, po, po.
-Të jetë i sigurt për të pirë Ovaltine tuaj.
Ovaltine?
Një tregtar i pavlerë?
Bir i një kurvë.
[VIDEO END rishikim]
>> DAVID J. Malan: Pra, nuk kemi cryptography.
Pra, si në një kompjuter mund të shkoni në lidhje me zbatimin ose
përfaqësojnë gjëra të tilla si kjo?
E pra, ne kemi nevojë për një mënyrë për të shprehur veten pak më shumë se sa
Variablat tona deri tani kanë lejuar.
Ne kemi pasur ints.
Ne kemi pasur chars.
Ne kemi pasur gjithandej dhe dyshe dhe disa të tjerë.
Por ato janë pjesë individuale të kujtesës që vërtetë nuk na lejojnë të
shprehin gjëra të tilla si fjalë dhe fjali dhe fraza.
Në të vërtetë, ne kemi quajtur gjëra të tilla vargje.
Por ne premtuar se kjo është me të vërtetë vetëm një thjeshtësim në CS50
Biblioteka që ne jemi duke synuar për të zhvishem përsëri.
>> Dhe kështu le të fillojë për të bërë këtë këtu.
Më lejoni të shkoj përpara dhe të hapur një skedë -
të gjitha këto fotografi janë në dispozicion si online të zakonshme -
array.c quajtur për të zgjidhur një problem të palidhur me vargjet por që pikturon një
foto ketu se si ne mund të përdorim diçka të quajtur një rrjet.
Një grup është një lloj i të dhënave.
Kjo është një lloj i variable, në terezi, se ka lloje të shumta të vogla të dhënave
në brendësi të saj për të kthyer prapa për të kthyer prapa.
Kështu për shembull, në qoftë se ne duam të shkruani një program që ju jep pak tuaj
quiz mesatare për një kurs si 50 qe ka dy kuize, ju mund shumë lehtë
shkruaj këtë program - bazuar edhe në disa nga materiali i javës së kaluar -
duke përdorur GetInt dhe nja dy variablave.
Int quiz1, int quiz2, dhe kjo është goxha e thjeshtë.
Kjo është ndoshta 10, 20 rreshta të kodit, max, për të zbatuar një program që kërkon
përdoruesit për dy rezultatet quiz dhe pastaj llogarit mesataren e tyre duke shtuar ato
së bashku, ndarë nga dy, dhe pastaj shtypjen rezultatet.
Ne ndoshta mund të bëjë që shumë lehtësisht tani pas
disa Numri i minutave.
>> Por problemi është se mendoj që 50 kishte tre apo katër kuize.
Supozoni se ju të kërkuar për të përdorur të njëjtin program për një klasë që kishte
kuize javore.
Mendoni për një klasë që ka kuize javore.
Nëse ka si 16 apo më shumë javë në një semestër, tani ju keni 16 variabla -
int quiz1, int quiz2, int quiz3, int quiz4.
Sa më shpejt që ju të filloni duke parë këtë tepricë, kjo kopjimi dhe pasting
e kodit, ajo duhet të fillojë të bëjë që ju dëshironi ka qenë një mënyrë më të mirë.
Dhe fatmirësisht, për shkak të vargjeve, nuk është.
Pra, le ta bëjmë këtë.
Së pari, më lejoni të prezantoj një gjë shumë të thjeshtë që ne nuk kemi përdorur deri më tani,
por ju do të shihni atë herë pas here në kodin.
Kjo është ajo që është quajtur përgjithësisht një konstante.
Pra, kjo është një konstante në kuptimin që kjo vlerë nuk ndryshon.
Konventa e njeriut kur të krijuar një konstante është që të përdorin të gjitha kapitalin
letra, vetëm në mënyrë që me të vërtetë qëndron në kodin tuaj.
Dhe fjalen e veçantë që keni përdorur është në C # define.
Pra, nëse ju thoni # define, atëherë një hapësirë, pastaj fjalën që ju dëshironi të përdorni për
Emri konstante, dhe pastaj vlera e vazhdueshme.
Pra njoftim, kjo është e ndryshme nga diçka për caktimin e një ndryshore.
Nuk ka asnjë të barabartë shenjë.
Nuk ka pikëpresje.
Kjo është ajo që është e njohur përgjithësisht si një direktivë Preprocessor, por më shumë në
se një tjetër kohë.
>> Tani për tani, kjo krijon një vlerë pandryshueshme quajtur KUIZE aktuale e të cilit
vlera numerike është 2.
Pra, kudo që ju shihni kuize, kuize, kuize gjatë këtij file, kjo është
vetëm numri 2.
Tani, në qoftë se unë shoh në kryesore tani, le të shohim se si punon kjo.
Në fillim, ai duket pak i fshehtë.
Por kjo është e gjitha gjëra që nga java e parë.
Të kërkojë nga shfrytëzuesi për klasat.
Si e bëjmë këtë?
E pra, në përputhje 22 -
kjo është me të vërtetë pjesë e lëng -
Unë deklaroj një noton, por jo vetëm një noton të vetme.
Unë jam deklaruar, në vend, një grup i vlerave pikë lundrues.
Kjo variabël do të quhet klasat, siç nënkuptohet këtu.
Por pjesa e vetme e sintaksës së re, atëherë janë këto kllapa katrore, fakti
që unë kam thënë nota noton dhe pastaj parantezë të hapur dhe pastaj një numër.
Njoftim, nëse kjo është një konstante, kjo është vetëm si ne e bëmë këtë.
Kjo do të thotë kompjuteri hej, jepni dy gjithandej, dhe le të thërrasë kolektive
ato notat.
Kjo është në kontrast me një proces shumë më të lodhshme si kjo.
Noton Grade1, noton Grade2, dhe kështu me radhë.
Kështu një grup na lejon për të zbatuar këtë ide, por shumë më pak messily, në
një mënyrë të tillë që ne mund të shkruani një linjë të kodit në vend të, të themi, 16 për një 16
Semestri javë.
Kështu që unë nuk dua të vështirë-kodin 2 sepse në qoftë se ju mendoni rreth kësaj tani
logjikisht - mendoj vitin e ardhshëm CS50 ndryshime në 3 kuize vend.
Dhe kam pasur numrin 2 here.
I kishte numrin 2 here.
Kjo bëhet shumë e lodhshme dhe shumë e lehtë për të vidhos deri dhe për të ndryshuar aksidentalisht
një vlerë të 3 dhe të humbasë disa vlera të tjera të 2.
Kështu që unë jam duke shkuar për këtë vend abstrakt dhe larg përdorni këtë konstante që, siç saj
emri sugjeron, nuk ndryshon kurrë.
Dhe tani, pa marrë parasysh se a kemi të ndryshme kuize këtë vit ose tjetër, unë
vetëm duhet për të ndryshuar atë në një vend, deri këtu në krye.
>> Pra, kjo është e gjitha është konstante.
Ndërkohë, tipar i ri konceptual është ai i një grup.
Pra kllapa katrore jepni këtë gjithandej shumë dhe lejon mua kolektive
quajmë ato notat këtu.
Pra, tani le të shohim se çfarë unë jam duke shkuar për të bërë.
Këtu në linjë 24 është fillimi i një për lak.
Kjo është me të vërtetë i zbukuruar asgjë.
Është vetëm duke përdorur kuize vend të një numri të vështirë-koduar.
Por nuk ka asgjë intelektualisht të ndryshme ka nga java e fundit.
Kjo është vetëm printf.
Pra printf ("% d quiz Numri i% d"), sepse unë vetëm dua të shtypura nga më jepni quiz
Numri një nga dy dhe pastaj dy nga dy.
Pra, kjo është thjesht një gjë e estetike.
Por pjesa interesante tani është në linjë 27.
Në mënyrë që të plotësojë një nga dy placeholders me një lundrues-pikë
vlera, ju përsëri përdorni kllapa katrore.
Në këtë rast, unë jam i përdorur për lak, sepse kjo ka filluar me i barabartë
çfarë vlera, me sa duket?
0.
>> Kështu në përsëritje e parë të këtij loop, kjo është sikur unë
shkroi këtë në kodin.
Por në përsëritje e dytë të këtij loop, kjo është sikur unë
shkroi këtë në kodin tim.
Por fakti që unë jam duke përdorur një ndryshore është e përsosur, sepse, si emër
sugjeron, është që ndryshojnë vlerën e saj në çdo përsëritje.
Kështu që unë jam duke plotësuar këtë grup një vend në një kohë.
Çfarë e bën këtë rrjet të duken si?
E pra, arsyeja që unë tërhoqi këtë drejtkëndësh super të thjeshtë në ekran këtu
para se të ishte për këtë arsye.
Një grup është vetëm një copë e kujtesës pasuar nga një tjetër copë e kujtesës,
pasuar nga një tjetër copë e kujtesës, dhe kështu me radhë.
Pra, nëse array ime është e madhësisë 2, në këtë rast këtu, të gjitha unë do të jetë bërë nga
shtypni në rezultatet e mia quiz, si këtu.
I kam 100 për këtë një të tillë.
Dhe pastaj kam marrë një 99 në këtë një.
Atëherë kjo memorie nuk mund edhe të përdoret, sepse unë kam kërkuar vetëm
kompjuter për një grup të madhësisë 2.
Këto sheshet janë ende atje.
Drejtë?
Ju ende keni dy gigabajt të RAM, edhe në qoftë se ju jeni vetëm
kërkuar dy gjithandej.
Pra, ideja prapa vargjeve është se kompjuteri merr vetëm një copë e kujtesës
dhe pastaj apportions copa të vogla për të kthyer prapa për të kthyer prapa.
Dhe kështu kjo është e gjitha një grup është.
Kjo është një copë e puqur e kujtesës, brenda të cilat ju mund të vënë gjërat.
>> Tani kjo ndodh vetëm atëherë bëni aritmetikë disa mërzitshëm.
Nëse unë lëvizni poshtë këtu, ky është vendi ku unë pastaj iterate mbi array.
Kam ardhur deri me përmbledhjen e të gjitha vlerave në grup.
Dhe atëherë unë të përdorni funksionin e rrumbullakët këtu për të vërtetë të bëjnë të
përmbledhur ndarë nga kuize.
Por më lejoni të tundë dorën time në atë, si lloj aritmetike të mjaftueshme për tani.
Por të gjitha që është bërë për mua në fund të fundit është një mesatare informatikë.
Quiz Pra, së pari plus quiz dytë, ndarë nga 2, dhe pastaj shtypje
ajo jashtë si një int.
>> Por le tani tranzicioni në një shembull tjetër të quajtur string1,
e cila paraqet një tablo të ngjashme, por vargjet duke përdorur.
Më lejoni të shkojnë përpara dhe do të thjeshtojë këtë për vetëm një moment.
Dhe fale vulë për tani.
Njoftimi në linjë 19 të këtij shembull, unë të marrë një varg nga përdoruesit.
Por vëreni se çfarë jam duke bërë më tej në linjat 22 tutje.
Unë jam në të vërtetë nga i iterating deri - dhe kjo është një mashtrim i ri -
strlen, gjatësia string.
Ky është një funksion që vjen me C se në qoftë se ju të kalojë atë një varg, kjo tregon
ju sa karaktere janë në atë varg.
Kjo është e gjitha.
Fakti që kjo është strlen vend të gjatësisë string është vetëm për shkak se ajo është
ngjeshur shumë.
30 vjet më parë, njerëzit i pëlqente të shkruajë gjëra si shkurtimisht të jetë e mundur.
Pra, ne kemi mbajtur atë konventë këtu.
i + + thjesht do të thotë shtim i në çdo përsëritje.
Dhe tani vini re kjo, e cila është me të vërtetë interesante.
Pra, në linjë 24, unë them kompjuter, jepni një karakter, tetë
bit, dhe e quajti atë c.
Por çfarë është kjo në anën e djathtë duke thënë?
Në anglisht, çfarë bën që përfaqëson?
[E padëgjueshme]
DAVID J. Malan: Pikërisht.
Jepni karakterin e parë në grup.
Ose më në përgjithësi, më jep karakter i-th në rrjet.
Dhe të kuptojë se është e rëndësishme tani se si shkencëtarët kompjuter, ne jemi të vërtetë
numëruar nga 0.
Ju nuk keni liri tani për të fillojnë të bëjnë këtë.
Tani ju duhet të sillen në përputhje me pritjet e kompjuterit dhe
numërimin nga zero sepse [0] do të jetë i pari
karakter në një varg.
[1] do të jetë i dytë.
[2] do të jetë i treti, dhe kështu me radhë.
Pra këtë program, në qoftë se unë përpilojnë atë - kjo është, përsëri, string1.
>> Pra, ti string1.
Dhe tani kam drejtuar string1 në dritaren time terminal.
Është duke pritur për të dhëna, kështu që unë jam duke shkuar për të shkruani në, të themi, Davidit.
Enter.
Dhe tani ajo printon David të gjitha në linja të ndryshme, sepse
njoftim se çfarë unë jam duke bërë.
Unë jam shtypjen një karakter në një kohë.
Tani ne nuk do të shkojmë në detaje sot për këtë.
Por unë fshihet një moment më parë këtë kontroll këtu.
Ajo rezulton se në qoftë se përdoruesi është misbehaving, kundërshtuese, ose vetëm
hutuar, ju në fakt mund të dështojë për të dhënë një varg të disa gjatësi.
Nëse ju goditi kyç të gabuar në tastierë, ju mund të jepni
asnjë string në të gjitha.
Ose në qoftë se ju jeni me qëllim të keq, ju mund të provoni për të ngjitur në vlerë një Gigabyte së një
ese për të mbushur këtë varg.
Dhe në qoftë se kompjuteri shkon jashtë kujtesës, del se ne jemi duke shkuar
për të marrë përsëri këtë vlerë të veçantë të quajtur null.
Kështu që tani për tani, vetëm e di se nuk është kjo vlerë të veçantë të quajtur null që
do të na lejojë që të kontrolloni, kur ne jemi jashtë kujtesës, ndër të tjera.
>> Por në qoftë se unë i hapur deri tani string2, vëreni një ndryshim këtu.
Vini re një ndryshim këtu me string2.
Me string2, kjo për lak është pak më ndryshe.
Më lejoni të fshini nulls kështu që ne mund të flasim për ato të një tjetër kohë.
Por ajo që është ndryshe rreth lak për këtë herë?
Dhe unë mund të shkoni përsëri në shembullin e mëparshëm.
Pra, kjo është versioni dy.
Ky është versioni njëri.
Një, dy, një dy.
Pra, thirrja është strlen ku?
Kjo është në pjesën e parë të për lak.
Çdo mendime se pse unë jam duke bërë këtë?
Po.
[E padëgjueshme]
DAVID J. Malan: Pra ne nuk e quajmë funksion çdo herë të vetme.
Saktësisht.
Kujtojnë nga për sythe se ata janë super të thjeshtë një herë ju lloj i
kuptojnë se kjo është initialization, të
kusht, dhe freskimin.
Problemi është se gjendja ndodh në çdo
përsëritje e lakut.
Dhe kështu në këtë shembull këtu, çfarë është e keqe për faktin
se kjo është gjendja ime?
Ju jeni duke bërë thirrje strlen përsëri dhe përsëri dhe përsëri.
Por një herë unë kam shtypur në David, gjatësia e vargut që është pesë.
Dhe kjo nuk do të ndryshojë në çdo ripërsëritje e lak, sepse
string është ende D-A-V-I-D. Pra, kjo është një aluzion në atë që do të bëhet një
Ideja gjithnjë e më e rëndësishme e njohur si një vendim të projektimit, ku - thjesht nuk
të bëjë kompjuteri të bëjë punën e panevojshme.
>> Tani vetëm si një vrojtim vjedhës i pset 2, pset 2 në edicionin standarde është
shkuar për të sfiduar ju për të zbatuar në fakt disa numrin e shifra, disa
Numri i algoritme encryption, kështu që ju mund të dyja encrypt dhe decrypt
Mesazhet sekrete, më shumë si një Ralphie nuk deshifrohet.
Në edicionin e pset hacker 2, ne jemi duke shkuar për të shkuar pak më tej.
Ne jemi duke shkuar për të dorëzuar një skedar ju nga një sistem kompjuterik aktual që përmban një
bandë tërësi e përdoruesve dhe fjalëkalimet aktuale koduara, dhe sfidë
për botim hacker do të jetë për të goditur ato fjalëkalime dhe Figura
se çfarë Kriptografia ose ajo fshehtë është përdorur që në fakt
gjenerojë fjalëkalime ato.
Dhe ne jemi duke shkuar për të bërë këtë duke përdorur një funksion të ri këtu e C që unë do të jap
ju vetëm një demo, i njohur si command-line argumente.
>> Pra, ajo rezulton, si disa prej jush mund të keni parë në seksionin ose në tekstet shkollore,
kryesor nuk ka gjithmonë duhet të jetë i pavlefshëm në kllapa.
Ajo rezulton se kryesore mund të shkruhet edhe si ky, me dy argumente,
argc dhe argv, ku argc është numri i fjalëve që ju shkruani pas
emri i programit në linjë tuaj komandës.
Dhe argv është fjalë aktuale.
Dhe si kllapa katrore atje sugjerojnë, argv është me sa duket një grup.
Ajo do të jetë një varg pas një varg pas një varg në kujtesë.
Kështu që ajo që ne jemi duke shkuar të jetë në gjendje për të bërë, duke filluar me pset 2,
diçka si kjo.
Nëse unë bëjë argv1, e cila është një shembull ne do të kthehen në të hënën, dhe drejtuar
ajo, vini re se kjo nuk duket për të bërë ende asgjë.
Ajo vetëm printon emrin e vet.
Por në qoftë se unë them lamtumirë klasa, njoftim se ky program duket iterates
mbi çdo fjalë që u typed në ftim.
Dhe mjetet me të cilat ne do të fitojnë qasje në fjalët që përdoruesi ka
shtypur në të shpejtë është duke ndryshuar kryesor, duke filluar nga kjo fundjavë, nga int
kryesor (i pavlefshëm) për int main (argc, argv).
Dhe kështu do të jetë i lindur argumente command line.
Dhe një herë ju merrni të vërtetë të sofistikuar në këtë, ju do të jetë në gjendje për të shkruar
Programet me të vërtetë trippy, të tilla si ky këtu, që shkon më lart dhe përtej
disa nga funksionet që kemi bërë deri tani, por të gjitha mjaft të fuqishme.
>> Pra, ne do të largohen këtë me këtë në ekran.
Dhe ne do të shohim ju në hënën.