1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESORUL: Deci ordinea de zi în această săptămână, nu atât de mult lucrurile. 3 00:00:09,790 --> 00:00:12,801 Dar sperăm foarte, foarte util și relevante pentru voi în această săptămână. 4 00:00:12,801 --> 00:00:15,550 Dar vom să-și petreacă, poate 15, 20 de minute doar vorbesc repede 5 00:00:15,550 --> 00:00:17,370 despre lista de link-ul. 6 00:00:17,370 --> 00:00:19,694 Listele Link sunt de gând să fi acoperite pe testul. 7 00:00:19,694 --> 00:00:22,610 Deci, poate că ar fi foarte util pentru a afla un pic despre ceea ce este. 8 00:00:22,610 --> 00:00:25,210 >> Mergem să-și petreacă marea majoritate majoritate din secțiunea de astăzi 9 00:00:25,210 --> 00:00:27,640 trecând peste problemele practice test de zero. 10 00:00:27,640 --> 00:00:30,970 Și apoi vom salva, poate 20, 30 minute la sfârșitul pentru orice intrebari lungite 11 00:00:30,970 --> 00:00:32,850 cineva are. 12 00:00:32,850 --> 00:00:34,610 >> Apoi, ultimul cinci minute, am de gând 13 00:00:34,610 --> 00:00:36,467 pentru a da un discurs pompă pentru testul. 14 00:00:36,467 --> 00:00:38,050 Voi toți vor să fie aici pentru asta. 15 00:00:38,050 --> 00:00:39,591 Pentru că va fi un moment bun. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Bine, unele material de pe lista de link-ul. 18 00:00:49,230 --> 00:00:52,620 Cum acestea sunt de obicei structurate este aveți ceea ce se numește un nod, nu? 19 00:00:52,620 --> 00:00:54,870 Aveți aceste lucruri numite noduri, care sunt structs. 20 00:00:54,870 --> 00:00:57,360 Voi trece peste modul de a crea un nod in slide-ul urmator. 21 00:00:57,360 --> 00:01:00,680 Dar, în esență, toate legate liste este este de date care 22 00:01:00,680 --> 00:01:03,340 a fost înșirate împreună prin indicii. 23 00:01:03,340 --> 00:01:09,110 >> Și astfel avem avantajul de a folosi o listă legată de peste, 24 00:01:09,110 --> 00:01:11,280 probabil, ca o matrice, este faptul că într-o matrice 25 00:01:11,280 --> 00:01:15,000 aveți nevoie de un bloc continuu de memorie toate în același loc, o 26 00:01:15,000 --> 00:01:16,870 după altul, pentru a putea avea ca. 27 00:01:16,870 --> 00:01:20,200 Întrucât o listă legată, ai putea au biți aleatorii mici de memorie 28 00:01:20,200 --> 00:01:23,020 peste tot computerul insirate de indicii. 29 00:01:23,020 --> 00:01:26,270 >> Și în acest fel pot accesa informații 30 00:01:26,270 --> 00:01:28,610 care vine după o parte, după alta 31 00:01:28,610 --> 00:01:32,720 fără a avea nevoie doar o bucată mare de memoria calculatorului undeva. 32 00:01:32,720 --> 00:01:35,910 Și astfel încât acesta este unul dintre cele mai importante motive pentru care le folosim lista link. 33 00:01:35,910 --> 00:01:40,300 >> În al doilea rând, este foarte ușor să dinamic redimensiona lista link, deoarece în matrice, 34 00:01:40,300 --> 00:01:44,720 atunci când declară o matrice, aveți o anumită valoare stabilită. 35 00:01:44,720 --> 00:01:47,340 Să spun că am vrut să creeze o serie de 10 numere întregi. 36 00:01:47,340 --> 00:01:49,970 Am crea o serie de 10 întregi, și asta este. 37 00:01:49,970 --> 00:01:50,580 E 10. 38 00:01:50,580 --> 00:01:52,038 Nu știu ce să fac după aceea. 39 00:01:52,038 --> 00:01:53,680 Dacă aș fi vrut să fac 11, nu se poate face acest lucru. 40 00:01:53,680 --> 00:01:55,710 Dacă vreau să fac 9, nu se poate face acest lucru. 41 00:01:55,710 --> 00:01:59,910 >> Întrucât într-o listă link, puteți adăuga și șterge și introduceți oriunde doriți. 42 00:01:59,910 --> 00:02:04,940 Puteți redimensiona dinamic dvs. structura aici, structura de date. 43 00:02:04,940 --> 00:02:08,370 Și asta ne dă o mulțime o mai mare flexibilitate a adăugat 44 00:02:08,370 --> 00:02:11,320 că nu de obicei au cu matrice. 45 00:02:11,320 --> 00:02:15,210 >> Oricine confundat pe bază Structura modul în care o listă de link este 46 00:02:15,210 --> 00:02:17,930 sau de ce trebuie să folosim o pe un tablou? 47 00:02:17,930 --> 00:02:20,330 Da, vom trece peste în detaliu Cum de a crea de fapt o. 48 00:02:20,330 --> 00:02:24,121 Dar aceasta este doar un fel de sensul general acum. 49 00:02:24,121 --> 00:02:24,620 Misto. 50 00:02:24,620 --> 00:02:28,770 Și astfel matrice sunt înșirate împreună de aceste lucruri minunate mici 51 00:02:28,770 --> 00:02:29,960 numite noduri. 52 00:02:29,960 --> 00:02:32,210 Toate un nod este este un tip de struct. 53 00:02:32,210 --> 00:02:36,090 Amintiți-vă, o struct este dacă ai vrut pentru a crea un anumit tip de variabilă 54 00:02:36,090 --> 00:02:39,850 în C, care nu deja Există, tu, ca un programator, 55 00:02:39,850 --> 00:02:42,030 pot crea de fapt asta te. 56 00:02:42,030 --> 00:02:46,540 >> Și așa mai departe acest tip de date Structura este numit un nod, 57 00:02:46,540 --> 00:02:50,770 a fost de fapt creată de noi, că nu există în C pe cont propriu. 58 00:02:50,770 --> 00:02:53,150 Și modul în care că crea unul este aveți 59 00:02:53,150 --> 00:02:57,170 antetul typedef struct, care spune compilatorului sunt 60 00:02:57,170 --> 00:02:59,640 pe cale de a crea o struct. 61 00:02:59,640 --> 00:03:00,830 >> Vom nume îl "nod". 62 00:03:00,830 --> 00:03:03,350 Și în interiorul vom să declare o variabilă în, 63 00:03:03,350 --> 00:03:05,060 care este de gând să stoca o valoare. 64 00:03:05,060 --> 00:03:09,320 Și apoi vom merge la asemenea au un pointer numit "next" 65 00:03:09,320 --> 00:03:12,090 care indică spre următoarea nod în lista de link-ul. 66 00:03:12,090 --> 00:03:14,730 Și apoi ați terminat că off doar prin repetarea nod din nou, astfel 67 00:03:14,730 --> 00:03:17,490 compilatorul stie, OK că e sfârșitul struct meu. 68 00:03:17,490 --> 00:03:22,540 >> Și în acest fel, suntem un fel de a crea o gamă drăguț 69 00:03:22,540 --> 00:03:25,450 un fel de lucru, cu o valoare și cu un pointer. 70 00:03:25,450 --> 00:03:27,757 Și le puteți lega toate împreună cu acele indicii. 71 00:03:27,757 --> 00:03:30,090 Astfel încât să poată fi tot felul înșirate împreună într-un lanț. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Misto. 74 00:03:34,162 --> 00:03:35,453 Auzi că un pic mai bine? 75 00:03:35,453 --> 00:03:36,140 >> Audiența: Da. 76 00:03:36,140 --> 00:03:38,540 >> PROFESORUL: Bine. 77 00:03:38,540 --> 00:03:44,280 Deci felul în care, așa cum voi poate vedea, o listă tipic link este structurat 78 00:03:44,280 --> 00:03:45,500 este ai un cap. 79 00:03:45,500 --> 00:03:49,460 Ai valoare cap, care nu este fiind indicat de către orice alt pointer. 80 00:03:49,460 --> 00:03:53,177 Dar o să arate la, sau trimitere, un alt nod. 81 00:03:53,177 --> 00:03:56,510 Nodul după va referință nod după aceea, și așa mai departe și așa mai departe 82 00:03:56,510 --> 00:03:59,170 în cele din urmă a lovit până când la sfârșitul listei link-ul. 83 00:03:59,170 --> 00:04:00,980 Și tu chiar nu va avea un pointer acolo. 84 00:04:00,980 --> 00:04:04,659 >> Și astfel, cred ca, pe un lanț, sau chiar dacă oricare dintre voi efectuate, nu știu, 85 00:04:04,659 --> 00:04:06,450 ca cu fructe Loops când erai mic. 86 00:04:06,450 --> 00:04:08,590 Tu ar string-le împreună și le purta în jurul gâtului. 87 00:04:08,590 --> 00:04:09,840 Cred că e exact același lucru. 88 00:04:09,840 --> 00:04:12,964 Aveți aceste lucruri mici pe care le poate șir împreună acest punct de o 89 00:04:12,964 --> 00:04:15,291 după aceasta, la cea de după l, și așa mai departe și așa mai departe 90 00:04:15,291 --> 00:04:17,040 până când veți avea un lanț de o structură de date 91 00:04:17,040 --> 00:04:21,190 pe care le puteți utiliza totuși doriți. 92 00:04:21,190 --> 00:04:27,370 >> Deci modul în care această ne-ar de obicei insera sau șterge 93 00:04:27,370 --> 00:04:30,020 orice nod dintr-un link Lista este foarte diferit 94 00:04:30,020 --> 00:04:31,970 în funcție de cazul în care acest nod este. 95 00:04:31,970 --> 00:04:34,880 Astfel, de exemplu, deoarece indicii sunt întotdeauna 96 00:04:34,880 --> 00:04:38,645 arătând spre o anumită valoare, atunci când ștergeți sau introduceți un nod, 97 00:04:38,645 --> 00:04:41,770 doriți să vă asigurați că indicatorul este tot arătând spre lucrurile corecte. 98 00:04:41,770 --> 00:04:46,200 >> Deci, dacă ai vrut să potential insera un nou nod cu valoarea de un 99 00:04:46,200 --> 00:04:48,379 în interiorul unui link sortat Lista, știm cu toții aici 100 00:04:48,379 --> 00:04:51,170 de la imaginea pe care o să du-te în cap și între două, nu? 101 00:04:51,170 --> 00:04:52,620 Pentru că se potrivește acolo. 102 00:04:52,620 --> 00:04:59,060 Dar modul în care ne-ar face asta este de dereferencing întâi indicatorul 103 00:04:59,060 --> 00:05:02,160 de la cap și trimiterea care unul. 104 00:05:02,160 --> 00:05:05,040 >> Dar noi vin în o problemă aici. 105 00:05:05,040 --> 00:05:08,280 Poate cineva vedea ce problema este dacă noi am fost la prima dereference 106 00:05:08,280 --> 00:05:10,090 indicatorul de la cap la unul? 107 00:05:10,090 --> 00:05:14,202 Ce problemă am putea rula în cazul în care vom încerca pentru a adăuga acest la partea din față a matrice noastre? 108 00:05:14,202 --> 00:05:15,409 >> Audiența: [inaudibil] 109 00:05:15,409 --> 00:05:16,200 PROFESOR: Exact. 110 00:05:16,200 --> 00:05:20,000 Deci, aici avem un pointer, care a fost odată arătând din cap la două. 111 00:05:20,000 --> 00:05:23,120 Dar dacă te scapa de care pointer, îl indica o, 112 00:05:23,120 --> 00:05:26,500 acum avem nici o idee în cazul în care pentru a merge pentru a găsi două. 113 00:05:26,500 --> 00:05:29,850 Pentru că așa cum am spus mai înainte, ai o bucată uriaș de memorie în computer. 114 00:05:29,850 --> 00:05:31,860 Toate aceste noduri ar putea fi intercalate aleator 115 00:05:31,860 --> 00:05:33,350 în orice loc în calculatorul dumneavoastră. 116 00:05:33,350 --> 00:05:36,140 Și tu nu știi cum pentru a merge cu privire la constatarea că. 117 00:05:36,140 --> 00:05:40,420 >> Și așa trebuie să aveți indicii arătând spre toate nodurile la sfârșitul anului. 118 00:05:40,420 --> 00:05:42,420 Sau, dacă din greșeală dereference unul 119 00:05:42,420 --> 00:05:44,485 fără a atribuirea o valoare în primul rând, ești 120 00:05:44,485 --> 00:05:47,410 doar de gând să-și piardă totul după aceea. 121 00:05:47,410 --> 00:05:49,720 >> Deci, ce vom face este, v-ar mai întâi 122 00:05:49,720 --> 00:05:53,270 doriți să creați un pointer pe nodul pe care doriți să inserați. 123 00:05:53,270 --> 00:05:55,270 Punctul acesta de unde ai doriți să-l inserați la, 124 00:05:55,270 --> 00:05:59,410 și apoi după aceea te ar putea indica cap înapoi la unul. 125 00:05:59,410 --> 00:06:02,800 >> Asta face sens pentru toată lumea de aici? 126 00:06:02,800 --> 00:06:03,346 Grozav. 127 00:06:03,346 --> 00:06:04,720 Ganditi-va ca la fel ca un lanț. 128 00:06:04,720 --> 00:06:07,420 Dacă adăugați un lanț, e un fel de intuitiv 129 00:06:07,420 --> 00:06:10,742 cum te duci despre introducerea ai asta. 130 00:06:10,742 --> 00:06:15,274 >> OK, astfel încât este de fapt mult mai scurt decât am gândit că ar fi, 131 00:06:15,274 --> 00:06:16,690 un Spiel de cinci minute pe liste de link. 132 00:06:16,690 --> 00:06:19,960 Doar așa voi avea idee de bază a ceea ce este asta. 133 00:06:19,960 --> 00:06:23,580 >> Aici avem ordinea de zi pentru test zero. 134 00:06:23,580 --> 00:06:24,895 Nu lasa acest lucru vă intimideze. 135 00:06:24,895 --> 00:06:26,270 Știu că o mulțime de informații. 136 00:06:26,270 --> 00:06:27,580 Se pare foarte infricosator. 137 00:06:27,580 --> 00:06:33,130 Este, de asemenea, o mulțime de, am cred, CSC fel de termeni. 138 00:06:33,130 --> 00:06:37,440 Lucruri cum ar fi siruri de caractere hexazecimale, indicatori, alocări de memorie dinamică 139 00:06:37,440 --> 00:06:40,120 sunt termeni de sondare foarte infricosator. 140 00:06:40,120 --> 00:06:42,700 >> Dar vom pentru a le sparge jos, face unele probleme practice 141 00:06:42,700 --> 00:06:44,980 astfel încât voi toți sunt gata pentru acest test. 142 00:06:44,980 --> 00:06:47,104 Câți dintre voi avea deja a inceput sa studieze? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, voi dori, probabil, pentru a începe a începe 145 00:06:53,670 --> 00:06:56,480 pe faptul că, pentru că testul este mâine. 146 00:06:56,480 --> 00:06:58,739 Sau joi pentru unii dintre voi. 147 00:06:58,739 --> 00:07:01,030 Da, așa că merge asupra unor probleme practice. 148 00:07:01,030 --> 00:07:04,600 Dacă voi toți doresc să ia o foaie de hârtie, un creion. 149 00:07:04,600 --> 00:07:07,310 Vom să-și petreacă doar marea majoritate a secțiunii de astăzi 150 00:07:07,310 --> 00:07:11,590 trecând peste unele din așa voi avea o idee de ce sa se astepte pe testul. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> BINE. 153 00:07:16,890 --> 00:07:19,730 Un cuplu de logistică Detalii De asemenea, pentru oricine 154 00:07:19,730 --> 00:07:25,120 care nu a fost de a care se leagă acolo, în cazul în care te duci la cs50.yale.edu, pe frontul 155 00:07:25,120 --> 00:07:28,566 această pagină există o legătură care spune "About Quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Link vă duce acolo. 157 00:07:29,440 --> 00:07:31,065 Dacă nu l-au citit, vă rugăm să-l citiți. 158 00:07:31,065 --> 00:07:34,470 Pentru că vă spune foarte important informații cu privire la testul. 159 00:07:34,470 --> 00:07:37,410 >> Am de gând pentru a trage de la acest că doar pentru că, fizic, 160 00:07:37,410 --> 00:07:40,200 dacă voi nu știți de unde pentru a merge, vom avea probleme. 161 00:07:40,200 --> 00:07:44,220 Și astfel, în cazul în care ultima din punct de vedere cu o la N, merge la sala facultatea de drept. 162 00:07:44,220 --> 00:07:47,500 Și dacă ultimele tale începe cu P la A la Z, du-te la Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 Și acest lucru este valabil numai pentru persoane în secțiunea miercuri. 164 00:07:50,240 --> 00:07:53,420 >> Daca luati testul pe Joi, te duci la SSS 114 165 00:07:53,420 --> 00:07:55,078 în cazul în care de obicei este curs dumneavoastră. 166 00:07:55,078 --> 00:07:55,953 Audiența: [inaudibil] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESORUL: O să Z, ai de gând pentru a merge la sala Davies. 169 00:08:01,940 --> 00:08:03,273 Am de gând să se schimbe asta, nu? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, da, tu doar nu în mod automat. 172 00:08:09,698 --> 00:08:11,753 >> Oh, da, că e Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Da, rău mea. 175 00:08:16,030 --> 00:08:17,610 Da, O la A la Z, ai de gând pentru a merge la Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Am de gând să se stabilească data asta am încărca. 177 00:08:19,140 --> 00:08:20,320 Da. 178 00:08:20,320 --> 00:08:22,160 >> Și apoi, de asemenea, ceva important de minte 179 00:08:22,160 --> 00:08:25,290 este că, miercuri, în cazul în care sunteți în mod oficial înscriși în secțiunea Miercuri, 180 00:08:25,290 --> 00:08:26,832 trebuie să ia testul pe miercuri. 181 00:08:26,832 --> 00:08:29,706 Și dacă sunteți înscriși în Joi, trebuie să ia testul dumneavoastră joi. 182 00:08:29,706 --> 00:08:31,000 Și e timpul de clasă. 183 00:08:31,000 --> 00:08:35,970 În cazul în care, cred că e ca și cum 01:00 la 02:15 în zilele de miercuri și 2 jumate - 03:45 184 00:08:35,970 --> 00:08:37,220 joia. 185 00:08:37,220 --> 00:08:41,710 >> Dacă aveți un conflict ireconciliabile, Scuze Dean sunt singurul lucru, 186 00:08:41,710 --> 00:08:43,030 Din păcate, putem lua. 187 00:08:43,030 --> 00:08:45,560 Pentru că am avut o marea majoritate a cererilor 188 00:08:45,560 --> 00:08:47,970 pentru a comuta de miercuri spre joi. 189 00:08:47,970 --> 00:08:51,265 Care nu putem onora cu excepția cazului în avem o cerere lui Dean. 190 00:08:51,265 --> 00:08:52,650 >> BINE. 191 00:08:52,650 --> 00:08:57,000 Deci, înainte de a începe pe o câteva probleme de practică, 192 00:08:57,000 --> 00:09:00,540 Mă duc pentru a trece peste Sfaturi utile lui Andy pentru succes. 193 00:09:00,540 --> 00:09:04,140 Voi, atunci când studiezi, chiar doresc să practice scrierea de cod de mână. 194 00:09:04,140 --> 00:09:07,050 Prima dată când am vreodată a luat un test CS, nu am 195 00:09:07,050 --> 00:09:09,960 Codul practică scris de mână înainte și a fost extrem de 196 00:09:09,960 --> 00:09:11,890 șocant la cât de greu a fost. 197 00:09:11,890 --> 00:09:16,125 >> Când voi nu intra în obiceiul de a tasta totul, 198 00:09:16,125 --> 00:09:20,260 este vorba de foarte natural fiind posibilitatea de a avea autocompleted 199 00:09:20,260 --> 00:09:22,015 paranteze și punct și virgulă acolo. 200 00:09:22,015 --> 00:09:23,890 Atunci când îl scrie de mână, uneori e 201 00:09:23,890 --> 00:09:27,100 foarte, foarte usor sa uiti un punct și virgulă, sau uita pentru a închide un suport, 202 00:09:27,100 --> 00:09:30,970 sau uita pentru a închide un colon, sau asa ceva. 203 00:09:30,970 --> 00:09:34,322 >> Deci, atunci când scrie cod de mână, e un foarte diferit simt. 204 00:09:34,322 --> 00:09:37,280 Deci voi, atunci când lucrați prin unele dintre problemele de practică, 205 00:09:37,280 --> 00:09:38,904 ar bună de a practica într-adevăr astăzi. 206 00:09:38,904 --> 00:09:41,770 Sau mâine, cred că, dacă sunteți luând testul de joi. 207 00:09:41,770 --> 00:09:45,280 >> În al doilea rând, avem ultimul, cum ar fi, în valoare de opt ani de practică 208 00:09:45,280 --> 00:09:47,070 chestionare on-line. 209 00:09:47,070 --> 00:09:50,759 Test din acest an va fi, probabil, foarte, foarte asemănătoare cu toate acestea. 210 00:09:50,759 --> 00:09:51,800 Sunt foarte similare. 211 00:09:51,800 --> 00:09:54,220 Tu fel de a lua în Stilul de tipul de întrebări 212 00:09:54,220 --> 00:09:57,250 cerem, de tipul de funcții care vom scrie în, 213 00:09:57,250 --> 00:09:58,580 etc., etc.. 214 00:09:58,580 --> 00:10:01,980 >> Deci, ia chestionare practică, mai ales sub constrângeri de timp. 215 00:10:01,980 --> 00:10:05,390 75 de minute pentru a face testul este nu o mulțime de perioadă de timp. 216 00:10:05,390 --> 00:10:07,254 Este foarte, foarte mult timp. 217 00:10:07,254 --> 00:10:09,670 Și așa vreți într-adevăr să vă asigurați că voi sunt 218 00:10:09,670 --> 00:10:11,990 în obiceiul de a scrie Codul de mână repede. 219 00:10:11,990 --> 00:10:15,070 Pentru că nu vrei primul timp pentru a vedea un test de care lungimea 220 00:10:15,070 --> 00:10:16,560 fie pe testul tău. 221 00:10:16,560 --> 00:10:20,540 Voi într-adevăr doriți să vă asigurați pe care le practică în prealabil. 222 00:10:20,540 --> 00:10:24,550 >> În al patrulea rând, pe care doriți să revizuiască curs și diapozitive. secțiune 223 00:10:24,550 --> 00:10:25,980 Nu trebuie să memoreze lucruri. 224 00:10:25,980 --> 00:10:30,430 De fapt, toată lumea este permis un o foaie de note Cărții albe, 225 00:10:30,430 --> 00:10:31,090 fata si spate. 226 00:10:31,090 --> 00:10:32,920 Voi puteți tasta sau scrie. 227 00:10:32,920 --> 00:10:37,070 Dacă vă aflați nevoie să memoreze ceva, pune-l jos pe această foaie. 228 00:10:37,070 --> 00:10:40,810 >> Îți garantez, nu vrei să fi blocat în mijlocul care test 229 00:10:40,810 --> 00:10:43,890 fiind ca, oh da, ceea ce este execuție de acest fel față de acest tip. 230 00:10:43,890 --> 00:10:46,490 Doar pune-l jos și copiați-l direct de la foaia de notă. 231 00:10:46,490 --> 00:10:50,420 Atunci de fapt, puteți folosi doar dvs. creier să se gândească la problemele 232 00:10:50,420 --> 00:10:52,190 mai degrabă decât să se amintească fapte. 233 00:10:52,190 --> 00:10:55,250 Și astfel încât să ia într-adevăr profite de orice detalii de nișă 234 00:10:55,250 --> 00:11:00,140 care credeți că aveți nevoie să memoreze, plop-l pe foaia de revizuire. 235 00:11:00,140 --> 00:11:02,680 >> OK, orice întrebări logistic în ceea ce privește testul 236 00:11:02,680 --> 00:11:05,510 înainte de a începe ceva Probleme test practica? 237 00:11:05,510 --> 00:11:06,416 Da? 238 00:11:06,416 --> 00:11:10,040 >> Audiența: Nu am avut o șansă să se uite la testul [neauzit] 239 00:11:10,040 --> 00:11:11,757 dar este mergi la a fi aplicație cea mai mare parte, 240 00:11:11,757 --> 00:11:14,090 Sau există, de asemenea, va fi, cum ar fi, întrebări de cunoștințe? 241 00:11:14,090 --> 00:11:14,940 >> PROFESORUL: E mult. 242 00:11:14,940 --> 00:11:16,731 Deci, modul în care am ar descris testul 243 00:11:16,731 --> 00:11:18,810 este-- am pus împreună unele probleme practice 244 00:11:18,810 --> 00:11:20,960 că am tras din toate chestionare. 245 00:11:20,960 --> 00:11:25,210 Dar veți vedea că există două principale tipuri de întrebări vă vom solicita. 246 00:11:25,210 --> 00:11:28,750 >> Una dintre ele este un detaliu nivel foarte scăzut de lucruri. 247 00:11:28,750 --> 00:11:31,720 Vă vom oferi o mică bucată de cod și spune, există o eroare aici? 248 00:11:31,720 --> 00:11:33,110 Ce s-ar fi imprimarea aici? 249 00:11:33,110 --> 00:11:35,980 Ce va produce acest cod, etc.. 250 00:11:35,980 --> 00:11:38,710 Deci Detalii informatii nivel foarte scăzut. 251 00:11:38,710 --> 00:11:42,700 >> Și pe de alta parte, vom avea foarte înalt nivel întrebări bazate pe cunoaștere. 252 00:11:42,700 --> 00:11:45,190 Poți explica ce diferența dintre o căutare binară 253 00:11:45,190 --> 00:11:46,148 și o căutare liniară este? 254 00:11:46,148 --> 00:11:48,500 De ce ar vrea să ne utilizați una peste alta? 255 00:11:48,500 --> 00:11:49,960 Poate că, ceea ce este GDB? 256 00:11:49,960 --> 00:11:51,560 De ce vrem să utilizați GDB? 257 00:11:51,560 --> 00:11:54,590 Nivel mai înalt, mai fundamental întrebări înțelegere. 258 00:11:54,590 --> 00:11:58,240 Astfel încât veți vedea un amestec de două dintre ele pe testul tău. 259 00:11:58,240 --> 00:12:01,462 >> Orice altceva înainte de a ne capul direct în ea? 260 00:12:01,462 --> 00:12:02,879 BINE. 261 00:12:02,879 --> 00:12:03,670 Audiența: Încă o. 262 00:12:03,670 --> 00:12:04,030 PROFESOR: Oh, unul mai mult. 263 00:12:04,030 --> 00:12:04,340 Scuze. 264 00:12:04,340 --> 00:12:05,631 >> Audiența: Da, e în regulă. 265 00:12:05,631 --> 00:12:10,140 Deci vrei să spui 75 de minute este prea scurt, este puțin probabil ca ea 266 00:12:10,140 --> 00:12:11,640 pe care le vom termina? 267 00:12:11,640 --> 00:12:13,571 Sau, cum ar fi, 75 de minute este exact la fel de mult timp 268 00:12:13,571 --> 00:12:15,700 ca am avea nevoie de, dacă am pregătit corespunzător? 269 00:12:15,700 --> 00:12:17,450 PROFESOR: OK, deci test este o provocare. 270 00:12:17,450 --> 00:12:19,550 Acesta este cu siguranta o provocare. 271 00:12:19,550 --> 00:12:21,092 Veți găsi te scurt la timp. 272 00:12:21,092 --> 00:12:24,341 Esti, probabil, va lovi, cum ar fi 10, 15 minute pentru a merge, și de a fi cum ar fi, rahat. 273 00:12:24,341 --> 00:12:25,520 Am atât de multe de făcut. 274 00:12:25,520 --> 00:12:26,520 Și asta e în regulă. 275 00:12:26,520 --> 00:12:28,740 Toată lumea o să se simtă la fel. 276 00:12:28,740 --> 00:12:31,074 >> Doar să fie foarte conștienți de cât de mult timp ai. 277 00:12:31,074 --> 00:12:33,490 Și așa de aceea vă spun baieti face chestionare practică. 278 00:12:33,490 --> 00:12:36,672 Pentru că într-adevăr dă un sentiment mare de ce testul va fi ca. 279 00:12:36,672 --> 00:12:39,130 Deci, dacă vă aflați fiind posibilitatea de a terminat practica 280 00:12:39,130 --> 00:12:41,671 teste într-o sumă bună de timp, vă puteți ritmul bine, 281 00:12:41,671 --> 00:12:45,695 atunci nu veți avea o problemă miercuri sau joi. 282 00:12:45,695 --> 00:12:46,575 >> Misto. 283 00:12:46,575 --> 00:12:49,200 Deci, dacă toată lumea wants-- cred cei mai mulți oameni au de coli de hârtie 284 00:12:49,200 --> 00:12:49,810 out deja. 285 00:12:49,810 --> 00:12:52,604 Am de gând să, în esență, doar vă dau întrebări eșantion, 286 00:12:52,604 --> 00:12:54,520 vă dau băieți, cum ar fi, un câteva minute să le facă. 287 00:12:54,520 --> 00:12:59,610 Și vom trece peste ca o clasă ceea ce răspunsuri la ele sunt. 288 00:12:59,610 --> 00:13:02,860 >> Deci, aceasta este o foarte tipic Întrebarea devreme am să 289 00:13:02,860 --> 00:13:06,720 vă întreb, doar de conversie numere între diferite baze. 290 00:13:06,720 --> 00:13:09,070 Binare, ca voi poate Reamintim, este baza doi. 291 00:13:09,070 --> 00:13:12,470 Zecimal este de bază 10, sau ceea ce noi ca oameni de obicei interpreta. 292 00:13:12,470 --> 00:13:17,120 Hexazecimal este baza 16, care este zero prin noua precum A prin F. 293 00:13:17,120 --> 00:13:19,990 >> Deci nu e de patru numere Sunt cere voi de a converti aici. 294 00:13:19,990 --> 00:13:23,909 Voi da iti place, de trei până la patru minute să se gândească prin modul în care 295 00:13:23,909 --> 00:13:25,200 ne-ar merge cu privire la rezolvarea acestei. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> Audiența: Avem voie calculatoare? 298 00:13:35,710 --> 00:13:37,630 >> PROFESORUL: Nu va nevoie calculatoare, da. 299 00:13:37,630 --> 00:13:42,420 Cred plus de bază, cred eu, este toate voi se va cere să facă. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Și așa că am un fel de un sentiment de atunci când toată lumea se face, privi în sus, 302 00:14:45,070 --> 00:14:47,429 val, nu știu, zâmbet, uite fericit dacă ați terminat. 303 00:14:47,429 --> 00:14:47,929 Da. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Poate un cuplu mai multe minute. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, hai să-l aducă în. 308 00:18:29,600 --> 00:18:31,580 Am intenționat de gând să vă dau baieti mai putin timp 309 00:18:31,580 --> 00:18:33,760 decât, probabil, aveți nevoie pentru a face unele dintre aceste probleme, 310 00:18:33,760 --> 00:18:37,124 pur și simplu pentru că vreau să vă asigurați că vom obține printr-o mulțime de probleme. 311 00:18:37,124 --> 00:18:39,290 Deci, nu vă faceți griji dacă nu au o șansă pentru a termina. 312 00:18:39,290 --> 00:18:43,770 Total OK atâta timp cât aveți o idee de cum să meargă despre asta. 313 00:18:43,770 --> 00:18:45,850 Așa că hai să mergem mai departe și de a face primul. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Deci în primul rând, nimeni nu vrea să-mi spună în binar, ceea ce fac fiecare dintre aceste cifre 316 00:18:57,870 --> 00:19:00,484 reprezintă din punct de vedere valorile lor? 317 00:19:00,484 --> 00:19:01,250 Da? 318 00:19:01,250 --> 00:19:03,349 >> Audiența: Doi la zero de energie, două la unu. 319 00:19:03,349 --> 00:19:04,140 PROFESOR: Exact. 320 00:19:04,140 --> 00:19:04,640 Asa ca. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Corect, așa de obicei atunci când suntem în baza 10 323 00:19:16,430 --> 00:19:20,580 Toate acestea reprezintă sunt, cum ar fi, 10 la baza de la zero, nu? 324 00:19:20,580 --> 00:19:21,810 Asta e locul unul tău. 325 00:19:21,810 --> 00:19:24,520 Toate locul 10 este este 10 la puterea de unul. 326 00:19:24,520 --> 00:19:26,600 Loc unde 100 este 10 la puterea a două. 327 00:19:26,600 --> 00:19:29,570 >> Indiferent de bază sunteți în se întâmplă de a face cu exact același lucru, 328 00:19:29,570 --> 00:19:31,480 doar cu o bază diferită. 329 00:19:31,480 --> 00:19:34,130 Deci binar, tot ceea ce este este baza doi. 330 00:19:34,130 --> 00:19:37,110 Vei pentru a converti toate cifre în două la orice putere 331 00:19:37,110 --> 00:19:38,190 din cifre. 332 00:19:38,190 --> 00:19:41,450 Și astfel, în acest sens, pot avea o cale mai ușoară 333 00:19:41,450 --> 00:19:43,800 de a putea adăuga în sus sau în suma toate numerele în ordine 334 00:19:43,800 --> 00:19:46,010 să se transforme într baza 10. 335 00:19:46,010 --> 00:19:50,362 >> Deci, nimeni nu vrea să-mi spună ce răspuns la prima dintre ele este in baza zece? 336 00:19:50,362 --> 00:19:51,674 >> Audiența: Doi, [neauzit] 337 00:19:51,674 --> 00:19:52,340 PROFESOR: Da. 338 00:19:52,340 --> 00:19:53,230 Audiența: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESOR: 42, acolo te duci. 340 00:19:56,560 --> 00:20:00,660 Deci modul în care am primit acest răspuns a fost de face doua primul, care este de două. 341 00:20:00,660 --> 00:20:02,760 Plus doi al treilea, care este de opt. 342 00:20:02,760 --> 00:20:07,590 Plus doi la a cincea, care este ceea ce este lăsat de peste. 343 00:20:07,590 --> 00:20:09,390 Le-ai rezuma și e 42. 344 00:20:09,390 --> 00:20:12,000 >> Este cineva confuz cu privire la modul avem asta? 345 00:20:12,000 --> 00:20:15,630 Plus Deci de bază, cum ar fi I-am spus, ar trebui să fie OK. 346 00:20:15,630 --> 00:20:17,410 Dacă nu, ei bine, putem practica asta. 347 00:20:17,410 --> 00:20:18,720 Dar asta e în regulă. 348 00:20:18,720 --> 00:20:20,560 Misto. 349 00:20:20,560 --> 00:20:25,570 >> Nimeni nu vrea să-mi dea răspunde la al doilea, precum și? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Bine. 352 00:20:27,600 --> 00:20:30,044 Oricine confuz cu privire la modul avem ca fie? 353 00:20:30,044 --> 00:20:31,960 Rece, voi avea răspunsuri pe slide-ul urmator. 354 00:20:31,960 --> 00:20:34,440 Deci, nu vă faceți griji, dacă trebuie să-l copiați. 355 00:20:34,440 --> 00:20:38,860 >> OK, deci hexazecimal este un pic mai complicată. 356 00:20:38,860 --> 00:20:41,840 dar am de gând să-ți arăt baieti o comandă rapidă pentru cum se face. 357 00:20:41,840 --> 00:20:44,800 Deci hexazecimal, în timp ce amintiți-vă, tot ce este să fie de 16. 358 00:20:44,800 --> 00:20:48,920 Si pentru ca noi ca oameni nu de fapt avea 16 numere pentru a reprezenta, 359 00:20:48,920 --> 00:20:56,940 mergem de la zero la nouă, care prima noastră 10 valori, iar apoi vom face o prin F, 360 00:20:56,940 --> 00:20:58,630 care sunt următoarele șase valori. 361 00:20:58,630 --> 00:21:03,040 >> Și astfel cel mai simplu mod de a merge de la orice număr binar la hexazecimal 362 00:21:03,040 --> 00:21:05,350 este de a le rupe în două părți. 363 00:21:05,350 --> 00:21:10,042 Și astfel orice număr binar vom da va avea, probabil, opt cifre. 364 00:21:10,042 --> 00:21:11,750 Puteți rupe doar le în mijloc. 365 00:21:11,750 --> 00:21:17,460 >> Deci, primul Unu o unul, unul singur, unul, unul, unul singur. 366 00:21:17,460 --> 00:21:21,340 Un fel de ea cred că, știi, trage o bară oblică sau o virgulă între ele. 367 00:21:21,340 --> 00:21:23,800 Și tu poți converti doar direct indiferent 368 00:21:23,800 --> 00:21:26,670 aceasta este la primul numărul de hexazecimal, 369 00:21:26,670 --> 00:21:29,880 și orice aici este de a al doilea hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Deci, amintiți-vă de la notație comun, Ce valori hexazecimale începe cu? 371 00:21:37,584 --> 00:21:38,460 >> Audiența: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESOR: 0X. 373 00:21:39,270 --> 00:21:45,210 Deci, noi știm că în orice moment vă rugăm pentru a converti orice număr de hexazecimal, 374 00:21:45,210 --> 00:21:48,230 sau în orice moment veți vedea orice număr care începe cu 0X, 375 00:21:48,230 --> 00:21:50,230 știi că este o valoare hexazecimală. 376 00:21:50,230 --> 00:21:54,160 >> Și apoi vei fi rugat să determina ce aceste două cifre sunt. 377 00:21:54,160 --> 00:21:59,690 Și modul în care face acest lucru, de numărare a voturilor de până că jumătate și de numărare a voturilor în sus că jumătate. 378 00:21:59,690 --> 00:22:02,870 Deci, în acest exemplu, ceea ce ar fi o, unul, unul, unul fi? 379 00:22:02,870 --> 00:22:04,890 Ce valoare ar fi asta? 380 00:22:04,890 --> 00:22:06,040 Ar fi F, nu? 381 00:22:06,040 --> 00:22:08,050 Ar fi de 15. 382 00:22:08,050 --> 00:22:11,780 >> Deci, acest lucru ar fi F. One, unul, unul, unul aici este, de asemenea 383 00:22:11,780 --> 00:22:21,270 F. Deci unul, unul, unul, unul, unul, unul, unul, unul în hexazecimal, tot ce este este 0xFF. 384 00:22:21,270 --> 00:22:25,350 Deoarece această jumătate a reprezentat F, valoarea 15, 385 00:22:25,350 --> 00:22:27,331 și această jumătate a reprezentat F, valoarea 15. 386 00:22:27,331 --> 00:22:29,456 Pentru că amintiți-vă, suntem numărare de la zero la nouă. 387 00:22:29,456 --> 00:22:35,290 O este ca de 10, B este ca 11, F este de 15. 388 00:22:35,290 --> 00:22:41,690 >> Are vreun sens pentru toată lumea cât de am ajuns de la binar la hexazecimal? 389 00:22:41,690 --> 00:22:44,595 >> Audiența: Și așa cum am ajuns 15 din unul, unul, unul, cel? 390 00:22:44,595 --> 00:22:46,220 PROFESOR: Da, aceasta este binar, nu? 391 00:22:46,220 --> 00:22:48,090 Imaginați-vă acest lucru este doar un număr binar. 392 00:22:48,090 --> 00:22:50,792 Deci, aveți două la zero, care este unul. 393 00:22:50,792 --> 00:22:51,500 Audiența: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Deci, tu doar Total din. 395 00:22:51,670 --> 00:22:52,670 >> PROFESOR: Da, și apoi doar totală asta. 396 00:22:52,670 --> 00:22:53,380 Asta e tot ce este. 397 00:22:53,380 --> 00:22:54,890 >> Audiența: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> Audiența: Deci, te duci la binar în zecimal la hexazecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESORUL: Asta e cel mai simplu mod de a face acest lucru, da. 401 00:23:04,590 --> 00:23:11,390 Nu te duci în zecimal, deoarece zecimal are numai la zero la nouă. 402 00:23:11,390 --> 00:23:13,410 Suntem doar un fel de divizarea asta în două. 403 00:23:13,410 --> 00:23:15,201 >> Audiența: [inaudibil] folosind zecimal pentru a găsi 404 00:23:15,201 --> 00:23:17,809 ce se potrivește de până la hexazecimal. 405 00:23:17,809 --> 00:23:20,100 PROFESORUL: Vreau să spun, tu ești numărare a voturilor folosind matematica de bază. 406 00:23:20,100 --> 00:23:20,725 Audiența: Da. 407 00:23:20,725 --> 00:23:22,300 PROFESOR: Da, destul de mult. 408 00:23:22,300 --> 00:23:23,630 Este un pic confuz. 409 00:23:23,630 --> 00:23:26,410 Dar știu doar că te poate împărți orice 410 00:23:26,410 --> 00:23:28,160 Această valoare este în doar jumătăți. 411 00:23:28,160 --> 00:23:29,570 Uite, ce e asta în binar? 412 00:23:29,570 --> 00:23:30,610 Ce număr este asta? 413 00:23:30,610 --> 00:23:33,270 O să fie ceva de la zero la F. 414 00:23:33,270 --> 00:23:35,722 >> Aici este, de asemenea, va fi ceva de la zero la F. 415 00:23:35,722 --> 00:23:37,722 Și apoi puteți pune doar cei doi chiar acolo. 416 00:23:37,722 --> 00:23:38,263 >> Audiența: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESOR: Da. 418 00:23:38,910 --> 00:23:39,410 BINE. 419 00:23:39,410 --> 00:23:42,320 Deci, voi doriți să încercați următoarea, atunci? 420 00:23:42,320 --> 00:23:49,601 Zero, unu, zero unul, unu, zero, un zero. 421 00:23:49,601 --> 00:23:52,350 Îți dau tipi ca 30 de secunde, din moment ce, probabil, nu știu 422 00:23:52,350 --> 00:23:53,850 truc pentru a cum se face acest devreme. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, oricine doriți să obțineți asta o lovitură? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 PROFESOR: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Bine. 429 00:24:31,340 --> 00:24:37,050 Deci, asta aici ar be-- doriți pentru a ne spune cum ai ajuns asta? 430 00:24:37,050 --> 00:24:38,920 În primul rând, cum ai ajuns cinci? 431 00:24:38,920 --> 00:24:42,030 >> Audiența: Pentru că la zero, unu, zero, unul este de cinci. 432 00:24:42,030 --> 00:24:45,170 >> PROFESORUL: Are toată lumea să înțeleagă De aceea zero, unu, zero, unu este de cinci? 433 00:24:45,170 --> 00:24:46,260 Ai o aici. 434 00:24:46,260 --> 00:24:48,010 Nu ai nimic în două la primul. 435 00:24:48,010 --> 00:24:50,300 În două la al doilea, tu unul, care este de patru. 436 00:24:50,300 --> 00:24:52,600 Astfel încât să adăugați patru plus cel, ai cinci. 437 00:24:52,600 --> 00:24:53,600 Toată lumea bună? 438 00:24:53,600 --> 00:24:54,100 BINE. 439 00:24:54,100 --> 00:24:56,570 Și atunci ce să fie aceasta și de ce? 440 00:24:56,570 --> 00:24:58,350 Ce număr are un corespunde? 441 00:24:58,350 --> 00:24:59,350 >> Audiența: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESORUL: Și ce acest lucru în baza doi? 443 00:25:00,976 --> 00:25:01,850 Audiența: [inaudibil] 444 00:25:01,850 --> 00:25:03,010 PROFESOR: Exact. 445 00:25:03,010 --> 00:25:06,370 Deci, acest al doilea valoare aici ar fi 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Toată lumea bună cu privire la modul de a converti? 447 00:25:08,410 --> 00:25:10,770 E mult mai simplu decât credeți că este. 448 00:25:10,770 --> 00:25:13,330 Vreau doar să vă asigurați știi sfaturi utile 449 00:25:13,330 --> 00:25:14,950 si trucuri pentru cum sa fac asta. 450 00:25:14,950 --> 00:25:18,432 >> Audiența: De ce tocmai ați împărți l la mijloc de genul asta? 451 00:25:18,432 --> 00:25:21,390 La fel fie ca, bine, eu sunt doar de gând să pasa de aceste primul [Inaudibil]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESORUL: Pentru că asta e de fapt mod valori hexazecimale sunt reprezentate. 453 00:25:24,240 --> 00:25:26,890 0X, care înseamnă, de fapt nimic altceva decât vă spune 454 00:25:26,890 --> 00:25:28,710 că este un număr hexazecimal. 455 00:25:28,710 --> 00:25:31,580 Și aceasta reprezintă întotdeauna primele patru cifre. 456 00:25:31,580 --> 00:25:34,330 Și aceasta reprezintă întotdeauna ultimele patru cifre. 457 00:25:34,330 --> 00:25:37,835 Și așa mai departe aceste două cifre doar corespund diferitelor biți. 458 00:25:37,835 --> 00:25:39,200 >> Audiența: Deci, vom always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESORUL: Ești mereu mergi la a lua opt biți de valoare. 460 00:25:41,830 --> 00:25:44,580 >> Audiența: Este la fel ca un lucru aici sau un lucru peste tot? 461 00:25:44,580 --> 00:25:46,883 PROFESORUL: Asta e doar un lucru în computere, da. 462 00:25:46,883 --> 00:25:47,424 Audiența: OK. 463 00:25:47,424 --> 00:25:48,240 Incredibil. 464 00:25:48,240 --> 00:25:51,290 >> PROFESOR: De asemenea, astfel încât în ​​acest exemplu am convertit de la binar în zecimal, 465 00:25:51,290 --> 00:25:53,290 și de la binar la hexazecimal. 466 00:25:53,290 --> 00:25:56,610 Vreți să vă asigurați că, de asemenea, practica merge invers. 467 00:25:56,610 --> 00:26:03,370 Deci, dacă am dat 0xFF, ai putea trage ca în binar, nu? 468 00:26:03,370 --> 00:26:06,820 >> Să converti F în binar, care este unul, unul, unul, unul, 469 00:26:06,820 --> 00:26:09,380 converti F la binar, care este unul, unul, unul, unul. 470 00:26:09,380 --> 00:26:11,310 >> Deci vă putem solicita să faceți invers. 471 00:26:11,310 --> 00:26:14,817 Deci zecimal în binar, sau hexazecimal în binar. 472 00:26:14,817 --> 00:26:16,650 Deci, doriți să faceți vă că știți în ambele sensuri. 473 00:26:16,650 --> 00:26:19,371 Vom probabil, pune o combinație între cele două. 474 00:26:19,371 --> 00:26:20,660 >> Da, ai o întrebare? 475 00:26:20,660 --> 00:26:22,724 Pot see-- esti bun? 476 00:26:22,724 --> 00:26:23,348 Audiența: Da. 477 00:26:23,348 --> 00:26:24,560 PROFESOR: OK. 478 00:26:24,560 --> 00:26:26,101 Sunt bun pentru a șterge acest lucru? 479 00:26:26,101 --> 00:26:26,600 Grozav. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Bine, așa că răspunsurile sunt aici dacă cineva Este curios mai târziu și a obține confuz. 482 00:26:40,437 --> 00:26:41,844 BINE. 483 00:26:41,844 --> 00:26:46,070 >> Audiența: Contează dacă punem scrisorile noastre din Capitol sau litere mici? 484 00:26:46,070 --> 00:26:50,360 >> PROFESORUL: Aceasta nu, pentru că în hexazecimal, prin convenție, 485 00:26:50,360 --> 00:26:52,840 toate personajele sunt majuscule. 486 00:26:52,840 --> 00:26:54,650 Deci, un prin F sunt O să fie majuscule. 487 00:26:54,650 --> 00:26:58,660 Dacă puneți un minuscule o, nu știu dacă ne-ar marca în mod obligatoriu greșit. 488 00:26:58,660 --> 00:27:00,679 Dar teoretic, asta nu e punct de vedere tehnic 489 00:27:00,679 --> 00:27:01,970 cum că ar trebui să-l aibă. 490 00:27:01,970 --> 00:27:03,303 Astfel încât acestea ar trebui să fie toate majuscule. 491 00:27:03,303 --> 00:27:05,910 Da, bine întrebarea. 492 00:27:05,910 --> 00:27:07,780 >> BINE. 493 00:27:07,780 --> 00:27:08,790 A doua întrebare. 494 00:27:08,790 --> 00:27:12,750 Luați în considerare acest program minunat aici. 495 00:27:12,750 --> 00:27:15,180 Voi pune întrebarea, Voi reveni la această. 496 00:27:15,180 --> 00:27:23,170 >> Deci, în primul rând, ceea ce este în interiorul standardului io.h care este de interes pentru programul? 497 00:27:23,170 --> 00:27:26,640 În al doilea rând, ceea ce face void semnifică în conformitate trei? 498 00:27:26,640 --> 00:27:30,572 Și în al treilea, ce se întorc de la zero, principal, ca linie de șase, în general, înseamnă? 499 00:27:30,572 --> 00:27:33,280 Dacă vreți să scrie cele jos, deoarece am pentru a comuta înapoi 500 00:27:33,280 --> 00:27:36,810 la diapozitivul doar astfel încât să puteți vedea codul. 501 00:27:36,810 --> 00:27:40,400 Acesta este un exemplu de, cum ar fi, poate o Întrebarea nivel mai ridicat în cazul în care cerem 502 00:27:40,400 --> 00:27:42,435 ce lucruri înseamnă într-un program. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Toata lumea buna pentru mine să du-te înapoi la slide? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 Bine, in regula. 507 00:27:54,361 --> 00:27:57,610 Așa că voi da tipi ca poate trei minute să se uite la asta rapid reală. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, deci asta e ca destul de usor, conceptual. 510 00:28:44,140 --> 00:28:49,280 Nimeni nu vrea să-mi spui ce-i prima reușită de hash, inclusiv 511 00:28:49,280 --> 00:28:52,630 standardul fișierul nostru de bibliotecă io.h? 512 00:28:52,630 --> 00:28:55,510 De ce avem nevoie de acea bibliotecă inclus pentru acest program? 513 00:28:55,510 --> 00:28:56,930 Ce aici avem nevoie de el pentru? 514 00:28:56,930 --> 00:28:56,980 >> Da? 515 00:28:56,980 --> 00:28:58,340 >> Audiența: este că atunci când ai pus asta printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESOR: Exact. 517 00:28:59,131 --> 00:29:01,780 Deci printf, oricând ia o intrare de la utilizator 518 00:29:01,780 --> 00:29:04,140 și ceva de imprimare la ecran, care este 519 00:29:04,140 --> 00:29:05,600 intrarea standard, bibliotecă de ieșire. 520 00:29:05,600 --> 00:29:07,170 Ganditi-va ca way-- de intrare, ieșire. 521 00:29:07,170 --> 00:29:08,430 >> Nu am o ieșire? 522 00:29:08,430 --> 00:29:09,207 Da. 523 00:29:09,207 --> 00:29:12,040 Deci, eu știu că am întotdeauna o să nevoie de biblioteca Standardizarea i.o. 524 00:29:12,040 --> 00:29:16,400 >> Deci printf este funcția prin care avem nevoie pentru a accesa 525 00:29:16,400 --> 00:29:19,370 și hashtag Includeți biblioteca standard i.o. 526 00:29:19,370 --> 00:29:20,280 BINE. 527 00:29:20,280 --> 00:29:22,660 >> În al doilea rând, aceasta nu semnifică gol ce? 528 00:29:22,660 --> 00:29:26,970 Avem int main (void), ceea ce face anula aici înseamnă aici pe linia trei? 529 00:29:26,970 --> 00:29:28,080 Da, în spate. 530 00:29:28,080 --> 00:29:29,020 >> Audiența: [inaudibil] 531 00:29:29,020 --> 00:29:29,920 >> PROFESOR: Exact. 532 00:29:29,920 --> 00:29:33,320 Deci ține minte, ne-am învățat incepand cu PSET nostru 533 00:29:33,320 --> 00:29:35,360 pe care le poate de fapt specificați în linia de comandă 534 00:29:35,360 --> 00:29:39,010 argumente care programul, pe care le Funcția principală, are ca și tine, utilizatorul, 535 00:29:39,010 --> 00:29:39,650 numesc. 536 00:29:39,650 --> 00:29:42,650 Dacă avem gol, înseamnă că ați ar putea rula doar programul direct 537 00:29:42,650 --> 00:29:44,680 fără nici un argument în linia de comandă. 538 00:29:44,680 --> 00:29:46,160 Toată lumea clar pe care? 539 00:29:46,160 --> 00:29:46,660 BINE. 540 00:29:46,660 --> 00:29:52,850 >> Și, în fine ce ne facem deranjez acest lucru întoarcere la zero aici? 541 00:29:52,850 --> 00:29:54,740 De ce nu, chiar avem o principală Int? 542 00:29:54,740 --> 00:29:57,330 De ce nu putem avea doar void main void? 543 00:29:57,330 --> 00:29:59,216 Da? 544 00:29:59,216 --> 00:30:01,590 Audiența: Doar astfel încât să putem asigurați-vă că programul este 545 00:30:01,590 --> 00:30:04,247 ieșirea cu succes, așa cum spre deosebire de cazul în care a fost numerotat. 546 00:30:04,247 --> 00:30:06,580 Si ne-ar ști că asta e un alt fel de eroare. 547 00:30:06,580 --> 00:30:07,621 >> PROFESOR: Da, exact. 548 00:30:07,621 --> 00:30:10,670 Aceasta este doar o foarte lucru convențional pe care o facem, 549 00:30:10,670 --> 00:30:13,840 este faptul că doar la sfârșitul programul, doar pentru a vă asigura 550 00:30:13,840 --> 00:30:15,830 că funcția principală se execută corect, 551 00:30:15,830 --> 00:30:17,940 mereu am dori să facem întoarcere la zero. 552 00:30:17,940 --> 00:30:21,160 Chiar dacă ne-am putea în mod necesar Nu vezi că imprimate oriunde. 553 00:30:21,160 --> 00:30:25,092 >> Pentru că așa cum programatori, știi, dacă aveți mai multe linii diferite de cod 554 00:30:25,092 --> 00:30:27,050 și nu știi unde acestea sunt de gând greșit, 555 00:30:27,050 --> 00:30:30,240 și în cazul în care o eroare se pe care doriți să asigurați-vă că veți obține această eroare. 556 00:30:30,240 --> 00:30:33,240 Și astfel de obicei dacă ceva nu merge greșit, vom avea un profit de o doar 557 00:30:33,240 --> 00:30:34,669 pentru a vă asigura că știm că este. 558 00:30:34,669 --> 00:30:36,460 Deci, dacă vedea o revenire la zero, ca de obicei 559 00:30:36,460 --> 00:30:38,293 înseamnă programul tău este executat cu succes. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Bine? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Misto. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, al doilea program aici. 566 00:30:52,680 --> 00:30:54,827 Consideră că. 567 00:30:54,827 --> 00:30:56,910 Și dacă voi vedea o float, voi poate, probabil, 568 00:30:56,910 --> 00:31:00,810 au o idee bună de ceea ce Sunt pe cale să te întreb. 569 00:31:00,810 --> 00:31:05,200 >> Deci, atunci când acest program execută, după cum puteți vedea, 570 00:31:05,200 --> 00:31:09,330 Sunt de declarare a unei flotor în interiorul funcția mea principală. 571 00:31:09,330 --> 00:31:13,470 Am numind-o "răspunde" și eu sunt stabilirea care egală cu o împărțit la 10. 572 00:31:13,470 --> 00:31:17,860 Sunt imprimarea, la un zecimală, care plutesc. 573 00:31:17,860 --> 00:31:19,880 Și apoi mă întorc la zero am. 574 00:31:19,880 --> 00:31:24,470 >> Deci, atunci când executarea programului, cred că înapoi la lacomi acum, 575 00:31:24,470 --> 00:31:26,550 acest program imprimă 0.0. 576 00:31:26,550 --> 00:31:29,993 După cum știm cu toții, sperăm cu toții Știi, un împărțit la 10, nu este un 0.00, 577 00:31:29,993 --> 00:31:32,350 e 0,1. 578 00:31:32,350 --> 00:31:37,810 Dar explica de ce acest program crede că 1 împărțit la 10 printuri la 0,1 alte 579 00:31:37,810 --> 00:31:39,504 decât 0.1? 580 00:31:39,504 --> 00:31:42,545 O să-ți voi da poate ca 30 secunde să se gândească doar la asta repede 581 00:31:42,545 --> 00:31:43,878 și voi reveni la programul. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> BINE. 584 00:32:20,290 --> 00:32:22,205 Oricine vrea să-i dea o lovitură? 585 00:32:22,205 --> 00:32:24,330 În trei propoziții sau mai puțin, pentru că de obicei, suntem 586 00:32:24,330 --> 00:32:27,650 O să restricționeze toate răspunsurile la trei fraze sau mai puțin 587 00:32:27,650 --> 00:32:31,130 astfel încât să nu doar regurgitate lucruri aleatorii pe testul ta. 588 00:32:31,130 --> 00:32:32,740 >> Da, să ia o lovitură. 589 00:32:32,740 --> 00:32:36,390 >> Audiența: Deci, eu cred că există această lucrul numit, cum ar fi, [neauzit] 590 00:32:36,390 --> 00:32:42,320 Deci, ar putea fi, de exemplu, ar putea fi, cum ar fi, 0,09, 591 00:32:42,320 --> 00:32:47,250 că în cazul în care imprimați primul cifre, ar fi să 0.0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESOR: Close, nu destul. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Audiența: Ești împărțirea unul și 10, și sunt ambele numere întregi. 595 00:32:51,770 --> 00:32:54,610 Și astfel modul în care aceasta va pentru a stoca este ca un întreg. 596 00:32:54,610 --> 00:32:56,480 Și astfel cel mai apropiat număr întreg ar fi 0.0. 597 00:32:56,480 --> 00:32:57,471 Și așa că e de 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESOR: Da, asta-i foarte bine. 599 00:32:58,970 --> 00:33:00,040 Asta e răspunsul corect. 600 00:33:00,040 --> 00:33:03,597 Deci, aceasta este o foarte confuz Conceptul de o mulțime de copii. 601 00:33:03,597 --> 00:33:06,680 Și chiar vreau să vă asigurați că acest lucru este consolidat în capul tuturor. 602 00:33:06,680 --> 00:33:10,090 >> Deci, ceea ce noi numim plutitoare Punct de imprecizie, 603 00:33:10,090 --> 00:33:12,800 în cazul în care motivul pentru care o mulțime de programele în lacomi 604 00:33:12,800 --> 00:33:17,010 nu au de lucru inițial a fost pentru că ai uitat să arunce variabila. 605 00:33:17,010 --> 00:33:19,370 Deci, ce a spus Christabell a fost în întregime corectă. 606 00:33:19,370 --> 00:33:21,990 >> Un float este în mod inerent imprecise. 607 00:33:21,990 --> 00:33:26,400 Deoarece într-un calculator, drept, avem o cantitate finită de biți de memorie 608 00:33:26,400 --> 00:33:28,480 putem folosi pentru a reprezenta numere. 609 00:33:28,480 --> 00:33:33,480 Deci, de exemplu, acest ID CS50 este-- Cred că e un calculator pe 64 de biți. 610 00:33:33,480 --> 00:33:37,520 >> Un flotor poate fi reprezentat numai de o cantitate finită de aceste biți. 611 00:33:37,520 --> 00:33:42,260 Și astfel 0,1 cu zerouri infinite, care a fost de 0,1, nu? 612 00:33:42,260 --> 00:33:45,450 Dar nu putem stoca de fapt, acest număr în calculatorul nostru. 613 00:33:45,450 --> 00:33:47,810 Noi pur si simplu nu au suficientă memorie pentru a face acest lucru. 614 00:33:47,810 --> 00:33:52,340 >> Și astfel cel mai apropiat apropierea ce stocate în memorie este de fapt 615 00:33:52,340 --> 00:33:55,390 ceva de genul 0.000 ceva, ceva, ceva, ceva. 616 00:33:55,390 --> 00:34:01,240 Care, odată ce trunchia l, până la 0,0 runde. 617 00:34:01,240 --> 00:34:05,640 >> Și așa acest exemplu este doar un care demonstrează o mulțime de probleme 618 00:34:05,640 --> 00:34:08,469 ori de câte ori avem suntem încercarea de a face incorect matematica 619 00:34:08,469 --> 00:34:11,000 fără turnare ca un întreg diferit. 620 00:34:11,000 --> 00:34:14,870 Deci, doar să fie atent la acest lucru se întâmplă. 621 00:34:14,870 --> 00:34:18,239 >> Pe diverse, dacă vă un da bloc de cod și e ca si cum, 622 00:34:18,239 --> 00:34:19,510 ceea ce imprimă la sfârșitul? 623 00:34:19,510 --> 00:34:24,096 Și dacă e ceva de valoare aleatoare te baieti ar trebui să știe de ce se întâmplă. 624 00:34:24,096 --> 00:34:24,909 Da? 625 00:34:24,909 --> 00:34:27,926 >> Audiența: Truncate este a scăpa de totul după un anumit punct? 626 00:34:27,926 --> 00:34:28,513 [Inaudibil] 627 00:34:28,513 --> 00:34:30,929 PROFESOR: Da, așa de fapt acesta este un exemplu foarte rău, 628 00:34:30,929 --> 00:34:37,870 pentru că, de fapt, indiferent de 0,100 ar trunchia jos la 0,1. 629 00:34:37,870 --> 00:34:41,389 Dar dacă ar fi să it-- rula eu nu amintiți-vă, pentru că anul trecut au 630 00:34:41,389 --> 00:34:42,830 a fugit pe un program diferit. 631 00:34:42,830 --> 00:34:45,300 Ei fugit în ceva numit CS50 Appliance, care 632 00:34:45,300 --> 00:34:46,389 este diferit de ID-ul. 633 00:34:46,389 --> 00:34:48,520 Asta a fost un sistem pe 32 de biți, cred. 634 00:34:48,520 --> 00:34:50,290 Și așa s-au numere diferite. 635 00:34:50,290 --> 00:34:53,330 >> Dar, în esență, știu doar că întregul concept de trunchiere 636 00:34:53,330 --> 00:34:54,815 și modul în care doar taie lucruri pe. 637 00:34:54,815 --> 00:34:55,690 Și așa, dacă rounds-- 638 00:34:55,690 --> 00:34:56,300 >> Audiența: Fără rotunjire. 639 00:34:56,300 --> 00:34:57,370 >> PROFESOR: Exact. 640 00:34:57,370 --> 00:34:57,870 Da. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Misto. 643 00:35:04,380 --> 00:35:05,250 >> Hi, în spate. 644 00:35:05,250 --> 00:35:07,634 Noi doar a merge peste câteva ÎNTREBĂRI DE REVIZUIRE test. 645 00:35:07,634 --> 00:35:08,430 >> In regula. 646 00:35:08,430 --> 00:35:10,150 Deci, ia în considerare un program diferit aici. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Am de gând să vă dau un baieti câteva minute pentru a citi peste asta. 649 00:35:15,380 --> 00:35:18,588 Acest lucru este ceva care a fost pentru o foarte recent că eu cred că suflat o mulțime de tine 650 00:35:18,588 --> 00:35:19,142 mintea lui. baieti 651 00:35:19,142 --> 00:35:21,100 Dar vom vorbi prin aceasta din nou, doar 652 00:35:21,100 --> 00:35:24,152 pentru a vă asigura că înțeles-o complet. 653 00:35:24,152 --> 00:35:24,652 BINE. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 BINE. 656 00:35:41,780 --> 00:35:44,342 Oricine nevoie de mai mult timp pentru a citit prin acest cod? 657 00:35:44,342 --> 00:35:45,650 BINE. 658 00:35:45,650 --> 00:35:50,630 >> Deci, mi se pare că în acest program sunt 659 00:35:50,630 --> 00:35:53,460 crearea a două șiruri folosind getString. 660 00:35:53,460 --> 00:35:55,180 Cel numit S și unul numit T. 661 00:35:55,180 --> 00:35:58,680 Și dacă sunt egale este egal cu fiecare parte, 662 00:35:58,680 --> 00:36:00,880 aceasta ar trebui să imprimați "Tu tastați același lucru. " 663 00:36:00,880 --> 00:36:04,170 >> Dar elsewise, ar imprima, "Tu tastat lucruri diferite ", nu? 664 00:36:04,170 --> 00:36:05,990 Pare a fi foarte, foarte simplu. 665 00:36:05,990 --> 00:36:08,720 Dar, cu toate acestea, în cazul în care am de fapt încercați să scrie acest program, 666 00:36:08,720 --> 00:36:12,230 se pare că chiar și atunci când intrare aceleași siruri de caractere exacte, 667 00:36:12,230 --> 00:36:15,490 încă afiseaza, "Tu tastat lucruri diferite! " 668 00:36:15,490 --> 00:36:18,020 Vrea cineva să ia o șansă la ce acest program mereu 669 00:36:18,020 --> 00:36:20,370 răspunde că intrările sunt diferite, chiar 670 00:36:20,370 --> 00:36:22,090 atunci când cuvintele înșiși sunt la fel? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Deci, dacă ar fi să input-- David dragoste de a utiliza un exemplu ca mama, nu? 673 00:36:29,170 --> 00:36:37,890 Litere mici M-O-M pentru S, T este egal cu litere mici M-O-M. 674 00:36:37,890 --> 00:36:40,340 Dacă am fugit acest lucru prin codul, de ce ar 675 00:36:40,340 --> 00:36:44,180 imprima "ați tastat lucruri diferite?" 676 00:36:44,180 --> 00:36:46,336 >> Are cineva nevoie de mai mult timp să se gândească la asta? 677 00:36:46,336 --> 00:36:47,294 OK, cred că suntem bine. 678 00:36:47,294 --> 00:36:48,716 Da? 679 00:36:48,716 --> 00:36:53,930 >> Audiența: OK, asa ca este ceva despre în cazul în care este stocat în memorie, nu? 680 00:36:53,930 --> 00:36:54,890 >> PROFESOR: Da. 681 00:36:54,890 --> 00:37:00,400 >> Audiența: Unde e ca, în cazul în care acest lucru string s este depozitat la memorie spot-- 682 00:37:00,400 --> 00:37:01,689 Am inventat asta: este zero. 683 00:37:01,689 --> 00:37:02,355 PROFESOR: Sigur. 684 00:37:02,355 --> 00:37:05,290 Audiența: Și string T este depozitat la loc de memorie, 685 00:37:05,290 --> 00:37:11,000 cum ar fi, 167, și apoi zero, nu egal 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESOR: Exact. 687 00:37:12,610 --> 00:37:18,350 OK, deci amintiți-vă acest incredibil Apocalipsa ne-a explicat voi 688 00:37:18,350 --> 00:37:21,530 în această săptămână trecut, că siruri de caractere nu există cu adevărat? 689 00:37:21,530 --> 00:37:25,380 Când ne-am crea ceva numit string suntem, în realitate, 690 00:37:25,380 --> 00:37:29,330 crea ceva numit stea char. 691 00:37:29,330 --> 00:37:34,470 Care tot ce este este un pointer la un șir sau la o serie de caractere. 692 00:37:34,470 --> 00:37:39,480 >> Și astfel, în acest exemplu, dacă am urmau să intrare M-O-M calea 693 00:37:39,480 --> 00:37:49,350 care calculatorul meu ar stoca este în backslash memorie de zero, nu? 694 00:37:49,350 --> 00:37:53,180 Aceste patru caractere, caractere, ar fi depozitate undeva. 695 00:37:53,180 --> 00:37:59,290 >> Și apoi aceste patru caractere, backslash la zero, 696 00:37:59,290 --> 00:38:01,275 sunt stocate în altă parte, nu? 697 00:38:01,275 --> 00:38:04,685 Nu am nici o idee unde adresele sunt, sunt undeva în calculatorul meu. 698 00:38:04,685 --> 00:38:07,080 Dar eu nu știu exact unde sunt. 699 00:38:07,080 --> 00:38:10,170 >> Când m-am crea un șir s, tot ceea ce este într-adevăr 700 00:38:10,170 --> 00:38:15,550 este un pointer la începutul acestui șir. 701 00:38:15,550 --> 00:38:21,130 Și când am crea această valoare t, tot ceea ce este un pointer la aici. 702 00:38:21,130 --> 00:38:23,980 Și așa că atunci când sunteți încercarea de a echivala și verificați 703 00:38:23,980 --> 00:38:27,710 pentru a vedea dacă este de la egal la egal este egal cu t, calculatorul 704 00:38:27,710 --> 00:38:31,635 este de fapt doar a reveni la vă adresa acestui m 705 00:38:31,635 --> 00:38:33,390 și adresa de pe care m. 706 00:38:33,390 --> 00:38:36,230 Și pentru că sunt două piese separate de date 707 00:38:36,230 --> 00:38:38,750 care sunt stocate în două tipuri diferite adresele în calculatorul dumneavoastră, 708 00:38:38,750 --> 00:38:41,750 computerul nu va le recunosc ca fiind la fel. 709 00:38:41,750 --> 00:38:43,500 Nimeni nu vrea să da o lovitură de la ceea ce am 710 00:38:43,500 --> 00:38:46,900 ar trebui să facem dacă am vrut să corecteze acest lucru și au un program de funcționare corectă 711 00:38:46,900 --> 00:38:49,360 in loc? 712 00:38:49,360 --> 00:38:52,070 Gândiți-vă că pentru câteva secunde. 713 00:38:52,070 --> 00:38:54,929 De ce avem nevoie pentru a schimba la obține acest program de funcționare 714 00:38:54,929 --> 00:38:56,220 modul în care doriți să funcționeze? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Da, doresc să ia o lovitură de cuțit la el? 717 00:39:18,918 --> 00:39:24,082 >> Audiența: Putem încerca să dereference pointer și verificați prin matrice? 718 00:39:24,082 --> 00:39:25,540 PROFESORUL: Asta e un mod de a face acest lucru. 719 00:39:25,540 --> 00:39:27,880 Deci, ce e numele tău? 720 00:39:27,880 --> 00:39:29,010 Îmi pare rău, amintește-mi. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESOR: Da, deci ce Zee a sugerat ar funcționa absolut. 723 00:39:32,130 --> 00:39:32,629 Dreapta? 724 00:39:32,629 --> 00:39:35,730 Am putea dereference indicatorul și de fapt du-te și acces 725 00:39:35,730 --> 00:39:38,460 datele fizice din interiorul aici. 726 00:39:38,460 --> 00:39:40,300 Si putem compara doar tot ecranul. 727 00:39:40,300 --> 00:39:43,670 >> Putem spune, OK, pointer, da-mi ce este în interiorul aici. 728 00:39:43,670 --> 00:39:44,960 Acesta se va întoarce un m. 729 00:39:44,960 --> 00:39:47,168 Și aș spune, pointer, da-mi ce este în interiorul aici. 730 00:39:47,168 --> 00:39:47,750 Întoarceți-o m. 731 00:39:47,750 --> 00:39:48,410 Fac cei meci? 732 00:39:48,410 --> 00:39:49,410 Da. 733 00:39:49,410 --> 00:39:50,340 Apoi ne-am muta pe. 734 00:39:50,340 --> 00:39:54,240 >> Păstrăm verificarea întregii doi siruri de caractere tot drumul până la sfârșitul 735 00:39:54,240 --> 00:39:56,635 și a vedea dacă acestea sunt egale, dacă toate valorile sunt egale. 736 00:39:56,635 --> 00:39:59,680 Și dacă toate valorile sunt egale, atunci știm siruri de caractere sunt adevărate. 737 00:39:59,680 --> 00:40:01,600 Absolut, așa ne-ar face-o? 738 00:40:01,600 --> 00:40:03,930 >> Are cineva confuz cu privire la orice de acest lucru? 739 00:40:03,930 --> 00:40:06,970 Întregul concept de cum siruri de caractere sunt într-adevăr doar indicii, 740 00:40:06,970 --> 00:40:08,440 și modul în care acestea nu există cu adevărat? 741 00:40:08,440 --> 00:40:10,480 Și de ce ne erori ca modul în care-l? 742 00:40:10,480 --> 00:40:15,070 Pentru că vă garantez baieti, indicii și alocarea de coarde și de memorie 743 00:40:15,070 --> 00:40:16,470 sunt de gând să vină. 744 00:40:16,470 --> 00:40:17,410 >> Da? 745 00:40:17,410 --> 00:40:21,072 >> Audiența: [inaudibil] dereference l, ai pus doar o stea [Inaudibil] 746 00:40:21,072 --> 00:40:21,780 PROFESOR: dreapta. 747 00:40:21,780 --> 00:40:28,430 Deci, pentru a derererence un mijloc indicatorul pentru a merge la acea adresă de indicatorul 748 00:40:28,430 --> 00:40:30,390 și obține datele, valoarea acolo. 749 00:40:30,390 --> 00:40:32,700 Și modul de a face acest lucru este pointer stele. 750 00:40:32,700 --> 00:40:34,262 A nu se confunda asta. 751 00:40:34,262 --> 00:40:35,186 >> Audiența: [neauzit]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESOR: Da. 753 00:40:35,852 --> 00:40:39,750 Audiența: Deci, puteți scrie doar dacă egal egali stele t stele s. 754 00:40:39,750 --> 00:40:40,630 >> PROFESOR: Ei bine, nu. 755 00:40:40,630 --> 00:40:40,960 Nu. 756 00:40:40,960 --> 00:40:41,640 >> Audiența: Asta nu e destul de bun, nu? 757 00:40:41,640 --> 00:40:43,760 >> PROFESORUL: Nu, pentru că ești numai verificarea prima literă. 758 00:40:43,760 --> 00:40:46,010 Esti, probabil, de gând să nevoie de un fel de buclă care o 759 00:40:46,010 --> 00:40:49,055 reiterează prin fiecare caracter în ambele șiruri. 760 00:40:49,055 --> 00:40:49,837 Da. 761 00:40:49,837 --> 00:40:52,920 Deci, dacă ai vrut să verificați doar pentru a vedea în cazul în care a început cu același lucru, 762 00:40:52,920 --> 00:40:58,220 puteți face în cazul în care, stele s este egal cu stele T. 763 00:40:58,220 --> 00:41:01,300 Atunci știi că cel puțin ei a început cu același caracter. 764 00:41:01,300 --> 00:41:01,952 >> Da? 765 00:41:01,952 --> 00:41:04,056 >> Audiența: Deci calea faci asta ar fi 766 00:41:04,056 --> 00:41:06,064 ca un încorporat pentru buclă sau pointer? 767 00:41:06,064 --> 00:41:06,730 PROFESOR: Da. 768 00:41:06,730 --> 00:41:08,170 Destul de mult doar o buclă pentru. 769 00:41:08,170 --> 00:41:12,430 Amintiți-vă, David în clasa menționată zahărul liber sintactic? 770 00:41:12,430 --> 00:41:17,690 Și el a avut acest lucru foarte lucru confuz de stele T 771 00:41:17,690 --> 00:41:22,030 plus o, în cazul în care aceasta ar integra prin și muta cursorul? 772 00:41:22,030 --> 00:41:29,910 Mai ușor mod de a face acest lucru este doar t de i. 773 00:41:29,910 --> 00:41:31,090 >> Deci e doar o matrice. 774 00:41:31,090 --> 00:41:34,630 Modul în care le-ar avea o pentru buclă, care a fugit de la zero la I, în cazul în care 775 00:41:34,630 --> 00:41:36,580 i este lungimea șir, ai putea doar 776 00:41:36,580 --> 00:41:39,510 scrie că, în loc de a face pointer întreg, lucru de referință. 777 00:41:39,510 --> 00:41:43,510 Deci, aceste lucruri sunt exact echivalent în calculatorul dumneavoastră. 778 00:41:43,510 --> 00:41:45,905 >> Voi probabil, nu va trebuie să știe că, 779 00:41:45,905 --> 00:41:48,280 dar e bine sa doar un fel de au în spate mintea ta. 780 00:41:48,280 --> 00:41:52,630 Știu doar că computerul recunoaște diferite blocuri de cod 781 00:41:52,630 --> 00:41:53,890 ca acelasi lucru. 782 00:41:53,890 --> 00:41:57,510 Deoarece aceasta este doar mult mai de utilizare prietenos pentru noi să-l prezinte ca e 783 00:41:57,510 --> 00:41:58,150 o matrice. 784 00:41:58,150 --> 00:42:00,990 E mai ușor. 785 00:42:00,990 --> 00:42:02,719 >> Audiența: Deci, utilizarea strlen pentru ca, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESOR: Da. 787 00:42:03,385 --> 00:42:03,926 Audiența: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESORUL: Ai putea utilizați strlen sau, dacă 789 00:42:05,940 --> 00:42:10,420 nu a avut strlen puteți face doar până până când a lovit backslash zero pentru ambele. 790 00:42:10,420 --> 00:42:11,568 Oricare ar funcționa. 791 00:42:11,568 --> 00:42:12,068 Da. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 Audiența: Deci e la dereference fiecare caracter unic, dacă ne-am fost de fapt 794 00:42:17,996 --> 00:42:21,044 scrierea acest cod, am ar putea face doar T paranteze i 795 00:42:21,044 --> 00:42:22,460 Ca și cu steaua in fata ei? 796 00:42:22,460 --> 00:42:27,700 >> PROFESOR: Da, este egal cu Egal cu s suport I, și apoi să păstreze în mișcare i 797 00:42:27,700 --> 00:42:29,790 jos până te-a lovit la sfârșitul anului. 798 00:42:29,790 --> 00:42:31,286 Da, asta e ceea ce ar face. 799 00:42:31,286 --> 00:42:33,660 Și voi avea de fapt un viitor exemplu de când ne-am de fapt, 800 00:42:33,660 --> 00:42:36,740 scrie strlen așa voi va fel de a lua sa te joci cu ea un pic. 801 00:42:36,740 --> 00:42:43,567 >> Deci este clar pentru toată lumea doar pe memorie, siruri de caractere, indicii, adrese de calitate? 802 00:42:43,567 --> 00:42:46,650 Unele concepte de nivel superior pe care le voința sigur trebuie să știu pe testul 803 00:42:46,650 --> 00:42:48,928 mâine. 804 00:42:48,928 --> 00:42:49,904 >> In regula. 805 00:42:49,904 --> 00:42:50,404 Bine. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Da. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, deci un lucru pe care vom cere, de asemenea te, așa cum facem în fiecare an pe un test, este, 810 00:43:04,180 --> 00:43:08,340 să presupunem că ați uitat (care se pare că uitați să faceți anual) 811 00:43:08,340 --> 00:43:10,810 în care fișierul header strlen este declarat. 812 00:43:10,810 --> 00:43:13,860 Și așa că trebuie să-l rescrie noi. 813 00:43:13,860 --> 00:43:16,350 >> Aici sunt o listă de linii directoare pe care le puteți prezenta 814 00:43:16,350 --> 00:43:20,660 baieti unde tu a lua să se presupună că S șirul nu va fi nul. 815 00:43:20,660 --> 00:43:23,830 Puteți presupune că s va fi terminat cu un backslash zero. 816 00:43:23,830 --> 00:43:26,670 Deci știi că e ceea ce se va termina cu. 817 00:43:26,670 --> 00:43:29,500 >> Și, de exemplu, că lungime de salut ar fi cinci. 818 00:43:29,500 --> 00:43:32,890 Astfel, puteți presupune că salut va fi de cinci, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Nu trebuie să presupunem că Reversul zero, conturi pentru lungimea. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Acest ultim lucru aici, nu vă faceți griji despre overflow întreg. 822 00:43:42,300 --> 00:43:45,270 Are cineva aminte ce tip integer overflow este? 823 00:43:45,270 --> 00:43:48,041 >> Audiența: merge dincolo de Lungimea [neauzit]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESOR: Da, se poate explica un pic, ce înseamnă asta? 825 00:43:50,740 --> 00:43:55,330 >> Audiența: Deci, cred că merge înapoi la exemplul trunchiere devreme. 826 00:43:55,330 --> 00:43:58,380 Dar, dacă aveți doar atât de multe numere care depășesc numărul de biți 827 00:43:58,380 --> 00:44:01,409 pe care îl puteți atribui de fapt că va doar un fel de tăiat. 828 00:44:01,409 --> 00:44:04,242 PROFESOR: Da, așa pe un tipic calculator, câți biți avem? 829 00:44:04,242 --> 00:44:05,306 Audiența: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESOR: Da, 32, dreapta. 831 00:44:06,430 --> 00:44:10,030 Și așa că e, ceea ce, cu patru miliarde de euro, două miliarde? 832 00:44:10,030 --> 00:44:13,579 Patru miliarde de euro, până la patru miliarde numere naturale, nu? 833 00:44:13,579 --> 00:44:15,370 Două miliarde de euro negativ, două miliarde pozitiv, 834 00:44:15,370 --> 00:44:16,900 depinde de modul în care doriți să o fac. 835 00:44:16,900 --> 00:44:21,470 >> Și astfel, practic putem avea suficient de numere întregi, care poate merge până 836 00:44:21,470 --> 00:44:25,800 la două la 31 minus 1, nu? 837 00:44:25,800 --> 00:44:27,980 Pentru că odată ce ne-am lovit de două la a 32-, noi nu 838 00:44:27,980 --> 00:44:30,040 au atât de mult de memorie în calculatorul nostru. 839 00:44:30,040 --> 00:44:32,310 >> Și astfel, teoretic, am ar putea veni cu un număr 840 00:44:32,310 --> 00:44:34,560 că este, cum ar fi, de două până la a 46-. 841 00:44:34,560 --> 00:44:38,040 Este un număr foarte mare-măgar, dar teoretic ai putea. 842 00:44:38,040 --> 00:44:42,730 Și preaplin astfel încât întreg este dacă încercați să a crea un număr întreg, care merge dincolo de ceea ce 843 00:44:42,730 --> 00:44:44,790 computerul este capabil de a stoca. 844 00:44:44,790 --> 00:44:46,590 >> Și așa voi pentru acest exemplu nu au 845 00:44:46,590 --> 00:44:51,330 să vă faceți griji cu privire la noi, oferindu-vă un gigant șir care este de două la caractere 32 846 00:44:51,330 --> 00:44:51,830 lung. 847 00:44:51,830 --> 00:44:54,010 Asta ar fi foarte rău. 848 00:44:54,010 --> 00:44:59,430 >> Bine, așa că am de gând să dea doar voi structura de bază a acestei. 849 00:44:59,430 --> 00:45:02,020 Vei crea un funcție numită Int strlen unde 850 00:45:02,020 --> 00:45:08,436 o trecere în, o stea char, sau șir, pointer la șirul numit s. 851 00:45:08,436 --> 00:45:10,820 >> Bine, toată lumea recepționat jos. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Misto. 854 00:45:14,850 --> 00:45:17,020 Alte Oops-- cale. 855 00:45:17,020 --> 00:45:21,360 >> Deci, aceasta este un fel de bucată mai greu de problemă, 856 00:45:21,360 --> 00:45:25,320 așa că voi da băieți, poate cinci la șase minute la fel de brainstorming 857 00:45:25,320 --> 00:45:27,478 și scrie această funcție afară. 858 00:45:27,478 --> 00:45:29,710 >> Audiența: Noi nu considerare pentru [neauzit], 859 00:45:29,710 --> 00:45:30,200 noi nu trebuie să utilizeze întreg? 860 00:45:30,200 --> 00:45:31,241 >> PROFESOR: Nu, nu. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Îți dau un indiciu, băieți. 863 00:48:06,930 --> 00:48:12,325 O buclă în timp ce poate fi foarte util aici. 864 00:48:12,325 --> 00:48:12,825 Da. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Iată 867 00:48:45,495 --> 00:48:45,995 bomboane. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Candy va fi, de asemenea, disponibile pentru testul, cred. 870 00:48:53,410 --> 00:48:55,315 Deci, voi toti veti fi zaharisit mâine. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Poate Eu-- ai luat. 873 00:49:02,962 --> 00:49:03,718 >> Audiența: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESOR: Da. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Poate 30 de secunde sau cam asa ceva. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Bine, dacă ești nu făcut, nu vă faceți griji. 879 00:50:07,340 --> 00:50:08,810 Vom deplasa prin asta împreună. 880 00:50:08,810 --> 00:50:09,310 BINE. 881 00:50:09,310 --> 00:50:13,800 Deci, am de gând să doar aspectul structură de bază pentru această funcție aici. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 În primul rând, nimeni nu vrea să-i spun mi ce înseamnă că Int? 885 00:50:23,460 --> 00:50:25,160 Trebuie să avem în această funcție. 886 00:50:25,160 --> 00:50:26,709 >> Audiența: strlen [neauzit]. 887 00:50:26,709 --> 00:50:27,500 PROFESOR: Exact. 888 00:50:27,500 --> 00:50:31,140 Deci, orice se întâmplă aici, avem nevoie să se întoarcă un întreg. 889 00:50:31,140 --> 00:50:36,367 Și specificate în spec, vrem să return-- 890 00:50:36,367 --> 00:50:37,700 Du-te pentru ea baieti, doar continua. 891 00:50:37,700 --> 00:50:40,480 Totul este bine. 892 00:50:40,480 --> 00:50:42,960 Mănâncă tot așa că nu am să-l ia înapoi, de fapt. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int doar înseamnă că ești va întoarce un întreg. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Ce este aceasta e stea char? 897 00:50:57,106 --> 00:50:58,640 Ce înseamnă asta? 898 00:50:58,640 --> 00:51:00,879 >> Audiența: Ca, ceea ce se intrare în. 899 00:51:00,879 --> 00:51:01,670 PROFESOR: Exact. 900 00:51:01,670 --> 00:51:04,142 Și ceea ce este aproape același lucru ca stea char? 901 00:51:04,142 --> 00:51:04,850 Audiența: String? 902 00:51:04,850 --> 00:51:05,641 PROFESOR: Exact. 903 00:51:05,641 --> 00:51:09,080 Deci, tot ce facem este da această un pointer la un șir. 904 00:51:09,080 --> 00:51:09,580 BINE. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Misto. 907 00:51:13,360 --> 00:51:16,650 >> De asemenea, nu uita, dacă uităm pentru a vă oferi aceste paranteze, 908 00:51:16,650 --> 00:51:18,330 nu uitați să le scrie singur. 909 00:51:18,330 --> 00:51:20,720 Pentru că, teoretic, codul este incorect dacă uitați să le scrie. 910 00:51:20,720 --> 00:51:21,803 Doar acordați întotdeauna atenție. 911 00:51:21,803 --> 00:51:23,750 Ca, lucrurile mici pe care nu le observa 912 00:51:23,750 --> 00:51:26,917 atunci când sunteți de programare pe laptop, pentru că laptop-ul o face pentru tine? 913 00:51:26,917 --> 00:51:28,624 Nu uita, atunci când sunteți scris de mână. 914 00:51:28,624 --> 00:51:29,170 Da? 915 00:51:29,170 --> 00:51:30,954 >> Audiența: Dar cum incorect? 916 00:51:30,954 --> 00:51:33,190 Cum ar fi, nu vom obține întreaga problemă greșit? 917 00:51:33,190 --> 00:51:34,190 >> PROFESOR: Nu, nu. 918 00:51:34,190 --> 00:51:34,860 Nu vă faceți griji. 919 00:51:34,860 --> 00:51:39,270 Este de fapt teoretic posibil pentru tine de a obține puncte complete pe o întrebare 920 00:51:39,270 --> 00:51:41,980 chiar dacă codul va nu a alerga în viața reală. 921 00:51:41,980 --> 00:51:46,052 Vă sugerez să nu încercați pentru a face să se întâmple asta. 922 00:51:46,052 --> 00:51:48,260 De exemplu, cum ar fi în cazul în care totul e aici este corect, 923 00:51:48,260 --> 00:51:51,850 dar uitați un colon sau o consolă, codul nu va rula de fapt. 924 00:51:51,850 --> 00:51:53,740 Dar putem fi milostivi. 925 00:51:53,740 --> 00:51:54,394 >> Da? 926 00:51:54,394 --> 00:51:56,050 >> Audiența: Nu trebuie să comentariu pe scrisul de mână nostru? 927 00:51:56,050 --> 00:51:57,758 >> PROFESOR: Nu, nu, nu griji despre asta. 928 00:51:57,758 --> 00:51:58,440 Nu comentând. 929 00:51:58,440 --> 00:51:59,400 Stil ar trebui să fie bun. 930 00:51:59,400 --> 00:52:01,470 Cum ar fi, nu Smush totul pe o singură linie. 931 00:52:01,470 --> 00:52:04,580 Noi nu va fi fericit cu tine, dacă faci asta. 932 00:52:04,580 --> 00:52:07,250 >> Nimeni nu vrea să da-mi prima linie? 933 00:52:07,250 --> 00:52:08,633 Sugestie, este foarte ușor. 934 00:52:08,633 --> 00:52:09,320 >> Da? 935 00:52:09,320 --> 00:52:11,920 >> Audiența: Int, n este egal cu zero. 936 00:52:11,920 --> 00:52:13,734 Doar înființat contra. 937 00:52:13,734 --> 00:52:15,900 PROFESORUL: Deci vrem ceva un fel de contor, nu? 938 00:52:15,900 --> 00:52:19,780 Mă duc să-l numească "conta" de dragul de lizibilitate. 939 00:52:19,780 --> 00:52:21,265 Ce vrem să-l egală cu? 940 00:52:21,265 --> 00:52:21,890 >> Audiența: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESOR: Da. 942 00:52:23,840 --> 00:52:24,340 Punct şi virgulă. 943 00:52:24,340 --> 00:52:26,250 Este, de asemenea, punct și virgulă de desen, foarte ciudat. 944 00:52:26,250 --> 00:52:28,870 Doar practica face asta. 945 00:52:28,870 --> 00:52:31,990 >> Deci, vrem sa avem mai întâi un contor de tip int. 946 00:52:31,990 --> 00:52:35,360 Pentru că vrem să numere până cum mai multe caractere sau litere sunt 947 00:52:35,360 --> 00:52:36,780 în acest șir, nu? 948 00:52:36,780 --> 00:52:38,330 Primul pas foarte usor. 949 00:52:38,330 --> 00:52:42,140 >> OK, poate un pic mai complex acum, cum vom face acest lucru? 950 00:52:42,140 --> 00:52:45,400 Nimeni nu vrea să da-mi linie de cod 951 00:52:45,400 --> 00:52:48,450 care poate fi capabil de a ajuta bucla prin orice e? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Da, sufletul curajos în spate? 954 00:52:56,900 --> 00:53:06,832 >> Audiența: OK, deci în timp ce punctul asteriscuri, The Da, vedeta s, 955 00:53:06,832 --> 00:53:09,465 nu este egal cu zero, atunci faci ceva? 956 00:53:09,465 --> 00:53:11,090 PROFESORUL: Asta e foarte, foarte aproape. 957 00:53:11,090 --> 00:53:11,835 Foarte aproape. 958 00:53:11,835 --> 00:53:13,710 Deci, am de gând să abordeze două lucruri cu asta. 959 00:53:13,710 --> 00:53:18,240 Mai întâi de toate, nu e exact zero. 960 00:53:18,240 --> 00:53:20,110 Ce este? 961 00:53:20,110 --> 00:53:22,550 Este terminatorul nul, care este backslash zero. 962 00:53:22,550 --> 00:53:24,960 Astfel încât acestea sunt diferite în ceea ce privește modul în care sunt stocate. 963 00:53:24,960 --> 00:53:26,270 Deci tu ești foarte aproape. 964 00:53:26,270 --> 00:53:30,330 >> Și în al doilea rând, nu vrem pentru a muta doar indicatorul. 965 00:53:30,330 --> 00:53:32,320 Vrem să efectiv acces la valorile, nu? 966 00:53:32,320 --> 00:53:34,050 Și așa cum facem asta? 967 00:53:34,050 --> 00:53:34,550 Foarte usor. 968 00:53:34,550 --> 00:53:36,841 Nu te gândi la indicii, Nu cred că despre amintiri. 969 00:53:36,841 --> 00:53:38,525 Du-te înapoi la doua saptamani de acest curs. 970 00:53:38,525 --> 00:53:39,555 >> Audiența: [neauzit]. 971 00:53:39,555 --> 00:53:40,680 PROFESORUL: Ca de, îți amintești? 972 00:53:40,680 --> 00:53:41,400 Care sunt siruri de caractere? 973 00:53:41,400 --> 00:53:42,650 Cum sunt stocate în memorie? 974 00:53:42,650 --> 00:53:43,300 >> Audiența: Sunt ridicat. 975 00:53:43,300 --> 00:53:43,810 >> PROFESORUL: Ei sunt ridicate. 976 00:53:43,810 --> 00:53:45,550 Deci, cum putem accesa fiecare caracter în interiorul? 977 00:53:45,550 --> 00:53:46,466 >> Audiența: [neauzit]. 978 00:53:46,466 --> 00:53:47,530 PROFESOR: Exact. 979 00:53:47,530 --> 00:53:53,195 Deci, ce se întâmplă în interiorul while-- aici? 980 00:53:53,195 --> 00:53:54,940 S de - 981 00:53:54,940 --> 00:53:55,920 >> Audiența: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESOR: Oh, nu există, nu? 983 00:53:58,216 --> 00:53:59,620 >> Audiența: Oh, conta? 984 00:53:59,620 --> 00:54:01,640 >> PROFESORUL: Putem doar utiliza conta, nu putem? 985 00:54:01,640 --> 00:54:03,050 >> Audiența: Îmi pare rău, l-am sunat eu. 986 00:54:03,050 --> 00:54:04,341 >> PROFESOR: Da, totul e bine. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Avem o variabilă aici e fost deja declarate ca contra noastră. 989 00:54:10,760 --> 00:54:13,650 Deci, de ce nu ne-am folosi acest pentru a vă deplasa prin bucla în timp ce? 990 00:54:13,650 --> 00:54:15,230 Are sens? 991 00:54:15,230 --> 00:54:20,864 >> Deci, în timp ce s de count-- nimeni nu vrea să-mi dea ceea ce se întâmplă după aici? 992 00:54:20,864 --> 00:54:22,030 Audiența: ea nu egal. 993 00:54:22,030 --> 00:54:23,405 PROFESORUL: nu este egal, nu? 994 00:54:23,405 --> 00:54:26,200 Este Bang este egal, semn de exclamare este egal, 995 00:54:26,200 --> 00:54:28,500 tot ce vreți să numesc nu equal-- 996 00:54:28,500 --> 00:54:29,496 >> Audiența: [neauzit]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESOR: Da. 998 00:54:30,990 --> 00:54:37,110 Amintiți-vă un singur citat este pentru un char, ghilimele duble sunt pentru un șir. 999 00:54:37,110 --> 00:54:38,630 Fiți atenți atunci când le folosesc. 1000 00:54:38,630 --> 00:54:42,430 Deci, atunci când ne uităm prin matrice, ultimul caracter, 1001 00:54:42,430 --> 00:54:46,420 știm că nu vrem să fie backslash zero. 1002 00:54:46,420 --> 00:54:47,340 >> Deci, în timp. 1003 00:54:47,340 --> 00:54:48,840 Noi nu suntem la sfârșitul șirului. 1004 00:54:48,840 --> 00:54:52,335 Ce vrem sa facem in interiorul? 1005 00:54:52,335 --> 00:54:55,269 >> Audiența: Vrem să adăugați la contra așa că contează plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESOR: Exact. 1007 00:54:56,060 --> 00:55:03,064 Deci, aici vom face conta, conta plus plus. 1008 00:55:03,064 --> 00:55:03,980 Lipsește o linie mai mult. 1009 00:55:03,980 --> 00:55:05,090 Suntem aproape acolo. 1010 00:55:05,090 --> 00:55:07,398 Ce ne uita să facem? 1011 00:55:07,398 --> 00:55:08,770 >> Audiența: Revenind la zero? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESORUL: Vrei să se întoarcă la zero? 1013 00:55:10,820 --> 00:55:12,962 >> Audiența: Nu, revenind la strlen. 1014 00:55:12,962 --> 00:55:13,511 Stai asa. 1015 00:55:13,511 --> 00:55:14,760 PROFESORUL: care este stocat in? 1016 00:55:14,760 --> 00:55:15,090 Audiența: Count. 1017 00:55:15,090 --> 00:55:15,589 Conta. 1018 00:55:15,589 --> 00:55:17,150 PROFESOR: Exact. 1019 00:55:17,150 --> 00:55:20,760 Deci, aici vom să se întoarcă conta. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Pentru că ceea ce suntem aici ultimately-- 1022 00:55:25,380 --> 00:55:29,780 avem o variabilă contor care este merge pentru a incrementa prin șir nostru. 1023 00:55:29,780 --> 00:55:33,050 Vom continua, ține merge, în jurul valorii de și în jurul în această buclă. 1024 00:55:33,050 --> 00:55:37,700 Și în timp ce noi nu suntem pe la sfârșitul acestui string, care este terminatorul nul. 1025 00:55:37,700 --> 00:55:40,410 >> Și de fiecare dată când trecem prin aceasta, vom adăuga la contra noastră. 1026 00:55:40,410 --> 00:55:42,640 Și vom mai departe de-a lungul în această matrice. 1027 00:55:42,640 --> 00:55:44,880 Și la sfârșitul anului, odată ce vom lovit terminatorul nul, 1028 00:55:44,880 --> 00:55:48,469 știm, oh, putem pauză, întoarce numărul. 1029 00:55:48,469 --> 00:55:49,260 Avem strlen nostru. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Are toată lumea obține cât acest lucru a fost pus în aplicare? 1032 00:55:56,400 --> 00:55:58,830 În timp ce loops-- Știu că nu avem face prea mult cu ei, 1033 00:55:58,830 --> 00:56:01,240 dar sunt, de obicei, foarte, foarte util dacă 1034 00:56:01,240 --> 00:56:05,390 Nu știu ce te opri condiție trebuie neapărat să fie. 1035 00:56:05,390 --> 00:56:06,220 >> Întrebare? 1036 00:56:06,220 --> 00:56:10,080 >> Audiența: Putem scrie nul cu condiția timp? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESORUL: în timp ce? 1038 00:56:10,940 --> 00:56:15,304 Da, astfel încât în ​​această problemă am ai avut baieti presupunem că e nu va fi nul. 1039 00:56:15,304 --> 00:56:17,220 Pentru că amintiți-vă, Teoretic, dacă ți-am dat 1040 00:56:17,220 --> 00:56:21,180 un pointer care a fost prea mare de memorie, v-ar da nul, nu? 1041 00:56:21,180 --> 00:56:23,770 Asta e ceea ce de operare sistem ar face. 1042 00:56:23,770 --> 00:56:26,960 >> Deci, dacă nu ți-am spus să-și asume s-ar fi nul, trebuie să verificați. 1043 00:56:26,960 --> 00:56:32,050 Deci aici, v-ar face, în cazul în care s este egal egal nul, întoarceți unul. 1044 00:56:32,050 --> 00:56:33,028 Ceva de genul. 1045 00:56:33,028 --> 00:56:34,153 Audiența: [neauzit] zero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESOR: OK, eu voi spune tu de ce nu putem face asta. 1048 00:56:39,370 --> 00:56:43,357 Pentru că amintiți-vă în memorie, chiar, aici. 1049 00:56:43,357 --> 00:56:43,940 Vom merge aici. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Ai blocuri gigant de memorie cu toate grilele 1052 00:56:54,090 --> 00:56:56,680 care stochează valori diferite, nu? 1053 00:56:56,680 --> 00:57:00,110 Și atunci tot un șir este-- pentru exemplu, dacă vrem să intrare salut, 1054 00:57:00,110 --> 00:57:05,490 aceasta ar fi H-E-L-L-O backslash la zero, nu? 1055 00:57:05,490 --> 00:57:09,570 Și apoi, cine știe, ca aleatoare lucruri care sunt aici după el. 1056 00:57:09,570 --> 00:57:11,220 >> Nu știm de fapt ceea ce este acolo. 1057 00:57:11,220 --> 00:57:13,350 Și așa dacă ar fi să faci în loc de backslash la zero, 1058 00:57:13,350 --> 00:57:15,590 nul, aceasta nu poate fi nul. 1059 00:57:15,590 --> 00:57:17,680 Pentru că doar poate însemna alte lucruri aleatoare 1060 00:57:17,680 --> 00:57:19,270 care nu fac parte din șirul. 1061 00:57:19,270 --> 00:57:23,219 Și astfel modul în care ne mereu știm că un șir se termină cu un backslash este zero. 1062 00:57:23,219 --> 00:57:25,760 Și așa că e întotdeauna cum am verificați pentru a vedea la sfârșitul unui șir. 1063 00:57:25,760 --> 00:57:30,820 >> Nul, tot ceea ce înseamnă este, dacă aveți un pointer inexistente, în primul rând, 1064 00:57:30,820 --> 00:57:36,160 sau în cazul în care memoria este doar atât de mare încât nu se poate întoarce, atunci ar fi nul. 1065 00:57:36,160 --> 00:57:40,150 Deci, să fie foarte atenți atunci când diferențierea diferența dintre nul 1066 00:57:40,150 --> 00:57:42,130 și backslash zero. 1067 00:57:42,130 --> 00:57:43,670 Da. 1068 00:57:43,670 --> 00:57:46,886 >> Toată lumea OK cu asta? 1069 00:57:46,886 --> 00:57:48,150 BINE. 1070 00:57:48,150 --> 00:57:50,440 >> Așa că a trebuit voi scrie strlen. 1071 00:57:50,440 --> 00:57:53,790 Practic am putea cere, de asemenea, vă scrie out de la A la I, amintiți-vă că "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 sau orice vreți să-l suni? 1073 00:57:55,400 --> 00:57:58,010 Care funcționează în Vigenere și Cezar, care 1074 00:57:58,010 --> 00:58:00,900 convertește o valoare ASCII pentru un număr întreg? 1075 00:58:00,900 --> 00:58:04,360 Care, de asemenea, a venit la chestionare anterioare de funcții v-am cerut să scrie. 1076 00:58:04,360 --> 00:58:08,280 >> Destul de mult orice funcție pe care le-am folosit și este 1077 00:58:08,280 --> 00:58:11,660 foarte ușor să te scrie, Senzorii place este mai mică, 1078 00:58:11,660 --> 00:58:14,620 este superioară, pentru a reduce, la partea superioară. 1079 00:58:14,620 --> 00:58:17,964 Funcții care ar converti o șir de litere mici în majuscule. 1080 00:58:17,964 --> 00:58:19,380 Știm cu toții cum să faci asta, nu? 1081 00:58:19,380 --> 00:58:21,100 Este destul de ușor. 1082 00:58:21,100 --> 00:58:24,770 Vreau doar să vă asigurați că ați can-- este același proces de gândire. 1083 00:58:24,770 --> 00:58:26,940 Trebuie doar repeta prin și te întorci lucrurile. 1084 00:58:26,940 --> 00:58:30,190 Ori conta sau atunci când porniți lucrurile diferit. 1085 00:58:30,190 --> 00:58:32,280 >> Mi-ar suggest-- I Nu știu dacă vom 1086 00:58:32,280 --> 00:58:39,080 să vă rog să memoreze ce capitalul A sau Z de capital, sau litere mici A sau litere mici 1087 00:58:39,080 --> 00:58:42,640 z sunt în ASCII, dar aș sugera probabil scris că în caz 1088 00:58:42,640 --> 00:58:44,124 noi facem. 1089 00:58:44,124 --> 00:58:45,540 Doar așa voi avea o referință. 1090 00:58:45,540 --> 00:58:47,180 Ca majuscule A este, ceea ce, 197? 1091 00:58:47,180 --> 00:58:51,320 Și apoi cu litere mici este ca 50 ceva. 1092 00:58:51,320 --> 00:58:52,492 65, da, acolo te duci. 1093 00:58:52,492 --> 00:58:54,950 Deci, doar destul de mult știu diferență între ele este 32. 1094 00:58:54,950 --> 00:58:57,670 Asta e destul de important. 1095 00:58:57,670 --> 00:58:58,170 Da. 1096 00:58:58,170 --> 00:59:01,445 Sunt bine pe asta? 1097 00:59:01,445 --> 00:59:01,945 BINE. 1098 00:59:01,945 --> 00:59:03,109 >> Audiența: Am putea teoretic scrie unele 1099 00:59:03,109 --> 00:59:04,410 dintre acestea, precum și în jos pe little-- nostru 1100 00:59:04,410 --> 00:59:07,035 >> PROFESORUL: Ai teoretic ar putea copia doar funcția jos. 1101 00:59:07,035 --> 00:59:08,482 Asta e adevarat. 1102 00:59:08,482 --> 00:59:11,080 >> Audiența: Nu [neauzit]. 1103 00:59:11,080 --> 00:59:12,720 >> Profesorul: Voi avea o foaie. 1104 00:59:12,720 --> 00:59:14,194 Voi avea o foaie de notă. 1105 00:59:14,194 --> 00:59:14,860 Puteți să-l introduceți. 1106 00:59:14,860 --> 00:59:15,490 Puteți să-l scrie. 1107 00:59:15,490 --> 00:59:17,031 Poți să faci ce vrei cu ea. 1108 00:59:17,031 --> 00:59:18,530 Da. 1109 00:59:18,530 --> 00:59:21,406 Deci, teoretic, în cazul în care vrei sa, du-te pentru. 1110 00:59:21,406 --> 00:59:23,338 >> Audiența: [inaudibil] dar nu într-adevăr 1111 00:59:23,338 --> 00:59:25,994 trebuie neapărat să-și amintească valoarea, putem doar 1112 00:59:25,994 --> 00:59:28,914 Utilizați Pentru superioară sau la de funcții inferioară, dreapta? 1113 00:59:28,914 --> 00:59:29,580 PROFESOR: Da. 1114 00:59:29,580 --> 00:59:32,740 Dar dacă v-am oferit o întrebare care spune scrie la partea superioară, 1115 00:59:32,740 --> 00:59:34,350 atunci va trebui să-l scrie. 1116 00:59:34,350 --> 00:59:38,150 Deci, voi poate presupune că baieti au acces la toate funcțiile, 1117 00:59:38,150 --> 00:59:41,523 dar dacă doriți să utilizați pentru a sus sau mai mici, ce ai, de asemenea, să faci? 1118 00:59:41,523 --> 00:59:43,840 >> Audiența: [inaudibil] utilizați CS50 [Inaudibil] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESORUL: Este CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Fii atent aici. 1122 00:59:48,310 --> 00:59:50,640 >> Deci, pentru a sus, pentru a reduce, este superioară, este inferior, 1123 00:59:50,640 --> 00:59:52,990 funcții care implică manipularea string sunt 1124 00:59:52,990 --> 00:59:55,490 toate în fie ascii sau în cadrul bibliotecii matematica 1125 00:59:55,490 --> 00:59:57,350 sau în cadrul bibliotecii șir. 1126 00:59:57,350 --> 01:00:00,290 Deci, dacă voi folosi cele funcții, să fie atent să-și amintească 1127 01:00:00,290 --> 01:00:01,451 pentru a include acel antet. 1128 01:00:01,451 --> 01:00:03,950 Asa ca, probabil, de asemenea, vă ceva doresc să includă în foaia de, 1129 01:00:03,950 --> 01:00:04,892 care sunt antet? 1130 01:00:04,892 --> 01:00:06,600 Care sunt bibliotecile ai folosit? 1131 01:00:06,600 --> 01:00:08,550 Ce funcții sunt interiorul acestor biblioteci? 1132 01:00:08,550 --> 01:00:09,230 Este important. 1133 01:00:09,230 --> 01:00:10,420 >> Da? 1134 01:00:10,420 --> 01:00:12,570 >> Audiența: Ar putea ne-am polițist afară și de a face hashtag 1135 01:00:12,570 --> 01:00:14,955 prin absolut fiecare scrisoare ne-am vreodată 1136 01:00:14,955 --> 01:00:17,340 vazut ca pe la toate întrebările? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESORUL: Ai putea. 1138 01:00:18,320 --> 01:00:20,361 Nu știu cât de fericit vom fi la gradul 1139 01:00:20,361 --> 01:00:25,090 că, atunci când testul fiecare bucată de cod este de două ori, atâta timp cât aceasta trebuie să fie. 1140 01:00:25,090 --> 01:00:27,200 Nu știu, am putea scoate un punct de stil. 1141 01:00:27,200 --> 01:00:28,790 Dar teoretic dvs. Codul ar fi corect. 1142 01:00:28,790 --> 01:00:30,915 Voi putea polițist afară și includ doar totul. 1143 01:00:30,915 --> 01:00:32,044 Asta e prea bine, da. 1144 01:00:32,044 --> 01:00:32,960 Audiența: [neauzit]. 1145 01:00:32,960 --> 01:00:33,270 PROFESOR: Da. 1146 01:00:33,270 --> 01:00:34,900 Aș sugera că, deși nu fac. 1147 01:00:34,900 --> 01:00:35,505 Da. 1148 01:00:35,505 --> 01:00:36,130 Audiența: cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESORUL: Bună întrebare. 1150 01:00:36,620 --> 01:00:37,480 Audiența: Deci, cel mai rău caz. 1151 01:00:37,480 --> 01:00:38,563 PROFESORUL: Cel mai rău caz. 1152 01:00:38,563 --> 01:00:40,350 Dacă ați uitat cu totul, ai putea face asta. 1153 01:00:40,350 --> 01:00:40,850 Da. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Da, cod este chiar acolo. 1156 01:00:45,400 --> 01:00:49,176 Am folosit n loc de conta, dar, tu Știu, Indiferent pluteste barca ta. 1157 01:00:49,176 --> 01:00:51,092 Audiența: Stai, asa ca am nu ar trebui să hashtag 1158 01:00:51,092 --> 01:00:53,460 includ ca suntem cu începere de la int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESOR: Da, tocmai am presupus că ni sa cerut să scrie funcția. 1161 01:00:59,924 --> 01:01:02,340 Dacă ați vrut să fie sigur, probabil ar putea pune acolo. 1162 01:01:02,340 --> 01:01:05,650 Dar eu nu am deranja, da. 1163 01:01:05,650 --> 01:01:09,919 >> Nici măcar nu știu dacă nevoie de nici o bibliotecă pentru asta. 1164 01:01:09,919 --> 01:01:12,710 Pentru că nu ești într-adevăr de imprimare out nimic sau ceva, nu? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Da, nu știu dacă aveți nevoie de o bibliotecă. 1167 01:01:19,568 --> 01:01:22,400 >> BINE. 1168 01:01:22,400 --> 01:01:26,020 Aceasta este, de asemenea, un pic mai mult de-a lungul liniile de manipulare memorie. 1169 01:01:26,020 --> 01:01:27,400 Acest tip de pic dificil. 1170 01:01:27,400 --> 01:01:28,960 Gândiți-vă la acest. 1171 01:01:28,960 --> 01:01:30,580 Ai o funcție numită func. 1172 01:01:30,580 --> 01:01:33,570 Aș fi putut să-l numit orice, dar aleg să-l numească func. 1173 01:01:33,570 --> 01:01:36,000 O am de mai sus principala mea. 1174 01:01:36,000 --> 01:01:39,790 Amintiți-vă, doriți să aveți o funcție după dumneavoastră principal, 1175 01:01:39,790 --> 01:01:42,370 doriți să vă asigurați că includ prototipul sus. 1176 01:01:42,370 --> 01:01:45,750 >> Dar în acest caz a fost atât de scurt că am simțit că aș putea doar 1177 01:01:45,750 --> 01:01:47,260 includ o deasupra principal. 1178 01:01:47,260 --> 01:01:51,170 Nu am nevoie pentru a avea prototipul, deoarece este deja scris mai sus. 1179 01:01:51,170 --> 01:01:55,430 Deci, tot ce fac în funcție meu principal este de a crea întreg x este egal cu 10. 1180 01:01:55,430 --> 01:02:00,490 Sun funcția mea func, și apoi de imprimare ceva. 1181 01:02:00,490 --> 01:02:02,840 >> Și atunci de fapt ce func face. 1182 01:02:02,840 --> 01:02:04,340 Vreți să cred că prin asta. 1183 01:02:04,340 --> 01:02:05,423 Pentru că este un pic dificil. 1184 01:02:05,423 --> 01:02:07,220 Este foarte, foarte dificil, de fapt. 1185 01:02:07,220 --> 01:02:09,549 Gândiți-vă prin ceea ce aceasta Programul ar fi Ieșirea. 1186 01:02:09,549 --> 01:02:10,840 Îți dau două minute voi. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Discuții bun? 1189 01:03:37,891 --> 01:03:38,853 >> Audiența: Da. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESOR: Da. 1191 01:03:39,815 --> 01:03:42,220 Bine, deci acest lucru este dificil pentru un motiv. 1192 01:03:42,220 --> 01:03:44,845 Și de aceea am vrut sa aduca asta atentia tuturor. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Nimeni nu vrea să-mi dea o sugestie, o încercare de? 1195 01:03:51,147 --> 01:03:52,230 Ce s-ar imprima asta? 1196 01:03:52,230 --> 01:03:53,930 Total bine dacă te înșeli. 1197 01:03:53,930 --> 01:03:55,619 Da? 1198 01:03:55,619 --> 01:03:59,483 >> Audiența: Cred că e 100 și apoi 10 pe doua linii separate. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESORUL: Și un 10? 1200 01:04:00,940 --> 01:04:03,154 Are cineva orice alte presupuneri? 1201 01:04:03,154 --> 01:04:04,150 Da? 1202 01:04:04,150 --> 01:04:09,040 >> Audiența: Poate doar pentru că 10 func nu se întoarce nimic? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESOR: OK, așa că am au ghici numărul unu 1204 01:04:11,610 --> 01:04:14,990 este că ghici numărul doi este doar de gând să imprima 10. 1205 01:04:14,990 --> 01:04:17,623 Are cineva orice alte presupuneri? 1206 01:04:17,623 --> 01:04:19,654 BINE. 1207 01:04:19,654 --> 01:04:21,070 Așa că haideți să plimbare prin asta, nu? 1208 01:04:21,070 --> 01:04:23,903 Ori de câte ori veți obține o bucată de cod, nu uita doar la el și să fie ca, 1209 01:04:23,903 --> 01:04:25,060 ah, e atât de mult lucruri! 1210 01:04:25,060 --> 01:04:26,460 Sunt așa confuz! 1211 01:04:26,460 --> 01:04:28,220 Cum ar fi, calmează-te jos. 1212 01:04:28,220 --> 01:04:31,602 Știu doar că ai putea doar uite prin codul linie cu linie. 1213 01:04:31,602 --> 01:04:32,310 Asta e tot ce este. 1214 01:04:32,310 --> 01:04:33,840 E ca citind o carte. 1215 01:04:33,840 --> 01:04:38,000 >> Deci, cu orice funcție, Noi întotdeauna încep de la principal. 1216 01:04:38,000 --> 01:04:40,860 Așa că am de gând să încep de la void main Int, 1217 01:04:40,860 --> 01:04:43,010 chiar programului deja a alerga în jos, nu? 1218 01:04:43,010 --> 01:04:45,070 Start la în void main. 1219 01:04:45,070 --> 01:04:48,030 Int x este egal cu 10. 1220 01:04:48,030 --> 01:04:50,400 >> Deci, am de gând să-l ștergeți acest. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Am de gând să atragă în memoria doar ca să baietii pot fel de a vedea ce se întâmplă. 1223 01:04:58,470 --> 01:05:02,190 >> Amintiți-vă aici avem stack nostru? 1224 01:05:02,190 --> 01:05:05,810 Până aici avem nostru heap undeva aici. 1225 01:05:05,810 --> 01:05:07,470 Stivă crește, nu? 1226 01:05:07,470 --> 01:05:10,150 Și în cadrul stivei, aveți rețea funcționează, precum și 1227 01:05:10,150 --> 01:05:12,230 toate variabilele de rețea locale. 1228 01:05:12,230 --> 01:05:14,310 >> Deci, aici, int x egal 10. 1229 01:05:14,310 --> 01:05:17,670 În cadrul funcției nostru principal suntem creând o variabilă numită x. 1230 01:05:17,670 --> 01:05:20,590 Suntem setare care egal cu 10. 1231 01:05:20,590 --> 01:05:24,200 Aici ai niște X, și tu ești setarea pe care egală cu 10, dreapta, 1232 01:05:24,200 --> 01:05:25,400 în principal. 1233 01:05:25,400 --> 01:05:27,430 Toată lumea bună? 1234 01:05:27,430 --> 01:05:28,070 >> Funcţie. 1235 01:05:28,070 --> 01:05:30,330 Deci, acum, în principal nostru funcție, suntem de asteptare 1236 01:05:30,330 --> 01:05:31,810 funcția am scris mai sus. 1237 01:05:31,810 --> 01:05:34,550 Deci, suntem acum intră a doua funcție. 1238 01:05:34,550 --> 01:05:40,120 Vom crea un alt variabila int x este egal cu 100. 1239 01:05:40,120 --> 01:05:42,410 Ce se întâmplă aici, la stiva? 1240 01:05:42,410 --> 01:05:46,980 Ce se întâmplă atunci când un apel funcție care creează noi variabile? 1241 01:05:46,980 --> 01:05:50,038 Ce se întâmplă aici, la stiva? 1242 01:05:50,038 --> 01:05:52,134 >> Audiența: [inaudibil] grămezi pe partea de sus? 1243 01:05:52,134 --> 01:05:52,800 PROFESOR: Da. 1244 01:05:52,800 --> 01:05:54,050 Deci, se creează de fapt o copie. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Și un fel de grămezi pe partea de sus. 1247 01:05:57,740 --> 01:06:00,700 Gândiți-vă la stack-- A stivă de cărți, un teanc de nimic. 1248 01:06:00,700 --> 01:06:06,520 Mormane pe partea de sus, pentru prima dată în ultimul out, ultimul intrat, primul ieșit. 1249 01:06:06,520 --> 01:06:08,471 >> Deci o să creeze un X aici. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Asta va avea toate funcs variabile. 1252 01:06:14,450 --> 01:06:14,950 Grozav. 1253 01:06:14,950 --> 01:06:20,980 Deci, acum avem două x diferite de faptul că reprezintă două lucruri foarte diferite. 1254 01:06:20,980 --> 01:06:24,470 Apoi vom imprima din întreg de X. 1255 01:06:24,470 --> 01:06:26,430 Așa că haideți să imprimați 100, nu? 1256 01:06:26,430 --> 01:06:29,389 Pentru că aici este 100. 1257 01:06:29,389 --> 01:06:31,680 Deci, asta e primul lucru pe care că va imprima. 1258 01:06:31,680 --> 01:06:35,710 Deoarece această funcție se întoarce nimic, acum această funcție, că linia principală în 1259 01:06:35,710 --> 01:06:37,070 este gata. 1260 01:06:37,070 --> 01:06:39,160 Toată lumea bună cu mine până acum? 1261 01:06:39,160 --> 01:06:43,034 >> Deci suntem acum prin intermediul a două din cele trei linii de funcții noastre principale. 1262 01:06:43,034 --> 01:06:44,450 Acum vom linia a treia. 1263 01:06:44,450 --> 01:06:46,350 Vom printf. 1264 01:06:46,350 --> 01:06:48,222 Ce este acest X în principal? 1265 01:06:48,222 --> 01:06:49,263 Ce ce reprezinta? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Ce valoare nu este X acum? 1268 01:06:54,280 --> 01:06:55,220 >> Audiența: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESORUL: E 100? 1270 01:06:56,799 --> 01:06:57,590 Audiența: Încă 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESORUL: Încă 10. 1272 01:06:58,878 --> 01:07:00,870 Da. 1273 01:07:00,870 --> 01:07:06,810 Pentru că amintiți-vă, în func nostru, X este egal cu 100. 1274 01:07:06,810 --> 01:07:09,690 Dar dacă ne întoarcem înapoi funcției nostru principal, 1275 01:07:09,690 --> 01:07:12,440 că variabila este stocat într-o loc diferit pe stivă nostru. 1276 01:07:12,440 --> 01:07:16,250 >> Deci, acum, avem nevoie să ne întoarcem la stivă principal, rețea variabile locale. 1277 01:07:16,250 --> 01:07:18,460 Și aici x este egal cu 10. 1278 01:07:18,460 --> 01:07:20,300 Și așa vom imprima 10. 1279 01:07:20,300 --> 01:07:22,530 >> Deci, ea a fost absolut corect. 1280 01:07:22,530 --> 01:07:25,053 Vom avea ieșire de 100 și 10. 1281 01:07:25,053 --> 01:07:25,553 Da? 1282 01:07:25,553 --> 01:07:28,700 Audiența: Când malloc, este IT grămadă sau stiva, care este [neauzit]? 1283 01:07:28,700 --> 01:07:31,950 PROFESORUL: Când malloc, sunteți luați de memorie din heap 1284 01:07:31,950 --> 01:07:32,830 și alocarea. 1285 01:07:32,830 --> 01:07:34,950 Astfel încât nu aveți să te pui cu toate astea. 1286 01:07:34,950 --> 01:07:38,100 Deci cred ca MENIUL mai mare aici este ceva numit domeniu de aplicare. 1287 01:07:38,100 --> 01:07:39,650 >> Pentru cei dintre voi care au fost la sesiunea de reexaminare noaptea trecută, 1288 01:07:39,650 --> 01:07:41,080 am vorbit pe scurt despre acest lucru. 1289 01:07:41,080 --> 01:07:45,380 Domeniul de aplicare definește modul și atunci când există variabilele. 1290 01:07:45,380 --> 01:07:48,050 Sau în ce rame există variabilele. 1291 01:07:48,050 --> 01:07:51,690 >> Destul de mult a statului de degetul mare, în general, este, variables-- dumneavoastră dacă le creați 1292 01:07:51,690 --> 01:07:56,660 în interiorul braces-- buclat acestea există numai în interiorul acestor acolade. 1293 01:07:56,660 --> 01:08:00,312 >> Deci, de exemplu, în funcție de nostru func, veți vedea cele două acolade. 1294 01:08:00,312 --> 01:08:02,020 Dacă sunteți crearea nimic în interiorul acestuia, 1295 01:08:02,020 --> 01:08:06,500 sansele sunt tot ce faci este crearea unui stack și stocarea că există. 1296 01:08:06,500 --> 01:08:07,430 Același lucru în principal. 1297 01:08:07,430 --> 01:08:09,950 Asta e doar stocat în interiorul principal. 1298 01:08:09,950 --> 01:08:13,560 >> De asemenea, vrei să fii foarte, foarte atent aici. 1299 01:08:13,560 --> 01:08:18,310 Deoarece domeniul de aplicare, de asemenea, împrumută se la diferite exemple. 1300 01:08:18,310 --> 01:08:25,950 Astfel, de exemplu, un timp de buclă, pentru int i este egal cu 0. 1301 01:08:25,950 --> 01:08:28,460 I este mai puțin, nu știu, 10. 1302 01:08:28,460 --> 01:08:32,111 Am plus plus. 1303 01:08:32,111 --> 01:08:34,560 Și ai cod interiorul ei, nu? 1304 01:08:34,560 --> 01:08:38,830 >> În cazul în care face acest lucru variabilă, Eu, de fapt, doar există? 1305 01:08:38,830 --> 01:08:40,510 Numai în interiorul pentru bucla. 1306 01:08:40,510 --> 01:08:43,640 Așa că am pariat mulți dintre voi avea întâlnit, probabil, această eroare, atunci când 1307 01:08:43,640 --> 01:08:45,930 faci programe psets tale. 1308 01:08:45,930 --> 01:08:49,990 Câți dintre voi au încercat să i folos in afara de o buclă pentru și a avut o eroare? 1309 01:08:49,990 --> 01:08:53,310 Ca un numere întregi fără referință sau asa ceva? 1310 01:08:53,310 --> 01:08:56,069 >> Motivul care se întâmplă este pentru că aici ești 1311 01:08:56,069 --> 01:08:59,109 crearea de ceva care numai există în cadrul pentru buclă. 1312 01:08:59,109 --> 01:09:01,972 Și dacă încercați să-l utilizați, eu nu există în realitate în afara ei. 1313 01:09:01,972 --> 01:09:04,930 Deci, practic un computer a zis: eu Nu știu despre ce vorbești despre. 1314 01:09:04,930 --> 01:09:08,689 Tot ce știu este că am fost un aici, dar acum nu mai. 1315 01:09:08,689 --> 01:09:12,580 >> Deci, dacă aș fi de a crea un pentru bucla înăuntru, nu? 1316 01:09:12,580 --> 01:09:19,080 Și am de gând să creeze un alt, ca Int J, și l-au făcut tot ce. 1317 01:09:19,080 --> 01:09:23,689 Și aveți un cod în interiorul că bucla, j există doar aici. 1318 01:09:23,689 --> 01:09:26,029 Dar că există, de asemenea, în termen de i. 1319 01:09:26,029 --> 01:09:29,310 Și așa J există numai în acest pentru bucla, 1320 01:09:29,310 --> 01:09:33,850 întrucât am există în totul. 1321 01:09:33,850 --> 01:09:34,500 >> Toată lumea clar? 1322 01:09:34,500 --> 01:09:37,416 Acelasi lucru cu declarații condiționale dacă doriți să creați ceva. 1323 01:09:37,416 --> 01:09:40,390 Acelasi lucru cu bucle timp ce în cazul doriți să creați ceva. 1324 01:09:40,390 --> 01:09:42,390 Asta e ceva de a fi foarte, foarte atent cu privire la. 1325 01:09:42,390 --> 01:09:45,681 Deci, acest lucru a fost o problemă foarte bune în simt că a demonstrat două lucruri. 1326 01:09:45,681 --> 01:09:47,160 A demonstrat în primul rând, domeniul de aplicare. 1327 01:09:47,160 --> 01:09:49,550 Și a demonstrat De asemenea, alocarea de memorie. 1328 01:09:49,550 --> 01:09:54,130 Deoarece voi trebuie să știe că funcții cresc în sus în stivă. 1329 01:09:54,130 --> 01:09:56,710 Și că atunci când apelați funcții, creați 1330 01:09:56,710 --> 01:09:59,060 în esență, un nou teanc de memorie. 1331 01:09:59,060 --> 01:10:02,100 Care este foarte diferit de ceea ce este de memorie de rețea. 1332 01:10:02,100 --> 01:10:03,300 Da. 1333 01:10:03,300 --> 01:10:03,800 Whew! 1334 01:10:03,800 --> 01:10:05,470 Toată lumea pe OK asta? 1335 01:10:05,470 --> 01:10:06,750 Asta a fost confuz. 1336 01:10:06,750 --> 01:10:09,380 Subiecte foarte bune pentru a trece peste, pentru că ești, probabil, 1337 01:10:09,380 --> 01:10:12,255 mergi la a lua unele complicat lucruri de genul asta pe test. 1338 01:10:12,255 --> 01:10:13,350 Da. 1339 01:10:13,350 --> 01:10:13,850 Misto. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Voi pune te 100 pe o line și apoi 10 pe de altă parte. 1342 01:10:18,430 --> 01:10:21,468 Da, foarte bine. 1343 01:10:21,468 --> 01:10:26,350 >> OK, acum voi va primi șansa de a fi Tas. 1344 01:10:26,350 --> 01:10:30,600 Ai să răspundă la toate minunat e-mailurile care le primesc. uneori 1345 01:10:30,600 --> 01:10:34,290 >> Așa că, dragi Andi, văd eu cred ceva e merge în neregulă cu compilator meu. 1346 01:10:34,290 --> 01:10:37,910 Sunt sigur că codul meu este corect, dar I a păstra achiziție o eroare de segmentare 1347 01:10:37,910 --> 01:10:39,074 de fiecare dată când a alerga. 1348 01:10:39,074 --> 01:10:39,740 Ce se intampla? 1349 01:10:39,740 --> 01:10:42,844 Vă rugăm să ajute, o mulțime de dragoste. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Dacă voi ceva ca care cum ați răspunde? 1352 01:10:49,410 --> 01:10:51,860 Acestea sunt de fapt foarte frecvente întrebări vă vom solicita. 1353 01:10:51,860 --> 01:10:54,090 Este dacă, vă vom da un scenariu, vom să ne dea 1354 01:10:54,090 --> 01:10:56,350 cel mai bun ghici la ce se întâmplă. 1355 01:10:56,350 --> 01:11:00,710 Oricine are o lovitură de cuțit la ce se întâmplă? 1356 01:11:00,710 --> 01:11:02,654 Da? 1357 01:11:02,654 --> 01:11:06,056 >> Audiența: Poate dereferentierea null, ceva de genul indicatorul 1358 01:11:06,056 --> 01:11:08,924 este îndreptat la ceva nul. 1359 01:11:08,924 --> 01:11:11,590 PROFESOR: Da, asta ar fi o exemplu de momentul în care s-ar întâmpla. 1360 01:11:11,590 --> 01:11:14,467 Dar ceea ce este imaginea mai mare de ce se întâmplă aici? 1361 01:11:14,467 --> 01:11:17,050 Audiența: Este încerci pentru a accesa memorie care nu ești 1362 01:11:17,050 --> 01:11:18,175 ar trebui să aibă acces la? 1363 01:11:18,175 --> 01:11:19,200 PROFESOR: Exact. 1364 01:11:19,200 --> 01:11:24,800 Deci, cred că de un defect SEG, un off limite, zona restricționată în memorie 1365 01:11:24,800 --> 01:11:27,780 că nu ar trebui să fie ating. 1366 01:11:27,780 --> 01:11:31,670 >> Deci, destul de mult, atunci când sunteți încercarea de a index-- ca de exemplu, 1367 01:11:31,670 --> 01:11:34,110 ați declarat un matrice de la zero la nouă. 1368 01:11:34,110 --> 01:11:37,360 Dar încercați să atingeți că al 10-lea valoare, nu au acces la asta. 1369 01:11:37,360 --> 01:11:38,694 Pentru că nu l-au declarat. 1370 01:11:38,694 --> 01:11:40,943 Și astfel încât computerul dvs. se va să se uite la care să fie ca, 1371 01:11:40,943 --> 01:11:43,440 uh oh, sunteți încercarea de a merge în afara limitelor de un indice. 1372 01:11:43,440 --> 01:11:45,270 Am de gând să vă dau o eroare de segmentare. 1373 01:11:45,270 --> 01:11:46,590 >> Gândiți-vă la cum segment, nu? 1374 01:11:46,590 --> 01:11:49,665 Un segment in plus, vina este atunci când încercați să încalce ceva 1375 01:11:49,665 --> 01:11:50,790 și nu ar trebui să fie acolo. 1376 01:11:50,790 --> 01:11:53,660 Vina segmentare este oricând încercați să atingeți lucruri 1377 01:11:53,660 --> 01:11:54,970 că nu ar trebui să fie ating. 1378 01:11:54,970 --> 01:11:56,815 >> Exemple atât de comună sunt un index. 1379 01:11:56,815 --> 01:11:58,940 Desigur, dacă sunteți încercarea de pentru a atinge, care a fost nul, 1380 01:11:58,940 --> 01:12:00,220 care ar lucra, de asemenea, de asemenea. 1381 01:12:00,220 --> 01:12:02,300 În cazul în care indicatorul a fost încercarea de a atingeți lucruri pe care nu trebuie să atingeți, 1382 01:12:02,300 --> 01:12:03,730 care ar putea lucra, de asemenea, de asemenea. 1383 01:12:03,730 --> 01:12:07,120 Cele mai multe de obicei, veți aceasta într-o matrice. 1384 01:12:07,120 --> 01:12:07,740 Toată lumea bună? 1385 01:12:07,740 --> 01:12:10,374 >> Audiența: Deci, dacă vrei pentru a accesa zecelea punct 1386 01:12:10,374 --> 01:12:12,290 și nu există doar o limită de nouă sau ceva. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESOR: Da, exact. 1388 01:12:13,160 --> 01:12:13,660 Destul de mult. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Misto. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Draga Andi. 1393 01:12:19,920 --> 01:12:23,440 Deci avem aceste minunate lucruri numit felul. 1394 01:12:23,440 --> 01:12:25,472 Dacă Merge sort-- ca am ferăstrău în exemplu, atunci când 1395 01:12:25,472 --> 01:12:27,180 David a făcut întregul lucru în class-- de ce, 1396 01:12:27,180 --> 01:12:29,760 dacă este atât de mult mai rapid decât oricare dintre celelalte soiuri, 1397 01:12:29,760 --> 01:12:33,310 de ce nu ne-am deranja chiar știind oricare dintre celelalte soiuri? 1398 01:12:33,310 --> 01:12:35,100 >> Ce este această întrebare într-adevăr te întrebi? 1399 01:12:35,100 --> 01:12:36,659 Care este de trei word-- 1400 01:12:36,659 --> 01:12:37,950 Audiența: Care este trade-off? 1401 01:12:37,950 --> 01:12:38,530 PROFESOR: Exact. 1402 01:12:38,530 --> 01:12:39,946 Asta e ceea ce întrebarea întreabă. 1403 01:12:39,946 --> 01:12:43,682 Care este compromisul între Merge fel versete orice alte tipuri? 1404 01:12:43,682 --> 01:12:45,850 >> Audiența: ia de memorie, nu? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESORUL: Ai explica faptul ca un pic mai mult? 1406 01:12:47,720 --> 01:12:49,490 În primul rând haideți să explice magazin Merge. 1407 01:12:49,490 --> 01:12:50,970 Cum Merge fel funcționează? 1408 01:12:50,970 --> 01:12:55,220 >> Audiența: Deci funcționează prin împărțirea totul în jumătatea 1409 01:12:55,220 --> 01:13:00,660 și apoi inscrie impreuna și realocarea l în ordine, 1410 01:13:00,660 --> 01:13:02,862 ca de fiecare dată când merge seturi. 1411 01:13:02,862 --> 01:13:03,820 PROFESORUL: Destul de mult. 1412 01:13:03,820 --> 01:13:06,861 Așa că am putea trage acest lucru, dar ar ia-mă cinci minute să-l scoată. 1413 01:13:06,861 --> 01:13:10,220 Uită-te înapoi la slide-uri secțiunea în cazul în care ne-am acoperit Merge fel. 1414 01:13:10,220 --> 01:13:10,790 Exact. 1415 01:13:10,790 --> 01:13:13,406 >> Deci modul Merge lucrări de sortare este imparte lucrurile în jumătate, 1416 01:13:13,406 --> 01:13:15,780 și apoi doar se uita la Primele valori de toți 1417 01:13:15,780 --> 01:13:17,000 și sortează numai că. 1418 01:13:17,000 --> 01:13:20,364 Continuu creează noi rețele și pune mai multe lucruri și mai mult în ordine. 1419 01:13:20,364 --> 01:13:23,030 Și astfel în timp ce e foarte, foarte rapid, deoarece it's-- știi, 1420 01:13:23,030 --> 01:13:25,380 o căutare binară este n log n. 1421 01:13:25,380 --> 01:13:27,880 Ești crearea atât de multe diferite rețele care nu sunteți 1422 01:13:27,880 --> 01:13:29,700 folosind o cantitate mare de memorie. 1423 01:13:29,700 --> 01:13:33,080 Și astfel în timp ce este mai rapid, compromisul aici este că utilizați mai multă memorie. 1424 01:13:33,080 --> 01:13:38,490 >> Și astfel, aluzie, felul și căutări au fost acoperite mai mult în acest an 1425 01:13:38,490 --> 01:13:41,610 decât au fost în anii precedenți. 1426 01:13:41,610 --> 01:13:45,100 Voi ar trebui să vedeți că reflectat în consecință pe testul. 1427 01:13:45,100 --> 01:13:49,160 Mi-ar petrece cu siguranta timp de gând asupra a ceea ce toate diferitele tipuri 1428 01:13:49,160 --> 01:13:52,320 sunt, de căutare cum binar, cum liniar de lucru de căutare. 1429 01:13:52,320 --> 01:13:54,750 Cum să poate pseudocod codul cei afară. 1430 01:13:54,750 --> 01:13:55,950 Care sunt timpii de funcționare? 1431 01:13:55,950 --> 01:13:59,210 Ceva de genul ori de funcționare este foarte ușor pentru a copia în jos pe o foaie de note, 1432 01:13:59,210 --> 01:13:59,710 dreapta? 1433 01:13:59,710 --> 01:14:01,420 >> E foarte greu când ești în mijloc testul 1434 01:14:01,420 --> 01:14:02,390 și va trebui să dai seama. 1435 01:14:02,390 --> 01:14:03,160 Copiați-l în jos. 1436 01:14:03,160 --> 01:14:05,550 Îți garantez că ești Va trebui să știe că. 1437 01:14:05,550 --> 01:14:06,860 Care sunt compromisurile? 1438 01:14:06,860 --> 01:14:10,064 Cel mai rău caz, cele mai bune scenarii pentru toate acestea, foarte se cunoască. 1439 01:14:10,064 --> 01:14:10,564 Da? 1440 01:14:10,564 --> 01:14:12,730 >> Audiența: Nu avem nevoie pentru a știu cum să codul Merge fel? 1441 01:14:12,730 --> 01:14:15,470 Cum ar fi, nu trebuie să ne amintesc recursive? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESORUL: Am foarte îndoiesc, doar pentru că este ca și cum destul de complicat. 1443 01:14:18,950 --> 01:14:22,282 Dar aceasta nu poate fi imposibilă dacă ne-am vă rugăm să utilizați pseudocod l. 1444 01:14:22,282 --> 01:14:22,781 Da. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Da, OK, o mai mult. 1447 01:14:29,170 --> 01:14:31,387 Acest lucru poate au venit în te ultima piesă într-un pic. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Da? 1450 01:14:43,090 --> 01:14:44,930 A tuturor auzit asta? 1451 01:14:44,930 --> 01:14:48,360 >> OK, deci destul de mult în primul toate, ce tip de program 1452 01:14:48,360 --> 01:14:51,000 ar fi oferindu-vă o putere ca asta? 1453 01:14:51,000 --> 01:14:54,350 Amintiți-vă pentru a afla despre cerut acest nou tip de instrument de depanare? 1454 01:14:54,350 --> 01:14:57,340 Care era numele de ea? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, dreapta 1456 01:14:59,460 --> 01:15:02,600 >> A fost un program de unde Ai putea să sunați care ar putea 1457 01:15:02,600 --> 01:15:05,940 ține evidența tuturor memorie esti utilizarea în programul dumneavoastră și se întâmplă. 1458 01:15:05,940 --> 01:15:11,090 Deci, dacă ai ceva, cum ar fi, cu siguranta pierdut, 40 de bytes într-un bloc. 1459 01:15:11,090 --> 01:15:14,870 Probabil că nu ești amintindu pentru eliberarea. 1460 01:15:14,870 --> 01:15:18,710 Pentru că dacă utilizați bytes de memorie, asta înseamnă că v-ați accesat că memoria, 1461 01:15:18,710 --> 01:15:20,240 dar nu au fost în măsură să elibereze. 1462 01:15:20,240 --> 01:15:21,948 Deci, doriți să faceți sigur că ești, de asemenea, 1463 01:15:21,948 --> 01:15:31,420 folosind free-- care este un function-- pentru a elibera toate 1464 01:15:31,420 --> 01:15:34,930 a memoriei realocate de malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Misto. 1466 01:15:35,500 --> 01:15:37,140 Deci acest diapozitiv, o voi avea în sus. 1467 01:15:37,140 --> 01:15:41,050 E peste tot într-o mulțime de prelegeri, într-o mulțime de diapozitive secțiune. 1468 01:15:41,050 --> 01:15:44,254 Chiar vrei să vă asigurați doar știi toate astea. 1469 01:15:44,254 --> 01:15:47,170 Fie în foaia de nota sau dacă doriți să-l memoreze, nu ezitați să. 1470 01:15:47,170 --> 01:15:48,836 Asta e foarte, foarte, foarte important. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> De asemenea, un foarte bun Întrebarea pe care ne-am putea întreba. 1473 01:15:56,890 --> 01:16:00,320 De ce este aspect de selecție sort-- la Selecția sort-- toate runtime 1474 01:16:00,320 --> 01:16:02,060 sunt n pătrat. 1475 01:16:02,060 --> 01:16:06,714 Indiferent de modul în lista scoate tine, ca, asa ca de ce este sort-- Selecție 1476 01:16:06,714 --> 01:16:08,630 Îți dau 30 baieti în al doilea rând despre această. 1477 01:16:08,630 --> 01:16:10,700 Pentru că e un fel de confuz. 1478 01:16:10,700 --> 01:16:12,710 Aceasta implică unele crezut conceptual. 1479 01:16:12,710 --> 01:16:16,470 De ce ar fi la fel în vremurile rula atât cele mai grave și cele mai bune scenarii de caz? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Da? 1482 01:16:30,000 --> 01:16:38,084 >> Audiența: Deoarece Selecție fel fiecare poziție sau spațiu în acest mic tablou 1483 01:16:38,084 --> 01:16:40,350 lucru sau orice altceva. 1484 01:16:40,350 --> 01:16:44,430 Deci, chiar și în cel mai bun caz, Chiar dacă e sortate perfect, 1485 01:16:44,430 --> 01:16:47,380 aceasta ar trebui în continuare să fie ca, bine, o. 1486 01:16:47,380 --> 01:16:49,000 În prima mea loc am unul. 1487 01:16:49,000 --> 01:16:50,250 Și du-te prin toate. 1488 01:16:50,250 --> 01:16:51,249 OK, unul este cel mai mic. 1489 01:16:51,249 --> 01:16:53,053 Și apoi merge din nou și este ca, OK, două 1490 01:16:53,053 --> 01:16:54,594 este cel mai mic dintre toate lucrurile. 1491 01:16:54,594 --> 01:16:56,804 Dar are încă verifica fiecare dintre. 1492 01:16:56,804 --> 01:16:57,470 PROFESOR: Da. 1493 01:16:57,470 --> 01:17:00,490 Deci, de exemplu, să spunem că Avem o listă, sortate deja, 1494 01:17:00,490 --> 01:17:03,390 o serie una-cinci. 1495 01:17:03,390 --> 01:17:07,100 Modul în care felul de selecție este că merge prin, ea verifică aceste două. 1496 01:17:07,100 --> 01:17:08,234 Apoi, verifică cele două. 1497 01:17:08,234 --> 01:17:09,650 Și apoi verifică și verifică. 1498 01:17:09,650 --> 01:17:13,285 Se păstrează verificarea tuturor acestora, indiferent dacă este sau nu 1499 01:17:13,285 --> 01:17:14,160 este de fapt sortate. 1500 01:17:14,160 --> 01:17:16,450 Pentru că pur și simplu modul în care funcționează fel. 1501 01:17:16,450 --> 01:17:19,530 >> Și așa această întrebare este un fel de o întrebare conceptual vom întreba. 1502 01:17:19,530 --> 01:17:21,430 În cazul în care în primul rând, să știu ce fel de selecție 1503 01:17:21,430 --> 01:17:23,304 este, dreptul, pentru a putea pentru a răspunde la întrebarea. 1504 01:17:23,304 --> 01:17:26,200 Trebuie să fie capabil să înțeleagă conceptual ce se întâmplă. 1505 01:17:26,200 --> 01:17:30,760 Și apoi puteți aplica și cred că, OK hai să ne imaginăm mai rău scenariu. 1506 01:17:30,760 --> 01:17:32,230 Sunt toate în ordine descrescătoare. 1507 01:17:32,230 --> 01:17:33,290 Cum că afecta? 1508 01:17:33,290 --> 01:17:34,650 >> Dacă e ordine crescătoare? 1509 01:17:34,650 --> 01:17:35,640 Dacă este deja sortate? 1510 01:17:35,640 --> 01:17:37,240 Cum că afecta runtime? 1511 01:17:37,240 --> 01:17:40,270 Și apoi un fel de selecție, veți observa că ea nu se contează. 1512 01:17:40,270 --> 01:17:43,500 Pentru ca esti verificarea toate Valorile indiferent de ceea ce se întâmplă. 1513 01:17:43,500 --> 01:17:45,810 >> Și așa lucruri bune să-și amintească. 1514 01:17:45,810 --> 01:17:50,290 De ce unele tipuri difera de celelalte și cel mai bine cum și cele mai grave scenarii 1515 01:17:50,290 --> 01:17:52,740 ar afecta toți. 1516 01:17:52,740 --> 01:17:56,700 >> Am de gând să lovit într-adevăr în felul pentru că va fi pe testul. 1517 01:17:56,700 --> 01:17:57,199 Da. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 BINE. 1520 01:18:01,320 --> 01:18:05,590 Există șase minute ramase. 1521 01:18:05,590 --> 01:18:09,880 Pot lua trei minute de întrebări. 1522 01:18:09,880 --> 01:18:12,290 De asemenea, am putea închide în jurul pentru ca 20 de minute după secțiune 1523 01:18:12,290 --> 01:18:13,850 dacă doriți să puneți întrebări, de asemenea. 1524 01:18:13,850 --> 01:18:16,330 Are cineva doar într-adevăr scurt întrebări sau probleme conceptuale 1525 01:18:16,330 --> 01:18:17,360 sunt neclare cu privire la dreptul acum? 1526 01:18:17,360 --> 01:18:17,832 Da? 1527 01:18:17,832 --> 01:18:19,720 >> Audiența: Poți să vorbim un pic bit despre operatori la nivel de bit? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESOR: Da. 1529 01:18:20,280 --> 01:18:22,446 Operatorii la nivel de bit sunt atât de ceva care, probabil, 1530 01:18:22,446 --> 01:18:24,170 s-ar putea dori doar pentru a pune pe foaia de. 1531 01:18:24,170 --> 01:18:27,540 Deci quickly-- Nu vreau pentru a merge prea mult în profunzime 1532 01:18:27,540 --> 01:18:31,164 pentru că Harvard, în revizuirea lor sesiune, a acoperit destul de bine. 1533 01:18:31,164 --> 01:18:33,080 Operatorul nivel de bit, nu e cinci dintre ei, nu? 1534 01:18:33,080 --> 01:18:41,370 >> Există acest lucru, care este x sau funcție, există ampersand, care este AND. 1535 01:18:41,370 --> 01:18:44,050 Pipe, care este RUP. 1536 01:18:44,050 --> 01:18:46,790 Și atunci aveți două diferite tipuri de schimburi. 1537 01:18:46,790 --> 01:18:50,610 >> Dacă îți dau două valori, dacă Eu vă dau, cum ar fi, unul și unul. 1538 01:18:50,610 --> 01:18:52,390 Ce s-ar evalua care să? 1539 01:18:52,390 --> 01:18:55,490 Dacă îți dau adevărat și adevărat, adevărat? 1540 01:18:55,490 --> 01:18:56,930 Ce zici de adevărat sau fals? 1541 01:18:56,930 --> 01:18:57,830 Încă adevărat, nu? 1542 01:18:57,830 --> 01:18:59,762 Pentru că există o sau. 1543 01:18:59,762 --> 01:19:01,220 Vă vom oferi cel mai probabil numere. 1544 01:19:01,220 --> 01:19:03,780 Deci ține minte, o egal adevărat, la zero este egal cu false. 1545 01:19:03,780 --> 01:19:07,407 Și am putea să vă dau aceste lucruri și vă rog să ne spuneți ce se întâmplă. 1546 01:19:07,407 --> 01:19:10,240 Harvard care se încadrează în primul 10 de minute de sesiune de studiu 1547 01:19:10,240 --> 01:19:11,230 foarte, foarte bine. 1548 01:19:11,230 --> 01:19:14,260 Deci, voi doriți să faceți vă că vă uitați în urmă la asta. 1549 01:19:14,260 --> 01:19:16,387 >> Audiența: Este pisa5 va fi pe testul? 1550 01:19:16,387 --> 01:19:16,970 PROFESORUL: Nu. 1551 01:19:16,970 --> 01:19:18,240 Nici nu te uita la pisa5 acum. 1552 01:19:18,240 --> 01:19:18,810 Este greu. 1553 01:19:18,810 --> 01:19:22,830 Doar nu macar nu deranja uita la pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Cu toate acestea, unele indicii și sugestii, eu 1555 01:19:25,665 --> 01:19:28,320 ar sugerăm să începeți pisa5 de îndată ce testul este de peste. 1556 01:19:28,320 --> 01:19:30,319 Acest lucru va fi cel mai greu săptămână, dar apoi voi 1557 01:19:30,319 --> 01:19:34,590 va fi trecut-o pe dealuri de verde și pui de rulare, 1558 01:19:34,590 --> 01:19:36,115 și e bine. 1559 01:19:36,115 --> 01:19:39,810 >> Aceasta clasa devine semnificativ mai ușor după a cincea PSET. 1560 01:19:39,810 --> 01:19:41,560 Ore de birou: PUBLICUL sunt duminică, luni? 1561 01:19:41,560 --> 01:19:44,260 PROFESOR: Da, așa ore de birouri va Duminica până luni pentru PSET. 1562 01:19:44,260 --> 01:19:47,009 Orelor de serviciu în seara asta, în esență, va fi doar de revizuire pentru testul. 1563 01:19:47,009 --> 01:19:50,350 Dacă cineva vrea să vină în și de a pune TAS o întrebare, vom fi acolo. 1564 01:19:50,350 --> 01:19:53,220 >> Voi lua poate o întrebare dacă cineva are o întrebare? 1565 01:19:53,220 --> 01:19:53,809 Da? 1566 01:19:53,809 --> 01:19:55,850 Audiența: Când ești noduri care definesc, [neauzit] 1567 01:19:55,850 --> 01:20:00,700 daca spui stea nod și apoi următoarea, face în mod automat computerul 1568 01:20:00,700 --> 01:20:03,610 Înțeleg că ești referindu-se la un alt pointer? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESORUL: Nu. 1570 01:20:04,580 --> 01:20:06,710 >> Audiența: Trebuie sa relegarea aceasta [Inaudibil]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESORUL: Deci, practic, struct unui nod este, amintiți-vă, 1572 01:20:09,270 --> 01:20:12,620 e ca si cum ai crea nodul și atunci aveți un pointer numit următoare. 1573 01:20:12,620 --> 01:20:14,630 Tot ce faci este cu structura acolo. 1574 01:20:14,630 --> 01:20:16,387 Trebuie să atribuiți că pointer undeva. 1575 01:20:16,387 --> 01:20:18,470 Deci calculatoarele nu știu ce face încă. 1576 01:20:18,470 --> 01:20:20,250 Trebuie să-l atribuie de fapt, atunci când te crearea lista de legat. 1577 01:20:20,250 --> 01:20:22,170 Și asta e ceea ce, în principal PSET 5 va fi pe. 1578 01:20:22,170 --> 01:20:24,106 Deci, nu vă faceți griji despre nimic din toate acestea, chiar acum. 1579 01:20:24,106 --> 01:20:26,380 >> Audiența: Deci nu trebuie să se concentreze prea mult pe lista de link-ul, doar 1580 01:20:26,380 --> 01:20:27,440 concepția generală? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESORUL: Doar destul de mult stive, cozile, liste de link, copaci, tabele de dispersie. 1582 01:20:30,980 --> 01:20:33,639 Doar putea ști care sunt acestea. 1583 01:20:33,639 --> 01:20:35,680 Noi nu cerem iti place ceva specific 1584 01:20:35,680 --> 01:20:39,300 pentru că nu am făcut într-adevăr o PSET că acoperă orice de care încă. 1585 01:20:39,300 --> 01:20:45,540 >> Deci, în ultimele două minute înainte de Am setat te liber să-l omoare acest test. 1586 01:20:45,540 --> 01:20:49,370 Destul de mult, cum ar fi, ne gândim cum departe voi ați venit în această clasă. 1587 01:20:49,370 --> 01:20:52,820 >> Îmi amintesc când două săptămâni din această clasă, unii dintre voi 1588 01:20:52,820 --> 01:20:55,720 petrece trei ore de apă scris. 1589 01:20:55,720 --> 01:20:57,970 Cât timp ar luați voi să scrie de apă acum? 1590 01:20:57,970 --> 01:20:59,670 30 de secunde, poate? 1591 01:20:59,670 --> 01:21:01,810 Gândiți-vă cât de mult voi au învățat. 1592 01:21:01,810 --> 01:21:04,320 CS este un subiect foarte, foarte greu. 1593 01:21:04,320 --> 01:21:06,190 Nu există nici o îndoială de asta. 1594 01:21:06,190 --> 01:21:09,160 E greu, de aceea studiază nimeni. 1595 01:21:09,160 --> 01:21:10,730 E doar greu. 1596 01:21:10,730 --> 01:21:11,650 Și este absolut în regulă. 1597 01:21:11,650 --> 01:21:14,150 >> Și eu sunt foarte mândru de faptul că toată lumea a făcut-o atât de departe. 1598 01:21:14,150 --> 01:21:16,380 Psets nu sunt ușor. 1599 01:21:16,380 --> 01:21:17,790 Ei iau o mulțime de timp. 1600 01:21:17,790 --> 01:21:22,580 Băieți, eu nu vă va cere să scrie jocul de 15 sau Vigenere pe PSET. 1601 01:21:22,580 --> 01:21:24,160 Nu este nevoie să sperii doar despre asta. 1602 01:21:24,160 --> 01:21:28,080 Toate testăm aici este de a evalua cunoștințele conceptuale, precum și 1603 01:21:28,080 --> 01:21:31,524 ca unele dintre abilitățile dumneavoastră de bază de codificare. 1604 01:21:31,524 --> 01:21:33,440 Testul este conceput pentru a într-adevăr o provocare să fie. 1605 01:21:33,440 --> 01:21:36,180 Cum ar fi, acesta este conceput pentru tine nu pentru a obține 100. 1606 01:21:36,180 --> 01:21:39,880 Este, de asemenea proiectat pentru a vă, probabil, nu fie în măsură să termine în 75 de minute. 1607 01:21:39,880 --> 01:21:41,995 Și asta e în regulă. 1608 01:21:41,995 --> 01:21:42,870 Sunt un student mine. 1609 01:21:42,870 --> 01:21:45,960 Știu, mi place atunci când am mers dintr-un test să fie ca, rahat. 1610 01:21:45,960 --> 01:21:47,044 Asta a fost foarte greu. 1611 01:21:47,044 --> 01:21:49,460 Probabil, ceea ce va happen-- și asta e în regulă, 1612 01:21:49,460 --> 01:21:50,751 Vă spun, băieți acum. 1613 01:21:50,751 --> 01:21:53,190 Mijloacele de pe aceste lucruri nu sunt mari deloc. 1614 01:21:53,190 --> 01:21:55,360 >> Iar pentru cei dintre voi care au fost obtinerea, cum ar fi, 1615 01:21:55,360 --> 01:21:57,870 câte trei pe seturi de probleme, asta nu inseamna ca esti 1616 01:21:57,870 --> 01:21:59,536 mergi la a lua un 60 la sută în această clasă. 1617 01:21:59,536 --> 01:22:01,440 Dacă aveți 60% la test, că nu 1618 01:22:01,440 --> 01:22:03,330 Adică ai de gând să obține un D în această clasă. 1619 01:22:03,330 --> 01:22:05,740 Vedem, în special I, pentru cei dintre voi în secțiunea mea, 1620 01:22:05,740 --> 01:22:07,406 Văd cât de greu voi sunt toate de lucru. 1621 01:22:07,406 --> 01:22:09,190 Și am ține evidența asta. 1622 01:22:09,190 --> 01:22:11,420 >> Voi va fi bine. 1623 01:22:11,420 --> 01:22:14,580 Nu e nici o memorie instituțională a fericire la sfârșitul semestrului. 1624 01:22:14,580 --> 01:22:16,840 Deoarece toți copiii de la Harvard spun prietenii lor, oh, vei fi bine. 1625 01:22:16,840 --> 01:22:18,381 Nimeni nu îți spune tipi care aici. 1626 01:22:18,381 --> 01:22:20,950 Așa că trebuie să vă spun că aici voi. 1627 01:22:20,950 --> 01:22:22,280 >> Voi va fi bine. 1628 01:22:22,280 --> 01:22:24,080 Sunt atât de mândră de voi toți băieți. 1629 01:22:24,080 --> 01:22:25,680 Testul va fi greu. 1630 01:22:25,680 --> 01:22:28,140 Studiu pentru ea, și după aceea arunca doar să degajeze. 1631 01:22:28,140 --> 01:22:31,280 Gata de a învăța lucruri noi obține. 1632 01:22:31,280 --> 01:22:33,990 Și să mănânce bomboane. 1633 01:22:33,990 --> 01:22:35,940 Avem o mulțime de bomboane. 1634 01:22:35,940 --> 01:22:37,760 >> Obține un somn bun. 1635 01:22:37,760 --> 01:22:40,420 Nu, nu dormi, pentru că că ar fi foarte rău. 1636 01:22:40,420 --> 01:22:41,490 CS este o mulțime de logică. 1637 01:22:41,490 --> 01:22:44,960 Dacă nu dormi, nu te poate funcționa, și creierul nu poate funcționa. 1638 01:22:44,960 --> 01:22:48,780 Și voi fi aici pentru următorii 20 minute, dacă cineva vrea să stea în jurul. 1639 01:22:48,780 --> 01:22:51,150 Voi o să-l omoare. 1640 01:22:51,150 --> 01:22:53,000 Mult noroc. 1641 01:22:53,000 --> 01:22:55,663