JASON Hirschhorn: Mirë se vini në CS50 seksion, të gjithë. Emri im është Jason Hirschhorn. Unë jam shumë i TFS juaja, por një shumë e njerëzit do të shpresohet të bashkohen me ne online, nxënësit apo studentët extension duke u përpjekur për të parë përmes seksionit nëse ata humbur seksionin e tyre që javë ose Vetëm të kapur deri në qoftë se ata donin për të rishikuar disa materiale. Pra, si për planin mësimor, të cilat të gjitha e keni lexuar, saktë? Unë shoh një shumë e pohon me kokë. Seksionet t'ju japë mundësi për të shqyrtuar kurs-së Materiali në një mjedis më intime, si edhe pikiatë në duart-në aktivitete. Pra, kjo është në thelb ajo që ne jemi do të jetë bërë çdo javë. Ne jemi duke shkuar për të shkuar nëpër çfarë kemi përcaktuar të jetë më e rëndësishme Temat e mbuluara në leksion, dhe ato ndoshta edhe më e dobishme dhe më shumë gjasa për të ardhur deri në grupe problematike dhe në kuize, dhe në kodim tuaj Jeta jashtë CS50. Pra, ne jemi duke shkuar për të shkuar në ato tema, diskutuar ato, shkoni mbi ta, përgjigjen për çdo pyetje ju djema keni, dhe atëherë ne jemi duke shkuar për të bërë një shumë të Problemet në praktikë kodim. Ju të gjithë solli laptopë, cila eshte fantastike. Kjo është një shkencë kompjuterike klasë. Megjithatë, shumë nga ushtrimet që ne bëjmë, ju nuk do të ketë nevojë për laptopë tuaj. Ju mund të bëni ato në një fletë letre. Kjo është se si ju jeni duke shkuar për të t'i bëjë ato në kuize. Dhe me të vërtetë, kjo është një mënyrë e madhe për të të vërtetë e di se si ju të bëni diçka në qoftë se ju nuk keni Kontrollo 50 deri mbështetet në ose të bëjë të mbështetet në, duke i thënë keni bërë ndonjë gabim. Pra, ju jeni të mirëpritur për të kodit për Aplikim ose run.cs50.net, e cila eshte një tjetër mjet që ju lejon të kodit online, por edhe unë do të rekomandojë, në qoftë se ju nuk e keni provuar atë, duke përdorur një fletë i letrës dhe duke u përpjekur këto praktika Problemet në një fletë letre. Sepse përsëri, kjo është në fund të fundit atë që ju jeni do të jetë kërkohet të bëni në kuize. Pra, le të fillojë me tonë axhenda për sot. Ne jemi duke shkuar për të shkuar mbi disa normave për seksioni ynë, atëherë ne jemi duke shkuar për të zhyten në vargjeve, funksionet dhe command line argumente, e cila është ajo që ju djema kanë mbuluar këtë javën e kaluar në leksion dhe pastaj të hënën, dhe atë që ju do të mbulojë shumë prej nesër. Dhe pastaj në fund, ne jemi duke shkuar për të folur rreth pset2. Në qoftë se unë mund të merrni një shfaqje e duarve në qoftë se ju nuk e kanë shikuar në setin e problemit dy specifikim. Ne do të themi të gjithëve. Sporte. Ne do të flasim për grupe me probleme në një grimë, por në qoftë se ju lexoni grup problemit specifikim, kjo është të gjithë ju duhet të bëni. Nëse ju keni lexuar se para se të vijnë në klasë dhe të martën seksion, ju do të të jetë një pozicion i madh. Ne mund të shkoni nëpër set problemit, e cila është ajo që ne jemi duke shkuar për të bërë në fund. Ne jemi duke shkuar për të shkuar nëpërmjet logjika, sigurohuni janë të gjithë në të njëjtën faqe. Unë dua që ju të jenë në gjendje të largohen nga e marta ndiheni shumë rehat me atë që keni duhet të bëni për të vendosur këtë jave problemit, dhe në qoftë se ju nuk bëni, unë do të lumtur qëndrojnë pas dhe të punojnë me ju. Por kjo është një gjë që ju duhet për të bëni, por unë mendoj se do të jetë me të vërtetë i zgjuar, vetëm për të lexuar set problemit specifikim nga klasa të martën, që kjo tingëllon si një Shumë nga ju djema e bëri. Unë do të fillojë me një axhendë çdo klasë kështu që ju e dini ku ne jemi duke shkuar. Kjo është gjithashtu e dobishme për njerëzit shikuar online sepse çdo seksion është ngjyra e koduar, kështu që nëse doni të vijnë duarkryq dhe të shikojnë vetëm 10 minuta më tepër se tërë seksionin 90-minutëshe, ju mund të shkoni vetëm në seksionin color kodifikua dhe të kërkoni në atë pjesë. Kështu që unë e kam provuar për të thyer ato deri në bukur modulet që do të ju lejojnë të - në qoftë se ju doni të kthehen dhe të shqyrtojë, apo studentë të tjerë që janë vetëm shikuar një seksion për të shqyrtuar - për të gjetur gjë që ata të veçanta dëshironi të paguani vëmendje të dhe të mësojnë më shumë rreth. Sweet. Normat. Unë jam një lider FOP në kampus. Unë nuk e di nëse dikush e bëri FOP. A e dikush të bëjë FOP? Një person e bëri FOP. Dy persona bëri FOP. Awesome. Pra FOP është viti i parë në natyrë Programi i Orientimit. Ne kemi marrë freshmen në pyll dhe të bëjë përvojat më magjike të jetët e tyre, saktë? Po. Tinguj për të drejtën. Kështu që unë vetëm të kërkuar për të filluar ynë i parë Seksioni duke diskutuar disa norma për klasën dhe marrëdhënien tonë sepse unë mendoj se ata janë shumë të rëndësishme. Së pari dhe më kryesorja, si ato prej jush që po seksionin tim kanë marrë dhe është diskutuar në atë mail, I love this. Kjo është pjesa ime e preferuar e vitit. Unë kam qenë i ngacmuar në mënyrë. Unë kam qenë këtu për disa orë sot. Unë nuk e kanë lënë këtë ndërtesë me përjashtim të shkoni hani, sepse unë dua CS50 seksion, unë dashuri mësimin, I love duke punuar me ju djema. Një nga prioritetet e mia më të larta, nëse jo ime prioritet numër një, jo vetëm për kjo klasë por duke përfshirë tjetrin ime klasa dhe extracurriculars, është që të mbështetur ju djema, dhe të ju ndihmojë djema, dhe bëj çmos për të bërë të sigurtë që ju djema keni një, e mrekullueshme, argëtim, produktive angazhohen, emocionuese përjetojnë në këtë klasë. Kjo është ajo që unë jam i angazhuar për të. Kjo është arsyeja pse unë dua të bëj këtë. Ky është numri im i një gjë, mbështetjen e ju djema. Nëse keni ndonjë pyetje në lidhje leksion, set problemi, seksioni, jeta, edhe në qoftë se ju doni të flisni për jeta, ju lutem mos ngurroni për të arritur jashtë. Ju keni numrin e telefonit tim celular, ju keni email tim adresën, ju keni GChat time. Ju mund të më kontaktoni në çdo ose të gjitha ato kurdo, por ndoshta nuk do të merrni një përgjigje kurdo. Unë të përpiqen dhe të marrin përsëri brenda 24 orëve. Shpesh ajo do të jetë brenda 20 minuta ose 24 minuta. Unë duhet të ketë thënë se për ta bërë atë paralel. Por ju do të merrni një përgjigje shumë shpejt. Nëse ju tekst mua një orë para set problemi është për shkak, unë do t'ju qetësojnë poshtë dhe të bëjë ushtrime të marrë frymë thellë me ju, por në qoftë se ju nuk keni filluar, ju jeni ndoshta nuk do të përfundojë, dhe Unë nuk mund të vërtetë të ju ndihmojë atje edhe pse unë do të përpiqet tim më të mirë. Kështu që unë do të bëj gjithçka Unë mund të ju përkrah. Ju lutem mos ngurroni për të arritur jashtë nëse kjo është në seksionin përsëri, në orët Office nëse ju shihni mua, apo edhe jashtë. Unë jam i lumtur për të ngritur një kohë për të përmbushur dhe puna përmes problemeve me ose shkoni mbi materialin. Kështu që është numër një, mbështetje. Unë do të bëj çdo gjë që unë mund të ju përkrah. Numri dy, takimi në mes. Sa më shumë që unë do të doja që të jetë, unë jam nuk gjithëfuqishëm ose të gjithë-fuqishme ose gjithë-duke e ditur, kështu që unë nuk e di se të gjithë Ora qoftë se ajo që unë jam duke bërë është duke u të gjithë, në qoftë se unë jam duke mësuar mënyra topic ju ndihmon të mësoni atë, ose në qoftë se ju janë të hutuar në një temë, por nuk ngrenë dorën tuaj, ose pyesni mua ose dërgoni një email. Ose edhe në qoftë se ju, përsëri, janë të hutuar në lidhje me diçka në setin e problemit. Nëse ju nuk arrijnë jashtë për mua, Unë nuk mund të di se për sigurt. Unë jam duke shkuar të bëj çmos që të kontrolloni në në ju djema, sigurohuni që çdo gjë është duke shkuar mirë, do të përpiqen për të mësuar gjërat në një mënyrë të që do të jenë të favorshme për shumicën e stilet e mësimit tuaj, por në qoftë se ka ndonjë gjë unë mund të bëj, let me know. Përgjatë këtyre linjave, në qoftë se ju doni disa ndihmë me grupin e problemit, unë jam më shumë se të lumtur për t'ju ndihmuar me grupin e problemit. Ne jemi duke shkuar për të bërë një shumë të se drejt e dytë gjysma e këtij seksioni. Por në qoftë se ju nuk e keni lexuar këtë problem përcakton mbështesë dhe nuk e kanë shikuar shëtitje përmes dhe nuk kanë shikuar pantallona të shkurtra dhe duke pritur mua që t'ju mësojë çdo gjë që ka qenë e filmuar online ose që ju mund të gjeni në CS50 Studimi, që nuk është me të vërtetë e drejtë për mua ose me kolegët tuaj të tjera. Pra ju lutem, unë jam më shumë se i lumtur për të ndihmuar ju, por ju djema mori të takohet me mua në mesme. Ne kemi ton e burimeve për ju dispozicion në CS50. Kam përmendur disa prej tyre. Ju lutemi të përfitojnë prej tyre. Nëse jeni të hutuar, unë jam më shumë se i lumtur për të ju ndihmojë të shpjegojë ato në një mënyrë tjetër, por kjo nuk është e drejtë nëse studentët të tregojnë deri në orët e zyrës, nuk kanë filluar asgjë, dhe kjo është Natën e të enjtes dhe ata janë duke pritur NGP-es të ecin ata nëpër çdo të vetme gjë për problemin e ngritur për shkak në mesditë ditën e ardhshme. Bëni kuptim? Përsëri, ju lutemi na takohen në mes. Dhe në fund, pritshmëritë e larta. Unë jam do të jetë gjithë notimi i cili është në seksionin tim, ose të shënuar tuaj grupe problem. Ju nuk keni shkuar mbrapa problemin vendosur zero ose një akoma. Ne jemi të vjen keq për këtë. Ajo na mori një kohë për të në fund vendosen seksione, dhe tani ne mund të fillojë nota. Unë do të merrni ato përsëri tek ju sa më shpejt të jetë e mundur. Këto janë disa nga tim advisees atje. Unë do të merrni ato përsëri tek ju sa më shpejt të jetë e mundur. Dhe për të vendosur dy problemeve, ne do të jetë në planifikojë dhe ne do të fillojnë marrjen e tyre për ju shumë shpejt pas ju kthejnë ato in Kur ju merrni problemi juaj të vendosur prapa, ju do të merrni rezultatet, siç e dini nga lexuar planin mësimor - korrektësisë, , dizajn fushëveprimi, dhe stil rezultatet. Ju do të merrni edhe komentet. Komentet janë më të rëndësishme se rezultatet. Unë mendoj se është e sigurt të them se. Rezultatet janë vetëm një numër 1-5. Është e vështirë për të lexuar në ato. Është e vështirë për të përmirësuar nga ato. Por komentet do të theksojnë specifike gjërat që ju bëri mirë apo zona të ju mund të përmirësuar dhe do t'ju japë disa Ide për të ardhmen ose të një alternative mënyra për të bërë gjërat. Pra ju lutem, ju lutem, ju lutem lexoni nëpërmjet komenteve. I vënë një shumë kohë në këto komente. Ju lutem lexoni me anë të tyre dhe të bëjë jo vetëm lëvizni poshtë në fund të PDF, shikoni për rezultatin tuaj, ose shkoni online dhe për të gjetur rezultatin tuaj, dhe pastaj të injorojë komente. Kjo nuk është se si ju jeni do të merrni më të mirë. Kjo nuk është se si ju jeni duke shkuar për të rritur rezultatet tuaja në fund të fundit, vetëm duke shikuar në rezultatet. Ju lutem shikoni në këto komente. Dhe përgjatë vijës së pritjeve të larta, përsëri, siç thashë, ju mund të vlerësohen nga një përmes pesë. Twos, threes, dhe katër këmbë Shumica dërrmuese e pikëve ju jeni duke shkuar për të marrë. Ones dhe pesë sosh janë të dy të vërtetë të rralla. Ka gjithmonë gjëra të ne mund të bëjmë më mirë. Sa herë që kam një kod programi, ka gjithmonë diçka që unë mund të ketë bërë më mirë. Pra, në vend se duke thënë që ju të merrni një pesë gjithë kohës në çdo gjë dhe bëri gjithçka të përsosur, unë nuk mendoj se ndonjë prej nesh të vërtetë besoj se ne - apo Shpresojmë, ne nuk bëjmë gjithçka të përsosur të gjithë kohës. Pra, nuk do të jetë i shqetësuar nëse ju nuk ka marrë një pesë. Një pese nuk ndajë mbi një A, nje katër nuk hartë mbi një B, një tre bën jo mbi një hartë C. Kjo nuk është e se si rezultatet punojnë. Ashtu si Davidi e ka thënë shumë herë, AT Semestri fund e gjitha e rezultatet tuaja dhe input prej meje, TF juaj, të vijnë së bashku dhe të përcaktojë një notë përfundimtare për ju. Por përsëri, kjo nuk është pesë, A, katër, B, et cetera. Kështu që unë jam duke shkuar për të kanë shpresa të mëdha për ju djema. Unë jam duke shkuar për të presin problemit të mirë vendos dhe unë jam duke shkuar për të dhënë ju reagime si të tilla. Dhe kjo nuk do të thotë që ju jeni duke shkuar për të marrë një notë më keq. Ju janë të vlerësohet në aspektin e progresin tuaj nga java e zero në fund të kursit. Dhe së fundi, në drejtim të lartë Pritjet në klasë, I love kur njerëzit marrin pjesë. Unë e kuptoj disa njerëz ndihen më shumë ose më pak të rehatshme pjesëmarrëse. Njerëz të tjerë janë duke marrë pjesë jo duke ngritur dorën e tyre dhe të duke folur gjatë gjithë kohës. Por ne në këtë klasë do të jetë duke bërë një shumë probleme të vogla, shumë i pyetjeve mini, dhe pastaj disa problemet më të mëdha coding. Pra, patjetër të punojnë këto ushtrime jashtë kur ne bëjmë ato në kompjuterin tuaj ose në një fletë letre. Por unë gjithashtu do t'ju japë disa kohë para dikush ndonjëherë ka për t'iu përgjigjur disa nga pyetje I pyes. Pra, sepse unë do t'ju jap disa kohë për të mendoni rreth saj, sepse ne jemi duke shkuar për të bërë gjëra në partnerët ndonjëherë, Unë do të pres të gjithë për t'u angazhuar diku. Dhe për shkak të mungesës së një afat më të mirë, ka ndoshta do të jetë quajtur të ftohtë, e cila është vendi ku të gjithë do të kenë një shans të mendojnë për përgjigje, dhe pastaj Unë do të thërrasë për ju, dhe pastaj ju do të thoni përgjigjen. Mos u shqetësoni, ose të frikësuar për këtë. Unë kam bërë atë në të kaluarën dhe ne kemi gjetur se ajo është shumë më i suksesshëm, lexoni edhe kërkime arsimore në atë për të përcaktuar se nëse apo jo kjo ishte një taktikë të mirë. Kjo është shumë e dobishme, sidomos në qoftë se ju jep nxënësve kohë për të menduar përgjigjet dhe nuk e bëjnë ata të vijnë vetëm dhe të thonë atë të drejtë off bat. Por nëse ju nuk ndiheni rehat duke u përgjigjur, unë jam gjithashtu mjaft i mirë në ndjerë se nga, dhe ne nuk jemi duke shkuar për ju vë në vend, sidomos në kamera, edhe pse asnjëri prej ju jeni në kamera tani. Pra, ata janë normat kam. Një gjë më shumë përgjatë vijave e takimit në mes. Unë jam duke shkuar për të ju jap djema një shumë e reagime. Ju lutem jepni reagime si. Ka një website, sayat.me/cs50. Pra, kjo është një reagime të ndershëm. Nëse ju doni të jepni atë gjatë seksion, Kam marrë një email kur kjo ndodh. Ne do të marrë një pushim në një grimë, kështu që unë do shikoni nëpër reagime atëherë. Nëse ndonjëherë keni ndonjë reagime, ju lutem jepni atë për mua atje. Nëse ju jepni reagime mbi Q, që është e mrekullueshme, por kjo është udhëzues që ju të bëni në fund. Por kjo do të jetë në fund të semestër kështu Unë nuk do të jetë në gjendje për të marrë ndonjë nga se reagime dhe ta kthejnë atë në mësimdhënie ju djema të mirë. Pra ju lutem, nëse ju keni ndonjë Feedback, t'i jepte për mua. Unë dua feedback. Mbrapsht në FOP, ne kemi marrë reagime gjithë kohës. Ju mund të jepni pluset gjëra të mira, Deltat, gjëra që unë mund të përmirësojë mbi të. Ju mund të komentojë mbi veshjet e mia. Kjo nuk do të jetë aq e dobishme, por ju jeni mirëpritur për të komentuar mbi çdo dhe të gjithçka. Ju lutem, ju lutem jepni reagime. Unë vlerësoj atë shumë dhe ajo do të thotë shumë për mua. Një normë më shumë, fun. Ne jemi duke shkuar të ketë një shumë të fun. Shpresojmë se në këtë kurs, ju do të kanë shumë të fun. Ne do të kemi karamele në seksion. Ne do të kemi muzikë. Ne shpresojmë se do të marrë të dini një një tjetër disi mirë, kështu që unë dua kjo të jetë një, fun përvojë të angazhohen. Unë e di se disa prej jush kanë rënë në gjumë në leksionet keni pasur më herët sot, kështu që shpresojmë se nuk do të jetë rasti tani. Dhe në qoftë se ajo është rasti tani, vetëm nuk gërhij sepse që mund të kapur në kamera. Sweet. Çdo pyetje, komente, apo shqetësime para se të lëvizin në lidhje me çdo gjë që ne kemi biseduar rreth? Great. Pra, ne jemi duke shkuar për të shkuar në vargjeve të para. Kjo është se si ju të bëjë një rrjet. Ne kemi parë këtë më parë. Ju keni një lloj të dhënave, ju keni një emri, dhe atëherë ju keni një madhësi. Të drejtë këtu, unë krijoj dy vargjeve. I pari është një grup të karaktereve, dhe ajo ka 26 hapësira. Njëri dyte eshte nje grup i rezultatet, dhe ajo ka tre hapësira për tre integers. Po? STUDENT: A janë të gjitha këto slides diku në dispozicion për ne? JASON Hirschhorn: pyetje e madhe. Pyetja ishte, janë të gjithë prej këto slides në dispozicion? Po. Të gjitha këto slides do të jetë në dispozicion, dhe në të ardhmen, unë do të email atyre të ju përpara seksion. Por sot, sepse kjo është parë javë, kemi pasur një fillim i vonuar. Pra, zakonisht, ju do të merrni këto slides, por ata do të jenë në dispozicion online dhe Unë do të email atyre për ju drejtë pas klasës. Çdo pyetje të tjera? Pra, përsëri, vargjeve janë kutitë, për shkak të mungesës së një fjalë më të mirë, që mbajnë të shumta Elementet e një lloji të dhënave, dhe ata janë pranë njëri-tjetrit në kujtesë. Dhe kështu përsëri, kjo është se si ju mund të bëjnë dy lloje të vargjeve. Pra, pasi ju keni bërë array tuaj me se vija e parë - rezultatet int, kllapa tre, parantezë afër - ju doni të nisja atë. Ju dëshironi të vënë disa vlera në atje. Dhe kjo është se si ju vënë disa vlera në atje, vetëm duke zgjedhur indice dhe shkruar numrin. Le të tërheqë këtë në bord. Mund të shihni të gjithë? Gjithkush mund të shohin. Sweet. Kështu që do të jetë mia array quajtur Scores. Siç mund ta shikoni, kjo është madhësia tre. Ka tre kuti në atje. Çdo njëri mund të përshtatet ajo Lloji i të dhënave lloji? STUDENT: Integer. JASON Hirschhorn: Një numër i plotë në këtë një të tillë. Ne shkruam rezultatet int, dhe fjala e parë është lloji i të dhënave që do të të shkojnë në kutitë e në atë rrjet. Kështu që unë mund të përshtatet tre. Pse nuk kam zero deri atje në bord? Pse e bën atë të thonë se është e barabartë me zero Rezultati 1? Kujtoj mua e emrit tuaj. STUDENT: Kurt. JASON Hirschhorn: Kurt. STUDENT: Po. JASON Hirschhorn: Pse? STUDENT: Për shkak se indeksi i parë është zero, ne të fillojë numërimi në zero. JASON Hirschhorn: Pra ne fillojmë numërimit në zero. Kjo është saktësisht e drejtë. Kjo është pjesë e konfuze dhe udhëtim do të ju lart, sidomos kur ju jeni duke u përpjekur për të iterate përmes vargjeve, të cilat ne do të bëjmë në një grimë. Ne të fillojë numërimi në zero. Pra, nëse unë dua të referohen parë kuti, kjo nuk është një kuti. Për fat të keq, kjo është zero kuti. E dyta është një kuti, dhe në këtë rasti, një e treta është dy kuti. Po në lidhje me tre kuti? Ku është tre kuti? Ose në qoftë se unë dua të bëj rezultatet parantezë, tre, simboli i ngushtë, çfarë është ajo? Pra, ju tha se karakteri null. Çdo mendime të tjera? Çfarë është kllapa rezultati tre kllapa? STUDENT: Ajo nuk ekziston në të vërtetë, sepse ju definohet vetëm si rezultatet, kllapa tre. JASON Hirschhorn: Pra, ju thoni ajo nuk ka të vërtetë ekziston. Në disa raste, kur ne jemi që kanë të bëjnë me vargjet, në përgjithësi ne do të vënë një nul Karakteri në fund. Ne do të merrni për të që në një të dytë. Por në këtë rast, nuk ka asnjë kuti e tretë këtu. Pra, kutia e fundit në çdo grup është madhësia minus 1. Pra, nëse ne kemi një rrjet të madhësisë n, Kutia e parë është në zero, e fundit është at n minus 1. Dhe në këtë rast, ajo nuk ekziston. Nuk është diçka që këtu në memorie, por kjo nuk është e jona. Ne nuk zotërojnë atë. Ne nuk pyesin për atë. Pra, nëse ne të përpiqemi për të hyrë në atë, të cilin ne do të bëni në një grimë, ne jemi ndoshta do të merrni në telashe. Në këtë rast, unë jam Initializing mia; array me tre variablave. Ne jemi duke vënë një kuti në një zero, një dy ne nje kuti, dhe nje ne tre kuti dy. A ka dikush ndonjë pyetje Rreth Initializing një koleksion? Pra, ne shkuam mbi këtë vetëm tani. Scores, simboli i tre, simboli i ngushtë, se nuk ekziston. Ne jemi të indeksuar zero në shkenca kompjuterike, kështu që ne të fillojë numërimi në zero. Kutia e fundit në dispozicion për ne, ajo është e kutinë e tretë, por ajo që quhet kuti numri dy. Poshtë nën, kjo është një alternativë Mënyra e Initializing vargjeve. Pra, në vend të krijimit array në një line, mbushje kutinë e parë, atëherë Kutia e dytë, pastaj kutinë e tretë, ju mund të bëni të gjitha në një linjë. Pra, në këtë linjë, të dy vargjeve. Kjo krijon koleksion të njëjtën e saktë, si ajo që kemi krijuar të drejtë këtu, por ajo thjesht e bën atë në një linjë. Tani ne kemi krijuar koleksion tonë. Zakonisht kur ju krijoni një koleksion, ju doni të bëni diçka me të, nëse që është plotësoni atë ose të marrë gjëra nga ajo dhe ato të shtypura në ekran. Në këtë rast, ne jemi duke shkuar nëpër tonë Rezultatet array, të cilat ne initialized në rreshtin e parë deri këtu në gri. Dhe pastaj në rreshtin e dytë, ne fillim iterating nëpër rrjet. A ka dikush ndonjë pyetje në lidhje me Struktura e një për lak? Pra, kjo është për lak. Ne kemi gjendjen tonë fillestar, dhe pastaj Kushti ynë përfundimtar, dhe pastaj ne iterate, I, çdo lak. Dhe në formatimin e teksteve kaçurrel në këtë për loop, çfarë ndodh në qoftë se unë ishin të drejtuar ky program? Dikush mund të më tregoni se çfarë ne do të merrni? [? Matu? ?] Matu: Printo gjitha rezultatet në secilën linjë. Ajo do të shtypura çdo rezultati në një linjë të veçantë. JASON Hirschhorn: Çfarë saktësisht ajo do të shtypura? STUDENT: Ajo do të shtypura një, pastaj dy, pastaj tri. JASON Hirschhorn: Pikërisht. Ajo do të shtypura një, pastaj dy, pastaj tre, secili në linja të veçanta, për shkak se ne jemi duke shkuar nëpër rrjet dhe ju do të shohim se dyti, printf , deklaratë rezultatet i. Pra, në raundin e parë përmes ynë për loop, i barabartë me zero, që do të thotë ne jemi duke marrë vlera në rezultatin zero - të cilat, në qoftë se ne të kthehemi në diagram jone, eshte nje - dhe mbushjen në - oh, ai thotë se c. Kjo duhet të jetë d%. Unë do të rregullojmë se në një grimë, kur Unë dora që jashtë për ju djema. Por ne jemi duke paraqitur një numër të plotë, kështu që duhet të jetë d% të drejtë këtu, jo c%. Çfarë është për% c? STUDENT: Karakteri. JASON Hirschhorn: Karakteri, saktësisht. Çfarë është njëri tjetrin? Nëse ju nuk dëshironi të bëni d% për një integer, çfarë tjetër mund të bëni? STUDENT: i. JASON Hirschhorn:% i, saktësisht. Pra, ndonjë pyetje rreth iterating nëpër rrjet? Pra, çfarë ndodh në qoftë se ne e bëjmë këtë? Në vend të bërë unë është më pak se tre, ne nuk i është më pak se, ose të barabartë me tre. Çfarë ndodh kur ne të drejtuar këtë kod? Po, Annie? STUDENT: Ata janë duke shkuar për të shtypur jashtë sende të pazakontë në linjën e katërt. JASON Hirschhorn: Pra, ju tha, a është duke shkuar për të shtypura nga gjëra të pazakontë në Linja e katërt? A ka dikush të ketë një përgjigje për pyetjen e saj? Pra, shanset janë që kur ne kemi marrë për - kështu që në raundin e katërt përmes për tonë loop, ashtu si keni menduar, Annie, ajo do të jetë simboli i tre pikët, të cilat ne kemi motive tashmë se nuk ekzistojnë, dhe ne jemi duke shkuar për të përpiqen dhe qasje që, print it jashtë, e përdorin atë farë mënyre. Pra, kompjuteri do ndoshta merrni çmendur në ne. Ju jeni saktësisht e drejtë. Ajo mund të lënë programin krejt. Ajo mund të shtypura nga diçka të vërtetë i çuditshëm. Ju nuk mund të themi me siguri. Shanset janë se ndoshta do të merrni çmendur në dhe ju lë vetëm e drejtë larg. Por ky është një gabim i përbashkët që ju do të keni ku ju jeni vetëm jashtë nga një në fundi, dhe kjo eshte nje virus qe do pllakos ju të gjithë kodim tuaja. Një mënyrë unë doja të bëni është vetëm në një whiteboard, të shkojnë nëpër çdo ripërsëritje e lak në dorë ose në letër për të parë çfarë po ndodh, dhe pastaj ju në përgjithësi e kuptojnë, oh wait, unë nuk duhet të kanë shkuar në më pak se ose e barabartë për të tre. Unë duhet të ketë ndalur në dy, e cila është çfarë ndodh nëse gjendja juaj është më pak se tre. Ndonjë pyetje deri më tani? Sweet. Pra, ju keni të gjithë kompjuterat tuaj të hapur. Ne jemi duke shkuar për të ju jap 02:58 minuta për të shkruar një program që krijon një rrjet të integers me një nëpërmjet pesë dhe më pas printon nga çdo integer në një linjë të re. Dhe në qoftë se ju keni ndonjë pyetje, ngrenë dorën tuaj. Unë jam i lumtur për të ardhur nga. Ashtu si thashë, le të marrin tre minuta për të shkruar këtë. Gjithkush është OK, nëse unë shkoj në një dritare të re dhe të mbyllë këtë? Unë jam i keq në qoftë se ju nuk keni pasur një shans për të përfunduar, por ne jemi duke shkuar për të bërë atë së bashku tani. Pra, deri në ekran, unë kam # include cs50.h, # include stdio.h. A mund dikush më tregoni se çfarë këto dy linja të bëni? Michael? STUDENT: Ato përfshijnë bibliotekat CS50 që bëri dhe që ka Steve ruhen për ju për të përdorur për të bërë jetën tuaj më të lehtë. JASON Hirschhorn: Pra, ju tha se ata përfshijnë bibliotekat, një autoritet që CS50 bërë, cs50.h, dhe një që është vetëm standarde, vjen me paketë C, stdio.h. Çfarë do të thotë të përfshijë bibliotekat, pse? Mund të jetë pak më specifik? STUDENT: Kjo e bën atë në mënyrë që ju mund të përdorin fjalë të caktuara të kodit të ketë një funksionojnë ndodhë pa pasur nevojë të shkojë dhe të bëjë c funksion veten. JASON Hirschhorn: Mund të ju më jepni një shembull? STUDENT: Ashtu si printf është një që ju mund të përdorni. JASON Hirschhorn: printf. Pra, ju tha printf është një nga ata Funksionet ku në vend që të shkruani printf në tuaj, printf është përfshihet në të vërtetë në stdio.h, kështu që ju mund të përdorni vetëm atë dhe të supozojmë se ajo do të punojë. Në stdio.h, nëse keni hapur këtë dosje, ajo do të përfshijë si printf Punimet, të gjithë e kodit për printf? Pse jeni duke tundur kokën tuaj? STUDENT: Sepse skedar header vetëm përfshin deklaratë funksion. JASON Hirschhorn: saktësisht e drejtë. Fotografi header përfshin vetëm deklaratë funksion. Pra, në thelb, kur ju përpilojnë këtë, goditi Bëni numërimit, të cilat ne do të bëjmë në një dytë, përpiluesit e di se në qoftë se ju përdorni printf, printf ekziston. Ajo do të përcaktohet diku. Kjo nuk është një problem për ju duke e përdorur atë. Dhe pastaj më vonë, ai do të përfshijë ato dhe zero që në fakt përmbajnë Zbatimi printf së dhe bashkojë ata me kodin tuaj. Si mendoni ju sigurohuni që ajo përfshin ato dhe zero për, të themi, të merrni string? STUDENT: Get string është në cs50.h. JASON Hirschhorn: E drejta. Pra, që thotë se të marrë string ekziston, deklaratë funksion. Por pastaj ato dhe zero, binare fotografi që në fakt përfshin Zbatimi i vargut të merrni? Si mund të bëni të sigurtë që shkon me programin tuaj? STUDENT: Pass Linker në command line argumenti. JASON Hirschhorn: Pass Linker në argumentin command line. Si do të bëni këtë? STUDENT: Është-l vijë në tingëllim JASON Hirschhorn: saktësisht e drejtë. Ju thoni-L CS50, e drejtë? Kjo përfshin ato dhe zero. STUDENT: Por Bëni bën se për ju, e drejtë? JASON Hirschhorn: Pikërisht. Bëni që bën për ju, por përfundimisht, ju nuk do të keni bërë, ose ju do të keni për të bërë një Sigurohuni në tuaj, kështu që është një Gjë e mirë për të kujtuar. Nëse keni qenë duke shkuar për të përdorur një nga këto bibliotekat e tjera, jo vetëm që ju keni të shkruajë # include dhe pastaj biblioteka. Ju gjithashtu duhet të lidhë atë in Dhe këto dy gjëra janë të ndryshme. -L CS50 është i ndryshëm # include se cs50.h. Pastaj kemi int kryesore void formatimin e teksteve kaçurrel, dhe tani ne jemi duke shkuar për të kodit brenda kryesore. Linja e parë unë kam këtu është një koment që thotë se, të krijojë një rrjet të me një ints përmes pesë. Çfarë është një fjalë e mirë për të përshkruar atë që kam kanë të drejtë tani në ekran, vetëm komente brenda kryesor? Çfarë ne e quajmë atë? STUDENT: pseudokod. JASON Hirschhorn: pseudokod. Faleminderit, Xhefri. Kjo është saktësisht e drejtë. Pseudokod. A ju djema parë pseudokod para? Ngritja dorën tuaj nëse ju keni përdorur pseudokod para problemit të ngritur një të tillë. Rreth gjysma prej jush. Unë do të highly recomend duke përdorur pseudokod për të thyer probleme në të vogla, më të lehtë për të kafshoj copa. Gjithashtu, në qoftë se ju bëni pseudokod, ju kemi komentet tuaja tashmë në masë të madhe ndërtuar në, kështu që ju nuk keni për të shkojnë prapa dhe të përpiqet të kuptoj se atë që keni vepruar. Pra, mund dikush të më jepni këtë linjë parë për të krijuar një rrjet me njëra ints nëpërmjet pesë? Ju? STUDENT: Int dhe pastaj ju mund të telefononi çfarëdo numri, dhe pastaj katrore kllapa pesë. JASON Hirschhorn: Numrat Pra int, kllapa katrore pesë. STUDENT: barabartë, dhe pastaj formatimin e teksteve kaçurrel. JASON Hirschhorn: barabartë, formatimin e teksteve kaçurrel. STUDENT: Një, dy, tre, katër. JASON Hirschhorn: Një, dy, tre, katër, pesë. STUDENT: Dhe pastaj formatimin e teksteve kaçurrel dhe pastaj pikëpresje. JASON Hirschhorn: Dhe kaçurrel formatimin e teksteve dhe pikëpresje. Excellent. Print nga çdo int mbi një linjë të re. A mund dikush tjetër të japë mua se kodi, ju lutem? [? Matu? ?] Shkoni përpara. STUDENT: Për ( JASON Hirschhorn: Për ( STUDENT: int i = 0 JASON Hirschhorn: int i = 0 STUDENT: pikëpresje i më pak se pesë. JASON Hirschhorn: pikëpresje, Unë pak se 5. STUDENT: pikëpresje, i + +. JASON Hirschhorn: pikëpresje, i + +. STUDENT: kllapat mbyllura, pastaj Braçe hapur. JASON Hirschhorn: kllapat e mbyllura dhe dy formatimin e teksteve. Brenda formatimin e teksteve? STUDENT: Dhe pastaj printf "% d / n" JASON Hirschhorn: Na vjen keq, të mbajë në. Printf "% d / n, të japin kuotën e mbyllur. STUDENT: Dhe pastaj quote mbyllura, presje, numërimin, simboli i. JASON Hirschhorn: Comma, numërimin, simboli i. STUDENT: Na vjen keq, numrat simboli i. JASON Hirschhorn: Numrat, simboli i. STUDENT: Më vjen keq. Dhe pastaj mbyllet kllapa, pikëpresje. JASON Hirschhorn: Mbyllur kllapat, pikëpresje. Unë jam duke shkuar për të shpëtuar atë. Ne jemi duke shkuar për të bërë numërimin. Dhe si mund unë të kandidojë akuzë? STUDENT: Backslash. STUDENT: Dot plagë përpara - JASON Hirschhorn:. / Numëruar, saktësisht. Falemnderit. . / Mbështeteni. Një, dy, tre, katër, pesë në linjat e reja. Duket si ai ka punuar. Po, Noah? STUDENT: Ju gjithashtu mund të bëjë më pak se ose barabartë me katër, si unë është më pak se ose e barabartë me katër? A ka ndonjë avantazh për të bërë më pak se pesë, ose vetëm një mënyrë të ndryshme të shkruar atë? JASON Hirschhorn: Pra pyetja është që ju mund të ketë bërë unë është më pak se ose e barabartë me katër në vend të Unë është më pak se pesë. Do që kanë punuar njëjtë? STUDENT: Ajo duhet. JASON Hirschhorn: Po. Është krejtësisht do të punojë njëjtë. Stilistikisht, kjo është përgjithësisht më pak se, dhe ju do të shihni në një të dytë, kur ne nuk strings, ju mund të përdorni diçka quajtur strlen, të cilat ju kam parë para, për të marrë gjatësinë i vargut. Dhe ju nuk mund të bëni më pak se ose e barabartë strlen. Ju mund të bëni pak se ose e barabartë strlen minus një. Pra, kjo është vetëm nicer për të bëjë më pak se strlen. Po? STUDENT: Dhe në aktuale kuize, të bëjë ne kemi për të dhënë komente mbi tona Kodi, si dhe? JASON Hirschhorn: Pyetja ishte në kuize, bëni ju duhet të japin komente? Pra, ne do të flasim më shumë rreth kuize kur ata vijnë, por në përgjithësi, një e mirë rregull e pranoj është kur ju jeni shkruar kodin, japin komente. Nëse ju merrni kodin e gabuar, por komentoni drejtë, ju mund të merrni disa kredi të dyja nga mua, nëse unë u notimit ju në një grup problemit ose në një quiz. Pra, komentet janë gjithmonë e mirë për të siguruar. Sweet. Numërimi. Punë të shkëlqyer. Le të lëvizin. Strings. Strings. Ne kemi parë këtë më parë në leksionin. Kjo shpërtheu mendjen time, kur unë gjetur të parë këtë. Ajo ndoshta nuk e ka hedhur dikush e mendje këtu, por kjo është OK. Vargjet janë të vargjeve të karaktereve, dhe ata përfundojnë me të, si ju tha më herët, Terminator zero, e cila është ky karakter / 0. Nëse ne jemi duke shkuar për të nxjerrë një varg mbi bordi, ne do të nxjerrë atë mbi këtu. Pra, sa kohë është ky varg? Më vjen keq. Sa kohë është ky varg? STUDENT: [padëgjueshme]. JASON Hirschhorn: Katër? Pse është ajo katër? STUDENT: Sepse spot pestë eshte per me karakter zero. JASON Hirschhorn: Pra spot pestë eshte per me karakter zero. Pra, nëse unë për të kandiduar në strlen kësaj, ajo do të jepni katër. Korrigjuar. Dhe array, edhe pse, në qoftë se unë ishin të nisja këtë koleksion, sa hapësira Unë do të duhet të kërkoni për të? STUDENT: Pesë. JASON Hirschhorn: Pesë. Unë do të duhet të pyesni për pesë, por unë mund të vënë vetëm katër karaktere në këtu sepse kam nevojë për të vënë atë null Terminator në fund. Pra, ne jemi duke shkuar për të shkruar në "ohai" dhe vënë The Terminator zero në në fund. Ne do të thonë se kjo është string s është e barabartë me këtë. Çfarë është s zero kllapa? s parantezë zero, Annie? STUDENT: O. JASON Hirschhorn: O, saktësisht. s parantezë një? s kllapa pesë? s kllapa pesë? STUDENT: nuk egziston. JASON Hirschhorn: nuk egziston. Saktësisht e drejtë. Best. Ndonjë pyetje në lidhje me të kuptuarit vargjet si vargje të karaktereve? OK, atëherë. Një program shumë për ju djema. Shkruaj një program që pyet përdoruesin për një varg pas printon nga secili karakter në një linjë të re. Pra, le të marrin tre minuta për të shkruar ky program, dhe pastaj ne do kod atë si nje grup. Më vjen keq. A keni nevojë të shikoni këtë? STUDENT: Jo JASON Hirschhorn: OK. Le të marrin një minutë më shumë për të Kodit, ky, ose të paktën të ketë filluar në të. Kështu që ju mund të mbani duke punuar, por unë jam duke shkuar të fillojnë të shkojnë nëpërmjet saj. Pra, si më parë, unë kam në ekran # Include cs50.h, # include stdio.h. int kryesore zbrazëti. Brenda formatimin e teksteve kaçurrel kryesor, unë kam Dy komentet, pseudokod. Njëra është të kërkoni për një varg nga përdoruesit. E dyta është të shtypura nga çdo karakter në një linjë të re. Pra Anna, ju mund të jepni pyesni për një varg nga përdorues? STUDENT: printf. JASON Hirschhorn: printf? STUDENT: Po. ( JASON Hirschhorn: ( STUDENT: "jepni një varg. JASON Hirschhorn: "japin mua një rr - oops - string. STUDENT: / n ") pikëpresje. JASON Hirschhorn: Fundi varg, kllapat mbyllura, pikëpresje. STUDENT: Po. Dhe pastaj linjë tjetër, string s = merrni string. JASON Hirschhorn: String s = merrni string. STUDENT: Po. Dhe pastaj () JASON Hirschhorn: () STUDENT: pikëpresje. JASON Hirschhorn: pikëpresje. Sporte. Kështu që unë jam duke shkuar për të marrë një varg dhe Unë jam duke shkuar për të shpëtuar atë në çfarë? Çfarë është e ndryshueshme quajtur që keni krijuar? STUDENT: String s. JASON Hirschhorn: ndryshueshme quhet s. Është string lloji. Saktësisht. Gjë tjetër që ne duam është të shtypura nga çdo karakter në një linjë të re. Kush mund të jepni atë kod? [Padëgjueshme]? Mund të ju japin atë për mua? STUDENT: Sigurisht. JASON Hirschhorn: Le të bëjmë atë. Dhe të vjen keq. Unë nuk doja të përsërisja atë që thoni sepse ju jeni duke marrë atë të drejtë, por unë duhet të përsëris atë mënyrë që kur ata kopjoj kësaj, ata mund të merrni të gjithë nga teksti në transkriptimit. Kështu që ju mund të mbajnë vetëm duke folur. Për fat të keq, unë kam për të thënë atë mbi ju. Unë jam i keq, por - STUDENT: Kjo është në rregull. Për int = 0 JASON Hirschhorn: Për int = 0 STUDENT: Unë më pak se - JASON Hirschhorn: pikëpresje. STUDENT: Para kësaj, mund të kemi vënë një ndryshueshme në mënyrë që ju të merrni gjatësinë int emrin? JASON Hirschhorn: Oh, ju nuk e bëni duan të vënë pikëpresje? OK. Pra, çfarë ju doni të bëni pasi zero? STUDENT: Unë dua që të merrni Gjatësia varg s dhe vendosur se për një ndryshore? JASON Hirschhorn: OK, kështu që si mund ta bëni këtë? STUDENT: Pra ju bëni gjatësinë int = JASON Hirschhorn: Int Gjatësia = STUDENTORE: S-T-R-L-E-N. JASON Hirschhorn: S-T-R-L-E-N - STUDENT: i S. Kllapave. JASON Hirschhorn: (s). STUDENT: Dhe atëherë unë mendoj se ju duhet të vënë një pikëpresje mes dy ints. JASON Hirschhorn: Një pikëpresje pas zeros? STUDENT: Po. Pastaj vendosni një pikëpresje pas kësaj, dhe ju them, unë më pak se gjatësi. I pak se gjatësi, e cila është e ndryshueshme. STUDENT: Dhe pastaj pikëpresje. JASON Hirschhorn: pikëpresje. STUDENT: i + +. JASON Hirschhorn: i + +. Ka loop tonë për të. OK, brenda për lak. STUDENT: Dhe pastaj të bëjë printf. JASON Hirschhorn: printf. STUDENT: Kllapa. JASON Hirschhorn: kllapa, citate. STUDENT: Kllapat, citon,% c / n. JASON Hirschhorn: c%, OK. STUDENT: / n. JASON Hirschhorn: / n. STUDENT: kuotat e mbyllura. JASON Hirschhorn: kuotat e mbyllura. STUDENT: Comma. JASON Hirschhorn: Comma. STUDENT: S. JASON Hirschhorn: S. STUDENT: Bracket i. JASON Hirschhorn: Bracket i. STUDENT: Dhe kllapat pastaj mbyllet. JASON Hirschhorn: kllapat e mbyllura. STUDENT: Dhe pastaj pikëpresje. JASON Hirschhorn: pikëpresje. Sporte. Pra, le të shpëtojë këtë. Bëni të spell. Oh boy. Unë kam marrë një çift të gabimeve. Error on line 11 Së pari, ai thotë se, Pritet shprehje, dhe ajo është duke i dhënë mua një gabim që të dytë int, nuk ka gabim. Ka disa gabim rreth atje. A e dini se çfarë gabimi është se? Kurt? STUDENT: Unë mendoj se kjo është menduar të të jetë një presje dhe jo një pikëpresje. JASON Hirschhorn: OK, një presje në vend të një pikëpresje. Pra, është se të gjithë ne kemi nevojë për të rregulluar? STUDENT: Jo JASON Hirschhorn: Çfarë tjetër nuk kemi nevojë për të rregulluar? STUDENT: Ne duhet të përfshijë string. JASON Hirschhorn: Përfshini string. Ku nuk kam nevojë që të përfshijë se? STUDENT: njëjtin vend që ju jeni përfshirë sende të tjera, të drejtën pas përfshijnë stdio.h. JASON Hirschhorn: Le të shohim nëse kjo shkon parë, sepse në përgjithësi, unë si për të rregulluar një gjë e parë, dhe pastaj të drejtuar ajo, dhe pastaj të shohim gabimet e kemi marrë. Pra, ne jemi duke shkuar për të pastruar terminalin me kontrollin n, le të bëjnë magji. Pra, një tjetër error on line 11. Pritej pikëpresje. Dhe unë jam ende duke u gabime në këtë linjë. Pra, ajo nuk ka dhënë mua një gabim duke thënë atë nuk e kuptojnë se çfarë është strlen, por ajo është dhënë mua gabime në këtë line, kështu që çfarë tjetër është e gabuar? Shënoje? Marcus. STUDENT: A keni për të hequr Deklarata e dytë int? JASON Hirschhorn: Hiq int dytë. Le të provoni këtë. Tani pastruar terminalin. Bëni të spell. Error. Implicite deklaruar bibliotekën Funksioni strlen. Deri tani ne nuk shohim se gabimi. Çfarë nuk kemi nevojë për të përfshijnë? STUDENT: string. JASON Hirschhorn: Përfshini string, Ne do të bëjmë # Include string në krye i ekran. Le të shpëtuar, të bëjnë magji. Hartuar tani. Pra, përsëri, gjërat që ne e nevojshme për të mos harroni linjë 12 në lak tonë për kur ne jemi të vendosur atë, i int = 0, gjatësia = strlen (s). Kjo është një strategji fantastike. Stili i kësaj është i madh, Dizajni i kësaj është i madh. Ne mund të shkojnë në ato arsyet më vonë, por në këtë mënyrë ju duhet vetëm për të thirrur strlen herë në vend të çdo të vetme Ora ju drejtuar përmes lak. Megjithatë, ju duhet të përdorni një presje atje dhe ju nuk keni nevojë int përsëri. Nëse ju jeni deklaruar si ato variablat së bashku, ju nuk kanë nevojë për int përsëri. Dhe pastaj, nëse ju jeni duke shkuar për të përdorur strlen, e cila është një tjetër bibliotekë funksion nuk përfshihen në stdio.h ose cs50.h, të bëjë Sigurohuni që ju të përfshijë string. Kurt? STUDENT: Pra, atëherë në qoftë se ju nuk keni nevojë për të thonë se çfarë lloji është gjatësia, bën që do të thotë se duhet të jetë një int? Ju nuk mund të ketë dy të ndryshme Llojet Ka? JASON Hirschhorn: Pra, ju mund të kanë dy lloje të ndryshme. Gjatësia është një int këtu, pse. Gjatësia është një int sepse kjo është presje dhe pastaj të njëjtën gjë. STUDENT: Pra, ajo supozon se ajo që po ndodh të jetë i njëjtë me të parin? JASON Hirschhorn: Pikërisht. Ne nuk jemi duke shkuar për të bërë këtë tani, por ju mund të përfshijë dy variablave për të të njëjtën linjë duke përdorur një lloj të të dhënave. Pra int x, y do të krijonte dy variablave. Pra int x, y, nëse bëjmë se, ajo i jep mua një ndryshore x dhe y të papërdorura për shkak ne nuk përdorim ato. Pra, para se të vënë zbrazëti është vetëm një Mashtrim dashuroj qoftë se ju nuk e përdorni diçka, ta përdorin atë. Por, siç e shihni, unë krijoj x dhe y në të njëjtin drejtim me një presje. Është krijuar dy integers të drejtë atje. Pra, po, plotësisht e mundur për të krijuar dy gjëra në të njëjtën linjë ndarë nga një presje. Le të shpëtoj nga ata, edhe pse. Pra, nuk ka magji. Thank you guys për kodim atë për ne. Le të bëjnë atë një herë më shumë, e drejtuar atë. Më jepni një varg. [Padëgjueshme], ju e bëri shumica e tij. Çfarë është string? STUDENT: Hello. JASON Hirschhorn: Hello. H-E-L-L-O, secili karakter në një linjë. Duket e madhe. Le të drejtuar atë përsëri. Gjithmonë shkuar për të kontrolluar për rastet qoshe. Çfarë është një rast i mirë për të kontrolluar qoshe? STUDENT: Një numër? JASON Hirschhorn: Një numër. Kështu që unë do të vënë në 1, dhe ajo printon nga 1. Kjo nuk është kërkuar për letra, kështu që kjo duket si numrat punë. Rast i mirë për të kontrolluar qoshe. Çfarë është një tjetër qoshe mirë rasti për të kontrolluar? STUDENT: Një string bosh. JASON Hirschhorn: Hm? STUDENT: Ashtu si një varg bosh. JASON Hirschhorn: string bosh. Pra, le të mos vënë në asgjë. Dhe çfarë merr shtypen jashtë? STUDENT: Asgjë. JASON Hirschhorn: Asgjë. Duket si ajo punon. Ju mund të provoni më shumë raste qoshe, por përgjithësi numrat, një të dhënave të ndryshme është madhe për të provoni, si dhe nuk është asgjë. Asgjë, zero, negative janë gjithmonë gjëra të mëdha për të përpiqen dhe të gjërave që ju duhet të test, gjërat sigurisht që ne do të testojë Kontrolloni për dhe 50 do të testojë për të. Ndonjë pyetje në lidhje spell.c? OK, le kokën mbrapa. Unë kam një program shumë për ju djema për të shkruar. Ajo që quhet students.c. Ky është një program që pyet përdoruesin për pesë emra, pastaj rastësisht zgjedh dhe printime nga një prej emrave. Ky program është një pak më shumë përfshirë se dy vitet e fundit kemi shkruar, kështu që pse nuk kemi marrë pesë minuta për të kod atë individualisht, dhe pastaj ne do të kodojnë atë si një grup. Ky program gjithashtu të përfshijë disa gjëra ju nuk mund të keni parë më parë, kështu që nëse ju keni një pyetje në lidhje me, se si bëjnë Unë bëj që, të ngrenë dorën tuaj. Unë do të vijnë mbi dhe ju pikë në drejtimin e duhur. Por ne gjithashtu jemi duke bërë atë, sepse kjo do të jetë një mënyrë e mirë për të futur disa tema që janë të ndërlikuar. Pra ajo punon, e drejtë? STUDENT: Po. JASON Hirschhorn: Kurdo që ju të kthehet në një Problemi i vendosur, ka shumë mënyra për të bërë ajo, por disa janë më të elegante se të tjerët. Le të zhyten in # Include cs50.h. # Include stdio.h. void int kryesore, formatimin e teksteve kaçurrel. Brenda formatimin e teksteve kaçurrel, Unë kam dy komente. I pari është, pyesni Përdoruesi për pesë emra. E dyta është, rastësisht zgjidhni dhe të shtypura nga një prej emrave. Pra, le të bëjë një të parë, pyesni përdoruesit për pesë emra. Kush i ka kërkuar përdoruesit për pesë emrat dhe mund të më tregoni se si ta bëni këtë? Vetëm dy njerëz e bëri pjesën e parë. Tre njerëz e bëri pjesën e parë. Katër, pesë. Tom, si do të bëni atë? STUDENT: Ju do të shpallë një varg dhe pastaj emri, kllapa pesë. JASON Hirschhorn: String emërojë pesë kllapa. Pra, çfarë është kjo linjë duke bërë, Emri string kllapa pesë? STUDENT: Ju do të deklarojë një koleksion të strings. JASON Hirschhorn: Kjo është një koleksion të strings. Sa vargjet janë duke shkuar të përshtatet në këtu? STUDENT: Pesë. JASON Hirschhorn: Pesë. Excellent. Ne jemi duke shkuar për të thirrur atë Emrat sepse ne jemi duke shkuar për të marrë ato të shumta. OK, e ardhshëm? STUDENT: Dhe pastaj ju kanë një për lak - JASON Hirschhorn: Për lak. STUDENT: - për = 0. JASON Hirschhorn: për (i int = 0. STUDENT: pikëpresje. JASON Hirschhorn: pikëpresje. STUDENT: Unë më pak se pesë. JASON Hirschhorn: Unë më pak se pesë. STUDENT: pikëpresje. JASON Hirschhorn: pikëpresje. STUDENT: i + +. JASON Hirschhorn: i + +. STUDENT: Dhe kllapat pastaj mbyllet. JASON Hirschhorn: kllapat mbyllura, dhe pastaj disa formatimin e teksteve kaçurrel. Brenda formatimin e teksteve kaçurrel? STUDENT: Dhe pastaj printf. JASON Hirschhorn: printf. STUDENT: kllapat e hapura, emri% d. JASON Hirschhorn: Na vjen keq? STUDENT: Emri. JASON Hirschhorn: Emri. STUDENT: Dhe pastaj hapësirë, dhe pastaj% d. JASON Hirschhorn: Emri, hapësira,% d. STUDENT: Dhe pastaj / n, dhe pastaj mbyllet. JASON Hirschhorn: Emri Pra, hapësirë, D /% n, kllapat mbyllura. STUDENT: Comma, i + 1. Unë jam i keq. Quote mbyllur, dhe pastaj presje, i +1. JASON Hirschhorn: Mbyllur , të japin kuotën presje, i +1. STUDENT: Po. Dhe pastaj linja e ardhshme - JASON Hirschhorn: i + 1. STUDENT: Po. Dhe pastaj rrëshqitje tjetër është emra i kllapa. JASON Hirschhorn: Vija Next është emra i kllapa. STUDENT: = merrni string. JASON Hirschhorn: Get = - Kapitali G-E-T - string. Oops, sorry. STUDENT: Open, kllapat mbyllura dhe pastaj - JASON Hirschhorn: Open, mbyllur Paren. STUDENT: pikëpresje. JASON Hirschhorn: pikëpresje. OK, kështu që ju nisja grup të vargjet, emrat, dhe pastaj kalojnë nëpër një për lak, dhe pesë herë më të shtypura nga disa të menjëhershëm të përdoruesit dhe pastaj dyqan pesë strings. A ka dikush të ketë ndonjë Përshtatjet në këtë? Tom, unë mendoj se të gjithë pajtohet me ty. Duket goxha e mirë. OK. Pse e bëre i +1, pse? STUDENT: Unë do të thotë, nuk kanë të jetë, por unë +1 në mënyrë që ajo është emri i një pesë të emrit. Përndryshe, ajo do të jetë emri zero të emërojë katër. JASON Hirschhorn: Pra, ju nuk kam 1 sepse përndryshe ai do të ketë shtypura nga zero nëpërmjet katër shkak kjo është se si kompjuterat mendoj, por njerëzit vërtetë nuk lexohet si kjo. Kjo është një tjetër gjë ju do të hasni. Ndonjëherë kur ju të shtypura nga diçka për përdoruesit, ju do të dëshironi të bëni atë një pak prettier, dhe duke bërë Unë +1 në këtë rast është një Mënyra për ta bërë atë prettier. Unë gjithashtu shoh pesë dyfishin emrin, string është pesë, i është më pak se pesë. Unë e di se ku ju mori pesë. Ju mori atë nga mua thënë ju pesë emra. Por nëse ne të kërkuar për të bërë një kod pak më të fuqishme, një gjë që ne mund të bëni është këtu, jashtë int, ne mund të bëjmë diçka si kjo, # Përcaktojnë, dhe ne mund të bëjmë emra 5. Pra, në thelb, kudo që unë shkruaj kapitalin N, kryeqyteti A, M kapital, kapitali E, Kapitali S, se string, ajo do të zëvendësojë që me 5 in kodin. Ose le të vetëm e quajti atë - ne do vetëm e quajti atë numër. Kështu që unë jam definimin e të gjitha shkronja kapitale NUMRI të jenë 5. Deri tani kudo që kam numrin 5, unë mund të zëvendësojë atë me gjithë numrin e shkronjave. Dhe tani, në qoftë se unë dua të ndryshojë numrin e emrave, të gjitha unë duhet të bëni është kjo linjë, linjë katër, ku kam # Përcaktojnë numrin 5, të ndryshojë që në 10, ose të ndryshojë që në 4. Kur kodi juaj merr të gjatë, ju nuk jeni duke shkuar për të kujtuar të gjitha vendet t'ju vënë sa emra që ju të kërkuar, dhe në mënyrë që ju të mos humbasë një, kjo është një mënyrë e mirë për të bërë atë, për të gjetur diçka deri të lartë dhe pastaj të përdorni vetëm se fraza kudo në të gjithë kodin tuaj. Marcus? STUDENT: A është e preferuar që stilistikisht se globalisht përcaktimin e një n konstante? JASON Hirschhorn: Pra, është se preferohet stilistikisht se globalisht përcaktimin e një konstante n? Pra, ju jeni duke thënë se ju mund të bëni, int numri = 5? STUDENT: A kanë bashkëtingëllore në C apo jo? JASON Hirschhorn: Ose const - të barabartë në të. Pra, ju jeni duke thënë se vetëm një ndryshore globale? STUDENT: Po. JASON Hirschhorn: Pra stilistikisht, nuk ka domosdoshmërisht një e drejtë përgjigjem, por të dyja ato janë më të mira se vetëm duke hedhur këta të rastit Numrat gjithë kodin tuaj. Ne i quajmë ato numra magjikë. Kur unë shoh në kodin tuaj, ose kur dikush është lexuar nëpërmjet saj, ata nuk duan vetëm këto numra të rastit që nuk ka kuptim. Edhe numri 26, i cili në përgjithësi është numri i shkronjave në alfabet, është më mirë për të përcaktuar alfabetin up krye dhe ruani numrin 26 në atë varg, qoftë se ka kuptim. Ose në një problem të caktuar, sesa - përsëri, ne nuk flasim për këtë në kohë, por në vend të vetëm duke hedhur në një 25 apo një 10 kudo, ju mund të ruani numrin 25 si të katërtën ose 10 si DIME, dhe që e bën më të lehtë për kushdo që e leximit nëpërmjet kodit tuaj për të kuptoj pse keni zgjedhur këtë numër. Dhe gjithashtu për ju, nëse ju ndonjëherë të dëshironi të përditësimin kodin tuaj, kjo e bën atë një pak më të fuqishme. Po? STUDENT: A është ky kod gjithashtu do të jenë në dispozicion për ne, pasi? JASON Hirschhorn: Të gjitha këto kode që kemi shkruar së bashku janë do të jetë emailed për ju djema dhe në dispozicion. Po. Pra, të kërkojë nga shfrytëzuesi për pesë emra. Rastësisht të zgjedhur dhe të shtypura një nga emrat. Kush e bëri këtë linjë? Kjo është vija trickiest këtu. Na vjen keq, Tom. Ju bëri një punë të vërtetë të mirë, por kjo është pak e komplikuar. Marcus, të shkojnë përpara. STUDENT: Well parë, ju do të jeni të duhet të përfshijë stdlib.h dhe time.h. JASON Hirschhorn: Pra, ju jeni duke thënë se në lartë, të përfshijë dy biblioteka më shumë. Ju doni mua për të përfshijnë S-T-D-L-I-B dot H, Biblioteka Standard, dhe çfarë ishte njëri-tjetrin? STUDENT: Time.h. JASON Hirschhorn: # include time.h. Pra, këto janë dy biblioteka më tepër. Unë supozoj tani ne jemi duke shkuar për të përdorur Funksionet që janë të përfshira në këto dy, cila është arsyeja pse ju nevojiten t'i përfshijë ata? STUDENT: Pra, atëherë, ju jeni parë do të doni të shkruani srand. JASON Hirschhorn: srand. STUDENT: (kohë (0) JASON Hirschhorn: Më vjen keq. Srand (kohë ( STUDENT: 0. JASON Hirschhorn: 0. STUDENTORE:)), pikëpresje. JASON Hirschhorn: Një tjetër Paren mbyllura? Pikëpresje. Unë jam duke shkuar të vetëm të zëvendësojë zero yt me null. Ajo do të bëni në lidhje me të njëjtën gjë, por në përgjithësi, ju do të shihni NULL, e cila ne do të flasim në lidhje me këtë Linja në një të dytë. STUDENT: Stylistically mirë? JASON Hirschhorn: Në përgjithësi, njerëzit NULL drejtë, por e njëjta gjë. STUDENT: Dhe atëherë emri i int. JASON Hirschhorn: Emri Int. STUDENT: = JASON Hirschhorn: = STUDENT: Rand. JASON Hirschhorn: Rand. STUDENT: () JASON Hirschhorn: () STUDENT: Numri Modulo. JASON Hirschhorn: Çfarë është modulo? Karakteri? Karakteri për qind? STUDENT: karakteri qind. NUMRI modulo që ju të përcaktuar deri të lartë. JASON Hirschhorn: NUMRI Modulo. STUDENT: Dhe pastaj pikëpresje. JASON Hirschhorn: pikëpresje. STUDENT: Dhe pastaj linja e re, printf. JASON Hirschhorn: printf. STUDENT: ( JASON Hirschhorn: ( STUDENT: " JASON Hirschhorn: " STUDENT:% s / n JASON Hirschhorn:% s / n STUDENT: " JASON Hirschhorn:% s / n " STUDENT: Comma, emrat hapësirë. JASON Hirschhorn: Space - STUDENT: Oh, unë mendoj, se çfarë e ne e quajmë atë këtu? JASON Hirschhorn: Ne e quajti atë emra. STUDENT: parantezë Open, emri. JASON Hirschhorn: Open, kllapa emri. STUDENT: Closed kllapa. JASON Hirschhorn: Closed kllapa. STUDENT:) JASON Hirschhorn:) STUDENT: pikëpresje. JASON Hirschhorn: pikëpresje. OK, le të shpëtojë. Le ta bëjmë këtë kod. Studentët. Le të drejtuar këtë kod. Studentët. Jo. / Studenti. . / Studentët. Emri njëri. Ne do të themi Davidin. Emri dy, RJ. Emri i tre, Rob. Emri katër, Lucas. Emri pesë, Joseph. Dhe pastaj ajo printon Jozefin jashtë përsëri. Pra më lejoni të drejtuar këtë përsëri. Më lejoni të bëj të njëjtët emra. David, RJ, Rob, Lucas, Joseph. Dhe kjo më dha Davidit këtë kohë. Kështu që unë e bëri të njëjtën gjë, por ajo i dha mua një gjë të ndryshme, dhe kjo është sepse, natyrisht, ne jemi duke kërkuar për një emër të rastit. Kështu që unë mendoj se, bazuar jashtë e mua përçart nëpër dhomë, se shumica e njerëzve ndoshta mori të drejtën e parë të pjesshme, ngritjen atë rrjet dhe pastaj marrjen e të gjithë emrat. Unë jam duke folur në lidhje me linjat e 10 me anë të 16. Por, linja 18 deri 21 janë ndoshta disa gjëra që ju nuk e keni parë më parë, kështu që le të shkojnë nëpër ato. Kjo linjë, NULL srand koha është në thelb - Na vjen keq, le të kaloni poshtë një linjë, rand (). Kjo ju jep një numër të rastit, një numër i plotë të rastit. Dhe në qoftë se ju goditi rand njeri, i cili një shumë prej jush bëri - M-A-N hapësirë ​​R-A-N-D - ne terminalin si kjo, M-A-N hapësirë ​​R-A-N-D, goditur Futni. Ju do të vijnë deri në manual dhe do të jetë në gjendje për të lexuar se rand rezultatet komandës num bytes pseudo të rastit pas mbjellëse numër të rastit gjenerator një herë. Pra, kjo është një përshkrim. Kjo është ajo që e bën Rand, i jep ju një numër të rastit kur ju telefononi atë funksion. Për fat të keq, kjo nuk është me të vërtetë të rastit sepse në qoftë se ju vetëm thirrje të rastit pa marrë kjo pjesë e farës, disa duke filluar nga pika, ajo gjithmonë do të zgjedhin e njëjtë dhe ai përdor një formulë për të përcaktuar një tjetër. Pra, nëse ju telefononi rand, ai vetëm do të ju jap të njëjtën gjë. Ajo do të jetë shumë e parashikueshme. Ajo në fakt nuk do të jetë e rastit. Pra, ajo që ne duhet të bëjmë, për të Marcus Udhëzime Për mua, ishin rand farë me diçka tjetër, e cila është ajo që Funksioni srand bën. Ajo fara Rand me diçka pak më shumë random se të njëjtën gjë, dhe ai është mbjellëse atë me NULL kohore, e cila është, vetëm nga Konventa, e tanishme Koha në sekonda. Pra, ju jeni duke supozuar se të gjithë nuk është e duke shkuar për të drejtuar në kodin e saktë dytë njëjtë, kështu që kjo është një bast i sigurt se NULL koha do të jetë e ndryshme çdo herë ky kod është drejtuar. Bast i sigurt se në këtë mënyrë, srand will rand farë me diçka të ndryshme çdo herë të vetme. Pra, duke konventë, kur ne duam të bëjë një Numri i rastësishëm, kemi shkruar këtë linjë, NULL srand kohë, për të na dhënë një shumë më të farë shumë të rastit, dhe pastaj ne të drejtuar Rand, e cila na jep një numër të rastit. Po? STUDENT: Mund të ju them se çfarë ju do të thotë nga fara? JASON Hirschhorn: Seed si në - kështu Rand është duke shkuar për të marr disa numrin dhe ajo do të përdorë disa Formula për të arritur atje. Pra, kjo do të fillojë me diçka dhe pastaj kthyer atë në diçka të bazuar off e kësaj formule. Nëse ju gjithmonë t'i jepte të njëjtën gjë, ajo gjithmonë do të kthejnë atë në e njëjta gjë. Kështu që gjëja e parë që ju jap ajo është farë. Pra, ju doni të jepni diçka të ndryshme për të filluar me, dhe kështu ajo do të kthejnë atë në diçka të ndryshme. Dhe pastaj në fund, linjë 20, kjo quhet% modulo, dhe që është konfuz. Kjo është diçka që është pak ndryshme këtu që ju të vërtetë nuk kanë në matematikë jetës reale. Por në thelb, kur ju keni marrë një gjigant Numri dhe ti ndani në C, çfarë ndodh me pjesën e mbetur? STUDENT: Ajo merr cunguar. JASON Hirschhorn: Ajo merr cunguar. Pra, 20 pjestuar me 3 është ajo? Çfarë do që të kthehet në ju, ndarë nga 20 3. Na vjen keq, 10 pjestuar me 3. Çfarë do që të kthehet tek ju? STUDENT: [padëgjueshme]. JASON Hirschhorn: 10 i ndarë vetëm nga 3 Kthimet 3, pjesa tjetër jo 3 1. Pra, çfarë modulo 10 3 kthimet është vetëm pjesa, 1. Pra, nëse ju kërkuar të dini se çfarë ndarë 10 nga 3 në të vërtetë ishte, ju do të 10 bëni ndarë nga 3, ju do të merrni 3 tuaj, dhe pastaj ju do të bëni 10 modulo 3, dhe ju do të merrni një 1. Pra, ju do të kuptojë se 10 nda me 3 eshte 3, Pjesa 1. Dhe në këtë linjë, mund të jetë e rand çdo numër i plotë, në thelb. Pra modulo është duke thënë, ndajnë atë nga Numri, i cili eshte ne kete rast 5. Dhe nëse ndonjëherë ju ndajnë nga një numër, integer gjithmonë duhet të jetë më pak se ky numër. Pra, nëse ju jeni duke e ndarë nga një numër 5, Pjesa tjetër është gjithmonë do të jetë zero nëpërmjet katër. Kjo është vetëm sa matematikë punon jashtë. Pra, një numër i madh moduloed nga një më të vogël numër gjithmonë do të kthehen Pjesa e mbetur dhe gjithmonë do të kthehen disa numër që është më pak se numri që ju ndarë nga. A ka dikush ndonjë pyetje në lidhje me modulo, sepse ajo do të vijë në shumë, shumë i dobishëm, kështu që unë dua të bëni të sigurtë gjithkush e kupton atë? Best. Dhe ne pamë se ky program ka punuar. OK, të lëvizin. Kështu që herën tjetër, ne jemi duke shkuar për të shkuar në funksionet, dhe ne jemi duke shkuar për të shkuar nëpër pjesën tjetër të këtij stuff goxha shpejt, sepse unë dua të shkoj në argumente command line. Pra, funksionet janë në thelb, si ju kam parë, kuti e zezë. Ata marrin gjërat në parametrat e quajtur, ata bëjnë diçka për ta, ose ndryshojë apo t'i krijuar disa efekte anësore, dhe më në fund, ata pështyjnë nga diçka, e cila është vlera e kthimit. Dikush mund të më jepni një arsye të arsyeja pse ne do të përdorim funksione? Çdokush? Një arsye se pse ne do të përdorim funksione? Çdokush? Unë pashë dy duar. Çfarë është një arsye e mirë? Marcus? STUDENT: Nëse ju keni për të thirrur njëjtë copë e kodit herë të shumta. JASON Hirschhorn: OK, nëse keni nevojë për për të thirrur copë e njëjtë të kodojnë herë të shumta. Jeff, a keni një arsye të ndryshme? STUDENT: Vetëm kështu që ju mund të kodojnë më pak. JASON Hirschhorn: Ju mund të kodojnë më pak. Drejtë. Nëse ju doni të bëni diçka shumë - në kodin e mëparshëm, unë mund të ketë shkruar merrni vargun pesë herë, por një për lak e bën atë të duket nicer dhe ju duhet të shkruani kodin më pak. Funksionet janë një ide të ngjashme. Nëse unë dua të bëjë të njëjtën gjë shumë, lëvizin atë në një funksion dhe thirrje që funksionojë çdo kohë. Kjo do ta bëjë këtë gjë për ju. Kjo është një arsye e madhe për t'u përdorur funksionet. Pra Anatomia e një funksioni. Një funksion në përgjithësi do të duket si ky. Ajo do të fillojë me llojin e kthimit, atëherë ju do të merrni emrin. Ajo do të marrë argumentet, përndryshe njohur si parametrat, dhe brenda ato formatimin e teksteve kaçurrel, ju do të shkruani kodin tuaj. Ne kemi parë një funksion shumë. Kjo është kryesore. Këtu është kryesor mbivendosur mbi anatomi që kam pasur më parë. Çfarë int drejtë këtu ditur? Çfarë do të thotë int? Kur unë shkruaj int kryesor (i pavlefshëm). STUDENT: Kthimi lloji? JASON Hirschhorn: Na vjen keq? STUDENT: Lloji kthimit. JASON Hirschhorn: INT kthehen tipin, saktësisht e drejtë. Main kthen një int. Çfarë është kryesor? STUDENT: Emri Funksioni. JASON Hirschhorn: Main është emri i funksionit. Saktësisht e drejtë. Dhe i pavlefshëm? Çka është e pavlefshme brenda kllapa? STUDENT: Ajo nuk ka marrë çdo vlerë të jashtëm. JASON Hirschhorn: void Pra, - drejtë. Brenda kllapa, ne kemi vënë Parametrat apo argumentet e Funksioni i merr, çfarë shkon brenda kutisë zi. Kur ju shkruani zbrazëti, ju jeni duke thënë kjo merr asgjë in Pra int kryesore void nënkupton kryesore të duke mos marrë asgjë in Brenda formatimin e teksteve kaçurrel, ne kemi disa kod, dhe pastaj të shohim në fund kthehen zero. Çfarë do të thotë kthimi zero? E pra, kemi biseduar në lidhje me llojin e kthimit. Kryesore ka nevojë për t'u kthyer një int. Kjo është ajo që e bën këtë linjë. Ajo kthehet një int, zero. Sigurisht, ne nuk kemi parë se një shumë sepse në programimin e të bëjmë me makinat ne bëjmë dhe hartuesit ne përdorim në ditët e sotme, ju nuk kanë nevojë për atë linjë. Kryesor është i veçantë mjaftueshme që ajo e di kur të keni arritur fundin e kryesor, vetëm kthehen zero nëse gjithçka shkoi mirë. Në fakt, nëse diçka nuk shkon mirë, kryesore do të shpesh kthehen një tjetër Numri i nënkuptuar se diçka shkoi keq me programin tuaj. Pra, në përgjithësi, kur ju shikoni kodin, ju mos shkruani kthimin zero, por është e mirë të dini se kjo po ndodh prapa Skenat sepse sa herë që ju shkruani një lloj tjetër të funksionit, ju do të duhet për të përfshijnë një linjë e kthimit. Nëse ju jeni duke thënë se unë jam duke shkuar për kthehet një int, ju duhet të shkruani kthehen diçka. Nëse ju thoni pavlefshme deri këtu në , fillimi i pavlefshëm i pavlefshëm kryesor, për shembull, atëherë kjo nuk është kthyer çdo gjë - pavlefshme të thotë asgjë - kështu që ju nuk keni nevojë për këtë linjë kthimit. Por ndonjëherë ju shkruani diçka që nuk është pavlefshme për llojin e kthimit, ju keni nevojë për një linjë që thotë kthimin dhe ju nevojë për të vënë diçka atje që përputhet me tipin. Ndonjë pyetje në lidhje me këtë? Sweet. Fushëveprimi. Kjo është diçka që ne kemi prekur më si edhe. Çdo ndryshueshme, siç e dimë, ka një Shtrirja e sigurt, dhe kjo është në thelb flasim rreth ku ndryshueshme mund ose nuk mund të referohet. Dhe unë doja të them se çfarë ndodh në formatimin e teksteve kaçurrel qëndron brenda formatimin e teksteve kaçurrel. Kështu për shembull, nëse ne shikojmë në këtë kod, ne jemi përcaktimin e një ndryshore globale jashtë kryesor, int a, deri këtu në krye. Ne jemi duke bërë thirrje tjetër int brenda një kryesor. Ne kemi disa formatimin e teksteve kaçurrel më shumë, dhe ne jemi duke bërë thirrje tjetër INT. Ne kemi një tre-së në kod. Këto nuk janë e njëjta gjë. Unë kam krijuar tre variablave të dallueshme. Pastaj brenda këtyre kacurrela brendshme Formatimin e teksteve, unë them një = 4. Të cilat një është se duke folur rreth, parë një, e dyta, apo një e treta? STUDENT: një e treta. JASON Hirschhorn: Është folur rreth një të tretën. Të gjithë ata që një është në fakt mund të jetë biseduar rreth në këtë të veçantë e shkallës, sepse shtrirja e tyre të gjitha shkon në këto formatimin e teksteve kaçurrel fshehta. Megjithatë, kur ju telefononi gjëra të njëjta emri, ka diçka të quajtur fshehur. Kështu që ju vetëm merren me ose fix ose të përdorin variabël më i fundit, ose një të afërt për ju. Kështu që këtu brenda, kjo është më afër një e treta me atë të linjës, a = 4, kështu që ndikon në një të tretën. Dhe vija e fundit, a = 2, i cili eshte nje ajo flet rreth,, dyte i parë, ose një të tretë? STUDENT: dytë. JASON Hirschhorn: Është folur rreth një të dytë. Sigurisht, një i tretë është më afër ajo në kod, por një e treta nuk ekziston jashtë ato formatimin e teksteve kaçurrel. Pasi që ju të merrni për të mbyllur atë kaçurrel Braçe, kjo është si ajo e shkuar, në thelb. Pra dy vetëm ju kanë lënë janë ato dy të parët, dhe natyrisht, tani është e afërt tek një të dytë. Pra, kjo është një gjë e mirë për të kujtojmë në lidhje me fushëveprimin. Për shembull, unë jam i sigurt që ju keni hasur kjo në një të bëni ndërsa lak. Nëse ju nisja brenda ndryshueshme bëni ndërsa lak dhe pastaj ju të përpiqen për të hyni në atë jashtë, ju ndoshta mori disa vërejtje si, kjo ndryshore nuk ekziston. Kjo është për shkak të idesë fushëveprimi, se gjërat ekzistojnë vetëm brenda këtyre formatimin e teksteve kaçurrel. Formatimin e teksteve kaçurrel janë si një përqafim gjigand që ju jeni i dhënë të kodit tuaj, është një tjetër Mënyra të mendoni për atë. Pra, kjo është një tjetër funksion, diçka për ju djema të kodit, hellofunction.c. Ne jemi duke shkuar për të kaloni se tani për tani, por kjo është diçka që unë ju inkurajoj që të praktikuar në tuaj. Shkruaj një program në të cilin thirrjet kryesore një tjetër funksion që printon nga një përshëndetje për përdoruesit. Kjo është në thelb duke marrë botë Hello dhe të abstraguar se printf në një tjetër funksion. Por ne nuk jemi duke shkuar për të bërë këtë të drejtë tani sepse ne nuk kemi kohë sa më shumë la si unë do të të pëlqente. Pra deklaratë funksion. Ne kemi parë këtë para si. Nëse ju doni të shkruani një tjetër funksion, ju duhet të le të dinë dhe kompjuteri kryesor e di se ajo ekziston. Pra, çfarë bëjmë ne është më lart kryesor, ne shkruani tipi kthimi, Emri, dhe parametrat, dhe pastaj poshtë më poshtë kryesor, poshtë këtu, ne fakt kopjonin atë linjë dhe pastaj shkruani kodin aktual. Pra, në këtë mënyrë, në qoftë se ju thirrni funksionin në kryesore në krye, kryesore e di se Përshëndetje ekziston, për shembull, në qoftë se unë ishin për të thirrur hello, dhe pastaj ajo duket të Zbatimi poshtë. Çfarë ndodh në qoftë se unë nuk e përfshijnë këtë vargoj krye, përshëndetje pavlefshëm (i pavlefshëm)? Nëse unë nuk e përfshijnë këtë linjë dhe thirrjet kryesore hello, unë jam do të merrni një gabim. Unë jam duke shkuar për të marrë një gabim sepse përpiluesi nuk e di se kjo gjë ekziston. Kjo është e ngjashme se pse ne nuk përfshijnë # cs50.h. Çfarë është duke bërë në thelb cs50.h është vënë marrë string deri atje. Është vënë merrni int deri atje. Është vënë të gjithë atyre funksionit prototipa deri para kryesore në mënyrë që kur ju telefononi ata në kryesore, kryesore e di se këto gjëra ekzistojnë. Kjo është ajo që ata bëjnë. Fotografi h. Dhe kështu që nëse ju jeni duke shkuar për të bërë tuaj funksion, ju keni marrë të bëni të sigurtë ju vënë atë prototip deri atje. Ndonjë pyetje në lidhje me këtë deri më tani? Argumentet vija e komandës. Kjo është ajo që ne jemi duke shkuar për të përfunduar on, dhe pastaj të shpresojmë se ne do shtrydh në disa pset. Unë nuk e di nëse ne do të jetë në gjendje të shtrydh se për shkak të kohës, por me ju djema të cilët janë këtu, dhe në qoftë se ju djema dua të them, pasi për një grimë, ne mund të shkojnë mbi atë jashtë. Por ne jemi duke shkuar për të përfunduar me argumente command line për 15 minutat e fundit. Ne zgjuar, Michael? Ju jeni zgjuar? Mirë. Unë nuk e di nëse ju fle me sytë tuaj të mbyllura. Ajo do të jetë i ndërlikuar. Argumentet vija e komandës. Ata janë një mënyrë për të kaluar informacionin në një program. Përfundimisht, ne do të hasni tjerët. Por në thelb, ne jemi duke shkuar për të ndaluar shkrim int kryesor (i pavlefshëm) në qoftë se ne duam të marrë disa argumente command line. Ne jemi duke shkuar për të shkruar këtë gjë quhet kryesore int (int argc, string argv, kllapa. Kjo është konfuze. Kjo është një shumë e letrave që nuk janë në njerëzore anglisht, kështu që ne jemi duke shkuar për shpaketoj ato tani. Argc qëndron për numërimin e argumentit - dhe përsëri, të gjitha këto do të jetë në dispozicion online - dhe se është numri i argumenteve. Argv qëndron për vektorin e argumentit, dhe ata janë argumentet vetë. Kjo është një koleksion të strings. Ne kemi parë një koleksion të vërtetë vargjet e para sot. Ne krijuam një në të fundit PROGRAMI ne koduar. Kështu që këtu është një shembull. Unë shkruaj. / Ohai CS50 seksion on line command tim. Argc në këtë rast është e barabartë me 3. Argv kllapa 0 është ohai, argv kllapa 1 është CS50, argv parantezë 2 është seksion. Përsëri, argc është numri i argumenteve, dhe për të ju udhëtim deri pak bit, ne gjithmonë numërimin emrin e funksion si argumenti pare. Pra, në këtë rast, janë tre Argumentet, emri i funksionit dhe pastaj ata të dy që unë typed in Tjetra, ne jemi duke shkuar për të shpëtuar ata Argumentet veten në argv. Dhe përsëri, ashtu siç e pamë më parë, ne e bëmë kjo në programin e fundit kemi koduar. Ju mund të lëvizin nëpër rrjet të argv dhe për të marrë ato vargjet. Kjo është në thelb ajo që ne e bëmë në fundi i programit tonë të fundit. Ne kemi zgjedhur një emër të rastit dhe më pas shkoi në Emrat çfarëdo kllapa dhe të shtypura jashtë vargun e vendosur atje. Në krye të vetëm në një grup, sepse vetë vargjet janë të vargjeve, si biseduar rreth, ju mund të keni vargjeve prej vargjeve, e cila eshte argv thelb ajo që është. Një mënyrë që ju mund të mendoni për kjo është e rreshtave dhe kolonave. Unë mund të tërheqë atë të drejtë tani. Pra argv - që nuk është fshirë. Le të tërheqë nën ohai. Pra, nëse unë shkroi në, ohai seksionin CS50, Unë jam duke shkuar për të shkurtoj Seksioni për këtë shembull. Por në thelb, im multi-dimensionale array, ohai CS50, ne jemi duke shkuar për të bërë sektin. Kështu që këtu, unë mund të hyni - në qoftë se unë të jap vetëm argv Një numër - kjo është e gabuar. Çfarë është e gabuar në këtë diagram? STUDENT: Filloni në zero. JASON Hirschhorn: ajo duhet të fillojë me zero. Unë ndoshta duhet gjithashtu të qarkulloj atë, por që unë kam tërhequr tashmë atë në, unë jam duke shkuar për të lënë atë në atje tani për tani. Por, ajo fillon në zero. Kjo është e drejtë. Unë jam i keq në qoftë se kjo është e vogël. Mund të ju djema lloj të shihni? Pra, nëse unë bëj argv 0, unë do të marrë të gjitha ohai. Nëse unë bëj argv 1, unë do të merrni të gjithë CS50. Nëse unë bëj argv 2, unë do të merrni të gjitha të sektit. Por tash, siç thamë, vargjet janë të vargjeve vetë. Pra, çfarë mund të bëj është që unë mund të trajtojë këtë si një grup multi-dimensionale, dhe unë mund të bëjë diçka përgjatë vijave të argv 0, 0, e cila jep mua vetëm Karakteri 0. Argv 0, 1, e cila i jep mua vetëm h. Argv 1, 3, e cila jep mua vetëm kjo 0 këtu poshtë në CS50. Pra, për shkak vargjet vetë janë të vargjeve, ne jemi duke që në një tjetër rrjet. Ne tani e kemi grup të vargjeve, dhe ne mundeni indeksi në grup tonë të parë dhe atëherë indeksi në grup tonë të dytë. Dhe si ju do të presin, ne bëjmë që nga vetëm vënë ato dy - bëjmë ne kllapa katrore vetëm të drejtë tjetër për njëri-tjetrin. Pra, në këtë shembull, argv 1 është CS50 dhe argv 1, 2, si ne tha, është vetëm 5. A ka dikush ndonjë pyetje në lidhje me multi-dimensionale vargjeve? Ju djema janë duke bërë awesome. Sweet. Pra, ne kemi një program të drejtë këtu, dhe kjo është gjëja e fundit që ne jemi do të bëni tani. Kështu që unë dua që ju të shkruani një program që merr emrin e plotë të një përdoruesi, dhe vetëm dy dy argumente command line, dhe më në fund, shtypura nga një përshëndetje për të Përdorues që përfshin emrin e tyre të parë. Pra, pse nuk ju merrni tre ose katër minuta për të bërë këtë, dhe pastaj ne do të shkojnë mbi atë si nje grup, dhe atëherë ne do të përfundojë? Dhe përsëri, këtu, kur themi të marrë një Emri i plotë e anëtarit sipas përshkrimit e këtij problemi, ajo duhet të jetë komanda Argumentet e linjës, jo duke përdorur të marrë string. Yeah, Marcus? STUDENT: Pra, kur ju thonë se dy të komandës Argumentet e linjës, është se përveç . / drejtuar, ose - JASON Hirschhorn: Pyetje e mirë. Bëni, duke përfshirë. / Arrati, tre argumente command line. Ose duke përfshirë. / Personalizuar, në Në këtë rast, sepse kjo është Emri i këtij file. Pra argc do të jetë tre. Por, unë dua vetëm dy argumente dhënë për programin. Unë duhet të specifikojë se. Unë do të bëjë që të ndryshojë para se të postoni këto dhe t'i dërgonte për ju djema. STUDENT: Çfarë ndodh nëse ju kanë një emër e Mesme? JASON Hirschhorn: Nëse ju keni një qendër emri, ju jeni nga fat. Unë jam i keq. Ose në qoftë se ju shkoni vetëm nga Shakira, edhe ju jeni nga fat. Po? STUDENT: Pra, kur njerëzit nuk kanë cs50.h, ata përcaktojnë argv char si yll argv? Apo është ajo ende quhet string argv? JASON Hirschhorn: Po. Pra string, përsëri, ne maskë mbi çfarë saktësisht po ndodh atje. Kjo do të jetë unpacked ndoshta të mërkurën, por së shpejti. Është si rrota trajnimit. Sepse në thelb, kjo është e njëjta gjë. Pra, le të marrë një minutë për programin këtë, dhe pastaj ne do të shkojë mbi ajo si nje grup, dhe pastaj siç thashë, të përfundojë deri. Dhe unë mendoj se ata janë ende karamele ekstra, kështu që ju djema duhet të shpresojmë se të marrë se, ose ju lutemi të marrë atë. Na vjen keq në qoftë se ju jeni ende me shkrim, por unë dua të zhyten në diskutim dhe ne mund të përfundojë atë së bashku. Kështu që unë kam shkruar në të, # include cs50.h, # include stdio.h. int main (void), kaçurrel mbajtëse, kaçurrel Braçe, brenda tre linjat e pseudokod, të marrë emrin e plotë të një përdoruesi, dy dhe vetëm dy command line argumente, të shtypura nga një përshëndetje për të Përdorues që përfshin emrin e tyre të parë. Pra, një të parë, të marrë Emri i plotë i një përdorues. Kush mund të më ndihmojë të marrë Emri i plotë i një përdorues? Si ta bëj atë pjesë? A ju djema të bëjë atë pjesë të parë? Merr emrin e plotë të një përdoruesi. E pra, për se një linjë komande argumenti, çfarë duhet të shkruaj? Çfarë duhet të ndryshojë në lidhje me Deklarata ime funksion? STUDENT: Ju nuk doni që ajo të jetë e pavlefshme anymore. JASON Hirschhorn: Pikërisht. Unë nuk dua që ajo të jetë e pavlefshme. Çfarë unë dua që ajo të jetë? STUDENT: argc Int. JASON Hirschhorn: Int argc. STUDENT: argv String. JASON Hirschhorn: String argv. STUDENT:, Bracket kllapa. JASON Hirschhorn: Bracket, kllapa. Kjo është saktësisht e drejtë, dhe kjo është në fakt si unë jam duke shkuar për të marrë Emri i plotë i një përdorues. Ata janë duke shkuar për ta vënë atë në atje. Kështu që njëri është bërë. Pra, tani unë dua dy dhe vetëm dy argumente command line. Kështu Noeu, çfarë është një mënyrë unë mund të kontrolloni numrin e komandës Argumentet e linjës kam? STUDENT: në qoftë se ju bëni një deklaratë. JASON Hirschhorn: Nëse Deklarata, saktësisht. Çfarë dua unë si kusht? STUDENT: Nëse argc madh se 3. JASON Hirschhorn: Nëse argc është më i madh se 3. Nëse argc madh se 3, çfarë të bëj? STUDENT: Kthimi 1. JASON Hirschhorn: Kthehu 1. Do të sigurojë që unë kam dy dhe vetëm dy? STUDENT: Jo Nëse argc është më i madh se 3 dhe më pak se 2. JASON Hirschhorn: Nëse argc është më e madhe se 3 dhe argc është më pak se 2. Çfarë është një mënyrë unë mund të shkruaj këtë në vetëm një linjë, ose pa përdorur që dhe Boolean operator? STUDENT: Kjo nuk është e barabartë me 2. JASON Hirschhorn: Nëse argc nuk është e barabartë me 2. Saktësisht. Pra, nëse argc nuk është e barabartë me 2, që do të më jepni këtë program, personalizuar, kur kam drejtuar atë, dhe që do të më jepni sa argumente command line? Sa shumë unë do të kontrolloni për të? Më vjen keq. Më lejoni të riformuloj se. Nëse argc = 2, sa shumë gjëra bëri përdoruesit shkruani në linjë? STUDENT: One. JASON Hirschhorn: Vetëm një. Pra, para se, ju keni qenë të drejtë, Noah. Çfarë në të vërtetë nevojë për të vënë atje? STUDENT: Kjo është e barabartë me 3. JASON Hirschhorn: Argc nuk ka 3 barabartë. Unë dua të barabartë 3 sepse unë dua personalizuar plus dy të tjera. Pra, nëse nuk argc 3 të barabartë, kthehen 1. Pse ju thoni kthehet 1? STUDENT: Për shkak se do të thotë se është e gabuar. JASON Hirschhorn: Kjo do të thotë se është e gabuar, dhe atë që do të bëni? STUDENT: Re-nxisë përdoruesit. JASON Hirschhorn: Ajo do të lë Programi, në mënyrë që ajo do të ketë për të kandiduar përsëri, por ne nuk kemi asgjë këtu për të kërkuar për ta përsëri. Unë nuk kërkoj për këtë. Pra, kjo është saktësisht e drejtë. Kthehu 1 shpërblej vetëm programin. Great. Dhe të shtypura nga një përshëndetje për përdoruesit që përfshin emrin e tyre të parë. Si mund të bëj se? Anna? STUDENT: printf. JASON Hirschhorn: printf. STUDENT: (" JASON Hirschhorn: ( STUDENT: "hello JASON Hirschhorn: "hello STUDENT:% s JASON Hirschhorn:% s STUDENT: / n JASON Hirschhorn: / n STUDENT: ", JASON Hirschhorn: ", STUDENT: Argv JASON Hirschhorn: Na vjen keq? STUDENT: Argv JASON Hirschhorn: Argv STUDENT: kllapa katrore 1. JASON Hirschhorn: kllapa? STUDENT: 1. JASON Hirschhorn: 1. STUDENT: Dhe) pikëpresje. JASON Hirschhorn:) pikëpresje. Le të drejtuar këtë. Bëni personalizuar. . / Personalizuar. Kjo lë vetëm. Pse e bëri atë të lë? STUDENT: Ti nuk e vënë ndonjë argumente. JASON Hirschhorn: Unë nuk e bëri vënë ndonjë argumente in Duket e madhe. Ju djema gozhdohem atë. Pra, përsëri, ju shkoi në argv dhe jush kontrollohen në argc fillim. Ata janë dy të rëndësishme gjëra për të kujtuar. Pra, në dy minuta të fundit tona para se të largohet, ne nuk do të merrni për pset dy, por si i tha, në qoftë se ju doni të qëndroni pas për 10 minuta, unë do ai lumtur për të shkuar gjatë me ju djema logjikës për këto grupe problem. Ne patëm një shumë për të mbuluar sot kështu që unë nuk e kam marrë për ta. Në përgjithësi, unë doja të përfshijnë që në fund. Pra, nëse ju doni që të rrinë përreth, rrinë për rreth 10 minuta. Ne do të bëjmë që. Pastaj, siç e përmenda në fillim, pset dhe një zero, ne do të merrni atë reagime të kthehem te ju sa më shpejt të jetë e mundur. Qëllimi është për të marrë një reagime pset, pjesa komente, para dy pset është për shkak. Pra, nëse keni bërë disa gabime ose stilistikisht, gjërat mund të jetë më mirë, ju do të keni këtë informacion në mënyrë që ju nuk do të bëni të njëjtat gjëra në pset dy. Dhe pastaj në të ardhmen, ju do të merrni të gjithë i pset përshtypjet tuaja dhe komentet përsëri para një tjetër është për shkak. Së fundi, në qoftë se unë mund të vënë në një tjetër plug për reagime. Ky është seksioni i juaj i parë. Kjo ishte pjesa ime e parë mësimdhënies këtë vit. Shkoni atje. Shkruani stuff, të mira dhe të këqija, dhe unë do të përdorin atë për të bërë Pjesa më mirë herën tjetër. Dhe e fundit, përsëri, në qoftë se keni nevojë për çdo gjë, më lejoni të dinë. Unë jam më shumë se i lumtur për të ndihmuar ju djema. Nëse ju vetëm doni karamele, unë do të ketë karamele shtesë. Unë jam i lumtur për të sjellë atë për ju. Kjo do të jetë një kurs mahnitshme. Kjo është një nga, në qoftë se nuk e preferuara ime Sigurisht, unë kam marrë në jetën time të tërë, dhe unë shpresoj se do të jetë që mrekullueshme për ju. Kështu që unë dua të bëjë gjithçka në fuqinë time për të bërë atë që awesome për ju. Unë jam duke shkuar për të dërguar një email nëse ju jeni në seksionin tim apo Noeut, dhe do të përpiqen dhe të planifikojë me secilin prej ju djema një kohë për të kontrolluar në mbi Nja dy javëve të ardhshme kështu që unë mund të merrni një kuptim të asaj sfond CS juaj është, dhe ajo gjithashtu do të ndihmojë mua qepur këto seksione të përshtaten më mirë nevojave tuaja. Pra, kjo është ajo që kam rreshtuar. Përsëri, unë do të shihemi jashtë në qoftë se ju duan të jenë atje. Kjo ishte dy javë seksion. Faleminderit djema kaq shumë.