[Muzika] ANDI Peng: Kjo është CS50, dhe mirëpritur të javës së dytë të seksionit. Kjo është në fakt ndërsa javë dy nga class-- tona aktualisht, javën e parë që ne kemi pasur seksion. Shfaqje e duarve, sa prej jush të gjithë erdhi në seksionin super javën e kaluar? OK, kjo është në rregull. Eshte ne rregull. Sa prej jush shikuar Pjesa super javën e kaluar? NE RREGULL. Dhe ju djema bëri gjobë në problemin vendosur një? Kështu që unë jam duke shkuar për të marrë atë që ne kemi një bandë e fëmijëve me të vërtetë inteligjente në këtë klasë dhe gjërat do të jetë mirë. NE RREGULL. Pra first-- Së pari, ne jemi vetëm do të shkurtimisht shkoni mbi rendin e ditës për sot. Ne do të flasim për kurs logjistikës. Një shumë prej jush ndoshta kanë pyetje në lidhje me si gjërat të kandidojë në këtë kurs. Ne do të përgjigjet atyre. Ne jemi duke shkuar për shkurtimisht shkoni mbi sythe në rast ndonjë nga ju djema të humbura seksion super. Ne do të flasim për hartës ASCII. Ne do të flasim vargjeve, funksionet, argumente command line. Dhe së fundi, çfarë ju djema ndoshta të gjithë me të vërtetë duan të jenë këtu për të mësuar në lidhje me, është pset2 juaj. Ne do të kemi disa nga truket e bukur dhe këshilla për mënyrën se si ta bëjnë këtë. NE RREGULL. Gjithashtu, së dyti, ne kemi shumë karamele këtu. Kushdo që i pëlqen karamele, vetëm të vijnë deri këtu. Grab disa. Unë kam një bandë. Ne kemi një ton në zyrë. Unë vërtetë nuk e duan për të ngrënë karamele gjatë gjithë ditës. Ju djema duhet të hani të gjithë karamele, sepse unë e solli atë këtu për ju djema. Vetëm të hani karamele. Nuk do të jetë karamele çdo seksion. Pra, së pari, kush jam unë? Emri im është Andi Peng. Unë jam kreu i AT CS50 këtu në Yale. Dhe përveç se, unë do të be-- në qoftë se dikush do të like-- drejtimin tuaj buddy, sup juaj të qaj më. Nëse një natë më parë për shkak pset tuaj, ju nuk kanë idenë se çfarë po ndodh, goditi mua. Ne do të mëshiroj së bashku, e të tjera. Vetëm e di se unë jam këtu si një burimeve për ju si vijën e frontit për të ndihmuar ju djema kuptoj se si për të zgjidhur problemet në CS50 dhe përtej. E-mail im është andi.peng@yale.edu. Unë gjithashtu do të dërgojë nga një individ email me numrin tim të telefonit në të kështu që jo të gjithë mbi internet mund të shihni numrin e telefonit. Mos ngurroni të më telefononi në çdo kohë. Seriozisht, telefoni im është bashkangjitur zakonisht në dorën time. Unë nuk mund të përgjigjem brenda disa minutash. Unë nuk mund të përgjigjet brenda dy orë. Por unë mund të ju garantoj, nëse ju e-mail mua, nëse ju telefononi mua, tekst me mua, unë do të përgjigjet brenda 24 orëve. Shpesh, unë do të përgjigjem para që, për shkak se unë e kuptoj që të gjithë e mori disa probleme, dhe ju doni përgjigjet tuaja për t'u përgjigjur shumë shpejt. Megjithatë, në qoftë se ju e quani Me 30 minuta para kjo pjesë që është e enjte për shkak night-- të jetë si, Andi, më ndihmoni, Unë nuk kam started-- unë mund të jap ju që krah për të qarë. Por ajo mund të jetë koha për të menduar për si të mos bërë atë herën tjetër. NE RREGULL. Oops. Si mund të kthehem? Atje shkojmë. Pra, në këtë kurs, ne kemi një ton e mbështetjes për të gjithë. Përveç vetëm seksione këtu, të cilat ju çdo javë të merrni për të shpenzuar 90 minuta mrekullueshme me mua, ne gjithashtu kemi orarin e punës. Sa nga ju djema tashmë kanë qenë të orarit të punës për ndihmë? I madh. Kjo është me të vërtetë e mirë për të parë, sepse ne kemi një staf prej më shumë se 45 Tas dhe MK të trajnuar për këtë kurs që janë këtu për të ndihmuar ju djema me psets tuaj. Hënave ata janë mbajtur në Teal klasë në 17 Hill House këtu në Yale. Marteve dhe të enjteve, ata janë mbajtur në Komuneve. Ora 8:00 deri 11:00 pretty much çdo ditë të javës. Ejani në, të dalë. Çdo problem, nuk ka problem-- vetëm vijnë më në, dhe pastaj ne do të ju ndihmojë me këtë. Së dyti, përveç orarit të punës dhe seksione, ne gjithashtu kemi pantallona të shkurtra. Ka dikush parë ndonjëherë një çift të pantallona të shkurtra ose walkthroughs në video në faqen e internetit? NE RREGULL. Pra, ata janë me të vërtetë, të vërtetë të dobishme. Prodhimi ynë i bukur i Harvardit bashkohem atje në atë shkollë deri në veri, ata kanë filmuar dhe prodhuar këto video të pabesueshme WALKTHROUGH. Ata do të ju merr hap pas hapi përmes si të shkojë për zgjidhjen e një problemi. Shpesh, në qoftë se ju jeni të hutuar në lidhje me një koncept i thjeshtë, një koncept njëjës, të marrë një sy, sepse ne ndoshta kemi një të shkurtër mbi atë diku në faqen tonë të internetit. Dhe kjo është zakonisht një burim i madh për të shikoni për kur ju jeni në fillim humbur në se si të trajtojë një problem. Së treti, ne gjithashtu kemi study50 dhe reference50. Pra studim 50 mbi Faqja e internetit është vetëm një lidhje. Kjo është, unë mendoj, study.cs50.net ose diçka të tillë. Vetëm google atë. Ne kemi shumë të slides përgatitur. Ne kemi shumë të pantallona të shkurtra dhe gjëra walkthroughs-- gjithë hartuar shumë i mirë dhe i zoti për ju djema të gjithë të kërkoni nëpër, shoh ndonjë koncepte se ju jeni të hutuar në lidhje. Kjo ndoshta do të jetë i mbuluar atje në study50. Reference50-- ngjashme. Ne kemi një shumë të notave të ndryshme në dispozicion për dispozicionin tuaj. Dhe së fundi, ne kemi atë që është quajtur CS50 Diskutoni, një forum në të cilin, në qoftë se një natë më parë ju jeni duke bërë problemet tuaja, të themi, ju keni një pyetje. Identifikohu për të CS50 diskutuar. Postoni pyetjen tuaj. Dhe atëherë një nga hundreds-- ndoshta, thousands-- nga kolegët marrë këtë klasë online do të hyni në. Dhe ndoshta dikush mund të merrni përgjigjja juaj para një mund AT. Kjo është në thelb vetëm një Online forum se ne mund të gjithë përdorin për të diskutuar problemet tona. Kjo është e ftohtë. NE RREGULL. Pra, problemi përcakton. Ne jemi gati të drejtë në trasha e problemit të vendosur dy. Një shumë prej nesh kanë tashmë luftuan përmes problemit të vendosur një të tillë. Ne tashmë e dimë se ndoshta duke pritur për natën e fundit për të bërë pset tuaj nuk është gjë e zgjuar për të bërë në CS50. Këshilla dhe këshilla në thelb për Suksesi i janë lexuar të gjithë spekulim. Sa prej jush tashmë kanë lexoni spekulim për pset 2? NE RREGULL. Kjo është një sasi të ngurta. Unë e di që ju djema kanë njohur ndoshta nga tani syze janë me të vërtetë e gjatë. Ata janë me të vërtetë, të vërtetë e gjatë. Është e vërtetë e vështirë për të lexuar çdo linjë e kësaj fjale me kujdes nga fjala. Ju dëshironi që të cek vetëm për të ku ajo ju tregon se për të bërë diçka. Unë mund t'ju garantoj, nuk e bëjmë atë. Nëse ju bëni këtë, ju jeni me siguri do të humbasë diku ku ai ju tregon si për të filluar një problem ose ajo ju tregon se çfarë duhet të emrit problemi juaj ose ajo ju tregon, kjo është ndoshta mënyra më e mirë të fillojnë të bëjnë problemin tuaj. Dhe pastaj ju do të jetë e humbur. Kur ju përpiqeni për të lexuar tuaj spekulim gjysmë të rrugës përmes, shumë i rëndësishëm information-- në se ju nuk jeni do të jetë në gjendje me të vërtetë qasje. Pra, lexoni tërë spekulim. Mundohuni të lexoni të gjithë spekulim para se të vijnë të nenit, sepse atëherë, kur ne flasim për pset, ne të gjithë mund të kemi një ide e çfarë po ndodh. Së dyti, ky është një koncept që unë do të doja të referencës shumë gjatë semestrit kursit. Por në thelb, të na takuar në gjysmë të rrugës, e drejtë? Mua, si AT tuaj dhe Jason si kurs menaxher dhe Scaz si profesor tuaj dhe Davidi si profesor tuaj dhe të gjithë të Tas tjera bukuroshe në këtë kurs, asistentë në këtë course-- ne do të bëjmë çmos për të siguruar që ju jeni të vendosur deri që të ketë sukses në këtë kurs. Ne do të mbajë seksion. Ne do të mbajë orarit të punës. Ne do të përgjigjem telefonit tuaj thirrje, të përgjigjem tuaj e-mail, bëjmë gjithçka që mundemi për të bërë i sigurt pyetjeve tuaja janë përgjigjur. Megjithatë, të na ndihmojë jashtë too. Të na takuar në gjysmë të rrugës. Nëse ju vijnë të orarit të punës nuk ka shkuar në seksion, jo duke parë leksionet, që nuk ka ide se çfarë po ndodh, të jetë si, më ndihmo. Unë do të jetë si, mirë, unë jam i keq. Kjo mund të jetë koha për të dhënë hua që krah për të qarë, sepse unë nuk jam i sigurt çfarë mund të bëj për të ndihmuar ju në qoftë se ju nuk do të përpiqet për të paktën ndihmë veten pak në fillim. Të na takuar në gjysmë të rrugës. Ju e dini, ju lutem të vijë përgatitur për t'iu përgjigjur dhe për të marrë i gatshëm për t'u angazhuar në material. Kjo i bën gjërat në mënyrë shumë më të lehtë për të gjithë të përfshirë. Po, kjo është shumë e shumë ajo. Nota. Pra, në planin mësimor, kjo është goxha e në thellësi në lidhje me se si ne klasën. Por në thelb, avari në kjo është 50% e klasës tuaj do të jenë psets, të cilat është e bukur, sepse kjo është ku ju jeni të shpenzimeve e gjerë shumica e kohës tuaj kurs për. Quizzes 40%, dhe tuaj Projekti përfundimtar do të jetë 10%. Nuk do të jetë dy kuize gjithë Kursi i semestrit. Unë mendoj se kohët dhe datat janë shënuara edhe në planin mësimor. Mënyra se ne do të të notimit psets tuaja është se ne kemi në thelb katër vlerat që ne të caktojë për çdo klasë. Ne kemi një vlerë të fushës, korrektësia, dizajn, dhe stil. Pra, siç e shihni, kjo është lloj i tonë Formula për llogaritjen psets. Tre ne japim më peshë për saktësinë, sepse padyshim trajner tuaj duhet të testimit për rastet se ne duam që ajo të provuar për. Ju djema të gjithë e kanë check50 në dispozicionin tuaj. Kjo është një funksion shumë i dobishëm se ju djema mund të gjithë ngarkoni kodin tuaj në serverat tanë, ku ne do të kontrollojë atë për ju. Dhe ju keni parë ato Fytyrat frowny, fytyrat smiley. Ata janë me të vërtetë, të vërtetë të dobishme. Ju lutem mos jetë Studenti se si mundohet për hardcode në të gjitha përgjigjet e tyre. Unë e kam parë patjetër një pset ku dikush pa të gjitha vlerat e check50 dhe ata vetëm e vështirë koduar in-- nëse ky numër, të shtypura nga ky numër. Nëse ky numër, të shtypura nga atë numër. A nuk e bëjnë këtë. Edhe pse teknikisht check50 është e saktë, rrugën tuaj për zgjidhjen e Problemi nuk është e saktë. Pra, vetëm përdorni check50 me masë. Por gjithashtu të sigurohemi që ju të të kuptojnë se si është duke funksionuar, programi funksionon përveç check50, sepse ne nuk mund ta provoni çdo Rasti i mundshëm i check50. Ne do të jetë testimi i disa prej tyre. Design është në thelb, si projektuar mirë është kodi juaj? Nëse ju jeni kopje-pasting shumta rreshta të kodit shumë, shumë herë. Ndoshta ju nuk keni mjaft të dizajn më të mirë në kodin tuaj. Ndoshta është koha për të shtuar se lak. Në thelb, këtu është vetëm të gjitha në lidhje me duke u përpjekur për të bërë kodin tuaj, duke u përpjekur për të shkruar kodin tuaj si efikase të jetë e mundur në mënyrë që programi juaj shkon sa më shpejt të jetë e mundur. Së fundi, ne kemi stil. Pra stil është lloj i një arbitrar, afat subjektiv. Unë e di që ne kemi zyrtarisht një udhëzues stil 50 për CS50, ku ai do t'ju thotë: oh, ju duhet të ketë një hapësirë ​​këtu. Ju duhet lloj formati Kodi juaj në këtë mënyrë. Ju duhet të emërojë gjërat në këtë mënyrë. Unë nuk e kujdesit të vërtetë, në vetvete, si ju zgjidhni të stilit kodin tuaj, vetëm për aq kohë sa ju të qëndroni në përputhje. Për shembull, në qoftë se ju pëlqen të të lënë një hapësirë ​​pas katër juaj para katër lak tuaj, vetëm të bëjë që çdo herë. Mos lloj të bëjë atë. A nuk e bëjmë atë herë të tjera. Nëse ju pëlqen të mbani kaçurrel formatimin e teksteve hapësirë ​​një mënyrë të caktuar, vetëm gjithmonë të bëjë atë në këtë mënyrë. Mos lloj bëjmë atë diku këtu dhe diku jo atje. Kur ne jemi duke nota, kjo është me të vërtetë e vështirë në qoftë se unë nuk kam asnjë ide se si ju jeni formatimit kodin tuaj, gjërat janë lloji tjetër dhe në vendin e vet. Në qoftë se ju vetëm i mbajnë atë në përputhje, kjo është shumë më e lehtë për mua si më i madh të jetë në gjendje për të lexuar kodin tuaj. Është shumë më e lehtë për ju si student të jetë në gjendje për të parë përmes kodit tuaj dhe të shohim se çfarë është e gabuar me ajo çaj pse ka çështje. Stili është një nga gjërat më të lehta ju djema mund të bëni për të marrë rezultate të plota. Në thelb, në qoftë se ju vetëm të kujdeseni, në qoftë se ju paguani pesë minuta të vëmendjes në kodin tuaj çdo javë, ju duhet të jetë duke marrë pikë të plota stil. Së fundi, ne kemi atë që quhet shumëzues e fushës. Scope-- Unë e di se është një i madh fjalë, sidomos në këtë klasë. Por fushëveprimi, të gjitha që do të thotë është se ju jeni duke u përpjekur e psets për të mirë e aftësisë tuaj. Nëse ju të kthehet në tre jashtë nga katër problemeve tuaja dhe as nuk Përpjekja e fundit, ju jeni me siguri do të humbasin disa pikë në qëllimin. Edhe në qoftë se ju vetëm të filloni problemin, bëj çmos për të ecin nëpër atë. Edhe në qoftë se ajo nuk punon, kthejnë atë në, sepse kjo tregon dhe demonstron për ne që ju jeni duke u përpjekur, që ju u përpoq problemin vendosur për të mirë të aftësisë suaj. Dhe pastaj ne mund të ju jap Pikat e plotë për qëllimin. Shtrirja është gjithashtu shumë e rëndësishme për ne, kur flasim për më të ulët rënie rezultatin pset. Kështu gjatë e semestër, ju djema keni nëntë psets. Dhe ne fakt do të jetë në rënie rezultati më i ulët nga këto nëntë, por vetëm në qoftë se ju keni pikë të plota fushëveprimi. Pra, nëse ju kthejnë në një pset jo të plotë, për fat të keq, ne nuk mund të bjerë se një, sepse fushëveprimit tuaj pikë nuk janë përfunduar. Pra, edhe në qoftë se ju keni javën e tmerrshme ku ju jeni të vdekur dhe ju jeni të sëmurë ose qeni juaj vdes, cat juaj vdes, dhe ju jeni të mbingarkuar me detyra shtëpie, vetëm përpjekje e pset. Të bëjë atë për të mirë të aftësisë suaj. Nëse kjo nuk funksionon, kjo nuk ka rëndësi. Vetëm kthejnë atë në. Të paktën ne mund të japim ju pikë për përpjekje. Një për përpjekje në këtë klasë. Të paktën rënie të ulët të shënuar për përpjekje. Pra, vërtet. Kjo është shumë e shumë ajo. A ka dikush pyetje kaq tani si ne klasën në klasë? Ose ndonjë nga këto? Ndonjë nga këto kështu far-- seksione, orarit të punës? Ftohtë. NE RREGULL. Pra, kjo është një temë që nuk ka një të vërtetë i pëlqen të flasë për. Unë vërtetë nuk e pëlqen të flasin për këtë. Ju djema të vërtetë nuk duan për të dëgjuar të flas për këtë. Por për fat të keq, ne të gjithë duhet të flasim për këtë. Davidi kaloi 20 minuta një leksion duke folur në lidhje me të. Dhe që është objekt e ndershmërisë akademike. Pra, ne të gjithë këtu kemi shkruar ndoshta një ese diku në karrierën tonë Yale. Ne kemi marrë ndoshta një bisedë ku kemi është thënë që të mos bëj plagjiaturë ese tonë, sepse se puna nuk është e jona. Në shkenca kompjuterike, ne kemi i njëjti lloj i konceptit. E gjithë puna që ju paraqisni, të gjithë kodin që ju shkruani duhet të jetë kodin që keni shkruar. Nuk duhet të jetë kod që e keni kopjuar nga diku tjetër. Nuk duhet të jetë kodin që ju keni googled dhe plopped në dhe ju vërtetë nuk e di nëse ajo punon. Ju lloj i kanë një ndjenjë të çfarë është bërë, por jo të vërtetë. Kur në dyshim, në thelb, kjo është vetëm të jetë i arsyeshëm. Në planin mësimor tonë, ne kemi një listë e tërë e gjërave ne e shohim të arsyeshme kundrejt jo i arsyeshëm. Për shembull, e arsyeshme është që ju dhe miku juaj diskutojnë çfarë është mënyra më e mirë për të shkuar për logjikisht zgjidhjen e një problemi. Kjo është mjaft e arsyeshme. Ajo që nuk do të ishte e arsyeshme është nëse ju djema marrë së bashku, shtypur kodin e njëjtë, dhe u kthye në të njëjtin kod. Kjo nuk është e arsyeshme. E njëjta gjë, lloj i një ese. Nëse ju doni për të diskutuar me shoku, hej, kjo është ajo që unë dua të shkruani në lidhje. Këto janë hapat që unë dua të marrë për të shkruar në lidhje me të, i madh. Kjo është e mrekullueshme. Ju lutemi të bashkëpunojnë me njëri-tjetrin. Në qoftë se ju djema të fillojë shkruar të njëjtën gjë, të kthehet në të njëjtën ese, që është më pak në rregull. Pra, kur në dyshim, thjesht nuk e bëjmë atë. Këtu, ne në CS50, ne kemi Scripts që kandidojë për të Automate të provuar jo vetëm korrektësinë e kodit tuaj, por edhe unike e kodit tuaj. Pra ju lutem mos na vënë në pozitë e të pasurit për të referuar rastin tuaj për EXCOMM. Ju lutemi të vetëm për të gjithë, le të vetëm e bëjnë këtë një përvojë e mrekullueshme. Gjithkush mëson më mirë, ne të gjithë jemi të lumtur, dhe ne jemi të vendosur të gjithë deri në të ketë sukses në këtë kurs. Diçka që është shumë e unik në lidhje me këtë klasë që unë mendoj se të gjithë duhet të vërtetë i kushtoj vëmendje për të është se ne kemi atë që quhet pendimi klauzolë në syllabus tonë. Pra, në thelb, brenda 72 orëve, në qoftë se ju besoj se ju keni bërë diçka ju nuk jeni me të vërtetë i sigurt ishte e përshtatshme, ju lutem të vijë tek ne. Ne ju premtojmë se brenda 72 orëve ne do të merret me çështjen, veten tonë pa iu referuar një më të lartë autoritet në administratën. Pra, nëse ju vijnë tek unë dhe të thonë, Andi, hej, unë jam me të vërtetë keq, por unë mendoj se ka një çift në rreshta tim Kodi mbrëmë që unë lloj i googled, mori off e qipi Del nga shtrati, kopjoni dhe të ngjit, dhe unë jam me të vërtetë, me të vërtetë keq për këtë, let me know. Ju lutem, mos e le të acarohet vetëm dhe vetëm shpresoj se kam kapur atë. Ne do të kapur atë. Vetëm të vijnë tek unë. Let me know brenda 72 orëve. Ne do të gjej një zgjidhje. Dhe ne premtojmë se ne nuk do t'i referohemi Autoritetet e universitetit në thelb. Pra, kjo është në interesin tuaj më të mirë të vetëm të jetë i sinqertë me të gjithë përfshirë në kursin. NE RREGULL. NE RREGULL. Deri tani, shpejt përpara Unë të lëvizur në, bën askujt kanë pyetje në lidhje me logjistikën se si kurset ne jemi duke shkuar për të drejtuar, si seksione janë duke shkuar për të kandiduar, asnjë nga kjo? NE RREGULL. Po. Audienca: [padëgjueshme]? ANDI Peng: Po. Pra quizzes-- sa prej jush janë në seksionin e hënë / mërkurën? Sa prej jush janë në të martën / e enjte? OK, kështu që kjo është një ndarje të ngurta këtu. Pra, mënyra se si ne të drejtuar ajo në Yale është që ne do të ketë dy të veçantë quizzes-- një për çdo section-- se do të merret gjatë klasës. Unë mendoj se është tetor fund të tetorit, diçka të tillë, si një javë e quiz. Yeah, kështu që vetëm të vijnë në klasë. Në atë hënën ose të mërkurën, ju do të merrni quiz. Në atë martën ose të enjten, ju do të marrë një quiz tjetër. Por i njëjti material do të mbulohet. Po. Pyetje e mirë. Po. Audienca: Ku nuk kemi shkojnë për të kontrolluar nota tona? ANDI Peng: Po. Kështu që unë do të dërgojë nga një e-mail çfarëdo çdo javë kur kuize janë graded-- ose, keq, kur psets janë të vlerësohet. Psets janë kthyer zakonisht në mesditë ose të premten. Kështu që unë premtoj se unë do të përpiqen për të marrë ato përsëri tek ju nga mesditë të premten e ardhshme. Sa herë që unë klasën një pset, unë do të dërgoj jashtë një njoftim në librin e klasës që ju tregon rezultatin tuaj mund të shihet në internet. Në mënyrë të drejtë këtë javë, pasi unë përfundojë nota psets javës së kaluar, ju djema do të merrni një e-mail Njoftimi thënë ju, hej kjo është ajo ku ju shkoni për të parë notat tuaja. Dhe ju mund të shihni çdo Ndarja e notave tuaj. Ju mund të shihni komentet. Oh, gjë shpejtë gjithashtu. Seksionin e komenteve në të madhe Libri është vendi ku unë ndoshta do të shpenzojnë shumicën e kohës sime notave. Pra, një gjë që është të vërtetë e rëndësishme kur ju djema jeni duke shfletuar notat tuaja në psets tuaj nuk është vetëm në kërkim në rezultatin fizike por edhe të marrë kohë për të me të vërtetë lexuar komentet e mia. Shpesh kjo ju jep reagime se si ju jeni zgjidhjen e një problemi. Në qoftë se ju duhet të bëni diçka pak më mirë, kritika konstruktive zakonisht është më i mirë i dhënë në ato seksionin e komenteve. Pra ju lutem, ju lutem, unë jam duke shkuar të kalojnë kohë të shkruar komente. Ju lutem, unë me të vërtetë do të vlerësojmë se në qoftë se ju djema do të lexoni këto komente. NE RREGULL. Ftohtë. Në rregull. Pra, ne do të fillojmë të flasim dhe vetëm rishikimin shpejt një pjesë të materialit nga Javën zero vetëm kështu që ne jemi në faqen e duhur për duke filluar problemet e kësaj jave. Pra, lak, ndërsa është një nga tre llojet e sythe kemi diskutuar më herët në këtë klasë. Një lak, ndërsa në thelb është shkruar në sintaksë ku, ndërsa një gjendje të caktuar, bëni këtë në mënyrë të përsëritur, e drejtë? Mendoni se në këtë grafik këtu. Ju jeni do të fillojë në një pikë të caktuar në kodin tuaj. Ju do të jeni për të hyrë në gjendjen lak if-- Unë nuk e vet e dini, x është më pak se një. Nëse kjo është e vërtetë, ju do të jeni për të ekzekutuar trupin lak. Dhe ju jeni do të vazhdojmë të bëjmë që përsëri, përsëri, përsëri, mbi dhe over-- cila është arsyeja pse kjo është një loop-- deri sa gjendja juaj të bëhet i rremë. Pra, në këtë mënyrë, një lak, ndërsa është një nga mënyrat më të thjeshta për të shkruar çdo lloj kusht që ka nevojë për të përsëritur mbi dhe mbi dhe mbi. Vetëm të jenë të kujdesshëm kur ju jeni me shkrim çdo lloj lak se ju keni një kusht dalje si dhe si një update për çdo gjë që ajo është kështu që lak juaj nuk ka vetëm drejtuar mbi dhe mbi pafundësisht. Në çdo rast, ju do të jeni të dëshironi të bëni të sigurt që ju jeni duke ndryshuar disa aspekte të kodi juaj ose në fund të lak vetëm për t'u siguruar që ju keni një mënyrë i përparuar drejt gjendjes që ju duan të takohen në fund. A ka që e bëjnë kuptim për të gjithë? Ne thjesht nuk duan të jenë të kapur në këtë spirale ku ne do të shkojmë rreth e rreth dhe nuk ka asnjë mënyrë për të thyer lak. Dhe çdo lak në thelb ka një mënyrë për të bërë këtë. NE RREGULL. Së dyti, shumë prej jush në psets tuaj Mario ndoshta kishte të punësuar ky lloj lak. Ajo është quajtur një të bëni ndërsa lak. Para së gjithash, mund dikush të më thoni çfarë është dallimi në mes një për ta bërë ndërsa lak dhe një lak, ndërsa është? Po. AUDIENCA: The bëni ndërsa loop shkon në fillim [e padëgjueshme]. ANDI Peng: Po, pikërisht. Pra, një për ta bërë, ndërsa loop gjithmonë bën çfarëdo është brenda detyrave, brenda kllapa atje dhe bën këtë kusht para se të kontrolluar për the-- vjen keq, e bën atë kod para kontrolluar për gjendjen. Dhe kjo është veçanërisht e rëndësishme për ne këtu në këtë klasë, sepse shumicën e kohës ne do të duan për të nxitur përdoruesi për disa lloj input. Dhe pastaj, në varësi të input ata na japin, atëherë ne mund të vlerësojmë, oh, të bëjë ne kemi nevojë për të nxitur ato përsëri? Pra në Mario, në qoftë se përdoruesi ju dha një lartësi negative, për shembull, ju jeni do të ftim parë dhe të bëjë çdo gjë që është brenda. Atëherë ju jeni duke shkuar për të kontrolluar kohë. Ju e dini, është negative 1, është se një numër pozitiv? Nëse nuk është, unë jam duke shkuar për të shkuar prapa dhe të përsëritur do dhe përsëritje dhe të përsëritur dhe të përsëritur derisa ata Së fundi ju jap një numër që ju pëlqen, që ne të gjithë mund të punësojë në kodin tonë. Është mjaft e rëndësishme për në thelb çdo input përdorues. Unë mund t'ju garantoj ndonjë kohë në një pset ku ne ju kërkojmë të dhëna çdo lloj i kodit, ne jemi ndoshta do të ju jap një test në të cilin ne jemi do të ju jap diçka të keqe se kjo është do të përpiqen për të thyer kodin tuaj. Nëse ne përpiqemi të ju pyes për të dhëna an numër i plotë, ne mund të ju jap vetëm një varg dhe të shohim se si do të trajtojë atë. Nëse ne ju kërkojmë të punësojë një moshë, ne mund të ju jap një numër negativ për të parë se si do të trajtojë atë. Vetëm sigurohuni që ju djema janë të testimit për Rastet në të cilat ju nuk merrni më të mirë input, le të them vetëm. Dhe një për ta bërë, ndërsa loop është shumë herë më e mirë mënyrë për të hartuar kodin tuaj kështu që ajo i plotëson atë qëllimin. NE RREGULL. NE RREGULL. Pra, kjo është ndoshta më e lak kompleks nga tre që ne kemi shikuar deri më tani. Dhe kjo duket shumë e frikshme në fillim. Por unë ju garantoj, një herë ju djema merrni ul receptorin e telefonit se si të përdorin një për lak, kjo është një nga gjërat më të dobishme, shumica e mjete të dobishme në arsenalin tuaj për të lëvizur përpara në këtë klasë. Kështu për shembull, në Scratch, kemi pasur këtë bllok shumë të thjeshtë se vetëm tha përsëritur këtë sigurt frazat numër të caktuar të kohës. Nga rruga, SAJ-- kjo është Scaz Andi Jason. Ne shumë herë nënshkruajë email SAJ-it tonë. Nëse themi SAJ, mos të ngatërrohet. Kjo është vetëm ne. Pra në Scratch, ne ishim në gjendje të kemi një bllok që tha: përsëris unë dua SAJ-it! 10 herë. Shumë e thjeshtë. Logjika prapa që është një shumë, shumë e thjeshtë, apo jo? Unë dua që së pari të kalojnë nëpër të parët kohë dhe të shohim se, për herë të dytë dhe të shohim atë kohë, të tretë, e kështu me radhë dhe kështu me radhë, deri sa ju goditi në 10. Dhe mënyra se si do të përfaqësojë atë në Kodi është vetëm me anë të një të thjeshtë për lak. Pra për të, ju jeni do të deklarojë ndryshueshme tuaj këtu, në këtë rast, me një int. Ne jemi duke shkuar për të përmendur atë unë. Ne jemi duke shkuar për të nisja atë në 0. Dhe edicioni ndalimi është do të jetë i është më pak se 10. Dhe update do të jetë i ++. Dhe brenda lak, ajo do për të ekzekutuar deri në fund atë godet fundin e condition-- në të cilën rast, ajo do të thyejnë lak. Nuk duhet të jetë gjëra që ju djema keni parë të gjitha llojet e para dhe kishte për të bërë për problemin tuaj të vendosur një të tillë. A ka dikush ndonjë pyetje lidhur për sythe të drejtë tani? NE RREGULL. I madh. NE RREGULL. Pra, për ato prej jush që kanë lexoni spekulim pset për këtë javë e dini se ne do të duhet të punësojë diçka që quhet ASCII dhe tabela ASCII. Kështu Davidi në leksionin e kaloi në një kohë të shkurtër Si Kompjuter essentially-- gjithçka është i koduar në një kompjuteri në binar, në zero dhe ato. Dhe mënyra se kompjuterat janë në gjendje për të ruajtur vlera të ndryshme, përveç në zero dhe ato janë përmes hartës ato numra për të përfaqësuar shifra të tjera apo karaktere në thelb të tjera. Pra, në këtë rast, një ASCII table-- të gjitha ajo ka është karaktere hartë, apo gërma, në numra. Pra skedar kodi burim në tuaj computer-- ajo e sheh, hey, një bandë e zero dhe ato, zero dhe ato, zero dhe ato. Kjo është ajo që ruhet në kujtim aktuale e kompjuterit tuaj. Por, kur ne njerëzit duan të komunikuar me kompjuter, ne want-- themi, për shembull, në qoftë se unë dua uppercase A, Unë do të duhet disa mënyra e thënë kompjuterin, oh, kur unë lloji uppercase A, dua të them ky përfaqësim në binar. Dhe kështu mënyra që ne bëjmë që hodhi një gjë arbitrar quajtur një tryezë ASCII, ku ne, si njerëz, si programuesit, disa kohë më parë, ne kemi vendosur që në mënyrë arbitrare ne u do të caktojë këto numrin Vlerat e këtyre karaktereve. Kështu që ju djema mund google këtë online. Unë mendoj se ka një lidhje për atë në tuaj pset-- vetëm një tabelë hartë ASCII, ASCII tryezë. Ajo vetëm përkthehet binar Numrat në karaktere. Dhe kjo do të jetë shumë dobishme për të vendosur tuaj e problemeve sa herë që ju dëshironi të llogaritur asgjë ose nëse ju duan për të shfaqur të caktuara karaktere ose integers ose manipuluar karaktere të caktuara. Ajo do të jetë shumë e rëndësishme që ju të gjithë e di se si për të lundruar një tryezë ASCII. Kështu për shembull, uppercase A përfaqësohet nga numri 65. Dhe vogle një përfaqësohet nga 97. Pra, është e rëndësishme të dini se dallimi në mes të dy vlerave është 32. Shpesh, në qoftë se keni nevojë për të kthyer nga njëra-tjetrën, dallimi është 32. Dhe mos u shqetësoni nëse ju jeni lloj i hutuar për këtë në fillim. Ne do të shkojnë rreth asaj se si ne do punësojnë këtë në kodin aktual. NE RREGULL. Pra, për ato prej jush me laptopë jashtë, të ndjehen të lirë për të tërhequr deri një tryezë ASCII, sepse këto ndoshta do të të kërkojë nga ju djema të referencës çfarë personazhet janë. NE RREGULL. Pra, duke e ditur se disa karaktere hartë disa numrave të caktuar, në qoftë se unë do të kandidojë vetëm i pari Linja e që code-- printf A, vogle një minus uppercase A. A ka dikush kanë me mend në atë që do të jetë shtypjen nga të ekranit të drejtë tani? Pra, para së gjithash, çfarë vogle një përfaqësojnë? Çfarë numri është se koduar në tabelën ASCII. Na vjen keq? Audienca: 97? ANDI Peng: 97, e madhe. Dhe çfarë është uppercase A? Audienca: 65. ANDI Peng: Pra, çfarë është 97 minus 65? Audienca: 32. ANDI Peng: OK. Pra, çfarë mendoni ju djema do të ndodh kur i dhëna se linjë e kodit në kompjuterin tim? Audienca: [padëgjueshme]. ANDI Peng: Na vjen keq, flasin. Nuk shqetësohet. Kjo është një shumë e sigurt Mjedisi, minus kamera. Ne jemi të gjithë do to-- pa shqetësime. Vetëm ne jemi të gjithë duke shkuar për të pretendojë si kjo është vetëm na trishtues në këtë dhomë. Nuk shqetësohet. Nuk ka pyetje është shumë i trashë. Nuk ka përgjigje është një përgjigje budalla. Unë jam ndoshta do të bëjë gabime në rrjedhën e mësimit tim. Seriozisht, djema, vetëm zbuloj atë. Kini besim në veten tuaj, ju e dini se? Pra, çfarë ishte kjo? Kush tha se përgjigje e fundit? NE RREGULL. Bërtas se bukur dhe qartë. Audienca: 32? ANDI Peng: 32. OK, le të drejtuar këtë kod dhe të shohim nëse kjo është ajo që ndodh. NE RREGULL. Pra, si ju djema mund të lloj shih, simbol tipik unë e keni bërë ngritur këtu për mënyrën se si ne do të punësojë çdo lloj i programit në kompjuterin tonë. Ne kemi funksioni ynë kryesor brenda funksioni ynë kryesor. Unë jam vetëm do të kopjoni dhe ngjisni këtë linjë të kodit. Gjithashtu të jenë të kujdesshëm kur ju djema janë kopjimi dhe pasting kodin. Operatorët Ndonjëherë caktuara mos paste mbi saktë. Në këtë rast, minus shenjë ishte në fakt një dash. Dhe kështu kompjuteri nuk e ka marr atë. Kështu që unë kam për të shkuar mbrapa dhe fizikisht Rivendos atë. Vetëm të jenë të kujdesshëm kur ju djema janë duke bërë atë. NE RREGULL. Ne jemi duke shkuar për të drejtuar këtë këtu. Pra, ne jemi duke shkuar për cd në seksioni2 tonë. Unë e kam quajtur këtë asciimath program. Pra mbani mend, kur ne të drejtuar ndonjë Programi, ne duam që së pari të përpiloni atë duke xhiruar atë nëpërmjet make tonë. Dhe pastaj ne duam të vërtetë të drejtuar programi duke bërë dot-plagë. Pra, ne jemi duke shkuar për ./asciimath. Drejtë, atje ne do të shkojmë. Dhe ne shohim 32. Të lumtë. Ju meritojnë një pjesë të karamele. Karamele për ju. Më vjen keq. Në rregull. NE RREGULL. Pra, ne mund të kthehemi në shembullin tonë këtu. Aah, nr. Aah. NE RREGULL. Unë jam vetëm duke shkuar për ta mbajtur atë si kjo. NE RREGULL. NE RREGULL. Pra, si ju djema mund të shihni, ne mund të bëjmë shumë gjëra shumë interesante, shumë gjëra shumë të ftohtë, një shumë e gjëra shumë të ndërlikuara që përfshijnë Karaktere ASCII dhe numra. Pasi që ju të merrni poshtë për të vijë pesë, kjo është një shumë të ndjekin së bashku. Ne nuk jemi duke shkuar për të shkuar nëpërmjet seksionit. Ndjehen të lirë për, nëse ju mund të, arsyetojnë atë në letër për herë të parë në çfarë duhet të ndodhë kur ju input një varg të tillë të vlerave. Për shembull, në këtë linjë e fundit, ne kemi z-- cila përfaqëson një number-- caktuar a-- cila gjithashtu paraqet një disa number-- plus 1 modulos 26 plus vogle a. Në qoftë se ju djema mbani lexim përmes këtyre, ju mund të shohim një model të dalë në se si ne jemi duke manipuluar kodin. I highly, highly sugjeroj pasi të gjithë seksion ju djema të shkojnë përpara dhe të dhëna ato të gjitha në kompjuterin tuaj dhe të shohim se çfarë lloj Numrat janë të ardhur nga dhe arsyetimin përmes pse ato janë ndodh, sepse për psets tuaj ajo do të jetë me të vërtetë i rëndësishëm për ju për të kuptuar pse disa gjëra janë duke ndodhur. Të gjitha këto slides do të jetë online. Kështu që nuk ka shqetësime në lidhje me duke u përpjekur për fizikisht kopje shënime. Internet Gjithçka-së. Ky seksion vetë do të jetë online. Të gjithë kodi im burim që Unë jam running do të jetë online. Po. A ju ende keni një pyetje? Audienca: Çfarë është modulos? ANDI Peng: OK. Pra modulo është një operator që do të të jetë shumë e rëndësishme për pset djemtë tuaj s këtu. Pra, mënyra se operatorët në C dhe në punën e programimit është se ju keni atë që e quajti simbol ndarje dhe simbol modulus, e cila është vetëm si shenjë për qind. Pra, në C, kur ju bëni një numër të plotë ndarë nga një numër i plotë me një plagë, C ka një tendencë për të duan të prerë off të gjitha pikat dhjetore, për shkak se një numër i plotë dëshiron për të kthyer një numër të plotë. Kjo nuk do të duan të jenë një të dyfishtë me një bandë e numrave dhjetorë të gjithë pas tij. Pra, nëse unë bëj 3 ndarë nga 2, ajo do të prerë 0.5 dhe vetëm të ju jap 1. Pra, kjo është diçka për të të jetë shumë të kujdesshëm kur ju jeni duke bërë çdo lloj matematikës në programimin, është se numrat ju merrni nuk mund të jetë numrat se keni qenë të menduarit, cila është arsyeja pse arrestimi në tuaj pset fundit është aq e rëndësishme. Modulo ju jep pjesën e mbetur. Kështu për shembull, në qoftë se kam bërë 3 modulo 2-- kështu 3 për qind shenjë 2-- kjo do t'ju japë pjesën e mbetur të që. Pra, 3 ndarë nga 2 është 1.5. Është 1 Pjesa e 1. Kjo do të ju jap 1, e cila është pjesa tjetër e që. Pra, kur ju djema janë duke lëvizur përmes tryezë ASCII, modulo do të përfundojë si diçka që është shumë e rëndësishme, dhe ne do të diskutuar se më vonë. NE RREGULL. Pra, diçka që është shumë, mjaft i ri dhe mjaft unike që ne kemi diskutuar këtë javë koncepti i asaj që një grup është. Pra array është i pari lloji i strukturës së të dhënave se ne jemi duke shkuar për hasni në këtë klasë. Të gjitha Struktura e të dhënave është është disa lloj arbitrare, fjalë për fjalë gjëra të tilla si struktura që ne si programuesit kanë krijuar, që ne kemi vënë në kodin tonë që mund të përmbajnë pjesë të tjera të kodit. Pra, në këtë kuptim, një array-- të mendojnë për atë si një fotografi e kabinetit, ku në qoftë se keni hapur ndryshëm raftet e kabinetit tuaj fotografi, ju mund të hyni gjëra të ndryshme. Në kujtim, një grup është vetëm duke bërë e njëjta gjë në kompjuterin tuaj. Ju mund të keni ne ndryshme blocks-- telefononi ata indices-- nga një grup. Është vetëm si një bllok, një raft i kujtesës që ne kemi krijuar brenda tuaj kompjuter që ju mund të dhëna disa gjëra në hapësira të ndryshme. Pra, me një grup, ju gjithmonë duhet të specify-- ju duhet të specifikoni deklaruar një array në format e mëposhtme. Ju jeni duke shkuar për të parë të specifikojë llojin e të dhënave që ju doni të krijoni të vektorit. Nëse unë dua një rrjet të integers, Unë do të vënë int drejtë atje. Nëse unë dua një grup të strings, Unë jam duke shkuar për të vënë vargjet atje, emri i grup tuaj, dhe pastaj ju jeni do të ketë kllapa katrore. Dhe brenda kllapave katrore, ju jeni do të ketë madhësinë e array tuaj. Diçka që është me të vërtetë e rëndësishme për të mbani në mend kur të krijimit të vargjeve është që, sapo ju të krijoni një array, se madhësia nuk mund të ndryshojë. Pra, nëse ju e dini se tani ju keni një rrjet të madhësisë 10, ju e dini se unë jam do të ketë 10 qeliza brenda ose 10 indekseve në kuadër të këtij grup, dhe ajo kurrë nuk do për të zgjeruar ose zvogëlohet pa marrë parasysh se çfarë, dhe se nuk ka aktualisht vetëm 10 blloqe të hapësirës ndarë në kujtesën tuaj që mund të ruajë deri në 10 gjëra të çdo gjë që ju keni vendosur. Pra, në këtë mënyrë, një tip të dhënat grup, struktura e të dhënave që është një grup është shumë ndryshe nga disa të tjerë që do të të mbuluar më vonë në këtë kurs. Po. Për shembull, në qoftë se ju të kërkuar për të krijojë një rrjet të madhësisë 3 që përfshira variabla e integer-- oh, sorry, i temperature-- dhe temperatura, i kurs, eshte nje numer i plote. Pra, ne do të krijojë int, që është lloj të dhënat e asaj që ne duam të ruajtur. Ne jemi duke shkuar për të thirrur këtë temperaturat për hir të Nomenklaturës së emërtimit diçka që ne të gjithë e kuptojmë. Dhe ne do të kemi kllapa katrore. Dhe ne duam tre numra. Pra, ne jemi duke shkuar për të vënë tre në brendësi të saj. Diçka që është me të vërtetë e rëndësishme që të mbani në mend është se vargjeve janë të indeksuar zero. E gjithë kjo do të thotë është se ju të fillojë me indeksin e 0, dhe ju drejtuar deri me Madhësia e vektorit minus 1. Kështu për shembull këtu, ne kanë një rrjet të madhësisë 3. Ajo do të jetë në gjendje të mbajë tre vlerat. Por numrat themselves-- që numrin, array, që indeksi, array, janë 0 me 2. Pra djema, të jetë e vërtetë, të vërtetë të kujdesshëm kur ju jeni duke kaluar problemet tuaja të caktuara dhe krijimin e çdo lloj grup, sepse një shumë e herë ajo është me të vërtetë, të vërtetë e lehtë për të harrojmë se. Unë në fakt nuk kam indeksin i 3, që aktualisht vetëm kanë indeksin e 2. Dhe në qoftë se ju përpiqeni të hyrë në indeksin e tretë, ajo do të jetë ajo që është quhet terminator null. Kjo nuk do të vërtetë të ekzistojnë në rrjet. Dhe kompjuteri është nuk do të pëlqen kjo. Pra, kini kujdes kur ju jeni duke hyrë në gjëra vetëm për të siguruar që ju të mbani mend se vargjeve janë zero-indeksuar. NE RREGULL. Pra, shembulli i parë është vetëm Një mënyrë për të krijuar një rrjet. Shembulli i dytë kam më poshtë është vetëm një mënyrë të veçantë i krijimit të asaj që është e njëjtë e të dhënave Struktura që ne kemi futur vetëm. Pra, në vend të fizikisht drejtimin përmes dhe vënien në temperaturë prej 0 është e barabartë me çfarëdo, temperatura e 1 është e barabartë me çfarëdo, temperaturës 2 është e barabartë çfarëdo, unë mund të vërtetë vetëm drejtpërdrejt të krijuar të gjitha në një rresht në temperaturë kllapa katrore është e barabartë. Dhe vini re në këtë rast, ju nuk keni nevojë të specifikojë sa i madh array juaj është, sepse kompjuteri do të shkoni nëpër dhe të shihni se nuk ka tri elemente në këto formatimin e teksteve kaçurrel. Dhe kjo do të dinë, OK, Unë kam nevojë për një rrjet të madhësisë 3. Ju nuk do të duhet të input ajo mënyrën e mëposhtme. Dhe gjithashtu, vërtet, në këtë mënyrë. A ka dikush pyetje në lidhje me mënyrën se si ne të vargjeve ose se si struktura e një sërë punon? Po. Audienca: [padëgjueshme]? ANDI Peng: Po, pikërisht. Pra, nëse ju do të deklarojë dhe nisja një grup metodën e mëposhtme, i cili është mënyrë të dytë, ju mund të lënë vetëm ato. Dhe kompjuteri automatikisht e di se ajo ka nevojë për të numëruar sa shumë elemente janë në ato formatimin e teksteve kaçurrel, të ndara me presje. Kështu që këtu ata e shohin 65, 87, 30. Pra, kompjuteri di, oh, ka tre integers. Unë e di se për të krijuar një emër array Temperatura me tre elementë në të. Pyetje e mirë. Po. Audienca: A nuk është e mundur për të krijuar një grup me lloje të ndryshme të të dhënave që mund të hyrë në të? Për shembull, me integers [e padëgjueshme]? ANDI Peng: Për qëllimet e kësaj klase, jo, tani për tani. Kur keni krijuar një të dhënave strukturuar si një rrjet, ju jeni duke thënë kompjuter, hej, kam nevojë për ty të ndajë këtë shumë kujtesës në hard drive time, me çdo qelizë qenit numër i caktuar i bit. Mos harroni kemi mësuar në javë zero që të dhënat e ndryshme Llojet e kanë madhësi të ndryshme? Kështu për shembull, një varg është një sasi e ndryshme i hapësirës se një char, e cila është një sasi të ndryshme të hapësirës nga një numër të plotë. Dhe kështu që nëse ju nuk specifikoni dhe ju përzierje dhe ndeshje çfarë lloje të variablave ju keni, kompjuteri-së do të jetë shumë i hutuar. Dhe kjo nuk do të di sa e kujtesës për të ju jap. Pra, për qëllime të drejtën tani, kompjuterat mund të vetëm njohin një lloj të një grup. Pyetje e mirë. NE RREGULL. Pra Natyrisht, Pyetja e dytë ne kemi është, pra, tani që ne kemi krijuar një grup dhe ne kemi vënë të gjitha këto gjëra në grup, sa jemi ne do të jetë në gjendje për të hyrë në atë? Pra, struktura tipike që ne gjithmonë hyrë në një rrjet është e bukur ynë për lak. Unë premtoj ju djema se ne do të jetë duke parë një shumë të këtij shokët këtu. Në thelb, në çdo kohë që ju dëshironi të dhëna vlerat në një rrjet apo ju doni të hyni ato, Mënyra më e mirë për ta bërë këtë është një për lak, sepse në një për lak, ju e di se sa herë ju jeni do të duan për të drejtuar përmes rrjet, sepse ju keni një botim të ndaluar, e drejtë? Dhe çdo herë që të kandidojë përmes, ju mund të hyni një element tjetër i vektorit. Dhe gjithashtu, kjo është një arsye pse në mënyrë tipike ne fillim ynë për sythe në vlerën 0, sepse kur ju hyni vargjeve, ju mund të hyni në indeksin zero. Dhe kështu kjo paralele shumë të bukur. Ju djema mund të ketë dashur të shkruaj për int i barabartë me 1. i është më e vogël se ose e barabartë me 3. Por kjo nuk do të punojë mjaft të edhe këtu, sepse ju vetëm kanë elementë të 0, 1, dhe 2.. Dhe kështu që nëse ju do të filloni i juaj në elementin 1, 2 dhe 3, ju jeni do të përfundojë deri drejtimin jashtë kufijve të grup tuaj, dhe gjëra të këqija do të ndodhë. Kështu që unë shpresoj se ju djema të parë Segue e përse në klasat e mëparshme ne kemi qenë të mësuar ju djema si për të drejtuar dhe format një për lak mënyrën që ne ishim. Kjo është për shkak, tani ne kemi kaloi në vargjeve, ju mund të shihni se pse 0 jep në vetvete shumë të bukur për të hyrë. Pra, mënyra që ne bëjmë se është that-- unë jam vetëm shtypjen atë këtu për hir e shtypjes it out. Por unë kam placeholder time, presje. Dhe aksesimit aktual Pjesa po ndodh. Emri i vektorit u quajt temperatura. Pra, kjo është temperatura dhe i-th element i vektorit. Pra, si për lak shkon përmes, ajo do të fillojë në 0. Ajo do të shtypura nga Indeksi 0 e kësaj grup. Atëherë ajo do të shtypura jashtë të elementit të parë. Atëherë ajo do të shtypura nga një të dytë. Dhe pastaj ne jemi duke shkuar për të thyer. Është e të gjithë të qartë në se si kjo po ndodh? I madh. Në rregull. Pra, këtu ne kemi një mënyrë për të duke thënë, në qoftë se ne nuk duam hard-kod in-- mua si programues. Unë nuk dua që në fakt fizikisht vënë në çdo element individual e këtë grup. Në qoftë se unë të kërkuar për vend kanë vlera të dhëna përdorues, çfarë është mënyra më e mirë për të bërë këtë? E pra, këtu unë kam krijuar ky funksion i bukur, në të cilën unë mund të deklarojë një rrjet. Pra int scores-- le vetëm të thonë se ne duam të bërë një grup që mbahet notat e të gjitha 18 e studentëve këtu në këtë seksion. Unë mendoj se ne kemi marrë një grimë më shumë se 18 fëmijë sot. Por, për hir të së shembull, le të vetëm të supozojmë kemi pasur 18. Unë do Name grup rezultatet me tipit int, sepse rezultatet, natyrisht, janë numra. Dhe unë jam duke shkuar të ketë 18 në kllapa katrore, sepse kjo është sa nxënës i duan të jenë në gjendje për të ruajtur rezultatet e. Dhe mënyrën se si unë do të popullojnë array është se unë do të drejtuar atë nëpërmjet një për lak, e Sigurisht, me 0 qenit indeksin tim 0. Dhe pastaj me 18 të qenit tim ndalimin edicion, sepse nuk ka 18 elemente në grup. Dhe atëherë unë jam duke shkuar për të bërë printf, Enter të shënuar për student-- yada yada yada. A mund dikush të më thoni pse unë jam këtu shtypjen I plus 1 dhe jo unë? Kjo është lloj i një mashtrim pyetje, jo të vërtetë. Ajo nuk ka të vërtetë fizikisht ndikojnë në drejtimin e kodit. Po. Audienca: [padëgjueshme] 0? ANDI Peng: Po, pikërisht. Është pak e vështirë për të thënë, hej, ju jeni student 0 në këtë klasë. Kjo është pak i çuditshëm. Pra ne, si njerëz, nuk të vërtetë si të mendojnë se si kompjuterat mendojnë. Pra, edhe pse në kompjuter, është e ruajtjen e vlerave në indeksin 0-të, kur ne jemi njerëz, ne nuk të vërtetë si për t'iu referuar veten si zero. Pra, kur unë vetëm të shtypura atë, Unë jam duke shkuar për të shtypur dhe shtoni 1 vetëm për hir të qartësisë. Kështu që, kur unë të shtypura, unë jam do të jetë gjendje për të shtypur studentët 1 deri 18. Ajo nuk ka të vërtetë të ndikojë drejtimin e kodit në asnjë mënyrë, mënyrën se si unë të shtypura. Por të jenë të kujdesshëm kur ju jeni në fakt qasjen array. Kur ju shihni rezultatet e I, vini re këtu unë jam në të vërtetë hyrë në indeksin 0TH dhe jo plus 0-- 1 ose 1 plus 1, Në këtë rast, indeksi kështu kjo është e vërtetë e qartë. Është e të gjithë lloj OK në si kjo po kalon nëpër dhe me çdo indeks unë jam vënë një vlerë në grup dhe duke krijuar një grup me 18 numra që përdoruesi do të dhëna? NE RREGULL. Ftohtë. NE RREGULL. Ne tani të shkojë në diçka që është shumë e relevante për këtë pjesë të caktuar si. Unë e di në leksion, David-- vjen keq, keni pasur një pyetje? Audienca: Mund ta zgjeruar atë? ANDI Peng: Yeah, kështu që unë u përpoq. Por unë nuk e di. Për disa arsye, kjo version i PowerPoint është me të vërtetë nuk punon mirë me ekran. Pra, ne jemi vetëm duke shkuar për ta mbajtur atë si kjo. Të gjitha këto do të jetë i ngarkuar në internet. Më vjen keq, djema. Po. NE RREGULL. Pra, ne mund të kemi vargjet. Pra, nëse ju djema në fakt notice-- I di Rob shkoi mbi këtë në atë leksion se ai did-- një varg në fakt është vetëm një grup të karaktereve, në qoftë se ju mendoni rreth saj, e drejtë? Një varg është një emër ose një fjali apo një fjalë, e drejtë? Nëse unë do të krijojë një varg të quajtur Andi-- vetëm emrin tim, A-N-D-I. Ju mendoni për se si vetëm një variabël. Por në fakt, është e thyer poshtë në vetëm një grup të karaktere. Pra, atë e mori një karakter të një ruhet në një vlerë array. Atë e mori një karakter të n ruajtur në indeksi i dytë dhe kështu me radhë e kështu me radhë. Pra, në një mënyrë të tillë, ne në fakt kanë këtë lloj i strukturës së të vendosur në vendos për vargjet tona. Kështu që këtu, në qoftë se unë ishin të dhëna me fjala "ha", - kështu fjala varg është e barabartë me merrni string. Nëse unë do të input fjala "ha", që është fizikisht mënyra se si kompjuteri im është ruajtjen atë varg në kujtesën time. Dhe në qoftë se unë të kërkuar për të drejtuar përmes se dhe të shtypura se out-- kështu që për ne i është e barabartë me zero, mbani mend, në leksion, ne diçka të mbuluar që quhet strlen, ose gjatësia e vargut. Sepse unë në fakt nuk e di se sa i madh array është i çfarëdo inputting-- e përdoruesit Për shembull, unë futur fjala "ha", dhe unë e di kjo është tre karaktere i gjatë, apo jo? Kështu që unë mund të vënë në një tre atje dhe çdo gjë do të jetë mirë. Por në qoftë se input tuaj diçka përdorues kjo është një numër i ndryshëm i vlerave, ju jeni do të mos jetë në gjendje për të vërtetë e di se kur programoni kodin tuaj. Pra, mënyra se si kemi trajtuar rastet e testimit si kjo është se ne kemi diçka quajtur strlen, e cila është vetëm një funksion që ju tregon se sa kohë një varg është. Pra strlen i fjalës. Fjala ime është të hani. n barabartë strlen e fjalës. Dikush mund të më thoni se çka Vlera në fakt është e drejtë atje? Çfarë do të n përfaqësimin e drejtë tani, në këtë shembull, në qoftë se unë kam ngrënë? Audienca: 3. ANDI Peng: 3, pikërisht. Pra, ne kemi për int i barabartë zero, n është e barabartë me 3, në thelb. Dhe unë do të kandidojë derisa kjo është më pak se 3i ++. Dhe ajo do të në thelb të shkuar përmes dhe të bëjë të njëjtën gjë. Ajo do të shtypura nga çdo vlerë dhe ju jap E-A-T. Kjo është vetëm një denoting mënyrë të ndryshme të shkruar atë. Kjo do të jetë shumë e dobishme. Po. Audienca: Çfarë është përfitimet e vendosjes N barabartë fjalë strlen brenda se për lak [e padëgjueshme]? ANDI Peng: Po. Pra, nëse unë ishim to-- them, për shembull, në qoftë se unë do të bëj atë dhe pastaj do-- oop-- që, në kodin tim, ai do të në fakt të jetë bërë si të njëjtën gjë. Megjithatë, mënyra që Davidi shpjegoi atë gjatë ligjëratës, në qoftë se ndonjë nga ju djema mbani mend, ishte se, si njerëzit, si programuesit, ne me të vërtetë të përpiqet të programit tonë Kodi mënyrë që kompjuteri ynë ka për të punuar sa më minimale të jetë e mundur, kështu që që kodi ynë është shumë efikase. Pra, nëse unë kam se atje, çfarë do të ndodhë përmes për lak tim është se unë do të deklaroj për herë të parë një ndryshore të quajtur unë do të jetë 0. Unë jam duke shkuar për të kontrolluar, oh, çfarë është strlen e fjalës? Oh, The strlen është 3. Kështu që është më pak se unë tre? Po kjo është. Unë jam duke shkuar për të kandiduar. Dhe pastaj herën e dytë mbrapa rreth lak, unë jam duke shkuar për të ardhura i. Unë do të jetë një të tillë. Dhe unë do të kontrollojë, oh, por ajo që është strlen i fjalës? Oh, kjo është tre. Dhe e bën atë të duket lloj i të kota, çdo herë që të drejtuar përmes lak, për të kontrolluar funksionin, edhe pse strlen të fjalës në fakt nuk ndryshon? Pra, kjo është fuqi shtesë për një kompjuter. Kur ju filloni duke folur për gjëra të se miliarda dhe miliarda dhe miliarda vendeve gjatë, imagjinoni kompjuterin tuaj pasur nevojë të shkojë fizikisht nëpër dhe shikoni të gjithë se çdo herë të vetme. Kjo është arsyeja pse, për të bërë vetëm për hir të efikasitetit, ne priren të vetëm të bëjë këtë, sepse në këtë mënyrë ne jemi vetëm duke e quajtur funksionin një herë në fillim, dhe se çdo herë ajo shkon përmes ajo do për të ruajtur vlerën e 3 atje, se ju nuk e bëni duhet të vazhdimisht të kontrolluar çdo kohë. Po. Audienca: Më vjen keq. Vetëm [e padëgjueshme]. Mund të bëni int n barabartë strlen dhe vënë se mbi pjesën e jashtme të për lak gjithashtu? ANDI Peng: Po. Ju mund ta bëjë këtë, absolutisht. Arsyeja që ne kemi atë në këtu është sepse mënyra e një për punë loop është se ajo që quhet një variabël lokale në kuptimin se çdo gjë që ju jeni krijuar brenda e për lak ekziston vetëm brenda për lak. Pra ndryshueshme unë vetëm ekziston në këto kllapa. Dhe këtu variablat e n edhe ekziston vetëm në ato kllapa. Pra, nëse ju do të përdorni strlen e Fjala herë të shumta poshtë, absolutisht mënyra më e mirë për të bërë këtë do të jetë për të deklaruar atë në krye kështu që ju nuk keni për të bërë atë një herë. Po. Audienca: Pse keni një Linja e re pas për qind duke parë qoftë se ju doni të vënë të gjithë letrat e ardhshme për të ndajë? ANDI Peng: Oh, kam kërkuar për të printoni ato të gjithë në çdo linjë. Kjo nuk ka rëndësi. Po, kjo është një e formatimit. Kjo është një pyetje e mirë, edhe pse. Po, nëse kam kërkuar për të shtypur të gjitha në vetëm një linjë, Unë nuk do të ketë në dash. NE RREGULL. Gjithkush mirë? NE RREGULL. Ftohtë. Kështu që unë mendoj se unë kam folur mjaft. Radha ju djema s për të drejtuar përmes Kodi dhe më tregoni se çfarë është e gabuar këtu. Ku është bug? Kështu si ju mund të shihni, unë kam deklaruar një grup i ri i tipit string me emrin klasë. Dhe unë e kam futur Sam, Jess, dhe Kim në të. Dhe unë jam duke u përpjekur për të shtypur jashtë të gjitha elementet e vektorit. Dikush mund të më thoni pse kjo do të më jepni probleme? Unë do të ju jap djema 10 sekonda për të menduar për këtë. NE RREGULL. Po? Audienca: A është qendra e majtë barabartë me 3, ose [Padëgjueshëm]? ANDI Peng: E ​​drejta. Pra, sa herë është kjo në të vërtetë duke shkuar për të drejtuar nëpër këtë lak? Audienca: Katër. ANDI Peng: Pikërisht. Ajo do të përmes katër herë. Ajo do të vazhdojë deri me 0, 1, 2 dhe 3, sepse element i tyre është i është më e vogël se ose e barabartë me 3. Kjo nuk do të ndalet, kur është 2. Ajo do të mbajë duke shkuar deri sa ajo godet 3. Dhe, siç e dimë, ka vetëm tri elemente në grup tonë aktuale. Nëse ne përpiqemi për të hyrë e katërt element ose indeksi i 3, ju jeni duke shkuar për të goditur diku në kujtim që nuk ekziston. Ajo që quhet terminator null. Asgjë nuk do të jetë atje. Kompjuteri juaj nuk po shkon të jetë shumë i lumtur me ty. Po. A ka dikush pyetje se pse kjo po ndodhte? Kjo është një zonë të përbashkët për të shmangur. Po. Audienca: jo A e parë rrëshqitje gjithashtu kanë një varg prej 2? ANDI Peng: Jo. Pra, në thelb, kur ju jeni duke bërë një grup, kjo e drejtë kllapa atje, që number-- gjithë është e thënë që ju është se si shumë elemente kam. Kjo nuk është në fakt thënë më indekset e asgjë. Pra, në këtë rast, unë e di unë dua për të shkruar me tre vende, me tre vende fizike në të mbajë çdo gjë që unë dua të mbajnë. Pra, kjo është arsyeja pse numri tre është atje. Megjithatë, nëse kam kërkuar që në fakt të hyrë në të, në qoftë se unë të kërkuar për të thënë, printf Numri kllapa klasë, atëherë ju jeni do të vërtetë vënë indeksi fizike atje. Po, pyetje e mirë. Audienca: Pra, është fizik Indeksi i menduar të jetë [e padëgjueshme]? ANDI Peng: Më vjen keq. A mund të flasin pak? Audienca: Pra, është indeksi fizik [Padëgjueshme] secila nga kutitë? [Padëgjueshme]? ANDI Peng: Po. Kështu që unë jam duke shkuar për të shkuar mbrapa në të drejtë këtu. Mendoni e drejtë këtu. Ne kemi një grup të madhësisë 3. Ka tre vende, si, placeholders fizike në këtu. Por ata janë quajtur 0, 1, dhe 2. Pra, nëse kam kërkuar për të hyrë në ato, mënyrë që unë të hyni ato është printf e çdo gjë që kam kërkuar në këtu. Ju do të keni për të shtypur nga emri i saj, sepse atëherë kompjuter e di, oh, unë duhet të shohim në këtë grup për indeksin 0TH. Po. Por madhësia e saj nuk ndryshon. Madhësia është 3, pavarësisht si ju etiketë ata. NE RREGULL. Gjithkush mirë? Audienca: Pra, çdo herë që unë [e padëgjueshme]? ANDI Peng: OK. Pra, në këtë rast, ne nuk të vërtetë merrni në të drejtë tani në kurs. Por e di se një string-- si unë thënë më parë, një varg është në thelb një grup të karaktereve. Pra, nëse unë krijoj një rrjet e tela, unë lloj i kanë një rrjet të vektorit e karaktereve, e drejtë? Pra, në këtë rast, sepse unë kanë një rrjet të strings, në qoftë se keni qenë për të dhëna një fjalë të vërtetë të gjatë, që ende merr vetëm një hapësirë, sepse kjo është një string. Por në qoftë se ju do të mendoni për personazhet e asaj array, atëherë kjo është duke marrë një shumë më të Karaktere se asnjë prej fjalëve të tjera janë. Jo me të vërtetë e rëndësishme për të drejtën tani. Por kjo është vetëm në përgjithësi se si ajo është duke punuar. NE RREGULL. Kështu që kjo është diçka që unë do të ju lejojnë të bëni shumë gjatë semestrit. Unë kam nevojë për të pushuar zërin tim. Ju djema duhet për të stimuluar veten. Një shumë prej jush ndoshta duhet të fle tani. Unë jam inputting probleme të rastit ku ne si një klasë ose me një partner tjetër për ju janë duke shkuar të kalojnë disa minuta duke diskutuar se si ne do të shkojë në lidhje me zgjidhjen ose duke krijuar një program të tillë si ky. Deri tani, ne duam për të krijuar një program-- ne jemi duke shkuar për të thirrur atë upper.c-- që të konvertuarit një fjalë vogle me një sipërme të klasës uppercase string--, sorry. Fjalë në vargjet, më vjen keq, është sinonim. Unë jam duke shkuar për të ndryshuar ato do të thotë të njëjtën gjë. Po. Merrni disa minuta. Ajo nuk duhet të jetë i shkruar në çdo gjuhë. Vetëm në kod pseudokod ose logjikisht se si ne do edhe shkojë për të bërë një problem të tillë. Po. [SIDE BISEDA] Unë gjithashtu vënë re se ju djema can-- Unë lloj i shoh tashmë programin. I guess mungesën time të Mënyra prezantues është një problem. Por kjo është në rregull. [SIDE BISEDA] Po, të lutem, djema. Ejani merrni karamele. Ejani merrni karamele. Audienca: Po! [SIDE BISEDA] ANDI Peng: Gjithashtu, vërtet, Unë do të fillojë duke hedhur karamele në njerëzit që nuk t'iu përgjigjur pyetjeve. Kështu që ju duhet të gjitha pyetjeve përgjigje. Ose unë mendoj njerëzit që mos t'iu përgjigjur pyetjeve. Po, mënyra të tjera përreth. [SIDE BISEDA] Audienca: [padëgjueshme] ANDI Peng: Po. Po. [SIDE BISEDA] Të gjithë të drejtë, djema. Të marrë, si, 10 sekonda më shumë. [SIDE BISEDA] OK, djema. Pra, para se të fillojmë duke u përpjekur për në fakt fizikisht shkruani kodin, një zakon i mirë për të zhvilluar është se ne duam të llojit të parë të arsyes se logjikisht se si ne do ta bëjmë atë. Ju dëshironi të bëni të sigurtë, para teje fizikisht filloni duke u përpjekur për kodin në Mario, që ju të bëni sigurohuni që ju keni pseudokod tuaj. Që është duke marrë ju me anë të çfarë ju duhet për të krijuar kështu që, kur t'ju fizikisht shkruaj programin tuaj më vonë, ju jeni më mirë në gjendje për të kapur gabimet në kodin tuaj dhe gjëra të tilla si se. Pra, ne jemi duke shkuar për të fillojë vetëm by-- në gjuhën angleze, në pseudokod, ka njeri të duan të japin më një shpjegim i përgjithshëm se si ne do të shkojë për të bërë këtë? Po. Audienca: [padëgjueshme]. ANDI Peng: Sigurisht, nuk shqetësohet. Audienca: A mund të pyesni atë për të ose kërkoni dikush për të marrë varg 1-- Po, varg, dhe pastaj-- ANDI Peng: Po, kështu që kjo është një fillim i mirë. Unë do të filloni të shkruani, më vjen keq, ndërsa ju flisni. Kështu që-- Audienca: --The vogle Numrat janë më të larta, e drejtë? Apo shkronja Fjala kanë numër të lartë? ANDI Peng: Pikërisht. Audienca: Pra, atëherë ne zbresim 32 nga çfarëdo [e padëgjueshme]. ANDI Peng: Great. Pra, ne lloj e kanë një ndjenjë të përgjithshme se si të punojnë në lidhje me këtë problem. Duke ditur që ne kemi mësuar lloj i mënyra fizike që vargjet janë ruajtur në kujtesë, Çfarë bëni ju tashmë e di që ju jeni duke shkuar për siguri duhet të shkruani në kodin tuaj në mënyrë që të lëvizë me vargun? Audienca: Për lak. ANDI Peng: një për lak, pikërisht. I madh. Pra, ne kemi një lloj i përgjithshëm pseudokod shkruar se lloj i po i jep ju shënime si ju do të lëvizë në lidhje me zgjidhjen e problemit. Tani që ju e keni këtë, ju mund referencë atë për më vonë kur ju jeni duke u përpjekur për të në fakt shkruani kodin tuaj. Pra, ne në fakt mund të shkoni këtu. Dhe unë kam marrë një funksion të quajtur upper.c-- atje ajo is-- e vetëm një template bosh tani që ju djema do të më ndihmoni të kuptoj se si për të shkruar kjo linjë e nuk code-- linjë të kodit. Ajo do të jetë linja të shumta të kodit. Kur duke filluar nga çdo lloj e pset bosh, çfarë është gjëja e parë që kam nevojë të mbani mend për të bërë? Audienca: [padëgjueshme]. ANDI Peng: Great Po. Përfshijnë. stdio.h. Shpesh kjo është një nga më lehtë gabimet e njerëzve do të bëjë kur ata janë shkrim, është se ata do të harroni që të përfshijë një Biblioteka e rëndësishme që ata kanë nevojë. Pra, nëse është e orarit të punës dhe ju jeni si, Unë nuk e di pse kodi im nuk punon. Mund të më thoni pse kjo nuk është duke punuar? Ne jemi duke shkuar për të thënë e keni #include? Ju duhet të #include atë. NE RREGULL. Pra, ne kemi marrë standardin I / O këtu. A është kjo e vetmja bibliotekë ne jemi duke shkuar për nevojë këtu? Çfarë tjetër do të shkojmë të bëjmë? Më vjen keq. Dikush vetëm piskat atë? Audienca: [padëgjueshme]. ANDI Peng: Nuk ju shkoni. NE RREGULL. Dhe si mund të shkoj në lidhje me fillimin e çdo lloj e funksionit, çdo lloj funksioni kryesor brenda programit tonë? Int main. NE RREGULL. Çfarë kam vënë brenda këtu? Cila është gjëja e parë që ju doni të bëni? Në qoftë se ne duam që të merrni një string nga përdoruesit, çfarë do të kemi për të bërë në këtë linjë të parë? Na vjen keq, ju djema vetëm ndjehen të lirë për të folur dhe me zë të lartë. Vetëm thirrura nga çfarëdo. Audienca: Pyetni përdorues? ANDI Peng: Si mund ta bëjmë këtë? Ask-- jam duke shkuar për të tipit "të kërkojë nga shfrytëzuesi"? Audienca: Printf. ANDI Peng: OK. Printf. Çfarë unë dua të printf? Audienca: Type në diçka. ANDI Peng: Ashtu si kjo? Guys, pretendon sikur unë jam një kompjuter. Fizikisht më thoni çdo hap që unë duhet të shkruani në këtu? Jam duke bërë diçka të gabuar? A duhet të keni shtypur diçka? Audienca: Ju duhet kuotat. ANDI Peng: Unë kam nevojë për kuotat? NE RREGULL. NE RREGULL. Audienca: Dhe pastaj linja e re. Pikëpresje. ANDI Peng: pikëpresje? NE RREGULL. Të mirë. Audienca: Dhe ndoshta specifiko se ju dëshironi që ajo në Fjala? ANDI Peng: Great. Ju djema qesh me mua harruar për të vënë një pikëpresje. Unë ju garantoj diku në rrjedhën e kësaj klase, ju do të harroni të vënë a pikëpresje, dhe do të ju merr tre orë të kuptoj se pse kodi juaj nuk është duke punuar. Kjo ka ndodhur për të gjithë ne. Kjo ndoshta do të ndodhë me ju. Merrni në një zakon të mirë të përdorimit të pikpresje. NE RREGULL. Audienca: A doni për të bërë backslash në? ANDI Peng: Sigurisht. A doni të bëni backslash në? Audienca: Po. ANDI Peng: Great. NE RREGULL. Çfarë të bëj tjetër? Audienca: Get string. ANDI Peng: Get string. Pra, çfarë mund të tipit? Dikush? Audienca: String s. ANDI Peng: String s. Audienca: getString. ANDI Peng: Dikush, mund të më thoni ku kjo getString funksion po vjen nga? Audienca: string. ANDI Peng: string? Ju mendoni se është nga string? Audienca: [padëgjueshme]. ANDI Peng: Nuk ju shkoni. Është nga CS50.h. Nëse jeni të hutuar gjithmonë në ku një skedari bibliotekë është ose një header skedar është, google fjalë për fjalë string, dhe unë do t'ju them çfarë janë të gjitha funksionet që janë në string. NE RREGULL. Pra, tani që unë kam krijuar një varg dhe unë kam menjëhershëm të përdoruesit për të, Unë e kam ruajtur atë në një variabël quajtur s, çfarë duhet të bëj tani? Audienca: Kontrolloni nëse është në Fjala. ANDI Peng: Na vjen keq? Audienca: Kontrolloni nëse është në Fjala. ANDI Peng: Në rregull, le të bëjë atë. Si ta bëj këtë? Në fakt, për qëllime i klasës të drejtë tani, ne jemi vetëm duke shkuar për të supozojmë se çdo gjë që ne input është tashmë në Fjala. Nëse dëshironi të shikoni, ju do të vetëm të shtoni një deklaratë të kushtëzuar që kontrollohen, që u zhvillua me anë të çdo element i vetëm grup dhe kontrolluar nëse është në mes të vlerave të caktuara. Unë harrojmë se çfarë numri i vlerave të vogle janë. Ju mund të shikoni atë deri në tryezë ASCII. Por, vërtet, kjo është një pikë të vërtetë të mirë. Por tani për tani, ne jemi vetëm duke shkuar për të supozojmë se të gjitha vargjet ne input janë në Fjala. NE RREGULL. Pra, si do të shkoj në lidhje me ky problem tjetër? Audienca: Për lak. ANDI Peng: Për lak? NE RREGULL. Më tregoni se çfarë të shkruani. Audienca: Për int i barabartë me 0. ANDI Peng: OK. Audienca: Oh, në të vërtetë, atëherë ju të bëjë një presje dhe të bëjë n barabartë strlen. ANDI Peng: Gjëja Pra rëndësishme që unë mendoj se ajo është vënë re këtu është se ne nuk duhet të them int n për herë të dytë ne e bëmë këtë. Vetëm e di se në një për lak kur ju jeni deklaruar, ju në fakt nuk keni nevojë int e hera e dytë që ju të bëni një ndryshore. Ju mund të thoni n strlen. Audienca: E s. ANDI Peng: s. NE RREGULL. Audienca: Pastaj një pikëpresje. ANDI Peng: Sigurisht. Audienca: Dhe pastaj [e padëgjueshme] n. Pastaj i ++. ANDI Peng: Great. Në rregull. Çfarë duam brenda këtë për lak tani? Mos harroni, në qoftë se ne jemi duke shkuar për të drejtuar përmes një varg dhe të drejtuar përmes një rrjet, ne duam të kontrolloni gjërat në të. Çfarë do të shkojmë në nevojë? Kjo është lloj i pjesës ndërlikuar tani. Çdokush kanë një mend? NE RREGULL. Pra, së pari, si nuk kemi edhe qasje? Si nuk kemi as kontroll të parë ose hyrë në një element në rrjet? Si e bëjmë këtë? Çfarë është simbol që ne përdorim për të bërë këtë? Cili është emri i kësaj grup quajtur? Ajo që quhet s, e drejtë? Mbani mend, çdo varg është gjithmonë një koleksion. Kllapa Pra s unë, e drejtë? Sepse kjo është vlera e tanishme ose vlera e indeksit ne jemi të kontrolluar. Dhe ne jemi duke shkuar për të vendosur se i barabartë to-- ne duam një vlerë të vogle, e drejtë? Ne duam të kthehet që lower-- vjen keq, ne duam një uppercase. Ne duam ta kthyer vogle Vlera në një uppercase. Dhe kështu like-- unë jam i keq, si e ke emrin? Audienca: Heidi. ANDI Peng: Na vjen keq? Audienca: Heidi. ANDI Peng: Heidi. Si Heidi tha Fillimisht, ne jemi me siguri do të ketë nevojë the-- ne jemi ndoshta do të duhet të zbres 32 nga çfarëdo charc që është, e drejtë? Sepse në një ASCII tavolinë, diferenca në mes të një shkronja e vogël dhe një letër uppercase është 32. Pra, kur ne jemi duke e bërë këtë, ne jemi me siguri do të duan të zbres 32, e drejtë? Pra, ne jemi duke shkuar për të bërë S i. E kupton se të gjithë e pse unë e bëri atë? Sepse tani, në grup tonë, ne jemi të kontrolluar indeksi 0TH, e drejtë? Dhe në indeksin 0TH e string, kjo është karakteri i parë. Dhe se karakteri ne jemi duke shkuar për të supozojmë se është Fjala. Në qoftë se ne duam të bërë atë uppercase, ne duhet të zbres 32 nga vlera e saj, sepse në ASCII tonë tabela, kjo është se si ne të merrni atë të ardhshëm përkatës Vlera që e bën të uppercase. A të gjithë e kuptojnë se? Po. Audienca: Mund edhe ju e vogle një minus-- ANDI Peng: Yeah, kështu që kjo është vërtetë me të vërtetë mirë. Unë do të kthehem në atë Pyetja pas ne e bëjmë këtë. Po. Dhe pastaj në qoftë se unë dua të të shohim se çfarë po ndodh, Unë jam ndoshta do të dëshironi të shtypura, e drejtë? Dikush më tregoni se çfarë Unë dua të shtypura këtu. Audienca: printf për qind c backslash [e padëgjueshme]. Kjo është vlera e [padëgjueshme] s i. ANDI Peng: s i, keq? Audienca: [padëgjueshme]. ANDI Peng: Unë nuk e di. Çfarë mendoni ju? Audienca: E pra, unë wouldn't-- I guess Unë nuk do të bring-- Unë do të marrë atë jashtë brenda, sepse [e padëgjueshme]. ANDI Peng: Oh, ju do të keni bërë këtë? Audienca: Po. ANDI Peng: Le të lërë atë mënyrë ajo është, dhe unë do të shpjegoj se pse më vonë. Mos harroni, madje edhe kur ju kanë një mbajtës vend, ju doni të vënë kllapa rreth tij. Në rregull. Pra kjo duhet të jetë një funksion të fortë këtu. Le të drejtuar atë dhe të shohim nëse ajo harton. Bëni sipërme. Uh-oh. Kjo nuk do të duken shumë e mirë. Pse po ndodh kjo? Ashtu si me çdo gabim, ju doni të shkoni mbrapa dhe të fillojnë me një të parë, sepse zakonisht shkakton një gabim shumë gabimeve të tjera pas saj. Këtu ne shohim upper.c: 18: 25, e cila tregon mua në këtë program të quajtur upper.c, on line 18, gabim implicite deklaruar biblioteka e funksioneve strlen me llojin blah unassigned--, unë nuk e di çfarë po ndodh pas kësaj. Gjithë kjo është thënë me të drejtë tani është se diçka po ndodh në strlen. Dhe kompjuteri e hutuar, sepse Është si, unë nuk e di se çfarë strlen është? Çfarë bën që ndoshta t'ju them se ju jeni të humbur? Audienca: Ju jeni të humbur [e padëgjueshme]. ANDI Peng: Ju jeni të drejtë. Pikërisht. Pra, ky është vendi ku është rëndësishme për t'u siguruar se çdo funksion ju përdorni në tuaj Kodi është që header saktë paraqesë për bibliotekën, ose tjetër ju jeni do të merrni shumë gabime dhe kodi juaj nuk po shkon të dinë se çfarë po ndodh. Pra, ne jemi duke shkuar për të përfshirë string këtu. Tani kur ne përpiqemi për të hartuar e sipërme. Të hartojë saktë. Le të drejtuar këtë program. Pra shkruani diçka në shkronja jokapitale. Çfarë mendoni ju djema doni të shkruani? Thirrura nga diçka. Të gjithë të drejtë, Charly vetëm ecte në. Ne do të shkruani emrin Charly së. Charly në Fjala. Dhe shpresojmë se, me shpresë, kjo është do të bërtas jashtë dhe nxjerr nga goja Charly në uppercase. Yay! e të gjithë të kuptojnë se si Unë shkova për të zgjidhur atë? Mënyra se si unë mund të manipuluar duke përdorur integers për të zgjidhur diçka që Unë dua të bëj në vargjet, sepse personazhet dhe integers mund të referohet në të njëjtën mënyrë, sepse e hartës ASCII. Pra, që të kthehen në pikën tuaj, në qoftë se unë të kërkuar për të vënë këtu në vend të 32 uppercase Një minus vogle një ashtu si kjo, që do të punojë në mënyrë të barabartë, si dhe, sepse kjo është thjesht vetëm Dallimi në mes të këtyre dy vlerave. Nëse unë dua të bëj këtë Charly again--. Oh no. Unë mendoj se ne kemi shkuar rrugën e gabuar, vërtet? Audienca: [padëgjueshme] vogle a. ANDI Peng: Nuk ju shkoni. Yep. Dhe jashtë pështyn Charly. Pra, kini kujdes kur ju jeni duke zbritur vlerat për të kujtuar të cilat një është më i madh se tjetri. Për shembull, këtu kam harruar se vogle një është në fakt më i madh se uppercase A. Pra, kur unë u përpoq të zbres atyre mënyra të tjera rreth, kam negative 32. Dhe kompjuteri im ishte si, Unë nuk e di se çka është. Është probabilitet vetëm disa të rastit vlerë e cila nuk është shumë e mirë. Dhe prandaj sigurohuni që ju jeni zbritur në gjatësinë e saktë për të gjetur karakterin që ju dëshironi. NE RREGULL. A është dikush i hutuar se si ne shkoi për të shkruar këtë funksion? NE RREGULL. Pra, në fakt, një funksion tashmë ekziston në bibliotekë të quajtur ctype.h. Quajtur ctype.h i bibliotekës. Ky funksion të vërtetë është shkruar tashmë për ju. Ajo që quhet të sipërme. Dhe kështu për qëllime të këtë pset, ju do të jeni për të gjetur se ju me të vërtetë dëshironi të përdorni një shumë e funksioneve të përmbajtura brenda bibliotekës ctype. Të sipërme, të ulët, është e sipërme, është lower-- ato janë të gjitha funksionet që ju do të jetë në gjendje të përdorin shumë, shumë shpejt në kodin tuaj që bën pikërisht atë që kjo e bën. Ne shkruam se si për të kthyer një varg të uppercase. Por kjo është në të vërtetë kodi që dikush tjetër ka shkruar dhe që ju mund të hyni nëpërmjet një funksion të ndryshëm. Po? Audienca: Pra, ju vetëm kopjoni një në atje dhe të bëjë atë për çdo letër të vetme? ANDI Peng: Po, sepse unë nuk bëj kujdesen për vlerat e një. Unë vetëm kujdes se ndryshimi mes tyre është 32, e drejtë? Dallimi në mes Fjala b dhe uppercase B është gjithashtu 32. Dhe dallimi në mes të C dhe uppercase C është gjithmonë 32. Unë vetëm duhet të kujdesen për Diferenca midis të dyjave, sepse të gjitha letrat ndjekin të njëjtin model, e drejtë? Nëse unë kam dallimin midis një prej tyre, Unë e di se çfarë është dallimi midis të gjithë prej tyre është. Pyetje e mirë. Po. Gjithkush mirë? NE RREGULL. OOP. NE RREGULL. Pra, një tjetër koncept që është do të jetë shumë i dobishëm si ju të vazhdojë të zhvillojë Kodi juaj është kjo ide e krijimit të funksioneve ose abstraksion. Deri tani, ne kemi marrë të gjithë algjebër. Në algjebër, ju jeni mësuar se ka kjo gjë e mrekullueshme të quajtur një funksion makine, ku në qoftë se ju input një lloj numri, ajo shkon përmes këtij funksioni të mrekullueshme dhe jashtë pops një dalje tjetër, e drejtë? Në kod, e njëjta gjë ndodh në çdo lloj funksioni. Kështu që unë mund të fizikisht shkruani në trupin tim të kodit tim një deklaratë kryesor që në fakt e bën çfarëdo trupi i kodit është duke bërë. Por jashtë kësaj, unë gjithashtu mund të shkruaj funksione të ndryshme që bëni shumë gjëra të ndryshme. Për shembull, ne kemi tashmë filloi duke përdorur disa prej tyre. Printf-- se është një funksion që dikush tjetër tashmë ka shkruar se ne mund të telefononi në kodin tonë. Për upper-- në këtë rast, upper-- është një tjetër funksion ne kemi shkruar se ne mund të telefononi në kodin tonë. Dhe kështu që unë mendoj pse ne kemi edhe funksione? Pse nuk kemi vetëm pllum atë gjitha në të njëjtin drejtim të kodit? Kjo e bën të lehtë për të gjithë. E pra, arsyetimi pas se është, para së gjithash, organizatës. Është me të vërtetë i bezdisshëm duke shkuar përmes kodit dikujt dhe një funksion si printf. Në qoftë se ju djema të vërtetë e dinin se çfarë Funksioni printf shkaktuar për të shkruar, kjo është, si, 1000 rreshta të kodit. Në qoftë se çdo herë kam kërkuar të printf diçka, Unë kisha për të shkruar 1000 rreshta të kodit, që do të jetë me të vërtetë i bezdisshëm për të lexuar, e drejtë? Kjo është arsyeja pse ne kemi vetëm krijuar këtë funksion abstrakte se ne kemi tashmë dikë tjetër ka shkruar diku tjetër. Dhe çdo herë kemi nevojë të përdorin atë në Kodi ynë, ne vetëm duhet të them printf. Dhe kjo është në gjendje të përdorni funksionin dikush tjetër ka shkruar në kodin tonë. Kjo e bën më të lehtë organizativ për të lexuar kodin. Së dyti, kjo është thjeshtëzimi. Ajo thjeshton hapat që kemi për të marrë për të zgjidhur problemin tonë. Printf, funksionon si printf, funksionon si të sipërme janë të gjitha gjërat që na lejojnë të thjeshtojë kodin tonë poshtë kështu që është më e lehtë. Dhe gjëja e fundit që është Ripërdorimi. Pra, fakti që kemi një funksion i quajtur printf që mund ta quajmë shumë të ndryshme herë dhe lejon atë të jetë reusable. Nëse unë do të shkruaj printf, Unë vetëm shkruaj një herë. Ajo ekziston vetëm në atë një vend. Në qoftë se unë të kërkuar për të bërë atë përsëri, unë do të duhet të kopjoni dhe ngjisni gjithë që në përputhje tim të dytë të kodit. Kjo është arsyeja pse në qoftë se ne krijojmë një funksion që ekziston jashtë kryesore tonë, ne vetëm mund të telefononi në ajo dhe ripërdorimin atë sa herë që ne kemi nevojë në mënyrë që ajo është shumë më e lehtë për ne si programe për të shkruar. Pra, mënyra që ne në fakt do të shkruaj një funksion është shumë e ngjashme, e drejtë? Kjo është lloj i parë shembull në të cilën ne do të shoh një reagim i funksionit në një stil ndryshme se zbrazëti int tonë kryesore. Në këtë rast, në qoftë se unë të kërkuar për të shkruaj një funksion të quajtur q, e drejtë? Dhe vlera int këtu është e gjitha thënë mua, çfarë unë dua këtë funksionojë për t'u kthyer tek unë? Nëse unë dua të kubike një numër të plotë, Unë do të duan të dhëna. Këto janë parametrat. Unë jam duke shkuar për inputet një vlerë të tipit int. Dhe unë jam duke shkuar për të kthyer Një tjetër vlerë lloj int. Dhe këtu, si ti mund të shohim, të gjitha unë jam duke bërë është cubing çfarëdo input ime është si prodhim time dhe kthyer atë. Pra, gjithë ky funksion nuk është merr një lloj numër të plotë. Ai e shumëfishon atë në vetvete dy herë në mënyrë që ajo cubes ne fuqi. Dhe pastaj ajo kthehet çfarëdo që prodhimi është. Pra, në këtë rast, është dy linja Kodi që ne kishim për të shkruar shtesë. Por nëse ne të kërkuar për të thirrur mbi këtë shumë herë, kjo është një shumë më e lehtë për të tipit se një Linja e drejtë këtu që është në kubike se duhet të kalojnë nëpër shumë herë. Kështu që mënyra që në thelb ndonjë formatimit për çdo lloj funksioni do të ekzistojë është si këtu. Pra, ne kemi emrin funksionit. Në këtë rast, ajo që quhet kubike. Dhe ne atë emër kubike sepse është e lehtë për të kujtuar. Ju mund të emrit atë katror dhe ajo në fakt mund të Cubed. Nuk ka rëndësi. Vetëm një emër që ju jeni caktimin funksionin tuaj. Kjo e drejtë këtu, int, është lloj parametri që ju nevojitet. Pra, çfarë e bën këtë funksion nevojitet në mënyrë që të veprojë? E pra, ajo ka nevojë për një kontribut. I quajtur atë input. Ju mund atë emër çdo gjë që ju dëshironi. Por kam nevojë për diçka të tipit int. Ajo do të vërtetë të ekzekutuar çdo gjë që është brenda këtu, trupi i funksionit. Dhe pastaj lloji kthimi të drejtë këtu, kjo int-- gjithë kjo është thënë mua është se ky funksion është do të kthehen tek unë në int. Kështu ajo do të marrë në një int, dhe ajo do të ju jap përsëri një int. A e kuptojnë të gjithë si formatimin e këtij lloji funksionon? Ftohtë. NE RREGULL. Pra, nuk do të jetë i shqetësuar nëse kjo duket një e drejtë pak abstrakt tani. Kjo është diçka që ne do të flasim për. Ne do të zhyten më thellë në më vonë në kurs. Mënyra se çdo lloj i nivelit më të lartë abstragim e këtyre gjërave punës është se, në të kujtesës, në kompjuterin tuaj, çdo gjë është ruajtur në këtë lloj i rafte, të them. Pra, deri atje në krye. Unë nuk e di nëse ju djema mund të shihni se edhe. Unë do të përpiqemi për të zmadhuar. Këtu në krye, ne kanë tekstin fizike nga ajo që kompjuteri është interpreting-- të gjitha zero dhe ato që ekzistojnë brenda kompjuterin tonë. Dhe pastaj ne kemi nisur të dhënave dhe të dhënat e uninitialized, ajo që ne e quajmë variabla globale. Kështu variablave që ekzistojnë në të gjitha programet dhe të gjithë të tërë tuaj, në thelb, kodi. Nuk shqetësohet nëse ju djema janë lloj i paqartë për këtë. Kjo nuk ka rëndësi tani. Dhe pastaj ne kemi se çfarë është quajtur një grumbull në një pirg. Mendoni për një pirg fjalë për fjalë si vetëm si një pirg të gjërave, një pirg të ndryshme gjëra duke u shtyrë në krye e njëri-tjetrit që të ruajë të ndryshme të Variablat dhe sintaksa brenda kodin tuaj. Dhe pastaj këtu në fund fare, ne kemi variablat e mjedisit të asaj që ju jeni ekzekutimin brenda vetëm linjë juaj pak e kodit. Dhe ne jemi vetëm duke shkuar për të zmadhuar në në pjesën aktuale rafte. Kështu që këtu, në qoftë se ne ishim për ta zmadhuar në në vetëm këtë zonë të rafte, kjo është ajo që duket si. Dhe kjo është në fakt shumë e rëndësishme kur ju djema flasim për funksionet, sepse njoftim se kujtesës e kompjuterit tuaj po ruajtjen variablat dhe funksionet dhe parametrat e dy tuaj Funksioni dhe variablave tuaja kryesore në vende të ndryshme. Deri tani, kryesor është funksioni aktual që ju jeni duke ekzekutuar në një kod. Ju keni parametrat e tij ruhen këtu dhe variablave të saj lokale ruhen këtu. Variabël lokale thjesht do të thotë çdo variabël se ekzistojnë vetëm brenda këtij funksioni. Dhe në krye të saj, ju e keni këtë Funksioni i veçantë i quajtur kubike. Ju keni kjo është parametrat si dhe ato vendasit. Dhe arsyeja që ju mund të të shihni këtu është se çfarë ndodh kur kubike merr në një vlera nga funksioni juaj kryesor është se në fakt ajo është kopjimit se mbi. Pra, nëse kam kërkuar për të kubike 2 dhe 8 të kthehet, se 2 është futur në fakt si një parametër dhe kjo është kopjuar mbi kështu që ju të keni atë ekzistuese në dy vende të ndryshme në kujtesë. Dhe ju duhet të jenë shumë të kujdesshëm në kujtuar që një nga ata ju jeni në të vërtetë duke manipuluar. Dhe një shembull i asaj që ndodhi që do të jetë shumë, shumë e keqe ekziston e drejtë këtu. Në mënyrë të drejtë këtu, unë kam marrë, në teori, një program të drejtë këtu, një funksion kryesor që unë jam deklaruar një int x është e barabartë me 1. Unë jam deklaruar një tjetër y int barabartë 2. Dhe atëherë unë jam drejtimin e tij përmes këtij funksioni quajtur shkëmbim, ku unë të supozojmë se kjo është shkëmbejnë dy vlera. Dhe atëherë unë jam duke shkuar për shtypura e tyre, e drejtë? Kjo është ajo që unë dua ky program për të bërë. Pra, le të zbresë dhe të marrë një sy. Pra, nëse unë në fakt shkruaj një tjetër funksion, si ju mund të shihni, ne kemi funksioni ynë kryesor këtu. Dhe pastaj ne kemi tonë Funksioni i dytë këtu. Shkëmbim pavlefshme. Void thjesht do të thotë se kjo është nuk do të kthehen asgjë. Emri funksion është quajtur shkëmbim, dhe kjo është duke shkuar për të dy variablave konsum, int a dhe int b, nga tuaj [padëgjueshme] funksion. Pra, në thelb këtu, ne jemi kalimin x dhe y në këtë funksion. Dhe në qoftë se ne ishim të krijuar this-- kështu që ne duam për të krijuar një vlerë të përkohshme, e drejtë? Ne jemi duke shkuar për të caktojë që për një. Dhe pastaj një do të tani të barabartë b. Dhe b do të jetë përsëri ku vlera e temp ishte, i cili është një, sepse kur ju doni të bie në ujdi gjëra, ju nuk mund të ashtu si bie në ujdi tyre. Ju duhet të mbani një jashtë këtu në mënyrë që të kujton se çka është, për shkak se një herë ju bie në ujdi një, ju harroj çfarë se vlera origjinale ishte, e drejtë? Pra, në teori, ky program duhet të punojnë, e drejtë? Në qoftë se unë të kërkuar për të bie në ujdi dy, ata duhet të bie në ujdi. Pra, le të drejtuar atë dhe të shohim nëse ajo punon. Pra, si ju djema mund të shihni, x dikur ishte 1 dhe y ishte një herë 2. Dhe në qoftë se unë të shtypura it out, x është ende 1 dhe y eshte 2. Hmm, ky program nuk duket të jetë duke punuar në mënyrën që unë dua atë për të punuar. A ka dikush të duan të marrin një e shtënë në guessing pse kjo po ndodhte? Ajo ka të bëjë me mënyrën se se gjëra të ndryshme janë të ruhet në vende të ndryshme në kujtesë. NE RREGULL. Pra, ju djema nuk keni për t'u shqetësuar shumë për këtë të drejtë tani. Por e di se kubike e lokale Variablat ishin një dhe b, sepse këtu në funksion tonë, ne kemi deklaruar a dhe b si variablat që ekzistojnë brenda kubike, se funksioni. Por si ju mund të shihni, parametrat që ajo është duke marrë në po ruhen këtu. Por ne nuk ishin në të vërtetë kthyer asgjë. Ne nuk ishin në fakt ndryshon x dhe y. Ne ishim vetëm duke ndryshuar a dhe b. Ne kishim kopjuar X dhe Y në diçka që quhet a dhe b. Por ne fakt nuk manipuluar x dhe y vetë. A ju djema duke parë se si kjo po ndodh? Është se ne kemi kopjuar thjesht atë mbi, por ne nuk kemi mbajtur në fakt gjurmët e ku ata ishin në kujtesën. Dhe kështu që tani kompjuter është në kërkim, oh, unë kam të drejtuar këtë gjë me anë të ky funksion i bukur. Por x dhe y jane ende x dhe y. Asgjë nuk ka ndodhur me ata për shkak të faktit që këtyre parametrave dhe ndryshoret lokale janë ruajtur në një tjetër vend në kujtesë. Dhe kjo është një nivel më të lartë koncept që ne do të të fillojnë të shohim më vonë në kurs. Por vetëm e di se kjo është një problem që mund të ndodhë dhe se ne do të kuptoj se mënyra se si të merren me këtë më vonë në kurs. NE RREGULL. Në rregull. Pra, koncepti i fundit ne jemi vërtetë do të mbulojë që do të jenë të dobishme për pset këtë javë janë ato që quhen argumente command line. Pra, Rob në leksionin e tij shkuan përmes lloj shkurtimisht se si këto punë. Në thelb e di se kur ju jeni me shkrim si një funksion kryesor, kur ne shkroi funksionet e para në të kaluarën, kemi pasur pavlefshme int main. Dhe arsyeja kishim pavlefshme atje ishte për shkak se programet tona nuk ka duhet të vlerave të dhëna për të drejtuar, e drejtë? Kur unë u zhvillua Mario, unë nuk kam nevojë për që në fakt vetëm lloji në diçka kur unë u zhvillua Mario. Unë përdoruesit mund të sjellë më vonë. Por kjo nuk do të jetë gjithmonë rasti. Për shembull, në këtë Problemi jave vendos, ju jeni do të të kërkohet që, në Përveç drejtimin programin tuaj, ju jeni do të duan për të dhëna disa gjëra në drejt si ju të drejtuar programin tuaj. Pra, mënyra që ne bëjmë që quhet një argument command line, e cila është si një argument ju mund të dhëna drejtpërdrejt si ju jeni duke u përpjekur për të drejtuar programin tuaj. Pra, simbol për këtë, kjo është goxha e ndërlikuar-looking, por kjo nuk është e vërtetë se vështirë. Pra int main-- kjo është vetëm funksioni juaj kryesor. Në argc presje kllapa string argv. Pra, të gjitha që është thënë është se kjo int argc-- gjithçka që është thënë ju është se ato janë numri i Argumentet kompjuteri duhet të presin. Pra, një gjë që është me të vërtetë e rëndësishme për të mbajtur gjurmët e është emri fizik i programit tuaj llogaritet si një nga ato argumente. Pra, nëse kam kërkuar që të ketë programin tim drejtuar plus një linjë shtesë command Argumenti, unë jam në të vërtetë do të ketë dy. Argc është në të vërtetë do të jetë dy. Dhe pastaj string argv bracket-- gjithçka që është bërë, ajo është duke i dhënë mua një sërë vargjet që është do të vetëm të shfaqur dhe ruajtur atë të gjitha këto argumente command line janë. Kështu për shembull, nëse kam kërkuar që të ketë këtë Programi, ./copy infile outfile, e drejtë? Kjo është vetëm një komandë tipike Linux. Çfarë në të vërtetë është argc? Sa argumente command line a ka të vërtetë në këtë? E gjithë kjo nuk është të bëjë një kopje të një infile e emrit të një skedar dhe ajo kopje atë në një tjetër fotografi, e drejtë? Kjo është e gjithë kjo është bërë. Siç mund ta shikoni, unë jam duke bërë atë në një rresht të vërtetë pa pasur nevojë të programit. Çfarë është argc ynë në këtë rast? Sa shumë argumente kemi? Audienca: Tre? ANDI Peng: Kemi tre, saktësisht. Pra, kjo është shumë intuitiv për thjesht mendoj se kjo është vetëm infile dhe outfile. Por e di se emri fizik i programi ju jeni duke akuza si një. Pra, në këtë rast, argc është në fakt tre. Si në lidhje me, çfarë është argv 0? Mos harroni, të gjithë të argumente command line janë ruajtur në një grup të strings. Pra, nëse unë të përpiqet për të hyrë në atë, çfarë do argv kllapa 0 jepni? Audienca: [padëgjueshme]. ANDI Peng: Pikërisht. Ajo do të më jepni dot çaj kopje, sepse kjo është element 0, The Elementi i parë i vektorit tim. Po në lidhje me argv 1? Audienca: Infile. ANDI Peng: Infile, pikërisht. Po në lidhje me argv 2? Audienca: Outfile. ANDI Peng: Outfile. Kjo është pak i ndërlikuar tani. Çfarë mendoni ju djema mendoni argv 3 do të jetë i dhënë mua në qoftë se unë u përpoq për të shtypur atë jashtë? Audienca: [padëgjueshme]? ANDI Peng: A ju keni një dorë lart? Po. Audienca: Një alternativë. ANDI Peng: Pikërisht. Pra, mos harroni në leksion që ne kanë në fund të një diçkaje garë quhet terminator null? Ne do të merrni në këtë edhe më tej në klasë. Por e di se në simbol, mënyra kompjuterin tuaj e di se kjo është fundi e array është se ajo vë diçka që quhet një null terminator ose një dash zero. Pra, nëse ju përpiqeni për të hyrë në argv 3, ju jeni duke shkuar për të goditur këtë dash 0. Kjo është edhe më e një pyetje mashtrim. Po në lidhje me argv 4? Pra, kjo është terminator kaluar null, e kaluara kufijve të array tonë. Çfarë mendoni ju se do të ndodh kur ne përpiqemi të bëjmë atë? Audienca: [padëgjueshme]? ANDI Peng: Na vjen keq? Thonë se një pak më fort? Audienca: [padëgjueshme]. ANDI Peng: Po. Ky është emri i Zona e ju do të më shumë gjasa të marrë. Por e di se argv 4-- që ju lejon për të hyrë vende në kompjuterit tuaj kujtesës që ju të vërtetë nuk duhet të jetë i prekur, sepse tani ju e dini se çfarë është argv. Ju e dini se kjo është një grup i madhësisë 3 se ka kopje dot, infile dhe outfile. Nëse ju provoni të shkoni aq larg përtej kësaj se ju jeni e kaluara terminator null, kompjuteri juaj ka të ngjarë diçka të ruajtura në argv 4. Dhe ju me të vërtetë nuk duhet të jetë lejuar qasje në argv 4, sepse ju keni një fotografi kabineti dhe ju jeni vetëm lejuar qasje në këto tre rafte. Por nëse ju përpiqeni të arritur mënyrë përtej raft e ku janë të lejuara, ju jeni do të fillojë messing me gjëra të tjera në kujtesën e kompjuterit tuaj. Kjo do të jetë me të vërtetë, me të vërtetë keq. Pra, vetëm e di se. Jenë shumë të kujdesshëm që ju mos vetëm rastësisht të fillojë qasjen elemente në një grup që nuk kanë qenë në atë që ju kërkuar për të krijuar. Yep. NE RREGULL. Pra, ne jemi duke shkuar për të bërë një tjetër shembull terminal këtu. NE RREGULL. Pra, Rob shpejt në leksion ditë të tjera shkuan nëpër këtë shembull, ku ai kishte int main int argv argc string kllapa, e cila është thënë mua se unë jam do të ketë argumente command line. Ai ka, nëse argc barabartë barabartë 2-- kujtohet, është e barabartë me të barabartë do të thotë krahasim. Në qoftë se kjo është e barabartë me 2, atëherë unë jam i do të shtypura hello, çfarëdo e parë element i vektorit është. Print tjetër, Hello World. Çfarë është kjo do të ndodhë në thelb? A mund dikush të shpjegojë vetëm në Shqip çfarë ky program është duke bërë? Po. Audienca: Nëse dikush shtypur në një komandë dhe tha emrin e tyre të parë dhe të fundit, ajo nuk do të vetëm të shtypur së pari një dhe të thotë: hello, çfarëdo emri juaj i parë është. ANDI Peng: OK, le ta drejtuar atë. Kështu për shembull, në qoftë se unë do të bëj kjo skedë bëjnë përshëndetje to-- përshëndetje to-- çfarë ju doni mua për të dhëna? Audienca: Emri dhe mbiemri. ANDI Peng: Emri dhe mbiemri? Hapësirat? Audienca: Po. ANDI Peng: A mund të tregoni dikush mua tani, çfarë është argc? Vetëm e drejtë atje? Oops, sorry. Më lejoni të kthehem. Sa argumente command line are-- ju djema nuk mund të vërtetë shoh. Por unë do të përpiqemi për të zmadhuar. Unë jam duke u përpjekur. Po, ka tre, apo jo? Është dot Slash hello, është Andi, dhe kjo është Peng. Pra, çfarë ju djema mendoj se kjo Programi do të jetë shtypjen jashtë? Oh. Oh me falni. Emri i gabuar. Është shtypje jashtë, Hello World. A ka dikush duan për të shpjeguar pse kjo po ndodh? Po? Audienca: [padëgjueshme]. ANDI Peng: Pikërisht. Kështu që këtu, janë të kushtëzuara është, në qoftë se argc barabartë është e barabartë me 2. Pra, vetëm në rast se ka dy argumente command line. Atëherë unë jam duke shkuar për të shtypur, Përshëndetje, çfarëdo qoftë ajo. Por tjetër, unë jam duke shkuar për shtypura vetëm, përshëndetje botën. Pra, nuk dua dikush për të më jepni një shembull se si unë do të jetë në gjendje që në fakt të marrë atë për të shtypur vlerën e argv 1? Çfarë do të më duhet për të dhëna këtu? Vetëm një gjë, e drejtë? Sepse dot përshëndetje për tashmë akuza si argument i parë. Kam vetëm një më shumë. Pra dot përshëndetje qoftë se unë vetëm bëj Andi. Përshëndetje, Andi. A e kuptojnë të gjithë pse kjo po ndodh? Po. Audienca: Pra, hapësira mes line-- komanda është ajo [e padëgjueshme]? ANDI Peng: Jo. Pra, hapësirë ​​në një linjë komande Argumenti, x, për të të treguar kompjuterin tuaj se ky është fillimi i një varg të ri. Pra, string argv here-- Ajo ruan të gjitha urdhërimet e tua argumenteve të linjës në vargjet. Dhe kështu hapësira në command line argument-- gjithçka që bën është po ju them, kjo është në fund të një varg dhe kjo është koha për të lëvizur në një tjetër. Po. Kjo është shumë e rëndësishme për pset tuaj, sepse ju jeni do të jetë testimi këto. Pra, ka njeri të ketë ndonjë pyetje për këtë? OK, i ftohtë. Po? Audienca: Pra, arsyeja që ju do të vënë Calc integer argumenti vend e [e padëgjueshme] do të jetë kur të doni të shkruani informata shtesë [Padëgjueshme]? ANDI Peng: Po, pikërisht. Disa programe do të kërkojë nga ju të dhëna një argument command line që ai kalon në dhe që përdor kjo. Po. Audienca: Pra, çfarë nëse [e padëgjueshme]? ANDI Peng: E ​​pra, çfarë kam për të ndryshuar më pas në programin tim? Audienca: Vetëm 3. ANDI Peng: Pse është se ndodh, mendoni ju? Audienca: Sepse [e padëgjueshme]. Audienca: Ju do të duhet të ndryshojë atë në 2 [e padëgjueshme]. Audienca: 1 dhe 2. ANDI Peng: 1 dhe 2, saktësisht. Pra, në këtë rast, ju do të ndoshta duan të kenë dy printf statements-- ai që shtypur argv 1 dhe ai që shtypura argv 2. Këtu. Unë në fakt mund të bëj që të shpejtë të vërtetë. Nuk ju shkoni. Oh. Jo fare atë që keni kërkuar. Por në qoftë se ju djema bela rreth me formatimit, ajo do të dalë. Po. Ftohtë. Unë e di se ne jemi pak më të shkurtër në kohë. Por unë jam vetëm duke shkuar për të shpejt të kalojnë një minuta çift kalon nëpër helpful-- Audienca: Ju keni dy minuta. ANDI Peng: Unë kam dy minuta? Faleminderit. Disa këshilla të shpejtë pset. Pra, për këtë pset, unë rekomandoj, siç thashë, të gjithë për të lexuar spekulim. Ju do të jetë me shkrim tre një programs-- quajtur initials.c, një i quajtur caesar.c, një i quajtur vigenere.c. Disa këshilla të rëndësishme që ju djema të vërtetë duan për të mbajtur në mind-- kështu ka ky funksion quajtur atoi-- si unë doja të them, një Trois. E paqartë nëse kjo është në fakt se si ju thonë atë. Por e gjithë kjo është bërë, është e inputting. Ai konverton një varg në një int. Pra, një përfaqëson ASCII tek i integer. Kjo është vetëm konvertimin ASCII Vlerat për Integer vlerat. Pra mbani mend argv, array se dyqane të gjitha urdhërimet e tua vijë argumente të ajo ruan të gjithë si strings. Dhe kështu që nëse doni të jenë në gjendje të kanë një prej tyre të bëhet një numër i plotë, ju jeni do të ketë për të përdorur këtë vlerë këtu. Modulo, siç kemi mbuluar më herët në klasë sot, ju lejon që të ketë Pjesa tjetër e çdo gjë që ju keni. Pra, nëse kemi vërtetë, të vërtetë numër të madh në Cezarit, çfarë nëse ne kemi fund e një varg të Vigenere? Si po ju do të jetë në gjendje për të marrë atë për të përfunduar rreth? Nëse unë goditi z dhe unë dua ajo që të kthehen në një, si jam unë do të merrni që të përfundojë rreth? Ndoshta doni të përdorni modulo në atje diku. Së dyti, shfletoni rreth bibliotekën tuaj. ctype.h. Kjo është një bibliotekë të re ne kemi. Ju do të gjeni një shumë të vërtetë, të vërtetë isupper dobishme functions--, islower, toupper, tolower, isalpha, e të tjera. Të gjitha funksionet që do të jenë shumë të dobishme kur ju jeni duke u përpjekur të kuptoj se, është ky karakter një shkronja të vogla? Si mund ta kthyer këtë string në një shkronja kapitale? Të gjitha këto gjëra do të jetë shumë, shumë e dobishme për pset tuaj. NE RREGULL. Orari i punës janë sonte ora 8:00 deri 11:00 në klasë Teal nesër si dhe të mërkurën dhe të enjten natën. Orari i punës janë në Komuneve. Shumë ju sugjeroj djema të gjithë të filloni menjëherë, për shkak se ju nuk doni të jetë se fëmijë i cili të enjten natën ka probleme dorëzimin pset tuaj dhe është si, unë nuk e di se çfarë të bëni. Unë fillova, kam mbaruar, kam dorëzuar. Mundohuni të jepni vetes disa dhoma, sepse në probleme kodi gjithmonë ndodhin. Ju dëshironi të bëni të sigurtë që ju të jepni vetes shumë kohë të jetë në gjendje për të përfunduar psets. Ftohtë. Unë do të rri këtu rrotull. Audienca: A është kjo në internet tashmë? ANDI Peng: Unë nuk e di nëse kjo është në internet tashmë, por ajo do të jetë. Unë do të rri këtu rrotull nëse dikush ka ndonjë pyetje tashmë. Faleminderit për të ardhur.