1 00:00:00,000 --> 00:00:06,370 2 00:00:06,370 --> 00:00:08,150 >> JASON Hirschhorn: Bine ați venit la trei saptamani, toată lumea. 3 00:00:08,150 --> 00:00:11,650 Avem o ocupat, dar interesant secțiune în fața noastră. 4 00:00:11,650 --> 00:00:17,010 Deci, în primul rând, pentru că am făcut ceva progrese cu cursul, dar am încă 5 00:00:17,010 --> 00:00:20,570 au o mulțime de învățare de făcut, eu sunt va arăta voi unele resurse 6 00:00:20,570 --> 00:00:24,160 care ar trebui să se dovedesc a fi extrem de utile cum vă apropiați nu numai dvs. 7 00:00:24,160 --> 00:00:28,130 Seturi problemă, ci și digera toate materialul va da tipi în 8 00:00:28,130 --> 00:00:30,800 prelegeri și pantaloni scurți și secțiunea. 9 00:00:30,800 --> 00:00:34,790 >> Apoi ne-am de gând să-și petreacă primele 20 la 25 de minute de secțiune a merge peste 10 00:00:34,790 --> 00:00:38,630 GDB, care poate sau nu poate avea folosit în acest moment, dar este o 11 00:00:38,630 --> 00:00:42,570 instrument incredibil de util, care va ajuta să vă depana programele pe care. 12 00:00:42,570 --> 00:00:46,060 O mulțime de ați fi putut folosi printf în mijloc de programul tău să dau 13 00:00:46,060 --> 00:00:47,430 ce a constituit o variabilă. 14 00:00:47,430 --> 00:00:52,060 GDB este chiar mai bine decât printf și nu șurub sus codul pentru că 15 00:00:52,060 --> 00:00:53,320 rulați-l pe un fișier executabil. 16 00:00:53,320 --> 00:00:56,500 Asa ca vom trece peste cele mai utile 10 comenzi aveți nevoie pentru GDB, și suntem 17 00:00:56,500 --> 00:01:00,540 de gând să meargă pe un exercițiu împreună așa în problema stabilit trei și dincolo, tu 18 00:01:00,540 --> 00:01:03,320 pot utiliza GDB pentru a ajuta la depanare programele. 19 00:01:03,320 --> 00:01:06,420 Și, în sfârșit, vom trece peste unele de sortare și căutare algoritmi 20 00:01:06,420 --> 00:01:10,590 că ai văzut în curs, și suntem va de fapt cod, nu doar 21 00:01:10,590 --> 00:01:17,360 pseudocod, dar cod binar de căutare, bule de sortare, și selecție de sortare. 22 00:01:17,360 --> 00:01:20,090 >> Deci, în primul rând, vreau să merg asupra resurselor. 23 00:01:20,090 --> 00:01:23,530 Aceasta este o listă extinsă, și este font mai mic pentru că am avut o mulțime de 24 00:01:23,530 --> 00:01:24,390 potrivi pe aici. 25 00:01:24,390 --> 00:01:26,950 Dar acestea te va ajuta nu numai, din nou, cu seturi de probleme și 26 00:01:26,950 --> 00:01:30,760 informații digestia ați învățat, dar cu siguranta, vin timp test, acestea vor 27 00:01:30,760 --> 00:01:32,130 fi incredibil de util. 28 00:01:32,130 --> 00:01:34,700 Deci, în primul rând, conspecte. 29 00:01:34,700 --> 00:01:39,480 Dacă te duci la cs50.net/lectures și derulați până la săptămâna specifice și a zilei, 30 00:01:39,480 --> 00:01:43,120 veți vedea că există note pentru fiecare prelegere, care nu este pur și simplu un 31 00:01:43,120 --> 00:01:47,250 transcriere, dar o versiune editată de ceea ce a fost acoperit în curs cu codul 32 00:01:47,250 --> 00:01:49,610 fragmente și alte lucruri utile. 33 00:01:49,610 --> 00:01:52,220 Am foarte recomandăm merge peste ele. 34 00:01:52,220 --> 00:01:55,340 Și apoi, de asemenea, nu există cod sursă disponibil de la fiecare curs. 35 00:01:55,340 --> 00:02:00,050 Și din nou, aceste slide-uri vor fi, de asemenea, disponibil online la cs50.net/sections 36 00:02:00,050 --> 00:02:01,480 în această seară. 37 00:02:01,480 --> 00:02:06,860 >> Deci, în al doilea rând sunt pantaloni scurți în fiecare săptămână că subiecte de acoperire, de obicei, 5-15 38 00:02:06,860 --> 00:02:08,090 minute în lungime. 39 00:02:08,090 --> 00:02:12,310 Și cei care sperăm că vă va oferi un mare primer pe diferite teme. 40 00:02:12,310 --> 00:02:12,870 În al treilea rând - 41 00:02:12,870 --> 00:02:16,370 iar acest lucru este de brand nou acest an - este study.cs50.net. 42 00:02:16,370 --> 00:02:20,110 Dacă nu ați verificat, am foarte recomandăm să faceți acest lucru. 43 00:02:20,110 --> 00:02:21,100 Ai de a alege un subiect. 44 00:02:21,100 --> 00:02:23,040 Avem zeci de subiecte pe acolo. 45 00:02:23,040 --> 00:02:24,770 Deci, de exemplu, alegeți Funcții. 46 00:02:24,770 --> 00:02:27,270 Acesta vă oferă câteva diapozitive și notează pe funcții. 47 00:02:27,270 --> 00:02:31,190 Cei care sunt de fapt slide-uri care TFS sunt încurajați să folosească în timpul nostru 48 00:02:31,190 --> 00:02:32,710 prezentări în secțiune. 49 00:02:32,710 --> 00:02:35,040 Există, de asemenea, sfaturi și trucuri pentru a face cu funcții, și nu e 50 00:02:35,040 --> 00:02:37,290 probleme practice care ajută lucrați cu funcții. 51 00:02:37,290 --> 00:02:41,500 Se asemenea, va dau link-uri la scurt pe funcții și orele care funcționează 52 00:02:41,500 --> 00:02:42,750 au venit în curs. 53 00:02:42,750 --> 00:02:46,550 , Marca așa study.cs50.net nou acest an, o resursă fantastic. 54 00:02:46,550 --> 00:02:52,180 >> Apoi, am om, care este manualul comandă pe care le puteți rula de la 55 00:02:52,180 --> 00:02:52,770 linie de comandă. 56 00:02:52,770 --> 00:02:57,880 Deci, dacă aveți orice întrebări cu privire la o comandă, de exemplu, rand, pe care noi 57 00:02:57,880 --> 00:03:00,900 întâlnit săptămâna trecută în timpul secțiune și le-ați întâlnit, probabil, în 58 00:03:00,900 --> 00:03:05,380 problema ta setat atunci când merge prin genera cod, dar dacă tastați om 59 00:03:05,380 --> 00:03:09,980 rand, veți obține pagina care vă spune totul despre rand. 60 00:03:09,980 --> 00:03:14,040 Acesta vă oferă ceea ce este nevoie, parametrii pe care le ia, precum și retur 61 00:03:14,040 --> 00:03:16,530 tip și o scurtă descriere de această funcție. 62 00:03:16,530 --> 00:03:17,500 >> Deci, a verifica afară rand. 63 00:03:17,500 --> 00:03:22,270 Acesta poate fi un pic prolix și confuz, astfel încât, uneori mi se pare că 64 00:03:22,270 --> 00:03:26,150 pur și simplu cu Google ceea ce vreau să știu este cel mai bun mod de a găsi răspunsul. 65 00:03:26,150 --> 00:03:27,940 Deci, practica cu Google. 66 00:03:27,940 --> 00:03:28,600 Ia bun de la Google. 67 00:03:28,600 --> 00:03:30,600 Acesta va deveni cel mai bun prieten. 68 00:03:30,600 --> 00:03:34,300 >> La fel de bine ca și Google, în cazul în care nu se poate găsi pe Google, cs50.net/discuss, e 69 00:03:34,300 --> 00:03:35,550 forumul de discuții. 70 00:03:35,550 --> 00:03:39,390 Sanse sunt, dacă aveți o întrebare, una de dvs. 700 + colegii are, de asemenea, că 71 00:03:39,390 --> 00:03:42,110 întrebare și poate fi solicitat o deja în discuta 72 00:03:42,110 --> 00:03:43,540 forumuri și l-au răspuns. 73 00:03:43,540 --> 00:03:48,130 Deci, dacă aveți o întrebare comună sau aveți o întrebare care credeți că 74 00:03:48,130 --> 00:03:52,300 Poate că alte persoane ar fi putut rula în, a verifica afară cs50.net/discuss. 75 00:03:52,300 --> 00:03:55,450 >> În cele din urmă, ultimele două, dacă doriți să vorbesc cu o ființă umană reală, birou 76 00:03:55,450 --> 00:03:57,770 ore de luni până vineri. 77 00:03:57,770 --> 00:04:00,850 Există, de asemenea ore Office Online pentru elevii de extindere. 78 00:04:00,850 --> 00:04:04,370 Și ultimul, dar cu siguranță nu în ultimul rând, mine, semn de exclamare. 79 00:04:04,370 --> 00:04:05,960 Toți aveți informațiile mele de contact. 80 00:04:05,960 --> 00:04:11,940 Dacă ai nevoie de ceva, te rog nu ezitati sa ma contactati. 81 00:04:11,940 --> 00:04:14,020 Simt mereu liber să facă acest lucru. 82 00:04:14,020 --> 00:04:17,490 Foarte puțini dintre voi m-au adăugat în Gchat, astfel încât a fost dezamăgitor, 83 00:04:17,490 --> 00:04:20,410 dar sperăm că se va schimba între aceasta și secțiunea următoare. 84 00:04:20,410 --> 00:04:22,105 Orice întrebări până acum asupra resurselor? 85 00:04:22,105 --> 00:04:25,670 86 00:04:25,670 --> 00:04:27,450 Mare. 87 00:04:27,450 --> 00:04:34,280 >> În cele din urmă, o altă mufă pentru feedback-ul, sayat.me/cs50. 88 00:04:34,280 --> 00:04:37,050 Poți să-mi dai feedback-ul anonim despre cum fac. 89 00:04:37,050 --> 00:04:38,320 Asta a fost foarte util săptămâna trecută. 90 00:04:38,320 --> 00:04:41,890 Am o pereche de comentarii de la voi imediat după secțiune, plus de la 91 00:04:41,890 --> 00:04:44,750 alți studenți care l-au vizionat în timpul săptămânii, și ea 92 00:04:44,750 --> 00:04:46,830 a fost incredibil de util. 93 00:04:46,830 --> 00:04:50,250 Am de gând să încerc și să limiteze utilizarea mea de cuvântul "dulce", dar voi arăta mea 94 00:04:50,250 --> 00:04:52,410 entuziasm și emoție în alte moduri. 95 00:04:52,410 --> 00:04:56,550 Dar au existat alte suplimentare feedback de fond, 96 00:04:56,550 --> 00:04:57,600 atât plusuri si delta. 97 00:04:57,600 --> 00:05:00,480 Asa ca te rog, eu voi da un feedback pe seturi de probleme. 98 00:05:00,480 --> 00:05:01,790 Simțiți-vă liber să-mi dea un feedback pe de predare mea. 99 00:05:01,790 --> 00:05:04,010 Sunt aici pentru voi. 100 00:05:04,010 --> 00:05:05,270 >> Mare. 101 00:05:05,270 --> 00:05:07,020 Asta e tot ce am pentru prima secțiune. 102 00:05:07,020 --> 00:05:08,565 Are cineva vreo întrebări până acum? 103 00:05:08,565 --> 00:05:12,370 104 00:05:12,370 --> 00:05:14,640 Și am o notă de centrul de control. 105 00:05:14,640 --> 00:05:21,200 Elevii de extindere m-au trimis SMS spunând că nu vei primi nici un audio, 106 00:05:21,200 --> 00:05:23,870 dar că este în afara de puterea mea pentru a remedia. 107 00:05:23,870 --> 00:05:25,280 Deci, sperăm, care devine rezolvate în scurt timp. 108 00:05:25,280 --> 00:05:28,850 Dacă te uiți on-line, hi, dar tu nu mă poți auzi. 109 00:05:28,850 --> 00:05:33,860 >> Deci, în primul rând, vom pentru a merge prin GDB. 110 00:05:33,860 --> 00:05:37,100 GDB, așa cum am făcut aluzie la mai devreme, este un instrument de depanare 111 00:05:37,100 --> 00:05:39,040 mult mai bine decât printf. 112 00:05:39,040 --> 00:05:44,700 Deci, pentru a începe cu GDB, voi, dacă Vrei pentru a deschide aparatul 113 00:05:44,700 --> 00:05:49,070 și să ia fișierul pe care eu prin e-mail la tine mai devreme - acest fișier va fi, de asemenea, 114 00:05:49,070 --> 00:05:51,940 disponibil on-line într-un pic - 115 00:05:51,940 --> 00:05:55,700 și a alerga GDB. / numele fișierului. 116 00:05:55,700 --> 00:05:58,580 În primul rând, desigur, trebuie să compilați fișier deoarece GDB funcționează numai pe 117 00:05:58,580 --> 00:05:59,890 fișierele executabile. 118 00:05:59,890 --> 00:06:02,300 >> Dar, dacă vrei vreodată să începeți GDB, primul lucru pe care îl face, 119 00:06:02,300 --> 00:06:04,550 tu a alerga GDB. / Caesar. 120 00:06:04,550 --> 00:06:08,340 Deci asta e numele programului suntem O să merg cu ea chiar acum. 121 00:06:08,340 --> 00:06:12,810 Așa că am de gând să scrie face Cezar, care va da-mi un fișier executabil 122 00:06:12,810 --> 00:06:14,100 aici a subliniat în verde. 123 00:06:14,100 --> 00:06:19,250 Și apoi am de gând să ruleze GDB. / Cesar. 124 00:06:19,250 --> 00:06:19,810 >> Și acolo te duci. 125 00:06:19,810 --> 00:06:24,540 Veți vedea, avem un text mi-a spus despre versiunea de GDB, să-mi dea 126 00:06:24,540 --> 00:06:27,570 unele informații de garanție, și apoi ne-am au prompt PIB, ceea ce pare un fel 127 00:06:27,570 --> 00:06:29,350 a cum ar fi linia prompte nostru de comandă, dar veți vedea că e deschis 128 00:06:29,350 --> 00:06:32,510 paren, GDB, paren apropiate. 129 00:06:32,510 --> 00:06:36,520 Înainte de a continua și de depanare acest fișier pe care l-am trimis la voi toți, să ne uităm la 130 00:06:36,520 --> 00:06:40,220 unele comenzi utile așa că avem un sens de ceea ce vom acoperi. 131 00:06:40,220 --> 00:06:45,060 >> Aceste comenzi sunt enumerate aici, în ordinea în care eu, în general, le folosesc. 132 00:06:45,060 --> 00:06:50,230 Așa că am început programul meu de funcționare GBD. / Numele programului, 133 00:06:50,230 --> 00:06:51,360 în acest caz, Cezar. 134 00:06:51,360 --> 00:06:57,430 Și atunci primul lucru pe care eu 99,9% din timp este de tip break medie. 135 00:06:57,430 --> 00:06:59,070 Care stabilește un punct de pauză la principal. 136 00:06:59,070 --> 00:07:03,260 În esență, ce faci acolo este programul se va opri la 137 00:07:03,260 --> 00:07:06,100 principal astfel încât să puteți începe examinarea-l linie de linie, mai degrabă decât de funcționare toate 138 00:07:06,100 --> 00:07:07,040 drumul prin. 139 00:07:07,040 --> 00:07:09,730 Puteți rupe la diferite puncte în codul dvs., dar principal este, în general, o 140 00:07:09,730 --> 00:07:11,870 loc bun pentru a începe. 141 00:07:11,870 --> 00:07:14,840 >> Urmatoarea comanda am rulat este a alerga. 142 00:07:14,840 --> 00:07:17,400 Care începe programul în execuție, și în cazul în care aveți nevoie pentru a intra în linia de comandă 143 00:07:17,400 --> 00:07:19,090 argumente, executați-l că comanda. 144 00:07:19,090 --> 00:07:20,500 Rulați cu argumentele. 145 00:07:20,500 --> 00:07:25,000 Deci, din moment ce suntem de gând pe o versiune de C, care este programul de voi 146 00:07:25,000 --> 00:07:26,160 a scris pentru PSET două - 147 00:07:26,160 --> 00:07:29,880 aceasta, desigur, are unele bug-uri în ea, care sperăm că vom găsi - 148 00:07:29,880 --> 00:07:32,810 vom rula rula cu unele comenzi argumente în linia pentru că Cezar, 149 00:07:32,810 --> 00:07:34,860 ca voi stiti pe problema set spec., nevoie de ceva 150 00:07:34,860 --> 00:07:36,380 argumente în linia de comandă. 151 00:07:36,380 --> 00:07:40,000 >> Următoarele două comenzi, următorul unul este, de fapt numit viitor. 152 00:07:40,000 --> 00:07:42,470 Pe care o ia te linie cu linie prin intermediul programului dumneavoastră. 153 00:07:42,470 --> 00:07:45,800 Deci, lovind n apoi Enter te duce la linia următoare, executarea 154 00:07:45,800 --> 00:07:46,880 linia anterioară. 155 00:07:46,880 --> 00:07:49,440 Pas nu numai că va duce la următoarea linie, dar 156 00:07:49,440 --> 00:07:51,070 te duce funcții în interiorul. 157 00:07:51,070 --> 00:07:54,310 Deci, dacă ați scris o funcție în codul sau dacă doriți să explorați o 158 00:07:54,310 --> 00:07:57,820 la i, de exemplu, puteți lovi s, și mai degrabă decât a merge la următoarea linie de 159 00:07:57,820 --> 00:08:02,390 fișierul pe care ai de gând prin chiar acum, veți pas de fapt, în 160 00:08:02,390 --> 00:08:04,670 această funcție și a vedea codul său. 161 00:08:04,670 --> 00:08:12,300 >> Lista vă arată, în foarte ușor de utilizat format, de 10 sau cam asa ceva liniile din jurul 162 00:08:12,300 --> 00:08:14,940 în cazul în care în prezent sunt în codul dvs. astfel încât să puteți vedea de fapt fișierul 163 00:08:14,940 --> 00:08:17,810 mai degrabă decât a fi nevoie pentru a schimba înapoi și mai departe între puncte de vedere diferite. 164 00:08:17,810 --> 00:08:21,890 Imprimare este ca printf, cum sugerează și numele său. 165 00:08:21,890 --> 00:08:24,020 Care vă arată ceea ce este egal cu o variabilă. 166 00:08:24,020 --> 00:08:25,870 >> Localnici informații este foarte util. 167 00:08:25,870 --> 00:08:27,740 Aceasta este o versiune specială de imprimare. 168 00:08:27,740 --> 00:08:31,770 Localnici informații vă arată tot de la nivel local variabile, le imprimă pentru tine 169 00:08:31,770 --> 00:08:33,380 , care sunt disponibile în prezent. 170 00:08:33,380 --> 00:08:36,360 Așa că, în general, mai degrabă decât a fi nevoie să imprima cele patru variabile pe care eu sunt 171 00:08:36,360 --> 00:08:39,929 curios despre dacă sunt într-o buclă, pentru de exemplu, doar scriu info localnici, 172 00:08:39,929 --> 00:08:43,470 și o să-mi ce contra mea i arate este egal, ca și matrice care sunt 173 00:08:43,470 --> 00:08:45,130 de lucru la egal la egal. 174 00:08:45,130 --> 00:08:47,530 >> În cele din urmă, să continue. 175 00:08:47,530 --> 00:08:49,300 Tastarea pauză te oprește la punctul de pauză. 176 00:08:49,300 --> 00:08:51,380 Te poti plimba prin linie de conformitate cu următorul și pas. 177 00:08:51,380 --> 00:08:55,640 Continua rulează programul pentru următoarea rupe punct sau până la finalizarea în cazul în care 178 00:08:55,640 --> 00:08:57,180 nu există mai multe puncte de pauză. 179 00:08:57,180 --> 00:09:00,060 Dezactivați elimină puncte de pauză, dacă a decis pauza la principal a fost 180 00:09:00,060 --> 00:09:01,890 nepotrivit, pe care doriți să a pus-o în altă parte. 181 00:09:01,890 --> 00:09:05,090 Și, în sfârșit q, renunțe, iese din GDB. 182 00:09:05,090 --> 00:09:10,784 >> Deci acest program,. / Cezar, vom să se uite prin chiar acum și ne-am 183 00:09:10,784 --> 00:09:13,490 sunt de gând să folosească GDB pentru a găsi bug-uri în acest program. 184 00:09:13,490 --> 00:09:18,110 Am fugit acest program mai devreme cu Verificați 50, și am o încruntare. 185 00:09:18,110 --> 00:09:22,310 Tot ceea ce a existat, ea compilat, ea a trecut o mulțime de teste, dar pentru 186 00:09:22,310 --> 00:09:27,950 din anumite motive, ea nu a trecut de-a cincea de testare, de cotitură BARFOO, toate capacele, în 187 00:09:27,950 --> 00:09:33,350 E-D-U-I-R-R, majuscule, folosind trei ca o cheie. 188 00:09:33,350 --> 00:09:34,090 Am destul de aproape. 189 00:09:34,090 --> 00:09:35,410 Am vorbit cu o literă. 190 00:09:35,410 --> 00:09:37,340 Deci, există unele mica greseala aici. 191 00:09:37,340 --> 00:09:38,070 M-am uitat prin codul meu. 192 00:09:38,070 --> 00:09:38,850 Nu am putut da seama. 193 00:09:38,850 --> 00:09:41,740 Să sperăm că, voi mă poate ajuta dau seama ce acest bug este. 194 00:09:41,740 --> 00:09:44,610 >> Deci, asta e eroarea suntem căutați. 195 00:09:44,610 --> 00:09:46,090 Să se mute în GDB. 196 00:09:46,090 --> 00:09:51,100 Din nou, am alerga GDB. / Cezar, așa că acum suntem în GDB. 197 00:09:51,100 --> 00:09:54,290 Și ceea ce este primul lucru ar trebui să fac? 198 00:09:54,290 --> 00:09:56,680 Tocmai am intrat GDB. 199 00:09:56,680 --> 00:10:00,316 Cineva să-mi dea un bun comandă pentru a intra. 200 00:10:00,316 --> 00:10:01,140 >> STUDENT: Break principal. 201 00:10:01,140 --> 00:10:01,800 >> JASON Hirschhorn: Break principal. 202 00:10:01,800 --> 00:10:02,900 Fantastic. 203 00:10:02,900 --> 00:10:03,560 Să tastăm că inch 204 00:10:03,560 --> 00:10:06,390 Voi puteti viziona aici sau urmați de-a lungul pe computere. 205 00:10:06,390 --> 00:10:09,410 Break principal, și veți vedea o punct de pauză a fost stabilit la - 206 00:10:09,410 --> 00:10:12,340 dă-mi o adresa de memorie ciudat, și, de asemenea, dă-mi numărul liniei. 207 00:10:12,340 --> 00:10:15,310 Dacă ar fi să se uite din nou la acest fișier, Mi-ar da seama că principala 208 00:10:15,310 --> 00:10:17,700 sa întâmplat pe linia 21. 209 00:10:17,700 --> 00:10:18,950 Ce ar trebui să ruleze în continuare? 210 00:10:18,950 --> 00:10:22,970 211 00:10:22,970 --> 00:10:25,060 Este programul meu de funcționare? 212 00:10:25,060 --> 00:10:25,650 Nu. 213 00:10:25,650 --> 00:10:27,175 Deci, ce ar trebui să ruleze în continuare? 214 00:10:27,175 --> 00:10:27,520 >> STUDENT: Run. 215 00:10:27,520 --> 00:10:28,050 >> JASON Hirschhorn: Run. 216 00:10:28,050 --> 00:10:30,760 Ar trebui să I a alerga doar alerga, sau ar trebui să Am adăuga alte lucruri in? 217 00:10:30,760 --> 00:10:31,960 >> STUDENT: Rulați cu argumentul. 218 00:10:31,960 --> 00:10:33,320 >> JASON Hirschhorn: A alerga cu argumentele de comandă. 219 00:10:33,320 --> 00:10:36,420 Și, din moment ce eu sunt de depanare un foarte specific caz, eu ar trebui să intre că 220 00:10:36,420 --> 00:10:37,120 argument linie de comandă. 221 00:10:37,120 --> 00:10:42,290 Deci, voi alerga trei, care este, din nou, de ieșire am primit de la Verificare 50. 222 00:10:42,290 --> 00:10:44,240 Programul de pornire. 223 00:10:44,240 --> 00:10:45,420 Trecem printr-o serie de linii. 224 00:10:45,420 --> 00:10:47,700 , Veți vedea acum că suntem pe linia 21. 225 00:10:47,700 --> 00:10:49,200 Cum știu că suntem pe linia 21? 226 00:10:49,200 --> 00:10:52,170 Pentru că, dacă te uiți la stânga de fereastra mea terminale, acolo 227 00:10:52,170 --> 00:10:53,120 se spune linia 21. 228 00:10:53,120 --> 00:10:57,010 Și asta îmi dă, de fapt, cod care este la linia 21. 229 00:10:57,010 --> 00:10:58,440 Așa că am misspoke mai devreme. 230 00:10:58,440 --> 00:10:59,770 Principal nu este, de fapt, la linia 21. 231 00:10:59,770 --> 00:11:02,000 Principal este o pereche de linii de mai sus 21. 232 00:11:02,000 --> 00:11:04,300 Dar la linia 21, care este unde suntem de rupere. 233 00:11:04,300 --> 00:11:06,280 Această linie de cod are Nu încă executat. 234 00:11:06,280 --> 00:11:06,890 Asta e important. 235 00:11:06,890 --> 00:11:09,120 Linia ce vezi nu are a fost executat încă. 236 00:11:09,120 --> 00:11:12,650 Asta e următoarea linie de cod esti pe cale de a executa. 237 00:11:12,650 --> 00:11:15,860 >> Deci, următoarea linie, ca voi sunt probabil, familiarizat cu, este aceasta 238 00:11:15,860 --> 00:11:20,070 condiție verificare pentru a vedea dacă am intrat într-un argument linie de comandă. 239 00:11:20,070 --> 00:11:22,140 Și o la i, ceea ce este de-a doua o parte din care face? 240 00:11:22,140 --> 00:11:23,457 Ce este o să am? 241 00:11:23,457 --> 00:11:24,950 >> STUDENT: Schimbarea se la un număr întreg. 242 00:11:24,950 --> 00:11:25,450 >> JASON Hirschhorn: Îmi pare rău? 243 00:11:25,450 --> 00:11:27,400 >> STUDENT: Se schimba argument pentru un întreg. 244 00:11:27,400 --> 00:11:30,890 >> JASON Hirschhorn: Deci, o să i se schimbă arg V1 de la un șir de la un număr întreg. 245 00:11:30,890 --> 00:11:32,140 Și atunci ce-o verificare? 246 00:11:32,140 --> 00:11:35,414 247 00:11:35,414 --> 00:11:37,112 >> STUDENT: Dacă există un al doilea argument linie de comandă, la o parte 248 00:11:37,112 --> 00:11:38,100 de la rularea programului. 249 00:11:38,100 --> 00:11:39,460 >> JASON Hirschhorn: Și ce-i a doua jumătate a acestui 250 00:11:39,460 --> 00:11:41,220 Verificarea expresie boolean? 251 00:11:41,220 --> 00:11:42,540 Această parte pe aici, o să am? 252 00:11:42,540 --> 00:11:44,080 >> STUDENT: Dacă e negativ. 253 00:11:44,080 --> 00:11:45,380 >> JASON Hirschhorn: Asigurându-vă că ce? 254 00:11:45,380 --> 00:11:47,120 >> STUDENT: Asigurându-vă că ea este, de fapt, pozitiv. 255 00:11:47,120 --> 00:11:47,650 >> JASON Hirschhorn: Exact. 256 00:11:47,650 --> 00:11:50,600 Acest lucru este de verificare pentru a vedea dacă este negativ, iar dacă este negativ, am 257 00:11:50,600 --> 00:11:53,220 au o senzație de linia următoare s-ar putea fi-mi striga la utilizator. 258 00:11:53,220 --> 00:11:55,930 Deci, hai sa lovit scop de a executa această linie. 259 00:11:55,930 --> 00:11:59,925 Noi nu vedem că linia pe care voi poate aștepta pentru a vedea tipa la 260 00:11:59,925 --> 00:12:03,030 de utilizator și apoi se întorc, pentru că această linie nu sa executat. 261 00:12:03,030 --> 00:12:03,840 Am intrat 3. 262 00:12:03,840 --> 00:12:06,860 Așa că am făcut-o, de fapt, intre doua comanda argumente de linie, și 3 este 263 00:12:06,860 --> 00:12:07,610 mai mare decât zero. 264 00:12:07,610 --> 00:12:09,950 Așa că am văzut că linia, am executat, dar nu am pas 265 00:12:09,950 --> 00:12:11,300 în cazul în care starea. 266 00:12:11,300 --> 00:12:17,060 >> Deci, acum, urmatoarea, văd eu setarea cheie int egal o să i arg v1. 267 00:12:17,060 --> 00:12:18,840 Astfel că este mine crea o cheie variabilă. 268 00:12:18,840 --> 00:12:22,450 Deci, dacă am imprima cheie, chiar acum, pentru că care vă permite să vedeți 269 00:12:22,450 --> 00:12:26,040 valoare în variabila, cheie este egal cu 47. 270 00:12:26,040 --> 00:12:28,810 Asta-i ciudat, dar, desigur, Asta pentru că nu avem 271 00:12:28,810 --> 00:12:30,490 executat linia încă. 272 00:12:30,490 --> 00:12:35,880 Deci, acum, dacă n-am lovit, executa acea linie, și de a face cheie de imprimare, cheia va fi egală cu 3, 273 00:12:35,880 --> 00:12:37,740 care este ceea ce ne asteptam sa egaleze. 274 00:12:37,740 --> 00:12:41,170 >> Deci, din nou, în GDB, linia pe care Văd că nu s-au executat încă. 275 00:12:41,170 --> 00:12:44,850 Trebuie sa lovit n sau s sau un număr de alte comenzi de fapt, 276 00:12:44,850 --> 00:12:46,610 executa acea linie. 277 00:12:46,610 --> 00:12:47,380 Cheie de imprimare. 278 00:12:47,380 --> 00:12:48,280 A-cheie de la 3. 279 00:12:48,280 --> 00:12:49,750 Până în prezent, atât de bine. 280 00:12:49,750 --> 00:12:51,000 Șir este text simplu. 281 00:12:51,000 --> 00:12:52,270 Să execute acea linie. 282 00:12:52,270 --> 00:12:53,970 Primesc un șir de la utilizator. 283 00:12:53,970 --> 00:12:58,690 >> Să vedem în mea Plecare 50, I intra BARFOO toate capacele, așa 284 00:12:58,690 --> 00:13:01,330 asta e ceea ce voi intra. 285 00:13:01,330 --> 00:13:07,300 Dacă acum am imprima text simplu. 286 00:13:07,300 --> 00:13:08,610 Veți vedea că este egal cu un șir. 287 00:13:08,610 --> 00:13:11,100 Ea dă-mi o altă hexazecimal ciudat număr, dar nu în 288 00:13:11,100 --> 00:13:13,620 De fapt spune că șir meu este BARFOO. 289 00:13:13,620 --> 00:13:19,308 Dacă aș fi vrut să văd ce-cheie a fost de la acest punct, cum aș putea verifica cheia? 290 00:13:19,308 --> 00:13:20,710 >> STUDENT: tasta Print. 291 00:13:20,710 --> 00:13:22,010 >> JASON Hirschhorn: cheie Print, exact. 292 00:13:22,010 --> 00:13:23,260 Și, de fapt, nu există o scurtătură. 293 00:13:23,260 --> 00:13:25,910 Dacă v-ați plictisit de dactilografiere de imprimare, aveți posibilitatea să tastați doar p.. 294 00:13:25,910 --> 00:13:28,340 Deci, cheia p face exact acelasi lucru. 295 00:13:28,340 --> 00:13:29,730 Și din nou, văd că este egal cu 3. 296 00:13:29,730 --> 00:13:34,760 >> Dacă aș fi vrut să aflu ce atât cheie și BARFOO cifrat, în același timp 297 00:13:34,760 --> 00:13:37,215 dar am fost obosit de a tasta fiecare unul individual, I 298 00:13:37,215 --> 00:13:38,590 ar putea de tip info localnici. 299 00:13:38,590 --> 00:13:41,170 Asta îmi dă egali cheie 3. 300 00:13:41,170 --> 00:13:42,500 Text simplu este egal BARFOO. 301 00:13:42,500 --> 00:13:45,265 De asemenea, dă-mi aceste două lucruri ciudate în partea de sus, această variabilă i și 302 00:13:45,265 --> 00:13:46,590 aceasta n variabile. 303 00:13:46,590 --> 00:13:48,460 >> Cei care sunt de fapt existente în programul meu principal. 304 00:13:48,460 --> 00:13:51,280 Noi nu le-am întâlnit încă, ci ca o previzualizare, cei 305 00:13:51,280 --> 00:13:52,880 există în mea de buclă. 306 00:13:52,880 --> 00:13:55,360 Deci, chiar acum, ele egale unele ciudat Numerele pentru că ei nu au fost 307 00:13:55,360 --> 00:13:58,300 inițializat încă, dar ele nu există încă în memorie, astfel încât acestea sunt doar setat 308 00:13:58,300 --> 00:14:00,220 la o valoare de gunoi. 309 00:14:00,220 --> 00:14:02,890 Dar noi nu vedem cheie în câmpie text, chiar acolo. 310 00:14:02,890 --> 00:14:06,390 >> Așa că am de gând să execute această linie, linia 34, pentru bucla. 311 00:14:06,390 --> 00:14:08,220 Mergem să sară în pentru buclă prin lovirea n. 312 00:14:08,220 --> 00:14:10,050 Și suntem interior pentru buclă. 313 00:14:10,050 --> 00:14:11,360 Suntem la prima verificare. 314 00:14:11,360 --> 00:14:14,300 Și din nou, acestea ar trebui să arate un fel de familiar pentru tine, pentru că aceasta a fost o 315 00:14:14,300 --> 00:14:18,080 Program de Cezar, care a fost scris, dar din nou, are un fel de bug-uri. 316 00:14:18,080 --> 00:14:21,940 >> Și acum, dacă eu fac informații localnicii, pentru că eu sunt în care pentru bucla, veți vedea 317 00:14:21,940 --> 00:14:23,900 care i este egală cu zero, așa cum ne așteptăm. 318 00:14:23,900 --> 00:14:26,820 Asta e ceea ce am setat la și inițializat se la bucla for. 319 00:14:26,820 --> 00:14:27,560 n este egal cu 6. 320 00:14:27,560 --> 00:14:30,700 Care face, de asemenea sens, deoarece ne-am stabilit l la strlen de text simplu. 321 00:14:30,700 --> 00:14:34,270 Deci, îmi place să fac localnici informații sau de imprimare la variabila de multe ori pentru a vă asigura că 322 00:14:34,270 --> 00:14:36,370 totul este întotdeauna ceea ce Mă aștept să egaleze. 323 00:14:36,370 --> 00:14:39,800 În acest caz, tot ceea ce este ceea ce mă aștept să egaleze. 324 00:14:39,800 --> 00:14:41,850 >> Deci, haideți să înceapă să se miște prin acest lucru pentru bucla. 325 00:14:41,850 --> 00:14:45,715 Linia Sunt pe linie este de 36, în cazul în care campie Textul i este mai mare decât un simplu și 326 00:14:45,715 --> 00:14:48,540 Textul i este mai mic sau egal cu z. 327 00:14:48,540 --> 00:14:51,880 Știu că problema mea nu este cu primul meu scrisoare, e cu a doua scrisoare. 328 00:14:51,880 --> 00:14:56,290 Dacă ne uităm înapoi la check- 50, B merge la E bine. 329 00:14:56,290 --> 00:14:59,010 Iau A și lăsându-l ca o O, nu-l schimba la D. Deci, 330 00:14:59,010 --> 00:15:00,200 ceva e în neregulă cu a doua scrisoare. 331 00:15:00,200 --> 00:15:01,640 Așa că am de gând să se mute acolo într-o secundă. 332 00:15:01,640 --> 00:15:06,030 >> Dar, dacă am vrut să verifice ce simplu text, am egalat în această special 333 00:15:06,030 --> 00:15:07,760 caz, cred că ar trebui să fie ce? 334 00:15:07,760 --> 00:15:10,980 Ce ar trebui să text simplu să egaleze în acest primul tur de scrutin prin intermediul pentru buclă? 335 00:15:10,980 --> 00:15:14,046 336 00:15:14,046 --> 00:15:15,110 >> STUDENT: Zero? 337 00:15:15,110 --> 00:15:16,510 >> JASON Hirschhorn: Text simplu de I? 338 00:15:16,510 --> 00:15:21,180 Deci, ar trebui să fie de capital B. I, desigur, este egală cu zero, dar text simplu 339 00:15:21,180 --> 00:15:25,600 Suport zero, suport închis este egal cu B deoarece siruri de caractere, așa cum am văzut săptămâna trecută, 340 00:15:25,600 --> 00:15:28,650 sunt matrice, așa că ne apropiem Primul caracter din asta. 341 00:15:28,650 --> 00:15:34,960 Deci, din nou, în cazul în care am printat text simplu din Eu, eu, de fapt, pentru a primi caracterul 342 00:15:34,960 --> 00:15:36,560 B. Și asta e curat, corect? 343 00:15:36,560 --> 00:15:40,380 Nu am de fapt text simplu I. Asta nu e una dintre variabilele I stabilite 344 00:15:40,380 --> 00:15:42,950 sau inițializat, dar aveți posibilitatea de a imprima o întreagă serie de lucruri 345 00:15:42,950 --> 00:15:45,640 dacă doriți să. 346 00:15:45,640 --> 00:15:47,340 >> Dar să trecem prin. 347 00:15:47,340 --> 00:15:50,050 Dacă text simplu I este mai mare decât A și text simplu I este mai mică sau egală cu 348 00:15:50,050 --> 00:15:53,290 Z, care în mod clar este adevărat că avem o B. de capital am de gând să ruleze 349 00:15:53,290 --> 00:15:54,230 anumite comenzi pe ea. 350 00:15:54,230 --> 00:15:58,530 Am văzut că matematica săptămâna trecută, așa că vom ia-o de la sine că funcționează 351 00:15:58,530 --> 00:16:00,900 dreptul în conformitate cu Verifică 50. 352 00:16:00,900 --> 00:16:03,720 >> Aceste acolade, prima a aratat ca am fost ieșirea din dacă 353 00:16:03,720 --> 00:16:07,030 stare, al doilea a arătat că eu sunt pentru ieșirea din buclă. 354 00:16:07,030 --> 00:16:10,400 Iar acum, când am lovit următoare, vom vedea ne-am întors de la bucla din nou. 355 00:16:10,400 --> 00:16:11,970 Mergem prin pentru bucla din nou. 356 00:16:11,970 --> 00:16:18,110 Să pas de fapt, în cea de a doua repetare a pentru buclă și tipul 357 00:16:18,110 --> 00:16:20,520 info localnici. 358 00:16:20,520 --> 00:16:22,190 >> Deci, suntem în cea de a doua iterație de buclă noastre pentru. 359 00:16:22,190 --> 00:16:24,530 I este egal cu 1, pe care ne asteptam. 360 00:16:24,530 --> 00:16:26,650 N este egal cu 6, pe care ne asteptam. 361 00:16:26,650 --> 00:16:28,810 Cheie este egal cu 3, pe care ne asteptam. 362 00:16:28,810 --> 00:16:32,625 Și text simplu, veți vedea, este egal cu EARFOO acum, nu mai BARFOO deoarece 363 00:16:32,625 --> 00:16:37,930 în iterație nostru anterior, B a fost schimbat la un capital de E. Deci, suntem pe cale de 364 00:16:37,930 --> 00:16:40,040 sa se confrunte cu această problemă, astfel încât aceasta este locul unde vom 365 00:16:40,040 --> 00:16:41,130 se arunca cu capul în depanare. 366 00:16:41,130 --> 00:16:43,365 Dar are cineva are întrebări despre ceea ce am făcut până acum? 367 00:16:43,365 --> 00:16:46,770 368 00:16:46,770 --> 00:16:47,910 Fantastic. 369 00:16:47,910 --> 00:16:52,710 >> Deci, suntem pe cale de a executa acest lucru, dacă condiție, suport text simplu am închis 370 00:16:52,710 --> 00:16:57,500 suport mai mare decât A și text simplu am mai mic sau egal cu Z. Dar, înainte 371 00:16:57,500 --> 00:17:00,450 Mă duc în care, pentru că acest lucru este în cazul în care Știu că eroarea mea este, vreau să subliniez 372 00:17:00,450 --> 00:17:06,859 din text de I. Deci, să punem imprima. 373 00:17:06,859 --> 00:17:12,020 Face egal cu caracterul A, astfel încât se pare până acum, totul este bine și bun. 374 00:17:12,020 --> 00:17:14,740 >> Așa că am aștepta ca această linie pe logica mea, această linie ar trebui să fie adevărat. 375 00:17:14,740 --> 00:17:16,099 Este o scrisoare de capital. 376 00:17:16,099 --> 00:17:20,599 Dar dacă am lovit n, ne dăm seama că această linie, în fapt, nu sa executat. 377 00:17:20,599 --> 00:17:22,609 Am sărit jos la else if. 378 00:17:22,609 --> 00:17:25,460 De ce sa întâmplat asta? 379 00:17:25,460 --> 00:17:27,480 >> STUDENT: Pentru că aveți starea dumneavoastră de text simplu este mai mare 380 00:17:27,480 --> 00:17:29,130 decât A, nu este egal sau mai mare. 381 00:17:29,130 --> 00:17:32,260 >> JASON Hirschhorn: Deci, am avut textul simplu I este mai mare decât A, nu mai mare 382 00:17:32,260 --> 00:17:32,850 mare sau egal cu. 383 00:17:32,850 --> 00:17:38,130 Deci, în mod clar, capitalul A nu a făcut declanșa această condiție în cazul în care, și am făcut 384 00:17:38,130 --> 00:17:40,520 nu intra în ea, și am făcut nu face schimbarea necesară. 385 00:17:40,520 --> 00:17:41,360 Deci asta e, de fapt. 386 00:17:41,360 --> 00:17:42,920 Am dat seama bug mea. 387 00:17:42,920 --> 00:17:46,775 Am putea merge înapoi în dosarul meu sursă, schimba-l, și să o actualizați și 388 00:17:46,775 --> 00:17:47,855 rulați Verificați 50 din nou. 389 00:17:47,855 --> 00:17:52,590 >> Dar vom vedea, doar pentru pedagogie lui sake, dacă eu continui. 390 00:17:52,590 --> 00:17:59,580 Altfel daca nu se executa, fie, dar ceea ce în schimb este egală este comanda 391 00:17:59,580 --> 00:18:00,500 care nu se schimbă. 392 00:18:00,500 --> 00:18:04,840 Deci, nu sa schimbat deloc, și dacă am imprima text simplu aici, vom vedea merge 393 00:18:04,840 --> 00:18:08,250 prin care pentru bucla nu a făcut, de fapt, schimba faptul că al doilea caracter, la toate. 394 00:18:08,250 --> 00:18:09,600 Este încă o A. de capital 395 00:18:09,600 --> 00:18:12,690 >> Deci, din nou, ne-am depanat eroare nostru. 396 00:18:12,690 --> 00:18:17,380 Ne-am dat seama că nu a fost lipsesc unele logica. 397 00:18:17,380 --> 00:18:20,590 Și l-am depanat înainte de timp înainte de a executarea de fapt acea linie, 398 00:18:20,590 --> 00:18:24,320 dar v-ar fi observat avut ne-am Următorul lovit și a sări la care altfel dacă, 399 00:18:24,320 --> 00:18:26,710 ceea ce înseamnă că, dacă starea nu era adevărat. 400 00:18:26,710 --> 00:18:29,550 Noi nu am, de fapt, pentru a primi rezultatul ne-am asteptat. 401 00:18:29,550 --> 00:18:33,240 Deci ne-ar fi putut fi determinat, a avut nu am fost atât de abil, să se uite la 402 00:18:33,240 --> 00:18:38,510 că în cazul în care starea și verificați dacă, în fapt, starea noastră ar trebui să evalueze în 403 00:18:38,510 --> 00:18:41,150 adevărat în contextul actual. 404 00:18:41,150 --> 00:18:42,880 >> Asta e tot pentru depanarea acestui program. 405 00:18:42,880 --> 00:18:45,340 Are cineva vreo întrebare? 406 00:18:45,340 --> 00:18:50,486 Ce comanda ar putea l-am lovit la demisia GDB? 407 00:18:50,486 --> 00:18:53,900 Q. Și apoi se va solicita, renunta oricum? 408 00:18:53,900 --> 00:18:54,390 Da sau nu. 409 00:18:54,390 --> 00:18:58,440 Voi lovi da, și eu am renuntat GDB. 410 00:18:58,440 --> 00:19:00,860 >> Astfel că a fost un primer rapid pentru GDB. 411 00:19:00,860 --> 00:19:03,430 De fapt, într-un scenariu reală, Am făcut acest lucru la ore de birou. 412 00:19:03,430 --> 00:19:06,710 Am GDBed acest program exact la orelor de serviciu, cu un student. 413 00:19:06,710 --> 00:19:12,410 Și dacă ne întoarcem la comenzile le-am vazut înainte, am folosit pauza principal, în primul rând 414 00:19:12,410 --> 00:19:13,190 lucru am făcut. 415 00:19:13,190 --> 00:19:16,060 Am folosit rula cu argumente de linie de comandă, al doilea lucru am făcut. 416 00:19:16,060 --> 00:19:18,520 Am folosit lângă o mulțime de a muta ne prin linii. 417 00:19:18,520 --> 00:19:20,310 Și din nou, versiunea scurtă de este următorul n. 418 00:19:20,310 --> 00:19:22,920 Asta e în paranteze în gri pe diapozitiv. 419 00:19:22,920 --> 00:19:28,590 >> Nu am folosit pas, dar nu am făcut-o Trebuie neapărat să pentru acest caz. 420 00:19:28,590 --> 00:19:32,150 Dar s-ar putea folosi într-un pic mai târziu pe ziua de azi, dacă suntem de depanare, pentru 421 00:19:32,150 --> 00:19:36,500 exemplu, căutare binar când binar căutare este numit într-o separat 422 00:19:36,500 --> 00:19:38,200 funcție, dar există unele erori cu ea. 423 00:19:38,200 --> 00:19:40,440 Am de gând să vrea să-și intensifice în apelul la binar de căutare și 424 00:19:40,440 --> 00:19:41,840 de fapt, o depanare. 425 00:19:41,840 --> 00:19:45,130 Lista nu am folosit nici pentru că am avut un bun simt de cod noastre, dar dacă am 426 00:19:45,130 --> 00:19:48,420 a vrut pentru a obține un sentiment de cod ceea ce am a fost în jur, am putea folosi doar lista. 427 00:19:48,420 --> 00:19:50,310 >> Imprima am folosit, informații localnici le-am folosit. 428 00:19:50,310 --> 00:19:53,260 Continua nu am nevoie pentru a utiliza în acest caz, nu am nevoie pentru a utiliza 429 00:19:53,260 --> 00:19:55,060 dezactiva, dar am făcut-o utilizare renuntat. 430 00:19:55,060 --> 00:19:57,850 Din nou, aceste 10 de comenzi, le practică. 431 00:19:57,850 --> 00:20:00,770 Dacă ați înțeles aceste 10 de comenzi, ar trebui să fie stabilite pentru orice depanare 432 00:20:00,770 --> 00:20:02,525 emite cu GDB. 433 00:20:02,525 --> 00:20:05,230 434 00:20:05,230 --> 00:20:08,420 >> Deci, suntem pe cale de a merge mai departe, din nou, la crucial de la punctul de azi, trecând peste 435 00:20:08,420 --> 00:20:09,720 acestea sortarea și căutarea algoritmi. 436 00:20:09,720 --> 00:20:14,075 Înainte de a face acest lucru, din nou, întrebări, comentarii, preocupări pentru GDB? 437 00:20:14,075 --> 00:20:16,750 438 00:20:16,750 --> 00:20:20,960 Deci, toată lumea este de gând să utilizeze GDB, mai degrabă decât printf? 439 00:20:20,960 --> 00:20:24,550 Deci, toată lumea, de dragul lui perpetuu, toată lumea este cap drept cap 440 00:20:24,550 --> 00:20:27,400 acum, așa că veți vedea la ore de birou și toate TFS vă și veți vedea 441 00:20:27,400 --> 00:20:29,460 vor spune, arată-mi cum să utilizați GDB, și veți putea 442 00:20:29,460 --> 00:20:31,240 pentru a le arăta, corect? 443 00:20:31,240 --> 00:20:31,760 Un fel de? 444 00:20:31,760 --> 00:20:32,640 Poate sperăm. 445 00:20:32,640 --> 00:20:33,670 Rece. 446 00:20:33,670 --> 00:20:35,790 >> Așa că am de gând să se mute în sortarea și căutarea. 447 00:20:35,790 --> 00:20:40,710 Veți vedea Am o listă deja clasificate în funcție pentru noi, dar care nu se întâmplă 448 00:20:40,710 --> 00:20:42,220 să fie cazul întotdeauna. 449 00:20:42,220 --> 00:20:49,170 Deci, în problema stabilit caietul de sarcini pentru problema stabilit trei, aveți pantaloni scurți 450 00:20:49,170 --> 00:20:51,410 pe care le puteți viziona, și este de fapt vă solicită pentru a viziona aceste pantaloni scurți. 451 00:20:51,410 --> 00:20:55,090 De asemenea, în curs de săptămâna trecută, ne-am dus peste o mulțime de aceste algoritmi, așa că eu sunt 452 00:20:55,090 --> 00:20:59,150 Nu o să-și petreacă timpul în clasa a merge asupra acestor algoritmi din nou sau desen 453 00:20:59,150 --> 00:21:01,130 imagini de modul în care acestea algoritmi de lucru. 454 00:21:01,130 --> 00:21:04,030 Din nou, aceste informații puteți re-ceas prelegere, sau că informațiile 455 00:21:04,030 --> 00:21:08,570 este capturat deosebit pe pantaloni scurți pentru aceste căutări, toate de 456 00:21:08,570 --> 00:21:10,920 care sunt disponibile la cs50.net. 457 00:21:10,920 --> 00:21:14,200 >> Deci, în loc, ceea ce am de gând să faceți este să scrie aceste programe. 458 00:21:14,200 --> 00:21:18,190 Avem un sens, un model mental, de modul în care lucrează, și deci ceea ce vom 459 00:21:18,190 --> 00:21:20,210 să faceți este să le cod pentru adevărat. 460 00:21:20,210 --> 00:21:23,430 Vom transforma acest model mental, ca imagine, dacă vreți, în 461 00:21:23,430 --> 00:21:24,960 cod real. 462 00:21:24,960 --> 00:21:28,460 Și dacă ai fost un pic confuz sau tulbure pe modelul mental, am totul 463 00:21:28,460 --> 00:21:28,770 înțelege. 464 00:21:28,770 --> 00:21:30,540 >> Noi nu esti de fapt de gând să salt la codul imediat. 465 00:21:30,540 --> 00:21:36,030 Deci, în timp ce această solicitare în acest diapozitiv cere să cod binar de căutare, și 466 00:21:36,030 --> 00:21:39,470 de fapt, o versiune iterativ de binar de căutare, primul lucru pe care am 467 00:21:39,470 --> 00:21:42,370 Chiar vrei să faci este scrie unele pseudocod. 468 00:21:42,370 --> 00:21:47,020 Astfel încât să aveți acest model mental de modul în care funcționează de căutare binar. 469 00:21:47,020 --> 00:21:50,060 Ia o foaie de hârtie dacă aveți un ușor disponibile, sau deschide un 470 00:21:50,060 --> 00:21:52,520 editor de text, și mi-ar plăcea toată lumea pentru a scrie. 471 00:21:52,520 --> 00:21:57,470 Ia patru minute pentru a scrie pseudocod pentru căutare binară. 472 00:21:57,470 --> 00:21:58,990 >> Din nou, gândiți-vă că modelul mental. 473 00:21:58,990 --> 00:22:01,980 Voi veni în jurul dacă aveți întrebări și putem trage imaginea afară. 474 00:22:01,980 --> 00:22:06,220 Dar, în primul rând, înainte de a începe de programare, Aș vrea să scrie 475 00:22:06,220 --> 00:22:09,920 pseudocod pentru binar de căutare astfel încât atunci când ne-am se arunca cu capul în, avem o direcție ca 476 00:22:09,920 --> 00:22:12,110 pentru cazul în care ar trebui să ne îndreptăm. 477 00:22:12,110 --> 00:22:15,330 >> STUDENT: Putem presupune gama de Valorile primim este deja sortat? 478 00:22:15,330 --> 00:22:17,960 >> JASON Hirschhorn: Deci, de căutare binară la locul de muncă - întrebare excelentă - vă 479 00:22:17,960 --> 00:22:20,970 trebuie să ia într-o sortat matrice de valori. 480 00:22:20,970 --> 00:22:22,290 Deci, presupun că va funcționa. 481 00:22:22,290 --> 00:22:23,480 Ne vom întoarce la acest diapozitiv. 482 00:22:23,480 --> 00:22:27,220 Veți vedea în purpuriu funcția Declarația este bool binary_search int 483 00:22:27,220 --> 00:22:29,230 valoare, valori int, int n. 484 00:22:29,230 --> 00:22:32,910 Acest lucru ar trebui să arate familiar dacă ați deja abordat sau ajuns dvs. 485 00:22:32,910 --> 00:22:34,580 mâinile murdare cu setul de probleme. 486 00:22:34,580 --> 00:22:35,910 >> Dar asta e declarația ta funcție. 487 00:22:35,910 --> 00:22:39,080 Din nou, nu este nevoie să vă faceți griji cu privire la atât de mult în acest moment. 488 00:22:39,080 --> 00:22:43,660 Ceea ce eu chiar vreau să faceți este să luați Patru minute până la binar pseudocod 489 00:22:43,660 --> 00:22:46,380 căutare, iar apoi vom merge peste care ca un grup. 490 00:22:46,380 --> 00:22:47,500 Și voi veni în jur. 491 00:22:47,500 --> 00:22:49,590 Dacă aveți întrebări, simt liber pentru a ridica mâna. 492 00:22:49,590 --> 00:25:07,110 493 00:25:07,110 --> 00:25:09,680 >> De ce nu luați mai mult de două minute pentru a termina pseudocod? 494 00:25:09,680 --> 00:25:13,690 495 00:25:13,690 --> 00:25:15,820 Știu că acest lucru poate părea ridicol că vom petrece atât de mult timp pe 496 00:25:15,820 --> 00:25:20,350 ceva ce nici măcar nu e de fapt în C, dar mai ales pentru acestea și mai mult 497 00:25:20,350 --> 00:25:24,030 algoritmi de provocatoare și probleme seturi pe care le avem să ne dăm seama, 498 00:25:24,030 --> 00:25:27,210 începând din pseudocod nu îngrijorătoare despre sintaxa, doar griji 499 00:25:27,210 --> 00:25:29,150 logica, este incredibil de util. 500 00:25:29,150 --> 00:25:32,720 Și în acest fel, tu nu esti rezolvarea doi probleme incredibil de dificile, la o dată. 501 00:25:32,720 --> 00:25:35,390 Esti doar concentrându-se pe logica, și apoi vă mutați în sintaxa. 502 00:25:35,390 --> 00:25:59,960 503 00:25:59,960 --> 00:26:01,385 >> OK. 504 00:26:01,385 --> 00:26:03,680 Să începem prin a merge pseudocod. 505 00:26:03,680 --> 00:26:05,380 Am scris aici, binar căutare pseudocod. 506 00:26:05,380 --> 00:26:07,360 Vom scrie acest lucru pe bordul împreună. 507 00:26:07,360 --> 00:26:10,040 Sau voi scrie și vă voi da mi instrucțiunile de care am nevoie. 508 00:26:10,040 --> 00:26:15,010 Deci, poate cineva să-mi dea primul linie de pseudocod te 509 00:26:15,010 --> 00:26:18,350 a scris pentru căutare binar? 510 00:26:18,350 --> 00:26:20,258 Da, Annie? 511 00:26:20,258 --> 00:26:22,698 >> STUDENT: În timp ce lungimea Lista este mai mare decât zero. 512 00:26:22,698 --> 00:26:26,114 513 00:26:26,114 --> 00:26:34,880 >> JASON Hirschhorn: În timp ce lungime din lista mai mare decât zero. 514 00:26:34,880 --> 00:26:38,810 Și din nou, vom vedea unele C-căutarea sintactice lucrurile pe aici. 515 00:26:38,810 --> 00:26:41,550 Dar cea mai mare parte acest lucru este în limba engleză. 516 00:26:41,550 --> 00:26:43,980 Ai cineva vreo linie au pus înainte de aceasta, în lor de pseudo-cod? 517 00:26:43,980 --> 00:26:47,280 518 00:26:47,280 --> 00:26:50,210 >> STUDENT: Ia-o matrice de sortat numere. 519 00:26:50,210 --> 00:26:53,600 >> JASON Hirschhorn: Ai scris "obține o matrice de numere sortate. "Per 520 00:26:53,600 --> 00:26:56,140 declarație funcție, vom trece o serie de numere sortate. 521 00:26:56,140 --> 00:26:57,280 >> STUDENT: [inaudibil]. 522 00:26:57,280 --> 00:26:59,030 >> JASON Hirschhorn: Deci, vom avea asta. 523 00:26:59,030 --> 00:27:01,820 Dar, da, dacă nu am avea asta, ne-am ar avea nevoie pentru a sorta gama noastră de 524 00:27:01,820 --> 00:27:04,850 numere, pentru că de căutare binară funcționează doar pe tablouri sortate. 525 00:27:04,850 --> 00:27:11,300 Deci, în timp ce lungimea de lista este zero, eu sunt de gând să pună în unele acolade 526 00:27:11,300 --> 00:27:15,420 pentru a face să arate un pic mai mult ca C. Dar, în același timp, pare să hartă pe o 527 00:27:15,420 --> 00:27:19,550 în timp ce bucla, astfel încât în ​​acest timp buclă de ce avem nevoie pentru a 528 00:27:19,550 --> 00:27:22,000 face de căutare binar? 529 00:27:22,000 --> 00:27:25,530 >> Cineva care nu mi-a dat un răspunde încă, dar cine a scris asta? 530 00:27:25,530 --> 00:27:31,750 531 00:27:31,750 --> 00:27:33,320 >> STUDENT: Du-te la mijlocul listei. 532 00:27:33,320 --> 00:27:33,980 >> JASON Hirschhorn: Tom. 533 00:27:33,980 --> 00:27:35,230 Du-te la mijlocul listei. 534 00:27:35,230 --> 00:27:43,290 535 00:27:43,290 --> 00:27:45,530 Și întrebarea follow-up, ceea ce facem o dată suntem la 536 00:27:45,530 --> 00:27:46,870 mijloc a listei? 537 00:27:46,870 --> 00:27:49,310 >> STUDENT: face o verificare dacă asta e numărul pe care îl căutați. 538 00:27:49,310 --> 00:27:50,120 >> JASON Hirschhorn: Excelent. 539 00:27:50,120 --> 00:28:05,500 Du-te la mijlocul listei și verificați dacă valoarea noastră este acolo - 540 00:28:05,500 --> 00:28:06,515 fantastic. 541 00:28:06,515 --> 00:28:10,460 Ai cineva au nimic altceva care a fost diferit decât aceasta? 542 00:28:10,460 --> 00:28:11,210 Asta-i exact corect. 543 00:28:11,210 --> 00:28:13,800 >> Primul lucru pe care îl facem în căutare binar se merge la mijlocul listei și 544 00:28:13,800 --> 00:28:15,870 verificați pentru a vedea dacă valoarea noastră este acolo. 545 00:28:15,870 --> 00:28:19,682 Așa că am asuma dacă valoarea noastră este acolo, ce facem? 546 00:28:19,682 --> 00:28:21,610 >> STUDENT: Ne întoarcem la zero [neauzit]. 547 00:28:21,610 --> 00:28:23,400 >> JASON Hirschhorn: Da, în cazul nostru valoare este acolo, l-am găsit. 548 00:28:23,400 --> 00:28:27,950 Deci, putem spune un fel, însă acest Funcția este definită, ne spune utilizatorului 549 00:28:27,950 --> 00:28:28,520 l-am găsit. 550 00:28:28,520 --> 00:28:30,950 Dacă nu este acolo, totuși, că este în cazul în care acest lucru devine dificil. 551 00:28:30,950 --> 00:28:35,120 Deci, dacă nu e acolo, cineva care a fost de lucru pe binar de căutare sau 552 00:28:35,120 --> 00:28:36,830 are o idee acum, ce facem? 553 00:28:36,830 --> 00:28:37,830 >> STUDENT: Întrebare. 554 00:28:37,830 --> 00:28:38,100 >> JASON Hirschhorn: Da? 555 00:28:38,100 --> 00:28:39,920 >> STUDENT: Este array sortat deja? 556 00:28:39,920 --> 00:28:42,200 >> JASON Hirschhorn: Da, suntem presupunând matrice este deja sortat. 557 00:28:42,200 --> 00:28:46,480 >> STUDENT: Deci, atunci va trebui să verificați dacă valoarea pe care o vedeți este mai mare decât 558 00:28:46,480 --> 00:28:51,745 valoarea pe care doriți, puteți muta la mijlocul cealaltă jumătate. 559 00:28:51,745 --> 00:28:54,110 >> JASON Hirschhorn: Deci, în cazul în care mijlocul de lista este mai mare decât ceea ce suntem 560 00:28:54,110 --> 00:28:57,440 cauta, atunci facem ce? 561 00:28:57,440 --> 00:28:58,320 Ne mutăm unde? 562 00:28:58,320 --> 00:29:01,400 >> STUDENT: Vrei să se mute în jumătate a listei cu 563 00:29:01,400 --> 00:29:02,780 un număr mai mic decât că. 564 00:29:02,780 --> 00:29:04,460 >> JASON Hirschhorn: Deci, vom numi stânga. 565 00:29:04,460 --> 00:29:15,435 Deci, dacă de mijloc este mai mare, putem căuta jumătatea din stânga a listei. 566 00:29:15,435 --> 00:29:20,620 567 00:29:20,620 --> 00:29:22,980 Și apoi de căutare, ceea ce vreau sa spun de căutare? 568 00:29:22,980 --> 00:29:24,010 >> STUDENT: [inaudibil]. 569 00:29:24,010 --> 00:29:24,410 >> JASON Hirschhorn: Mergem la mijloc. 570 00:29:24,410 --> 00:29:25,740 Repetăm ​​de fapt, acest lucru. 571 00:29:25,740 --> 00:29:29,210 Ne întoarcem prin buclă în timp ce noastre. 572 00:29:29,210 --> 00:29:31,480 Îți voi da ultima - 573 00:29:31,480 --> 00:29:39,047 altfel, în cazul în care, de mijloc este mai mică decât ceea ce facem, ce facem aici? 574 00:29:39,047 --> 00:29:40,360 >> STUDENT: Du-te la dreapta. 575 00:29:40,360 --> 00:29:41,610 >> JASON Hirschhorn: Caută dreapta. 576 00:29:41,610 --> 00:29:47,440 577 00:29:47,440 --> 00:29:51,710 Acest lucru arată bine, dar are pe nimeni ceva care am putea să lipsească sau 578 00:29:51,710 --> 00:29:53,200 orice altceva pe care le pune în dumneavoastră pseudo-cod? 579 00:29:53,200 --> 00:29:57,080 580 00:29:57,080 --> 00:29:58,410 Deci, aceasta este ceea ce avem până acum. 581 00:29:58,410 --> 00:30:00,960 În timp ce lungimea listei este mai mare decât zero, vom merge 582 00:30:00,960 --> 00:30:03,220 la mijlocul listei și verificați dacă valoarea noastră este acolo. 583 00:30:03,220 --> 00:30:06,970 >> Dacă la mijloc este mai mare, vom căutare stânga, altfel, dacă la mijloc este 584 00:30:06,970 --> 00:30:09,230 mai puțin, vom căuta dreapta. 585 00:30:09,230 --> 00:30:14,430 Deci, am avut toți unele familiaritate cu condițiile pe care le folosim în informatică 586 00:30:14,430 --> 00:30:15,550 și instrumentele pe care le avem. 587 00:30:15,550 --> 00:30:18,300 Dar veți observa deja am fost vorbind în limba engleză, dar am găsit un 588 00:30:18,300 --> 00:30:24,790 mulțime de lucruri care păreau să hartă pe instrumente pe care le avem in trusa nostru instrument de codificare. 589 00:30:24,790 --> 00:30:27,210 Deci, chiar de la inceput, nu suntem O să codul de fapt încă. 590 00:30:27,210 --> 00:30:33,300 >> Ce vedem aici, în limba engleză, care hărți cu privire la lucruri pe care le poate scrie in C? 591 00:30:33,300 --> 00:30:34,560 >> STUDENT: în timp ce. 592 00:30:34,560 --> 00:30:35,320 >> JASON Hirschhorn: În timp ce. 593 00:30:35,320 --> 00:30:40,610 Deci, aceasta în timp ce aici hărți de pe la ce? 594 00:30:40,610 --> 00:30:42,630 >> STUDENT: o buclă în timp. 595 00:30:42,630 --> 00:30:43,200 >> JASON Hirschhorn: o buclă în timp ce? 596 00:30:43,200 --> 00:30:44,540 Sau, probabil, mai general, o buclă. 597 00:30:44,540 --> 00:30:46,260 Vrem să facem ceva peste si peste. 598 00:30:46,260 --> 00:30:49,050 Așa că am de gând să cod o buclă. 599 00:30:49,050 --> 00:30:51,640 Și știm deja, pentru că am făcut acest lucru de câteva ori și am 600 00:30:51,640 --> 00:30:54,180 au o multime de exemple de acolo, cum de fapt de a scrie 601 00:30:54,180 --> 00:30:55,310 acest indice pentru o buclă. 602 00:30:55,310 --> 00:30:56,160 Astfel că ar trebui să fie destul de ușor. 603 00:30:56,160 --> 00:30:58,070 Noi ar trebui să poată obține că a început destul de repede. 604 00:30:58,070 --> 00:31:01,830 >> Ce altceva mai vedem pe aici? 605 00:31:01,830 --> 00:31:06,820 Ce alte structuri sintaxe, lucrurile că suntem familiarizați cu în C, nu-i așa 606 00:31:06,820 --> 00:31:09,790 au deja un sentiment de Bazat pe de cuvintele pe care le utilizați? 607 00:31:09,790 --> 00:31:10,830 Da, Anna? 608 00:31:10,830 --> 00:31:11,360 [Inaudibil] 609 00:31:11,360 --> 00:31:12,990 Glumeam. 610 00:31:12,990 --> 00:31:13,540 Anna, dă-i drumul. 611 00:31:13,540 --> 00:31:14,530 >> STUDENT: În cazul în care și altceva. 612 00:31:14,530 --> 00:31:16,260 >> JASON Hirschhorn: În cazul în care și altfel - chiar aici. 613 00:31:16,260 --> 00:31:18,840 Deci, ce cei care arata ca? 614 00:31:18,840 --> 00:31:20,420 >> STUDENT: O dacă else. 615 00:31:20,420 --> 00:31:21,560 >> JASON Hirschhorn: Da, condiții, nu? 616 00:31:21,560 --> 00:31:24,650 Deci, vom avea nevoie, probabil, pentru a scrie unele condiții. 617 00:31:24,650 --> 00:31:31,185 Și, din nou, deși poate derutant în primul rând, avem în general un sens acum 618 00:31:31,185 --> 00:31:34,010 de cum să scrie condiții și sintaxa pentru condiții. 619 00:31:34,010 --> 00:31:36,850 Și dacă nu o facem, ne-am uita în sus sintaxa pentru condiții, cut și paste 620 00:31:36,850 --> 00:31:39,950 că, pentru că noi știm au nevoie de o condiție aici. 621 00:31:39,950 --> 00:31:44,910 Orice alte lucruri pe care le vedem ca pe harta lucruri pe care ar trebui să le facă în C? 622 00:31:44,910 --> 00:31:48,312 623 00:31:48,312 --> 00:31:48,960 Da, Aleha? 624 00:31:48,960 --> 00:31:50,370 >> STUDENT: Acest lucru ar putea fi evident, doar prin a verifica dacă un 625 00:31:50,370 --> 00:31:51,990 valoare este egală cu ceva. 626 00:31:51,990 --> 00:31:54,578 >> JASON Hirschhorn: Deci, cum putem verifica și - merge atât de la mijlocul listei 627 00:31:54,578 --> 00:31:55,610 și verificați dacă valoarea noastră este acolo? 628 00:31:55,610 --> 00:31:56,570 Cum facem asta în C? 629 00:31:56,570 --> 00:31:58,450 Care este sintaxa pentru asta? 630 00:31:58,450 --> 00:31:59,235 >> STUDENT: Egal, este egal. 631 00:31:59,235 --> 00:32:00,650 >> JASON Hirschhorn: Egal, este egal. 632 00:32:00,650 --> 00:32:03,540 Deci, această verificare este, probabil, va pentru a fi un egali, egali. 633 00:32:03,540 --> 00:32:04,510 Deci, vom ști că avem nevoie de undeva. 634 00:32:04,510 --> 00:32:07,510 Și, de fapt, doar în scris-o, vom vedea aceste lucruri. 635 00:32:07,510 --> 00:32:11,400 Vom avea de a face unele operatori de comparare acolo - 636 00:32:11,400 --> 00:32:12,010 fantastic. 637 00:32:12,010 --> 00:32:14,980 Deci, este de fapt arata ca, prin și o mare, nu am scris 638 00:32:14,980 --> 00:32:16,390 cuvânt de cod C încă. 639 00:32:16,390 --> 00:32:20,610 Dar avem modelul mental jos prin prelegeri și aceste pantaloni scurți. 640 00:32:20,610 --> 00:32:22,350 >> Am scris pseudo-cod ca un grup. 641 00:32:22,350 --> 00:32:27,110 Și deja, avem 80% în cazul în care nu 90% din ceea ce trebuie să facem. 642 00:32:27,110 --> 00:32:28,550 Acum, avem nevoie doar de codul ea, care din nou, este o 643 00:32:28,550 --> 00:32:30,110 problema non-trivial pentru a rezolva. 644 00:32:30,110 --> 00:32:31,890 Dar cel puțin suntem blocați pe logica. 645 00:32:31,890 --> 00:32:38,040 Cel puțin acum, când vom merge la orele de birou, Pot să spun, știu ce am nevoie 646 00:32:38,040 --> 00:32:40,160 de a face, dar pot să vă reamintesc mi-a sintaxei? 647 00:32:40,160 --> 00:32:42,940 Sau chiar dacă orele de birou sunt aglomerate, te Poate Google pentru sintaxa, mai degrabă 648 00:32:42,940 --> 00:32:45,040 decat sa fie blocat pe logica. 649 00:32:45,040 --> 00:32:48,570 >> Și din nou, mai degrabă decât încercarea de a rezolva logica și problemele de sintaxă toate 650 00:32:48,570 --> 00:32:51,900 în același timp, este adesea mult mai bine să sparge aceste două probleme grele off în 651 00:32:51,900 --> 00:32:58,280 două cele mai ușor de gestionat și de a face pseudo-cod întâi și apoi de cod în C. 652 00:32:58,280 --> 00:33:00,620 Deci, haideți să vedem ce am făcut pentru pseudo-cod înainte de timp. 653 00:33:00,620 --> 00:33:04,060 >> În timp ce lungimea listei este mai mare decât zero, uita-te la mijloc 654 00:33:04,060 --> 00:33:05,090 listei. 655 00:33:05,090 --> 00:33:09,610 Dacă numărul găsit întors adevărat, altfel în cazul în număr mai mare, de căutare din stânga. 656 00:33:09,610 --> 00:33:13,200 Altceva în cazul în număr mai mic, căutare drept, intoarce false. 657 00:33:13,200 --> 00:33:18,710 Deci, care arata aproape identic în cazul în care nu aproape identic cu ceea ce am scris. 658 00:33:18,710 --> 00:33:23,030 De fapt, Tom, ceea ce ați spus în primul rând, rupere mijlocul listei și dacă 659 00:33:23,030 --> 00:33:24,880 Numărul de găsit în două declarații este de fapt ceea ce am făcut. 660 00:33:24,880 --> 00:33:25,507 >> Le-am combinat acolo. 661 00:33:25,507 --> 00:33:27,100 Ar fi trebuit ascultat tu prima dată. 662 00:33:27,100 --> 00:33:30,640 Astfel că este pseudo-codul avem. 663 00:33:30,640 --> 00:33:35,060 Dacă doriți să acum, îmi pare rău, du-te înapoi la problema noastră inițială. 664 00:33:35,060 --> 00:33:37,780 Să cod binary.c. 665 00:33:37,780 --> 00:33:40,870 Astfel încât să pună în aplicare o versiune iterativ de binar de căutare folosind următoarele 666 00:33:40,870 --> 00:33:42,420 declarație a funcției. 667 00:33:42,420 --> 00:33:44,550 >> Și nu aveți nevoie pentru a copia l doar încă. 668 00:33:44,550 --> 00:33:49,470 Sunt de fapt de gând să deschidă chiar aici binary.c. 669 00:33:49,470 --> 00:33:52,880 Astfel încât nu există declarația funcției în mijlocul ecranului. 670 00:33:52,880 --> 00:33:57,570 Și veți vedea am luat pseudo-codul de pe laturile mele, dar aproape identic 671 00:33:57,570 --> 00:33:59,740 la ceea ce am scris, și pune că în pentru tine. 672 00:33:59,740 --> 00:34:06,010 Deci, acum, să ia cinci minute la codul această funcție. 673 00:34:06,010 --> 00:34:08,199 >> Și din nou, dacă aveți întrebări, ridice mâna, să-mi spuneți, voi 674 00:34:08,199 --> 00:34:08,710 vină în jurul valorii. 675 00:34:08,710 --> 00:34:09,800 >> STUDENT: [inaudibil]. 676 00:34:09,800 --> 00:34:12,380 >> JASON Hirschhorn: Deci, am luat binar definiție de căutare din partea 677 00:34:12,380 --> 00:34:14,429 Sus, pe linia 12. 678 00:34:14,429 --> 00:34:16,429 Asta e ceea ce am primit de diapozitiv mea. 679 00:34:16,429 --> 00:34:20,940 Și apoi toate aceste pseudo-cod am doar copiați și lipite de diapozitiv, 680 00:34:20,940 --> 00:34:22,190 pseudo-cod diapozitiv. 681 00:34:22,190 --> 00:35:22,830 682 00:35:22,830 --> 00:35:26,786 Încă nu aud [neauzit]. 683 00:35:26,786 --> 00:37:13,010 684 00:37:13,010 --> 00:37:15,820 >> Deci, dacă ați terminat dvs. punerea în aplicare, vreau să-l verifice. 685 00:37:15,820 --> 00:37:19,410 Te-am trimis dosarul helpers.h mai devreme în această clasă. 686 00:37:19,410 --> 00:37:22,360 Și acesta va fi disponibil on-line, precum și pentru a descărca de oameni uitam 687 00:37:22,360 --> 00:37:24,750 de data aceasta secțiune întârziat. 688 00:37:24,750 --> 00:37:29,350 Și am folosit doar de distribuție generic Codul de pset3. 689 00:37:29,350 --> 00:37:34,590 Așa că am luat find.C, folosiți fișierul meu helpers.h nu direct fișierul helpers.h 690 00:37:34,590 --> 00:37:36,280 care a dat în codul de distribuție. 691 00:37:36,280 --> 00:37:39,310 >> Și am avut de a face o altă schimbare în find.C, mai degrabă decât de asteptare pur și simplu 692 00:37:39,310 --> 00:37:42,770 căutare, apel binary_search. 693 00:37:42,770 --> 00:37:49,080 Deci, dacă doriți să testați codul dumneavoastră, știu că este cum se face. 694 00:37:49,080 --> 00:37:52,530 De fapt, atunci când vom fi difuzate acest cod chiar acum, am făcut o copie de 695 00:37:52,530 --> 00:37:59,820 directorul meu pset3, din nou, schimbate fișierele asistenți și apoi a făcut ca 696 00:37:59,820 --> 00:38:04,695 schimba în find.C pentru a apela binary_search mai degrabă decât pur și simplu de căutare. 697 00:38:04,695 --> 00:40:08,620 698 00:40:08,620 --> 00:40:09,120 >> JASON Hirschhorn: Da. 699 00:40:09,120 --> 00:40:11,258 Aveți o întrebare? 700 00:40:11,258 --> 00:40:12,150 >> STUDENT: Nevermind. 701 00:40:12,150 --> 00:40:12,600 >> JASON Hirschhorn: Nu vă faceți griji. 702 00:40:12,600 --> 00:40:13,370 Ei bine, hai să începem. 703 00:40:13,370 --> 00:40:15,090 Vom codifica aceasta ca un grup. 704 00:40:15,090 --> 00:40:16,050 O altă notă. 705 00:40:16,050 --> 00:40:20,600 Din nou, acest lucru este, poate fi ușor schimbate in pentru problema Set Trei. 706 00:40:20,600 --> 00:40:25,530 Am dosarul meu helpers.h care, mai degrabă decât helpers.h suntem dat, 707 00:40:25,530 --> 00:40:28,560 declară căutare binară, cu bule sortare, și selecție de sortare. 708 00:40:28,560 --> 00:40:37,400 Și în find.c veți observa pe linie, ceea ce este că, linia 68, numim binar 709 00:40:37,400 --> 00:40:39,160 căutare, mai degrabă decât de căutare. 710 00:40:39,160 --> 00:40:42,930 Deci, din nou, cod care este disponibil on-line sau codul care sunteți 711 00:40:42,930 --> 00:40:46,590 crearea de acum pot fi ușor schimbate in pentru p set 3 pentru a verifica. 712 00:40:46,590 --> 00:40:50,620 >> Dar, în primul rând, haideți să cod binar de căutare. 713 00:40:50,620 --> 00:40:53,690 Declarația noastră funcție, ne întoarcem un bool. 714 00:40:53,690 --> 00:40:55,810 Luăm un întreg numit valoare. 715 00:40:55,810 --> 00:40:59,285 Ne ia o serie de numere întregi numite valori, și vom lua n fi 716 00:40:59,285 --> 00:41:00,850 dimensiunea matricii. 717 00:41:00,850 --> 00:41:05,640 Pe linia 10, chiar aici, am ascuțite includ stdbool.h. 718 00:41:05,640 --> 00:41:07,360 Stie cineva de ce e acolo? 719 00:41:07,360 --> 00:41:12,180 720 00:41:12,180 --> 00:41:16,600 Deci, ce are ca linie de cod fac? 721 00:41:16,600 --> 00:41:19,880 >> STUDENT: Acesta vă permite să folosesc un tip de revenire bool. 722 00:41:19,880 --> 00:41:20,350 >> JASON Hirschhorn: Exact. 723 00:41:20,350 --> 00:41:22,300 >> STUDENT: Sau este o bibliotecă care permite de a utiliza un tip de revenire bool. 724 00:41:22,300 --> 00:41:27,590 >> JASON Hirschhorn: Deci includ Sharp linie stdbool.h dă-mi ceva 725 00:41:27,590 --> 00:41:31,340 definiții și declarații de lucruri că eu am voie să folosească în 726 00:41:31,340 --> 00:41:32,400 această bibliotecă. 727 00:41:32,400 --> 00:41:36,570 Astfel printre cei se spune că nu există acest tip numit bool, și poate fi 728 00:41:36,570 --> 00:41:37,750 adevărat sau fals. 729 00:41:37,750 --> 00:41:39,010 Deci, asta e ceea ce face acea linie. 730 00:41:39,010 --> 00:41:41,680 Și dacă nu am avea acea linie, mi-ar avea probleme de scris acest 731 00:41:41,680 --> 00:41:43,520 cuvânt aici, bool, chiar acolo. 732 00:41:43,520 --> 00:41:44,140 Exact dreapta. 733 00:41:44,140 --> 00:41:46,430 Așa că am nevoie ca în acest cod. 734 00:41:46,430 --> 00:41:47,690 OK. 735 00:41:47,690 --> 00:41:51,860 Deci, acest, din nou, este o iterativ versiune, nu unul recursiv. 736 00:41:51,860 --> 00:41:53,820 Așa că haideți să ne începem. 737 00:41:53,820 --> 00:41:56,200 >> Să începem cu prima linie de cod pseudo. 738 00:41:56,200 --> 00:41:58,770 Și sperăm că, vom - sau nu sperăm. 739 00:41:58,770 --> 00:42:00,530 Vom merge în jurul camerei. 740 00:42:00,530 --> 00:42:05,110 Vom merge linie cu linie, iar eu te voi ajuta îți dai seama de linia de care avem nevoie 741 00:42:05,110 --> 00:42:06,310 pentru a scrie primul. 742 00:42:06,310 --> 00:42:10,550 Deci, în timp ce lungimea de liste este mai mare decât zero. 743 00:42:10,550 --> 00:42:12,680 Să începem de la partea din față. 744 00:42:12,680 --> 00:42:15,190 Ce linie ar trebui să scriu aici, în cod? 745 00:42:15,190 --> 00:42:19,470 >> STUDENT: În timp ce paranteză n este mai mare decât 0. 746 00:42:19,470 --> 00:42:21,900 >> JASON Hirschhorn: în timp ce n este mare decât 0. 747 00:42:21,900 --> 00:42:26,550 Deci, n este dimensiunea unei liste, și vom verifica dacă - 748 00:42:26,550 --> 00:42:26,800 >> [VOCI interpune] 749 00:42:26,800 --> 00:42:27,660 >> JASON Hirschhorn: - îmi pare rău? 750 00:42:27,660 --> 00:42:29,360 >> STUDENT: Cum știm că n este dimensiunea listei? 751 00:42:29,360 --> 00:42:29,690 >> JASON Hirschhorn: Îmi pare rău. 752 00:42:29,690 --> 00:42:34,690 Pe caietul de sarcini PSET, căutarea și un fel funcționează aveți nevoie pentru a scrie, 753 00:42:34,690 --> 00:42:36,230 n este mărimea listei. 754 00:42:36,230 --> 00:42:37,710 Am uitat să explice că aici. 755 00:42:37,710 --> 00:42:41,310 Dar da. n este dimensiunea lista, în acest caz. 756 00:42:41,310 --> 00:42:44,740 Deci, în timp ce n este mai mare decât 0. 757 00:42:44,740 --> 00:42:45,580 OK. 758 00:42:45,580 --> 00:42:50,090 Care se poate dovedi un pic problematic deși, dacă lucrurile merg mai departe. 759 00:42:50,090 --> 00:42:54,510 Pentru că vom continua să cunoască Dimensiunea listei parcursul acestui 760 00:42:54,510 --> 00:43:06,640 funcție, dar spun că începe cu o serie de 5 numere întregi. 761 00:43:06,640 --> 00:43:08,950 Și ne-am trece prin și ne-am acum redus la 762 00:43:08,950 --> 00:43:10,310 o serie de 2 numere întregi. 763 00:43:10,310 --> 00:43:12,160 Care 2 numere întregi este asta? 764 00:43:12,160 --> 00:43:15,895 Dimensiunea este de 2 acum că vrem să uita-te la, dar care 2 este asta? 765 00:43:15,895 --> 00:43:17,720 Asta face sens, această întrebare? 766 00:43:17,720 --> 00:43:18,020 >> OK. 767 00:43:18,020 --> 00:43:19,120 O să-l întreb din nou. 768 00:43:19,120 --> 00:43:26,640 Așa că am începe cu această matrice de 5 numere întregi, iar n este egal cu 5, corect? 769 00:43:26,640 --> 00:43:28,050 Vom alerga pe aici. 770 00:43:28,050 --> 00:43:31,560 ne vom schimba, probabil, dimensiunea, drept, ca lucrurile merg mai departe. 771 00:43:31,560 --> 00:43:32,700 Care este ceea ce spunem ce vrem să facem. 772 00:43:32,700 --> 00:43:34,150 Noi nu doriți să căutați un lucru complet nou. 773 00:43:34,150 --> 00:43:35,480 Deci, spune-am schimba la 2. 774 00:43:35,480 --> 00:43:36,970 Ne ia jumatate din lista asta e ciudat. 775 00:43:36,970 --> 00:43:38,800 Deci, alege doar 2. 776 00:43:38,800 --> 00:43:40,590 Deci, acum, n este egal cu 2. 777 00:43:40,590 --> 00:43:42,780 Îmi cer scuze pentru cei săraci markere uscate. 778 00:43:42,780 --> 00:43:43,080 Corect? 779 00:43:43,080 --> 00:43:45,670 Și suntem în căutare prin lista de din nou, cu o listă de dimensiune 2. 780 00:43:45,670 --> 00:43:48,580 Ei bine, gama noastră este încă de dimensiune 5. 781 00:43:48,580 --> 00:43:51,920 Noi spunem vrem doar să căutare 2 locuri în ea. 782 00:43:51,920 --> 00:43:53,590 Deci, care sunt cele 2 spoturi? 783 00:43:53,590 --> 00:43:57,640 784 00:43:57,640 --> 00:43:58,815 >> Asta face sens? 785 00:43:58,815 --> 00:44:00,290 Sunt stânga 2 locuri? 786 00:44:00,290 --> 00:44:01,940 Sunt cele mai potrivite 2 locuri? 787 00:44:01,940 --> 00:44:03,540 Sunt cele de mijloc 2 locuri? 788 00:44:03,540 --> 00:44:06,350 Ne-am rupt în jos problema, dar ne-am de fapt, nu stiu care parte a 789 00:44:06,350 --> 00:44:11,600 problema suntem încă în căutarea la, doar de a avea aceste două variabile. 790 00:44:11,600 --> 00:44:16,450 Deci, avem nevoie de un pic mai mult, atunci, în timp ce n este mai mare decât 0. 791 00:44:16,450 --> 00:44:21,410 Trebuie să știm unde n este în gama noastră actuală. 792 00:44:21,410 --> 00:44:26,660 >> Deci, are cineva o schimba această linie? 793 00:44:26,660 --> 00:44:27,970 Cele mai multe din această linie este perfect corect. 794 00:44:27,970 --> 00:44:29,170 Este acolo un alt plus? 795 00:44:29,170 --> 00:44:32,510 Putem schimba ceva pentru n la face această linie un pic mai bine? 796 00:44:32,510 --> 00:44:32,865 Mm-hm? 797 00:44:32,865 --> 00:44:38,040 >> STUDENT: Poți să inițializa o variabilă cum ar fi lungimea de n care va fi folosit apoi 798 00:44:38,040 --> 00:44:39,600 mai târziu, în funcție? 799 00:44:39,600 --> 00:44:42,060 >> JASON Hirschhorn: Deci inițializa o lungime variabilă la n, 800 00:44:42,060 --> 00:44:42,900 și vom folosi mai târziu? 801 00:44:42,900 --> 00:44:47,070 Dar apoi ne-am actualizat doar lungime si ne-am încă rula în această problemă în cazul în care ne-am 802 00:44:47,070 --> 00:44:51,180 reduce durata de problema noastră, dar nu știm unde, de fapt, 803 00:44:51,180 --> 00:44:52,510 că lungimea hărți pe. 804 00:44:52,510 --> 00:44:54,790 >> STUDENT: Nu este asta o să se întâmple mai târziu, când spui, căutare stânga, 805 00:44:54,790 --> 00:44:55,746 search corect? 806 00:44:55,746 --> 00:44:57,640 Ai de gând să meargă la un alt domeniu de al tău - 807 00:44:57,640 --> 00:44:59,110 >> JASON Hirschhorn: Vom merge într-o zonă, dar cum știm 808 00:44:59,110 --> 00:45:01,150 care sunt pentru a merge la? 809 00:45:01,150 --> 00:45:03,800 Dacă avem doar matrice și acest n, cum nu știm de unde să 810 00:45:03,800 --> 00:45:05,050 du-te la matrice. 811 00:45:05,050 --> 00:45:05,900 În partea din spate, da? 812 00:45:05,900 --> 00:45:07,507 >> STUDENT: Ai, cum ar fi, o mai mică legat și o variabilă limită superioară sau 813 00:45:07,507 --> 00:45:08,586 ceva de genul asta? 814 00:45:08,586 --> 00:45:09,060 >> JASON Hirschhorn: OK. 815 00:45:09,060 --> 00:45:10,780 Deci, aceasta este o altă idee. 816 00:45:10,780 --> 00:45:13,490 , Mai degrabă decât păstrarea doar evidența dimensiune, am urmări de jos și 817 00:45:13,490 --> 00:45:14,770 variabilă limită superioară. 818 00:45:14,770 --> 00:45:17,840 Deci, cum putem calcula dimensiunea de o limită inferioară și limita superioară? 819 00:45:17,840 --> 00:45:18,520 >> [VOCI interpune] 820 00:45:18,520 --> 00:45:19,710 >> JASON Hirschhorn: Scădere. 821 00:45:19,710 --> 00:45:23,650 Și, de asemenea, urmărirea cea mai mică legat și limita superioară pentru a ne anunța, 822 00:45:23,650 --> 00:45:26,215 suntem în căutarea aceste două? 823 00:45:26,215 --> 00:45:28,220 Suntem în căutarea cei doi aici? 824 00:45:28,220 --> 00:45:29,540 Suntem în căutarea de mijloc doi? 825 00:45:29,540 --> 00:45:32,810 Probabil că nu de mijloc două, pentru că aceasta, de fapt, este binar de căutare. 826 00:45:32,810 --> 00:45:37,320 Dar acum vom fi capabili de a obține dimensiunea, dar și limitele matrice. 827 00:45:37,320 --> 00:45:40,020 În esență, dacă ne-am gigant nostru carte de telefon, îl rupe în două. 828 00:45:40,020 --> 00:45:42,990 Acum știm unde mai mici carte de telefon este. 829 00:45:42,990 --> 00:45:45,260 Dar noi nu suntem de fapt extragerea cartea de telefon în jumătate. 830 00:45:45,260 --> 00:45:48,570 Noi încă mai trebuie să știe unde noi limite de problema noastră este. 831 00:45:48,570 --> 00:45:51,645 Are cineva intrebari despre asta? 832 00:45:51,645 --> 00:45:52,440 Da? 833 00:45:52,440 --> 00:45:56,020 >> STUDENT: ar lucra prin crearea unui variabilă, i, pe care le apoi doar schimbare 834 00:45:56,020 --> 00:46:00,770 poziția relativă a acestuia i poziția curentă, și lungime, n? 835 00:46:00,770 --> 00:46:01,710 >> JASON Hirschhorn: Și ce este i? 836 00:46:01,710 --> 00:46:04,110 >> STUDENT: Cum am fi ca un fel de - 837 00:46:04,110 --> 00:46:08,040 Ca și cum ar inițializa i să fie poziție de mijloc de matrice. 838 00:46:08,040 --> 00:46:12,540 Și apoi, în cazul în care valoarea de la poziția i în mijlocul de matrice în constatat 839 00:46:12,540 --> 00:46:17,870 să fie mai mică decât valoarea de care aveți nevoie, i acum devine lungimea unui array, plus 840 00:46:17,870 --> 00:46:19,215 valoarea i împărțit la 2. 841 00:46:19,215 --> 00:46:20,270 Ca, vezi, tu schimba i - 842 00:46:20,270 --> 00:46:20,770 >> JASON Hirschhorn: Corect. 843 00:46:20,770 --> 00:46:21,165 >> STUDENT: - până la - 844 00:46:21,165 --> 00:46:24,010 >> JASON Hirschhorn: Deci, eu sunt aproape pozitiv care va lucra. 845 00:46:24,010 --> 00:46:26,800 Dar punct fiind, ai nevoie de două bucăți de informații aici. 846 00:46:26,800 --> 00:46:30,050 Poti sa o faci cu început și sfârșit, sau o poti face cu o dimensiune, și apoi 847 00:46:30,050 --> 00:46:31,060 unele marcator. 848 00:46:31,060 --> 00:46:32,630 Dar aveți nevoie de două bucăți de informații aici. 849 00:46:32,630 --> 00:46:34,160 Nu puteți obține de la doar unul. 850 00:46:34,160 --> 00:46:35,830 Asta are sens? 851 00:46:35,830 --> 00:46:39,560 >> Așa că am de gând să treacă prin, și vom face [inaudibil] 852 00:46:39,560 --> 00:46:41,330 și de a crea unele markeri. 853 00:46:41,330 --> 00:46:42,690 Deci, ce-ai scrie în codul dvs.? 854 00:46:42,690 --> 00:46:46,190 >> STUDENT: Am spus doar int legat unul este egal cu 0. 855 00:46:46,190 --> 00:46:47,790 >> JASON Hirschhorn: Să numim că Int, începând. 856 00:46:47,790 --> 00:46:49,140 >> STUDENT: OK. 857 00:46:49,140 --> 00:46:50,590 >> JASON Hirschhorn: Asta face mai mult sens pentru mine. 858 00:46:50,590 --> 00:46:51,670 Și? 859 00:46:51,670 --> 00:46:54,340 >> STUDENT: I-am spus, cred, int se încheie. 860 00:46:54,340 --> 00:46:55,870 >> JASON Hirschhorn: int se încheie. 861 00:46:55,870 --> 00:46:57,640 >> STUDENT: Cred că, n minus 1, sau ceva de genul asta. 862 00:46:57,640 --> 00:46:59,100 Cum ar fi, ultimul element. 863 00:46:59,100 --> 00:47:02,310 >> JASON Hirschhorn: Deci tu ai scris, int început este egal cu 0, punct și virgulă, și int 864 00:47:02,310 --> 00:47:04,320 final este egal cu n minus 1 punct și virgulă. 865 00:47:04,320 --> 00:47:06,850 Deci, în esență, ceea ce facem noi aici, 0 prima poziție. 866 00:47:06,850 --> 00:47:09,570 Și, după cum știm, în tablouri, ei nu merg până la n, ei merg până la n minus 1. 867 00:47:09,570 --> 00:47:11,110 Deci avem niște limite de matrice noastre. 868 00:47:11,110 --> 00:47:15,730 Și aceste limite initiale se întâmplă să fie limitele inițiale ale problemei noastre. 869 00:47:15,730 --> 00:47:16,640 OK. 870 00:47:16,640 --> 00:47:19,200 Așa că sună bine. 871 00:47:19,200 --> 00:47:22,380 Apoi, dacă ne întoarcem la această linie, în timp ce Lungimea de liste este mai mare decât 0, 872 00:47:22,380 --> 00:47:24,752 ce, în loc de n, ar trebui am pus aici? 873 00:47:24,752 --> 00:47:28,820 >> STUDENT: Scrie încheie minus început. 874 00:47:28,820 --> 00:47:34,780 >> JASON Hirschhorn: În timp ce se încheie minus începând este mai mare decât 0? 875 00:47:34,780 --> 00:47:35,480 OK. 876 00:47:35,480 --> 00:47:37,730 Și am putea, dacă am vrut să face că un pic mai frumos, ceea ce 877 00:47:37,730 --> 00:47:38,980 altceva am putea face? 878 00:47:38,980 --> 00:47:41,650 879 00:47:41,650 --> 00:47:43,412 Dacă ne-am dorit pentru a curăța acest cod un pic? 880 00:47:43,412 --> 00:47:46,716 881 00:47:46,716 --> 00:47:48,180 Cum putem scapa de 0? 882 00:47:48,180 --> 00:47:51,560 883 00:47:51,560 --> 00:47:52,690 Aceasta este doar o chestiune de stil. 884 00:47:52,690 --> 00:47:53,690 Este corect acum. 885 00:47:53,690 --> 00:47:54,870 >> STUDENT: Ending nu egal început? 886 00:47:54,870 --> 00:47:55,740 >> JASON Hirschhorn: Putem face ce? 887 00:47:55,740 --> 00:47:56,730 >> [VOCI interpune] 888 00:47:56,730 --> 00:47:57,330 >> STUDENT: Terminarea este mai mare? 889 00:47:57,330 --> 00:47:57,720 >> JASON Hirschhorn: Da. 890 00:47:57,720 --> 00:48:01,110 Putem face doar în timp ce se încheie este mai mare de început. 891 00:48:01,110 --> 00:48:03,580 Corect. 892 00:48:03,580 --> 00:48:06,240 Am adăugat început pe partea cealaltă de care, și am scăpat de 0. 893 00:48:06,240 --> 00:48:08,000 Deci, acest lucru doar arată o puțin curat bit. 894 00:48:08,000 --> 00:48:08,990 OK. 895 00:48:08,990 --> 00:48:11,460 Deci, în timp ce lungimea de listă este de 0, am scris că, în timp ce se încheie este mai mare 896 00:48:11,460 --> 00:48:12,240 decât începutul. 897 00:48:12,240 --> 00:48:19,840 Vom pune în necesar nostru acolade, iar apoi primul lucru 898 00:48:19,840 --> 00:48:22,090 vrem să facem este să privim la le într-o listă mică. 899 00:48:22,090 --> 00:48:22,510 Tu? 900 00:48:22,510 --> 00:48:23,320 Poți să-mi dai - 901 00:48:23,320 --> 00:48:26,460 >> STUDENT: Dacă paranteză paranteză valoare - 902 00:48:26,460 --> 00:48:30,450 >> JASON Hirschhorn: Dacă paranteze paranteză valoare. 903 00:48:30,450 --> 00:48:33,210 >> STUDENT: Terminarea împărțit la 2. 904 00:48:33,210 --> 00:48:33,952 >> JASON Hirschhorn: Terminarea? 905 00:48:33,952 --> 00:48:35,280 >> STUDENT: Eu văd o problemă cu al tău - 906 00:48:35,280 --> 00:48:35,750 >> JASON Hirschhorn: OK. 907 00:48:35,750 --> 00:48:39,150 Ei bine, uita-te la mijloc. 908 00:48:39,150 --> 00:48:41,226 Cum știm ce mijloc este? 909 00:48:41,226 --> 00:48:42,450 Da. 910 00:48:42,450 --> 00:48:43,070 Deci, lasă-mă să ștergeți acest cod. 911 00:48:43,070 --> 00:48:46,360 Cum știm ce mijloc este? 912 00:48:46,360 --> 00:48:48,003 În ceva, atunci când ai început și sfârșitul, cum a face tu găsi 913 00:48:48,003 --> 00:48:48,876 la mijloc? 914 00:48:48,876 --> 00:48:49,590 >> STUDENT: Ai medie. 915 00:48:49,590 --> 00:48:51,820 >> STUDENT: Tu le adăugați împreună și apoi - 916 00:48:51,820 --> 00:48:53,150 >> JASON Hirschhorn: Adăugați-le împreună și apoi? 917 00:48:53,150 --> 00:48:54,090 >> STUDENT: Și tu medie. 918 00:48:54,090 --> 00:48:55,050 Împărțiți-l de 2. 919 00:48:55,050 --> 00:48:56,500 >> JASON Hirschhorn: Adăugați-le împreună și se împarte la 2. 920 00:48:56,500 --> 00:48:59,400 Astfel de mijloc Int egal? 921 00:48:59,400 --> 00:49:01,120 Tom, puteți să-l dai la mine? 922 00:49:01,120 --> 00:49:03,550 >> STUDENT: Începând plus se încheie - 923 00:49:03,550 --> 00:49:04,950 >> JASON Hirschhorn: Începutul plus se încheie. 924 00:49:04,950 --> 00:49:06,880 >> STUDENT: Toate, suport, împărțit la 2. 925 00:49:06,880 --> 00:49:10,940 >> JASON Hirschhorn: Toate, în paranteze, împărțit la 2. 926 00:49:10,940 --> 00:49:16,300 Așa că îmi dă mijloc de nimic, corect? 927 00:49:16,300 --> 00:49:18,980 >> STUDENT: De asemenea, trebuie să-l adune. 928 00:49:18,980 --> 00:49:19,990 >> JASON Hirschhorn: Ce te Adică, am nevoie pentru a rotunji? 929 00:49:19,990 --> 00:49:20,400 >> [VOCI interpune] 930 00:49:20,400 --> 00:49:24,520 >> STUDENT: Pentru că dacă e un ciudat număr, atunci e ca si cum - 931 00:49:24,520 --> 00:49:25,440 >> JASON Hirschhorn: Ei bine, OK. 932 00:49:25,440 --> 00:49:26,360 Așa că am putea rotunji. 933 00:49:26,360 --> 00:49:33,350 Dar dacă e un număr impar, un 5, pot luând o distanță de mijloc. 934 00:49:33,350 --> 00:49:35,665 Sau dacă este un număr par, mai degrabă, că e un caz mai bine. 935 00:49:35,665 --> 00:49:39,600 Dacă e 4, avem doar 4, eu pot lua primul "mijloc", citat, citatul sau 936 00:49:39,600 --> 00:49:41,760 de-a doua "de mijloc" o. 937 00:49:41,760 --> 00:49:46,390 Fie ar lucra pentru o căutare binară, asa ca nu au nevoie de fapt să-l rotunjească. 938 00:49:46,390 --> 00:49:48,640 Dar există un alt lucru pe care îl trebuie să se uite la această linie. 939 00:49:48,640 --> 00:49:50,530 Nu am putea-l dau seama încă, dar vom reveni la ea. 940 00:49:50,530 --> 00:49:53,200 Deoarece această linie de fapt încă are nevoie de un alt lucru. 941 00:49:53,200 --> 00:49:55,990 >> Dar, până acum, am scris patru linii de cod. 942 00:49:55,990 --> 00:49:58,120 Avem începutul nostru și se termină markeri. 943 00:49:58,120 --> 00:50:01,320 Avem bucla nostru în timp ce, care hărți pe direct pseudocod nostru. 944 00:50:01,320 --> 00:50:05,790 Ne uitam la mijloc care harti direct pe pseudocod nostru. 945 00:50:05,790 --> 00:50:09,070 Aș spune că acest lucru duce la mijloc listei, această linie de cod. 946 00:50:09,070 --> 00:50:11,560 Și apoi, odată ce vom merge la mijlocul lista, urmatorul lucru ce trebuie să facem 947 00:50:11,560 --> 00:50:14,880 se verifică dacă valoarea noastră este acolo pentru pseudocod am scris mai devreme. 948 00:50:14,880 --> 00:50:17,100 >> Deci, cum putem verifica dacă valoarea noastră este la mijlocul listei? 949 00:50:17,100 --> 00:50:17,300 Te. 950 00:50:17,300 --> 00:50:18,511 De ce nu faci asta? 951 00:50:18,511 --> 00:50:23,070 >> STUDENT: În cazul în care valoarea noastră este la mijloc este egal cu 952 00:50:23,070 --> 00:50:24,592 indiferent de ne-am stabilit - 953 00:50:24,592 --> 00:50:26,190 Adică egal egal - 954 00:50:26,190 --> 00:50:26,690 >> JASON Hirschhorn: A - 955 00:50:26,690 --> 00:50:27,940 OK. 956 00:50:27,940 --> 00:50:30,080 957 00:50:30,080 --> 00:50:32,170 >> STUDENT: Eu nu sunt sigur ce variabilă căutăm 958 00:50:32,170 --> 00:50:32,850 pentru că, deși, este că - 959 00:50:32,850 --> 00:50:33,330 >> [VOCI interpune] 960 00:50:33,330 --> 00:50:34,520 >> STUDENT: [inaudibil]. 961 00:50:34,520 --> 00:50:35,060 >> JASON Hirschhorn: Exact. 962 00:50:35,060 --> 00:50:37,260 Pe declarația funcției, suntem în căutarea pentru o valoare. 963 00:50:37,260 --> 00:50:39,760 Deci, suntem în căutarea pentru o valoare într-o matrice de valori. 964 00:50:39,760 --> 00:50:41,080 Deci, tu ești exact dreptate. 965 00:50:41,080 --> 00:50:45,040 Vă va face, în cazul în care suportul valoare paren deschis mediu închis egal suport 966 00:50:45,040 --> 00:50:49,930 este egal cu valoare, și în interior Ce trebuie să facem? 967 00:50:49,930 --> 00:50:51,230 În cazul în care valoarea noastră de acolo, ceea ce Nu trebuie să facem? 968 00:50:51,230 --> 00:50:51,420 >> [VOCI interpune] 969 00:50:51,420 --> 00:50:52,160 >> STUDENT: Reveniți la zero. 970 00:50:52,160 --> 00:50:53,070 >> JASON Hirschhorn: Înapoi adevărat. 971 00:50:53,070 --> 00:50:54,790 >> STUDENT: Înapoi adevărat. 972 00:50:54,790 --> 00:50:57,856 >> JASON Hirschhorn: Michael, ceea ce face această linie fac? 973 00:50:57,856 --> 00:51:01,105 >> STUDENT: [inaudibil] programul a rula Desigur sale, și că este de peste, și 974 00:51:01,105 --> 00:51:01,920 ai ceea ce trebuie să faci? 975 00:51:01,920 --> 00:51:03,030 >> JASON Hirschhorn: Programul sau ce? 976 00:51:03,030 --> 00:51:03,700 În acest caz? 977 00:51:03,700 --> 00:51:04,210 >> STUDENT: Funcția. 978 00:51:04,210 --> 00:51:05,170 >> JASON Hirschhorn: Funcția. 979 00:51:05,170 --> 00:51:08,420 Și astfel, să se întoarcă la ceea ce numește l si da-l la valoarea, adevărat. 980 00:51:08,420 --> 00:51:09,890 Exact dreapta. 981 00:51:09,890 --> 00:51:10,170 Principal. 982 00:51:10,170 --> 00:51:12,035 Care este tipul de retur de principal, Michael? 983 00:51:12,035 --> 00:51:16,480 984 00:51:16,480 --> 00:51:17,150 >> STUDENT: Int, întreg? 985 00:51:17,150 --> 00:51:18,080 >> JASON Hirschhorn: int, exact. 986 00:51:18,080 --> 00:51:18,680 Un întreg. 987 00:51:18,680 --> 00:51:20,980 Asta a fost doar o chestiune de a se asigura voi au fost pe partea de sus a acesteia. 988 00:51:20,980 --> 00:51:24,250 Ce nu-l întoarce, de obicei, în cazul în care toate lucrurile sunt de lucru bine? 989 00:51:24,250 --> 00:51:24,520 >> STUDENT: Zero. 990 00:51:24,520 --> 00:51:24,820 >> JASON Hirschhorn: Zero. 991 00:51:24,820 --> 00:51:25,430 Exact dreapta. 992 00:51:25,430 --> 00:51:28,790 >> STUDENT: În cazul în care acest lucru revine doar adevărat, nu există nici o informație fiind dat 993 00:51:28,790 --> 00:51:30,675 despre ceea ce - 994 00:51:30,675 --> 00:51:34,040 Oh, acest lucru este pur și simplu spune că Valoarea este în interiorul matricei. 995 00:51:34,040 --> 00:51:35,350 >> JASON Hirschhorn: Exact. 996 00:51:35,350 --> 00:51:38,080 Acest program nu este furnizarea de informații de unde valoarea este. 997 00:51:38,080 --> 00:51:41,850 Este doar spune, da, am găsit ea, sau nu, nu l-am găsit. 998 00:51:41,850 --> 00:51:42,990 Deci, dacă numărul găsit, return true. 999 00:51:42,990 --> 00:51:45,500 Ei bine, de fapt, ne-am făcut-o într-adevăr rapid cu o linie de cod. 1000 00:51:45,500 --> 00:51:47,500 Deci, voi muta acea linie de pseudocod. 1001 00:51:47,500 --> 00:51:50,045 >> STUDENT: Nu avem nevoie de pentru a schimba matrice? 1002 00:51:50,045 --> 00:51:52,830 Ar trebui să fie valori, nu de valoare, nu? 1003 00:51:52,830 --> 00:51:53,430 >> JASON Hirschhorn: Îmi pare rău. 1004 00:51:53,430 --> 00:51:54,010 Mulțumesc. 1005 00:51:54,010 --> 00:51:54,800 >> STUDENT: Da. 1006 00:51:54,800 --> 00:51:55,850 >> JASON Hirschhorn: Această linie ar fi valori. 1007 00:51:55,850 --> 00:51:57,150 Exact dreapta. 1008 00:51:57,150 --> 00:51:57,920 OK. 1009 00:51:57,920 --> 00:51:59,170 Deci, ne-am uitat la lista de mijloc. 1010 00:51:59,170 --> 00:52:00,790 Dacă numărul găsit return true. 1011 00:52:00,790 --> 00:52:04,470 Continuând cu pseudocod noastră, în cazul în care de mijloc este mai mare, de căutare a plecat. 1012 00:52:04,470 --> 00:52:09,640 Deci, am avut aici, în cazul în care numărul de mai mare, de căutare a plecat. 1013 00:52:09,640 --> 00:52:12,700 1014 00:52:12,700 --> 00:52:14,462 Constantin, pot da mi această linie de cod? 1015 00:52:14,462 --> 00:52:17,240 1016 00:52:17,240 --> 00:52:23,520 >> STUDENT: În cazul în care valoarea de mijloc - 1017 00:52:23,520 --> 00:52:24,890 >> JASON Hirschhorn: Deci, dacă valoarea - 1018 00:52:24,890 --> 00:52:28,890 dacă paren deschis valori suport suport aproape de mijloc - 1019 00:52:28,890 --> 00:52:31,500 >> STUDENT: Este mai mic decât valoarea? 1020 00:52:31,500 --> 00:52:32,760 >> JASON Hirschhorn: Este mai puțin. 1021 00:52:32,760 --> 00:52:33,800 >> STUDENT: Mai puțin de valoare. 1022 00:52:33,800 --> 00:52:34,060 >> JASON Hirschhorn: Valoare. 1023 00:52:34,060 --> 00:52:35,310 Ei bine, de fapt, pe care doriți să verificați dacă numărul - 1024 00:52:35,310 --> 00:52:38,310 1025 00:52:38,310 --> 00:52:38,490 Scuze. 1026 00:52:38,490 --> 00:52:39,140 Acesta este un pic confuz. 1027 00:52:39,140 --> 00:52:43,920 Dar altfel dacă numărul în mijloc de listă este mai mare. 1028 00:52:43,920 --> 00:52:45,170 >> STUDENT: Oh, OK. 1029 00:52:45,170 --> 00:52:49,800 1030 00:52:49,800 --> 00:52:50,410 >> JASON Hirschhorn: Voi schimba asta. 1031 00:52:50,410 --> 00:52:55,060 Altfel, dacă mijloc este mai mare, ne-am doriți să căutați stânga, OK? 1032 00:52:55,060 --> 00:52:57,310 Și ce facem în interiorul dacă această condiție? 1033 00:52:57,310 --> 00:53:03,660 1034 00:53:03,660 --> 00:53:07,510 >> STUDENT: Pot face o mică schimbare a condiție, schimba-l la altcineva dacă? 1035 00:53:07,510 --> 00:53:08,380 >> JASON Hirschhorn: Altele dacă? 1036 00:53:08,380 --> 00:53:09,270 OK. 1037 00:53:09,270 --> 00:53:12,840 Deci, acest cod va executa aproximativ la fel. 1038 00:53:12,840 --> 00:53:18,620 Dar un lucru frumos despre utilizarea în cazul în care, altfel în cazul în care, altfel, dacă sau în cazul în care, altfel, dacă, altfel 1039 00:53:18,620 --> 00:53:22,320 înseamnă că doar unul dintre cei care va trebuie verificat, nu toate trei, 1040 00:53:22,320 --> 00:53:23,290 potențial. 1041 00:53:23,290 --> 00:53:25,530 Și că o face un pic mai frumos pe computer care este 1042 00:53:25,530 --> 00:53:26,670 care rulează programul. 1043 00:53:26,670 --> 00:53:27,620 >> Deci [? Constantin,?] 1044 00:53:27,620 --> 00:53:31,330 noi suntem în interiorul această linie, altfel dacă valorile, Suport de mijloc suport aproape 1045 00:53:31,330 --> 00:53:32,260 este mai mare decât valoarea. 1046 00:53:32,260 --> 00:53:33,150 Ce trebuie să facem? 1047 00:53:33,150 --> 00:53:33,970 Avem nevoie pentru a căuta în stânga. 1048 00:53:33,970 --> 00:53:35,220 Cum facem asta? 1049 00:53:35,220 --> 00:53:46,960 1050 00:53:46,960 --> 00:53:48,720 Am de gând să vă dau un început. 1051 00:53:48,720 --> 00:53:52,210 >> Avem aceste două lucruri numite începe și se termină. 1052 00:53:52,210 --> 00:53:57,340 Deci, ce trebuie să se întâmple la început? 1053 00:53:57,340 --> 00:53:59,640 Dacă doriți să căutați în stânga lista, vom ajunge începutul noastră actuală. 1054 00:53:59,640 --> 00:54:01,080 Ce avem nevoie pentru a face acest lucru? 1055 00:54:01,080 --> 00:54:04,220 >> STUDENT: Am stabilit la început la mijloc plus 1. 1056 00:54:04,220 --> 00:54:05,120 >> JASON Hirschhorn: Deci, dacă suntem căutarea stânga? 1057 00:54:05,120 --> 00:54:06,250 >> STUDENT: Ne pare rău, minus de mijloc - 1058 00:54:06,250 --> 00:54:11,310 astfel se încheie ar fi de mijloc minus 1 și început - 1059 00:54:11,310 --> 00:54:12,450 >> JASON Hirschhorn: Și ce se întâmplă de la început? 1060 00:54:12,450 --> 00:54:13,210 >> STUDENT: Acesta rămâne aceeași. 1061 00:54:13,210 --> 00:54:14,120 >> JASON Hirschhorn: Deci, semnificație rămâne aceeași. 1062 00:54:14,120 --> 00:54:16,040 Dacă suntem în căutarea stânga, suntem utilizând același început - 1063 00:54:16,040 --> 00:54:16,860 exact dreapta. 1064 00:54:16,860 --> 00:54:17,870 Și se termină? 1065 00:54:17,870 --> 00:54:19,390 Ne pare rău, ceea ce face se încheie egal din nou? 1066 00:54:19,390 --> 00:54:20,750 >> STUDENT: minus Middle 1. 1067 00:54:20,750 --> 00:54:21,620 >> JASON Hirschhorn: minus Middle 1. 1068 00:54:21,620 --> 00:54:23,470 Acum, de ce minus 1, nu doar de mijloc? 1069 00:54:23,470 --> 00:54:32,870 1070 00:54:32,870 --> 00:54:35,570 >> STUDENT: mijloc este în afara imagine deja, pentru că am avut 1071 00:54:35,570 --> 00:54:36,700 verificat că e afară? 1072 00:54:36,700 --> 00:54:37,630 >> JASON Hirschhorn: Asta-i exact dreapta. 1073 00:54:37,630 --> 00:54:38,580 Mijlocul este din imagine. 1074 00:54:38,580 --> 00:54:39,800 Am verificat deja la mijloc. 1075 00:54:39,800 --> 00:54:44,730 Deci, noi nu vrem "la mijloc", citat citatul, să continue să fie în 1076 00:54:44,730 --> 00:54:46,110 matrice care le căutați. 1077 00:54:46,110 --> 00:54:47,670 Deci, acest lucru este fantastic. 1078 00:54:47,670 --> 00:54:50,670 >> Altfel, dacă valorile de suport de mijloc este mai mare decât valoarea care se încheie la egal la egal 1079 00:54:50,670 --> 00:54:51,920 minus mijloc 1. 1080 00:54:51,920 --> 00:54:55,060 1081 00:54:55,060 --> 00:54:57,340 Jeff, ce zici de asta ultimul rând? 1082 00:54:57,340 --> 00:54:58,590 >> STUDENT: Else. 1083 00:54:58,590 --> 00:55:02,486 1084 00:55:02,486 --> 00:55:06,000 Valorile de mijloc este mai mică decât valoarea? 1085 00:55:06,000 --> 00:55:07,570 >> JASON Hirschhorn: Vom tu-mi dai altceva. 1086 00:55:07,570 --> 00:55:09,310 Deci, dacă nu-mi dai - 1087 00:55:09,310 --> 00:55:12,270 >> STUDENT: Deci, apoi începe ar fi plus de mijloc 1. 1088 00:55:12,270 --> 00:55:16,100 1089 00:55:16,100 --> 00:55:19,070 >> JASON Hirschhorn: egali Început plus mijlociu 1, din nou, pentru același 1090 00:55:19,070 --> 00:55:20,820 motiv pentru care Constantin ne-a dat mai devreme. 1091 00:55:20,820 --> 00:55:24,280 Și la sfârșitul anului, care nu a dat mi-o linie de cod încă? 1092 00:55:24,280 --> 00:55:26,600 Return false, Aleha, ceea ce nu vom scrie aici? 1093 00:55:26,600 --> 00:55:28,590 >> STUDENT: Înapoi false. 1094 00:55:28,590 --> 00:55:29,320 >> JASON Hirschhorn: Înapoi false. 1095 00:55:29,320 --> 00:55:33,340 Și trebuie să facem asta, pentru că dacă noi nu-l găsesc, trebuie să spunem 1096 00:55:33,340 --> 00:55:34,080 nu l-am găsit. 1097 00:55:34,080 --> 00:55:36,270 Iar noi am spus că vom reveni un bool, așa că am avea cu siguranta pentru a reveni 1098 00:55:36,270 --> 00:55:38,150 o undeva bool. 1099 00:55:38,150 --> 00:55:42,590 >> Deci, haideți să ruleze acest cod. 1100 00:55:42,590 --> 00:55:44,520 Sunt de fapt de gând să - 1101 00:55:44,520 --> 00:55:45,930 deci suntem în terminal. 1102 00:55:45,930 --> 00:55:47,230 Vom șterge fereastra noastră. 1103 00:55:47,230 --> 00:55:49,270 Să-mi fac totul. 1104 00:55:49,270 --> 00:55:50,340 Am găsit acolo este o eroare. 1105 00:55:50,340 --> 00:55:54,280 Există o eroare pe linia 15, așteptat virgulă la sfârșitul 1106 00:55:54,280 --> 00:55:54,890 declarație. 1107 00:55:54,890 --> 00:55:56,454 Deci, ceea ce am uitat? 1108 00:55:56,454 --> 00:55:57,230 >> STUDENT: Punct și virgulă. 1109 00:55:57,230 --> 00:56:00,200 >> JASON Hirschhorn: Punct și virgulă chiar aici. 1110 00:56:00,200 --> 00:56:00,950 Cred că a fost cod lui Tom. 1111 00:56:00,950 --> 00:56:01,870 Deci, Tom, [neauzit]. 1112 00:56:01,870 --> 00:56:03,120 Glumeam. 1113 00:56:03,120 --> 00:56:05,010 1114 00:56:05,010 --> 00:56:07,310 Să nu-mi fac totul din nou. 1115 00:56:07,310 --> 00:56:10,180 >> STUDENT: directorul Ce Dropbox ar trebui să fim în acest? 1116 00:56:10,180 --> 00:56:11,345 >> JASON Hirschhorn: Deci, aveți posibilitatea să ceas doar pentru acest bit. 1117 00:56:11,345 --> 00:56:16,380 Dar, din nou, în cazul în care ai vrut să se mute acest cod în directorul dvs. pset3 pentru a încerca 1118 00:56:16,380 --> 00:56:17,050 l, asta e ceea ce am făcut. 1119 00:56:17,050 --> 00:56:18,600 Dacă veți observa aici - îmi pare rău, bine întrebare. 1120 00:56:18,600 --> 00:56:19,460 >> [? LS,?] 1121 00:56:19,460 --> 00:56:24,700 Am aici codul find.c din Codul de distribuție din această săptămână. 1122 00:56:24,700 --> 00:56:26,300 Am helpers.h. 1123 00:56:26,300 --> 00:56:30,010 Am un fișier Marca pe care am de fapt, editat un pic pentru a include aceste noi 1124 00:56:30,010 --> 00:56:30,710 fișierele suntem scris. 1125 00:56:30,710 --> 00:56:34,120 Tot din acest cod va fi disponibil, nu Codul de distribuție, dar noua 1126 00:56:34,120 --> 00:56:39,510 Face dosar, noul fișier va helpers.h fi disponibil on-line pentru descărcare. 1127 00:56:39,510 --> 00:56:41,800 Din nou, astfel încât cei care sunt Codurile suplimentare avem. 1128 00:56:41,800 --> 00:56:46,130 >> Deci, asigurați-toate, pe această linie, face găsi, binar, selecție bule - mărci 1129 00:56:46,130 --> 00:56:50,930 toate trei dintre ele și compilează în acest cod găsi executabil. 1130 00:56:50,930 --> 00:56:54,090 Deci, în general, nu vrem la drept la check50. 1131 00:56:54,090 --> 00:56:57,580 Vrem să facem niște teste pe cont propriu. 1132 00:56:57,580 --> 00:57:11,750 Dar doar astfel încât să putem accelera acest lucru un pic, check50 2013 pset3.find va trece 1133 00:57:11,750 --> 00:57:14,630 in-helpers.c - rea mea. 1134 00:57:14,630 --> 00:57:16,050 >> Nu am acest drept acum. 1135 00:57:16,050 --> 00:57:20,670 Așa că de fapt de gând să rula cod de reală. 1136 00:57:20,670 --> 00:57:23,570 Usage.find /, tu știi ce înseamnă asta? 1137 00:57:23,570 --> 00:57:25,970 >> STUDENT: Ai nevoie de un al doilea linie de comandă pe ea. 1138 00:57:25,970 --> 00:57:26,980 >> JASON Hirschhorn: Am nevoie de o linie de comandă al doilea. 1139 00:57:26,980 --> 00:57:30,640 Și pe caietul de sarcini, am nevoie pentru a intra în ceea ce căutăm. 1140 00:57:30,640 --> 00:57:33,750 Așa că haideți să ne uităm la 42. 1141 00:57:33,750 --> 00:57:37,030 O să-l păstrați în sortat, pentru că noi nu s-au scris o funcție de sortare încă - 1142 00:57:37,030 --> 00:57:41,830 42, 43, 44. 1143 00:57:41,830 --> 00:57:46,240 >> Și de control D nu a găsit acul în carul cu fân. 1144 00:57:46,240 --> 00:57:46,505 Asta-i rău. 1145 00:57:46,505 --> 00:57:47,200 Este cu siguranta acolo. 1146 00:57:47,200 --> 00:57:48,090 Să încercăm altceva. 1147 00:57:48,090 --> 00:57:49,860 Poate pentru că am pus ea la început. 1148 00:57:49,860 --> 00:57:54,490 >> Să facem 41, 42, 43. 1149 00:57:54,490 --> 00:57:55,012 Acolo mergem. 1150 00:57:55,012 --> 00:57:56,400 L-am găsit. 1151 00:57:56,400 --> 00:58:00,040 Să-l punem la finele acum, doar astfel încât să putem fi aprofundată - 1152 00:58:00,040 --> 00:58:03,580 40, 41, 42. 1153 00:58:03,580 --> 00:58:05,760 Nu a găsit acul. 1154 00:58:05,760 --> 00:58:07,550 Așa că am menționat asta mai devreme. 1155 00:58:07,550 --> 00:58:08,980 Din păcate, am știut acest lucru a fost de gând să se întâmple. 1156 00:58:08,980 --> 00:58:11,490 >> Dar pentru scopuri pedagogice, e bine să-l exploreze. 1157 00:58:11,490 --> 00:58:12,990 Ea nu funcționează. 1158 00:58:12,990 --> 00:58:16,020 Pentru unii motiv, nu se poate găsi. 1159 00:58:16,020 --> 00:58:18,970 Noi știm ce e acolo, dar noi nu sunt o constatare. 1160 00:58:18,970 --> 00:58:24,140 Deci, un lucru pe care îl putea face este să mergeți prin GDB să-l găsească, dar nu oricine, 1161 00:58:24,140 --> 00:58:27,850 fără a trece prin GDB, au o sentiment de unde ne-am dat-o? 1162 00:58:27,850 --> 00:58:28,480 [? Madu? ?] 1163 00:58:28,480 --> 00:58:30,960 >> STUDENT: Cred că aceasta ar putea fi atunci când se încheie este egal cu începutul, și este 1164 00:58:30,960 --> 00:58:33,090 doar o listă-un singur element. 1165 00:58:33,090 --> 00:58:35,560 Atunci se ignoră în schimb de fapt verificare. 1166 00:58:35,560 --> 00:58:36,940 >> JASON Hirschhorn: Asta-i exact dreapta. 1167 00:58:36,940 --> 00:58:41,110 Când se încheie egal început, nu-i așa încă un element în lista noastră? 1168 00:58:41,110 --> 00:58:42,480 >> STUDENT: Da. 1169 00:58:42,480 --> 00:58:45,450 >> JASON Hirschhorn: Da, de fapt, ne-am au unul și numai un singur element. 1170 00:58:45,450 --> 00:58:50,500 Și că se va întâmpla, cel mai probabil, atunci când, pe codul de testat de noi, suntem la 1171 00:58:50,500 --> 00:58:54,640 față de carul cu fân sau la sfârșitul carul. 1172 00:58:54,640 --> 00:58:56,000 Asta în cazul început și final este de gând să egal 1173 00:58:56,000 --> 00:58:57,820 unul, cu binar de căutare. 1174 00:58:57,820 --> 00:59:01,440 Deci, în aceste două cazuri nu au de lucru, pentru că se încheie a fost egal cu începutul. 1175 00:59:01,440 --> 00:59:06,030 >> Dar în cazul în care se încheie este egal cu începutul, se executa această buclă în timp ce? 1176 00:59:06,030 --> 00:59:06,390 Nu are. 1177 00:59:06,390 --> 00:59:08,660 Și am putea fi verificat care din nou prin GDB. 1178 00:59:08,660 --> 00:59:14,000 Deci, cum putem rezolva acest cod, deoarece atunci când în timp ce se încheie este egală cu 1179 00:59:14,000 --> 00:59:16,070 început, ne-am dori, de asemenea, acest în timp ce bucla pentru a rula. 1180 00:59:16,070 --> 00:59:18,620 >> Deci, ce putem face fix la linia de 18? 1181 00:59:18,620 --> 00:59:21,060 >> STUDENT: [inaudibil] este mai mare mare sau egal cu. 1182 00:59:21,060 --> 00:59:21,700 >> JASON Hirschhorn: Exact dreapta. 1183 00:59:21,700 --> 00:59:24,600 În timp ce se încheie este mai mare decât sau egal cu începutul. 1184 00:59:24,600 --> 00:59:27,300 Deci, acum, ne asigurați-vă că pentru a obține caz colț la sfârșitul anului. 1185 00:59:27,300 --> 00:59:27,870 Și să vedem. 1186 00:59:27,870 --> 00:59:29,560 Să facem asta de mai mult timp. 1187 00:59:29,560 --> 00:59:31,266 >> Să facem tot. 1188 00:59:31,266 --> 00:59:33,910 Din nou, va trebui să doar urmați de-a lungul aici. 1189 00:59:33,910 --> 00:59:36,280 Găsi 41 de această dată. 1190 00:59:36,280 --> 00:59:37,360 Doar păstrați-l consistent. 1191 00:59:37,360 --> 00:59:38,210 >> Găsi 42. 1192 00:59:38,210 --> 00:59:38,930 Să-l punem la început - 1193 00:59:38,930 --> 00:59:41,630 42, 43, 44. 1194 00:59:41,630 --> 00:59:42,860 Am găsit-o. 1195 00:59:42,860 --> 00:59:47,710 Astfel că a fost într-adevăr schimbarea avem nevoie pentru a face. 1196 00:59:47,710 --> 00:59:51,090 >> Asta a fost o mulțime de codificare noi Tocmai am făcut, căutare binară. 1197 00:59:51,090 --> 00:59:55,760 Are cineva întrebări înainte de a Eu merg mai departe în linii le-am scris în 1198 00:59:55,760 --> 00:59:58,750 binar de căutare sau modul în care ne-am gândit ce ne-am dat seama? 1199 00:59:58,750 --> 01:00:01,900 1200 01:00:01,900 --> 01:00:06,270 Înainte de a trece mai departe, aș dori să subliniez că, în general, ne mapate 1201 01:00:06,270 --> 01:00:09,300 nostru de pseudo-cod unul pentru unul pe codul nostru. 1202 01:00:09,300 --> 01:00:11,550 >> Noi am avut acel lucru complicat să dau seama cu 1203 01:00:11,550 --> 01:00:12,890 începe și se termină. 1204 01:00:12,890 --> 01:00:17,380 Dar nu te-a dat seama de asta, tu ar fi scris destul de mult 1205 01:00:17,380 --> 01:00:20,740 cod identic, cu excepția aceste primele două linii. 1206 01:00:20,740 --> 01:00:23,380 Și apoi s-ar fi dat seama atunci când ai ajuns la verificări și cazuri în care 1207 01:00:23,380 --> 01:00:24,840 aveți nevoie de altceva. 1208 01:00:24,840 --> 01:00:28,510 Deci, chiar dacă ar fi urmat nostru pseudo-cod linie la linie, te-ar fi 1209 01:00:28,510 --> 01:00:31,130 primit toate, dar două linii de cod ai nevoie pentru a scrie. 1210 01:00:31,130 --> 01:00:33,900 >> Și aș fi dispus să pariez că voi ar fi dat seama că tot afară 1211 01:00:33,900 --> 01:00:37,940 destul de repede, că ai nevoie pentru a pune un fel de marcaj acolo să dau 1212 01:00:37,940 --> 01:00:39,190 unde ai fost. 1213 01:00:39,190 --> 01:00:41,540 1214 01:00:41,540 --> 01:00:44,550 Că din nou, este puterea de a face pseudo-cod înainte de timp. 1215 01:00:44,550 --> 01:00:47,310 Deci, putem face logica primul rând, și apoi putem să vă faceți griji cu privire la sintaxa. 1216 01:00:47,310 --> 01:00:51,470 >> Dacă am fost confuz despre logica în timp ce încearcă să scrie acest cod în C, 1217 01:00:51,470 --> 01:00:53,110 ne-ar fi ajuns tot incurcat. 1218 01:00:53,110 --> 01:00:56,340 Și atunci am fi întrebări despre logică și sintaxă și discretizare 1219 01:00:56,340 --> 01:00:57,320 le pe toate împreună. 1220 01:00:57,320 --> 01:01:02,170 Și ne-ar fi ajuns pierdut în ceea ce poate deveni rapid un 1221 01:01:02,170 --> 01:01:04,000 problemă foarte dificilă. 1222 01:01:04,000 --> 01:01:08,680 Deci, haideți să mergem mai departe acum la selecția fel. 1223 01:01:08,680 --> 01:01:10,760 >> Avem 20 de minute. 1224 01:01:10,760 --> 01:01:14,130 Deci, am un sentiment nu vom fi capabili să trece prin toate de selecție fel 1225 01:01:14,130 --> 01:01:15,940 și bule de sortare. 1226 01:01:15,940 --> 01:01:20,670 Dar permiteți-ne, cel puțin încercare pentru a termina selecție fel. 1227 01:01:20,670 --> 01:01:23,540 Astfel încât punerea în aplicare a selecție de sortare cu ajutorul în urma declarației funcție. 1228 01:01:23,540 --> 01:01:27,530 >> Din nou, acest lucru este luat din problema stabilit caietul de sarcini. 1229 01:01:27,530 --> 01:01:31,560 Valorile Int este paranteze, este o serie de numere întregi. 1230 01:01:31,560 --> 01:01:33,490 Și int.n este dimensiunea de matrice. 1231 01:01:33,490 --> 01:01:36,840 Un fel de selecție se va pentru a sorta această matrice. 1232 01:01:36,840 --> 01:01:43,580 >> Deci, pe modelul nostru mental de selecție fel, am trageți - 1233 01:01:43,580 --> 01:01:47,720 în primul rând, vom merge prin lista de primul timp, afla numărul cel mai mic, 1234 01:01:47,720 --> 01:01:52,860 a pus-o la început, găsi de-al doilea cel mai mic număr, pune-l în 1235 01:01:52,860 --> 01:01:56,380 a doua poziție în cazul în care dorim să sortare în ordine crescătoare. 1236 01:01:56,380 --> 01:01:58,440 Eu nu te forțează să scrie pseudo-cod chiar acum. 1237 01:01:58,440 --> 01:02:01,350 >> Dar inainte de a face codul ca o clasă în cinci minute, am de gând să scrie 1238 01:02:01,350 --> 01:02:03,550 pseudo-cod așa că avem un anumit sens de unde mergem. 1239 01:02:03,550 --> 01:02:05,630 Deci, încercați să scrie pseudo-cod pe cont propriu. 1240 01:02:05,630 --> 01:02:08,610 Și apoi încercați să rândul său, că pseudo-cod în cod. 1241 01:02:08,610 --> 01:02:10,740 Vom face acest lucru ca un grup în cinci minute. 1242 01:02:10,740 --> 01:02:32,560 1243 01:02:32,560 --> 01:02:33,895 >> Și, bineînțeles, să-mi spuneți dacă aveți întrebări. 1244 01:02:33,895 --> 01:03:56,738 1245 01:03:56,738 --> 01:03:58,230 >> STUDENT: Asta este? 1246 01:03:58,230 --> 01:04:00,280 >> JASON Hirschhorn: a se vedea cât de departe poate obține în mai multe de două minute. 1247 01:04:00,280 --> 01:04:01,790 Am înțeles că nu va putea termina. 1248 01:04:01,790 --> 01:04:03,050 Dar vom trece peste acest lucru ca pe un grup. 1249 01:04:03,050 --> 01:04:57,830 1250 01:04:57,830 --> 01:05:00,630 >> Ești tot atât de codificare [inaudibil], așa că eu sunt îmi pare rău pentru a opri ceea ce faci. 1251 01:05:00,630 --> 01:05:02,530 Dar să mergem prin acest lucru ca pe un grup. 1252 01:05:02,530 --> 01:05:07,590 Și din nou, binar de căutare, vă dau toate mi-o dacă nu mai multe linii de cod. 1253 01:05:07,590 --> 01:05:08,530 Vă mulțumesc pentru asta. 1254 01:05:08,530 --> 01:05:11,730 Vom face același lucru aici, cod împreună ca un grup. 1255 01:05:11,730 --> 01:05:15,170 >> Astfel selecție fel - să scrie unele rapid pseudo-cod. 1256 01:05:15,170 --> 01:05:20,380 Pe model mental, poate cineva să-mi dea prima linie de pseudo-cod, vă rog? 1257 01:05:20,380 --> 01:05:23,000 1258 01:05:23,000 --> 01:05:24,270 Ce vreau să fac? 1259 01:05:24,270 --> 01:05:27,070 >> STUDENT: În timp ce lista este în afara de ordine. 1260 01:05:27,070 --> 01:05:30,630 >> JASON Hirschhorn: OK, în timp ce lista este în ordine. 1261 01:05:30,630 --> 01:05:33,540 Și ce vrei să spui "de ordine?" 1262 01:05:33,540 --> 01:05:34,960 >> STUDENT: În timp ce [inaudibil] 1263 01:05:34,960 --> 01:05:36,210 nu au fost sortate. 1264 01:05:36,210 --> 01:05:38,460 1265 01:05:38,460 --> 01:05:40,290 >> JASON Hirschhorn: În timp ce lista este în afara de ordine, ce facem? 1266 01:05:40,290 --> 01:05:44,200 Dă-mi de-a doua linie, vă rog, Marcus. 1267 01:05:44,200 --> 01:05:47,186 >> STUDENT: Deci găsi următorul cel mai mic număr. 1268 01:05:47,186 --> 01:05:49,000 Acest lucru va fi indentat. 1269 01:05:49,000 --> 01:05:55,140 >> JASON Hirschhorn: Deci găsi următor cel mai mic număr. 1270 01:05:55,140 --> 01:05:56,460 Și apoi altcineva? 1271 01:05:56,460 --> 01:06:01,030 După ce vom gasi cel mai mic următoare număr, ce facem? 1272 01:06:01,030 --> 01:06:03,010 Am de gând să spun găsi cel mai mic număr. 1273 01:06:03,010 --> 01:06:04,820 Asta e ceea ce vrem să facem. 1274 01:06:04,820 --> 01:06:06,210 >> Deci, gasiti cel mai mic număr. 1275 01:06:06,210 --> 01:06:08,061 Atunci ce facem? 1276 01:06:08,061 --> 01:06:09,480 >> STUDENT: [inaudibil] la început. 1277 01:06:09,480 --> 01:06:10,680 >> JASON Hirschhorn: Îmi pare rău? 1278 01:06:10,680 --> 01:06:12,700 >> STUDENT: puneți-l în de început a listei. 1279 01:06:12,700 --> 01:06:18,540 >> JASON Hirschhorn: Deci, puneți-l în începutul listei. 1280 01:06:18,540 --> 01:06:20,140 Și ce facem de lucru care a fost la început 1281 01:06:20,140 --> 01:06:20,830 din lista, nu? 1282 01:06:20,830 --> 01:06:21,910 Suntem suprascrierea ceva. 1283 01:06:21,910 --> 01:06:23,130 Deci, unde ne-am pus asta? 1284 01:06:23,130 --> 01:06:24,120 Da, Anna? 1285 01:06:24,120 --> 01:06:25,520 >> STUDENT: În cazul în care cel mai mic număr a fost? 1286 01:06:25,520 --> 01:06:32,530 >> JASON Hirshhorn: Deci, pune la început listei unde 1287 01:06:32,530 --> 01:06:35,180 cel mai mic număr a fost. 1288 01:06:35,180 --> 01:06:38,510 Deci, în timp ce lista este în afara de ordine, găsi cel mai mic numar, puneți-l în 1289 01:06:38,510 --> 01:06:40,630 la începutul listei, a pus începutul listei unde 1290 01:06:40,630 --> 01:06:42,900 cel mai mic număr a fost. 1291 01:06:42,900 --> 01:06:45,780 Marcus, poți să reformulez această linie în timp ce lista este în ordine? 1292 01:06:45,780 --> 01:06:51,160 1293 01:06:51,160 --> 01:06:53,900 >> STUDENT: În timp ce numărul nu au fost clasificate în funcție? 1294 01:06:53,900 --> 01:06:55,920 >> JASON Hirshhorn: OK, deci în scopul de a știu că numerele nu au fost 1295 01:06:55,920 --> 01:06:58,670 sortate, ce trebuie să facem? 1296 01:06:58,670 --> 01:07:00,640 Cât de mult avem nevoie să trece prin această listă? 1297 01:07:00,640 --> 01:07:09,650 >> STUDENT: Deci, cred ca o pentru buclă, sau în timp ce, în timp ce numerele de verificat este mai puțin 1298 01:07:09,650 --> 01:07:11,900 decât lungimea listei? 1299 01:07:11,900 --> 01:07:13,160 >> JASON Hirshhorn: OK, asta e bine. 1300 01:07:13,160 --> 01:07:15,000 Cred că misphrased întrebarea mea prost. 1301 01:07:15,000 --> 01:07:15,990 Am fost doar încercarea de a ajunge la am de gând să trebuie să meargă 1302 01:07:15,990 --> 01:07:17,580 prin toata lista. 1303 01:07:17,580 --> 01:07:20,490 Deci, în timp ce lista este în afara de ordine, pentru mine, este greu de pe hartă. 1304 01:07:20,490 --> 01:07:24,940 Dar, în esență, așa Cred că despre asta. 1305 01:07:24,940 --> 01:07:28,880 Du-te prin intreaga lista, găsi cel mai mic număr, puneți-l în 1306 01:07:28,880 --> 01:07:30,130 început - de fapt, ai dreptate. 1307 01:07:30,130 --> 01:07:31,380 Să-i pe amândoi pus. 1308 01:07:31,380 --> 01:07:33,470 1309 01:07:33,470 --> 01:07:39,050 >> Deci, în timp ce lista este în afara de ordine, ne-am trebuie să treacă prin întreaga listă 1310 01:07:39,050 --> 01:07:42,250 o dată, a găsi cel mai mic număr, locul ea la începutul listei, a pus 1311 01:07:42,250 --> 01:07:45,430 începutul listei unde cel mai mic număr a fost, iar apoi în cazul în care 1312 01:07:45,430 --> 01:07:47,460 Lista este încă de ordine, ne-am Trebuie să treacă prin acest 1313 01:07:47,460 --> 01:07:48,620 proces din nou, corect? 1314 01:07:48,620 --> 01:07:51,610 De aceea selecție fel, Big-O execuție de selecție fel, cineva? 1315 01:07:51,610 --> 01:07:52,830 >> STUDENT: n patrat. 1316 01:07:52,830 --> 01:07:53,590 >> JASON Hirshhorn: n patrat. 1317 01:07:53,590 --> 01:07:57,040 Pentru că așa cum Marcus și am dat seama aici, vom avea la 1318 01:07:57,040 --> 01:08:00,310 du-te prin lista de lista număr de ori. 1319 01:08:00,310 --> 01:08:03,420 Deci, trece prin ceva de lungime n n număr de ori 1320 01:08:03,420 --> 01:08:04,990 este, de fapt, n pătrat. 1321 01:08:04,990 --> 01:08:08,100 >> Deci, aceasta este pseudocod nostru. 1322 01:08:08,100 --> 01:08:09,360 Acest lucru arata foarte bine. 1323 01:08:09,360 --> 01:08:11,870 Are cineva intrebari despre pseudocod? 1324 01:08:11,870 --> 01:08:14,440 Pentru că, de fapt un fel de selecție ar trebui să probabil veni unu la unu, codul de la 1325 01:08:14,440 --> 01:08:14,980 pseudocod. 1326 01:08:14,980 --> 01:08:17,569 Astfel încât orice întrebări cu privire la logică de pseudocod? 1327 01:08:17,569 --> 01:08:18,819 Vă rugăm să-l întrebați acum. 1328 01:08:18,819 --> 01:08:22,609 1329 01:08:22,609 --> 01:08:25,379 >> Un fel de selecție - în timp ce lista este în afara de ordine, vom trece prin ea 1330 01:08:25,379 --> 01:08:27,529 și de a găsi cel mai mic de fiecare dată și-l pune în față. 1331 01:08:27,529 --> 01:08:33,470 Deci, în timp ce lista este în afara de ordine, poate cineva da-mi ca linie de cod care 1332 01:08:33,470 --> 01:08:39,689 nu mi-a dat o linie de cod dar, te rog? 1333 01:08:39,689 --> 01:08:40,939 Se pare ca un ce? 1334 01:08:40,939 --> 01:08:43,669 1335 01:08:43,669 --> 01:08:44,649 >> STUDENT: E o pentru buclă. 1336 01:08:44,649 --> 01:08:45,830 >> JASON Hirshhorn: Sună ca un pentru buclă. 1337 01:08:45,830 --> 01:08:47,653 OK, poti sa-mi oferi pentru buclă? 1338 01:08:47,653 --> 01:08:48,925 Pentru - 1339 01:08:48,925 --> 01:08:50,219 >> STUDENT: I ​​= 0. 1340 01:08:50,219 --> 01:08:52,705 >> JASON Hirshhorn: i sau - 1341 01:08:52,705 --> 01:08:55,111 ceea ce ne lipsește? 1342 01:08:55,111 --> 01:08:56,819 Ce se întâmplă aici? 1343 01:08:56,819 --> 01:08:57,550 >> STUDENT: Int. 1344 01:08:57,550 --> 01:08:59,270 >> JASON Hirshhorn: Exact. 1345 01:08:59,270 --> 01:09:02,590 (Int i = 0; - 1346 01:09:02,590 --> 01:09:07,843 >> STUDENT: i 01:09:09,319 >> JASON Hirshhorn: nimerit, Jeff. 1348 01:09:09,319 --> 01:09:10,660 Mergem prin lista, nu? 1349 01:09:10,660 --> 01:09:11,880 Am văzut că cod înainte. 1350 01:09:11,880 --> 01:09:12,850 Perfect. 1351 01:09:12,850 --> 01:09:14,790 Deci să punem bretele noastre buclat aici. 1352 01:09:14,790 --> 01:09:17,859 Mă duc să pun niște acolade aici. 1353 01:09:17,859 --> 01:09:21,660 >> Deci, în timp ce este 0, avem nevoie pentru a merge prin intreaga lista. 1354 01:09:21,660 --> 01:09:26,612 Deci, de fiecare dată când mergem prin lista, ceea ce vrem pentru a ține evidența? 1355 01:09:26,612 --> 01:09:28,260 >> STUDENT: În cazul în care orice swap-uri sunt făcute. 1356 01:09:28,260 --> 01:09:29,069 >> JASON Hirshhorn: Cauta cel mai mic număr. 1357 01:09:29,069 --> 01:09:31,479 Deci, ar trebui probabil să țină evidența cel mai mic număr de fiecare dată. 1358 01:09:31,479 --> 01:09:34,590 Deci linie pot face pentru a ține evidența din cel mai mic număr? 1359 01:09:34,590 --> 01:09:37,720 Aleha, cum pot păstra piesa de ceva? 1360 01:09:37,720 --> 01:09:38,460 >> STUDENT: Începeți o nouă variabilă. 1361 01:09:38,460 --> 01:09:39,390 >> JASON Hirshhorn: Începeți o nouă variabilă. 1362 01:09:39,390 --> 01:09:40,069 Deci, haideți să creeze o variabila. 1363 01:09:40,069 --> 01:09:41,830 Ce tip? 1364 01:09:41,830 --> 01:09:42,930 >> STUDENT: Int. 1365 01:09:42,930 --> 01:09:43,710 >> JASON Hirshhorn: Int. 1366 01:09:43,710 --> 01:09:44,939 Să-l numim cel mai mic. 1367 01:09:44,939 --> 01:09:47,600 Și ce nu-l egal atunci când suntem doar la început? 1368 01:09:47,600 --> 01:09:48,910 Nu am trecut prin lista de încă. 1369 01:09:48,910 --> 01:09:50,540 Suntem la prima parte a Lista prima dată prin intermediul. 1370 01:09:50,540 --> 01:09:51,930 Ceea ce nu-l egal, cel mai mic număr? 1371 01:09:51,930 --> 01:09:54,140 >> STUDENT: Valorile i. 1372 01:09:54,140 --> 01:09:54,900 >> JASON Hirshhorn: Valorile i. 1373 01:09:54,900 --> 01:09:56,980 Asta sună exact drept, corect? 1374 01:09:56,980 --> 01:09:59,590 Cel mai mic număr de la începutul este locul unde ne aflăm. 1375 01:09:59,590 --> 01:10:01,960 Deci, acum avem cel mai mic noastră, și avem nevoie de pentru a merge prin întreaga listă și 1376 01:10:01,960 --> 01:10:05,080 compara acest mic la orice altceva. 1377 01:10:05,080 --> 01:10:08,150 Deci, nu ne trece prin lista din nou? 1378 01:10:08,150 --> 01:10:08,630 Michael? 1379 01:10:08,630 --> 01:10:10,000 >> STUDENT: Ai nevoie pentru a face un alt pentru buclă. 1380 01:10:10,000 --> 01:10:10,383 >> JASON Hirshhorn: Un alt pentru buclă. 1381 01:10:10,383 --> 01:10:11,276 Să o facem. 1382 01:10:11,276 --> 01:10:12,540 Dă-mi un cod. 1383 01:10:12,540 --> 01:10:13,790 >> STUDENT: Pentru buclă - 1384 01:10:13,790 --> 01:10:16,750 1385 01:10:16,750 --> 01:10:19,470 pentru cel mai mic - 1386 01:10:19,470 --> 01:10:23,040 1387 01:10:23,040 --> 01:10:25,770 doar int j, ai putea spune? 1388 01:10:25,770 --> 01:10:31,150 = 0, astfel încât - 1389 01:10:31,150 --> 01:10:34,014 1390 01:10:34,014 --> 01:10:35,710 >> JASON Hirshhorn: Ei bine, dacă vrem pentru a merge prin întreaga listă - 1391 01:10:35,710 --> 01:10:37,847 >> STUDENT: j 01:10:42,140 1393 01:10:42,140 --> 01:10:42,405 >> JASON Hirshhorn: Fantastic. 1394 01:10:42,405 --> 01:10:46,100 Vom trece prin pentru bucla din nou. 1395 01:10:46,100 --> 01:10:51,380 Și cum putem găsi cel mai mic număr? 1396 01:10:51,380 --> 01:10:52,630 Tom? 1397 01:10:52,630 --> 01:10:54,570 1398 01:10:54,570 --> 01:11:00,520 Avem numărul curent mai mic, așa cum putem găsi noi cel mai mic? 1399 01:11:00,520 --> 01:11:07,200 >> STUDENT: Putem verifica dacă cea mai mică număr avem noi este mai mare decât 1400 01:11:07,200 --> 01:11:09,040 Valori suport j. 1401 01:11:09,040 --> 01:11:14,740 >> JASON Hirshhorn: Deci, în cazul în care cel mai mic este mai mare decât valorile suport j. 1402 01:11:14,740 --> 01:11:19,350 Deci, dacă cel mai mic noastre actuale este mai mare de - 1403 01:11:19,350 --> 01:11:21,770 Am de gând să se mute aceste două linii de cod acolo pentru o secundă. 1404 01:11:21,770 --> 01:11:26,010 Pentru că înainte de a face orice pompare, ne-am nevoie pentru a merge prin intreaga lista. 1405 01:11:26,010 --> 01:11:28,880 Deci, acest pseudocod ar trebui de fapt fie în afara interior pentru buclă. 1406 01:11:28,880 --> 01:11:30,390 Deci, du-te prin intreaga lista. 1407 01:11:30,390 --> 01:11:34,520 Dacă este mai mare decât cea mai mică Valorile j atunci ce? 1408 01:11:34,520 --> 01:11:37,830 >> STUDENT: Apoi, mai mic este egal cu valorile j. 1409 01:11:37,830 --> 01:11:41,190 1410 01:11:41,190 --> 01:11:42,600 >> JASON Hirshhorn: Fantastic. 1411 01:11:42,600 --> 01:11:44,580 O întrebare rapidă - 1412 01:11:44,580 --> 01:11:47,236 prima dată când trecem prin această buclă, i va egala 0, j se întâmplă 1413 01:11:47,236 --> 01:11:50,710 la egal cu 0, odată ce vom ajunge aici. 1414 01:11:50,710 --> 01:11:52,410 Așa că am de gând să fie comparat un număr de la sine. 1415 01:11:52,410 --> 01:11:53,660 Că este eficient? 1416 01:11:53,660 --> 01:11:57,260 1417 01:11:57,260 --> 01:11:58,390 Nu, nu e chiar eficient. 1418 01:11:58,390 --> 01:12:02,915 Deci, nu j nostru nevoie pentru a merge de la 0 la n fiecare dată? 1419 01:12:02,915 --> 01:12:06,310 Nu avem întotdeauna nevoie pentru a verifica prin intreaga lista? 1420 01:12:06,310 --> 01:12:06,520 [Inaudibil]? 1421 01:12:06,520 --> 01:12:07,564 >> STUDENT: Începeți cu i în schimb. 1422 01:12:07,564 --> 01:12:09,405 >> JASON Hirshhorn: j poate începe cu ce? 1423 01:12:09,405 --> 01:12:09,990 >> STUDENT: i. 1424 01:12:09,990 --> 01:12:13,040 >> JASON Hirshhorn: j poate incepe cu i. 1425 01:12:13,040 --> 01:12:18,840 Deci, acum vom compara pornire cu cel suntem. 1426 01:12:18,840 --> 01:12:21,020 Dar chiar și atunci, este că, în calitate de eficient cu putință? 1427 01:12:21,020 --> 01:12:22,320 >> STUDENT: i + 1. 1428 01:12:22,320 --> 01:12:25,420 >> JASON Hirshhorn: i + 1 pare a fi cel mai eficient, pentru că noi 1429 01:12:25,420 --> 01:12:26,120 au deja i. 1430 01:12:26,120 --> 01:12:28,100 Suntem afirmând că ar fi mai mic în linie 15. 1431 01:12:28,100 --> 01:12:29,350 Vom începe cu un automat următor. 1432 01:12:29,350 --> 01:12:34,470 1433 01:12:34,470 --> 01:12:38,540 Deci, vom merge prin pentru buclă. 1434 01:12:38,540 --> 01:12:39,620 Vom merge prin fiecare dată. 1435 01:12:39,620 --> 01:12:40,860 Vom merge printr-un număr de ori. 1436 01:12:40,860 --> 01:12:42,860 Acum am ajuns prin acest interior pentru buclă. 1437 01:12:42,860 --> 01:12:44,350 Avem cea mai mică valoare salvează. 1438 01:12:44,350 --> 01:12:46,045 Trebuie să-l pună la de început a listei. 1439 01:12:46,045 --> 01:12:48,390 Deci, cum am loc la de început a listei? 1440 01:12:48,390 --> 01:12:51,290 1441 01:12:51,290 --> 01:12:55,926 Care este variabila care se referă la începutul listei? 1442 01:12:55,926 --> 01:13:00,500 Suntem în acest afară de buclă, astfel încât ceea ce se referă la 1443 01:13:00,500 --> 01:13:01,280 de început a listei? 1444 01:13:01,280 --> 01:13:02,880 >> STUDENT: Valorile i. 1445 01:13:02,880 --> 01:13:03,510 >> JASON Hirshhorn: Exact dreapta. 1446 01:13:03,510 --> 01:13:04,650 Valorile i este începutul - 1447 01:13:04,650 --> 01:13:06,320 sau rău, nu la început. 1448 01:13:06,320 --> 01:13:07,090 Asta a fost confuz. 1449 01:13:07,090 --> 01:13:11,620 Este locul unde ne aflăm la începutul anului porțiunea nesortate listei. 1450 01:13:11,620 --> 01:13:12,800 Deci, valorile i. 1451 01:13:12,800 --> 01:13:14,050 Și ceea ce face ca egal? 1452 01:13:14,050 --> 01:13:15,925 1453 01:13:15,925 --> 01:13:17,326 >> STUDENT: mai mic. 1454 01:13:17,326 --> 01:13:18,862 >> JASON Hirshhorn: Valorile i este egal cu ce? 1455 01:13:18,862 --> 01:13:19,310 >> STUDENT: mai mic. 1456 01:13:19,310 --> 01:13:20,030 >> JASON Hirshhorn: mai mic. 1457 01:13:20,030 --> 01:13:20,980 Exact dreapta. 1458 01:13:20,980 --> 01:13:23,510 Deci ne-o pune la început a listei, iar acum avem nevoie pentru a pune 1459 01:13:23,510 --> 01:13:25,710 începutul listei unde cel mai mic număr a fost. 1460 01:13:25,710 --> 01:13:29,700 Deci, cum scriu în cazul în care cel mai mic număr a fost? 1461 01:13:29,700 --> 01:13:31,670 Valorile de ce? 1462 01:13:31,670 --> 01:13:33,170 >> STUDENT: 0. 1463 01:13:33,170 --> 01:13:34,090 >> JASON Hirshhorn: mici număr e la 0? 1464 01:13:34,090 --> 01:13:35,340 >> STUDENT: Da. 1465 01:13:35,340 --> 01:13:38,680 1466 01:13:38,680 --> 01:13:39,910 >> JASON Hirshhorn: Ce se întâmplă dacă cel mai mic Numărul fost la sfârșitul 1467 01:13:39,910 --> 01:13:40,860 această listă nesortate? 1468 01:13:40,860 --> 01:13:42,460 >> STUDENT: Îmi pare rău, ce a fost întrebarea? 1469 01:13:42,460 --> 01:13:44,020 >> JASON Hirshhorn: În cazul în care este cel mai mic număr? 1470 01:13:44,020 --> 01:13:46,940 Am luat cel mai mic și a pus-o la începând, cu această linie aici. 1471 01:13:46,940 --> 01:13:48,987 >> STUDENT: Acesta ar trebui să aibă fost depozitate în unele - 1472 01:13:48,987 --> 01:13:50,510 >> STUDENT: Valorile j. 1473 01:13:50,510 --> 01:13:51,520 >> JASON Hirshhorn: Ei bine, e Valorile nu neapărat j. 1474 01:13:51,520 --> 01:13:54,100 Nici măcar nu există în acest moment. 1475 01:13:54,100 --> 01:13:55,960 >> STUDENT: Trebuie să declare o variabilă mai devreme și 1476 01:13:55,960 --> 01:13:58,230 apoi se atribuie - 1477 01:13:58,230 --> 01:14:01,150 atunci când veți găsi cel mai mic numar, atribuie indicele care numărul de 1478 01:14:01,150 --> 01:14:02,480 unele variabile sau ceva de genul asta. 1479 01:14:02,480 --> 01:14:04,790 >> JASON Hirshhorn: Deci, se poate spui asta din nou? 1480 01:14:04,790 --> 01:14:08,390 >> STUDENT: Deci, în cazul în care a declarat int mai mic, tu ar trebui să declare, de asemenea, int 1481 01:14:08,390 --> 01:14:10,750 cel mai mic indice = i, sau ceva de genul asta. 1482 01:14:10,750 --> 01:14:13,280 >> JASON Hirshhorn: Deci, unde eu int mai mică, eu ar trebui să nu numai evidența 1483 01:14:13,280 --> 01:14:16,150 din valoarea dar locul. 1484 01:14:16,150 --> 01:14:20,850 int = smallest_location în acest caz, vom face doar eu. 1485 01:14:20,850 --> 01:14:22,390 Trebuie să știm unde este. 1486 01:14:22,390 --> 01:14:26,820 Am ajuns la sfârșitul codului, și ne-am a dat seama am avut nici o idee unde a fost. 1487 01:14:26,820 --> 01:14:29,810 Și astfel, din nou, suntem de cartografiere aceasta pe unu la unu. 1488 01:14:29,810 --> 01:14:32,890 Voi codificare acest lucru pe cont propriu voință probabil ajunge la aceeași problemă. 1489 01:14:32,890 --> 01:14:34,130 Cum naiba îl găsesc? 1490 01:14:34,130 --> 01:14:36,720 Și apoi îți dai seama, așteptați, eu nevoie pentru a urmări de asta. 1491 01:14:36,720 --> 01:14:38,500 >> Deci, în cazul în care cel mai mic este mai mare decât valorile j. 1492 01:14:38,500 --> 01:14:39,740 Ne-am propus cel mai mic este egal cu valorile j. 1493 01:14:39,740 --> 01:14:42,090 Ce altceva mai avem nevoie pentru a schimba? 1494 01:14:42,090 --> 01:14:43,710 Constantin, ce altceva face avem nevoie pentru a schimba? 1495 01:14:43,710 --> 01:14:44,560 >> STUDENT: Locul de amplasare. 1496 01:14:44,560 --> 01:14:45,270 >> JASON Hirshhorn: Exact. 1497 01:14:45,270 --> 01:14:46,925 Deci, da-mi linie în cod. 1498 01:14:46,925 --> 01:14:53,310 >> STUDENT: smallest_location = j. 1499 01:14:53,310 --> 01:14:54,790 >> JASON Hirshhorn: Exact. 1500 01:14:54,790 --> 01:14:58,210 Și apoi în jos, la sfârșitul, dacă vrem să pus începutul listei unde 1501 01:14:58,210 --> 01:15:00,790 cel mai mic număr a fost, cum nu ne referim la cazul în care 1502 01:15:00,790 --> 01:15:02,200 cel mai mic număr a fost? 1503 01:15:02,200 --> 01:15:03,580 Marcus? 1504 01:15:03,580 --> 01:15:08,530 >> STUDENT: Cel mai mic număr a fost situat la cea mai mică locație. 1505 01:15:08,530 --> 01:15:12,230 >> JASON Hirshhorn: Deci, la valori smallest_location. 1506 01:15:12,230 --> 01:15:14,700 Și ce-am pus-o acolo? 1507 01:15:14,700 --> 01:15:17,600 De la începutul lista, ce e asta? 1508 01:15:17,600 --> 01:15:19,710 >> STUDENT: Ei bine, nu știu cu adevărat mai că ne-am suprascris. 1509 01:15:19,710 --> 01:15:23,250 Deci, este o locații schimbate dintre aceste două linii? 1510 01:15:23,250 --> 01:15:26,110 Dacă schimbați cele două linii în jurul. 1511 01:15:26,110 --> 01:15:30,740 >> JASON Hirshhorn: OK, deci nu avem mai, pentru că ne-am resetat linia 1512 01:15:30,740 --> 01:15:31,960 înainte valori I la cel mai mic. 1513 01:15:31,960 --> 01:15:33,810 Așa că am pierdut ca valoarea inițială. 1514 01:15:33,810 --> 01:15:37,350 Deci, ai spus de swap aceste două linii. 1515 01:15:37,350 --> 01:15:41,780 Deci, acum a pus la începutul listei în cazul în care a fost mai mic număr. 1516 01:15:41,780 --> 01:15:47,060 Astfel smallest_location egal valori i. 1517 01:15:47,060 --> 01:15:51,310 Care se mișcă de la începutul acestui porțiune nesortate din lista de la 1518 01:15:51,310 --> 01:15:52,090 mai mic de locație. 1519 01:15:52,090 --> 01:15:54,860 Și apoi în valori i ne mutam că cel mai mic număr. 1520 01:15:54,860 --> 01:15:57,450 >> Are vreun sens ce am a trebuit să facă asta schimb? 1521 01:15:57,450 --> 01:15:59,650 Ne-ar fi rescris această valoare - un alt lucru pe care, probabil, ar trebui 1522 01:15:59,650 --> 01:16:02,740 a dat seama și a găsit în PIB. 1523 01:16:02,740 --> 01:16:05,310 Așa că am avut grijă de toate pseudocod. 1524 01:16:05,310 --> 01:16:10,935 Mai este ceva noi nevoie pentru a scrie aici? 1525 01:16:10,935 --> 01:16:14,911 Poate cineva gândi la ceva? 1526 01:16:14,911 --> 01:16:16,180 >> STUDENT: De unde stii când ai terminat? 1527 01:16:16,180 --> 01:16:17,680 >> JASON Hirshhorn: Cum ne știu când am terminat? 1528 01:16:17,680 --> 01:16:18,890 Marea întrebare. 1529 01:16:18,890 --> 01:16:21,684 Deci, cum putem ști când am terminat. 1530 01:16:21,684 --> 01:16:24,720 >> STUDENT: Creați o variabilă de a păstra numărul de cazul în care există un schimb de făcut sau nu 1531 01:16:24,720 --> 01:16:27,810 și du-te printr-o trecere. 1532 01:16:27,810 --> 01:16:30,180 >> JASON Hirshhorn: OK. 1533 01:16:30,180 --> 01:16:31,800 Care să funcționeze în balon fel. 1534 01:16:31,800 --> 01:16:35,210 Dar de selecție fel, dacă noi nu facem face un schimb, care ar putea fi doar 1535 01:16:35,210 --> 01:16:38,670 deoarece cea mai mică valoare este în ea locația sa potrivit. 1536 01:16:38,670 --> 01:16:41,240 Am putea avea o listă de 1, 2, 4, 3. 1537 01:16:41,240 --> 01:16:42,830 A doua oară, prin noi nu va face nici un swap-uri. 1538 01:16:42,830 --> 01:16:47,260 Vom fi cu privire la numărul 2, dar vom încă mai trebuie să continui. 1539 01:16:47,260 --> 01:16:49,390 Deci, avem nevoie pentru a urmări atunci când am terminat, sau nu vrem doar să merg 1540 01:16:49,390 --> 01:16:50,640 până când acest lucru este terminat? 1541 01:16:50,640 --> 01:16:54,098 1542 01:16:54,098 --> 01:16:56,740 >> STUDENT: Putem merge doar până când sa terminat. 1543 01:16:56,740 --> 01:16:58,090 >> JASON Hirshhorn: Putem doar du-te până când acest lucru este terminat. 1544 01:16:58,090 --> 01:17:01,720 În balon fel, tu ești exact dreapta, Jeff și Aleha, cu solutia ta - 1545 01:17:01,720 --> 01:17:04,990 este mare pentru a urmări cât de multe swap-uri le-ați făcut, pentru că în balon 1546 01:17:04,990 --> 01:17:07,920 fel, dacă ai face, de fapt, nu fac nici swap-uri, ați terminat și vă poate reduce, poate dvs. 1547 01:17:07,920 --> 01:17:09,000 problemă în jos un pic. 1548 01:17:09,000 --> 01:17:11,440 Dar de selecție fel, ai într-adevăr Trebuie să mergem până la capăt a 1549 01:17:11,440 --> 01:17:14,940 Lista de fiecare dată în jurul valorii. 1550 01:17:14,940 --> 01:17:16,200 >> Deci, asta este. 1551 01:17:16,200 --> 01:17:18,530 Avem două minute. 1552 01:17:18,530 --> 01:17:21,560 Să facem tot. 1553 01:17:21,560 --> 01:17:24,340 Permiteți-mi doar deschis Găsiți aici și face sigur că am de fapt apelarea - 1554 01:17:24,340 --> 01:17:25,610 Eu nu sun bule de sortare. 1555 01:17:25,610 --> 01:17:29,230 Să schimbăm acest tip de selecție. 1556 01:17:29,230 --> 01:17:31,060 face toate. / găsi. 1557 01:17:31,060 --> 01:17:32,360 Să găsim 42. 1558 01:17:32,360 --> 01:17:38,110 De data aceasta am de gând să treacă un Lista nesortate, pentru că aceasta ar trebui să rezolve 1559 01:17:38,110 --> 01:17:43,790 în primul rând, pe codul find - ar trebui să rezolve în primul rând, folosind funcția noastră de sortare și apoi 1560 01:17:43,790 --> 01:17:44,995 uita-te pentru ceva. 1561 01:17:44,995 --> 01:17:46,245 Pumnii toată lumea. 1562 01:17:46,245 --> 01:17:48,530 1563 01:17:48,530 --> 01:17:49,370 >> Dumnezeule. 1564 01:17:49,370 --> 01:17:50,800 Whoa, inima mea bătea. 1565 01:17:50,800 --> 01:17:52,320 Astfel că este corect. 1566 01:17:52,320 --> 01:17:57,270 De fapt, dacă am fugit acest lucru mai mult extensiv, codul, în măsura în care pot 1567 01:17:57,270 --> 01:17:59,280 spune, este perfect corect. 1568 01:17:59,280 --> 01:18:02,150 Există unele sugestii Mi-ar avea pentru tine. 1569 01:18:02,150 --> 01:18:06,215 De exemplu, 15 și 16 par un pic redundant. 1570 01:18:06,215 --> 01:18:09,450 Se pare ca tu nu neapărat nevoie pentru a salva atât cele. 1571 01:18:09,450 --> 01:18:12,790 Dacă aveți cea mai mică locație, pot găsi cu ușurință cea mai mică valoare de 1572 01:18:12,790 --> 01:18:14,750 doar tastând valorile i. 1573 01:18:14,750 --> 01:18:18,100 >> Deci, dacă ar fi să fie clasificare codul, care voi fi, de fapt, mi-ar 1574 01:18:18,100 --> 01:18:21,160 probabil scoate un punct, dacă a inclus ambele, pentru că 1575 01:18:21,160 --> 01:18:22,670 nu au nevoie de ambele. 1576 01:18:22,670 --> 01:18:25,400 Dacă aveți locația, puteți ajunge foarte ușor valoarea. 1577 01:18:25,400 --> 01:18:27,520 Și se pare un pic ciudat pentru a stoca ambele dintre ele. 1578 01:18:27,520 --> 01:18:31,070 Poate nu chiar să ia un punct, dar cu siguranță comenta că este, poate, 1579 01:18:31,070 --> 01:18:32,670 nu o alegere stilistic aveți nevoie pentru a face. 1580 01:18:32,670 --> 01:18:35,290 Desigur, codul încă ruleaza foarte bine. 1581 01:18:35,290 --> 01:18:36,860 >> Deci, din păcate, nu am ajunge la balon fel. 1582 01:18:36,860 --> 01:18:37,940 Îmi pare rău pentru asta. 1583 01:18:37,940 --> 01:18:39,135 Am făcut selecție finisaj fel. 1584 01:18:39,135 --> 01:18:41,450 Are cineva întrebări finale de selecție fel? 1585 01:18:41,450 --> 01:18:44,320 1586 01:18:44,320 --> 01:18:47,690 >> OK, înainte de a ne capul afară, te vreau pe tine pentru a deschide browser-ul Chrome. 1587 01:18:47,690 --> 01:18:54,340 Îmi pare rău, că a fost doar un plug flagrantă pentru un tip de browser de internet. 1588 01:18:54,340 --> 01:18:57,770 Puteți deschide orice tip de browser, dar va fi, probabil, Chrome. 1589 01:18:57,770 --> 01:19:01,250 Și du-te la acest site-ul următor - 1590 01:19:01,250 --> 01:19:06,410 sayat.me/cs50. 1591 01:19:06,410 --> 01:19:07,685 Dacă nu sunteți tastarea pe computer chiar acum, ești în mod clar 1592 01:19:07,685 --> 01:19:10,210 nu o faci, Tom. 1593 01:19:10,210 --> 01:19:12,870 >> Și vă rugăm să o facă, fie drept acum sau în următoarea oră - 1594 01:19:12,870 --> 01:19:14,260 da-mi ceva de feedback. 1595 01:19:14,260 --> 01:19:15,660 Acest lucru este doar secțiune două. 1596 01:19:15,660 --> 01:19:18,060 Avem mult mai multe împreună, așa că am au o mulțime de cameră să se îmbunătățească. 1597 01:19:18,060 --> 01:19:19,620 Sperăm că am făcut-o, de asemenea, unele lucruri bine. 1598 01:19:19,620 --> 01:19:22,160 Astfel încât să puteți face să mă simt așa de rău, dar dacă tu de asemenea, doresc să-mi dea un smiley 1599 01:19:22,160 --> 01:19:24,250 fata, mi-ar aprecia la fel de bine. 1600 01:19:24,250 --> 01:19:25,330 Umple inch 1601 01:19:25,330 --> 01:19:28,210 >> Și cu un minut la stânga, că a fost trei saptamani. 1602 01:19:28,210 --> 01:19:30,750 Voi sta afară pentru un pic dacă aveți întrebări. 1603 01:19:30,750 --> 01:19:32,220 Eu voi vedea voi în prelegere mâine. 1604 01:19:32,220 --> 01:19:34,742