1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> Parolanto 1: Bone. 3 00:00:13,650 --> 00:00:14,390 Bonvenon dorso. 4 00:00:14,390 --> 00:00:19,260 Jen Semajno Du el CS50, kaj ni havas ĝis nun estis uzante funkciojn sed 5 00:00:19,260 --> 00:00:20,830 plejparte prenis ilin por sentado. 6 00:00:20,830 --> 00:00:23,430 Ni uzis printf kiu havas la kromefikon de presado 7 00:00:23,430 --> 00:00:24,110 aĵoj en la ekrano. 8 00:00:24,110 --> 00:00:25,790 Ni uzis get-int, get flosi. 9 00:00:25,790 --> 00:00:29,230 >> Sed kion se vi vere volas krei viaj propraj funkcioj, kiel kelkaj el 10 00:00:29,230 --> 00:00:31,740 vi eble jam komencis faru por Problemo Ara Unu, kvankam 11 00:00:31,740 --> 00:00:33,140 ne strikte necesaj? 12 00:00:33,140 --> 00:00:37,150 Nu, ni iru antaŭen kaj reviziti ke problemo de nur demandante la uzanton por 13 00:00:37,150 --> 00:00:40,660 lia nomo kaj presi iun sur la ekrano, sed provu faktorigi iun 14 00:00:40,660 --> 00:00:44,000 de la komuneco, ke ni vidis en nia kodo tiom. 15 00:00:44,000 --> 00:00:45,120 Do, per tiu mi volas diri al la sekva. 16 00:00:45,120 --> 00:00:47,315 >> Mi tuj iros antaŭen kaj krei nova programo, simple vokas 17 00:00:47,315 --> 00:00:49,320 ĝi hello.c kiel kutime. 18 00:00:49,320 --> 00:00:53,730 Mi tuj iros antaŭen kaj donu al mi inkludas normon io.h ĉe la supro. 19 00:00:53,730 --> 00:00:57,040 Mi tuj ankaŭ donas min preemptively la CS50 biblioteko por ke 20 00:00:57,040 --> 00:00:59,080 Mi ne get kriis al la tradukilo. 21 00:00:59,080 --> 00:01:02,400 Kaj nun mi tuj iros antaŭen kaj deklari int, ĉefa, malplenon. 22 00:01:02,400 --> 00:01:09,020 >> Kaj tiam en ĉi tie, ĉi tiu estas kie mi volas komenci subcontratar funkciojn al 23 00:01:09,020 --> 00:01:12,090 iu alia funkcio kiu mi mem tuj skribos sed tio ne 24 00:01:12,090 --> 00:01:13,820 nuntempe ekzistas. 25 00:01:13,820 --> 00:01:19,210 Ekzemple, supozu, ke mi volis skribi funkcio kiu min permesas 26 00:01:19,210 --> 00:01:23,830 elprinti saluton, komo, kaj tiam iuj uzanto nomo. 27 00:01:23,830 --> 00:01:29,010 Anstataŭ daŭrigi fari printf saluton,% s, ĉu ne estus agrabla se 28 00:01:29,010 --> 00:01:33,380 estis nur funkcio nomata ne printf sed presita nomo? 29 00:01:33,380 --> 00:01:36,600 >> Do alivorte, mi volas povi skribi programon kiu faras iom 30 00:01:36,600 --> 00:01:37,710 iu kiel ĉi tio. 31 00:01:37,710 --> 00:01:42,070 Unue, mi intencis diri printf via nomo, tiel instigante la uzanto 32 00:01:42,070 --> 00:01:46,150 donu al mi sian nomon, kaj tiam mi estas tuj uzi la familiaran string s al 33 00:01:46,150 --> 00:01:47,290 deklari kordo. 34 00:01:47,290 --> 00:01:50,420 Donu al mi variablon de tipo ĉenon, nomas ĝin s, kaj vendejo en kiu la 35 00:01:50,420 --> 00:01:52,120 rezulti de nomi atingi ŝnuron. 36 00:01:52,120 --> 00:01:56,060 Sed nun en semajnoj pasis, mi havus iom tediously faris saluton,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> Kaj en alia vortoj, kiujn ni vidis ĉi Ekzemple faskon da fojoj, kaj ĝi estas 39 00:02:02,570 --> 00:02:05,280 bagatela ekzemplo, ĉar restas nur unu linio de kodo tial estas vere ne 40 00:02:05,280 --> 00:02:06,860 grandan multon por konservi tajpi revenis. 41 00:02:06,860 --> 00:02:09,990 Sed supozu ke tiu linio de kodo fakte estis igi sxargxo, 42 00:02:09,990 --> 00:02:12,900 ĝi ne estas unu linio de kodo, sed ĝi estas 10 linioj de kodo paro semajnoj de nun, 43 00:02:12,900 --> 00:02:15,190 kaj vi nur nun laca de kopii kaj alglui aŭ 44 00:02:15,190 --> 00:02:17,180 retyping tiu sama kodo. 45 00:02:17,180 --> 00:02:22,100 Ĉu ne estus bela anstataŭ fari printf saluton,% s kaj tiel plu, 46 00:02:22,100 --> 00:02:26,500 ĉu ne estus bone se estis ĝuste funkcio nomita presita nomo kiun 47 00:02:26,500 --> 00:02:27,560 prenas argumenton - 48 00:02:27,560 --> 00:02:29,120 en aliaj vortoj, ĝi prenas enigo - 49 00:02:29,120 --> 00:02:30,620 kaj tiam punktokomo. 50 00:02:30,620 --> 00:02:33,240 Do tiu funkcio, ne volis ĝin estu bela se tiu ekzistis? 51 00:02:33,240 --> 00:02:36,690 Tiam mi ne devas maltrankviligi kio printf estas, kion% s kaj ĉiuj 52 00:02:36,690 --> 00:02:39,400 tiujn kompleksojn, kiuj estas Ne ĉiuj kiuj interesa. 53 00:02:39,400 --> 00:02:40,570 Ili estas utilaj. 54 00:02:40,570 --> 00:02:44,700 >> Do presita nomo, bedaŭrinde, ne estis elpensitaj iuj 40 plus jarojn. 55 00:02:44,700 --> 00:02:45,980 Neniu pensis skribi ĝin. 56 00:02:45,980 --> 00:02:48,300 Sed tio estas la beleco de havi programlingvo, same kiel en 57 00:02:48,300 --> 00:02:52,930 Scratch vi povas difini kutimo blokojn, tiel en C kaj plej iu ajn lingvo, ĉu vi 58 00:02:52,930 --> 00:02:57,260 difini vian propran funkciojn, povas vi difinas vian propran funkcioj. 59 00:02:57,260 --> 00:03:01,710 Do kvankam ni ricevas ĉefa per aŭtomate senpage, oni povas deklari 60 00:03:01,710 --> 00:03:02,730 niaj propraj funkcioj. 61 00:03:02,730 --> 00:03:05,670 >> Do mi tuj faros iu ĉambro tien ĝis supre, kaj mi iros por deklari mian 62 00:03:05,670 --> 00:03:08,210 propra funkcio kiu tuj aspekti iom stranga en komenco sed ni venos 63 00:03:08,210 --> 00:03:09,400 reen al ĉi tiu post nelonge. 64 00:03:09,400 --> 00:03:12,310 Mi tuj diros dezerta, sekve indikante ĉi tiun funkcion faras 65 00:03:12,310 --> 00:03:16,040 io, havas kromefikon, sed ne revenas ion por mi en la 66 00:03:16,040 --> 00:03:18,810 sama maniero kiu alvenas int aŭ akiri kordo mem faras. 67 00:03:18,810 --> 00:03:22,450 Kaj mi tuj donos ĉi tiun funkcion de nomo de presita nomo, kaj mi tuj 68 00:03:22,450 --> 00:03:26,470 specifi ke tiu ulo tuj preni cxeno, kaj mi tuj vokos ke 69 00:03:26,470 --> 00:03:27,600 kordo nomo. 70 00:03:27,600 --> 00:03:32,100 Mi povus nomi ion mi volas, sed mi volas mian kodo esti mem-dokumenti. 71 00:03:32,100 --> 00:03:34,770 En aliaj vortoj, se unu el vi por malfermi ĉi dosieron kaj legis gxin, vi povus fari 72 00:03:34,770 --> 00:03:39,020 speco de dedukti de la nomo de tiu enigo kiun rolon ĝi estas supozitaj por ludi. 73 00:03:39,020 --> 00:03:42,270 >> Kaj nun sub tiu, mi tuj malfermos krispa streĉa kaj fermitaj krispa streĉa, 74 00:03:42,270 --> 00:03:47,140 kaj tiel rimarkos mi sekvis la saman ŝablono sur linioj kvar tra sep kiel 75 00:03:47,140 --> 00:03:51,622 Mi estis sekvante por bona semajno pli nun inter, ekzemple, linioj naŭ kaj 76 00:03:51,622 --> 00:03:53,400 14 kiu formi ĉefa. 77 00:03:53,400 --> 00:03:56,160 En aliaj vortoj, presi nomo estas alia funkcio. 78 00:03:56,160 --> 00:03:58,990 Nu, la tradukilo ne tuj scias nomi tion aŭtomate 79 00:03:58,990 --> 00:04:02,670 ĉar mi laŭvorte ĵus elpensis ĝin, sed scios ankoraŭ nomi ĉefaj 80 00:04:02,670 --> 00:04:08,710 aŭtomate, kaj tiam kompreneble en linio 13 Mi alvokos miajn proprajn funkcio. 81 00:04:08,710 --> 00:04:12,805 Kaj ĉar mi deklaris, ke funkcio sur linio kvar antaŭe ĉefa, 82 00:04:12,805 --> 00:04:16,579 ĉi tio tuj instrui la tradukilo kio citaĵo, unquote, "print nomo" 83 00:04:16,579 --> 00:04:18,140 signifas kaj kion devas fari. 84 00:04:18,140 --> 00:04:22,700 Do mi estas ia donante al ĝi novan kutimo bloki en la kunteksto de, ekzemple, nulo. 85 00:04:22,700 --> 00:04:27,240 >> Do ĉi tie mi povas meti ke tre komuna aŭ _recurring_ mastro de kodo mi observos 86 00:04:27,240 --> 00:04:32,300 skribi en klaso, printf % S saluton,% s / n ', - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Kion mi volas meti tie? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Do mi volas meti nomon en tiu kunteksto. 91 00:04:41,420 --> 00:04:43,440 Do rimarki iom de dicotomía tie. 92 00:04:43,440 --> 00:04:47,680 Ĉar mi estas deklarante mia propra funkcio kaj mi iom arbitre nomas 93 00:04:47,680 --> 00:04:50,880 ĝin presi nomo, kaj ĉar mi havas specifita en krampoj ke tiu 94 00:04:50,880 --> 00:04:55,035 funkcio prenas unu argumenton, la tipo de kiu estas ĉeno - tiel ĝi estas vorto 95 00:04:55,035 --> 00:05:00,010 aŭ frazo aŭ io simila - kaj Mi petas ke argumento nomon, kiu 96 00:05:00,010 --> 00:05:04,770 signifas la sola variablo kiu estas en medion, por tiel diri, estas nomo. 97 00:05:04,770 --> 00:05:07,780 >> S nur ekzistas inter kio du krispa krampoj, kompreneble? 98 00:05:07,780 --> 00:05:12,990 Nu vere, samkiel linio 10 tra 14, do ĝuste kiel lunde ne povas uzi 99 00:05:12,990 --> 00:05:17,650 S, sed kion mi povas fari estas pasi S enen presita nomo. 100 00:05:17,650 --> 00:05:21,030 Presi nomo ĝuste tiel okazas doni ĝin alias, sinonimo, alnomo, 101 00:05:21,030 --> 00:05:24,400 nomante ĝin nomon, kaj nun uzante ĝin en ĉi tiu linio. 102 00:05:24,400 --> 00:05:26,840 Do nun mi savos tiun, malzomi. 103 00:05:26,840 --> 00:05:31,250 >> Lasu min antaŭeniri kaj realigi saluton. 104 00:05:31,250 --> 00:05:32,400 Aspektas bone. 105 00:05:32,400 --> 00:05:36,110 Ne kraĉi ĉian eraroj. . / Saluton Eniru. 106 00:05:36,110 --> 00:05:37,020 Kio estas mia nomo? 107 00:05:37,020 --> 00:05:38,060 Davido. 108 00:05:38,060 --> 00:05:39,270 Kaj saluton David. 109 00:05:39,270 --> 00:05:41,820 Do ne cxio, kion ekscita, sed ĝuste pensas nun. 110 00:05:41,820 --> 00:05:44,310 Vi nun havas tiun saman ingredienco kiel ni faris en Scratch al 111 00:05:44,310 --> 00:05:45,420 fari nian propran funkcioj. 112 00:05:45,420 --> 00:05:46,770 >> Sed estas iom de gotcha. 113 00:05:46,770 --> 00:05:50,620 Supozu, ke mi ne vere pensis ĉi tra kaj mi efektive sen 114 00:05:50,620 --> 00:05:54,250 vere pensas pri ĝi skribis tiu funkcio ĉi tie. 115 00:05:54,250 --> 00:05:55,420 Sentas perfekte racia. 116 00:05:55,420 --> 00:05:58,440 En Scratch ne ekzistas nocio de situo en via skriptoj. 117 00:05:58,440 --> 00:06:00,670 Vi povus meti tien, unu ĝis ĉi tie, unu ĝis ĉi tie, kaj ĝi povus komenci 118 00:06:00,670 --> 00:06:03,310 rigardi iom senorda se vi ne kuŝis ĝin nete, sed ne 119 00:06:03,310 --> 00:06:05,910 gravas kie fizike la skriptoj estis sur la ekrano. 120 00:06:05,910 --> 00:06:09,660 Bedaŭrinde en C - kaj ĉi tiu estas malsama lingvoj kiel Java kaj Python 121 00:06:09,660 --> 00:06:13,600 kaj aliaj, ke vi povus esti familiara kun - bedaŭrinde en C, ordono faras 122 00:06:13,600 --> 00:06:15,830 gravas ĉar horloĝo kio estas okazos nun. 123 00:06:15,830 --> 00:06:19,010 >> La defaŭlta funkcio kiu okazas ekzekuti estas, kompreneble, la ĉefa. 124 00:06:19,010 --> 00:06:22,290 Ĉefa tuj voki print nomon sur linio ok, sed bedaŭrinde, la 125 00:06:22,290 --> 00:06:26,660 tradukilo eĉ ne scias, ke presita nomo Ekzistas ĝis ĝi alvenas al linio 11, 126 00:06:26,660 --> 00:06:28,520 kiu bedaŭrinde estas tuj estos tro malfrue. 127 00:06:28,520 --> 00:06:30,660 Do ni estas farata saluton. 128 00:06:30,660 --> 00:06:32,950 Kaj nun malbenitaj, du eraroj generita. 129 00:06:32,950 --> 00:06:36,050 Do nun lasu min rulumi supren al la tre unue, kiel ni devas ĉiam fari, kaj 130 00:06:36,050 --> 00:06:39,560 rimarki ke ĝi estas kriante al mi, "Implica deklaro de funkcio 131 00:06:39,560 --> 00:06:40,540 presi nomo. " 132 00:06:40,540 --> 00:06:43,860 >> Do ni jam vidis tiun mesaĝon antaŭe, implicitan deklaron de funkcio. 133 00:06:43,860 --> 00:06:48,080 Kiam ni vidis tian eraron? 134 00:06:48,080 --> 00:06:49,180 Kiam mi ne inkludas bibliotekon. 135 00:06:49,180 --> 00:06:53,470 Se mi forgesis cs50.h kaj mi akirus kriis al por akiri ŝnuro aŭ akiri int. 136 00:06:53,470 --> 00:06:56,880 Sed en tiu kazo, ĉi tiu funkcio print nomo ne estas en biblioteko, ĉu ne? 137 00:06:56,880 --> 00:07:00,230 Ĝi estas laŭvorte en tiu dosiero, tiel kio estas vere la problemo? 138 00:07:00,230 --> 00:07:04,660 >> Nu bedaŭrinde en C, ĝi prenas vin tiel nekredeble laŭvorte, ke se vi 139 00:07:04,660 --> 00:07:08,640 bezona funkcio nomita print nomon ekzistas, vi devas aŭ implemento 140 00:07:08,640 --> 00:07:11,940 tiu funkcio ĉe la plejsupro de via kodo por ke ĝi estas atingebla por malsupreniri 141 00:07:11,940 --> 00:07:15,070 funkcioj, sed sincere, kiu igas fuŝa tre rapide. 142 00:07:15,070 --> 00:07:18,160 Persone, mi ŝatas meti ĉefa unua ĉar tiam ĝi estas tre klara kio ĉi 143 00:07:18,160 --> 00:07:19,890 programo faras unuavide. 144 00:07:19,890 --> 00:07:23,290 Kaj pli, vi povas eniri en stranga angulo kazoj kie se x volas nomi 145 00:07:23,290 --> 00:07:27,530 y sed y povus nomi x, vi nur fizike ne povas efektive metis unu 146 00:07:27,530 --> 00:07:28,540 super la alia. 147 00:07:28,540 --> 00:07:31,230 >> Sed ĝi rezultas en C, oni povas solvi ĉi tre simple. 148 00:07:31,230 --> 00:07:34,010 Mi tuj metos iom da spaco ĝis ĉi tie, kaj mi simple tuj 149 00:07:34,010 --> 00:07:38,170 preemptively, kvankam iom redundantly, tuj instrui la 150 00:07:38,170 --> 00:07:42,320 tradukilo ke tie ekzistas funkcio vokis presita nomo, ĝi portas ĉenon, 151 00:07:42,320 --> 00:07:46,330 kaj mi tuj vokos ĝi enoficigi punktokomo. 152 00:07:46,330 --> 00:07:50,220 >> Do tiu nun en linio kvar, kion ni ne vidis antaŭe, estas deklaro 153 00:07:50,220 --> 00:07:53,940 de funkcio print nomo, sed estas nur promeso, ke tiu funkcio volo 154 00:07:53,940 --> 00:07:56,620 eventuale esti difinita, eventuale esti realigita. 155 00:07:56,620 --> 00:08:00,180 Ĉi nun mi povas lasi sole ĉar nun ĉi tiu estas la difino, la 156 00:08:00,180 --> 00:08:04,090 efektivigo, ia la lasta mejlo de la efektivigo de ĉi tiu 157 00:08:04,090 --> 00:08:05,130 aparta funkcio. 158 00:08:05,130 --> 00:08:08,450 Do sincere ĝi estas stulta, ĝi estas ĝena, sed ĉi tiu estas la vojo C estas, kaj estas 159 00:08:08,450 --> 00:08:12,050 ĉar ĝi prenas vin tre laŭvorte kaj, kiel komputilo sincere devus, 160 00:08:12,050 --> 00:08:16,020 nur ne precize kion vi diros ĝin al faru, kaj por ke ordigo estas grava. 161 00:08:16,020 --> 00:08:18,940 >> Observu do, ke en la menso kaj denove, komenci rimarki la rekursieca de ŝablonoj. 162 00:08:18,940 --> 00:08:21,850 Prognozoj estas vi faros, se vi ne havas jam, komencas renkonti mesaĝojn 163 00:08:21,850 --> 00:08:24,700 kiel ĉi tio unuavide ŝajnas tute kripta, sed se vi komencas 164 00:08:24,700 --> 00:08:29,000 serĉi tiuj ŝlosilaj vortoj kiel "Implicitan deklaron," vokis la 165 00:08:29,000 --> 00:08:32,380 funkcio en ĉi tiu kazo - kaj sincere, vi kelkfoje eĉ akiri iom verda 166 00:08:32,380 --> 00:08:35,010 karoto simbolo kiu diras al vi kie la afero probable estas - 167 00:08:35,010 --> 00:08:40,980 Vi povas komenci labori vian vojon tra ankoraŭ ne viditaj erarmesaĝojn. 168 00:08:40,980 --> 00:08:45,860 Demandojn en skribi vian propra funkcio en ĉi tiu maniero? 169 00:08:45,860 --> 00:08:47,540 >> Ni faru ion, ke estas iom pli konvinka. 170 00:08:47,540 --> 00:08:51,760 Anstataŭ simple fari iun kiu havas flanka efekto de presado, lasu min iri 171 00:08:51,760 --> 00:08:55,340 antaŭeniris kaj konservi novan dosieron, kaj ni instruos vin nomas tiun positive.c, kvankam ĝi estas 172 00:08:55,340 --> 00:08:57,600 tuj estos iom malsama kontre lasta fojo. 173 00:08:57,600 --> 00:09:01,910 Kaj ĉi tiu fojo, mi volas re-implemento lasta fojo la positive.C ekzemplo, kiu 174 00:09:01,910 --> 00:09:04,430 estas devigi la uzanto doni min pozitiva entjero. 175 00:09:04,430 --> 00:09:07,280 Sed mi devis uzi akiri int lasta fojo. 176 00:09:07,280 --> 00:09:10,780 Ĉu ne estis bela se estis funkcio nomita akiri pozitivajn int 177 00:09:10,780 --> 00:09:13,610 ke mi povus nur subcontratar ĉi peco de funkciojn al? 178 00:09:13,610 --> 00:09:16,480 Do la diferenco jen ni instruos vin apliki akiri pozitivajn int, sed kontraste 179 00:09:16,480 --> 00:09:20,330 print nomo kiu havis kromefikon - ĝi ne revenis ion al mi kiel 180 00:09:20,330 --> 00:09:21,710 numeron aŭ ŝnureto - 181 00:09:21,710 --> 00:09:25,510 get pozitiva int estas, kompreneble, tuj reveni, espereble, pozitiva int. 182 00:09:25,510 --> 00:09:26,170 >> Do ni faru tion. 183 00:09:26,170 --> 00:09:30,840 Inkluzivi cs50.h, Inkluzivi normo io.h. 184 00:09:30,840 --> 00:09:33,520 Mez ĉefa malplena. 185 00:09:33,520 --> 00:09:42,160 Kaj nun en ĉi tie, mi tuj iros antaŭen kaj diru int, nomas ĝin n, egalas 186 00:09:42,160 --> 00:09:44,270 akiri pozitivajn int. 187 00:09:44,270 --> 00:09:49,080 Kaj ĝuste kiel akiri int jam ekzistas ĉar la bastono skribis ĝin, mi tuj 188 00:09:49,080 --> 00:09:53,950 supozi por la momento kiu alvenas pozitiva int ekzistas, kaj nun mi iras 189 00:09:53,950 --> 00:09:57,730 iri antaŭen kaj diru printf, dankon pro la% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Do nun, se mi kompili tiun programon, kion okazos en mia fina stacio 192 00:10:07,770 --> 00:10:09,075 fenestro ĉe la malsupro de la ekrano? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Mi tuj probable atingi tiun saman eraron kiel antaŭe. 195 00:10:13,900 --> 00:10:14,570 Do ni provu tion. 196 00:10:14,570 --> 00:10:16,450 Faru pozitiva. 197 00:10:16,450 --> 00:10:19,900 Kaj denove, implicitan deklaron de funkcio, atingi pozitivan int. 198 00:10:19,900 --> 00:10:21,970 Do ni povas solvi tion en kelkaj manieroj. 199 00:10:21,970 --> 00:10:27,310 Mi tuj teni ĝin simpla kaj simple meti mian deklaron tien kaj akiri 200 00:10:27,310 --> 00:10:28,120 pozitiva int. 201 00:10:28,120 --> 00:10:29,720 Mi bezonas la tn subskribon. 202 00:10:29,720 --> 00:10:32,410 La subskribo nur referencas al la estetiko de la 203 00:10:32,410 --> 00:10:34,090 unua linio de la programo. 204 00:10:34,090 --> 00:10:37,420 Do kion devus akiri pozitivajn int reveno? 205 00:10:37,420 --> 00:10:37,970 >> Do oni int. 206 00:10:37,970 --> 00:10:41,540 Mi volas diri ideale, ĝi revenus iu kiel pozitiva int, sed tio 207 00:10:41,540 --> 00:10:42,160 ne ekzistas. 208 00:10:42,160 --> 00:10:45,280 Ni ne vidis, ke inter niaj datumoj tipoj, do ni devas trakti la 209 00:10:45,280 --> 00:10:47,170 fakto ke ni havas tre malmultaj datumtipoj labori. 210 00:10:47,170 --> 00:10:50,360 Sed ni povas reveni al int kaj justa esperas, ke ĝi estos pozitiva. 211 00:10:50,360 --> 00:10:52,690 Ĝi tuj nomos akiri pozitivajn int. 212 00:10:52,690 --> 00:10:55,122 >> Kaj nun kion pri liaj argumentoj? 213 00:10:55,122 --> 00:10:56,440 Ĉu ĝi prenas neniun eniro? 214 00:10:56,440 --> 00:10:58,280 Ĉu ĝi bezonas neniun eniro? 215 00:10:58,280 --> 00:11:00,900 Do ne bezonas scii anticipe nenion. 216 00:11:00,900 --> 00:11:03,220 Get kordo ne, atingi int ne. 217 00:11:03,220 --> 00:11:06,430 Printf faras - gxi bezonas por havi iun enigo pasis en ĝin - kaj presita nomo 218 00:11:06,430 --> 00:11:09,020 bezonis iun enigo, sed akiri pozitiva int ne. 219 00:11:09,020 --> 00:11:11,530 Do mi tuj eksplicite diru al la tradukilo malplena. 220 00:11:11,530 --> 00:11:13,470 Void estas la foresto de io alia. 221 00:11:13,470 --> 00:11:17,990 Do malplenon per nenio tuj ene de tiuj parentezoj, punktokomo. 222 00:11:17,990 --> 00:11:20,840 >> Kaj nun sur la fundo de mia dosiero - kaj denove, mi nur esti speco de anal 223 00:11:20,840 --> 00:11:23,640 tie metante ĉefa ĉe la supro, kiu estas bona praktiko ĉar tiu maniero, 224 00:11:23,640 --> 00:11:26,220 iam ajn vi aux iu alia malfermas vian dosieron, la 225 00:11:26,220 --> 00:11:27,400 funkciojn pravas tie. 226 00:11:27,400 --> 00:11:29,660 Vi povas plonĝi en de kvadrata tiu. 227 00:11:29,660 --> 00:11:34,190 Do nun mi iros por duobligi ĉi, akiri pozitivajn int malplena, sed mi ne 228 00:11:34,190 --> 00:11:35,430 tuj batis punktokomo nun. 229 00:11:35,430 --> 00:11:38,280 Mi tuj malfermu krispa krampoj, kaj nun mi bezonas pruntepreni 230 00:11:38,280 --> 00:11:39,700 iuj ideoj de lundo. 231 00:11:39,700 --> 00:11:44,450 >> Do kiel vi memoras, ni faris ion kiel do la sekva dum 232 00:11:44,450 --> 00:11:45,830 io vera. 233 00:11:45,830 --> 00:11:46,630 Kaj kion mi faru? 234 00:11:46,630 --> 00:11:51,540 Mi faris iun kiel doni min pozitiva entjero, 235 00:11:51,540 --> 00:11:52,430 iom de prompto. 236 00:11:52,430 --> 00:11:53,540 Mi povus uzi vortojn mi volas. 237 00:11:53,540 --> 00:11:54,960 Kaj poste mi uzis kio? 238 00:11:54,960 --> 00:11:59,530 Int n egalas akiri int, neniu argumentoj por ĝi. 239 00:11:59,530 --> 00:12:00,550 >> Kaj rimarkos la diferencon. 240 00:12:00,550 --> 00:12:04,680 Kiam vi nomas funkcio, kiam vi uzas funkcio, vi ne metas en malplenon. 241 00:12:04,680 --> 00:12:08,570 Vi nur fari tion kiam deklari funkcio, instruante la tradukilo kio 242 00:12:08,570 --> 00:12:09,780 ĝi devus atendi. 243 00:12:09,780 --> 00:12:11,650 Do vi ne bezonas meti neniigas tie vi mem. 244 00:12:11,650 --> 00:12:12,940 >> Kaj nun kio estis mia kondiĉo? 245 00:12:12,940 --> 00:12:19,670 Nu, n estas ne egala al pozitiva, sed tio estas nur pseŭdo-kodo. 246 00:12:19,670 --> 00:12:22,530 Do kiel mi esprimi tion pli pure? 247 00:12:22,530 --> 00:12:24,090 Do malpli ol aŭ egala al nulo. 248 00:12:24,090 --> 00:12:26,250 Do denove, rimarki vi povos fari malpli ol aŭ egala al. 249 00:12:26,250 --> 00:12:28,100 Kvankam ĝi estas du apartaj simbolojn, vi povas fari tion sur 250 00:12:28,100 --> 00:12:29,350 vian klavaron kiel tia. 251 00:12:29,350 --> 00:12:33,950 >> Sed estas ankoraŭ cimon, ke Mi ŝraŭbita ĝis lasta fojo ankaŭ. 252 00:12:33,950 --> 00:12:36,950 Mi devas deklari - 253 00:12:36,950 --> 00:12:37,460 ĝuste. 254 00:12:37,460 --> 00:12:39,640 Mi devas deklari n ekstere de la ciklo. 255 00:12:39,640 --> 00:12:44,180 Do mi bezonas meti n ĉi tien, kaj mi ne volas re-sciigu tie 256 00:12:44,180 --> 00:12:46,480 eble mi akiros novan variablo. 257 00:12:46,480 --> 00:12:48,860 Mi nur volas atribui valoron en ĉi tie. 258 00:12:48,860 --> 00:12:54,320 >> Kaj nun mi ne tute farita tie. 259 00:12:54,320 --> 00:12:57,290 Lasu min eliri antaŭeniras de mi mem kaj ŝajnigi mi faris. 260 00:12:57,290 --> 00:13:01,220 Faru pozitiva, kaj nun estas nova eraro. 261 00:13:01,220 --> 00:13:04,550 Kontrolo atingas finon de ne-nula funkcio. 262 00:13:04,550 --> 00:13:07,760 Do nova erarmesaĝo, sed se vi speco de turmentus aparte ĉiun el la vortoj, 263 00:13:07,760 --> 00:13:09,620 probable aludoj ĉe kio estas malbone. 264 00:13:09,620 --> 00:13:11,240 >> Kontroli. 265 00:13:11,240 --> 00:13:14,250 Kontrolo simple signifas la ordon de operacioj en programo. 266 00:13:14,250 --> 00:13:16,510 La komputilo estas en kontrolo kaj io iris malbone. 267 00:13:16,510 --> 00:13:18,510 Do ĝi atingas la finon de ne-nula funkcio. 268 00:13:18,510 --> 00:13:21,760 Kio funkcio estas ŝajne raportante al? 269 00:13:21,760 --> 00:13:24,790 Kio funkcio estas ne-malplena? 270 00:13:24,790 --> 00:13:27,400 Do nepre pozitiva int, kaj iom malklara en tiu puto, 271 00:13:27,400 --> 00:13:29,010 ĝi estas speco de dezerta. 272 00:13:29,010 --> 00:13:33,070 Ĝi havas specifon de malplena por lia argumentojn, sed lia eliro tuj 273 00:13:33,070 --> 00:13:34,540 esti de tipo n. 274 00:13:34,540 --> 00:13:37,260 Do la vorto maldekstre estas la tn reveno tipo. 275 00:13:37,260 --> 00:13:40,320 La vorto en la interno estas ĉi tie la nulo aŭ pli argumentoj 276 00:13:40,320 --> 00:13:41,970 ke funkcio prenas. 277 00:13:41,970 --> 00:13:44,060 >> Do kion mi devas fari? 278 00:13:44,060 --> 00:13:47,650 Je ĉi tiu punkto en mia kodo, linio 21 kie la palpebrumantaj prompto nun estas, mi 279 00:13:47,650 --> 00:13:51,430 havi pozitivan int ene de la variablo nomis n. 280 00:13:51,430 --> 00:13:55,200 Kjel mi redonas gxin al ĉefa? 281 00:13:55,200 --> 00:13:55,960 Laŭvorte. 282 00:13:55,960 --> 00:13:59,320 Reveno n punktokomo. 283 00:13:59,320 --> 00:14:04,090 >> Tiel same Colton revenis pecon de papero kun respondo al mi per delasante 284 00:14:04,090 --> 00:14:07,020 tiu peco de papero en la malgranda nigra skatolon sur la tablon, por fari tion en 285 00:14:07,020 --> 00:14:10,100 kodo, vi laŭvorte ĝuste skribi, reveni n, kaj ĝi estas kvazaŭ Colton estis 286 00:14:10,100 --> 00:14:12,140 transdoni al mi ion fizika dorso. 287 00:14:12,140 --> 00:14:15,870 En ĉi tiu kazo, kio okazas estas akiri pozitiva int tuj transdonos reen 288 00:14:15,870 --> 00:14:19,220 kio estas supozeble pozitivan entjero por kiu? 289 00:14:19,220 --> 00:14:21,380 Kie tiu valoro finos? 290 00:14:21,380 --> 00:14:29,080 Kiu finas en tiu variablo, n, kaj tiam ni iros kun linio naŭ. 291 00:14:29,080 --> 00:14:31,920 >> Do, en aliaj vortoj, en ordo de operacioj, ĉi tiu programo komenciĝas 292 00:14:31,920 --> 00:14:34,430 ekzekuti, kaj la tradukilo realigas, ho, vi volas ke la biblioteko? 293 00:14:34,430 --> 00:14:36,310 Forliberigu min kapti kion ajn estas ene tio. 294 00:14:36,310 --> 00:14:37,750 Ho, vi volas ke la normo IO biblioteko? 295 00:14:37,750 --> 00:14:39,660 Forliberigu min kapti kion ajn estas ene tio. 296 00:14:39,660 --> 00:14:44,510 Kion faras la tradukilo diri al sin kiam batas linio kvar? 297 00:14:44,510 --> 00:14:47,980 Ho, vi promesis realigi la funkcio nomita akiri pozitiva, sed 298 00:14:47,980 --> 00:14:50,820 ni reiros al kiu poste, io kune tiujn liniojn. 299 00:14:50,820 --> 00:14:53,450 >> Mez ĉefa malplena nur signifas jen la intestoj de mia programo. 300 00:14:53,450 --> 00:14:54,990 Linio sep estas nur krispa streĉa. 301 00:14:54,990 --> 00:14:59,540 Linio ok diras maldekstre, doni min 32 bitoj por entjero, nomas ĝin n. 302 00:14:59,540 --> 00:15:02,160 Sur la dekstra flanko, estas dirante akiri pozitivajn int. 303 00:15:02,160 --> 00:15:07,120 Nun ni paŭzo tiu rakonto ĉar nun Mi ne daŭre movas mian kursoro malsupren. 304 00:15:07,120 --> 00:15:11,720 Mia kursoro nun iras malsupren tie ĉar nun ek pozitiva int ekzekutas. 305 00:15:11,720 --> 00:15:13,100 Int n estas deklarita. 306 00:15:13,100 --> 00:15:14,040 Ĉu la jena. 307 00:15:14,040 --> 00:15:16,090 Printf donas al mi pozitiva entjero. 308 00:15:16,090 --> 00:15:19,740 >> Akiru la int de la uzanto, konservas ĝin en n, kaj eble fari tion denove kaj denove. 309 00:15:19,740 --> 00:15:23,010 Ĉi buklo signifas ke ĉi tiu kodo forton ekzekuti supren kaj malsupren, kiel ĉi denove 310 00:15:23,010 --> 00:15:25,810 kaj denove, sed kiam la uzanto fine kunlaboru kaj donas al mi pozitiva 311 00:15:25,810 --> 00:15:31,750 int, mi batis linio 21, je kiu punkto la nombro estas transdonita reen, kaj kiu 312 00:15:31,750 --> 00:15:34,280 mi devus reliefigi nun? 313 00:15:34,280 --> 00:15:35,070 Naŭ. 314 00:15:35,070 --> 00:15:39,010 Kontrolo, por tiel diri, denove por kovri naŭ. 315 00:15:39,010 --> 00:15:40,650 Tio estas la linio kiu estas nun zorge. 316 00:15:40,650 --> 00:15:43,250 >> Do jen kio estis okazante ĉiuj tiu tempo sub la kapuĉo, sed 317 00:15:43,250 --> 00:15:46,480 kiam ni uzas funkciojn kiel printf aŭ eĉ akiri string ke iu alia 318 00:15:46,480 --> 00:15:50,600 skribis por vi, kontrolo estis transdonita off por aliulaj kodo linio 319 00:15:50,600 --> 00:15:51,290 por linio por linio. 320 00:15:51,290 --> 00:15:53,770 Ĝi simple ni ne povis vidi ŝin kaj ni ne povis vere priskribi ĝin en ĉi 321 00:15:53,770 --> 00:15:57,620 programo ĉar ĝi estas en iuj aliaj dosiero en la malmola disko 322 00:15:57,620 --> 00:16:00,000 dorsoj al ni. 323 00:16:00,000 --> 00:16:02,100 Do ni vere tradukigi kaj kuri ĉi nun. 324 00:16:02,100 --> 00:16:03,890 >> Faru pozitiva. 325 00:16:03,890 --> 00:16:05,260 Kompili, tio estas progreso. 326 00:16:05,260 --> 00:16:06,650 . / Pozitiva. 327 00:16:06,650 --> 00:16:08,020 Donu al mi pozitiva entjero. 328 00:16:08,020 --> 00:16:08,800 Ni estu malfacila. 329 00:16:08,800 --> 00:16:10,430 Negativaj 1. 330 00:16:10,430 --> 00:16:11,360 Nulo. 331 00:16:11,360 --> 00:16:13,370 Ni donu 50. 332 00:16:13,370 --> 00:16:18,100 Dankon por la 50, kaj tiel kontrolo nun revenis. 333 00:16:18,100 --> 00:16:21,750 Demandojn, tiam, sur tiu? 334 00:16:21,750 --> 00:16:23,180 Jes? 335 00:16:23,180 --> 00:16:25,630 >> [Inaudibles]. 336 00:16:25,630 --> 00:16:26,130 >> Diru denove. 337 00:16:26,130 --> 00:16:27,860 Ho, bona demando. 338 00:16:27,860 --> 00:16:31,100 Do vi eble rimarkos paralela tie Mi estas speco de tranĉi angulo plu. 339 00:16:31,100 --> 00:16:35,420 En linio 12, mi diris, atingi pozitivan int redonas int, sed per tiu sama 340 00:16:35,420 --> 00:16:39,660 logiko, ĝi nun staras rezoni ke en linio ses, mi dirante ke ĉefa revenas 341 00:16:39,660 --> 00:16:44,040 an int, sed kion ni neniam havis en iu el niaj programoj? 342 00:16:44,040 --> 00:16:46,470 Ni neniam havis mencion ĉi ŝlosila vorto reveno. 343 00:16:46,470 --> 00:16:49,970 >> Do rezultas ke en C, almenaŭ la versio de gxi, ke ni uzas 344 00:16:49,970 --> 00:16:55,750 farita en 1999, teknike, ĉi tiu estas okazas al vi aŭtomate. 345 00:16:55,750 --> 00:16:59,300 Anytime vi apliki programon kaj vi apliki funkcio nomita ĉefa, 346 00:16:59,300 --> 00:17:04,230 tiu funkcio revenos nulo por implicite, se vi ne diros alie, 347 00:17:04,230 --> 00:17:05,849 kaj nulo estas nur konvencio. 348 00:17:05,849 --> 00:17:09,430 La mondo denove nulo tiel indikante ke cxio estas bone, 349 00:17:09,430 --> 00:17:13,040 efektive lasante nin kun kvar miliardoj eblaj aĵoj kiuj povus iri 350 00:17:13,040 --> 00:17:17,530 malĝusta tiel ke se ni revenos unu, ke povus signifi kodo kiu signifas tiun 351 00:17:17,530 --> 00:17:18,310 afero iris malbone. 352 00:17:18,310 --> 00:17:20,589 Ni povis reveni du, kiu signifas tiu alia afero iris malbone. 353 00:17:20,589 --> 00:17:23,440 Ni povis reveni kvar miliardoj, kiujn signifas tiu alia afero iris malbone. 354 00:17:23,440 --> 00:17:27,170 >> Kaj se vi nun pensas pri via propra PC aŭ Mac, vi eble memoras, ke 355 00:17:27,170 --> 00:17:29,610 kelkfoje vi ricevas kamufla erarmesaĝojn de programaro kiu vi estas 356 00:17:29,610 --> 00:17:32,650 uzante, kaj kelkfoje havas homan amika priskribo, sed tie estas 357 00:17:32,650 --> 00:17:35,265 ofte kodo aux nombro sur la ekrano? 358 00:17:35,265 --> 00:17:37,800 Se tiu ne venas al la menso, nur teni okulon el por ĝi. 359 00:17:37,800 --> 00:17:40,790 Tio estas tipe kio tio kodoj estas referanta al. 360 00:17:40,790 --> 00:17:44,200 Ili estas inkluzivita en Microsoft Word kaj aliaj programoj tiel ke se vi prezenti 361 00:17:44,200 --> 00:17:48,850 cimraporton kun la entrepreno, vi povas diru al ili, ho, mi ricevis eraron nombro 45. 362 00:17:48,850 --> 00:17:51,750 Kaj iuj programisto reen al la kompanio povas rigardi ke ĝis en lia aŭ ŝia 363 00:17:51,750 --> 00:17:54,940 kodo kaj diri, oh, tio estas ĉar mi faris tiun cimon kaj tial la uzanto 364 00:17:54,940 --> 00:17:56,240 ricevis ĉi tiun mesaĝon. 365 00:17:56,240 --> 00:17:59,490 >> Sed sincere, nur iom distrante kaj iom teda al 366 00:17:59,490 --> 00:18:02,130 konkludi ke, almenaŭ en nia unuaj kelkaj programoj, do ni 367 00:18:02,130 --> 00:18:02,970 estis preterlasante ĝin. 368 00:18:02,970 --> 00:18:07,450 Sed ĉio ĉi tempo cxiu el via funkcioj ĉefa jam sekrete havis ĉi 369 00:18:07,450 --> 00:18:11,600 linio aŭtomate aldonis por vi de la tradukilo, kun nur konvencio por 370 00:18:11,600 --> 00:18:13,172 savu vin iom da tempo. 371 00:18:13,172 --> 00:18:14,620 >> [Inaudibles]. 372 00:18:14,620 --> 00:18:16,250 >> Vi ne bezonas inkluzivi ĝin en ĉefa. 373 00:18:16,250 --> 00:18:16,700 Tio estas bone. 374 00:18:16,700 --> 00:18:20,260 Vi bezonas inkluzivi ĝin se vi estus apliko de funkcio kiel ĉi tio. 375 00:18:20,260 --> 00:18:22,850 Alie la funkcio plata el tio ne funkciis. 376 00:18:22,850 --> 00:18:24,480 Sed en ĉefa, ĝi ne estas necesa. 377 00:18:24,480 --> 00:18:28,450 En unu semajno aŭ du, ni devos komenci atingi en tiun kutimon fojon ni volas komenci 378 00:18:28,450 --> 00:18:29,690 signifante eraroj. 379 00:18:29,690 --> 00:18:32,550 Vere bona demando. 380 00:18:32,550 --> 00:18:36,880 >> Tiel rapida parola ripozon mencii ke tiu vendredo, ni ne estos tagmanĝante 381 00:18:36,880 --> 00:18:39,980 per, sed ni povas havi vespermanĝon kun kelkaj el la studentoj kaj bastono. 382 00:18:39,980 --> 00:18:42,940 Se vi ŝatus helpi nin, ili sentas liberaj por iri al cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 6:00 am ĉi vendredo. 384 00:18:45,030 --> 00:18:47,990 Spaco estas, kiel cxiam, limigita, sed ni instruos vin daŭre fari tiujn sur preskaŭ 385 00:18:47,990 --> 00:18:51,420 semajna bazo se spaco elĉerpas ĉi-semajne. 386 00:18:51,420 --> 00:18:56,160 >> Do la cliffhanger ke ni cxesis sur Lundo estis ke kordoj povas reale 387 00:18:56,160 --> 00:19:00,520 esti indeksita en, kiu signifas nur ke vi povas akiri je la unua signo, la 388 00:19:00,520 --> 00:19:03,770 dua karaktero, la tria gravulo kaj tiel plu, ĉar vi povas 389 00:19:03,770 --> 00:19:07,860 efektive pensas pri ŝnureto, kiel saluton, kiel en ĉi tiu kazo kvin 390 00:19:07,860 --> 00:19:09,670 literoj ene de skatoloj. 391 00:19:09,670 --> 00:19:13,370 Kaj vi povas akiri je ĉiu el tiuj skatoloj kun kio sintakso faris nin 392 00:19:13,370 --> 00:19:15,230 enkonduki lunde? 393 00:19:15,230 --> 00:19:16,760 Tiuj rektaj krampoj sur via klavaro. 394 00:19:16,760 --> 00:19:18,980 Tio simple signifas iri al loko nulo. 395 00:19:18,980 --> 00:19:22,840 >> Ni komencas rakonti al nulo, tiel krampo nulo signifas h, krampo unu 396 00:19:22,840 --> 00:19:25,170 signifas e, kaj tiel plu. 397 00:19:25,170 --> 00:19:28,490 Kaj tiel la tuta tempo, kiam ni vizitis uzante ŝnurojn kaj tajpi en "saluton" 398 00:19:28,490 --> 00:19:31,250 kaj "mondo" kaj aliaj aĵoj sur la ekrano, ĝi estas konservitaj 399 00:19:31,250 --> 00:19:32,820 en skatoloj ŝatas tion. 400 00:19:32,820 --> 00:19:33,370 Kaj prenu konjekton. 401 00:19:33,370 --> 00:19:37,470 Kion ĉiu skatolo reprezentas fizike ene de via komputilo? 402 00:19:37,470 --> 00:19:38,250 >> [Inaudibles]. 403 00:19:38,250 --> 00:19:39,150 >> Pardonu? 404 00:19:39,150 --> 00:19:39,580 >> Gravuloj. 405 00:19:39,580 --> 00:19:44,760 >> Do karaktero, verŝajne en la kazo de kordoj, kaj karaktero estas nur 406 00:19:44,760 --> 00:19:46,800 ok bitoj aŭ unu bajto. 407 00:19:46,800 --> 00:19:49,550 Do vi probable estas almenaŭ pigre familiara kun la fakto ke via 408 00:19:49,550 --> 00:19:50,500 komputilo havas memoron. 409 00:19:50,500 --> 00:19:52,110 Ĝi havas du tipojn de memoro almenaŭ. 410 00:19:52,110 --> 00:19:54,810 Unu estas la malmola disko, kie vi savu plenigos konstante, kaj tio estas 411 00:19:54,810 --> 00:19:57,400 tipe granda tiel vi povas havi filmoj kaj muziko ks. 412 00:19:57,400 --> 00:20:04,010 >> Tiam vi havas alian tipon de memoro vokis RAM, R-Al-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Memoro, kaj ĉi tiu estas la tipo de memoro kiu estas uzata kiam via komputilo estas 414 00:20:07,510 --> 00:20:11,520 kurante sed se vi perdas potencon aŭ vian pilo mortas, nenio kiu estas stokitaj 415 00:20:11,520 --> 00:20:15,300 en RAM malaperas se vi perdas povon aro ĉar ĝi ne estas 416 00:20:15,300 --> 00:20:16,060 konstantaj. 417 00:20:16,060 --> 00:20:19,120 Vi havas tipe, ĉi tiuj tagoj, koncerto de ĝi, du koncertoj, eble pli. 418 00:20:19,120 --> 00:20:23,490 Kaj la kapo de RAM estas ke ĝi estas multe multe, multe pli rapida ol malmolaj diskoj 419 00:20:23,490 --> 00:20:27,390 aŭ eĉ solida stato pelas tiuj tagoj, sed estas tipe pli multekostaj tiel 420 00:20:27,390 --> 00:20:28,480 vi havas malpli de ĝi. 421 00:20:28,480 --> 00:20:32,400 >> Do hodiaŭa konversacio vere raportas al RAM, tiu tipo de memoro kiu 422 00:20:32,400 --> 00:20:35,270 ekzistas nur dum ekzistas potenco esti nutrata en vian komputilon. 423 00:20:35,270 --> 00:20:40,530 Do kiam vi tajpas en H-E-L-L-O, Enter sur la klavaro, la H tuj en unu 424 00:20:40,530 --> 00:20:44,550 bajto de RAM, la E tuj en alia bajto de RAM, kiel estas 425 00:20:44,550 --> 00:20:45,800 la resto de la vorto. 426 00:20:45,800 --> 00:20:49,010 Do memoru kion ni povis fari lasta fojo estis ĉi. 427 00:20:49,010 --> 00:20:53,940 Lasu min kaj malfermu la dosieron ke ni nomas string.c, kaj memori 428 00:20:53,940 --> 00:20:56,860 kiu serĉis iom iu kiel ĉi tio. 429 00:20:56,860 --> 00:20:59,860 Lasu min reale ruliĝi dorso kaj ŝanĝi ĝin ĝuste kio similis, 430 00:20:59,860 --> 00:21:02,654 korda longeco de s. 431 00:21:02,654 --> 00:21:04,560 >> Do rigardu la programon tie. 432 00:21:04,560 --> 00:21:08,530 Ni inkluzivas la CS50 biblioteko tiel ke ni povas uzi atingi ŝnuron. 433 00:21:08,530 --> 00:21:11,400 Ni inkludas normon io.h tiel ni povas uzi printf. 434 00:21:11,400 --> 00:21:13,580 Kial ni inkludas string.h? 435 00:21:13,580 --> 00:21:16,980 Tio estis nova lundon. 436 00:21:16,980 --> 00:21:18,230 Do ni volis korda longeco. 437 00:21:18,230 --> 00:21:19,090 Str Leng. 438 00:21:19,090 --> 00:21:21,470 Personoj decidis jaroj, ni simple estu konciza. 439 00:21:21,470 --> 00:21:24,290 Anstataŭ nomante ĝin "korda longeco," ni nomas ĝin "str Leng" kaj lasu la 440 00:21:24,290 --> 00:21:28,540 mondo figuro kiu eliros, kaj tial tio estas kion ni ricevas aliron al la kun string.h. 441 00:21:28,540 --> 00:21:29,390 >> Ĉi tio estas konata. 442 00:21:29,390 --> 00:21:30,320 Ĉi tio estas konata. 443 00:21:30,320 --> 00:21:31,450 Ĉi tio estas konata. 444 00:21:31,450 --> 00:21:32,370 Tio estas iom nova. 445 00:21:32,370 --> 00:21:35,420 En linio 22 - kaj ni revenos al ĉi tio, sed por nun scias - 446 00:21:35,420 --> 00:21:37,880 kaj vi nur konus tiun de havi legi la dokumentadon aŭ se 447 00:21:37,880 --> 00:21:39,010 vi sciis C jam - 448 00:21:39,010 --> 00:21:41,510 akiri string kelkfoje povas ŝraŭbi supren. 449 00:21:41,510 --> 00:21:45,130 Se la uzanto estas vere adversarial aŭ uncooperative kaj li aŭ ŝi nur 450 00:21:45,130 --> 00:21:49,450 ne tajpi ion en la klavaro aŭ tipoj tiel ĉe la klavaro kiu 451 00:21:49,450 --> 00:21:53,760 ĝi premas la komputilo la memoro, teorie, atingi string povis reveni 452 00:21:53,760 --> 00:21:56,270 io alia ol linio de signoj. 453 00:21:56,270 --> 00:22:01,930 Ĝi povis reveni specialan valoron nomata NULL en ĉiuj kaskedoj, N-U-L-L, kaj ĉi tiu estas 454 00:22:01,930 --> 00:22:03,390 nur tn gardostaranto valoro. 455 00:22:03,390 --> 00:22:08,010 Ĝi estas speciala valoro kiu signifas io malbona okazis en ĉi tiu kazo. 456 00:22:08,010 --> 00:22:10,520 Ĝi estas la foresto de kordo. 457 00:22:10,520 --> 00:22:16,190 >> Do nula Mi kontrolanta por simple tial, longan rakonton, str Leng kaj 458 00:22:16,190 --> 00:22:20,230 aliajn funkciojn kiuj venis kun C, se ili atendas ĉenon sed ilin pasas 459 00:22:20,230 --> 00:22:23,630 la foresto de kordo, se vi trapasos ilin NULL, la komputilo aŭ la programo 460 00:22:23,630 --> 00:22:25,000 estos nur frakasi kategorie. 461 00:22:25,000 --> 00:22:25,610 Ĝi pendas. 462 00:22:25,610 --> 00:22:27,250 Ĝi ĵetos kelkajn erarmesaĝon. 463 00:22:27,250 --> 00:22:28,690 Malbonaj aferoj okazos. 464 00:22:28,690 --> 00:22:31,130 Do eĉ se tiu estas ankoraŭ ne estas bone-difinita - 465 00:22:31,130 --> 00:22:33,730 ĉi faros pli sentita en semajno aŭ du - en linio 22, ĉi tiu estas nur 466 00:22:33,730 --> 00:22:38,790 Ekzemplo de mem defenda eraro kontrolanta ĉiaokaze unu fojon el 467 00:22:38,790 --> 00:22:42,040 miliono io iras malbone, ĉe Almenaŭ mia programo ne frakasi. 468 00:22:42,040 --> 00:22:45,960 >> Do se s ne egalas ion malbonan, Mi havas tion por ciklo, kaj tio estis 469 00:22:45,960 --> 00:22:47,710 kie ni havis tiun alian nova peco de sintakso. 470 00:22:47,710 --> 00:22:51,580 Mi havas por buklo ripetanta de nulo sur ĝis la longo de s. 471 00:22:51,580 --> 00:22:56,140 Kaj tiam tie, mi estis impreso el s krampo i, sed kial mi uzas% c ĉiuj 472 00:22:56,140 --> 00:23:00,770 subita anstataŭ% s eĉ kvankam s estas kordo? 473 00:23:00,770 --> 00:23:02,110 Estas karaktero, ĉu ne? 474 00:23:02,110 --> 00:23:06,560 S estas ĉeno, sed s krampo ion, s krampo mi kie mi estas nulo 475 00:23:06,560 --> 00:23:10,380 aŭ unu aŭ du, tio estas individua karaktero en la ĉeno, kaj tiel por 476 00:23:10,380 --> 00:23:14,970 ke, printf bezonas esti informitaj, ke ĝi estas ja karaktero atendi. 477 00:23:14,970 --> 00:23:18,096 >> Kaj tiam memoras, kion faris ĉi programo fakte faras? 478 00:23:18,096 --> 00:23:19,848 >> Presita ĝin en kolumnoj. 479 00:23:19,848 --> 00:23:21,120 >> Jes, ĝuste. 480 00:23:21,120 --> 00:23:24,990 Ĝi ĵus presita la vorto, kiun mi tajpas en kolumno, unu signo por linio. 481 00:23:24,990 --> 00:23:26,190 Do ni vidas ĉi tion denove. 482 00:23:26,190 --> 00:23:27,810 Do faru ŝnuron. 483 00:23:27,810 --> 00:23:30,200 Kompilita OK. . / Kordo. 484 00:23:30,200 --> 00:23:35,560 Lasu min tajpi en H-E-L-L-O, Enter, kaj ja mi havos ĝin, unu po linio. 485 00:23:35,560 --> 00:23:37,280 >> Do lasu min fari unu optimumigo tie. 486 00:23:37,280 --> 00:23:40,240 Se vi pensas pri tio, precipe se vi jam planis antaŭe, tie estas 487 00:23:40,240 --> 00:23:43,340 defendeble senefikeco en linio 24. 488 00:23:43,340 --> 00:23:46,160 En aliaj vortoj, ĝi ne nepre la plej bona dezajno. 489 00:23:46,160 --> 00:23:50,200 Simpla, almenaŭ unufoje vi memori kion str Leng estas, sed estas 490 00:23:50,200 --> 00:23:52,640 fari iun mutan potenciale. 491 00:23:52,640 --> 00:23:54,863 Kio povus esti tiu? 492 00:23:54,863 --> 00:23:56,280 >> [Inaudibles]. 493 00:23:56,280 --> 00:23:56,800 >> Ekzakte. 494 00:23:56,800 --> 00:24:00,340 Ĝi estas kontrolanta por la longeco de s ĉiun solan fojon kvankam 495 00:24:00,340 --> 00:24:02,980 H-Kaj-L-L-O estas ĉiam tuj esti kvin karakteroj. 496 00:24:02,980 --> 00:24:05,490 Ĉiufoje per ĉi maŝo, la kvin ne ŝanĝas. 497 00:24:05,490 --> 00:24:08,750 Mi estu pliigante i, sed kion estas la longo de s sur ĉiu 498 00:24:08,750 --> 00:24:09,690 ripeto de tiu ciklo? 499 00:24:09,690 --> 00:24:15,810 Estas kvin, ĝi estas kvin, ĝi estas kvin, kaj tamen mi tamen petas tiun 500 00:24:15,810 --> 00:24:18,320 pridubi denove kaj denove kaj denove. 501 00:24:18,320 --> 00:24:20,750 Nun sincere, la komputilo estas tiel malbenita rapida, neniu tuj rimarki 502 00:24:20,750 --> 00:24:23,780 diferenco en tiu kazo, sed tiuj specoj de malriĉaj dezajno decidoj povas 503 00:24:23,780 --> 00:24:28,330 komencas adicii se la tradukilo mem ne provu ripari tion por vi, kiun 504 00:24:28,330 --> 00:24:30,630 ĝi tipe ne volis, ĉe Almenaŭ en la aparaton. 505 00:24:30,630 --> 00:24:31,540 >> Do mi tuj faros tion. 506 00:24:31,540 --> 00:24:34,580 Mi tuj aldonos komo post mia unua variablo, i. 507 00:24:34,580 --> 00:24:37,310 Mi tuj donos al mi alian variablo, nomante ĝin n, nur 508 00:24:37,310 --> 00:24:41,330 konvencion por nombroj, kaj tiam mi estas tuj atribui n la valoro de kordoj 509 00:24:41,330 --> 00:24:42,530 longo de s. 510 00:24:42,530 --> 00:24:46,060 Kaj poste mi iros por ŝanĝi mia kondiĉo por esti kio? 511 00:24:46,060 --> 00:24:51,960 Mi tuj ŝanĝos mian kondiĉo por dum i estas malpli ol n. 512 00:24:51,960 --> 00:24:55,700 >> Do nun, kiom da fojoj mi kontrolanta la longo de s? 513 00:24:55,700 --> 00:25:00,110 Iam, sed estas bone por kontroli i kontraŭ n denove kaj denove ĉar nun tiuj 514 00:25:00,110 --> 00:25:03,170 valoroj ne vere ŝanĝas. 515 00:25:03,170 --> 00:25:06,020 Nun por hodiaŭ, nur scias, ke iam ajn vi voki funkcio, ekzistas iom da 516 00:25:06,020 --> 00:25:09,930 superkape, ne sufiĉas por malkuraĝigi vin vere iam uzante funkciojn, sed 517 00:25:09,930 --> 00:25:12,750 Certe kiam tie estas linio de kodo plaĉas - kaj la linioj ricevos 518 00:25:12,750 --> 00:25:15,490 pli interesa nelonge - kie ekzistas ŝanco por pensi, se mi 519 00:25:15,490 --> 00:25:18,320 tajpi tiun kodon, kiom da fojoj ĝi ekzekuti? 520 00:25:18,320 --> 00:25:20,950 Vi komencas vidi pli de la tempo la agado de viaj programoj povas 521 00:25:20,950 --> 00:25:21,660 ja ŝanĝos. 522 00:25:21,660 --> 00:25:24,110 >> Fakte, unu el la problemon aroj ni farita en jaroj pasintaj engaĝas 523 00:25:24,110 --> 00:25:27,600 apliki, kiel vi eble memoras el semajno nulo, sorĉas kontrolilo, sed 524 00:25:27,600 --> 00:25:31,380 spell checker ke estas desegnita por elporti vortaro de 150.000 pli 525 00:25:31,380 --> 00:25:32,860 vortoj, ke ni donu al vi guys. 526 00:25:32,860 --> 00:25:37,100 Vi devus skribi kodon kiu ŝarĝoj tiujn vortojn en RAM, tiel en 527 00:25:37,100 --> 00:25:40,700 skatoloj kiel ni vidis en la ekrano momenton antaŭe, kaj poste tiel rapide kiel vi 528 00:25:40,700 --> 00:25:43,740 povas, vi devas esti kapabla respondi al demando pri la formo, estas tiu vorto 529 00:25:43,740 --> 00:25:44,280 misspelled? 530 00:25:44,280 --> 00:25:45,420 Ĉu tiu vorto misspelled? 531 00:25:45,420 --> 00:25:46,770 Ĉu tiu vorto misspelled? 532 00:25:46,770 --> 00:25:49,525 >> Kaj en iu kiel tio kion ni farita en jaroj estinteco igis ŝin, 533 00:25:49,525 --> 00:25:53,500 kvankam sur opt-in nedeviga bazo, oni konkuro de varoj, per kiu la 534 00:25:53,500 --> 00:25:59,470 lernantoj kiuj uzas la malpli RAM kaj malpli tempo, malpli CPU cikloj, fini 535 00:25:59,470 --> 00:26:02,640 bobelis sur la supron de iom ĉefo tabulo aŭ rango kiun ni metas en 536 00:26:02,640 --> 00:26:04,770 la kurson de hejmpaĝo, kiel ni farita en jaroj pasintaj. 537 00:26:04,770 --> 00:26:08,100 Do denove, plene nedeviga, sed ĉi tiu lingvo al la dezajno ŝancojn 538 00:26:08,100 --> 00:26:11,250 kiuj estas antaŭ iam ni komencu konstrui sur la pinto de kelkaj el tiuj 539 00:26:11,250 --> 00:26:14,010 baza konstruaĵo blokoj. 540 00:26:14,010 --> 00:26:16,780 >> Do lasu min reveni al ĉi tiu figuro por nur momenton kaj malkaŝi iom 541 00:26:16,780 --> 00:26:17,610 ion pli. 542 00:26:17,610 --> 00:26:21,400 Tiu ja estas ĉeno, kaj ni prenis avantaĝo de kelkaj bibliotekoj, 543 00:26:21,400 --> 00:26:25,150 norma io.h kiu havas - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, inter aliaj aferoj. 546 00:26:27,860 --> 00:26:31,540 cs50.h, kiu akiras int kaj akiri kordo kaj tiel plu, string.h, kiu 547 00:26:31,540 --> 00:26:32,570 havis str Leng. 548 00:26:32,570 --> 00:26:34,800 Sed rezultu ekzistas ankoraŭ alia. 549 00:26:34,800 --> 00:26:38,540 Sincere, restas multaj kaj multaj header dosieroj, kiuj deklaras funkcioj 550 00:26:38,540 --> 00:26:43,320 por bibliotekoj, sed ĉi ctype.h estas fakte tuj estos iom 551 00:26:43,320 --> 00:26:46,900 avantaĝa ĉar mi tuj iri antaŭen kaj efektivigu unu 552 00:26:46,900 --> 00:26:48,120 alia programo tie. 553 00:26:48,120 --> 00:26:52,420 >> Lasu min antaŭeniri kaj malfermi ion Mi skribis anticipe nomitaj 554 00:26:52,420 --> 00:26:55,750 capitalize.c, kaj ni prenu rigardu kiel tio funkcias. 555 00:26:55,750 --> 00:27:00,340 Rimarku, ke mi uzis, en ĉi tiu versio pri tio, tri familiaraj dosierojn. 556 00:27:00,340 --> 00:27:04,110 Rimarku ke en linio 18, mi estas prenanta linio de teksto. 557 00:27:04,110 --> 00:27:07,660 Rimarki en linio 21, mi asertas ke la jena kodo tuj 558 00:27:07,660 --> 00:27:12,170 capitalize s, kion ajn la uzanto tajpas in, kaj kiel mi faras tion? 559 00:27:12,170 --> 00:27:13,300 Nu, mi ferios - 560 00:27:13,300 --> 00:27:14,750 leciono lernis de pasinta tempo - 561 00:27:14,750 --> 00:27:18,370 Mi deklarante i kaj n kaj ripetanta super la gravuloj de la kordo. 562 00:27:18,370 --> 00:27:22,720 Kaj poste kio estas ĉi tiu bloko de kodo en linio 24 tra 27 563 00:27:22,720 --> 00:27:24,550 faras en lego la terminoj? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Minuskla litero dorso. 566 00:27:29,730 --> 00:27:30,430 >> Ekzakte. 567 00:27:30,430 --> 00:27:35,920 Se s krampo i - do se la i-a karaktero de s, kio estas specifa 568 00:27:35,920 --> 00:27:40,220 char en la ĉeno, estas pli granda ol aŭ egala al minuskla a kaj - 569 00:27:40,220 --> 00:27:42,670 memori, ke duobla ampersand signifi kaj - 570 00:27:42,670 --> 00:27:46,810 kaj la saman karakteron, s krampo i, estas malpli ol aŭ egala al minuskla z 571 00:27:46,810 --> 00:27:50,600 tio signifas ke estu a aŭ b aŭ c aŭ dot, punkto, ĝi pentras, aŭ z, kio signifas 572 00:27:50,600 --> 00:27:51,340 ĝi estas minuskla. 573 00:27:51,340 --> 00:27:52,900 Kion mi volas fari en tiu kazo? 574 00:27:52,900 --> 00:27:55,010 Nu, mi povas fari tion iom crípticamente, sed 575 00:27:55,010 --> 00:27:56,160 ni turmentus tiu aparte. 576 00:27:56,160 --> 00:28:00,210 >> Mi tuj voki printf, presas% c ĉar mi volas represi ĉi 577 00:28:00,210 --> 00:28:01,580 karaktero sur la ekrano. 578 00:28:01,580 --> 00:28:06,650 Mi tiam tuj prenos s krampo mi, la i-a signo en s, kaj tiam kial 579 00:28:06,650 --> 00:28:12,330 mi faras ĉi tiu malgranda artifiko ĉi tie, minuskla a minus ĉefurbo A? 580 00:28:12,330 --> 00:28:16,352 Kio estas tiu tuj donos mi ĝenerale parolas? 581 00:28:16,352 --> 00:28:18,600 >> [Inaudibles]. 582 00:28:18,600 --> 00:28:19,390 >> Ekzakte. 583 00:28:19,390 --> 00:28:20,860 Mi ne vere memoras - 584 00:28:20,860 --> 00:28:24,390 estis 65 por ĉefurbo Al mi ne vere memori kion minuskla a estas, 585 00:28:24,390 --> 00:28:25,540 sed ne gravas. 586 00:28:25,540 --> 00:28:26,580 La komputilo scias. 587 00:28:26,580 --> 00:28:30,380 Tiel dirante, minuskla a minus ĉefurbo A, estas bizara por esti 588 00:28:30,380 --> 00:28:33,530 subtrahanta unu char de alia, sed kio estas signoj sub la kapuĉo? 589 00:28:33,530 --> 00:28:34,520 Ili estas nur numerojn. 590 00:28:34,520 --> 00:28:36,980 Do kio tiuj numeroj estas, lasu la komputilo memoras ĝin 591 00:28:36,980 --> 00:28:38,240 anstataŭ mi la homo. 592 00:28:38,240 --> 00:28:41,710 >> Do minuskla a minus ĉefurbo A estas tuj donu al mi la diferencon. 593 00:28:41,710 --> 00:28:45,370 Ĝi okazas al esti 32, kaj tio estus la kazo por minuskla b kaj ĉefurbo B 594 00:28:45,370 --> 00:28:45,930 kaj tiel plu. 595 00:28:45,930 --> 00:28:47,710 Ĝi restas kohera, dankeme. 596 00:28:47,710 --> 00:28:51,930 Do mi esence dirante, prenu la minuskla litero, subtrahi for ke 597 00:28:51,930 --> 00:28:55,340 norma diferenco, kaj ke efektive ŝanĝoj s krampo i el 598 00:28:55,340 --> 00:28:59,400 Minusklaj al, kompreneble, majuskle, sen mia vere devi pensi 599 00:28:59,400 --> 00:29:03,040 pri aux memoru, kion estis tiuj numerojn ni parolis pri kiam la ok 600 00:29:03,040 --> 00:29:04,800 volontuloj elkreskis sur scenejo? 601 00:29:04,800 --> 00:29:08,800 Nun dume, en la alia, se ĝi ne estas la minuskla litero kiel determinis 602 00:29:08,800 --> 00:29:10,400 por linio 24, simple presas ĝin. 603 00:29:10,400 --> 00:29:12,590 Mi nur volas tuŝi la karakterojn, kiuj estis 604 00:29:12,590 --> 00:29:14,410 fakte origine minuskle. 605 00:29:14,410 --> 00:29:15,150 >> Do ni vidas ĉi. 606 00:29:15,150 --> 00:29:17,400 Faru profiti. 607 00:29:17,400 --> 00:29:18,470 Kompilita, OK. 608 00:29:18,470 --> 00:29:19,730 . / Profiti. 609 00:29:19,730 --> 00:29:23,530 Kaj lasu min tajpi en H-E-L-L-O en minuskla, Enter. 610 00:29:23,530 --> 00:29:26,370 Kaj rimarki ke ĝi estas konvertita en majuskle. 611 00:29:26,370 --> 00:29:27,940 Permesu al mi fari tion denove kun malsaman vorton. 612 00:29:27,940 --> 00:29:32,720 Kion pri D-Al-V-mi-D kun la unua D majuskle kiel nomo tipe estas? 613 00:29:32,720 --> 00:29:33,560 Eniru. 614 00:29:33,560 --> 00:29:34,870 Rimarku ĝi estas ankoraŭ ĝusta. 615 00:29:34,870 --> 00:29:40,250 Ĝi simple outputted tiu unua D neŝanĝita tra kiuj alie konstrui. 616 00:29:40,250 --> 00:29:42,170 >> Do memoru, tiam, Paro de aferoj tie. 617 00:29:42,170 --> 00:29:45,060 Unu, se vi iam volas kontroli du kondiĉoj samtempe, vi povas kaj ilin 618 00:29:45,060 --> 00:29:46,500 kune kiel ni antaŭdiris. 619 00:29:46,500 --> 00:29:49,900 Vi povas kompari karakteroj en ĉi tiu maniero kaj efike trakti gravuloj kiel 620 00:29:49,900 --> 00:29:53,050 nombroj, sed sincere, tiu estas tiel malbenita kamufla Mi neniam tuj memoras 621 00:29:53,050 --> 00:29:56,510 kiel supreniru kun tiu de nulo sen rezonado tra ĝi por sufiĉe 622 00:29:56,510 --> 00:29:57,140 iom da tempo. 623 00:29:57,140 --> 00:30:00,590 >> Ĉu ne estis agrabla se iu tie skribis funkcio nomata estas 624 00:30:00,590 --> 00:30:05,390 malsupreniri kiu povus respondi al mi vera aŭ falsa, tiu karaktero estas minuskle? 625 00:30:05,390 --> 00:30:09,350 Nu dankeme, kiu ajn skribis ctype.h faris ekzakte tion. 626 00:30:09,350 --> 00:30:15,540 Permesu al mi iri tien kaj aldonu ctype por c tipoj, kaj nun lasu min iri tien kaj 627 00:30:15,540 --> 00:30:18,820 reverki ĉi tiu linio kiel sekvas. 628 00:30:18,820 --> 00:30:27,510 >> Do, se ĝi estas nomata estas pli malalta, mi asertas, s krampo i, tiam mi tuj forviŝi 629 00:30:27,510 --> 00:30:29,400 ĉi tiuj du linioj tute. 630 00:30:29,400 --> 00:30:32,570 Do nun iu alia, mi esperante, skribis funkcio nomata estas pli malalta, kaj tio 631 00:30:32,570 --> 00:30:36,250 turnoj el ili faris kaj ili deklaris ĝin ene de ctype.h. 632 00:30:36,250 --> 00:30:39,480 Kaj nun mi foriros linion 27 sole, mi tuj forlasos linion 31 633 00:30:39,480 --> 00:30:41,890 solece, sed rimarki kiom mi havas streĉita ĝis mia kodo. 634 00:30:41,890 --> 00:30:42,690 Estas nun pli pura. 635 00:30:42,690 --> 00:30:47,250 Ĝi estas malpli malfacile rigardi tra ĉar nun la funkcio, cetere, estas 636 00:30:47,250 --> 00:30:50,080 tiel mirinde nomis ĝin simple faras kion ĝi diras. 637 00:30:50,080 --> 00:30:51,520 >> Do nun mi iros por savi ĉi. 638 00:30:51,520 --> 00:30:52,930 Mi tuj malzomi. 639 00:30:52,930 --> 00:30:56,650 Kaj ĝuste kiel en Scratch vi povus havi Booleans, Buleaj valoroj vera aŭ 640 00:30:56,650 --> 00:31:01,530 falsa, tio estas ekzakte kio estas malsupreniri efike revenas. 641 00:31:01,530 --> 00:31:02,960 Lasu min recompilar. 642 00:31:02,960 --> 00:31:04,500 Lasu min ripeto. 643 00:31:04,500 --> 00:31:07,350 Kaj nun mi provu ĝin denove, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 Tio estas sufiĉe bonaj. 645 00:31:07,970 --> 00:31:10,150 Kaj provi ĝin denove, certigu mi ne firmigu ion. 646 00:31:10,150 --> 00:31:11,670 Tio estas majuskle ankaŭ. 647 00:31:11,670 --> 00:31:14,190 >> Sed ĉi tio ne sufiĉe bonas ĉar la alia afero, ke mi neniam tuj 648 00:31:14,190 --> 00:31:19,090 memoras se mi laboras tra ĝi vere atente en, ni diru, papero estas 649 00:31:19,090 --> 00:31:19,920 ĉi tiu malbenita linion. 650 00:31:19,920 --> 00:31:23,450 Ĉu ne estus bone se ekzistus funkcio vokis supra? 651 00:31:23,450 --> 00:31:26,930 Nu rezultas tie estas en ctype.h tiel. 652 00:31:26,930 --> 00:31:30,150 Mi tuj iros antaŭen kaj tajpu - 653 00:31:30,150 --> 00:31:31,340 lasu min porti tiun linion dorso. 654 00:31:31,340 --> 00:31:36,430 Anstataŭ ĉi tien, lasu min iri antaŭen kaj diru: anstataŭigi la% c la 655 00:31:36,430 --> 00:31:42,110 rezulto de nomi tiun funkcion al supra sur la i-a karaktero de s. 656 00:31:42,110 --> 00:31:45,430 Kaj nun rimarkas ĝin Fariĝas iom balancita. 657 00:31:45,430 --> 00:31:48,870 Mi devas konservi trako de kiom parentezoj mi malfermis kaj fermis. 658 00:31:48,870 --> 00:31:50,050 >> Do nun estas eĉ pli pura. 659 00:31:50,050 --> 00:31:53,460 Nun tiu programo fariĝas ĉiam pli bona desegnita eble ĉar ĝi estas 660 00:31:53,460 --> 00:31:56,450 multe, multe pli legebla sed ĝi estas neniu ni korekti. 661 00:31:56,450 --> 00:31:57,600 Faru profiti. 662 00:31:57,600 --> 00:31:58,930 . / Profiti. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Ni ruli ĝin denove, D-Al-V-mi-D. Bone, do ni estas ankoraŭ en 664 00:32:03,220 --> 00:32:04,250 sufiĉe bona formo. 665 00:32:04,250 --> 00:32:06,030 >> Sed nun por supra. 666 00:32:06,030 --> 00:32:09,720 Mi proponas, ke ekzistas pli bonmaniereco ni povus fari, ke estus 667 00:32:09,720 --> 00:32:12,820 vere bela, kiuj povus vere streĉi ĝis ĉi kodo kaj vere donas al ni kvin 668 00:32:12,820 --> 00:32:15,150 el kvin por dezajno, ekzemple. 669 00:32:15,150 --> 00:32:16,510 Kio estus agrable forigi? 670 00:32:16,510 --> 00:32:20,770 Nu, rigardu, kiel malbenita longa tiu bloko de kodo estas simple fari ion simple. 671 00:32:20,770 --> 00:32:23,850 >> Nun kiel flanken, kiel vi povus havi vidis en super sekcio ĉi estinteco 672 00:32:23,850 --> 00:32:27,570 semajnfino, vi ne strikte bezonas la krispa krampoj kiam vi nur havas unu 673 00:32:27,570 --> 00:32:32,180 linio de kodo, kvankam ni proponis gardante ilin por ke ĝi faras multe 674 00:32:32,180 --> 00:32:36,190 pli klara, kiel en Scratch la U-forma blokoj, kio estas ene de la branĉo. 675 00:32:36,190 --> 00:32:40,170 Sed ĉu ne estus agrabla se al supran, kiam donita lia eniro, li igis 676 00:32:40,170 --> 00:32:44,730 Majusklaj se ĝi ne estas, kaj kio estus estu mirinda en la kontraŭa kazo se 677 00:32:44,730 --> 00:32:47,210 ĝi estas jam majuskle? 678 00:32:47,210 --> 00:32:49,620 Nur pasi ĝin tra kaj lasi ĝin sola. 679 00:32:49,620 --> 00:32:50,660 >> Do eble ĝi faras tion. 680 00:32:50,660 --> 00:32:52,990 Mi povus provi kaj nur atendas ke ne, sed permesu al mi 681 00:32:52,990 --> 00:32:54,450 enkonduki unu alia afero. 682 00:32:54,450 --> 00:32:57,440 Anstataŭ uzi ĉi integrita stacio fenestro malsupren tie, memoru, ke 683 00:32:57,440 --> 00:33:01,130 ĉi kvadrata nigra ikono donas al vi pli granda fina fenestro ke mi povas plena 684 00:33:01,130 --> 00:33:02,260 projektos se mi volas? 685 00:33:02,260 --> 00:33:05,820 Do rezultas ili estas ia stranga nomata, sed estas tiuj aĵoj nomata 686 00:33:05,820 --> 00:33:10,970 paĝoj de man, manlibro paĝoj, viro por mallonga, kaj mi povas aliri al tiuj por 687 00:33:10,970 --> 00:33:14,515 tajpante viro - 688 00:33:14,515 --> 00:33:15,570 Kion mi volas tajpi? 689 00:33:15,570 --> 00:33:17,830 Viro al supra. 690 00:33:17,830 --> 00:33:21,090 >> Kaj nun rimarki se tie ekzistas funkcii ene de la komputilo, en 691 00:33:21,090 --> 00:33:23,970 tiu kazo la aparato, kiu estas ĝuste la mastruma sistemo Linukso, ĝi okazas 692 00:33:23,970 --> 00:33:27,920 doni al mi iom kamufla aro de eligo, sed vi trovos en la tempo, ke 693 00:33:27,920 --> 00:33:31,720 ĝi ĉiam estas formatita preskaux la sama tiel vi komencas alkutimiĝi al ĝi. 694 00:33:31,720 --> 00:33:35,130 Rimarku en la supera al supran, kaj ŝajne estas la sama dokumentado 695 00:33:35,130 --> 00:33:35,680 por malsupreniri. 696 00:33:35,680 --> 00:33:38,740 Kiu skribis ĝin tranĉis iuj anguloj kaj metu ĉion en unu paĝo. 697 00:33:38,740 --> 00:33:40,720 Tion 'celo en vivo estas por konverti 698 00:33:40,720 --> 00:33:42,780 letero al supra aŭ minuskle. 699 00:33:42,780 --> 00:33:46,290 >> Rimarku ke sub Intrigo, la viro paĝo instruas al mi kion dosiero mi devas 700 00:33:46,290 --> 00:33:48,130 inkludi uzi ĉi tiun aĵon. 701 00:33:48,130 --> 00:33:51,320 Ĝi donas al mi la subskribojn por tiuj funkcioj, ambaŭ el ili, 702 00:33:51,320 --> 00:33:53,510 kvankam ni nun nur zorgas pri tiu. 703 00:33:53,510 --> 00:33:54,730 Ĉi tie estas nun priskribo. 704 00:33:54,730 --> 00:33:58,800 Por superaj konvertas la letero c al majuskle se eblas. 705 00:33:58,800 --> 00:34:02,280 >> Ankoraŭ ne ke instrua, sed permesu al mi nun aspektas sub reveno valoro, la afero 706 00:34:02,280 --> 00:34:03,520 ke estas transdonita reen. 707 00:34:03,520 --> 00:34:08,600 Do la valoro revenis estas tiu de la konvertiĝis litero aŭ c se la 708 00:34:08,600 --> 00:34:09,870 konvertiĝo ne eblis. 709 00:34:09,870 --> 00:34:11,202 Kio estas c? 710 00:34:11,202 --> 00:34:12,560 >> La originala karaktero. 711 00:34:12,560 --> 00:34:15,370 >> La originala karaktero kaj ni scias ke per, denove, suprenirante al la 712 00:34:15,370 --> 00:34:19,179 sinopsis, kaj kiu skribis tiun funkcio simple decidis ke la enigo 713 00:34:19,179 --> 00:34:22,909 al al supra kaj suba estas simple arbitre tuj nomos c. 714 00:34:22,909 --> 00:34:24,909 Ili povus esti nomis ĝin plej ion ili volas, sed ili silentis 715 00:34:24,909 --> 00:34:26,270 simpla kiel c. 716 00:34:26,270 --> 00:34:27,880 Do mi konsultis la viro paĝo. 717 00:34:27,880 --> 00:34:31,870 Tiu frazo trankviligas min ke se ĝi ne estas minuskla litero, estas 718 00:34:31,870 --> 00:34:34,969 tuj ĝuste redonus al mi c, kiu estas perfekta, kiu signifas ke mi povas forigi 719 00:34:34,969 --> 00:34:36,199 mia alia kondiĉo. 720 00:34:36,199 --> 00:34:39,679 >> Do lasu min iri reen al gedit, kaj nun lasu min nur faru tion. 721 00:34:39,679 --> 00:34:41,960 Mi tuj kopii mian printf komunikaĵo. 722 00:34:41,960 --> 00:34:45,969 Mi tuj iros antaŭen kaj tute interne la buklo print that out, kaj akiri 723 00:34:45,969 --> 00:34:48,760 senigi de nun tiu aro se konstruo. 724 00:34:48,760 --> 00:34:51,860 Ne estis malbona ideo, kaj gxi estis tre multa korekta kaj kohera kun 725 00:34:51,860 --> 00:34:54,100 ĉion ni predikis, sed ĝuste ne necesa. 726 00:34:54,100 --> 00:34:57,070 Tuj kiam vi rimarkas iujn biblioteko funkcio ekzistas ke iu alia 727 00:34:57,070 --> 00:35:01,340 skribis, aŭ eble vi skribis aliloke en la dosiero, vi povas uzi ĝin kaj vere 728 00:35:01,340 --> 00:35:02,690 komenci streĉi ĝis la kodon. 729 00:35:02,690 --> 00:35:06,080 >> Kaj kiam mi diras aĵojn kiel bona stilo, la fakto ke tiu persono nomita la 730 00:35:06,080 --> 00:35:11,490 funkcii al supra, aŭ antaŭe estas suba estas mirinde utilaj ĉar 731 00:35:11,490 --> 00:35:12,900 ili estas tre priskriba. 732 00:35:12,900 --> 00:35:16,120 Vi ne volas nomi vian funkcioj x kaj y kaj z, kiuj havas 733 00:35:16,120 --> 00:35:19,620 multe, multe malpli signifon. 734 00:35:19,620 --> 00:35:25,160 Demandojn sur tiu serio de plibonigoj? 735 00:35:25,160 --> 00:35:28,010 >> Do sufiĉas diri unu el la takeaways estas kiel via propra problemo 736 00:35:28,010 --> 00:35:30,960 aro - eble problemo aro, sed certe P starigis du kaj antaŭen, eĉ 737 00:35:30,960 --> 00:35:34,380 kiam ili estas ĝusta ne necese signifas ke ili estas perfektaj nur 738 00:35:34,380 --> 00:35:36,155 tamen nek aparte bone desegnita. 739 00:35:36,155 --> 00:35:38,420 Tio estas la alia akso komenci pensi. 740 00:35:38,420 --> 00:35:41,730 Do temas pri ŝnuro ene de via komputilo memoro, sed se vi havas 741 00:35:41,730 --> 00:35:46,180 tutan faskon da karakteroj kiel H-E-L-L-O ene de RAM kaj supozi 742 00:35:46,180 --> 00:35:51,330 ke vi en via programo vokas akiri kordo plurfoje tiaj ke vi 743 00:35:51,330 --> 00:35:54,200 voki akiri string fojon, tiam vi voki akiri kordo denove. 744 00:35:54,200 --> 00:35:55,880 Nu, kio okazas al okazos la tempo? 745 00:35:55,880 --> 00:35:59,170 >> En aliaj vortoj, se vi havas linion de kodo, kvankam el kunteksto, kiel 746 00:35:59,170 --> 00:36:02,120 kordo s gets - 747 00:36:02,120 --> 00:36:02,960 ni faras tion. 748 00:36:02,960 --> 00:36:05,270 String nomo egalas atingi ŝnuron. 749 00:36:05,270 --> 00:36:08,590 Do supozu ke linion de kodo estas intencita demandi al la uzanto por sia nomo. 750 00:36:08,590 --> 00:36:14,580 Ĉi sekvanta linio de kodo estas intencita por demandi la uzanto por sia lernejo, kaj 751 00:36:14,580 --> 00:36:15,920 ĉi sekva linio, kaj tiel plu. 752 00:36:15,920 --> 00:36:18,150 Supozu ke ni observas demandante la uzanto por alia kaj 753 00:36:18,150 --> 00:36:19,750 alia kaj alia linio. 754 00:36:19,750 --> 00:36:22,390 Ili tuj resti en la memoro samtempe. 755 00:36:22,390 --> 00:36:24,280 Unu ne tuj clobber la alia. 756 00:36:24,280 --> 00:36:26,420 Lernejo estas ne anstataŭigi la alia. 757 00:36:26,420 --> 00:36:28,520 Sed kie do ili ĉiuj ili finas en memoro? 758 00:36:28,520 --> 00:36:32,030 >> Nu, se ni komencas desegni sur la ekrano, kiun ni povas uzi tion 759 00:36:32,030 --> 00:36:35,800 tie kiel skribtabulo, se ĉi tiu nigra ortangulo reprezentas mia komputilo 760 00:36:35,800 --> 00:36:39,800 memoro, mi tuj arbitre komenci dividante ĝin en iom kvadratoj, 761 00:36:39,800 --> 00:36:42,120 el kiuj ĉiu reprezentas unu bajto de memoro. 762 00:36:42,120 --> 00:36:46,560 Sincere, se vi havas gigabajto de RAM ĉi tiuj tagoj, vi havas miliardoj bitokoj 763 00:36:46,560 --> 00:36:49,540 de memoro en via komputilo, do miliardo el tiuj kvadratoj. 764 00:36:49,540 --> 00:36:52,110 Do sufiĉas diri, tiu ne estas vere skalo. 765 00:36:52,110 --> 00:36:58,250 >> Sed ni povus konservi desegnante ĉiuj de ĉi tiuj klare ne grimpi kvadratoj, kaj ĉi 766 00:36:58,250 --> 00:37:01,260 kolektive reprezentas mia komputilo memoro. 767 00:37:01,260 --> 00:37:03,136 Nun ni nur faru dot, punkto, ĝi pentras. 768 00:37:03,136 --> 00:37:06,260 Do alivorte, kiam mi nun instigas la uzanto kun get string doni al mi 769 00:37:06,260 --> 00:37:07,350 kordo, kio okazas? 770 00:37:07,350 --> 00:37:14,270 Se la uzanto tajpas en "saluton", kiu enfluas supren en H-E-L-L-O. Sed supozu la 771 00:37:14,270 --> 00:37:15,720 uzanton tiam tipoj en - 772 00:37:15,720 --> 00:37:17,250 fakte, mi ne estus farinta saluton ĉar ni petas 773 00:37:17,250 --> 00:37:18,330 ilin pro iliaj nomoj. 774 00:37:18,330 --> 00:37:20,580 Do ni revenu se mi povas fari ĉi tion. 775 00:37:20,580 --> 00:37:26,130 >> Do se mi tipo en D-Al-V-mi-D por mia nomo, sed memoru ke la dua linio de 776 00:37:26,130 --> 00:37:29,220 kodo estis akiri kordo denove akiri lia lernejo. 777 00:37:29,220 --> 00:37:32,090 Kie estas tiu vorto, kiun la uzanto tipoj en tuj iros poste? 778 00:37:32,090 --> 00:37:38,290 Nu, eble ĝi tuj iri en H-Al-R-V-Al-R-D. Do eĉ se mi havas 779 00:37:38,290 --> 00:37:41,560 desegnita kiel du vicoj, ĉi tio estas nur tutan faskon da bajtoj en via 780 00:37:41,560 --> 00:37:42,710 komputilo RAM. 781 00:37:42,710 --> 00:37:46,560 Tie estas problemo nun ĉar nun se mi uzante RAM en tiu tre racie 782 00:37:46,560 --> 00:37:49,910 sed speco de naiva maniero, kio povas vin ne ŝajne distingi? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Kie oni komencas kaj kie unu randoj, ĉu ne? 785 00:37:54,680 --> 00:37:55,860 Ili estas speco de desdibujando kune. 786 00:37:55,860 --> 00:37:57,920 >> Do rezultas la komputilo Ne fari ĉi tion. 787 00:37:57,920 --> 00:38:04,720 Estu mi efektive rulumi malantaŭen en la tempo de kelkaj signoj, kaj anstataŭ Harvard 788 00:38:04,720 --> 00:38:09,570 irante tuj post la uzanto nomo, la uzanto reale ricevas, malantaŭ 789 00:38:09,570 --> 00:38:12,000 la scenoj, speciala karaktero inserto de la 790 00:38:12,000 --> 00:38:13,885 komputilo por li aŭ ŝi. 791 00:38:13,885 --> 00:38:19,470 / 0, alie sciata kiel la nul karaktero annoyingly nomata N-U-L, ne 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, sed vi skribas ĝin kiel / 0. 793 00:38:22,190 --> 00:38:27,130 Estas nur ĉiuj nulo bitoj estas markilo en inter la unua vorto, kiun la uzanto 794 00:38:27,130 --> 00:38:28,290 tajpitaj kaj la dua. 795 00:38:28,290 --> 00:38:33,020 >> Do Harvard efektive nun finas kiel tiu vico de signoj 796 00:38:33,020 --> 00:38:36,110 kaj unu pli / 0. 797 00:38:36,110 --> 00:38:41,690 Do alivorte, por havi tiujn gardostaranto valoroj, ok apudaj nulo 798 00:38:41,690 --> 00:38:45,220 bitoj, vi povas nun komenci distingi unu signo de alia. 799 00:38:45,220 --> 00:38:49,720 Do tiu tuta tempo, kio estis "saluton" estas efektive "saluton" kun / 0, kaj 800 00:38:49,720 --> 00:38:53,580 dume, tie povus tre bone esti sufiĉe pli RAM 801 00:38:53,580 --> 00:38:56,400 ene de la komputilo. 802 00:38:56,400 --> 00:38:57,810 >> Lasu min fari unu alia afero nun. 803 00:38:57,810 --> 00:39:01,800 Rezultas, ke ĉiuj el tiuj kvadratoj ni estis desegni, ili estas, jes, 804 00:39:01,800 --> 00:39:06,140 kordoj, sed pli ĝenerale, ĉi tiuj aferoj estas arrays. 805 00:39:06,140 --> 00:39:10,590 Tabelo estas nur eron de memoro tio estas malantaŭo al malantaŭo al malantaŭo al malantaŭo, 806 00:39:10,590 --> 00:39:15,130 kaj vi kutime uzas tabelo de vojo de ĉi tiu kvadrata krampo skribmaniero. 807 00:39:15,130 --> 00:39:18,210 Do ni tuj vidos, sufiĉe tra la tempo, sed lasu min antaŭeniri kaj 808 00:39:18,210 --> 00:39:21,160 malfermi, ni nomas ĝin aĝoj. 809 00:39:21,160 --> 00:39:23,920 Kaj rimarkos, kion ni povas fari kun tiuj samaj lertaĵoj, iom 810 00:39:23,920 --> 00:39:25,750 iom pli sintakso tie. 811 00:39:25,750 --> 00:39:29,270 >> Do en linio 17 de tiu programo - fakte, mi kuros al la programo unue 812 00:39:29,270 --> 00:39:30,770 tiel ni povas vidi kio estas tiu afero faras. 813 00:39:30,770 --> 00:39:33,530 Lasu min vokas fari mondagxoj kompili tiun programon. 814 00:39:33,530 --> 00:39:34,950 . / Aĝoj. 815 00:39:34,950 --> 00:39:36,480 Kiom da homoj estas en la ĉambro? 816 00:39:36,480 --> 00:39:38,020 Nomu ĝin tri. 817 00:39:38,020 --> 00:39:39,575 Aĝo de la unua persono? 818 00:39:39,575 --> 00:39:42,710 18, 19, kaj 20. 819 00:39:42,710 --> 00:39:46,770 Kaj nun iom ridinde, mi nur faris programon kiu aĝoj tiuj 820 00:39:46,770 --> 00:39:47,740 tri personoj. 821 00:39:47,740 --> 00:39:50,390 >> Do ne estas klare ŝancon por iu amuza aritmetiko tie. 822 00:39:50,390 --> 00:39:51,560 Feliĉe, la math estas ĝusta. 823 00:39:51,560 --> 00:39:54,720 18 iris al 19, 19 eliris 20 kaj tiel plu. 824 00:39:54,720 --> 00:39:58,510 Sed kio vere intencis esti ilustrativos jen kiel ni stokante 825 00:39:58,510 --> 00:40:00,190 tiuj tri homoj aĝoj. 826 00:40:00,190 --> 00:40:02,370 Lasu min zomi en kio estas okazas ĉi tie. 827 00:40:02,370 --> 00:40:06,240 >> Do unue, ĉi tiuj unuaj kelkaj linioj devus esti akiri sufiĉe familiara. 828 00:40:06,240 --> 00:40:08,770 Mi simple instigante la uzanto por la nombro de homoj en la ĉambro. 829 00:40:08,770 --> 00:40:11,490 Tiam Mi uzas akiri int kaj faru malproksima fari tion denove kaj denove kaj denove. 830 00:40:11,490 --> 00:40:15,780 Ni jam vidis ke mastro antaŭe, sed linio 27 estas novaj kaj fakte sufiĉe 831 00:40:15,780 --> 00:40:18,160 utila, kaj iĝos ĉiufoje utila. 832 00:40:18,160 --> 00:40:21,620 Rimarku, ke kio estas malsama en linion 27 estas ke mi ŝajnas esti deklarante an 833 00:40:21,620 --> 00:40:23,960 int nomas aĝoj, sed atendu. 834 00:40:23,960 --> 00:40:27,140 Ĝi ne estas simple int aĝoj. 835 00:40:27,140 --> 00:40:30,130 Ekzistas tiuj kvadrataj krampoj, ene de kio estas n. 836 00:40:30,130 --> 00:40:35,150 >> Do la krampo n en tiu kunteksto, ne ene de printf aserto tie sed 837 00:40:35,150 --> 00:40:44,370 en ĉi tiu sola linio 27, ĉi tiu linio estas dirante: donu al mi n ints, ĉiu el kiuj 838 00:40:44,370 --> 00:40:46,080 estas de tipo int. 839 00:40:46,080 --> 00:40:49,870 Do tiu estas sitelo, por tiel diri, de, en ĉi tiu kazo, tri entjeroj reen al 840 00:40:49,870 --> 00:40:52,770 malantaŭo al malantaŭo por ke mi efektive havas tri variabloj. 841 00:40:52,770 --> 00:40:54,890 La alternativo, esti klara, estus ĉi. 842 00:40:54,890 --> 00:40:57,400 >> Se mi volis la unua studento aĝo, mi povus fari tion. 843 00:40:57,400 --> 00:40:59,520 Se mi volis la dua studento aĝo mi povus fari tion. 844 00:40:59,520 --> 00:41:01,860 Se mi volis la tria studenta aĝo, mi povus fari tion. 845 00:41:01,860 --> 00:41:04,320 Kaj dio malpermesu ni bezonas ĉies aĝo en tiu ĉambro - 846 00:41:04,320 --> 00:41:07,670 Mi volas diri, ĉi tiu estas heck de multaj kopion, algluota denove kaj denove kaj denove. 847 00:41:07,670 --> 00:41:10,870 Kaj plus unufoje Mi kompili tiun programon, se alia studento promenas en pli ol ekstere 848 00:41:10,870 --> 00:41:14,200 de tiu pordo, nun mia nombro de variabloj estas malĝusta. 849 00:41:14,200 --> 00:41:17,450 >> Do kio estas agrable pri tabelo estas tiel Kiam vi komencas senti vin mem 850 00:41:17,450 --> 00:41:20,190 kopii kaj alglui, prognozoj estas tio ne la plej bona alproksimiĝo. 851 00:41:20,190 --> 00:41:22,240 Tabelo estas dinamika potenciale. 852 00:41:22,240 --> 00:41:24,610 Mi ne scias anticipe kiom da homoj tuj estos en la ĉambron, 853 00:41:24,610 --> 00:41:28,670 sed mi scias, mi bezonas n el ili, kaj Mi instruos vin elkompreni n kiam la tempo venas. 854 00:41:28,670 --> 00:41:35,500 Ĉi linio de kodo nun signifas, donu al mi eron de memoro kiu similas tiun 855 00:41:35,500 --> 00:41:40,380 kie la nombro da skatoloj en la ekrano estas tute dependa de n tio 856 00:41:40,380 --> 00:41:42,010 la uzanto tajpas in 857 00:41:42,010 --> 00:41:44,850 >> Do nun la reston de tiu programo estas fakte sufiĉe simila al tio, kion ni 858 00:41:44,850 --> 00:41:46,860 nur faris kun gravuloj. 859 00:41:46,860 --> 00:41:49,970 Notice mi havas por buklo komencante en linio 30. 860 00:41:49,970 --> 00:41:54,920 Do tuj post mi alvenas la tabelo, mi persisti de y egalas nulo sur ĝis n. 861 00:41:54,920 --> 00:41:58,890 Mi nur havas tiun instruan printf mesaĝo nur diras, donu al mi la aĝo 862 00:41:58,890 --> 00:42:03,690 de persono #% i, do numero unu, numero du, numero tri. 863 00:42:03,690 --> 00:42:04,730 Kaj kial mi faru tion? 864 00:42:04,730 --> 00:42:08,870 Sincere, la homoj preferas rakonti de unu plu supren dum komputikistoj, 865 00:42:08,870 --> 00:42:09,620 nulo plu supren. 866 00:42:09,620 --> 00:42:11,700 komputikistoj ne tuj uzi tian programon, do ni estas 867 00:42:11,700 --> 00:42:13,990 tuj komencu rakonti ĉe unu kiel normalaj homoj. 868 00:42:13,990 --> 00:42:17,630 >> Kaj nun en linio 33, rimarki la iomete malsama peco de sintakso. 869 00:42:17,630 --> 00:42:23,710 La i-a aĝo en tiu variablo de tipo tabelo tuj ricevas int. 870 00:42:23,710 --> 00:42:25,770 Kaj nun laste, ĉi tio estas nur aritmetika cxi tie. 871 00:42:25,770 --> 00:42:29,200 Mi decidis en aparta buklo pretendi iu tempo pasas, kaj nun en tiu 872 00:42:29,200 --> 00:42:31,400 apartan buklo, ĉi tiuj linioj ekzekuti. 873 00:42:31,400 --> 00:42:35,810 >> Jaro de nun, persono i estos i jaroj, sed rimarkas tio ne estas la 874 00:42:35,810 --> 00:42:36,500 variablo i. 875 00:42:36,500 --> 00:42:38,390 Tiu estas jam% i por int. 876 00:42:38,390 --> 00:42:43,210 Kaj avizo kiel la unua lokokupilo, mi kontaktŝtopilo en i plus 1, do ni nomas kiel 877 00:42:43,210 --> 00:42:44,250 normala persono. 878 00:42:44,250 --> 00:42:49,190 Kaj tiam por la valoro de lia aĝo, por i-jara, mi prenos aĝoj krampo 879 00:42:49,190 --> 00:42:52,980 i - kaj kial mi faras plus unu estas cxi tie? 880 00:42:52,980 --> 00:42:53,760 Ili simple kadukiĝis. 881 00:42:53,760 --> 00:42:55,030 Estas mia stulta elekto de programoj. 882 00:42:55,030 --> 00:42:56,810 Ili simple jaroj unu jaro. 883 00:42:56,810 --> 00:42:59,770 Mi povus entajpi ajnan numeron kiu Mi vere volas tie. 884 00:42:59,770 --> 00:43:02,430 >> Do kio estas fakte ĉiuj la graveco tie? 885 00:43:02,430 --> 00:43:07,610 Nu, mi fakte rulumi reen super tie kaj pentri bildon 886 00:43:07,610 --> 00:43:10,830 de kio kuŝas antaŭen. 887 00:43:10,830 --> 00:43:15,720 Kion ni faru kun nia sekva Problemo Ara Du estas dabbling en la 888 00:43:15,720 --> 00:43:17,070 mondo de ĉifriko. 889 00:43:17,070 --> 00:43:22,500 Do tiu estas ĉeno de karakteroj, tial vico de multnombraj signoj, kaj kion 890 00:43:22,500 --> 00:43:23,750 Ĉu tio diras? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Ĝi ne estas en la reta versio de la diapozitivoj. 893 00:43:30,600 --> 00:43:35,880 >> Do mi asertas ke ĉi tiu egalas tio, stulta anonco de multaj jaroj 894 00:43:35,880 --> 00:43:39,950 antaŭe ke povus efektive memoras unu el liaj originoj. 895 00:43:39,950 --> 00:43:42,740 Do tiu estas ekzemplo de ĉifrado aŭ ĉifriko. 896 00:43:42,740 --> 00:43:46,150 Rezultas, ke se vi volas fakte sendi informojn aŭ dividi 897 00:43:46,150 --> 00:43:49,310 informo kun iu sekure, kiel mesaĝon tiel, vi povas 898 00:43:49,310 --> 00:43:50,500 levi la literoj. 899 00:43:50,500 --> 00:43:53,170 Sed tipe, la vortoj estas ne grimpis hazarde. 900 00:43:53,170 --> 00:43:56,365 Ili estas permutita en iu maniero aŭ ŝanĝita iel tiel ke - oops. 901 00:43:56,365 --> 00:43:59,040 Tio estas amuza alerono por la proksima tempo. 902 00:43:59,040 --> 00:44:04,390 >> Do vi povas mapi kio estas ŝajne O al B. Rimarku ke regiono 903 00:44:04,390 --> 00:44:05,420 kapitaligo-saĝa. 904 00:44:05,420 --> 00:44:07,960 Ŝajne r iĝas e. 905 00:44:07,960 --> 00:44:14,000 Ŝajne F-H-E-R iĝas S-U-R-E. Tiel rezultas tie estas surĵeto, kaj en 906 00:44:14,000 --> 00:44:18,720 ĉi tiu kazo ne estas sufiĉe stulta surĵeto se iu figured it out? 907 00:44:18,720 --> 00:44:21,440 Tio estas io nomata Rot 13 Turni la 13. 908 00:44:21,440 --> 00:44:24,760 Ĝi estas la stupidest de ĉifrado mekanismoj ĉar ĝi laŭvorte nur 909 00:44:24,760 --> 00:44:29,160 Aldonas 13 al ĉiu de la literoj, stulta en la senco ke se vi nur 910 00:44:29,160 --> 00:44:31,890 havas iom da libera tempo en viajn manojn kaj krajonon, aŭ vi simple pensas ke 911 00:44:31,890 --> 00:44:35,260 tra en via kapo, vi povus provi ĉiuj eblaj aldonoj - unu, du, 912 00:44:35,260 --> 00:44:38,470 tri, pentras, pentras, punkto, 25 al nur turni la tuta alfabeto, kaj 913 00:44:38,470 --> 00:44:40,860 fine, vi diveni kio ĉi tiu mesaĝo estas. 914 00:44:40,860 --> 00:44:43,700 Do se vi faris ion kiel ĉi tiu en lernojaro lernejo pasi mesaĝojn al via 915 00:44:43,700 --> 00:44:46,830 bona amiko, se via lernojaro lernejo instruisto simple tralegu la 916 00:44:46,830 --> 00:44:50,320 mesaĝon kaj malpura devigis la solvo, vi povus esti alveninta 917 00:44:50,320 --> 00:44:52,550 respondon de tio. 918 00:44:52,550 --> 00:44:54,970 >> Nun kompreneble, en la reala mondo, ĉifriko estas pli kompleksa. 919 00:44:54,970 --> 00:45:00,120 Tio ĉi estas fragmento de teksto el komputila sistemo kiu havas salutnomoj kaj 920 00:45:00,120 --> 00:45:03,630 pasvortoj, kiel preskaŭ ĉiuj niaj fari, kaj ĉi tio estas kion vian pasvorton forton 921 00:45:03,630 --> 00:45:07,260 aspektas kiel se stokita en la malmola stiri sed en ĉifrita formo. 922 00:45:07,260 --> 00:45:11,050 Ĉi tio ne estas nur turnado de literoj, A estas B kaj B estas C. Ĉi tio estas 923 00:45:11,050 --> 00:45:15,620 multe pli kompleksa, sed ĝi uzas kio ĝenerale konata kiel sekreta ŝlosilo 924 00:45:15,620 --> 00:45:16,690 ĉifriko. 925 00:45:16,690 --> 00:45:20,210 Tiu bildo rakontas la sekvajn rakonto kun kelkaj ikonoj. 926 00:45:20,210 --> 00:45:22,250 >> Maldekstre, ni havas kion ni vokos simpla teksto. 927 00:45:22,250 --> 00:45:25,420 En la mondo de ĉifriko, ebenaĵo teksto estas nur la originala mesaĝo 928 00:45:25,420 --> 00:45:29,050 skribita en la angla aux la franca aŭ ajna lingvo ajn. 929 00:45:29,050 --> 00:45:32,405 Se vi volas ĉifri ĝin, ni pasas ĝi pictóricamente tra pendseruro, do 930 00:45:32,405 --> 00:45:35,580 iuj de speco de algoritmo, iu funkcio aŭ programo kiun iu skribis 931 00:45:35,580 --> 00:45:39,880 ke scrambles la literoj espereble pli complicatedly ol nur aldonante 13 932 00:45:39,880 --> 00:45:40,980 al ĉiu el ili. 933 00:45:40,980 --> 00:45:43,780 >> Kion vi eliri de tiu proceso en la mezo tie nomas cyphertext. 934 00:45:43,780 --> 00:45:44,850 Do ia sexy vorto. 935 00:45:44,850 --> 00:45:47,630 Ĝi nur signifas ĝi estas la ĉifrita versio de la simpla teksto. 936 00:45:47,630 --> 00:45:52,570 Kaj nur se vi havas tiun saman sekreton, 13 aŭ minus 13, vi povas 937 00:45:52,570 --> 00:45:54,970 malĉifri mesaĝon tiel. 938 00:45:54,970 --> 00:45:57,770 >> Do en Problemo Ŝanĝu Du, inter la aĵoj vi faros se en la Hacker 939 00:45:57,770 --> 00:46:01,860 Eldono, vi devos skribi kodo fendi tiuj pasvortoj, elŝeligi 940 00:46:01,860 --> 00:46:05,170 kio estis kaj kiel estis ĉifrita, kvankam ni faros al vi iom 941 00:46:05,170 --> 00:46:06,460 de gvido en la vojo. 942 00:46:06,460 --> 00:46:09,320 En la Norma Eldono, ni enkondukas paro de ĉifroj, ĉifrado 943 00:46:09,320 --> 00:46:12,400 mekanismoj, unu nomita cezaro unu vokis Vigenère, kiu estas ankoraŭ 944 00:46:12,400 --> 00:46:16,100 turna ĉifroj kie A iĝas io, B igas iun, sed 945 00:46:16,100 --> 00:46:18,820 vi devas fari ĝin programmatically ĉar estos ja esti sekreta 946 00:46:18,820 --> 00:46:22,840 ŝlosilo implikita kiu estas tipe nombro aux sxlosilvorto ke nur la 947 00:46:22,840 --> 00:46:26,420 sendinto kaj la ricevinto de tiuj mesaĝoj devus kompreni. 948 00:46:26,420 --> 00:46:28,660 >> Nun, ĉi tiu reale havas personigoj en la reala mondo. 949 00:46:28,660 --> 00:46:32,910 Ĉi tio, ekzemple, estas iom orfa Annie la sekreta deĉifrilo ringo, kaj vi 950 00:46:32,910 --> 00:46:35,180 efektive povas realigi tiujn turna ĉifroj - 951 00:46:35,180 --> 00:46:37,930 A iĝas io, B iĝas io - kun paro da radoj, 952 00:46:37,930 --> 00:46:40,840 unu sur la ekstera, unu en la interno tia, ke se vi turnas la rado aŭ 953 00:46:40,840 --> 00:46:44,170 la ringo, vi povas efektive laŭliniigi la literojn kun malsamaj literoj, 954 00:46:44,170 --> 00:46:45,430 prenanta sekreta kodo. 955 00:46:45,430 --> 00:46:48,110 Kaj tiel kiel la cliffhanger por hodiaŭ, kion mi pensis, ke mi volas fari, estas iom da 956 00:46:48,110 --> 00:46:52,170 throwback ke se vi ŝaltas la televidilon 24 de decembro, vi povas rigardi la 957 00:46:52,170 --> 00:46:55,390 filmo ad nauseum por 24 horojn en unu vico. 958 00:46:55,390 --> 00:47:06,030 Sed por hodiaŭ, mi malfermos ĝin ĉi tie kaj donu al ni nur du minutoj de 959 00:47:06,030 --> 00:47:13,493 pedagogie taŭga Kristnasko Story kun iom ulo nomata Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [VIDEO reprodukto] 961 00:47:14,400 --> 00:47:17,420 >> -Estu sciate al ĉiuj kaj sundry ke Ralph Parker maniere enoficigita 962 00:47:17,420 --> 00:47:20,650 membro de la Little Orphan Annie sekreta rondo kaj povas postuli la tutan 963 00:47:20,650 --> 00:47:23,460 la honoroj kaj profitoj okazanta arangxajxo. 964 00:47:23,460 --> 00:47:25,990 >> -Subskribita, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Legalizita, Pierre Andre en inkon. 966 00:47:30,100 --> 00:47:34,270 Honoroj kaj profitoj jam en la aĝo de naŭ. 967 00:47:34,270 --> 00:47:39,440 >> [Kriante SUR RADIO] 968 00:47:39,440 --> 00:47:40,770 >> Venu, ni okupiĝi pri ĝi. 969 00:47:40,770 --> 00:47:44,965 Mi ne bezonas ĉiujn kiuj ĵazo pri kontrabandistoj kaj piratoj. 970 00:47:44,965 --> 00:47:48,270 >> -Aŭskultu morgaŭ nokte por la konkludante aventuro de la nigra 971 00:47:48,270 --> 00:47:49,650 pirato ŝipo. 972 00:47:49,650 --> 00:47:53,320 Nun, estas tempo por Annie La Sekreto Mesaĝo por vi membrojn 973 00:47:53,320 --> 00:47:55,720 de la sekreta cirklo. 974 00:47:55,720 --> 00:47:56,580 Memoru, infanoj. 975 00:47:56,580 --> 00:48:01,720 Nur membroj de Annie La Sekreta Rondo povas malkodi Annie la sekreta mesaĝo. 976 00:48:01,720 --> 00:48:05,872 Memoru, Annie estas depende de vi. 977 00:48:05,872 --> 00:48:08,670 Ŝanĝu vian pingloj al B2. 978 00:48:08,670 --> 00:48:11,000 Jen la mesaĝo. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Mi estas en mia unua sekreta kunveno. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre estis en granda voĉo nokto. 983 00:48:21,650 --> 00:48:24,830 Mi povus diri, ke vespere mesaĝo estis vere grava. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Tio estas mesaĝo de Annie sin. 986 00:48:28,540 --> 00:48:30,086 Memoru, ne diru al neniu. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekundoj poste, mi estas en la ununura ĉambro en la domo kie knabo de naŭ 989 00:48:38,710 --> 00:48:42,668 povis sidi en intimeco kaj malkodi. 990 00:48:42,668 --> 00:48:47,628 Ha, B. Mi iris al la sekva. 991 00:48:47,628 --> 00:48:53,060 E. La unua vorto estas "esti." S. Ĝi venis pli facile nun. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Tio estas R. 994 00:48:55,940 --> 00:48:56,900 >> -Venu, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Mi gotta go. 996 00:48:57,860 --> 00:48:59,780 >> -I'll be right down, Ma. 997 00:48:59,780 --> 00:49:01,030 Gee qui. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Nepre. 1000 00:49:08,220 --> 00:49:09,500 Nepre kio? 1001 00:49:09,500 --> 00:49:11,660 Kio estis Little Orphan Annie provas diri? 1002 00:49:11,660 --> 00:49:12,844 Nepre kio? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy has got iri. 1004 00:49:14,732 --> 00:49:16,148 Ĉu vi bonvolos veni el? 1005 00:49:16,148 --> 00:49:17,092 >> -Bone, Ma. 1006 00:49:17,092 --> 00:49:18,510 Mi tuj eliris. 1007 00:49:18,510 --> 00:49:20,270 >> -Mi proksimiĝas al nun. 1008 00:49:20,270 --> 00:49:21,823 La streĉiĝo estis terura. 1009 00:49:21,823 --> 00:49:23,045 Kio estis tio? 1010 00:49:23,045 --> 00:49:26,510 La sorto de la planedo povas pendi en la pesilo. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randy la gotta go. 1012 00:49:28,985 --> 00:49:32,680 >> -I'll be right eliris por laŭte ploris. 1013 00:49:32,680 --> 00:49:33,956 >> -Preskaŭ tie. 1014 00:49:33,956 --> 00:49:35,140 Miaj fingroj flugis. 1015 00:49:35,140 --> 00:49:36,880 Mia menso estis ŝtalo kaptilo. 1016 00:49:36,880 --> 00:49:38,010 Ĉiu poro vibris. 1017 00:49:38,010 --> 00:49:39,878 Estis preskaŭ klara. 1018 00:49:39,878 --> 00:49:43,210 Jes, jes, jes, jes, jes. 1019 00:49:43,210 --> 00:49:49,030 >> -Nepre trinkos vian Ovaltine. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Al crummy komerca? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Filo de ĉiesulino. 1025 00:50:00,694 --> 00:50:01,900 >> [FINO reprodukto de vídeo] 1026 00:50:01,900 --> 00:50:04,260 >> Parolanto 1: Tio estas CS50, kaj ke Estos Problemo Set Two. 1027 00:50:04,260 --> 00:50:06,305 See you proksima semajno. 1028 00:50:06,305 --> 00:50:08,800 >> Speaker 2: En la sekvanta CS50, ĉi tio okazas. 1029 00:50:08,800 --> 00:50:11,060 >> Parolanto 1: Do unu temo ni ne rigardis ĝis nun estas 1030 00:50:11,060 --> 00:50:12,220 tiu de funkcio montriloj. 1031 00:50:12,220 --> 00:50:14,540 Nun, funkcio puntero estas nur la adreso de publika 1032 00:50:14,540 --> 00:50:17,000 funkcio, sed multe kiel - 1033 00:50:17,000 --> 00:50:18,250 filo de - 1034 00:50:18,250 --> 00:50:19,670