1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: Todo ben. 3 00:00:13,870 --> 00:00:16,770 Benvido á primeira sección. 4 00:00:16,770 --> 00:00:17,480 Estou Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSÉ: Eu son Joseph. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Entón, imos mergullar á dereita dentro 7 00:00:21,540 --> 00:00:23,420 O primeiro a falar é o Appliance. 8 00:00:23,420 --> 00:00:27,150 Polo tanto, agardamos que a maioría de vós ten descargada xa. 9 00:00:27,150 --> 00:00:37,180 Pero podes ver as instrucións en cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Oh Deus, agora eu son auto-consciente. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Eu aínda oín-lo. 13 00:00:45,430 --> 00:00:47,232 >> JOSÉ: Wow, parece que é desorientado. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Entón, algunhas persoas teñen tido problemas con el, así que non espera ata 15 00:00:52,460 --> 00:00:54,940 o último minuto do problema definido para intentar resolver o aparello e 16 00:00:54,940 --> 00:00:56,320 descubrir que non funciona. 17 00:00:56,320 --> 00:00:59,010 >> JOSÉ: E se algo non funciona e precisa de axuda, pode ir 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion onde nós ten un foro onde 19 00:01:03,390 --> 00:01:04,110 Pode publicar as súas preguntas. 20 00:01:04,110 --> 00:01:06,655 E nós imos chegar a eles eventualmente. 21 00:01:06,655 --> 00:01:07,490 >> ROB: Todo ben. 22 00:01:07,490 --> 00:01:12,180 Entón é iso que o Appliance parece. 23 00:01:12,180 --> 00:01:15,480 Unha vez máis, é só unha totalmente separada sistema operativo rodando dentro 24 00:01:15,480 --> 00:01:19,440 calquera sistema operativo que están funcionando no seu portátil. 25 00:01:19,440 --> 00:01:24,450 E as principais cousas que estar usando son gedit. 26 00:01:24,450 --> 00:01:28,050 Polo tanto, agardamos que este xa ten chegar a ser un lugar coñecido. 27 00:01:28,050 --> 00:01:29,470 O terminal. 28 00:01:29,470 --> 00:01:31,890 >> E tamén pode executar Chrome dentro do aparello. 29 00:01:31,890 --> 00:01:33,860 Houbo un par de persoas que informaron internet 30 00:01:33,860 --> 00:01:35,390 non funciona no aparato. 31 00:01:35,390 --> 00:01:38,090 E algúns deles teñen só asumir que non se quere que sexa 32 00:01:38,090 --> 00:01:39,190 Internet no aparello. 33 00:01:39,190 --> 00:01:40,750 Pero si, alí se quere para ser seguro. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Eu vou dicir iso agora, pero iso non ocorre realmente quere dicir nada. 36 00:01:46,410 --> 00:01:50,680 Se a internet non funciona, isto é o que tende a ter 37 00:01:50,680 --> 00:01:52,180 executar para resolve-lo. 38 00:01:52,180 --> 00:01:55,602 Se está a ter problemas de internet, non lembre que, só publicar-la en 39 00:01:55,602 --> 00:01:57,560 Discutir, e imos dicir, realizar iso. 40 00:01:57,560 --> 00:02:00,420 Pero a Internet debe estar funcionando. 41 00:02:00,420 --> 00:02:06,650 >> Así, a única outra cousa - si, nada o resto é realmente relevante. 42 00:02:06,650 --> 00:02:08,979 Pero eu só quería salientar que - 43 00:02:08,979 --> 00:02:13,290 ver neste ángulo inferior dereito. 44 00:02:13,290 --> 00:02:16,530 Así, cada un dos seus dispositivos debe ten un enderezo IP. 45 00:02:16,530 --> 00:02:22,350 E ao final do semestre, este enderezo IP enderezo a ser máis relevante cando 46 00:02:22,350 --> 00:02:27,230 se está a traballar na web p-set, xa que será capaz de acceder a 47 00:02:27,230 --> 00:02:32,310 sitio web que está a traballar a partir da súa Chrome local usando este enderezo IP. 48 00:02:32,310 --> 00:02:35,400 >> Pero o que máis me gusta de usar o enderezo IP for - e non ten que facelo, eu 49 00:02:35,400 --> 00:02:37,460 só quero indicalo lo - 50 00:02:37,460 --> 00:02:39,540 está aquí. 51 00:02:39,540 --> 00:02:42,910 Polo tanto, esta é unha xanela de terminal en meu Mac, iso non é o 52 00:02:42,910 --> 00:02:44,580 Appliance de todo. 53 00:02:44,580 --> 00:02:47,190 E pode buscar o que esta orde fai. 54 00:02:47,190 --> 00:02:51,855 Pero eu estou indo directamente SSH ao meu Appliance. 55 00:02:51,855 --> 00:02:53,410 Eu non sei o que o IP é. 56 00:02:53,410 --> 00:02:54,300 >> JOSÉ: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Entón xa que eu son feito con iso, facer sesión no 59 00:02:59,950 --> 00:03:05,450 Agora, basicamente, este é o mesmo que o dun fiestra de terminal dentro do meu Appliance. 60 00:03:05,450 --> 00:03:10,280 Entón, eu practicamente nunca realmente funcionou de dentro do propio aparello. 61 00:03:10,280 --> 00:03:12,550 Eu sempre teño que correr no fondo minimizado 62 00:03:12,550 --> 00:03:15,890 e SSHed nel. 63 00:03:15,890 --> 00:03:24,270 >> O problema con isto é que non vai para poder utilizar facilmente gedit 64 00:03:24,270 --> 00:03:25,600 directamente dende el. 65 00:03:25,600 --> 00:03:31,500 Pero se quere ser un verdadeiro legal hackers, entón ten que afacerse a un 66 00:03:31,500 --> 00:03:34,220 liña de comandos editor de texto de calquera maneira. 67 00:03:34,220 --> 00:03:39,620 Entón Vin e Emacs e Nano, todos estes diferentes alternativas. 68 00:03:39,620 --> 00:03:41,560 Nano tende a ser o máis fácil. 69 00:03:41,560 --> 00:03:45,006 E eu creo que non ten destaque de sintaxe. 70 00:03:45,006 --> 00:03:47,620 Oh, non, é totalmente fai. 71 00:03:47,620 --> 00:03:49,870 Logo, pode usar Nano, porque que un é moi fácil. 72 00:03:49,870 --> 00:03:52,000 >> Ve todos estes comandos na parte inferior. 73 00:03:52,000 --> 00:03:54,750 Este símbolo pouco de cenoria. 74 00:03:54,750 --> 00:03:57,620 Se aínda non viu iso antes, vai probablemente velo moito agora. 75 00:03:57,620 --> 00:04:02,350 De modo xeral, significa a cenoria control, como o inferior esquerda do teclado 76 00:04:02,350 --> 00:04:04,130 carácter de control. 77 00:04:04,130 --> 00:04:07,260 Entón, aquí está me dicindo aquí - 78 00:04:07,260 --> 00:04:08,710 Oh, non é cortado se eu zoom in 79 00:04:08,710 --> 00:04:11,040 Entón, de control, X é como Vou saír. 80 00:04:11,040 --> 00:04:14,710 E el di que podo bater Y para Si, para o aforro, N para Não 81 00:04:14,710 --> 00:04:17,190 Entón, iso é Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vin e Emacs tenden a ser lixeiramente máis complicado e desgastante. 83 00:04:22,860 --> 00:04:28,840 Pero pode se acostumar con iso, e entón vai adorar. 84 00:04:28,840 --> 00:04:30,590 Entón é iso. 85 00:04:30,590 --> 00:04:31,720 >> JOSÉ: Non é necesario facelo. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Yeah. 87 00:04:31,840 --> 00:04:37,510 Vostede é libre de usar para gedit resto do semestre. 88 00:04:37,510 --> 00:04:40,630 Así, as preguntas relacionadas co aparello? 89 00:04:40,630 --> 00:04:42,820 Ou ten algunha opinión sobre o que máis ten que ser falado sobre 90 00:04:42,820 --> 00:04:43,610 o aparello? 91 00:04:43,610 --> 00:04:43,996 Si 92 00:04:43,996 --> 00:04:47,720 >> COLUMNA 1: Cando SSHed na súa cousa, se o tinto contrasinal? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Yeah. 94 00:04:48,390 --> 00:04:50,170 O contrasinal para practicamente todo no Appliance vai 95 00:04:50,170 --> 00:04:52,473 ser tinto. 96 00:04:52,473 --> 00:04:56,517 >> COLUMNA 2: Instalar como un verdadeiro IDE no aparello, que vai traballar? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Eu imaxino Eclipse ten un Versión Fedora, caso en que, si, 99 00:05:07,290 --> 00:05:08,420 pode facelo. 100 00:05:08,420 --> 00:05:10,875 Probablemente non é realmente paga a pena. 101 00:05:10,875 --> 00:05:11,742 >> COLUMNA 2: Aceptar. 102 00:05:11,742 --> 00:05:15,924 Por iso, pode ser máis fácil se eu quería usar o Eclipse, é só usar o nativo e 103 00:05:15,924 --> 00:05:17,646 a continuación, facer a carga para - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, que tamén pode ser máis fácil. 105 00:05:21,090 --> 00:05:24,046 Pero pode facelo funcionar dentro do aparello. 106 00:05:24,046 --> 00:05:27,740 >> JOSÉ: E para a cámara, a cuestión foi, pode instalar outro 107 00:05:27,740 --> 00:05:29,490 IDE dentro do aparello? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse sendo un exemplo dunha IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Calquera outra dúbida aparello? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Todo ben. 113 00:05:38,680 --> 00:05:44,920 >> Entón, imos agora avanzar na liña de comandos cousas relacionadas coa interface, de xeito CLI. 114 00:05:44,920 --> 00:05:47,990 E unha vez máis, eu só estou indo para o traballo en aquí, porque este é o mesmo que o 115 00:05:47,990 --> 00:05:52,780 traballando dentro dunha fiestra de terminal dentro do aparello. 116 00:05:52,780 --> 00:05:54,160 Como está esa fonte buscando? 117 00:05:54,160 --> 00:05:55,970 É grande o suficiente? 118 00:05:55,970 --> 00:05:57,000 Todo ben. 119 00:05:57,000 --> 00:06:02,480 >> Entón, hai unha serie de comandos que ten que estar moi utilizado para 120 00:06:02,480 --> 00:06:04,490 ao longo do semestre. 121 00:06:04,490 --> 00:06:09,480 A gran dous para navegar son ls, lista os ficheiros deste directorio, e 122 00:06:09,480 --> 00:06:11,380 cd, así que cambie de directorio. 123 00:06:11,380 --> 00:06:18,390 Entón, podo cambiar a zona de traballo e, a continuación, un patrón moi común é a de un cd 124 00:06:18,390 --> 00:06:22,550 directorio e inmediatamente ls o que está no directorio. 125 00:06:22,550 --> 00:06:25,540 >> A xente tamén, por veces, non entender que Tab conclusión é unha cousa. 126 00:06:25,540 --> 00:06:28,370 Así como CD, VH, e entón eu bati Tab 127 00:06:28,370 --> 00:06:30,790 Eu case nunca escribir a cousa toda. 128 00:06:30,790 --> 00:06:32,920 E entón se eu seguir batendo Tab novo, que vai automaticamente 129 00:06:32,920 --> 00:06:33,670 comezar a lista para min. 130 00:06:33,670 --> 00:06:37,000 Entón eu podo cd vhosts, servidor local. 131 00:06:37,000 --> 00:06:39,880 E iso só vai - 132 00:06:39,880 --> 00:06:43,380 no caso de non ter oído o termo antes, o directorio é só outra palabra 133 00:06:43,380 --> 00:06:45,170 á carpeta. 134 00:06:45,170 --> 00:06:49,930 Polo tanto, agora se ve - 135 00:06:49,930 --> 00:06:51,810 imos levar isto a arriba. 136 00:06:51,810 --> 00:06:55,380 >> Polo tanto, agora se ve entre parénteses, vostede ver o pequeno til, barra, vhost, 137 00:06:55,380 --> 00:06:56,810 slash, servidor local. 138 00:06:56,810 --> 00:07:00,040 Así, o til, que se refire para o meu directorio home. 139 00:07:00,040 --> 00:07:03,090 É un directorio que está cando SSH dentro 140 00:07:03,090 --> 00:07:05,660 É o directorio que está en cando abrir un terminal. 141 00:07:05,660 --> 00:07:08,650 É onde comeza. 142 00:07:08,650 --> 00:07:13,110 E así eu estou dentro do meu directorio home, e eu estou dentro do vhost 143 00:07:13,110 --> 00:07:14,475 directorio dentro do meu directorio home. 144 00:07:14,475 --> 00:07:19,670 E entón eu estou dentro do local, directorio aloxar dentro diso. 145 00:07:19,670 --> 00:07:23,740 >> Por iso, algunhas outras cousas útiles co cd - 146 00:07:23,740 --> 00:07:29,220 ou ben, en xeral, de xeito dot sempre refírese ao directorio actual. 147 00:07:29,220 --> 00:07:31,130 Cd, dot é un comando moi inútil. 148 00:07:31,130 --> 00:07:35,150 Pero iso está cambiando para o directorio actual. 149 00:07:35,150 --> 00:07:38,230 A máis útil en termos de cd é punto, punto, que é 150 00:07:38,230 --> 00:07:40,220 só tes que ir ata un directorio. 151 00:07:40,220 --> 00:07:43,360 >> E teña en conta que estes - 152 00:07:43,360 --> 00:07:48,610 Quero dicir alias, pero estes símbolos, punto e punto, punto, os traballos 153 00:07:48,610 --> 00:07:51,740 para practicamente calquera orde que está estará a pensar en correr. 154 00:07:51,740 --> 00:07:55,370 Así como cd é probablemente o lugar onde vai ser utilizando a maior parte, pero estes non son 155 00:07:55,370 --> 00:07:56,780 cousas que só cd comprende. 156 00:07:56,780 --> 00:07:59,980 É practicamente algo que o seu todo liña de comandos comprende. 157 00:07:59,980 --> 00:08:01,932 Unha morea de programas entender punto e punto, punto. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Así, os outros útiles - cd, Dash. 160 00:08:09,090 --> 00:08:13,460 Entón iso me vai traer á último directorio que eu estaba dentro 161 00:08:13,460 --> 00:08:15,980 Entón, ás veces eu vou facer algo como: Oh, eu estou a traballar aquí. 162 00:08:15,980 --> 00:08:21,110 E eu vexo algún erro con algo, e Vou investigalo lo, indo a 163 00:08:21,110 --> 00:08:24,020 algún directorio chou en algún lugar. 164 00:08:24,020 --> 00:08:25,260 E eu non sei se vai déixeme alí dentro. 165 00:08:25,260 --> 00:08:25,720 El o fará. 166 00:08:25,720 --> 00:08:27,615 Entón fago o que eu queira neste directorio. 167 00:08:27,615 --> 00:08:28,950 Bla, bla, bla, bla, bla. 168 00:08:28,950 --> 00:08:31,770 E eu estaba tipo, todo ben, quero voltar a onde estaba. 169 00:08:31,770 --> 00:08:34,490 cd, trazo, e que me trae de volta. 170 00:08:34,490 --> 00:08:39,970 >> Entón, eu vou xogar unha morea destes en ti hoxe. 171 00:08:39,970 --> 00:08:43,730 Non espera que lembra todos eles. 172 00:08:43,730 --> 00:08:46,170 É unha especie de só saber que eles existen. 173 00:08:46,170 --> 00:08:48,690 E máis tarde, cando está como, hmm, quero volver a 174 00:08:48,690 --> 00:08:51,870 directorio que eu estaba en, oh, espera, algo parecido ao que hai. 175 00:08:51,870 --> 00:08:53,980 Non ten que escriba en todo o directorio novo. 176 00:08:53,980 --> 00:08:56,090 >> JOSÉ: E, finalmente, será só usalos unha e outra vez, e 177 00:08:56,090 --> 00:08:57,830 el vai facer a memoria muscular. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Yeah. 179 00:09:00,090 --> 00:09:02,930 Entón, como dixen antes, que til é o seu directorio persoal. 180 00:09:02,930 --> 00:09:04,820 Entón eu podo cd, til. 181 00:09:04,820 --> 00:09:07,280 Pero non ten sequera a facelo se eu - 182 00:09:07,280 --> 00:09:09,760 Vou volver ao directorio así non é un exemplo inútil. 183 00:09:09,760 --> 00:09:14,560 Pero se eu só facer cd, que tamén é o aínda que, ir ao meu directorio home. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Fago Comando, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSÉ: Tamén pode inserir claro, a palabra, e debe limpa-la. 187 00:09:24,015 --> 00:09:28,650 >> ROB: E eu creo que tamén de control, L tamén o fai. 188 00:09:28,650 --> 00:09:29,690 Entón moitas formas diferentes. 189 00:09:29,690 --> 00:09:34,070 Eu creo que hai algunhas diferenzas onde clara e Control, L será só 190 00:09:34,070 --> 00:09:37,280 realmente empurralo para a parte superior e Eu aínda pode rolar cara atrás. 191 00:09:37,280 --> 00:09:40,580 Command, K literalmente destrúe todo, e vostede 192 00:09:40,580 --> 00:09:42,960 non pode rolar de volta. 193 00:09:42,960 --> 00:09:45,530 Como mínimo, iso é como funciona en iTerm2. 194 00:09:45,530 --> 00:09:48,690 Eu non sei como as outras cousas - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Con sshing, por iso, se está en Windows, vai ter que baixar PuTTY 197 00:09:55,450 --> 00:10:02,360 a fin de SSH desde Windows non fai ten como unha ferramenta interna SSH. 198 00:10:02,360 --> 00:10:06,150 De Macs, pode só SSH directamente desde unha fiestra de terminal. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 Aceptar. 201 00:10:09,690 --> 00:10:11,840 Dúbidas? 202 00:10:11,840 --> 00:10:19,260 >> Con ls, así que algo que acostumar coa maioría destes comandos é - 203 00:10:19,260 --> 00:10:20,060 ben, eu vou facer un. 204 00:10:20,060 --> 00:10:21,310 Ls, trazo, l. 205 00:10:21,310 --> 00:10:26,330 Entón, trazo, l é o que imos Para chamar a un elemento para ls. 206 00:10:26,330 --> 00:10:30,770 E moitos destes comandos teñen bandeiras que pode pasar para eles. 207 00:10:30,770 --> 00:10:35,020 Polo tanto, neste caso, trazo, l é unha bandeira que di-lle para me dar un completo 208 00:10:35,020 --> 00:10:37,850 listado de toda a información deses ficheiros. 209 00:10:37,850 --> 00:10:44,790 >> Así, podemos ver aquí que o meu ordenador foi modificado o 30 de xullo ás 12:54. 210 00:10:44,790 --> 00:10:47,160 De descargas foi modificado en 6 de setembro. 211 00:10:47,160 --> 00:10:52,350 Estes son o tamaño actual e bytes destes directorios. 212 00:10:52,350 --> 00:10:54,412 Non ten que entender todo isto. 213 00:10:54,412 --> 00:11:00,380 >> Este material á esquerda, estas drwx de, que se fará moito máis relevante 214 00:11:00,380 --> 00:11:02,290 máis tarde, cando ten que xestionar - 215 00:11:02,290 --> 00:11:05,900 que ten que ver co que ten permisos ollar para estes arquivos. 216 00:11:05,900 --> 00:11:09,880 E por iso, se non foi o único usuario en este ordenador, vostede sería capaz de 217 00:11:09,880 --> 00:11:13,345 digamos, OK, eu debería ser o único permiso para mirar para este ficheiro ou eu son 218 00:11:13,345 --> 00:11:14,870 permitirá que todos mirar para este ficheiro. 219 00:11:14,870 --> 00:11:17,710 Entón, alguén no meu ordenador pode ollar para este ficheiro. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Eu non sei o que iso - o que iso fai? 222 00:11:25,600 --> 00:11:26,840 >> JOSÉ: Eu non estou seguro, en realidade. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Non fago idea. 224 00:11:27,705 --> 00:11:30,530 >> JOSÉ: Pero se non sabe, non existe unha orde útil que pode usar 225 00:11:30,530 --> 00:11:31,680 para dicir o que significa a saída. 226 00:11:31,680 --> 00:11:33,780 E se introducir no home antes do comando - 227 00:11:33,780 --> 00:11:35,000 así M-A-N. ROB: Home. 228 00:11:35,000 --> 00:11:37,690 Así, o home é un que é moi útil. 229 00:11:37,690 --> 00:11:39,540 E o home, ls. 230 00:11:39,540 --> 00:11:47,320 Así, as páxinas do manual, eles teñen tanto comandos que vai estar a usar 231 00:11:47,320 --> 00:11:50,330 na liña de comandos, e eles tamén teñen funcións que serán relevantes 232 00:11:50,330 --> 00:11:52,530 con C. Así, pode o home - 233 00:11:52,530 --> 00:11:53,720 e eu ignorei 3. 234 00:11:53,720 --> 00:11:57,410 Pero Man 3 printf traerá a versión C do printf. 235 00:11:57,410 --> 00:12:01,030 Pero se eu só fago o home printf, este é abrirá a orde printf 236 00:12:01,030 --> 00:12:03,540 que pasa na liña de comandos. 237 00:12:03,540 --> 00:12:05,730 >> Así, o home, sl. 238 00:12:05,730 --> 00:12:09,030 As páxinas de manual pode ser moi avassaladora. 239 00:12:09,030 --> 00:12:12,770 Aquí, con todo, vai ver este anuncio de todas estas bandeiras que ls 240 00:12:12,770 --> 00:12:14,300 entende. 241 00:12:14,300 --> 00:12:17,876 Entón, se somos a funcionar, l, e - 242 00:12:17,876 --> 00:12:19,300 Eu só vou xogar iso en ti. 243 00:12:19,300 --> 00:12:23,050 Pero, a fin de buscar, quere ao primeiro hit a cuestión 244 00:12:23,050 --> 00:12:24,780 botón barra marca ou. 245 00:12:24,780 --> 00:12:26,040 Entón Slash. 246 00:12:26,040 --> 00:12:29,000 >> E entón podo atopar para o que quero. 247 00:12:29,000 --> 00:12:33,780 Entón eu vou cortar a trazo, l. 248 00:12:33,780 --> 00:12:35,110 E alí estaba el. 249 00:12:35,110 --> 00:12:37,450 Polo tanto, usa un formato de listado longo. 250 00:12:37,450 --> 00:12:40,060 Iso non me axudar a descubrir o que que determinada columna quería dicir, pero eu 251 00:12:40,060 --> 00:12:44,480 asumir nalgún lugar aquí iso explicaría iso. 252 00:12:44,480 --> 00:12:48,740 Polo tanto, usa as páxinas man a calquera orde que non entende de inmediato. 253 00:12:48,740 --> 00:12:51,080 >> Estou seguro que pode ata mesmo home, o home. 254 00:12:51,080 --> 00:12:53,070 Unha interface para o en liña manuais de referencia. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Ah, unha última un que é quizais un pouco ls relevante é, trazo, un. 257 00:13:03,570 --> 00:13:08,490 Entón, teña en conta se eu só facer ls, Recibe estes cinco arquivos. 258 00:13:08,490 --> 00:13:11,480 Se eu fai ls, trazo, un, eu obter un lote máis ficheiros. 259 00:13:11,480 --> 00:13:15,350 Así, a cousa en común entre todos estes novos ficheiros é o punto de antemán. 260 00:13:15,350 --> 00:13:21,220 >> Así, a convención é que un arquivo que comeza cun punto está oculto. 261 00:13:21,220 --> 00:13:25,300 Entón non quere ver este ficheiro, vostede Non quero ter que xogar con 262 00:13:25,300 --> 00:13:26,750 súa listaxe do directorio. 263 00:13:26,750 --> 00:13:30,020 É só cando explicitamente preguntar, todo ben, ls, trazo, un, me amosar. 264 00:13:30,020 --> 00:13:32,830 O un significa todos os arquivos, incluíndo as ocultas. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Así, algúns outros comandos. 267 00:13:39,270 --> 00:13:41,323 Oh, cuestións en que punto? 268 00:13:41,323 --> 00:13:41,746 Si 269 00:13:41,746 --> 00:13:45,914 >> COLUMNA 3: Cando fai ls, un, cal é o punto, o punto? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Ah. 271 00:13:46,870 --> 00:13:48,780 Entón é iso que eu estaba falando. 272 00:13:48,780 --> 00:13:50,890 É o mesmo que Podo gusta de cd, punto, punto. 273 00:13:50,890 --> 00:13:56,790 Entón, tecnicamente, punto e punto, punto son ficheiros que hai en cada 274 00:13:56,790 --> 00:14:03,620 directorio onde o ficheiro punto refírese a ao directorio actual. 275 00:14:03,620 --> 00:14:06,930 Entón, se eu cd, punto, eu só vou para estar no directorio. 276 00:14:06,930 --> 00:14:10,870 E punto, punto sempre se refire ao anterior directorio un nivel superior. 277 00:14:10,870 --> 00:14:18,200 Entón, se eu entrar en toras e ls, trazo, al, Vou ver punto, punto. cd a punto, punto 278 00:14:18,200 --> 00:14:20,390 me leva ao directorio anterior. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 É. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 Aceptar. 283 00:14:28,110 --> 00:14:33,070 >> Así, outra moi importante comando é rm. 284 00:14:33,070 --> 00:14:35,650 Entón é iso que nós imos usar para eliminar. 285 00:14:35,650 --> 00:14:38,100 E deixe-me realmente facer outra primeiro orde. 286 00:14:38,100 --> 00:14:39,610 Entón mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir é como pode crear directorios. 288 00:14:42,770 --> 00:14:47,530 E eu vou crear un directorio temporal e ir ao directorio temporal. 289 00:14:47,530 --> 00:14:49,590 E, como se esperaba, é baleiro. 290 00:14:49,590 --> 00:14:53,680 Pero se ls I, trazo, un, eu aínda teño dot e punto, punto, porque se refire a punto 291 00:14:53,680 --> 00:14:54,480 o directorio actual. 292 00:14:54,480 --> 00:14:56,170 E punto, refírese ao punto directorio anterior. 293 00:14:56,170 --> 00:14:58,700 E os sempre vai existir, non importa o directorio que está dentro 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> E este é un completamente innecesario mando, pero chamada. 296 00:15:09,010 --> 00:15:11,880 Estou só usar-o, porque é un xeito fácil de crear arquivos. 297 00:15:11,880 --> 00:15:16,180 Entón tocar un, toque b, toque c é só vai crear tres arquivos chamados un, 298 00:15:16,180 --> 00:15:17,845 b e c que están completamente baleiras. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Así, o punto de me crear os do primeiro lugar é só para que rm é 301 00:15:24,980 --> 00:15:26,250 como podemos eliminar-los. 302 00:15:26,250 --> 00:15:27,850 Entón, rm, a. 303 00:15:27,850 --> 00:15:30,960 Me vai preguntar, elimine regular dun ficheiro baleiro? 304 00:15:30,960 --> 00:15:33,170 E entón eu vou dicir que si. 305 00:15:33,170 --> 00:15:39,090 >> Entón, se eu estou seguro que quero borrar este ficheiro sen ter que ser 306 00:15:39,090 --> 00:15:44,500 solicitado, elimine ficheiro baleiro regular?, logo rm, trazo, f será o 307 00:15:44,500 --> 00:15:48,230 bandeira que di, sen forzar a eliminación ata me alertando, oh, é vostede 308 00:15:48,230 --> 00:15:49,710 seguro de que quere eliminar o ficheiro? 309 00:15:49,710 --> 00:15:50,810 Si, eu estou seguro. 310 00:15:50,810 --> 00:15:56,050 Entón, rm, trazo, fb será só facelo sen pedir. 311 00:15:56,050 --> 00:15:57,950 >> Entón, imos facer algúns directorios. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, tocar un, toque b. 313 00:16:03,670 --> 00:16:04,300 Aceptar. 314 00:16:04,300 --> 00:16:08,180 Entón agora quero eliminar tmp2 como un directorio. 315 00:16:08,180 --> 00:16:10,316 Tmp2 Entón rm. 316 00:16:10,316 --> 00:16:12,920 Non pode eliminar tmp2, é un directorio. 317 00:16:12,920 --> 00:16:21,370 Polo tanto, a cuestión aquí é que rm non traballar inmediatamente en directorios. 318 00:16:21,370 --> 00:16:26,530 É só significar para arquivos como arquivos non directorio. 319 00:16:26,530 --> 00:16:30,800 >> E así, o que podemos facer aquí é rm, trazo, r. 320 00:16:30,800 --> 00:16:35,160 Isto significa de forma recursiva, o que pode non significa nada para ti aínda. 321 00:16:35,160 --> 00:16:38,280 Pero cando comeza a recursão, iso vai significar máis. 322 00:16:38,280 --> 00:16:43,540 Entón, rm, trazo, r, tmp2 vai recursivamente ir ao directorio. 323 00:16:43,540 --> 00:16:45,540 Entón descender directorio tmp2? 324 00:16:45,540 --> 00:16:47,330 Si, imos a iso. 325 00:16:47,330 --> 00:16:49,360 Queremos eliminar tmp2 / a? 326 00:16:49,360 --> 00:16:49,745 Si 327 00:16:49,745 --> 00:16:51,830 Queremos eliminar tmp2 / b? 328 00:16:51,830 --> 00:16:52,840 Si 329 00:16:52,840 --> 00:16:55,170 Agora queremos eliminar o tmp2 directorio? 330 00:16:55,170 --> 00:16:56,040 Si 331 00:16:56,040 --> 00:16:58,410 E agora o directorio e todo dentro 332 00:16:58,410 --> 00:16:59,660 de que foi borrada. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Non é tecnicamente unha orde rmdir que pode usar para eliminar 335 00:17:07,250 --> 00:17:11,670 directorios, pero el só funciona en directorios baleiros de calquera maneira. 336 00:17:11,670 --> 00:17:14,109 E ver que, imos só facer mkdir, tmp2 novo. 337 00:17:14,109 --> 00:17:15,940 Tmp2, toque a. 338 00:17:15,940 --> 00:17:16,800 Aceptar. 339 00:17:16,800 --> 00:17:22,770 Entón, se eu tentar eliminar dirtmp2, vai dicir, o directorio non baleiro. 340 00:17:22,770 --> 00:17:29,540 Entón, eu practicamente nunca usar o elimina comando dir calquera maneira, porque rm, trazo, 341 00:17:29,540 --> 00:17:35,140 r funcionará en directorios baleiros e directorios non baleiros. 342 00:17:35,140 --> 00:17:37,760 >> E tamén, se eu non quero ter que pasar por todo este proceso de 343 00:17:37,760 --> 00:17:40,720 descendendo para o directorio e eliminación de cada arquivo individual, rm, 344 00:17:40,720 --> 00:17:44,190 trazo, RF, tmp2. 345 00:17:44,190 --> 00:17:45,670 E agora que se foi. 346 00:17:45,670 --> 00:17:51,220 >> Algo que ter coidado é sobre rm, trazo, RF. 347 00:17:51,220 --> 00:17:53,660 E iso me asusta incluso gravala-lo, porque se eu accidentalmente 348 00:17:53,660 --> 00:17:55,090 prema Intro ou algo así. 349 00:17:55,090 --> 00:18:02,735 Entón, rm, trazo, RF, til sería, sen me avisar, o f non solicita 350 00:18:02,735 --> 00:18:05,670 min, ha eliminar automaticamente meu directorio home enteira e 351 00:18:05,670 --> 00:18:06,780 todo na mesma. 352 00:18:06,780 --> 00:18:11,460 Así, pode pensar que é unha cousa estúpida de facer. 353 00:18:11,460 --> 00:18:12,830 E ben, é. 354 00:18:12,830 --> 00:18:18,600 >> Pero isto pode ocorrer moi facilmente por accidente, por exemplo, eu quería eliminar 355 00:18:18,600 --> 00:18:21,640 miña barra, directorio vhost. 356 00:18:21,640 --> 00:18:26,610 E só na dixitación rápida, Eu accidentalmente facelo. 357 00:18:26,610 --> 00:18:31,880 Isto eliminará de forma recursiva tanto a miña directorio eo directorio vhost 358 00:18:31,880 --> 00:18:35,450 neste directorio específico que pasa a non existir agora. 359 00:18:35,450 --> 00:18:39,520 Pero iso aínda sería eliminar meu directorio home enteira. 360 00:18:39,520 --> 00:18:43,090 Polo menos por non ter unha f, ía me pedir en primeiro lugar. 361 00:18:43,090 --> 00:18:45,670 E eu sería como, oh, non, eu Non quero facer iso. 362 00:18:45,670 --> 00:18:50,570 Pero a xente, slash, incluíndo me tenden a entrar no 363 00:18:50,570 --> 00:18:53,090 hábito de sempre RF-ing. 364 00:18:53,090 --> 00:18:58,713 Mesmo os arquivos regulares que podo só RM, c, que tenden a só rm, trazo, RF, c. 365 00:18:58,713 --> 00:19:01,330 Só teña coidado cando está RF-ing. 366 00:19:01,330 --> 00:19:03,160 >> COLUMNA 4: Que facer C? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C é que eu estou fala de este ficheiro C neste directorio, que rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSÉ: E máis perigosamente, se usa unha estrela, refírese a todo en 369 00:19:15,730 --> 00:19:16,450 o directorio. 370 00:19:16,450 --> 00:19:20,040 Entón o que eu normalmente tenden a facer é que eu vou entrar nun directorio e quero 371 00:19:20,040 --> 00:19:21,510 eliminar todos os ficheiros dentro. 372 00:19:21,510 --> 00:19:23,640 Entón, rm, trazo, RF, estrela. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Yeah. 374 00:19:25,700 --> 00:19:26,780 RM, trazo, RF, estrela. 375 00:19:26,780 --> 00:19:29,530 >> JOSÉ: E se non ten coidado o que está no directorio - 376 00:19:29,530 --> 00:19:33,340 Eu non estaba en tempo, pero eu estaba accidentalmente no meu directorio home, 377 00:19:33,340 --> 00:19:35,450 entón eu vou eliminar todo no meu directorio home. 378 00:19:35,450 --> 00:19:39,095 E eu realmente fixen iso antes, e Creo que xa o fixo antes ou 379 00:19:39,095 --> 00:19:40,640 Jay fixo iso antes. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Eu eliminar accidentalmente - 381 00:19:42,480 --> 00:19:44,480 así ignorar este comando un pouco. 382 00:19:44,480 --> 00:19:45,800 >> JOSÉ: Non é divertido. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Entón, no directorio bin barra é un morea de arquivos binarios onde vai 384 00:19:52,650 --> 00:19:54,840 ser os familiares como bumbum. 385 00:19:54,840 --> 00:20:00,740 Ben, bumbum e, basicamente, todos estes as cousas que eu estou rodando ao mando 386 00:20:00,740 --> 00:20:02,060 liña están neste directorio bin barra. 387 00:20:02,060 --> 00:20:03,090 >> JOSÉ: Como ls está aquí. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Entón dot, slash, ls sería consultar neste directorio. 389 00:20:06,285 --> 00:20:08,120 >> JOSÉ: Rm tamén neste directorio. 390 00:20:08,120 --> 00:20:12,770 >> ROB: Eu accidentalmente rm, RF-ed bin, que eliminou calquera orde que puiden 391 00:20:12,770 --> 00:20:14,380 posiblemente querer. 392 00:20:14,380 --> 00:20:18,085 Que, a continuación, só reinstalar un novo Appliance naquel momento. 393 00:20:18,085 --> 00:20:20,170 >> JOSÉ: Entón, moito coidado cando usa este comando. 394 00:20:20,170 --> 00:20:21,120 >> Audiencia: [inaudível]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: si. 396 00:20:22,640 --> 00:20:24,135 Isto tamén é un mal costume de entrar. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Se notar, eu son agora - 399 00:20:30,170 --> 00:20:33,580 ben, non se pode ter en conta, pero miña zoom-in quizais poida. 400 00:20:33,580 --> 00:20:35,360 Entón, eu estou agora root @ aparello. 401 00:20:35,360 --> 00:20:39,790 Entón jharvard é o usuario que queremos sempre que está a usar. 402 00:20:39,790 --> 00:20:43,820 Root é o usuario que ten permiso para non facer absolutamente nada. 403 00:20:43,820 --> 00:20:50,260 >> Entón, teña en conta cando estou jharvard, se eu tentar cd - 404 00:20:50,260 --> 00:20:52,461 o que é un directorio que? 405 00:20:52,461 --> 00:20:53,980 Oh, a raíz é un bo exemplo. 406 00:20:53,980 --> 00:20:54,950 Entón cd, raíz. 407 00:20:54,950 --> 00:20:56,030 Permiso denegado. 408 00:20:56,030 --> 00:21:00,060 Porque se miramos este anuncio - 409 00:21:00,060 --> 00:21:02,410 e, de novo, non ten que enteiramente entender iso. 410 00:21:02,410 --> 00:21:09,210 Pero estes tres trazos están dicindo que evite calquera outro 411 00:21:09,210 --> 00:21:11,120 usuario para este directorio. 412 00:21:11,120 --> 00:21:14,540 E o directorio pasa a ser de propiedade do usuario root. 413 00:21:14,540 --> 00:21:20,310 >> Así, o feito de que eu son e non jharvard o que non é raíz se permite en 414 00:21:20,310 --> 00:21:23,490 Neste directorio, iso significa que eu son se ve permiso denegado cando 415 00:21:23,490 --> 00:21:25,160 tentar cd nel. 416 00:21:25,160 --> 00:21:31,370 Entón, cando eu son raíz, eu teño permiso para facer absolutamente calquera cousa, incluso 417 00:21:31,370 --> 00:21:34,660 borrar arquivos esenciais para o dispositivo e 418 00:21:34,660 --> 00:21:36,640 destruír a cousa toda. 419 00:21:36,640 --> 00:21:41,240 >> Polo tanto, é un mal costume de entrar só vagando ao redor da súa 420 00:21:41,240 --> 00:21:43,650 sistema operativo como root. 421 00:21:43,650 --> 00:21:46,520 Fago iso de calquera maneira. 422 00:21:46,520 --> 00:21:48,710 Dúbidas? 423 00:21:48,710 --> 00:21:52,230 E eu vou saír da raíz, estar como jharvard. 424 00:21:52,230 --> 00:21:54,510 Aceptar. 425 00:21:54,510 --> 00:21:55,820 >> Ordes máis relevantes. 426 00:21:55,820 --> 00:22:03,975 Entón, volvendo ao noso tempo, o mv mando significa movemento. 427 00:22:03,975 --> 00:22:05,450 Pode mover a. 428 00:22:05,450 --> 00:22:07,610 Agora queremos chamalo b, entón agora é chamado b. 429 00:22:07,610 --> 00:22:10,650 Ou quizais nós quere mover b-se un directorio. 430 00:22:10,650 --> 00:22:12,730 Entón, agora baleiro deste directorio. 431 00:22:12,730 --> 00:22:15,410 Vou volver para o meu directorio home, e vemos que b está aquí, xa que o 432 00:22:15,410 --> 00:22:19,230 directorio home foi un directorio desde o directorio que b estaba dentro 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Hai tamén CP. 435 00:22:26,580 --> 00:22:33,210 Entón cp é copiar sección super, punto, o texto. 436 00:22:33,210 --> 00:22:35,750 Podo chamalo é, punto, texto. 437 00:22:35,750 --> 00:22:39,780 Agora temos dous super-sección, punto, texto, e s, de punto, o texto. 438 00:22:39,780 --> 00:22:41,340 Isto tamén funciona en directorios. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 Eu RF-ed un único ficheiro. 441 00:22:46,560 --> 00:22:48,200 Así cp - 442 00:22:48,200 --> 00:22:51,710 ben, primeiro imos tratar cp, tmp, tmp2. 443 00:22:51,710 --> 00:22:53,220 Así, omitindo directorio tmp. 444 00:22:53,220 --> 00:22:57,440 Así, semellante ao rm, o comportamento por defecto é non traballar en directorios. 445 00:22:57,440 --> 00:23:01,570 >> E, de novo, semellante ao rm, o patrón comportamento - ben, facela funcionar 446 00:23:01,570 --> 00:23:04,230 con directorios é un, trazo-r de distancia. 447 00:23:04,230 --> 00:23:09,240 Copiar recursivamente a temperatura directorio no tmp2. 448 00:23:09,240 --> 00:23:13,700 E agora temos tanto tmp e tmp2, e que non é tan útil desde tmp 449 00:23:13,700 --> 00:23:16,814 estaba baleiro, en primeiro lugar. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Agora imos copiar tmp en tmp2. 452 00:23:22,680 --> 00:23:27,900 E vemos que tmp2 tamén ten o arquivo un, xa que o directorio e 453 00:23:27,900 --> 00:23:32,220 todo dentro do que directorio foi copiado. 454 00:23:32,220 --> 00:23:36,000 E iso pode ser un pouco útil se, digamos que está a traballar 455 00:23:36,000 --> 00:23:38,860 nun conxunto de problemas - 456 00:23:38,860 --> 00:23:41,320 ou de feito, conxuntos de problemas posteriores son aínda máis importante, porque non hai 457 00:23:41,320 --> 00:23:43,660 Será un grupo enteiro de arquivos e cousas. 458 00:23:43,660 --> 00:23:47,010 >> Pero só se quere, por unha fracción de segundo, lle queda tipo, todo ben, eu son 459 00:23:47,010 --> 00:23:50,210 imos tentar algo diferente. 460 00:23:50,210 --> 00:23:57,860 Déixeme só copiar toda a miña pset1 directorio de backup en pset1 de xeito que se 461 00:23:57,860 --> 00:24:01,490 Eu acabo romper as cousas, podo volver ao meu directorio de backup. 462 00:24:01,490 --> 00:24:07,340 Existen formas máis adecuadas de version facer backup do seu código, pero 463 00:24:07,340 --> 00:24:10,610 este é sempre un xeito rápido de facer só se ten unha copia de algo 464 00:24:10,610 --> 00:24:11,860 que está a piques de cambiar. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Entón eco tamén é un comando único que tipo de sillily só vai imprimir en 467 00:24:27,090 --> 00:24:31,540 liña de comandos exactamente o que quería facer eco. 468 00:24:31,540 --> 00:24:32,680 Así ecoam ola. 469 00:24:32,680 --> 00:24:35,420 Nós imos só imprimir ola. 470 00:24:35,420 --> 00:24:38,030 Eco Ola mundo. 471 00:24:38,030 --> 00:24:39,800 Imos imprimir Ola mundo. 472 00:24:39,800 --> 00:24:44,350 Isto vén en uso cando comezar a combinar comandos. 473 00:24:44,350 --> 00:24:48,300 >> E unha vez máis, non esperan que enteiramente entender iso aínda, pero é 474 00:24:48,300 --> 00:24:49,910 algo que ver. 475 00:24:49,910 --> 00:24:52,470 E entón, se está a buscar a exemplos ou entender que quere facer 476 00:24:52,470 --> 00:24:55,030 algo, que pode ser útil. 477 00:24:55,030 --> 00:24:59,020 Entón, imos, como exemplo, ls así, trazo, l. 478 00:24:59,020 --> 00:25:01,160 Entón, aquí eu vexo a saída de ls, trazo, l. 479 00:25:01,160 --> 00:25:06,560 E eu digo: OK, quero almacenar iso nun arquivo. 480 00:25:06,560 --> 00:25:11,620 Todo iso de saída aquí, quero para poñer nun arquivo separado. 481 00:25:11,620 --> 00:25:16,080 >> Entón este pequeno símbolo maior que é o que imos chamar. 482 00:25:16,080 --> 00:25:18,570 Estamos redirixido o saída para un arquivo. 483 00:25:18,570 --> 00:25:21,680 Imos chamar o arquivo bla, porque iso é o que eu tenden a chamalo sempre. 484 00:25:21,680 --> 00:25:26,430 Entón, agora vemos que temos un arquivar bla aquí. 485 00:25:26,430 --> 00:25:30,270 E se eu abri-lo, eu vou velo é exactamente o resultado do comando 486 00:25:30,270 --> 00:25:31,990 que eu só corrín. 487 00:25:31,990 --> 00:25:36,020 E do mesmo xeito, pode - 488 00:25:36,020 --> 00:25:41,260 se iso era a saída a un ficheiro, este é obter a entrada dun arquivo. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 ¿Que é un comando que eu - 491 00:25:47,050 --> 00:25:49,620 >> JOSÉ: Coido que pode usar menos ou máis, probablemente. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Pero como sobre só menos bla? 493 00:25:53,031 --> 00:25:53,930 Eu non sei. 494 00:25:53,930 --> 00:25:57,870 Se entrar neste escenario, como Serie de exercicios hai que é útil para. 495 00:25:57,870 --> 00:25:59,950 >> JOSÉ: Pode canalizar-lo en eco. 496 00:25:59,950 --> 00:26:02,920 Canalice o arquivo en eco para velo. 497 00:26:02,920 --> 00:26:04,060 >> ROB: É pipe. 498 00:26:04,060 --> 00:26:04,860 >> JOSÉ: Sentímolo. 499 00:26:04,860 --> 00:26:06,190 >> ROB: Todo ben. 500 00:26:06,190 --> 00:26:12,720 Polo tanto, esta é a saída a un ficheiro. 501 00:26:12,720 --> 00:26:18,700 Este é un texto a partir do ficheiro e entrega-lo para o programa. 502 00:26:18,700 --> 00:26:20,560 E tamén vai ver este cara. 503 00:26:20,560 --> 00:26:24,410 Polo tanto, esta é unha especie de facer os dous á vez. 504 00:26:24,410 --> 00:26:28,310 E de feito, eu vou presentar dous novos ordes só para usalas. 505 00:26:28,310 --> 00:26:33,060 >> A historia é unha orde útil que é só vai imprimir unha listaxe de 506 00:26:33,060 --> 00:26:34,940 calquera cousa que eu xa executar unha liña de comandos. 507 00:26:34,940 --> 00:26:38,290 Así, podemos ver aquí todo o que eu teño corrido ese tempo. 508 00:26:38,290 --> 00:26:39,540 Moita ls do. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> E outro comando útil é grep que o seu obxectivo é a investigación sobre 511 00:26:48,470 --> 00:26:52,060 texto buscando patróns, ben, ollando para o que 512 00:26:52,060 --> 00:26:53,310 quere que buscar. 513 00:26:53,310 --> 00:26:59,770 E así, un uso práctico aquí é, digamos queremos coller a historia. 514 00:26:59,770 --> 00:27:03,860 E quero ollar os comandos onde eu - o que é un 515 00:27:03,860 --> 00:27:05,000 un útil para buscar? 516 00:27:05,000 --> 00:27:06,898 >> JOSÉ: [inaudível]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Ou imos só ollar para todos toca, por calquera motivo. 518 00:27:09,710 --> 00:27:13,850 Entón é iso que se ve. 519 00:27:13,850 --> 00:27:15,560 E non ten que completamente entender iso. 520 00:27:15,560 --> 00:27:20,570 Pero a idea é aquí, a historia está dando o mesmo resultado que fixo aquí 521 00:27:20,570 --> 00:27:25,030 onde está imprimindo a todo historia de todo o que eu xa executado. 522 00:27:25,030 --> 00:27:27,030 Estamos, entón, de paso, que - 523 00:27:27,030 --> 00:27:30,230 así, en vez de imprimir lo para a pantalla, queremos pasar isto para o 524 00:27:30,230 --> 00:27:34,640 comando grep que estaba a buscar todas as ocorrencias da palabra chamada. 525 00:27:34,640 --> 00:27:40,280 >> E así, a usar esa combinación de ferramentas de historia e grep, podo ver, OK, 526 00:27:40,280 --> 00:27:44,820 aquí está todo comandos que eu xa correr, e aquí está un pouco común. 527 00:27:44,820 --> 00:27:45,510 Estamos na parte inferior. 528 00:27:45,510 --> 00:27:47,930 E iso tamén me dar a orde Eu corrín que tiña o 529 00:27:47,930 --> 00:27:51,240 Preme palabra nel. 530 00:27:51,240 --> 00:27:58,500 Pero o tubo é unha cousa moi útil para a combinación de varios programas. 531 00:27:58,500 --> 00:28:04,670 E, de feito, é un atallo para deixar me historia saída ao ficheiro bla, e 532 00:28:04,670 --> 00:28:10,190 déixeme utilizar o grep bla arquivo como o que quero ollar. 533 00:28:10,190 --> 00:28:13,460 Así, o tubo é só un atallo para estes dous comandos. 534 00:28:13,460 --> 00:28:13,950 Si 535 00:28:13,950 --> 00:28:15,306 >> COLUMNA 4: [inaudível]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: si. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Que é - 539 00:28:21,110 --> 00:28:21,858 Oh 540 00:28:21,858 --> 00:28:24,820 Imos probar. 541 00:28:24,820 --> 00:28:29,170 Entón, gato, can, peixe. 542 00:28:29,170 --> 00:28:33,770 Entón, quero grep. 543 00:28:33,770 --> 00:28:37,680 Dash, R, unha vez máis, será recursiva, entón eu quero baixar abaixo 544 00:28:37,680 --> 00:28:38,870 todos os directorios. 545 00:28:38,870 --> 00:28:43,210 Quero grep recursivamente para todos - e me deixe temporalmente 546 00:28:43,210 --> 00:28:44,460 esta fora do camiño. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Ignore-me. 549 00:28:50,740 --> 00:28:51,360 Aceptar. 550 00:28:51,360 --> 00:28:56,740 >> Entón, quero grep temporalmente para todas as ocorrencias da palabra peixe. 551 00:28:56,740 --> 00:29:00,510 E aquí o que eu estou facendo é grepping recursivamente para a palabra peixe. 552 00:29:00,510 --> 00:29:05,410 E estrela significa máis de todos estes ficheiros deste directorio. 553 00:29:05,410 --> 00:29:08,930 E por iso me deu un permiso rexeitada, porque non está autorizado a ler que 554 00:29:08,930 --> 00:29:10,060 arquivo específico. 555 00:29:10,060 --> 00:29:14,040 Pero el atopou peixes no ficheiro, proba. 556 00:29:14,040 --> 00:29:18,450 >> Eu tamén podería dicir, especialmente, eu só quero ollar no bla ficheiro, en 557 00:29:18,450 --> 00:29:19,580 caso en que non vai atopar nada. 558 00:29:19,580 --> 00:29:20,990 Eu só quero mirar no arquivo, proba. 559 00:29:20,990 --> 00:29:22,240 El vai atopar peixes. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 Isto é un comando moi útil a saber en xeral. 562 00:29:29,260 --> 00:29:31,640 Existen algunhas alternativas para grep que se quere que sexa máis 563 00:29:31,640 --> 00:29:36,780 programador agradable, pero tenden para aínda volver a caer grep. 564 00:29:36,780 --> 00:29:38,030 Dúbidas? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 Aceptar. 567 00:29:40,919 --> 00:29:42,520 >> Existen outros comandos? 568 00:29:42,520 --> 00:29:45,270 Oh 569 00:29:45,270 --> 00:29:48,370 Só un one-off que sempre atopar para ser divertido e cal. 570 00:29:48,370 --> 00:29:55,610 Entón, teña en conta cando estou nesta fermosa modo de pantalla completa, non teño como top 571 00:29:55,610 --> 00:29:56,720 barra de ferramentas ou calquera cousa. 572 00:29:56,720 --> 00:29:59,530 Entón cal só me dá un pouco de bo calendario que é correcto 573 00:29:59,530 --> 00:30:02,380 agora cortar, eu asumo. 574 00:30:02,380 --> 00:30:04,770 Pero pouco agradable de comandos. 575 00:30:04,770 --> 00:30:06,540 >> JOSÉ: É [inaudível]. 576 00:30:06,540 --> 00:30:09,170 Outros comandos que pode ter ver inclúen bumbum e facer. 577 00:30:09,170 --> 00:30:11,180 Nós imos pasar por riba deles en máis detalles posteriormente. 578 00:30:11,180 --> 00:30:13,400 Pero se está a traballar en o PSET, ten que estar 579 00:30:13,400 --> 00:30:15,160 familiarizado con aqueles. 580 00:30:15,160 --> 00:30:16,640 >> ROB: Todo ben. 581 00:30:16,640 --> 00:30:18,520 Preguntas sobre ordes de liña de cousas? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Todo ben. 584 00:30:23,260 --> 00:30:27,416 Entón, imos pasar a algúns Cousas relacionadas-C. 585 00:30:27,416 --> 00:30:28,666 Variables de matemáticas. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 Aceptar. 588 00:30:40,060 --> 00:30:45,230 Así como tivemos matemáticas en scratch, Tamén pode usar as matemáticas en C. 589 00:30:45,230 --> 00:30:49,270 >> Antes de chegar a iso por completo, así variables. 590 00:30:49,270 --> 00:30:53,920 Lembre que sempre que declarar un variable como int x ou y boia, vostede 591 00:30:53,920 --> 00:30:56,710 ten que dar antes de escribir nome da variable. 592 00:30:56,710 --> 00:31:03,020 Así, os tipos que vimos ata agora son int, float, double, long long, que eu 593 00:31:03,020 --> 00:31:06,150 de feito, non sei se temos visto que, ata agora. 594 00:31:06,150 --> 00:31:07,700 >> Hai algúns outros. 595 00:31:07,700 --> 00:31:09,990 Nós ver Char. 596 00:31:09,990 --> 00:31:13,920 Hai pouco, que é como se fose o contrario do longa, longa, onde é 597 00:31:13,920 --> 00:31:16,650 menor que un número enteiro. 598 00:31:16,650 --> 00:31:18,580 Vimos tamén cadea. 599 00:31:18,580 --> 00:31:23,070 Entón, o que é especial sobre corda? 600 00:31:23,070 --> 00:31:25,350 Por que digo que é non é así como int? 601 00:31:25,350 --> 00:31:27,030 >> COLUMNA 4: En realidade non existe. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Yeah. 603 00:31:27,990 --> 00:31:31,820 Así, a única razón pola que temos corda é porque cando fai 604 00:31:31,820 --> 00:31:33,215 hash inclúen cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 E veremos exemplos desta tarde - Oh, iso non tratar con isto ben - 607 00:31:42,670 --> 00:31:46,160 onde cs50.h está facendo algo ao longo das liñas de Tipo 608 00:31:46,160 --> 00:31:49,230 def, char estrela, corda. 609 00:31:49,230 --> 00:31:53,280 >> E o que é dicir que nós non sabemos aínda sabe o que unha estrela char é aínda. 610 00:31:53,280 --> 00:31:56,770 Pero iso está dicindo que queremos cadea. 611 00:31:56,770 --> 00:32:00,250 Calquera lugar que está a usar corda, vostede podería usar o carácter estrela, 612 00:32:00,250 --> 00:32:04,670 que realmente é un tipo que existe na linguaxe C. 613 00:32:04,670 --> 00:32:06,680 Pero nós imos chegar a iso. 614 00:32:06,680 --> 00:32:07,860 Ah, e que vai á dereita de volta. 615 00:32:07,860 --> 00:32:10,170 Neat. 616 00:32:10,170 --> 00:32:15,370 >> Así, mesmo con bool onde o verdadeiro eo falso. 617 00:32:15,370 --> 00:32:22,510 Isto non é realmente un tipo de embutido en C. Pola contra, é só, que isto ten 618 00:32:22,510 --> 00:32:23,740 o valor cero? 619 00:32:23,740 --> 00:32:26,200 Entón imos considerar só que é falsa. 620 00:32:26,200 --> 00:32:27,350 Isto ten o valor - 621 00:32:27,350 --> 00:32:30,530 ben, iso ten ningún valor que non se cero? 622 00:32:30,530 --> 00:32:32,200 Entón imos considerar que é certa. 623 00:32:32,200 --> 00:32:35,940 Entón, é certo, dous é certo, algo distinto de cero é certo. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Polo tanto, estas son eses. 626 00:32:42,790 --> 00:32:47,624 Dúbidas sobre declaración de variables e tipos de variables e todo isto? 627 00:32:47,624 --> 00:32:48,100 É. 628 00:32:48,100 --> 00:32:52,384 >> COLUMNA 4: Por moito tempo longo, no libro, el dixo que tiña que ser long long int. 629 00:32:52,384 --> 00:32:54,288 Pero vai funcionar moi longo tempo? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Entón eses modificadores de tipo. 632 00:33:01,470 --> 00:33:04,170 Así, int x. 633 00:33:04,170 --> 00:33:07,710 Así, podemos tamén dicir unsigned int x. 634 00:33:07,710 --> 00:33:09,640 Podemos dicir short int x. 635 00:33:09,640 --> 00:33:12,570 Podemos dicir long long int x. 636 00:33:12,570 --> 00:33:17,250 Pero practicamente calquera desas cousas que me só dixo, int sen sinal, short int, 637 00:33:17,250 --> 00:33:21,480 long long int, pode se librar de int e el vai asumir 638 00:33:21,480 --> 00:33:22,510 que quería dicir int. 639 00:33:22,510 --> 00:33:26,045 X Entón non asinados, que significa - 640 00:33:26,045 --> 00:33:29,400 sabe como normalmente cun int, pode dicir que x é igual a 3 negativo? 641 00:33:29,400 --> 00:33:31,636 Cun int sen sinal, non pode. 642 00:33:31,636 --> 00:33:34,480 >> JOSÉ: E unha vez máis, para a cámara, o pregunta era: cal é a diferenza 643 00:33:34,480 --> 00:33:37,796 entre long long int e só o tempo? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Yeah. 645 00:33:38,410 --> 00:33:42,850 Entón, eu case nunca escribir long long int. 646 00:33:42,850 --> 00:33:44,100 Vou escribir long long. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSÉ: Algunha pregunta? 649 00:33:50,636 --> 00:33:51,886 >> ROB: Aceptar. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Pequeno recordatorio tan parvo de que é como declaramos unha variable e arrincar 652 00:34:02,390 --> 00:34:04,450 a variable e declarar outra variable e arrincar 653 00:34:04,450 --> 00:34:05,870 todo iso nunha única etapa. 654 00:34:05,870 --> 00:34:09,370 Así, a declaración da variable e a variable de inicio non ten 655 00:34:09,370 --> 00:34:11,120 a, pero pode ser na mesma liña. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Polo tanto, temos os operadores matemáticos estándar que está acostumado - 658 00:34:20,060 --> 00:34:22,199 máis, menos, dividir os momentos. 659 00:34:22,199 --> 00:34:24,389 Hai tamén modulo, o que imos ver. 660 00:34:24,389 --> 00:34:29,060 Non hai, polo menos en C, un built-in potencia 661 00:34:29,060 --> 00:34:31,765 operador circunflexo exponenciação. 662 00:34:31,765 --> 00:34:33,770 Así, hai un operador acento circunflexo, pero non é poder. 663 00:34:33,770 --> 00:34:34,239 >> JOSÉ: Pero non é exponenciação, Si 664 00:34:34,239 --> 00:34:36,210 >> ROB: Non use o acento circunflexo supoñer que iso significa 665 00:34:36,210 --> 00:34:39,980 como cadrado ou calquera outra cousa. 666 00:34:39,980 --> 00:34:42,289 Por iso, algunhas cousas a ter en mente sobre división. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Eu estarei. 669 00:34:48,880 --> 00:34:51,315 Así declarou resposta initialize. 670 00:34:51,315 --> 00:34:54,670 Entón, nós estamos dicindo resposta flotador é igual a 1 dividido por 10. 671 00:34:54,670 --> 00:34:57,500 Imprimir resposta a dúas cifras decimais. 672 00:34:57,500 --> 00:35:02,180 >> E este é o tipo de cousas que eu sería o home printf para descubrir que 673 00:35:02,180 --> 00:35:05,110 o que diaños%, punto, 2f significa? 674 00:35:05,110 --> 00:35:07,930 E iso só significa que, así, ignorando a 0,2. 675 00:35:07,930 --> 00:35:10,420 E%, f é o que usan para imprimir a flotar. 676 00:35:10,420 --> 00:35:15,370 O 0.2 está dicindo, a impresión que flotar ata dúas cifras decimais. 677 00:35:15,370 --> 00:35:19,600 Polo tanto, este programa ten un erro, e pode xa vin que antes nalgún 678 00:35:19,600 --> 00:35:20,870 Por suposto CS antes. 679 00:35:20,870 --> 00:35:22,170 Pero o que é este erro? 680 00:35:22,170 --> 00:35:23,050 >> COLUMNA 5: Cero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Yeah. 682 00:35:24,130 --> 00:35:29,630 Así, cando dicimos, a resposta é igual a 1 dividido por 10, queremos que o 683 00:35:29,630 --> 00:35:31,610 responder a 0,1. 684 00:35:31,610 --> 00:35:37,450 Pero 1 dividido por 10, 1 é un número enteiro, 10 é un número enteiro. 685 00:35:37,450 --> 00:35:41,060 E así, cando facemos un enteiro dividido por un enteiro, imos voltar 686 00:35:41,060 --> 00:35:42,190 un enteiro. 687 00:35:42,190 --> 00:35:43,660 Entón 1 dividido por 10 é de 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Dende que necesita dar un enteiro, el só vai xogar fóra que 689 00:35:46,760 --> 00:35:49,410 casa decimal e dicir que a resposta é 0. 690 00:35:49,410 --> 00:35:55,314 E así, cando imprimir responder aquí, vai imprimir 0,00. 691 00:35:55,314 --> 00:35:58,430 >> JOSÉ: E así como unha nota, realmente xoga fóra o que hai despois da 692 00:35:58,430 --> 00:35:59,390 punto decimal. 693 00:35:59,390 --> 00:36:03,180 Entón, se, no canto tiña 6 dividido por 10, pode pensar que ía darlle 694 00:36:03,180 --> 00:36:05,200 0,6 e entón redondear a 1. 695 00:36:05,200 --> 00:36:10,520 Pero, en realidade, o que pasa cando se escribe tarefas é que deixa caer o que se 696 00:36:10,520 --> 00:36:11,470 despois do punto decimal. 697 00:36:11,470 --> 00:36:13,020 Así, se fai 0,6 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Yeah. 699 00:36:13,370 --> 00:36:15,160 E nós imos dicir truncada por iso. 700 00:36:15,160 --> 00:36:21,760 Así, sempre que converter a un int, o decimal é truncado. 701 00:36:21,760 --> 00:36:23,980 Así, a corrección para que - non hai de feito, dous. 702 00:36:23,980 --> 00:36:27,890 E eu vou facer iso, segundo, porque esta é unha solución moito máis fácil. 703 00:36:27,890 --> 00:36:32,670 >> Entón, unha corrección é usar flotadores na división. 704 00:36:32,670 --> 00:36:34,720 E realmente, só ten que facer un deles un coche alegórico. 705 00:36:34,720 --> 00:36:37,400 Pero é só un pouco máis clara para facer os dous flotadores. 706 00:36:37,400 --> 00:36:41,170 Entón, 1,0 dividido por 10,0 é división de dous coches alegóricos. 707 00:36:41,170 --> 00:36:43,970 Polo tanto, a resposta vai acabar sendo un float, e así vai 708 00:36:43,970 --> 00:36:48,050 correctamente imprimir 0,10 aquí. 709 00:36:48,050 --> 00:36:52,220 >> Algo que non funciona tan ben sobre o que é, así, con certeza, era fácil 710 00:36:52,220 --> 00:36:56,240 suficiente para converter un a un flotar, tornándose a 1.0. 711 00:36:56,240 --> 00:37:02,180 Pero e se en vez tivemos dous enteiros como int x é igual a 1 e int y 712 00:37:02,180 --> 00:37:05,660 é igual a 10, e logo, queriamos para que x dividido por y? 713 00:37:05,660 --> 00:37:10,420 Así, non é fácil de só facer x.0 ou algo así. 714 00:37:10,420 --> 00:37:12,790 >> Así, a corrección para que está lanzando. 715 00:37:12,790 --> 00:37:19,780 Entón, lanzando é un xeito en C para converter desde un tipo de variable a outro. 716 00:37:19,780 --> 00:37:22,320 Entón, aquí, 1 é un enteiro. 717 00:37:22,320 --> 00:37:27,050 E, poñendo esta boia fronte tanto, estamos lanzando un a un float. 718 00:37:27,050 --> 00:37:30,350 E para que isto ha converter a 1 a 1,0 un. 719 00:37:30,350 --> 00:37:33,380 E isto converterá a 10 a unha media de 10,0. 720 00:37:33,380 --> 00:37:36,790 >> E entón as cousas se comportan de forma semellante ao versión anterior, só mostrou 721 00:37:36,790 --> 00:37:42,190 en que, como se esperaba, obtemos 0,10 e só pode imprimir iso. 722 00:37:42,190 --> 00:37:44,120 E podemos facelo con variables, tamén. 723 00:37:44,120 --> 00:37:47,376 Así, podemos dicir, float x dividido polo flotador y. 724 00:37:47,376 --> 00:37:48,626 >> JOSÉ: Algunha pregunta? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Entón, así como en matemáticas estándar, temos precedencia do operador. 727 00:38:00,090 --> 00:38:06,960 Entón, na clase de matemáticas, que é máis probable chamalo orde das operacións. 728 00:38:06,960 --> 00:38:09,890 Aquí, o termo oficial é precedencia do operador. 729 00:38:09,890 --> 00:38:15,230 Pero a precedencia do operador, ou máis operadores, é como sería de esperar. 730 00:38:15,230 --> 00:38:22,660 >> Así como en matemáticas, 2 veces 10 é vai ser agrupados máis preto do que 731 00:38:22,660 --> 00:38:25,410 10 esta dividida por dous e logo, 2. 732 00:38:25,410 --> 00:38:29,745 A orde das operacións, que vai facer 2 10 veces, 10 dividido por dous, e despois 733 00:38:29,745 --> 00:38:32,720 que vai facer 20 máis 5 máis 2. 734 00:38:32,720 --> 00:38:37,020 Entón, é como se esperaba, e pode usar parénteses para agrupar expresións. 735 00:38:37,020 --> 00:38:41,063 Non pode usar corchetes para agrupar expresións. 736 00:38:41,063 --> 00:38:41,544 Si? 737 00:38:41,544 --> 00:38:43,468 >> COLUMNA 5: Vostede podería realmente só volver un segundo? 738 00:38:43,468 --> 00:38:47,316 Pode lanzar un int nunha cadea? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Entón, en C, pode lanzar calquera cousa Quere o que quere. 740 00:38:53,330 --> 00:38:55,600 Iso non significa que é unha boa cousa que facer. 741 00:38:55,600 --> 00:38:59,760 Entón, cando lanzar un int para unha corda, o que significa - 742 00:38:59,760 --> 00:39:03,240 e nós imos entrar neste moito máis profundamente - 743 00:39:03,240 --> 00:39:03,720 >> JOSÉ: Moito máis tarde. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Eu non quero dicir moito máis tarde, entón eu intento cambiar a miña frase. 745 00:39:06,840 --> 00:39:13,370 Nós imos entrar máis minuciosamente máis tarde, onde realmente cando ten un 746 00:39:13,370 --> 00:39:14,810 variable cadea - 747 00:39:14,810 --> 00:39:17,160 así que unha corda pode ser arbitrariamente moito tempo, non? 748 00:39:17,160 --> 00:39:21,850 E nós temos que chegou a dicir que é un int catro bytes e longo tempo é de oito 749 00:39:21,850 --> 00:39:23,620 bytes e un float é de catro bytes. 750 00:39:23,620 --> 00:39:29,520 Así, unha corda, como un int, só ten un certo número de bytes a ela. 751 00:39:29,520 --> 00:39:31,800 E iso vai ser catro bytes. 752 00:39:31,800 --> 00:39:34,750 >> Pero unha serie pode ser moi arbitrariamente longo, non? 753 00:39:34,750 --> 00:39:40,190 Entón Ola mundo xa, si é 10 caracteres ou calquera outra cousa, que xa está 754 00:39:40,190 --> 00:39:42,670 será ao longo dos 4 bytes I poden encaixar nunha cadea. 755 00:39:42,670 --> 00:39:51,140 E así como cordas realmente funciona é que son, onde na memoria esa secuencia 756 00:39:51,140 --> 00:39:52,380 está a ser mantido. 757 00:39:52,380 --> 00:39:57,290 >> E así por aquí, cando digo corda x Ola mundo é igual, dentro de x é 758 00:39:57,290 --> 00:40:01,840 só dicindo, oh, Ola mundo almacénase neste lugar especial na memoria. 759 00:40:01,840 --> 00:40:07,060 Entón, se nós tratamos lanzar un enteiro para un cadea, entón estamos intentando interpretar 760 00:40:07,060 --> 00:40:10,500 algures aleatoria de memoria como unha cadea. 761 00:40:10,500 --> 00:40:14,465 E iso case sempre rompe as cousas. 762 00:40:14,465 --> 00:40:17,040 >> JOSÉ: Pero se iso confunde ti, nós estaremos cubrindo-o 763 00:40:17,040 --> 00:40:17,550 máis en profundidade máis tarde. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Yeah. 765 00:40:17,850 --> 00:40:20,540 Este é o lugar onde está indo para entrar en punteiros. 766 00:40:20,540 --> 00:40:25,485 E esa é unha parte significativa de dúas semanas de curso. 767 00:40:25,485 --> 00:40:28,275 >> COLUMNA 6: Funciona como obxectos noutras linguas ou non verdade? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Entón, noutras linguas, obxectos sería representado mediante punteiros. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Non é o mesmo, con todo. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Calquera pensamentos? 773 00:40:42,910 --> 00:40:43,760 >> JOSÉ: Non 774 00:40:43,760 --> 00:40:44,185 Sen pensamentos. 775 00:40:44,185 --> 00:40:44,980 >> ROB: Aceptar. 776 00:40:44,980 --> 00:40:46,994 >> JOSÉ: Next. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Só tes que ir con iso. 778 00:40:48,255 --> 00:40:48,670 Todo ben. 779 00:40:48,670 --> 00:40:51,120 Así módulo. 780 00:40:51,120 --> 00:40:53,900 Así como temos máis, menos, dividir e multiplicar. 781 00:40:53,900 --> 00:40:56,720 Entón modulo é aquel que se pode non teña visto antes. 782 00:40:56,720 --> 00:40:59,540 E el só di, dar me o resto. 783 00:40:59,540 --> 00:41:02,850 Así, o 55% 10. 784 00:41:02,850 --> 00:41:06,840 O resto de facer 55 dividido por 10 sería 5. 785 00:41:06,840 --> 00:41:09,630 Así, o 55% de 10 é 5. 786 00:41:09,630 --> 00:41:12,260 E 3% 5 será de 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 será 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 será 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSÉ: Unha cousa a notar, con iso, tamén, é que non funcione como se esperaba 790 00:41:20,670 --> 00:41:22,700 se usa un número negativo. 791 00:41:22,700 --> 00:41:26,215 Entón negativo do 5% 4, algunhas persoas Pode pensar que é - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 o que pensas negativo 5% 4 sería? 794 00:41:33,808 --> 00:41:34,792 >> COLUMNA 5: Unha. 795 00:41:34,792 --> 00:41:37,920 >> JOSÉ: Entón, algunhas persoas din que un, algunhas persoas din que unha negativa. 796 00:41:37,920 --> 00:41:38,450 Pero o que - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Eu non tería sequera , Dixo un deles. 798 00:41:40,820 --> 00:41:42,370 >> JOSÉ: Dous, Sentímolo. 799 00:41:42,370 --> 00:41:43,240 Algunhas persoas din - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Tres. 801 00:41:43,450 --> 00:41:43,800 >> JOSÉ: Tres? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negativo - 803 00:41:44,890 --> 00:41:45,950 cal era o - negativo de cinco - 804 00:41:45,950 --> 00:41:47,100 >> JOSÉ: Tres, tres, tres. 805 00:41:47,100 --> 00:41:48,450 Sentímolo. 806 00:41:48,450 --> 00:41:51,910 Porque modulo, en xeral, cando ten vin isto en outro lugar, iso normalmente significa 807 00:41:51,910 --> 00:41:54,000 voltar un número positivo, non? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Entón, cando dicimos en matemáticas, o 10% do, tenden a querer darlle - 809 00:42:01,160 --> 00:42:05,980 se mod por 10, entón esperamos obter un número entre 0 e 9. 810 00:42:05,980 --> 00:42:09,860 Desde aquí, que non é o caso que terá números negativos retorno. 811 00:42:09,860 --> 00:42:15,898 >> JOSÉ: Entón negativo do 5% 4 sería negativo 1. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Pero é raro que é mod-ing números negativos, para comezar. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Ir iso. 815 00:42:25,970 --> 00:42:27,314 >> JOSÉ: É. 816 00:42:27,314 --> 00:42:29,420 >> ROB: meh. 817 00:42:29,420 --> 00:42:29,990 Aceptar. 818 00:42:29,990 --> 00:42:36,400 Así, unha última cousa a destacar sobre flotadores é que é un comportamento perigoso, 819 00:42:36,400 --> 00:42:39,850 pero Carrozas non son unha exacta representación. 820 00:42:39,850 --> 00:42:46,190 Entón, volvendo a bytes de novo, lembre-se que un int é sempre catro bytes e un 821 00:42:46,190 --> 00:42:47,830 flotador sempre catro bytes. 822 00:42:47,830 --> 00:42:51,340 Así, o exemplo de Lucas é moi bo. 823 00:42:51,340 --> 00:42:55,730 >> Entón, creo que de 1 dividido por 3. 824 00:42:55,730 --> 00:42:57,800 Entón 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Se eu só teño 32 bits, como pode Eu gardar 0,33333 exactamente? 826 00:43:03,540 --> 00:43:07,250 E quizais, por algunha razón, di: todo ben, ben, imos só dicir que 827 00:43:07,250 --> 00:43:13,210 que este particular 1011001, imos só dicir que debe ser 0.333333. 828 00:43:13,210 --> 00:43:16,960 Ben, só ten un número finito de eses bits, polo que é imposible 829 00:43:16,960 --> 00:43:22,550 representar cada punto flotante valor dado só 32 bits. 830 00:43:22,550 --> 00:43:25,580 >> Ben, é imposible representar calquera valor de punto flotante dado infinito - 831 00:43:25,580 --> 00:43:28,480 ben, dado calquera número finito de bits. 832 00:43:28,480 --> 00:43:38,265 Polo tanto, a cuestión aquí é, así, cando usamos para imprimir en dúas cifras decimais, 833 00:43:38,265 --> 00:43:42,000 que fixemos correctamente obter a resposta 0,10. 834 00:43:42,000 --> 00:43:47,510 Pero debaixo do capó, é realmente sendo almacenadas tan próximo como sexa posible 835 00:43:47,510 --> 00:43:51,790 0,10 como eses bits pode representar. 836 00:43:51,790 --> 00:43:53,200 É este o próximo foto? 837 00:43:53,200 --> 00:43:53,830 Ou non é? 838 00:43:53,830 --> 00:43:54,660 >> JOSÉ: Si, é iso. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSÉ: Si, pode só tirar as notas superior un pouco. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Eu só vou para aumentar en no último niso. 842 00:43:59,700 --> 00:44:00,950 Oh meu Deus, iso é [inaudível]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Así que o número. 845 00:44:08,300 --> 00:44:12,300 Iso é o que será impreso executar o programa. 846 00:44:12,300 --> 00:44:20,340 E teña en conta que non é realmente un gran negocio se estamos só preocuparse como 847 00:44:20,340 --> 00:44:21,920 2-3 cifras decimais. 848 00:44:21,920 --> 00:44:26,700 Como nós só orixinalmente impreso 0,10, e é por iso que non viu nada de malo. 849 00:44:26,700 --> 00:44:31,380 Pero unha vez que comezan a entrar no exacto, número exacto de que é 850 00:44:31,380 --> 00:44:35,660 representando, vemos que non pode exactamente representar 0,1. 851 00:44:35,660 --> 00:44:40,900 >> E parte do problema aquí é como, Todo ben, todo ben, pero, ben, 852 00:44:40,900 --> 00:44:46,120 primeiro, o que se intentou facer, resposta é igual a igual a 0,1? 853 00:44:46,120 --> 00:44:49,200 É iso que vai voltar verdadeiro ou falso? 854 00:44:49,200 --> 00:44:51,850 E por iso é difícil de dicir. 855 00:44:51,850 --> 00:44:53,330 Eu creo que realmente pode voltar certo. 856 00:44:53,330 --> 00:44:55,265 Será que vai en primeiro lugar - 857 00:44:55,265 --> 00:44:56,180 Eu non sei. 858 00:44:56,180 --> 00:45:00,090 A resposta é unha vez que comezar a tratar con valores de punto flotante, ten moito 859 00:45:00,090 --> 00:45:05,150 moito non debe estar usando a igualdade debido a esta imprecisión. 860 00:45:05,150 --> 00:45:09,470 >> E para todo o que sabe, é o centésimo casa decimal que o 861 00:45:09,470 --> 00:45:13,670 punto flotante non era capaz para xestionar correctamente. 862 00:45:13,670 --> 00:45:18,180 E así, a igualdade só vai fallar mesmo aínda que o número - se fose 863 00:45:18,180 --> 00:45:24,450 mediante cifras exactas, as cifras deben ser exactamente o mesmo. 864 00:45:24,450 --> 00:45:27,790 É ao longo duns 50 cálculos usando estes flotante 865 00:45:27,790 --> 00:45:30,270 valores de punto, o erro pode construír arriba e cara arriba e cara arriba, e 866 00:45:30,270 --> 00:45:31,125 as cousas só quedan mal. 867 00:45:31,125 --> 00:45:33,870 >> JOSÉ: E houbo realmente exemplos famosos de isto acontecer. 868 00:45:33,870 --> 00:45:37,190 Como os enxeñeiros da NASA comezar esta erradas, causando foguetes para explotar en 869 00:45:37,190 --> 00:45:38,665 o aire despois de seren publicados. 870 00:45:38,665 --> 00:45:41,490 E moitas cuestións como esta. 871 00:45:41,490 --> 00:45:41,956 Entón, si. 872 00:45:41,956 --> 00:45:45,218 >> COLUMNA 6: Cando di que 0,3 m, el truncar o resto? 873 00:45:45,218 --> 00:45:46,468 Ou será que redondear para arriba ou para abaixo? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Será printf arredor del? 876 00:45:50,200 --> 00:45:52,180 >> JOSÉ: Coido que trunca printf. 877 00:45:52,180 --> 00:45:52,640 >> ROB: Aceptar. 878 00:45:52,640 --> 00:45:59,890 Así, podemos ir de igual xeito no oposto dirección deste, onde, neste caso, 879 00:45:59,890 --> 00:46:03,320 o máis próximo que podería representar 0,1 Foi con ese número. 880 00:46:03,320 --> 00:46:06,820 O máis próximo que pode ser capaz de representan 0,2 é o contrario 881 00:46:06,820 --> 00:46:11,420 dirección, 0,199999996356 ou algo así. 882 00:46:11,420 --> 00:46:17,480 Entón, se nós fomos nesa dirección de cousas, entón printf 0,3 f retornaría 883 00:46:17,480 --> 00:46:20,866 1,99 en vez de 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSÉ: E eu non estou totalmente seguro sobre iso. 885 00:46:22,960 --> 00:46:25,430 Pode querer escribir un pequeno, pouco programa para comprobar iso. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Con todo, o que temos seguro é de que se intentou lanzar isto para un 887 00:46:29,370 --> 00:46:33,660 int, e lanzando para un int vai causar-lle a truncar o decimal, se 888 00:46:33,660 --> 00:46:38,140 tentar converter 1.9999999 para un int, vai ter un. 889 00:46:38,140 --> 00:46:41,440 E así, ten que xeralmente usar o función round na biblioteca matemática. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Dúbidas? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 Aceptar. 894 00:46:48,982 --> 00:46:54,000 >> JOSÉ: movendo Así, para condicións e expresións booleanas. 895 00:46:54,000 --> 00:46:58,120 Entón, xa viu iso antes. 896 00:46:58,120 --> 00:47:07,420 E, de feito, déixeme que seguro que o meu ordenador está en formato correcto aquí. 897 00:47:07,420 --> 00:47:08,670 Espazo. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Sentímolo, nós imos ter que tratar un pouco con corte nos bordos. 900 00:47:13,870 --> 00:47:15,830 >> Pero si, vostedes viron que antes en scratch. 901 00:47:15,830 --> 00:47:19,930 Entón, iso aquí é unha expresión o cal é utilizado en 902 00:47:19,930 --> 00:47:21,250 unha instrución condicional. 903 00:47:21,250 --> 00:47:23,930 Entón conteste maior que cero ganas dicir verdadeiro ou falso. 904 00:47:23,930 --> 00:47:26,530 E estas son realmente importante, porque eles nos permiten introducir 905 00:47:26,530 --> 00:47:28,670 lóxica na nosa código. 906 00:47:28,670 --> 00:47:32,820 >> Así, por exemplo, este é un programa escrito en scratch que pide ao usuario 907 00:47:32,820 --> 00:47:36,980 para un enteiro e di a eles se o enteiro que lle deron foi unha 908 00:47:36,980 --> 00:47:38,690 número positivo ou negativo. 909 00:47:38,690 --> 00:47:42,980 E a conversión por aquí a ver se imprimir por primeira vez a declaración, 910 00:47:42,980 --> 00:47:43,870 déame un enteiro. 911 00:47:43,870 --> 00:47:45,980 E entón lles pedir para un enteiro. 912 00:47:45,980 --> 00:47:49,870 >> E entón usa a lóxica condicional sobre aquí para comprobar se este número 913 00:47:49,870 --> 00:47:52,030 foi realmente maior que cero ou non. 914 00:47:52,030 --> 00:47:58,960 Polo tanto, temos aquí unha expresión booleana dentro dunha condicional Se comunicado. 915 00:47:58,960 --> 00:48:00,660 Hai algunha dúbida? 916 00:48:00,660 --> 00:48:03,030 Hai algunha dúbida sobre iso? 917 00:48:03,030 --> 00:48:03,950 Aceptar. 918 00:48:03,950 --> 00:48:06,140 >> Polo tanto, non hai máis que maior que, por suposto. 919 00:48:06,140 --> 00:48:10,385 Pode construír expresións booleanas usar a maioría dos tipos de cousas que 920 00:48:10,385 --> 00:48:11,150 pensaría en matemáticas. 921 00:48:11,150 --> 00:48:12,370 Así superior. 922 00:48:12,370 --> 00:48:13,740 Iso debe ser un menor que. 923 00:48:13,740 --> 00:48:14,990 Sentímolo. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 E o paso. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Deus non permita que deixalo. 927 00:48:22,971 --> 00:48:23,620 >> JOSÉ: Todo ben. 928 00:48:23,620 --> 00:48:25,950 Así, máis que, menor que, maior do que, o igual a, menos 929 00:48:25,950 --> 00:48:27,070 do que, o igual a. 930 00:48:27,070 --> 00:48:31,980 Usan dous iguais para comprobar a igualdade, porque só é igual a medio 931 00:48:31,980 --> 00:48:32,810 concesión, non? 932 00:48:32,810 --> 00:48:33,140 Si 933 00:48:33,140 --> 00:48:37,130 E entón podemos tampouco é igual por usando o punto de exclamación, é igual. 934 00:48:37,130 --> 00:48:41,530 >> E este símbolo signo de admiración pode tamén ser estendido, de xeito que, se quere 935 00:48:41,530 --> 00:48:44,050 para inverter calquera tipo de Boolean expresión, pode facelo. 936 00:48:44,050 --> 00:48:48,530 Entón, que vai avaliar a realidade só se a resposta é menos 937 00:48:48,530 --> 00:48:51,240 que ou igual a cero. 938 00:48:51,240 --> 00:48:53,950 Calquera dúbida sobre iso? 939 00:48:53,950 --> 00:48:55,180 Aceptar. 940 00:48:55,180 --> 00:48:58,840 >> Entón, tamén se pode combina-las expresións utilizando lóxica E e 941 00:48:58,840 --> 00:48:59,790 Ou lóxico. 942 00:48:59,790 --> 00:49:03,530 Polo tanto, este é só o símbolo E, que debe ser Shift 7. 943 00:49:03,530 --> 00:49:07,720 E este é o símbolo pipe, que se non un caso menor L. É a única 944 00:49:07,720 --> 00:49:09,440 iso mesmo por riba da súa tecla Intro. 945 00:49:09,440 --> 00:49:12,870 Entón usa dous destes para simbolizar lóxico ea lóxica Ou. 946 00:49:12,870 --> 00:49:18,180 >> Entón, iso só vai voltar true se a resposta é un, dous, tres, ou catro. 947 00:49:18,180 --> 00:49:23,030 E iso só vai voltar true se a resposta está ademais de que en ambos os dous lados. 948 00:49:23,030 --> 00:49:26,190 Polo tanto, non é un, dous, tres, ou catro. 949 00:49:26,190 --> 00:49:28,385 E a forma que usaría que nunha expresión - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Ou un cero ou un cinco. 951 00:49:29,990 --> 00:49:32,200 >> JOSÉ: Cero ou un cinco. 952 00:49:32,200 --> 00:49:32,380 Sentímolo. 953 00:49:32,380 --> 00:49:33,320 Si, si, si. 954 00:49:33,320 --> 00:49:34,180 Aceptar. 955 00:49:34,180 --> 00:49:38,980 E aquí, agora, do mesmo xeito que usaría esa expresión, un menor 956 00:49:38,980 --> 00:49:42,000 lado dunha Se condicional expresión declaración, tamén usaría o 957 00:49:42,000 --> 00:49:47,800 Así mesmo, só poñelas dentro dos parénteses da instrución If. 958 00:49:47,800 --> 00:49:54,020 Polo tanto, este printf só será accionada se a resposta é un, dous, tres, ou catro. 959 00:49:54,020 --> 00:49:56,002 Calquera dúbida sobre a combinación expresións? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Polo tanto, non hai outra condicional construto que chamamos If / Else. 962 00:50:04,240 --> 00:50:08,120 Entón, basicamente, significa que agora, ok, se algo que eu quería ver non era 963 00:50:08,120 --> 00:50:11,600 feito, entón vai para o Else e realizar a outra acción. 964 00:50:11,600 --> 00:50:15,570 Polo tanto, neste caso particular, eu pregunta o usuario a un número enteiro. 965 00:50:15,570 --> 00:50:17,790 É o número enteiro maior que cero? 966 00:50:17,790 --> 00:50:18,310 Si? 967 00:50:18,310 --> 00:50:20,100 Ben, entón eles escolleron un número positivo. 968 00:50:20,100 --> 00:50:22,320 Se non, entón debe ter ser negativo ou cero. 969 00:50:22,320 --> 00:50:27,530 Entón tes para un número negativo ou un cero neste caso. 970 00:50:27,530 --> 00:50:29,235 Si 971 00:50:29,235 --> 00:50:30,485 Ou un cero. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> E despois tamén temos If / Else, Se e Else. 974 00:50:39,300 --> 00:50:45,640 Entón, iso nos permite realizar unha secuencia de cousas só os primeiros fallan. 975 00:50:45,640 --> 00:50:49,540 Polo tanto, neste caso, agora estamos facendo o último que incorporarse cero. 976 00:50:49,540 --> 00:50:53,080 Entón, se eles non escolleron un positivo nin un número negativo, entón eles deben 977 00:50:53,080 --> 00:50:53,640 escoller cero. 978 00:50:53,640 --> 00:50:56,720 Entón, el só vai para abaixo da cadea como esta. 979 00:50:56,720 --> 00:50:59,960 >> Así, un exemplo de como un Se é distinto de - 980 00:50:59,960 --> 00:51:02,590 un If / Else é diferente de só unha secuencia de IFS. 981 00:51:02,590 --> 00:51:07,680 E esta é unha pregunta común que a xente pregunta é, así, se comeza como un 982 00:51:07,680 --> 00:51:11,265 95 en CS50, o que será este programa de che dicir? 983 00:51:11,265 --> 00:51:12,600 >> COLUMNA 5: Ten un A. 984 00:51:12,600 --> 00:51:13,490 >> JOSÉ: Si 985 00:51:13,490 --> 00:51:14,960 Ten todos os un deses dereita. 986 00:51:14,960 --> 00:51:17,130 Ten un A, ten un B, vostede teño un C e un D, ​​non? 987 00:51:17,130 --> 00:51:19,770 Entón, todo isto se valorou en orde. 988 00:51:19,770 --> 00:51:23,570 Así, mentres unha 95 é maior que 90, é tamén maior que 80, é tamén 989 00:51:23,570 --> 00:51:25,790 maior que 70, e é tamén maior que 60. 990 00:51:25,790 --> 00:51:27,620 Entón tes todas esas calidades. 991 00:51:27,620 --> 00:51:31,630 E supoño que faría só quero o A. 992 00:51:31,630 --> 00:51:34,060 >> O xeito de solucionar isto é substituír aqueles con Else / Se 's. 993 00:51:34,060 --> 00:51:37,540 Polo tanto, neste escenario, el ve que o 95 é superior a 90, e, a continuación, fai 994 00:51:37,540 --> 00:51:38,885 non avalía o resto das declaracións. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Calquera dúbida sobre iso? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Polo tanto, hai outro tipo de condicional estrutura que temos aquí, que nós 999 00:51:52,470 --> 00:51:53,390 chamar unha instrución switch. 1000 00:51:53,390 --> 00:51:57,390 Entón, iso permite que verifique basicamente cal é o valor dun número que poñer 1001 00:51:57,390 --> 00:51:59,000 para a instrución switch é. 1002 00:51:59,000 --> 00:52:03,200 Polo tanto, neste escenario, estamos alternando en n, e nós estamos dicindo, Oh, se n é 1003 00:52:03,200 --> 00:52:04,710 un, a continuación, imprimir esta afirmación. 1004 00:52:04,710 --> 00:52:07,910 E, a continuación, romper, o que significa que a saída fóra da instrución switch. 1005 00:52:07,910 --> 00:52:12,670 >> Se non fose un, entón, así, só finalmente comprobar todos estes casos. 1006 00:52:12,670 --> 00:52:16,280 E así, el comprobar se é un ou dous ou tres, e ela imprime en consecuencia. 1007 00:52:16,280 --> 00:52:19,780 E o que esta palabra chave default aquí medios e se non entrar en calquera 1008 00:52:19,780 --> 00:52:21,690 destes, a continuación, dicir non válido. 1009 00:52:21,690 --> 00:52:25,910 Entón, digamos que eu pido e n o usuario dáme catro. 1010 00:52:25,910 --> 00:52:29,470 Ben, el coincide con ningún destes casos, polo que vai imprimir o que está no 1011 00:52:29,470 --> 00:52:30,540 sección estándar. 1012 00:52:30,540 --> 00:52:31,180 Si, cuestionar? 1013 00:52:31,180 --> 00:52:32,614 >> COLUMNA 5: Pódese usar Boolean no canto das expresións 1014 00:52:32,614 --> 00:52:33,570 un, dous, ou tres? 1015 00:52:33,570 --> 00:52:36,940 >> JOSÉ: Entón a cuestión é pode usar Expresións booleanas en vez de un, 1016 00:52:36,940 --> 00:52:37,940 dous e tres? 1017 00:52:37,940 --> 00:52:40,520 E en C, eu creo en ti Non podo facelo. 1018 00:52:40,520 --> 00:52:44,320 Pero noutras linguas, o que pode atopar ao final do 1019 00:52:44,320 --> 00:52:46,460 semestre como JavaScript, pode. 1020 00:52:46,460 --> 00:52:50,050 Ben, que tería que calcular primeiro ese valor e, a continuación, usalo no 1021 00:52:50,050 --> 00:52:50,650 instrución switch. 1022 00:52:50,650 --> 00:52:50,930 Si? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Entón unha parte do beneficio do interruptor declaracións é pensar se fixo iso 1024 00:52:54,760 --> 00:52:58,680 como If / Else, así como se non é igual a é igual a un, ou o que sexa. 1025 00:52:58,680 --> 00:53:00,300 Else / Se n é igual é igual a dous, que sexa. 1026 00:53:00,300 --> 00:53:01,960 Else / Se n é igual é igual a tres. 1027 00:53:01,960 --> 00:53:05,930 Así, a forma na que o programa sería executado é se secuencialmente descender esta lista 1028 00:53:05,930 --> 00:53:07,500 e comprobar, é n un? 1029 00:53:07,500 --> 00:53:08,040 Non. 1030 00:53:08,040 --> 00:53:09,070 N é dous? 1031 00:53:09,070 --> 00:53:09,490 Non. 1032 00:53:09,490 --> 00:53:10,940 É n tres? 1033 00:53:10,940 --> 00:53:11,710 É. 1034 00:53:11,710 --> 00:53:12,610 Faga iso. 1035 00:53:12,610 --> 00:53:15,270 >> Considerando que, con instrucións switch, é realmente capaz de recompila-lo para ser 1036 00:53:15,270 --> 00:53:16,360 moi rápido. 1037 00:53:16,360 --> 00:53:19,550 E así que di switch, el di, todo ben, non é dous, eu son 1038 00:53:19,550 --> 00:53:23,060 inmediatamente vai saltar a onde É que eu vou comezar a executar. 1039 00:53:23,060 --> 00:53:26,080 Eu non estou indo para a primeira verificación, n é un, é n dous? 1040 00:53:26,080 --> 00:53:28,860 Pode comezar inmediatamente a facer o que se quere facer. 1041 00:53:28,860 --> 00:53:33,830 >> E por iso, non pode ter condicións de booleanos. 1042 00:53:33,830 --> 00:53:36,480 Ou tería que facer o secuencial, como, todo ben, é n 1043 00:53:36,480 --> 00:53:37,820 maior que cero? 1044 00:53:37,820 --> 00:53:41,140 Else é n superior a 10 ou o que quere. 1045 00:53:41,140 --> 00:53:44,780 >> JOSÉ: Neste caso, se usou If / Else, de Se, a continuación, a clave sería 1046 00:53:44,780 --> 00:53:47,792 executar preto de tres veces máis rápido que o If / Else, Se. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Podemos organizar a chave de tal un xeito que non romper 1049 00:53:56,040 --> 00:53:57,520 despois de cada un dos casos. 1050 00:53:57,520 --> 00:54:00,960 Polo tanto, neste caso, eu estou dividindo o números que escoller un e 1051 00:54:00,960 --> 00:54:04,250 dous que non números elevados e sendo tres un número elevado. 1052 00:54:04,250 --> 00:54:08,290 >> Polo tanto, neste caso, se non é un ou dous, Vai bater o caso e, a continuación, que vai 1053 00:54:08,290 --> 00:54:10,640 caer, porque non hai ruptura. 1054 00:54:10,640 --> 00:54:11,610 E iso vai acabar aquí. 1055 00:54:11,610 --> 00:54:15,360 Entón, se nós escoller un, que vai facer o printf e logo, romper, de xeito que ningún dos 1056 00:54:15,360 --> 00:54:17,610 este é executado. 1057 00:54:17,610 --> 00:54:21,870 E, por suposto, se eles entran en tres ou calquera outra cousa, entón vai saltar 1058 00:54:21,870 --> 00:54:25,320 aqueles e non ir máis alá, e utilizará no canto do 1059 00:54:25,320 --> 00:54:27,490 liña correspondente. 1060 00:54:27,490 --> 00:54:29,390 Hai algunha dúbida sobre iso? 1061 00:54:29,390 --> 00:54:29,780 Si? 1062 00:54:29,780 --> 00:54:32,642 >> COLUMNA 4: Vostede obterá un erro se tivo unha pausa despois de un caso, pero 1063 00:54:32,642 --> 00:54:34,550 non tiña algo para el facer? 1064 00:54:34,550 --> 00:54:37,820 >> JOSÉ: Entón a cuestión é que comeza un erro se ten unha pausa despois 1065 00:54:37,820 --> 00:54:39,730 maiúsculas dun, pero non hai nada que facer? 1066 00:54:39,730 --> 00:54:41,520 E a resposta é non. 1067 00:54:41,520 --> 00:54:43,172 Non vai realmente obter un erro. 1068 00:54:43,172 --> 00:54:44,590 Si, hmm mm. 1069 00:54:44,590 --> 00:54:54,540 >> Entón, como unha especie de un pequeno cambio aquí, Vou poñer un printf aquí. 1070 00:54:54,540 --> 00:54:55,790 Gritos. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Entón, o que este impreso se Engada un en como entrada? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 É. 1075 00:55:07,770 --> 00:55:10,360 Ía dicirlle non tardou un elevado número dúas veces, non? 1076 00:55:10,360 --> 00:55:13,500 Porque ía bater aquel primeiro caso, non estaba a romper, e caería 1077 00:55:13,500 --> 00:55:15,730 ata o segundo caso. 1078 00:55:15,730 --> 00:55:16,950 Calquera dúbida sobre iso? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Ten pregunta? 1080 00:55:18,280 --> 00:55:20,840 >> JOSÉ: OK, arrefriar. 1081 00:55:20,840 --> 00:55:22,400 Todo ben. 1082 00:55:22,400 --> 00:55:25,780 Polo tanto, non hai outra cousa que chamamos operador ternário que é basicamente un 1083 00:55:25,780 --> 00:55:29,010 sintaxe alternativa para facer Se e, a continuación, Else. 1084 00:55:29,010 --> 00:55:30,470 E iso permite que fai todo nunha liña. 1085 00:55:30,470 --> 00:55:34,110 Polo tanto, neste programa especial, Estou pedindo ao usuario para o n. 1086 00:55:34,110 --> 00:55:37,190 E se non é maior que 100, digo eles escolleron un número alto. 1087 00:55:37,190 --> 00:55:39,560 Else Eu digo a eles que escolleu un número baixo. 1088 00:55:39,560 --> 00:55:43,030 >> Así, podemos utilizar este tempo moi longo de sintaxe, corda, S, e logo comprobar se n é 1089 00:55:43,030 --> 00:55:45,260 maior que 100 e asignar lo de conformidade. 1090 00:55:45,260 --> 00:55:49,450 Pero podemos facelo moito máis concisa empregando esta sintaxe operador ternário 1091 00:55:49,450 --> 00:55:52,090 que implica unha cuestión marca e un colonos. 1092 00:55:52,090 --> 00:55:55,070 Así, o punto de interrogación é esencialmente facer unha pregunta, non? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Quizais ampliar iso. 1094 00:55:56,625 --> 00:55:57,372 >> JOSÉ: Si 1095 00:55:57,372 --> 00:56:00,210 Bo punto. 1096 00:56:00,210 --> 00:56:02,550 Entón que é o operador ternário. 1097 00:56:02,550 --> 00:56:06,100 A primeira vez que facer a pregunta, n é maior que 100? 1098 00:56:06,100 --> 00:56:09,770 Se for, entón executar a primeira parte antes dos dous puntos. 1099 00:56:09,770 --> 00:56:13,360 Se non é, entón eu executar o segunda parte despois dos dous puntos. 1100 00:56:13,360 --> 00:56:16,640 Así, se non for maior que 100, a continuación, el pega alta e puts 1101 00:56:16,640 --> 00:56:18,360 que en cadea s. 1102 00:56:18,360 --> 00:56:22,170 Se non for menor que 100, que escolle baixa e logo, pon isto en cadea s. 1103 00:56:22,170 --> 00:56:30,186 Así que condensa este gran pedazo abaixo en só que unha liña. 1104 00:56:30,186 --> 00:56:32,010 >> COLUMNA 5: Isto é popular? 1105 00:56:32,010 --> 00:56:36,070 >> JOSÉ: Si, é moi popular para cousas onde esencialmente quere 1106 00:56:36,070 --> 00:56:38,700 non unha asignación en base a algún tipo de condición. 1107 00:56:38,700 --> 00:56:43,110 E neste caso, nós estabamos intentando para asignar un valor a cadea s. 1108 00:56:43,110 --> 00:56:44,840 Non é así - 1109 00:56:44,840 --> 00:56:47,670 Eu creo que realmente non prefiren nos outros casos. 1110 00:56:47,670 --> 00:56:49,390 Pero é especialmente útil para esta tarefa. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Isto é un estándar moi común onde ten algunha variable que 1112 00:56:54,490 --> 00:56:58,200 vai dicir, se algo, axuste esta variable a un valor, senón, establecer 1113 00:56:58,200 --> 00:56:59,810 esta variable a outro valor. 1114 00:56:59,810 --> 00:57:03,360 E ese é o escenario onde usar un ternário. 1115 00:57:03,360 --> 00:57:05,220 >> JOSÉ: E está a aforrar lotes de liñas, non? 1116 00:57:05,220 --> 00:57:08,090 E só fai o código indiscutibelmente algo máis lexible. 1117 00:57:08,090 --> 00:57:08,635 Si, cuestionar? 1118 00:57:08,635 --> 00:57:12,384 >> COLUMNA 6: Para un ternário, podería ir, cadea s iguais s, punto de interrogación? 1119 00:57:12,384 --> 00:57:15,280 E entón vostede pode ter, por exemplo, cinco opcións distintas. 1120 00:57:15,280 --> 00:57:18,310 E, dependendo do que o número de n foi, ten que escoller un destes? 1121 00:57:18,310 --> 00:57:22,210 >> JOSÉ: Entón a pregunta é, existe un tipo de sintaxe onde podes facer corda 1122 00:57:22,210 --> 00:57:25,910 s é igual a n, e, a continuación, ter máis que dous opcións despois de que o punto de interrogación? 1123 00:57:25,910 --> 00:57:29,740 E a resposta simple é non, non hai realmente unha boa forma de facelo, salvo 1124 00:57:29,740 --> 00:57:33,850 quere niño ternário múltiple operadores dentro do outro. 1125 00:57:33,850 --> 00:57:38,050 >> Podería facer como n maior que 100, punto de interrogação, e despois outro 1126 00:57:38,050 --> 00:57:41,850 operador ternário, n superior a 50, punto de interrogação, e aninhar-lo desa forma. 1127 00:57:41,850 --> 00:57:45,240 Pero, nese escenario, o código é quedando medio lexible e confuso, 1128 00:57:45,240 --> 00:57:47,920 e quizais sexa mellor ir só para unha instrución If / Else naquel momento. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: E tamén, como unha nota lateral, PHP incorrectamente aplica o ternário 1130 00:57:54,530 --> 00:57:58,053 operador tal que ternários noutras citas nin sequera funcionan como deberían. 1131 00:57:58,053 --> 00:57:58,840 >> JOSÉ: É. 1132 00:57:58,840 --> 00:58:01,170 Entón, el está un pouco confuso, especialmente cando vai 1133 00:58:01,170 --> 00:58:02,145 para diferentes idiomas. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: É confuso o suficiente para que linguas están errados sobre iso. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSÉ: Entón, en realidade, só para aclarar, que todo o mundo sabe o que iso 1137 00:58:11,510 --> 00:58:13,900 % S fai aquí? 1138 00:58:13,900 --> 00:58:15,650 Calquera dúbida sobre iso? 1139 00:58:15,650 --> 00:58:19,760 Coido que só para a cámara, o% s basicamente nos permite colocar un espazo reservado 1140 00:58:19,760 --> 00:58:20,790 a unha cadea. 1141 00:58:20,790 --> 00:58:23,920 E despois, ao final, que especifica que o variable queremos poñer nesa 1142 00:58:23,920 --> 00:58:25,500 titular lugar é s. 1143 00:58:25,500 --> 00:58:27,730 Así que, basicamente, ten s e pon-lo aquí. 1144 00:58:27,730 --> 00:58:32,130 E entón el vai imprimir, escolleu un alto ou escolleu un número baixo. 1145 00:58:32,130 --> 00:58:33,770 Aceptar. 1146 00:58:33,770 --> 00:58:36,970 >> Entón lazos permiten que executa as cousas en movementos circulares, non? 1147 00:58:36,970 --> 00:58:40,300 Pode encontrar tanto en Raspadinha en forma de lazos para sempre 1148 00:58:40,300 --> 00:58:45,650 ou repetir ata ou Repetir unha especial número de veces. 1149 00:58:45,650 --> 00:58:47,540 Entón, por que iso é bo para nós? 1150 00:58:47,540 --> 00:58:51,500 Ben, en C, imos dicir que temos esta canción aplicado en scratch que 1151 00:58:51,500 --> 00:58:53,450 canta, esta é a canción que nunca remata. 1152 00:58:53,450 --> 00:58:55,710 El só vai sobre e sobre e para sempre e para sempre. 1153 00:58:55,710 --> 00:58:59,395 Ben, non realmente pode facer un programa que ten un número infinito de printf 1154 00:58:59,395 --> 00:59:00,850 declaracións, non? 1155 00:59:00,850 --> 00:59:04,900 >> Polo tanto, neste escenario en particular, de forma que podería facer este traballo e 1156 00:59:04,900 --> 00:59:09,330 para facelo imprimir sempre é en vez usar un loop while. 1157 00:59:09,330 --> 00:59:13,640 Así, un loop while executará o que é no corpo das dúas cintas que 1158 00:59:13,640 --> 00:59:17,250 pertence a ela con base no que é a condición. 1159 00:59:17,250 --> 00:59:21,170 Polo tanto, neste exemplo particular, antes, se queremos imprimir isto para sempre, o que 1160 00:59:21,170 --> 00:59:23,590 que podemos facer? 1161 00:59:23,590 --> 00:59:25,190 Ben, por suposto, non é? 1162 00:59:25,190 --> 00:59:32,290 >> Polo tanto, este tipo de combina a idea dalgunha expresión booleana 1163 00:59:32,290 --> 00:59:33,610 xunto con un lazo. 1164 00:59:33,610 --> 00:59:35,780 E aprendemos sobre booleano expresións anteriores. 1165 00:59:35,780 --> 00:59:39,650 Así, sempre que a condición dentro Mentres tanto segue a ser verdade, este lazo 1166 00:59:39,650 --> 00:59:41,480 executará sobre e sobre e sobre. 1167 00:59:41,480 --> 00:59:44,640 E neste caso, se nós só ofrece-lo con verdade, iso fai que un infinito 1168 00:59:44,640 --> 00:59:49,310 lazo que imprime a canción sobre e sobre e sobre como nós desexado antes sen 1169 00:59:49,310 --> 00:59:52,410 ter un programa que ten un infinito número de instrucións printf, que é 1170 00:59:52,410 --> 00:59:55,220 non é posible. 1171 00:59:55,220 --> 00:59:57,810 >> Entón, máis convincente, con todo, pode usar isto cun 1172 00:59:57,810 --> 00:59:59,710 variable e unha condición. 1173 00:59:59,710 --> 01:00:04,420 Entón, imos dicir que queremos repetir o frase, totalmente tolo, 10 veces. 1174 01:00:04,420 --> 01:00:08,380 Entón o que podes facer con un loop while é primeiro pode inicializar un contador 1175 01:00:08,380 --> 01:00:10,860 variable fóra do While a 10. 1176 01:00:10,860 --> 01:00:14,360 E entón, basicamente, cada vez que vai a través do loop while, imprime 1177 01:00:14,360 --> 01:00:19,090 a declaración e, a continuación, vostede diminúe a contador variable ata o final, 1178 01:00:19,090 --> 01:00:23,020 nalgún momento, xa que eu restar abondo veces, 1 da I bastante veces - 1179 01:00:23,020 --> 01:00:27,290 e só para aclarar, eu minus minus Significa que é igual a que menos 1. 1180 01:00:27,290 --> 01:00:31,280 >> Isto vai levar basicamente I ata o punto no que xa que eu chegar a cero, este 1181 01:00:31,280 --> 01:00:35,260 condición non é certa e polo que sae fóra do circuíto. 1182 01:00:35,260 --> 01:00:37,045 Entón, totalmente maluco só imprime 10 veces. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Calquera dúbida sobre un loop while? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 Aceptar. 1187 01:00:46,790 --> 01:00:50,550 >> Polo tanto, hai un xeito de facer o que acabamos de fixo dunha forma máis concisa con 1188 01:00:50,550 --> 01:00:51,715 o que chamamos un loop For. 1189 01:00:51,715 --> 01:00:55,750 Entón, un circuíto para consiste nunha arranque, un estado, e un 1190 01:00:55,750 --> 01:00:58,950 actualización, así como tiñamos antes neste loop while. 1191 01:00:58,950 --> 01:00:59,890 Entón, imos dar un ollo. 1192 01:00:59,890 --> 01:01:02,900 Neste loop while, tivemos un arranque, entón tivemos un 1193 01:01:02,900 --> 01:01:04,260 condición de que fixemos o check. 1194 01:01:04,260 --> 01:01:06,450 E entón tivemos unha actualización pisar na parte superior. 1195 01:01:06,450 --> 01:01:10,060 >> Con un loop for, isto leva basicamente estas tres cousas e condensa-lo 1196 01:01:10,060 --> 01:01:11,370 abaixo nunha liña. 1197 01:01:11,370 --> 01:01:15,130 Entón o primeiro que fai o Para loop é o arranque. 1198 01:01:15,130 --> 01:01:19,090 E entón fai un punto e coma, e, a continuación, fai a condición, que é o que eu 1199 01:01:19,090 --> 01:01:22,200 maior que cero vai para alí, e, a continuación, a etapa de actualización. 1200 01:01:22,200 --> 01:01:26,470 Polo tanto, este queda realizada o finais do corpo do lazo. 1201 01:01:26,470 --> 01:01:28,790 Entón, eses dous programas son esencialmente equivalente. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Algunha pregunta? 1204 01:01:33,870 --> 01:01:37,000 Entón, o que é unha diferenza entre eses dous? 1205 01:01:37,000 --> 01:01:38,000 Alguén pode indicalo lo? 1206 01:01:38,000 --> 01:01:40,480 Pode ser un pouco sutil. 1207 01:01:40,480 --> 01:01:41,930 É só unha diferenza moi pequena. 1208 01:01:41,930 --> 01:01:42,330 Si? 1209 01:01:42,330 --> 01:01:49,008 >> COLUMNA 5: Non sería capaz de utilizar a variable I, fóra do loop for 1210 01:01:49,008 --> 01:01:49,962 [Inaudível]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSÉ: Exactamente. 1212 01:01:50,900 --> 01:01:53,550 Entón, iso é algo que nós imos chegar a máis tarde chamado de ámbito de variables. 1213 01:01:53,550 --> 01:01:56,610 Pero, esencialmente, este int vida I fóra dese loop while. 1214 01:01:56,610 --> 01:01:59,800 Entón, unha vez que este loop while faise execución, eu vou ser capaz de utilizar, máis tarde, 1215 01:01:59,800 --> 01:02:00,880 en no programa. 1216 01:02:00,880 --> 01:02:05,430 >> Considerando que, con este loop, este int I ten como ámbito dentro deste loop. 1217 01:02:05,430 --> 01:02:10,240 E por dentro desta parcela do circuíto para que inicia 1218 01:02:10,240 --> 01:02:13,200 nos parénteses e remata con a bosquexo alí. 1219 01:02:13,200 --> 01:02:16,120 O que é declarada dentro aquí non se pode empregar no exterior. 1220 01:02:16,120 --> 01:02:20,420 Entón, se eu tentar empregar eu fóra, que vai dígame, símbolo non declarado. 1221 01:02:20,420 --> 01:02:22,420 E, esencialmente, eu non faría poder usalo. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: E así, hai 10 anos, en literalmente todos os casos, as claves son 1223 01:02:28,460 --> 01:02:31,140 o que usou para determinar o ámbito dunha variable. 1224 01:02:31,140 --> 01:02:37,240 Entón, alí dentro, int I é igual a 10 é declarada dentro deste 1225 01:02:37,240 --> 01:02:38,520 conxunto de claves. 1226 01:02:38,520 --> 01:02:42,530 E entón, mentres tentar empregar I antes deste bosquexo, todo ben. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 Podes ver cando escribe make, vostede verse trazo, trazo, std, iguais, C99. 1229 01:02:51,460 --> 01:02:57,100 >> Entón, esta é unha versión posterior do C que GCC aplicou que tamén dá 1230 01:02:57,100 --> 01:02:58,740 este atallo. 1231 01:02:58,740 --> 01:03:03,505 Polo tanto, este empregado para non ser permitido en C. E podes ver por que, porque este int 1232 01:03:03,505 --> 01:03:07,600 I está fóra deste bosquexo pero aínda é considerado o 1233 01:03:07,600 --> 01:03:09,750 alcance destas claves. 1234 01:03:09,750 --> 01:03:14,120 Pero iso é unha cousa moi cómodo, e por iso é unha boa extensión. 1235 01:03:14,120 --> 01:03:15,370 >> JOSÉ: Algunha pregunta? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 Aceptar. 1238 01:03:19,260 --> 01:03:22,820 Entón, o que é máis útil é que, ás veces, quere tipo de dinamismo 1239 01:03:22,820 --> 01:03:23,410 o seu ciclo, non? 1240 01:03:23,410 --> 01:03:26,350 Non quere só necesariamente imprimir totalmente tolo o tempo, vostede 1241 01:03:26,350 --> 01:03:28,650 quero contar para abaixo de 10 ou algo así. 1242 01:03:28,650 --> 01:03:32,010 E así pode utilizar a variable do contador dentro dese ciclo tamén. 1243 01:03:32,010 --> 01:03:35,530 E neste caso, este programa só conta atrás de 10 todo o camiño. 1244 01:03:35,530 --> 01:03:39,260 E o que non imprime? 1245 01:03:39,260 --> 01:03:42,790 Non imprimir cero, dereito, porque cando - 1246 01:03:42,790 --> 01:03:45,460 Si, el tampouco imprime 11. 1247 01:03:45,460 --> 01:03:49,200 >> Por iso, non imprimir cero, porque cando Eu é cero, lembre, el avalía 1248 01:03:49,200 --> 01:03:52,170 a condición antes de entrar en para realizar o corpo do loop. 1249 01:03:52,170 --> 01:03:56,820 E cando é cero, isto é falso, así non imprimir en conta atrás 1250 01:03:56,820 --> 01:04:00,200 cero, el só imprime conta caída de 10 todo o camiño ata a 1. 1251 01:04:00,200 --> 01:04:03,420 Se nós realmente quería para imprimir cero, entón poderiamos poñer un signo igual 1252 01:04:03,420 --> 01:04:04,750 tras este signo maior que. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 Aceptar. 1255 01:04:10,130 --> 01:04:16,410 >> Así, unha forma de facer a validación de entrada, que é cando pide que o usuario faga 1256 01:04:16,410 --> 01:04:18,620 algo, quere estar seguro de que eles seguir as súas instrucións, é por 1257 01:04:18,620 --> 01:04:19,400 o loop while, non? 1258 01:04:19,400 --> 01:04:22,990 Polo tanto, neste caso particular, eu estou preguntando a un número positivo e, a continuación, eu son 1259 01:04:22,990 --> 01:04:23,810 agardando entrada. 1260 01:04:23,810 --> 01:04:28,210 >> E entón eu chequei Mentres a entrada é menor que cero, sigo a preguntar-lles. 1261 01:04:28,210 --> 01:04:32,100 Entón, mentres eles me dan un número que non é positivo, sigo a preguntar, 1262 01:04:32,100 --> 01:04:33,600 sigo a preguntar, sigo a preguntar. 1263 01:04:33,600 --> 01:04:35,860 Pero o que é unha especie de estraño sobre iso? 1264 01:04:35,860 --> 01:04:38,570 Ou o que non parece ideal sobre esta estrutura aquí? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Calquera? 1267 01:04:44,758 --> 01:04:45,234 Si? 1268 01:04:45,234 --> 01:04:47,614 >> COLUMNA 6: Está repetindo a instrución de dúas veces. 1269 01:04:47,614 --> 01:04:48,100 >> JOSÉ: Certo. 1270 01:04:48,100 --> 01:04:50,090 Polo tanto, temos dúas declaracións printf aquí, non? 1271 01:04:50,090 --> 01:04:53,440 Polo tanto, hai un xeito que poderiamos conseguir isto só ata un que faría o noso 1272 01:04:53,440 --> 01:04:57,170 código máis fácil de ler e un pouco máis limpo. 1273 01:04:57,170 --> 01:05:00,180 E, entón, non tería que Póñase en ter dúas veces tamén. 1274 01:05:00,180 --> 01:05:03,740 E un xeito de facelo é usando un loop do-while. 1275 01:05:03,740 --> 01:05:07,670 >> E un lazo do-while é basicamente un forma distinta de un loop while onde 1276 01:05:07,670 --> 01:05:11,460 todo o que está dentro de claves é executado polo menos unha vez. 1277 01:05:11,460 --> 01:05:14,840 Entón, aquí, eu declaro, int de entrada, do lado de fóra por primeira vez. 1278 01:05:14,840 --> 01:05:18,100 E entón eu acaba de dicir, facelo instrución mentres que a entrada 1279 01:05:18,100 --> 01:05:19,140 é menor que cero. 1280 01:05:19,140 --> 01:05:20,530 Así que chega a facer primeiro. 1281 01:05:20,530 --> 01:05:24,190 Sempre pode executar tanto polo menos unha vez máis, por iso sempre vai pedir o usuario 1282 01:05:24,190 --> 01:05:25,960 para a entrada de, polo menos, unha vez máis. 1283 01:05:25,960 --> 01:05:29,390 E, a continuación, el avalía que a entrada, e pasa en un círculo. 1284 01:05:29,390 --> 01:05:30,135 Si, cuestionar? 1285 01:05:30,135 --> 01:05:32,602 >> COLUMNA 6: Existe unha maneira de facelo [Inaudível] tipos, como se di, 1286 01:05:32,602 --> 01:05:34,268 GetString, e alguén [inaudível] 1287 01:05:34,268 --> 01:05:35,220 existe unha forma de [inaudível] 1288 01:05:35,220 --> 01:05:40,060 >> JOSÉ: Entón a pregunta é, existe un forma de facer a validación de entrada se o usuario 1289 01:05:40,060 --> 01:05:41,850 non poñer na dereita tipo de variable? 1290 01:05:41,850 --> 01:05:44,460 Entón, se se require para un int e eles dános unha corda no seu lugar. 1291 01:05:44,460 --> 01:05:49,110 E nas funcións que implementan para ti, GetInt, GetString en todos 1292 01:05:49,110 --> 01:05:52,680 estas funcións, realmente xa facer este tipo de entrada de tipo básico 1293 01:05:52,680 --> 01:05:54,120 validación baixo o capó. 1294 01:05:54,120 --> 01:05:57,390 Entón, se está a usar as funcións que lle deu, o que realmente non precisa. 1295 01:05:57,390 --> 01:06:01,380 >> Pero se quere ollar máis para como pode realmente facer iso, pode ollar 1296 01:06:01,380 --> 01:06:03,360 baixo o capó o arquivo I/O-- 1297 01:06:03,360 --> 01:06:07,990 non presentar, as funcións de E / S por defecto como unha lectura da entrada estándar e 1298 01:06:07,990 --> 01:06:08,580 saída estándar. 1299 01:06:08,580 --> 01:06:10,630 E pode ter unha noción mellor de como pode facelo. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Unha cuestión, con todo, é especialmente co exemplo que 1301 01:06:13,670 --> 01:06:17,070 dixo, espera unha cadea e eu entrar nun int. 1302 01:06:17,070 --> 01:06:20,110 Como dicir a diferenza entre intencionalmente querendo o 1303 01:06:20,110 --> 01:06:23,130 corda 123 contra querendo int 123? 1304 01:06:23,130 --> 01:06:29,230 Entón corda, é practicamente non hai ningunha validación, é só o que eles 1305 01:06:29,230 --> 01:06:31,600 entrou vai interpretar como unha cadea. 1306 01:06:31,600 --> 01:06:35,790 >> Int é máis fácil, porque non importa o entrada que tomar a partir do usuario, que é 1307 01:06:35,790 --> 01:06:37,470 sempre levando unha corda. 1308 01:06:37,470 --> 01:06:40,650 E así que a secuencia que pode, entón, comprobar, son todos estes 1309 01:06:40,650 --> 01:06:44,218 díxitos numéricos, en realidade? 1310 01:06:44,218 --> 01:06:45,170 >> JOSÉ: Aceptar. 1311 01:06:45,170 --> 01:06:46,420 Calquera dúbida sobre un loop do-while? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Ah, e este é tamén - 1313 01:06:49,170 --> 01:06:55,130 volvendo ao ámbito, un tanto común erro está intentando usar algúns sitios 1314 01:06:55,130 --> 01:06:59,540 variable dende esta do-while loop dentro desta condición. 1315 01:06:59,540 --> 01:07:02,850 E en realidade, se nós só se librou de isto e dixo, a entrada é igual a int 1316 01:07:02,850 --> 01:07:06,990 GetInt, a continuación, o compilador vai berrar con nos porque a entrada non existe 1317 01:07:06,990 --> 01:07:08,900 fóra do ámbito da estas chaves. 1318 01:07:08,900 --> 01:07:10,792 >> JOSÉ: E é por iso que ten esa formación aquí. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 Aceptar. 1321 01:07:14,630 --> 01:07:17,530 Entón, tamén se pode saír dun malla máis cedo se quere. 1322 01:07:17,530 --> 01:07:21,240 Polo tanto, esta é unha forma diferente de aplicar o que acabamos aplicado. 1323 01:07:21,240 --> 01:07:24,340 E en vez de usar a condición dentro dos parénteses, estamos a usar un 1324 01:07:24,340 --> 01:07:26,920 Se declaración dentro do corpo do loop do-while. 1325 01:07:26,920 --> 01:07:30,000 >> E, basicamente, cando a entrada é por fin maior que cero, iremos 1326 01:07:30,000 --> 01:07:31,000 saír do loop. 1327 01:07:31,000 --> 01:07:33,420 E así imos todos o camiño ata aquí. 1328 01:07:33,420 --> 01:07:37,920 E podes ver que esta sería probablemente ser preferible neste 1329 01:07:37,920 --> 01:07:39,870 escenario, porque é algo pouco máis limpo e un pouco 1330 01:07:39,870 --> 01:07:41,380 pouco máis fácil de ler. 1331 01:07:41,380 --> 01:07:45,210 Considerando isto, especie de ter liñas extra na mesma. 1332 01:07:45,210 --> 01:07:47,890 É só algo máis feo, Coido que, de certa forma. 1333 01:07:47,890 --> 01:07:48,530 Si, cuestionar? 1334 01:07:48,530 --> 01:07:52,178 >> COLUMNA 4: Será que romper só comezar lo fóra dun conxunto de chaves? 1335 01:07:52,178 --> 01:07:53,080 >> JOSÉ: Certo. 1336 01:07:53,080 --> 01:07:58,100 Entón a pregunta é só romper tiralo dun loop? 1337 01:07:58,100 --> 01:07:59,280 E a resposta é si. 1338 01:07:59,280 --> 01:08:04,290 Entón, se ten aninhado For loops, para exemplo, se eu teño a int I é igual a 0 1339 01:08:04,290 --> 01:08:09,040 ata o día 10 e, a continuación, para int J é igual a 0 ata o día 10, se eu saír do interior 1340 01:08:09,040 --> 01:08:12,310 loop, eu irei ao circuíto externo. 1341 01:08:12,310 --> 01:08:15,760 Por iso, vou seguir a realizar o operacións do lado de fóra. 1342 01:08:15,760 --> 01:08:17,640 Calquera dúbida sobre iso? 1343 01:08:17,640 --> 01:08:18,000 Si? 1344 01:08:18,000 --> 01:08:21,760 >> COLUMNA 5: Pero romper só as funcións para chaves, non a outro 1345 01:08:21,760 --> 01:08:22,230 declaracións? 1346 01:08:22,230 --> 01:08:22,700 [Inaudível] 1347 01:08:22,700 --> 01:08:27,620 >> JOSÉ: Entón a cuestión é vai romper única función para loops en oposición a 1348 01:08:27,620 --> 01:08:29,014 outras declaracións, como se? 1349 01:08:29,014 --> 01:08:32,950 E si, ese é o caso, por que está batendo fóra de un loop, dereito, 1350 01:08:32,950 --> 01:08:33,630 nun sentido. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: Na gran maioría dos casos, é este é o tipo de Si algo, 1352 01:08:37,215 --> 01:08:37,660 logo romper. 1353 01:08:37,660 --> 01:08:41,580 Entón non ten que romper a aplicar-se O que está envolvendo en torno a el. 1354 01:08:41,580 --> 01:08:45,250 E tamén, iso non é moi de un loop, pero lembre de que os interruptores son tamén 1355 01:08:45,250 --> 01:08:46,340 dobres de por pausas. 1356 01:08:46,340 --> 01:08:48,390 Vimos breaks en uso con interruptores antes. 1357 01:08:48,390 --> 01:08:52,189 >> JOSÉ: E ti tamén pode usalos en loops while e sexa loops. 1358 01:08:52,189 --> 01:08:54,560 Algunha pregunta? 1359 01:08:54,560 --> 01:08:55,830 Aceptar. 1360 01:08:55,830 --> 01:08:57,779 Así, o próximo up é funcións. 1361 01:08:57,779 --> 01:09:01,500 Así, pode usar un destes BYOB bloques no seu proxecto de cero. 1362 01:09:01,500 --> 01:09:04,569 E isto permite basicamente definir un conxunto de 1363 01:09:04,569 --> 01:09:05,680 instrucións a seguir. 1364 01:09:05,680 --> 01:09:09,569 >> E o que quero dicir con isto é, imos pensar de volta á matemática, á dereita, álxebra. 1365 01:09:09,569 --> 01:09:13,370 Ten o que chamamos unha función de x, algunha variable, e imos dicir iso 1366 01:09:13,370 --> 01:09:16,080 función é f de x é igual a x + 5. 1367 01:09:16,080 --> 01:09:20,410 Entón pode pensar f de x como este negro caixa que leva 15 e, a continuación, 1368 01:09:20,410 --> 01:09:22,590 produce 20. 1369 01:09:22,590 --> 01:09:26,630 >> Así, máis xeralmente, é unha función algo que leva uns insumos e 1370 01:09:26,630 --> 01:09:27,880 logo produce algunhas saídas. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 E por que son funcións ben? 1373 01:09:32,960 --> 01:09:35,189 Son bos para unha serie de razóns. 1374 01:09:35,189 --> 01:09:40,470 Así é que alguén quere tomar unha facada o que significa organización? 1375 01:09:40,470 --> 01:09:42,630 En termos da razón pola que as funcións son útiles? 1376 01:09:42,630 --> 01:09:43,090 Si? 1377 01:09:43,090 --> 01:09:44,735 >> COLUMNA 4: Fai o seu código máis lexible. 1378 01:09:44,735 --> 01:09:45,399 >> JOSÉ: Certo. 1379 01:09:45,399 --> 01:09:47,670 Entón, unha das cousas é que fai seu código máis lexible, non? 1380 01:09:47,670 --> 01:09:53,710 No canto de ter como int x é igual a x veces x veces x, podo ter cubo de x, 1381 01:09:53,710 --> 01:09:57,190 que é máis lexible e máis comprensible para un lector. 1382 01:09:57,190 --> 01:10:01,150 >> Organización tamén é en termos de dividíndose o seu código en gerenciável 1383 01:10:01,150 --> 01:10:05,610 racións, de xeito que, no canto de tentar aplicar iso todo nunha longa sección 1384 01:10:05,610 --> 01:10:09,070 na principal, pode clasificar de división la en como, OK, imos escribir unha función 1385 01:10:09,070 --> 01:10:11,910 ao cubo algo, imos escribir un funcionar a cuadratura algo. 1386 01:10:11,910 --> 01:10:15,950 Desta forma, pode división la en minúscula, pequenas partes que pode facer fronte 1387 01:10:15,950 --> 01:10:18,944 ao contrario de tentar resolver un gran problema dunha soa vez. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Ou incluso pequenas, pequenas pezas que vostede e un compañeiro pode afrontar. 1389 01:10:21,806 --> 01:10:22,283 >> JOSÉ: É. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Entón, en vez de dous Estás a implantar un 1391 01:10:23,855 --> 01:10:27,170 funcionar á vez. 1392 01:10:27,170 --> 01:10:28,800 >> JOSÉ: Simplificación. 1393 01:10:28,800 --> 01:10:30,050 Alguén quere dar un palpite? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Si? 1396 01:10:33,410 --> 01:10:34,675 >> COLUMNA 5: Máis repetición. 1397 01:10:34,675 --> 01:10:35,260 >> JOSÉ: Certo. 1398 01:10:35,260 --> 01:10:39,210 Entón, unha cousa que podes facer con simplificación é que é unha especie de no 1399 01:10:39,210 --> 01:10:42,520 no mesmo sentido como reutilización é que xa que eu escribir unha función cubo, podo 1400 01:10:42,520 --> 01:10:45,410 é só usar que máis e máis e máis de novo no meu programa en vez de escribir 1401 01:10:45,410 --> 01:10:49,610 x veces x veces x máis e unha e outra vez. 1402 01:10:49,610 --> 01:10:52,980 E simplificación aquí tamén só significa que fai o tipo de código 1403 01:10:52,980 --> 01:10:55,900 máis fácil de depurar xa que dividir este se en funcións. 1404 01:10:55,900 --> 01:10:58,250 Porque entón podes atopar onde seus problemas especie de son. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Algunha pregunta? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Así, outra idea é abstracción, non? 1409 01:11:06,540 --> 01:11:07,390 Esta caixa negra. 1410 01:11:07,390 --> 01:11:11,360 Como vostede sabe o que fai GetInt para recibir a entrada do usuario? 1411 01:11:11,360 --> 01:11:12,510 Nós realmente non dixo a ti, non? 1412 01:11:12,510 --> 01:11:15,670 Todo o que dixo é GetInt fai exactamente o que di que fai. 1413 01:11:15,670 --> 01:11:18,440 Así, aínda que non lle din como funciona, aínda sabe. 1414 01:11:18,440 --> 01:11:21,670 >> Polo tanto, neste caso particular, este é unha función cuádruplo que fai 1415 01:11:21,670 --> 01:11:24,520 cousas distintas para unha entrada para producir unha saída. 1416 01:11:24,520 --> 01:11:28,050 E pode cuádruplo dun número pola multiplicación por catro. 1417 01:11:28,050 --> 01:11:30,790 Ou pode o que chamamos bits transferir-lo por dous. 1418 01:11:30,790 --> 01:11:32,960 E nós imos cubrir este un pouco máis tarde. 1419 01:11:32,960 --> 01:11:36,570 E non hai necesidade de saber como esta función realmente funciona, sempre que 1420 01:11:36,570 --> 01:11:37,640 funciona como indicado. 1421 01:11:37,640 --> 01:11:40,740 >> Así, baixo o capó, que eu podería ser como, o retorno veces entrada 1422 01:11:40,740 --> 01:11:41,690 oito dividido por dous. 1423 01:11:41,690 --> 01:11:42,510 E non sabe, non? 1424 01:11:42,510 --> 01:11:44,970 Todo o que precisa saber é fai o que di. 1425 01:11:44,970 --> 01:11:48,070 Así que esta é a cousa útil preto de abstracción. 1426 01:11:48,070 --> 01:11:52,910 >> E outra cousa é unha especie de esta idea de atopar o código para un 1427 01:11:52,910 --> 01:11:54,280 especial sección. 1428 01:11:54,280 --> 01:11:57,450 Entón, se ten un problema, non ten que ir todo o seu código intentando 1429 01:11:57,450 --> 01:11:58,730 para corrixir onde era o problema. 1430 01:11:58,730 --> 01:12:00,990 Polo tanto, neste caso, eu apliquei cubo mal. 1431 01:12:00,990 --> 01:12:02,820 Penso cubo foi multiplicando por tres. 1432 01:12:02,820 --> 01:12:05,760 >> Polo tanto, neste caso, trátase dun programa que acaba de multiplicar por tres 1433 01:12:05,760 --> 01:12:06,750 en todas as partes. 1434 01:12:06,750 --> 01:12:10,910 E hai outro programa que ten cubo fatorados nunha función. 1435 01:12:10,910 --> 01:12:14,040 E agora, se eu queira corrixir o meu erro aquí, eu teño que corrixir cada liña 1436 01:12:14,040 --> 01:12:15,620 de código neste programa. 1437 01:12:15,620 --> 01:12:19,190 Considerando, por outra banda, se eu usar o función, eu só teño que cambiar 1438 01:12:19,190 --> 01:12:20,650 o que estaba mal nun só lugar. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Así, en ciencia da computación, que chamar entradas e saídas. 1441 01:12:28,730 --> 01:12:31,640 As entradas son chamados parámetros ou argumentos, e as saídas son chamados 1442 01:12:31,640 --> 01:12:32,950 valores de retorno. 1443 01:12:32,950 --> 01:12:39,000 E imos ver como iso nos axuda a resolver de definir unha función nun segundo. 1444 01:12:39,000 --> 01:12:41,430 Polo tanto, esta é unha definición de función para cubagem. 1445 01:12:41,430 --> 01:12:45,110 Por iso, leva unha entrada, e, a continuación, el retorna ese número veces 1446 01:12:45,110 --> 01:12:47,020 si tres veces. 1447 01:12:47,020 --> 01:12:48,020 Entón, imos decompô-lo. 1448 01:12:48,020 --> 01:12:53,090 >> Polo tanto, temos unha cabeceira de función, que consiste basicamente de tres cousas. 1449 01:12:53,090 --> 01:12:56,050 Polo tanto, temos os parámetros, que son, como dixen antes, o 1450 01:12:56,050 --> 01:12:57,680 contribucións para esta función. 1451 01:12:57,680 --> 01:12:59,300 E entón damos a función dun nome. 1452 01:12:59,300 --> 01:13:00,740 Neste caso, é chamado de cubo. 1453 01:13:00,740 --> 01:13:03,860 E, entón, indicar que o tipo de do valor de retorno é. 1454 01:13:03,860 --> 01:13:06,760 >> Polo tanto, neste caso, a miña función cubo toma en un número enteiro e é tamén 1455 01:13:06,760 --> 01:13:07,890 retorna un enteiro. 1456 01:13:07,890 --> 01:13:11,510 Entón, se eu pasar en dous, dous é un número enteiro, el retorna oito para min, o que 1457 01:13:11,510 --> 01:13:13,250 é un número enteiro. 1458 01:13:13,250 --> 01:13:15,420 Entón voltar parámetros nome do tipo. 1459 01:13:15,420 --> 01:13:16,670 Preguntas sobre iso? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> E, a continuación, o valor de retorno é realmente especificado no final dicindo retorno 1462 01:13:24,230 --> 01:13:27,540 e, a continuación, regresar o que quere contén o valor de retorno. 1463 01:13:27,540 --> 01:13:30,940 Polo tanto, neste caso, se colocarmos todo en conxunto, unha función ten en 1464 01:13:30,940 --> 01:13:35,100 parámetros, chámase algo, e el retorna algo que é do tipo 1465 01:13:35,100 --> 01:13:36,350 que dicir que ía ser. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Algunha pregunta? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Entón, como imos empregar unha función? 1470 01:13:45,080 --> 01:13:49,230 Ben, nós escribimos unha función e, a continuación, podemos usalo no noso programa, non? 1471 01:13:49,230 --> 01:13:51,565 Entón eu liguei para el cubo, e entón podo usar cubo. 1472 01:13:51,565 --> 01:13:54,200 >> Pero o que é importante ter en conta é que as cuestións de orde. 1473 01:13:54,200 --> 01:13:58,100 Se eu tivera cubo debaixo principal, é indo funcionar en cubo. 1474 01:13:58,100 --> 01:14:00,360 E, neste punto, non hai nada chamado cubo no programa, e é 1475 01:14:00,360 --> 01:14:02,550 só vai ser así, eu teño idea do que é cubo. 1476 01:14:02,550 --> 01:14:05,060 >> Entón, el vai dicir, implícita declaración de función. 1477 01:14:05,060 --> 01:14:06,690 Ese é o erro que aparece. 1478 01:14:06,690 --> 01:14:10,230 E así, neste caso, o cubo está abaixo principal, polo que non está a suceder 1479 01:14:10,230 --> 01:14:12,006 para saber sobre el. 1480 01:14:12,006 --> 01:14:14,724 >> COLUMNA 5: Así principal adoita a última función definida? 1481 01:14:14,724 --> 01:14:17,290 >> JOSÉ: Entón a pregunta é, é o principal adoita ser a última 1482 01:14:17,290 --> 01:14:18,170 cousa que definir? 1483 01:14:18,170 --> 01:14:19,730 E non. 1484 01:14:19,730 --> 01:14:22,280 É porque normalmente temos como principal para estar na parte superior, non? 1485 01:14:22,280 --> 01:14:24,640 Porque esa é a primeira cousa que quere abrir o programador a 1486 01:14:24,640 --> 01:14:25,640 programa para ver. 1487 01:14:25,640 --> 01:14:29,950 E así, como é que imos resolver esta cuestión de nós quere principal para estar na parte superior, pero o 1488 01:14:29,950 --> 01:14:33,750 funcións que queremos, queremos que eles ser inferior a principal aínda ser capaz de usar 1489 01:14:33,750 --> 01:14:34,930 los dentro principal? 1490 01:14:34,930 --> 01:14:36,870 >> Así, usamos o que chamamos un prototipo de función. 1491 01:14:36,870 --> 01:14:40,830 Entón, o que un prototipo de función esencialmente se é que primeiro ten que 1492 01:14:40,830 --> 01:14:45,060 sinatura ou a función header do que queremos aplicar abaixo 1493 01:14:45,060 --> 01:14:47,420 aquí, e imos poñelo o inicio dun programa. 1494 01:14:47,420 --> 01:14:51,400 >> Polo tanto, neste caso, dicimos que, así, máis tarde, no noso programa, imos 1495 01:14:51,400 --> 01:14:55,010 facer unha promesa para aplicar esta función chamada int cubo, o que leva 1496 01:14:55,010 --> 01:14:56,260 unha entrada enteira. 1497 01:14:56,260 --> 01:15:00,870 Entón, agora, porque iso está por riba de inicio, principal, que vai dicir, oh, así, 1498 01:15:00,870 --> 01:15:03,910 máis tarde no programa, que será alí para que eu poida consultalo la, entón eu vou 1499 01:15:03,910 --> 01:15:05,230 só deixar pasar por agora. 1500 01:15:05,230 --> 01:15:07,660 >> E, a continuación, na parte inferior, Implementar cubo. 1501 01:15:07,660 --> 01:15:11,180 E entón principal será só dicir, ben, ha clasificar de conexión 1502 01:15:11,180 --> 01:15:12,250 estes dous símbolos xuntos. 1503 01:15:12,250 --> 01:15:14,320 E nós imos cubrir o que iso significa máis tarde. 1504 01:15:14,320 --> 01:15:17,090 E así vai saber que esta é a función cubo que debe empregar. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: O [inaudível] sobre querer principal na parte inferior ou 1507 01:15:23,383 --> 01:15:24,880 top, vin os dous. 1508 01:15:24,880 --> 01:15:28,630 Hai cousas que simplemente quere poñer principal na parte inferior. 1509 01:15:28,630 --> 01:15:32,520 Pero unha vez que un proxecto é especialmente grande, xeralmente principal está nun 1510 01:15:32,520 --> 01:15:34,290 arquivo propio. 1511 01:15:34,290 --> 01:15:38,170 E nese punto, como o liña cubo int sería - 1512 01:15:38,170 --> 01:15:42,460 dentro stdio.h son unha banda de liñas só como aquel int 1513 01:15:42,460 --> 01:15:44,010 liña de entrada cubo int. 1514 01:15:44,010 --> 01:15:50,170 >> E para que estes prototipos son cousas que tenden a poñer en arquivos de cabeceira, en 1515 01:15:50,170 --> 01:15:52,140 Nese punto, non importa. 1516 01:15:52,140 --> 01:15:54,700 Ben, non importa. 1517 01:15:54,700 --> 01:15:56,070 Aqueles sempre ir na parte superior. 1518 01:15:56,070 --> 01:15:59,490 E se de inicio non é un ficheiro propio, non se preocupe en colocar 1519 01:15:59,490 --> 01:16:02,360 prototipos de funcións individuais no arquivo. 1520 01:16:02,360 --> 01:16:05,370 >> JOSÉ: E nós imos chegar a iso un pouco pouco máis tarde, cando Rob comeza a falar 1521 01:16:05,370 --> 01:16:06,380 sobre a compilación. 1522 01:16:06,380 --> 01:16:09,480 E así tamén hai unha diferenza entre parámetro e argumento. 1523 01:16:09,480 --> 01:16:12,500 E parámetro é só o que chamamos eses insumos cando 1524 01:16:12,500 --> 01:16:13,820 definimos a función. 1525 01:16:13,820 --> 01:16:16,950 E chamamos iso dun argumento cando realmente pasalo para a función. 1526 01:16:16,950 --> 01:16:19,600 >> Polo tanto, neste caso, este é un parámetro, como dixemos antes. 1527 01:16:19,600 --> 01:16:24,130 E cando nós realmente usalo de alí, cubo de x, entón X en si é 1528 01:16:24,130 --> 01:16:25,910 o que chamamos un argumento ao cubo función. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Entón os argumentos de parámetros son - 1530 01:16:28,150 --> 01:16:33,270 hai esta distinción, moi confundida alternativamente. 1531 01:16:33,270 --> 01:16:37,090 Neste momento, para min, é como un dos aquelas palabras que, cando velo en 1532 01:16:37,090 --> 01:16:41,190 o salvaxe, eu non podo axudar, pero inmediatamente cuestión de saber se eles están usando-o en 1533 01:16:41,190 --> 01:16:44,120 no contexto correcto, xa que o diferenza é sutil abondo para que 1534 01:16:44,120 --> 01:16:45,500 todos tenden - 1535 01:16:45,500 --> 01:16:48,530 Eu case sempre digo argumento independentemente do que quero dicir. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> José; e funcións tamén son útiles ao que chamamos de efectos secundarios. 1538 01:16:54,630 --> 01:16:59,230 Así, unha función pode tomar ningunha entrada, e el tamén pode producir ningunha saída. 1539 01:16:59,230 --> 01:17:03,280 Polo tanto, neste caso particular, eu son definición dunha sub-rutina que non ten ningunha 1540 01:17:03,280 --> 01:17:03,970 valor de retorno. 1541 01:17:03,970 --> 01:17:07,730 E, a fin de indicar que, utilizamos o que chamamos un baleiro aquí. 1542 01:17:07,730 --> 01:17:10,890 E así, o efecto colateral desta función é que só imprime o material 1543 01:17:10,890 --> 01:17:11,920 á páxina. 1544 01:17:11,920 --> 01:17:13,840 En realidade, non tomar calquera insumos, e iso non ocorre 1545 01:17:13,840 --> 01:17:15,360 realmente producir calquera saídas. 1546 01:17:15,360 --> 01:17:18,230 >> Pero isto pode ser útil no sentido se quere, por exemplo, depuración 1547 01:17:18,230 --> 01:17:21,530 algo no seu programa, se quere para escribir un pouco sub-rutina que 1548 01:17:21,530 --> 01:17:25,160 imprime, imos dicir, o contido de memoria ou algo así. 1549 01:17:25,160 --> 01:17:29,800 E así, estes efectos secundarios son, ás veces, útil, fóra do contexto 1550 01:17:29,800 --> 01:17:33,010 só quere entradas e saídas. 1551 01:17:33,010 --> 01:17:34,260 Algunha pregunta? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> E para rematar este segmento particular, o que este programa fai? 1554 01:17:44,240 --> 01:17:47,420 Vou dar a vostedes un par de segundos para lelo. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 Nun nivel moi básico, o que queremos dicir é que cambio x e y, non? 1557 01:17:56,880 --> 01:18:00,090 >> Entón, como moitos de vostedes realmente pensan iso vai cambiar xe y? 1558 01:18:00,090 --> 01:18:02,160 Levante súa man. 1559 01:18:02,160 --> 01:18:02,760 Ninguén. 1560 01:18:02,760 --> 01:18:03,070 Aceptar. 1561 01:18:03,070 --> 01:18:06,720 Quen pensa que vai non cambiar xe y? 1562 01:18:06,720 --> 01:18:09,120 E a suma de que era non o cuarto enteiro. 1563 01:18:09,120 --> 01:18:10,440 Por iso, algunhas persoas non está seguro. 1564 01:18:10,440 --> 01:18:10,920 Aceptar. 1565 01:18:10,920 --> 01:18:11,630 Iso é razoable. 1566 01:18:11,630 --> 01:18:16,450 >> Entón, imos pasar polo que acontece cando realmente chamar funcións por primeira vez en 1567 01:18:16,450 --> 01:18:18,320 Para responder a esta pregunta. 1568 01:18:18,320 --> 01:18:21,430 Entón, iso é o que a memoria tipo de parecer. 1569 01:18:21,430 --> 01:18:23,860 Este é máis ou menos como un modelo simplificado memoria do que parece cando 1570 01:18:23,860 --> 01:18:24,800 executar un programa. 1571 01:18:24,800 --> 01:18:27,270 Polo tanto, hai algo chamado a pila abaixo aquí e 1572 01:18:27,270 --> 01:18:28,330 algo chamado heap. 1573 01:18:28,330 --> 01:18:30,950 E estes crecen cara o medio de memoria. 1574 01:18:30,950 --> 01:18:33,860 >> Polo tanto, neste caso particular, cando chamar a unha función, el 1575 01:18:33,860 --> 01:18:35,680 colócase na pila. 1576 01:18:35,680 --> 01:18:38,900 E entón o que está contido no que función permanece no que chamamos que 1577 01:18:38,900 --> 01:18:40,550 stack marco da función. 1578 01:18:40,550 --> 01:18:44,500 E así, para obter un bo visualización de iso, imos - por exemplo, tivemos a 1579 01:18:44,500 --> 01:18:45,960 programa principal antes. 1580 01:18:45,960 --> 01:18:47,820 E dentro do principal, que chamamos cubo. 1581 01:18:47,820 --> 01:18:50,650 Así principal sería primeiro van para a pila enmarcar, porque é a primeira función 1582 01:18:50,650 --> 01:18:51,640 que se chama. 1583 01:18:51,640 --> 01:18:55,740 >> E entón, cando cubo se chama dentro principal, que é colocado na parte superior da principal 1584 01:18:55,740 --> 01:18:57,790 dentro da memoria. 1585 01:18:57,790 --> 01:19:02,090 Entón, o que vai notar é que cubo ten os seus propios parámetros ea súa 1586 01:19:02,090 --> 01:19:02,950 propios veciños. 1587 01:19:02,950 --> 01:19:06,720 Entón, cando o que realmente pasar algo para unha función, os parámetros que 1588 01:19:06,720 --> 01:19:09,910 se son copias do que se pasado do principal. 1589 01:19:09,910 --> 01:19:14,140 >> E a sorte de explicar isto, imos camiñar por un programa. 1590 01:19:14,140 --> 01:19:16,960 Polo tanto, temos a pila, o que é só a parte do conxunto. 1591 01:19:16,960 --> 01:19:21,240 E o que nós facemos é primeiro arrincar x e y de un e dous. 1592 01:19:21,240 --> 01:19:22,400 Polo tanto, temos esas pequenas caixas. 1593 01:19:22,400 --> 01:19:25,310 Eles están sentados na pila do principal enmarcar na pila. 1594 01:19:25,310 --> 01:19:26,580 Eles conteñen un e dous. 1595 01:19:26,580 --> 01:19:28,820 >> Agora chamamos intercambio. 1596 01:19:28,820 --> 01:19:33,940 O que pasa é que pasamos x e y en intercambio, e intercambio crea as súas propias copias 1597 01:19:33,940 --> 01:19:36,520 destas variables para usar dentro do seu cadro de pila. 1598 01:19:36,520 --> 01:19:39,920 Entón agora alí temos, un que contén o valor que tiña xe b, 1599 01:19:39,920 --> 01:19:41,620 que contén o valor que tiña y. 1600 01:19:41,620 --> 01:19:42,670 Entón, un, dous. 1601 01:19:42,670 --> 01:19:47,130 >> E vai entender que este é separado de x e y no inicio. 1602 01:19:47,130 --> 01:19:51,390 Así, temos agora crear un temporal variable conteña un. 1603 01:19:51,390 --> 01:19:56,100 Definimos un igual ab, polo que cambios dun a dous. 1604 01:19:56,100 --> 01:19:59,340 E, entón, establecer b igual a temperatura, o que é un. 1605 01:19:59,340 --> 01:20:01,640 >> E entón agora imos saír esta función. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Cando saír da función, o cadro de pila queda eliminado da pila. 1608 01:20:07,410 --> 01:20:08,270 Chamámoslle empurrar. 1609 01:20:08,270 --> 01:20:12,750 Aperta un cadro de pila para a pila e pop fóra da pila. 1610 01:20:12,750 --> 01:20:16,080 E entón o que pasa é que todo o que Foi nese cadro de pila tipo de só 1611 01:20:16,080 --> 01:20:17,280 sobe en chamas. 1612 01:20:17,280 --> 01:20:19,180 E para que non máis existe. 1613 01:20:19,180 --> 01:20:20,470 >> Pero o que percibimos? 1614 01:20:20,470 --> 01:20:23,690 Nós nunca realmente cambiou o valores de x e y, non? 1615 01:20:23,690 --> 01:20:26,530 Polo tanto, aqueles permaneceu lugar para inicio. 1616 01:20:26,530 --> 01:20:29,900 E, pasando as cousas a cambio, nós en realidade nunca cambiou eses valores. 1617 01:20:29,900 --> 01:20:31,260 E o que chamamos iso? 1618 01:20:31,260 --> 01:20:33,040 Chamamos iso de pasaxe por valor. 1619 01:20:33,040 --> 01:20:36,860 >> Así, no C, cando pasa as cousas en funcións, pasa-los por valor e 1620 01:20:36,860 --> 01:20:40,160 fai unha copia deles para a función de usar. 1621 01:20:40,160 --> 01:20:43,980 E nós imos aprender sobre algo chamado paso por referencia máis tarde, pero iso é 1622 01:20:43,980 --> 01:20:45,390 un xeito que pode resolver este problema. 1623 01:20:45,390 --> 01:20:47,080 Pero non vai preocuparse que ata máis tarde. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: E de feito, ese termo, que pasa por referencia, entón C non ten sequera 1625 01:20:52,200 --> 01:20:54,270 pasando pola referencia. 1626 01:20:54,270 --> 01:20:56,760 C exclusivamente ten pasaxe por valor. 1627 01:20:56,760 --> 01:20:59,630 Non importa o que fai, está sempre pasando unha copia de algo. 1628 01:20:59,630 --> 01:21:03,395 É que, como eu medio que mencionei que antes con punteiros 1629 01:21:03,395 --> 01:21:07,690 e que unha cadea é realmente só catro bytes apuntando a un lugar na memoria. 1630 01:21:07,690 --> 01:21:11,890 >> Ben, se eu tivera esa cadea e é me dicindo que é onde a cadea - 1631 01:21:11,890 --> 01:21:15,470 ben, se eu tivera ese punteiro para este poñer na memoria, entón eu podo pasar un 1632 01:21:15,470 --> 01:21:19,160 copia do punteiro a unha función e que a función aínda sabe onde en 1633 01:21:19,160 --> 01:21:19,780 memoria que é. 1634 01:21:19,780 --> 01:21:22,950 Entón, eses dous punteiros están apuntando para o mesmo lugar na memoria, e 1635 01:21:22,950 --> 01:21:26,460 é así que nós imos ser capaces para modificar as cousas ademais da 1636 01:21:26,460 --> 01:21:29,852 cadro de pila actual. 1637 01:21:29,852 --> 01:21:31,040 >> JOSÉ: Quere facer a compilación? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Non, é 5:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSÉ: Aceptar. 1640 01:21:32,910 --> 01:21:35,040 É 5:30. 1641 01:21:35,040 --> 01:21:35,360 Aceptar. 1642 01:21:35,360 --> 01:21:39,280 Entón, imos cubrir a compilación creo que en á seguinte sección, ou a súa sección 1643 01:21:39,280 --> 01:21:42,795 líder vontade nese punto. 1644 01:21:42,795 --> 01:21:43,272 E - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Algunha pregunta? 1646 01:21:44,630 --> 01:21:46,760 >> JOSÉ: Algunha pregunta? 1647 01:21:46,760 --> 01:21:47,150 Si? 1648 01:21:47,150 --> 01:21:52,469 >> COLUMNA 5: Usando cordas de CS50, calquera funcións que quere empregar para 1649 01:21:52,469 --> 01:21:53,880 aqueles, que será como funcións C. 1650 01:21:53,880 --> 01:21:59,050 CS50 non pasou e fixo ningunha adicional. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Correcto. 1652 01:22:01,850 --> 01:22:08,155 Calquera dos C como [inaudível], vostede usaría aqueles nas nosas cadeas. 1653 01:22:08,155 --> 01:22:12,400 >> JOSÉ: E unha última cousa que quero mención é que temos unha guía de estilo 1654 01:22:12,400 --> 01:22:13,130 a esta clase. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Ah, si. 1656 01:22:13,360 --> 01:22:15,270 >> JOSÉ: Entón, se veu dun programación fondo antes, 1657 01:22:15,270 --> 01:22:17,750 pode ter certas convencións cando está escribindo código como poñer 1658 01:22:17,750 --> 01:22:20,950 claves na mesma liña ou especial formas de recuar 1659 01:22:20,950 --> 01:22:22,240 ou nomear súas variables. 1660 01:22:22,240 --> 01:22:26,870 Nesta clase, queremos seguir un guía de estilo específico, só porque, 1661 01:22:26,870 --> 01:22:31,100 ben, se saír e traballar en industria, vai ser esperado 1662 01:22:31,100 --> 01:22:34,780 a seguir a guía de estilo da empresa en que vai. 1663 01:22:34,780 --> 01:22:38,040 >> Como por exemplo, Facebook creo ten un tipo particular de nomear 1664 01:22:38,040 --> 01:22:38,760 convención. 1665 01:22:38,760 --> 01:22:42,570 E hai diferenzas entre camelo variables da carcasa e, así como 1666 01:22:42,570 --> 01:22:44,610 separándoos con guións baixos. 1667 01:22:44,610 --> 01:22:52,170 E tamén, eu creo que o máis importante, como por exemplo, o repregamento, non? 1668 01:22:52,170 --> 01:22:56,440 >> Nós claves comezar onde condición, e 1669 01:22:56,440 --> 01:22:57,730 están na liña seguinte. 1670 01:22:57,730 --> 01:23:01,230 E nós tamén poñer chaves en aínda que sexa só unha liña. 1671 01:23:01,230 --> 01:23:06,100 E unha morea de veces, hai formas de facer lo onde podes deixar esas claves 1672 01:23:06,100 --> 01:23:08,380 fóra se é só unha liña baixo a instrución If. 1673 01:23:08,380 --> 01:23:12,070 Pero nesta clase, queremos seguir un guía de estilo específico só para que obteña 1674 01:23:12,070 --> 01:23:13,550 usado para este tipo de cousas. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Si, e estilo dos anos 50 vai facer cumprir esta guía de estilo, e estamos 1676 01:23:16,410 --> 01:23:18,080 vai utilizar estilo dos anos 50 para grao de seu código. 1677 01:23:18,080 --> 01:23:25,150 Por iso, fai as cousas máis fáciles para nós e esperemos que non debe facer cousas que 1678 01:23:25,150 --> 01:23:30,120 moito peor para vostede, dada a estilo estándar non debe ser tan 1679 01:23:30,120 --> 01:23:31,460 irrealista. 1680 01:23:31,460 --> 01:23:36,000 >> JOSÉ: E, finalmente, para atopar o estilo guía, vai a manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 E si. 1682 01:23:37,725 --> 01:23:40,575 >> COLUMNA 4: Vai facer valer calquera carácteres por liña? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: si. 1684 01:23:42,480 --> 01:23:45,405 >> JOSÉ: Sentímolo, persoal. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: Isto é como un dos únicos. 1686 01:23:47,680 --> 01:23:50,420 Neste punto, estou Aceptar con 120. 1687 01:23:50,420 --> 01:23:52,460 Eu estou ben con que dicir 120 caracteres por liña. 1688 01:23:52,460 --> 01:23:53,830 Eu entendo que haxa algún límite. 1689 01:23:53,830 --> 01:23:57,130 Eu creo que 80 é tan pequeno, pero estamos aplicala. 1690 01:23:57,130 --> 01:24:00,260 >> JOSÉ: Persoalmente, creo que con C, 80 carácteres é máis Aceptar. 1691 01:24:00,260 --> 01:24:04,160 Unha vez que comeza a estar a outro linguaxes como JavaScript e PHP, e non 1692 01:24:04,160 --> 01:24:08,860 de xeito razoábel só limitar -A 80 caracteres. 1693 01:24:08,860 --> 01:24:09,260 Aceptar. 1694 01:24:09,260 --> 01:24:12,780 Ben, esa foi a sección de super. 1695 01:24:12,780 --> 01:24:14,750 Alguén quere doce? 1696 01:24:14,750 --> 01:24:16,000 >> COLUMNA 4: Si 1697 01:24:16,000 --> 01:24:18,667