1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: V redu. 3 00:00:13,650 --> 00:00:14,390 Dobrodošel nazaj. 4 00:00:14,390 --> 00:00:19,260 To je teden Dva CS50, in imamo Doslej so uporabo funkcij, vendar 5 00:00:19,260 --> 00:00:20,830 jih v veliki meri za samoumevno. 6 00:00:20,830 --> 00:00:23,430 Uporabili smo printf ki ima stranski učinek tiskanje 7 00:00:23,430 --> 00:00:24,110 stvari na zaslonu. 8 00:00:24,110 --> 00:00:25,790 Uporabili smo dobili, int, float dobili. 9 00:00:25,790 --> 00:00:29,230 >> Toda kaj, če si dejansko želite ustvariti lastne funkcije, kot nekateri 10 00:00:29,230 --> 00:00:31,740 ste morda že začelo stori za Problem Set One, čeprav 11 00:00:31,740 --> 00:00:33,140 ni nujno potrebno? 12 00:00:33,140 --> 00:00:37,150 No, gremo naprej in ponovno, da problem samo vprašam uporabnika za 13 00:00:37,150 --> 00:00:40,660 njihovo ime in tiskanje nekaj na zaslon, vendar poskusite dejavnik na nekatere 14 00:00:40,660 --> 00:00:44,000 o enotnosti, ki smo jo videli v našem zakoniku doslej. 15 00:00:44,000 --> 00:00:45,120 Torej, s tem mislim naslednje. 16 00:00:45,120 --> 00:00:47,315 >> Jaz grem naprej in ustvariti nov program, samo pokličite 17 00:00:47,315 --> 00:00:49,320 je hello.c kot ponavadi. 18 00:00:49,320 --> 00:00:53,730 Jaz grem naprej in sem dal vključujejo standardno io.h na vrhu. 19 00:00:53,730 --> 00:00:57,040 Bom jaz dal tudi preemptively CS50 knjižnico tako, da 20 00:00:57,040 --> 00:00:59,080 Da ne bom nadrla, ki jih prevajalnik. 21 00:00:59,080 --> 00:01:02,400 In zdaj bom šel naprej in razglasi int, glavno, nična. 22 00:01:02,400 --> 00:01:09,020 >> In potem je tukaj, to je, če hočem začeti oddajajo funkcionalnost 23 00:01:09,020 --> 00:01:12,090 kakšno drugo funkcijo, da sem sam gre za pisanje, vendar to ni 24 00:01:12,090 --> 00:01:13,820 Trenutno obstajajo. 25 00:01:13,820 --> 00:01:19,210 Recimo, da sem hotel napisati funkcijo, ki mi omogoča, da 26 00:01:19,210 --> 00:01:23,830 izpisal hello, vejice in potem nekaj uporabnikov ime. 27 00:01:23,830 --> 00:01:29,010 Namesto da bi še naprej printf storiti Pozdravljeni,% s, ne bi bilo lepo, če 28 00:01:29,010 --> 00:01:33,380 je bilo samo funkcijo imenovano Ne printf pa ime tisk? 29 00:01:33,380 --> 00:01:36,600 >> Torej, z drugimi besedami, želim, da bi lahko napisati program, ki počne nekaj 30 00:01:36,600 --> 00:01:37,710 kaj takega. 31 00:01:37,710 --> 00:01:42,070 Najprej bom printf povedati svoje Ime, s čimer se spodbudi uporabnik 32 00:01:42,070 --> 00:01:46,150 Daj mi njegovo ime, nato pa sem gre za uporabo že znanih String s, da 33 00:01:46,150 --> 00:01:47,290 razglasi niz. 34 00:01:47,290 --> 00:01:50,420 Daj mi spremenljivko tipa niz, to je klic, in shranjevanje, ki 35 00:01:50,420 --> 00:01:52,120 Rezultat kliče dobili niz. 36 00:01:52,120 --> 00:01:56,060 Zdaj pa v zadnjih tednih, bi moral Nekoliko tediously storiti Pozdravljeni,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> In z drugimi besedami, smo to videli Primer kup časov, in to je 39 00:02:02,570 --> 00:02:05,280 trivialen primer zato, ker je samo ena vrstica kode, tako da je res ni 40 00:02:05,280 --> 00:02:06,860 big deal, da ponovno tipkanje. 41 00:02:06,860 --> 00:02:09,990 Recimo, da ta vrstica kode dejansko so postali breme, in 42 00:02:09,990 --> 00:02:12,900 to ni ena vrstica kode, ampak to je 10 vrstic kode nekaj tednov od zdaj, 43 00:02:12,900 --> 00:02:15,190 in ti si samo naveličal kopiranje in lepljenje ali 44 00:02:15,190 --> 00:02:17,180 Prekucavanje to isto kodo. 45 00:02:17,180 --> 00:02:22,100 Ne bi bilo lepo, namesto da delaš printf Pozdravljeni,% s in tako naprej, 46 00:02:22,100 --> 00:02:26,500 ne bi bilo lepo, če je bilo le Funkcija se imenuje ime tiskanja, ki 47 00:02:26,500 --> 00:02:27,560 je argument - 48 00:02:27,560 --> 00:02:29,120 z drugimi besedami, je potreben vložek - 49 00:02:29,120 --> 00:02:30,620 in potem podpičjem. 50 00:02:30,620 --> 00:02:33,240 Tako da funkcija, ne bi bilo je lepo, če bi obstajal? 51 00:02:33,240 --> 00:02:36,690 Potem mi ne bi bilo treba skrbeti za kar printf, kakšne% s in vse 52 00:02:36,690 --> 00:02:39,400 Ti zapleti, ki so ni vse tako zanimivo. 53 00:02:39,400 --> 00:02:40,570 Prav tako so koristne. 54 00:02:40,570 --> 00:02:44,700 >> Torej ime tisk, žal, ni bilo izumil nekaj pred 40 plus let. 55 00:02:44,700 --> 00:02:45,980 Nihče ni mislil, da ga napisali. 56 00:02:45,980 --> 00:02:48,300 Ampak to je lepota ob programski jezik, tako kot v 57 00:02:48,300 --> 00:02:52,930 Scratch lahko določite meri blokov, tako v C in najbolj vsak jezik, lahko 58 00:02:52,930 --> 00:02:57,260 opredeliti svojo funkcijo, lahko si določite svoje funkcije. 59 00:02:57,260 --> 00:03:01,710 Torej, čeprav smo dobili glavnega jih avtomatično zastonj, lahko razglasi 60 00:03:01,710 --> 00:03:02,730 naše naloge. 61 00:03:02,730 --> 00:03:05,670 >> Torej bom narediti nekaj prostora tu gor up top, in bom prijaviti moja 62 00:03:05,670 --> 00:03:08,210 lastna funkcija, ki pa bo skrbel malo čudno na prvi, ampak bomo prišli 63 00:03:08,210 --> 00:03:09,400 nazaj na to kmalu. 64 00:03:09,400 --> 00:03:12,310 Jaz bom rekel nična, s čimer navedbo te funkcije ne 65 00:03:12,310 --> 00:03:16,040 kar ima stranski učinek, vendar ne vrne nekaj, da me v 66 00:03:16,040 --> 00:03:18,810 enak način, da dobite int ali dobili niz sama. 67 00:03:18,810 --> 00:03:22,450 In jaz bom dal to funkcijo naštejemo imena tiskanja in bom 68 00:03:22,450 --> 00:03:26,470 opredeliti, da ta fant se dogaja, da sprejmejo niz, bom poklical, da 69 00:03:26,470 --> 00:03:27,600 Ime niz. 70 00:03:27,600 --> 00:03:32,100 Jaz bi ga poklical kar hočem, ampak jaz želim moja koda, da se sami dokumentiranje. 71 00:03:32,100 --> 00:03:34,770 Z drugimi besedami, če bi od vas odpreti to datoteko in jo prebral, bi lahko 72 00:03:34,770 --> 00:03:39,020 nekako izpeljati iz imena, ki vhod kakšno vlogo je moral igrati. 73 00:03:39,020 --> 00:03:42,270 >> In zdaj spodaj, da bom za začetek kodrasti naramnicami in zaprta kodrasti naramnicami, 74 00:03:42,270 --> 00:03:47,140 in tako opazili, da sem po isti vzorec na progah štiri do sedem, kot 75 00:03:47,140 --> 00:03:51,622 Sem bil po za dober teden, plus Zdaj med, recimo, devet linij in 76 00:03:51,622 --> 00:03:53,400 14, ki sestavljajo glavni. 77 00:03:53,400 --> 00:03:56,160 Z drugimi besedami, natisniti ime je še ena funkcija. 78 00:03:56,160 --> 00:03:58,990 Zdaj, prevajalnik ne bo vedel poklicati to stvar samodejno 79 00:03:58,990 --> 00:04:02,670 ker sem dobesedno izumili, vendar bo še vedno vedel, da pokličete glavni 80 00:04:02,670 --> 00:04:08,710 samodejno, nato pa seveda v vrstica 13, kličem svojo funkcijo. 81 00:04:08,710 --> 00:04:12,805 In ker sem izjavil, da funkcija up na liniji štiri pred glavnimi, 82 00:04:12,805 --> 00:04:16,579 to se bo naučil prevajalnik kaj citiram, v navednicah, "ime print" 83 00:04:16,579 --> 00:04:18,140 pomeni in kaj bi morala storiti. 84 00:04:18,140 --> 00:04:22,700 Tako da sem nekako mu daje novo navado blok v kontekstu, recimo, Scratch. 85 00:04:22,700 --> 00:04:27,240 >> Torej tukaj, sem lahko dal to zelo pogosti ali ponavljajoči vzorec kode Držim 86 00:04:27,240 --> 00:04:32,300 pisanje v razredu, printf % S hello,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Kaj želim povedati tukaj? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Torej, želim dati ime v tem kontekstu. 91 00:04:41,420 --> 00:04:43,440 Torej opazili malo dihotomija tukaj. 92 00:04:43,440 --> 00:04:47,680 Ker sem razglasila svojo funkcijo in sem nekoliko samovoljno imenuje 93 00:04:47,680 --> 00:04:50,880 natisne ime, in ker sem navedeno v oklepajih, da ta 94 00:04:50,880 --> 00:04:55,035 Funkcija vzame en argument, tip ki je niz - tako da je beseda 95 00:04:55,035 --> 00:05:00,010 ali fraza ali nekaj takega - in Poklical bom to ime argumenta, da 96 00:05:00,010 --> 00:05:04,770 pomeni samo spremenljivko, ki je v Področje, tako rekoč, je ime. 97 00:05:04,770 --> 00:05:07,780 >> S obstaja le med tem, kar dva Zaviti oklepaji, seveda? 98 00:05:07,780 --> 00:05:12,990 Pa res, tako kot vrstice 10 do 14, tako da tako kot v ponedeljek ne more uporabiti 99 00:05:12,990 --> 00:05:17,650 S, ampak kaj lahko storim je mimo S v imenu tiskanja. 100 00:05:17,650 --> 00:05:21,030 Natisnite ime prav tako se zgodi, da ga alias, sinonima vzdevek 101 00:05:21,030 --> 00:05:24,400 to ime kliče, in zdaj njegovo uporabo v tej vrstici. 102 00:05:24,400 --> 00:05:26,840 Torej, zdaj mi rešiti to, pomanjšanje. 103 00:05:26,840 --> 00:05:31,250 >> Dovolite mi, da gredo naprej in zdravo. 104 00:05:31,250 --> 00:05:32,400 Videti je v redu. 105 00:05:32,400 --> 00:05:36,110 Ni izpljunil nobene napake. . / Zdravo Enter. 106 00:05:36,110 --> 00:05:37,020 Kako mi je ime? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 In zdravo David. 109 00:05:39,270 --> 00:05:41,820 Torej ni vse tako razburljivo, ampak mislim zdaj. 110 00:05:41,820 --> 00:05:44,310 Zdaj imate to isto sestavino kot smo to storili v nič, da 111 00:05:44,310 --> 00:05:45,420 ustvarjanju svojih lastnih funkcij. 112 00:05:45,420 --> 00:05:46,770 >> Vendar je malo Razumem. 113 00:05:46,770 --> 00:05:50,620 Recimo, da nisem zares razmišljal to skozi in sem dejansko brez 114 00:05:50,620 --> 00:05:54,250 res razmišljam o tem napisal ki delujejo tukaj. 115 00:05:54,250 --> 00:05:55,420 Počutim se povsem smiselno. 116 00:05:55,420 --> 00:05:58,440 V nič ne obstaja pojem na lokaciji v vaše skripte. 117 00:05:58,440 --> 00:06:00,670 Lahko bi dal eno gor, ena tu gor, ena tu gor, in to bi lahko začeli 118 00:06:00,670 --> 00:06:03,310 pogledati malo grdo, če ne ga razpostavite lepo, vendar ne 119 00:06:03,310 --> 00:06:05,910 važno, kje fizično skripte so na zaslonu. 120 00:06:05,910 --> 00:06:09,660 Na žalost v C - in to je, za razliko od jezike, kot sta Java in Python 121 00:06:09,660 --> 00:06:13,600 in drugi, da bi lahko bili seznanjeni z - na žalost v C, da ne 122 00:06:13,600 --> 00:06:15,830 pomembno, ker gledam, kaj je se bo zgodilo zdaj. 123 00:06:15,830 --> 00:06:19,010 >> Privzeta funkcija, ki se dogaja izvesti, je, seveda, glavna. 124 00:06:19,010 --> 00:06:22,290 Glavni bo poklical ime tiska na linija osem, žal pa 125 00:06:22,290 --> 00:06:26,660 prevajalnik sploh ne bo vedel, da je ime tiska obstaja, dokler ne pride do linije 11, 126 00:06:26,660 --> 00:06:28,520 ki je žal bo prepozno. 127 00:06:28,520 --> 00:06:30,660 Torej, kaj je naredil, da zdravo. 128 00:06:30,660 --> 00:06:32,950 In zdaj prekleti, dve hudi ustvarila. 129 00:06:32,950 --> 00:06:36,050 Torej, zdaj naj se pomaknete do zelo prvič, ker moramo vedno narediti, in 130 00:06:36,050 --> 00:06:39,560 opazili, da je vpil na mene, "Implicitno izjavo o funkciji 131 00:06:39,560 --> 00:06:40,540 natisniti ime. " 132 00:06:40,540 --> 00:06:43,860 >> Tako smo videli to sporočilo pred implicitno izjavo funkcije. 133 00:06:43,860 --> 00:06:48,080 Ko smo videli te vrste napak? 134 00:06:48,080 --> 00:06:49,180 Ko nisem so knjižnice. 135 00:06:49,180 --> 00:06:53,470 Če sem pozabil cs50.h in bom dobil vpil za dobiti niz, ali pa int. 136 00:06:53,470 --> 00:06:56,880 Toda v tem primeru, je ta funkcija tiskanja Ime ni v knjižnici, kajne? 137 00:06:56,880 --> 00:07:00,230 To je dobesedno v tej datoteki, tako da kaj je res problem? 138 00:07:00,230 --> 00:07:04,660 >> No na žalost v C, da vas popelje tako zelo dobesedno, da če 139 00:07:04,660 --> 00:07:08,640 želite funkcijo imenovano ime natisni obstajajo, ali boste morali izvajati 140 00:07:08,640 --> 00:07:11,940 , ki delujejo na sam vrh vašega kode tako, da je dostopen za zniževanje 141 00:07:11,940 --> 00:07:15,070 funkcije, vendar odkrito povedano, da postane površen zelo hitro. 142 00:07:15,070 --> 00:07:18,160 Osebno mi je všeč dajanje glavni najprej ker potem je zelo jasno, kaj je to 143 00:07:18,160 --> 00:07:19,890 Program deluje na prvi pogled. 144 00:07:19,890 --> 00:07:23,290 In plus, lahko dobite v čudni kotu primerih, če je x želi poklicati 145 00:07:23,290 --> 00:07:27,530 y y pa lahko pokličete x, ki ste jo pravkar fizično ne morejo dejansko dal eno 146 00:07:27,530 --> 00:07:28,540 nad drugo. 147 00:07:28,540 --> 00:07:31,230 >> Ampak se je izkazalo v C, lahko rešili zelo preprosto. 148 00:07:31,230 --> 00:07:34,010 Bom dal malo prostora tu gor, in grem na 149 00:07:34,010 --> 00:07:38,170 preemptively, čeprav nekoliko redundantly, bo poučeval 150 00:07:38,170 --> 00:07:42,320 prevajalnik, da obstaja funkcija imenuje ime tiskanja, je potrebno niz, 151 00:07:42,320 --> 00:07:46,330 in bom poklical je ime podpičjem. 152 00:07:46,330 --> 00:07:50,220 >> Tako da je ta zdaj v skladu štirih, ki smo ni videl, je deklaracija 153 00:07:50,220 --> 00:07:53,940 imena tiskanja funkcijo, ampak to je le obljuba, da bo ta funkcija 154 00:07:53,940 --> 00:07:56,620 sčasoma je treba opredeliti, na koncu treba izvajati. 155 00:07:56,620 --> 00:08:00,180 To zdaj lahko pustite pri miru, ker Zdaj je to opredelitev, 156 00:08:00,180 --> 00:08:04,090 izvedba, nekako zadnji kilometer izvajanja te 157 00:08:04,090 --> 00:08:05,130 zlasti funkcija. 158 00:08:05,130 --> 00:08:08,450 Torej odkrito, da je neumno, da je nadležno, vendar je to način C, in je 159 00:08:08,450 --> 00:08:12,050 saj vam jemlje zelo dobesedno in, kot je računalnik odkrito smeli, 160 00:08:12,050 --> 00:08:16,020 samo, kaj točno je povedal, da zaradi tega, in da je urejanje pomembno. 161 00:08:16,020 --> 00:08:18,940 >> Tako da se vodijo v mislih in spet začeti Opazili ponovitve vzorcev. 162 00:08:18,940 --> 00:08:21,850 Kvota se boš, če tega še niste že začeli srečati sporočil 163 00:08:21,850 --> 00:08:24,700 , kot je ta, ki se na prvi pogled zdi, popolnoma nejasen, toda če začnete 164 00:08:24,700 --> 00:08:29,000 da si za te ključne besede, kot so "Implicitno izjavo," omenja 165 00:08:29,000 --> 00:08:32,380 funkcija v tem primeru - in po pravici povedano, si včasih celo dobili malo zeleno 166 00:08:32,380 --> 00:08:35,010 Simbol korenček, ki vam pove, kje Vprašanje je verjetno - 167 00:08:35,010 --> 00:08:40,980 lahko začnete delati svojo pot skozi Še nevidno sporočil o napakah. 168 00:08:40,980 --> 00:08:45,860 Vsa vprašanja o pisanju lastna funkcija na ta način? 169 00:08:45,860 --> 00:08:47,540 >> Naredimo nekaj, kar je Malo bolj prepričljiv. 170 00:08:47,540 --> 00:08:51,760 Ne le narediti nekaj, kar je stranski učinek tiskanje, spustite me 171 00:08:51,760 --> 00:08:55,340 naprej in shranite novo datoteko, mi pa bomo to imenujemo positive.c, čeprav je 172 00:08:55,340 --> 00:08:57,600 bo nekoliko drugače v primerjavi zadnjem času. 173 00:08:57,600 --> 00:09:01,910 In tokrat, bi rad ponovno izvajati positive.C Primer Zadnji čas je, ki 174 00:09:01,910 --> 00:09:04,430 je sila si, da bi me je pozitivno celo število. 175 00:09:04,430 --> 00:09:07,280 Vendar sem moral uporabiti dobiti int zadnji čas. 176 00:09:07,280 --> 00:09:10,780 Ali ne bi bilo lepo, če ne bi bilo Funkcija se imenuje dobili pozitivno int 177 00:09:10,780 --> 00:09:13,610 da sem lahko samo zunanji sodelavci kos funkcionalnosti? 178 00:09:13,610 --> 00:09:16,480 Torej je razlika tukaj je, da bomo izvajanje dobili pozitivno int, vendar za razliko od 179 00:09:16,480 --> 00:09:20,330 Ime tisk, ki je imela stranske učinke - to ni vrnil nekaj z mano 180 00:09:20,330 --> 00:09:21,710 število ali niz - 181 00:09:21,710 --> 00:09:25,510 se pozitivno int je seveda bo vrne, upajmo, pozitivno int. 182 00:09:25,510 --> 00:09:26,170 >> Torej, kaj je to. 183 00:09:26,170 --> 00:09:30,840 Vključujejo cs50.h, vsebuje standardne io.h. 184 00:09:30,840 --> 00:09:33,520 Int main nična. 185 00:09:33,520 --> 00:09:42,160 In zdaj je tukaj, jaz grem naprej in recimo int, da pokličete n, je enako 186 00:09:42,160 --> 00:09:44,270 dobili pozitivno int. 187 00:09:44,270 --> 00:09:49,080 In tako kot se int že obstaja ker osebje ga je napisal, bom 188 00:09:49,080 --> 00:09:53,950 prevzeti za trenutek, da bi dobili pozitivni int obstaja, in zdaj bom 189 00:09:53,950 --> 00:09:57,730 da gredo naprej in rekli printf, hvala za% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Torej, zdaj, če sem pripravi tega programa, kar se bo zgodilo v mojem terminalu 192 00:10:07,770 --> 00:10:09,075 Okno na dnu ekrana? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Jaz bom verjetno dobil, da iste napake kot prej. 195 00:10:13,900 --> 00:10:14,570 Torej, dajmo poskusiti. 196 00:10:14,570 --> 00:10:16,450 Da pozitivno. 197 00:10:16,450 --> 00:10:19,900 In spet, implicitno izjavo funkcije, dobil pozitivno int. 198 00:10:19,900 --> 00:10:21,970 Tako da bomo lahko rešili to nekaj načinov. 199 00:10:21,970 --> 00:10:27,310 Bom naj bo enostavno in preprosto dam izjavo tu gor in se 200 00:10:27,310 --> 00:10:28,120 pozitivni int. 201 00:10:28,120 --> 00:10:29,720 Moram ti podpis. 202 00:10:29,720 --> 00:10:32,410 Podpis samo sklicuje za estetiko 203 00:10:32,410 --> 00:10:34,090 Prva vrstica programa. 204 00:10:34,090 --> 00:10:37,420 Torej, kaj naj bi dobili pozitiven int vrnitev? 205 00:10:37,420 --> 00:10:37,970 >> Torej int. 206 00:10:37,970 --> 00:10:41,540 Mislim, idealno pa bi vrnili nekaj podobnega pozitivnega notr, ampak da 207 00:10:41,540 --> 00:10:42,160 ne obstaja. 208 00:10:42,160 --> 00:10:45,280 Ne Videli smo, da je med našimi podatki vrste, zato se moramo ukvarjati z 209 00:10:45,280 --> 00:10:47,170 Dejstvo, da imamo zelo malo podatkovni tipi delati. 210 00:10:47,170 --> 00:10:50,360 Vendar pa se lahko vrnemo int in samo Verjamemo, da bo pozitiven. 211 00:10:50,360 --> 00:10:52,690 To se dogaja, da se imenuje dobili pozitivno int. 212 00:10:52,690 --> 00:10:55,122 >> In zdaj kaj o svojih argumentov? 213 00:10:55,122 --> 00:10:56,440 Traja vsak vhod? 214 00:10:56,440 --> 00:10:58,280 Ali je treba vse surovine? 215 00:10:58,280 --> 00:11:00,900 Torej ni treba vedeti vnaprej karkoli. 216 00:11:00,900 --> 00:11:03,220 Get niz ne, dobil int ne. 217 00:11:03,220 --> 00:11:06,430 Printf počne - to mora imeti nekaj vhod prešla v njej - in ime tisk 218 00:11:06,430 --> 00:11:09,020 potreboval nekaj vložek, ampak dobil Pozitiven int ne. 219 00:11:09,020 --> 00:11:11,530 Torej bom izrecno povej prevajalnik praznino. 220 00:11:11,530 --> 00:11:13,470 Void je odsotnost karkoli drugega. 221 00:11:13,470 --> 00:11:17,990 Zato nična pomeni nič ne dogaja v notranjosti teh oklepajev, podpičje. 222 00:11:17,990 --> 00:11:20,840 >> In zdaj na dnu mojega spisa - in še enkrat, jaz sem samo da nekako analni 223 00:11:20,840 --> 00:11:23,640 Tukaj dajanje glavni na vrhu, ki je dobra praksa, ker ta način 224 00:11:23,640 --> 00:11:26,220 kadarkoli vi ali kdo drug odpre datoteko, se 225 00:11:26,220 --> 00:11:27,400 Funkcionalnost je tam. 226 00:11:27,400 --> 00:11:29,660 Lahko se potopite v eni od kvadratni. 227 00:11:29,660 --> 00:11:34,190 Torej, zdaj bom podvajati to, dobili pozitivno int praznino, vendar nisem 228 00:11:34,190 --> 00:11:35,430 udaril podpičjem zdaj. 229 00:11:35,430 --> 00:11:38,280 Grem odpreti zavite oklepaje, in zdaj si moram sposoditi 230 00:11:38,280 --> 00:11:39,700 nekaj idej, od ponedeljka. 231 00:11:39,700 --> 00:11:44,450 >> Tako kot se spomnite, smo naredili nekaj rad pa naredite naslednje 232 00:11:44,450 --> 00:11:45,830 nekaj, kar je res. 233 00:11:45,830 --> 00:11:46,630 In kaj sem naredil? 234 00:11:46,630 --> 00:11:51,540 Naredil sem nekaj podobnega dati me je pozitivno celo število, 235 00:11:51,540 --> 00:11:52,430 Malo poziv. 236 00:11:52,430 --> 00:11:53,540 Lahko uporabite vse besede, ki jih želim. 237 00:11:53,540 --> 00:11:54,960 In potem sem kaj se uporablja? 238 00:11:54,960 --> 00:11:59,530 Int n enak dobili int, nobenih argumentov za to. 239 00:11:59,530 --> 00:12:00,550 >> In opazili razliko. 240 00:12:00,550 --> 00:12:04,680 Ko klic funkcije, ko uporabljate funkcije, ki jih ne dajo v praznini. 241 00:12:04,680 --> 00:12:08,570 Vam le, da pri razglasitvi Funkcija, poučevanje prevajalnik kaj 242 00:12:08,570 --> 00:12:09,780 to bi pričakovali. 243 00:12:09,780 --> 00:12:11,650 Torej vam ni treba dati izniči tam sami. 244 00:12:11,650 --> 00:12:12,940 >> In zdaj, kaj je bil moj pogoj? 245 00:12:12,940 --> 00:12:19,670 No, n ni enak pozitiven ampak to je samo psevdo-kodo. 246 00:12:19,670 --> 00:12:22,530 Torej, kako izraziti to bolj čisto? 247 00:12:22,530 --> 00:12:24,090 Torej manjša ali enaka nič. 248 00:12:24,090 --> 00:12:26,250 Torej še enkrat, opazili, lahko storite manjša ali enaka. 249 00:12:26,250 --> 00:12:28,100 Čeprav je dva ločena simboli, lahko to storite na 250 00:12:28,100 --> 00:12:29,350 tipkovnico kot take. 251 00:12:29,350 --> 00:12:33,950 >> Ampak tam je vedno bug, da Zajebal sem zadnjič preveč. 252 00:12:33,950 --> 00:12:36,950 Moram prijaviti - 253 00:12:36,950 --> 00:12:37,460 točno. 254 00:12:37,460 --> 00:12:39,640 Moram prijaviti n zunaj z zanko. 255 00:12:39,640 --> 00:12:44,180 Torej moram dati n tu gor, in jaz ne želite ponovno prijavijo tukaj 256 00:12:44,180 --> 00:12:46,480 da ne bom dobil novo spremenljivko. 257 00:12:46,480 --> 00:12:48,860 Želim samo za dodelitev vrednosti tukaj. 258 00:12:48,860 --> 00:12:54,320 >> In zdaj nisem povsem tu storiti. 259 00:12:54,320 --> 00:12:57,290 Dovolite mi, da bi dobili pred sebe in se pretvarjati, da sem storil. 260 00:12:57,290 --> 00:13:01,220 Da pozitivno, in zdaj tam je nova napaka. 261 00:13:01,220 --> 00:13:04,550 Nadzor doseže konec ne-nična funkcija. 262 00:13:04,550 --> 00:13:07,760 Torej novo sporočilo o napaki, če pa ste prijazni od Tease poleg vsakega besedami, 263 00:13:07,760 --> 00:13:09,620 Verjetno namiguje na tisto, kar je narobe. 264 00:13:09,620 --> 00:13:11,240 >> Nadzorovati. 265 00:13:11,240 --> 00:13:14,250 Nadzor pomeni samo, da naloga operacij v programu. 266 00:13:14,250 --> 00:13:16,510 Računalnik je v nadzoru in Nekaj ​​je šlo narobe. 267 00:13:16,510 --> 00:13:18,510 Tako da doseže konec ne-nična funkcijo. 268 00:13:18,510 --> 00:13:21,760 Kaj funkcija je očitno nanaša? 269 00:13:21,760 --> 00:13:24,790 Kaj funkcija ni ničen? 270 00:13:24,790 --> 00:13:27,400 Torej, dobil pozitivno int, in malo zmedo, da je dobro, 271 00:13:27,400 --> 00:13:29,010 to je nekako praznino. 272 00:13:29,010 --> 00:13:33,070 Ima specifikacijo praznino za svoje Argumenti, vendar njena proizvodnja se bo 273 00:13:33,070 --> 00:13:34,540 biti tipa n. 274 00:13:34,540 --> 00:13:37,260 Torej beseda je na levi tako imenovani tip donos. 275 00:13:37,260 --> 00:13:40,320 Beseda na notranji tukaj se nič ali več argumentov 276 00:13:40,320 --> 00:13:41,970 da funkcija potrebuje. 277 00:13:41,970 --> 00:13:44,060 >> Torej, kaj moram narediti? 278 00:13:44,060 --> 00:13:47,650 Na tej točki v mojem kodo, linije 21, kjer utripa hitro sedaj je, da sem 279 00:13:47,650 --> 00:13:51,430 imajo pozitiven int znotraj v spremenljivko n. 280 00:13:51,430 --> 00:13:55,200 Kako bi ga nazaj na glavno? 281 00:13:55,200 --> 00:13:55,960 Dobesedno. 282 00:13:55,960 --> 00:13:59,320 Vrni se n podpičjem. 283 00:13:59,320 --> 00:14:04,090 >> Torej, tako kot Colton vrnil kos Papir z odgovorom, da mi ga spustite 284 00:14:04,090 --> 00:14:07,020 da kos papirja v mali črni polje na mizi, na to, da je v 285 00:14:07,020 --> 00:14:10,100 kodo, si dobesedno samo napisati, vrnite n, in to je, kot da Colton bili 286 00:14:10,100 --> 00:14:12,140 mi deliti nekaj fizičnega nazaj. 287 00:14:12,140 --> 00:14:15,870 V tem primeru, kaj se dogaja, je dobil Pozitiven int se bo vrniti 288 00:14:15,870 --> 00:14:19,220 kaj je predvidoma pozitivna celo komu? 289 00:14:19,220 --> 00:14:21,380 Če pa to vrednost na koncu? 290 00:14:21,380 --> 00:14:29,080 To konča v te spremenljivke, n in Nato bomo nadaljevali z linijo devet. 291 00:14:29,080 --> 00:14:31,920 >> Torej, z drugimi besedami, da od operacije, začne ta program 292 00:14:31,920 --> 00:14:34,430 izvajanje in prevajalnik se zaveda, oh, želite knjižnico? 293 00:14:34,430 --> 00:14:36,310 Pusti me zgrabi vse, kar je notri to. 294 00:14:36,310 --> 00:14:37,750 Oh, želite standardno knjižnico IO? 295 00:14:37,750 --> 00:14:39,660 Pusti me zgrabi vse, kar je notri to. 296 00:14:39,660 --> 00:14:44,510 Kaj prevajalnik pravi, da sama ko se dotakne črte štiri? 297 00:14:44,510 --> 00:14:47,980 Oh, ti obljubil, da bo izvajala Funkcija imenuje dobili pozitivno, vendar 298 00:14:47,980 --> 00:14:50,820 bomo dobili nazaj, da kasneje, kaj podobnega. 299 00:14:50,820 --> 00:14:53,450 >> Int main void pomeni samo tukaj drobovje mojega programa. 300 00:14:53,450 --> 00:14:54,990 Line sedem je le kodrasti naramnicami. 301 00:14:54,990 --> 00:14:59,540 Line osem pravi na levi strani, da me 32 bitov za celo število, pravimo n. 302 00:14:59,540 --> 00:15:02,160 Na desni strani, to rekel bi dobili pozitiven int. 303 00:15:02,160 --> 00:15:07,120 Zdaj kaj je pavza, da zgodba, saj zdaj Ne premikaj se mi kurzor dol. 304 00:15:07,120 --> 00:15:11,720 Moj kazalec zdaj gre dol, ker zdaj dobili pozitiven int izvaja. 305 00:15:11,720 --> 00:15:13,100 Int n je razglašena. 306 00:15:13,100 --> 00:15:14,040 Naredite naslednje. 307 00:15:14,040 --> 00:15:16,090 Printf mi daje pozitivno celo število. 308 00:15:16,090 --> 00:15:19,740 >> Get int od uporabnika, ga shranite na n, in morda to znova in znova. 309 00:15:19,740 --> 00:15:23,010 Ta zanka pomeni, da bi lahko ta koda ponovno izvede gor in dol kot to 310 00:15:23,010 --> 00:15:25,810 in enkrat, ko pa si končno sodeluje in mi daje pozitivno 311 00:15:25,810 --> 00:15:31,750 int, sem udaril črto 21, na kateri točki Število je vrnil, in katera 312 00:15:31,750 --> 00:15:34,280 moram poudariti zdaj? 313 00:15:34,280 --> 00:15:35,070 Devet. 314 00:15:35,070 --> 00:15:39,010 Nadzor, tako rekoč, vrne poravnati devet. 315 00:15:39,010 --> 00:15:40,650 To je linija, ki je zdaj glavni. 316 00:15:40,650 --> 00:15:43,250 >> Tako da je tisto, kar se je dogajalo vse tokrat pod pokrovom, vendar 317 00:15:43,250 --> 00:15:46,480 ko smo uporabljanih funkcij, kot so printf ali celo dobili niz, da nekdo drug 318 00:15:46,480 --> 00:15:50,600 napisal za vas, je bil nadzor, ki se izročijo off nekoga drugega koda linija 319 00:15:50,600 --> 00:15:51,290 po vrsticah. 320 00:15:51,290 --> 00:15:53,770 To je samo nismo mogli videti in smo ne bi mogla zares prikazujejo v tem 321 00:15:53,770 --> 00:15:57,620 Program zato, ker je v nekaterih drugih Datoteka na trdem disku 322 00:15:57,620 --> 00:16:00,000 nevede nas. 323 00:16:00,000 --> 00:16:02,100 Torej, kaj je dejansko pripravijo in to deluje zdaj. 324 00:16:02,100 --> 00:16:03,890 >> Da pozitivno. 325 00:16:03,890 --> 00:16:05,260 Zbere, da je napredek. 326 00:16:05,260 --> 00:16:06,650 . / Pozitiven. 327 00:16:06,650 --> 00:16:08,020 Daj mi pozitivno celo število. 328 00:16:08,020 --> 00:16:08,800 Bodimo težko. 329 00:16:08,800 --> 00:16:10,430 Negativno 1. 330 00:16:10,430 --> 00:16:11,360 Nič. 331 00:16:11,360 --> 00:16:13,370 Dajmo ji 50. 332 00:16:13,370 --> 00:16:18,100 Hvala za 50 let, in tako nadzor se je zdaj vrnil. 333 00:16:18,100 --> 00:16:21,750 Vsa vprašanja, nato pa na to? 334 00:16:21,750 --> 00:16:23,180 Ja? 335 00:16:23,180 --> 00:16:25,630 >> [Neslišno]. 336 00:16:25,630 --> 00:16:26,130 >> Ponovi. 337 00:16:26,130 --> 00:16:27,860 Oh, dobro vprašanje. 338 00:16:27,860 --> 00:16:31,100 Torej boste morda opazili vzporednico, da Jaz sem nekako rezanje kotiček naprej. 339 00:16:31,100 --> 00:16:35,420 V vrstico 12, pravim, dobil pozitivno int vrne int, vendar ga ta isti 340 00:16:35,420 --> 00:16:39,660 Logika, da je zdaj Razumno, da je v linija šest, sem rekel, da je glavni vrne 341 00:16:39,660 --> 00:16:44,040 int, ampak tisto, kar še nikoli nismo je v katerem koli od naših programov? 342 00:16:44,040 --> 00:16:46,470 Nikoli nismo imeli omembe Ta ključna beseda donos. 343 00:16:46,470 --> 00:16:49,970 >> Tako se izkaže, da je v C, vsaj različica je, da smo z 344 00:16:49,970 --> 00:16:55,750 iz leta 1999, tehnično, to je samodejno dogaja za vami. 345 00:16:55,750 --> 00:16:59,300 Kadarkoli izvajati program in vi izvajati funkcijo imenovano glavno, 346 00:16:59,300 --> 00:17:04,230 da funkcija vrne nič do privzeto, če ne rečem drugače, 347 00:17:04,230 --> 00:17:05,849 in nič je samo konvencija. 348 00:17:05,849 --> 00:17:09,430 Svet vrne nič s tem kaže, da je vse dobro, 349 00:17:09,430 --> 00:17:13,040 nam učinkovito odhodu s štiri milijarde možne stvari, ki bi šel 350 00:17:13,040 --> 00:17:17,530 narobe, tako da če se bomo vrnili eno, da bi pomenilo kodo, ki pomeni to 351 00:17:17,530 --> 00:17:18,310 stvar je šlo narobe. 352 00:17:18,310 --> 00:17:20,589 Lahko vrne dva, kar pomeni ta druga stvar je šlo narobe. 353 00:17:20,589 --> 00:17:23,440 Lahko bi se vrnili štiri milijarde, ki pomeni to druga stvar je šlo narobe. 354 00:17:23,440 --> 00:17:27,170 >> In če zdaj razmišljam o sami PC ali Mac, boste morda opozarjajo, da 355 00:17:27,170 --> 00:17:29,610 Včasih dobiš kriptirana sporočila o napakah od programske opreme, ki ste 356 00:17:29,610 --> 00:17:32,650 uporabo, in ima včasih človek prijazen opis, vendar pa je 357 00:17:32,650 --> 00:17:35,265 pogosto kodo ali več na zaslonu? 358 00:17:35,265 --> 00:17:37,800 Če se to ne pride na misel, Samo pazi na to. 359 00:17:37,800 --> 00:17:40,790 To je ponavadi tisto, kar ti kode se nanašajo. 360 00:17:40,790 --> 00:17:44,200 Oni so vključene v Microsoft Wordu in drugi programi, tako da, če ste datoteko 361 00:17:44,200 --> 00:17:48,850 poročilo o napaki z družbo, lahko povej jim, oh, sem dobil številko napake 45. 362 00:17:48,850 --> 00:17:51,750 In nekateri programer nazaj v družbo lahko ogledate, da je v njegovo 363 00:17:51,750 --> 00:17:54,940 kodo in rekel, oh, to pa zato, ker sem to napako in to je razlog, zakaj si 364 00:17:54,940 --> 00:17:56,240 dobil to sporočilo. 365 00:17:56,240 --> 00:17:59,490 >> Vendar odkrito povedano, to je samo malo moteča in malo dolgočasno 366 00:17:59,490 --> 00:18:02,130 sklepati, da se vsaj na našem Prvih nekaj programov, zato smo 367 00:18:02,130 --> 00:18:02,970 so ga izpustimo. 368 00:18:02,970 --> 00:18:07,450 Ampak ves ta čas vsak od vaših Funkcije Glavni je na skrivaj imela ta 369 00:18:07,450 --> 00:18:11,600 vrstica samodejno doda za vas prevajalnik, samo z konvencija za 370 00:18:11,600 --> 00:18:13,172 prihranili nekaj časa. 371 00:18:13,172 --> 00:18:14,620 >> [Neslišno]. 372 00:18:14,620 --> 00:18:16,250 >> Vam ni treba, da ga vključite v glavnem. 373 00:18:16,250 --> 00:18:16,700 To je v redu. 374 00:18:16,700 --> 00:18:20,260 Si morate, da ga vključite, če ste bili izvajanje funkcije, kot je ta. 375 00:18:20,260 --> 00:18:22,850 Sicer funkcija stanovanje se ne bi delovalo. 376 00:18:22,850 --> 00:18:24,480 Ampak v glavnem, to ni potrebno. 377 00:18:24,480 --> 00:18:28,450 V tednu ali dveh, bomo začeli pridobivanje v to navado, ko smo želeli začeti 378 00:18:28,450 --> 00:18:29,690 ki pomeni napake. 379 00:18:29,690 --> 00:18:32,550 Res dobro vprašanje. 380 00:18:32,550 --> 00:18:36,880 >> Tako hitro verbalno odmor omeniti, da ta petek, ne bomo kosilu 381 00:18:36,880 --> 00:18:39,980 po sebi, ampak bomo večerjali z nekaj študentov in osebja. 382 00:18:39,980 --> 00:18:42,940 Če želite, da se nam pridružite, občutek proste roke, da cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 06:00 ta petek. 384 00:18:45,030 --> 00:18:47,990 Prostor je, kot vedno, omejeno, vendar bomo še delaš ti na skoraj 385 00:18:47,990 --> 00:18:51,420 tedensko, če prostor zmanjka ta teden. 386 00:18:51,420 --> 00:18:56,160 >> Torej Alpinista, da smo končali na Ponedeljek je bil, da strune lahko dejansko 387 00:18:56,160 --> 00:19:00,520 se indeksira v, kar samo ti pomeni lahko dobite ob prvem znaku, 388 00:19:00,520 --> 00:19:03,770 Drugi znak, tretji znak in tako naprej, ker lahko 389 00:19:03,770 --> 00:19:07,860 dejansko mislim niz, kot je Pozdravljeni, kot da je v tem primeru pet 390 00:19:07,860 --> 00:19:09,670 Črke znotraj polj. 391 00:19:09,670 --> 00:19:13,370 In lahko dobite na vsaki od teh škatle s tem, kar smo naredili sintaksa 392 00:19:13,370 --> 00:19:15,230 uvesti v ponedeljek? 393 00:19:15,230 --> 00:19:16,760 Te oklepaje na tipkovnici. 394 00:19:16,760 --> 00:19:18,980 To samo pomeni, pojdite na lokacijo nič. 395 00:19:18,980 --> 00:19:22,840 >> Mi začnemo na ničlo, tako da nosilec nič pomeni h, nosilec enega 396 00:19:22,840 --> 00:19:25,170 pomeni e, in tako naprej. 397 00:19:25,170 --> 00:19:28,490 In tako ves čas, ko smo bili uporabi nizov in tipkanje v "zdravo" 398 00:19:28,490 --> 00:19:31,250 in "svet" in druge stvari, na zaslon, to je bilo shranjeno 399 00:19:31,250 --> 00:19:32,820 v škatle, kot je ta. 400 00:19:32,820 --> 00:19:33,370 In ugibati. 401 00:19:33,370 --> 00:19:37,470 Kaj vsako polje predstavlja fizično notranjost računalnika? 402 00:19:37,470 --> 00:19:38,250 >> [Neslišno]. 403 00:19:38,250 --> 00:19:39,150 >> Oprostite? 404 00:19:39,150 --> 00:19:39,580 >> Znakov. 405 00:19:39,580 --> 00:19:44,760 >> Torej znak, še zlasti v primeru nizov, in lik je samo 406 00:19:44,760 --> 00:19:46,800 osem bitov ali en bajt. 407 00:19:46,800 --> 00:19:49,550 Torej, verjetno ste vsaj bežno seznanjeni z dejstvom, da je vaš 408 00:19:49,550 --> 00:19:50,500 Računalnik ima spomin. 409 00:19:50,500 --> 00:19:52,110 To ima dve vrsti pomnilnika vsaj. 410 00:19:52,110 --> 00:19:54,810 Ena je trdi disk, kjer boste prihranili stvari trajno, in da je 411 00:19:54,810 --> 00:19:57,400 običajno velika, tako da lahko imate filme in glasbe in tako naprej. 412 00:19:57,400 --> 00:20:04,010 >> Potem imate drug tip pomnilnika imenujemo RAM, R-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Pomnilnika, in to je tip pomnilnika , ki se uporablja, ko je računalnik 414 00:20:07,510 --> 00:20:11,520 teče, vendar če ste izgubili moč ali vaš baterija umre, karkoli, ki je shranjena 415 00:20:11,520 --> 00:20:15,300 v RAM izgine, če ste izgubili moč celoti, ker to ni 416 00:20:15,300 --> 00:20:16,060 vztrajen. 417 00:20:16,060 --> 00:20:19,120 Po navadi imajo v teh dneh, gig njega, dve nastopov, morda več. 418 00:20:19,120 --> 00:20:23,490 In glavo RAM je, da je veliko veliko, veliko hitreje kot trde diske 419 00:20:23,490 --> 00:20:27,390 ali celo SSD diski v teh dneh, ampak to je ponavadi dražji, tako 420 00:20:27,390 --> 00:20:28,480 imate manj. 421 00:20:28,480 --> 00:20:32,400 >> Torej, današnji pogovor res nanaša za RAM, da tip pomnilnika, ki 422 00:20:32,400 --> 00:20:35,270 obstaja samo, dokler je moč se vnašajo v računalnik. 423 00:20:35,270 --> 00:20:40,530 Torej, ko vnesete v H-E-L-L-O, Enter tipkovnica, H se dogaja v enem 424 00:20:40,530 --> 00:20:44,550 bajt RAM, E se dogaja v en bajt RAM, kot 425 00:20:44,550 --> 00:20:45,800 Preostanek besede. 426 00:20:45,800 --> 00:20:49,010 Torej spomniti, kaj nam je uspelo storiti, zadnjič je bilo to. 427 00:20:49,010 --> 00:20:53,940 Dovolite mi, da gredo naprej in odprli datoteko da smo poklicali string.c in odpoklic 428 00:20:53,940 --> 00:20:56,860 da je bilo videti malo kaj takega. 429 00:20:56,860 --> 00:20:59,860 Dovolite mi, da dejansko roll nazaj in spremenite je točno tisto, kar je izgledalo, 430 00:20:59,860 --> 00:21:02,654 Niz dolžina s. 431 00:21:02,654 --> 00:21:04,560 >> Torej pogled na programu tukaj. 432 00:21:04,560 --> 00:21:08,530 Štejemo CS50 knjižnico tako da bomo lahko uporabite dobili niz. 433 00:21:08,530 --> 00:21:11,400 Mi vključujejo standardno io.h tako da bomo lahko uporabite printf. 434 00:21:11,400 --> 00:21:13,580 Zakaj smo tudi string.h? 435 00:21:13,580 --> 00:21:16,980 To je bila nova v ponedeljek. 436 00:21:16,980 --> 00:21:18,230 Zato smo želeli dolžino niza. 437 00:21:18,230 --> 00:21:19,090 Str leng. 438 00:21:19,090 --> 00:21:21,470 Ljudje so se odločili že pred leti, Bodimo jedrnat. 439 00:21:21,470 --> 00:21:24,290 Namesto da "dolžina niza," kliče recimo ji "str leng" poklical in pustite 440 00:21:24,290 --> 00:21:28,540 svetovna osebnost, da ven, in tako, da je kaj smo dobili dostop do z string.h. 441 00:21:28,540 --> 00:21:29,390 >> To je znano. 442 00:21:29,390 --> 00:21:30,320 To je znano. 443 00:21:30,320 --> 00:21:31,450 To je znano. 444 00:21:31,450 --> 00:21:32,370 To je malo novega. 445 00:21:32,370 --> 00:21:35,420 V vrstico 22 - in se bomo vrnili za to, ampak za zdaj veste - 446 00:21:35,420 --> 00:21:37,880 in bi vedel, samo to iz ob preberite dokumentacijo, ali če 447 00:21:37,880 --> 00:21:39,010 ste vedeli C že - 448 00:21:39,010 --> 00:21:41,510 dobili niz včasih lahko zamočil. 449 00:21:41,510 --> 00:21:45,130 Če uporabnik res nasprotujočih ali zavrača sodelovanje, in on ali ona samo 450 00:21:45,130 --> 00:21:49,450 ne vnesete ničesar na tipkovnici ali Vrste toliko na tipkovnici, da 451 00:21:49,450 --> 00:21:53,760 ga premaga spomin računalnika, V teoriji bi dobili niz lahko vrnete 452 00:21:53,760 --> 00:21:56,270 nekaj drugega kot niz znakov. 453 00:21:56,270 --> 00:22:01,930 To bi lahko vrne posebno vrednost, imenovano NULL v vseh kape, N-U-L-l, in to je 454 00:22:01,930 --> 00:22:03,390 le tako imenovana kontrolna vrednost. 455 00:22:03,390 --> 00:22:08,010 To je posebna vrednost, ki pomeni nekaj slabega se je zgodilo v tem primeru. 456 00:22:08,010 --> 00:22:10,520 To je odsotnost nizu. 457 00:22:10,520 --> 00:22:16,190 >> Torej null sem iskal preprosto tako, da skrajšam zgodbo, str leng in 458 00:22:16,190 --> 00:22:20,230 druge funkcije, ki prihajajo s C, če pričakujejo niz, vendar jih prenese 459 00:22:20,230 --> 00:22:23,630 odsotnost niz, če se boste peljali jim nič, računalnik ali programa 460 00:22:23,630 --> 00:22:25,000 bo samo crash dokončno. 461 00:22:25,000 --> 00:22:25,610 To bo obesil. 462 00:22:25,610 --> 00:22:27,250 To bo navrgla nekaj sporočilo o napaki. 463 00:22:27,250 --> 00:22:28,690 Slabe stvari se bo zgodilo. 464 00:22:28,690 --> 00:22:31,130 Torej, čeprav je to še vedno niso dobro opredeljeni - 465 00:22:31,130 --> 00:22:33,730 to bo bolj smiselno v tednu ali dve - v vrstico 22, to je samo 466 00:22:33,730 --> 00:22:38,790 Primer samonadzora napaki obrambe samo v primeru, ko eden od 467 00:22:38,790 --> 00:22:42,040 gre milijonov nekaj narobe, pri Vsaj moj program ne bo crash. 468 00:22:42,040 --> 00:22:45,960 >> Torej, če je ne bo enaka nekaj slabega, Imam ta zanka, in to je bilo 469 00:22:45,960 --> 00:22:47,710 kjer smo imeli ta druga nov del sintakse. 470 00:22:47,710 --> 00:22:51,580 Imam zanka ponavljanjem od nič gor na dolžino s. 471 00:22:51,580 --> 00:22:56,140 In potem je tukaj, sem bila tiskanje iz ih Nosilec i, toda zakaj sem uporabo% c vse 472 00:22:56,140 --> 00:23:00,770 nenadna namesto% s celo čeprav je je niz? 473 00:23:00,770 --> 00:23:02,110 To je znak, kajne? 474 00:23:02,110 --> 00:23:06,560 S niz, vendar je nosilec nekaj, S podstavki i, kjer je i nič 475 00:23:06,560 --> 00:23:10,380 ali ena ali dve, da je posameznik znak v nizu, in tako za 476 00:23:10,380 --> 00:23:14,970 da je treba printf da so obveščeni o to je res znak pričakovati. 477 00:23:14,970 --> 00:23:18,096 >> In potem se spomnim, kaj je to Program dejansko storiti? 478 00:23:18,096 --> 00:23:19,848 >> Ga natisne v stolpcih. 479 00:23:19,848 --> 00:23:21,120 >> Ja, točno. 480 00:23:21,120 --> 00:23:24,990 Samo natisnjene besede, ki sem tip v stolpec, en znak na vrstico. 481 00:23:24,990 --> 00:23:26,190 Torej, poglejmo še enkrat. 482 00:23:26,190 --> 00:23:27,810 Zato poskrbite niz. 483 00:23:27,810 --> 00:23:30,200 Zbrati OK. . / Niz. 484 00:23:30,200 --> 00:23:35,560 Dovolite mi, da tip v H-E-L-L-O, Enter in res sem jo dobila, eno na vrstico. 485 00:23:35,560 --> 00:23:37,280 >> Torej, kaj mi naredil eno optimizacijo tukaj. 486 00:23:37,280 --> 00:23:40,240 Če menite o tem, še posebej, če ste programirani prej, obstaja 487 00:23:40,240 --> 00:23:43,340 verjetno neučinkovitost v skladu 24. 488 00:23:43,340 --> 00:23:46,160 Z drugimi besedami, to ni nujno najboljši dizajn. 489 00:23:46,160 --> 00:23:50,200 Enostavna, vsaj enkrat vas se spomnite, kaj str leng je, vendar je 490 00:23:50,200 --> 00:23:52,640 delaš nekaj neumnega potencialno. 491 00:23:52,640 --> 00:23:54,863 Kaj bi to lahko bilo? 492 00:23:54,863 --> 00:23:56,280 >> [Neslišno]. 493 00:23:56,280 --> 00:23:56,800 >> Točno tako. 494 00:23:56,800 --> 00:24:00,340 To je preverjanje za dolžino ih vsak čas, čeprav 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O je vedno tekoč do pet znakov. 496 00:24:02,980 --> 00:24:05,490 Vsakič, ko se skozi to zanko, pet se ne spreminja. 497 00:24:05,490 --> 00:24:08,750 Jaz bi lahko povečevanje i, ampak kaj je dolžina sekunde vsak 498 00:24:08,750 --> 00:24:09,690 ponovitev te zanke? 499 00:24:09,690 --> 00:24:15,810 To je pet, to je pet, to je pet, in vendar sem vseeno prosim te 500 00:24:15,810 --> 00:24:18,320 znova in znova in znova zaslišati. 501 00:24:18,320 --> 00:24:20,750 Zdaj odkrito povedano, računalnik je tako prekleto hitro, nihče ne bo opazil, 502 00:24:20,750 --> 00:24:23,780 Razlika je v tem primeru, vendar te vrste revnih konstrukcijskih odločitev lahko 503 00:24:23,780 --> 00:24:28,330 začnejo sešteti, če prevajalnik sam ne poskušajte popraviti to za vas, ki 504 00:24:28,330 --> 00:24:30,630 je običajno ne bi, na vsaj v napravi. 505 00:24:30,630 --> 00:24:31,540 >> Torej bom to naredil. 506 00:24:31,540 --> 00:24:34,580 Bom dodati vejico po moja prva spremenljivka, i. 507 00:24:34,580 --> 00:24:37,310 Grem dam drugo spremenljivka, ga kliče n, samo z 508 00:24:37,310 --> 00:24:41,330 Konvencija za številke, in potem sem dogaja, da določite n vrednosti niza 509 00:24:41,330 --> 00:24:42,530 dolžina s. 510 00:24:42,530 --> 00:24:46,060 In potem bom spremenila moj pogoj za kaj? 511 00:24:46,060 --> 00:24:51,960 Bom spremenila moje stanje da medtem ko je manj kot n. 512 00:24:51,960 --> 00:24:55,700 >> Torej, zdaj, kolikokrat sem preverjanje dolžine s? 513 00:24:55,700 --> 00:25:00,110 Enkrat, ampak to je v redu, da preverim proti n znova in znova, saj zdaj tisti, 514 00:25:00,110 --> 00:25:03,170 Vrednosti se dejansko ne spreminja. 515 00:25:03,170 --> 00:25:06,020 Zdaj za zdaj, samo vem, da lahko kadarkoli vas klic funkcije, tam je malo 516 00:25:06,020 --> 00:25:09,930 režijske stroške, ni dovolj, da bi vas odvrnila Res od kdaj uporabo funkcij, vendar 517 00:25:09,930 --> 00:25:12,750 Vsekakor, če obstaja vrstica kode všeč - in linije bodo dobili 518 00:25:12,750 --> 00:25:15,490 bolj zanimivo, preden dolgo - če obstaja možnost, da mislim, če sem 519 00:25:15,490 --> 00:25:18,320 vnesite to kodo, koliko krat Opravljala bo? 520 00:25:18,320 --> 00:25:20,950 Boste začeli videti sčasoma v delovanje vaših programov lahko 521 00:25:20,950 --> 00:25:21,660 res spremenilo. 522 00:25:21,660 --> 00:25:24,110 >> Pravzaprav je eden od problema postavlja smo jih narejeno v minulih letih vključuje 523 00:25:24,110 --> 00:25:27,600 izvajanje, kot se morda spomniš iz nič teden, črkovalnik, vendar 524 00:25:27,600 --> 00:25:31,380 črkovalnik, ki je namenjen podpori slovar 150.000 plus 525 00:25:31,380 --> 00:25:32,860 Besede, ki smo vam fantje. 526 00:25:32,860 --> 00:25:37,100 Ti bi morali napisati kodo, da obremenitve te besede v RAM, tako v 527 00:25:37,100 --> 00:25:40,700 škatle, kot smo videli na zaslonu trenutek nazaj, nato pa tako hitro, kot si ti 528 00:25:40,700 --> 00:25:43,740 Lahko, morate biti sposobni odgovoriti Vprašanje obliki, je ta beseda 529 00:25:43,740 --> 00:25:44,280 napačno črkovana? 530 00:25:44,280 --> 00:25:45,420 Ta beseda napačno črkovana? 531 00:25:45,420 --> 00:25:46,770 Ta beseda napačno črkovana? 532 00:25:46,770 --> 00:25:49,525 >> In nekaj podobnega, da tisto, kar smo jih opravljeno v letih, se je izkazalo v preteklosti, 533 00:25:49,525 --> 00:25:53,500 čeprav na opt-in prostovoljni podlagi, Tekmovanje z menoj, s katerim 534 00:25:53,500 --> 00:25:59,470 Učenci, ki uporabljajo manj pomnilnika in manj Čas, manj CPU cikle, na koncu 535 00:25:59,470 --> 00:26:02,640 bisernih do vrha malo Vodja odbora ali razvrstitev, da smo se na 536 00:26:02,640 --> 00:26:04,770 Domača stran predmeta, kot smo jih narejeno v preteklih letih. 537 00:26:04,770 --> 00:26:08,100 Še enkrat, popolnoma neobvezno, vendar govori oblikovalskih možnosti 538 00:26:08,100 --> 00:26:11,250 , ki so pred nami, ko smo začeli gradi na vrhu nekateri od teh 539 00:26:11,250 --> 00:26:14,010 osnovni gradniki. 540 00:26:14,010 --> 00:26:16,780 >> Naj se vrnem k temu diagramu za Samo trenutek in razkrivajo malo 541 00:26:16,780 --> 00:26:17,610 nekaj več. 542 00:26:17,610 --> 00:26:21,400 To je vsekakor niz, da smo zavzeli Prednost nekaj knjižnic, 543 00:26:21,400 --> 00:26:25,150 Standard io.h ki ima - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, med drugim. 546 00:26:27,860 --> 00:26:31,540 cs50.h, ki je dobil int in dobili niz in tako naprej, string.h, ki 547 00:26:31,540 --> 00:26:32,570 imel STR Leng. 548 00:26:32,570 --> 00:26:34,800 Vendar se izkaže, da je še en. 549 00:26:34,800 --> 00:26:38,540 Odkrito povedano, tam je veliko in veliko glavo datoteke, ki deklarirajo funkcije 550 00:26:38,540 --> 00:26:43,320 za knjižnice, ampak to je ctype.h dejansko dogaja, da se nekoliko 551 00:26:43,320 --> 00:26:46,900 ugodna, ker bom da gredo naprej in izvajanje enega 552 00:26:46,900 --> 00:26:48,120 drug program tukaj. 553 00:26:48,120 --> 00:26:52,420 >> Dovolite mi, da gredo naprej in odprli nekaj Sem napisal pred imenom 554 00:26:52,420 --> 00:26:55,750 capitalize.c in vzemimo Poglejte, kako to deluje. 555 00:26:55,750 --> 00:27:00,340 Obvestilo, da sem s pomočjo, v tej različici od tega tri znane datoteke. 556 00:27:00,340 --> 00:27:04,110 Opazili, da v vrstico 18, sem pridobivanje vrstico besedila. 557 00:27:04,110 --> 00:27:07,660 Obvestilo v skladu 21, sem trdil, da Naslednja koda bo 558 00:27:07,660 --> 00:27:12,170 izkoristiti s, kar Vtipkali leta, in kako delam to? 559 00:27:12,170 --> 00:27:13,300 No, jaz sem ob - 560 00:27:13,300 --> 00:27:14,750 izkušnja iz zadnjega časa - 561 00:27:14,750 --> 00:27:18,370 Jaz razglasitvi i in N ter ponavljanjem več znakov v nizu. 562 00:27:18,370 --> 00:27:22,720 In potem, kaj je to blok koda v skladu z 24. 27. 563 00:27:22,720 --> 00:27:24,550 početje v smislu navadnega je? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Male črke nazaj. 566 00:27:29,730 --> 00:27:30,430 >> Točno tako. 567 00:27:30,430 --> 00:27:35,920 Če je nosilec i - tako da, če i- značaj s, ki je specifična 568 00:27:35,920 --> 00:27:40,220 znak v nizu, večja od ali enaka male in - 569 00:27:40,220 --> 00:27:42,670 Opozarjajo, da je dvojni znak & označi in - 570 00:27:42,670 --> 00:27:46,810 in isti lik, je nosilec i, je ali manj v male Z, 571 00:27:46,810 --> 00:27:50,600 to pomeni, da je ali b ali c ali pika, pika, pika, ali z, kar pomeni 572 00:27:50,600 --> 00:27:51,340 je male. 573 00:27:51,340 --> 00:27:52,900 Kaj hočem narediti v tem primeru? 574 00:27:52,900 --> 00:27:55,010 No, jaz lahko naredim to nekoliko cryptically, vendar 575 00:27:55,010 --> 00:27:56,160 kaj je to draži narazen. 576 00:27:56,160 --> 00:28:00,210 >> Grem printf poklicati, natisne% c ker želim natisnite ta 577 00:28:00,210 --> 00:28:01,580 znak na zaslonu. 578 00:28:01,580 --> 00:28:06,650 Jaz pa grem, da se nosilcem S Jaz, i-ta lik s, in zakaj 579 00:28:06,650 --> 00:28:12,330 počnem ta mali trik tukaj, male minus kapitala? 580 00:28:12,330 --> 00:28:16,352 Kaj se, da bo dal mi na splošno? 581 00:28:16,352 --> 00:28:18,600 >> [Neslišno]. 582 00:28:18,600 --> 00:28:19,390 >> Točno tako. 583 00:28:19,390 --> 00:28:20,860 Res ne pozabite - 584 00:28:20,860 --> 00:28:24,390 je bilo 65 za kapitalske A. Res ne se spomnite, kaj male črke, je, 585 00:28:24,390 --> 00:28:25,540 pa ni važno. 586 00:28:25,540 --> 00:28:26,580 Računalnik ne ve. 587 00:28:26,580 --> 00:28:30,380 Torej z besedami, male minus glavno, da je čudno, da je 588 00:28:30,380 --> 00:28:33,530 odšteje en sloj iz drugega, ampak kaj znakov, ki je pod pokrovom? 589 00:28:33,530 --> 00:28:34,520 Oni so samo številke. 590 00:28:34,520 --> 00:28:36,980 Torej, ne glede na te številke, Naj računalnik zapomnil 591 00:28:36,980 --> 00:28:38,240 namesto mene človek. 592 00:28:38,240 --> 00:28:41,710 >> Torej male negativni kapital je dogaja, da mi razliko. 593 00:28:41,710 --> 00:28:45,370 To se zgodi, da se 32, in da bi velja za male črke b in kapitala B 594 00:28:45,370 --> 00:28:45,930 in tako naprej. 595 00:28:45,930 --> 00:28:47,710 Ostane dosleden, na srečo. 596 00:28:47,710 --> 00:28:51,930 Torej sem v bistvu pravi, da male črke, odštevanje off, da 597 00:28:51,930 --> 00:28:55,340 Standard razlika, in da Učinkovito sprememb nosilcem S i od 598 00:28:55,340 --> 00:28:59,400 male črke, da, seveda, velike črke, brez moje res morali razmišljati 599 00:28:59,400 --> 00:29:03,040 o tem, ali ne pozabite, kaj so bili tisti, številke smo govorili, ko osem 600 00:29:03,040 --> 00:29:04,800 Prostovoljci prišel na oder? 601 00:29:04,800 --> 00:29:08,800 Zdaj pa se je v drugega, če to ni male črke, kot je določeno 602 00:29:08,800 --> 00:29:10,400 po liniji 24, samo ga natisnite. 603 00:29:10,400 --> 00:29:12,590 Želim samo dotakniti znaki, ki so bili 604 00:29:12,590 --> 00:29:14,410 pravzaprav prvotno male črke. 605 00:29:14,410 --> 00:29:15,150 >> Torej, da vidimo to. 606 00:29:15,150 --> 00:29:17,400 Naredite izkoristiti. 607 00:29:17,400 --> 00:29:18,470 Zbrati, v redu. 608 00:29:18,470 --> 00:29:19,730 . / Izkoristiti. 609 00:29:19,730 --> 00:29:23,530 In mi tip v H-E-L-L-O z malo začetnico, Enter. 610 00:29:23,530 --> 00:29:26,370 In opazil, da se pretvori v velikimi črkami. 611 00:29:26,370 --> 00:29:27,940 Dovolite mi, da to storite še enkrat z drugačna beseda. 612 00:29:27,940 --> 00:29:32,720 Kako o D-A-V-I-D s prvim D kapitalizirane kot ime je običajno? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Obvestilo je še vedno pravilna. 615 00:29:34,870 --> 00:29:40,250 Samo outputted da najprej D nespremenjena po tem pa konstrukt. 616 00:29:40,250 --> 00:29:42,170 >> Torej, imejte v mislih, potem Nekaj ​​stvari tukaj. 617 00:29:42,170 --> 00:29:45,060 Ena, če si kdaj želeli, da preverite dva Pogoji naenkrat, lahko in jih 618 00:29:45,060 --> 00:29:46,500 skupaj kot smo napovedali. 619 00:29:46,500 --> 00:29:49,900 Lahko primerjate znake na ta način in učinkovito zdravljenje znakov, 620 00:29:49,900 --> 00:29:53,050 številke, vendar odkrito, to je tako prekleto skrivnosten Nikoli ne bom zapomniti 621 00:29:53,050 --> 00:29:56,510 kako bi prišli do tega iz nič brez obrazložitve s tem za dokaj 622 00:29:56,510 --> 00:29:57,140 malo časa. 623 00:29:57,140 --> 00:30:00,590 >> Ali ne bi bilo lepo, če bi nekdo tam napisal funkcijo imenovano je 624 00:30:00,590 --> 00:30:05,390 znižati, da bi lahko odgovorili zame pravo ali napačna, to je znak malimi? 625 00:30:05,390 --> 00:30:09,350 No na srečo, kdo je napisal ctype.h naredil točno to. 626 00:30:09,350 --> 00:30:15,540 Naj grem gor in dodajte ctype za c vrste, in zdaj mi gre dol in 627 00:30:15,540 --> 00:30:18,820 Reportaža te vrstice kot sledi. 628 00:30:18,820 --> 00:30:27,510 >> Torej, če se imenuje nižja, Trdim, s Nosilec i, potem bom izbrisati 629 00:30:27,510 --> 00:30:29,400 ti dve vrstici v celoti. 630 00:30:29,400 --> 00:30:32,570 Torej, zdaj nekdo drug, sem upal, je zapisal Funkcija imenuje nižja, in 631 00:30:32,570 --> 00:30:36,250 Izkazalo se je, in jih razglasi je notranjost ctype.h. 632 00:30:36,250 --> 00:30:39,480 In zdaj bom pustil linijo 27 sam bom zapustil linijo 31 633 00:30:39,480 --> 00:30:41,890 sam, ampak obvestilo, koliko sem poostrila svojo kodo. 634 00:30:41,890 --> 00:30:42,690 To je zdaj čistejši. 635 00:30:42,690 --> 00:30:47,250 To je manj težko odmisliti ker zdaj funkcija, poleg tega 636 00:30:47,250 --> 00:30:50,080 tako čudovito je imenovan samo ne, kaj piše. 637 00:30:50,080 --> 00:30:51,520 >> Torej, zdaj bom rešiti to. 638 00:30:51,520 --> 00:30:52,930 Jaz grem za pomanjšanje. 639 00:30:52,930 --> 00:30:56,650 In tako kot v Scratch bi lahko imeli Booleans, vrednote Boolove res ali 640 00:30:56,650 --> 00:31:01,530 napačna, to je točno tisto, kar je nižja dejansko vrne. 641 00:31:01,530 --> 00:31:02,960 Naj ti prevedem. 642 00:31:02,960 --> 00:31:04,500 Dovolite mi, da ponovno rok. 643 00:31:04,500 --> 00:31:07,350 In zdaj pa še enkrat poskusil, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 To je zelo dobro. 645 00:31:07,970 --> 00:31:10,150 In poskusite znova, preverite, ali sem ni zajebal nekaj gor. 646 00:31:10,150 --> 00:31:11,670 , Ki se obračuna kot dobro. 647 00:31:11,670 --> 00:31:14,190 >> Vendar to ni dovolj dobro, saj Druga stvar, ki me ne bo nikoli 648 00:31:14,190 --> 00:31:19,090 spomnite, razen če delam z njim res previdno na, recimo, papir 649 00:31:19,090 --> 00:31:19,920 to prekleto linijo. 650 00:31:19,920 --> 00:31:23,450 Ne bi bilo lepo, če bi bilo Funkcija se imenuje na zgornji? 651 00:31:23,450 --> 00:31:26,930 No, izkazalo se je tam je v ctype.h kot dobro. 652 00:31:26,930 --> 00:31:30,150 Jaz grem naprej in tip - 653 00:31:30,150 --> 00:31:31,340 dovolite mi, da to vrstico nazaj. 654 00:31:31,340 --> 00:31:36,430 Namesto tega sem, naj gredo naprej in pravijo, nadomestek za% c je 655 00:31:36,430 --> 00:31:42,110 Rezultat te funkcije kliče Zgornja na i-ti značaja s. 656 00:31:42,110 --> 00:31:45,430 In sedaj opazili, da je pridobivanje Malo uravnoteženo. 657 00:31:45,430 --> 00:31:48,870 Moram slediti, koliko oklepaje sem odpirajo in zapirajo. 658 00:31:48,870 --> 00:31:50,050 >> Torej, zdaj je še čistejši. 659 00:31:50,050 --> 00:31:53,460 Zdaj ta program boljši in bolje zasnovani verjetno zato, ker je 660 00:31:53,460 --> 00:31:56,450 veliko, veliko bolj berljiva, ampak To ni dajmo popraviti. 661 00:31:56,450 --> 00:31:57,600 Naredite izkoristiti. 662 00:31:57,600 --> 00:31:58,930 . / Izkoristiti. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Kaj je to spet teči, D-A-V-I-D. OK, tako da smo še vedno v 664 00:32:03,220 --> 00:32:04,250 zelo dobri formi. 665 00:32:04,250 --> 00:32:06,030 >> Zdaj pa se zgornji del. 666 00:32:06,030 --> 00:32:09,720 Predlagam, da obstaja še ena več izpopolnitev lahko naredimo, da bi 667 00:32:09,720 --> 00:32:12,820 res lepo, da bi lahko resnično zaostriti do te kode, in res nam pet 668 00:32:12,820 --> 00:32:15,150 od petih za oblikovanje, na primer. 669 00:32:15,150 --> 00:32:16,510 Kaj bi bilo lepo, da se znebite? 670 00:32:16,510 --> 00:32:20,770 No, poglej, kako prekleto dolgo ta blok Koda je le narediti nekaj preprostega. 671 00:32:20,770 --> 00:32:23,850 >> Zdaj, kot prahi, kot boste morda morali gledati v super oddelku v preteklem 672 00:32:23,850 --> 00:32:27,570 vikend, vam ni nujno potrebujemo Zaviti oklepaji, ko imate le eno 673 00:32:27,570 --> 00:32:32,180 vrstica kode, čeprav smo predlagali jih držimo tako, da naredi veliko 674 00:32:32,180 --> 00:32:36,190 bolj jasno, kot v obliki črke U na praske na bloki, kaj je notri podružnice. 675 00:32:36,190 --> 00:32:40,170 Toda ali ne bi bilo lepo, če na zgornji, ko je dal svoj prispevek, se je izkazalo v 676 00:32:40,170 --> 00:32:44,730 veliko začetnico, če to ni, in kaj bi bilo čudovito, v nasprotnem primeru, če 677 00:32:44,730 --> 00:32:47,210 to je že velike črke? 678 00:32:47,210 --> 00:32:49,620 Samo skozi in jo pusti pri miru. 679 00:32:49,620 --> 00:32:50,660 >> Mogoče je pa to. 680 00:32:50,660 --> 00:32:52,990 Jaz bi poskusil in samo upam, da se to, a mi dovoliš 681 00:32:52,990 --> 00:32:54,450 uvesti eno stvar. 682 00:32:54,450 --> 00:32:57,440 Namesto uporabe tega vgrajeni terminal okno dol, opozarjajo, da 683 00:32:57,440 --> 00:33:01,130 ta črna ikona kvadrat vam Večji terminal okno, ki se lahko polni 684 00:33:01,130 --> 00:33:02,260 pregledajo, če želim? 685 00:33:02,260 --> 00:33:05,820 Tako se izkaže, da si nekako čudno named, vendar pa je te stvari imenovanih 686 00:33:05,820 --> 00:33:10,970 man pages, ročni strani, človek na kratko, in sem lahko dostop do njih s 687 00:33:10,970 --> 00:33:14,515 tipkanje človek - 688 00:33:14,515 --> 00:33:15,570 Kaj hočem s tipom? 689 00:33:15,570 --> 00:33:17,830 Človek na zgornji del. 690 00:33:17,830 --> 00:33:21,090 >> In sedaj opazili, če obstaja deluje notranjost računalnika v 691 00:33:21,090 --> 00:33:23,970 V tem primeru je naprava, ki je prav Linux operacijski sistem, da se dogaja 692 00:33:23,970 --> 00:33:27,920 da mi nekoliko Grobni niz izhod, vendar boste našli več časa, da 693 00:33:27,920 --> 00:33:31,720 vedno je oblikovana precej Enako tako da začnete navadiš. 694 00:33:31,720 --> 00:33:35,130 Obvestilo na vrhu v zgornji del in Očitno je enako dokumentacijo 695 00:33:35,130 --> 00:33:35,680 Za nižje. 696 00:33:35,680 --> 00:33:38,740 Kdor je napisal je rezanje nekaj vogali in dal vse na eno stran. 697 00:33:38,740 --> 00:33:40,720 Namen teh stvareh "v življenje je za pretvorbo 698 00:33:40,720 --> 00:33:42,780 črka na zgornji ali malimi črkami. 699 00:33:42,780 --> 00:33:46,290 >> Opazili, da se pod Sinopsis, stran man me učil, kaj datoteka imam 700 00:33:46,290 --> 00:33:48,130 vključiti uporabljati to stvar. 701 00:33:48,130 --> 00:33:51,320 To mi je kar podpise za to funkcije, sta oba, celo 702 00:33:51,320 --> 00:33:53,510 čeprav smo zdaj le skrbi za enega. 703 00:33:53,510 --> 00:33:54,730 Tukaj je zdaj opis. 704 00:33:54,730 --> 00:33:58,800 Na zgornji pretvori črko c z veliko začetnico, če je to mogoče. 705 00:33:58,800 --> 00:34:02,280 >> Še vedno ni tako poučna, vendar mi dovolite Zdaj poglej pod vrnjene vrednosti, je stvar 706 00:34:02,280 --> 00:34:03,520 da se je vrnil. 707 00:34:03,520 --> 00:34:08,600 Torej vrednost vrne iz pretvori pismo ali c, če 708 00:34:08,600 --> 00:34:09,870 pretvorba ni bila mogoča. 709 00:34:09,870 --> 00:34:11,202 Kaj je c? 710 00:34:11,202 --> 00:34:12,560 >> Prvotni značaj. 711 00:34:12,560 --> 00:34:15,370 >> Prvotni značaj in vemo, , ki jih, še enkrat, bo do 712 00:34:15,370 --> 00:34:19,179 sinopsis, in kdor je to napisal Funkcija pravkar odločila, da vnos 713 00:34:19,179 --> 00:34:22,909 da se zgornji in spodnji je samo samovoljno dogaja, da se imenuje c. 714 00:34:22,909 --> 00:34:24,909 Lahko bi ga imenovali najbolj ničesar hočejo, vendar pa ga hranijo 715 00:34:24,909 --> 00:34:26,270 enostavno, kot c. 716 00:34:26,270 --> 00:34:27,880 Tako sem posvetoval s strani človeka. 717 00:34:27,880 --> 00:34:31,870 Ta stavek me prepričali, da če to ni male črke, to je 718 00:34:31,870 --> 00:34:34,969 dogaja, da me daj nazaj C, kar je popolna, kar pomeni, da sem lahko znebite 719 00:34:34,969 --> 00:34:36,199 moj drug pogoj. 720 00:34:36,199 --> 00:34:39,679 >> Naj gredo nazaj v gedit in Zdaj mi pa samo naredi to. 721 00:34:39,679 --> 00:34:41,960 Grem kopiram printf izjavo. 722 00:34:41,960 --> 00:34:45,969 Jaz grem naprej in desno v notranjosti za zanke izpisa, ki se izvajajo, in dobili 723 00:34:45,969 --> 00:34:48,760 rešimo zdaj to celo, če konstrukt. 724 00:34:48,760 --> 00:34:51,860 Ni slaba ideja, in je bilo zelo bolj pravilna in skladna s 725 00:34:51,860 --> 00:34:54,100 vse, kar smo pridigal, ampak ni potrebno. 726 00:34:54,100 --> 00:34:57,070 Takoj, ko se zavedaš, nekaj knjižnico funkcija obstaja, da je nekdo drug 727 00:34:57,070 --> 00:35:01,340 napisal, ali pa si napisal na drugem mestu v datoteko, jo lahko uporabljate, in res 728 00:35:01,340 --> 00:35:02,690 začetek poostriti kodo. 729 00:35:02,690 --> 00:35:06,080 >> In ko rečem stvari, kot dobro slogu, Dejstvo, da oseba, ki se imenuje 730 00:35:06,080 --> 00:35:11,490 deluje na zgornji ali prej je nižja je nadvse koristno, saj 731 00:35:11,490 --> 00:35:12,900 oni so zelo opisno. 732 00:35:12,900 --> 00:35:16,120 Saj ne bi rad, da pokličete svoje funkcije x in y in z, ki imajo 733 00:35:16,120 --> 00:35:19,620 veliko, veliko manj pomena. 734 00:35:19,620 --> 00:35:25,160 Vsa vprašanja o tej seriji izboljšave? 735 00:35:25,160 --> 00:35:28,010 >> Zato je dovolj reči eno takeaways je tudi kot svoj problem 736 00:35:28,010 --> 00:35:30,960 set - morda problem set, pač pa Vsekakor P nastaviti dva in tretjemu celo 737 00:35:30,960 --> 00:35:34,380 ko si pravilno ni nujno pomeni, da so kot nalašč ravno 738 00:35:34,380 --> 00:35:36,155 ali še posebej dobro zasnovan. 739 00:35:36,155 --> 00:35:38,420 To je drugi osi, začeti razmišljati o tem. 740 00:35:38,420 --> 00:35:41,730 Torej je ta niz znotraj vašega računalnika spomin, ampak če imate 741 00:35:41,730 --> 00:35:46,180 cel kup znakov, kot so H-E-L-L-O Notranjost RAM-a, in domnevam 742 00:35:46,180 --> 00:35:51,330 ki jih v svojem programu pokličite dobili niz večkrat, kot da vas 743 00:35:51,330 --> 00:35:54,200 pokličite dobili niz enkrat, potem pa pokličite spet dobili niz. 744 00:35:54,200 --> 00:35:55,880 No, kaj se dogaja na zgodilo v daljšem časovnem obdobju? 745 00:35:55,880 --> 00:35:59,170 >> Z drugimi besedami, če imate linijo Koda, čeprav iz konteksta, kot so 746 00:35:59,170 --> 00:36:02,120 Niz je dobil - 747 00:36:02,120 --> 00:36:02,960 kaj je to. 748 00:36:02,960 --> 00:36:05,270 String ime enako dobili niz. 749 00:36:05,270 --> 00:36:08,590 Torej, predvidevam, da je vrstica kode je namenjen vprašati uporabnika za njegovo ali njeno ime. 750 00:36:08,590 --> 00:36:14,580 Ta Naslednja vrstica kode je mišljeno, da zahteva uporabnik za njegovo ali njeno šolo, in 751 00:36:14,580 --> 00:36:15,920 ta druga skupina, in tako naprej. 752 00:36:15,920 --> 00:36:18,150 Recimo, da smo ostali prosi Uporabnik za drugo in 753 00:36:18,150 --> 00:36:19,750 še in še niz. 754 00:36:19,750 --> 00:36:22,390 Oni bodo ostali v spominu hkrati. 755 00:36:22,390 --> 00:36:24,280 Ena se ne bo clobber drugega. 756 00:36:24,280 --> 00:36:26,420 Šola se ne prepiše drugega. 757 00:36:26,420 --> 00:36:28,520 Ampak kje delajo vse končajo v spominu? 758 00:36:28,520 --> 00:36:32,030 >> No, če začnemo oblikovati na zaslonu, ki ga lahko uporabimo to stvar 759 00:36:32,030 --> 00:36:35,800 tukaj kot tablo, če je to črna pravokotnik predstavlja moj računalnik je 760 00:36:35,800 --> 00:36:39,800 spomin, bom samovoljno začeti ga deli na majhne kvadrate, 761 00:36:39,800 --> 00:36:42,120 vsak od njih predstavlja en bajt pomnilnika. 762 00:36:42,120 --> 00:36:46,560 Odkrito povedano, če imate gigabajt RAM v teh dneh, imate milijardo bajtov 763 00:36:46,560 --> 00:36:49,540 pomnilnika v računalniku, tako da milijard teh kvadratov. 764 00:36:49,540 --> 00:36:52,110 Zato je dovolj reči, to ni res v merilu. 765 00:36:52,110 --> 00:36:58,250 >> Vendar lahko hranimo pripravi vse te očitno niso v merilu kvadratov, in to 766 00:36:58,250 --> 00:37:01,260 skupaj predstavlja spomin mojega računalnika. 767 00:37:01,260 --> 00:37:03,136 Zdaj bomo pač pika, dot, pika. 768 00:37:03,136 --> 00:37:06,260 Torej, z drugimi besedami, ko sem zdaj poziv Uporabnik s get vrvico, da mi 769 00:37:06,260 --> 00:37:07,350 string, kaj se zgodi? 770 00:37:07,350 --> 00:37:14,270 Če uporabnik vnese v "zdravo", da se konča v H-E-L-L-O. Recimo 771 00:37:14,270 --> 00:37:15,720 potem uporabnik vrste v - 772 00:37:15,720 --> 00:37:17,250 pravzaprav, ne bi smel storiti Pozdravljeni, ker smo asking 773 00:37:17,250 --> 00:37:18,330 jim za njihovimi imeni. 774 00:37:18,330 --> 00:37:20,580 Torej pojdimo nazaj, če to lahko storim. 775 00:37:20,580 --> 00:37:26,130 >> Torej, če tip I in D-A-V-I-D za moje ime, vendar pa opozarjajo, da drugi vrstici 776 00:37:26,130 --> 00:37:29,220 Kodeks je bil spet dobil niz da bi dobili svojo šolo. 777 00:37:29,220 --> 00:37:32,090 Če je ta beseda, ki jo uporabnik vrste v šli naprej? 778 00:37:32,090 --> 00:37:38,290 No, morda pa bo šel v H-A-R-V-A-R-D. Torej, čeprav sem 779 00:37:38,290 --> 00:37:41,560 je sestavljen v dveh vrsticah, to je samo cel kup bajtov v vašem 780 00:37:41,560 --> 00:37:42,710 računalnika RAM. 781 00:37:42,710 --> 00:37:46,560 Tam je problem zdaj, ker zdaj, če sem uporabo RAM na to zelo smiselno 782 00:37:46,560 --> 00:37:49,910 ampak nekako naivne način, se lahko kaj ni očitno razlikuje? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Če en začne in kje ena konča, kajne? 785 00:37:54,680 --> 00:37:55,860 Oni so nekako zabrisane skupaj. 786 00:37:55,860 --> 00:37:57,920 >> Tako se izkaže, da računalnik tega ne stori. 787 00:37:57,920 --> 00:38:04,720 Dovolite mi, da dejansko pomaknete nazaj v čas, v Nekaj ​​znakov, in namesto Harvardu 788 00:38:04,720 --> 00:38:09,570 grem takoj po uporabnikovem imenu, uporabnik dejansko dobi, zadaj 789 00:38:09,570 --> 00:38:12,000 Prizori, poseben značaj vstavi 790 00:38:12,000 --> 00:38:13,885 Računalnik za njim. 791 00:38:13,885 --> 00:38:19,470 / 0, sicer znan kot znak NUL nadležno imenovan N-U-L, ne 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, ampak si ga napisal kot / 0. 793 00:38:22,190 --> 00:38:27,130 To je samo vse nič bitov je označevalec v med prvo besedo, ki uporabnika 794 00:38:27,130 --> 00:38:28,290 vnesli in drugi. 795 00:38:28,290 --> 00:38:33,020 >> Torej Harvard dejansko zdaj konča kot to zaporedje znakov 796 00:38:33,020 --> 00:38:36,110 in še eno / 0. 797 00:38:36,110 --> 00:38:41,690 Torej, z drugimi besedami, ki jih imajo ti kontrolne vrednosti, osem stikata nič 798 00:38:41,690 --> 00:38:45,220 bitov, lahko zdaj začeli razlikovati en znak od drugega. 799 00:38:45,220 --> 00:38:49,720 Torej, ves ta čas, kar je bilo "zdravo", je dejansko "zdravo" z / 0, in 800 00:38:49,720 --> 00:38:53,580 Medtem pa bi lahko zelo dobro precej malo več RAM 801 00:38:53,580 --> 00:38:56,400 notranjost računalnika. 802 00:38:56,400 --> 00:38:57,810 >> Dovolite mi, da naredite eno stvar zdaj. 803 00:38:57,810 --> 00:39:01,800 Izkazalo se je, da so vse te kvadratov smo bili risanje, so, da, 804 00:39:01,800 --> 00:39:06,140 strune, ampak bolj na splošno, te stvari so nizi. 805 00:39:06,140 --> 00:39:10,590 Array je samo kos pomnilnika da se je vrnil nazaj na hrbtni strani, 806 00:39:10,590 --> 00:39:15,130 in jih po navadi uporabljate niz v obliki te kvadratni nosilca zapisa. 807 00:39:15,130 --> 00:39:18,210 Tako da bomo videli te zelo malo sčasoma, ampak naj gredo naprej in 808 00:39:18,210 --> 00:39:21,160 odpreti, recimo ji starosti poklicati. 809 00:39:21,160 --> 00:39:23,920 In opazil, kaj lahko storimo z ti isti triki, malo 810 00:39:23,920 --> 00:39:25,750 malo več sintaksa tukaj. 811 00:39:25,750 --> 00:39:29,270 >> Torej, v skladu 17. člena tega programa - pravzaprav, mi zažene program prve 812 00:39:29,270 --> 00:39:30,770 tako da bomo lahko videli, kaj ta stvar počne. 813 00:39:30,770 --> 00:39:33,530 Poklical bom, da starost za pripravi tega programa. 814 00:39:33,530 --> 00:39:34,950 /. Starosti. 815 00:39:34,950 --> 00:39:36,480 Koliko ljudi je v sobi? 816 00:39:36,480 --> 00:39:38,020 Call it tri. 817 00:39:38,020 --> 00:39:39,575 Starost prvi osebi? 818 00:39:39,575 --> 00:39:42,710 18, 19, in 20. 819 00:39:42,710 --> 00:39:46,770 In zdaj nekoliko smešno, sem so naredili program, da starost, tistim, 820 00:39:46,770 --> 00:39:47,740 trije ljudje. 821 00:39:47,740 --> 00:39:50,390 >> Torej je jasno priložnost Za nekaj zabave aritmetične tukaj. 822 00:39:50,390 --> 00:39:51,560 K sreči, je matematika pravilna. 823 00:39:51,560 --> 00:39:54,720 18. odšel v 19., 19. šel na 20 in tako naprej. 824 00:39:54,720 --> 00:39:58,510 Ampak kaj je res mišljeno, da bo Nazoren je, kako bomo shranjevanje 825 00:39:58,510 --> 00:40:00,190 starost teh treh ljudi. 826 00:40:00,190 --> 00:40:02,370 Dovolite mi, da povečate na tisto, kar je dogaja. 827 00:40:02,370 --> 00:40:06,240 >> Torej, najprej je treba te prvih nekaj vrstic se že precej pozna. 828 00:40:06,240 --> 00:40:08,770 Jaz sem samo da bi od uporabnika število oseb v sobi. 829 00:40:08,770 --> 00:40:11,490 Potem sem s pomočjo dobil int in ne, medtem ko se to znova in znova in znova narediti. 830 00:40:11,490 --> 00:40:15,780 Videli smo, da se vzorec prej, vendar linija 27 je nov in pravzaprav precej 831 00:40:15,780 --> 00:40:18,160 koristno, in bo bolj koristno. 832 00:40:18,160 --> 00:40:21,620 Obvestilo, da tisto, kar je drugače v skladu 27. je, da sem se zdi, da se razglasi 833 00:40:21,620 --> 00:40:23,960 int imenovane starosti, vendar počakajte. 834 00:40:23,960 --> 00:40:27,140 To ni le int starost. 835 00:40:27,140 --> 00:40:30,130 Tam te oklepaje, znotraj katerih je n. 836 00:40:30,130 --> 00:40:35,150 >> Torej nosilec n v zvezi s tem ni notranjost printf izjavo tukaj, ampak 837 00:40:35,150 --> 00:40:44,370 V tem edinim liniji 27, ta vrstica rekel, da me n Ints, od katerih vsaka 838 00:40:44,370 --> 00:40:46,080 je tipa int. 839 00:40:46,080 --> 00:40:49,870 Torej je to vedro, tako rekoč v, v tem primeru tri cela števila nazaj 840 00:40:49,870 --> 00:40:52,770 na hrbtni strani, tako da sem dejansko imajo tri spremenljivke. 841 00:40:52,770 --> 00:40:54,890 Možnost, da se jasno, da bo ta. 842 00:40:54,890 --> 00:40:57,400 >> Če bi želel najprej študenta starost, jaz bi to naredil. 843 00:40:57,400 --> 00:40:59,520 Če sem hotel drugega študenta starost sem lahko to naredil. 844 00:40:59,520 --> 00:41:01,860 Če bi želel tretjega študenta starost, jaz bi to naredil. 845 00:41:01,860 --> 00:41:04,320 In bog ne daj, da moramo vsakogar starost v tej sobi - 846 00:41:04,320 --> 00:41:07,670 Mislim, da je to pekel od veliko izvoda, spet in ponovno prilepite. 847 00:41:07,670 --> 00:41:10,870 In plus, ko sem zbrati ta program, če en študent hodi več ven 848 00:41:10,870 --> 00:41:14,200 v ta vrata, zdaj moja številka spremenljivk je napačna. 849 00:41:14,200 --> 00:41:17,450 >> Torej, kaj je lepo o matriki je kot Takoj, ko začnete sami občutek 850 00:41:17,450 --> 00:41:20,190 kopiranja in lepljenja, so možnosti, da je ni najboljši pristop. 851 00:41:20,190 --> 00:41:22,240 Array je dinamičen potencialno. 852 00:41:22,240 --> 00:41:24,610 Ne vem vnaprej, koliko ljudi se bodo v prostoru 853 00:41:24,610 --> 00:41:28,670 vem pa moram n od njih, in bom ugotovimo, n, ko pride čas. 854 00:41:28,670 --> 00:41:35,500 Ta vrstica kode zdaj pomeni, da mi kos pomnilnika, ki je videti takole 855 00:41:35,500 --> 00:41:40,380 kjer je število polj na zaslonu je v celoti odvisen od n, ki 856 00:41:40,380 --> 00:41:42,010 uporabnik vtipka 857 00:41:42,010 --> 00:41:44,850 >> Torej, zdaj Preostanek tega programa je pravzaprav zelo podoben temu, kar smo 858 00:41:44,850 --> 00:41:46,860 pravkar storil z znaki. 859 00:41:46,860 --> 00:41:49,970 Obvestilo imam za zanko z začetkom v vrstici 30. 860 00:41:49,970 --> 00:41:54,920 Torej, takoj ko sem dobil niz, sem Ponovil od y enaka nič, na do n. 861 00:41:54,920 --> 00:41:58,890 Imam samo to poučno printf sporočilo samo rekel, da mi na starost 862 00:41:58,890 --> 00:42:03,690 osebe #% i, tako da številka ena, Številka dve, številka tri. 863 00:42:03,690 --> 00:42:04,730 In zakaj sem naredil to? 864 00:42:04,730 --> 00:42:08,870 Odkrito povedano, ljudje raje šteje od ena gor ker računalniški znanstveniki, 865 00:42:08,870 --> 00:42:09,620 nič gor. 866 00:42:09,620 --> 00:42:11,700 računalniški znanstveniki ne bodo uporabljate to vrsto programa, tako da smo 867 00:42:11,700 --> 00:42:13,990 bo šele začetek štetja na eni, kot normalni ljudje. 868 00:42:13,990 --> 00:42:17,630 >> In zdaj je v skladu 33, opazili rahlo drugačen del sintakse. 869 00:42:17,630 --> 00:42:23,710 I-starost v omenjeno spremenljivko tipa matrika bo dobil int. 870 00:42:23,710 --> 00:42:25,770 In zdaj končno, to je samo aritmetična tukaj. 871 00:42:25,770 --> 00:42:29,200 Sem se odločil v ločenem zanke zahtevku nekaj časa teče, in zdaj v tem 872 00:42:29,200 --> 00:42:31,400 ločene zanke, te vrstice izvršiti. 873 00:42:31,400 --> 00:42:35,810 >> Leto od sedaj, oseba, bom jaz let naj opazil to ni 874 00:42:35,810 --> 00:42:36,500 spremenljivki i. 875 00:42:36,500 --> 00:42:38,390 To je sedaj% i za notr. 876 00:42:38,390 --> 00:42:43,210 In obvestilo, kot prvo ogrado, sem plug i + 1, tako da računamo kot 877 00:42:43,210 --> 00:42:44,250 normalen človek. 878 00:42:44,250 --> 00:42:49,190 In potem se za vrednost njihove starosti, za star i let, vzamem starost, nosilec 879 00:42:49,190 --> 00:42:52,980 i - in zakaj to delam plus eno tukaj? 880 00:42:52,980 --> 00:42:53,760 Pravkar starosti. 881 00:42:53,760 --> 00:42:55,030 To je moja neumna izbira programov. 882 00:42:55,030 --> 00:42:56,810 Pravkar so stari eno leto. 883 00:42:56,810 --> 00:42:59,770 Jaz bi tip v poljubnem številu tej Pravzaprav hočem tam. 884 00:42:59,770 --> 00:43:02,430 >> Torej, kaj je pravzaprav vse ustreznost tukaj? 885 00:43:02,430 --> 00:43:07,610 No, naj dejansko pomaknete nazaj sem in barve sliko 886 00:43:07,610 --> 00:43:10,830 tega, kar je pred nami. 887 00:43:10,830 --> 00:43:15,720 Kaj bomo lahko delaš z naš naslednji Problem Set Dva se ukvarjali v 888 00:43:15,720 --> 00:43:17,070 svet kriptografije. 889 00:43:17,070 --> 00:43:22,500 Tako je ta niz znakov, tako Zaporedje več znakov, in kaj 890 00:43:22,500 --> 00:43:23,750 pa to rekel? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 To ni v spletni različici od diapozitivov. 893 00:43:30,600 --> 00:43:35,880 >> Zato trdim, da je to enako to, neumna reklama od mnogih letih 894 00:43:35,880 --> 00:43:39,950 nazaj, da bi lahko dejansko odpoklic ena od njenih izvorov. 895 00:43:39,950 --> 00:43:42,740 Torej je to primer šifriranja ali kriptografija. 896 00:43:42,740 --> 00:43:46,150 Izkazalo se je, da če hočeš dejansko poslali podatke ali pa delež 897 00:43:46,150 --> 00:43:49,310 Podatki z nekom, varno, podobno sporočilo, kot je ta, lahko 898 00:43:49,310 --> 00:43:50,500 Izokrenuti črke. 899 00:43:50,500 --> 00:43:53,170 Ampak ponavadi, so besede Ne umešana naključno. 900 00:43:53,170 --> 00:43:56,365 Oni permutira na nek način ali spremeniti na nek način, tako da - ojej. 901 00:43:56,365 --> 00:43:59,040 To je zabavno spojler za naslednjič. 902 00:43:59,040 --> 00:44:04,390 >> Torej lahko zemljevid tisto, kar je očitno O, B. Obvestila, ki vodi do 903 00:44:04,390 --> 00:44:05,420 kapitalizacija-pametno. 904 00:44:05,420 --> 00:44:07,960 Očitno r postane e. 905 00:44:07,960 --> 00:44:14,000 Očitno F-H-E-R postane S-U-R-E. Torej, se izkaže, da je kartiranje in 906 00:44:14,000 --> 00:44:18,720 V tem primeru pa je precej neumno kartiranje, če je kdo pogruntal? 907 00:44:18,720 --> 00:44:21,440 To je nekaj, kar se imenuje Rot 13, Zavrti 13. 908 00:44:21,440 --> 00:44:24,760 To je najbolj neumna šifriranja Mehanizmi, saj dobesedno 909 00:44:24,760 --> 00:44:29,160 Dodaja, 13 za vsako od črk, neumen, v smislu, da če si 910 00:44:29,160 --> 00:44:31,890 imajo malo prostega časa na vaših rokah in svinčnik, ali pa si samo mislite 911 00:44:31,890 --> 00:44:35,260 skozi v glavi, lahko poskusite vsi mogoči dodatki - Ena, dve, 912 00:44:35,260 --> 00:44:38,470 tri, pika, dot, pika, 25 za samo vrtenje popolno abecedo, in 913 00:44:38,470 --> 00:44:40,860 sčasoma boste razbrati kaj je to sporočilo. 914 00:44:40,860 --> 00:44:43,700 Torej, če si kaj takega v razred šola prehodu sporočila svojim 915 00:44:43,700 --> 00:44:46,830 najboljši prijatelj, če je vaša ocena šola učitelj preprosto prebrati 916 00:44:46,830 --> 00:44:50,320 sporočilo in surovo prisilno rešitev, ste morda gotten 917 00:44:50,320 --> 00:44:52,550 Odgovor s tem. 918 00:44:52,550 --> 00:44:54,970 >> Zdaj seveda, v realnem svetu, kriptografija je bolj zapletena. 919 00:44:54,970 --> 00:45:00,120 To je odlomek iz besedila računalniški sistem, ki ima uporabniških imen in 920 00:45:00,120 --> 00:45:03,630 Gesla, kot skoraj vse naše storiti, in To je tisto, kar bi lahko vaše geslo 921 00:45:03,630 --> 00:45:07,260 videti je všeč, če je shranjeno na trdem vožnje pa v šifrirani obliki. 922 00:45:07,260 --> 00:45:11,050 To ni samo vrtenje pisem, Je B in B C. To 923 00:45:11,050 --> 00:45:15,620 veliko bolj zapletene, temveč ga uporablja kar je splošno znano kot skrivni ključ 924 00:45:15,620 --> 00:45:16,690 kriptografija. 925 00:45:16,690 --> 00:45:20,210 Ta slika pove naslednje Zgodba z nekaj ikonami. 926 00:45:20,210 --> 00:45:22,250 >> Na levi strani imamo kaj bomo poklical golo besedilo. 927 00:45:22,250 --> 00:45:25,420 V svetu kriptografije, navaden Besedilo je le izvirno sporočilo 928 00:45:25,420 --> 00:45:29,050 napisana v angleščini ali francoščini ali nobenem jeziku. 929 00:45:29,050 --> 00:45:32,405 Če ga želite šifrirati, bomo mimo je slikovno skozi ključavnico, tako da 930 00:45:32,405 --> 00:45:35,580 nekatere vrste algoritma, nekatere funkcije ali program, da je nekdo napisal 931 00:45:35,580 --> 00:45:39,880 da pehanje črke upajmo več complicatedly kot samo dodal 13 932 00:45:39,880 --> 00:45:40,980 za vsakega od njih. 933 00:45:40,980 --> 00:45:43,780 >> Kaj dobiš ven iz tega procesa, srednji tam se imenuje cyphertext. 934 00:45:43,780 --> 00:45:44,850 Tako nekako seksi besede. 935 00:45:44,850 --> 00:45:47,630 To samo pomeni, da je šifriran različica navadnega besedila. 936 00:45:47,630 --> 00:45:52,570 In samo, če imate to isto skrivnost, 13 ali minus 13, ste sposobni 937 00:45:52,570 --> 00:45:54,970 dešifrirati sporočilo, kot je ta. 938 00:45:54,970 --> 00:45:57,770 >> Torej Problem določili dve, med stvarmi boste storili, če v Hacker 939 00:45:57,770 --> 00:46:01,860 Izdaja, boste morali napisati kodo tresk teh gesel, ugotoviti 940 00:46:01,860 --> 00:46:05,170 kaj so in kako so bili šifrirana, vendar mi dal malo 941 00:46:05,170 --> 00:46:06,460 za usmerjanje na poti. 942 00:46:06,460 --> 00:46:09,320 V standardni različici, uvajamo Nekaj ​​šifre, šifriranje 943 00:46:09,320 --> 00:46:12,400 mehanizme, ena se imenuje Cezar, eden imenovano Vigenere, da so še vedno 944 00:46:12,400 --> 00:46:16,100 rotacijski šifrirne algoritme, kjer postane nekaj, B postane nekaj, vendar 945 00:46:16,100 --> 00:46:18,820 boste morali to storiti programsko ker bo dejansko skrivnost 946 00:46:18,820 --> 00:46:22,840 ključ, ki so vključeni običajno število ali ključna beseda, ki samo 947 00:46:22,840 --> 00:46:26,420 pošiljatelj in prejemnik teh Sporočila morajo razumeti. 948 00:46:26,420 --> 00:46:28,660 >> Zdaj, to dejansko ima inkarnacije v resničnem svetu. 949 00:46:28,660 --> 00:46:32,910 To, na primer, je malo sirota Annie skrivnost obroč dekoder, in si 950 00:46:32,910 --> 00:46:35,180 Lahko dejansko izvajanje teh rotacijski šifre - 951 00:46:35,180 --> 00:46:37,930 Postane nekaj, B postane nekaj - z nekaj koles, 952 00:46:37,930 --> 00:46:40,840 eno na zunanji strani, eno na notranji tak da če si zavrtite kolo ali 953 00:46:40,840 --> 00:46:44,170 obroč, lahko dejansko line up črke z različnimi črkami, 954 00:46:44,170 --> 00:46:45,430 dobili skrivno kodo. 955 00:46:45,430 --> 00:46:48,110 In tako kot Cliffhanger za danes, kaj sem mislil, da sem naredil, je malo 956 00:46:48,110 --> 00:46:52,170 Atavizam da če vklopite TV 24. decembra, si lahko ogledate 957 00:46:52,170 --> 00:46:55,390 Film oglas nauseum za 24 ur zapored. 958 00:46:55,390 --> 00:47:06,030 Ampak za danes, bom odprla tukaj in nam dal le dve minut 959 00:47:06,030 --> 00:47:13,493 pedagoško pomembne Božična zgodba z malo kolegi imenom Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [Predvajanje videa] 961 00:47:14,400 --> 00:47:17,420 >> -Se je znano, da vsi po vrsti, da Ralph Parker se imenuje 962 00:47:17,420 --> 00:47:20,650 član Little Orphan Annie skrivnost krog in je upravičen do vseh 963 00:47:20,650 --> 00:47:23,460 v čast in ugodnosti pojavljajo z njo. 964 00:47:23,460 --> 00:47:25,990 >> -Podpis, Mala sirota Annie. 965 00:47:25,990 --> 00:47:30,100 Sopodpiše, Pierre Andre s črnilom. 966 00:47:30,100 --> 00:47:34,270 Priznanja in koristi že pri devetih letih. 967 00:47:34,270 --> 00:47:39,440 >> [Kričanje na Radiu] 968 00:47:39,440 --> 00:47:40,770 >> Pridi, greva na z njim. 969 00:47:40,770 --> 00:47:44,965 Jaz ne potrebujem toliko jazz o tihotapci in pirati. 970 00:47:44,965 --> 00:47:48,270 >> -Poslušaj jutri zvečer za sklepanju pustolovščina črna 971 00:47:48,270 --> 00:47:49,650 piratska ladja. 972 00:47:49,650 --> 00:47:53,320 Zdaj je čas za Annie skrivnost Sporočilo za vas člane 973 00:47:53,320 --> 00:47:55,720 tajnega kroga. 974 00:47:55,720 --> 00:47:56,580 Ne pozabite, otroci. 975 00:47:56,580 --> 00:48:01,720 Samo člani Annie Secret kroga morejo dekodirati Annie skrivno sporočilo. 976 00:48:01,720 --> 00:48:05,872 Ne pozabite, Annie je odvisno od vas. 977 00:48:05,872 --> 00:48:08,670 Nastavite zatiči za B2. 978 00:48:08,670 --> 00:48:11,000 Tukaj je sporočilo. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Jaz sem v svojem prvem sestanku tajno. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre je bil v veliki nocoj glas. 983 00:48:21,650 --> 00:48:24,830 Jaz lahko povem, sporočilo, da nocojšnji je res pomembno. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 To je sporočilo od Annie sama. 986 00:48:28,540 --> 00:48:30,086 Ne pozabite, ne povej nikomur. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekund kasneje, sem v edinem prostoru v hiši, kjer fant devetih 989 00:48:38,710 --> 00:48:42,668 bi lahko sedeli v zasebnost in dekodirati. 990 00:48:42,668 --> 00:48:47,628 Aha, B. sem šel na naslednjo. 991 00:48:47,628 --> 00:48:53,060 E. Prva beseda je "biti." S. Prihajal je zdaj lažje. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 To je R. 994 00:48:55,940 --> 00:48:56,900 >> -Daj no, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Moram iti. 996 00:48:57,860 --> 00:48:59,780 >> Takoj se dol, mama. 997 00:48:59,780 --> 00:49:01,030 Joj čarovnik. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Bodite prepričani, da. 1000 00:49:08,220 --> 00:49:09,500 Bodite prepričani, da česa? 1001 00:49:09,500 --> 00:49:11,660 Kaj je bilo malo Orphan Annie poskuša povedati? 1002 00:49:11,660 --> 00:49:12,844 Bodite prepričani, da česa? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, je Randy iti. 1004 00:49:14,732 --> 00:49:16,148 Prosim, pridi ven? 1005 00:49:16,148 --> 00:49:17,092 >> -V redu, mama. 1006 00:49:17,092 --> 00:49:18,510 Takoj pridem ven. 1007 00:49:18,510 --> 00:49:20,270 >> -Sem bil pridobivanje bliže zdaj. 1008 00:49:20,270 --> 00:49:21,823 Napetost je bilo grozno. 1009 00:49:21,823 --> 00:49:23,045 Kaj je bilo? 1010 00:49:23,045 --> 00:49:26,510 Usoda našega planeta lahko visi na nitki. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randy je oditi. 1012 00:49:28,985 --> 00:49:32,680 >> Takoj se izvajajo za zjokat. 1013 00:49:32,680 --> 00:49:33,956 >> -Skoraj tam. 1014 00:49:33,956 --> 00:49:35,140 Moji prsti letel. 1015 00:49:35,140 --> 00:49:36,880 Moj um je jeklena past. 1016 00:49:36,880 --> 00:49:38,010 Vsak por vibrira. 1017 00:49:38,010 --> 00:49:39,878 Bilo je skoraj jasno. 1018 00:49:39,878 --> 00:49:43,210 Ja, ja, ja, ja, ja. 1019 00:49:43,210 --> 00:49:49,030 >> -Bodite prepričani, da popij 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 Crummy komercialno? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Kurbin sin. 1025 00:50:00,694 --> 00:50:01,900 >> [END predvajanje videa] 1026 00:50:01,900 --> 00:50:04,260 >> Zvočnik 1: To je CS50 in da Problem bo postavila dva. 1027 00:50:04,260 --> 00:50:06,305 Se vidiva naslednji teden. 1028 00:50:06,305 --> 00:50:08,800 >> ZVOČNIK 2: Na naslednji CS50, se to zgodi. 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 1: Torej ena tema nimamo Pogledal doslej je 1030 00:50:11,060 --> 00:50:12,220 da funkcijskih kazalcev. 1031 00:50:12,220 --> 00:50:14,540 Zdaj, funkcija kazalec je samo naslov javnega 1032 00:50:14,540 --> 00:50:17,000 funkcije, vendar podobno kot - 1033 00:50:17,000 --> 00:50:18,250 sin - 1034 00:50:18,250 --> 00:50:19,670