1 00:00:00,000 --> 00:00:11,050 2 00:00:11,050 --> 00:00:13,351 >> ROB BOWDEN: Esta é a seção mais confortável, 3 00:00:13,351 --> 00:00:16,309 mas isso não quer dizer que se você sentir que não está mais confortável 4 00:00:16,309 --> 00:00:18,420 você não vai aprender as coisas aqui. 5 00:00:18,420 --> 00:00:20,600 Então, vamos começar. 6 00:00:20,600 --> 00:00:22,819 Você tem lâminas indo bem nas coisas. 7 00:00:22,819 --> 00:00:24,360 Eu estou a ponto de só ter agora? 8 00:00:24,360 --> 00:00:25,680 9 00:00:25,680 --> 00:00:26,450 Mudar laptops. 10 00:00:26,450 --> 00:00:30,470 11 00:00:30,470 --> 00:00:32,950 >> ALLISON: Você não quer apresentar-se, Rob? 12 00:00:32,950 --> 00:00:34,090 >> ROB BOWDEN: Ah, eu sou Rob. 13 00:00:34,090 --> 00:00:35,182 14 00:00:35,182 --> 00:00:37,470 Este é o meu quinto ano CS50 TF-ing. 15 00:00:37,470 --> 00:00:38,760 16 00:00:38,760 --> 00:00:39,650 >> GABRIEL: Eu sou Gabriel. 17 00:00:39,650 --> 00:00:41,610 Eu sou cabeça TF de CS50. 18 00:00:41,610 --> 00:00:44,009 Eu estava TF no ano passado e este ano. 19 00:00:44,009 --> 00:00:46,675 ALLISON: E eu sou Alison, e isso é o meu segundo ano CS50 TF-ing. 20 00:00:46,675 --> 00:00:48,510 21 00:00:48,510 --> 00:00:50,825 >> ROB BOWDEN: Tudo bem, então essa coisa do lado esquerdo, 22 00:00:50,825 --> 00:00:52,250 espero que você tenha visto antes. 23 00:00:52,250 --> 00:00:54,112 Se não, porque você transferi-lo para si mesmo, 24 00:00:54,112 --> 00:00:55,570 você deve ter visto em aula. 25 00:00:55,570 --> 00:00:56,590 26 00:00:56,590 --> 00:01:01,320 Portanto, este é o aparelho CS50, e ele fez um pouco de uma descrição do mesmo 27 00:01:01,320 --> 00:01:01,880 na palestra. 28 00:01:01,880 --> 00:01:06,890 Mas, basicamente, é só você está executando uma operação 29 00:01:06,890 --> 00:01:10,550 sistema dentro do seu funcionamento sistema, para que possamos dar-lhe 30 00:01:10,550 --> 00:01:12,540 programas sem a necessidade de se preocupar, oh é isso 31 00:01:12,540 --> 00:01:15,989 vai funcionar no Windows e Mac, ou se alguns de vocês 32 00:01:15,989 --> 00:01:17,280 já estão usando Linux, Linux. 33 00:01:17,280 --> 00:01:18,532 34 00:01:18,532 --> 00:01:20,240 É só deveria ser um jogo comum 35 00:01:20,240 --> 00:01:23,010 campo para que todos tenham a mesmo ambiente exato. 36 00:01:23,010 --> 00:01:25,344 >> Então, se você não tem baixado isso já, 37 00:01:25,344 --> 00:01:28,510 você deve baixá-lo, porque você é vai precisar dele para o conjunto de problemas. 38 00:01:28,510 --> 00:01:32,335 E é um dois gigabytes baixar, por isso pode levar algum tempo. 39 00:01:32,335 --> 00:01:33,780 Na Harvard ele vai rápido. 40 00:01:33,780 --> 00:01:35,870 41 00:01:35,870 --> 00:01:37,440 Aparelho para CS50. 42 00:01:37,440 --> 00:01:41,980 >> Agora, no início, vamos falar sobre apenas um monte de linha de comando 43 00:01:41,980 --> 00:01:46,880 material, e assim por isso, quero dizer trabalhar neste pequeno ambiente por aqui. 44 00:01:46,880 --> 00:01:53,230 E observe todas as coisas Eu digo aqui e agora 45 00:01:53,230 --> 00:01:56,900 estão indo para o trabalho, se você estiver dentro de um terminal dentro do aparelho, 46 00:01:56,900 --> 00:02:00,790 ou se você estiver dentro de janela do terminal gedit 47 00:02:00,790 --> 00:02:02,090 no interior do aparelho. 48 00:02:02,090 --> 00:02:03,770 Então, esses ambientes são idênticos. 49 00:02:03,770 --> 00:02:04,940 50 00:02:04,940 --> 00:02:07,270 >> Mas eu estou indo para ir uma terceira via. 51 00:02:07,270 --> 00:02:12,200 E note-se aqui esta pouco endereço IP aqui. 52 00:02:12,200 --> 00:02:15,940 Então você não tem que fazer isso, mas este IP 53 00:02:15,940 --> 00:02:19,700 address-- agora se I-- exceto ele é bloqueado por essa coisa. 54 00:02:19,700 --> 00:02:22,790 55 00:02:22,790 --> 00:02:27,000 OK, para que o endereço IP mais em um terminal 56 00:02:27,000 --> 00:02:31,090 aqui-- assim este terminal mais aqui é um terminal no meu Mac. 57 00:02:31,090 --> 00:02:34,540 Portanto, este não é de forma atualmente associado com o aparelho em tudo. 58 00:02:34,540 --> 00:02:39,360 E se você estiver no Windows, então você está indo a necessidade de baixar alguma coisa 59 00:02:39,360 --> 00:02:44,430 especificamente para isso, em especial as pessoas tendem usar Putty, P-U-T-T-Y. 60 00:02:44,430 --> 00:02:50,700 >> Então o que eu vou fazer é tipo SSH e, em seguida, que o endereço IP. 61 00:02:50,700 --> 00:02:54,030 Bem, jharvard nesse endereço IP. 62 00:02:54,030 --> 00:03:00,150 Então 192.168.24.220. 63 00:03:00,150 --> 00:03:02,127 Esta mensagem assustador, ignorá-lo. 64 00:03:02,127 --> 00:03:02,710 Basta digitar sim. 65 00:03:02,710 --> 00:03:04,550 66 00:03:04,550 --> 00:03:06,030 Este é uma caixa em CS50. 67 00:03:06,030 --> 00:03:07,460 Ele pede sua senha. 68 00:03:07,460 --> 00:03:11,910 >> E assim, em muitos desses contextos onde ele pede a senha, [inaudível]. 69 00:03:11,910 --> 00:03:15,670 Nós temos um monte de perguntas onde ele diz que não é realmente a digitação. 70 00:03:15,670 --> 00:03:20,011 Ele não mostra os personagens de a senha enquanto você digita, se alguma coisa, 71 00:03:20,011 --> 00:03:23,010 para um recurso de segurança, porque se alguém está olhando por cima do ombro 72 00:03:23,010 --> 00:03:25,870 e eles vêem star star star star, então eles 73 00:03:25,870 --> 00:03:28,640 saber que sua senha é de quatro caracteres. 74 00:03:28,640 --> 00:03:32,660 Assim, a idéia é que vai pedir sua senha, tipo. 75 00:03:32,660 --> 00:03:34,490 Ele não vai mostrar os personagens, 76 00:03:34,490 --> 00:03:36,090 mas é, na verdade, aceitá-los. 77 00:03:36,090 --> 00:03:39,210 Neste caso, a qualquer momento você nunca ver um prompt de senha 78 00:03:39,210 --> 00:03:42,280 lidar com o aparelho, o senha vai ser vermelho. 79 00:03:42,280 --> 00:03:43,270 Tão carmesim. 80 00:03:43,270 --> 00:03:44,730 81 00:03:44,730 --> 00:03:50,550 >> E agora aqui dentro deste janela que está no meu Mac, 82 00:03:50,550 --> 00:03:54,120 Estou basicamente ter a mesma visão exata 83 00:03:54,120 --> 00:03:57,040 como no interior de um terminal no aparelho. 84 00:03:57,040 --> 00:03:58,470 Então você não tem que fazer isso. 85 00:03:58,470 --> 00:04:01,300 Você pode fazer tudo o que você quer no interior do aparelho. 86 00:04:01,300 --> 00:04:05,140 Eu quase nunca realmente fazer nada no aparelho. 87 00:04:05,140 --> 00:04:09,440 Eu quase sempre minimizar isso e agora Estou SSH trabalhando no aparelho. 88 00:04:09,440 --> 00:04:11,480 89 00:04:11,480 --> 00:04:14,180 >> Se qualquer coisa, se você tem um computador mais lento, 90 00:04:14,180 --> 00:04:15,820 você pode notar a diferença. 91 00:04:15,820 --> 00:04:18,839 Eu faço isso porque eu prefiro esta janela de terminal. 92 00:04:18,839 --> 00:04:20,881 Ele tem algumas características como Eu posso dividir a janela, 93 00:04:20,881 --> 00:04:22,672 e agora posso SSH em através do aparelho. 94 00:04:22,672 --> 00:04:24,105 Eu tenho dois SSH está acontecendo ao mesmo tempo. 95 00:04:24,105 --> 00:04:28,030 96 00:04:28,030 --> 00:04:32,250 Se o seu computador é particularmente lento e você está trabalhando no aparelho, 97 00:04:32,250 --> 00:04:35,200 e você percebe isso é realmente vagaroso, que seja. 98 00:04:35,200 --> 00:04:38,220 Tende a ser muito mais rápido se você é SSH-ed em. 99 00:04:38,220 --> 00:04:40,960 Mas caso contrário, você pode trabalhar de qualquer maneira. 100 00:04:40,960 --> 00:04:42,388 >> AUDIÊNCIA: O que SSH significa? 101 00:04:42,388 --> 00:04:43,820 102 00:04:43,820 --> 00:04:47,479 >> ROB BOWDEN: conchas seguros, algo parecido? 103 00:04:47,479 --> 00:04:48,270 O que SSH significa? 104 00:04:48,270 --> 00:04:54,214 105 00:04:54,214 --> 00:04:55,130 GABRIEL: shell seguro. 106 00:04:55,130 --> 00:04:56,463 ALLISON: É apenas shell seguro. 107 00:04:56,463 --> 00:04:57,720 ROB BOWDEN: shell seguro. 108 00:04:57,720 --> 00:05:03,700 É um protocolo que é você-- um protocolo seguro, de forma encriptada. 109 00:05:03,700 --> 00:05:06,850 As pessoas não podem bisbilhotar a rede e ver o que você está dizendo a nada 110 00:05:06,850 --> 00:05:08,120 você está SSH-ed para. 111 00:05:08,120 --> 00:05:12,900 E, de fato, no antigo dias de CS50, por isso, em 2009 112 00:05:12,900 --> 00:05:19,300 quando eu era um calouro, a maneira que que trabalhou na série de exercícios CS50, 113 00:05:19,300 --> 00:05:22,490 Foi você SSH-ed para algum servidor que deu-lhe acesso a, 114 00:05:22,490 --> 00:05:23,497 e em que trabalhou lá. 115 00:05:23,497 --> 00:05:25,330 Então você não tem esse aparelho gráfica. 116 00:05:25,330 --> 00:05:26,160 Você não tem gedit. 117 00:05:26,160 --> 00:05:28,930 Você não tem todas essas coisas que você pode visualmente apontar e clicar. 118 00:05:28,930 --> 00:05:30,346 Você teve que trabalhar nesta interface. 119 00:05:30,346 --> 00:05:31,580 120 00:05:31,580 --> 00:05:33,716 Prefiro trabalhar nesta interface. 121 00:05:33,716 --> 00:05:36,090 Então, parte do que vamos estar indo para mais agora 122 00:05:36,090 --> 00:05:39,560 são um bando de comandos que você deve 123 00:05:39,560 --> 00:05:42,095 começar a se familiarizar com como você vai ao longo do curso. 124 00:05:42,095 --> 00:05:43,190 125 00:05:43,190 --> 00:05:45,790 E honestamente, uma vez que você se acostumar com eles, 126 00:05:45,790 --> 00:05:48,220 é muito mais rápido para trabalhar neste ambiente 127 00:05:48,220 --> 00:05:53,690 do que é trabalhar com finder, arrastando e clicando as coisas. 128 00:05:53,690 --> 00:05:55,340 129 00:05:55,340 --> 00:05:57,210 >> Então, aqui estamos nós. 130 00:05:57,210 --> 00:06:01,779 Agora eu só SSH-ed, e assim o padrão localização-- você 131 00:06:01,779 --> 00:06:04,820 vi alguns desses comandos na classe, mas vamos passar por cima de todos eles novamente. 132 00:06:04,820 --> 00:06:08,060 O local padrão que estamos em é o diretório home. 133 00:06:08,060 --> 00:06:11,520 E diretório, apenas outra palavra para pasta. 134 00:06:11,520 --> 00:06:13,310 Então, nós estamos no diretório home. 135 00:06:13,310 --> 00:06:15,889 Digite ls, listar os arquivos neste diretório. 136 00:06:15,889 --> 00:06:17,430 Evidentemente, eu criei um blah.c anteriormente. 137 00:06:17,430 --> 00:06:19,120 138 00:06:19,120 --> 00:06:20,472 Portanto, temos um diretório desktop. 139 00:06:20,472 --> 00:06:21,930 Você percebe o destaque de sintaxe? 140 00:06:21,930 --> 00:06:27,400 141 00:06:27,400 --> 00:06:32,900 A luz azul indica destaque um diretório e do branco em linha reta 142 00:06:32,900 --> 00:06:34,380 indica apenas um arquivo simples. 143 00:06:34,380 --> 00:06:35,410 144 00:06:35,410 --> 00:06:37,690 Portanto, não vão ser algumas outras cores que você vê. 145 00:06:37,690 --> 00:06:41,240 Um arquivo executável é provavelmente vai ser verde ou algo parecido. 146 00:06:41,240 --> 00:06:44,820 OK, então estamos no diretório home. 147 00:06:44,820 --> 00:06:48,970 >> Agora, se eu quero ir para um diferente diretório, cd é o comando que eu quero. 148 00:06:48,970 --> 00:06:52,720 Então, altere o diretório, e então você passar o nome do diretório 149 00:06:52,720 --> 00:06:54,020 que você quer entrar. 150 00:06:54,020 --> 00:06:55,780 Portanto, temos aqui quatro opções. 151 00:06:55,780 --> 00:07:03,397 Eu posso entrar em transferências, e agora vemos aqui ele atualizou este parêntesis 152 00:07:03,397 --> 00:07:04,480 que dizer que estou em ~ / downloads. 153 00:07:04,480 --> 00:07:05,620 154 00:07:05,620 --> 00:07:06,800 >> Então, qual é til? 155 00:07:06,800 --> 00:07:10,640 É uma abreviação para seu diretório home. 156 00:07:10,640 --> 00:07:15,260 Assim, quase tudo que você faz vai seja com relação ao seu diretório home, 157 00:07:15,260 --> 00:07:20,620 e pwd é apenas um comando Eu uso uma vez em um ano que 158 00:07:20,620 --> 00:07:22,420 apenas imprime o diretório atual. 159 00:07:22,420 --> 00:07:25,730 E assim que você vê aqui que ~ / Downloads realmente resolve 160 00:07:25,730 --> 00:07:26,896 para / home / jharvard / downloads. 161 00:07:26,896 --> 00:07:29,320 162 00:07:29,320 --> 00:07:32,230 Então / home / jharvard é o meu diretório home. 163 00:07:32,230 --> 00:07:33,700 164 00:07:33,700 --> 00:07:39,400 >> Assim, podemos cd dot dot. 165 00:07:39,400 --> 00:07:47,800 Agora dot dot é um diretório especial que sempre se refere a um diretório para cima. 166 00:07:47,800 --> 00:07:51,730 Então, se eu estou em ~ / downloads, então cd dot dot vai me trazer para til. 167 00:07:51,730 --> 00:07:52,950 168 00:07:52,950 --> 00:07:55,490 O que pensamos cd dot dot vai me trazer para agora? 169 00:07:55,490 --> 00:07:58,740 170 00:07:58,740 --> 00:08:00,570 Ele vai me trazer para / home. 171 00:08:00,570 --> 00:08:04,450 Então til por diretório de trabalho de impressão, Estou na empresa / home / jharvard. 172 00:08:04,450 --> 00:08:06,060 173 00:08:06,060 --> 00:08:08,820 um diretório a partir disso, Agora diz aqui / home. 174 00:08:08,820 --> 00:08:12,330 175 00:08:12,330 --> 00:08:17,180 >> Agora cd dot dot. 176 00:08:17,180 --> 00:08:20,910 Agora estou no diretório raiz, e você não pode fazê-lo novamente. 177 00:08:20,910 --> 00:08:23,340 Você só vai ficar no diretório raiz para sempre. 178 00:08:23,340 --> 00:08:26,700 O diretório raiz tem um monte de coisas que, se você quiser olhar para, 179 00:08:26,700 --> 00:08:27,410 você pode. 180 00:08:27,410 --> 00:08:29,700 Por exemplo, se eu for em bin, que contenha 181 00:08:29,700 --> 00:08:35,789 todos estes binários, como ls, e cd, e todas essas coisas. 182 00:08:35,789 --> 00:08:38,630 Então, esses comandos precisam existe algum ponto do sistema, 183 00:08:38,630 --> 00:08:40,820 e é no diretório / bin. 184 00:08:40,820 --> 00:08:44,530 Mas quase tudo que você faz é vai ser a partir de seu diretório home. 185 00:08:44,530 --> 00:08:49,490 E cd sem nenhum argumento que seja, você poderia dizer cd ~, não precisa. 186 00:08:49,490 --> 00:08:51,810 cd vai trazer-lhe de volta para seu diretório home. 187 00:08:51,810 --> 00:08:53,170 188 00:08:53,170 --> 00:08:54,230 >> Um último. 189 00:08:54,230 --> 00:09:00,200 cd - vai trazer você de volta para o último diretório que você estava. 190 00:09:00,200 --> 00:09:04,080 Então, eu só cd'd duas vezes seguidas, por isso a minha último diretório foi o diretório home. 191 00:09:04,080 --> 00:09:11,520 Se eu for para cortar bin, e agora vamos lá para cima e para usuário. 192 00:09:11,520 --> 00:09:12,550 193 00:09:12,550 --> 00:09:13,280 Participação do usuário. 194 00:09:13,280 --> 00:09:14,840 195 00:09:14,840 --> 00:09:15,940 Vamos para a participação do usuário. 196 00:09:15,940 --> 00:09:17,140 Agora eu estou agora em partes usuário. 197 00:09:17,140 --> 00:09:19,320 cd -, de volta bin. 198 00:09:19,320 --> 00:09:22,980 Então isso fica particularmente útil quando você have-- e ele vai alternar. 199 00:09:22,980 --> 00:09:25,660 Então partilha de utilizador, de volta bin, bin partes. 200 00:09:25,660 --> 00:09:27,250 >> Então isso fica útil. 201 00:09:27,250 --> 00:09:33,150 Você pode encontrar-se ter muitos, muitos, muitos diretórios aninhados. 202 00:09:33,150 --> 00:09:37,370 E você quer fazer algo real rápido em um diretório superior. 203 00:09:37,370 --> 00:09:40,330 Você vai para aquele diretório, fazer mudanças e coisas assim, 204 00:09:40,330 --> 00:09:42,400 e agora você quer ir de volta para onde você estava. 205 00:09:42,400 --> 00:09:43,660 cd -. 206 00:09:43,660 --> 00:09:47,320 Estou sempre frustrado quando acontecer de eu ir 207 00:09:47,320 --> 00:09:49,630 para esse diretório I queria fazer um trabalho em. 208 00:09:49,630 --> 00:09:52,670 Eu sempre ficar frustrado quando eu fiz -la em dois passos em vez de um passo, 209 00:09:52,670 --> 00:09:55,715 porque isso significa que cd - vai para pôr em que a localização intermédia 210 00:09:55,715 --> 00:09:57,010 em vez de onde eu quero ir. 211 00:09:57,010 --> 00:09:59,350 212 00:09:59,350 --> 00:10:01,450 >> Assim, vemos todos os arquivos da lista. 213 00:10:01,450 --> 00:10:03,300 Sabemos como se locomover até o momento. 214 00:10:03,300 --> 00:10:09,900 Então, agora vamos falar sobre a edição de arquivos. 215 00:10:09,900 --> 00:10:18,790 Portanto, neste curso, você está quase sempre devem usar gedit. 216 00:10:18,790 --> 00:10:24,410 Se você quiser, você pode dar o próximo passo e começar a aprender um texto de linha de comando 217 00:10:24,410 --> 00:10:25,240 editor. 218 00:10:25,240 --> 00:10:27,560 Então, existem várias opções. 219 00:10:27,560 --> 00:10:31,760 >> E os que são, provavelmente, vai ser relevante para você, 220 00:10:31,760 --> 00:10:35,340 temos Nano, Vim e Emacs. 221 00:10:35,340 --> 00:10:40,196 Então Nano é os novatos linha de comando editor de texto. 222 00:10:40,196 --> 00:10:42,985 Então Nano vamos em frente blah.c eu criei anteriormente. 223 00:10:42,985 --> 00:10:44,030 224 00:10:44,030 --> 00:10:46,480 É apenas este arquivo C standard. 225 00:10:46,480 --> 00:10:51,540 E você vê um monte de coisas acontecendo na parte inferior do ecrã, 226 00:10:51,540 --> 00:10:54,100 e, aparentemente, blah.c contém este código C. 227 00:10:54,100 --> 00:10:55,420 228 00:10:55,420 --> 00:11:00,330 >> Portanto, neste editor particular, o que ele está dizendo na bottom-- 229 00:11:00,330 --> 00:11:06,290 agora este símbolo de acento circunflexo, vemos isso ^ G, ^ X, ^ O. 230 00:11:06,290 --> 00:11:10,310 Assim que, em quase todos contexto que você vê, 231 00:11:10,310 --> 00:11:13,530 você pode ver que símbolo de acento circunflexo em outros lugares on-line, no Stack Overflow, 232 00:11:13,530 --> 00:11:14,450 algo parecido. 233 00:11:14,450 --> 00:11:16,970 Isso quase sempre se refere ao controle. 234 00:11:16,970 --> 00:11:21,590 Então, para sair eu quero fazer Controle X. Controle X, sai. 235 00:11:21,590 --> 00:11:22,750 236 00:11:22,750 --> 00:11:26,855 E eu posso usar minha flecha teclas para se mover. 237 00:11:26,855 --> 00:11:28,010 238 00:11:28,010 --> 00:11:31,015 Repare que eu não posso apontar e clicar prontamente. 239 00:11:31,015 --> 00:11:33,000 240 00:11:33,000 --> 00:11:35,010 Você precisa usar sua flecha teclas para se mover. 241 00:11:35,010 --> 00:11:36,950 Pode haver uma definição para apontar e clicar. 242 00:11:36,950 --> 00:11:40,000 >> Mas vamos fazer algumas mudanças. 243 00:11:40,000 --> 00:11:42,100 Agora controle X para ir sair. 244 00:11:42,100 --> 00:11:44,120 Ele vai dizer salvar tampão modificado. 245 00:11:44,120 --> 00:11:47,900 Agora o prompt, y para sim, N para não. 246 00:11:47,900 --> 00:11:49,900 Controle C para cancelar. 247 00:11:49,900 --> 00:11:50,780 Eu só vou dizer que sim. 248 00:11:50,780 --> 00:11:51,709 Nome para gravar o arquivo. 249 00:11:51,709 --> 00:11:53,500 O padrão é o arquivo que já é. 250 00:11:53,500 --> 00:11:54,230 Pressione Enter. 251 00:11:54,230 --> 00:11:54,740 Está bem. 252 00:11:54,740 --> 00:11:58,580 Agora eu só editado o arquivo, salva-lo, e ele é alterado. 253 00:11:58,580 --> 00:11:59,770 254 00:11:59,770 --> 00:12:03,000 >> Então Nano é o mais fácil editor de texto se acostumar. 255 00:12:03,000 --> 00:12:05,520 As alternativas são Vim e Emacs. 256 00:12:05,520 --> 00:12:11,250 Esses são os editores de texto de nível superior que tem uma curva de aprendizado muito íngreme. 257 00:12:11,250 --> 00:12:13,740 Assim, a minha preferência pessoal é Vim. 258 00:12:13,740 --> 00:12:17,175 E tem uma grande variedade de opções. 259 00:12:17,175 --> 00:12:18,210 260 00:12:18,210 --> 00:12:24,070 E uma vez que você se acostumar para isso, você nunca 261 00:12:24,070 --> 00:12:26,900 quer ir para qualquer outro editor de texto, porque você só 262 00:12:26,900 --> 00:12:29,590 tem tantas coisas disponível para você nestes, 263 00:12:29,590 --> 00:12:31,690 mas é preciso realmente muito tempo para aprender. 264 00:12:31,690 --> 00:12:36,000 Então, talvez você apenas quer forçar si mesmo agora para se acostumar com isso, 265 00:12:36,000 --> 00:12:38,130 mas eu diria que vale a pena. 266 00:12:38,130 --> 00:12:39,660 Mas é difícil. 267 00:12:39,660 --> 00:12:41,220 >> E então Emacs. 268 00:12:41,220 --> 00:12:44,940 Eu sempre luta em Emacs porque Eu sei como fazer absolutamente nada. 269 00:12:44,940 --> 00:12:47,755 Aparentemente Emacs não é, por padrão instalado no aparelho. 270 00:12:47,755 --> 00:12:49,210 271 00:12:49,210 --> 00:12:51,720 Nós provavelmente irá acrescentar que como uma instalação padrão. 272 00:12:51,720 --> 00:12:59,620 273 00:12:59,620 --> 00:13:02,390 Depois que você aprender uma das Vim ou Emacs, há 274 00:13:02,390 --> 00:13:04,810 nenhuma razão convincente para sempre aprender o outro, 275 00:13:04,810 --> 00:13:07,570 mas é um estilo completamente diferente. 276 00:13:07,570 --> 00:13:10,460 OK para que a edição de arquivos de texto. 277 00:13:10,460 --> 00:13:13,374 >> AUDIÊNCIA: Se você estivesse preso no Vim agora, como fazer nós-- 278 00:13:13,374 --> 00:13:18,840 279 00:13:18,840 --> 00:13:20,800 >> ROB BOWDEN: Há vários modos no Vim, 280 00:13:20,800 --> 00:13:23,770 e há toda tutoriais sobre Vim aprender. 281 00:13:23,770 --> 00:13:27,390 Então, se acontecer de você estar no modo de inserção na ordem 282 00:13:27,390 --> 00:13:29,930 para digitar o texto, que pode ser que introduza de várias maneiras, 283 00:13:29,930 --> 00:13:31,610 mas eu é como você entrar em modo de inserção. 284 00:13:31,610 --> 00:13:34,780 Em ou sair de qualquer especial modo que você está dentro, apenas escapar. 285 00:13:34,780 --> 00:13:37,640 E você só bater Escape para obter fora de todos os modos aninhados em seu. 286 00:13:37,640 --> 00:13:40,360 Apenas OK, agora eu estou de volta no modo normal. 287 00:13:40,360 --> 00:13:43,790 >> E assim, no modo normal, uma cólon. 288 00:13:43,790 --> 00:13:45,160 Você vê que aparecem na parte inferior. 289 00:13:45,160 --> 00:13:46,240 E depois q. 290 00:13:46,240 --> 00:13:52,600 Assim q vai parar se você tiver feito alterações, I-- que tenho feito mudanças? 291 00:13:52,600 --> 00:13:54,180 Fiz alterações aparentemente. 292 00:13:54,180 --> 00:13:57,264 Então, se você tiver feito alterações, ele vai dizer que você pode colocar um ponto de exclamação. 293 00:13:57,264 --> 00:13:58,430 Vou chamá-lo de um estrondo. 294 00:13:58,430 --> 00:14:02,040 Então você pode colocar uma proibição apenas sair sem fazer nada, 295 00:14:02,040 --> 00:14:04,520 ou wq cólon irá salvar e sair. 296 00:14:04,520 --> 00:14:06,580 Então, w, em geral, é escrever. 297 00:14:06,580 --> 00:14:08,300 Então escreva o arquivo. 298 00:14:08,300 --> 00:14:09,810 Eu posso escrever e sair. 299 00:14:09,810 --> 00:14:13,606 Ou você pode ter apenas Slam qx, q estrondo apenas 300 00:14:13,606 --> 00:14:16,230 para sair de lá, independentemente de todas as mudanças que você fez. 301 00:14:16,230 --> 00:14:21,310 302 00:14:21,310 --> 00:14:28,940 >> Tudo bem, então agora vamos vai-- podemos criar arquivos. 303 00:14:28,940 --> 00:14:30,890 Vamos começar a remover os arquivos. 304 00:14:30,890 --> 00:14:35,450 E eu só vou jogar em um novo comando rápido, toque. 305 00:14:35,450 --> 00:14:38,200 Então tocar foo. 306 00:14:38,200 --> 00:14:39,340 Bar Touch. 307 00:14:39,340 --> 00:14:40,220 Toque Baz. 308 00:14:40,220 --> 00:14:42,810 Se eu ls, agora vemos que existem esses arquivos. 309 00:14:42,810 --> 00:14:44,315 Eles são completamente vazio. 310 00:14:44,315 --> 00:14:47,178 Então toque é apenas um fácil forma de um, [inaudível]. 311 00:14:47,178 --> 00:14:50,850 312 00:14:50,850 --> 00:14:54,640 Dois, tecnicamente apenas para o estado isso, ele atualiza a data e hora. 313 00:14:54,640 --> 00:14:58,470 Assim, qualquer arquivo que você cria tem um timestamp associado a ele. 314 00:14:58,470 --> 00:15:01,330 Então Baz foi criado em 14 de setembro em 16:21. 315 00:15:01,330 --> 00:15:02,570 316 00:15:02,570 --> 00:15:06,670 É agora 16:22, então se Eu toco baz novamente, 317 00:15:06,670 --> 00:15:11,420 ver que Baz foi mais recentemente modificada em 16:22. 318 00:15:11,420 --> 00:15:17,680 Mas por outro lado eu quase nunca olhar para a data e hora em arquivos. 319 00:15:17,680 --> 00:15:20,490 Então toque, aqui eu só estou usando lo para criar alguns arquivos rápidos. 320 00:15:20,490 --> 00:15:21,620 321 00:15:21,620 --> 00:15:27,400 >> Tudo bem, então agora é a rm comando que nos preocupamos aqui. 322 00:15:27,400 --> 00:15:28,665 E podemos rm boo. 323 00:15:28,665 --> 00:15:31,000 Diga remover regularmente boo arquivo vazio. 324 00:15:31,000 --> 00:15:34,070 E nós podemos digitar y, e agora é remove. 325 00:15:34,070 --> 00:15:34,850 Baz rm. 326 00:15:34,850 --> 00:15:35,910 327 00:15:35,910 --> 00:15:38,620 Remover arquivo vazio normal Baz e tipo n para não. 328 00:15:38,620 --> 00:15:40,060 Agora ele não é removido. 329 00:15:40,060 --> 00:15:41,240 Então, bar e baz ainda existem. 330 00:15:41,240 --> 00:15:42,232 Foo está desaparecido. 331 00:15:42,232 --> 00:15:43,148 GABRIEL: Continue falando. 332 00:15:43,148 --> 00:15:43,970 333 00:15:43,970 --> 00:15:44,720 ROB BOWDEN: Ótimo. 334 00:15:44,720 --> 00:15:45,800 335 00:15:45,800 --> 00:15:50,370 Portanto, a mensagem irritante aqui, remova empty-- regulares 336 00:15:50,370 --> 00:15:52,390 o que está fazendo lá embaixo? 337 00:15:52,390 --> 00:15:54,030 Remover arquivo vazio regular. 338 00:15:54,030 --> 00:15:58,840 339 00:15:58,840 --> 00:16:01,610 Então, se nós não queremos ser incomodado por essa mensagem, 340 00:16:01,610 --> 00:16:05,340 podemos jogar neste -f bandeira, e por isso é força. 341 00:16:05,340 --> 00:16:11,330 E agora, se eu rm -f, ele não vai dizer que você deseja remover este arquivo. 342 00:16:11,330 --> 00:16:12,040 Ele só vai fazê-lo. 343 00:16:12,040 --> 00:16:13,720 E ls, eu não veja a barra mais lá. 344 00:16:13,720 --> 00:16:14,810 345 00:16:14,810 --> 00:16:18,021 >> Agora que é um potencialmente comando perigoso. 346 00:16:18,021 --> 00:16:19,020 Ela tende a não muito ruim. 347 00:16:19,020 --> 00:16:22,240 Vamos voltar em um segundo como ele pode ficar muito perigosa. 348 00:16:22,240 --> 00:16:28,740 E vamos criar um diretório temporário. 349 00:16:28,740 --> 00:16:30,880 mkdir, outro comando. 350 00:16:30,880 --> 00:16:34,880 Então, é um comando mkdir que faz com que um diretório. 351 00:16:34,880 --> 00:16:40,650 E agora por ls vemos esta luz agradável azul destacou diretório temporário. 352 00:16:40,650 --> 00:16:42,295 Eu posso cd em Temp. 353 00:16:42,295 --> 00:16:44,590 E eu posso mkdir foo. 354 00:16:44,590 --> 00:16:46,330 cd em foo. bar mkdir. 355 00:16:46,330 --> 00:16:46,860 cd em bar. 356 00:16:46,860 --> 00:16:49,400 357 00:16:49,400 --> 00:16:54,300 >> Assim, vemos que podemos facilmente chegar em algum assentamento bastante profunda. 358 00:16:54,300 --> 00:16:56,385 Agora como faço para remover um diretório? 359 00:16:56,385 --> 00:16:57,020 360 00:16:57,020 --> 00:16:57,520 rmdir. 361 00:16:57,520 --> 00:16:59,030 362 00:16:59,030 --> 00:17:03,540 Então, se eu apenas em linha reta tentar rm, como fizemos com um arquivo regular, 363 00:17:03,540 --> 00:17:06,420 bar rm vai dizer não pode remover a barra. 364 00:17:06,420 --> 00:17:07,569 É um diretório. 365 00:17:07,569 --> 00:17:10,619 Há um comando especial para remover diretórios, tipo de. 366 00:17:10,619 --> 00:17:12,900 Bar Então rmdir. 367 00:17:12,900 --> 00:17:13,710 Agora bar está desaparecido. 368 00:17:13,710 --> 00:17:14,980 369 00:17:14,980 --> 00:17:22,680 >> OK, então rmdir eu praticamente nunca uso. 370 00:17:22,680 --> 00:17:32,220 A razão being-- agora vamos fazer uma barra de arquivo regular aqui. 371 00:17:32,220 --> 00:17:34,780 Boo Então rmdir. 372 00:17:34,780 --> 00:17:35,760 rmdir. 373 00:17:35,760 --> 00:17:36,900 Falha ao remover foo. 374 00:17:36,900 --> 00:17:38,420 Diretório não vazio. 375 00:17:38,420 --> 00:17:43,420 Então, você não pode usar remover dir em um diretório que tem coisas nele. 376 00:17:43,420 --> 00:17:44,830 >> Então, você tem algumas opções. 377 00:17:44,830 --> 00:17:49,780 Você pode ir para o diretório, remova tudo manualmente, e depois sair 378 00:17:49,780 --> 00:17:51,759 e rmdir diretório. 379 00:17:51,759 --> 00:17:53,050 Isso, obviamente, soa chato. 380 00:17:53,050 --> 00:17:55,000 E se existem milhares de arquivos de lá? 381 00:17:55,000 --> 00:17:58,119 Bem, você poderia rm *. 382 00:17:58,119 --> 00:17:59,410 Vamos falar sobre * em um segundo. 383 00:17:59,410 --> 00:18:00,870 Basicamente, significa todas as coisas. 384 00:18:00,870 --> 00:18:02,030 385 00:18:02,030 --> 00:18:05,470 Mas melhor ainda, -r tão rm. 386 00:18:05,470 --> 00:18:10,220 Então rm -r-- em um monte de contextos, significa -r recursiva, 387 00:18:10,220 --> 00:18:13,810 que nós vamos falar sobre o que meios recursivos em algumas semanas. 388 00:18:13,810 --> 00:18:18,630 Mas, basicamente, significa travessia a totalidade deste diretório 389 00:18:18,630 --> 00:18:20,190 e remover tudo. 390 00:18:20,190 --> 00:18:24,420 >> Foo -r Então rm vai dizer descer para o diretório foo? 391 00:18:24,420 --> 00:18:25,210 Sim. 392 00:18:25,210 --> 00:18:26,800 Remover regulares vazio arquivo foo / bar? 393 00:18:26,800 --> 00:18:27,880 394 00:18:27,880 --> 00:18:28,540 Sim. 395 00:18:28,540 --> 00:18:29,760 Remover diretório foo? 396 00:18:29,760 --> 00:18:30,260 Sim. 397 00:18:30,260 --> 00:18:31,470 398 00:18:31,470 --> 00:18:35,020 Então agora foo e tudo dentro dele tenha sido removido. 399 00:18:35,020 --> 00:18:42,370 >> Agora que pode ficar particularmente irritante when-- vamos tocar uma, toque 2, toque em 3. 400 00:18:42,370 --> 00:18:44,400 Poderia ter um monte de arquivos. 401 00:18:44,400 --> 00:18:49,060 Se eu quisesse, eu poderia criar milhares de arquivos em aqui. 402 00:18:49,060 --> 00:18:53,340 E foo rm -r vai ser bastante irritante. 403 00:18:53,340 --> 00:18:55,374 Sim, sim, sim, sim, sim, sim. 404 00:18:55,374 --> 00:18:57,540 Com muito mais arquivos que você ver rapidamente quantas vezes 405 00:18:57,540 --> 00:18:58,581 Eu teria que digitar sim. 406 00:18:58,581 --> 00:19:02,265 Bem, acabamos de ver antes como podemos livrar-se da necessidade de digitar sim, -f. 407 00:19:02,265 --> 00:19:03,330 408 00:19:03,330 --> 00:19:07,020 Então mkdir foo cd foo toque 1 2 3. 409 00:19:07,020 --> 00:19:08,380 410 00:19:08,380 --> 00:19:17,190 OK, foo-rf tão rm vai cegamente remover foo inteiramente. 411 00:19:17,190 --> 00:19:17,960 Nenhum aviso. 412 00:19:17,960 --> 00:19:18,650 Sem nada. 413 00:19:18,650 --> 00:19:20,040 Foo está desaparecido. 414 00:19:20,040 --> 00:19:23,830 >> Então, eu tendem a usar esse comando o tempo todo. 415 00:19:23,830 --> 00:19:25,120 416 00:19:25,120 --> 00:19:27,830 Dito isto, é uma comando muito perigoso, 417 00:19:27,830 --> 00:19:33,240 porque se eu fizer algo como isso, não irá pedir-lhe. 418 00:19:33,240 --> 00:19:34,730 Ele vai embora. 419 00:19:34,730 --> 00:19:40,140 E isso acontece com bastante freqüência, e até mesmo em nível superior cursos de CS. 420 00:19:40,140 --> 00:19:42,070 Às vezes, vamos ver algo em que alguém 421 00:19:42,070 --> 00:19:48,360 diz que eu acidentalmente nosso rm rf-ed minha casa diretório e todo o meu conjunto P está desaparecido. 422 00:19:48,360 --> 00:19:52,422 E é devastador, mas não há nenhuma lata de lixo. 423 00:19:52,422 --> 00:19:54,380 Não há nenhum que não há nada para que você possa recuperar. 424 00:19:54,380 --> 00:19:55,330 É apenas desaparecido. 425 00:19:55,330 --> 00:19:56,529 426 00:19:56,529 --> 00:19:58,320 Pior ainda seria algo como rm -rf /. 427 00:19:58,320 --> 00:19:59,432 428 00:19:59,432 --> 00:20:01,140 Então, nós apenas discutimos que diretório raiz. 429 00:20:01,140 --> 00:20:03,095 Ele mantém todas as arquivos em seu sistema. 430 00:20:03,095 --> 00:20:04,120 431 00:20:04,120 --> 00:20:07,380 As coisas tendem a ficar muito confuso quando você remove coisas como ls, 432 00:20:07,380 --> 00:20:10,280 e cd, e todos aqueles. 433 00:20:10,280 --> 00:20:15,467 >> AUDIÊNCIA: Qual é a diferença entre rm, rf, e rm * 434 00:20:15,467 --> 00:20:16,300 ROB BOWDEN: Então rm * - 435 00:20:16,300 --> 00:20:17,700 436 00:20:17,700 --> 00:20:22,300 >> ALLISON: Pergunta era o que é o diferença entre rm, rf, e rm *. 437 00:20:22,300 --> 00:20:23,750 438 00:20:23,750 --> 00:20:25,950 >> ROB BOWDEN: Então rm *. 439 00:20:25,950 --> 00:20:31,910 Estrela em meios geral todos o conteúdo deste diretório. 440 00:20:31,910 --> 00:20:33,540 441 00:20:33,540 --> 00:20:35,540 Tentando pensar em outra formas de mostrar estrela. 442 00:20:35,540 --> 00:20:38,280 443 00:20:38,280 --> 00:20:44,780 Bem, na verdade estrelar geral significa corresponder a qualquer padrão. 444 00:20:44,780 --> 00:20:54,930 Então, se eu tenho um arquivo chamado dog1, dog2 tocar, tocar cat1, toque cat2. 445 00:20:54,930 --> 00:20:56,050 446 00:20:56,050 --> 00:21:02,110 Então ls * 1 vai imprimir cat1 e dog1, porque essa estrela pode ser preenchido 447 00:21:02,110 --> 00:21:06,270 em com-- a pessoa precisa estar lá, mas a estrela pode ser gato ou cachorro. 448 00:21:06,270 --> 00:21:07,247 É um wild card. 449 00:21:07,247 --> 00:21:08,580 Essa é a palavra que eu estou procurando. 450 00:21:08,580 --> 00:21:09,120 Wild card. 451 00:21:09,120 --> 00:21:10,180 452 00:21:10,180 --> 00:21:13,960 Ou eu poderia ls cachorro *, e Estou tem que ver dog1, dog2. 453 00:21:13,960 --> 00:21:16,870 Portanto, aqueles são listando os arquivos que corresponder ao padrão particular. 454 00:21:16,870 --> 00:21:18,150 Você pode usar ls desta forma. 455 00:21:18,150 --> 00:21:19,350 456 00:21:19,350 --> 00:21:22,020 >> Ls * estrelas combina com qualquer coisa. 457 00:21:22,020 --> 00:21:25,710 Então, ele vai imprimir todos o conteúdo desse diretório 458 00:21:25,710 --> 00:21:27,290 uma vez que todos eles coincidem. 459 00:21:27,290 --> 00:21:30,130 Não vai imprimir nada em diretórios de nível superior. 460 00:21:30,130 --> 00:21:38,680 Se eu tenho um sub diretório, foo, e toque 1 2 3-- agora se rm * estrela, 461 00:21:38,680 --> 00:21:41,450 remover cat1, cat2, dog1, dog2. 462 00:21:41,450 --> 00:21:42,340 Não é possível remover foo. 463 00:21:42,340 --> 00:21:43,090 É um diretório. 464 00:21:43,090 --> 00:21:43,920 465 00:21:43,920 --> 00:21:50,340 >> Assim estrela se expande para todo o arquivos no diretório. 466 00:21:50,340 --> 00:21:55,210 Então, tecnicamente rm * é como dizer cat1 rm, cat2, dog1, dog2, foo. 467 00:21:55,210 --> 00:22:03,630 Considerando rm -rf, tecnicamente estrela faria realizar o que queremos, mas rm -rf-- 468 00:22:03,630 --> 00:22:06,090 se eu sair dessa diretório, temp rm -rf, 469 00:22:06,090 --> 00:22:08,890 que vai entrar em temperatura e recursivamente remover tudo. 470 00:22:08,890 --> 00:22:11,260 471 00:22:11,260 --> 00:22:21,060 >> Assim estrela é separado em que esse Entende por-- assim essa coisa 472 00:22:21,060 --> 00:22:25,090 que eu estou correndo, essa coisa que está me levando para comandos 473 00:22:25,090 --> 00:22:28,770 e, em seguida, executar e fazer eles, Eu chamo isso de minha concha. 474 00:22:28,770 --> 00:22:31,930 E assim esta concha é em si um programa. 475 00:22:31,930 --> 00:22:35,010 E se eu quisesse, eu poderia ser executado em / bin / bash. 476 00:22:35,010 --> 00:22:36,930 O shell é chamado bash. 477 00:22:36,930 --> 00:22:39,340 E agora notamos algo alterou ligeiramente, 478 00:22:39,340 --> 00:22:42,200 e isso é porque minhas configurações para o shell são um pouco diferentes. 479 00:22:42,200 --> 00:22:45,415 >> Mas agora eu estou tecnicamente em execução uma concha dentro do meu escudo original, 480 00:22:45,415 --> 00:22:49,570 e eu posso sair dessa casca, e agora Estou de volta ao meu shell nível superior. 481 00:22:49,570 --> 00:22:55,240 A finalidade de dizer que é-- a estrela. 482 00:22:55,240 --> 00:22:59,020 Então, a estrela é algo entendida por bash. 483 00:22:59,020 --> 00:23:04,260 Então rm -rf, bandeira rf é compreendido por apenas rm. 484 00:23:04,260 --> 00:23:06,380 Ele sabe que, quando você passar um -rf que você 485 00:23:06,380 --> 00:23:09,520 quer para remover de forma recursiva todos os arquivos sem avisar. 486 00:23:09,520 --> 00:23:13,960 A estrela é algo entendido por bash que quando você diz rm *, 487 00:23:13,960 --> 00:23:16,890 bash não vai dizer hey rm *, remova estrela. 488 00:23:16,890 --> 00:23:21,010 Bash vai dizer rm * remover cat1, cat2, dog1, dog2. 489 00:23:21,010 --> 00:23:24,305 Ele vai automaticamente para expandir todos os arquivos no diretório. 490 00:23:24,305 --> 00:23:29,100 491 00:23:29,100 --> 00:23:33,140 >> E da mesma forma til é outra símbolo que o bash entende. 492 00:23:33,140 --> 00:23:37,130 Quando você diz cd ~, o bash expande que, para seu diretório home. 493 00:23:37,130 --> 00:23:38,910 494 00:23:38,910 --> 00:23:40,210 Outras perguntas até agora? 495 00:23:40,210 --> 00:23:42,760 496 00:23:42,760 --> 00:23:46,060 OK, então vamos começar a ir rápido. 497 00:23:46,060 --> 00:23:47,700 498 00:23:47,700 --> 00:23:48,545 >> Conclusão Tab. 499 00:23:48,545 --> 00:23:49,670 Só para jogá-lo lá fora. 500 00:23:49,670 --> 00:23:51,530 Um monte de pessoas não perceber isso existe. 501 00:23:51,530 --> 00:23:55,060 Então, se eu digito cd dow, I quer ir para downloads. 502 00:23:55,060 --> 00:23:56,700 Eu não preciso digitar nloads. 503 00:23:56,700 --> 00:23:57,960 504 00:23:57,960 --> 00:24:00,770 Eu só posso bater Tab. 505 00:24:00,770 --> 00:24:03,794 Assim, reconhece-se que A Dow é um prefixo que 506 00:24:03,794 --> 00:24:05,710 não corresponde a qualquer coisa mais neste diretório, 507 00:24:05,710 --> 00:24:07,520 por isso vai concluir que para você. 508 00:24:07,520 --> 00:24:08,610 Agora eu posso entrar. 509 00:24:08,610 --> 00:24:10,110 >> Eu também faço isso de forma recursiva. 510 00:24:10,110 --> 00:24:11,205 Foo Então mkdir. 511 00:24:11,205 --> 00:24:12,480 512 00:24:12,480 --> 00:24:13,300 Vamos entrar em foo. 513 00:24:13,300 --> 00:24:14,830 bar mkdir. 514 00:24:14,830 --> 00:24:17,345 Então, voltando para a minha casa diretório, eu posso ver downloads. 515 00:24:17,345 --> 00:24:19,040 516 00:24:19,040 --> 00:24:21,860 Agora bater guia de novo, vai automaticamente para preencher foo. 517 00:24:21,860 --> 00:24:22,880 É o único diretório. 518 00:24:22,880 --> 00:24:25,340 Bater guia de novo, automaticamente vai preencher bar. 519 00:24:25,340 --> 00:24:26,798 Então agora eu estou em (~ downloads / foo / bar). 520 00:24:26,798 --> 00:24:27,310 521 00:24:27,310 --> 00:24:31,692 >> Portanto, este guia de conclusão, sempre que eu tenho que o horário de expediente, 522 00:24:31,692 --> 00:24:33,400 e eu estou de pé sobre ombro de alguém, 523 00:24:33,400 --> 00:24:40,470 e eles vão rm -D-O W-N-L-O-A-D-S, estou morrendo. 524 00:24:40,470 --> 00:24:41,990 Apenas guia, guia, guia, guia. 525 00:24:41,990 --> 00:24:44,550 526 00:24:44,550 --> 00:24:45,630 Então, definitivamente guia utilizada. 527 00:24:45,630 --> 00:24:47,890 528 00:24:47,890 --> 00:24:49,840 E da mesma forma-se e para baixo, um monte de gente 529 00:24:49,840 --> 00:24:51,930 só que aconteceu com nunca bateu cima e para baixo. 530 00:24:51,930 --> 00:24:54,870 Ele vai passar pelo anterior comandos, por isso, se você apenas correu alguma coisa, 531 00:24:54,870 --> 00:24:58,300 e você quer executá-lo novamente, apenas segure-se até chegar a ele. 532 00:24:58,300 --> 00:24:59,870 533 00:24:59,870 --> 00:25:00,370 Está bem. 534 00:25:00,370 --> 00:25:01,460 535 00:25:01,460 --> 00:25:03,585 >> Tão rápida, algumas outras coisas. 536 00:25:03,585 --> 00:25:04,800 537 00:25:04,800 --> 00:25:05,930 Vamos voltar em Temp. 538 00:25:05,930 --> 00:25:06,976 539 00:25:06,976 --> 00:25:08,125 Vamos criar alguns arquivos. 540 00:25:08,125 --> 00:25:10,480 541 00:25:10,480 --> 00:25:15,215 Então, aqui, eu sou apenas vai listar algumas palavras. 542 00:25:15,215 --> 00:25:18,460 543 00:25:18,460 --> 00:25:21,035 cão, gato, meow. 544 00:25:21,035 --> 00:25:23,940 545 00:25:23,940 --> 00:25:26,040 Vamos fazer cão, peixe. 546 00:25:26,040 --> 00:25:27,500 547 00:25:27,500 --> 00:25:32,320 Então, agora é um representante muito comandos úteis que você 548 00:25:32,320 --> 00:25:37,820 usar para pesquisar toda arquivos para um determinado texto, 549 00:25:37,820 --> 00:25:40,910 e tecnicamente você pode fazer realmente expressões complexas para que haja coincidência. 550 00:25:40,910 --> 00:25:44,830 >> Então, aqui, se eu grep, eo que eu quero procurar? 551 00:25:44,830 --> 00:25:49,130 Vamos dizer que eu estou procurando por gatos, e Quero procurar todos esses arquivos. 552 00:25:49,130 --> 00:25:50,650 Então, como é que eu faço todos esses arquivos? 553 00:25:50,650 --> 00:25:51,900 Star. 554 00:25:51,900 --> 00:25:54,939 Assim, em um arquivo, eu tenho gato. 555 00:25:54,939 --> 00:25:56,980 Eu provavelmente poderia ter chamou-lhe algo melhor, 556 00:25:56,980 --> 00:25:59,063 porque que parece números de linha ou algo assim. 557 00:25:59,063 --> 00:26:01,590 Mas no arquivo que eu tenho uma linha com gato. 558 00:26:01,590 --> 00:26:04,160 Em arquivo dois Eu tenho uma linha com o gato. 559 00:26:04,160 --> 00:26:07,280 Então agora eu posso olhar para dentro de um arquivo e ver sim, esse arquivo tinha gato. 560 00:26:07,280 --> 00:26:10,210 Arquivo aviso prévio de três não foi acompanhado porque o gato não está lá. 561 00:26:10,210 --> 00:26:13,882 Eu posso pesquisar por miado. 562 00:26:13,882 --> 00:26:14,840 Só arquivar dois tem miado. 563 00:26:14,840 --> 00:26:16,120 564 00:26:16,120 --> 00:26:20,640 >> Portanto, este pode combinar, novamente, com -r, que 565 00:26:20,640 --> 00:26:23,580 como eu disse antes freqüentemente significa recursiva. 566 00:26:23,580 --> 00:26:29,800 E para que eu possa vir até aqui, grep -r para qualquer instância de-- vamos editar 567 00:26:29,800 --> 00:26:32,010 este apenas para jogar um gato lá dentro. 568 00:26:32,010 --> 00:26:38,800 Então grep -r para qualquer instância de gato ao longo deste diretório. 569 00:26:38,800 --> 00:26:41,600 E ele vai de forma recursiva pesquisar todos os subdiretórios. 570 00:26:41,600 --> 00:26:43,940 Assim, em baz, há gato. 571 00:26:43,940 --> 00:26:45,570 Em temp / 2, há gato. 572 00:26:45,570 --> 00:26:47,960 E em temp / 1 há gato. 573 00:26:47,960 --> 00:26:50,045 Então, isso é procurar dentro de arquivos. 574 00:26:50,045 --> 00:26:51,250 575 00:26:51,250 --> 00:26:55,090 >> Agora você também pode usar um achado. 576 00:26:55,090 --> 00:26:59,640 E assim que encontrar é especificamente sobre à procura de arquivos com um determinado nome. 577 00:26:59,640 --> 00:27:02,490 Então, vamos fazer um pouco mais. 578 00:27:02,490 --> 00:27:03,660 Vamos para downloads. 579 00:27:03,660 --> 00:27:04,680 580 00:27:04,680 --> 00:27:05,380 Toque dog1. 581 00:27:05,380 --> 00:27:06,840 582 00:27:06,840 --> 00:27:07,770 Toque cat2. 583 00:27:07,770 --> 00:27:09,290 584 00:27:09,290 --> 00:27:10,760 Toque cat_dog. 585 00:27:10,760 --> 00:27:14,550 586 00:27:14,550 --> 00:27:15,975 Toque catcat. 587 00:27:15,975 --> 00:27:18,270 588 00:27:18,270 --> 00:27:23,810 >> Então, eu quero encontrar todos arquivos com cachorro no nome. 589 00:27:23,810 --> 00:27:28,060 Assim que encontrar, e para o mais longo vez que nunca se lembrava 590 00:27:28,060 --> 00:27:33,760 como encontrar trabalhou, até que eu finalmente ler algo que fez isso de forma clara. 591 00:27:33,760 --> 00:27:35,784 Então, encontrar, automaticamente recursiva. 592 00:27:35,784 --> 00:27:36,950 Você não precisa passar por um -r. 593 00:27:36,950 --> 00:27:38,090 594 00:27:38,090 --> 00:27:39,110 Então, encontrar pontos. 595 00:27:39,110 --> 00:27:40,750 Nós não falamos sobre ponto ainda. 596 00:27:40,750 --> 00:27:44,800 Considerando dot dot sempre significa um diretório para cima. 597 00:27:44,800 --> 00:27:46,960 Dot sempre significa o diretório atual. 598 00:27:46,960 --> 00:27:51,390 Assim eu poderia rm -r ponto no mesma maneira que eu posso rm -rf *. 599 00:27:51,390 --> 00:27:53,140 Em última análise, eles realizar a mesma coisa. 600 00:27:53,140 --> 00:27:56,040 rm -rf ponto vai remover em todo o diretório atual. 601 00:27:56,040 --> 00:27:57,440 602 00:27:57,440 --> 00:27:59,680 >> OK, o que eu não quero fazer lá. 603 00:27:59,680 --> 00:28:01,490 604 00:28:01,490 --> 00:28:04,320 Mas encontrar ponto. 605 00:28:04,320 --> 00:28:07,920 Assim, de forma recursiva, procure a corrente diretório, e agora tudo 606 00:28:07,920 --> 00:28:14,125 após este são um bando de sinalizadores que você usar para excluir coisas do retorno. 607 00:28:14,125 --> 00:28:17,250 Então, encontrar dot retorna tudo o que pode encontrar a partir do diretório atual. 608 00:28:17,250 --> 00:28:19,700 Esses são todos os arquivos recursivamente procurar. 609 00:28:19,700 --> 00:28:21,250 Vamos ver alguns desses em um segundo. 610 00:28:21,250 --> 00:28:23,150 611 00:28:23,150 --> 00:28:27,140 >> Mas, caso você esteja se perguntando como eu faço que, de modo comando K, pelo menos 612 00:28:27,140 --> 00:28:29,660 no meu terminal no Mac limpa-lo. 613 00:28:29,660 --> 00:28:34,660 Controle L geralmente limpa lo para qualquer tipo de terminal. 614 00:28:34,660 --> 00:28:36,480 Você também pode digitar clara. 615 00:28:36,480 --> 00:28:38,410 E se você nunca chegar em um scenario-- estranho 616 00:28:38,410 --> 00:28:42,790 isso aconteceu comigo um par tempo-- onde as cores de seus prompts 617 00:28:42,790 --> 00:28:46,590 são toda desarrumada, ou você não são capazes de ver nada 618 00:28:46,590 --> 00:28:51,232 sendo digitado quando você está digitando, porque às vezes, como a cor de fundo é definida 619 00:28:51,232 --> 00:28:53,940 a mesma que a cor do primeiro plano e agora você não pode ver as fontes. 620 00:28:53,940 --> 00:28:55,110 621 00:28:55,110 --> 00:28:59,830 Repor é algo que apenas repõe você para o fundo padrão preto, 622 00:28:59,830 --> 00:29:01,840 frente branco, ou o que quer você configurá-los para. 623 00:29:01,840 --> 00:29:03,390 624 00:29:03,390 --> 00:29:04,790 >> Então, onde estávamos? 625 00:29:04,790 --> 00:29:05,930 Encontre ponto. 626 00:29:05,930 --> 00:29:09,360 Portanto, agora tudo passado presente ponto restringe os resultados 627 00:29:09,360 --> 00:29:11,450 para algo que corresponde o modelo dado. 628 00:29:11,450 --> 00:29:16,110 Então, aqui eu quero procurar tudo com o nome do gato. 629 00:29:16,110 --> 00:29:17,300 Eu não tenho nada. 630 00:29:17,300 --> 00:29:18,390 Por que é esse o caso? 631 00:29:18,390 --> 00:29:21,230 Bem, eu estou apenas procurando por algo com exatamente o nome do gato. 632 00:29:21,230 --> 00:29:25,150 Se eu quiser pesquisar algo que tem algum padrão, e cat-- 633 00:29:25,150 --> 00:29:28,890 as citações tecnicamente não são necessários, mas eu estou jogando-os lá. 634 00:29:28,890 --> 00:29:32,720 Então, agora ele encontra catcat porque essa é a única coisa que 635 00:29:32,720 --> 00:29:36,040 tem algum arbitrário padrão seguido pelo gato. 636 00:29:36,040 --> 00:29:41,950 Eu posso colocar gato *, e agora encontrar catcat, cat_dog, cat2, 637 00:29:41,950 --> 00:29:45,245 porque essas são todas as coisas com gato no início seguido por nada. 638 00:29:45,245 --> 00:29:46,120 Você pode combinar isso. 639 00:29:46,120 --> 00:29:50,480 Se você quiser procurar por todos os arquivos C que você tem, você pode fazer * .c. 640 00:29:50,480 --> 00:29:51,960 Temos blah.c aqui. 641 00:29:51,960 --> 00:29:53,000 642 00:29:53,000 --> 00:29:55,020 Então, isso é um achado obras. 643 00:29:55,020 --> 00:29:55,770 Você pode pesquisar. 644 00:29:55,770 --> 00:29:58,270 Tem um monte de bandeiras para outras restrições. 645 00:29:58,270 --> 00:30:00,960 E um deles, digamos -d. 646 00:30:00,960 --> 00:30:02,110 647 00:30:02,110 --> 00:30:04,435 Então obsoleta. 648 00:30:04,435 --> 00:30:05,425 649 00:30:05,425 --> 00:30:06,550 Oh, não é isso que eu quero. 650 00:30:06,550 --> 00:30:07,730 Não -d. 651 00:30:07,730 --> 00:30:08,860 Tipo d. 652 00:30:08,860 --> 00:30:13,820 Então, encontrar dot - tipo d. 653 00:30:13,820 --> 00:30:17,760 Então, o que fez é que eu estou procurando para todos os arquivos no diretório atual 654 00:30:17,760 --> 00:30:21,680 com a-- d significa tipo de diretório directory--. 655 00:30:21,680 --> 00:30:24,430 Isso retorna todos os diretórios no diretório atual. 656 00:30:24,430 --> 00:30:27,670 E tipo F é tudo normal arquivos, todos os não diretórios. 657 00:30:27,670 --> 00:30:29,809 Então, isso é apenas uma exemplo de outras maneiras que você 658 00:30:29,809 --> 00:30:32,350 pode restringir a pesquisa a outra do que apenas o nome do ficheiro. 659 00:30:32,350 --> 00:30:34,126 660 00:30:34,126 --> 00:30:35,570 >> Tem sido 30 minutos. 661 00:30:35,570 --> 00:30:36,848 Ainda vai. 662 00:30:36,848 --> 00:30:38,132 >> ALLISON: Eu vou brisa através. 663 00:30:38,132 --> 00:30:39,670 Ele vai ficar bem. 664 00:30:39,670 --> 00:30:41,460 >> ROB BOWDEN: Então algumas outras coisas. 665 00:30:41,460 --> 00:30:45,700 Agora bater, ponto de exclamação. 666 00:30:45,700 --> 00:30:50,530 Assim que geralmente means-- bem, vamos ver um exemplo. 667 00:30:50,530 --> 00:30:52,230 Então! F, o que é que vai fazer? 668 00:30:52,230 --> 00:30:53,520 669 00:30:53,520 --> 00:30:57,810 Bem, parece ter repetido achado do tipo dot f. 670 00:30:57,810 --> 00:30:59,240 Que tal! G? 671 00:30:59,240 --> 00:31:00,760 Isso só grep cat -r *. 672 00:31:00,760 --> 00:31:02,010 673 00:31:02,010 --> 00:31:05,720 Então atirar você pode usar para repetir um comando recentemente feito. 674 00:31:05,720 --> 00:31:13,280 Então, se eu digitar! Gre, que vai re-run os comandos que começaram com gre mais 675 00:31:13,280 --> 00:31:14,060 recentemente. 676 00:31:14,060 --> 00:31:17,090 >> E você pode ver tudo isso comandos com a história. 677 00:31:17,090 --> 00:31:17,880 Assim, a história. 678 00:31:17,880 --> 00:31:19,630 Estes são todos comandos eu correr hoje. 679 00:31:19,630 --> 00:31:21,089 680 00:31:21,089 --> 00:31:23,130 E bem, não é literalmente restrito aos dias de hoje, 681 00:31:23,130 --> 00:31:25,180 mas eu só tenho usado este aparelho a partir de hoje. 682 00:31:25,180 --> 00:31:28,730 É sua totalidade do história de seu shell bash, 683 00:31:28,730 --> 00:31:30,433 exceto que corta em algum ponto. 684 00:31:30,433 --> 00:31:33,474 AUDIÊNCIA: O que acontece se você fizer histórico de comandos [inaudível] e um erro 685 00:31:33,474 --> 00:31:35,430 no resultado ainda será impresso as-- 686 00:31:35,430 --> 00:31:44,110 >> ROB BOWDEN: Sim, se houver um erro em um desses commands-- 687 00:31:44,110 --> 00:31:48,090 então vamos dizer, que é um comando de erro não encontrado. 688 00:31:48,090 --> 00:31:49,312 689 00:31:49,312 --> 00:31:50,520 Ainda aparece na história. 690 00:31:50,520 --> 00:31:52,620 691 00:31:52,620 --> 00:31:53,170 Tudo certo. 692 00:31:53,170 --> 00:31:54,750 693 00:31:54,750 --> 00:31:56,040 Outras perguntas sobre qualquer coisa? 694 00:31:56,040 --> 00:31:58,760 695 00:31:58,760 --> 00:32:00,300 Então, isso é estrondo. 696 00:32:00,300 --> 00:32:04,230 >> Agora, o comando realmente útil, o homem. 697 00:32:04,230 --> 00:32:07,750 Então, que lhe dá a manual para um determinado comando. 698 00:32:07,750 --> 00:32:11,640 Então, digamos que man ls, então isso está me mostrando sl. 699 00:32:11,640 --> 00:32:13,400 Ele lista o conteúdo do diretório. 700 00:32:13,400 --> 00:32:17,150 E é aí que eu vejo que há são essas várias bandeiras que existem. 701 00:32:17,150 --> 00:32:21,340 Assim, vemos que existe ls -l se tivéssemos que ler isso. ls -l 702 00:32:21,340 --> 00:32:26,150 me dá esta listagem completa do diretório com dono do arquivo, 703 00:32:26,150 --> 00:32:29,750 o tamanho do arquivo, o o timestamp modificado. 704 00:32:29,750 --> 00:32:31,130 705 00:32:31,130 --> 00:32:34,980 Então ls -a é outro que você pode realmente usar um pouco freqüentemente. 706 00:32:34,980 --> 00:32:38,130 -al é minha bandeira mais comum este ls passadas. 707 00:32:38,130 --> 00:32:42,520 >> Assim, -a, perceber que há muito mais arquivos do que apenas ls. 708 00:32:42,520 --> 00:32:44,170 ls -a. 709 00:32:44,170 --> 00:32:46,170 O que há em comum com todos esses arquivos? 710 00:32:46,170 --> 00:32:47,790 Eles começam com um ponto. 711 00:32:47,790 --> 00:32:54,710 Portanto, esta é uma convenção em Linux que os arquivos que começam com um ponto estão ocultas. 712 00:32:54,710 --> 00:32:58,330 Então, isso significa apenas que quando nós apenas ls retas, 713 00:32:58,330 --> 00:33:04,170 ou nós estamos procurando este diretório usando o equivalente finder, ou do Windows 714 00:33:04,170 --> 00:33:07,250 Explorador equivalente, que nós não quero ver esses arquivos de pontos. 715 00:33:07,250 --> 00:33:09,680 Eles só poluem a visão das coisas. 716 00:33:09,680 --> 00:33:11,790 Então, eles estão escondidos a menos que você especificamente 717 00:33:11,790 --> 00:33:14,250 solicitá-los com algo como -a. 718 00:33:14,250 --> 00:33:18,920 Então eu posso cd em .local, e eu vejo que que é em si mesmo um diretório com 719 00:33:18,920 --> 00:33:22,220 um diretório compartilhado, e aplicações, e blá blá blá. 720 00:33:22,220 --> 00:33:24,520 Então, dot, arquivos eles estão apenas escondidos. 721 00:33:24,520 --> 00:33:26,250 722 00:33:26,250 --> 00:33:29,355 >> OK, para que outros mais importantes. 723 00:33:29,355 --> 00:33:30,490 724 00:33:30,490 --> 00:33:32,000 Eu tenho um par que eu posso pular. 725 00:33:32,000 --> 00:33:38,160 Vamos apenas verdadeira conversa rápida sobre as coisas arquivo de redirecionamento. 726 00:33:38,160 --> 00:33:43,020 Portanto, há uma complexa série inteira de coisas que você pode fazer com estes, 727 00:33:43,020 --> 00:33:47,204 mas só para vê-los, digamos, eco. 728 00:33:47,204 --> 00:33:47,870 Outro comando. 729 00:33:47,870 --> 00:33:48,920 Comando realmente idiota. 730 00:33:48,920 --> 00:33:50,710 Tudo que faz é imprimir o que eu diga a ele. 731 00:33:50,710 --> 00:33:52,070 Então eco Olá. 732 00:33:52,070 --> 00:33:53,850 Ele apenas repetiu Olá para o ecrã. 733 00:33:53,850 --> 00:33:55,170 734 00:33:55,170 --> 00:33:56,390 Olá, mundo. 735 00:33:56,390 --> 00:33:57,890 Ecos Olá mundo. 736 00:33:57,890 --> 00:34:02,650 >> Assim, um comando ou um símbolo que o bash entende 737 00:34:02,650 --> 00:34:07,620 é maior do que este símbolo, e que é a saída para um símbolo de arquivo. 738 00:34:07,620 --> 00:34:10,940 Então, se eu de saída para esta foo, há agora um arquivo 739 00:34:10,940 --> 00:34:15,100 chamado foo, dentro de que é Olá mundo. 740 00:34:15,100 --> 00:34:18,489 Então, observe que quando eu ecoar Olá tubulação mundo em foo, 741 00:34:18,489 --> 00:34:19,980 não ecoam Olá mundo. 742 00:34:19,980 --> 00:34:22,630 Em vez disso, foi colocado em arquivo foo. 743 00:34:22,630 --> 00:34:25,340 E outro comando apenas jogá-lo para você, gata. 744 00:34:25,340 --> 00:34:29,191 Essa é uma maneira fácil de apenas completamente listar o conteúdo do arquivo 745 00:34:29,191 --> 00:34:31,440 de modo que eu não tenho para abrir um editor de texto para o visualizar. 746 00:34:31,440 --> 00:34:34,159 Assim, o conteúdo do arquivo foo estão Olá mundo. 747 00:34:34,159 --> 00:34:38,460 E eu poderia blah.c gato, os conteúdos são isso. 748 00:34:38,460 --> 00:34:42,123 >> Novamente, estes são comandos que, não fazer espero que você tê-los todos memorizado. 749 00:34:42,123 --> 00:34:43,860 A idéia é que você já viu-los. 750 00:34:43,860 --> 00:34:45,735 Talvez você esteja trabalhando em algo, e você está 751 00:34:45,735 --> 00:34:47,230 como eu estou cansado de abrir este arquivo. 752 00:34:47,230 --> 00:34:50,120 Eu gostaria de poder apenas olhar no conteúdo real rápido. 753 00:34:50,120 --> 00:34:52,320 Você pode fazer isso, então olhar para trás e dizer oh I 754 00:34:52,320 --> 00:34:55,250 lembre-se algo como o que existe, e é gato. 755 00:34:55,250 --> 00:35:00,630 >> Então o que está acontecendo em um arquivo. 756 00:35:00,630 --> 00:35:06,639 Ora, não há realmente nenhuma boa exemplo de leitura de um arquivo ainda. 757 00:35:06,639 --> 00:35:08,930 O que é algo que leva algo do padrão em? 758 00:35:08,930 --> 00:35:10,010 759 00:35:10,010 --> 00:35:11,544 Qualquer simples comando Linux? 760 00:35:11,544 --> 00:35:13,480 761 00:35:13,480 --> 00:35:16,970 Quando chegarmos a ele, em um casal semana todos os piece-- bem, 762 00:35:16,970 --> 00:35:20,470 esta semana você tem um pedaço onde você começar a tomar a entrada do usuário. 763 00:35:20,470 --> 00:35:23,696 E assim normalmente você digita que a entrada para o teclado. 764 00:35:23,696 --> 00:35:25,570 Em vez de digitar que entrada no teclado, 765 00:35:25,570 --> 00:35:30,950 você pode, em vez de tubos de um arquivo de modo que quando você faz Mario, ./mario, 766 00:35:30,950 --> 00:35:35,200 tubo a partir de qualquer arquivo dado, e que vai executar o programa de mario. 767 00:35:35,200 --> 00:35:37,300 Não esperando a entrada em o teclado, em vez disso, é 768 00:35:37,300 --> 00:35:39,650 só vai ler o linhas do arquivo foo. 769 00:35:39,650 --> 00:35:45,230 >> Assim, maior do que foo coloca em o arquivo foo, e menos de foo 770 00:35:45,230 --> 00:35:50,170 leva o material a partir do arquivo foo e usa como entrada para este programa. 771 00:35:50,170 --> 00:35:51,520 772 00:35:51,520 --> 00:36:00,630 E só para vê-lo, nós também poderia ecoar foo bar baz, e em seguida, em vez de um 773 00:36:00,630 --> 00:36:03,850 maior do que, vamos fazer dois em foo. 774 00:36:03,850 --> 00:36:05,610 O que isso faz? 775 00:36:05,610 --> 00:36:07,180 Ele só acrescenta ao arquivo. 776 00:36:07,180 --> 00:36:15,360 Então, ao invés notar se eu echo blá em foo e foo gato, é só blá. 777 00:36:15,360 --> 00:36:18,285 Então, quando você saída para um arquivo que, substitui completamente o arquivo. 778 00:36:18,285 --> 00:36:19,330 779 00:36:19,330 --> 00:36:22,740 Se você quiser apenas para acrescentar, double [? motoniveladora. ?] 780 00:36:22,740 --> 00:36:24,080 >> E por último, é de tubulação. 781 00:36:24,080 --> 00:36:29,590 Tubo se torna muito mais complicado, onde que leva a saída de um comando 782 00:36:29,590 --> 00:36:32,320 e alimenta-lo para o próximo comando. 783 00:36:32,320 --> 00:36:36,140 Então, uma coisa comum, história. 784 00:36:36,140 --> 00:36:37,920 Então, ugh, eu não quero olhar para isso. 785 00:36:37,920 --> 00:36:40,680 786 00:36:40,680 --> 00:36:44,485 Mostra-me todos os comandos na minha história onde eu grep-ed para alguma coisa. 787 00:36:44,485 --> 00:36:45,360 Não, isso é confuso. 788 00:36:45,360 --> 00:36:50,360 Mostra-me todos os comandos que eu encontrar. 789 00:36:50,360 --> 00:36:52,360 Tudo encontrar comandos que eu já corri. 790 00:36:52,360 --> 00:36:55,050 >> Assim, a história. 791 00:36:55,050 --> 00:36:59,017 Agora saídas de história para o tela esta lista de comandos, 792 00:36:59,017 --> 00:37:00,850 mas eu não quero saída para a tela. 793 00:37:00,850 --> 00:37:03,445 Em vez disso, eu estou indo para canalizá-lo em grep. 794 00:37:03,445 --> 00:37:04,790 795 00:37:04,790 --> 00:37:07,830 Então, vamos pesquisar por todas as instâncias do achado. 796 00:37:07,830 --> 00:37:09,550 797 00:37:09,550 --> 00:37:17,000 Então, agora em vez de tomar grep a entrada, em vez de-- 798 00:37:17,000 --> 00:37:24,360 grep é capaz de lidar como input-- estamos usando grep um pouco diferente aqui. 799 00:37:24,360 --> 00:37:29,550 Então, em vez de digitar a lista de coisas que queria procurar 800 00:37:29,550 --> 00:37:31,070 e disse grep está tomando como entrada. 801 00:37:31,070 --> 00:37:34,810 Então, se eu apenas grep encontrar, ele espera que eu escreva coisas. 802 00:37:34,810 --> 00:37:37,661 Então gato Olá encontrar. 803 00:37:37,661 --> 00:37:38,160 Olá. 804 00:37:38,160 --> 00:37:40,430 805 00:37:40,430 --> 00:37:40,930 Localizar. 806 00:37:40,930 --> 00:37:43,670 Observe cada vez que eu digite encontrar reconhece que eu digitei achado. 807 00:37:43,670 --> 00:37:44,880 808 00:37:44,880 --> 00:37:49,540 Então, ao invés disso, vai busca de arquivos para encontrar. 809 00:37:49,540 --> 00:37:53,930 >> Assim, a história vai agora saída de uma lista de todos os comandos. 810 00:37:53,930 --> 00:37:55,200 811 00:37:55,200 --> 00:37:58,100 Estamos colocando que a produção, e nós estamos alimentando-o ao grep, 812 00:37:58,100 --> 00:38:00,180 e por isso está cuspindo todas as instâncias de encontrar. 813 00:38:00,180 --> 00:38:02,170 814 00:38:02,170 --> 00:38:05,570 A razão pela qual eu disse que estaria confundindo é se I-- ainda é confuso. 815 00:38:05,570 --> 00:38:07,030 Se eu grep para grep. 816 00:38:07,030 --> 00:38:08,755 817 00:38:08,755 --> 00:38:11,130 Observe que é muito bonito sempre mostrando o comando eu só 818 00:38:11,130 --> 00:38:15,280 correu porque esse comando si tem grep dentro dele. 819 00:38:15,280 --> 00:38:16,580 820 00:38:16,580 --> 00:38:20,674 >> OK, então qualquer dúvida sobre qualquer coisa? 821 00:38:20,674 --> 00:38:22,340 E eu vou transferi-lo mais neste momento. 822 00:38:22,340 --> 00:38:24,690 Esperemos que este é um bom visão geral de todos os comandos 823 00:38:24,690 --> 00:38:30,100 que você não precisa ter memorizado, mas estes fazem-se 824 00:38:30,100 --> 00:38:32,950 um sólido 95% do que eu fazer na linha de comando. 825 00:38:32,950 --> 00:38:34,310 826 00:38:34,310 --> 00:38:39,140 Também tenha em mente que a linha de comando em si, bash é uma linguagem de programação, 827 00:38:39,140 --> 00:38:43,070 e assim, quando você começar a ele, você pode querer fazer as coisas realmente complexas. 828 00:38:43,070 --> 00:38:47,522 E por isso tem coisas como loops e ses, e de todos aqueles 829 00:38:47,522 --> 00:38:50,230 que você vai se acostumar com com suas linguagens de programação. 830 00:38:50,230 --> 00:38:53,660 Mas isso está além do escopo desta seção. 831 00:38:53,660 --> 00:38:55,520 832 00:38:55,520 --> 00:38:56,985 OK, então não há dúvidas? 833 00:38:56,985 --> 00:38:57,940 834 00:38:57,940 --> 00:38:58,523 ALLISON: Nenhum? 835 00:38:58,523 --> 00:38:59,450 GABRIEL: Você vai a-- 836 00:38:59,450 --> 00:39:01,158 ALLISON: Eu posso fazê-lo no meu, se quiser. 837 00:39:01,158 --> 00:39:02,626 Podemos ver o que acontece. 838 00:39:02,626 --> 00:39:03,750 ROB BOWDEN: Off para Allison. 839 00:39:03,750 --> 00:39:05,090 ALLISON: Woo. 840 00:39:05,090 --> 00:39:07,504 Você é um ato difícil de seguir, Rob. 841 00:39:07,504 --> 00:39:08,920 Você quer me mudar com você? 842 00:39:08,920 --> 00:39:10,246 Ou você tem, OK. 843 00:39:10,246 --> 00:39:13,590 844 00:39:13,590 --> 00:39:16,990 Eu vou tentar e não bastante ser tão moroso lá. 845 00:39:16,990 --> 00:39:20,619 846 00:39:20,619 --> 00:39:22,660 Vamos ver se essa vontade trabalhar do jeito que eu quero. 847 00:39:22,660 --> 00:39:26,170 848 00:39:26,170 --> 00:39:26,670 Talvez? 849 00:39:26,670 --> 00:39:27,760 850 00:39:27,760 --> 00:39:28,296 Haha! 851 00:39:28,296 --> 00:39:28,796 Sim. 852 00:39:28,796 --> 00:39:30,460 853 00:39:30,460 --> 00:39:34,066 >> Então, eu estou indo só para ir muito rapidamente através de variáveis, loops, condicionais, 854 00:39:34,066 --> 00:39:35,440 e um pouco sobre o compilador. 855 00:39:35,440 --> 00:39:38,570 Se você tem perguntas em qualquer momento, por favor, me parar. 856 00:39:38,570 --> 00:39:42,750 Esses caras vão lembrar-me de repetir sua pergunta no caso de eu esquecer, 857 00:39:42,750 --> 00:39:44,210 mas não deve ser muito ruim. 858 00:39:44,210 --> 00:39:45,850 >> Então variáveis, sim. 859 00:39:45,850 --> 00:39:48,060 Nós não temos um de seus Peças risco aqui. 860 00:39:48,060 --> 00:39:50,440 Tenho certeza que a maioria de vocês, se você teve algum tipo de jogo 861 00:39:50,440 --> 00:39:53,810 que você criou com o Scratch, você tinha manter o controle de algo como pontuação, 862 00:39:53,810 --> 00:39:55,870 ou tempo, ou algo parecido. 863 00:39:55,870 --> 00:39:58,080 Portanto, aqueles laranja brilhante peças que vemos lá 864 00:39:58,080 --> 00:40:02,630 são apenas a forma do risco de variáveis, e você vai definitivamente 865 00:40:02,630 --> 00:40:04,640 estar utilizando variáveis ao longo de seus programas. 866 00:40:04,640 --> 00:40:07,350 Se você não for, eu não sou realmente Certifique-se que você está fazendo. 867 00:40:07,350 --> 00:40:09,000 868 00:40:09,000 --> 00:40:12,215 >> Mas de qualquer forma, grande coisa, definição de variáveis. 869 00:40:12,215 --> 00:40:13,630 870 00:40:13,630 --> 00:40:16,970 Com C cada variável tem ter um tipo declarado, 871 00:40:16,970 --> 00:40:22,090 então eu dei-lhe uma muito uma geral no topo. 872 00:40:22,090 --> 00:40:24,045 Então você vai ter o seu digitar e, em seguida, o que quer 873 00:40:24,045 --> 00:40:25,420 você decide ligar para a sua variável. 874 00:40:25,420 --> 00:40:27,500 875 00:40:27,500 --> 00:40:29,680 Portanto, neste caso, o tipo em sua lista de variáveis. 876 00:40:29,680 --> 00:40:31,400 >> Temos três exemplos. 877 00:40:31,400 --> 00:40:34,439 Char de algum grau, de um A, que é o que 878 00:40:34,439 --> 00:40:36,230 Tenho certeza de que todos querem para chegar nesta classe. 879 00:40:36,230 --> 00:40:37,380 880 00:40:37,380 --> 00:40:40,670 Você pode definir múltiplos variáveis ​​em uma linha 881 00:40:40,670 --> 00:40:43,880 contanto que eles são todos do mesmo tipo, que é o nosso segundo exemplo, há 882 00:40:43,880 --> 00:40:46,409 onde você tem três variáveis, x, y, e z. 883 00:40:46,409 --> 00:40:47,200 Eles são todos os carros alegóricos. 884 00:40:47,200 --> 00:40:49,160 885 00:40:49,160 --> 00:40:53,250 E então você também pode, neste último exemplo, com pontuação int e número 886 00:40:53,250 --> 00:40:56,510 de equipes, você pode inicializa-la ali mesmo. 887 00:40:56,510 --> 00:41:01,270 >> Assim, no exemplo do meio em que só tem float de x, y, e z 888 00:41:01,270 --> 00:41:02,730 aqueles que não são inicializados ainda. 889 00:41:02,730 --> 00:41:04,140 Eles não têm nenhum valor. 890 00:41:04,140 --> 00:41:05,600 Ou eles têm valores de lixo. 891 00:41:05,600 --> 00:41:07,370 892 00:41:07,370 --> 00:41:10,790 E se você tentar usá-los, o compilador irá gritar com você. 893 00:41:10,790 --> 00:41:14,727 Você tem que declarar e tanto inicializar suas variáveis. 894 00:41:14,727 --> 00:41:16,310 Assim, nesta última, estamos fazendo as duas coisas. 895 00:41:16,310 --> 00:41:19,320 Estamos declarando variáveis de pontuação e número de equipes, 896 00:41:19,320 --> 00:41:24,134 e estamos inicializando-los, dando lhes os seus valores iniciais de 7 e 4 897 00:41:24,134 --> 00:41:24,675 respectivamente. 898 00:41:24,675 --> 00:41:26,310 899 00:41:26,310 --> 00:41:27,190 Legal. 900 00:41:27,190 --> 00:41:28,550 Todo mundo bom? 901 00:41:28,550 --> 00:41:29,470 Impressionante. 902 00:41:29,470 --> 00:41:31,690 >> OK, então algumas convenções. 903 00:41:31,690 --> 00:41:35,965 Se vocês leram através do estilo de 50, estes 904 00:41:35,965 --> 00:41:39,510 são apenas coisas que gostaríamos de você implementar no seu estilo. 905 00:41:39,510 --> 00:41:41,230 Nomes tão significativo. 906 00:41:41,230 --> 00:41:45,700 Se você começar a chamar as coisas apenas x, y, e z, especialmente 907 00:41:45,700 --> 00:41:47,902 como você entrar em longas programas, você está 908 00:41:47,902 --> 00:41:49,610 provavelmente vai confundem-se e ser 909 00:41:49,610 --> 00:41:52,930 como o que é esta variável se referindo. 910 00:41:52,930 --> 00:41:55,880 Eu não tenho idéia o que isso significa. 911 00:41:55,880 --> 00:41:59,280 >> Então, se é pra segurar uma pontuação, chamá-lo de marcar. 912 00:41:59,280 --> 00:42:05,720 Se significou para manter alguma resposta ou resultar, dar-lhe um nome como esse. 913 00:42:05,720 --> 00:42:09,920 Loops, que vamos entrar no próximo slide, 914 00:42:09,920 --> 00:42:12,985 variáveis ​​de uma única letra são muito bem. 915 00:42:12,985 --> 00:42:16,033 916 00:42:16,033 --> 00:42:18,449 ROB BOWDEN: I, j, k e são apenas convenções para loops 917 00:42:18,449 --> 00:42:22,050 que toda a gente espera que eles para ser chamado de i, j, k e. 918 00:42:22,050 --> 00:42:26,890 Você pode chamar eles-- vejo linha coluna ou linha de chamada, por vezes, 919 00:42:26,890 --> 00:42:29,450 por dois loops aninhados, e que é também uma espécie de padrão. 920 00:42:29,450 --> 00:42:31,450 Mas eu e j é completamente compreendido. 921 00:42:31,450 --> 00:42:33,670 >> ALLISON: Sim, eu e j estiver totalmente bem. 922 00:42:33,670 --> 00:42:36,250 Por razões de clareza, como em alguns dos seus conjuntos de P, 923 00:42:36,250 --> 00:42:39,745 pode fazer sentido ter mais descritivos coisas lá apenas 924 00:42:39,745 --> 00:42:40,920 manter o controle do mesmo. 925 00:42:40,920 --> 00:42:45,100 Mas eu acho que i, j, k e eu acho que a grande maioria de nós todo o uso. 926 00:42:45,100 --> 00:42:46,890 927 00:42:46,890 --> 00:42:50,340 >> ROB BOWDEN: Com estes convenções, por isso o estilo é importante. 928 00:42:50,340 --> 00:42:53,520 É um dos quatro eixos em que você está classificado, 929 00:42:53,520 --> 00:42:58,110 e é tão fácil de ir um pouco mais seu P definido no final e certificar-se 930 00:42:58,110 --> 00:42:59,770 que não há erros estilísticos. 931 00:42:59,770 --> 00:43:01,742 Então certifique-se que você está tabulação corretamente. 932 00:43:01,742 --> 00:43:03,200 Certifique-se de suas variáveis ​​são nomeados. 933 00:43:03,200 --> 00:43:04,450 Deixe alguns comentários. 934 00:43:04,450 --> 00:43:06,677 É muito fácil obter esses pontos. 935 00:43:06,677 --> 00:43:09,510 Você não tem que pensar sobre qualquer coisa, a fim de obter os pontos. 936 00:43:09,510 --> 00:43:11,093 Você não tem que entender nada. 937 00:43:11,093 --> 00:43:12,640 É só tornando-se bonita. 938 00:43:12,640 --> 00:43:14,850 >> ALLISON: Na verdade, nós tem estilo 50, que 939 00:43:14,850 --> 00:43:17,920 vai dizer onde você está sujando se se você está atrapalhando em estilo 940 00:43:17,920 --> 00:43:21,180 e dizer-lhe exatamente o que você precisa corrigir e como você precisa para corrigi-lo. 941 00:43:21,180 --> 00:43:23,900 Também é apenas bom mencionar que é política curso 942 00:43:23,900 --> 00:43:27,200 que se você estiver no escritório horas e seu código é uma bagunça, 943 00:43:27,200 --> 00:43:30,200 podemos recusar a ajudar você até que parece mais agradável. 944 00:43:30,200 --> 00:43:34,310 Então comece a direita, manter um estilo consistente, 945 00:43:34,310 --> 00:43:37,100 você também está indo só para fazer sua vida muito mais fácil quando 946 00:43:37,100 --> 00:43:38,730 você está tentando passar por depuração. 947 00:43:38,730 --> 00:43:41,510 Se você está tentando descobrir onde você está perdendo uma chaveta 948 00:43:41,510 --> 00:43:44,890 e eles estão por todo o lugar, você é apenas fazer a sua própria vida mais difícil. 949 00:43:44,890 --> 00:43:47,217 Então, ser consistente com estilo. 950 00:43:47,217 --> 00:43:48,800 Eu prometo que vai facilitar a sua vida. 951 00:43:48,800 --> 00:43:50,330 Isso vai facilitar nossas vidas. 952 00:43:50,330 --> 00:43:51,869 Todo mundo vai ser muito mais feliz. 953 00:43:51,869 --> 00:43:52,910 E é isso que você quer. 954 00:43:52,910 --> 00:43:54,192 955 00:43:54,192 --> 00:43:55,650 GABRIEL: Sua nota será maior. 956 00:43:55,650 --> 00:43:56,858 ALLISON: Sim, e sua nota. 957 00:43:56,858 --> 00:43:58,410 958 00:43:58,410 --> 00:44:01,930 Se o seu TF É como se você, tende a ser favorável. 959 00:44:01,930 --> 00:44:02,940 960 00:44:02,940 --> 00:44:05,010 Tudo bem, e depois é só o segundo ponto aqui. 961 00:44:05,010 --> 00:44:06,300 Initializations consistente. 962 00:44:06,300 --> 00:44:09,605 Então, como vimos, você pode declarar e inicializar as coisas. 963 00:44:09,605 --> 00:44:10,750 964 00:44:10,750 --> 00:44:13,180 Múltiplas variáveis ​​na mesma linha. 965 00:44:13,180 --> 00:44:17,930 Uma coisa que gostaria que você não fazer é declarar algumas variáveis 966 00:44:17,930 --> 00:44:21,360 e não inicializar-los na mesma linha que você está inicializando outros. 967 00:44:21,360 --> 00:44:23,960 >> Portanto, no caso de que feita qualquer sentido, 968 00:44:23,960 --> 00:44:29,050 temos o exemplo aqui onde estamos declarando ints 969 00:44:29,050 --> 00:44:31,180 nas variáveis ​​de bairros moedas de dez centavos e moedas de um centavo, 970 00:44:31,180 --> 00:44:34,214 mas os quartos e as moedas de um centavo não têm valor inicial. 971 00:44:34,214 --> 00:44:36,630 Nós não inicializou-los, mas no meio há 972 00:44:36,630 --> 00:44:38,600 já inicializada moedas de dez centavos a 0. 973 00:44:38,600 --> 00:44:41,650 Assim, ou fazer trimestres, moedas, moedas de um centavo. 974 00:44:41,650 --> 00:44:43,170 Ou trimestres igual a 0. 975 00:44:43,170 --> 00:44:43,930 Dimes igual a 0. 976 00:44:43,930 --> 00:44:46,810 Tostões igual a 0, ou o que quer estes valores iniciais são. 977 00:44:46,810 --> 00:44:49,800 >> Grande coisa com estilo, ser consistente. 978 00:44:49,800 --> 00:44:51,050 Em caso de dúvida, ser consistente. 979 00:44:51,050 --> 00:44:52,129 980 00:44:52,129 --> 00:44:53,420 Mas seguir o nosso guia de estilo também. 981 00:44:53,420 --> 00:44:54,710 982 00:44:54,710 --> 00:44:55,317 Legal. 983 00:44:55,317 --> 00:44:56,150 Todos bom lá? 984 00:44:56,150 --> 00:44:57,566 >> AUDIÊNCIA: Onde está o guia de estilo? 985 00:44:57,566 --> 00:45:00,800 ALLISON: O guia de estilo é on-- qual é o site? 986 00:45:00,800 --> 00:45:03,950 >> GABRIEL: Eu acho que é manual.cs50.net/-- 987 00:45:03,950 --> 00:45:04,575 ALLISON: Estilo? 988 00:45:04,575 --> 00:45:05,610 989 00:45:05,610 --> 00:45:06,390 >> GABRIEL: Estilo. 990 00:45:06,390 --> 00:45:06,920 Yep. 991 00:45:06,920 --> 00:45:07,520 >> ALLISON: Sim. 992 00:45:07,520 --> 00:45:10,150 Então, questionar, onde é o estilo 50. 993 00:45:10,150 --> 00:45:12,250 manual.cs50.net/style. 994 00:45:12,250 --> 00:45:13,639 Sim? 995 00:45:13,639 --> 00:45:16,880 >> AUDIÊNCIA: Se estamos definindo variáveis, é OK 996 00:45:16,880 --> 00:45:28,145 se colocarmos como [inaudível] como pontuação int e int objetivo. 997 00:45:28,145 --> 00:45:29,873 998 00:45:29,873 --> 00:45:35,100 Então você diria que agora nós temos chegou a defini-los juntos? 999 00:45:35,100 --> 00:45:37,640 >> ALLISON: Então questão, deverão você tem o código redundante 1000 00:45:37,640 --> 00:45:40,940 quando você está definindo variáveis ​​como int e pontuação 1001 00:45:40,940 --> 00:45:43,239 na próxima linha int jogo? 1002 00:45:43,239 --> 00:45:46,030 ROB BOWDEN: Há definitivamente casos em que o código redundante é ruim. 1003 00:45:46,030 --> 00:45:47,738 Eu não consideraria que o código redundante. 1004 00:45:47,738 --> 00:45:50,970 Eu quase nunca declarar múltipla variáveis ​​na mesma linha de cada vez. 1005 00:45:50,970 --> 00:45:53,736 E se alguma coisa, é porque geralmente eu deixar algum tipo de comentário 1006 00:45:53,736 --> 00:45:55,235 explicando o que a variável é para. 1007 00:45:55,235 --> 00:45:57,582 Então, eu vou dizer pontuação int barra barra. 1008 00:45:57,582 --> 00:45:59,350 Mantém o controle de tudo. 1009 00:45:59,350 --> 00:46:00,710 Na barra total de barra. 1010 00:46:00,710 --> 00:46:01,790 1011 00:46:01,790 --> 00:46:06,455 Por isso, é muito mais grosseiro dessa forma para colocá-los todos na mesma linha. 1012 00:46:06,455 --> 00:46:08,080 Eu nunca colocá-los na mesma linha. 1013 00:46:08,080 --> 00:46:10,580 >> ALLISON: Eu me sinto como se fosse preferência pessoal neste momento. 1014 00:46:10,580 --> 00:46:14,900 >> AUDIÊNCIA: Será que vão para loops e outras coisas também? 1015 00:46:14,900 --> 00:46:15,900 ROB BOWDEN: Como dentro? 1016 00:46:15,900 --> 00:46:18,282 Como int i é igual a 0 vírgula comprimento é igual a alguma coisa? 1017 00:46:18,282 --> 00:46:19,490 Que você não tem escolha. 1018 00:46:19,490 --> 00:46:21,850 1019 00:46:21,850 --> 00:46:25,910 Com loops a inicialização part-- para que você possa ter visto apenas 1020 00:46:25,910 --> 00:46:31,520 int i é igual a 0 ponto e vírgula i menos do que o que quer que ponto e vírgula i plus plus. 1021 00:46:31,520 --> 00:46:33,820 Isso int i é igual a 0, tecnicamente você também pode 1022 00:46:33,820 --> 00:46:35,770 fazer o que se viu antes com a sintaxe de vírgula. 1023 00:46:35,770 --> 00:46:39,790 int i é igual a 0 vírgula j é igual a 3 vírgula k é igual a 5. 1024 00:46:39,790 --> 00:46:41,610 1025 00:46:41,610 --> 00:46:44,320 Você não tem a opção de dividir que se em várias linhas, 1026 00:46:44,320 --> 00:46:46,530 e isso é normal. 1027 00:46:46,530 --> 00:46:47,780 Vê-lo há multa. 1028 00:46:47,780 --> 00:46:49,182 1029 00:46:49,182 --> 00:46:49,890 ALLISON: Awesome. 1030 00:46:49,890 --> 00:46:52,120 Bem, Segue conveniente em loops. 1031 00:46:52,120 --> 00:46:54,860 1032 00:46:54,860 --> 00:46:58,980 Então, sim, aqui temos alguns exemplos de laços que vocês viram no Scratch. 1033 00:46:58,980 --> 00:47:01,550 E, claro, todos esses pode apenas ser recriada em C. 1034 00:47:01,550 --> 00:47:04,610 E eles basicamente permitem que você repetir alguns seção de código 1035 00:47:04,610 --> 00:47:06,740 até que uma determinada condição for cumprida, o que nós vamos 1036 00:47:06,740 --> 00:47:09,198 entrar à direita depois de falar sobre laços com condicionais. 1037 00:47:09,198 --> 00:47:11,150 1038 00:47:11,150 --> 00:47:12,570 >> Portanto, temos três tipos principais. 1039 00:47:12,570 --> 00:47:17,500 Por enquanto, e fazer ao mesmo tempo, que vamos todos passar por agora. 1040 00:47:17,500 --> 00:47:18,860 Então, primeiro é para loops. 1041 00:47:18,860 --> 00:47:20,490 1042 00:47:20,490 --> 00:47:25,034 Assim, por alguma condição, executar este bloco de código. 1043 00:47:25,034 --> 00:47:27,200 Temos este pouco fria Diagrama aqui na parte inferior. 1044 00:47:27,200 --> 00:47:28,230 1045 00:47:28,230 --> 00:47:32,310 Mas, basicamente, você tem em seu favor, que a primeira linha, 1046 00:47:32,310 --> 00:47:34,240 você vai inicializar suas variáveis. 1047 00:47:34,240 --> 00:47:38,260 >> Assim como falamos, eu é igual a 0 ou i é igual a 10. 1048 00:47:38,260 --> 00:47:40,010 Tudo o que você precisa que variável a ser é 1049 00:47:40,010 --> 00:47:43,970 vai ser inicializado lá, declarada e inicializada com algum valor. 1050 00:47:43,970 --> 00:47:46,760 Então nós temos alguns condição que está acontecendo 1051 00:47:46,760 --> 00:47:48,900 para ser verificando a nossa variável contra alguma coisa. 1052 00:47:48,900 --> 00:47:55,220 Assim, no caso a caso típico em que talvez você quer que essa seção do código 1053 00:47:55,220 --> 00:47:56,620 para executar cinco vezes. 1054 00:47:56,620 --> 00:48:02,380 Então nós teríamos int i é igual a 0, e nós quer que seja quando eu for inferior a 5. 1055 00:48:02,380 --> 00:48:04,940 Então, essa condição é apenas vai verificar que cada vez. 1056 00:48:04,940 --> 00:48:07,120 Se essa condição avalia a verdade, é 1057 00:48:07,120 --> 00:48:11,162 vai executar o código, que é exatamente o que este pequeno diagrama está mostrando. 1058 00:48:11,162 --> 00:48:12,370 1059 00:48:12,370 --> 00:48:13,639 >> E assim ele executa-lo. 1060 00:48:13,639 --> 00:48:15,430 Ele atualiza uma variável, que é o que nós vemos 1061 00:48:15,430 --> 00:48:21,020 na última parte do nosso para inicialização de loop lá. 1062 00:48:21,020 --> 00:48:22,370 1063 00:48:22,370 --> 00:48:26,030 Por isso, só vou continuar fazendo isso até que essa condição não for atendida, 1064 00:48:26,030 --> 00:48:28,010 e, em seguida, ele irá sair o loop e continuar 1065 00:48:28,010 --> 00:48:29,960 seguir em frente com o resto do seu programa. 1066 00:48:29,960 --> 00:48:31,320 1067 00:48:31,320 --> 00:48:33,620 Todos bom lá? 1068 00:48:33,620 --> 00:48:34,440 Legal. 1069 00:48:34,440 --> 00:48:37,780 >> Então, aqui está um exemplo, muito semelhante a algo que eu acabei de falar sobre. 1070 00:48:37,780 --> 00:48:42,030 Então, nós apenas deseja imprimir este é o CS50 10 vezes. 1071 00:48:42,030 --> 00:48:44,540 Então você vê, temos aqui nosso para, em seguida, nós 1072 00:48:44,540 --> 00:48:47,450 inicializar a variável i para ser igual a 0. 1073 00:48:47,450 --> 00:48:50,610 Nossa condição é a verificação que é menor do que 10. 1074 00:48:50,610 --> 00:48:55,210 Assim, avaliar a verdade quando nós primeiro iniciar, e em seguida, atualiza a nossa variável 1075 00:48:55,210 --> 00:48:58,985 cada vez que ele realmente executa e imprime este é CS50. 1076 00:48:58,985 --> 00:49:00,510 1077 00:49:00,510 --> 00:49:02,180 E terminará após 10 vezes. 1078 00:49:02,180 --> 00:49:03,190 1079 00:49:03,190 --> 00:49:04,070 Legal. 1080 00:49:04,070 --> 00:49:07,130 >> Assim, enquanto loops são o próximo. 1081 00:49:07,130 --> 00:49:12,400 E como você vê aqui, só temos algum tempo a esta pergunta condition--? 1082 00:49:12,400 --> 00:49:15,238 >> AUDIÊNCIA: Como posso saltar na verdade, apenas não um número, 1083 00:49:15,238 --> 00:49:19,030 mas dois números [inaudível] i plus plus plus? 1084 00:49:19,030 --> 00:49:23,390 >> ALLISON: Então a questão é como você pode atualizar sua variável por mais de um 1085 00:49:23,390 --> 00:49:24,070 de cada vez. 1086 00:49:24,070 --> 00:49:26,860 Então eu plus plus vontade actualização por um de cada vez. 1087 00:49:26,860 --> 00:49:32,310 Se você quiser atualizá-lo por dois, você poderia fazer mais i é igual a 2. 1088 00:49:32,310 --> 00:49:34,526 >> ROB BOWDEN: Você já viu mais iguais em palestra ainda? 1089 00:49:34,526 --> 00:49:35,442 >> AUDIÊNCIA: [inaudível]. 1090 00:49:35,442 --> 00:49:37,440 1091 00:49:37,440 --> 00:49:42,110 >> ALLISON: É efetivamente o mesma coisa que i é igual a i + 2. 1092 00:49:42,110 --> 00:49:46,130 Então, ele vai levá-la e atualizá-lo por dois de cada vez. 1093 00:49:46,130 --> 00:49:49,432 Além disso, é igual é apenas algo chamamos açúcar sintático. 1094 00:49:49,432 --> 00:49:52,390 ROB BOWDEN: Sim, aqueles existem para praticamente todos os operadores aritméticos. 1095 00:49:52,390 --> 00:49:55,830 Vezes para que eu igual a dobraria o número. 1096 00:49:55,830 --> 00:50:02,590 j fractura é igual a 3 é a mesma como j é igual a j dividido por 3. 1097 00:50:02,590 --> 00:50:07,399 >> ALLISON: ou menos igual a 2 seria diminuir i por dois de cada vez. 1098 00:50:07,399 --> 00:50:08,565 ROB BOWDEN: Mesmo iguais mod. 1099 00:50:08,565 --> 00:50:09,690 1100 00:50:09,690 --> 00:50:13,270 Você ainda não viu operadores bit a bit, mas acento circunflexo é igual e comercial é igual, 1101 00:50:13,270 --> 00:50:14,560 todos os que existem. 1102 00:50:14,560 --> 00:50:19,480 >> ALLISON: Então, um monte de vezes, especialmente com seu primeiro par de conjuntos P, 1103 00:50:19,480 --> 00:50:22,527 você vai ser, provavelmente, incrementando por um, então eu plus plus, j plus plus 1104 00:50:22,527 --> 00:50:24,610 são todas as coisas que você vai para ser tipicamente utilizando. 1105 00:50:24,610 --> 00:50:28,240 Mas essa condição de atualização é totalmente sob seu controle. 1106 00:50:28,240 --> 00:50:32,310 Você pode atualizá-lo por qualquer incrementos ou de qualquer maneira que você decidir. 1107 00:50:32,310 --> 00:50:33,389 1108 00:50:33,389 --> 00:50:35,680 Talvez você ainda quer que seja um número aleatório, por vezes. 1109 00:50:35,680 --> 00:50:37,180 1110 00:50:37,180 --> 00:50:39,580 Mas sim, há muitas coisas que você pode fazer com isso. 1111 00:50:39,580 --> 00:50:41,280 Você não está restrito a i plus plus. 1112 00:50:41,280 --> 00:50:44,400 >> ROB BOWDEN: Só para você sabe que ela existe, ela também 1113 00:50:44,400 --> 00:50:46,960 existe uma outra forma, mais mais eu. 1114 00:50:46,960 --> 00:50:51,410 Então, se você está sempre em busca on-line e acontecer para ver plus plus i, 1115 00:50:51,410 --> 00:50:52,870 praticamente significa a mesma coisa. 1116 00:50:52,870 --> 00:50:54,377 1117 00:50:54,377 --> 00:50:54,960 ALLISON: Cool. 1118 00:50:54,960 --> 00:50:56,070 1119 00:50:56,070 --> 00:50:56,740 Boa? 1120 00:50:56,740 --> 00:50:57,240 Impressionante. 1121 00:50:57,240 --> 00:50:59,190 1122 00:50:59,190 --> 00:50:59,990 Assim, enquanto loops. 1123 00:50:59,990 --> 00:51:01,160 1124 00:51:01,160 --> 00:51:02,570 Muito semelhante. 1125 00:51:02,570 --> 00:51:03,737 Você tem alguma condição. 1126 00:51:03,737 --> 00:51:05,820 A principal coisa a se notar aqui é em vez de ter 1127 00:51:05,820 --> 00:51:08,540 três partes diferentes de configurar, nós temos um. 1128 00:51:08,540 --> 00:51:11,090 Nós apenas temos alguma condição que está sendo verificado. 1129 00:51:11,090 --> 00:51:14,920 E, do mesmo modo, enquanto essa condição é avaliada como verdadeira, 1130 00:51:14,920 --> 00:51:16,840 seu código vai ser executado. 1131 00:51:16,840 --> 00:51:18,870 E se é falso, terminará, movimento 1132 00:51:18,870 --> 00:51:21,930 para a próxima parte de seu programa. 1133 00:51:21,930 --> 00:51:25,780 Portanto, este é o tipo de como-- o que é um bom exemplo de busca 1134 00:51:25,780 --> 00:51:27,215 por alguma condição normal? 1135 00:51:27,215 --> 00:51:29,402 1136 00:51:29,402 --> 00:51:30,235 GABRIEL: Enquanto verdade. 1137 00:51:30,235 --> 00:51:32,110 ALLISON: Você poderia fazer enquanto verdadeiro. 1138 00:51:32,110 --> 00:51:33,510 Bem, 1 é igual a 1. 1139 00:51:33,510 --> 00:51:34,970 1140 00:51:34,970 --> 00:51:37,642 >> ROB BOWDEN: Você pode fazer while-- apenas em vez de usar um loop for, 1141 00:51:37,642 --> 00:51:39,600 você sempre pode codificar um loop em um loop while, 1142 00:51:39,600 --> 00:51:42,600 então eu maior que 0 ou enquanto i menor que 10. 1143 00:51:42,600 --> 00:51:45,200 1144 00:51:45,200 --> 00:51:46,010 >> ALLISON: Awesome. 1145 00:51:46,010 --> 00:51:50,640 E então nós fazer enquanto loops, que é ótimo para validação do usuário, onde 1146 00:51:50,640 --> 00:51:55,370 você deseja obter algo de seu usuário, ver se ele é válido, 1147 00:51:55,370 --> 00:51:57,060 e, em seguida, continuar a partir daí. 1148 00:51:57,060 --> 00:52:04,000 Então, uma das coisas que você deve saber é com um fazer enquanto é que ele está indo para executar, 1149 00:52:04,000 --> 00:52:08,000 e em seguida, ele vai voltar a executar se esta condição for satisfeita. 1150 00:52:08,000 --> 00:52:11,240 >> Então, provavelmente a melhor maneira de fazer isso é só para ver um exemplo aqui. 1151 00:52:11,240 --> 00:52:14,620 Então, como eu mencionei, o usuário validação é realmente useful-- 1152 00:52:14,620 --> 00:52:17,520 ou fazer whiles são realmente útil com a validação do usuário. 1153 00:52:17,520 --> 00:52:19,730 Então, isso é só ir para re-solicitar algum usuário 1154 00:52:19,730 --> 00:52:23,640 até que digite um número positivo, que pode ser útil para o seu conjunto P 1155 00:52:23,640 --> 00:52:24,190 esta semana. 1156 00:52:24,190 --> 00:52:25,850 1157 00:52:25,850 --> 00:52:29,480 E assim, neste caso, quando inicialmente executar este programa, 1158 00:52:29,480 --> 00:52:32,260 ele vai imprimir digite um número positivo. 1159 00:52:32,260 --> 00:52:34,810 Ele vai ficar alguns de entrada a partir do utilizador, 1160 00:52:34,810 --> 00:52:38,320 e, em seguida, ele vai verificar que a entrada contra a condição 1161 00:52:38,320 --> 00:52:39,500 que você definiu para ele. 1162 00:52:39,500 --> 00:52:41,030 >> Portanto, neste caso ele vai verificar. 1163 00:52:41,030 --> 00:52:44,190 Ele vai dizer, OK, é a nossa entrada negativa, 1164 00:52:44,190 --> 00:52:47,175 ou é 0 ou negativo, o que seria inválido. 1165 00:52:47,175 --> 00:52:48,300 Assim, pois, re-aviso. 1166 00:52:48,300 --> 00:52:50,280 1167 00:52:50,280 --> 00:52:50,780 Pergunta? 1168 00:52:50,780 --> 00:52:54,720 >> AUDIÊNCIA: É este o mesmo, em seguida, como um while se você acabou de copiar esse código 1169 00:52:54,720 --> 00:52:56,680 e colocá-lo [inaudível] enquanto loop? 1170 00:52:56,680 --> 00:52:59,620 1171 00:52:59,620 --> 00:53:05,160 >> ALLISON: Então pergunta era faria este ser o mesmo que apenas de um tempo 1172 00:53:05,160 --> 00:53:08,570 loop se fôssemos apenas copiar o loop while acima. 1173 00:53:08,570 --> 00:53:12,440 Portanto, neste caso, o loop while é indo para verificar a condição de primeira. 1174 00:53:12,440 --> 00:53:15,300 Portanto, neste caso, se tentássemos escrever apenas como um loop while, 1175 00:53:15,300 --> 00:53:18,010 diria enquanto entrada for menor do que um. 1176 00:53:18,010 --> 00:53:20,801 Mas não temos uma entrada para ele. 1177 00:53:20,801 --> 00:53:24,238 >> AUDIÊNCIA: Se você [inaudível] while incluindo este código, 1178 00:53:24,238 --> 00:53:28,166 mas então você lidou o código acima do loop while também. 1179 00:53:28,166 --> 00:53:31,052 Você só tinha este código [Inaudível] enquanto loop. 1180 00:53:31,052 --> 00:53:32,760 ALLISON: Seria a mesma coisa, sim. 1181 00:53:32,760 --> 00:53:37,110 Então, você poderia apenas write-- em vez de ter um sim fazer--. 1182 00:53:37,110 --> 00:53:37,976 1183 00:53:37,976 --> 00:53:39,350 GABRIEL: Mas isso é mais elegante. 1184 00:53:39,350 --> 00:53:41,020 ALLISON: Sim, isso é mais elegante. 1185 00:53:41,020 --> 00:53:44,560 Você pode entrar em projeto e outros enfeites, mas sim, você pode fazer isso totalmente. 1186 00:53:44,560 --> 00:53:45,850 1187 00:53:45,850 --> 00:53:47,072 Alguma outra pergunta? 1188 00:53:47,072 --> 00:53:49,240 1189 00:53:49,240 --> 00:53:50,250 OK, legal. 1190 00:53:50,250 --> 00:53:55,540 >> Então, nós conversamos muito sobre as condições com todos esses laços que temos, 1191 00:53:55,540 --> 00:53:58,615 por isso estamos realmente ficando em condições em expressões booleanas. 1192 00:53:58,615 --> 00:53:59,990 1193 00:53:59,990 --> 00:54:03,440 Novamente, você usá-los em C, assim apenas uma espécie de transição 1194 00:54:03,440 --> 00:54:06,050 a partir de mais de interface gráfica na verdade, a codificação. 1195 00:54:06,050 --> 00:54:07,480 1196 00:54:07,480 --> 00:54:09,100 >> Cool, tão grande, se. 1197 00:54:09,100 --> 00:54:11,130 1198 00:54:11,130 --> 00:54:17,070 Basicamente só nos permite introduzir alguma lógica em nosso programa e verificação 1199 00:54:17,070 --> 00:54:17,790 condições SYS. 1200 00:54:17,790 --> 00:54:22,150 Portanto, neste caso, OK, n é maior que 0? 1201 00:54:22,150 --> 00:54:24,070 Sim, é, para que possa executar este. 1202 00:54:24,070 --> 00:54:28,060 É só verificar alguns condição que você tem 1203 00:54:28,060 --> 00:54:33,565 definido, o que eu acho que todos nós estamos confortável com as condições de verificação. 1204 00:54:33,565 --> 00:54:35,975 1205 00:54:35,975 --> 00:54:36,475 Legal. 1206 00:54:36,475 --> 00:54:38,760 1207 00:54:38,760 --> 00:54:44,530 Então, se o resto é o seu outro, você pode dizer OK, se isso é verdade, 1208 00:54:44,530 --> 00:54:46,150 fazer isso primeira coisa. 1209 00:54:46,150 --> 00:54:48,720 Caso contrário, eu quero que você padrão e fazer outra coisa. 1210 00:54:48,720 --> 00:54:51,977 1211 00:54:51,977 --> 00:54:55,060 Como, neste caso, você quer escolher um número positivo ou um número negativo. 1212 00:54:55,060 --> 00:54:56,500 Você só tem duas opções. 1213 00:54:56,500 --> 00:54:59,550 Você precisa dele para executar independentemente de que suas entradas do usuário. 1214 00:54:59,550 --> 00:55:02,920 Então você pode dizer assim, é maior do que 0? 1215 00:55:02,920 --> 00:55:03,480 Legal. 1216 00:55:03,480 --> 00:55:04,480 Imprimir um número positivo. 1217 00:55:04,480 --> 00:55:06,153 Se não for, imprima uma negativa. 1218 00:55:06,153 --> 00:55:06,960 Todo mundo bom? 1219 00:55:06,960 --> 00:55:14,920 >> E então uma coisa a reconhecer é que se o se a condição for cumprida, 1220 00:55:14,920 --> 00:55:16,650 o outro nunca vai também executar. 1221 00:55:16,650 --> 00:55:19,210 Apenas uma delas irá executar de cada vez. 1222 00:55:19,210 --> 00:55:20,410 Portanto, é um trade off. 1223 00:55:20,410 --> 00:55:21,720 Você não consegue ter tanto. 1224 00:55:21,720 --> 00:55:23,566 Você quer ter a primeira condição. 1225 00:55:23,566 --> 00:55:25,440 Você quer ter a se ou a outra pessoa, não ambos. 1226 00:55:25,440 --> 00:55:26,849 1227 00:55:26,849 --> 00:55:28,890 Que, então, pode tornar as coisas ainda mais complicada, 1228 00:55:28,890 --> 00:55:31,060 porque você pode fazer se, senão ele, e depois o resto. 1229 00:55:31,060 --> 00:55:32,810 Portanto, neste caso, nós temos três condições. 1230 00:55:32,810 --> 00:55:34,830 1231 00:55:34,830 --> 00:55:38,370 E, novamente, apenas um deles é vai acabar sendo executado. 1232 00:55:38,370 --> 00:55:41,030 Então você pode estar se perguntando bem, o que se 1233 00:55:41,030 --> 00:55:45,510 tem algo que pode satisfazer dois destes. 1234 00:55:45,510 --> 00:55:49,520 Talvez o que você está introduzindo atende tanto a condição 1235 00:55:49,520 --> 00:55:51,811 para se eo else if. 1236 00:55:51,811 --> 00:55:53,060 A única coisa que vai funcionar 1237 00:55:53,060 --> 00:55:56,240 >> ALLISON: Assim que encontra algo que cumpre a condição para que 1238 00:55:56,240 --> 00:55:59,790 avalia a verdade, é o que ele vai correr e nada mais. 1239 00:55:59,790 --> 00:56:04,440 Então, se você teve é ​​esse número entre 0 e 5 para o primeiro, 1240 00:56:04,440 --> 00:56:10,530 ou é esse número entre 3 e 5 para o outro se parte, 1241 00:56:10,530 --> 00:56:15,550 e você introduzir o number-- Eu disse 0 e 5 e- 4. 1242 00:56:15,550 --> 00:56:18,110 Ele vai bater o primeiro. 1243 00:56:18,110 --> 00:56:20,960 Ele vai dizer OK, este é número entre 0 e 5. 1244 00:56:20,960 --> 00:56:22,480 Executar e sair. 1245 00:56:22,480 --> 00:56:25,340 Isso nunca vai bater essa segunda opção. 1246 00:56:25,340 --> 00:56:26,394 Legal? 1247 00:56:26,394 --> 00:56:27,250 Impressionante. 1248 00:56:27,250 --> 00:56:31,300 >> OK, também temos de switch declarações se você quiser ficar ainda more-- ou muito, 1249 00:56:31,300 --> 00:56:31,965 interruptor é o próximo. 1250 00:56:31,965 --> 00:56:33,540 1251 00:56:33,540 --> 00:56:34,990 Estou me adiantando aqui. 1252 00:56:34,990 --> 00:56:36,370 1253 00:56:36,370 --> 00:56:39,210 Mais uma vez, se múltiplos blocos onde, como eu acabei de dizer 1254 00:56:39,210 --> 00:56:45,600 é assim que você encontrar uma condição que conheceu e se uma pessoa se mais, 1255 00:56:45,600 --> 00:56:46,630 ele deixa. 1256 00:56:46,630 --> 00:56:49,560 Se você precisa verificar várias coisas, você é 1257 00:56:49,560 --> 00:56:53,000 vai querer usar isso porque ele irá verificar todos os tempo aqui. 1258 00:56:53,000 --> 00:56:58,060 Portanto, este será executado através de e se que é maior do que ou igual a 90, 1259 00:56:58,060 --> 00:56:59,160 que vai imprimir isso. 1260 00:56:59,160 --> 00:57:00,530 1261 00:57:00,530 --> 00:57:03,600 E ele será executado através de e verificar cada uma delas. 1262 00:57:03,600 --> 00:57:06,444 >> AUDIÊNCIA: Então isso seria mais bugs do que [inaudível]. 1263 00:57:06,444 --> 00:57:07,735 Será que isso é como o [inaudível]? 1264 00:57:07,735 --> 00:57:10,990 1265 00:57:10,990 --> 00:57:15,740 >> ALLISON: A questão é que isso seria buggy ou que isso faz o que quiser. 1266 00:57:15,740 --> 00:57:19,830 Ela realmente depende do que você quer do seu programa. 1267 00:57:19,830 --> 00:57:22,291 >> AUDIÊNCIA: Quero dizer, como se você colocar 90 em. 1268 00:57:22,291 --> 00:57:23,290 ALLISON: Se você colocar 90-- 1269 00:57:23,290 --> 00:57:24,206 AUDIÊNCIA: [inaudível]. 1270 00:57:24,206 --> 00:57:25,584 1271 00:57:25,584 --> 00:57:27,250 GABRIEL: Você vai conseguir duas coisas. 1272 00:57:27,250 --> 00:57:28,916 ALLISON: Você vai conseguir duas coisas. 1273 00:57:28,916 --> 00:57:29,420 Sim, dois. 1274 00:57:29,420 --> 00:57:32,420 1275 00:57:32,420 --> 00:57:33,920 >> ROB BOWDEN: Dois? 1276 00:57:33,920 --> 00:57:34,580 >> ALLISON: Não. 1277 00:57:34,580 --> 00:57:35,288 >> ROB BOWDEN: Four. 1278 00:57:35,288 --> 00:57:37,070 1279 00:57:37,070 --> 00:57:40,070 Se você colocar 90, ele vai dizer que você tenho um A, você tem um B, você tem um C, 1280 00:57:40,070 --> 00:57:40,545 você tem um D. 1281 00:57:40,545 --> 00:57:41,461 >> AUDIÊNCIA: [inaudível]. 1282 00:57:41,461 --> 00:57:42,196 1283 00:57:42,196 --> 00:57:42,820 ALLISON: Certo. 1284 00:57:42,820 --> 00:57:44,778 Então eu depende do que você quero de você programa. 1285 00:57:44,778 --> 00:57:47,050 Às vezes você precisa verificar várias coisas. 1286 00:57:47,050 --> 00:57:49,970 1287 00:57:49,970 --> 00:57:55,270 Você vai ter muito mais profunda sobre o que bom design é como você ir para a frente. 1288 00:57:55,270 --> 00:57:57,090 A coisa importante a perceber é que esta 1289 00:57:57,090 --> 00:58:01,090 irá verificar todas as quatro condições aqui. 1290 00:58:01,090 --> 00:58:05,860 Considerando que, se este fosse um caso mais se outra pessoa se mais, ele teria atingido esse primeiro caso, 1291 00:58:05,860 --> 00:58:07,950 que iria imprimir você tem um A e ser feito. 1292 00:58:07,950 --> 00:58:10,250 >> ROB BOWDEN: Mesmo se nós decidiu mudar isso para se 1293 00:58:10,250 --> 00:58:13,880 e maior do que ou igual a 90, se e maior ou igual a 80, 1294 00:58:13,880 --> 00:58:19,710 e menos do que ou igual a 89, se n maior do que ou igual a 70, 1295 00:58:19,710 --> 00:58:23,830 e n menos do que ou igual a 79, de modo que será correta. 1296 00:58:23,830 --> 00:58:27,190 Isso vai fazer o que queremos, mas ele ainda verifica cada ele. 1297 00:58:27,190 --> 00:58:34,050 >> Assim, enquanto no primeiro cenário, se nós introduzir 90 com apenas se else if else if, 1298 00:58:34,050 --> 00:58:37,300 e entramos 90, então ele vai corrigir. 1299 00:58:37,300 --> 00:58:39,615 Ele irá verificar a primeira um, de impressão que você tem um A, 1300 00:58:39,615 --> 00:58:42,590 ignorar tudo, porque já encontrei um que funciona. 1301 00:58:42,590 --> 00:58:46,360 Todos os casos são mutuamente exclusivos com base em se else if else if. 1302 00:58:46,360 --> 00:58:48,630 Então, ele vai executar o primeiro caso, então ele é feito. 1303 00:58:48,630 --> 00:58:49,790 Ele vai até o fim. 1304 00:58:49,790 --> 00:58:52,400 >> Considerando que, se mudarmos este é o que eu era 1305 00:58:52,400 --> 00:58:54,204 dizendo com menos do que ou igual a 89. 1306 00:58:54,204 --> 00:58:55,620 Ele vai verificar o primeiro. 1307 00:58:55,620 --> 00:58:56,560 Ele vai imprimir. 1308 00:58:56,560 --> 00:58:58,010 Ele vai verificar a segunda. 1309 00:58:58,010 --> 00:58:59,010 Não vai imprimir. 1310 00:58:59,010 --> 00:58:59,910 Confira o terceiro. 1311 00:58:59,910 --> 00:59:00,620 Não vai imprimir. 1312 00:59:00,620 --> 00:59:01,495 Confira o quarto. 1313 00:59:01,495 --> 00:59:02,420 Agora vai imprimir. 1314 00:59:02,420 --> 00:59:05,380 Então, nesse caso, o outro se versão, uma vez que estes casos 1315 00:59:05,380 --> 00:59:09,120 são mutuamente exclusivos, é melhor uso se else if else if, 1316 00:59:09,120 --> 00:59:12,970 porque isso vai ter menos verificações das condições 1317 00:59:12,970 --> 00:59:14,750 que esta versão. 1318 00:59:14,750 --> 00:59:17,692 1319 00:59:17,692 --> 00:59:18,400 ALLISON: Awesome. 1320 00:59:18,400 --> 00:59:20,580 Assim, uma outra coisa que pudermos fazer é instruções switch. 1321 00:59:20,580 --> 00:59:23,104 1322 00:59:23,104 --> 00:59:25,270 Basicamente um switch leva em alguns variável, 1323 00:59:25,270 --> 00:59:28,780 neste caso é n, e determina que caso a executar. 1324 00:59:28,780 --> 00:59:33,106 Portanto, este é também um onde seus casos deve ser uma espécie de mutuamente excludentes. 1325 00:59:33,106 --> 00:59:35,210 1326 00:59:35,210 --> 00:59:37,940 Portanto, neste caso, se nós temos um, que é 1327 00:59:37,940 --> 00:59:42,270 vai coincidir com o que isso variable-- seja qual for o valor de n 1328 00:59:42,270 --> 00:59:48,700 é um desses casos, de modo 1, 2, ou 3, e imprimir a linha correspondente. 1329 00:59:48,700 --> 00:59:51,870 >> E então, se você observar aqui, nós também temos um padrão, 1330 00:59:51,870 --> 00:59:54,670 que você pode pensar de como o seu mais. 1331 00:59:54,670 --> 00:59:58,510 Então, se você pegar qualquer outro número além de 1, 2, e 3, neste caso 1332 00:59:58,510 --> 00:59:59,885 ele só vai imprimir inválido. 1333 00:59:59,885 --> 01:00:03,690 1334 01:00:03,690 --> 01:00:08,390 Decidir quando usar ifs contra se elses contra interruptores vai 1335 01:00:08,390 --> 01:00:12,590 ser algo que vocês vão Veja o design inteligente como você começar a escrever 1336 01:00:12,590 --> 01:00:15,270 programas mais complicados, e Não há regras rígidas e rápidas 1337 01:00:15,270 --> 01:00:16,330 de quando usá-los. 1338 01:00:16,330 --> 01:00:17,890 Ela realmente depende de seu contexto. 1339 01:00:17,890 --> 01:00:18,590 >> ROB BOWDEN: E apenas jogá-lo lá fora 1340 01:00:18,590 --> 01:00:20,131 uma vez que é a secção mais confortável. 1341 01:00:20,131 --> 01:00:20,920 1342 01:00:20,920 --> 01:00:25,053 Switches, eles tendem a ser-- então você está limitado 1343 01:00:25,053 --> 01:00:27,430 no número de maneiras que você pode usá-los, porque ifs, 1344 01:00:27,430 --> 01:00:30,100 a condição pode ser bastante qualquer coisa que você quiser. 1345 01:00:30,100 --> 01:00:33,410 Com muda os casos têm de ser números, 1346 01:00:33,410 --> 01:00:37,770 ou tecnicamente eles podem ser caracteres, mas caracteres, como veremos, são números apenas. 1347 01:00:37,770 --> 01:00:44,250 Então, eles têm de ser números, mas interruptores são realmente mais eficiente do que se 1348 01:00:44,250 --> 01:00:50,060 else if else if, porque mesmo tomando o exemplo antes-- bem, 1349 01:00:50,060 --> 01:00:51,486 o exemplo de grau parece bom. 1350 01:00:51,486 --> 01:00:52,550 1351 01:00:52,550 --> 01:00:57,080 >> Bem, digamos que aqui, nós em vez fazer isso como uma se else if else if cenário. 1352 01:00:57,080 --> 01:01:00,930 Assim, se n é igual é igual a 1, imprimir você escolheu um número baixo. 1353 01:01:00,930 --> 01:01:04,490 Se outra pessoa se n é igual a igual a 2, você escolheu um número médio. 1354 01:01:04,490 --> 01:01:06,550 Else if iguais é igual a 3, de alta. 1355 01:01:06,550 --> 01:01:08,060 Else inválido. 1356 01:01:08,060 --> 01:01:09,820 >> Então, vamos dizer que foi o nosso cenário. 1357 01:01:09,820 --> 01:01:14,060 Então, digamos que entramos 4, por isso, esperamos inválido. 1358 01:01:14,060 --> 01:01:17,410 A maneira que se mais se outra pessoa Se abordagem vai funcionar é 1359 01:01:17,410 --> 01:01:18,740 verifica a primeira condição. 1360 01:01:18,740 --> 01:01:19,776 Não está satisfeito. 1361 01:01:19,776 --> 01:01:21,150 Por isso, verifique a segunda condição. 1362 01:01:21,150 --> 01:01:21,940 Não está satisfeito. 1363 01:01:21,940 --> 01:01:23,023 Confira a terceira condição. 1364 01:01:23,023 --> 01:01:23,640 Não satisfeito. 1365 01:01:23,640 --> 01:01:26,650 Então vamos para a outra pessoa e imprimir inválido. 1366 01:01:26,650 --> 01:01:30,169 >> A forma como as obras de switch é ele compila para baixo 1367 01:01:30,169 --> 01:01:31,960 em que vamos para chamar uma mesa de salto. 1368 01:01:31,960 --> 01:01:33,180 1369 01:01:33,180 --> 01:01:37,120 A idéia principal é que quando você entra 4, 1370 01:01:37,120 --> 01:01:39,090 ele pode ir imediatamente para o padrão. 1371 01:01:39,090 --> 01:01:41,460 Ele não precisa verificar am I caso 1? 1372 01:01:41,460 --> 01:01:42,350 Nope não é isso. 1373 01:01:42,350 --> 01:01:42,850 Caso 2? 1374 01:01:42,850 --> 01:01:43,240 Não. 1375 01:01:43,240 --> 01:01:43,770 Caso 3? 1376 01:01:43,770 --> 01:01:44,270 Não. 1377 01:01:44,270 --> 01:01:45,090 Padrão. 1378 01:01:45,090 --> 01:01:47,610 OK, este deve ser o lugar onde eu quer, e em seguida, executar isso. 1379 01:01:47,610 --> 01:01:49,590 Não, ele salta imediatamente para o padrão. 1380 01:01:49,590 --> 01:01:51,900 Ou eu entro 2, é imediatamente indo para ir para o 2 1381 01:01:51,900 --> 01:01:54,060 sem a necessidade de passar por um caso. 1382 01:01:54,060 --> 01:01:57,820 >> Assim, desta forma, realisticamente hoje em dia isso é 1383 01:01:57,820 --> 01:02:00,250 Não muito de um ganho de eficiência. 1384 01:02:00,250 --> 01:02:02,880 Normalmente, os computadores são bastante rápido, e isso não é assim tão grande. 1385 01:02:02,880 --> 01:02:07,270 Mas é o caso de que interruptores são mais rápidos. 1386 01:02:07,270 --> 01:02:10,380 Se você está realmente tentando para otimizar, usar um switch. 1387 01:02:10,380 --> 01:02:11,980 1388 01:02:11,980 --> 01:02:12,710 >> ALLISON: Cool. 1389 01:02:12,710 --> 01:02:15,270 E depois temos operador ternário. 1390 01:02:15,270 --> 01:02:19,470 Então eu sei que eu mencionei anteriormente a palavra açúcar sintático. 1391 01:02:19,470 --> 01:02:24,160 Então é só coisas que fazem seu código muito mais conciso. 1392 01:02:24,160 --> 01:02:25,590 Portanto, este é um desses casos. 1393 01:02:25,590 --> 01:02:31,430 >> Então operador ternário é ponto de interrogação cólon, como vemos na seqüência de linha 1394 01:02:31,430 --> 01:02:35,810 s é igual a n maior do que 100 ponto de interrogação baixo alto cólon. 1395 01:02:35,810 --> 01:02:41,800 Então, basicamente, como isso funciona é que é a n maior do que 100 é uma condição. 1396 01:02:41,800 --> 01:02:43,674 Então eu acho que pode fazer sentido. 1397 01:02:43,674 --> 01:02:44,840 É como fazer uma pergunta. 1398 01:02:44,840 --> 01:02:47,320 É dizer oh, é n superior a 100. 1399 01:02:47,320 --> 01:02:48,340 Quem sabe? 1400 01:02:48,340 --> 01:02:50,750 E se for avaliado como verdade, ele vai dar-lhe 1401 01:02:50,750 --> 01:02:54,270 a primeira coisa que é listados lá, que é alta. 1402 01:02:54,270 --> 01:02:55,840 Caso contrário, ele vai lhe dar baixa. 1403 01:02:55,840 --> 01:03:01,210 Portanto, este é apenas um realmente simples e maneira eficiente de fazer como uma pessoa se. 1404 01:03:01,210 --> 01:03:02,780 Isso é tudo o que é isso. 1405 01:03:02,780 --> 01:03:07,450 >> E se fôssemos escrever este como se outra pessoa condicional, 1406 01:03:07,450 --> 01:03:12,480 seria se n for maior de 100, o retorno alto. 1407 01:03:12,480 --> 01:03:14,220 Caso contrário, retornar baixo. 1408 01:03:14,220 --> 01:03:17,570 Este é apenas um muito mais forma concisa de escrevê-lo. 1409 01:03:17,570 --> 01:03:27,090 >> ROB BOWDEN: Então esse exemplo específico é sempre que você está fazendo algo 1410 01:03:27,090 --> 01:03:30,190 assim, este é o padrão onde eu uso ternário com muita freqüência. 1411 01:03:30,190 --> 01:03:31,540 1412 01:03:31,540 --> 01:03:35,460 Então, nós não falamos sobre escopo ainda mas eu odeio ver ponto e vírgula string s. 1413 01:03:35,460 --> 01:03:39,150 Se n superior a 100, s é igual a alta. 1414 01:03:39,150 --> 01:03:40,660 Else, s é igual a baixo. 1415 01:03:40,660 --> 01:03:45,070 Assim que o padrão, essas cinco linhas de código, literalmente, 100% do tempo 1416 01:03:45,070 --> 01:03:49,800 pode ser transferido para o estava lá em cima com um ternário. 1417 01:03:49,800 --> 01:03:52,340 Assim, o ternário, uma linha de código. 1418 01:03:52,340 --> 01:03:54,640 O caso mais, cinco. 1419 01:03:54,640 --> 01:03:56,910 Isso é um exemplo que eu apontar a cada vez. 1420 01:03:56,910 --> 01:03:59,250 Isso seria ótimo lugar para um operador ternário. 1421 01:03:59,250 --> 01:04:00,647 É tão limpo. 1422 01:04:00,647 --> 01:04:01,980 Mas as pessoas tendem a não usá-lo. 1423 01:04:01,980 --> 01:04:06,140 1424 01:04:06,140 --> 01:04:08,030 >> ALLISON: Leve embora Gabe. 1425 01:04:08,030 --> 01:04:11,110 >> GABRIEL: Então agora vocês todos aprendido em aula esta semana 1426 01:04:11,110 --> 01:04:13,420 que tudo numa computador é binário, certo? 1427 01:04:13,420 --> 01:04:14,570 Assim como as lâmpadas aqui. 1428 01:04:14,570 --> 01:04:16,492 Você pode ser ligado e desligado. 1429 01:04:16,492 --> 01:04:18,450 E por tudo, quero dizer literalmente tudo. 1430 01:04:18,450 --> 01:04:24,272 Alguns números e caracteres e strings, e até mesmo o código que você escreve quando 1431 01:04:24,272 --> 01:04:26,480 ele é compilado para máquina código e coisas assim, 1432 01:04:26,480 --> 01:04:29,230 por isso, tudo se resume a 0 e 1 ". 1433 01:04:29,230 --> 01:04:34,540 >> E assim, quando estamos lidando com números inteiros, os quais 1434 01:04:34,540 --> 01:04:38,000 é algo que é tecnicamente muito simples, que deve ser capaz de fazer coisas 1435 01:04:38,000 --> 01:04:40,630 como adicioná-los, o que é provavelmente uma das coisas mais simples 1436 01:04:40,630 --> 01:04:42,300 você pode fazer para dois inteiros, certo? 1437 01:04:42,300 --> 01:04:47,410 Assim, a adição ea subtração funciona como ele funciona em notação decimal, 1438 01:04:47,410 --> 01:04:50,780 exceto aqui é binário, certo? 1439 01:04:50,780 --> 01:04:52,090 Por isso, é na base dois. 1440 01:04:52,090 --> 01:04:54,070 Então adicione 1 mais 1. 1441 01:04:54,070 --> 01:04:57,020 Isso dá a 0, e 1 transporta mais. 1442 01:04:57,020 --> 01:05:01,335 E apenas continuar fazendo isso, então agora vem a pergunta mais interessante. 1443 01:05:01,335 --> 01:05:03,730 1444 01:05:03,730 --> 01:05:07,710 >> Nós sabemos como representar todos números inteiros positivos, em que o computador 1445 01:05:07,710 --> 01:05:09,870 mas vamos fazer este exercício. 1446 01:05:09,870 --> 01:05:15,240 Finja que vocês estão todos em 1960 ou algo tentando criar um computador, 1447 01:05:15,240 --> 01:05:19,950 e você tem que vir acima de uma maneira de armazenar menos 1, 1448 01:05:19,950 --> 01:05:22,554 por exemplo, ou qualquer menos inteiro para esse assunto. 1449 01:05:22,554 --> 01:05:23,470 Como você faria isso? 1450 01:05:23,470 --> 01:05:27,820 1451 01:05:27,820 --> 01:05:29,220 Qualquer idéias? 1452 01:05:29,220 --> 01:05:31,302 Basta jogar qualquer coisa em mim. 1453 01:05:31,302 --> 01:05:32,264 Sim? 1454 01:05:32,264 --> 01:05:39,480 >> AUDIÊNCIA: [inaudível] designar uma especial se o seu [inaudível]. 1455 01:05:39,480 --> 01:05:42,590 >> GABRIEL: Você pode designar uma pouco especial, que irá ser 0 ou 1. 1456 01:05:42,590 --> 01:05:45,590 Vamos dizer que um se é positivo e 0 se for negativo. 1457 01:05:45,590 --> 01:05:48,171 E, em seguida, o resto do bit é apenas para armazenar o número. 1458 01:05:48,171 --> 01:05:48,670 Legal. 1459 01:05:48,670 --> 01:05:49,990 Então, isso é uma idéia muito boa. 1460 01:05:49,990 --> 01:05:51,550 Temos, eu não sei, 200. 1461 01:05:51,550 --> 01:05:54,720 E se o primeiro bit é ligado, então é mais 200. 1462 01:05:54,720 --> 01:05:57,270 Se ele está desligado, é de menos de 200. 1463 01:05:57,270 --> 01:05:58,380 Legal. 1464 01:05:58,380 --> 01:06:01,350 >> Existe apenas um pequeno com este problema, 1465 01:06:01,350 --> 01:06:05,370 que é, se tentarmos resumir as coisas. 1466 01:06:05,370 --> 01:06:18,910 Então, imagine que temos 11111 aqui, e estamos somando isso com 00100 o que quer. 1467 01:06:18,910 --> 01:06:21,630 Se os dois forem positivos, isso é bom. 1468 01:06:21,630 --> 01:06:24,470 Mas, então, se um dos eles é negativo, como 1469 01:06:24,470 --> 01:06:27,410 vamos dizer que este pouco aqui é aquele que é responsável 1470 01:06:27,410 --> 01:06:31,390 for-- eu vou fazer uma separate-- assim que este significa que este número aqui 1471 01:06:31,390 --> 01:06:31,970 é positivo. 1472 01:06:31,970 --> 01:06:34,450 Isto significa que uma esta número aqui é negativo, certo? 1473 01:06:34,450 --> 01:06:37,010 >> Mas, então, quando você está indo para somá-los, você 1474 01:06:37,010 --> 01:06:40,180 precisa de uma instrução if dizendo oh se isso é 0, 1475 01:06:40,180 --> 01:06:43,479 então meu soma será algo diferente, certo? 1476 01:06:43,479 --> 01:06:45,270 Portanto, há um pouco mais inteligente maneira de fazer 1477 01:06:45,270 --> 01:06:48,520 que, o que é chamado de complemento de dois. 1478 01:06:48,520 --> 01:06:52,350 Então, basicamente o que nós fazer é definirmos menos 1 1479 01:06:52,350 --> 01:06:57,250 ser a coisa que se somarmos a 1 nos dá 0. 1480 01:06:57,250 --> 01:06:59,470 1481 01:06:59,470 --> 01:07:00,860 Deixe-me repetir isso. 1482 01:07:00,860 --> 01:07:03,280 Então, vamos dizer que isso aqui é um. 1483 01:07:03,280 --> 01:07:08,110 1484 01:07:08,110 --> 01:07:13,570 Qual é a coisa que naturalmente em inteiros positivos 1485 01:07:13,570 --> 01:07:15,570 adicionado ao que nos dá 0? 1486 01:07:15,570 --> 01:07:19,150 1487 01:07:19,150 --> 01:07:21,030 E se a gente tentar adicioná-lo a este número? 1488 01:07:21,030 --> 01:07:22,830 1489 01:07:22,830 --> 01:07:28,032 Nós estamos indo para have-- OK, então vamos adicionar. 1490 01:07:28,032 --> 01:07:32,820 1491 01:07:32,820 --> 01:07:38,065 Nós vamos ter 1 mais 1 é 0, e em seguida, ele carrega. 1492 01:07:38,065 --> 01:07:40,160 1493 01:07:40,160 --> 01:07:45,490 E então nós estamos indo para obter 0 novamente. 1494 01:07:45,490 --> 01:07:47,730 1495 01:07:47,730 --> 01:07:48,820 Estou ficando confuso. 1496 01:07:48,820 --> 01:07:51,670 E você está indo para obter 0 e 0 e 0 e 0 e 0 e 0. 1497 01:07:51,670 --> 01:07:52,450 Lotes de 0 do. 1498 01:07:52,450 --> 01:07:56,240 >> No último, nós não estamos vai ser capaz de levá-lo mais, 1499 01:07:56,240 --> 01:07:59,614 porque vamos dizer que estamos lidando apenas com um byte, então apenas 8 bits. 1500 01:07:59,614 --> 01:08:02,780 Então, o que o computador faz por padrão é apenas se esquece de que [inaudível], 1501 01:08:02,780 --> 01:08:03,279 Ok? 1502 01:08:03,279 --> 01:08:04,530 1503 01:08:04,530 --> 01:08:06,880 Então é isso que é chamado complemento de dois. 1504 01:08:06,880 --> 01:08:15,180 Nós simplesmente definir menos 1 para ser o coisa aqui que se você acrescentar que para um 1505 01:08:15,180 --> 01:08:15,995 lhe daria 0. 1506 01:08:15,995 --> 01:08:17,609 1507 01:08:17,609 --> 01:08:20,180 E isso é muito legal porque nós realmente não 1508 01:08:20,180 --> 01:08:24,090 precisam tarde para implementar um tipo diferente de soma 1509 01:08:24,090 --> 01:08:26,590 dependendo se é um negativo ou um número positivo. 1510 01:08:26,590 --> 01:08:27,465 Será que isso faz sentido? 1511 01:08:27,465 --> 01:08:28,740 1512 01:08:28,740 --> 01:08:32,370 >> Então, uma coisa que nós fazemos aqui, a fim de converter 1513 01:08:32,370 --> 01:08:38,550 entre um positivo e um negativo inteiro é então jogarmos tudo, 1514 01:08:38,550 --> 01:08:40,930 e, então, adicione 1 a esse número. 1515 01:08:40,930 --> 01:08:43,140 Se você tentar fazer isso sozinho sobre um pedaço de papel, 1516 01:08:43,140 --> 01:08:44,681 você vai ver que faz sentido. 1517 01:08:44,681 --> 01:08:51,000 Mas se eu tomar esse número aqui, este é cinco. 1518 01:08:51,000 --> 01:08:54,859 Então, se eu virar tudo aqui, portanto, 1, 1, 1, 1, 1. 1519 01:08:54,859 --> 01:08:55,880 1520 01:08:55,880 --> 01:08:57,830 Virar, flip, flip. 1521 01:08:57,830 --> 01:09:00,130 E então eu adiciono um a ele. 1522 01:09:00,130 --> 01:09:02,750 Eu vou ter exatamente menos 5. 1523 01:09:02,750 --> 01:09:03,250 Ok? 1524 01:09:03,250 --> 01:09:06,220 >> Este tipo de faz sentido, porque se tentar resumir isso com o número de 1525 01:09:06,220 --> 01:09:10,229 que tínhamos antes, o que foi-- vamos virar isso de novo. 1526 01:09:10,229 --> 01:09:12,999 Era 101 e muita 0 do. 1527 01:09:12,999 --> 01:09:13,795 1528 01:09:13,795 --> 01:09:15,670 Se você tentar adicioná-los dois números juntos, 1529 01:09:15,670 --> 01:09:16,961 você vai ter exatamente 0. 1530 01:09:16,961 --> 01:09:18,920 1531 01:09:18,920 --> 01:09:19,460 Está bem. 1532 01:09:19,460 --> 01:09:19,884 Alguma pergunta? 1533 01:09:19,884 --> 01:09:20,759 >> AUDIÊNCIA: [inaudível] 1534 01:09:20,759 --> 01:09:25,790 1535 01:09:25,790 --> 01:09:27,280 >> GABRIEL: O que você quer dizer? 1536 01:09:27,280 --> 01:09:29,240 >> AUDIÊNCIA: Negativo para positivo [inaudível]. 1537 01:09:29,240 --> 01:09:33,215 >> GABRIEL: Não, você virar e você adicionar um sempre. 1538 01:09:33,215 --> 01:09:34,081 1539 01:09:34,081 --> 01:09:34,580 Sim. 1540 01:09:34,580 --> 01:09:36,910 1541 01:09:36,910 --> 01:09:39,680 OK, então personagens também codificado binários. 1542 01:09:39,680 --> 01:09:42,649 Temos a tabela ASCII, como você também viu na aula, certo? 1543 01:09:42,649 --> 01:09:45,040 Então, é basicamente um mapeamento das coisas. 1544 01:09:45,040 --> 01:09:50,960 E aqui eu não posso enfatizar o suficiente que, para um computador, e um 65 1545 01:09:50,960 --> 01:09:52,770 são literalmente a mesma coisa. 1546 01:09:52,770 --> 01:10:03,430 Então, se eu escrever algo como carvão c é igual a um, eu poderia ao mesmo tempo 1547 01:10:03,430 --> 01:10:06,890 basta escrever 65 aqui, e seria exatamente o mesmo, OK? 1548 01:10:06,890 --> 01:10:08,470 Não há diferença alguma. 1549 01:10:08,470 --> 01:10:12,420 >> Nós geralmente tendem a colocar personagens em variáveis ​​do tipo. 1550 01:10:12,420 --> 01:10:16,770 Char, não porque eles são essencialmente feito para isso, mas porque 1551 01:10:16,770 --> 01:10:18,050 da convenção humana. 1552 01:10:18,050 --> 01:10:22,410 Mas você pode apenas lidar com números inteiros em vez de variáveis ​​do tipo char, 1553 01:10:22,410 --> 01:10:23,490 e você vai ficar bem. 1554 01:10:23,490 --> 01:10:28,410 A única diferença real entre um char c e um i int 1555 01:10:28,410 --> 01:10:31,960 é um inteiro que tem quatro bytes de mais sistemas, enquanto um char tem um byte. 1556 01:10:31,960 --> 01:10:33,070 1557 01:10:33,070 --> 01:10:35,460 Eles são, essencialmente, o mesma coisa em termos de dados. 1558 01:10:35,460 --> 01:10:36,990 1559 01:10:36,990 --> 01:10:37,990 Então, o que vai imprimir aqui? 1560 01:10:37,990 --> 01:10:43,780 Aqui nós estamos imprimindo um dígito usando printf com mais 1, e apenas como números inteiros, 1561 01:10:43,780 --> 01:10:46,240 caracteres pode ser resumida, de forma caracteres também podem ser somados. 1562 01:10:46,240 --> 01:10:47,890 Portanto, este é exatamente 65. 1563 01:10:47,890 --> 01:10:49,950 Portanto, não vai ser 66, e aqui temos 1564 01:10:49,950 --> 01:10:56,860 65 mais um pouco menos grande A, que será, eu realmente não sei. 1565 01:10:56,860 --> 01:11:00,900 Mas vai ser exatamente a diferença entre as letras maiúsculas 1566 01:11:00,900 --> 01:11:07,800 e as letras mais pequenas e, por isso nós estamos indo para obter um pequeno, certo? 1567 01:11:07,800 --> 01:11:08,300 Sim. 1568 01:11:08,300 --> 01:11:11,740 Então, isso vai imprimir uma personagem que é exatamente este. 1569 01:11:11,740 --> 01:11:12,260 Boa? 1570 01:11:12,260 --> 01:11:12,860 Alguma pergunta? 1571 01:11:12,860 --> 01:11:16,320 1572 01:11:16,320 --> 01:11:19,430 >> Aqui nós temos um monte de diferente tipos de variáveis ​​numéricas. 1573 01:11:19,430 --> 01:11:20,620 Nós já falamos sobre int. 1574 01:11:20,620 --> 01:11:21,740 1575 01:11:21,740 --> 01:11:27,760 Float é apenas uma maneira a-- isto é realmente engraçado, porque quando eu aprendi 1576 01:11:27,760 --> 01:11:32,320 programar para trás no dia com Python, o primeiro programa que eu já 1577 01:11:32,320 --> 01:11:37,480 tentei escrever, vi que havia uma Tipo de chamada e um tipo chamado float. 1578 01:11:37,480 --> 01:11:39,800 E a bóia foi para todos os números reais. 1579 01:11:39,800 --> 01:11:43,290 Então eu perguntei por que Eu nunca usar um int, então? 1580 01:11:43,290 --> 01:11:45,590 Porque se eu posso usar tudo números reais com uma bóia, 1581 01:11:45,590 --> 01:11:47,120 Gostaria apenas de deixar de usar ints, certo? 1582 01:11:47,120 --> 01:11:49,550 Porque os números reais são bem como mais genérico. 1583 01:11:49,550 --> 01:11:51,820 1584 01:11:51,820 --> 01:11:54,060 >> Acontece que este é não é o caso em computadores 1585 01:11:54,060 --> 01:11:58,480 porque eles são essencialmente coisas diferentes. 1586 01:11:58,480 --> 01:12:01,470 Então, inteiros e floats, o operações que você faz para eles 1587 01:12:01,470 --> 01:12:04,739 são essencialmente diferentes, porque da maneira que eles são armazenados, OK? 1588 01:12:04,739 --> 01:12:07,280 Nós vamos falar um pouco pouco mais sobre isso em um segundo. 1589 01:12:07,280 --> 01:12:09,110 >> Assim dupla é apenas uma maior flutuação. 1590 01:12:09,110 --> 01:12:12,830 Normalmente, na maioria dos sistemas, uma bóia é de quatro bytes, como um int. 1591 01:12:12,830 --> 01:12:15,440 E um casal é de oito bytes. 1592 01:12:15,440 --> 01:12:21,450 Um longo tempo é, na verdade, apenas um símbolo que você adiciona a um tipo como int. 1593 01:12:21,450 --> 01:12:24,040 Você diz long long int como este. 1594 01:12:24,040 --> 01:12:28,550 Longo tempo int x para torná-lo mais tempo. 1595 01:12:28,550 --> 01:12:32,310 Assim, na maioria dos sistemas, que dará oito bytes em vez dos habituais quatro. 1596 01:12:32,310 --> 01:12:35,620 E você pode realmente deixar cair a no, por isso pode apenas dizer longo, longo, 1597 01:12:35,620 --> 01:12:37,240 e que funciona também, OK? 1598 01:12:37,240 --> 01:12:42,850 Você também pode fazer outras coisas como int sem sinal, ou ainda apenas não assinado 1599 01:12:42,850 --> 01:12:43,680 também funcionaria. 1600 01:12:43,680 --> 01:12:49,370 E que faria x ser uma variável como tudo é positivo, 1601 01:12:49,370 --> 01:12:53,231 então você não pode realmente ter efeitos negativos números na forma que vimos até aqui. 1602 01:12:53,231 --> 01:12:56,484 1603 01:12:56,484 --> 01:12:58,650 Então, seguindo maravilhoso ponto e precisão flutuante. 1604 01:12:58,650 --> 01:13:01,890 Essa é uma das razões pelas quais você quer usar ints em vez de carros alegóricos, 1605 01:13:01,890 --> 01:13:04,370 porque ints são 100% precisas, certo? 1606 01:13:04,370 --> 01:13:06,170 É exatamente esse número. 1607 01:13:06,170 --> 01:13:11,910 Para pontos flutuantes, se você dizem resposta é igual a 1 sobre 10-- 1608 01:13:11,910 --> 01:13:14,690 Acontece que eu tenho neste exato aqui programa, float.c. 1609 01:13:14,690 --> 01:13:16,390 1610 01:13:16,390 --> 01:13:19,420 Que imprime até 20 casas decimais. 1611 01:13:19,420 --> 01:13:23,270 1 dividido por 10, e que geralmente é de 0,1, certo? 1612 01:13:23,270 --> 01:13:27,910 Mas aqui se fizermos flutuar e depois executá-lo, 1613 01:13:27,910 --> 01:13:30,320 vemos que não é exatamente 0,1. 1614 01:13:30,320 --> 01:13:33,570 É algo 0,149. 1615 01:13:33,570 --> 01:13:35,570 >> E por que isso? 1616 01:13:35,570 --> 01:13:40,390 Porque você não pode realmente representar cada único número real possível na memória 1617 01:13:40,390 --> 01:13:42,730 porque existem uncountably muitos deles. 1618 01:13:42,730 --> 01:13:48,360 Então, nós estamos tecnicamente só é capaz de representam uma quantidade finita deles 1619 01:13:48,360 --> 01:13:50,470 com uma quantidade finita de dados. 1620 01:13:50,470 --> 01:13:52,050 Mas é realmente interessante. 1621 01:13:52,050 --> 01:13:54,920 Agora isso levanta a questão de como você faria 1622 01:13:54,920 --> 01:13:59,299 ir sobre a representação esta com pedaços, certo? 1623 01:13:59,299 --> 01:14:00,340 Então, como carros alegóricos são armazenados? 1624 01:14:00,340 --> 01:14:01,970 1625 01:14:01,970 --> 01:14:03,730 Com inteiros foi fácil. 1626 01:14:03,730 --> 01:14:06,690 Mas, com carros alegóricos que você quer para maximizar a gama, 1627 01:14:06,690 --> 01:14:10,530 e você quer ser capaz de representar números enormes e muito pequenos números como 1628 01:14:10,530 --> 01:14:14,210 0.000001, ao mesmo tempo. 1629 01:14:14,210 --> 01:14:15,180 Então, novamente, mesmo jogo. 1630 01:14:15,180 --> 01:14:20,470 Alguém tem alguma idéia de como poderíamos ir sobre a representação flutuador na memória? 1631 01:14:20,470 --> 01:14:26,820 1632 01:14:26,820 --> 01:14:27,970 Basta jogar qualquer coisa. 1633 01:14:27,970 --> 01:14:29,930 1634 01:14:29,930 --> 01:14:30,856 Sim, por favor. 1635 01:14:30,856 --> 01:14:33,552 >> AUDIÊNCIA: [inaudível] como se fosse dois inteiros e um 1636 01:14:33,552 --> 01:14:36,890 sendo o [inaudível] e um ser tudo depois do ponto decimal. 1637 01:14:36,890 --> 01:14:37,640 GABRIEL: OK, legal. 1638 01:14:37,640 --> 01:14:40,300 Então dois inteiros diferentes. 1639 01:14:40,300 --> 01:14:45,260 Você pode ter 12,45, de modo que é de 12 e 45. 1640 01:14:45,260 --> 01:14:45,890 Nice. 1641 01:14:45,890 --> 01:14:46,973 O que ere você vai dizer? 1642 01:14:46,973 --> 01:14:48,420 1643 01:14:48,420 --> 01:14:49,430 A mesma coisa? 1644 01:14:49,430 --> 01:14:49,930 Sim? 1645 01:14:49,930 --> 01:14:55,630 >> AUDIÊNCIA: [inaudível] notação onde você separar a base. 1646 01:14:55,630 --> 01:14:58,910 >> GABRIEL: A notação científica, sim que é geralmente o que acontece. 1647 01:14:58,910 --> 01:15:01,350 Então é isso que é chamado de mantissa. 1648 01:15:01,350 --> 01:15:06,490 Isso é o que é realmente o número, e, em seguida, o expoente 1649 01:15:06,490 --> 01:15:08,780 é apenas onde a vírgula é, certo? 1650 01:15:08,780 --> 01:15:13,720 Então isso vai ser algo da forma 1, 2, 3, 4, 5 vezes 10 1651 01:15:13,720 --> 01:15:15,000 para o 4 menos. 1652 01:15:15,000 --> 01:15:17,800 Eu só percebi isso-- sim, exatamente. 1653 01:15:17,800 --> 01:15:23,372 E então este 10 ao menos 4 é vai definir onde a vírgula é, OK? 1654 01:15:23,372 --> 01:15:24,330 No Brasil, usamos vírgula. 1655 01:15:24,330 --> 01:15:26,795 Aqui vocês usar um ponto. 1656 01:15:26,795 --> 01:15:27,640 Assim, um ponto. 1657 01:15:27,640 --> 01:15:28,860 1658 01:15:28,860 --> 01:15:34,840 >> E isso é legal, porque então você pode concentrar lotes de seus bits sobre esse cara 1659 01:15:34,840 --> 01:15:40,863 aqui, na mantissa, e então isso é vai ser a sua precisão real. 1660 01:15:40,863 --> 01:15:41,920 1661 01:15:41,920 --> 01:15:47,175 E você pode fazer isso em decimal ou com base no sistema binário. 1662 01:15:47,175 --> 01:15:49,781 Existem diferentes maneiras de implementar isso. 1663 01:15:49,781 --> 01:15:50,280 Perguntas? 1664 01:15:50,280 --> 01:15:55,918 1665 01:15:55,918 --> 01:15:56,418 Sim? 1666 01:15:56,418 --> 01:15:57,508 1667 01:15:57,508 --> 01:15:59,841 AUDIÊNCIA: Quantos lugares após o decimal [inaudível]? 1668 01:15:59,841 --> 01:16:05,240 1669 01:16:05,240 --> 01:16:12,610 >> GABRIEL: Essa é uma questão complicada, porque nunca é realmente 100% preciso, 1670 01:16:12,610 --> 01:16:15,680 porque como você vê aqui, para alguns números é 100% preciso. 1671 01:16:15,680 --> 01:16:20,350 Eu acredito que se nós colocamos 0,5 aqui, que vai ser 100% preciso. 1672 01:16:20,350 --> 01:16:22,220 Vai ser 0,500000. 1673 01:16:22,220 --> 01:16:24,170 Então, nesse caso, ele é perfeito. 1674 01:16:24,170 --> 01:16:27,330 Mas em outros casos, é muito menos perfeito. 1675 01:16:27,330 --> 01:16:35,010 Na minha experiência, como até quatro, cinco casas decimais é bastante preciso. 1676 01:16:35,010 --> 01:16:38,300 Se você usar um casal, que vai ser muito mais preciso do que isso, OK? 1677 01:16:38,300 --> 01:16:42,750 >> ROB BOWDEN: Então, só para jogar mais algum contexto em carros alegóricos, 1678 01:16:42,750 --> 01:16:46,320 Eu nunca me lembro 100% como o especificação de carros alegóricos realmente funciona, 1679 01:16:46,320 --> 01:16:52,660 mas eu faço você lembre-se sempre que flutua começa a ficar confuso. 1680 01:16:52,660 --> 01:16:55,460 1681 01:16:55,460 --> 01:17:00,930 Assim, a idéia é que quando você começa realmente, números realmente grandes ou realmente, realmente 1682 01:17:00,930 --> 01:17:03,470 pequenos números, começamos ficando cada vez pior 1683 01:17:03,470 --> 01:17:05,860 na diferenciação entre dois carros alegóricos próximos. 1684 01:17:05,860 --> 01:17:09,180 >> Então, como eu gosto de pensar é com ponto flutuante imprecisão, 1685 01:17:09,180 --> 01:17:11,890 existem dois flutuadores que se eu tentar especificá-los 1686 01:17:11,890 --> 01:17:15,150 em C, apesar do facto eles são números diferentes, 1687 01:17:15,150 --> 01:17:17,340 eles vão ser interpretado como o mesmo número, 1688 01:17:17,340 --> 01:17:19,006 porque não podemos armazená-los de forma diferente. 1689 01:17:19,006 --> 01:17:20,540 Precisamos usar os mesmos bits. 1690 01:17:20,540 --> 01:17:23,220 E assim, quando nós começamos a realmente, realmente grande número, 1691 01:17:23,220 --> 01:17:28,460 falando como 10 ao 300 ou alguma coisa, é nesse ponto 1692 01:17:28,460 --> 01:17:33,240 que de 10 a 300 ou a 5 vezes 10 elevado a 300 1693 01:17:33,240 --> 01:17:37,020 não podem ser diferenciados a partir de 7 vezes 10 elevado a 300. 1694 01:17:37,020 --> 01:17:39,660 Então essa é uma diferença muito grande entre os dois números. 1695 01:17:39,660 --> 01:17:43,830 >> Mas então, quando você começa para baixo para as coisas normais de alcance, 1696 01:17:43,830 --> 01:17:45,770 você tende a ser bastante bom em diferenciação. 1697 01:17:45,770 --> 01:17:49,020 E então quando você começar realmente pequeno, você também está ficando muito ruim novamente. 1698 01:17:49,020 --> 01:17:52,529 Assim como um monte de 0.0000, ele fica muito ruim. 1699 01:17:52,529 --> 01:17:53,820 GABRIEL: Sim, assim que uma nota rápida. 1700 01:17:53,820 --> 01:17:54,670 Nunca faça isso. 1701 01:17:54,670 --> 01:17:57,590 Nunca tente comparar flutua usando iguais iguais, 1702 01:17:57,590 --> 01:18:02,800 porque, mesmo se eles são quase a mesmo, quase o mesmo não é o mesmo. 1703 01:18:02,800 --> 01:18:06,360 Então, o que você costuma fazer é você subtrai eles, tomar o valor absoluto do que, 1704 01:18:06,360 --> 01:18:12,380 e ver se isso é menor do que 0,0001, ou algo assim, OK? 1705 01:18:12,380 --> 01:18:12,880 E legal. 1706 01:18:12,880 --> 01:18:16,630 Eu conheço um monte de pessoas têm alguma experiência em Java, 1707 01:18:16,630 --> 01:18:19,700 especialmente aqueles que fizeram AP ciência da computação, né? 1708 01:18:19,700 --> 01:18:23,630 E Java é uma linguagem de que na sua maior parte com base em C, 1709 01:18:23,630 --> 01:18:26,570 ele tem um casal muito grandes diferenças. 1710 01:18:26,570 --> 01:18:31,430 Mas para loops e ifs, e coisas do tipo que, eles são todos a mesma sintaxe. 1711 01:18:31,430 --> 01:18:35,240 Eu tenho alguns programas aqui para mostrar isso. 1712 01:18:35,240 --> 01:18:37,050 >> Assim, por exemplo, um Olá mundo simples. 1713 01:18:37,050 --> 01:18:43,140 1714 01:18:43,140 --> 01:18:46,600 Este é Olá mundo em C, o que você caras são definitivamente familiarizado com, 1715 01:18:46,600 --> 01:18:49,100 e isso e este é em Java. 1716 01:18:49,100 --> 01:18:53,100 Assim, em Java, temos esta classe pública, Olá mundo, 1717 01:18:53,100 --> 01:18:57,050 e public static void args principal, e cordas. 1718 01:18:57,050 --> 01:18:59,665 Os argumentos de cordas vão a aparecer em C muito em breve. 1719 01:18:59,665 --> 01:19:00,740 1720 01:19:00,740 --> 01:19:01,990 Mas não vamos ir lá ainda. 1721 01:19:01,990 --> 01:19:06,060 Agora temos vazio aqui, o que significa que o principal não é tomar quaisquer argumentos. 1722 01:19:06,060 --> 01:19:09,220 E então nós temos System.out.println, e isso é o 1723 01:19:09,220 --> 01:19:11,140 espécie de equivalente para printf. 1724 01:19:11,140 --> 01:19:17,150 Aqui nós realmente não precisa a barra invertida n porque impressão ln faz isso para você. 1725 01:19:17,150 --> 01:19:19,680 Ele acrescenta a barra invertida n no final da linha. 1726 01:19:19,680 --> 01:19:22,540 1727 01:19:22,540 --> 01:19:30,415 >> Mas se você entrar em algo como um para você 1728 01:19:30,415 --> 01:19:32,590 pode ver que eles estão praticamente a mesma coisa. 1729 01:19:32,590 --> 01:19:37,390 Assim inicialização, eo condição ea atualização 1730 01:19:37,390 --> 01:19:42,050 é-- eu perdi um espaço aqui-- eles são praticamente a mesma coisa, exceto Java 1731 01:19:42,050 --> 01:19:44,430 tem como mais algumas coisas de alto nível. 1732 01:19:44,430 --> 01:19:46,010 1733 01:19:46,010 --> 01:19:49,610 Aqui podemos fazer mais eu e Java automaticamente 1734 01:19:49,610 --> 01:19:52,730 fazer isso eu aqui, que é um inteiro, em uma seqüência, 1735 01:19:52,730 --> 01:19:55,200 e, em seguida, acrescentar o duas cordas juntas. 1736 01:19:55,200 --> 01:19:57,570 Aqui em C que precisamos fazer o &% d. 1737 01:19:57,570 --> 01:20:15,310 1738 01:20:15,310 --> 01:20:18,170 A linha aqui, o de parece exatamente o mesmo. 1739 01:20:18,170 --> 01:20:37,760 >> E se olharmos para se, os ifs também parecem exatamente o mesmo, certo? 1740 01:20:37,760 --> 01:20:39,290 1741 01:20:39,290 --> 01:20:44,650 Assim, os verdadeiros grandes diferenças são nas coisas que você vê aqui. 1742 01:20:44,650 --> 01:20:47,530 Public static, nula e então classe pública se. 1743 01:20:47,530 --> 01:20:48,990 1744 01:20:48,990 --> 01:20:52,360 Assim Java tem o que é chamado de uma máquina virtual. 1745 01:20:52,360 --> 01:20:53,560 1746 01:20:53,560 --> 01:21:00,150 E isso é muito fortemente com base no que é chamado de programação orientada a objeto, 1747 01:21:00,150 --> 01:21:04,120 que é muito, muito comum paradigma para a programação de hoje em dia. 1748 01:21:04,120 --> 01:21:10,870 E essa coisa de classe é o que você vê, algo de orientação a objetos, 1749 01:21:10,870 --> 01:21:14,214 se você criar uma classe e então você pode derivar de objetos dessa classe. 1750 01:21:14,214 --> 01:21:16,380 Nós não vamos falar muito muito sobre isso na CS50, 1751 01:21:16,380 --> 01:21:18,213 mas isso é definitivamente algo realmente legal, 1752 01:21:18,213 --> 01:21:21,440 especialmente se você quer ir para desenvolvimento web mais sofisticados 1753 01:21:21,440 --> 01:21:24,050 no fim do curso, como apresentar o seu projeto final 1754 01:21:24,050 --> 01:21:26,430 e algumas estruturas agradáveis ​​e outras coisas. 1755 01:21:26,430 --> 01:21:31,250 >> Então, basicamente, a idéia é que você não quero re-implementar algo, 1756 01:21:31,250 --> 01:21:36,330 assim você cria algo que é muito genérico, como a forma, 1757 01:21:36,330 --> 01:21:38,310 e, em seguida, você cria diferentes formas a partir dele, 1758 01:21:38,310 --> 01:21:40,240 e, em seguida, a partir de cada um dos essas formas, você cria 1759 01:21:40,240 --> 01:21:45,110 algumas formas mais específicas em cada três dimensões ou algo parecido. 1760 01:21:45,110 --> 01:21:48,799 E eles têm essa hierarquia que herdar os outros, de modo 1761 01:21:48,799 --> 01:21:51,840 todas as funções e todas as variáveis ​​que o grande formato tem aqui, todos estes 1762 01:21:51,840 --> 01:21:54,110 vão ter, e todos estes são vai ter, e assim por diante e assim por diante. 1763 01:21:54,110 --> 01:21:55,640 Então essa é a idéia básica. 1764 01:21:55,640 --> 01:21:59,170 >> C não tem isso, mas C ++ não tem esse tipo de recurso. 1765 01:21:59,170 --> 01:22:02,710 E Java é fortemente influenciada por orientação a objetos, 1766 01:22:02,710 --> 01:22:05,310 é por isso que você vê classe aqui o tempo todo. 1767 01:22:05,310 --> 01:22:10,790 E a outra coisa é esta máquina virtual Java. 1768 01:22:10,790 --> 01:22:13,790 Então isso, eu acho, é uma idéia muito inteligente. 1769 01:22:13,790 --> 01:22:17,020 Então, o que as pessoas que java inventou fez é 1770 01:22:17,020 --> 01:22:19,630 eles não querem compilar seu código duas vezes 1771 01:22:19,630 --> 01:22:23,990 se tivessem de executá-lo em um ambiente Windows, ou um Mac, ou Linux, então o que eles fazem 1772 01:22:23,990 --> 01:22:26,740 é que literalmente correr algo como o aparelho, 1773 01:22:26,740 --> 01:22:29,630 mas você realmente não vejo isso acontecendo. 1774 01:22:29,630 --> 01:22:32,430 Então eles executar uma máquina virtual dentro do seu computador, o que 1775 01:22:32,430 --> 01:22:34,940 é basicamente como um mini-sistema operacional. 1776 01:22:34,940 --> 01:22:37,920 E essa operação O propósito de sistema na vida 1777 01:22:37,920 --> 01:22:41,430 é apenas para executar o que é chamado de código de byte. 1778 01:22:41,430 --> 01:22:47,411 >> Então, ao invés de em C, a forma como o faria compilar este é tornar se, em seguida, execute 1779 01:22:47,411 --> 01:22:47,910 ./if. 1780 01:22:47,910 --> 01:22:53,510 1781 01:22:53,510 --> 01:22:55,290 Esqueci a barra invertida no. 1782 01:22:55,290 --> 01:23:00,240 Em Java, você faria primeiro Java C para compilá-lo, if.c. 1783 01:23:00,240 --> 01:23:06,440 1784 01:23:06,440 --> 01:23:08,252 Não é de C. dot java. 1785 01:23:08,252 --> 01:23:09,460 1786 01:23:09,460 --> 01:23:12,140 E então você tem que correr não ./. 1787 01:23:12,140 --> 01:23:15,440 Você começa este novo arquivo if.class, mas você não pode realmente 1788 01:23:15,440 --> 01:23:17,980 executar if.class agora apenas como fizemos antes. 1789 01:23:17,980 --> 01:23:19,440 Este não é um executável. 1790 01:23:19,440 --> 01:23:20,630 Você tem que correr. 1791 01:23:20,630 --> 01:23:23,410 Você tem que alimentá-lo em um programa chamado Java, 1792 01:23:23,410 --> 01:23:28,260 e que o programa é a máquina virtual, e depois você faz if.class, ou se. 1793 01:23:28,260 --> 01:23:28,760 Sim. 1794 01:23:28,760 --> 01:23:30,890 E então ele funciona. 1795 01:23:30,890 --> 01:23:33,740 OK, então este é o tipo de máquina virtual acontecendo. 1796 01:23:33,740 --> 01:23:37,700 C não tem isso, então se eu fosse colocar este programa em uma máquina Windows, 1797 01:23:37,700 --> 01:23:40,516 que não iria funcionar em C. Em Java que faz. 1798 01:23:40,516 --> 01:23:41,015 Perguntas? 1799 01:23:41,015 --> 01:23:43,430 1800 01:23:43,430 --> 01:23:44,030 Legal. 1801 01:23:44,030 --> 01:23:47,160 Isto é, se a seção super para hoje. 1802 01:23:47,160 --> 01:23:49,462