1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [Java 2, vazhdoi] 2 00:00:02,270 --> 00:00:04,220 [David J. Malan, Universiteti i Harvardit] 3 00:00:04,220 --> 00:00:06,880 [Kjo është CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 Dakord. Kjo është CS50, dhe kjo është fundi i javës së 2. 5 00:00:10,990 --> 00:00:14,410 Nëse ju presin që të jenë të uritur rreth kësaj kohe nesër, 6 00:00:14,410 --> 00:00:18,620 e di se ne do të mblidhet nesër si një grup i vogël, e enjte, 13:15. 7 00:00:18,620 --> 00:00:21,360 Nuk është kjo URL këtu nëse ju dëshironi të RSVP. 8 00:00:21,360 --> 00:00:26,740 Hapësira është e kufizuar, kështu që ju lutemi falë nëse formulari është plotësuar nga koha që ju të plotësoni këtë. 9 00:00:26,740 --> 00:00:29,300 Një tjetër URL, edhe pse, që mund të jetë me interes është kjo. 10 00:00:29,300 --> 00:00:32,369 Në vetëm rreth një muaj, kursi do të vihen në dispozicion 11 00:00:32,369 --> 00:00:36,890 gjithë më gjerësisht nëpërmjet EDX, nëpërmjet të cilës folks në internet do të jetë në gjendje të ndjekin së bashku, 12 00:00:36,890 --> 00:00:39,380 angazhohen në kursin mjaft aktive, në fakt. 13 00:00:39,380 --> 00:00:42,270 Ata do të jenë duke përdorur aplikim CS50 dhe CS50 Diskutoni 14 00:00:42,270 --> 00:00:45,490 dhe shumica e mjeteve software të ndryshme që ne tashmë kanë përdorur këtë semestër. 15 00:00:45,490 --> 00:00:48,710 Dhe një nga nismat që ne do të donim për të marrë si një eksperiment këtë vit 16 00:00:48,710 --> 00:00:51,930 është për të parë se sa ne mund të përkthejnë përmbajtjen 17 00:00:51,930 --> 00:00:53,960 në gjuhë të tjera të folura dhe të shkruara. 18 00:00:53,960 --> 00:00:57,500 Pra, nëse ju mund të ketë një interes në pjesëmarrjen në këtë projekt 19 00:00:57,500 --> 00:01:02,270 ku ne do të sigurojë transkriptin anglisht dhe titra per leksione kursin e 20 00:01:02,270 --> 00:01:05,450 dhe pantallona të shkurtra dhe seminaret dhe seksionet dhe si, 21 00:01:05,450 --> 00:01:08,200 në qoftë se ju flisni rrjedhshëm ose shkruani rrjedhshëm gjuhën ndonjë tjetër, 22 00:01:08,200 --> 00:01:12,290 ne do duam te angazhohen ju në këtë projekt ku ju marrë në një ose më shumë prej videos, 23 00:01:12,290 --> 00:01:15,200 përkthimin e tyre në gjuhën që ju e dini mjaft mirë. 24 00:01:15,200 --> 00:01:18,700 >> Për të ju jap një ndjenjë të ndërfaqes, nuk është kjo web-based user interface 25 00:01:18,700 --> 00:01:22,090 se ne do të jetë duke përdorur që do të krijojë një thelb UI si kjo. 26 00:01:22,090 --> 00:01:24,290 Kjo është më mësim disa Halloween më parë, 27 00:01:24,290 --> 00:01:27,390 dhe në anën e djathtë atje në të zezë e ardhshëm të këtyre vulave kohore, 28 00:01:27,390 --> 00:01:31,210 ju do të shihni gjëra të ndryshme që erdhi nga goja ime atë ditë, 29 00:01:31,210 --> 00:01:34,850 dhe pastaj më poshtë atë që ju do të jetë në gjendje për të përkthyer në disa gjuhë të tjera 30 00:01:34,850 --> 00:01:38,690 pikërisht ajo që është në mes të hartës, në këtë rast, anglisht dhe, të themi, spanjisht. 31 00:01:38,690 --> 00:01:40,440 Pra, kjo është në fakt një shumë përdorues-miqësor mjet. 32 00:01:40,440 --> 00:01:43,370 Ju mund të Rewind dhe të shpejtë përpara shumë lehtë me shkurtesat e tastierës. 33 00:01:43,370 --> 00:01:47,490 Pra, nëse ju do të donte për të marrë pjesë në këtë eksperiment dhe kanë fjalët e tua shihet dhe të lexoni 34 00:01:47,490 --> 00:01:51,850 nga potencialisht mijëra njerëz atje, ju lutem mos ngurroni për të marrë pjesë. 35 00:01:51,850 --> 00:01:54,350 Një fjalë në lidhje me kotele nga e hëna. 36 00:01:54,350 --> 00:02:00,350 Mos kemi dërguar një mesazh tepër të frikshme, nuk e kuptojnë se, si orë sugjerojnë zyra 37 00:02:00,350 --> 00:02:03,300 dhe si seksione sugjerojnë, dizajni i kursit është shumë 38 00:02:03,300 --> 00:02:07,360 që kanë studentët bashkëpunuar dhe duke folur për të punuar me grupe të problemeve 39 00:02:07,360 --> 00:02:11,260 dhe problemet së bashku, dhe me të vërtetë të vijë vetëm vjen poshtë për të, 40 00:02:11,260 --> 00:02:16,010 përsëri, puna që në fund të fundit duhet të jenë të paraqesë tuaj. 41 00:02:16,010 --> 00:02:18,860 Dhe kështu mjaft ndershmëri, në orët e zyrës kjo është krejtësisht normale, 42 00:02:18,860 --> 00:02:22,240 ajo tërësisht do të pritet edhe, për të biseduar me disa mik tjetër për ju. 43 00:02:22,240 --> 00:02:24,370 >> Nëse ai ose ajo po lufton me një farë teme dhe ju jeni si, 44 00:02:24,370 --> 00:02:27,940 "Oh, mirë, më lejoni t'ju jap një paraqitje e shkurtër e disa linjë të kodit që kam shkruar," kjo është në rregull, 45 00:02:27,940 --> 00:02:31,250 që ndodh, dhe kjo është shumë e favorshme, unë mendoj se, me procesin e të mësuarit. 46 00:02:31,250 --> 00:02:36,750 Ku linja merr kaluan është kur koka është lloj i tilted mbi këtu për sekonda më shumë shumë 47 00:02:36,750 --> 00:02:41,160 ose minuta për këtë të vërtetë të ketë qenë vetëm një mundësi për zhbllokimin mikut tuaj, 48 00:02:41,160 --> 00:02:44,160 dhe sigurisht kur gjërat merrni shkëmbehet nëpërmjet postës elektronike dhe Dropbox dhe si, 49 00:02:44,160 --> 00:02:45,640 atje është linjë. 50 00:02:45,640 --> 00:02:48,620 Pra, me të gjitha mjetet të ndjehen rehat dhe të ndjehen të inkurajuar për të biseduar me miqtë 51 00:02:48,620 --> 00:02:52,810 dhe shokët e klasës për psets dhe më shumë dhe vetëm të kuptojë se ajo që ju në fund të fundit të paraqesë 52 00:02:52,810 --> 00:02:57,340 duhet të vërtetë të jetë produkt i krijimit tuaj dhe jo dikush tjetër. 53 00:02:57,340 --> 00:03:00,490 Dhe kështu një nga domain-specifike probleme për pset2, 54 00:03:00,490 --> 00:03:04,740 e cila do të dalë natën vonë nesër, është që të zhyten në botën e kriptografisë, 55 00:03:04,740 --> 00:03:08,970 e cila është arti i encrypting ose përpiqen informacion, 56 00:03:08,970 --> 00:03:12,600 dhe kjo në fund të fundit ka të bëjë me botën e sigurisë. 57 00:03:12,600 --> 00:03:16,560 Tani, sigurie për më nga ne vjen në formën e mekanizmave mjaft mondane. 58 00:03:16,560 --> 00:03:19,050 Të gjithë ne kemi përdoruesve dhe fjalëkalimet, 59 00:03:19,050 --> 00:03:23,450 dhe të gjithë prej nesh kanë shumë të këqija përdoruesve dhe fjalëkalimet, ka shumë të ngjarë. 60 00:03:23,450 --> 00:03:28,240 >> Nëse fjalëkalimi juaj është i njëjtë në faqet e internetit të shumta, që ndoshta nuk është ide e mirë, 61 00:03:28,240 --> 00:03:30,070 si ne do të diskutuar drejt përfundimit Semestri-së. 62 00:03:30,070 --> 00:03:34,720 Nëse fjalëkalimi juaj është i shkruar në një shënim ngjitet - nuk është shaka - në monitorimin tuaj, 63 00:03:34,720 --> 00:03:38,350 se shumë nuk është domosdoshmërisht dizajn të mirë, por një fenomen mjaft të zakonshme. 64 00:03:38,350 --> 00:03:42,470 Dhe në qoftë se ju nuk jeni duke përdorur për të encrypt passwords kriptografinë tuaja, 65 00:03:42,470 --> 00:03:44,210 ata janë veçanërisht të pambrojtur. 66 00:03:44,210 --> 00:03:47,270 Pra, nëse ju mendoni se ju jeni duke u super i zgjuar nga të paturit e një dokument Word fshehur 67 00:03:47,270 --> 00:03:49,910 diku në hard drive tuaj që i ka të gjitha fjalëkalimet tuaja 68 00:03:49,910 --> 00:03:53,670 por kjo është në një dosje që askush nuk do të shikoni në, se edhe nuk është një mekanizëm shumë të sigurt. 69 00:03:53,670 --> 00:03:56,990 Dhe kështu ajo do të prezantojë pset2 është ky art i cryptography 70 00:03:56,990 --> 00:04:02,010 dhe përpiqen informacion në mënyrë që gjëra të tilla si fjalëkalimet janë të gjitha më i sigurt. 71 00:04:02,010 --> 00:04:05,790 Konteksti këtu është se me të dhëna të pasigurta 72 00:04:05,790 --> 00:04:07,930 vjen një mundësi për të encrypt atë dhe të përpiqen atë. 73 00:04:07,930 --> 00:04:11,470 Dhe kështu kjo, për shembull, është një shembull i një mesazhi të koduar. 74 00:04:11,470 --> 00:04:14,700 Ky fakt thotë diçka në gjuhën angleze, por kjo nuk është tërësisht e qartë të dukshme. 75 00:04:14,700 --> 00:04:18,279 Dhe ne do të vijnë rreth të plotë sot për të ngas përveç asaj që ky mesazh sekret këtu është. 76 00:04:18,279 --> 00:04:23,490 Por në botën e vërtetë të kompjuterëve, gjërat nuk duken edhe si ata mund të jenë fraza anglisht. 77 00:04:23,490 --> 00:04:28,430 Për shembull, kjo është ajo që ju mund të gjeni në një Linux ose Mac standarde ose UNIX kompjuter 78 00:04:28,430 --> 00:04:32,070 në një skedar që ishte njëherë e një kohë i quajtur file fjalëkalimi. 79 00:04:32,070 --> 00:04:34,200 >> Sot ajo është lëvizur në vende të tjera. 80 00:04:34,200 --> 00:04:39,210 Por në qoftë se ju shikoni në vendin e duhur në një sistem, ju do të shihni jo vetëm emrin tënd 81 00:04:39,210 --> 00:04:43,400 ose se njerëz të tjerë në sistem, por ju do të shihni një version të koduar fjalëkalim të tyre. 82 00:04:43,400 --> 00:04:47,980 Në të vërtetë, fjala Crypt there sugjeron se stuff vijim është koduar, 83 00:04:47,980 --> 00:04:52,680 dhe kjo seri e në dukje të rastit shkronja dhe karaktere dhe numrat dhe kështu me radhë 84 00:04:52,680 --> 00:04:56,480 mund të decrypted vetëm nga zakonisht ditur disa sekrete - 85 00:04:56,480 --> 00:04:58,840 një fjalë të fshehtë, një numër i fshehtë - 86 00:04:58,840 --> 00:05:03,160 dhe kështu në të vërtetë, arti i kriptografisë përfundimisht boils poshtë për të besimit e disa lloj 87 00:05:03,160 --> 00:05:05,650 dhe duke ditur diçka që dikush tjetër nuk e bën. 88 00:05:05,650 --> 00:05:10,090 Pra, ne do të shqyrtojë këtë në hollësi pak më sot dhe në pset që do të vijnë. 89 00:05:10,090 --> 00:05:12,200 Dhe tani një fjalë të kalojë / dështojnë. 90 00:05:12,200 --> 00:05:15,360 Sidomos si disa prej jush kanë fetar në pset1, aplikim, 91 00:05:15,360 --> 00:05:19,080 dhe një botë shumë i ri për veten, të kuptojnë se frustrimet dhe hutia 92 00:05:19,080 --> 00:05:21,700 dhe vetëm vështirësitë teknike janë mjaft të pritet, 93 00:05:21,700 --> 00:05:24,180 sidomos me pset parë, ku ka vetëm aq shumë e re, 94 00:05:24,180 --> 00:05:27,730 vetëm duke u njohur me ls dhe CD dhe të gjitha këto komanda misterioze 95 00:05:27,730 --> 00:05:33,050 dhe një mjedis të ri, dhe kjo është ndarë nga materiali faktik dhe programimin e vetë. 96 00:05:33,050 --> 00:05:36,940 Pra, të kuptojnë gjithashtu se nuk janë me siguri orarit të punës që ekzistojnë si një strukturë mbështetëse. 97 00:05:36,940 --> 00:05:38,880 >> Seksione të fillojnë këtë të dielë vjen. 98 00:05:38,880 --> 00:05:42,960 Por më e rëndësishmja, në qoftë se ju jeni ndjeheni vetëm se kjo nuk është bota për ju, 99 00:05:42,960 --> 00:05:44,710 kuptojë se ai me të vërtetë ka vetëm të marrë kohë. 100 00:05:44,710 --> 00:05:48,600 Dhe po të mos ishte për këtë mundësi vjet më parë për mua që të marrë një abone të klasit / dështojnë, 101 00:05:48,600 --> 00:05:50,990 sinqerisht, unë kurrë nuk do të kishte vendosur edhe këmbë në klasë. 102 00:05:50,990 --> 00:05:53,690 Dhe ju mund ta ndryshoni këtë deri në, të themi, të hënën e pestë e natyrisht, 103 00:05:53,690 --> 00:05:58,280 kështu që nëse ju jeni në buzë tani, të kuptojë se në vend se kreu në disa ujëra të tjera krejt, 104 00:05:58,280 --> 00:06:01,260 sigurisht nuk e konsiderojnë vetëm ndryshimin për të kaluar / dështojnë. 105 00:06:01,260 --> 00:06:04,570 Përsëri, nuk është e vërtetë kjo kulturë këtu në Harvard që të marrë gjëra të kalojë / dështojnë 106 00:06:04,570 --> 00:06:08,670 Që të gjithë me të vërtetë dëshiron të arrijë apo të overachieve, 107 00:06:08,670 --> 00:06:11,130 por sinqerisht, kjo është një mënyrë e mrekullueshme e duke u përpjekur diçka jashtë 108 00:06:11,130 --> 00:06:16,720 që nuk mund të jenë të njohura për ju, dhe ju do të përfundojë duke bërë, në shumicën e rasteve, mjaft mirë, 109 00:06:16,720 --> 00:06:18,210 ndoshta më shumë për habinë tuaj. 110 00:06:18,210 --> 00:06:20,980 Dhe në terma më konkrete, atë që unë mendoj se të kalojë / dështojnë në përgjithësi e bën, 111 00:06:20,980 --> 00:06:22,940 sidomos si ju mund të keni përjetuar me pset0, 112 00:06:22,940 --> 00:06:26,560 në qoftë se ju vendosni në 10 orë, 15 orë, 25 orë në disa pset 113 00:06:26,560 --> 00:06:29,920 dhe ju jeni vetëm banging kokën tuaj kundër murit dhe ajo është duke u super natën vonë 114 00:06:29,920 --> 00:06:33,950 por ju keni marrë pset 90% të rrugës dhe ju thjesht nuk mund ta kuptoj një gjë, 115 00:06:33,950 --> 00:06:36,520 kalojë / dështojnë me të vërtetë merr off buzë e një klase si kjo, 116 00:06:36,520 --> 00:06:39,100 ku ju mund të lloj të lumtur të them: "Mirë, unë e di se nuk është e përsosur, 117 00:06:39,100 --> 00:06:42,350 por kam punuar jashtë ass tim për këtë, unë jam goxha i kënaqur me të, ku ai përfundoi, " 118 00:06:42,350 --> 00:06:44,850 dhe se do të përmbushë pritjet për kalojë / dështojnë. 119 00:06:44,850 --> 00:06:47,540 Pra, do të mbani në mend. Dakord. 120 00:06:47,540 --> 00:06:50,520 >> Pra, ata prej jush që kanë luftuar për të përdorur në Universitetin e Harvardit Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 e di se ka një SSID CS50, një Wi-Fi lidhje të, lundrues rreth 122 00:06:54,780 --> 00:06:56,490 që ju mund të keni fat më të mirë për të. 123 00:06:56,490 --> 00:07:00,130 Kjo është një ironic pak se fjalëkalimi për këtë, në qoftë se ju do të donte të provoni lidh me këtë 124 00:07:00,130 --> 00:07:08,350 për shpejtësi më të mirë - dhe le të na tregoni, nëse ajo nuk është e mirë - është 12345, të gjithë rrugën deri në 8 125 00:07:08,350 --> 00:07:10,910 sepse 8 është më e sigurtë se 5. 126 00:07:10,910 --> 00:07:16,910 Pra, nëse keni nevojë për fjalëkalim të Wi-Fi, të lidheni me valë CS50 këtu, 12345678, 127 00:07:16,910 --> 00:07:20,380 dhe post on CS50 Diskutoni në qoftë se ju ende keni çështje të përhershme të lidhjes, 128 00:07:20,380 --> 00:07:25,420 dhe ne do të le pushtetin që të dinë për këtë hapësirë. Dakord. 129 00:07:25,420 --> 00:07:32,230 Pra, një ngacmues të shpejtë, sidomos për ato prej jush që janë djem ose vajza tifoz të gjitha gjërat Apple. 130 00:07:32,230 --> 00:07:37,460 Ajo që unë nxorën nga disa vite mbrapa ishte këtë fotografi këtu, iUnlock.c, 131 00:07:37,460 --> 00:07:39,930 vetëm për llojin e bërë më konkrete dhe më kompleks 132 00:07:39,930 --> 00:07:42,560 disa prej programeve më themelore C ne kemi qenë të shkruar. 133 00:07:42,560 --> 00:07:46,910 Kështu që unë u hap këtë skedar, iUnlock.c. Është në dispozicion në faqen e leksioneve për sot. 134 00:07:46,910 --> 00:07:49,810 Në anën e majtë ju shihni një listë të gjatë të funksioneve. 135 00:07:49,810 --> 00:07:53,230 Pra shokët që shkroi këtë shkroi një shumë të funksioneve, më shumë se vetëm kryesor. 136 00:07:53,230 --> 00:07:57,340 Ai përdori një bandë e tërë e bibliotekave këtu, dhe nëse ne fillojmë me anë Scroll, 137 00:07:57,340 --> 00:08:04,890 çka ky fakt është është shumë i parë, unë besoj, plas për iPhone origjinal. 138 00:08:04,890 --> 00:08:09,830 >> Kur ju të kërkuar për të jailbreak iPhone origjinal, që do të thotë untether atë nga AT & T 139 00:08:09,830 --> 00:08:13,710 dhe në fakt instaluar programi të veçantë mbi të dhe të bëjë gjëra që Apple nuk duan njerëzit për të bërë, 140 00:08:13,710 --> 00:08:18,480 dikush mori kohë të kuptoj se saktësisht se si ata mund të shfrytëzojnë difekte software, 141 00:08:18,480 --> 00:08:22,690 gabime, bugs në software, Apple, dhe kështu lindi iUnlock.c-- 142 00:08:22,690 --> 00:08:26,760 se në qoftë se ju të hartuar atë në kompjuterin tuaj dhe instaluar atë në një iPhone 143 00:08:26,760 --> 00:08:29,430 që ishte i lidhur me kompjuterin tuaj nëpërmjet, të themi, një kabëll USB, 144 00:08:29,430 --> 00:08:32,450 kjo do t'ju japë privilegje administrative ose rrënjë në iPhone tuaj 145 00:08:32,450 --> 00:08:34,620 dhe le të ju bëjë shumë e shumë çdo gjë që ju dëshironi. 146 00:08:34,620 --> 00:08:36,400 Dhe kështu ka qenë kjo mace interesante dhe lojë miun 147 00:08:36,400 --> 00:08:39,340 mes Apple dhe pjesës tjetër të botës, në veçanti, si ata, si shumë kompani, 148 00:08:39,340 --> 00:08:43,350 të përpiqet të bllokoj stuff e tyre poshtë në mënyrë që ju mund ta bëni vetëm me atë që ata duan. 149 00:08:43,350 --> 00:08:47,360 Por në sajë të njerëzve si kjo dhe të kuptuarit e nivelit të ulët detaje - 150 00:08:47,360 --> 00:08:50,830 dhe në këtë rast C programimit - dhe një shumë e ndërton njohur 151 00:08:50,830 --> 00:08:55,280 që ne kemi filluar të luajë me të, ju jeni në gjendje me të vërtetë të levave hardware 152 00:08:55,280 --> 00:08:59,250 në një mënyrë që ju të shihni të arsyeshme dhe jo domosdoshmërisht një entitet të korporatave. 153 00:08:59,250 --> 00:09:01,600 Kështu për shembull, unë nuk kam asnjë ide se çfarë e gjithë kjo është bërë, 154 00:09:01,600 --> 00:09:03,580 por GetVersion tingëllon mjaft i hapur, 155 00:09:03,580 --> 00:09:05,710 dhe kjo duket si kjo është një funksion që ky person ka shkruajtur. 156 00:09:05,710 --> 00:09:09,250 Ajo merr disa lloj numër të plotë, si një argument, nuk ka kthim asgjë, 157 00:09:09,250 --> 00:09:13,710 por duket se lak me një për lak këtu dhe një kusht, nëse, nëse pushim kusht, 158 00:09:13,710 --> 00:09:16,770 dhe disi lidhet me numrat version nëse lëvizni poshtë, 159 00:09:16,770 --> 00:09:19,650 edhe pse shumë nga këto fjalë kyçe do të jetë e re. 160 00:09:19,650 --> 00:09:22,590 Dhe ka një tërësi shumë të funksioneve në këtu ne kurrë nuk kam parë dhe nuk mund të shihni ndonjëherë 161 00:09:22,590 --> 00:09:24,350 mbi rrjedhës së semestrit. 162 00:09:24,350 --> 00:09:29,160 >> Në fund të ditës, ajo ndjek të njëjtat rregulla dhe logjikën që ne kemi qenë duke luajtur me deri tani. 163 00:09:29,160 --> 00:09:34,340 Pra, kjo është shumë e vjetër për të goditur 3s tuaj iPhone 4S ose ose së shpejti 5s këto ditë, 164 00:09:34,340 --> 00:09:38,830 por e di se kjo është e gjitha shumë që rrjedhin nga kjo botë që ne kemi fetar në. 165 00:09:38,830 --> 00:09:42,280 Le të marrin një vështrim në një shembull pak më thjeshtë: 166 00:09:42,280 --> 00:09:46,260 kjo, vetëm për të marrë ngrohur me disa sintaksë dhe gjithashtu disa të dhëna të tjera lloji 167 00:09:46,260 --> 00:09:48,910 se ne kemi biseduar rreth, por nuk e kam parë të vërtetë në C. 168 00:09:48,910 --> 00:09:53,670 Kjo është një file i quajtur positive1.c, dhe sipas komenteve në krye, 169 00:09:53,670 --> 00:09:56,070 kjo vetëm kërkon që një përdorues të sigurojë një numër pozitiv. 170 00:09:56,070 --> 00:09:59,910 Pra, kjo është një shembull i një lak për ta bërë, ndërsa, e cila është e bukur për programet përdorues interaktive 171 00:09:59,910 --> 00:10:02,070 ku keni nevojë për të të treguar e përdoruesit për të bërë diçka, 172 00:10:02,070 --> 00:10:05,530 dhe në qoftë se ata nuk bashkëpunojnë me ta ju bërtas apo refuzojnë kontributin e tyre. 173 00:10:05,530 --> 00:10:10,480 Rasti në pikën: Unë jam duke shkuar për të bërë linjat e 19 nëpërmjet 24 174 00:10:10,480 --> 00:10:14,620 për aq kohë sa përdoruesi nuk ka dhënë mua një numër pozitiv. 175 00:10:14,620 --> 00:10:21,340 Ky detaj këtu on line 18, pse nuk kam deklaruar n mbi këtë looping tërë ndërtimin 176 00:10:21,340 --> 00:10:26,870 në krahasim me të drejtë tjetër të linjës 22, ku unë në fakt e kujdesit për të marrë n? Po. 177 00:10:26,870 --> 00:10:29,330 [Student] fushës. Po >>, kështu që kjo çështje të fushës. 178 00:10:29,330 --> 00:10:31,770 Dhe në kushtet e laik, çfarë do qëllimi i referohen? 179 00:10:34,880 --> 00:10:41,560 Po. >> [Përgjigja e padëgjueshme Studenti] >> A mund të flisni pak louder? 180 00:10:41,560 --> 00:10:45,440 [Student] Ku ju mund të hyni në atë ndryshore. Perfect >>. 181 00:10:45,440 --> 00:10:47,610 Ku ju mund të hyni në një variabël të veçantë. 182 00:10:47,610 --> 00:10:50,990 Dhe në përgjithësi, sundimi i gishtit deri tani ka qenë se qëllimi i disa ndryshore 183 00:10:50,990 --> 00:10:56,140 është përcaktuar nga formatimin e teksteve kaçurrel më të fundit që e keni parë. 184 00:10:56,140 --> 00:11:03,070 >> Dhe kështu në këtë rast, në qoftë se kam bërë gabim të deklarimit n on line 22, që linja do të punojë. 185 00:11:03,070 --> 00:11:10,840 Unë do të merrni një int, dhe unë do të vënë atë në atë n ndryshueshme në linjë 22, 186 00:11:10,840 --> 00:11:17,060 por të cilat linjë e kodit tani do të ketë asnjë ide se çfarë unë jam duke folur për? >> [Student] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25, dhe ajo rezulton 24 si edhe për shkak se në këtë rast ajo bie jashtë formatimin e teksteve kaçurrel. 188 00:11:23,840 --> 00:11:28,550 Pra, vetëm pak një njeri i bezdisur, por zgjidhen shumë lehtë nga thjesht deklaruar variabël 189 00:11:28,550 --> 00:11:30,700 jashtë funksionit vetë. 190 00:11:30,700 --> 00:11:32,760 Ne do të shohim më vonë sot ju mund të shkoni një hap më tej 191 00:11:32,760 --> 00:11:34,940 dhe ju mund të merrni edhe pak dembel. 192 00:11:34,940 --> 00:11:39,660 Dhe kjo nuk është për të rekomanduar në përgjithësi, por ju mund të merrni edhe dembel 193 00:11:39,660 --> 00:11:44,150 dhe të vënë një ndryshore globale, kështu që të flasin, jo brenda një funksion, jo brenda një lak, 194 00:11:44,150 --> 00:11:49,800 por në dosjen e vetë, jashtë të gjitha funksionet që ju keni shkruar, siç kam bërë këtu në linjë 15. 195 00:11:49,800 --> 00:11:55,220 Kjo është në përgjithësi frowned, por të kuptojë kjo është një zgjidhje ndonjëherë për probleme të tjera, 196 00:11:55,220 --> 00:11:56,910 si ne do të shohim përfundimisht. 197 00:11:56,910 --> 00:11:59,500 Pra, tani për tani ne do të lënë atë si kjo, por le të shohim nëse ne mund të ndryshonin këtë 198 00:11:59,500 --> 00:12:02,360 vetëm për të filloni të shprehur veten pak ndryshe. 199 00:12:02,360 --> 00:12:05,550 Ky program, vetëm të jetë i qartë, është positive1. 200 00:12:05,550 --> 00:12:11,980 Më lejoni të shkojnë përpara këtu dhe në dritaren time terminalit të bëjë positive1, Enter. 201 00:12:11,980 --> 00:12:15,080 Harton rregull. Unë jam duke shkuar për të drejtuar positive1, hit Enter. 202 00:12:15,080 --> 00:12:19,250 Unë të kërkojë që ju të jepni një numër i plotë pozitiv. Unë do të them -1. Që nuk punojnë. 203 00:12:19,250 --> 00:12:22,340 0, 99. Kjo duket për të punuar. 204 00:12:22,340 --> 00:12:25,310 Ndoshta jo testi më rigoroze, por të paktën kjo është një kontroll mendje e shëndoshë e bukur 205 00:12:25,310 --> 00:12:27,100 se ne jemi në rrugën e duhur. 206 00:12:27,100 --> 00:12:29,570 >> Kështu që tani më lejoni të shkoj përpara dhe të hapur versionin 2 të kësaj, 207 00:12:29,570 --> 00:12:32,800 dhe çfarë është e ndryshme tashmë? 208 00:12:32,800 --> 00:12:39,030 Ajo zbaton të njëjtën gjë, por ajo është hedhur jashtë si kohë të ndryshme në mënyrë të qartë këtë? 209 00:12:40,790 --> 00:12:47,090 Kjo bool në të gjelbër. Kjo është theksuar në jeshile, ky fjalen njohur si bool, e cila është një lloj të dhënave. 210 00:12:47,090 --> 00:12:50,510 Ajo nuk vijnë të ndërtuar në të gjitha versionet e C. 211 00:12:50,510 --> 00:12:52,650 Ju duhet të përfshijnë një bibliotekë të veçantë. 212 00:12:52,650 --> 00:12:56,460 Në rastin tonë, unë përfshirë bibliotekën CS50 në mënyrë që ne të kenë qasje në bool. 213 00:12:56,460 --> 00:12:59,860 Por në linjë 18, ne duket të ketë një vlerë Boolean këtu quhet mirënjohës. 214 00:12:59,860 --> 00:13:02,190 Unë mund të ketë e quajti këtë gjë, por unë e quajti atë mirënjohës 215 00:13:02,190 --> 00:13:04,750 vetëm për disa lloj të përcjellë kuptimin semantik. 216 00:13:04,750 --> 00:13:07,700 Pra, fillimisht on line 18, unë nuk jam mirënjohës duket 217 00:13:07,700 --> 00:13:12,230 sepse vlera Boolean mirënjohës është initialized të rreme në linjë 18. 218 00:13:12,230 --> 00:13:16,500 Dhe pastaj ajo duket ajo që unë kam bërë këtu në linjat e 21 nëpërmjet 23 219 00:13:16,500 --> 00:13:19,200 po unë kam vetëm lloji i rishkruar logjikën time. 220 00:13:19,200 --> 00:13:26,100 Pra nuk ka funksionalisht të ndryshme, por në përputhje 22 tani unë kontrolloni nëse int përdorues ka dhënë 221 00:13:26,100 --> 00:13:31,360 është më e madhe se 0, atëhere unë thjesht të ndryshojë vlerën e mirënjohës për të vërteta. 222 00:13:31,360 --> 00:13:35,590 Dhe pse ta bëj këtë? Sepse në linjë 25, me sa duket unë jam duke shkuar për të kontrolluar një kusht. 223 00:13:35,590 --> 00:13:39,760 Bëni këtë lak, ndërsa mirënjohës është e rreme. 224 00:13:39,760 --> 00:13:42,960 Kështu që unë propozuar këtë si një alternativë ndaj Version 1 225 00:13:42,960 --> 00:13:47,050 sepse kjo është të paktën një pak më shumë intuitiv ndoshta, kjo është pak më shumë bazuar në gjuhën angleze. 226 00:13:47,050 --> 00:13:51,980 Pra, nuk e mëposhtme, ndërsa ju nuk jeni mirënjohës ose mirënjohës, ndërsa është e rreme. 227 00:13:51,980 --> 00:13:56,220 Dhe këtë herë edhe unë me sa duket nuk e kujdesit për të kujtuar se çfarë përdoruesit shtypur në 228 00:13:56,220 --> 00:14:00,050 sepse nuk ka asnjë njoftim n ndryshueshme, kështu që në fakt, një gënjeshtër e vogël të bardhë atje. 229 00:14:00,050 --> 00:14:03,290 >> Funksionalisht, programi është pak më ndryshe sapo të marrë në fund të saj 230 00:14:03,290 --> 00:14:04,960 sepse unë nuk jam duke kujtuar se çfarë është n. 231 00:14:04,960 --> 00:14:09,120 Por unë të kërkuar për të demonstruar edhe këtu se edhe pse ne kemi parë GetInt 232 00:14:09,120 --> 00:14:13,780 dhe getString duke u përdorur në anën e djathtë të një është e barabartë me shenjë deri tani 233 00:14:13,780 --> 00:14:17,310 kështu që ne kujtojmë vlerën, teknikisht, që nuk është e domosdoshme. 234 00:14:17,310 --> 00:14:20,290 Nëse për çfarëdo arsye ju thjesht nuk bëni kujdes për të ruajtur vlerën, 235 00:14:20,290 --> 00:14:25,540 ju vetëm doni të kontrolloni vlerën, vini re se ne thjesht mund të shkruaj këtë si GetInt, 236 00:14:25,540 --> 00:14:27,320 hapur prindërve, prindërve afër. 237 00:14:27,320 --> 00:14:30,570 Se funksioni do të kthehen një vlerë, si ne kemi qenë të thënë. 238 00:14:30,570 --> 00:14:32,220 Kjo do të ju jap përsëri një int. 239 00:14:32,220 --> 00:14:34,460 Dhe kështu që nëse ju mendoni mentalisht për të ndodhur kjo, 240 00:14:34,460 --> 00:14:38,190 kur unë lloji në 99, GetInt kthen numrin 99, 241 00:14:38,190 --> 00:14:41,840 dhe kështu konceptualisht, është sikur kodi im ishte në fakt këtë. 242 00:14:41,840 --> 00:14:45,950 99 Pra, nëse është me të vërtetë e madhe se 0, atëherë bëhet e vërtetë mirënjohës, 243 00:14:45,950 --> 00:14:50,810 atëherë Shkarko 25 realizon ooh, ne jemi duke bërë, sepse unë jam tani mirënjohës, 244 00:14:50,810 --> 00:14:53,970 dhe në përputhje 26, ne thjesht themi, "Faleminderit për numër i plotë pozitiv!" 245 00:14:53,970 --> 00:14:55,960 çfarëdo qoftë ajo që ndodhi të jetë. 246 00:14:55,960 --> 00:14:59,140 Tani le të bëjmë sheqer lehtë sintaktik këtu, në mënyrë që të flasin. 247 00:14:59,140 --> 00:15:04,670 Le të shohim nëse ne mund të pastër deri këtë linjë 25 me këtë variant të tretë dhe të fundit në positive3. 248 00:15:04,670 --> 00:15:13,600 >> Njoftim I vetmi ndryshim tani është ajo linjë e kodit? >> [Student] 25. >> [Malan] Yeah, 25. 249 00:15:13,600 --> 00:15:17,680 Dhe ne nuk e kemi parë këtë mashtrim të vërtetë vetëm ende, por ne nuk shohim pikë thirrje të hënën, 250 00:15:17,680 --> 00:15:21,070 i cili tregon se çfarë? >> [Student] Jo. Apo jo >> mohimi. 251 00:15:21,070 --> 00:15:23,510 Pra, të marrë një vlerë Boolean dhe rrokullisje vlerën e saj. 252 00:15:23,510 --> 00:15:25,810 Vërtetë bëhet rreme, i rremë bëhet e vërtetë. 253 00:15:25,810 --> 00:15:30,420 Pra, kjo, unë do të propozojë, është edhe një pak më shumë intuitiv një mënyrë e të shkruarit kodin 254 00:15:30,420 --> 00:15:33,430 sepse unë ende nisja mirënjohës për të rreme, unë ende nuk e mëposhtme, 255 00:15:33,430 --> 00:15:36,010 I vendosur për të vërtetë mirënjohës kur të vjen koha, 256 00:15:36,010 --> 00:15:40,880 por tani ju mund të vërtetë vetëm përkthejnë këtë kod lënë me gojë në të djathtë, 257 00:15:40,880 --> 00:15:45,630 ndërsa (mirënjohës!), sepse zhurmë apo thirrje pika nënkupton nocionin e jo 258 00:15:45,630 --> 00:15:47,580 kështu ndërsa nuk mirënjohës. 259 00:15:47,580 --> 00:15:49,900 Pra, përsëri, ne nuk kemi futur ndonjë koncepteve të reja në vetvete. 260 00:15:49,900 --> 00:15:53,730 Ne biseduam rreth Booleans mbrapa, kur ne kemi luajtur me Scratch, 261 00:15:53,730 --> 00:15:56,720 por kupton tani ne vetëm mund të filloni të shkruani kodin tonë në shumë mënyra të ndryshme. 262 00:15:56,720 --> 00:16:01,060 Pra, veçanërisht në qoftë se ju jeni pset1 lloj luftuar për të kuptoj rrugën për të shkruar një program, 263 00:16:01,060 --> 00:16:04,340 Shanset janë që ju jeni me fat, sepse nuk mund të jetë çdo numër të zgjidhjeve 264 00:16:04,340 --> 00:16:06,110 që ju të mund të ndodhë pas. 265 00:16:06,110 --> 00:16:10,500 Për shembull, kjo është vetëm 3 për edhe më të thjeshtë e programeve. Dakord. 266 00:16:10,500 --> 00:16:14,200 Dhe tani kujtojnë të hënën kemi lënë në këtë shënim me vlerat e kthimit. 267 00:16:14,200 --> 00:16:18,450 Pra, për herë të parë kemi shkruar një program që nuk ka vetëm kryesor; 268 00:16:18,450 --> 00:16:22,550 ajo gjithashtu ka vet funksionin e saj porosi që kam shkruar këtu. 269 00:16:22,550 --> 00:16:26,810 Pra, në përputhje me 31 34 Unë e kam zbatuar një funksion kubike. 270 00:16:26,810 --> 00:16:30,240 Kjo nuk është komplekse. Kjo është vetëm një * a * a në këtë rast. 271 00:16:30,240 --> 00:16:34,750 Por ajo është rëndësishme rreth saj është se jam marrë input në formën e një 272 00:16:34,750 --> 00:16:39,180 dhe jam kthyer dalje në formën e një * një * një. 273 00:16:39,180 --> 00:16:43,560 Kështu që tani unë kam mundësinë, ashtu si kam përdorur për të me të vetëm prinf, 274 00:16:43,560 --> 00:16:47,240 për të thirrur këtë funksion duke thirrur funksionin kubike. 275 00:16:47,240 --> 00:16:51,970 >> Dhe funksioni kubike merr disa të dhëna, dhe funksioni kubike kthen disa dalje. 276 00:16:51,970 --> 00:16:56,960 Nga ana tjetër, printf vetëm e bëri diçka. 277 00:16:56,960 --> 00:17:00,840 Ajo nuk u kthye asgjë që kujdesej për ne, edhe pse si një mënjanë ajo nuk kthehet një vlerë; 278 00:17:00,840 --> 00:17:03,110 ju vetëm në përgjithësi të injorojë atë. 279 00:17:03,110 --> 00:17:06,510 Printf vetëm e bëri diçka. Ajo kishte një efekt anësor i shtypjes në ekran. 280 00:17:06,510 --> 00:17:11,770 Nga kontrast këtu, ne kemi funksionin kubike, e cila në fakt kthen diçka. 281 00:17:11,770 --> 00:17:15,520 Kështu që për ata që të njohur me këtë, kjo është një ide e në mënyrë të drejtë i drejtpërdrejtë. 282 00:17:15,520 --> 00:17:19,640 Por për ata më pak të njohur me këtë idenë e kalimit në inputet dhe marrjen e mbrapa rezultatet, 283 00:17:19,640 --> 00:17:21,950 le të përpiqemi vetëm e thjeshtë diçka super. 284 00:17:21,950 --> 00:17:25,490 Është dikush të rehatshme vijnë në skenë shkurtimisht? 285 00:17:25,490 --> 00:17:28,040 Ju duhet të jetë të rehatshme me një aparat fotografik mbi ju si mirë. Po? Rregull. 286 00:17:28,040 --> 00:17:31,240 Çfarë është emri juaj? >> [Studenti] Ken. >> Ken. Dakord. Ken, vijnë më up. 287 00:17:31,240 --> 00:17:35,050 Ken është duke duke shkuar për të të jetë një funksion në terezi këtu. 288 00:17:35,050 --> 00:17:38,720 Le të të shkojnë përpara dhe të bëjë këtë. Le të marrë një dashuroj pak. 289 00:17:38,720 --> 00:17:42,260 Gëzohem që u njohëm. Mirë se vini në fazën e qendër. Dakord. 290 00:17:42,260 --> 00:17:46,640 Le goditi këtë buton këtu. Dakord. 291 00:17:46,640 --> 00:17:49,820 Kështu që këtu ju keni një dërrasë e zezë moderne, 292 00:17:49,820 --> 00:17:53,470 dhe atë që unë jam është Funksioni kryesor, për shembull, 293 00:17:53,470 --> 00:17:56,460 dhe unë nuk kanë një iPad në dorën time. 294 00:17:56,460 --> 00:17:59,710 >> Unë vërtetë nuk mbani mend se si për të - E pra, unë nuk mund të them se. 295 00:17:59,710 --> 00:18:02,480 Unë nuk të vërtetë kanë dorëshkrimit të të mirë, 296 00:18:02,480 --> 00:18:05,520 dhe kështu që për këtë arsye që unë dua që ju të shtypura diçka në ekran për mua. 297 00:18:05,520 --> 00:18:12,040 Unë jam i të qënit Programi kryesor, dhe unë jam duke shkuar që të ketë që ju them këtë 298 00:18:12,040 --> 00:18:16,720 duke shkruar atë në të zeroja tim pule dhe pastaj kalimin e ju një kontributin e tyre. 299 00:18:16,720 --> 00:18:20,400 Kështu që silly though ky ushtrim është, nocioni i funksioneve dhe duke bërë thirrje një funksion 300 00:18:20,400 --> 00:18:22,400 dhe kthimin e një funksion me të vërtetë boils poshtë për të këtë. 301 00:18:22,400 --> 00:18:26,260 Unë jam kryesor i, unë kam shkruar vetëm printf, diçka japin kuotën e-mbyll thonjëzat në ekran, 302 00:18:26,260 --> 00:18:29,110 Unë jam running këtë program, dhe të sa më shpejt që printf merr quajtur, 303 00:18:29,110 --> 00:18:32,880 ajo merr një argumentin e apo një parametër nganjëherë në mes të kuotat e dyfishtë. 304 00:18:32,880 --> 00:18:35,880 Këtu është se argument. Unë jam duke kaluar atë për Ken. 305 00:18:35,880 --> 00:18:39,020 Ai është një kuti e zezë shkruar ca numrin e viteve më parë 306 00:18:39,020 --> 00:18:41,510 që me sa duket vetëm e di se si për të shtypur gjëra të në ekran. 307 00:18:41,510 --> 00:18:43,150 Kështu ekzekutuar. 308 00:18:49,280 --> 00:18:51,280 Kjo nuk është e keqe. Shumë të e mirë. 309 00:18:51,280 --> 00:18:55,510 Deri tani Ken është bërë ekzekutimin. A ai duhet të japë asgjë prapa? 310 00:18:55,510 --> 00:18:57,470 Jo se ne kemi parë kështu tani. 311 00:18:57,470 --> 00:19:00,460 Përsëri, printf ka të vërtetë të kthejë një numër të, por ne jemi duke duke shkuar për të injorojnë se për tani 312 00:19:00,460 --> 00:19:03,470 sepse ne kurrë nuk kam përdorur atë. Pra, kjo është ajo për Ken. 313 00:19:03,470 --> 00:19:08,580 Dhe kështu që tani kryesor i merr përsipër kontrollin e programit të përsëri 314 00:19:08,580 --> 00:19:11,060 për shkak që linjë e kodit, printf, është bërë ekzekutuese. 315 00:19:11,060 --> 00:19:14,050 Dhe ne do të shkojmë në lidhje me rrugën tonë, ekzekutimin e çfarëdo që linjat e tjera janë atje. 316 00:19:14,050 --> 00:19:17,320 Pra, tani le të provojmë një shembull paksa të ndryshme. 317 00:19:17,320 --> 00:19:24,940 Këtë herë këtu le të së pari të qartë në ekran, dhe këtë herë ne do të bëjmë funksionin cubing, 318 00:19:24,940 --> 00:19:27,080 por këtë herë, unë pres një vlerë të prodhimit. 319 00:19:27,080 --> 00:19:29,180 >> Pra, le të shkojnë përpara dhe të bëjë këtë. 320 00:19:29,180 --> 00:19:35,790 Tani unë kanë një linjë e kodit që thotë se x merr cube of x. 321 00:19:41,370 --> 00:19:46,370 Linja e kodit, risjell, duket si ky: x = cube (x); 322 00:19:46,370 --> 00:19:50,930 Pra, si është kjo do të punojë? Le të të shkojnë përpara dhe do t'ju japë një ekran të të bardhë përsëri. 323 00:19:50,930 --> 00:19:54,070 Unë jam duke shkuar për të shkruar poshtë tani vlerën e X, 324 00:19:54,070 --> 00:20:01,400 e cila në këtë moment në kohë ndodh të jetë, le të themi, 2 për ta mbajtur atë të thjeshtë. 325 00:20:01,400 --> 00:20:06,150 Unë kam shkruar poshtë në një copë letër vlera e të 2, e cila është x im vlera. 326 00:20:06,150 --> 00:20:10,920 Unë dore atë për Ken. >> Dhe unë të shkruani vetëm përgjigje? >> Yeah, le të të shkruani vetëm përgjigjen. 327 00:20:12,760 --> 00:20:18,940 Rregull. Dhe tani ai ka për të kthyer mua diçka. Përsosur. Bukur Segue. 328 00:20:18,940 --> 00:20:23,120 Kështu që tani ai dorëzon mua mbrapa vlerën e 8 në këtë rast, dhe çfarë të bëj me të? 329 00:20:23,120 --> 00:20:28,250 Në fakt - le të shohim, të merrni këtë të drejtë. Çfarë jam unë do të bëj me të? 330 00:20:28,250 --> 00:20:33,440 Tani unë jam duke shkuar për të marrë këtë vlerë dhe në fakt ruajtur atë në ato bit të njëjta në kujtesës. 331 00:20:33,440 --> 00:20:35,170 Por njoftim unë jam i lloj i duke luftuar këtu. 332 00:20:35,170 --> 00:20:38,210 Unë jam një pak i hutuar, sepse ku mund unë në fakt shkruaj vlerën e X, 333 00:20:38,210 --> 00:20:43,150 për shkak se ajo që unë kam bërë vetëm është Ken fizikisht dora një copë letër që kishte vlerën 2, 334 00:20:43,150 --> 00:20:46,590 e cila ishte i x, dhe në të vërtetë, kjo është pikërisht ajo që ka ndodhur. 335 00:20:46,590 --> 00:20:50,210 Pra, ajo rezulton jashtë se kur ju të telefononi funksionin dhe ju të kalojë në një argument 336 00:20:50,210 --> 00:20:53,290 ashtu si hello, bota ose ju të kalojë në një argument si 2, 337 00:20:53,290 --> 00:20:57,110 në përgjithësi, ju jeni duke kaluar në një kopje të të atij argument. 338 00:20:57,110 --> 00:21:00,730 Dhe kështu që vetëm si unë shkroi poshtë numrin 2 këtu dhe të i dorëzoi atë për të Ken, 339 00:21:00,730 --> 00:21:04,720 që duhet të të thotë se unë ende kanë një kopje të vlerës së 2 diku 340 00:21:04,720 --> 00:21:08,890 për shkak se të vërtetë, tani që unë kam gotten mbrapa vlerën 8, kam nevojë për për të shkuar mbrapa në RAM 341 00:21:08,890 --> 00:21:12,130 dhe në fakt shkruani poshtë 8 ku kam dikur kishte numrin 2. 342 00:21:12,130 --> 00:21:16,950 Pra vizualisht, mbani mend këtë nocion të kalimit në, fjalë për fjalë, një kopje të vlerës. 343 00:21:16,950 --> 00:21:20,780 >> Ken bën gjë e i tij, duart mua mbrapa diçka - në këtë rast një vlerë të si 8 - 344 00:21:20,780 --> 00:21:24,980 dhe pastaj unë kam të bëjë diçka me atë vlerë në qoftë se unë doni të mbani atë rreth. 345 00:21:24,980 --> 00:21:29,650 Kështu që të gjithë kjo do të të vijnë kthehet për të jetë mbi të gjitha shumë të njohur përpara se të kohë të gjatë. 346 00:21:29,650 --> 00:21:34,920 Thank you so much për këtë demo këtu, Ken. [Duartrokitje] 347 00:21:34,920 --> 00:21:36,920 Bërë shumë mirë. 348 00:21:36,920 --> 00:21:42,690 Le të të shohim se si që përfundimisht lidhet me disa prej funksionit duke bërë thirrje që ne kemi qenë duke bërë këtu. 349 00:21:42,690 --> 00:21:47,910 Më lejoni të të shkojnë përpara dhe për të sjellë na përsëri në shembull cubing këtu. 350 00:21:47,910 --> 00:21:53,300 Vini re se në qoftë se ne duam që në fakt ka fillojë të marrë këtë më tej, 351 00:21:53,300 --> 00:21:57,570 ne jemi duke shkuar të kemi të jenë të ndërgjegjshëm i faktit se x numri që është duke u kaloi në këtu 352 00:21:57,570 --> 00:22:01,530 është i ndryshëm nga se çfarë po në fakt duke u kaluar në të funksion. 353 00:22:01,530 --> 00:22:05,880 Pra, përsëri, kjo të kalojë nga një kopje do të bëhet mjaft germane në vetëm një moment. 354 00:22:05,880 --> 00:22:09,580 Le të marrin një vështrim në diçka që nuk ka fare të drejtë të punojnë ende. 355 00:22:09,580 --> 00:22:13,250 Unë jam duke shkuar për të shkuar përpara dhe të hapur një shembull të tretë buggy, e cila është me të meta nga natyra, 356 00:22:13,250 --> 00:22:18,550 dhe ajo është quajtur buggy3 dhe zbaton një funksion shkëmbejnë. 357 00:22:18,550 --> 00:22:25,110 Këtu kemi një funksion kryesor që ka x dhe y initialized arbitrare të 1 dhe 2, përkatësisht. 358 00:22:25,110 --> 00:22:27,700 Ne mund të përdorim GetInt, por ne vetëm duhet një ushtrim të thjeshtë, 359 00:22:27,700 --> 00:22:30,170 kështu që është e vështirë-koduar si 1 dhe 2. 360 00:22:30,170 --> 00:22:35,340 Në linjat 21 dhe 22, ne duket të shtypura nga X dhe Y, 1 në linjë. 361 00:22:35,340 --> 00:22:39,720 Pastaj on line 23, unë jam pretendojnë shkëmbejnë këto vlera, dot, dot, dot. 362 00:22:39,720 --> 00:22:44,170 I duket të thirrur një funksion në përputhje 24 swap quajtur që merr 2 argumente. 363 00:22:44,170 --> 00:22:48,300 Është krejtësisht legit për funksionet për të marrë 2 argumente. Ne kemi parë printf bëjmë atë tashmë. 364 00:22:48,300 --> 00:22:51,830 >> Pra, me sa duket swap merr X dhe Y, dhe si emrin e saj sugjeron se, 365 00:22:51,830 --> 00:22:54,670 Unë do të shpresoj se ajo do të bie në ujdi këto 2 vlera. 366 00:22:54,670 --> 00:23:00,090 Pra, atëherë unë pretendojnë on line 25 "Swapped!" dhe unë ribotim x dhe y 367 00:23:00,090 --> 00:23:03,070 nën supozimin se ata kanë qenë me të vërtetë swapped. 368 00:23:03,070 --> 00:23:06,080 Por në qoftë se unë në fakt të drejtuar këtë program - më lejoni të hapur një dritare terminali, 369 00:23:06,080 --> 00:23:09,860 më lejoni të bëjë buggy3 - si emri sugjeron, kjo nuk do të përfundojë mirë 370 00:23:09,860 --> 00:23:15,770 sepse kur kam hit Enter, vini re se x është 1, y është 2, 371 00:23:15,770 --> 00:23:19,420 dhe ende në fund të programit, ata janë ende, në fakt, të njëjtën gjë. 372 00:23:19,420 --> 00:23:22,960 Pra, bazuar në demonstratën vetëm tani me Ken, çfarë po ndodh në të vërtetë? 373 00:23:22,960 --> 00:23:28,710 Le pikiatë në këtë funksion swap. Kjo është super të shkurtër. Është vetëm disa rreshta të kodit të gjatë. 374 00:23:28,710 --> 00:23:34,520 Por ajo që është problemi themelor i bazuar në histori e thjeshtë tha deri këtu me Ken? 375 00:23:34,520 --> 00:23:36,670 Pse është swap thyer? 376 00:23:36,670 --> 00:23:39,660 [Student] Ju jeni ruajtjen në një kopje, jo ndryshueshme. 377 00:23:39,660 --> 00:23:43,980 Saktësisht. Ne jemi ruajtjen në një kopje, jo variable vetë. 378 00:23:43,980 --> 00:23:47,170 Me fjalë të tjera, duket se merr swap 2 argumente, një int, 379 00:23:47,170 --> 00:23:49,370 dhe ajo e quajtur arbitrarisht a dhe b, 380 00:23:49,370 --> 00:23:54,420 dhe deri këtu unë kam kaluar në x dhe y, të cilat janë respektivisht 1 dhe 2, 381 00:23:54,420 --> 00:23:58,770 por unë nuk jam vërtetë kalon në X, unë nuk jam vërtetë kalon në y, 382 00:23:58,770 --> 00:24:01,450 Unë jam duke kaluar një kopje e X dhe një kopje të y. 383 00:24:01,450 --> 00:24:04,510 Është pothuajse sikur ju kopjohet dhe të ngjit në swap 384 00:24:04,510 --> 00:24:07,810 vlerat që ju dëshironi që ajo të vërtetë të manipuluar. 385 00:24:07,810 --> 00:24:14,480 Pra, në qoftë se është rasti, kur unë të fillojë programi ekzekutimin e linjës 35 pastaj 36, 386 00:24:14,480 --> 00:24:18,650 kur të shkoj në linjë 37, në këtë pikë, në histori, ajo që është vlera e një? 387 00:24:21,040 --> 00:24:25,050 Në këtë moment në histori, line 37, çfarë është vlera e një në këtë pikë? >> [Student] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] Ajo duhet të jetë vetëm 1, të drejtë, sepse x kaloi si argumenti i parë, 389 00:24:29,280 --> 00:24:33,080 dhe ky funksion vetëm në mënyrë arbitrare është duke bërë thirrje argumentin e saj të parë një. 390 00:24:33,080 --> 00:24:38,200 Ngjashëm është y Argumenti i dytë, dhe kjo është vetëm në mënyrë arbitrare duke e quajtur b dytë argument. 391 00:24:38,200 --> 00:24:40,990 >> Kjo dikotomi është në të vërtetë mjaft të shpjegohet thjesht. Mendoni se ajo. 392 00:24:40,990 --> 00:24:43,320 Asnjë prej nesh kanë takuar personin i cili shkroi printf, 393 00:24:43,320 --> 00:24:50,770 kështu që me siguri, ai ose ajo nuk ka asnjë ide se çfarë variablat tona 30 vjet më vonë do të quhet. 394 00:24:50,770 --> 00:24:56,650 Pra, nuk duhet të jetë një dallim në mes të asaj që ju e quani variablave në funksionet që ju jeni me shkrim 395 00:24:56,650 --> 00:25:02,080 dhe atë që ju e quani variablave në funksionet që ju jeni duke bërë thirrje ose duke përdorur. 396 00:25:02,080 --> 00:25:05,340 Pra, me fjalë të tjera, unë kam shkruar variablave mia si X dhe Y, 397 00:25:05,340 --> 00:25:08,890 por në qoftë se dikush tjetër kishte shkruar funksionin swap, ai ose ajo sigurisht nuk do të dinë 398 00:25:08,890 --> 00:25:10,690 çfarë variablat e mia do të quhet, 399 00:25:10,690 --> 00:25:13,830 në mënyrë të kuptojë se kjo është arsyeja pse ju keni këtë dualitet e emrave. 400 00:25:13,830 --> 00:25:16,750 Teknikisht, unë mund ta bëjë këtë duke rastësi, 401 00:25:16,750 --> 00:25:20,080 por ata ende do të kalojë në aq kopje. 402 00:25:20,080 --> 00:25:23,650 Ajo do të jetë vetëm një rastësi e pastër estetikisht në qoftë se personi i cili shkroi swap 403 00:25:23,650 --> 00:25:26,150 kishte përdorur emrat e njëjta. 404 00:25:26,150 --> 00:25:32,370 Pra, në këtë pikë në histori, line 37, një është 1, b është 2, dhe tani unë të vazhdojë të bie në ujdi tyre. 405 00:25:32,370 --> 00:25:34,900 Para së gjithash, më lejoni të vërtetë ta bëjë këtë shumë më thjesht. 406 00:25:34,900 --> 00:25:36,690 Unë nuk e di se çfarë ato 3 rreshta të kodit janë bërë. 407 00:25:36,690 --> 00:25:41,210 Më lejoni vetëm të bëjë këtë: b = a; a = b; bërë. 408 00:25:41,210 --> 00:25:44,690 Pse është kjo thyera, logjikisht? 409 00:25:46,490 --> 00:25:48,900 Kjo është lloj i gjë e intuitive, e drejtë? 410 00:25:48,900 --> 00:25:52,560 Pra, një b dhe b bëhet bëhet një, 411 00:25:52,560 --> 00:25:57,730 por problemi është se sa më shpejt të linjës 37 ekzekuton, çfarë është vlera e A dhe B? 412 00:25:57,730 --> 00:26:03,410 E njëjtë, 1, sepse ju keni clobbered, në mënyrë që të flasin, ju keni ndryshuar b të barabartë a. 413 00:26:03,410 --> 00:26:08,890 Pra, një herë Shkarko 37 ka ekzekutuar, që është e madhe, ju tani keni 2 kopje të numrit 1 414 00:26:08,890 --> 00:26:13,350 brenda këtij funksioni, kështu që atëherë kur ju thoni në linjë 38 a = b, 415 00:26:13,350 --> 00:26:17,640 ju jeni lloj i dehur, sepse ju jeni vetëm caktimin 1-1. 416 00:26:17,640 --> 00:26:20,580 Ju keni lloj i humbur vlerën që kujdesej për. 417 00:26:20,580 --> 00:26:23,220 Pra në versionin origjinal të kësaj, njoftim se çfarë kam bërë. 418 00:26:23,220 --> 00:26:26,850 Unë në vend që kishte një linjë të tretë të kodit që dukej si kjo. 419 00:26:26,850 --> 00:26:28,580 Unë deklaroj një ndryshore të përkohshme. 420 00:26:28,580 --> 00:26:32,170 >> Tmp është një emër shumë i zakonshëm për një ndryshore të përkohshme, dhe kjo është një int 421 00:26:32,170 --> 00:26:34,580 sepse ai ka për të përputhen me atë që unë dua të bëjë një kopje të. 422 00:26:34,580 --> 00:26:39,770 I ruajtur kopje të një brendësi të tmp, kështu që sapo ka ekzekutuar 37 linja, 423 00:26:39,770 --> 00:26:45,860 vlera e një është - kontroll i shpejtë gjendje normale - 1, vlera e b është 2, 424 00:26:45,860 --> 00:26:48,970 dhe vlera e tmp është gjithashtu 1. 425 00:26:48,970 --> 00:26:52,060 Deri tani unë kryej linjë 38. 426 00:26:52,060 --> 00:27:00,540 Pasi Shkarko 38 ekzekuton, një merr mbi vlerën e b. Dhe b ishte 2, kështu një është tani 2. 427 00:27:00,540 --> 00:27:05,210 Kështu në këtë pikë në tregimit, një është 2, b është 2, dhe tmp është 1, 428 00:27:05,210 --> 00:27:11,060 kështu që tani logjikisht, ne mund vetëm vlera tmp pllum-së në b dhe ne jemi duke bërë. 429 00:27:11,060 --> 00:27:12,800 Pra, ne kemi zgjidhur atë problem. 430 00:27:12,800 --> 00:27:17,720 Për fat të keq, kur kam drejtuar këtë program në këtë formë, ai nuk ka të vërtetë të bie në ujdi asnjë vlera. 431 00:27:17,720 --> 00:27:20,100 Por të jetë i qartë, pse? 432 00:27:23,660 --> 00:27:26,450 I fiksuar problemin logjik nga vetëm një moment më parë, 433 00:27:26,450 --> 00:27:31,020 por përsëri, në qoftë se unë të drejtuar këtë program, x dhe y të mbeten të pandryshuara 434 00:27:31,020 --> 00:27:33,310 deri në fund të ekzekutimit të programit. 435 00:27:33,310 --> 00:27:37,220 [Komenti padëgjueshme Studenti] >> Ne nuk kemi kthyer asgjë, kështu që kjo është e vërtetë. 436 00:27:37,220 --> 00:27:39,670 Por kjo rezulton se ka pak e një problemi këtu, sepse deri më tani, 437 00:27:39,670 --> 00:27:44,170 vetmja gjë që ne kemi qenë në gjendje për t'u kthyer është një gjë, dhe ky është një kufizim i C. 438 00:27:44,170 --> 00:27:49,070 Ju mund vetëm kthehen vërtetë një vlerë, në të cilin rast Jam lloj i mbërthyer këtu 439 00:27:49,070 --> 00:27:53,310 sepse unë mund të kthehen vlerën e re e X ose unë mund të kthehen vlerën e re të y, 440 00:27:53,310 --> 00:27:55,190 por unë dua të dy mbrapa. 441 00:27:55,190 --> 00:27:58,650 Pra, nuk është kthyer zgjidhje e thjeshtë këtu. 442 00:27:58,650 --> 00:28:01,710 Por problemi në thelb është arsyeja pse? Çfarë kemi swapped të vërtetë? 443 00:28:01,710 --> 00:28:04,190 [Studenti] a dhe b. >> A dhe b. 444 00:28:04,190 --> 00:28:08,230 Por a dhe b janë kopje e X dhe Y, që do të thotë që ne vetëm e bëri të gjithë këtë punë, 445 00:28:08,230 --> 00:28:11,650 ne vetëm 3 minuta shpenzuar duke folur në lidhje me funksionin e swap dhe të gjitha 3 e këtyre variablave, 446 00:28:11,650 --> 00:28:15,420 dhe kjo është e madhe, të përkryer i saktë në izolim, 447 00:28:15,420 --> 00:28:20,740 por dhe fushëveprimi B është vetëm në këto rreshta këtu. 448 00:28:20,740 --> 00:28:24,790 >> Pra, vetëm si një për lak, në qoftë se ju të deklarojë një numër të plotë i brenda për lak, 449 00:28:24,790 --> 00:28:28,760 Në mënyrë të ngjashme, në qoftë se ju jeni duke deklaruar brenda a dhe b të një funksion që ju keni shkruar, 450 00:28:28,760 --> 00:28:33,320 ata janë të vlefshme vetëm brenda funksionit të asaj, që do të thotë sa më shpejt që swap është bërë ekzekutimin 451 00:28:33,320 --> 00:28:38,470 dhe ne të shkojnë nga 24 deri linjë linjës 25, x dhe y nuk kanë ndryshuar fare. 452 00:28:38,470 --> 00:28:42,790 Ju vetëm humbur një të tërë shumë kohë shkëmbejnë kopje të variablave. 453 00:28:42,790 --> 00:28:47,010 Pra, del se zgjidhja për këtë është në fakt jo të dukshme. 454 00:28:47,010 --> 00:28:50,670 Kjo nuk është mjaft e mjaftueshme për të kthyer vlerat sepse ne mund të kthehen vetëm 1 vlerë, 455 00:28:50,670 --> 00:28:53,470 dhe unë vërtet nuk dua të bie në ujdi dy x dhe y në të njëjtën kohë, 456 00:28:53,470 --> 00:28:55,210 kështu që ne do të kemi për të ardhur përsëri në këtë. 457 00:28:55,210 --> 00:29:01,020 Por për tani, realizuar se çështja rrjedh thelbësisht nga fakti se a dhe b janë kopje 458 00:29:01,020 --> 00:29:03,630 dhe ata janë në fushëveprimin e tyre. 459 00:29:03,630 --> 00:29:05,050 Le të përpiqen për të zgjidhur këtë në një farë mënyre. 460 00:29:05,050 --> 00:29:11,250 Më lejoni të vërtetë lëviz prapa dhe e hapur deri këtu, le të themi, një variant i katërt i kësaj, buggy4. 461 00:29:11,250 --> 00:29:13,370 Po në lidhje me këtë? 462 00:29:13,370 --> 00:29:17,810 Ky është një problem i ngjashëm, por më e thjeshtë për të parë para se të marrë një goditje me thikë në zgjidhjen e saj. 463 00:29:17,810 --> 00:29:24,190 Ky program quhet rritje, dhe kjo duket initializes një numër të plotë x me 1 në linjë 18. 464 00:29:24,190 --> 00:29:28,150 Unë pastaj pretendojnë x është 1, atëherë unë pretendojnë "bën rritjen ..." 465 00:29:28,150 --> 00:29:33,730 Unë pastaj e quajnë rritje të, por pastaj në linjat 22 dhe 23, unë pretendojnë kjo është incremented, 466 00:29:33,730 --> 00:29:40,220 Unë pretendojnë x tani është çfarëdo qoftë ajo është - 2, me sa duket - por ky program është buggy. 467 00:29:40,220 --> 00:29:42,610 Çfarë është problemi? 468 00:29:43,440 --> 00:29:50,160 Po. >> [Përgjigja e padëgjueshme Student] >> Pikërisht. 469 00:29:50,160 --> 00:29:52,490 Pra, x është shpallur, natyrisht, on line 18. 470 00:29:52,490 --> 00:29:54,700 Kjo është brenda formatimin e teksteve kaçurrel KRYESORE së. 471 00:29:54,700 --> 00:29:58,440 Pra, përgjigja e thjeshtë këtu është se ndërsa x ekziston këtu, 472 00:29:58,440 --> 00:30:03,930 ajo nuk ekziston në linjë 32, kështu që ky program të vërtetë nuk do të përpilojnë. 473 00:30:03,930 --> 00:30:07,940 Përpiluesit kur mundohem hartimin këtë kod do të bërtas në mua 474 00:30:07,940 --> 00:30:14,100 për disa identifikues padeklaruar ose diçka për këtë qëllim. Në fakt, le të përpiqemi. 475 00:30:14,100 --> 00:30:18,470 Kjo është bërë buggy4. Nuk është. 476 00:30:18,470 --> 00:30:22,110 Përdorimi i 'X' identifikues padeklaruar në linjë 32. 477 00:30:22,110 --> 00:30:25,580 Dhe në fakt, le të jenë më të qartë këtu sot në mënyrë që kjo është e dobishme 478 00:30:25,580 --> 00:30:27,580 në orarit të punës dhe në shtëpi. 479 00:30:27,580 --> 00:30:29,300 >> Vini re se kjo është pak shkruar cryptically. 480 00:30:29,300 --> 00:30:37,270 Por fakti se ka tingëllimë yelled në ne, duke thënë buggy4.c: 32:5, është në të vërtetë të dobishme. 481 00:30:37,270 --> 00:30:42,050 Kjo do të thotë se gabimi është në linjë 32 në pozicionin e karakterit 5. 482 00:30:42,050 --> 00:30:46,700 Pra 1, 2, 3, 4, 5. Kjo është, në fakt, ku është problemi. 483 00:30:46,700 --> 00:30:49,790 Dhe gjithashtu, shumë, mbani në mend në orarit të punës dhe në shtëpi, unë jam me fat këtu. 484 00:30:49,790 --> 00:30:52,990 Unë kam një gabim. Ajo do të jetë relativisht e lehtë për të rregulluar. 485 00:30:52,990 --> 00:30:55,990 Por në qoftë se ju merrni një ekran të plotë të tërë mesazhet e gabimit e madhe, 486 00:30:55,990 --> 00:31:00,330 përsëri e kuptojnë se ai më i fundit mund të jetë vetëm një tregues i larti. 487 00:31:00,330 --> 00:31:03,450 Pra, gjithmonë ndjekje poshtë mete tuaja nga lartë poshtë 488 00:31:03,450 --> 00:31:05,820 sepse nuk mund të jetë vetëm një efekt zinxhir daisy 489 00:31:05,820 --> 00:31:09,240 që është sugjeruar keni probleme mënyrë më shumë se ju në të vërtetë të bëjë. 490 00:31:09,240 --> 00:31:15,150 Pra, si mund ta rregullojmë këtë, ne në qoftë se qëllimi im është që rritja x? >> [Student] Bëni x globale. 491 00:31:15,150 --> 00:31:17,060 Mirë, kështu që ne mund të bëjë x globale. 492 00:31:17,060 --> 00:31:20,480 Le të marrin shkurtore që kam paralajmëruar për më herët, por dreq, ne vetëm duhet një doze, 493 00:31:20,480 --> 00:31:25,730 kështu që le të them vetëm int x deri këtu. Kjo e bën x globale. 494 00:31:25,730 --> 00:31:31,800 Deri tani kryesor ka qasje në të dhe shtim ka qasje në të, 495 00:31:31,800 --> 00:31:34,110 dhe kështu më lejoni të shkoj përpara dhe të përpilojnë këtë tani. 496 00:31:34,110 --> 00:31:37,630 Bëni buggy4, Enter. Duket për të hartuar tani. 497 00:31:37,630 --> 00:31:41,230 Le të drejtuar buggy4. Dhe kjo duket të vërtetë punojnë. 498 00:31:41,230 --> 00:31:45,150 Kjo është një nga këto gjëra që po bëni si them unë, jo si bëj unë, 499 00:31:45,150 --> 00:31:47,010 siç e kam bërë vetëm këtu, sepse në përgjithësi, 500 00:31:47,010 --> 00:31:50,440 programet tona do të merrni shumë më interesante dhe shumë më tepër se kjo, 501 00:31:50,440 --> 00:31:56,390 dhe nëse zgjidhja juaj për problemet e jetës është vetëm vënë të gjitha variablat në krye të dosjes suaj, 502 00:31:56,390 --> 00:31:59,690 shumë shpejt do të merrni programe tmerrësisht e vështirë për të menaxhuar. 503 00:31:59,690 --> 00:32:02,190 Ajo merr vështirë për të menduar deri emra të rinj ndryshueshme, 504 00:32:02,190 --> 00:32:05,240 ajo merr vështirë për të kuptuar se çfarë është duke bërë atë variabël, 505 00:32:05,240 --> 00:32:08,460 dhe kështu në përgjithësi, kjo nuk është një zgjidhje e mirë. 506 00:32:08,460 --> 00:32:10,030 Pra, le ta bëjmë këtë më mirë. 507 00:32:10,030 --> 00:32:12,160 Ne nuk duam që të përdorni një ndryshore globale këtu. 508 00:32:12,160 --> 00:32:16,240 >> Unë dua të ardhura x, kështu që unë mund të duket - 509 00:32:16,240 --> 00:32:18,670 në fund të ditës, kjo është lloj i një histori pa kuptim, sepse ne vetëm të bëjë këtë - 510 00:32:18,670 --> 00:32:24,450 por në qoftë se unë nuk e di për atë operatori ose unë nuk u lejua për të ndryshuar atë në kryesore në vetvete, 511 00:32:24,450 --> 00:32:30,730 si tjetër mund ta zbatojë Ken gjatë këtu këtë herë jo për të kubike, por të ardhura? 512 00:32:31,380 --> 00:32:33,190 Si mund ta ndryshoj këtë gjë këtu? Po. 513 00:32:33,190 --> 00:32:38,480 [Student] Pass në x dhe pastaj kthehen [padëgjueshme] >> Mirë, mirë. 514 00:32:38,480 --> 00:32:41,900 Kështu që pse nuk e kam të kalojë në x dhe pastaj në vend se ta kthejë atë, 515 00:32:41,900 --> 00:32:44,870 pse nuk e kam thjesht kthehen x + 1. 516 00:32:44,870 --> 00:32:47,710 Një çift shumë gjëra duhet të ndryshojë këtu. Unë jam në rrugën e duhur. 517 00:32:47,710 --> 00:32:49,770 Çfarë tjetër nuk kam nevojë të shkulje? Dikush tjetër. Po. 518 00:32:49,770 --> 00:32:51,740 [Përgjigja e padëgjueshme Student] 519 00:32:51,740 --> 00:32:54,730 Unë kam nevojë për të ndryshuar llojin e kthimit të ardhura për shkak se ajo nuk është e pavlefshme. 520 00:32:54,730 --> 00:32:57,780 Mjetet e pavlefshme asgjë nuk është duke u kthyer, por tani ajo është e qartë, 521 00:32:57,780 --> 00:32:59,830 kështu që kjo duhet të ndryshojë për të - >> [Student] int. 522 00:32:59,830 --> 00:33:02,740 int të jenë në përputhje me çdo gjë që unë jam në të vërtetë kthehen. 523 00:33:02,740 --> 00:33:05,180 Tani diçka tjetër është ende buggy këtu. Po. 524 00:33:05,180 --> 00:33:08,400 [Përgjigja e padëgjueshme Studenti] >> [Malan] Kështu që kam nevojë për të ardhura x? 525 00:33:08,400 --> 00:33:12,080 [Përgjigja e padëgjueshme Studenti] >> [Malan] Ah, kështu që kam nevojë për të kaluar x. 526 00:33:12,080 --> 00:33:16,660 Kështu që kam nevojë për të bërë këtë këtu. >> [Komenti padëgjueshme Student] 527 00:33:16,660 --> 00:33:20,050 [Malan] Pra prototip, unë kam për të ndryshuar këtë deri këtu. 528 00:33:20,050 --> 00:33:22,930 Pra, kjo duhet të bëhet një int, kjo ka për të bërë - 529 00:33:22,930 --> 00:33:25,620 hmm, unë në fakt kanë një bug këtu poshtë. Le të zgjidhur këtë një të parë. 530 00:33:25,620 --> 00:33:29,590 Çfarë duhet të vërtetë të jetë kjo? Ajo e mori të jetë një diçka int. 531 00:33:29,590 --> 00:33:32,700 Kjo mund të jetë x, por sinqerisht, në qoftë se ju filloni duke bërë thirrje të gjitha variablave x tuaj, 532 00:33:32,700 --> 00:33:35,390 ajo do të marrë më pak dhe më pak të qartë se cili është cili. 533 00:33:35,390 --> 00:33:39,560 >> Pra, le të vetëm në mënyrë arbitrare të zgjidhni një konventë të ndryshme emërtimin për funksionet e mia ndihmëse, 534 00:33:39,560 --> 00:33:41,940 funksionet që unë jam shkrim. Ne do të thërrasë atë një, ose ne mund ta quajmë atë - 535 00:33:41,940 --> 00:33:45,010 Le të thërrasë atë numër të jetë edhe më i qartë. 536 00:33:45,010 --> 00:33:47,560 Pra, atëherë unë duhet të kthehen çfarëdo numri është plus 1, 537 00:33:47,560 --> 00:33:50,740 dhe tani unë duhet të ndryshojë 1 gjë tjetër deri këtu dhe një gjë tjetër deri këtu. 538 00:33:50,740 --> 00:33:54,350 Çfarë duhet të ndryshojë në përputhje parë 21? >> [Përgjigja e padëgjueshme Student] 539 00:33:54,350 --> 00:33:57,610 [Malan] Unë duhet të caktojë atë në x. Unë nuk mund të telefononi rritje të (x). 540 00:33:57,610 --> 00:34:01,960 Unë kam nevojë për të kujtuar përgjigjen duke ndryshuar vlerën e x në anën e majtë. 541 00:34:01,960 --> 00:34:04,680 Dhe, edhe pse x është tani në të majtë dhe të djathtë, që është krejtësisht gjobë 542 00:34:04,680 --> 00:34:08,860 sepse djathtë anën e merr ekzekutuar parë pastaj merr gjë plopped në të majtë - 543 00:34:08,860 --> 00:34:10,600 x në këtë rast. 544 00:34:10,600 --> 00:34:12,159 Dhe pastaj në fund, kjo është një fix lehtë tani. 545 00:34:12,159 --> 00:34:17,230 Kjo duhet vetëm të përputhen me atë që është poshtë, numri int. 546 00:34:17,230 --> 00:34:20,570 Kështu që një bandë e tërë e ndryshimeve për një funksion të vërtetë budallaqe 547 00:34:20,570 --> 00:34:24,420 por përfaqësuesi i gjërave që ne do të duan të bëjnë gjithnjë. 548 00:34:24,420 --> 00:34:27,090 Pra, ti buggy4. Unë kam dehur diku. 549 00:34:27,090 --> 00:34:30,139 Oh, Zoti im. Pesë gabime në një program 6-line. 550 00:34:30,139 --> 00:34:35,690 Pra, çfarë është e gabuar on line 18, karakteri 5? 551 00:34:35,690 --> 00:34:39,610 Kështu që unë duhet të deklarojnë këtë, int. 552 00:34:39,610 --> 00:34:41,920 Le të shohim. Ka një bandë e tërë e gabimeve të tjera. 553 00:34:41,920 --> 00:34:47,010 Oh, Zoti im - 19, 18, 21 - por përsëri, le të vetëm të pastruar në ekran, L Kontrollit këtu, 554 00:34:47,010 --> 00:34:49,380 dhe përsëritje tingëllimë. 555 00:34:49,380 --> 00:34:51,340 Pra 5 probleme në fakt është vetëm që 1. 556 00:34:51,340 --> 00:34:57,520 Pra, tani le të kandidojë buggy4, Enter. Uf, x është incremented saktë. 557 00:34:57,520 --> 00:35:02,720 Dakord. Ndonjë pyetje si të ardhura numrat? Po. 558 00:35:02,720 --> 00:35:09,870 [Pyetja padëgjueshme Studenti] >> Pyetje e mirë. 559 00:35:09,870 --> 00:35:14,220 Si është e mundur që unë mund vetëm të ndryshojë x me numrin dhe programi do të dinë menjëherë? 560 00:35:14,220 --> 00:35:16,200 >> Përsëri, të mendojnë për atë si ky abstraksion. 561 00:35:16,200 --> 00:35:21,600 Pra, nëse unë jam kryesor dhe Ken është rritje, sinqerisht, unë nuk bëj kujdes atë që e quan iPad Ken tij. 562 00:35:21,600 --> 00:35:26,570 Unë nuk bëj kujdes atë që ai e quan çdo gjë që ka të bëjë me zbatimin e tij këtë funksionalitet. 563 00:35:26,570 --> 00:35:33,340 Ky është një detaj zbatimi që unë, kryesore, nuk kanë për t'u kujdesur për të. 564 00:35:33,340 --> 00:35:38,250 Dhe kështu thjesht duke ndryshuar atë vazhdimisht në brendësi të funksionit - Numri këtu dhe numri këtu - 565 00:35:38,250 --> 00:35:40,960 është e gjitha ajo merr kaq kohë që unë recompile. 566 00:35:40,960 --> 00:35:44,180 Kjo është lloj i si në qoftë se ju mendoni se për shumë prej nesh, ata prej jush me patentën e shoferit 567 00:35:44,180 --> 00:35:46,770 të cilët kanë nxitur apo në qoftë se ju keni shtyrë edhe në një makinë, 568 00:35:46,770 --> 00:35:50,950 shumica prej nesh kanë asnjë ide se si punon një makinë nën kapuç. 569 00:35:50,950 --> 00:35:54,970 Dhe me të vërtetë, në qoftë se keni hapur deri individualitet, shumica prej nesh - përfshirë veten time - 570 00:35:54,970 --> 00:35:56,940 nuk do të me të vërtetë e di se çfarë ne jemi duke kërkuar në, 571 00:35:56,940 --> 00:35:59,220 lloj si ju mund të ndjeheni me sende si këtë të drejtë tani. 572 00:35:59,220 --> 00:36:01,480 Por ne nuk mund të vërtetë duhet të kujdesen se si punon makina, 573 00:36:01,480 --> 00:36:05,970 ne nuk kemi për t'u kujdesur atë që të gjithë e shufra dhe Pistons dhe kabllot brenda e makinave 574 00:36:05,970 --> 00:36:08,160 në të vërtetë janë duke bërë. 575 00:36:08,160 --> 00:36:12,770 Pra, diçka si ajo që ju e quani pistoni nuk ka rëndësi këtu, në këtë rast. Njëjtën ide. 576 00:36:12,770 --> 00:36:25,300 Po. >> [Pyetja padëgjueshme Student] 577 00:36:25,300 --> 00:36:29,180 Nëse ka përdor shumë të ndryshueshme momentin xa më parë, 578 00:36:29,180 --> 00:36:32,150 ju, programues, do të duhet të ndryshojë ato kudo. 579 00:36:32,150 --> 00:36:36,600 Ose ju mund të vërtetë të bëjë, File menu, dhe pastaj a, Replace - diçka si kjo - 580 00:36:36,600 --> 00:36:39,170 por ju do të keni për të bërë këto ndryshime veten. 581 00:36:39,170 --> 00:36:47,450 Ju duhet të jenë në përputhje. >> [Student] Nëse ka shumë variabla të shumta [padëgjueshme] 582 00:36:47,450 --> 00:36:53,100 Një mënyrë të veçantë si këtu, në qoftë se kjo ishte një tjetër int numrin? >> [Student] Correct. 583 00:36:53,100 --> 00:36:56,590 [Malan] Yeah. Mënyrë rëndësi kur ju jeni duke e quajtur funksion. 584 00:36:56,590 --> 00:37:00,050 >> Pra, nëse unë u quajtur rritje të këtu me presje diçka diçka, 585 00:37:00,050 --> 00:37:01,680 ka një hartë të drejtpërdrejtë. 586 00:37:01,680 --> 00:37:05,690 Variabli i parë, çfarëdo qoftë ajo është quajtur, është bërë një kopje të argumentit të parë gjatë këtu. 587 00:37:05,690 --> 00:37:07,760 Më vjen keq. Kjo nuk duhet të jetë një parantezë. 588 00:37:07,760 --> 00:37:11,490 Linjat e dytë argumenti deri me një të dytë. Kështu që, po, ka rëndësi. Dakord. 589 00:37:11,490 --> 00:37:17,020 Më vjen keq. Mora rrugë të gjatë për të arritur atje. Pyetje të tjera? Dakord. 590 00:37:17,020 --> 00:37:20,610 Pra, le të shohim nëse ne nuk mund të pikturoj një tablo të asaj që është në të vërtetë ndodh këtu 591 00:37:20,610 --> 00:37:23,090 nën kapuç, në mënyrë që të flasin. 592 00:37:23,090 --> 00:37:26,640 Kjo është një drejtkëndësh që mund përfaqësojë kujtesën e kompjuterit tuaj. 593 00:37:26,640 --> 00:37:30,970 Edhe në qoftë se ju nuk keni ide se sa memorie punon apo si punon RAM, 594 00:37:30,970 --> 00:37:33,940 të paktën të supozojmë se ju keni bunches e saj këto ditë. 595 00:37:33,940 --> 00:37:36,280 Ju keni marrë megabajt të saj, ju keni marrë gigabajt të saj, 596 00:37:36,280 --> 00:37:40,870 dhe ne e dimë që nga java 0 bajt se një është vetëm ajo? >> [Student] 8 bit. 597 00:37:40,870 --> 00:37:42,950 8 bit, e drejtë? Pra 8 zero dhe 1. 598 00:37:42,950 --> 00:37:45,880 Pra, në qoftë se kompjuteri juaj ka një koncert të RAM, 2 Gigs RAM këto ditë, 599 00:37:45,880 --> 00:37:55,030 ju keni një miliardë apo 2 miliard byte memorje ose afërsisht 8 miliardë, ose 16 miliardë BITS 600 00:37:55,030 --> 00:37:56,890 brenda e kompjuterit tuaj. 601 00:37:56,890 --> 00:38:00,590 Ndryshe nga shembull pak wooly Willy, kjo nuk është grimca magnetike zakonisht më. 602 00:38:00,590 --> 00:38:04,450 Gjithnjë e më shumë - në laptopë të paktën - është disqet të forta shtetërore, SSD, 603 00:38:04,450 --> 00:38:08,580 që vetëm nuk kanë lëvizur pjesë. Kjo është e gjitha elektronike. Kjo është e gjitha elektrike-bazë. 604 00:38:08,580 --> 00:38:14,060 Pra, mendoni për këtë drejtkëndësh si vetëm përfaqësojnë 1 ose 2 gigabajt të memories që ju keni. 605 00:38:14,060 --> 00:38:16,020 >> Pra, kjo është një copë e kujtesës. 606 00:38:16,020 --> 00:38:19,830 Bota e shkencës kompjuterike është lloj i ndarë off 607 00:38:19,830 --> 00:38:22,950 chunks e kujtesës për të bërë gjëra të ndryshme. 608 00:38:22,950 --> 00:38:27,190 Për shembull, në qoftë se kjo është RAM kompjuterit tuaj, siç sugjerohet nga drejtkëndësh atje, 609 00:38:27,190 --> 00:38:31,130 rezulton se nga Konventa, në krye të RAM tuaj, kështu që të flasin, 610 00:38:31,130 --> 00:38:33,660 në përgjithësi është ajo që quhet një segment tekst. 611 00:38:33,660 --> 00:38:36,740 Ata janë 0s dhe 1s që ju keni hartuar. 612 00:38:36,740 --> 00:38:39,020 Pra, kur ne kemi shikuar nën kapuç në atë a.out është, 613 00:38:39,020 --> 00:38:41,980 të gjitha këto 0s dhe 1s, kur ju drejtuar një program, 614 00:38:41,980 --> 00:38:46,290 ata 0s dhe 1s janë të ngarkuar nga hard drive tuaj në diçka që quhet RAM, 615 00:38:46,290 --> 00:38:49,320 dhe në RAM ata janë vënë në krye. 616 00:38:49,320 --> 00:38:52,770 Ndërkohë, ju keni gjëra të tjera: nisja dhënave, uninitialize dhënave. 617 00:38:52,770 --> 00:38:57,510 Ato 2 Zona të tëra të memories referohen variablave globale, të cilat ju nuk keni shpesh përdorin 618 00:38:57,510 --> 00:39:00,760 por ndonjëherë nëse ju bëni, ata përfundojnë deri atje si. 619 00:39:00,760 --> 00:39:04,260 Pastaj ka disa sende të tjera: mjedis të ndryshueshëm, të cilat ne nuk do të kalojnë shumë kohë në, 620 00:39:04,260 --> 00:39:06,860 por pastaj 2 gjëra të rëndësishme që do të kthehet në të gjithë semestrit, 621 00:39:06,860 --> 00:39:08,550 rafte dhe tog. 622 00:39:08,550 --> 00:39:12,210 Pra, shumica e kujtesë të kompjuterit tuaj është e rezervuar kur drejtimin e një programi 623 00:39:12,210 --> 00:39:15,370 për diçka të quajtur rafte dhe diçka të quajtur tog. 624 00:39:15,370 --> 00:39:18,840 Ne nuk do të flasim rreth një grumbulli gurësh sot, por ne do të flasim për rafte. 625 00:39:18,840 --> 00:39:24,600 Rafte është menduar të sjell në mendje deri vizuale e tabaka sallë ngrënie vakt në Shtëpinë Mather 626 00:39:24,600 --> 00:39:28,110 ose kudo që ju ndodh që të jetë, ku salla ngrënie stafi pastrimin e tyre çdo ditë, 627 00:39:28,110 --> 00:39:30,180 ata rafte e tyre deri nga dyshemeja në deri, 628 00:39:30,180 --> 00:39:34,550 dhe të ngjashme, në kujtesë, nuk është kjo ide të vënë diçka në një pirg, 629 00:39:34,550 --> 00:39:36,860 vënë diçka në një pirg, duke vënë diçka në një pirg. 630 00:39:36,860 --> 00:39:38,240 Dhe çfarë ne do të thotë me këtë? 631 00:39:38,240 --> 00:39:41,860 >> Le të zoom në në gjysmën e vetëm më të ulët të këtij foto, RAM kompjuterit tuaj, 632 00:39:41,860 --> 00:39:44,330 të propozojë në vijim. 633 00:39:44,330 --> 00:39:48,170 Ajo rezulton se kur ju drejtuar një program si a.out apo Hello - 634 00:39:48,170 --> 00:39:50,100 çfarëdo programi është që ju keni shkruar - 635 00:39:50,100 --> 00:39:54,020 përsëri, ata 0s dhe 1s janë të ngarkuar nga hard drive tuaj, e cila është afat-gjatë magazinimit, 636 00:39:54,020 --> 00:39:57,230 qëndron aty edhe kur ju tërhiqni spinën, ngarkuar në RAM. 637 00:39:57,230 --> 00:40:00,610 RAM është më e shpejtë se hard drives - kjo është më e vogël se hard drives - 638 00:40:00,610 --> 00:40:03,300 por kjo është ajo ku programet jetojnë ndërsa ju jeni drejtimin e tyre. 639 00:40:03,300 --> 00:40:08,230 Pra, ju klikoni dy herë një program në një Mac apo PC, është ngarkuar nga hard drive në RAM. 640 00:40:08,230 --> 00:40:11,520 Sa më shpejt që është e ngarkuar në RAM, të shkojnë 0s dhe 1s në krye mënyrë, 641 00:40:11,520 --> 00:40:16,610 e ashtuquajtura segment tekst, por pastaj sa më shpejt që programi juaj në fakt fillon running, 642 00:40:16,610 --> 00:40:21,360 funksioni kryesor është quajtur, dhe kryesore, siç kemi parë, shpesh ka variabla lokale, 643 00:40:21,360 --> 00:40:24,870 dhe ajo ka ints dhe vargjet dhe karaktere dhe si. 644 00:40:24,870 --> 00:40:29,180 Pra, nëse programi juaj që keni shkruar ose program që ju keni klikuar dyfishtë 645 00:40:29,180 --> 00:40:32,970 përdorur disa variabla brenda e kryesor, 646 00:40:32,970 --> 00:40:37,240 ata të përfundojnë deri në fund të rafte tuaj të kujtesës, kështu që të flasin. 647 00:40:37,240 --> 00:40:39,410 Më konkretisht, çfarë e bën këtë të vërtetë do të thotë? 648 00:40:39,410 --> 00:40:48,450 Kjo thjesht do të thotë se në qoftë se ne kemi qenë duke shkuar për numrin e bytes RAM në kompjuterin tuaj, 649 00:40:48,450 --> 00:40:55,750 njoftim se kjo mund të jetë numër bajt 0, kjo mund të jetë numër bajt 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 të gjithë rrugën deri në 2 miliardë do të jetë mbi të gjitha rrugën deri atje në krye. 651 00:41:01,480 --> 00:41:05,880 Pra, me fjalë të tjera, kur ne flasim për memorie RAM ose në drejtim të bytes, 652 00:41:05,880 --> 00:41:11,500 ai thjesht do të thotë se dikush ka vendosur se çfarë duhet të numërojmë secili prej këtyre chunks të kujtesës. 653 00:41:11,500 --> 00:41:16,650 Pra, kur ju keni nevojë për një 32 bit int ose keni nevojë për 8 bit për një char, 654 00:41:16,650 --> 00:41:18,840 ku ata të përfundojnë në kujtesë? 655 00:41:18,840 --> 00:41:22,350 >> Konceptuale, ata vetëm të përfundojë deri në fund të këtij gjë të quajtur rafte. 656 00:41:22,350 --> 00:41:25,870 Por ajo që është interesante tani është, kur një funksion kryesor i quan - 657 00:41:25,870 --> 00:41:28,750 mendoj një funksion të quajtur foo, vetëm një emër arbitrare - 658 00:41:28,750 --> 00:41:32,330 ajo që ndodh është kryesor është në fund të këtij rafte e kujtesës; 659 00:41:32,330 --> 00:41:35,680 foo tani është vënë në krye të kryesore në kujtesë. 660 00:41:35,680 --> 00:41:40,990 Kështu që çdo ndryshore lokale që foo ka përfundojnë lloj konceptualisht mbi ato në kryesore. 661 00:41:40,990 --> 00:41:47,070 Nëse foo quan një funksion të quajtur bar, ato variabla të përfundojnë këtu. 662 00:41:47,070 --> 00:41:50,120 Nëse bar e quan diçka tjetër, këtu, këtu, këtu. 663 00:41:50,120 --> 00:41:53,830 Pra, çfarë është interesante në lidhje me drejtimin e një programi është se si ju e quani funksionet 664 00:41:53,830 --> 00:41:57,750 dhe si ato funksione telefononi funksionet dhe si ato funksione telefononi funksionet, 665 00:41:57,750 --> 00:42:01,470 keni ndërtuar këtë turrë e funksioneve në memorje. 666 00:42:01,470 --> 00:42:06,890 Dhe vetëm një herë në kthimin e funksionit ju filloni të keni atë kujtesës prapa. 667 00:42:06,890 --> 00:42:10,860 Pra, një nga mënyrat më të lehta për të dalë jashtë kujtesës në një program kompjuterik 668 00:42:10,860 --> 00:42:14,360 është që të shkruani funksionet që kurrë nuk kthehen. 669 00:42:14,360 --> 00:42:18,900 Kështu për shembull, le të tregojë sa më shumë me një program me qëllim buggy. 670 00:42:18,900 --> 00:42:22,230 Më lejoni të shkojnë përpara dhe nuk përfshijnë # , 671 00:42:22,230 --> 00:42:25,000 int main (void), 672 00:42:25,000 --> 00:42:32,940 dhe unë jam duke shkuar për të bërë, ndërsa (2> 1), i cili ndoshta kurrë nuk do të ndryshojë mbi ne, 673 00:42:32,940 --> 00:42:37,560 dhe më lejoni të shkoj përpara dhe të bëjë tani printf. 674 00:42:37,560 --> 00:42:40,700 Në fakt, kjo do të jetë më pak vizualisht interesante. Le ta bëjmë këtë. 675 00:42:40,700 --> 00:42:50,240 Për int i = 0; i> 0 - le të bëjnë këtë gabim - i + +. 676 00:42:50,240 --> 00:42:52,720 Dhe le të mos printf këtu. Le të praktikuar atë që unë u predikonte. 677 00:42:52,720 --> 00:43:00,190 Le të ketë një metodë këtu, kor pavlefshme, dhe ne do të themi int i, 678 00:43:00,190 --> 00:43:06,830 dhe atëherë unë jam duke shkuar për të thonë printf - nuk ka, le të bëjnë këtë më interesante. 679 00:43:06,830 --> 00:43:15,790 Le të mos të vërtetë të shtypura asgjë në të gjitha. Le të vetëm të bëjë këtë: kor (i). 680 00:43:15,790 --> 00:43:20,390 Dakord. Pra, kjo është buggy, sepse pse? 681 00:43:20,390 --> 00:43:23,380 Unë jam duke e bërë këtë deri sa të shkoj, sepse programi nuk ka të vërtetë të bëjë asgjë me interes. 682 00:43:23,380 --> 00:43:25,320 >> Por kjo nuk është qëllimi. 683 00:43:25,320 --> 00:43:29,630 Qëllimi është për të shkruar një program funksioni kryesor i të cilit e bën atë, me sa duket? 684 00:43:30,720 --> 00:43:32,860 Telefononi veten. Dhe në fakt, ne nuk kemi nevojë lak. 685 00:43:32,860 --> 00:43:37,200 Le të lehtësuar edhe kjo vetëm jo aq sa për të humbur shikim të vërtetë të bug themelore. 686 00:43:37,200 --> 00:43:39,640 Thirrjet kryesore kor për të kënduar disa kor, 687 00:43:39,640 --> 00:43:41,440 pastaj kam bërë diçka budalla dhe kam pasur thirrje kor kor 688 00:43:41,440 --> 00:43:43,760 sepse unë mori dikush tjetër ishte duke shkuar për të zbatuar atë ndoshta, 689 00:43:43,760 --> 00:43:47,210 dhe tani kjo nuk do të përpilojë ende. Unë kam nevojë për të bërë çfarë? 690 00:43:47,210 --> 00:43:49,970 Unë kam nevojë për prototip, mos harroni. 691 00:43:49,970 --> 00:43:56,110 Kështu që unë duhet të ketë deri këtu kor void (int i); 692 00:43:56,110 --> 00:43:59,210 Kështu që tani, nëse unë shkoj këtu poshtë - në fakt, le të përdorim dritaren e madhe. 693 00:43:59,210 --> 00:44:01,980 Le të shkojnë përpara dhe të bëjë kor. 694 00:44:01,980 --> 00:44:06,490 Le të shkojnë përpara dhe të bëjë kor. 695 00:44:06,490 --> 00:44:08,370 Përdorimi i padeklaruar identifikues i. 696 00:44:08,370 --> 00:44:12,500 Oh, se ishte budalla. Ne nuk kemi nevojë për argument. Le të vetëm të bëjë këtë. 697 00:44:12,500 --> 00:44:16,370 Unë uroj që ne e kishte filluar në këtë mënyrë. Ajo do të kishte qenë një program shumë më të lehtë për të shkruar. 698 00:44:16,370 --> 00:44:25,590 Atje. Tani le të shkojë mbi në dritaren time terminal, përsëritje tingëllimë, dhe këtu ne do të shkojmë. 699 00:44:25,590 --> 00:44:28,460 Kjo ishte me të vërtetë të shpejtë. 700 00:44:28,460 --> 00:44:31,150 Çfarë në të vërtetë ndodhi ashtu, pse? 701 00:44:31,150 --> 00:44:33,730 E pra, tani unë do të shtoni linjë shkruar kështu që ne mund të shohim. 702 00:44:33,730 --> 00:44:43,490 Më lejoni të them printf ("Unë jam këtu") - nuk variablave. Ne do të lënë atë si kjo. 703 00:44:43,490 --> 00:44:47,480 Më lejoni të bëjë përsëritje. Më lejoni përsëritje kor. 704 00:44:47,480 --> 00:44:57,380 Dhe ... eja. Do të mbajë. 705 00:44:57,380 --> 00:44:59,930 Si një mënjanë, pse nuk e ka ai u rrëzua ende? 706 00:44:59,930 --> 00:45:02,080 Faji segmentimit ndodhi super të shpejtë përpara. 707 00:45:02,080 --> 00:45:06,570 [Përgjigja e padëgjueshme Student] >> Pikërisht. Pra, kjo merr kohë për të shkruar, apo jo? 708 00:45:06,570 --> 00:45:08,610 Ajo merr vetëm më shumë punë nga ana e kompjuterit. 709 00:45:08,610 --> 00:45:10,620 Dhe nuk është: faji Segmentimi. 710 00:45:10,620 --> 00:45:12,340 >> Pra, vini re se sa programet e shpejtë të kandidojë. 711 00:45:12,340 --> 00:45:14,130 Nëse ju nuk jeni shtypjen asgjë, e super të shpejtë. 712 00:45:14,130 --> 00:45:18,770 Por ne ende mori këtë faji segmentimit sepse ajo që po ndodhte? 713 00:45:18,770 --> 00:45:21,210 Nëse ju mendoni se si memorie kompjuteri juaj është hedhur jashtë, 714 00:45:21,210 --> 00:45:28,740 kjo ndodh të jetë kryesor, por këtu le të vetëm quajmë këtë kor, dhe le të quajmë këtë kor. 715 00:45:28,740 --> 00:45:34,550 Dhe tani, nëse unë bëj estetikë e mia të drejtë, kjo është vetëm do të thotë, kor kor, kor, 716 00:45:34,550 --> 00:45:40,550 kor, kor, kor, kor, nauseum ad, dhe përfundimisht, çfarë do të ndodhë? 717 00:45:40,550 --> 00:45:45,630 Nëse foto e madhe, fjalë për fjalë, është kjo, ajo që ndodh vetëm konceptualisht? 718 00:45:46,520 --> 00:45:48,630 The overruns rafte këtij togu. 719 00:45:48,630 --> 00:45:51,940 Ose, edhe më keq, ju muar vetëm çdo gjë, duke përfshirë edhe segmentin e tekstit, 720 00:45:51,940 --> 00:45:54,590 e cila është 0s dhe 1s që përfaqësojnë programin tuaj. 721 00:45:54,590 --> 00:45:57,080 Me pak fjalë, kjo është vetëm super, super e keqe. 722 00:45:57,080 --> 00:45:58,830 Programi juaj ka dalë jashtë kontrollit. 723 00:45:58,830 --> 00:46:01,220 Ju jeni duke përdorur memorie mënyrë më shumë se ju qëllim 724 00:46:01,220 --> 00:46:03,960 të gjitha për shkak të një gabimi budallaqe në këtë rast, 725 00:46:03,960 --> 00:46:08,040 ose në këtë rast një funksion shumë qëllimisht bërë thirrje vetë. 726 00:46:08,040 --> 00:46:09,500 Tani, kjo nuk është e gjitha e keqe. 727 00:46:09,500 --> 00:46:13,800 Funksionet e quajtur veten e tyre të vërtetë ka fuqi të madhe kur ju përdorni atë saktë. 728 00:46:13,800 --> 00:46:15,800 Unë nuk e kanë përdorur atë saktë këtu. 729 00:46:15,800 --> 00:46:19,780 Pra, kjo nuk është e gjitha e keqe, por fakti që unë kurrë nuk të vërtetë të ndaluar duke e quajtur veten 730 00:46:19,780 --> 00:46:23,520 është një dobësi themelore këtu e këtij programi. 731 00:46:23,520 --> 00:46:26,400 Pra, ku jemi duke shkuar me të gjithë këtë? Çfarë po ndodh realisht? 732 00:46:26,400 --> 00:46:30,340 Kur kam thirrur funksionin rritje si ne ishim duke bërë në këto shembuj, 733 00:46:30,340 --> 00:46:33,420 Unë kam një vlerë si 1 që unë të kalojë in 734 00:46:33,420 --> 00:46:37,570 Unë të kalojë në një kopje të numrit 1, kështu që në vijim ndodh. 735 00:46:37,570 --> 00:46:44,240 Le të shkojë në shembull rritjeje, ky djalë të drejtë mbi këtu. 736 00:46:44,240 --> 00:46:46,870 Ja se çfarë është në të vërtetë ndodh. 737 00:46:46,870 --> 00:46:53,400 Kur unë të kërkoj rritje të dhe unë të kalojë në x, pictorially, çfarë po ndodh këtu është kjo. 738 00:46:53,400 --> 00:46:59,520 >> Nëse kam vlerën e 1 ruhen këtu dhe unë në fakt e quajnë rritje të, 739 00:46:59,520 --> 00:47:04,330 i cili tani quhet kor - iPad është hedhur me off këtu. 740 00:47:04,330 --> 00:47:09,760 Le të quajmë këtë rritje të, dhe ne nuk e dimë se çfarë ky funksion tjetër do të jetë. 741 00:47:09,760 --> 00:47:14,840 Pra, çfarë po ndodh në të vërtetë është këtu diku në kryesore kam një copë e kujtesës 742 00:47:14,840 --> 00:47:17,000 që është ruajtjen numrin 1. 743 00:47:17,000 --> 00:47:19,380 Kur unë të kërkoj rritje të, unë jam duke përdorur një copë e kujtesës, 744 00:47:19,380 --> 00:47:21,230 por tani unë kam kopjen e 1. 745 00:47:21,230 --> 00:47:26,660 Kur unë rritje atë vlerë, kjo bëhet 2, 746 00:47:26,660 --> 00:47:30,560 por pastaj çfarë ndodh sa më shpejt që kthimet ardhura? 747 00:47:30,560 --> 00:47:33,630 Kjo memorie vetëm merr dorëzuar përsëri në sistemin operativ, 748 00:47:33,630 --> 00:47:37,450 që do të thotë të gjithë ju keni bërë asgjë të dobishme. 749 00:47:37,450 --> 00:47:43,120 1 që u përmbahet fillimisht në kryesor është ende në të vërtetë atje. 750 00:47:43,120 --> 00:47:44,890 Pra, ku jemi duke shkuar me këtë? 751 00:47:44,890 --> 00:47:49,770 Ajo rezulton se në kujtesën ju e keni këtë sekuencë back-to-back e bytes 752 00:47:49,770 --> 00:47:53,050 që ju mund të vënë në sende, dhe kjo rezulton se ne kemi parë tashmë diçka 753 00:47:53,050 --> 00:47:55,390 që përfshin vënien gjëra për të kthyer prapa për të kthyer prapa. 754 00:47:55,390 --> 00:47:59,860 Çfarë është një varg i bazuar në javën e 1 dhe 2 javë tani? 755 00:48:00,020 --> 00:48:01,980 Kjo është vetëm një koleksion i karaktereve. 756 00:48:01,980 --> 00:48:04,310 Pra, ajo rezulton ashtu si ju mund të vënë numrat në kujtesë, 757 00:48:04,310 --> 00:48:06,990 në mënyrë të ngjashme ju mund të vënë personazhet në kujtesë. 758 00:48:06,990 --> 00:48:10,530 Dhe sapo kemi filluar karaktere vënë në kujtim të kthehet prapa për të mbështetur për të mbështetur, 759 00:48:10,530 --> 00:48:13,620 rezulton se duke përdorur të thjeshtë të gjërave si një për lak ose një lak, ndërsa, 760 00:48:13,620 --> 00:48:17,170 ne mund iterate nga e majta në të djathtë mbi personazhet në një varg 761 00:48:17,170 --> 00:48:20,600 dhe të fillojnë të fërkoni ato në karaktere të ndryshme krejt - 762 00:48:20,600 --> 00:48:23,370 a mund të bëhet b, b mund të bëhet c - 763 00:48:23,370 --> 00:48:27,780 kështu që në fund të fundit, ne mund të marrë një dënim anglisht që në fakt e bën kuptim 764 00:48:27,780 --> 00:48:30,310 dhe të konvertohet secili prej këtyre shkronjave në një kohë 765 00:48:30,310 --> 00:48:34,400 duke ecur nëpër kujtesë të kompjuterit tonë majta në të djathtë të vërtetë encrypt. 766 00:48:34,400 --> 00:48:35,810 Pra, le të marrin pesë-minutësh pushim tonë këtu, 767 00:48:35,810 --> 00:48:40,730 dhe kur kemi ardhur përsëri, ne do të fillojnë këtë proces të përpiqen informacion. 768 00:48:42,020 --> 00:48:43,520 >> Dakord. 769 00:48:43,520 --> 00:48:48,070 Para se të zhyten në disa kripto dhe këto gjëra quhet vargjeve, 770 00:48:48,070 --> 00:48:51,470 më lejoni të bëj një pauzë për çdo pyetje, sepse unë të ndjehen si unë me të vërtetë lloji i muddled 771 00:48:51,470 --> 00:48:54,080 disa nga këto tema. Pra, le të rregulluar tani në qoftë se ne mund. 772 00:48:54,080 --> 00:48:58,700 Ne vetëm biseduam rreth vlerave të kthimit, kemi biseduar rreth argumenteve, 773 00:48:58,700 --> 00:49:03,250 dhe kemi biseduar në lidhje me këtë nocion, të cilat ne do të kthehen në javët që do të vijnë, 774 00:49:03,250 --> 00:49:08,720 të shikojnë kujtesës si një bandë e tërë e këtyre tabaka bërë pirg, kështu që të flasin, 775 00:49:08,720 --> 00:49:12,660 nga poshtë lart, në të tillë që çdo tabaka që merr vënë në rafte 776 00:49:12,660 --> 00:49:16,530 përfaqëson një funksion që është aktualisht duke u quajtur. 777 00:49:17,900 --> 00:49:20,260 Çdo pyetje? 778 00:49:20,260 --> 00:49:22,640 Më lejoni të bëj një pyetje këtu. 779 00:49:22,640 --> 00:49:27,890 Më lejoni të lehtësuar këtë përsëri në atë që ishte para disa Q & A. tonë të parë 780 00:49:27,890 --> 00:49:35,570 Fakti se ka rritje kllapa e hapur, numri int, mbyllet kllapa - 781 00:49:35,570 --> 00:49:39,110 çfarë numri int përfaqësojnë? 782 00:49:39,110 --> 00:49:42,790 [Student] Një argument. Një argument >>. Rregull. Por çfarë është një argument? 783 00:49:42,790 --> 00:49:46,370 [Përgjigja e padëgjueshme Studenti] >> Çfarë është ajo? >> [Student] Diçka që ju të kalojë in 784 00:49:46,370 --> 00:49:49,940 Mirë, kështu që diçka që ju kaloni in Dhe më në përgjithësi, kjo është vetëm input. 785 00:49:49,940 --> 00:49:52,450 Nëse keni qenë duke shkruar një funksion dhe qëllimin që funksionojnë në jetën 786 00:49:52,450 --> 00:49:55,770 është që të bëjë diçka pak të ndryshme çdo herë që e përdorin atë, 787 00:49:55,770 --> 00:50:00,110 atëherë mënyra e vetme që kjo të ndodhë me të vërtetë do të duket të jetë për të siguruar atë me të dhëna 788 00:50:00,110 --> 00:50:03,510 kështu që ajo mund të bëjë diçka të ndryshme me atë input çdo kohë. 789 00:50:03,510 --> 00:50:06,650 >> Kështu që ju duhet të specifikoni dy gjëra kur një funksion i merr të dhëna. 790 00:50:06,650 --> 00:50:09,590 Ju duhet të specifikoni emrin që ju dëshironi për të dhënë për këtë input 791 00:50:09,590 --> 00:50:12,700 thjesht për lehtësinë tuaj në mënyrë që ju mund të referoheni për atë 792 00:50:12,700 --> 00:50:16,540 në funksion që ju vetë shkruani, siç kam bërë këtu në linjë 32. 793 00:50:16,540 --> 00:50:20,800 Por ju gjithashtu duhet të specifikojë llojin e vet, sepse C është një gjuhë programimi 794 00:50:20,800 --> 00:50:25,940 që vetëm kërkon që në qoftë se ju doni një ndryshore, ju duhet të tregoni se çfarë të dhënat e kompjuterit lloji është, 795 00:50:25,940 --> 00:50:30,200 në pjesën më të madhe në mënyrë që ajo e di se sa bit të ndajë për këtë variabël 796 00:50:30,200 --> 00:50:33,020 për shkak se ajo mund të jetë 6 - keq, ajo nuk do të jetë 6. 797 00:50:33,020 --> 00:50:37,080 Ajo mund të jetë 16, ajo mund të jetë 8, ajo mund të jetë 32, edhe 64, 798 00:50:37,080 --> 00:50:39,130 por kompjuteri duhet të dini. 799 00:50:39,130 --> 00:50:43,180 Tani, int në anën e majtë përfaqëson çfarë, nga ana tjetër? 800 00:50:46,350 --> 00:50:48,850 [Përgjigja e padëgjueshme Studenti] >> Çfarë është ajo? >> [Student] Lloji i funksionit. 801 00:50:48,850 --> 00:50:53,610 Lloji i funksionit dhe, më konkretisht, lloji i prodhimit të saj. Drejtë. 802 00:50:53,610 --> 00:50:57,380 Pra, ndërsa gjë në kllapa përfaqëson input e saj, nëse ka ndonjë, 803 00:50:57,380 --> 00:50:59,660 gjë në të majtë paraqet prodhimin e saj. 804 00:50:59,660 --> 00:51:03,530 Dhe në këtë rast, duket Rritja kthen një int, 805 00:51:03,530 --> 00:51:07,690 dhe kështu int është lloj kthimi i këtij funksioni. 806 00:51:07,690 --> 00:51:09,340 Çfarë do të thotë të kthehen? 807 00:51:09,340 --> 00:51:15,090 Fjalë për fjalë, ju përdorni kthimin fjalen dhe pastaj nëse ajo që ju janë duke u kthyer 808 00:51:15,090 --> 00:51:18,600 te drejte te kyce është një numër i plotë, 809 00:51:18,600 --> 00:51:21,660 atëherë kjo është me të vërtetë në përputhje me atë që kemi premtuar. 810 00:51:21,660 --> 00:51:26,410 Ju nuk mund të bëni diçka si kjo - Hello, World - sepse kjo është një varg. 811 00:51:26,410 --> 00:51:28,860 >> Natyrisht, ajo nuk është një numër i plotë. 812 00:51:28,860 --> 00:51:33,140 Pra me pak fjalë, barra është me të vërtetë për ne, programues, të jetë specifike 813 00:51:33,140 --> 00:51:37,770 si për atë që ne jemi kthyer dhe për të pastaj të shkoni në fakt në lidhje me kthimin e tij. 814 00:51:37,770 --> 00:51:43,440 Konteksti këtu tani është se kujtesa e kompjuterit tuaj është një Gigabyte, 2 gigabajt - 815 00:51:43,440 --> 00:51:45,920 çfarëdo - ndoshta kjo është më shumë, ndoshta më pak, 816 00:51:45,920 --> 00:51:49,050 por kompjuteri sheh atë si ka seksione të ndryshme. 817 00:51:49,050 --> 00:51:51,200 Diçka shkon poshtë atje, diçka tjetër shkon deri atje, 818 00:51:51,200 --> 00:51:54,290 sende të ndryshme shkon në mes, dhe sot ne fillojmë thënë vetëm historinë, 819 00:51:54,290 --> 00:51:56,340 por ne do të vijnë përsëri në këtë kohë mbi. 820 00:51:56,340 --> 00:51:59,980 Tani për tani, pjesa e vetme e kujtesës me të vërtetë intereson është segmenti teksti 821 00:51:59,980 --> 00:52:03,360 për shkak se vetëm përfaqëson 0s dhe 1s tingëllimë që ka outputted. 822 00:52:03,360 --> 00:52:06,050 Kështu që kur ju drejtuar një komandë në tastierë si a.out 823 00:52:06,050 --> 00:52:09,110 ose ju klikoni dy herë një ikonë për Mac OS ose Windows, 824 00:52:09,110 --> 00:52:11,880 programi juaj është i ngarkuar nga hard drive tuaj në RAM 825 00:52:11,880 --> 00:52:16,330 dhe kjo është plopped në krye të RAM kompjuterit tuaj, në mënyrë që të flasin. 826 00:52:16,330 --> 00:52:20,450 Ndërkohë, si programi juaj fillon drejtimin dhe merr quajti kryesore 827 00:52:20,450 --> 00:52:23,640 në programin e keni shkruar apo Microsoft programi ose Apple shkroi, 828 00:52:23,640 --> 00:52:27,860 ndonjë prej variablave të saj lokale të përfundojë deri atje poshtë në pjesën e poshtme kujtesën e kompjuterit tuaj. 829 00:52:27,860 --> 00:52:33,230 Por në qoftë se thirrjet kryesore një tjetër funksion që vetë ka variabla apo argumente, ata përfundojnë mbi të. 830 00:52:33,230 --> 00:52:36,680 Dhe në qoftë se funksioni i quan diçka, ata përfundojnë mbi të, mbi të, mbi atë. 831 00:52:36,680 --> 00:52:41,460 >> Dhe vetëm një herë një funksion është bërë ekzekutimin i rafte e tabaka, në mënyrë që të flasin, 832 00:52:41,460 --> 00:52:43,240 të fillojë të marrë më të ulët dhe më të ulët. 833 00:52:43,240 --> 00:52:48,250 Dhe kjo është ajo që pastaj, në një fjalë, shpjegon pse kur ju telefononi kubike 834 00:52:48,250 --> 00:52:51,550 ose ju telefononi rritje të, ju jeni duke kaluar në një kopje të vlerës. 835 00:52:51,550 --> 00:52:55,520 Dhe se çfarë do të thotë pictorially është se ju jeni fjalë për fjalë me shkrim numrin 1 836 00:52:55,520 --> 00:53:00,460 në një pjesë tjetër të kujtesës, duke ndryshuar qe 1-2 në rastin e ardhura 837 00:53:00,460 --> 00:53:04,820 ose për një 8 në rastin e kubike dhe pastaj duke hedhur atë larg kujtesës 838 00:53:04,820 --> 00:53:09,140 sa më shpejt të ardhura ose kthimet funksion kubike. Pyetje. 839 00:53:09,140 --> 00:53:12,900 [Student] Ku janë variabla globale ruajtur? 840 00:53:12,900 --> 00:53:18,100 Variablat globale janë të ruajtura në atë që quhet aktualisht dhënat initialized ose të dhëna uninitialized, 841 00:53:18,100 --> 00:53:21,920 diferenca është, nëse ju keni një ndryshore globale dhe ju të caktojë atë menjëherë një vlerë 842 00:53:21,920 --> 00:53:24,640 barabartë me shenjë, ajo përfundon deri në krye atje, 843 00:53:24,640 --> 00:53:29,200 dhe në qoftë se ju vetëm thoni x int; pa vlerë, ai përfundon paksa më e ulët në RAM 844 00:53:29,200 --> 00:53:31,710 thjesht nga Konventa. 845 00:53:31,710 --> 00:53:34,940 Pyetje të tjera? Dakord. 846 00:53:34,940 --> 00:53:37,340 Pra, kjo foto do të kthehet si ne të merrni më të fuqishme 847 00:53:37,340 --> 00:53:39,170 me atë që ne mund të bëjmë me kompjuter, 848 00:53:39,170 --> 00:53:42,720 por tani për tani, le të kemi një intro të shkurtër në cryptography, 849 00:53:42,720 --> 00:53:46,080 një lloj specifik i kriptografisë që nuk zgjidhë të gjitha problemet në botë 850 00:53:46,080 --> 00:53:47,720 por nuk zgjidhin disa prej tyre. 851 00:53:47,720 --> 00:53:51,700 Në këtë rast këtu, ne kemi diçka që quhet sekret-kyç cryptography. 852 00:53:51,700 --> 00:53:56,410 Sekret-kyç cryptography, siç sugjeron emri, rrjedh sigurinë e saj nga një sekret. 853 00:53:56,410 --> 00:54:00,690 >> Për shembull, nëse ju keni qenë kthyer në klasën e shkollës dhe ju ishin duke kaluar pak dashuri letër sekrete 854 00:54:00,690 --> 00:54:04,850 për djalë apo vajzë që ju u dërrmuese në, në qoftë se ju të kërkuar për të kaluar atë shënim me anë të audiencës, 855 00:54:04,850 --> 00:54:08,380 ju ndoshta nuk do të shkruaj një shënim të tillë në anglisht apo çfarëdo gjuha juaj amtare është. 856 00:54:08,380 --> 00:54:13,340 Përkundrazi, ju mund të encrypt atë ose ju mund të thjesht dërgoni atyre një mesazh shkrimor këto ditë. 857 00:54:13,340 --> 00:54:15,460 Por ju mund të vërtetë të kalojë atyre një shënim të gjithë klasës. 858 00:54:15,460 --> 00:54:18,700 Dhe të sigurt për të bërë këtë në një mënyrë të tillë që miqtë tuaj dhe mësuesi 859 00:54:18,700 --> 00:54:22,650 nuk e di se çfarë jeni duke shkruar, ju mund të dalë me një algorithm mjaft të thjeshtë, 860 00:54:22,650 --> 00:54:25,920 ri pse ju mund të jetë, për të vetëm të ngjitem fjalë. 861 00:54:25,920 --> 00:54:28,130 Pra, në vend e të shkruarit një që ju mund të shkruani b, 862 00:54:28,130 --> 00:54:30,220 në vend të b ju mund të shkruani c, 863 00:54:30,220 --> 00:54:32,140 vend të c ju mund të shkruani d, dhe kështu me radhë. 864 00:54:32,140 --> 00:54:34,360 Ose ju mund të dalë me një përkthim më të sofistikuar 865 00:54:34,360 --> 00:54:36,720 i shkronjave në letra të ndryshme. 866 00:54:36,720 --> 00:54:39,740 Por kapur është djalë apo vajzë për të cilin ju jeni dërguar këtë shënim 867 00:54:39,740 --> 00:54:45,020 duhet të dini diçka, e cila është ajo që, natyrisht? >> [Student] Çfarë ju jeni dërguar. 868 00:54:45,020 --> 00:54:49,720 Çfarë sekreti juaj, si ajo është se në mes të hartës së dhe një të B dhe C dhe e d's. 869 00:54:49,720 --> 00:54:54,650 Është vetëm duke shtuar 1 për secilën nga letrat për të shkuar nga një për të b, b të c? 870 00:54:54,650 --> 00:54:56,670 A është më komplekse se kaq? 871 00:54:56,670 --> 00:55:01,540 >> Pra, ju dhe shtrydhje tuaj duhet të ketë këtë informacion sekret, 872 00:55:01,540 --> 00:55:03,190 por nuk është lloj i një kapur-22 këtu. 873 00:55:03,190 --> 00:55:06,830 Nëse kjo është hera e parë që ju jeni dërguar këtë letër dashurie nëpër klasë, 874 00:55:06,830 --> 00:55:10,720 se si është se djalë apo vajzë do të dini se çfarë sekret edhe është? 875 00:55:10,720 --> 00:55:13,930 Pra, sekreti-kyç kripto nuk zgjidh të gjitha problemet e botës, 876 00:55:13,930 --> 00:55:16,320 dhe ka në fakt një marrëdhënie këtu se ne do të kthehen në drejtim të fund semestrit së. 877 00:55:16,320 --> 00:55:25,110 Në mënyrë të ngjashme nuk shumica prej nesh e dinë dikush që punon, për shembull, në Amazon.com, 878 00:55:25,110 --> 00:55:28,190 dhe ende shumë prej nesh kanë blerë sende ndoshta në Amazon.com, 879 00:55:28,190 --> 00:55:31,990 dhe ne kemi qenë të mësuar të supozojmë se këto e-commerce transaksionet janë të sigurta. 880 00:55:31,990 --> 00:55:36,470 URL ndoshta thotë https, ka ndoshta një kuptim pak ikonë dry diku, 881 00:55:36,470 --> 00:55:39,930 ka disa lloj cryptography siguruar informacion kartën tuaj të kreditit 882 00:55:39,930 --> 00:55:42,160 mes jush dhe Amazon.com. 883 00:55:42,160 --> 00:55:45,430 Dhe ende nëse cryptography përfshin ditur disa sekret 884 00:55:45,430 --> 00:55:48,620 dhe unë ende nuk e di kushdo në Amazon dhe unë kam nuk rregullohet me siguri ndonjë lloj të fshehtë 885 00:55:48,620 --> 00:55:52,710 me dikë në Amazon, si është kompjuterin tim ose shfletuesi im bërë këtë? 886 00:55:52,710 --> 00:55:55,720 Ajo rezulton se ka lloje të tjera të kriptografisë krejt se të zgjidhur atë problem. 887 00:55:55,720 --> 00:55:57,670 Por për sot, ne do të përqëndrohet në një të thjeshtë 888 00:55:57,670 --> 00:56:00,290 ku ju mund të caktoni paraprakisht të dini disa sekrete 889 00:56:00,290 --> 00:56:03,760 si 1 ose disa hartës ndërmjet një dhe e të b. 890 00:56:03,760 --> 00:56:05,840 Dhe procesi i cryptography në përgjithësi përfshin këtë. 891 00:56:05,840 --> 00:56:08,620 Ju keni disa plain text, përshkruar këtu në të majtë, 892 00:56:08,620 --> 00:56:12,930 ju drejtuar atë nëpërmjet disa lloj algorithm ose procedurë për encrypting atë - 893 00:56:12,930 --> 00:56:15,100 ndoshta kjo është vetëm një bëhet b, b bëhet c - 894 00:56:15,100 --> 00:56:17,490 dhe pastaj ju të përfundojë me ciphertext. 895 00:56:17,490 --> 00:56:20,380 Ndërkohë, pasi shtrydhje juaj merr këtë shënim sekret, 896 00:56:20,380 --> 00:56:24,200 ai ose ajo ka për të, atëherë decrypt atë duke përmbysur përgjithësi se algoritmi 897 00:56:24,200 --> 00:56:27,190 në mënyrë që të marrë përsëri plain text. 898 00:56:27,190 --> 00:56:28,960 Nuk janë incarnations fizike të kësaj. 899 00:56:28,960 --> 00:56:31,680 >> Për shembull, kjo është pak decoder sekret ring, 900 00:56:31,680 --> 00:56:35,110 dhe kjo është një unazë në kuptimin se ka dy dials këtu. 901 00:56:35,110 --> 00:56:38,490 Në periferi të jashtë këtë gjë, nuk ka shkronja A deri Z, 902 00:56:38,490 --> 00:56:40,340 edhe pse ata janë në mënyrë të rastit, 903 00:56:40,340 --> 00:56:42,880 dhe në brendësi, nuk ka në fakt disa numra 904 00:56:42,880 --> 00:56:46,620 tillë që me këtë rrjet ju mund të lloj të kthehet nga jashtë, por jo brenda 905 00:56:46,620 --> 00:56:49,140 në mënyrë që të vijë deri numrat me shkronja. 906 00:56:49,140 --> 00:56:53,020 Nga një film të quajtur A Christmas Story, ju do të shihni se Ralphie pak 907 00:56:53,020 --> 00:56:58,000 ishte aq i etur për të kuptoj se çfarë mesazhi sekret Annie Little Orphan ishte tek ai 908 00:56:58,000 --> 00:57:02,570 që kishin qenë të komunikuar, unë mendoj se, në formën e mesazheve numerike në një kuti drithëra 909 00:57:02,570 --> 00:57:07,220 dhe keni pasur për të grumbulluar të gjitha kartat që erdhi pak në kuti drithëra, 910 00:57:07,220 --> 00:57:09,770 ju duhet të postës ato në, keni pasur për të marrë përsëri në rrjet sekret decoder 911 00:57:09,770 --> 00:57:13,910 kështu që ju mund të më në fund të kuptoj se çfarë është në mes të hartës shkronja dhe numra 912 00:57:13,910 --> 00:57:15,550 ose letra dhe letra. 913 00:57:15,550 --> 00:57:19,520 Si në një kompjuter mund të shkoni në lidhje me zbatimin ose përfaqësojnë gjëra të tilla si kjo? 914 00:57:19,520 --> 00:57:22,560 Ne kemi nevojë për një mënyrë për të shprehur veten pak më shumë fleksibilitet 915 00:57:22,560 --> 00:57:25,080 se variablat tona deri tani kanë lejuar. 916 00:57:25,080 --> 00:57:29,000 Ne kemi pasur ints, ne kemi pasur chars, ne kemi pasur gjithandej dhe dyshe dhe disa të tjerë, 917 00:57:29,000 --> 00:57:34,200 por ato janë pjesë individuale të kujtesës që vërtetë nuk na lejojnë të shprehin gjërat 918 00:57:34,200 --> 00:57:36,440 si fjalëve dhe fjalive dhe frazave. 919 00:57:36,440 --> 00:57:38,630 Në të vërtetë, ne kemi quajtur gjëra të tilla strings, 920 00:57:38,630 --> 00:57:42,660 por ne premtojmë se kjo është me të vërtetë vetëm një thjeshtësim në bibliotekë CS50 921 00:57:42,660 --> 00:57:45,540 se ne jemi duke synuar për të zhvishem përsëri. 922 00:57:45,540 --> 00:57:47,500 Dhe kështu le të fillojë për të bërë këtë këtu. 923 00:57:47,500 --> 00:57:49,840 Më lejoni të shkoj përpara dhe të hapur një skedë - 924 00:57:49,840 --> 00:57:54,100 të gjitha këto fotografi janë në dispozicion, si zakonisht, online - array.c quajtur 925 00:57:54,100 --> 00:57:58,960 për të zgjidhur një problem të palidhur me vargjet, por që paraqet një foto këtu 926 00:57:58,960 --> 00:58:01,520 se si ne mund të përdorim diçka që quhet një grup. 927 00:58:01,520 --> 00:58:04,050 >> Një grup është një lloj i të dhënave. 928 00:58:04,050 --> 00:58:10,730 Kjo është një lloj i variable nga llojet që ka lloje të shumta të vogla të dhënave në brendësi të saj 929 00:58:10,730 --> 00:58:12,680 për të kthyer prapa për të kthyer prapa. 930 00:58:12,680 --> 00:58:16,980 Kështu për shembull, në qoftë se ne të kërkuar për të shkruar një program të vogël që ju jep mesatarisht tuaj quiz 931 00:58:16,980 --> 00:58:19,780 për një kurs si 50 qe ka 2 kuize, 932 00:58:19,780 --> 00:58:23,450 ju mund shumë lehtë të shkruaj këtë program të bazuar edhe në disa nga materiali i javës së kaluar 933 00:58:23,450 --> 00:58:28,830 duke përdorur GetInt dhe nja dy variablave: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 Dhe kjo është goxha e thjeshtë. 935 00:58:30,550 --> 00:58:33,500 Kjo është ndoshta 10, 20 rreshta të kodit max për të zbatuar një program 936 00:58:33,500 --> 00:58:38,940 që pyet përdoruesin për 2 pikët quiz dhe pastaj llogarit mesataren e tyre 937 00:58:38,940 --> 00:58:42,020 duke shtuar ato së bashku, ndarë nga 2, dhe pastaj shtypjen rezultatet. 938 00:58:42,020 --> 00:58:46,400 Ne ndoshta mund të bëjë që shumë lehtësisht tani pas disa numrin e minutave. 939 00:58:46,400 --> 00:58:49,450 Por problemi është se mendoj që 50 kishte 3 ose 4 kuize. 940 00:58:49,450 --> 00:58:52,830 Supozoni se ju të kërkuar për të përdorur të njëjtin program për një klasë që kishte javore kuize. 941 00:58:52,830 --> 00:58:55,100 Mendoni për një klasë që ka kuize javore. 942 00:58:55,100 --> 00:58:58,840 Nëse ka 16 apo më shumë javë në një semestër, tani ju keni 16 variabla: 943 00:58:58,840 --> 00:59:03,030 int quiz1, int quiz2, int quiz3, int quiz4. 944 00:59:03,030 --> 00:59:06,870 Sa më shpejt që ju të filloni duke parë këtë tepricë, kjo kopjimi dhe pasting e kodit, 945 00:59:06,870 --> 00:59:09,810 ajo duhet të fillojë të bëjë që ju dëshironi ka qenë një mënyrë më të mirë. 946 00:59:09,810 --> 00:59:13,610 Dhe fatmirësisht, për shkak të vargjeve ka. Pra, le ta bëjmë këtë. 947 00:59:13,610 --> 00:59:16,700 Së pari, më lejoni të prezantoj një gjë shumë të thjeshtë që ne nuk kemi përdorur deri më tani, 948 00:59:16,700 --> 00:59:18,820 por ju do të shihni atë herë pas here në kodin. 949 00:59:18,820 --> 00:59:21,270 >> Kjo është ajo që është quajtur përgjithësisht një konstante. 950 00:59:21,270 --> 00:59:24,410 Pra, kjo është një konstante në kuptimin që kjo vlerë nuk ndryshon. 951 00:59:24,410 --> 00:59:26,450 Konventa e njeriut kur të krijuar një konstante 952 00:59:26,450 --> 00:59:30,420 është që të përdorin të gjitha shkronja kapitale vetëm në mënyrë që me të vërtetë qëndron në kodin tuaj, 953 00:59:30,420 --> 00:59:34,270 dhe fjalen e veçantë që keni përdorur është në C # define. 954 00:59:34,270 --> 00:59:39,970 Pra, ne themi # define, atëherë një hapësirë, pastaj fjalën që ju dëshironi të përdorni për emrin e vazhdueshme e 955 00:59:39,970 --> 00:59:41,730 dhe pastaj vlera e vazhdueshme. 956 00:59:41,730 --> 00:59:44,710 Këtë njoftim është i ndryshëm nga diçka për caktimin e një ndryshore. 957 00:59:44,710 --> 00:59:46,430 Nuk ka asnjë të barabartë të nënshkruar, nuk ka pikëpresje. 958 00:59:46,430 --> 00:59:49,140 Kjo është ajo që është e njohur përgjithësisht si një direktivë Preprocessor, 959 00:59:49,140 --> 00:59:50,840 por më shumë në atë kohë tjetër. 960 00:59:50,840 --> 00:59:56,350 Tani për tani, kjo krijon një vlerë të pandryshueshëm quajtur KUIZE 961 00:59:56,350 --> 00:59:58,290 vlera aktuale e të cilit është numerike 2. 962 00:59:58,290 --> 01:00:02,180 Pra, kudo që ju shihni kuize, kuize, kuize gjatë këtij file, 963 01:00:02,180 --> 01:00:04,230 kjo është vetëm numri 2. 964 01:00:04,230 --> 01:00:06,550 Nëse unë shoh në kryesore tani, le të shohim se si punon kjo. 965 01:00:06,550 --> 01:00:09,770 Së pari, ai duket pak i fshehtë, por kjo është e gjitha gjëra që nga java 1. 966 01:00:09,770 --> 01:00:12,210 Të kërkojë nga shfrytëzuesi për klasat. Si e bëjmë këtë? 967 01:00:12,210 --> 01:00:17,350 Në linjë 22 - kjo është me të vërtetë pjesë e lëng - Unë deklaroj një noton 968 01:00:17,350 --> 01:00:23,240 por jo vetëm një noton të vetme. Unë jam deklaruar, në vend, një sërë lundrues-pikë vlerave. 969 01:00:23,240 --> 01:00:27,700 Kjo variabël do të quhet klasat, siç nënkuptohet këtu, 970 01:00:27,700 --> 01:00:31,420 por pjesë e vetme e sintaksës së re, atëherë janë këto kllapa katrore. 971 01:00:31,420 --> 01:00:37,280 Fakti që unë kam thënë nota noton dhe pastaj parantezë të hapur dhe pastaj një numër - 972 01:00:37,280 --> 01:00:40,980 njoftim nëse kjo është një konstante kjo është ashtu si ne e bëmë këtë - 973 01:00:40,980 --> 01:00:46,840 kjo do të thotë, "Hej kompjuter, jepni 2 gjithandej dhe le kolektivisht quajmë ato notat." 974 01:00:46,840 --> 01:00:51,780 >> Kjo është në kontrast me një proces shumë më e lodhshme si kjo: noton grade1; 975 01:00:51,780 --> 01:00:54,580 noton Grade2, dhe kështu me radhë. 976 01:00:54,580 --> 01:00:58,310 Kështu një grup na lejon për të zbatuar këtë ide, por shumë më pak messily, 977 01:00:58,310 --> 01:01:04,560 në mënyrë të tillë që ne mund të shkruajnë 1 linjë të kodit në vend të, të themi, 16 për një semestër 16-javë. 978 01:01:04,560 --> 01:01:09,060 Unë nuk dua të vështirë-koduar 2 sepse në qoftë se ju mendoni për këtë tani logjikisht, 979 01:01:09,060 --> 01:01:12,560 mendoj vitin e ardhshëm CS50 ndryshime në 3 kuize vend 980 01:01:12,560 --> 01:01:15,010 dhe kam pasur numrin 2 këtu, kam pasur numrin 2 here, 981 01:01:15,010 --> 01:01:17,210 I kishte numrin 2 here, numri 2 here. 982 01:01:17,210 --> 01:01:19,890 Kjo bëhet shumë e lodhshme dhe shumë e lehtë për të vidhos deri 983 01:01:19,890 --> 01:01:26,550 dhe të ndryshojë aksidentalisht 1 vlerë 3 dhe miss disa vlera të tjera të 2. 984 01:01:26,550 --> 01:01:30,660 Kështu që unë jam duke shkuar për këtë vend abstrakt dhe larg përdorni këtë konstante që, 985 01:01:30,660 --> 01:01:32,520 si emrin e saj sugjeron se, kurrë nuk ndryshon. 986 01:01:32,520 --> 01:01:35,870 Dhe tani pa marrë parasysh se a kemi të ndryshme kuize këtë vit apo tjetër, 987 01:01:35,870 --> 01:01:39,380 Unë vetëm duhet të ndryshojë atë në një vend deri këtu në krye. 988 01:01:39,380 --> 01:01:41,230 Pra, kjo është e gjitha një konstante është. 989 01:01:41,230 --> 01:01:47,100 Ndërkohë, tipar i ri konceptual është ai i një grup. 990 01:01:47,100 --> 01:01:55,030 Pra kllapa katrore jepni këtë gjithandej shumë dhe lejon mua kolektivisht quajmë ato notat këtu. 991 01:01:55,030 --> 01:01:56,720 Pra, tani le të shohim se çfarë unë jam duke shkuar për të bërë. 992 01:01:56,720 --> 01:01:59,220 Këtu në linjë 24 është fillimi i një për lak. 993 01:01:59,220 --> 01:02:03,380 >> Kjo është me të vërtetë i zbukuruar asgjë. Është vetëm duke përdorur KUIZE në vend të një numri të vështirë-koduar. 994 01:02:03,380 --> 01:02:06,740 Por nuk ka asgjë intelektualisht të ndryshme ka nga java e fundit. 995 01:02:06,740 --> 01:02:11,650 Kjo është vetëm printf, kështu printf ("d # Quiz% e% d:") 996 01:02:11,650 --> 01:02:16,670 sepse unë vetëm dua të shtypura nga më jepni quiz numër 1 e 2 dhe pastaj 2 nga 2. 997 01:02:16,670 --> 01:02:18,480 Pra, kjo është një gjë e thjesht estetike. 998 01:02:18,480 --> 01:02:21,000 Por pjesa interesante tani është në linjë 27. 999 01:02:21,000 --> 01:02:27,840 Në mënyrë për të mbushur në një nga dy placeholders me një vlerë lundrues-pikë, 1000 01:02:27,840 --> 01:02:29,640 ju përsëri përdorni kllapa katrore. 1001 01:02:29,640 --> 01:02:35,170 Në këtë rast, unë jam i përdorur për lak, sepse kjo ka filluar me i barabartë me vlerën çfarë, me sa duket? 1002 01:02:35,170 --> 01:02:36,670 [Student] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 Kështu në përsëritje e parë të këtij loop, ai është sikur kam shkruar këtë në kodin, 1004 01:02:40,990 --> 01:02:46,310 por në përsëritje e dytë të këtij loop, ai është sikur kam shkruar këtë në kodin tim. 1005 01:02:46,310 --> 01:02:49,970 Por fakti që unë jam duke përdorur një ndryshore është e përsosur, sepse, siç sugjeron emri, 1006 01:02:49,970 --> 01:02:52,600 është e ndryshme vlerën e saj në çdo përsëritje, 1007 01:02:52,600 --> 01:02:55,900 kështu që unë jam duke plotësuar këtë grup një vend në një kohë. 1008 01:02:55,900 --> 01:02:57,380 Çfarë e bën këtë rrjet të duken si? 1009 01:02:57,380 --> 01:03:01,570 Arsyeja që unë tërhoqi drejtkëndësh super e thjeshtë në ekran këtu para ishte për këtë arsye. 1010 01:03:01,570 --> 01:03:05,590 Një grup është vetëm një copë e kujtesës pasuar nga një tjetër copë e kujtesës 1011 01:03:05,590 --> 01:03:08,570 pasuar nga një tjetër copë e kujtesës dhe kështu me radhë. 1012 01:03:08,570 --> 01:03:13,120 Pra, nëse array ime është e madhësisë 2 në këtë rast këtu, të gjitha unë do të jetë bërë 1013 01:03:13,120 --> 01:03:20,200 nga shtypja në rezultatet e mia quiz pëlqen këtu - I kam 100 për këtë dhe pastaj kam marrë një 99 në këtë një - 1014 01:03:20,200 --> 01:03:24,970 atëherë kjo memorie nuk mund edhe të përdoret, sepse unë kam kërkuar vetëm në kompjuter 1015 01:03:24,970 --> 01:03:26,840 për një grup të madhësisë 2. 1016 01:03:26,840 --> 01:03:28,600 Këto sheshet janë ende atje, apo jo? 1017 01:03:28,600 --> 01:03:32,670 Ju ende keni 2 gigabajt të RAM edhe në qoftë se ju jeni vetëm duke kërkuar për 2 gjithandej. 1018 01:03:32,670 --> 01:03:36,840 Pra, ideja prapa vargjeve është se kompjuteri merr vetëm një copë e kujtesës 1019 01:03:36,840 --> 01:03:41,340 dhe pastaj apportions copa të vogla për të kthyer prapa për të kthyer prapa. 1020 01:03:41,340 --> 01:03:43,310 Dhe kështu kjo është e gjitha një grup është. 1021 01:03:43,310 --> 01:03:47,350 >> Kjo është një copë e puqur brenda kujtesës të cilat ju mund të vënë gjërat. 1022 01:03:47,350 --> 01:03:50,700 Kjo ndodh për të pastaj të bëjë vetëm aritmetike disa mërzitshëm. 1023 01:03:50,700 --> 01:03:54,640 Nëse unë lëvizni poshtë këtu, ky është vendi ku unë pastaj iterate mbi array. 1024 01:03:54,640 --> 01:03:58,020 Kam ardhur deri me përmbledhjen e të gjitha vlerave në grup, 1025 01:03:58,020 --> 01:04:02,470 dhe pastaj unë të përdorni funksionin e rrumbullakët këtu për të bërë fakt shumën ndarë nga kuize. 1026 01:04:02,470 --> 01:04:06,320 Por më lejoni të tundë dorën time në atë, si lloj aritmetike të mjaftueshme për tani. 1027 01:04:06,320 --> 01:04:08,370 Por të gjitha që është bërë për mua në fund të fundit është një mesatare informatikë. 1028 01:04:08,370 --> 01:04:13,580 Pra quiz e parë plus quiz dytë ndarë nga 2 dhe pastaj shtypjen atë si një int. 1029 01:04:13,580 --> 01:04:17,280 Por le tani tranzicioni në një shembull tjetër të quajtur string1, 1030 01:04:17,280 --> 01:04:20,700 e cila paraqet një tablo të ngjashme, por vargjet duke përdorur. 1031 01:04:20,700 --> 01:04:23,940 Më lejoni të shkojnë përpara dhe do të thjeshtojë këtë për vetëm një moment. 1032 01:04:23,940 --> 01:04:27,090 Fal vulë për tani. 1033 01:04:27,090 --> 01:04:30,870 Njoftimi në linjë 19 të këtij shembull, unë të marrë një varg nga përdoruesit. 1034 01:04:30,870 --> 01:04:34,640 Por vëreni se çfarë jam duke bërë më tej në linjat 22 tutje. 1035 01:04:34,640 --> 01:04:41,250 Unë jam në të vërtetë nga i iterating deri - dhe kjo është një mashtrim i ri - strlen, gjatësia string. 1036 01:04:41,250 --> 01:04:44,880 Ky është një funksion që vjen me C se në qoftë se ju të kalojë atë një varg, 1037 01:04:44,880 --> 01:04:47,730 kjo tregon se sa shumë karaktere janë në atë varg. Kjo është e gjitha. 1038 01:04:47,730 --> 01:04:51,550 Dhe fakti se ajo është strlen vend të gjatësisë string është vetëm për shkak se ajo është ngjeshur shumë. 1039 01:04:51,550 --> 01:04:55,100 Tridhjetë vjet më parë, njerëzit i pëlqente të shkruajë gjëra si shkurtimisht të jetë e mundur, 1040 01:04:55,100 --> 01:04:57,630 kështu që ne kemi mbajtur atë konventë këtu. 1041 01:04:57,630 --> 01:05:00,660 i + + thjesht do të thotë shtim i në çdo përsëritje. 1042 01:05:00,660 --> 01:05:02,990 Dhe tani vini re kjo, e cila është me të vërtetë interesante. 1043 01:05:02,990 --> 01:05:09,180 Në linjë 24, unë them, "Kompjuteri, më jep një karakter, 8 bit, dhe e quajti atë c." 1044 01:05:09,180 --> 01:05:12,630 Por çfarë është kjo në anën e djathtë duke thënë? 1045 01:05:13,490 --> 01:05:16,530 Në anglisht, çfarë bën që përfaqëson? 1046 01:05:16,530 --> 01:05:18,730 [Student] karakteri i parë në grup. 1047 01:05:18,730 --> 01:05:20,790 Saktësisht. Jepni karakterin e parë në grup. 1048 01:05:20,790 --> 01:05:24,090 Ose, më në përgjithësi, më jep karakter ith në rrjet. 1049 01:05:24,090 --> 01:05:26,100 Dhe të kuptojë se është e rëndësishme tani se si shkencëtarët kompjuter, 1050 01:05:26,100 --> 01:05:27,890 ne jemi në të vërtetë duke numëruar nga 0. 1051 01:05:27,890 --> 01:05:29,720 >> Ju nuk keni liri tani për të fillojnë të bëjnë këtë. 1052 01:05:29,720 --> 01:05:34,160 Tani ju duhet të sillen në përputhje me pritjet e kompjuterit dhe numërimin nga 0 1053 01:05:34,160 --> 01:05:38,180 sepse [0] do të jetë karakteri i parë në një varg, 1054 01:05:38,180 --> 01:05:42,150 [1] do të jetë i dytë, [2] do të jetë i tretë, dhe kështu radhë. 1055 01:05:42,150 --> 01:05:49,720 Pra ky program, në qoftë se unë përpiloj atë, kjo është përsëri string1, prandaj sigurohuni string1, 1056 01:05:49,720 --> 01:05:54,670 dhe tani unë kam drejtuar string1 në dritaren time terminal. 1057 01:05:54,670 --> 01:05:58,330 Është duke pritur për të dhëna, kështu që unë jam duke shkuar për të shkruani Davidit, Enter, 1058 01:05:58,330 --> 01:06:02,540 dhe tani ajo printon Davidit të gjitha në linja të ndryshme, sepse njoftimi atë që unë jam duke bërë. 1059 01:06:02,540 --> 01:06:05,820 Unë jam shtypjen një karakter në një kohë. 1060 01:06:05,820 --> 01:06:10,100 Ne nuk do të shkojnë në detaje sot për këtë, por unë fshihet një moment më parë këtë kontroll këtu. 1061 01:06:10,100 --> 01:06:15,480 Ajo rezulton se në qoftë se përdoruesi është misbehaving,, kundërshtuese, ose vetëm i hutuar 1062 01:06:15,480 --> 01:06:20,210 ju në fakt mund të dështojë për të dhënë një varg të disa gjatësi. 1063 01:06:20,210 --> 01:06:22,860 Nëse ju goditi kyç të gabuar në tastierë, ju mund të japin asnjë varg në të gjitha, 1064 01:06:22,860 --> 01:06:26,950 ose në qoftë se ju jeni me qëllim të keq, ju mund të provoni për të ngjitur në vlerë një Gigabyte së një ese 1065 01:06:26,950 --> 01:06:29,290 për të mbushur këtë varg, dhe nëse kompjuteri shkon nga e kujtesës, 1066 01:06:29,290 --> 01:06:32,710 rezulton se ne jemi duke shkuar për të marrë përsëri këtë vlerë të veçantë të quajtur NULL. 1067 01:06:32,710 --> 01:06:35,580 Kështu që tani për tani, vetëm e di se nuk është kjo vlerë të veçantë të quajtur NULL 1068 01:06:35,580 --> 01:06:39,580 që do të na lejojë që të kontrolloni, kur ne jemi jashtë kujtesës, ndër të tjera. 1069 01:06:39,580 --> 01:06:45,630 Por në qoftë se unë i hapur deri tani string2, vëreni një ndryshim këtu. 1070 01:06:45,630 --> 01:06:48,210 Vini re një ndryshim këtu me string2. 1071 01:06:48,210 --> 01:06:51,340 Me string2, kjo për lak është pak më ndryshe. 1072 01:06:51,340 --> 01:06:55,010 >> Më lejoni të fshini NULLs kështu që ne mund të flasim për ato të një tjetër kohë. 1073 01:06:55,010 --> 01:06:57,800 Çfarë është e ndryshme në lidhje me lak për këtë herë? 1074 01:06:59,620 --> 01:07:01,670 Unë mund të shkoni përsëri në shembullin e mëparshëm. 1075 01:07:01,670 --> 01:07:08,580 Pra, kjo është versioni 2, ky është version 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 Strlen thirrjes është ku? 1078 01:07:16,660 --> 01:07:18,860 Kjo është në pjesën e parë të për lak. 1079 01:07:18,860 --> 01:07:21,830 Çdo mendime se pse unë jam duke bërë këtë? Po. 1080 01:07:21,830 --> 01:07:24,560 [Student] Pra, ju nuk telefononi funksioni çdo herë të vetme. 1081 01:07:24,560 --> 01:07:26,440 [Malan] Pra, ne nuk e quajmë funksion çdo herë të vetme. Saktësisht. 1082 01:07:26,440 --> 01:07:28,300 Kujtojnë nga për sythe se ata janë të thjeshtë super 1083 01:07:28,300 --> 01:07:31,770 sapo ju lloj i kuptoni se kjo është initialization, gjendja, dhe update. 1084 01:07:31,770 --> 01:07:34,750 Problemi është se gjendja ndodh në çdo ripërsëritje e lak. 1085 01:07:34,750 --> 01:07:40,010 Dhe kështu në këtë shembull këtu, çfarë është e keqe për faktin se kjo është gjendja ime? 1086 01:07:40,010 --> 01:07:41,830 [Student] Ju jeni duke bërë thirrje strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] Ju jeni duke bërë thirrje strlen përsëri dhe përsëri dhe përsëri. 1088 01:07:44,340 --> 01:07:47,410 Por një herë unë kam shtypur në Davidit, gjatësia e vargut që është 5, 1089 01:07:47,410 --> 01:07:49,650 dhe kjo nuk do të ndryshojë në çdo ripërsëritje e lak 1090 01:07:49,650 --> 01:07:51,670 sepse string është ende D-nje-v-i-d. 1091 01:07:51,670 --> 01:07:55,320 Pra, kjo është një aluzion në atë që do të bëhet gjithnjë e më e rëndësishme një ide 1092 01:07:55,320 --> 01:08:00,410 njohur si një vendim të projektimit ku thjesht nuk do të bëjë kompjuteri të bëjë punën e panevojshme. 1093 01:08:00,410 --> 01:08:03,920 >> Ashtu si një vrojtim vjedhës i pset2, pset2 në edicionin standarde 1094 01:08:03,920 --> 01:08:07,030 do të ju sfidë për të zbatuar në fakt disa numrin e shifra, 1095 01:08:07,030 --> 01:08:10,410 numrin e disa algoritme encryption, kështu që ju mund të encrypt të dyja 1096 01:08:10,410 --> 01:08:13,840 dhe decrypt mesazhe sekrete shumë si një Ralphie deshifrohet atje. 1097 01:08:13,840 --> 01:08:16,810 Në edicionin e hacker pset2, ne jemi duke shkuar për të shkuar pak më tej. 1098 01:08:16,810 --> 01:08:19,649 Ne jemi duke shkuar për dorë ju një skedar nga një sistem kompjuterik aktual 1099 01:08:19,649 --> 01:08:23,479 që përmban një bandë e tërë e përdoruesve dhe fjalëkalimet e koduar aktuale, 1100 01:08:23,479 --> 01:08:26,939 dhe sfida për edicionin e hacker do të jetë për të goditur ato fjalëkalime 1101 01:08:26,939 --> 01:08:33,200 dhe të kuptoj se çfarë cryptography apo çfarë sekreti është përdorur për të gjeneruar të vërtetë këto fjalëkalime. 1102 01:08:33,200 --> 01:08:36,109 Dhe ne jemi duke shkuar për të bërë këtë duke përdorur një funksion të ri këtu e C 1103 01:08:36,109 --> 01:08:40,630 që unë do të ju jap vetëm një demo të njohur si command-line argumente. 1104 01:08:40,630 --> 01:08:44,229 Ajo rezulton, si disa prej jush mund të keni parë në seksionin ose në tekstet shkollore, 1105 01:08:44,229 --> 01:08:48,260 kryesor nuk ka gjithmonë duhet të jetë i pavlefshëm në kllapa. 1106 01:08:48,260 --> 01:08:52,430 Ajo rezulton se kryesore mund të shkruhet edhe si ky, me dy argumente, 1107 01:08:52,430 --> 01:08:56,870 argc dhe argv, ku argc është numri i fjalëve 1108 01:08:56,870 --> 01:09:00,020 që ju të shkruani pas emrin e programit në linjë tuaj komanduese 1109 01:09:00,020 --> 01:09:03,420 dhe argv është fjalë aktuale. 1110 01:09:03,420 --> 01:09:07,540 Dhe si kllapa katrore atje sugjerojnë, argv është me sa duket një grup. 1111 01:09:07,540 --> 01:09:12,210 Ajo do të jetë një varg pas një varg pas një varg në kujtesë. 1112 01:09:12,210 --> 01:09:16,010 >> Kështu që ajo që ne jemi duke shkuar të jetë në gjendje të bëjë duke filluar me pset 2 është diçka si kjo. 1113 01:09:16,010 --> 01:09:21,350 Nëse unë bëjë argv1, e cila është një shembull ne do të kthehen në të hënën, dhe drejtuar atë, 1114 01:09:21,350 --> 01:09:23,370 vini re se kjo nuk duket për të bërë ende asgjë. 1115 01:09:23,370 --> 01:09:25,490 Ajo vetëm printon emrin e vet. 1116 01:09:25,490 --> 01:09:31,479 Por në qoftë se unë them lamtumirë klasa, njoftim se ky program duket iterates 1117 01:09:31,479 --> 01:09:35,479 mbi çdo fjalë që u typed në ftim. 1118 01:09:35,479 --> 01:09:41,630 Dhe mjetet me të cilat ne do të fitojnë qasje në fjalët që përdoruesi ka shtypur në të shpejtë 1119 01:09:41,630 --> 01:09:49,160 është duke ndryshuar kryesor filluar këtë fundjavë nga int main (void) për int main (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 dhe kështu do të jetë i lindur command-line argumente. 1121 01:09:52,050 --> 01:09:57,100 Dhe një herë ju merrni të vërtetë të sofistikuar në këtë, ju do të jetë në gjendje të shkruajnë programe të vërtetë trippy 1122 01:09:57,100 --> 01:09:59,610 të tilla si ky këtu, i cili shkon më lart dhe përtej 1123 01:09:59,610 --> 01:10:03,940 disa nga funksionet që kemi bërë deri tani, por të gjitha mjaft të fuqishme. 1124 01:10:03,940 --> 01:10:08,950 >> Pra, ne do të largohen këtë me këtë në ekran, dhe ne do të shohim ju në hënën. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]