1 00:00:00,000 --> 00:00:12,410 >> [REPRODUCCIÓN DE MÚSICA] 2 00:00:12,410 --> 00:00:12,830 >> DAVID MALAN: Muy bien. 3 00:00:12,830 --> 00:00:13,370 Bienvenido de nuevo. 4 00:00:13,370 --> 00:00:16,510 Este es CS50, y esto es Semana Uno, Continuación. 5 00:00:16,510 --> 00:00:20,050 Así que una de las razones por las que hemos estado pasando en torno a tecnologías como 6 00:00:20,050 --> 00:00:24,120 Google Glass es que vienen con algo que se conoce como una API, un 7 00:00:24,120 --> 00:00:25,980 Interfaz de programación de aplicaciones. 8 00:00:25,980 --> 00:00:28,830 Y lo que esto significa es que con la archivos de la derecha y con el derecho 9 00:00:28,830 --> 00:00:32,850 documentación, en realidad se puede escribir software para dispositivos incluso como estos. 10 00:00:32,850 --> 00:00:36,200 >> Y así, lo que tenemos en mente hacia semestres final es, si un proyecto 11 00:00:36,200 --> 00:00:39,310 que implica, por ejemplo, Google Glass podría apelar, ya veremos lo que podemos hacer en 12 00:00:39,310 --> 00:00:42,220 términos de enganchar para arriba con un poco de de hardware de préstamo, así como la 13 00:00:42,220 --> 00:00:46,500 API de acceso público, para que pueda realmente empezar a crear software 14 00:00:46,500 --> 00:00:48,630 que se ejecuta en el mismo Google Glass. 15 00:00:48,630 --> 00:00:51,710 >> Otro dispositivo que hemos estado jugando con los últimos tiempos que pensamos que podría ser 16 00:00:51,710 --> 00:00:53,910 diversión al final del semestre es esta pequeña cosa aquí. 17 00:00:53,910 --> 00:00:56,860 Se llama Salto de movimiento, y lo que está a punto de ver es técnicamente un 18 00:00:56,860 --> 00:01:00,280 anuncio para el dispositivo, pero no hablar de lo que este particular, 19 00:01:00,280 --> 00:01:01,240 dispositivo es capaz de hacer. 20 00:01:01,240 --> 00:01:05,550 Y es, también, viene con un API a través de que se puede escribir software para 21 00:01:05,550 --> 00:01:10,545 controlar su propia computadora de manera bastante como esta película de un minuto aquí. 22 00:01:10,545 --> 00:01:12,070 >> [REPRODUCCIÓN DE VÍDEO] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [VIDEO PLAYBACK FIN] 25 00:02:08,590 --> 00:02:11,190 >> Así que ahora mismo, este dispositivo pasa a ser implementado como un pequeño USB 26 00:02:11,190 --> 00:02:14,290 conector que se puede conectar a su ordenador, pero no me sorprendería 27 00:02:14,290 --> 00:02:17,930 si en poco tiempo que tenemos este tipo de tecnologías en el siguiente lote de PCs 28 00:02:17,930 --> 00:02:20,510 y Macs, para que pueda, de hecho, interactuar con él de 29 00:02:20,510 --> 00:02:21,650 una manera así. 30 00:02:21,650 --> 00:02:24,250 De hecho, lo que pensé que lo haría, también, es Acerqué una pequeña demostración 31 00:02:24,250 --> 00:02:25,860 programa que viene con este software. 32 00:02:25,860 --> 00:02:28,700 Así que me he puesto el pequeño sensor frente a mi laptop. 33 00:02:28,700 --> 00:02:32,420 >> Y como se puede ver, ya se da cuenta que mi mano está ahí 34 00:02:32,420 --> 00:02:33,400 controlarla. 35 00:02:33,400 --> 00:02:37,900 Y todo esto lo hace la aplicación es maravillas pequeñas cosas como esta. 36 00:02:37,900 --> 00:02:41,080 Pero se puede ver que, en efecto, Tengo cinco dedos allí. 37 00:02:41,080 --> 00:02:44,270 Si podemos conseguir que haga en los 10, se puede imaginar un piano limpio 38 00:02:44,270 --> 00:02:45,390 de aplicación o similar. 39 00:02:45,390 --> 00:02:47,820 Así que si desea llegar después de las clases hoy y jugar con eso como 40 00:02:47,820 --> 00:02:49,720 así, le invitamos a. 41 00:02:49,720 --> 00:02:52,930 Así que más de que hacia el final de semestre. 42 00:02:52,930 --> 00:02:54,420 >> Así que un par de administrativo anuncios. 43 00:02:54,420 --> 00:02:58,690 Uno, hacer la sección de este viernes al mediodía en cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 Esa es la URL del curso de inicio también. 45 00:03:01,260 --> 00:03:04,010 En el ínterin, sin embargo, supersections debutará este domingo. 46 00:03:04,010 --> 00:03:07,800 Supersections son una cosa de una sola vez, porque nos lleva un poco de tiempo para trabajar 47 00:03:07,800 --> 00:03:09,470 quién está en qué sección y dónde. 48 00:03:09,470 --> 00:03:12,280 >> Así que el próximo domingo, no habrá una sección para los menos cómodo, 49 00:03:12,280 --> 00:03:14,040 una sección para aquellos más cómoda. 50 00:03:14,040 --> 00:03:16,110 Y aquellos de ustedes en algún lugar entre invitamos a ir a 51 00:03:16,110 --> 00:03:17,850 cualquiera o ambos o ninguno. 52 00:03:17,850 --> 00:03:19,150 Ambos serán filmados. 53 00:03:19,150 --> 00:03:22,740 Van a estar en un auditorio más grande que una sección normalmente sería pulg 54 00:03:22,740 --> 00:03:26,110 Pero el objetivo aquí es para equiparlo con un poco de consuelo con problema establece una, 55 00:03:26,110 --> 00:03:29,910 con C, con el aparato CS50, este fin de semana, incluso antes de que usted descubre que su 56 00:03:29,910 --> 00:03:31,050 asignación de la sección oficial. 57 00:03:31,050 --> 00:03:34,700 Así que te encontrarás con tu TF y su menor grupo de sectionmates en aproximadamente 58 00:03:34,700 --> 00:03:36,350 tiempo de una semana. 59 00:03:36,350 --> 00:03:38,200 >> El horario de oficina, por su parte, han estado ocurriendo. 60 00:03:38,200 --> 00:03:41,020 No tomar ventaja de ellos esta noche o mañana por la noche si le gustaría. 61 00:03:41,020 --> 00:03:43,460 Problema establecido 0 vence el viernes. 62 00:03:43,460 --> 00:03:46,680 Este es un día más tarde de la regularmente programada el jueves. 63 00:03:46,680 --> 00:03:50,410 Pero con un problema conjunto 1, verá que incluye algunas de calentamiento 64 00:03:50,410 --> 00:03:52,770 ejercicios con los que tú mismo puede ampliar su 65 00:03:52,770 --> 00:03:54,660 Jueves plazo a viernes. 66 00:03:54,660 --> 00:03:58,410 Problema set 1, por su parte, hará su debut en la página web del curso próximo 67 00:03:58,410 --> 00:04:02,000 Viernes, si desea acurrucarse con como lo hice alguna vez tarde 68 00:04:02,000 --> 00:04:04,370 Viernes por la noche en su habitación. 69 00:04:04,370 --> 00:04:07,660 >> Así cs50.net/appliance es el lugar donde usted puede conseguir el aparato CS50 70 00:04:07,660 --> 00:04:09,040 que comenzamos a usar el lunes. 71 00:04:09,040 --> 00:04:10,140 Vamos a utilizar un poco más hoy. 72 00:04:10,140 --> 00:04:14,040 Pero tenga la seguridad de que el problema set 1 especificación le guiará a través de 73 00:04:14,040 --> 00:04:16,490 precisamente los pasos que debe para conseguir que la marcha y funcionando. 74 00:04:16,490 --> 00:04:22,120 Así que no se preocupe por hacer que antes de Juego de parámetros 1 si usted preferiría no hacerlo. 75 00:04:22,120 --> 00:04:22,660 >> Está bien. 76 00:04:22,660 --> 00:04:27,180 Así que buscamos el lunes en el código fuente, pero en el contexto de un nuevo 77 00:04:27,180 --> 00:04:30,895 lenguaje de programación, a saber, C. Y C, a diferencia de los arañazos, no es gráfica. 78 00:04:30,895 --> 00:04:32,270 No es los pedazos del rompecabezas. 79 00:04:32,270 --> 00:04:34,450 Es más sintaxis similar al Inglés. 80 00:04:34,450 --> 00:04:37,140 Y hay un par de pasos involucrados en realidad, la escritura y la ejecución de un 81 00:04:37,140 --> 00:04:41,650 programa en C, ya que además de fuente código como este, necesita algo 82 00:04:41,650 --> 00:04:42,890 llamado un compilador. 83 00:04:42,890 --> 00:04:46,682 Y en términos simples, lo que Qué hace un compilador para nosotros? 84 00:04:46,682 --> 00:04:47,650 Sí. 85 00:04:47,650 --> 00:04:51,040 >> ESTUDIANTE: Convierte el código que se escribe en 0s y 1s. 86 00:04:51,040 --> 00:04:51,151 >> DAVID MALAN: Good. 87 00:04:51,151 --> 00:04:53,580 Por lo tanto, convierte el código que escribimos a 0s y 1s. 88 00:04:53,580 --> 00:04:57,730 Convierte llamado código fuente a código objeto, el último de los cuales se ve 89 00:04:57,730 --> 00:04:59,140 un poco de algo como esto. 90 00:04:59,140 --> 00:05:02,860 Y es su CPU, los cerebros dentro de su equipo, que debido a la 91 00:05:02,860 --> 00:05:06,280 personas que crearon esos equipos, saber cuáles son esas secuencias 92 00:05:06,280 --> 00:05:07,460 de 0 y 1 significa. 93 00:05:07,460 --> 00:05:08,640 >> Tal vez signifique impresión. 94 00:05:08,640 --> 00:05:10,265 Tal vez signifique adición. 95 00:05:10,265 --> 00:05:11,610 Tal vez signifique restar. 96 00:05:11,610 --> 00:05:13,350 Tal vez signifique que aparezca un gráfico. 97 00:05:13,350 --> 00:05:16,870 Hay patrones predefinidos de bits de que el mundo ha decidido media 98 00:05:16,870 --> 00:05:17,700 ciertas cosas. 99 00:05:17,700 --> 00:05:20,760 Pero en su mayor parte en este curso, vamos a trabajar en un nivel superior, y 100 00:05:20,760 --> 00:05:24,180 vamos a dar por sentado que existen cosas como los compiladores que pueden 101 00:05:24,180 --> 00:05:27,670 hacer nuestra función de código fuente en la forma en que pretendemos. 102 00:05:27,670 --> 00:05:31,660 >> Así que el programa que escribió primero la semana pasada y luego comenzó a puerto, por así 103 00:05:31,660 --> 00:05:33,920 hablar, C pasado Lunes, era esto. 104 00:05:33,920 --> 00:05:35,700 Cuando hace clic en bandera verde, saludar. 105 00:05:35,700 --> 00:05:37,430 Esto era, por supuesto, escrito en Scratch. 106 00:05:37,430 --> 00:05:40,710 Y yo decía que el equivalente programa en C se veía un poco 107 00:05:40,710 --> 00:05:41,520 algo como esto. 108 00:05:41,520 --> 00:05:45,050 >> Así que lo que pensé que lo haríamos en un principio, es decir, vamos a desmenuzar lo que parece, a primera 109 00:05:45,050 --> 00:05:48,790 vista, sin duda, la forma más justa arcana sintaxis, pero usted comenzará a notar 110 00:05:48,790 --> 00:05:50,160 patrones bastante rapidez. 111 00:05:50,160 --> 00:05:53,770 Lo que también vamos a hacer hoy es proporcionar que con un modelo mental para algunos 112 00:05:53,770 --> 00:05:57,280 , algunas construcciones estándar canónicas en la programación. 113 00:05:57,280 --> 00:06:00,420 Y luego vamos a realmente en nuestras manos sucia con algunos ejemplos también. 114 00:06:00,420 --> 00:06:04,140 >> Así que para aquellos de ustedes más cómodo, darse cuenta de que esta semana y luego la siguiente 115 00:06:04,140 --> 00:06:05,940 semana puede muy bien ser un poco de revisión. 116 00:06:05,940 --> 00:06:08,810 Pero sobre todo cuando la edición pirata del problema de conjunto 1 se apaga en el 117 00:06:08,810 --> 00:06:12,330 la página web del curso el viernes, yo creo usted encontrará que incluso cuando usted completa 118 00:06:12,330 --> 00:06:15,390 algunos espacios en blanco durante la próxima semana o dos, usted comenzará a acercarse cada vez más 119 00:06:15,390 --> 00:06:18,410 desafiado y encuentro nuevas y más nuevas cosas. 120 00:06:18,410 --> 00:06:21,310 >> Así que vamos burlan de este programa, aparte unas pocas líneas a la vez. 121 00:06:21,310 --> 00:06:24,140 En la parte superior, tenemos lo que es técnicamente se llama una 122 00:06:24,140 --> 00:06:25,950 directiva de preprocesador. 123 00:06:25,950 --> 00:06:30,510 Esto es sólo una línea de código que dice para incluir el contenido de un archivo, 124 00:06:30,510 --> 00:06:35,080 llamada I estándar / N, entrada estándar - o, lo siento, E / S estándar, estándar 125 00:06:35,080 --> 00:06:38,670 de entrada / salida,. h, dentro de de mi propio programa. 126 00:06:38,670 --> 00:06:41,670 >> En otras palabras, si yo escribí este programa con un simple editor de texto como 127 00:06:41,670 --> 00:06:45,260 gedit, el equivalente más simple de algo como Microsoft Word, que 128 00:06:45,260 --> 00:06:50,970 instrucción # include stdio.h, es sólo va a indicar al compilador, tome el 129 00:06:50,970 --> 00:06:56,080 contenido de ese otro archivo, stdio.h, y pegarlos aquí. 130 00:06:56,080 --> 00:06:57,090 >> Ahora, ¿por qué me importa? 131 00:06:57,090 --> 00:07:01,850 ¿Qué fue lo que decimos que hay dentro de este archivo llamado stdio.h, que se almacena 132 00:07:01,850 --> 00:07:05,490 en algún lugar de mi disco duro, o en este caso, en alguna parte del aparato CS50? 133 00:07:05,490 --> 00:07:06,635 Alguien lo puso allí para mí. 134 00:07:06,635 --> 00:07:09,910 Pero lo que está en él? 135 00:07:09,910 --> 00:07:13,020 >> Sí, por lo que es una declaración de una función llamada printf. 136 00:07:13,020 --> 00:07:17,400 Así printf recuerda la función que muestra las palabras y los caracteres y 137 00:07:17,400 --> 00:07:20,160 los números en la pantalla a mis órdenes. 138 00:07:20,160 --> 00:07:21,220 Pero yo no lo escribí. 139 00:07:21,220 --> 00:07:22,230 CS50 no lo escribió. 140 00:07:22,230 --> 00:07:26,990 Hace años alguien escribió, y que básicamente nos dio la receta para que 141 00:07:26,990 --> 00:07:29,110 en un archivo llamado stdio.h. 142 00:07:29,110 --> 00:07:33,240 Así que la primera línea justo me da acceso a las funciones que otra persona 143 00:07:33,240 --> 00:07:36,500 escribió hace años, entre que son printf. 144 00:07:36,500 --> 00:07:39,450 >> Ahora, la línea siguiente que voy a saludar a mi mano, por lo menos hasta la próxima semana. 145 00:07:39,450 --> 00:07:43,620 Pero por ahora, sabemos que int main (void) es esencialmente el equivalente de esta 146 00:07:43,620 --> 00:07:46,310 pieza del rompecabezas de color amarillo cuando bandera verde hizo clic. 147 00:07:46,310 --> 00:07:49,510 El mundo, hace años, decidió que si usted está escribiendo un programa en el 148 00:07:49,510 --> 00:07:53,150 lenguaje llamado C, se inicia su programa con una línea 149 00:07:53,150 --> 00:07:54,410 que se parece a eso. 150 00:07:54,410 --> 00:07:57,650 En casi una semana, que va a hacer sentir lo que int es, lo que es vacío. 151 00:07:57,650 --> 00:08:00,840 Pero por ahora, sólo pensar en ello ya que esta pieza del rompecabezas de color amarillo. 152 00:08:00,840 --> 00:08:04,550 >> Ahora siguiente, tenemos una llave seguido por otra llave de cierre, 153 00:08:04,550 --> 00:08:05,240 por así decirlo. 154 00:08:05,240 --> 00:08:07,430 Y veremos a lo largo de estos programas en C, así como 155 00:08:07,430 --> 00:08:08,930 JavaScript y PHP. 156 00:08:08,930 --> 00:08:11,345 Y estos sólo encapsulan líneas relacionadas de código. 157 00:08:11,345 --> 00:08:14,600 La llave de apertura en esencia dice, aquí viene algo de código. 158 00:08:14,600 --> 00:08:17,590 Y la llave de cierre, que es en ángulo en la otra dirección, sólo 159 00:08:17,590 --> 00:08:19,920 medios, eso es todo por el código correspondiente. 160 00:08:19,920 --> 00:08:22,970 >> Así que la jugosa en este primer programa es el último, printf, 161 00:08:22,970 --> 00:08:25,080 entre comillas, hola mundo. 162 00:08:25,080 --> 00:08:30,670 Y llamé a la cosa entre cita a lo que la última vez? 163 00:08:30,670 --> 00:08:31,285 Así que es una cadena. 164 00:08:31,285 --> 00:08:35,309 Y una cadena es sólo el aficionado a la tecnología plazo para una secuencia de 165 00:08:35,309 --> 00:08:37,169 personajes, una palabra, una frase. 166 00:08:37,169 --> 00:08:39,380 Incluso una sola carta podría estar entre comillas dobles. 167 00:08:39,380 --> 00:08:41,840 Pero es una secuencia de cero o más caracteres. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, sin embargo, se ve un poco extraño. 169 00:08:43,650 --> 00:08:46,290 Pero simplemente significaba algo sencilla al ordenador. 170 00:08:46,290 --> 00:08:48,060 ¿Qué es la barra invertida-n? 171 00:08:48,060 --> 00:08:48,570 Nueva línea. 172 00:08:48,570 --> 00:08:52,490 Así que eso es sólo la secuencia especial de personajes que el mundo ha decidido 173 00:08:52,490 --> 00:08:56,880 medios poner un salto de línea justo ahí, porque el compilador conseguirá realmente 174 00:08:56,880 --> 00:09:02,280 confuso, por lo general, si, muy como es comprensible, pero incorrectamente, simplemente 175 00:09:02,280 --> 00:09:04,570 comenzar a golpear Enter para poner nuevas líneas en su código. 176 00:09:04,570 --> 00:09:07,150 ¡Tienes que ser un poco más explícita con barra invertida-n. 177 00:09:07,150 --> 00:09:10,540 >> Y veremos que hay algunos otros tales patrones de caracteres especiales. 178 00:09:10,540 --> 00:09:14,340 Por ejemplo, si desea dejar que su mente vagar a un caso de la esquina, 179 00:09:14,340 --> 00:09:18,080 Supongo que quería imprimir un comillas dobles en la pantalla durante 180 00:09:18,080 --> 00:09:21,840 la razón que sea, eso parecería ser un poco problemático, ¿no? 181 00:09:21,840 --> 00:09:24,990 Porque si pongo una doble cita en el medio de "hola, mundo", para lo que 182 00:09:24,990 --> 00:09:30,120 razón, ¿por qué tiene eso parece potencialmente problemático? 183 00:09:30,120 --> 00:09:32,180 Se rompe la cadena. 184 00:09:32,180 --> 00:09:34,700 >> El compilador es sólo un programa. 185 00:09:34,700 --> 00:09:37,210 Un programa como un compilador es sólo va leer su código de arriba a abajo, 186 00:09:37,210 --> 00:09:37,990 izquierda a derecha. 187 00:09:37,990 --> 00:09:41,850 Y si ve tres comillas dobles en lugar de dos, no va a saber 188 00:09:41,850 --> 00:09:45,210 si te refieres a que la cosa a la izquierda debe ser la cadena, o lo que hay que 189 00:09:45,210 --> 00:09:46,570 la derecha, o la cosa entera. 190 00:09:46,570 --> 00:09:50,560 Es ambiguo, por lo que lo que es un típico compilador no es sólo asuste, 191 00:09:50,560 --> 00:09:53,710 y le dará algún mensaje de error, y hacer a lidiar con el problema. 192 00:09:53,710 --> 00:09:58,120 >> Así que teniendo en cuenta que la barra invertida-n significa un nuevo line, lo que haría con sus instintos ahora 193 00:09:58,120 --> 00:10:02,610 comenzará a ser si querías incluir algo anómalo como una doble 194 00:10:02,610 --> 00:10:06,210 Interior de la cita de esta cita de otra manera- cuerda? 195 00:10:06,210 --> 00:10:07,640 Quote-Barra invertida doble. 196 00:10:07,640 --> 00:10:09,630 Y así que veremos este tipo de patrón también. 197 00:10:09,630 --> 00:10:12,490 >> Si quieres hacer algo un poco extraño, usted encontrará que la 198 00:10:12,490 --> 00:10:15,060 soluciones suelen seguir un patrón, y la barra invertida 199 00:10:15,060 --> 00:10:17,150 denota una secuencia de escape. 200 00:10:17,150 --> 00:10:20,320 Y sólo significa algo especial que tenemos que representar en un 201 00:10:20,320 --> 00:10:21,060 diferente manera. 202 00:10:21,060 --> 00:10:23,830 En cuanto a cómo usted representa una barra invertida, bueno, vamos a 203 00:10:23,830 --> 00:10:24,550 Volveré sobre este punto. 204 00:10:24,550 --> 00:10:26,930 Pero la respuesta, también, es en realidad un poco obvio. 205 00:10:26,930 --> 00:10:31,080 >> Así que ahora vamos a introducir alguna otra construcciones de programación 206 00:10:31,080 --> 00:10:31,915 que vio en Scratch. 207 00:10:31,915 --> 00:10:34,790 Usted probablemente ha tomado por sentado ya si ya ha buceado en 208 00:10:34,790 --> 00:10:36,060 problema establece 0. 209 00:10:36,060 --> 00:10:40,950 Pero ahora vamos a introducir la sintaxis de C para éstos de otra manera bastante intuitiva 210 00:10:40,950 --> 00:10:42,300 ideas, al menos algunos de ellos. 211 00:10:42,300 --> 00:10:45,570 >> Así que esta noción de una condición o una rama, mientras que antes nos 212 00:10:45,570 --> 00:10:49,330 representado con el código que se veía como esta a la izquierda en Scratch - 213 00:10:49,330 --> 00:10:52,200 si x es menor que y, entonces dígalo - 214 00:10:52,200 --> 00:10:56,760 en cambio ahora en C - permítanme afilar en en el caso más sencillo - 215 00:10:56,760 --> 00:11:01,235 estamos simplemente va a decir, si, abierto paréntesis, algo es cierto - un 216 00:11:01,235 --> 00:11:04,190 Expresión booleana se va a ir donde he dicho estado - 217 00:11:04,190 --> 00:11:08,170 paréntesis de cierre, a continuación, hacer lo que es dentro de esas llaves. 218 00:11:08,170 --> 00:11:11,020 >> Así que aquí, también, las llaves son una especie de Scratch 219 00:11:11,020 --> 00:11:12,460 Piezas de un rompecabezas en forma de U. 220 00:11:12,460 --> 00:11:14,890 Haz lo que hay dentro de estas llaves. 221 00:11:14,890 --> 00:11:16,790 En este caso, slash slash. 222 00:11:16,790 --> 00:11:19,720 Y note que este es un avance recortar, no una barra invertida. 223 00:11:19,720 --> 00:11:21,440 Barra inclinada, barra inclinada, para aquellos que han programado 224 00:11:21,440 --> 00:11:23,370 antes, sólo significa - 225 00:11:23,370 --> 00:11:24,190 es sólo un comentario. 226 00:11:24,190 --> 00:11:26,630 Un comentario no es una línea de código, per se. 227 00:11:26,630 --> 00:11:30,200 Es una línea de Inglés que usted, el humana, han escrito a usted para 228 00:11:30,200 --> 00:11:33,540 tal vez le recuerde a hacer algo, explicar a ti mismo, para explicar a los 229 00:11:33,540 --> 00:11:35,260 otra persona, lo que su código está haciendo. 230 00:11:35,260 --> 00:11:37,050 Es sólo un comentario descriptivo. 231 00:11:37,050 --> 00:11:40,880 >> Ahora, por supuesto, podemos tener una de dos vías tenedor en la carretera justo al hacer esto, un 232 00:11:40,880 --> 00:11:43,930 de tres vías tenedor en el camino haciendo esto, y si continúa esta 233 00:11:43,930 --> 00:11:47,570 patrón, usted puede tener de cuatro vías, cinco vías, seis posiciones bifurcaciones en el camino si 234 00:11:47,570 --> 00:11:50,150 usted necesita para manejar, de hecho, que muchas condiciones. 235 00:11:50,150 --> 00:11:52,010 Y luego notar el paralelismo aquí - 236 00:11:52,010 --> 00:11:55,070 if (condición), else if (condición), y el único que es un poco 237 00:11:55,070 --> 00:11:58,010 extraño es la última, que es sólo que más. 238 00:11:58,010 --> 00:12:01,170 Pero de nuevo, esto es idéntico, conceptualmente, a lo que hemos hecho 239 00:12:01,170 --> 00:12:04,690 ya, a pesar de que la sintaxis se tomar un poco acostumbrarse. 240 00:12:04,690 --> 00:12:07,730 >> Ahora, en este ejemplo, hay alguna otra sintaxis extraña. 241 00:12:07,730 --> 00:12:11,220 Vemos printf nuevo, paréntesis de apertura, y paréntesis de cierre. 242 00:12:11,220 --> 00:12:13,190 Y en el interior de haya una cadena entre comillas. 243 00:12:13,190 --> 00:12:17,060 Los paréntesis, en el contexto de printf, vaya a la izquierda 244 00:12:17,060 --> 00:12:18,160 y el derecho de qué? 245 00:12:18,160 --> 00:12:22,190 ¿Qué es lo que describimos el indicado cadena como más en general? 246 00:12:22,190 --> 00:12:23,320 >> Así que es un argumento. 247 00:12:23,320 --> 00:12:26,620 Cada vez que tenga una función, al igual que printf, y luego un paréntesis de abiertos y una 248 00:12:26,620 --> 00:12:30,330 cerca paren y algo dentro de que, si se trata de una cadena, o un 249 00:12:30,330 --> 00:12:34,420 número entero, o cualquier otra cosa, la cosa en entre los paréntesis, se llama 250 00:12:34,420 --> 00:12:35,110 un argumento. 251 00:12:35,110 --> 00:12:37,910 >> Y un argumento sólo influye el comportamiento de la función. 252 00:12:37,910 --> 00:12:39,990 En este caso, es bastante claro cómo. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 Y printf va a imprimir exactamente eso. 255 00:12:47,720 --> 00:12:51,590 Porque sin duda, hace los años-persona quien implementado printf no tenía ni idea 256 00:12:51,590 --> 00:12:55,000 lo que los sucesores humanos eran va a usar printf para. 257 00:12:55,000 --> 00:12:58,610 Así que por eso existen argumentos, a influyen en el comportamiento después de una función 258 00:12:58,610 --> 00:12:59,450 ha escrito. 259 00:12:59,450 --> 00:13:00,780 >> Ahora bien, la expresión booleana. 260 00:13:00,780 --> 00:13:02,470 Hemos visto estos antes de Scratch. 261 00:13:02,470 --> 00:13:06,680 Resulta que en C también puede "o" juntos, por así decirlo. 262 00:13:06,680 --> 00:13:10,930 Dos barras verticales significa que este bloque del código, esto lo hace, se 263 00:13:10,930 --> 00:13:15,350 ejecutar si la primera condición es verdadera o la segunda condición es verdadera. 264 00:13:15,350 --> 00:13:17,710 Y a pesar de que no podría haber hecho esto en Scratch, usted podría de hecho 265 00:13:17,710 --> 00:13:20,580 hacer esto en Scratch, y también puede expresarse de manera diferente - 266 00:13:20,580 --> 00:13:25,300 Si la primera condición y la segunda condiciones son verdaderas, entonces ¿cuál es 267 00:13:25,300 --> 00:13:27,160 dentro de las llaves. 268 00:13:27,160 --> 00:13:31,210 >> Y así como un aparte, la razón es un signo doble y un doble 269 00:13:31,210 --> 00:13:34,610 barra vertical, ya veremos con el tiempo que una sola barra vertical y una 270 00:13:34,610 --> 00:13:38,710 signo único en realidad tienen diferentes significado en C. Así que por ahora, 271 00:13:38,710 --> 00:13:41,840 que la duplicación de símbolos es intencional. 272 00:13:41,840 --> 00:13:45,070 >> Así que vamos a introducir brevemente este otro poco de sintaxis. 273 00:13:45,070 --> 00:13:48,940 Esto no acaba de llevar a Cero, pero afirmo que puedo 274 00:13:48,940 --> 00:13:55,190 poner en práctica la idea de un caso más, si otra cosa, si bien, si else utilizando 275 00:13:55,190 --> 00:13:56,760 algo que se llama una sentencia switch. 276 00:13:56,760 --> 00:14:00,820 Y la única razón de que esto realmente existe es que usted acaba de dar, el programador, un 277 00:14:00,820 --> 00:14:05,470 ligeramente diferente manera de resolver algunos problema, aunque, lógicamente, 278 00:14:05,470 --> 00:14:07,340 no te da ningún nuevas capacidades. 279 00:14:07,340 --> 00:14:08,530 >> Con esto quiero decir esto. 280 00:14:08,530 --> 00:14:13,330 Cuando dices interruptor, y luego un espacio, y luego un par de paréntesis, dentro de 281 00:14:13,330 --> 00:14:14,570 de los cuales pasa una expresión - 282 00:14:14,570 --> 00:14:18,010 y esto podría ser un poco no evidente al principio, pero esto no es un argumento, 283 00:14:18,010 --> 00:14:20,680 técnicamente, porque el interruptor no es una función. 284 00:14:20,680 --> 00:14:24,230 Así que por ahora, sólo suponemos que estamos utilizando paréntesis en diferentes lugares 285 00:14:24,230 --> 00:14:25,250 por diferentes razones. 286 00:14:25,250 --> 00:14:29,310 >> Así interruptor en la expresión significa que puedo poner una variable dentro de los 287 00:14:29,310 --> 00:14:31,350 paréntesis donde dice expresión. 288 00:14:31,350 --> 00:14:33,090 Y luego, si esa variable - 289 00:14:33,090 --> 00:14:35,400 supongamos que se llama x, y es sólo un número entero - 290 00:14:35,400 --> 00:14:38,900 Entonces puedo enumerar en mi diapositiva aquí algo como esto. 291 00:14:38,900 --> 00:14:41,690 Si x es mi variable y yo querer hacer algo si x 292 00:14:41,690 --> 00:14:43,480 es igual a 1, no puedo hacer eso. 293 00:14:43,480 --> 00:14:46,660 >> Si en lugar quiero hacer algo si x es 2, no puedo hacer eso. 294 00:14:46,660 --> 00:14:50,390 Si no, si quiero hacer algo más por completo, puedo tener un caso por defecto en 295 00:14:50,390 --> 00:14:52,750 cuyo caso lo hago otra cosa. 296 00:14:52,750 --> 00:14:58,730 Así que en ese sentido, que es equivalente a un si x es igual a es igual a 1, de lo contrario, si los demás, 297 00:14:58,730 --> 00:15:01,150 pero lo menciono ahora porque vamos a ver de nuevo. 298 00:15:01,150 --> 00:15:03,720 Pero, por ahora, sólo sé que existe. 299 00:15:03,720 --> 00:15:04,220 >> Está bien. 300 00:15:04,220 --> 00:15:07,660 Así que estos últimos son un poco más complejo a primera vista, pero lo hacen 301 00:15:07,660 --> 00:15:09,385 algo bastante sencillo. 302 00:15:09,385 --> 00:15:14,410 Un bucle for en C es un trozo de código que apenas hace algo nuevo y 303 00:15:14,410 --> 00:15:15,330 una y otra vez. 304 00:15:15,330 --> 00:15:17,590 Y la única cosa molesta de esto es es decir que es un poco críptico 305 00:15:17,590 --> 00:15:21,380 de expresarse en este cíclica patrón, pero el mundo estandarizado en 306 00:15:21,380 --> 00:15:22,450 de la siguiente manera. 307 00:15:22,450 --> 00:15:25,760 >> Cuando se utiliza un bucle for, tienes un par de paréntesis más. 308 00:15:25,760 --> 00:15:27,570 Y note los dos puntos y comas en ese país. 309 00:15:27,570 --> 00:15:34,380 Esos dos puntos y comas separan tres diferentes expresiones dentro del 310 00:15:34,380 --> 00:15:35,020 paréntesis. 311 00:15:35,020 --> 00:15:37,170 Uno de ellos es los llamados inicializaciones. 312 00:15:37,170 --> 00:15:38,830 Una de ellas es la condición llamada. 313 00:15:38,830 --> 00:15:40,210 Y uno es el llamado actualizaciones. 314 00:15:40,210 --> 00:15:43,240 >> Mirado en abstracto, esto es completamente no-obvio, así que echemos un vistazo 315 00:15:43,240 --> 00:15:44,630 en un ejemplo concreto. 316 00:15:44,630 --> 00:15:46,720 En los arañazos que tenía un bloque de repetición. 317 00:15:46,720 --> 00:15:50,670 Y este bloque dijo repita 10 veces, dicen "Hola, mundo". Permítanme reclamo para 318 00:15:50,670 --> 00:15:53,810 ahora, y vamos a volver a esto, y esto, también, se pondrá más familiar para 319 00:15:53,810 --> 00:15:57,345 que en poco tiempo, el equivalente C código podría decirse que esta - 320 00:15:57,345 --> 00:16:02,320 una instrucción y un espacio, un par de paréntesis, observe los puntos y comas en 321 00:16:02,320 --> 00:16:05,730 allí, que separan tres canales distintos cosas, la inicialización, el 322 00:16:05,730 --> 00:16:07,320 condición, y la actualización. 323 00:16:07,320 --> 00:16:08,840 >> Y tomar una conjetura de lo el primero está haciendo. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 En términos sencillos áspero, lo que es que hacer para nosotros, probablemente? 326 00:16:15,120 --> 00:16:15,590 Así que sí. 327 00:16:15,590 --> 00:16:19,630 Se declara una variable llamada i, y que está dando lo que de valor? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Así que está creando una variable llamada i, almacenar el valor 0 en el mismo. 330 00:16:24,280 --> 00:16:26,420 Esa es la llamada de inicialización. 331 00:16:26,420 --> 00:16:29,360 >> Muy bien, ahora lo alegó ante que la cosa medio, i 332 00:16:29,360 --> 00:16:31,760 <10, es la condición. 333 00:16:31,760 --> 00:16:32,730 Entonces, ¿qué está haciendo? 334 00:16:32,730 --> 00:16:36,560 Pues bien, lo que el bucle for hace cuando un programa con un bucle se ejecuta, es 335 00:16:36,560 --> 00:16:41,050 cada vez que el equipo se ejecuta a través de este bucle, de arriba abajo, de arriba a 336 00:16:41,050 --> 00:16:43,740 parte inferior, al igual que ustedes hicieron cuando contando a sí mismos y se sentó, 337 00:16:43,740 --> 00:16:47,090 una y otra vez y otra vez, el equipo va 338 00:16:47,090 --> 00:16:48,560 para comprobar dicha condición. 339 00:16:48,560 --> 00:16:51,140 Y si i es menor que 10, lo hará de nuevo. 340 00:16:51,140 --> 00:16:53,100 Si i es menor que 10, lo hará de nuevo. 341 00:16:53,100 --> 00:16:55,030 Si i es inferior a diez, lo hará de nuevo. 342 00:16:55,030 --> 00:16:57,330 Así que parece sugerir que espero i está cambiando. 343 00:16:57,330 --> 00:16:59,010 De lo contrario, tendríamos un bucle infinito. 344 00:16:59,010 --> 00:17:02,590 Y, de hecho, i está cambiando, porque la Lo pasado, después del punto y coma que hay 345 00:17:02,590 --> 00:17:05,569 es la sintaxis un tanto críptica de i + +. 346 00:17:05,569 --> 00:17:07,630 Pero aquellos de ustedes que han hecho esto antes, eso sólo significa 347 00:17:07,630 --> 00:17:08,609 sencillamente, qué? 348 00:17:08,609 --> 00:17:09,730 >> ESTUDIANTES: [VOCES interponiendo]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID MALAN: Agrega 1 a i. 350 00:17:10,740 --> 00:17:11,819 Incrementar i. 351 00:17:11,819 --> 00:17:13,910 Así que vimos un rompecabezas de Scratch piece Para eso, en realidad. 352 00:17:13,910 --> 00:17:18,230 No se veía como i + +, pero eso sólo medios, simplemente, incrementar el 353 00:17:18,230 --> 00:17:24,040 valor i en 1 cada vez que se hace esto. 354 00:17:24,040 --> 00:17:26,910 Así que, literalmente, se empieza por inicializar i a 0. 355 00:17:26,910 --> 00:17:29,520 A continuación, comprueba su estado. 356 00:17:29,520 --> 00:17:31,070 Es 0 a menos de 10? 357 00:17:31,070 --> 00:17:31,730 Sí. 358 00:17:31,730 --> 00:17:32,910 Vamos a través del bucle. 359 00:17:32,910 --> 00:17:35,150 >> Lo siguiente que reclamo el ordenador del vamos a hacer es que va 360 00:17:35,150 --> 00:17:35,910 para incrementar i. 361 00:17:35,910 --> 00:17:37,080 Así que ahora es de 1. 362 00:17:37,080 --> 00:17:37,940 Se comprueba la condición. 363 00:17:37,940 --> 00:17:39,290 Es 1 menor de 10? 364 00:17:39,290 --> 00:17:39,930 Por supuesto. 365 00:17:39,930 --> 00:17:41,030 Así lo hace de nuevo. 366 00:17:41,030 --> 00:17:43,580 Luego se incrementa i + + a 2. 367 00:17:43,580 --> 00:17:44,610 Es 2 menos de 10? 368 00:17:44,610 --> 00:17:45,230 Sí. 369 00:17:45,230 --> 00:17:46,670 Y una y otra vez y otra vez. 370 00:17:46,670 --> 00:17:50,070 Y finalmente, debido a la plus-plussing, llegamos a i es igual a 10. 371 00:17:50,070 --> 00:17:51,675 Es 10 menor que 10? 372 00:17:51,675 --> 00:17:52,990 Bueno, obviamente no. 373 00:17:52,990 --> 00:17:55,320 Y ese es el punto en el que el bucle sólo se detiene. 374 00:17:55,320 --> 00:17:58,320 Y si tiene más código en el pantalla de abajo, el equipo 375 00:17:58,320 --> 00:18:01,620 procede a ejecutar ese código en su lugar. 376 00:18:01,620 --> 00:18:05,380 >> Así que de nuevo, a pesar de que esto va a verse y sentirse un poco extraño al 377 00:18:05,380 --> 00:18:07,830 primero, sin duda para aquellos de ustedes que nunca han programado antes, 378 00:18:07,830 --> 00:18:11,640 literalmente reduce conceptualmente a lo que es por lo demás un muy 379 00:18:11,640 --> 00:18:14,330 rompecabezas sencillo pieza en Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Muy bien, me prometí que no habría haber otros análogos en los arañazos. 381 00:18:19,130 --> 00:18:20,060 Hay esta también. 382 00:18:20,060 --> 00:18:21,700 Y vimos brevemente esta última vez. 383 00:18:21,700 --> 00:18:23,530 Pero recuerde siempre el bloquear en cero? 384 00:18:23,530 --> 00:18:25,490 Simplemente hace algo para siempre? 385 00:18:25,490 --> 00:18:27,470 Afirmé que usted podría aplicar esto en esta forma. 386 00:18:27,470 --> 00:18:29,740 Y en realidad se puede poner en práctica esta en un montón de diferentes maneras. 387 00:18:29,740 --> 00:18:34,260 >> Pero el bucle while es sólo una diferente forma en C de expresarse. 388 00:18:34,260 --> 00:18:37,080 Al final del día, no se puede hacer cualquier cosa con un bucle while que 389 00:18:37,080 --> 00:18:38,360 no puede con un bucle for. 390 00:18:38,360 --> 00:18:41,430 Así que están al final de la día funcionalmente la misma. 391 00:18:41,430 --> 00:18:43,840 Pero permite que usted se exprese un poco diferente en 392 00:18:43,840 --> 00:18:44,850 de la siguiente manera. 393 00:18:44,850 --> 00:18:49,720 >> Con el bucle while, que es lo que está en paréntesis que se comprueban una y otra 394 00:18:49,720 --> 00:18:51,050 una y otra vez. 395 00:18:51,050 --> 00:18:55,100 Y tan pronto como la expresión es falsa, a continuación, el bucle deja de ejecutarse, 396 00:18:55,100 --> 00:18:57,890 y el ordenador procede a ejecutar cualquier otro código que 397 00:18:57,890 --> 00:18:59,230 tener en su archivo. 398 00:18:59,230 --> 00:19:02,180 >> Pero lo que es interesante aquí es que literalmente escribí cierto. 399 00:19:02,180 --> 00:19:06,680 Y fiel es un tipo de valor booleano, un valor verdadero o falso. 400 00:19:06,680 --> 00:19:09,750 Así que podrían convertirse en realidad nunca false si tengo literalmente 401 00:19:09,750 --> 00:19:11,970 modificable en mi programa? 402 00:19:11,970 --> 00:19:12,470 Así que no. 403 00:19:12,470 --> 00:19:13,730 Es un poco extraño que yo hice esto. 404 00:19:13,730 --> 00:19:15,190 Pero cierto es cierto. 405 00:19:15,190 --> 00:19:16,320 No hay más-plussing. 406 00:19:16,320 --> 00:19:17,820 No hay uso de variables aquí. 407 00:19:17,820 --> 00:19:22,740 Así que porque hardcodeada mientras es verdad, esto bucle siempre va a evaluar 408 00:19:22,740 --> 00:19:24,090 una y otra vez y otra vez. 409 00:19:24,090 --> 00:19:27,660 >> Entonces, ¿cuántas veces es hola mundo va a imprimir en la pantalla? 410 00:19:27,660 --> 00:19:28,170 Para siempre. 411 00:19:28,170 --> 00:19:31,980 Un número infinito de veces hasta que el batería se agota o alguna otra externa 412 00:19:31,980 --> 00:19:32,730 evento ocurre. 413 00:19:32,730 --> 00:19:35,880 Así que esto no es probablemente el mejor programa para escribir, porque si el usuario 414 00:19:35,880 --> 00:19:38,660 nunca puede salir del programa, es probablemente no es lo que usted pretende. 415 00:19:38,660 --> 00:19:41,070 >> Pero a veces, los programas deberían tener un bucle infinito. 416 00:19:41,070 --> 00:19:44,050 Por ejemplo, si el equipo tiene un reloj en él, sin duda sería 417 00:19:44,050 --> 00:19:48,130 bueno si el reloj que no seguir actualizando sí para siempre, aunque una vez al 418 00:19:48,130 --> 00:19:50,500 segundos o una vez por minuto o algo así. 419 00:19:50,500 --> 00:19:53,690 Así que incluso bucles infinitos tienen su lugar. 420 00:19:53,690 --> 00:19:54,360 >> Está bien. 421 00:19:54,360 --> 00:19:55,190 Por último, esta. 422 00:19:55,190 --> 00:19:57,770 Y éste es un poco diferente funcionalmente, y vamos a volver a 423 00:19:57,770 --> 00:19:59,460 esto probablemente en juego de parámetros 1. 424 00:19:59,460 --> 00:20:02,370 Pero hay otro tipo de bucle llamado bucle do while. 425 00:20:02,370 --> 00:20:07,100 Y la única diferencia aquí entre un hacer mientras bucle y, por ejemplo, un bucle while, 426 00:20:07,100 --> 00:20:11,120 es que la condición no se comprueba antes de ejecutar el código, pero después 427 00:20:11,120 --> 00:20:12,080 se ejecuta el código. 428 00:20:12,080 --> 00:20:15,380 Así que en la parte superior, mientras que para el lazo, mientras que el do while 429 00:20:15,380 --> 00:20:16,560 comprueba que en la parte inferior. 430 00:20:16,560 --> 00:20:21,370 >> Y esto sólo significa que el bucle while típicamente ejecutar más veces 431 00:20:21,370 --> 00:20:24,630 o menos veces de las que un bucle while? 432 00:20:24,630 --> 00:20:30,810 Potencialmente más veces, porque un do while está diciendo claramente lo hace, 433 00:20:30,810 --> 00:20:34,600 sólo después de ese momento usted comprueba si la condición interior de la 434 00:20:34,600 --> 00:20:35,980 paréntesis, es cierto. 435 00:20:35,980 --> 00:20:37,940 >> Así que vamos a ver esto de nuevo probablemente en juego de parámetros 1. 436 00:20:37,940 --> 00:20:41,150 Si alguna vez quieres hacer algo al menos una vez y luego tal vez un poco más 437 00:20:41,150 --> 00:20:43,350 veces, este es un buen construir a utilizar. 438 00:20:43,350 --> 00:20:46,970 Pero un bucle while, por el contrario, se comprobar su estado primero. 439 00:20:46,970 --> 00:20:50,660 Y eso es todo por bucles en c, mientras que, al tiempo, y los bucles. 440 00:20:50,660 --> 00:20:54,700 Y de nuevo, se asignan bastante bien de nuevo a la altura, a menos que éste no 441 00:20:54,700 --> 00:20:57,350 bastante tener el mismo análogo en Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Bueno, ¿qué, ahora, las variables? 443 00:20:58,880 --> 00:21:02,600 Así que así es como me declaré una variable sintácticamente el otro día. 444 00:21:02,600 --> 00:21:06,440 Tuve un int, que reclamé es un número entero. 445 00:21:06,440 --> 00:21:09,690 Entonces tuve una variable llamada contador, y luego un punto y coma. 446 00:21:09,690 --> 00:21:11,070 Entonces, ¿qué es esta línea de código hace? 447 00:21:11,070 --> 00:21:14,540 Esto es, simplemente, que declara una variable - 448 00:21:14,540 --> 00:21:17,940 es decir, pedir a la computadora, dame algo de memoria, dame algunos bits - en 449 00:21:17,940 --> 00:21:19,450 que puedo almacenar qué? 450 00:21:19,450 --> 00:21:20,300 Un int. 451 00:21:20,300 --> 00:21:23,570 Y el punto y coma sólo significa final de la línea de código. 452 00:21:23,570 --> 00:21:25,500 >> Ahora, la segunda línea es probablemente bastante fácil de adivinar. 453 00:21:25,500 --> 00:21:29,710 ¿Qué es el contador = 0; haciendo? 454 00:21:29,710 --> 00:21:31,690 Está asignando 0 al marcador. 455 00:21:31,690 --> 00:21:33,470 Y así, esta es la otra cosa eso es un poco molesto 456 00:21:33,470 --> 00:21:34,540 en comparación, por ejemplo, el álgebra. 457 00:21:34,540 --> 00:21:39,110 Mientras que en el álgebra, significa el signo igual iguales, aquí en C, la igualdad de 458 00:21:39,110 --> 00:21:40,470 señal significa asignación. 459 00:21:40,470 --> 00:21:45,380 Por lo tanto, significa poner lo que está en la derecha en lo que está en la izquierda. 460 00:21:45,380 --> 00:21:49,030 Y vamos a ver otro símbolo, es igual iguales, cuando queremos probar en realidad 461 00:21:49,030 --> 00:21:50,570 por la calidad, un tanto molesto. 462 00:21:50,570 --> 00:21:52,590 >> Pero esto es un poco ineficiente. 463 00:21:52,590 --> 00:21:55,090 Es un poco molesto que tengo para declarar una variable y 464 00:21:55,090 --> 00:21:56,110 y luego darle un valor. 465 00:21:56,110 --> 00:21:59,380 Así que en realidad C nos permite simplificar este y acaba de hacerlo todo a la vez. 466 00:21:59,380 --> 00:22:01,330 Usted puede declarar la variable a la izquierda. 467 00:22:01,330 --> 00:22:04,590 Usted todavía puede hacer el trabajo en la derecho al poner ese signo de igual 468 00:22:04,590 --> 00:22:05,030 el medio. 469 00:22:05,030 --> 00:22:08,740 Así que al final de la día, estos dos son equivalente, pero éste, francamente, 470 00:22:08,740 --> 00:22:11,840 es probablemente el mejor hábito para entrar sólo porque es un poco menos 471 00:22:11,840 --> 00:22:15,040 código, que es un poco más fácil de leer, y que sólo se contrae 472 00:22:15,040 --> 00:22:17,470 su código, por así decirlo. 473 00:22:17,470 --> 00:22:22,120 >> Cualquier pregunta hasta el momento en los bucles, sobre las variables, las condiciones, en 474 00:22:22,120 --> 00:22:27,001 Booleanos, ya sea técnicamente o conceptual? 475 00:22:27,001 --> 00:22:28,010 Está bien. 476 00:22:28,010 --> 00:22:30,690 Así que ahora esta próxima consigue un poco más interesante. 477 00:22:30,690 --> 00:22:34,790 Y este es el ejemplo que puse última tiempo que sólo asigna un ejemplo de Scratch 478 00:22:34,790 --> 00:22:35,820 a C. 479 00:22:35,820 --> 00:22:36,580 >> Por lo tanto una función. 480 00:22:36,580 --> 00:22:38,110 En términos sencillos, ¿qué es una función? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Tengo que ser más audaces con su respuesta. 483 00:22:44,350 --> 00:22:45,020 ¿Qué es una función? 484 00:22:45,020 --> 00:22:46,320 >> ESTUDIANTE: ¿Tiene algo. 485 00:22:46,320 --> 00:22:46,780 >> DAVID MALAN: ¿Qué es eso? 486 00:22:46,780 --> 00:22:48,000 >> ESTUDIANTE: ¿Tiene algo. 487 00:22:48,000 --> 00:22:48,710 >> DAVID MALAN: ¿Tiene algo. 488 00:22:48,710 --> 00:22:49,000 Aceptar. 489 00:22:49,000 --> 00:22:49,590 Vamos a empezar por ahí. 490 00:22:49,590 --> 00:22:51,270 Así que una función no hace algo. 491 00:22:51,270 --> 00:22:55,160 Así que es un pedazo de código que es esencialmente implementado en otros lugares que 492 00:22:55,160 --> 00:22:56,620 En efecto, dice algo. 493 00:22:56,620 --> 00:23:00,180 Ahora, lo interesante de una función es que puede tomar la entrada, 494 00:23:00,180 --> 00:23:02,710 y se puede producir una salida. 495 00:23:02,710 --> 00:23:05,090 Y seamos realmente toman un vistazo a esto. 496 00:23:05,090 --> 00:23:09,030 >> Así que el hombre detrás de la cortina fue deliberada hace un momento. 497 00:23:09,030 --> 00:23:10,320 Aquí tenemos una tabla. 498 00:23:10,320 --> 00:23:13,010 Pero supongamos que esta realidad representa una gran caja. 499 00:23:13,010 --> 00:23:14,940 Así que este es un llamado cuadro de negro. 500 00:23:14,940 --> 00:23:19,800 Y, en general, en el diseño, en el ordenador ciencia, cajas negras sólo se refieren a 501 00:23:19,800 --> 00:23:22,510 piezas de funcionalidad que alguien ha puesto en marcha, y no hacer 502 00:23:22,510 --> 00:23:26,140 necesariamente sabe ni le importa cómo es implementado bajo la campana. 503 00:23:26,140 --> 00:23:28,960 Sólo importa que este cuadro de negro, que ahora empezaremos a llamar a un 504 00:23:28,960 --> 00:23:30,730 función, hace algo. 505 00:23:30,730 --> 00:23:34,710 >> Así, por ejemplo, si este cuadro negro en la etapa de aquí representa printf, una 506 00:23:34,710 --> 00:23:38,040 función, que sé de los ejemplos anteriores printf que lleva uno o más 507 00:23:38,040 --> 00:23:40,910 argumentos y el primero de los argumentos deben ser una cadena, como 508 00:23:40,910 --> 00:23:44,780 "Hola, mundo". Bueno, si yo soy la persona escribir el programa, y ​​quiero 509 00:23:44,780 --> 00:23:50,460 utilizar printf, yo, por ejemplo, podría tome un pedazo de papel en blanco aquí y un 510 00:23:50,460 --> 00:23:55,060 marcador negro y escribe en él - 511 00:23:55,060 --> 00:23:56,580 Lo escribo mal "mundo" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Así que voy a tomar mi marcador negro y voy a escribir, tan grande y legible como pueda en 514 00:24:04,220 --> 00:24:07,260 este pedazo de papel, "hola, mundo", y Ahora afirmo que esta es mi argumento. 515 00:24:07,260 --> 00:24:09,740 Esta es una cadena representada con una hoja de papel blanco. 516 00:24:09,740 --> 00:24:13,030 Y mi entrada ahora a la función printf va a ser esto. 517 00:24:13,030 --> 00:24:18,250 Así que estoy llamando printf, pasando ese argumento como entrada a la misma. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> Y ahora, yo no sé cómo la persona que escribió printf hizo hace años, pero 520 00:24:26,740 --> 00:24:31,110 Yo sé de su documentación que su propósito en la vida es imprimir lo que 521 00:24:31,110 --> 00:24:34,410 proporcionar a la misma como entrada. 522 00:24:34,410 --> 00:24:40,630 Y así, a pesar de que esta implementación es sin yo saberlo 523 00:24:40,630 --> 00:24:44,170 debajo de la capilla, ahora Ya veo, oh, se hace. 524 00:24:44,170 --> 00:24:45,740 Se ha impreso algo en la pantalla. 525 00:24:45,740 --> 00:24:49,070 Y ahora el control del programa, si hay eran más líneas de código, se 526 00:24:49,070 --> 00:24:51,070 Ahora han vuelto a mí. 527 00:24:51,070 --> 00:24:52,290 Y así, el hecho de que Colton - 528 00:24:52,290 --> 00:24:55,370 bendito sea, se esconde aquí bajo una mesa delante de todos ustedes - 529 00:24:55,370 --> 00:24:59,530 es deliberada en que no lo sé y no me importa cómo printf es 530 00:24:59,530 --> 00:25:00,100 implementado. 531 00:25:00,100 --> 00:25:03,390 Sólo sé que, de nuevo, a partir de su documentación, lo que hace y cómo lo 532 00:25:03,390 --> 00:25:05,040 Se supone que debo usarlo. 533 00:25:05,040 --> 00:25:09,140 >> Ahora, recordemos que printf podría conseguir un poco más sofisticado. 534 00:25:09,140 --> 00:25:12,220 De nuevo, sólo estamos hablando de la equivalente del bloque de Say de Scratch. 535 00:25:12,220 --> 00:25:14,230 Pero también lo hice la última vez. 536 00:25:14,230 --> 00:25:17,270 Yo quería hacer mi programa hola un poco más dinámica y no sólo difícil 537 00:25:17,270 --> 00:25:19,740 código de algo así como "mundo", y Código definitivamente no dura algo 538 00:25:19,740 --> 00:25:22,520 arbitraria como D-A-V-I-D en el programa. 539 00:25:22,520 --> 00:25:27,510 Quería preguntarle al usuario para su nombre, y luego hacer algo con 540 00:25:27,510 --> 00:25:29,720 esa cadena que proporcionan. 541 00:25:29,720 --> 00:25:32,690 >> Así que hay algo un poco diferente aquí. printf, hace un momento, 542 00:25:32,690 --> 00:25:35,860 no, de hecho, hacer algo, pero no arrojó nada para mí. 543 00:25:35,860 --> 00:25:36,020 ¿Cierto? 544 00:25:36,020 --> 00:25:38,910 Colton no me entregue nada espalda, ningún pedazo de papel. 545 00:25:38,910 --> 00:25:40,320 Hubo sólo un efecto secundario. 546 00:25:40,320 --> 00:25:44,510 Mi proporcionar "hola, mundo" como un argumento para Colton dio lugar a la 547 00:25:44,510 --> 00:25:48,420 efecto secundario de una palabra, algunas palabras, que aparece en la pantalla. 548 00:25:48,420 --> 00:25:51,350 >> getString, sin embargo, es un poco de diferente. getString es también un 549 00:25:51,350 --> 00:25:54,590 funciona, pero devuelve algún valor. 550 00:25:54,590 --> 00:25:56,370 No sólo tiene un efecto secundario estética. 551 00:25:56,370 --> 00:26:00,230 En realidad, me da, la persona llamando o utilizando la función, 552 00:26:00,230 --> 00:26:01,320 algo a cambio. 553 00:26:01,320 --> 00:26:05,740 Así que en este caso, es getString llamado con getString abierta 554 00:26:05,740 --> 00:26:07,510 paren, paren cerca. 555 00:26:07,510 --> 00:26:11,370 ¿Tiene getString, por lo tanto, tomar cualquier argumento o la entrada? 556 00:26:11,370 --> 00:26:12,340 No, no lo parece. 557 00:26:12,340 --> 00:26:14,460 Su propósito en la vida es sólo para obtener una cadena. 558 00:26:14,460 --> 00:26:16,910 No necesita más detalle que eso. 559 00:26:16,910 --> 00:26:20,430 Así que déjame ir adelante y pretendo que, de nuevo, esta caja de negro no es printf, 560 00:26:20,430 --> 00:26:25,160 pero getString, y me dejó, la persona la redacción de este programa, llame o utilizar 561 00:26:25,160 --> 00:26:29,720 getString con sólo escribir G-E-T-S-T-R-Me-N-G, paren abiertas, cerca 562 00:26:29,720 --> 00:26:32,170 paren, getString. 563 00:26:32,170 --> 00:26:36,920 >> Ahora, no tengo ni idea de cómo el personal CS50 implementado getString, pero sé que 564 00:26:36,920 --> 00:26:41,240 si espero lo suficiente, se hará todo lo cosa debajo de la capilla, tal vez usando 565 00:26:41,240 --> 00:26:44,940 algunas variables, quizás utilizando algunos condiciones, quizás utilizando algunos bucles, 566 00:26:44,940 --> 00:26:48,170 tal vez el uso de algunas funciones, tal vez utilizando - 567 00:26:48,170 --> 00:26:52,290 simplemente tratando de ganar - tal vez usando algunas otras características de programación. 568 00:26:52,290 --> 00:26:55,350 Pero si espero el tiempo suficiente - en realidad, en el ordenador, esto sucede 569 00:26:55,350 --> 00:26:56,270 super rápido - 570 00:26:56,270 --> 00:26:59,910 si espero lo suficiente, esta función getString va a obtener una cadena 571 00:26:59,910 --> 00:27:04,060 desde el usuario, que está presumiblemente escribiendo hacia fuera en su teclado, y 572 00:27:04,060 --> 00:27:08,090 entonces, cuando GetString se hace llegar los personajes del usuario 573 00:27:08,090 --> 00:27:14,080 y su almacenamiento en una cadena, que función, getString, va a tener 574 00:27:14,080 --> 00:27:17,990 listo para mí alguna salida que soy va a recuperar por medio de la 575 00:27:17,990 --> 00:27:19,470 operador de asignación. 576 00:27:19,470 --> 00:27:25,390 >> Y si me fuere, de hecho, en la salida aquí, Obosi tiene generosamente 577 00:27:25,390 --> 00:27:29,900 participado, sin saber esto en avanzar, escribiendo su nombre en este 578 00:27:29,900 --> 00:27:33,100 variable, que representa a una cadena. 579 00:27:33,100 --> 00:27:35,640 Ahora, se entiende el operador de asignación, incluso aunque esto podría sentirse un poco 580 00:27:35,640 --> 00:27:38,790 redundante, yo en realidad necesito para hacer mi propia copia de este. 581 00:27:38,790 --> 00:27:40,700 Debido a que en la mano izquierda lado - ¡Vaya! - 582 00:27:40,700 --> 00:27:45,760 cuenta de que yo tengo esencialmente cadena nombre en el lado izquierdo. 583 00:27:45,760 --> 00:27:48,280 Así que yo también voy a hacer mi propia copia de este. 584 00:27:48,280 --> 00:27:50,990 Y esto es un poco de una mentira piadosa, porque vamos a ver en una semana o dos de 585 00:27:50,990 --> 00:27:54,100 momento en que las cadenas no son en realidad lo que parecen ser. 586 00:27:54,100 --> 00:27:56,700 >> Pero por ahora, aquí está el valor de retorno. 587 00:27:56,700 --> 00:28:00,160 Aquí está mi propia copia de la misma después de utilizando el operador de asignación. 588 00:28:00,160 --> 00:28:01,790 Y ahora, ¿qué es lo que quiero hacer a continuación? 589 00:28:01,790 --> 00:28:04,080 Ahora tenemos la segunda de dos líneas de código. 590 00:28:04,080 --> 00:28:05,640 Así que ahora quiero llamar a printf. 591 00:28:05,640 --> 00:28:08,500 Vamos a suponer ahora que el negro cuadro está de vuelta otra vez a ser 592 00:28:08,500 --> 00:28:10,210 printf y no GetString. 593 00:28:10,210 --> 00:28:12,200 >> Printf esta vez va a tomar el número de argumentos? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Así que mira, es como dos. 596 00:28:16,770 --> 00:28:18,860 Hay dos comas en allí, pero uno de esos comas, es 597 00:28:18,860 --> 00:28:20,220 dentro de las comillas. 598 00:28:20,220 --> 00:28:23,190 Así que el primer argumento es, literalmente, va a ser esto. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, coma, ciento s, la barra invertida-n. 600 00:28:31,850 --> 00:28:36,560 Y ahora estoy ofreciendo no un argumento, pero dos argumentos para printf. 601 00:28:36,560 --> 00:28:39,530 >> Y lo que se supone printf que ver con estas dos entradas después de que les pase en 602 00:28:39,530 --> 00:28:42,050 como argumentos? 603 00:28:42,050 --> 00:28:45,360 Se supone que debe tomar la segunda de ellos, lo que he llamado el nombre, por lo que el 604 00:28:45,360 --> 00:28:48,660 segundo trozo de papel escribí Hace un momento se llama nombre. 605 00:28:48,660 --> 00:28:53,550 Se va a conectar en el interior del valor de esa variable en el espacio, 606 00:28:53,550 --> 00:28:58,310 % S, por lo que, de nuevo, en solo un momento de vez, vamos a ver un efecto secundario de 607 00:28:58,310 --> 00:29:04,180 habiendo llamado printf, por el que ahora nos ver no "hola, mundo", sino "hola, 608 00:29:04,180 --> 00:29:04,710 Obosi ". 609 00:29:04,710 --> 00:29:08,730 >> Así, un gran aplauso a los dos nuestros voluntarios, sólo uno de los cuales sabían 610 00:29:08,730 --> 00:29:12,010 esto estaría sucediendo. 611 00:29:12,010 --> 00:29:12,990 Está bien. 612 00:29:12,990 --> 00:29:16,480 Así que, tal vez, tan simple como eso era, Ciertamente, si usted ya está familiarizado 613 00:29:16,480 --> 00:29:20,190 con tal, espero que usted nunca olvidar que visual particular de cómo 614 00:29:20,190 --> 00:29:21,220 funciones de trabajo. 615 00:29:21,220 --> 00:29:23,000 >> Así que hay algo más que getString. 616 00:29:23,000 --> 00:29:26,020 En el interior de la biblioteca CS50, hay una manojo entero de funciones, todos los cuales 617 00:29:26,020 --> 00:29:29,510 se capitalizan sólo para dejar en claro que escribimos estas funciones. 618 00:29:29,510 --> 00:29:33,610 Por lo general, en C, casi todos los demás función que vamos a usar es minúscula. 619 00:29:33,610 --> 00:29:36,190 Pero usamos deliberadamente mayúsculas sólo para dejar en claro que estos 620 00:29:36,190 --> 00:29:39,880 están entrenando ruedas del tipo que vamos a utilizar para tan sólo unas semanas que 621 00:29:39,880 --> 00:29:42,890 simplificar el proceso de obtención de entrada del usuario. 622 00:29:42,890 --> 00:29:46,740 >> La biblioteca CS50 no hace nada que ustedes mismos no se podía hacer por 623 00:29:46,740 --> 00:29:50,230 simplemente usando el código C a partir de una libro de texto de la vieja escuela. 624 00:29:50,230 --> 00:29:53,310 Pero, de nuevo, los utilizamos como entrenamiento ruedas de las clases para sólo un par de 625 00:29:53,310 --> 00:29:57,250 semanas para que podamos deshacernos de la complejidad que pronto entenderá 626 00:29:57,250 --> 00:30:00,460 usted mismo de hacer algo como relativamente sencillo como conseguir 627 00:30:00,460 --> 00:30:02,080 entrada de un usuario. 628 00:30:02,080 --> 00:30:05,540 >> Así que saber que usted tendrá acceso a GetChar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 doble. 630 00:30:06,050 --> 00:30:07,050 Como se llame - y luego GetFloat. 631 00:30:07,050 --> 00:30:07,600 ¿Qué es un flotador? 632 00:30:07,600 --> 00:30:09,382 Vamos a empezar por ahí. 633 00:30:09,382 --> 00:30:10,600 >> ESTUDIANTE: [inaudible]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID MALAN: Si. 635 00:30:10,790 --> 00:30:12,120 Es un número con un punto decimal. 636 00:30:12,120 --> 00:30:15,930 Así que mientras que un int es un entero, que es sólo un número con un 0 al 9, 637 00:30:15,930 --> 00:30:18,940 cierto número de repeticiones de los mismos, un flotador es algo 638 00:30:18,940 --> 00:30:20,100 con un punto decimal. 639 00:30:20,100 --> 00:30:26,090 Y un doble, por su parte, es también un número con un punto decimal, pero más 640 00:30:26,090 --> 00:30:28,160 números después de la coma decimal señalar, potencialmente. 641 00:30:28,160 --> 00:30:30,040 >> Así que nos pondremos en contacto con este poco tiempo. 642 00:30:30,040 --> 00:30:34,560 Pero por lo general, cada uno de estos tipos de datos, cada uno de estos tipos de variables 643 00:30:34,560 --> 00:30:39,380 que una biblioteca como la nuestra puede volver a usted, use un número diferente de bits para 644 00:30:39,380 --> 00:30:40,290 almacenar información. 645 00:30:40,290 --> 00:30:43,910 Típicamente, un Char, que sólo significa un carácter, utiliza 8 bits. 646 00:30:43,910 --> 00:30:47,490 Y eso es realmente consistente con nuestra byte de voluntarios la semana pasada que 647 00:30:47,490 --> 00:30:50,410 se acercó y representado a un De caracteres ASCII a la vez. 648 00:30:50,410 --> 00:30:51,850 Así que una de Char es de 8 bits. 649 00:30:51,850 --> 00:30:54,430 >> Un flotador pasa a ser 32 bits, por lo general. 650 00:30:54,430 --> 00:30:59,230 Y un matrimonio, como ya habrás adivinado, es en realidad 64 bits, lo cual es sólo más, 651 00:30:59,230 --> 00:31:01,360 lo que significa que usted puede tener mayor números o más de precisión. 652 00:31:01,360 --> 00:31:03,000 Pero, de nuevo, más sobre esto en otro momento. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, por su parte, aunque estúpidamente nombre, es en realidad un 654 00:31:06,550 --> 00:31:10,770 entero que es el doble de grande, el doble de largo, potencialmente, como regular 655 00:31:10,770 --> 00:31:12,940 entero, 64 bits en lugar de 32. 656 00:31:12,940 --> 00:31:14,560 Y GetString que hemos estado usando. 657 00:31:14,560 --> 00:31:18,870 >> Pero resulta que, en la biblioteca CS50, que se implementa, como veremos, en 658 00:31:18,870 --> 00:31:23,560 la forma de los dos archivos, uno de los cuales se llama cs50.h, tiene otros dos 659 00:31:23,560 --> 00:31:24,770 tipos de datos en el mismo. 660 00:31:24,770 --> 00:31:29,700 Booleanos no existen en C. Puede simular ellos sólo por el uso 0s y 1s 661 00:31:29,700 --> 00:31:30,850 a través de sus programas. 662 00:31:30,850 --> 00:31:35,500 Pero en la biblioteca CS50 hemos creado los símbolos "verdadero" y "falso" 663 00:31:35,500 --> 00:31:38,580 para representar 1 y 0 para que no te tener que codificar algo 664 00:31:38,580 --> 00:31:39,810 gustaría literalmente, 1 y 0. 665 00:31:39,810 --> 00:31:40,980 Pero vamos a ver los de nuevo. 666 00:31:40,980 --> 00:31:42,330 >> Cadena, también, no existe. 667 00:31:42,330 --> 00:31:44,520 Y es por eso que he mencionado es un poco de una mentira piadosa por ahora. 668 00:31:44,520 --> 00:31:46,660 Pero vamos a pelar que capa de poco. 669 00:31:46,660 --> 00:31:49,540 Pero, por ahora, una cadena es un secuencia de caracteres. 670 00:31:49,540 --> 00:31:51,790 >> Mientras tanto, en C, que de hecho tener diferentes tipos de datos. 671 00:31:51,790 --> 00:31:53,200 AVISO Estos son minúsculas. 672 00:31:53,200 --> 00:31:56,960 Así que las funciones que se vio hace un momento son funciones escritas por CS50 que 673 00:31:56,960 --> 00:32:02,310 volverá a usted un valor que cae en una de estas categorías. 674 00:32:02,310 --> 00:32:06,730 >> Un par de trucos hojas sólo para plantar la semilla aquí. printf hace no sólo 675 00:32:06,730 --> 00:32:08,600 tome% s como marcadores de posición. 676 00:32:08,600 --> 00:32:13,490 Se necesita% d para enteros decimales, o% i funcionaría también. 677 00:32:13,490 --> 00:32:19,450 % F está flotando valores de punto. % C es para un char, si quieres simplemente conecte un 678 00:32:19,450 --> 00:32:23,510 carácter en una cadena con formato previo como lo hemos estado haciendo, puede usar% c. 679 00:32:23,510 --> 00:32:28,490 >> Y luego, un poco molesto,% lld es durante mucho tiempo entero, decimal, 680 00:32:28,490 --> 00:32:31,050 que simplemente significa que si usted necesita un muy número grande y usted está usando algo 681 00:32:31,050 --> 00:32:35,450 llamado un largo tiempo, lo que vamos a venir de nuevo a un conjunto de procesadores, puede utilizar% lld a 682 00:32:35,450 --> 00:32:40,700 decirle printf, enchufe en una muy grande enteros aquí por medio de su segunda o 683 00:32:40,700 --> 00:32:41,830 algún otro argumento. 684 00:32:41,830 --> 00:32:45,700 >> Y por último, me prometí que hay algunos otros de escape 685 00:32:45,700 --> 00:32:47,670 secuencias que printf apoyos. 686 00:32:47,670 --> 00:32:49,160 Hemos visto barra invertida-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r puede ver. 688 00:32:50,510 --> 00:32:51,780 Es una especie de una cosa de la vieja escuela. 689 00:32:51,780 --> 00:32:55,920 Si alguna vez ha utilizado un verdadero año de máquina de escribir hace y te sacó de la manivela 690 00:32:55,920 --> 00:32:59,810 que no sólo hace girar la rueda para mover la línea, también se trasladó la 691 00:32:59,810 --> 00:33:03,730 Todo esto todo el camino de regreso a la izquierda, así, la barra invertida-r simplemente 692 00:33:03,730 --> 00:33:06,480 esencialmente mueve el cursor hacia atrás al inicio de la línea 693 00:33:06,480 --> 00:33:07,830 sin moverla hacia abajo. 694 00:33:07,830 --> 00:33:09,780 Pero, de nuevo, más en eso, tal vez, en el futuro. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-cita, cita-barra invertida doble, barra invertida-barra invertida es el 696 00:33:13,670 --> 00:33:16,600 solución para el pequeño pequeño acertijo He aludido antes. 697 00:33:16,600 --> 00:33:18,920 Y la barra invertida-0 es en realidad bastante interesante. 698 00:33:18,920 --> 00:33:21,470 Pero vamos a volver a que en poco tiempo. 699 00:33:21,470 --> 00:33:25,640 >> Así que déjame ir a, ahora, el CS50 aparato, y vamos a hacer realidad un 700 00:33:25,640 --> 00:33:28,930 rápida en calor con uno de los ejemplos nos movimos ya y luego a 701 00:33:28,930 --> 00:33:31,160 algo un poco más complejo. 702 00:33:31,160 --> 00:33:34,980 Así que si abro mi programa llamado gedit - 703 00:33:34,980 --> 00:33:36,840 este es mi editor gráfico. 704 00:33:36,840 --> 00:33:38,460 Y yo puedo hacer eso - 705 00:33:38,460 --> 00:33:39,820 Déjenme cerrar esa ventana allí - 706 00:33:39,820 --> 00:33:42,720 por medio de este icono aquí abajo, gedit, en la parte inferior izquierda 707 00:33:42,720 --> 00:33:44,170 esquina al lado del menú. 708 00:33:44,170 --> 00:33:48,670 >> Voy a seguir adelante y avanzar, y guardar este ejemplo en, por ejemplo, John 709 00:33:48,670 --> 00:33:49,660 Carpeta de Harvard. 710 00:33:49,660 --> 00:33:52,690 Carpeta de John Harvard es sólo su casa directorio en el que todos sus archivos en vivo 711 00:33:52,690 --> 00:33:53,340 de forma predeterminada. 712 00:33:53,340 --> 00:33:58,410 Y yo voy a guardar esto como un archivo denominado hola-0.C. 713 00:33:58,410 --> 00:34:01,260 Y yo he elegido este nombre sólo por lo que se alinea con el código de ejemplo en la 714 00:34:01,260 --> 00:34:04,210 la página web del curso y en el YouTube videos en línea. 715 00:34:04,210 --> 00:34:06,320 >> Así que ahora voy a empezar a escribir mi primer programa. 716 00:34:06,320 --> 00:34:08,469 Permítanme ampliar la imagen durante la legibilidad. 717 00:34:08,469 --> 00:34:12,760 Y yo voy a seguir adelante y decir int void main, que es igual que 718 00:34:12,760 --> 00:34:14,900 pieza del rompecabezas de color amarillo que se inicia un programa. 719 00:34:14,900 --> 00:34:18,290 He caído en el hábito durante el años de la apertura de mi corchete, a continuación, 720 00:34:18,290 --> 00:34:22,000 También cerrarlo y luego volver a donde quiero poner mi código, sólo 721 00:34:22,000 --> 00:34:24,630 porque me ayuda a mantener todo equilibrada, especialmente como mi 722 00:34:24,630 --> 00:34:25,880 programa se hace largo. 723 00:34:25,880 --> 00:34:29,239 >> Y ahora, aquí, voy a seguir adelante y decir, printf, entre comillas, 724 00:34:29,239 --> 00:34:34,330 hola mundo, la barra invertida-n, cerca de la cita, paréntesis de cierre, punto y coma. 725 00:34:34,330 --> 00:34:38,100 Así que sólo estoy repitiendo todo lo que hemos estado tomando por sentado hasta ahora. 726 00:34:38,100 --> 00:34:39,270 Ahora me voy a alejar el zoom. 727 00:34:39,270 --> 00:34:43,030 >> Y esta ventana de terminal hasta aquí, lo que me permite hacer en este negro 728 00:34:43,030 --> 00:34:44,389 y ventana en blanco? 729 00:34:44,389 --> 00:34:46,977 ¿Qué puedo usar? 730 00:34:46,977 --> 00:34:49,770 Así que aquí es donde me quedo comandos y donde puedo compilar cosas. 731 00:34:49,770 --> 00:34:50,620 Y yo voy a mantener la sencillez. 732 00:34:50,620 --> 00:34:52,780 Voy a utilizar un programa de Marca llamada, que no es 733 00:34:52,780 --> 00:34:54,020 técnicamente un compilador. 734 00:34:54,020 --> 00:34:56,360 El compilador de llamada Clang, pero vamos a volver a eso en un 735 00:34:56,360 --> 00:34:57,190 semana o el tiempo de dos. 736 00:34:57,190 --> 00:35:03,410 >> Por ahora, sólo voy a escribir make hola-0, Pero aquellos de vosotros que estabais 737 00:35:03,410 --> 00:35:07,050 comparando en sus mentes lo que acabo de escrito a lo que debería haber escrito puede 738 00:35:07,050 --> 00:35:10,180 sé ya que lo hice algo mal aquí. 739 00:35:10,180 --> 00:35:12,160 Ahora, claramente hay algunos errores. 740 00:35:12,160 --> 00:35:16,742 Antes de que siquiera miro a lo que son, cualquier pensamientos acerca de lo que hice mal? 741 00:35:16,742 --> 00:35:18,590 >> ESTUDIANTES: [VOCES interponiendo]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID MALAN: Si. 743 00:35:18,840 --> 00:35:20,640 Me falta el archivo de cabecera de la biblioteca. 744 00:35:20,640 --> 00:35:24,240 Cualquiera de estos archivos. H se denominan encabezado archivos, y que colectivamente 745 00:35:24,240 --> 00:35:25,680 pertenecer a cosas llamadas bibliotecas. 746 00:35:25,680 --> 00:35:28,030 Las bibliotecas son sólo trozos de código que otras personas escribieron. 747 00:35:28,030 --> 00:35:32,140 Así el estándar [? i] biblioteca? es un colección de archivos que contienen código 748 00:35:32,140 --> 00:35:33,330 que otras personas escribieron. 749 00:35:33,330 --> 00:35:34,820 >> Así que me falta eso. 750 00:35:34,820 --> 00:35:36,520 Entonces, ¿por qué obtengo un error? 751 00:35:36,520 --> 00:35:40,840 Bueno, déjame retroceder en mi ventana de terminal aquí. 752 00:35:40,840 --> 00:35:44,310 Y, por desgracia, en C, como en una gran cantidad de lenguajes de programación, especialmente 753 00:35:44,310 --> 00:35:47,830 si todo es nuevo para usted, el error mensajes son precisas, pero también son 754 00:35:47,830 --> 00:35:48,620 bastante críptico. 755 00:35:48,620 --> 00:35:51,720 Y el error aquí, en rojo, es "Declarando implícitamente la función de biblioteca 756 00:35:51,720 --> 00:35:57,660 printf con el tipo ", y luego se desplaza a la siguiente línea, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Simplemente se pone realmente abrumadora rápidamente. 758 00:36:00,220 --> 00:36:04,420 >> Pero lo que usted debe comenzar a hacer, si, nuevo, nuevo en todo esto, es sólo para 759 00:36:04,420 --> 00:36:06,010 comenzar a buscar palabras clave. 760 00:36:06,010 --> 00:36:08,770 Está claro que yo no podría entender la mitad de las palabras que estoy viendo por el momento. 761 00:36:08,770 --> 00:36:10,140 Usted, sin embargo, en el tiempo de una semana. 762 00:36:10,140 --> 00:36:11,230 Pero veo printf. 763 00:36:11,230 --> 00:36:14,310 Y eso debería comenzar, en poco tiempo, a refresque la memoria, de acuerdo, printf. 764 00:36:14,310 --> 00:36:15,210 Algo está mal con printf. 765 00:36:15,210 --> 00:36:16,580 ¿Escribí mal? 766 00:36:16,580 --> 00:36:18,130 No, no se ve como - oh. 767 00:36:18,130 --> 00:36:21,350 No puedo usarlo a menos que enseño el compilador que existe. 768 00:36:21,350 --> 00:36:25,220 Y así, una vez más, sigue tus instintos, incluso si usted no entiende realmente 769 00:36:25,220 --> 00:36:26,510 los mensajes de error reales. 770 00:36:26,510 --> 00:36:30,240 >> Y, de hecho, la solución en este caso es simplemente incluirlo en la parte superior del archivo 771 00:36:30,240 --> 00:36:34,340 así, volver a guardar mi archivo con Control-S o en el menú Archivo. 772 00:36:34,340 --> 00:36:36,730 Y si ahora vuelvo aquí, Voy a aclarar esto. 773 00:36:36,730 --> 00:36:39,150 Control-L es sólo una manera agradable para borrar la pantalla. 774 00:36:39,150 --> 00:36:44,870 Y luego voy a escribir "hola hacer 0 "entrar, y ahora sigo sin ver una 775 00:36:44,870 --> 00:36:47,710 secuencia críptica de símbolos, pero vamos a volver a eso. 776 00:36:47,710 --> 00:36:49,230 Eso es lo que hace que está haciendo por usted. 777 00:36:49,230 --> 00:36:52,590 Se automatizar el proceso de tomar un comando bastante molesto que implica 778 00:36:52,590 --> 00:36:54,050 Clang, el compilador real. 779 00:36:54,050 --> 00:36:57,460 Pero el hecho de que yo tengo de ninguna manera los errores que esto debería funcionar. 780 00:36:57,460 --> 00:37:00,630 >> Así que ahora voy a hacer - déjame el zoom de nuevo - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 entrar, y de hecho, no veo "Hola, mundo". Así que ahora vamos a mejorar 782 00:37:07,070 --> 00:37:12,105 esta muy ligeramente sólo para replicar las medidas que pretendía. 783 00:37:12,105 --> 00:37:15,370 Voy a cambiar el nombre de esta con Guardar como para hello1.c. 784 00:37:15,370 --> 00:37:20,300 Y ahora me voy a declarar una variable nombre, el nombre de la cadena por lo que, 785 00:37:20,300 --> 00:37:23,420 y me voy a poner en ella la valor entre comillas 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D y coma close-quote. 787 00:37:27,030 --> 00:37:31,150 Y ahora me voy a reemplazar "mundo" con lo que marcador de posición para una cadena? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> Y ahora, ¿cuántos argumentos deben printf tomar este tiempo? 790 00:37:35,040 --> 00:37:35,700 Así que dos. 791 00:37:35,700 --> 00:37:37,090 Así que me voy fuera de las comillas. 792 00:37:37,090 --> 00:37:39,330 Escribo "nombre", después de una coma. 793 00:37:39,330 --> 00:37:41,550 Pero yo he hecho algo cosa mal esta vez. 794 00:37:41,550 --> 00:37:43,940 Pero vamos a suponer que no lo hice darse cuenta de que todavía. 795 00:37:43,940 --> 00:37:44,910 Déjame ir aquí. 796 00:37:44,910 --> 00:37:48,850 >> Y fíjense, también, me estoy poniendo un poco aburrido de escribir "make hola 0" todo el 797 00:37:48,850 --> 00:37:50,180 tiempo, "hacer" y todo esto. 798 00:37:50,180 --> 00:37:53,270 Así, resulta que, en Linus puedas menudo golpeó la flecha hacia arriba en su 799 00:37:53,270 --> 00:37:56,850 teclado, y en realidad se puede desplazar a través de todos los comandos que he 800 00:37:56,850 --> 00:37:58,830 ejecutado antes de este momento. 801 00:37:58,830 --> 00:38:02,040 Así que si hago eso, Arriba, Arriba, no hacen hola 0. 802 00:38:02,040 --> 00:38:02,610 Yo no quiero eso. 803 00:38:02,610 --> 00:38:05,450 Sólo quiero cambiar eso a hola 1 esta vez, Enter. 804 00:38:05,450 --> 00:38:07,620 Con el tiempo, que se ahorrar algo de tiempo. 805 00:38:07,620 --> 00:38:08,150 >> Está bien. 806 00:38:08,150 --> 00:38:09,520 Desafortunadamente, no es un error. 807 00:38:09,520 --> 00:38:10,980 Así que permítanme desplazarse hacia arriba. 808 00:38:10,980 --> 00:38:13,120 Esto parece como si realmente masacrado este programa. 809 00:38:13,120 --> 00:38:16,530 Quiero decir, mi dios, se trata de dos líneas de código, y sus 10 líneas de errores. 810 00:38:16,530 --> 00:38:18,800 Pero mira el de arriba primero. 811 00:38:18,800 --> 00:38:21,640 El uso de cadena de identificador no declarado. 812 00:38:21,640 --> 00:38:23,270 ¿Me refiero estándar i n? 813 00:38:23,270 --> 00:38:23,930 No, no lo hice. 814 00:38:23,930 --> 00:38:24,940 Me refería a la cadena. 815 00:38:24,940 --> 00:38:29,390 >> Pero ¿dónde está la variable de cadena tipo declarado, DD decimos? 816 00:38:29,390 --> 00:38:30,730 Así que es en el CS50 la biblioteca. 817 00:38:30,730 --> 00:38:33,740 Por lo tanto, no es suficiente, en estos primeros par de semanas, sólo para usar 818 00:38:33,740 --> 00:38:34,860 lo que C nos da. 819 00:38:34,860 --> 00:38:38,120 También voy a subir aquí, y yo podría poner por encima o por debajo, pero lo voy a hacer 820 00:38:38,120 --> 00:38:40,340 si prefieres algo alfabético para mantener las cosas en orden. 821 00:38:40,340 --> 00:38:43,470 Voy a incluir cs50.h, que es pre-instalado para 822 00:38:43,470 --> 00:38:44,900 que en el aparato CS50. 823 00:38:44,900 --> 00:38:47,640 Y es de código abierto, por lo que incluso las personas en el Internet puede usarlo en su 824 00:38:47,640 --> 00:38:48,450 ordenadores propios. 825 00:38:48,450 --> 00:38:50,700 Pero viene con el aparato CS50. 826 00:38:50,700 --> 00:38:55,320 >> Así que ahora déjame volver y volver a compilar esto con compone hola 1. 827 00:38:55,320 --> 00:38:55,710 Maldita sea. 828 00:38:55,710 --> 00:38:57,240 Aún otro error. 829 00:38:57,240 --> 00:38:59,370 Permítanme desplazo hasta la primera, sin embargo. 830 00:38:59,370 --> 00:39:00,630 Éste es un poco compleja. 831 00:39:00,630 --> 00:39:03,830 Multi-carácter constante de caracteres. 832 00:39:03,830 --> 00:39:04,890 Eso no me está ayudando. 833 00:39:04,890 --> 00:39:08,220 Pero aviso, Clang es al menos un poco poco decente, por lo que con un poco de 834 00:39:08,220 --> 00:39:11,890 acento circunflejo verde, que está diciendo aquí es donde la he cagado. 835 00:39:11,890 --> 00:39:16,160 ¿Por qué se apunta, con esa pequeña flecha verde, a la única oferta siguiente 836 00:39:16,160 --> 00:39:18,290 a mi nombre? 837 00:39:18,290 --> 00:39:20,880 >> Así que esta es una de las cosas que acaba de Hay que acostumbrarse a, especialmente si usted ha estado 838 00:39:20,880 --> 00:39:23,980 programación en Python o JavaScript, o en otros idiomas, donde este detalle 839 00:39:23,980 --> 00:39:24,560 no importa. 840 00:39:24,560 --> 00:39:25,740 En C, sí importa. 841 00:39:25,740 --> 00:39:29,520 Si declara una cadena, que es una secuencia de 0 o más caracteres, 842 00:39:29,520 --> 00:39:32,280 en realidad se debe utilizar comillas dobles. 843 00:39:32,280 --> 00:39:36,670 Así que en realidad necesito cambiar esto de nuevo para abrir la cita, cerca de la cita, con 844 00:39:36,670 --> 00:39:37,800 comillas dobles. 845 00:39:37,800 --> 00:39:41,610 Las comillas simples tienen su lugar, pero sólo cuando se está utilizando individuo 846 00:39:41,610 --> 00:39:44,100 caracteres, pero más de eso en otro momento. 847 00:39:44,100 --> 00:39:46,550 Por ahora, las comillas dobles son necesarios. 848 00:39:46,550 --> 00:39:50,460 >> Así que ahora, déjame volver a mi terminal ventana, haga hola 1. 849 00:39:50,460 --> 00:39:51,450 ¿Y quién confía? 850 00:39:51,450 --> 00:39:53,800 ¿Este programa ahora va para compilar correctamente? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 Aceptar. 853 00:39:58,540 --> 00:39:59,780 Así que tres de nosotros piensa que eso. 854 00:39:59,780 --> 00:40:00,280 Está bien. 855 00:40:00,280 --> 00:40:01,190 Intro. 856 00:40:01,190 --> 00:40:02,440 Y lo que realmente hizo. 857 00:40:02,440 --> 00:40:05,130 Así que no hay ningún error esta vez, incluso aunque este programa ha vuelto un poco 858 00:40:05,130 --> 00:40:05,840 más complejo. 859 00:40:05,840 --> 00:40:10,110 Si yo ahora qué punto slash hola 1, Enter, que va a decir "hola, David." 860 00:40:10,110 --> 00:40:11,750 >> Pero vamos a hacer la tercera iteración de este, en el que el 861 00:40:11,750 --> 00:40:13,380 programa es realmente dinámica. 862 00:40:13,380 --> 00:40:16,770 Déjenme seguir adelante y cambiar el archivo nombre, sólo por coherencia con el 863 00:40:16,770 --> 00:40:20,410 archivos que usted tendrá disponible para que después en línea. 864 00:40:20,410 --> 00:40:21,620 Intro. 865 00:40:21,620 --> 00:40:25,510 Y ahora me voy a ir y no tienda de "David" duro codificado aquí. 866 00:40:25,510 --> 00:40:28,826 ¿Qué podía hacer para muy simple mejorar este programa? 867 00:40:28,826 --> 00:40:30,520 >> Podría llamar a getString. 868 00:40:30,520 --> 00:40:33,240 Puede ser que sea un poco lo de no evidente a punto de suceder, así que voy 869 00:40:33,240 --> 00:40:38,470 para agregar realmente otra línea, printf, y diga el nombre, colon, cerca de cotización, tal 870 00:40:38,470 --> 00:40:40,790 para dar al usuario un mensaje en la pantalla. 871 00:40:40,790 --> 00:40:42,980 Y ahora me voy a ir aquí, y estoy va a usar mi atajo de teclado. 872 00:40:42,980 --> 00:40:47,680 Voy a ir para arriba, para arriba, y el cambio hola hola 1 a 2, Enter. 873 00:40:47,680 --> 00:40:49,260 Y gracias a Dios, estoy progresando. 874 00:40:49,260 --> 00:40:52,720 >> Y ahora voy a subir poner los puntos sobre barra hola y 875 00:40:52,720 --> 00:40:54,690 cambiar eso a 2, Enter. 876 00:40:54,690 --> 00:40:55,650 Y ahora mi programa - 877 00:40:55,650 --> 00:40:57,700 Voy a acercar un - es cada vez un poco más bonito. 878 00:40:57,700 --> 00:41:02,190 Nombre va a ser, digamos Rob esta vez, Enter, hola, Rob. 879 00:41:02,190 --> 00:41:03,260 Podemos hacerlo de nuevo. 880 00:41:03,260 --> 00:41:05,360 Nombre, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Nombre: José, Intro. 882 00:41:07,820 --> 00:41:11,596 Nombre, vamos a tratar de ser difícil, Intro. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 En realidad no es un error. 885 00:41:14,680 --> 00:41:16,090 Así que es un poco feo. 886 00:41:16,090 --> 00:41:18,640 Así que tal vez podríamos resolver este en el futuro, no ahora. 887 00:41:18,640 --> 00:41:20,840 >> Pero, ¿cómo lo haría instintivamente ir sobre la dirección de 888 00:41:20,840 --> 00:41:21,990 ese desafío particular? 889 00:41:21,990 --> 00:41:23,710 Sólo se ve estúpido. 890 00:41:23,710 --> 00:41:27,320 ¿Cómo evitar las cosas parecer estúpido? 891 00:41:27,320 --> 00:41:29,890 Así que podríamos hacer, OK, he oído un par de las cosas, una condición y un bucle. 892 00:41:29,890 --> 00:41:33,340 Nos vendría bien, uno, una condición, para comprobar lo que es la longitud de la cadena 893 00:41:33,340 --> 00:41:34,190 el usuario nos dio? 894 00:41:34,190 --> 00:41:37,100 Y si es 0, es sólo entre comillas, simplemente pulse Enter, luego 895 00:41:37,100 --> 00:41:38,930 tal vez debería gritar en ellos y le pedirá de nuevo. 896 00:41:38,930 --> 00:41:39,970 Pero, ¿cómo un símbolo de nuevo? 897 00:41:39,970 --> 00:41:44,230 Bueno, yo también oído lazo, y yo pude hacer eso una y otra vez y otra vez 898 00:41:44,230 --> 00:41:47,010 preguntar al usuario por la misma cosa. 899 00:41:47,010 --> 00:41:48,880 >> Bueno, vamos a hacer otro ejemplo utilizando un diferente 900 00:41:48,880 --> 00:41:50,620 funcionar en la biblioteca CS50. 901 00:41:50,620 --> 00:41:52,330 Déjenme cerrar este archivo. 902 00:41:52,330 --> 00:41:53,510 Voy a crear una nueva. 903 00:41:53,510 --> 00:41:58,510 Y lo llamaré adder.c, sólo porque es fácil hacer la aritmética simple, 904 00:41:58,510 --> 00:42:00,890 a pesar de que esta será completamente decepcionante, con lo que podría hacer 905 00:42:00,890 --> 00:42:02,250 con cualquier ordenador moderno. 906 00:42:02,250 --> 00:42:03,750 >> Pero déjame ir adelante ahora y - 907 00:42:03,750 --> 00:42:10,680 He aprendido la lección la última vez - incluir cs50.h, incluir stdio.h, int 908 00:42:10,680 --> 00:42:14,170 void main, que, por ahora, sólo voy a tomamos en la fe ciega, pero vamos a suponer 909 00:42:14,170 --> 00:42:16,380 que va a entender lo que eso significa que en poco tiempo. 910 00:42:16,380 --> 00:42:21,030 Y voy a decir algo como "dame un int." 911 00:42:21,030 --> 00:42:22,140 >> Y ahora, ¿cómo puedo obtener un int? 912 00:42:22,140 --> 00:42:26,820 Quiero declarar en última instancia una variable llamado x de tipo int y 913 00:42:26,820 --> 00:42:29,240 almacenar en ella un número entero de al usuario. 914 00:42:29,240 --> 00:42:29,970 Así que fue un bocado. 915 00:42:29,970 --> 00:42:35,680 Pero si alguien quiere proponer, cómo yo anuncio un entero llamado x? 916 00:42:35,680 --> 00:42:36,310 Int x. 917 00:42:36,310 --> 00:42:37,430 >> Así que lo que realmente es así de simple. 918 00:42:37,430 --> 00:42:38,240 Dame un int. 919 00:42:38,240 --> 00:42:39,070 Llámalo x. 920 00:42:39,070 --> 00:42:40,580 Ahora uso el operador de asignación. 921 00:42:40,580 --> 00:42:43,400 ¿Y cómo debo guardar desde el dejó un valor de usuario? 922 00:42:43,400 --> 00:42:47,310 No quiero llamar a getString, obviamente, sino más bien getInt. 923 00:42:47,310 --> 00:42:49,060 Cualquier argumento? 924 00:42:49,060 --> 00:42:49,350 No. 925 00:42:49,350 --> 00:42:51,870 Así que es paren abrir, cerrar paren inmediatamente, y luego un 926 00:42:51,870 --> 00:42:53,440 punto y coma termina la línea. 927 00:42:53,440 --> 00:42:54,930 >> Ahora déjame hacer esto de nuevo. 928 00:42:54,930 --> 00:42:57,070 Dame otra int. 929 00:42:57,070 --> 00:43:01,850 Esta vez lo haré int, vamos a llamar a, es igual getint. 930 00:43:01,850 --> 00:43:05,060 Y ahora déjame hacer algo súper sencillo como algo de matemáticas. 931 00:43:05,060 --> 00:43:14,340 Así printf, la suma de% d es la marcador de posición para un int. 932 00:43:14,340 --> 00:43:20,030 Y% d, tiempo, barra invertida-n. 933 00:43:20,030 --> 00:43:20,360 >> Está bien. 934 00:43:20,360 --> 00:43:21,670 Así que eso no es realmente matemáticas. 935 00:43:21,670 --> 00:43:25,500 Pero si quiero decir que la suma de esta valor más este valor es igual a este 936 00:43:25,500 --> 00:43:29,320 otro valor, el número de argumentos en totales debería estar dando printf, 937 00:43:29,320 --> 00:43:30,520 en última instancia? 938 00:43:30,520 --> 00:43:31,420 Así que cuatro, ¿no? 939 00:43:31,420 --> 00:43:33,790 Esta cadena y luego los tres valores. 940 00:43:33,790 --> 00:43:37,560 Así que x es el primero que quiero ser enchufado por primera vez al% d. 941 00:43:37,560 --> 00:43:39,270 y va a ser el próximo. 942 00:43:39,270 --> 00:43:42,030 >> Y ahora como que quiero decir z, z, pero no existe. 943 00:43:42,030 --> 00:43:43,190 Pero eso no es una gran cosa. 944 00:43:43,190 --> 00:43:45,440 Porque, ¿qué harías por instinto, especialmente si has tenido una 945 00:43:45,440 --> 00:43:47,820 calculadora gráfica, ¿qué es lo que escribe? 946 00:43:47,820 --> 00:43:48,760 ¿Qué hay de x más y? 947 00:43:48,760 --> 00:43:50,200 Así que no es una variable real. 948 00:43:50,200 --> 00:43:51,820 Es sólo la suma de dos otras variables. 949 00:43:51,820 --> 00:43:53,170 Y eso es perfectamente legítimo. 950 00:43:53,170 --> 00:43:56,630 C entiende ciertamente sencilla aritmética como este. 951 00:43:56,630 --> 00:43:58,450 >> Punto y coma, ahorrar. 952 00:43:58,450 --> 00:44:02,080 Ahora déjame bajar aquí y escribir make víbora, Intro. 953 00:44:02,080 --> 00:44:04,100 No hay error, así que eso es progreso también. 954 00:44:04,100 --> 00:44:04,890 Escriba víbora. 955 00:44:04,890 --> 00:44:07,100 Y otro atajo de teclado, si usted comienza a aburrirse 956 00:44:07,100 --> 00:44:08,760 con todos los comandos - 957 00:44:08,760 --> 00:44:12,650 si comienza a escribir un comando, como punto slash anuncio, y ahí es donde su 958 00:44:12,650 --> 00:44:16,020 aburrimiento entra en acción, por lo general puede golpear Tab para tener acabado el equipo del 959 00:44:16,020 --> 00:44:20,510 resto de la frase para usted si no es lo ambiguo debe venir después del anuncio. 960 00:44:20,510 --> 00:44:23,950 >> Así que déjame ir adelante ahora y hacer clic en Enter. 961 00:44:23,950 --> 00:44:27,490 Dame un int, 1, 2, y gracias a Dios, que es 3. 962 00:44:27,490 --> 00:44:29,900 Pero como siempre, poniendo a prueba los programas no debe reducir al 963 00:44:29,900 --> 00:44:30,820 tratando una vez. 964 00:44:30,820 --> 00:44:35,560 Déjame probar un caso de la esquina, como negativo 1, dame 1, y que uno 965 00:44:35,560 --> 00:44:36,210 comprueba hacia fuera también. 966 00:44:36,210 --> 00:44:38,870 Y probablemente quiero hacer algo más rigurosas pruebas, pero estoy bastante 967 00:44:38,870 --> 00:44:40,630 cómodo con el lugar donde eso es a. 968 00:44:40,630 --> 00:44:43,110 >> Bueno, ahora vamos a tratar de otro programa que esta vez utiliza un 969 00:44:43,110 --> 00:44:44,620 poco de otra sintaxis. 970 00:44:44,620 --> 00:44:46,100 Déjame crear un nuevo archivo. 971 00:44:46,100 --> 00:44:51,050 Voy a llamar a este conditions0.c a la línea con un código de ejemplo en línea. 972 00:44:51,050 --> 00:44:55,550 Y déjame seguir adelante y hacer incluir cs50.h, incluye 973 00:44:55,550 --> 00:45:00,320 stdio.h, en void main - 974 00:45:00,320 --> 00:45:01,030 Aceptar. 975 00:45:01,030 --> 00:45:01,850 Eso es. 976 00:45:01,850 --> 00:45:03,010 Tenemos nuestro texto modelo estándar. 977 00:45:03,010 --> 00:45:08,170 >> Y esta vez lo voy a decir printf, "Me gustaría un int, por favor," sólo para 978 00:45:08,170 --> 00:45:10,030 hacer que el indicador un poco más amigable. 979 00:45:10,030 --> 00:45:11,620 Y ahora quiero conseguir una int del usuario. 980 00:45:11,620 --> 00:45:15,010 Voy a llamarlo n este momento, sólo porque n suena como número. 981 00:45:15,010 --> 00:45:18,140 getInt, y ahora, ¿qué hacer Lo que quiero hacer con él? 982 00:45:18,140 --> 00:45:21,640 Bueno, si n es - y voy a hacer un zoom - 983 00:45:21,640 --> 00:45:25,930 si n es mayor que 0, quiero para hacer lo siguiente - 984 00:45:25,930 --> 00:45:36,060 printf "Usted escogió un número positivo." Si no, voy a escribir printf "Usted 985 00:45:36,060 --> 00:45:37,870 elegido un negativo 986 00:45:37,870 --> 00:45:39,650 número. "Muy bien. 987 00:45:39,650 --> 00:45:44,410 Así que este programa, a pesar de que lo hice rápido, se ve bien sintácticamente. 988 00:45:44,410 --> 00:45:45,010 Déjame probar esto. 989 00:45:45,010 --> 00:45:46,890 Hacer condición 0. 990 00:45:46,890 --> 00:45:47,710 Parece correrse. 991 00:45:47,710 --> 00:45:49,230 Condición 0, entrar. 992 00:45:49,230 --> 00:45:51,910 Vamos a darle un int de 50. 993 00:45:51,910 --> 00:45:53,160 Cogí un número positivo. 994 00:45:53,160 --> 00:45:54,230 Vamos a intentarlo de nuevo. 995 00:45:54,230 --> 00:45:54,930 Condición 0. 996 00:45:54,930 --> 00:45:56,260 Negativo 50. 997 00:45:56,260 --> 00:45:57,290 Cogí un número negativo. 998 00:45:57,290 --> 00:46:00,350 >> Pero ahora, vamos a escoger lo que vamos a seguir llamar a un caso de esquina, que es más 999 00:46:00,350 --> 00:46:04,702 un interesante caso de que usted piensa podría darle un poco de problemas, 0. 1000 00:46:04,702 --> 00:46:07,940 Ahora, estoy bastante seguro de que este es uno de esos casos extremos donde es cero 1001 00:46:07,940 --> 00:46:12,330 ni positivo ni negativo, por lo que mi programa, aunque en sintácticamente 1002 00:46:12,330 --> 00:46:15,440 correcta - que compila, se ejecuta - no es lógicamente correcto. 1003 00:46:15,440 --> 00:46:21,050 Así que ¿cuál es la solución simple aquí si quiero para detectar, si quiero manejar n 1004 00:46:21,050 --> 00:46:23,840 es igual a 0 por separado? 1005 00:46:23,840 --> 00:46:32,980 >> Así que si n es igual a 0, entonces quiero decir algo así como printf "Usted cogió 0." 1006 00:46:32,980 --> 00:46:33,990 Déjame probar esto ahora. 1007 00:46:33,990 --> 00:46:38,320 Déjame volver aquí, claro mi ventana, y recompilar. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Generar uno de error. 1010 00:46:39,770 --> 00:46:41,630 Pero yo te quiero comprobar si n es igual a 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Así que de nuevo, otra cosa estúpida para acostumbrarse a ellos, igual signo es 1013 00:46:47,720 --> 00:46:48,910 el operador de asignación. 1014 00:46:48,910 --> 00:46:52,240 Así que este es en realidad error en que, técnicamente, a pesar de que el compilador 1015 00:46:52,240 --> 00:46:56,450 me protegió de mí mismo, nos gustaría técnicamente ser copiado 0 en n, que 1016 00:46:56,450 --> 00:46:57,590 No es lo que quiero. 1017 00:46:57,590 --> 00:47:00,950 Quiero comprobar la igualdad con iguales iguales. 1018 00:47:00,950 --> 00:47:03,390 Y así que ahora podría ser mi mejor solución. 1019 00:47:03,390 --> 00:47:07,810 >> Déjame en realidad volver a guardar esto como, por ejemplo, condiciones1, sea nuevo y mejorado. 1020 00:47:07,810 --> 00:47:10,480 Así que ahora si a compilar este, tendría condiciones - 1021 00:47:10,480 --> 00:47:16,960 whoops - hacer slash dot condiciones1 condiciones1, ENTER, "Me gustaría un int, 1022 00:47:16,960 --> 00:47:18,760 por favor. "Voy a ir por delante y el tipo 50. 1023 00:47:18,760 --> 00:47:19,660 Sigue siendo bueno. 1024 00:47:19,660 --> 00:47:21,200 Negativo 50, sigue siendo buena. 1025 00:47:21,200 --> 00:47:24,920 0, y que, de hecho, detectada que recogí 0. 1026 00:47:24,920 --> 00:47:28,200 >> Entonces, ¿qué más puedo ahora hacer con esto? 1027 00:47:28,200 --> 00:47:32,280 Bueno, sin duda podemos hacer cada vez más cosas complejas. 1028 00:47:32,280 --> 00:47:37,240 Pero lo que me gustaría proponer es que terminamos en esta nota aquí. 1029 00:47:37,240 --> 00:47:41,680 Si nos detenemos esto, usted verá, tal vez, una caricatura favorite suya 1030 00:47:41,680 --> 00:47:43,326 hasta hoy en día se podría nunca han entendido. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 Y eso es por la calidad de la risa usted debe conseguir con chistes CS. 1033 00:47:49,520 --> 00:47:51,060 Así que eso es correcto. 1034 00:47:51,060 --> 00:47:54,900 >> Pero lo más convincente, pensé que me había darnos un poco bromista para el lunes. 1035 00:47:54,900 --> 00:47:56,430 Así que hemos empezado a utilizar los números enteros. 1036 00:47:56,430 --> 00:47:57,510 Nos hemos referido a los flotadores. 1037 00:47:57,510 --> 00:48:00,120 Incluso nos hemos referido a los dobles, que, de nuevo, le dará los números 1038 00:48:00,120 --> 00:48:01,390 después decimales. 1039 00:48:01,390 --> 00:48:04,230 >> Pero resulta que flota y dobles, y, en realidad, las computadoras, 1040 00:48:04,230 --> 00:48:08,470 fundamentalmente, no pueden expresar algunos valores de precisión. 1041 00:48:08,470 --> 00:48:12,840 Sabemos por las clases de matemáticas que usted puede tener cualquier número de números después de la 1042 00:48:12,840 --> 00:48:13,510 punto decimal. 1043 00:48:13,510 --> 00:48:16,460 E incluso se puede poner una barra vertical decir que estos van para siempre. 1044 00:48:16,460 --> 00:48:18,810 >> Desafortunadamente, usted no puede realmente hacer eso en un ordenador. 1045 00:48:18,810 --> 00:48:20,400 Y así surgen casos de esquina. 1046 00:48:20,400 --> 00:48:23,120 Por ejemplo, supongamos que usted es haciendo algo financiera. 1047 00:48:23,120 --> 00:48:25,700 Lo estás haciendo matemáticas con porcentajes, y 1048 00:48:25,700 --> 00:48:27,030 con dólares y centavos. 1049 00:48:27,030 --> 00:48:29,230 Y esos centavos no lo hacen necesariamente alineados. 1050 00:48:29,230 --> 00:48:34,120 Bueno, resulta que las fracciones de centavos pueden empezar a sumar cuando 1051 00:48:34,120 --> 00:48:37,250 modelada con un sistema informático de tal manera que inteligente 1052 00:48:37,250 --> 00:48:39,100 los seres humanos pueden aprovechar. 1053 00:48:39,100 --> 00:48:42,650 >> Y aquellos de ustedes que no han visto, me gustaría darle un 30-segundo teaser del 1054 00:48:42,650 --> 00:48:48,290 una película maravillosa conocida como Office Space, que pintar un cuadro de un 1055 00:48:48,290 --> 00:48:51,205 problema que abordaremos Lo primero que el lunes. 1056 00:48:51,205 --> 00:48:53,960 Si pudiéramos aumentar el volumen un poco, te doy 30 1057 00:48:53,960 --> 00:48:55,495 segundos de espacio de oficinas. 1058 00:48:55,495 --> 00:48:55,770 >> [REPRODUCCIÓN DE VÍDEO] 1059 00:48:55,770 --> 00:48:59,000 >> -Quiero decir, usted, usted no ha estado mostrando y usted tiene que mantener su trabajo. 1060 00:48:59,000 --> 00:49:00,620 >> -En realidad, estoy siendo promovido. 1061 00:49:00,620 --> 00:49:03,240 >> -Yo podría programar un virus que había rasgar ese lugar a lo grande. 1062 00:49:03,240 --> 00:49:04,430 >> -Bueno, ¿cómo funciona? 1063 00:49:04,430 --> 00:49:06,782 >> -Cada vez que hay una transacción bancaria donde se calcula interés, y hay 1064 00:49:06,782 --> 00:49:10,160 miles al día, los extremos de ordenador con estas fracciones de un centavo. 1065 00:49:10,160 --> 00:49:12,030 >> -Pero yo no voy a hacer nada ilegal. 1066 00:49:12,030 --> 00:49:12,660 >> -Ilegal? 1067 00:49:12,660 --> 00:49:15,075 Samir, esto es Estados Unidos. 1068 00:49:15,075 --> 00:49:16,570 >> -Tenemos que jurar a Dios. 1069 00:49:16,570 --> 00:49:19,070 >> -Si nadie sabe de esto pero nosotros, ¿de acuerdo? 1070 00:49:19,070 --> 00:49:21,920 No hay miembros de la familia, no novias, nadie. 1071 00:49:21,920 --> 00:49:22,700 >> -Por supuesto. 1072 00:49:22,700 --> 00:49:23,320 >> -De acuerdo. 1073 00:49:23,320 --> 00:49:24,280 >> -No te preocupes, hombre. 1074 00:49:24,280 --> 00:49:25,640 No le diré a nadie. 1075 00:49:25,640 --> 00:49:26,504 >> [VIDEO PLAYBACK FIN] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID MALAN: Así que este es, entonces, CS50, que fue espacio de oficina, y todo va a 1077 00:49:30,030 --> 00:49:31,465 tener sentido para el Lunes. 1078 00:49:31,465 --> 00:49:33,940 Nos vemos entonces. 1079 00:49:33,940 --> 00:49:37,880 >> NARRADOR: En la próxima CS50, Rob ajusta a estar fuera de la 1080 00:49:37,880 --> 00:49:39,130 Plan de comidas de Harvard. 1081 00:49:39,130 --> 00:49:56,160