1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESOR: Entón, o calendario para esta semana, que moito non. 3 00:00:09,790 --> 00:00:12,801 Pero espero moito, moi útil e relevantes para vós esa semana. 4 00:00:12,801 --> 00:00:15,550 Pero nós imos gastar preto de 15, 20 minutos só falando rapidamente 5 00:00:15,550 --> 00:00:17,370 sobre a lista de enlace. 6 00:00:17,370 --> 00:00:19,694 Listas de enlaces van ser cuberto no quiz. 7 00:00:19,694 --> 00:00:22,610 Entón, talvez sería moi útil para aprender un pouco sobre o que é. 8 00:00:22,610 --> 00:00:25,210 >> Nós imos pasar a gran maioría da sección de hoxe 9 00:00:25,210 --> 00:00:27,640 pasando por riba cuestionario cero problemas prácticos. 10 00:00:27,640 --> 00:00:30,970 E entón nós imos gardar quizais 20, 30 minutos ao final para preguntas remanentes 11 00:00:30,970 --> 00:00:32,850 alguén ten. 12 00:00:32,850 --> 00:00:34,610 >> E, a continuación, o último cinco minutos, eu vou 13 00:00:34,610 --> 00:00:36,467 a darse unha bomba de discurso ao quiz. 14 00:00:36,467 --> 00:00:38,050 Todos vostedes caras queren estar aquí para iso. 15 00:00:38,050 --> 00:00:39,591 Porque vai ser un bo momento. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Todo ben, entón algúns materiais na lista de enlace. 18 00:00:49,230 --> 00:00:52,620 Como están normalmente é estruturada Ten o que se chama no, non? 19 00:00:52,620 --> 00:00:54,870 Ten isto chamadas nós, que son estruturas. 20 00:00:54,870 --> 00:00:57,360 Vou pasar por riba de como crear un nó no seguinte foto. 21 00:00:57,360 --> 00:01:00,680 Pero esencialmente todos conectados listas é son datos que 22 00:01:00,680 --> 00:01:03,340 foi amarre xuntos vía punteiros. 23 00:01:03,340 --> 00:01:09,110 >> E así a vantaxe que temos de usar unha lista ligada máis, 24 00:01:09,110 --> 00:01:11,280 quizais, como unha matriz, é o feito de que, nunha matriz 25 00:01:11,280 --> 00:01:15,000 precisa dun bloque contiguo de memoria todos no mesmo lugar, un 26 00:01:15,000 --> 00:01:16,870 despois do outro, para poder ter que. 27 00:01:16,870 --> 00:01:20,200 Tendo en conta que a lista ligada, podería teñen pequenos anacos aleatorios de memoria 28 00:01:20,200 --> 00:01:23,020 todo o seu ordenador amarre xuntos por punteiros. 29 00:01:23,020 --> 00:01:26,270 >> E, deste xeito poden acceder a información 30 00:01:26,270 --> 00:01:28,610 que vén un despois do outro, despois o outro 31 00:01:28,610 --> 00:01:32,720 sen necesidade de só un enorme anaco de memoria no seu ordenador en algún lugar. 32 00:01:32,720 --> 00:01:35,910 E por iso este é un dos principais razóns polas que usan lista de ligazóns. 33 00:01:35,910 --> 00:01:40,300 >> En segundo lugar, é moi fácil de dinamicamente cambiar o tamaño da lista de ligazóns porque na matriz, 34 00:01:40,300 --> 00:01:44,720 cando declarar unha matriz, ten un certo valor definido. 35 00:01:44,720 --> 00:01:47,340 Digamos que eu quería crear un conxunto de 10 números enteiros. 36 00:01:47,340 --> 00:01:49,970 Eu crear unha matriz de 10 enteiros, e é iso. 37 00:01:49,970 --> 00:01:50,580 É 10. 38 00:01:50,580 --> 00:01:52,038 Non sei o que facer despois diso. 39 00:01:52,038 --> 00:01:53,680 Se eu quixese facelo 11, non pode facelo. 40 00:01:53,680 --> 00:01:55,710 Se eu queira marcar 9, non pode facelo. 41 00:01:55,710 --> 00:01:59,910 >> Tendo en conta que, nunha lista de ligazóns, pode engadir e borrar e introducir onde quere. 42 00:01:59,910 --> 00:02:04,940 Pode redimensionar dinamicamente o estruturar aquí, a súa estrutura de datos. 43 00:02:04,940 --> 00:02:08,370 E iso nos dá unha morea máis flexibilidade engadida 44 00:02:08,370 --> 00:02:11,320 que normalmente non ten con matrices. 45 00:02:11,320 --> 00:02:15,210 >> Calquera confuso sobre a base estrutura de como unha lista de ligazóns é 46 00:02:15,210 --> 00:02:17,930 ou porque temos que usar un sobre unha matriz? 47 00:02:17,930 --> 00:02:20,330 Si, nós imos pasar por riba en detalle como realmente crear un. 48 00:02:20,330 --> 00:02:24,121 Pero esta é só unha especie de o sentido xeral agora. 49 00:02:24,121 --> 00:02:24,620 Legal. 50 00:02:24,620 --> 00:02:28,770 E así matrices son amarre xuntos desas encantadoras pequenas cousas 51 00:02:28,770 --> 00:02:29,960 chamados de nós. 52 00:02:29,960 --> 00:02:32,210 Todo o que un nodo é un tipo de estrutura. 53 00:02:32,210 --> 00:02:36,090 Teña en conta que, un struct é se quería para crear un determinado tipo de variable 54 00:02:36,090 --> 00:02:39,850 C en que xa non existir, vostede, como un programador, 55 00:02:39,850 --> 00:02:42,030 realmente crear iso só. 56 00:02:42,030 --> 00:02:46,540 >> E así, este tipo de datos estrutura é denominada no, 57 00:02:46,540 --> 00:02:50,770 de feito foi creado por nós, para que non existe dentro C por si só. 58 00:02:50,770 --> 00:02:53,150 E a forma que crear un é que ten 59 00:02:53,150 --> 00:02:57,170 a cabeceira de typedef struct, que informa o compilador que eu son 60 00:02:57,170 --> 00:02:59,640 a piques de crear un struct. 61 00:02:59,640 --> 00:03:00,830 >> Imos nomea-la "nó". 62 00:03:00,830 --> 00:03:03,350 E dentro imos para declarar unha variable en, 63 00:03:03,350 --> 00:03:05,060 que vai almacenar un valor. 64 00:03:05,060 --> 00:03:09,320 E entón nós tamén imos ter un punteiro chamado "next" 65 00:03:09,320 --> 00:03:12,090 que apunta ao seguinte nó na lista ligazón. 66 00:03:12,090 --> 00:03:14,730 E entón rematar este off por só repetindo nodo novo para 67 00:03:14,730 --> 00:03:17,490 o compilador sabe, OK iso é o fin da miña struct. 68 00:03:17,490 --> 00:03:22,540 >> E así, deste xeito, estamos especie de crear unha matriz pequena bonito 69 00:03:22,540 --> 00:03:25,450 tipo de cousas cun valor e cun punteiro. 70 00:03:25,450 --> 00:03:27,757 E pode liga-los todos xunto cos punteiros. 71 00:03:27,757 --> 00:03:30,090 Así que todos eles poden ser tipo amarre xuntos nunha cadea. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Legal. 74 00:03:34,162 --> 00:03:35,453 Podes escoitar que un pouco mellor? 75 00:03:35,453 --> 00:03:36,140 >> Audiencia: É. 76 00:03:36,140 --> 00:03:38,540 >> PROFESOR: Todo ben. 77 00:03:38,540 --> 00:03:44,280 Así, o xeito que, como podedes ver, unha lista de ligazóns típico é estruturado 78 00:03:44,280 --> 00:03:45,500 é que ten unha cabeza. 79 00:03:45,500 --> 00:03:49,460 Ten o valor de cabeza que non é sendo apuntada por calquera outro punteiro. 80 00:03:49,460 --> 00:03:53,177 Pero vai a apuntar, ou referencia outro nodo. 81 00:03:53,177 --> 00:03:56,510 O nodo despois vai referenciar o nó despois diso, e así por diante e así por diante 82 00:03:56,510 --> 00:03:59,170 ata que, finalmente, acadar o fin da súa lista de enlace. 83 00:03:59,170 --> 00:04:00,980 E só non vai ter un punteiro alí. 84 00:04:00,980 --> 00:04:04,659 >> E así, pensar como, nunha corrente, ou mesmo se algún de vós fixestes, eu non sei, 85 00:04:04,659 --> 00:04:06,450 como con froitas contornos cando era pequeno. 86 00:04:06,450 --> 00:04:08,590 Faría reunir los e usalos en torno do seu pescozo. 87 00:04:08,590 --> 00:04:09,840 Creo que é o mesmo. 88 00:04:09,840 --> 00:04:12,964 Tes esas pequenas cousas que pode encadear que apuntan a un 89 00:04:12,964 --> 00:04:15,291 despois, un despois do ela, e así por diante e así por diante 90 00:04:15,291 --> 00:04:17,040 ata que teña unha cadea dunha estrutura de datos 91 00:04:17,040 --> 00:04:21,190 que pode usar como sexa. 92 00:04:21,190 --> 00:04:27,370 >> Así, a forma que este fariamos tipicamente inserir ou eliminar 93 00:04:27,370 --> 00:04:30,020 calquera nodo dun enlace lista é moi diferente 94 00:04:30,020 --> 00:04:31,970 dependendo de onde ese nó é. 95 00:04:31,970 --> 00:04:34,880 Así, por exemplo, porque punteiros son sempre 96 00:04:34,880 --> 00:04:38,645 apuntando para un valor específico, cando eliminar ou inserir un nó, 97 00:04:38,645 --> 00:04:41,770 quere estar seguro de que o punteiro é todo apuntando para as cousas certas. 98 00:04:41,770 --> 00:04:46,200 >> Entón, se quería introducir potencialmente un novo nodo co valor dun 99 00:04:46,200 --> 00:04:48,379 dentro dun enlace clasificada lista, todos sabemos aquí 100 00:04:48,379 --> 00:04:51,170 a partir da imaxe que vai ir entre cabeza e dous, non? 101 00:04:51,170 --> 00:04:52,620 Porque encaixa ben alí. 102 00:04:52,620 --> 00:04:59,060 Pero o xeito no que nós faría iso é primeiro dereferencing o punteiro 103 00:04:59,060 --> 00:05:02,160 da cabeza e mandar que para un. 104 00:05:02,160 --> 00:05:05,040 >> Pero chegamos a un problema aquí. 105 00:05:05,040 --> 00:05:08,280 Calquera pode ver cal é o problema é si fósemos primeiro dereference 106 00:05:08,280 --> 00:05:10,090 o punteiro de cabeza a un? 107 00:05:10,090 --> 00:05:14,202 O problema pode nos atopamos se intentamos para engadir este á fronte da nosa matriz? 108 00:05:14,202 --> 00:05:15,409 >> Audiencia: [inaudível] 109 00:05:15,409 --> 00:05:16,200 Profesor: Exactamente. 110 00:05:16,200 --> 00:05:20,000 Polo tanto, temos aquí un punteiro que foi xa que apunta desde a cabeza ata dous. 111 00:05:20,000 --> 00:05:23,120 Pero se se librar dese punteiro, ten sinala-lo para un, 112 00:05:23,120 --> 00:05:26,500 agora temos ningunha idea onde ir para atopar dous. 113 00:05:26,500 --> 00:05:29,850 Porque, como dixen antes, ten un peza xigante de memoria no seu ordenador. 114 00:05:29,850 --> 00:05:31,860 Todos estes nodos podía ser intercaladas aleatoriamente 115 00:05:31,860 --> 00:05:33,350 en calquera lugar no seu ordenador. 116 00:05:33,350 --> 00:05:36,140 E non sabe como proceder para atopar isto. 117 00:05:36,140 --> 00:05:40,420 >> E por iso ten que ter punteiros apuntando para todo nós ao final. 118 00:05:40,420 --> 00:05:42,420 Ou ben se accidentalmente dereference un 119 00:05:42,420 --> 00:05:44,485 sen primeiro asignación un valor en primeiro lugar, é 120 00:05:44,485 --> 00:05:47,410 só vai perder todo despois. 121 00:05:47,410 --> 00:05:49,720 >> Entón, o que nós estamos indo a facer é, faría primeiro 122 00:05:49,720 --> 00:05:53,270 quere crear un punteiro en o no que quere inserir. 123 00:05:53,270 --> 00:05:55,270 Sinala-lo para onde quere inserir-lo para, 124 00:05:55,270 --> 00:05:59,410 e entón despois podería apuntar cabeza cara atrás a un. 125 00:05:59,410 --> 00:06:02,800 >> Isto ten sentido a todo o mundo aquí? 126 00:06:02,800 --> 00:06:03,346 Gran. 127 00:06:03,346 --> 00:06:04,720 Pense nisso como só como unha cadea. 128 00:06:04,720 --> 00:06:07,420 Se engade unha cadea, é unha especie de intuitivo 129 00:06:07,420 --> 00:06:10,742 como ía sobre como inserir iso. 130 00:06:10,742 --> 00:06:15,274 >> OK, de xeito que é realmente moi máis curto do que eu penso que sería, 131 00:06:15,274 --> 00:06:16,690 un discurso de cinco minutos sobre listas de enlaces. 132 00:06:16,690 --> 00:06:19,960 Só así vostedes teñen a idea básica do que o que é. 133 00:06:19,960 --> 00:06:23,580 >> Aquí temos o calendario para cuestionario cero. 134 00:06:23,580 --> 00:06:24,895 Non deixe que isto o intimide. 135 00:06:24,895 --> 00:06:26,270 Sei que é un monte de información. 136 00:06:26,270 --> 00:06:27,580 Parece moi asustado. 137 00:06:27,580 --> 00:06:33,130 É tamén unha chea de, I pensar, tipo CSC de termos. 138 00:06:33,130 --> 00:06:37,440 Cousas como cadeas hexadecimais, punteiros, alocações de memoria dinámica 139 00:06:37,440 --> 00:06:40,120 son termos que soan moi asustado. 140 00:06:40,120 --> 00:06:42,700 >> Pero nós estamos indo para rompe-las abaixo, facer algúns problemas de práctica 141 00:06:42,700 --> 00:06:44,980 para que todos está preparado para esta proba. 142 00:06:44,980 --> 00:06:47,104 Cantos de vostedes teñen xa comezou a estudar? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, vostedes probablemente quere para comezar a comezar 145 00:06:53,670 --> 00:06:56,480 sobre iso, porque a proba é mañá. 146 00:06:56,480 --> 00:06:58,739 Ou xoves para algúns de vós. 147 00:06:58,739 --> 00:07:01,030 É, polo que estamos indo a ir sobre algúns problemas prácticos. 148 00:07:01,030 --> 00:07:04,600 Se vós todos queren tomar unha folla de papel, un lapis. 149 00:07:04,600 --> 00:07:07,310 Nós imos só pasar o gran maioría da sección de hoxe 150 00:07:07,310 --> 00:07:11,590 pasando por riba algúns dos que entón vostedes teñen unha idea do que esperar no quiz. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> Aceptar. 153 00:07:16,890 --> 00:07:19,730 Un par de loxística detalles, así como, para calquera 154 00:07:19,730 --> 00:07:25,120 que non foi a de que enlace alí, se vai para cs50.yale.edu, na parte de diante 155 00:07:25,120 --> 00:07:28,566 Nesta páxina hai un enlace que di "sobre Quiz Cero". 156 00:07:28,566 --> 00:07:29,440 Ligazón leva ata alí. 157 00:07:29,440 --> 00:07:31,065 Se aínda non leu, le-o. 158 00:07:31,065 --> 00:07:34,470 Porque lle di realmente importante información sobre o quiz. 159 00:07:34,470 --> 00:07:37,410 >> Vou tirar esta fóra de que só porque, fisicamente, 160 00:07:37,410 --> 00:07:40,200 se vós non saben onde para ir, imos ter problemas. 161 00:07:40,200 --> 00:07:44,220 E por iso, se o seu pasado en termos con A de N, ir ao auditorio da escola de dereito. 162 00:07:44,220 --> 00:07:47,500 E se os seus últimos comeza con P a Z, ir Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 E iso só se aplica para persoas na sección de mércores. 164 00:07:50,240 --> 00:07:53,420 >> Se está tomando o quiz sobre Xoves, vai para SSS 114 165 00:07:53,420 --> 00:07:55,078 onde a súa charla normalmente é. 166 00:07:55,078 --> 00:07:55,953 Audiencia: [inaudível] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESOR O a Z, vai para ir ao auditorio Davies. 169 00:08:01,940 --> 00:08:03,273 Vou cambiar isto, certo? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, si, que acaba de fallar automaticamente. 172 00:08:09,698 --> 00:08:11,753 >> Oh yeah, iso é o que Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Si, meu mal. 175 00:08:16,030 --> 00:08:17,610 Si, O a Z, vai para ir Davies Auditorio. 176 00:08:17,610 --> 00:08:19,140 Vou corrixir isto xa que eu cargar. 177 00:08:19,140 --> 00:08:20,320 Si. 178 00:08:20,320 --> 00:08:22,160 >> E, a continuación, tamén algo importante á mente 179 00:08:22,160 --> 00:08:25,290 é que o mércores, se está oficialmente matriculados na sección mércores 180 00:08:25,290 --> 00:08:26,832 ten que tomar o seu exame o mércores. 181 00:08:26,832 --> 00:08:29,706 E se está matriculado en xoves, ten que tomar o seu exame xoves. 182 00:08:29,706 --> 00:08:31,000 E é durante o horario de clase. 183 00:08:31,000 --> 00:08:35,970 Onde, eu creo que é como 1:00 para 02:15 aos mércores e 2:30 - 03:45 184 00:08:35,970 --> 00:08:37,220 aos xoves. 185 00:08:37,220 --> 00:08:41,710 >> Se ten un conflitos irreconciliables, Desculpas de Dean son o único, 186 00:08:41,710 --> 00:08:43,030 por desgraza, podemos tomar. 187 00:08:43,030 --> 00:08:45,560 Porque tivemos un gran maioría das solicitudes 188 00:08:45,560 --> 00:08:47,970 cambiar de mércores para xoves. 189 00:08:47,970 --> 00:08:51,265 Que non pode honrar a menos temos unha proposta do Dean. 190 00:08:51,265 --> 00:08:52,650 >> Aceptar. 191 00:08:52,650 --> 00:08:57,000 Entón, antes de comezar a facer unha tanto dos problemas da práctica, 192 00:08:57,000 --> 00:09:00,540 Eu só vou pasar por riba Consellos útiles de Andy para o éxito. 193 00:09:00,540 --> 00:09:04,140 Vós, cando estuda, o que realmente quere practicar escribir código a man. 194 00:09:04,140 --> 00:09:07,050 A primeira vez que eu tomou un quiz CS, eu non tiña 195 00:09:07,050 --> 00:09:09,960 código escrito a man práctica antes e foi moi 196 00:09:09,960 --> 00:09:11,890 chocante en como era difícil. 197 00:09:11,890 --> 00:09:16,125 >> Cando vostedes non entrar no costume de escribir todo, 198 00:09:16,125 --> 00:09:20,260 ven moi claro, sendo capaz de ter completada automaticamente 199 00:09:20,260 --> 00:09:22,015 corchetes correo comas alí. 200 00:09:22,015 --> 00:09:23,890 Cando escribe para fóra a man, ás veces é 201 00:09:23,890 --> 00:09:27,100 moi, moi fácil esquecer un punto e coma, ou se esqueza de pechar un soporte, 202 00:09:27,100 --> 00:09:30,970 ou se esqueza de pechar dous puntos, ou algo así. 203 00:09:30,970 --> 00:09:34,322 >> Entón, cando escribir o código a man, é unha sensación moi diferente. 204 00:09:34,322 --> 00:09:37,280 Entón vostedes, cando se está a traballar a través de algúns dos problemas da práctica, 205 00:09:37,280 --> 00:09:38,904 sería bo para realmente practicar hoxe. 206 00:09:38,904 --> 00:09:41,770 Ou mañá, supoño, se está respondendo ao cuestionario o xoves. 207 00:09:41,770 --> 00:09:45,280 >> En segundo lugar, temos a última, como, val da práctica de oito anos 208 00:09:45,280 --> 00:09:47,070 quizzes liña. 209 00:09:47,070 --> 00:09:50,759 Cuestionario deste ano será, probablemente, moi, moi semellante a todos eles. 210 00:09:50,759 --> 00:09:51,800 Son todos moi semellantes. 211 00:09:51,800 --> 00:09:54,220 Vostede especie de entrar no estilo do tipo de preguntas 212 00:09:54,220 --> 00:09:57,250 que pedimos, o tipo de funcións que imos escribir-lo en, 213 00:09:57,250 --> 00:09:58,580 etcétera, etcétera. 214 00:09:58,580 --> 00:10:01,980 >> Polo tanto, tome os quizzes práctica, especialmente baixo restricións de tempo. 215 00:10:01,980 --> 00:10:05,390 75 minutos para facer a proba é non unha morea de espazo de tempo. 216 00:10:05,390 --> 00:10:07,254 É moi, moito tempo. 217 00:10:07,254 --> 00:10:09,670 E así vós realmente queren para asegurarse de que vostedes son 218 00:10:09,670 --> 00:10:11,990 o hábito de escribir código a man rapidamente. 219 00:10:11,990 --> 00:10:15,070 Porque non quere que o primeiro tempo de ver un quiz que a lonxitude 220 00:10:15,070 --> 00:10:16,560 estar no seu quiz. 221 00:10:16,560 --> 00:10:20,540 Vostedes realmente quere estar seguro que practica de antemán. 222 00:10:20,540 --> 00:10:24,550 >> En cuarto lugar, que pretende revisar o charla e sección de diapositivas. 223 00:10:24,550 --> 00:10:25,980 Non ten de memorizar cousas. 224 00:10:25,980 --> 00:10:30,430 En realidade, todo o mundo ten dereito a un unha folla de notas de papel branco, 225 00:10:30,430 --> 00:10:31,090 adiante e de atrás. 226 00:10:31,090 --> 00:10:32,920 Podedes escribir ou escribir. 227 00:10:32,920 --> 00:10:37,070 Se cre que ten que memorizar algo, poñelo nesa folla. 228 00:10:37,070 --> 00:10:40,810 >> Eu asegura que, non quere ser preso no medio dese cuestionario 229 00:10:40,810 --> 00:10:43,890 sendo así, oh si, cal é o tempo de execución deste tipo contra ese tipo. 230 00:10:43,890 --> 00:10:46,490 Basta colocar-lo para abaixo e copialo directamente da súa folla de nota. 231 00:10:46,490 --> 00:10:50,420 Entón pode realmente só usar a súa cerebro para pensar sobre os problemas 232 00:10:50,420 --> 00:10:52,190 en vez de ter que lembrar feitos. 233 00:10:52,190 --> 00:10:55,250 E así realmente aproveitar de calquera información de nicho 234 00:10:55,250 --> 00:11:00,140 Que pensas que necesita memorizar, plop-lo para abaixo na folla de avaliación. 235 00:11:00,140 --> 00:11:02,680 >> OK, dúbidas loxística sobre o quiz 236 00:11:02,680 --> 00:11:05,510 antes de comezar a algúns problemas do quiz practicar? 237 00:11:05,510 --> 00:11:06,416 Si? 238 00:11:06,416 --> 00:11:10,040 >> Audiencia: Non tiven a oportunidade mirar para o exame [inaudível] 239 00:11:10,040 --> 00:11:11,757 pero é o que vai ser aplicación na maior parte, 240 00:11:11,757 --> 00:11:14,090 ou se hai tamén vai ser, como, cuestións de coñecementos? 241 00:11:14,090 --> 00:11:14,940 >> PROFESOR: É moito. 242 00:11:14,940 --> 00:11:16,731 Así, o xeito que eu describiría o quiz 243 00:11:16,731 --> 00:11:18,810 é-- engada algúns problemas prácticos 244 00:11:18,810 --> 00:11:20,960 que puxei de todo cuestionarios. 245 00:11:20,960 --> 00:11:25,210 Pero vai ver que hai dous principais tipos de preguntas que van pedir-lle. 246 00:11:25,210 --> 00:11:28,750 >> Un deles é un detalle nivel moi baixo de cousas. 247 00:11:28,750 --> 00:11:31,720 Nós imos dar-lle un pequeno anaco de código e dicir, hai un erro aquí? 248 00:11:31,720 --> 00:11:33,110 O que sería a impresión aquí fóra? 249 00:11:33,110 --> 00:11:35,980 Que este código producir, etcétera. 250 00:11:35,980 --> 00:11:38,710 Entón Información detallada sobre o moi baixo nivel. 251 00:11:38,710 --> 00:11:42,700 >> E por outra banda, teremos moito alto nivel preguntas baseadas no coñecemento. 252 00:11:42,700 --> 00:11:45,190 Pode explicar o que o diferenza entre unha busca binaria 253 00:11:45,190 --> 00:11:46,148 e unha procura linear é? 254 00:11:46,148 --> 00:11:48,500 Por que queremos usar un sobre o outro? 255 00:11:48,500 --> 00:11:49,960 Quizais, o que é o GDB? 256 00:11:49,960 --> 00:11:51,560 Por que queremos usar GDB? 257 00:11:51,560 --> 00:11:54,590 Nivel máis alto, máis fundamental preguntas entendemento. 258 00:11:54,590 --> 00:11:58,240 Entón, vai ver unha mestura de os dous no seu quiz. 259 00:11:58,240 --> 00:12:01,462 >> Calquera outra cousa antes de nós ir directo para el? 260 00:12:01,462 --> 00:12:02,879 Aceptar. 261 00:12:02,879 --> 00:12:03,670 Audiencia: Máis un. 262 00:12:03,670 --> 00:12:04,030 PROFESOR: Oh, máis un. 263 00:12:04,030 --> 00:12:04,340 Desculpe. 264 00:12:04,340 --> 00:12:05,631 >> Audiencia: É, está todo ben. 265 00:12:05,631 --> 00:12:10,140 Entón está dicindo é 75 minutos moi curto, como é improbable 266 00:12:10,140 --> 00:12:11,640 que vai rematar? 267 00:12:11,640 --> 00:12:13,571 Ou, como, 75 minutos é o mesmo tempo 268 00:12:13,571 --> 00:12:15,700 como nós necesitariamos se fósemos apropiadamente preparado? 269 00:12:15,700 --> 00:12:17,450 PROFESOR: OK, entón o proba é un reto. 270 00:12:17,450 --> 00:12:19,550 É en definitiva un desafío. 271 00:12:19,550 --> 00:12:21,092 Vai atopar-se en curto tempo. 272 00:12:21,092 --> 00:12:24,341 Probablemente vai bater, como 10, 15 minutos para ir, e ser como, merda. 273 00:12:24,341 --> 00:12:25,520 Teño moito que facer. 274 00:12:25,520 --> 00:12:26,520 E iso é totalmente bo. 275 00:12:26,520 --> 00:12:28,740 Todo o mundo vai se sentir do mesmo xeito. 276 00:12:28,740 --> 00:12:31,074 >> Só ten que estar moi consciente do canto tempo ten. 277 00:12:31,074 --> 00:12:33,490 E é por iso que eu digo a vostede caras fan as probas de práctica. 278 00:12:33,490 --> 00:12:36,672 Porque realmente dá un gran sentido do que a proba vai ser así. 279 00:12:36,672 --> 00:12:39,130 Entón, se atopa-se ser capaz de rematar a práctica 280 00:12:39,130 --> 00:12:41,671 quizzes nunha boa cantidade de tempo, pode pasear-se ben, 281 00:12:41,671 --> 00:12:45,695 entón non terá un problema o mércores ou xoves. 282 00:12:45,695 --> 00:12:46,575 >> Legal. 283 00:12:46,575 --> 00:12:49,200 Entón, se todos wants-- creo a maioría das persoas teñen follas de papel 284 00:12:49,200 --> 00:12:49,810 fóra xa. 285 00:12:49,810 --> 00:12:52,604 Vou esencialmente só darlle exemplos de preguntas, 286 00:12:52,604 --> 00:12:54,520 dar a vostedes, tipo, un uns minutos para facelas. 287 00:12:54,520 --> 00:12:59,610 E nós falaremos sobre como unha clase o que as respostas a son. 288 00:12:59,610 --> 00:13:02,860 >> Polo tanto, este é un moi típica pregunta pronto imos 289 00:13:02,860 --> 00:13:06,720 preguntar-lle, só a conversión números entre bases distintas. 290 00:13:06,720 --> 00:13:09,070 Binarios, como podedes recall, é a base dous. 291 00:13:09,070 --> 00:13:12,470 Decimal é base 10, ou o que como o ser humano normalmente interpretar. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal é base 16, que é cero a través de nove así como da a F. 293 00:13:17,120 --> 00:13:19,990 >> Polo tanto, hai catro números Eu son pedindo a vostedes para converter aquí. 294 00:13:19,990 --> 00:13:23,909 Vou che dar gusto, de tres a catro minutos para pensar en como 295 00:13:23,909 --> 00:13:25,200 iríamos sobre como solucionar este. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> Audiencia: Temos permiso calculadoras? 298 00:13:35,710 --> 00:13:37,630 >> PROFESOR: Non vai Debe calculadoras, si. 299 00:13:37,630 --> 00:13:42,420 Creo que ademais de base, penso eu, é todos vostedes serán invitados a facer. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> E só entón eu medio que ten un sentido de cando todo o mundo está feito, ollar para arriba, 302 00:14:45,070 --> 00:14:47,429 onda, eu non sei, sorrir, ollar feliz se está feito. 303 00:14:47,429 --> 00:14:47,929 Si. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Quizais máis uns minutos. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, imos trae-lo. 308 00:18:29,600 --> 00:18:31,580 Vou co propósito de dar a vostedes menos tempo 309 00:18:31,580 --> 00:18:33,760 que probablemente precisa facer algúns destes problemas, 310 00:18:33,760 --> 00:18:37,124 simplemente porque quero estar seguro de que obtemos a través de unha chea de problemas. 311 00:18:37,124 --> 00:18:39,290 Non te preocupes se non ten a oportunidade de rematar. 312 00:18:39,290 --> 00:18:43,770 Totalmente OK, sempre que ten unha idea de como ir sobre iso. 313 00:18:43,770 --> 00:18:45,850 Entón, imos adiante e facer o primeiro. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Entón, primeiro, será que alguén quere me dicir en binario, o que cada un destes números 316 00:18:57,870 --> 00:19:00,484 representan en termos dos seus valores? 317 00:19:00,484 --> 00:19:01,250 Si? 318 00:19:01,250 --> 00:19:03,349 >> Audiencia: Dous ao potencia cero, 2-1. 319 00:19:03,349 --> 00:19:04,140 Profesor: Exactamente. 320 00:19:04,140 --> 00:19:04,640 So. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Correcto, entón tipicamente cando estamos na base 10 323 00:19:16,430 --> 00:19:20,580 todos estes representan son, como, 10 á base de cero, non? 324 00:19:20,580 --> 00:19:21,810 Iso é o lugar do seu un. 325 00:19:21,810 --> 00:19:24,520 Todo o seu lugar 10 do IS-IS 10 elevado á potencia dun. 326 00:19:24,520 --> 00:19:26,600 Lugar que é de 10 100 á potencia de dous. 327 00:19:26,600 --> 00:19:29,570 >> O que queira que está na base de vai que ver con exactamente o mesmo, 328 00:19:29,570 --> 00:19:31,480 só cunha base diferente. 329 00:19:31,480 --> 00:19:34,130 Entón binario, todo o que é é a base dous. 330 00:19:34,130 --> 00:19:37,110 Vas para converter todo o díxitos en dous para calquera poder 331 00:19:37,110 --> 00:19:38,190 dese díxito. 332 00:19:38,190 --> 00:19:41,450 E así, neste sentido, pode ter un xeito máis doado 333 00:19:41,450 --> 00:19:43,800 de poder engadir-se ou sumar todos os números en orde 334 00:19:43,800 --> 00:19:46,010 para converter en base 10. 335 00:19:46,010 --> 00:19:50,362 >> Entón, alguén quere me dicir o que o resposta á primeira é na base dez? 336 00:19:50,362 --> 00:19:51,674 >> Audiencia: Dous, [inaudível] 337 00:19:51,674 --> 00:19:52,340 PROFESOR: Yeah. 338 00:19:52,340 --> 00:19:53,230 Audiencia: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESOR: 42, alí vai. 340 00:19:56,560 --> 00:20:00,660 Así, a forma que temos esta resposta foi de facendo dous a primeira, que é dous. 341 00:20:00,660 --> 00:20:02,760 Dous terceiro, que é oito. 342 00:20:02,760 --> 00:20:07,590 Ademais, dous para o quinto, o que é o que sobra. 343 00:20:07,590 --> 00:20:09,390 Vostede resumín los e é 42. 344 00:20:09,390 --> 00:20:12,000 >> Alguén está confuso sobre como temos que? 345 00:20:12,000 --> 00:20:15,630 Así adición de base, como Dixen, ten que estar OK. 346 00:20:15,630 --> 00:20:17,410 Se non, así, podemos practicar iso tamén. 347 00:20:17,410 --> 00:20:18,720 Pero está todo ben. 348 00:20:18,720 --> 00:20:20,560 Legal. 349 00:20:20,560 --> 00:20:25,570 >> Alguén quere me dar o responder á segunda tamén? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Bo. 352 00:20:27,600 --> 00:20:30,044 Calquera confuso sobre como temos que quere? 353 00:20:30,044 --> 00:20:31,960 Cool, eu vou ter a respostas sobre o seguinte diapositiva. 354 00:20:31,960 --> 00:20:34,440 Non te preocupes se Debe copia-lo para abaixo. 355 00:20:34,440 --> 00:20:38,860 >> OK, entón hexadecimal é un pouco máis complicado. 356 00:20:38,860 --> 00:20:41,840 pero eu vou amosar para vós un atallo para saber como facelo. 357 00:20:41,840 --> 00:20:44,800 Entón hexadecimal, como lembre, todo o que é ter 16 anos. 358 00:20:44,800 --> 00:20:48,920 E por nós, como seres humanos en realidade non ten 16 números para representar que, 359 00:20:48,920 --> 00:20:56,940 nós ir de cero a nove, que o noso primeiro 10 valores, e entón nós facemos A a F, 360 00:20:56,940 --> 00:20:58,630 que son os próximos seis valores. 361 00:20:58,630 --> 00:21:03,040 >> E así, o xeito máis doado de ir de calquera número binario en hexadecimal 362 00:21:03,040 --> 00:21:05,350 é división las en metades. 363 00:21:05,350 --> 00:21:10,042 E así calquera número binario imos dar- probablemente vai ter oito díxitos. 364 00:21:10,042 --> 00:21:11,750 Pode simplemente romper Los no medio. 365 00:21:11,750 --> 00:21:17,460 >> Así, o primeiro um-- un un, un un, un, un, un un. 366 00:21:17,460 --> 00:21:21,340 Kind of creo que, vostede sabe, debuxe unha barra ou unha coma entre eles. 367 00:21:21,340 --> 00:21:23,800 E pode só converter directamente o que quere 368 00:21:23,800 --> 00:21:26,670 este é o primeiro número de hexadecimal, 369 00:21:26,670 --> 00:21:29,880 e todo o que aquí é a o segundo de hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Entón lembre de notación común, o que valores hexadecimais comezar? 371 00:21:37,584 --> 00:21:38,460 >> Audiencia: Cero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESOR: 0 X. 373 00:21:39,270 --> 00:21:45,210 Entón, nós sabemos que en calquera momento pedímoslle para converter calquera número para hexadecimal, 374 00:21:45,210 --> 00:21:48,230 ou cando ves calquera número que comeza con 0 X, 375 00:21:48,230 --> 00:21:50,230 vostede sabe que é un valor hexadecimal. 376 00:21:50,230 --> 00:21:54,160 >> E entón vai ser invitado a determinar o que estes dous díxitos son. 377 00:21:54,160 --> 00:21:59,690 E a forma de facelo, calculando que a metade e calculando que a metade. 378 00:21:59,690 --> 00:22:02,870 Así, neste exemplo, o sería un, un, un, un ser? 379 00:22:02,870 --> 00:22:04,890 Que o valor que sería iso? 380 00:22:04,890 --> 00:22:06,040 Iso sería F, non? 381 00:22:06,040 --> 00:22:08,050 Iso sería 15. 382 00:22:08,050 --> 00:22:11,780 >> Polo tanto, este sería F. One, un, un, un aquí tamén é 383 00:22:11,780 --> 00:22:21,270 F. Polo tanto, un, un, un, un, un, un, un, un en hexadecimal, todo isto é 0xFF. 384 00:22:21,270 --> 00:22:25,350 Por mor desa metade representada F, o valor de 15, 385 00:22:25,350 --> 00:22:27,331 e esa metade representada F, o valor 15. 386 00:22:27,331 --> 00:22:29,456 Porque lembre, estamos contador de cero a nove. 387 00:22:29,456 --> 00:22:35,290 Un é como 10, B é como 11, F é 15. 388 00:22:35,290 --> 00:22:41,690 >> Isto ten sentido para todo o mundo como temos de binario para hexadecimal? 389 00:22:41,690 --> 00:22:44,595 >> Audiencia: E así como chegamos 15 dende o un, un, un, un? 390 00:22:44,595 --> 00:22:46,220 PROFESOR: Si, este é binario, non? 391 00:22:46,220 --> 00:22:48,090 Imaxina isto é só un número binario. 392 00:22:48,090 --> 00:22:50,792 Entón tes dous ao orde cero, que é un. 393 00:22:50,792 --> 00:22:51,500 Audiencia: Oh, Aceptar. 394 00:22:51,500 --> 00:22:51,670 Entón só suman-lo. 395 00:22:51,670 --> 00:22:52,670 >> PROFESOR: Si, e logo só totais que fora. 396 00:22:52,670 --> 00:22:53,380 Isto é todo o que é. 397 00:22:53,380 --> 00:22:54,890 >> Audiencia: Aceptar. 398 00:22:54,890 --> 00:22:55,830 >> PROFESOR: Aceptar. 399 00:22:55,830 --> 00:23:00,740 >> Audiencia: Entón vai de par en decimal para hexadecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESOR: Esta é a xeito máis doado de facelo, si. 401 00:23:04,590 --> 00:23:11,390 Non vai a decimal porque decimal só ten cero a nove. 402 00:23:11,390 --> 00:23:13,410 Somos só unha especie de dividir iso en dúas. 403 00:23:13,410 --> 00:23:15,201 >> Audiencia: [inaudível] usando decimal para atopar 404 00:23:15,201 --> 00:23:17,809 o que corresponde ata en hexadecimal. 405 00:23:17,809 --> 00:23:20,100 PROFESOR: Eu quero dicir, é calculando usando matemática básica. 406 00:23:20,100 --> 00:23:20,725 Audiencia: É. 407 00:23:20,725 --> 00:23:22,300 PROFESOR: Si, moi ben. 408 00:23:22,300 --> 00:23:23,630 É un pouco confuso. 409 00:23:23,630 --> 00:23:26,410 Pero só sei que pode dividir o que quere 410 00:23:26,410 --> 00:23:28,160 este valor é en só metades. 411 00:23:28,160 --> 00:23:29,570 Mira, o que é isto en binario? 412 00:23:29,570 --> 00:23:30,610 Que número é ese? 413 00:23:30,610 --> 00:23:33,270 Será algo de cero a F. 414 00:23:33,270 --> 00:23:35,722 >> Aquí tamén será algo de cero a F. 415 00:23:35,722 --> 00:23:37,722 E entón pode simplemente poñer aqueles dous alí mesmo. 416 00:23:37,722 --> 00:23:38,263 >> Audiencia: Aceptar. 417 00:23:38,263 --> 00:23:38,910 PROFESOR: Yep. 418 00:23:38,910 --> 00:23:39,410 Aceptar. 419 00:23:39,410 --> 00:23:42,320 Entón vostedes queren proba o seguinte, entón? 420 00:23:42,320 --> 00:23:49,601 Cero, un, cero un, un, cero, un cero. 421 00:23:49,601 --> 00:23:52,350 Vou dar a vostedes como 30 segundos, sempre que probablemente non sabía 422 00:23:52,350 --> 00:23:53,850 o truco para como facelo antes. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, ninguén quere recibir un agasallo un tiro? 425 00:24:27,381 --> 00:24:28,774 >> 0x5A. 426 00:24:28,774 --> 00:24:29,440 PROFESOR: 0x5A. 427 00:24:29,440 --> 00:24:30,470 5-A. 428 00:24:30,470 --> 00:24:31,340 Bo. 429 00:24:31,340 --> 00:24:37,050 Entón, iso aquí sería ser-- quere para dicir como conseguiu iso? 430 00:24:37,050 --> 00:24:38,920 En primeiro lugar, como chegou a cinco? 431 00:24:38,920 --> 00:24:42,030 >> Audiencia: Por cero, un, cero, é un de cinco. 432 00:24:42,030 --> 00:24:45,170 >> PROFESOR: Será que todos comprendan por iso que cero, un, cero, un é cinco? 433 00:24:45,170 --> 00:24:46,260 Ten un aquí. 434 00:24:46,260 --> 00:24:48,010 Non ten nada en dous para a primeira. 435 00:24:48,010 --> 00:24:50,300 En dous para o segundo, ten un, que é catro. 436 00:24:50,300 --> 00:24:52,600 Entón engade o catro máis a un, ten cinco. 437 00:24:52,600 --> 00:24:53,600 Todo o mundo é bo? 438 00:24:53,600 --> 00:24:54,100 Aceptar. 439 00:24:54,100 --> 00:24:56,570 E entón o que este sería e por que? 440 00:24:56,570 --> 00:24:58,350 O que fai un número corresponden a? 441 00:24:58,350 --> 00:24:59,350 >> Audiencia: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESOR: E o que esta na base de dous? 443 00:25:00,976 --> 00:25:01,850 Audiencia: [inaudível] 444 00:25:01,850 --> 00:25:03,010 Profesor: Exactamente. 445 00:25:03,010 --> 00:25:06,370 Polo tanto, este segundo valor aquí sería 0x5A. 446 00:25:06,370 --> 00:25:08,410 >> Todos bo de como converter? 447 00:25:08,410 --> 00:25:10,770 É moito máis sinxelo do que pensa que é. 448 00:25:10,770 --> 00:25:13,330 Eu só quero estar seguro sabe consellos útiles 449 00:25:13,330 --> 00:25:14,950 e trucos de como facelo. 450 00:25:14,950 --> 00:25:18,432 >> Audiencia: Por que só dividir Lo no medio así? 451 00:25:18,432 --> 00:25:21,390 Só ten que ser como, OK, eu estou indo só para se preocupan estes primeiros [inaudível]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESOR: Por que é realmente o xeito valores hexadecimais son representados. 453 00:25:24,240 --> 00:25:26,890 0 X, o que significa, en realidade, máis que dicirlle 454 00:25:26,890 --> 00:25:28,710 que é un número hexadecimal. 455 00:25:28,710 --> 00:25:31,580 E iso representa sempre os catro primeiros díxitos. 456 00:25:31,580 --> 00:25:34,330 E iso representa sempre os catro últimos díxitos. 457 00:25:34,330 --> 00:25:37,835 E así estes dous díxitos só corresponden a diferentes anacos. 458 00:25:37,835 --> 00:25:39,200 >> Audiencia: Entón imos always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESOR: Está sempre se ve oito bits de valor. 460 00:25:41,830 --> 00:25:44,580 >> Audiencia: É que só desexa unha cousa aquí é que unha cousa de novo? 461 00:25:44,580 --> 00:25:46,883 PROFESOR: Isto é só un cousa en ordenadores, si. 462 00:25:46,883 --> 00:25:47,424 Audiencia: Aceptar. 463 00:25:47,424 --> 00:25:48,240 Impresionante. 464 00:25:48,240 --> 00:25:51,290 >> PROFESOR: Tamén, polo tanto, neste exemplo nós convertido de binario para decimal, 465 00:25:51,290 --> 00:25:53,290 e de binario para hexadecimal. 466 00:25:53,290 --> 00:25:56,610 Vós queredes estar seguro de que vostede tamén practicar a suceder o contrario. 467 00:25:56,610 --> 00:26:03,370 Entón, se eu che dei 0xff, podería deseñar isto para fóra no binario, non? 468 00:26:03,370 --> 00:26:06,820 >> Converter F en binario, que é un, un, un, un, 469 00:26:06,820 --> 00:26:09,380 F converter en binario, que é un, un, un, un. 470 00:26:09,380 --> 00:26:11,310 >> Así, podemos pedirlle para facer o contrario. 471 00:26:11,310 --> 00:26:14,817 Entón decimal para binario, ou hexadecimal para binario. 472 00:26:14,817 --> 00:26:16,650 Entón quere facer se sabe para os dous lados. 473 00:26:16,650 --> 00:26:19,371 Nós probablemente imos facerlle unha combinación dos dous. 474 00:26:19,371 --> 00:26:20,660 >> Si, ten unha pregunta? 475 00:26:20,660 --> 00:26:22,724 Podo see-- é bo? 476 00:26:22,724 --> 00:26:23,348 Audiencia: É. 477 00:26:23,348 --> 00:26:24,560 PROFESOR: Aceptar. 478 00:26:24,560 --> 00:26:26,101 Eu son bo para borrar isto? 479 00:26:26,101 --> 00:26:26,600 Gran. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Todo ben, entón respostas aquí, se alguén É curioso, máis tarde, e se confunden. 482 00:26:40,437 --> 00:26:41,844 Aceptar. 483 00:26:41,844 --> 00:26:46,070 >> Audiencia: Será que iso importa se colocarmos nosas cartas en Capitol minúsculas? 484 00:26:46,070 --> 00:26:50,360 >> PROFESOR: Fai xa en hexadecimal, por convención, 485 00:26:50,360 --> 00:26:52,840 todos os caracteres son maiúsculas. 486 00:26:52,840 --> 00:26:54,650 Entón, de A a F son será maiúsculas. 487 00:26:54,650 --> 00:26:58,660 Se pór unha minúscula un, eu non sei se nós sería necesariamente marcalo mal. 488 00:26:58,660 --> 00:27:00,679 Pero, en teoría, iso non é tecnicamente 489 00:27:00,679 --> 00:27:01,970 como debería telo. 490 00:27:01,970 --> 00:27:03,303 Polo tanto, todos eles deben ser maiúsculas. 491 00:27:03,303 --> 00:27:05,910 Si, boa pregunta. 492 00:27:05,910 --> 00:27:07,780 >> Aceptar. 493 00:27:07,780 --> 00:27:08,790 En canto á segunda cuestión. 494 00:27:08,790 --> 00:27:12,750 Considero esta linda programa aquí. 495 00:27:12,750 --> 00:27:15,180 Eu vou facer a pregunta, Vou volver este. 496 00:27:15,180 --> 00:27:23,170 >> Entón, en primeiro lugar, o que está dentro do estándar io.h que é de interese para o programa? 497 00:27:23,170 --> 00:27:26,640 En segundo lugar, o que fai baleiro significar en liña de tres? 498 00:27:26,640 --> 00:27:30,572 E en terceiro lugar, o que fai retornar cero desde principal, como liña seis, xeralmente significan? 499 00:27:30,572 --> 00:27:33,280 Se vós queredes escribir os abaixo, xa que eu teño que volver 500 00:27:33,280 --> 00:27:36,810 para o foto só para que poida ver o código. 501 00:27:36,810 --> 00:27:40,400 Este é un exemplo de como, quizais un maior cuestión nivel onde pedímoslle 502 00:27:40,400 --> 00:27:42,435 que as cousas significan nun programa. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Todos bo para min volver ao diapositiva? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK, legal. 507 00:27:54,361 --> 00:27:57,610 Entón, eu vou dar a vostedes como quizais tres minutos a ollar a este rápido real. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, entón que é como razoablemente fácil, conceptualmente. 510 00:28:44,140 --> 00:28:49,280 Alguén quere me dicir o que é primeiro por dentro hash incluíndo 511 00:28:49,280 --> 00:28:52,630 noso arquivo de biblioteca io.h estándar? 512 00:28:52,630 --> 00:28:55,510 Por que necesitamos desa biblioteca incluído para este programa? 513 00:28:55,510 --> 00:28:56,930 Que aquí é que imos ter del para? 514 00:28:56,930 --> 00:28:56,980 >> Si? 515 00:28:56,980 --> 00:28:58,340 >> Audiencia: É que cando poñer ese printf? 516 00:28:58,340 --> 00:28:59,131 >> Profesor: Exactamente. 517 00:28:59,131 --> 00:29:01,780 Entón printf, en calquera momento tomar unha entrada do usuario 518 00:29:01,780 --> 00:29:04,140 e imprimir algo para a pantalla, que é 519 00:29:04,140 --> 00:29:05,600 a entrada estándar, biblioteca de saída. 520 00:29:05,600 --> 00:29:07,170 Pense nisso que maneira-- entrada, saída. 521 00:29:07,170 --> 00:29:08,430 >> Eu teño unha saída? 522 00:29:08,430 --> 00:29:09,207 Si, eu fago. 523 00:29:09,207 --> 00:29:12,040 Entón eu sei que vou sempre precisa da biblioteca estandarizar i.o. 524 00:29:12,040 --> 00:29:16,400 >> Entón printf é a función por que necesitamos para acceder 525 00:29:16,400 --> 00:29:19,370 e inclúen o hashtag biblioteca i.o defecto. 526 00:29:19,370 --> 00:29:20,280 Aceptar. 527 00:29:20,280 --> 00:29:22,660 >> En segundo lugar, o que significa baleiro? 528 00:29:22,660 --> 00:29:26,970 Temos a int main (void), o que fai invalidar aquí dicir aquí na liña de tres? 529 00:29:26,970 --> 00:29:28,080 Si, na parte de atrás. 530 00:29:28,080 --> 00:29:29,020 >> Audiencia: [inaudível] 531 00:29:29,020 --> 00:29:29,920 >> Profesor: Exactamente. 532 00:29:29,920 --> 00:29:33,320 Entón lembre, aprendemos comezando coa nosa pset 533 00:29:33,320 --> 00:29:35,360 que realmente pode especificar na liña de comandos 534 00:29:35,360 --> 00:29:39,010 argumentos que o programa, que función principal, toma como, o usuario, 535 00:29:39,010 --> 00:29:39,650 chamalo. 536 00:29:39,650 --> 00:29:42,650 Se temos en branco, o que significa que podería simplemente executar o programa directamente 537 00:29:42,650 --> 00:29:44,680 sen os argumentos de liña de comandos. 538 00:29:44,680 --> 00:29:46,160 Todos clara sobre iso? 539 00:29:46,160 --> 00:29:46,660 Aceptar. 540 00:29:46,660 --> 00:29:52,850 >> E, por último, por que nós se preocupe en facer esta remuneración cero cousa aquí? 541 00:29:52,850 --> 00:29:54,740 Por que temos ata un int main? 542 00:29:54,740 --> 00:29:57,330 Por que non podemos só ter void main baleiro? 543 00:29:57,330 --> 00:29:59,216 Si? 544 00:29:59,216 --> 00:30:01,590 Audiencia: Só para que poidamos asegúrese de que o programa é 545 00:30:01,590 --> 00:30:04,247 saír con éxito, conforme oposición ao caso foi contado. 546 00:30:04,247 --> 00:30:06,580 E sabemos que iso é un tipo de erro. 547 00:30:06,580 --> 00:30:07,621 >> PROFESOR: Si, exactamente. 548 00:30:07,621 --> 00:30:10,670 Esta é só unha moi cousa convencional que nós facemos, 549 00:30:10,670 --> 00:30:13,840 é que só a finais de seu programa, só para asegurarse 550 00:30:13,840 --> 00:30:15,830 que a súa función principal está a ser executado correctamente, 551 00:30:15,830 --> 00:30:17,940 sempre queremos facer o retorno cero. 552 00:30:17,940 --> 00:30:21,160 Aínda que poidamos necesariamente non ve que impreso en calquera lugar. 553 00:30:21,160 --> 00:30:25,092 >> Porque, como programadores, xa sabe, se ten moitas liñas diferentes de código 554 00:30:25,092 --> 00:30:27,050 e non sabe onde estes van mal, 555 00:30:27,050 --> 00:30:30,240 e un erro ocorre, quere asegúrese de que obteña este erro. 556 00:30:30,240 --> 00:30:33,240 E así tipicamente se algo sae mal, teremos un retorno de só un 557 00:30:33,240 --> 00:30:34,669 para garantir que sabemos que é. 558 00:30:34,669 --> 00:30:36,460 Entón, se ves un retorno cero, que tipicamente 559 00:30:36,460 --> 00:30:38,293 significa que o seu programa é realizado con éxito. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Bo? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Legal. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, segundo programa aquí. 566 00:30:52,680 --> 00:30:54,827 Considero isto. 567 00:30:54,827 --> 00:30:56,910 E se vostedes ver un flotar, podedes probablemente 568 00:30:56,910 --> 00:31:00,810 ter unha boa idea do que Estou a piques de pedir-lle. 569 00:31:00,810 --> 00:31:05,200 >> Así, cando este programa executa, como se pode ver, 570 00:31:05,200 --> 00:31:09,330 Estou declarando un flotador dentro da miña función principal. 571 00:31:09,330 --> 00:31:13,470 Estou nomeando-o "responder", e eu estou definindo que igual a un dividido por 10. 572 00:31:13,470 --> 00:31:17,860 Estou imprimindo, a un casa decimal, que float. 573 00:31:17,860 --> 00:31:19,880 E entón eu estou volvendo cero. 574 00:31:19,880 --> 00:31:24,470 >> Así, cando a execución do programa, creo que volta a ganancioso agora, 575 00:31:24,470 --> 00:31:26,550 este programa amosa 0.0. 576 00:31:26,550 --> 00:31:29,993 Como todos sabemos, espero que todos sabe, un dividido por 10 non é un 0.00, 577 00:31:29,993 --> 00:31:32,350 é 0,1. 578 00:31:32,350 --> 00:31:37,810 Pero explicar por que este programa pensa que 1 dividido por 10 impresións para 0,1 outro 579 00:31:37,810 --> 00:31:39,504 que 0,1? 580 00:31:39,504 --> 00:31:42,545 Vou dar a vostedes quizais como 30 segundos para pensar só rapidamente sobre iso 581 00:31:42,545 --> 00:31:43,878 e eu vou volver para o programa. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> Aceptar. 584 00:32:20,290 --> 00:32:22,205 Calquera quere darlle un tiro? 585 00:32:22,205 --> 00:32:24,330 En tres frases ou menos, porque normalmente somos 586 00:32:24,330 --> 00:32:27,650 indo para restrinxir as respostas para tres frases ou menos 587 00:32:27,650 --> 00:32:31,130 así que non só regurgitar cousas aleatorias no seu quiz. 588 00:32:31,130 --> 00:32:32,740 >> Si, tomar un tiro. 589 00:32:32,740 --> 00:32:36,390 >> Audiencia: Entón eu creo que hai esa cousa chamada, como, [inaudível] 590 00:32:36,390 --> 00:32:42,320 Polo tanto, pode haber, por exemplo, pode haber, como, 0,09, 591 00:32:42,320 --> 00:32:47,250 que onde imprimir o primeiro díxitos, que sería para 0.0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESOR: Close, non completamente. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Audiencia: Está dividindo unha 10, e son ambos enteiros. 595 00:32:51,770 --> 00:32:54,610 E así o camiño que vai para almacena-lo é como un enteiro. 596 00:32:54,610 --> 00:32:56,480 E así o número enteiro máis próximo sería 0.0. 597 00:32:56,480 --> 00:32:57,471 E así que é 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESOR: Si, iso é moi bo. 599 00:32:58,970 --> 00:33:00,040 Esa é a resposta correcta. 600 00:33:00,040 --> 00:33:03,597 Polo tanto, este é un moi confuso concepto a unha morea de nenos. 601 00:33:03,597 --> 00:33:06,680 E eu realmente quero estar seguro de que iso é reforzado na cabeza de todos. 602 00:33:06,680 --> 00:33:10,090 >> Entón, o que chamamos flotante punto de imprecisión, 603 00:33:10,090 --> 00:33:12,800 onde a razón pola que moitas os seus programas en ganancioso 604 00:33:12,800 --> 00:33:17,010 non funcionou inicialmente era porque se esqueceu de lanzar a súa variábel. 605 00:33:17,010 --> 00:33:19,370 Entón, o que dixo Christabell era enteiramente correcta. 606 00:33:19,370 --> 00:33:21,990 >> Un flotador é inherentemente imprecisa. 607 00:33:21,990 --> 00:33:26,400 Porque nun ordenador, non temos unha cantidade finita de bits de memoria 608 00:33:26,400 --> 00:33:28,480 podemos utilizar para representar números. 609 00:33:28,480 --> 00:33:33,480 Así, por exemplo, este ID CS50 é-- Creo que é un ordenador de 64 bits. 610 00:33:33,480 --> 00:33:37,520 >> Un flotador só pode ser representada por unha cantidade finita deses bits. 611 00:33:37,520 --> 00:33:42,260 E así 0,1 con ceros infinitas, que foi de 0,1 é, non? 612 00:33:42,260 --> 00:33:45,450 Pero non podemos realmente almacenar este número no noso ordenador. 613 00:33:45,450 --> 00:33:47,810 Nós simplemente non temos memoria suficiente para facelo. 614 00:33:47,810 --> 00:33:52,340 >> E así, a aproximación máis próxima de o que está almacenado na memoria é, en realidade, 615 00:33:52,340 --> 00:33:55,390 algo así como 0,000 algo, algo, algo, algo. 616 00:33:55,390 --> 00:34:01,240 Que, unha vez que truncar el, arredonda abaixo a 0,0. 617 00:34:01,240 --> 00:34:05,640 >> E así, este exemplo é só un que demostra moitas cuestións 618 00:34:05,640 --> 00:34:08,469 temos sempre que estamos tentando facer incorrectamente matemáticas 619 00:34:08,469 --> 00:34:11,000 sen lanzar como un enteiro distinto. 620 00:34:11,000 --> 00:34:14,870 Entón, só tes que ser cauteloso de que isto ocorre. 621 00:34:14,870 --> 00:34:18,239 >> En probas, se nós dámoslle unha bloque de código e é como, 622 00:34:18,239 --> 00:34:19,510 o que imprime ao final? 623 00:34:19,510 --> 00:34:24,096 E se é algún valor aleatorio vostede caras deben saber por que isto está a suceder. 624 00:34:24,096 --> 00:34:24,909 Si? 625 00:34:24,909 --> 00:34:27,926 >> Audiencia: Truncate é se librar de todo despois dun certo punto? 626 00:34:27,926 --> 00:34:28,513 [Inaudível] 627 00:34:28,513 --> 00:34:30,929 PROFESOR: É, entón, en realidade, este é un exemplo moi malo, 628 00:34:30,929 --> 00:34:37,870 porque todo o que realmente 0,100 truncaria ata 0,1. 629 00:34:37,870 --> 00:34:41,389 Pero se fose realizar ele-- non Teña en conta que, porque o ano pasado 630 00:34:41,389 --> 00:34:42,830 correu-lo nun programa diferente. 631 00:34:42,830 --> 00:34:45,300 Eles correron lo en algo chamado o CS50 Appliance, que 632 00:34:45,300 --> 00:34:46,389 é diferente do ID. 633 00:34:46,389 --> 00:34:48,520 Isto foi un sistema de 32 bits, eu creo. 634 00:34:48,520 --> 00:34:50,290 E entón había números diferentes. 635 00:34:50,290 --> 00:34:53,330 >> Pero, esencialmente, só sei que todo o concepto de truncagem 636 00:34:53,330 --> 00:34:54,815 e como simplemente corta as cousas fóra. 637 00:34:54,815 --> 00:34:55,690 E así se rounds-- 638 00:34:55,690 --> 00:34:56,300 >> Audiencia: sen redondeo. 639 00:34:56,300 --> 00:34:57,370 >> Profesor: Exactamente. 640 00:34:57,370 --> 00:34:57,870 Si. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Legal. 643 00:35:04,380 --> 00:35:05,250 >> Ola, na parte de atrás. 644 00:35:05,250 --> 00:35:07,634 Nós só estamos indo sobre algúns Revisar o cuestionario preguntas. 645 00:35:07,634 --> 00:35:08,430 >> Todo ben. 646 00:35:08,430 --> 00:35:10,150 Por iso, considero un programa diferente aquí. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Vou dar a vostedes un uns minutos para ler sobre iso. 649 00:35:15,380 --> 00:35:18,588 Isto é algo que foi por moito recentemente, que eu creo que estourou unha morea de ti 650 00:35:18,588 --> 00:35:19,142 mente dos homes. 651 00:35:19,142 --> 00:35:21,100 Pero imos falar polo que de novo só 652 00:35:21,100 --> 00:35:24,152 para asegurarse de que entende-lo completamente. 653 00:35:24,152 --> 00:35:24,652 Aceptar. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 Aceptar. 656 00:35:41,780 --> 00:35:44,342 Alguén precisa de máis tempo para ler este código? 657 00:35:44,342 --> 00:35:45,650 Aceptar. 658 00:35:45,650 --> 00:35:50,630 >> Así, paréceme que neste programa son 659 00:35:50,630 --> 00:35:53,460 a creación de dúas secuencias usando GetString. 660 00:35:53,460 --> 00:35:55,180 Unha chamados s e un chamado t. 661 00:35:55,180 --> 00:35:58,680 E se son iguais é igual a un para o outro, 662 00:35:58,680 --> 00:36:00,880 debe imprimir "Vostede escriba o mesmo. " 663 00:36:00,880 --> 00:36:04,170 >> Pero elsewise, sería imprimir: "Vostede ingresaran cousas distintas ", non? 664 00:36:04,170 --> 00:36:05,990 Parece moi, moi sinxelo. 665 00:36:05,990 --> 00:36:08,720 Pero, con todo, se realmente tentar escribir este programa, 666 00:36:08,720 --> 00:36:12,230 parece que mesmo cando entrada as mesmas secuencias exactas, 667 00:36:12,230 --> 00:36:15,490 aínda imprime: "Vostede ingresaran cousas distintas " 668 00:36:15,490 --> 00:36:18,020 Alguén quere dar unha tiro en por que este programa sempre 669 00:36:18,020 --> 00:36:20,370 responde que as entradas son diferentes, mesmo 670 00:36:20,370 --> 00:36:22,090 cando as propias palabras son as mesmas? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Entón, se eu fose para input-- David amor para usar un exemplo como nai, non? 673 00:36:29,170 --> 00:36:37,890 Minúsculas M-O-M de S, T é igual a minúsculas M-O-M. 674 00:36:37,890 --> 00:36:40,340 Se eu execute iso mediante que o código, por que 675 00:36:40,340 --> 00:36:44,180 imprimir "escribiu cousas distintas?" 676 00:36:44,180 --> 00:36:46,336 >> Alguén precisa de máis tempo para pensar sobre iso? 677 00:36:46,336 --> 00:36:47,294 OK, eu creo que estamos ben. 678 00:36:47,294 --> 00:36:48,716 Si? 679 00:36:48,716 --> 00:36:53,930 >> Audiencia: OK, entón iso é algo sobre onde se garda na memoria, non? 680 00:36:53,930 --> 00:36:54,890 >> PROFESOR: Yep. 681 00:36:54,890 --> 00:37:00,400 >> Audiencia: Onde é como, este cadea s se garda a memoria spot-- 682 00:37:00,400 --> 00:37:01,689 Estou inventando isto-- é cero. 683 00:37:01,689 --> 00:37:02,355 PROFESOR: Correcto. 684 00:37:02,355 --> 00:37:05,290 Audiencia: E corda t almacénase no lugar de memoria, 685 00:37:05,290 --> 00:37:11,000 como, 167, e, a continuación cero non é igual a 167. 686 00:37:11,000 --> 00:37:12,610 >> Profesor: Exactamente. 687 00:37:12,610 --> 00:37:18,350 OK, entón lembre que esta incrible revelación explicamos para vós 688 00:37:18,350 --> 00:37:21,530 a semana pasada, que cordas non existen realmente? 689 00:37:21,530 --> 00:37:25,380 Cando creamos algo chamado corda estamos, en realidade, 690 00:37:25,380 --> 00:37:29,330 creando algo chamado de char estrela. 691 00:37:29,330 --> 00:37:34,470 Que todo isto é un punteiro para unha cadea ou unha matriz de caracteres. 692 00:37:34,470 --> 00:37:39,480 >> E así, neste exemplo, se eu foron a entrada H-O-H a forma 693 00:37:39,480 --> 00:37:49,350 que o meu ordenador sería almacena-lo é dentro barra invertida memoria cero, non? 694 00:37:49,350 --> 00:37:53,180 Estes catro caracteres, caracteres, sería almacenado en algún lugar. 695 00:37:53,180 --> 00:37:59,290 >> E entón estes catro caracteres, barra invertida cero, 696 00:37:59,290 --> 00:38:01,275 almacénanse noutro lugar, non? 697 00:38:01,275 --> 00:38:04,685 Eu non teño ningunha idea de onde os enderezos son, están en algún lugar no meu ordenador. 698 00:38:04,685 --> 00:38:07,080 Pero eu non sei exactamente onde eles están. 699 00:38:07,080 --> 00:38:10,170 >> Cando crear unha secuencia s, todo o que é realmente 700 00:38:10,170 --> 00:38:15,550 é un punteiro para o comezar desa secuencia. 701 00:38:15,550 --> 00:38:21,130 E cando eu crear este valor t, todo o que é un punteiro para aquí. 702 00:38:21,130 --> 00:38:23,980 E así, cando estás a para equiparar e comproba 703 00:38:23,980 --> 00:38:27,710 a ver se s é igual é igual a t, o ordenador 704 00:38:27,710 --> 00:38:31,635 é realmente só retornando a vostede a dirección deste m 705 00:38:31,635 --> 00:38:33,390 eo enderezo que m. 706 00:38:33,390 --> 00:38:36,230 E porque son dous pezas separadas de datos 707 00:38:36,230 --> 00:38:38,750 que son almacenados en dous diferentes enderezos no seu ordenador, 708 00:38:38,750 --> 00:38:41,750 ordenador non vai recoñece-los como o mesmo. 709 00:38:41,750 --> 00:38:43,500 Alguén quere dar un tiro no que nós 710 00:38:43,500 --> 00:38:46,900 tería que facer se queriamos para corrixir iso e ter un programa en execución correcta 711 00:38:46,900 --> 00:38:49,360 no seu canto? 712 00:38:49,360 --> 00:38:52,070 Pense nisso por un par de segundos. 713 00:38:52,070 --> 00:38:54,929 O que necesitamos cambiar a obter este programa de traballo 714 00:38:54,929 --> 00:38:56,220 do xeito que queremos que funcione? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Si, quero levar unha facada nel? 717 00:39:18,918 --> 00:39:24,082 >> Audiencia: Podemos intentar cancelar o punteiro e comprobar a través da matriz? 718 00:39:24,082 --> 00:39:25,540 PROFESOR: Esta é unha forma de facelo. 719 00:39:25,540 --> 00:39:27,880 Entón, cal é o seu nome? 720 00:39:27,880 --> 00:39:29,010 Sinto moito, me lembra. 721 00:39:29,010 --> 00:39:29,589 >> CEE: CEE. 722 00:39:29,589 --> 00:39:32,130 PROFESOR: Si, entón o que Zee suxerida sería absolutamente traballar. 723 00:39:32,130 --> 00:39:32,629 Non? 724 00:39:32,629 --> 00:39:35,730 Poderiamos cancelar o punteiro e realmente ir e acceso 725 00:39:35,730 --> 00:39:38,460 os datos físicos dentro aquí. 726 00:39:38,460 --> 00:39:40,300 E podemos só comparar a pantalla enteira. 727 00:39:40,300 --> 00:39:43,670 >> Podemos dicir, OK, punteiro, dáme o que está dentro aquí. 728 00:39:43,670 --> 00:39:44,960 El retornaría un m. 729 00:39:44,960 --> 00:39:47,168 E eu diría, punteiro, dáme o que está dentro aquí. 730 00:39:47,168 --> 00:39:47,750 Voltar un m. 731 00:39:47,750 --> 00:39:48,410 Será que os xogo? 732 00:39:48,410 --> 00:39:49,410 Si. 733 00:39:49,410 --> 00:39:50,340 A continuación, seguir adiante. 734 00:39:50,340 --> 00:39:54,240 >> Seguimos a comprobar os dous enteiro cordas todo o camiño ata o final 735 00:39:54,240 --> 00:39:56,635 para ver se estas son iguais, Todos os valores son iguais. 736 00:39:56,635 --> 00:39:59,680 E, se todos os valores son iguais, entón sabemos as cordas son certas. 737 00:39:59,680 --> 00:40:01,600 Absolutamente, iso é como nós o faría? 738 00:40:01,600 --> 00:40:03,930 >> Alguén confuso sobre nada diso? 739 00:40:03,930 --> 00:40:06,970 Todo o concepto de como as cadeas son realmente só punteiros, 740 00:40:06,970 --> 00:40:08,440 e como non hai realmente? 741 00:40:08,440 --> 00:40:10,480 E por iso que recibín erros como a nosa forma de obtelo? 742 00:40:10,480 --> 00:40:15,070 Porque eu asegura a vostedes, punteiros e distribución de cordas e memoria 743 00:40:15,070 --> 00:40:16,470 van vir cara arriba. 744 00:40:16,470 --> 00:40:17,410 >> Si? 745 00:40:17,410 --> 00:40:21,072 >> Audiencia: [inaudível] dereference Lo, que acaba de publicar unha estrela [inaudível] 746 00:40:21,072 --> 00:40:21,780 PROFESOR: Correcto. 747 00:40:21,780 --> 00:40:28,430 Así, para un medio de punteiro derererence para ir ao enderezo do punteiro 748 00:40:28,430 --> 00:40:30,390 e obtención dos datos, o valor aí. 749 00:40:30,390 --> 00:40:32,700 E a forma de facelo é punteiro estrela. 750 00:40:32,700 --> 00:40:34,262 Non confunda iso. 751 00:40:34,262 --> 00:40:35,186 >> Audiencia: [inaudível]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESOR: Yeah. 753 00:40:35,852 --> 00:40:39,750 Audiencia: Entón pode só escribir se estrela s igual iguais estrela t. 754 00:40:39,750 --> 00:40:40,630 >> PROFESOR: Ben, non. 755 00:40:40,630 --> 00:40:40,960 Non. 756 00:40:40,960 --> 00:40:41,640 >> Audiencia: Iso non é bo o suficiente, non? 757 00:40:41,640 --> 00:40:43,760 >> PROFESOR: Non é, porque é que comprobar só a primeira letra. 758 00:40:43,760 --> 00:40:46,010 Probablemente vai a necesita dalgún tipo de bucle que 759 00:40:46,010 --> 00:40:49,055 percorre cada personaxe en ambas as cordas. 760 00:40:49,055 --> 00:40:49,837 Si. 761 00:40:49,837 --> 00:40:52,920 Entón, se quería só comprobar a ver no caso de que comezaron coa mesma cousa, 762 00:40:52,920 --> 00:40:58,220 podes facer se, estrela s é igual a estrela t. 763 00:40:58,220 --> 00:41:01,300 Entón vostede sabe que polo menos eles comezou co mesmo personaxe. 764 00:41:01,300 --> 00:41:01,952 >> Si? 765 00:41:01,952 --> 00:41:04,056 >> Audiencia: Entón, o camiño vostede que sería 766 00:41:04,056 --> 00:41:06,064 como un incorporado lazo for ou punteiro? 767 00:41:06,064 --> 00:41:06,730 PROFESOR: Yeah. 768 00:41:06,730 --> 00:41:08,170 Practicamente só un loop for. 769 00:41:08,170 --> 00:41:12,430 Lembre, David na clase mencionada o azucre sintático libre? 770 00:41:12,430 --> 00:41:17,690 E tiña que moi cousa confusa da estrela t 771 00:41:17,690 --> 00:41:22,030 máis un, onde integraría a través de e mover o punteiro? 772 00:41:22,030 --> 00:41:29,910 O xeito máis doado de facer este é só t i. 773 00:41:29,910 --> 00:41:31,090 >> Entón é só unha matriz. 774 00:41:31,090 --> 00:41:34,630 A forma que tería un para loop que foi de cero a i, onde 775 00:41:34,630 --> 00:41:36,580 I é a lonxitude da cadea, podería só 776 00:41:36,580 --> 00:41:39,510 escribir que, no canto de facer a punteiro todo, cousa de referencia. 777 00:41:39,510 --> 00:41:43,510 Entón, estas cousas son exactamente equivalente no seu ordenador. 778 00:41:43,510 --> 00:41:45,905 >> Vostedes probablemente non Debe saber que, 779 00:41:45,905 --> 00:41:48,280 pero é bo para só un tipo de ten na parte de atrás da súa mente. 780 00:41:48,280 --> 00:41:52,630 Só sei que o ordenador recoñece distintos bloques de código 781 00:41:52,630 --> 00:41:53,890 como o mesmo. 782 00:41:53,890 --> 00:41:57,510 Porque este é só moito máis do usuario agradable para nós para presenta-lo como se fose 783 00:41:57,510 --> 00:41:58,150 unha matriz. 784 00:41:58,150 --> 00:42:00,990 É só máis fácil. 785 00:42:00,990 --> 00:42:02,719 >> Audiencia: Entón usar strlen a gustar, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESOR: Yeah. 787 00:42:03,385 --> 00:42:03,926 Audiencia: Aceptar. 788 00:42:03,926 --> 00:42:05,940 PROFESOR: Podería usar strlen ou, se 789 00:42:05,940 --> 00:42:10,420 non strlen pode só facer-se ata que bateu barra invertida cero para ambos. 790 00:42:10,420 --> 00:42:11,568 Ou ía funcionar. 791 00:42:11,568 --> 00:42:12,068 Si. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 Audiencia: Entón é eliminar a referencia a cada único personaxe se está de feito 794 00:42:17,996 --> 00:42:21,044 escribir este código, podería só facer t soportes i 795 00:42:21,044 --> 00:42:22,460 como coa estrela na fronte del? 796 00:42:22,460 --> 00:42:27,700 >> PROFESOR: Si, é igual a equals s soporte i, e, a continuación, perder i movemento 797 00:42:27,700 --> 00:42:29,790 down up ata que bateu o final. 798 00:42:29,790 --> 00:42:31,286 Si, iso é o que faría. 799 00:42:31,286 --> 00:42:33,660 E eu vou realmente ter unha próxima exemplo cando nós realmente 800 00:42:33,660 --> 00:42:36,740 escribir strlen para que vostedes han tipo de comezar a xogar con el un pouco. 801 00:42:36,740 --> 00:42:43,567 >> Así é todo claro só en memoria, cordas, punteiros, enderezos de calidade? 802 00:42:43,567 --> 00:42:46,650 Algúns conceptos de nivel máis alto que vontade de certo necesidade de saber sobre o quiz 803 00:42:46,650 --> 00:42:48,928 mañá. 804 00:42:48,928 --> 00:42:49,904 >> Todo ben. 805 00:42:49,904 --> 00:42:50,404 Bo. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Yep. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, entón unha cousa que nós imos tamén pedir ti, como facemos todos os anos nun cuestionario, é, 810 00:43:04,180 --> 00:43:08,340 supoña que teña esquecido (que parece que estamos a esquecer de facer anualmente) 811 00:43:08,340 --> 00:43:10,810 en que ficheiro de cabeceira strlen é declarada. 812 00:43:10,810 --> 00:43:13,860 E por iso temos que reescribir-lo nós mesmos. 813 00:43:13,860 --> 00:43:16,350 >> Aquí está a lista de directrices que podemos presentar-lle 814 00:43:16,350 --> 00:43:20,660 caras onde comeza a asumir que s a cadea non será nulo. 815 00:43:20,660 --> 00:43:23,830 Pode asumir que s terminou cunha barra invertida cero. 816 00:43:23,830 --> 00:43:26,670 Entón vostede sabe que é o que que vai acabar con. 817 00:43:26,670 --> 00:43:29,500 >> E, por exemplo, que o lonxitude da Ola sería de cinco anos. 818 00:43:29,500 --> 00:43:32,890 Así, pode asumir que Ola será cinco, H-E-G-L-S. 819 00:43:32,890 --> 00:43:35,890 Non ten que asumir que o backside cero de todo sobre o longo. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Esta última cousa aquí, non facer preocuparse integer overflow. 822 00:43:42,300 --> 00:43:45,270 Alguén se lembra o integer overflow é? 823 00:43:45,270 --> 00:43:48,041 >> Audiencia: vai máis alá da lonxitude do [inaudível]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESOR: Si, pode explicar un pouco, o que significa isto? 825 00:43:50,740 --> 00:43:55,330 >> Audiencia: Entón, eu creo que vai volver por exemplo truncando anteriormente. 826 00:43:55,330 --> 00:43:58,380 Pero se ten só tantos números que supera o número de bits 827 00:43:58,380 --> 00:44:01,409 que realmente pode atribuílo la que será só unha especie de corte. 828 00:44:01,409 --> 00:44:04,242 PROFESOR: Si, entón nun típico ordenador, cantos bits que temos? 829 00:44:04,242 --> 00:44:05,306 Audiencia: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESOR: Si, 32, á dereita. 831 00:44:06,430 --> 00:44:10,030 E así que é, que, catro millóns, dous millóns? 832 00:44:10,030 --> 00:44:13,579 Catro millóns, ata catro millóns enteiros positivos, non? 833 00:44:13,579 --> 00:44:15,370 Dous millóns negativo, dous millóns de positivo, 834 00:44:15,370 --> 00:44:16,900 Depende de como quere facelo. 835 00:44:16,900 --> 00:44:21,470 >> E entón basicamente podemos ter enteiros suficientes que poden ir ata 836 00:44:21,470 --> 00:44:25,800 de dous a 31 menos 1, non? 837 00:44:25,800 --> 00:44:27,980 Porque unha vez que se loita dous a 32, non 838 00:44:27,980 --> 00:44:30,040 ter esa cantidade de memoria no noso ordenador. 839 00:44:30,040 --> 00:44:32,310 >> E así, en teoría, eu podería vir cun número 840 00:44:32,310 --> 00:44:34,560 que é, tipo, dous para o 46º. 841 00:44:34,560 --> 00:44:38,040 É un número enorme-ass, pero teoricamente podería. 842 00:44:38,040 --> 00:44:42,730 E o estourido de forma enteiro é se tentar crear un número enteiro que vai máis aló do que 843 00:44:42,730 --> 00:44:44,790 seu ordenador é capaz de almacenar. 844 00:44:44,790 --> 00:44:46,590 >> E así vostedes para Neste exemplo non teñen 845 00:44:46,590 --> 00:44:51,330 preocuparse nós, dándolle un xigante cadea que é de dous para os carácteres 32ª 846 00:44:51,330 --> 00:44:51,830 de lonxitude. 847 00:44:51,830 --> 00:44:54,010 Iso sería realmente significan. 848 00:44:54,010 --> 00:44:59,430 >> Todo ben, entón eu só vou dar vostedes a estrutura de base do presente. 849 00:44:59,430 --> 00:45:02,020 Vai crear un función chamada int strlen onde 850 00:45:02,020 --> 00:45:08,436 Un pase en, unha estrela char, ou corda, punteiro para a cadea chamada s. 851 00:45:08,436 --> 00:45:10,820 >> Todo ben, todo o mundo que copiar abaixo. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Legal. 854 00:45:14,850 --> 00:45:17,020 Oops-- doutro xeito. 855 00:45:17,020 --> 00:45:21,360 >> Polo tanto, este é como unha especie de peza máis difícil de problema, 856 00:45:21,360 --> 00:45:25,320 entón eu vou dar a vostedes quizais cinco a seis minutos para o tipo de brainstorming 857 00:45:25,320 --> 00:45:27,478 e escribir esta función fóra. 858 00:45:27,478 --> 00:45:29,710 >> Audiencia: Non facer conta para [inaudível] 859 00:45:29,710 --> 00:45:30,200 non hai que usar enteiro? 860 00:45:30,200 --> 00:45:31,241 >> PROFESOR: Non, non. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Vou dar a vostedes unha información. 863 00:48:06,930 --> 00:48:12,325 Un loop while pode ser moi útil aquí. 864 00:48:12,325 --> 00:48:12,825 Si. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Aquí está 867 00:48:45,495 --> 00:48:45,995 doces. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Doces tamén estará dispoñible para o quiz, eu creo. 870 00:48:53,410 --> 00:48:55,315 Entón vós vai ser todo azucrado ata mañá. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Pode i-- conseguiu. 873 00:49:02,962 --> 00:49:03,718 >> Audiencia: Aceptar. 874 00:49:03,718 --> 00:49:04,384 PROFESOR: Yeah. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Quizais máis de 30 segundos ou menos. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Todo ben, se é non fixo, non se preocupe. 879 00:50:07,340 --> 00:50:08,810 Nós imos pasar por iso xuntos. 880 00:50:08,810 --> 00:50:09,310 Aceptar. 881 00:50:09,310 --> 00:50:13,800 Entón, eu estou indo só para o deseño do estrutura básica para esta función aquí. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 En primeiro lugar, será que alguén quere dicir me o que iso significa int? 885 00:50:23,460 --> 00:50:25,160 Necesitamos ter nesta función. 886 00:50:25,160 --> 00:50:26,709 >> Audiencia: strlen [inaudível]. 887 00:50:26,709 --> 00:50:27,500 Profesor: Exactamente. 888 00:50:27,500 --> 00:50:31,140 Entón o que ocorre aquí, necesitamos volver un enteiro. 889 00:50:31,140 --> 00:50:36,367 E, conforme especificado no spec, queremos return-- 890 00:50:36,367 --> 00:50:37,700 Vai a el rapaces, só vai manter. 891 00:50:37,700 --> 00:50:40,480 É todo de bo. 892 00:50:40,480 --> 00:50:42,960 Comer todo, entón eu non teño para levalo de volta, en realidade. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 O int só significa que é estará retornando un enteiro. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> ¿Que é este carácter estrela s? 897 00:50:57,106 --> 00:50:58,640 Que significa iso? 898 00:50:58,640 --> 00:51:00,879 >> Audiencia: Like, o que está a ser introducido en. 899 00:51:00,879 --> 00:51:01,670 Profesor: Exactamente. 900 00:51:01,670 --> 00:51:04,142 E o que é case o mesmo como char estrela? 901 00:51:04,142 --> 00:51:04,850 Audiencia: String? 902 00:51:04,850 --> 00:51:05,641 Profesor: Exactamente. 903 00:51:05,641 --> 00:51:09,080 Entón, todo o que estamos facendo é dando este un punteiro para unha cadea. 904 00:51:09,080 --> 00:51:09,580 Aceptar. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Legal. 907 00:51:13,360 --> 00:51:16,650 >> Ademais, non se esqueza, se esquecer para darlle eses soportes, 908 00:51:16,650 --> 00:51:18,330 non se esqueza de escribir-los só. 909 00:51:18,330 --> 00:51:20,720 Porque, en teoría, o código incorrecto se esquecer de escribilos. 910 00:51:20,720 --> 00:51:21,803 Só sempre prestar atención. 911 00:51:21,803 --> 00:51:23,750 Como, cousas pequenas que non entende 912 00:51:23,750 --> 00:51:26,917 cando está programando no seu portátil, porque o seu portátil fai por ti? 913 00:51:26,917 --> 00:51:28,624 Non se esqueza, cando está escribindo coa man. 914 00:51:28,624 --> 00:51:29,170 Si? 915 00:51:29,170 --> 00:51:30,954 >> Audiencia: Pero como incorrecta? 916 00:51:30,954 --> 00:51:33,190 Como podemos obter todo o problema mal? 917 00:51:33,190 --> 00:51:34,190 >> PROFESOR: Non, non. 918 00:51:34,190 --> 00:51:34,860 Non se preocupe. 919 00:51:34,860 --> 00:51:39,270 En realidade, é teoricamente posible para que poida obter todos os puntos sobre unha cuestión 920 00:51:39,270 --> 00:51:41,980 aínda que o seu código será nunca se executan na vida real. 921 00:51:41,980 --> 00:51:46,052 Eu sugiro que non tente para que isto ocorre. 922 00:51:46,052 --> 00:51:48,260 Por exemplo, como se todo que está aquí é certo, 923 00:51:48,260 --> 00:51:51,850 pero esquece unha coma ou un soporte, seu código non vai realmente funcionar. 924 00:51:51,850 --> 00:51:53,740 Pero podemos ser misericordioso. 925 00:51:53,740 --> 00:51:54,394 >> Si? 926 00:51:54,394 --> 00:51:56,050 >> Audiencia: Ten que comentar a nosa caligrafía? 927 00:51:56,050 --> 00:51:57,758 >> PROFESOR: Non, non, non se preocupa iso. 928 00:51:57,758 --> 00:51:58,440 Sen comentar. 929 00:51:58,440 --> 00:51:59,400 Estilo debe ser bo. 930 00:51:59,400 --> 00:52:01,470 Como, non smush todo nunha liña. 931 00:52:01,470 --> 00:52:04,580 Non vai ser feliz con vostede, se fai iso. 932 00:52:04,580 --> 00:52:07,250 >> Alguén quere dáme a primeira liña? 933 00:52:07,250 --> 00:52:08,633 Consello, é moi fácil. 934 00:52:08,633 --> 00:52:09,320 >> Si? 935 00:52:09,320 --> 00:52:11,920 >> Audiencia: Int, n é igual a cero. 936 00:52:11,920 --> 00:52:13,734 Pode configurar balcón. 937 00:52:13,734 --> 00:52:15,900 PROFESOR: Entón, nós queremos algún unha especie de contador, non? 938 00:52:15,900 --> 00:52:19,780 Eu só vou nomealo "contar" por unha cuestión de lexibilidade. 939 00:52:19,780 --> 00:52:21,265 O que queremos para define-la igual a? 940 00:52:21,265 --> 00:52:21,890 >> Audiencia: Cero. 941 00:52:21,890 --> 00:52:23,840 PROFESOR: Yep. 942 00:52:23,840 --> 00:52:24,340 Punto e coma. 943 00:52:24,340 --> 00:52:26,250 Tamén punto e coma deseño moi estrañas. 944 00:52:26,250 --> 00:52:28,870 Só a práctica de facelo. 945 00:52:28,870 --> 00:52:31,990 >> Entón, nós queremos ter primeiro un contador tipo int. 946 00:52:31,990 --> 00:52:35,360 Porque quero contar-se como moitos caracteres ou letras 947 00:52:35,360 --> 00:52:36,780 en esta cadea, non? 948 00:52:36,780 --> 00:52:38,330 Primeiro paso moi fácil. 949 00:52:38,330 --> 00:52:42,140 >> OK, quizais un pouco máis complexo Agora, como é que imos facelo? 950 00:52:42,140 --> 00:52:45,400 Alguén quere dáme a liña de código 951 00:52:45,400 --> 00:52:48,450 que pode ser capaz de axudar circuíto a través de calquera que é isto? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Si, alma valente na parte de atrás? 954 00:52:56,900 --> 00:53:06,832 >> Audiencia: OK, por iso, mentres punto asteriscos, o si, estrela de s, 955 00:53:06,832 --> 00:53:09,465 non é igual a cero, a continuación, facer algo? 956 00:53:09,465 --> 00:53:11,090 PROFESOR: Isto é moi, moi preto. 957 00:53:11,090 --> 00:53:11,835 Realmente preto. 958 00:53:11,835 --> 00:53:13,710 Entón eu vou para resolver dúas cousas con iso. 959 00:53:13,710 --> 00:53:18,240 Primeiro de todo, non é exactamente cero. 960 00:53:18,240 --> 00:53:20,110 Que é iso? 961 00:53:20,110 --> 00:53:22,550 É o terminador nulo, que é invertida de cero. 962 00:53:22,550 --> 00:53:24,960 Entón, son diferentes en termos de como están almacenados. 963 00:53:24,960 --> 00:53:26,270 Entón está realmente preto. 964 00:53:26,270 --> 00:53:30,330 >> E en segundo lugar, non queremos só mover o punteiro. 965 00:53:30,330 --> 00:53:32,320 Queremos realmente acceder aos valores, non? 966 00:53:32,320 --> 00:53:34,050 E así como podemos facelo? 967 00:53:34,050 --> 00:53:34,550 Moi fácil. 968 00:53:34,550 --> 00:53:36,841 Non pense sobre punteiros, non pensa sobre memorias. 969 00:53:36,841 --> 00:53:38,525 De volta á segunda semana do curso. 970 00:53:38,525 --> 00:53:39,555 >> Audiencia: [inaudível]. 971 00:53:39,555 --> 00:53:40,680 PROFESOR: A partir de, lembra? 972 00:53:40,680 --> 00:53:41,400 Cales son cordas? 973 00:53:41,400 --> 00:53:42,650 Como son almacenados na memoria? 974 00:53:42,650 --> 00:53:43,300 >> Audiencia: Están levantadas. 975 00:53:43,300 --> 00:53:43,810 >> PROFESOR: Son levantadas. 976 00:53:43,810 --> 00:53:45,550 Entón, como imos acceder cada personaxe dentro? 977 00:53:45,550 --> 00:53:46,466 >> Audiencia: [inaudível]. 978 00:53:46,466 --> 00:53:47,530 Profesor: Exactamente. 979 00:53:47,530 --> 00:53:53,195 Entón o que pasa dentro while-- aquí? 980 00:53:53,195 --> 00:53:54,940 S de - 981 00:53:54,940 --> 00:53:55,920 >> Audiencia: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESOR: Oh, eu non existe, non é? 983 00:53:58,216 --> 00:53:59,620 >> Audiencia: Oh, conte? 984 00:53:59,620 --> 00:54:01,640 >> PROFESOR: Podemos só usar conta, non podemos? 985 00:54:01,640 --> 00:54:03,050 >> Audiencia: Sentímolo, eu o chamei i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESOR: Si, é todo de bo. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Temos unha variable-se aquí que é xa foi declarado como o noso balcón. 989 00:54:10,760 --> 00:54:13,650 Entón, por que non só usar ese para percorrer o loop while? 990 00:54:13,650 --> 00:54:15,230 Isto ten sentido? 991 00:54:15,230 --> 00:54:20,864 >> Así, mentres s de count-- alguén quere para me dar o que pasa despois aquí? 992 00:54:20,864 --> 00:54:22,030 Audiencia: É non é igual. 993 00:54:22,030 --> 00:54:23,405 PROFESOR: Non é igual, non? 994 00:54:23,405 --> 00:54:26,200 É o estrondo iguais, signo de admiración é igual, 995 00:54:26,200 --> 00:54:28,500 todo o que vós queredes chamalo non equal-- 996 00:54:28,500 --> 00:54:29,496 >> Audiencia: [inaudível]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESOR: Yeah. 998 00:54:30,990 --> 00:54:37,110 Teña en conta que comiñas simples é para un char, comiñas dobres son para unha cadea. 999 00:54:37,110 --> 00:54:38,630 Teña coidado ao usalos. 1000 00:54:38,630 --> 00:54:42,430 Entón, cando estamos mirando a través de o array, o último carácter, 1001 00:54:42,430 --> 00:54:46,420 sabemos que non queremos que sexa invertida a cero. 1002 00:54:46,420 --> 00:54:47,340 >> Así, mentres. 1003 00:54:47,340 --> 00:54:48,840 Non estamos no fin da cadea. 1004 00:54:48,840 --> 00:54:52,335 O que queremos facer dentro? 1005 00:54:52,335 --> 00:54:55,269 >> Audiencia: Queremos engadir á balcón para que conta plus plus? 1006 00:54:55,269 --> 00:54:56,060 Profesor: Exactamente. 1007 00:54:56,060 --> 00:55:03,064 Entón aquí imos facer contar, conta plus plus. 1008 00:55:03,064 --> 00:55:03,980 Falta unha liña. 1009 00:55:03,980 --> 00:55:05,090 Estamos case alí. 1010 00:55:05,090 --> 00:55:07,398 O que estamos esquecendo de facer? 1011 00:55:07,398 --> 00:55:08,770 >> Audiencia: Volvendo a cero? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESOR: Quere volver cero? 1013 00:55:10,820 --> 00:55:12,962 >> Audiencia: Non, retornando para strlen. 1014 00:55:12,962 --> 00:55:13,511 Espera. 1015 00:55:13,511 --> 00:55:14,760 PROFESOR: Cal é almacenado? 1016 00:55:14,760 --> 00:55:15,090 Audiencia: Conta. 1017 00:55:15,090 --> 00:55:15,589 Conta. 1018 00:55:15,589 --> 00:55:17,150 Profesor: Exactamente. 1019 00:55:17,150 --> 00:55:20,760 Entón aquí imos volver conta. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Porque o que somos facendo aquí ultimately-- 1022 00:55:25,380 --> 00:55:29,780 temos unha variable de contador que é vai incrementar a través da nosa cadea. 1023 00:55:29,780 --> 00:55:33,050 Nós imos seguir, seguir ir en torno e arredor neste loop. 1024 00:55:33,050 --> 00:55:37,700 E mentres non estamos a finais deste cadea, que é o terminador nulo. 1025 00:55:37,700 --> 00:55:40,410 >> E cada vez que nós atravesamos Lo, estamos engadindo ao noso balcón. 1026 00:55:40,410 --> 00:55:42,640 E imos máis aló ao longo desta matriz. 1027 00:55:42,640 --> 00:55:44,880 E, ao final, xa que bateu o terminador nulo, 1028 00:55:44,880 --> 00:55:48,469 sabemos, oh, podemos romper, voltar a conta. 1029 00:55:48,469 --> 00:55:49,260 Temos a nosa strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Será que todo o mundo chegar como este implementado? 1032 00:55:56,400 --> 00:55:58,830 Mentres loops-- Sei que non ten feito moito con eles, 1033 00:55:58,830 --> 00:56:01,240 pero son normalmente moi, moi útil se 1034 00:56:01,240 --> 00:56:05,390 Non sei o que está parando condición ten necesariamente que ser. 1035 00:56:05,390 --> 00:56:06,220 >> Pregunta? 1036 00:56:06,220 --> 00:56:10,080 >> Audiencia: Podemos escribir nulo coa condición de tempo? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESOR: Aínda? 1038 00:56:10,940 --> 00:56:15,304 É, polo tanto, neste problema que tiven que caras asumir que s non será nulo. 1039 00:56:15,304 --> 00:56:17,220 Porque lembre, en teoría, se eu che dei 1040 00:56:17,220 --> 00:56:21,180 un punteiro que era demasiado grande de memoria, que lle daría o nulo, non? 1041 00:56:21,180 --> 00:56:23,770 Iso é o que o operativo sistema faría. 1042 00:56:23,770 --> 00:56:26,960 >> Entón, se eu non lle dixo para asumir s sería nulo, ten que comprobar. 1043 00:56:26,960 --> 00:56:32,050 Entón aquí, faría, se s é igual a é igual a cero, volver un. 1044 00:56:32,050 --> 00:56:33,028 Algo así. 1045 00:56:33,028 --> 00:56:34,153 Audiencia: [inaudível] cero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESOR: OK, eu vou dicir vostede por que non podemos facelo. 1048 00:56:39,370 --> 00:56:43,357 Porque recorda na memoria, ben, aquí. 1049 00:56:43,357 --> 00:56:43,940 Imos aquí. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Ten bloques xigantes memoria de todos con reixas 1052 00:56:54,090 --> 00:56:56,680 que almacenan os valores diferentes, non? 1053 00:56:56,680 --> 00:57:00,110 E así todo o é-- para unha cadea exemplo, se queremos entrada Ola, 1054 00:57:00,110 --> 00:57:05,490 sería H-E-G-L-S barra invertida cero, non? 1055 00:57:05,490 --> 00:57:09,570 E entón, quen sabe, como chou cousas que son aquí despois. 1056 00:57:09,570 --> 00:57:11,220 >> Nós realmente non sei o que está aí. 1057 00:57:11,220 --> 00:57:13,350 E por iso, se fose facer no canto de barra invertida cero, 1058 00:57:13,350 --> 00:57:15,590 null, non pode ser nulo. 1059 00:57:15,590 --> 00:57:17,680 Porque só pode significar algunhas outras cousas aleatorias 1060 00:57:17,680 --> 00:57:19,270 que non pertencen na súa cadea. 1061 00:57:19,270 --> 00:57:23,219 E así, o xeito que sempre coñecemos unha secuencia termina cunha barra invertida é cero. 1062 00:57:23,219 --> 00:57:25,760 E así que é sempre como nós comprobar a ver o final dunha secuencia de carácteres. 1063 00:57:25,760 --> 00:57:30,820 >> Null, todo o que significa que se ten un punteiro inexistente, en primeiro lugar, 1064 00:57:30,820 --> 00:57:36,160 ou a súa memoria é tan grande que non pode devolve-lo, el sería nulo. 1065 00:57:36,160 --> 00:57:40,150 Polo tanto, moito coidado ao diferenciar a diferenza entre nula 1066 00:57:40,150 --> 00:57:42,130 ea barra invertida cero. 1067 00:57:42,130 --> 00:57:43,670 Si. 1068 00:57:43,670 --> 00:57:46,886 >> Todos OK con iso? 1069 00:57:46,886 --> 00:57:48,150 Aceptar. 1070 00:57:48,150 --> 00:57:50,440 >> Así que tiven que vostedes escribir strlen. 1071 00:57:50,440 --> 00:57:53,790 Viabilizar tamén poderiamos preguntar-lle escribir out A a I, lembre que "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 ou o que vostedes queren chamalo? 1073 00:57:55,400 --> 00:57:58,010 Esa función en Vigenère e César, que 1074 00:57:58,010 --> 00:58:00,900 convértese nun valor ASCII para un enteiro? 1075 00:58:00,900 --> 00:58:04,360 Isto tamén ven en cuestionarios pasados das funcións que xa lle pediu para escribir. 1076 00:58:04,360 --> 00:58:08,280 >> Practicamente calquera función que xa usou e é 1077 00:58:08,280 --> 00:58:11,660 moi fácil escribir-se, sensores de gusto é inferior, 1078 00:58:11,660 --> 00:58:14,620 é superior, a inferior, a parte superior. 1079 00:58:14,620 --> 00:58:17,964 Funcións que converten un secuencia de minúsculas para maiúsculas. 1080 00:58:17,964 --> 00:58:19,380 Todos sabemos como facelo, non? 1081 00:58:19,380 --> 00:58:21,100 É moi sinxelo. 1082 00:58:21,100 --> 00:58:24,770 Só quero estar seguro de que vostede can-- é o mesmo proceso de pensamento. 1083 00:58:24,770 --> 00:58:26,940 Acaba de facer unha iteración través e cambiar as cousas. 1084 00:58:26,940 --> 00:58:30,190 Quere contar ou cando virar as cousas de forma diferente. 1085 00:58:30,190 --> 00:58:32,280 >> Quere suggest-- I Non sei se imos 1086 00:58:32,280 --> 00:58:39,080 para pedirlle que memorizar o que o capital Un ou Z de capital, ou minúsculas Un minúsculas 1087 00:58:39,080 --> 00:58:42,640 z están en ASCII, pero quere suxerir quizais por escrito, que establece, en caso 1088 00:58:42,640 --> 00:58:44,124 o que facemos. 1089 00:58:44,124 --> 00:58:45,540 Só vós ter unha referencia. 1090 00:58:45,540 --> 00:58:47,180 Como maiúscula é, o que, 197? 1091 00:58:47,180 --> 00:58:51,320 E entón minúsculas é como 50 algo. 1092 00:58:51,320 --> 00:58:52,492 65, si, alí vai. 1093 00:58:52,492 --> 00:58:54,950 Entón, só sei moi ben o diferenza entre eles é de 32. 1094 00:58:54,950 --> 00:58:57,670 Isto é moi importante. 1095 00:58:57,670 --> 00:58:58,170 Si. 1096 00:58:58,170 --> 00:59:01,445 Eu son bo niso? 1097 00:59:01,445 --> 00:59:01,945 Aceptar. 1098 00:59:01,945 --> 00:59:03,109 >> Audiencia: Poderiamos teoricamente escribir algún 1099 00:59:03,109 --> 00:59:04,410 destes abaixo tamén na nosa little-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESOR: Vostede teoricamente podería só copiar a función abaixo. 1101 00:59:07,035 --> 00:59:08,482 Iso é certo. 1102 00:59:08,482 --> 00:59:11,080 >> Audiencia: Non [inaudível]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESOR: Vostedes teñen unha folla. 1104 00:59:12,720 --> 00:59:14,194 Vostedes teñen unha folla de nota. 1105 00:59:14,194 --> 00:59:14,860 Pode escribilo. 1106 00:59:14,860 --> 00:59:15,490 Pode escribilo. 1107 00:59:15,490 --> 00:59:17,031 Podes facer o que quere con el. 1108 00:59:17,031 --> 00:59:18,530 Si. 1109 00:59:18,530 --> 00:59:21,406 Entón, en teoría, se quere, ir. 1110 00:59:21,406 --> 00:59:23,338 >> Audiencia: [inaudível] pero nós realmente non 1111 00:59:23,338 --> 00:59:25,994 necesariamente que lembrar o valor, podemos só 1112 00:59:25,994 --> 00:59:28,914 usar a parte superior ou funcións inferior, non? 1113 00:59:28,914 --> 00:59:29,580 PROFESOR: Yeah. 1114 00:59:29,580 --> 00:59:32,740 Pero se nós demos-lle unha pregunta que di que escribir para superior, 1115 00:59:32,740 --> 00:59:34,350 entón precisas para escribilo. 1116 00:59:34,350 --> 00:59:38,150 Entón podedes supor que caras teñen acceso a todas as funcións, 1117 00:59:38,150 --> 00:59:41,523 pero se quere empregar para superior ou inferior, o que tamén ten que facer? 1118 00:59:41,523 --> 00:59:43,840 >> Audiencia: [inaudível] usar CS50 [inaudível] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESOR: É CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Teña coidado alí. 1122 00:59:48,310 --> 00:59:50,640 >> Así, a parte superior, a inferior, é superior, sexa inferior, 1123 00:59:50,640 --> 00:59:52,990 funcións que implican manipulación de cadea son 1124 00:59:52,990 --> 00:59:55,490 todo dentro de un ou outro a ASCII ou dentro da biblioteca matemática 1125 00:59:55,490 --> 00:59:57,350 ou dentro da biblioteca cadea. 1126 00:59:57,350 --> 01:00:00,290 Entón, se vostedes usalos funcións, teña coidado de lembrar 1127 01:00:00,290 --> 01:00:01,451 para incluír este cabeceira. 1128 01:00:01,451 --> 01:00:03,950 Por iso, se cadra tamén algo que pretende incluír na súa folla, 1129 01:00:03,950 --> 01:00:04,892 o que son a cabeceira? 1130 01:00:04,892 --> 01:00:06,600 Cales son as bibliotecas está a usar? 1131 01:00:06,600 --> 01:00:08,550 Que funcións son dentro desas bibliotecas? 1132 01:00:08,550 --> 01:00:09,230 É importante. 1133 01:00:09,230 --> 01:00:10,420 >> Si? 1134 01:00:10,420 --> 01:00:12,570 >> Audiencia: Poderiamos só policial fóra e facer hashtag 1135 01:00:12,570 --> 01:00:14,955 a través do absolutamente cada letra que xa 1136 01:00:14,955 --> 01:00:17,340 visto como sobre todas as cuestións? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESOR: Podería. 1138 01:00:18,320 --> 01:00:20,361 Non sei o quão feliz estaremos ao grao 1139 01:00:20,361 --> 01:00:25,090 que proba cando cada peza de código é dúas veces máis longo, xa que ten que ser. 1140 01:00:25,090 --> 01:00:27,200 Non sei, nós puidemos sacar un punto para o estilo. 1141 01:00:27,200 --> 01:00:28,790 Pero, en teoría, o seu código sería correcto. 1142 01:00:28,790 --> 01:00:30,915 Vostedes poderían policial fóra e basta incluír todo. 1143 01:00:30,915 --> 01:00:32,044 Iso é bo de máis, si. 1144 01:00:32,044 --> 01:00:32,960 Audiencia: [inaudível]. 1145 01:00:32,960 --> 01:00:33,270 PROFESOR: Yeah. 1146 01:00:33,270 --> 01:00:34,900 Quere suxerir non facelo aínda. 1147 01:00:34,900 --> 01:00:35,505 Si. 1148 01:00:35,505 --> 01:00:36,130 Audiencia: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESOR: Boa pregunta. 1150 01:00:36,620 --> 01:00:37,480 Audiencia: Entón, o peor escenario. 1151 01:00:37,480 --> 01:00:38,563 PROFESOR: O peor caso. 1152 01:00:38,563 --> 01:00:40,350 Se esquece totalmente, podería facelo. 1153 01:00:40,350 --> 01:00:40,850 Si. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Yep, o código é logo alí. 1156 01:00:45,400 --> 01:00:49,176 Eu usei n no canto de conta, pero, vostede sabe, calquera que sexa o seu barco flota. 1157 01:00:49,176 --> 01:00:51,092 Audiencia: Espérase, polo que non tería que hashtag 1158 01:00:51,092 --> 01:00:53,460 incluír porque somos comezando o int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESOR: Si, eu só asumir que nós nos pediu para escribir a función. 1161 01:00:59,924 --> 01:01:02,340 Se quere ser seguro, probablemente podería poñelas alí. 1162 01:01:02,340 --> 01:01:05,650 Pero eu simplemente non se incomodou, si. 1163 01:01:05,650 --> 01:01:09,919 >> Eu non sei se precisa de biblioteca para iso. 1164 01:01:09,919 --> 01:01:12,710 Porque non está realmente a impresión algo ou nada, non? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Si, eu non sei se precisa dunha biblioteca. 1167 01:01:19,568 --> 01:01:22,400 >> Aceptar. 1168 01:01:22,400 --> 01:01:26,020 Este tamén é un pouco máis longo as liñas de manipulación de memoria. 1169 01:01:26,020 --> 01:01:27,400 Este tipo de bocado complicado. 1170 01:01:27,400 --> 01:01:28,960 Pense sobre iso. 1171 01:01:28,960 --> 01:01:30,580 Ten unha función chamada func. 1172 01:01:30,580 --> 01:01:33,570 Eu podería ter chamado el o que sexa, pero eu escollo para nomea-la func. 1173 01:01:33,570 --> 01:01:36,000 Teño o enriba do meu principal. 1174 01:01:36,000 --> 01:01:39,790 Teña en conta que, quere ter unha función tras o seu principal, 1175 01:01:39,790 --> 01:01:42,370 quere estar seguro de que inclúen o prototipo do cume. 1176 01:01:42,370 --> 01:01:45,750 >> Pero, neste caso, foi tan curta que eu sentín que eu podería só 1177 01:01:45,750 --> 01:01:47,260 inclui-lo na parte superior da páxina. 1178 01:01:47,260 --> 01:01:51,170 Non precisaba ter o prototipo, porque xa está escrito anteriormente. 1179 01:01:51,170 --> 01:01:55,430 Entón todo o que eu estou facendo na miña función principal está creando enteiro x é igual a 10. 1180 01:01:55,430 --> 01:02:00,490 Estou chamando miña función func, e, a continuación, imprimir algo. 1181 01:02:00,490 --> 01:02:02,840 >> E, a continuación, que, de feito, o que func está facendo. 1182 01:02:02,840 --> 01:02:04,340 Vós queredes pensar por iso. 1183 01:02:04,340 --> 01:02:05,423 Porque é un pouco complicado. 1184 01:02:05,423 --> 01:02:07,220 É moi, moi complicado, en realidade. 1185 01:02:07,220 --> 01:02:09,549 Pensar co que este programa sería outputting. 1186 01:02:09,549 --> 01:02:10,840 Vou dar a vostedes dous minutos. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Boas discusións? 1189 01:03:37,891 --> 01:03:38,853 >> Audiencia: É. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESOR: Yeah. 1191 01:03:39,815 --> 01:03:42,220 Todo ben, entón que é complicado por unha razón. 1192 01:03:42,220 --> 01:03:44,845 E é por iso que eu quixen traer esta a atención de todos. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Alguén quere me dar unha suxestión, un intento? 1195 01:03:51,147 --> 01:03:52,230 O que isto imprimir? 1196 01:03:52,230 --> 01:03:53,930 Totalmente ben se está mal. 1197 01:03:53,930 --> 01:03:55,619 Si? 1198 01:03:55,619 --> 01:03:59,483 >> Audiencia: Creo que é 100 e logo 10 en dúas liñas separadas. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESOR: E a 10? 1200 01:04:00,940 --> 01:04:03,154 Alguén ten algunha outra suposicións? 1201 01:04:03,154 --> 01:04:04,150 Si? 1202 01:04:04,150 --> 01:04:09,040 >> Audiencia: Quizais só 10, porque func non está retornando nada? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESOR: OK, entón nós ten palpite número un 1204 01:04:11,610 --> 01:04:14,990 que suporía número é dous indo só para imprimir 10. 1205 01:04:14,990 --> 01:04:17,623 Alguén ten algunha outra suposicións? 1206 01:04:17,623 --> 01:04:19,654 Aceptar. 1207 01:04:19,654 --> 01:04:21,070 Entón, imos camiñar por este, non? 1208 01:04:21,070 --> 01:04:23,903 Sempre que incorporarse unha peza de código, non basta ollar para el e ser como, 1209 01:04:23,903 --> 01:04:25,060 ah, iso é tanta cousa! 1210 01:04:25,060 --> 01:04:26,460 Estou tan confuso! 1211 01:04:26,460 --> 01:04:28,220 Como, acougar. 1212 01:04:28,220 --> 01:04:31,602 Só sei que podería só ollar a través de código liña por liña. 1213 01:04:31,602 --> 01:04:32,310 Isto é todo o que é. 1214 01:04:32,310 --> 01:04:33,840 É como ler un libro. 1215 01:04:33,840 --> 01:04:38,000 >> Así, con calquera función, sempre comezan en principal. 1216 01:04:38,000 --> 01:04:40,860 Entón, nós estamos indo a comezan en void main int, 1217 01:04:40,860 --> 01:04:43,010 mesmo o programa de xa parten, non? 1218 01:04:43,010 --> 01:04:45,070 Comezar no no baleiro principal. 1219 01:04:45,070 --> 01:04:48,030 Int x é igual a 10. 1220 01:04:48,030 --> 01:04:50,400 >> Entón, eu vou borrar iso. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Vou chamar a memoria só para ti caras pode tipo de ver o que está pasando. 1223 01:04:58,470 --> 01:05:02,190 >> Teña en conta que aquí temos a nosa pila? 1224 01:05:02,190 --> 01:05:05,810 Ata aquí temos o noso amontoar nalgún lugar por aquí. 1225 01:05:05,810 --> 01:05:07,470 Pila crece, non? 1226 01:05:07,470 --> 01:05:10,150 E dentro do conxunto, ten a corrente eléctrica, así como funciona 1227 01:05:10,150 --> 01:05:12,230 todos os tubos principais variables locais. 1228 01:05:12,230 --> 01:05:14,310 >> Entón, aquí, int x igual a 10. 1229 01:05:14,310 --> 01:05:17,670 Dentro da nosa función principal somos a creación dunha variable chamada x. 1230 01:05:17,670 --> 01:05:20,590 Estamos establecendo que igual a 10. 1231 01:05:20,590 --> 01:05:24,200 Aquí tes algunhas x, e está definindo que igual a 10, á dereita, 1232 01:05:24,200 --> 01:05:25,400 dentro principal. 1233 01:05:25,400 --> 01:05:27,430 Todo o mundo é bo? 1234 01:05:27,430 --> 01:05:28,070 >> Función. 1235 01:05:28,070 --> 01:05:30,330 Entón, agora, dentro do noso principal función, estamos chamando 1236 01:05:30,330 --> 01:05:31,810 a función que escribimos anteriormente. 1237 01:05:31,810 --> 01:05:34,550 Entón, nós estamos agora entrar na segunda función. 1238 01:05:34,550 --> 01:05:40,120 Nós imos crear outro variable int x é igual a 100. 1239 01:05:40,120 --> 01:05:42,410 O que está pasando aquí na pila? 1240 01:05:42,410 --> 01:05:46,980 Que pasa cando chamar un función que crea novas variables? 1241 01:05:46,980 --> 01:05:50,038 Que pasa aquí na pila? 1242 01:05:50,038 --> 01:05:52,134 >> Audiencia: [inaudível] pilas enriba? 1243 01:05:52,134 --> 01:05:52,800 PROFESOR: Yeah. 1244 01:05:52,800 --> 01:05:54,050 Por iso, en realidade, crea unha copia. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 E que tipo de pilas na parte superior. 1247 01:05:57,740 --> 01:06:00,700 Pense no stack-- unha pila de libros, unha pila de nada. 1248 01:06:00,700 --> 01:06:06,520 Piles na parte superior, primeiro na última a fóra, último a entrar, primeiro en saír. 1249 01:06:06,520 --> 01:06:08,471 >> Por iso, vai crear un x aquí. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Isto vai ter todas as variables funcs. 1252 01:06:14,450 --> 01:06:14,950 Gran. 1253 01:06:14,950 --> 01:06:20,980 Polo tanto, agora temos dous x diferentes que representan dúas cousas moi diferentes. 1254 01:06:20,980 --> 01:06:24,470 Entón nós imos para imprimir a número enteiro de x. 1255 01:06:24,470 --> 01:06:26,430 Entón, imos imprimir 100, non? 1256 01:06:26,430 --> 01:06:29,389 Porque aquí é 100. 1257 01:06:29,389 --> 01:06:31,680 Entón esta é a primeira cousa que está indo a imprimir. 1258 01:06:31,680 --> 01:06:35,710 Como esta función devolve nada, agora esa función, esta liña no principal 1259 01:06:35,710 --> 01:06:37,070 está feito. 1260 01:06:37,070 --> 01:06:39,160 Todos bo comigo ata agora? 1261 01:06:39,160 --> 01:06:43,034 >> Entón, nós estamos agora a través de dous dos tres liñas de nosa función principal. 1262 01:06:43,034 --> 01:06:44,450 Agora imos para a terceira liña. 1263 01:06:44,450 --> 01:06:46,350 Estamos indo para printf. 1264 01:06:46,350 --> 01:06:48,222 ¿Que é este x dentro principal? 1265 01:06:48,222 --> 01:06:49,263 O que isto supón? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> O valor é x agora? 1268 01:06:54,280 --> 01:06:55,220 >> Audiencia: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESOR: É 100? 1270 01:06:56,799 --> 01:06:57,590 Audiencia: Still 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESOR: Still 10. 1272 01:06:58,878 --> 01:07:00,870 Si. 1273 01:07:00,870 --> 01:07:06,810 Porque lembre, no prazo de nosa func, x é igual a 100. 1274 01:07:06,810 --> 01:07:09,690 Pero se volvemos atrás a nosa función principal, 1275 01:07:09,690 --> 01:07:12,440 variable que é almacenado nunha lugar diferente na nosa pila. 1276 01:07:12,440 --> 01:07:16,250 >> Entón, agora temos que volver ao pila principal, rede de variables locais. 1277 01:07:16,250 --> 01:07:18,460 E aquí onde x é igual a 10. 1278 01:07:18,460 --> 01:07:20,300 E así imos imprimir 10. 1279 01:07:20,300 --> 01:07:22,530 >> Entón, ela estaba absolutamente certo. 1280 01:07:22,530 --> 01:07:25,053 Nós imos ter a saída de 100 e 10. 1281 01:07:25,053 --> 01:07:25,553 Si? 1282 01:07:25,553 --> 01:07:28,700 Audiencia: Cando malloc, é o heap ou do conxunto que é [inaudível]? 1283 01:07:28,700 --> 01:07:31,950 PROFESOR: Cando malloc, está tomando memoria do heap 1284 01:07:31,950 --> 01:07:32,830 ea súa distribución. 1285 01:07:32,830 --> 01:07:34,950 De xeito que non ten para xogar con nada diso. 1286 01:07:34,950 --> 01:07:38,100 Entón eu creo que a maior takeaway aquí é algo chamado ámbito. 1287 01:07:38,100 --> 01:07:39,650 >> Para aqueles de vostedes que estaban en a sesión de revisión na noite pasada, 1288 01:07:39,650 --> 01:07:41,080 Falamos un pouco sobre iso. 1289 01:07:41,080 --> 01:07:45,380 Ámbito define como e cando existan as súas variables. 1290 01:07:45,380 --> 01:07:48,050 Ou no que enmarca facer existir súas variables. 1291 01:07:48,050 --> 01:07:51,690 >> Practicamente a regra xeral é, o seu variables-- se crealos 1292 01:07:51,690 --> 01:07:56,660 dentro braces-- rizado existen soamente dentro desas claves. 1293 01:07:56,660 --> 01:08:00,312 >> Así, por exemplo, na nosa función de func, ve estas dúas chaves. 1294 01:08:00,312 --> 01:08:02,020 Se está creando calquera cousa dentro del, 1295 01:08:02,020 --> 01:08:06,500 posibilidades son todo o que está facendo é a creación dunha pila e que o almacenamento de alí. 1296 01:08:06,500 --> 01:08:07,430 Mesmo na principal. 1297 01:08:07,430 --> 01:08:09,950 Isto é só almacenado dentro do principal. 1298 01:08:09,950 --> 01:08:13,560 >> Ademais, quere ser moi, moi coidado aquí. 1299 01:08:13,560 --> 01:08:18,310 Porque ámbito tamén presta Se a diferentes exemplos. 1300 01:08:18,310 --> 01:08:25,950 Así, por exemplo para unha loop, para int i é igual a 0. 1301 01:08:25,950 --> 01:08:28,460 I é menor que, eu non sei, 10. 1302 01:08:28,460 --> 01:08:32,111 I plus plus. 1303 01:08:32,111 --> 01:08:34,560 E ten o código para dentro del, non? 1304 01:08:34,560 --> 01:08:38,830 >> Onde é que esta variable, i, en realidade, só existen? 1305 01:08:38,830 --> 01:08:40,510 Só dentro do seu loop for. 1306 01:08:40,510 --> 01:08:43,640 Entón Aposto que moitos de vostedes teñen probablemente atopou este erro cando 1307 01:08:43,640 --> 01:08:45,930 está facendo co seu programa Serie de exercicios. 1308 01:08:45,930 --> 01:08:49,990 Cantos de vostedes intentaron utilizar i fóra dun loop e tiña un erro? 1309 01:08:49,990 --> 01:08:53,310 Como unha enteiros sen referencia ou algo así? 1310 01:08:53,310 --> 01:08:56,069 >> A razón pola que isto ocorre é porque está aquí 1311 01:08:56,069 --> 01:08:59,109 creando algo que só existe dentro do seu loop for. 1312 01:08:59,109 --> 01:09:01,972 E se tentar usalo, eu non realmente existe fóra del. 1313 01:09:01,972 --> 01:09:04,930 Entón, basicamente, un ordenador dicindo, eu Non sei o que está falando. 1314 01:09:04,930 --> 01:09:08,689 Todo o que sei é que eu era un aquí, pero agora xa non é. 1315 01:09:08,689 --> 01:09:12,580 >> Entón, se eu fose para crear un loop for a dentro, non? 1316 01:09:12,580 --> 01:09:19,080 E eu vou crear outra, como int j, e telo facer o que quere. 1317 01:09:19,080 --> 01:09:23,689 E ten un código dentro que loop, j só existe aquí. 1318 01:09:23,689 --> 01:09:26,029 Pero iso tamén hai dentro de min. 1319 01:09:26,029 --> 01:09:29,310 E así j só existe dentro deste loop for, 1320 01:09:29,310 --> 01:09:33,850 Considerando i existe na cousa toda. 1321 01:09:33,850 --> 01:09:34,500 >> Todo o mundo é clara? 1322 01:09:34,500 --> 01:09:37,416 O mesmo con instrucións condicionais se quere crear algo. 1323 01:09:37,416 --> 01:09:40,390 Mesmo con loops mentres que se quere crear algo. 1324 01:09:40,390 --> 01:09:42,390 Isto é algo a ser moi, moi coidado. 1325 01:09:42,390 --> 01:09:45,681 Polo tanto, este foi realmente un bo problema no sentido de que demostrou dúas cousas. 1326 01:09:45,681 --> 01:09:47,160 El demostrou por primeira vez, o ámbito de aplicación. 1327 01:09:47,160 --> 01:09:49,550 E demostrou tamén a distribución de memoria. 1328 01:09:49,550 --> 01:09:54,130 Porque vostedes deben saber que funcións crecer cara arriba na pila. 1329 01:09:54,130 --> 01:09:56,710 E que cando chamar funcións, está creando 1330 01:09:56,710 --> 01:09:59,060 esencialmente unha nova pila de memoria. 1331 01:09:59,060 --> 01:10:02,100 Isto é moi diferente do o que a súa memoria de rede é. 1332 01:10:02,100 --> 01:10:03,300 Si. 1333 01:10:03,300 --> 01:10:03,800 Ufa! 1334 01:10:03,800 --> 01:10:05,470 Todos OK sobre iso? 1335 01:10:05,470 --> 01:10:06,750 Iso foi confuso. 1336 01:10:06,750 --> 01:10:09,380 Moi bos temas para pasar por riba, porque probablemente está 1337 01:10:09,380 --> 01:10:12,255 indo para obter un complicado cousas como esta no cuestionario. 1338 01:10:12,255 --> 01:10:13,350 Si. 1339 01:10:13,350 --> 01:10:13,850 Legal. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Vou poñer chegar nun 100 A liña 10 e despois o outro. 1342 01:10:18,430 --> 01:10:21,468 Si, moi bo. 1343 01:10:21,468 --> 01:10:26,350 >> OK, agora vostedes van comezar a oportunidade de ser os ATs. 1344 01:10:26,350 --> 01:10:30,600 Comeza a responder a todas a encantador correos electrónicos que ás veces teño. 1345 01:10:30,600 --> 01:10:34,290 >> Entón, Dear Andi, vexo Creo que ten algo pasando de malo co meu compilador. 1346 01:10:34,290 --> 01:10:37,910 Estou seguro de que o meu código está correcto, pero eu sigo recibindo un fallo de segmento 1347 01:10:37,910 --> 01:10:39,074 cada vez que eu corro. 1348 01:10:39,074 --> 01:10:39,740 Qué está a pasar? 1349 01:10:39,740 --> 01:10:42,844 Por favor, axuden, moito amor. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Se vós ten algo como que como respondería? 1352 01:10:49,410 --> 01:10:51,860 Estes son realmente moi común preguntas que vai pedir para ti. 1353 01:10:51,860 --> 01:10:54,090 É que, nós imos dar-lle un escenario, imos dar 1354 01:10:54,090 --> 01:10:56,350 o mellor palpite sobre o que está pasando. 1355 01:10:56,350 --> 01:11:00,710 Alguén ten unha facada en o que está pasando? 1356 01:11:00,710 --> 01:11:02,654 Si? 1357 01:11:02,654 --> 01:11:06,056 >> Audiencia: Quizais o desreferenciado null, algo así como o punteiro 1358 01:11:06,056 --> 01:11:08,924 está a apuntar cara algo nulo. 1359 01:11:08,924 --> 01:11:11,590 PROFESOR: Si, iso sería un exemplo cando iso acontecería. 1360 01:11:11,590 --> 01:11:14,467 Pero cal é a imaxe máis grande do que está pasando aquí? 1361 01:11:14,467 --> 01:11:17,050 Audiencia: É que estás para acceder a memoria que non está 1362 01:11:17,050 --> 01:11:18,175 debería ter acceso? 1363 01:11:18,175 --> 01:11:19,200 Profesor: Exactamente. 1364 01:11:19,200 --> 01:11:24,800 Entón, pense dun fallo seg, un off límites, área restrinxida na memoria 1365 01:11:24,800 --> 01:11:27,780 que non debe estar tocando. 1366 01:11:27,780 --> 01:11:31,670 >> Entón, basicamente cando estás para index-- coma 1367 01:11:31,670 --> 01:11:34,110 vostede declarou un matriz de cero a nove. 1368 01:11:34,110 --> 01:11:37,360 Pero tentar tocar que 10 valor, non ten acceso a iso. 1369 01:11:37,360 --> 01:11:38,694 Porque non declarou el. 1370 01:11:38,694 --> 01:11:40,943 E para que o seu ordenador está indo ollar para iso ser así, 1371 01:11:40,943 --> 01:11:43,440 uh oh, estás ir fóra dos límites do índice. 1372 01:11:43,440 --> 01:11:45,270 Vou darlle un fallo de segmento. 1373 01:11:45,270 --> 01:11:46,590 >> Debería como segmento, non? 1374 01:11:46,590 --> 01:11:49,665 Un segmento extra, a culpa é cando se trata de romper algo 1375 01:11:49,665 --> 01:11:50,790 e non debería estar alí. 1376 01:11:50,790 --> 01:11:53,660 Fallo de segmentación é en calquera momento tentar tocar as cousas 1377 01:11:53,660 --> 01:11:54,970 que non debe estar tocando. 1378 01:11:54,970 --> 01:11:56,815 >> Así, exemplos comúns son un índice. 1379 01:11:56,815 --> 01:11:58,940 Por suposto, se está tentando tarifas que era nulo, 1380 01:11:58,940 --> 01:12:00,220 que tamén funcionaría ben. 1381 01:12:00,220 --> 01:12:02,300 Se o punteiro estaba tentando tocar cousas que non deben tocar, 1382 01:12:02,300 --> 01:12:03,730 que tamén podería funcionar tan ben. 1383 01:12:03,730 --> 01:12:07,120 Máis tipicamente vai ver iso nunha matriz. 1384 01:12:07,120 --> 01:12:07,740 Todo o mundo é bo? 1385 01:12:07,740 --> 01:12:10,374 >> Audiencia: Entón se quere para acceder ao punto 10 1386 01:12:10,374 --> 01:12:12,290 e só hai un límite de nove ou algo así. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESOR: Si, exactamente. 1388 01:12:13,160 --> 01:12:13,660 Moi bonito. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Legal. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Estimado Andi. 1393 01:12:19,920 --> 01:12:23,440 Entón temos estes marabillosos cousas chamado tipos. 1394 01:12:23,440 --> 01:12:25,472 Se Unir sort-- como nós serra no exemplo cando 1395 01:12:25,472 --> 01:12:27,180 David fixo todo cousa en class-- polo que 1396 01:12:27,180 --> 01:12:29,760 se é moito máis rápido que calquera dos outros tipos, 1397 01:12:29,760 --> 01:12:33,310 por que incomoda mesmo sabendo calquera dos outros tipos? 1398 01:12:33,310 --> 01:12:35,100 >> ¿Que é esta cuestión realmente pregunta-lle? 1399 01:12:35,100 --> 01:12:36,659 Cal é a tres word-- 1400 01:12:36,659 --> 01:12:37,950 Audiencia: Cal é o trade-off? 1401 01:12:37,950 --> 01:12:38,530 Profesor: Exactamente. 1402 01:12:38,530 --> 01:12:39,946 Iso é o que a cuestión está pedindo. 1403 01:12:39,946 --> 01:12:43,682 Cal é o trade-off entre Merge sort versos doutros tipos? 1404 01:12:43,682 --> 01:12:45,850 >> Audiencia: Toma memoria, non? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESOR: Vostede explicar que un pouco máis? 1406 01:12:47,720 --> 01:12:49,490 Primeiro imos explicar tenda directa. 1407 01:12:49,490 --> 01:12:50,970 Como é que merge sort traballar? 1408 01:12:50,970 --> 01:12:55,220 >> Audiencia: El funciona por dividindo todo na metade 1409 01:12:55,220 --> 01:13:00,660 e, a continuación, colocar-lo xuntos e realocando lo en orde, 1410 01:13:00,660 --> 01:13:02,862 como cada vez que mesturar os sets. 1411 01:13:02,862 --> 01:13:03,820 PROFESOR: Moi bonito. 1412 01:13:03,820 --> 01:13:06,861 Entón, podo chamar iso, pero sería leve o meu cinco minutos para sacala. 1413 01:13:06,861 --> 01:13:10,220 Olle novo para os diapositivas sección onde nós Cubrimos merge sort. 1414 01:13:10,220 --> 01:13:10,790 Exactamente. 1415 01:13:10,790 --> 01:13:13,406 >> Así, a forma Unir obras de clasificación é el divide as cousas pola metade, 1416 01:13:13,406 --> 01:13:15,780 e el só mira para o primeiros valores de todos eles 1417 01:13:15,780 --> 01:13:17,000 e clasifica só iso. 1418 01:13:17,000 --> 01:13:20,364 Crea continuamente novas matrices e pon as cousas máis e máis en orde. 1419 01:13:20,364 --> 01:13:23,030 E así, mentres que é moi, moi rápido, porque it's-- vostede sabe, 1420 01:13:23,030 --> 01:13:25,380 unha investigación binaria é log n de n. 1421 01:13:25,380 --> 01:13:27,880 Está creando tantos matrices diferentes que é 1422 01:13:27,880 --> 01:13:29,700 utilizando unha cantidade enorme de memoria. 1423 01:13:29,700 --> 01:13:33,080 E así, mentres el é máis rápido, o trade-off aquí é que está a usar máis memoria. 1424 01:13:33,080 --> 01:13:38,490 >> E así, suxestión, tipos e investigacións foron cubertas moito máis este ano 1425 01:13:38,490 --> 01:13:41,610 que foron os anos anteriores. 1426 01:13:41,610 --> 01:13:45,100 Vostedes deberían ver que reflectido, en consecuencia, o quiz. 1427 01:13:45,100 --> 01:13:49,160 Eu sempre gastar tempo indo sobre o que todos os distintos tipos 1428 01:13:49,160 --> 01:13:52,320 son, como busca binaria, como o traballo de procura lineal. 1429 01:13:52,320 --> 01:13:54,750 Como quizais pseudocódigo codificar os para fóra. 1430 01:13:54,750 --> 01:13:55,950 Cales son os tempos de execución? 1431 01:13:55,950 --> 01:13:59,210 Algo así como tempos de execución é moi doado de copiar abaixo nunha folla de nota, 1432 01:13:59,210 --> 01:13:59,710 non? 1433 01:13:59,710 --> 01:14:01,420 >> É realmente difícil cando está no medio da proba 1434 01:14:01,420 --> 01:14:02,390 e ten que descubrir iso. 1435 01:14:02,390 --> 01:14:03,160 Pega o para abaixo. 1436 01:14:03,160 --> 01:14:05,550 Eu asegura que é vai ter que saber iso. 1437 01:14:05,550 --> 01:14:06,860 Cales son as vantaxes e inconvenientes? 1438 01:14:06,860 --> 01:14:10,064 No peor dos casos, os mellores escenarios para todos eles, moi coñecer. 1439 01:14:10,064 --> 01:14:10,564 Si? 1440 01:14:10,564 --> 01:14:12,730 >> Audiencia: Non necesitamos sabe codificar merge sort? 1441 01:14:12,730 --> 01:14:15,470 Como, necesitamos Teña en conta que o recursiva? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESOR: Eu dubido moito, só porque é como moi complicada. 1443 01:14:18,950 --> 01:14:22,282 Pero non se pode implacable se pedirte para usar pseudocódigo-lo. 1444 01:14:22,282 --> 01:14:22,781 Si. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Si, vale, máis unha. 1447 01:14:29,170 --> 01:14:31,387 Isto pode vir enriba en vostede última peza nun pouco. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Si? 1450 01:14:43,090 --> 01:14:44,930 Será que todo o mundo escoitou isto? 1451 01:14:44,930 --> 01:14:48,360 >> OK, entón practicamente primeiro todo, que tipo de programa 1452 01:14:48,360 --> 01:14:51,000 sería dándolle unha saída como esta? 1453 01:14:51,000 --> 01:14:54,350 Lembre pedimos que aprenda sobre este novo tipo de ferramenta de depuración? 1454 01:14:54,350 --> 01:14:57,340 Cal era o seu nome? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, dereita 1456 01:14:59,460 --> 01:15:02,600 >> Era un programa onde podería chamar que podía 1457 01:15:02,600 --> 01:15:05,940 manter o control de toda a memoria que está usando no seu programa e estaba a ocorrer. 1458 01:15:05,940 --> 01:15:11,090 Entón, se ten algo, como, definitivamente perdido, 40 bytes nun bloque. 1459 01:15:11,090 --> 01:15:14,870 Probablemente non está lembrando-se para liberalo la. 1460 01:15:14,870 --> 01:15:18,710 Porque se está a usar bytes de memoria, isto significa que un acceso esa memoria, 1461 01:15:18,710 --> 01:15:20,240 pero non foi capaz de liberar. 1462 01:15:20,240 --> 01:15:21,948 Entón quere facer Asegúrese de que tamén é 1463 01:15:21,948 --> 01:15:31,420 usando free-- que é un function-- para liberar todos 1464 01:15:31,420 --> 01:15:34,930 da memoria redistribuídos por malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Legal. 1466 01:15:35,500 --> 01:15:37,140 Polo tanto, este slide, eu vou telo instalado. 1467 01:15:37,140 --> 01:15:41,050 Está en todas partes en unha serie de conferencias, en moitos diapositivas sección. 1468 01:15:41,050 --> 01:15:44,254 Realmente quere estar seguro só sabe de todo isto. 1469 01:15:44,254 --> 01:15:47,170 Tanto na súa folla de nota ou se quere lembra-lo, Sinto-se libre para. 1470 01:15:47,170 --> 01:15:48,836 Isto é realmente, realmente, realmente importante. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Tamén un moi bo pregunta que podemos pedir. 1473 01:15:56,890 --> 01:16:00,320 Por que mirar Selección sort-- en Selección sort-- todos os tempos de execución 1474 01:16:00,320 --> 01:16:02,060 son n ao cadrado. 1475 01:16:02,060 --> 01:16:06,714 Independentemente de como a lista trata vostede como, entón por que é sort-- Selección 1476 01:16:06,714 --> 01:16:08,630 Vou dar a vostedes 30 segundo pensar sobre iso. 1477 01:16:08,630 --> 01:16:10,700 Porque é unha especie de confundir. 1478 01:16:10,700 --> 01:16:12,710 Trátase de algún pensamento conceptual. 1479 01:16:12,710 --> 01:16:16,470 Por que os tempos de execución sexa o mesmo en ambos os peores e os mellores escenarios? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Si? 1482 01:16:30,000 --> 01:16:38,084 >> Audiencia: Por cada especie Selección posición ou espazo neste pequeno conxunto 1483 01:16:38,084 --> 01:16:40,350 cousa ou o que quere. 1484 01:16:40,350 --> 01:16:44,430 Así, mentres que no mellor escenario, aínda que sexa perfectamente ordenados, 1485 01:16:44,430 --> 01:16:47,380 aínda tería que ser como, OK, un. 1486 01:16:47,380 --> 01:16:49,000 O primeiro lugar eu teño un. 1487 01:16:49,000 --> 01:16:50,250 E pasar por todos eles. 1488 01:16:50,250 --> 01:16:51,249 OK, é o menor. 1489 01:16:51,249 --> 01:16:53,053 E entón el vai de novo e é como, OK, dous 1490 01:16:53,053 --> 01:16:54,594 é a menor de todas as cousas. 1491 01:16:54,594 --> 01:16:56,804 Pero aínda ten que comprobar todos e cada un. 1492 01:16:56,804 --> 01:16:57,470 PROFESOR: Yeah. 1493 01:16:57,470 --> 01:17:00,490 Así, por exemplo, imos só dicir Temos unha lista, xa clasificado, 1494 01:17:00,490 --> 01:17:03,390 unha matriz de un a cinco. 1495 01:17:03,390 --> 01:17:07,100 O xeito que tipo de selección é que pasa por, el verifica estes dous. 1496 01:17:07,100 --> 01:17:08,234 A continuación, el verifica os dous. 1497 01:17:08,234 --> 01:17:09,650 E, a continuación, el verifica e verifica. 1498 01:17:09,650 --> 01:17:13,285 El mantén a verificación de todos eles, independentemente de haber ou non 1499 01:17:13,285 --> 01:17:14,160 é realmente clasificada. 1500 01:17:14,160 --> 01:17:16,450 Porque iso é simplemente o xeito no que o tipo funciona. 1501 01:17:16,450 --> 01:17:19,530 >> E así que esta cuestión é como unha cuestión conceptual imos pedir. 1502 01:17:19,530 --> 01:17:21,430 Onde en primeiro lugar, ten saber que tipo de Selección 1503 01:17:21,430 --> 01:17:23,304 é, á dereita, para poder para responder á pregunta. 1504 01:17:23,304 --> 01:17:26,200 Ten que ser capaz de entender conceptualmente o que está pasando. 1505 01:17:26,200 --> 01:17:30,760 E entón podes aplicala lo e pensar, OK imos só imaxinar peor escenario. 1506 01:17:30,760 --> 01:17:32,230 Están todos en orde decrecente. 1507 01:17:32,230 --> 01:17:33,290 Como iso afectaría isto? 1508 01:17:33,290 --> 01:17:34,650 >> O que se está a orde ascendente? 1509 01:17:34,650 --> 01:17:35,640 Se xa está clasificado? 1510 01:17:35,640 --> 01:17:37,240 Como iso afectaría os tempos de execución? 1511 01:17:37,240 --> 01:17:40,270 E, a continuación, tipo Selección, notará que en realidade non importa. 1512 01:17:40,270 --> 01:17:43,500 Porque está comprobando toda a valores, independentemente do que está pasando. 1513 01:17:43,500 --> 01:17:45,810 >> E así as cousas boas para lembrar. 1514 01:17:45,810 --> 01:17:50,290 Porque algúns tipos difiren doutros e que a mellor e os peores escenarios 1515 01:17:50,290 --> 01:17:52,740 afectaría todos eles. 1516 01:17:52,740 --> 01:17:56,700 >> Eu estou indo a realmente bater tipo porque iso vai estar no quiz. 1517 01:17:56,700 --> 01:17:57,199 Si. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 Aceptar. 1520 01:18:01,320 --> 01:18:05,590 Hai seis minutos do final. 1521 01:18:05,590 --> 01:18:09,880 Podo tomar tres minutos de preguntas. 1522 01:18:09,880 --> 01:18:12,290 Eu tamén pode colgar en torno a como 20 minutos despois sección 1523 01:18:12,290 --> 01:18:13,850 se quere facer preguntas tamén. 1524 01:18:13,850 --> 01:18:16,330 Alguén só ten realmente breve dúbidas ou cuestións conceptuais 1525 01:18:16,330 --> 01:18:17,360 son pouco claras sobre a dereita agora? 1526 01:18:17,360 --> 01:18:17,832 Si? 1527 01:18:17,832 --> 01:18:19,720 >> Audiencia: Pode falar un pouco pouco sobre os operadores bit a bit? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESOR: Yeah. 1529 01:18:20,280 --> 01:18:22,446 Así, os operadores bit a bit son algo que probablemente 1530 01:18:22,446 --> 01:18:24,170 pode só querer poñer na súa folla. 1531 01:18:24,170 --> 01:18:27,540 Entón quickly-- Non quero para ir moi a fondo 1532 01:18:27,540 --> 01:18:31,164 porque Harvard, na súa revisión sesión, cubriuse o moi ben. 1533 01:18:31,164 --> 01:18:33,080 Operador bit a bit, hai cinco deles, non? 1534 01:18:33,080 --> 01:18:41,370 >> Non é iso, que é x ou función, hai comercial, que é o e. 1535 01:18:41,370 --> 01:18:44,050 Pipe, que é o or. 1536 01:18:44,050 --> 01:18:46,790 E entón tes os dous distintos tipos de quendas. 1537 01:18:46,790 --> 01:18:50,610 >> Se eu lle dou dous valores, se Eu doulle, como, un e un. 1538 01:18:50,610 --> 01:18:52,390 Que tería que ser valorada como? 1539 01:18:52,390 --> 01:18:55,490 Se eu lle der certo e certo, certo? 1540 01:18:55,490 --> 01:18:56,930 E canto verdadeiro ou falso? 1541 01:18:56,930 --> 01:18:57,830 Aínda verdade, non? 1542 01:18:57,830 --> 01:18:59,762 Porque hai un ou. 1543 01:18:59,762 --> 01:19:01,220 Nós probablemente lle vai dar números. 1544 01:19:01,220 --> 01:19:03,780 Entón lembre, un é igual a realidade, o cero é igual a false. 1545 01:19:03,780 --> 01:19:07,407 E nós pode darlle estas cousas e pedir-lle para nos dicir o que pasa. 1546 01:19:07,407 --> 01:19:10,240 Harvard cobre dentro do primeiro 10 minutos de sesión de estudo 1547 01:19:10,240 --> 01:19:11,230 moi, moi ben. 1548 01:19:11,230 --> 01:19:14,260 Entón vostedes queren facer se ollar cara atrás sobre o tema. 1549 01:19:14,260 --> 01:19:16,387 >> Audiencia: É pisa5 será a proba? 1550 01:19:16,387 --> 01:19:16,970 PROFESOR: Non. 1551 01:19:16,970 --> 01:19:18,240 Nin sequera ollar para pisa5 agora. 1552 01:19:18,240 --> 01:19:18,810 É difícil. 1553 01:19:18,810 --> 01:19:22,830 Só non se molestas mesmo buscando pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Con todo, como algúns consellos e suxestións, I 1555 01:19:25,665 --> 01:19:28,320 quere suxerir que comece pisa5 así que o cuestionario é longo. 1556 01:19:28,320 --> 01:19:30,319 Este será o máis difícil semana, pero despois vostedes 1557 01:19:30,319 --> 01:19:34,590 será pasado que nos outeiros de verde e crías rolando, 1558 01:19:34,590 --> 01:19:36,115 e está todo ben. 1559 01:19:36,115 --> 01:19:39,810 >> Esta clase recibe significativa máis fácil despois do quinto pset. 1560 01:19:39,810 --> 01:19:41,560 Horario de atención: Audiencia son domingo, luns? 1561 01:19:41,560 --> 01:19:44,260 PROFESOR: Si, entón o horario de oficina será o domingo para o luns ao pset. 1562 01:19:44,260 --> 01:19:47,009 O horario de oficina esta noite, esencialmente, só será crítica ao quiz. 1563 01:19:47,009 --> 01:19:50,350 Se alguén quere vir e preguntar o TAS unha pregunta, nós imos estar alí. 1564 01:19:50,350 --> 01:19:53,220 >> Vou levar quizais unha pregunta se alguén ten unha pregunta? 1565 01:19:53,220 --> 01:19:53,809 Si? 1566 01:19:53,809 --> 01:19:55,850 Audiencia: Cando está nós que definen, [inaudível] 1567 01:19:55,850 --> 01:20:00,700 se dixo estrela nó e, a continuación, ao lado, fai o ordenador automaticamente 1568 01:20:00,700 --> 01:20:03,610 entender que é referíndose a outro punteiro? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESOR: Non. 1570 01:20:04,580 --> 01:20:06,710 >> Audiencia: Ten que relink iso [inaudível]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESOR: Entón, basicamente, o struct dun nodo é, marca, 1572 01:20:09,270 --> 01:20:12,620 é como se crear o nodo e entón tes un punteiro chamado seguinte. 1573 01:20:12,620 --> 01:20:14,630 Todo o que está facendo é tendo a estrutura alí. 1574 01:20:14,630 --> 01:20:16,387 Ten que asignar ese punteiro en algún lugar. 1575 01:20:16,387 --> 01:20:18,470 Así, os ordenadores non fai sabe o que está facendo aínda. 1576 01:20:18,470 --> 01:20:20,250 Vostede realmente ten que atribuílo cando está creando a súa lista ligada. 1577 01:20:20,250 --> 01:20:22,170 E iso é o que principalmente pset 5 será conectado. 1578 01:20:22,170 --> 01:20:24,106 Así, non se preocupa nada diso agora. 1579 01:20:24,106 --> 01:20:26,380 >> Audiencia: Entón non precisamos concentrarse máis na lista de enlace, só 1580 01:20:26,380 --> 01:20:27,440 o deseño xeral? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESOR: Só practicamente pilas, colas, listas de enlaces, árbores, táboas de hash. 1582 01:20:30,980 --> 01:20:33,639 Só ten que ser capaz de saber o que son. 1583 01:20:33,639 --> 01:20:35,680 Non imos pedir desexa algo específica 1584 01:20:35,680 --> 01:20:39,300 porque realmente non teño feito un pset que o cobre nada diso aínda. 1585 01:20:39,300 --> 01:20:45,540 >> Así, nos últimos dous minutos antes Eu define-lo libre para matar este quiz. 1586 01:20:45,540 --> 01:20:49,370 Moi ben, como, pense sobre como agora vostedes viñeron nesta clase. 1587 01:20:49,370 --> 01:20:52,820 >> Recordo cando dúas semanas desta clase, algúns de vostedes 1588 01:20:52,820 --> 01:20:55,720 pasar tres horas de auga escribir. 1589 01:20:55,720 --> 01:20:57,970 Canto tempo tardaría a xente a escribiren auga agora? 1590 01:20:57,970 --> 01:20:59,670 30 segundos, quizais? 1591 01:20:59,670 --> 01:21:01,810 Debería canto vostedes aprenderon. 1592 01:21:01,810 --> 01:21:04,320 CS é un asunto moi, moi difícil. 1593 01:21:04,320 --> 01:21:06,190 Non hai dúbida de que. 1594 01:21:06,190 --> 01:21:09,160 É difícil, é por iso que ninguén estuda. 1595 01:21:09,160 --> 01:21:10,730 É moi difícil. 1596 01:21:10,730 --> 01:21:11,650 E é totalmente bo. 1597 01:21:11,650 --> 01:21:14,150 >> E eu estou realmente orgulloso que todo o mundo xa fixo ata agora. 1598 01:21:14,150 --> 01:21:16,380 Serie de exercicios non son fáciles. 1599 01:21:16,380 --> 01:21:17,790 Eles levan unha morea de tempo. 1600 01:21:17,790 --> 01:21:22,580 Vostedes, eu nunca vou pedirlle para escribir o xogo de 15 ou Vigenère no pset. 1601 01:21:22,580 --> 01:21:24,160 Non é necesario só pirar con iso. 1602 01:21:24,160 --> 01:21:28,080 Todo o que estamos a probar aquí é avaliar seu coñecemento conceptual, así 1603 01:21:28,080 --> 01:21:31,524 como algunhas das súas habilidades básicas de codificación. 1604 01:21:31,524 --> 01:21:33,440 O ensaio está concibida para ser realmente reto. 1605 01:21:33,440 --> 01:21:36,180 Como, el está deseñado para que non queda 100. 1606 01:21:36,180 --> 01:21:39,880 Tamén está deseñado para ti, probablemente, non ser capaz de rematar en 75 minutos. 1607 01:21:39,880 --> 01:21:41,995 E iso é totalmente bo. 1608 01:21:41,995 --> 01:21:42,870 Eu son un estudante de min mesmo. 1609 01:21:42,870 --> 01:21:45,960 Eu sei, eu odio cando eu ando fóra dun quiz ser como, merda. 1610 01:21:45,960 --> 01:21:47,044 Iso foi realmente difícil. 1611 01:21:47,044 --> 01:21:49,460 Probablemente, o que vai happen-- e iso é totalmente bo, 1612 01:21:49,460 --> 01:21:50,751 Eu digo a vostedes agora. 1613 01:21:50,751 --> 01:21:53,190 Os medios sobre isto non son elevados en todo. 1614 01:21:53,190 --> 01:21:55,360 >> E para aqueles de vostedes que foron quedando, como, 1615 01:21:55,360 --> 01:21:57,870 trios nos seus conxuntos de problemas, iso non significa que é 1616 01:21:57,870 --> 01:21:59,536 indo para obter un 60 por cento nesta clase. 1617 01:21:59,536 --> 01:22:01,440 Se recibe un 60% no cuestionario, que non fai 1618 01:22:01,440 --> 01:22:03,330 Quere dicir que vai obter unha D nesta clase. 1619 01:22:03,330 --> 01:22:05,740 Vemos, especialmente I, para aqueles de vostedes na miña sección, 1620 01:22:05,740 --> 01:22:07,406 Vexo o quão duro vostedes están todos a traballar. 1621 01:22:07,406 --> 01:22:09,190 E eu manter o control do que iso. 1622 01:22:09,190 --> 01:22:11,420 >> Vostedes van estar ben. 1623 01:22:11,420 --> 01:22:14,580 Non hai memoria institucional felicidade ao final do semestre. 1624 01:22:14,580 --> 01:22:16,840 Porque todos os nenos de Harvard están dicindo os seus amigos, oh, vai estar ben. 1625 01:22:16,840 --> 01:22:18,381 Ninguén está dicindo a vostedes que aquí. 1626 01:22:18,381 --> 01:22:20,950 Entón eu teño que dicir a vostedes que aquí. 1627 01:22:20,950 --> 01:22:22,280 >> Vostedes van estar ben. 1628 01:22:22,280 --> 01:22:24,080 Estou tan orgullosa de todos vostedes. 1629 01:22:24,080 --> 01:22:25,680 A proba será difícil. 1630 01:22:25,680 --> 01:22:28,140 Estude para el, e despois só xoga-lo fóra. 1631 01:22:28,140 --> 01:22:31,280 Prepare-se para aprender cousas novas. 1632 01:22:31,280 --> 01:22:33,990 E comer doces. 1633 01:22:33,990 --> 01:22:35,940 Temos teñen lotes de doces. 1634 01:22:35,940 --> 01:22:37,760 >> Teña unha boa noite de sono. 1635 01:22:37,760 --> 01:22:40,420 Non non durmir, porque iso sería moi malo. 1636 01:22:40,420 --> 01:22:41,490 CS é unha morea de lóxica. 1637 01:22:41,490 --> 01:22:44,960 Se non durmir, non pode funcionar, eo seu cerebro non pode funcionar. 1638 01:22:44,960 --> 01:22:48,780 E eu vou estar aquí ao seguinte 20 minutos se alguén quere ir ao redor. 1639 01:22:48,780 --> 01:22:51,150 Vostedes están indo para matalo. 1640 01:22:51,150 --> 01:22:53,000 Boa sorte. 1641 01:22:53,000 --> 01:22:55,663