1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [REPRODUCIÓN DE VIDEO] 3 00:00:16,626 --> 00:00:19,410 >> -A Triunfo de matemáticas e capacidade mecánica 4 00:00:19,410 --> 00:00:23,270 é esta nova gran automática calculadora na Universidade de Harvard. 5 00:00:23,270 --> 00:00:27,140 Intrincados problemas en matemáticas poñer a través da máquina en forma codificada, 6 00:00:27,140 --> 00:00:31,710 na cinta con precisión son resoltos nun diminuta fracción do tempo necesario 7 00:00:31,710 --> 00:00:32,819 para o cálculo humano. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Deseñado para axilizar toda forma de investigación matemática e científica, 10 00:00:48,220 --> 00:00:53,840 o cerebro mecánico xigante vai traballar para Mariña dos Estados Unidos ata o final da guerra. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [FIN DE REPRODUCIÓN] 13 00:01:06,570 --> 00:01:08,590 >> David J. Malan: Este é CS50. 14 00:01:08,590 --> 00:01:10,590 O pasado era un máxico lugar, pero se xa 15 00:01:10,590 --> 00:01:13,366 preguntou o que este dispositivo é en Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 é de feito parte do Harvard Mark I, e é 17 00:01:16,150 --> 00:01:18,710 en exposición alí agora nos últimos moitos anos. 18 00:01:18,710 --> 00:01:20,590 E o que podes ver incorporado no conxunto de problemas 19 00:01:20,590 --> 00:01:24,416 un é un ollar detrás das escenas en que este dispositivo fixo, e fai, 20 00:01:24,416 --> 00:01:27,540 Profesor de Harry Lewis, que está o departamento de ciencia da computación aquí. 21 00:01:27,540 --> 00:01:29,440 Así, máis que en algo. 22 00:01:29,440 --> 00:01:33,990 >> Pero hoxe comezan a transición desde a semana pasada para esta, 23 00:01:33,990 --> 00:01:37,290 e nós imos traer mención dunha fotografía aquí 24 00:01:37,290 --> 00:01:38,630 iso é realmente moi famoso. 25 00:01:38,630 --> 00:01:42,270 Alguén sabe o que esta aquí está na pantalla? 26 00:01:42,270 --> 00:01:43,880 Polo menos segundo o mito. 27 00:01:43,880 --> 00:01:44,837 Si. 28 00:01:44,837 --> 00:01:45,920 Audiencia O primeiro virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. Malan: Entón foi supostamente o primeiro erro real nun ordenador. 30 00:01:49,570 --> 00:01:52,490 Agora, en realidade, a palabra erro, por un erro nun programa, 31 00:01:52,490 --> 00:01:55,250 estivo connosco por algún tempo do mundo físico, 32 00:01:55,250 --> 00:01:58,190 e este foi un dos primeiros veces documentados en que alguén realmente 33 00:01:58,190 --> 00:02:02,280 arrincou unha gran traza fóra do Mark Ordenador II, poñelas no cartafol, 34 00:02:02,280 --> 00:02:05,006 e despois gravamos como o primeiro erro coñecido 35 00:02:05,006 --> 00:02:06,630 ser realmente atopou fisicamente. 36 00:02:06,630 --> 00:02:10,104 Así, polo tanto, foi inserido que en Lore de hoxe. 37 00:02:10,104 --> 00:02:12,020 Todo, dende a última semana está dispoñible en liña. 38 00:02:12,020 --> 00:02:14,840 En recursos particulares que pode non necesariamente observar, especialmente 39 00:02:14,840 --> 00:02:15,881 se vir aquí persoalmente. 40 00:02:15,881 --> 00:02:20,230 Así, un dos compañeiros de ensino cada ano fai un conxunto canónico de notas, 41 00:02:20,230 --> 00:02:22,010 así que non manter súa cabeza para abaixo, tratando 42 00:02:22,010 --> 00:02:24,410 transcribir todo que podería acontecer aquí na clase. 43 00:02:24,410 --> 00:02:25,940 Así, entender que os así-chamada [? Scribd?] Notas 44 00:02:25,940 --> 00:02:29,350 están en liña, certamente os diapositivas e código fonte que usan en clase. 45 00:02:29,350 --> 00:02:31,436 Facemos transcricións de texto completo dispoñible tamén. 46 00:02:31,436 --> 00:02:34,310 Entón, se me lembro vagamente algúns prazo, e quere buscalo algo 47 00:02:34,310 --> 00:02:37,280 máis facilmente, entender que todos de que é searchable en liña. 48 00:02:37,280 --> 00:02:38,930 Así como instrucións paso a paso, ben. 49 00:02:38,930 --> 00:02:42,710 De feito, hoxe comezan a mirar para unha linguaxe de programación de baixo nivel, 50 00:02:42,710 --> 00:02:45,290 logo a ser coñecido por nós como C, e é moi fácil 51 00:02:45,290 --> 00:02:48,820 a sorte de perderse despois de só uns momentos do tempo, e, a continuación, tipo de marabilla 52 00:02:48,820 --> 00:02:52,370 como realmente comecei a un pouco máis exemplo complexa desde as máis simples. 53 00:02:52,370 --> 00:02:54,975 E así imos entender cereixa escoller durante a clase dalgunha 54 00:02:54,975 --> 00:02:57,850 dos exemplos representativos, pero entender que moito máis é tamén 55 00:02:57,850 --> 00:03:01,140 dispoñible en liña para que poida traballar través del no seu propio ritmo, 56 00:03:01,140 --> 00:03:02,950 con todo, está máis cómodo. 57 00:03:02,950 --> 00:03:05,200 >> Pero paramos con programas que eran só iso. 58 00:03:05,200 --> 00:03:09,690 Entón eu premer a bandeira verde, eo que este programa fai? 59 00:03:09,690 --> 00:03:10,710 Di: Ola, mundo. 60 00:03:10,710 --> 00:03:13,180 Fai o gato dicir Ola no seu pequeno mundo 61 00:03:13,180 --> 00:03:15,990 na parte superior esquerda de interface de usuario de cero. 62 00:03:15,990 --> 00:03:18,810 Pero comezamos a introducir algunhas terminoloxías a semana pasada. 63 00:03:18,810 --> 00:03:23,614 E así, cousas como esta que chamou o que? 64 00:03:23,614 --> 00:03:25,280 O que podería ser o termo xenérico para iso? 65 00:03:25,280 --> 00:03:26,266 Si. 66 00:03:26,266 --> 00:03:28,210 Un método ou unha declaración. 67 00:03:28,210 --> 00:03:29,280 Por suposto, é unha acción. 68 00:03:29,280 --> 00:03:30,140 Faga iso. 69 00:03:30,140 --> 00:03:32,400 E aínda había outras formas para cero, 70 00:03:32,400 --> 00:03:35,360 Ademais destes chamados declaración, eles tamén foron 71 00:03:35,360 --> 00:03:38,221 cousas como esta, que chamamos o que? 72 00:03:38,221 --> 00:03:38,720 Si. 73 00:03:38,720 --> 00:03:39,634 Así, un loop. 74 00:03:39,634 --> 00:03:42,050 E neste caso, esa cousa repeticións, obviamente, 10 veces. 75 00:03:42,050 --> 00:03:43,040 Hai un bloque para sempre. 76 00:03:43,040 --> 00:03:44,164 Hai un par de outros. 77 00:03:44,164 --> 00:03:48,309 E hoxe imos ver como traducir isto para un mundo máis moderno, 78 00:03:48,309 --> 00:03:50,850 se quixeren, aínda que sexa vai parecer a primeira vista 79 00:03:50,850 --> 00:03:52,024 a ser moito máis misterioso. 80 00:03:52,024 --> 00:03:53,190 Pero aqueles eran de feito lazos. 81 00:03:53,190 --> 00:03:56,182 E entón temos cousas como este, que esa forma, 82 00:03:56,182 --> 00:03:57,515 e esencialmente preguntas. 83 00:03:57,515 --> 00:03:58,890 E falamos de elas como o que? 84 00:03:58,890 --> 00:03:59,762 >> Audiencia: expresión booleana. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. Malan: Yeah. 86 00:04:00,320 --> 00:04:01,340 Expresión booleana. 87 00:04:01,340 --> 00:04:04,502 Algo que é certo ou falso, si ou non, un ou cero, 88 00:04:04,502 --> 00:04:05,960 con todo, quere ver o mundo. 89 00:04:05,960 --> 00:04:08,335 Pero chamamos os booleana expresións, e liga-los 90 00:04:08,335 --> 00:04:09,900 en condicións, ou ramas. 91 00:04:09,900 --> 00:04:12,170 E no mundo de Cero, todo ben 92 00:04:12,170 --> 00:04:15,460 trabas en termos da súa forma, se ten sentido lóxico facelo, 93 00:04:15,460 --> 00:04:18,490 pero non ten que deixar en só facendo unha cousa condicional, 94 00:04:18,490 --> 00:04:20,450 pode ter unha proverbial bifurcación na estrada 95 00:04:20,450 --> 00:04:24,040 e facer isto ou aquilo se a condición é certa ou non. 96 00:04:24,040 --> 00:04:26,040 E entón, como vai ver, se non ten, 97 00:04:26,040 --> 00:04:27,480 Podes incluso niño eses bloques. 98 00:04:27,480 --> 00:04:32,110 Así arañazos crece para cubrir as formas que pode querer inserir-lo, 99 00:04:32,110 --> 00:04:35,330 para que poida realmente expresar máis calquera lóxica que pode querer facer. 100 00:04:35,330 --> 00:04:38,220 >> Agora algunhas palabras de anuncio para tanto aquí como New Haven. 101 00:04:38,220 --> 00:04:39,370 Entón corte comeza hoxe. 102 00:04:39,370 --> 00:04:42,120 A URL para iso é o curso de web, para os non familiarizados. 103 00:04:42,120 --> 00:04:43,970 Seccións será un oportunidade de reunirse 104 00:04:43,970 --> 00:04:46,553 nun ambiente moito máis intimista de [? Sanders?] Permite, 105 00:04:46,553 --> 00:04:50,347 con 10 a 20 cun compañeiros ensinando compañeiro en diferentes pistas, 106 00:04:50,347 --> 00:04:51,930 e ritmos diferentes, se así o desexen. 107 00:04:51,930 --> 00:04:54,080 En realidade as ofertas de cursos seccións diferentes 108 00:04:54,080 --> 00:04:57,340 para aqueles menos cómodo, máis cómodo, e nalgún lugar no medio, 109 00:04:57,340 --> 00:04:59,860 eo papel de ouro aquí, é non hai unha definición formal, 110 00:04:59,860 --> 00:05:04,600 pero se é menos cómodo, medio que coñecemos. 111 00:05:04,600 --> 00:05:07,470 Está un pouco sobre o intrépido idea de entrar a pé, quizais, de volta 112 00:05:07,470 --> 00:05:10,130 na clase, ou amosar ata unha sección no medio. 113 00:05:10,130 --> 00:05:12,770 Se xa estivo programación sempre que foron seis anos de idade, máis cómodo, 114 00:05:12,770 --> 00:05:13,400 quizais para ti. 115 00:05:13,400 --> 00:05:16,150 E se é un tipo de tiro-up, iso é o que o in-between 116 00:05:16,150 --> 00:05:17,190 está destinado a ser. 117 00:05:17,190 --> 00:05:18,410 >> Agora, con todo, para unha clase deste tamaño, 118 00:05:18,410 --> 00:05:21,326 ela nos leva moito tempo para sección todos, polo que temos chamado, 119 00:05:21,326 --> 00:05:24,030 seccións de super, chegando este fin de semana e comezos da semana que vén, 120 00:05:24,030 --> 00:05:26,570 entón bótalle un ollo no sitio web do curso para os que están naturalmente ampla, 121 00:05:26,570 --> 00:05:28,610 e tamén filmou para aqueles que non pode facelos. 122 00:05:28,610 --> 00:05:33,470 E seccións si comezará a semana tres dos CS50 índice cero. 123 00:05:33,470 --> 00:05:35,880 Problema xa está definido 0 na páxina web do curso. 124 00:05:35,880 --> 00:05:40,010 E entender que ten nove días de atraso neste semestre. 125 00:05:40,010 --> 00:05:43,240 Polo tanto, esta é unha actualización do pasado ano, cando tivemos cinco días de atraso. 126 00:05:43,240 --> 00:05:46,210 >> Entón, se está a se pregunta, temos nove conxuntos de problemas. 127 00:05:46,210 --> 00:05:53,200 Ten nove días de atraso, cada un dos cales só se pode gastar un por semana no. 128 00:05:53,200 --> 00:05:56,089 Isto fai de forma eficaz todos o problema define debido venres 129 00:05:56,089 --> 00:05:58,630 pero o obxectivo é poñer un pouco pouco de presión psicolóxica 130 00:05:58,630 --> 00:06:01,100 en ti para tratar de obter cousas en xoves 131 00:06:01,100 --> 00:06:03,960 porque como vai descubrir logo, para mellor ou para peor, a maioría 132 00:06:03,960 --> 00:06:07,820 todo no mundo do software acaba levando máis tempo do que se anticipa. 133 00:06:07,820 --> 00:06:10,620 Por iso, considero-o unha especie de oportunidade de axudar 134 00:06:10,620 --> 00:06:13,880 mesmo para dirixir xoves pero ter confort en que, si, 135 00:06:13,880 --> 00:06:14,950 todo é debido venres. 136 00:06:14,950 --> 00:06:17,590 E se somete-los en Xoves, que é marabilloso. 137 00:06:17,590 --> 00:06:21,020 Non hai puntos de bonos ou extras crédito para cumprir este prazo. 138 00:06:21,020 --> 00:06:23,250 Estaba a ser só unha muleta. 139 00:06:23,250 --> 00:06:25,810 >> E o horario de oficina, tanto aquí e en New Haven, 140 00:06:25,810 --> 00:06:28,840 en persoa, se quere reunirse con calquera dos nosos cursos 141 00:06:28,840 --> 00:06:31,060 ensinando bolsistas e CAs de asistencia. 142 00:06:31,060 --> 00:06:31,640 >> Todo ben. 143 00:06:31,640 --> 00:06:33,110 Entón, agora, imos facelo máis real. 144 00:06:33,110 --> 00:06:35,470 E por un momento que comezará para obter un pouco máis escuro, pero moi 145 00:06:35,470 --> 00:06:37,310 rapidamente o venres e semana estaremos 146 00:06:37,310 --> 00:06:41,230 capaz de facer moito máis do que poderiamos ata agora no scratch. 147 00:06:41,230 --> 00:06:44,350 Entón, nós introducimos último código semana, aínda pictórica. 148 00:06:44,350 --> 00:06:45,620 Foi pezas do puzzle. 149 00:06:45,620 --> 00:06:48,800 E nós formalizado que é algo chamado código fonte, 150 00:06:48,800 --> 00:06:50,330 pero que se parecía? 151 00:06:50,330 --> 00:06:52,550 Ben, el parecía un pouco algo así. 152 00:06:52,550 --> 00:06:55,410 E, de feito, só para o tipo de provocalo onde podemos ir con este. 153 00:06:55,410 --> 00:06:57,800 Eu estou indo a ir adiante e abrir unha ventá aquí, 154 00:06:57,800 --> 00:06:59,810 e eu só vou escoller Novo ficheiro. 155 00:06:59,810 --> 00:07:03,200 E eu estou indo a salvar este ficheiro como algo Ola punto c. 156 00:07:03,200 --> 00:07:05,700 Máis sobre iso elección palabras só un momento. 157 00:07:05,700 --> 00:07:08,630 E así é como alguén podería vai escribir sobre un programa. 158 00:07:08,630 --> 00:07:13,990 Incluír estándar I / O punto h, int main baleiro, a continuación, abra chaveta, preto 159 00:07:13,990 --> 00:07:19,430 chaveta, printf Ola mundo coma, barra invertida n, punto e coma, Gardar feito. 160 00:07:19,430 --> 00:07:19,930 Aceptar. 161 00:07:19,930 --> 00:07:21,670 Escribín o meu primeiro programa, pero vai 162 00:07:21,670 --> 00:07:23,878 para ser incrible decepcionados porque cando, en realidade, 163 00:07:23,878 --> 00:07:27,352 executar este programa, por suposto, por primeira escritura facer Ola, 164 00:07:27,352 --> 00:07:30,310 e, a continuación, dot cortar Ola, e nós imos pasar por iso con máis detalles 165 00:07:30,310 --> 00:07:31,730 nun momento, iso é todo o que fai. 166 00:07:31,730 --> 00:07:33,270 Non abriren as fiestras. 167 00:07:33,270 --> 00:07:35,070 Non fai nada particularmente extravagante. 168 00:07:35,070 --> 00:07:38,830 Todo o que fai é o que eu dixen a el facer, pero como é que imos chegar a iso? 169 00:07:38,830 --> 00:07:40,560 E como é que imos construír enriba diso? 170 00:07:40,560 --> 00:07:43,430 Ben, imos introducir algunhas diferentes conceptos aquí. 171 00:07:43,430 --> 00:07:47,170 >> Entón un, que estamos a piques de comezar usando un programa chamado compilador. 172 00:07:47,170 --> 00:07:51,470 Existe un compilador para Mac OS, Windows, Linux, calquera número de sistemas operativos, 173 00:07:51,470 --> 00:07:54,540 e pronto iremos presentalo ao ambiente que iremos utilizar, 174 00:07:54,540 --> 00:07:57,410 pero un compilador é só un xeneral prazo para unha peza de software 175 00:07:57,410 --> 00:08:01,940 que leva o código fonte e produce o código obxecto da mesma. 176 00:08:01,940 --> 00:08:03,940 Noutras palabras, se ten como entrada a fonte 177 00:08:03,940 --> 00:08:08,250 código, algo así como o que eu escriba, en definitiva, produce o código obxecto. 178 00:08:08,250 --> 00:08:11,780 E código obxecto é realmente só un xeito elegante de dicir que produce 179 00:08:11,780 --> 00:08:12,926 de cero e un de. 180 00:08:12,926 --> 00:08:14,800 Noutras palabras, a fonte código, aínda que sexa 181 00:08:14,800 --> 00:08:17,240 vai mirar un pouco escuro, e un pouco menos agradable 182 00:08:17,240 --> 00:08:19,590 que cero, a primeira vista, é, polo menos, algo 183 00:08:19,590 --> 00:08:21,120 que nós, seres humanos poden entender. 184 00:08:21,120 --> 00:08:24,360 É o tipo de parece e soa como Inglés aínda que sexa moi sucinta. 185 00:08:24,360 --> 00:08:28,040 Tendo en conta que a programación de cero e en one, como os nosos antecesores tiña que facer, 186 00:08:28,040 --> 00:08:30,920 uns anos, non era un particularmente divertido reto. 187 00:08:30,920 --> 00:08:33,710 E, con todo, este é o que o ordenador aínda entende. 188 00:08:33,710 --> 00:08:37,010 Entón compilador está connosco desde código fonte do código obxecto. 189 00:08:37,010 --> 00:08:39,860 É como abrir un arquivo co compilador, e cando salvalo, 190 00:08:39,860 --> 00:08:41,419 obter eses ceros e uns. 191 00:08:41,419 --> 00:08:43,419 Entón, imos ver como facer que en só un momento. 192 00:08:43,419 --> 00:08:47,400 >> Pero imos agora tentar ofrecer un ponte entre a semana pasada e esta, 193 00:08:47,400 --> 00:08:50,660 de xeito que mesmo como nós quedan colgadas en cousas como chaves, 194 00:08:50,660 --> 00:08:54,100 e-comas e parénteses, e todos estes intelectualmente interesante 195 00:08:54,100 --> 00:08:57,620 aspectos da programación, que moi compreensivelmente tropezar persoas ao comezo, 196 00:08:57,620 --> 00:09:00,930 entender que todas as ideas Hoxe en día, son o mesmo que na última. 197 00:09:00,930 --> 00:09:03,975 Entón pasado vimos este exemplo aquí, o programa Ola Mundo. 198 00:09:03,975 --> 00:09:07,500 Ben, a partir de hoxe, se queremos para aplicar ese mesmo programa, 199 00:09:07,500 --> 00:09:10,800 que vai mirar un pouco algo así. 200 00:09:10,800 --> 00:09:14,040 E nós imos explicar en pouco tempo o que int, e principal, e baleiro, e todo isto 201 00:09:14,040 --> 00:09:18,770 é, pero polo menos eu vexo aquí xa o familiar Ola Mundo. 202 00:09:18,770 --> 00:09:20,860 >> Mentres tanto, cousas como función, digamos Ola, 203 00:09:20,860 --> 00:09:23,570 é moi simplemente será un declaración moi simple como este. 204 00:09:23,570 --> 00:09:26,930 Printf Ola mundo, con algúns cita, cunha barra invertida, 205 00:09:26,930 --> 00:09:29,780 cun punto e coma, pero máis de que para vir. 206 00:09:29,780 --> 00:09:34,066 Loops, á súa vez, este é un circuíto que, por suposto, di Ola mundo para sempre, 207 00:09:34,066 --> 00:09:36,690 e este vai mirar un pouco máis estraño que nunca antes, 208 00:09:36,690 --> 00:09:39,530 pero se eu digo algo como, á vez activada, I 209 00:09:39,530 --> 00:09:44,050 Pode entón imprimir Ola, mundo novo e de novo e de novo e de novo. 210 00:09:44,050 --> 00:09:46,660 E entón, como pode tipo de comezar a inferir aquí, 211 00:09:46,660 --> 00:09:49,070 esta convención de usar claves é amable 212 00:09:49,070 --> 00:09:52,050 de como abrazar o liña recuada de código alí. 213 00:09:52,050 --> 00:09:55,840 A liña printf de código moi parecido a peza do puzzle amarelo enriba. 214 00:09:55,840 --> 00:09:58,740 Entón, non imos dicir para sempre, imos dicir mentres certo, 215 00:09:58,740 --> 00:10:01,020 pero imos ver por que isto ocorre en só un pouco. 216 00:10:01,020 --> 00:10:04,210 >> Mentres tanto, si temos un loop como este, onde repetir algo finito 217 00:10:04,210 --> 00:10:07,730 número de veces, este tamén é vai levar un pouco para acostumar 218 00:10:07,730 --> 00:10:12,820 para, pero vai dicir para int i recibe cero, i inferior a 10, i ++, 219 00:10:12,820 --> 00:10:14,056 e, a continuación, de novo printf. 220 00:10:14,056 --> 00:10:15,430 Pero non vai ser patróns. 221 00:10:15,430 --> 00:10:18,434 E para os que están familiarizados con AP Ciencia da Computación, ou Java, 222 00:10:18,434 --> 00:10:21,100 ou calquera número de outras linguas, case todas estas construcións 223 00:10:21,100 --> 00:10:23,820 ata agora que mirar principalmente familiar. 224 00:10:23,820 --> 00:10:24,680 >> Entón variable. 225 00:10:24,680 --> 00:10:29,270 Entón aquí está un simple texto risco que define unha variable chamada contador a cero, 226 00:10:29,270 --> 00:10:33,150 e, a continuación, para sempre, di o contador, e a continuación, cambia o contador a unha. 227 00:10:33,150 --> 00:10:37,030 Así que comeza con cero, e, a continuación, un, dous, tres. 228 00:10:37,030 --> 00:10:42,560 Ben, como podemos introducir que, en esa nova linguaxe algo semellante? 229 00:10:42,560 --> 00:10:45,460 Int contador é igual a cero, mentres certo, que 230 00:10:45,460 --> 00:10:48,100 é que aínda idea antes de facer algo para sempre, 231 00:10:48,100 --> 00:10:49,530 e eu estou indo só para printf. 232 00:10:49,530 --> 00:10:53,310 E agora está quedando un pouco raro, i por cento, pero máis sobre iso para vir, 233 00:10:53,310 --> 00:10:55,140 pero esas ideas son exactamente os mesmos. 234 00:10:55,140 --> 00:10:58,820 Nós só agora teñen que unirse a A sintaxe que o ordenador está 235 00:10:58,820 --> 00:11:00,010 vai esixir de nós. 236 00:11:00,010 --> 00:11:04,620 >> Expresión booleana, algo así como SX menor que y, ou x menos que Y, 237 00:11:04,620 --> 00:11:06,354 e y inferior a z. 238 00:11:06,354 --> 00:11:09,270 Vai parecer un pouco algo así, con parénteses só 239 00:11:09,270 --> 00:11:13,020 como en matemáticas para unha boa medida para só asegurar que a orde das operacións 240 00:11:13,020 --> 00:11:14,750 é como pretendemos. 241 00:11:14,750 --> 00:11:15,600 E agora, condicións. 242 00:11:15,600 --> 00:11:21,220 Entón, se x menos y, digamos x é menor de Y, o resto si x é maior que Y, 243 00:11:21,220 --> 00:11:26,020 dicir que x é maior que Y, se non loxicamente, x debe ser igual a y. 244 00:11:26,020 --> 00:11:28,710 Entón pode aplicar algo así en risco, 245 00:11:28,710 --> 00:11:31,230 ou pode aplicar que nesta sintaxe. 246 00:11:31,230 --> 00:11:35,090 E, de novo, as claves son unha especie de dándonos a mesma forma en que o puzzle 247 00:11:35,090 --> 00:11:40,750 pezas, pero a sintaxe, agora, é quizais empezando a seguir algúns patróns. 248 00:11:40,750 --> 00:11:42,910 >> Entón, o que iso nos dea aquí? 249 00:11:42,910 --> 00:11:45,260 Entón, nós estamos de volta, a continuación, no noso programa principal. 250 00:11:45,260 --> 00:11:47,930 Imos realmente agora facer algo con el. 251 00:11:47,930 --> 00:11:50,660 Así, neste primeiro liña vemos inclúen afiada, 252 00:11:50,660 --> 00:11:53,160 E / S estándar, dot h, e logo algún ángulo esquisito 253 00:11:53,160 --> 00:11:57,330 soportes debaixo diso. int main baleiro, e despois printf Ola mundo. 254 00:11:57,330 --> 00:11:58,200 Entón, só tes que dar un paso. 255 00:11:58,200 --> 00:12:02,440 Alguén que nunca programou antes, explicar, polo menos, unha destas liñas. 256 00:12:02,440 --> 00:12:04,490 Usando quizais algúns de xerga da semana pasada. 257 00:12:04,490 --> 00:12:06,942 ¿Que é printf, por exemplo? 258 00:12:06,942 --> 00:12:07,442 Si. 259 00:12:07,442 --> 00:12:08,410 >> Audiencia: [inaudível] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. Malan: Yeah. 261 00:12:08,610 --> 00:12:11,380 É unha función, ou unha declaración, da terminoloxía da semana pasada. 262 00:12:11,380 --> 00:12:13,470 E é unha acción que está facendo algo. 263 00:12:13,470 --> 00:12:15,855 Agora esta función, ou esta declaración, fai 264 00:12:15,855 --> 00:12:17,550 que parecen ter algún tipo de entrada? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 E en que sentido ten que parecen entrada, en caso afirmativo? 267 00:12:24,380 --> 00:12:26,180 Entrada, o que quero dicir con iso? 268 00:12:26,180 --> 00:12:26,720 Si. 269 00:12:26,720 --> 00:12:27,595 >> Audiencia: [inaudível] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. Malan: Yeah. 272 00:12:31,440 --> 00:12:34,890 Entón Acoitelado fóra algunhas pezas do puzzle onde pode parametrizar iso. 273 00:12:34,890 --> 00:12:37,980 Podería dicir que a repetición bloquear as veces a repetir, 274 00:12:37,980 --> 00:12:40,320 de xeito que era unha entrada de tipo, e só como cero 275 00:12:40,320 --> 00:12:43,060 tivo un pouco de espazo reservado branco ao número que escribir, 276 00:12:43,060 --> 00:12:45,810 nós tamén usar neste parénteses mundo texto 277 00:12:45,810 --> 00:12:49,910 para dar esa forma circular no que podemos conectar o noso contribución. 278 00:12:49,910 --> 00:12:53,180 Ao final, decenas de anos cando esta linguaxe, chamado C, 279 00:12:53,180 --> 00:12:55,950 foi inventado ninguén adiantou que é un de nós, 280 00:12:55,950 --> 00:12:59,420 estes, algúns anos despois, estariamos quere unha función que se Ola. 281 00:12:59,420 --> 00:12:59,920 Non? 282 00:12:59,920 --> 00:13:02,880 Sería bo que houbese unha parte do enigma, ou algunhas palabras clave, 283 00:13:02,880 --> 00:13:05,502 que se chama Ola, que literalmente só di Ola. 284 00:13:05,502 --> 00:13:06,460 Pero nós non precisamos diso. 285 00:13:06,460 --> 00:13:09,320 Podemos ter algo moito máis baixo nivel, como unha impresión xenérico 286 00:13:09,320 --> 00:13:12,760 mando, que leva entrada, e imprime o que quere que queremos. 287 00:13:12,760 --> 00:13:14,960 Entón, observe agora o estándar que comezará a emerxer. 288 00:13:14,960 --> 00:13:19,310 Paréntese aberta, preto paréntese é aparentemente abrazando a entrada, 289 00:13:19,310 --> 00:13:21,770 e entón eu vexo dobre cita en ambas as extremidades. 290 00:13:21,770 --> 00:13:25,110 Hai aínda barra invertida estraño n, pero espero que agora 291 00:13:25,110 --> 00:13:29,900 Pode comezar a ver, polo menos, que printf está tomando en algunha forma de entrada. 292 00:13:29,900 --> 00:13:31,850 Non tan agradable canto Rabuñar, pero é só 293 00:13:31,850 --> 00:13:34,920 como ter conectado algún valor alí. 294 00:13:34,920 --> 00:13:38,306 >> Todo ben, agora imos realmente facer algo con iso. 295 00:13:38,306 --> 00:13:40,930 Entón, algúns de vostedes poden coñecer desde comprar a clase antes, 296 00:13:40,930 --> 00:13:42,638 conversou cos amigos, que, para moitos anos 297 00:13:42,638 --> 00:13:44,590 usamos algo chamado o aparello CS50. 298 00:13:44,590 --> 00:13:49,160 Este foi un termo que describe unha tecnoloxía chamado máquina virtual, o cal 299 00:13:49,160 --> 00:13:51,870 é unha peza de software que a súa antecesores ía baixar off 300 00:13:51,870 --> 00:13:53,360 o sitio web do curso de balde. 301 00:13:53,360 --> 00:13:56,550 Eles poderían baixar unha peza libre de software chamada de hypervisor, 302 00:13:56,550 --> 00:14:00,590 algo chamado como VMware, ou VirtualBox, ou calquera número 303 00:14:00,590 --> 00:14:04,450 doutras ferramentas, e no seu Mac ou PC ou calquera ordenador que tivemos o ano pasado 304 00:14:04,450 --> 00:14:06,620 eo ano pasado, eles dobraría clic nun icono 305 00:14:06,620 --> 00:14:08,860 para realizar este software chamado hypervisor. 306 00:14:08,860 --> 00:14:12,220 E, a continuación, no interior do referido programa que abriría o aparello CS50. 307 00:14:12,220 --> 00:14:14,710 E o efecto que era un predecesor de vós 308 00:14:14,710 --> 00:14:17,780 foi rodando Mac OS ou O Windows, el ou ela, a continuación, 309 00:14:17,780 --> 00:14:22,910 posteriormente, tivo unha nova ventá no seu pantalla en execución ambiente de CS50. 310 00:14:22,910 --> 00:14:27,370 Así, unha máquina virtual permite que executa un sistema operativo dentro doutro, 311 00:14:27,370 --> 00:14:28,785 e iso é o que fixemos. 312 00:14:28,785 --> 00:14:31,410 Durante a maior parte do que claro usar un sistema operativo chamado 313 00:14:31,410 --> 00:14:34,070 Linux, concretamente Ubuntu Linux, e iso 314 00:14:34,070 --> 00:14:37,590 é un xeito moi agradable o ano pasado de asegurarse de que todo o curso 315 00:14:37,590 --> 00:14:38,840 só tiña o mesmo ambiente. 316 00:14:38,840 --> 00:14:41,339 E pode utilizar calquera tipo de ordenador que realmente quere. 317 00:14:41,339 --> 00:14:43,930 Entre as desvantaxes, pero foron foi como dous gigabytes 318 00:14:43,930 --> 00:14:45,480 Para descargar esta cousa. 319 00:14:45,480 --> 00:14:50,310 Non necesariamente traballar ben en super- persoas cuxos ordenadores que quizais única 320 00:14:50,310 --> 00:14:54,570 tiña un concerto ou máis de RAM, ou non moitas gigahertz de velocidade da CPU, 321 00:14:54,570 --> 00:14:56,750 e por iso este ano, para esta e outras razóns, 322 00:14:56,750 --> 00:14:59,140 fomos transición a este ambiente. 323 00:14:59,140 --> 00:15:03,730 O chamado CS50 IDE, que é baseado en software de código aberto, 324 00:15:03,730 --> 00:15:07,380 e unha plataforma soportada que unha empresa chamada Cloud9 325 00:15:07,380 --> 00:15:11,110 apoia en Europa, que permítenos ter, esencialmente, 326 00:15:11,110 --> 00:15:15,770 que mesmo ambiente como na exacta ano pasado, pero no así chamado nube. 327 00:15:15,770 --> 00:15:17,532 >> Entón, cal é a nube? 328 00:15:17,532 --> 00:15:20,480 Probablemente ligazón seu icono no seu Mac ou PC. 329 00:15:20,480 --> 00:15:22,210 ¿Que é a nube? 330 00:15:22,210 --> 00:15:22,709 Si? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Un pouco máis alto. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Si. 335 00:15:31,010 --> 00:15:33,770 É só unha morea de ordenadores noutro lugar que almacenan datos e execución 336 00:15:33,770 --> 00:15:34,880 software e semellantes. 337 00:15:34,880 --> 00:15:39,390 Entón, é realmente só para a palabra de xure de describir [? alugados?] 338 00:15:39,390 --> 00:15:40,930 ordenadores que viven na casa. 339 00:15:40,930 --> 00:15:42,810 Que, vostede mesmo, non necesariamente ten. 340 00:15:42,810 --> 00:15:45,256 Entón, cando os seus datos, ou o seu programas, están na nube, 341 00:15:45,256 --> 00:15:47,630 iso só quere dicir que é en alguén ordenadores doutras persoas noutros lugares, 342 00:15:47,630 --> 00:15:50,510 e non, moi probablemente, no seu portátil ou de escritorio físico. 343 00:15:50,510 --> 00:15:52,990 E iso é o que CS50 IDE é agora. 344 00:15:52,990 --> 00:15:55,670 >> A partir deste momento vai para un correcto URL que pode presenta-lo 345 00:15:55,670 --> 00:16:00,090 para, en conxunto de problemas 1, a finais deste semana, que, a continuación, despois do login, 346 00:16:00,090 --> 00:16:01,480 darlle ese ambiente. 347 00:16:01,480 --> 00:16:03,896 E moito scratch como tiña unha Algúns paneis de diferentes implicadas, 348 00:16:03,896 --> 00:16:06,030 o mesmo ocorre co IDE do CS50 temos exactamente aquel. 349 00:16:06,030 --> 00:16:09,480 Na parte superior esquerda aquí, está vai ver un navegador de ficheiros familiar. 350 00:16:09,480 --> 00:16:11,930 Entón, calquera dos arquivos que colocado neste ambiente 351 00:16:11,930 --> 00:16:13,346 está indo só para ser listado alí. 352 00:16:13,346 --> 00:16:14,350 Arquivos e carpetas. 353 00:16:14,350 --> 00:16:16,790 Na parte superior dereita aquí, vai ver un lugar 354 00:16:16,790 --> 00:16:18,420 onde pode realmente escribir o seu código. 355 00:16:18,420 --> 00:16:21,860 Inicialmente en C, ao final do prazo en PHP e JavaScript, 356 00:16:21,860 --> 00:16:24,739 e, se cadra, para a final proxectos, Ruby ou Python ou Java 357 00:16:24,739 --> 00:16:27,280 ou calquera número de linguas son soportado neste ambiente. 358 00:16:27,280 --> 00:16:30,130 Non é de todo amarre especialmente para CS50. 359 00:16:30,130 --> 00:16:33,390 >> E, a continuación, na parte inferior aquí, sobre todo para os máis cómodo, 360 00:16:33,390 --> 00:16:35,590 tes algo chamado unha fiestra de terminal. 361 00:16:35,590 --> 00:16:38,770 E esta fiestra de terminal permite que executa calquera comando que 362 00:16:38,770 --> 00:16:40,860 queremos neste ambiente de nube. 363 00:16:40,860 --> 00:16:42,860 Permite que instala ningún programa adicional 364 00:16:42,860 --> 00:16:46,810 que quere porque chamado raíz ou de administrador privilexios. 365 00:16:46,810 --> 00:16:49,930 Polo tanto, noutras palabras, aínda que esta en definitiva é aloxado na nube, 366 00:16:49,930 --> 00:16:52,400 e aínda que temos simplificado que, en certa medida 367 00:16:52,400 --> 00:16:57,110 por defecto, literalmente, introducindo, grazas a Dan Armendáriz, e Dino, 368 00:16:57,110 --> 00:17:01,070 e Dan Bradley no equipo do CS50 sobre o pasado moitos meses, un menos cómodo 369 00:17:01,070 --> 00:17:05,140 Polo que esconde unha morea de distraccións inicialmente confuso. 370 00:17:05,140 --> 00:17:10,119 Todo existe para representan un sistema informático típico 371 00:17:10,119 --> 00:17:12,319 que pode usar no mundo real. 372 00:17:12,319 --> 00:17:15,640 >> Entón, o que todo isto significa, e o que podemos realmente facer con el? 373 00:17:15,640 --> 00:17:19,124 Imos realmente dar un ollo a un programa. 374 00:17:19,124 --> 00:17:21,290 Entón, eu estou indo para abrir o ambiente real aquí, 375 00:17:21,290 --> 00:17:23,894 que é só a nosa Chrome navegador, o que podería ser o Firefox, 376 00:17:23,894 --> 00:17:26,640 podería ser o Internet Explorer, ou algún outro navegador tamén. 377 00:17:26,640 --> 00:17:28,400 É cheo de ruta aquí para o momento. 378 00:17:28,400 --> 00:17:31,580 E quero realmente provoca ademais o que este programa era. 379 00:17:31,580 --> 00:17:36,170 Entón, imos dar un ollo, por ampliar ata arriba, polo que eu fixen, e como eu cheguei aquí. 380 00:17:36,170 --> 00:17:38,315 Entón aquí está quen exacta mesmas liñas de código. 381 00:17:38,315 --> 00:17:40,440 Polo tanto, esta é a declaración, como mencionar anteriormente. 382 00:17:40,440 --> 00:17:42,580 A función que di Ola. 383 00:17:42,580 --> 00:17:45,870 As chaves, sobre liña de catro e seis liña, 384 00:17:45,870 --> 00:17:49,290 presuntamente tipo de sobre esta liña para asocia-lo 385 00:17:49,290 --> 00:17:50,890 coa esencia do meu programa. 386 00:17:50,890 --> 00:17:54,890 Entón, en realidade, esta palabra chave principal, que está alí enriba na liña tres, 387 00:17:54,890 --> 00:17:59,450 pode pensar que como o equivalente de que, cando premendo bandeira verde, 388 00:17:59,450 --> 00:18:01,080 bloquear no scratch. 389 00:18:01,080 --> 00:18:05,280 Entón, iso é todo o que temos aquí, é cando bandeira verde premendo, impresión, ou dicir, 390 00:18:05,280 --> 00:18:06,700 Ola mundo. 391 00:18:06,700 --> 00:18:11,210 >> Pero imos dar un palpite, agora, o que esta primeira liña, máis escuro, é. 392 00:18:11,210 --> 00:18:15,100 Afiado inclúen, aberto angular soporte, E / S estándar dot h, 393 00:18:15,100 --> 00:18:17,320 pechar soporte angular. 394 00:18:17,320 --> 00:18:19,850 Que quizais facendo, especialmente se xa programou 395 00:18:19,850 --> 00:18:21,390 antes de calquera outra lingua. 396 00:18:21,390 --> 00:18:21,890 Si? 397 00:18:21,890 --> 00:18:22,765 >> Audiencia: [inaudível] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. Malan: Yeah. 400 00:18:25,970 --> 00:18:26,470 Exactamente. 401 00:18:26,470 --> 00:18:29,455 Entón, iso é dándolle acceso a un biblioteca, por así dicir, de funcións. 402 00:18:29,455 --> 00:18:31,830 E unha biblioteca de funcións é funcións que outra persoa 403 00:18:31,830 --> 00:18:34,406 escribiu, quere recentemente ou hai moito tempo, de modo que 404 00:18:34,406 --> 00:18:35,780 Non ten que reinventar a roda. 405 00:18:35,780 --> 00:18:39,020 Por exemplo, non ten que saber, en 2015, 406 00:18:39,020 --> 00:18:42,280 como escribir código que puts un personaxe en pantalla. 407 00:18:42,280 --> 00:18:44,820 Outra persoa que ten figurado coa función printf 408 00:18:44,820 --> 00:18:47,280 para que eu poida clasificar de resumo lonxe do que, ou capa 409 00:18:47,280 --> 00:18:49,350 na parte superior da súa código, e agora só tomar 410 00:18:49,350 --> 00:18:52,760 por certo que calquera programa que eu escribir Pode imprimir algo na pantalla. 411 00:18:52,760 --> 00:18:58,150 Polo tanto, esta primeira liña alí na primeira etapa inclúe o chamado ficheiro de cabeceira 412 00:18:58,150 --> 00:18:59,980 á biblioteca estándar. 413 00:18:59,980 --> 00:19:02,630 Entón mira, a lingua en que estamos a traballar agora 414 00:19:02,630 --> 00:19:05,010 tiña unha biblioteca estándar con moitas funcións. 415 00:19:05,010 --> 00:19:07,240 Printf é un deles, e que a primeira liña de código 416 00:19:07,240 --> 00:19:10,040 significa me dar acceso a estas funcións, para que eu 417 00:19:10,040 --> 00:19:12,300 Non ten que reinventar a roda. 418 00:19:12,300 --> 00:19:15,940 >> Agora imos para a parte inferior da xanela e facer o que eu fixen antes. 419 00:19:15,940 --> 00:19:18,520 Un momento atrás, cando eu era zunindo través do código, 420 00:19:18,520 --> 00:19:24,540 escribindo-o para fora por primeira vez, I moi rapidamente ingresaran, faga Ola. 421 00:19:24,540 --> 00:19:28,250 Que foi o que diría? 422 00:19:28,250 --> 00:19:29,150 O que eu estaba facendo? 423 00:19:29,150 --> 00:19:29,649 Si? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Non se preocupe. 426 00:19:32,310 --> 00:19:32,970 É Aceptar. 427 00:19:32,970 --> 00:19:33,492 Si. 428 00:19:33,492 --> 00:19:34,450 Audiencia: compilalo. 429 00:19:34,450 --> 00:19:34,700 DAVID J. Malan: Yeah. 430 00:19:34,700 --> 00:19:35,770 Foi só compilalo. 431 00:19:35,770 --> 00:19:36,270 Non? 432 00:19:36,270 --> 00:19:39,280 Mesmo se iso é completamente descoñecido para ti, é moi Inglés como. 433 00:19:39,280 --> 00:19:41,155 Certamente non é ceros e uns, entón eu aínda 434 00:19:41,155 --> 00:19:44,220 Debe executa-lo a través do que os chamados programa, un compilador, que vai 435 00:19:44,220 --> 00:19:46,060 para levalo como entrada e producir saída. 436 00:19:46,060 --> 00:19:48,270 E, polo menos, de momento, en Neste ambiente Linux, 437 00:19:48,270 --> 00:19:51,030 pero este non é unha condición previa, este é só onde nós imos comezar, 438 00:19:51,030 --> 00:19:53,960 normalmente interactuar con sistemas de ordenador como este 439 00:19:53,960 --> 00:19:55,770 por unha liña de comandos chamada. 440 00:19:55,770 --> 00:19:57,790 Así, cun chiscar listo e teclado, 441 00:19:57,790 --> 00:20:01,630 e non tanto o rato, e non tanto fiestras e iconas e menús, 442 00:20:01,630 --> 00:20:02,980 en vez todo é textual. 443 00:20:02,980 --> 00:20:06,180 E aínda que este se sente, a primeira vista, se cadra, como un paso atrás, 444 00:20:06,180 --> 00:20:08,437 é realmente un moito máis xeito poderosa e expresiva 445 00:20:08,437 --> 00:20:10,270 do control dun ordenador especialmente como, 446 00:20:10,270 --> 00:20:12,950 mesmo, facerse máis cómodo de menos. 447 00:20:12,950 --> 00:20:16,790 Vai permitir que faga unha chea máis cousas que Microsoft 448 00:20:16,790 --> 00:20:20,390 ou Apple permite que fai con o seu sistema operativo gráfico. 449 00:20:20,390 --> 00:20:23,270 >> Entón, cando prema Intro, agora, nada acontece neste momento 450 00:20:23,270 --> 00:20:25,960 porque ao parecer o Ola programa está actualizado. 451 00:20:25,960 --> 00:20:28,250 E cal foi o comando Corre despois diso? 452 00:20:28,250 --> 00:20:32,370 Dot cortar Ola, e Ola mundo. 453 00:20:32,370 --> 00:20:34,350 Agora imos dar un paso volver só un momento. 454 00:20:34,350 --> 00:20:39,510 Acontece que facer Ola é só un forma simplificada de compilar un programa. 455 00:20:39,510 --> 00:20:41,670 Nós só introducir unha peza de argot, 456 00:20:41,670 --> 00:20:43,470 pero, a continuación, se afastar a partir del, xa que non é 457 00:20:43,470 --> 00:20:46,640 todo o que interesante para fins de hoxe. 458 00:20:46,640 --> 00:20:51,000 O compilador imos comezar a usar Clang chámase, para a linguaxe C. 459 00:20:51,000 --> 00:20:54,280 E este é un programa que se executa só como fixemos na liña de comandos alí. 460 00:20:54,280 --> 00:20:56,580 E así se eu queira compilar un programa que eu 461 00:20:56,580 --> 00:21:00,790 escribir nun ficheiro chamado Ola dot c, eu literalmente escriba clang Ola c 462 00:21:00,790 --> 00:21:02,100 inserir. 463 00:21:02,100 --> 00:21:04,880 >> O curioso é que, por razóns históricas, 464 00:21:04,880 --> 00:21:07,750 se eu non especificar o nome do programa 465 00:21:07,750 --> 00:21:11,690 que quero para a saída, se non o fai especificar un nome de ficheiro para estes ceros 466 00:21:11,690 --> 00:21:14,990 e uns, moi estraño Convención foi adoptada anos 467 00:21:14,990 --> 00:21:17,390 onde sentiu unha especie de boa resposta no momento, 468 00:21:17,390 --> 00:21:21,650 ben, imos só arbitrariamente chamar a primeiro programa que compilar un punto fóra. 469 00:21:21,650 --> 00:21:22,900 Un ven en primeiro lugar no alfabeto. 470 00:21:22,900 --> 00:21:23,920 Fóra, é a saída. 471 00:21:23,920 --> 00:21:26,210 Entón, imos chamar o programa por defecto un punto fóra. 472 00:21:26,210 --> 00:21:29,550 E iso é bo, porque se eu queira executar o programa neste texto base 473 00:21:29,550 --> 00:21:33,590 ambiente, só escribir dot cortar un punto fóra entrar. 474 00:21:33,590 --> 00:21:35,250 E sería executado exactamente como antes. 475 00:21:35,250 --> 00:21:36,880 Entón imos ver o que realmente rápido. 476 00:21:36,880 --> 00:21:40,370 >> Entón, se eu volver ao meu código fonte no IDE CS50, 477 00:21:40,370 --> 00:21:47,860 e eu, en vez facelo, clang Ola berce c entrar, aviso nada parece ocorrer, 478 00:21:47,860 --> 00:21:49,790 pero case sempre Neste ambiente Linux, 479 00:21:49,790 --> 00:21:53,310 cando nada de malo parece acontecer, que significa algo de bo realmente aconteceu. 480 00:21:53,310 --> 00:21:56,270 Se non ver un erro mensaxe, todo pode ser ben. 481 00:21:56,270 --> 00:22:01,930 E, de feito, se fago agora dot cortar un punto a entrar, executar o meu mesmo programa. 482 00:22:01,930 --> 00:22:04,610 Eu aínda teño o programa Ola de antes, porque, en realidade, é 483 00:22:04,610 --> 00:22:07,430 vai ser moito mellor só escriba o momento, en vez de lembrar 484 00:22:07,430 --> 00:22:10,240 estes encantamentos de comandos, pero imos ver como nós 485 00:22:10,240 --> 00:22:12,890 pode mellorar este, con todo. 486 00:22:12,890 --> 00:22:15,340 >> Entón, que é o mando para compilar o código. 487 00:22:15,340 --> 00:22:19,100 Este é o comando a executar o código compilado posteriormente. 488 00:22:19,100 --> 00:22:20,546 Como podo especificar un nome de arquivo? 489 00:22:20,546 --> 00:22:22,670 Ben, imos só introducir máis unha peza de xerga. 490 00:22:22,670 --> 00:22:24,461 Cando está neste ambiente baseado en texto, 491 00:22:24,461 --> 00:22:27,400 vai querer especificar cousas chamadas argumentos de liña de comandos. 492 00:22:27,400 --> 00:22:31,380 Que non é máis que un xeito elegante de dicir, É dicir, no poder 493 00:22:31,380 --> 00:22:33,860 axustar o comportamento de calquera programa que está executando. 494 00:22:33,860 --> 00:22:37,320 Entón, especialmente o programa que eu son en execución, escribindo o nome do clang, 495 00:22:37,320 --> 00:22:38,504 chámase o programa Clang. 496 00:22:38,504 --> 00:22:40,920 Polo tanto, esta é a vella escola ou equivalente a un dobre clic 497 00:22:40,920 --> 00:22:42,860 en Microsoft Word ou icona dalgún programa. 498 00:22:42,860 --> 00:22:46,360 Estou en vez só escribindo o seu nome, pero nesta versión do mando, 499 00:22:46,360 --> 00:22:51,334 A continuación, teño o trazo espazo Ola espazo Ola punto c. 500 00:22:51,334 --> 00:22:53,500 Así, mesmo se nunca desempeñado neste mundo antes, 501 00:22:53,500 --> 00:22:58,160 só dar un palpite que O trazo o Ola facer? 502 00:22:58,160 --> 00:23:00,620 Ou o que é dicir clang que facer? 503 00:23:00,620 --> 00:23:01,386 Si. 504 00:23:01,386 --> 00:23:02,455 >> Audiencia: [inaudível] 505 00:23:02,455 --> 00:23:03,330 DAVID J. Malan: Yeah. 506 00:23:03,330 --> 00:23:08,614 El só define a saída do ficheiro que se Ola, en vez do máis tolo un punto fóra. 507 00:23:08,614 --> 00:23:09,780 E, de feito, imos tratar isto. 508 00:23:09,780 --> 00:23:14,250 Entón, se eu agora facer, en primeiro lugar imos facelo, r m Ola. 509 00:23:14,250 --> 00:23:15,590 Iso é eliminar. 510 00:23:15,590 --> 00:23:18,450 E vai dicir elimina Ola ficheiro regular, que 511 00:23:18,450 --> 00:23:22,210 é innecesariamente arcano, pero só medios que quere eliminar o ficheiro, 512 00:23:22,210 --> 00:23:23,230 e eu escriba y para si. 513 00:23:23,230 --> 00:23:27,340 E teña en conta, se está mirando para arriba á esquerda, o fixo desaparecer de alí de arriba. 514 00:23:27,340 --> 00:23:32,180 Deixe-me agora facer clang trazo o, e Eu estou indo a ir adiante e facer Ola, 515 00:23:32,180 --> 00:23:34,890 en todo tapóns, Ola punto c. 516 00:23:34,890 --> 00:23:37,775 Agora, se eu fai barra dot Ola, o que esperar? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Quizais sexa a maiúsculas e minúsculas. 519 00:23:42,430 --> 00:23:43,070 Quizais non sexa. 520 00:23:43,070 --> 00:23:44,030 Imos ver. 521 00:23:44,030 --> 00:23:45,230 Non hai tal Lima ou directorio. 522 00:23:45,230 --> 00:23:47,438 E podemos tipo de facer trampa só de ollar para arriba á esquerda. 523 00:23:47,438 --> 00:23:49,630 O que eu fixen, obviamente, gardar o programa como? 524 00:23:49,630 --> 00:23:51,070 Todas as tapas Ola. 525 00:23:51,070 --> 00:23:53,020 Entón, en realidade, o que está pasando para facer a diferenza. 526 00:23:53,020 --> 00:23:54,540 Entón, agora Ola mundo está de volta. 527 00:23:54,540 --> 00:23:56,969 Agora, iso é todo moi ben e bo, e todos moi de entorpecimento mental, 528 00:23:56,969 --> 00:23:59,760 a sorte de que atol en estes detalles, pero comprende-los 529 00:23:59,760 --> 00:24:00,500 é bo. 530 00:24:00,500 --> 00:24:02,675 >> Escribindo estes cada vez máis encantamentos longos 531 00:24:02,675 --> 00:24:05,980 non vai ser especialmente diversión, así que a xente no mundo 532 00:24:05,980 --> 00:24:08,260 inventou navegador, hai algúns anos, chamado 533 00:24:08,260 --> 00:24:12,190 facer, que pura e simplemente permite que escriba make, 534 00:24:12,190 --> 00:24:14,530 o nome do programa quere facer, e facer 535 00:24:14,530 --> 00:24:18,580 é intelixente na medida en que vai mirar en o cartafol actual, tamén coñecido como directorio, 536 00:24:18,580 --> 00:24:21,440 e se ten un arquivo Ola chamado punto c, 537 00:24:21,440 --> 00:24:25,800 que é o ficheiro ha compilar para que en un programa chamado Ola. 538 00:24:25,800 --> 00:24:29,950 Polo tanto, é un xeito moito máis sinxelo de facendo as ordes máis enigmáticas 539 00:24:29,950 --> 00:24:30,800 que fixemos anteriormente. 540 00:24:30,800 --> 00:24:34,080 E temos preconfigurado CS50 IDE saber 541 00:24:34,080 --> 00:24:38,560 que debe facer o guión e un número de outras bandeiras, ou argumentos de liña de comandos, 542 00:24:38,560 --> 00:24:40,670 que veremos en breve. 543 00:24:40,670 --> 00:24:43,700 >> Pero imos agora realmente facer algo máis interesante. 544 00:24:43,700 --> 00:24:46,950 Só escribindo Ola mundo o tempo non é tan atractivo. 545 00:24:46,950 --> 00:24:52,280 Entón deixe-me ir adiante e cambio este programa e dicir: Ola David. 546 00:24:52,280 --> 00:24:54,120 Agora eu estou indo a ir para abaixo aquí. 547 00:24:54,120 --> 00:24:57,360 Eu estou indo a ir adiante e fan Ola. 548 00:24:57,360 --> 00:25:00,652 E unha vez máis, agora está a ver facer é amosar-lle o máis longo 549 00:25:00,652 --> 00:25:03,360 secuencia de comandos que se facendo, porque temos preconfigurado 550 00:25:03,360 --> 00:25:05,200 dese xeito, pero nós Non se preocupe polo momento 551 00:25:05,200 --> 00:25:10,735 o que está facendo distinto do que é compilando dot cortar Ola, Ola mundo. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 O que hai de malo? 554 00:25:15,510 --> 00:25:16,177 Si. 555 00:25:16,177 --> 00:25:17,370 >> Audiencia: [inaudível] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. Malan: Si. 557 00:25:18,203 --> 00:25:19,600 Entón, erro noobie. 558 00:25:19,600 --> 00:25:22,394 Eu observo que é super sutil, pero o asterisco aquí, na guía, 559 00:25:22,394 --> 00:25:25,060 Significa só que non salvou-lo, e navegadores e programas 560 00:25:25,060 --> 00:25:25,930 facelo ás veces. 561 00:25:25,930 --> 00:25:27,939 Así, o control s ou comando s debe garda-lo. 562 00:25:27,939 --> 00:25:29,730 Agora, deixe-me ir adiante e re-executar o programa. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Recompilados. 565 00:25:34,260 --> 00:25:36,050 Correcto, polo que é un proceso de varias etapas. 566 00:25:36,050 --> 00:25:39,400 Ningún dos cales é particularmente complexo, pero en calquera momento que cambiar o arquivo, 567 00:25:39,400 --> 00:25:43,450 necesitamos cambiar a resultante ceros e uns, e Slash dot Ola. 568 00:25:43,450 --> 00:25:43,950 Wow. 569 00:25:43,950 --> 00:25:46,450 Entón iso é moi underwhelming que acabamos impreso iso. 570 00:25:46,450 --> 00:25:48,360 Imos facer as cousas un pouco máis dinámico, agora. 571 00:25:48,360 --> 00:25:52,280 >> Ben se ve, que lle gusta Cero, C soporta variables. 572 00:25:52,280 --> 00:25:54,790 E resulta que se quere ter unha variable que almacena, 573 00:25:54,790 --> 00:25:57,300 non un número como nós tipicamente fixo o Scratch, 574 00:25:57,300 --> 00:26:01,300 senón como unha palabra ou unha frase ou un nome, vostede 575 00:26:01,300 --> 00:26:04,837 pode especificar unha variable para ser do tipo cadea. 576 00:26:04,837 --> 00:26:06,670 Entón, imos ver máis de estes en só un momento, 577 00:26:06,670 --> 00:26:09,090 pero parece que C, e unha morea de linguas como el, 578 00:26:09,090 --> 00:26:11,240 teñen tipos moi específicos de variables. 579 00:26:11,240 --> 00:26:13,810 Non é só gusta de álxebra, onde recibe un x, dunha y, z e 580 00:26:13,810 --> 00:26:16,940 e eses son só sempre números, nunha linguaxe de programación 581 00:26:16,940 --> 00:26:20,030 pode almacenar números, pode almacenar caracteres individuais, 582 00:26:20,030 --> 00:26:24,619 pode almacenar palabras enteiras, podería almacenar imaxes enteiras, arquivos de son integrais, 583 00:26:24,619 --> 00:26:25,160 e semellantes. 584 00:26:25,160 --> 00:26:28,362 Entón, necesitamos especificar o que o tipo de variable é noso. 585 00:26:28,362 --> 00:26:31,570 E, por convención, eu vou chamar ao meu s variables só porque é sucinto, 586 00:26:31,570 --> 00:26:33,510 e s significa cadea. 587 00:26:33,510 --> 00:26:36,400 >> E entón eu vou para almacenar neste variable, 588 00:26:36,400 --> 00:26:39,570 así como co Scratch cando eu uso o bloque set, 589 00:26:39,570 --> 00:26:41,950 Vou usar o operador de asignación en C, 590 00:26:41,950 --> 00:26:45,290 que ben o suficiente é o xeito asinar, pero o signo igual fai iso. 591 00:26:45,290 --> 00:26:53,220 Se move algo de dereita á esquerda da expresión. 592 00:26:53,220 --> 00:26:57,170 Entón, o que eu fixen, para ser claro en liña de cinco, é que declarou unha variable. 593 00:26:57,170 --> 00:27:01,284 Eu dixen ao ordenador, dáme memoria para unha variable, chame-s, 594 00:27:01,284 --> 00:27:03,950 e saber de antemán que vou estar poñendo unha corda nel. 595 00:27:03,950 --> 00:27:05,950 E unha cadea é só un secuencia de caracteres. 596 00:27:05,950 --> 00:27:09,190 É unha palabra ou unha frase, ou parágrafo pero é unha secuencia de caracteres. 597 00:27:09,190 --> 00:27:10,610 Non é números. 598 00:27:10,610 --> 00:27:13,800 O secuencia de caracteres que eu vou ser poñendo en que variable? 599 00:27:13,800 --> 00:27:16,185 Ben, ao parecer, cita unquote, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Agora, teña en conta o nivel que está emerxendo. 601 00:27:17,810 --> 00:27:19,260 Hai unha expresión man esquerda. 602 00:27:19,260 --> 00:27:21,810 Hai unha expresión man dereita, separados polo signo igual. 603 00:27:21,810 --> 00:27:24,390 E só dar un palpite, se descoñecido, con todo, 604 00:27:24,390 --> 00:27:27,430 co que o punto e coma se facendo. 605 00:27:27,430 --> 00:27:28,865 Que presuntamente facendo por nós? 606 00:27:28,865 --> 00:27:29,365 Si? 607 00:27:29,365 --> 00:27:29,840 >> Audiencia: [inaudível] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. Malan: Yeah. 609 00:27:29,980 --> 00:27:31,170 É só que encerra o line. 610 00:27:31,170 --> 00:27:31,669 Non? 611 00:27:31,669 --> 00:27:34,260 Os ordenadores queren estar sen reviravoltas dixo literalmente o que facer. 612 00:27:34,260 --> 00:27:36,343 Tal como a manteiga de cacahuete e exemplo bocadillos de marmelada, 613 00:27:36,343 --> 00:27:39,360 se non especificar o que pretende, 614 00:27:39,360 --> 00:27:42,190 el se pode deixar ao xuízo ou erro. 615 00:27:42,190 --> 00:27:44,890 O punto e coma significa, é iso para este comando. 616 00:27:44,890 --> 00:27:48,310 Ten que ser super precisa, e é unha cousa moi fácil de saír fóra. 617 00:27:48,310 --> 00:27:52,240 Entón agora este programa non parece estar comportándose de xeito diferente ata que eu 618 00:27:52,240 --> 00:27:53,500 facelo máis dinámico. 619 00:27:53,500 --> 00:27:57,107 Entón en vez de disco podería miña propia citar, déixeme poñer un valor do espazo reservado. 620 00:27:57,107 --> 00:28:00,190 E parece que, e eu sei diso de ler a documentación, 621 00:28:00,190 --> 00:28:04,080 e utilizada para a función anos, que printf foi deseñado para ser dinámico. 622 00:28:04,080 --> 00:28:07,510 Non ten que saber con antelación o que palabras quere poñer nel. 623 00:28:07,510 --> 00:28:11,290 Pola contra pode ter un espazo reservado, por cento s, que 624 00:28:11,290 --> 00:28:15,500 vai contar a ordenador, poñer unha corda aquí. 625 00:28:15,500 --> 00:28:17,740 >> Que secuencia queremos poñer aí? 626 00:28:17,740 --> 00:28:22,430 Will que entre estes parénteses, que lembrar, demarcar 627 00:28:22,430 --> 00:28:28,020 a entrada para unha función, se ten coma lista de cousas separadas aquí, 628 00:28:28,020 --> 00:28:31,790 realmente pasar en múltiples entradas a unha función. 629 00:28:31,790 --> 00:28:33,901 Entón, só tes que un pouco de risco bloques, é posible que non 630 00:28:33,901 --> 00:28:36,150 xogar con eles por proxectos aínda ou en todos, 631 00:28:36,150 --> 00:28:38,250 algúns bloques de raspadinhas ten dúas entradas. 632 00:28:38,250 --> 00:28:41,220 Dúas caixas brancas que podes escribir números ou palabras en. 633 00:28:41,220 --> 00:28:45,210 Entón, para non ter funcións como C printf que pode levar dúas entradas. 634 00:28:45,210 --> 00:28:48,050 E, de novo, este coma é separalos. 635 00:28:48,050 --> 00:28:51,070 Así, en inglés, de novo, aínda que nunca programou antes, 636 00:28:51,070 --> 00:28:55,320 polo que printf lóxica é unha función, leva dúas entradas, unha das cales 637 00:28:55,320 --> 00:28:58,810 é un espazo reservado, o que espera printf vai facer esa entrada? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Vai dicir Hola Hannah, eu espero. 640 00:29:03,220 --> 00:29:05,274 Entón, para facelo, necesitamos salvalo. 641 00:29:05,274 --> 00:29:06,190 Eu estou indo a afastar. 642 00:29:06,190 --> 00:29:10,701 Vou volver para abaixo aquí e dicir, facer Ola entrar. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Algo vai mal, e, de feito, este é moi grande. 645 00:29:14,830 --> 00:29:18,400 Teño seis liñas de código e como 12 liñas de erros. 646 00:29:18,400 --> 00:29:22,120 Entón, estamos ansiosos para iso. 647 00:29:22,120 --> 00:29:24,260 Entón, o que está pasando aquí? 648 00:29:24,260 --> 00:29:27,370 Polo tanto, a mellor regra de ouro aquí, especialmente cando se está empezando, 649 00:29:27,370 --> 00:29:29,370 non se distraer con o material ao final. 650 00:29:29,370 --> 00:29:31,220 En realidade, eu moi deliberadamente só rolou para arriba 651 00:29:31,220 --> 00:29:33,930 porque moitas veces, un ordenador é todo o que non brillante dun dispositivo. 652 00:29:33,930 --> 00:29:35,054 Vai ficar confuso. 653 00:29:35,054 --> 00:29:37,220 Se ve unha cousa que el non entende, 654 00:29:37,220 --> 00:29:40,030 pode confundir outros liñas de código como incorrectas, 655 00:29:40,030 --> 00:29:41,649 aínda que eles son perfectamente ben. 656 00:29:41,649 --> 00:29:43,940 Así, sempre quere traballar arriba abaixo a través dos erros. 657 00:29:43,940 --> 00:29:47,850 E o certo é que este é Super arcano no momento. 658 00:29:47,850 --> 00:29:50,830 >> Erro, a utilización de non declarado secuencia de identificador. 659 00:29:50,830 --> 00:29:52,130 Será que quero dicir no estándar? 660 00:29:52,130 --> 00:29:53,720 Non, eu quería dicir cadea. 661 00:29:53,720 --> 00:29:55,830 E está a apuntar cara, quizais sexa un erro de dixitación. 662 00:29:55,830 --> 00:30:00,570 Máis ou menos como, corrector ortográfico nun xeito moi geeky, pero a razón aquí, 663 00:30:00,570 --> 00:30:02,840 e vostede saberá que este só a práctica, é 664 00:30:02,840 --> 00:30:06,390 que parece que cadea non existe en C. De feito, C 665 00:30:06,390 --> 00:30:08,820 é un idioma en particular de idade, e é moi baixo nivel, 666 00:30:08,820 --> 00:30:11,361 e non fai unha morea de recursos que pode ter crecido 667 00:30:11,361 --> 00:30:14,620 con se ten, de feito, programado en Java, como algúns de vós teñen, 668 00:30:14,620 --> 00:30:16,980 pero pode ensino-lo cousas novas. 669 00:30:16,980 --> 00:30:20,900 E, de feito, fixemos iso CS50, aínda que ata o final do semestre, 670 00:30:20,900 --> 00:30:23,512 todas estas rodinhas foi retirado, 671 00:30:23,512 --> 00:30:25,220 o que facemos nestes primeiro par de semanas 672 00:30:25,220 --> 00:30:29,830 inicialmente é tamén temos incluír CS50 dot h. 673 00:30:29,830 --> 00:30:31,230 Que é un ficheiro de cabeceira. 674 00:30:31,230 --> 00:30:32,440 Máis sobre iso no futuro. 675 00:30:32,440 --> 00:30:36,430 >> É un arquivo que contén funcións que escribimos para ti. 676 00:30:36,430 --> 00:30:39,180 E entre estas funcións é funcións para aproveitar entrada 677 00:30:39,180 --> 00:30:43,520 do usuario, como cordas, e números, e números reais, e moito máis. 678 00:30:43,520 --> 00:30:45,550 Pero tamén ten algúns atallos. 679 00:30:45,550 --> 00:30:48,200 El define un valor booleano como un tipo de datos. 680 00:30:48,200 --> 00:30:50,340 C non ten verdadeiro ou falso. 681 00:30:50,340 --> 00:30:53,880 Pero podemos darlle a noción de verdadeiro ou falso a través desta biblioteca. 682 00:30:53,880 --> 00:30:57,670 E tampouco ten unha secuencia construído en ata incluír esta liña. 683 00:30:57,670 --> 00:31:01,090 Entón esta liña de código di o compilador, hey, Clang, ollar 684 00:31:01,090 --> 00:31:03,570 neste ficheiro para un todo chea de código que CS50 685 00:31:03,570 --> 00:31:06,330 escribiu para que calquera persoa que use este ficheiro 686 00:31:06,330 --> 00:31:09,330 pode tomar para concedida a recursos eles engadiron. 687 00:31:09,330 --> 00:31:11,220 >> Entón, agora deixe-me ir adiante e limpar a pantalla, 688 00:31:11,220 --> 00:31:14,178 e curioso Só digo control l cada vez para limpar a pantalla, 689 00:31:14,178 --> 00:31:15,500 ou podes escribir clara. 690 00:31:15,500 --> 00:31:19,220 Eu só estou indo a ir adiante agora e Tipo de facer Ola, e está todo ben. 691 00:31:19,220 --> 00:31:22,550 Aínda unha saída arcano, pero non é unha mensaxe incorrecta. 692 00:31:22,550 --> 00:31:28,300 Agora ben, se fago dot cortar Ola, e como un de lado, corte de punto é descoñecido para a maioría. 693 00:31:28,300 --> 00:31:30,430 Significa só que, medio punto o directorio actual. 694 00:31:30,430 --> 00:31:33,120 Entón, se xa usou DOS ou Linux, ou Unix 695 00:31:33,120 --> 00:31:35,410 podería ter feito algo como cd dot dot, onde 696 00:31:35,410 --> 00:31:39,220 dot dot significa ir cara atrás en tempo, ou ir para atrás, ou máis arriba 697 00:31:39,220 --> 00:31:40,370 no seu directorio. 698 00:31:40,370 --> 00:31:43,090 Dot significa só ollar o directorio actual. 699 00:31:43,090 --> 00:31:45,670 Quero Ola, o que está ben aquí. 700 00:31:45,670 --> 00:31:47,750 E, de feito, agora di Ola Hannah. 701 00:31:47,750 --> 00:31:51,120 E se eu cambiar de novo a María, recompilar 702 00:31:51,120 --> 00:31:55,650 faría Ola, Slash dot Ola, o programa continúa a cambiar. 703 00:31:55,650 --> 00:31:58,060 >> Pero iso aínda é unha programa moi estúpido. 704 00:31:58,060 --> 00:32:00,972 Se eu queira enviar este programa, ou dalo a un amigo, 705 00:32:00,972 --> 00:32:03,430 ou dala a María ou Hannah para que o asunto, iso é bo. 706 00:32:03,430 --> 00:32:07,300 Podo personalizar-lo para ambos, pero non vai ser dinámico. 707 00:32:07,300 --> 00:32:10,870 Non poden cambia-lo despois que está feita dentro dos ceros e uns. 708 00:32:10,870 --> 00:32:12,350 Entón, o que fixemos algo máis intelixente? 709 00:32:12,350 --> 00:32:17,100 E se, no canto de hard-codificación no programa o nome da persoa, 710 00:32:17,100 --> 00:32:20,890 E se nós só obter a secuencia de caracteres baixo demanda? 711 00:32:20,890 --> 00:32:22,430 >> Polo tanto, noutras palabras, déixeme facer. 712 00:32:22,430 --> 00:32:24,030 Eu estou indo a recompilar este programa. 713 00:32:24,030 --> 00:32:25,710 E déixeme facer zoom no fondo agora. 714 00:32:25,710 --> 00:32:29,920 Fai Ola barra dot Ola. 715 00:32:29,920 --> 00:32:31,710 Agora nada está a suceder. 716 00:32:31,710 --> 00:32:35,860 Podemos obter un voluntario rápida para facer algo acontecer? 717 00:32:35,860 --> 00:32:36,360 Imos cara arriba. 718 00:32:36,360 --> 00:32:37,020 Cal é o seu nome? 719 00:32:37,020 --> 00:32:37,445 >> Pancho: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. Malan: Pacho? 721 00:32:38,361 --> 00:32:39,609 Imos cara arriba. 722 00:32:39,609 --> 00:32:42,150 Unha vez que se levanta aquí, este é vai ser moi decepcionante, 723 00:32:42,150 --> 00:32:44,060 pero é máis interesante do que eu escribir o mesmo. 724 00:32:44,060 --> 00:32:49,007 Se quere ir adiante e introduza o seu nome, eu fixen este programa só para ti. 725 00:32:49,007 --> 00:32:49,840 Escriba o seu nome. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Intro. 728 00:32:53,900 --> 00:32:54,489 Marabilloso. 729 00:32:54,489 --> 00:32:55,780 Todo ben, moitas grazas. 730 00:32:55,780 --> 00:32:56,708 >> Pancho: Thank you very much. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. Malan: Aceptar. 732 00:32:57,636 --> 00:32:59,028 >> [Aplausos] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Iso foi moi amable. 735 00:33:01,840 --> 00:33:03,145 Aquí vai. 736 00:33:03,145 --> 00:33:03,770 O que fixemos? 737 00:33:03,770 --> 00:33:05,930 Polo tanto, por fin, polo menos, fixo este programa dinámico. 738 00:33:05,930 --> 00:33:08,400 Agora aínda é, certamente, por underwhelming deseño, 739 00:33:08,400 --> 00:33:11,480 pero finalmente temos a capacidade agora a escribir código de antelación, moi 740 00:33:11,480 --> 00:33:13,770 como os autores do printf, e, a continuación, dinamicamente 741 00:33:13,770 --> 00:33:17,550 adaptar con base na entrada somos entregados, quere polo programador, 742 00:33:17,550 --> 00:33:20,610 ou polo ser humano que é, en realidade, interactuar co programa. 743 00:33:20,610 --> 00:33:22,990 Entón, imos tratar agora, en realidade, para facer algunhas outras construcións 744 00:33:22,990 --> 00:33:26,625 para ver se nós non podemos facer os programas Se máis sofisticada. 745 00:33:26,625 --> 00:33:29,250 Entón, imos adiante e no canto de escribindo isto a partir de cero, 746 00:33:29,250 --> 00:33:31,540 Eu estou indo a ir hoxe código fonte, e todo isto 747 00:33:31,540 --> 00:33:34,290 está dispoñible no curso de web, e pode arrastrar e soltalo 748 00:33:34,290 --> 00:33:36,590 no seu propio ambiente venres, xa vir problema 749 00:33:36,590 --> 00:33:38,506 1 conxunto dálle a instrucións, ou pode 750 00:33:38,506 --> 00:33:41,200 facelo na liña de comandos como ben, pero máis por vir no xogo 1 p. 751 00:33:41,200 --> 00:33:44,940 >> Imos ver o que está neste programa aquí chamado, somador punto c. 752 00:33:44,940 --> 00:33:47,970 Agora xa comentou Lo, pero o que hai de novo? 753 00:33:47,970 --> 00:33:51,230 A primeira vista, o que liña de código é absolutamente novo? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Probablemente non fundamentalmente estraño agora. 756 00:33:56,780 --> 00:33:58,417 >> Audiencia: [inaudível] 757 00:33:58,417 --> 00:34:00,250 DAVID J. Malan: Si, así int x é igual a obter n. 758 00:34:00,250 --> 00:34:03,760 Nunca vimos nada diso antes, pero é probablemente int 759 00:34:03,760 --> 00:34:08,179 o símbolo para o tipo de variable, [? de?] un número enteiro. 760 00:34:08,179 --> 00:34:09,040 Así, int por enteiro. 761 00:34:09,040 --> 00:34:11,420 Está só sendo máis sucinto. x é só arbitraria. 762 00:34:11,420 --> 00:34:13,920 X e Y e Z son aínda bastante razoable para números, 763 00:34:13,920 --> 00:34:16,790 pero xeralmente nós imos usar palabras xa nosos programas se fan máis complexas. 764 00:34:16,790 --> 00:34:18,940 Obter int, por suposto, moi parecido corda get, 765 00:34:18,940 --> 00:34:21,629 é probablemente vai obter un int do usuario, 766 00:34:21,629 --> 00:34:23,670 e, a continuación, imos facer o mesmo con y. 767 00:34:23,670 --> 00:34:27,610 E, ao parecer, aínda que esta última liña, 24, parece máis complexo, 768 00:34:27,610 --> 00:34:32,679 só pode dicir a suma deste e que é esa outra cousa. 769 00:34:32,679 --> 00:34:35,840 >> E noten por cento i probablemente denota o que? 770 00:34:35,840 --> 00:34:38,190 Que papel por cento i aparentemente servir? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 É só espazos reservados. 773 00:34:41,719 --> 00:34:42,219 Non? 774 00:34:42,219 --> 00:34:45,149 S por cento foi para corda, i por cento é para enteiro. 775 00:34:45,149 --> 00:34:47,690 Non vai ser por cento f para valor de punto flotante que 776 00:34:47,690 --> 00:34:49,273 é só un número con un punto decimal. 777 00:34:49,273 --> 00:34:50,590 Noutras palabras, un número real. 778 00:34:50,590 --> 00:34:55,270 Entón imos realmente compilar este programar rápido real e fan víbora. 779 00:34:55,270 --> 00:34:57,962 Whoops. 780 00:34:57,962 --> 00:34:58,670 Boa oportunidade. 781 00:34:58,670 --> 00:35:02,970 Entón, observe aquí, todo este tempo o meu usuario nome para esta conta é jharvard. 782 00:35:02,970 --> 00:35:06,620 Estou en CS50 IDE, aka IDE50. 783 00:35:06,620 --> 00:35:11,030 E agora aquí en azul, é unha mención, pero do medio ambiente, de onde eu son. 784 00:35:11,030 --> 00:35:16,050 E, de feito, se eu aumentar ata o cumio aquí, repare en que eu teño unha IDE50 785 00:35:16,050 --> 00:35:19,490 e vexo esta palabra, se tipo de virar a cabeza para o lado, espazo de traballo. 786 00:35:19,490 --> 00:35:23,890 En poucas palabras, o feito de que Estou vendo til barra de espazo de traballo 787 00:35:23,890 --> 00:35:26,910 significa que no presente texto ambiente de comandos na base, 788 00:35:26,910 --> 00:35:32,300 Estou no equivalente de texto este vídeo cartafol aquí. 789 00:35:32,300 --> 00:35:35,730 Entón, cando fago barra dot víbora, está dicindo ningunha regra 790 00:35:35,730 --> 00:35:37,372 para facer branco parada víbora. 791 00:35:37,372 --> 00:35:39,830 Non sei o que iso significa, pero é malo por algún motivo. 792 00:35:39,830 --> 00:35:43,310 Non hai tal Lima ou directorio é aínda máis claro. 793 00:35:43,310 --> 00:35:45,670 Onde está, entón? 794 00:35:45,670 --> 00:35:47,820 En base a onde prema para abrir o ficheiro. 795 00:35:47,820 --> 00:35:49,442 Onde podería estar? 796 00:35:49,442 --> 00:35:52,050 >> É probabelmente na fonte un w, a quarta- 797 00:35:52,050 --> 00:35:53,960 e podo velo, de feito, se eu abrir iso. 798 00:35:53,960 --> 00:35:57,220 Hai somador de punto C, pero en Neste ambiente baseado en texto, 799 00:35:57,220 --> 00:35:59,380 de novo, eu teño que ser super explícito. 800 00:35:59,380 --> 00:36:03,950 Se eu queira cambiar os directorios en fonte dunha mércores, eu teño escribir, 801 00:36:03,950 --> 00:36:07,210 cd fonte espazo un Mércores e entra agora 802 00:36:07,210 --> 00:36:09,810 meus ventá cambia para me dar unha información visual que 803 00:36:09,810 --> 00:36:12,330 Estou, en realidade, noutro lugar no meu ambiente, 804 00:36:12,330 --> 00:36:15,710 pero agora podo facer víbora, parece funcionar, 805 00:36:15,710 --> 00:36:18,190 dot cortar víbora, me dar un enteiro. 806 00:36:18,190 --> 00:36:19,080 Unha. 807 00:36:19,080 --> 00:36:20,070 Dous. 808 00:36:20,070 --> 00:36:21,630 A suma de un e dous é tres. 809 00:36:21,630 --> 00:36:24,140 Pero se eu non cooperar, imos ver o que chegar int fai. 810 00:36:24,140 --> 00:36:25,200 Dáme un enteiro. 811 00:36:25,200 --> 00:36:26,590 Non. 812 00:36:26,590 --> 00:36:27,350 Ténteo de novo. 813 00:36:27,350 --> 00:36:29,060 Aceptar. 814 00:36:29,060 --> 00:36:30,520 Fermosas. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Todo ben. 818 00:36:33,010 --> 00:36:34,055 Polo que, finalmente coopera. 819 00:36:34,055 --> 00:36:36,430 E iso é parte do funcionalidade que estas funcións 820 00:36:36,430 --> 00:36:37,760 pode construír en para ti. 821 00:36:37,760 --> 00:36:43,330 >> Entón, dentro da aplicación de obter int, o que de programación 822 00:36:43,330 --> 00:36:47,990 construír desde a semana pasada é, probablemente, alí para obrigar este comportamento de repetición, 823 00:36:47,990 --> 00:36:49,962 repetir, repetir? 824 00:36:49,962 --> 00:36:51,670 Si, hai probablemente algún tipo de loop. 825 00:36:51,670 --> 00:36:54,160 Vai mirar sintaticamente diferente a partir de bloques de raspadinhas, 826 00:36:54,160 --> 00:36:55,880 pero iso é de feito o que está dentro do arquivo. 827 00:36:55,880 --> 00:36:58,505 E en poucas semanas imos realmente ollar para a biblioteca CS50 828 00:36:58,505 --> 00:37:02,000 como o que está dentro, pero hai un loop impoñer exactamente isto. 829 00:37:02,000 --> 00:37:04,840 >> Imos xogar un pouco parvo xogo aquí con este ficheiro. 830 00:37:04,840 --> 00:37:06,550 Condition Cero punto c. 831 00:37:06,550 --> 00:37:08,960 Nós só estamos indo en xeral comezar a contar en cero. 832 00:37:08,960 --> 00:37:11,220 E eu manter a desprazamento pasado algún do material na parte superior. 833 00:37:11,220 --> 00:37:15,390 En azul aquí, con toda demarcada destas estrelas e as barras, 834 00:37:15,390 --> 00:37:17,310 aqueles de vostedes que programar antes, o que é iso? 835 00:37:17,310 --> 00:37:18,690 Por que seguimos a ignorar sobre el? 836 00:37:18,690 --> 00:37:19,110 O que? 837 00:37:19,110 --> 00:37:19,490 >> Audiencia: É un comentario. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. Malan: Yeah. 839 00:37:19,800 --> 00:37:20,633 É só un comentario. 840 00:37:20,633 --> 00:37:24,160 Este é un comentario para o ser humano ler, que, no noso caso, 841 00:37:24,160 --> 00:37:27,120 dinos que o nome do ficheiro é, quen o escribiu, eo que fai, 842 00:37:27,120 --> 00:37:28,610 de xeito que non ten para ler o código 843 00:37:28,610 --> 00:37:30,110 para saber o que este ficheiro é todo. 844 00:37:30,110 --> 00:37:33,110 É só unha descrición pero funcionalmente é irrelevante. 845 00:37:33,110 --> 00:37:35,930 E podo incluso borrar-lo meu arquivo e non ten impacto. 846 00:37:35,930 --> 00:37:38,740 As liñas son estes suculentos primeiro dous aquí, agora. 847 00:37:38,740 --> 00:37:41,405 void main int é o equivalente da nosa bandeira verde cando premendo, 848 00:37:41,405 --> 00:37:44,030 entón imos deixar que sexa para hoxe, e nós imos volver, 849 00:37:44,030 --> 00:37:46,940 finalmente, sobre o que int e baleiro son, pero agora, 850 00:37:46,940 --> 00:37:49,500 entender o que eu fixen aquí tamén, tamén se pode, 851 00:37:49,500 --> 00:37:51,736 se ten un en liña comentar, se ten 852 00:37:51,736 --> 00:37:54,670 un que quere compartir sobre unha determinada liña de código, 853 00:37:54,670 --> 00:37:58,910 convención en C é facer barra slash, e, a continuación, algunhas palabras sucintas, 854 00:37:58,910 --> 00:38:01,500 non unha frase completa, xeralmente non un parágrafo 855 00:38:01,500 --> 00:38:05,310 que explica a vostede, ou o seu TF, ou outros lectores ou compañeiros, 856 00:38:05,310 --> 00:38:06,990 o que o código está facendo. 857 00:38:06,990 --> 00:38:10,150 Entón en vez de ter que mirar para iso e inferir a partir de liñas 858 00:38:10,150 --> 00:38:12,550 nove e 10, o que é esta facendo, na liña oito 859 00:38:12,550 --> 00:38:14,945 Acaba de dar un comentario a pedir ao usuario a un número enteiro, 860 00:38:14,945 --> 00:38:17,820 entón eu non teño que pensar moito sobre o que liñas nove e 10 son. 861 00:38:17,820 --> 00:38:19,720 Eu só sei que iso é o que colectivamente están facendo. 862 00:38:19,720 --> 00:38:20,460 >> Como? 863 00:38:20,460 --> 00:38:22,060 Ben, aquí está o poder. 864 00:38:22,060 --> 00:38:23,610 Aquí é a obtención do int. 865 00:38:23,610 --> 00:38:25,984 E con base na anterior comportamento, parece que get int 866 00:38:25,984 --> 00:38:29,080 é intelixente dabondo para asegurarse de que o humano coopera e dálle 867 00:38:29,080 --> 00:38:30,090 un enteiro. 868 00:38:30,090 --> 00:38:32,270 Pero agora vemos isto. 869 00:38:32,270 --> 00:38:33,740 E esta é unha reminiscencia do Scratch. 870 00:38:33,740 --> 00:38:36,140 Eu digo que eu son analizando a entrada do usuario, 871 00:38:36,140 --> 00:38:39,050 pero un pouco imprecisa. 872 00:38:39,050 --> 00:38:43,200 E iso parece en C é como expresamos unha máis, dunha sucursal, 873 00:38:43,200 --> 00:38:46,320 unha bifurcación na estrada, pero eu dicir algo imprecisa. 874 00:38:46,320 --> 00:38:50,470 Cal é o erro neste programa? 875 00:38:50,470 --> 00:38:51,610 Sobre aínda máis cara atrás? 876 00:38:51,610 --> 00:38:52,223 Si. 877 00:38:52,223 --> 00:38:53,150 >> Audiencia: [inaudível] cero. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. Malan: Yeah. 879 00:38:54,025 --> 00:38:57,630 Entón, se eu escribir cero, imos considerar exactamente nese caso caso, ou canto, 880 00:38:57,630 --> 00:38:58,450 se quere. 881 00:38:58,450 --> 00:39:02,790 Entón, se eu escribir cero, cal dos bloques vai parecer agarralo lo? 882 00:39:02,790 --> 00:39:04,660 O caso é a persoa? 883 00:39:04,660 --> 00:39:07,340 A outra cousa, e que vai dicir, escolleu un número negativo. 884 00:39:07,340 --> 00:39:10,476 E, de feito, cero non se quere para ser positiva ou negativa, 885 00:39:10,476 --> 00:39:11,850 e de xeito que sería erroneamente. 886 00:39:11,850 --> 00:39:12,930 Iso sería un erro. 887 00:39:12,930 --> 00:39:14,580 Entón, como podemos solucionar isto? 888 00:39:14,580 --> 00:39:16,360 Alguén que nunca programado antes? 889 00:39:16,360 --> 00:39:16,570 Vostede want-- 890 00:39:16,570 --> 00:39:17,480 >> Audiencia: [inaudível] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. Malan: retraindo? 892 00:39:17,990 --> 00:39:18,570 >> Audiencia: [inaudível] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. Malan: Oh, ten? 894 00:39:18,930 --> 00:39:20,350 Alguén que nunca programado antes. 895 00:39:20,350 --> 00:39:21,750 Quere probar a súa man en este, coa camisa vermella? 896 00:39:21,750 --> 00:39:22,600 Imos cara arriba. 897 00:39:22,600 --> 00:39:25,320 Oh yeah, imos para arriba, se non lle importa. 898 00:39:25,320 --> 00:39:27,586 Por iso, nunca programado antes, o que é o seu nome? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. Malan: Lauren, todo ben. 901 00:39:29,626 --> 00:39:31,150 Entón corrixir este erro para nós. 902 00:39:31,150 --> 00:39:35,070 Non vin C, presuntamente, e probablemente ningún outro idioma. 903 00:39:35,070 --> 00:39:38,380 Entón corrixir este programa para nós. 904 00:39:38,380 --> 00:39:39,100 Pracer en coñece-ya. 905 00:39:39,100 --> 00:39:39,615 Sen presión. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Yeah. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. Malan: Pero, de novo, se este Gamble correr segundo o planeado, 909 00:39:46,270 --> 00:39:48,350 o takeaway aquí vai ser, só unha vez, para iniciar 910 00:39:48,350 --> 00:39:51,080 a notar patróns e deducir sintaxe existente 911 00:39:51,080 --> 00:39:55,420 de que outra forma podes expresar mesmo, sen trocadilhos, para 912 00:39:55,420 --> 00:39:58,410 para capturar algún escenario adicional. 913 00:39:58,410 --> 00:39:59,603 Entón, nós estamos dicindo else if. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, bo. 916 00:40:05,230 --> 00:40:09,120 E teña en conta con CS50 IDE e IDE frankly-- 917 00:40:09,120 --> 00:40:11,110 significa Integrado Ambiente de desenvolvemento. 918 00:40:11,110 --> 00:40:14,110 É só un xeito elegante de dicir un programa que axuda programa. 919 00:40:14,110 --> 00:40:16,779 Fai cousas como usuario agradable cando insire un paréntese, 920 00:40:16,779 --> 00:40:18,320 el dálle automaticamente o outro. 921 00:40:18,320 --> 00:40:20,760 A presunción é que é finalmente vai querer escribir que, 922 00:40:20,760 --> 00:40:22,400 e tamén o fai con comiñas. 923 00:40:22,400 --> 00:40:24,190 >> Entón, me gusta liña 23. 924 00:40:24,190 --> 00:40:26,400 99% do camiño ata alí. 925 00:40:26,400 --> 00:40:29,920 Alguén quere dialogar con unha información? 926 00:40:29,920 --> 00:40:31,420 Oín punto e coma do público. 927 00:40:31,420 --> 00:40:32,080 Bo. 928 00:40:32,080 --> 00:40:33,260 Así que remata que. 929 00:40:33,260 --> 00:40:37,930 E agora, eu só teño un pouco consternación coa liña 21. 930 00:40:37,930 --> 00:40:41,370 Como queremos expresar isto? 931 00:40:41,370 --> 00:40:43,370 Que pregunta queremos de pedir, que pensas? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Entón anteriormente que fixo a pregunta, se n é maior que cero, facelo. 934 00:40:50,330 --> 00:40:51,870 Else, facelo. 935 00:40:51,870 --> 00:40:54,317 Entón, necesitamos escoller un pregunta a facer aquí. 936 00:40:54,317 --> 00:40:55,192 Audiencia: [inaudível] 937 00:40:55,192 --> 00:40:56,530 DAVID J. Malan: Good. 938 00:40:56,530 --> 00:40:58,290 Así, se n é igual a cero. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Excelente. 941 00:41:02,100 --> 00:41:03,080 Entón, imos facer unha pausa aquí. 942 00:41:03,080 --> 00:41:04,850 Moitas grazas por esta enfrentando. 943 00:41:04,850 --> 00:41:10,890 Deixe-me dar-lle un pouco merecida bola de estrés, quizais non. 944 00:41:10,890 --> 00:41:11,900 Entón, nós estamos case alí. 945 00:41:11,900 --> 00:41:14,790 De feito, Lauren, se non mente, deixe-me facer unha emenda aquí, 946 00:41:14,790 --> 00:41:17,850 só para ser máis consistente, mesmo con o que vimos en risco, o que 947 00:41:17,850 --> 00:41:21,080 quero facer con liñas 21 e 24, só en base novo 948 00:41:21,080 --> 00:41:23,290 sobre como nós fixemos iso en perigo, quizais? 949 00:41:23,290 --> 00:41:24,230 >> Audiencia: Move-se. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. Malan: Si, mover para arriba. 951 00:41:25,605 --> 00:41:30,260 Así, a condición máis, a terceira, ou cuarto, quinto ou, ou ramo final, 952 00:41:30,260 --> 00:41:34,100 que realmente vir despois, e iso é só por convención, 953 00:41:34,100 --> 00:41:36,047 só porque se quere. 954 00:41:36,047 --> 00:41:37,380 Entón, eu teño que facer este axuste. 955 00:41:37,380 --> 00:41:39,660 E eu teño para poñer o meu chaveta de volta aquí. 956 00:41:39,660 --> 00:41:42,700 E agora, este programa pode compilar. 957 00:41:42,700 --> 00:41:46,140 Estamos tan preto, pero non hai un erro moi, moi sutil. 958 00:41:46,140 --> 00:41:47,200 Imos ver o que acontece. 959 00:41:47,200 --> 00:41:49,660 >> En primeiro lugar, deixe-me ir adiante e diminuír o zoom. 960 00:41:49,660 --> 00:41:53,405 Eu estou indo a ir adiante e escriba make condición cero. 961 00:41:53,405 --> 00:41:55,070 Oh, eu mentín. 962 00:41:55,070 --> 00:41:58,760 Agora, o compilador é realmente moi intelixente. 963 00:41:58,760 --> 00:42:00,950 E realmente non entendo é mensaxe de erro. 964 00:42:00,950 --> 00:42:04,310 Usando o resultado dunha concesión como condición sen parénteses, 965 00:42:04,310 --> 00:42:05,740 aparentemente é mala. 966 00:42:05,740 --> 00:42:07,100 Pero o que significa isto? 967 00:42:07,100 --> 00:42:10,860 >> Ben novo, buscando patróns no código que vimos antes, 968 00:42:10,860 --> 00:42:16,640 o que é liña 17, en realidade, facendo, aínda Lauren destina lixeiramente 969 00:42:16,640 --> 00:42:18,790 doutro xeito? 970 00:42:18,790 --> 00:42:19,290 Si. 971 00:42:19,290 --> 00:42:21,565 >> Audiencia: [inaudível] 972 00:42:21,565 --> 00:42:22,440 DAVID J. Malan: Yeah. 973 00:42:22,440 --> 00:42:26,610 Entón lembre o signo igual, ao parecer como nós usei iso antes, non é igual. 974 00:42:26,610 --> 00:42:29,240 A súa asignación, de dereita a esquerda. 975 00:42:29,240 --> 00:42:33,810 Así a liña 17 no momento é unha condición, e é 976 00:42:33,810 --> 00:42:37,890 execución de código dentro dos parénteses, pero cando este código é executado, 977 00:42:37,890 --> 00:42:42,140 o que está a suceder co valor de cero? 978 00:42:42,140 --> 00:42:45,250 O que está a ocorrer ao valor de n? 979 00:42:45,250 --> 00:42:46,810 Converténdose no cero. 980 00:42:46,810 --> 00:42:50,520 Polo tanto, se facer n é cero, e de novo, por a semana pasada, 981 00:42:50,520 --> 00:42:54,690 nós xeralmente din que o cero é falsa e unha é verdadeira, 982 00:42:54,690 --> 00:42:57,410 ou si é un e non é cero. 983 00:42:57,410 --> 00:42:59,590 Así, o certo eo falso, e un 0. 984 00:42:59,590 --> 00:43:06,090 Se n desde liña 17 foi dado o valor 0, é cero verdadeiro? 985 00:43:06,090 --> 00:43:06,590 Non. 986 00:43:06,590 --> 00:43:08,280 Por definición, cero é falso. 987 00:43:08,280 --> 00:43:10,860 Esa é a convención que estamos vai agarrarse a seguir adiante. 988 00:43:10,860 --> 00:43:17,320 O mesmo acontecerá coas liñas 18, 19 e 20 sempre aplique agora, loxicamente? 989 00:43:17,320 --> 00:43:18,320 Eles non poden. 990 00:43:18,320 --> 00:43:21,640 Por iso, a pregunta pero non con bastante precisión, 991 00:43:21,640 --> 00:43:25,620 e non sabe tanto, a menos xa viu iso, a solución en C 992 00:43:25,620 --> 00:43:29,610 é cando quere expresar igualdade, di iguais iguais. 993 00:43:29,610 --> 00:43:33,140 Entón, o signo igual xa foi usado para arriba por cesión, de dereita a esquerda. 994 00:43:33,140 --> 00:43:35,110 É igual a igual a medio iguais. 995 00:43:35,110 --> 00:43:37,950 E se o quere que a súa mente para ser dobrado, en JavaScript e PHP, 996 00:43:37,950 --> 00:43:40,490 hai igual iguais, o que é o mesmo que significar algo completamente diferente, 997 00:43:40,490 --> 00:43:41,990 pero nós imos chegar a iso en pouco tempo. 998 00:43:41,990 --> 00:43:45,760 >> Polo tanto, esta é unha solución sinxela, pero entender super fácil de facer ese erro, 999 00:43:45,760 --> 00:43:48,700 e despois preguntan e loita para minutos, se non unha hora, 1000 00:43:48,700 --> 00:43:51,490 porque é o meu código non execución como eu pretendo? 1001 00:43:51,490 --> 00:43:54,140 É porque non dixo el o que quería dicir. 1002 00:43:54,140 --> 00:43:56,450 Así que foi case perfecto, e foi excelente 1003 00:43:56,450 --> 00:44:00,760 que tropezamos por estes dous pouco cousas, porque agora se resolve-los, 1004 00:44:00,760 --> 00:44:06,240 e fago condición de cero dot cortar condición cero, 1005 00:44:06,240 --> 00:44:07,490 Gustaríame un número enteiro, por favor. 1006 00:44:07,490 --> 00:44:08,090 Imos ver. 1007 00:44:08,090 --> 00:44:09,160 Non. 1008 00:44:09,160 --> 00:44:10,740 Me vai obrigar a facelo. 1009 00:44:10,740 --> 00:44:11,990 Entón, 42. 1010 00:44:11,990 --> 00:44:13,590 Eu escollín un número positivo. 1011 00:44:13,590 --> 00:44:16,470 Entón, agora como fago para probar este programa correcto? 1012 00:44:16,470 --> 00:44:19,990 Se vostede é un matemático, non pode realmente probalo por intento e erro, 1013 00:44:19,990 --> 00:44:20,490 non? 1014 00:44:20,490 --> 00:44:23,180 Pode proba non só por exemplo, pero polo menos 1015 00:44:23,180 --> 00:44:25,494 como un programador que non estamos vai probar de momento 1016 00:44:25,494 --> 00:44:27,660 que esta é realmente correcto, pero eu probablemente debería 1017 00:44:27,660 --> 00:44:29,470 probar algúns casos representativos. 1018 00:44:29,470 --> 00:44:31,070 >> Eu proba 42. 1019 00:44:31,070 --> 00:44:33,030 Eu podía probar 43. 1020 00:44:33,030 --> 00:44:34,910 Eu podía probar 44. 1021 00:44:34,910 --> 00:44:35,640 Proba 45. 1022 00:44:35,640 --> 00:44:36,140 Non? 1023 00:44:36,140 --> 00:44:37,860 Pero eu podería facelo un tempo moi longo. 1024 00:44:37,860 --> 00:44:39,925 O que sería un pouco máis casos interesantes de intentar? 1025 00:44:39,925 --> 00:44:41,050 Audiencia: [inaudível] cero. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. Malan: Entón cero. 1027 00:44:41,740 --> 00:44:42,297 Certamente. 1028 00:44:42,297 --> 00:44:44,880 E bo, hai que ter iso, esta vez, grazas ao novo código de Lauren. 1029 00:44:44,880 --> 00:44:46,213 ¿Que é un bo caso para tratar? 1030 00:44:46,213 --> 00:44:47,320 Audiencia: unha negativa. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. Malan: unha negativa, e quizais algo un pouco maior, 1032 00:44:50,070 --> 00:44:52,617 entón quizais negativo 42, pero, en xeral, cando 1033 00:44:52,617 --> 00:44:54,450 probar os seus programas avanzar, está 1034 00:44:54,450 --> 00:44:56,325 Vai querer pensar para si mesmo, como o que 1035 00:44:56,325 --> 00:44:58,050 son os casos fundamentais diferentes. 1036 00:44:58,050 --> 00:45:01,720 E atrévome a dicir que un caso negativo, un caso positivo, e un caso de cero 1037 00:45:01,720 --> 00:45:03,365 practicamente roldas estes para fóra. 1038 00:45:03,365 --> 00:45:04,990 Imos ollar a unha variante deste aínda. 1039 00:45:04,990 --> 00:45:06,930 Condicións un. 1040 00:45:06,930 --> 00:45:11,224 Esta é unha solución correcta aquí, de xeito que vai ver dúas e en liña, 1041 00:45:11,224 --> 00:45:13,390 se camiñar a través da orientacións, a vontade xeral 1042 00:45:13,390 --> 00:45:18,090 incrementar estes paso a paso ata que obter exactamente a visión correcta. 1043 00:45:18,090 --> 00:45:20,070 E se a xente quería preguntar dúas preguntas á vez? 1044 00:45:20,070 --> 00:45:22,200 >> Déixeme abrir esta vez. 1045 00:45:22,200 --> 00:45:26,740 Non-switch, por razóns imos ver outra vez. 1046 00:45:26,740 --> 00:45:29,610 O que hai de novo sintaticamente aquí? 1047 00:45:29,610 --> 00:45:32,760 Actualmente estou xogando un xogo onde o ordenador está dicindo 1048 00:45:32,760 --> 00:45:35,550 me, dáme un enteiro entre un e 10, 1049 00:45:35,550 --> 00:45:37,180 e entón eu estou xulgando a entrada do usuario. 1050 00:45:37,180 --> 00:45:39,180 En inglés, en base a o código que ve aquí 1051 00:45:39,180 --> 00:45:41,530 en azul, o que é este programa está facendo? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 Audiencia: [inaudível] recollen un número grande ou pequeno. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. Malan: Yeah. 1055 00:45:46,484 --> 00:45:49,450 É só pronunciarão Eu escollín un grande, ou medio, 1056 00:45:49,450 --> 00:45:53,900 ou un número pequeno en base a unha moi definición arbitraria de pequeno, medio, 1057 00:45:53,900 --> 00:45:58,510 e gran aquí, pero previo aviso A sintaxe é novo é este. 1058 00:45:58,510 --> 00:46:02,340 Non hai menos de int ou igual a sinal, ou maior que ou igual a asinar, 1059 00:46:02,340 --> 00:46:05,430 onde é unha sobre a outra, que pode expresar en como Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Así, nunha linguaxe de programación que normalmente só facer dous personaxes, 1061 00:46:08,180 --> 00:46:09,450 un despois do outro. 1062 00:46:09,450 --> 00:46:12,695 E o que iso probablemente representan, comercial e comercial. 1063 00:46:12,695 --> 00:46:13,570 Audiencia: [inaudível] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. Malan: Yeah. 1065 00:46:13,680 --> 00:46:16,910 Significa só que e por que Acontece que os autores do C 1066 00:46:16,910 --> 00:46:19,120 utilizar un único e comercial, que pode pensar 1067 00:46:19,120 --> 00:46:22,430 sería perfecto para a noción e de, xa se usa para arriba, 1068 00:46:22,430 --> 00:46:27,300 E comercial e comercial, en realidade, tan capta o caso de que realmente quere. 1069 00:46:27,300 --> 00:46:30,610 >> Entón, imos agora tropezar dúas cousas. 1070 00:46:30,610 --> 00:46:32,640 Deixe-me ir adiante e abrir unha. 1071 00:46:32,640 --> 00:46:36,590 Algo que é un pouco preocupante. 1072 00:46:36,590 --> 00:46:37,970 Imprecisión punto c. 1073 00:46:37,970 --> 00:46:40,260 Deixe-me presentar dúas cousas aquí. 1074 00:46:40,260 --> 00:46:44,720 Un, aviso que podemos facer matemática, como só como antes, cando 1075 00:46:44,720 --> 00:46:47,797 fixemos signo máis de dous números, X e Y. 1076 00:46:47,797 --> 00:46:49,380 ¿Que é este programa, aparentemente facendo? 1077 00:46:49,380 --> 00:46:52,140 Non teño comentou aínda, e eu teño presentado por cento f, 1078 00:46:52,140 --> 00:46:55,720 pero eu rapidamente dixo anteriormente por cento f significa punto flotante 1079 00:46:55,720 --> 00:46:56,970 valor, que é o número real. 1080 00:46:56,970 --> 00:46:59,520 Algo cun decimal puntos, que non é un número enteiro. 1081 00:46:59,520 --> 00:47:02,270 ¿Que pensas que este programa é intentando me amosar na pantalla? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Si? 1084 00:47:06,050 --> 00:47:07,550 Audiencia O resultado dun sobre 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. Malan: Yeah. 1086 00:47:07,780 --> 00:47:09,680 Cal é o resultado dun dividido por 10. 1087 00:47:09,680 --> 00:47:12,721 Seguro, porque todos vostedes teñen probablemente crecendo sabendo que un máis de 10 1088 00:47:12,721 --> 00:47:14,502 é o que? 1089 00:47:14,502 --> 00:47:16,220 Si, é só 1/10 ou 0,1. 1090 00:47:16,220 --> 00:47:16,720 Non? 1091 00:47:16,720 --> 00:47:19,010 Entón, imos ver o que isto realmente é. 1092 00:47:19,010 --> 00:47:21,010 Entón deixe-me ir adiante e gardar este. 1093 00:47:21,010 --> 00:47:21,970 Deixe-me ir para abaixo aquí. 1094 00:47:21,970 --> 00:47:26,360 Fai barra imprecisión dot imprecisión, e previo aviso, tamén, 1095 00:47:26,360 --> 00:47:29,380 nun ambiente Linux, non ten que escribir a imprecisión e leva 1096 00:47:29,380 --> 00:47:30,010 durante todo o día. 1097 00:47:30,010 --> 00:47:32,910 Xeralmente, se premes tab, el vai rematar o seu pensamento para ti, 1098 00:47:32,910 --> 00:47:36,660 en base ás palabras que sexan dispoñible no directorio actual. 1099 00:47:36,660 --> 00:47:37,160 Aceptar. 1100 00:47:37,160 --> 00:47:37,970 Entón, estaba seguro. 1101 00:47:37,970 --> 00:47:41,239 Unha dividido por 10 é, de feito, 0,1. 1102 00:47:41,239 --> 00:47:42,280 Pero eu son un pouco curioso. 1103 00:47:42,280 --> 00:47:44,196 E resulta que printf soporta algunhas funcións 1104 00:47:44,196 --> 00:47:48,700 a través do cal pode especificar máis de o número predeterminado de puntos decimais. 1105 00:47:48,700 --> 00:47:52,140 Entón, se eu quero ver 10 decimal Os puntos que podo facer por cento, 1106 00:47:52,140 --> 00:47:55,510 para o símbolo de espazo reservado, dot 10 para, dáme 10 puntos decimais, 1107 00:47:55,510 --> 00:47:58,140 e, a continuación, aínda de punto flotante valor, e, como un aparte, 1108 00:47:58,140 --> 00:48:01,550 o que é esa barra invertida n aparentemente seguimos usando? 1109 00:48:01,550 --> 00:48:03,450 Acontece que é unha símbolo para unha nova liña. 1110 00:48:03,450 --> 00:48:05,970 É o xeito moi explícita de dicir ao ordenador, 1111 00:48:05,970 --> 00:48:08,759 mover o cursor á seguinte liña despois que fixo. 1112 00:48:08,759 --> 00:48:10,800 E imos ver que pasa cando nós non facemos iso. 1113 00:48:10,800 --> 00:48:12,430 >> Deixe-me facer recompilar imprecisión. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Agora dot cortar imprecisión. 1116 00:48:18,356 --> 00:48:18,930 Aceptar. 1117 00:48:18,930 --> 00:48:19,780 Aínda dereita. 1118 00:48:19,780 --> 00:48:21,512 Unha dividido por 10. 1119 00:48:21,512 --> 00:48:23,220 Agora eu estou quedando un pouco curioso, con todo. 1120 00:48:23,220 --> 00:48:27,599 E se eu ollar 20 decimal salienta, recompilar, reprise, 1121 00:48:27,599 --> 00:48:29,390 e como un aparte para velocidade, tamén se pode usar 1122 00:48:29,390 --> 00:48:31,800 seu arriba e abaixo frechas para rolar a través da súa historia, 1123 00:48:31,800 --> 00:48:35,476 así que non ten que manter redigitar estes comandos, escriba. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Non aprendín que na escola. 1126 00:48:39,220 --> 00:48:43,260 Todo ben, entón déixenme ver como 29 prazas fóra. 1127 00:48:43,260 --> 00:48:44,300 Quizais sexa só un acaso. 1128 00:48:44,300 --> 00:48:46,907 Quizais o meu ordenador está actuando de forma estraña. 1129 00:48:46,907 --> 00:48:47,990 Iso non é unha cousa, non? 1130 00:48:47,990 --> 00:48:50,300 Está facendo algo de forma determinístico. 1131 00:48:50,300 --> 00:48:53,410 Entón faga imprecisión. 1132 00:48:53,410 --> 00:48:54,890 OK, iso é confuso. 1133 00:48:54,890 --> 00:48:57,620 Entón, o que está pasando? 1134 00:48:57,620 --> 00:49:00,160 >> Entón, ao parecer, o seu profesor foi deitado 1135 00:49:00,160 --> 00:49:03,900 para ti todo este tempo para razóns que veremos en breve. 1136 00:49:03,900 --> 00:49:05,569 Pero imos rematar con outro programa. 1137 00:49:05,569 --> 00:49:07,860 Esta é unha pequena programas alguén escribiu fai uns anos, 1138 00:49:07,860 --> 00:49:08,990 e é realmente parte dun concurso. 1139 00:49:08,990 --> 00:49:11,198 Ninguén realmente escribe código como este, e se o fai, 1140 00:49:11,198 --> 00:49:12,880 este é un problema estilística. 1141 00:49:12,880 --> 00:49:14,660 Pero a xente fan isto para esixir dereitos. 1142 00:49:14,660 --> 00:49:17,260 Para escribir o máis confuso programa que busca 1143 00:49:17,260 --> 00:49:19,110 con todo, fai algo interesante. 1144 00:49:19,110 --> 00:49:23,930 E a nota eu penso que ía saír en hoxe, antes de Colton xoga nós aquí fóra, 1145 00:49:23,930 --> 00:49:27,840 é para executar este programa, que, mesmo en só usando 1146 00:49:27,840 --> 00:49:31,450 C neste texto-base medio ambiente, nós, isto dá. 1147 00:49:31,450 --> 00:49:32,264 Droga. 1148 00:49:32,264 --> 00:49:34,930 >> [Risas] 1149 00:49:34,930 --> 00:49:36,800 >> Espera. 1150 00:49:36,800 --> 00:49:39,340 [Inaudível] c trazo l m. 1151 00:49:39,340 --> 00:49:42,885 Vai ver a máxica encantamento que veremos en breve. 1152 00:49:42,885 --> 00:49:45,780 [Inaudível] Todo ben. 1153 00:49:45,780 --> 00:49:51,592 E agora pode incluso facer cousas como esta. 1154 00:49:51,592 --> 00:49:52,340 É iso aí. 1155 00:49:52,340 --> 00:49:56,410 Para CS50 nós, vai velo o venres. 1156 00:49:56,410 --> 00:49:58,910 >> [Música tocando] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Aplausos] 1159 00:52:41,440 --> 00:52:42,812