[Daqq ta mużika] DAVID J. Malan: Kull dritt. Dan huwa CS50, u dan hija t-tmiem tal-Ġimgħa 2. Allura llum, aħna qed tmur li tkompli ħarsa tagħna lejn kif aħna nirrappreżentaw affarijiet taħtha l-hood-- qegħdin nitbiegħdu minn numri bħall interi u floating valuri tal-punti u jiffoka fuq kordi u programmi fl-aħħarnett aktar interessanti. Iżda aħna ser ukoll tagħti ħarsa lejn Koppja ta 'problems-- speċifiċi għall-domain l-ewwel wieħed minnhom se jkun jinvolvi kriptografija, l-arti ta 'scrambling informazzjoni, fejn inti ara hawn fuq hawn hija stampa ta 'Radio Orfni Annie ċirku decoder sigriet mill-imgħoddi. 

Dan huwa attwalment forma ħafna primitive u l-forma favur it-tfal ta 'cryptopgraphy li biha dan iċ-ċirku għandu żewġ disks-- ġewwa wieħed u barra wieħed. U billi ddawwar wieħed minn dawk, inti tista ' essenzjalment linja up ittri bħal A permezz Z ma 'ittri oħra bħal B permezz A. Fi kliem ieħor, inti tista litteralment dawwar l-alfabett, b'hekk ġejjin bi immappjar minn ittri lill ittri b'tali mod li, jekk inti riedu li jibgħat messaġġ sigriet li xi ħadd bħal Annie, inti tista 'tikteb isfel messaġġ tiegħek u mbagħad dawwar l-ittri, li biha, jekk inti tfisser li jgħidu "A," inti minflok jgħidu "B," inti jfissirx li jgħidu "B," inti minflok jgħidu "C" - jew xi ħaġa ftit aktar għaqlija minn that-- u mbagħad, finalment, sakemm Annie għandha dan decoder ring, hi tista jiddekowdja-messaġġ. Issa, inti tista 'tfakkar, fil-fatt, li din il- kien użat fil-film famuż ħafna li jilgħab ad nauseum matul l-istaġun tal-Milied. Ejja tagħti ħarsa hawn. RALPHIE PARKER: "Be hija magħrufa kollha fil-qosor li Ralph Parker huwa b'dan maħtur membru ta 'Little Orfni Annie Secret Ċirku u huwa intitolat li l- unuri u l-benefiċċji li jseħħu għalihom. " 

RALPHIE PARKER (narrating): Iffirmat Little Orfni Annie. Kontrofirmata, Pierre Andre! Fl-linka. Honors u l-benefiċċji, diġà fl-età ta 'disa. 

[Daqq ta mużika] 

[Chatter RADIO] RALPHIE PARKER: Come fuq. Ejja nikseb fuq magħha. I m'għandhomx bżonn dak kollu li jazz dwar kuntrabandisti u pirati. Announcer RADJU: Isma għada lejl għall-avventura jikkonkludi ta 'L-pirata Vapur Iswed. Issa, wasal iż-żmien għal tal Annie Messaġġ Secret għalik membri tal-Ċirku Sigriet. Ftakar gidjien, biss il-membri ta Secret Circle Annie jistgħu jiddekowdja-messaġġ sigriet Annie. 

Ftakar, Annie jiddependi fuq int. Set labar tiegħek lil B-2. Hawn hu l-message-- 12, 11, 2-- RALPHIE PARKER (narrating): I am fl-ewwel laqgħa sigrieta tiegħi. Announcer RADJU: --25, 14, 11, 18, 16-- RALPHIE PARKER (narrating): Oh, Pierre kien fil tonight vuċi kbira. I tista 'tgħid li dak il-tonight messaġġ kien verament importanti. 

Announcer RADJU: --3, 25. C'est messaġġ mill Annie ruħha. Ftakar, ma tgħid xi ħadd. 

[Panting] RALPHIE PARKER (narrating): Disgħin sekondi wara, jien fil-kamra biss fil- dar fejn tifel ta 'disa' jista ipoġġu fil-privatezza u jiddekowdja. Ah. "B." 

[Chuckles] 

RALPHIE PARKER (narrating): I marru għall-ieħor. "E." L-ewwel kelma hija "jkun." Iva! Hija kien ġejjin faċli issa. "U." 

[Chuckles] 

Randy PARKER: Aw, come fuq, Ralphie. I gotta go! 

RALPHIE PARKER: I ser tkun dritt isfel, Ma. Whiz GEE. "T." "O." "Kun żgur għal. "" Kun żgur li "dak? Liema kienet Little Orphan Annie nipprova ngħid? "Kun żgur li" dak? OMM: Ralphie, Randy s'est li jmorru. Gaat jekk jogħġbok toħroġ? 

RALPHIE PARKER: Kull dritt, omm! I ser tkun out dritt! RALPHIE PARKER (narrating): I kien jkollna aktar mill-qrib issa. It-tensjoni kien terribbli. Liema kienet? Il-destin tal-pjaneta jista hang fil-bilanċ. 

OMM: Ralphie, li Randy ltqajna biex tmur! 

RALPHIE PARKER: I ser tkun dritt out, għall biki out loud! RALPHIE PARKER (Narrating): Kważi hemm! Swaba tiegħi taru! Mind tiegħi kien nassa azzar. Kull pori ivvibrat. Kien kważi ċar! Iva! Iva! Iva! Iva! 

RALPHIE PARKER: "Kun żgur li tixrob Ovaltine tiegħek. " Ovaltine? A kummerċjali crummy? 

[Daqq ta mużika] 

RALPHIE PARKER: Iben ta 'kelba. 

[Laughing] 

DAVID J. Malan: Allura dan allura huwa glimpse lejn dak kriptografija jista 'jkun għal this-- a tixrob minn imgħoddi. Allura tħabbira malajr. Jekk inti liberu dan Ġimgħa fl 1:15 u kieku simili li jingħaqdu magħna għal CS50 lunch, ras għal dan il-URL hawn. Ewwel li jidħlu, l-ewwel iservu bħas-soltu. Iżda maż-żmien, aħna ser tagħmel żgur li aktar kulmin tixtieq tipparteċipa tista 'tfassal skeda għaqli. 

Allura kordi. Għandna Zamyla-- min inti issa stajt sodisfatti bl-aktar probabbli fil Problema Set 1-- li isem huwa spelt b'hekk. U ejja ngħidu li inti ittajpjat isem tagħha fi programm tal-kompjuter li l- jużaw xi ħaġa bħal getString. Sabiex tkun irkuprata dawk keystrokes, kif do we go dwar jirrappreżentaw string, kelma, paragrafu, jew ittri multipli bħal dawn hawn? 

Aħna tkellimna aħħar darba dwar interi u problemi li jinqalgħu bl overflow numru sħiħ u floating valuri tal-punti u problemi li jinqalgħu fi ħdan preċiżjoni. Bil kordi, aħna mill-inqas għandhom ftit aktar flessibilità minħabba strings-- biss fil-world-- reali jista 'jkun ta' tul pretty arbitrarja. Pretty qasir, pretty twil. Iżda anke dakinhar, aħna qed tmur biex issib li l-kompjuters tista 'xi kultant jispiċċaw tal-memorja u lanqas taħżen string kbir biżżejjed. 

Iżda għal issa, ejja tibda Ħares string bħala xi ħaġa fil dawn il-kaxxi hawn. Allura sitt kaxxi bħal dawn, li kull waħda minnhom jirrappreżenta karattru jew "char." Allura tfakkar li "char" - c-h-a-r-- huwa wieħed mit-tipi ta 'dejta mibnija fil fil C. U x'hemm sbieħ hija li inti tista 'tuża dik it-tip ta bħala blokk bini, biċċa puzzle, jekk inti se, biex jiffurmaw tip akbar ta 'data li aħna ser tkompli li jsejjaħ "string." 

Issa, x'hemm utli dwar il-ħsieb dwar affarijiet simili kordi b'dan il-mod? Ukoll, jirriżulta li nistgħu attwalment lieva din l-istruttura li attwalment aċċess karattri individwali b'mod pjuttost sempliċi. Jien ser jimxi 'l quddiem u joħolqu fajl imsejjaħ "stringzero.c," imma int tista 'sejħa hija tkun xi tkun tixtieq. U fuq il-websajt tal-kors hija diġà dan l-eżempju bil-quddiem, sabiex inti m'għandekx bżonn li tip kollox barra. 

U jien se jmorru 'l quddiem u l-ewwel tagħmel bla effett prinċipali int. U fi ftit jiem, aħna ser tibda tease apparti dak null hija hawnhekk, għaliex huwa int li jmiss għal main, u ibqa 'sejjer hekk. Iżda għal issa, ejja tkompli li kopja paste dan. 

Jien ser tiddikjara string imsejjaħ i. U jien ser jirritornaw minn GetString x'ikun it-tipi utent fil. Dan se jkun sempliċi programm, l-ebda struzzjonijiet, Jien biss ser bl-addoċċ jistennew li l-utent ikun jaf x'għandhom jagħmlu biex jżommha sempliċi. 

U issa jien se jkollhom għall-loop. U ġewwa tal għat loop tiegħi jien ser ikollhom int i gets żero. U i huwa, għal darb'oħra, biss konvenzjoni, varjabbli indiċi għall-għadd, imma I tista 'sejħa dan ikun x'ikun nixtieq. Jien ser tagħmel i huwa inqas than-- tajjeb Isem Zamyla huwa sitt ittri twil. So I m ser hard kodiċi li hemm għal issa. 

U mbagħad I ++. U issa ġewwa minn dawn kaboċċi braces Jien ser tagħmel printf, u nixtieq li jistampaw wieħed karattru fi żmien. So jien ser tuża% C għal forsi l-ewwel darba. U mbagħad I tixtieq li jistampaw kull karattru fuq linja tagħha stess. So jien ser tpoġġi ftit backslash n hemmhekk. Kwotazzjoni Agħlaq. 

U issa I trid tagħmel xi ħaġa hawn. Irrid li jistampa l- ittra speċifika fis-sekwenza, i, kif jien mtennija minn żero fuq sa sitta. Fi kliem ieħor, I jridu jistampaw il-karattru i'th ta s. Issa kif nista 'nagħmel dan? 

Ukoll ħafna bħall-kaxxi fil din ir-rappreżentanza hawn, tip ta ', conjure l-kunċett ta' boxing ittri, inti tista 'bl-istess mod tagħmel dan sintattikament fis-C billi sempliċiment jispeċifikaw, Irrid li jistampa l i i'th karattru. Jużaw il-parentesi kwadri fuq it-tastiera tal-kompjuter tiegħek li fuq tastiera Istati Uniti huma ġeneralment iktar ċavetta ritorn tiegħek. 

Allura dan huwa pjuttost mhux dritt għadhom, kif inti jista 'jkollok ndunat. Imma jien ser tip ta ' addoċċ nimxu 'l quddiem hawnhekk. U jien ser tagħmel jagħmlu string 0. Iżda qabel I tagħmel dan, ejja ara jekk irridu ma tistax tantiċipa xi żbalji komuni. Huwa dan se jikkompilaw? Le, jien nieqsa mazz sħiħ ta 'affarijiet. Libreriji I smajt. 

Allura li header files tista I tixtieq iżżid hawnhekk? Yeah. 

UDJENZA: Għandek bżonn I standard / O [inaudible] 

DAVID J. Malan: Eċċellenti. So I bżonn standard I / O. Għal dak li iskop do Irrid I standard / O? Għal printf. Allura jinkludu stdio.h. U inti wkoll tipproponi li I jinkludu il-librerija CS50 għal liema raġuni? Biex ikollhom kordi. Allura aħna ser tara dak Librerija CS50 hija tagħmel biex joħolqu dan il-kunċett ta 'sekwenza. Iżda għal issa, inti tista 'biss jaħsbu li bħala tip ta 'data attwali. 

Allura li jidher li jkun ftit mnaddfa. U issa jien se jimxi 'l quddiem u tabilħaqq ma jagħmlu string 0. Ikkumpilat. Allura li tajjeb. So ./string0 let me zoom fl sabiex inkunu nistgħu tara aktar mill-qrib x'inhu jiġri. Ikteb. Z-A-M-Y-L-A jidħol. U konna stampata isem Zamyla tal. 

Allura dak pjuttost tajba. Allura issa ejja imorru quddiem u run dan il-programm mill-ġdid, u t-tip out isem sħiħ Daven tal. Surprise, sorpriża. Ikteb. Hmm. Aħna ma stampat tal Daven ewwel isem sħiħ korrett. Issa dan għandu jkun ovvju fil retrospettivament minħabba dak, tip ta ', id-deċiżjoni disinn stupid? 

Yeah, I iebsa kodifikati l- sitta ġewwa ta tiegħi għal loop. Issa I did li biss minħabba Kont naf isem Zamyla tal kienet se tkun sitt ittri. Iżda żgur dan mhuwiex soluzzjoni ġenerali. Għalhekk jirriżulta li nistgħu dinamikament insemmu l-tul ta 'sekwenza billi ssejjaħ il-funzjoni msejħa strlen. 

Għal darb'oħra, deliberatament konċiż jismu biss li jagħmilha aktar konvenjenti għat-tip. Imma dak li sinonimu ma ' jkollna l-tul ta 'sekwenza. Jien se jmorru lura fis terminal tiegħi tieqa u jerġa 'tmexxi l-kumpilatur. Iżda huwa yelling fil lili. Impliċitament li tiddikjara funzjoni librerija strlen ma tip mhux iffirmat int const-- Jien mitlufa. Kompletament. 

Allura, speċjalment fir tiegħek għajnejn tibda glaze fuq ma messaġġi ta 'żball bħal dan, fokus onestament fuq l-ewwel ftit kliem. Nafu l-problema hija fil- linja 8, kif indikat hawn. U huwa fil string-0.c. Impliċitament li tiddikjara funzjoni librerija strlen. Allura li huwa ġeneralment ser jkun mudell ta 'messaġġi ta' żball. Impliċitament tiddikjara xi ħaġa. 

Għalhekk fil-qosor, dak li jiena deher li għamlu fir-rigward għal-linja 8, hawnhekk. Liema jista 'jkun is-soluzzjoni jkun saħansitra jekk inti stajt qatt jintużaw strlen yourself? 

UDJENZA: Parti ta 'librerija differenti? DAVID J. Malan: Parti ta 'librerija differenti. Għalhekk huwa ddikjarat, biex ngħidu hekk. Huwa msemmi fl xi fajl għajr stdio.h u CS50.h. Issa fejn m'huwa ddefinit? Biex inkun onest, inti jew għandek biss jafu dan off-quċċata tar-ras tiegħek, jew inti Google dan u nsib. Jew jafu dan, stajt fetħet fil-CS50 appliance-programm terminal, li huwa biss il-big, screen full verżjoni ta ' x'hemm fil-qiegħ ta 'tieqa gedit tal. 

U jirriżulta li hemm kmand bl-istess mod konċiż, imsejħa bniedem għall-manwali, fejn jekk inti tip l-isem ta 'funzjoni u hit Ikteb, int ser tingħata lura pjuttost dokumentazzjoni arcane. Huwa biss it-test li ġeneralment jistenna ftit xi ħaġa bħal din. Huwa ftit kbira ewwel daqqa t'għajn. Imma franchement jien ser let għajnejn tiegħi glaze fuq u jiffoka biss fuq il-parti I kura dwar għall-mument. 

Liema huwa dan. Liema jistenna strutturalment simili xi ħaġa jien familjari magħhom. Tabilħaqq il-paġna bniedem, hekk biex jitkellmu, se jgħidlek fil dak header fajl funzjoni bħal strlen huwa definit. So jien se jmorru lura issa biex gedit. U jien ser jimxi 'l quddiem u żid fil hawn # Jinkludu u tiffranka l-fajl. 

Jien ser ċar l-iskrin ma Kontroll L Jekk inti ħadthom ġiet mintix. U jien ser make mill-ġdid run string.0, jikkompila dan iż-żmien. ./string.0 Zamyla. Dan deher li jaħdmu Let me go quddiem u terġa 'ssir bl Davenport. Ikteb. U li, wisq, deher li jaħdmu. 

Allura nistgħu nagħmlu ftit aħjar minn dan, għalkemm, nistgħu tibda affarijiet puliti up biss ftit. U jien ser fil-fatt jintroduċu ħaġa waħda oħra issa. Jien ser jimxi 'l quddiem u Ħlief dan fil-fajl differenti. U jien ser sejħa dan il-fajl string1.c biss li tkun konsistenti mal-kodiċi inti ser tkun tista 'ssib online. 

U ejja tiffoka fuq eżattament l-istess kodiċi. Jirriżulta li stajt Kien tip ta 'teħid għall mogħtija l-fatt li laptop tiegħi, u min-naħa, l-appliance CS50 għandha ħafna ta 'memorja, lott ta' RAM, lott ta 'bytes ta' spazju li nista jista 'jaħżen kordi. 

Iżda r-realtà jekk I ittajpjat twil biżżejjed, u biżżejjed keystrokes, I tista 'fil-tip teorija fl karattri aktar minn kompjuter tiegħi fiżikament memorja għal. U dan huwa problematiku. Ferm simili int tista 'biss għadd tant għoli, fit-teorija, inti tista 'biss CRAM tant karattri fis RAM kompjuter tiegħek jew Random Aċċess Memorja. 

So I kien aħjar jantiċipaw din il-problema, anke għalkemm jista 'jkun rari każ kantuniera, biex ngħidu hekk. Ma jiġri li spiss, jista 'jiġri. U jekk dan jiġri u I ma tantiċipa u l-programm għal dan, programm tiegħi tista 'tagħmel li jaf dak. Jiffriżaw, hang, reboot, ikun x'ikun. Xi ħaġa antiċipat jista 'jiġri. 

Allura dak li jien ser tagħmel issa, issa verament, huwa qabel I qatt addoċċ jużaw varjabbli bħall-s dik ġiet assenjata l-valur tar-ritorn ta ' xi funzjoni oħra bħall getstring, Jien ser tagħmel żgur li l-valur tagħha huwa validu. So I biss jafu minn wara li taqra Dokumentazzjoni CS50 għall getstring, li finalment aħna ser punt inti fil, li getstring prospetti simbolu speċjali imsejħa NULL, N-U-L-L fil kollha tappijiet, jekk xi ħaġa tmur ħażin. 

Allura normalment, dan jirritorna string. Iżda inkella jekk dan jirritorna N-U-L-L-- aħna ser eventwalment tara dak li verament means-- li biss mezzi xi ħaġa ħażina ġara. Issa dan ifisser, ferm simili fl Scratch, I jista 'jivverifika kundizzjoni hawn fis-C, jekk i ma NULL ugwali. Mela jekk inti stajt ma bbenefikawx dan qabel, dan ifisser biss ma ugwali. 

Allura huwa l-oppost ta ' ugwali ugwali, li, Recall, hija differenti minn wieħed ugwali, li hija assenjazzjoni. Mela jekk i ma ugwali NULL, biss allura do Irrid li tesegwixxi dawn il-linji ta 'kodiċi. Allura fi kliem ieħor, qabel I adsa bl-addoċċ u tibda mtennija fuq i, u trattat bħallikieku hija sekwenza ta ' karattri, jien ser ewwel jiċċekkjaw, stenna minuta, hija s definittivament mhux daqs dan il-valur speċjali, NULL? 

Għaliex jekk huwa, affarijiet ħżiena jista 'jiġri. U għal issa, jassumi affarijiet li ħżiena jiġri tfisser crashes programm tiegħek, u inti ma tistax neċessarjament jirkupraw. Allura franchement, jidher uglier. Huwa tip ta 'konfużjoni issa li t'għajn lejn. Iżda dan se jsir aktar familjari qabel twil. 

Imma jien ser tipproponi issa titjib ieħor. C'est titjib għall-korrettezza. Programm My issa huwa aktar korrett, għaliex fil-każ rari li l-memorja mhux biżżejjed teżisti, I se jimmaniġġjaw dan, u jien ser biss tagħmel xejn. I-inqas mhux se tiġrifa. 

Imma ejja do verżjoni finali hawn. U fajl imsejjaħ string2.c. Jien ser paste li istess kodiċi għall ftit mument, u jien ser tenfasizza dan linja, 11, hawn, għal ftit mument. Issa r-realtà hija li l-kompilaturi intelliġenti bħal Clang tista 'tiffissa dan għalina wara l-kwinti mingħajr tagħna qatt ma jkunu jafu. Imma ejja jaħsbu dwar dan fundamentalment bħala disinn problematika. 

Din il-linja tal-kodiċi huwa, ovvjament, qal, initialize xi varjabbli i għal 0. C'est pjuttost sempliċi. U dak darb'oħra huwa dan dikjarazzjoni, hawn, i ++, tagħmel? Imxejna dehru qabel, iżda aħna ma verament jitkellmu dwar dan. 

UDJENZA: inkrementazzjoni i. 

DAVID J. Malan: i inkrementazzjoni. Allura fuq kull iterazzjoni permezz dan loop, kull ċiklu, int inkrementazzjoni i minn wieħed. Allura jiġrilha akbar, u akbar, u akbar sakemm il-loop itemm. Kif ma jtemm? Ukoll hemm dan nofs kundizzjoni li aħna ħadthom użati qabel. You stajt tidher u walkthroughs fil-P sett. 

Imma dak li huwa dan qal? Jagħmlu l-segwenti loop hekk Sakemm i huwa inqas minn dak? UDJENZA: It-tul tas-sekwenza. DAVID J. Malan: Il- tul tas-sekwenza. Għalhekk jittraduċi pretty nadif għall-Ingliż f'dan is-sens. Issa l-problema hija li kull darba I jtenni permezz ta 'dan loop fit-teorija, Jien tistaqsi din il-kwistjoni. Huwa i inqas mit-tul sensiela ta 'i? Huwa i inqas mit-tul sensiela ta 'i? 

Issa qed i jinbidlu fuq kull iterazzjoni? Huwa. Minħabba l-++. Allura kull iterazzjoni i huwa jkollna akbar. Iżda huwa s jkollna akbar, jew iżgħar, jew li qed jinbidlu fil-livelli kollha? No Allura f'termini ta 'disinn, wieħed mill-assi flimkien li aħna tipprova tevalwa kodiċi fil-klassi, dan iħoss tip ta 'stupid. 

Bħalek huma litteralment, fuq kull iterazzjoni ta 'dan loop titlob lill- istess kwistjoni kkritikat mill-ġdid, u għal darb'oħra, u għal darb'oħra, u litteralment huwa qatt se jibdlu. Mill-inqas jekk jien ma jmissu iu jippruvaw jibdlu l-kontenut ta 'i. So I tista 'tagħmel ftit aħjar minn dan. 

U dak li jien ser tagħmel hu li ma jkunx tiddikjara wieħed biss varjabbli i, iżda t-tieni varjabbli I ser arbitrarju, iżda konvenzjonalment, sejħa hija n. Jassenja n ugwali għall- tul sensiela ta 's. U mbagħad minn hawn, jien ser tagħmel ottimizzazzjoni ftit għaqlija, hekk biex jitkellmu, li fl-aħħar tal-ġurnata huwa aktar korrett jew inqas korrett minn qabel. Iżda huwa disinn aħjar. Fil-fatt li jien jużaw inqas ħin, inqas ċikli CPU, hekk biex jitkellmu, li jwieġbu l-istess kwistjoni, iżda biss ladarba. 

Kwalunkwe mistoqsijiet dwar dak ġenerali prinċipju tat-titjib, jgħidu, l-effiċjenza ta 'programm? Yeah? UDJENZA: Għaliex għandek uża l-[inaudible]? DAVID J. Malan: Tajba kwistjoni. Allura għaliex do we tpoġġi l-++ fuq it-tmiem ta ' i minflok il-bidu tal-i? F'dan il-każ, hija għandha ebda impatt funzjonali. U b'mod ġenerali, I-tendenza li jużaw l-operatur postfix b'tali mod li huwa ftit aktar ċara bħala li meta l-operazzjoni qed jiġri. 

Għal dawk familjari, hemm ieħor dikjarazzjonijiet li biha inti tista 'tagħmel ++ i. Dawn huma funzjonalment ekwivalenti f'dan il-każ għaliex hemm xejn madwar dik incrementation. Iżda int tista 'toħroġ bi każijiet u linji ta 'kodiċi li fihom li jagħmel differenza. Allura ġeneralment, aħna ma anki jitkellmu dwar dan wieħed. Minħabba franchement, jagħmel tiegħek kodiċi sexier, u tip ta 'slicker, u inqas karattri. Iżda r-realtà hija li huwa ħafna aktar diffiċli, I think, anke għalija biex nagħlaq f'moħħi madwaru kultant, l-ordni ta 'operazzjonijiet. Allura bħala twarrib, jekk inti verament ma bħal din, anke jekk din hija tip ta 'sexy tfittex, inti tista 'ukoll tagħmel i + = 1, li hija l-verżjoni uglier tal- istess idea għal incrementation postfix. 

Jien ngħid dan u int għandhom jagħmlu gost ta 'dan, iżda inti se jidħlu biex tara kodiċi kif xi ħaġa sabiħa qabel twil. 

[Rires] 

DAVID J. Malan: Right? Yeah. Mistoqsija fin-nofs. 

UDJENZA: Għandek bżonn li jgħidu int n? DAVID J. Malan: You do m'għandhomx bżonn li jgħidu int n. Allura għaliex aħna diġà qal int, inti m'għandekx bżonn li ngħid mill-ġdid. Il-qabda hija li n għandu jkun l-istess tip ta 'data kif i. Allura li jinsab biss konvenjenza hawn. Yeah. 

UDJENZA: Tista jmorru fuq il- karattru print s bracket i mill-ġdid? DAVID J. Malan: Assolutament. Allura% c, recall mill-aħħar time, huwa biss placeholder. Dan ifisser tpoġġi char hawn. backslash n, naturalment, biss mezzi tpoġġi pawża linja hawn. Hekk li biss tħalli, issa, din il-biċċa ta 'sintassi ġdida. U dan huwa litteralment qal, grab l-string imsejjaħ iu mur jiksbu tagħha karattru i'th, biex ngħidu hekk. 

And I iżommu qal karattru i'th għax fuq kull iterazzjoni ta 'dan loop huwa bħallikieku aħna qed istampar out, l-ewwel parentesi s 0, bħala programmer jista 'jgħid. Imbagħad i bracket 1, allura s bracket 2, allura 3, imbagħad 4. Iżda naturalment huwa varjabbli, so I biss jesprimu bl i. 

Key, għalkemm, hi li tirrealizza, speċjalment jekk inti stajt ma ġew acclimating għal din id-dinja ta 'programmazzjoni, fejn aħna kollha jidhru li jgħoddu minn żero, gotta jibdew jingħaddu minn żero issa. Minħabba kordi, l-ewwel karattru, l- z fl Zamyla huwa għall-aħjar jew għall-agħar tmur tgħix fil-numru lokazzjoni żero. 

Kull dritt, so let me iġġib us lura hawn biex Zamyla u ara x'inhu verament għaddej fuq taħt il-barnuża. Allura hemm dan il-kunċett ta 'ikkastjar tip. Inti jista 'jkollok attwalment lagħbu dan diġà, forsi għall-Hacker edizzjoni ta 'P sett wieħed. Iżda ikkastjar tip biss tirreferi għall- ħila fis-C u f'xi lingwi oħrajn li jikkonvertu tip ta 'data wieħed għall-ieħor. 

Issa kif tista naraw dan pretty jinftiehem? Allura dan, recall, huwa l-bidu tal-alfabett Ingliż. U l-kuntest, ifakkar, minn bħal ġimgħa ilu huwa ASCII. Il-Kodiċi American Standard għall-Informazzjoni Interchange. Liema huwa biss mod verament twila ta 'tgħid immappjar mill-ittri għal numri, u minn numri għall-ittri. 

Allura A permezz M hawn, dot dot dot, linji up ma ', irtirar, in-numru deċimali 65 fuq up. U aħna ma nitkellmu dwar dan b'mod espliċitu, imma żgur hemm simili Numri għall-ittri lowercase. U fil-fatt, hemm. Id-dinja iddeċieda xi snin ilu li ftit a, zghar a, se tkun 97. U ftit b huwa għaddej li tkun 98, u ibqa 'sejjer hekk. 

U għal kwalunkwe ewlenin oħra fuq tastiera tiegħek, hemm ser tkun mudell simili ta 'bits. Jew ekwivalenti, numru deċimali. Għalhekk il-kwistjoni fil-idejn, allura, huwa kif nistgħu attwalment tara dan minn taħt il-barnuża? So jien se jmorru fuq biex gedit mill-ġdid. U minflok tip dan wieħed mill-bidunett, Jien ser jimxi 'l quddiem u biss tiftaħ up xi ħaġa mill-kodiċi tal-lum sejjaħ ASCII żero. 

U ASCII żero tidher bħal dan. Mela ejja wrap imħuħ tagħna madwar dan. Allura l-ewwel, stajt kkummentaw il-kodiċi, li huwa sabiħ. Għaliex dan huwa litteralment javżak me dak li tistenna, juru mapping għall-ittri uppercase. Issa I do not pjuttost taf liema I tfisser li, hekk ejja jiddeduċu. 

Bl-Ingliż, forsi kemmxejn techie Ingliż, dak ma linja 18 jidhru li tkun qiegħda tagħmel għalina? Just linja 18. X'hemm dan jinduċu? X'hemm Huwa ser kick off hawn? 

UDJENZA: A loop. 

DAVID J. Malan: A loop. U kif ħafna drabi huwa li ser jtenni? UDJENZA: [INTERPOSING VOICES] sitt darbiet. DAVID J. Malan: Mhux sitt darbiet. UDJENZA: 26 darba. DAVID J. Malan: 26 darba. Yeah, sorry. 26 darba. Għaliex? Ukoll, huwa ftit stramb, imma Stajt beda meta tgħodd minn 65. Liema hija stramb, iżda mhux ħażin. Huwa mhux ħażin kull jiġifieri. U jien tagħmel dan biss minħabba li, għal dan l-eżempju, Jien tip ta 'antiċipazzjoni dak il-kapital A kien 65. Issa dan mhuwiex l-aktar eleganti mod biex isir dan, it-tip ta 'kodiċi hard Valuri esoteric li l-ebda wieħed huwa qatt mistennija li tiftakar. 

Iżda għal issa, avviż li jien tagħmel dan up permezz 65 plus 26. Minħabba apparentement I ma saħansitra jridu biex jagħmlu l-aritmetika in my head. So I ser let l-kumpilatur tagħmel dan. Iżda mbagħad fuq kull linja, kull iterazzjoni tal-linja, jien inkrementazzjoni i. 

Allura issa dan jistenna ftit cryptic. Iżda aħna għandu jkollhom il-bini bażika blokki li biex jifhmu dan. % C huwa biss placeholder għal char. % I huwa placeholder għal int. U jirriżulta li bl-użu din sintassi ġdida, dan parenthetical, hekk biex jitkellmu, so a tip ta 'dejta ġewwa parentesi, I tista 'seħħ l-kumpilatur biex jikkura i ma huwa integer, iżda bħala char. 

U b'hekk juru lili il-karattru ekwivalenti ta 'dak in-numru. Issa stabbiliti hawn, dan il-kodiċi huwa pretty ħafna identiċi. I biss riedu jagħmlu super espliċitu l-fatt li jien jibdew fil 97, li huwa zghar a. Fuq sa permezz 26 ittri aktar. U jien doing-- darb'oħra, ikkastjar i, biex ngħidu hekk. Jew Tip I ikkastjar, biex ngħidu hekk. 

Minn int għal char. Allura l-riżultat aħħari se tkun, franchement, informazzjoni aħna diġà jafu. Jien ser jagħmlu -ascii 0 ma dot-- dot c. Avviż, inti probabilment għamlet din żball bħala I biss għamlet aċċidentalment. Make-ascii 0. Issa jien ser tagħmel ./ascii-0. I ser zoom fi, u sfortunatament li għaddej biex tiskrollja barra l-iskrin. Iżda aħna naraw chart kollu fejn a mapep sa 97, mapep B sa 98, u jekk aħna iscroll aktar A, naturalment, mapep sa 65. Allura dan huwa biss biex jgħidu li dak li aħna kont qed jippriedka, hemm din l-ekwivalenza, huwa fil-fatt il-każ fir-realtà. Allura modifika ta 'malajr ta' din. Let me jiftħu ascii-1.c. U Avviż dan għaqlija, sort ta ', kjarifika ta' dan. Dan huwa ASCII-1.c, u Avviż dan ħaġa crazy. 

U dan verament gets il-qalb ta 'dak kompjuters qed jagħmlu. Anki jekk aħna bnedmin kieku Ma jgħoddux f'termini ta 'letters-- I ma tibda taħseb, id-dritt ta 'imbagħad b, u jużaw dawk li jgħoddu oġġetti fiżiċi. Inti tista 'ċertament ngħid li nixtieq li initialize xi varjabbli imsejħa c-- imma I setgħet sejjaħ dan anything-- hekk c huwa initialized għall-kapital A. 

Minħabba fl-aħħar tal-ġurnata, il-kompjuter ma care dak li qed ħażna, biss jimpurtaha kif tixtieq biex tippreżenta dik l-informazzjoni. Kif tridu l-kompjuter biex tinterpreta dak il-mudell ta 'bits? Allura dan mhux xi ħaġa I ġeneralment jirrakkomandaw tagħmel. Huwa tassew biss eżempju biex twassal li inti tista 'assolutament initialize integer għal char. Minħabba taħtha l- barnuża ta 'char, naturalment, huwa biss numru 0-255. 

Allura inti tista 'ċertament poġġih ġewwa ta 'int. U dak li din ukoll juri huwa li aħna jistgħu jikkonvertu minn waħda tip għall-ieħor, hawnhekk, finalment istampar l-istess ħaġa. U fil-fatt, dan I se jiffissaw online-- kien maħsub biex ngħid dan, għal darb'oħra, here. Let me tnaddaf dan up online, u aħna ser tara fi walkthrough online kif meħtieġ, dak li kien maħsub hemmhekk. 

OK. Allura aħħar eżempju issa jinvolvu 'A u B tal u allura aħna ser jieħdu l-affarijiet up a talja. Allura ma 'u tan-bu tal Ċ fil-kapitalizzazzjoni u l-ekwivalenza tiegħu, ejja tagħti ħarsa lejn dan l-eżempju, hawn. Eżempju ieħor kodiċi. Aħna ser tiftaħ waħda li diġà sar, hekk aħna ma għandekx tip li kollha barra mill-bidu. 

U avviż fil antiċipazzjoni aħna qed jużaw header multiplu fajls, fosthom hija ħabib ġdid tagħna, string.h. Issa dan jistenna, fl-ewwel t'għajn, ftit cryptic. Imma ejja ara jekk ma nkunux nistgħu raġuni permezz x'inhu għaddej hawn. Ewwel I nikseb string mill-utent, u nressaq li string fi varjabbli imsejħa s. Kopja paste minn qabel. F'konformità 22, jien apparentement tagħmel eżattament dak Jien għamilt mument ilu, jien mtennija fuq il-karattri fit s. 

U l-tricks ġodda hawn huma jużaw tul string, l-ottimizzazzjoni minuri tal-ħażna tul string fil n, pjuttost milli ssejjaħ strlen darb'oħra, u għal darb'oħra, u għal darb'oħra. U biss verifika li i huwa inqas minn n. Issa hawnhekk, affarijiet nikseb ftit interessanti. Iżda huwa biss applikazzjoni ta 'dan l-istess idea ġdida. Liema bl-Ingliż ma bracket s i jirrappreżenta? 

UDJENZA: għadd ta 'kull karattru [inaudible]. 

DAVID J. Malan: għadd kull karattru. U anke aktar konċiż, bracket s i jirrappreżentaw liema? Would you say. Mhux biex tpoġġi lilek fuq il-post hawn. 

UDJENZA: Well-- DAVID J. Malan: Allura jekk il-kelma is-- jekk il-sekwenza huwa Zamyla, li starts-- UDJENZA: --you jittrattaw il-karattri separately-- DAVID J. Malan: Tajba. Eżattament. Il notazzjoni bracket kwadru jippermettilek jaċċessaw kull karattru individwalment, hekk i bracket 0 se tkun l- ewwel karattru fil-sekwenza. bracket s 1 se tkun it-tieni, u ibqa 'sejjer hekk. Għalhekk il-kwistjoni jien tistaqsi, hawn, f'din il-kundizzjoni huwa dak? Huwa l-karattru i'th ta 'aktar i minn jew ugwali għal zghar a? U dak li jfisser dan, hawn, mal-ampersands doppja? UDJENZA (FLIMKIEN): U. DAVID J. Malan: U. Huwa biss ekwivalenti għal dan. U mhix keyword fis-C, inti għandek użu, annoyingly, ampersand ampersand. U dan, għall-kuntrarju, hija tistaqsi hija i tal i'th karattru inqas minn jew ugwali biex zghar z? U għal darb'oħra, hawn fejn jifhmu l-sottostanti implimentazzjoni ta ' kompjuter jagħmel sens. Avviż li, anki jekk I jkollhom l-dot dot dot hemmhekk, qisu permezz z fl zghar huma Valuri kontigwi kollha up mill-97 fuq up. 

U istess għall uppercase jibdew f'65. Allura l-takeaway, imbagħad, hija li fil-Ingliż, Kif tiddeskrivi liema linja 24 qed tagħmel? Yeah? 

UDJENZA: Fl-24 huwa verifika biex tara jekk kull karattru huwa zghar. DAVID J. Malan: Huwa verifika jekk kull karattru hija ittra zghar. Hekk anke aktar konċiż, hija l- karattru i'th tal zghar i? Li kollox aħna qed jesprimu hawn loġikament, ftit cryptically, imma finalment pretty jinftiehem. Hija S tal i'th zghar karattru? 

Jekk iva, u hawn fejn l-affarijiet jiksbu mind ftit liwi għal ftit mument, jekk iva, imorru quddiem u jistampa karattru. Allura dan huwa biss placeholder, imma dak karattru? Why am I tagħmel bracket s i minus din l-espressjoni hawn? 

Ukoll avviż l-mudell hawnhekk. In-numri reali ma jimpurtax tant. Iżda avviż li 97 hija kemm bogħod mill 65? 

UDJENZA: 32. 

DAVID J. Malan: 32. Kemm bogħod huwa 98 minn 66? 

UDJENZA: 32. 

DAVID J. Malan: Little c minn C big? 32. Allura hemm 32-ħops minn ittra waħda għall-ieħor. So franchement I, jistgħu jissimplifika dan għal dak. Imma mbagħad jien tip ta 'diffiċli' kodifikazzjoni dan il-fehim livell baxx li l-ebda qarrej huwa qatt ser jifhmu. So jien ser tiġġeneralizza bħala, I jafu l-ittri lowercase huma akbar. I know-ittri kapitali huma Valuri iżgħar, ironikament. 

Iżda din hija effettivament ekwivalenti għal qal naqqas 32 mill parentesi s i. Allura fil-kuntest ta 'dawn ittri, jekk l-ittra jiġri li jkun, lowercase a, u I naqqas 32, x'effett ma li jkollhom, matematikament, fuq zghar a? UDJENZA: Capitalizes-- DAVID J. Malan: tikkapitalizza dan. U fil-fatt, dan huwa għaliex tagħna programm huwa msejjaħ kapitalizzazzjoni żero. Dan il-programm jew tikkapitalizza ittra, wara verifika jekk huwa tabilħaqq ittra zghar. Inkella, fil-linja 30, x'għandi nagħmel jekk huwa mhux ittra lowercase li jien tħares lejn lejn partikolari iterazzjoni fil-linja. Just ipprintjaha. 

Allura ma jbiddlux Jittieħed li mhux anki zghar. Illimita lilek innifsek biex ftit li permezz ftit z. Issa dan huwa pjuttost arcane. Iżda fl-aħħar tal-ġurnata, dan huwa kif aħna, darba fuq żmien, kellhom jimplimentaw affarijiet. Jekk I minflok tiftaħ kapitalizzazzjoni wieħed, oh thank god. Hemm funzjoni msejħa biex fuq li jistgħu do kollox aħna biss għamlet fuq livell pjuttost baxx. 

Issa biex fuq huwa interessanti minħabba li huwa ddikjarat fil-fajl, u inti biss taf dan billi tiċċekkja d-dokumentazzjoni, jew jghidulek, ngħidu aħna, fil-klassi, fejn teżisti, fil fajl imsejjaħ ctype.h. Allura dan huwa ħabib ieħor ġdid ta 'tagħna. U biex fuq ma eżattament dak l-isem stess jissuġġerixxi. 

Inti tista 'tgħaddi fil-, bħala argument, bejn dawn parentesi, xi karattru. Jien ser jgħaddu fil-karattru i'th ta 'S użu notazzjoni ġdida tagħna fancy jinvolvu parentesi kwadri. U tieħu raden, dak huwa r-ritorn valur ta 'li fuq apparentement tmur li tkun? A ittra kapitali. A ittra kapitali. 

Mela jekk jien jgħaddu fi zghar a, nisperaw, b'definizzjoni ta lil ta 'fuq, li għaddej biex jirritorna l uppercase A. Inkella, jekk mhuwiex ittra zghar fil l-ewwel post, I biss print it out. U fil-fatt, avviż- tieni ħabib hawn. Mhux biss biex fuq teżisti, imma hija inqas, li attwalment iwieġeb din id-domanda għalija. 

Issa min kiteb dawn l-affarijiet, 10s ta 'snin ilu, inti taf liema? Implimentati biex fuq u huwa iktar baxxa li jużaw kodiċi bħal dan. Iżda għal darb'oħra, konsistenti mal- din l-idea ta 'abstracting bogħod, tip ta ', livell aktar baxx dettalji tal-implimentazzjoni. U wieqfa fuq l-ispallejn ta 'nies li daħlu qabel magħna, bl-użu funzjonijiet simili li fuq u huwa inqas, li wonderfully biżżejjed huma nicely jismu li jgħidu dak li jagħmlu, huwa paradigma mill-isbaħ li jadottaw. 

Issa, jirriżulta li jekk I taqra il-paġna bniedem għal, ngħidu, biex fuq, I jitgħallmu xi ħaġa oħra. Allura bniedem toUpper. Huwa ftit kbira. Iżda avviż, hawnhekk li aċċenn il-fajl header li għandi jużaw. Bħala twarrib, għaliex dan hija qarrieqa, il-funzjoni użi ints minflok Chars għal raġunijiet ta 'żball iċċekkjar. Iżda aħna ser forsi jaslu lura għal dak fil-futur. 

Iżda avviż, hawn, biex tikkonverti 'fuq l-ittra c sabiex uppercase jekk possibbli. Allura dak pjuttost sempliċi. U issa ejja jkun ftit aktar speċifiku. Ejja nħarsu lejn l-parti tal- paġna bniedem taħt il-valur tar-ritorn. Il-valur irritornat huwa li tal-ittra konvertiti. Jew c, jekk il-konverżjoni ma kienx possibbli, fejn c hija l-input oriġinali. Liema Naf minn hawn, minn l-argument li għal ta 'fuq. 

Allura x'inhi l-takeaway ta 'dan? Il-valur irritornat huwa li tal-ittra konvertiti, jew c, l-ittra oriġinali, jekk l-konverżjoni ma kienx possibbli. What titjib nista għalhekk tagħmel it-tfassil kodiċi tiegħi? Yeah? 

UDJENZA: Inti tista 'tneħħi l-ieħor. DAVID J. Malan: I tista ' neħħi l-istqarrija inkella, u mhux biss l-istqarrija inkella. 

UDJENZA: Inti tista 'tneħħi [inaudible]. 

DAVID J. Malan: I tista ' neħħi l-furketta kollu fit-triq, il-jekk inkella għal kollox. Allura fil-fatt, let me miftuħa il-verżjoni finali ta 'din, kapitalizzazzjoni-2 u avviż kemm, jekk inti se, sexy, il-kodiċi hija issa jkollna, f'dak stajt mnaqqas minn xi seba 'jew hekk linji għal ftit erba, l-funzjonalità li I maħsuba billi sempliċiment ssejjaħ biex fuq, tgħaddi fis-bracket i i, u l-istampar , bl-placeholder% c, dan il-karattru partikolari. 

Issa forsi, hemm bug, jew għall-inqas ir-riskju ta 'bug, f'dan il-programm. Hekk biss li jiġu lura għal takeaway aktar kmieni, x'għandi I probabbilment wkoll tagħmel fil dan il-programm li jagħmilha aktar b'saħħitha, sabiex ma jkun hemm l-ebda mod li tista tiġrifa, anki f'każijiet rari? UDJENZA: Kun ċert li huwa mhux NULL. DAVID J. Malan: Kun ċert li huwa mhux NULL. Allura verament, biex jagħmlu dan super xierqa, I għandhom jagħmlu xi ħaġa simili, jekk i ma tkunx NULL, allura imorru quddiem u tesegwixxi dawn il-linji ta 'kodiċi, li I jistgħu mbagħad inċiż bħal dik, u mbagħad titqiegħed fil Brace qrib tiegħi. Allura tajjeb irbit flimkien taż-żewġ ideat. Yeah? UDJENZA: Tista 'tuża do filwaqt loop, minflok? DAVID J. Malan: Jista I do do filwaqt loop? UDJENZA: --you tixtieq li tagħmel ċert li inti fil-fatt [inaudible]. DAVID J. Malan: Jista tuża do filwaqt? Risposta qasira, l-ebda. Għaliex int ser jintroduċu każ ieħor kantuniera. Jekk il-sekwenza huwa ta 'tul żero. Jekk per eżempju, I biss hit Ikteb, mingħajr qatt ittajpjar Zamyla. Jien ser inti idejn lura attwali string, kif aħna ser eventwalment tara, li għandha żero karattri. Huwa għadu string, huwa biss super qasir. Imma jekk inti tuża do waqt, int ser addoċċ jipprova jagħmel xi ħaġa ma ' rigward ta 'dik string, u xejn għaddej biex jkun hemm. 

UDJENZA: Well, jekk inti ma do [inaudible] filwaqt S-- DAVID J. Malan: Oh I see, iżommu jkollna string mill-utent. Tweġiba tant qasir, inti jista, u jżommu pestering biex jagħtuk string li l- qasir biżżejjed li jitwaħħal fil-memorja. Assolutament. I biss għażlet li ma. Jekk dawn ma jagħtux me-sekwenza I tixtieq, jien jaqtagħhom, jien jċedu. Iżda assolutament, għal dak l-iskop, inti tista 'assolutament tagħmel dan. 

Allura fajls header tal-librerija li aħna qed issa familjari ma huma dawn, here. Standard I / O, CS50.h, string.h, ctype.h, u hemm, tabilħaqq, oħrajn. Xi wħud minnkom skoprew il-librerija matematika fl math.h. Imma let me jintroduċu inti, issa, biex din ir-riżorsa li l-persunal CS50, Davin, u Rob, u Gabe partikolari poġġew flimkien. Li dalwaqt se link fuq websajt tal-kors tal-. Huwa sejjaħ referenza CS50. 

Liema biss biex jagħtuk quick togħma ta 'dan, xogħlijiet kif ġej. Let me mur reference.cs50.net. Int ser ikollok tara fuq in-naħa tax-xellug ġenb lista kbira tal-funzjonijiet li jiġu mal c. Imma jekk I kura, għall-mument, dwar xi ħaġa bħal strlen, I tista tip hemmhekk. Hija filtri jistabbilixxi l-lista li biss dak I care about. Jien ser ikklikkja dan. U issa fuq ix-xellug, tkun taf tara dak li aħna nittamaw huwa aktar sempliċi, umani spjegazzjoni friendly ta 'kif din il-funzjoni jaħdem. 

Denunzji-tul ta 'sekwenza. Hawn sinopsi, hawnhekk kif inti tużah f'termini tal-fajl header, u f'termini ta 'dak li l-funzjoni Dehra f'termini ta 'l-argumenti tagħha. U allura hawnhekk, prospetti it-tul ta 'sekwenza. Iżda għal dawk tal inti aktar komda, inti tista 'attwalment ikklikkja aktar comfy, u l-kontenut ta 'dan paġna, issa, se jinbidlu li jkun il-valuri awtomatiċi ta 'dak li ikollok billi tuża il-paġna bniedem. 

Fi kliem ieħor, CS50 referenza hija simplifikazzjoni ta 'paġni bniedem mill-persunal, għall-istudenti. Partikolarment, dawk inqas komdi u fl bejn, sabiex inti ma għandekx biex jippruvaw biex nagħlaq moħħok madwar, franchement, xi sintassi pjuttost cryptic u dokumentazzjoni f'xi. 

Sabiex iżommu dan f'moħħhom fil-jiem li ġejjin. Allura hawnhekk, għal darb'oħra, huwa Zamyla. Ejja issa jistaqsu mistoqsija li l- ftit aktar umana aċċessibbli. Grazzi għall Chang, li kien istampar aktar iljunfanti nonstop għall-aħħar ftit jiem. Għandna l-opportunità li jagħtu mill-inqas wieħed minnhom bogħod. Jekk nistgħu tikseb wieħed biss voluntier li ġejjin fuq up biex ifasslu fuq l-iskrin. Kif dwar hawn? 

Come fuq up. X'inhu l-isem tiegħek? ALEX: Alex. DAVID J. Malan: Alex. Kull dritt. Alex, come fuq up. Aħna waslet biex tara tiegħek kalligrafija fuq l-iskrin hawn. Kull dritt, sbieħ li jissodisfaw inti. 

ALEX: Nizza inti tissodisfa inti. 

DAVID J. Malan: Kull dritt. Allura, l-eżerċizzju super sempliċi. Bar mhuwiex għoli li tikseb iljunfant llum. Inti qed jilagħbu l-irwol ta 'getstring. U jien ser jgħidlek biss l-sekwenza li inti stajt gotten. U jissoponi li inti, getstring, ġew imsejħa. U l-bniedem, bħali, għandha ittajpjat fil Zamyla, Z-A-M-Y-L-A. Just go quddiem u jiktbu Zamyla fuq il- screen daqslikieku inti gotten dan u maħżuna x'imkien fil-memorja. 

Leaving kamra għal dak li se jkun diversi words-- ieħor li OK, iżommu għaddejjin. 

[Rires] 

Allura Zamyla, Eċċellenti. Allura issa jissoponi li inti, getstring, huma msejħa mill-ġdid. U għalhekk, I jagħtuk, fil- keyboard, ma 'isem ieħor, Belinda. Kull dritt. U issa l-getstring ħin li jmiss hu imsejħa, I tip fil xi ħaġa simili Gabe, G-A-B E. Int verament tieħu qalb memorja t'aċċess bl-addoċċ. Liema hija tpinġija kollox kompletament saltwarjament. OK. 

[Rires] ALEX: Jiddispjacini kalligrafija tiegħi huwa ħażin. DAVID J. Malan: Le, li OK. U kif madwar Rob, R-O-B. OK. Tajba. So I ma tantiċipa inti tip ta jistabbilixxu affarijiet f'din il-mod. Iżda nistgħu nagħmlu dan ix-xogħol. Allura kif ma inti tmur dwar li out dawn Chars fil-memorja? Fi kliem ieħor, jekk naħsbu ta ' dan l-iskrin iswed rettangolari bħala li jirrappreżentaw RAM, jew memorja tal-kompjuter. 

U tfakkar li RAM huwa biss mazz sħiħ ta 'bytes, u bytes huma mazz sħiħ ta 'bits. U bits huma b'xi mod implimentati, ġeneralment ma 'xi forma ta' elettriku fil-hardware. Allura dak it-tip ta 'l- saffi konna tkellimna dwar u issa tista 'tieħu għall mogħtija. Kif ma inti tmur dwar jiddeċiedu fejn jiktbu Rob versus Gabe versus Belinda versus Zamyla? 

ALEX: I biss ma kien fil- tordna li inti told me. 

DAVID J. Malan: U li huwa veru. Imma dak regolati fejn inti tpoġġi Isem Belinda u l-isem Gabe tal? 

ALEX: Xejn? DAVID J. Malan: [Laughs] Allura li jaħdem, li l-multa. Allura kompjuters huma ftit aktar ordnat minn dak. U hekk meta aħna implement-- jibqgħu hemm għal ftit moment-- meta aħna attwalment jimplimentaw xi ħaġa bħal getstring fil-kompjuter, Zamyla jista 'jiġi stabbiliti pretty ħafna bħal għamilt fuq l-iskrin, hemm. 

U dak li huwa importanti li l-avviż hawn, dak Alex għamlet, hija li hemm tip ta 'demarkazzjoni fost kull wieħed minn dawn il-kliem, id-dritt? Inti ma jiktbu Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- fi kliem ieħor, hemm xi tip ta 'demarkazzjoni li jidher li jkun, tip ta ', ispazjar każwali bejn dawn il-kliem differenti. Imma li tajjeb, għaliex aħna bnedmin issa jistgħu Ħares li dawn huma erba kordi differenti. Huwa mhux biss sekwenza waħda ta 'lottijiet ta' karattri. Allura kompjuter, imbagħad, sadanittant, jista 'jieħu string bħal Zamyla, tpoġġi kull wieħed minn dawn l-ittri ġewwa ta 'byte ta' memorja. Iżda dan in-numru huwa ħafna akbar, naturalment, minn sitt karattri. 

Hemm mazz sħiħ ta 'RAM. U hekk issa, dan grid ta 'kaxxi li qed jiġri biex jirrappreżentaw dak Alex biss għamlet hawn fuq l-iskrin. U issa, Alex, nistgħu noffrulek blu jew iljunfant oranġjo minn Chang. ALEX: I ser tieħu iljunfant blu. DAVID J. Malan: A iljunfant blu. Allura rawnd kbir ta 'applause, jekk nistgħu, għal Alex hawn. 

[Applause] 

ALEX: Grazzi. DAVID J. Malan: Grazzi. Allura l-takeaway hija li, anki jekk il- mudell tip ta inbidlet matul iż-żmien, hawn fuq il-bord, kien hemm dan demarkazzjoni fost il-kordi varji li Alex ltqajna għalina. Issa kompjuters, franchement, tista 'tagħmel l-istess ħaġa. Huma jistgħu tip ta 'plop kordi kullimkien fil RAM. Up hawn, hawn fuq, stabbiliti hawn, stabbiliti hawn. 

Huma jistgħu jagħmlu eżattament dan. Imma, naturalment, li l- probabbilment mhux l-aħjar ippjanar. Right? Jekk I tinżamm tistaqsi Alex biex tikseb l-ismijiet, probabbilment hu d jqajjem xi aktar stabbiliti hawn, forsi up hawn, hawn, hawn fuq, eventwalment minn hawn. Iżda bi ftit aktar ippjanar, ċertament, nistgħu jistabbilixxu affarijiet out aktar nadif. U fil-fatt, dan huwa dak kompjuter ma. 

Iżda l-qabda hija li jekk il-string jmiss I nikseb wara Zamyla hija xi ħaġa bħall-Belinda, tipproponi fejn nistgħu tikteb il- ittra b rigward dan il grid? Fejn kieku inti tmur? Għad-dritt ta 'l-a, taħt il-z, taħt il-a? X'għandu instincts tiegħek l-ewwel tkun? UDJENZA: Hawn taħt il-z. DAVID J. Malan: Allura taħt il-z. U li pretty sempliċi, id-dritt? Huwa tip ta 'pulita, huwa dak li nagħmlu fuq tastiera meta aħna hit Ikteb, jew email meta jagħmlu lista bulleted ta 'affarijiet. Iżda r-realtà hija li l-kompjuters jippruvaw ikunu aktar effiċjenti, u CRAM ċertament kemm data fis RAM kemm jista 'jkun, sabiex inti ma jaħlux xi bytes. Allura li inti ma jaħlux kwalunkwe proprjetà immobbli iskrin. U l-problema, għalkemm, hi li jekk aħna litteralment tpoġġi l-ittra b wara, kif huma aħna se taf fejn isem Zamyla jintemm u l-isem tal-Belinda tal jibda? Allura inti bnedmin biss proposta, ukoll, laqat il Enter, essenzjalment. Poġġi l-isfel hawn taħt. Jew anke bħala Alex ma, biss tibda bil-miktub l-isem li jmiss taħt dak preċedenti, u taħt dak waħda, u allura hawn taħt li wieħed. Li l-CUÉ viżwali. 

Kompjuters jkollhom CUÉ viżwali ieħor, iżda huwa ftit aktar imqassra. Huwa dan il-karattru funky. Backslash 0, li hija forsi reminixxenti tal backslash n, u ibqa 'sejjer hekk, issa. Il-sekwenzi speċjali salvataġġ. Backslash 0 huwa l-mod ta ' li jirrappreżenta tmien żero bits fil-filliera. 0000 0000. 

Il-mod inti tesprimi dan ma laqat il-numru żero fuq it-tastiera tiegħek, minħabba fil-fatt li huwa char ASCII. Jidher qisu numru, iżda huwa attwalment numru deċimali li tirrappreżenta l-ċirkolari glyph, it-tipa ċirkolari. Sadanittant, backslash żero litteralment tfisser tpoġġi tmien żero bytes hawn għalija. 

Allura dan huwa kemmxejn arbitrarja. We jistgħu stajt użat kwalunkwe mudell ta 'bits, iżda fid-dinja iddeċieda xi snin ilu, li jirrappreżentaw it-tmiem ta string fil-memorja, biss jitqiegħed mazz sħiħ ta 'żerijiet. Għaliex nistgħu jikxfu dik. Issa li jfisser li l-ebda ittra ta 'l- alfabett jista 'jiġi rappreżentat b'żero. 

Imma dak li OK, konna diġà raw li aħna qed tuża 65 fuq up f'97 fuq up. Aħna ma jiksbu kullimkien qrib żerijiet kollha. Allura Belinda fil-memorja tal-kompjuter huwa attwalment se jmorru hawn. Stajt irtirat hu isfar biss tiġbed l-attenzjoni tagħna għaliha. U avviż, wisq, dan huwa kompletament arbitrarja. Stajt mfassla bħala grilja. Bħal, RAM huwa biss xi oġġett fiżiku. Dan ma jfissirx neċessarjament ikollhom ringieli u kolonni, per se. Huwa biss ltqajna mazz sħiħ ta 'bytes implimentat fil-hardware b'xi. Imma jekk wara Belinda I ittajpjat fl-isem Gabe, l huwa għaddej biex jispiċċaw hawn fil-memorja, u jekk I ittajpjat fil isem Daven tal, per eżempju, huwa għaddej biex jispiċċaw here. U nista 'tkompli jiktbu saħansitra aktar ismijiet. 

Sfortunatament, jekk nipprova jiktbu isem twil super, I jista 'eventwalment jispiċċaw ta' memorja. F'liema każ, getstring huwa ser jirritorna NULL, kif aħna qal. Iżda Thankfully, għall-inqas f'dan viżwali hawn, aħna ma jiksbu pjuttost li s'issa. 

Issa x'hemm sbieħ hija li dan idea ġenerali ta 'trattament affarijiet bħala fil-kaxxi huwa rappreżentant ta 'karatteristika ta' C u ħafna ta 'lingwi, magħrufa bħala firxa. Firxa hija tip ieħor ta 'data. Hija struttura data, jekk inti se. Struttura fis-sens ta 'dan verament, tip ta ', tfittex bħal kaxxa, mill-inqas f'moħħu fl-għajnejn tiegħek. Firxa hija kontigwa sekwenza ta 'tipi ta' data identiċi, lura lura lura biex lura. 

Allura string, fil-oħra kliem, huwa firxa ta 'Chars. Firxa ta 'karattri. Iżda jirriżulta inti jista 'jkollhom arrays ta 'għenieqed ta' affarijiet. Fil-fatt, nistgħu npoġġu anke numri fil-firxa. Allura l-forma li fiha aħna qed tmur biex tibda tiddikjara din id-data struttura magħrufa bħala firxa huwa wkoll ser tuża parentesi kwadri. Iżda dawn parentesi kwadri huma ser għandhom tifsira differenti f'dan il-kuntest. 

U ejja ara dan kif ġej. Ejja ngħidu li I fetaħ up fajl ġdid hawn. U jien tiffranka dan bħala ages.c. U jien ser tiffranka dan fil folder tiegħi hawn. U issa jien se jimxi 'l quddiem u tibda ittajpjar xi ħaġa bħall jinkludu CS50.h, jinkludu stdio.h, int null prinċipali. U mbagħad ġewwa ta 'hawn, nixtieq li l-ewwel ikollhom int imsejħa età. 

U jien ser tuża li biex tikseb int mill-utent għall-età tiegħu jew tagħha. Iżda dan il-programm huwa maħsub biex jintuża mill- nies multipli, għal kwalunkwe kuntest. Stajt ltqajna linja ta 'nies. Kollha kemm għandek tip fil tagħhom età għall forsi xi wħud, I do not know, kompetizzjoni, jew avveniment li ħadthom waslu għal. Allura l-persuna li jmiss, I bżonn ieħor varjabbli. 

Għaliex jekk I biss ma età gets getInt, li tmur clobber, jew jissostitwixxu età tal-persuna preċedenti. Allura li l-ebda tajba. Allura l-ewwel istint tiegħi jista 'jkun, oh, id-dritt, jekk I rridu nġibu Popolari multipli ages-- ejja sejħa dan age1, age2 int gets int, age3 int gets getInt. U issa jien ser tuża xi kodiċi pseudocode hawn. 

Tagħmel xi ħaġa ma 'dawk in-numri. Aħna ser leave għal jum ieħor dak li aħna qed tagħmel hemmhekk, għaliex aħna biss kura għall-mument dwar age1, age2, age3. Sfortunatament, ladarba I jiġbru dan il-programm u poġġih fil quddiem ta 'l-utenti attwali, x'inhu l-disinn fundamentalment foqra deċiżjoni I jidhru li għamlu? Yeah? UDJENZA: [inaudible] DAVID J. Malan: Yeah, I ma anke ppruvaw biex insemmu kif etajiet ħafna do I attwalment kura dwar? Jekk I għandhom inqas minn tliet persuni hawn, u għalhekk inqas minn tliet etajiet, Jien xorta addoċċ jistennew tlieta. Alla jipprojbixxu erba 'persuni juru up. Programm tiegħi biss mhux se anki isostnuhom. 

U hekk dan, l-istorja twila qasir, mhuwiex drawwa tajba. Right? I kien essenzjalment ikkupjar u pasta kodiċi u biss tweaking l-ismijiet varjabbli. U, god tiegħi, jekk kellek, mhux tlieta etajiet, iżda 10, jew 100, jew saħansitra 6,500 ggradwawx, per eżempju. Dan mhux se tkun partikolarment kodiċi eleganti, jew sostenibbli. Int ser ikollhom jikteb il-programm kull darba numru tiegħek ta 'bidliet nies. 

Allura Thankfully, fil attwali tagħna fajl ages.c għal-lum, għandna soluzzjoni aktar għaqlija. L-ewwel, jien ser tissellef il- jinbena konna użati għal xi ftit drabi, dan tagħmel waqt loop, sabiex jiksbu in-numru ta 'nies fil-kamra. Jien biss ser jiffittaw bis-utent, għal darb'oħra u għal darb'oħra, sakemm hu jew hi tagħti me valur ta 'n thats numru sħiħ pożittiv. 

I setgħet użat, l-aħħar time nneħħu int pożittiv. Iżda aħna ma jkollhomx dak għall reali, so I marru quddiem u ri implimentata din l-idea. Issa stabbiliti hawn, dan huwa l-trick ġdid. F'konformità 27, bħala l-kummenti fil-linja 26 tissuġġerixxi, jiddikjara firxa li fiha biex jaħżnu l-età ta 'kulħadd. 

Mela jekk inti tixtieq li tikseb, ma int wieħed, ma żewġ ints, iżda mazz sħiħ ta 'ints. Speċifikament n interi, n kienu jista jkun tlieta, tista 'tkun ta' 100, jista 'jkun 1,000. Is-sintassi, pjuttost sempliċi, huwa li jiġifieri, liema tip ta 'data li tridu? What do inti tixtieq li sejħa li blokki ta 'memorja? What do inti tixtieq li jsejħu l-grid li tidher bħal dan pictorially? 

U fil-parentesi hawn, inti tgħidli kemm hu kbir inti tixtieq l-firxa li tkun. U hekk qabel, meta I qal li l- sintassi huwa xi ftit differenti hawn, aħna qed għadhom qed jużaw parentesi kwadri, imma meta jien tiddikjara firxa, in-numru ġewwa tal- parentesi kwadri mezzi kemm hu kbir tridu l-firxa li tkun. 

B'kuntrast, meta konna jużaw s bracket i mument ilu, i, string, huwa tabilħaqq firxa ta 'Chars, iżda meta ma tkunx qed tiddikjara varjabbli, kif ma 'dan il-keyword hawn, int sempliċement jkollna indiċi speċifiku, speċifika element minn dak array. Ladarba aħna nafu li, l-bqija ta 'dan huwa sempliċi. Jekk ġdid jien l-ewwel ser jistampa x'inhu l-età ta 'persuna numru i. Fejn I biss jgħidu numru persuna waħda, persuna numru tnejn, persuna numru tlieta. 

U jien biss tagħmel aritmetika, hekk li bħal nies normali, aħna għadd minn wieħed għal dan programm, u mhux minn żero. Imbagħad I call getint, imma I taħżen ir-risposta fl-etajiet parentesi i. Liema hija l-età i'th fil-firxa. Allura billi aħħar darba konna trattament dawn il-kaxxi bħala Chars għall-isem Zamyla'S, u oħrajn. Issa, dawn il-kaxxi jirrappreżentaw 32 bits, jew erba 'bytes li aħna jista 'jaħżen l int, xi int, l int. Kollha li, għal darb'oħra, huma l-istess tip ta 'data. 

Now I tagħmel xi ħaġa iblah, bħall jgħaddi żmien, biss biex tiġġustifika miktub dan il-programm. U mbagħad stabbiliti hawn, I darb'oħra jtenni tul l-arranġament tgħid sena minn issa, persuna għadd rieda waħda ikun is-snin xi ħaġa qodma. U biex insemmu li math-- I mean, dan mhux ħafna ikkumplikata arithmetic-- I biss żid waħda għall-età tagħhom. Just biex juru, għal darb'oħra, dan. 

Just kemm nista indiċi fi string, i, hekk nista indiċi fi firxa ta 'etajiet, bħal dik hemmhekk. Għalhekk, fejn huwa dan se tkun qed tieħu lilna? Allura aħna se tara, finalment, ta ' affarijiet ftit fil-jiem li ġejjin. Wieħed, dan il-ħin, meta kitba programmi tiegħek stess, bħal Mario, greedy, kreditu. You ħadthom ġiet jittajpja l-isem ta ' il-programm u laqtu Ikteb. U allura jkollna input-utent. 

Bil getString, getInt, getLongLong, jew simili. Iżda jirriżulta li jappoġġja Ċ xi ħaġa imsejħa linja ta 'kmand argumenti, li tkun se let us fil-fatt tikseb fuq kliem li inti tip, fil-pront Teptip, wara l-isem program tiegħek. 

Allura fil-jiem li ġejjin, inti jista tip xi ħaġa bħal Caesar, jew ./caesar numru 13, wara dan. Aħna ser tara kif din taħdem. Minħabba tabilħaqq, fl problema stabbiliti tnejn, aħna qed ser jintroduċu inti li ftit xi ħaġa reminixxenti tal tal Ralphie jisfida qabel ta 'kartografija. L-arti ta 'scrambling informazzjoni. Dan, fil-fatt, huwa ferm reminixxenti ta 'dak Ralphie għamlet. 

Dan huwa eżempju ta 'encryption algoritmu imsejħa rot13, R-O-T 13. Li sempliċiment ifisser dawwar il- ittri fil-alfabett 13 postijiet. U jekk inti tagħmel dan, inti ser tara issa dak li huwa, forsi, frażi familjari. Iżda l-mod aħna qed tmur għall-użu dan, finalment, huwa aktar ġenerali. 

Fl P stabbiliti tnejn, fl-edizzjoni standard, inti ser timplimenta koppja ta 'ciphers, wieħed imsejjaħ Caesar, wieħed imsejjaħ Vigenere. Kemm minnhom huma rotazzjonali ciphers, b'mod li b'xi mod inti dawran ittra waħda fi ittra differenti. U Caesar huwa super sempliċi. Inti żid waħda, inti żid 13, jew xi numru sa 26. Vigenere ma li fuq bażi ta 'kull ittra. Allura Vigenere, kif tkun taf tara fil-spec, hija aktar sikura. 

Iżda fl-aħħar tal-ġurnata liema inti ser tkun l-implimentazzjoni u P sett tnejn, hija li ewlieni li tuża kemm għall encryption u deċifrar. B'referenza għall-proċess ta 'tidwir test sempliċi, xi messaġġ oriġinali, fis-test Ċifra, li hija xi ħaġa encrypted. U mbagħad decrypting mill-ġdid. 

Fil-Hacker edizzjoni, sadanittant, inti ser tkun kompitu ma 'xi ħaġa simili fl-ispirtu, fejn aħna ser jagħtuk fajl, minn Linux tipiku, jew Mac, jew Unix kompjuter imsejħa Etsy password, li fih ħaġa sħiħa mazz ta 'usernames u passwords. U dawk passwords għandek kollha ġew encrypted, jew hashed, biex ngħidu hekk, aktar sew kif tkun taf tara fil-spec. 

U l-Hacker edizzjoni se jisfida inti ma tieħu input bħal dan, u qsim il-password. Dan huwa, jidhru dak l- password tal-bniedem fil-fatt kien. Minħabba, tabilħaqq, passwords huma ġeneralment mhux maħżuna fil-ċar, u ġeneralment passwords għandu jkun diffiċli li raden. Li mhux spiss il-każ. 

U dak li ħsibt aħna'd nagħmlu huwa tikkonkludi ma ftit minuti t'għajn lejn partikolarment għażla fqira ta 'passwords minn film inti tista recall fondly. U jekk le, inti għandek kera. 

[Daqq ta 'video] 

-Helmet, Inti fiend, x'inhu għaddej? X'Ser tagħmel biex tifla tiegħi? 

-Permit Me li jintroduċu l- kirurgu tal-plastik żgħażagħ brillanti, Doctor Phillip Schlotkin. L-akbar raġel impjieg imnieħer fil- univers kollu u Beverly Hills. 

-Your Altezza. 

Xogħol -Nose? Ma nifhimx. Hija diġà kellhom xogħol imnieħer. Kien tagħha ħelwa 16 preżenti. 

-Nru, Mhuwiex X'taħseb. Huwa ħafna, ħafna agħar. Jekk inti ma tagħti me- kombinazzjoni mal-tarka arja, tabib Schlotkin se jagħti tiegħek bint back imnieħer tagħha qodma. - [Gasps] Nooooooooooooo. Fejn ma ikollok dan? 

-kull Dritt. I ser jgħidlek, jien ser jgħidlek. 

-Nru, Daddy, ebda. Inti ma trid. 

-You're Dritt għeżież tiegħi. I ser titlef imnieħer ġdida tiegħek. Imma jien mhux se jgħidulhom l- kombinazzjoni x'ikun. 

-Very Sew. Tabib Schlotkin, do agħar tiegħek. 

Divertiment -My. 

-Nru! Stenna, stenna. I ser jgħidlek. I ser jgħidlek. 

-I Kien jaf ikun taħdem. Kull dritt, tagħtiha lili. 

-Il Kombinazzjoni hija waħda. 

One. 

One. -Two. -Two. -Two. -Tliet. -Tliet. -Tliet. -Four. -Four. -Four. -Five. -Five. -Five. -Allura-Kombinazzjoni hija waħda, tnejn, tlieta, erba ', ħames. Dik hija l-kombinazzjoni stupidest I qatt tisma fil-ħajja tiegħi. Dik hija l-tip ta 'ħaġa idjota jkollha fuq bagalji tiegħu. 

-Thank Inti, Altezza tiegħek. 

[Clicks REMOTE] 

Liema ma inti tagħmel? 

-I Mitfija l-ħajt. 

-Nru, Inti ma, inti mitfija l-film kollu. 

Ve -I ippressat-buttuna ħażina. 

-Well, Erġa 'poġġih fuq! Poġġi l-film lura fuq! 

-Yes, Sir! Iva, sir. -Let Ħa mmorru, Arnold. Come, Gretchen. Of course inti taf I ser għandek inti kont għal dan. -Well? Did taħdem? Fejn hi l-king? 

-Hija Maħduma, sir, aħna jkollhom l-kombinazzjoni. -Great. Issa nistgħu jieħdu kull aħħar nifs ta 'arja friska minn pjaneta Druidia. X'hemm-kombinazzjoni? 

One, tnejn, tlieta, erba ', ħames. 

One, tnejn, tlieta, erba ', ħames? -Yes. -li Aqwa. Stajt ltqajna l-istess kombinazzjoni fuq bagalji tiegħi. Ipprepara Spaceball 1 għall tluq immedjat. 

-Yes, Sir. 

-u Jibdlu l- kombinazzjoni fuq bagalji tiegħi. [GĦELUQ ĦOSS DOOR] [Clink TA 'BIBIEN laqtu elmu] -Ahh. [END daqq ta 'video] DAVID J. Malan: Li lilha għall CS50, aħna ser tara inti ġimgħa d-dieħla. Narrator: U issa, Deep Ħsibijiet, billi Daven Farnham. 

DAVEN FARNHAM: Kodifika fis-C huwa hekk ħafna aktar diffiċli milli Scratch. printf, Scratch kien gidba. 

[Soundbite Rires]