1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSOR: Então, a agenda para esta semana, que muita coisa não. 3 00:00:09,790 --> 00:00:12,801 Mas espero muito, muito útil e relevantes para vocês essa semana. 4 00:00:12,801 --> 00:00:15,550 Mas nós vamos gastar cerca de 15, 20 minutos apenas falando rapidamente 5 00:00:15,550 --> 00:00:17,370 sobre a lista de link. 6 00:00:17,370 --> 00:00:19,694 Listas de links vão ser coberto no quiz. 7 00:00:19,694 --> 00:00:22,610 Então, talvez seria muito útil para aprender um pouco sobre o que é. 8 00:00:22,610 --> 00:00:25,210 >> Nós vamos passar a grande maioria da seção de hoje 9 00:00:25,210 --> 00:00:27,640 passando por cima questionário zero problemas práticos. 10 00:00:27,640 --> 00:00:30,970 E então nós vamos salvar talvez 20, 30 minutos no final para quaisquer questões remanescentes 11 00:00:30,970 --> 00:00:32,850 alguém tem. 12 00:00:32,850 --> 00:00:34,610 >> E, em seguida, o último cinco minutos, eu vou 13 00:00:34,610 --> 00:00:36,467 a dar-se uma bomba de discurso para o quiz. 14 00:00:36,467 --> 00:00:38,050 Todos vocês caras querem estar aqui para isso. 15 00:00:38,050 --> 00:00:39,591 Porque ele vai ser um bom momento. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Tudo bem, então alguns materiais na lista de link. 18 00:00:49,230 --> 00:00:52,620 Como eles estão normalmente é estruturada Você tem o que é chamado de nó, certo? 19 00:00:52,620 --> 00:00:54,870 Você tem essas coisas chamadas nodos, que são estruturas. 20 00:00:54,870 --> 00:00:57,360 Eu vou passar por cima de como criar um nó no próximo slide. 21 00:00:57,360 --> 00:01:00,680 Mas essencialmente todos ligados listas é são dados que 22 00:01:00,680 --> 00:01:03,340 tem sido amarrados juntos via ponteiros. 23 00:01:03,340 --> 00:01:09,110 >> E assim a vantagem que temos de usar uma lista ligada mais, 24 00:01:09,110 --> 00:01:11,280 talvez, como uma matriz, é o facto de, em uma matriz 25 00:01:11,280 --> 00:01:15,000 você precisa de um bloco contíguo de memória todos no mesmo lugar, um 26 00:01:15,000 --> 00:01:16,870 após o outro, para ser capaz de ter que. 27 00:01:16,870 --> 00:01:20,200 Considerando que a lista ligada, você poderia têm pequenos pedaços aleatórios de memória 28 00:01:20,200 --> 00:01:23,020 todo o seu computador amarrados juntos por ponteiros. 29 00:01:23,020 --> 00:01:26,270 >> E, desta forma você podem acessar informações 30 00:01:26,270 --> 00:01:28,610 que vem um após o outro, depois a outra 31 00:01:28,610 --> 00:01:32,720 sem a necessidade de apenas um enorme pedaço de memória em seu computador em algum lugar. 32 00:01:32,720 --> 00:01:35,910 E por isso este é um dos principais razões pelas quais usamos lista de links. 33 00:01:35,910 --> 00:01:40,300 >> Em segundo lugar, é muito fácil de dinamicamente redimensionar a lista de links porque na matriz, 34 00:01:40,300 --> 00:01:44,720 quando você declarar uma matriz, você tem um certo valor definido. 35 00:01:44,720 --> 00:01:47,340 Digamos que eu queria criar um conjunto de 10 números inteiros. 36 00:01:47,340 --> 00:01:49,970 Eu criar uma matriz de 10 inteiros, e é isso. 37 00:01:49,970 --> 00:01:50,580 É 10. 38 00:01:50,580 --> 00:01:52,038 Eu não sei o que fazer depois disso. 39 00:01:52,038 --> 00:01:53,680 Se eu quisesse fazê-lo 11, não pode fazê-lo. 40 00:01:53,680 --> 00:01:55,710 Se eu quiser marcar 9, não pode fazê-lo. 41 00:01:55,710 --> 00:01:59,910 >> Considerando que, em uma lista de links, você pode adicionar e apagar e inserir onde quiser. 42 00:01:59,910 --> 00:02:04,940 Você pode redimensionar dinamicamente o seu estruturar aqui, sua estrutura de dados. 43 00:02:04,940 --> 00:02:08,370 E isso nos dá um monte mais flexibilidade adicionada 44 00:02:08,370 --> 00:02:11,320 que normalmente não tem com matrizes. 45 00:02:11,320 --> 00:02:15,210 >> Qualquer um confuso sobre a base estrutura de como uma lista de links é 46 00:02:15,210 --> 00:02:17,930 ou porque nós temos que usar um sobre uma matriz? 47 00:02:17,930 --> 00:02:20,330 Sim, nós vamos passar por cima em detalhe como realmente criar um. 48 00:02:20,330 --> 00:02:24,121 Mas esta é apenas uma espécie de o sentido geral agora. 49 00:02:24,121 --> 00:02:24,620 Legal. 50 00:02:24,620 --> 00:02:28,770 E assim matrizes são amarrados juntos dessas encantadoras pequenas coisas 51 00:02:28,770 --> 00:02:29,960 chamados de nós. 52 00:02:29,960 --> 00:02:32,210 Tudo o que um nó é um tipo de estrutura. 53 00:02:32,210 --> 00:02:36,090 Lembre-se, um struct é se você queria para criar um determinado tipo de variável 54 00:02:36,090 --> 00:02:39,850 C em que já não existir, você, como um programador, 55 00:02:39,850 --> 00:02:42,030 pode realmente criar isso sozinho. 56 00:02:42,030 --> 00:02:46,540 >> E assim, este tipo de dados estrutura é denominada nó, 57 00:02:46,540 --> 00:02:50,770 na verdade foi criado por nós, para que não existe dentro C por si só. 58 00:02:50,770 --> 00:02:53,150 E a maneira que você criar um é que você tem 59 00:02:53,150 --> 00:02:57,170 o cabeçalho de typedef struct, que informa o compilador que eu sou 60 00:02:57,170 --> 00:02:59,640 prestes a criar um struct. 61 00:02:59,640 --> 00:03:00,830 >> Vamos nomeá-la "nó". 62 00:03:00,830 --> 00:03:03,350 E dentro vamos para declarar uma variável em, 63 00:03:03,350 --> 00:03:05,060 que vai armazenar um valor. 64 00:03:05,060 --> 00:03:09,320 E então nós também vamos ter um ponteiro chamado "next" 65 00:03:09,320 --> 00:03:12,090 que aponta para o próximo nó na lista link. 66 00:03:12,090 --> 00:03:14,730 E então você terminar esse off por apenas repetindo nó novamente para 67 00:03:14,730 --> 00:03:17,490 o compilador sabe, OK isso é o fim da minha struct. 68 00:03:17,490 --> 00:03:22,540 >> E assim, desta forma, estamos espécie de criar uma matriz pequena bonito 69 00:03:22,540 --> 00:03:25,450 tipo de coisa com um valor e com um ponteiro. 70 00:03:25,450 --> 00:03:27,757 E você pode ligá-los todos juntamente com os ponteiros. 71 00:03:27,757 --> 00:03:30,090 Assim que todos eles podem ser tipo amarrados juntos em uma cadeia. 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 Você pode ouvir que um pouco melhor? 75 00:03:35,453 --> 00:03:36,140 >> AUDIÊNCIA: É. 76 00:03:36,140 --> 00:03:38,540 >> PROFESSOR: Tudo bem. 77 00:03:38,540 --> 00:03:44,280 Assim, a maneira que, como vocês podem ver, uma lista de links típico é estruturado 78 00:03:44,280 --> 00:03:45,500 é que você tem uma cabeça. 79 00:03:45,500 --> 00:03:49,460 Você tem o valor de cabeça que não é sendo apontada por qualquer outro ponteiro. 80 00:03:49,460 --> 00:03:53,177 Mas está indo para apontar, ou referência, o outro nó. 81 00:03:53,177 --> 00:03:56,510 O nó depois vai referenciar o nó depois disso, e assim por diante e assim por diante 82 00:03:56,510 --> 00:03:59,170 até que, eventualmente, acertar o fim da sua lista de link. 83 00:03:59,170 --> 00:04:00,980 E você só não vai ter um ponteiro lá. 84 00:04:00,980 --> 00:04:04,659 >> E assim, pensar como, em uma corrente, ou mesmo se algum de vocês fizeram, eu não sei, 85 00:04:04,659 --> 00:04:06,450 como com frutas Contornos quando você era pequeno. 86 00:04:06,450 --> 00:04:08,590 Você faria reuni-los e usá-los em torno de seu pescoço. 87 00:04:08,590 --> 00:04:09,840 Acho que é exatamente a mesma coisa. 88 00:04:09,840 --> 00:04:12,964 Você tem essas pequenas coisas que você pode encadear que apontam para um 89 00:04:12,964 --> 00:04:15,291 depois, um após o ela, e assim por diante e assim por diante 90 00:04:15,291 --> 00:04:17,040 até que você tenha uma cadeia de uma estrutura de dados 91 00:04:17,040 --> 00:04:21,190 que você pode usar como quiser. 92 00:04:21,190 --> 00:04:27,370 >> Assim, a maneira que este faríamos tipicamente inserir ou excluir 93 00:04:27,370 --> 00:04:30,020 qualquer nó de um link lista é muito diferente 94 00:04:30,020 --> 00:04:31,970 dependendo de onde esse nó é. 95 00:04:31,970 --> 00:04:34,880 Assim, por exemplo, porque ponteiros são sempre 96 00:04:34,880 --> 00:04:38,645 apontando para um valor específico, quando você excluir ou inserir um nó, 97 00:04:38,645 --> 00:04:41,770 você quer ter certeza de que o ponteiro é tudo apontando para as coisas certas. 98 00:04:41,770 --> 00:04:46,200 >> Então, se você queria inserir potencialmente um novo nó com o valor de um 99 00:04:46,200 --> 00:04:48,379 dentro de um link classificada lista, todos nós sabemos aqui 100 00:04:48,379 --> 00:04:51,170 a partir da imagem que vai ir entre cabeça e dois, certo? 101 00:04:51,170 --> 00:04:52,620 Porque se encaixa bem ali. 102 00:04:52,620 --> 00:04:59,060 Mas a maneira em que nós faria isso é primeiro dereferencing o ponteiro 103 00:04:59,060 --> 00:05:02,160 da cabeça e mandar que para um. 104 00:05:02,160 --> 00:05:05,040 >> Mas chegamos a um problema aqui. 105 00:05:05,040 --> 00:05:08,280 Qualquer pessoa pode ver qual é o problema é se nós fôssemos primeiro dereference 106 00:05:08,280 --> 00:05:10,090 o ponteiro de cabeça para um? 107 00:05:10,090 --> 00:05:14,202 O problema pode nos deparamos se tentarmos para adicionar este à frente da nossa matriz? 108 00:05:14,202 --> 00:05:15,409 >> AUDIÊNCIA: [inaudível] 109 00:05:15,409 --> 00:05:16,200 Professor: Exatamente. 110 00:05:16,200 --> 00:05:20,000 Portanto, temos aqui um ponteiro que foi uma vez que aponta desde a cabeça até dois. 111 00:05:20,000 --> 00:05:23,120 Mas se você se livrar desse ponteiro, você apontá-lo para um, 112 00:05:23,120 --> 00:05:26,500 agora temos nenhuma idéia onde ir para encontrar dois. 113 00:05:26,500 --> 00:05:29,850 Porque, como eu disse antes, você tem um pedaço gigante de memória em seu computador. 114 00:05:29,850 --> 00:05:31,860 Todos estes nodos podia ser intercaladas aleatoriamente 115 00:05:31,860 --> 00:05:33,350 em qualquer lugar em seu computador. 116 00:05:33,350 --> 00:05:36,140 E você não sabe como proceder para encontrar isso. 117 00:05:36,140 --> 00:05:40,420 >> E por isso você precisa ter ponteiros apontando para todos os nós no final. 118 00:05:40,420 --> 00:05:42,420 Ou então se você acidentalmente dereference um 119 00:05:42,420 --> 00:05:44,485 sem primeiro atribuição um valor em primeiro lugar, você é 120 00:05:44,485 --> 00:05:47,410 só vai perder tudo depois. 121 00:05:47,410 --> 00:05:49,720 >> Então, o que nós estamos indo para fazer é, você faria primeiro 122 00:05:49,720 --> 00:05:53,270 quer criar um ponteiro em o nó que você deseja inserir. 123 00:05:53,270 --> 00:05:55,270 Apontá-lo para onde você deseja inseri-lo para, 124 00:05:55,270 --> 00:05:59,410 e então depois você poderia apontar cabeça para trás a um. 125 00:05:59,410 --> 00:06:02,800 >> Isso faz sentido para todo mundo aqui? 126 00:06:02,800 --> 00:06:03,346 Ótimo. 127 00:06:03,346 --> 00:06:04,720 Pense nisso como apenas como uma cadeia. 128 00:06:04,720 --> 00:06:07,420 Se você adicionar uma cadeia, é uma espécie de intuitivo 129 00:06:07,420 --> 00:06:10,742 como você iria sobre como inserir isso. 130 00:06:10,742 --> 00:06:15,274 >> OK, de modo que é realmente muito mais curto do que eu pensei que seria, 131 00:06:15,274 --> 00:06:16,690 um discurso de cinco minutos sobre listas de links. 132 00:06:16,690 --> 00:06:19,960 Só assim vocês têm a idéia básica do que o que é. 133 00:06:19,960 --> 00:06:23,580 >> Aqui temos a agenda para questionário zero. 134 00:06:23,580 --> 00:06:24,895 Não deixe que isso o intimide. 135 00:06:24,895 --> 00:06:26,270 Eu sei que é um monte de informações. 136 00:06:26,270 --> 00:06:27,580 Ele parece muito assustador. 137 00:06:27,580 --> 00:06:33,130 É também um monte de, I pensar, tipo CSC de termos. 138 00:06:33,130 --> 00:06:37,440 Coisas como cadeias hexadecimais, ponteiros, alocações de memória dinâmica 139 00:06:37,440 --> 00:06:40,120 são termos que soam muito assustadores. 140 00:06:40,120 --> 00:06:42,700 >> Mas nós estamos indo para quebrá-las para baixo, fazer alguns problemas de prática 141 00:06:42,700 --> 00:06:44,980 para que vocês todos estão prontos para este teste. 142 00:06:44,980 --> 00:06:47,104 Quantos de vocês têm já começou a estudar? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, vocês provavelmente quer para começar a começar 145 00:06:53,670 --> 00:06:56,480 sobre isso, porque o teste é amanhã. 146 00:06:56,480 --> 00:06:58,739 Ou quinta-feira para alguns de vocês. 147 00:06:58,739 --> 00:07:01,030 É, por isso estamos indo para ir sobre alguns problemas práticos. 148 00:07:01,030 --> 00:07:04,600 Se vocês todos querem tomar uma folha de papel, um lápis. 149 00:07:04,600 --> 00:07:07,310 Nós vamos apenas passar o grande maioria da seção de hoje 150 00:07:07,310 --> 00:07:11,590 passando por cima alguns dos que então vocês têm uma idéia do que esperar no quiz. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> ESTÁ BEM. 153 00:07:16,890 --> 00:07:19,730 Um par de logística detalhes, bem como, para qualquer um 154 00:07:19,730 --> 00:07:25,120 que não tem sido a de que link lá, se você vai para cs50.yale.edu, na parte da frente 155 00:07:25,120 --> 00:07:28,566 Nesta página há um link que diz "sobre Quiz Zero". 156 00:07:28,566 --> 00:07:29,440 Link leva você até lá. 157 00:07:29,440 --> 00:07:31,065 Se você ainda não leu, leia-o. 158 00:07:31,065 --> 00:07:34,470 Porque lhe diz realmente importante informações sobre o quiz. 159 00:07:34,470 --> 00:07:37,410 >> Eu vou puxar esta fora de que só porque, fisicamente, 160 00:07:37,410 --> 00:07:40,200 se vocês não sabem onde para ir, vamos ter problemas. 161 00:07:40,200 --> 00:07:44,220 E por isso, se o seu passado em termos com A de N, ir para o auditório da escola de direito. 162 00:07:44,220 --> 00:07:47,500 E se os seus últimos começa com P a Z, ir para Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 E isso só se aplica para pessoas na seção de quarta-feira. 164 00:07:50,240 --> 00:07:53,420 >> Se você está tomando o quiz sobre Quinta-feira, você vai para SSS 114 165 00:07:53,420 --> 00:07:55,078 onde sua palestra normalmente é. 166 00:07:55,078 --> 00:07:55,953 AUDIÊNCIA: [inaudível] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSOR: O a Z, você vai para ir para o auditório Davies. 169 00:08:01,940 --> 00:08:03,273 Eu vou mudar isso, certo? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, sim, você acabou de falhar automaticamente. 172 00:08:09,698 --> 00:08:11,753 >> Oh yeah, é isso que você Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Sim, meu mau. 175 00:08:16,030 --> 00:08:17,610 Sim, O a Z, você vai para ir para Davies Auditório. 176 00:08:17,610 --> 00:08:19,140 Eu vou corrigir isso uma vez que eu carregar. 177 00:08:19,140 --> 00:08:20,320 Sim. 178 00:08:20,320 --> 00:08:22,160 >> E, em seguida, também algo importante à mente 179 00:08:22,160 --> 00:08:25,290 é que quarta-feira, se você está oficialmente matriculados na seção quarta-feira, 180 00:08:25,290 --> 00:08:26,832 você deve tomar o seu teste na quarta-feira. 181 00:08:26,832 --> 00:08:29,706 E se você estiver matriculado em quinta-feira, você deve tomar o seu teste quinta-feira. 182 00:08:29,706 --> 00:08:31,000 E é durante o horário de aula. 183 00:08:31,000 --> 00:08:35,970 Onde, eu acho que é como 1:00 para 02:15 às quartas-feiras e 2:30 - 03:45 184 00:08:35,970 --> 00:08:37,220 Nas quintas feiras. 185 00:08:37,220 --> 00:08:41,710 >> Se você tiver um conflitos irreconciliáveis, Desculpas de Dean são a única coisa, 186 00:08:41,710 --> 00:08:43,030 infelizmente, podemos tomar. 187 00:08:43,030 --> 00:08:45,560 Porque nós tivemos um grande maioria das solicitações 188 00:08:45,560 --> 00:08:47,970 mudar de quarta-feira para quinta-feira. 189 00:08:47,970 --> 00:08:51,265 Que não pode honrar a menos temos um pedido do Dean. 190 00:08:51,265 --> 00:08:52,650 >> ESTÁ BEM. 191 00:08:52,650 --> 00:08:57,000 Então, antes de começar a fazer uma par dos problemas da prática, 192 00:08:57,000 --> 00:09:00,540 Eu só vou passar por cima Dicas úteis de Andy para o sucesso. 193 00:09:00,540 --> 00:09:04,140 Vocês, quando você estuda, você realmente quer praticar escrever código à mão. 194 00:09:04,140 --> 00:09:07,050 A primeira vez que eu tomou um quiz CS, eu não tinha 195 00:09:07,050 --> 00:09:09,960 código escrito à mão prática antes e foi extremamente 196 00:09:09,960 --> 00:09:11,890 chocante em como era difícil. 197 00:09:11,890 --> 00:09:16,125 >> Quando vocês não entrar no hábito de digitar tudo, 198 00:09:16,125 --> 00:09:20,260 ele vem muito naturalmente, sendo capaz de ter completada automaticamente 199 00:09:20,260 --> 00:09:22,015 colchetes e-vírgulas lá. 200 00:09:22,015 --> 00:09:23,890 Quando você escreve para fora à mão, às vezes é 201 00:09:23,890 --> 00:09:27,100 muito, muito fácil esquecer um ponto e vírgula, ou se esqueça de fechar um suporte, 202 00:09:27,100 --> 00:09:30,970 ou se esqueça de fechar dois pontos, ou algo assim. 203 00:09:30,970 --> 00:09:34,322 >> Então, quando você escrever o código à mão, é uma sensação muito diferente. 204 00:09:34,322 --> 00:09:37,280 Então vocês, quando você está trabalhando através de alguns dos problemas da prática, 205 00:09:37,280 --> 00:09:38,904 seria bom para realmente praticar hoje. 206 00:09:38,904 --> 00:09:41,770 Ou amanhã, suponho, se você estiver respondendo ao questionário na quinta-feira. 207 00:09:41,770 --> 00:09:45,280 >> Em segundo lugar, temos a última, como, vale da prática de oito anos 208 00:09:45,280 --> 00:09:47,070 quizzes online. 209 00:09:47,070 --> 00:09:50,759 Questionário deste ano será, provavelmente, muito, muito semelhante a todos eles. 210 00:09:50,759 --> 00:09:51,800 Eles são todos muito semelhantes. 211 00:09:51,800 --> 00:09:54,220 Você espécie de entrar no estilo do tipo de perguntas 212 00:09:54,220 --> 00:09:57,250 que pedimos, o tipo de funções que vamos escrevê-lo em, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Portanto, tome os quizzes prática, especialmente sob restrições de tempo. 215 00:10:01,980 --> 00:10:05,390 75 minutos para fazer o teste é não um monte de espaço de tempo. 216 00:10:05,390 --> 00:10:07,254 É muito, muito tempo. 217 00:10:07,254 --> 00:10:09,670 E assim vocês realmente querem para certificar-se de que vocês são 218 00:10:09,670 --> 00:10:11,990 o hábito da escrita código à mão rapidamente. 219 00:10:11,990 --> 00:10:15,070 Porque você não quer que o primeiro tempo de ver um quiz do que o comprimento 220 00:10:15,070 --> 00:10:16,560 estar em seu quiz. 221 00:10:16,560 --> 00:10:20,540 Vocês realmente quer ter a certeza que você pratica de antemão. 222 00:10:20,540 --> 00:10:24,550 >> Em quarto lugar, que pretende rever o palestra e seção de slides. 223 00:10:24,550 --> 00:10:25,980 Você não tem de memorizar coisas. 224 00:10:25,980 --> 00:10:30,430 Na verdade, todo mundo tem direito a um uma folha de notas de papel branco, 225 00:10:30,430 --> 00:10:31,090 frente e verso. 226 00:10:31,090 --> 00:10:32,920 Vocês podem digitar ou escrever. 227 00:10:32,920 --> 00:10:37,070 Se você achar que precisa de memorizar qualquer coisa, colocá-la nessa folha. 228 00:10:37,070 --> 00:10:40,810 >> Eu garanto que você, você não quer ser preso no meio desse questionário 229 00:10:40,810 --> 00:10:43,890 sendo assim, oh sim, qual é o tempo de execução deste tipo contra esse tipo. 230 00:10:43,890 --> 00:10:46,490 Basta colocá-lo para baixo e copiá-lo diretamente da sua folha da nota. 231 00:10:46,490 --> 00:10:50,420 Então você pode realmente só usar a sua cérebro para pensar sobre os problemas 232 00:10:50,420 --> 00:10:52,190 em vez de ter de lembrar fatos. 233 00:10:52,190 --> 00:10:55,250 E assim realmente tirar proveito de quaisquer detalhes de nicho 234 00:10:55,250 --> 00:11:00,140 que você acha que precisa de memorizar, plop-lo para baixo na folha de avaliação. 235 00:11:00,140 --> 00:11:02,680 >> OK, dúvidas logisticamente sobre o quiz 236 00:11:02,680 --> 00:11:05,510 antes de começar a alguns problemas do quiz praticar? 237 00:11:05,510 --> 00:11:06,416 Sim? 238 00:11:06,416 --> 00:11:10,040 >> AUDIÊNCIA: Eu não tive a chance olhar para o teste [inaudível] 239 00:11:10,040 --> 00:11:11,757 mas é ele que vai ser aplicação na maior parte, 240 00:11:11,757 --> 00:11:14,090 ou se há também vai ser, como, questões de conhecimentos? 241 00:11:14,090 --> 00:11:14,940 >> PROFESSOR: É muito. 242 00:11:14,940 --> 00:11:16,731 Assim, a maneira que eu teria descrito o quiz 243 00:11:16,731 --> 00:11:18,810 é-- eu coloquei alguns problemas práticos 244 00:11:18,810 --> 00:11:20,960 que eu puxei de todos os questionários. 245 00:11:20,960 --> 00:11:25,210 Mas você vai ver que há dois principais tipos de perguntas que vão pedir-lhe. 246 00:11:25,210 --> 00:11:28,750 >> Um deles é um detalhe nível muito baixo de coisas. 247 00:11:28,750 --> 00:11:31,720 Nós vamos dar-lhe um pequeno pedaço de código e dizer, há um erro aqui? 248 00:11:31,720 --> 00:11:33,110 O que seria a impressão aqui fora? 249 00:11:33,110 --> 00:11:35,980 O que este código produzir, et cetera. 250 00:11:35,980 --> 00:11:38,710 Então Informações detalhadas sobre o muito baixo nível. 251 00:11:38,710 --> 00:11:42,700 >> E por outro lado, teremos muito alto nível perguntas baseadas no conhecimento. 252 00:11:42,700 --> 00:11:45,190 Pode explicar o que o diferença entre uma pesquisa binária 253 00:11:45,190 --> 00:11:46,148 e uma busca linear é? 254 00:11:46,148 --> 00:11:48,500 Por que nós queremos usar um sobre o outro? 255 00:11:48,500 --> 00:11:49,960 Talvez, o que é o GDB? 256 00:11:49,960 --> 00:11:51,560 Por que nós queremos usar GDB? 257 00:11:51,560 --> 00:11:54,590 Nível mais alto, mais fundamental perguntas entendimento. 258 00:11:54,590 --> 00:11:58,240 Então, você vai ver uma mistura de os dois em seu quiz. 259 00:11:58,240 --> 00:12:01,462 >> Qualquer outra coisa antes de nós ir direto para ele? 260 00:12:01,462 --> 00:12:02,879 ESTÁ BEM. 261 00:12:02,879 --> 00:12:03,670 AUDIÊNCIA: Mais um. 262 00:12:03,670 --> 00:12:04,030 PROFESSOR: Oh, mais um. 263 00:12:04,030 --> 00:12:04,340 Desculpe. 264 00:12:04,340 --> 00:12:05,631 >> AUDIÊNCIA: É, está tudo certo. 265 00:12:05,631 --> 00:12:10,140 Então você está dizendo é 75 minutos muito curto, como é improvável 266 00:12:10,140 --> 00:12:11,640 que vai terminar? 267 00:12:11,640 --> 00:12:13,571 Ou, como, 75 minutos é exatamente o mesmo tempo 268 00:12:13,571 --> 00:12:15,700 como nós precisaríamos se fôssemos apropriadamente preparado? 269 00:12:15,700 --> 00:12:17,450 PROFESSOR: OK, então o teste é um desafio. 270 00:12:17,450 --> 00:12:19,550 É definitivamente um desafio. 271 00:12:19,550 --> 00:12:21,092 Você vai encontrar-se em curto tempo. 272 00:12:21,092 --> 00:12:24,341 Você provavelmente está indo bater, como 10, 15 minutos para ir, e ser como, merda. 273 00:12:24,341 --> 00:12:25,520 Tenho muito o que fazer. 274 00:12:25,520 --> 00:12:26,520 E isso é totalmente bom. 275 00:12:26,520 --> 00:12:28,740 Todo mundo vai se sentir da mesma maneira. 276 00:12:28,740 --> 00:12:31,074 >> Basta estar muito consciente do quanto tempo você tem. 277 00:12:31,074 --> 00:12:33,490 E é por isso que eu digo a você caras fazem os testes de prática. 278 00:12:33,490 --> 00:12:36,672 Porque ele realmente dá um grande senso do que o teste vai ser assim. 279 00:12:36,672 --> 00:12:39,130 Então, se você encontrar-se ser capaz de terminar a prática 280 00:12:39,130 --> 00:12:41,671 quizzes em uma boa quantidade de tempo, você pode passear-se bem, 281 00:12:41,671 --> 00:12:45,695 então você não terá um problema na quarta-feira ou quinta-feira. 282 00:12:45,695 --> 00:12:46,575 >> Legal. 283 00:12:46,575 --> 00:12:49,200 Então, se todos wants-- eu acho a maioria das pessoas têm folhas de papel 284 00:12:49,200 --> 00:12:49,810 fora já. 285 00:12:49,810 --> 00:12:52,604 Vou essencialmente apenas dar-lhe exemplos de perguntas, 286 00:12:52,604 --> 00:12:54,520 dar a vocês, tipo, um alguns minutos para fazê-las. 287 00:12:54,520 --> 00:12:59,610 E nós falaremos sobre como uma classe o que as respostas para elas são. 288 00:12:59,610 --> 00:13:02,860 >> Portanto, este é um muito típica pergunta cedo nós vamos 289 00:13:02,860 --> 00:13:06,720 perguntar-lhe, apenas a conversão números entre bases diferentes. 290 00:13:06,720 --> 00:13:09,070 Binários, como vocês podem recall, é a base dois. 291 00:13:09,070 --> 00:13:12,470 Decimal é base 10, ou o que nós como os seres humanos normalmente interpretar. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal é base 16, que é zero através de nove bem como de A a F. 293 00:13:17,120 --> 00:13:19,990 >> Portanto, há quatro números Eu sou pedindo a vocês para converter aqui. 294 00:13:19,990 --> 00:13:23,909 Vou te dar gosto, de três a quatro minutos para pensar em como 295 00:13:23,909 --> 00:13:25,200 iríamos sobre como resolver este. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> AUDIÊNCIA: Nós temos permissão calculadoras? 298 00:13:35,710 --> 00:13:37,630 >> PROFESSOR: Você não vai precisa calculadoras, sim. 299 00:13:37,630 --> 00:13:42,420 Eu acho que além de base, penso eu, é todos vocês serão convidados a fazer. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> E só então eu meio que tem um senso de quando todo mundo está feito, olhar para cima, 302 00:14:45,070 --> 00:14:47,429 onda, eu não sei, sorrir, olhar feliz se você está feito. 303 00:14:47,429 --> 00:14:47,929 Sim. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Talvez mais alguns minutos. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, vamos trazê-lo. 308 00:18:29,600 --> 00:18:31,580 Eu vou com o propósito de dar a vocês menos tempo 309 00:18:31,580 --> 00:18:33,760 do que você provavelmente precisará fazer alguns destes problemas, 310 00:18:33,760 --> 00:18:37,124 simplesmente porque eu quero ter certeza de que obtemos através de um monte de problemas. 311 00:18:37,124 --> 00:18:39,290 Então não se preocupe se você não tem a chance de terminar. 312 00:18:39,290 --> 00:18:43,770 Totalmente OK, desde que você tem uma idéia de como ir sobre isso. 313 00:18:43,770 --> 00:18:45,850 Então, vamos em frente e fazer o primeiro. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Então, primeiro, será que alguém quer me dizer em binário, o que cada um destes algarismos 316 00:18:57,870 --> 00:19:00,484 representam em termos de seus valores? 317 00:19:00,484 --> 00:19:01,250 Sim? 318 00:19:01,250 --> 00:19:03,349 >> AUDIÊNCIA: Dois ao potência zero, 2-1. 319 00:19:03,349 --> 00:19:04,140 Professor: Exatamente. 320 00:19:04,140 --> 00:19:04,640 Assim. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Certo, então tipicamente quando estamos na base 10 323 00:19:16,430 --> 00:19:20,580 todos estes representam são, como, 10 para a base do zero, certo? 324 00:19:20,580 --> 00:19:21,810 Isso é o lugar de seu um. 325 00:19:21,810 --> 00:19:24,520 Todo o seu lugar 10 do IS-IS 10 elevado à potência de um. 326 00:19:24,520 --> 00:19:26,600 Lugar que você é de 10 100 para a potência de dois. 327 00:19:26,600 --> 00:19:29,570 >> O que quer que você está na base de vai a ver com exatamente a mesma coisa, 328 00:19:29,570 --> 00:19:31,480 apenas com uma base diferente. 329 00:19:31,480 --> 00:19:34,130 Então binário, tudo o que é é a base dois. 330 00:19:34,130 --> 00:19:37,110 Você está indo para converter todo o dígitos em dois para qualquer poder 331 00:19:37,110 --> 00:19:38,190 desse dígito. 332 00:19:38,190 --> 00:19:41,450 E assim, neste sentido, pode ter uma maneira mais fácil 333 00:19:41,450 --> 00:19:43,800 de ser capaz de adicionar-se ou somar todos os números em ordem 334 00:19:43,800 --> 00:19:46,010 para converter em base 10. 335 00:19:46,010 --> 00:19:50,362 >> Então, alguém quer me dizer o que o resposta à primeira é na base dez? 336 00:19:50,362 --> 00:19:51,674 >> AUDIÊNCIA: Dois, [inaudível] 337 00:19:51,674 --> 00:19:52,340 PROFESSOR: Yeah. 338 00:19:52,340 --> 00:19:53,230 AUDIÊNCIA: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSOR: 42, lá você vai. 340 00:19:56,560 --> 00:20:00,660 Assim, a maneira que temos esta resposta foi de fazendo dois a primeira, que é dois. 341 00:20:00,660 --> 00:20:02,760 Mais dois o terceiro, que é oito. 342 00:20:02,760 --> 00:20:07,590 Além disso, dois para o quinto, o que é o que sobra. 343 00:20:07,590 --> 00:20:09,390 Você resumi-los e é 42. 344 00:20:09,390 --> 00:20:12,000 >> Alguém está confuso sobre como temos que? 345 00:20:12,000 --> 00:20:15,630 Assim adição de base, tal como Eu disse, você deve estar OK. 346 00:20:15,630 --> 00:20:17,410 Se não, bem, podemos praticar isso também. 347 00:20:17,410 --> 00:20:18,720 Mas está tudo bem. 348 00:20:18,720 --> 00:20:20,560 Legal. 349 00:20:20,560 --> 00:20:25,570 >> Alguém quer me dar o responder à segunda também? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Boa. 352 00:20:27,600 --> 00:20:30,044 Qualquer um confuso sobre como temos que quer? 353 00:20:30,044 --> 00:20:31,960 Cool, eu vou ter a respostas sobre o próximo slide. 354 00:20:31,960 --> 00:20:34,440 Então não se preocupe se você precisa copiá-lo para baixo. 355 00:20:34,440 --> 00:20:38,860 >> OK, então hexadecimal é um pouco mais complicado. 356 00:20:38,860 --> 00:20:41,840 mas eu vou mostrar para vocês um atalho para saber como fazê-lo. 357 00:20:41,840 --> 00:20:44,800 Então hexadecimal, como você lembre-se, tudo o que é ter 16 anos. 358 00:20:44,800 --> 00:20:48,920 E porque nós, como seres humanos na verdade não tem 16 números para representar que, 359 00:20:48,920 --> 00:20:56,940 nós ir de zero a nove, que o nosso primeiro 10 valores, e então nós fazemos A a F, 360 00:20:56,940 --> 00:20:58,630 que são os próximos seis valores. 361 00:20:58,630 --> 00:21:03,040 >> E assim, a maneira mais fácil de ir de qualquer número binário em hexadecimal 362 00:21:03,040 --> 00:21:05,350 é dividi-las em metades. 363 00:21:05,350 --> 00:21:10,042 E assim qualquer número binário nós vamos dar- provavelmente você vai ter oito dígitos. 364 00:21:10,042 --> 00:21:11,750 Você pode simplesmente quebrar -los no meio. 365 00:21:11,750 --> 00:21:17,460 >> Assim, o primeiro um-- um um, um um, um, um, um um. 366 00:21:17,460 --> 00:21:21,340 Kind of acho que, você sabe, desenhe uma barra ou uma vírgula entre eles. 367 00:21:21,340 --> 00:21:23,800 E você pode apenas converter diretamente o que quer 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 tudo o que aqui é a o segundo de hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Então lembre-se de notação comum, o que valores hexadecimais começar? 371 00:21:37,584 --> 00:21:38,460 >> AUDIÊNCIA: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESSOR: 0 X. 373 00:21:39,270 --> 00:21:45,210 Então, nós sabemos que a qualquer momento pedimos-lhe para converter qualquer número para hexadecimal, 374 00:21:45,210 --> 00:21:48,230 ou quando você ver qualquer número que começa com 0 X, 375 00:21:48,230 --> 00:21:50,230 você sabe que é um valor hexadecimal. 376 00:21:50,230 --> 00:21:54,160 >> E então você vai ser convidado a determinar o que esses dois dígitos são. 377 00:21:54,160 --> 00:21:59,690 E a maneira de fazer isso, calculando que metade e calculando que a metade. 378 00:21:59,690 --> 00:22:02,870 Assim, neste exemplo, o seria um, um, um, um ser? 379 00:22:02,870 --> 00:22:04,890 Qual o valor que seria isso? 380 00:22:04,890 --> 00:22:06,040 Isso seria F, certo? 381 00:22:06,040 --> 00:22:08,050 Isso seria 15. 382 00:22:08,050 --> 00:22:11,780 >> Portanto, este seria F. One, um, um, um aqui também é 383 00:22:11,780 --> 00:22:21,270 F. Portanto, um, um, um, um, um, um, um, um em hexadecimal, tudo isso é 0xFF. 384 00:22:21,270 --> 00:22:25,350 Por causa dessa metade representada F, o valor de 15, 385 00:22:25,350 --> 00:22:27,331 e essa metade representada F, o valor 15. 386 00:22:27,331 --> 00:22:29,456 Porque lembre-se, estamos contagem de zero a nove. 387 00:22:29,456 --> 00:22:35,290 Um é como 10, B é como 11, F é 15. 388 00:22:35,290 --> 00:22:41,690 >> Isso faz sentido para todo mundo como temos de binário para hexadecimal? 389 00:22:41,690 --> 00:22:44,595 >> AUDIÊNCIA: E assim como nós chegamos 15 a partir do um, um, um, um? 390 00:22:44,595 --> 00:22:46,220 PROFESSOR: Sim, este é binário, certo? 391 00:22:46,220 --> 00:22:48,090 Imagine isto é apenas um número binário. 392 00:22:48,090 --> 00:22:50,792 Então você tem dois para o ordem zero, que é um. 393 00:22:50,792 --> 00:22:51,500 AUDIÊNCIA: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Então você só somam-lo. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSOR: Sim, e em seguida, você só totais que fora. 396 00:22:52,670 --> 00:22:53,380 Isso é tudo o que é. 397 00:22:53,380 --> 00:22:54,890 >> AUDIÊNCIA: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESSOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> AUDIÊNCIA: Então você vai de binário em decimal para hexadecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESSOR: Essa é a maneira mais fácil de fazê-lo, sim. 401 00:23:04,590 --> 00:23:11,390 Você não está indo para decimal porque decimal só tem zero a nove. 402 00:23:11,390 --> 00:23:13,410 Nós somos apenas uma espécie de dividir isso em duas. 403 00:23:13,410 --> 00:23:15,201 >> AUDIÊNCIA: [inaudível] usando decimal para encontrar 404 00:23:15,201 --> 00:23:17,809 o que corresponde até em hexadecimal. 405 00:23:17,809 --> 00:23:20,100 PROFESSOR: Eu quero dizer, você é calculando usando matemática básica. 406 00:23:20,100 --> 00:23:20,725 AUDIÊNCIA: É. 407 00:23:20,725 --> 00:23:22,300 PROFESSOR: Sim, muito bem. 408 00:23:22,300 --> 00:23:23,630 É um pouco confuso. 409 00:23:23,630 --> 00:23:26,410 Mas só sei que você pode dividir o que quer 410 00:23:26,410 --> 00:23:28,160 este valor é em apenas metades. 411 00:23:28,160 --> 00:23:29,570 Olha, o que é isto em binário? 412 00:23:29,570 --> 00:23:30,610 Que número é esse? 413 00:23:30,610 --> 00:23:33,270 Vai ser algo de zero a F. 414 00:23:33,270 --> 00:23:35,722 >> Aqui também vai ser algo de zero a F. 415 00:23:35,722 --> 00:23:37,722 E então você pode simplesmente colocá aqueles dois ali mesmo. 416 00:23:37,722 --> 00:23:38,263 >> AUDIÊNCIA: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESSOR: Yep. 418 00:23:38,910 --> 00:23:39,410 ESTÁ BEM. 419 00:23:39,410 --> 00:23:42,320 Então vocês querem tente o próximo, então? 420 00:23:42,320 --> 00:23:49,601 Zero, um, zero um, um, zero, um zero. 421 00:23:49,601 --> 00:23:52,350 Eu vou dar a vocês como 30 segundos, desde que você provavelmente não sabia 422 00:23:52,350 --> 00:23:53,850 o truque para como fazer isso mais cedo. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, ninguém quer receber um presente um tiro? 425 00:24:27,381 --> 00:24:28,774 >> 0x5A. 426 00:24:28,774 --> 00:24:29,440 PROFESSOR: 0x5A. 427 00:24:29,440 --> 00:24:30,470 5-A. 428 00:24:30,470 --> 00:24:31,340 Boa. 429 00:24:31,340 --> 00:24:37,050 Então, isso aqui seria ser-- você quer para nos dizer como você conseguiu isso? 430 00:24:37,050 --> 00:24:38,920 Em primeiro lugar, como você chegou a cinco? 431 00:24:38,920 --> 00:24:42,030 >> AUDIÊNCIA: Porque zero, um, zero, é um de cinco. 432 00:24:42,030 --> 00:24:45,170 >> PROFESSOR: Será que todos compreendam por isso que zero, um, zero, um é cinco? 433 00:24:45,170 --> 00:24:46,260 Você tem um aqui. 434 00:24:46,260 --> 00:24:48,010 Você não tem nada em dois para o primeiro. 435 00:24:48,010 --> 00:24:50,300 Em dois para o segundo, tem um, que é quatro. 436 00:24:50,300 --> 00:24:52,600 Então você adiciona o quatro mais a um, você tem cinco. 437 00:24:52,600 --> 00:24:53,600 Todo mundo é bom? 438 00:24:53,600 --> 00:24:54,100 ESTÁ BEM. 439 00:24:54,100 --> 00:24:56,570 E então o que este seria e por quê? 440 00:24:56,570 --> 00:24:58,350 O que faz um número correspondem a? 441 00:24:58,350 --> 00:24:59,350 >> AUDIÊNCIA: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESSOR: E o que esta na base de dois? 443 00:25:00,976 --> 00:25:01,850 AUDIÊNCIA: [inaudível] 444 00:25:01,850 --> 00:25:03,010 Professor: Exatamente. 445 00:25:03,010 --> 00:25:06,370 Portanto, este segundo valor aqui seria 0x5A. 446 00:25:06,370 --> 00:25:08,410 >> Todo mundo bom de como converter? 447 00:25:08,410 --> 00:25:10,770 É muito mais simples do que você pensa que é. 448 00:25:10,770 --> 00:25:13,330 Eu só quero ter certeza você sabe dicas úteis 449 00:25:13,330 --> 00:25:14,950 e truques de como fazer isso. 450 00:25:14,950 --> 00:25:18,432 >> AUDIÊNCIA: Por que você apenas dividir -lo no meio assim? 451 00:25:18,432 --> 00:25:21,390 Basta ser como, OK, eu estou indo só para se preocupam com estes primeiros [inaudível]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESSOR: Porque isso é realmente o maneira valores hexadecimais são representados. 453 00:25:24,240 --> 00:25:26,890 0 X, o que significa, na verdade, nada mais do que dizer-lhe 454 00:25:26,890 --> 00:25:28,710 que é um número hexadecimal. 455 00:25:28,710 --> 00:25:31,580 E isso representa sempre os quatro primeiros dígitos. 456 00:25:31,580 --> 00:25:34,330 E isso representa sempre os quatro últimos dígitos. 457 00:25:34,330 --> 00:25:37,835 E assim estes dois dígitos apenas correspondem a diferentes pedaços. 458 00:25:37,835 --> 00:25:39,200 >> AUDIÊNCIA: Então vamos always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESSOR: Você está sempre vai ficar oito bits de valor. 460 00:25:41,830 --> 00:25:44,580 >> AUDIÊNCIA: É que apenas gosta de uma coisa aqui ou que uma coisa tudo de novo? 461 00:25:44,580 --> 00:25:46,883 PROFESSOR: Isso é apenas um coisa em computadores, sim. 462 00:25:46,883 --> 00:25:47,424 AUDIÊNCIA: OK. 463 00:25:47,424 --> 00:25:48,240 Fantástica. 464 00:25:48,240 --> 00:25:51,290 >> PROFESSOR: Também, portanto, neste exemplo nós convertido de binário para decimal, 465 00:25:51,290 --> 00:25:53,290 e de binário para hexadecimal. 466 00:25:53,290 --> 00:25:56,610 Vocês querem ter certeza de que você também praticar acontecendo o contrário. 467 00:25:56,610 --> 00:26:03,370 Então, se eu te dei 0xff, você poderia desenhar isso para fora no binário, certo? 468 00:26:03,370 --> 00:26:06,820 >> Você converter F em binário, que é um, um, um, um, 469 00:26:06,820 --> 00:26:09,380 F converter em binário, que é um, um, um, um. 470 00:26:09,380 --> 00:26:11,310 >> Assim, podemos lhe pedir para fazer o contrário. 471 00:26:11,310 --> 00:26:14,817 Então decimal para binário, ou hexadecimal para binário. 472 00:26:14,817 --> 00:26:16,650 Então você quer fazer se você sabe para os dois lados. 473 00:26:16,650 --> 00:26:19,371 Nós provavelmente vamos fazer-lhe uma combinação dos dois. 474 00:26:19,371 --> 00:26:20,660 >> Sim, você tem uma pergunta? 475 00:26:20,660 --> 00:26:22,724 Eu posso see-- você é bom? 476 00:26:22,724 --> 00:26:23,348 AUDIÊNCIA: É. 477 00:26:23,348 --> 00:26:24,560 PROFESSOR: OK. 478 00:26:24,560 --> 00:26:26,101 Eu sou bom para apagar isso? 479 00:26:26,101 --> 00:26:26,600 Ótimo. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Tudo bem, então respostas aqui, se alguém É curioso, mais tarde, e se confundem. 482 00:26:40,437 --> 00:26:41,844 ESTÁ BEM. 483 00:26:41,844 --> 00:26:46,070 >> AUDIÊNCIA: Será que isso importa se colocarmos nossas cartas em Capitol ou minúsculas? 484 00:26:46,070 --> 00:26:50,360 >> PROFESSOR: Ele faz, porque em hexadecimal, por convenção, 485 00:26:50,360 --> 00:26:52,840 todos os caracteres são maiúsculas. 486 00:26:52,840 --> 00:26:54,650 Então, de A a F são vai ser maiúsculas. 487 00:26:54,650 --> 00:26:58,660 Se você colocar uma minúscula um, eu não sei se nós seria necessariamente marcá-lo errado. 488 00:26:58,660 --> 00:27:00,679 Mas, teoricamente, isso não é tecnicamente 489 00:27:00,679 --> 00:27:01,970 como você deveria tê-lo. 490 00:27:01,970 --> 00:27:03,303 Portanto, todos eles devem ser maiúsculas. 491 00:27:03,303 --> 00:27:05,910 Sim, boa pergunta. 492 00:27:05,910 --> 00:27:07,780 >> ESTÁ BEM. 493 00:27:07,780 --> 00:27:08,790 Quanto à segunda questão. 494 00:27:08,790 --> 00:27:12,750 Considere esta linda programa aqui. 495 00:27:12,750 --> 00:27:15,180 Eu vou fazer a pergunta, Eu vou voltar este. 496 00:27:15,180 --> 00:27:23,170 >> Então, em primeiro lugar, o que está dentro do padrão io.h que é de interesse para o programa? 497 00:27:23,170 --> 00:27:26,640 Em segundo lugar, o que faz vazio significar em linha de três? 498 00:27:26,640 --> 00:27:30,572 E em terceiro lugar, o que faz retornar zero a partir principal, como linha seis, geralmente significam? 499 00:27:30,572 --> 00:27:33,280 Se vocês querem escrever os para baixo, uma vez que eu tenho que voltar 500 00:27:33,280 --> 00:27:36,810 para o slide só assim você pode ver o código. 501 00:27:36,810 --> 00:27:40,400 Este é um exemplo de, como, talvez um maior questão nível onde pedimos-lhe 502 00:27:40,400 --> 00:27:42,435 que as coisas significam em um programa. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Todo mundo bom para mim voltar para o slide? 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ão, eu vou dar a vocês como talvez três minutos a olhar para este rápido real. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, então este é como razoavelmente fácil, conceitualmente. 510 00:28:44,140 --> 00:28:49,280 Alguém quer me dizer o que é primeiro por dentro de hash incluindo 511 00:28:49,280 --> 00:28:52,630 nosso arquivo de biblioteca io.h padrão? 512 00:28:52,630 --> 00:28:55,510 Por que precisamos dessa biblioteca incluído para este programa? 513 00:28:55,510 --> 00:28:56,930 O que aqui é que vamos precisar dele para? 514 00:28:56,930 --> 00:28:56,980 >> Sim? 515 00:28:56,980 --> 00:28:58,340 >> AUDIÊNCIA: É que, quando você colocar esse printf? 516 00:28:58,340 --> 00:28:59,131 >> Professor: Exatamente. 517 00:28:59,131 --> 00:29:01,780 Então printf, a qualquer momento você tomar uma entrada do usuário 518 00:29:01,780 --> 00:29:04,140 e imprimir algo para a tela, que é 519 00:29:04,140 --> 00:29:05,600 a entrada padrão, 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 tenho uma saída? 522 00:29:08,430 --> 00:29:09,207 Sim. 523 00:29:09,207 --> 00:29:12,040 Então eu sei que eu estou indo sempre precisa da biblioteca padronizar i.o. 524 00:29:12,040 --> 00:29:16,400 >> Então printf é a função por que precisamos para acessar 525 00:29:16,400 --> 00:29:19,370 e incluem o hashtag biblioteca i.o padrão. 526 00:29:19,370 --> 00:29:20,280 ESTÁ BEM. 527 00:29:20,280 --> 00:29:22,660 >> Em segundo lugar, o que significa vazio? 528 00:29:22,660 --> 00:29:26,970 Temos a int main (void), o que faz invalidar aqui dizer aqui na linha de três? 529 00:29:26,970 --> 00:29:28,080 Sim, na parte de trás. 530 00:29:28,080 --> 00:29:29,020 >> AUDIÊNCIA: [inaudível] 531 00:29:29,020 --> 00:29:29,920 >> Professor: Exatamente. 532 00:29:29,920 --> 00:29:33,320 Então lembre-se, nós aprendemos começando com a nossa pset 533 00:29:33,320 --> 00:29:35,360 que você pode realmente especificar linha de comando 534 00:29:35,360 --> 00:29:39,010 argumentos que o programa, que você função principal, toma como você, o usuário, 535 00:29:39,010 --> 00:29:39,650 chame-o. 536 00:29:39,650 --> 00:29:42,650 Se temos vazio, o que significa que você poderia simplesmente executar o programa diretamente 537 00:29:42,650 --> 00:29:44,680 sem quaisquer argumentos de linha de comando. 538 00:29:44,680 --> 00:29:46,160 Todos clara sobre isso? 539 00:29:46,160 --> 00:29:46,660 ESTÁ BEM. 540 00:29:46,660 --> 00:29:52,850 >> E, por último, por que nós se preocupar em fazer esta remuneração zero coisa aqui? 541 00:29:52,850 --> 00:29:54,740 Por que temos até um int main? 542 00:29:54,740 --> 00:29:57,330 Por que não podemos apenas ter void main vazio? 543 00:29:57,330 --> 00:29:59,216 Sim? 544 00:29:59,216 --> 00:30:01,590 AUDIÊNCIA: Apenas para que possamos certifique-se de que o programa é 545 00:30:01,590 --> 00:30:04,247 sair com sucesso, conforme oposição ao caso foi contado. 546 00:30:04,247 --> 00:30:06,580 E nós sabemos que isso é um tipo diferente de erro. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSOR: Sim, exatamente. 548 00:30:07,621 --> 00:30:10,670 Esta é apenas uma muito coisa convencional que nós fazemos, 549 00:30:10,670 --> 00:30:13,840 é que apenas no final de seu programa, apenas para se certificar 550 00:30:13,840 --> 00:30:15,830 que a sua função principal está sendo executado corretamente, 551 00:30:15,830 --> 00:30:17,940 nós sempre queremos fazer o retorno zero. 552 00:30:17,940 --> 00:30:21,160 Embora possamos necessariamente não vê que impresso em qualquer lugar. 553 00:30:21,160 --> 00:30:25,092 >> Porque, como programadores, você sabe, se você tem muitas linhas diferentes de código 554 00:30:25,092 --> 00:30:27,050 e você não sabe onde estes estão indo errado, 555 00:30:27,050 --> 00:30:30,240 e se um erro acontece, você quer certifique-se de que você obtenha esse erro. 556 00:30:30,240 --> 00:30:33,240 E assim tipicamente se algo der errado, teremos um retorno de apenas um 557 00:30:33,240 --> 00:30:34,669 para garantir que nós sabemos que é. 558 00:30:34,669 --> 00:30:36,460 Então, se você ver um retorno zero, que tipicamente 559 00:30:36,460 --> 00:30:38,293 significa que o seu programa é executado com êxito. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Boa? 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 aqui. 566 00:30:52,680 --> 00:30:54,827 Considere isso. 567 00:30:54,827 --> 00:30:56,910 E se vocês ver um flutuar, vocês podem provavelmente 568 00:30:56,910 --> 00:31:00,810 ter uma boa idéia do que Estou prestes a pedir-lhe. 569 00:31:00,810 --> 00:31:05,200 >> Assim, quando este programa executa, como você pode ver, 570 00:31:05,200 --> 00:31:09,330 Eu estou declarando um flutuador dentro da minha função principal. 571 00:31:09,330 --> 00:31:13,470 Estou nomeando-o "responder", e eu estou definindo que igual a um dividido por 10. 572 00:31:13,470 --> 00:31:17,860 Eu estou imprimindo, a um casa decimal, que float. 573 00:31:17,860 --> 00:31:19,880 E então eu estou retornando zero. 574 00:31:19,880 --> 00:31:24,470 >> Assim, quando a execução do programa, acho que volta para ganancioso agora, 575 00:31:24,470 --> 00:31:26,550 este programa imprime 0.0. 576 00:31:26,550 --> 00:31:29,993 Como todos sabemos, espero que todos nós sabe, um dividido por 10 não é um 0.00, 577 00:31:29,993 --> 00:31:32,350 é 0,1. 578 00:31:32,350 --> 00:31:37,810 Mas explicar por que este programa pensa que 1 dividido por 10 impressões para 0,1 outro 579 00:31:37,810 --> 00:31:39,504 do que 0,1? 580 00:31:39,504 --> 00:31:42,545 Eu vou dar a vocês talvez como 30 segundos para pensar apenas rapidamente sobre isso 581 00:31:42,545 --> 00:31:43,878 e eu vou voltar para o programa. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> ESTÁ BEM. 584 00:32:20,290 --> 00:32:22,205 Qualquer um quer dar-lhe um tiro? 585 00:32:22,205 --> 00:32:24,330 Em três frases ou menos, porque normalmente nós somos 586 00:32:24,330 --> 00:32:27,650 indo para restringir todas as respostas para três frases ou menos 587 00:32:27,650 --> 00:32:31,130 assim você não apenas regurgitar coisas aleatórias em seu quiz. 588 00:32:31,130 --> 00:32:32,740 >> Sim, tomar um tiro. 589 00:32:32,740 --> 00:32:36,390 >> AUDIÊNCIA: Então eu acho que há essa coisa chamada, como, [inaudível] 590 00:32:36,390 --> 00:32:42,320 Portanto, pode haver, por exemplo, pode haver, como, 0,09, 591 00:32:42,320 --> 00:32:47,250 que onde você imprimir a primeira dígitos, que seria para 0.0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSOR: Close, não completamente. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> AUDIÊNCIA: Você está dividindo um e 10, e eles são ambos inteiros. 595 00:32:51,770 --> 00:32:54,610 E assim o caminho que ele vai para armazená-lo é como um inteiro. 596 00:32:54,610 --> 00:32:56,480 E assim o número inteiro mais próximo seria 0.0. 597 00:32:56,480 --> 00:32:57,471 E assim que é 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESSOR: Sim, isso é muito bom. 599 00:32:58,970 --> 00:33:00,040 Essa é a resposta certa. 600 00:33:00,040 --> 00:33:03,597 Portanto, este é um muito confuso conceito para um monte de crianças. 601 00:33:03,597 --> 00:33:06,680 E eu realmente quero ter certeza de que isso é reforçado na cabeça de todos. 602 00:33:06,680 --> 00:33:10,090 >> Então, o que nós chamamos flutuante ponto de imprecisão, 603 00:33:10,090 --> 00:33:12,800 onde a razão pela qual muitas os seus programas em ganancioso 604 00:33:12,800 --> 00:33:17,010 não funcionou inicialmente era porque você se esqueceu de lançar sua variável. 605 00:33:17,010 --> 00:33:19,370 Então, o que disse Christabell era inteiramente correta. 606 00:33:19,370 --> 00:33:21,990 >> Um flutuador é inerentemente imprecisa. 607 00:33:21,990 --> 00:33:26,400 Porque em um computador, certo, temos uma quantidade finita de bits de memória 608 00:33:26,400 --> 00:33:28,480 podemos usar para representar números. 609 00:33:28,480 --> 00:33:33,480 Assim, por exemplo, este ID CS50 é-- Eu acho que é um computador de 64 bits. 610 00:33:33,480 --> 00:33:37,520 >> Um flutuador só pode ser representada por uma quantidade finita desses bits. 611 00:33:37,520 --> 00:33:42,260 E assim 0,1 com zeros infinitas, que foi de 0,1 é, certo? 612 00:33:42,260 --> 00:33:45,450 Mas não podemos realmente armazenar esse número em nosso computador. 613 00:33:45,450 --> 00:33:47,810 Nós simplesmente não temos memória suficiente para fazê-lo. 614 00:33:47,810 --> 00:33:52,340 >> E assim, a aproximação mais próxima de o que está armazenado na memória é, na verdade, 615 00:33:52,340 --> 00:33:55,390 algo como 0,000 alguma coisa, alguma coisa, alguma coisa, alguma coisa. 616 00:33:55,390 --> 00:34:01,240 Que, uma vez que você truncar ele, arredonda para baixo a 0,0. 617 00:34:01,240 --> 00:34:05,640 >> E assim, este exemplo é apenas um que demonstra muitas questões 618 00:34:05,640 --> 00:34:08,469 temos sempre que estamos tentando fazer incorretamente matemática 619 00:34:08,469 --> 00:34:11,000 sem lançar como um inteiro diferente. 620 00:34:11,000 --> 00:34:14,870 Então, basta ser cauteloso de que isso aconteça. 621 00:34:14,870 --> 00:34:18,239 >> Em testes, se nós damos-lhe uma bloco de código e é como, 622 00:34:18,239 --> 00:34:19,510 o que imprime no final? 623 00:34:19,510 --> 00:34:24,096 E se é algum valor aleatório você caras devem saber por que isso está acontecendo. 624 00:34:24,096 --> 00:34:24,909 Sim? 625 00:34:24,909 --> 00:34:27,926 >> AUDIÊNCIA: Truncate é se livrar de tudo depois de um certo ponto? 626 00:34:27,926 --> 00:34:28,513 [INAUDÍVEL] 627 00:34:28,513 --> 00:34:30,929 PROFESSOR: É, então, na verdade, este é um exemplo muito ruim, 628 00:34:30,929 --> 00:34:37,870 porque tudo o que realmente 0,100 truncaria até 0,1. 629 00:34:37,870 --> 00:34:41,389 Mas se você fosse executar ele-- eu não lembre-se, porque no ano passado eles 630 00:34:41,389 --> 00:34:42,830 correu-lo em um programa diferente. 631 00:34:42,830 --> 00:34:45,300 Eles correram-lo em 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 Isso foi um sistema de 32 bits, eu acho. 634 00:34:48,520 --> 00:34:50,290 E então havia números diferentes. 635 00:34:50,290 --> 00:34:53,330 >> Mas, essencialmente, só sei que todo o conceito de truncagem 636 00:34:53,330 --> 00:34:54,815 e como ele simplesmente corta as coisas fora. 637 00:34:54,815 --> 00:34:55,690 E assim se rounds-- 638 00:34:55,690 --> 00:34:56,300 >> AUDIÊNCIA: sem arredondamento. 639 00:34:56,300 --> 00:34:57,370 >> Professor: Exatamente. 640 00:34:57,370 --> 00:34:57,870 Sim. 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 >> Oi, na parte de trás. 644 00:35:05,250 --> 00:35:07,634 Nós apenas estamos indo sobre alguns Revisar o questionário perguntas. 645 00:35:07,634 --> 00:35:08,430 >> Tudo certo. 646 00:35:08,430 --> 00:35:10,150 Por isso, considero um programa diferente aqui. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Eu vou dar a vocês um alguns minutos para ler sobre isso. 649 00:35:15,380 --> 00:35:18,588 Isso é algo que foi por muito recentemente, que eu acho que explodiu um monte de você 650 00:35:18,588 --> 00:35:19,142 mentes dos homens. 651 00:35:19,142 --> 00:35:21,100 Mas vamos falar por isso novamente apenas 652 00:35:21,100 --> 00:35:24,152 para se certificar de que você entendê-lo completamente. 653 00:35:24,152 --> 00:35:24,652 ESTÁ BEM. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 ESTÁ BEM. 656 00:35:41,780 --> 00:35:44,342 Alguém precisa de mais tempo para leia este código? 657 00:35:44,342 --> 00:35:45,650 ESTÁ BEM. 658 00:35:45,650 --> 00:35:50,630 >> Assim, parece-me que neste programa eu sou 659 00:35:50,630 --> 00:35:53,460 a criação de duas seqüências usando GetString. 660 00:35:53,460 --> 00:35:55,180 Uma chamados s e um chamado t. 661 00:35:55,180 --> 00:35:58,680 E se eles são iguais é igual a um para o outro, 662 00:35:58,680 --> 00:36:00,880 ele deve imprimir "Você digite a mesma coisa. " 663 00:36:00,880 --> 00:36:04,170 >> Mas elsewise, seria imprimir: "Você digitado coisas diferentes ", certo? 664 00:36:04,170 --> 00:36:05,990 Parece muito, muito simples. 665 00:36:05,990 --> 00:36:08,720 Mas, no entanto, se eu realmente tentar escrever este programa, 666 00:36:08,720 --> 00:36:12,230 parece que mesmo quando eu entrada as mesmas seqüências exatas, 667 00:36:12,230 --> 00:36:15,490 ele ainda imprime: "Você digitado coisas diferentes! " 668 00:36:15,490 --> 00:36:18,020 Alguém quer dar uma tiro em por que este programa sempre 669 00:36:18,020 --> 00:36:20,370 responde que as entradas são diferentes, mesmo 670 00:36:20,370 --> 00:36:22,090 quando as próprias palavras são as mesmas? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Então, se eu fosse para input-- David amor para usar um exemplo como mãe, certo? 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 corri isso através de que o código, por que ele 675 00:36:40,340 --> 00:36:44,180 imprimir "você digitou coisas diferentes?" 676 00:36:44,180 --> 00:36:46,336 >> Alguém precisa de mais tempo para pensar sobre isso? 677 00:36:46,336 --> 00:36:47,294 OK, eu acho que estamos bem. 678 00:36:47,294 --> 00:36:48,716 Sim? 679 00:36:48,716 --> 00:36:53,930 >> AUDIÊNCIA: OK, então isso é algo sobre onde ele é armazenado na memória, certo? 680 00:36:53,930 --> 00:36:54,890 >> PROFESSOR: Yep. 681 00:36:54,890 --> 00:37:00,400 >> AUDIÊNCIA: Onde é como, se este string s é armazenada a memória spot-- 682 00:37:00,400 --> 00:37:01,689 Eu estou inventando isto-- é zero. 683 00:37:01,689 --> 00:37:02,355 PROFESSOR: Certo. 684 00:37:02,355 --> 00:37:05,290 AUDIÊNCIA: E corda t é armazenado no local de memória, 685 00:37:05,290 --> 00:37:11,000 como, 167, e, em seguida zero não é igual a 167. 686 00:37:11,000 --> 00:37:12,610 >> Professor: Exatamente. 687 00:37:12,610 --> 00:37:18,350 OK, então lembre-se esta incrível revelação explicamos para vocês 688 00:37:18,350 --> 00:37:21,530 na semana passada, que cordas não existem realmente? 689 00:37:21,530 --> 00:37:25,380 Quando criamos algo chamado corda estamos, na realidade, 690 00:37:25,380 --> 00:37:29,330 criando algo chamado de char estrela. 691 00:37:29,330 --> 00:37:34,470 Que tudo isso é um ponteiro para uma cadeia ou para uma matriz de caracteres. 692 00:37:34,470 --> 00:37:39,480 >> E assim, neste exemplo, se eu foram a entrada H-O-H a maneira 693 00:37:39,480 --> 00:37:49,350 que o meu computador seria armazená-lo é dentro de barra invertida memória zero, certo? 694 00:37:49,350 --> 00:37:53,180 Esses quatro caracteres, caracteres, seria armazenado em algum lugar. 695 00:37:53,180 --> 00:37:59,290 >> E então estes quatro caracteres, barra invertida zero, 696 00:37:59,290 --> 00:38:01,275 são armazenados em outro lugar, certo? 697 00:38:01,275 --> 00:38:04,685 Eu não tenho nenhuma idéia de onde os endereços são, eles estão em algum lugar no meu computador. 698 00:38:04,685 --> 00:38:07,080 Mas eu não sei exatamente onde eles estão. 699 00:38:07,080 --> 00:38:10,170 >> Quando eu criar uma seqüência s, tudo o que é realmente 700 00:38:10,170 --> 00:38:15,550 é um ponteiro para o começar dessa seqüência. 701 00:38:15,550 --> 00:38:21,130 E quando eu criar este valor t, tudo o que é um ponteiro para aqui. 702 00:38:21,130 --> 00:38:23,980 E assim, quando você está tentando para equiparar e verifique 703 00:38:23,980 --> 00:38:27,710 para ver se s é igual é igual a t, o computador 704 00:38:27,710 --> 00:38:31,635 é realmente apenas retornando a você o endereço deste m 705 00:38:31,635 --> 00:38:33,390 eo endereço do que m. 706 00:38:33,390 --> 00:38:36,230 E porque eles são dois peças separadas de dados 707 00:38:36,230 --> 00:38:38,750 que são armazenados em dois diferentes endereços em seu computador, 708 00:38:38,750 --> 00:38:41,750 seu computador nunca vai reconhecê-los como sendo o mesmo. 709 00:38:41,750 --> 00:38:43,500 Alguém quer dar um tiro em que nós 710 00:38:43,500 --> 00:38:46,900 teria que fazer se queríamos para corrigir isso e ter um programa em execução correta 711 00:38:46,900 --> 00:38:49,360 ao invés? 712 00:38:49,360 --> 00:38:52,070 Pense nisso por um par de segundos. 713 00:38:52,070 --> 00:38:54,929 O que precisamos mudar para obter este programa de funcionamento 714 00:38:54,929 --> 00:38:56,220 do jeito que queremos que ele funcione? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Sim, quero levar uma facada nele? 717 00:39:18,918 --> 00:39:24,082 >> AUDIÊNCIA: Podemos tentar cancelar o ponteiro e verificar através da matriz? 718 00:39:24,082 --> 00:39:25,540 PROFESSOR: Essa é uma maneira de fazê-lo. 719 00:39:25,540 --> 00:39:27,880 Então, qual é o seu nome? 720 00:39:27,880 --> 00:39:29,010 Sinto muito, me lembre. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSOR: Sim, então o que Zee sugerida seria absolutamente trabalhar. 723 00:39:32,130 --> 00:39:32,629 Certo? 724 00:39:32,629 --> 00:39:35,730 Poderíamos cancelar o ponteiro e realmente ir e acesso 725 00:39:35,730 --> 00:39:38,460 os dados físicos dentro de aqui. 726 00:39:38,460 --> 00:39:40,300 E nós podemos apenas comparar a tela inteira. 727 00:39:40,300 --> 00:39:43,670 >> Podemos dizer, OK, ponteiro, dá-me o que está dentro aqui. 728 00:39:43,670 --> 00:39:44,960 Ele retornaria um m. 729 00:39:44,960 --> 00:39:47,168 E eu diria, ponteiro, dá-me o que está dentro aqui. 730 00:39:47,168 --> 00:39:47,750 Retornar um m. 731 00:39:47,750 --> 00:39:48,410 Será que aqueles jogo? 732 00:39:48,410 --> 00:39:49,410 Sim. 733 00:39:49,410 --> 00:39:50,340 Em seguida, seguir em frente. 734 00:39:50,340 --> 00:39:54,240 >> Continuamos a verificar os dois inteiro cordas todo o caminho até o final 735 00:39:54,240 --> 00:39:56,635 e ver se estas forem iguais, Se todos os valores são iguais. 736 00:39:56,635 --> 00:39:59,680 E, se todos os valores são iguais, então nós sabemos as cordas são verdadeiras. 737 00:39:59,680 --> 00:40:01,600 Absolutamente, isso é como nós o faria? 738 00:40:01,600 --> 00:40:03,930 >> Alguém confuso sobre nada disso? 739 00:40:03,930 --> 00:40:06,970 Todo o conceito de como as strings são realmente apenas ponteiros, 740 00:40:06,970 --> 00:40:08,440 e como eles não existem realmente? 741 00:40:08,440 --> 00:40:10,480 E por isso que recebo erros como a nossa forma de obtê-lo? 742 00:40:10,480 --> 00:40:15,070 Porque eu garanto a vocês, ponteiros e alocação de cordas e memória 743 00:40:15,070 --> 00:40:16,470 vão vir para cima. 744 00:40:16,470 --> 00:40:17,410 >> Sim? 745 00:40:17,410 --> 00:40:21,072 >> AUDIÊNCIA: [inaudível] dereference -lo, você acabou de colocar uma estrela [inaudível] 746 00:40:21,072 --> 00:40:21,780 PROFESSOR: Certo. 747 00:40:21,780 --> 00:40:28,430 Assim, para um meio de ponteiro derererence para ir para o endereço do ponteiro 748 00:40:28,430 --> 00:40:30,390 e obtenção dos dados, o valor aí. 749 00:40:30,390 --> 00:40:32,700 E a maneira de fazer isso é ponteiro estrela. 750 00:40:32,700 --> 00:40:34,262 Não confunda isso. 751 00:40:34,262 --> 00:40:35,186 >> AUDIÊNCIA: [inaudível]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESSOR: Yeah. 753 00:40:35,852 --> 00:40:39,750 AUDIÊNCIA: Então você pode apenas escrever se estrela s igual iguais estrela t. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSOR: Bem, não. 755 00:40:40,630 --> 00:40:40,960 Não. 756 00:40:40,960 --> 00:40:41,640 >> AUDIÊNCIA: Isso não é bom o suficiente, certo? 757 00:40:41,640 --> 00:40:43,760 >> PROFESSOR: Não é, porque você é que verifica somente a primeira letra. 758 00:40:43,760 --> 00:40:46,010 Você provavelmente está indo para precisa de algum tipo de um loop que 759 00:40:46,010 --> 00:40:49,055 percorre cada personagem em ambas as cordas. 760 00:40:49,055 --> 00:40:49,837 Sim. 761 00:40:49,837 --> 00:40:52,920 Então, se você queria apenas verificar para ver se eles começaram com a mesma coisa, 762 00:40:52,920 --> 00:40:58,220 você pode fazer se, estrela s é igual a estrela t. 763 00:40:58,220 --> 00:41:01,300 Então você sabe que pelo menos eles começou com o mesmo personagem. 764 00:41:01,300 --> 00:41:01,952 >> Sim? 765 00:41:01,952 --> 00:41:04,056 >> AUDIÊNCIA: Então, o caminho você que seria 766 00:41:04,056 --> 00:41:06,064 como um incorporado laço for ou ponteiro? 767 00:41:06,064 --> 00:41:06,730 PROFESSOR: Yeah. 768 00:41:06,730 --> 00:41:08,170 Praticamente apenas um loop for. 769 00:41:08,170 --> 00:41:12,430 Lembre-se, David na classe mencionada o açúcar sintático livre? 770 00:41:12,430 --> 00:41:17,690 E ele tinha isso muito coisa confusa da estrela t 771 00:41:17,690 --> 00:41:22,030 mais um, onde integraria através de e mover o ponteiro? 772 00:41:22,030 --> 00:41:29,910 A maneira mais fácil de fazer este é apenas t de i. 773 00:41:29,910 --> 00:41:31,090 >> Então é só uma matriz. 774 00:41:31,090 --> 00:41:34,630 A maneira que você teria um para loop que correu de zero a i, onde 775 00:41:34,630 --> 00:41:36,580 I é o comprimento da string, você poderia apenas 776 00:41:36,580 --> 00:41:39,510 escrever que, em vez de fazer a ponteiro todo, coisa de referência. 777 00:41:39,510 --> 00:41:43,510 Então, essas coisas são exatamente equivalente em seu computador. 778 00:41:43,510 --> 00:41:45,905 >> Vocês provavelmente não precisa saber que, 779 00:41:45,905 --> 00:41:48,280 mas é bom para apenas um tipo de tem na parte de trás de sua mente. 780 00:41:48,280 --> 00:41:52,630 Só sei que o computador reconhece diferentes blocos de código 781 00:41:52,630 --> 00:41:53,890 como a mesma coisa. 782 00:41:53,890 --> 00:41:57,510 Porque este é apenas muito mais do usuário amigável para nós para apresentá-lo como se fosse 783 00:41:57,510 --> 00:41:58,150 uma matriz. 784 00:41:58,150 --> 00:42:00,990 É apenas mais fácil. 785 00:42:00,990 --> 00:42:02,719 >> AUDIÊNCIA: Então usar strlen a gostar, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESSOR: Yeah. 787 00:42:03,385 --> 00:42:03,926 AUDIÊNCIA: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESSOR: Você poderia usar strlen ou, se você 789 00:42:05,940 --> 00:42:10,420 não tinha strlen você pode apenas fazer-se até que você bateu barra invertida zero para ambos. 790 00:42:10,420 --> 00:42:11,568 Ou iria funcionar. 791 00:42:11,568 --> 00:42:12,068 Sim. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 AUDIÊNCIA: Então é excluir a referência a cada único personagem se estivesse de fato 794 00:42:17,996 --> 00:42:21,044 escrever este código, poderia apenas fazer t suportes i 795 00:42:21,044 --> 00:42:22,460 como com a estrela na frente dele? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSOR: Sim, é igual a equals s suporte i, e, em seguida, mantê-i movimento 797 00:42:27,700 --> 00:42:29,790 down up até que você bateu o fim. 798 00:42:29,790 --> 00:42:31,286 Sim, isso é o que você faria. 799 00:42:31,286 --> 00:42:33,660 E eu vou realmente ter uma próxima exemplo de quando nós realmente 800 00:42:33,660 --> 00:42:36,740 escrever strlen para que vocês irão tipo de começar a brincar com ele um pouco. 801 00:42:36,740 --> 00:42:43,567 >> Assim é todo claro apenas em memória, cordas, ponteiros, endereços de qualidade? 802 00:42:43,567 --> 00:42:46,650 Alguns conceitos de nível mais alto que você vontade com certeza necessidade de saber sobre o quiz 803 00:42:46,650 --> 00:42:48,928 amanhã. 804 00:42:48,928 --> 00:42:49,904 >> Tudo certo. 805 00:42:49,904 --> 00:42:50,404 Boa. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Sim. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, então uma coisa que nós vamos também pedir você, como fazemos todos os anos em um questionário, é, 810 00:43:04,180 --> 00:43:08,340 suponha que você tenha esquecido (que parece que estamos a esquecer de fazer anualmente) 811 00:43:08,340 --> 00:43:10,810 em que arquivo de cabeçalho strlen é declarada. 812 00:43:10,810 --> 00:43:13,860 E por isso temos de reescrevê-lo nós mesmos. 813 00:43:13,860 --> 00:43:16,350 >> Aqui está uma lista de diretrizes que podemos apresentar-lhe 814 00:43:16,350 --> 00:43:20,660 caras onde você começa a assumir que s a cadeia não será nulo. 815 00:43:20,660 --> 00:43:23,830 Você pode assumir que s será terminou com uma barra invertida zero. 816 00:43:23,830 --> 00:43:26,670 Então você sabe que é o que que vai acabar com. 817 00:43:26,670 --> 00:43:29,500 >> E, por exemplo, que o comprimento da Olá seria de cinco anos. 818 00:43:29,500 --> 00:43:32,890 Assim, você pode assumir que Olá será cinco, H-E-G-L-S. 819 00:43:32,890 --> 00:43:35,890 Você não tem que assumir que o backside zero de contas relativas ao comprimento. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Esta última coisa aqui, não fazer se preocupar com integer overflow. 822 00:43:42,300 --> 00:43:45,270 Alguém se lembra o integer overflow é? 823 00:43:45,270 --> 00:43:48,041 >> AUDIÊNCIA: vai além da comprimento do [inaudível]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSOR: Sim, você pode explicar um pouco, o que isso significa? 825 00:43:50,740 --> 00:43:55,330 >> AUDIÊNCIA: Então, eu acho que ele vai voltar para o exemplo truncando anteriormente. 826 00:43:55,330 --> 00:43:58,380 Mas se você tem apenas tantos números que excede o número de bits 827 00:43:58,380 --> 00:44:01,409 que você realmente pode atribuí-la que será apenas uma espécie de cortar. 828 00:44:01,409 --> 00:44:04,242 PROFESSOR: Sim, então em um típico computador, quantos bits que nós temos? 829 00:44:04,242 --> 00:44:05,306 AUDIÊNCIA: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSOR: Sim, 32, à direita. 831 00:44:06,430 --> 00:44:10,030 E assim que é, que, quatro bilhões, dois bilhões? 832 00:44:10,030 --> 00:44:13,579 Quatro bilhões, até quatro bilhões inteiros positivos, certo? 833 00:44:13,579 --> 00:44:15,370 Dois bilhões negativo, dois bilhões de positivo, 834 00:44:15,370 --> 00:44:16,900 Depende de como você deseja fazê-lo. 835 00:44:16,900 --> 00:44:21,470 >> E então basicamente nós podemos ter inteiros suficientes que podem ir até 836 00:44:21,470 --> 00:44:25,800 de dois a 31 menos 1, certo? 837 00:44:25,800 --> 00:44:27,980 Porque uma vez que nós batemos dois a 32, nós não 838 00:44:27,980 --> 00:44:30,040 ter essa quantidade de memória em nosso computador. 839 00:44:30,040 --> 00:44:32,310 >> E assim, teoricamente, eu poderia vir com um número 840 00:44:32,310 --> 00:44:34,560 que é, tipo, dois para o 46º. 841 00:44:34,560 --> 00:44:38,040 É um número enorme-ass, mas teoricamente você poderia. 842 00:44:38,040 --> 00:44:42,730 E o estouro de forma inteiro é se você tentar criar um número inteiro que vai além do que 843 00:44:42,730 --> 00:44:44,790 seu computador é capaz de armazenar. 844 00:44:44,790 --> 00:44:46,590 >> E assim vocês para Neste exemplo não têm 845 00:44:46,590 --> 00:44:51,330 se preocupar com nós, dando-lhe um gigante string que é de dois para os caracteres 32ª 846 00:44:51,330 --> 00:44:51,830 grandes. 847 00:44:51,830 --> 00:44:54,010 Isso seria realmente significam. 848 00:44:54,010 --> 00:44:59,430 >> Tudo bem, então eu só vou dar vocês a estrutura de base do presente. 849 00:44:59,430 --> 00:45:02,020 Você vai criar um função chamada int strlen onde 850 00:45:02,020 --> 00:45:08,436 Um passe em, uma estrela char, ou corda, ponteiro para a string chamada s. 851 00:45:08,436 --> 00:45:10,820 >> Tudo bem, todo mundo que copiar para baixo. 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-- outra maneira. 855 00:45:17,020 --> 00:45:21,360 >> Portanto, este é como uma espécie de peça mais difícil de problema, 856 00:45:21,360 --> 00:45:25,320 então eu vou dar a vocês talvez cinco a seis minutos para o tipo de brainstorming 857 00:45:25,320 --> 00:45:27,478 e escrever esta função fora. 858 00:45:27,478 --> 00:45:29,710 >> AUDIÊNCIA: Nós não fazer conta para [inaudível], 859 00:45:29,710 --> 00:45:30,200 não temos de usar inteiro? 860 00:45:30,200 --> 00:45:31,241 >> PROFESSOR: Não, você não. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Eu vou dar a vocês uma dica. 863 00:48:06,930 --> 00:48:12,325 Um loop while pode ser muito útil aqui. 864 00:48:12,325 --> 00:48:12,825 Sim. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Aqui 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 também estará disponível para o quiz, eu acho. 870 00:48:53,410 --> 00:48:55,315 Então vocês vai ser tudo açucarado até amanhã. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Pode i-- você conseguiu. 873 00:49:02,962 --> 00:49:03,718 >> AUDIÊNCIA: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESSOR: Yeah. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Talvez mais de 30 segundos ou menos. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Tudo bem, se você é não feito, não se preocupe. 879 00:50:07,340 --> 00:50:08,810 Nós vamos passar por isso juntos. 880 00:50:08,810 --> 00:50:09,310 ESTÁ BEM. 881 00:50:09,310 --> 00:50:13,800 Então, eu estou indo apenas para o layout do estrutura básica para esta função aqui. 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 Em primeiro lugar, será que alguém quer dizer me o que isso significa int? 885 00:50:23,460 --> 00:50:25,160 Precisamos ter nesta função. 886 00:50:25,160 --> 00:50:26,709 >> AUDIÊNCIA: STRLEN [inaudível]. 887 00:50:26,709 --> 00:50:27,500 Professor: Exatamente. 888 00:50:27,500 --> 00:50:31,140 Então o que acontece aqui, precisamos voltar um inteiro. 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 Vá para ele rapazes, só vai manter. 891 00:50:37,700 --> 00:50:40,480 Está tudo bom. 892 00:50:40,480 --> 00:50:42,960 Comer tudo, então eu não tenho para levá-lo de volta, na verdade. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 O int apenas significa que você é vai estar retornando um inteiro. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> O que é este caractere estrela s? 897 00:50:57,106 --> 00:50:58,640 O que isso significa? 898 00:50:58,640 --> 00:51:00,879 >> AUDIÊNCIA: Like, o que está a ser introduzido em. 899 00:51:00,879 --> 00:51:01,670 Professor: Exatamente. 900 00:51:01,670 --> 00:51:04,142 E o que é quase o mesma coisa como char estrela? 901 00:51:04,142 --> 00:51:04,850 AUDIÊNCIA: String? 902 00:51:04,850 --> 00:51:05,641 Professor: Exatamente. 903 00:51:05,641 --> 00:51:09,080 Então, tudo o que estamos fazendo é dando este um ponteiro para uma string. 904 00:51:09,080 --> 00:51:09,580 ESTÁ BEM. 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 >> Além disso, não se esqueça, se esquecermos para dar-lhe esses suportes, 908 00:51:16,650 --> 00:51:18,330 não se esqueça de escrever-los sozinho. 909 00:51:18,330 --> 00:51:20,720 Porque, teoricamente, o código é incorreto se você esquecer de escrevê-los. 910 00:51:20,720 --> 00:51:21,803 Apenas sempre prestar atenção. 911 00:51:21,803 --> 00:51:23,750 Como, coisas pequenas que você não percebe 912 00:51:23,750 --> 00:51:26,917 quando você está programando em seu laptop, porque o seu laptop faz isso por você? 913 00:51:26,917 --> 00:51:28,624 Não se esqueça, quando você está escrevendo com a mão. 914 00:51:28,624 --> 00:51:29,170 Sim? 915 00:51:29,170 --> 00:51:30,954 >> AUDIÊNCIA: Mas como incorreta? 916 00:51:30,954 --> 00:51:33,190 Como, podemos obter todo o problema errado? 917 00:51:33,190 --> 00:51:34,190 >> PROFESSOR: Não, não. 918 00:51:34,190 --> 00:51:34,860 Não se preocupe. 919 00:51:34,860 --> 00:51:39,270 Na verdade, é teoricamente possível para que você possa obter todos os pontos sobre uma questão 920 00:51:39,270 --> 00:51:41,980 mesmo que seu código será nunca são executados na vida real. 921 00:51:41,980 --> 00:51:46,052 Eu sugiro que você não tente para que isso aconteça. 922 00:51:46,052 --> 00:51:48,260 Por exemplo, como se tudo que está aqui é certo, 923 00:51:48,260 --> 00:51:51,850 mas você esquecer uma vírgula ou um suporte, seu código não vai realmente funcionar. 924 00:51:51,850 --> 00:51:53,740 Mas podemos ser misericordioso. 925 00:51:53,740 --> 00:51:54,394 >> Sim? 926 00:51:54,394 --> 00:51:56,050 >> AUDIÊNCIA: Você tem que comentar sobre a nossa caligrafia? 927 00:51:56,050 --> 00:51:57,758 >> PROFESSOR: Não, não, não se preocupa com isso. 928 00:51:57,758 --> 00:51:58,440 Sem comentar. 929 00:51:58,440 --> 00:51:59,400 Estilo deve ser bom. 930 00:51:59,400 --> 00:52:01,470 Como, não smush tudo em uma linha. 931 00:52:01,470 --> 00:52:04,580 Nós não vai ser feliz com você, se você fizer isso. 932 00:52:04,580 --> 00:52:07,250 >> Alguém quer dá-me a primeira linha? 933 00:52:07,250 --> 00:52:08,633 Dica, é muito fácil. 934 00:52:08,633 --> 00:52:09,320 >> Sim? 935 00:52:09,320 --> 00:52:11,920 >> AUDIÊNCIA: Int, n é igual a zero. 936 00:52:11,920 --> 00:52:13,734 Basta configurar balcão. 937 00:52:13,734 --> 00:52:15,900 PROFESSOR: Então, nós queremos algum uma espécie de contador, certo? 938 00:52:15,900 --> 00:52:19,780 Eu só vou nomeá-lo "contar" por uma questão de legibilidade. 939 00:52:19,780 --> 00:52:21,265 O que nós queremos para defini-la igual a? 940 00:52:21,265 --> 00:52:21,890 >> AUDIÊNCIA: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESSOR: Yep. 942 00:52:23,840 --> 00:52:24,340 Ponto e vírgula. 943 00:52:24,340 --> 00:52:26,250 É também ponto e vírgula desenho muito estranhas. 944 00:52:26,250 --> 00:52:28,870 Apenas a prática de fazer isso. 945 00:52:28,870 --> 00:52:31,990 >> Então, nós queremos ter primeiro um contador do tipo int. 946 00:52:31,990 --> 00:52:35,360 Porque eu quero contar-se como muitos caracteres ou letras são 947 00:52:35,360 --> 00:52:36,780 em esta cadeia, certo? 948 00:52:36,780 --> 00:52:38,330 Primeiro passo muito fácil. 949 00:52:38,330 --> 00:52:42,140 >> OK, talvez um pouco mais complexo Agora, como é que vamos fazê-lo? 950 00:52:42,140 --> 00:52:45,400 Alguém quer dá-me a linha de código 951 00:52:45,400 --> 00:52:48,450 que pode ser capaz de ajudar circuito através de quaisquer que é isso? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Sim, alma corajosa na parte de trás? 954 00:52:56,900 --> 00:53:06,832 >> AUDIÊNCIA: OK, por isso, enquanto ponto asteriscos, o sim, estrela de s, 955 00:53:06,832 --> 00:53:09,465 não é igual a zero, em seguida, fazer alguma coisa? 956 00:53:09,465 --> 00:53:11,090 PROFESSOR: Isso é muito, muito perto. 957 00:53:11,090 --> 00:53:11,835 Muito próximo. 958 00:53:11,835 --> 00:53:13,710 Então eu vou para resolver duas coisas com isso. 959 00:53:13,710 --> 00:53:18,240 Primeiro de tudo, não é exatamente zero. 960 00:53:18,240 --> 00:53:20,110 O que é isso? 961 00:53:20,110 --> 00:53:22,550 É o terminador nulo, que é invertida de zero. 962 00:53:22,550 --> 00:53:24,960 Então, eles são diferentes em termos de como eles estão armazenados. 963 00:53:24,960 --> 00:53:26,270 Então você está realmente perto. 964 00:53:26,270 --> 00:53:30,330 >> E em segundo lugar, não queremos apenas mover o ponteiro. 965 00:53:30,330 --> 00:53:32,320 Queremos realmente acessar os valores, certo? 966 00:53:32,320 --> 00:53:34,050 E assim como podemos fazer isso? 967 00:53:34,050 --> 00:53:34,550 Muito fácil. 968 00:53:34,550 --> 00:53:36,841 Não pense sobre ponteiros, não pensam sobre memórias. 969 00:53:36,841 --> 00:53:38,525 De volta para a segunda semana do curso. 970 00:53:38,525 --> 00:53:39,555 >> AUDIÊNCIA: [inaudível]. 971 00:53:39,555 --> 00:53:40,680 PROFESSOR: A partir de, lembra? 972 00:53:40,680 --> 00:53:41,400 Quais são cordas? 973 00:53:41,400 --> 00:53:42,650 Como eles são armazenados na memória? 974 00:53:42,650 --> 00:53:43,300 >> AUDIÊNCIA: Eles estão levantadas. 975 00:53:43,300 --> 00:53:43,810 >> PROFESSOR: Eles são levantadas. 976 00:53:43,810 --> 00:53:45,550 Então, como vamos acessar cada personagem dentro? 977 00:53:45,550 --> 00:53:46,466 >> AUDIÊNCIA: [inaudível]. 978 00:53:46,466 --> 00:53:47,530 Professor: Exatamente. 979 00:53:47,530 --> 00:53:53,195 Então o que se passa dentro while-- aqui? 980 00:53:53,195 --> 00:53:54,940 S de - 981 00:53:54,940 --> 00:53:55,920 >> AUDIÊNCIA: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSOR: Oh, eu não existe, não é? 983 00:53:58,216 --> 00:53:59,620 >> AUDIÊNCIA: Oh, conte? 984 00:53:59,620 --> 00:54:01,640 >> PROFESSOR: Nós podemos apenas usar contagem, não podemos? 985 00:54:01,640 --> 00:54:03,050 >> AUDIÊNCIA: Desculpe, eu o chamei i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSOR: Sim, é tudo de bom. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Nós temos uma variável-se aqui que é já foi declarado como o nosso balcão. 989 00:54:10,760 --> 00:54:13,650 Então, por que nós não apenas utilizar esse para percorrer o loop while? 990 00:54:13,650 --> 00:54:15,230 Isso faz sentido? 991 00:54:15,230 --> 00:54:20,864 >> Assim, enquanto s de count-- alguém quer para me dar o que acontece depois aqui? 992 00:54:20,864 --> 00:54:22,030 AUDIÊNCIA: É não é igual. 993 00:54:22,030 --> 00:54:23,405 PROFESSOR: Não é igual, certo? 994 00:54:23,405 --> 00:54:26,200 É o estrondo iguais, ponto de exclamação é igual, 995 00:54:26,200 --> 00:54:28,500 tudo o que vocês querem chamá-lo não equal-- 996 00:54:28,500 --> 00:54:29,496 >> AUDIÊNCIA: [inaudível]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESSOR: Yeah. 998 00:54:30,990 --> 00:54:37,110 Lembre-se aspas simples é para um char, aspas duplas são para uma string. 999 00:54:37,110 --> 00:54:38,630 Tenha cuidado ao usá-los. 1000 00:54:38,630 --> 00:54:42,430 Então, quando nós estamos olhando através de o array, o último caractere, 1001 00:54:42,430 --> 00:54:46,420 sabemos que não queremos que seja invertida a zero. 1002 00:54:46,420 --> 00:54:47,340 >> Assim, enquanto. 1003 00:54:47,340 --> 00:54:48,840 Nós não estamos no fim da cadeia. 1004 00:54:48,840 --> 00:54:52,335 O que nós queremos fazer dentro? 1005 00:54:52,335 --> 00:54:55,269 >> AUDIÊNCIA: Nós queremos adicionar ao balcão para que ele conta plus plus? 1006 00:54:55,269 --> 00:54:56,060 Professor: Exatamente. 1007 00:54:56,060 --> 00:55:03,064 Então aqui nós vamos fazer contar, contagem plus plus. 1008 00:55:03,064 --> 00:55:03,980 Faltando mais uma linha. 1009 00:55:03,980 --> 00:55:05,090 Estamos quase lá. 1010 00:55:05,090 --> 00:55:07,398 O que estamos esquecendo de fazer? 1011 00:55:07,398 --> 00:55:08,770 >> AUDIÊNCIA: Voltando a zero? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESSOR: Você quer retornar zero? 1013 00:55:10,820 --> 00:55:12,962 >> AUDIÊNCIA: Não, retornando para strlen. 1014 00:55:12,962 --> 00:55:13,511 Aguarde. 1015 00:55:13,511 --> 00:55:14,760 PROFESSOR: Qual é armazenado em? 1016 00:55:14,760 --> 00:55:15,090 AUDIÊNCIA: Contagem. 1017 00:55:15,090 --> 00:55:15,589 Contagem. 1018 00:55:15,589 --> 00:55:17,150 Professor: Exatamente. 1019 00:55:17,150 --> 00:55:20,760 Então aqui nós vamos voltar contagem. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Porque o que nós somos fazendo aqui ultimately-- 1022 00:55:25,380 --> 00:55:29,780 temos uma variável de contador que é vai incrementar através da nossa cadeia. 1023 00:55:29,780 --> 00:55:33,050 Nós vamos continuar, continuar ir, em torno e ao redor neste loop. 1024 00:55:33,050 --> 00:55:37,700 E enquanto não estamos no final deste string, que é o terminador nulo. 1025 00:55:37,700 --> 00:55:40,410 >> E toda vez que nós atravessamos -lo, estamos adicionando ao nosso balcão. 1026 00:55:40,410 --> 00:55:42,640 E vamos mais longe ao longo desta matriz. 1027 00:55:42,640 --> 00:55:44,880 E, no final, uma vez que bateu o terminador nulo, 1028 00:55:44,880 --> 00:55:48,469 sabemos, oh, nós podemos quebrar, retornar a contagem. 1029 00:55:48,469 --> 00:55:49,260 Nós temos nossa strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Será que todo mundo chegar como este foi implementado? 1032 00:55:56,400 --> 00:55:58,830 Enquanto loops-- Eu sei que não tem feito muito com eles, 1033 00:55:58,830 --> 00:56:01,240 mas eles são normalmente muito, muito útil se você 1034 00:56:01,240 --> 00:56:05,390 Não sei o que você está parando condição tem necessariamente de ser. 1035 00:56:05,390 --> 00:56:06,220 >> Questão? 1036 00:56:06,220 --> 00:56:10,080 >> AUDIÊNCIA: Podemos escrever nulo com a condição de tempo? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESSOR: Embora? 1038 00:56:10,940 --> 00:56:15,304 É, portanto, neste problema que tive você caras assumir que s não vai ser nulo. 1039 00:56:15,304 --> 00:56:17,220 Porque lembre-se, teoricamente, se eu te dei 1040 00:56:17,220 --> 00:56:21,180 um ponteiro que era demasiado grande de memória, que lhe daria o nulo, certo? 1041 00:56:21,180 --> 00:56:23,770 Isso é o que o operacional sistema faria. 1042 00:56:23,770 --> 00:56:26,960 >> Então, se eu não lhe disse para assumir s seria nulo, você precisa verificar. 1043 00:56:26,960 --> 00:56:32,050 Então aqui, você faria, se s é igual a é igual a zero, retornar um. 1044 00:56:32,050 --> 00:56:33,028 Algo como isso. 1045 00:56:33,028 --> 00:56:34,153 AUDIÊNCIA: [inaudível] zero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSOR: OK, eu vou dizer você por que não podemos fazer isso. 1048 00:56:39,370 --> 00:56:43,357 Porque lembre-se na memória, bem, aqui. 1049 00:56:43,357 --> 00:56:43,940 Vamos aqui. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Você tem blocos gigantes memória de todos com grades 1052 00:56:54,090 --> 00:56:56,680 que armazenam valores diferentes, certo? 1053 00:56:56,680 --> 00:57:00,110 E assim todo o é-- para uma string exemplo, se quisermos entrada Olá, 1054 00:57:00,110 --> 00:57:05,490 seria H-E-G-L-S barra invertida zero, certo? 1055 00:57:05,490 --> 00:57:09,570 E então, quem sabe, como aleatório coisas que são aqui depois. 1056 00:57:09,570 --> 00:57:11,220 >> Nós realmente não sei o que está lá. 1057 00:57:11,220 --> 00:57:13,350 E por isso, se você fosse fazer em vez de barra invertida zero, 1058 00:57:13,350 --> 00:57:15,590 null, ele não pode ser nulo. 1059 00:57:15,590 --> 00:57:17,680 Porque ele só pode significar algumas outras coisas aleatórias 1060 00:57:17,680 --> 00:57:19,270 que não pertencem em sua string. 1061 00:57:19,270 --> 00:57:23,219 E assim, a maneira que nós sempre sabemos que uma seqüência termina com uma barra invertida é zero. 1062 00:57:23,219 --> 00:57:25,760 E assim que é sempre como nós verificar para ver o fim de uma seqüência de caracteres. 1063 00:57:25,760 --> 00:57:30,820 >> Null, tudo o que significa é que se você tem um ponteiro inexistente, em primeiro lugar, 1064 00:57:30,820 --> 00:57:36,160 ou se a sua memória é tão grande que você não pode devolvê-lo, então ele seria nulo. 1065 00:57:36,160 --> 00:57:40,150 Portanto, muito cuidado ao diferenciar a diferença entre nula 1066 00:57:40,150 --> 00:57:42,130 e a barra invertida zero. 1067 00:57:42,130 --> 00:57:43,670 Sim. 1068 00:57:43,670 --> 00:57:46,886 >> Todos OK com isso? 1069 00:57:46,886 --> 00:57:48,150 ESTÁ BEM. 1070 00:57:48,150 --> 00:57:50,440 >> Então eu tive que vocês escrever strlen. 1071 00:57:50,440 --> 00:57:53,790 Viabilizar também poderíamos perguntar-lhe escrever out A a I, lembre-se que "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 ou o que vocês querem chamá-lo? 1073 00:57:55,400 --> 00:57:58,010 Essa função em Vigenere e César, que 1074 00:57:58,010 --> 00:58:00,900 converte um valor ASCII para um inteiro? 1075 00:58:00,900 --> 00:58:04,360 Isso também vem em questionários passados das funções que já lhe pediu para escrever. 1076 00:58:04,360 --> 00:58:08,280 >> Praticamente qualquer função que você já usou e é 1077 00:58:08,280 --> 00:58:11,660 muito fácil escrever-se, sensores de gosto é 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 Funções que convertem um seqüência de minúsculas para maiúsculas. 1080 00:58:17,964 --> 00:58:19,380 Todos nós sabemos como fazer isso, certo? 1081 00:58:19,380 --> 00:58:21,100 É muito fácil. 1082 00:58:21,100 --> 00:58:24,770 Só quero ter certeza de que você can-- é o mesmo processo de pensamento. 1083 00:58:24,770 --> 00:58:26,940 Você acabou de fazer uma iteração através e você mudar as coisas. 1084 00:58:26,940 --> 00:58:30,190 Você quer contar ou quando você virar as coisas de forma diferente. 1085 00:58:30,190 --> 00:58:32,280 >> Gostaria suggest-- I Não sei se vamos 1086 00:58:32,280 --> 00:58:39,080 para pedir-lhe para memorizar o que o capital Um ou Z de capital, ou minúsculas Um ou minúsculas 1087 00:58:39,080 --> 00:58:42,640 z estão em ASCII, mas gostaria de sugerir talvez por escrito, que estabelece, em caso 1088 00:58:42,640 --> 00:58:44,124 nós fazemos. 1089 00:58:44,124 --> 00:58:45,540 Só para vocês ter uma referência. 1090 00:58:45,540 --> 00:58:47,180 Como maiúsculo é, o que, 197? 1091 00:58:47,180 --> 00:58:51,320 E então minúsculas é como 50 algo. 1092 00:58:51,320 --> 00:58:52,492 65, sim, lá você vai. 1093 00:58:52,492 --> 00:58:54,950 Então, só sei muito bem o diferença entre eles é de 32. 1094 00:58:54,950 --> 00:58:57,670 Isso é muito importante. 1095 00:58:57,670 --> 00:58:58,170 Sim. 1096 00:58:58,170 --> 00:59:01,445 Eu sou bom nisso? 1097 00:59:01,445 --> 00:59:01,945 ESTÁ BEM. 1098 00:59:01,945 --> 00:59:03,109 >> AUDIÊNCIA: Poderíamos teoricamente escrever algum 1099 00:59:03,109 --> 00:59:04,410 destes para baixo também em nosso little-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESSOR: Você teoricamente poderia apenas copiar a função para baixo. 1101 00:59:07,035 --> 00:59:08,482 Isso é verdade. 1102 00:59:08,482 --> 00:59:11,080 >> AUDIÊNCIA: Não [inaudível]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESSOR: Vocês têm uma folha. 1104 00:59:12,720 --> 00:59:14,194 Vocês têm uma folha de nota. 1105 00:59:14,194 --> 00:59:14,860 Você pode escrevê-lo. 1106 00:59:14,860 --> 00:59:15,490 Você pode escrevê-lo. 1107 00:59:15,490 --> 00:59:17,031 Você pode fazer o que quiser com ele. 1108 00:59:17,031 --> 00:59:18,530 Sim. 1109 00:59:18,530 --> 00:59:21,406 Então, teoricamente, se você quiser, ir para. 1110 00:59:21,406 --> 00:59:23,338 >> AUDIÊNCIA: [inaudível] mas nós realmente não 1111 00:59:23,338 --> 00:59:25,994 necessariamente precisa se lembrar o valor, nós podemos apenas 1112 00:59:25,994 --> 00:59:28,914 usar para a parte superior ou a funções inferior, certo? 1113 00:59:28,914 --> 00:59:29,580 PROFESSOR: Yeah. 1114 00:59:29,580 --> 00:59:32,740 Mas se nós demos-lhe uma pergunta que diz que escrever para superior, 1115 00:59:32,740 --> 00:59:34,350 então você precisa para escrevê-lo. 1116 00:59:34,350 --> 00:59:38,150 Então vocês podem supor que você caras têm acesso a todas as funções, 1117 00:59:38,150 --> 00:59:41,523 mas se você deseja usar para superior ou inferior, o que você também tem que fazer? 1118 00:59:41,523 --> 00:59:43,840 >> AUDIÊNCIA: [inaudível] usar CS50 [inaudível] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESSOR: É CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Tenha cuidado lá. 1122 00:59:48,310 --> 00:59:50,640 >> Assim, a parte superior, a inferior, é superior, seja inferior, 1123 00:59:50,640 --> 00:59:52,990 funções que envolvem manipulação de cadeia são 1124 00:59:52,990 --> 00:59:55,490 tudo dentro de um ou outro a Ascii ou dentro da biblioteca matemática 1125 00:59:55,490 --> 00:59:57,350 ou dentro da biblioteca string. 1126 00:59:57,350 --> 01:00:00,290 Então, se vocês usá-los funções, tenha cuidado para lembrar 1127 01:00:00,290 --> 01:00:01,451 para incluir esse cabeçalho. 1128 01:00:01,451 --> 01:00:03,950 Por isso, talvez também algo que você pretende incluir na sua folha, 1129 01:00:03,950 --> 01:00:04,892 o que são o cabeçalho? 1130 01:00:04,892 --> 01:00:06,600 Quais são as bibliotecas você está usando? 1131 01:00:06,600 --> 01:00:08,550 Que funções são dentro dessas bibliotecas? 1132 01:00:08,550 --> 01:00:09,230 É importante. 1133 01:00:09,230 --> 01:00:10,420 >> Sim? 1134 01:00:10,420 --> 01:00:12,570 >> AUDIÊNCIA: Poderíamos apenas policial fora e fazer hashtag 1135 01:00:12,570 --> 01:00:14,955 através do absolutamente cada letra que já 1136 01:00:14,955 --> 01:00:17,340 visto como sobre todas as questões? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESSOR: Você poderia. 1138 01:00:18,320 --> 01:00:20,361 Eu não sei o quão feliz vamos estar ao grau 1139 01:00:20,361 --> 01:00:25,090 que teste quando cada pedaço de código é duas vezes mais longo, uma vez que precisa de ser. 1140 01:00:25,090 --> 01:00:27,200 Eu não sei, nós pudemos tirar um ponto para o estilo. 1141 01:00:27,200 --> 01:00:28,790 Mas, teoricamente, o seu código seria certo. 1142 01:00:28,790 --> 01:00:30,915 Vocês poderiam policial fora e basta incluir tudo. 1143 01:00:30,915 --> 01:00:32,044 Isso é bom demais, sim. 1144 01:00:32,044 --> 01:00:32,960 AUDIÊNCIA: [inaudível]. 1145 01:00:32,960 --> 01:00:33,270 PROFESSOR: Yeah. 1146 01:00:33,270 --> 01:00:34,900 Gostaria de sugerir não fazer isso embora. 1147 01:00:34,900 --> 01:00:35,505 Sim. 1148 01:00:35,505 --> 01:00:36,130 AUDIÊNCIA: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESSOR: Boa pergunta. 1150 01:00:36,620 --> 01:00:37,480 AUDIÊNCIA: Então, o pior cenário. 1151 01:00:37,480 --> 01:00:38,563 PROFESSOR: O pior caso. 1152 01:00:38,563 --> 01:00:40,350 Se você esquecer totalmente, você poderia fazer isso. 1153 01:00:40,350 --> 01:00:40,850 Sim. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Yep, o código é logo ali. 1156 01:00:45,400 --> 01:00:49,176 Eu usei n em vez de contagem, mas, você sabe, qualquer que seja o seu barco flutua. 1157 01:00:49,176 --> 01:00:51,092 AUDIÊNCIA: Espera, por isso, não teria que hashtag 1158 01:00:51,092 --> 01:00:53,460 incluir porque somos começando no int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSOR: Sim, eu apenas assumi que nós nos pediu para escrever a função. 1161 01:00:59,924 --> 01:01:02,340 Se você quiser ser seguro, você provavelmente poderia colocá-lo lá. 1162 01:01:02,340 --> 01:01:05,650 Mas eu simplesmente não se incomodou, sim. 1163 01:01:05,650 --> 01:01:09,919 >> Eu nem sei se você precisar de alguma biblioteca para isso. 1164 01:01:09,919 --> 01:01:12,710 Porque você não está realmente a impressão qualquer coisa ou nada, certo? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Sim, eu não sei se você precisa de uma biblioteca. 1167 01:01:19,568 --> 01:01:22,400 >> ESTÁ BEM. 1168 01:01:22,400 --> 01:01:26,020 Este também é um pouco mais longo as linhas de manipulação de memória. 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 isso. 1171 01:01:28,960 --> 01:01:30,580 Você tem uma função chamada func. 1172 01:01:30,580 --> 01:01:33,570 Eu poderia ter chamado ele o que for, mas eu escolho para nomeá-la func. 1173 01:01:33,570 --> 01:01:36,000 Eu tenho-o acima do meu principal. 1174 01:01:36,000 --> 01:01:39,790 Lembre-se, você quer ter uma função após o seu principal, 1175 01:01:39,790 --> 01:01:42,370 você quer ter a certeza de que incluem o protótipo do topo. 1176 01:01:42,370 --> 01:01:45,750 >> Mas, neste caso, foi tão curta que eu senti que eu poderia apenas 1177 01:01:45,750 --> 01:01:47,260 incluí-lo no topo da página. 1178 01:01:47,260 --> 01:01:51,170 Eu não precisava ter o protótipo, porque já está escrito acima. 1179 01:01:51,170 --> 01:01:55,430 Então tudo que eu estou fazendo na minha função principal está criando inteiro x é igual a 10. 1180 01:01:55,430 --> 01:02:00,490 Eu estou chamando minha função func, e, em seguida, imprimir algo. 1181 01:02:00,490 --> 01:02:02,840 >> E, em seguida, que, na verdade, o que func está fazendo. 1182 01:02:02,840 --> 01:02:04,340 Vocês querem pensar por isso. 1183 01:02:04,340 --> 01:02:05,423 Porque é um pouco complicado. 1184 01:02:05,423 --> 01:02:07,220 É muito, muito complicado, na verdade. 1185 01:02:07,220 --> 01:02:09,549 Pensar com o que este programa seria outputting. 1186 01:02:09,549 --> 01:02:10,840 Eu vou dar a vocês dois minutos. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Boas discussões? 1189 01:03:37,891 --> 01:03:38,853 >> AUDIÊNCIA: É. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESSOR: Yeah. 1191 01:03:39,815 --> 01:03:42,220 Tudo bem, então este é complicado por uma razão. 1192 01:03:42,220 --> 01:03:44,845 E é por isso que eu quis trazer esta a atenção de todos. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Alguém quer me dar uma sugestão, uma tentativa? 1195 01:03:51,147 --> 01:03:52,230 O que isso imprimir? 1196 01:03:52,230 --> 01:03:53,930 Totalmente bem se você estiver errado. 1197 01:03:53,930 --> 01:03:55,619 Sim? 1198 01:03:55,619 --> 01:03:59,483 >> AUDIÊNCIA: Eu acho que é 100 e em seguida, 10 em duas linhas separadas. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESSOR: E a 10? 1200 01:04:00,940 --> 01:04:03,154 Alguém tem alguma outras suposições? 1201 01:04:03,154 --> 01:04:04,150 Sim? 1202 01:04:04,150 --> 01:04:09,040 >> AUDIÊNCIA: Talvez apenas 10, porque func não está retornando nada? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSOR: OK, então nós tem palpite número um 1204 01:04:11,610 --> 01:04:14,990 que é suposto número é dois indo só para imprimir 10. 1205 01:04:14,990 --> 01:04:17,623 Alguém tem alguma outras suposições? 1206 01:04:17,623 --> 01:04:19,654 ESTÁ BEM. 1207 01:04:19,654 --> 01:04:21,070 Então, vamos caminhar por este, certo? 1208 01:04:21,070 --> 01:04:23,903 Sempre que você pegar um pedaço de código, não basta olhar para ele e ser como, 1209 01:04:23,903 --> 01:04:25,060 ah, isso é tanta coisa! 1210 01:04:25,060 --> 01:04:26,460 Estou tão confuso! 1211 01:04:26,460 --> 01:04:28,220 Como, se acalmar. 1212 01:04:28,220 --> 01:04:31,602 Só sei que você poderia apenas olhar através de código linha por linha. 1213 01:04:31,602 --> 01:04:32,310 Isso é tudo o que é. 1214 01:04:32,310 --> 01:04:33,840 É como ler um livro. 1215 01:04:33,840 --> 01:04:38,000 >> Assim, com qualquer função, nós sempre começam em principal. 1216 01:04:38,000 --> 01:04:40,860 Então, nós estamos indo para começam em void main int, 1217 01:04:40,860 --> 01:04:43,010 até mesmo o programa de já partem, certo? 1218 01:04:43,010 --> 01:04:45,070 Comece no no vazio 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ão, eu vou apagar isso. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Vou chamar a memória só para você caras pode tipo de ver o que está acontecendo. 1223 01:04:58,470 --> 01:05:02,190 >> Lembre-se aqui que temos a nossa pilha? 1224 01:05:02,190 --> 01:05:05,810 Até aqui temos o nosso amontoar em algum lugar por aqui. 1225 01:05:05,810 --> 01:05:07,470 Pilha cresce, certo? 1226 01:05:07,470 --> 01:05:10,150 E dentro da pilha, você tem a corrente eléctrica, assim como funcionar 1227 01:05:10,150 --> 01:05:12,230 todos os canos principais variáveis ​​locais. 1228 01:05:12,230 --> 01:05:14,310 >> Então, aqui, int x igual a 10. 1229 01:05:14,310 --> 01:05:17,670 Dentro da nossa função principal nós somos a criação de uma variável chamada x. 1230 01:05:17,670 --> 01:05:20,590 Estamos estabelecendo que igual a 10. 1231 01:05:20,590 --> 01:05:24,200 Aqui você tem algumas x, e você está definindo que igual a 10, à direita, 1232 01:05:24,200 --> 01:05:25,400 dentro principal. 1233 01:05:25,400 --> 01:05:27,430 Todo mundo é bom? 1234 01:05:27,430 --> 01:05:28,070 >> Função. 1235 01:05:28,070 --> 01:05:30,330 Então, agora, dentro do nosso principal função, estamos chamando 1236 01:05:30,330 --> 01:05:31,810 a função que escrevemos acima. 1237 01:05:31,810 --> 01:05:34,550 Então, nós estamos agora entrar na segunda função. 1238 01:05:34,550 --> 01:05:40,120 Nós vamos criar outro variável int x é igual a 100. 1239 01:05:40,120 --> 01:05:42,410 O que está acontecendo aqui na pilha? 1240 01:05:42,410 --> 01:05:46,980 O que acontece quando você chamar um função que cria novas variáveis? 1241 01:05:46,980 --> 01:05:50,038 O que acontece aqui na pilha? 1242 01:05:50,038 --> 01:05:52,134 >> AUDIÊNCIA: [inaudível] pilhas em cima? 1243 01:05:52,134 --> 01:05:52,800 PROFESSOR: Yeah. 1244 01:05:52,800 --> 01:05:54,050 Por isso, na verdade, cria uma cópia. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 E que tipo de pilhas na parte superior. 1247 01:05:57,740 --> 01:06:00,700 Pense no stack-- uma pilha de livros, uma pilha de nada. 1248 01:06:00,700 --> 01:06:06,520 Piles no topo, primeiro na última para fora, último a entrar, primeiro a sair. 1249 01:06:06,520 --> 01:06:08,471 >> Por isso, vai criar um x aqui. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Isso vai ter todas as variáveis ​​funcs. 1252 01:06:14,450 --> 01:06:14,950 Ótimo. 1253 01:06:14,950 --> 01:06:20,980 Portanto, agora temos dois x diferentes que representam duas coisas muito diferentes. 1254 01:06:20,980 --> 01:06:24,470 Então nós vamos para imprimir a número inteiro de x. 1255 01:06:24,470 --> 01:06:26,430 Então, vamos imprimir 100, certo? 1256 01:06:26,430 --> 01:06:29,389 Porque aqui é 100. 1257 01:06:29,389 --> 01:06:31,680 Então essa é a primeira coisa que está indo para imprimir. 1258 01:06:31,680 --> 01:06:35,710 Como esta função retorna nada, agora essa função, essa linha no principal 1259 01:06:35,710 --> 01:06:37,070 é feito. 1260 01:06:37,070 --> 01:06:39,160 Todos bom comigo até agora? 1261 01:06:39,160 --> 01:06:43,034 >> Então, nós estamos agora através de dois dos três linhas de nossa função principal. 1262 01:06:43,034 --> 01:06:44,450 Agora nós estamos indo para a terceira linha. 1263 01:06:44,450 --> 01:06:46,350 Nós estamos indo para printf. 1264 01:06:46,350 --> 01:06:48,222 O que é este x dentro principal? 1265 01:06:48,222 --> 01:06:49,263 O que isso representa? 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 >> AUDIÊNCIA: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESSOR: É 100? 1270 01:06:56,799 --> 01:06:57,590 AUDIÊNCIA: Still 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSOR: Still 10. 1272 01:06:58,878 --> 01:07:00,870 Sim. 1273 01:07:00,870 --> 01:07:06,810 Porque lembre-se, no prazo de nossa func, x é igual a 100. 1274 01:07:06,810 --> 01:07:09,690 Mas se voltarmos para trás a nossa função principal, 1275 01:07:09,690 --> 01:07:12,440 variável que é armazenado numa lugar diferente em nosso stack. 1276 01:07:12,440 --> 01:07:16,250 >> Então, agora temos de voltar para o pilha principal, rede de variáveis ​​locais. 1277 01:07:16,250 --> 01:07:18,460 E aqui que x é igual a 10. 1278 01:07:18,460 --> 01:07:20,300 E assim nós vamos imprimir 10. 1279 01:07:20,300 --> 01:07:22,530 >> Então, ela estava absolutamente certo. 1280 01:07:22,530 --> 01:07:25,053 Nós vamos ter a saída de 100 e 10. 1281 01:07:25,053 --> 01:07:25,553 Sim? 1282 01:07:25,553 --> 01:07:28,700 AUDIÊNCIA: Quando você malloc, é o heap ou da pilha que é [inaudível]? 1283 01:07:28,700 --> 01:07:31,950 PROFESSOR: Quando você malloc, você está tomando memória do heap 1284 01:07:31,950 --> 01:07:32,830 e respectiva distribuição. 1285 01:07:32,830 --> 01:07:34,950 De modo que você não tem para mexer com nada disso. 1286 01:07:34,950 --> 01:07:38,100 Então eu acho que a maior takeaway aqui é algo chamado escopo. 1287 01:07:38,100 --> 01:07:39,650 >> Para aqueles de vocês que estavam em a sessão de revisão na noite passada, 1288 01:07:39,650 --> 01:07:41,080 Conversamos um pouco sobre isso. 1289 01:07:41,080 --> 01:07:45,380 Âmbito define como e quando existirem as suas variáveis. 1290 01:07:45,380 --> 01:07:48,050 Ou dentro do que emoldura fazer existir suas variáveis. 1291 01:07:48,050 --> 01:07:51,690 >> Praticamente a regra geral é, o seu variables-- se você criá-los 1292 01:07:51,690 --> 01:07:56,660 dentro braces-- encaracolado eles existem somente dentro dessas chaves. 1293 01:07:56,660 --> 01:08:00,312 >> Assim, por exemplo, na nossa função de func, você vê essas duas chaves. 1294 01:08:00,312 --> 01:08:02,020 Se você estiver criando qualquer coisa dentro dele, 1295 01:08:02,020 --> 01:08:06,500 chances são tudo que você está fazendo é a criação de uma pilha e que o armazenamento de lá. 1296 01:08:06,500 --> 01:08:07,430 Mesma coisa na principal. 1297 01:08:07,430 --> 01:08:09,950 Isso é apenas armazenado dentro do principal. 1298 01:08:09,950 --> 01:08:13,560 >> Além disso, você quer ser muito, muito cuidado aqui. 1299 01:08:13,560 --> 01:08:18,310 Porque escopo também empresta -se a diferentes exemplos. 1300 01:08:18,310 --> 01:08:25,950 Assim, por exemplo para uma loop, para int i é igual a 0. 1301 01:08:25,950 --> 01:08:28,460 I é menor do que, eu não sei, 10. 1302 01:08:28,460 --> 01:08:32,111 I plus plus. 1303 01:08:32,111 --> 01:08:34,560 E você tem o código para dentro dele, certo? 1304 01:08:34,560 --> 01:08:38,830 >> Onde é que esta variável, i, na verdade, só existem? 1305 01:08:38,830 --> 01:08:40,510 Só dentro de seu loop for. 1306 01:08:40,510 --> 01:08:43,640 Então Aposto que muitos de vocês têm provavelmente encontrou este erro quando 1307 01:08:43,640 --> 01:08:45,930 você está fazendo em seus programas Série de Exercícios. 1308 01:08:45,930 --> 01:08:49,990 Quantos de vocês têm tentado usar i fora de um loop e tinha um erro? 1309 01:08:49,990 --> 01:08:53,310 Como uma inteiros sem referência ou algo assim? 1310 01:08:53,310 --> 01:08:56,069 >> A razão pela qual isso acontece é porque você está aqui 1311 01:08:56,069 --> 01:08:59,109 criando algo que só existe dentro de seu loop for. 1312 01:08:59,109 --> 01:09:01,972 E se você tentar usá-lo, eu não realmente existe fora dele. 1313 01:09:01,972 --> 01:09:04,930 Então, basicamente, um computador dizendo, eu Não sei o que você está falando. 1314 01:09:04,930 --> 01:09:08,689 Tudo o que sei é que eu era um aqui, mas agora já não é. 1315 01:09:08,689 --> 01:09:12,580 >> Então, se eu fosse para criar um loop for para dentro, certo? 1316 01:09:12,580 --> 01:09:19,080 E eu vou criar uma outra, como int j, e tê-lo fazer o que quer. 1317 01:09:19,080 --> 01:09:23,689 E você tem um código dentro de que loop, j só existe aqui. 1318 01:09:23,689 --> 01:09:26,029 Mas isso também existe dentro de mim. 1319 01:09:26,029 --> 01:09:29,310 E assim j só existe dentro deste loop for, 1320 01:09:29,310 --> 01:09:33,850 Considerando i existe na coisa toda. 1321 01:09:33,850 --> 01:09:34,500 >> Todo mundo é clara? 1322 01:09:34,500 --> 01:09:37,416 A mesma coisa com instruções condicionais se você quiser criar qualquer coisa. 1323 01:09:37,416 --> 01:09:40,390 Mesma coisa com loops enquanto que se você deseja criar alguma coisa. 1324 01:09:40,390 --> 01:09:42,390 Isso é algo a ser muito, muito cuidado. 1325 01:09:42,390 --> 01:09:45,681 Portanto, este foi realmente um bom problema no sentido de que ele demonstrou duas coisas. 1326 01:09:45,681 --> 01:09:47,160 Ele demonstrou pela primeira vez, o escopo. 1327 01:09:47,160 --> 01:09:49,550 E demonstrou também a alocação de memória. 1328 01:09:49,550 --> 01:09:54,130 Porque vocês devem saber que funções crescer para cima na pilha. 1329 01:09:54,130 --> 01:09:56,710 E que quando você chamar funções, você está criando 1330 01:09:56,710 --> 01:09:59,060 essencialmente uma nova pilha de memória. 1331 01:09:59,060 --> 01:10:02,100 Isso é muito diferente do o que sua memória de rede é. 1332 01:10:02,100 --> 01:10:03,300 Sim. 1333 01:10:03,300 --> 01:10:03,800 Ufa! 1334 01:10:03,800 --> 01:10:05,470 Todos OK sobre isso? 1335 01:10:05,470 --> 01:10:06,750 Isso foi confuso. 1336 01:10:06,750 --> 01:10:09,380 Muito bons temas para passar por cima, porque provavelmente você está 1337 01:10:09,380 --> 01:10:12,255 indo para obter algum complicado coisas como essa no questionário. 1338 01:10:12,255 --> 01:10:13,350 Sim. 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 Eu vou colocar você chegar em um 100 A linha 10 e depois no outro. 1342 01:10:18,430 --> 01:10:21,468 Sim, muito bom. 1343 01:10:21,468 --> 01:10:26,350 >> OK, agora vocês vão começar a chance de ser os ATs. 1344 01:10:26,350 --> 01:10:30,600 Você começa a responder a todas a adorável e-mails que eu às vezes tenho. 1345 01:10:30,600 --> 01:10:34,290 >> Então, Dear Andi, vejo Acho que tem algo acontecendo de errado com o meu compilador. 1346 01:10:34,290 --> 01:10:37,910 Tenho certeza de que meu código está correto, mas eu continuo recebendo uma falha de segmentação 1347 01:10:37,910 --> 01:10:39,074 toda vez que eu corro. 1348 01:10:39,074 --> 01:10:39,740 O que está acontecendo? 1349 01:10:39,740 --> 01:10:42,844 Por favor, ajudem, muito amor. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Se vocês tem algo como que como você responderia? 1352 01:10:49,410 --> 01:10:51,860 Estes são realmente muito comum perguntas que vai pedir para você. 1353 01:10:51,860 --> 01:10:54,090 É se, nós vamos dar-lhe um cenário, vamos nos dar 1354 01:10:54,090 --> 01:10:56,350 o seu melhor palpite sobre o que está acontecendo. 1355 01:10:56,350 --> 01:11:00,710 Alguém tem uma facada em o que está acontecendo? 1356 01:11:00,710 --> 01:11:02,654 Sim? 1357 01:11:02,654 --> 01:11:06,056 >> AUDIÊNCIA: Talvez o desreferenciado null, algo como o ponteiro 1358 01:11:06,056 --> 01:11:08,924 está apontando para algo nulo. 1359 01:11:08,924 --> 01:11:11,590 PROFESSOR: Sim, isso seria um exemplo de quando isso aconteceria. 1360 01:11:11,590 --> 01:11:14,467 Mas qual é a imagem maior do que está acontecendo aqui? 1361 01:11:14,467 --> 01:11:17,050 AUDIÊNCIA: É que você está tentando para acessar a memória que você não está 1362 01:11:17,050 --> 01:11:18,175 deveria ter acesso? 1363 01:11:18,175 --> 01:11:19,200 Professor: Exatamente. 1364 01:11:19,200 --> 01:11:24,800 Então, pense de uma falha seg, um off limites, área restrita na memória 1365 01:11:24,800 --> 01:11:27,780 que você não deve estar tocando. 1366 01:11:27,780 --> 01:11:31,670 >> Então, basicamente quando você está tentando para index-- como por exemplo, 1367 01:11:31,670 --> 01:11:34,110 você declarou um matriz de zero a nove. 1368 01:11:34,110 --> 01:11:37,360 Mas você tentar tocar que 10 valor, você não tem acesso a isso. 1369 01:11:37,360 --> 01:11:38,694 Porque você não declarou ele. 1370 01:11:38,694 --> 01:11:40,943 E para que o seu computador está indo olhar para isso ser assim, 1371 01:11:40,943 --> 01:11:43,440 uh oh, você está tentando ir fora dos limites do índice. 1372 01:11:43,440 --> 01:11:45,270 eu vou te dar uma falha de segmentação. 1373 01:11:45,270 --> 01:11:46,590 >> Pense em como segmento, certo? 1374 01:11:46,590 --> 01:11:49,665 Um segmento extra, a culpa é quando você tenta quebrar algo 1375 01:11:49,665 --> 01:11:50,790 e você não deveria estar lá. 1376 01:11:50,790 --> 01:11:53,660 Falha de segmentação é a qualquer momento você tentar tocar as coisas 1377 01:11:53,660 --> 01:11:54,970 que você não deve estar tocando. 1378 01:11:54,970 --> 01:11:56,815 >> Assim, exemplos comuns são um índice. 1379 01:11:56,815 --> 01:11:58,940 Claro, se você está tentando ao toque que era nulo, 1380 01:11:58,940 --> 01:12:00,220 que também funcionaria bem. 1381 01:12:00,220 --> 01:12:02,300 Se o ponteiro estava tentando tocar coisas que não devem tocar, 1382 01:12:02,300 --> 01:12:03,730 que também poderia funcionar tão bem. 1383 01:12:03,730 --> 01:12:07,120 Mais tipicamente você vai ver isso em uma matriz. 1384 01:12:07,120 --> 01:12:07,740 Todo mundo é bom? 1385 01:12:07,740 --> 01:12:10,374 >> AUDIÊNCIA: Então se você quiser para acessar o ponto 10 1386 01:12:10,374 --> 01:12:12,290 e só há um limite de nove ou algo assim. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSOR: Sim, exatamente. 1388 01:12:13,160 --> 01:12:13,660 Basicamente. 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 >> Caro Andi. 1393 01:12:19,920 --> 01:12:23,440 Então temos estes maravilhosos coisas chamado tipos. 1394 01:12:23,440 --> 01:12:25,472 Se Mesclar sort-- como nós serra no exemplo quando 1395 01:12:25,472 --> 01:12:27,180 David fez todo coisa em class-- por isso, 1396 01:12:27,180 --> 01:12:29,760 se é muito mais rápido do que qualquer um dos outros tipos, 1397 01:12:29,760 --> 01:12:33,310 por que incomoda mesmo sabendo qualquer um dos outros tipos? 1398 01:12:33,310 --> 01:12:35,100 >> O que é esta questão realmente perguntando-lhe? 1399 01:12:35,100 --> 01:12:36,659 Qual é a três word-- 1400 01:12:36,659 --> 01:12:37,950 AUDIÊNCIA: Qual é o trade-off? 1401 01:12:37,950 --> 01:12:38,530 Professor: Exatamente. 1402 01:12:38,530 --> 01:12:39,946 Isso é o que a questão está pedindo. 1403 01:12:39,946 --> 01:12:43,682 Qual é o trade-off entre Merge sort versos quaisquer outros tipos? 1404 01:12:43,682 --> 01:12:45,850 >> AUDIÊNCIA: Toma memória, certo? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESSOR: Você explicar que um pouco mais? 1406 01:12:47,720 --> 01:12:49,490 Primeiro vamos explicar loja direta. 1407 01:12:49,490 --> 01:12:50,970 Como é que merge sort trabalhar? 1408 01:12:50,970 --> 01:12:55,220 >> AUDIÊNCIA: Então ele funciona por dividindo tudo em metade 1409 01:12:55,220 --> 01:13:00,660 e, em seguida, colocá-lo juntos e realocando-lo em ordem, 1410 01:13:00,660 --> 01:13:02,862 como cada vez que você mesclar os sets. 1411 01:13:02,862 --> 01:13:03,820 PROFESSOR: Muito bonito. 1412 01:13:03,820 --> 01:13:06,861 Então, eu posso chamar isso, mas seria leve-me cinco minutos para retirá-la. 1413 01:13:06,861 --> 01:13:10,220 Olhe novamente para os slides seção onde nós cobrimos merge sort. 1414 01:13:10,220 --> 01:13:10,790 Exatamente. 1415 01:13:10,790 --> 01:13:13,406 >> Assim, a maneira Mesclar obras de classificação é ele divide as coisas pela metade, 1416 01:13:13,406 --> 01:13:15,780 e então ele só olha para o primeiros valores de todos eles 1417 01:13:15,780 --> 01:13:17,000 e classifica só isso. 1418 01:13:17,000 --> 01:13:20,364 Cria continuamente novas matrizes e coloca as coisas mais e mais em ordem. 1419 01:13:20,364 --> 01:13:23,030 E assim, enquanto que é muito, muito rápido, porque it's-- você sabe, 1420 01:13:23,030 --> 01:13:25,380 uma pesquisa binária é log n de n. 1421 01:13:25,380 --> 01:13:27,880 Você está criando tantos matrizes diferentes que você é 1422 01:13:27,880 --> 01:13:29,700 utilizando uma quantidade enorme de memória. 1423 01:13:29,700 --> 01:13:33,080 E assim, enquanto ele é mais rápido, o trade-off aqui é que você está usando mais memória. 1424 01:13:33,080 --> 01:13:38,490 >> E assim, sugestão, tipos e pesquisas foram cobertas muito mais este ano 1425 01:13:38,490 --> 01:13:41,610 do que têm sido nos anos anteriores. 1426 01:13:41,610 --> 01:13:45,100 Vocês deveriam ver que refletido, consequentemente, o quiz. 1427 01:13:45,100 --> 01:13:49,160 Eu definitivamente gastar tempo indo sobre o que todos os diferentes tipos 1428 01:13:49,160 --> 01:13:52,320 são, como busca binária, como o trabalho de busca linear. 1429 01:13:52,320 --> 01:13:54,750 Como talvez pseudocódigo codificar os para fora. 1430 01:13:54,750 --> 01:13:55,950 Quais são os tempos de execução? 1431 01:13:55,950 --> 01:13:59,210 Algo como tempos de execução é muito fácil de copiar para baixo em uma folha de nota, 1432 01:13:59,210 --> 01:13:59,710 certo? 1433 01:13:59,710 --> 01:14:01,420 >> É realmente difícil quando você está no meio do ensaio 1434 01:14:01,420 --> 01:14:02,390 e você tem que descobrir isso. 1435 01:14:02,390 --> 01:14:03,160 Copie-o para baixo. 1436 01:14:03,160 --> 01:14:05,550 Eu garanto que você é vai precisar de saber isso. 1437 01:14:05,550 --> 01:14:06,860 Quais são as vantagens e desvantagens? 1438 01:14:06,860 --> 01:14:10,064 Na pior das hipóteses, os melhores cenários para todos eles, muito conhecer. 1439 01:14:10,064 --> 01:14:10,564 Sim? 1440 01:14:10,564 --> 01:14:12,730 >> AUDIÊNCIA: Não precisamos sabe codificar merge sort? 1441 01:14:12,730 --> 01:14:15,470 Como, precisamos lembre-se o recursiva? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESSOR: Eu duvido muito, apenas porque é como bastante complicada. 1443 01:14:18,950 --> 01:14:22,282 Mas não pode ser impraticável se pedir-lhe para usar pseudocódigo-lo. 1444 01:14:22,282 --> 01:14:22,781 Sim. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Sim, OK, mais uma. 1447 01:14:29,170 --> 01:14:31,387 Isso pode ter vindo acima em você última peça em um pouco. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Sim? 1450 01:14:43,090 --> 01:14:44,930 Será que todo mundo ouviu isso? 1451 01:14:44,930 --> 01:14:48,360 >> OK, então praticamente primeiro tudo, que tipo de programa 1452 01:14:48,360 --> 01:14:51,000 seria dando-lhe uma saída como esta? 1453 01:14:51,000 --> 01:14:54,350 Lembre-pedimos que você aprenda sobre este novo tipo de ferramenta de depuração? 1454 01:14:54,350 --> 01:14:57,340 Qual era o nome dele? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, direita 1456 01:14:59,460 --> 01:15:02,600 >> Era um programa onde você poderia chamar que podia 1457 01:15:02,600 --> 01:15:05,940 manter o controle de toda a memória que você está usando em seu programa e estava acontecendo. 1458 01:15:05,940 --> 01:15:11,090 Então, se você tem alguma coisa, como, definitivamente perdido, 40 bytes em um bloco. 1459 01:15:11,090 --> 01:15:14,870 Provavelmente você não está lembrando-se para libertá-la. 1460 01:15:14,870 --> 01:15:18,710 Porque se você estiver usando bytes de memória, isso significa que você acessou essa memória, 1461 01:15:18,710 --> 01:15:20,240 mas você não foi capaz de libertar. 1462 01:15:20,240 --> 01:15:21,948 Então você quer fazer Certifique-se de que você também é 1463 01:15:21,948 --> 01:15:31,420 usando free-- que é um function-- para libertar todos 1464 01:15:31,420 --> 01:15:34,930 da memória redistribuídos por malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Legal. 1466 01:15:35,500 --> 01:15:37,140 Portanto, este slide, eu vou tê-lo instalado. 1467 01:15:37,140 --> 01:15:41,050 Está em toda parte em uma série de palestras, em muitos slides seção. 1468 01:15:41,050 --> 01:15:44,254 Você realmente quer ter a certeza você só sabe de tudo isso. 1469 01:15:44,254 --> 01:15:47,170 Quer na sua folha de nota ou se você quer memorizá-lo, sinta-se livre para. 1470 01:15:47,170 --> 01:15:48,836 Isso é realmente, realmente, realmente importante. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Também um muito bom pergunta que podemos pedir. 1473 01:15:56,890 --> 01:16:00,320 Por que olhar Seleção sort-- em Seleção sort-- todos os tempos de execução 1474 01:16:00,320 --> 01:16:02,060 são n ao quadrado. 1475 01:16:02,060 --> 01:16:06,714 Independentemente de como a lista trata de você como, então por que é sort-- Seleção 1476 01:16:06,714 --> 01:16:08,630 Eu vou dar a vocês 30 segundo pensar sobre isso. 1477 01:16:08,630 --> 01:16:10,700 Porque é uma espécie de confundir. 1478 01:16:10,700 --> 01:16:12,710 Trata-se de algum pensamento conceitual. 1479 01:16:12,710 --> 01:16:16,470 Por que os tempos de execução seja o mesmo em ambos os piores e os melhores cenários? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Sim? 1482 01:16:30,000 --> 01:16:38,084 >> AUDIÊNCIA: Porque cada espécie Seleção posição ou espaço neste pequeno conjunto 1483 01:16:38,084 --> 01:16:40,350 coisa ou o que quer. 1484 01:16:40,350 --> 01:16:44,430 Assim, mesmo no melhor cenário, mesmo que seja perfeitamente ordenados, 1485 01:16:44,430 --> 01:16:47,380 ele ainda teria que ser como, OK, um. 1486 01:16:47,380 --> 01:16:49,000 No meu primeiro lugar eu tenho um. 1487 01:16:49,000 --> 01:16:50,250 E passar 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ão ele vai novamente e é como, OK, dois 1490 01:16:53,053 --> 01:16:54,594 é a menor de todas as coisas. 1491 01:16:54,594 --> 01:16:56,804 Mas ele ainda tem que verificar todos e cada um. 1492 01:16:56,804 --> 01:16:57,470 PROFESSOR: Yeah. 1493 01:16:57,470 --> 01:17:00,490 Assim, por exemplo, vamos apenas dizer Temos uma lista, já classificado, 1494 01:17:00,490 --> 01:17:03,390 uma matriz de um a cinco. 1495 01:17:03,390 --> 01:17:07,100 A maneira que os tipos de seleção é que ele passa por, ele verifica estes dois. 1496 01:17:07,100 --> 01:17:08,234 Em seguida, ele verifica os dois. 1497 01:17:08,234 --> 01:17:09,650 E, em seguida, ele verifica e verifica. 1498 01:17:09,650 --> 01:17:13,285 Ele mantém a verificação de todos eles, independentemente de haver ou não 1499 01:17:13,285 --> 01:17:14,160 ele é realmente classificada. 1500 01:17:14,160 --> 01:17:16,450 Porque isso é simplesmente a forma como o tipo funciona. 1501 01:17:16,450 --> 01:17:19,530 >> E assim que esta questão é como uma questão conceitual vamos pedir. 1502 01:17:19,530 --> 01:17:21,430 Onde em primeiro lugar, você saber que tipo de Selecção 1503 01:17:21,430 --> 01:17:23,304 é, para a direita, para poder para responder à pergunta. 1504 01:17:23,304 --> 01:17:26,200 Você tem que ser capaz de entender conceitualmente o que está acontecendo. 1505 01:17:26,200 --> 01:17:30,760 E então você pode aplicá-lo e pensar, OK vamos apenas imaginar pior cenário. 1506 01:17:30,760 --> 01:17:32,230 Eles estão todos em ordem decrescente. 1507 01:17:32,230 --> 01:17:33,290 Como isso afetaria isso? 1508 01:17:33,290 --> 01:17:34,650 >> O que se está a ordem ascendente? 1509 01:17:34,650 --> 01:17:35,640 Se ele já está classificado? 1510 01:17:35,640 --> 01:17:37,240 Como isso afetaria os tempos de execução? 1511 01:17:37,240 --> 01:17:40,270 E, em seguida, tipo Seleção, você notará que na verdade não importa. 1512 01:17:40,270 --> 01:17:43,500 Porque você está verificando toda a valores, independentemente do que está acontecendo. 1513 01:17:43,500 --> 01:17:45,810 >> E assim as coisas boas para se lembrar. 1514 01:17:45,810 --> 01:17:50,290 Porque alguns tipos diferem de outros e qual a melhor e os piores cenários 1515 01:17:50,290 --> 01:17:52,740 afetaria todos eles. 1516 01:17:52,740 --> 01:17:56,700 >> Eu estou indo para realmente bater em tipos porque isso vai estar no quiz. 1517 01:17:56,700 --> 01:17:57,199 Sim. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 ESTÁ BEM. 1520 01:18:01,320 --> 01:18:05,590 Há seis minutos do fim. 1521 01:18:05,590 --> 01:18:09,880 Eu posso tomar três minutos de perguntas. 1522 01:18:09,880 --> 01:18:12,290 Eu também pode pendurar em torno de como 20 minutos após secção 1523 01:18:12,290 --> 01:18:13,850 se você quiser fazer perguntas também. 1524 01:18:13,850 --> 01:18:16,330 Alguém só tem realmente breve dúvidas ou questões conceituais 1525 01:18:16,330 --> 01:18:17,360 eles são pouco claras sobre a direita agora? 1526 01:18:17,360 --> 01:18:17,832 Sim? 1527 01:18:17,832 --> 01:18:19,720 >> AUDIÊNCIA: Você pode falar um pouco pouco sobre os operadores bit a bit? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESSOR: Yeah. 1529 01:18:20,280 --> 01:18:22,446 Assim, os operadores bit a bit são algo que você provavelmente 1530 01:18:22,446 --> 01:18:24,170 pode apenas querer colocar na sua folha. 1531 01:18:24,170 --> 01:18:27,540 Então quickly-- Eu não quero para ir muito a fundo 1532 01:18:27,540 --> 01:18:31,164 porque Harvard, em sua revisão sessão, cobriu-o muito bem. 1533 01:18:31,164 --> 01:18:33,080 Operador bit a bit, há cinco deles, certo? 1534 01:18:33,080 --> 01:18:41,370 >> Não é isso, que é x ou função, há 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ão você tem os dois diferentes tipos de turnos. 1537 01:18:46,790 --> 01:18:50,610 >> Se eu lhe dou dois valores, se Eu dou-lhe, como, um e um. 1538 01:18:50,610 --> 01:18:52,390 O que teria que ser avaliada como? 1539 01:18:52,390 --> 01:18:55,490 Se eu lhe der certo e verdadeiro, verdade? 1540 01:18:55,490 --> 01:18:56,930 E quanto verdadeiro ou falso? 1541 01:18:56,930 --> 01:18:57,830 Ainda verdade, certo? 1542 01:18:57,830 --> 01:18:59,762 Porque há um ou. 1543 01:18:59,762 --> 01:19:01,220 Nós provavelmente vai lhe dar números. 1544 01:19:01,220 --> 01:19:03,780 Então lembre-se, um é igual a verdade, o zero é igual a false. 1545 01:19:03,780 --> 01:19:07,407 E nós pode dar-lhe estas coisas e pedir-lhe para nos dizer o que acontece. 1546 01:19:07,407 --> 01:19:10,240 Harvard cobre dentro do primeiro 10 minutos de sua sessão de estudo 1547 01:19:10,240 --> 01:19:11,230 muito, muito bem. 1548 01:19:11,230 --> 01:19:14,260 Então vocês querem fazer se você olhar para trás sobre isso. 1549 01:19:14,260 --> 01:19:16,387 >> AUDIÊNCIA: É pisa5 vai ser no teste? 1550 01:19:16,387 --> 01:19:16,970 PROFESSOR: Não. 1551 01:19:16,970 --> 01:19:18,240 Nem sequer olhar para pisa5 agora. 1552 01:19:18,240 --> 01:19:18,810 É difícil. 1553 01:19:18,810 --> 01:19:22,830 Apenas não se incomodam mesmo olhando para pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> No entanto, como algumas dicas e sugestões, I 1555 01:19:25,665 --> 01:19:28,320 gostaria de sugerir que você comece pisa5 assim que o questionário é longo. 1556 01:19:28,320 --> 01:19:30,319 Este será o mais difícil semana, mas depois vocês 1557 01:19:30,319 --> 01:19:34,590 será passado que nas colinas de verde e filhotes rolando, 1558 01:19:34,590 --> 01:19:36,115 e está tudo bem. 1559 01:19:36,115 --> 01:19:39,810 >> Esta classe recebe significativa mais fácil após o quinto pset. 1560 01:19:39,810 --> 01:19:41,560 Horário de atendimento: AUDIÊNCIA são domingo, segunda-feira? 1561 01:19:41,560 --> 01:19:44,260 PROFESSOR: Sim, então o horário de expediente será o domingo para segunda-feira para o pset. 1562 01:19:44,260 --> 01:19:47,009 O horário de expediente hoje à noite, essencialmente, só vai ser crítica para o quiz. 1563 01:19:47,009 --> 01:19:50,350 Se alguém quer vir e perguntar o TAs uma pergunta, nós vamos estar lá. 1564 01:19:50,350 --> 01:19:53,220 >> Vou levar talvez mais uma pergunta se alguém tem uma pergunta? 1565 01:19:53,220 --> 01:19:53,809 Sim? 1566 01:19:53,809 --> 01:19:55,850 AUDIÊNCIA: Quando você está nós que definem, [inaudível] 1567 01:19:55,850 --> 01:20:00,700 se você disser estrela nó e, em seguida, ao lado, faz o computador automaticamente 1568 01:20:00,700 --> 01:20:03,610 entender que você é referindo-se a um outro ponteiro? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSOR: Não. 1570 01:20:04,580 --> 01:20:06,710 >> AUDIÊNCIA: Você tem que relink isso [inaudível]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESSOR: Então, basicamente, o struct de um nó é, recorde, 1572 01:20:09,270 --> 01:20:12,620 é como se você criar o nó e então você tem um ponteiro chamado seguinte. 1573 01:20:12,620 --> 01:20:14,630 Tudo o que você está fazendo é tendo a estrutura lá. 1574 01:20:14,630 --> 01:20:16,387 Você tem que atribuir esse ponteiro em algum lugar. 1575 01:20:16,387 --> 01:20:18,470 Assim, os computadores não faz sabe o que está fazendo ainda. 1576 01:20:18,470 --> 01:20:20,250 Você realmente tem que atribuí-lo quando você está criando sua lista ligada. 1577 01:20:20,250 --> 01:20:22,170 E é isso que principalmente pset 5 será ligado. 1578 01:20:22,170 --> 01:20:24,106 Assim, não se preocupa com nada disso agora. 1579 01:20:24,106 --> 01:20:26,380 >> AUDIÊNCIA: Então nós não precisamos concentrar demais na lista de link, apenas 1580 01:20:26,380 --> 01:20:27,440 a concepção geral? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESSOR: Apenas praticamente pilhas, filas, listas de links, árvores, tabelas de hash. 1582 01:20:30,980 --> 01:20:33,639 Basta ser capaz de saber o que são. 1583 01:20:33,639 --> 01:20:35,680 Nós não vamos pedir você gosta de alguma coisa específica 1584 01:20:35,680 --> 01:20:39,300 porque nós realmente não tenho feito um pset que o cobre nada disso ainda. 1585 01:20:39,300 --> 01:20:45,540 >> Assim, nos últimos dois minutos antes Eu defini-lo livre para matar este quiz. 1586 01:20:45,540 --> 01:20:49,370 Muito bonito, como, pense sobre como agora vocês vieram nesta classe. 1587 01:20:49,370 --> 01:20:52,820 >> Eu me lembro quando duas semanas desta classe, alguns de vocês 1588 01:20:52,820 --> 01:20:55,720 passar três horas de água escrever. 1589 01:20:55,720 --> 01:20:57,970 Quanto tempo demoraria as pessoas a escreverem água agora? 1590 01:20:57,970 --> 01:20:59,670 30 segundos, talvez? 1591 01:20:59,670 --> 01:21:01,810 Pense em quanto vocês aprenderam. 1592 01:21:01,810 --> 01:21:04,320 CS é um assunto muito, muito difícil. 1593 01:21:04,320 --> 01:21:06,190 Não há dúvida de que. 1594 01:21:06,190 --> 01:21:09,160 É difícil, é por isso que ninguém estuda. 1595 01:21:09,160 --> 01:21:10,730 É muito difícil. 1596 01:21:10,730 --> 01:21:11,650 E é totalmente bom. 1597 01:21:11,650 --> 01:21:14,150 >> E eu estou realmente orgulhoso que todo mundo já fez isso até agora. 1598 01:21:14,150 --> 01:21:16,380 Série de Exercícios não são fáceis. 1599 01:21:16,380 --> 01:21:17,790 Eles levam um monte de tempo. 1600 01:21:17,790 --> 01:21:22,580 Vocês, eu nunca vou pedir-lhe para escrever o jogo de 15 ou Vigenere no pset. 1601 01:21:22,580 --> 01:21:24,160 Não há necessidade de apenas pirar com isso. 1602 01:21:24,160 --> 01:21:28,080 Tudo o que estamos testando aqui é avaliar seu conhecimento conceitual, bem 1603 01:21:28,080 --> 01:21:31,524 como algumas de suas habilidades básicas de codificação. 1604 01:21:31,524 --> 01:21:33,440 O ensaio é concebido para ser realmente desafiadora. 1605 01:21:33,440 --> 01:21:36,180 Como, ele é projetado para você não ficar 100. 1606 01:21:36,180 --> 01:21:39,880 Ele também é projetado para você, provavelmente, não ser capaz de terminar em 75 minutos. 1607 01:21:39,880 --> 01:21:41,995 E isso é totalmente bom. 1608 01:21:41,995 --> 01:21:42,870 Eu sou um estudante de mim mesmo. 1609 01:21:42,870 --> 01:21:45,960 Eu sei, eu odeio quando eu ando fora de um quiz ser como, merda. 1610 01:21:45,960 --> 01:21:47,044 Isso foi realmente difícil. 1611 01:21:47,044 --> 01:21:49,460 Provavelmente, o que vai happen-- e isso é totalmente bom, 1612 01:21:49,460 --> 01:21:50,751 Eu estou dizendo a vocês agora. 1613 01:21:50,751 --> 01:21:53,190 Os meios sobre essas coisas não são elevados em todos os. 1614 01:21:53,190 --> 01:21:55,360 >> E para aqueles de vocês que foram ficando, como, 1615 01:21:55,360 --> 01:21:57,870 trios em seus conjuntos de problemas, isso não significa que você é 1616 01:21:57,870 --> 01:21:59,536 indo para obter um 60 por cento nesta classe. 1617 01:21:59,536 --> 01:22:01,440 Se você receber 60% no questionário, que não faz 1618 01:22:01,440 --> 01:22:03,330 Quer dizer que você vai obter uma D nesta classe. 1619 01:22:03,330 --> 01:22:05,740 Vemos, especialmente I, para aqueles de vocês na minha seção, 1620 01:22:05,740 --> 01:22:07,406 Eu vejo o quão duro vocês estão todos trabalhando. 1621 01:22:07,406 --> 01:22:09,190 E eu manter o controle do que isso. 1622 01:22:09,190 --> 01:22:11,420 >> Vocês vão ficar bem. 1623 01:22:11,420 --> 01:22:14,580 Não há nenhuma memória institucional felicidade no final do semestre. 1624 01:22:14,580 --> 01:22:16,840 Porque todas as crianças de Harvard estão dizendo seus amigos, oh, você vai ficar bem. 1625 01:22:16,840 --> 01:22:18,381 Ninguém está dizendo a vocês que aqui. 1626 01:22:18,381 --> 01:22:20,950 Então eu tenho que dizer a vocês que aqui. 1627 01:22:20,950 --> 01:22:22,280 >> Vocês vão ficar bem. 1628 01:22:22,280 --> 01:22:24,080 Estou tão orgulhosa de todos vocês. 1629 01:22:24,080 --> 01:22:25,680 O teste vai ser difícil. 1630 01:22:25,680 --> 01:22:28,140 Estude para ele, e depois apenas jogá-lo fora. 1631 01:22:28,140 --> 01:22:31,280 Prepare-se para aprender coisas novas. 1632 01:22:31,280 --> 01:22:33,990 E comer doces. 1633 01:22:33,990 --> 01:22:35,940 Temos têm lotes de doces. 1634 01:22:35,940 --> 01:22:37,760 >> Tenha uma boa noite de sono. 1635 01:22:37,760 --> 01:22:40,420 Não não dormir, porque isso seria muito ruim. 1636 01:22:40,420 --> 01:22:41,490 CS é um monte de lógica. 1637 01:22:41,490 --> 01:22:44,960 Se você não dorme, você não pode funcionar, e seu cérebro não pode funcionar. 1638 01:22:44,960 --> 01:22:48,780 E eu vou estar aqui para o próximo 20 minutos se alguém quiser ficar em volta. 1639 01:22:48,780 --> 01:22:51,150 Vocês estão indo para matá-lo. 1640 01:22:51,150 --> 01:22:53,000 Boa sorte. 1641 01:22:53,000 --> 01:22:55,663