1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] DAVID J. Malan: Bone. 2 00:00:08,160 --> 00:00:11,170 Ĉi tiu estas CS50, kaj ĉi tiu estas la fino de semajno du. 3 00:00:11,170 --> 00:00:14,650 Se vi atendis esti malsata por ĉi tiu epoko morgaŭ, sciu ke ni iras 4 00:00:14,650 --> 00:00:18,920 kunvoki kiel malgranda grupo morgaŭ, ĵaŭdo, 1:15 PM. 5 00:00:18,920 --> 00:00:21,460 Estas ĉi tiu URL tie se vi ŝatus RSVP. 6 00:00:21,460 --> 00:00:25,270 Spaco estas limigita, do bonvolu pardoni se la formo plenigis per la tempo vi 7 00:00:25,270 --> 00:00:26,680 plenigi ĉi eksteren. 8 00:00:26,680 --> 00:00:29,400 Alia URL kvankam tiu povus esti de intereso estas ĉi. 9 00:00:29,400 --> 00:00:32,409 >> Do en preskaŭ tutan monaton, la kurso tuj estos disponebla 10 00:00:32,409 --> 00:00:36,090 des pli vaste tra edX, vojo kiu onin sur la interreto estos 11 00:00:36,090 --> 00:00:39,580 povis sekvi kune, partopreni en la kurso sufiĉe aktive, fakte. 12 00:00:39,580 --> 00:00:43,070 Ili estos uzi la CS50 Appliance kaj CS50 diskuti kaj la plejparto de la 13 00:00:43,070 --> 00:00:45,840 diversaj programoj iloj por ke ni jam estis uzante ĉi semestro. 14 00:00:45,840 --> 00:00:49,030 Kaj unu el la iniciatoj ni ŝatus alpreni kiel eksperimento ĉi tiu jaro 15 00:00:49,030 --> 00:00:53,120 estas vidi, kiom multe enhavo ni povas traduki en aliajn parolata kaj 16 00:00:53,120 --> 00:00:54,110 skribita lingvoj. 17 00:00:54,110 --> 00:00:58,000 Do, se vi povus havi intereson en partopreni en ĉi tiu projekto, per kiu 18 00:00:58,000 --> 00:01:02,090 ni provizos anglan transskriboj kaj subtitoloj por la kurso de 19 00:01:02,090 --> 00:01:05,190 prelegoj kaj pantalono kaj seminarioj kaj sekcioj kaj similaj - 20 00:01:05,190 --> 00:01:08,700 se vi parolas flue aŭ skribi flue iu alia lingvo, ni havus 21 00:01:08,700 --> 00:01:12,240 amas engaĝiĝi vin en tiu projekto, per kiu vi prenas sur unu aŭ pli el la 22 00:01:12,240 --> 00:01:15,340 videoj, tradukante ilin al lingvo vi scias sufiĉe bone. 23 00:01:15,340 --> 00:01:19,050 Doni al vi la senton de la interfaco, ne estas tio ttt-bazita uzulinterfaco 24 00:01:19,050 --> 00:01:22,330 ke ni estos uzi tiun kreos esence UI ŝatas tion. 25 00:01:22,330 --> 00:01:24,520 Ĉi tio estis mi instruis kelkajn Halloween antaŭe. 26 00:01:24,520 --> 00:01:27,710 Kaj sur la dekstra flanko tie en nigra apud tiuj tempo poŝtmarkojn, 27 00:01:27,710 --> 00:01:31,300 vi vidos la diversajn aĵojn kiuj eliris el mia buŝo tiu tago. 28 00:01:31,300 --> 00:01:34,660 Kaj tiam sub ĝi, vi povos traduki en iu alia lingvo. 29 00:01:34,660 --> 00:01:37,840 Ekzakte kion la surĵeto estas inter, en ĉi tiu kazo, la angla 30 00:01:37,840 --> 00:01:38,660 kaj, ni diru, la hispana. 31 00:01:38,660 --> 00:01:40,480 Do ĝi estas vere tre uzantamika ilo. 32 00:01:40,480 --> 00:01:43,690 Vi povas rebobinar kaj rapida antaŭen tre facile kun klavarkurtvojoj. 33 00:01:43,690 --> 00:01:46,710 Do se vi ŝatus partopreni en ĉi tiu eksperimento kaj havi vian vortoj 34 00:01:46,710 --> 00:01:50,730 vidis kaj legita de potenciale miloj da homoj tie, bonvolu senti 35 00:01:50,730 --> 00:01:51,960 liberaj por partopreni. 36 00:01:51,960 --> 00:01:56,940 >> Nun unu vorton pri la katido de lundo, por ke ni sendis tro 37 00:01:56,940 --> 00:01:58,120 timigas mesaĝo. 38 00:01:58,120 --> 00:02:02,130 Ĉu rimarkas ke kiel oficejo horoj sugestas kaj kiel sekcioj sugestas, la 39 00:02:02,130 --> 00:02:05,110 dezajno de la kurso estas tre multe esti studentoj kunlabori kaj 40 00:02:05,110 --> 00:02:09,250 parolante labori tra problemo aroj kaj problemoj kune. 41 00:02:09,250 --> 00:02:13,630 Kaj vere la linio simple venas malsupren al, denove, la laboro vi finfine 42 00:02:13,630 --> 00:02:16,420 devus submetiĝi devus esti via propra. 43 00:02:16,420 --> 00:02:19,080 Kaj tiel ĝi estas, tute honeste - en oficejo horoj, ĝi estas tute normala - 44 00:02:19,080 --> 00:02:21,560 ĝi estas plene atendi, eĉ - por esti babili kun iu 45 00:02:21,560 --> 00:02:22,370 amikoj apud vi. 46 00:02:22,370 --> 00:02:25,240 Se li aŭ ŝi luktas kun iu temo, kaj vi estas kiel, oh, bone lasu 47 00:02:25,240 --> 00:02:27,750 mi donos al vi duonvidi de iu linio de kodo, kiun mi skribis. 48 00:02:27,750 --> 00:02:28,290 Tio estas bone. 49 00:02:28,290 --> 00:02:28,700 Tio okazas. 50 00:02:28,700 --> 00:02:31,580 Kaj tio estas tre favoraj, mi pensas, kun la procezo de lernado. 51 00:02:31,580 --> 00:02:35,270 Kie la linio, denove, gets transiris estas kiam la kapo estas speco de klinita super 52 00:02:35,270 --> 00:02:38,800 ĉi tie tro da sekundoj aŭ minutoj por ke vere havi nur 53 00:02:38,800 --> 00:02:41,250 estis desbloquear ŝancon por via amiko. 54 00:02:41,250 --> 00:02:43,870 Kaj certe, kiam aferoj get interŝanĝis per retpoŝto kaj Dropbox kaj 55 00:02:43,870 --> 00:02:45,350 similaj, ne tro estas la linio. 56 00:02:45,350 --> 00:02:48,940 Do por supozita, senti komforta kaj senti kuraĝigis babili kun geamikoj 57 00:02:48,940 --> 00:02:51,270 kaj kompanoj sur psets kaj pli. 58 00:02:51,270 --> 00:02:54,680 Kaj ĝuste rimarkas ke kion vi finfine submeti devus vere esti la 59 00:02:54,680 --> 00:02:57,780 produkto de via kreado kaj ne iu alia. 60 00:02:57,780 --> 00:03:01,010 >> Do, en la sama stilo de cuddly uloj, vi povus 61 00:03:01,010 --> 00:03:02,820 scias pri ĉi tiu viro tie. 62 00:03:02,820 --> 00:03:06,180 Do ĉi tiu estas horrifically cheesy filmo de jaroj. 63 00:03:06,180 --> 00:03:08,680 Neniu tie vidis Spaceballs? 64 00:03:08,680 --> 00:03:09,120 Bone. 65 00:03:09,120 --> 00:03:10,220 Do bonan numeron tie. 66 00:03:10,220 --> 00:03:13,840 Do tiu estas nia mirinde akademia maniero enkonduki hodiaŭ finfine 67 00:03:13,840 --> 00:03:15,130 la nocio de ĉifriko. 68 00:03:15,130 --> 00:03:19,010 Kaj tiel unu el la domajno specifaj problemoj por pset 2, kiu venos 69 00:03:19,010 --> 00:03:22,770 el malfrua morgaŭ nokte, estas plonĝi en la mondon de ĉifriko, kiu 70 00:03:22,770 --> 00:03:26,380 estas la arto de encrypting aŭ grimpadi informo. 71 00:03:26,380 --> 00:03:30,160 Kaj jen finfine rilatas al la mondo de sekureco. 72 00:03:30,160 --> 00:03:34,440 >> Nun sekureco por la plimulto ni venas en la formo de sufiĉe sekulara mekanismoj. 73 00:03:34,440 --> 00:03:36,920 Ĉiuj el ni havas uzanto kaj pasvortoj. 74 00:03:36,920 --> 00:03:41,350 Kaj ni ĉiuj havas tre malbona usernames kaj pasvortoj, plej verŝajne. 75 00:03:41,350 --> 00:03:45,250 Se via pasvorto estas la sama sur multnombraj retejoj, jen probable ne 76 00:03:45,250 --> 00:03:47,920 la plej bona ideo, kiel ni diskutos al semestro la fino. 77 00:03:47,920 --> 00:03:51,680 Se vian pasvorton estas skribita sur glueca noto - neniu ŝerco - en via 78 00:03:51,680 --> 00:03:55,130 monitoro, ke ankaŭ tio ne nepre la plej bona dezajno sed sufiĉe komuna 79 00:03:55,130 --> 00:03:56,140 fenomeno. 80 00:03:56,140 --> 00:04:00,420 Kaj se vi ne uzas ĉifriko por ĉifri pasvortojn viaj, ili estas 81 00:04:00,420 --> 00:04:01,610 aparte vundebla. 82 00:04:01,610 --> 00:04:04,670 Do, se vi pensas ke vi estas super saĝa por havi kaŝitan Vorto 83 00:04:04,670 --> 00:04:07,740 dokumenti ie en vian malmolan diskon kiu havas ĉiujn viajn pasvortojn sed 84 00:04:07,740 --> 00:04:10,550 ĝi estas en dosierujo, ke neniu tuj rigardi, ke ankaŭ tio ne estas tre 85 00:04:10,550 --> 00:04:11,540 sekura mekanismo. 86 00:04:11,540 --> 00:04:15,100 Kaj tiel kion pset 2 enkondukos estas ĉi arton de ĉifriko kaj 87 00:04:15,100 --> 00:04:18,300 grimpadi informon por ke aferoj kiel pasvortoj 88 00:04:18,300 --> 00:04:19,500 des pli sekura. 89 00:04:19,500 --> 00:04:24,500 Do kiel motivi ĉi tre reala mondo problemo kun tre ne-reala mondo 90 00:04:24,500 --> 00:04:28,740 scenaro, lasu min enkonduki vin al unu el niaj plej ŝatataj klipoj tien el ĉi 91 00:04:28,740 --> 00:04:29,895 filmo, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [Vídeo] 93 00:04:30,565 --> 00:04:32,995 -Kasko, vi fiend, kio okazas? 94 00:04:32,995 --> 00:04:34,730 Kion vi faras al mia filino? 95 00:04:34,730 --> 00:04:38,960 -Permesu prezenti la genian juna mola kirurgo, D-ro Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, la plej granda nazo laboron viro en la tuta 97 00:04:43,290 --> 00:04:45,526 universo kaj Beverly Hills. 98 00:04:45,526 --> 00:04:46,450 -Via moŝto. 99 00:04:46,450 --> 00:04:47,380 -Nazo laboron? 100 00:04:47,380 --> 00:04:48,035 Mi ne komprenas. 101 00:04:48,035 --> 00:04:49,480 Ŝi jam havis nazon laboron. 102 00:04:49,480 --> 00:04:51,490 Estis dolĉa 16 ĉeestis. 103 00:04:51,490 --> 00:04:53,090 -Ne, ĝi ne estas kion vi pensas. 104 00:04:53,090 --> 00:04:55,150 Estas multe, multe pli malbonaj. 105 00:04:55,150 --> 00:04:59,860 Se vi ne donos al mi la ĉifro al la aero ŝildo, Dr Schlotkin volo 106 00:04:59,860 --> 00:05:04,135 doni vian filinon reen sian malnovan nazo. 107 00:05:04,135 --> 00:05:05,385 -Ne! 108 00:05:08,202 --> 00:05:10,186 Kie vi akiris tion? 109 00:05:10,186 --> 00:05:11,178 -Bone. 110 00:05:11,178 --> 00:05:11,674 Mi rakontos. 111 00:05:11,674 --> 00:05:12,666 Mi rakontos. 112 00:05:12,666 --> 00:05:14,154 -Ne, daddy, ne. 113 00:05:14,154 --> 00:05:15,150 Vi ne devas. 114 00:05:15,150 --> 00:05:16,460 -You're right, mia kara. 115 00:05:16,460 --> 00:05:18,450 Vi mankos via nova nazo. 116 00:05:18,450 --> 00:05:21,550 Sed mi ne diros al ili la kombino ajn. 117 00:05:21,550 --> 00:05:23,100 -Tre bone. 118 00:05:23,100 --> 00:05:25,510 Dr Schlotkin, faru vian plej malbona. 119 00:05:25,510 --> 00:05:26,760 -Mia plezuro. 120 00:05:30,560 --> 00:05:31,180 -Ne! 121 00:05:31,180 --> 00:05:33,450 Atendu, atendu. 122 00:05:33,450 --> 00:05:34,770 Mi rakontos. 123 00:05:34,770 --> 00:05:36,400 Mi rakontos. 124 00:05:36,400 --> 00:05:38,630 -Mi sciis, ke tio funkcios. 125 00:05:38,630 --> 00:05:42,040 Bone, donu ĝin al mi. 126 00:05:42,040 --> 00:05:46,890 -La kombinaĵo estas unu. 127 00:05:46,890 --> 00:05:47,290 -Unu. 128 00:05:47,290 --> 00:05:48,183 -Unu. 129 00:05:48,183 --> 00:05:48,950 -Du. 130 00:05:48,950 --> 00:05:49,370 -Du. 131 00:05:49,370 --> 00:05:50,450 -Du. 132 00:05:50,450 --> 00:05:50,715 -Tri 133 00:05:50,715 --> 00:05:51,380 -Tri. 134 00:05:51,380 --> 00:05:52,390 -Tri. 135 00:05:52,390 --> 00:05:53,200 -Kvar. 136 00:05:53,200 --> 00:05:53,720 -Kvar. 137 00:05:53,720 --> 00:05:55,830 -Kvar. 138 00:05:55,830 --> 00:05:56,580 -Kvin 139 00:05:56,580 --> 00:05:57,120 -Kvin. 140 00:05:57,120 --> 00:05:58,560 -Kvin. 141 00:05:58,560 --> 00:06:03,770 -Do la kombino estas unu, du, tri, kvar, kvin. 142 00:06:03,770 --> 00:06:06,745 Tio estas la stupidest kombinaĵo Mi iam aŭdis en mia vivo. 143 00:06:06,745 --> 00:06:09,290 Tio estas la speco de afero idioto havus sur lian pakaĵon. 144 00:06:09,290 --> 00:06:11,540 -Dankon, via moŝto. 145 00:06:11,540 --> 00:06:12,940 -Kion vi faris? 146 00:06:12,940 --> 00:06:14,230 -Mi elŝaltis la muro. 147 00:06:14,230 --> 00:06:14,630 -Ne, vi ne. 148 00:06:14,630 --> 00:06:15,430 Vi elŝaltis la tuta filmo. 149 00:06:15,430 --> 00:06:16,722 -Mi devas premis malĝustan butonon. 150 00:06:16,722 --> 00:06:18,078 -Nu, remetis ĝin plu. 151 00:06:18,078 --> 00:06:18,805 Metu la filmo denove sur. 152 00:06:18,805 --> 00:06:19,080 -Jes, sinjoro. 153 00:06:19,080 --> 00:06:19,270 Jes, sinjoro. 154 00:06:19,270 --> 00:06:19,830 -Ni iru, Erna. 155 00:06:19,830 --> 00:06:20,270 Venu, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Kompreneble vi scias Mi ankoraŭ devas Bill vi pro tio. 157 00:06:27,400 --> 00:06:28,325 -Nu, tio funkcias? 158 00:06:28,325 --> 00:06:29,550 Kie estas la pordego? 159 00:06:29,550 --> 00:06:29,910 -Ĝi laboris, sinjoro. 160 00:06:29,910 --> 00:06:30,770 Ni havas la kombinon. 161 00:06:30,770 --> 00:06:31,390 -Granda. 162 00:06:31,390 --> 00:06:35,630 Nun ni povas preni ĉiun lastan spiron de freŝa aero de planedo Druidia. 163 00:06:35,630 --> 00:06:36,550 Kio estas la ĉifro? 164 00:06:36,550 --> 00:06:38,805 -Unu, du, tri, kvar, kvin. 165 00:06:38,805 --> 00:06:40,610 -Unu, du, tri, kvar, kvin? 166 00:06:40,610 --> 00:06:41,070 -Jes. 167 00:06:41,070 --> 00:06:41,760 -Tio estas miriga. 168 00:06:41,760 --> 00:06:45,200 Mi havas la saman kombinon sur mia pakaĵo. 169 00:06:45,200 --> 00:06:47,800 Prepari Spaceball 1 por tuja foriro. 170 00:06:47,800 --> 00:06:48,536 -Jes, sinjoro. 171 00:06:48,536 --> 00:06:52,350 -Kaj ŝanĝi la kombino de mia pakaĵo. 172 00:06:52,350 --> 00:06:53,250 -Aj! 173 00:06:53,250 --> 00:06:55,020 [FINO vídeo] 174 00:06:55,020 --> 00:06:57,470 >> DAVID J. Malan: An amazing filmon vi devus nun ĉiuj vidas. 175 00:07:00,600 --> 00:07:06,540 Do la kunteksto estas, ke kun necerta datumoj venas ŝancon 176 00:07:06,540 --> 00:07:07,790 ĉifri ĝin kaj levi ĝin. 177 00:07:07,790 --> 00:07:11,060 Kaj tiel tio, ekzemple, estas ekzemplo de ĉifrita mesaĝo. 178 00:07:11,060 --> 00:07:12,980 Tiu fakte diras ion en la angla. 179 00:07:12,980 --> 00:07:14,750 Sed estas klare ne tute evidenta. 180 00:07:14,750 --> 00:07:17,360 Kaj ni venos plena cirklo hodiaŭ al tease krom kio estas tiu sekreta 181 00:07:17,360 --> 00:07:18,380 mesaĝon ĉi tie estas. 182 00:07:18,380 --> 00:07:22,370 Sed en la reala mondo de komputiloj, aĵoj eĉ ne aspektas kiel ili povus 183 00:07:22,370 --> 00:07:23,440 esti angla frazoj. 184 00:07:23,440 --> 00:07:27,500 Ekzemple, ĉi tio estas kion vi povus trovi en norma Linukso aŭ Mac aŭ 185 00:07:27,500 --> 00:07:32,080 Unikso komputilo en dosiero, kiu estis iam nomata la pasvorton dosiero. 186 00:07:32,080 --> 00:07:34,170 Nuntempe, ĝi estas movita en aliaj lokoj. 187 00:07:34,170 --> 00:07:38,660 Sed se vi rigardas en la ĝusta loko en sistemo, vi vidos ne nur vian 188 00:07:38,660 --> 00:07:41,430 salutnomo aŭ tiu de aliaj homoj en la sistemo, sed vi vidas 189 00:07:41,430 --> 00:07:43,410 ĉifrita versio de ilia pasvorton. 190 00:07:43,410 --> 00:07:47,800 Efektive, la vorto kripto tie sugestas ke la sekvaj aferoj estas ĉifrita. 191 00:07:47,800 --> 00:07:52,030 Kaj ĉi tiu serio de kvazaŭe hazarda literojn kaj signojn kaj nombrojn kaj 192 00:07:52,030 --> 00:07:56,370 ktp povas esti deĉifrita nur ĝenerale sciante iu sekreta - 193 00:07:56,370 --> 00:07:58,600 sekretan vorton, sekreta nombro. 194 00:07:58,600 --> 00:08:02,760 Kaj tiel ja, la arto de ĉifriko finfine abscesoj malsupren fidi de iu 195 00:08:02,760 --> 00:08:05,700 varo kaj sciante ion ke iu alia ne. 196 00:08:05,700 --> 00:08:10,010 Ni esploru tion en iom pli detale hodiaŭ kaj en la pset veni. 197 00:08:10,010 --> 00:08:11,860 >> Kaj nun unu vorton sur pass / malsukcesas. 198 00:08:11,860 --> 00:08:15,250 Do precipe, kiel kelkaj el vi plonĝis en pset 1, la aparato, kaj 199 00:08:15,250 --> 00:08:18,390 tre nova mondo por vi mem, rimarkis ke frustroj kaj 200 00:08:18,390 --> 00:08:21,340 konfuzo kaj simple teknikaj malfacilaĵoj estas por atendi. 201 00:08:21,340 --> 00:08:24,410 Speciale kun la unua pset, kie estas nur tiel nova, nur nun 202 00:08:24,410 --> 00:08:28,830 familiara kun ls kaj cd kaj ĉiuj tiuj arcano komandojn en nova medio. 203 00:08:28,830 --> 00:08:32,679 Kaj tio estas apartigita for la efektiva materialo kaj programado mem. 204 00:08:32,679 --> 00:08:35,960 Do realigi, ankaŭ, ke estas certe oficejo horoj kiuj ekzistas kiel 205 00:08:35,960 --> 00:08:36,770 la apogo strukturo. 206 00:08:36,770 --> 00:08:38,620 Sekcioj komenci ĉi venas dimanĉon. 207 00:08:38,620 --> 00:08:41,990 Sed plej grave, se vi sentas ĝuste tio ĉi ne estas la 208 00:08:41,990 --> 00:08:44,420 mondo por vi, kompreni ke vere ne nur preni tempon. 209 00:08:44,420 --> 00:08:47,520 Kaj se ne por tiu ĉi ŝanco jarojn por mi de preni klaso 210 00:08:47,520 --> 00:08:50,840 pasi / malsukcesos, honeste, mi neniam estus eĉ tretis la klasĉambro. 211 00:08:50,840 --> 00:08:53,520 Kaj vi povas ŝanĝi ĉi ĝis, ni diru, la kvina lundo de la kurso. 212 00:08:53,520 --> 00:08:57,110 Do se vi estas sur la rando nun rimarkas ke anstataŭ kapon en iu alia 213 00:08:57,110 --> 00:09:01,000 akvoj aro, do certe konsideras nur ŝanĝas pasi / maltrafi. 214 00:09:01,000 --> 00:09:03,750 Denove, ne estas vere tiu kulturo tie en Harvard de preni aĵojn 215 00:09:03,750 --> 00:09:08,080 pasi / malsukcesos ĉar ĉiuj vere volas atingi aŭ overachieve. 216 00:09:08,080 --> 00:09:11,470 Sed sincere, ĉi tiu estas bonega maniero de provi ion ke ne fariĝu 217 00:09:11,470 --> 00:09:13,110 esti konata al vi. 218 00:09:13,110 --> 00:09:17,090 Kaj vi finos faras plejofte tute bone, eble 219 00:09:17,090 --> 00:09:18,040 multe al via surprizo. 220 00:09:18,040 --> 00:09:20,850 Kaj en pli konkretaj terminoj, kion mi kredas pasi / malsukcesos ĝenerale faras, 221 00:09:20,850 --> 00:09:23,350 speciale kiel vi eble spertis kun pset 0, se vi metas 222 00:09:23,350 --> 00:09:27,200 en 10 horoj, 15 horoj, 25 horojn en iu pset - kaj vi nur banging 223 00:09:27,200 --> 00:09:28,180 vian kapon kontraŭ la muro, 224 00:09:28,180 --> 00:09:29,850 kaj Fariĝas super malfrue en la nokto, 225 00:09:29,850 --> 00:09:31,880 sed vi prenis la pset kiel 90% de la vojo, 226 00:09:31,880 --> 00:09:33,780 vi scias, ke vi tute ne povas kalkuli unu afero - 227 00:09:33,780 --> 00:09:36,830 pasi / malsukcesos vere prenas la rando ekstere de klaso kiel ĉi tiu, kie vi povas ordigi 228 00:09:36,830 --> 00:09:39,150 de feliĉe diras bone, mi scias ke ne perfekta. 229 00:09:39,150 --> 00:09:40,470 Sed mi laboris mia azeno sur sur ĉi. 230 00:09:40,470 --> 00:09:42,410 Estas sufiĉe feliĉa kun kie finis. 231 00:09:42,410 --> 00:09:44,780 Kaj tio estos renkonti la atendojn por pass / maltrafi. 232 00:09:44,780 --> 00:09:46,850 Do observu, ke en la menso. 233 00:09:46,850 --> 00:09:47,140 >> Bone. 234 00:09:47,140 --> 00:09:50,980 Do tiuj el vi, kiuj luktis por uzi la Universitato Harvard Wi-Fi scias 235 00:09:50,980 --> 00:09:54,780 ke estas CS50 SSID, a Wi-Fi ŝvebantan ke vi 236 00:09:54,780 --> 00:09:56,520 havu bonan sorton por. 237 00:09:56,520 --> 00:09:59,430 Ĝi estas iom ironia ke la pasvorto por tio - se vi ŝatus provi 238 00:09:59,430 --> 00:10:03,080 konektante al ĉi por pli bona rapidoj kaj ni scias se ĝi estas pli bona - 239 00:10:03,080 --> 00:10:09,240 estas unu, du, tri, kvar, kvin, la tuta vojo ĝis ok ĉar ok estas 240 00:10:09,240 --> 00:10:10,270 pli sekura ol kvin. 241 00:10:10,270 --> 00:10:15,520 Do, se vi bezonas la Wi-Fi pasvorton, konekti al CS50 sendrata tie. 242 00:10:15,520 --> 00:10:16,950 Unu, du, tri, kvar, kvin, ses, sep, ok. 243 00:10:16,950 --> 00:10:20,440 Kaj post en CS50 Diskutu se vi ankoraŭ havas intermitaj conectividad temoj, 244 00:10:20,440 --> 00:10:24,880 kaj ni lasu la povoj kiujn oni scias ĉi tiu spaco. 245 00:10:24,880 --> 00:10:25,180 >> Bone. 246 00:10:25,180 --> 00:10:30,350 Tial rapidaj teaser, precipe por tiuj el vi, kiuj estas fano knaboj aŭ knabinoj 247 00:10:30,350 --> 00:10:31,900 de ĉiuj aĵoj Apple. 248 00:10:31,900 --> 00:10:37,566 Kion mi elfosis de kelkaj jaroj malantaŭen, estis jena dosiero tie, ilock.c, nur por 249 00:10:37,566 --> 00:10:40,930 speco de fari pli konkretaj kaj pli kompleksaj kelkaj el la pli bazaj C 250 00:10:40,930 --> 00:10:42,350 programoj ni estis skribante. 251 00:10:42,350 --> 00:10:44,360 Do mi malfermis ĉi-dosiero, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Estas disponebla en la prelegoj paĝo hodiaŭ. 253 00:10:46,830 --> 00:10:49,470 Sur la maldekstra flanko, vi vidas longan liston de funkcioj. 254 00:10:49,470 --> 00:10:51,860 Do la ulo kiu skribis ĉi redaktis multajn funkciojn, 255 00:10:51,860 --> 00:10:53,290 pli ol nur ĉefaj. 256 00:10:53,290 --> 00:10:55,490 Li uzis tutan faskon da bibliotekoj ĉi tie. 257 00:10:55,490 --> 00:11:00,450 Kaj se ni komencos movo tra, kio estas tiu fakte estas estas la tre 258 00:11:00,450 --> 00:11:04,670 unue, mi kredas, fendi por la originala iPhone. 259 00:11:04,670 --> 00:11:08,000 Kiam vi volis jailbreak la originala iPhone, kiu signifas untether 260 00:11:08,000 --> 00:11:11,800 ĝin de AT & T kaj vere instali specialan programaron sur ĝi kaj fari aferojn 261 00:11:11,800 --> 00:11:13,510 ke Apple ne volis personoj faru - 262 00:11:13,510 --> 00:11:17,020 nu, iu prenis la tempon por eltrovi ĝuste kiel ili povus eksplodi 263 00:11:17,020 --> 00:11:20,880 programaro difektoj, erarojn, erarojn, en Apple programaro. 264 00:11:20,880 --> 00:11:22,650 Kaj tiel naskiĝis ilock.c. 265 00:11:22,650 --> 00:11:26,670 Ke se vi kompilis ĝin en komputilo kaj instalis ĝin sur iPhone ke 266 00:11:26,670 --> 00:11:29,810 estis konektita al via komputilo per, ekzemple, USB kablon, ĉi tio donas al vi 267 00:11:29,810 --> 00:11:33,360 administraj aŭ radiko privilegiojn en via iPhone kaj lasos vin fari preskaux 268 00:11:33,360 --> 00:11:34,170 kion ajn vi volas. 269 00:11:34,170 --> 00:11:36,740 >> Kaj do ili pasis tiu fascina kato kaj muso ludo inter Apple kaj 270 00:11:36,740 --> 00:11:39,920 la resto de la mondo en aparta kiel ili, kiel multaj entreprenoj, klopodi ŝlosi 271 00:11:39,920 --> 00:11:43,220 iliaj aĵoj malsupren tiel ke vi povas nur fari kun ĝi, kion ili intencas. 272 00:11:43,220 --> 00:11:46,620 Sed danke al homoj ŝatas ĉi kaj ilia kompreno de malalta nivelo 273 00:11:46,620 --> 00:11:50,580 detaloj kaj, en ĉi tiu kazo, programado C kaj multe de la familiara konstruoj 274 00:11:50,580 --> 00:11:54,630 ke ni komencis ludi kun vi kapablas vere influon la 275 00:11:54,630 --> 00:11:59,050 aparataro en maniero ke vi decidos, kaj ne nepre iu kompania ento. 276 00:11:59,050 --> 00:12:01,360 Do ekzemple, mi ne havas ideon kion ĉiuj ĉi faras. 277 00:12:01,360 --> 00:12:03,220 Sed GetVersion sonas sufiĉe simpla. 278 00:12:03,220 --> 00:12:05,480 Kaj ĝi aspektas kiel ĉi estas funkcio kiu tiu persono skribis. 279 00:12:05,480 --> 00:12:09,240 Prenu ian entjero kiel argumento, ne revenas nenion, sed 280 00:12:09,240 --> 00:12:13,080 ŝajnas buklo kun por buklo tie kaj se kondiĉo, se kondiĉo, 281 00:12:13,080 --> 00:12:15,620 rompi, kaj iel rilatas al versio nombroj. 282 00:12:15,620 --> 00:12:16,700 Se ni rulumu malsupren - 283 00:12:16,700 --> 00:12:19,570 kvankam multe da tiuj ŝlosilvortoj tuj estos nova, kaj tie estas 284 00:12:19,570 --> 00:12:22,590 tuta multajn funkciojn en ĉi tie ni neniam vidis kaj eble ne cxiam vidas pli 285 00:12:22,590 --> 00:12:23,830 la kurson de la semestro - 286 00:12:23,830 --> 00:12:27,150 ĉe la fino de la tago, sekvas la samajn regulojn kaj logiko, ke ni estis 287 00:12:27,150 --> 00:12:28,760 ludante kun tiel for. 288 00:12:28,760 --> 00:12:34,220 Do ĉi tiu estas tro maljuna por fendi via iPhone 3s aŭ 4s aŭ baldaŭ 5s, tiuj tagoj, 289 00:12:34,220 --> 00:12:37,320 sed sciu, ke ĝi estas ĉiuj tre derivita de ĉi tiu mondo kiu ni 290 00:12:37,320 --> 00:12:38,430 plonĝis en. 291 00:12:38,430 --> 00:12:41,900 >> Do ni rigardu iom pli simpla ekzemplo. 292 00:12:41,900 --> 00:12:46,100 Ĉi tiu, nur por preni hejtita kun iuj sintakso kaj ankaŭ iuj aliaj datumoj 293 00:12:46,100 --> 00:12:49,240 tipo kiu ni jam parolis pri sed ne vere vidas en C. Do ĉi tiu estas 294 00:12:49,240 --> 00:12:51,680 dosiero nomata positive1.c. 295 00:12:51,680 --> 00:12:55,120 Kaj po la komentojn ĉe la supro, ĉi nur postulas ke la uzanto ofertas 296 00:12:55,120 --> 00:12:55,960 pozitiva nombro. 297 00:12:55,960 --> 00:12:59,530 Do ĝi estas ekzemplo de do-dum ciklo, kiu estas agrabla por uzanto-interaga 298 00:12:59,530 --> 00:13:01,980 programoj kie vi bezonas diri al la uzanto fari ion. 299 00:13:01,980 --> 00:13:05,190 Kaj se ili ne kunlabori, vi krias al ili aŭ malakcepti lian enigo. 300 00:13:05,190 --> 00:13:11,610 Kazo en punkto, mi iras fari linioj 19 tra 24 tiel longe, kiel la uzanto havas 301 00:13:11,610 --> 00:13:14,310 ne donis al mi pozitiva nombro. 302 00:13:14,310 --> 00:13:20,400 Nun ĉi tiu detalo tie sur linio 18, kial mi deklaras n super ĉi tiu tuta 303 00:13:20,400 --> 00:13:24,490 looping konstruo kiel kontraŭ tuj apud linio 22, kie mi 304 00:13:24,490 --> 00:13:26,880 vere gravas por ricevi n? 305 00:13:26,880 --> 00:13:27,330 Yeah? 306 00:13:27,330 --> 00:13:27,780 [Inaudible] 307 00:13:27,780 --> 00:13:29,040 >> DAVID J. Malan: Jes, tia ĉi demando de medio. 308 00:13:29,040 --> 00:13:30,850 Kaj en lego de termino, kion signifas medion referi al? 309 00:13:34,690 --> 00:13:36,610 Yeah? 310 00:13:36,610 --> 00:13:37,860 [Inaudible] 311 00:13:40,040 --> 00:13:41,105 DAVID J. Malan: Ĉu vi povas paroli iom pli laŭta? 312 00:13:41,105 --> 00:13:43,450 Parolanto 1: Kie vi povas aliri aparta variablo. 313 00:13:43,450 --> 00:13:45,170 DAVID J. Malan: Perfekta. 314 00:13:45,170 --> 00:13:47,360 Kie vi povas aliri al aparta variablo. 315 00:13:47,360 --> 00:13:50,400 Kaj ĝenerale, la regulo de thumb ĝis nun estis ke la medio de iu 316 00:13:50,400 --> 00:13:55,860 variablo estas difinita de la plej freŝa krispa krampoj, ke vi vidis. 317 00:13:55,860 --> 00:14:02,010 Kaj tiel en tiu kazo, se mi faris la eraron de deklarante n sur linio 22, 318 00:14:02,010 --> 00:14:03,010 tiun linion laborus. 319 00:14:03,010 --> 00:14:10,990 Mi ricevas int, kaj mi metis ĝin en tiun variablon n en linio 22. 320 00:14:10,990 --> 00:14:16,900 Sed kion linio de kodo nun ne havas ideon kion mi parolas? 321 00:14:16,900 --> 00:14:22,650 Do 25, kaj ĝi rezultas 24, siavice, ĉar en ĉi tiu kazo, ĝi falas ekstere 322 00:14:22,650 --> 00:14:23,610 de la frizita krampoj. 323 00:14:23,610 --> 00:14:27,280 Do nur iom da ĝeno sed tre facile solvita per simple deklarante 324 00:14:27,280 --> 00:14:30,140 la variablo ekstere de la funkcio mem. 325 00:14:30,140 --> 00:14:32,600 >> Nun ni vidos poste hodiaŭ, vi povas iri unu paŝon. 326 00:14:32,600 --> 00:14:34,860 Kaj vi povis saltigi iom mallaborema - 327 00:14:34,860 --> 00:14:37,320 kaj ĉi tiu estas ne al esti rekomendita, ĝenerale - 328 00:14:37,320 --> 00:14:42,260 sed vi povis saltigi mallaborema kaj metis variablo sume, por tiel diri, ne 329 00:14:42,260 --> 00:14:46,670 ene de funkcio, ne interne de ciklo, sed en la dosieron mem, ekstere 330 00:14:46,670 --> 00:14:49,600 de ĉiuj funkcioj vi skribis, kiel mi faris tie sur linio 15. 331 00:14:49,600 --> 00:14:51,160 Sed ĉi tiu estas ĝenerale malaprobita. 332 00:14:51,160 --> 00:14:55,680 Sed realigi ĉi estas solvaĵo foje al aliaj problemoj, kiel ni instruos vin 333 00:14:55,680 --> 00:14:56,620 eventuale vidi. 334 00:14:56,620 --> 00:14:58,130 Do nuntempe, ni lasos ĝin kiel ĉi tio. 335 00:14:58,130 --> 00:15:01,030 Sed ni vidu se ni povas reverki ĉi nur por komenci esprimi al ni 336 00:15:01,030 --> 00:15:01,990 iom malsame. 337 00:15:01,990 --> 00:15:05,330 >> Do ĉi tiu programo, nur por esti klara, estas positive1. 338 00:15:05,330 --> 00:15:11,810 Lasu min ĉi tie kaj en mia fina fenestro fari positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Kompilas, okay. 340 00:15:12,740 --> 00:15:14,910 Mi tuj kuros positive1, batis Eniru. 341 00:15:14,910 --> 00:15:16,820 Mi postulas ke vi donu al mi pozitiva entjero. 342 00:15:16,820 --> 00:15:18,260 Mi diros -1. 343 00:15:18,260 --> 00:15:18,910 Tio ne funkcios. 344 00:15:18,910 --> 00:15:22,150 0, 99, kiu ŝajnas funkcii. 345 00:15:22,150 --> 00:15:23,570 Eble ne la plej rigora provo. 346 00:15:23,570 --> 00:15:26,480 Sed almenaŭ ĝi estas bela prudento ĉeko ke ni estas sur la ĝusta vojo. 347 00:15:26,480 --> 00:15:29,240 Do nun mi antaŭeniri kaj malfermi versio du de ĉi. 348 00:15:29,240 --> 00:15:32,500 Kaj kio estas malsama jam? 349 00:15:32,500 --> 00:15:35,140 Ĝi altrudas la sama aĵo. 350 00:15:35,140 --> 00:15:40,660 Sed kio saltante kiel klare malsamaj tiu tempo? 351 00:15:40,660 --> 00:15:42,560 Yeah, do ĉi bool en verdo. 352 00:15:42,560 --> 00:15:45,980 Gedit estas emfazita en verdo ĉi ŝlosilvorto konata kiel bool, 353 00:15:45,980 --> 00:15:47,000 kiu estas datumtipo. 354 00:15:47,000 --> 00:15:51,080 Ĝi ne venos konstruita por ĉiuj versioj de C. Vi devas inkludi 355 00:15:51,080 --> 00:15:52,010 specifaj biblioteko. 356 00:15:52,010 --> 00:15:54,770 En nia kazo, mi inkludis la CS50 biblioteko por ke ni 357 00:15:54,770 --> 00:15:56,460 havas aliron al bool. 358 00:15:56,460 --> 00:15:59,810 Sed en linio 18, ni ŝajnas havi Bulea valoro ĉi tie nomas dankemaj. 359 00:15:59,810 --> 00:16:01,040 Do mi povus esti nomata ĉi ion ajn. 360 00:16:01,040 --> 00:16:04,500 Sed mi nomis ĝin dankema nur por ia transdoni iun semantikan signifon. 361 00:16:04,500 --> 00:16:07,930 Do komence en linio 18, mi ŝajne ne danka ĉar la 362 00:16:07,930 --> 00:16:12,150 Bulea valoro dankema estas inicializado al falsa en linio 18. 363 00:16:12,150 --> 00:16:16,890 Kaj tiam ĝi ŝajnas kion mi faris tie en linioj 21 tra 23 estas mi ĵus 364 00:16:16,890 --> 00:16:18,610 speco de reskribita mia logiko. 365 00:16:18,610 --> 00:16:21,020 Do ne funkcie malsama. 366 00:16:21,020 --> 00:16:26,940 Sed en linio 22 nun, mi kontrolu se la int la uzanto havigis estas pli granda ol 367 00:16:26,940 --> 00:16:31,120 0, tiam mi simple ŝanĝi la valoron de dankema al vera. 368 00:16:31,120 --> 00:16:32,290 Kaj kial mi faru tion? 369 00:16:32,290 --> 00:16:35,600 Ĉar en linio 25, ŝajne, mi iros por kontroli kondiĉo. 370 00:16:35,600 --> 00:16:39,380 Ĉu ĉi tiu buklo dum dankema estas falsaj. 371 00:16:39,380 --> 00:16:43,610 >> Do mi proponas tion kiel alternativo al la versio ĉar ĝi estas almenaŭ 372 00:16:43,610 --> 00:16:45,130 iom pli intuicia, eble. 373 00:16:45,130 --> 00:16:46,900 Ĝi estas iom pli bazite en la angla. 374 00:16:46,900 --> 00:16:51,710 Do faru la sekvajn dum vi estas ne dankema aŭ dum dankema estas falsaj. 375 00:16:51,710 --> 00:16:55,890 Kaj ĉi tiu tempo, tro, mi ŝajne ne gravas memori kion la uzanto tajpas 376 00:16:55,890 --> 00:16:57,730 en ĉar avizo ne estas variablo n. 377 00:16:57,730 --> 00:16:58,650 Do fakte, mi - 378 00:16:58,650 --> 00:17:00,080 iom blanka kuŝas tie. 379 00:17:00,080 --> 00:17:02,770 Funkcie, la programo estas iom malsamaj iam ni atingos la fundon de 380 00:17:02,770 --> 00:17:04,819 ĉar mi ne memoras kio n estas. 381 00:17:04,819 --> 00:17:09,579 Sed mi volis pruvi ĉi tie ankaŭ, ke eĉ se ni vidis GetInt kaj 382 00:17:09,579 --> 00:17:13,920 GetString uzitaj sur la dekstra flanko de egala signo tiel malproksime por ke 383 00:17:13,920 --> 00:17:17,160 ni memoru la valoro, teknike, tio ne estas strikte necesaj. 384 00:17:17,160 --> 00:17:20,950 Se ial ajn vi simple ne deziras savi la valoro, vi nur volas 385 00:17:20,950 --> 00:17:25,710 por kontroli la valoron, rimarki ke ni povas simple skribi ĉi tiu kiel GetInt malfermita 386 00:17:25,710 --> 00:17:27,000 paren, proksime paren. 387 00:17:27,000 --> 00:17:30,460 Tiu funkcio tuj resendas valoron, kiel ni estis dirante. 388 00:17:30,460 --> 00:17:32,010 Ĝi tuj donu vin al int. 389 00:17:32,010 --> 00:17:36,450 Kaj do se vi mense pensas pri ĉi okazas, kiam mi tajpas en 99, GetInt 390 00:17:36,450 --> 00:17:38,160 redonas la numeron 99. 391 00:17:38,160 --> 00:17:41,330 Kaj tiel koncepte ĝi estas kvazaŭ mia kodo estis fakte ĉi. 392 00:17:41,330 --> 00:17:45,880 Do, se 99 estas ja granda ol 0, tiam dankema iĝas vera. 393 00:17:45,880 --> 00:17:50,420 Tiam linio 25 rimarkas ooh, ni faris ĉar mi estas nun dankemaj. 394 00:17:50,420 --> 00:17:54,590 Kaj en linio 26, ni simple diri, dank al la pozitiva entjero, kio ajn ĝi 395 00:17:54,590 --> 00:17:55,710 okazis esti. 396 00:17:55,710 --> 00:17:58,900 >> Nun ni faru malgravaj sintaksa sukero tie, por tiel diri. 397 00:17:58,900 --> 00:18:02,990 Ni vidu se ni povas purigi ĉi tiun linion 25 kun ĉi tiu tria kaj lasta varianco 398 00:18:02,990 --> 00:18:04,640 en positive3. 399 00:18:04,640 --> 00:18:08,250 Do rimarki la sola diferenco nun estas kion linio de kodo? 400 00:18:11,930 --> 00:18:13,260 Yeah, do 25. 401 00:18:13,260 --> 00:18:15,520 Kaj ni ne vere vidis tiun atuton nur ankoraŭ. 402 00:18:15,520 --> 00:18:19,510 Sed ni vidis la ekkrio punkto lundon, kiu signifas kion? 403 00:18:19,510 --> 00:18:20,970 Do ne, aŭ nego. 404 00:18:20,970 --> 00:18:23,460 Do prenu Bulea valoro kaj klaki ĝian valoron. 405 00:18:23,460 --> 00:18:24,390 Vera igas falsa. 406 00:18:24,390 --> 00:18:25,500 Falsa iĝas vera. 407 00:18:25,500 --> 00:18:28,910 Do ĉi, mi proponas, estas eĉ iom pli intuicia de maniero de 408 00:18:28,910 --> 00:18:32,200 skribi la kodon cxar mi ankoraŭ pravalorizi dankis falsaj. 409 00:18:32,200 --> 00:18:33,530 Mi ankoraŭ faras la sekvajn. 410 00:18:33,530 --> 00:18:35,700 Mi fiksis dankis vera kiam la tempo venas. 411 00:18:35,700 --> 00:18:40,690 Sed nun vi povas vere nur traduki tiun kodon parole maldekstre dekstren, 412 00:18:40,690 --> 00:18:42,550 dum ne dankemaj. 413 00:18:42,550 --> 00:18:46,170 Ĉar bang, aŭ ekkrion punkto, signifas la nocio de ne, do dum 414 00:18:46,170 --> 00:18:47,010 ne dankemaj. 415 00:18:47,010 --> 00:18:49,740 >> Do denove, ni ne enkondukis novajn konceptojn per si mem. 416 00:18:49,740 --> 00:18:53,230 Ni jam parolis pri Booleans reen kiam ni ludis kun Scratch. 417 00:18:53,230 --> 00:18:55,690 Sed realigi nun ni povas simple komenci skribi nian kodo 418 00:18:55,690 --> 00:18:56,550 multaj diversaj manieroj. 419 00:18:56,550 --> 00:19:00,010 Do precipe en pset1, se vi estas ia luktas por kalkuli la vojon al 420 00:19:00,010 --> 00:19:03,400 skribi iun programon, malakordo vi estas en sorto ĉar tuj estos neniu 421 00:19:03,400 --> 00:19:05,780 numeron de solvoj kiuj povas okazi sur. 422 00:19:05,780 --> 00:19:09,850 Ekzemple, ĉi tiu estas nur tri por eĉ la plej simpla de programoj. 423 00:19:09,850 --> 00:19:10,180 Bone. 424 00:19:10,180 --> 00:19:13,860 Kaj nun memori lundon, ni lasis en tiu ĉi noto kun reveno valoroj. 425 00:19:13,860 --> 00:19:18,280 Do por la unua fojo, ni skribis programon kiu ne simple devas ĉefa, 426 00:19:18,280 --> 00:19:22,240 ĝi ankaŭ havas sian propran funkcion kiu mi skribis ĉi tie. 427 00:19:22,240 --> 00:19:26,640 Do en linio 31 tra 34, mi implementado kubo funkcio. 428 00:19:26,640 --> 00:19:27,800 Ne kompleksa. 429 00:19:27,800 --> 00:19:29,830 Estas nur fojojn fojojn, en ĉi tiu kazo. 430 00:19:29,830 --> 00:19:34,920 Sed kio estas grava pri tio estas ke mi ferios enigo en la formo de a kaj 431 00:19:34,920 --> 00:19:38,910 Mi revenis eligo en la formo de fojojn fojojn. 432 00:19:38,910 --> 00:19:43,940 >> Do nun mi havas la kapablon, multe kiel mi kutimis kun printf sola, nomi 433 00:19:43,940 --> 00:19:47,120 ĉi funkcio per nomante la kubo funkcio. 434 00:19:47,120 --> 00:19:49,470 Kaj la kubo funkcio prenas iujn enigo. 435 00:19:49,470 --> 00:19:52,030 Kaj la kubo funkcio redonas iuj eligo. 436 00:19:52,030 --> 00:19:56,660 Kaj tiel per kontrasto, printf ĵus faris ion. 437 00:19:56,660 --> 00:19:59,490 Ĝi ne revenis ion ke ni zorgis pri - kvankam, kiel 438 00:19:59,490 --> 00:20:00,820 flanken, jes redonas valoron. 439 00:20:00,820 --> 00:20:02,650 Vi nur ĝenerale ignoras ĝin. 440 00:20:02,650 --> 00:20:04,000 Printf ĵus faris ion. 441 00:20:04,000 --> 00:20:06,220 Ĝi havis kromefikon videbligi al la ekrano. 442 00:20:06,220 --> 00:20:09,480 Kontraŭe tie, ni havas la kubo funkcio, kiu 443 00:20:09,480 --> 00:20:11,400 fakte revenas ion. 444 00:20:11,400 --> 00:20:12,960 >> Do ĉi tiu estas ĝenerale - 445 00:20:12,960 --> 00:20:15,260 por tiuj, kiuj konas tiun, estas sufiĉe simpla ideo. 446 00:20:15,260 --> 00:20:18,460 Sed por tiuj malpli familiara kun tiu ideo de pasi en eniroj kaj atingi 447 00:20:18,460 --> 00:20:21,700 reen eligoj, ni provu simple io super simpla. 448 00:20:21,700 --> 00:20:25,180 Estas iu komforta leviĝas sur la scenejo mallonge? 449 00:20:25,180 --> 00:20:27,460 Vi devas esti komforta kun ĉambro sur vi, ankaŭ. 450 00:20:27,460 --> 00:20:27,640 Yeah. 451 00:20:27,640 --> 00:20:28,610 Konsentite, kio estas via nomo? 452 00:20:28,610 --> 00:20:29,020 Ken: Ken. 453 00:20:29,020 --> 00:20:29,420 DAVID J. Malan: Ken. 454 00:20:29,420 --> 00:20:29,810 Bone, Ken. 455 00:20:29,810 --> 00:20:31,060 Venu supren. 456 00:20:31,060 --> 00:20:34,660 Do Ken tuj esti funkcio de varoj tie. 457 00:20:34,660 --> 00:20:35,760 Kaj ni faru tion. 458 00:20:35,760 --> 00:20:38,790 Ni lasu iom kaprico. 459 00:20:38,790 --> 00:20:39,770 Nice to meet you. 460 00:20:39,770 --> 00:20:41,010 Bonvenon centro scenejo. 461 00:20:41,010 --> 00:20:41,980 Bone. 462 00:20:41,980 --> 00:20:45,590 Ni batis tiun butonon tie. 463 00:20:45,590 --> 00:20:46,420 Bone. 464 00:20:46,420 --> 00:20:49,490 Do jen vi havas modernan chalkboard. 465 00:20:49,490 --> 00:20:53,050 Kaj kion mi estas la ĉefa funkcio, ekzemple. 466 00:20:53,050 --> 00:20:55,990 Kaj mi ne havas iPad en mia mano. 467 00:20:55,990 --> 00:20:59,000 Mi ne vere memoras kiel - nu, efektive, ne povas diri tion. 468 00:20:59,000 --> 00:21:02,200 Mi ne vere havas bonajn manskribo. 469 00:21:02,200 --> 00:21:05,260 Kaj tiel do, mi volas ke vi presi iun sur la ekrano por mi. 470 00:21:05,260 --> 00:21:07,470 >> Do mi estis la ĉefa programo. 471 00:21:07,470 --> 00:21:15,060 Kaj mi iras al vi tion diras de skribi en mia kokido nulo kaj 472 00:21:15,060 --> 00:21:16,600 tiam pasi vi enigo. 473 00:21:16,600 --> 00:21:20,000 Do kiel stulta kvankam tiu ekzerco estas, la nocio de funkcioj kaj vokas al 474 00:21:20,000 --> 00:21:22,260 funkcio kaj revenante funkcio vere bolas al tiu. 475 00:21:22,260 --> 00:21:23,120 Mi estas ĉefa. 476 00:21:23,120 --> 00:21:26,270 Mi ĵus skribis printf ("iu") sur la ekrano. 477 00:21:26,270 --> 00:21:27,470 Mi kuras ĉi tiu programo. 478 00:21:27,470 --> 00:21:30,900 Kaj tuj kiam printf gets nomis lin prenas unu argumenton - aŭ unu parametro, 479 00:21:30,900 --> 00:21:31,660 kelkfoje - 480 00:21:31,660 --> 00:21:32,780 inter duoblaj citiloj. 481 00:21:32,780 --> 00:21:33,960 Jen estas tiu argumento. 482 00:21:33,960 --> 00:21:35,740 Mi pasante ĝin al Ken. 483 00:21:35,740 --> 00:21:39,390 Nun li estas nigra skatolo skribita iu nombro da jaroj, ke ŝajne 484 00:21:39,390 --> 00:21:41,070 nur scias presi tion en la ekrano. 485 00:21:41,070 --> 00:21:42,320 >> Do, ekzekuti. 486 00:21:48,842 --> 00:21:49,900 Tio ne estas malbona. 487 00:21:49,900 --> 00:21:50,890 Do, tre bona. 488 00:21:50,890 --> 00:21:52,900 Do nun Ken realigas ekzekuti. 489 00:21:52,900 --> 00:21:55,810 Ĉu li bezonas transdoni al mi ion reen? 490 00:21:55,810 --> 00:21:57,240 Do ne ke ni vidis ĝis nun. 491 00:21:57,240 --> 00:21:59,230 Denove, printf ne vere redonas nombron. 492 00:21:59,230 --> 00:22:01,640 Sed ni tuj ignori ke por nun ĉar ni neniam uzis ĝin. 493 00:22:01,640 --> 00:22:03,400 Do jen ĝi por Ken. 494 00:22:03,400 --> 00:22:06,650 Kaj tial nun ĉefa revenas por ekzekuti - 495 00:22:06,650 --> 00:22:09,630 ĉefa transprenas la kontrolon de la programo denove ĉar tiu linio de kodo, 496 00:22:09,630 --> 00:22:11,010 printf, estas farita ekzekuti. 497 00:22:11,010 --> 00:22:13,890 Kaj ni iru sur la vojon ekzekuti ajn aliaj linioj estas tie. 498 00:22:13,890 --> 00:22:14,130 >> Bone. 499 00:22:14,130 --> 00:22:17,080 Do nun ni provas iomete malsaman ekzemplon. 500 00:22:17,080 --> 00:22:22,430 Kaj ĉi tiu fojo ĉi tie, ni unue liberigi la ekrano tie. 501 00:22:22,430 --> 00:22:24,670 Kaj ĉi tiu tempo, ni faros la cubing funkcio. 502 00:22:24,670 --> 00:22:27,350 Sed ĉi tiun fojon, mi atendas eliro valoro. 503 00:22:27,350 --> 00:22:28,630 Do ni faru ĉi. 504 00:22:28,630 --> 00:22:35,680 Do nun mi havas linion de kodo kiu diras x = kubo (x). 505 00:22:35,680 --> 00:22:36,930 Do efektive let's - 506 00:22:41,450 --> 00:22:43,940 la linio de kodo, revokon, aspektas kiel ĉi tio. 507 00:22:43,940 --> 00:22:45,960 x = kubo (x). 508 00:22:45,960 --> 00:22:48,100 Do kiel estas ĉi irante labori? 509 00:22:48,100 --> 00:22:50,820 Do ni iru antaŭen kaj doni al vi blankan ekranon denove. 510 00:22:50,820 --> 00:22:55,000 Kaj mi tuj skribos nun laŭ la valoro de x, kiu en ĉi tiu momento en 511 00:22:55,000 --> 00:23:01,080 tempo pasas al, ni diru, 2, teni ĝin simpla. 512 00:23:01,080 --> 00:23:04,890 Do mi skribis sur peco da papero la valoro de 2, 513 00:23:04,890 --> 00:23:06,100 kio estas mia valoro x. 514 00:23:06,100 --> 00:23:08,250 Mi transdonos ĝin al Ken. 515 00:23:08,250 --> 00:23:09,200 Ken: Mi nur skribos la respondon? 516 00:23:09,200 --> 00:23:12,660 DAVID J. Malan: Jes, ni nur skribos la respondon. 517 00:23:12,660 --> 00:23:13,030 Okay. 518 00:23:13,030 --> 00:23:16,280 Kaj nun li devas reveni al mi ion. 519 00:23:16,280 --> 00:23:17,560 Do - 520 00:23:17,560 --> 00:23:18,170 perfekta. 521 00:23:18,170 --> 00:23:18,840 Nice segue. 522 00:23:18,840 --> 00:23:21,970 >> Do nun li manoj min redoni la valoron de 8, en ĉi tiu kazo. 523 00:23:21,970 --> 00:23:23,220 Kaj kion mi faru per ĝi? 524 00:23:23,220 --> 00:23:26,130 Nu, fakte, ni vidos. 525 00:23:26,130 --> 00:23:26,640 Get this right. 526 00:23:26,640 --> 00:23:27,880 Kion mi faros per gxi? 527 00:23:27,880 --> 00:23:31,900 Nun mi iros por preni tiun valoron kaj reale stoki ĝin en tiuj 528 00:23:31,900 --> 00:23:33,400 sama bitoj en memoro. 529 00:23:33,400 --> 00:23:35,030 Sed avizo, mi estas ia luktas ĉi tie. 530 00:23:35,030 --> 00:23:38,280 Mi estas iom konfuzita pro kie mi fakte skribas la valoron de x? 531 00:23:38,280 --> 00:23:41,840 Ĉar kion mi ĵus faris estas fizike mano Ken peco de papero 532 00:23:41,840 --> 00:23:44,400 kiu havis la valoron 2, kiu estis x. 533 00:23:44,400 --> 00:23:46,300 Kaj efektive, jen precize kio okazas. 534 00:23:46,300 --> 00:23:50,100 Do rezultas ke kiam vi nomas funkcio, kaj pasas en argumento 535 00:23:50,100 --> 00:23:54,130 kiel "saluton mondo" aŭ sekvinberoj en argumenton kiel 2, ĝenerale, vi estas 536 00:23:54,130 --> 00:23:56,720 pasante en kopio de tiu argumento. 537 00:23:56,720 --> 00:24:01,020 Kaj tiel same kiel mi notis la numeron 2 tie kaj enmanigis ĝin al Ken; ke devas 538 00:24:01,020 --> 00:24:04,760 signifas ke mi ankoraŭ havas kopion de la valoro 2 ie. 539 00:24:04,760 --> 00:24:08,140 Ĉar ja, nun ke mi alvenas reen la valoro 8, mi devas iri reen en 540 00:24:08,140 --> 00:24:12,010 RAM kaj reale noti 8 kie mi iam havis la numero 2. 541 00:24:12,010 --> 00:24:15,720 >> Do vide memori tiu nocio de pasi en laŭvorte 542 00:24:15,720 --> 00:24:16,730 kopio de la valoro. 543 00:24:16,730 --> 00:24:19,570 Ken faras lian aferon, manoj min io - en ĉi tiu kazo, 544 00:24:19,570 --> 00:24:20,820 valoro kiel 8. 545 00:24:20,820 --> 00:24:22,660 Kaj tiam mi devas fari ion kun tiu valoro, se mi 546 00:24:22,660 --> 00:24:24,880 volas konservi ĝin ĉirkaŭe. 547 00:24:24,880 --> 00:24:29,470 Do ĉio ĉi estos tro familiara antaux longe. 548 00:24:29,470 --> 00:24:33,082 Dankon tiom por ĉi tiu demo tie, Ken. 549 00:24:33,082 --> 00:24:34,820 Bone. 550 00:24:34,820 --> 00:24:36,720 Tre bone farita. 551 00:24:36,720 --> 00:24:40,610 Do ni vidu kiel tiu fine rilatas al kelkaj el la funkcio 552 00:24:40,610 --> 00:24:42,270 nomante ke ni estis ĉi tie. 553 00:24:42,270 --> 00:24:47,610 Do lasu min antaŭeniri kaj alporti nin al la cubing ekzemple ĉi tie. 554 00:24:47,610 --> 00:24:53,080 Kaj rimarki ke se ni volas vere komenci porti ĉi tiun for, ni iras 555 00:24:53,080 --> 00:24:57,050 por havi memoru la fakto ke la nombro x ke tio esti pasis en 556 00:24:57,050 --> 00:25:01,390 tie estas malsama de tio, kio efektive aprobotaj en la funkcio. 557 00:25:01,390 --> 00:25:03,940 Do denove, ĉi preteriris kopion tuj fariĝis sufiĉe 558 00:25:03,940 --> 00:25:05,620 germane en nur momento. 559 00:25:05,620 --> 00:25:09,320 >> Do ni rigardu aĵo kiu ne sufiĉe laboras dekstra ankoraŭ. 560 00:25:09,320 --> 00:25:11,790 Mi tuj iros antaŭen kaj malfermi tria kalesxo ekzemplo, kiu 561 00:25:11,790 --> 00:25:13,560 estas misa por naturo. 562 00:25:13,560 --> 00:25:18,070 Kaj ĝi estas nomata buggy3, kaj implementa interŝanĝi funkcio. 563 00:25:18,070 --> 00:25:23,500 Do jen ni havas ĉefan funkcion kiu x kaj y arbitre inicializado al 564 00:25:23,500 --> 00:25:24,720 1 kaj 2, respektive. 565 00:25:24,720 --> 00:25:27,590 Ni povus uzi GetInt, sed ni nur bezonas simplan ekzercon. 566 00:25:27,590 --> 00:25:29,680 Do ĝi estas malmola kodita kiel 1 kaj 2. 567 00:25:29,680 --> 00:25:35,330 En linioj 21 kaj 22, oni ŝajne presi x kaj y, unu po linio. 568 00:25:35,330 --> 00:25:39,620 Tiam, sur linio 23, mi asertas mi interŝanĝi tiujn valorojn, pentras, pentras, punkto. 569 00:25:39,620 --> 00:25:43,030 Mi ŝajne nomas funkcio en linio 24 nomita interŝanĝa 570 00:25:43,030 --> 00:25:44,000 kiu prenas du argumentojn. 571 00:25:44,000 --> 00:25:46,430 Estas tute legit por funkcioj preni du argumentojn. 572 00:25:46,430 --> 00:25:48,220 Ni vidis printf fari ĝin jam. 573 00:25:48,220 --> 00:25:50,370 Do interŝanĝa ŝajne prenas x kaj y. 574 00:25:50,370 --> 00:25:53,010 Kaj kiel ĝia nomo sugestas, mi esperas ke ĝi tuj 575 00:25:53,010 --> 00:25:54,320 interŝanĝi tiujn du valoroj. 576 00:25:54,320 --> 00:25:57,560 Tial mi diras on line 25-interŝanĝis. 577 00:25:57,560 --> 00:26:01,570 Kaj mi represi x kaj y sub la supozo ke 578 00:26:01,570 --> 00:26:02,830 ili jam vere estis svopitaj. 579 00:26:02,830 --> 00:26:04,370 Sed se mi vere kuras ĉi programo - 580 00:26:04,370 --> 00:26:06,060 lasu min malfermi fina fenestro. 581 00:26:06,060 --> 00:26:07,750 Lasu min fari buggy3. 582 00:26:07,750 --> 00:26:09,970 Kiel la nomo sugestas, ĉi tio ne tuj finos bone. 583 00:26:09,970 --> 00:26:14,690 Ĉar kiam mi batis Enter, rimarki ke x estas 1. 584 00:26:14,690 --> 00:26:15,720 y estas 2. 585 00:26:15,720 --> 00:26:19,160 Kaj tamen ĉe la fino de la programo, ili estas ankoraŭ, fakte, la sama. 586 00:26:19,160 --> 00:26:22,760 >> Do surbaze de la manifestacio gxuste nun kun Ken, kio efektive okazas? 587 00:26:22,760 --> 00:26:24,660 Nu, ni plonĝi en tiun interŝanĝa funkcio. 588 00:26:24,660 --> 00:26:25,800 Estas super mallonga. 589 00:26:25,800 --> 00:26:28,020 Estas nur malmultaj linioj de kodo longa. 590 00:26:28,020 --> 00:26:32,810 Sed kio estas la fundamenta problemo bazita sur la simpla historio rakontis 591 00:26:32,810 --> 00:26:34,270 tien kun Ken? 592 00:26:34,270 --> 00:26:36,115 Kial interŝanĝa rompita? 593 00:26:36,115 --> 00:26:37,365 [Inaudible] 594 00:26:39,840 --> 00:26:40,460 Ekzakte. 595 00:26:40,460 --> 00:26:43,610 Do ni provizon al kopio, ne la variablo mem. 596 00:26:43,610 --> 00:26:46,810 En aliaj vortoj, interŝanĝa ŝajne prenas du argumentojn, la int. 597 00:26:46,810 --> 00:26:49,370 Kaj ĝi estas arbitre nomas a kaj b. 598 00:26:49,370 --> 00:26:54,430 Kaj ĝis ĉi tie, mi pasis en x kaj y, kiuj estas respektive 1 kaj 2. 599 00:26:54,430 --> 00:26:56,580 Sed mi ne laŭvorte pasante en x. 600 00:26:56,580 --> 00:26:58,410 Mi ne laŭvorte pasante en y. 601 00:26:58,410 --> 00:27:01,230 Mi pasante kopion de x kaj kopion de y. 602 00:27:01,230 --> 00:27:05,180 Estas kiel preskaŭ kvazaŭ vi kopiis kaj pasted en interŝanĝi la valorojn kiuj 603 00:27:05,180 --> 00:27:07,440 vi volas ke ĝi reale manipuli. 604 00:27:07,440 --> 00:27:11,970 Do se tiu estas la kazo, kiam mi, la programo, starti ekzekuti 605 00:27:11,970 --> 00:27:14,140 linio 35, tiam 36 - 606 00:27:14,140 --> 00:27:17,740 kiam mi reiros al la linio 37, je ĉi tiu punkto en la historio, kio estas la valoro de? 607 00:27:20,740 --> 00:27:24,850 Je ĉi tiu punkto en la historio, linio 37, kio estas la valoro de ĉe ĉi tiu punkto? 608 00:27:24,850 --> 00:27:25,980 Do ĝi devus simple esti 1. 609 00:27:25,980 --> 00:27:26,170 Ĝuste? 610 00:27:26,170 --> 00:27:29,100 Ĉar x estis aprobita en la unua argumento. 611 00:27:29,100 --> 00:27:33,150 Kaj ĉi tiu funkcio nur arbitre alvokas lia unua argumento, al. 612 00:27:33,150 --> 00:27:35,130 Simile estas y, la dua argumento. 613 00:27:35,130 --> 00:27:37,930 Kaj ĝi estas nur arbitre nomi la dua argumento b. 614 00:27:37,930 --> 00:27:40,510 >> Nun ĉi dicotomía fakte sufiĉe simple klarigita. 615 00:27:40,510 --> 00:27:40,880 Pensu pri tio. 616 00:27:40,880 --> 00:27:42,980 Neniu el ni renkontis la persono kiu skribis printf. 617 00:27:42,980 --> 00:27:49,880 Do certe, li aŭ ŝi havas neniun ideon pri kio nia variabloj 30 jaroj poste iras 618 00:27:49,880 --> 00:27:50,710 esti nomata. 619 00:27:50,710 --> 00:27:55,110 Do devas esti distingo inter tio, kion vi nomas variabloj en 620 00:27:55,110 --> 00:27:59,960 funkcioj vi skribas kaj kion vi nomas variabloj en funkcioj vi estas 621 00:27:59,960 --> 00:28:01,770 nomante aŭ uzante. 622 00:28:01,770 --> 00:28:05,120 Do alivorte, mi skribis mian variabloj kiel x kaj y. 623 00:28:05,120 --> 00:28:08,060 Sed se iu alia estis skribinta la interŝanĝa funkcio, li aŭ ŝi certe 624 00:28:08,060 --> 00:28:10,480 ne scias, kion mia variabloj tuj nomos. 625 00:28:10,480 --> 00:28:13,850 Do rimarkas ke ĉi tiu estas kial vi havas ĉi duvarianteco de nomoj. 626 00:28:13,850 --> 00:28:16,800 Teknike, mi povus fari tion per hazardo. 627 00:28:16,800 --> 00:28:19,750 Sed ili ankoraŭ pasis en kiel kopioj. 628 00:28:19,750 --> 00:28:22,940 Estus nur esti pura koincido estetike se tiu persono kiu skribis 629 00:28:22,940 --> 00:28:25,590 interŝanĝa estis uzintaj la samajn nomojn. 630 00:28:25,590 --> 00:28:25,930 >> Bone. 631 00:28:25,930 --> 00:28:29,010 Do je ĉi tiu punkto en la historio, linio 37, a estas 1. 632 00:28:29,010 --> 00:28:30,410 b estas 2. 633 00:28:30,410 --> 00:28:32,040 Kaj nun mi procedi por interŝanĝi ilin. 634 00:28:32,040 --> 00:28:34,730 Nu unue, lasu min reale fari ĉi multe pli simple. 635 00:28:34,730 --> 00:28:36,500 Mi ne scias, kion tiuj tri linioj de kodo estis farante. 636 00:28:36,500 --> 00:28:37,370 Lasu min nur faru tion. 637 00:28:37,370 --> 00:28:38,850 b ricevas. 638 00:28:38,850 --> 00:28:40,170 oni ricevas b. 639 00:28:40,170 --> 00:28:41,450 Faris. 640 00:28:41,450 --> 00:28:43,540 Kial estas ĉi rompita, logike? 641 00:28:46,980 --> 00:28:48,590 Estas speco de la intuicia afero, ĉu ne? 642 00:28:48,590 --> 00:28:50,640 Do oni revenas b. 643 00:28:50,640 --> 00:28:52,450 Kaj b iĝas. 644 00:28:52,450 --> 00:28:55,410 Sed la problemo estas ke tuj kiam linio 37 ekzekutas, kio estas la 645 00:28:55,410 --> 00:28:58,170 valoro de a kaj b? 646 00:28:58,170 --> 00:28:59,070 La sama, 1. 647 00:28:59,070 --> 00:29:03,460 Ĉar vi clobbered, por tiel diri, vi jam ŝanĝis b egali al. 648 00:29:03,460 --> 00:29:06,000 Do iam linio 37 estas ekzekutita, jen granda. 649 00:29:06,000 --> 00:29:09,940 Nun vi havas du kopiojn de la numero 1 ene de ĉi tiu funkcio. 650 00:29:09,940 --> 00:29:14,720 Tial, kiam vi diras en linio 38, ricevas b, nu, vi estas speco de ŝraŭbitaj. 651 00:29:14,720 --> 00:29:17,370 Ĉar vi ĵus atribui 1 al 1. 652 00:29:17,370 --> 00:29:20,400 Vi ia perdis la valoron vi zorgis pri. 653 00:29:20,400 --> 00:29:22,910 >> Do, en la originala versio de ĉi tiu, rimarkos, kion mi faris. 654 00:29:22,910 --> 00:29:26,620 Mi anstataŭ havis trian linion de kodo kiu aspektis kiel ĉi tio. 655 00:29:26,620 --> 00:29:29,910 Mi deklaras portempa variablo - tmp estas tre komuna nomo 656 00:29:29,910 --> 00:29:31,240 por portempa variablo. 657 00:29:31,240 --> 00:29:34,280 Ĝi estas int ĉar ĝi havas por kongrui kion mi volas fari kopion de. 658 00:29:34,280 --> 00:29:39,720 Mi stoki kopion de interne tmp. Do iam linio 37 estis ekzekutitaj, 659 00:29:39,720 --> 00:29:41,390 la valoro de a estas - 660 00:29:41,390 --> 00:29:42,970 rapida prudento kontroli - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 La valoro de b estas 2. 663 00:29:45,780 --> 00:29:48,470 Kaj la valoro de tmp estas ankaŭ 1. 664 00:29:48,470 --> 00:29:51,470 Do nun mi ekzekuti linion 38. 665 00:29:51,470 --> 00:29:57,180 Do iam linio 38 ekzekutas, oni prenas la valoro de b. 666 00:29:57,180 --> 00:29:58,510 Kaj b estis 2. 667 00:29:58,510 --> 00:30:00,500 Tial nun estas 2. 668 00:30:00,500 --> 00:30:03,110 Do je ĉi tiu punkto en la rakonto, estas 2, b estas 2, 669 00:30:03,110 --> 00:30:05,130 kaj tmp estas 1. 670 00:30:05,130 --> 00:30:09,330 Do nun logike, oni povas simple plop tmp valoro al b. 671 00:30:09,330 --> 00:30:10,690 Kaj ni faris. 672 00:30:10,690 --> 00:30:12,170 >> Do ni solvis tiun problemon. 673 00:30:12,170 --> 00:30:16,040 Bedaŭrinde, kiam mi kuros ĉi programo en ĉi tiu formo, ĝi ne vere interŝanĝi 674 00:30:16,040 --> 00:30:17,700 neniu valoroj. 675 00:30:17,700 --> 00:30:18,950 Sed esti klaraj, kial? 676 00:30:23,420 --> 00:30:26,310 Mi riparis la logika problemo de nur antaŭ momento. 677 00:30:26,310 --> 00:30:31,150 Sed denove, se mi kuros ĉi programo, x kaj y restas neŝanĝita por la fino de 678 00:30:31,150 --> 00:30:33,834 la programo ekzekuto. 679 00:30:33,834 --> 00:30:34,760 [Inaudible] 680 00:30:34,760 --> 00:30:36,030 DAVID J. Malan: Do ni ne revenis nenion. 681 00:30:36,030 --> 00:30:36,960 Do tio estas vera. 682 00:30:36,960 --> 00:30:39,880 Sed ĝi rezultas ekzistas iom da problemo ĉi tie, ĉar ĝis nun, la 683 00:30:39,880 --> 00:30:42,460 sola afero ni povas reveni estas unu afero. 684 00:30:42,460 --> 00:30:46,540 Kaj jen estas limigo de C. Oni povas nur denove vere valoro, 685 00:30:46,540 --> 00:30:48,970 en kies kazo, mi estas ia kaptita ĉi tie 686 00:30:48,970 --> 00:30:51,805 ĉar mi povis reveni al la nova valoro de x aŭ mi povus redoni la 687 00:30:51,805 --> 00:30:53,160 nova valoro de y. 688 00:30:53,160 --> 00:30:54,330 Sed mi volas ambaŭ dorso. 689 00:30:54,330 --> 00:30:58,010 Do reveni ne la simpla solvo ĉi tie. 690 00:30:58,010 --> 00:30:59,770 Sed la problemo estas fundamente kial? 691 00:30:59,770 --> 00:31:03,270 Kion ni vere interŝanĝis? 692 00:31:03,270 --> 00:31:04,010 a kaj b. 693 00:31:04,010 --> 00:31:07,670 Sed a kaj b estas kopioj de x kaj y, kio signifas ke ni ĵus faris ĉion ĉi 694 00:31:07,670 --> 00:31:10,080 labori - ni simple pasigis kiel tri minutoj parolas la interŝanĝa 695 00:31:10,080 --> 00:31:11,680 funkcio kaj ĉiuj tri de ĉi tiuj variabloj. 696 00:31:11,680 --> 00:31:15,090 Kaj tio estas granda, perfekte ĝentila en izolado. 697 00:31:15,090 --> 00:31:20,230 Sed a kaj b estas medion nur estas en tiuj linioj tie. 698 00:31:20,230 --> 00:31:24,130 Do ĝuste kiel por ciklo, se vi rakontos entjero i interne de la por 699 00:31:24,130 --> 00:31:27,400 buklo - simile, se vi deklarante a kaj b ene de funkcio kiu 700 00:31:27,400 --> 00:31:30,550 vi skribis, ili estas nur valida interne de tiu funkcio. 701 00:31:30,550 --> 00:31:35,020 Kio signifas tiel frue kiel interŝanĝa estas farita ekzekuti kaj ni iros de linio 24 al 702 00:31:35,020 --> 00:31:38,380 linio 25, x kaj y ne estis ŝanĝita tute ne. 703 00:31:38,380 --> 00:31:42,580 Vi nur malŝparis tuta multan tempon interŝanĝi kopiojn de variabloj. 704 00:31:42,580 --> 00:31:46,490 >> Do rezultas ke la solvo al ĉi estas fakte ne-evidenta. 705 00:31:46,490 --> 00:31:49,210 Ne tute sufiĉa por reveni valoroj ĉar ni povas 706 00:31:49,210 --> 00:31:50,320 nur reveni unu valoro. 707 00:31:50,320 --> 00:31:53,370 Kaj mi vere volas interŝanĝi ambaŭ x kaj y en la sama tempo. 708 00:31:53,370 --> 00:31:55,020 Do ni tuj revenos al ĉi tio. 709 00:31:55,020 --> 00:31:58,770 Sed nuntempe, rimarkas ke la afero funde derivas de la fakto 710 00:31:58,770 --> 00:32:00,660 ke a kaj b estas kopioj. 711 00:32:00,660 --> 00:32:03,450 Kaj ili estas en lia propra medio. 712 00:32:03,450 --> 00:32:04,980 Nu, ni provu solvi ĉi iel. 713 00:32:04,980 --> 00:32:09,200 Lasu min reale rulumu reveni ĉi tien kaj malfermu, diru, kvara varianto 714 00:32:09,200 --> 00:32:11,170 de ĉi tio, buggy4. 715 00:32:11,170 --> 00:32:13,230 Kaj kio pri tio? 716 00:32:13,230 --> 00:32:16,690 Ĉi tiu estas simila sed pli simpla problemo por rigardi antaux ni preni ponardopiko ĉe 717 00:32:16,690 --> 00:32:17,530 solvi ĝin. 718 00:32:17,530 --> 00:32:19,440 Ĉi tiu programo estas nomita pliigo. 719 00:32:19,440 --> 00:32:24,320 Kaj ŝajne inicializa x entjero al 1 en linio 18. 720 00:32:24,320 --> 00:32:25,950 Mi tiam postuli x estas 1. 721 00:32:25,950 --> 00:32:28,020 Mi tiam aserto pliigante, pentras, pentras, punkto. 722 00:32:28,020 --> 00:32:29,460 Mi tiam nomita pliigo. 723 00:32:29,460 --> 00:32:33,480 Sed tiam en linioj 22 kaj 23 Mi asertas ĝi estas estinta incremented. 724 00:32:33,480 --> 00:32:37,780 Mi asertas x estas nun kion ajn ĝi estas, 2 supozeble. 725 00:32:37,780 --> 00:32:39,770 >> Sed tiu programo estas kalesxo. 726 00:32:39,770 --> 00:32:41,020 Kio estas la problemo? 727 00:32:43,450 --> 00:32:44,418 Yeah? 728 00:32:44,418 --> 00:32:45,668 [Inaudible] 729 00:32:49,260 --> 00:32:49,850 DAVID J. Malan: Ĝuste. 730 00:32:49,850 --> 00:32:52,430 Do x estis deklarita evidente on line 18. 731 00:32:52,430 --> 00:32:54,410 Tio estas ene ĉefa La frizita krampoj. 732 00:32:54,410 --> 00:32:58,470 Do la simpla respondo estas, ke, nu, x ekzistas tie. 733 00:32:58,470 --> 00:33:01,510 Ne ekzistas en linio 32. 734 00:33:01,510 --> 00:33:03,710 Do ĉi tiu programo fakte eĉ ne kompili. 735 00:33:03,710 --> 00:33:07,910 La tradukilo, kiam mi provas kompili tiun kodon, tuj krias al mi 736 00:33:07,910 --> 00:33:13,190 pri kelkaj nedeklarita ensalutilo aŭ ion pri tio. 737 00:33:13,190 --> 00:33:13,870 Fakte, ni provu. 738 00:33:13,870 --> 00:33:15,235 Ĉi tiu estas fari buggy4. 739 00:33:17,780 --> 00:33:18,190 Tie ĝi estas. 740 00:33:18,190 --> 00:33:22,030 Uzo de nedeklarita ensalutilo x en linio 32. 741 00:33:22,030 --> 00:33:25,700 Kaj efektive, ni estu pli eksplicita tie hodiaŭ, por ke ĉi tiu estas utila en 742 00:33:25,700 --> 00:33:27,140 oficejo horoj kaj hejme. 743 00:33:27,140 --> 00:33:29,000 Rimarku, ke ĝi estas iom cryptically skribita. 744 00:33:29,000 --> 00:33:31,560 Sed la fakto, ke Clang havas kriis al ni, dirante 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, estas fakte utila. 746 00:33:36,970 --> 00:33:41,970 Ĝi signifas ke la eraro estas ĉe linio 32 en karaktero pozicio kvin. 747 00:33:41,970 --> 00:33:44,670 Do unu, du, tri, kvar, kvin. 748 00:33:44,670 --> 00:33:46,640 Tio estas, fakte, kie la problemo estas. 749 00:33:46,640 --> 00:33:49,710 Kaj ankaŭ al memoru ĉe oficejo horoj kaj hejme, mi estas bonŝanca tie. 750 00:33:49,710 --> 00:33:50,740 Mi havas unu eraro. 751 00:33:50,740 --> 00:33:52,660 Ĝi tuj estos relative facile ripari. 752 00:33:52,660 --> 00:33:56,220 Sed se vi ricevas tutan ekranon plenan de blindiga erarmesaĝojn, denove, 753 00:33:56,220 --> 00:33:59,240 rimarkas ke la ĉefundan unu povus simple esti sintomática de 754 00:33:59,240 --> 00:34:00,320 la plejsupra aĵoj. 755 00:34:00,320 --> 00:34:03,560 Do ĉiam persekuti viajn erarojn de supre malsupren. 756 00:34:03,560 --> 00:34:06,720 Ĉar ne povus simple esti lekanto-ĉeno efekto kiu sugestas vin 757 00:34:06,720 --> 00:34:09,030 havi vojon pli problemoj ol vi vere faras. 758 00:34:09,030 --> 00:34:14,989 >> Do kiel ni povus ripari tion ĉi se mia celo estas pliigo x? 759 00:34:14,989 --> 00:34:15,370 Kio estas tio? 760 00:34:15,370 --> 00:34:15,620 Okay. 761 00:34:15,620 --> 00:34:16,679 Do ni povas fari x tutmonda. 762 00:34:16,679 --> 00:34:18,860 Ni prenu la fulmoklavo, ke Mi avertis pri pli frua. 763 00:34:18,860 --> 00:34:20,550 Sed heck, ni nur bezonas rapidan solvon. 764 00:34:20,550 --> 00:34:23,949 Do ni nur diros int x tien. 765 00:34:23,949 --> 00:34:25,600 Tio faras x tutmonda. 766 00:34:25,600 --> 00:34:28,460 Do nun ĉefa havas aliron al ĝi. 767 00:34:28,460 --> 00:34:31,780 Kaj pliigo havas aliron al ĝi. 768 00:34:31,780 --> 00:34:33,860 Kaj tial mi iros antaŭen kaj kompili tiun nun. 769 00:34:33,860 --> 00:34:36,330 Faru buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Ŝajnas kompili nun. 771 00:34:37,440 --> 00:34:40,949 Ni kuras buggy4, kaj ĝi similas al reale funkcias. 772 00:34:40,949 --> 00:34:42,780 Nun tio estas unu el tiuj aĵoj - 773 00:34:42,780 --> 00:34:45,870 faru kiel mi diras, ne kiel mi faras, kiel mi ĵus faris ĉi tie. 774 00:34:45,870 --> 00:34:49,239 Ĉar ĝenerale, niaj programoj ricevos multe pli interesa kaj 775 00:34:49,239 --> 00:34:50,440 multe pli longa ol tio. 776 00:34:50,440 --> 00:34:53,199 Kaj se via solvo al la vivo la problemoj estas nur ah, metu ĉiujn 777 00:34:53,199 --> 00:34:57,550 variabloj ĉe la supro de via dosiero, tre rapide fari programojn akiri 778 00:34:57,550 --> 00:34:59,700 horrifically malfacile sukcesas. 779 00:34:59,700 --> 00:35:02,050 Ĝi alvenas pli malfacile pensi novajn variablo nomoj. 780 00:35:02,050 --> 00:35:05,240 Ĝi alvenas pli malfacile kompreni kion variablo faras kion. 781 00:35:05,240 --> 00:35:08,250 >> Kaj tiel ĝenerale, ĉi tio ne estas bona solvo. 782 00:35:08,250 --> 00:35:09,780 Do ni faru ĉi pli bone. 783 00:35:09,780 --> 00:35:11,920 Ni ne volas uzi malloka variablo tie. 784 00:35:11,920 --> 00:35:14,050 Mi volas pliigo x. 785 00:35:14,050 --> 00:35:16,050 Do mi povis evidente - 786 00:35:16,050 --> 00:35:18,450 ĉe la fino de la tago, estas speco de stulta historio ĉar ni nur faru tion. 787 00:35:18,450 --> 00:35:22,050 Sed se mi ne sciis pri tiu operatoro, aŭ mi ne permesis al 788 00:35:22,050 --> 00:35:27,700 ŝanĝi ĝin en ĉefa mem, kiom ajn mi povus apliki Ken super ĉi tie, ĉi 789 00:35:27,700 --> 00:35:31,450 tempo ne kubo sed al pliigo? 790 00:35:31,450 --> 00:35:32,700 Kiel mi ŝanĝu tiun aferon ĉi tie? 791 00:35:32,700 --> 00:35:33,025 Yeah. 792 00:35:33,025 --> 00:35:34,275 [Inaudible] 793 00:35:37,430 --> 00:35:38,000 DAVID J. Malan: Konsentite, bona. 794 00:35:38,000 --> 00:35:40,490 Do kial mi ne pasas en x? 795 00:35:40,490 --> 00:35:44,390 Kaj tiam anstataŭ redoni ĝin, kial ne mi simple fari reveno x + 1? 796 00:35:44,390 --> 00:35:46,370 Nun, paro pli aĵoj devas ŝanĝi ĉi tie. 797 00:35:46,370 --> 00:35:47,530 Mi estas sur la ĝusta vojo. 798 00:35:47,530 --> 00:35:48,910 Kion alian mi bezonas Tweak? 799 00:35:48,910 --> 00:35:49,470 Iu alia. 800 00:35:49,470 --> 00:35:49,882 Yeah? 801 00:35:49,882 --> 00:35:51,530 [Inaudible] 802 00:35:51,530 --> 00:35:53,520 DAVID J. Malan: Mi bezonas ŝanĝi la reveno tipo de pliigo 803 00:35:53,520 --> 00:35:54,590 ĉar ĝi estas ne neniigas. 804 00:35:54,590 --> 00:35:56,650 Void signifas nenion'S esti revenis. 805 00:35:56,650 --> 00:35:57,600 Sed klare, nun ĝi estas. 806 00:35:57,600 --> 00:36:01,280 Do ĉi devas ŝanĝi al int esti konsekvenca kun kion ajn 807 00:36:01,280 --> 00:36:02,580 Mi vere reveni. 808 00:36:02,580 --> 00:36:04,580 >> Nun io alia estas ankoraŭ kalesxo tie. 809 00:36:04,580 --> 00:36:04,982 Yeah? 810 00:36:04,982 --> 00:36:06,590 [Inaudible] 811 00:36:06,590 --> 00:36:07,630 DAVID J. Malan: Do mi bezonas pliigo x? 812 00:36:07,630 --> 00:36:10,336 [Inaudible] 813 00:36:10,336 --> 00:36:11,880 DAVID J. Malan: Ha, do mi bezonas por pasi x. 814 00:36:11,880 --> 00:36:13,300 Do mi bezonas fari ĉi tie. 815 00:36:17,590 --> 00:36:19,690 Do la prototipo, mi devas ŝanĝi ĉi tien. 816 00:36:19,690 --> 00:36:21,290 Do tiu havas igi int. 817 00:36:21,290 --> 00:36:22,820 Tiu devas esti - 818 00:36:22,820 --> 00:36:23,670 hmm. 819 00:36:23,670 --> 00:36:24,710 Mi vere havas cimon cxi tie. 820 00:36:24,710 --> 00:36:25,780 Ni fiksas ĉi tiu unua. 821 00:36:25,780 --> 00:36:27,990 Kion tio efektive estus? 822 00:36:27,990 --> 00:36:29,330 Do ĝi estas alvenis al esti int ion. 823 00:36:29,330 --> 00:36:30,340 Ĝi povus esti x. 824 00:36:30,340 --> 00:36:33,120 Sed sincere, se oni komencas nomi cxiujn el viaj variabloj x, ĝi estas tuj akiri 825 00:36:33,120 --> 00:36:35,250 malpli kaj malpli klara kiu estas kiu. 826 00:36:35,250 --> 00:36:38,210 Do ni nur arbitre elekti alian nom-normo por mia 827 00:36:38,210 --> 00:36:40,220 helpanto funkcioj, la funkcioj mi skribas. 828 00:36:40,220 --> 00:36:41,100 Ni nomas ĝin. 829 00:36:41,100 --> 00:36:44,500 Aŭ ni povus nomi ĝin - ni nomas ĝin even_number esti eĉ pli eksplicitaj. 830 00:36:44,500 --> 00:36:47,610 Tial mi devas reveni ajn la nombro estas plus 1. 831 00:36:47,610 --> 00:36:49,720 Kaj nun mi devas ŝanĝi unu alia afero tie supre kaj unu 832 00:36:49,720 --> 00:36:50,700 alia aĵo ĝis ĉi tie. 833 00:36:50,700 --> 00:36:54,150 Kion mi devas ŝanĝi la linion 21 unuan? 834 00:36:54,150 --> 00:36:55,390 Mi devas atribui ĝin al x. 835 00:36:55,390 --> 00:36:57,480 Do mi ne povas simple nomi pliigo x. 836 00:36:57,480 --> 00:37:01,000 Mi bezonas memori la respondon per ŝanĝanta la valoro de x sur 837 00:37:01,000 --> 00:37:02,020 la maldekstra flanko. 838 00:37:02,020 --> 00:37:04,930 Kaj eĉ se x estas nun en la maldekstra kaj dekstra, jen tute delikata ĉar 839 00:37:04,930 --> 00:37:08,370 dekstre mana flanko gets ekzekutita unua tiam gets plopped en la maldekstra 840 00:37:08,370 --> 00:37:10,240 mano afero, x en ĉi tiu kazo. 841 00:37:10,240 --> 00:37:11,900 Kaj poste laste, ĉi tiu estas facila riparas nun. 842 00:37:11,900 --> 00:37:15,080 Tiu devus ĝuste kongruas kio estas malsupre. 843 00:37:15,080 --> 00:37:17,120 Int nombro. 844 00:37:17,120 --> 00:37:17,320 >> Bone. 845 00:37:17,320 --> 00:37:20,290 Do tuta amaso de ŝanĝoj por vere stulta funkcio. 846 00:37:20,290 --> 00:37:24,250 Sed reprezentanto de aĵoj kiujn ni pli kaj pli volas fari. 847 00:37:24,250 --> 00:37:25,490 Do fari buggy4. 848 00:37:25,490 --> 00:37:26,485 Mi ŝraŭbita supren ie. 849 00:37:26,485 --> 00:37:27,520 Ho mia Dio. 850 00:37:27,520 --> 00:37:29,660 Kvin erarojn en, kiel, ses-linia programo. 851 00:37:29,660 --> 00:37:36,500 Do kio estas malĝusta en linio 18, karaktero 5? 852 00:37:36,500 --> 00:37:36,970 Bone. 853 00:37:36,970 --> 00:37:39,330 Do mi devas deklari ĉi int. 854 00:37:39,330 --> 00:37:39,630 Bone. 855 00:37:39,630 --> 00:37:41,790 Do ni vidas, tuta aro da aliaj eraroj. 856 00:37:41,790 --> 00:37:42,230 Ho mia dio. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Sed denove, ni nur liberigi la ekrano - 859 00:37:46,020 --> 00:37:48,660 Kontrolo L tie - kaj re-run Clang. 860 00:37:48,660 --> 00:37:51,340 Do kvin problemoj estas fakte nur tiu. 861 00:37:51,340 --> 00:37:53,500 Do nun ni kuras buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Whew. 863 00:37:54,150 --> 00:37:57,434 x estas incremented ĝuste. 864 00:37:57,434 --> 00:37:58,420 >> Bone. 865 00:37:58,420 --> 00:38:01,700 Demandojn pri kiel pliigo nombroj? 866 00:38:01,700 --> 00:38:02,896 Yeah? 867 00:38:02,896 --> 00:38:06,864 Parolanto 2: Kial vi povas simple ŝanĝi x al nombro en la variablo 868 00:38:06,864 --> 00:38:08,860 enoficigi kaj rekonos kion vi signifas? 869 00:38:08,860 --> 00:38:09,600 DAVID J. Malan: Bona demando. 870 00:38:09,600 --> 00:38:13,130 Kial mi povas simple ŝanĝi x al nombro kaj la programo scios 871 00:38:13,130 --> 00:38:13,990 tuj? 872 00:38:13,990 --> 00:38:16,120 Do denove, pensi pri tio kiel ĉi abstraktado. 873 00:38:16,120 --> 00:38:20,110 Do, se mi estas ĉefa kaj Ken estas incremental, sincere, mi ne zorgas 874 00:38:20,110 --> 00:38:21,540 kion Ken nomas lia iPad. 875 00:38:21,540 --> 00:38:25,350 Mi ne zorgas kion li nomas ion, kio devas vidi per sia efektivigo 876 00:38:25,350 --> 00:38:26,550 de ĉi funkciojn. 877 00:38:26,550 --> 00:38:32,130 Do ĉi tiu estas efektivigo detalo kiun mi, ĉefa, ne 878 00:38:32,130 --> 00:38:33,010 devas maltrankviligas. 879 00:38:33,010 --> 00:38:37,440 Kaj tiel simple ŝanĝi ĝin konsekvence ene de la funkcio, nombro ĉi tie 880 00:38:37,440 --> 00:38:41,340 kaj nombro ĉi tie, estas ĉio prenas tiom longe kiom mi recompilar. 881 00:38:41,340 --> 00:38:43,820 Estas iel kiel se vi pensas pri - multaj el ni, tiuj de vi kun ŝoforo 882 00:38:43,820 --> 00:38:46,590 licencojn kiuj jam forpelis, aŭ se vi eĉ pelita en aŭto - 883 00:38:46,590 --> 00:38:50,710 la plimulto de ni ne havas ideon kiom aŭto laboras sub la kapuĉo. 884 00:38:50,710 --> 00:38:54,710 Kaj laŭvorte, se vi malfermas la kapuĉo, la plimulto de ni - mi mem komprenis - 885 00:38:54,710 --> 00:38:56,580 ne tuj vere scias kion ni rigardis. 886 00:38:56,580 --> 00:38:58,850 Ia kiel vi eble sentas kun stuff kiel tiu nun. 887 00:38:58,850 --> 00:39:01,380 Sed ni ne devas vere gravas kiom la aŭto funkcias. 888 00:39:01,380 --> 00:39:05,000 Ni ne devas prizorgi kion ĉiuj la bastonojn kaj piŝtoj kaj kabloj ene de 889 00:39:05,000 --> 00:39:07,700 la aŭto fakte faras. 890 00:39:07,700 --> 00:39:11,360 >> Do iu kiel vi nomas la piŝto ne gravas 891 00:39:11,360 --> 00:39:11,920 tie en ĉi tiu kazo. 892 00:39:11,920 --> 00:39:12,490 Sama ideo. 893 00:39:12,490 --> 00:39:12,670 Yeah? 894 00:39:12,670 --> 00:39:13,920 [Inaudible] 895 00:39:25,250 --> 00:39:29,530 DAVID J. Malan: Se estis pli uzoj de la variablo XA antaŭ momento, 896 00:39:29,530 --> 00:39:32,220 vi, la programisto, devus ŝanĝi ilin ĉie. 897 00:39:32,220 --> 00:39:35,230 Aŭ vi povus laŭvorte do Dosieraj, Menuo, kaj tiam Trovi / Replace, 898 00:39:35,230 --> 00:39:36,270 io simila. 899 00:39:36,270 --> 00:39:40,110 Sed vi tuj devas fari tiujn ŝanĝojn mem. 900 00:39:40,110 --> 00:39:41,200 Vi devas esti konsekvenca. 901 00:39:41,200 --> 00:39:42,450 [Inaudible] 902 00:39:47,200 --> 00:39:48,960 DAVID J. Malan: Aparta ordon kiel ĉi tie? 903 00:39:48,960 --> 00:39:52,660 Se ĉi tiu estis int alia numero? 904 00:39:52,660 --> 00:39:52,940 Yeah. 905 00:39:52,940 --> 00:39:56,430 Do sekve gravas kiam vi vokas la funkcio. 906 00:39:56,430 --> 00:40:00,350 Do se mi nomis pliigo tie kun iu komo ion, 907 00:40:00,350 --> 00:40:01,400 ekzistas rekta surĵeto. 908 00:40:01,400 --> 00:40:04,490 La unua variablo, kia ajn ĝi estas nomata, estas farita kopio de la unua 909 00:40:04,490 --> 00:40:05,480 argumento super tie. 910 00:40:05,480 --> 00:40:07,280 Pardonu, tiu devus ne esti parentezo. 911 00:40:07,280 --> 00:40:09,300 La dua argumento regiono kun la dua. 912 00:40:09,300 --> 00:40:11,220 >> Do ordo, jes, aferoj. 913 00:40:11,220 --> 00:40:11,490 Bone. 914 00:40:11,490 --> 00:40:13,360 Pardonu mi prenis longan vojon por atingi tien. 915 00:40:13,360 --> 00:40:14,610 Aliaj demandoj? 916 00:40:16,460 --> 00:40:16,850 Bone. 917 00:40:16,850 --> 00:40:20,300 Do ni vidu, se ni ne povas pentri bildon de kio vere okazas 918 00:40:20,300 --> 00:40:22,160 tie sub la kapuĉo, por tiel diri. 919 00:40:22,160 --> 00:40:26,310 Do ĉi tiu estas ortangulo, kiuj povus reprezenti via komputilo la memoro. 920 00:40:26,310 --> 00:40:31,240 Do eĉ se vi ne havas ideon kiom memoro funkcias aŭ kiel RAM verkoj, almenaŭ 921 00:40:31,240 --> 00:40:33,590 supozi ke vi havas aroj da ĝi ĉi tiuj tagoj. 922 00:40:33,590 --> 00:40:34,740 Vi havas megabajtoj ĝi. 923 00:40:34,740 --> 00:40:35,760 Vi havas gigabajtoj de ĝi. 924 00:40:35,760 --> 00:40:40,690 Kaj ni scias el semajno nulo kiu bajto estas precize kion? 925 00:40:40,690 --> 00:40:41,280 8 bitoj. 926 00:40:41,280 --> 00:40:42,730 Bone, do 8 nuloj kaj aĵoj. 927 00:40:42,730 --> 00:40:46,300 Do se via komputilo havas koncerton de RAM, du koncertoj de RAM tiuj tagoj, vi havas 928 00:40:46,300 --> 00:40:54,450 miliardo aŭ 2 miliardoj bajtoj de memoro, aŭ proksimume 8 milionoj aŭ 16 miliardoj 929 00:40:54,450 --> 00:40:56,560 bitoj, ene de via komputilo. 930 00:40:56,560 --> 00:40:59,710 Nun kontraste kun la iom hareca Willy Ekzemple, ne estas magneta eroj 931 00:40:59,710 --> 00:41:00,560 tipe plu. 932 00:41:00,560 --> 00:41:04,470 Ĉiufoje, en tekkomputiloj almenaŭ, estas solida stato diskoj, SSDs, ke 933 00:41:04,470 --> 00:41:05,560 simple ne movante partoj. 934 00:41:05,560 --> 00:41:06,710 Estas ĉio elektronika. 935 00:41:06,710 --> 00:41:08,070 Estas ĉio elektro bazita. 936 00:41:08,070 --> 00:41:12,360 Do opinias, tamen, ĉi tiu rektangulo kiel ĝuste reprezentas la unu aŭ du 937 00:41:12,360 --> 00:41:13,930 gigabajtoj de memoro kiun vi havas. 938 00:41:13,930 --> 00:41:15,500 >> Do ĝi eron de memoro. 939 00:41:15,500 --> 00:41:20,460 Nun la mondo de komputiko havas ia dispartigita sur pecoj de 940 00:41:20,460 --> 00:41:22,570 memoro fari malsamajn aferojn. 941 00:41:22,570 --> 00:41:25,930 Do ekzemple, se tio estas via komputilo RAM - kiel sugestita de la 942 00:41:25,930 --> 00:41:30,400 rektangulo tie - rezultas ke per konvencio, sur la supro de via memoro RAM, tiel 943 00:41:30,400 --> 00:41:33,170 paroli, estas ĝenerale kion nomas tekston segmento. 944 00:41:33,170 --> 00:41:35,910 Tiuj estas la nuloj kaj aĵoj kiujn vi kompilis. 945 00:41:35,910 --> 00:41:39,040 Do kiam ni rigardis sub la kapuĉo je kioma a.out estas, ĉiuj 946 00:41:39,040 --> 00:41:40,360 la nuloj kaj aĵoj - 947 00:41:40,360 --> 00:41:44,000 kiam vi kuros programo, tiuj nuloj kaj aĵoj estas ŝarĝitaj de via malmola 948 00:41:44,000 --> 00:41:46,290 drive en ion nomita RAM. 949 00:41:46,290 --> 00:41:48,950 Kaj en la memoro RAM, ili estas metitaj en la pinto. 950 00:41:48,950 --> 00:41:50,330 Nun dume, vi havas aliajn aferojn. 951 00:41:50,330 --> 00:41:53,060 Inicializado datumoj, uninitialized datumoj. 952 00:41:53,060 --> 00:41:56,440 Tiuj du swaths de memoro referi al tutmonda variabloj, kiuj 953 00:41:56,440 --> 00:41:57,530 vi ne ofte uzas. 954 00:41:57,530 --> 00:42:00,630 Sed kelkfoje, se vi faras, ili finas tie ankaŭ. 955 00:42:00,630 --> 00:42:01,620 Tiam ekzistas iu alia materialo. 956 00:42:01,620 --> 00:42:04,130 Medio variabloj, kiuj ni ne pasigas multe da tempo plu. 957 00:42:04,130 --> 00:42:06,120 Sed tiam du gravaj aĵoj kiuj revenos tra tiu 958 00:42:06,120 --> 00:42:08,130 semestro, pilo kaj amaso. 959 00:42:08,130 --> 00:42:12,280 >> Do plej de via komputilo la memoro estas rezervita al la kuri programon por 960 00:42:12,280 --> 00:42:14,880 iu nomita la pilo kaj iu nomis la amaso. 961 00:42:14,880 --> 00:42:16,940 Kaj ni ne tuj paroli pri la amaso hodiaŭ, sed ni volas 962 00:42:16,940 --> 00:42:18,180 paroli pri la stako. 963 00:42:18,180 --> 00:42:22,910 Kaj la pilo celas sorĉvenigi la vida de kiel la manĝejo 964 00:42:22,910 --> 00:42:26,120 faruno pletoj en Mather Domo, aŭ kien ajn vi hazarde estas, kie la 965 00:42:26,120 --> 00:42:27,810 manĝejo bastonon purigi ilin ĉiutage. 966 00:42:27,810 --> 00:42:30,180 Ili pilo ilin el planko plu supren. 967 00:42:30,180 --> 00:42:33,800 Kaj simile en memoro, estas ĉi ideon de meti ion sur 968 00:42:33,800 --> 00:42:36,740 pilo, metante ion sur pilo, metante ion sur pilo. 969 00:42:36,740 --> 00:42:38,000 Kaj kion ni celas diri per tio? 970 00:42:38,000 --> 00:42:41,430 Nu, ni zomi en nur la malsupra duono de ĉi tiu pentraĵo, via komputilo 971 00:42:41,430 --> 00:42:43,990 RAM, por proponi la sekvan. 972 00:42:43,990 --> 00:42:48,300 Rezultas, ke kiam vi kuros programon kiel a.out aŭ saluton, estu 973 00:42:48,300 --> 00:42:49,920 la programo estas ke vi skribis, 974 00:42:49,920 --> 00:42:53,030 denove, tiuj nuloj kaj aĵoj estas ŝarĝitaj de via malmola disko - kiu estas 975 00:42:53,030 --> 00:42:56,190 longtempe stokado, restas tie ĝis kiam vi tiras la plug - 976 00:42:56,190 --> 00:42:57,220 ŝarĝita en RAM. 977 00:42:57,220 --> 00:42:59,020 RAM estas pli rapida ol malmolaj diskoj. 978 00:42:59,020 --> 00:43:00,700 Estas malgranda ol malmolaj diskoj. 979 00:43:00,700 --> 00:43:03,490 Sed estas kie programoj vivi dum vi kuras ilin. 980 00:43:03,490 --> 00:43:06,380 >> Do vi duoblan klaku programon sur Mac aŭ PC - ĝi estas ŝarĝita de 981 00:43:06,380 --> 00:43:07,750 malmola disko en RAM. 982 00:43:07,750 --> 00:43:11,760 Tuj kiam ĝi estas ŝarĝita en RAM, la nuloj kaj aĵoj iru ĉe la vojo pinto, la 983 00:43:11,760 --> 00:43:13,130 tiel nomata teksto segmento. 984 00:43:13,130 --> 00:43:17,040 Sed tiam tuj kiam via programo fakte komenciĝas kurante, la ĉefa 985 00:43:17,040 --> 00:43:18,140 funkcio estas nomita. 986 00:43:18,140 --> 00:43:21,070 Kaj ĉefa, kiel ni vidis, ofte havas lokajn variablojn. 987 00:43:21,070 --> 00:43:24,560 Kaj ĝi havas ints kaj kordoj kaj signoj kaj similaj. 988 00:43:24,560 --> 00:43:28,300 Do, se via programo, kiun vi skribis aŭ la programo, ke vi havas 989 00:43:28,300 --> 00:43:33,680 duobla clicked uzis iujn variabloj ene de ĉefaj, ili finas en la 990 00:43:33,680 --> 00:43:37,020 fundo de via pilo de memoro, por tiel diri. 991 00:43:37,020 --> 00:43:39,160 Nun pli konkrete, kion signifas ĉi reale signifas? 992 00:43:39,160 --> 00:43:44,080 Tiu simple volas diri ke se ni tuj kalkuli la aferojn - 993 00:43:44,080 --> 00:43:49,380 se ni iris al la numero la bajtoj de RAM en via komputilo, rimarki ke 994 00:43:49,380 --> 00:43:51,650 povas esti tiu bajto nombro nulo. 995 00:43:51,650 --> 00:43:56,130 Tio povas esti byte numero unu, du, tri, kvar, kvin, ses, ĉiuj 996 00:43:56,130 --> 00:43:57,290 la vojo supren al ŝati - 997 00:43:57,290 --> 00:44:01,520 2 miliardoj estus tuta vojo ĝis tie supre. 998 00:44:01,520 --> 00:44:05,960 Do alivorte, kiam ni parolas pri RAM aŭ memoro en terminoj de bajtoj, ĝi 999 00:44:05,960 --> 00:44:09,680 nur signifas, ke iu decidis kion prikalkulu ĉiu el 1000 00:44:09,680 --> 00:44:11,110 tiujn pecojn de memoro. 1001 00:44:11,110 --> 00:44:16,950 >> Do, kiam vi bezonas 32 bitojn por int, aŭ vi bezonos 8 bitoj por char, kie 1002 00:44:16,950 --> 00:44:18,320 do ili finas en memoro? 1003 00:44:18,320 --> 00:44:20,650 Nu koncepte, ili nur finos je la fundo de tiu 1004 00:44:20,650 --> 00:44:21,780 afero nomita la pilo. 1005 00:44:21,780 --> 00:44:25,670 Sed kio estas interesa nun estas kiam ĉefa nomas funkcio. 1006 00:44:25,670 --> 00:44:28,830 Supozi funkcio nomita foo, ĝuste arbitran nomon. 1007 00:44:28,830 --> 00:44:32,480 Kio okazas estas ĉefa estas ĉe la malsupro de tiu pilo de memoro. 1008 00:44:32,480 --> 00:44:35,630 Foo nun estas metita sur ĉefa en memoro. 1009 00:44:35,630 --> 00:44:40,020 Do iu loka variabloj kiuj foo jam fini ia koncepte supre 1010 00:44:40,020 --> 00:44:40,770 tiuj en ĉefa. 1011 00:44:40,770 --> 00:44:46,920 Se foo nomas alian funkcion nomita trinkejo, tiuj variabloj fini ĉi tie. 1012 00:44:46,920 --> 00:44:49,790 Se trinkejo nomas ion alian, jen, jen, tie ĉi. 1013 00:44:49,790 --> 00:44:53,900 Do kio estas interesa pri kurante programo estas ke kiel vi nomas funkcioj, 1014 00:44:53,900 --> 00:44:57,720 kaj kiel tiuj funkcioj vokas funkciojn, kaj kiel tiuj funkcioj vokas funkciojn, 1015 00:44:57,720 --> 00:45:00,980 vi konstruos ĉi pilo de funkcioj en memoro. 1016 00:45:00,980 --> 00:45:06,740 Kaj nur unu fojon funkcio redonas vi komencu akiri tiu memoro dorso. 1017 00:45:06,740 --> 00:45:11,190 Do unu el la plej facilaj manieroj por kuri el memoro en komputila programo estas 1018 00:45:11,190 --> 00:45:14,170 skribi funkciojn kiuj neniam revenus. 1019 00:45:14,170 --> 00:45:16,650 >> Do ekzemple, ni pruvi tiel kun 1020 00:45:16,650 --> 00:45:18,460 intence kalesxo programo. 1021 00:45:18,460 --> 00:45:24,690 Lasu min antaŭeniri kaj ne # include , int main (void). 1022 00:45:24,690 --> 00:45:31,270 Kaj mi tuj faros dum (2> 1), kio verŝajne ne cxiam 1023 00:45:31,270 --> 00:45:33,370 ŝanĝi nin. 1024 00:45:33,370 --> 00:45:37,720 Kaj lasu min iri antaŭen nun kaj faros printf. 1025 00:45:37,720 --> 00:45:39,950 Efektive, tiu tuj estos malpli vide interesa. 1026 00:45:39,950 --> 00:45:40,460 Ni faras tion. 1027 00:45:40,460 --> 00:45:44,840 Por int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Ni faras tiun eraron, mi + +. 1029 00:45:49,740 --> 00:45:51,150 Kaj ni ne printf tie. 1030 00:45:51,150 --> 00:45:52,550 Ni praktiki kion mi predikis. 1031 00:45:52,550 --> 00:45:54,090 Ni havas metodon tie. 1032 00:45:54,090 --> 00:46:00,860 Void ĥoro, kaj ni diru int i. 1033 00:46:00,860 --> 00:46:02,295 Kaj poste mi iros diri, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, ni faros tiun pli interesa. 1035 00:46:06,790 --> 00:46:08,350 Ni fakte ne presi ion ajn. 1036 00:46:08,350 --> 00:46:10,530 Ni nur faru tion. 1037 00:46:10,530 --> 00:46:11,780 Ĥoro (i). 1038 00:46:16,630 --> 00:46:17,000 >> Bone. 1039 00:46:17,000 --> 00:46:20,040 Do ĉi tiu estas kalesxo ĉar kial? 1040 00:46:20,040 --> 00:46:22,850 Mi faras ĉi tion dum mi iros, ĉar la programo ne vere fari ion 1041 00:46:22,850 --> 00:46:23,420 de intereso. 1042 00:46:23,420 --> 00:46:24,670 Sed tio ne estas la celo. 1043 00:46:24,670 --> 00:46:30,440 La celo estas skribi programon kies ĉefa funkcio faras kio, ŝajne? 1044 00:46:30,440 --> 00:46:31,370 Voku mem. 1045 00:46:31,370 --> 00:46:32,600 Kaj efektive, ni ne bezonas la ciklo. 1046 00:46:32,600 --> 00:46:36,070 Ni eĉ simpligi ĉi nur por ne perdi antaux vere la 1047 00:46:36,070 --> 00:46:37,310 fundamenta eraro. 1048 00:46:37,310 --> 00:46:39,200 Ĉefa alvokoj ĥoro kanti iujn ĥoro. 1049 00:46:39,200 --> 00:46:41,760 Tiam mi faris iun stultan, kaj mi devis ĥore alvoko ĥoro ĉar mi supozis 1050 00:46:41,760 --> 00:46:43,550 iu alia tuj apliki ĝin eble. 1051 00:46:43,550 --> 00:46:45,960 Kaj nun ĉi tio ne tuj kompili ankoraŭ. 1052 00:46:45,960 --> 00:46:48,340 Mi bezonas fari kion? 1053 00:46:48,340 --> 00:46:49,700 Mi bezonas la prototipo, memoru. 1054 00:46:49,700 --> 00:46:55,520 Do mi bezonas havi ĝis tie dezerta ĥoro (int i);. 1055 00:46:55,520 --> 00:46:57,470 >> Do nun, se mi iros tien - 1056 00:46:57,470 --> 00:46:59,030 fakte, ni uzos la pli granda fenestro. 1057 00:46:59,030 --> 00:47:01,670 Ni iru antaŭen kaj fari ĥoro. 1058 00:47:01,670 --> 00:47:06,000 Ni iru antaŭen kaj fari ĥoro. 1059 00:47:06,000 --> 00:47:08,302 Uzo de neidentigita declarer i. 1060 00:47:08,302 --> 00:47:09,860 Ho, tio estis stulta. 1061 00:47:09,860 --> 00:47:11,020 Ni ne bezonas la argumento. 1062 00:47:11,020 --> 00:47:13,680 Ni nur faru tion. 1063 00:47:13,680 --> 00:47:14,550 Wish ni komencis tiun vojon. 1064 00:47:14,550 --> 00:47:16,160 Estus multe pli facile programo por skribi. 1065 00:47:16,160 --> 00:47:20,100 Do tie. 1066 00:47:20,100 --> 00:47:23,870 Nun ni transiros al mia fina fenestro, re-run Clang. 1067 00:47:23,870 --> 00:47:26,900 Kaj tie ni iru. 1068 00:47:26,900 --> 00:47:28,020 Tio estis vere rapida. 1069 00:47:28,020 --> 00:47:30,690 Kio fakte ĝuste tio okazis, kvankam? 1070 00:47:30,690 --> 00:47:33,430 Nu, nun mi aldonos la impreso linio, do ni povas vidi. 1071 00:47:33,430 --> 00:47:41,330 Do mi diru printf, diru, mi estas en ĉi tie. 1072 00:47:41,330 --> 00:47:43,470 Konsentite, neniu variabloj, ni lasos ĝin tiel. 1073 00:47:43,470 --> 00:47:44,860 Lasu min re-ruli fari. 1074 00:47:44,860 --> 00:47:47,940 Lasu min re-run ĥoro. 1075 00:47:47,940 --> 00:47:51,235 Kaj venu plu. 1076 00:47:53,880 --> 00:47:55,130 Konservu tuj. 1077 00:47:57,630 --> 00:47:59,750 Kiel flanken, kial ĝi ne frakasis yet? 1078 00:47:59,750 --> 00:48:02,050 La segmentación kulpo okazis super rapida antaŭe. 1079 00:48:02,050 --> 00:48:04,250 [Inaudible] 1080 00:48:04,250 --> 00:48:04,830 DAVID J. Malan: Ĝuste. 1081 00:48:04,830 --> 00:48:06,350 Do ĝi prenas tempon por presi. 1082 00:48:06,350 --> 00:48:08,370 Ĝi simple prenas pli da laboro sur la komputilo parto. 1083 00:48:08,370 --> 00:48:09,550 Kaj tie ĝi estas. 1084 00:48:09,550 --> 00:48:10,620 Segmentación kulpo. 1085 00:48:10,620 --> 00:48:12,140 >> Do rimarki kiom rapida programoj kuri. 1086 00:48:12,140 --> 00:48:14,110 Se vi ne presi ion, super rapida. 1087 00:48:14,110 --> 00:48:18,100 Sed ni ankoraŭ havas ĉi segmentación kulpo ĉar tio, kio okazas? 1088 00:48:18,100 --> 00:48:21,310 Nu, se vi pensas pri kiel via komputilo la memoro estas jalonada, ĉi 1089 00:48:21,310 --> 00:48:22,890 hazarde estas ĉefa. 1090 00:48:22,890 --> 00:48:23,800 Sed ĉi tie - 1091 00:48:23,800 --> 00:48:28,670 ni simple nomas tion ĥoro, kaj ni nomas tiun refrenon. 1092 00:48:28,670 --> 00:48:33,420 Kaj nun se mi faras mian estetiko pravas, tio estas nur intencas diri ĥoro, 1093 00:48:33,420 --> 00:48:38,060 koruso, hxoro, koruso, ĥoro, koruso, ĥoro, ad nauseum. 1094 00:48:38,060 --> 00:48:39,920 Kaj fine, kio okazos? 1095 00:48:39,920 --> 00:48:46,690 Se la granda bildo laŭvorte estas tio, kio ĵus okazas koncepte? 1096 00:48:46,690 --> 00:48:48,320 La pilo overruns la amaso. 1097 00:48:48,320 --> 00:48:52,400 Aŭ malbona, vi simple invadita ĉio, inkluzive de la teksto segmento, kiu estas 1098 00:48:52,400 --> 00:48:54,530 la nuloj kaj aĵoj kiuj reprezentas vian programon. 1099 00:48:54,530 --> 00:48:56,690 Unuvorte, tiu estas nur super, super malbona. 1100 00:48:56,690 --> 00:48:56,860 Ĝuste? 1101 00:48:56,860 --> 00:48:58,620 Via programo spiraled el kontrolon. 1102 00:48:58,620 --> 00:49:02,840 Vi uzas vojon pli memoro ol vi intencis ĉiuj pro stulta 1103 00:49:02,840 --> 00:49:03,920 eraro, en ĉi tiu kazo. 1104 00:49:03,920 --> 00:49:08,160 Aŭ en tiu kazo, tre intence faris funkcio kiu nomas sin. 1105 00:49:08,160 --> 00:49:09,210 Nun ĉi tio ne estas ĉio malbona. 1106 00:49:09,210 --> 00:49:12,540 Funkcioj nomante sin reale havas grandan potencon 1107 00:49:12,540 --> 00:49:13,700 kiam vi uzas ĝin ĝuste. 1108 00:49:13,700 --> 00:49:15,650 Mi ne uzis ĝin ĝuste ĉi tie. 1109 00:49:15,650 --> 00:49:16,940 >> Do tiu estas ne ĉiuj malbonaj. 1110 00:49:16,940 --> 00:49:20,620 Sed la fakto, ke mi neniam vere halti nomante min estas fundamenta 1111 00:49:20,620 --> 00:49:23,050 malforteco tie de tiu programo. 1112 00:49:23,050 --> 00:49:25,090 Do kie ni iras kun ĉio ĉi? 1113 00:49:25,090 --> 00:49:26,230 Nu, kio vere okazas? 1114 00:49:26,230 --> 00:49:30,010 Kiam mi vokas la pliigo funkcio, kiel ni faris en tiuj ekzemploj, 1115 00:49:30,010 --> 00:49:33,290 Mi havas valoro kiel 1, ke mi pasas in 1116 00:49:33,290 --> 00:49:35,820 Mi pasas en kopio de la numero unu. 1117 00:49:35,820 --> 00:49:37,080 Do la sekvan okazas. 1118 00:49:37,080 --> 00:49:40,390 Do ni iru en la pliigo ekzemplo. 1119 00:49:40,390 --> 00:49:44,230 Kaj tiu viro rajton super tie. 1120 00:49:44,230 --> 00:49:46,800 Do jen kio reale okazas. 1121 00:49:46,800 --> 00:49:50,770 Kiam mi nomas pliigo, kaj mi pasas en x, pictóricamente kio estas 1122 00:49:50,770 --> 00:49:53,660 okazas ĉi tie estas tio - 1123 00:49:53,660 --> 00:50:00,240 se mi havas la valoron de 1 stokitaj tie, kaj mi vere nomas pliigo, kiu 1124 00:50:00,240 --> 00:50:02,680 oni nun nomas ĥoro - 1125 00:50:02,680 --> 00:50:04,010 yeah, ke tio ĵetante la aferon ĉi tie. 1126 00:50:04,010 --> 00:50:06,750 Do ni nomas tion pliigo. 1127 00:50:06,750 --> 00:50:09,420 Kaj ni ne scias kio estas tiu sekva funkcio tuj estos. 1128 00:50:09,420 --> 00:50:14,270 Do kio vere okazas estas ĉi tie ie en ĉefa, mi havas eron de 1129 00:50:14,270 --> 00:50:16,670 memoro kiu stoki la nombro 1. 1130 00:50:16,670 --> 00:50:19,730 Kiam mi vokas pliigo, Mi uzas alian eron de memoro, sed nun mi 1131 00:50:19,730 --> 00:50:20,840 havas la kopio de 1. 1132 00:50:20,840 --> 00:50:25,480 Kiam mi pliigo tiu valoro, ĉi iĝas 2 - hide skribita en la 1133 00:50:25,480 --> 00:50:26,420 ekrano tie. 1134 00:50:26,420 --> 00:50:30,550 Sed tiam, kio okazas tuj kiam pliigo revenas? 1135 00:50:30,550 --> 00:50:34,610 Tiu memoro nur gets enmanigis al la mastruma sistemo, kiu signifas ĉiuj 1136 00:50:34,610 --> 00:50:37,470 vi faris estas nenio utila. 1137 00:50:37,470 --> 00:50:43,460 Kiu estis origine enhavis en ĉefa estas ankoraŭ efektive tie. 1138 00:50:43,460 --> 00:50:44,650 >> Do kie ni iras kun tio? 1139 00:50:44,650 --> 00:50:49,400 Nu, tio rezultas ke en memoro vi havas ĉi malantaŭo al malantaŭo vico de 1140 00:50:49,400 --> 00:50:50,940 bajtoj ke vi povas meti aĵojn in 1141 00:50:50,940 --> 00:50:53,760 Kaj ĝi rezultas ke ni jam vidis iun kiu konsistas meti 1142 00:50:53,760 --> 00:50:55,100 aĵoj malantaŭo al malantaŭo al malantaŭo al malantaŭo. 1143 00:50:55,100 --> 00:51:00,170 Kio estas ĉeno, bazita en semajno kaj nun semajno du? 1144 00:51:00,170 --> 00:51:01,840 Do ĝi estas simple kolekto de karakteroj. 1145 00:51:01,840 --> 00:51:05,290 Do rezultas, same kiel vi povas meti numerojn en memoro, simile you can 1146 00:51:05,290 --> 00:51:06,900 metis karakteroj en memoro. 1147 00:51:06,900 --> 00:51:09,810 Kaj unufoje ni komencu meti signojn en memoro malantaŭo al malantaŭo al malantaŭo al 1148 00:51:09,810 --> 00:51:12,800 dorso, ĝi rezultas ke uzante la plej simplaj aferoj kiel por buklo aŭ 1149 00:51:12,800 --> 00:51:14,510 momenton buklo, ni povas persisti - 1150 00:51:14,510 --> 00:51:17,130 de maldekstre al dekstre super la gravuloj ĉenon - 1151 00:51:17,130 --> 00:51:20,720 kaj komenci massaging ilin en malsamaj karakteroj aro. 1152 00:51:20,720 --> 00:51:25,550 Al povus igi B. B povus igi C. Por ke finfine, ni povas preni 1153 00:51:25,550 --> 00:51:28,830 English frazo kiu fakte havas sencon kaj konverti ĉiu de tiuj 1154 00:51:28,830 --> 00:51:32,440 literojn unuope per promenante tra nia komputilo memoro lasis al 1155 00:51:32,440 --> 00:51:34,300 rajto vere kodi. 1156 00:51:34,300 --> 00:51:36,590 >> Do ni prenu nian kvin minutoj ripozon ĉi tie, kaj kiam ni revenos, ni instruos vin 1157 00:51:36,590 --> 00:51:39,060 komenci ĉi procezo de grimpadi informo. 1158 00:51:41,640 --> 00:51:43,180 >> Bone. 1159 00:51:43,180 --> 00:51:48,440 Do antaŭ ol ni plonĝi en iuj kripto kaj tion nomis arrays, lasu min 1160 00:51:48,440 --> 00:51:51,610 paŭzo por ajna demandoj ĉar mi sentas min vere ia malklara kelkaj el 1161 00:51:51,610 --> 00:51:52,230 tiuj temoj. 1162 00:51:52,230 --> 00:51:53,940 Do ni ripari nun se ni povas. 1163 00:51:53,940 --> 00:51:56,480 Do ni nur parolis pri reveno valoroj. 1164 00:51:56,480 --> 00:51:58,630 Ni parolis pri argumentoj. 1165 00:51:58,630 --> 00:52:02,330 Kaj ni parolis pri tiu nocio, kiun ni revenos al la semajnoj 1166 00:52:02,330 --> 00:52:07,140 venu, de viewing memoro entute amaso de tiuj modular 1167 00:52:07,140 --> 00:52:08,540 pletoj, por tiel diri. 1168 00:52:08,540 --> 00:52:13,460 De malsupre supren, tia ke ĉiu pleto ke gets surmetis la pilo reprezentas 1169 00:52:13,460 --> 00:52:15,160 funkcio ke tio aktuale estas vokita. 1170 00:52:17,970 --> 00:52:20,300 Demandojn? 1171 00:52:20,300 --> 00:52:22,890 Do kiel pri - mi provos demandi demandon. 1172 00:52:22,890 --> 00:52:25,520 Mi gardas difektante tion, sed nun it's - you've ĉiuj vidis la knabon vizaĝo. 1173 00:52:25,520 --> 00:52:27,020 Do ni revenu al tio. 1174 00:52:27,020 --> 00:52:29,700 >> Do mi demandas tien. 1175 00:52:29,700 --> 00:52:34,810 Lasu min simpligi ĉi reen al kio estis antaŭ kelkaj niaj antaŭaj Q & A. 1176 00:52:34,810 --> 00:52:41,730 Kaj la fakto ke pliigo havas malferma parentezo, int nombro, fermita 1177 00:52:41,730 --> 00:52:42,260 parentezo. 1178 00:52:42,260 --> 00:52:46,370 Kion int nombro reprezenti? 1179 00:52:46,370 --> 00:52:47,250 [Inaudible] 1180 00:52:47,250 --> 00:52:47,870 DAVID J. Malan: An argumento. 1181 00:52:47,870 --> 00:52:50,732 Konsentite, sed kio estas argumento? 1182 00:52:50,732 --> 00:52:51,620 [Inaudible] 1183 00:52:51,620 --> 00:52:52,500 DAVID J. Malan: Pardonu, kio estas tio? 1184 00:52:52,500 --> 00:52:53,150 Parolanto 3: Io sekvinberoj in 1185 00:52:53,150 --> 00:52:53,570 DAVID J. Malan: Okay. 1186 00:52:53,570 --> 00:52:54,780 Do iu kiu pasas in 1187 00:52:54,780 --> 00:52:56,560 Kaj pli ĝenerale, estas nur la enigo. 1188 00:52:56,560 --> 00:52:59,860 Se vi skribas funkcio kaj ke funkcia celo en la vivo estas plenumi 1189 00:52:59,860 --> 00:53:03,290 io iom malsama ĉiufoje kiam vi uzas gxin, tiam la sola maniero por 1190 00:53:03,290 --> 00:53:07,710 ke tio okazas vere ŝajnus esti provizi ĝin per enigo por ke ĝi 1191 00:53:07,710 --> 00:53:10,180 povas fari iun malsama kun tiu enigo ĉiufoje. 1192 00:53:10,180 --> 00:53:13,590 >> Do vi bezonas specifi du aferoj kiam funkcio prenas enigoj. 1193 00:53:13,590 --> 00:53:17,240 Vi devas specifi la nomo kiun vi volas doni al tiu enigo, simple nur por 1194 00:53:17,240 --> 00:53:20,790 Via propra komforto por ke vi povas referi al ĝi en la funkcio kiun vi 1195 00:53:20,790 --> 00:53:23,610 mem skribas, kiel mi faris tie en linio 32. 1196 00:53:23,610 --> 00:53:27,840 Sed vi ankaŭ bezonos specifi lia tipo ĉar C estas komputila programlingvo 1197 00:53:27,840 --> 00:53:28,840 ke nur postulas 1198 00:53:28,840 --> 00:53:31,810 ke se vi volas variablo, vi devas diri al la komputilo kio 1199 00:53:31,810 --> 00:53:32,790 datumoj tajpu ĝin estas, 1200 00:53:32,790 --> 00:53:35,540 en granda parto por ke ĝi sciu kiom da bitoj por 1201 00:53:35,540 --> 00:53:37,230 destini por tiu variablo. 1202 00:53:37,230 --> 00:53:38,600 Ĉar ĝi povus esti ses - 1203 00:53:38,600 --> 00:53:39,990 sorry, ne estos ses. 1204 00:53:39,990 --> 00:53:41,050 Ĝi povas esti 16. 1205 00:53:41,050 --> 00:53:41,630 Ĝi povas esti 8. 1206 00:53:41,630 --> 00:53:44,410 Ĝi povas esti 32, eĉ 64. 1207 00:53:44,410 --> 00:53:45,820 Sed la komputilo bezonas scii. 1208 00:53:45,820 --> 00:53:49,110 Nun la int sur la maldekstra flanko reprezentas kio, per kontrasto? 1209 00:53:52,825 --> 00:53:53,780 [Inaudible] 1210 00:53:53,780 --> 00:53:54,570 DAVID J. Malan: Kio estas tio? 1211 00:53:54,570 --> 00:53:55,390 [Inaudible] 1212 00:53:55,390 --> 00:53:57,920 DAVID J. Malan: La tipo de la funkcio kaj, pli specife, la 1213 00:53:57,920 --> 00:53:59,755 tipo de lia eliro. 1214 00:53:59,755 --> 00:54:00,220 Ĝuste. 1215 00:54:00,220 --> 00:54:04,220 Do dum la aferon en krampoj reprezentas lian enigo, se iu, la 1216 00:54:04,220 --> 00:54:06,640 aferon al la maldekstra reprezentas sian produktadon. 1217 00:54:06,640 --> 00:54:10,560 Kaj en ĉi tiu kazo, pliigo ŝajne redonas int. 1218 00:54:10,560 --> 00:54:14,590 Kaj tiel int estas la reveno tipo de ĉi tiu funkcio. 1219 00:54:14,590 --> 00:54:16,090 >> Kion ĝi signifas por reveno? 1220 00:54:16,090 --> 00:54:19,810 Laŭvorte, vi uzas la ŝlosilvorto reveno. 1221 00:54:19,810 --> 00:54:24,640 Kaj tiam se kion vi reveni al la rajto de la ŝlosilvorto estas 1222 00:54:24,640 --> 00:54:28,340 entjero, tiam tio estas ja kohera kun kion ni promesis. 1223 00:54:28,340 --> 00:54:31,110 Vi ne povis fari ion kiel tiu - 1224 00:54:31,110 --> 00:54:32,280 saluton, mondo - 1225 00:54:32,280 --> 00:54:33,500 ĉar tio estas ĉeno. 1226 00:54:33,500 --> 00:54:35,440 Evidente ne estas entjero. 1227 00:54:35,440 --> 00:54:40,450 Do mallonge, la ŝarĝo estas vere kontraŭ ni, la programisto, esti specifa kiel 1228 00:54:40,450 --> 00:54:44,730 al kio ni reveni kaj tiam efektive irad reveni. 1229 00:54:44,730 --> 00:54:49,030 Kaj poste fari tad pli klara la kunteksto - 1230 00:54:49,030 --> 00:54:50,080 tie li estas denove. 1231 00:54:50,080 --> 00:54:51,060 La kunteksto - 1232 00:54:51,060 --> 00:54:52,830 granda surprizo venon nur momento. 1233 00:54:52,830 --> 00:54:57,720 La kunteksto tie nun estas, ke via komputilo memoro estas, denove, 1234 00:54:57,720 --> 00:54:59,070 gigabajto, du gigabajtoj, kiom. 1235 00:54:59,070 --> 00:54:59,630 Eble estas pli. 1236 00:54:59,630 --> 00:55:00,540 Eble estas malpli. 1237 00:55:00,540 --> 00:55:03,750 Sed la komputilo vidas ĝin kiel havanta malsamajn sekcioj. 1238 00:55:03,750 --> 00:55:04,860 Iu iras tien. 1239 00:55:04,860 --> 00:55:06,020 Ion alian iras tien. 1240 00:55:06,020 --> 00:55:07,540 Malsamaj stuff iras en la mezo. 1241 00:55:07,540 --> 00:55:09,300 Kaj hodiaŭ, ni nur komencus diri ĉi tiu historio. 1242 00:55:09,300 --> 00:55:11,130 >> Sed ni revenos al ĉi tempo. 1243 00:55:11,130 --> 00:55:15,000 Ĉar nun, la sola peco de memoro ni vere zorgas pri la teksto segmento 1244 00:55:15,000 --> 00:55:17,160 ĉar tio ĝuste reprezentas la nuloj kaj aĵoj 1245 00:55:17,160 --> 00:55:18,460 ke Clang havas outputted. 1246 00:55:18,460 --> 00:55:21,570 Do, kiam vi kuris de komando en la klavaro kiel a.out, aŭ vi duobla 1247 00:55:21,570 --> 00:55:25,350 klaku ikono en Mac OS aŭ Vindozo, via programo estas ŝargita de via fiksita 1248 00:55:25,350 --> 00:55:26,930 forpelos en RAM. 1249 00:55:26,930 --> 00:55:30,850 Kaj ĝi estas plopped supre de via komputilo RAM, por tiel diri. 1250 00:55:30,850 --> 00:55:35,470 Nun dume, kiel via programo komencas kuri kaj ĉefa gets vokita en la 1251 00:55:35,470 --> 00:55:39,240 programo vi skribis aŭ la programo Microsoft aŭ Apple skribis, iu ajn el liaj 1252 00:55:39,240 --> 00:55:42,930 lokaj variabloj fini tie malsupre sur la fundo de via komputilo memoro. 1253 00:55:42,930 --> 00:55:46,490 Sed se ĉefa nomas alian funkcion kiu mem ne havas variabloj aŭ 1254 00:55:46,490 --> 00:55:48,340 argumentojn, ili finas super ĝi. 1255 00:55:48,340 --> 00:55:50,670 Kaj se tiu funkcio vokas ion, ili finas super ĝi, 1256 00:55:50,670 --> 00:55:51,840 super ĝi, super ĝi. 1257 00:55:51,840 --> 00:55:56,100 Kaj nur unu fojon funkcio estas farita ekzekuti faras la pilo de pletoj, do 1258 00:55:56,100 --> 00:55:58,320 paroli, komencas akiri pli kaj pli malalte. 1259 00:55:58,320 --> 00:56:03,370 Kaj tio estas tiam, en vortoj, klarigas kial, kiam vi nomas kubo - 1260 00:56:03,370 --> 00:56:04,660 aŭ vi nomas pliigo - 1261 00:56:04,660 --> 00:56:06,490 vi pasante en kopio de la valoro. 1262 00:56:06,490 --> 00:56:09,840 Kaj kion tio signifas pictóricamente estas ke vi laŭvorte skribi la 1263 00:56:09,840 --> 00:56:14,540 numero 1 en alia parto de memoro, ŝanĝante ke 1 al 2, en la kazo de 1264 00:56:14,540 --> 00:56:15,360 pliigo - 1265 00:56:15,360 --> 00:56:17,450 aŭ al 8, en la kazo de kubo - 1266 00:56:17,450 --> 00:56:21,450 kaj poste ĵeti ke memoro for kiam la pliigo aŭ la kubo 1267 00:56:21,450 --> 00:56:23,410 funkcio redonas. 1268 00:56:23,410 --> 00:56:24,267 >> Demando. 1269 00:56:24,267 --> 00:56:25,517 [Inaudible] 1270 00:56:28,090 --> 00:56:29,970 DAVID J. Malan: Kie - tutmonda variabloj estas stokitaj en kio estas 1271 00:56:29,970 --> 00:56:32,960 aktuale nomita inicializado datumoj aŭ uninitialized datumoj. 1272 00:56:32,960 --> 00:56:35,900 La diferenco estas, se vi havas malloka variablo, kaj vi atribuas ĝin 1273 00:56:35,900 --> 00:56:39,530 tuj valoron kun la egalaj subskribi, ĝi finas ĉe la pinto. 1274 00:56:39,530 --> 00:56:43,390 Kaj se vi simple diru int x punktokomo sen valoro, ĝi finas iomete 1275 00:56:43,390 --> 00:56:46,670 pli malalta en RAM simple konvencio. 1276 00:56:46,670 --> 00:56:49,308 Aliaj demandoj. 1277 00:56:49,308 --> 00:56:49,750 Bone. 1278 00:56:49,750 --> 00:56:53,040 >> Do ĉi tiu bildo revenos kiam ni atingos pli potenca, per kio ni povas fari 1279 00:56:53,040 --> 00:56:53,830 kun la komputilo. 1280 00:56:53,830 --> 00:56:58,790 Sed nuntempe, ni havas mallongan intro al ĉifriko, specifa tipo de 1281 00:56:58,790 --> 00:57:01,910 ĉifriko kiu ne solvas ĉiujn mondproblemojn sed ne solvi 1282 00:57:01,910 --> 00:57:02,480 kelkaj el ili. 1283 00:57:02,480 --> 00:57:06,090 En ĉi tiu kazo tie, ni havas ion nomita sekreta ŝlosila ĉifriko. 1284 00:57:06,090 --> 00:57:10,430 Kaj sekreta ŝlosila ĉifriko, kiel la nomo sugestas, ĝi derivas ĝia sekureco 1285 00:57:10,430 --> 00:57:11,330 de sekreta. 1286 00:57:11,330 --> 00:57:14,720 Do ekzemple, se vi estas denove en grado lernejo kaj vi pasi 1287 00:57:14,720 --> 00:57:18,040 iom sekreta amleteron al la knabo aŭ knabino vi premante sur - se vi 1288 00:57:18,040 --> 00:57:20,820 volis preterpasonta tra la spektantaro, vi probable ne skribi 1289 00:57:20,820 --> 00:57:24,120 tia noto en angla aŭ kion ajn via denaska lingvo estas; prefere vi 1290 00:57:24,120 --> 00:57:25,800 povus kodi ĝi. 1291 00:57:25,800 --> 00:57:27,820 Aŭ vi povus simple sendi ilin tekston mesaĝon tiuj tagoj. 1292 00:57:27,820 --> 00:57:30,310 Sed vi eble vere pasi ilin noto tra la klasĉambro. 1293 00:57:30,310 --> 00:57:33,820 Kaj fari tion sendanĝere, en tia maniero, ke viaj amikoj kaj la majstro 1294 00:57:33,820 --> 00:57:36,820 ne scias kion vi skribas, vi eble supreniru kun sufiĉe simpla 1295 00:57:36,820 --> 00:57:37,800 algoritmo - 1296 00:57:37,800 --> 00:57:39,290 juna kvankam vi eble - 1297 00:57:39,290 --> 00:57:40,780 justaj levi la vortoj. 1298 00:57:40,780 --> 00:57:44,390 Do anstataŭ skribi A, vi povus skribi B. Anstataŭ B, vi povus skribi 1299 00:57:44,390 --> 00:57:46,670 C. Anstataŭ C, vi povus skribi D, ktp. 1300 00:57:46,670 --> 00:57:50,020 Aŭ vi povus veni supren kun pli kompleksa traduko de literoj 1301 00:57:50,020 --> 00:57:51,300 al malsamaj literoj. 1302 00:57:51,300 --> 00:57:55,440 Sed la ruzo estas la knabo aŭ knabino, al kiu vi sendas ĉi noto bezonas 1303 00:57:55,440 --> 00:57:56,850 scias ion. 1304 00:57:56,850 --> 00:57:59,620 Kiu estas kio, evidente? 1305 00:57:59,620 --> 00:58:01,400 Kiel, kion via sekreto estas. 1306 00:58:01,400 --> 00:58:04,620 Kiel, kio estas ke surĵeto inter Kiel kaj Bs kaj C kaj D? 1307 00:58:04,620 --> 00:58:08,780 Ĉu ĝuste aldonante, por tiel diri, por ĉiu el la literoj iri 1308 00:58:08,780 --> 00:58:09,730 A al B, B al C? 1309 00:58:09,730 --> 00:58:11,350 Ĉu pli kompleksa ol tio? 1310 00:58:11,350 --> 00:58:16,450 Do vi kaj via crush bezonas havi tiun sekretan informon. 1311 00:58:16,450 --> 00:58:18,170 Sed estas speco de catch-22 ĉi tie. 1312 00:58:18,170 --> 00:58:20,760 Se ĉi estas la unua fojo vi sendas tiun amleteron tra la 1313 00:58:20,760 --> 00:58:25,590 klaso, kiel estas tiu knabo aŭ knabino tuj scias, kion la sekreta eĉ estas? 1314 00:58:25,590 --> 00:58:28,450 Do sekreta ŝlosilo kripto ne solvas ĉiujn mondproblemojn. 1315 00:58:28,450 --> 00:58:30,490 Kaj estas vere rilato kiu ni revenos al cele 1316 00:58:30,490 --> 00:58:31,370 semestro la fino. 1317 00:58:31,370 --> 00:58:35,970 >> Simile, havas neniu el ni probable iam sendis - 1318 00:58:35,970 --> 00:58:39,453 simile, ĉu la plimulto de ni ne konas iun kiu funkcias, ekzemple, ĉe 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 Kaj tamen, multaj el ni probable aĉetis frandajxojn cxe Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 Kaj ni estis instruitaj por supozi, ke tiuj TTT-komerco 1322 00:58:45,670 --> 00:58:47,060 transakcioj estas sekura. 1323 00:58:47,060 --> 00:58:47,210 Ĝuste? 1324 00:58:47,210 --> 00:58:49,310 La URL probable diras https. 1325 00:58:49,310 --> 00:58:51,590 Estas eble stulta iom pendseruro ikono ie. 1326 00:58:51,590 --> 00:58:54,680 Ekzistas ia ĉifriko certigi viajn kreditkartajn detalojn 1327 00:58:54,680 --> 00:58:56,980 inter vi kaj Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 Kaj tamen, se ĉifriko engaĝas sciante iu sekreta, kaj tamen mi ne 1329 00:59:00,410 --> 00:59:03,330 scias neniu en Amazonio, kaj mi certe ne aranĝis ian 1330 00:59:03,330 --> 00:59:07,350 sekreta kun iu en Amazonio, kiom estas mia komputilo aŭ mia retumilo faras tion? 1331 00:59:07,350 --> 00:59:10,100 Nu, rezultas ekzistas aliaj specoj de ĉifriko aro kiun solvi 1332 00:59:10,100 --> 00:59:10,740 tiun problemon. 1333 00:59:10,740 --> 00:59:13,610 Sed por hodiaŭ, ni enfokusigas la simpla, kie vi povas aranĝi en 1334 00:59:13,610 --> 00:59:18,480 antaŭi scii iu sekreta, kiel plus 1 aŭ iu surĵeto inter Kiel kaj Bs. 1335 00:59:18,480 --> 00:59:20,710 >> Kaj la procezo de ĉifriko ĝenerale engaĝas ĉi. 1336 00:59:20,710 --> 00:59:23,550 Vi havas iujn simpla teksto, reprezentita tie maldekstre. 1337 00:59:23,550 --> 00:59:26,260 Vi kuras ĝi tra ia algoritmo aŭ proceduro 1338 00:59:26,260 --> 00:59:27,670 por encrypting ĝin. 1339 00:59:27,670 --> 00:59:31,390 Eble tio estas nur A iĝas B, B iĝas C. Kaj tiam vi finos kun 1340 00:59:31,390 --> 00:59:32,260 kodita teksto. 1341 00:59:32,260 --> 00:59:36,450 Dume, unufoje vian crush ricevas la sekreta mesagxo, li aŭ ŝi devas tiam 1342 00:59:36,450 --> 00:59:39,950 deĉifri ĝin ĝenerale dorsflankanta ke algoritmo por tiel akiri 1343 00:59:39,950 --> 00:59:41,640 apogi la simpla teksto. 1344 00:59:41,640 --> 00:59:43,860 Nun estas fizika personigoj de ĉi. 1345 00:59:43,860 --> 00:59:46,720 Ekzemple, jen estas iom sekreta deĉifrilo ringo. 1346 00:59:46,720 --> 00:59:50,060 Kaj jen estas ringo en la senco ke ekzistas du diales tie. 1347 00:59:50,060 --> 00:59:53,630 Sur la ekstera periferio de tiu afero, estas literoj A tra Z, 1348 00:59:53,630 --> 00:59:55,110 kvankam ili estas en hazarda ordo. 1349 00:59:55,110 --> 00:59:58,410 Kaj en la interno, ekzistas efektive iuj nombroj, tia ke kun ĉi 1350 00:59:58,410 --> 01:00:02,940 ringo, vi povas ia turni la ekstera sed ne interne por laŭliniigi 1351 01:00:02,940 --> 01:00:04,110 nombroj kun literoj. 1352 01:00:04,110 --> 01:00:08,290 Kaj en la klipo vi baldaŭ vidos - kelkaj el kiuj eble vi vidis 24/7 1353 01:00:08,290 --> 01:00:11,120 ĉirkaŭ la kristnasko de filmo nomita Al Kristnasko Story. 1354 01:00:11,120 --> 01:00:16,050 Vi vidos ke iom Ralphie estis tiel avida por elkompreni kiel iom orfa 1355 01:00:16,050 --> 01:00:19,810 Annie la sekreta mesaĝo estis al li, ke ĝi estis komunikita, mi kredas, en la 1356 01:00:19,810 --> 01:00:22,810 formi el nombraj mesaĝojn sur seria skatolo. 1357 01:00:22,810 --> 01:00:26,760 Kaj vi havus por amasigi ĉiuj malgrandaj kartoj kiuj venis 1358 01:00:26,760 --> 01:00:27,480 en la cerealo skatolo. 1359 01:00:27,480 --> 01:00:28,320 Vi devis sendi ilin in 1360 01:00:28,320 --> 01:00:31,060 Vi devis reiri la sekreta deĉifrilo ringon, por ke vi povas finfine kompreni 1361 01:00:31,060 --> 01:00:34,190 el kio la surĵeto estas inter literoj kaj numeroj, 1362 01:00:34,190 --> 01:00:35,420 aŭ literoj kaj literoj. 1363 01:00:35,420 --> 01:00:39,790 Do mi donos al vi mallongan klipo de A Christmas Story motivi pset 2 kaj 1364 01:00:39,790 --> 01:00:42,340 nia diskuto, tre frue, de tabeloj. 1365 01:00:42,340 --> 01:00:43,773 Do jen ni havas Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [Vídeo] 1367 01:00:44,126 --> 01:00:47,470 -Estu sciate al ĉiuj kaj sundry ke Ralph Parker maniere nomumis 1368 01:00:47,470 --> 01:00:50,690 membro de la Malgranda Orfino Annie Sekreta Rondo kaj povas postuli la tutan 1369 01:00:50,690 --> 01:00:53,500 la honoroj kaj profitoj okazanta tio. 1370 01:00:53,500 --> 01:00:56,040 -Subskribita, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Legalizita, Pierre André! 1372 01:00:58,730 --> 01:01:00,150 Inke! 1373 01:01:00,150 --> 01:01:02,910 Honoroj kaj profitojn, jam en la aĝo de naŭ. 1374 01:01:09,970 --> 01:01:10,730 Venu, ni iru sur ĝi. 1375 01:01:10,730 --> 01:01:15,000 Mi ne bezonas ĉion, kion ĵazo pri kontrabandistoj kaj piratoj. 1376 01:01:15,000 --> 01:01:17,624 -Aŭskultu morgaŭ nokte por la konkludante aventuro de La Nigra 1377 01:01:17,624 --> 01:01:19,710 Pirato Ŝipo. 1378 01:01:19,710 --> 01:01:23,380 Nun estas tempo por Annie la sekreta mesaĝo por vi membroj 1379 01:01:23,380 --> 01:01:25,670 de la Sekreta Rondo. 1380 01:01:25,670 --> 01:01:30,260 Memoru, infanoj, nur membroj de Annie La Sekreta Rondo povas deĉifri 1381 01:01:30,260 --> 01:01:31,660 Annie la sekreta mesaĝo. 1382 01:01:31,660 --> 01:01:36,230 Memoru, Annie estas dependanta sur vi. 1383 01:01:36,230 --> 01:01:38,720 Ŝanĝu vian pingloj al B2. 1384 01:01:38,720 --> 01:01:41,040 Jen la mesaĝo. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Mi estas en mia unua sekreta kunveno. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre estis en granda vocxo nokto. 1389 01:01:51,700 --> 01:01:54,890 Mi povus diri, ke ĉi tiu nokto la mesaĝo estis vere grava. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 Tio estas mesaĝo de Annie sin. 1392 01:01:58,590 --> 01:01:59,840 Memoru, ne diru al neniu. 1393 01:02:04,570 --> 01:02:08,750 -90 Duaj poste, mi estas la sola ĉambro en la domo kie knabo de naŭ 1394 01:02:08,750 --> 01:02:12,980 povis sidi en privatecon kaj malkodi. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. Mi iris al la sekva. 1396 01:02:17,130 --> 01:02:20,330 E. La unua vorto estas esti. 1397 01:02:20,330 --> 01:02:22,670 S. Ĝi venis pli facile nun. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Ho, venu, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Mi devas iri. 1401 01:02:28,430 --> 01:02:30,350 -I'll be right sube, ma. 1402 01:02:30,350 --> 01:02:33,720 -Gee Whiz. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Nepre. 1404 01:02:38,270 --> 01:02:40,000 Nepre kio? 1405 01:02:40,000 --> 01:02:42,105 Kio estis Little Orphan Annie provas diri? 1406 01:02:42,105 --> 01:02:43,095 Nepre kio? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy has got to go. 1409 01:02:44,580 --> 01:02:45,570 Ĉu vi bonvolos veni el? 1410 01:02:45,570 --> 01:02:46,560 -Bone, ma. 1411 01:02:46,560 --> 01:02:48,540 Mi tuj eliris. 1412 01:02:48,540 --> 01:02:50,580 -Mi ricevas pli proksime nun. 1413 01:02:50,580 --> 01:02:52,550 La streĉiĝo estis terura. 1414 01:02:52,550 --> 01:02:53,355 Kio estis tio? 1415 01:02:53,355 --> 01:02:56,315 La sorto de la planedo povas pendi en la pesilo. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy havas jam iri. 1418 01:02:59,165 --> 01:03:02,310 -I'll be right out, por laŭte ploris. 1419 01:03:02,310 --> 01:03:04,000 -Gee, preskaŭ tie. 1420 01:03:04,000 --> 01:03:05,180 Miaj fingroj flugis. 1421 01:03:05,180 --> 01:03:07,150 Mia menso estis ŝtalo kaptilo. 1422 01:03:07,150 --> 01:03:08,790 Ĉiu poro vibris. 1423 01:03:08,790 --> 01:03:10,040 Estis preskaŭ klara. 1424 01:03:10,040 --> 01:03:13,400 Jes, jes, jes, jes. 1425 01:03:13,400 --> 01:03:18,960 -Nepre trinku vian Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Al crummy komerca? 1428 01:03:28,200 --> 01:03:29,640 Filo de ĉiesulino. 1429 01:03:29,640 --> 01:03:33,340 [FINO vídeo] 1430 01:03:33,340 --> 01:03:36,040 >> DAVID J. Malan: Do ni havas ĉifriko. 1431 01:03:36,040 --> 01:03:39,670 Do kiel en komputilo ni povas iri apliki aŭ 1432 01:03:39,670 --> 01:03:40,950 reprezentas aferojn tiel? 1433 01:03:40,950 --> 01:03:44,430 Nu, ni bezonas maniero de esprimi nin iom pli flekse ol 1434 01:03:44,430 --> 01:03:46,420 nia variabloj tiel malproksime permesis. 1435 01:03:46,420 --> 01:03:47,370 Ni havis ints. 1436 01:03:47,370 --> 01:03:48,380 Ni havis signoj. 1437 01:03:48,380 --> 01:03:50,790 Ni havis flosas kaj duoblaj kaj kelkaj aliaj. 1438 01:03:50,790 --> 01:03:55,050 Sed tiuj estas individuaj pecoj de memoro kiu ne vere nin permesas 1439 01:03:55,050 --> 01:03:58,010 esprimi aferojn kiel vortoj kaj frazoj kaj frazoj. 1440 01:03:58,010 --> 01:04:00,200 Ja, ni nomas tion kordoj. 1441 01:04:00,200 --> 01:04:03,650 Sed ni promesis ke ĉi tio estas vere nur simpligo en la CS50 1442 01:04:03,650 --> 01:04:07,020 biblioteko kiu ni intencis senŝeligi dorso. 1443 01:04:07,020 --> 01:04:08,970 >> Kaj tial ni komencu fari tion tie ĉi. 1444 01:04:08,970 --> 01:04:11,130 Lasu min kaj malfermu dosieron - 1445 01:04:11,130 --> 01:04:13,770 ĉiuj el tiuj dosieroj estas haveblaj kiel kutime en linio - 1446 01:04:13,770 --> 01:04:19,120 vokis array.c solvi problemon nerilataj al kordoj sed tio pentras 1447 01:04:19,120 --> 01:04:23,040 bildo tie pri kiel ni povus uzi iun nomita tabelo. 1448 01:04:23,040 --> 01:04:25,530 Tabelo estas datumtipo. 1449 01:04:25,530 --> 01:04:31,320 Ĝi estas tipo de variablo, de varoj, kiu havas plurajn malgrandaj datumtipoj 1450 01:04:31,320 --> 01:04:34,150 ene de ĝi malantaŭo al malantaŭo al malantaŭo al malantaŭo. 1451 01:04:34,150 --> 01:04:37,700 Do ekzemple, se ni volas skribi iom programo kiu donas al vi viajn 1452 01:04:37,700 --> 01:04:42,110 kvizon averaĝa por kurso kiel 50 kiu havas du kvizoj, vi povus tre facile 1453 01:04:42,110 --> 01:04:45,170 skribi ĉi programo - bazita eĉ en iuj de la pasinta semajno materialo - 1454 01:04:45,170 --> 01:04:47,770 uzante GetInt kaj paro de variabloj. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, kaj ĝi estas bela simpla. 1456 01:04:51,920 --> 01:04:55,930 Estas eble 10, 20 linioj de kodo, max, apliki programon kiu petas al la 1457 01:04:55,930 --> 01:05:01,170 uzanto por du kvizo partituroj kaj tiam komputas ilia averaĝa aldonante ilin 1458 01:05:01,170 --> 01:05:03,850 kune, dividanta per du, kaj poste presi la rezultojn. 1459 01:05:03,850 --> 01:05:06,380 Ni povus probable faras tion sufiĉe facile nun post 1460 01:05:06,380 --> 01:05:07,510 iu nombro de minutoj. 1461 01:05:07,510 --> 01:05:11,005 >> Sed la problemo estas ke supozu ke 50 Havis tri kvizojn aŭ kvar. 1462 01:05:11,005 --> 01:05:13,510 Supozu ke vi volis uzi la saman programon por klaso kiu havis 1463 01:05:13,510 --> 01:05:14,850 semajna kvizojn. 1464 01:05:14,850 --> 01:05:16,610 Pensu pri klaso kiu ĉiusemajne kvizojn. 1465 01:05:16,610 --> 01:05:20,610 Se tie estas kiel 16 aŭ tiel semajnoj en semestro, nun vi havas 16 variabloj - 1466 01:05:20,610 --> 01:05:24,270 int quiz1, int quiz2, int quiz3, int quiz4. 1467 01:05:24,270 --> 01:05:27,560 Tuj kiam oni komencas vidi ĉi redundo, ĉi kopii kaj bati 1468 01:05:27,560 --> 01:05:31,390 de kodo, ĝi devus komenci fari vi deziras, ke estis iam pli bona vojo. 1469 01:05:31,390 --> 01:05:33,930 Kaj dankeme, pro arrays, ekzistas. 1470 01:05:33,930 --> 01:05:34,980 Do ni faru ĉi. 1471 01:05:34,980 --> 01:05:38,430 Unue, lasu min enkonduki tre simpla afero, ke ni ne uzas tiel malproksime, 1472 01:05:38,430 --> 01:05:40,140 sed vi vidos ĝin foje en kodo. 1473 01:05:40,140 --> 01:05:42,360 Tio estas kio ĝenerale nomis konstanto. 1474 01:05:42,360 --> 01:05:45,790 Do ĝi estas konstanto en la senco ke ĉi tiu valoro neniam ŝanĝas. 1475 01:05:45,790 --> 01:05:49,210 La homa konvencio kiam kreante konstantan estas uzi ĉiuj ĉefurboj 1476 01:05:49,210 --> 01:05:51,940 literoj, nur por ke ĝi vere elstaras en via kodo. 1477 01:05:51,940 --> 01:05:55,960 Kaj la speciala ŝlosilvorto ke vi uzas en C estas # difini. 1478 01:05:55,960 --> 01:06:00,250 Do se vi diras # difini, tiam spaco, tiam la vorto, kiun vi volas uzi por 1479 01:06:00,250 --> 01:06:03,260 la konstanta nomo, kaj tiam la valoro de la konstanta. 1480 01:06:03,260 --> 01:06:06,180 Do rimarki, ĉi tiu estas malsama de asignanta ion al variablo. 1481 01:06:06,180 --> 01:06:07,020 Ne egala signo. 1482 01:06:07,020 --> 01:06:08,240 Ne punktokomo. 1483 01:06:08,240 --> 01:06:11,410 Tio estas kio ĝenerale konata kiel antaŭtraktilo direktivo, sed pli en 1484 01:06:11,410 --> 01:06:12,210 ke alia tempo. 1485 01:06:12,210 --> 01:06:18,540 >> Por la momento, ĉi kreas _unchanging_ valoro nomis kvizojn kies reala 1486 01:06:18,540 --> 01:06:19,940 nombra valoro estas 2. 1487 01:06:19,940 --> 01:06:24,020 Do ajn vi vidas kvizojn, kvizojn, kvizojn laŭlonge de ĉi tiu dosiero, jen 1488 01:06:24,020 --> 01:06:25,410 nur la numero 2. 1489 01:06:25,410 --> 01:06:28,100 Nun, se mi rigardas ĉefa nun, ni vidos kiel tio funkcias. 1490 01:06:28,100 --> 01:06:29,500 Unue, ĝi aspektas iom kamufla. 1491 01:06:29,500 --> 01:06:31,340 Sed estas tute stuff de semajno unu. 1492 01:06:31,340 --> 01:06:32,710 Demandu la uzanto por notoj. 1493 01:06:32,710 --> 01:06:33,630 Kiel ni faru tion? 1494 01:06:33,630 --> 01:06:35,470 Nu, en linio 22 - 1495 01:06:35,470 --> 01:06:37,210 ĉi tiu estas vere la suka parto - 1496 01:06:37,210 --> 01:06:40,960 Mi deklaras kaleŝego, sed ne nur sola kaleŝego. 1497 01:06:40,960 --> 01:06:44,620 Mi deklaras, pli ĝuste, tabelo de flosanta punkto valoroj. 1498 01:06:44,620 --> 01:06:49,100 Ke variablo tuj nomos gradoj, kiel implicita tie. 1499 01:06:49,100 --> 01:06:53,080 Sed la sola peco de nova sintakso tiam estas tiuj rektaj krampoj, la fakto 1500 01:06:53,080 --> 01:06:59,350 ke mi diris kaleŝego gradoj kaj poste malfermita krampo kaj poste numeron. 1501 01:06:59,350 --> 01:07:02,460 Rimarki, se tio ne estas konstanta, tio estas ĝuste kiel ni faris ĉi. 1502 01:07:02,460 --> 01:07:06,890 Tio signifas hey komputilo, donu al mi du flosas, kaj ni kolektive nomas 1503 01:07:06,890 --> 01:07:08,220 ili notoj. 1504 01:07:08,220 --> 01:07:11,920 Ĉi tiu estas en kontrasto al multe pli teda procezon kiel ĉi tio. 1505 01:07:11,920 --> 01:07:15,850 Flosi grade1, flosi grade2, ks. 1506 01:07:15,850 --> 01:07:20,010 Do tabelo nin permesas apliki tiun ideon sed multe malpli messily, en 1507 01:07:20,010 --> 01:07:24,630 tiel ke ni povas skribi unu linion de kodo anstataŭ, ekzemple, 16 di 16 1508 01:07:24,630 --> 01:07:25,740 semajno semestro. 1509 01:07:25,740 --> 01:07:29,950 Do mi ne volas malmola kodo 2 ĉar se vi pensas pri tiu nun 1510 01:07:29,950 --> 01:07:34,160 logike - supozi venontjare CS50 ŝanĝojn al 3 kvizojn anstataŭe. 1511 01:07:34,160 --> 01:07:35,510 Kaj mi havis la numero 2 tie. 1512 01:07:35,510 --> 01:07:36,600 Mi havis la numero 2 tie. 1513 01:07:36,600 --> 01:07:37,580 Mi havis la numero 2 tie. 1514 01:07:37,580 --> 01:07:38,560 Mi havis la numero 2 tie. 1515 01:07:38,560 --> 01:07:43,180 Ĝi iĝas tre teda kaj tre facile ŝraŭbo supren kaj hazarde ŝanĝi 1516 01:07:43,180 --> 01:07:47,690 unu valoro al 3 kaj perdi iu alia valoro de 2. 1517 01:07:47,690 --> 01:07:52,460 Do mi tuj anstataŭ abstrakta ĉi for kaj uzi ĉi tiu konstanta, ke kiel lia 1518 01:07:52,460 --> 01:07:54,120 nomo sugestas, neniam ŝanĝas. 1519 01:07:54,120 --> 01:07:57,710 Kaj nun, ne gravas ĉu ni havas malsamajn kvizojn ĉi tiu jaro aŭ apud mi 1520 01:07:57,710 --> 01:08:01,210 Nur oni devas ŝanĝi ĝin en unu loko, ĝis ĉi tie al la top. 1521 01:08:01,210 --> 01:08:02,720 >> Do jen ĉio konstanto estas. 1522 01:08:02,720 --> 01:08:08,680 Dume, la nova koncepta trajto estas tiu de tabelo. 1523 01:08:08,680 --> 01:08:14,660 Do la rektaj krampoj donu al mi ĉi tio multaj flosas kaj lasas min kolektive 1524 01:08:14,660 --> 01:08:16,630 nomas ilin gradoj tie. 1525 01:08:16,630 --> 01:08:17,990 Do nun ni vidu kion mi faros. 1526 01:08:17,990 --> 01:08:20,359 Tie en linio 24 estas la komenco de a por buklo. 1527 01:08:20,359 --> 01:08:22,260 Tiu estas vere nenio kaprico. 1528 01:08:22,260 --> 01:08:25,060 Ĝi simple uzante kvizojn anstataŭ malmola-kodita nombro. 1529 01:08:25,060 --> 01:08:27,790 Sed estas nenio intelekte malsamaj tie pasintsemajne. 1530 01:08:27,790 --> 01:08:29,040 Tiu estas nur printf. 1531 01:08:29,040 --> 01:08:35,490 Do printf ("kvizo numero% d de% d") ĉar mi nur volas presi donu al mi kvizon 1532 01:08:35,490 --> 01:08:38,050 numero unu el du kaj tiam du el du. 1533 01:08:38,050 --> 01:08:39,850 Do ĉi tiu estas pure estetika afero. 1534 01:08:39,850 --> 01:08:42,500 Sed la interesa parto nun estas en linio 27. 1535 01:08:42,500 --> 01:08:48,310 Por plenigi unu el la du anstataŭiloj kun flosanta punkto 1536 01:08:48,310 --> 01:08:51,029 valoro, vi denove uzos kvadrataj krampoj. 1537 01:08:51,029 --> 01:08:55,620 En ĉi tiu kazo, Mi uzas i ĉar ĉi por buklo komencis kun i egalante 1538 01:08:55,620 --> 01:08:57,560 kio valoro, ŝajne? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Do en la unua ripeto de ĉi maŝo, estas kvazaŭ mi 1541 01:09:01,350 --> 01:09:02,689 verkis en kodo. 1542 01:09:02,689 --> 01:09:05,580 Sed je la dua iteracio de ĉi maŝo, estas kvazaŭ mi 1543 01:09:05,580 --> 01:09:07,750 verkis en mia kodo. 1544 01:09:07,750 --> 01:09:10,750 Sed la fakto, ke Mi uzas variablo estas perfekta ĉar, kiel la nomo 1545 01:09:10,750 --> 01:09:14,300 sugestas, ĝi estas varianta ĝia valoro en ĉiu ripeto. 1546 01:09:14,300 --> 01:09:17,370 Do mi plenigante tiun tabelo unu loko samtempe. 1547 01:09:17,370 --> 01:09:18,910 Kion tio tabelo aspektas? 1548 01:09:18,910 --> 01:09:21,430 Nu, la kialo mi tiris ĉi tiu super simpla rektangulo sur la ekrano tie 1549 01:09:21,430 --> 01:09:23,350 antaux estis por tiu kialo. 1550 01:09:23,350 --> 01:09:27,279 Tabelo estas nur eron de memoro sekvita de alia bloko de memoro, 1551 01:09:27,279 --> 01:09:30,109 sekvata de alia bloko de memoro, kaj tiel plu. 1552 01:09:30,109 --> 01:09:35,260 Do, se miaj tabelo estas de amplekso 2, en ĉi tiu kazo tie, ĉiuj mi farus per 1553 01:09:35,260 --> 01:09:37,590 tajpi en mia kvizo partituroj, kiel ĉi tie. 1554 01:09:37,590 --> 01:09:39,430 Mi akiris 100 sur ĉi tiu. 1555 01:09:39,430 --> 01:09:42,020 Kaj tiam mi atingis 99 en ĉi tiu. 1556 01:09:42,020 --> 01:09:46,040 Tiam ĉi memoro povus eĉ esti uzata ĉar mi nur demandis la 1557 01:09:46,040 --> 01:09:48,689 komputilo por tabelo de amplekso 2. 1558 01:09:48,689 --> 01:09:50,180 Tiuj kvadratoj estas ankoraŭ tie. 1559 01:09:50,180 --> 01:09:50,340 Ĝuste? 1560 01:09:50,340 --> 01:09:52,500 Vi ankoraŭ havas du gigabajtoj de RAM, eĉ se vi estas nur 1561 01:09:52,500 --> 01:09:53,979 petante du flosas. 1562 01:09:53,979 --> 01:09:58,710 Do la ideo malantaŭ tabeloj estas ke la komputilo nur prenas eron de memoro 1563 01:09:58,710 --> 01:10:03,230 kaj tiam apportions malgrandaj pecoj malantaŭo al malantaŭo al malantaŭo al malantaŭo. 1564 01:10:03,230 --> 01:10:04,740 Kaj por ke ĉio tabelo estas. 1565 01:10:04,740 --> 01:10:09,080 Ĝi estas bela eron de memoro, ene de kiuj vi povas meti tion. 1566 01:10:09,080 --> 01:10:12,400 >> Nun ĉi tio okazas al tiam faru nur iuj enuigaj aritmetiko. 1567 01:10:12,400 --> 01:10:16,170 Se mi rulumu malsupren tie, ĉi tiu estas kie mi tiam ankaŭ persisti super la tabelo. 1568 01:10:16,170 --> 01:10:19,410 Mi venis kun la sumado de ĉiuj valoroj en la tabelo. 1569 01:10:19,410 --> 01:10:22,390 Kaj tiam mi uzas la ronda funkcio ĉi tie por reale fari la 1570 01:10:22,390 --> 01:10:23,940 Resume dividita de Quizzes. 1571 01:10:23,940 --> 01:10:27,450 Sed lasu min skuos mian manon en tiu kiel speco de sufiĉe aritmetiko por nun. 1572 01:10:27,450 --> 01:10:30,010 Sed ĉiuj ke tio faras por mi finfine estas komputanta kun mezala. 1573 01:10:30,010 --> 01:10:33,640 Do unue kvizo plus dua kvizo, dividita per 2, kaj poste presi 1574 01:10:33,640 --> 01:10:34,700 ĝin kiel int. 1575 01:10:34,700 --> 01:10:39,030 >> Sed estu la nun transiro al malsama ekzemple nomita string1, 1576 01:10:39,030 --> 01:10:42,370 kiu pentras similan bildon sed uzante ŝnurojn. 1577 01:10:42,370 --> 01:10:45,550 Lasu min kaj simpligi ĉi por nur momento. 1578 01:10:45,550 --> 01:10:48,340 Kaj pardonu la deŝovon por nun. 1579 01:10:48,340 --> 01:10:52,280 Avizo en linio 19 de ĉi tiu ekzemplo, mi alvenas ĉenon de la uzanto. 1580 01:10:52,280 --> 01:10:55,780 Sed rimarki kion mi sekva faras en linioj 22 antaŭen. 1581 01:10:55,780 --> 01:11:00,260 Mi vere ripetanta el i supren al - kaj ĉi estas nova lertaĵo - 1582 01:11:00,260 --> 01:11:02,730 strlen, kordoj longa. 1583 01:11:02,730 --> 01:11:07,010 Tiu estas funkcio kiu venas kun C ke se vi pasas ĝin ĉenon, ĝi rakontas 1584 01:11:07,010 --> 01:11:08,950 vi kiom da karakteroj estas en tiu linio. 1585 01:11:08,950 --> 01:11:09,440 Tio estas ĉio. 1586 01:11:09,440 --> 01:11:12,520 La fakto ke ĝi estas strlen anstataŭ ĉenon longo estas nur ĉar ĝi estas 1587 01:11:12,520 --> 01:11:13,040 pli konciza. 1588 01:11:13,040 --> 01:11:17,100 30 jaroj, homoj ŝatis skribi aĵojn kiel koncize kiom eblas. 1589 01:11:17,100 --> 01:11:19,080 Do ni observis ke konvencion tie. 1590 01:11:19,080 --> 01:11:21,730 i + + nur signifas pliigo i en ĉiu ripeto. 1591 01:11:21,730 --> 01:11:24,310 Kaj nun rimarkis tion, kio estas vere interesa. 1592 01:11:24,310 --> 01:11:28,730 Do en linio 24, mi diras komputilo, donu al mi karaktero, ok 1593 01:11:28,730 --> 01:11:30,770 bitoj, kaj nomas ĝin c. 1594 01:11:30,770 --> 01:11:35,370 Sed kio estas tio sur la dekstra flanko dirante? 1595 01:11:35,370 --> 01:11:38,150 En la angla, kio faras ke reprezenti? 1596 01:11:38,150 --> 01:11:40,070 [Inaudible] 1597 01:11:40,070 --> 01:11:40,490 DAVID J. Malan: Ĝuste. 1598 01:11:40,490 --> 01:11:42,390 Donu al mi la unua gravulo en la tabelo. 1599 01:11:42,390 --> 01:11:45,400 Aŭ pli ĝenerale, donu al mi la i-a signo en la tabelo. 1600 01:11:45,400 --> 01:11:48,230 Kaj realigi gravas nun ke kiel komputilo sciencistoj, ni estas vere 1601 01:11:48,230 --> 01:11:49,330 rakontante de 0. 1602 01:11:49,330 --> 01:11:51,290 Vi ne havas bontrovo nun komenci fari ĉi tion. 1603 01:11:51,290 --> 01:11:54,580 Vi nun devas konduti konforme al la komputilo atendoj kaj 1604 01:11:54,580 --> 01:11:58,010 rakonti de nulo ĉar [0] tuj estos la unua 1605 01:11:58,010 --> 01:11:59,670 karaktero en linio. 1606 01:11:59,670 --> 01:12:01,320 [1] tuj estos la dua. 1607 01:12:01,320 --> 01:12:03,610 [2] tuj estos la tria, kaj tiel plu. 1608 01:12:03,610 --> 01:12:08,840 Do ĉi tiu programo, se mi kompili ĝin - tiu ĉi estas, denove, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Do fari string1. 1610 01:12:11,040 --> 01:12:16,730 Kaj nun mi kuros string1 en mia fina fenestro. 1611 01:12:16,730 --> 01:12:19,180 Oni atendas enigo, do mi tuj tajpi en, ekzemple, Davido. 1612 01:12:19,180 --> 01:12:20,080 Eniri. 1613 01:12:20,080 --> 01:12:23,350 Kaj nun presas DAVIDO ĉiuj en malsamaj linioj ĉar 1614 01:12:23,350 --> 01:12:24,430 rimarki kion mi faras. 1615 01:12:24,430 --> 01:12:27,510 Mi presi unu signo samtempe. 1616 01:12:27,510 --> 01:12:29,100 Nun ni ne iru en detalo hodiaŭ en ĉi tio. 1617 01:12:29,100 --> 01:12:31,610 Sed mi forviŝita antaŭ momento ĉi ĉeko tie. 1618 01:12:31,610 --> 01:12:36,310 Rezultas, ke se la uzanto estas misbehaving, adversarial, aŭ simple 1619 01:12:36,310 --> 01:12:41,780 konfuzita, vi povas efektive malsukcesas doni ĉenon de iu longa. 1620 01:12:41,780 --> 01:12:43,640 Se vi batis la malĝustan klavon sur la klavaro, vi donu 1621 01:12:43,640 --> 01:12:44,390 neniu string at all. 1622 01:12:44,390 --> 01:12:47,790 Aŭ se vi estas malica, eble vi provu almeti en gigabajto la valoron de 1623 01:12:47,790 --> 01:12:49,380 eseo plenigi tiun ĉenon. 1624 01:12:49,380 --> 01:12:52,060 Kaj se la komputilo funkcias el memoro, ĝi rezultas ke ni iras 1625 01:12:52,060 --> 01:12:54,310 reiri tiu speciala valoro nomita nula. 1626 01:12:54,310 --> 01:12:57,550 Do nuntempe, nur scias, ke tie estas tio specialan valoron nomita nula ke 1627 01:12:57,550 --> 01:13:01,000 ni permesos kontroli kiam ni estas el memoro, inter aliaj aferoj. 1628 01:13:01,000 --> 01:13:07,330 >> Sed se mi malfermas nun string2, rimarkos unu diferenco ĉi tie. 1629 01:13:07,330 --> 01:13:09,760 Rimarku unu diferenco tie kun string2. 1630 01:13:09,760 --> 01:13:13,260 Kun string2, ĉi por buklo estas iom malsama. 1631 01:13:13,260 --> 01:13:16,350 Lasu min forigi la nulls tiel ke ni povas paroli pri tiuj alia tempo. 1632 01:13:16,350 --> 01:13:18,460 Sed kio estas malsama pri la por buklo tiu tempo? 1633 01:13:21,580 --> 01:13:23,160 Kaj mi povas reveni al la antaŭa ekzemplo. 1634 01:13:23,160 --> 01:13:24,800 Do jen versio du. 1635 01:13:24,800 --> 01:13:27,020 Tio estas versio unu. 1636 01:13:27,020 --> 01:13:31,935 Unu, du, unu du. 1637 01:13:35,030 --> 01:13:38,240 Do la strlen alvoko estas kie? 1638 01:13:38,240 --> 01:13:40,420 Ĝi estas en la unua parto de la por buklo. 1639 01:13:40,420 --> 01:13:43,060 Ajna pensojn sur kial mi faras tion? 1640 01:13:43,060 --> 01:13:43,690 Yeah. 1641 01:13:43,690 --> 01:13:46,010 [Inaudible] 1642 01:13:46,010 --> 01:13:47,630 DAVID J. Malan: Do ni ne nomas la funkcion ĉiu unuopa tempo. 1643 01:13:47,630 --> 01:13:48,040 Ekzakte. 1644 01:13:48,040 --> 01:13:50,350 Memori el por maŝojn kiuj ili estas super simpla iam vi ia 1645 01:13:50,350 --> 01:13:52,180 kompreni ke tiu estas la inicialización, la 1646 01:13:52,180 --> 01:13:53,330 kondiĉo, kaj la ĝisdatigon. 1647 01:13:53,330 --> 01:13:55,430 La problemo estas, ke la kondiĉo okazas sur ĉiu 1648 01:13:55,430 --> 01:13:56,600 ripeto de la ciklo. 1649 01:13:56,600 --> 01:13:59,930 Kaj tial en ĉi tiu ekzemplo tie, kio estas malbona pri la fakto 1650 01:13:59,930 --> 01:14:03,500 ke ĉi tiu estas mia kondiĉo? 1651 01:14:03,500 --> 01:14:05,920 Vi vokas strlen denove kaj denove kaj denove. 1652 01:14:05,920 --> 01:14:08,990 Sed iam mi tajpis en DAVID, la longo de tiu linio estas kvin. 1653 01:14:08,990 --> 01:14:11,560 Kaj ĝi ne tuj ŝanĝos sur ĉiu ripeto de la ciklo, ĉar la 1654 01:14:11,560 --> 01:14:15,560 kordoj ankoraŭ D-Al-V-mi-D. Do ĉi tiu estas aludo al kio okazos al la 1655 01:14:15,560 --> 01:14:19,650 pli kaj pli grava ideo konata kiel dezajno decidon, kie - nur ne 1656 01:14:19,650 --> 01:14:21,640 fari la komputilon fari nenecesan laboron. 1657 01:14:21,640 --> 01:14:25,630 >> Nun nur kiel sneak preview de pset 2, pset 2 en la eldono normo estas 1658 01:14:25,630 --> 01:14:28,850 tuj defias vin al reale efektivigi iujn numero de ĉifroj, iuj 1659 01:14:28,850 --> 01:14:32,650 numeron de ĉifrado algoritmoj, por ke vi povu ambaŭ ĉifri kaj malĉifri 1660 01:14:32,650 --> 01:14:35,530 sekretajn mesaĝojn, multe kiel la Ralphie tie malkoditaj. 1661 01:14:35,530 --> 01:14:38,720 En la hacker eldono de pset 2, ni tuj iru iom pli. 1662 01:14:38,720 --> 01:14:42,010 Ni tuj transdonos vin dosiero de reala komputilo sistemo kiu enhavas 1663 01:14:42,010 --> 01:14:45,690 tuta amaso de uzanto kaj vera ĉifrita pasvortojn, kaj la defio 1664 01:14:45,690 --> 01:14:49,110 por la hacker eldono tuj estos al fendi tiuj pasvortojn kaj figuro 1665 01:14:49,110 --> 01:14:53,060 kio ĉifriko aŭ kio sekreta estis uzita por reale 1666 01:14:53,060 --> 01:14:55,080 generi la pasvortoj. 1667 01:14:55,080 --> 01:14:58,360 Kaj ni tuj faros ĉi uzante nova funkcio ĉi tie de C ke mi donos al 1668 01:14:58,360 --> 01:15:02,200 vi nur demo de, konata kiel komando-linia argumentoj. 1669 01:15:02,200 --> 01:15:05,930 >> Do rezultas, kiel kelkaj el vi eble vidis en sekcio aŭ en lernolibroj, 1670 01:15:05,930 --> 01:15:09,850 ĉefa ne ĉiam devas esti malplena en krampoj. 1671 01:15:09,850 --> 01:15:14,060 Ĝi rezultas ke ĉefa povas ankaŭ esti skribita kiel ĉi tiu, kun du argumentoj, 1672 01:15:14,060 --> 01:15:19,690 argc kaj argv, kie argc estas la nombro de vortoj kiujn vi entajpas post 1673 01:15:19,690 --> 01:15:21,940 la programo la nomon en via komandlinio. 1674 01:15:21,940 --> 01:15:24,550 Kaj argv estas la reala vortoj. 1675 01:15:24,550 --> 01:15:29,470 Kaj kiel la rektaj krampoj tie sugestas, argv estas ŝajne tabelo. 1676 01:15:29,470 --> 01:15:33,720 Ĝi tuj estos ĉeno post ĉeno post ĉenon en memoro. 1677 01:15:33,720 --> 01:15:36,170 Do kion ni tuj povos fari, komencante per pset 2, estas 1678 01:15:36,170 --> 01:15:37,310 iu kiel ĉi tio. 1679 01:15:37,310 --> 01:15:42,450 Se mi faras argv1, kiu estas ekzemplo ni revenos al lundon, kaj kuri 1680 01:15:42,450 --> 01:15:45,180 ĝin, rimarki ke ĝi ne similas al fari ion ankoraŭ. 1681 01:15:45,180 --> 01:15:47,050 Ĝi simple presas el lia propra nomo. 1682 01:15:47,050 --> 01:15:53,220 Sed se mi diras adiaŭ klaso, avertas ke ĉi tiu programo ŝajne iterates 1683 01:15:53,220 --> 01:15:57,030 super cxiu el la vortoj kiuj tajpis ĉe la prompto. 1684 01:15:57,030 --> 01:16:02,050 Kaj la rimedoj, per kiuj ni gajnos aliro al vortoj, ke la uzanto havas 1685 01:16:02,050 --> 01:16:06,780 tajpis ĉe la prompto estas ŝanĝante ĉefa, ekde tiu semajnfino, de int 1686 01:16:06,780 --> 01:16:10,710 main (void) al Mez ĉefa (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 Kaj tiel estos naskita komandlinio argumentoj. 1688 01:16:13,700 --> 01:16:17,210 Kaj iam vi ricevas vere kompleksa pro tio, vi povos skribi 1689 01:16:17,210 --> 01:16:21,370 vere trippy programoj, kiel ĉi tiu tie, kiuj iras super kaj trans 1690 01:16:21,370 --> 01:16:25,520 kelkaj el la funkcioj ni faris ĝis nun sed ĉiuj sufiĉe potencaj. 1691 01:16:25,520 --> 01:16:27,330 >> Do ni lasos tion kun tiu en la ekrano. 1692 01:16:27,330 --> 01:16:29,160 Kaj ni vidos vin lunde.