1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> ZVUČNI 1: U redu. 3 00:00:13,650 --> 00:00:14,390 Dobrodošao natrag. 4 00:00:14,390 --> 00:00:19,260 Ovo je tjedan Dva CS50, a imamo Do sada su pomoću funkcije, ali 5 00:00:19,260 --> 00:00:20,830 uglavnom ih uzimaju zdravo za gotovo. 6 00:00:20,830 --> 00:00:23,430 Koristili smo printf koja ima nuspojava tisak 7 00:00:23,430 --> 00:00:24,110 stvari na ekranu. 8 00:00:24,110 --> 00:00:25,790 Koristili smo dobili-int, float dobili. 9 00:00:25,790 --> 00:00:29,230 >> No, što ako stvarno želite stvoriti svoje vlastite funkcije, kao i neke od 10 00:00:29,230 --> 00:00:31,740 možda već počeli Problem Set učiniti za jedan, ipak 11 00:00:31,740 --> 00:00:33,140 nije strogo potrebno? 12 00:00:33,140 --> 00:00:37,150 Pa, idemo naprijed i da ponovno Problem samo za to traži za 13 00:00:37,150 --> 00:00:40,660 njihovo ime i ispis na nešto screen, ali pokušajte faktor neke 14 00:00:40,660 --> 00:00:44,000 od zajedništva koje smo vidjeti u našem kodu do sada. 15 00:00:44,000 --> 00:00:45,120 Dakle, po tome mislim sljedeće. 16 00:00:45,120 --> 00:00:47,315 >> Ja ću ići naprijed i stvoriti Novi program, samo zovi 17 00:00:47,315 --> 00:00:49,320 to hello.c kao i obično. 18 00:00:49,320 --> 00:00:53,730 Ja ću ići naprijed i dati sebe uključuju standardni io.h na vrhu. 19 00:00:53,730 --> 00:00:57,040 Idem i ja dobiti preventivno CS50 knjižnice, tako da 20 00:00:57,040 --> 00:00:59,080 Ja ne bi vikao na koju prevodilac. 21 00:00:59,080 --> 00:01:02,400 A sada ću ići naprijed i proglasiti int, glavni, prazninu. 22 00:01:02,400 --> 00:01:09,020 >> A onda je ovdje, ovo je mjesto gdje želim za početak da outsource funkcionalnost 23 00:01:09,020 --> 00:01:12,090 neke druge funkcije koje sam i sam ću pisati, ali to ne 24 00:01:12,090 --> 00:01:13,820 Trenutno postoji. 25 00:01:13,820 --> 00:01:19,210 Na primjer, pretpostavimo da sam htjela napisati funkciju koja mi omogućuje da 26 00:01:19,210 --> 00:01:23,830 ispisati hello, zarez, te Tada neke korisničko ime. 27 00:01:23,830 --> 00:01:29,010 Umjesto da nastavlja raditi printf Pozdrav,% s, ne bi li bilo lijepo da 28 00:01:29,010 --> 00:01:33,380 bilo je samo funkcija zove Ne printf, ali print ime? 29 00:01:33,380 --> 00:01:36,600 >> Dakle, drugim riječima, želim biti u mogućnosti napisati program koji radi malo 30 00:01:36,600 --> 00:01:37,710 nešto poput ovoga. 31 00:01:37,710 --> 00:01:42,070 Prvo, ja ću reći svoje printf Naziv, čime pitanja korisniku da 32 00:01:42,070 --> 00:01:46,150 daj mi svoje ime, a onda sam Namjeravam koristiti poznate niz s do 33 00:01:46,150 --> 00:01:47,290 deklarirati niz. 34 00:01:47,290 --> 00:01:50,420 Daj mi varijabla tipa string, zovu s, i pohraniti u tom 35 00:01:50,420 --> 00:01:52,120 rezultat zove se string. 36 00:01:52,120 --> 00:01:56,060 No, sada je u posljednjih nekoliko tjedana, ja bi pomalo dosadnog učinili Pozdrav,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> I u drugim riječima, vidjeli smo to Primjer hrpa vremena, a to je 39 00:02:02,570 --> 00:02:05,280 trivijalni primjer, jer postoji samo jedan linija koda tako da to stvarno nije 40 00:02:05,280 --> 00:02:06,860 velika stvar da bi se ponovno upisivati. 41 00:02:06,860 --> 00:02:09,990 Ali pretpostavimo da je ova linija koda zapravo su postali teret, a 42 00:02:09,990 --> 00:02:12,900 to nije jedna linija koda, ali to je 10 linija koda prije par tjedana od danas, 43 00:02:12,900 --> 00:02:15,190 a vi ste samo dobivanje umoran kopiranja i lijepljenja ili 44 00:02:15,190 --> 00:02:17,180 prekucavanje taj isti kôd. 45 00:02:17,180 --> 00:02:22,100 Zar ne bi bilo lijepo umjesto da radi printf Pozdrav,% s. i tako dalje, 46 00:02:22,100 --> 00:02:26,500 Ne bi li bilo lijepo da su samo Funkcija se zove print ime koje 47 00:02:26,500 --> 00:02:27,560 traje argument - 48 00:02:27,560 --> 00:02:29,120 Drugim riječima, potrebno je ulaz - 49 00:02:29,120 --> 00:02:30,620 , a zatim zarez. 50 00:02:30,620 --> 00:02:33,240 Dakle tu funkciju, ne bi to biti lijepo ako je postojao? 51 00:02:33,240 --> 00:02:36,690 Onda ne bi trebala brinuti o tome printf što je, što je% s, a sve 52 00:02:36,690 --> 00:02:39,400 ove složenosti koji su nije sve što je zanimljivo. 53 00:02:39,400 --> 00:02:40,570 Oni su korisni. 54 00:02:40,570 --> 00:02:44,700 >> Dakle print ime, na žalost, nije bio izumio neki 40 plus godina. 55 00:02:44,700 --> 00:02:45,980 Nitko ne misli da je pisanje. 56 00:02:45,980 --> 00:02:48,300 No, to je ljepota ima programski jezik, baš kao u 57 00:02:48,300 --> 00:02:52,930 Scratch možete definirati prilagođene blokova, tako da u C, a većina bilo kojem jeziku, možete i vi 58 00:02:52,930 --> 00:02:57,260 definirati vlastite funkcionalnosti, mogu možete definirati svoje vlastite funkcije. 59 00:02:57,260 --> 00:03:01,710 Dakle, iako smo dobili Glavni by automatski besplatno, možemo izjaviti 60 00:03:01,710 --> 00:03:02,730 naše vlastite funkcije. 61 00:03:02,730 --> 00:03:05,670 >> Tako ću napraviti malo mjesta ovdje do vrha, a ja ću da objavim 62 00:03:05,670 --> 00:03:08,210 vlastita funkcija koja će izgledati malo čudno u početku, ali vratit ćemo se 63 00:03:08,210 --> 00:03:09,400 natrag na to ne zadugo. 64 00:03:09,400 --> 00:03:12,310 Ja ću reći prazninu, čime ukazuje na ovu funkciju obavlja 65 00:03:12,310 --> 00:03:16,040 nešto, ima nuspojava, ali ne vrati nešto za mene u 66 00:03:16,040 --> 00:03:18,810 isti način na koji se int ili dobili niz sama radi. 67 00:03:18,810 --> 00:03:22,450 I ja ću dati ovu funkciju Naziv ispisa ime, a ja ću 68 00:03:22,450 --> 00:03:26,470 odrediti da taj momak je idući u uzeti string, a ja ću nazvati da 69 00:03:26,470 --> 00:03:27,600 string ime. 70 00:03:27,600 --> 00:03:32,100 Mogao bih to nazvao što želim, ali sam Želite moj broj da se self-dokumentiranje. 71 00:03:32,100 --> 00:03:34,770 Drugim riječima, ako je netko od vas bili su u otvorite ovu datoteku i pročitati, da bi 72 00:03:34,770 --> 00:03:39,020 vrsta zaključiti iz imena da Ulaz koju ulogu je trebao igrati. 73 00:03:39,020 --> 00:03:42,270 >> A sada ispod toga, ja ću otvoriti kovrčava brace i zatvorenog kovrčava brace, 74 00:03:42,270 --> 00:03:47,140 i tako primijetiti da sam slijedio isti Uzorak na linijama četiri do sedam godina, kao 75 00:03:47,140 --> 00:03:51,622 Pratio sam za dobar tjedan plus Sada između, recimo, devet linija i 76 00:03:51,622 --> 00:03:53,400 14 koja čine glavna. 77 00:03:53,400 --> 00:03:56,160 Drugim riječima, ispisali ime je još jedna funkcija. 78 00:03:56,160 --> 00:03:58,990 Sada, prevodilac neće znati Nazivaju to stvar automatski 79 00:03:58,990 --> 00:04:02,670 jer sam doslovno samo ga izmislili, ali to će znati uvijek nazvati glavna 80 00:04:02,670 --> 00:04:08,710 automatski, a zatim, naravno, u linija 13, pozivam svoju funkciju. 81 00:04:08,710 --> 00:04:12,805 I zato sam proglasila da je funkcija gore na liniji četiri prije glavnih, 82 00:04:12,805 --> 00:04:16,579 ovo će naučiti prevodilac ono citat, završen citat, "print Naziv" 83 00:04:16,579 --> 00:04:18,140 znači i što bi trebalo učiniti. 84 00:04:18,140 --> 00:04:22,700 Dakle, ja sam nekako daje joj novu običaj blokirati u kontekstu, recimo, ispočetka. 85 00:04:22,700 --> 00:04:27,240 >> Dakle, ovdje, ja mogu staviti da je vrlo čest ili ponavljajući uzorak koda držim 86 00:04:27,240 --> 00:04:32,300 piše u razredu, printf Pozdrav% s,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Što želim staviti ovdje? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Dakle, želim mu ime u tom kontekstu. 91 00:04:41,420 --> 00:04:43,440 Dakle, primijetite malo dihotomiji ovdje. 92 00:04:43,440 --> 00:04:47,680 Jer sam izjavljujući svoju funkciju i ja donekle arbitrarno zove 93 00:04:47,680 --> 00:04:50,880 to ispisati ime, i zato sam naveden u zagradi da je to 94 00:04:50,880 --> 00:04:55,035 Funkcija traje jedan argument, vrsti što je string - tako da je riječ 95 00:04:55,035 --> 00:05:00,010 ili izraz ili nešto slično - i Zovem tu tvrdnju ime, da 96 00:05:00,010 --> 00:05:04,770 znači samo varijabla koja je u Opseg, da se tako izrazim, je ime. 97 00:05:04,770 --> 00:05:07,780 >> S postoji samo između onoga što dva vitičastim zagradama, naravno? 98 00:05:07,780 --> 00:05:12,990 Pa stvarno, baš kao i linije od 10 do 14, tako da baš kao u ponedjeljak ne mogu koristiti 99 00:05:12,990 --> 00:05:17,650 S, ali ono što ja mogu učiniti je proći S ispisa u imenu. 100 00:05:17,650 --> 00:05:21,030 Ispis ime samo tako dogodi da ga daju alias, sinonim, nadimak, 101 00:05:21,030 --> 00:05:24,400 nazivajući je ime, a sada to koristi u ovoj liniji. 102 00:05:24,400 --> 00:05:26,840 Pa sad neka mi spasiti ovo, zoom out. 103 00:05:26,840 --> 00:05:31,250 >> Dopustite mi da ići naprijed i učiniti pozdraviti. 104 00:05:31,250 --> 00:05:32,400 Izgleda dobro. 105 00:05:32,400 --> 00:05:36,110 Nije ispljune nikakve pogreške. . / Pozdrav Enter. 106 00:05:36,110 --> 00:05:37,020 Što je moje ime? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 I Pozdrav David. 109 00:05:39,270 --> 00:05:41,820 Dakle, nije sve što je uzbudljivo, ali samo misliti sada. 110 00:05:41,820 --> 00:05:44,310 Sada imaju isti sastojak kao što smo učinili u nule do 111 00:05:44,310 --> 00:05:45,420 napraviti svoje funkcije. 112 00:05:45,420 --> 00:05:46,770 >> No, tu je malo izazov. 113 00:05:46,770 --> 00:05:50,620 Pretpostavimo da nisam stvarno mislio to kroz i ja zapravo ne 114 00:05:50,620 --> 00:05:54,250 stvarno razmišljam o tome pisao koji funkcioniraju ovdje. 115 00:05:54,250 --> 00:05:55,420 Osjeća se savršeno razumno. 116 00:05:55,420 --> 00:05:58,440 U nule ne postoji pojam za mjesto u skripti. 117 00:05:58,440 --> 00:06:00,670 Ti bi mogao staviti jedan ovdje, jedan ovdje, jedan je ovdje, a to bi moglo pokrenuti 118 00:06:00,670 --> 00:06:03,310 gledati malo neuredan, ako ne ga nokautirati uredno, ali to ne 119 00:06:03,310 --> 00:06:05,910 obzira gdje se fizički skripte su na zaslonu. 120 00:06:05,910 --> 00:06:09,660 Nažalost, u C - a to je za razliku od jezika kao što su Java i Python 121 00:06:09,660 --> 00:06:13,600 i drugima koji možda ćete biti upoznati s - žalost u C, kako bi se 122 00:06:13,600 --> 00:06:15,830 važno jer gledati ono što je će se dogoditi sada. 123 00:06:15,830 --> 00:06:19,010 >> Zadana funkcija koja će izvršiti je, naravno, glavna. 124 00:06:19,010 --> 00:06:22,290 Glavni će nazvati ispisa ime na linije osam, ali na žalost, 125 00:06:22,290 --> 00:06:26,660 prevodilac neće ni znati da je ime ispisa postoji sve dok se to dobiva na liniji 11, 126 00:06:26,660 --> 00:06:28,520 što nažalost će biti prekasno. 127 00:06:28,520 --> 00:06:30,660 Tako ćemo napraviti da pozdravi. 128 00:06:30,660 --> 00:06:32,950 A sada osuditi, dvije pogreške generiraju. 129 00:06:32,950 --> 00:06:36,050 Pa sad neka mi dođite do vrlo Prvo, kao što smo uvijek biste trebali učiniti, a 130 00:06:36,050 --> 00:06:39,560 primijetiti da viče na mene, "Implicitna izjava o funkciji 131 00:06:39,560 --> 00:06:40,540 ispisivati ​​ime. " 132 00:06:40,540 --> 00:06:43,860 >> Tako smo vidjeli ovu poruku prije, implicitna izjava o funkciji. 133 00:06:43,860 --> 00:06:48,080 Kad smo vidjeli da je kakve pogreške? 134 00:06:48,080 --> 00:06:49,180 Kad nisam uključuju knjižnicu. 135 00:06:49,180 --> 00:06:53,470 Ako sam zaboravio cs50.h i ja bih se vikne za dobiti string ili dobiti int. 136 00:06:53,470 --> 00:06:56,880 No, u ovom slučaju, ova funkcija ispisa ime nije u knjižnici, zar ne? 137 00:06:56,880 --> 00:07:00,230 To je doslovno u ovoj datoteci, kako ono što je stvarno problem? 138 00:07:00,230 --> 00:07:04,660 >> Pa nažalost u C, što vas vodi tako nevjerojatno doslovno da ako 139 00:07:04,660 --> 00:07:08,640 Želite funkciju pod nazivom ispis na ime postoji, bilo morati provesti 140 00:07:08,640 --> 00:07:11,940 koji funkcioniraju na samom vrhu code, tako da je dostupan na niže 141 00:07:11,940 --> 00:07:15,070 funkcionira, ali iskreno, da postane neuredan vrlo brzo. 142 00:07:15,070 --> 00:07:18,160 Osobno, volim stavljajući glavni prva jer tada je vrlo jasno što je ovo 143 00:07:18,160 --> 00:07:19,890 Program radi na prvi pogled. 144 00:07:19,890 --> 00:07:23,290 A plus, možete dobiti u čudnom kutu slučajevi u kojima, ako x želi zvati 145 00:07:23,290 --> 00:07:27,530 y y, ali bi se moglo nazvati x, samo fizički zapravo ne mogu staviti jedan 146 00:07:27,530 --> 00:07:28,540 iznad drugoga. 147 00:07:28,540 --> 00:07:31,230 >> No, ispostavilo se u C, možemo riješiti ovaj vrlo jednostavno. 148 00:07:31,230 --> 00:07:34,010 Ja ću staviti malo prostora ovdje, a ja samo idem 149 00:07:34,010 --> 00:07:38,170 preventivno, doduše ponešto redundantly, ide učiti 150 00:07:38,170 --> 00:07:42,320 Prevodilac da postoji funkcija zove ispisa ime, to traje niz, 151 00:07:42,320 --> 00:07:46,330 i ja ću nazvati to ime zarez. 152 00:07:46,330 --> 00:07:50,220 >> Dakle, to je sada u skladu četiri, koje smo nisu vidjeli prije, je izjava 153 00:07:50,220 --> 00:07:53,940 od imena funkcije ispisa, ali to je samo Obećanje da će se ova funkcija 154 00:07:53,940 --> 00:07:56,620 na kraju se definirati, na kraju biti proveden. 155 00:07:56,620 --> 00:08:00,180 To sada ne mogu ostaviti na miru, jer Sada je to definicija, 156 00:08:00,180 --> 00:08:04,090 Provedba, vrsta posljednjih milju provedbe ove 157 00:08:04,090 --> 00:08:05,130 određenu funkciju. 158 00:08:05,130 --> 00:08:08,450 Pa iskreno to je glupo, to je neugodno, ali ovaj je put C, a to je 159 00:08:08,450 --> 00:08:12,050 jer vam se vrlo doslovno i, kao što računalo treba iskreno, 160 00:08:12,050 --> 00:08:16,020 samo da je točno ono što vam reći da učiniti, i to tako da naručivanje je važno. 161 00:08:16,020 --> 00:08:18,940 >> Dakle, imajte to na umu, a opet početi primijetiti ponavljanje obrazaca. 162 00:08:18,940 --> 00:08:21,850 Tečajevi su da će, ako se ne već, početi susret poruke 163 00:08:21,850 --> 00:08:24,700 kao što je ovaj koji na prvi pogled izgleda potpuno zagonetan, ali ako počnete 164 00:08:24,700 --> 00:08:29,000 tražiti te ključne riječi kao što su "Implicitna deklaracija", spominjanje 165 00:08:29,000 --> 00:08:32,380 Funkcija u ovom slučaju - i iskreno, da ponekad čak i dobiti mali zeleni 166 00:08:32,380 --> 00:08:35,010 mrkva simbol koji vam govori gdje problem je vjerojatno - 167 00:08:35,010 --> 00:08:40,980 možete početi raditi svoj put kroz još neviđenih poruke o pogreškama. 168 00:08:40,980 --> 00:08:45,860 Sva pitanja o pisanju svoje vlastitu funkciju na ovaj način? 169 00:08:45,860 --> 00:08:47,540 >> Učinimo nešto što je malo više uvjerljiv. 170 00:08:47,540 --> 00:08:51,760 Umjesto da samo učiniti nešto što je nuspojava ispis, pusti me 171 00:08:51,760 --> 00:08:55,340 naprijed i spremanje nove datoteke, a mi ćemo nazovite ovaj positive.c, iako je 172 00:08:55,340 --> 00:08:57,600 će biti malo drugačije u odnosu na prošli put. 173 00:08:57,600 --> 00:09:01,910 I ovaj put, želim ponovno provesti Prošli put je positive.C primjer, koji 174 00:09:01,910 --> 00:09:04,430 je natjerati korisnika da daju ja pozitivni cijeli broj. 175 00:09:04,430 --> 00:09:07,280 Ali morao sam se služiti dobili int zadnji put. 176 00:09:07,280 --> 00:09:10,780 Zar ne bi bilo lijepo ako postoji Funkcija se zove dobili pozitivan int 177 00:09:10,780 --> 00:09:13,610 da sam samo mogao outsource ove komad funkcionalnost? 178 00:09:13,610 --> 00:09:16,480 Dakle, razlika je ovdje ćemo provedbu dobili pozitivan int, ali za razliku od 179 00:09:16,480 --> 00:09:20,330 print ime koje je imao nuspojavu - to nisu se vratili nešto mi se 180 00:09:20,330 --> 00:09:21,710 broj ili niz - 181 00:09:21,710 --> 00:09:25,510 dobiti pozitivno int je, naravno, ide na vrate, nadamo se, pozitivno int. 182 00:09:25,510 --> 00:09:26,170 >> Tako ćemo učiniti. 183 00:09:26,170 --> 00:09:30,840 Uključite cs50.h, uključuju standardni io.h. 184 00:09:30,840 --> 00:09:33,520 Int main prazninu. 185 00:09:33,520 --> 00:09:42,160 A sada ovdje, ja ću ići naprijed i recimo int, zovu n, jednak 186 00:09:42,160 --> 00:09:44,270 dobili pozitivan int. 187 00:09:44,270 --> 00:09:49,080 I baš kao što se int već postoji jer je osoblje ga je napisao, idem 188 00:09:49,080 --> 00:09:53,950 pretpostaviti za trenutak da biste dobili Pozitivan int postoji, a sad se idem 189 00:09:53,950 --> 00:09:57,730 ići naprijed i reći: printf, hvala za% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Pa sad, ako sam sastaviti ovaj program, što će se dogoditi u mom terminala 192 00:10:07,770 --> 00:10:09,075 prozor na dnu ekrana? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Ja ću vjerojatno dobiti koji istu grešku kao i prije. 195 00:10:13,900 --> 00:10:14,570 Dakle, pokušajmo to. 196 00:10:14,570 --> 00:10:16,450 Napravite pozitivan. 197 00:10:16,450 --> 00:10:19,900 I opet, implicitno izjava funkcije, dobili pozitivan int. 198 00:10:19,900 --> 00:10:21,970 Dakle, možemo riješiti ovaj u nekoliko načina. 199 00:10:21,970 --> 00:10:27,310 Ja ću držati ga jednostavno i jednostavno stavio moju izjavu ovdje i dobiti 200 00:10:27,310 --> 00:10:28,120 Pozitivan int. 201 00:10:28,120 --> 00:10:29,720 Trebam tzv potpis. 202 00:10:29,720 --> 00:10:32,410 Potpis samo se odnosi na estetiku 203 00:10:32,410 --> 00:10:34,090 prva linija programa. 204 00:10:34,090 --> 00:10:37,420 Dakle, ono što bi trebao dobiti pozitivno int povratak? 205 00:10:37,420 --> 00:10:37,970 >> Dakle int. 206 00:10:37,970 --> 00:10:41,540 Mislim idealno, da bi se vratili nešto kao pozitivan int, ali to 207 00:10:41,540 --> 00:10:42,160 ne postoji. 208 00:10:42,160 --> 00:10:45,280 Nismo vidjeli da je među našim podacima vrste, tako da se moramo nositi s 209 00:10:45,280 --> 00:10:47,170 Činjenica da imamo vrlo malo vrste podataka raditi. 210 00:10:47,170 --> 00:10:50,360 No, možemo se vratiti na int i samo Vjerujem da će biti pozitivan. 211 00:10:50,360 --> 00:10:52,690 To će se zvati dobili pozitivan int. 212 00:10:52,690 --> 00:10:55,122 >> A sada kako o svojim argumentima? 213 00:10:55,122 --> 00:10:56,440 Da li je potrebno bilo koji ulaz? 214 00:10:56,440 --> 00:10:58,280 Zar treba bilo koji ulaz? 215 00:10:58,280 --> 00:11:00,900 Dakle, to ne treba znati unaprijed ništa. 216 00:11:00,900 --> 00:11:03,220 Nabavite string ne, dobili int ne. 217 00:11:03,220 --> 00:11:06,430 Printf ne - to treba imati neke Ulaz prošao u nju - i print ime 218 00:11:06,430 --> 00:11:09,020 potreban neki ulaz, ali se Pozitivan int ne. 219 00:11:09,020 --> 00:11:11,530 Tako ću se izrijekom Vas prazninu prevodilac. 220 00:11:11,530 --> 00:11:13,470 Void je odsutnost bilo što drugo. 221 00:11:13,470 --> 00:11:17,990 Dakle void znači ništa ne ide unutra od onih zagradama, zarez. 222 00:11:17,990 --> 00:11:20,840 >> I sada na dnu moje datoteke - i opet sam samo vrsta analnog 223 00:11:20,840 --> 00:11:23,640 ovdje stavljajući glavni na vrhu, koji je dobra praksa, jer ovaj način, 224 00:11:23,640 --> 00:11:26,220 bilo vi ili netko drugi Otvara datoteku, na 225 00:11:26,220 --> 00:11:27,400 Funkcionalnost je tamo. 226 00:11:27,400 --> 00:11:29,660 Možete roniti u jednom od trga. 227 00:11:29,660 --> 00:11:34,190 Dakle, sada ću na sličan način, dobili pozitivan int prazninu, ali nisam 228 00:11:34,190 --> 00:11:35,430 će pogoditi zarez sada. 229 00:11:35,430 --> 00:11:38,280 Idem otvoriti vitičastim zagradama, i sad moram posuditi 230 00:11:38,280 --> 00:11:39,700 neke ideje od ponedjeljka. 231 00:11:39,700 --> 00:11:44,450 >> Dakle, ako se sjećate, mi nešto učinio željeli učiniti sljedeće dok 232 00:11:44,450 --> 00:11:45,830 nešto što je istina. 233 00:11:45,830 --> 00:11:46,630 I što mi je činiti? 234 00:11:46,630 --> 00:11:51,540 Učinio sam nešto poput daju ja pozitivni cijeli broj, 235 00:11:51,540 --> 00:11:52,430 Malo brz. 236 00:11:52,430 --> 00:11:53,540 Dobro bi bilo riječi koje želim. 237 00:11:53,540 --> 00:11:54,960 A onda sam se što? 238 00:11:54,960 --> 00:11:59,530 Int n jednak dobili int, Nema argumenata za njega. 239 00:11:59,530 --> 00:12:00,550 >> I primijetiti razliku. 240 00:12:00,550 --> 00:12:04,680 Kada zovete funkciju, kada koristite funkcija, ne stavi u praznini. 241 00:12:04,680 --> 00:12:08,570 Vi samo napraviti da kada proglašenja funkcija, učeći prevodilac ono 242 00:12:08,570 --> 00:12:09,780 to bi trebalo očekivati. 243 00:12:09,780 --> 00:12:11,650 Dakle, ne morate staviti poništiti tu sebe. 244 00:12:11,650 --> 00:12:12,940 >> I sad ono što je moje stanje? 245 00:12:12,940 --> 00:12:19,670 I, n nije jednak pozitivan, ali to je samo pseudo-koda. 246 00:12:19,670 --> 00:12:22,530 Pa kako sam izraziti više čisto? 247 00:12:22,530 --> 00:12:24,090 I niži od ili jednak nuli. 248 00:12:24,090 --> 00:12:26,250 Pa opet, primijetit možete učiniti manje od ili jednako. 249 00:12:26,250 --> 00:12:28,100 Iako je dva odvojena simbola, možete to učiniti na 250 00:12:28,100 --> 00:12:29,350 tipkovnica kao takva. 251 00:12:29,350 --> 00:12:33,950 >> No, tu je još uvijek bug koji Zeznuo sam zadnji put previše. 252 00:12:33,950 --> 00:12:36,950 Imam proglasiti - 253 00:12:36,950 --> 00:12:37,460 točno. 254 00:12:37,460 --> 00:12:39,640 Imam proglasiti n izvana od petlje. 255 00:12:39,640 --> 00:12:44,180 Dakle, trebam staviti n ovdje, a ja ne želite ga ponovno jave na ovdje 256 00:12:44,180 --> 00:12:46,480 ne bih ja dobiti novu varijablu. 257 00:12:46,480 --> 00:12:48,860 Ja samo želim da se stavi vrijednost ovdje. 258 00:12:48,860 --> 00:12:54,320 >> I sada nisam posve gotovi ovdje. 259 00:12:54,320 --> 00:12:57,290 Dopustite mi da se ispred sebe i pretvarati se da sam gotov. 260 00:12:57,290 --> 00:13:01,220 Napravite pozitivan, a sada tu je novi pogreške. 261 00:13:01,220 --> 00:13:04,550 Kontrola dosegne kraj non-void funkcija. 262 00:13:04,550 --> 00:13:07,760 Dakle, novi pogrešci, ali ako ste ljubazni od zafrkavati, osim jedni od riječi, njoj 263 00:13:07,760 --> 00:13:09,620 Vjerojatno aludira na ono što je pogrešno. 264 00:13:09,620 --> 00:13:11,240 >> Kontrola. 265 00:13:11,240 --> 00:13:14,250 Kontrola samo znači da redoslijedu operacija u programu. 266 00:13:14,250 --> 00:13:16,510 Računalo je u kontroli i nešto je pošlo po zlu. 267 00:13:16,510 --> 00:13:18,510 Tako da dosegne kraj non-void funkcija. 268 00:13:18,510 --> 00:13:21,760 Što je funkcija je očito koji se odnosi na? 269 00:13:21,760 --> 00:13:24,790 Što je funkcija non-void? 270 00:13:24,790 --> 00:13:27,400 Dakle, dobili pozitivan int, a malo zbunjujuće u tom bunaru, 271 00:13:27,400 --> 00:13:29,010 to je vrsta prazninu. 272 00:13:29,010 --> 00:13:33,070 Ona ima specifikaciju prazninu po svojoj Argumenti, ali njegov izlaz će se 273 00:13:33,070 --> 00:13:34,540 biti tipa n. 274 00:13:34,540 --> 00:13:37,260 Dakle, riječ je o lijevoj tzv. vrsta povrata. 275 00:13:37,260 --> 00:13:40,320 Riječ iznutra ovdje je nula ili više argumenata 276 00:13:40,320 --> 00:13:41,970 da funkcija potrebno. 277 00:13:41,970 --> 00:13:44,060 >> Dakle, što trebam učiniti? 278 00:13:44,060 --> 00:13:47,650 U ovom trenutku u mom kodu, linije 21, gdje treperi brz sada, ja 279 00:13:47,650 --> 00:13:51,430 imati pozitivan int unutar varijable zove n. 280 00:13:51,430 --> 00:13:55,200 Kako ću ga vratiti u glavni izbornik? 281 00:13:55,200 --> 00:13:55,960 Doslovno. 282 00:13:55,960 --> 00:13:59,320 Povratak n-zarez. 283 00:13:59,320 --> 00:14:04,090 >> Dakle, baš kao što Colton vratio komad Rad s odgovorom na mene ispuštanjem 284 00:14:04,090 --> 00:14:07,020 taj komad papira u malom crnom kutija na stolu, to učiniti u 285 00:14:07,020 --> 00:14:10,100 broj, što doslovno samo pisati, vratite n, a to je kao da su Colton 286 00:14:10,100 --> 00:14:12,140 predaje mi nešto fizički natrag. 287 00:14:12,140 --> 00:14:15,870 U ovom slučaju, ono što se događa je dobiti Pozitivan int ide na ruku ' 288 00:14:15,870 --> 00:14:19,220 što je vjerojatno pozitivno cijeli kome? 289 00:14:19,220 --> 00:14:21,380 Odakle ta vrijednost završiti? 290 00:14:21,380 --> 00:14:29,080 To završi u ovom varijablu, n, a onda ćemo nastaviti s linije devet. 291 00:14:29,080 --> 00:14:31,920 >> Dakle, drugim riječima, kako je operacija, ovaj program počinje 292 00:14:31,920 --> 00:14:34,430 izvršenja i prevodilac shvaća Oh, želite knjižnicu? 293 00:14:34,430 --> 00:14:36,310 Pusti me zgrabiti što je unutra to. 294 00:14:36,310 --> 00:14:37,750 Oh, želite standardnu ​​IO knjižnice? 295 00:14:37,750 --> 00:14:39,660 Pusti me zgrabiti što je unutra to. 296 00:14:39,660 --> 00:14:44,510 Što prevodilac kažem sebi kada pogodi line četiri? 297 00:14:44,510 --> 00:14:47,980 Oh, što je obećao provesti Funkcija zove se pozitivno, ali 298 00:14:47,980 --> 00:14:50,820 vratit ćemo se kasnije, nešto uz one linije. 299 00:14:50,820 --> 00:14:53,450 >> Int main void samo znači evo hrabrosti mog programa. 300 00:14:53,450 --> 00:14:54,990 Linija je samo sedam kovrčava brace. 301 00:14:54,990 --> 00:14:59,540 Line osam govori na lijevoj strani, daju mene 32 bita za cijeli broj, nazovite ga n. 302 00:14:59,540 --> 00:15:02,160 Na desnoj strani, to je govoreći dobili pozitivan int. 303 00:15:02,160 --> 00:15:07,120 Sada ćemo pauzirati tu priču, jer sada Ne držati se kreće moj pokazivač prema dolje. 304 00:15:07,120 --> 00:15:11,720 Moj kursor sada ide dolje jer Sada se pozitivno int izvršava. 305 00:15:11,720 --> 00:15:13,100 Int n je izjavio. 306 00:15:13,100 --> 00:15:14,040 Učinite sljedeće. 307 00:15:14,040 --> 00:15:16,090 Printf mi daje pozitivan cijeli broj. 308 00:15:16,090 --> 00:15:19,740 >> Dobiti int od korisnika, spremite ga na n, a možda to opet i opet. 309 00:15:19,740 --> 00:15:23,010 Ta petlja znači da se to kod might izvršavanje gore i dolje kao što je ovaj opet 310 00:15:23,010 --> 00:15:25,810 i opet, ali kad je konačno korisnik surađuje i daje mi pozitivno 311 00:15:25,810 --> 00:15:31,750 int, sam pogodio crtu 21, na kojem trenutku broj se vrati, a koji 312 00:15:31,750 --> 00:15:34,280 trebao sam naglasiti sada? 313 00:15:34,280 --> 00:15:35,070 Devet. 314 00:15:35,070 --> 00:15:39,010 Kontrola, da se tako izrazim, vraća da se postroje devet. 315 00:15:39,010 --> 00:15:40,650 To je linija koja je sada zadužen. 316 00:15:40,650 --> 00:15:43,250 >> Dakle, to je ono što se događa svima ovaj put ispod poklopca motora, ali 317 00:15:43,250 --> 00:15:46,480 kad smo koristiti funkcije kao što printf ili čak dobiti niz koji je netko drugi 318 00:15:46,480 --> 00:15:50,600 napisao za vas je kontrola se predao off tuđe broj linija 319 00:15:50,600 --> 00:15:51,290 po redak po redak. 320 00:15:51,290 --> 00:15:53,770 To se jednostavno nismo mogli vidjeti, a mi stvarno ne mogu ga prikazuju u ovom 321 00:15:53,770 --> 00:15:57,620 Program jer je to u nekim drugim file na tvrdom disku 322 00:15:57,620 --> 00:16:00,000 bez znanja nas. 323 00:16:00,000 --> 00:16:02,100 Tako ćemo teka i pokrenuti ovo sada. 324 00:16:02,100 --> 00:16:03,890 >> Napravite pozitivan. 325 00:16:03,890 --> 00:16:05,260 Sastaviti, to je napredak. 326 00:16:05,260 --> 00:16:06,650 . / Pozitivno. 327 00:16:06,650 --> 00:16:08,020 Daj mi pozitivan cijeli broj. 328 00:16:08,020 --> 00:16:08,800 Ajmo biti teško. 329 00:16:08,800 --> 00:16:10,430 Negativan 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Dajmo mu 50. 332 00:16:13,370 --> 00:16:18,100 Hvala na 50, tako da i kontrole sada se vratio. 333 00:16:18,100 --> 00:16:21,750 Bilo kakva pitanja, a zatim, na to? 334 00:16:21,750 --> 00:16:23,180 Da? 335 00:16:23,180 --> 00:16:25,630 >> [Nečujno]. 336 00:16:25,630 --> 00:16:26,130 >> Reci ponovno. 337 00:16:26,130 --> 00:16:27,860 Oh, dobro pitanje. 338 00:16:27,860 --> 00:16:31,100 Dakle, možda ćete primijetiti da je paralelu Nekako sam rezanje kutak na. 339 00:16:31,100 --> 00:16:35,420 U skladu 12, pričam, dobili pozitivan int vraća int, ali da je isto 340 00:16:35,420 --> 00:16:39,660 Logika, to je sada logično je da će se u linije šest, govorim da je glavni vrati 341 00:16:39,660 --> 00:16:44,040 int, ali ono što imamo nije imali u bilo kojem od naših programa? 342 00:16:44,040 --> 00:16:46,470 Nikada nismo imali spomenuti ova ključna riječ povratka. 343 00:16:46,470 --> 00:16:49,970 >> Tako ispada da je u C, najmanje verzija to da smo pomoću 344 00:16:49,970 --> 00:16:55,750 je u 1999, tehnički, to je događa za vas automatski. 345 00:16:55,750 --> 00:16:59,300 Bilo kada možete provesti program, a vi implementirati funkciju zove glavna, 346 00:16:59,300 --> 00:17:04,230 da je funkcija će vratiti nulu Zadana ako ne drugačije, 347 00:17:04,230 --> 00:17:05,849 i nula je samo konvencija. 348 00:17:05,849 --> 00:17:09,430 Svijet vraća nulu time pokazuje da je sve dobro, 349 00:17:09,430 --> 00:17:13,040 učinkovito ostavljajući nas s četiri milijarde moguće stvari koje bi mogle poći 350 00:17:13,040 --> 00:17:17,530 krivo, tako da ako se vratimo jedno, da Možda se pokazalo da je kod to znači da je 351 00:17:17,530 --> 00:17:18,310 što je pošlo po zlu. 352 00:17:18,310 --> 00:17:20,589 Mogli bismo se vratiti dva, što znači ova druga stvar je pošlo po zlu. 353 00:17:20,589 --> 00:17:23,440 Mogli bismo se vratiti četiri milijarde, što Možda je ovo druga stvar je pošlo po zlu. 354 00:17:23,440 --> 00:17:27,170 >> A ako sada razmišljati o svom PC ili Mac, možda podsjetiti da je 355 00:17:27,170 --> 00:17:29,610 Ponekad ste dobili tajnovite poruke o pogrešci od softvera koji ste 356 00:17:29,610 --> 00:17:32,650 korištenju, a ponekad ima ljudsko Opis friendly, ali postoji 357 00:17:32,650 --> 00:17:35,265 Često kod ili broj na zaslonu? 358 00:17:35,265 --> 00:17:37,800 Ako se to ne dolazi u obzir, samo držati oko za to. 359 00:17:37,800 --> 00:17:40,790 To je obično ono što ti kodovi se odnosi. 360 00:17:40,790 --> 00:17:44,200 Oni su uključeni u Microsoft Word i drugim programima, tako da ako podnese 361 00:17:44,200 --> 00:17:48,850 bug Izvješće s tvrtkom, možete im reći, oh, ja dobio broj 45 pogrešci. 362 00:17:48,850 --> 00:17:51,750 A neki programer vratiti na mjestu može tražiti da se u njegov ili njezin 363 00:17:51,750 --> 00:17:54,940 broj i reći, oh, to je zato što sam napravio Ovaj bug, a to je razlog zašto je korisnik 364 00:17:54,940 --> 00:17:56,240 dobio ovu poruku. 365 00:17:56,240 --> 00:17:59,490 >> Ali iskreno, to je samo malo odvlače pažnju i pomalo zamorno 366 00:17:59,490 --> 00:18:02,130 zaključiti da, barem na našoj Prvih nekoliko programa, pa smo 367 00:18:02,130 --> 00:18:02,970 su ga izostaviti. 368 00:18:02,970 --> 00:18:07,450 No sve ovo vrijeme svaki tvoj Glavna funkcija potajno je ovo 369 00:18:07,450 --> 00:18:11,600 linija automatski dodani za vas prevodilac, samo na konvenciji 370 00:18:11,600 --> 00:18:13,172 uštedjeti malo vremena. 371 00:18:13,172 --> 00:18:14,620 >> [Nečujno]. 372 00:18:14,620 --> 00:18:16,250 >> Ne treba ga uključiti u glavni. 373 00:18:16,250 --> 00:18:16,700 To je u redu. 374 00:18:16,700 --> 00:18:20,260 Vi ne morate ga uključiti ako su provedbu funkcije kao što je ovaj. 375 00:18:20,260 --> 00:18:22,850 Inače funkciju stana se ne bi išlo. 376 00:18:22,850 --> 00:18:24,480 No, u glavnom, to nije potrebno. 377 00:18:24,480 --> 00:18:28,450 U tjedan ili dva, mi ćemo početi dobivanje u tu naviku jednom želimo početi 378 00:18:28,450 --> 00:18:29,690 označava pogreške. 379 00:18:29,690 --> 00:18:32,550 Stvarno dobro pitanje. 380 00:18:32,550 --> 00:18:36,880 >> Tako brzo verbalni pauza napomenuti da ovaj petak, nećemo se ručao 381 00:18:36,880 --> 00:18:39,980 po sebi, ali mi ćemo se na večeri s Neki od studenata i osoblja. 382 00:18:39,980 --> 00:18:42,940 Ako želite da nam se pridruže, osjećam slobodno ići na cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 18:00 ovog petka. 384 00:18:45,030 --> 00:18:47,990 Prostor je, kao i uvijek, ograničeni, ali ćemo i dalje radi to na gotovo 385 00:18:47,990 --> 00:18:51,420 tjedno osnovi, ako je prostor istekne ovaj tjedan. 386 00:18:51,420 --> 00:18:56,160 >> Tako roman u koji smo stali na Ponedjeljak je bio da se žice može zapravo 387 00:18:56,160 --> 00:19:00,520 se indeksiraju u, što znači da samo ti može dobiti na prvog znaka, 388 00:19:00,520 --> 00:19:03,770 Drugi lik, treći lik i tako dalje, jer možete 389 00:19:03,770 --> 00:19:07,860 učinkovito misliti nizu, kao što je Pozdrav, kao što je u ovom slučaju pet 390 00:19:07,860 --> 00:19:09,670 slova unutar kutija. 391 00:19:09,670 --> 00:19:13,370 A možete dobiti na svakoj od onih kutija s onim što smo učinili sintakse 392 00:19:13,370 --> 00:19:15,230 predstaviti u ponedjeljak? 393 00:19:15,230 --> 00:19:16,760 Ti četvornih nosači na tipkovnici. 394 00:19:16,760 --> 00:19:18,980 To jednostavno znači ići na mjesto nula. 395 00:19:18,980 --> 00:19:22,840 >> Počinjemo brojati od nule, tako da nosač nula označava h, noseći jedan 396 00:19:22,840 --> 00:19:25,170 znači e, i tako dalje. 397 00:19:25,170 --> 00:19:28,490 I tako cijelo vrijeme kad smo bili pomoću žice i upisivanjem u "Hello" 398 00:19:28,490 --> 00:19:31,250 i "svijet" i druge stvari na zaslon, to je bila pohranjena 399 00:19:31,250 --> 00:19:32,820 u kutije kao što je ovaj. 400 00:19:32,820 --> 00:19:33,370 I uzeti pogodak. 401 00:19:33,370 --> 00:19:37,470 Što svaka kutija predstavljaju fizički unutar vašeg računala? 402 00:19:37,470 --> 00:19:38,250 >> [Nečujno]. 403 00:19:38,250 --> 00:19:39,150 >> Nažalost? 404 00:19:39,150 --> 00:19:39,580 >> Likovi. 405 00:19:39,580 --> 00:19:44,760 >> Dakle lik, pogotovo u slučaju nizova, a lik je samo 406 00:19:44,760 --> 00:19:46,800 osam bitova ili jednog bajta. 407 00:19:46,800 --> 00:19:49,550 Dakle, vjerojatno ste barem maglovito upoznati s činjenicom da je vaš 408 00:19:49,550 --> 00:19:50,500 Računalo ima memoriju. 409 00:19:50,500 --> 00:19:52,110 Ona ima dvije vrste memorije najmanje. 410 00:19:52,110 --> 00:19:54,810 Jedan je hard disk gdje ste spremili stvari trajno, a to je 411 00:19:54,810 --> 00:19:57,400 obično velik, tako da možete imati filmova i glazba i tako dalje. 412 00:19:57,400 --> 00:20:04,010 >> Tada imate neku drugu vrstu memorije zove RAM, R-M-, Random Access 413 00:20:04,010 --> 00:20:07,510 Memorije, a to je vrsta memorije koji se koristi kada je računalo 414 00:20:07,510 --> 00:20:11,520 prikazivati, ali ako izgubite moć ili vaš baterija umire, bilo da je pohranjen 415 00:20:11,520 --> 00:20:15,300 u RAM-u nestaje ako izgubi vlast uopce jer to nije 416 00:20:15,300 --> 00:20:16,060 uporni. 417 00:20:16,060 --> 00:20:19,120 Vi obično imaju, ovih dana, svirka toga, dva nastupa, možda i više. 418 00:20:19,120 --> 00:20:23,490 I naopako RAM-a je da je to puno puno, puno brže od tvrdih diskova 419 00:20:23,490 --> 00:20:27,390 ili čak solid state diskova ovih dana, ali to je obično skuplji, tako 420 00:20:27,390 --> 00:20:28,480 imate manje od toga. 421 00:20:28,480 --> 00:20:32,400 >> Tako je danas na razgovor stvarno se odnosi RAM se, da je tip memorije koji 422 00:20:32,400 --> 00:20:35,270 postoji samo dok se ima moć se ubacuje u računalo. 423 00:20:35,270 --> 00:20:40,530 Dakle, kada ste upisali u H-E-L-L-O, Enter na tipkovnice, H ide u jednom 424 00:20:40,530 --> 00:20:44,550 bajt RAM-a, E ide u jedan bajt RAM-a, kao što je 425 00:20:44,550 --> 00:20:45,800 Ostatak riječi. 426 00:20:45,800 --> 00:20:49,010 Tako se sjetiti što smo bili u mogućnosti učiniti posljednji put je to bilo. 427 00:20:49,010 --> 00:20:53,940 Dopustite mi da ide naprijed i otvoriti datoteku da smo pozvani string.c, a podsjetimo 428 00:20:53,940 --> 00:20:56,860 da je izgledao pomalo nešto poput ovoga. 429 00:20:56,860 --> 00:20:59,860 Dopustite mi da se zapravo vratiti i promijeniti to je točno kako je to izgledalo, 430 00:20:59,860 --> 00:21:02,654 string duljina s.. 431 00:21:02,654 --> 00:21:04,560 >> Pa pogledajte ovdje program. 432 00:21:04,560 --> 00:21:08,530 Mi uključuju CS50 knjižnicu tako da možemo koristiti dobili niz. 433 00:21:08,530 --> 00:21:11,400 Mi uključuju standardni io.h tako da možemo koristiti printf. 434 00:21:11,400 --> 00:21:13,580 Zašto mi uključiti string.h? 435 00:21:13,580 --> 00:21:16,980 Ovo je novi ponedjeljak. 436 00:21:16,980 --> 00:21:18,230 Tako smo htjeli string duljine. 437 00:21:18,230 --> 00:21:19,090 Duzina Str. 438 00:21:19,090 --> 00:21:21,470 Ljudi odlučio godina, hajdemo biti jezgrovit. 439 00:21:21,470 --> 00:21:24,290 Umjesto nazivajući ga "dužina niza," nazovimo ga "str Duzina" i neka 440 00:21:24,290 --> 00:21:28,540 Svijet lik koji se, kao i da je ono što smo dobili pristup s string.h. 441 00:21:28,540 --> 00:21:29,390 >> Ovo je poznato. 442 00:21:29,390 --> 00:21:30,320 Ovo je poznato. 443 00:21:30,320 --> 00:21:31,450 Ovo je poznato. 444 00:21:31,450 --> 00:21:32,370 To je nešto novo. 445 00:21:32,370 --> 00:21:35,420 U skladu 22 - a mi ćemo se vratiti na to, ali za sada znamo - 446 00:21:35,420 --> 00:21:37,880 i ti bi samo to znaju iz potrebe pročitajte dokumentaciju ili ako 447 00:21:37,880 --> 00:21:39,010 da je znao već C - 448 00:21:39,010 --> 00:21:41,510 dobili niz ponekad može zeznuti. 449 00:21:41,510 --> 00:21:45,130 Ako korisnik stvarno kontradiktorna ili nekooperativan, a on ili ona jednostavno 450 00:21:45,130 --> 00:21:49,450 ne upisati bilo na tipkovnici ili Kategorije toliko na tipkovnici kako 451 00:21:49,450 --> 00:21:53,760 to je veća od memorije računala, u teoriji, dobili niz mogao vratiti 452 00:21:53,760 --> 00:21:56,270 nešto drugo niz znakova. 453 00:21:56,270 --> 00:22:01,930 To bi mogao vratiti posebnu vrijednost zove NULL u svim kape, N-U-L-L, a to je 454 00:22:01,930 --> 00:22:03,390 Samo tzv Sentinel vrijednost. 455 00:22:03,390 --> 00:22:08,010 To je posebna vrijednost koja označava nešto loše dogodilo u ovom slučaju. 456 00:22:08,010 --> 00:22:10,520 To je odsutnost nizu. 457 00:22:10,520 --> 00:22:16,190 >> Dakle null sam provjeru za jednostavno, tako da, duljimo, str Duzina i 458 00:22:16,190 --> 00:22:20,230 ostale funkcije koje dolaze s C, a ukoliko oni očekuju niz ali ih prođe 459 00:22:20,230 --> 00:22:23,630 Nepostojanje nizu, ako prođe ih NULL, računalo ili program 460 00:22:23,630 --> 00:22:25,000 Samo će se srušiti zauvijek. 461 00:22:25,000 --> 00:22:25,610 To će se objesiti. 462 00:22:25,610 --> 00:22:27,250 To će se baciti neke poruku o pogrešci. 463 00:22:27,250 --> 00:22:28,690 Loše stvari će se dogoditi. 464 00:22:28,690 --> 00:22:31,130 Dakle, iako je to još uvijek Nije dobro definirana - 465 00:22:31,130 --> 00:22:33,730 to će učiniti više smisla u tjedan dana ili dvije - u skladu 22, ovo je samo 466 00:22:33,730 --> 00:22:38,790 Primjer samo obrambeni provjere pogreške samo u slučaju da jedno vrijeme od 467 00:22:38,790 --> 00:22:42,040 milijuna nešto pođe po zlu, na Barem moj program neće srušiti. 468 00:22:42,040 --> 00:22:45,960 >> Dakle, ako je ne iznosi nešto loše, Imam to za petlje, a to je 469 00:22:45,960 --> 00:22:47,710 gdje smo imali da su ostali Novi komad sintakse. 470 00:22:47,710 --> 00:22:51,580 Imam za petlju Ponavljanje iz nula na do duljine s. 471 00:22:51,580 --> 00:22:56,140 I onda ovdje, bio sam ispis iz s. Nosač ja, ali zašto sam koristiti% c sve 472 00:22:56,140 --> 00:23:00,770 Odjednom, umjesto% s čak iako je je string? 473 00:23:00,770 --> 00:23:02,110 To je znak, zar ne? 474 00:23:02,110 --> 00:23:06,560 S niz, ali s nešto nosač, a gdje sam ja nosač je nula 475 00:23:06,560 --> 00:23:10,380 ili jedan ili dva, to je pojedinac znakova u nizu, i tako za 476 00:23:10,380 --> 00:23:14,970 da, printf treba biti obaviješten da to je doista znak za očekivati. 477 00:23:14,970 --> 00:23:18,096 >> A onda se prisjetiti, što je to učinio Program zapravo učiniti? 478 00:23:18,096 --> 00:23:19,848 >> Isprintajte u stupcima. 479 00:23:19,848 --> 00:23:21,120 >> Da, točno. 480 00:23:21,120 --> 00:23:24,990 To samo tiskana riječ da ću upisati stup, jedan znak po liniji. 481 00:23:24,990 --> 00:23:26,190 Tako ćemo to opet vidjeti. 482 00:23:26,190 --> 00:23:27,810 Tako bi string. 483 00:23:27,810 --> 00:23:30,200 Sastavio OK. . / String. 484 00:23:30,200 --> 00:23:35,560 Dopustite mi tip u H-E-L-L-O, Enter, i Doista sam ga dobiti, jedan po retku. 485 00:23:35,560 --> 00:23:37,280 >> Pa neka mi učiniti jednu optimizacija ovdje. 486 00:23:37,280 --> 00:23:40,240 Ako mislite o tome, pogotovo ako je ste programirali prije, postoji 487 00:23:40,240 --> 00:23:43,340 nedvojbeno neučinkovitost u liniji 24. 488 00:23:43,340 --> 00:23:46,160 Drugim riječima, to nije nužno najbolji dizajn. 489 00:23:46,160 --> 00:23:50,200 Jednostavan, barem jednom kad zapamtite ono str Duzina je, ali to je 490 00:23:50,200 --> 00:23:52,640 radiš nešto glupo potencijalno. 491 00:23:52,640 --> 00:23:54,863 Što bi to moglo biti? 492 00:23:54,863 --> 00:23:56,280 >> [Nečujno]. 493 00:23:56,280 --> 00:23:56,800 >> Točno. 494 00:23:56,800 --> 00:24:00,340 To je provjera za duljinu s svaki put, iako 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O uvijek će da se pet znakova. 496 00:24:02,980 --> 00:24:05,490 Svaki put kroz ove petlje, pet se ne mijenja. 497 00:24:05,490 --> 00:24:08,750 Možda ću se ja povećavanjem, ali ono što je duljina s prilikom svakog 498 00:24:08,750 --> 00:24:09,690 iteracija ove petlje? 499 00:24:09,690 --> 00:24:15,810 To je pet, što je pet, što je pet, a Još sam ipak ja to pitam 500 00:24:15,810 --> 00:24:18,320 pitanje opet i opet i opet. 501 00:24:18,320 --> 00:24:20,750 Sad iskreno, računalo je tako prokleto brzo, nitko neće primijetiti 502 00:24:20,750 --> 00:24:23,780 Razlika je u ovom slučaju, ali ove vrste loših dizajnerskih odluka može 503 00:24:23,780 --> 00:24:28,330 početi zbrojiti, ako prevodilac sama ne pokušati popraviti to za vas koji 504 00:24:28,330 --> 00:24:30,630 to obično ne bi, po Barem u aparatu. 505 00:24:30,630 --> 00:24:31,540 >> Dakle, ja ću to učiniti. 506 00:24:31,540 --> 00:24:34,580 Ja ću dodati zarez nakon moja prva varijabla, ja. 507 00:24:34,580 --> 00:24:37,310 Ja ću osobno dati jedan promjenjiva, nazvavši ga n, samo 508 00:24:37,310 --> 00:24:41,330 Konvencija za brojeve, a onda sam će dodijeliti n vrijednost niza 509 00:24:41,330 --> 00:24:42,530 duljina s. 510 00:24:42,530 --> 00:24:46,060 A onda ću se promijeniti Moj uvjet je da se što? 511 00:24:46,060 --> 00:24:51,960 Ja neću promijeniti moje stanje da dok sam je manje od n. 512 00:24:51,960 --> 00:24:55,700 >> Pa sad, koliko puta sam ja provjeru duljinu s.? 513 00:24:55,700 --> 00:25:00,110 Jednom, ali to je u redu da mogu provjeriti protiv n opet i opet, jer sada oni 514 00:25:00,110 --> 00:25:03,170 Vrijednosti nisu zapravo mijenja. 515 00:25:03,170 --> 00:25:06,020 Sada za sada, samo znam da je bilo vama pozvati funkciju, postoji malo 516 00:25:06,020 --> 00:25:09,930 iznad glave, nije dovoljno da vas obeshrabri Stvarno iz ikada pomoću funkcije, ali 517 00:25:09,930 --> 00:25:12,750 osobito kad postoji linija koda kao da je - a linije će dobiti 518 00:25:12,750 --> 00:25:15,490 zanimljivije prije dugo - gdje postoji mogućnost da mislim, ako sam 519 00:25:15,490 --> 00:25:18,320 upišite ovaj kod, koliko je puta će se izvršiti? 520 00:25:18,320 --> 00:25:20,950 Vi ćete početi vidjeti tijekom vremena u Izvedbu programa može 521 00:25:20,950 --> 00:25:21,660 doista promijeniti. 522 00:25:21,660 --> 00:25:24,110 >> U stvari, jedan od problema postavlja mi smo učinili u posljednjih godina uključuje 523 00:25:24,110 --> 00:25:27,600 provedbu, kao što vam je poznato iz Tjedan nuli, alat za provjeru pravopisa, ali 524 00:25:27,600 --> 00:25:31,380 provjeru pravopisa koji je dizajniran za podršku rječnik od 150.000 plus 525 00:25:31,380 --> 00:25:32,860 Riječi koje mi daju vam dečki. 526 00:25:32,860 --> 00:25:37,100 Ti bi trebala pisati kod koji učitava te riječi u RAM, tako da u 527 00:25:37,100 --> 00:25:40,700 kutije kao što smo vidjeli na ekranu trenutak prije, a zatim jednako brzo kao ti 528 00:25:40,700 --> 00:25:43,740 može, morate biti u mogućnosti odgovoriti pitanje oblika, stoji riječ 529 00:25:43,740 --> 00:25:44,280 pogrešno? 530 00:25:44,280 --> 00:25:45,420 Je li ova riječ pogrešno? 531 00:25:45,420 --> 00:25:46,770 Je li ova riječ pogrešno? 532 00:25:46,770 --> 00:25:49,525 >> I u takvom nečem što smo učinili u posljednjih godina je to pretvorio u, 533 00:25:49,525 --> 00:25:53,500 premda na opt-u dodatnoj osnovi, natjecanje vrsta, pri čemu 534 00:25:53,500 --> 00:25:59,470 studenti koji koriste manje RAM-a i manje Vrijeme, manje CPU ciklusi, završiti 535 00:25:59,470 --> 00:26:02,640 mjehurića do vrha malo Čelnik odbora ili rangiranje koje smo stavili na 536 00:26:02,640 --> 00:26:04,770 toku je početna Kao što smo učinjeno u posljednjih nekoliko godina. 537 00:26:04,770 --> 00:26:08,100 Pa opet, potpuno opcionalno, ali to govori o mogućnosti dizajna 538 00:26:08,100 --> 00:26:11,250 koji su ispred kad počnemo izgradnju vrhu neke od tih 539 00:26:11,250 --> 00:26:14,010 osnovni građevni blokovi. 540 00:26:14,010 --> 00:26:16,780 >> Dakle, neka mi se vratiti na ovaj dijagram za Samo trenutak i otkriti nešto 541 00:26:16,780 --> 00:26:17,610 nešto više. 542 00:26:17,610 --> 00:26:21,400 To je doista string, a mi smo uzeti Prednost nekoliko knjižnica, 543 00:26:21,400 --> 00:26:25,150 standardni io.h koja ima - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, između ostalog. 546 00:26:27,860 --> 00:26:31,540 cs50.h, koji je mogao i dobiti niz int i tako dalje, string.h, koji 547 00:26:31,540 --> 00:26:32,570 Duzina je str. 548 00:26:32,570 --> 00:26:34,800 No, ispostavilo se da postoji još jedan. 549 00:26:34,800 --> 00:26:38,540 Iskreno, ima puno i puno napadača datoteke koje se deklariraju funkcije 550 00:26:38,540 --> 00:26:43,320 u knjižnicama, ali to je ctype.h zapravo će biti nešto 551 00:26:43,320 --> 00:26:46,900 prednost jer ću ići naprijed i provesti jedan 552 00:26:46,900 --> 00:26:48,120 drugi program ovdje. 553 00:26:48,120 --> 00:26:52,420 >> Dopustite mi da ići naprijed i otvoriti nešto Napisao sam unaprijed zove 554 00:26:52,420 --> 00:26:55,750 capitalize.c, i neka je uzme Pogledajte kako se to radi. 555 00:26:55,750 --> 00:27:00,340 Obavijest da sam koristeći, u ovoj verziji nje, tri poznate datoteka. 556 00:27:00,340 --> 00:27:04,110 Uočite da je u skladu 18, ja sam uzimajući liniju teksta. 557 00:27:04,110 --> 00:27:07,660 Obavijest u skladu 21, ja tvrdim da je Sljedeći kod će se 558 00:27:07,660 --> 00:27:12,170 kapitalizirati s, što je korisnik upisao u, i kako sam ja to radi? 559 00:27:12,170 --> 00:27:13,300 Pa, ja vodim - 560 00:27:13,300 --> 00:27:14,750 lekciju naučili iz posljednje vrijeme - 561 00:27:14,750 --> 00:27:18,370 Ja sam proglašenja i n i iterating više likova u nizu. 562 00:27:18,370 --> 00:27:22,720 A što je onda ovo blok Kod u skladu 24. do 27. 563 00:27:22,720 --> 00:27:24,550 radi u laik uvjete? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Mala pismo natrag. 566 00:27:29,730 --> 00:27:30,430 >> Točno. 567 00:27:30,430 --> 00:27:35,920 Ako je nosač ja - pa ako ja-og karakter s, što je specifična 568 00:27:35,920 --> 00:27:40,220 char u nizu, veći je od ili jednaka u mala i - 569 00:27:40,220 --> 00:27:42,670 podsjetiti da dvostruku ampersand znači i - 570 00:27:42,670 --> 00:27:46,810 i isti lik, i nosač i, je manji od ili jednak mala slova Z, 571 00:27:46,810 --> 00:27:50,600 to znači da je ili b ili c ili točka, točka, točka, ili z, što znači 572 00:27:50,600 --> 00:27:51,340 to je mala. 573 00:27:51,340 --> 00:27:52,900 Što želim učiniti u tom slučaju? 574 00:27:52,900 --> 00:27:55,010 Pa, ja mogu učiniti nešto šifrirano, ali 575 00:27:55,010 --> 00:27:56,160 idemo zafrkavati ove apart. 576 00:27:56,160 --> 00:28:00,210 >> Idem nazvati printf, ispisuje% c jer želim da ispišite ove 577 00:28:00,210 --> 00:28:01,580 lik na ekranu. 578 00:28:01,580 --> 00:28:06,650 I onda ću uzeti e nosača Ja, I-og lik u S, a zatim zašto 579 00:28:06,650 --> 00:28:12,330 ja radim ovaj mali trik ovdje, mala slova na minus kapitala? 580 00:28:12,330 --> 00:28:16,352 Što se to događa dati ja, općenito govoreći? 581 00:28:16,352 --> 00:28:18,600 >> [Nečujno]. 582 00:28:18,600 --> 00:28:19,390 >> Točno. 583 00:28:19,390 --> 00:28:20,860 Ja stvarno ne sjećam - 584 00:28:20,860 --> 00:28:24,390 bilo je 65 za glavnog A. Ja stvarno ne sjetiti što je mala slova, 585 00:28:24,390 --> 00:28:25,540 ali bez obzira. 586 00:28:25,540 --> 00:28:26,580 Računalo poznaje. 587 00:28:26,580 --> 00:28:30,380 Tako govoreći, mala slova minus kapitala, što je čudno da se 588 00:28:30,380 --> 00:28:33,530 oduzimanjem CHAR iz druge, ali Koji su znakovi ispod haube? 589 00:28:33,530 --> 00:28:34,520 Oni su samo brojevi. 590 00:28:34,520 --> 00:28:36,980 Dakle, što god ti brojevi su, neka se računalo ga se sjetiti 591 00:28:36,980 --> 00:28:38,240 umjesto mene čovjeka. 592 00:28:38,240 --> 00:28:41,710 >> Tako mala slova minus kapital je će mi dati razliku. 593 00:28:41,710 --> 00:28:45,370 To se događa da se 32, a to bi bilo slučaj za malim slovom B i glavnog grada B 594 00:28:45,370 --> 00:28:45,930 i tako dalje. 595 00:28:45,930 --> 00:28:47,710 To ostaje dosljedan, hvala bogu. 596 00:28:47,710 --> 00:28:51,930 Tako sam u biti govorim, potrajati malih slova, oduzimanje off da 597 00:28:51,930 --> 00:28:55,340 standardni razlika, i da Učinkovito izmjene S nosač i na 598 00:28:55,340 --> 00:28:59,400 mala slova se, dakako, velikim slovima, bez moje stvarno da razmišljati 599 00:28:59,400 --> 00:29:03,040 o ili zapamtite, ono što su oni Brojevi smo govorili o tome kad osam 600 00:29:03,040 --> 00:29:04,800 Volonteri je došao na pozornicu? 601 00:29:04,800 --> 00:29:08,800 Sada međuvremenu, u drugo, ako to nije malo slovo, kao određena 602 00:29:08,800 --> 00:29:10,400 po liniji 24, samo ga ispisati. 603 00:29:10,400 --> 00:29:12,590 Ja samo želim da se dodiruju likovi koji su bili 604 00:29:12,590 --> 00:29:14,410 zapravo izvorno mala slova. 605 00:29:14,410 --> 00:29:15,150 >> Tako ćemo vidjeti. 606 00:29:15,150 --> 00:29:17,400 Provjerite kapitalizirati. 607 00:29:17,400 --> 00:29:18,470 Sastavio, OK. 608 00:29:18,470 --> 00:29:19,730 . / Kapitalizirati. 609 00:29:19,730 --> 00:29:23,530 I neka mi upisati u H-E-L-L-O malim slovima, Enter. 610 00:29:23,530 --> 00:29:26,370 I primjetiti da se pretvaraju u velika slova. 611 00:29:26,370 --> 00:29:27,940 Dopustite mi to ponoviti s različite riječi. 612 00:29:27,940 --> 00:29:32,720 Kako o D-A-V-I-D s prvim D kapitaliziraju kao obično ime je? 613 00:29:32,720 --> 00:29:33,560 Upišite. 614 00:29:33,560 --> 00:29:34,870 Obavijest da je još uvijek točna. 615 00:29:34,870 --> 00:29:40,250 To jednostavno reproduciraju koji je prvi D nepromijenjena preko koje drugo izgradnju. 616 00:29:40,250 --> 00:29:42,170 >> Dakle, imajte na umu, a zatim, Nekoliko stvari ovdje. 617 00:29:42,170 --> 00:29:45,060 Jedan, ako ste ikada željeli provjeriti dva Uvjeti odjednom, možete i njih 618 00:29:45,060 --> 00:29:46,500 zajedno kao što smo predviđali. 619 00:29:46,500 --> 00:29:49,900 Možete usporediti znakove na ovaj način i učinkovito liječiti znakove kao 620 00:29:49,900 --> 00:29:53,050 brojeva, ali iskreno, to je tako prokleto zagonetan Nikad neću zapamtiti 621 00:29:53,050 --> 00:29:56,510 Kako bi došli do ove od nule bez razmišljanja kroz nju već sasvim 622 00:29:56,510 --> 00:29:57,140 malo vremena. 623 00:29:57,140 --> 00:30:00,590 >> Zar ne bi bilo lijepo ako netko vani je napisao funkciju zove se 624 00:30:00,590 --> 00:30:05,390 smanjiti kako bi mogao odgovarati za mene pravi ili netočno, ovaj lik je mala? 625 00:30:05,390 --> 00:30:09,350 Pa hvala bogu, tko god da je napisao ctype.h učinio upravo to. 626 00:30:09,350 --> 00:30:15,540 Pusti me ovdje i dodati ctype za c vrste, a sada pusti me ovdje dolje, a 627 00:30:15,540 --> 00:30:18,820 prepisati taj pravac na sljedeći način. 628 00:30:18,820 --> 00:30:27,510 >> Dakle, ako se to zove niža, ja tvrdim, a Nosač ja, onda ću izbrisati 629 00:30:27,510 --> 00:30:29,400 ove dvije linije uopce. 630 00:30:29,400 --> 00:30:32,570 Dakle, sada netko drugi, ja sam u nadi, pisao Funkcija pozvao je manji, i to 631 00:30:32,570 --> 00:30:36,250 Ispada da je i proglasio je unutar ctype.h. 632 00:30:36,250 --> 00:30:39,480 A sada ću napustiti liniju 27 Samo, ja ću napustiti liniju 31 633 00:30:39,480 --> 00:30:41,890 sami, ali primijetiti koliko sam stegnuo se moj broj. 634 00:30:41,890 --> 00:30:42,690 To je sada čišći. 635 00:30:42,690 --> 00:30:47,250 To je manje teško gledati kroz jer sada funkciju, štoviše, 636 00:30:47,250 --> 00:30:50,080 tako divno to samo po imenu čini ono što kaže. 637 00:30:50,080 --> 00:30:51,520 >> Dakle, sad se idem spremiti ovo. 638 00:30:51,520 --> 00:30:52,930 Idem za smanjivanje. 639 00:30:52,930 --> 00:30:56,650 I baš kao u nule što bi moglo imati Booleani, Boolean vrijednost true ili 640 00:30:56,650 --> 00:31:01,530 netočno, to je upravo ono što je smanjiti učinkovito vraća. 641 00:31:01,530 --> 00:31:02,960 Dopustite mi kompilirati. 642 00:31:02,960 --> 00:31:04,500 Dopustite mi re-run. 643 00:31:04,500 --> 00:31:07,350 I sada neka ga pokušati ponovno, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 To je prilično dobro. 645 00:31:07,970 --> 00:31:10,150 I ponovno pokušati uvjeriti da nije vijak nešto gore. 646 00:31:10,150 --> 00:31:11,670 To se kapitaliziraju kao dobro. 647 00:31:11,670 --> 00:31:14,190 >> Ali to nije dovoljno dobar, jer Druga stvar koja mi nikada ne idem 648 00:31:14,190 --> 00:31:19,090 sjetite, osim ako ja radim kroz njega stvarno Pažljivo, recimo, papir je 649 00:31:19,090 --> 00:31:19,920 ovaj prokleti linije. 650 00:31:19,920 --> 00:31:23,450 Zar ne bi bilo lijepo kad bi bilo funkcija zove se gornji dio? 651 00:31:23,450 --> 00:31:26,930 Pa ispada postoji u ctype.h kao dobro. 652 00:31:26,930 --> 00:31:30,150 Ja ću ići naprijed i upišite - 653 00:31:30,150 --> 00:31:31,340 neka mi donijeti tu liniju natrag. 654 00:31:31,340 --> 00:31:36,430 Umjesto toga ovdje, neka mi ići naprijed i kažu, zamjena za% c u 655 00:31:36,430 --> 00:31:42,110 Rezultat poziva ovu funkciju Gornji na i-tog karaktera s. 656 00:31:42,110 --> 00:31:45,430 A sada primjetiti to je sve Malo uravnotežena. 657 00:31:45,430 --> 00:31:48,870 Moram pratiti koliko je zagrade sam otvorila i zatvorila. 658 00:31:48,870 --> 00:31:50,050 >> Dakle, sada je još čišći. 659 00:31:50,050 --> 00:31:53,460 Sada je ovaj program je sve bolje i bolje osmišljen vjerojatno zato što je 660 00:31:53,460 --> 00:31:56,450 puno, puno više čitati, ali to nije ni neka ispravi. 661 00:31:56,450 --> 00:31:57,600 Provjerite kapitalizirati. 662 00:31:57,600 --> 00:31:58,930 . / Kapitalizirati. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Idemo ga ponovno pokrenuti, D-A-V-I-D. U redu, tako da smo još uvijek u 664 00:32:03,220 --> 00:32:04,250 prilično dobrom stanju. 665 00:32:04,250 --> 00:32:06,030 >> Ali sada se gornja. 666 00:32:06,030 --> 00:32:09,720 Predlažem da postoji još jedna profinjenost smo mogli učiniti da bi se 667 00:32:09,720 --> 00:32:12,820 jako lijepo, to stvarno može stegnuti do tog koda i stvarno nam dati pet 668 00:32:12,820 --> 00:32:15,150 od pet za dizajn, za primjer. 669 00:32:15,150 --> 00:32:16,510 Što bi bilo lijepo da riješi? 670 00:32:16,510 --> 00:32:20,770 Pa, pogledaj kako prokleto dugo ovaj blok kod je jednostavno za napraviti nešto jednostavno. 671 00:32:20,770 --> 00:32:23,850 >> Sada su na stranu, kao što ste mogli imati vidi u super dijelu ove protekle 672 00:32:23,850 --> 00:32:27,570 vikenda, ne moraju striktno vitičastim zagradama kada ste baš jedan 673 00:32:27,570 --> 00:32:32,180 linija koda, iako smo predložili držeći ih tako da se čini puno 674 00:32:32,180 --> 00:32:36,190 jasniji, kao u nule je u obliku slova U blokovi, što je unutar podružnice. 675 00:32:36,190 --> 00:32:40,170 No, ne bi li bilo lijepo da se gornja, kada je dao svoj doprinos, pretvorio ga u 676 00:32:40,170 --> 00:32:44,730 velika slova, ako to nije, a što bi biti divan u suprotnom slučaju, ako 677 00:32:44,730 --> 00:32:47,210 to je već veliko? 678 00:32:47,210 --> 00:32:49,620 Samo ga proći kroz i ostavite ga na miru. 679 00:32:49,620 --> 00:32:50,660 >> Dakle, možda to radi. 680 00:32:50,660 --> 00:32:52,990 Mogao sam probati i samo se nadam da ne, ali mi dopustite 681 00:32:52,990 --> 00:32:54,450 uvesti jednu drugu stvar. 682 00:32:54,450 --> 00:32:57,440 Umjesto da koristite ovu ugrađeni u terminal Prozor ovdje dolje, podsjetiti da je 683 00:32:57,440 --> 00:33:01,130 ovaj trg Crna ikona vam daje Veći terminala prozor da mogu s punim 684 00:33:01,130 --> 00:33:02,260 zaslon ako želim? 685 00:33:02,260 --> 00:33:05,820 Tako ispada da su vrsta čudno ime, ali ima te stvari se nazivaju 686 00:33:05,820 --> 00:33:10,970 man stranice, priručnik stranice, čovjek za kratko, i ja mogu pristupiti od strane tih 687 00:33:10,970 --> 00:33:14,515 tipkanje čovjek - 688 00:33:14,515 --> 00:33:15,570 Što želim tip? 689 00:33:15,570 --> 00:33:17,830 Čovjek na gornji. 690 00:33:17,830 --> 00:33:21,090 >> A sada primijetiti ako postoji funkcionirati unutar računala, u 691 00:33:21,090 --> 00:33:23,970 ovaj slučaj aparata, što je samo Linux operativni sustav, to će 692 00:33:23,970 --> 00:33:27,920 da mi nešto zagonetan skup izlaz, ali vidjet ćete da je tijekom vremena 693 00:33:27,920 --> 00:33:31,720 uvijek je formatiran prilično Isto tako što počnete da se naviknete na njega. 694 00:33:31,720 --> 00:33:35,130 Uočava na vrhu na gornji, a očito je ista dokumentacija 695 00:33:35,130 --> 00:33:35,680 za sniziti. 696 00:33:35,680 --> 00:33:38,740 Tko je napisao da je rezao neke uglovi i staviti sve na jednoj stranici. 697 00:33:38,740 --> 00:33:40,720 Te stvari "namjene u život je pretvoriti 698 00:33:40,720 --> 00:33:42,780 Pismo gornji ili mala slova. 699 00:33:42,780 --> 00:33:46,290 >> Obavijest da je pod Sinopsis, str čovjek je mene naučio ono što ja imam sliku 700 00:33:46,290 --> 00:33:48,130 uključiti koristiti ovu stvar. 701 00:33:48,130 --> 00:33:51,320 To mi daje potpise za njih funkcije, obje od njih, čak i 702 00:33:51,320 --> 00:33:53,510 iako smo sada samo brigu o jednom. 703 00:33:53,510 --> 00:33:54,730 Ovdje je sada opis. 704 00:33:54,730 --> 00:33:58,800 Za gornje pretvara pismo c u velika slova, ako je moguće. 705 00:33:58,800 --> 00:34:02,280 >> Ipak nije to poučno, ali neka mi Sada pogledajte pod povratnu vrijednost, stvar 706 00:34:02,280 --> 00:34:03,520 da je vrati. 707 00:34:03,520 --> 00:34:08,600 Tako je vrijednost vratio je da pretvaraju pismo ili c ako 708 00:34:08,600 --> 00:34:09,870 pretvorbe nije bilo moguće. 709 00:34:09,870 --> 00:34:11,202 Što je c? 710 00:34:11,202 --> 00:34:12,560 >> Izvorni karakter. 711 00:34:12,560 --> 00:34:15,370 >> Izvorni karakter i znamo koji je, opet, ide do 712 00:34:15,370 --> 00:34:19,179 sinopsis, a onaj tko je to napisao Funkcija jednostavno odlučili da je ulaz 713 00:34:19,179 --> 00:34:22,909 da se gornja i donja je samo za samovoljno će se zove c. 714 00:34:22,909 --> 00:34:24,909 Mogli su ga zvali većinu ništa oni žele, ali oni ga čuvaju 715 00:34:24,909 --> 00:34:26,270 jednostavan kao c. 716 00:34:26,270 --> 00:34:27,880 Tako sam konzultirao čovjeka stranicu. 717 00:34:27,880 --> 00:34:31,870 Ova rečenica me uvjerava da će, ako to nije malo slovo, to je 718 00:34:31,870 --> 00:34:34,969 ide to samo mi vratiti C, što je savršeni, što znači da mogu dobiti osloboditi od 719 00:34:34,969 --> 00:34:36,199 Moj drugi uvjet. 720 00:34:36,199 --> 00:34:39,679 >> Dakle, neka mi se vratiti u gedit, a Sada neka mi samo to učiniti. 721 00:34:39,679 --> 00:34:41,960 Idem kopiram printf izjavu. 722 00:34:41,960 --> 00:34:45,969 Ja ću ići naprijed i desno unutar petlje za ispis koji se, i dobiti 723 00:34:45,969 --> 00:34:48,760 osloboditi od sada ovu cjelinu, ako konstrukt. 724 00:34:48,760 --> 00:34:51,860 Nije loša ideja, a to je vrlo koliko točni iu skladu s 725 00:34:51,860 --> 00:34:54,100 sve što smo propovijedali, , ali jednostavno nije potrebno. 726 00:34:54,100 --> 00:34:57,070 Čim shvate neke knjižnice Funkcija postoji taj netko drugi 727 00:34:57,070 --> 00:35:01,340 piše, ili možda piše negdje drugdje u datoteku, možete ga koristiti, a stvarno 728 00:35:01,340 --> 00:35:02,690 početi zategnuti kod. 729 00:35:02,690 --> 00:35:06,080 >> A kad kažem stvari poput dobrog stila, Činjenica da je ta osoba zove 730 00:35:06,080 --> 00:35:11,490 funkcionirati na gornji, ili prethodno je manji je čudesno korisna jer 731 00:35:11,490 --> 00:35:12,900 oni su vrlo opisno. 732 00:35:12,900 --> 00:35:16,120 Vi ne želite nazvati svoje funkcije x i y i z, koji imaju 733 00:35:16,120 --> 00:35:19,620 mnogo, mnogo manje značenje. 734 00:35:19,620 --> 00:35:25,160 Sva pitanja o toj seriji poboljšanja? 735 00:35:25,160 --> 00:35:28,010 >> Dakle, dovoljno je reći jedan od Zaključci je još kao svoj vlastiti problema 736 00:35:28,010 --> 00:35:30,960 set - možda Problem set, no Sigurno P postavili dvije i dalje, čak 737 00:35:30,960 --> 00:35:34,380 kada su točne ne mora nužno znači oni su savršeni samo 738 00:35:34,380 --> 00:35:36,155 ili još posebno dobro osmišljen. 739 00:35:36,155 --> 00:35:38,420 To je druga osi početi razmišljati o tome. 740 00:35:38,420 --> 00:35:41,730 Dakle, ovo je string unutar vašeg memorije računala, ali ako imate 741 00:35:41,730 --> 00:35:46,180 cijela hrpa likova kao što su H-E-L-L-O unutar RAM-a, i pretpostavimo 742 00:35:46,180 --> 00:35:51,330 koju je u svojem programu poziva dobili niz više puta, kao da vas 743 00:35:51,330 --> 00:35:54,200 nazovite dobili niz odjednom, onda nazovite dobili niz ponovno. 744 00:35:54,200 --> 00:35:55,880 Pa, što će se dogoditi tijekom vremena? 745 00:35:55,880 --> 00:35:59,170 >> Drugim riječima, ako imate liniju broj, doduše iz konteksta, kao što su 746 00:35:59,170 --> 00:36:02,120 string je dobiva - 747 00:36:02,120 --> 00:36:02,960 napravimo to. 748 00:36:02,960 --> 00:36:05,270 String ime dobili jednak string. 749 00:36:05,270 --> 00:36:08,590 Dakle, pretpostavimo da je linija koda je značilo pitati korisnika za njegov ili njezin naziv. 750 00:36:08,590 --> 00:36:14,580 Ova nova linija koda je značilo pitati Korisnik za njegovu ili njezinu školu, a 751 00:36:14,580 --> 00:36:15,920 ovaj sljedeći red, i tako dalje. 752 00:36:15,920 --> 00:36:18,150 Pretpostavimo da smo stalno postavljaju Korisnik za drugi i 753 00:36:18,150 --> 00:36:19,750 još jedna i druga string. 754 00:36:19,750 --> 00:36:22,390 Oni će ostati u sjećanju u isto vrijeme. 755 00:36:22,390 --> 00:36:24,280 One se neće izmlatiti drugima. 756 00:36:24,280 --> 00:36:26,420 Škole nije prepisati druge. 757 00:36:26,420 --> 00:36:28,520 Ali gdje su svi završiti u sjećanju? 758 00:36:28,520 --> 00:36:32,030 >> Pa, ako ćemo početi crtati na zaslonu, koje možemo koristiti ovu stvar 759 00:36:32,030 --> 00:36:35,800 Ovdje kao školsku ploču, ako je ovaj crni pravokutnik predstavlja moj računalo ' 760 00:36:35,800 --> 00:36:39,800 memorije, ja ću početi proizvoljno podijeli se u malo kvadrata, 761 00:36:39,800 --> 00:36:42,120 od kojih svaki predstavlja jedan bajt memorije. 762 00:36:42,120 --> 00:36:46,560 Iskreno, ako imate gigabajt RAM-a ovih dana, imate milijardu bajtova 763 00:36:46,560 --> 00:36:49,540 memorije u računalu, tako da milijardi tih kvadrata. 764 00:36:49,540 --> 00:36:52,110 Dakle, dovoljno je reći, ovo zapravo i nije u mjerilu. 765 00:36:52,110 --> 00:36:58,250 >> Ali mogli smo zadržati crtanje svi ovi očito nije u mjerilu kvadrata, a to 766 00:36:58,250 --> 00:37:01,260 skupno zastupa moje memorije računala. 767 00:37:01,260 --> 00:37:03,136 Sada ćemo to učiniti dot, dot, dot. 768 00:37:03,136 --> 00:37:06,260 Dakle, drugim riječima, kad sam danas zatražiti Korisnik s nizom dobili da mi daju 769 00:37:06,260 --> 00:37:07,350 string, što se događa? 770 00:37:07,350 --> 00:37:14,270 Ako korisnik unese "Hello", koji završava u H-E-L-L-O. Ali pretpostavimo 771 00:37:14,270 --> 00:37:15,720 Korisnik onda upiše - 772 00:37:15,720 --> 00:37:17,250 Zapravo, nisam trebao učiniti Pozdrav, jer tražimo 773 00:37:17,250 --> 00:37:18,330 ih za njihove nazive. 774 00:37:18,330 --> 00:37:20,580 Dakle idemo natrag, ako ja to mogu. 775 00:37:20,580 --> 00:37:26,130 >> Dakle, ako sam tip u D-A-V-I-D za moje ime, prisjetiti da je druga linija 776 00:37:26,130 --> 00:37:29,220 broj je opet dobili niz dobiti svoju školu. 777 00:37:29,220 --> 00:37:32,090 Gdje je tu riječ da korisnik vrste u će ići sljedeći? 778 00:37:32,090 --> 00:37:38,290 Pa, možda će ići u H-A-R-V-A-R-D. Dakle, iako sam 779 00:37:38,290 --> 00:37:41,560 ga povući dva reda, ovo je samo cijela hrpa bajtova u vašoj 780 00:37:41,560 --> 00:37:42,710 računala RAM-a. 781 00:37:42,710 --> 00:37:46,560 Tu je problem sada, jer sada, ako sam pomoću RAM-a na ovaj vrlo razumne 782 00:37:46,560 --> 00:37:49,910 ali vrsta naivne način, što možete Nije očito razlikuju? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Gdje se počinje i gdje jedna završava, zar ne? 785 00:37:54,680 --> 00:37:55,860 Oni su vrsta zamućenje zajedno. 786 00:37:55,860 --> 00:37:57,920 >> Tako ispada računalo ne to učiniti. 787 00:37:57,920 --> 00:38:04,720 Dopustite mi zapravo pomicanje natrag kroz vrijeme u nekoliko znakova, a umjesto Harvarda 788 00:38:04,720 --> 00:38:09,570 ide odmah nakon imena korisnika, korisnik zapravo dobiva, iza 789 00:38:09,570 --> 00:38:12,000 scene, posebnim znakom umetnuti 790 00:38:12,000 --> 00:38:13,885 Računalo za njega ili nju. 791 00:38:13,885 --> 00:38:19,470 / 0, inače poznat kao lik NSK dosadno naziva N-U-L, a ne 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, ali ga pisati kao / 0. 793 00:38:22,190 --> 00:38:27,130 To je jednostavno sve nula bitova je marker između prve riječi da korisnikov 794 00:38:27,130 --> 00:38:28,290 upisan i drugi. 795 00:38:28,290 --> 00:38:33,020 >> Dakle Harvard zapravo sada završi kao ovaj niz znakova 796 00:38:33,020 --> 00:38:36,110 i još jedan / 0. 797 00:38:36,110 --> 00:38:41,690 Dakle, drugim riječima, tako da to sentinel vrijednosti, osam nula granično 798 00:38:41,690 --> 00:38:45,220 bita, sada možete početi razlikovati jedan lik iz drugog. 799 00:38:45,220 --> 00:38:49,720 Dakle, sve ono što je ovaj put "Hello" je zapravo "halo" s / 0, i 800 00:38:49,720 --> 00:38:53,580 U međuvremenu, tu bi moglo vrlo dobro biti prilično malo više RAM 801 00:38:53,580 --> 00:38:56,400 unutrašnjost računala. 802 00:38:56,400 --> 00:38:57,810 >> Pusti me da napravim još jednu stvar sada. 803 00:38:57,810 --> 00:39:01,800 Ispada da su svi od tih kvadrata mi smo bili crtanja, oni su, da, 804 00:39:01,800 --> 00:39:06,140 žice, ali općenito, ove stvari su nizovi. 805 00:39:06,140 --> 00:39:10,590 Niz je samo komad memorije to je natrag na leđa na leđa uz leđa, 806 00:39:10,590 --> 00:39:15,130 a vi obično koriste niz putem ove uglata zagrada zapisu. 807 00:39:15,130 --> 00:39:18,210 Pa ćemo vidjeti ove vrlo malo tijekom vremena, ali dopustite mi da ide naprijed i 808 00:39:18,210 --> 00:39:21,160 otvaraju, nazovimo ga dobi. 809 00:39:21,160 --> 00:39:23,920 I primijetiti ono što možemo učiniti s ti isti trikovi, malo 810 00:39:23,920 --> 00:39:25,750 malo više sintakse ovdje. 811 00:39:25,750 --> 00:39:29,270 >> Dakle, u skladu 17. ovog programa - Zapravo, dopustite mi da pokrenete program prvi 812 00:39:29,270 --> 00:39:30,770 tako da možemo vidjeti što je to što radi. 813 00:39:30,770 --> 00:39:33,530 Dopustite mi da bi se dobi sastaviti ovaj program. 814 00:39:33,530 --> 00:39:34,950 . / Vijeka. 815 00:39:34,950 --> 00:39:36,480 Koliko je ljudi u sobi? 816 00:39:36,480 --> 00:39:38,020 Nazovite to troje. 817 00:39:38,020 --> 00:39:39,575 Dob u prvom licu? 818 00:39:39,575 --> 00:39:42,710 18, 19, i 20. 819 00:39:42,710 --> 00:39:46,770 A sada nešto smiješno, ja samo su napravili program koji starost te 820 00:39:46,770 --> 00:39:47,740 troje ljudi. 821 00:39:47,740 --> 00:39:50,390 >> Tako da je očito prilika za zabavu aritmetike ovdje. 822 00:39:50,390 --> 00:39:51,560 Srećom, matematika je točna. 823 00:39:51,560 --> 00:39:54,720 18 ode do 19, 19 otišao do 20 i tako dalje. 824 00:39:54,720 --> 00:39:58,510 No, ono što je stvarno značilo da se Ilustrativan ovdje je kako smo skladištenje 825 00:39:58,510 --> 00:40:00,190 Te tri ljudi dobi. 826 00:40:00,190 --> 00:40:02,370 Dopustite mi povećali na ono što je ovdje događa. 827 00:40:02,370 --> 00:40:06,240 >> Tako je prvi, te prvih nekoliko redaka treba biti uzimajući prilično upoznati. 828 00:40:06,240 --> 00:40:08,770 Samo sam pitajući korisnika za broj ljudi u sobi. 829 00:40:08,770 --> 00:40:11,490 Tada sam koristeći se int i učiniti dok se to učiniti opet i opet i opet. 830 00:40:11,490 --> 00:40:15,780 Vidjeli smo da je uzorak prije, ali linije 27 je nov i, zapravo, 831 00:40:15,780 --> 00:40:18,160 korisni, te će postati sve korisne. 832 00:40:18,160 --> 00:40:21,620 Obavijest da je ono što je drugačije u skladu 27 je da sam se da će se proglašenje 833 00:40:21,620 --> 00:40:23,960 int zove dobi, ali pričekajte. 834 00:40:23,960 --> 00:40:27,140 To je ne samo int dobi. 835 00:40:27,140 --> 00:40:30,130 Tu je ove četvornih nosači, unutar kojih je n. 836 00:40:30,130 --> 00:40:35,150 >> Dakle nosač n u tom kontekstu, ne unutar jednog printf izjave ovdje, ali 837 00:40:35,150 --> 00:40:44,370 u tom jedinom liniji 27, to je linija govoreći, daju mi ​​n Ints, od kojih svaki 838 00:40:44,370 --> 00:40:46,080 je tipa int. 839 00:40:46,080 --> 00:40:49,870 Dakle, ovo je kanta, da tako kažemo,, u ovom slučaju, tri cijela broja natrag 840 00:40:49,870 --> 00:40:52,770 natrag na leđa, tako da mogu učinkovito imaju tri varijable. 841 00:40:52,770 --> 00:40:54,890 Alternativa, kako bi se Jasno, bio bi ovaj. 842 00:40:54,890 --> 00:40:57,400 >> Ako sam htjela prvi student-a dob, mogao bih to učiniti. 843 00:40:57,400 --> 00:40:59,520 Ako sam htio drugi učenik age sam mogao to učiniti. 844 00:40:59,520 --> 00:41:01,860 Ako sam želio treći učenik dob, mogao bih to učiniti. 845 00:41:01,860 --> 00:41:04,320 I ne daj Bože trebamo svačije doba u ovoj sobi - 846 00:41:04,320 --> 00:41:07,670 Mislim, ovo je pakao od puno kopija, zalijepite opet i opet i opet. 847 00:41:07,670 --> 00:41:10,870 I plus kad sam sastaviti ovaj program, ako je jedan student tijekom šetnje u out 848 00:41:10,870 --> 00:41:14,200 ta vrata, sada moj broj varijabli je netočna. 849 00:41:14,200 --> 00:41:17,450 >> Dakle, ono što je lijepo o nizom je kao Čim počnete osjećati sami 850 00:41:17,450 --> 00:41:20,190 kopiranje i lijepljenje, izgledi su da je nije najbolji pristup. 851 00:41:20,190 --> 00:41:22,240 Niz je dinamičan potencijalno. 852 00:41:22,240 --> 00:41:24,610 Ne znam unaprijed koliko je ljudi će biti u sobi, 853 00:41:24,610 --> 00:41:28,670 ali ja znam trebam n od njih, a ja ću n shvatiti kad dođe vrijeme. 854 00:41:28,670 --> 00:41:35,500 Ova linija koda sada znači, dajte mi komad memorije koja izgleda ovako 855 00:41:35,500 --> 00:41:40,380 gdje je broj kutija na zaslonu je u potpunosti ovisi o n da 856 00:41:40,380 --> 00:41:42,010 korisnik unese 857 00:41:42,010 --> 00:41:44,850 >> Dakle, sada je ostatak ovog programa je zapravo prilično slično onome što smo 858 00:41:44,850 --> 00:41:46,860 Upravo je s likovima. 859 00:41:46,860 --> 00:41:49,970 Obavijest Imam za petlju s početkom u 30 linije. 860 00:41:49,970 --> 00:41:54,920 Dakle, odmah nakon što sam dobiti niz, sam iteraciju od y jednaka nuli na do n. 861 00:41:54,920 --> 00:41:58,890 Upravo sam to poučno printf Poruka se samo kaže, daj mi dobi 862 00:41:58,890 --> 00:42:03,690 osoba #% ja, tako da broj jedan, broj dva, broj tri. 863 00:42:03,690 --> 00:42:04,730 I zašto sam to učinio? 864 00:42:04,730 --> 00:42:08,870 Iskreno, ljudi vole brojati od jedan na gore, dok računalnih znanstvenika, 865 00:42:08,870 --> 00:42:09,620 nulu na gore. 866 00:42:09,620 --> 00:42:11,700 računalni znanstvenici se ne ide na koristiti ovu vrstu programa, tako da smo 867 00:42:11,700 --> 00:42:13,990 ide to samo početak brojanja na jednoj kao normalni ljudi. 868 00:42:13,990 --> 00:42:17,630 >> I sada u skladu 33, primijetit nešto drugačija komad sintakse. 869 00:42:17,630 --> 00:42:23,710 I-og u toj dobi varijabla tipa Niz će dobiti int. 870 00:42:23,710 --> 00:42:25,770 I sad na kraju, to je samo aritmetički ovdje dolje. 871 00:42:25,770 --> 00:42:29,200 Odlučio sam se u zasebnoj petlje tvrde neko vrijeme prolazi, a sada je u to 872 00:42:29,200 --> 00:42:31,400 odvojene petlje, ove linije izvršavati. 873 00:42:31,400 --> 00:42:35,810 >> Godinu dana od danas, ja ću biti čovjek i godine, ali primijetiti da to nije 874 00:42:35,810 --> 00:42:36,500 ja varijabli. 875 00:42:36,500 --> 00:42:38,390 Ovo je sada% sam za int. 876 00:42:38,390 --> 00:42:43,210 I obavijest kao prvi rezervirano mjesto, sam priključite i plus jedan, tako da možemo računati kao 877 00:42:43,210 --> 00:42:44,250 normalna osoba. 878 00:42:44,250 --> 00:42:49,190 I onda za vrijednost njihove dobi, za ja godina, sam se dobi zagrada 879 00:42:49,190 --> 00:42:52,980 ja - i zašto to radim plus jednu ovdje? 880 00:42:52,980 --> 00:42:53,760 Oni jednostavno dobi. 881 00:42:53,760 --> 00:42:55,030 To mi je glupo izbor programa. 882 00:42:55,030 --> 00:42:56,810 Upravo su u dobi od jedne godine. 883 00:42:56,810 --> 00:42:59,770 Ja mogu upisati bilo koji broj koji Ja zapravo želim tamo. 884 00:42:59,770 --> 00:43:02,430 >> Pa što je zapravo sve relevantnosti ovdje? 885 00:43:02,430 --> 00:43:07,610 Pa, neka mi zapravo pomicanje natrag ovamo i naslikati sliku 886 00:43:07,610 --> 00:43:10,830 onoga što je pred nama. 887 00:43:10,830 --> 00:43:15,720 Ono što ćemo raditi s našim iduće Problem Set Dvije je brbljanje u 888 00:43:15,720 --> 00:43:17,070 svijet kriptografije. 889 00:43:17,070 --> 00:43:22,500 Dakle, ovo je niz znakova, tako da slijed više znakova, a što 890 00:43:22,500 --> 00:43:23,750 to govori? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 To nije u online verziji od slajdova. 893 00:43:30,600 --> 00:43:35,880 >> Dakle, ja tvrdim da je to jednako ovo, glupa reklama mnogo godina 894 00:43:35,880 --> 00:43:39,950 Prije koji zapravo može sjetiti jedan od njegovih početaka. 895 00:43:39,950 --> 00:43:42,740 Dakle, ovo je primjer šifriranja ili kriptografije. 896 00:43:42,740 --> 00:43:46,150 Ispada da, ako želite zapravo poslati informacije ili dijeliti 897 00:43:46,150 --> 00:43:49,310 Informacije s nekim sigurno, kao poruke kao što je ovaj, možete 898 00:43:49,310 --> 00:43:50,500 otimati pisma. 899 00:43:50,500 --> 00:43:53,170 Ali obično, riječi su Nije slučajno kodirani. 900 00:43:53,170 --> 00:43:56,365 Oni permuted na neki način ili mijenjati na neki način, tako da - pardon. 901 00:43:56,365 --> 00:43:59,040 To je zabavno spojler za sljedeći put. 902 00:43:59,040 --> 00:44:04,390 >> Tako možete preslikati ono što je očito O B. primijetiti da poravna 903 00:44:04,390 --> 00:44:05,420 Kapitalizacija-mudar. 904 00:44:05,420 --> 00:44:07,960 Navodno r postaje e. 905 00:44:07,960 --> 00:44:14,000 Očito F-H-E-R postaje S-U-R-E. Tako ispada da postoji mapiranje, te u 906 00:44:14,000 --> 00:44:18,720 ovaj slučaj postoji prilično glupo mapiranje, ako bilo tko je to shvatio? 907 00:44:18,720 --> 00:44:21,440 To je nešto što se zove Rot 13, 13 rotirati. 908 00:44:21,440 --> 00:44:24,760 To je najgluplji šifriranje Mehanizmi jer doslovno samo 909 00:44:24,760 --> 00:44:29,160 dodaje 13 za svaku od slova, glupa u smislu da ako samo 910 00:44:29,160 --> 00:44:31,890 imaju malo slobodnog vremena na rukama i olovku, ili ste samo to da 911 00:44:31,890 --> 00:44:35,260 putem u glavi, te mogao probati sve moguće slike - jedan, dva, 912 00:44:35,260 --> 00:44:38,470 tri, točka, točka, točkica, samo 25 rotirati cijelu abecedu, a 913 00:44:38,470 --> 00:44:40,860 na kraju, vi ćete shvatiti ono što je ova poruka. 914 00:44:40,860 --> 00:44:43,700 Dakle, ako ste nešto poput ovoga u osnovnoj školi prolaze poruke za svoje 915 00:44:43,700 --> 00:44:46,830 najbolji prijatelj, ako je vaša osnovna škola Učitelj jednostavno pročitati 916 00:44:46,830 --> 00:44:50,320 Poruka i brutalni prisiljeni rješenje, možda ste stečen 917 00:44:50,320 --> 00:44:52,550 Odgovor na to. 918 00:44:52,550 --> 00:44:54,970 >> Sada, naravno, u stvarnom svijetu, kriptografije je sofisticiranije. 919 00:44:54,970 --> 00:45:00,120 Ovo je isječak iz teksta računalni sustav koji ima ime i 920 00:45:00,120 --> 00:45:03,630 lozinke, kao i gotovo sve naše učiniti, a to je ono što vaša lozinka mogli 921 00:45:03,630 --> 00:45:07,260 izgledati ako pohranjene na tvrdom voziti, ali u kriptiranom obliku. 922 00:45:07,260 --> 00:45:11,050 To nije samo rotacija slova, A je B, a B je C, što se 923 00:45:11,050 --> 00:45:15,620 mnogo više sofisticiran, ali koristi ono što je općenito poznat kao tajni ključ 924 00:45:15,620 --> 00:45:16,690 kriptografiju. 925 00:45:16,690 --> 00:45:20,210 Ova slika govori slijedeće Priča s nekoliko ikona. 926 00:45:20,210 --> 00:45:22,250 >> S lijeve strane, imamo ono što zvat ćemo običan tekst. 927 00:45:22,250 --> 00:45:25,420 U svijetu kriptografije, običnom Tekst je jednostavno izvorna poruka 928 00:45:25,420 --> 00:45:29,050 pisana na engleskom ili francuskom ili bilo kojem jeziku uopće. 929 00:45:29,050 --> 00:45:32,405 Ako ga želite šifrirati, mi ćemo proći je slikovito kroz lokot, tako 930 00:45:32,405 --> 00:45:35,580 Neke od vrsta algoritma, neke funkcije ili program koji je netko napisao 931 00:45:35,580 --> 00:45:39,880 da scrambles slova nadam više komplicirano nego samo dodao 13 932 00:45:39,880 --> 00:45:40,980 za svaki od njih. 933 00:45:40,980 --> 00:45:43,780 >> Ono što se iz tog procesa u Srednji postoji zove cyphertext. 934 00:45:43,780 --> 00:45:44,850 Tako vrsta seksi riječi. 935 00:45:44,850 --> 00:45:47,630 To samo znači da je kodiran Verzija od običnog teksta. 936 00:45:47,630 --> 00:45:52,570 I samo ako imate tu istu tajnu, 13 ili minus 13, jesi li u stanju 937 00:45:52,570 --> 00:45:54,970 dekriptirati poruke kao što je to. 938 00:45:54,970 --> 00:45:57,770 >> Tako je u problemu postavili dva, među stvarima ćete učiniti ako u Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, morat ćete napisati kod kako bi ispucati tih lozinki, figuring out 940 00:46:01,860 --> 00:46:05,170 ono što su i kako su kodiran, iako mi dati malo 941 00:46:05,170 --> 00:46:06,460 smjernice na putu. 942 00:46:06,460 --> 00:46:09,320 U standardnom izdanju, uvodimo par šifri, kodiranje 943 00:46:09,320 --> 00:46:12,400 mehanizama, jedan se zove Cezar, jedan zove Vigenere, koji su još uvijek 944 00:46:12,400 --> 00:46:16,100 rotacijska šifre gdje postaje nešto, B postaje nešto, ali 945 00:46:16,100 --> 00:46:18,820 morate to učiniti programski jer će doista biti tajna 946 00:46:18,820 --> 00:46:22,840 Ključ uključeni koje je obično broj ili ključne riječi da samo 947 00:46:22,840 --> 00:46:26,420 pošiljatelj i primatelj tih Poruke trebali razumjeti. 948 00:46:26,420 --> 00:46:28,660 >> Sada, to je zapravo inkarnacija u stvarnom svijetu. 949 00:46:28,660 --> 00:46:32,910 To, na primjer, je malo siroče Annie tajna dekoder prsten, a vi 950 00:46:32,910 --> 00:46:35,180 zapravo može provedbu tih rotacijska simboli - 951 00:46:35,180 --> 00:46:37,930 Postaje nešto, B postaje nešto - s par kotača, 952 00:46:37,930 --> 00:46:40,840 jedan s vanjske strane, jedan s unutarnje tako da ako okretati kotač ili 953 00:46:40,840 --> 00:46:44,170 prsten, zapravo možete se postroje pisma s različitim slovima, 954 00:46:44,170 --> 00:46:45,430 uzimajući tajni kod. 955 00:46:45,430 --> 00:46:48,110 I tako kao Cliffhanger za danas, ono što sam mislio da ću učiniti je malo 956 00:46:48,110 --> 00:46:52,170 atavizam da ako uključite TV 24. prosinca, možete pogledati 957 00:46:52,170 --> 00:46:55,390 Film ad nauseum za 24 sata u nizu. 958 00:46:55,390 --> 00:47:06,030 Ali za danas, ja ću ga otvoriti ovdje i dati nam samo dvije minute 959 00:47:06,030 --> 00:47:13,493 pedagoški relevantne Božićna priča s čovječuljak po imenu Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [Video reprodukciju] 961 00:47:14,400 --> 00:47:17,420 >> -Bilo da je poznato da sve i raznovrstan da Ralph Parker imenuje 962 00:47:17,420 --> 00:47:20,650 član Little Orphan Annie tajnosti Krug i ima pravo na sve 963 00:47:20,650 --> 00:47:23,460 počasti i beneficije javljaju na tu ponudu. 964 00:47:23,460 --> 00:47:25,990 >> -Potpis, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Supotpisali, Pierre Andre mastilom. 966 00:47:30,100 --> 00:47:34,270 Priznanja i koristi već u dobi od devet godina. 967 00:47:34,270 --> 00:47:39,440 >> [Viče na radiju] 968 00:47:39,440 --> 00:47:40,770 >> Hajde, idemo s njim. 969 00:47:40,770 --> 00:47:44,965 Ne treba mi sve te gluposti o Krijumčari i gusari. 970 00:47:44,965 --> 00:47:48,270 >> -Slušaj sutra navečer za sklapanja avantura crno 971 00:47:48,270 --> 00:47:49,650 gusarski brod. 972 00:47:49,650 --> 00:47:53,320 Sada je vrijeme za Annie Secret Poruka za vas članova 973 00:47:53,320 --> 00:47:55,720 tajnog kruga. 974 00:47:55,720 --> 00:47:56,580 Zapamtite, djecu. 975 00:47:56,580 --> 00:48:01,720 Samo članovi Annie Secret Circle može dekodirati Annie tajnu poruku. 976 00:48:01,720 --> 00:48:05,872 Zapamtite, Annie je ovisno o vama. 977 00:48:05,872 --> 00:48:08,670 Postavite svoje igle do B2. 978 00:48:08,670 --> 00:48:11,000 Ovdje je poruka. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Ja sam u mom prvom tajnom sastanku. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre bio je u velikoj glasa večeras. 983 00:48:21,650 --> 00:48:24,830 Mogao bih reći da ni večeras poruku bio je jako važno. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 To je poruka s Annie sama. 986 00:48:28,540 --> 00:48:30,086 Zapamtite, nemoj nikome reći. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekundi kasnije, ja sam u sobi samo u kući u kojoj je dječak od devet 989 00:48:38,710 --> 00:48:42,668 mogao sjediti na privatnost i dekodirati. 990 00:48:42,668 --> 00:48:47,628 Aha, B. sam otišao u drugu. 991 00:48:47,628 --> 00:48:53,060 E. prvoj riječi "biti." S. Dolazilo je lakše sada. 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 >> -Hajde, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Moram ići. 996 00:48:57,860 --> 00:48:59,780 >> -Ja ću biti desno dolje, Ma. 997 00:48:59,780 --> 00:49:01,030 Gee čudo. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Svakako. 1000 00:49:08,220 --> 00:49:09,500 Budite sigurni u što? 1001 00:49:09,500 --> 00:49:11,660 Ono što je Little Orphan Annie pokušava reći? 1002 00:49:11,660 --> 00:49:12,844 Budite sigurni u što? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy je dobio to ići. 1004 00:49:14,732 --> 00:49:16,148 Hoćete li izaći? 1005 00:49:16,148 --> 00:49:17,092 >> -U redu, Ma. 1006 00:49:17,092 --> 00:49:18,510 Ja ću izaći. 1007 00:49:18,510 --> 00:49:20,270 >> -Bio sam sve bliže sada. 1008 00:49:20,270 --> 00:49:21,823 Napetost je grozno. 1009 00:49:21,823 --> 00:49:23,045 Što je to bilo? 1010 00:49:23,045 --> 00:49:26,510 Sudbina planeta može visi o koncu. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randy je moram ići. 1012 00:49:28,985 --> 00:49:32,680 >> -Odmah se strana za zaboga. 1013 00:49:32,680 --> 00:49:33,956 >> -Skoro postoji. 1014 00:49:33,956 --> 00:49:35,140 Moji prsti letjeli. 1015 00:49:35,140 --> 00:49:36,880 Moj um je bio čelična zamku. 1016 00:49:36,880 --> 00:49:38,010 Svaka pora vibrirao. 1017 00:49:38,010 --> 00:49:39,878 Bilo je gotovo čista. 1018 00:49:39,878 --> 00:49:43,210 Da, da, da, da, da. 1019 00:49:43,210 --> 00:49:49,030 >> -Budite sigurni da pijete vašu 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 Bijedno komercijalne? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Gad jedan. 1025 00:50:00,694 --> 00:50:01,900 >> [END video reprodukciju] 1026 00:50:01,900 --> 00:50:04,260 >> ZVUČNI 1: Ovo je CS50, te da Problem će biti Set dvije. 1027 00:50:04,260 --> 00:50:06,305 Vidimo se sljedeći tjedan. 1028 00:50:06,305 --> 00:50:08,800 >> ZVUČNI 2: U iduće CS50, to se događa. 1029 00:50:08,800 --> 00:50:11,060 >> ZVUČNI 1: Dakle jedna tema nemamo pogledao do sada je 1030 00:50:11,060 --> 00:50:12,220 da funkcijskih pokazivače. 1031 00:50:12,220 --> 00:50:14,540 Sada, funkcija pokazivač je samo adresa javnosti 1032 00:50:14,540 --> 00:50:17,000 funkcija, ali baš kao i - 1033 00:50:17,000 --> 00:50:18,250 sin - 1034 00:50:18,250 --> 00:50:19,670