1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Article 3] [Menys Còmode] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 >> [Aquesta és CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Molt bé, anem a començar. 5 00:00:10,000 --> 00:00:13,000 Benvinguts a la Setmana 4 de CS50. 6 00:00:13,000 --> 00:00:19,000 Si vostès obren un navegador web i obrir pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble amb CS50, començarem a anar 8 00:00:23,000 --> 00:00:26,000 a través de la secció de preguntes allí. 9 00:00:26,000 --> 00:00:32,000 Igual que la setmana passada, estarem treballant en CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 si també va a tirar cap amunt, així que, 11 00:00:35,000 --> 00:00:43,000 i si segueixes endavant i visiti aquest enllaç que tinc aquí a la part superior. 12 00:00:43,000 --> 00:00:45,000 És hora de començar. 13 00:00:45,000 --> 00:00:51,000 Tenim el nostre programa hi poc aquí. Res boig. 14 00:00:51,000 --> 00:00:55,000 Una de les primeres coses que vull fer amb vostès avui és repassar algunes solucions 15 00:00:55,000 --> 00:00:58,000 Set per al problema 1, el tipus d'exemple solucions, 16 00:00:58,000 --> 00:01:03,000 només perquè pugui tenir una idea de quin tipus de personal està escrivint codi, 17 00:01:03,000 --> 00:01:07,000 Quin tipus d'estudiants estan escrivint altres codis, 18 00:01:07,000 --> 00:01:10,000 i fer que vostè prengui una mirada en ella, perquè sé que és estrany 19 00:01:10,000 --> 00:01:14,000 al moment d'enviar la solució a un conjunt de problemes i obtenir comentaris 20 00:01:14,000 --> 00:01:18,000 en la seva pròpia versió, però de vegades és útil veure com altres persones ho van fer, 21 00:01:18,000 --> 00:01:22,000 especialment els que estan ben buscant. 22 00:01:22,000 --> 00:01:27,000 En la seva major part, jo estava molt impressionat amb les solucions que vostès produeixen. 23 00:01:27,000 --> 00:01:31,000 Encara no he començat a buscar en els seus 2s conjunt de problemes, però si ets com la primera, 24 00:01:31,000 --> 00:01:34,000 no significa res més que coses bones. 25 00:01:34,000 --> 00:01:40,000 >> Si ens fixem en els meus revisions, anem a començar fins al fons en Revisió 1, 26 00:01:40,000 --> 00:01:47,000 i anem a fer una ullada ràpida a una solució de Mario. 27 00:01:47,000 --> 00:01:54,000 Si tira d'això, els programes que presentarem són els correctes. 28 00:01:54,000 --> 00:01:56,000 No hi havia problemes amb la correcció d'aquests problemes, sinó més aviat, 29 00:01:56,000 --> 00:01:59,000 volem parlar una mica sobre els problemes de disseny diferents 30 00:01:59,000 --> 00:02:03,000 que s'utilitzen aquí. 31 00:02:03,000 --> 00:02:08,000 Una de les coses que era interessant sobre la solució 32 00:02:08,000 --> 00:02:11,000 és que utilitza aquest nou constructe anomenat lliures definir, 33 00:02:11,000 --> 00:02:15,000 de vegades també es refereix com un hash definir. 34 00:02:15,000 --> 00:02:18,000 Permetin-me fer un zoom sobre ella aquí. 35 00:02:18,000 --> 00:02:24,000 A # define li permet donar nom a aquests números en el seu programa. 36 00:02:24,000 --> 00:02:28,000 En aquest cas, l'alçada màxima d'una piràmide en Mario 37 00:02:28,000 --> 00:02:34,000 tenia 23 anys i en lloc de posar 23 en el meu codi 38 00:02:34,000 --> 00:02:37,000 volem dir que tan dur codi 23 - 39 00:02:37,000 --> 00:02:43,000 això dóna lloc la MAX_HEIGHT nom a aquest nombre, 40 00:02:43,000 --> 00:02:48,000 de manera que aquí al meu do-while 41 00:02:48,000 --> 00:02:51,000 en realitat es pot fer referència a MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 en lloc de posar el número 23 polz 43 00:02:55,000 --> 00:02:57,000 [Estudiant] Quina és l'avantatge de fer això? 44 00:02:57,000 --> 00:02:59,000 Aquesta és una gran pregunta. 45 00:02:59,000 --> 00:03:03,000 Una d'elles és la lectura. 46 00:03:03,000 --> 00:03:08,000 Un avantatge d'utilitzar aquest # defineix és la llegibilitat. 47 00:03:08,000 --> 00:03:11,000 Quan estic llegint el codi, puc veure el que està passant. 48 00:03:11,000 --> 00:03:15,000 >> Puc veure en aquesta condició que aquí estem provant 49 00:03:15,000 --> 00:03:19,000 per l'altura és <0, el que podríem haver definit també 50 00:03:19,000 --> 00:03:22,000 ser d'una alçada mínima o una alçada min. 51 00:03:22,000 --> 00:03:25,000 L'altre avantatge és que es pot llegir la resta de la línia per veure 52 00:03:25,000 --> 00:03:30,000 que també estem comprovant per assegurar-se que l'alçada no és més gran que l'altura màxima, 53 00:03:30,000 --> 00:03:35,000 perquè seguirem mentre que l'altura és major que l'altura màx. 54 00:03:35,000 --> 00:03:40,000 L'altre avantatge és, si puc ampliar una mica aquí- 55 00:03:40,000 --> 00:03:49,000 si executo aquest programa i ho executo, per exemple, amb un 23 en aquest moment, 56 00:03:49,000 --> 00:03:52,000 que mostra tots 23 files així com així. 57 00:03:52,000 --> 00:03:54,000 Però dir que era hora de canviar l'alçada màxima, 58 00:03:54,000 --> 00:03:57,000 i ara vol limitar l'alçada màxima de les piràmides 59 00:03:57,000 --> 00:04:06,000 ser només dir-man, que era modern. 60 00:04:06,000 --> 00:04:14,000 # Include, # defineix MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 i diguem que volia posar igual a 10. 62 00:04:18,000 --> 00:04:22,000 Ara, en aquest punt, tot el que havia de fer era canviar-lo en aquesta ubicació. 63 00:04:22,000 --> 00:04:27,000 Em pot tornar a compilar el codi, i ara si que intento escriure en el 12, 64 00:04:27,000 --> 00:04:30,000 va a preguntar de nou. 65 00:04:30,000 --> 00:04:33,000 En aquest cas, només estem utilitzant MAX_HEIGHT vegada. 66 00:04:33,000 --> 00:04:37,000 No és tan gran d'una molèstia d'anar a 67 00:04:37,000 --> 00:04:40,000 i canviar-lo en el bucle mentre que si és necessari. 68 00:04:40,000 --> 00:04:44,000 No obstant això, en els programes en què s'està fent referència al mateix nombre màgic 69 00:04:44,000 --> 00:04:47,000 una i altra vegada, aquest mecanisme és # defineix molt útil 70 00:04:47,000 --> 00:04:52,000 perquè vostè acaba de canviar un cop a la part superior de l'arxiu, és en general en el qual els va posar- 71 00:04:52,000 --> 00:04:57,000 i el canvi es filtra per la resta de l'arxiu. 72 00:04:57,000 --> 00:05:02,000 >> Altres coses que volia destacar en aquesta tasca que em va semblar es veia molt bé, 73 00:05:02,000 --> 00:05:05,000 un va ser el nomenament de les variables. 74 00:05:05,000 --> 00:05:14,000 Aquí es pot apreciar que tenim les variables senceres trucades fila i es diu altura. 75 00:05:14,000 --> 00:05:20,000 Espais, hashes, ajuda a fer que el codi una mica més llegible, 76 00:05:20,000 --> 00:05:25,000 fa que sigui una mica més comprensible el que realment està passant. 77 00:05:25,000 --> 00:05:31,000 Això està en contrast amb l'ús, per exemple, lletres a l'atzar 78 00:05:31,000 --> 00:05:35,000 o simplement gobbledygook complet. 79 00:05:35,000 --> 00:05:39,000 Una última cosa vaig a assenyalar és que en els bucles for, 80 00:05:39,000 --> 00:05:45,000 sovint aquestes variables Iterador, aquests comptadors que s'utilitzen en la seva bucles for, 81 00:05:45,000 --> 00:05:51,000 és estàndard i convencional per començar amb i i j i k 82 00:05:51,000 --> 00:05:54,000 I passant d'allí si necessites més variables, 83 00:05:54,000 --> 00:05:56,000 i això és només una convenció. 84 00:05:56,000 --> 00:05:58,000 Hi ha un munt de convencions. 85 00:05:58,000 --> 00:06:00,000 Depèn del llenguatge de programació que està utilitzant. 86 00:06:00,000 --> 00:06:04,000 Però en C, en general comencen amb i. 87 00:06:04,000 --> 00:06:08,000 No té sentit utilitzar, per exemple, A o B 88 00:06:08,000 --> 00:06:13,000 depenent de la situació. 89 00:06:13,000 --> 00:06:15,000 Això és tot per aquesta. 90 00:06:15,000 --> 00:06:25,000 Si ara aixecar Revisió 2, veurà un altre Mario, 91 00:06:25,000 --> 00:06:29,000 i aquest és similar a la d'un altre tipus que acabem de veure, 92 00:06:29,000 --> 00:06:32,000 però sí una cosa una mica freda. 93 00:06:32,000 --> 00:06:38,000 Si ens fixem en aquesta secció aquí a l'interior de l'interior de bucle, 94 00:06:38,000 --> 00:06:44,000 que estan utilitzant una sintaxi boig buscant aquí just en aquesta línia. 95 00:06:44,000 --> 00:06:47,000 Això es diu un operador ternari. 96 00:06:47,000 --> 00:06:53,000 És una sentència if else condensada en una sola línia. 97 00:06:53,000 --> 00:06:57,000 La condició és aquesta part dins de parèntesis. 98 00:06:57,000 --> 00:07:05,000 És equivalent a dir si j 00:07:10,000 I a continuació, el que el contingut d'aquest bloc si serien són l'espai 100 00:07:10,000 --> 00:07:16,000 i llavors el contingut del que l'altre seria aquest són #. 101 00:07:16,000 --> 00:07:20,000 Bàsicament es tracta de l'assignació d'un espai per a aquesta variable. 102 00:07:20,000 --> 00:07:24,000 És posar un espai en el contingut de la variable de bloc, 103 00:07:24,000 --> 00:07:29,000 si es compleix aquesta condició, i si la condició no es compleix, 104 00:07:29,000 --> 00:07:32,000 llavors la variable de bloc rep aquest #. 105 00:07:32,000 --> 00:07:37,000 I després, és clar, en lloc de construir una cadena completa 106 00:07:37,000 --> 00:07:43,000 i la impressió que tot al final aquesta solució s'imprimeix un caràcter alhora. 107 00:07:43,000 --> 00:07:48,000 Pretty cool. 108 00:07:48,000 --> 00:07:53,000 >> Un altre parell de coses per veure. Anem a passar a cobdiciosos. 109 00:07:53,000 --> 00:07:58,000 Ara bé, si ens fixem en cobdiciosos, aquesta primera solució 110 00:07:58,000 --> 00:08:00,000 les utilitza # defineix bastant. 111 00:08:00,000 --> 00:08:06,000 Tenim una constant definida per a cada un dels diferents nombres en aquest programa. 112 00:08:06,000 --> 00:08:12,000 Tenim un per centaus per dòlar, una per quarts, deu, cinc i un cèntim, 113 00:08:12,000 --> 00:08:15,000 i ara si desplaceu-vos cap avall i llegir les lletres, 114 00:08:15,000 --> 00:08:22,000 podem veure un patró do-while imprimir tot llaç fora. 115 00:08:22,000 --> 00:08:25,000 Una mica el quid d'aquest problema va ser adonant que 116 00:08:25,000 --> 00:08:29,000 vostè necessita per convertir el flotador que es llegeix a l'usuari a un enter 117 00:08:29,000 --> 00:08:32,000 de fer amb precisió les matemàtiques, i això és perquè 118 00:08:32,000 --> 00:08:36,000 amb nombres de punt flotant, com parlem en classe breument, 119 00:08:36,000 --> 00:08:41,000 que no és possible representar amb precisió cada valor únic a la recta numèrica 120 00:08:41,000 --> 00:08:47,000 perquè hi ha infinits valors entre 3 i, per exemple, 3,1, fins i tot. 121 00:08:47,000 --> 00:08:54,000 Vostè pot tenir 3,01 i 3,001 i 3,0001, i vostè pot seguir endavant. 122 00:08:54,000 --> 00:09:00,000 Resulta que quan es treballa amb diners, sovint es vol convertir 123 00:09:00,000 --> 00:09:05,000 en format sencer de manera que vostè no està perdent centaus i aquest tipus de coses. 124 00:09:05,000 --> 00:09:09,000 Fer això i l'arrodoniment ser clau. 125 00:09:09,000 --> 00:09:14,000 Aquesta solució utilitza un perfectament senzill, l'algoritme de gran 126 00:09:14,000 --> 00:09:17,000 que disminueix el nombre de centaus restants, primer per trimestres, 127 00:09:17,000 --> 00:09:19,000 després per monedes de deu centaus, i després per monedes de cinc centaus, i després per uns centaus, 128 00:09:19,000 --> 00:09:24,000 i augmentant el nombre de monedes de cada vegada. 129 00:09:24,000 --> 00:09:31,000 >> Una altra solució que veurem, ja que el zoom i anar a la revisió 4, 130 00:09:31,000 --> 00:09:40,000 va tenir un començament molt similar, però en lloc utilitzar div i mod 131 00:09:40,000 --> 00:09:44,000 per aquí per calcular el nombre de centaus. 132 00:09:44,000 --> 00:09:50,000 Això, el nombre de quarts és igual al nombre de centaus dividit per 25, 133 00:09:50,000 --> 00:09:53,000 i la raó per la qual això funciona és perquè estem fent la divisió entera, 134 00:09:53,000 --> 00:09:58,000 per la qual cosa és rebutjar la resta. 135 00:09:58,000 --> 00:10:02,000 [Estudiant] Hem de comentar la recerca? 136 00:10:02,000 --> 00:10:05,000 Realment depèn. 137 00:10:05,000 --> 00:10:08,000 [Estudiant] Ets comentant més codi aquí. 138 00:10:08,000 --> 00:10:16,000 Sí, i el que hi ha un munt de diferents filosofies sobre això. 139 00:10:16,000 --> 00:10:21,000 La meva filosofia personal és que el seu codi és realment la veritat, 140 00:10:21,000 --> 00:10:24,000 igual que el codi és el que realment està executant en l'equip, 141 00:10:24,000 --> 00:10:29,000 de manera que el codi ha de ser tan llegible possible per no necessitar tants comentaris. 142 00:10:29,000 --> 00:10:33,000 Dit això, quan vostè està fent les coses que són una mica complicat matemàticament 143 00:10:33,000 --> 00:10:38,000 o algorísmica, és bo per als comentaris, perquè pugui 144 00:10:38,000 --> 00:10:43,000 afegir una dimensió extra, una capa extra a qui està llegint el seu codi. 145 00:10:43,000 --> 00:10:49,000 En aquestes solucions, sovint es comenten en major mesura perquè 146 00:10:49,000 --> 00:10:52,000 volem ser capaços de distribuir i que la gent els reculli 147 00:10:52,000 --> 00:10:56,000 i llegir-los amb força facilitat. 148 00:10:56,000 --> 00:11:05,000 Però definitivament, estic d'acord que aquest és pesat. 149 00:11:05,000 --> 00:11:07,000 [Estudiant] No obstant això, en cas de dubte, anar més pesat? 150 00:11:07,000 --> 00:11:10,000 En cas de dubte, anar més pesada. 151 00:11:10,000 --> 00:11:17,000 Algunes vegades la gent dirà 0 retorn o alguna cosa per l'estil. 152 00:11:17,000 --> 00:11:20,000 Crec que és un comentari ridícul. 153 00:11:20,000 --> 00:11:22,000 Està clar que és el que està succeint. 154 00:11:22,000 --> 00:11:25,000 No necessito Anglès per dir-me això. 155 00:11:25,000 --> 00:11:28,000 De vegades la gent escriu coses com "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Això és una cosa valent, però també-no 157 00:11:32,000 --> 00:11:35,000 que no fa la diferència entre els punts que comenten o no. 158 00:11:35,000 --> 00:11:41,000 Aquest tipus de comentaris són només ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> En aquest punt, anem a començar a treballar en el problema 3 secció de preguntes. 161 00:11:48,000 --> 00:11:52,000 Si vostès treure això de nou, 162 00:11:52,000 --> 00:11:55,000 igual que amb la setmana passada, no anem a veure els curts en aquesta secció. 163 00:11:55,000 --> 00:12:00,000 Anem a deixar que vostès fan això en el seu propi temps i parlar de les preguntes. 164 00:12:00,000 --> 00:12:05,000 Però ara, en aquesta secció anem a passar una mica més 165 00:12:05,000 --> 00:12:11,000 parlant de menys dels fonaments de codificació 166 00:12:11,000 --> 00:12:15,000 com ho vam fer la setmana passada, i en el seu lloc, ens centrarem més en 167 00:12:15,000 --> 00:12:22,000 una mica més de la teoria, així que parlar de recerca binària i ordenació. 168 00:12:22,000 --> 00:12:27,000 Des d'aquells de vostès que han estat seguint al llarg de la conferència, 169 00:12:27,000 --> 00:12:30,000 Pot algú donar-me un resum del que la diferència és 170 00:12:30,000 --> 00:12:35,000 entre recerca i recerca binària lineal? 171 00:12:35,000 --> 00:12:37,000 Què està passant? Clar. 172 00:12:37,000 --> 00:12:42,000 Cerques lineals recerca a través de tots els elements de la llista ordenada 173 00:12:42,000 --> 00:12:45,000 una per una per una per una per una, 174 00:12:45,000 --> 00:12:50,000 i recerca binària divideix la llista en dos grups, 175 00:12:50,000 --> 00:12:57,000 Comprova si el valor de tecles que s'està buscant és major o menor que el valor del punt mitjà 176 00:12:57,000 --> 00:13:00,000 que vostè acaba de trobar, i si és menor, es va amb la llista inferior 177 00:13:00,000 --> 00:13:03,000 i després es divideix de nou, fa la mateixa funció 178 00:13:03,000 --> 00:13:07,000 tot el camí cap avall fins que troba el punt mitjà a ser igual al valor en si. 179 00:13:07,000 --> 00:13:10,000 Dreta. 180 00:13:10,000 --> 00:13:12,000 >> Per què ens importa? 181 00:13:12,000 --> 00:13:20,000 Per què parlem de recerca binària davant de la recerca lineal? 182 00:13:20,000 --> 00:13:22,000 Si. 183 00:13:22,000 --> 00:13:24,000 El binari és molt més ràpid, de manera que si es duplica la mida del problema 184 00:13:24,000 --> 00:13:27,000 fa un pas més i no el doble. 185 00:13:27,000 --> 00:13:29,000 Exactament. 186 00:13:29,000 --> 00:13:31,000 Aquesta és una gran resposta. 187 00:13:31,000 --> 00:13:36,000 Hi lineal està molt comprovació d'un element alhora, 188 00:13:36,000 --> 00:13:39,000 i com hem vist al primer dia de la conferència 189 00:13:39,000 --> 00:13:42,000 quan David va ser a través del seu exemple guia telefònica 190 00:13:42,000 --> 00:13:45,000 i va arrencar una pàgina del llibre de telèfon al mateix temps 191 00:13:45,000 --> 00:13:47,000 i vaig seguir fent això una i altra vegada i una altra, 192 00:13:47,000 --> 00:13:51,000 l'hi va a prendre un temps molt llarg per trobar algú a la guia telefònica, 193 00:13:51,000 --> 00:13:55,000 llevat que, per descomptat, ell estava buscant a algú en el principi de l'alfabet. 194 00:13:55,000 --> 00:14:00,000 Amb la recerca binària, pot anar molt més ràpid, 195 00:14:00,000 --> 00:14:05,000 i no és només el doble de ràpid o 3 vegades més ràpid o 4 vegades més ràpid. 196 00:14:05,000 --> 00:14:13,000 Però el problema es fa més petita i més petita molt més ràpid. 197 00:14:13,000 --> 00:14:17,000 Per il · lustrar això, anem a començar a parlar del que està passant 198 00:14:17,000 --> 00:14:21,000 quan escrivim recerca binària. 199 00:14:21,000 --> 00:14:27,000 El problema en qüestió és que si jo tinc una matriu de nombres, 200 00:14:27,000 --> 00:14:40,000 dir, 1, 2, 3, 5, 7, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 i 9 amb un munt de 0s després d'ella, 202 00:14:47,000 --> 00:14:52,000 volem ser capaços d'esbrinar el que és realment ràpid en 203 00:14:52,000 --> 00:14:57,000 aquest conjunt de nombres. 204 00:14:57,000 --> 00:15:00,000 Sé que això sembla una mica ximple i artificial una mica, 205 00:15:00,000 --> 00:15:02,000 perquè ara mateix és. 206 00:15:02,000 --> 00:15:05,000 Tenim un conjunt que no té elements molt diversos en el mateix, 207 00:15:05,000 --> 00:15:08,000 i si li pregunto a algú de vostès per saber si és o no 208 00:15:08,000 --> 00:15:11,000 23 està en la matriu, es pot fer això amb força rapidesa 209 00:15:11,000 --> 00:15:16,000 amb només fer una ullada a això i dir-me si o no. 210 00:15:16,000 --> 00:15:20,000 El anàleg a considerar és imaginar si aquest fos, diguem, 211 00:15:20,000 --> 00:15:27,000 un full de càlcul d'Excel amb 10.000 files, 20.000 files. 212 00:15:27,000 --> 00:15:31,000 Per descomptat, vostè pot fer la comanda o el F F control i buscar alguna cosa. 213 00:15:31,000 --> 00:15:33,000 També pot utilitzar els filtres i el material de recerca, 214 00:15:33,000 --> 00:15:37,000 però si hagués de mirar a través d'aquest arxiu línia per línia per línia, 215 00:15:37,000 --> 00:15:40,000 que li prendria molt de temps per trobar-lo. 216 00:15:40,000 --> 00:15:42,000 És una mica com en l'exemple d'agenda, també, on 217 00:15:42,000 --> 00:15:44,000 ningú mira a través d'una pàgina d'un llibre de telèfon al mateix temps. 218 00:15:44,000 --> 00:15:47,000 Típicament, l'obri a la meitat, 219 00:15:47,000 --> 00:15:50,000 o en el cas d'un lot de llibres i diccionaris de telèfon on 220 00:15:50,000 --> 00:15:54,000 en realitat s'han introduït a la primera lletra, 221 00:15:54,000 --> 00:16:01,000 li dóna la volta a la primera carta i obrir i començar a anar per allà. 222 00:16:01,000 --> 00:16:03,000 >> Recordar del seu nom de nou. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Igual que Sam va dir que el procés de recerca lineal que serà molt lent, 225 00:16:11,000 --> 00:16:15,000 i en el seu lloc amb la recerca binària, la manera com funciona és que 226 00:16:15,000 --> 00:16:21,000 cada vegada que anem a través d'una iteració del nostre algorisme de recerca, 227 00:16:21,000 --> 00:16:27,000 anem a dividir la llista en dues, essencialment, 228 00:16:27,000 --> 00:16:33,000 en dues llistes més petites. 229 00:16:33,000 --> 00:16:39,000 I després, en la següent iteració del bucle, ho anem a dividir de nou 230 00:16:39,000 --> 00:16:44,000 en altres llistes més petites. 231 00:16:44,000 --> 00:16:48,000 Com es pot veure, el problema es fa cada vegada més petit i més petit 232 00:16:48,000 --> 00:16:55,000 perquè guardem 1/2 descarti de la llista cada vegada. 233 00:16:55,000 --> 00:16:59,000 Com funciona això de descart? 234 00:16:59,000 --> 00:17:05,000 Així com un recordatori, el que farem si ens quedem un ordinador 235 00:17:05,000 --> 00:17:11,000 i estàvem, per exemple, la recerca per al número 5 a la llista 236 00:17:11,000 --> 00:17:15,000 és que es tria un nombre al centre. 237 00:17:15,000 --> 00:17:26,000 Al mig d'aquesta llista, ja que hi ha 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 números, 238 00:17:26,000 --> 00:17:32,000 ens agradaria escollir el nombre, ja sigui en la posició 4 o en la 5 ª posició, 239 00:17:32,000 --> 00:17:38,000 i que en diria el mitjà de la nostra llista. 240 00:17:38,000 --> 00:17:42,000 Trieu el nombre enmig. 241 00:17:42,000 --> 00:17:51,000 Llavors, igual que Sam va dir, anem a provar per veure si aquest nombre és igual 242 00:17:51,000 --> 00:17:59,000 al número que volem aconseguir o el nostre número desitjat. 243 00:17:59,000 --> 00:18:06,000 Si és igual, llavors l'hem trobat. Nosaltres vam guanyar. 244 00:18:06,000 --> 00:18:12,000 Si no és igual, llavors hi ha un parell de casos. 245 00:18:12,000 --> 00:18:15,000 Els dos casos són ja sigui el nombre ha de ser més gran que el nombre que està mirant, 246 00:18:15,000 --> 00:18:19,000 o és menor que. 247 00:18:19,000 --> 00:18:25,000 Si és major, ens movem cap a la dreta. 248 00:18:25,000 --> 00:18:33,000 I si és menys, ens movem cap a l'esquerra. 249 00:18:33,000 --> 00:18:41,000 I després repetir el procés de nou 250 00:18:41,000 --> 00:18:48,000 ja sigui en la meitat dreta o la meitat esquerra de la llista. 251 00:18:48,000 --> 00:18:51,000 >> El primer problema a la secció d'avui és esbrinar 252 00:18:51,000 --> 00:18:55,000 la manera com pot començar a expressar això en codi C. 253 00:18:55,000 --> 00:18:58,000 Tenim el pseudocodi aquí. 254 00:18:58,000 --> 00:19:04,000 El que anem a començar a fer és que em vaig a aixecar un nou espai, 255 00:19:04,000 --> 00:19:09,000 guardar aquesta revisió perquè tinguem aquestes notes per més endavant, 256 00:19:09,000 --> 00:19:20,000 anem a esborrar tot això, i després copiar i enganxar des del conjunt de problemes 257 00:19:20,000 --> 00:19:26,000 aquesta informació en els nostres espais, i espero que això no es trenca. 258 00:19:26,000 --> 00:19:28,000 Perfecte. 259 00:19:28,000 --> 00:19:33,000 Si vostès tot això, copiar i enganxar aquest codi en el nou espai, 260 00:19:33,000 --> 00:19:43,000 en un en blanc. 261 00:19:43,000 --> 00:19:47,000 Tractarem de Daniel. Si Donat aquest programa, funciona? 262 00:19:47,000 --> 00:19:49,000 >> No Què diu? 263 00:19:49,000 --> 00:19:53,000 Diu el control arriba al final de la no funció void. 264 00:19:53,000 --> 00:19:55,000 Sí, així que tractaré d'executar. 265 00:19:55,000 --> 00:19:59,000 Han vist això abans? Sap vostè el que això significa? 266 00:19:59,000 --> 00:20:01,000 Bé, anem a analitzar això una mica. 267 00:20:01,000 --> 00:20:10,000 És com dir a file.c en la línia 9, columna 1 tenim un error, com vostè ha dit, 268 00:20:10,000 --> 00:20:16,000 i es diu que està derivada de l'advertència d'error i l'advertència de tipus de retorn. 269 00:20:16,000 --> 00:20:18,000 Sembla que alguna cosa està passant amb el tipus de canvi, la qual cosa té sentit. 270 00:20:18,000 --> 00:20:21,000 Tenim una funció no nul · la, el que significa que tenim una funció 271 00:20:21,000 --> 00:20:24,000 que no tornarà buida. 272 00:20:24,000 --> 00:20:27,000 Una funció de buit és el que són aquestes: 273 00:20:27,000 --> 00:20:35,000 void foo (), i és nul perquè el tipus de retorn és nul, 274 00:20:35,000 --> 00:20:38,000 el que significa que si tinguéssim alguna cosa aquí 275 00:20:38,000 --> 00:20:45,000 com return 1, obtindríem un error del compilador per això. 276 00:20:45,000 --> 00:20:49,000 Però tenim una funció no nul · la. 277 00:20:49,000 --> 00:20:51,000 La nostra funció no nul · la en aquest cas és la nostra funció de recerca 278 00:20:51,000 --> 00:20:56,000 perquè té un tipus de retorn de bool. 279 00:20:56,000 --> 00:20:59,000 Quan es diu que el control arriba al final d'una funció no nul · la, 280 00:20:59,000 --> 00:21:02,000 és perquè la recerca no té una sentència return. 281 00:21:02,000 --> 00:21:04,000 No està tornant una mica de tipus bool. 282 00:21:04,000 --> 00:21:09,000 >> Podem arreglar això, i el que crec que vostès 283 00:21:09,000 --> 00:21:13,000 recerca ha de retornar per defecte? 284 00:21:13,000 --> 00:21:16,000 Quin ha de ser el valor de retorn per defecte de la recerca? 285 00:21:16,000 --> 00:21:19,000 Perquè això és el que podem fer al final. 286 00:21:19,000 --> 00:21:21,000 Charlotte, té vostè alguna-? 287 00:21:21,000 --> 00:21:23,000 ¿Vertader o fals? >> Veritable o fals. 288 00:21:23,000 --> 00:21:26,000 Quin? 289 00:21:26,000 --> 00:21:28,000 Fals. No. 290 00:21:28,000 --> 00:21:30,000 Fals? Anem a intentar-ho. 291 00:21:30,000 --> 00:21:32,000 Per què dius return false? Això és una gran intuïció. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] No ho sé. 293 00:21:35,000 --> 00:21:39,000 Anem a tornar falsa en aquest cas, perquè aquesta serà la nostra defecte 294 00:21:39,000 --> 00:21:44,000 Si per alguna raó la llista és buida o l'agulla 295 00:21:44,000 --> 00:21:46,000 que estem buscant no existeix. 296 00:21:46,000 --> 00:21:50,000 Després, al final, si no tornar true anteriorment en aquesta funció, 297 00:21:50,000 --> 00:21:55,000 sempre sabem que aquesta funció dirà No, no és a la matriu. 298 00:21:55,000 --> 00:21:58,000 No és al paller. 299 00:21:58,000 --> 00:22:03,000 Ara bé, si compilar i executar, em deixa guardar això perquè puguem estirar-lo cap amunt. 300 00:22:03,000 --> 00:22:08,000 Ara bé, si compilar i executar el nostre programa, que es basa. 301 00:22:08,000 --> 00:22:12,000 Vam aconseguir el nostre sistema poc. 302 00:22:12,000 --> 00:22:20,000 Si ho cop 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 No imprimiu res. Sembla que tot va acabar bé. 304 00:22:25,000 --> 00:22:35,000 Hem d'omplir aquest polz 305 00:22:35,000 --> 00:22:39,000 Parlem sobre l'algorisme en pseudocodi una mica enrere. 306 00:22:39,000 --> 00:22:44,000 Anem a veure, excepte això, 307 00:22:44,000 --> 00:22:49,000 i vaig a tirar d'aquest algorisme de nou. 308 00:22:49,000 --> 00:22:51,000 Anem a colpejar a aquest tipus. Nope. 309 00:22:51,000 --> 00:22:58,000 Aquí està. 310 00:22:58,000 --> 00:23:03,000 Com podem fer això? 311 00:23:03,000 --> 00:23:11,000 Quina seria una bona estratègia per iniciar la marxa aquest codi? 312 00:23:11,000 --> 00:23:16,000 Has de triar un número al centre. 313 00:23:16,000 --> 00:23:23,000 Com escollir un número al mig d'una matriu? 314 00:23:23,000 --> 00:23:25,000 Alguna suggeriment? 315 00:23:25,000 --> 00:23:27,000 [Estudiant] Strlen dividit per 2. 316 00:23:27,000 --> 00:23:32,000 Strlen dividit per 2. Això és un gran un. 317 00:23:32,000 --> 00:23:35,000 Strlen treballa amb tipus especials de matrius. 318 00:23:35,000 --> 00:23:38,000 Quin tipus d'arranjaments? 319 00:23:38,000 --> 00:23:44,000 Arranjaments de cordes, conjunts de caràcters. 320 00:23:44,000 --> 00:23:48,000 És el mateix tipus de concepte que volem aplicar, 321 00:23:48,000 --> 00:23:52,000 però no tenim suport per strlen perquè no tenim una gran varietat de personatges. 322 00:23:52,000 --> 00:23:55,000 Tenim una matriu d'enters. 323 00:23:55,000 --> 00:23:58,000 Però, què strlen aconseguir per a nosaltres? 324 00:23:58,000 --> 00:24:01,000 Sap el que li pot passar a nosaltres? 325 00:24:01,000 --> 00:24:03,000 [Estudiant] Strlen ens porta a la longitud. 326 00:24:03,000 --> 00:24:05,000 Exactament, ens porta a la longitud. 327 00:24:05,000 --> 00:24:09,000 Strlen obté la longitud de la matriu per a nosaltres. 328 00:24:09,000 --> 00:24:14,000 >> Com aconseguim que en el nostre programa de recerca binària? 329 00:24:14,000 --> 00:24:18,000 Com obtenir la longitud d'un array? 330 00:24:18,000 --> 00:24:20,000 [Estudiant] Strlen? 331 00:24:20,000 --> 00:24:25,000 Vostè pot obtenir la longitud d'una matriu de cadenes amb el format correcte C strlen. 332 00:24:25,000 --> 00:24:31,000 El problema, però, és que no tenim una matriu de cadenes. 333 00:24:31,000 --> 00:24:36,000 Si mirem cap enrere en aquest codi, tenim aquesta matriu d'enters. 334 00:24:36,000 --> 00:24:38,000 Com sabem quant temps és? 335 00:24:38,000 --> 00:24:44,000 [Estudiant] Hi ha un equivalent de punt final, com l int o alguna cosa així? 336 00:24:44,000 --> 00:24:49,000 Resulta que hi ha en realitat no ho és, i així, en certa manera, és aquesta 337 00:24:49,000 --> 00:24:52,000 una d'aquestes coses que és bo saber sobre C, 338 00:24:52,000 --> 00:24:57,000 que no hi ha manera d'obtenir la longitud d'una matriu 339 00:24:57,000 --> 00:24:59,000 si tot el que et donen és la matriu. 340 00:24:59,000 --> 00:25:02,000 La raó que funciona amb cadenes, la raó strlen obres, 341 00:25:02,000 --> 00:25:06,000 és perquè si una cadena té el format correcte, 342 00:25:06,000 --> 00:25:12,000 que tindrà aquest especial caràcter \ 0 al final. 343 00:25:12,000 --> 00:25:16,000 >> També es pot imaginar si vostè té una cadena amb format incorrecte 344 00:25:16,000 --> 00:25:20,000 i no hi ha caràcter \ 0 existeix, llavors la cosa no funciona. 345 00:25:20,000 --> 00:25:22,000 [Estudiant] Es pot afegir el \ 0? 346 00:25:22,000 --> 00:25:24,000 Podríem en aquest cas. 347 00:25:24,000 --> 00:25:29,000 Podríem afegir algun tipus de \ 0 348 00:25:29,000 --> 00:25:33,000 o algun tipus de significar personatge i després utilitzar això. 349 00:25:33,000 --> 00:25:36,000 Però això no funcionarà bastant 350 00:25:36,000 --> 00:25:40,000 perquè el 0 \ és per a un tipus char, 351 00:25:40,000 --> 00:25:43,000 i aquí tenim INT. 352 00:25:43,000 --> 00:25:46,000 L'altra cosa és que si haguéssim de utilitzar un valor especial 353 00:25:46,000 --> 00:25:49,000 com -1 per marcar el final d'una matriu 354 00:25:49,000 --> 00:25:54,000 llavors mai podria emmagatzemar un -1 en els nostres arrays sencers. 355 00:25:54,000 --> 00:25:56,000 Estaríem atrapats. 356 00:25:56,000 --> 00:26:00,000 Resulta que l'única manera d'aconseguir la longitud 357 00:26:00,000 --> 00:26:03,000 d'una matriu en C és en realitat el record 358 00:26:03,000 --> 00:26:08,000 quan el va crear i després passar per aquí amb la matriu 359 00:26:08,000 --> 00:26:14,000 de manera que cada vegada que tinc una funció que realitzarà algun treball 360 00:26:14,000 --> 00:26:18,000 en una matriu d'enters o flotadors o dobles, o el que sigui, 361 00:26:18,000 --> 00:26:22,000 També he de donar la funció de la longitud de la matriu, 362 00:26:22,000 --> 00:26:26,000 i això és exactament el que hem fet aquí a la funció de cerca. 363 00:26:26,000 --> 00:26:30,000 Si ens fixem, el que hem fet quan passem en la nostra àmplia aquí, 364 00:26:30,000 --> 00:26:36,000 també passem a la longitud, la mida. 365 00:26:36,000 --> 00:26:41,000 El que passa és que hem anomenat aquí aquesta variable, 366 00:26:41,000 --> 00:26:43,000 aquest paràmetre o argument. 367 00:26:43,000 --> 00:26:46,000 Això es coneix com a llista d'arguments d'una funció o una llista de paràmetres, 368 00:26:46,000 --> 00:26:51,000 i aquests també es diuen arguments o paràmetres. 369 00:26:51,000 --> 00:26:53,000 La gent utilitza termes diferents en moments diferents. 370 00:26:53,000 --> 00:26:55,000 Jo de vegades em intercanviar. 371 00:26:55,000 --> 00:27:00,000 El que passa és que aquesta variable aquí és un nom semblant 372 00:27:00,000 --> 00:27:03,000 a aquest # defineix aquí. 373 00:27:03,000 --> 00:27:06,000 Però no són la mateixa cosa. 374 00:27:06,000 --> 00:27:11,000 La capitalització és important. 375 00:27:11,000 --> 00:27:14,000 >> Si ens fixem en el que passa aquí, declarem 376 00:27:14,000 --> 00:27:18,000 nostra matriu int, que hem anomenat nombres. 377 00:27:18,000 --> 00:27:23,000 Ho hem donat el nostre mida, el que correspon al nostre # defineix a la part superior. 378 00:27:23,000 --> 00:27:27,000 Serà 8. 379 00:27:27,000 --> 00:27:35,000 I llavors va ser quan ens cridi a la nostra funció de recerca de sota, 380 00:27:35,000 --> 00:27:40,000 passem al número que voleu cercar, que hem sol · liciti, 381 00:27:40,000 --> 00:27:43,000 obtingut de l'usuari. 382 00:27:43,000 --> 00:27:46,000 Passem de la matriu, aquests nombres, 383 00:27:46,000 --> 00:27:51,000 i llavors també ha de passar en la grandària de la matriu, 384 00:27:51,000 --> 00:27:57,000 i després el valor de mida 8 s'emmagatzema 385 00:27:57,000 --> 00:28:01,000 o passat a aquest nombre enter mida variable anomenada. 386 00:28:01,000 --> 00:28:08,000 Tenim la mida de la matriu. 387 00:28:08,000 --> 00:28:11,000 Ara bé, si ens remuntem al que estàvem parlant abans, 388 00:28:11,000 --> 00:28:14,000 Crec Missy va portar a col · lació el punt que el que havíem de fer és aconseguir la longitud de la matriu 389 00:28:14,000 --> 00:28:20,000 i el divideix per 2, i que ens donarà el punt mitjà. 390 00:28:20,000 --> 00:28:22,000 Anem a veure. 391 00:28:22,000 --> 00:28:25,000 Puc tenir algú escriure això i ho guarda en el seu espai? 392 00:28:25,000 --> 00:28:27,000 Què hi ha de Leila? 393 00:28:27,000 --> 00:28:31,000 Puc haver d'escriure això en? 394 00:28:31,000 --> 00:28:35,000 Escriviu la primera línia on es pren la longitud de la matriu i obtenir el punt mig 395 00:28:35,000 --> 00:28:41,000 i emmagatzemar-lo en una variable nova. 396 00:28:41,000 --> 00:28:44,000 Et vaig a donar un parell de segons. Estàs llest? 397 00:28:44,000 --> 00:28:46,000 [Estudiant inaudible] 398 00:28:46,000 --> 00:28:50,000 És clar, podria haver es calcula el punt mitjà 399 00:28:50,000 --> 00:28:55,000 de la matriu paller dins la funció de cerca 400 00:28:55,000 --> 00:29:03,000 utilitzant la longitud de la matriu haystack, que és la variable de mida? 401 00:29:03,000 --> 00:29:08,000 No hi ha res complicat aquí. 402 00:29:08,000 --> 00:29:12,000 [Leila] Just mida / 2 i només 403 00:29:12,000 --> 00:29:17,000 I guardar, i premi el botó Desa per dalt aquí a la part superior, 404 00:29:17,000 --> 00:29:19,000 i anem a estirar-lo cap amunt. 405 00:29:19,000 --> 00:29:22,000 Perfecte. 406 00:29:22,000 --> 00:29:28,000 Aquí anem. Awesome. 407 00:29:28,000 --> 00:29:30,000 >> Com és, aquesta compilació? 408 00:29:30,000 --> 00:29:32,000 [Leila] No, ha de ser més alt. 409 00:29:32,000 --> 00:29:34,000 [Nate] Sí, i què hem de fer? 410 00:29:34,000 --> 00:29:36,000 [Leila] Com punt mitjà int o alguna cosa així. 411 00:29:36,000 --> 00:29:41,000 Awesome. Sí, farem això, int = punt mida mitjana. 412 00:29:41,000 --> 00:29:44,000 ¿Aquesta compilació? 413 00:29:44,000 --> 00:29:47,000 Anem a esborrar aquest comentari i treure'l del camí. 414 00:29:47,000 --> 00:29:50,000 El que no es compilarà sobre això? 415 00:29:50,000 --> 00:29:52,000 No estem fent res amb número sencer, 416 00:29:52,000 --> 00:29:55,000 així que hem d'imprimir o alguna cosa per l'estil. 417 00:29:55,000 --> 00:29:58,000 Sí, exactament. 418 00:29:58,000 --> 00:30:00,000 Tindrem una variable no utilitzada. 419 00:30:00,000 --> 00:30:02,000 Quina altra cosa no funcionarà això? 420 00:30:02,000 --> 00:30:06,000 Crec que va dir alguna cosa, Sam. Punt i coma. 421 00:30:06,000 --> 00:30:08,000 Sí, m'estic perdent els punts i comes. 422 00:30:08,000 --> 00:30:14,000 Serà una cosa constant durant tot el transcurs del termini. 423 00:30:14,000 --> 00:30:17,000 L'última cosa que faré és que vaig a posar una mica d'espai en blanc a banda i banda 424 00:30:17,000 --> 00:30:23,000 d'aquest operador aquí, ja que és típicament com ho fem 425 00:30:23,000 --> 00:30:26,000 d'acord amb la nostra guia d'estil. 426 00:30:26,000 --> 00:30:29,000 Tenim el punt mitjà de la nostra matriu. 427 00:30:29,000 --> 00:30:32,000 Ara bé, si recordem al nostre algorisme, 428 00:30:32,000 --> 00:30:37,000 el que va ser el segon pas que havíem de fer un cop tinguem el punt mig? 429 00:30:37,000 --> 00:30:42,000 [Estudiant] Si és major [inaudible]. 430 00:30:42,000 --> 00:30:48,000 Sí, per la qual cosa hem de fer algun tipus de comparació, i què estem comparant aquí? 431 00:30:48,000 --> 00:30:53,000 Vas dir que si és més gran que. Què hi ha en aquesta frase es refereix? 432 00:30:53,000 --> 00:30:57,000 El nombre que apareix, si és més gran que el punt mig, i després pujar a la matriu? 433 00:30:57,000 --> 00:31:05,000 Exactament el que el nombre que apareix quan nosaltres- 434 00:31:05,000 --> 00:31:10,000 L'agulla, de manera que estem comparant a l'agulla, 435 00:31:10,000 --> 00:31:12,000 i què estem comparant contra l'agulla? 436 00:31:12,000 --> 00:31:15,000 Com que l'agulla és el que estem buscant. 437 00:31:15,000 --> 00:31:18,000 Ho estem comparant per arribar al punt mitjà. 438 00:31:18,000 --> 00:31:21,000 >> Però té sentit per verificar 439 00:31:21,000 --> 00:31:27,000 si l'agulla del punt mitjà =? 440 00:31:27,000 --> 00:31:32,000 Això té sentit? 441 00:31:32,000 --> 00:31:35,000 Algú no està d'acord? 442 00:31:35,000 --> 00:31:40,000 Anem a donar-li una oportunitat, si (== agulla punt mitjà). 443 00:31:40,000 --> 00:31:42,000 [Estudiant] printf No el va trobar. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("L'hem trobat \ n"); 445 00:31:51,000 --> 00:31:56,000 En cas contrari-Vaig a començar a fer alguna cosa diferent aquí. 446 00:31:56,000 --> 00:32:00,000 Vaig a començar a posar claus al voltant de si les declaracions de tot el temps 447 00:32:00,000 --> 00:32:05,000 perquè si afegim més coses, llavors 448 00:32:05,000 --> 00:32:07,000 no obtenim els compiladors. 449 00:32:07,000 --> 00:32:09,000 Sí, Sam. Tens un punt. 450 00:32:09,000 --> 00:32:12,000 El problema és que el punt mig representa una posició en la matriu, 451 00:32:12,000 --> 00:32:15,000 però vostè pot aconseguir que representen el valor en aquesta posició de la matriu. 452 00:32:15,000 --> 00:32:17,000 Això és un gran punt. 453 00:32:17,000 --> 00:32:19,000 Tots sentir el que va dir Sam? 454 00:32:19,000 --> 00:32:22,000 Va dir que el punt mitjà com és 455 00:32:22,000 --> 00:32:28,000 representa només una posició en la matriu, però no és l'element real en la matriu. 456 00:32:28,000 --> 00:32:30,000 Si es pensa en el codi com està escrit en aquest moment, 457 00:32:30,000 --> 00:32:35,000 si ens fixem en aquesta sèrie aquí baix, que compta amb 8 elements en ella, 458 00:32:35,000 --> 00:32:39,000 Quin és el valor del punt mitjà estarà en aquesta funció? 459 00:32:39,000 --> 00:32:41,000 [Estudiant] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Si busquem el número 4 - 462 00:32:51,000 --> 00:32:54,000 i que només pot executar aquest codi i posar una cara trista aquí 463 00:32:54,000 --> 00:32:58,000 perquè no trobar-lo si executa aquest codi 464 00:32:58,000 --> 00:33:04,000 com està ara, pujar-lo, edifici, deixa desplaçar-se cap avall, 465 00:33:04,000 --> 00:33:09,000 i si busquem el número 4, 466 00:33:09,000 --> 00:33:18,000 que el trobem, però no arribem a aquest printf si. 467 00:33:18,000 --> 00:33:23,000 Una de les raons és que no ens tornarà true, 468 00:33:23,000 --> 00:33:26,000 però en realitat trobar el número 4? 469 00:33:26,000 --> 00:33:28,000 I Sam diu no. 470 00:33:28,000 --> 00:33:31,000 Què trobem? 471 00:33:31,000 --> 00:33:35,000 Realment trobat el punt mig, que si ens fixem en la matriu aquí baix, 472 00:33:35,000 --> 00:33:38,000 que serà l'element en l'índex 4 que estem veient, 473 00:33:38,000 --> 00:33:42,000 que té 23 anys. 474 00:33:42,000 --> 00:33:46,000 >> Com podem realment aconseguir aquest element en el punt mitjà 475 00:33:46,000 --> 00:33:48,000 i no només el propi punt mitjà? 476 00:33:48,000 --> 00:33:52,000 [Estudiant] Ens agradaria introduir caràcters o alguna cosa així? 477 00:33:52,000 --> 00:33:55,000 Què faria això, només per curiositat? 478 00:33:55,000 --> 00:33:57,000 Ens pots explicar una mica més? 479 00:33:57,000 --> 00:34:02,000 Cal transformar la posició en el nombre, 480 00:34:02,000 --> 00:34:05,000 pel que he de fer alguna connexió-Crec que és char, però no va poder ser. 481 00:34:05,000 --> 00:34:07,000 Sí, això és un bon punt. 482 00:34:07,000 --> 00:34:12,000 Hem estat fent un munt de llocs d'aquesta conversió en caràcters, aquests personatges, 483 00:34:12,000 --> 00:34:14,000 en els butlletins d'exercicis dues primeres. 484 00:34:14,000 --> 00:34:18,000 Resulta que aquí, això és gairebé similar a 485 00:34:18,000 --> 00:34:24,000 l'accés a la i-èsima caràcter dins d'una cadena, si això té sentit. 486 00:34:24,000 --> 00:34:30,000 Aquí volem accedir a l'element del punt mitjà. 487 00:34:30,000 --> 00:34:34,000 Com podem fer això? 488 00:34:34,000 --> 00:34:39,000 Kevin, ¿té vostè algun suggeriment de com podem fer això? 489 00:34:39,000 --> 00:34:44,000 Vostè podria fer paller, claudàtor obert, medi, tancat suport. 490 00:34:44,000 --> 00:34:46,000 Pots escriure això per a nosaltres? 491 00:34:46,000 --> 00:34:51,000 Guardi'l a aquí, i tirarem això. 492 00:34:51,000 --> 00:34:56,000 Estem pensant en aquesta línia 9, 493 00:34:56,000 --> 00:34:59,000 i ens estem adonant que no volem comparar l'agulla cap al punt mig, 494 00:34:59,000 --> 00:35:03,000 però en canvi, volem comparar l'agulla 495 00:35:03,000 --> 00:35:07,000 l'element en el punt mitjà lloc dins la nostra gamma paller. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Aquí anem. 498 00:35:12,000 --> 00:35:15,000 Sí, això es veu molt bé, si (== paller agulla [punt mig]). 499 00:35:15,000 --> 00:35:18,000 El trobem. 500 00:35:18,000 --> 00:35:22,000 Ara bé, si ens trobem de nou el codi-nosaltres una mica de bits 501 00:35:22,000 --> 00:35:26,000 compila, executa, i ara si ens fixem per a 4, 502 00:35:26,000 --> 00:35:30,000 no el troba perquè ara estem aconseguint realment el número 23. 503 00:35:30,000 --> 00:35:33,000 Estem rebent el valor de 23, i això és el que estem comparant al nostre agulla. 504 00:35:33,000 --> 00:35:35,000 Però això és bo. Això és un pas en la direcció correcta. 505 00:35:35,000 --> 00:35:37,000 >> Això és el que estem tractant de fer. 506 00:35:37,000 --> 00:35:40,000 No estem tractant de comparar l'agulla contra les posicions de la matriu 507 00:35:40,000 --> 00:35:44,000 sinó més aviat contra els elements reals en la matriu. 508 00:35:44,000 --> 00:35:49,000 Si mirem cap enrere de nou ara en el següent pas en el nostre algorisme, 509 00:35:49,000 --> 00:35:51,000 Quin és el següent pas? 510 00:35:51,000 --> 00:35:57,000 Leila ja ho va esmentar breument. 511 00:35:57,000 --> 00:36:00,000 [Estudiant] Reviseu per veure si és més o menys que i després decidir en quina direcció moure. 512 00:36:00,000 --> 00:36:03,000 [Nate] Sí, com ho faríem? 513 00:36:03,000 --> 00:36:07,000 Es pot posar en un cert I'Ll d'estalvi d'aquesta revisió, 514 00:36:07,000 --> 00:36:13,000 i després, si poses en algunes línies que faran això. 515 00:36:13,000 --> 00:36:15,000 Sí, Charlotte. >> Tinc una pregunta. 516 00:36:15,000 --> 00:36:19,000 No hauria de ser el punt mitjà - 1, perquè el primer és 517 00:36:19,000 --> 00:36:26,000 està indexat 0, així que si posem 4, això no és realment el personatge que estàs buscant? 518 00:36:26,000 --> 00:36:30,000 Sí, i l'altre problema que és- 519 00:36:30,000 --> 00:36:35,000 això és una gran captura, perquè el que acabarà passant possiblement 520 00:36:35,000 --> 00:36:42,000 si estem en moviment i no sempre ajustar inicialment? 521 00:36:42,000 --> 00:36:46,000 Suposo que el que podria acabar fent és tractar d'accedir a 522 00:36:46,000 --> 00:36:49,000 l'element en la posició 8 de la matriu, 523 00:36:49,000 --> 00:36:53,000 que en aquest cas no existeix. 524 00:36:53,000 --> 00:36:56,000 Estarem disposats a fer algun tipus de comptabilitat pel fet de 525 00:36:56,000 --> 00:36:59,000 que tenim una indexació zero. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Ho sento, em referia punt mitjà - 1 en els claudàtors. 527 00:37:05,000 --> 00:37:08,000 Podem fer això. 528 00:37:08,000 --> 00:37:10,000 Tornarem a aquest tema en una mica. 529 00:37:10,000 --> 00:37:13,000 Quan vam començar a arribar al bucle actual, 530 00:37:13,000 --> 00:37:16,000 que és quan realment va a veure això entren en joc. 531 00:37:16,000 --> 00:37:21,000 De moment, no podem fer això, però vostè és totalment correcte. 532 00:37:21,000 --> 00:37:28,000 Que la indexació de zero tindrà un efecte que cal explicar. 533 00:37:28,000 --> 00:37:30,000 Anem a veure. 534 00:37:30,000 --> 00:37:34,000 >> Com és la més gran que i menor que-? 535 00:37:34,000 --> 00:37:36,000 [Estudiant] tinc com fer el més gran que i menor que part. 536 00:37:36,000 --> 00:37:41,000 Jo no estava segur del que voleu imprimir si vostè troba que és menys de la meitat paller o superior. 537 00:37:41,000 --> 00:37:43,000 Aquí puc salvar el que he- 538 00:37:43,000 --> 00:37:47,000 [Nate] Sí, si guarda el que tens, i anem a estirar-lo cap amunt. 539 00:37:47,000 --> 00:37:49,000 Aquí anem. 540 00:37:49,000 --> 00:37:51,000 [Estudiant] I vaig posar signes d'interrogació per al que jo no sabia. 541 00:37:51,000 --> 00:37:54,000 [Nate] Això es veu molt bé. 542 00:37:54,000 --> 00:37:58,000 Aquí tenim signes d'interrogació perquè encara no sabem 543 00:37:58,000 --> 00:38:06,000 el que farem encara. 544 00:38:06,000 --> 00:38:12,000 Què volem fer-oops, tenim unes claus tots covards de nosaltres. 545 00:38:12,000 --> 00:38:15,000 Anem a corregir aquests aparells. 546 00:38:15,000 --> 00:38:19,000 Aquí anem. 547 00:38:19,000 --> 00:38:22,000 I així, què és el que volem fer, d'acord al nostre algorisme, 548 00:38:22,000 --> 00:38:27,000 si no trobem l'agulla? 549 00:38:27,000 --> 00:38:32,000 Diguem, en el cas que l'agulla és menys del que estem veient. Kevin. 550 00:38:32,000 --> 00:38:34,000 Cerca només a la meitat esquerra. 551 00:38:34,000 --> 00:38:40,000 Bé, llavors anem a posar un comentari aquí que diu "mira la meitat esquerra". 552 00:38:40,000 --> 00:38:46,000 I si l'agulla és més gran que la pallissa al punt mig, què és el que volem fer? 553 00:38:46,000 --> 00:38:48,000 [Estudiant] Llavors ens fixem en la meitat dreta. 554 00:38:48,000 --> 00:38:53,000 Mira la meitat dreta, "mira a mitges." 555 00:38:53,000 --> 00:38:58,000 No està malament. 556 00:38:58,000 --> 00:39:05,000 Bé, en aquest punt, les coses es veuen bastant bé. 557 00:39:05,000 --> 00:39:13,000 El problema amb el codi com està escrit és el que? 558 00:39:13,000 --> 00:39:15,000 [Estudiant] No té punts finals de les dues meitats. 559 00:39:15,000 --> 00:39:18,000 Cert, no tenim punts finals per les dues meitats. 560 00:39:18,000 --> 00:39:20,000 Així mateix, només es passarà per això una vegada. 561 00:39:20,000 --> 00:39:23,000 Només veurem un punt mitjà. 562 00:39:23,000 --> 00:39:27,000 O bé l'element hi és, o no ho és. 563 00:39:27,000 --> 00:39:34,000 Per completar això, haurem de fer algun tipus de repetició. 564 00:39:34,000 --> 00:39:39,000 Hem de seguir repetint fins que ens trobem que 565 00:39:39,000 --> 00:39:43,000 o bé l'element hi és perquè hem reduït i finalment el va trobar, 566 00:39:43,000 --> 00:39:46,000 o no hi és perquè hem buscat a través de totes les coses 567 00:39:46,000 --> 00:39:52,000 en les meitats corresponents de la matriu i es va trobar que no hi ha res a allà. 568 00:39:52,000 --> 00:39:56,000 >> Cada vegada que tenim aquesta repetició passant, què utilitzarem? 569 00:39:56,000 --> 00:39:58,000 [Estudiant] Un bucle. 570 00:39:58,000 --> 00:40:00,000 Una espècie de bucle. Sí 571 00:40:00,000 --> 00:40:03,000 [Estudiant] Podem fer un bucle do-while i en tinguin a fer això i després, mentre 572 00:40:03,000 --> 00:40:10,000 l'agulla no és igual, estic segur d'on anava amb això. 573 00:40:10,000 --> 00:40:18,000 Però una cosa així com fer que el temps que no és igual al valor que l'entrada de l'usuari. 574 00:40:18,000 --> 00:40:21,000 Sí, així que anem a veure, com podria escriure? 575 00:40:21,000 --> 00:40:23,000 Vostè ha dit que anem a utilitzar un bucle do-while. 576 00:40:23,000 --> 00:40:26,000 D'on ve el començament fer? 577 00:40:26,000 --> 00:40:33,000 [Estudiant] Immediatament després de la talla / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Bé, i què farem? 579 00:40:42,000 --> 00:40:44,000 Anem a omplir l'estona. 580 00:40:44,000 --> 00:40:46,000 Què farem? 581 00:40:46,000 --> 00:40:49,000 [Estudiant] No volem fer totes les coses que tenim a la part de si? 582 00:40:49,000 --> 00:40:52,000 [Nate] És tot això, genial. 583 00:40:52,000 --> 00:40:55,000 Copiar i enganxar. 584 00:40:55,000 --> 00:40:59,000 Oh, home. 585 00:40:59,000 --> 00:41:03,000 A veure si això funciona, si podem fitxa sobre això. 586 00:41:03,000 --> 00:41:08,000 Bella. 587 00:41:08,000 --> 00:41:16,000 Molt bé, i ens estalviem això perquè vostès ho tenen. 588 00:41:16,000 --> 00:41:21,000 Molt bé, i ho farem mentre- 589 00:41:21,000 --> 00:41:25,000 Quina va ser la condició mentre que buscaves? 590 00:41:25,000 --> 00:41:31,000 [Estudiant] Mentre que l'agulla no és igual, així com el signe d'exclamació. 591 00:41:31,000 --> 00:41:37,000 Però no estic segur del que és encara. 592 00:41:37,000 --> 00:41:39,000 [Nate] Sí, aquesta és una manera de fer-ho. 593 00:41:39,000 --> 00:41:41,000 Sam, tens algun comentari? 594 00:41:41,000 --> 00:41:43,000 [Sam] vaig recordar quan vaig veure els vídeos, 595 00:41:43,000 --> 00:41:48,000 Vaig prendre una captura de pantalla d'una de les semblant a quan vam fer el pseudocodi per a això, 596 00:41:48,000 --> 00:41:52,000 hi ha una certa relació entre MAX i MIN. 597 00:41:52,000 --> 00:41:58,000 Crec que va ser alguna cosa així com si el màxim és sempre menor que min. 598 00:41:58,000 --> 00:42:00,000 Ho tinc. 599 00:42:00,000 --> 00:42:04,000 [Sam] O com si Max no és menys minuts o alguna cosa així, 600 00:42:04,000 --> 00:42:06,000 perquè això significaria que ha buscat en tot. 601 00:42:06,000 --> 00:42:13,000 >> Sí, i què fa que soni com a màxim i mínim es refereix? 602 00:42:13,000 --> 00:42:16,000 [Sam] Valors sencers-que els que canviaran 603 00:42:16,000 --> 00:42:18,000 respecte al lloc on posem el punt mitjà. 604 00:42:18,000 --> 00:42:20,000 Exactament. 605 00:42:20,000 --> 00:42:24,000 [Sam] En aquest moment, serà [inaudible] calcular el màxim i el mínim. 606 00:42:24,000 --> 00:42:29,000 Punt mitjà és aquesta idea màx i min. 607 00:42:29,000 --> 00:42:35,000 Té sentit per a la gent? 608 00:42:35,000 --> 00:42:39,000 Si haguéssim de començar a veure com farem aquesta iteració, 609 00:42:39,000 --> 00:42:43,000 tens tota la raó que volem utilitzar algun tipus de do-while. 610 00:42:43,000 --> 00:42:49,000 Però suposo que si tenim en compte el que està passant en el lloc d'aquesta matriu 611 00:42:49,000 --> 00:42:53,000 i el que està passant en realitat-Vaig a escriure per aquí- 612 00:42:53,000 --> 00:42:58,000 en la iteració molt primer de recerca binària, tenim- 613 00:42:58,000 --> 00:43:05,000 Vaig a utilitzar B i E per indicar el començament. 614 00:43:05,000 --> 00:43:10,000 I després, al final de la nostra matriu. 615 00:43:10,000 --> 00:43:14,000 Sabem que l'inici és a les 4 per aquí, 616 00:43:14,000 --> 00:43:18,000 i sabem que la fi està a 108. 617 00:43:18,000 --> 00:43:23,000 Diguem que està buscant el número 15. 618 00:43:23,000 --> 00:43:27,000 La primera vegada que fem això, com hem vist anteriorment, 619 00:43:27,000 --> 00:43:30,000 el punt mitjà és o serà de 16 o 23 620 00:43:30,000 --> 00:43:34,000 depenent de com calcular les coses. 621 00:43:34,000 --> 00:43:37,000 Des uniformement divisòria en el medi ens donaria aquest espai 622 00:43:37,000 --> 00:43:42,000 entre 16 i 23, no es pot dividir uniformement 623 00:43:42,000 --> 00:43:47,000 o dividir i arribar a un punt mitjà veritable. 624 00:43:47,000 --> 00:43:49,000 Veurem als 16. 625 00:43:49,000 --> 00:43:55,000 Ens adonarem "Hey, 16> 15 que estem buscant". 626 00:43:55,000 --> 00:43:59,000 Per buscar llavors en la meitat esquerra de la matriu 627 00:43:59,000 --> 00:44:03,000 el que acabarem fent està rebutjant 628 00:44:03,000 --> 00:44:07,000 aquesta porció superior sencer 629 00:44:07,000 --> 00:44:16,000 i dir: "Bé, ara el nostre punt final estarà aquí." 630 00:44:16,000 --> 00:44:22,000 La següent iteració del nostre bucle, ara estem mirant aquest acord, 631 00:44:22,000 --> 00:44:25,000 efectivament haver descartat aquesta part perquè ara 632 00:44:25,000 --> 00:44:30,000 si ens està prenent el punt mitjà de la diferència entre el principi i la fi, 633 00:44:30,000 --> 00:44:34,000 trobem el nostre punt mitjà a ser 8, 634 00:44:34,000 --> 00:44:40,000 que després pot provar 8 per veure on es troba en relació amb el nombre que busquem, 635 00:44:40,000 --> 00:44:44,000 15, trobem que 15 és major, 636 00:44:44,000 --> 00:44:49,000 així que hem d'anar a la part dreta de la llista, 637 00:44:49,000 --> 00:44:51,000 que coneixem perquè som éssers humans, i ho podem veure. 638 00:44:51,000 --> 00:44:54,000 Sabem que la part dreta estarà on el trobem, 639 00:44:54,000 --> 00:45:01,000 però l'equip no ho sap, així que el que vaig a fer és que en realitat va a 640 00:45:01,000 --> 00:45:04,000 han aquesta puja, i ara el principi i la fi 641 00:45:04,000 --> 00:45:11,000 són el mateix lloc, de manera que el punt mitjà es converteix en l'únic número a la llista en aquest punt, 642 00:45:11,000 --> 00:45:16,000 que té 15 anys, i ho hem trobat. 643 00:45:16,000 --> 00:45:21,000 Això donar una mica de llum sobre on aquesta tota màx i min notació va, 644 00:45:21,000 --> 00:45:24,000 fer el seguiment dels punts finals de la matriu per tal d'esbrinar 645 00:45:24,000 --> 00:45:35,000 com reduir les coses? 646 00:45:35,000 --> 00:45:42,000 >> Què passaria si això no fos igual al 15 ara? 647 00:45:42,000 --> 00:45:52,000 Què passa si buscàvem 15 i, en canvi, aquest nombre també van ser 16? 648 00:45:52,000 --> 00:45:54,000 Dèiem: "Oh, és major. 649 00:45:54,000 --> 00:45:57,000 Volem anar de nou a l'esquerra. " 650 00:45:57,000 --> 00:46:01,000 I ens agradaria traslladar la nostra direcció cap a la dreta, 651 00:46:01,000 --> 00:46:06,000 moment en què tenim un punt final que seria contradictòria. 652 00:46:06,000 --> 00:46:09,000 No seria capaç de cercar qualsevol elements més 653 00:46:09,000 --> 00:46:13,000 perquè ara tenim el nostre punt final i el nostre punt de partida, 654 00:46:13,000 --> 00:46:16,000 nostre màx i min nostre, ara es va bolcar. 655 00:46:16,000 --> 00:46:23,000 Busquem a través de tota la matriu. No podem trobar res. 656 00:46:23,000 --> 00:46:27,000 Aquest és el punt en què ens agradaria dir: "Bé, anem a deixar aquest algorisme. 657 00:46:27,000 --> 00:46:34,000 No hem trobat res. Sabem que no és aquí. " 658 00:46:34,000 --> 00:46:36,000 Com va? 659 00:46:36,000 --> 00:46:40,000 [Estudiant] Com funciona exactament l'ordinador canviar el final? 660 00:46:40,000 --> 00:46:45,000 Com funciona el final abans d'acabar el principi? 661 00:46:45,000 --> 00:46:48,000 L'extrem acaba abans del començament 662 00:46:48,000 --> 00:46:54,000 a causa de les matemàtiques que farem cada vegada que fem això. 663 00:46:54,000 --> 00:47:00,000 La forma de canviar és que si ens fixem en la primera vegada que fem aquest canvi 664 00:47:00,000 --> 00:47:03,000 on tenim el començament i el final 4 a la 665 00:47:03,000 --> 00:47:13,000 tot el camí cap avall en 108 i el nostre punt mitjà, per exemple, en 16 - 666 00:47:13,000 --> 00:47:20,000 Vaig a tornar a zero el 15-si estem buscant als 15, 667 00:47:20,000 --> 00:47:25,000 sabíem que el que vam fer quan ens registrem el 16 i va veure que era major 668 00:47:25,000 --> 00:47:28,000 i volia descartar tota la part dreta de la llista, 669 00:47:28,000 --> 00:47:36,000 vam veure que el que volíem fer és moure aquest missatge aquí. 670 00:47:36,000 --> 00:47:44,000 Efectivament, el correu ens van canviar a un abans del punt mitjà. 671 00:47:44,000 --> 00:47:48,000 De la mateixa manera, quan vam fer aquesta iteració de l'algorisme 672 00:47:48,000 --> 00:47:51,000 i el punt mitjà era menys 8, 673 00:47:51,000 --> 00:47:55,000 trobem que 8 <15, així que volíem que ens canviessin la b 674 00:47:55,000 --> 00:48:00,000 1 passat el punt mitjà. 675 00:48:00,000 --> 00:48:07,000 Ara, el principi i el final són tots dos junts en aquest 15. 676 00:48:07,000 --> 00:48:10,000 >> Si haguéssim estat succeint a la recerca d'algun altre valor, no 15, 677 00:48:10,000 --> 00:48:14,000 o si aquest havia estat 15 en comptes de 16, 678 00:48:14,000 --> 00:48:20,000 hauríem trobat que el correu que voleu moure un abans del punt mitjà. 679 00:48:20,000 --> 00:48:33,000 Ara l'e estaria allà voltejat menys de la b. 680 00:48:33,000 --> 00:48:39,000 Anem a veure com podem realment arribar a codificar aquest algorisme. 681 00:48:39,000 --> 00:48:44,000 Sabem que volem tenir aquest càlcul del punt mitjà. 682 00:48:44,000 --> 00:48:48,000 Sabem també que volem per seguir el principi i el final de la matriu 683 00:48:48,000 --> 00:48:51,000 de la nostra gamma actual per poder entendre 684 00:48:51,000 --> 00:48:56,000 on aquesta meitat esquerra de la llista és i on la meitat dreta de la llista és. 685 00:48:56,000 --> 00:49:03,000 Fem el que sigui amb inici i fi, 686 00:49:03,000 --> 00:49:07,000 o podem anomenar min i max. 687 00:49:07,000 --> 00:49:10,000 Vaig a utilitzar començar i acabar aquest temps. 688 00:49:10,000 --> 00:49:15,000 Quan vam començar, si mirem cap enrere en el nostre exemple aquí baix, 689 00:49:15,000 --> 00:49:20,000 nostre principi es va establir al principi de la matriu, com una cosa natural. 690 00:49:20,000 --> 00:49:25,000 Què índex és això? El nostre s'ha de començar? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] Haystack [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Sí, així que vam poder igual a paller [0]. 694 00:49:37,000 --> 00:49:40,000 El problema, però, és que aquesta no ens dóna la posició del primer element. 695 00:49:40,000 --> 00:49:45,000 Això ens dóna l'índex del primer element o el valor real en què la primera posició. 696 00:49:45,000 --> 00:49:47,000 [Estudiant] Que es converteixi al 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Què farà és, bé, no farà cap conversió. 698 00:49:52,000 --> 00:49:56,000 El que farà és que emmagatzemarà un 4 en començar, 699 00:49:56,000 --> 00:49:59,000 i llavors serà difícil fer comparacions amb començar 700 00:49:59,000 --> 00:50:03,000 perquè begin durà a terme el valor de 4, 701 00:50:03,000 --> 00:50:06,000 que és el principi de la nostra matriu, 702 00:50:06,000 --> 00:50:08,000 però volem fer un seguiment dels índexs de la matriu 703 00:50:08,000 --> 00:50:11,000 en contraposició als valors. 704 00:50:11,000 --> 00:50:17,000 En realitat, farem servir un 0, per l'estil. 705 00:50:17,000 --> 00:50:20,000 Per al final de la matriu-Charlotte va portar això una mica abans. 706 00:50:20,000 --> 00:50:23,000 Aquí és on anem a prendre en compte la indexació zero. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, quin és el final de la matriu? 708 00:50:25,000 --> 00:50:28,000 Quin és l'índex de l'extrem? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Mida - 1. 710 00:50:30,000 --> 00:50:32,000 Sí, i ¿quina talla d'usar? 711 00:50:32,000 --> 00:50:35,000 ¿Hem d'utilitzar la mida de capital o de mida minúscul? 712 00:50:35,000 --> 00:50:37,000 Capital mida. 713 00:50:37,000 --> 00:50:42,000 En aquest cas, podríem utilitzar la mida de capital. 714 00:50:42,000 --> 00:50:45,000 Si volem que aquesta funció estigui portàtil 715 00:50:45,000 --> 00:50:48,000 i utilitzar aquesta funció en altres programes, 716 00:50:48,000 --> 00:50:50,000 de fet podem utilitzar la mida minúscules. 717 00:50:50,000 --> 00:50:52,000 És bo també. 718 00:50:52,000 --> 00:51:01,000 Però Charlotte és totalment correcte que volem tenir una mida - 1. 719 00:51:01,000 --> 00:51:03,000 En aquest punt 720 00:51:03,000 --> 00:51:05,000 [Estudiant] Com és que vostè pot utilitzar la mida majúscules? 721 00:51:05,000 --> 00:51:07,000 Com és que podem utilitzar majúscules mida? 722 00:51:07,000 --> 00:51:13,000 Resulta que aquests # defineix són molt, 723 00:51:13,000 --> 00:51:19,000 sota el capó, un text com buscar i reemplaçar, si això té sentit. 724 00:51:19,000 --> 00:51:24,000 Quan es compila el codi, la fase de preprocessament 725 00:51:24,000 --> 00:51:27,000 del compilador passa per l'arxiu, 726 00:51:27,000 --> 00:51:31,000 i busca per tot arreu que vostè ha escrit mida del capital, 727 00:51:31,000 --> 00:51:39,000 i reemplaça el text literalment, amb un 8, així com així. 728 00:51:39,000 --> 00:51:42,000 En aquest sentit, és molt diferent d'una variable. 729 00:51:42,000 --> 00:51:45,000 No ocupa espai a la memòria. 730 00:51:45,000 --> 00:51:52,000 És un truc Substitueix text simple. 731 00:51:52,000 --> 00:51:57,000 En aquest cas, utilitzarem la mida. 732 00:51:57,000 --> 00:52:01,000 Des d'aquí vull fer una mena de repetició, 733 00:52:01,000 --> 00:52:03,000 i estem en el camí correcte amb el nostre do-while. 734 00:52:03,000 --> 00:52:08,000 Volem fer alguna cosa fins que una condició no es compleix ja, 735 00:52:08,000 --> 00:52:12,000 i com hem vist anteriorment, vam veure que aquesta condició 736 00:52:12,000 --> 00:52:19,000 era en veritat que no volem que al final 737 00:52:19,000 --> 00:52:24,000 a ser menor que el començar. 738 00:52:24,000 --> 00:52:26,000 >> Aquesta és la nostra condició de parada. 739 00:52:26,000 --> 00:52:35,000 Si això passa, volem aturar i declarar com, "Hey, no hem trobat res". 740 00:52:35,000 --> 00:52:43,000 Per expressar això, es vol utilitzar algun tipus de bucle. 741 00:52:43,000 --> 00:52:49,000 En aquest cas, seria un bucle do-while, un bucle, un bucle while? 742 00:52:49,000 --> 00:52:51,000 Tenim un bucle do-while aquí. 743 00:52:51,000 --> 00:52:53,000 És que els agradi aquest enfocament? 744 00:52:53,000 --> 00:52:59,000 Creus que hauríem d'intentar un enfocament diferent? 745 00:52:59,000 --> 00:53:01,000 Kevin, alguna idea? 746 00:53:01,000 --> 00:53:06,000 Podríem tenir un bucle while perquè sabem màxim 747 00:53:06,000 --> 00:53:11,000 seria més gran que min en les maneres d'arrencada. 748 00:53:11,000 --> 00:53:14,000 Sí, així que no hi ha inicialització que ha de succeir. 749 00:53:14,000 --> 00:53:17,000 Els bucles do-while són grans quan s'ha de inicialitzar alguna cosa 750 00:53:17,000 --> 00:53:21,000 abans d'aquesta prova, mentre que aquí 751 00:53:21,000 --> 00:53:26,000 sabem que no anem a mantenir reinicialitzar tots dos comencen i acaben 752 00:53:26,000 --> 00:53:28,000 cada ronda del bucle. 753 00:53:28,000 --> 00:53:32,000 Sabem que volem iniciar, a continuació, comprovar la nostra condició. 754 00:53:32,000 --> 00:53:38,000 En aquest cas, en realitat anirà amb un bucle while simple. 755 00:53:38,000 --> 00:53:44,000 Resulta que do-while s'utilitzen amb poca freqüència. 756 00:53:44,000 --> 00:53:49,000 Un munt de llocs ni tan sols ensenyen què bucles while. 757 00:53:49,000 --> 00:53:53,000 Són bons per al maneig de dades de l'usuari, pel que hem vist a molts d'ells fins ara. 758 00:53:53,000 --> 00:53:59,000 Però normal i bucles while són molt més comuns. 759 00:53:59,000 --> 00:54:03,000 Resulta que aquesta condició com escrit 760 00:54:03,000 --> 00:54:09,000 realment no ens fan molt bé, i per què és això? 761 00:54:09,000 --> 00:54:11,000 Ho sento, no sé el seu nom. 762 00:54:11,000 --> 00:54:13,000 Sóc Jerry. >> Com? 763 00:54:13,000 --> 00:54:15,000 És B-O-R-O-I. 764 00:54:15,000 --> 00:54:18,000 Oh, està bé. 765 00:54:18,000 --> 00:54:23,000 Jo no et veig a la meva llista. 766 00:54:23,000 --> 00:54:26,000 Oh, és perquè-oh, això té sentit. 767 00:54:26,000 --> 00:54:31,000 Té una idea de per què aquest bucle while no funcioni com es pretén, 768 00:54:31,000 --> 00:54:38,000 tal com està escrita amb la condició? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Vols dir com vol que totes les coses després que al-? 770 00:54:43,000 --> 00:54:46,000 Sí, per la qual cosa hi ha una. 771 00:54:46,000 --> 00:54:49,000 Potser haguem de posar totes aquestes coses en el bucle while, que és totalment cert. 772 00:54:49,000 --> 00:54:55,000 L'altra cosa que és una mica més problemàtic, però, és que aquesta condició no funciona. 773 00:54:55,000 --> 00:54:57,000 [Estudiant] Ha de donar la volta. 774 00:54:57,000 --> 00:55:04,000 Bé, pel que aquesta condició no sempre serà així inicialment la manera com parlem d'això. 775 00:55:04,000 --> 00:55:08,000 Volem fer alguna cosa fins 00:55:13,000 però volem fer alguna cosa mentre 777 00:55:13,000 --> 00:55:21,000 començar final ≤. 778 00:55:21,000 --> 00:55:24,000 >> Cal invertir la lògica allà. 779 00:55:24,000 --> 00:55:27,000 Jo sóc culpable de fer aquests errors tot el temps. 780 00:55:27,000 --> 00:55:31,000 [Estudiant] Per què ha de ser menor o igual que? 781 00:55:31,000 --> 00:55:33,000 Perquè recordes el cas que arribem a 782 00:55:33,000 --> 00:55:36,000 on hi havia un sol element, i estàvem a baix, 783 00:55:36,000 --> 00:55:43,000 i ens quedem mirant només el 15 en el nostre array? 784 00:55:43,000 --> 00:55:47,000 I el nostre principi i la seva fi era el mateix element. 785 00:55:47,000 --> 00:55:50,000 Volem assegurar-nos que manejar aquest cas. 786 00:55:50,000 --> 00:55:54,000 Si féssim un dret menor que, 787 00:55:54,000 --> 00:55:58,000 que només seria capaç d'arribar a un arranjament de 2 elements. 788 00:55:58,000 --> 00:56:06,000 Quan arribem fins a l'últim element, si aquest fos el nostre element, que mai ho trobaria. 789 00:56:06,000 --> 00:56:10,000 Ara aquí, podem fer exactament com vostè deia. 790 00:56:10,000 --> 00:56:15,000 Podem començar plopping coses a la dreta en el medi del nostre bucle while. 791 00:56:15,000 --> 00:56:20,000 Podem plop en el nostre punt mitjà. 792 00:56:20,000 --> 00:56:24,000 Podem prendre tot això si les declaracions, 793 00:56:24,000 --> 00:56:30,000 treure'ls d'aquest bucle do-while, 794 00:56:30,000 --> 00:56:34,000 plop ells, 795 00:56:34,000 --> 00:56:39,000 netejar les coses una mica, 796 00:56:39,000 --> 00:56:48,000 i seguiré endavant i salvar aquesta revisió. 797 00:56:48,000 --> 00:56:53,000 I en aquest punt, estem bastant a prop. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Crec que també cal tenir punt mitjà int size = - 1/2. 800 00:56:58,000 --> 00:57:01,000 Tinc, mida - 1/2. 801 00:57:01,000 --> 00:57:05,000 Hi ha alguna cosa més que hem de canviar en aquesta línia? 802 00:57:05,000 --> 00:57:10,000 Aquest va ser un bon partit. 803 00:57:10,000 --> 00:57:14,000 >> Quina mida de fer-ho? Estem en constant canvi talla? 804 00:57:14,000 --> 00:57:17,000 Per tal de mantenir la línia d'aquest tipus, hem de canviar la mida. 805 00:57:17,000 --> 00:57:21,000 Hem de canviar la mida cada vegada que anem al voltant del bucle for. 806 00:57:21,000 --> 00:57:25,000 Però recordo quan anàvem a través del nostre exemple, només una mica abans, 807 00:57:25,000 --> 00:57:30,000 i vam tenir l'inici a les 4 808 00:57:30,000 --> 00:57:33,000 i al final tot el camí a 108? 809 00:57:33,000 --> 00:57:35,000 Com es calcula el punt mitjà? 810 00:57:35,000 --> 00:57:38,000 Estàvem fent servir la mida? 811 00:57:38,000 --> 00:57:40,000 O que estàvem utilitzant comencen i acaben en el seu lloc? 812 00:57:40,000 --> 00:57:42,000 És la diferència entre el final i el principi. 813 00:57:42,000 --> 00:57:50,000 Exactament, i exactament com he d'escriure que, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Només han - començar. 815 00:57:52,000 --> 00:57:55,000 No ha de fer el - 1 816 00:57:55,000 --> 00:57:58,000 perquè el - 1 s'ha inclòs al final i el començament ja. 817 00:57:58,000 --> 00:58:00,000 [Nate] Great, tens tota la raó. 818 00:58:00,000 --> 00:58:03,000 No hem de fer el - 1, ja que - 1 s'ha inclòs 819 00:58:03,000 --> 00:58:08,000 i representar quan inicialitzem la variable final. 820 00:58:08,000 --> 00:58:11,000 >> Hi ha alguna cosa més que hagi de fer sintàcticament tenir aquesta línia té sentit? 821 00:58:11,000 --> 00:58:13,000 [Estudiant] Més començar. >> Plus començar? 822 00:58:13,000 --> 00:58:15,000 [Estudiant] al final. 823 00:58:15,000 --> 00:58:20,000 Perquè es calcula únicament la meitat de la longitud. 824 00:58:20,000 --> 00:58:26,000 Cal afegir l'inici. 825 00:58:26,000 --> 00:58:31,000 [Nate] Què faria aquest càlcul per a nosaltres? 826 00:58:31,000 --> 00:58:35,000 Si pensem en la final d'aquesta primera iteració del bucle, 827 00:58:35,000 --> 00:58:40,000 final serà en l'índex de posició 7. 828 00:58:40,000 --> 00:58:43,000 Comenceu a la posició 0. 829 00:58:43,000 --> 00:58:47,000 Recorda que estem buscant, ja sigui per 830 00:58:47,000 --> 00:58:52,000 posició 3 o la posició 4. 831 00:58:52,000 --> 00:58:56,000 Si ens fixem en aquesta matemàtica, només per fer-ho una mica més tangible, 832 00:58:56,000 --> 00:59:02,000 posar alguns números aquí, tenim 7, 0, 833 00:59:02,000 --> 00:59:10,000 així 7 a 0, i després 2 / 834 00:59:10,000 --> 00:59:19,000 és 3 a la divisió entera, és a dir. 835 00:59:19,000 --> 00:59:26,000 Llavors hem d'afegir després de tornada a la nostra començar? 836 00:59:26,000 --> 00:59:28,000 No ho fem en aquest cas. 837 00:59:28,000 --> 00:59:31,000 A la primera iteració, estarà bé perquè begin és 0. 838 00:59:31,000 --> 00:59:36,000 Però a mesura que avancem, fem realment tot només té 839 00:59:36,000 --> 00:59:42,000 final - comença / 2. 840 00:59:42,000 --> 00:59:46,000 Hi ha un truc aquí un altre, i això és a dir, una de precedència. 841 00:59:46,000 --> 00:59:49,000 [Estudiant] Necessitem parèntesi? 842 00:59:49,000 --> 00:59:53,000 [Nate] Exactament, i això és perquè si no posem els parèntesis, 843 00:59:53,000 --> 00:59:58,000 llavors aquesta línia s'interpretaran en lloc 844 00:59:58,000 --> 01:00:09,000 com (final) - (iniciar / 2), que definitivament no volen. 845 01:00:09,000 --> 01:00:11,000 Compte amb les regles de precedència. 846 01:00:11,000 --> 01:00:15,000 [Estudiant] Per què no eliminar-la + començar? 847 01:00:15,000 --> 01:00:17,000 Per què no eliminar-la + començar? 848 01:00:17,000 --> 01:00:19,000 [Estudiant] Per què no és això? 849 01:00:19,000 --> 01:00:24,000 Per què seria +? 850 01:00:24,000 --> 01:00:26,000 Crec que tens raó. 851 01:00:26,000 --> 01:00:28,000 [Estudiant] Perquè és normal? 852 01:00:28,000 --> 01:00:31,000 [Nate] + Fi començar, tens tota la raó. 853 01:00:31,000 --> 01:00:34,000 Wow, estic totalment ficat la pota. Tens raó. 854 01:00:34,000 --> 01:00:39,000 Si estiguéssim fent el signe menys, ens agradaria afegir el començar cap a dins 855 01:00:39,000 --> 01:00:43,000 En aquest cas, és molt just que volem prendre la mitjana dels dos, 856 01:00:43,000 --> 01:00:45,000 de manera que les vull afegir, en lloc de restar-. 857 01:00:45,000 --> 01:00:49,000 [Estudiant] També funcionaria si hagués acabat - begin / 2 + de començar. 858 01:00:49,000 --> 01:00:55,000 Ho faria si ho fem-Crec que sí. 859 01:00:55,000 --> 01:01:00,000 >> Per exemple, si estiguéssim mirant a començar, 860 01:01:00,000 --> 01:01:04,000 i ho va canviar per aquí 861 01:01:04,000 --> 01:01:08,000 als 15. 862 01:01:08,000 --> 01:01:12,000 Ara comenci a la posició 2. 863 01:01:12,000 --> 01:01:15,000 End està en la posició 7. 864 01:01:15,000 --> 01:01:21,000 Si els restem, obtenim 5. 865 01:01:21,000 --> 01:01:24,000 Divideixi això per 2, obtenim 2. 866 01:01:24,000 --> 01:01:27,000 I després hi afegim 2 de nou, 867 01:01:27,000 --> 01:01:30,000 i que ens porta a la quarta posició, 868 01:01:30,000 --> 01:01:33,000 que és aquí, que és el punt mitjà. 869 01:01:33,000 --> 01:01:36,000 [Estudiant] Hem de tenir cura d'embolicar? 870 01:01:36,000 --> 01:01:39,000 En quin sentit hem de tenir cura d'embolicar? 871 01:01:39,000 --> 01:01:43,000 Si la suma o la diferència entre 872 01:01:43,000 --> 01:01:45,000 depenent de com ho fem no és un nombre parell. 873 01:01:45,000 --> 01:01:49,000 A continuació, l'equip es confon si quan és 2,5; 874 01:01:49,000 --> 01:01:52,000 Com es mou cap a l'esquerra o cap a la dreta per determinar quin és el punt mig? 875 01:01:52,000 --> 01:01:54,000 Ho tinc. 876 01:01:54,000 --> 01:01:56,000 Resulta que la divisió entera, 877 01:01:56,000 --> 01:01:59,000 no sempre obtenir aquests nombres en coma flotant. 878 01:01:59,000 --> 01:02:01,000 Mai obtenir el decimal. 879 01:02:01,000 --> 01:02:04,000 Està totalment descartat. 880 01:02:04,000 --> 01:02:08,000 Si vostè té un ordinador dividir dues variables int, 881 01:02:08,000 --> 01:02:11,000 i un és 7, i l'altre és 2, 882 01:02:11,000 --> 01:02:13,000 vostè no rebrà 3,5 com a resultat. 883 01:02:13,000 --> 01:02:16,000 S'obtindrà 3. 884 01:02:16,000 --> 01:02:19,000 La resta es descarta, pel que és efectivament l'arrodoniment 885 01:02:19,000 --> 01:02:24,000 no una ronda, sinó més aviat un pis, si vostès estan familiaritzats amb el de les matemàtiques, 886 01:02:24,000 --> 01:02:27,000 on descartar completament el decimal, 887 01:02:27,000 --> 01:02:31,000 i pel que està essencialment truncar la baixa fins a la 888 01:02:31,000 --> 01:02:33,000 posició general, al nombre enter més pròxim. 889 01:02:33,000 --> 01:02:38,000 [Estudiant] Però llavors això és un problema perquè si vostè té un conjunt de 7 elements 890 01:02:38,000 --> 01:02:43,000 a continuació, que automàticament pren l'element tercer del punt mig en lloc de la 4 ª. 891 01:02:43,000 --> 01:02:46,000 Què fem amb això? 892 01:02:46,000 --> 01:02:49,000 És problemàtic perquè si tinguéssim una matriu de 7, 893 01:02:49,000 --> 01:02:54,000 ho tornaria a escollir el tercer en lloc de la 4 ª. 894 01:02:54,000 --> 01:02:56,000 Podria explicar una mica més? 895 01:02:56,000 --> 01:02:59,000 [Estudiant] Perquè si vostè té 7 elements llavors el 4 º element 896 01:02:59,000 --> 01:03:04,000 seria el punt mig, no? 897 01:03:04,000 --> 01:03:07,000 Recordi que el seu comentari sobre ser zero indexat, però. 898 01:03:07,000 --> 01:03:10,000 [Estudiant] Sí, pel que en la posició 3. Aquest seria el punt mitjà. 899 01:03:10,000 --> 01:03:12,000 Si. 900 01:03:12,000 --> 01:03:16,000 Oh, està bé. Ja veig el que vols dir. 901 01:03:16,000 --> 01:03:19,000 És una mica estrany, ja que ens acostumem a aquesta noció de 902 01:03:19,000 --> 01:03:22,000 desfer-se de decimals. 903 01:03:22,000 --> 01:03:26,000 Això és un gran punt. 904 01:03:26,000 --> 01:03:30,000 Acabarem amb això. 905 01:03:30,000 --> 01:03:32,000 Hem calculat nostre punt mitjà. 906 01:03:32,000 --> 01:03:37,000 >> Estem provant per veure si la nostra agulla és igual al valor mitjà. 907 01:03:37,000 --> 01:03:41,000 Estem impressió que el trobem, però en realitat, què és el que volem fer en aquesta situació? 908 01:03:41,000 --> 01:03:46,000 Hem trobat, pel que volem deixar que la persona que truca sap que l'hem trobat. 909 01:03:46,000 --> 01:03:49,000 Tenim una funció que és una funció amb tipus booleà. 910 01:03:49,000 --> 01:03:54,000 La forma d'indicar a la persona que truca de la nostra funció que estem preparats per anar 911 01:03:54,000 --> 01:03:58,000 Se'ns diu, "Hey, això és cert." 912 01:03:58,000 --> 01:04:00,000 Com fem això, Kevin? 913 01:04:00,000 --> 01:04:02,000 Ets assentir amb el cap. >> [Kevin] Afegir return true. 914 01:04:02,000 --> 01:04:06,000 [Nate] Exactament, retorna true. 915 01:04:06,000 --> 01:04:12,000 Ara, si no és igual, com veiem la meitat esquerra? 916 01:04:12,000 --> 01:04:16,000 Alguna idea? 917 01:04:16,000 --> 01:04:18,000 Stella, alguna idea? 918 01:04:18,000 --> 01:04:21,000 Cal establir una nova posició per al final. 919 01:04:21,000 --> 01:04:23,000 Si. 920 01:04:23,000 --> 01:04:29,000 Així que hem de fer càrrec de la meitat - el final. 921 01:04:29,000 --> 01:04:33,000 Gran. 922 01:04:33,000 --> 01:04:36,000 Hem d'establir una nova posició per a la final 923 01:04:36,000 --> 01:04:38,000 per mirar la meitat esquerra. 924 01:04:38,000 --> 01:04:41,000 Això va ser el que parlem abans, on 925 01:04:41,000 --> 01:04:44,000 Segueixo tornant a aquest exemple. 926 01:04:44,000 --> 01:04:50,000 Aquest és el començament, i després he de al final tot el camí fins aquí. 927 01:04:50,000 --> 01:04:53,000 >> Un cop més, si estem buscant a 15, i el nostre punt mitjà és als 16 anys, 928 01:04:53,000 --> 01:04:56,000 i ens adonem, "Oops, 16 és major. 929 01:04:56,000 --> 01:04:59,000 Volem passar a la meitat esquerra ". 930 01:04:59,000 --> 01:05:02,000 A continuació, es traslladaria al final dels 15, 931 01:05:02,000 --> 01:05:06,000 i ho fem mitjançant l'adopció d'una distància des del punt mig 932 01:05:06,000 --> 01:05:09,000 i establint que, com el nostre nou final. 933 01:05:09,000 --> 01:05:12,000 De la mateixa manera, si volem mirar la meitat dreta, com ho fem? 934 01:05:12,000 --> 01:05:14,000 Té una idea? 935 01:05:14,000 --> 01:05:22,000 [Estudiant] Vostè acaba d'establir comencen a punt mitjà + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Great. 937 01:05:24,000 --> 01:05:29,000 I ara, en el cas que no trobem res, 938 01:05:29,000 --> 01:05:32,000 ha d'obtenir cures per a nosaltres? 939 01:05:32,000 --> 01:05:36,000 Daniel, ¿això et atesos per nosaltres? 940 01:05:36,000 --> 01:05:38,000 [Daniel] No 941 01:05:38,000 --> 01:05:40,000 [Nate] Si ho fem a través de tota la matriu i no trobem res, 942 01:05:40,000 --> 01:05:42,000 on seria aquest ésser atesos, o hem de cuidar d'ell? 943 01:05:42,000 --> 01:05:44,000 [Daniel] La condició de temps. 944 01:05:44,000 --> 01:05:48,000 [Nate] Sí, la condició de temps, exactament. 945 01:05:48,000 --> 01:05:51,000 Es farà càrrec d'anar a través de tota la matriu si no trobem res. 946 01:05:51,000 --> 01:05:53,000 Aquest bucle while acabarà. 947 01:05:53,000 --> 01:05:56,000 Mai he trobat amb aquesta condició, 948 01:05:56,000 --> 01:06:03,000 i podem tornar false. 949 01:06:03,000 --> 01:06:10,000 També pot deixar aquest cas aquí d'aquesta 950 01:06:10,000 --> 01:06:14,000 perquè si aquesta afirmació és vertadera si, 951 01:06:14,000 --> 01:06:16,000 i la nostra funció retornarà, 952 01:06:16,000 --> 01:06:21,000 així que bàsicament va a avortar aquesta funció en aquest moment 953 01:06:21,000 --> 01:06:24,000 quan tornem veritat. 954 01:06:24,000 --> 01:06:28,000 Però què passa amb aquesta estructura aquí? 955 01:06:28,000 --> 01:06:34,000 Això funciona del tot, o hi ha algun error lògic aquí? 956 01:06:34,000 --> 01:06:37,000 >> Hi ha alguna falla lògica en allà, amb la manera com està establert. 957 01:06:37,000 --> 01:06:40,000 Què podria ser? 958 01:06:40,000 --> 01:06:43,000 [Estudiant] Per què necessita el - i + 1 s? 959 01:06:43,000 --> 01:06:47,000 Que estableix la nostra àmplia per ser el nostre nou mitjà a l'esquerra i la meitat dreta. 960 01:06:47,000 --> 01:06:51,000 [Estudiant] Però per què no podria fer-ho sense el - i + 1s 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Podríem igual a la meitat? 962 01:06:53,000 --> 01:07:04,000 Quin podria ser problemàtic en això? 963 01:07:04,000 --> 01:07:08,000 [Estudiant] Suposo que és ineficient perquè vostè està comprovant un valor que ja s'ha comprovat. 964 01:07:08,000 --> 01:07:11,000 [Nate] Exactament, així que Sam és totalment correcte. 965 01:07:11,000 --> 01:07:15,000 Establint el final i l'inici igual al punt mitjà 966 01:07:15,000 --> 01:07:18,000 en lloc de - 1 i + 1 reflexivament, 967 01:07:18,000 --> 01:07:22,000 en algun moment en el futur anem a acabar fent el registre de la meitat altra vegada. 968 01:07:22,000 --> 01:07:26,000 [Estudiant] Vaig començar el conjunt de processadors, i després vaig tenir una cosa així 969 01:07:26,000 --> 01:07:30,000 on es va oblidar l'1 +, i es va quedar encallat en un bucle infinit. 970 01:07:30,000 --> 01:07:34,000 És clar, perquè en algun moment vostè mai va a aconseguir comencen i acaben 971 01:07:34,000 --> 01:07:39,000 a superposar en realitat. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Hi ha una falla més lògic, i és que aquest dubte ha de ser 974 01:07:44,000 --> 01:07:48,000 1 else if. 975 01:07:48,000 --> 01:07:55,000 Per què podria ser? 976 01:07:55,000 --> 01:07:59,000 >> La raó és que si no és una cosa-si et veig, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Sí, perquè s'està canviant el punt final. 978 01:08:02,000 --> 01:08:05,000 [Nate] Exactament. 979 01:08:05,000 --> 01:08:07,000 Estem canviant el punt final, 980 01:08:07,000 --> 01:08:12,000 i si s'escriu així-ens tornarem fer espais entre- 981 01:08:12,000 --> 01:08:14,000 es comprovarà aquest cas. 982 01:08:14,000 --> 01:08:18,000 Aquest cas, si té èxit, es cancel · larà de la funció. 983 01:08:18,000 --> 01:08:21,000 A continuació, es comprovarà aquest cas següent, 984 01:08:21,000 --> 01:08:24,000 i si té èxit, serà ajustar el punt final, 985 01:08:24,000 --> 01:08:28,000 i després seguirà en marxa i verificar aquest cas. 986 01:08:28,000 --> 01:08:31,000 Però en aquest punt, no volem que continuï xecs. 987 01:08:31,000 --> 01:08:35,000 Afortunadament, no hem restablir el punt mig aquí, 988 01:08:35,000 --> 01:08:39,000 i sabem que aquest cas no tindrà èxit. 989 01:08:39,000 --> 01:08:44,000 Però definitivament vol posar la cosa en si hi ha 990 01:08:44,000 --> 01:08:48,000 tot i que podria, en aquest cas 991 01:08:48,000 --> 01:08:52,000 ja que no està ajustant el punt mitjà, que faria una diferència? 992 01:08:52,000 --> 01:08:54,000 No, perquè aquests casos són tots exclusius. 993 01:08:54,000 --> 01:08:58,000 Un cop més, el meu mal. 994 01:08:58,000 --> 01:09:01,000 No, crec que necessita aquesta persona si. 995 01:09:01,000 --> 01:09:05,000 Podem donar-li una oportunitat i executar i veure què passa. 996 01:09:05,000 --> 01:09:08,000 Construcció, va ocórrer un error. 997 01:09:08,000 --> 01:09:12,000 És probablement perquè vaig deixar d'aquests by i aquí. 998 01:09:12,000 --> 01:09:14,000 M'agradaria saber més dels de dalt a la part superior? 999 01:09:14,000 --> 01:09:16,000 No ho sembla. 1000 01:09:16,000 --> 01:09:20,000 Ens allunyar la imatge, construir, 1001 01:09:20,000 --> 01:09:24,000 aquí va, així que ara si busquem per 15, 1002 01:09:24,000 --> 01:09:28,000 Sí 1003 01:09:28,000 --> 01:09:30,000 Permetin-me zoom in 1004 01:09:30,000 --> 01:09:33,000 15, sí. Podem tornar a executar-lo. 1005 01:09:33,000 --> 01:09:36,000 Càrrega de codi font, construcció, corrent. 1006 01:09:36,000 --> 01:09:41,000 Podem buscar per alguna cosa així com 13, 1007 01:09:41,000 --> 01:09:45,000 i no rebem res d'imprimir, de manera que no està trobant que per a nosaltres. 1008 01:09:45,000 --> 01:09:51,000 Això és genial, perquè no està en la nostra llista. 1009 01:09:51,000 --> 01:09:53,000 >> Ara estem fora de temps. 1010 01:09:53,000 --> 01:09:55,000 Això serà per a aquesta setmana. 1011 01:09:55,000 --> 01:10:00,000 Gràcies per acompanyar-nos i ens veiem més tard. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]