[TÓNLIST spila] Ræðumaður 1: Þetta er CS50 og þetta er upphaf viku tvö. Svo skulum kafa rétt í eitthvað sem er þrjótur, svo að segja. Svo, hérna er CS50 IDE og ég hef dregið upp fyrirfram þetta screen-- fjandinn það. Spilla viðvörun. Allt í lagi. Ég hef dregið upp þennan skjá hérna, sem hefur mjög einfalt forrit. Ef við skruna niður, mest þetta er bara athugasemdir, en hér í línum 13 gegnum 17 við erum með forrit. Það er setningafræðilega gilt, sem þýðir að ef Ég þýða það, það mun taka saman og hlaupa, en það er þrjótur. Þetta forrit segist í athugasemdum upp efst að það ætti að prenta 10 stjörnum, en það er ekki. Og byggjast á reynslu þína, eða fljótlega að vera reynsla C, getur þú greina rökrétt hvers vegna þetta er, í raun, þrjótur? Já? Áhorfendur: Það fer frá núll til 10. Það er 11 endurtekningar. Ræðumaður 1: Já. Svo, það er að fara frá núll upp í gegnum og jafnt og 10, sem að sjálfsögðu er 11 endurtekningar. Svo, það er að fara að prenta, reyndar 11 stjörnur. Svo, tölvunarfræði samningur í flestum forritunarmál er reyndar bara að byrja að telja á núlli, en telja, en þó ekki í gegnum gildi sem þér þykir vænt raunverulega um. Nú, þetta er eitt sem tekur smá að venjast og jafnvel Scratch, hannað eins og það er fyrir utan forritari eða non tölvunni vísindamenn og fyrir börn að mestu leyti, er hannað til að hafa þú byrjar að telja almennt á einn. Og það er allt í lagi. Þú getur alveg byrjað að telja á einn ef það er þægilegra. Og telja upp að og í gegnum 10, en þú munt gera sér grein sérstaklega í þessari viku og umfram það bara svo margt í forritun gera ráð fyrir að 0 er fyrsti stafa sem þú telja, að þú ert að fara að finna það auðveldara bara til að komast inn í þennan vana að byrjun frá núlli og telja upp að verðmæti þér þykir vænt um núna frá fá að fara. Svo, sem hefur fasta að. Við breyttum minna en eða jafngildir bara minna en. Við skulum taka a líta á Annað dæmi hér. Svo, þetta forrit segist líka í sinni segir upp efst að það ætti að prenta tíu stjörnur, en það gerir það ekki. Hvað er padda hér? Svo, what-- og því miður, við skulum vera skýr. 10 stjörnur. Eina í hverja línu, en það gerir það ekki. Svo, í raun, láta mig fara á undan og taka saman þetta vegna þess að það er aðeins minna hreinsa byggt á þeim lýsingu. Leyfðu mér að fara inn í uppspretta okkar. Gera Buggy einn punktur rista, þrjótur einn. OK, ég 11 stjörnur, sem er enn erfið, en þeir eru líka allt í einni línu. Hvað er málið hérna? Já. Áhorfendur: [inaudible]. Ræðumaður 1: Já. Þannig að þetta er lipurðar sem þú getur muna mig gera stutta minnast á. Jafnvel þótt allt útlit falleg, og það er fallega inndregin, og það lítur svona Scratch-eins í þeirri línu 16 og 17 eru, reyndar, inndregin undir að fyrir lykkju. Það er óverulegt. The tölva er ekki vita eða sjá hvítt rúm. White pláss er bara fyrir mennirnir, stylistically. The tölva er vita þegar þú ert hrokkið axlabönd, sem myndi reyndar laga þetta vandamál. Svo, ef við fórum reyndar í og sérstaklega að setja í þessum hrokkið axlabönd sem myndi laga þetta vandamál með því að gera ljóst að þýðanda að ég vil í raun að framkvæma tvær línur af kóða aftur, og aftur, og aftur. En hvað er grundvallaratriði skýring? Ekki satt? Við gerum ekki stranglega þurfa hrokkið axlabönd allan tímann, jafnvel þó að það er líklega best æfa sig til að komast inn í þessi vana samt jafnvel þó að það bætir tvö stafir í kóðanum þínum. hvers vegna? Áhorfendur: [inaudible]? Ræðumaður 1: Já svo er það Önnur lausn að öllu leyti. Ekki satt? Sérstaklega ef við fyrstu sýn þú ert ekki raunverulega þakka það sem er að gerast. Jæja, þá er vissulega gat bara gera tvo hluti í einu og bara forðast vandamál með öllu. Og það er allt í lagi, en nú, tilgangi í dag, hvað er skýringin á galla? Hvers vegna voru allir þessir stjörnur á einni línu? Já? Áhorfendur: Það virðist sem að ef þú þarft eina línu af kóða, þú getur gert það án þess að þeim. Ræðumaður 1: Einmitt. Þetta er bara mannlegur samningur. Fólk átta sig á að það er svolítið pirrandi eða leiðinlegur að þurfa að setja hrokkið axlabönd allt af þeim tíma ef allt sem þú vilt gera er framkvæma eina línu af kóða. Svo, menn ákváðu sumir síðan að það er allt í lagi. Ef þú vilt að setja öll lykkja á bara að ein lína eins og þetta, það er í lagi með einn semíkommu í lokin. En þú getur aðeins gert eitt slíkt lína án hrokkið axlabönd. Svo, þegar CS50 stíl fylgja sem mun benda þér á, þú munt sjá að almennt það er góð venja að komast inn í þetta fyrr en þú ert alveg þægilegt villtur frá þessum tegundum af samningum og gera eigin hlutur. Svo lengi sem þú ert sjálf stöðug. Og við munum tala meira um stíll svolítið síðar í dag. Svo, láta mig opna eitt annað forrit. Auðvitað, við ættum festa þessi 10 eins og heilbrigður. Leyfðu mér að fara á undan og skrifa alvöru fljótur program sem ég kalla, við skulum segja, lykkja punktur C. Svo, lykkja punktur C. Og í lykkju punktur C ég ætla að hafa, eru stöðluð I / O punktur H int helstu tóm. Og nú skulum bara gera reyndar lykkju. Svo, 4 INT ég fær núll. Ég er minna en, segjum, 50. Ég plús, plús. Og þá hér skulum fara á undan og gera prenta F. Og þá vil ég að prenta I og ný lína, semíkommu. Og þetta ætti að prenta allt tölur frá núll upp í 50? Nokkrar höfuð kinkar kolli. Nokkrar Nos. Hvað er padda þegar? Hvað er auðvelt mistök sem ég gerði? Já. Áhorfendur: [inaudible]. Ræðumaður 1: Já. Svo jafnvel þótt það lítur eins og þetta er það sem ég ætla, muna að ég er líka bara ASCII staf. Svo, ef ég segi, prenta "I." Það er bókstaflega að fara að prenta I. Svo ef ég langar að stinga í tákn gildi sem ég þarf í raun að gera þetta og þá stinga í gildi I virk. Annars er ég bara að fara að færð 50 I er á skjánum. Svo, láta mig fara á undan og gera þessa lykkju, keyra hana, og reyndar höfum við öll leið upp í gegnum 49. Og ef ég fletta aftur í tímann sé ég númer núll í upphafi. Jæja, hvað ef ég skrúfa konar upp? Hvað ef ég geri þetta? Bara vegna þess að ég er ekki að hugsa. Hvað er þetta forrit. Þegar aftur saman og hlaupa, fara að gera rökrétt? Áhorfendur: Ekkert. Ræðumaður 1: Ekkert. Afhverju er það? Áhorfendur: Ég er hannað fyrir núll. Svo, the ástand er falskur. Ræðumaður 1: Já, einmitt. Allt kóðinn er réttur, setningafræðilega. Þetta mun þýða, þetta merkjamál vilja hlaupa, en það er ekki að fara að gera neitt gagnlegt vegna þess að ég frumstilla ég núll. Við athugum þá er ég meira en 50? Vitanlega, nei, það er ekki. Svo lykkja keyrir aldrei á öllum. Hvað ef við gerum eitthvað aðeins meira kærulaus? Svo, hvað ef við gerum eins int ég fær núll. Og nú langar mig að nota á meðan lykkja, sem var annar ástand. Og á meðan ég segi, á meðan ég er meiri en eða jöfn núlli, og þá hér I fara á undan og vista skrána, gera lykkju. Og ég er að fara að keyra það. Hvað er ég að fara að sjá þetta tíma með while lykkju? Já. Áhorfendur: óendanlega lykkju? Ræðumaður 1: óendanlega lykkju? Já, og hvers vegna? Áhorfendur: Vegna þess að það er alltaf núll. Ræðumaður 1: Já. Svo er ég frumstilla sem núll. Auðvitað ég er alltaf meiri en eða jafnt og 0 í kjölfarið. Svo, ég ætla bara að fara að sjá þetta óendanlega. Og nú, þetta hefur komið upp þegar eða tvisvar til höfuð Námskeiðið er. Hvað gerist þegar þú hafa óendanlega lykkju? Áhorfendur: Control C. Ræðumaður 1: Já. Svo Control C mun að lokum svara. Því miður, höfum við prentað út milljónir og milljónir zeroes þegar og svo hefur tölvan konar fékk undan mér. Svo, það er að fara að hunsa mér fyrir smá. En ef þú högg bara stjórna C nokkrar sinnum á Mac eða PC lyklaborðinu, loksins það ætti reyndar að segja. Og ef ekki, munum við sýna þér sumir tækni fyrir tíma þar sem þú geta í raun valdi drepa forrit, mikið eins og í Windows og Mac OS, ef þörf krefur. En við skulum reyna eitthvað annað. Við skulum hækka raun I. Er þetta enn að fara að vera óendanlega? Leyfðu mér að keyra þetta. Og nú getur þú konar sjá hvað er að gerast. Þetta líka, er óendanlegur lykkja. En þetta er hluti af bragð spurningu. Er þetta að fara að prenta tölur eilífu? Áhorfendur: Nei Ræðumaður 1: Nei Hvers vegna? Ég heyrði nokkrar Nos hérna. Someone-- Já. Áhorfendur: Þú hefur ekki nóg bita að virkilega halda áfram. Ræðumaður 1: Allt í lagi. Þannig að ég hef ekki nóg bita til að halda áfram. Svo, hvað er að fara að gerast? Það er bara að fara að hætta? Áhorfendur: Á einhverjum tímapunkti það mun leggja the-- Ræðumaður 1: Það mun leggja lykkja niður, en hvers vegna? Hvað er að fara að gerast á mjög enda landamæri sín? Já? Áhorfendur: Það mun hringrás aftur til neikvæðar tölur. Ræðumaður 1: Til að neikvæðum tölum eða ef við vorum bara að meðhöndla jákvæð, núll amk. Svo já, algerlega. Muna að við sáum síðast að ef þú hækka bits eitt of mörgum sinnum, og þú eiga því flæða getu int þinn eða hvað sem gögn tegund er, þú ert fara að vefja í kring, líklega, tvær neikvæðar tölur. Eða ef þú hefur skilgreint sem þinn svið ætti aðeins að vera jákvæð, sem þú getur gert, en við höfum ekki séð það enn, þú might endir upp að minnsta kosti aftur á núlli. Þó, já í raun. Í þessu tilviki, neikvæð tölur, en í því tilviki lykkja er að fara að segja vegna þess að ég er ekki í raun, stærra en eða jafnt og núll ef það er neikvætt. Svo, því miður, hvernig lengi vildi að við þurfum að bíða? Núna erum við allt að hvað, 2 milljónir-ish? Við erum eins og 2 milljarða króna við erum að fara að þurfa að bíða þangað til við getum raunverulega séð þetta einkenni. En við getum séð það svolítið hraðar, maybe-- skulum sjá hvort við getum trufla. Láttu ekki svona. Jafnvel valmyndir eru að birtast hægt. Allt í lagi. Svo munum við koma aftur til að áður en langur. Það er góð time-- fjandinn það, hvolpar. Það er góður tími fyrir suma tilkynningum. Svo, ef þú might eins og til að taka þátt í YHack, sem er atburður vera styrkt af vinum okkar á Yale. Og reyndar sumir af the sjálfsögðu er TFS í Yale er að ræða með þetta. YHack er alþjóðlegt hack-a-Thon hýst og hélt í Yale, koma saman 1.500 eins og hugarfar tölvusnápur og birtingarmyndir öllum um allan heim. Ef þetta er áhugaverð, taka a líta hér. Ef þetta er of stuttlega á skjár, taka a líta á glærum í dag fyrir vefslóðinni fyrir yhack.org. Svo, einnig nokkrar fljótur tilkynningar. Svo, opinberlega kafla hefst í næstu viku bæði hér og New Haven. Hafðu í huga að þú munt vera getting óákveðinn greinir í ensku Netfangið síðar þessa helgi líklegast. Það tekur langan tíma fyrir CS50 í lið, gefið allt fólk í flokki og allir að fara um. Og allir Kennsla Fellows ' báta eru einnig enn að treysta, en dvöl lag fyrir tölvupóst og ef þörf að, getur þú aftur kafla þar eftir. Study.cs50.net. Svo, jafnvel ef þú ert stöðug Þátttakendur á köflum, átta sig á að nánast öll auðlindir sem við notum í köflum eru aðgengilegar á CS50 Læra á þessari vefslóð hér. Svo, ef þú vilt alltaf eins og til aftur endurskoðun efni úr kafla, eða lesa á undan, eða þú getur ekki gert það sumir viku, átta sig á að sýnishorn skyggnur, og vandamál, og skilgreiningar, og fleiri eru allt það eins og heilbrigður. Viðtalstími halda í dag, og á morgun, og miðvikudagur, og fimmtudagur athuga sjálfsögðu er website fyrir áætlun. Og einnig, nú hefja í dag er CS50 Ræðið. Svo, ef og þegar þú hefur spurningar til hvor aðra eða fyrir starfsmenn Auðvitað er, og eru yfirleitt að vinna á einhverjum Heimadæmi, gera sér grein fyrir að þú ert ekki endilega að snúa sér til mönnum næsta þér. Ef það er enginn þar, þú getur ná til okkar og bekkjarfélaga á netinu í gegnum CS50 Ræðið. Svo, þetta er umræða borð fyrir námskeiðið, og átta sig á að þetta er kannski besta staður til að byrja þegar þú ert spurningar utan skrifstofutíma sérstaklega. Lunches mun byrja í þessari viku líka. Á Fire and Ice [Inaudible] í New Haven. Taka a líta á námskeiðið er website í því skyni að RSVP. Fyrstur kemur, fyrstur fær fyrir það. Ef þú færð ekki í þessari viku við munum gera þetta mest á hverjum föstudegi á gildistíma. OK, og nú orðið um flokkun. Sérstaklega eins og við inn vandamál setja einn, sem er út í þessari viku, og vandamál setja tvö og eftir það. Hvernig eigum við að fara um mat P setur og meta gæði þeirra? Svo er það fjóra ása sem við notum í CS50, og þeir eru þessir fjórir hér. Gildissvið, sem tekur á tölugildi Grunnur bara hversu mikið af P setja fórstu takast. Það er u.þ.b. samsvarar átak, og það er leið okkar að handtaka Vissir þú að reyna helmingur P setja, allar þær P setja. Þetta er auðvelt einn til að fá fullkomið skorar á ef þú gerir það, reyndar, reyna á alla þætti í P setja. Svo, hafa það í huga. Nákvæmni er einmitt það. Er kóða vinnu þína eins og forskrift og eins starfsfólk 'sýnislausninni benda til þess að númerið þitt ætti í raun að vinna. Athugaðu 50, ef þú hefur ekki hitt hana enn er í P setja einn texta og mun almennt gefa þér já / nei svör um hvort númerið þitt sé rétt. Að minnsta kosti svo langt sem við erum að fara Til að meta það á grundvelli prófana að við að keyra í þeirri áætlun. Hönnun er miklu meira huglægt. Þetta er hversu vel skrifað er númerið þitt. Og þetta er eitthvað sem þú munt fá betri á tímanum, og það er eitthvað sem við munum veita meiri eigindleg álit á. Og af ásettu ráði að ég gæti meina áður en langt þú gæti freistast í sumum P sett til að gera eitthvað loopingly, en að hafa kannski þrjár eða fjórar, eða fimm hreiður fore lykkjur eða hreiður en lykkjur. Sem almennt ætti byrja að gera þér cringe og myndi almennt vera talið slæmt hönnun. Og þú munt byrja að sjá í bekknum og úr flokki góðum leiðir til að gera hlutina, slæmur leiðir til að gera það sem skyldu allir rétt, en ekki endilega vel hönnuð. Eins og að skrifa ritgerð. Þú might vera fær til að setja orð á a síðu sem eru málfræðilega rétt, en ritgerð eða ritgerð þeir eru í er bara alveg samhengislaust eða unpersuasive. Og svo það gæti verið byggður á hliðstæðum í skrifað heimur slæmt eða góða hönnun. Og stíl, og er það nokkuð huglægt. En að minnsta kosti við búast samræmi. Þetta er hvernig nokkuð er númerið þitt. Eru hlutirnir inndregin fallega? Eru breytur vel heitir / Eru allir af sviga þínum og hrokkið axlabönd takt eins og þeir ættu að vera? Við hafa a CS50 stíl fylgja sem vandamálið sett mun benda þér á. Þeir öruggari eru velkomið að víkja frá því svo lengi sem þú ert sjálf stöðug. Og þetta líka, er lexía við munum styrkja í kafla. Svo, ef allt þetta var svolítið hratt, átta sig á P sett og hlutar mun fara í meira dýpi áður en langur. En almennt höfum við mjög fáir fötunum fyrir CS50. Stigagjöfin er yfirleitt á kvarðanum af einum til þremur, eða einum til fimm. Við erum literally-- og ég get ekki sagt þetta nóg í fyrstu viku. Þrír er góð. Svo, jafnvel þó, já, þrír fimm venjulega, stærðfræðilega, gæti verið 60 prósent eða eins og D mínus. Þrjú er í raun gott. Og í raun, búast við flestir nemendur í bekknum að byrja á hugtakið um twos, og threes og fleira lið. Sennilega ekki svo margir fives. Ekki of margir sjálfur. En almennt að byrja í að sætur blettur í ferlinum þannig að eftir því sem tíminn líður, það er í raun pláss fyrir, og tækifæri til efri framrás. Svo skaltu ekki jafngilda þremur með 60%. Það er miklu meira abstrakt en það. Formúlan sem við reiknum einkunna er vegin þannig. Nákvæmni er þess virði mest. Design er þess virði smá minna. Style er þess virði smá minna. Og þetta almennt fangar tíma sem fer í að fá hver þessara ása bara rétt. Stíllinn er frábær auðvelt, ætti að vera frábær fljótur, en það er auðvelt venja til að fá latur um. Nákvæmni gæti tekið þú mest af þeim tíma. Elta niður nokkur galla kannski taka þessi auka klukkutíma eða meira, og svo, sindur lokum tekur það. Og svo, nú alvarlegri orð. Þar CS50 hefur greinarmun, því að betri eða verri, að vera kannski betra kynnast við málefni fræðileg heiðarleika en flest önnur námskeið. Og reyndar er það við þekkingu mína sem við senda fleiri nemendur, því miður, fyrir aga tilgangi á hverju ári í kjölfarið. Svo, í þágu fullur upplýsingagjöf, við skulum tala stuttlega um hvað gengur á í CS50, og hvað þér getur gert, og hvað þú getur að hafa í huga. Svo, hér síðan 2007, þegar Ég erfði námskeið, er fjöldi stjórnarmanna Ad tilvikum. Board auglýsing er refsiaðgerða Harvard er líkama, eða nú Honor lögfræðingur, sem mál er vísað þegar nemendur gera eitthvað sem að sjálfsögðu er kennsluáætlun telur óraunhæft. Það er engin alvöru mynstur hér, myndi ég segja. Það sveiflast yfir ár en almennt þetta er fjöldi mál sem eru vísað. Fjölda nemenda sem taka þátt? Það er mismunandi líka. Venjulega, á síðasta ári fyrir dæmis 29 nemendur í Harvard voru Ad gekk, svo að segja. 29 Af þeim núverandi nemendur, Tveir af þeim fyrri nemenda, Hverjir voru samstarfi á einhvern óæskileg hátt. Og þá í skilmálar af the hlutfall, það er yfirleitt um 3% í bekknum sem, því miður, gerir þessar tegundir af ákvörðunum. Svo, á síðasta ári var 3,5% af nemendahópsins CS50 er sem var Ad gekk, svo að segja. Svo, hvað þýðir allt þetta? Og hvað gerum við í raun? Svo, fyrir fulla birtingu, við algerlega, eins og tölva vísindamenn, hafa hugbúnað verkfæri til ráðstöfunar okkar og það er mjög auðvelt fyrir okkur, í sanngirni, bekkjarfélagar sem ekki að önnur er yfir þessar línur að fara yfir bera saman hverju uppgjöf á þessu ári á móti hverjum uppgjöf síðastliðin átta ár. Software er þetta. Og að lokum er það manna augum að ákveða hvort eigi að vísa sumir máli fyrir frekari dóms, en hugbúnaður hjálpar vissulega. Og þetta, hreinskilnislega, er ástæðan fyrir því að ég held við höfum svo miklu magni í CS50. Það er ekki vegna þess að CS50 nemendur eða CS nemendur meira yfirleitt eru allir minna heiðarleg en allir aðrir nemendur, það er bara að við höfum verkfæri og aðferðir sem að taka þetta fyrstu umferð. En við gerum að hafa auga á öllum þessum hlutum svo, aftur, í þágu viðurkenna þá vinnu sem er verið að setja í því frábær meirihluta bekknum. Og stefna Námskeiðið er á fræðilegum heiðarleika, jafnvel þó að það er fullt af liðum lengi með fullt af byssukúlum sem eru vonandi alveg læsileg, það raunverulega hjartarskinn sjóða niður til að vera sanngjarn. Og það besta þumalputtaregla að bjóðum við upp upp innan kennsluáætlun er þetta, kjarninn af öllum vinnu sem þér leggja þessu námskeiði verður þitt eigið. Og reyndar, í nánast öllum þeim tilvikum sem um getur fyrir viðurlögum það var vegna þess að sumir nemenda seint eitt nótt sneri oftast númerið hans eða hennar yfir beinlínis til bekkjarfélaga, sem þá samþykkt það í heild sinni eða verulega þegar í stað. En í raun, þetta er í lagi. Og reyndar, á skrifstofu klukkustundir, laumar á pappír þú hefur verið afhent ef þú komst með skrifstofu klst í síðustu viku hvetur eins mikið. Þú ert alveg fagnað og hvatt til að ræða vandamál setur með bekkjarfélögum. Að hjálpa hver öðrum þegar hrasa. En almennt þumalputtaregla ætti vera þetta, "þegar þú ert að biðja um hjálp, þú getur birt númerið þitt til annarra, en þú getur ekki skoðað þeirra. " Svo, með öðrum orðum, ef ég er erfiðleikum með einhverjum P setja og ég sit þar í matsal eða í safninu, eða í skólastofunni reyna að finna einhverja sök, Ég get vissulega sýna númerið mitt á skjánum mínum að sá sem sat við hliðina mér, vissulega starfsfólk, en einnig bekkjarfélaga. En ef lausnin sem bekkjarfélaga minn býður er, ó, hér bara taka a líta á það Ég gerði það, sem fer yfir strikið. Og ég myndi þora að segja það er almennt sanngjarnt hlutur fyrir fólk mjög auðveldlega blettur á línu. Og svo, sjá kennsluáætlun fyrir fleiri smáatriði. Og nú einn af the fleiri umdeild atriði CS50 kennsluáætlun sem ég hélt að ég myndi tala við í niðurstöðu hér er svokölluð eftirsjá ákvæði. Svo, hér er allt smáletur. En almennt við höfum séð Á síðustu 8 plús ár sem reyndar næstum öll CS50 er tilvik fræðilegum óheiðarleika hafa verið afleiðing þess bara léleg ákvarðanatöku seint á kvöldin. Árangurinn af streitu, niðurstaðan skorts á borða, skortur á svefni, of margir P setur, of margir fresti, of margir skuldbindingar. Streita byggja upp í 2:00 AM, 03:00 AM, 4:00 AM, með frest yfirvofandi. Flestir nemendur í þessum tilvikum hafa bara gert slæmar ákvarðanir að þeir gætu vel eftirsjá Næsta morgun ef ekki mínútum síðar, en þar til á síðasta ári að það var engin út loki að þessir nemendur gætu raun að opna allt að raun takast á við Vandamálið höfuð á án ótta um að vera stígvélum úr háskóla með öllu. Og reyndar kynnti við þetta eftirsjá ákvæði síðasta ári, sem segir að ef innan 72 klst, þrjá daga, af yfir nokkrar línu mælt í kennsluáætlun þú kemur fram að einn af sjálfsögðu er höfuð og við munum hafa spjallað um það. Það eru enn vera nokkur niðurstaða, þvert á það sem er verið tilkynnt um hið gagnstæða. Það er enn nokkur niðurstaða sem er gripið til aðgerða námskeiðinu, almennt zeroing á P sett eða taka einhver önnur aðgerð, En við munum örugglega, höndla það sjálf og ekki vísa það voru hærri niðurstaða gæti verið mun alvarlegri. Og reyndar að deila því sem gerðist á síðasta ári, í átta ár, og nú níu ár, er kennt þetta námskeið og eftir tinkering með ýmsum hnappa, beygja ýmis hringsjár yfir fortíðinni nokkur ár á fræðilegum heiðarleika, og sjá fyrir gögnum neitun augljós áhrif, jafnvel af ræðum eins og þetta, þetta var hendur niður besta sem við höfum kynnt pedagogically í átta ár eftir þessar línur í CS50. 19 nemendur komu fram samkvæmt þessari grein á síðasta ári. Við tók engin aðgerð fyrir sjö af þeim nemendum, ákveða að þeir væru óþörfu áhyggjur. Þeir höfðu ekki í raun, yfir línu, en það var góður spjall til að hafa engu að síður. Við núllstilltur 11 af skori sem voru lögð fram. Og í einu tilviki sem við spurði nemandi að gera vandamál sett. En meira sannfærandi, heiðarlega, með þessum 19 spjall, sem var miklu meira en ég gert ráð fyrir að hafa, hvert þeirra 10 mínútur til kannski klukkutíma langur, einnig fært í ljós nokkur atriði varðandi ættgeng málefni, vinur málefni, andlega heilsu málefnum að við þátt þá, með nemanda blessun, búsettur Deildarforseti, eða vinir, eða eitthvert annað númer þjónustu við notendur. Þannig að þetta var lang einn af bestu notkun okkar tíma og einn af bestu inngrip. Með því að segja, hafði það engin inntak á hraða greiningu akademískra óheiðarleika almennt. Og ég þori að segja, þetta hlutmengi nemenda á síðasta ári Var lýðfræðilegar sem við áður aldrei greind áður og hafði aldrei tengdur við áður. Og svo voru þetta dásamlegt árangurssögur jafnvel þó þeir voru leiddi í ljós í minna en ákjósanlegur aðstæður. Svo, halda þetta í huga eins og þú gerir, ef til vill, sumir léleg ákvörðun sjálfur seint á kvöldin, að það er leitað svo lengi sem nemandi í því ástandi eiga sig og koma fram svo að við getum hafa svona spjall og takast á við það á þann hátt sem er í námi, og þá við getum sett það á bak við okkur daginn eftir. Svo án frekari fjaðrafok, taka brún burt af þessu samtali, ástæðan hvolparnir eru upp er bara til að brjóta ísinn um stund. Og því miður, þá eru þeir allir sofna, en það sem átti að gerast hér var allir átti að ótti og tegund slaka eftir að mjög þungur samtali. En svo virðist sem ég setti hvolparnir að sofa. En ef þú ferð til CS50 er website Slash hvolpar, þú getur horft á þau allan daginn. Sérstaklega kannski 02:00 eða 03:00, eða 04:00 á kvöldin sjá smá streita léttir það. Svo er að rista hvolpa. Allt í lagi. Var þetta ekki gaman? OK. Svo aftur að einhverju tölvu vísindi, ef ég má. Svo, muna að síðasta skipti við byrjuðum leita ekki bara á main, sem var sjálfgefið virka, þegar grænn fáni smellt jafngildir, en við byrjuðum líka stuttlega skrifa sumir af eigin aðgerðum okkar. Og svona langt ekkert af þessum aðgerðum hafa verið sérstaklega stór eða kjötmikill. Þú munt fá í þeim stærri virka sennilega, P sett 2, P setja 3, örugglega P sett 4 og áfram. Núna flest forrit, ef ekki alla þá, vissulega fyrir P setja 1 er hægt að gera alveg í main. Ef forrit er bara fimm línur, 10 línur, jafnvel 20 línur lengi, fullkomlega sanngjarnt að skrifa það allt í helstu og ekki til yfir flækt númerið þitt, en það sem við erum að gera í dag og áfram er að reyna að einnig kynna nokkrar góðar aðferðir hönnun þannig að eins númerið þitt fær fleiri flókið og eins og vandamál þú vilt að leysa fá erfiðara og meira áhugavert að þú ert, eiginlega, verkfæri í Verkfæri sem að hanna góðar lausnir fyrir þá. Svo, við skulum taka a fljótur líta til baka á þetta forrit frá síðustu viku mína, sem var hlutverk núll punktur C. Og taka eftir því, einfaldlega, það lítur út eins og þetta með tveimur aðgerðir, helstu og nafn prenta. Og hugsa til baka eða kannski andstæða verkfræði dag, hvað var hvatning til að kynna fall í línu 28 sem heitir, Prenta nafn? Eða hvað var þetta dæmi um í skilmálar meginreglu eða takeaway, ef þú vilt. Sumir muldur. Hvað? Já svo Functional Niðurbrot er góður af fínum leið að segja, brotna program í efnisþáttum sem hún og þá nota þá hluta að setja saman eina heild. Svo, það líka er bara svona af munnfylli nú þegar, en þetta er jafnvel heil betra dæmi um eitthvað hringdi abstrakt. Ekki satt? Abstrakt er að fara að vera einn af endurteknum þemum í CS50 og einnig tölvunarfræði almennt þar sem það er tækni sem þú getur leyst vandamál betur vegna þess að þú getur skrifað lausnir meira innsæi og á þann hátt sem vog og er skiljanlegt af öðru fólki. Hvað geri ég meina með því? Svo, að öllum líkindum er það miklu læsilegri að líta á dagskrá eins og þetta, frábær stutt þó það sé. Þegar þú sérð á línu 22 að það er fall sem heitir, nafn prenta. Að nafn eitt og sér segir það sem það gerir. Sem virka greinilega tekur inntak milli sviga sínum, og virðist gerir eitthvað, væntanlega prentar nafn. Og svo, jafnvel þótt við algerlega gæti hafa gert það sem við gerðum fyrir viku síðan, sem var bara taka þetta raunverulegt línu af kóða, að losna við þetta, og fá losna við þetta allt saman, við horfir konar burtu hugmyndin um prentun nafn. Mér er alveg sama ef þú ert að nota prenta def. Mér er alveg sama ef þú ert a prósent S og sviga N. Þetta eru ótrúlega Bogagöng upplýsingar. Það sem ég er alveg sama um sem forritari er prentun nafn. Og svo, hvaða betri leið til að gera það en með því að hringja í virka, prenta nafn? Og svo, sem var einn af motivations fyrir að gera eitthvað eins og this. Gerð kóðann læsilegri, meira einnota, og einnig sjálf lýsandi. Nú, við skulum taka a líta annað dæmi, sem var virka einn, sem við höfðum hérna. Svo, þetta er jafnvel meira sannfærandi vegna þess að, í þessu tilfelli, Ég vil ekki bara fá int. Ég vil fá jákvæða int. Og það kemur í ljós að fá jákvætt int þú þarft að gera fullt af legwork. Ekki satt? Það er ekki einföld lína kalla eins nafn prenta var, sem er að vísu minna sannfærandi. Til að fá jákvæða int, logically-- láta mig fletta aftur niður til að fela þetta. Hvað þarftu að gera? Eins og öll þau tæki sem við höfum í augnablikinu eru hlutir eins og prenta def frá Standard Bókasafn og einnig frá CS50 bókasafn við höfum Fá Int, og fá fljóta, Fá Long Long, fá String, en aðeins eitt, germane, núna er að ná Int. Svo, ef bara tól sem þú þarft í tól kassi er Get Int, hvernig eigum við að fara um framkvæmd það að fá jákvæð int? Áhorfendur: Búa til skrá þig inn og athuga hvort inntak sem þeir gáfu var jákvæð eða ekki. Ræðumaður 1: Perfect. Nákvæmlega. Annar tól sem við höfum í okkar Verkfæri frá viku eða tvær síðan er bara lykkja reisa. Og svo, já, ef við notum á meðan lykkja, eða gera á meðan lykkja, eða yfirborðið lykkja við gætum sennilega komast upp með einhverjum af þeim að einhverju leyti. Við getum framkvæma hugmynd af fá jákvæð INT bara með því að nota Fá Int, og þá bara að halda að kalla það aftur og halda pestering notanda þar til hann eða hún í raun gefur okkur það sem við viljum. Og svo nú, þetta abstrakt af ferlinu um að fá jákvætt int í aðgerð sem kallast Fá Jákvæð Int er svolítið meira sannfærandi vegna þess að líta á þetta. Þetta eru eins og 10 plús línur af kóða sem taka þátt í að fá jákvæð int, og ég er ekki alveg sama hvernig þú gerir það. Mér sama er að þér getur gert það, og svo ég hef falinn allar þessar upplýsingar á bak við virka heitir Fá Jákvæð INT að reyndar hefur þetta að gera á meðan lykkja. Og sjá í síðustu viku fyrir setningafræði þar, en það segir bara N, og það prentar út kennsla til notanda. Það kallar Fá Int og þá athugar það þetta ástand aftur og aftur, og aftur þar til notandi samstarf. Svo nú, nokkrum eftirlit geðheilsu. Fyrir þá kannski kannast með nokkrum forritun, hvers vegna er N lýst, hvers vegna ég til N utan gera á meðan lykkja? Hvers vegna er það á línu 29 og ekki á eins 33, til dæmis. Áhorfendur: Vegna þess að þegar þú lýsa það utan, það góður af meiri, stærri scope-- Ræðumaður 1: Good. Áhorfendur: --and ef þú lýsa það inni í lykkju, [inaudible] vegna þess að það veit ekki um það. Ræðumaður 1: Einmitt. Ef ég get simplify-- það er spurning um gildissvið. Og umfang vísar til samhengi í sem breyta til eða er nothæft. Og ágætur þumalputtaregla hér er að yfirleitt þegar þú lýsa eða búa breytilegum þú getur aðeins notað það inni af næst faðma hrokkið axlabönd. Svo hvað þýðir það? Ef ég, í stað, losa þetta og fara með eitthvað sem líður svolítið einfaldara. Ekki satt? Line 32 lítur bara hreinni mér núna. Ég ætla að gera bæði hluti í einu sinni og þá úthluta hægri hönd á vinstri hendi. Vandamálið byggist nú á að skilgreining á umfangi er að N hægt er að nota í línum 31 og 32 inni þessa lykkju, en þar sem sú skilgreining það er ekki hægt að nota? Í línu hvað? Já. Áhorfendur: 35. Ræðumaður 1: 35. Örugglega ekki 35. Og einnig hvar annars? Áhorfendur: 34. Ræðumaður 1: Jafnvel 34 er erfið vegna þess að það er utan hrokkið axlabönd. Og svo í raun, við skulum sjá hvað gerist. Ekki satt? Þetta kann að virðast svolítið eða gæti leiðandi ekki, en við skulum sjá hvað þýðanda er að segja þegar við förum inn uppspretta skrá dag. Gera virka einn. Guð minn góður. Jæja, lauk ég loksins að, við the vegur. Allt í lagi. Og hvað er málið hér? Mjög yfirnáttúrulegt að líta á. En hér er það sem ég typed-- gera virka einn. Hér er það gert völdum, sem er í raun með þýðanda clang með eitthvað af þeim fánar að við munum sjá ný áður en langt. Og aftur, alltaf að líta á fyrsta villa, vegna þess að það gæti bara hafa Cascading tilgangslaust áhrif á aðrar línur. Svo hvað þýðir þetta er að Vandamálið er í virka 1.c. Það er á línu 32. Og það er á súlu eða eðli, 13. Svo þegar texti ritstjóri sem getur hjálpa þér að finna þar sem málið er. Svo ef ég skruna upp, hvað er lína 32? Það er örugglega þetta sem er þegar auðkenndur rétt here-- ónotaður breyta n. En það er ekki ónotað. Ég ætla að nota það. En þýðandinn er ruglaður, því það er aðeins innan þessa ramma. Og svo ég get ekki notað það hér. Ég get ekki notað það hér. Og þýðanda, því ekki einu sinni sama að ég er að reyna. Það virðist vera ónotað innan raunverulegu umfangi þess. Þannig að við getum víkka með því að gera einmitt það sem við byrjuðum with-- int n. Og jafnvel þó það hjartarskinn ekki líta út eins og glæsilegur, ef til vill, og við erum að taka við auka línu hér, nú er það að umfangi alls staðar. Svo skulum reyna aftur. Svo gera virka einn. Nice. Og nú ef ég ef ég hlaupa virka einn, við skulum gefa það neikvæð 10, neikvætt 1, 0, 1, og það virkar örugglega. Svo er það önnur lausn hér. Veistu hvað? Hvað ef ég virkilega er að glíma við þetta? Ég veit ekki hvar n er ætlast til að fara. Veistu hvað? Ég ætla bara að fara að setja það allt leið efst á skránni minni hér. Hvað myndi þetta ekki, finnst þér? Já? Áhorfendur: [inaudible]. Ræðumaður 1: Já. Þannig að ég hef gert það á heimsvísu, svo að segja. Ef þú ert með breytu sem er utan allar aðgerðir þínar sem er leyft, og númer ætti að taka saman, og n mun nú vera aðgengileg ekki aðeins í að fá jákvæð int, en einnig í main-- sem er svolítið áhyggjuefni vegna þess að það er nú þegar n í helstu, svo fleiri á að í aðeins moment-- en þetta myndi teljast slæm hönnun. Allt í lagi. Ef þú þarft að grípa til eitthvað eins og, ó, ég bara setja það upp hér því kóðinn virðist að safna saman er yfirleitt ekki sú besta æfa. Frekar þú vilt að velja narrowest mögulegt umfang fyrir breytur, sem myndi þýða að fara með fyrstu hönnun okkar, sem er hérna. Nú sem innskot, ef þú did hafa An samur heitir breyta hér, hvernig c myndi höndla this-- þó að þetta mun ekki gerast of often-- er að þetta er enn fullkomlega fínn hér. En þessi skilgreining n í línu 22 mun skuggi á heimsvísu einn. Svo þetta mun virka innan Helstu og alþjóðlegt einn mun í raun gilda þegar þú ert í fá jákvætt INT En meira um það annar tími, en bara fyrir þá forvitinn. Svo í stuttu máli, að laga við þetta hér. Nú skulum stríða í sundur tvö önnur stykki Áður en við skoðum eitt síðasta lína af kóða í þessari áætlun. Fá jákvæð int. Á vinstri hönd hlið af Bæta hennar er orðið Int. Hvað þýðir að signify finnst þér? Þannig langt við höfum að mestu séð ógilt. Já? Áhorfendur: Það er tegund af breyta sem þú ert að spyrja um. Ræðumaður 1: Já það er tegund af, láttu mig ekki segja breytileg, en gerð af value að ég ætla að biðja aftur fyrir. Og reyndar, það er innsæi hér, vonandi. Ekki satt? Ef þú vilt fá jákvæð int, hvað er það sem þú vilt function-- eins okkar sjálfboðaliðar frá síðustu viku að skila þér aftur stykki pappír með int á það? Og svo við höfum tilgreint að svokölluð aftur gerð þessa aðgerð er að fá jákvæða int. Ef við ekki vilja það til aftur eitthvað, þú segir ógilt. Ef þú vilt það til að fara aftur band, þú segir band. Ef þú vilt það til að fara aftur fljóta, segir þú fljóta. En eina sem gildir hér rökrétt, því ég er að nota GET int, jafnvel þó að ég er að takmarka hana við jákvæð gildi, er að skila int. Svo öfugt, hvað þýðir það að það er ógilt í sviga? Hvað gera sviga skilgreina almennt? Já? Áhorfendur: Það þýðir að virka er ekki í raun að fá það. Ræðumaður 1: Það þýðir að fall er ekki í raun að fá það? Áhorfendur: An inntak. Ræðumaður 1: An inntak, af neinu tagi. Svo reyndar, ef svigi hér þú tilgreinir ógilt, það bara þýðir að ég vil ekki allir inntak. Ég takast á við vandamál sjálfur. Og reyndar, þú þarft ekki að segja fá jákvæð int neitt. Þú segir bara, fá jákvæð int, og að aðgerð mun fara burt og gera hlutur hans. En það hefur verið smá bragð sem ég hef verið að spila hér allan þennan tíma að ganga úr skugga um að þetta númer safnar. Takið eftir að int-- fá jákvætt INT void-- er á línu 27. En af einhverjum virðist undarlegt ástæða það er líka hér á línu 16. Og bara gott mál ég endurtek þetta svo það er fullkomlega eins. Og ég hef sagt frumgerð með smá einn-lína athugasemd. Hvað gerist ef ég eytt það og nú endursýning gera virka 1, inn. Úpps. Bíddu aðeins. Hvar er flipinn minn? Huh? Standby. Gera valkostinum 1. Það sem við förum. OK. Hefði ekki vistað það almennilega. Svo held ég að það sé lítið padda hér þar sem ég er ekki sjá flipann nafnið í augnablikinu. Svo hvað er að gerast hér? Óbeina yfirlýsingu um virka fá jákvæð int er ógilt í C99. Svo ruglingslegt aftur. Svo er það þetta til marks um? Jæja, það kemur í ljós að C er ansi heimskur. Jæja, það er forritun tungumál, eða öllu heldur þýðandinn er. Það veit aðeins hvað þú hefur kenna mér það, og það er bara að fara að vita eitthvað ef þú kennt það áður. Með öðrum orðum, í Helstu í augnablikinu, ég er reyna að hringja í aðgerð kallaði fá jákvæð int. En þýðandinn er ekki að fara að taka eftir því að fá jákvæð int hendi til línu 26. Og svo það sem þýðandinn gerir er bara villur um leið og það fær að stilla 17, segja óbeina yfirlýsingu af fá jákvætt int, sem er bara fínt leið til að segja, ég er ekki vita hvað fá jákvætt int er enn. Önnur tungumál eins og Java og Python og Ruby gæti líta undan. C er ekki. Og svo hvernig við gætum þetta er einn af tvo vegu. Annaðhvort einn, ef vandamálið er að fá jákvæð INT hefur ekki sést áður, Jæja, láttu mig fara bara það að ofan. Sem myndi laga þetta vandamál. En almennt, það er talin betri tækni að setja helstu virka á mjög efst svo að mönnum að lesa kóðann þinn veit hvað forritið gerir, vegna helsta er ekki grafinn allt leið neðst eða í miðjunni. Það er á mjög toppur. Svo sem ekki finnst tilvalið. Og þú getur raunverulega fá inn í aðstæður þar ef einn virka símtöl annars, sem kallar annað, þú getur fengið inn í málefni þar sem hvorki getur farið yfir öðrum, þá er rökrétt. Það er bara ekki hægt. Og svo leið til að vinna í kringum þetta er að bara taka undirskrift fallsins, svo að speak-- fyrsta línan þar sem það er declared-- og bara að afrita, líma það á að efst, en ekki með hrokkið braces-- bara með semíkommu. Það er eins og lítill vott um hvað er að koma. Og í raun, allan tíma þegar við hafa séð hlutina eins og staðall io.h og cs50.h sama skapi í þeim punktur h skrár eru það aðrar frumgerðir. Og við munum sjá að áður en langur. Svo í stuttu máli, þegar þú ert með forrit í skrá með margar aðgerðir auk helstu, þú næstum vilja alltaf að lýsa þeim bara með því að fyrst þeirra lína, fylgt eftir með semíkommu, á the mjög toppur af the skrá. Það var mikið í einu. Einhverjar spurningar? Einhverjar spurningar? Allt í lagi. Svo við skulum fara á þá að eitthvað eins hósta. Oh. Hvernig mátun. Allt í lagi. Hósti. Svo hér er C framkvæmd áætlunar við gerðum um daginn í Scratch að mjög einfaldlega bara segir hósti, hósti, hósti. Allt í lagi. Einhver sagði nokkrar dögum að það er leið að þrífa þennan kóða upp nú þegar. Allt í lagi? Um leið og þú ert að afrita og líma sennilega slæmt hönnun. Að minnsta kosti einu sinni við fáum að fjórum eða fimm eða 20 hósti, finnst það slæmt starf. Við höldum bara eintak, stæling. Hvað er augljós lausn að þrífa þetta forrit upp? Áhorfendur: Loop. Ræðumaður 1: Já. Svo nota lykkju. Og við getum notað til að lykkja, á meðan lykkja, allir tala um aðferðir. Og reyndar, það er það við gerum í útgáfu eitt hér. Ég hef í staðinn endurskrifa það í útgáfu eitt af cough.c að vera bara hósti innan fyrir-lykkju. Allt í lagi, en það er tækifæri nú að eins konar byrjun að hanna þetta svolítið meira eins lexía sem við kennt í smá stund síðan, sem er this--, að ég vildi til að búa til fall sem kallast hósti, við skulum íhuga fyrir aðeins augnablik hvað það er að fara að líta út. Þannig að ef ég vil eitthvað að hósta, ég þarf bara að nota prenta f inni í virka. Og reyndar er ég. Og í raun, allt þetta tími hvenær þú ert prentun eitthvað til skjárinn, forritari myndi kalla þessi aukaverkun. Það er mér ekki fötlun aftur einhver gildi. Það er mér að taka til aðgerða sem gæti verið sjónrænt augljóst. En þessi aðgerð hósti, er það aftur nokkuð miðað fyrstu línu? Nei, vegna þess að gerð aftur þess er ógilt, sem þýðir bara það er ekki fötlun mér neitt til baka. Það gæti verið að gera eitthvað sjónrænt, en það er ekki fötlun mig aftur a stykki af pappír eins og í síðustu viku. Er það þarf allir inntak? Nei Og svo er það ógilt hér líka. Þannig að þetta er líka svona yfir-verkfræði þetta vandamál. Ekki satt? Ég hef gert forritið meira flóknari, fleiri línur af kóða, Ég hef ekki gert það lengur fleiri hagnýtur, en þetta væri stepping steinn, kannski, fyrir breiðari samhengi við flóknari kóða. En hvað um þetta? Hvað hef ég done-- bara glancing þetta án þess að horfa á the athugasemd á the mjög toppur af the file-- hvað hafa Ég hef gert grundvallaratriðum hér með hósta minn framkvæmd sem er öðruvísi? Já, í bak? Áhorfendur: Gerðu það svo þú getur hafa eðli slökkva. Ræðumaður 1: Já. Svo finnst svona gaman. Ekki satt? Það er eins og að bæta möguleika til þinn forrit eða aðgerð, í þessu tilfelli. Það skilar samt ekkert. Það gæti hafa sjón aukaverkun vegna þess að það er að kalla prenta f. En nú hef ég parametrized fallið, sem þýðir að ég hef tilgreint tekið inntak int og kalla það n, en ég gæti kalla það eitthvað sem ég vil. Í raun gæti það bara verið sinnum til að vera jafnvel meira skýr. Og þá gæti ég bara að breyta þessu hér. En málið er að þetta er hvernig ég búa til fall sem tekur inntak. Og ef þú manst ósvífni gegnum kannski á netinu í einu af göngu throughs er Fjórða og síðasta hósti dæmi, þú munt taka eftir hér ég hef almennt númerið mitt further-- konar óhlutbundin það frekar. Eins hósta og hnerra, bæði eru um eins og að segja eitthvað eða gera einhvers konar hljóð. Vista væri samsvarandi Scratch blokk. Og svo það sem ég gerði í þessari útgáfu, sem við getum bara litið á, er hósti er bara eins og að segja, [hósti], hósta, og á meðan, hnerri er eins og að segja, [Achoo]. Og svo ég hef almennt framkvæmd þeirra nú að innleiða þetta almenn aðgerð, segja, sem er áhugavert tilgangi í dag aðeins vegna þess að það samt hefur ekki aftur gerð. En hversu margir inntak er á honum? Áhorfendur: Two. Ræðumaður 1: Two. Og svo ef þú vilt taka í tveimur rök, bara aðskilið þau með kommum. Og ef þú vilt að þá kalla að virka, eftir því að þú bara kalla td vitna, unquote, í fyrsta rifrildi, algengar n, fyrir seinni rök. Svo aftur, höfum við bara nú kubbar svo að við getum í raun framkvæma sumir af eigin störfum okkar. Allt í lagi. Einhverjar spurningar um þetta? Svo nú skulum afhýða aftur lag ef svo. Og markmiðið, að lokum, er í næstu viku Heimadæmi er að fara að vera á cryptogrophy-- listin að spæna upplýsingar. Og sérstaklega, þær upplýsingar verður þú dulkóða eða hallmæla er að fara að vera texti. Og svo að eins konar boðum spurningin í dag eins vel, hvað er að gerast undir hetta með texta utan ASCII frá viku núll, Og hvernig getum við í raun byrja að vinna það? Svo er hér nafn Zamyla er. Og í texta, sem gæti verið inputted í eins fá band virka. Og að byrja núna þegar þú sérð string eins this-- Z-A-M-Y-L-A-- byrja að hugsa um það eins og hver af þeim stafi er í kassa af þess eigin. Og reyndar, í viku eða svo er tími, hver af þessum kassa er að fara til að tákna það sérstaklega blokk af memory-- bita af minni. Svo að hver af þessum bréfum, lokum, mun tákna 8 bita. Og við munum í raun sjá hvað er að gerast á undir hetta í tölvunni minni. En fyrir ekki það nægir bara að líta á Zamyla í gegnum þessa linsu, þar sem sérhver af þessi bréf er í eigin kassa sínum. Og fallega nóg í C við getum fá aðgang að hvert af þessum kassa beint. Svo ef þú vilt fá sem fyrst staf í nafni hennar, frábær auðvelt í C. Ef þú vilt fá síðasta bréf, frábær auðvelt eins og heilbrigður með stykki af nýju setningafræði. Þannig að ég ætla að fara á undan í CS50 IDE og opna strenginn núll punktur C. Og í þessu dæmi hér, það eru a par af nýjum hlutum að gerast. Svo fyrst í línu 19, höfum við séð þetta before-- fá band. Svo bara eins og a fljótur andleg heilbrigði stöðva, ef einhver gæti boðið upp munnlega skýring leikmaður er á hvað er að gerast í línu 19. Eins og bara þýða þetta í English að herbergisfélagi ekki í CS50 skildu. Já. Áhorfendur: Hafa notanda inntak A band og geyma það í breytu s. Ræðumaður 1: Good. Hafa notandi inntak streng og geyma það í breytu s. Það er frábært. Svo á hægri hönd hlið, köllum fá band. Sem skilar gildi sem ekki fá úthlutað frá hægri hlið til vinstri hendi hlið í breytu sem heitir s sem er hannað til að geyma streng. Nákvæmlega. Svo nú línu 22, fyrir athugasemd í línu 21, augljóslega prentar þessi band einn staf í hverja línu. En hvernig? Svo fyrst af öllu, frumstilla við ég við 0. Og þá hvernig fáum við að enda nafni Zamyla er? Jæja, í lok Nafnið Zamyla, ég gat höndunum tegund í síðustu eðli nafn hennar einhvern veginn, eða fjöldi af það. Ekki satt? Ef við förum aftur here-- Z-A-M-L-- Y-L-A-- svo ég gæti slegið í. Hvað er vísitala Síðasta bréf Zamyla er? Ef þetta er 0-- tala eins og programmer-- 0, 1, 2, 3, 4, 5, Ég heard-- svo reyndar síðasta bréf í nafni Zamyla er sjötti en ef við teljum frá 0, það er að fara að vera númer 5. Svo halda að í huga hér. Það kemur í ljós að það er aðgerð í C heitir strlen og aftur í dag og til þessa dags enn, a einhver fjöldi af forriturum velja að samræma nöfn fyrir þeirra aðgerðir sem hljóma eins og orð þeir eru að reyna að segja. Svo strlen er band lengd. Og svo hvað myndi string lengd S aftur þegar Zamyla er inntak? Áhorfendur: Fimm. Ræðumaður 1: Z-A-M-Y-L. Six. Ekki satt? Hvað er lengd nafni Zamyla er? Ekki satt? Og bara í raun og veru, sex bréf. Ekki satt? Og svo hvað þýðir það fyrir lykkju okkar? Við erum að fara að fara frá 0 upp í sex, sem er að fara að gefa okkur fimm endurtekningar. Hvað gerum við á hverjum endurtekning? Jæja, prósent C, einhver giska um daginn, merkir tákn fyrir hvað? Áhorfendur: Char. Ræðumaður 1: Just a bleikju. Svo einn character-- ekki margar persónur eins og band. Og þá er hér nýja línu sem við höfum fengið að prenta út. Og þá er hér nýja setningafræði. Ef þú vilt prenta út i-ta staf í streng S, svo að segja, þú getur einfaldlega sagt Heiti band S, og þá opna veldi krappi, og þá lokað ferningur krappi, með i miðjan. Og það er góður af gaman í það það lítur svolítið eins og ferningur bara eins og ferninga sem Zamyla er stafir eru á þeirri mynd þar. Þannig að ef ég hlaupa í raun þetta nú, við skulum sjá hvað gerist. Gera band 0 punktur rista band 0, og þá er ég að fara að skrifa í nafni Zamyla er. Það er engin hvetja, vegna þess að ég gerði ekki nota prenta f, en það er allt í lagi. Ég veit bara hvað ég á að gera. Og reyndar, prentar það út Nafnið Zamyla, einn í hverja línu. Nú skulum vera svolítið kærulaus. Segjum sem svo að ég vissi ekki um strlen og ég mynstrağur, allt í lagi, enginn er að fara að hafa nefna stærri en eins og 50 stafi. Við skulum fara á undan og laun þetta og endursýning það, og þá tegund í Zamyla aftur. Rökrétt, hvað er program að fara að reyna að prenta? Z-A-M-Y-L-A þá eins og 45 óþekkt bytes af minni. Og reyndar, munum við koma aftur þessari hugmynd minni. En bara rökrétt, ef Nafnið Zamyla er þetta lengi, eins og á myndinni hér, hvað við erum að segja er að halda prentun, halda prentun, halda prentun, halda prentun, halda prentun, alla leið til 50 eðli, sem hver veit hvað er að fara að gerast. Svo skulum taka raunverulega útlit. Við skulum slá í Zamyla. Áhugavert. Við fengum heppinn. Bara allt fullt af hvítum rúm. Oh. Það er eitt angurvær staf. Það lítur svona út eins og skrýtin spurning merkja það, en það er nafn Zamyla er. Við skulum fá raunverulega kærulaus. Hvernig væri að við að prenta út 500 blokkir í hið óþekkta? Við skulum fara á undan og gera þetta eins vel og þá með tilvísun til-hlaupa. Og við skulum fullur skjár það, vegna þess að við þurfum að sjá meira pláss. Zamyla. Fékk heppinn aftur. Þora við að fá meira kærulaus? Skulum fá meira kærulaus. 50.000 stafir. Þetta er eflaust ekki góð hugmynd. Allt í lagi. Gera band 0. Þetta mun vera síðasta kynningu okkar. Zamyla. Ugh. Ugh. OK. Svo er minnið mitt raunverulega tóm núna, sem er í raun eins konar þægilegt. Það sem ég er að reyna að fá to-- allt í lagi. Og núna er ég bara að fara að fá kærulaus. 500.000. Make-- skulum allan skjáinn það. Sláðu. Zamyla. Það sem við förum. Ég hef ekki hugmynd um hvað það er, en það hljómar illa. Allt í lagi. Og í raun, fljótlega, ef þú ert meðal heppinn fáir í skrifstofutíma og í vandamál setja einn, þér gæti mjög vel fundur þetta. Skiptingu kenna í raun er hafa vel skilgreinda merkingu. Það þýðir einhvers konar mistök varðandi hluti af minni. Og í skilmálum leikmaður er, það þýðir að við snert memory-- við notuðum vinnsluminni í tölvunni minni að ég ætti ekki að hafa haft aðgang að. Og það er það sem er bæði öflugur og líka hættulegt um C er að þér í raun hafa ótakmarkaðan aðgang að heild minni forritsins þíns eða bytes eða RAM, nánar tiltekið. Svo jafnvel þótt nafn Zamyla er er aðeins sex stafir að lengd, Ég get samt farið neitt í minni sem ég vil. Og eins og til hliðar, ef þú hefur alltaf að lesa einhverja grein í gegnum árin um sum miðlara eða eitthvað forrit fá klikkaður eða tölvusnápur sem er tekið forskot á einhverju kallað biðminni flæða nýta sem við munum í raun tala um í nokkrar vikur, sem er almennt vísa til einhvern veginn svikull tölva í að fara vel út fyrir landamæri minni að það ætti að hafa, og finna eitthvað safaríkur í því memory-- a lykilorð, ef til vill, leið af sniðganga sumir raðnúmer athuga, eða bara almennt fær að plata tölva er að framkvæma númer sem ekki var ætlað. En við skulum koma aftur til veruleika fyrir aðeins augnablik þar sem þetta forrit var útfærð með strlen, og kynna eitt hérna. Hvað er nýtt meðal þessara efstu þremur línum? Svo string punktur klst. Það kemur í ljós að það er þetta bókasafn heitir String Dot H, eða String Library, sem haus skrá, svo að segja, er band punktur klst sem gefur mér aðgang að þessum strlen virka. Ef ég sleppa því, þýðanda er að fara að æpa á mig í einhverri mynd. En þú veist hvað? Nú skulum fá raunverulega nuanced. Í samræmi 22, eitthvað góður af inefficient-- illa hannað, arguably-- um þessa línu af kóða. Hugsaðu til baka um hvernig fyrir-lykkju sé framfylgt og hvaða skref gerast aftur og aftur og again-- í frumstilling, ástand, kóðinn sem fær framkvæmt, þá stighækkun eða breyting því skilyrði, þá kóðann, þá breyting, þá ástand, þá kóðann, þá breyting, og svo framvegis. Svo það gæti verið smá áhyggjuefni eða illa gert hér? Já, í bláu. Áhorfendur: strlen er kallað margir, margir sinnum. Ræðumaður 1: Já. Svo strlen heitir oft, en það er lengd nafni Zamyla er að fyrsta skipti sem lykkja keyrir? Áhorfendur: Six. Ræðumaður 1: Six. Jæja, hvað er lengd hennar nafni í annað sinn fyrir framkvæmir? Áhorfendur: Six. Ræðumaður 1: Allt í lagi. Það er samt sex. Ekki satt? Nafnið Zarla hefur ekki breytt, jafnvel þótt ég er að leita á aðeins hluta af bréfum í nafni hennar. Og svo sú staðreynd að ég er í raun spyrja þessa spurningu, hvað er lengd Zamyla, hvað er lengd af Zamyla, hvað er lengd Zamyla, sex aðskilin sinnum, eða sjö jafnvel er bara heimskur, því það er óbreytanleg sem svar. Og svo það sem ég gat í raun gera er this-- í streng einum Ég er með ívið betri útgáfu hér. There-- whoops-- string tvö sem ég hef eilitlu betri útgáfa þar Ég this-- staðinn af réttlátur Frumstilli i 0, ég líka með kommu lýsa annað breytu sem heitir n- Ég þarf ekki að segja int aftur. Ég ætti ekki í raun. En ég segi n. Og þá er ég frumstilla n að að strlen af ​​N, þannig að nú hversu oft er strlen fá fram í samtals? Bara einu sinni. Og svo er þetta það sem við er átt áðan um betri hönnun. Reyndar númerið þitt er einu sinni rétt, fara aftur og hugsa um, ég nota eins lítið minni eða nokkrar sekúndur eða millisekúndur tölva tími sem hægt að framkvæma sumir vandamál? Og ég ætla að fletta upp og bara nefna að það er þetta minnst af null í þessari útgáfu, en við munum koma aftur til að áður en langur. Þar fyrir nú, við skulum taka a líta á þar sem þetta er að fara að leiða okkur. Svo einn, kemur í ljós að nú að við höfum getu að líta á einstökum persónum, við getum nýta eitthvað frá viku 0 sem var mjög yfirnáttúrulegt og konar uninteresting á þeim tíma. En nú, og sérstaklega þegar við fá að Dulmálsvísindi í viku, það er að fara að vera nokkuð öflug. Það kemur í ljós að sum Gögn types-- ints og flýtur og stafir og strengir og annað things-- sumir þeirra getur verið mjög auðvelt að breyta í annað. Til dæmis, þegar við ræddum um ASCII nokkurn tíma ago-- hér er höfuðborg bréf A til M, punktur, punktur, dot-- við sögðum að það er kortlagning milli þessara bókstafa og tölustafa. Og í raun, heldur það satt fyrir lágstöfum eins og heilbrigður. Lágstafir a er 97, höfuðborg a er 65. Og það er a tala í ASCII, sem er bara þetta kortlagning kerfi fyrir öllum þeim öðrum bréfum. Svo hvað þýðir það? Jæja, ég ætla að fara á undan og opna upp alvöru fljótt eitthvað sem kallast ASCII 0, sem flest er athugasemdir. Og aftur á netinu sem þú getur alltaf litið í gegnum athugasemdir. Og kíkja hvað þetta er að fara að gera. Svo það er got a aðalæð virka. Ég hef harður-dulmáli tölurnar bara fyrir nú, vegna þess að ég veit hvað ég er að gera. Ég veit hvað ég vil sjá hér. Og ég hef frumstilla ég að 65. Og ég er að telja upp gegnum 26 bréf alls. Og hvað er ég að fara að prenta eina línu í einu ef þú getur túlkað þetta hápunktur línu? Hvað fær prentað? Já. Áhorfendur: Ert þú að fara að prenta bréf sem svarar til kort af bréf gildi og tala gildi? Ræðumaður 1: Einmitt. Ég ætla að prenta bréf sem svarar til integer, og öfugt, eins og hér segir. Jæja þetta, einhver sagði áðan, er bara tákn fyrir bleikju. Það er enn. Þetta, auðvitað, er tákn fyrir að int-- ekki ný lína. Og nú eftir, fyrsta gildi mína að Ég er að tengja í fyrir þessi tákn er ekki bara I. ég er að segja, í sviga, bleikju I, sem parenthetical bleikju er segja þýðanda, meðhöndla ég ekki það sem það er, sem er tala. Meðhöndla það eins og raunveruleg persóna. Í annarri gildi ég tengja in-- I-- ætti bara að vera tala. Þannig að ef ég saman þetta program-- svo er þetta gera ASCII 0, punktur rista ASCII 0-- Ég fæ bara Þessi handhæga litla graf sem sýnir mér allar hugsanlegar kortlagning án þess að þurfa að hugsa það um eða reikna það út á eigin vegum. Og ég ætla líka að prenta út, taka eftir lágstöfum, því nokkrum línum síðar, ég einnig prentað út þessa kortlagning eins og heilbrigður, sem er bara að segja að þegar þú skilur hvað er að gerast undir hetta, getur þú sjálfkrafa umbreyta fram og til baka. Og í raun, ef einhver ykkar alltaf gerði þetta í grunnskóla eða heyrt um einhvern mythically taka mið og liggur það til hans eða vinkona hennar í bekknum, en þú spæna á bréf með eins A verður B, og B verður C, eða eitthvað flóknara en það, vel, hvernig væri að fara um framkvæmd að sem krakki? Jæja, þú bara svona vita A verður B, B verður C, en stærðfræðilega, hvað var að strákurinn gera? Hvað varstu að bæta við hvern staf? Í raun, 1. Svo, það er þegar þú skiptir A til B svona eins og að breyta 65 í 66, sem stærðfræðilega þýðir bara bæta 1. Og svo ef þú varst að innleiða að lítið villandi tækni fyrir kennara í kóða, þú gæti gert nákvæmlega það bara með því að bæta einum staf saman. Svo áður en langt, við erum fara að sjá hvernig við geta nýtt sér það að í raun og veru virkilega Scramble og Unscramble upplýsingar. Í millitíðinni, ég veit að við höfum byrjað að kynna nokkrar aðrar bókasöfnum here-- strengurinn einn dag. Og mjög hjálpsamur staður vonandi þú munt finna heitir reference.cs50.net, sem kennara hafa sett saman, þannig að ef þú vilt að líta upp hvernig strlen verk, þú getur byrjað að skrifa nafn fallsins, smelltu strlen þar, og þá a minna þægilegt skýring er að fara að birtast. Eða ef þú vilt opinbera Linux-undirstaða skýringu, þú getur smellt meira notalega efst til hægri, og það mun kynna sömu upplýsingar, en í flóknari kjörum. Það er gagnlegt úrræði til í raun veit hvað allt gerir. Næst þegar við erum að fara að taka a líta á Ovaltine og fleiri, og kynna okkur í heim dulmál. Áður þá munum við sjá þú síðar í þessari viku. Og nú, Colton Ogden. Sjáumst á miðvikudag. [TÓNLIST spila] [TÓNLIST spila] Ræðumaður 1: Hvað [Bleep] ertu að gera? Ræðumaður 1: Ég er að borða eftirrétt minn? Hvernig borðar þú það? Með höndunum? [TÓNLIST spila]