[TÓNLIST spila] JASON Hirschhorn: OK, allir. Velkomið að lið. Þetta er CS50, okkar mjög Fyrsta frábær kafla. Eins og þú veist, í næstu viku venjulegur kafla hefst, en í þessari viku erum við öll saman. Það er sjálfur. Mitt nafn er Jason. Ég er kennari í tölvunarfræði. Við höfum Andi, sem er yfirmaður TA CS50. Og Scaz, prófessor Brian Scassellati, hann er prófessor í tölvunarfræði. Við erum CS50 höfuð á Yale. Þú getur alltaf email okkur heads@cs50.yale.edu. Við munum vera í fyrirlestrum. Við munum vera á skrifstofutíma. Ef það er alltaf eitthvað sem við getum gert fyrir þig, allt sem þú þarft, ekki hika við að ná okkur. Svo hvað erum við að fara að gera í dag? Eða fyrir þá, hvað er koma upp í þessari viku? Svo Viðtalstími eru mánudagur, þriðjudagur, Miðvikudagur, og fimmtudagur, 08:00 til 11:00. Það er áætlun á vefsíðu. Deildir, eins og ég nefndi, eru að byrja í næstu viku. Og þú munt finna út í þessari viku það tímasetja hluti er, hvaða dagur er, og hver TA er. Heimadæmi 1 er vegna á fimmtudaginn í hádegi, Föstudagur á hádegi með seint í dag. Já, hefur þú níu seint daga. Og það eru níu vandamál setur. Og getur aðeins notað einn seint dag á Heimadæmi. Já, í raun, allir vandamál setur eru vegna föstudagur á hádegi. Það er allt. Allt sem upplýsingar eru á kennsluáætlun. Sérhver föstudagur, höfum við lunches. Við eins og til að gera þetta stóra Auðvitað finnst dálítið minni. Svo þú ert velkomin til að RSVP. Ókeypis hádegisverð með náungi bekkjarfélagar og starfsfólk. cs50.yale.edu/rsvp. Allir þessir hlutir sem Ég hef á skjánum, og meira, getur þú fundið cs50.yale.edu eða cs50.harvard.edu, ef þú ferð til Harvard og eru að horfa á þetta á netinu. Einnig á þessum vefsíðum, það eru tonn af auðlindum fyrir þig. Sérhver Fyrirlesturinn er ekki eini hefur vídeó af fyrirlestri, en einnig bendir. Einhver mun horfa á fyrirlestur og taka minnispunkta fyrir þig. Svo þú getur bara borga athygli á fyrirlestrum, eða þú getur notað athugasemdum þeirra / okkar bendir til að bæta eigin glósur. Það eru glærur á netinu. The uppspretta code-- allt David fer yfir í fyrirlestri, eða Scaz fer yfir fyrirlesturinn sem Kóðinn er í boði á netinu eins og heilbrigður, eins og eins og ég, getið myndbönd. Deildir, sömuleiðis, allt verður tekið. Allar þessar glærur verður í boði. Öll þessi kóði mun vera í boði fyrir þig. Það eru stuttbuxur á vefsíðu þar sem CS50 starfsmenn eyða fimm til 10 mínútur að fara í gegnum efni fyrir þig. Sumir af þeim sem þú hefur nú þegar fundur í vandamál setur. Skrifstofutíma, eins og ég nefndi, mánudaga gegnum fimmtudögum, 8:00 til 11:00. CS50 Study er frábær auðlind. Það eru æfa vandamál, sýnishorn skyggnur, þekktur galla að nemendur eins og að hlaupa inn, fyrir meginatriðum hvert efni sem við mun ná í þessu námskeiði. Og að lokum, á þessari mynd að minnsta kosti, Reference50 sem gefur þér upplýsingar á öllum C virka þú getur alltaf hugsanlega von að nota og margir, margir fleiri. Aftur, að punktur punktur punktur á neðst á skjánum er að gefa til kynna að það er jafnvel meira fjármagn á þessum tveimur vefsíðum: cs50.yale.edu, cs50.harvard.edu. Svo, hvað erum við að gera í dag? Jæja, fyrst ég er að fara að gefa þú horfir á auðlindir. Þegar gerði það einn. Líta á okkur. Nú erum við að fara að fara yfir gagnatög og rekstraraðila í C Þá Andi mun koma upp hér og fara yfir bókasöfn í C, printf (), fall sem þú ert nú þegar ég þekki eða mun fljótlega verða mjög þekki. Og þú munt einnig fara yfir conditionals og lykkjur. Og svo að lokum, Scaz mun fara yfir CS50 ID. Ef þú hefur ekki Dove í þegar í Problem Set 1, svo og hvernig á að nota Terminal og gagnlegar skipanir og þá gefa þér nokkur demo og æfa erfðaskrá í CS50 ID. Áður en ég hoppa í að þetta efni á þessari hlið, Hefur einhver hefur einhverjar spurningar svo langt? Great. OK. Skipta um gíra. [Skipta um gíra] Það var mér að breytast gír í handbók bílsins. Svo gagnatög í C, þú getur ekki bara breytu x og hafa það að vera í línu 10, heiltala, kannski númer 1, á línu 20, heiltala 10,5, og þá í nokkra línur síðar band, ég elska CS50. Í C, breytur geta aðeins verið eitt og eitt aðeins. Og þannig að þú þarft að gefa þeim gerðum. Og á þessu borði, við hafa a listi af gerðum. Það eru stafir, sem standa fyrir stafi. Svo er það einn stafur A, B, C, D. Það getur líka verið rúm, eða sem geta einnig verið ný lína staf. Það eru heiltölur, sem eru bara tölur, allt Numbers eða heiltölur rather-- en ekki brotum. Fyrir aukastafa, höfum við fleytitölu tölur. Fleytitölur eru tölur með aukastöfum. Þá eru saknar, sem eru í raun lengur heiltölur. Þú munt taka eftir því fyrir löngu er 8 en int er 4. Ég næ til að í sekúndu. Það er vegna þess þráir getur geymt jafnvel fleiri heilar tölur en int getur geymt. Double er langur fljóta. Og að lokum, höfum við band, sem er tegund sem þú hefur sennilega notað áður. Ef þú setur hashtag # includeCS50.h í uppspretta þinni, þá er hægt að nota band tegund. Það er í raun ekki byggt inn í C Það eru nokkrar aðrar tegundir eins og heilbrigður. En þetta eru helstu sjálfur með sem þú ætlar að nota og lenda. C sem aftur og ég nefndi, hvert variable-- það getur aðeins verið ein tegund og einn tegund aðeins. Það er vegna þess að C er statically slegið tungumál, öfugt við breytilega slegin tungumálum þar sem ef þú búa til breytu þú getur breytt því sem er geymt í það sem þú ferð á í forritinu. Hérna á hægri hönd hlið, ég hef mismunandi stærðir af þessum tegundum af gögnum í bætum. Svo er eðli 1 ​​bæti. Það er 8 bitar. Og það þýðir vegna 8 bita það er átta 0s og 1s. Við sáum þá demo í fyrsta viku með að tvöfaldur ljósaperur. Með 8 bitum eða 1 bæti, við getum tákna tölur frá 0 til 255. Hægri. Ef allir 8 bitar eru 0 sem er 0. Ef fyrsta hluti er 1, sem er fjöldi einn, og svo framvegis, alla leið upp til 255. Og það er ástæðan fyrir stafi sem þú getur hefur í raun allt að 255 af þeim, en það er nóg til að ná til allra persónurnar sem við þurfum að nota. Fyrir heiltölur, er hægt að hafa 0 og þá þú hafa 2 til 32 mínus 1. Þeir eru hversu margir möguleikar þú þarft fyrir heiltölur. Fyrir löngu, hefur þú 0 2 til 64 mínus 1. Svo þú ert margir, margir, fleiri möguleikar fyrir þráir. Strengir, það er spurningarmerki því það er cliffhanger þar til seinna. Já. Ég gæti sagt að allir er á brún sæti sínu, eins og það sem er að spurningarmerki? Það er cliffhanger. Við munum að lokum ná stærð strengir og tala meira um strengi. Vegna band er í raun einn af þjálfun hjól við setjum á í þessu námskeið í byrjun og síðan taka burt seinna á, vegna þess að strengir í C eru í raun ábendingum að eðli fylki. En aftur, það er cliffhanger þar til seinna. Áður en ég fara einhverjar spurningar, athugasemdir, áhyggjur þessari mynd? OK. Ég hlýt að vera frábær explainer. Einnig þegar þú ert forritun, þú ert að fara að nota þessar rekstraraðila. Really Simple merki sem hægt er að gera einfalda rekstur, sem þú ert líklega þegar mjög kunnuglegt. Til dæmis, á hægri hönd hlið, sjáum við að bæta. Til að bæta við, þú gerir bara plúsmerkið. Og svo þú gætir þurft tvær breytur x og y. Þú getur gert x + y í kóðann þinn. Kannski þú vilt to-- segja þér hefur fjöldi 7 og 3, þú vilt geyma að í breytu sem heitir summa. Þú getur gert int fyrir gerð, rúm summa, nafn breytu, = 7 + 3; Hvað myndi það geyma í stuttu? Einhver? Ef ég hafði í stuttu máli = 7 + 3. Hvað myndi vera geymt í summu? Þú getur bara hrópa það út. Áhorfendur: 10. JASON Hirschhorn: 10! Það er alveg rétt. Hvað um í sum = 7 - 3, Ég nota bara það þjóta merki. Hvað er að fara að vera geymd? Áhorfendur: 4. JASON Hirschhorn: 4. Sum er líklega rangt nafn að breyta, en 4 myndi vera geymt. Að margfalda í C, nota litla Star eðli, þú notar ekki x. Að skipta, nota Forward Rista ekki deild tákn. Og til að modulo, nota Percent tákn. Svo skulum segja að ég vil sjá INT z = 7% 3, hvað myndi vera geymt í z? Svo, það er í raun spyrja hvað þýðir Modulo gera? Hefur einhver veit hvað Modulo gerir? Já. Y 4. Ræðumaður 1: Það er afgangurinn. JASON Hirschhorn: Það er Afgangurinn þegar þú skiptir. Svo 7 deilt með 3 er 2 afgangurinn 1. Svo 1 yrði geymd. Þú gerðir frádráttur, en það er hvernig það virkar. Það er það sem Modulo rekstraraðila gerir. Það tekur a tala skiptir það með annað númer og skilar þér afgangurinn. Svo aftur, 7% 3 gefur þér 1, vegna þess að 7 deilt með 3 er 2 eftirstöðvar 1, og skilar afganginum. Hvað um við skulum fara aftur upp eitt skref til þess deild skilti. Ef ég gerði 7 / deilt með 3 er einhver veit hvað það myndi koma aftur? Ræðumaður 2: 2. JASON Hirschhorn: Hvers vegna 2 og ekki 2,333? Ræðumaður 2: Ég held að það sker burt eftir heilu tölu. JASON Hirschhorn: Svo það er einmitt rétt. Í C, ef þú gerir skiptingu tvær heiltölur 7 deilt með 3, það fær svar sem í þessu tilfelli 2.3333 eilífu og það finnur að Komma og chops allt burt eftir aukastaf og það skilar bara þér 2. Þannig að ef ég gerði 8 deilt með 3. Sem í raun, við vitum að til þess að koma aftur 2.666, en það chops allt burt á aukastafurinn, truncates það allt, og bara aftur til þín 2. Svo 6 deilt með 3, 7 skiptist um 3, 8 deilt með 3, eru allir að fara að koma aftur til þín 2. Hefur einhver veit, eða hafa giska, um hvernig ég gæti í raun að fá endanlegt svar ef ég vil að aukastaf? Já. Gjörðu svo vel. Ræðumaður 3: Notaðu fljóta? JASON Hirschhorn: Hvað meinarðu? Ræðumaður 3: Þar sem þú segir fljóta er fyrir tölur [inaudible] JASON Hirschhorn: Hægri. Svo, það er einmitt rétt. 7 er heiltala. En ef ég vildi snúa að í fljótandi lið númer, Ég þyrfti að geyma það sem 7,0 vegna þess að tölvan er virkilega stupid-- við sáum að með PB og J example-- það verður bara að gera nákvæmlega hvað þú segir það. Svo ef þú skrifar 7, það held að þetta sé heiltala. Ef þú skrifar 7.0, jafnvel þótt við veit þessir hlutir eru jafngildar, það meðhöndlar sem eins og fleytitölu númer. Svo ef þú gerðir 7.0 skipt um 3, eða deilt með 3,0, það myndi segja, OK, nú við erum að fást við flotum. Ég mun snúa aftur til þín 2.333333 eilífu. En ekki raunverulega að eilífu, því að eins og við sáum líka í fyrirlestri, þessi fleytitölur eru ekki nákvæmlega nákvæm. Svo ef þú vilt að aukastaf, eða hluti af því aukastaf, þá verður þú að use-- einn af þeim þarf að vera fljótandi lið númer og tölvan þarf að skilja að þetta er fleytitölu þú ert að takast á við, ekki heiltala. Einhverjar spurningar um borðið á hægri hönd hlið, svo langt? Eða vinstri hönd, þín vinstri, vinstri hönd. Já. Ræðumaður 4: Hægri. Fyrir bara eins og venjulegur heiltölur, þú myndir write-- þú þyrftir að skrifa fljóta? JASON Hirschhorn: Já svo. Jæja, ef þú vilt búa til breyta sem er fljóta, þú þarft að segja fljóta z jafngildir eitthvað. Ræðumaður 4: OK. JASON Hirschhorn: En ef ég vildi gera 7 deilt með 3 og fá þessi aukastaf, Ég myndi gera fljóta z = 7,0 / um 3,0; og sem myndi gefa mér fleytitölu númer. Ræðumaður 4: OK. JASON Hirschhorn: Ef ég gerði eitthvað eins og INT z = 7 / um 3, sem myndi gefa mér heila tölu, vegna þess að þeir eru allt heiltölur. Er að skynsamleg? Ræðumaður 4: Já. JASON Hirschhorn: OK. Great. Aðrar spurningar um borðið? Really? Ég er svo spenntur. OK. Svo nokkrum öðrum hlutum sem þú munt nota, oftsinnis í aðstæður eða lykkjur, eru þessar tegundir af operators-- Þessar tegundir af Boolean tjáning. Og eins og við lærðum, == er það sem þú nota til að athuga hvort tveir hlutir eru jafnir. Svo hér er ég að haka ef x == y skulum aftur gera ráð fyrir að x er 7 og y er 3. Þannig að ef ég skrifaði 7 == 3, hvað myndi það aftur til mín? Er það satt eða ósatt? Áhorfendur: False. JASON Hirschhorn: OK. Mér finnst eins og allir geta fengið þetta einn. Svo allir, hvað myndi það skila? Áhorfendur: False. JASON Hirschhorn: False. Great. 7 ekki jafn 3. Svo 7 == 3 myndi return false. Þú ert með ekki jafn skilti, þannig að ef ég hakair 7! = 3, hvað myndi það skila? Áhorfendur: True. JASON Hirschhorn: True. Excellent. Einhver var mjög emphatic í aftur og þakka það. Síðan sem þú ert minna en stjórnandi, minna en eða jafnt og rekstraraðila, meiri en rekstraraðila, meiri en eða jafnt og stjórnanda. Svo eitt geðheilsan stöðva. Ef ég hefði 7 er meiri en eða jafnt og 3. Hvað myndi það skila? Áhorfendur: True. JASON Hirschhorn: True. Já. Það aftur herbergi, Bakhlið í herberginu, frábær. Þú getur sameinað þetta orðasambönd ef þú vilt, eins og heilbrigður, með rökrétt og er && Eða rökrétt OR sem er || ||. Og svo nú er hægt að prófa tvö það together-- Er það fyndið? Hvers vegna er það fyndið? Þannig að ef ég vildi, ég get sagt er 7 meiri en 3 og 2 er minna en 4? Jæja, ef 7 er meiri en 3, það er satt. 2 er minna en 4, það er satt. Þannig að þetta allt hlutur myndi aftur satt. Ef ég prófa 7 er meiri en 3 and-- Ég er bara að tína af handahófi tölur here-- 4 er minna en 2, vel, það er falskur. Svo satt og ósatt gera rangar. Og þú getur farið á og þú sameina eins margir aðstæður saman eins og þú vilt. Hefur einhver hefur einhverjar spurningar, athugasemdir, áhyggjur svo langt? Og ég séð nokkrar af þér að taka myndir af mér í skjánum, sem ég þakka. Vonandi, það er ekki Snapchat. Vonandi er það fyrir athugasemdum þínum. En allt þetta eru að fara að vera í boði á netinu. Svo þú þarft ekki að taka myndir af þessu. Eins og ég nefndi, allt verður í boði á netinu fyrir þig. OK. Ég er að fara að fá offstage, svo er einhver langar að segja neitt áður en það gerist? Spurningar? [Interposing raddir] JASON Hirschhorn: Oh, hætta. Þú krakkar eru of gott. OK. Ég ætla að merkja út. Förum. ANDI Peng: Við erum að fara að gera óþægilega Mic breyting nú. JASON Hirschhorn: Ég er að fara að taka þetta burt. ANDI Peng: Þakka stuðning, krakkar. Heyrir þú í mér? Er það gott? Perfect. Beautiful. Leyfðu mér að tuck bara að í. OK. Svo er ég að fara að gera eins og risastór Upplýsingar afrita á ykkur núna. Og engar áhyggjur af neinu tagi ef þú ert ekki eftir hvert smá línu um hvað Ég er að fara að sýna þér. Eins Jason sagði, allt er alveg á netinu. Bara að við erum að fara að reyna að kynna allir að hugtökin falla í sumum þessara skyggnur. Svo bara fylgst með. Engar áhyggjur ef þú skilur ekki allt; Hins vegar, ef á hverjum stað þér finnst glatað, hækka þinn hönd, munum við hætta, engar áhyggjur. Cool. Þannig að ég held eitthvað sem David hefur þegar konar nefnd í fyrirlestri og Jason hefur konar kennd til dagsins í dag er það bókasafn er. Svo í forritun, höfum við þetta heitir bókasöfnum. Þar, í raun, allt þeir eru bara sett af störfum, sem er í raun bara kóða sem er þegar verið skrifuð af einhver annar sem við getum öll nota innan áætlunum okkar. Svo er eðlilegt hvernig vinna bókasafn, ekki satt? Þú slærð inn bókasafn dyrnar. Þú hefur allt þetta bók sem þú getur draga út og þú getur fengið aðgang að upplýsingum innan þessara bóka. Sami hlutur í forritun. Þú ert með bókasafn sem hefur nú þegar verið skrifuð af öðru fólki. Og hvernig sem þú getur, sem forritari eða nemandi, geta fengið aðgang að því bókasafni er í gegnum hashtag #include. Til dæmis, í C Við hafa þrjú C-- mest almennt notað þrjú C Standard libraries-- inntak / úttak bókasafn, band bókasafn, og stærðfræði bókasafn. Svo innan fyrsta þinn par vandamál setur, þeim sem vilja vera þriggja að þú ert fyrst og fremst að nota. Svo eins og Davíð þegar útskýrði í fyrirlestri, staðall I / O bókasafn, eða standard input / framleiðsla bókasafn er einmitt það. Það gerir þér kleift, í kóðanum þínum, að inntak allt frá notanda og framleiðsla sem á skjánum, í raun prenta það á skjáinn. Og svo hvenær þú notar einhverjar aðgerðir, til dæmis virka printf () sem við erum að fara að fara á næstu mynd, ganga úr skugga um að fela í sér staðalinn I / O bókasafn eða annað sem þú ert ekki að fara að vera fær um að nota printf () virka. Þar sem þú, eins og forritari aldrei skrifaði að virka, þú ert bara að nota einhvern númer annars innan eigin kóðann þinn. Er að skynsamleg allir? Cool. Og þá fáum við í raun á sem string.h bókasafn og math.h bókasafn, .h bara táknar bókasafn, önnur bókasöfn sem þú munt að lokum vera með í kóðann þinn. Hins vegar, með tilliti til af þessu bókasafni, við einnig have-- þessa class-- við höfum einnig það sem er kallað CS50 bókasafn, cs50.h, þar sem við, til sýn þinni hefur búið mörg mikilvæg og gagnlegar aðgerðir. Þannig að þú sem forritari getur piggyback burt það sem við höfum nú þegar skrifað svo að þessi aðgerð er í boði fyrir þig fyrir þig. Ég ætla að ná í nokkra aðgerðir sem almennt eru notaðar, en veit að þetta eru allt googleable netinu. Feel frjáls, draga upp CS50 bókasafn og þá hefur þú alla virka þar. Já. Ræðumaður 5: Svo ef þú værir ekki nota hugbúnað sem er veitt okkur með bekknum, gerir það meina við verðum að sækja og finna þetta haus skrá okkur og segja tölva þar sem það er? ANDI Peng: Great spurning. Nákvæmlega. Svo það er eins og ef þú ert ekki viðstaddur á bókasafni, það er engin leið fyrir þig að í raun að fara og sjá hana. Svo það sama með forritun í C, og þú að ganga úr skugga um að þú ert að nota okkar tæki vegna þess að bókasafnið er þegar verið felld inn í það. Og svo þegar þú hashtag #include, bókasafnið er þar. Já. Góð spurning. Allir góður? Cool. Allt í lagi. Þannig að við erum að fara að lemja, í raun, hvað er sem fyrsta aðgerðin sem Við sem forritarar eru fara að nota innan kóða. Þetta er kallað printf () virka. Svo, printf () virka, eins og ég hef þegar sagt í síðustu mynd, er innifalinn í stöðluðu I / O, standard input / framleiðsla, bókasafn. Svo vertu viss um hvað þú ert að using-- ó, láttu mig grípa leysir pointer-- þegar þú ert að nota printf () virka, þú þarft að fela staðalinn I / O bókasafn eða annað, þegar þú saman, þú ert að fara að fá villu vegna þess að tölvan verður eins, ó ég veit ekki hvar printf () er, þú ert ekki að segja mér hvar printf () er. Jæja printf () er innifalinn í staðall I / O, þannig að þegar þú nota printf (), ganga úr skugga um að hafa þessi lína ofan kóðann þinn. Svo til dæmis, printf () hér er fall. Allt það gerir er prenta út eitthvað inni í sviga til notenda. Myndi einhver áhuga á að taka a stunga á hvaða þessi lína af kóða hægri hér er að fara að prenta út? Þess vegna, svarið er á skjánum. Einhver? VERDI: The botn. ANDI Peng: Verdi, hvers vegna ferðu ekki á undan og segja allt yfirlýsingu? VERDI: Halló, Nafn mitt er Andi, og ég er 20 ára gamall. ANDI Peng: Ah, yndisleg. Svo í þessari línu sem við erum að fara að prenta út, Hello, my name is Andi, og ég er 20 ára gamall, sem er í raun satt yfirlýsingu. Setningafræði. Svo nokkrum nokkur dæmi um setningarleg málefni sem þú krakkar vilja til að ganga úr skugga um að þú veist. Quotes. Gæsalappa segja að tölva sem allt inni er að fara að prenta. Allt inni get bara vera nákvæmlega hvernig þú slegið það, nema fyrir almennt í lok, við erum að fara til að vilja fela a hash-- ó sorry-- þjóta n. Svo þjóta n. Er einhver að vilja taka giska á hvað það gerir til að kóða okkar? Já. Ræðumaður 6: Setur það á nýja línu. ANDI Peng: Einmitt. Svo er allt þetta gerir leyfa hvað gerist eftir þetta, eftir þessa yfirlýsingu, til að prenta á nýja línu. Þannig að þegar þú ert að skrifa þinn númerið sem þú ert ekki handahófi hafa allt tacked á að enda sem þú vilt ekki. Það verður allt snyrtilegur prentuð eina línu og þá erum við að byrja á eftirfarandi línu. Hefur einhver man hvað það semíkomma er þegar við erum að erfðaskrá? Já. Ræðumaður 7: Yfirlýsing. ANDI Peng: Sorry? Ræðumaður 7: Er það enda yfirlýsingu? ANDI Peng: Já. Svo í C, eða forritun tungumál, semíkommu táknar lok forritun línu. Svo til dæmis, á ensku við notum tímabil að segja, ó þetta er endir setningu. Í forritun, sama, við höfum semíkomma til að tákna lok línu. Oftsinnis, þegar þú ert byrja að forrita, þú munt gera sér grein þér gleyma að bæta við semíkommu og þá reyna að keyra þinn númer og það virkar ekki. Og þú ert eins og, Ah, ég er ekki vita hvers vegna, það ætti að vera að vinna. Líklega er þú hefur líklega gleymt að semíkomma eða krappi eða eitthvað einhvers staðar. Svo, það er mikilvægt að muna. Cool. Allt í lagi, sýning af höndum, hvernig margir hér hafa alltaf tekið AP Computer Science eða forritað í Java áður, alltaf? OK. Lovely. Það mun ekki vera við þá, en í Java, þú hafa eitthvað sem heitir System.out.println sem er ekki til í C. Svo í C, þegar þér langar að bæta við í breytur í hvað sem þú vilt að prenta út, það er a sérstakur setningafræði við erum að fara að nota. Það er kallað placeholding-- raun við bætum staðgengla í stað af heiltölu eða breytu sem við viljum prenta. Svo eins og þú krakkar geta séð við höfum látið ný bókasafn haus skrá hér. CS50 bókasafn. Og innihélt innan þess CS50 bókasafn er algeng aðgerð sem við munum vera með í námskeiðinu okkar heitir GetInt (). Er einhver vilja til taka a stunga á hvað GetInt () getur hugsanlega verið að gera. Áhorfendur: [inaudible] ANDI Peng miður. Gat ekki heyrt í þér. Maddie, einhver. Maddie: Oh, hvetja það þú til heiltala. ANDI Peng: Einmitt. Svo þessi aðgerð, annar fall sem er nú þegar verið skrifuð af einhverjum öðrum að við getum ákallað núna. Allt það er er hvetja þig sem notanda að inntak hvað sem þú vilt nota sem kóða er í gangi og það geymir whatever-- í þessu tilfelli erum við GetInt () - ing, svo það þýðir að við erum fá heiltölu. Og við erum að fara að geyma að í öðru heiltala sem við höfum bara gert heitir aldri. Að skynsamleg að allir? Cool. Svo nú er að við höfum geymt þetta heiltala, sem við höfum beðið frá notanda, í þessari breytu, höfum við búin að int heitir aldur, við getum farið á undan og staður að í printf okkar () virka. Svo setningafræði venjulega printf () er að hvar í raunverulegt líkamlegt þinn lína sem þú vilt að fela í sér að heiltala, Þú gerir það tákn þarna, sem prósent tákn, með Tegund breytu sem þú vilt. Þannig að í þessu tilfelli aldri er heiltala. Svo þú ert að fara að fela % i því það er heiltala. Og þá eftir þinn yfirlýsingu, þú ert að fara að gera kommu og að Heiti breytu. Svo hér erum við að fara að prenta út, Hello, my name is Andi, og ég er eyða ára. Hashta-- eða sorry--, aldur við hvað ég inntak. Svo ef ég væri að inntak 20 fyrir GetInt minn () hér, það myndi prenta út nákvæmlega það sama. En ef ég vildi inntak eitthvað annars, eins og kannski 40 eða 45, þá myndi sjá að endurspeglast samræmis í kóðanum. Svo er þetta dæmi um eitthvað sem það prentar út og lítur út fyrir að þú eins og ef það er það sama, en undir hetta tölva það er í raun mjög mismunandi hlutir að gerast. Cool. Allt í lagi. Svo hvað ef við viljum mörg breytur? Nokkuð auðvelt. Sami hlutur. Við höfum einnig nýtt hlutverk hér kallað GetString (), einnig innan CS50 bókasafn, að allt það gerir er hvetja notandann fyrir streng, sem er bara setja af stöfum, svo eins og setningu eða eins og nafn. Þannig að í þessu tilfelli, myndum við hafa tvo staðgengla% s fyrir streng og% i fyrir heiltölu. Og við erum að fara að fylgja að með því að tvær breytur við viljum með, í því skyni sem þau koma fyrir í setningunni. Svo til dæmis, nafn mitt er auður, ég vil nafn þar, þannig að ég ætla að hafa nafnið fyrst. Og þá síðan, ég vil aldur, langar að hafa aldur sekúndu. Og svo ef ég vildi inntak, Hello, Andi nafns míns, og ég er 20 ára gamall. Ef ég inputted Andi og 20, sem nákvæmlega það sama myndi prenta; þó nú höfum við fengið tvær geymdar breytur nafn sem og INT. Já. Ræðumaður 8: Væri fær um að keyra ef þú skiptir nafn og aldur við lok það? ANDI Peng: Já. Það er í raun góð spurning. Svo löng saga stutt, nr. Vegna þess að nafn og age-- hvað Tegund breytu er nafn? Ræðumaður 8: String. ANDI Peng: Og hvað Tegund breytu er aldur? Ræðumaður 8: Integer. ANDI Peng: Svo hér höfum við tákn fyrir band og heiltölu, ekki satt? Svo ef þú varst að skipta þeim, tölva er ekki að fara til að vita. Það er að fara að athuga fyrir streng, og ef þú reynir að gefa það int, það er að fara að vera eins og bíddu ég er ruglaður, þér sagði mér að ég ætti að vera allotting minni int. Og hérna, þegar það gerir ráð fyrir heiltölu og þú gefa það a nafn og band í staðinn, það er líka að fara að vera mjög ruglingslegt, það mun ekki birtast nákvæmlega eins og þú þarft hana. Svo hér, nafngiftir og setningafræði er mjög mikilvægt að keyra kóða. Allir góður? Já. Maddie. Maddie: Hér veit ég að við höfum litið á dæmi í bekknum, þar sem þeir spyrja hvað er aldur þinn, það er nafn þitt. Hér væri að vera það doesn't-- ef við vorum að keyra þennan kóða, það myndi ekki biðja um það? En þú myndir bara inntak tvær tölur og þá myndi hlaupa svona? ANDI Peng: Já, einmitt. Svo ef þú mælir til að sýna, vinsamlegast sláðu inn aldur þinn, þú getur bara bætt við printf () virka sem segir, Vinsamlegast sláðu inn aldur þinn, fyrir ofan hann. Það er góð spurning. Já. Ræðumaður 9: Svo væri nú þegar verið innifalið í GetInt () [inaudible]. ANDI Peng: Nei, það er í raun ekki. Svo er allt þetta er bara hvetja tómt skjár til notanda að inntak eitthvað. Ef þú vilt það, ef þú vilt það til að prenta út eitthvað sem segir notandi eins, vinsamlegast gefa mér aldur þinn, svo þú þyrfti að printf () sem þig. Því allir notar þetta virka fyrir mismunandi hluti, þú gætir verið að geyma aldri, þú gætir verið að geyma tölu, þú gætir verið að geyma símanúmer. Og svo er það í raun allt að einstaklingur notar þinna krakkar ' fyrir það sem þú vilt hafa það að segja. Já. Ræðumaður 10: Svo bara til að skýra, hvar gera þér inntak nafn og aldur þannig að það sýnir sig í stað% s? ANDI Peng: Eins og í notandi? Ræðumaður 10: Já, eins og hvernig ég gera it-- hvar á ég að setja Andi, og hvar ég setti 20? ANDI Peng: Já. Svo ef þú varst að í raun að keyra þennan kóða, Ég er reyndar ekki að keyra kóða, þetta er bara hér núna. Ef ég væri að keyra kóða, myndi ég þýða kóðann, gera skrá, keyra kóða, og þá myndi bara vera tveir rými fyrir mig að inntak það. Já. Þú krakkar vilja sjá þegar þú spilar kring með kóða sjálfur. Allt í lagi við erum að fara að flytja í næsta kafla hvað við munum vera nær í dag. Við erum að fara að fara yfir það skilyrt yfirlýsingar eru. Svo ef þið muna og muna frá fyrirlestri, skilyrt yfirlýsingar, allt sem þeir eru eru sett fyrirmæla við tölvuna í sem ef ákveðin skilyrði er satt, þú framkvæma kóðann inni í því ástandi. Svo í Scratch-- meginatriðum stór þema frá í dag er að þið hafið nú þegar allt séð rökin á bak öllu að við erum að ná. Og allt sem við erum að gera er þýða eitthvað sem var mjög leiðandi í Scratch og erfitt erfðaskrá það í setningafræði við munum vera með fyrir bekkinn sem er C. Svo rökrétt, allt þetta blokk var er þessi stykki af kóða þarna. Já. OK. Við fáum einnig inn í ef ... annars yfirlýsing sem er bara bætt lag flókið að ef staðhæfing þar sem tölvan tekur a líta á þetta og sér, ef þetta ástand er satt, gera hvað er inni þessum tveimur sviga, else-- svo góður af eins og sjálfgefið, ef það uppfyllir ekki condition-- gera þetta. Það er eins og vegurinn. Ef það er rigning úti, ég setti á rigningu jakka, annars nokkuð annað sem ég set ekki á rigningu jakka. Er að rökfræði skynsamleg að allir? Cool. Allt í lagi. Svo eins og harður dæmi um þetta sem við myndum sjá í C er ef ég vildi búa til breytu sem heitir heimavinna klst. Og ef heimavinna klst er minna en fimm, segi ég Lífið er frábært. Það er dásamlegt. Hins vegar segja Baráttan er real-- sem er það sem við öll á þessum mánudegi Síðdegis upp Science Hill eru líklega að gera rétt now-- Áhorfendur: [Hlæjandi] ANDI Peng: Þeir sem við leið myndi þakka þér fyrir það. Leiðin sem við myndi hardcode þetta í C er if-- skulum gera ráð fyrir við höfum nú þegar breytu af tegund INT heitir heimavinna klukkustundir hérna. Ef heimavinna klst er minna en fimm printf (), Lífið er frábært. Mundu að halda / n af því þú vilt nýja línu eftir. Else prenta Baráttan er alvöru. Þurfa allir að skilja hvernig Ég umbreytt frá þessari blokk í þessari blokk af kóða? Cool. Allt í lagi. Svo nú erum við að fara að kíkja á margar Ef yfirlýsingar samtals. Svo skulum gera ráð fyrir Tilgangur þessarar áætlunar var við hvetja notandann til einkunnar. Við kvaðninguna nota GetInt () fyrir a bekk, og þeir slá inn gildi, og þú vilt birta hvaða tegund af bekk sem þeir fengu. Svo ef ég væri að hanna forrit, ég meina yfirleitt í öllum augum okkar, 90-100 er A, 80-90 er B, og svo framvegis og svo framvegis. Hvað er athugavert við þetta stykki af kóða sem það er ekki gera það sem ég vil að hún geri. Já. Ræðumaður 11: Þeir hafa lægri mörk, en þeir hafa ekki efri mörk. ANDI Peng: Einmitt. Vissir allir heyra hvað hún sagði? Það er að fara að vera í efri marka, en ekki neðri mörk. Því miður, öfugt, neðri mörk, engin efri mörk. Svo viltu taka a stunga á að segja það væri prentað á þetta skjár ef ég væri að keyra þennan kóða. Ræðumaður 11: Villa? ANDI Peng: Villa? Great giska, ekki alveg rétt. Hefur einhver hafa annað stunga? Já, Aaron. AARON: Ef þú setur í eitthvað sem er meira en 90, það myndi sýna allar einkunnir sem þú fengið. Það myndi sýna þér fékk A, þú got a B, þú got a C. ANDI Peng: Já. Það er alveg rétt. Svo, sem myndi vera dásamlegt. Hins vegar eru þeir gagnkvæmt einkarétt, held ég. Ef ég væri að keyra þetta stykki af kóða. Og þá skulum bara segja, að ég inputted einkunnina 95. Svo 95 er nú geymd í int heitir einkunn. Og svo C er tungumál sem liggur upp toppur til botn, svo það er að fara að alltaf hlaupa upp og niður. Svo það er að fara að koma hingað, lesa ef gráðu er meiri en eða jafnt og 90, printf () þú got A. Great, ég hafa a 95, sem er meiri en 90. Það er að fara að prenta, Ég fékk A. Það er að fara að kíkja á þetta ef það er að fara segja, vel 95 er einnig meira en 80, það er að fara að prenta þú fékk líka Got B upphrópunarmerki, og svo framvegis og svo fram. Svo eins og við getum öll séð, þetta er algeng villa sem kunna að eiga sér stað þegar við erum skrifa kóða til að líta út fyrir. Einhver, einhverjar spurningar um hvers vegna þessi var að gerast? Great. OK. Svo hvernig gera við að laga þetta er augljóslega, eðlilegt næsta spurning. Jæja, höfum við þessum fallegu hlutir sem kallast ef annað ef annað ef annars yfirlýsingar. Svo þú sérð, ef þú vildir að breyta þessi vandamál, þú vildir gera hvert af skilyrði ósamrýmanlegir, þú vildi bættu við annað ... ef staðhæfing. Og þetta á course-- hugsa um þá eins stigar, eða eins og þrep hins ladder-- þú getur bætt við eins og margir af þessum sem þú vilt eins mörgum skilyrðum eins og þú vilt. Svo hér, ef ég inputted einkunn að vera 95. Ef gráðu er meiri en 95, printf (), fékk ég A. Frábært. Það er að fara að sjá að annað ... ef og það er að fara að vita, Ó nei, Ég keyrð þegar fyrsta annað. Ég know-- eða fyrsta if-- Ég veit að Ég þarf ekki að líta á eitthvað af þessu vegna þess að einn þeirra hefur þegar verið satt. Svo það er að fara að hlaupa frá toppi og niður. Um leið og sá fyrsti er satt, þá það er að fara að sleppa yfir öllum hinum af annar ... Skógræktar ríkisins. Er að skynsamleg? Svo, í þessari leið sem þú hefur mismunandi stigum stöðva og um leið einn af þeim er eins rangt, hinir eru líka, þeir vilja ekki einu sinni að athuga. Cool. Allt í lagi. Svo er þetta dæmi um annað konar skilyrt yfirlýsingu við sjáum sjaldnar en við munum sjá þau og nota þau. Og þeir eru oft meira skilvirkari fyrir vissum tilvikum. Þannig að við höfum það sem er kallað rofi yfirlýsingu. Svo áður en við falla Hvað er annað yfirlýsingu, if ... else setningar. Hér höfum við hvað eru heitir skipta yfirlýsingar. Svo þegar við notum skipta yfirlýsingar er lykillinn? Svo í switch yfirlýsingu, þú yfirleitt, venjulega, í raun að þú getur aðeins inntak heiltölur fyrir þinn breyta sem þú ert að skoða. Þannig að ef ég vildi athuga ef ákveðin number-- til dæmis a bekk, ef ég fékk 90. Ég vil það til að sjá hvort það er að A, B, eða C ég gæti hafa mál hér. Hins vegar er málið hefur að vera annar fasti. Svo í þessum skilningi, skipta yfirlýsing getur aðeins stöðva fyrir jafnrétti tveimur tölum. Það þýðir ekki að stöðva fyrir neitt annað. Svo það er eitthvað til að vera mjög varkár af þegar þú ert að nota þetta. Svo hér, ef ég vildi athuga ef einkunn minn 90 er jöfn 90 eða 80 eða 70 eða 60, og þá prenta samsvarandi bekk, Ég myndi vera fær um að skrifa það í skipta yfirlýsingu. Svo það er að fara að koma hingað, stöðva er þetta heiltala jöfn þessum föstu? Ef ekki, það er að fara að sleppa. Er það jafn stöðug tveir, og svo framvegis og svo framvegis, þar til þú högg the vanræksla, ef enginn af þeim eru jafnir. Um leið og einn af þeim er stillt á að vera jafnir, það er að fara að gera þetta lína af kóða og brot. Sem þýðir að það er að fara að lemja að hlaupa, brjóta, og bara sleppa því alveg til the botn af kóða. Svo í þeim skilningi eins konar aðgerðir eins if annars ef annað ef yfirlýsingu. Svo hér er steypu dæmi fyrir ykkur. Svo skulum gera ráð fyrir að ég vildi búa til breytu sem heitir ári stofnað. Og ég vil hvetja notandann til inntak árið sem skólinn þeirra var stofnað. Svo ég er að búa til skipta yfirlýsingu hér. Og við skulum bara segja að ég inntak 1636. Þetta númer hér er að fara að sjá rofi ári stofnaði sem jafngildir 1636. Það er að fara að sjá mál 1636, ó þeir eru jafnir, printf () Áttu ekki að vera á framhaldsskólastigi norðan? Vegna þess að við gerum ráð fyrir að þeir gera ekki fara hér ef þeir fara til Harvard, brjóta og sleppa til the endir. Ef ég væri að inntak 1701, sem Ég geri ráð fyrir okkur öll inntak, það myndi sleppa þessu tilfelli, koma niður að ræða tvo sem er 1701, og prenta Velkomin Yale! Brot, sleppa til the endir. Annað sem þú sennilega ert að taka þetta námskeið netinu þar sem case-- ógnvekjandi velkomnir að Yale-- það er að fara að fara í sjálfgefið letur, Hello Internet! Og brjóta. Já. Ræðumaður 12: Er hægt að nota annað í stað þess að vanræksla þar? ANDI Peng: Nei, vegna þess að leið að þetta allt virka rofi er byggt, setningafræði þér þarf að nota er raunin raunin sjálfgefið. Það er eins og ef annað ef þetta einn það er raunin raunin sjálfgefið. Já. Ræðumaður 13: Þú kannski áður sagt þetta, en getur þú haft fleiri en tveimur tilvikum? ANDI Peng: Já, þú gætir hafa eins mörg tilfelli sem þú vilt. Hugsaðu um það eins og bara eins óendanlega bæta á. Ræðumaður 14: Ef þér kveikt 1701 með 1636, það er í raun ekki að gera munur ekki satt? Það er bara að fara að vera að skoða fyrir það. ANDI Peng: Það er mjög góð spurning. Og við munum snerta á þetta síðar, en bara veit það er rofi yfirlýsing infinitely-- það er skilvirkari en það og ef annars ef því það starfar nota aðra tegund af aðgerð sem gerir þér kleift að í raun, bara hoppa beint til ef þú þarft að vera á. Já. Ræðumaður 14: Cool. Takk. ANDI Peng: Já Ræðumaður 14: Og þú getur ekki gera tilvikum eins og meiri en. ANDI Peng: Nei Svo, það er það sem er að takmarka um rofi yfirlýsingu er að þú þarft að hafa fasta aðeins, aðeins heiltölur. Já. OK. Svo er þetta eitthvað sem þér krakkar vilja lenda sjaldnar á, en ég vildi bara kynna það í málinu. Við höfum hér hvað er kallað þríþætt rekstraraðila. Þar í meginatriðum, það er bara eins og ef yfirlýsingu saman í einni línu. Hér mun ég fara inn á næstu línu, sem næsta síða, vegna þess að það er auðveldara að sjá. Þannig að við höfum öll séð þetta rétt? Þetta er nokkuð auðvelt að fylgja. Ef ég vildi gera breytu sem heitir band heitir s, ef ákveðinn fjölda Ég gef það er minna en 100, ég að úthluta lítil í strenginn, annað sem ég vil tengja hár. Þetta hér er að gera nákvæmlega það sama þessir átta línur af kóða er að gera. Svo hér er ég vil búa breytu band. Og þetta er ástand sem ég er eftirlit, ef tala er minni en 100, þá þú úthluta gildi lítil, annars úthluta gildi hár. Þessar glærur verður á netinu, engar áhyggjur ef þið fæ ekki þetta niður. Þetta er bara einfaldari leið, meira skilvirk leið til þess að skrifa kóðann. OK. Svo nú erum við að fara að Skráðu það sem, fyrir flest fólk eru eins og mjög, mjög ruglingslegt hlutur til að hugsa um í fyrstu. The lykkja kafla. Svo í dag, við erum að fara að tala um þrjár tegundir af lykkjur. Við erum að fara að byrja með á meðan lykkja, þá tala um að gera á meðan lykkja, og þá tala um fyrir lykkjur. Svo í raun, fyrir meira sjón nemendur þarna úti, við höfum í raun, myndrænt lýsing á því hvað á meðan lykkja gerir. Svo í forritun, vilt þú byrja og slá inn lykkju á ákveðnum stað. Þú athuga ástand. Og ef skilyrðið er satt, þú framkvæma kóðann inni. Og þú kemur til baka í kring og þú stöðva. Ef það er samt satt að halda í gangi þetta númer í kring og kring í lykkju. Hins vegar er annað sem ástand verður ósatt, þú ert að fara að brjóta og enda hliðar. Og þetta er í raun Setningafræði þú ert að fara að nota. Þó að ákveðin skilyrði er satt að gera þetta, ef það er ekki satt, þú ert að fara að sleppa til the endir og halda áfram með forritinu. OK. Hjartarskinn einhver hafa dæmi á hvað getur hugsanlega gerst ef ég reyni að keyra þetta stykki af kóða? Við the vegur, SAJ-- það er Scaz, Andi, Jason-- munum undirrita burt tölvupóst okkar, Elska, Saj. Það er okkur. OK. Einhver hefur dæmi, eða hafa hugmynd um hvað þetta myndi prenta? Konar bragð spurningu. Svo hér, man ástand við erum að athuga fyrir er en satt. Svo á meðan þetta er satt, það er að fara að prenta út, ég elska Saj! Er eitthvert vit í að þar sem við myndum breyta því í eitthvað annað? Nei, ekki satt? Svo hér höfum við fundur hvað er líklega að fara að bögga fullt af áætlanir þínar, óendanlega lykkju. Þú munt komast að því að ef þú keyra þetta stykki af kóða, það er bara að fara að halda prentun, ég elska Saj! Þó að við kunnum að meta stuðning, við viljum ekki tölvur að hrun vegna þess að þú halda prentun Ég elska Saj! Svo vinsamlegast, vinsamlegast, forðast óendanlega lykkju vegna þess að það er aldrei að fara að meta false og þú ert aldrei að fara að yfirgefa lykkja. Og þú ert að fara að sogast í eilífu. Cool. OK. The second tegund af lykkju við munum tala um í dag er að gera á meðan lykkja, gera á meðan lykkja. Og það er kallað do while lykkju vegna þess að þú ert með do og stund. Svo er þetta nokkuð svipað stund lykkja, en svolítið öðruvísi. Hér ert þú að fara að gera hvað er inni í þessu en ákveðin skilyrði er satt. Svo ef ég væri C og tölvuna sem ég er keyra niður þetta stykki af kóða, Ég taka a líta á the toppur. Ég fer í C, ég segi gjöra þetta. Og þá er ég að athuga, en þetta er satt, ég verð að endurtaka það. En á meðan þetta er rangt, þá er ég að halda áfram og ég hef aldrei farið aftur til að lykkja aftur. Getur einhver taka a stunga á hvaða mismun milli þessa lykkju og sá sem við bara horfði á var nánast. Já. Ræðumaður 15: Skilyrði kemur eftir í stað þess að áður? ANDI Peng: Einmitt. Svo hún sagði að ástand kemur á eftir, ekki fyrir. Á endanum, munurinn milli þess og while lykkju er að þú ert bara að fara að gera hvað er inni þessa óháð hvort ástand þitt er eða ekki satt, og þá stöðva the ástand. Svo í þessu tilfelli, þú ert always-- á þennan hátt, þú ert alltaf að tryggja hvað er inni keyrir amk einu sinni áður en að haka að sjá ef þú vilt það til að hlaupa aftur. Og hér er dæmi hvenær við myndum nota það. Svo til dæmis, ef ég vildi hafa a af taginu int heitir aldur, og ég vil hvetja notandinn aldur þeirra, Ég ætla að gera printf () Hvað ertu gamall? aldur = GetInt (), sem er vekur notandi. Og sumir vilja vera mjög pirrandi. Og þú vilt ekki galla í þínum Dagskráin einhvern inputting eins, ó ég er neikvæð 4 ára eða hvað sem er. Í því tilviki ef þeir að gera það, þetta metur satt, sem þýðir að ég ætla að þarf að fara til baka og gera þetta. Þannig að þetta er að fara að halda aftur vekur notandi til að gefa þér eins og alvöru aldur númer og það er fara að halda að fara aftur og redoing það þar sem þeir gefa þér alvöru aldri stærra en einn eða ekki núll. Svo vísbending, vísbending. Þetta mun vera mjög, mjög gagnlegur fyrir einn af pset vandamálum þínum. Já. Ræðumaður 16: Úpps, því miður. ANDI Peng: Já. Ræðumaður 16: Eru ekki að vera asni, but-- ANDI Peng: Engar áhyggjur. Ræðumaður 16: --are það mismunandi reglur hér, eða gleymdirðu bara að setja tilvitnun? ANDI Peng: Oh Yeah. Því miður, það er algerlega slæmt minn. Það var ákveðið átti að vera tilvitnun. Góður fengur. Það hefði ekki keyrt. OK. Svo síðasta tegund af lykkju við munum tala um og að lokum, svona mest flókið er til hliðar. Ekki hafa áhyggjur ef þú ert ekki vita hvað það þýðir. Það er nokkuð ruglingslegt í fyrstu. Við munum fara yfir dæmi. Allt sem gerist í for lykkju er að þú ert með þrjár yfirlýsingar að þú ert að fara að fela. Svo fyrir ákveðnum hlut, þú ert fara að frumstilla breytu. Þú ert að fara að bæta á ástandið sem þessi lykkja mun halda í gangi. Og þá, í ​​lok sem lykkja, þú ert að fara að uppfæra hana. Þú getur uppfært breytu sem þú vilt halda utan um. Svo við notum venjulega fyrir lykkjur þegar við vilt keyra lykkju fyrir a tiltekið magn af sinnum og við vitum nú þegar, Oh ég vil Þessi lykkja til að framkvæma eins og 10 sinnum, þá þú do-- ég ætla að fara yfir dæmi á næstu síðu. Svo hér til dæmis, í grunni, ef þú vildi eitthvað að endurtaka 10 sinnum, allt sem þú þurftir að segja var, endurtaka 10 sinnum ég elska Saj! sem er mun boðlegra sýna stuðning fyrir okkur frekar en óendanlega lykkju. Hér, hvernig þú myndir umskipti til C og skrifa sem er fyrir int-- ég ætla að búa til eða lýsa breytu af taginu int heitir i. Ég ætla að frumstilla það á 0, svo i = 0; og þetta er að fara að vera ástand mitt. Svo I er minni en 10. Og þá á end-- síðasta yfirlýsingu sem þú ert fara að hafa er uppfærsla á hvað gerist til breytu i í lok þinn fyrir lykkju. Svo það er góður af ruglingslegt, því mismunandi hluti þessa línu eru að gerast á mismunandi tegundir lykkja. En ég ætla að fara yfir a sauðakóðanum dæmi um það og kannski útskýra þetta bara svolítið betur. Svo hér. Það er lykkja sem við sáum bara. Meginatriðum í sauðakóða, hvað er að gerast í þessari áætlun, er fyrst ég er að stofna i, frumstilla hana 0. Ég stöðva til að sjá hvort ég er minna en 10, en í því tilviki í fyrsta skipti sem það er vegna þess að 0 er minna en 10. Þannig lykkja er að fara að keyra. Og þá er ég að fara að prenta þessa línu. Og þá í lok þessa línu, rétt hérna, ég ætla að gera stighækkun i, i ++, allt sem leið er incrementing það í einu. Svo er ég nú 1. Vegna þess að það var einu sinni 0, ef ég hækka það er, það er nú 1. Og þá er ég að fara að fara aftur að upphafi lykkju og ég athuga ástand. Er ástand samt satt? Já, 1 er enn minna en 10. Svo það er að fara að prenta þetta aftur, fara og þá hækka i, og athuga ástand stöðugt, stöðugt, þar til þú færð að lokum að þeim stað þar sem ég er 10. Þú ert að fara að prenta þetta 10 sinnum og þá ég er að fara að jafna 10. Þú ert að fara að athuga ástand. Er 10 minna en 10? Nei, það er rangt. Svona, þetta lykkja er ekki að fara að hlaupa, það er að fara að brjóta, og þú ert að fara að halda áfram á kóðann þinn. Svo eins og þú krakkar geta sjá, þetta er mjög gott dæmi lykkju þú getur forritað í það keyrir í tiltekinn tíma. Hver og einn skýr? Já. Ræðumaður 17: Hvað um vöxtur veldishraða, er það öðruvísi forritun? ANDI Peng: Þú can-- munum við fara yfir þetta í næstu glæru. Góð spurning. Er anyone-- áður en ég flutt on-- einhver yfirleitt ruglað, vegna þess að þetta er mjög erfitt hugtak. Engar áhyggjur, ef you're-- OK. Cool. Allt í lagi. Bara almenn renna. Þetta meðan lykkja er að gera nákvæmlega það sama til hliðar var. Það er bara skrifað öðruvísi. Þú krakkar geta lesa glærur þegar þér hentar síðar. En bara veit að það er margar leiðir skrifa það sama að gerast með mismunandi lykkjur. OK. Svo, nú erum við að komast í spurningunni um hvað ef við höfum lykkju inni í lykkju. Við erum að fá inn alvöru Inception tegund efni hér. Þegar þú vilt gera hlutina margfeldi sinnum inni af öðrum hlutum að gera hlutina mörgum sinnum, þér vilja það sem er kallað hreiður fyrir lykkju. Fyrir þá sem fyrst að sjá þetta og fá mjög ruglaður, eru allir við að gera hér er að hafa fyrir lykkju hvar við höfum breytu umf. En fyrir innan það, höfum við einnig annað fyrir lykkju af breytu sem heitir dálki. Og ég mæli mjög ykkur öllum sem eru óviss fyrst halda track-- draga þetta út, draga þetta út. Ekki reyna að bara vegna í gegnum það, draga það út. Í höfuðið, á þessu stykki af pappír, eða hvað, skrifa röð, halda utan um hvað röð er jafn. Skrifa dálk, halda utan af því sem dálkur er jafnt. Og halda utan um hvað er prenta út með hverjum endurtekning. Sérhver endurtekning þessa lykkju, hvert endurtekning þeirrar stærri lykkju, bara að halda eftir rökfræði. Og ég tryggt að þú, þú munt elska það sem þú sérð, vegna þess að það er líka mjög við um vandamál setur þínum. Cool. Allt í lagi. Svo það mikilvægasta sem þú krakkar eru sennilega allir hugsa um núna, eru Heimadæmi 1s þín, sem eru vegna Fimmtudagur / Föstudagur. Í water.c program, vísbending þú ert að fara að hafa að hvetja notandann til inntak. Innan mario.c program þú ert að fara að hafa að nota hreiður fyrir lykkju, sem er a lykkja inni fyrir lykkju, að prenta blokk af pýramída, í raun Eins og hvað Mario er að hoppa í gegnum. Og þá inni greedy-- eða þinn kannski Gerð Change, ef einhver af ykkur hafa heyrt um that-- þú ert að fara að þurfa að vera mjög varkár af fyrstu fleytitölum. Mundu fljótandi brotum og heiltölur eru ekki það sama. Fylgjast með því hvaða er hver. Og þú ert að fara að nota skilyrt yfirlýsingar, eins og heilbrigður. Allt í lagi, það síðasta sem. Ég hef fengið nokkrar mínútur eftir. Style. Svo er þetta eitthvað sem er ekki reyndar áhrif á skilvirkni, eða í raun í gangi kóðann þinn. Hins vegar áhrif það okkur eins flokkarar þín, eins og lesendur þína. Það áhrif þig, ef þú ert reyna að finna vandamál. Það áhrif á læsileika kóðann þinn. Svo stíl, eins og þegar þú ert að reyna að stíll ritgerð fyrir ensku, ef þú ekki hafa málsgreinar, þú hefur allt góður stafarugli saman í einni línu, það gerir það mjög erfitt fyrir neinn til að lesa ritgerð þína, jafnvel ef stig eru rökrétt hljóð. Sami hlutur í forritun. Hægt er að hafa hræðilega óskýr númer sem Scaz mun ná, og það getur enn keyrt og virka. En fyrir okkur, sem kæri TAS þína sem að lesa og meta psets þína, það er ekki mjög gott. Svo vinsamlegast, fyrir sakir af okkur og sjálfan þig, þegar þú ert að reyna að laga vandamál í kóðanum þínum, og þú ert að reyna að lesa eigin kóða, gera viss um að þú fylgja nokkrum samningum sem við erum að fara að fara yfir. Svo fyrst. Gefðu breytur þroskandi nöfn. Ef þú vilt geyma heiltölu kallað aldur, vinsamlegast nefna það aldur. Ekki að nefna það ekki hæð. Þegar þú ert að reyna að geyma aldri á hæð, það gerir allt mjög ruglingslegt fyrir okkur. Við líkar ekki að rugla saman. Þú gera ekki eins og að rugla saman. Enginn vill að rugla saman. Ef þú ert að fara að búa til eitthvað, nefna það eitthvað þroskandi. Hins vegar, í fyrir lykkju, einn eðli breytur eru yfirleitt í lagi. Og í for lykkju, ef þú vilt bara i, og j, k, ekki hika við að bara gera það. Samræmi frumstilling. Svo hvað þýðir það? Það þýðir, tæknilega, fræðilega, Þú getur framkvæmt og búið margar breytur á sömu línu. Svo til dæmis, get ég búið heiltala heitir scaz_age, og tala kallaði andi_age = 20, og heiltala heitir jason_age á sömu línu. Og ég get einnig tengt aðeins einn af þeim og ekki öðrum til gildum. Við biðjum þig vinsamlegast ekki gera það. Vegna þess að hér hefur í raun búið þrjár breytur, en aðeins einn af þeim reyndar hefur gildi. Og svo þegar við erum reyna að lesa númerið þitt, eða ef þú ert að reyna að laga vandamál í kóðanum þínum, það er mjög ruglingslegt að fylgja. Svo bara fyrir sýnilegur þitt, fyrir læsileiki okkar, gera það ekki. Skv hrokkið axlabönd. Sumir fólk eins og til að setja sínar hrokkið axlabönd á mismunandi stöðum. Það skiptir ekki máli. Bara ganga úr skugga um að þú ert í samræmi í þinn eigin kóðann á hvar þú vilt að setja þær. Samræmi bil. Ef þú setur pláss eftir fyrir lykkju, alltaf að gera það. Ekki bara eins konar gera það á Sumir staðir, ekki gera það í öðrum. Bara að vera stöðug. Í öðru lagi, ef einhver vildi eins og að lesa CS50 Style Guide, við höfum opinberlega stíl fylgja sem segir þér allt af þessum samningum, auk fleiri. Það er á netinu. Það er eins og cs50.net/style~~pobj eða eitthvað svoleiðis. Þú getur google það. Samræmi er lykillinn. Svo ekki hafa áhyggjur það aðrir eru að gera, bara vera viss um að þú ert samræmi innan eigin kóðann þinn. Einhver hefur einhverjar spurningar um það? Já. Ræðumaður 18: Svo rétt hlutur að gera við frumstilling er bara hafa þá alla í sérstakri lína, er það sem þú ert að segja? ANDI Peng: Ég sjaldan hafa þetta gerast. En ef þú vildir, ef þú vildir að vera eins og sparar pláss í kóðanum þínum, eða hvað, getur þú gert þetta. Við biðjum að þú bara frumstilla ekki eitt og ekki aðrir. Þannig að ef þú vilt gera int scaz_age, int andi_age, int jason_age, það er fínt. Bara ekki frumstilla ekki einn og ekki aðrir er allt. Spurningar? Allt í lagi. Ég ætla að fara burt hljóðnema og leysir músina, og Baton að Scaz á þessum tímapunkti. Þetta er óþægilega. Hér er það. BRIAN SCASSELLATI: Þakka þér. Hvernig er þessi fyrir hljóð? Hljóðið er gott? . Excellent. OK. Svo, hæ allir. Ég ætla að reyna að vinna sig í gegnum hagnýt dæmi hjá þér. Og við erum að fara að nota CS50 er þróun umhverfi, hvað er kallað Integrated Development Environment. Og þú hefur séð þetta sýndi í fyrirlestri. Og í Problem Set 1, þú ert fara að hafa tækifæri að nota það, og leika í kring með það, og fá vanir við það, vegna þess að við erum að fara að nota það í gegnum the hvíla af the annar. Þannig að í þessu IDE, hefur þú það lítur eins og mjög hefðbundinn skrá flettitæki yfir á annarri hliðinni. Þú hefur got a hluti upp ofan þar sem þú ert að fara að sjá kóðann þinn, þinn Cfile, kóðinn sem þú skrifar. Og niður botn, munt þú hafa endastöðvar sem þú verður að nota til að bæði saman program og að hlaupa eða framkvæma program. OK. Svo bara til að gefa okkur smá grunn, í því endastöðvar, þú ert að fara að vera með a setja af stjórn sem eru staðlaðar skipanir um allan flest Unix eða Linux kerfi. Og svo ef þú hefur einhvern tíma notað hvers konar Unix, Ubuntu, eða einhverju öðru bragði, þetta er að fara að líta kunnuglega. Ef þú ert ekki, ekki hafa áhyggjur. Það er ekkert flókið um þá. Þeir eru bara að nota mismunandi setningafræði, mismunandi nafngiftir samningur en þú hefur séð áður. Svo að skrá út skrár innan tiltekins skrá, hann ætlar að nota skipun sem kallast ls eða lista. Ef þú vilt til að sjá allt með allar upplýsingar, þú munt nota skipun lína rifrildi við LS -l. Og það mun sýna þér allt nánar, þar á meðal heimildir fyrir skrána. Til að breyta skrá, þú munt nota CD stjórn. Og þú munt vera fær um að breyta skrá fara báðir til heimasvæði þitt. Það er bara cd allt eftir sjálft, CD með tveimur punkta mun skila þér upp einn á fyrra möppuna. Og þú getur líka CD til a subdirectory því að slá inn cd og nafn þess subdirectory. Þú getur líka búið til nýjar möppur. Og við erum að fara að ganga í gegnum þetta í aðeins eina mínútu. En bara að setja allt á skjánum. Þannig að þú getur séð þær. Þú munt einnig hafa getu að vinna skrár beint frá the stjórn lína. Þú munt vera fær um að afrita þau, að færa þeim, eða til að fjarlægja þá, það er í raun, til að eyða þeim. CS50 IDE gefur þér fullt kraftur stjórn lína rifrildi. Og það þýðir að þú getur líka gera mjög hættuleg hluti. OK. Til dæmis, þú getur fjarlægja, eða sem er að eyða, skrá án þess að spyrja um staðfestingu. Og þú getur jafnvel fjarlægja recursively-- það er Dash r flag-- heilt subdirectory og öllu innihaldi hennar. OK. Þeir eru skráð í rauðu vegna þess að þú ætti að hugsa "HÆTTA" í hvert skipti þú sérð þá hluti. OK. Allt í lagi. Nú loks, það sem er að fara að vera mjög mikilvægt fyrir þig, eru eru nokkrar góðar brellur að vita eins og þú ert að siglingar í gegnum þetta endastöðvar. Í fyrsta lagi getur þú hreinsa skjáinn á hvenær því bara að slá í tær. Og þú ert að fara að sjá mér að gera það nokkuð oft. Þú getur líka bara að sýna texta skrá með því að slá meira og þá skrá nafn. Þú munt þá vera fær um að fletta aftur og fram með það bara með rúm og ör lykla. Ef þú ert, eins og við gerðum í dag í fyrirlestri, forrit sem er í gangi stöðugt í óendanlega lykkju, þú getur hætt þessi forrit frá framkvæmd með því að slá í stjórn, sem er að halda niðri Control-C. Og þú gætir þurft að gera þetta mörgum sinnum. Tölvan fær langt á undan þér. Og þú þarft stundum að gefa það nokkrar tilraunir áður en það mun í raun koma í gegnum. Þú munt einnig vera fær um að raða í gegnum stjórn að þú gafst bara með því að nota upp lykill, arrow lykill, og þá niður ör lykill. Og hvað er gagnlegast er í staðinn að slá út löng nöfn skrá, þú munt vera fær um að nota Tab til AutoComplete nokkrar leiðbeiningar. Nú erum við að fara að sýna alla þá á aðeins sekúndu. Svo ef þú manst ekki þá skaltu ekki hafa áhyggjur. Þetta eru hlutir sem þú munt taka upp og nota sem á líður. OK. Svo í C-- ólíkt í Scratch-- C er unnin tungumál. Það þýðir að við erum að fara að taka uppspretta file-- það er textinn sem þú skrifar, skipanir sem þú skrifar, að printf () yfirlýsingar, lykkjur, allt else-- og við erum að fara að taka að skrá og afhenda það burt til forrit sem heitir þýðanda. Þýðandinn mun þá taka þessi texti sem þú hefur skrifað og þýða það inn tvöfaldur leiðbeiningar að tölvan þín er í raun að fara að nota. Það er kallað mótmæla eða executable skrá. Ef þú horfir á þessa skrá, þú ert að fara að sjá kóðann sem þú hefur skrifað. Ef þú horfir á þessa skrá, þú ert að fara að sjá handahófi röð af stöfum að gera ekkert vit af neinu tagi. Það er vegna þess að þetta er tvöfaldur. Það er ekki ætlað fyrir þig að vera að lesa. Hins vegar hvenær sem þú vilt að hlaupa eitthvað, hvað þú ert að fara að vera í gangi er þetta hlut skrá. Svo þegar við vinnum með þetta skrár, munum við skrifa skrá í C Við munum þá þýða það, með stjórn eins gera sem mun ákalla þýðandinn Clang fyrir C tungumál. Og það mun framleiða hlut skrá, eins og út, eða í þessu tilfelli, nafn, skrá minn, að ég hef sett í. Allt í lagi. Svo skulum reyna raun þetta. Svo ég kom upp með dæmi af því sem ég vildi reyna. Og eitt af því sem heillar mig er fjör. Þannig að við erum að fara að reyna að gera smá fjör nota bara ASCII stafi. Stafir sem við getum prentað út auðveldlega núna. Svo er hér stutt tilraun mín að skapa fyrir þig fjör og kanína gangi í gegnum hátt gras. Það er hann. OK. Svo hann er ekki í gangi ennþá, en hann er standa þar í hátt grasið. Nú ef ég væri Fjörugt, í gamla skólanum útgáfa af fjör, hvað ég myndi gera er að ég myndi framleiða mynd af þessum kanína í grasinu. Og þá myndi ég framleiða annar picture-- annar það sem þeir kölluðu cell-- að hafði kanína aðeins lítillega flutt. Og þá þriðji sem hafði kanína flutti svolítið lengra. Og ég myndi framleiða heilt röð af þessum frumum. Sumir þar sem kanína er yfir á vinstri hönd. Og þá færist hægt og rólega, einn í einu í átt að miðju. Og þá frá miðju yfir til hægri. Og ef ég væri þá, í ​​raun heppin, ég gæti sett það saman og ég gæti lifandi þá. Og það er kanína minn keyra í gegnum grasi. Það er frábært PowerPoint minn bragð fyrir daginn. OK. Svo er þetta eins gott og það gerist. OK. Svo, hér einu sinni enn, hér er okkar bunny keyra í gegnum grasi. Ræðumaður 19: Again. BRIAN SCASSELLATI: One meiri tíma, allt í lagi. Það er kanínan þín. OK. Svo í dag það sem við erum að fara að gera er að við erum að fara til að reyna að gera sjálfvirkan the aðferð til að framleiða þessar frumur. Við munum ekki alveg að benda á vera fær um að setja þá alla saman. En, við erum að fara að reyna að gera sjálfvirkan the Ferlið við að búa til þessa röð. Og þetta er mikið af því fjör í dag er eins. Það er, þú gerir ekki hlutina endilega með því að teikna allt með höndunum. Við notum tölvu til að gera sjálfvirkan hlutar af því ferli. OK. Svo láta mig skipta yfir nú að CS50 IDE okkar. Og ég hef búið til fyrir us-- og láta mér stækka hér smá bit-- ég hef búið til fyrir okkur upphafið. Í hvert skipti sem við biðjum þig um að sitja niður og skrifa stykki af kóða, það sem við erum í raun að biðja þig að gera er að við erum að biðja um að leysa vandamál. Og hvernig sem þú ættir hugsa um að gera það er með því að byrja með nokkrum simple hluti af þeirri lausn. Og þá byggja út frá þeim hluta. Og það er það sem við erum að fara að gera í dag. Svo frekar en að reyna allt í einu að skrifa allt fullt af kóða sem er að fara að framleiða þá 10 fjör frumur, við erum að fara að byrja í staðinn með eitt stykki sem virkar. Og þá munum við byggja upp svolítið um að og aðeins meira og aðeins meira. Nú gott um leysa vandamál með þessum hætti er að það mun leyfa þér að byrja alltaf með eitthvað sem þú veist virkar og kynna einn jöfnum breytingum. Og það er frábær leið að læra hvernig á að kóða, því í hvert sinn sem þú gerir a breyting, þú sérð hvaða áhrif það hefur. OK. Svo er hér upphafið okkar. OK. Svo í byrjun minn skrá, Ég hef hash #included stdio.h. Það er svo að ég geti fengið að printf () virka til að vinna. Ég þá hef ég meginhlutverki mína. Og þetta lítur samt svolítið yfirnáttúrulegt eða hylja sum ykkar. Það er allt í lagi. Allt það segir er að helsta hlutverk tekur engin arguments-- ógilt leið ekkert í C og það skilar samkvæmt venju heiltala. Main skilar alltaf heiltölu, yfirleitt kóða segja hluti gekk vel eða ekki fara vel. OK. En helsta er að hafa þessi mynda fyrir okkur núna. Ég hef þá setja í þrjár línur af kóða. Og með hverri línu númer, ég hef sett umsögn. Nú einn af þeim hlutum sem Við munum krefjast þess að þú gerir það, og það er svo mikilvægt æfa forritun, er alltaf tjá kóðann þinn. Alltaf að skrifa niður í English athugasemd eitthvað að þú heldur að númerið er ætlað að gera. Þannig seinna þegar þú kemur aftur til það, þú getur litið á það og þú getur sagt, ó, ég man hvað ég var reyna að gera með þetta. Eða þegar TA situr með þér til reyna að hjálpa þér á skrifstofutíma, þeir geta líta á þetta og fara, ég sjá hvað þú varst að reyna að gera, en í staðinn er þessi hvað er raunverulega að gerast. OK. Svo ég hef fengið þrjá hluta til númerið mitt, Ég ætla að fyrst af öllu prenti út nokkrum punktum í upphafi. Ég þá prenta út minn mjög fínt kanína. Og þá sumir hluti af punktum í lok. Og þessir þrír prenta yfirlýsingar ættu líta þekki þig á þessum tímapunkti. Allt sem ég er að gera í hver af þeim er ég prenta út röð af stöfum. Það er engin breytur sem taka þátt. Allt er bara flatt. OK. Svo ef ég fer niður núna til að terminal-- minn við skulum sjá hvort ég get fengið þetta aftur out-- og ég ætla að slá ljóst aftur. Ræðumaður 20: Eigum við að nota tvöföldu skástriki að tjá sig? BRIAN SCASSELLATI: Getur nota double-- já. Það er margar leiðir til leyfi athugasemdir á C. Einn leiðin er að nota tvöföldu skástriki. Hin er að nota skástrik og stjarna og svo loka með stjörnu og skástriki. Allt í lagi. Fyrst af öllu, ég ætla að hefja leiðsögn um hér. Svo ef ég fer í heimasvæði mínu, Ég hef breytt möppum þar, Ég ætla að horfa og sjá hvað er í þeirri skrá, LS, listi út. Ég ætla að sjá að ég hef fékk tvær undirmöppum. Við skulum gera þetta aðeins stærri hér svo að við getum öll séð það. Ég get séð að ég hef fékk tvær undirmöppum. Ég mun breyta skrá að fara í vinnurými. Og ég ætla að aðeins gerð út hluti af því, og þá bara högg Tab. Og það verður að ljúka restina fyrir mig. Fancy. Ég leita og sjá í vinnurými. Og núna, ég er að vinna á SuperSection sem við erum að kenna núna. Svo ég ætla að fara inn í þessi skrá. Og að lokum, útlit og sjá. Og ég hef fengið að skrá bunny.c. Allt í lagi svo látið mig tært. Og ég ætla að now-- aftur ég dvelur enn í þeirri skrá og það er að segja mér að ég er í sem SuperSection skrá. Ég ætla að fara á undan og gera áætlun kanína mína. Og þessi stjórn, gera kanína, en hljómandi svolítið skrýtið, Einnig vekur clang þýðanda. Og það er framleitt fyrir mér spenna sem er keyrsluskrá funny-- að executable skrá sem heitir kanína. OK. Ég get þá og þetta hljómar jafnvel verri, framkvæma kanína. OK. Og við skulum sjá hvað það gerir. OK. Það er lítill hluti af það sem ég átti von á. Ég hef fengið kanína myndina mína í það, en ég vildi svona það allt af sjálfu sér. Hvað gerði ég sakna? Ræðumaður 21: Slash l eða rista n. BRIAN SCASSELLATI: Slash n. OK. Svo við skulum fara aftur út hér. Og ég ætla að fá út úr því. Og ég ætla að fara aftur í þessu. Og við skulum taka a líta nú frá aðalæð virka minni hér. Svo hvað ætti ég að gera? Ég vil enda á línu. Svo ég ætla að setja í comment. Ég ætla að setja í printf (). Og hvað þarf ég að setja í? / n. OK. Hvað þarf ég að enda það með? Semíkommu. Allt í lagi. Nú, einn af því sem raunverulega mikilvæg atriði er að tryggja hvert skipti sem þú gerir breytingar í kóðanum þínum, að þú hefur vistað hana. Ef þú hefur ekki vistað númerið þitt, þú ert að fara að taka það smá stjörnu upp. Og það stjarna segir þér hefur ekki vistað þessa kóða. Ef ég safna saman það núna, það er ekki fara að endurspegla eitthvað af þessum breytingum, vegna þess að þýðandinn lítur á skrá það er á disknum, ekki skrá sem er opna í ritstjóri. Allt í lagi. Svo skulum spara það og þá munum við fara rétt á hérna, koma aftur fram. Koma niður á flugstöðinni minn. Og við skulum hreinsa pláss aftur. Og við getum farið á undan og einn tími gera kanína program okkar. Og framkvæma kanína. Það virkaði ekki heldur. Rangt rista. Þannig að ef þú horfir á það sem ég hef fengið, ég setti / n í það, en ég hafði rangt skástrik. Allt að tölvan þín gerir er mjög skýr. OK? Eitt lítið mistök greinarmerki, og skyndilega þú færð ekki það sem þú vilt. Allt í lagi. Svo skulum súmma aftur út aftur. Við munum fara aftur. Vel gert að mjög fljótur viðgerð. Við munum setja rétt skástrik í. Við munum spara hana. Við munum stækka aftur í. Fyrir sumir ástæða, það er ekki vera hamingjusamur, en við skulum fara á undan og við munum fara aftur í flugstöðinni hér. Hreinsa það upp. Við munum stækka. Og einu sinni enn, munum við gera kanína. Og nú víst, það virkar. Húrra. OK. Svo skulum reyna að gera þetta aðeins meira almennt. Við skulum sjá hvort í stað bara prentun eina tiltekna ramma, við skulum sjá hvort við getum gert þetta svo að við getum fengið allar 10 af þeim líflegur ramma sem við vildum hafa. Svo aftur, við skulum taka þetta skrefi í einu. Skulum fyrst alhæfa það, ekki svo að ég alla ramma, en svo ég einhver ramma sem ég gæti langað. Svo er það munurinn milli ramma? Er kanína sama? Áhorfendur: Já. BRIAN SCASSELLATI: Já. Hver er munurinn? Áhorfendur: Position. BRIAN SCASSELLATI: Staða hennar, ekki satt? Og hvernig ég stjórna stöðu sína? Hversu margir punktar ég að setja í upphafi og hversu margir punktar ég setja í lokin. Svo ég hafði fimm minnsta hefst og fimm í lokin. Skulum skipta um þessi fimm með for lykkju. OK. Og ég ætla að búa til fyrir lykkja nú það er að fara að segja, Ég ætla að prenta sumir tala mynda punkta í upphafi. Ég ætla að nota breytu. Við skulum segja, hvernig um i eins teljarinn í lykkju minni. Og ég ætla að lýsa það upp efst. Og þá í for lykkju Ég þarf að gera þrennt. The fyrstur hlutur sem ég þarf að gera er ég að frumstilla i. Hvað ætti ég að frumstilla það að byrja að vera? 0. OK. Þá þarf ég að segja, hvað er uppsögn ástand? Hvenær ætti ég að hætta? Jæja hvernig margir punktar gera þér vilt prenta á þessu? Áhorfendur: Fimm. BRIAN SCASSELLATI: Fimm aftur? Hvernig væri að við skulum gera eitthvað öðruvísi, við fengum fimm. Við skulum sýna að það er öðruvísi. Ræðumaður 22: Two. BRIAN SCASSELLATI: Two. OK. Þannig að ef ég vil tvo punkta, hvað ætti ég að setja hér? Áhorfendur: Three. BRIAN SCASSELLATI: Three. OK. Hversu oft er það að fara í gegnum? Það er að fara að fara í gegnum þrisvar sinnum, 0, 1 og 2, Right? Allt í lagi, við skulum fara aftur niður í tvo. Nú munum við fá tvo punkta. Og hvað á ég vil gera hvert skipti sem ég fer í gegnum lykkjuna? Hvað þarf að breytast í hvert sinn sem ég fer í gegnum? Ræðumaður 23: Bæta við punkt. BRIAN SCASSELLATI: Ég verð að halda áfram. Ég ætla að bæta punkt. Ég ætla að prenta punkt, í hvert sinn í gegnum lykkjuna. En hvernig á ég að halda utan um hversu oft ég hef verið í gegnum lykkjuna? Ég er að nota i, sem breyta, sem gegn. Svo í hvert skipti í gegnum, ég er að fara að hækka borðið í einu. Nú, það er sama fyrir mér eins og að segja i = i + 1. Það er allt í lagi. Ég gæti gert það that-- ég eins og styttingin, þannig að ég ætla að segja að ég ++. OK. Skulum gera það sama hérna neðst. Aðeins ég gerði svona úr því. Ég ætla að láta ykkur gera þetta einn alveg. Allt í lagi. Svo hvað ætti ég að skrifa hér? Hér er mín fyrir lykkju. Ég ætla að gera printf () og ég ætla að gera það þannig að ég prenta bara einn punktur á þeim botn. Hvað ætti ég að skrifa inni þetta fyrir lykkju núna? Jæja, fyrst af öllu því sem breytur ætti ég að nota? Ræðumaður 24: j. BRIAN SCASSELLATI: ég gæti notað j. Get ég notað sama eina? Get ég notað ég aftur? Já. Það er allt í lagi, vegna þess að Is sem ég er að nota hér, Ég þarf þá ekki aftur þegar Ég fá niður að þessum tímapunkti. Svo hvað ætti ég frumstilla ég að? Ræðumaður 25: 10. BRIAN SCASSELLATI: 0. Hvað ætti ég að athuga? Hversu margir punktar þarf ég nú í lok ef ég hef fengið tvö punkta í upphafi? Ég þarf átta í lok, svo hvað ætti ég að athuga, ég than-- minna Áhorfendur: Seven, átta, níu. BRIAN SCASSELLATI: Ég heyrði sjö. Ég heyrði átta. Og ég heyrði níu. OK. Þannig að við erum öll í hægri ball-- Jason segir 10. OK. Ef ég þarf tvær punkta fyrir sá fyrsti, hversu margir gera I-- og ég þarf átta punkta til að Síðast one-- Ég setti tvær upp hér að ofan, hvað ætti ég að setja niður hér? Áhorfendur: Átta. BRIAN SCASSELLATI: Átta. Vegna þess að það er að fara að Count Zero gegnum sjö. Og það er átta sinnum í gegnum lykkjuna. OK. Og hvað þarf ég að gera í lok? Áhorfendur: i ++. BRIAN SCASSELLATI: i ++. Allt í lagi. Svo það er að leita nokkuð gott þar. Við skulum reyna það og við skulum sjá hvað það gerir. OK. Þannig að við erum að fara að spara það. Nice og vistað. Við munum stækka aftur út. Við munum reyna hér í flugstöðinni. Við munum stækka. Oops. Við munum, einu sinni enn, gera kanína program okkar. Og fara á undan og framkvæma kanína. Og það er það. Svo er það kanína okkar. Þar sem það eru tvö punkta í upphafi og átta punktar út í lokin. Allir enn með mér? OK. Þannig að við byggt upp. Við byggt eitt kanína, einu tilteknu ramma. Nú höfum við verið fær um að alhæfa að til að byggja fleiri, mismunandi tegundir af römmum. Nú skulum fara á undan, og hafa það búa ekki bara einn ramma, en við skulum búa 10 ramma, þar sem við rólega gera kanína færa alla hvernig á þessu sviði. Allt í lagi. Við skulum fara aftur. Og við munum reyna núna. Svo hvað þarf ég virkilega að breyta hér? Hvað þarf ég að breyta? Ræðumaður 26: Þú þarft fyrst að breyta fjölda punkta hámarki í upphafi. Vegna þess að ef við erum að gera 10 punkta, það er að fara að þurfa að allt að skala. BRIAN SCASSELLATI: Já. Svo núna hef ég það svona hardwired að alltaf að gera tvær punkta í upphafi og alltaf að gera átta punkta í lokin. Ég vil að byggja annað lykkju, ekki satt? Vegna þess að ég vil ekki að byggja bara eitt kanína mynd, Ég vil byggja 10 kanína myndir. Þannig að ég þarf að byggja aðra lykkju, og eins og ég fara í gegnum þessi lykkja, Ég vil breyta hversu margir punktar Ég prenta í upphafi og hversu margir punktar sem ég prenta á enda, byggt á sem hringrás í gegnum lykkjuna Ég er í. Allt í lagi. Svo skulum við fá annað gegn. Einhver áður sagði, j, þannig að við munum gera aðra j. Og nú erum við að fara að byggja annað til hliðar. Hvað fer inni þessi lykkja? Þetta efni verður að fara inni í lykkju, ekki satt? Er kanína með að fara inn í lykkju? Þarf ég kanína í hver af þeim 10 rammar? Áhorfendur: Uh-ha. BRIAN SCASSELLATI: Já. Ég vil kanína í hvert af 10 rammar, ekki satt? Hvernig óður í the punkta á enda, þarf ég það? OK. Þannig að ég ætla að draga inn þá alla. Ég ætla að upplýsa allan þetta, og ég ætla að lemja Flipi. Og það er að fara að ýta þeim allan svolítið, þannig að það er auðvelt fyrir mig til að sjá hvað er í lykkju. Og svo ég enda það. Skulum segja. OK? Nú, í þessu lykkju sem Ég er building-- Úpps, gera það svo þú getur see-- Ég hef fengið gegn j minn. Ég byrjaði á 0. Hversu oft ég vil að fara í gegnum þessa lykkju? Áhorfendur: 10 sinnum. BRIAN SCASSELLATI: 10 sinnum. Svo hvað númer ætti ég að setja hér? Áhorfendur: 9, 10. BRIAN SCASSELLATI: 9, 10, einhver fékk að segja 11, ekki satt? Ég vildi tvö punkta áður og setja ég minna en 2 pm. Ég vildi átta punkta, Ég setti ég minna en 8. Nú vil ég að fara í gegnum 10 sinnum, þannig að ég setti j minna than-- Áhorfendur: 10. BRIAN SCASSELLATI: 10. Það sem við förum. Og hvað á ég að gera í lok j? ++, Hækka það. OK. Nú, hér er erfiður hluti, það er að fara að gerast núna ef ég geri þetta? Er ég að fara að prenta 10 rammar? Ræðumaður 27: Ég held þeir allir vera sú sama. BRIAN SCASSELLATI: Þær öll að vera það sama, ekki satt? Vegna þess að öll þeirra eru enn að fara til að setja tvö punkta í upphafi. En ég vil að ekki skuli hafa tvær punkta upphafi. Hversu margir punktar gera I vilt í upphafi? Áhorfendur: Breyting. BRIAN SCASSELLATI: I vilja það til að breyta, ekki satt? Svo hvað á ég hér að er að breytast í hvert skipti sem lykkjan fer í gegnum? Áhorfendur: Fjöldi punkta, j. BRIAN SCASSELLATI: J, fjölda punkta. Þannig að ég get breytt þessu til að vera j. Í fyrsta skipti í gegnum lykkja, hvað er að fara að vera? Hvað set ég j að í fyrstu? Áhorfendur: 0. BRIAN SCASSELLATI: Svo hversu margir sinnum er ég að fara að gera þetta? 0. Í annað sinn í gegnum lykkjuna, J er að fara að vera 1 af því að ég hækka það. Hversu margir punktar er ég að fara að prenta? 1. Í þriðja sinn í gegnum lykkjuna, hversu margir punktar er ég að fara að prenta? Áhorfendur: Three. BRIAN SCASSELLATI: j er að fara að vera 3. Hversu margir punktar er ég að fara að prenta? Ó, fyrirgefðu, J er að fara að vera 2. Hversu margir punktar er ég að fara að prenta? Áhorfendur: 2. BRIAN SCASSELLATI: 2. OK, þannig að ég ætla að halda incrementing að því sem á líður. Hvernig væri niðri? Hvað fer hérna? Ég vil ekki 8 alltaf í lok lengur? Ræðumaður 28: 10. BRIAN SCASSELLATI: Ég vil 10 punkta? Ég vil það að breyta líka. Svo hvernig ég vil það að breyta? Áhorfendur: [inaudible]. BRIAN SCASSELLATI: Jæja, ef ég hafa fimm punkta í upphafi, hversu margir punktur er fæ ég á endanum? Áhorfendur: Fimm. BRIAN SCASSELLATI: Ef ég hef sex punktar í upphafi, hversu margir fæ ég á endanum? Áhorfendur: Four. BRIAN SCASSELLATI: Ef ég fékk sjö punkta í upphafi, hversu margir fæ ég á endanum? Áhorfendur: Three. BRIAN SCASSELLATI: Ef ég hef fékk j punkta í upphafi, hversu margir fæ ég á endanum? 10 j. OK. Svo skulum reyna það út. Þannig að ég ætla að spara kanína program okkar. Enn og aftur munum við að minnka aðdrátt. Við munum fara niður að flugstöðinni okkar. Við munum hreinsa það. Email. Við munum gera kanína áætlun okkar, aftur. Og við munum framkvæma það. Uh-ó. Bíddu, við skulum súmma út. Gerði ég fá 10 ramma? Jæja, hversu margir Kanína get ég séð allt það? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Ég fékk 10 ramma. Eru þeir allir á sama? Áhorfendur: Já. Nei BRIAN SCASSELLATI: Nei Það fyrsta, sem kanína er langt til vinstri. Og hérna, kanína er langt á Ræðumaður 29: Hægri. BRIAN SCASSELLATI: Svo hvað gerði ég gleymi að gera? Ræðumaður 30: Byrja nýja línu. BRIAN SCASSELLATI: Ég gleymdi að byrja nýja línu, aftur. Sömu mistök sem ég gerði áður. Allt í lagi, við skulum fara að laga það. Nú, ég hef samt fengið kóðann í það að gera nýja línu. Hvers vegna var það ekki? Ræðumaður 31: Það er ekki inni í lykkju. BRIAN SCASSELLATI: Oh, það er ekki inni í lykkju. Það er rétt. Það situr úti hér. Og til hliðar er allt það er inni að texta. Þannig að ég ætla að fara að flytja þetta inni til hliðar. Og ég ætla Tab fyrir framan það til sýna að það er á réttum stað. Og nú munum við spara það aftur. Við munum súmma út. Við munum skipta yfir í flugstöðinni okkar. Auka aðdrátt. Við munum endurgerð kanína program okkar. Og nú, nú erum við með 10 ramma okkar. [Clapping] BRIAN SCASSELLATI: OK. So. Hér er okkar hreiður fyrir lykkjur. Við gátum að búa í innri lykkja hversu margir punktar sem ég vildi að prenta í upphafi, í lokin. Og ytri lykkja stjórnað hversu margir rammar ég var að byggja. Við byrjuðum með eitt lítið kjarna vandans, og við byggt út frá þeim tímapunkti. Allt í lagi. Skulum gera eitt skref. Ertu tilbúin? Það er einn hlutur hér þar við höfum í raun eins konar fékk meira flókið en við þurfum. Við skulum taka a líta. Svo í kanína prógramminu, ef ég súmma út hér, Ég reyndar sumir af sama hlutur aftur og aftur. Hvað á ég að gera það er tegund af sama endurtaka tvisvar? Ræðumaður 32: Prenta punkta. BRIAN SCASSELLATI: Já Ég prenta þær punkta tvisvar. Really, ætti ég að hafa þetta comment hérna. Ég prenta nokkrar punkta á the farin, allt hér. Og þá er ég að prenta nokkrar punkta í lokin. Og ég svona nákvæmlega það sama. Það sem við erum að fara að byrja vinna á í næstu vikum er að vera fær um að taka þá blokkir kóða sem við notum aftur og aftur, og í gegnum ferli kallað abstrakt, við erum að fara að draga þá út og skrifa þá einu sinni svo að við getum þá endurnýta þá aftur og aftur. Svo skulum reyna það. Tilbúinn? Við erum að fara að taka þetta kóðanum. Og ég ætla að taka það út þaðan. Og ég ætla að define-- niður á botn, Ég ætla að skrifa nýtt hlutverk. Það er ekki að fara að fara aftur eitthvað. Og ég ætla að kalla það printDots. Það er að fara að taka einn rök, heiltala sem segir howManyDots ég ætti að prenta. Og nú í stað þess að prenta j punkta, ég prenta segja howManyDots ég ætti að prenta. Og það er eitt lítið vandamál hér. Einhver veit hvað það er? Hvað þarf ég að er skráð hér sem er ekki skilgreint? Áhorfendur: [inaudible] BRIAN SCASSELLATI: Jæja hvernig margir punktar er skilgreint rétt upp hér, en ég ætla að nota þá breytu i. Þannig að ég ætla að taka þá breytu ég og ég ætla að skilgreina það niður hér í staðinn. Svo nú er að fara að stay-- oops, fékk hástafslásnum á somehow-- ég fara að halda i niður hér. Svo nú er hér smá virka minn eða undir-venja, og það segir, hversu margir punktar er ég að fara að prenta? Og það mun fara í gegnum þessa lykkju og prenta þær aftur og aftur. Ég get þá breytt áætlun mína upp hér. Og hvað gerði ég kalla að virka? printDots. Svo ég ætla að kalla printDots. Hversu margir punktar vil ég að prenta í fyrsta sinn fyrir kanínu? Áhorfendur: j. BRIAN SCASSELLATI: j. Hversu margir punktar vil ég að prenta í lok, eftir kanína? 10 j. Og það er eitt sem ég er vantar. Eins og sást í fyrirlestri í dag, við erum að fara að lýsa printDots upp hér að ofan til að gefa frumgerð. OK. Svo það sem ég hef gert er að ég hef reynt að einangra að endurnýta hluta af kóða sem ég hef gert aftur og aftur. Og ég hef reynt að draga það út svo að allt sem er að finna á einum stað. Þannig ef ég hef mistök einhvers staðar, Ég þarf bara að laga það á einum stað. Allt í lagi. Svo skulum spara hana. Og við skulum vera viss um að það virkar. Svo skulum við fara út. Við munum fara aftur til stöðvarinnar okkar. Við munum stækka. Við munum gera það kanína ferli. Oh. Og það er gefið mér viðvörun. Hvað er það að segja mér? Jæja í eitthvað af þessu sinnum, þú vilt alltaf til að fletta upp í fyrsta error-- nú á þessu, ég hef aðeins fengið einn. Það segir mér að bunny.c, á línu 8, 9 dálki, það er vandamál. Það segir, þú hefur lýst þessu breyta i og þú hefur ekki notað hana. Nú venjulega, það er ekki það versta villa. Það er auðvelt einn að festa. Og í raun getum við farið aftur í. Við getum farið aftur til bunny. Og í þessu tilfelli, allt sem við þarft að gera er að losna við i, vegna þess að við erum ekki að nota ég innan helstu lengur. Við erum bara að nota það innan okkar undir-venja. Svo skulum spara það. Við munum fara aftur. Email. Við munum einu sinni gera kanína. Og það aftur eru 10 rammar okkar. OK. Hvenær þú ert að gefa a procedure-- Já. Ræðumaður 33: Ég hef a-- ég er ruglaður. Þú getur farið aftur að verki? BRIAN SCASSELLATI: Já. Ræðumaður 33: Svo, þegar þú skrifar frumgerð þinn, rök þér hafði það nefnt var kallað howMany? En, below-- BRIAN SCASSELLATI: Ó já. Ræðumaður 33: --called þeim eitthvað öðruvísi, ég skil ekki. BRIAN SCASSELLATI: Hvers eru þeir öðruvísi. Svo er það frábær spurning. Svo spurningin var, upp hér, skrifaði ég howMany, og niðri, skrifaði ég howManyDots. Ástæðan er sú að upp í frumgerð þinn, það er í raun ekki að borga eftirtekt að nöfn sem þú ert að setja í. Allt það sama í raun um er að það er heiltala. Það vill vita formið um hvað þú ert að setja í. Nú stylistically-- oops-- hvað ég ætti ekki, er ég eins og til að gera þessar leik. OK. Vegna þess að það verður að halda það auðveldara fyrir mig að muna. En það var mín mistök Yeah. Ræðumaður 34: Og svo fyrir frumgerð að vinna, bara skrifa þessi lína, skrifa frumgerð, gerir að virka sem kemur rétt fyrir neðan það til að fara til the endir og sækja hvað það þýðir? BRIAN SCASSELLATI: Hvað þýðir það er þegar þýðanda fer í gegnum, það fer frá efsta hluta númerið þitt til botns. Og hvað þetta frumgerð er, er að það er í grundvallaratriðum a loforð. Það segir, að það er að fara að vera fall skilgreint einhvers staðar. Það er að fara að vera kölluð printDots. Og það er að fara að taka eitt viðfang það er að fara að vera heiltala og það er að fara að fara aftur ekkert, ógilt tegund. OK. Ég lofa þér að það er að fara að vera skilgreint einhvers staðar niður götuna. En hvenær sem þú sérð sem, eins og þú fara niður í gegnum the hvíla af minn Helsta hlutverk, ég vil þú þarft að meðhöndla það sem fall sem tekur eitt heiltala inntak. Og svo þegar þýðandinn fer niður í gegnum þetta, sér það sem lofa. Og þegar það gerist niður, heldur að fara, heldur að fara, það finnur í fyrsta skipti printDots er getið. Og það segir, Oh, þú ert að gefa mér þetta j. J er heiltala. Jæja þú lofað mér að myndi vera heiltala og það er rétt. Það er allt í lagi. Og svo að lokum, niður á mjög neðst, áður en ég kem til the endir af mínum skrá, að ég vel á loforð mitt og ég skilgreina það. OK? Ræðumaður 35: Svo saves-- það program vilja spara autt rými að það fer aftur og fyllir á endanum? BRIAN SCASSELLATI: Það er ekki um minni úthlutun. Það er í raun bara um hvað gerð þú ert að búast við að sjá. Ætti þetta hlutur hafa einn rök, eða fimm rök? Ætti að hafa það heiltölur vera gefið það, eða strengi? Það er allt það er að leita að gera er að athuga, ert þú að gefa mér rétt eins konar rök. OK? Allt í lagi. Leyfðu mér að yfirgefa þig með annar hluti til að líta á. ASCII list er ekki mikill fyrirmynd fjör eins og það er í dag. En sumir auðvitað taka hluti og þeir ýta því að öfgar þeirra. Þetta er, eins og David sýnt í fyrirlestri, a stykki af kóða að þú ættir ekki undir neinum kringumstæðum reyna að afrita ykkur. Vegna þess að það er hræðileg stylistically. Í raun, það er hannað til að vera eins erfitt og mögulegt er að lesa. OK. Svo, til að gera aftur, við skulum stækka hér. Ég ætla að fara núna, breyta skrá. Ég ætla að fara upp einn stigi, aftur til vinnuaðstöðu mína. Ég þá breyta skrá í þetta önnur skrá sem ég hef búið til. Og þetta er International Obfuscated C Programming Contest. Ruglað leið sem erfitt og hægt er að skilja. Svo vinsamlegast, ekki vera hrædd ef þú horfir á þetta og fara, ég get ekki lesið það. Það er að benda á það. OK? En, höfum við á þessu yndislegt forrit sem ég er að fara að horfa á eftir bara að slá meira. Og við skulum sjá hvort ég get þysja út bara smá, svo þú getur séð það Og þetta er forrit. Það er nefnt endo.c. Og það lítur út eins og þetta fötu með konar bréfum F-L-U-I-D í það. Þetta er í raun forrit. Það er skrifað í flestum hylja Leiðin að höfundar gæti hugsanlega skrifa það. En það er yndislegt lítið stykki sem býr til líkan af straumfræði. Og svo erum við að fara að gefa sem líkan inntak sem lítur út eins og þetta, að a staired setja gáma með nokkrum vökva, sumir fljótandi, upp á toppinn. Og við munum hafa það að líkja hvað er að gerast við það. Svo ég ætla að kalla það virka, endó. Og ég ætla að gefa það sem inntak skrá sem ég hef haft. Og það er ímynd okkar ASCII list. A fullur vökva dynamic hermir keyra á aðeins nokkrum línum af kóða. Nú er það í raun mjög ótrúlegt um þetta litla forrit er að ég vil að stöðva það núna, þannig að ég ætla að nota hvaða stjórn? Áhorfendur: Control-C. BRIAN SCASSELLATI: Control-C. OK. Svo ég ætla að nota Control-C. C Það verður að stöðva það. Ég hreinsa aftur. Og nú ætla ég að ákalla program, framkvæma áætlun, nota sig sem inntak. Og við munum sjá vökva dynamic eftirlíkingu af því að bráðna. OK. Vinsamlegast ekki láta þessi forrit vera hlutur sem ruglar þig. Það er bara þannig að við getum enda á eitthvað flott og áhugavert. OK. Bestur af heppni með vandamál setur þinn. Við munum vera fús til að svara spurningar eftir flokki. Takk mikið, krakkar.