1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [Wythnos 2, Parhad] 2 00:00:02,270 --> 00:00:04,220 [David J. Malan, Prifysgol Harvard] 3 00:00:04,220 --> 00:00:06,880 [Mae hyn yn CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 Mae pob hawl. Mae hyn yn CS50, ac mae hyn yn y diwedd wythnos 2. 5 00:00:10,990 --> 00:00:14,410 Os ydych yn disgwyl i fod yn newynog tua'r adeg hon yfory, 6 00:00:14,410 --> 00:00:18,620 gwybod ein bod ni'n mynd i gynnull fel grŵp bach yfory, dydd Iau, 1:15 pm. 7 00:00:18,620 --> 00:00:21,360 Mae hyn yn URL yma os hoffech i ateb. 8 00:00:21,360 --> 00:00:26,740 Gofod yn gyfyngedig, felly os gwelwch yn dda maddau os yw'r ffurflen wedi llenwi erbyn i chi lenwi'r allan. 9 00:00:26,740 --> 00:00:29,300 Arall URL, fodd bynnag, a allai fod o ddiddordeb yw hwn. 10 00:00:29,300 --> 00:00:32,369 Mewn dim ond ymhen rhyw fis, mae'r cwrs yn mynd i fod ar gael 11 00:00:32,369 --> 00:00:36,890 yn fwy cyffredinol drwy EDX, trwy y bydd Folks ar y Rhyngrwyd yn gallu dilyn ar hyd, 12 00:00:36,890 --> 00:00:39,380 cymryd rhan yn y cwrs yn eithaf yn weithredol, mewn gwirionedd. 13 00:00:39,380 --> 00:00:42,270 Byddant yn defnyddio'r Offer CS50 a CS50 Trafod 14 00:00:42,270 --> 00:00:45,490 ac mae'r rhan fwyaf o'r offer meddalwedd amrywiol ein bod eisoes wedi bod yn defnyddio y semester hwn. 15 00:00:45,490 --> 00:00:48,710 Ac un o'r mentrau a byddem yn hoffi i gymryd ymlaen fel arbrawf eleni 16 00:00:48,710 --> 00:00:51,930 yw gweld yn union faint o gynnwys y gallwn drosi'r 17 00:00:51,930 --> 00:00:53,960 i ieithoedd llafar ac ysgrifenedig arall. 18 00:00:53,960 --> 00:00:57,500 Felly, os allai fod gennych ddiddordeb mewn cymryd rhan yn y prosiect hwn 19 00:00:57,500 --> 00:01:02,270 lle byddwn yn darparu trawsgrifiadau Isdeitlau Saesneg a ar gyfer darlithoedd y cwrs 20 00:01:02,270 --> 00:01:05,450 a siorts a seminarau ac adrannau ac yn y blaen, 21 00:01:05,450 --> 00:01:08,200 os ydych yn siarad yn rhugl neu ysgrifennu yn rhugl mewn iaith arall, 22 00:01:08,200 --> 00:01:12,290 byddem wrth ein bodd i gymryd rhan chi yn y prosiect lle byddwch yn derbyn un neu fwy o'r fideos, 23 00:01:12,290 --> 00:01:15,200 eu cyfieithu i iaith eich bod yn gwybod yn eithaf da. 24 00:01:15,200 --> 00:01:18,700 >> I roi syniad i chi o'r rhyngwyneb, mae hwn yn rhyngwyneb defnyddiwr ar y we 25 00:01:18,700 --> 00:01:22,090 y byddwn yn defnyddio a fydd yn creu hanfod UI fel hyn. 26 00:01:22,090 --> 00:01:24,290 Roedd hyn yn i mi addysgu rhai Calan Gaeaf yn ôl, 27 00:01:24,290 --> 00:01:27,390 ac ar yr ochr dde-law yno mewn du nesaf wrth y rhain stampiau amser, 28 00:01:27,390 --> 00:01:31,210 byddwch yn gweld y pethau amrywiol ddaeth allan o fy ngheg y diwrnod hwnnw, 29 00:01:31,210 --> 00:01:34,850 ac yna islaw iddo byddwch yn gallu cyfieithu i mewn i rai iaith arall 30 00:01:34,850 --> 00:01:38,690 union beth y mapio hwn yw rhwng, yn yr achos hwn, Saesneg ac, yn dweud, Sbaeneg. 31 00:01:38,690 --> 00:01:40,440 Felly, mewn gwirionedd mae'n iawn hawdd i'w ddefnyddio offeryn. 32 00:01:40,440 --> 00:01:43,370 Gallwch ail-ddirwyn ac yn gyflym ymlaen yn rhwydd iawn gyda llwybrau byr bysellfwrdd. 33 00:01:43,370 --> 00:01:47,490 Felly os hoffech chi gymryd rhan yn yr arbrawf hwn a chael eich geiriau gweld a darllen 34 00:01:47,490 --> 00:01:51,850 trwy o bosibl miloedd o Folks i maes 'na, os gwelwch yn dda mae croeso i chi gymryd rhan. 35 00:01:51,850 --> 00:01:54,350 Un gair am y gath fach o ddydd Llun. 36 00:01:54,350 --> 00:02:00,350 Rhag rydym wedi anfon neges yn rhy frawychus, yn sylweddoli hynny, fel oriau swyddfa yn awgrymu 37 00:02:00,350 --> 00:02:03,300 ac fel adrannau yn awgrymu, cynllun y cwrs yn fawr iawn 38 00:02:03,300 --> 00:02:07,360 wedi cydweithio i fyfyrwyr ac yn siarad i weithio drwy setiau problem 39 00:02:07,360 --> 00:02:11,260 a phroblemau gyda'i gilydd, ac yn wir y llinell yn unig yn dod i lawr i, 40 00:02:11,260 --> 00:02:16,010 eto, dylai'r gwaith yr ydych yn y pen draw gyflwyno eich hun yn unig. 41 00:02:16,010 --> 00:02:18,860 Ac felly yn gwbl onest, yn ystod oriau swyddfa mae'n hollol normal, 42 00:02:18,860 --> 00:02:22,240 mae'n gwbl i'w ddisgwyl, hyd yn oed, i fod yn sgwrsio gyda rhai ffrind nesaf i chi. 43 00:02:22,240 --> 00:02:24,370 >> Os yw ef neu hi yn cael trafferth gyda rhai pwnc a ydych chi fel, 44 00:02:24,370 --> 00:02:27,940 "O, wel, gad i mi roi cipolwg o rai llinell o god a ysgrifennais," mae hynny'n iawn, 45 00:02:27,940 --> 00:02:31,250 hynny'n digwydd, ac mae hynny'n fawr iawn ffafriol, yr wyf yn meddwl, gyda'r broses o ddysgu. 46 00:02:31,250 --> 00:02:36,750 Pan fydd y llinell yn cael ei chroesi yw pan fydd y pennaeth yn fath o ogwydd dros yma am ychydig eiliadau llawer gormod o 47 00:02:36,750 --> 00:02:41,160 neu gofnodion ar gyfer y iawn ein bod wedi bod yr un cyfle dadflocio ar gyfer eich ffrind, 48 00:02:41,160 --> 00:02:44,160 ac yn sicr pan fydd pethau'n cael eu cyfnewid drwy e-bost a Dropbox ac yn y blaen, 49 00:02:44,160 --> 00:02:45,640 yno hefyd yn y llinell. 50 00:02:45,640 --> 00:02:48,620 Felly ar bob cyfrif yn teimlo'n gyfforddus ac yn teimlo eu hannog i sgwrsio gyda ffrindiau 51 00:02:48,620 --> 00:02:52,810 a chyd-ddisgyblion am psets a mwy, a dim ond yn sylweddoli bod yr hyn yr ydych yn y pen draw cyflwyno 52 00:02:52,810 --> 00:02:57,340 ddylai mewn gwirionedd fod yn gynnyrch dy greadigaeth di, ac nid rhywun arall. 53 00:02:57,340 --> 00:03:00,490 Ac felly un o'r problemau parth-benodol ar gyfer pset2, 54 00:03:00,490 --> 00:03:04,740 a fydd yn dod allan yn hwyr nos yfory, yw i neidio i fyd cryptograffeg, 55 00:03:04,740 --> 00:03:08,970 sef y grefft o amgryptio neu sgrialu gwybodaeth, 56 00:03:08,970 --> 00:03:12,600 ac mae hyn yn y pen draw yn berthnasol i'r byd o ddiogelwch. 57 00:03:12,600 --> 00:03:16,560 Nawr, diogelwch ar gyfer y rhan fwyaf ohonom yn dod ar ffurf eithaf cyffredin fecanweithiau. 58 00:03:16,560 --> 00:03:19,050 Mae pob un ohonom enwau defnyddwyr a chyfrineiriau, 59 00:03:19,050 --> 00:03:23,450 ac mae pob un ohonom enwau gwael iawn a chyfrineiriau, yn fwyaf tebygol. 60 00:03:23,450 --> 00:03:28,240 >> Os yw eich cyfrinair yn yr un fath ar wefannau lluosog, nad yw mae'n debyg y syniad gorau, 61 00:03:28,240 --> 00:03:30,070 gan y byddwn yn trafod tuag at ddiwedd y semester. 62 00:03:30,070 --> 00:03:34,720 Os yw eich cyfrinair yn cael ei ysgrifennu ar nodyn gludiog - dim jôc - ar eich monitor, 63 00:03:34,720 --> 00:03:38,350 nad yw gormod o reidrwydd y dyluniad gorau, ond yn dipyn o ffenomenon cyffredin. 64 00:03:38,350 --> 00:03:42,470 Ac os nad ydych yn defnyddio cryptograffeg i amgryptio eich cyfrineiriau, 65 00:03:42,470 --> 00:03:44,210 maent yn arbennig o agored i niwed. 66 00:03:44,210 --> 00:03:47,270 Felly, os ydych yn meddwl eich bod yn cael eu super glyfar drwy gael dogfen Word cudd 67 00:03:47,270 --> 00:03:49,910 rhywle ar eich disg caled sydd wedi eich holl passwords 68 00:03:49,910 --> 00:03:53,670 ond mae'n mewn ffolder nad oes unrhyw un yn mynd i edrych i mewn, nad yw gormod yn fecanwaith diogel iawn. 69 00:03:53,670 --> 00:03:56,990 Ac felly yr hyn y bydd pset2 cyflwyno yn y grefft o cryptograffeg 70 00:03:56,990 --> 00:04:02,010 a sgramblo gwybodaeth fel bod pethau fel cyfrineiriau yn oed yn fwy diogel. 71 00:04:02,010 --> 00:04:05,790 Y cyd-destun yma yw bod â data ansicr 72 00:04:05,790 --> 00:04:07,930 daw cyfle i amgryptio ac i scramble hynny. 73 00:04:07,930 --> 00:04:11,470 Ac felly mae hyn, er enghraifft, yn enghraifft o neges wedi ei amgryptio. 74 00:04:11,470 --> 00:04:14,700 Mae hyn mewn gwirionedd yn dweud rhywbeth yn Saesneg, ond nid yw'n amlwg yn gwbl amlwg. 75 00:04:14,700 --> 00:04:18,279 A byddwn yn dod y cylch llawn heddiw i dynnu ar wahân beth mae hyn yn neges gudd yma. 76 00:04:18,279 --> 00:04:23,490 Ond yn y byd go iawn o gyfrifiaduron, nid yw pethau'n hyd yn oed edrych fel y gallent fod yn ymadroddion Saesneg. 77 00:04:23,490 --> 00:04:28,430 Er enghraifft, mae hyn yn hyn y gallech ei gael ar Linux safonol neu Mac neu UNIX cyfrifiadur 78 00:04:28,430 --> 00:04:32,070 mewn ffeil a oedd unwaith ar y tro a elwir yn y ffeil gyfrinair. 79 00:04:32,070 --> 00:04:34,200 >> Erbyn hyn mae wedi cael ei symud i fannau eraill. 80 00:04:34,200 --> 00:04:39,210 Ond os ydych yn edrych yn y lle iawn ar system, byddwch yn gweld nid yn unig eich enw defnyddiwr 81 00:04:39,210 --> 00:04:43,400 neu bobl eraill ar y system, ond byddwch yn gweld fersiwn amgryptio eu cyfrinair. 82 00:04:43,400 --> 00:04:47,980 Yn wir, y crypt gair yno yn awgrymu bod y pethau canlynol yn amgryptio, 83 00:04:47,980 --> 00:04:52,680 ac mae hyn yn gyfres o lythyrau sy'n ymddangos ar hap a chymeriadau a rhifau ac yn y blaen 84 00:04:52,680 --> 00:04:56,480 Gellir ei dadgriptio yn unig yn gyffredinol yn gwybod rhywfaint o gyfrinach - 85 00:04:56,480 --> 00:04:58,840 gair cudd, mae nifer cyfrinach - 86 00:04:58,840 --> 00:05:03,160 ac felly yn wir, y grefft o cryptograffeg yn y pen draw boils i lawr i ymddiried o ryw fath 87 00:05:03,160 --> 00:05:05,650 ac yn gwybod rhywbeth nad yw rhywun arall yn ei wneud. 88 00:05:05,650 --> 00:05:10,090 Felly, byddwn yn archwilio hyn yn fanwl ychydig mwy o heddiw ac yn y pset i ddod. 89 00:05:10,090 --> 00:05:12,200 Ac yn awr gair ar basio / methu. 90 00:05:12,200 --> 00:05:15,360 Yn enwedig gan fod rhai ohonoch wedi syrthio i mewn i pset1, y Appliance, 91 00:05:15,360 --> 00:05:19,080 a byd newydd iawn i chi eich hun, yn sylweddoli bod rhwystredigaeth a dryswch 92 00:05:19,080 --> 00:05:21,700 a dim ond anawsterau technegol yn eithaf i'w ddisgwyl, 93 00:05:21,700 --> 00:05:24,180 yn enwedig gyda'r pset cyntaf, lle mae dim ond cymaint newydd, 94 00:05:24,180 --> 00:05:27,730 dim ond cael gyfarwydd â ls a cd a holl orchmynion hyn dirgel 95 00:05:27,730 --> 00:05:33,050 ac amgylchedd newydd, a dyna wahân i'r deunydd gwirioneddol a rhaglennu ei hun. 96 00:05:33,050 --> 00:05:36,940 Felly yn sylweddoli hefyd fod yn sicr mae yna oriau swyddfa sy'n bodoli fel strwythur cymorth. 97 00:05:36,940 --> 00:05:38,880 >> Adrannau yn dechrau dydd Sul hwn i ddod. 98 00:05:38,880 --> 00:05:42,960 Ond yn bwysicaf oll, os ydych yn teimlo'n unig nad yw hyn yn y byd i chi, 99 00:05:42,960 --> 00:05:44,710 sylweddoli ei bod yn wir yn unig yn cymryd amser. 100 00:05:44,710 --> 00:05:48,600 Ac oni bai am y cyfle hwn flynyddoedd yn ôl i mi o gymryd tocyn dosbarth / methu, 101 00:05:48,600 --> 00:05:50,990 yn onest, nid wyf erioed y byddai wedi gosod hyd yn oed droed yn yr ystafell ddosbarth. 102 00:05:50,990 --> 00:05:53,690 A allwch chi newid hyn nes ar, dyweder, dydd Llun rhan o bump o'r cwrs, 103 00:05:53,690 --> 00:05:58,280 felly os ydych chi ar yr ymyl yn awr, yn sylweddoli, yn hytrach na pen i mewn i rai dyfroedd eraill yn gyfan gwbl, 104 00:05:58,280 --> 00:06:01,260 yn sicr yn ystyried dim ond newid i basio / methu. 105 00:06:01,260 --> 00:06:04,570 Unwaith eto, nid oes gymaint â hyn diwylliant yma yn Harvard o gymryd pethau pasio / methu 106 00:06:04,570 --> 00:06:08,670 gan fod pawb yn awyddus iawn i gyflawni neu overachieve, 107 00:06:08,670 --> 00:06:11,130 ond dweud y gwir, mae hyn yn ffordd wych o roi cynnig rhywbeth allan 108 00:06:11,130 --> 00:06:16,720 Ni allai fod yn gyfarwydd i chi, a byddwch yn y pen draw yn gwneud, yn y rhan fwyaf o achosion, yn eithaf iawn, 109 00:06:16,720 --> 00:06:18,210 efallai fawr at eich syndod. 110 00:06:18,210 --> 00:06:20,980 Ac mewn termau diriaethol mwy, yr hyn yr wyf yn meddwl pasio / methu yn gyffredinol yn ei wneud, 111 00:06:20,980 --> 00:06:22,940 yn enwedig fel y byddech wedi cael profiad gyda pset0, 112 00:06:22,940 --> 00:06:26,560 os byddwch yn rhoi 10 awr, 15 awr, 25 awr i rai pset 113 00:06:26,560 --> 00:06:29,920 a ydych ond yn taro eich pen yn erbyn y wal ac mae'n mynd yn super yn hwyr yn y nos 114 00:06:29,920 --> 00:06:33,950 ond eich bod wedi cymryd y pset 90% o'r ffordd, ac ni allwch ffigwr allan un peth, 115 00:06:33,950 --> 00:06:36,520 pasio / methu mewn gwirionedd yn cymryd y ymyl oddi ar y dosbarth fel hyn, 116 00:06:36,520 --> 00:06:39,100 lle gallwch chi ddatrys o hapus yn dweud, "Iawn, yr wyf yn gwybod nad yw'n berffaith, 117 00:06:39,100 --> 00:06:42,350 ond yr wyf yn gweithio fy ass i ffwrdd ar hyn, rwy'n eithaf hapus gyda lle yn y diwedd, " 118 00:06:42,350 --> 00:06:44,850 a fydd yn bodloni disgwyliadau ar gyfer pasio / methu. 119 00:06:44,850 --> 00:06:47,540 Felly, yn cadw hynny mewn cof. Mae pob hawl. 120 00:06:47,540 --> 00:06:50,520 >> Felly, y rhai ohonoch sydd wedi cael trafferth i ddefnyddio Brifysgol Harvard Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 yn gwybod bod yna SSID CS50, cysylltiad Wi-Fi, fel y bo'r angen o gwmpas 122 00:06:54,780 --> 00:06:56,490 y gallai fod gennych well lwc i. 123 00:06:56,490 --> 00:07:00,130 Mae'n eironig fawr fod y cyfrinair ar gyfer hyn, os hoffech i geisio cysylltu i hyn 124 00:07:00,130 --> 00:07:08,350 ar gyfer cyflymderau gwell - a gadewch i ni wybod os does dim gwell - yn 12,345, yr holl ffordd i fyny at 8 125 00:07:08,350 --> 00:07:10,910 oherwydd 8 yn fwy diogel na 5. 126 00:07:10,910 --> 00:07:16,910 Felly, os ydych angen y cyfrinair Wi-Fi, cysylltu â CS50 wirelessly yma, 12,345,678, 127 00:07:16,910 --> 00:07:20,380 a swydd ar CS50 Trafod os oes gennych materion cysylltedd ysbeidiol, 128 00:07:20,380 --> 00:07:25,420 a byddwn yn gadael i'r pwerau sydd eu gwybod am y gofod. Mae pob hawl. 129 00:07:25,420 --> 00:07:32,230 Felly teaser cyflym, yn enwedig i'r rhai ohonoch sydd yn fechgyn neu ferched gefnogwr o bob Apple bethau. 130 00:07:32,230 --> 00:07:37,460 Beth ddylwn i ei gloddio i fyny o ychydig flynyddoedd yn ôl roedd y ffeil yma, iUnlock.c, 131 00:07:37,460 --> 00:07:39,930 yn unig i fath o wneud yn fwy cadarn ac yn fwy cymhleth 132 00:07:39,930 --> 00:07:42,560 rhai o'r rhaglenni mwy sylfaenol C rydym wedi bod yn ysgrifennu. 133 00:07:42,560 --> 00:07:46,910 Felly, yr wyf yn agor y ffeil, iUnlock.c. Mae ar gael ar y dudalen Darlithoedd ar gyfer heddiw. 134 00:07:46,910 --> 00:07:49,810 Ar yr ochr chwith byddwch yn gweld rhestr hir o swyddogaethau. 135 00:07:49,810 --> 00:07:53,230 Felly, y cyd-a ysgrifennodd y ysgrifennodd llawer o swyddogaethau, yn fwy na dim ond y prif. 136 00:07:53,230 --> 00:07:57,340 Defnyddiodd criw cyfan o lyfrgelloedd yma, ac os ydym yn dechrau sgrolio drwy, 137 00:07:57,340 --> 00:08:04,890 beth hyn mewn gwirionedd yw yn y cyntaf, yr wyf yn credu, crac ar gyfer y iPhone gwreiddiol. 138 00:08:04,890 --> 00:08:09,830 >> Pan fyddwch yn eisiau i jailbreak y iPhone gwreiddiol, sy'n golygu untether rhag AT & T 139 00:08:09,830 --> 00:08:13,710 ac mewn gwirionedd yn gosod meddalwedd arbennig arno a gwneud pethau na Apple oedd eisiau i bobl ei wneud, 140 00:08:13,710 --> 00:08:18,480 rhywun yn cymryd yr amser i ffigur yn union sut y gallent fanteisio diffygion meddalwedd, 141 00:08:18,480 --> 00:08:22,690 camgymeriadau, bygiau, yn Apple meddalwedd, ac felly ei eni iUnlock.c-- 142 00:08:22,690 --> 00:08:26,760 os ydych yn luniwyd ar eich cyfrifiadur a gosod ei roi ar iPhone 143 00:08:26,760 --> 00:08:29,430 a gafodd ei gysylltu â'ch cyfrifiadur drwy, er enghraifft, mae cebl USB, 144 00:08:29,430 --> 00:08:32,450 byddai hyn yn rhoi i chi breintiau gweinyddol neu wraidd ar eich iPhone 145 00:08:32,450 --> 00:08:34,620 ac yn gadael i chi wneud 'n bert lawer beth bynnag y dymunwch. 146 00:08:34,620 --> 00:08:36,400 Ac felly mae wedi bod y gath ryfeddol a gêm llygoden 147 00:08:36,400 --> 00:08:39,340 rhwng Apple a gweddill y byd yn enwedig gan eu bod, fel llawer o gwmnïau, 148 00:08:39,340 --> 00:08:43,350 ceisio gloi eu stwff i lawr fel y gallwch ond ei wneud ag ef yr hyn y maent yn bwriadu. 149 00:08:43,350 --> 00:08:47,360 Ond diolch i bobl fel hyn a'r ddealltwriaeth o lefel isel manylion - 150 00:08:47,360 --> 00:08:50,830 ac yn yr achos C rhaglennu - ac mae llawer o'r lluniadau cyfarwydd 151 00:08:50,830 --> 00:08:55,280 ein bod ni wedi dechrau chwarae gyda, byddwch yn gallu mewn gwirionedd trosoledd y caledwedd 152 00:08:55,280 --> 00:08:59,250 mewn modd gwelwch yn dda ac nid o reidrwydd rhyw endid corfforaethol. 153 00:08:59,250 --> 00:09:01,600 Felly, er enghraifft, nid oes gennyf unrhyw syniad beth hyn i gyd yn ei wneud, 154 00:09:01,600 --> 00:09:03,580 ond GetVersion swnio'n eithaf syml, 155 00:09:03,580 --> 00:09:05,710 ac mae'n edrych fel hyn yn swyddogaeth fod y person ysgrifennodd. 156 00:09:05,710 --> 00:09:09,250 Mae'n cymryd rhyw fath o cyfanrif fel dadl, nid yw'n dychwelyd unrhyw beth, 157 00:09:09,250 --> 00:09:13,710 ond mae'n ymddangos ei dolen gyda gyfer dolen yma ac os yw cyflwr, os egwyl cyflwr, 158 00:09:13,710 --> 00:09:16,770 a rhywsut yn cyfeirio at niferoedd fersiwn os ydym sgroliwch i lawr, 159 00:09:16,770 --> 00:09:19,650 er bod llawer o'r rhain keywords yn mynd i fod yn newydd. 160 00:09:19,650 --> 00:09:22,590 Ac mae llawer gyfan o swyddogaethau yma nid ydym erioed wedi gweld ac efallai na byth yn gweld 161 00:09:22,590 --> 00:09:24,350 yn ystod y semester. 162 00:09:24,350 --> 00:09:29,160 >> Ar ddiwedd y dydd, mae'n dilyn yr un rheolau a rhesymeg yr ydym wedi bod yn chwarae ag ef hyd yn hyn. 163 00:09:29,160 --> 00:09:34,340 Felly, mae hyn yn llawer rhy hen i fynd i'r afael eich iPhone neu 3s 4s neu'n fuan 5 y dyddiau hyn, 164 00:09:34,340 --> 00:09:38,830 ond yn gwybod ei fod yn gyd yn fawr iawn yn deillio o'r byd hwn ein bod wedi syrthio i mewn i. 165 00:09:38,830 --> 00:09:42,280 Gadewch i ni edrych ar enghraifft ychydig yn fwy syml: 166 00:09:42,280 --> 00:09:46,260 hwn, dim ond er mwyn cael cynhesu i fyny gyda rhywfaint o gystrawen a hefyd data fath rhai eraill 167 00:09:46,260 --> 00:09:48,910 ein bod ni wedi siarad amdano, ond nid ydynt wedi gweld mewn gwirionedd yn C. 168 00:09:48,910 --> 00:09:53,670 Mae hon yn ffeil o'r enw positive1.c, ac am bob y sylwadau ar y brig, 169 00:09:53,670 --> 00:09:56,070 hyn dim ond yn mynnu bod defnyddiwr yn rhoi rhif positif. 170 00:09:56,070 --> 00:09:59,910 Felly mae'n enghraifft o ddolen do-tra, sydd yn braf ar gyfer rhaglenni defnyddwyr rhyngweithiol 171 00:09:59,910 --> 00:10:02,070 lle mae angen i chi ddweud wrth y defnyddiwr i wneud rhywbeth, 172 00:10:02,070 --> 00:10:05,530 ac os nad ydynt yn cydweithredu i chi gweiddi arnynt neu wrthod eu mewnbwn. 173 00:10:05,530 --> 00:10:10,480 Enghraifft o hyn: yr wyf yn mynd i wneud llinellau 19 trwy 24 174 00:10:10,480 --> 00:10:14,620 ar yr amod nad yw'r defnyddiwr wedi rhoi i mi rhif positif. 175 00:10:14,620 --> 00:10:21,340 Mae'r manylion yma ar llinell 18, pam wnes i ddatgan n uwch na hyn dolennu cyfan adeiladu 176 00:10:21,340 --> 00:10:26,870 yn hytrach na i'r dde nesaf i llinell 22 lle Fi 'n weithredol gofal i gael n? Yeah. 177 00:10:26,870 --> 00:10:29,330 [Myfyrwyr] Scope. >> Yeah, felly mae'r mater o gwmpas. 178 00:10:29,330 --> 00:10:31,770 Ac mewn termau lleyg, beth yw cwmpas cyfeirio at? 179 00:10:34,880 --> 00:10:41,560 Yeah. A all >> [Anghlywadwy ymateb y myfyrwyr] >> ydych yn siarad ychydig yn uwch? 180 00:10:41,560 --> 00:10:45,440 [Myfyrwyr] Ble y gallwch gael y newidyn. >> Perfect. 181 00:10:45,440 --> 00:10:47,610 Ble y gallwch gael mynediad i newidyn penodol. 182 00:10:47,610 --> 00:10:50,990 Ac yn gyffredinol, y rheol y fawd hyd yn hyn yw bod y cwmpas rhai amrywiol 183 00:10:50,990 --> 00:10:56,140 yn cael ei ddiffinio gan y bresys mwyaf diweddar cyrliog eich bod wedi gweld. 184 00:10:56,140 --> 00:11:03,070 >> Ac felly yn yr achos hwn, os wyf yn gwneud y camgymeriad o ddatgan n ar-lein 22, byddai llinell gweithio. 185 00:11:03,070 --> 00:11:10,840 Byddwn yn cael int, a byddwn yn ei roi i mewn i'r n amrywiol yn llinell 22, 186 00:11:10,840 --> 00:11:17,060 ond a fyddai llinell o god yn awr yn cael unrhyw syniad beth rwy'n siarad amdano? >> [Myfyrwyr] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25, ac mae'n troi allan 24 o dda oherwydd yn yr achos hwn yn disgyn y tu allan i'r braces cyrliog. 188 00:11:23,840 --> 00:11:28,550 Felly, dim ond ychydig bach o niwsans, ond yn hawdd iawn eu datrys gan syml yn datgan y newidyn 189 00:11:28,550 --> 00:11:30,700 y tu allan i'r swyddogaeth ei hun. 190 00:11:30,700 --> 00:11:32,760 Byddwn yn gweld yn nes ymlaen heddiw gallwch fynd un cam ymhellach 191 00:11:32,760 --> 00:11:34,940 a gallech hyd yn oed yn cael ychydig yn ddiog. 192 00:11:34,940 --> 00:11:39,660 Ac nid yw hyn yn cael ei argymell yn gyffredinol, ond gallech hyd yn oed gael ddiog 193 00:11:39,660 --> 00:11:44,150 ac yn rhoi amrywiol yn fyd-eang, felly i beidio â siarad, y tu mewn swyddogaeth, nid tu mewn dolen, 194 00:11:44,150 --> 00:11:49,800 ond yn y ffeil ei hun, y tu allan i holl swyddogaethau rydych wedi ysgrifennu, fel y gwneuthum yma ar llinell 15. 195 00:11:49,800 --> 00:11:55,220 Mae hyn yn gyffredinol yn gwgu arno, ond yn sylweddoli hyn yn ateb weithiau i broblemau eraill, 196 00:11:55,220 --> 00:11:56,910 gan y byddwn yn y pen draw weld. 197 00:11:56,910 --> 00:11:59,500 Felly, am nawr, byddwn yn ei adael fel hyn, ond gadewch i ni weld os allwn ni ailysgrifennu hyn 198 00:11:59,500 --> 00:12:02,360 dim ond i ddechrau mynegi ein hunain ychydig yn wahanol. 199 00:12:02,360 --> 00:12:05,550 Mae'r rhaglen hon, dim ond i fod yn glir, yn positive1. 200 00:12:05,550 --> 00:12:11,980 Gadewch i mi fynd yn ei flaen yma ac yn fy ffenestr terfynell yn gwneud positive1, Enter. 201 00:12:11,980 --> 00:12:15,080 Llunio iawn. Rydw i'n mynd i redeg positive1, daro Chofnoda. 202 00:12:15,080 --> 00:12:19,250 I fynnu eich bod yn rhoi i mi gyfanrif positif. Byddaf yn dweud -1. Nad oedd yn gweithio. 203 00:12:19,250 --> 00:12:22,340 0, 99. Mae hynny'n ymddangos i weithio. 204 00:12:22,340 --> 00:12:25,310 Efallai nad yw'r prawf mwyaf trwyadl, ond o leiaf mae'n gwiriad bwyll 'n glws 205 00:12:25,310 --> 00:12:27,100 ein bod ar y trywydd iawn. 206 00:12:27,100 --> 00:12:29,570 >> Felly nawr gadewch i mi fynd yn ei flaen ac agor fersiwn 2 o hyn, 207 00:12:29,570 --> 00:12:32,800 a beth sy'n wahanol yn barod? 208 00:12:32,800 --> 00:12:39,030 Mae'n gweithredu yr un peth, ond beth sy'n neidio allan fel yn amlwg yn wahanol y tro hwn? 209 00:12:40,790 --> 00:12:47,090 Mae hyn yn bool mewn gwyrdd. Mae'n cael ei amlygu mewn gwyrdd, y gair allweddol a elwir yn bool, sy'n fath data. 210 00:12:47,090 --> 00:12:50,510 Nid yw'n dod a adeiladwyd i mewn i pob fersiwn o C. 211 00:12:50,510 --> 00:12:52,650 Mae angen i chi gynnwys llyfrgell benodol. 212 00:12:52,650 --> 00:12:56,460 Yn ein hachos ni, yr wyf yn cynnwys y llyfrgell CS50 fel bod gennym fynediad i bool. 213 00:12:56,460 --> 00:12:59,860 Ond yn llinell 18, rydym yn ymddangos i fod â gwerth Boole yma a elwir yn ddiolchgar. 214 00:12:59,860 --> 00:13:02,190 Gallwn fod wedi galw hyn unrhyw beth, ond yr wyf yn ei alw'n ddiolchgar 215 00:13:02,190 --> 00:13:04,750 dim ond i fath o gyfleu rhywfaint o ystyr semantig. 216 00:13:04,750 --> 00:13:07,700 Felly, i ddechrau ar llinell 18, Dwi ddim yn ymddangos yn ddiolchgar 217 00:13:07,700 --> 00:13:12,230 oherwydd bod y gwerth ddiolchgar Boolean yn cael ei ymgychwyn i ffug mewn llinell 18. 218 00:13:12,230 --> 00:13:16,500 Ac yna mae'n ymddangos hyn yr wyf wedi ei wneud yma yn y llinellau 21 drwy 23 219 00:13:16,500 --> 00:13:19,200 yn cael ei Rwyf wedi dim ond math o hailysgrifennu fy rhesymeg. 220 00:13:19,200 --> 00:13:26,100 Felly dim swyddogaethol gwahanol, ond yn llinell 22 awr yr wyf yn gwirio a yw'r int y defnyddiwr wedi darparu 221 00:13:26,100 --> 00:13:31,360 yn fwy na 0, yna yr wyf yn newid y gwerth ddiolchgar i gwir. 222 00:13:31,360 --> 00:13:35,590 A pham ydw i'n gwneud hynny? Oherwydd yn llinell 25, mae'n debyg yr wyf i'n mynd i wirio cyflwr. 223 00:13:35,590 --> 00:13:39,760 Gwnewch hyn dolen tra ddiolchgar yn ffug. 224 00:13:39,760 --> 00:13:42,960 Felly, yr wyf cynnig hwn fel dewis arall yn lle fersiwn 1 225 00:13:42,960 --> 00:13:47,050 oherwydd ei fod yn o leiaf ychydig yn fwy 'n athrylithgar efallai, mae ychydig yn fwy cadarn yn y Saesneg. 226 00:13:47,050 --> 00:13:51,980 Felly, yn gwneud y canlynol tra nad ydych chi'n ddiolchgar neu tra ddiolchgar yn ffug. 227 00:13:51,980 --> 00:13:56,220 A'r tro hwn wyf yn rhy debyg nad oes gofal i gofio beth y defnyddiwr deipio mewn 228 00:13:56,220 --> 00:14:00,050 oherwydd rhybudd does dim n amrywiol, felly mewn gwirionedd, yn gelwydd bach gwyn yno. 229 00:14:00,050 --> 00:14:03,290 >> Swyddogaethol, mae'r rhaglen yn ychydig yn wahanol ar ôl i ni fynd at wraidd ohono 230 00:14:03,290 --> 00:14:04,960 oherwydd nid wyf ddim yn cofio beth yw n. 231 00:14:04,960 --> 00:14:09,120 Ond yr wyf yn awyddus i ddangos yma hefyd bod hyd yn oed er ein bod wedi gweld GetInt 232 00:14:09,120 --> 00:14:13,780 a GetString cael ei ddefnyddio ar yr ochr dde-law o arwydd hafal hyd yn hyn 233 00:14:13,780 --> 00:14:17,310 er ein bod yn cofio y gwerth, yn dechnegol, nid yw hynny'n hollol angenrheidiol. 234 00:14:17,310 --> 00:14:20,290 Os am ​​ba bynnag reswm nad ydych yn unig yn gofalu i achub y gwerth, 235 00:14:20,290 --> 00:14:25,540 'ch jyst eisiau i wirio gwerth, sylwch y gallwn yn syml ysgrifennu hyn fel GetInt, 236 00:14:25,540 --> 00:14:27,320 agored paren, paren agos. 237 00:14:27,320 --> 00:14:30,570 Swyddogaeth honno yn mynd i ddychwelyd gwerth, fel yr ydym wedi bod yn ei ddweud. 238 00:14:30,570 --> 00:14:32,220 Mae'n mynd i roi i chi yn ôl yn int. 239 00:14:32,220 --> 00:14:34,460 Ac felly os ydych yn feddyliol yn meddwl am hyn yn digwydd, 240 00:14:34,460 --> 00:14:38,190 pan fyddaf yn teipio mewn 99, GetInt yn dychwelyd y nifer 99, 241 00:14:38,190 --> 00:14:41,840 ac felly gysyniadol, mae fel bod fy cod mewn gwirionedd yn hyn. 242 00:14:41,840 --> 00:14:45,950 Felly, os 99 yn wir yn fwy na 0, yna ddiolchgar dod yn wir, 243 00:14:45,950 --> 00:14:50,810 Yna, llinell 25 sylweddoli www, rydym yn ei wneud am fy mod i'n awr yn ddiolchgar, 244 00:14:50,810 --> 00:14:53,970 ac yn unol 26, yr ydym yn syml yn dweud, "Diolch am y cyfanrif positif!" 245 00:14:53,970 --> 00:14:55,960 beth bynnag y digwyddodd i fod. 246 00:14:55,960 --> 00:14:59,140 Nawr gadewch i ni wneud ychydig o siwgr cystrawennol yma, felly, i siarad. 247 00:14:59,140 --> 00:15:04,670 Gadewch i ni weld os allwn lanhau y llinell hon 25 gyda hwn amrywiad trydydd a'r olaf yn positive3. 248 00:15:04,670 --> 00:15:13,600 >> Sylwch ar y wahaniaeth yn unig yn awr yw pa linell o god? >> [Myfyrwyr] 25. >> [Malan] Yeah, 25. 249 00:15:13,600 --> 00:15:17,680 Ac nid ydym wedi gweld mewn gwirionedd hon castia eto, ond rydym yn gweld y pwynt ebychnod ar ddydd Llun, 250 00:15:17,680 --> 00:15:21,070 sy'n dynodi beth? >> [Myfyrwyr] Heb. Nid >> neu negyddu. 251 00:15:21,070 --> 00:15:23,510 Felly, yn cymryd gwerth Boole ac yn troi ei werth. 252 00:15:23,510 --> 00:15:25,810 Gwir yn dod yn ffug, ffug yn dod yn wir. 253 00:15:25,810 --> 00:15:30,420 Felly, mae hyn, byddwn yn cynnig, hyd yn oed ychydig yn fwy 'n athrylithgar ffordd o ysgrifennu y cod 254 00:15:30,420 --> 00:15:33,430 oherwydd fy mod yn dal i ymgychwyn ddiolchgar i ffug, yr wyf yn dal yn gwneud y canlynol, 255 00:15:33,430 --> 00:15:36,010 Wyf yn gosod ddiolchgar yn wir pan ddaw'r amser, 256 00:15:36,010 --> 00:15:40,880 ond yn awr y gallwch chi mewn gwirionedd dim ond cyfieithu cod hwn ar ôl ar lafar i'r dde, 257 00:15:40,880 --> 00:15:45,630 tra (ddiolchgar!); oherwydd bang neu ebychnod yn dynodi pwynt y syniad o beidio, 258 00:15:45,630 --> 00:15:47,580 felly tra nad ddiolchgar. 259 00:15:47,580 --> 00:15:49,900 Felly, unwaith eto, nid ydym wedi cyflwyno unrhyw gysyniadau newydd fel y cyfryw. 260 00:15:49,900 --> 00:15:53,730 Rydym yn siarad am Booleans ôl pan fyddwn yn chwarae gyda Scratch, 261 00:15:53,730 --> 00:15:56,720 ond yn sylweddoli nawr gallwn dim ond dechrau ysgrifennu ein cod mewn llawer o ffyrdd gwahanol. 262 00:15:56,720 --> 00:16:01,060 Felly, yn enwedig yn pset1 os ydych yn fath o ymdrechu i chyfrif i maes ffordd i ysgrifennu rhai rhaglen, 263 00:16:01,060 --> 00:16:04,340 groes yn eich bod yn lwc gan na all fod unrhyw nifer o atebion 264 00:16:04,340 --> 00:16:06,110 eich bod yn gallu digwydd arnynt. 265 00:16:06,110 --> 00:16:10,500 Er enghraifft, mae hyn yn dim ond 3 i hyd yn oed y symlaf o raglenni. Mae pob hawl. 266 00:16:10,500 --> 00:16:14,200 Ac yn awr yn cofio ddydd Llun i ni adael ar y nodyn gyda gwerthoedd dychwelyd. 267 00:16:14,200 --> 00:16:18,450 Felly, am y tro cyntaf i ni ysgrifennu rhaglen nad yw'n unig yn brif; 268 00:16:18,450 --> 00:16:22,550 mae ganddo hefyd ei swyddogaeth ei hun arferiad i mi ysgrifennu yma. 269 00:16:22,550 --> 00:16:26,810 Felly, yn llinell 31 trwy 34 Rwyf wedi gweithredu swyddogaeth ciwb. 270 00:16:26,810 --> 00:16:30,240 Dyw hi ddim yn gymhleth. Mae'n dim ond * a * a yn yr achos hwn. 271 00:16:30,240 --> 00:16:34,750 Ond yr hyn sy'n bwysig am y peth yw fy mod i'n cymryd mewnbwn yn y ffurf 272 00:16:34,750 --> 00:16:39,180 ac rwy'n dychwelyd cynnyrch ar ffurf a * a * a. 273 00:16:39,180 --> 00:16:43,560 Felly, yn awr yr wyf yn cael y gallu, yn debyg iawn Roeddwn i'n arfer gyda prinf ei ben ei hun, 274 00:16:43,560 --> 00:16:47,240 i alw y swyddogaeth hon drwy ffonio'r swyddogaeth ciwb. 275 00:16:47,240 --> 00:16:51,970 >> Ac mae'r swyddogaeth ciwb cymryd rhywfaint o fewnbwn, a'r swyddogaeth ciwb yn dychwelyd rhywfaint o allbwn. 276 00:16:51,970 --> 00:16:56,960 Ar y llaw arall, dim ond printf gwneud rhywbeth. 277 00:16:56,960 --> 00:17:00,840 Nid oedd yn dychwelyd unrhyw beth yr ydym yn gofalu am, er fel neilltu yw'n dychwelyd gwerth; 278 00:17:00,840 --> 00:17:03,110 chi dim ond yn gyffredinol anwybyddu. 279 00:17:03,110 --> 00:17:06,510 Printf dim ond gwneud rhywbeth. Roedd yn sgîl-effaith o argraffu ar y sgrin. 280 00:17:06,510 --> 00:17:11,770 Mewn cyferbyniad yma, mae gennym y, swyddogaeth ciwb sydd mewn gwirionedd yn dychwelyd rhywbeth. 281 00:17:11,770 --> 00:17:15,520 Felly, ar gyfer rhai sy'n gyfarwydd â hyn, mae'n syniad gweddol syml. 282 00:17:15,520 --> 00:17:19,640 Ond ar gyfer rhai sy'n llai cyfarwydd â'r syniad o basio mewn mewnbynnau a mynd yn ôl allbynnau, 283 00:17:19,640 --> 00:17:21,950 gadewch i ni geisio syml rywbeth yn unig super. 284 00:17:21,950 --> 00:17:25,490 A oes unrhyw un yn gyfforddus yn dod i fyny ar y llwyfan yn fyr? 285 00:17:25,490 --> 00:17:28,040 Mae'n rhaid i chi fod yn gyfforddus gyda chamera ar chi yn ogystal. Yeah? Iawn. 286 00:17:28,040 --> 00:17:31,240 Beth yw eich enw? >> [Myfyrwyr] Ken. >> Ken. Mae pob hawl. Ken, yn dod ar i fyny. 287 00:17:31,240 --> 00:17:35,050 Ken yn mynd i fod yn swyddogaeth o fath yma. 288 00:17:35,050 --> 00:17:38,720 Gadewch i ni fynd ymlaen a gwneud hyn. Gadewch i ni gael ychydig o ffansi. 289 00:17:38,720 --> 00:17:42,260 Braf i gwrdd â chi. Croeso i ganol y llwyfan. Mae pob hawl. 290 00:17:42,260 --> 00:17:46,640 Gadewch i ni daro y botwm yma. Mae pob hawl. 291 00:17:46,640 --> 00:17:49,820 Felly dyma oes gennych bwrdd sialc modern, 292 00:17:49,820 --> 00:17:53,470 a'r hyn yr wyf yw prif swyddogaeth, er enghraifft, 293 00:17:53,470 --> 00:17:56,460 ac nid oes gennyf iPad yn fy llaw. 294 00:17:56,460 --> 00:17:59,710 >> Dwi ddim yn cofio sut i - Wel, ni allaf ddweud hynny. 295 00:17:59,710 --> 00:18:02,480 Dwi ddim yn cael llawysgrifen da, 296 00:18:02,480 --> 00:18:05,520 ac felly'n rwyf am i chi argraffu rhywbeth ar y sgrin i mi. 297 00:18:05,520 --> 00:18:12,040 Yr wyf yn bod y brif raglen, ac yr wyf i'n mynd i gael i chi ddweud hyn 298 00:18:12,040 --> 00:18:16,720 drwy ysgrifennu yn fy crafu cyw iâr ac yna basio eich mewnbwn. 299 00:18:16,720 --> 00:18:20,400 Felly, er bod gwirion yr ymarfer hwn yw, y syniad o swyddogaethau a galw swyddogaeth 300 00:18:20,400 --> 00:18:22,400 a dychwelyd swyddogaeth wir boils i lawr i hyn. 301 00:18:22,400 --> 00:18:26,260 Yr wyf yn cyfan, yr wyf wedi ysgrifennu newydd printf, dyfynnwch-unquote rhywbeth ar y sgrin, 302 00:18:26,260 --> 00:18:29,110 Yr wyf yn rhedeg y rhaglen, a chyn gynted ag printf yn cael ei alw, 303 00:18:29,110 --> 00:18:32,880 mae'n cymryd un ddadl neu un paramedr weithiau rhwng dyfynodau dwbl. 304 00:18:32,880 --> 00:18:35,880 Dyma yw y ddadl. Rwy'n ei throsglwyddo i Ken. 305 00:18:35,880 --> 00:18:39,020 Mae'n blwch du ysgrifennu rhai nifer o flynyddoedd yn ôl 306 00:18:39,020 --> 00:18:41,510 sy'n ymddangos yn unig yn gwybod sut i argraffu pethau ar y sgrin. 307 00:18:41,510 --> 00:18:43,150 Felly gweithredu. 308 00:18:49,280 --> 00:18:51,280 Dyw hynny ddim yn ddrwg. Da iawn. 309 00:18:51,280 --> 00:18:55,510 Felly nawr Ken yn cael ei wneud gweithredu. A oes angen iddo roi unrhyw beth i mi yn ôl? 310 00:18:55,510 --> 00:18:57,470 Nid ein bod wedi gweld hyd yn hyn. 311 00:18:57,470 --> 00:19:00,460 Unwaith eto, printf mewn gwirionedd yn dychwelyd nifer, ond rydym yn mynd i anwybyddu hynny am y tro 312 00:19:00,460 --> 00:19:03,470 oherwydd nid ydym erioed wedi ei ddefnyddio. Felly dyna ni am Ken. 313 00:19:03,470 --> 00:19:08,580 Ac felly, yn awr yn cymryd drosodd prif rheolaeth ar y rhaglen eto 314 00:19:08,580 --> 00:19:11,060 oherwydd bod llinell o god, printf, yn cael ei wneud gweithredu. 315 00:19:11,060 --> 00:19:14,050 Ac rydym yn mynd am ein ffordd, beth bynnag gweithredu llinellau eraill yno. 316 00:19:14,050 --> 00:19:17,320 Felly nawr gadewch i ni geisio enghraifft ychydig yn wahanol. 317 00:19:17,320 --> 00:19:24,940 Mae'r amser yma yn gyntaf gadewch i glirio'r sgrin, a'r tro hwn byddwn yn gwneud y swyddogaeth cubing, 318 00:19:24,940 --> 00:19:27,080 ond y tro hwn, yr wyf yn disgwyl gwerth allbwn. 319 00:19:27,080 --> 00:19:29,180 >> Felly, gadewch i ni fynd ymlaen a gwneud hyn. 320 00:19:29,180 --> 00:19:35,790 Nawr mae gennyf linell o god sy'n dweud x yn cael ciwb o x. 321 00:19:41,370 --> 00:19:46,370 Mae llinell o god, galw i gof, yn edrych fel hyn: x = ciwb (x); 322 00:19:46,370 --> 00:19:50,930 Felly, sut mae hyn yn mynd i weithio? Gadewch i ni fynd yn ei flaen ac yn rhoi sgrin gwyn eto. 323 00:19:50,930 --> 00:19:54,070 Yr wyf yn mynd i ysgrifennu i lawr yn awr y gwerth x, 324 00:19:54,070 --> 00:20:01,400 sydd ar hyn o bryd yn digwydd bod yn, gadewch i ni ddweud, 2 i gadw'n syml. 325 00:20:01,400 --> 00:20:06,150 Yr wyf wedi ysgrifennu i lawr ar ddarn o bapur werth 2, sef fy x gwerth. 326 00:20:06,150 --> 00:20:10,920 Rwy'n ei roi i Ken. >> Ac yr wyf yn ysgrifennwch yr ateb? >> Yeah, gadewch i ni dim ond ysgrifennwch yr ateb. 327 00:20:12,760 --> 00:20:18,940 Iawn. Ac yn awr mae'n rhaid iddo ddychwelyd i mi rhywbeth. Perfect. Nice segue. 328 00:20:18,940 --> 00:20:23,120 Felly nawr ei fod dwylo fi yn ôl y gwerth o 8 yn yr achos hwn, a beth ddylwn i ei wneud ag ef? 329 00:20:23,120 --> 00:20:28,250 A dweud y gwir - gadewch i ni weld, gael hyn yn iawn. Beth ydw i'n mynd i wneud â hi? 330 00:20:28,250 --> 00:20:33,440 Nawr rwy'n mynd i gymryd y gwerth hwn ac mewn gwirionedd yn ei storio yn y darnau yr un yn y cof. 331 00:20:33,440 --> 00:20:35,170 Ond sylwi Rwy'n fath o trafferthion yma. 332 00:20:35,170 --> 00:20:38,210 Rwy'n ychydig yn ddryslyd oherwydd lle ydw i'n ysgrifennu mewn gwirionedd y gwerth x, 333 00:20:38,210 --> 00:20:43,150 oherwydd yr hyn yr wyf wedi ei wneud yn unig yw Ken gorfforol llaw darn o bapur sy'n cael y gwerth 2, 334 00:20:43,150 --> 00:20:46,590 a oedd yn x, ac yn wir, dyna yn union beth ddigwyddodd. 335 00:20:46,590 --> 00:20:50,210 Felly, mae'n troi allan bod pan fyddwch yn ffonio y swyddogaeth a byddwch yn mynd heibio mewn dadl 336 00:20:50,210 --> 00:20:53,290 fel helo, byd neu byddwch yn mynd heibio mewn dadl fel 2, 337 00:20:53,290 --> 00:20:57,110 yn gyffredinol, ydych chi'n digwydd pasio mewn copi o'r ddadl. 338 00:20:57,110 --> 00:21:00,730 Ac felly yn union fel ysgrifennais i lawr y rhif 2 yma a'i roi i Ken, 339 00:21:00,730 --> 00:21:04,720 y mae'n rhaid golygu fy mod yn dal i gael copi o'r gwerth 2 rhywle 340 00:21:04,720 --> 00:21:08,890 oherwydd yn wir, yn awr fy mod i wedi gotten yn ôl y gwerth 8, mae angen i mi fynd yn ôl yn y RAM 341 00:21:08,890 --> 00:21:12,130 ac mewn gwirionedd yn ysgrifennu i lawr 8 lle cefais unwaith roedd y rhif 2. 342 00:21:12,130 --> 00:21:16,950 Felly, yn weledol, cofiwch syniad hwn o pasio i mewn, yn llythrennol, copi o'r gwerth. 343 00:21:16,950 --> 00:21:20,780 >> Ken yn gwneud ei beth, dwylo i mi rhywbeth yn ôl - yn yr achos hwn gwerth fel 8 - 344 00:21:20,780 --> 00:21:24,980 ac yna rhaid i mi wneud rhywbeth gyda gwerth hwnnw os ydw i eisiau ei gadw o gwmpas. 345 00:21:24,980 --> 00:21:29,650 Felly bydd hyn oll yn dod yn ôl i fod yn rhy gyfarwydd cyn bo hir. 346 00:21:29,650 --> 00:21:34,920 Diolch yn fawr am y demo yma, Ken. [Cymeradwyaeth] 347 00:21:34,920 --> 00:21:36,920 Da iawn chi. 348 00:21:36,920 --> 00:21:42,690 Gadewch i ni weld sut yn y pen draw yn berthnasol i rai o'r swyddogaeth galw ein bod ni wedi bod yn ei wneud yma. 349 00:21:42,690 --> 00:21:47,910 Gadewch i mi fynd yn ei flaen ac yn dod â ni yn ôl at yr enghraifft cubing yma. 350 00:21:47,910 --> 00:21:53,300 Sylwch fod, os ydym am i mewn gwirionedd yn dechrau mynd â hyn ymhellach, 351 00:21:53,300 --> 00:21:57,570 rydym yn mynd i gael i fod yn ymwybodol o'r ffaith bod y x rhif sy'n cael ei basio i mewn yma 352 00:21:57,570 --> 00:22:01,530 yn wahanol i'r hyn mewn gwirionedd yn cael eu pasio i mewn i'r swyddogaeth. 353 00:22:01,530 --> 00:22:05,880 Felly, unwaith eto, mae hyn yn pasio drwy copi yn mynd i fod yn eithaf bwys yn mewn dim ond hyn o bryd. 354 00:22:05,880 --> 00:22:09,580 Gadewch i ni edrych ar rywbeth nad yw'n llwyr gweithio'n iawn eto. 355 00:22:09,580 --> 00:22:13,250 Rydw i'n mynd i fynd yn ei flaen ac agor enghraifft bygi parti, sy'n cael ei ddiffygiol gan natur, 356 00:22:13,250 --> 00:22:18,550 ac fe'i gelwir buggy3 a fydd yn gweithredu swyddogaeth cyfnewid. 357 00:22:18,550 --> 00:22:25,110 Yma mae gennym swyddogaeth prif sydd wedi x ac y ymgychwyn yn fympwyol i 1 a 2, yn y drefn honno. 358 00:22:25,110 --> 00:22:27,700 Gallem ddefnyddio GetInt, ond rydym yn unig angen ymarfer syml, 359 00:22:27,700 --> 00:22:30,170 felly mae'n hard-coded fel 1 a 2. 360 00:22:30,170 --> 00:22:35,340 Mewn llinellau 21 a 22, gennym, mae'n debyg argraffu x ac y, 1 y llinell. 361 00:22:35,340 --> 00:22:39,720 Yna, ar llinell 23, gallaf wneud cais am yr wyf yn cyfnewid gwerthoedd hyn, dot, dot, dot. 362 00:22:39,720 --> 00:22:44,170 I bob golwg alw swyddogaeth yn llinell 24 cyfnewid elwir sy'n cymryd 2 dadleuon. 363 00:22:44,170 --> 00:22:48,300 Mae'n hollol cyfreithlon ar gyfer swyddogaethau i fynd â 2 dadleuon. Rydym wedi gweld printf wneud yn barod. 364 00:22:48,300 --> 00:22:51,830 >> Felly gyfnewid pob golwg yn cymryd x ac y, ac fel yr awgryma'r enw, 365 00:22:51,830 --> 00:22:54,670 Byddwn yn gobeithio ei fod yn mynd i gyfnewid y 2 gwerthoedd. 366 00:22:54,670 --> 00:23:00,090 Felly, yna gallaf hawlio ar-lein 25 "cyfnewid!" ac yr wyf ailargraffiad x ac y 367 00:23:00,090 --> 00:23:03,070 o dan y rhagdybiaeth eu bod wedi cael eu cyfnewid yn wir. 368 00:23:03,070 --> 00:23:06,080 Ond os wyf mewn gwirionedd yn rhedeg y rhaglen - gadewch i mi agor ffenestr terfynell, 369 00:23:06,080 --> 00:23:09,860 gadewch i mi wneud buggy3 - fel mae'r enw yn awgrymu, nid yw hyn yn mynd i orffen yn dda 370 00:23:09,860 --> 00:23:15,770 oherwydd pan wyf yn taro Mewnbynnu, yn sylwi bod x yn 1, y yw 2, 371 00:23:15,770 --> 00:23:19,420 ac eto ar ddiwedd y rhaglen, maent yn dal i fod, mewn gwirionedd, yr un fath. 372 00:23:19,420 --> 00:23:22,960 Hynny ar sail yr arddangosiad yn unig yn awr gyda Ken, beth sy'n digwydd mewn gwirionedd? 373 00:23:22,960 --> 00:23:28,710 Gadewch i blymio i mewn i hyn swyddogaeth cyfnewid. Mae'n super byr. Dim ond ychydig linellau o god hir. 374 00:23:28,710 --> 00:23:34,520 Ond beth yw'r broblem sylfaenol yn seiliedig ar y stori syml dweud i fyny yma gyda Ken? 375 00:23:34,520 --> 00:23:36,670 Pam mae cyfnewid torri? 376 00:23:36,670 --> 00:23:39,660 [Myfyrwyr] Rydych yn storio i beidio copi, y newidyn. 377 00:23:39,660 --> 00:23:43,980 Yn union. Rydym yn storio peidio i gael copi, y newidyn ei hun. 378 00:23:43,980 --> 00:23:47,170 Mewn geiriau eraill, cyfnewid pob golwg yn cymryd 2 dadleuon, yn int, 379 00:23:47,170 --> 00:23:49,370 ac fe'i gelwir yn fympwyol a b, ac, 380 00:23:49,370 --> 00:23:54,420 a hyd yma rwyf wedi pasio yn x ac y, sydd yn y drefn honno 1 a 2, 381 00:23:54,420 --> 00:23:58,770 ond dydw i ddim yn llythrennol basio yn x, dydw i ddim yn llythrennol basio yn y, 382 00:23:58,770 --> 00:24:01,450 Rwy'n pasio copi o x a chopi o y. 383 00:24:01,450 --> 00:24:04,510 Mae'n bron fel petaech copïo a gludo i mewn i gyfnewid 384 00:24:04,510 --> 00:24:07,810 gwerthoedd yr ydych am iddo mewn gwirionedd trin. 385 00:24:07,810 --> 00:24:14,480 Felly, os yw hynny'n wir, pan fyddaf yn dechrau rhaglen gweithredu llinell 35, yna 36, 386 00:24:14,480 --> 00:24:18,650 pan fyddaf yn mynd i linell 37, yn y fan hon yn y stori, beth yw gwerth? 387 00:24:21,040 --> 00:24:25,050 Ar y pwynt hwn yn y stori, llinell 37, beth yw gwerth ar y pwynt hwn? >> [Myfyrwyr] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] unig a ddylai fod yn 1, iawn, oherwydd x ei basio i mewn fel y ddadl gyntaf, 389 00:24:29,280 --> 00:24:33,080 a swyddogaeth hon dim ond fympwyol yn galw ei ddadl gyntaf. 390 00:24:33,080 --> 00:24:38,200 Yn yr un modd yn y ddadl ail, a 'i' jyst fympwyol ffonio'r b ail ddadl. 391 00:24:38,200 --> 00:24:40,990 >> Mae'r ddeuoliaeth mewn gwirionedd yn eithaf hegluro'n syml. Meddyliwch am y peth. 392 00:24:40,990 --> 00:24:43,320 Nid oes yr un ohonom wedi cwrdd â'r person a ysgrifennodd printf, 393 00:24:43,320 --> 00:24:50,770 felly yn sicr, bydd ef neu ganddi ddim syniad beth yw ein newidynnau 30 mlynedd yn ddiweddarach yn mynd i gael eu galw. 394 00:24:50,770 --> 00:24:56,650 Felly, mae'n rhaid cael gwahaniaethu rhwng yr hyn a alwch newidynnau mewn swyddogaethau rydych chi'n ysgrifennu 395 00:24:56,650 --> 00:25:02,080 a beth fyddwch yn ffonio newidynnau mewn swyddogaethau ydych yn ffonio neu ddefnyddio. 396 00:25:02,080 --> 00:25:05,340 Felly, mewn geiriau eraill, yr wyf wedi ysgrifennu fy newidynnau fel x ac y, 397 00:25:05,340 --> 00:25:08,890 ond os yw rhywun arall wedi ysgrifennu y swyddogaeth cyfnewid, bydd ef neu hi na fyddai yn sicr yn gwybod 398 00:25:08,890 --> 00:25:10,690 beth yw fy newidynnau yn mynd i gael ei alw, 399 00:25:10,690 --> 00:25:13,830 felly yn sylweddoli bod hyn yn pam yr ydych yn cael y ddeuoliaeth o enwau. 400 00:25:13,830 --> 00:25:16,750 Yn dechnegol, gallwn wneud hyn drwy gyd-ddigwyddiad, 401 00:25:16,750 --> 00:25:20,080 ond byddent yn dal i gael eu trosglwyddo i mewn fel copïau. 402 00:25:20,080 --> 00:25:23,650 Byddai yn unig fod yn gyd-ddigwyddiad pur esthetaidd os yw'r person a ysgrifennodd cyfnewid 403 00:25:23,650 --> 00:25:26,150 wedi defnyddio'r un enwau. 404 00:25:26,150 --> 00:25:32,370 Felly, ar y pwynt hwn yn y stori, llinell 37, a yw 1, b yw 2, ac yn awr fi yn myned rhagof i gyfnewid eu cyfer. 405 00:25:32,370 --> 00:25:34,900 Yn gyntaf oll, gadewch i mi mewn gwirionedd yn gwneud hyn yn llawer mwy syml. 406 00:25:34,900 --> 00:25:36,690 Nid wyf yn gwybod beth yw'r 3 llinell o god yn ei wneud. 407 00:25:36,690 --> 00:25:41,210 Gadewch i mi wneud hyn: b = a; a = b; wneud. 408 00:25:41,210 --> 00:25:44,690 Pam mae hyn yn torri, yn rhesymegol? 409 00:25:46,490 --> 00:25:48,900 Mae'n fath o beth sythweledol, dde? 410 00:25:48,900 --> 00:25:52,560 Felly b yn dod, ac b yn dod yn, 411 00:25:52,560 --> 00:25:57,730 ond y broblem yw bod cyn gynted ag y bo llinell 37 executes, beth yw'r gwerth a b a? 412 00:25:57,730 --> 00:26:03,410 Mae'r un peth, 1, oherwydd eich bod wedi taro, fel petai, rydych chi wedi newid b yn hafal i a. 413 00:26:03,410 --> 00:26:08,890 Felly, unwaith y bydd llinell 37 wedi cyflawni, mae hynny'n wych, bellach mae gennych 2 gopi o'r rhif 1 414 00:26:08,890 --> 00:26:13,350 y tu mewn swyddogaeth hon, felly, yna pan fyddwch yn dweud yn unol 38 a = b, 415 00:26:13,350 --> 00:26:17,640 eich bod yn fath o sgriwio oherwydd eich bod yn neilltuo dim ond 1-1. 416 00:26:17,640 --> 00:26:20,580 Rydych chi wedi fath o golli y gwerth yr ydych yn gofalu amdano. 417 00:26:20,580 --> 00:26:23,220 Felly, yn y fersiwn wreiddiol o hyn, sylwi ar beth wnes i. 418 00:26:23,220 --> 00:26:26,850 Yn hytrach, roedd nhrydedd linell o god sy'n edrych fel hyn. 419 00:26:26,850 --> 00:26:28,580 Yr wyf yn datgan newidyn dros dro. 420 00:26:28,580 --> 00:26:32,170 >> Tmp yn enw cyffredin iawn ar gyfer newidyn dros dro, ac ei fod yn int 421 00:26:32,170 --> 00:26:34,580 oherwydd mae'n rhaid iddo cyfateb i'r hyn yr wyf am wneud copi o. 422 00:26:34,580 --> 00:26:39,770 I storio copi o tu mewn tmp, felly unwaith y llinell 37 wedi cyflawni, 423 00:26:39,770 --> 00:26:45,860 y gwerth yw - gwiriad pwyll cyflym - 1, y gwerth b yw 2, 424 00:26:45,860 --> 00:26:48,970 a gwerth tmp hefyd yn 1. 425 00:26:48,970 --> 00:26:52,060 Felly, yn awr yr wyf gweithredu llinell 38. 426 00:26:52,060 --> 00:27:00,540 Unwaith y bydd llinell 38 executes, a mynd ar werth b. Ac b yn 2, felly mae yn awr 2. 427 00:27:00,540 --> 00:27:05,210 Felly, ar y pwynt hwn yn y stori, a yw 2, b yw 2, ac tmp yw 1, 428 00:27:05,210 --> 00:27:11,060 felly yn awr yn rhesymegol, gallwn werthfawrogi dim ond sw n plopian tmp ar i b ac rydym yn ei wneud. 429 00:27:11,060 --> 00:27:12,800 Felly, rydym wedi datrys y broblem honno. 430 00:27:12,800 --> 00:27:17,720 Yn anffodus, pan fyddaf yn rhedeg y rhaglen ar y ffurflen hon, nid yw'n mewn gwirionedd yn cyfnewid unrhyw werthoedd. 431 00:27:17,720 --> 00:27:20,100 Ond i fod yn glir, pam? 432 00:27:23,660 --> 00:27:26,450 Wyf yn sefydlog y broblem rhesymegol o ychydig funudau'n ôl, 433 00:27:26,450 --> 00:27:31,020 ond unwaith eto, os byddaf yn rhedeg y rhaglen, x ac y yn aros yn ddigyfnewid 434 00:27:31,020 --> 00:27:33,310 erbyn diwedd y gweithredu y rhaglen. 435 00:27:33,310 --> 00:27:37,220 [Myfyriwr yn Anghlywadwy] >> Nid ydym wedi dychwelyd unrhyw beth, felly mae hynny'n wir. 436 00:27:37,220 --> 00:27:39,670 Ond mae'n troi allan mae ychydig o broblem yma oherwydd hyd yn hyn, 437 00:27:39,670 --> 00:27:44,170 yr unig beth rydym wedi bod yn gallu dychwelyd yn un peth, ac mae hyn yn cyfyngu ar C. 438 00:27:44,170 --> 00:27:49,070 Gallwch ddychwelyd yn wir un gwerth, ac os felly rwy'n math o sownd yma 439 00:27:49,070 --> 00:27:53,310 gan y byddwn yn dychwelyd y gwerth newydd x neu gallwn ddychwelyd y gwerth newydd y, 440 00:27:53,310 --> 00:27:55,190 ond yr wyf am i yn ôl. 441 00:27:55,190 --> 00:27:58,650 Felly nid ddychwelyd yw'r ateb syml yma. 442 00:27:58,650 --> 00:28:01,710 Ond y broblem sylfaenol yw pam? Beth ydym ni wedi cyfnewid mewn gwirionedd? 443 00:28:01,710 --> 00:28:04,190 [Myfyrwyr] a a b. >> A a b. 444 00:28:04,190 --> 00:28:08,230 Ond mae a a b yn copďau o x ac y, sy'n golygu ein bod yn unig oedd hyn i gyd gwaith, 445 00:28:08,230 --> 00:28:11,650 rydym yn unig treulio 3 munud yn siarad am y swyddogaeth cyfnewid a pob un o'r 3 o'r newidynnau hyn, 446 00:28:11,650 --> 00:28:15,420 ac mae hynny'n wych, yn hollol gywir yn ei ben ei hun, 447 00:28:15,420 --> 00:28:20,740 ond a a b yn chwmpas yn unig yn y llinellau hyn yma. 448 00:28:20,740 --> 00:28:24,790 >> Felly, yn union fel ar gyfer ddolen, os ydych yn datgan yn gyfanrif i tu mewn i'r ddolen ar gyfer, 449 00:28:24,790 --> 00:28:28,760 yn yr un modd, os ydych yn datgan y tu mewn i ac yn b swyddogaeth yr ydych wedi ysgrifennu, 450 00:28:28,760 --> 00:28:33,320 eu bod yn unig y tu mewn dilys y swyddogaeth honno, sy'n golygu cyn gynted ag y cyfnewid yn cael ei wneud cyflawni 451 00:28:33,320 --> 00:28:38,470 ac rydym yn mynd o linell 24 i linell 25 oed, ni x ac y wedi cael eu newid o gwbl. 452 00:28:38,470 --> 00:28:42,790 Rydych yn unig gwastraffu llawer gyfan o amser yn gyfnewid copïau o newidynnau. 453 00:28:42,790 --> 00:28:47,010 Felly, mae'n troi allan fod yr ateb i hyn mewn gwirionedd heb fod yn amlwg. 454 00:28:47,010 --> 00:28:50,670 Dyw hi ddim yn hen ddigon i ddychwelyd gwerthoedd oherwydd ni allwn ond dychwelyd 1 gwerth, 455 00:28:50,670 --> 00:28:53,470 ac rwyf wir yn awyddus i gyfnewid ddau x ac y ar yr un pryd, 456 00:28:53,470 --> 00:28:55,210 felly rydym ni'n mynd i gael i ddod yn ôl i hyn. 457 00:28:55,210 --> 00:29:01,020 Ond am nawr, yn sylweddoli bod y mater yn deillio sylfaenol o'r ffaith bod a a b yn gopïau 458 00:29:01,020 --> 00:29:03,630 ac maent yn eu cwmpas eu hunain. 459 00:29:03,630 --> 00:29:05,050 Gadewch i ni geisio datrys hyn mewn rhyw ffordd. 460 00:29:05,050 --> 00:29:11,250 Gadewch i mi mewn gwirionedd yn sgrolio yn ôl yma ac yn agor i fyny, gadewch i ni ddweud, amrywiad pedwerydd hyn, buggy4. 461 00:29:11,250 --> 00:29:13,370 Beth am hyn? 462 00:29:13,370 --> 00:29:17,810 Mae hon yn broblem debyg ond symlach i edrych ar cyn inni gymryd drywanu yn ei datrys. 463 00:29:17,810 --> 00:29:24,190 Mae'r rhaglen hon yn cael ei alw'n cynyddiad, ac mae'n debyg initializes cyfanrif x i 1 yn llinell 18. 464 00:29:24,190 --> 00:29:28,150 Yna hawlio x yw 1, yr wyf wedyn hawlio "incrementing ..." 465 00:29:28,150 --> 00:29:33,730 Yna, galwaf ar cynyddiad, ond yna mewn llinellau 22 a 23, yr wyf yn ei hawlio wedi bod yn mynd i fyny, 466 00:29:33,730 --> 00:29:40,220 Gallaf wneud cais am x yn awr beth bynnag ydyw - 2, yn ôl pob tebyg - ond mae'r rhaglen yn bygi. 467 00:29:40,220 --> 00:29:42,610 Beth yw'r broblem? 468 00:29:43,440 --> 00:29:50,160 Yeah. >> [Anghlywadwy ymateb y myfyrwyr] >> Yn union. 469 00:29:50,160 --> 00:29:52,490 Felly x wedi cael ei ddatgan, yn amlwg, ar-lein 18. 470 00:29:52,490 --> 00:29:54,700 Dyna y tu mewn i brif braces cyrliog. 471 00:29:54,700 --> 00:29:58,440 Felly, yr ateb syml yma yw, tra bod x yn bodoli yma, 472 00:29:58,440 --> 00:30:03,930 Nid yw'n bodoli mewn llinell 32, felly mae'r rhaglen, ni fydd mewn gwirionedd hyd yn oed yn llunio. 473 00:30:03,930 --> 00:30:07,940 Mae'r compiler pan fyddaf yn roi cynnig ar lunio'r cod hwn yn mynd i gweiddi arna i 474 00:30:07,940 --> 00:30:14,100 am rai dynodwr heb ei ddatgan neu rywbeth i'r perwyl hwnnw. Yn wir, gadewch i ni geisio. 475 00:30:14,100 --> 00:30:18,470 Mae hyn yn gwneud buggy4. Mae ydyw. 476 00:30:18,470 --> 00:30:22,110 Defnyddio 'x' dynodwr heb ei ddatgan yn llinell 32. 477 00:30:22,110 --> 00:30:25,580 Ac mewn gwirionedd, gadewch i ni fod yn fwy eglur yma heddiw fel bod hyn yn ddefnyddiol 478 00:30:25,580 --> 00:30:27,580 yn ystod oriau swyddfa ac yn y cartref. 479 00:30:27,580 --> 00:30:29,300 >> Hysbysiad ei fod yn ychydig yn gryptig ysgrifenedig. 480 00:30:29,300 --> 00:30:37,270 Ond mae'r ffaith bod Clang wedi yelled ni, gan ddywedyd buggy4.c: 32:5, mewn gwirionedd yn ddefnyddiol. 481 00:30:37,270 --> 00:30:42,050 Mae'n golygu bod y gwall ar llinell 32 am 5 safle cymeriad. 482 00:30:42,050 --> 00:30:46,700 Felly 1, 2, 3, 4, 5. Dyna, mewn gwirionedd, lle mae'r broblem. 483 00:30:46,700 --> 00:30:49,790 A hefyd, hefyd, yn cadw mewn cof yn ystod oriau swyddfa ac yn y cartref, rwy'n lwcus yma. 484 00:30:49,790 --> 00:30:52,990 Mae gen i un camgymeriad. Mae'n mynd i fod yn gymharol hawdd i'w datrys. 485 00:30:52,990 --> 00:30:55,990 Ond os ydych yn cael sgrîn gyfan lawn o negeseuon gwall llethol, 486 00:30:55,990 --> 00:31:00,330 unwaith eto yn sylweddoli y gallai yr un bottommost yn unig yn arwydd o'r un topmost. 487 00:31:00,330 --> 00:31:03,450 Felly, bob amser yn mynd ar drywydd i lawr eich bugs o'r brig i lawr 488 00:31:03,450 --> 00:31:05,820 oherwydd y gallai dim ond fod yn effaith cadwyn llygad y dydd 489 00:31:05,820 --> 00:31:09,240 sy'n cael ei awgrymu oes gennych broblemau ffordd fwy na chi ei wneud mewn gwirionedd. 490 00:31:09,240 --> 00:31:15,150 Felly, sut y gallem atgyweiria hon os yw fy nod yw i gynnydd x? >> [Myfyrwyr] Gwneud x byd-eang. 491 00:31:15,150 --> 00:31:17,060 Iawn, fel y gallwn wneud x byd-eang. 492 00:31:17,060 --> 00:31:20,480 Gadewch i ni gymryd y shortcut fy mod yn rhybuddio amdanynt yn gynharach, ond heck, ni jyst angen ateb cyflym, 493 00:31:20,480 --> 00:31:25,730 felly gadewch i 'jyst dweud x int i fyny yma. Mae hynny'n gwneud x byd-eang. 494 00:31:25,730 --> 00:31:31,800 Felly nawr brif fynediad ato a cynyddiad wedi cael mynediad iddo, 495 00:31:31,800 --> 00:31:34,110 ac felly, gadewch i mi fynd yn ei flaen ac yn llunio hyn yn awr. 496 00:31:34,110 --> 00:31:37,630 Gwnewch buggy4, Enter. Ymddangos i lunio awr. 497 00:31:37,630 --> 00:31:41,230 Gadewch i ni redeg buggy4. Ac mae'n ymddangos i weithio mewn gwirionedd. 498 00:31:41,230 --> 00:31:45,150 Mae hwn yn un o'r pethau hyn sydd wedi gwneud fel y dywedais, nid fel y gwnaf fi, 499 00:31:45,150 --> 00:31:47,010 fel yr wyf wedi ei wneud yn unig yma, oherwydd yn gyffredinol, 500 00:31:47,010 --> 00:31:50,440 ein rhaglenni yn mynd i gael llawer mwy diddorol a hwy o lawer na hyn, 501 00:31:50,440 --> 00:31:56,390 ac os yw eich ateb i broblemau bywyd yn cael ei dim ond rhoi'r holl newidynnau ar frig eich ffeil, 502 00:31:56,390 --> 00:31:59,690 yn gyflym iawn mae rhaglenni yn cael dychrynllyd, yn anodd i'w reoli. 503 00:31:59,690 --> 00:32:02,190 Mae'n mynd yn anoddach i feddwl am enwau amrywiol newydd, 504 00:32:02,190 --> 00:32:05,240 mae'n mynd yn anoddach i ddeall beth newidyn sy'n gwneud beth, 505 00:32:05,240 --> 00:32:08,460 ac felly yn gyffredinol, nid yw hyn yn ateb da. 506 00:32:08,460 --> 00:32:10,030 Felly, gadewch i ni wneud hyn yn well. 507 00:32:10,030 --> 00:32:12,160 Nid ydym am i ddefnyddio newidyn byd-eang yma. 508 00:32:12,160 --> 00:32:16,240 >> Dwi ddim eisiau i gynnydd x, felly gallwn yn amlwg - 509 00:32:16,240 --> 00:32:18,670 ar ddiwedd y dydd, mae hyn yn fath o stori wirion oherwydd rydym yn unig yn gwneud hyn - 510 00:32:18,670 --> 00:32:24,450 ond os nad oeddwn yn gwybod am y gweithredwr neu nad oeddwn yn gallu ei newid yn yn y prif ei hun, 511 00:32:24,450 --> 00:32:30,730 sut y gallai arall y gallaf weithredu Ken dros yma y tro hwn i beidio â ciwb, ond i gynnydd? 512 00:32:31,380 --> 00:32:33,190 Sut ydw i'n newid y peth yma? Yeah. 513 00:32:33,190 --> 00:32:38,480 [Myfyrwyr] Pass yn x ac yna dychwelyd [Anghlywadwy] >> Iawn, da. 514 00:32:38,480 --> 00:32:41,900 Felly pam nad ydw i'n pasio mewn x, ac yna yn hytrach na dychwelyd, 515 00:32:41,900 --> 00:32:44,870 pam nad ydw i'n jyst yn dychwelyd x + 1. 516 00:32:44,870 --> 00:32:47,710 Bethau Mae ychydig mwy yn gorfod newid yma. Dwi ar y trywydd iawn. 517 00:32:47,710 --> 00:32:49,770 Beth arall sydd angen i mi tweak? Rhywun arall. Yeah. 518 00:32:49,770 --> 00:32:51,740 [Ymateb y myfyrwyr Anghlywadwy] 519 00:32:51,740 --> 00:32:54,730 Angen i mi newid y math dychwelyd i fyny un gynyddran oherwydd nad yw'n ddi-rym. 520 00:32:54,730 --> 00:32:57,780 Dim modd Gwag yn cael ei ddychwelyd, ond mae'n amlwg erbyn hyn, mae'n, 521 00:32:57,780 --> 00:32:59,830 felly mae angen newid i - >> [myfyrwyr] int. 522 00:32:59,830 --> 00:33:02,740 int i fod yn gyson â beth bynnag Im 'mewn gwirionedd yn dychwelyd. 523 00:33:02,740 --> 00:33:05,180 Nawr rhywbeth arall yn dal i fod buggy yma. Yeah. 524 00:33:05,180 --> 00:33:08,400 [Ymateb y myfyrwyr Anghlywadwy] >> [Malan] Felly, yr wyf angen i gynnydd x? 525 00:33:08,400 --> 00:33:12,080 [Ymateb y myfyrwyr Anghlywadwy] >> [Malan] Ah, felly mae angen i basio x. 526 00:33:12,080 --> 00:33:16,660 Felly, mae angen i mi wneud hyn yma. >> [Myfyriwr yn Anghlywadwy] 527 00:33:16,660 --> 00:33:20,050 [Malan] Felly y prototeip, rhaid i mi newid hyn i fyny yma. 528 00:33:20,050 --> 00:33:22,930 Felly, rhaid i hyn fod yn int, mae'n rhaid i hyn fod yn - 529 00:33:22,930 --> 00:33:25,620 hmm, yr wyf mewn gwirionedd yn cael bug i lawr yma. Gadewch i ni atgyweiria hon un cyntaf. 530 00:33:25,620 --> 00:33:29,590 Beth ddylai hyn mewn gwirionedd fod? Mae'n rhaid i fod yn rhywbeth int. 531 00:33:29,590 --> 00:33:32,700 Gallai fod yn x, ond dweud y gwir, os byddwch yn dechrau ffonio eich holl newidynnau x, 532 00:33:32,700 --> 00:33:35,390 mae'n mynd i gael llai a llai eglur p'un yw p'un. 533 00:33:35,390 --> 00:33:39,560 >> Felly, gadewch i 'jyst fympwyol ddewis confensiwn enwi gwahanol ar gyfer fy swyddogaethau cynorthwyol, 534 00:33:39,560 --> 00:33:41,940 swyddogaethau Rwy'n ysgrifennu. Byddwn yn galw ei fod yn, neu y gellid ei alw - 535 00:33:41,940 --> 00:33:45,010 Gadewch i ni alw rhif fod hyd yn oed yn fwy eglur. 536 00:33:45,010 --> 00:33:47,560 Felly, yna rhaid i mi ddychwelyd beth bynnag y rhif yw ynghyd ag 1, 537 00:33:47,560 --> 00:33:50,740 ac yn awr rhaid i mi newid 1 peth arall i fyny yma ac un peth arall i fyny yma. 538 00:33:50,740 --> 00:33:54,350 Beth sydd rhaid i mi newid ar-lein 21 yn gyntaf? >> [Anghlywadwy ymateb y myfyrwyr] 539 00:33:54,350 --> 00:33:57,610 [Malan] rhaid i mi neilltuo i x. Ni allaf ond alw cynyddiad (x). 540 00:33:57,610 --> 00:34:01,960 Angen i mi gofio yr ateb drwy newid y gwerth x ar yr ochr chwith. 541 00:34:01,960 --> 00:34:04,680 A hyd yn oed er bod x yn awr ar y chwith a'r dde, mae hynny'n hollol iawn 542 00:34:04,680 --> 00:34:08,860 oherwydd bod yr ochr dde yn cael ei gweithredu yn gyntaf ac yna yn cael ei plopped i mewn i'r peth chwith - 543 00:34:08,860 --> 00:34:10,600 x yn yr achos hwn. 544 00:34:10,600 --> 00:34:12,159 Ac yna yn olaf, mae hwn yn ateb hawdd nawr. 545 00:34:12,159 --> 00:34:17,230 Dylai hyn dim ond cyfateb i'r hyn sydd i lawr isod, rhif int. 546 00:34:17,230 --> 00:34:20,570 Felly, mae criw cyfan o newidiadau i swyddogaeth iawn dwp 547 00:34:20,570 --> 00:34:24,420 ond mae cynrychiolydd o bethau y byddwn yn fwyfwy awyddus i wneud. 548 00:34:24,420 --> 00:34:27,090 Felly gwnewch yn buggy4. Rydw i wedi sgriwio i fyny yn rhywle. 549 00:34:27,090 --> 00:34:30,139 O, fy Nuw. Pum camgymeriadau mewn rhaglen 6-lein. 550 00:34:30,139 --> 00:34:35,690 Felly beth sydd o'i le ar llinell 18, cymeriad 5? 551 00:34:35,690 --> 00:34:39,610 Felly, rhaid i mi ddatgan hynny int,. 552 00:34:39,610 --> 00:34:41,920 Gadewch i ni weld. Mae criw cyfan o wallau eraill. 553 00:34:41,920 --> 00:34:47,010 O, fy Nuw - 19, 18, 21 - ond eto, gadewch i ni dim ond yn glir y sgrîn, L Rheoli yma, 554 00:34:47,010 --> 00:34:49,380 ac ailgynnal Clang. 555 00:34:49,380 --> 00:34:51,340 Felly, 5 Problemau mewn gwirionedd dim ond bod 1. 556 00:34:51,340 --> 00:34:57,520 Felly nawr gadewch i ni redeg buggy4, Enter. Whew, x wedi cael ei cynyddran yn gywir. 557 00:34:57,520 --> 00:35:02,720 Mae pob hawl. Unrhyw gwestiynau am sut i gynnydd rhifau? Yeah. 558 00:35:02,720 --> 00:35:09,870 [Gwestiwn myfyrwyr Anghlywadwy] >> Cwestiwn da. 559 00:35:09,870 --> 00:35:14,220 Sut mae'n bod y gallaf newid i nifer x a bydd y rhaglen yn gwybod ar unwaith? 560 00:35:14,220 --> 00:35:16,200 >> Unwaith eto, meddyliwch am y peth fel hyn yn tynnu dŵr. 561 00:35:16,200 --> 00:35:21,600 Felly, os wyf yn prif Ken yn cynyddiad, a dweud y gwir, nid wyf yn poeni beth Ken galw ei iPad. 562 00:35:21,600 --> 00:35:26,570 Nid wyf yn poeni beth y mae'n galw unrhyw beth sydd wedi ei wneud gyda'i weithredu'r swyddogaeth hon. 563 00:35:26,570 --> 00:35:33,340 Mae hwn yn gweithredu manylion yr wyf fi, prif, nid oes rhaid i ofalu amdanynt. 564 00:35:33,340 --> 00:35:38,250 Ac felly dim ond ei newid yn gyson tu mewn i'r swyddogaeth - rhif yma a rhif yma - 565 00:35:38,250 --> 00:35:40,960 cyfan sydd ei angen cyn belled gan fy mod yn ail-grynhoi. 566 00:35:40,960 --> 00:35:44,180 Mae'n fath o fel os ydych yn meddwl am lawer ohonom, y rhai ohonoch sydd â thrwyddedau gyrwyr 567 00:35:44,180 --> 00:35:46,770 sydd wedi gyrru neu os ydych chi wedi gyrru hyd yn oed mewn car, 568 00:35:46,770 --> 00:35:50,950 y rhan fwyaf ohonom ddim syniad sut mae car yn gweithio o dan y cwfl. 569 00:35:50,950 --> 00:35:54,970 Ac yn llythrennol, os byddwch yn agor y cwfl, mae'r rhan fwyaf ohonom - gan gynnwys fi - 570 00:35:54,970 --> 00:35:56,940 nad ydynt yn mynd i wir yn gwybod beth rydym yn edrych ar, 571 00:35:56,940 --> 00:35:59,220 fath o fel efallai y byddwch yn teimlo gyda pethau fel hyn ar hyn o bryd. 572 00:35:59,220 --> 00:36:01,480 Ond nid ydym yn wir yn gorfod gofalu sut y mae'r car yn gweithio, 573 00:36:01,480 --> 00:36:05,970 Nid oes raid i ni ofalu beth y mae'r holl y wialen a pistons a cheblau tu mewn i'r car 574 00:36:05,970 --> 00:36:08,160 yn ei wneud mewn gwirionedd. 575 00:36:08,160 --> 00:36:12,770 Felly, rhywbeth fel hyn a alwch nad yw'r piston oes gwahaniaeth yma yn yr achos hwn. Un syniad. 576 00:36:12,770 --> 00:36:25,300 Yeah. >> [Gwestiwn myfyrwyr Anghlywadwy] 577 00:36:25,300 --> 00:36:29,180 Os oes defnydd mwy o'r hyn o bryd xa amrywiol yn ôl, 578 00:36:29,180 --> 00:36:32,150 chi, y rhaglennydd, yn cael eu newid ym mhob man. 579 00:36:32,150 --> 00:36:36,600 Neu fe allech chi wneud llythrennol File, Dewislen, ac yna Dod o hyd i, Amnewid - rhywbeth fel 'na - 580 00:36:36,600 --> 00:36:39,170 ond yr ydych yn mynd i gael i wneud y newidiadau hynny eich hun. 581 00:36:39,170 --> 00:36:47,450 Mae'n rhaid i chi fod yn gyson. >> [Myfyrwyr] Os oes newidynnau lluosog [Anghlywadwy] 582 00:36:47,450 --> 00:36:53,100 Mae trefn benodol fel yma, os oedd hyn yn int rhif arall? >> [Myfyrwyr] Cywir. 583 00:36:53,100 --> 00:36:56,590 [Malan] Yeah. Gorchymyn yn bwysig pan fyddwch yn galw y swyddogaeth. 584 00:36:56,590 --> 00:37:00,050 >> Felly, os wyf yn galw cynyddiad yma gyda rhywbeth coma rhywbeth, 585 00:37:00,050 --> 00:37:01,680 mae 'na mapio uniongyrchol. 586 00:37:01,680 --> 00:37:05,690 Y newidyn cyntaf, beth bynnag fe'i gelwir, yn cael ei gwneud copi o'r ddadl gyntaf dros yma. 587 00:37:05,690 --> 00:37:07,760 Mae'n ddrwg gennym. Ni ddylai hyn fod yn parenthesis. 588 00:37:07,760 --> 00:37:11,490 Mae'r llinellau ail ddadl i fyny gyda'r ail un. Felly gorchymyn, ie, materion. Mae pob hawl. 589 00:37:11,490 --> 00:37:17,020 Mae'n ddrwg gennym. Cymerais y ffordd hir i gyrraedd yno. Cwestiynau eraill? Mae pob hawl. 590 00:37:17,020 --> 00:37:20,610 Felly, gadewch i ni weld os na allwn beintio darlun o'r hyn sy'n digwydd mewn gwirionedd yma 591 00:37:20,610 --> 00:37:23,090 o dan y cwfl, fel petai. 592 00:37:23,090 --> 00:37:26,640 Mae hwn yn petryal a allai gynrychioli cof eich cyfrifiadur. 593 00:37:26,640 --> 00:37:30,970 Hyd yn oed os nad oes gennych syniad sut y cof yn gweithio neu sut mae RAM, 594 00:37:30,970 --> 00:37:33,940 o leiaf yn cymryd yn ganiataol bod gennych sypiau ohono y dyddiau hyn. 595 00:37:33,940 --> 00:37:36,280 Rydych chi wedi got megabeit ohono, oes gennych chi gigabeit ohono, 596 00:37:36,280 --> 00:37:40,870 a gwyddom o wythnos 0 bod beit yn unig yw hyn? >> [Myfyrwyr] 8 did. 597 00:37:40,870 --> 00:37:42,950 8 did, dde? Hynny 8 sero ac 1. 598 00:37:42,950 --> 00:37:45,880 Felly, os yw eich cyfrifiadur yn gig o RAM, 2 gigs o RAM y dyddiau hyn, 599 00:37:45,880 --> 00:37:55,030 gennych biliwn neu 2000000000 bytes o cof neu tua 8 biliwn neu 16000000000 ddarnau 600 00:37:55,030 --> 00:37:56,890 tu mewn i'ch cyfrifiadur. 601 00:37:56,890 --> 00:38:00,590 Yn wahanol i'r enghraifft Willy bach Wooly, nid yw'n gronynnau magnetig fel arfer anymore. 602 00:38:00,590 --> 00:38:04,450 Yn gynyddol - mewn gliniaduron o leiaf - mae'n gyrru cyflwr solet, AGCau, 603 00:38:04,450 --> 00:38:08,580 mai dim ond yn cael dim rhannau symudol. Mae hyn i gyd electronig. Mae'n holl drydan-seiliedig. 604 00:38:08,580 --> 00:38:14,060 Felly meddyliwch am y petryal fel dim ond yn cynrychioli 1 neu 2 gigabeit o gof sydd gennych. 605 00:38:14,060 --> 00:38:16,020 >> Felly mae'n ddarn o gof. 606 00:38:16,020 --> 00:38:19,830 Mae byd gwyddoniaeth gyfrifiadurol wedi fath o rhannu oddi 607 00:38:19,830 --> 00:38:22,950 darnau o gof i wneud pethau gwahanol. 608 00:38:22,950 --> 00:38:27,190 Er enghraifft, os yw hyn yn RAM eich cyfrifiadur, fel yr awgrymwyd gan y petryal yno, 609 00:38:27,190 --> 00:38:31,130 mae'n troi allan bod gan gonfensiwn, ar ben eich RAM, fel petai, 610 00:38:31,130 --> 00:38:33,660 yn gyffredinol hyn a elwir yn segment testun. 611 00:38:33,660 --> 00:38:36,740 Dyna'r 0s a 1s eich bod wedi ei lunio. 612 00:38:36,740 --> 00:38:39,020 Felly, pan fyddwn wedi edrych o dan y cwfl ar yr hyn a.out yw, 613 00:38:39,020 --> 00:38:41,980 hyn i gyd 0s a 1s, pan fyddwch yn rhedeg rhaglen, 614 00:38:41,980 --> 00:38:46,290 rhai 0au ac 1 yn cael eu llwytho oddi wrth eich gyriant caled i mewn i rywbeth a elwir yn RAM, 615 00:38:46,290 --> 00:38:49,320 ac yn y RAM maent yn ei roi ar y brig. 616 00:38:49,320 --> 00:38:52,770 Yn y cyfamser, mae gennych bethau eraill: ymgychwyn data, uninitialize data. 617 00:38:52,770 --> 00:38:57,510 Y 2 ystodau o gof yn cyfeirio at newidynnau byd-eang, nad ydych yn aml yn defnyddio 618 00:38:57,510 --> 00:39:00,760 ond weithiau os ydych yn ei wneud, maent yn y pen draw i fyny yno yn ogystal. 619 00:39:00,760 --> 00:39:04,260 Yna mae rhai pethau eraill: newidynnau amgylchedd, a ni fyddwn yn treulio llawer o amser ar, 620 00:39:04,260 --> 00:39:06,860 ond yna 2 beth pwysig a fydd yn dod yn ôl drwy gydol y semester, 621 00:39:06,860 --> 00:39:08,550 simnai a domen. 622 00:39:08,550 --> 00:39:12,210 Felly, y rhan fwyaf o gof eich cyfrifiadur yn cael ei gadw wrth redeg rhaglen 623 00:39:12,210 --> 00:39:15,370 am rywbeth a elwir yn y pentwr ac yn rhywbeth a elwir yn y domen. 624 00:39:15,370 --> 00:39:18,840 Nid ydym yn mynd i siarad am y domen heddiw, ond byddwn yn siarad am y pentwr. 625 00:39:18,840 --> 00:39:24,600 Mae'r stac i fod i greu'r gweledol y neuadd fwyta hambyrddau bwyd yn Mather House 626 00:39:24,600 --> 00:39:28,110 neu ble bynnag yr ydych yn digwydd bod yn lle y fwyta'r staff neuadd glanhau bob dydd, 627 00:39:28,110 --> 00:39:30,180 byddant yn gwneud synnwyr i fyny o'r llawr ar i fyny, 628 00:39:30,180 --> 00:39:34,550 ac yn yr un modd, er cof, mae hyn yn syniad o roi rhywbeth ar simnai, 629 00:39:34,550 --> 00:39:36,860 rhoi rhywbeth ar pentwr, gan roi rhywbeth ar pentwr. 630 00:39:36,860 --> 00:39:38,240 A beth ydyn ni'n ei olygu wrth hyn? 631 00:39:38,240 --> 00:39:41,860 >> Gadewch i ni chwyddo i mewn ar ddim ond hanner isaf y llun, RAM eich cyfrifiadur, 632 00:39:41,860 --> 00:39:44,330 i gynnig y canlynol. 633 00:39:44,330 --> 00:39:48,170 Mae'n troi allan bod pan fyddwch yn rhedeg rhaglen fel a.out neu helo - 634 00:39:48,170 --> 00:39:50,100 beth bynnag y rhaglen yw eich bod wedi ysgrifennu - 635 00:39:50,100 --> 00:39:54,020 unwaith eto, y rhai 0au ac 1 yn cael eu llwytho oddi wrth eich gyriant caled, sy'n storio tymor hir, 636 00:39:54,020 --> 00:39:57,230 aros yno hyd yn oed pan fyddwch yn tynnu'r plwg, llwytho i mewn RAM. 637 00:39:57,230 --> 00:40:00,610 RAM yn gyflymach na 'n anawdd drives - mae'n llai na' n anawdd drives - 638 00:40:00,610 --> 00:40:03,300 ond mae'n lle mae rhaglenni byw tra rydych yn eu rhedeg. 639 00:40:03,300 --> 00:40:08,230 Felly rydych dwbl cliciwch ar un o'r rhaglen ar Mac neu PC, mae'n lwytho o'r 'n anawdd cathrena i mewn RAM. 640 00:40:08,230 --> 00:40:11,520 Cyn gynted ag y mae'n cael ei llwytho i mewn i RAM, y golau 0s a 1s ar y brig ffordd, 641 00:40:11,520 --> 00:40:16,610 y segment testun fel y'i gelwir, ond yna cyn gynted ag y bydd eich rhaglen yn cychwyn mewn gwirionedd rhedeg, 642 00:40:16,610 --> 00:40:21,360 brif swyddogaeth yn cael ei alw, a phrif, fel yr ydym wedi gweld, yn aml mae newidynnau lleol, 643 00:40:21,360 --> 00:40:24,870 ac mae wedi ints a llinynnau a chars ac yn y blaen. 644 00:40:24,870 --> 00:40:29,180 Felly, os yw eich rhaglen eich bod wedi ysgrifennu neu'r rhaglen yr ydych wedi clicio dwbl 645 00:40:29,180 --> 00:40:32,970 defnyddio rhai newidynnau y tu mewn o brif, 646 00:40:32,970 --> 00:40:37,240 maent yn y pen draw ar waelod eich pentwr o gof, fel petai. 647 00:40:37,240 --> 00:40:39,410 Mwy concretely, beth mae hyn yn ei olygu mewn gwirionedd? 648 00:40:39,410 --> 00:40:48,450 Mae hyn yn unig yn golygu os ydym yn mynd i nifer y bytes o RAM yn eich cyfrifiadur, 649 00:40:48,450 --> 00:40:55,750 sylwi y gallai hyn fod yn rhif beit 0, gallai hyn fod yn rhif beit 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 byddai'r holl ffordd i fyny at 2 biliwn ar gael yr holl ffordd i fyny yno ar y brig. 651 00:41:01,480 --> 00:41:05,880 Felly, mewn geiriau eraill, pan fyddwn yn siarad am RAM neu gof o ran bytes, 652 00:41:05,880 --> 00:41:11,500 'i jyst yn golygu bod rhywun wedi penderfynu beth i'w rifedi pob un o'r darnau o gof. 653 00:41:11,500 --> 00:41:16,650 Felly, pan fydd angen 32 catiau ar gyfer int neu os oes angen 8 did ar gyfer golosg, 654 00:41:16,650 --> 00:41:18,840 ble maent yn y pen draw yn y cof? 655 00:41:18,840 --> 00:41:22,350 >> Yn gysyniadol, maent ond yn y pen draw ar waelod y peth hyn a elwir yn y pentwr. 656 00:41:22,350 --> 00:41:25,870 Ond beth sy'n ddiddorol yn awr yw pan fydd yn galw brif swyddogaeth - 657 00:41:25,870 --> 00:41:28,750 debyg swyddogaeth o'r enw foo, dim ond enw mympwyol - 658 00:41:28,750 --> 00:41:32,330 hyn sy'n digwydd yw prif ar waelod y pentwr o gof; 659 00:41:32,330 --> 00:41:35,680 foo bellach yn cael ei roi ar ben y brif cof. 660 00:41:35,680 --> 00:41:40,990 Felly unrhyw newidynnau lleol sy'n foo wedi dod i ben i fyny math o gysyniadol uwch na'r rhai yn y prif. 661 00:41:40,990 --> 00:41:47,070 Os foo yn galw swyddogaeth arall a elwir yn bar, y rhai newidynnau yn y pen draw fan hyn. 662 00:41:47,070 --> 00:41:50,120 Os bar yn galw rhywbeth arall, yma, yma, yma. 663 00:41:50,120 --> 00:41:53,830 Felly, yr hyn sy'n ddiddorol am redeg rhaglen yw bod wrth i chi alw swyddogaethau 664 00:41:53,830 --> 00:41:57,750 ac fel y swyddogaethau hynny galw swyddogaethau ac ynghylch y swyddogaethau hynny galw swyddogaethau, 665 00:41:57,750 --> 00:42:01,470 rydych yn adeiladu i fyny y pentwr o swyddogaethau yn y cof. 666 00:42:01,470 --> 00:42:06,890 A dim ond unwaith y ffurflenni swyddogaeth yn byddwch yn dechrau cael bod y cof yn ôl. 667 00:42:06,890 --> 00:42:10,860 Felly, un o'r ffyrdd hawsaf i redeg allan o gof mewn rhaglen gyfrifiadurol 668 00:42:10,860 --> 00:42:14,360 yw ysgrifennu swyddogaethau nad yw byth yn dychwelyd. 669 00:42:14,360 --> 00:42:18,900 Felly, er enghraifft, gadewch i ni ddangos gymaint â rhaglen fwriadol bygi. 670 00:42:18,900 --> 00:42:22,230 Gadewch i mi fynd yn ei flaen ac nid # cynnwys , 671 00:42:22,230 --> 00:42:25,000 int brif (gwag), 672 00:42:25,000 --> 00:42:32,940 ac yr wyf i'n mynd i wneud ychydig (2> 1), a oedd yn debyg na fydd byth yn newid arnom ni, 673 00:42:32,940 --> 00:42:37,560 a gadewch i mi fynd yn ei flaen yn awr a gwneud printf. 674 00:42:37,560 --> 00:42:40,700 A dweud y gwir, mae hynny'n mynd i fod yn llai diddorol yn weledol. Gadewch i ni wneud hyn. 675 00:42:40,700 --> 00:42:50,240 Am int i = 0; i> 0 - gadewch i ni wneud camgymeriad hwn - i + +. 676 00:42:50,240 --> 00:42:52,720 A gadewch i ni beidio printf yma. Gadewch i ymarfer beth roeddwn yn ei bregethu. 677 00:42:52,720 --> 00:43:00,190 Gadewch i ni gael dull yma, corws ddi-rym, a byddwn yn dweud int i, 678 00:43:00,190 --> 00:43:06,830 ac yna dw i'n mynd i ddweud printf - na, gadewch i ni wneud hyn yn fwy diddorol. 679 00:43:06,830 --> 00:43:15,790 Gadewch i ni mewn gwirionedd yn argraffu unrhyw beth o gwbl. Gadewch i ni dim ond yn gwneud hyn: corws (i). 680 00:43:15,790 --> 00:43:20,390 Mae pob hawl. Felly, mae hyn yn buggy oherwydd pam? 681 00:43:20,390 --> 00:43:23,380 Rwy'n gwneud hyn i fyny gan fy mod yn mynd am nad yw'r rhaglen yn ei wneud mewn gwirionedd unrhyw beth o ddiddordeb. 682 00:43:23,380 --> 00:43:25,320 >> Ond nid dyna'r nod. 683 00:43:25,320 --> 00:43:29,630 Y nod yw i ysgrifennu rhaglen sydd â'r brif swyddogaeth gwneud beth, mae'n debyg? 684 00:43:30,720 --> 00:43:32,860 Ffoniwch ei hun. Ac mewn gwirionedd, nid oes angen y ddolen. 685 00:43:32,860 --> 00:43:37,200 Gadewch i ni hyd yn oed yn symleiddio'r hyn yn unig er mwyn peidio â cholli golwg ar wir y nam sylfaenol. 686 00:43:37,200 --> 00:43:39,640 Galwadau Prif corws i ganu rhai corws, 687 00:43:39,640 --> 00:43:41,440 yna yr wyf yn gwneud rhywbeth twp ac roedd gen i corws alwad corws 688 00:43:41,440 --> 00:43:43,760 oherwydd fy mod yn cymryd yn ganiataol rhywun arall yn mynd i weithredu efallai, 689 00:43:43,760 --> 00:43:47,210 ac yn awr nid yw hyn yn mynd i lunio eto. Angen i mi wneud beth? 690 00:43:47,210 --> 00:43:49,970 Fi angen 'r prototeip, cofiwch. 691 00:43:49,970 --> 00:43:56,110 Felly, mae angen i mi gael hyd yma corws ddi-rym (int i); 692 00:43:56,110 --> 00:43:59,210 Felly, yn awr os byddaf yn mynd i lawr yma - yn wir, gadewch i ni ddefnyddio y ffenestr mwy. 693 00:43:59,210 --> 00:44:01,980 Gadewch i ni fynd ymlaen a gwneud corws. 694 00:44:01,980 --> 00:44:06,490 Gadewch i ni fynd ymlaen a gwneud corws. 695 00:44:06,490 --> 00:44:08,370 Defnyddio dynodwr heb eu datgelu i. 696 00:44:08,370 --> 00:44:12,500 O, a oedd yn dwp. Nid oes arnom angen y ddadl. Gadewch i ni dim ond yn gwneud hyn. 697 00:44:12,500 --> 00:44:16,370 Yr wyf yn dymuno rydym wedi dechrau fel hyn. Byddai wedi bod yn rhaglen lawer yn haws i ysgrifennu. 698 00:44:16,370 --> 00:44:25,590 Mae yna. Nawr gadewch i ni fynd draw i fy ffenestr terfynell, ailgynnal Clang, ac yma yr ydym yn mynd. 699 00:44:25,590 --> 00:44:28,460 Dyna oedd yn gyflym iawn. 700 00:44:28,460 --> 00:44:31,150 Beth a ddigwyddodd mewn gwirionedd yn unig, er bod? 701 00:44:31,150 --> 00:44:33,730 Wel, yn awr byddaf yn ychwanegu y llinell print fel y gallwn weld. 702 00:44:33,730 --> 00:44:43,490 Gadewch i mi ddweud printf ("Im 'i mewn yma") - dim newidynnau. Byddwn yn gadael fel hynny. 703 00:44:43,490 --> 00:44:47,480 Gadewch i mi ailgynnal wneud. Gadewch i mi ailgynnal corws. 704 00:44:47,480 --> 00:44:57,380 Ac ... yn dod ymlaen. Cadwch yn mynd. 705 00:44:57,380 --> 00:44:59,930 Fel o'r neilltu, pam nad yw wedi chwalu eto? 706 00:44:59,930 --> 00:45:02,080 Mae'r wall yn digwydd yn gyflym super o'r blaen. 707 00:45:02,080 --> 00:45:06,570 [Ymateb y myfyrwyr Anghlywadwy] >> Yn union. Felly, mae'n cymryd amser i argraffu, dde? 708 00:45:06,570 --> 00:45:08,610 Mae'n cymryd dim ond mwy o waith ar ran y cyfrifiadur. 709 00:45:08,610 --> 00:45:10,620 Ac yno y mae hi: Segmentiad fai. 710 00:45:10,620 --> 00:45:12,340 >> Felly sylwi pa mor gyflym rhaglenni rhedeg. 711 00:45:12,340 --> 00:45:14,130 Os nad ydych yn argraffu unrhyw beth, yn gyflym super. 712 00:45:14,130 --> 00:45:18,770 Ond rydym yn dal i gael y wall oherwydd yr hyn oedd yn digwydd? 713 00:45:18,770 --> 00:45:21,210 Os ydych yn meddwl am sut y cof eich cyfrifiadur yn cael ei osod allan, 714 00:45:21,210 --> 00:45:28,740 hyn yn digwydd i fod yn brif, ond yma gadewch i 'jyst yn galw hyn yn corws, a gadewch i ni yn galw hyn corws. 715 00:45:28,740 --> 00:45:34,550 Ac yn awr os wyf yn gwneud fy estheteg iawn, mae hyn yn unig yn mynd i ddweud corws, corws, corws, 716 00:45:34,550 --> 00:45:40,550 corws, corws, corws, corws, nauseum ad, ac yn y pen draw, yr hyn sy'n mynd i ddigwydd? 717 00:45:40,550 --> 00:45:45,630 Os yw'r darlun mawr, yn llythrennol, yw hyn, beth yn union sy'n digwydd gysyniadol? 718 00:45:46,520 --> 00:45:48,630 Mae'r gor-redeg stac y domen. 719 00:45:48,630 --> 00:45:51,940 Neu, yn waeth, eich gor-redeg yn bopeth, gan gynnwys y segment testun, 720 00:45:51,940 --> 00:45:54,590 sef y 0au ac 1 sy'n cynrychioli eich rhaglen. 721 00:45:54,590 --> 00:45:57,080 Yn fyr, mae hyn yn unig super, super drwg. 722 00:45:57,080 --> 00:45:58,830 Mae eich rhaglen wedi sbinio allan o reolaeth. 723 00:45:58,830 --> 00:46:01,220 Rydych yn defnyddio cof ffordd fwy na'r bwriad 724 00:46:01,220 --> 00:46:03,960 i gyd oherwydd i gamgymeriad gwirion yn yr achos hwn, 725 00:46:03,960 --> 00:46:08,040 neu yn yr achos swyddogaeth iawn fwriadol wneud galw ei hun. 726 00:46:08,040 --> 00:46:09,500 Yn awr, nid yw hyn yn ddrwg i gyd. 727 00:46:09,500 --> 00:46:13,800 Swyddogaethau galw eu hunain mewn gwirionedd wedi bŵer mawr pan fyddwch yn ei ddefnyddio yn gywir. 728 00:46:13,800 --> 00:46:15,800 Nid wyf wedi ei ddefnyddio yn gywir yma. 729 00:46:15,800 --> 00:46:19,780 Felly, nid yw hyn yn ddrwg i gyd, ond y ffaith nad wyf byth yn rhoi'r gorau i mewn gwirionedd yn galw fy hun 730 00:46:19,780 --> 00:46:23,520 yn wendid sylfaenol yma o'r rhaglen hon. 731 00:46:23,520 --> 00:46:26,400 Felly, lle rydym yn mynd gyda hyn i gyd? Beth sy'n digwydd mewn gwirionedd? 732 00:46:26,400 --> 00:46:30,340 Pan alwaf y swyddogaeth cynyddiad fel yr ydym yn ei wneud yn enghreifftiau hynny, 733 00:46:30,340 --> 00:46:33,420 Mae gen i werth fel 1 fy mod yn mynd i mewn 734 00:46:33,420 --> 00:46:37,570 Rwy'n pasio mewn copi o rhif 1, felly mae'r canlynol yn digwydd. 735 00:46:37,570 --> 00:46:44,240 Gadewch i ni fynd i mewn i'r cynyddiad enghraifft, mae hyn yn guy dde dros yma. 736 00:46:44,240 --> 00:46:46,870 Dyma beth sy'n digwydd mewn gwirionedd. 737 00:46:46,870 --> 00:46:53,400 Pan fyddaf yn galw ychwanegiad ac yr wyf yn pasio x, ar ffurf lluniau, beth sy'n digwydd yma yw hyn. 738 00:46:53,400 --> 00:46:59,520 >> Os byddaf yn cael y gwerth o 1 storio yma ac yr wyf yn ei galw cynyddiad, 739 00:46:59,520 --> 00:47:04,330 a elwir yn awr corws - y iPad yn taflu i ffwrdd i mi yma. 740 00:47:04,330 --> 00:47:09,760 Gadewch i ni yn galw hyn cynyddiad, ac nid ydym yn gwybod beth mae hyn swyddogaeth nesaf yn mynd i fod. 741 00:47:09,760 --> 00:47:14,840 Felly, beth sy'n digwydd mewn gwirionedd yma yn rhywle yn y brif gen i ddarn o gof 742 00:47:14,840 --> 00:47:17,000 sy'n cael ei storio y rhif 1. 743 00:47:17,000 --> 00:47:19,380 Pan fyddaf yn galw cynyddiad, rwy'n defnyddio darn arall o gof, 744 00:47:19,380 --> 00:47:21,230 ond yn awr yr wyf yn cael y copi o 1. 745 00:47:21,230 --> 00:47:26,660 Pan fyddaf yn gynyddran y gwerth, mae hyn yn 2, 746 00:47:26,660 --> 00:47:30,560 ond wedyn beth sy'n digwydd cyn gynted ag y ffurflenni cynnydd? 747 00:47:30,560 --> 00:47:33,630 Mae'r cof yn unig yn cael eu rhoi yn ôl i'r system weithredu, 748 00:47:33,630 --> 00:47:37,450 sy'n golygu bod yr holl eich bod wedi gwneud dim byd defnyddiol. 749 00:47:37,450 --> 00:47:43,120 1 yn a gafodd ei gynnwys yn wreiddiol yn brif yn dal i fod mewn gwirionedd yno. 750 00:47:43,120 --> 00:47:44,890 Felly, lle rydym yn mynd â hyn? 751 00:47:44,890 --> 00:47:49,770 Mae'n troi allan bod mewn cof gennych y dilyniant gefn-wrth-gefn bytes 752 00:47:49,770 --> 00:47:53,050 eich bod yn gallu rhoi pethau i mewn, ac mae'n troi allan bod rydym eisoes wedi gweld rhywbeth 753 00:47:53,050 --> 00:47:55,390 sy'n cynnwys rhoi pethau yn ôl i gefn wrth gefn wrth gefn. 754 00:47:55,390 --> 00:47:59,860 Beth yw llinyn yn seiliedig ar wythnos 1 ac yn awr yr wythnos 2? 755 00:48:00,020 --> 00:48:01,980 Mae'n dim ond casgliad o gymeriadau. 756 00:48:01,980 --> 00:48:04,310 Felly, mae'n troi allan yn union fel y gallwch roi rhifau mewn cof, 757 00:48:04,310 --> 00:48:06,990 Gall yr un modd i chi roi cymeriadau mewn cof. 758 00:48:06,990 --> 00:48:10,530 Ac ar ôl i ni ddechrau cymeriadau rhoi er cof cefn wrth gefn wrth gefn i gefn, 759 00:48:10,530 --> 00:48:13,620 mae'n troi allan bod defnyddio y pethau symlaf fel dolen i neu ddolen tra, 760 00:48:13,620 --> 00:48:17,170 gallwn ailadrodd o'r chwith i'r dde dros y cymeriadau mewn llinyn 761 00:48:17,170 --> 00:48:20,600 ac yn dechrau massaging i mewn i gymeriadau gwahanol yn gyfan gwbl - 762 00:48:20,600 --> 00:48:23,370 gallai ddod yn b, gallai ddod yn b c - 763 00:48:23,370 --> 00:48:27,780 fel bod y pen draw, gallwn gymryd frawddeg Saesneg sydd mewn gwirionedd yn gwneud synnwyr 764 00:48:27,780 --> 00:48:30,310 ac yn trosi pob un o'r 1 llythyr ar y tro 765 00:48:30,310 --> 00:48:34,400 trwy gerdded trwy ein cof cyfrifiadur chwith i'r dde i mewn gwirionedd amgryptio. 766 00:48:34,400 --> 00:48:35,810 Felly, gadewch i ni gymryd ein pum munud egwyl yma, 767 00:48:35,810 --> 00:48:40,730 a phan fyddwn yn dod yn ôl, byddwn yn dechrau y broses hon o sgrialu gwybodaeth. 768 00:48:42,020 --> 00:48:43,520 >> Mae pob hawl. 769 00:48:43,520 --> 00:48:48,070 Cyn i ni plymio i mewn i rai crypto ac mae'r rhain yn bethau o'r enw arrays, 770 00:48:48,070 --> 00:48:51,470 gadewch i mi oedi ar gyfer unrhyw gwestiynau am fy mod yn teimlo fel Fi 'n sylweddol fath o ddryslyd 771 00:48:51,470 --> 00:48:54,080 rhai o'r pynciau. Felly, gadewch i ni atgyweiria awr os gallwn. 772 00:48:54,080 --> 00:48:58,700 Rydym yn unig yn sôn am werthoedd dychwelyd, buom yn siarad am dadleuon, 773 00:48:58,700 --> 00:49:03,250 a buom yn siarad am y syniad, y byddwn yn dod yn ôl atynt yn yr wythnosau i ddod, 774 00:49:03,250 --> 00:49:08,720 o edrych ar cof fel criw cyfan o hyn hambyrddau pentyrru, fel petai, 775 00:49:08,720 --> 00:49:12,660 o'r gwaelod i fyny ar, fel bod gan bob hambwrdd sy'n cael ei roi ar y corn 776 00:49:12,660 --> 00:49:16,530 yn cynrychioli swyddogaeth sydd wedi cael eu galw ar hyn o bryd. 777 00:49:17,900 --> 00:49:20,260 Unrhyw gwestiynau? 778 00:49:20,260 --> 00:49:22,640 Gadewch i mi ofyn cwestiwn yma. 779 00:49:22,640 --> 00:49:27,890 Gadewch i mi symleiddio'r hyn yn ôl i'r hyn yr oedd cyn i rai o Q ynghynt yr oedd ein & A. 780 00:49:27,890 --> 00:49:35,570 Mae'r ffaith bod cynyddiad wedi parenthesis agored, rhif int, ar gau parenthesis - 781 00:49:35,570 --> 00:49:39,110 beth mae nifer int ei gynrychioli? 782 00:49:39,110 --> 00:49:42,790 [Myfyrwyr] An ddadl. >> Mae dadl. Iawn. Ond beth dadl? 783 00:49:42,790 --> 00:49:46,370 [Ymateb y myfyrwyr Anghlywadwy] >> Beth sy'n bod? >> [Myfyrwyr] Rhywbeth eich bod yn llwyddo mewn 784 00:49:46,370 --> 00:49:49,940 Iawn, felly rhywbeth y byddwch yn mynd heibio ynddo Ac yn fwy cyffredinol, dim ond y mewnbwn. 785 00:49:49,940 --> 00:49:52,450 Os ydych yn ysgrifennu swyddogaeth a diben y swyddogaeth honno mewn bywyd 786 00:49:52,450 --> 00:49:55,770 yw gwneud rhywbeth ychydig yn wahanol bob tro y byddwch yn ei ddefnyddio, 787 00:49:55,770 --> 00:50:00,110 yna yr unig ffordd i hynny ddigwydd wir yn ymddangos i fod yn ei ddarparu gyda mewnbwn 788 00:50:00,110 --> 00:50:03,510 fel y gall wneud rhywbeth gwahanol gyda mewnbwn hwnnw bob tro. 789 00:50:03,510 --> 00:50:06,650 >> Felly, mae angen i chi nodi dau beth pan fydd swyddogaeth yn cymryd mewnbwn. 790 00:50:06,650 --> 00:50:09,590 Rhaid i chi benodi enw yr hoffech ei roi i hynny o fewnbwn 791 00:50:09,590 --> 00:50:12,700 yn unig ar gyfer eich hwylustod eich hun fel y gallwch gyfeirio ato 792 00:50:12,700 --> 00:50:16,540 yn y swyddogaeth yr ydych chi eich hun yn ysgrifennu, fel y gwneuthum yma yn llinell 32. 793 00:50:16,540 --> 00:50:20,800 Ond mae angen i chi hefyd nodi ei fath oherwydd bod C yn iaith raglennu 794 00:50:20,800 --> 00:50:25,940 mai dim ond ei gwneud yn ofynnol, os ydych am newidyn, rhaid i chi ddweud wrth y cyfrifiadur pa fath o ddata ydyw, 795 00:50:25,940 --> 00:50:30,200 i raddau helaeth er mwyn iddo wybod faint o ddarnau i'w dyrannu ar gyfer y newidyn 796 00:50:30,200 --> 00:50:33,020 oherwydd gallai fod yn 6 - mae'n ddrwg gennyf, ni fydd yn 6. 797 00:50:33,020 --> 00:50:37,080 Gall fod yn 16 oed, gall fod yn 8, gall fod yn 32, hyd yn oed 64, 798 00:50:37,080 --> 00:50:39,130 ond y cyfrifiadur angen gwybod. 799 00:50:39,130 --> 00:50:43,180 Yn awr, mae'r int ar yr ochr chwith yn cynrychioli beth, ar y llaw arall? 800 00:50:46,350 --> 00:50:48,850 [Ymateb y myfyrwyr Anghlywadwy] >> Beth sy'n bod? >> [Myfyrwyr] Math o swyddogaeth. 801 00:50:48,850 --> 00:50:53,610 Mae'r math o swyddogaeth ac, yn fwy penodol, y math o allbwn. Hawl. 802 00:50:53,610 --> 00:50:57,380 Felly, tra bod y peth yn cromfachau yn cynrychioli ei fewnbwn, os o gwbl, 803 00:50:57,380 --> 00:50:59,660 y peth ar y chwith yn cynrychioli ei allbwn. 804 00:50:59,660 --> 00:51:03,530 Ac yn yr achos hwn, cynyddiad ymddangos yn dychwelyd yn int, 805 00:51:03,530 --> 00:51:07,690 ac felly int yw'r math dychwelyd y swyddogaeth hon. 806 00:51:07,690 --> 00:51:09,340 Beth mae'n ei olygu i ddychwelyd? 807 00:51:09,340 --> 00:51:15,090 Yn llythrennol, byddwch yn defnyddio'r dychwelyd gair allweddol ac yna os yr hyn yr ydych yn dychwelyd 808 00:51:15,090 --> 00:51:18,600 i'r dde y gair allweddol yn gyfanrif, 809 00:51:18,600 --> 00:51:21,660 yna mae hynny'n wir yn gyson â'r hyn yr ydym wedi ei addo. 810 00:51:21,660 --> 00:51:26,410 Ni allech wneud rhywbeth fel hyn - helo, byd - am fod hynny'n linyn. 811 00:51:26,410 --> 00:51:28,860 >> Yn amlwg, nid yw'n gyfanrif. 812 00:51:28,860 --> 00:51:33,140 Felly, yn fyr, mae'r baich yn wirioneddol arnom ni, y rhaglennydd, i fod yn benodol 813 00:51:33,140 --> 00:51:37,770 o ran yr hyn rydym yn dychwelyd ac yna mewn gwirionedd yn mynd am ei ddychwelyd. 814 00:51:37,770 --> 00:51:43,440 Y cyd-destun yma yn awr yn y cof eich cyfrifiadur yn gigabyte, 2 gigabeit - 815 00:51:43,440 --> 00:51:45,920 beth bynnag - efallai ei fod yn fwy, efallai ei bod yn llai, 816 00:51:45,920 --> 00:51:49,050 ond y cyfrifiadur yn ystyried ei fod yn cael adrannau gwahanol. 817 00:51:49,050 --> 00:51:51,200 Rhywbeth yn mynd i lawr yno, rhywbeth arall yn mynd i fyny yno, 818 00:51:51,200 --> 00:51:54,290 pethau gwahanol yn mynd yn y canol, a heddiw rydym yn unig yn dechrau dweud y stori, 819 00:51:54,290 --> 00:51:56,340 ond byddwn yn dod yn ôl at hyn dros gyfnod. 820 00:51:56,340 --> 00:51:59,980 Am y tro, yr unig ddarn o cof ydym yn wir yn poeni am yn y segment testun 821 00:51:59,980 --> 00:52:03,360 oherwydd mai dim ond yn cynrychioli 0s a 1s bod Clang wedi outputted. 822 00:52:03,360 --> 00:52:06,050 Felly, pan fyddwch yn rhedeg gorchymyn ar y bysellfwrdd fel a.out 823 00:52:06,050 --> 00:52:09,110 neu os ydych cliciwch ddwywaith eicon ar Mac OS neu Windows, 824 00:52:09,110 --> 00:52:11,880 eich rhaglen yn cael ei lwytho oddi wrth eich disg galed i mewn i RAM 825 00:52:11,880 --> 00:52:16,330 ac mae'n plopped ar frig y RAM eich cyfrifiadur, felly, i siarad. 826 00:52:16,330 --> 00:52:20,450 Yn y cyfamser, fel eich rhaglen yn dechrau rhedeg a phrif cael enw 827 00:52:20,450 --> 00:52:23,640 yn y rhaglen i chi ysgrifennu neu ysgrifennodd y rhaglen Microsoft neu Apple, 828 00:52:23,640 --> 00:52:27,860 unrhyw un o'i newidynnau lleol yn y pen draw i lawr yno ar waelod y cof eich cyfrifiadur. 829 00:52:27,860 --> 00:52:33,230 Ond os galwadau prif swyddogaeth arall sydd ei hun wedi newidynnau neu dadleuon, maent yn y pen draw uwch ei ben. 830 00:52:33,230 --> 00:52:36,680 Ac os yw'r swyddogaeth honno yn galw rhywbeth, maent yn y pen draw uchod, uwch ei ben, uwch ei ben. 831 00:52:36,680 --> 00:52:41,460 >> A dim ond unwaith y swyddogaeth yn cael ei wneud weithredu yn y pentwr o hambyrddau, fel petai, 832 00:52:41,460 --> 00:52:43,240 ddechrau cael is ac yn is. 833 00:52:43,240 --> 00:52:48,250 Ac mae hyn yn beth wedyn, yn gryno, yn esbonio pam pan fyddwch yn ffonio ciwb 834 00:52:48,250 --> 00:52:51,550 neu os ydych yn ffonio cynyddiad, rydych yn pasio mewn copi o'r gwerth. 835 00:52:51,550 --> 00:52:55,520 A beth mae hynny'n ei olygu ddarluniadol yw eich bod yn llythrennol yn ysgrifennu'r rhif 1 836 00:52:55,520 --> 00:53:00,460 mewn rhan arall o'r cof, newid bod 1 i 2 yn achos i fyny un gynyddran 837 00:53:00,460 --> 00:53:04,820 neu i gynnydd o 8 yn achos ciwb ac yna taflu bod y cof i ffwrdd 838 00:53:04,820 --> 00:53:09,140 cyn gynted ag y cynyddiad neu ffurflenni ciwb swyddogaeth. Cwestiwn. 839 00:53:09,140 --> 00:53:12,900 [Myfyrwyr] Ble mae newidynnau byd-eang storio? 840 00:53:12,900 --> 00:53:18,100 Newidynnau byd-eang yn cael eu storio yn yr hyn a elwir ar hyn o bryd y data ymgychwyn neu ddata uninitialized, 841 00:53:18,100 --> 00:53:21,920 ond y gwahaniaeth yw os oes gennych newidyn fyd-eang ac yr ydych wedi aseinio iddo ar unwaith gwerth 842 00:53:21,920 --> 00:53:24,640 gyda'r arwydd hafal, mae'n dod i ben i fyny ar y brig yno, 843 00:53:24,640 --> 00:53:29,200 ac os ydych yn unig yn dweud x int; heb unrhyw werth, mae'n dod i ben i fyny ychydig yn is yn RAM 844 00:53:29,200 --> 00:53:31,710 dim ond drwy confensiwn. 845 00:53:31,710 --> 00:53:34,940 Cwestiynau eraill? Mae pob hawl. 846 00:53:34,940 --> 00:53:37,340 Felly, bydd y darlun yn dod yn ôl wrth i ni fynd yn fwy pwerus 847 00:53:37,340 --> 00:53:39,170 â'r hyn y gallwn ei wneud gyda'r cyfrifiadur, 848 00:53:39,170 --> 00:53:42,720 ond ar hyn o bryd, gadewch i ni gael intro byr i cryptograffeg, 849 00:53:42,720 --> 00:53:46,080 fath penodol o cryptograffeg nad yw'n datrys yr holl broblemau y byd 850 00:53:46,080 --> 00:53:47,720 ond nid yw'n datrys rhai ohonynt. 851 00:53:47,720 --> 00:53:51,700 Yn yr achos yma, mae gennym rywbeth a elwir yn gyfrinach-allweddol cryptograffeg. 852 00:53:51,700 --> 00:53:56,410 Secret-allweddol cryptograffeg, fel yr awgryma'r enw, yn deillio ei diogelwch o gyfrinach. 853 00:53:56,410 --> 00:54:00,690 >> Er enghraifft, os oeddech yn ôl yn yr ysgol radd ac roeddech yn pasio llythyr gyfrinach cariad bach 854 00:54:00,690 --> 00:54:04,850 i'r bachgen neu ferch rydych yn gwasgu ar, os ydych am i basio y nodyn drwy'r gynulleidfa, 855 00:54:04,850 --> 00:54:08,380 mae'n debyg na fyddech yn ysgrifennu nodyn o'r fath yn Saesneg neu beth bynnag yw eich iaith frodorol yn. 856 00:54:08,380 --> 00:54:13,340 Yn hytrach, efallai y byddwch yn ei amgryptio neu efallai y byddwch jyst anfon neges destun y dyddiau hyn. 857 00:54:13,340 --> 00:54:15,460 Ond efallai y byddwch mewn gwirionedd yn eu trosglwyddo nodyn trwy gydol yr ystafell ddosbarth. 858 00:54:15,460 --> 00:54:18,700 Ac i wneud hyn yn ddiogel yn y fath fodd fel bod eich ffrindiau a'r athro 859 00:54:18,700 --> 00:54:22,650 ddim yn gwybod beth rydych chi'n ysgrifennu, efallai y byddwch yn dod o hyd i algorithm eithaf syml, 860 00:54:22,650 --> 00:54:25,920 ifanc er y gallech fod, i ychydig sgrialu y geiriau. 861 00:54:25,920 --> 00:54:28,130 Felly, yn lle ysgrifennu efallai y byddwch yn ysgrifennu b, 862 00:54:28,130 --> 00:54:30,220 yn hytrach na b efallai y byddwch yn ysgrifennu c, 863 00:54:30,220 --> 00:54:32,140 yn hytrach na c efallai y byddwch yn ysgrifennu d, ac yn y blaen. 864 00:54:32,140 --> 00:54:34,360 Neu fe allech chi ddod o hyd i gyfieithiad mwy soffistigedig 865 00:54:34,360 --> 00:54:36,720 o lythyrau i lythyrau gwahanol. 866 00:54:36,720 --> 00:54:39,740 Ond mae'r dal yn y bachgen neu ferch i bwy rydych chi'n anfon y nodyn hwn 867 00:54:39,740 --> 00:54:45,020 angen gwybod rhywbeth, sef yr hyn, yn amlwg? >> [Myfyrwyr] Beth rydych chi'n ei anfon. 868 00:54:45,020 --> 00:54:49,720 Beth yw eich cyfrinach yw, fel yr hyn yw bod mapio rhwng a b a c a d's. 869 00:54:49,720 --> 00:54:54,650 A yw'n dim ond ychwanegu 1 i bob un o'r llythrennau i fynd o A i B, b i c? 870 00:54:54,650 --> 00:54:56,670 A yw'n fwy cymhleth na hynny? 871 00:54:56,670 --> 00:55:01,540 >> Felly, i chi a'ch malwch angen i gael y wybodaeth gyfrinachol, 872 00:55:01,540 --> 00:55:03,190 ond mae math o dal-22 yma. 873 00:55:03,190 --> 00:55:06,830 Os mai dyma'r tro cyntaf rydych chi'n anfon y llythyr caru trwy'r dosbarth, 874 00:55:06,830 --> 00:55:10,720 sut mae hynny'n cael bachgen neu ferch yn mynd i wybod beth yw'r gyfrinach hyd yn oed yn? 875 00:55:10,720 --> 00:55:13,930 Felly gyfrinach-allweddol crypto yn datrys yr holl broblemau y byd, 876 00:55:13,930 --> 00:55:16,320 ac mae mewn gwirionedd berthynas yma y byddwn yn dod yn ôl i tua diwedd semester. 877 00:55:16,320 --> 00:55:25,110 Yn yr un modd peidiwch â rhan fwyaf ohonom yn adnabod rhywun sy'n gweithio, er enghraifft, at Amazon.com, 878 00:55:25,110 --> 00:55:28,190 ac eto mae llawer ohonom wedi prynu yn ôl pob tebyg pethau at Amazon.com, 879 00:55:28,190 --> 00:55:31,990 ac rydym wedi bod yn dysgu i gymryd yn ganiataol bod y trafodion e-fasnach yn ddiogel. 880 00:55:31,990 --> 00:55:36,470 Mae'r URL yn ôl pob tebyg yn dweud https, mae efallai yn eicon clo bach gwirion yn rhywle, 881 00:55:36,470 --> 00:55:39,930 mae rhyw fath o cryptograffeg sicrhau eich gwybodaeth cerdyn credyd 882 00:55:39,930 --> 00:55:42,160 rhyngoch chi a Amazon.com. 883 00:55:42,160 --> 00:55:45,430 Ac eto os cryptograffeg yn golygu gwybod rhywfaint o gyfrinach 884 00:55:45,430 --> 00:55:48,620 ac eto nid wyf yn gwybod unrhyw un yn Amazon ac nid wyf wedi trefnu sicr unrhyw fath o gyfrinach 885 00:55:48,620 --> 00:55:52,710 gyda rhywun yn Amazon, sut mae fy cyfrifiadur neu fy porwr yn gwneud hyn? 886 00:55:52,710 --> 00:55:55,720 Mae'n troi allan mae mathau eraill o cryptograffeg yn gyfan gwbl yn datrys y broblem honno. 887 00:55:55,720 --> 00:55:57,670 Ond ar gyfer heddiw, byddwn yn canolbwyntio ar yr un syml 888 00:55:57,670 --> 00:56:00,290 lle gallwch drefnu ymlaen llaw i adnabod rhai gyfrinach 889 00:56:00,290 --> 00:56:03,760 fel +1 neu rhywfaint o waith mapio rhwng a b yn. 890 00:56:03,760 --> 00:56:05,840 Ac mae'r broses o cryptograffeg yn gyffredinol yn cynnwys hyn. 891 00:56:05,840 --> 00:56:08,620 Mae gennych rhywfaint o destun plaen, a ddangosir yma ar y chwith, 892 00:56:08,620 --> 00:56:12,930 ydych yn rhedeg trwy ryw fath o algorithm neu weithdrefn ar gyfer amgryptio hynny - 893 00:56:12,930 --> 00:56:15,100 efallai mai dim ond yn dod b, b yn dod yn c - 894 00:56:15,100 --> 00:56:17,490 ac yna byddwch yn darfod i fyny ag ciphertext. 895 00:56:17,490 --> 00:56:20,380 Yn y cyfamser, unwaith y bydd eich mathru yn derbyn y nodyn hwn gyfrinach, 896 00:56:20,380 --> 00:56:24,200 ganddo ef neu hi wedyn dadgriptio yn gyffredinol yn gwrthdroi'r algorithm 897 00:56:24,200 --> 00:56:27,190 er mwyn mynd yn ôl i'r testun plaen. 898 00:56:27,190 --> 00:56:28,960 Mae ymgnawdoliadau corfforol o hyn. 899 00:56:28,960 --> 00:56:31,680 >> Er enghraifft, mae hwn yn gylch gyfrinach datgodiwr bach, 900 00:56:31,680 --> 00:56:35,110 ac mae hyn yn gylch yn yr ystyr bod yna ddau deialau yma. 901 00:56:35,110 --> 00:56:38,490 Ar gyrion y tu allan i'r peth, mae llythrennau A drwy Z, 902 00:56:38,490 --> 00:56:40,340 er eu bod mewn trefn ar hap, 903 00:56:40,340 --> 00:56:42,880 ac ar y tu mewn, mae mewn gwirionedd rhai rhifau 904 00:56:42,880 --> 00:56:46,620 fel bod â'r fodrwy hon, gallwch fath o droi'r tu allan ond nid y tu mewn 905 00:56:46,620 --> 00:56:49,140 er i linell i fyny rhifau gyda llythrennau. 906 00:56:49,140 --> 00:56:53,020 O ffilm o'r enw Stori Nadolig, byddwch yn gweld bod llawer o Ralphie 907 00:56:53,020 --> 00:56:58,000 oedd mor awyddus i chyfrif i maes beth Orphan Annie Little neges gyfrinach oedd iddo 908 00:56:58,000 --> 00:57:02,570 oedd wedi eu cyfleu, mi gredaf, yn y ffurf negeseuon rhifol ar focs grawnfwyd 909 00:57:02,570 --> 00:57:07,220 ac bu'n rhaid i chi gronni holl gardiau bach a ddaeth yn y blwch grawnfwyd, 910 00:57:07,220 --> 00:57:09,770 rhaid i chi bost i mewn, bu'n rhaid i chi fynd yn ôl y cylch cudd datgodiwr 911 00:57:09,770 --> 00:57:13,910 fel y gallwch o'r diwedd chyfrif i maes beth y mapio rhwng llythrennau a rhifau 912 00:57:13,910 --> 00:57:15,550 neu lythyrau a llythyrau. 913 00:57:15,550 --> 00:57:19,520 Sut y gall mewn cyfrifiadur rydym yn mynd ati i weithredu neu cynrychioli pethau fel hyn? 914 00:57:19,520 --> 00:57:22,560 Mae angen ffordd o fynegi ein hunain ychydig yn fwy hyblyg 915 00:57:22,560 --> 00:57:25,080 na'n newidynnau hyd yn hyn wedi caniatáu. 916 00:57:25,080 --> 00:57:29,000 Rydym wedi cael ints, rydym wedi cael chars, rydym wedi cael fflotiau a dyblau a rhai eraill, 917 00:57:29,000 --> 00:57:34,200 ond y rhai yn ddarnau unigol o gof nad ydynt yn wir yn ein galluogi i fynegi pethau 918 00:57:34,200 --> 00:57:36,440 fel geiriau a brawddegau ac ymadroddion. 919 00:57:36,440 --> 00:57:38,630 Yn wir, rydym wedi galw llinynnau pethau o'r fath, 920 00:57:38,630 --> 00:57:42,660 ond rydym yn addo bod hyn yn wir dim ond symleiddio yn y llyfrgell CS50 921 00:57:42,660 --> 00:57:45,540 ein bod yn bwriadu bilio yn ôl. 922 00:57:45,540 --> 00:57:47,500 Ac felly gadewch i ni ddechrau gwneud hynny yma. 923 00:57:47,500 --> 00:57:49,840 Gadewch i mi fynd yn ei flaen ac yn agor i fyny ffeil - 924 00:57:49,840 --> 00:57:54,100 pob un o'r ffeiliau hyn ar gael, fel arfer, ar-lein - array.c elwir yn 925 00:57:54,100 --> 00:57:58,960 i ddatrys problem nad yw'n gysylltiedig llinynnau ond bod yn rhoi darlun yma 926 00:57:58,960 --> 00:58:01,520 o sut y gallem ddefnyddio rhywbeth o'r enw arae. 927 00:58:01,520 --> 00:58:04,050 >> Mae amrywiaeth yn fath data. 928 00:58:04,050 --> 00:58:10,730 Mae'n fath o amrywiol o fath sydd fathau o ddata lluosog llai y tu mewn ohono 929 00:58:10,730 --> 00:58:12,680 gefn wrth gefn wrth gefn wrth gefn. 930 00:58:12,680 --> 00:58:16,980 Felly, er enghraifft, os oeddem am ysgrifennu rhaglen fach sy'n rhoi i chi eich cyfartaledd cwis 931 00:58:16,980 --> 00:58:19,780 am gwrs fel 50 sy'n Mae 2 cwisiau, 932 00:58:19,780 --> 00:58:23,450 gallech yn ddigon rhwydd ysgrifennu hwn hyd yn oed rhaglen yn seiliedig ar rai o ddeunydd yr wythnos ddiwethaf 933 00:58:23,450 --> 00:58:28,830 drwy ddefnyddio GetInt a chwpl o newidynnau: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 Ac mae'n eithaf syml. 935 00:58:30,550 --> 00:58:33,500 Mae'n efallai 10, 20 linellau o god max i weithredu rhaglen 936 00:58:33,500 --> 00:58:38,940 sy'n gofyn y defnyddiwr ar gyfer 2 sgoriau cwis ac yna computes eu cyfartaledd 937 00:58:38,940 --> 00:58:42,020 drwy eu hychwanegu at ei gilydd, gan rannu â 2, ac yna argraffu'r canlyniadau. 938 00:58:42,020 --> 00:58:46,400 Gallem yn ôl pob tebyg yn gwneud hynny 'n bert yn barod yn awr ar ôl rhyw nifer o funudau. 939 00:58:46,400 --> 00:58:49,450 Ond y broblem yw bod debyg bod 50 wedi cael 3 neu 4 cwisiau. 940 00:58:49,450 --> 00:58:52,830 Tybiwch eich bod am ddefnyddio'r un rhaglen ar gyfer dosbarth a oedd yn wythnosol cwisiau. 941 00:58:52,830 --> 00:58:55,100 Meddyliwch am ddosbarth sydd wedi wythnosol cwisiau. 942 00:58:55,100 --> 00:58:58,840 Os oes 16 neu felly wythnos mewn semester, nawr eich bod gennym 16 newidyn: 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 Cyn gynted ag y byddwch yn dechrau gweld y diswyddo, mae hyn yn copïo a gludo o god, 945 00:59:06,870 --> 00:59:09,810 dylai ddechrau i wneud i chi yn dymuno bod yn ffordd well. 946 00:59:09,810 --> 00:59:13,610 Ac diolch byth, oherwydd araeau mae. Felly, gadewch i ni wneud hyn. 947 00:59:13,610 --> 00:59:16,700 Yn gyntaf, gadewch i mi gyflwyno yn beth syml iawn nad ydym wedi defnyddio hyd yn hyn, 948 00:59:16,700 --> 00:59:18,820 ond byddwch yn gweld ei fod o bryd i'w gilydd mewn cod. 949 00:59:18,820 --> 00:59:21,270 >> Mae hyn yn beth a elwir yn gyffredinol yn gyson. 950 00:59:21,270 --> 00:59:24,410 Felly mae'n gyson yn yr ystyr na fydd hyn fyth yn newid gwerth. 951 00:59:24,410 --> 00:59:26,450 Mae'r confensiwn dynol wrth greu cyson 952 00:59:26,450 --> 00:59:30,420 yw defnyddio pob llythyr cyfalaf yn unig fel ei fod yn wir yn sefyll allan yn eich cod, 953 00:59:30,420 --> 00:59:34,270 a'r gair allweddol arbennig yr ydych yn eu defnyddio yn C # yn cael ei ddiffinio. 954 00:59:34,270 --> 00:59:39,970 Felly, byddwn yn dweud # diffinio, yna ofod, yna bydd y gair yr ydych eisiau ei ddefnyddio ar gyfer enw'r cyson yn 955 00:59:39,970 --> 00:59:41,730 ac yna gwerth y cysonyn. 956 00:59:41,730 --> 00:59:44,710 Sylwi ar hyn yn wahanol i neilltuo rhywbeth i newidyn. 957 00:59:44,710 --> 00:59:46,430 Does dim hafalnod, does dim hanner colon. 958 00:59:46,430 --> 00:59:49,140 Mae hyn yn beth a elwir yn gyffredinol fel cyfarwyddeb Preprocessor, 959 00:59:49,140 --> 00:59:50,840 ond mwy am hynny rywbryd arall. 960 00:59:50,840 --> 00:59:56,350 Am y tro, mae hyn yn creu gwerth digyfnewid a elwir yn Cwisiau 961 00:59:56,350 --> 00:59:58,290 eu gwerth gwirioneddol rhifol yw 2. 962 00:59:58,290 --> 01:00:02,180 Felly, yn unrhyw le byddwch yn gweld Cwisiau, posau, cwisiau drwy gydol y ffeil, 963 01:00:02,180 --> 01:00:04,230 dim ond y rhif 2. 964 01:00:04,230 --> 01:00:06,550 Os byddaf yn edrych ar y prif awr, gadewch i ni weld sut mae hyn yn gweithio. 965 01:00:06,550 --> 01:00:09,770 Yn gyntaf mae'n edrych ychydig yn cryptic, ond mae'n holl bethau o wythnos 1. 966 01:00:09,770 --> 01:00:12,210 Gofynnwch i'r defnyddiwr ar gyfer graddau. Sut rydym yn gwneud hyn? 967 01:00:12,210 --> 01:00:17,350 Yn llinell 22 - mae hyn yn wir y rhan juicy - Yr wyf yn datgan fflôt 968 01:00:17,350 --> 01:00:23,240 ond nid dim ond float sengl. Rwy'n datgan, yn hytrach, amrywiaeth o fel y bo'r angen-pwynt gwerthoedd. 969 01:00:23,240 --> 01:00:27,700 Y newidyn yn mynd i gael ei alw graddau, fel a awgrymir yma, 970 01:00:27,700 --> 01:00:31,420 ond yr unig ddarn o gystrawen newydd, yna mae hyn cromfachau sgwâr. 971 01:00:31,420 --> 01:00:37,280 Mae'r ffaith fy mod i wedi dweud graddau arnofio ac yna braced agored ac yna rhif - 972 01:00:37,280 --> 01:00:40,980 sylwi os yw hyn yn gyson yn unig yw hwn fel y gwnaethom hyn - 973 01:00:40,980 --> 01:00:46,840 mae hyn yn golygu, "Hey gyfrifiadurol, rhowch fi 2 fflotiau a gadewch i ni eu galw gyda'i gilydd graddau." 974 01:00:46,840 --> 01:00:51,780 >> Mae hyn yn cyferbynnu yn broses llawer mwy diflas fel hyn: Gradd 1 arnofio; 975 01:00:51,780 --> 01:00:54,580 arnofio Gradd 2, ac yn y blaen. 976 01:00:54,580 --> 01:00:58,310 Felly mae amrywiaeth yn ein galluogi i weithredu'r syniad hwn ond yn llawer llai messily, 977 01:00:58,310 --> 01:01:04,560 yn y fath fodd y gallwn ysgrifennu 1 llinell o god yn hytrach na, dyweder, 16 am semester o 16 wythnos. 978 01:01:04,560 --> 01:01:09,060 Doeddwn i ddim eisiau i galed-god 2 oherwydd os ydych yn meddwl am hyn nawr yn rhesymegol, 979 01:01:09,060 --> 01:01:12,560 Mae'n debyg y flwyddyn nesaf CS50 newidiadau i 3 cwisiau yn lle hynny 980 01:01:12,560 --> 01:01:15,010 a chefais y rhif 2 yma, cefais y rhif 2 yma, 981 01:01:15,010 --> 01:01:17,210 Cefais y rhif 2 yma, mae nifer 2 yma. 982 01:01:17,210 --> 01:01:19,890 Mae'n dod yn iawn 'n faith ac yn hawdd iawn i sgriw i fyny 983 01:01:19,890 --> 01:01:26,550 ac i newid yn ddamweiniol 1 gwerth i 3 ac yn colli rhywfaint o werth arall o 2. 984 01:01:26,550 --> 01:01:30,660 Felly, yr wyf i'n mynd i lle haniaethol hyn i ffwrdd ac yn defnyddio hyn yn gyson, yn 985 01:01:30,660 --> 01:01:32,520 byth fel y mae'r enw'n awgrymu, newidiadau. 986 01:01:32,520 --> 01:01:35,870 Ac yn awr ni waeth a oes gennym wahanol cwisiau eleni na'r flwyddyn nesaf, 987 01:01:35,870 --> 01:01:39,380 Fi jyst rhaid ei newid mewn un lle i fyny yma ar y brig. 988 01:01:39,380 --> 01:01:41,230 Felly dyna i gyd yn gyson yn. 989 01:01:41,230 --> 01:01:47,100 Yn y cyfamser, y nodwedd cysyniadol newydd yw y bydd o arae. 990 01:01:47,100 --> 01:01:55,030 Felly y cromfachau sgwâr yn rhoi fy hyn yn arnofion llawer ac yn gadael i mi ar y cyd eu galw graddau yma. 991 01:01:55,030 --> 01:01:56,720 Felly nawr gadewch i ni weld yr hyn yr wyf i'n mynd i wneud. 992 01:01:56,720 --> 01:01:59,220 Yma yn llinell 24 yw'r ddechrau gyfer dolen. 993 01:01:59,220 --> 01:02:03,380 >> Mae hyn yn wir ffansi ddim. Mae'n dim ond gan ddefnyddio cwisiau yn hytrach na nifer hard-coded. 994 01:02:03,380 --> 01:02:06,740 Ond does dim byd deallusol gwahanol yno ers yr wythnos ddiwethaf. 995 01:02:06,740 --> 01:02:11,650 Mae hyn yn unig printf, felly printf ("Cwis d #% d% o:") 996 01:02:11,650 --> 01:02:16,670 oherwydd Fi jyst eisiau i argraffu yn rhoi i mi cwis rhif 1 o 2 ac yna 2 o 2. 997 01:02:16,670 --> 01:02:18,480 Felly, mae hyn yn beth yn unig esthetig. 998 01:02:18,480 --> 01:02:21,000 Ond mae'r rhan ddiddorol yn awr yw yn llinell 27. 999 01:02:21,000 --> 01:02:27,840 Er mwyn i chi lenwi un o'r ddau bachau gyda gwerth fel y bo'r angen-pwynt, 1000 01:02:27,840 --> 01:02:29,640 chi eto yn defnyddio cromfachau sgwâr. 1001 01:02:29,640 --> 01:02:35,170 Yn yr achos hwn, rwy'n ei ddefnyddio i oherwydd hyn ar gyfer dolen wedi dechrau gyda gyfartal i pa werth, mae'n debyg? 1002 01:02:35,170 --> 01:02:36,670 [Myfyrwyr] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 Felly, ar y fersiwn gyntaf y ddolen, mae fel pe Ysgrifennais hyn mewn cod, 1004 01:02:40,990 --> 01:02:46,310 ond ar yr ail ailadroddiad y ddolen, mae fel un yn ysgrifennu hyn yn fy cod. 1005 01:02:46,310 --> 01:02:49,970 Ond mae'r ffaith fy mod i'n defnyddio newidyn yn berffaith oherwydd, fel yr awgryma'r enw, 1006 01:02:49,970 --> 01:02:52,600 mae'n amrywio ei werth ar bob iteriad, 1007 01:02:52,600 --> 01:02:55,900 felly rwy'n llenwi'r amrywiaeth un man ar y tro. 1008 01:02:55,900 --> 01:02:57,380 Beth mae hyn yn amrywiaeth yn edrych? 1009 01:02:57,380 --> 01:03:01,570 Y rheswm Tynnais y petryal syml super ar y sgrin yma cyn Am y rheswm hwn. 1010 01:03:01,570 --> 01:03:05,590 Mae amrywiaeth yn unig yw darn o gof ac yna darn arall o gof 1011 01:03:05,590 --> 01:03:08,570 ddilyn gan talp arall o'r cof ac yn y blaen. 1012 01:03:08,570 --> 01:03:13,120 Felly, os bydd fy amrywiaeth o faint 2 yn yr achos yma, y ​​cyfan y byddwn yn ei wneud 1013 01:03:13,120 --> 01:03:20,200 trwy deipio yn fy sgoriau cwis fel sydd yma - Ges i 100 ar yr un yma ac yna fe ges i 99 ar yr un yma - 1014 01:03:20,200 --> 01:03:24,970 yna efallai na fydd y cof hyd yn oed yn cael ei ddefnyddio oherwydd fy mod wedi gofyn dim ond y cyfrifiadur 1015 01:03:24,970 --> 01:03:26,840 ar gyfer amrywiaeth o faint 2. 1016 01:03:26,840 --> 01:03:28,600 Mae'r rhai sgwariau yn dal i fod yno, dde? 1017 01:03:28,600 --> 01:03:32,670 Byddwch yn dal yn cael 2 gigabeit o RAM hyd yn oed os ydych yn unig yn gofyn am 2 fflotiau. 1018 01:03:32,670 --> 01:03:36,840 Felly, y syniad y tu ôl i arae yw bod y cyfrifiadur yn unig yn cymryd darn o gof 1019 01:03:36,840 --> 01:03:41,340 ac yna dosrannu ddarnau llai gefn wrth gefn wrth gefn wrth gefn. 1020 01:03:41,340 --> 01:03:43,310 Ac felly dyna i gyd arae yn. 1021 01:03:43,310 --> 01:03:47,350 >> Mae'n darn cyffiniol o tu mewn cof y gall chi roi pethau. 1022 01:03:47,350 --> 01:03:50,700 Mae hyn yn digwydd wedyn gwneud dim ond rhai rhifyddeg ddiflas. 1023 01:03:50,700 --> 01:03:54,640 Os byddaf yn sgrolio i lawr yma, dyma lle byddaf wedyn yn ailadrodd dros y rhesi. 1024 01:03:54,640 --> 01:03:58,020 Rwy'n dod o hyd y Crynodeb o'r holl werthoedd yn yr amrywiaeth, 1025 01:03:58,020 --> 01:04:02,470 ac yna yr wyf yn defnyddio'r swyddogaeth rownd yma i mewn gwirionedd wneud y swm wedi'i rannu gan cwisiau. 1026 01:04:02,470 --> 01:04:06,320 Ond gadewch i mi chwifio fy llaw ar hynny fel math o rifyddeg ddigon am y tro. 1027 01:04:06,320 --> 01:04:08,370 Ond y cyfan a yn ei wneud i mi yn y pen draw yn cyfrifiadurol ar gyfartaledd. 1028 01:04:08,370 --> 01:04:13,580 Felly, cwis cyntaf yn ogystal â chwis 2 wedi'i rannu gan 2 ac yna ei brintio fel int. 1029 01:04:13,580 --> 01:04:17,280 Ond gadewch i ni bellach yn newid i enghraifft wahanol o'r enw string1, 1030 01:04:17,280 --> 01:04:20,700 sy'n rhoi darlun tebyg ond llinynnau defnyddio. 1031 01:04:20,700 --> 01:04:23,940 Gadewch i mi fynd yn ei flaen a symleiddio hyn am ychydig funud. 1032 01:04:23,940 --> 01:04:27,090 Maddau y pant ar hyn o bryd. 1033 01:04:27,090 --> 01:04:30,870 Hysbysiad llinell 19 o'r enghraifft hon, byddaf yn cael llinyn gan y defnyddiwr. 1034 01:04:30,870 --> 01:04:34,640 Ond sylwi ar yr hyn yr wyf i'n ei wneud nesaf mewn llinellau 22 ymlaen. 1035 01:04:34,640 --> 01:04:41,250 Im 'mewn gwirionedd ailadrodd o hyd i i - ac mae hyn yn gamp newydd - strlen, hyd llinyn. 1036 01:04:41,250 --> 01:04:44,880 Mae hon yn swyddogaeth a ddaw gyda C, os byddwch yn mynd heibio ei fod yn llinyn, 1037 01:04:44,880 --> 01:04:47,730 mae'n dweud wrthych faint o gymeriadau yn y llinyn. Dyna i gyd. 1038 01:04:47,730 --> 01:04:51,550 Ac mae'r ffaith ei fod yn strlen yn hytrach na hyd llinyn yn unig oherwydd ei fod yn fwy cryno. 1039 01:04:51,550 --> 01:04:55,100 Ddeng mlynedd ar hugain yn ôl, pobl yn hoffi ysgrifennu pethau mor gryno ag y bo modd, 1040 01:04:55,100 --> 01:04:57,630 felly rydym wedi cadw y confensiwn yma. 1041 01:04:57,630 --> 01:05:00,660 i + + yn unig yn golygu cynnydd i ym mhob fersiwn. 1042 01:05:00,660 --> 01:05:02,990 Ac yn awr sylwi ar hyn, sydd yn ddiddorol iawn. 1043 01:05:02,990 --> 01:05:09,180 Yn llinell 24, yr wyf yn dweud, "Computer, yn rhoi i mi cymeriad, 8 did, a galw yn c." 1044 01:05:09,180 --> 01:05:12,630 Ond beth yw hyn ar yr ochr dde ei ddweud? 1045 01:05:13,490 --> 01:05:16,530 Yn Saesneg, beth mae hynny'n ei gynrychioli? 1046 01:05:16,530 --> 01:05:18,730 [Myfyrwyr] Y nod cyntaf yn y rhesi. 1047 01:05:18,730 --> 01:05:20,790 Yn union. Rhowch i mi y cymeriad cyntaf yn y rhesi. 1048 01:05:20,790 --> 01:05:24,090 Neu, yn fwy cyffredinol, yn rhoi i mi y cymeriad ith yn y rhesi. 1049 01:05:24,090 --> 01:05:26,100 Ac yn sylweddoli ei bod yn bwysig nawr bod fel gwyddonwyr cyfrifiadurol, 1050 01:05:26,100 --> 01:05:27,890 rydym yn mynd ati i gyfrif o 0. 1051 01:05:27,890 --> 01:05:29,720 >> Nid oes gennych y disgresiwn yn awr i ddechrau gwneud hyn. 1052 01:05:29,720 --> 01:05:34,160 Nawr mae'n rhaid i chi ymddwyn yn unol â'r disgwyliadau y cyfrifiadur a chyfrif o 0 1053 01:05:34,160 --> 01:05:38,180 oherwydd [0] yn mynd i fod y nod cyntaf mewn llinyn, 1054 01:05:38,180 --> 01:05:42,150 [1] yn mynd i fod yr ail, [2] yn mynd i fod y trydydd, ac yn y blaen. 1055 01:05:42,150 --> 01:05:49,720 Felly y rhaglen hon, os byddaf yn llunio ei, mae hyn eto yn string1, felly gwnewch yn string1, 1056 01:05:49,720 --> 01:05:54,670 ac yn awr yr wyf wedi rhedeg string1 yn fy ffenestr terfynell. 1057 01:05:54,670 --> 01:05:58,330 Mae'n aros am fewnbwn, felly dwi'n mynd i deipio David, Mewnbynnu, 1058 01:05:58,330 --> 01:06:02,540 ac yn awr y bydd yn argraffu David gyd ar linellau gwahanol oherwydd rybudd hyn rwy'n ei wneud. 1059 01:06:02,540 --> 01:06:05,820 Rwy'n argraffu un cymeriad ar y tro. 1060 01:06:05,820 --> 01:06:10,100 Ni fyddwn yn manylu heddiw ar hyn, ond yr wyf dileu eiliad yn ôl y gwiriad hwn yma. 1061 01:06:10,100 --> 01:06:15,480 Mae'n troi allan os yw'r defnyddiwr yn camymddwyn,, gwrthwynebus, neu ddryslyd yn unig 1062 01:06:15,480 --> 01:06:20,210 alli 'n weithredol yn methu â rhoi cyfres o gryn hyd. 1063 01:06:20,210 --> 01:06:22,860 Os ydych yn taro'r allweddol anghywir ar y bysellfwrdd, efallai y byddwch yn rhoi unrhyw llinyn o gwbl, 1064 01:06:22,860 --> 01:06:26,950 neu os ydych yn faleisus, efallai y byddwch yn ceisio bastio mewn gwerth gigabyte o traethawd 1065 01:06:26,950 --> 01:06:29,290 i lenwi'r llinyn, ac os bydd y cyfrifiadur yn rhedeg allan o gof, 1066 01:06:29,290 --> 01:06:32,710 mae'n troi allan ein bod ni'n mynd i fynd yn ôl y gwerth arbennig o'r enw null. 1067 01:06:32,710 --> 01:06:35,580 Felly, ar hyn o bryd, dim ond yn gwybod bod yna y gwerth arbennig o'r enw NULL 1068 01:06:35,580 --> 01:06:39,580 fydd yn ein galluogi i wirio pan fyddwn ni'n allan o gof, ymysg pethau eraill. 1069 01:06:39,580 --> 01:06:45,630 Ond os wyf yn agor yn awr string2, sylwi ar un gwahaniaeth yma. 1070 01:06:45,630 --> 01:06:48,210 Sylwi ar un gwahaniaeth yma gyda string2. 1071 01:06:48,210 --> 01:06:51,340 Gyda string2, hyn ar gyfer dolen yn ychydig yn wahanol. 1072 01:06:51,340 --> 01:06:55,010 >> Gadewch i mi ddileu'r NULLs fel y gallwn siarad am y tro arall. 1073 01:06:55,010 --> 01:06:57,800 Beth sy'n wahanol am y ddolen ar gyfer y tro hwn? 1074 01:06:59,620 --> 01:07:01,670 Gallaf fynd yn ôl at yr enghraifft flaenorol. 1075 01:07:01,670 --> 01:07:08,580 Felly, dyna fersiwn 2, mae hyn yn fersiwn 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 Mae'r alwad strlen yw lle? 1078 01:07:16,660 --> 01:07:18,860 Mae yn y rhan gyntaf y ddolen i. 1079 01:07:18,860 --> 01:07:21,830 Unrhyw syniadau ynghylch pam yr wyf i'n gwneud hyn? Yeah. 1080 01:07:21,830 --> 01:07:24,560 [Myfyrwyr] Felly, nad ydych yn galw swyddogaeth bob tro. 1081 01:07:24,560 --> 01:07:26,440 [Malan] Felly nid ydym yn galw swyddogaeth bob tro. Yn union. 1082 01:07:26,440 --> 01:07:28,300 Dwyn i gof o ddolenni am eu bod yn syml super 1083 01:07:28,300 --> 01:07:31,770 unwaith y byddwch math o ddeall bod hyn yn y initialization, cyflwr, ac am y diweddariad. 1084 01:07:31,770 --> 01:07:34,750 Y broblem yw bod y cyflwr yn digwydd ar bob fersiwn o'r ddolen. 1085 01:07:34,750 --> 01:07:40,010 Ac felly yn yr enghraifft yma, beth sy'n ddrwg am y ffaith bod hyn yn fy nghyflwr? 1086 01:07:40,010 --> 01:07:41,830 [Myfyrwyr] Rydych yn ffonio strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] Rydych chi'n ffonio strlen eto ac eto ac eto. 1088 01:07:44,340 --> 01:07:47,410 Ond unwaith y byddaf wedi teipio yn David, hyd y llinyn yw 5, 1089 01:07:47,410 --> 01:07:49,650 ac nid yw'n mynd i newid ar bob fersiwn o'r ddolen 1090 01:07:49,650 --> 01:07:51,670 oherwydd bod y llinyn yn dal i fod D-a-v-i-d. 1091 01:07:51,670 --> 01:07:55,320 Felly, mae hwn yn awgrym ar yr hyn sy'n mynd i fod yn syniad gynyddol bwysig 1092 01:07:55,320 --> 01:08:00,410 a elwir yn penderfyniad dylunio lle nid yn unig yn gwneud y cyfrifiadur wneud gwaith diangen. 1093 01:08:00,410 --> 01:08:03,920 >> Yn union fel cipolwg o pset2, pset2 yn y rhifyn safonol 1094 01:08:03,920 --> 01:08:07,030 yn mynd i herio chi i mewn gwirionedd yn gweithredu rhai nifer o seifferau, 1095 01:08:07,030 --> 01:08:10,410 ryw nifer o algorithmau encryption, fel y gallwch chi'ch dau amgryptio 1096 01:08:10,410 --> 01:08:13,840 a negeseuon cudd dadgryptio yn debyg iawn i'r Ralphie 1 ddatgodio yno. 1097 01:08:13,840 --> 01:08:16,810 Yn y rhifyn haciwr o pset2, rydym yn mynd i fynd ychydig ymhellach. 1098 01:08:16,810 --> 01:08:19,649 Rydym yn mynd i law i chi ffeil o system gyfrifiadurol gwirioneddol 1099 01:08:19,649 --> 01:08:23,479 sy'n cynnwys criw cyfan o enwau defnyddwyr a chyfrineiriau amgryptio gwirioneddol, 1100 01:08:23,479 --> 01:08:26,939 a'r her ar gyfer y rhifyn haciwr yn mynd i fod i fynd i'r afael hynny cyfrineiriau 1101 01:08:26,939 --> 01:08:33,200 a chyfrif i maes beth cryptograffeg neu beth gyfrinach ei ddefnyddio i mewn gwirionedd yn cynhyrchu cyfrineiriau hynny. 1102 01:08:33,200 --> 01:08:36,109 Ac rydym yn mynd i wneud hyn drwy ddefnyddio nodwedd newydd yma o C 1103 01:08:36,109 --> 01:08:40,630 y byddaf yn rhoi i chi dim ond demo o adwaenir fel gorchymyn-lein dadleuon. 1104 01:08:40,630 --> 01:08:44,229 Mae'n troi allan, gan y gall rhai ohonoch wedi gweld yn adran honno neu mewn gwerslyfrau, 1105 01:08:44,229 --> 01:08:48,260 Nid yw bob amser yn brif rhaid i fod yn ddi-rym mewn cromfachau. 1106 01:08:48,260 --> 01:08:52,430 Mae'n troi allan y gall prif hefyd yn cael ei ysgrifennu fel hyn, gyda dau dadleuon, 1107 01:08:52,430 --> 01:08:56,870 argc a argv, lle argc yw nifer y geiriau 1108 01:08:56,870 --> 01:09:00,020 eich bod yn teipio ar ôl enw'r rhaglen ar eich llinell orchymyn 1109 01:09:00,020 --> 01:09:03,420 ac argv yn y geiriau eu hunain. 1110 01:09:03,420 --> 01:09:07,540 Ac fel y cromfachau sgwâr yno yn awgrymu, argv yn ymddangos yn arae. 1111 01:09:07,540 --> 01:09:12,210 Mae'n mynd i fod yn llinyn ar ôl cyfres ar ôl llinyn yn y cof. 1112 01:09:12,210 --> 01:09:16,010 >> Felly, beth ydym yn mynd i fod yn gallu ei wneud gan ddechrau gyda pset 2 yn rhywbeth fel hyn. 1113 01:09:16,010 --> 01:09:21,350 Os byddaf yn gwneud argv1, sy'n enghraifft byddwn yn dod yn ôl i ddydd Llun, a'i redeg, 1114 01:09:21,350 --> 01:09:23,370 sylwi nad yw'n ymddangos i wneud unrhyw beth eto. 1115 01:09:23,370 --> 01:09:25,490 'I jyst yn argraffu ei enw ei hun. 1116 01:09:25,490 --> 01:09:31,479 Ond os ydw i'n dweud ffarwel dosbarth, rhybudd bod y rhaglen hon ymddangos yn ailadrodd 1117 01:09:31,479 --> 01:09:35,479 dros bob un o'r geiriau a deipiwyd wrth yr anogwr. 1118 01:09:35,479 --> 01:09:41,630 A'r modd y byddwn yn cael mynediad i eiriau fod y defnyddiwr wedi teipio wrth yr anogwr 1119 01:09:41,630 --> 01:09:49,160 yw drwy newid prif dechrau y penwythnos hwn gan int brif (gwag) i int brif (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 ac felly bydd yn cael ei eni gorchymyn-lein dadleuon. 1121 01:09:52,050 --> 01:09:57,100 Ac ar ôl i chi ca 'n sylweddol soffistigedig ar hyn, byddwch yn gallu ysgrifennu rhaglenni gwirioneddol trippy 1122 01:09:57,100 --> 01:09:59,610 fel yr un yma yma, sy'n mynd y tu hwnt 1123 01:09:59,610 --> 01:10:03,940 rhai o'r swyddogaethau ydym wedi ei wneud hyd yn hyn, ond i gyd yn eithaf pwerus. 1124 01:10:03,940 --> 01:10:08,950 >> Felly, byddwn yn gadael hyn â hyn ar y sgrin, a byddwn yn eich gweld ar ddydd Llun. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]