1 00:00:07,830 --> 00:00:12,200 [Powered by Google Translate] David Malan: Este es CS50, y este es el comienzo de la Semana 1. 2 00:00:12,200 --> 00:00:15,520 Lo que nosotros pensamos que lo hacen hoy en día es echar un vistazo atrás en 3 00:00:15,520 --> 00:00:18,290 algo que muchos de ustedes probablemente pasó por alguna 4 00:00:18,290 --> 00:00:20,570 tiempo y puede parecer un poco familiar. 5 00:00:20,570 --> 00:00:23,720 Esta cosa aquí, esto por supuesto está en el - 6 00:00:23,720 --> 00:00:24,155 AUDIENCIA: Ciencia. 7 00:00:24,155 --> 00:00:26,030 David Malan: Science Center. 8 00:00:26,030 --> 00:00:28,940 Así que esto es realmente una de las primeras computadoras 9 00:00:28,940 --> 00:00:30,220 A la vuelta de la década de 1940. 10 00:00:30,220 --> 00:00:33,790 Fue uno de los equipos electromecánicos de primera 11 00:00:33,790 --> 00:00:35,730 que era capaz de especialmente larga, 12 00:00:35,730 --> 00:00:38,450 autosostenidas cálculos, y lo que vemos en 13 00:00:38,450 --> 00:00:41,580 el centro de la ciencia es sólo una pequeña parte de esta cosa. 14 00:00:41,580 --> 00:00:44,170 Lo que pensamos que sería mejor hacer entonces es tomar un vistazo a un vídeo 15 00:00:44,170 --> 00:00:46,670 que se hizo hace algún tiempo, la introducción de esta 16 00:00:46,670 --> 00:00:47,520 cosa en el mundo. 17 00:00:47,520 --> 00:00:50,200 Y verás desde la música y la voz de que, efectivamente, los 18 00:00:50,200 --> 00:00:52,070 Eran tiempos muy felices. 19 00:00:54,885 --> 00:00:59,700 >> [REPRODUCCIÓN DE VÍDEO] 20 00:00:59,700 --> 00:01:02,490 -Un triunfo de la habilidad matemática y la mecánica es la siguiente 21 00:01:02,490 --> 00:01:06,340 gran nueva calculadora automática de la Universidad de Harvard. 22 00:01:06,340 --> 00:01:08,620 Un complejo entramado de problemas en matemáticas, pasar por el 23 00:01:08,620 --> 00:01:12,420 máquina en forma codificada en la cinta, se precisa resolver en un 24 00:01:12,420 --> 00:01:15,200 fracción de minuto el tiempo requerido para humanos 25 00:01:15,200 --> 00:01:16,450 cálculo. 26 00:01:27,050 --> 00:01:30,600 Diseñado para agilizar todas las formas de matemática y científica 27 00:01:30,600 --> 00:01:34,610 investigación, el cerebro mecánico gigante va a trabajar para las Naciones Unidas 28 00:01:34,610 --> 00:01:36,570 Marina de los Estados hasta el final de la guerra. 29 00:01:50,280 --> 00:01:52,980 >> David Malan: Así que lo que quizá no sabe es que fue en 30 00:01:52,980 --> 00:01:56,310 este mismo dispositivo que un término que ahora todos tomar más o menos 31 00:01:56,310 --> 00:01:59,300 por sentado fue acuñado, el de un insecto. 32 00:01:59,300 --> 00:02:01,140 Así que uno de los ingenieros que trabajan en este equipo 33 00:02:01,140 --> 00:02:05,280 literalmente encontró una pequeña polilla en la máquina que dio como resultado 34 00:02:05,280 --> 00:02:07,580 en algunos cálculos incorrectos. 35 00:02:07,580 --> 00:02:10,410 Y a medida que la historia dice que la polilla se grabó en este registro 36 00:02:10,410 --> 00:02:14,180 revista aquí, de vuelta del 9 de septiembre de 1940 y tantos, 37 00:02:14,180 --> 00:02:16,550 y así nació para el mundo el término "bug". 38 00:02:16,550 --> 00:02:19,880 Así que a partir de ahora consideramos errores a haber ningún tipo de errores en la 39 00:02:19,880 --> 00:02:23,290 programas, sean de origen humano o, en este caso, los insectos. 40 00:02:23,290 --> 00:02:25,030 >> Así que algunos anuncios, a medida que avancemos. 41 00:02:25,030 --> 00:02:29,160 Así CS50 tiene una tradición de ofrecer comidas de todo tipo de 42 00:02:29,160 --> 00:02:31,600 mayoría de los viernes durante el semestre, donde se toma de 30 a 43 00:02:31,600 --> 00:02:34,650 40 estudiantes en Fire and Ice in the Square para casual 44 00:02:34,650 --> 00:02:36,390 charla, hablar de la informática, 45 00:02:36,390 --> 00:02:37,420 hablar sobre el futuro. 46 00:02:37,420 --> 00:02:40,000 Invitamos a ex alumnos y amigos de la industria para charlar 47 00:02:40,000 --> 00:02:40,690 los estudiantes también. 48 00:02:40,690 --> 00:02:44,020 Realmente hacia un extremo de hacer lo que es una clase bastante grande 49 00:02:44,020 --> 00:02:46,740 aún más íntimos, al menos de vez en cuando para 50 00:02:46,740 --> 00:02:47,710 subgrupos de estudiantes. 51 00:02:47,710 --> 00:02:50,940 Así que si usted desea unirse a nosotros este viernes, 1:15 PM, vaya a 52 00:02:50,940 --> 00:02:53,340 CS50.net/lunch para confirmar su asistencia. 53 00:02:53,340 --> 00:02:55,840 Y vamos a hacerlo recurrentemente, no así te preocupes si no eres 54 00:02:55,840 --> 00:02:57,930 entre los primeros 30 o menos esta semana. 55 00:02:57,930 --> 00:02:59,070 >> Así que toma nota de escribano. 56 00:02:59,070 --> 00:03:01,500 Una palabra sobre los recursos que ahora comenzará a ser disponible 57 00:03:01,500 --> 00:03:03,040 a los estudiantes en la clase. 58 00:03:03,040 --> 00:03:05,540 De modo que la cabeza no tiene que ser hacia abajo durante las clases 59 00:03:05,540 --> 00:03:08,560 anotando todo lo que digo y así sucesivamente, lo que hacemos 60 00:03:08,560 --> 00:03:10,765 en su lugar se ofrecen desde el personal docente le 61 00:03:10,765 --> 00:03:11,920 conjunto canónico de notas. 62 00:03:11,920 --> 00:03:14,850 Así que tenemos una de las investigadoras nuestra enseñanza, Andrew Sellergren, 63 00:03:14,850 --> 00:03:17,830 que se sienta cada semana, revisa los videos, y luego 64 00:03:17,830 --> 00:03:19,730 escribe lo que creemos que es una muy 65 00:03:19,730 --> 00:03:21,840 conjunto autorizado de notas. 66 00:03:21,840 --> 00:03:24,180 Y amo de Andrés, también, de poner notas al pie en snarky 67 00:03:24,180 --> 00:03:24,820 la parte inferior. 68 00:03:24,820 --> 00:03:27,300 Así que te esperamos disfrutar de estos como un libro de referencia para 69 00:03:27,300 --> 00:03:30,230 diversión, y también, llegado Quiz Time, como una oportunidad para revisar 70 00:03:30,230 --> 00:03:31,830 lo que ocurrió en conferencias individuales. 71 00:03:31,830 --> 00:03:33,580 Así que estos están vinculados en la página de conferencias. 72 00:03:33,580 --> 00:03:35,300 >> Conjunto de problemas 0, en tanto, está fuera. 73 00:03:35,300 --> 00:03:37,470 Y en términos de los recursos disponibles para usted - 74 00:03:37,470 --> 00:03:38,020 el tutorial. 75 00:03:38,020 --> 00:03:39,730 Milo dirigió la primera el viernes. 76 00:03:39,730 --> 00:03:41,470 Fue filmado, puesto en línea el sábado. 77 00:03:41,470 --> 00:03:44,030 Y así damos cuenta, si no estás muy seguro de por dónde empezar, 78 00:03:44,030 --> 00:03:47,280 para esta o futuras de p sets, siempre en primer lugar el 79 00:03:47,280 --> 00:03:49,300 tutorial o el mismo vídeo. 80 00:03:49,300 --> 00:03:52,950 Seccionamiento está en curso y, al cs50.net/section es donde se 81 00:03:52,950 --> 00:03:54,540 deberán presentar sus preferencias, si no lo ha 82 00:03:54,540 --> 00:03:55,880 ya, por hoy. 83 00:03:55,880 --> 00:03:58,140 Debido a que las secciones se iniciará el próximo domingo, lunes, 84 00:03:58,140 --> 00:03:58,760 y el martes. 85 00:03:58,760 --> 00:04:02,470 Hacemos secciones esos tres días, todas las semanas del 86 00:04:02,470 --> 00:04:03,870 semestre en su mayor parte. 87 00:04:03,870 --> 00:04:06,600 Y también introducir, de nuevo, las diferentes pistas. 88 00:04:06,600 --> 00:04:08,270 Entonces se le pedirá en este formulario seccionamiento, si 89 00:04:08,270 --> 00:04:10,350 no lo he visto, si usted está entre los menos 90 00:04:10,350 --> 00:04:12,800 cómodo, más cómodo, o en algún punto intermedio. 91 00:04:12,800 --> 00:04:14,960 Y si tienes suerte de la valla, por lo general en algún lugar de 92 00:04:14,960 --> 00:04:18,160 entre lo que es la mayoría de los estudiantes terminan de cheques. 93 00:04:18,160 --> 00:04:19,579 Horario de comenzar esta noche. 94 00:04:19,579 --> 00:04:23,020 >> Así Scratch es bastante bajo llave, a pesar de que es muy natural 95 00:04:23,020 --> 00:04:25,300 para funcionar en varios fallos, o ser incierto en cuanto a cómo 96 00:04:25,300 --> 00:04:26,550 implementar algo. 97 00:04:26,550 --> 00:04:28,880 Así damos cuenta de que vamos a empezar las horas de oficina esta semana. 98 00:04:28,880 --> 00:04:30,500 Estarán en Annenberg lunes, martes, miércoles, 99 00:04:30,500 --> 00:04:34,300 Jueves, de 8:00 pm a 11:00 pm durante rotura del cerebro. 100 00:04:34,300 --> 00:04:38,160 Classmen superior puede entrar, y hacer si alguna vez tiene problemas 101 00:04:38,160 --> 00:04:40,720 en la puerta, porque van a birlar, habla a su manera 102 00:04:40,720 --> 00:04:42,560 y explican que estás con CS50. 103 00:04:42,560 --> 00:04:45,230 Típicamente de 20 a 30 de nosotros en el personal estará allí para ayudar 104 00:04:45,230 --> 00:04:46,190 usted uno a uno. 105 00:04:46,190 --> 00:04:48,980 >> Al llegar la idea es la siguiente: usted trae su ordenador portátil, 106 00:04:48,980 --> 00:04:51,300 usted tendrá su cargador, vamos a tener los cables de corriente extra, 107 00:04:51,300 --> 00:04:53,320 particularmente a lo largo de la pared sur de Annenberg donde 108 00:04:53,320 --> 00:04:55,080 hay un montón de enchufes eléctricos. 109 00:04:55,080 --> 00:04:59,290 Y el principal punto de entrada a horarios de oficina Q & A es ir a 110 00:04:59,290 --> 00:05:01,690 cs50.net/discuss y para publicar 111 00:05:01,690 --> 00:05:02,580 tus dudas. 112 00:05:02,580 --> 00:05:05,600 Y para etiquetar con pset 0 o conjunto de procesadores 1, cualquiera que sea la semana 113 00:05:05,600 --> 00:05:06,810 quiera se encuentren. 114 00:05:06,810 --> 00:05:09,240 Y entonces lo que vamos a hacer es tener una tabla de becarios de enseñanza 115 00:05:09,240 --> 00:05:12,040 y los asistentes del curso, generalmente de 8 o 10 o así de nosotros, 116 00:05:12,040 --> 00:05:14,430 pasando, mantener un ojo vigilante sobre el tablero, y 117 00:05:14,430 --> 00:05:16,810 arrancando preguntas realmente lo más rápido que podamos, 118 00:05:16,810 --> 00:05:19,600 refiriéndose a los mensajes relacionados si usted no ha encontrado los 119 00:05:19,600 --> 00:05:22,220 vosotros mismos, referencias en línea, según corresponda. 120 00:05:22,220 --> 00:05:24,280 Y luego, si hay problemas, ya que, inevitablemente, 121 00:05:24,280 --> 00:05:27,190 será, o simplemente tiene más sentido para sentarse uno a uno, 122 00:05:27,190 --> 00:05:28,660 resolver problemas con alguien. 123 00:05:28,660 --> 00:05:30,810 >> O usted acaba de entrar en horas de oficina realmente 124 00:05:30,810 --> 00:05:31,640 necesidad de esa mentalidad. 125 00:05:31,640 --> 00:05:33,400 Usted no quiere ir a través del formulario electrónico, 126 00:05:33,400 --> 00:05:34,410 realmente quiero conocer a alguien. 127 00:05:34,410 --> 00:05:37,240 Comunicar que para nosotros, y lo que sucederá es cuando su 128 00:05:37,240 --> 00:05:40,620 cuestión ha sido visto por un miembro del personal, y 129 00:05:40,620 --> 00:05:43,660 determinar, yup, esto debe ser enviado a una de las 20 o 130 00:05:43,660 --> 00:05:47,800 30 miembros del equipo aquí localmente, podrás ver en la parte superior izquierda esta 131 00:05:47,800 --> 00:05:51,590 Introduzca el pequeño botón Cola comienza a parpadear en cs50.net / 132 00:05:51,590 --> 00:05:52,165 discutir. 133 00:05:52,165 --> 00:05:55,260 Y esto le está diciendo que ahora han sido invitados, por lo que 134 00:05:55,260 --> 00:05:56,880 para hablar, para entrar en la cola. 135 00:05:56,880 --> 00:05:59,090 Y al hacer clic en ese botón, su nombre aparecerá en 136 00:05:59,090 --> 00:06:02,660 un iPad que el interfaz CS50, uno de los jefes del curso, se 137 00:06:02,660 --> 00:06:05,250 celebrará cerca de la entrada de Annenberg, que entonces 138 00:06:05,250 --> 00:06:08,630 vemos como se muestra aquí, los estudiantes que tengan preguntas sobre 139 00:06:08,630 --> 00:06:11,630 la izquierda, los miembros del personal que están presentes en la derecha. 140 00:06:11,630 --> 00:06:14,830 Y con un clic izquierdo y derecho, su navegador web se 141 00:06:14,830 --> 00:06:18,610 comenzará a parpadear en cuanto, por ejemplo, el profesor McGonnagal 142 00:06:18,610 --> 00:06:21,460 está dispuesta a verte en una tabla en particular en Annenberg. 143 00:06:21,460 --> 00:06:23,340 >> Así que hicimos algo de esto el año pasado. 144 00:06:23,340 --> 00:06:25,430 Hemos reiniciado las horas de oficina y 145 00:06:25,430 --> 00:06:26,980 reimplementado gran parte del software. 146 00:06:26,980 --> 00:06:29,940 Así que darse cuenta de que este se caliente esta semana. 147 00:06:29,940 --> 00:06:32,970 Pero también se dan cuenta también, en los últimos años, como usted puede haber oído 148 00:06:32,970 --> 00:06:35,710 de los amigos, las horas de oficina en efecto tenía entre 50 y 149 00:06:35,710 --> 00:06:37,040 150 estudiantes a la vez. 150 00:06:37,040 --> 00:06:39,300 Y no es simplemente imposible para nosotros para manejar ese 151 00:06:39,300 --> 00:06:42,060 efectivamente, uno a uno, a lo largo de la noche. 152 00:06:42,060 --> 00:06:44,570 Y así lo que realmente vamos a tratar de hacer este año es 153 00:06:44,570 --> 00:06:46,590 aprovechar el hecho de que una gran cantidad de preguntas están 154 00:06:46,590 --> 00:06:49,050 preguntas más frecuentes y, a menudo se puede responder mejor 155 00:06:49,050 --> 00:06:50,030 de forma asincrónica. 156 00:06:50,030 --> 00:06:52,140 Así que se puede ordenar de pensar a través de la respuesta del funcionario, 157 00:06:52,140 --> 00:06:54,360 y podemos pensar a través de su código, sin la calefacción 158 00:06:54,360 --> 00:06:57,050 presión de luchar necesariamente 159 00:06:57,050 --> 00:06:58,210 a través de ella al lado del otro. 160 00:06:58,210 --> 00:07:00,980 Por lo tanto se estima que aproximadamente un tercio o la mitad de las preguntas 161 00:07:00,980 --> 00:07:03,500 será enviado en persona, y vamos a tratar de arrancar como 162 00:07:03,500 --> 00:07:05,530 muchos como un medio más o electrónicamente, 163 00:07:05,530 --> 00:07:06,710 durante las horas de oficina. 164 00:07:06,710 --> 00:07:08,070 Y vamos a seguir utilizando Comenta 165 00:07:08,070 --> 00:07:09,990 a lo largo de la semana también. 166 00:07:09,990 --> 00:07:12,680 >> Y, por último, se dan cuenta que este curso puede ser tomado pasa / no pasa. 167 00:07:12,680 --> 00:07:16,230 Así que si usted está en la cerca o simplemente pensar que eres realmente 168 00:07:16,230 --> 00:07:18,650 no estoy seguro si este es el mundo para ti, o esto es realmente 169 00:07:18,650 --> 00:07:21,310 absolutamente ajeno a ti, darse cuenta de que esta es una manera maravillosa 170 00:07:21,310 --> 00:07:24,840 de ganar hasta un poco de confianza con la que dar un paso en la 171 00:07:24,840 --> 00:07:26,780 clase, como lo hice yo, francamente, hace años. 172 00:07:26,780 --> 00:07:28,630 Y luego tenemos cinco semanas para ordenar la figura hacia fuera para 173 00:07:28,630 --> 00:07:30,850 si usted desea permanecer pasa / falla, cambie a una carta 174 00:07:30,850 --> 00:07:31,800 grado, o similar. 175 00:07:31,800 --> 00:07:34,050 Y por lo general lo que pasa / falla es, creo yo, para los estudiantes es 176 00:07:34,050 --> 00:07:36,700 que, si se pone en esos 10 horas, 20 horas, cualquiera que 177 00:07:36,700 --> 00:07:38,830 puede estar en problemas, y que está golpeando su cabeza 178 00:07:38,830 --> 00:07:39,690 contra la pared, 179 00:07:39,690 --> 00:07:41,750 y que realmente no puede perseguir algo abajo, y usted 180 00:07:41,750 --> 00:07:44,230 tiene muchas otras cosas que hay que hacer, de verdad, lo que yo 181 00:07:44,230 --> 00:07:46,070 Creo pasa / no pasa es que se necesita el borde de 182 00:07:46,070 --> 00:07:47,250 situaciones como esa. 183 00:07:47,250 --> 00:07:49,350 Si usted ha tomado la cosa el 90% del camino. 184 00:07:49,350 --> 00:07:50,830 Ya sabes, no es del todo perfecto. 185 00:07:50,830 --> 00:07:52,950 Pero usted tiene un montón de él, sin embargo. 186 00:07:52,950 --> 00:07:55,440 Así que considere pasa / no pasa como que le da ese 187 00:07:55,440 --> 00:07:57,590 modelo mental, tal vez. 188 00:07:57,590 --> 00:08:00,680 >> Durante toda la semana derecha, por lo último que se zambulló en Scratch, y nos 189 00:08:00,680 --> 00:08:03,610 habló acerca de la programación en un nivel gráfico bastante alto. 190 00:08:03,610 --> 00:08:05,340 Y hoy hacemos la transición a una lengua 191 00:08:05,340 --> 00:08:08,300 llamado C, un lenguaje de programación más abajo en la parte superior de 192 00:08:08,300 --> 00:08:11,260 que muchas lenguas modernas se construyen ahora, incluso algunos 193 00:08:11,260 --> 00:08:13,010 de los que vamos a utilizar a finales término. 194 00:08:13,010 --> 00:08:15,530 Y sintácticamente, lo que parecen 195 00:08:15,530 --> 00:08:17,330 es todo muy similar. 196 00:08:17,330 --> 00:08:19,080 Así que vamos a empezar a hacer esta transición aquí. 197 00:08:19,080 --> 00:08:21,730 Así que este era un programa de la semana pasada que era el más simple de 198 00:08:21,730 --> 00:08:22,910 hola programas mundiales. 199 00:08:22,910 --> 00:08:25,560 Simplemente imprime en la pantalla hola mundo, con una 200 00:08:25,560 --> 00:08:27,650 bocadillo pequeño que sale del gato. 201 00:08:27,650 --> 00:08:30,590 Bueno, si empezamos ahora a traducir esto a otro 202 00:08:30,590 --> 00:08:33,419 idioma, se dan cuenta de que las ideas de hoy y el miércoles 203 00:08:33,419 --> 00:08:36,450 son idénticas, pero la sintaxis comienza a cambiar. 204 00:08:36,450 --> 00:08:39,370 Así que, la semana pasada tuvimos, cuando hace clic en la bandera verde, por ejemplo 205 00:08:39,370 --> 00:08:40,340 hola mundo. 206 00:08:40,340 --> 00:08:43,870 Hoy vamos a tener int, void main, printf, 207 00:08:43,870 --> 00:08:46,350 A cambio, con una sintaxis otro en allí también. 208 00:08:46,350 --> 00:08:49,200 Los corchetes y paréntesis y comillas, y otras cosas. 209 00:08:49,200 --> 00:08:54,520 Pero darse cuenta de que el núcleo de la idea aquí es la tecnología de impresión, 210 00:08:54,520 --> 00:08:58,470 y, finalmente, el hecho de que la principal es ahora va a ser 211 00:08:58,470 --> 00:09:00,770 sinónimo de la partida de un programa. 212 00:09:00,770 --> 00:09:04,250 Principal va a ser donde la bandera verde patea las cosas. 213 00:09:04,250 --> 00:09:06,390 >> Así que ahora vamos a separar algunos de los componentes básicos aquí 214 00:09:06,390 --> 00:09:08,650 Antes de profundizar en algunos ejemplos concretos. 215 00:09:08,650 --> 00:09:11,620 Así que nos llamaron esta semana una última declaración, por lo que es justo 216 00:09:11,620 --> 00:09:12,470 una instrucción. 217 00:09:12,470 --> 00:09:15,660 Haga esto - en este caso, por ejemplo hello world. 218 00:09:15,660 --> 00:09:18,400 Bueno, en C, si miramos sólo esa línea, esta es la forma en que estamos 219 00:09:18,400 --> 00:09:20,920 va a empezar a expresar esa pieza del rompecabezas particular: 220 00:09:20,920 --> 00:09:24,780 printf ("hola mundo");. 221 00:09:24,780 --> 00:09:27,330 Y ahora vamos a fastidiar las distingue más y más con el tiempo, 222 00:09:27,330 --> 00:09:29,330 pero se dan cuenta de que hay un patrón aquí. 223 00:09:29,330 --> 00:09:31,870 Por lo tanto, tenemos esta cosa llamada printf, que es 224 00:09:31,870 --> 00:09:34,310 esencialmente análoga a la palabra Say. 225 00:09:34,310 --> 00:09:35,800 Eso es lo que va a hacer. 226 00:09:35,800 --> 00:09:37,870 Printf, yf aquí significa "formateado". 227 00:09:37,870 --> 00:09:39,270 Por lo tanto, sólo significa que usted puede insertar 228 00:09:39,270 --> 00:09:41,600 diversos detalles estéticos. 229 00:09:41,600 --> 00:09:43,770 Así que entre comillas es el comienzo de lo que vamos 230 00:09:43,770 --> 00:09:45,340 para empezar a llamar a una cadena. 231 00:09:45,340 --> 00:09:47,110 Una palabra, una frase, una oración. 232 00:09:47,110 --> 00:09:50,220 Una cadena en un lenguaje de programación es una secuencia de cero 233 00:09:50,220 --> 00:09:51,330 o más caracteres. 234 00:09:51,330 --> 00:09:54,390 Así que h-e-l-l-o, coma, y ​​es así sucesivamente, 235 00:09:54,390 --> 00:09:56,290 entre comillas, una cadena. 236 00:09:56,290 --> 00:09:58,710 Y ahora backslash n, un poco extraño sintácticamente, pero 237 00:09:58,710 --> 00:10:01,780 ya se ha definido que la semana pasada en el sentido de que? 238 00:10:01,780 --> 00:10:02,630 Es sólo una nueva línea. 239 00:10:02,630 --> 00:10:05,000 Es sólo una forma de transmitir a la computadora que usted desea que el 240 00:10:05,000 --> 00:10:07,700 equivalente de golpear la tecla Intro allí, pero no lo hace 241 00:10:07,700 --> 00:10:10,460 quieren golpear realmente Entra y por lo tanto estropear toda la 242 00:10:10,460 --> 00:10:12,130 formato de su programa actual. 243 00:10:12,130 --> 00:10:15,500 Ahora los paréntesis incluyen esta cadena, paren abierto y 244 00:10:15,500 --> 00:10:18,130 paren cerca y dentro de eso es nuestra cadena. 245 00:10:18,130 --> 00:10:22,600 Porque eso es debido a que en C, y otros programas 246 00:10:22,600 --> 00:10:27,510 lenguas, cosas como printf toman argumentos, o tomar 247 00:10:27,510 --> 00:10:28,420 parámetros. 248 00:10:28,420 --> 00:10:31,490 >> Así que empezar a pensar ahora de este bloque Say púrpura como un 249 00:10:31,490 --> 00:10:34,890 función, como un método, como un procedimiento. 250 00:10:34,890 --> 00:10:36,890 ¿De verdad se puede llamar lo que quieras, por ahora, pero 251 00:10:36,890 --> 00:10:39,260 es una especie de un programa en miniatura que sólo hace una 252 00:10:39,260 --> 00:10:41,480 cosa, en una sola línea, ni menos. 253 00:10:41,480 --> 00:10:43,620 Así que printf es también lo que vamos a empezar a llamar a un 254 00:10:43,620 --> 00:10:46,680 función, y las funciones de hacer algo - en este caso 255 00:10:46,680 --> 00:10:49,320 imprime una cadena con formato a la pantalla - 256 00:10:49,320 --> 00:10:53,220 sino que funciona también toman argumentos o parámetros. 257 00:10:53,220 --> 00:10:55,880 Y por argumentos o parámetros, gracias, queremos decir 258 00:10:55,880 --> 00:11:01,220 que su comportamiento puede ser influenciado por lo que se pasa en 259 00:11:01,220 --> 00:11:03,420 dentro de los paréntesis. 260 00:11:03,420 --> 00:11:06,460 Así que en este caso, las necesidades de printf se les diga lo que desea imprimir, y 261 00:11:06,460 --> 00:11:09,520 sólo tiene que pasar en, entre comillas aquí, la cadena que nos 262 00:11:09,520 --> 00:11:11,270 realmente desea imprimir. 263 00:11:11,270 --> 00:11:14,060 Y el punto y coma en el final de esta línea es sólo una 264 00:11:14,060 --> 00:11:18,020 molestia histórica según la cual al final de la mayoría de las líneas de código, 265 00:11:18,020 --> 00:11:21,170 se pone un punto y coma para hacer súper claro para el equipo 266 00:11:21,170 --> 00:11:23,020 que esta línea de código termina aquí. 267 00:11:23,020 --> 00:11:25,600 Ahora bien, esto es bueno, porque como veremos como obtener más programas 268 00:11:25,600 --> 00:11:29,030 complejo, el punto y coma hará súper claras para nosotros los seres humanos, 269 00:11:29,030 --> 00:11:32,280 y también el ordenador, donde las líneas de código de inicio y de fin. 270 00:11:32,280 --> 00:11:34,360 Darse cuenta de que algunos lenguajes no tienen algún 271 00:11:34,360 --> 00:11:35,045 de estos mismos detalles. 272 00:11:35,045 --> 00:11:37,870 Y de hecho, en JavaScript, que no siempre se necesita algo 273 00:11:37,870 --> 00:11:38,670 como el punto y coma. 274 00:11:38,670 --> 00:11:40,210 Pero más sobre esto más por venir. 275 00:11:40,210 --> 00:11:41,170 >> Así bucles. 276 00:11:41,170 --> 00:11:43,520 Teníamos algo así, muy intuitiva, obviamente, hacer 277 00:11:43,520 --> 00:11:44,860 algo una y otra vez y otra vez. 278 00:11:44,860 --> 00:11:47,720 Como ponerse los calcetines, o decir hola, en este caso. 279 00:11:47,720 --> 00:11:51,090 Pues bien, a partir de hoy en C, que podríamos expresar esta arañazos 280 00:11:51,090 --> 00:11:54,970 bloquear como while (true) printf ("hola mundo"). 281 00:11:54,970 --> 00:11:57,630 Así que notar que estamos empezando a construir literalmente en el rompecabezas 282 00:11:57,630 --> 00:11:58,480 pieza de antes. 283 00:11:58,480 --> 00:12:01,310 Tenemos el mismo bloque morado, pero es dentro de este 284 00:12:01,310 --> 00:12:04,880 Siempre entre corchetes bloque, y la mejor manera de traducir que 285 00:12:04,880 --> 00:12:06,480 para C es como sigue. 286 00:12:06,480 --> 00:12:08,130 No hay ninguna palabra clave para siempre. 287 00:12:08,130 --> 00:12:10,940 No se puede escribir f-o-r-e-e-v-r en C. 288 00:12:10,940 --> 00:12:13,440 Así que el análogo más cercano es tiempo. 289 00:12:13,440 --> 00:12:17,050 >> Ahora bien, mientras que (verdad) parece un poco estúpido porque tiene el valor 290 00:12:17,050 --> 00:12:18,700 de cambio nunca es verdad? 291 00:12:18,700 --> 00:12:19,810 Presumiblemente no. 292 00:12:19,810 --> 00:12:22,770 Es como decir que mientras uno, mientras que en adelante, mientras que cierto. 293 00:12:22,770 --> 00:12:25,430 Todo es lo mismo, verdadero es siempre el caso. 294 00:12:25,430 --> 00:12:29,860 Así que este circuito es en realidad la inducción de qué tipo de bucle? 295 00:12:29,860 --> 00:12:31,210 Sólo un bucle infinito, claro. 296 00:12:31,210 --> 00:12:32,930 Un bucle infinito o como lo llamó la semana pasada, 297 00:12:32,930 --> 00:12:33,870 sólo un bucle infinito. 298 00:12:33,870 --> 00:12:35,250 Así que a veces eso es malo. 299 00:12:35,250 --> 00:12:37,060 A veces eso es un error, a veces es por eso que te dan 300 00:12:37,060 --> 00:12:39,340 la pelota de playa girando o reloj de arena o similar. 301 00:12:39,340 --> 00:12:41,260 Pero en este caso, de manera deliberada, para lo 302 00:12:41,260 --> 00:12:43,040 razón, quería imprimir la misma cosa otra vez 303 00:12:43,040 --> 00:12:43,970 y una y otra vez. 304 00:12:43,970 --> 00:12:45,900 O en el caso de un reloj, que quiere hacer 305 00:12:45,900 --> 00:12:47,470 algo una y otra vez y otra vez. 306 00:12:47,470 --> 00:12:49,070 Así bucles infinitos podría tener sentido. 307 00:12:49,070 --> 00:12:53,560 Y es así como en C que podríamos traducir por siempre con el código. 308 00:12:53,560 --> 00:12:55,570 >> Así que ahora éste es un poco más específico. 309 00:12:55,570 --> 00:12:58,880 Habíamos repetir 10 veces la siguiente declaración. 310 00:12:58,880 --> 00:13:02,490 Así, mientras que (verdad) no acaba de funcionar allí, porque es la verdadera 311 00:13:02,490 --> 00:13:03,590 siempre es cierto. 312 00:13:03,590 --> 00:13:07,060 Así que si en lugar de mirar a la versión C, ahora la sintaxis obtiene una 313 00:13:07,060 --> 00:13:08,180 poco más críptico. 314 00:13:08,180 --> 00:13:11,380 Pero para ser honesto, una vez que empiezas a ver esto, todo se vuelve 315 00:13:11,380 --> 00:13:12,600 bastante familiarizado con rapidez. 316 00:13:12,600 --> 00:13:14,370 Así que esto es lo que se llama un bucle for. 317 00:13:14,370 --> 00:13:17,210 Un bucle que va a decirle a la computadora que haga algo 318 00:13:17,210 --> 00:13:20,710 una y otra vez y otra vez durante el tiempo que 319 00:13:20,710 --> 00:13:21,850 estas cosas son verdaderas. 320 00:13:21,850 --> 00:13:23,370 Ahora, ¿qué queremos decir con eso? 321 00:13:23,370 --> 00:13:25,470 Bueno, hay tres partes para un bucle for, y vamos a 322 00:13:25,470 --> 00:13:28,240 volver a ello en el contexto de la actual 323 00:13:28,240 --> 00:13:29,100 ejemplos en un momento. 324 00:13:29,100 --> 00:13:31,650 Así que no te preocupes si no acaba de hundirse en una sola vez. 325 00:13:31,650 --> 00:13:35,400 Pero int i = 0 es, cuento largo, diciendo dame un 326 00:13:35,400 --> 00:13:38,290 variable que es de tipo entero, así que dame un número 327 00:13:38,290 --> 00:13:40,890 llamado i, y se inicializa a 0. 328 00:13:40,890 --> 00:13:43,460 Eso es darme como una variable x algebraica y 329 00:13:43,460 --> 00:13:44,580 inicializar a 0. 330 00:13:44,580 --> 00:13:46,250 Pero en este caso lo llamamos i. 331 00:13:46,250 --> 00:13:49,120 Entonces en el medio, se dice i es menor que 10. 332 00:13:49,120 --> 00:13:52,150 Eso dice la computadora es el material siguiente, siempre 333 00:13:52,150 --> 00:13:53,770 como i es menor que 10. 334 00:13:53,770 --> 00:13:55,370 Y, obviamente, que se inicia a menos de 10, porque 335 00:13:55,370 --> 00:13:56,550 que comienza en 0. 336 00:13:56,550 --> 00:13:59,150 Entonces, por último, quizás puedas adivinar lo que significa + +. 337 00:13:59,150 --> 00:14:02,140 Es un poco de sintaxis que sólo significa incrementar i. 338 00:14:02,140 --> 00:14:05,270 Así que añadir 1 a i, una y otra vez y otra vez. 339 00:14:05,270 --> 00:14:09,260 >> Y así, como veremos este bucle, esta sintaxis, más bien, pone en práctica 340 00:14:09,260 --> 00:14:12,160 precisamente la misma cosa que, francamente, en Scratch era tan 341 00:14:12,160 --> 00:14:13,250 mucho más fácil de expresar. 342 00:14:13,250 --> 00:14:15,170 Repita 10, y ya está. 343 00:14:15,170 --> 00:14:17,690 En C, y en la mayoría de los lenguajes de programación, que tiene que ser un 344 00:14:17,690 --> 00:14:20,190 poco más instructivo para el equipo y en realidad 345 00:14:20,190 --> 00:14:21,630 especificar algo como esto. 346 00:14:21,630 --> 00:14:23,730 Pero vamos a volver a esta y otras sintaxis. 347 00:14:23,730 --> 00:14:24,780 >> ¿Qué variables? 348 00:14:24,780 --> 00:14:26,940 En Scratch teníamos algo así como esos bloques de color naranja, 349 00:14:26,940 --> 00:14:28,180 donde podría declarar una variable. 350 00:14:28,180 --> 00:14:30,000 Vamos a llamar arbitrariamente en sentido contrario. 351 00:14:30,000 --> 00:14:31,880 Vamos a inicializar a 0 y, a continuación, 352 00:14:31,880 --> 00:14:33,240 siempre vamos a hacer algo. 353 00:14:33,240 --> 00:14:35,760 En este caso en Scratch que estoy diciendo el mostrador, por lo que el 354 00:14:35,760 --> 00:14:38,230 gato va a tener un bocadillo pequeño que está hablando 355 00:14:38,230 --> 00:14:40,010 el número que hay en esta variable. 356 00:14:40,010 --> 00:14:42,460 Y luego tenemos contador de cambio en 1. 357 00:14:42,460 --> 00:14:45,760 Así que todo esto está envuelto dentro de una cerradura Forever. 358 00:14:45,760 --> 00:14:48,960 Así que ahora ya tenemos los elementos básicos en C con 359 00:14:48,960 --> 00:14:50,040 que para traducir esta. 360 00:14:50,040 --> 00:14:51,650 >> Una forma en que podría hacerlo es la siguiente. 361 00:14:51,650 --> 00:14:53,890 Dame un número entero, lo llaman mostrador. 362 00:14:53,890 --> 00:14:55,190 Inicializar a 0 363 00:14:55,190 --> 00:14:56,490 en la primera línea allí. 364 00:14:56,490 --> 00:14:59,390 Mientras que (verdad), así que estoy robando la idea de un momento 365 00:14:59,390 --> 00:15:01,300 hace, seguir adelante y hacer lo siguiente. 366 00:15:01,300 --> 00:15:04,880 Imprimir el contador, y luego incrementar el contador, 367 00:15:04,880 --> 00:15:06,930 de nuevo, y de nuevo, y de nuevo. 368 00:15:06,930 --> 00:15:09,380 O, de nuevo, + + sólo significa añadir 1 a algo. 369 00:15:09,380 --> 00:15:11,030 Pero hay una nueva pieza de sintaxis aquí. 370 00:15:11,030 --> 00:15:15,730 ¿Qué está saltando como no se encuentra entre los ejemplos anteriores? 371 00:15:15,730 --> 00:15:17,190 Sí,% d. 372 00:15:17,190 --> 00:15:19,810 Así que tal vez puede inferir qué está haciendo esto, francamente, basado 373 00:15:19,810 --> 00:15:21,410 en lo que el bloque Scratch está haciendo. 374 00:15:21,410 --> 00:15:24,510 Pero, de nuevo en C, sólo tenemos que ser un poco más concreto 375 00:15:24,510 --> 00:15:25,990 a la hora de expresarnos. 376 00:15:25,990 --> 00:15:30,560 >> Así printf ("% d \ n"). 377 00:15:30,560 --> 00:15:32,320 Bueno, la mayor parte de que podemos tirar tan familiar. 378 00:15:32,320 --> 00:15:34,910 Las comillas sólo significa que es una cadena, la barra invertida n 379 00:15:34,910 --> 00:15:35,970 es sólo una nueva línea. 380 00:15:35,970 --> 00:15:38,860 Así que lo único nuevo aquí es% d. 381 00:15:38,860 --> 00:15:40,390 Y todo lo que es, es un marcador de posición. 382 00:15:40,390 --> 00:15:43,510 D% va a denotar un número decimal. 383 00:15:43,510 --> 00:15:47,820 Y equipo% medio d, poner un número decimal aquí. 384 00:15:47,820 --> 00:15:49,450 Bueno, ¿qué número quieres puso allí? 385 00:15:49,450 --> 00:15:52,400 Bueno, como usted tal vez pueda deducir, después de la coma se dice 386 00:15:52,400 --> 00:15:55,480 contador, que es el nombre de una variable que se declara o 387 00:15:55,480 --> 00:15:57,260 creado un par de líneas antes. 388 00:15:57,260 --> 00:16:02,420 Así que esto es sólo la forma de C de conectar una variable en una 389 00:16:02,420 --> 00:16:04,480 cadena dinámicamente. 390 00:16:04,480 --> 00:16:07,350 Debido a que por el contrario, si yo hubiera hecho en su lugar algo así como 391 00:16:07,350 --> 00:16:12,470 esto, printf ("contra"), lo que haría este 392 00:16:12,470 --> 00:16:15,220 programa en lugar hacerlo, presumiblemente? 393 00:16:15,220 --> 00:16:17,260 Es, literalmente, va a imprimir "contador". 394 00:16:17,260 --> 00:16:18,750 Lo cual no es el efecto que quiero. 395 00:16:18,750 --> 00:16:20,920 Tengo que sustituir en un valor numérico. 396 00:16:20,920 --> 00:16:24,340 Así que veremos que las funciones de entonces, como printf, no puede tomar 397 00:16:24,340 --> 00:16:26,930 apenas argumentos individuales, como 398 00:16:26,930 --> 00:16:28,150 "Hola mundo". 399 00:16:28,150 --> 00:16:32,050 Ellos pueden tomar coma cita fin de la cita y, a continuación algunas variables 400 00:16:32,050 --> 00:16:35,830 que recibirá conectado a, como veremos la cadena anterior 401 00:16:35,830 --> 00:16:38,280 a través de estas variables% de signos. 402 00:16:38,280 --> 00:16:39,660 >> Bueno, ¿qué pasa con las expresiones booleanas? 403 00:16:39,660 --> 00:16:42,200 Las expresiones booleanas son estos valores, verdadero o falso. 404 00:16:42,200 --> 00:16:42,830 Sí o no. 405 00:16:42,830 --> 00:16:44,020 1 o 0. 406 00:16:44,020 --> 00:16:45,190 Encendido o apagado. 407 00:16:45,190 --> 00:16:47,570 Así que en Scratch se ven así, y note que la 408 00:16:47,570 --> 00:16:50,170 bloque de fondo aquí es en realidad la conjunción 409 00:16:50,170 --> 00:16:51,500 de dos bloques más pequeños. 410 00:16:51,500 --> 00:16:53,610 Así que tipo de arrastrar y soltar las piezas del rompecabezas tres 411 00:16:53,610 --> 00:16:56,450 juntos para hacer que la pieza del rompecabezas que está allí para que yo 412 00:16:56,450 --> 00:17:00,420 podría transmitir la idea que quiero que x sea menor que y y 413 00:17:00,420 --> 00:17:02,540 y para que sea menor que z. 414 00:17:02,540 --> 00:17:05,790 Y por lo que puedo traducir estas dos líneas separadas de la siguiente manera. 415 00:17:05,790 --> 00:17:08,650 La de arriba puede ser muy trivial traducido a C, 416 00:17:08,650 --> 00:17:10,069 con apenas x 00:17:11,990 Tal vez con algunos paréntesis para una buena medida. 418 00:17:11,990 --> 00:17:15,520 Y luego, en C, no se escribe y denotan la 419 00:17:15,520 --> 00:17:16,819 conjunción de algo. 420 00:17:16,819 --> 00:17:19,585 En su lugar, escriba &&. 421 00:17:19,585 --> 00:17:22,849 Y a medida que el tiempo lo verás, un solo carácter & le sucede a 422 00:17:22,849 --> 00:17:23,880 significa algo diferente. 423 00:17:23,880 --> 00:17:27,530 Así && sólo denota la idea de AND. 424 00:17:27,530 --> 00:17:30,040 >> Así que de nuevo, aunque esto empieza a parecer bastante complejo, 425 00:17:30,040 --> 00:17:32,560 uno de los propósitos de la introducción de Scratch, además 426 00:17:32,560 --> 00:17:34,810 sólo tener una especie de diversión de la rampa donde se puede hacer 427 00:17:34,810 --> 00:17:36,590 algo que es muy gráfico y animación, y 428 00:17:36,590 --> 00:17:39,000 compartible y similares, es también de transmitir la idea de que los 429 00:17:39,000 --> 00:17:42,010 todas las ideas que empezar a bucear en la actualidad y en adelante 430 00:17:42,010 --> 00:17:44,300 han sido incorporados en incluso de simple 431 00:17:44,300 --> 00:17:46,850 interfaz desde el primer día. 432 00:17:46,850 --> 00:17:47,790 ¿Y este de aquí? 433 00:17:47,790 --> 00:17:48,860 >> Así condiciones. 434 00:17:48,860 --> 00:17:50,590 De modo que el bloque de arañazos en el lado izquierdo se ve allí 435 00:17:50,590 --> 00:17:51,610 un poco más complejo. 436 00:17:51,610 --> 00:17:52,650 Pero es sólo un poco de arrastre y 437 00:17:52,650 --> 00:17:54,140 dejar caer de piezas conocidas. 438 00:17:54,140 --> 00:17:56,690 Si x es menor que y, dígalo. 439 00:17:56,690 --> 00:17:59,900 Porque si x es mayor que y, dígalo. 440 00:17:59,900 --> 00:18:02,460 Si no, lógicamente podemos asumir que es inferir que 441 00:18:02,460 --> 00:18:03,580 deben ser iguales. 442 00:18:03,580 --> 00:18:05,220 Así que decir que son iguales. 443 00:18:05,220 --> 00:18:07,690 Ahora en C en lo correcto, exactamente el mismo. 444 00:18:07,690 --> 00:18:09,730 Y note que las llaves se va a ser un 445 00:18:09,730 --> 00:18:12,190 característica de C y otros lenguajes que hacen este tipo 446 00:18:12,190 --> 00:18:13,210 de encapsulación. 447 00:18:13,210 --> 00:18:15,470 Al igual que el bloque es si esta cosa amarilla que es una especie de 448 00:18:15,470 --> 00:18:17,770 agarrar el bloque morado dentro de ella. 449 00:18:17,770 --> 00:18:19,480 Del mismo modo son estas llaves - 450 00:18:19,480 --> 00:18:20,870 estas llaves - 451 00:18:20,870 --> 00:18:24,710 destinado a evocar la idea misma de abrazar uno o más 452 00:18:24,710 --> 00:18:27,680 líneas de código que se sangría dentro de ellos. 453 00:18:27,680 --> 00:18:31,270 Así que en el lado derecho aquí, si x menor que y, printf 454 00:18:31,270 --> 00:18:32,270 ("X es menor que y"). 455 00:18:32,270 --> 00:18:34,980 Else si x es mayor que y, imprimir el mismo. 456 00:18:34,980 --> 00:18:38,360 Otras ventas imprimir que son iguales. 457 00:18:38,360 --> 00:18:41,750 >> Así que en resumen, no hay una correlación bastante directa o traducción 458 00:18:41,750 --> 00:18:44,720 del lenguaje que hemos visto hasta ahora, incluso para algunos 459 00:18:44,720 --> 00:18:45,940 de las características más sofisticadas. 460 00:18:45,940 --> 00:18:48,680 Así que no podría estar usando esto para su proyecto, o tal vez no 461 00:18:48,680 --> 00:18:51,150 utilizar esto para su proyecto esta semana. 462 00:18:51,150 --> 00:18:54,650 Pero hemos esas cosas llamadas matrices en C. En Scratch, 463 00:18:54,650 --> 00:18:55,680 se llaman listas. 464 00:18:55,680 --> 00:18:59,370 Y vimos esto con el RPG Fruitcraft la semana pasada. 465 00:18:59,370 --> 00:19:01,320 El pequeño azul que estaba caminando, recogiendo 466 00:19:01,320 --> 00:19:03,010 cerezas y naranjas y similares. 467 00:19:03,010 --> 00:19:05,110 Bueno, en Scratch, que se llevó a cabo con esta naranja 468 00:19:05,110 --> 00:19:09,000 bloque que contiene palabras, en este caso, estamos literalmente 469 00:19:09,000 --> 00:19:10,800 y agregó que "naranja" a un 470 00:19:10,800 --> 00:19:12,460 variable llamada inventario. 471 00:19:12,460 --> 00:19:14,910 Así que en C, esta sintaxis se va a poner un poco más críptico. 472 00:19:14,910 --> 00:19:17,250 Y vamos a volver a la semana siguiente y hacer más 473 00:19:17,250 --> 00:19:21,060 cosas interesantes en el mundo de la criptografía con él. 474 00:19:21,060 --> 00:19:23,990 Pero en el fondo aquí, estas dos líneas esencialmente 475 00:19:23,990 --> 00:19:27,550 se traducen en lo que estamos haciendo en un rasguño bloquear hasta allí. 476 00:19:27,550 --> 00:19:30,120 Pero más sobre esto más por venir. 477 00:19:30,120 --> 00:19:34,120 >> Por lo tanto, poner juntos, aquí hay un programa en C. Así que vamos a 478 00:19:34,120 --> 00:19:36,590 rápidamente separar algunas de las piezas de la sintaxis aquí, pero 479 00:19:36,590 --> 00:19:40,300 entonces vamos a realmente comenzar a escribir algo de código, familiarizarse 480 00:19:40,300 --> 00:19:42,440 con algunas de las herramientas que va a utilizar, y ver si podemos 481 00:19:42,440 --> 00:19:45,400 puede aprovechar ahora algunos de estos bloques de construcción básicos de 482 00:19:45,400 --> 00:19:49,150 la semana pasada, ahora sintácticamente en C. Por lo tanto en la parte superior aquí, esta 483 00:19:49,150 --> 00:19:51,380 es quizás uno de los programas más aburridos que podría 484 00:19:51,380 --> 00:19:53,130 escribir en casi cualquier lenguaje de programación. 485 00:19:53,130 --> 00:19:55,010 Pero es una especie de tiene un significado especial porque es la 486 00:19:55,010 --> 00:19:58,120 programa canónico que cualquier científico de la computación cuando escribe 487 00:19:58,120 --> 00:19:59,620 enseñar a alguien un lenguaje de programación - 488 00:19:59,620 --> 00:20:01,230 un programa hello world. 489 00:20:01,230 --> 00:20:05,120 >> Así que en la parte superior, vemos que esta noción de # include 490 00:20:05,120 --> 00:20:08,180 y, a continuación, entre paréntesis angulares, stdio.h. 491 00:20:08,180 --> 00:20:10,580 Nos vamos a volver a eso, pero lo que realmente 492 00:20:10,580 --> 00:20:13,770 significa es que no es un archivo en este mundo llamado estándar 493 00:20:13,770 --> 00:20:17,670 I / O, stdio punto h, y eso es sólo un archivo de texto que 494 00:20:17,670 --> 00:20:19,240 alguien escribió hace años. 495 00:20:19,240 --> 00:20:22,550 Y dentro de ese archivo de texto son un montón de 496 00:20:22,550 --> 00:20:25,840 funciones o métodos o procedimientos, que alguien más 497 00:20:25,840 --> 00:20:28,970 escribió que nosotros somos los beneficiarios de porque 498 00:20:28,970 --> 00:20:31,420 Ahora puede utilizar el código de esa persona. 499 00:20:31,420 --> 00:20:33,070 Las funciones que él o ella escribió. 500 00:20:33,070 --> 00:20:36,320 En este caso, printf no es algo que yo escribí, es 501 00:20:36,320 --> 00:20:37,500 no es algo que escribió CS50. 502 00:20:37,500 --> 00:20:40,290 Es algo que alguien escribió hace años y poner en un 503 00:20:40,290 --> 00:20:43,450 archivo llamado stdio.h y luego, en un aparte, poner 504 00:20:43,450 --> 00:20:45,830 otra parte de la función en otro archivo. 505 00:20:45,830 --> 00:20:46,940 Pero vamos a llegar allí. 506 00:20:46,940 --> 00:20:50,070 >> Así que # include es sólo nuestra forma de decir, en 507 00:20:50,070 --> 00:20:53,110 C, dame acceso a las funciones que otra persona escribió. 508 00:20:53,110 --> 00:20:55,490 Y en este caso me importa porque quiero printf. 509 00:20:55,490 --> 00:20:57,530 Ahora tenemos int main (void). 510 00:20:57,530 --> 00:21:00,160 Así que esta es una de esas cosas que, francamente, que en el día 0, 511 00:21:00,160 --> 00:21:02,400 más o menos he de tipo de fuera de zona, porque es sólo 512 00:21:02,400 --> 00:21:03,260 No es interesante 513 00:21:03,260 --> 00:21:04,780 intelectual, algunos de la sintaxis. 514 00:21:04,780 --> 00:21:07,940 Pero por ahora sabemos que las funciones, también conocido como 515 00:21:07,940 --> 00:21:11,660 procedimientos o métodos, generalmente producen un cierto valor. 516 00:21:11,660 --> 00:21:12,520 Hacen algo. 517 00:21:12,520 --> 00:21:13,810 Ellos vienen con una respuesta. 518 00:21:13,810 --> 00:21:15,020 Producen salida. 519 00:21:15,020 --> 00:21:18,780 Así int junto al principal es sólo nuestra forma abreviada de decir 520 00:21:18,780 --> 00:21:21,380 que esta función, este procedimiento, finalmente se va 521 00:21:21,380 --> 00:21:22,650 para darle de nuevo un número. 522 00:21:22,650 --> 00:21:24,370 ¿Y por qué esto es, vamos a volver. 523 00:21:24,370 --> 00:21:27,810 Principal es el estándar mundial para el valor predeterminado por defecto 524 00:21:27,810 --> 00:21:30,990 función que va a se ejecutan en un programa de C cuando 525 00:21:30,990 --> 00:21:31,860 que lo ejecute. 526 00:21:31,860 --> 00:21:34,160 Void sólo significa esta cosa, principal, no se hace 527 00:21:34,160 --> 00:21:35,270 argumentos, en este caso. 528 00:21:35,270 --> 00:21:36,400 Así que estoy siendo súper explícito. 529 00:21:36,400 --> 00:21:38,160 No hay cadenas en allí, no hay comas. 530 00:21:38,160 --> 00:21:40,690 Vacío significa que no hay argumentos para principal. 531 00:21:40,690 --> 00:21:44,350 >> Ahora, por último, por suerte, las dos últimas líneas están familiarizados. 532 00:21:44,350 --> 00:21:46,160 Dentro de las llaves tenemos un printf 533 00:21:46,160 --> 00:21:47,620 y tenemos un cambio. 534 00:21:47,620 --> 00:21:50,450 Y el regreso es un poco lamentable que tengamos que 535 00:21:50,450 --> 00:21:53,510 lo puso allí, porque en este caso no está haciendo todo lo que 536 00:21:53,510 --> 00:21:54,600 mucho de interés. 537 00:21:54,600 --> 00:21:58,790 Pero en un programa de ordenador, cuando una función devuelve 0, 538 00:21:58,790 --> 00:22:00,610 eso significa que todo está bien. 539 00:22:00,610 --> 00:22:01,820 Nada de lo que salió mal. 540 00:22:01,820 --> 00:22:06,170 Por el contrario, si una función devuelve 1, 1 o negativo, o 541 00:22:06,170 --> 00:22:11,670 1.337 negativos, o algunos números al azar por el estilo, que 542 00:22:11,670 --> 00:22:14,020 generalmente significa que un error ha ocurrido realmente. 543 00:22:14,020 --> 00:22:16,150 Así que si usted está en su Mac o su PC, si alguna vez has visto 544 00:22:16,150 --> 00:22:18,590 algún mensaje molesto porque el equipo se ha estrellado o 545 00:22:18,590 --> 00:22:20,660 congelado, y hay un mensaje de error críptico, 546 00:22:20,660 --> 00:22:23,320 y luego algo de código, como sistema de código 547 00:22:23,320 --> 00:22:25,110 1,2,3,4, algún número, 548 00:22:25,110 --> 00:22:29,270 que generalmente es un detalle innecesario decir 549 00:22:29,270 --> 00:22:32,110 la mayoría de nosotros los seres humanos, pero eso es lo que alguna función o algún 550 00:22:32,110 --> 00:22:34,890 programa en realidad ha vuelto, un valor distinto de cero. 551 00:22:34,890 --> 00:22:38,540 Y el beneficio de esto es que 0 significa todo también, y 552 00:22:38,540 --> 00:22:40,470 entonces usted esencialmente tiene un número infinito de cosas que 553 00:22:40,470 --> 00:22:41,130 puede salir mal. 554 00:22:41,130 --> 00:22:44,700 Es por eso que eligieron 0 para el bien y un valor distinto de cero para 555 00:22:44,700 --> 00:22:46,450 malo, como pronto veremos. 556 00:22:46,450 --> 00:22:47,870 >> Así que vamos a seguir adelante y escribir esto. 557 00:22:47,870 --> 00:22:51,610 Así que recordar que el otro día utilicé mi Mac para abrir un 558 00:22:51,610 --> 00:22:53,970 ventana de terminal, y luego abrí programa de texto, como 559 00:22:53,970 --> 00:22:55,900 TextEdit, y empecé a escribir algo de código. 560 00:22:55,900 --> 00:22:56,580 Bueno, eso está bien. 561 00:22:56,580 --> 00:22:58,636 Sin embargo, su experiencia va a ser diferente en un Mac, o 562 00:22:58,636 --> 00:23:01,220 en un equipo Solaris, un equipo con Linux, lo que sea operativo 563 00:23:01,220 --> 00:23:02,810 sistema que se esté utilizando. 564 00:23:02,810 --> 00:23:04,970 Y así, en el curso, lo que en lugar de usar es algo 565 00:23:04,970 --> 00:23:07,010 llamado Appliance CS50. 566 00:23:07,010 --> 00:23:10,420 De modo que el aparato CS50 es una pieza de software descargable 567 00:23:10,420 --> 00:23:13,640 que le permite ejecutar un sistema operativo llamado Linux, 568 00:23:13,640 --> 00:23:16,810 específicamente Fedora Linux, en su propio Mac o PC. 569 00:23:16,810 --> 00:23:20,810 Y lo hace mediante la descarga de algo que se llama un hipervisor. 570 00:23:20,810 --> 00:23:23,100 Así que todo esto se documenta en el boletín de problemas 1. 571 00:23:23,100 --> 00:23:25,240 Y usted será guiado hacia lo que usted necesita para descargar. 572 00:23:25,240 --> 00:23:27,510 Pero el resultado final, si tienes un Mac o un PC, es 573 00:23:27,510 --> 00:23:29,080 descargar algún software libre. 574 00:23:29,080 --> 00:23:32,340 A continuación, descargue el aparato CS50, y decirles que 575 00:23:32,340 --> 00:23:33,960 software libre - el hipervisor - 576 00:23:33,960 --> 00:23:38,080 para ejecutar el CS50 Appliance en una ventana en su computadora. 577 00:23:38,080 --> 00:23:39,490 Y lo que sucede es lo siguiente. 578 00:23:39,490 --> 00:23:43,660 >> He Ahora, fíjense aquí, lo que parece ser una computadora de escritorio 579 00:23:43,660 --> 00:23:44,130 ambiente. 580 00:23:44,130 --> 00:23:46,150 Y déjenme realmente reducir esta ventana. 581 00:23:46,150 --> 00:23:49,640 Así que esta es mi Mac, con un tiempo muy limitado, y en el interior 582 00:23:49,640 --> 00:23:51,300 de esta ventana pasa a ser un completamente 583 00:23:51,300 --> 00:23:52,380 sistema operativo diferente. 584 00:23:52,380 --> 00:23:55,250 De hecho hay este menú de inicio aquí abajo, que recuerda 585 00:23:55,250 --> 00:23:57,990 Windows, que tiene un montón de sub-menús, incluyendo 586 00:23:57,990 --> 00:24:00,720 un enlace al manual CS50, Dropbox, y similares. 587 00:24:00,720 --> 00:24:03,480 Y lo que este entorno es un entorno estándar 588 00:24:03,480 --> 00:24:06,280 que todos nosotros podemos usar, por lo que no importa cuál sea su 589 00:24:06,280 --> 00:24:08,960 computadora es, lo que usted ha instalado, la versión 590 00:24:08,960 --> 00:24:11,430 de Mac OS o Windows que está ejecutando, ahora todos tienen la 591 00:24:11,430 --> 00:24:12,800 mismo entorno. 592 00:24:12,800 --> 00:24:15,850 Y ahora, en este ambiente podemos empezar a escribir algo de código. 593 00:24:15,850 --> 00:24:18,480 >> Así que voy a seguir adelante y abrir un programa llamado gedit. 594 00:24:18,480 --> 00:24:21,500 Esto es comparable a notepad.exe, o 595 00:24:21,500 --> 00:24:22,790 TextEdit en Mac. 596 00:24:22,790 --> 00:24:25,390 Y esto es sólo un super sencillo programa de edición de texto 597 00:24:25,390 --> 00:24:27,500 que tiene este aspecto a primera vista. 598 00:24:27,500 --> 00:24:30,640 Ahora en la parte superior, tengo una paleta de color blanco, en la parte inferior que 599 00:24:30,640 --> 00:24:33,860 tener esta ventana en negro que dice jharvard aparato @. 600 00:24:33,860 --> 00:24:36,440 Y eso es porque la cuenta de usuario que previamente creado 601 00:24:36,440 --> 00:24:38,430 para todo el mundo que se llama John Harvard. 602 00:24:38,430 --> 00:24:41,490 Él tiene una carpeta en la que todos sus archivos se van a ir, y 603 00:24:41,490 --> 00:24:43,500 aquí es donde podemos empezar a escribir algo de código. 604 00:24:43,500 --> 00:24:45,810 Así que déjame ir delante aquí y acercar un poco, y estoy 605 00:24:45,810 --> 00:24:51,550 vamos a hacer # include, int main (void), y 606 00:24:51,550 --> 00:24:57,470 entonces yo voy a hacer printf ("hola mundo") 607 00:24:57,470 --> 00:24:59,490 , Devuelve 0. 608 00:24:59,490 --> 00:25:01,400 Ahora todo esto es bastante blanco y negro. 609 00:25:01,400 --> 00:25:03,830 >> Déjenme seguir adelante y hacer una cosa para enseñar gedit lo que soy 610 00:25:03,830 --> 00:25:04,510 haciendo en realidad. 611 00:25:04,510 --> 00:25:06,140 Déjame ir a Guardar como. 612 00:25:06,140 --> 00:25:08,560 Voy a elegir a la izquierda aquí jharvard. 613 00:25:08,560 --> 00:25:11,010 Así que de nuevo, incluso si usted nunca ha usado Linux antes, francamente 614 00:25:11,010 --> 00:25:13,680 estos días, todos ellos están delegando en esencialmente la 615 00:25:13,680 --> 00:25:14,590 mismo tipo de interfaz - 616 00:25:14,590 --> 00:25:16,030 Mac OS, Windows y Linux. 617 00:25:16,030 --> 00:25:18,680 Así que elegí la carpeta jharvard casa. 618 00:25:18,680 --> 00:25:21,120 Y voy a guardar este archivo como hello.c. 619 00:25:21,120 --> 00:25:24,260 Así que en la parte superior, escribí hello.c; nombrar un C 620 00:25:24,260 --> 00:25:26,520 programa con la extensión. c es 621 00:25:26,520 --> 00:25:27,570 lo que es una práctica común. 622 00:25:27,570 --> 00:25:28,650 Y me golpeó en Guardar. 623 00:25:28,650 --> 00:25:32,510 Y ahora lo bueno es que he enseñado efectivamente gedit, 624 00:25:32,510 --> 00:25:33,690 que este es un programa C. 625 00:25:33,690 --> 00:25:36,470 Tenga en cuenta que mi texto en blanco y negro es ahora un código de colores, o 626 00:25:36,470 --> 00:25:39,330 sintaxis resaltada, que sólo me llama la atención sobre la 627 00:25:39,330 --> 00:25:41,540 diferentes partes semánticas del programa. 628 00:25:41,540 --> 00:25:44,260 En la parte superior izquierda hay, ya que mis programas se vuelven más complejos, estoy 629 00:25:44,260 --> 00:25:47,060 va a tener un resumen de todas las cosas que he escrito. 630 00:25:47,060 --> 00:25:48,050 Así que es eso allá arriba. 631 00:25:48,050 --> 00:25:52,350 Ahora permítanme hacer un zoom hacia fuera e ir a esta ventana de terminal. 632 00:25:52,350 --> 00:25:54,570 >> Así que esta es quizás nuevo para muchas personas. 633 00:25:54,570 --> 00:25:57,260 Si usted nunca ha usado un entorno de línea de comandos, usted nunca ha 634 00:25:57,260 --> 00:26:00,020 utiliza DOS, o nunca ha usado Linux, o nunca has abierto 635 00:26:00,020 --> 00:26:02,550 Mac OS ventana de terminal, hay un montón de cosas que 636 00:26:02,550 --> 00:26:04,820 se podía hacer con la interfaz gráfica de usuario, tales como señalar y hacer clic, y 637 00:26:04,820 --> 00:26:07,080 arrastrando y soltando, y similares, pero en general - 638 00:26:07,080 --> 00:26:09,360 ciertamente en el mundo de la informática - 639 00:26:09,360 --> 00:26:11,580 utilizando una línea de comandos, donde usted no tiene el puntero del ratón 640 00:26:11,580 --> 00:26:14,220 en general, es suficiente con el teclado, es en realidad mucho 641 00:26:14,220 --> 00:26:17,260 más poderosa que la interfaz, una vez que se aclimate a la 642 00:26:17,260 --> 00:26:18,580 varios comandos. 643 00:26:18,580 --> 00:26:20,940 Y que tipo de liberarse de la necesidad de apuntar y hacer clic 644 00:26:20,940 --> 00:26:21,690 en todo. 645 00:26:21,690 --> 00:26:23,890 Así que en gedit vamos a resolver de tener lo mejor de ambos mundos. 646 00:26:23,890 --> 00:26:25,600 Podemos arrastrar y soltar texto, podemos ver 647 00:26:25,600 --> 00:26:26,840 bonito y con colores. 648 00:26:26,840 --> 00:26:29,630 Pero cuando llega el momento de ejecutar nuestro programa, a veces voy a 649 00:26:29,630 --> 00:26:31,750 sólo tiene que utilizar esta pequeña ventana aquí. 650 00:26:31,750 --> 00:26:33,460 >> Así que voy a seguir adelante y hacerlo. 651 00:26:33,460 --> 00:26:36,420 En la ventana de fondo en blanco y negro, voy a seguir adelante 652 00:26:36,420 --> 00:26:37,890 y escribir clang. 653 00:26:37,890 --> 00:26:40,130 Y clang es el nombre de un compilador. 654 00:26:40,130 --> 00:26:43,310 Es un programa que convierte el código fuente 655 00:26:43,310 --> 00:26:48,770 en, por lo que, de código objeto. 656 00:26:48,770 --> 00:26:51,270 0s y 1s, que vimos brevemente la semana pasada. 657 00:26:51,270 --> 00:26:53,700 Recordemos que la semana pasada, nos prometieron que nos iban a 658 00:26:53,700 --> 00:26:55,920 pasar de algo como esto - que necesitábamos estar 659 00:26:55,920 --> 00:26:57,010 algo como esto - 660 00:26:57,010 --> 00:26:58,700 y esto ciertamente no es algo que un ser humano va 661 00:26:58,700 --> 00:26:59,690 para hacerlo manualmente. 662 00:26:59,690 --> 00:27:01,980 Así que en vez que vamos a usar un programa, y ​​ese programa en 663 00:27:01,980 --> 00:27:03,430 este caso se denomina Clang. 664 00:27:03,430 --> 00:27:06,020 Y el nombre de mi programa es hello.c. 665 00:27:06,020 --> 00:27:09,670 Así que para compilar hello.c de código fuente en 666 00:27:09,670 --> 00:27:12,930 código objeto o 0s y 1s, debería bastar con sólo hacer 667 00:27:12,930 --> 00:27:14,820 esto y pulse Enter. 668 00:27:14,820 --> 00:27:16,850 >> Bueno, nada parece haber sucedido. 669 00:27:16,850 --> 00:27:20,450 Pero sé que ahora, o desde la semana pasada, que el nombre predeterminado de 670 00:27:20,450 --> 00:27:24,920 un programa, cuando está escrito en C, se tontamente llamado a.out. 671 00:27:24,920 --> 00:27:26,610 Nombre menos interesante que podría ocurrir. 672 00:27:26,610 --> 00:27:28,790 A es la primera letra del alfabeto, la salida es lo que era 673 00:27:28,790 --> 00:27:29,960 emitida, pero que así sea. 674 00:27:29,960 --> 00:27:33,570 Este es mi programa, y ​​ahora punto barra inclinada, como vamos a ver es, 675 00:27:33,570 --> 00:27:36,170 en realidad una especie de función de seguridad, ya que 676 00:27:36,170 --> 00:27:38,250 a.out es un programa que escribí. 677 00:27:38,250 --> 00:27:39,650 No vino con mi computadora, es 678 00:27:39,650 --> 00:27:40,790 no en Archivos de programa. 679 00:27:40,790 --> 00:27:42,910 No está en la carpeta Mac OS Aplicaciones. 680 00:27:42,910 --> 00:27:45,740 Tengo que ser súper explícito con el ordenador, y decir 681 00:27:45,740 --> 00:27:49,030 este programa, a.out, se encuentra en la carpeta actual, la 682 00:27:49,030 --> 00:27:50,260 directorio actual. 683 00:27:50,260 --> 00:27:53,160 Y la manera de representar esto en un ambiente como este 684 00:27:53,160 --> 00:27:57,070 es punto representa cualquier carpeta que está actualmente pulg 685 00:27:57,070 --> 00:27:59,420 Y así. / A.out sólo significa correr 686 00:27:59,420 --> 00:28:00,530 en la carpeta actual. 687 00:28:00,530 --> 00:28:04,830 Y me quedo con este Enter, y listo, mi programa por primera vez. 688 00:28:04,830 --> 00:28:05,990 >> Ahora voy a dar un paso atrás. 689 00:28:05,990 --> 00:28:08,280 Esta ventana es un poco pequeña, y darse cuenta de que la parte inferior 690 00:28:08,280 --> 00:28:10,340 izquierda del aparato aquí es otro icono. 691 00:28:10,340 --> 00:28:12,660 Uno de ellos es Chrome, que debe ser muy familiar, sólo una web 692 00:28:12,660 --> 00:28:14,350 navegador en el interior del aparato. 693 00:28:14,350 --> 00:28:16,340 Y este icono en blanco y negro es sólo un 694 00:28:16,340 --> 00:28:17,720 terminal de ventana más grande. 695 00:28:17,720 --> 00:28:19,830 Así que si se pone un poco molesto para ordenar de tener sólo 696 00:28:19,830 --> 00:28:22,270 esta pequeña porción pequeña de una ventana con la que interactúan 697 00:28:22,270 --> 00:28:24,370 con programas, en su lugar puede hacer esto. 698 00:28:24,370 --> 00:28:26,640 Y ahora vamos a empezar a escribir un poco pronto 699 00:28:26,640 --> 00:28:27,980 para ser comandos conocidos. 700 00:28:27,980 --> 00:28:28,900 ls. 701 00:28:28,900 --> 00:28:31,410 Así es el comando ls para el listado. 702 00:28:31,410 --> 00:28:33,900 Así que en un sistema operativo Mac o Windows, generalmente doble clic en un 703 00:28:33,900 --> 00:28:36,510 carpeta y, voila, usted ve todos los archivos de varias 704 00:28:36,510 --> 00:28:37,210 y carpetas. 705 00:28:37,210 --> 00:28:39,650 En un entorno de línea de comandos, donde sólo se puede escribir 706 00:28:39,650 --> 00:28:42,390 comandos o texto, ls es el equivalente. 707 00:28:42,390 --> 00:28:44,380 Así que me muestran lo que hay en este directorio. 708 00:28:44,380 --> 00:28:46,540 >> Ahora hay un montón de cosas aquí que a la vez un poco 709 00:28:46,540 --> 00:28:48,190 familiar y un poco extraño. 710 00:28:48,190 --> 00:28:50,740 Pero nótese que al igual que Windows y Mac OS, jharvard 711 00:28:50,740 --> 00:28:52,190 tiene una carpeta del escritorio. 712 00:28:52,190 --> 00:28:54,520 Así que los iconos que se encuentran en el escritorio de suceder 713 00:28:54,520 --> 00:28:55,650 estar en esa carpeta. 714 00:28:55,650 --> 00:28:57,250 Hay una carpeta de descargas, cosas que 715 00:28:57,250 --> 00:28:58,890 Chrome podría poner allí. 716 00:28:58,890 --> 00:28:59,250 Dropbox. 717 00:28:59,250 --> 00:29:01,820 De modo que el aparato viene con soporte integrado para Dropbox 718 00:29:01,820 --> 00:29:04,500 por lo que a lo largo del semestre, puedes sincronizar con tu Dropbox 719 00:29:04,500 --> 00:29:06,420 cuenta para que todos los programas están respaldados. 720 00:29:06,420 --> 00:29:08,050 Son accesibles en el otro ordenador. 721 00:29:08,050 --> 00:29:09,780 Si algo le sale mal con el aparato, puede 722 00:29:09,780 --> 00:29:11,340 muy fácilmente recuperarse de Dropbox. 723 00:29:11,340 --> 00:29:12,940 Así que esa carpeta está ahí para eso. 724 00:29:12,940 --> 00:29:14,660 Hay dos archivos que he hecho - hello.c 725 00:29:14,660 --> 00:29:16,540 y a.out. 726 00:29:16,540 --> 00:29:18,530 Y luego, a la derecha hay algunas otras carpetas que vamos a 727 00:29:18,530 --> 00:29:20,710 llegar a al final del semestre, con web 728 00:29:20,710 --> 00:29:21,540 programación. 729 00:29:21,540 --> 00:29:26,160 Así que cuando lo hago. /, A.out, Enter, que ya es decir ir 730 00:29:26,160 --> 00:29:29,460 en el directorio que esté en el directorio actual, y ejecutar el 731 00:29:29,460 --> 00:29:32,465 programa llamado a.out ahí. 732 00:29:32,465 --> 00:29:35,810 >> Muy bien, así que es agradable y bueno, pero no es todo lo que 733 00:29:35,810 --> 00:29:38,550 de peso para escribir un programa llamado a.out ayudar. 734 00:29:38,550 --> 00:29:40,790 Así que en realidad se puede hacer esto un poco diferente. 735 00:29:40,790 --> 00:29:43,980 Así que en lugar de sólo sonido metálico en ejecución, hello.c, vamos a añadir 736 00:29:43,980 --> 00:29:46,850 lo que se llama un argumento de línea de comandos. 737 00:29:46,850 --> 00:29:50,730 Así que un argumento de línea de comandos, o un interruptor en este caso, es sólo 738 00:29:50,730 --> 00:29:54,930 otra palabra o frase que se escribe en el indicador después de 739 00:29:54,930 --> 00:29:56,290 el programa que desea ejecutar. 740 00:29:56,290 --> 00:29:59,970 Así que en este caso, clang es el programa que desea ejecutar,-o 741 00:29:59,970 --> 00:30:03,480 salida mediante un archivo que ya no se llama a.out. 742 00:30:03,480 --> 00:30:07,510 Imprime un archivo llamado hello, y lo hacen mediante la compilación de la 743 00:30:07,510 --> 00:30:10,200 última palabra en la línea, hello.c. 744 00:30:10,200 --> 00:30:13,200 Así que en resumen, se trata de una mejora muy marginal, por lo que 745 00:30:13,200 --> 00:30:15,850 en lugar de tener este archivo a.out estúpidamente nombrado, 746 00:30:15,850 --> 00:30:21,430 Ahora puedo hacer ruido metálico-o hola, entonces hello.c, y 747 00:30:21,430 --> 00:30:22,530 a continuación, pulse la tecla Enter. 748 00:30:22,530 --> 00:30:25,510 Nada parece suceder, pero de nuevo muy parecido con 0 - cuando 749 00:30:25,510 --> 00:30:28,510 parece que nada sucede que no significa nada malo sucedió - 750 00:30:28,510 --> 00:30:31,460 así que vamos a hacer ls ahora, Aceptar, y de hecho yo ahora 751 00:30:31,460 --> 00:30:32,780 tener un programa de hola. 752 00:30:32,780 --> 00:30:38,510 Así que si escribo hola ahora, no se ha encontrado comando. 753 00:30:38,510 --> 00:30:39,440 OK,. /. 754 00:30:39,440 --> 00:30:40,220 Así que la razón. 755 00:30:40,220 --> 00:30:43,170 Así pues este programa que he escrito, y no vino con 756 00:30:43,170 --> 00:30:45,810 el ordenador,. / hola, Enter, significa 757 00:30:45,810 --> 00:30:47,350 Ahora estoy corriendo hola. 758 00:30:47,350 --> 00:30:48,440 >> Así que ahí está. 759 00:30:48,440 --> 00:30:51,070 Ahora lo que finalmente va a llegar a la línea de comandos cada vez más 760 00:30:51,070 --> 00:30:54,110 argumentos que nos permiten hacer más, pero sólo para los de 761 00:30:54,110 --> 00:30:57,760 los cuales esto podría ser algo viejo, quiero realmente ir a un 762 00:30:57,760 --> 00:31:01,910 directorio aquí y sólo le dan un teaser de lo demás que 763 00:31:01,910 --> 00:31:05,770 podría ir sobre la aplicación Hello World. 764 00:31:05,770 --> 00:31:10,730 Déjame entrar aquí, y voy a abrir. 765 00:31:10,730 --> 00:31:13,090 Así que en realidad, voy a explicar lo que estoy haciendo, así 766 00:31:13,090 --> 00:31:15,610 esto es útil. 767 00:31:15,610 --> 00:31:17,410 Permítanme volver. 768 00:31:17,410 --> 00:31:19,620 >> Así que he estado haciendo esto desde hace mucho tiempo. 769 00:31:19,620 --> 00:31:23,030 Así notar más a la derecha, hay un par de 770 00:31:23,030 --> 00:31:26,940 directorios que son extrañamente llamado source1m y source1w. 771 00:31:26,940 --> 00:31:28,830 Esto es sólo convención tonto que utilizamos. 772 00:31:28,830 --> 00:31:31,825 Fuente sólo significa código fuente, 1 significa que se trata de una semana, y 773 00:31:31,825 --> 00:31:34,000 m significa que es lunes, y w significa que es miércoles. 774 00:31:34,000 --> 00:31:34,900 Así que nada críptico allí. 775 00:31:34,900 --> 00:31:37,830 Es sólo notación abreviada. 776 00:31:37,830 --> 00:31:39,860 Estas cosas son las carpetas azules, también conocida como 777 00:31:39,860 --> 00:31:40,630 directorios. 778 00:31:40,630 --> 00:31:43,870 Yo quiero ir a esa carpeta ahora, y en un ordenador normal 779 00:31:43,870 --> 00:31:45,710 Sólo puede hacer doble clic en un icono de carpeta y 780 00:31:45,710 --> 00:31:46,810 hay todos mis archivos. 781 00:31:46,810 --> 00:31:49,270 Sin embargo, en un entorno de línea de comandos, yo no puedo hacer 782 00:31:49,270 --> 00:31:52,640 que, por lo que en su lugar, tengo que cambiar de directorio manualmente. 783 00:31:52,640 --> 00:31:57,900 Así que si yo escriba cd y luego source1m, Enter, observe que 784 00:31:57,900 --> 00:32:01,180 mi sistema, la cosa en blanco a la izquierda, acaba de cambiar. 785 00:32:01,180 --> 00:32:03,690 Y así, en efecto, cuando se acaba de decir paréntesis y luego los 786 00:32:03,690 --> 00:32:06,450 garabato poco, el símbolo de tilde, eso significaba que era 787 00:32:06,450 --> 00:32:08,800 en el directorio principal John Harvard, sus Mis documentos, 788 00:32:08,800 --> 00:32:10,390 sus archivos personales. 789 00:32:10,390 --> 00:32:14,000 Pero ahora entre paréntesis que dice ~ / source1m. 790 00:32:14,000 --> 00:32:17,090 Esto sólo significa que estoy en una carpeta llamada source1m 791 00:32:17,090 --> 00:32:19,160 eso es en el directorio principal John Harvard. 792 00:32:19,160 --> 00:32:22,030 Así que si ahora queremos listar los archivos en esta carpeta, fácil 793 00:32:22,030 --> 00:32:25,300 pregunta, escribo sólo ls. 794 00:32:25,300 --> 00:32:28,860 Y ahora veo todos los archivos que he creado previamente para hoy 795 00:32:28,860 --> 00:32:31,020 conferencia, todos los cuales, o la mayor parte de los cuales, se producen 796 00:32:31,020 --> 00:32:32,740 para terminar en. c. 797 00:32:32,740 --> 00:32:36,210 >> Así que déjame ir adelante ahora y ejecutar gedit de un programa llamado 798 00:32:36,210 --> 00:32:39,140 holloway.c, que está escrito por algún hacker azar 799 00:32:39,140 --> 00:32:42,920 en Internet, que se parece un poco a esto. 800 00:32:42,920 --> 00:32:44,880 Y no vamos a ir a través de éste, en cualquier 801 00:32:44,880 --> 00:32:48,530 detalle, pero para aquellos más cómodo, en particular, si 802 00:32:48,530 --> 00:32:50,935 usted quiere tomar una conjetura en cuanto a lo que hace el programa aquí. 803 00:32:57,950 --> 00:32:59,990 Tenga la seguridad, ya que es menos o más cómoda, 804 00:32:59,990 --> 00:33:01,655 no estamos siquiera llegar a este tipo de cosas antes de finales de 805 00:33:01,655 --> 00:33:02,160 este semestre. 806 00:33:02,160 --> 00:33:05,390 Esto es lo que es un ejemplo de un concurso ofuscado C, que 807 00:33:05,390 --> 00:33:08,390 significa escribir el programa más críptico buscando posiblemente 808 00:33:08,390 --> 00:33:10,820 puede superar a otras personas inteligentes, que son igualmente 809 00:33:10,820 --> 00:33:13,010 tratando de escribir las cosas y mostrar que pueden escribir 810 00:33:13,010 --> 00:33:14,280 las cosas más secretas que tú. 811 00:33:14,280 --> 00:33:17,290 Así que esto no es un ejemplo de un programa bien escrito de la 812 00:33:17,290 --> 00:33:21,260 punto de vista de estilo, este es un ejemplo de un programa que 813 00:33:21,260 --> 00:33:22,860 gana un concurso, para la gente tratando de 814 00:33:22,860 --> 00:33:24,090 ser vago y abstracto. 815 00:33:24,090 --> 00:33:27,670 >> Así que si corremos esto, déjame entrar en mi ventana de terminal, 816 00:33:27,670 --> 00:33:28,110 por así decirlo. 817 00:33:28,110 --> 00:33:29,650 Así que este medio ambiente en blanco y negro se denomina 818 00:33:29,650 --> 00:33:31,160 ventana de terminal en general. 819 00:33:31,160 --> 00:33:32,600 Déjame ir por delante y compilarlo. 820 00:33:32,600 --> 00:33:34,440 Yo no voy a usar sonido metálico, ya que este programa es un 821 00:33:34,440 --> 00:33:36,340 poco críptico y necesita una diferente 822 00:33:36,340 --> 00:33:38,190 compilador, uno llamado GCC. 823 00:33:38,190 --> 00:33:39,200 Pero hace lo mismo. 824 00:33:39,200 --> 00:33:41,130 Se necesita código fuente a código objeto. 825 00:33:41,130 --> 00:33:43,940 Y ahora si me quedo a.out, ese programa que 826 00:33:43,940 --> 00:33:46,065 acabo de ver hace esto. 827 00:33:49,220 --> 00:33:51,170 Así que ese año ganó compañero ese concurso. 828 00:33:51,170 --> 00:33:54,020 De todos modos, no vamos en esa dirección, per se. 829 00:33:54,020 --> 00:33:57,400 >> Así que en realidad tratan de burlarse de ahora, aparte lo que podemos hacer 830 00:33:57,400 --> 00:33:59,540 con estos bloques de construcción básicos para hacer más y más 831 00:33:59,540 --> 00:34:00,590 programas interesantes. 832 00:34:00,590 --> 00:34:02,800 Para ello hemos escrito un programa, hemos ejecutar un programa. 833 00:34:02,800 --> 00:34:05,780 Ahora realmente podemos simplificar y ya no tienen que escribir 834 00:34:05,780 --> 00:34:07,210 el sonido metálico palabra en el indicador. 835 00:34:07,210 --> 00:34:10,710 Resulta que nuestros programas se hacen más críptico, podemos, o 836 00:34:10,710 --> 00:34:14,699 más complejo y no, en realidad podemos ejecutar este comando. 837 00:34:14,699 --> 00:34:17,610 Así que permítanme volver a mi directorio personal, por decirlo así, permítanme 838 00:34:17,610 --> 00:34:20,750 quitar - rm es el comando remove - Voy a quitar 839 00:34:20,750 --> 00:34:23,060 el archivo llamado a.out y un saludo. 840 00:34:23,060 --> 00:34:25,489 Y ahora noten en un entorno de línea de comandos, al igual que en 841 00:34:25,489 --> 00:34:27,800 una interfaz gráfica de usuario, se obtiene se le solicite. No puede hacer clic en un botón, aunque, yo 842 00:34:27,800 --> 00:34:31,040 tiene que escribir y para sí, y para sí. 843 00:34:31,040 --> 00:34:33,460 Y ahora si me escriba ls de nuevo, observe que los verdes 844 00:34:33,460 --> 00:34:35,469 - programas a.out y hola - 845 00:34:35,469 --> 00:34:35,734 se han ido. 846 00:34:35,734 --> 00:34:37,340 Tenga cuidado con rm. 847 00:34:37,340 --> 00:34:39,739 Se pueden hacer cosas malas, al igual que usted puede arrastrar 848 00:34:39,739 --> 00:34:40,810 cosas a la basura. 849 00:34:40,810 --> 00:34:43,989 >> Así que ahora vamos a seguir adelante - y no pude hacer esto - sonido metálico-o 850 00:34:43,989 --> 00:34:45,139 hola, hola - 851 00:34:45,139 --> 00:34:46,884 Ya estoy aburrido escribir ese comando. 852 00:34:46,884 --> 00:34:48,080 A pesar de que ha escrito un poco rápido. 853 00:34:48,080 --> 00:34:51,870 Así que en su lugar puede hacer hacer hello. 854 00:34:51,870 --> 00:34:53,880 Así que no es un compilador. 855 00:34:53,880 --> 00:34:57,720 Es sólo un programa amigable que viene con Linux, en este 856 00:34:57,720 --> 00:34:59,070 caso - el sistema operativo - 857 00:34:59,070 --> 00:35:02,480 que automatiza el proceso de compilación de programas. 858 00:35:02,480 --> 00:35:05,555 Así que en lugar de recordar clang-o nombre de archivo y 859 00:35:05,555 --> 00:35:08,190 entonces así sucesivamente, especialmente una vez que esas líneas se hacen más largos y 860 00:35:08,190 --> 00:35:10,110 más tiempo, puedo escribir hacer. 861 00:35:10,110 --> 00:35:12,030 Y esto va a escupir un montón de cosas que 862 00:35:12,030 --> 00:35:13,940 que finalmente va a ver este semestre. 863 00:35:13,940 --> 00:35:17,500 Pero note ahora si ls tipo, hola está de vuelta en mi directorio. 864 00:35:17,500 --> 00:35:19,850 Y de hecho lo puedo ejecutar con. / Hello. 865 00:35:19,850 --> 00:35:23,330 Así que simplemente automatiza el proceso de ejecución de lo que fue, 866 00:35:23,330 --> 00:35:26,910 en este caso, una mucho más larga, más complejo de comandos. 867 00:35:26,910 --> 00:35:29,060 Así que vamos a empezar a utilizar la marca, sólo porque es mucho 868 00:35:29,060 --> 00:35:30,530 más fácil de usar. 869 00:35:30,530 --> 00:35:32,770 >> Pero ahora vamos a hacer un programa más interesante 870 00:35:32,770 --> 00:35:34,650 que acaba de decir hola. 871 00:35:34,650 --> 00:35:38,680 Así que en los programas que hemos escrito hasta ahora no hay principal. 872 00:35:38,680 --> 00:35:40,890 Eso es justo lo que se inicia por defecto todo lo que fuera. 873 00:35:40,890 --> 00:35:43,340 Pero hay funciones que hay por ahí también, y 874 00:35:43,340 --> 00:35:45,890 stdio.h es lo que vimos en la parte superior de nuestra 875 00:35:45,890 --> 00:35:48,480 archivos, y eso es lo que se conoce como la biblioteca estándar. 876 00:35:48,480 --> 00:35:51,300 En el interior de la biblioteca estándar es un montón de funciones 877 00:35:51,300 --> 00:35:53,850 que alguien más escribió, y podemos empezar a utilizar estos 878 00:35:53,850 --> 00:35:55,050 funciones para escribir más 879 00:35:55,050 --> 00:35:56,760 programas interesantes para nosotros mismos. 880 00:35:56,760 --> 00:35:58,370 >> Así que permítanme volver al equipo. 881 00:35:58,370 --> 00:35:59,820 Voy a cerrar esta ventana de terminal. 882 00:35:59,820 --> 00:36:02,630 Voy a cerrar las cosas que escribimos antes, y sólo ir 883 00:36:02,630 --> 00:36:07,350 en hello.c, y note que ahora puedo hacer lo siguiente. 884 00:36:07,350 --> 00:36:09,730 Hola mundo no es tan interesante, me gustaría 885 00:36:09,730 --> 00:36:11,770 personalizar este programa para mí. 886 00:36:11,770 --> 00:36:13,440 Así que en vez de decir el mundo, voy a 887 00:36:13,440 --> 00:36:14,830 seguir adelante y decir - 888 00:36:14,830 --> 00:36:16,880 Yo podría escribir David - pero esto realmente es una especie de 889 00:36:16,880 --> 00:36:18,050 fundamentalmente los mismos. 890 00:36:18,050 --> 00:36:19,970 Pero vamos a probar esta idea marcador de posición. 891 00:36:19,970 --> 00:36:24,460 Recordemos que en C, en lugar de printf, hemos tenido estos 892 00:36:24,460 --> 00:36:28,110 marcadores de posición, y hay más de% d justa. 893 00:36:28,110 --> 00:36:31,150 Así fue% d, comprobación de validez rápido. 894 00:36:31,150 --> 00:36:32,310 Bueno, el número decimal, eso es todo. 895 00:36:32,310 --> 00:36:33,860 Dígitos decimales, eso es todo. 896 00:36:33,860 --> 00:36:37,755 Así que c%, ya que se encontrará, va a ser un personaje. 897 00:36:37,755 --> 00:36:40,530 Ponga un personaje aquí, una carta de la aa la z, 898 00:36:40,530 --> 00:36:41,600 o puntuacion símbolo. 899 00:36:41,600 --> 00:36:45,590 Un personaje único,% f, alguien sabe de otros idiomas? 900 00:36:45,590 --> 00:36:47,020 Así un valor de punto flotante. 901 00:36:47,020 --> 00:36:47,880 Un número real. 902 00:36:47,880 --> 00:36:51,550 Así que no es un número decimal - esto es realmente un número real con 903 00:36:51,550 --> 00:36:54,130 un punto decimal y un número de dígitos a la izquierda 904 00:36:54,130 --> 00:36:55,520 y derecho de la misma. 905 00:36:55,520 --> 00:36:58,060 % S, String. 906 00:36:58,060 --> 00:36:59,530 Aquel que vamos a ver muy a menudo. 907 00:36:59,530 --> 00:37:02,140 Una cadena, de nuevo, es sólo una palabra, una frase, una secuencia de 908 00:37:02,140 --> 00:37:03,330 caracteres individuales. 909 00:37:03,330 --> 00:37:06,730 Y, por último, LLD? 910 00:37:06,730 --> 00:37:08,210 Así que esto es más bien un caso de la esquina. 911 00:37:08,210 --> 00:37:09,850 Largo, largo decimal. 912 00:37:09,850 --> 00:37:12,035 Así que si no quieren sólo un número que es tan grande, que 913 00:37:12,035 --> 00:37:14,160 quiere un número más grande, vas a tener que especificar a 914 00:37:14,160 --> 00:37:16,400 el equipo que es de un tamaño particular. 915 00:37:16,400 --> 00:37:17,610 >> Así que vamos a ajustar esto un poco. 916 00:37:17,610 --> 00:37:20,610 En lugar de codificar en David, déjame un poco 917 00:37:20,610 --> 00:37:22,460 dinámicamente dicen% s. 918 00:37:22,460 --> 00:37:25,790 Así que ponte% s aquí, que es un marcador de posición para una cadena. 919 00:37:25,790 --> 00:37:30,500 Entonces déjame hacer coma, y ​​luego "David" por aquí. 920 00:37:30,500 --> 00:37:32,770 Ahora bien, esto no es todo lo que intelectualmente interesante, 921 00:37:32,770 --> 00:37:35,060 porque todo lo que he hecho ahora es realmente crear más trabajo para 922 00:37:35,060 --> 00:37:35,790 el ordenador. 923 00:37:35,790 --> 00:37:39,660 En lugar de decirle a la computadora qué todo esto a la vez, estoy ahora 924 00:37:39,660 --> 00:37:43,760 diciendo esto y insertar una cadena de aquí al final, coma, 925 00:37:43,760 --> 00:37:44,950 aquí es la cadena. 926 00:37:44,950 --> 00:37:47,220 Así que esto no es una mejora mejor, pero es por lo menos 927 00:37:47,220 --> 00:37:49,010 un paso hacia un programa más interesante. 928 00:37:49,010 --> 00:37:51,240 Porque ahora, déjame seguir adelante y hacer un poco esta ventana 929 00:37:51,240 --> 00:37:56,850 más grande, déjame seguir adelante y ejecutar make hello. 930 00:37:56,850 --> 00:38:01,340 Y ahora,. / A.out no funciona, ¿por qué? 931 00:38:03,880 --> 00:38:05,570 Muy bien, ahora se llama hello. 932 00:38:05,570 --> 00:38:09,400 Así que de nuevo hacen, y también con un sonido metálico o-, cambió el nombre del 933 00:38:09,400 --> 00:38:11,120 programa que haber algo más interesante. 934 00:38:11,120 --> 00:38:13,060 Y voilá: ahora dice hola David. 935 00:38:13,060 --> 00:38:14,590 >> Muy bien, sigue siendo un programa estúpido. 936 00:38:14,590 --> 00:38:18,070 Así que ahora vamos a volver aquí en realidad e introducir la noción 937 00:38:18,070 --> 00:38:18,810 de una variable. 938 00:38:18,810 --> 00:38:21,600 ¿No sería bueno si pudiera declarar una variable 939 00:38:21,600 --> 00:38:23,150 cuyo tipo es una cadena? 940 00:38:23,150 --> 00:38:26,720 Y el valor de la variable en realidad proviene del usuario 941 00:38:26,720 --> 00:38:27,810 él o ella. 942 00:38:27,810 --> 00:38:30,240 Por lo tanto arbitrariamente, voy a llamar a mi variable s, que es 943 00:38:30,240 --> 00:38:32,410 sólo una convención común cuando se tiene una variable llamada 944 00:38:32,410 --> 00:38:33,250 la cadena. 945 00:38:33,250 --> 00:38:35,670 Voy a hacer signo igual, y luego voy a llamar a un 946 00:38:35,670 --> 00:38:38,030 función llamada GetString. 947 00:38:38,030 --> 00:38:40,830 Así GetString no es algo que viene incorporado en C. Es 948 00:38:40,830 --> 00:38:43,330 una función que el personal CS50 escribió, en realidad sólo para 949 00:38:43,330 --> 00:38:45,670 estas dos primeras semanas, para simplificar el proceso de 950 00:38:45,670 --> 00:38:49,450 recibiendo la entrada del usuario y la obtención de la entrada del usuario en el formulario 951 00:38:49,450 --> 00:38:51,960 de cadenas o números, y tal. 952 00:38:51,960 --> 00:38:55,520 Así es como GetString printf, pero, obviamente, en lugar de 953 00:38:55,520 --> 00:38:58,700 imprimir que va a hacer lo que dice su nombre, obtener una cadena. 954 00:38:58,700 --> 00:39:00,970 Pero para usar GetString, vamos a tener que hacer un cambio 955 00:39:00,970 --> 00:39:03,180 aquí, más allá de esto. 956 00:39:03,180 --> 00:39:07,170 Así intuitiva, este programa, con suerte, de alguna manera va a 957 00:39:07,170 --> 00:39:09,700 obtener una cadena del usuario y, a continuación, ¿qué va a hacer 958 00:39:09,700 --> 00:39:11,460 con esa cadena, llamada s? 959 00:39:15,060 --> 00:39:16,470 Es sólo va a imprimir, ¿verdad? 960 00:39:16,470 --> 00:39:18,870 Todavía no es un programa estimulante porque todo lo que está pasando 961 00:39:18,870 --> 00:39:22,160 que hacer es conectar ese valor en donde% s 962 00:39:22,160 --> 00:39:23,750 dice que debería ir. 963 00:39:23,750 --> 00:39:25,290 >> Así que vamos a por lo menos ver esto en acción. 964 00:39:25,290 --> 00:39:27,040 Déjame guardar y alejar la imagen. 965 00:39:27,040 --> 00:39:30,280 Ahora, en mi ventana de terminal aquí, la pequeña porción de uno, 966 00:39:30,280 --> 00:39:32,760 permítanme volver a hacer hacer hello. 967 00:39:32,760 --> 00:39:35,160 Muy bien, y ah, caray, yo tengo un montón de errores. 968 00:39:35,160 --> 00:39:38,020 Permítanme desplazarse hacia arriba, y vemos nuestra primera - 969 00:39:38,020 --> 00:39:40,430 así que vamos a hacerlo realidad en una ventana aún mayor por lo que 970 00:39:40,430 --> 00:39:42,110 puede ver lo mal que metí la pata - 971 00:39:42,110 --> 00:39:44,460 así que hola. 972 00:39:44,460 --> 00:39:46,540 Bueno, eso es un desastre, ¿no? 973 00:39:46,540 --> 00:39:48,740 He escrito tres líneas de código, y 974 00:39:48,740 --> 00:39:50,070 que me ha dado 12 errores. 975 00:39:50,070 --> 00:39:51,980 ¿Por qué es esto? 976 00:39:51,980 --> 00:39:55,720 Entonces, afortunadamente, muchas veces cuando usted ve muchos errores, muchos 977 00:39:55,720 --> 00:39:57,730 escupiendo a la vez, no deja de ser porque se ha 978 00:39:57,730 --> 00:39:59,760 confundió el ordenador hasta aquí. 979 00:39:59,760 --> 00:40:02,330 Y sigue siendo confuso para el momento en que llegue hasta aquí. 980 00:40:02,330 --> 00:40:04,400 Y por lo que sólo se inicia el disparo, y tropezando, y 981 00:40:04,400 --> 00:40:07,310 escupiendo más cosas de miedo que se aplica realmente. 982 00:40:07,310 --> 00:40:10,120 Así que en general, siempre comienzan con el superior. 983 00:40:10,120 --> 00:40:13,320 >> Así que el ejemplo más parte superior de color rojo, el 984 00:40:13,320 --> 00:40:14,740 mensaje de error es este. 985 00:40:14,740 --> 00:40:17,750 El uso de cadena de identificador no declarado, lo que 986 00:40:17,750 --> 00:40:19,160 significar estándar en? 987 00:40:19,160 --> 00:40:19,900 No lo hice. 988 00:40:19,900 --> 00:40:24,180 I significa cadena, pero esto es debido a que, también, la cadena de palabras 989 00:40:24,180 --> 00:40:26,020 que sigo usando verbalmente en realidad 990 00:40:26,020 --> 00:40:27,240 no existe en C tampoco. 991 00:40:27,240 --> 00:40:29,470 Es algo que vamos a utilizar sólo para la primera semana o dos 992 00:40:29,470 --> 00:40:34,500 aquí, pero existe en un archivo llamado cs50.h. 993 00:40:34,500 --> 00:40:37,110 Así que por ahora, sepan que existe esta otra biblioteca que el 994 00:40:37,110 --> 00:40:39,330 personal escribió, por lo que se ha escrito más recientemente que 995 00:40:39,330 --> 00:40:40,510 stdio.h. 996 00:40:40,510 --> 00:40:45,020 Pero dentro de cs50.h es una definición, un sinónimo de 997 00:40:45,020 --> 00:40:48,310 tipo, que crea esta cadena de palabras. 998 00:40:48,310 --> 00:40:50,890 >> Así que ahora quiero volver a mi ventana de terminal. 999 00:40:50,890 --> 00:40:53,200 Voy a aclarar todo este lío con Ctrl-L. Vamos a 1000 00:40:53,200 --> 00:40:55,700 Limpie todo limpio, y yo voy a seguir adelante y hacer 1001 00:40:55,700 --> 00:40:57,860 hola de nuevo, Aceptar. 1002 00:40:57,860 --> 00:40:59,440 ¿Qué ha ocurrido ahora? 1003 00:40:59,440 --> 00:41:01,150 Ahora todos esos errores fue. 1004 00:41:01,150 --> 00:41:02,230 Entonces, ¿qué he hecho realmente? 1005 00:41:02,230 --> 00:41:05,920 Acabo enseñó el equipo que existe este tipo, y es que 1006 00:41:05,920 --> 00:41:07,890 en ese archivo llamado cs50.h. 1007 00:41:07,890 --> 00:41:10,930 Así que deje de quejarse, porque ahora usted sabe dónde encontrar 1008 00:41:10,930 --> 00:41:13,220 declaración de tal función por así decirlo. 1009 00:41:13,220 --> 00:41:15,200 Cuando existe en el mundo. 1010 00:41:15,200 --> 00:41:18,820 >> Así que ahora voy a seguir adelante y ejecutar hola. 1011 00:41:18,820 --> 00:41:22,300 Parece que tengo un bucle infinito, no pasa nada. 1012 00:41:25,530 --> 00:41:26,870 Así que tengo que escribir algo aquí, claro. 1013 00:41:26,870 --> 00:41:29,650 La primera línea de código en mi programa fue getString. 1014 00:41:29,650 --> 00:41:31,750 Así que, literalmente, me espera para obtener una cadena. 1015 00:41:31,750 --> 00:41:33,680 Así que en ese sentido sí, es un bucle infinito. 1016 00:41:33,680 --> 00:41:36,520 Al parecer, en GetString es el comportamiento por defecto que 1017 00:41:36,520 --> 00:41:37,510 escribió - el personal - 1018 00:41:37,510 --> 00:41:39,550 sólo dice que esperar y esperar y esperar y esperar y esperar, 1019 00:41:39,550 --> 00:41:42,550 hasta que el usuario le da una cadena escribiendo algo pulg 1020 00:41:42,550 --> 00:41:46,000 Así que déjame ir delante y escriba D-a-v - i-d, Intro. 1021 00:41:46,000 --> 00:41:47,420 Y ahí está, hola David. 1022 00:41:47,420 --> 00:41:50,430 >> Ahora bien, ¿Te parece que es sólo una actuación? 1023 00:41:50,430 --> 00:41:52,810 Déjenme seguir adelante y escribir Tommy. 1024 00:41:52,810 --> 00:41:54,740 Ingrese, bien, parece estar funcionando. 1025 00:41:54,740 --> 00:41:59,130 Obras para Rob, obras para Zamyla, trabaja para - bien. 1026 00:41:59,130 --> 00:42:01,000 Así que va a trabajar, lo más probable. 1027 00:42:01,000 --> 00:42:05,030 Por lo tanto, debe imprimir cualquier cosa que realmente le dan, 1028 00:42:05,030 --> 00:42:07,830 y que puede ser un poco difícil aquí. 1029 00:42:07,830 --> 00:42:12,130 Vamos a ver si podemos hacer algo como hola. 1030 00:42:12,130 --> 00:42:18,000 Se puede ir por aquí, vamos a ver, copiar, pegar. 1031 00:42:18,000 --> 00:42:19,950 Yo no voy a ser capaz de pegar que muchas veces aquí. 1032 00:42:19,950 --> 00:42:24,410 Pegar, bien, Shift + Ctrl + V. Entonces, ¿qué podría 1033 00:42:24,410 --> 00:42:26,970 suceder eso es malo aquí? 1034 00:42:26,970 --> 00:42:27,770 >> Bien, entonces, segfaults. 1035 00:42:27,770 --> 00:42:29,710 Así que algunos de ustedes con antecedentes anteriores sabrán que 1036 00:42:29,710 --> 00:42:32,710 en general, dando un montón de ordenadores entradas cuando estén 1037 00:42:32,710 --> 00:42:36,140 Probablemente no pretende recibir nombres largos como este - malas 1038 00:42:36,140 --> 00:42:36,740 las cosas sucedan. 1039 00:42:36,740 --> 00:42:39,230 De hecho, en el mundo de la web, también, esto sucede bastante, 1040 00:42:39,230 --> 00:42:41,000 por lo que cuando usted está diseñando un sitio web, cuando estás 1041 00:42:41,000 --> 00:42:43,850 diseño de Facebook, usted tiene que tomar decisiones arbitrarias hasta 1042 00:42:43,850 --> 00:42:45,370 frente, al igual que el tiempo que se trata de alguien 1043 00:42:45,370 --> 00:42:46,360 Facebook nombre de usuario será? 1044 00:42:46,360 --> 00:42:48,050 ¿O cuánto tiempo va a nombre de alguien ser? 1045 00:42:48,050 --> 00:42:50,110 ¿Cuánto tiempo durará el número de teléfono de alguien ser y similares. 1046 00:42:50,110 --> 00:42:53,580 Y si los programadores hacer suposiciones incorrectas, los programas de romper 1047 00:42:53,580 --> 00:42:56,640 porque intenta darles una mayor producción, más entrada 1048 00:42:56,640 --> 00:42:58,330 más bien, que tienen memoria. 1049 00:42:58,330 --> 00:43:01,860 O RAM asignada para ello, por lo que si ahora pulsa Intro, 1050 00:43:01,860 --> 00:43:04,640 que el programa de trabajo efectivo, ya que estábamos en la biblioteca 1051 00:43:04,640 --> 00:43:06,790 y que en realidad prevé este caso particular. 1052 00:43:06,790 --> 00:43:10,900 Pero, sin duda, en este semestre, va a escribir por lo menos un 1053 00:43:10,900 --> 00:43:13,280 programa que se dirán estas palabras. 1054 00:43:13,280 --> 00:43:16,520 Recordar esta semana a partir de ahora, tal vez dentro de dos días. 1055 00:43:16,520 --> 00:43:18,760 Fallo de segmentación es una mala cosa. 1056 00:43:18,760 --> 00:43:21,920 Se hará referencia a su haciendo algo que la computadora 1057 00:43:21,920 --> 00:43:23,310 no anticipar. 1058 00:43:23,310 --> 00:43:25,810 Y en ese caso, usted, el programador, no anticipó. 1059 00:43:25,810 --> 00:43:27,720 Al igual que este montón de calcetines, había varios 1060 00:43:27,720 --> 00:43:29,520 casos extremos podríamos haber encontrado. 1061 00:43:29,520 --> 00:43:32,340 Asimismo, en los programas si no anticipar cuánto tiempo puede 1062 00:43:32,340 --> 00:43:33,310 el nombre de alguien va a ser. 1063 00:43:33,310 --> 00:43:35,890 ¿Y si tengo un usuario malicioso, y es su nombre 1064 00:43:35,890 --> 00:43:37,230 realidad es bastante corto, pero se están tratando 1065 00:43:37,230 --> 00:43:37,960 meterse conmigo? 1066 00:43:37,960 --> 00:43:40,490 ¿Qué va a ser el comportamiento de mi programa? 1067 00:43:40,490 --> 00:43:43,930 Bueno, en ese caso, algo que en realidad se puede bloquear. 1068 00:43:43,930 --> 00:43:44,750 >> Así que vamos a hacer esto. 1069 00:43:44,750 --> 00:43:46,860 En 90 minutos, se trata de un largo tiempo horrible 1070 00:43:46,860 --> 00:43:47,780 para hacer la informática. 1071 00:43:47,780 --> 00:43:49,550 ¿Por qué no nos metemos en el hábito de tomar cinco minutos 1072 00:43:49,550 --> 00:43:51,520 romper aquí, y cuando regresemos, vamos a bucear en algunos 1073 00:43:51,520 --> 00:43:53,430 programas más complejos y apremiantes? 1074 00:43:53,430 --> 00:43:54,680 A cinco minutos. 1075 00:43:56,910 --> 00:43:58,160 >> Está bien. 1076 00:44:01,138 --> 00:44:02,780 Así que un rápido comentario. 1077 00:44:02,780 --> 00:44:05,590 Me han dicho que aunque esto fue en la pantalla antes, lo que 1078 00:44:05,590 --> 00:44:08,880 salió de mi boca fue cs50.net/rsvp. 1079 00:44:08,880 --> 00:44:11,670 Esto es correcto. cs50.net/lunch. 1080 00:44:11,670 --> 00:44:16,030 Así que ahora usted puede intentar RSVPing para esta en / almuerzo. 1081 00:44:16,030 --> 00:44:16,980 Pero vamos a hacer esto ahora. 1082 00:44:16,980 --> 00:44:20,150 Así que esto ha sido muy rápida, súper nuevo para mucha gente. 1083 00:44:20,150 --> 00:44:21,560 Sombrero viejo para algunas personas. 1084 00:44:21,560 --> 00:44:24,930 Así que vamos a retroceder por un momento, y ver cómo hemos llegado a 1085 00:44:24,930 --> 00:44:29,350 esta salida hola mundo hace un momento. 1086 00:44:29,350 --> 00:44:31,780 >> Así que primero, hay un aparato CS50. 1087 00:44:31,780 --> 00:44:34,270 Una vez más, una pieza de software, el problema de establecer una va a contar 1088 00:44:34,270 --> 00:44:36,610 cómo descargarlo, donde descargarlo, lo que debe hacer clic 1089 00:44:36,610 --> 00:44:37,430 y así sucesivamente. 1090 00:44:37,430 --> 00:44:39,670 Y luego una vez que seguir esas instrucciones, usted será capaz de 1091 00:44:39,670 --> 00:44:42,840 para maximizar la ventana, y tu Mac o PC se verá un 1092 00:44:42,840 --> 00:44:43,910 poco algo como esto. 1093 00:44:43,910 --> 00:44:47,170 Un fondo negro, una carpeta de inicio en la parte superior donde todos 1094 00:44:47,170 --> 00:44:49,850 los archivos de ir, un bote de basura en la parte superior izquierda, 1095 00:44:49,850 --> 00:44:51,130 un menú en la parte inferior. 1096 00:44:51,130 --> 00:44:54,010 Así que de nuevo, bastante similares en espíritu a Mac OS o Windows, 1097 00:44:54,010 --> 00:44:56,040 a pesar de que pasa a ser Linux. 1098 00:44:56,040 --> 00:44:58,120 Entonces, ¿qué podemos hacer al lado? 1099 00:44:58,120 --> 00:44:59,580 Bueno, empezamos a escribir programas. 1100 00:44:59,580 --> 00:45:02,260 Y recordar que la semana pasada que todo lo que se necesita para escribir un 1101 00:45:02,260 --> 00:45:04,970 programa es un editor de texto simple, 1102 00:45:04,970 --> 00:45:06,550 como el Bloc de notas o TextEdit. 1103 00:45:06,550 --> 00:45:08,360 Francamente, usted puede incluso utilizar Microsoft Word. 1104 00:45:08,360 --> 00:45:11,170 Pero las cosas malas con el tiempo va a pasar, porque eso es una muy 1105 00:45:11,170 --> 00:45:13,930 mano dura solución para escribir un programa, más se lo 1106 00:45:13,930 --> 00:45:15,400 guardarlo en el formato de archivo incorrecto. 1107 00:45:15,400 --> 00:45:18,150 Pero es sólo un editor de texto, un procesador de textos, es todo lo que 1108 00:45:18,150 --> 00:45:19,390 necesario para escribir un programa. 1109 00:45:19,390 --> 00:45:23,420 >> Así que en el aparato CS50, podemos hacerlo de una manera sencilla. 1110 00:45:23,420 --> 00:45:25,580 Acabamos de hacer clic en este icono en la parte inferior izquierda. 1111 00:45:25,580 --> 00:45:28,790 Y de nuevo, el problema de establecer una le informará de ello y voila - 1112 00:45:28,790 --> 00:45:31,210 recibe este interfaz en blanco y negro en el que podemos empezar a 1113 00:45:31,210 --> 00:45:32,160 escribir código. 1114 00:45:32,160 --> 00:45:34,960 Así que vamos a empezar a escribir un programa simple súper nuevo. 1115 00:45:34,960 --> 00:45:38,890 Voy a subir a Archivo, Guardar, y yo voy a llamar 1116 00:45:38,890 --> 00:45:42,870 esta, digamos, hello2.c. 1117 00:45:42,870 --> 00:45:45,410 Y yo sólo lo estoy diciendo, haga clic en jharvard, lo puso 1118 00:45:45,410 --> 00:45:46,750 en su directorio personal, realmente no me importa 1119 00:45:46,750 --> 00:45:47,980 donde éste va. 1120 00:45:47,980 --> 00:45:49,090 Y luego en Guardar. 1121 00:45:49,090 --> 00:45:50,880 Y ahora puedo empezar a escribir mi programa. 1122 00:45:50,880 --> 00:45:53,560 Y recuerdo de antes de que tengo que escribir int 1123 00:45:53,560 --> 00:45:55,400 main (void). 1124 00:45:55,400 --> 00:45:57,000 Zoom en la parte superior izquierda. 1125 00:45:57,000 --> 00:46:02,670 Y luego quiero decir printf, toma dos. 1126 00:46:02,670 --> 00:46:05,690 Y ahora una cita nueva línea, cerrar, cerrar 1127 00:46:05,690 --> 00:46:07,820 paréntesis, punto y coma. 1128 00:46:07,820 --> 00:46:10,560 Y luego voy aquí a mi ventana de terminal que es 1129 00:46:10,560 --> 00:46:12,840 incrustado en gedit, sólo por conveniencia. 1130 00:46:12,840 --> 00:46:15,200 Y voy a seguir adelante y hacer escribir hola, pero no 1131 00:46:15,200 --> 00:46:17,500 hola solo, hello2. 1132 00:46:17,500 --> 00:46:20,490 >> Así que mi archivo se llama hello2.c. Mi archivo por lo tanto 1133 00:46:20,490 --> 00:46:23,510 debe ser llamado hello2, en este caso. 1134 00:46:23,510 --> 00:46:26,490 Maldita sea, ¿qué hice mal? 1135 00:46:26,490 --> 00:46:29,490 Muy bien, así que claramente se omite una línea, si usted recuerda lo que 1136 00:46:29,490 --> 00:46:31,020 programas anteriores parecen. 1137 00:46:31,020 --> 00:46:32,480 Pero vamos a ver si no podemos molestar a este aparte. 1138 00:46:32,480 --> 00:46:35,310 Desafortunadamente, la mayoría de las personas que escriben los programas con los que 1139 00:46:35,310 --> 00:46:38,820 escribimos programas no simplificar las cosas del todo bien. 1140 00:46:38,820 --> 00:46:41,520 Así que tenemos que tipo de deslizarse sobre lo que no acaba de hacer 1141 00:46:41,520 --> 00:46:44,050 sentir aquí y ver si podemos averiguar lo que está mal. 1142 00:46:44,050 --> 00:46:46,700 La primera línea se dice implícitamente declara C 1143 00:46:46,700 --> 00:46:49,310 biblioteca printf con int tipo de función. 1144 00:46:49,310 --> 00:46:51,210 OK, entendí parte de eso. 1145 00:46:51,210 --> 00:46:54,570 Pero parece estar aludiendo al hecho de que he usado printf 1146 00:46:54,570 --> 00:46:55,700 mal, de alguna manera. 1147 00:46:55,700 --> 00:46:56,930 ¿Y qué sentido tiene de malo? 1148 00:46:56,930 --> 00:46:59,970 Yo sólo no enseñó el equipo que se encuentra en un archivo 1149 00:46:59,970 --> 00:47:01,420 llamado stdio.h. 1150 00:47:01,420 --> 00:47:04,120 Ahora sólo tengo que memorizar un momento que printf es 1151 00:47:04,120 --> 00:47:06,540 en stdio.h, y de hecho habrá otro 1152 00:47:06,540 --> 00:47:08,900 funciones en ese mismo archivo que vamos a acostumbrarnos. 1153 00:47:08,900 --> 00:47:12,490 >> Así que ahora vamos a seguir adelante y presiona Ctrl-L para borrar sólo que 1154 00:47:12,490 --> 00:47:16,050 de distancia, vuelva a hacer hello2, y listo. 1155 00:47:16,050 --> 00:47:19,490 Y este comando de nuevo, más complejo de lo que vamos a explicar por 1156 00:47:19,490 --> 00:47:20,520 actuales propósitos. 1157 00:47:20,520 --> 00:47:23,570 Sin embargo, se ha ejecutado clang, clang y toma el código fuente y 1158 00:47:23,570 --> 00:47:24,870 escupe 0s y 1s. 1159 00:47:24,870 --> 00:47:28,610 Y los 0s y 1s en este caso se llaman qué? 1160 00:47:28,610 --> 00:47:29,470 Bien, código objeto. 1161 00:47:29,470 --> 00:47:32,210 Y el archivo que está en llama, así, 1162 00:47:32,210 --> 00:47:33,820 hello2, en este caso. 1163 00:47:33,820 --> 00:47:37,040 Debido a que mi archivo de texto fue hello2.c, Enter. 1164 00:47:37,040 --> 00:47:39,820 Y ahora he tomar dos signos de exclamación, signo de exclamación 1165 00:47:39,820 --> 00:47:41,880 punto, signo de exclamación. 1166 00:47:41,880 --> 00:47:45,430 Muy bien, así que ahora tenemos la capacidad de obtener cadenas, 1167 00:47:45,430 --> 00:47:46,280 al parecer. 1168 00:47:46,280 --> 00:47:48,190 Bueno, ¿qué más podemos obtener de los usuarios? 1169 00:47:48,190 --> 00:47:51,010 >> Bueno, en la biblioteca CS50, hay otras funciones que 1170 00:47:51,010 --> 00:47:53,300 Vamos a simplificar nuestras vidas en estos primeros días. 1171 00:47:53,300 --> 00:47:56,350 GetChar, GetDouble GetFloat, getInt, 1172 00:47:56,350 --> 00:47:57,290 GetLongLong, GetString. 1173 00:47:57,290 --> 00:47:59,550 Bueno, vamos a arrancar la más fácil de estos primeros. 1174 00:47:59,550 --> 00:48:01,430 GetString literalmente hace eso. 1175 00:48:01,430 --> 00:48:04,210 Simplemente se sienta allí, esperando a que el usuario escriba algo, 1176 00:48:04,210 --> 00:48:07,170 y tan pronto como me escriba algo y pulsa Intro, se 1177 00:48:07,170 --> 00:48:08,860 hace algo con ese valor. 1178 00:48:08,860 --> 00:48:11,700 Así que vamos a volver a ese ejemplo para ver exactamente lo que 1179 00:48:11,700 --> 00:48:12,950 GetString estaba haciendo. 1180 00:48:12,950 --> 00:48:17,445 Déjenme seguir adelante y abrir en gedit, hello.c, y recordar 1181 00:48:17,445 --> 00:48:20,590 que justo antes del descanso, aquí es donde lo dejamos. 1182 00:48:20,590 --> 00:48:23,240 >> Así que ahora se burlan de esta separación, en un poco más de detalle. 1183 00:48:23,240 --> 00:48:27,190 Así que en la línea 6, hay dos cosas 1184 00:48:27,190 --> 00:48:28,450 sucediendo en el momento. 1185 00:48:28,450 --> 00:48:32,630 El signo igual es separar la primera mitad y la segunda mitad. 1186 00:48:32,630 --> 00:48:34,670 Así que en el lado izquierdo del signo igual, estamos 1187 00:48:34,670 --> 00:48:35,580 diciendo cadena s. 1188 00:48:35,580 --> 00:48:37,580 Y entonces, justo términos sencillos, ¿cuál es la cadena s 1189 00:48:37,580 --> 00:48:41,040 haciendo, qué te parece? 1190 00:48:41,040 --> 00:48:42,990 Se trata de crear un qué? 1191 00:48:42,990 --> 00:48:44,930 Así que es la creación de una cadena llamada s. 1192 00:48:44,930 --> 00:48:46,370 Ahora, ¿qué significa eso realmente? 1193 00:48:46,370 --> 00:48:51,540 Bueno, se reserva espacio para una cadena llamada s. 1194 00:48:51,540 --> 00:48:52,490 Eso no es del todo correcto. 1195 00:48:52,490 --> 00:48:53,120 ¿Qué hace esto? 1196 00:48:53,120 --> 00:48:55,400 Computadoras Bueno, como ustedes saben, tienen unidades de disco duro, que es donde 1197 00:48:55,400 --> 00:48:56,300 sus archivos se almacenan. 1198 00:48:56,300 --> 00:48:59,100 Las computadoras tienen memoria RAM, y ahí es donde los programas se cargan 1199 00:48:59,100 --> 00:49:00,240 mientras se están ejecutando. 1200 00:49:00,240 --> 00:49:02,470 Así que cuando se hace doble clic en un icono de Microsoft Word y abre 1201 00:49:02,470 --> 00:49:06,380 arriba, Microsoft Word se está ejecutando, por así decirlo, en la memoria RAM, que es 1202 00:49:06,380 --> 00:49:08,160 la parte electrónica de su equipo. 1203 00:49:08,160 --> 00:49:10,660 No es la parte física, mecánica que está girando, donde 1204 00:49:10,660 --> 00:49:12,640 los datos se almacenan generalmente a largo plazo. 1205 00:49:12,640 --> 00:49:15,810 Así que la cadena s es más o menos decía la computadora me da 1206 00:49:15,810 --> 00:49:18,150 RAM suficiente para adaptarse a una cadena. 1207 00:49:18,150 --> 00:49:20,450 Eso sí que es un poco de una simplificación excesiva, ya que 1208 00:49:20,450 --> 00:49:22,300 ¿Cuán grande es la cadena va a ser? 1209 00:49:22,300 --> 00:49:24,410 Bueno, en realidad no lo sé todavía, por lo que en las próximas semanas 1210 00:49:24,410 --> 00:49:27,290 que en realidad va a retirar la capa que es una cadena y 1211 00:49:27,290 --> 00:49:28,510 que voy a decir lo que realmente es. 1212 00:49:28,510 --> 00:49:31,050 String, por ahora, es sólo una simplificación bonito de nuestro mundo. 1213 00:49:31,050 --> 00:49:35,700 Pero la cadena s declara una cadena llamada s, por ahora. 1214 00:49:35,700 --> 00:49:36,520 Declara una cadena. 1215 00:49:36,520 --> 00:49:39,310 Se reserva un poco de espacio en la memoria RAM de la cadena que el usuario es 1216 00:49:39,310 --> 00:49:40,150 a punto de escribir. 1217 00:49:40,150 --> 00:49:41,840 >> Ahora echemos un vistazo a la derecha del signo igual. 1218 00:49:41,840 --> 00:49:44,110 Así lo dice GetString (). 1219 00:49:44,110 --> 00:49:45,070 Y un poco de cordura comprobar. 1220 00:49:45,070 --> 00:49:47,940 El hecho de que no hay nada dentro de los paréntesis 1221 00:49:47,940 --> 00:49:50,810 implica que aproximadamente GetString? 1222 00:49:50,810 --> 00:49:52,180 Esto no tiene argumentos. 1223 00:49:52,180 --> 00:49:55,290 Es decir, no se puede influir en su comportamiento de ninguna manera. 1224 00:49:55,290 --> 00:49:58,940 Cada vez que lo utilice, obtendrá una cadena y eso es todo. 1225 00:49:58,940 --> 00:50:02,210 Por el contrario, printf, esperemos que su comportamiento hace 1226 00:50:02,210 --> 00:50:03,010 cambiar todo el tiempo. 1227 00:50:03,010 --> 00:50:05,230 De lo contrario, se trata de una función de impresión bastante inútil si 1228 00:50:05,230 --> 00:50:06,480 hace lo mismo. 1229 00:50:06,480 --> 00:50:07,970 Si siempre imprime David o algo 1230 00:50:07,970 --> 00:50:09,500 arbitraria todo el tiempo. 1231 00:50:09,500 --> 00:50:11,540 Así printf tiene sentido tener un argumento. 1232 00:50:11,540 --> 00:50:14,240 GetString realmente no necesita un argumento, porque quería 1233 00:50:14,240 --> 00:50:16,700 para obtener una cadena del usuario y es el usuario quien va 1234 00:50:16,700 --> 00:50:19,580 para abastecer el dinamismo escribiendo con letras diferentes 1235 00:50:19,580 --> 00:50:20,850 cada vez en el teclado. 1236 00:50:20,850 --> 00:50:23,140 >> Entonces, ¿qué GetString es en última instancia? 1237 00:50:23,140 --> 00:50:25,080 Piense en ello como este cuadro negro. 1238 00:50:25,080 --> 00:50:29,340 Y este recuadro negro no tiene entrada, pero cuando justo en 1239 00:50:29,340 --> 00:50:33,240 pronunciación, escupe una cadena que el usuario ha escrito pulg 1240 00:50:33,240 --> 00:50:36,660 Y el hecho de que hay un signo igual no significa tomar 1241 00:50:36,660 --> 00:50:39,890 lo que se escupen a la derecha y guárdelo dentro 1242 00:50:39,890 --> 00:50:41,390 lo que está en la izquierda. 1243 00:50:41,390 --> 00:50:43,470 Así signo igual aquí, que en realidad no significa 1244 00:50:43,470 --> 00:50:46,490 igualdad, más bien técnicamente significa asignación. 1245 00:50:46,490 --> 00:50:49,330 Toma el valor de la derecha, y la puso en el 1246 00:50:49,330 --> 00:50:51,050 variable de la izquierda. 1247 00:50:51,050 --> 00:50:52,820 Así que eso es todo lo que está pasando allí. 1248 00:50:52,820 --> 00:50:55,640 >> Ahora bien, en la línea 7, que llamamos printf. 1249 00:50:55,640 --> 00:50:58,170 Así que espero que printf es cada vez un poco aburrido por ahora. 1250 00:50:58,170 --> 00:50:59,530 Así que imprimir una cadena con formato. 1251 00:50:59,530 --> 00:51:00,440 ¿Qué cadena? 1252 00:51:00,440 --> 00:51:05,460 Imprima, "h-e-l-l-o,% s 1253 00:51:05,460 --> 00:51:07,840 \ N ". 1254 00:51:07,840 --> 00:51:10,470 Muy bien, ¿y qué es lo que quiero plug-in para% s? 1255 00:51:10,470 --> 00:51:12,960 Literalmente, todo lo que se almacena en s. 1256 00:51:12,960 --> 00:51:15,570 Así que en este caso, compruebe la poca cordura, ¿cuántos argumentos tiene 1257 00:51:15,570 --> 00:51:16,820 printf tomar? 1258 00:51:19,860 --> 00:51:21,110 Bueno, he oído uno. 1259 00:51:23,840 --> 00:51:26,330 Oí una vez. 1260 00:51:26,330 --> 00:51:27,730 Dos, oí dos. 1261 00:51:27,730 --> 00:51:29,920 ¿Y qué hay tres? 1262 00:51:29,920 --> 00:51:30,450 Bueno, tres? 1263 00:51:30,450 --> 00:51:30,930 Excelente. 1264 00:51:30,930 --> 00:51:33,170 Tres respuestas posibles, sólo una de ellas es correcta. 1265 00:51:33,170 --> 00:51:36,390 Así argumentos de nuevo influir en el comportamiento de una función. 1266 00:51:36,390 --> 00:51:39,380 En el pasado, tenía printf sólo tienen un argumento. 1267 00:51:39,380 --> 00:51:42,260 "Hola mundo" era un solo argumento. 1268 00:51:42,260 --> 00:51:45,190 Sin embargo, ahora, note que esto es una coma. 1269 00:51:45,190 --> 00:51:49,600 Esta coma está fuera del presupuesto / fin de la cita, lo que significa 1270 00:51:49,600 --> 00:51:52,170 printf hey, aquí viene un segundo argumento. 1271 00:51:52,170 --> 00:51:54,240 >> Así que comas en la mayoría de lenguajes de programación 1272 00:51:54,240 --> 00:51:57,300 separados múltiples argumentos. 1273 00:51:57,300 --> 00:51:59,600 Así que la respuesta es definitivamente no es uno, porque 1274 00:51:59,600 --> 00:52:00,390 existe esta coma. 1275 00:52:00,390 --> 00:52:03,680 Así mínimamente, printf es aparentemente tomando dos 1276 00:52:03,680 --> 00:52:04,940 argumentos en esta ocasión. 1277 00:52:04,940 --> 00:52:07,050 Pero la oportunidad de una pregunta con truco aquí es lo que 1278 00:52:07,050 --> 00:52:07,990 sobre esta coma? 1279 00:52:07,990 --> 00:52:11,260 ¿Significa esto que no hay realmente tres argumentos? 1280 00:52:11,260 --> 00:52:13,820 Esto, esto y esto. 1281 00:52:13,820 --> 00:52:18,820 Así que no, porque esa coma está dentro de las comillas, que 1282 00:52:18,820 --> 00:52:20,890 significa que es en realidad sólo una estética de Inglés. 1283 00:52:20,890 --> 00:52:23,180 No tiene nada que ver con el número de 1284 00:52:23,180 --> 00:52:24,890 argumentos a este programa. 1285 00:52:24,890 --> 00:52:27,670 Así que esta es una coma fuera de las comillas dobles. 1286 00:52:27,670 --> 00:52:28,850 Y entonces devuelve 0. 1287 00:52:28,850 --> 00:52:30,980 Por ahora vamos a tomar este tipo de uno en la fe para 1288 00:52:30,980 --> 00:52:34,460 hoy en día, y sólo sé que cuando las funciones se llevan a cabo la ejecución de 1289 00:52:34,460 --> 00:52:37,950 líneas de código, por lo general, debe devolver algún valor. 1290 00:52:37,950 --> 00:52:42,010 En este caso, el hecho principal debe devolver un int, 1291 00:52:42,010 --> 00:52:44,320 eso es sólo la forma en que el lenguaje C funciona. 1292 00:52:44,320 --> 00:52:47,040 >> Entonces, porque nada salió mal, se siente como este programa de 1293 00:52:47,040 --> 00:52:49,960 bien, sólo a cambio de codificación fija 0. 1294 00:52:49,960 --> 00:52:52,980 Pero en contraste, y yo voy a escribir esto en pseudo código 1295 00:52:52,980 --> 00:52:55,020 Ahora, al igual que lo hizo José cuando hicimos el calcetín 1296 00:52:55,020 --> 00:52:56,220 ejemplo la semana pasada. 1297 00:52:56,220 --> 00:53:00,440 Si algo salió mal - no es código real - fue 1298 00:53:00,440 --> 00:53:06,570 mal, y luego volver, digamos, 1. 1299 00:53:06,570 --> 00:53:08,770 Else return 0. 1300 00:53:08,770 --> 00:53:10,070 Así que aquí es donde vamos con esto. 1301 00:53:10,070 --> 00:53:12,090 Esto no es real código C, sólo pseudocódigo. 1302 00:53:12,090 --> 00:53:14,010 Pero así es como se podría volver 1303 00:53:14,010 --> 00:53:15,580 diferentes valores posibles. 1304 00:53:15,580 --> 00:53:19,520 Pero por ahora sólo voy a seguir adelante y devolver 0. 1305 00:53:19,520 --> 00:53:24,410 Muy bien, cualquier pregunta hasta el momento sobre la sintaxis, la funcionalidad, 1306 00:53:24,410 --> 00:53:25,000 o similares? 1307 00:53:25,000 --> 00:53:26,280 Sí, en la parte trasera. 1308 00:53:26,280 --> 00:53:27,530 >> AUDIENCIA: [inaudible] 1309 00:53:30,510 --> 00:53:32,210 David Malan: ¿Puedes hablar un poco más alto? 1310 00:53:32,210 --> 00:53:34,325 ¿Por qué este programa de retorno 0, y? 1311 00:53:34,325 --> 00:53:35,575 AUDIENCIA: [inaudible] 1312 00:53:39,910 --> 00:53:43,450 David Malan: Oh, eso es porque tengo pereza, lo siento. 1313 00:53:43,450 --> 00:53:48,290 No hay respuesta académica bien, devuelve 0. 1314 00:53:48,290 --> 00:53:52,690 Puedo salvar esta especie de, al decir técnicamente C, si principal 1315 00:53:52,690 --> 00:53:55,900 no explícitamente devuelve un valor, se devolverá 0 1316 00:53:55,900 --> 00:53:57,730 automáticamente para usted. 1317 00:53:57,730 --> 00:54:00,290 Lo cual es cierto, yo no estoy encubriendo. 1318 00:54:00,290 --> 00:54:03,270 Pero, yo debería haberlo hecho de esta manera. 1319 00:54:03,270 --> 00:54:05,250 No llevar interesante que eso no sea mi error. 1320 00:54:05,250 --> 00:54:06,170 ¿Sí? 1321 00:54:06,170 --> 00:54:08,470 >> AUDIENCIA: Por lo general, cuando se escribe en el vacío, que significa 1322 00:54:08,470 --> 00:54:10,770 No devuelva algo. 1323 00:54:10,770 --> 00:54:11,420 David Malan: Correcto. 1324 00:54:11,420 --> 00:54:15,800 Si por el contrario, se debe especificar antes del nombre de una función, por 1325 00:54:15,800 --> 00:54:18,590 ejemplo aquí, el vacío, la función 1326 00:54:18,590 --> 00:54:20,480 no devuelve nada. 1327 00:54:20,480 --> 00:54:25,210 Y por lo tanto yo diría, la devolución o nada en absoluto, 1328 00:54:25,210 --> 00:54:26,730 y que sería coherente. 1329 00:54:26,730 --> 00:54:27,750 Y vamos a volver a eso. 1330 00:54:27,750 --> 00:54:31,030 Y sólo para tu información, una de las capturas con el aprendizaje 1331 00:54:31,030 --> 00:54:33,450 programación en un mundo que cuenta con cientos de libros y 1332 00:54:33,450 --> 00:54:36,180 centenares de sitios web por ahí es que invariablemente se 1333 00:54:36,180 --> 00:54:38,220 ver sintaxis diferente en diferentes libros 1334 00:54:38,220 --> 00:54:40,220 por diferentes personas. 1335 00:54:40,220 --> 00:54:42,100 Darse cuenta de que haremos nuestro mejor esfuerzo en las secciones y conferencias para ser 1336 00:54:42,100 --> 00:54:42,960 consistente. 1337 00:54:42,960 --> 00:54:46,660 Pero a veces usted verá sintaxis conflicto. 1338 00:54:46,660 --> 00:54:48,540 Así que cada vez tiene dudas, pregunte. 1339 00:54:48,540 --> 00:54:51,100 Y en general, nosotros nos encargaremos de conferencias y secciones a 1340 00:54:51,100 --> 00:54:53,710 casi siempre se presentan en el camino correcto. 1341 00:54:53,710 --> 00:54:56,070 Y digo casi siempre, porque ejemplo de ello. 1342 00:54:56,070 --> 00:54:56,860 Otras preguntas? 1343 00:54:56,860 --> 00:55:01,590 >> AUDIENCIA: ¿Tiene% s existe fuera del aparato? 1344 00:55:01,590 --> 00:55:03,710 David Malan: ¿Tiene% s existe fuera del aparato? 1345 00:55:03,710 --> 00:55:04,180 Sí. 1346 00:55:04,180 --> 00:55:07,760 Así que% s tiene que ver con C. El hecho de que se esté utilizando, 1347 00:55:07,760 --> 00:55:10,290 fundamentalmente el aparato no tiene nada que ver con la 1348 00:55:10,290 --> 00:55:12,080 características del lenguaje que estamos utilizando. 1349 00:55:12,080 --> 00:55:15,990 De hecho, la semana pasada, cuando se utilizó mi Mac, me escribió 1350 00:55:15,990 --> 00:55:17,160 C código en mi mac. 1351 00:55:17,160 --> 00:55:20,020 Podría haber usado% s en mi Mac, y se podía utilizar en 1352 00:55:20,020 --> 00:55:22,400 el ordenador con Windows si instala un compilador, como 1353 00:55:22,400 --> 00:55:24,070 Visual Studio de Microsoft. 1354 00:55:24,070 --> 00:55:24,990 Así que% s. 1355 00:55:24,990 --> 00:55:27,860 Todo lo que estamos haciendo dentro de esta ventana hoy tiene que 1356 00:55:27,860 --> 00:55:31,140 nada que ver con C. Y fundamentalmente que ver con la 1357 00:55:31,140 --> 00:55:33,450 sistema operativo en cuestión. 1358 00:55:33,450 --> 00:55:35,900 Por el contrario, el terminal blanco y negro ventana - cuando 1359 00:55:35,900 --> 00:55:40,160 Estoy escribiendo cosas como ls y cd rm, y - 1360 00:55:40,160 --> 00:55:42,020 que tiene que ver con el sistema operativo y 1361 00:55:42,020 --> 00:55:43,562 navegar alrededor. 1362 00:55:43,562 --> 00:55:44,546 Si. 1363 00:55:44,546 --> 00:55:46,520 AUDIENCIA: Me refería a la biblioteca, la biblioteca CS50. 1364 00:55:46,520 --> 00:55:49,960 David Malan: Está bien, así que si te refieres a la cadena de palabras clave, que 1365 00:55:49,960 --> 00:55:52,460 sólo existe en la biblioteca CS50, correcto. 1366 00:55:52,460 --> 00:55:55,350 Que no existe en sí misma C, y de hecho en un par 1367 00:55:55,350 --> 00:55:58,220 de semanas vamos a tirar la biblioteca CS50 y empezar 1368 00:55:58,220 --> 00:56:02,290 hacer las cosas de la nada a nosotros mismos, por así decirlo. 1369 00:56:02,290 --> 00:56:02,940 Otras preguntas? 1370 00:56:02,940 --> 00:56:04,577 Si. 1371 00:56:04,577 --> 00:56:05,827 >> AUDIENCIA: [inaudible] 1372 00:56:09,470 --> 00:56:10,160 David Malan: Buena pregunta. 1373 00:56:10,160 --> 00:56:11,720 Es el caso de los comandos sensible? 1374 00:56:11,720 --> 00:56:13,710 Y permítanme hacer una distinción. 1375 00:56:13,710 --> 00:56:15,840 Así que los comandos son generalmente las cosas que voy a escribir en el 1376 00:56:15,840 --> 00:56:17,940 parte inferior de la ventana, en la ventana de terminal. 1377 00:56:17,940 --> 00:56:21,770 Todo lo hasta aquí sería las declaraciones o códigos C. 1378 00:56:21,770 --> 00:56:24,490 Pero en ambos casos, la respuesta es la misma, sí. 1379 00:56:24,490 --> 00:56:27,800 Ambos de estos entornos, el código C en la parte superior y el 1380 00:56:27,800 --> 00:56:29,910 sistema operativo de línea de comandos en el 1381 00:56:29,910 --> 00:56:31,440 inferior, se distingue entre mayúsculas y minúsculas. 1382 00:56:31,440 --> 00:56:33,830 Por lo que debe capitalizar GetString con un capital G, 1383 00:56:33,830 --> 00:56:37,050 capital de S. Debe escribir printf en minúsculas. 1384 00:56:37,050 --> 00:56:39,520 Debe escribir ls en minúsculas. 1385 00:56:39,520 --> 00:56:43,260 Así, en casi todas las situaciones de este semestre, el caso será, en 1386 00:56:43,260 --> 00:56:44,820 hecho, la materia. 1387 00:56:44,820 --> 00:56:46,148 Sí. 1388 00:56:46,148 --> 00:56:47,398 >> AUDIENCIA: [inaudible] 1389 00:56:54,770 --> 00:56:56,480 David Malan: Ah, entonces está bien, ¿qué pasaría si tuviéramos un archivo 1390 00:56:56,480 --> 00:56:57,840 llamado hello.d. 1391 00:56:57,840 --> 00:57:00,090 Así que resulta que D es un lenguaje de programación. 1392 00:57:00,090 --> 00:57:02,790 Y así, en algunos casos, en realidad podríamos escribir un programa en 1393 00:57:02,790 --> 00:57:06,190 ese archivo y lo han compilado de esa manera. 1394 00:57:06,190 --> 00:57:09,090 Podemos, y en realidad, la respuesta corta es, no lo sé. 1395 00:57:09,090 --> 00:57:10,440 Así que vamos a hacer esto. 1396 00:57:10,440 --> 00:57:13,040 Déjame ir adelante y crear un nuevo archivo. 1397 00:57:13,040 --> 00:57:15,580 Y la vuelta aquí, de verdad, en general, es cuando cualquier duda 1398 00:57:15,580 --> 00:57:18,130 este semestre, y que tenga su aparato o equipo 1399 00:57:18,130 --> 00:57:20,030 abrir, seguir adelante e intentar algo. 1400 00:57:20,030 --> 00:57:23,740 Así que voy a guardar un archivo llamado hello.d. 1401 00:57:23,740 --> 00:57:25,010 Guardar este. 1402 00:57:25,010 --> 00:57:29,070 Y voy a hacer correr hola Intro. 1403 00:57:29,070 --> 00:57:31,660 Parecía inferir que c es más probable 1404 00:57:31,660 --> 00:57:35,920 que d, en este caso. 1405 00:57:35,920 --> 00:57:38,046 Otras cuestiones. 1406 00:57:38,046 --> 00:57:40,456 Si. 1407 00:57:40,456 --> 00:57:41,706 >> AUDIENCIA: [inaudible] 1408 00:57:48,170 --> 00:57:49,837 David Malan: Bueno, decir que una vez más. 1409 00:57:49,837 --> 00:57:51,087 AUDIENCIA: [inaudible] 1410 00:58:04,250 --> 00:58:05,780 David Malan: ¿Cómo haría usted para diagnosticar o que 1411 00:58:05,780 --> 00:58:06,380 solución de problemas que? 1412 00:58:06,380 --> 00:58:08,800 Así que lo más probable, porque son lenguas diferentes, 1413 00:58:08,800 --> 00:58:10,280 más probable que se obtendría un completo 1414 00:58:10,280 --> 00:58:11,580 programa diferente emitida. 1415 00:58:11,580 --> 00:58:14,140 Usted recibirá los mensajes de error totalmente diferentes. 1416 00:58:14,140 --> 00:58:16,750 Y también sólo en términos de diseño, sin duda sería un 1417 00:58:16,750 --> 00:58:19,140 decisión de diseño pobre a escribir dos diferentes 1418 00:58:19,140 --> 00:58:21,510 idiomas con archivos casi el mismo nombre, en 1419 00:58:21,510 --> 00:58:23,000 el directorio de exactamente la misma, utilizando un 1420 00:58:23,000 --> 00:58:24,550 herramienta automática como hacerlo. 1421 00:58:24,550 --> 00:58:27,750 Así que también puede empujar hacia atrás y decir en 15 años de hacer esto, 1422 00:58:27,750 --> 00:58:29,190 nunca cometí ese error. 1423 00:58:29,190 --> 00:58:30,030 Podría suceder. 1424 00:58:30,030 --> 00:58:31,190 Pero no sólo diferentes, creo, 1425 00:58:31,190 --> 00:58:33,180 defensas logísticas existentes. 1426 00:58:33,180 --> 00:58:35,440 Además, los mensajes de error que se derivarían, que haría 1427 00:58:35,440 --> 00:58:37,260 finalmente revelar cuál es el problema. 1428 00:58:37,260 --> 00:58:39,120 Sin embargo, un caso extremo posible. 1429 00:58:39,120 --> 00:58:41,730 >> Muy bien, así que vamos a introducir un par de otras 1430 00:58:41,730 --> 00:58:45,600 características aquí ahora, para que podamos empezar a construir en más 1431 00:58:45,600 --> 00:58:47,140 y más complejo programa. 1432 00:58:47,140 --> 00:58:49,000 Así que primero de todo, las matemáticas. 1433 00:58:49,000 --> 00:58:51,520 Así Ejemplos de matemáticas son sólo un poco fácil en la primera semana. 1434 00:58:51,520 --> 00:58:53,560 Esto no quiere decir que toda la programación es de aproximadamente 1435 00:58:53,560 --> 00:58:54,390 las matemáticas. 1436 00:58:54,390 --> 00:58:57,890 Ciertamente, la comprensión de las diversas características de 1437 00:58:57,890 --> 00:58:59,610 matemáticas, álgebra en particular, es 1438 00:58:59,610 --> 00:59:00,330 muy relevante aquí. 1439 00:59:00,330 --> 00:59:03,010 En las clases de nivel superior CS, álgebra lineal, 1440 00:59:03,010 --> 00:59:03,920 cálculo, y similares. 1441 00:59:03,920 --> 00:59:06,500 Pero se dan cuenta de la mayor parte de lo que vamos a hacer en este semestre no se reduce 1442 00:59:06,500 --> 00:59:09,230 a las matemáticas, y ciertamente no a la aritmética, per se, pero realmente 1443 00:59:09,230 --> 00:59:11,570 a poco la lógica y el pensamiento cuidadoso. 1444 00:59:11,570 --> 00:59:14,310 Y así, este vínculo que la informática ha tenido durante mucho tiempo, 1445 00:59:14,310 --> 00:59:16,570 especialmente a nivel de la escuela secundaria, con las matemáticas, es una 1446 00:59:16,570 --> 00:59:17,370 poco engañoso. 1447 00:59:17,370 --> 00:59:20,090 Dado que la mayoría de los programas que vamos a escribir, en realidad, son 1448 00:59:20,090 --> 00:59:23,290 especie de mayor nivel y se centran en la solución de problemas que, 1449 00:59:23,290 --> 00:59:26,410 Seguro, podría utilizar un poco de sumas, restas, y varios 1450 00:59:26,410 --> 00:59:28,650 fórmulas matemáticas o similares, 1451 00:59:28,650 --> 00:59:30,860 pero al fin y al cabo, se trata de pensar y no 1452 00:59:30,860 --> 00:59:33,240 sólo la aplicación de lo que podría haber hecho en TI como un 1453 00:59:33,240 --> 00:59:35,050 calculadora en la escuela secundaria. 1454 00:59:35,050 --> 00:59:38,410 >> Así que dicho esto, ahora vamos a hacer algo con estos 1455 00:59:38,410 --> 00:59:40,980 operadores matemáticos que existen para que podamos viaje 1456 00:59:40,980 --> 00:59:43,950 sobre algunos de los aspectos subyacentes de la programación, o en 1457 00:59:43,950 --> 00:59:48,930 este caso C. Así que ahí están, como la biblioteca CS50 sugerido, 1458 00:59:48,930 --> 00:59:51,520 y hoy sólo estamos utilizando GetString - y en un momento 1459 00:59:51,520 --> 00:59:52,940 tal vez otra función - 1460 00:59:52,940 --> 00:59:55,380 pero hay diferentes tipos de datos en un ordenador. 1461 00:59:55,380 --> 00:59:58,550 Al final del día, las computadoras sólo saben 0s y 1s. 1462 00:59:58,550 --> 01:00:01,880 Pero recordemos que la semana pasada hablamos sobre el sistema binario 1463 01:00:01,880 --> 01:00:05,000 en la representación de los números, como el número 0 y 1, y 2, 1464 01:00:05,000 --> 01:00:07,480 todo el camino en un máximo de 8, como en el vídeo de Nate. 1465 01:00:07,480 --> 01:00:08,840 Y entonces podemos contar mucho mayor, ya que 1466 01:00:08,840 --> 01:00:10,000 hizo en el escenario aquí. 1467 01:00:10,000 --> 01:00:15,660 Pero si usted quiere representar no sólo números sino letras, 1468 01:00:15,660 --> 01:00:18,240 nosotros, los humanos, tenemos que llegar a algún arbitrario 1469 01:00:18,240 --> 01:00:21,180 convenciones, por lo que si al final del día, todo mi equipo 1470 01:00:21,180 --> 01:00:24,260 tiene es la capacidad de expresar 0s y 1s, así que será mejor que 1471 01:00:24,260 --> 01:00:27,990 empezar a normalizar los patrones de 0s y 1s que representan 1472 01:00:27,990 --> 01:00:28,800 cosas diferentes. 1473 01:00:28,800 --> 01:00:32,370 Un patrón de 0 y 1 que representa la letra a. 1474 01:00:32,370 --> 01:00:34,840 Los patrones de 0s y 1s que representan la letra z. 1475 01:00:34,840 --> 01:00:37,600 Los patrones de 0s y 1s, que representan el color azul, o 1476 01:00:37,600 --> 01:00:38,600 rojo, o similares. 1477 01:00:38,600 --> 01:00:42,360 Tenemos que utilizar todos estos 0s y 1s para expresarnos en 1478 01:00:42,360 --> 01:00:45,140 contextos diferentes, de diferentes maneras que no son 1479 01:00:45,140 --> 01:00:46,470 necesariamente numéricas. 1480 01:00:46,470 --> 01:00:51,150 >> Así que en términos de representación, C cuenta con diferentes tipos de datos, 1481 01:00:51,150 --> 01:00:52,550 y hemos visto a uno de ellos hasta ahora. 1482 01:00:52,550 --> 01:00:54,940 Vimos int y observe lo que no está en la pantalla 1483 01:00:54,940 --> 01:00:56,140 en estos momentos es una cadena. 1484 01:00:56,140 --> 01:00:58,550 La cadena no, de hecho, existen en C. De nuevo, es una 1485 01:00:58,550 --> 01:01:00,610 simplificación que presentamos para la primera 1486 01:01:00,610 --> 01:01:01,570 par de semanas. 1487 01:01:01,570 --> 01:01:03,770 Un char es un carácter individual. 1488 01:01:03,770 --> 01:01:07,050 Un flotador es un número real, con un punto decimal y los números a 1489 01:01:07,050 --> 01:01:09,066 la izquierda y la derecha de la misma. 1490 01:01:09,066 --> 01:01:16,040 Un doble es lo que, para los que tienen antecedentes de vuelta antes? 1491 01:01:16,040 --> 01:01:19,720 Así, un doble es dos veces algo. 1492 01:01:19,720 --> 01:01:21,240 Añade el doble de mucha precisión. 1493 01:01:21,240 --> 01:01:22,440 Entonces, ¿qué significa esto? 1494 01:01:22,440 --> 01:01:26,090 Así, en cada uno de estos casos, el mundo tiene una especie de estándar 1495 01:01:26,090 --> 01:01:27,960 cuántos bits se utilizan para representar 1496 01:01:27,960 --> 01:01:29,160 cada una de estas cosas. 1497 01:01:29,160 --> 01:01:31,590 Así que si usted ha mirado vídeo ASCII Nate ya por parte 1498 01:01:31,590 --> 01:01:36,170 del conjunto de procesadores 0 o más tarde esta semana usted, probablemente sabrá por 1499 01:01:36,170 --> 01:01:37,450 que ASCII - 1500 01:01:37,450 --> 01:01:38,610 representaciones de caracteres - 1501 01:01:38,610 --> 01:01:40,670 utilizar la cantidad de bits? 1502 01:01:40,670 --> 01:01:43,410 E incluso se puede recordar de nuestra demostración de cómo la semana pasada 1503 01:01:43,410 --> 01:01:45,500 muchas personas estaban en el escenario. 1504 01:01:45,500 --> 01:01:46,840 Así 7 o 8, típicamente. 1505 01:01:46,840 --> 01:01:49,230 Así que en general, 8, y hay algo que se llama prorrogado 1506 01:01:49,230 --> 01:01:51,240 ASCII que utiliza todos los 8 bits, en lugar de 7. 1507 01:01:51,240 --> 01:01:54,710 Pero, en general, se habla en potencias de 2, así que en este caso, 8. 1508 01:01:54,710 --> 01:01:58,900 Así que un char en un lenguaje de programación suele ser de 8 bits. 1509 01:01:58,900 --> 01:02:02,550 Así que un int es generalmente de 32 bits. 1510 01:02:02,550 --> 01:02:04,810 Un flotador es generalmente 32 bits. 1511 01:02:04,810 --> 01:02:08,060 Un doble es generalmente de 64 bits. 1512 01:02:08,060 --> 01:02:08,870 ¿Y qué significa eso? 1513 01:02:08,870 --> 01:02:11,500 Esto significa que puede representar grandes números, o en el caso 1514 01:02:11,500 --> 01:02:15,490 de los números reales, puede tener un número mucho más después de la 1515 01:02:15,490 --> 01:02:16,240 decimal. 1516 01:02:16,240 --> 01:02:18,980 Precisión mucho más, en ese caso. 1517 01:02:18,980 --> 01:02:21,780 Ahora un largo tiempo es desafortunadamente nombre. 1518 01:02:21,780 --> 01:02:24,340 Así que hay un int que es de 32 bits. 1519 01:02:24,340 --> 01:02:29,800 Hay una larga que es, nope, 32 bits. 1520 01:02:29,800 --> 01:02:32,610 Y un largo tiempo, que es 64 bits. 1521 01:02:32,610 --> 01:02:34,830 Sin embargo, algunos de los que son sensibles al contexto, sino que depende 1522 01:02:34,830 --> 01:02:36,190 ¿qué tipo de equipo que tiene. 1523 01:02:36,190 --> 01:02:40,510 Así que en general, se deberá especificar en una tarea o en un concurso cuando 1524 01:02:40,510 --> 01:02:41,180 lo que realmente importa. 1525 01:02:41,180 --> 01:02:43,080 Pero el punto es que hay todos estos diferentes 1526 01:02:43,080 --> 01:02:44,250 representaciones aquí. 1527 01:02:44,250 --> 01:02:45,950 >> Así que vamos a bucear en realidad en un programa. 1528 01:02:45,950 --> 01:02:48,300 En lugar de escribir esta uno desde cero, déjame ir por delante 1529 01:02:48,300 --> 01:02:50,940 y abrir a partir del código fuente de hoy - todo lo cual es 1530 01:02:50,940 --> 01:02:54,980 en línea - si quieres improvisar una solución en línea o retorno de la 1531 01:02:54,980 --> 01:02:57,120 Miércoles con el aparato en su ordenador, las instrucciones 1532 01:02:57,120 --> 01:02:59,160 para que unirá en la página principal del curso. 1533 01:02:59,160 --> 01:03:00,830 He aquí un programa super simple. 1534 01:03:00,830 --> 01:03:02,520 Pero tiene un poco de algo nuevo en la parte superior que 1535 01:03:02,520 --> 01:03:03,650 que no teníamos antes. 1536 01:03:03,650 --> 01:03:05,800 Un montón de líneas azules del texto. 1537 01:03:05,800 --> 01:03:08,410 Así pues, estas líneas azules representan observaciones. 1538 01:03:08,410 --> 01:03:10,620 Así que es muy útil en un programa para poder escribir 1539 01:03:10,620 --> 01:03:13,160 algunos comentarios a ti mismo, o con colegas o amigos, o 1540 01:03:13,160 --> 01:03:15,700 Teaching Fellows, ese tipo de describir lo que está pasando en 1541 01:03:15,700 --> 01:03:18,500 este archivo, pero no tienen nada que ver con el código C en sí. 1542 01:03:18,500 --> 01:03:20,860 Nada que ver con el programa funcional, es sólo 1543 01:03:20,860 --> 01:03:21,760 estética. 1544 01:03:21,760 --> 01:03:24,580 Así que la manera de hacer esto en C es por lo general comienzan su 1545 01:03:24,580 --> 01:03:29,860 comentarios con / * y termina con sus comentarios 1546 01:03:29,860 --> 01:03:31,270 * /. 1547 01:03:31,270 --> 01:03:34,140 Y si usted es realmente anal y me gusta dibujar tipo de imágenes, 1548 01:03:34,140 --> 01:03:35,870 entonces se había puesto un montón de estrellas, que serías una 1549 01:03:35,870 --> 01:03:36,970 pequeña caja como esta. 1550 01:03:36,970 --> 01:03:37,990 Pero nada de eso importa. 1551 01:03:37,990 --> 01:03:40,230 Lo único que importa es el primer 1552 01:03:40,230 --> 01:03:41,620 y el. último 1553 01:03:41,620 --> 01:03:43,820 Esto es lo que se llama un comentario de varias líneas. 1554 01:03:43,820 --> 01:03:46,610 Y es sólo convención humana a menudo lo hacen las estrellas y la caja 1555 01:03:46,610 --> 01:03:48,420 cosas como esto si usted tiene un montón de tiempo libre. 1556 01:03:48,420 --> 01:03:51,550 >> Así que después de que usted ha escrito en algunos comentarios, por lo general, vienen 1557 01:03:51,550 --> 01:03:53,160 las agallas reales del programa. 1558 01:03:53,160 --> 01:03:55,630 Aquí está nuestra familiarizado # include. 1559 01:03:55,630 --> 01:04:00,410 Y sólo rápido, esto es necesario o no es necesario? 1560 01:04:00,410 --> 01:04:02,860 AUDIENCIA: Necesario. 1561 01:04:02,860 --> 01:04:04,390 David Malan: Así que no es realmente necesario. 1562 01:04:04,390 --> 01:04:07,070 ¿Por qué, sin embargo, no es necesario? 1563 01:04:07,070 --> 01:04:08,170 Así que no hay printf. 1564 01:04:08,170 --> 01:04:08,510 En efecto. 1565 01:04:08,510 --> 01:04:10,470 Todo lo que estamos haciendo en este programa son las matemáticas. 1566 01:04:10,470 --> 01:04:11,640 Así que en realidad se puede borrar eso. 1567 01:04:11,640 --> 01:04:14,330 Así que no siempre tienen que incluir nada en 1568 01:04:14,330 --> 01:04:15,420 la parte superior de un programa. 1569 01:04:15,420 --> 01:04:17,020 >> Así que vamos a simplificar esto un poco. 1570 01:04:17,020 --> 01:04:18,650 Y ahora darse cuenta de lo que hace el programa. 1571 01:04:18,650 --> 01:04:19,920 No hay mucho de interés. 1572 01:04:19,920 --> 01:04:21,410 int x = 1. 1573 01:04:21,410 --> 01:04:22,550 Bueno, lo que se esta haciendo? 1574 01:04:22,550 --> 01:04:25,130 Bueno, piense en el modelo mental de antes. 1575 01:04:25,130 --> 01:04:27,500 El lado izquierdo de esta expresión hace qué? 1576 01:04:31,440 --> 01:04:32,830 Crear un espacio para un entero. 1577 01:04:32,830 --> 01:04:33,930 Entonces, ¿cómo mucho espacio? 1578 01:04:33,930 --> 01:04:36,980 Bueno, sucede que ahora sabemos que es de 32 bits. 1579 01:04:36,980 --> 01:04:40,070 Anteriormente, una cadena era técnicamente 32 bits, pero más 1580 01:04:40,070 --> 01:04:40,950 en que en el futuro. 1581 01:04:40,950 --> 01:04:42,240 Pero un int es de 32 bits. 1582 01:04:42,240 --> 01:04:45,590 Así que esta expresión de la izquierda aquí, int x sólo dice hey 1583 01:04:45,590 --> 01:04:48,490 sistema operativo, dame 32 bits de RAM - 1584 01:04:48,490 --> 01:04:50,450 también conocida como 4 bytes de RAM - 1585 01:04:50,450 --> 01:04:53,930 para que yo pueda poner un entero en ese espacio. 1586 01:04:53,930 --> 01:04:55,330 ¿Qué entero te quieres poner? 1587 01:04:55,330 --> 01:04:56,640 Bueno, sólo el número 1. 1588 01:04:56,640 --> 01:04:59,530 int y recibe 2, hace exactamente lo mismo, aunque el 1589 01:04:59,530 --> 01:05:02,160 número es más grande, en términos de su magnitud. 1590 01:05:02,160 --> 01:05:04,790 El número en sí es todavía tan sólo 32 bits. 1591 01:05:04,790 --> 01:05:06,520 Es solo el patrón de bits es diferente a 1592 01:05:06,520 --> 01:05:08,260 representan el 1 versus 2. 1593 01:05:08,260 --> 01:05:11,980 int z dice ahora dame otros 32 bits, lo llaman z, y poner el 1594 01:05:11,980 --> 01:05:14,210 la suma de 1 y 2 en allí. 1595 01:05:14,210 --> 01:05:18,050 Así que ahora z es de suponer almacenar el valor 3, 1596 01:05:18,050 --> 01:05:19,360 y entonces devuelve 0. 1597 01:05:19,360 --> 01:05:23,020 >> Ahora este programa, es lo que hace algo de interés? 1598 01:05:23,020 --> 01:05:26,170 Así que en realidad no hace nada interesante, en cualquier 1599 01:05:26,170 --> 01:05:28,450 sentido, porque ¿por qué? Es hacer un poco de matemáticas. 1600 01:05:28,450 --> 01:05:30,590 Pero no es regresar la respuesta correcta. 1601 01:05:30,590 --> 01:05:31,790 Se devuelve 0. 1602 01:05:31,790 --> 01:05:33,440 No es la impresión de la respuesta. 1603 01:05:33,440 --> 01:05:35,760 Así que este programa es fundamentalmente inútil, ya que 1604 01:05:35,760 --> 01:05:36,350 está ahora. 1605 01:05:36,350 --> 01:05:37,220 Es hacer algo de trabajo. 1606 01:05:37,220 --> 01:05:39,530 Va a tomar algún número de segundos o microsegundos, a 1607 01:05:39,530 --> 01:05:41,510 correr, pero no está haciendo nada 1608 01:05:41,510 --> 01:05:42,770 útil para el humano. 1609 01:05:42,770 --> 01:05:46,810 >> Así que en realidad ahora abrir math2, donde ahora estoy realmente 1610 01:05:46,810 --> 01:05:48,250 imprimir el resultado. 1611 01:05:48,250 --> 01:05:51,260 Así que esto también se puede deducir de los ejemplos anteriores. 1612 01:05:51,260 --> 01:05:54,320 Si quiero hacer algo de matemáticas simples, int x = 1, y 1613 01:05:54,320 --> 01:05:56,820 = 2. z es 1 más 2 ahora. 1614 01:05:56,820 --> 01:05:59,240 ¿Qué es esto va a imprimir obviamente? 1615 01:05:59,240 --> 01:06:00,120 Sólo 3. 1616 01:06:00,120 --> 01:06:01,590 Así cordura registro rápido. 1617 01:06:01,590 --> 01:06:03,830 Déjame entrar en este directorio. 1618 01:06:03,830 --> 01:06:06,480 Así cd source1m. 1619 01:06:06,480 --> 01:06:09,370 Déjenme seguir adelante y escribir make math2. 1620 01:06:09,370 --> 01:06:11,510 No hay mensajes de error salió, así que voy a correr - 1621 01:06:11,510 --> 01:06:14,800 a.out--no me deja correr math2. Intro. 1622 01:06:14,800 --> 01:06:16,750 Y, en efecto, se imprimen 3. 1623 01:06:16,750 --> 01:06:18,460 Bueno, vamos a echar un vistazo a una variante de esto. 1624 01:06:18,460 --> 01:06:23,870 En math3.c, ahora tenemos este ejemplo aquí. 1625 01:06:23,870 --> 01:06:26,540 >> Así que esta es una especie de interesante. 1626 01:06:26,540 --> 01:06:32,000 Así que en esta de aquí, la respuesta se va a poner 1 dividido por 10, 1627 01:06:32,000 --> 01:06:33,910 y nota que he declarado como un flotador. 1628 01:06:33,910 --> 01:06:35,200 ¿Por qué queremos que sea un flotador? 1629 01:06:35,200 --> 01:06:36,110 Bueno, es una fracción. 1630 01:06:36,110 --> 01:06:37,140 Va a ser un número real. 1631 01:06:37,140 --> 01:06:40,970 Así que va a ser de 0,1, es de esperar - 10%, en este caso. 1632 01:06:40,970 --> 01:06:42,610 Y ¿qué es lo que entonces quiero imprimir? 1633 01:06:42,610 --> 01:06:43,440 Bueno, esta respuesta. 1634 01:06:43,440 --> 01:06:44,760 Bueno, vamos a molestar las distingue en primer lugar. 1635 01:06:44,760 --> 01:06:47,020 Así que en el lado izquierdo, declarar una 1636 01:06:47,020 --> 01:06:49,410 flotar, llame a responderla. 1637 01:06:49,410 --> 01:06:52,280 En el lado derecho, no 1 dividido por 10 y poner ese 1638 01:06:52,280 --> 01:06:54,370 responder dentro de la variable. 1639 01:06:54,370 --> 01:06:56,410 Ahora, esta línea se ve un poco más críptico. 1640 01:06:56,410 --> 01:06:59,440 Pero note algunas de las características familiares. % Significa aquí viene un 1641 01:06:59,440 --> 01:07:00,490 marcador de posición. 1642 01:07:00,490 --> 01:07:03,230 f significa aquí hay un valor de punto flotante, un verdadero 1643 01:07:03,230 --> 01:07:05,490 número, algo con un punto decimal. 1644 01:07:05,490 --> 01:07:07,330 0.2 ¿qué significa? 1645 01:07:07,330 --> 01:07:10,740 Alguien sabe por experiencia previa? 1646 01:07:10,740 --> 01:07:12,010 Dos decimales. 1647 01:07:12,010 --> 01:07:14,050 Así que no he visto esto antes, pero es sólo una forma de 1648 01:07:14,050 --> 01:07:16,360 el ejercicio de un poco más de control sobre printf y 1649 01:07:16,360 --> 01:07:20,840 dicho no me dan 30 puntos después del punto decimal, 1650 01:07:20,840 --> 01:07:22,490 en cambio me dan sólo 2. 1651 01:07:22,490 --> 01:07:23,960 >> Y luego vamos a seguir adelante y ejecutar este. 1652 01:07:23,960 --> 01:07:30,160 Así que las matemáticas 3, y ahora me deja correr matemáticas 3, Enter. 1653 01:07:30,160 --> 01:07:34,630 Y eso no está bien. 1654 01:07:34,630 --> 01:07:37,390 Parece que hemos encontrado nuestro error genuino primero. 1655 01:07:37,390 --> 01:07:39,400 Bueno, tal vez no estoy buscando lo suficientemente cerca. 1656 01:07:39,400 --> 01:07:41,960 Así que déjame ir hasta aquí, y me deja poner 20 decimal 1657 01:07:41,960 --> 01:07:43,300 lugares puntuales allí. 1658 01:07:43,300 --> 01:07:47,950 Y déjame recopilar la información, hacer math3, corre. 1659 01:07:47,950 --> 01:07:50,960 Bastante seguro de 1 dividido por 10 no es 0. 1660 01:07:50,960 --> 01:07:54,270 Entonces, ¿qué está pasando? 1661 01:07:54,270 --> 01:07:56,740 Pues bien, así que en realidad no tiene nada que ver con esto. 1662 01:07:56,740 --> 01:07:57,600 Eso es un buen pensamiento. 1663 01:07:57,600 --> 01:07:59,140 Esto es realmente sólo una coincidencia 1664 01:07:59,140 --> 01:08:00,220 que estamos haciendo esto. 1665 01:08:00,220 --> 01:08:02,010 Pero sólo para demostrar que esto no lo es, voy a 1666 01:08:02,010 --> 01:08:03,160 devolver algo al azar. 1667 01:08:03,160 --> 01:08:05,160 No hagas esto en casa, porque es simplemente incorrecto. 1668 01:08:05,160 --> 01:08:08,000 Pero que math3, déjame correr. 1669 01:08:08,000 --> 01:08:10,690 Así que no tiene nada que ver con lo que estoy regresando, sólo tiene que hacer 1670 01:08:10,690 --> 01:08:11,940 con lo que estoy imprimiendo. 1671 01:08:11,940 --> 01:08:14,150 Pero lo escuché aquí abajo. 1672 01:08:14,150 --> 01:08:15,270 ¿Qué? 1673 01:08:15,270 --> 01:08:17,524 AUDIENCIA: Así que tenemos que escribir los números en 1674 01:08:17,524 --> 01:08:19,680 la división como - 1675 01:08:19,680 --> 01:08:20,319 >> David Malan: Bueno bueno. 1676 01:08:20,319 --> 01:08:22,810 Así que tenemos que escribir los números que participan en el 1677 01:08:22,810 --> 01:08:25,979 división de punto flotante como aquí se valora. 1678 01:08:25,979 --> 01:08:29,359 Entonces, el problema aquí es que antes: C, como con una gran cantidad de 1679 01:08:29,359 --> 01:08:31,819 idiomas, cuenta con diferentes tipos de datos. 1680 01:08:31,819 --> 01:08:34,600 Y esos tipos de datos, por ejemplo, son estas aquí. 1681 01:08:34,600 --> 01:08:37,430 Y los tipos de datos de que se trata aquí, cuando yo escriba 1 y luego 1682 01:08:37,430 --> 01:08:40,870 tipo 10, son probablemente lo que los tipos de datos? 1683 01:08:40,870 --> 01:08:42,170 Así que es probable que un int, ¿verdad? 1684 01:08:42,170 --> 01:08:44,149 Definitivamente no es un flotador porque no hay decimal 1685 01:08:44,149 --> 01:08:45,460 punto o algo así. 1686 01:08:45,460 --> 01:08:48,270 Así que en realidad, tengo un entero dividido por un entero. 1687 01:08:48,270 --> 01:08:52,160 >> Así que lo interesante de las matemáticas y un ordenador es que 1688 01:08:52,160 --> 01:08:54,840 si usted está haciendo uso de la división de números enteros - 1689 01:08:54,840 --> 01:08:57,310 1 dividido por 10, si es de 0,1. 1690 01:08:57,310 --> 01:09:01,420 Sin embargo, cuando se está dividiendo un número entero por un número entero, el 1691 01:09:01,420 --> 01:09:06,859 respuesta tiene que ser también un número entero sólo porque, por ahora. 1692 01:09:06,859 --> 01:09:08,630 ¿Y cuál es la implicación, entonces? 1693 01:09:08,630 --> 01:09:13,640 Bueno, si la respuesta es 1 dividido por 10 es igual a 0,1, lo que 1694 01:09:13,640 --> 01:09:15,680 el equipo se va a hacer es que no tengo idea de cómo 1695 01:09:15,680 --> 01:09:19,270 representan 0,1, porque eso es un valor de punto flotante, no un 1696 01:09:19,270 --> 01:09:21,910 entero, sino que va a cortar todo después de la 1697 01:09:21,910 --> 01:09:27,470 punto decimal y sólo le mostrará el 0 al principio. 1698 01:09:27,470 --> 01:09:29,540 Y el hecho de que se está imprimiendo, como un punto flotante 1699 01:09:29,540 --> 01:09:31,200 valor, es sólo algo estético. 1700 01:09:31,200 --> 01:09:34,279 Esto se debe a que estoy forzando al ordenador para imprimir esto como un 1701 01:09:34,279 --> 01:09:35,229 flotando valor en puntos. 1702 01:09:35,229 --> 01:09:37,720 Y de hecho lo he declarado como un flotador, pero la matemática 1703 01:09:37,720 --> 01:09:39,010 pasando por aquí. 1704 01:09:39,010 --> 01:09:41,859 >> Así que me realmente solucionar esto de una manera muy fácil. 1705 01:09:41,859 --> 01:09:45,250 ¿Por qué no acaba de hacer 10,0 y 1,0, aunque 1706 01:09:45,250 --> 01:09:47,609 técnicamente podría salirse con la suya haciendo uno de esos. 1707 01:09:47,609 --> 01:09:50,630 Ahora voy a seguir adelante y hacer math3. 1708 01:09:50,630 --> 01:09:56,350 Déjenme seguir adelante y ahora se ejecutan math3, Enter. 1709 01:09:56,350 --> 01:09:57,500 Y ahora, oh chico. 1710 01:09:57,500 --> 01:10:00,050 Ahora tenemos un nuevo problema por completo. 1711 01:10:00,050 --> 01:10:05,600 Así que mejor, ¿verdad, estamos más cerca de 0,1, pero lo que es claramente 1712 01:10:05,600 --> 01:10:06,240 mal aquí? 1713 01:10:06,240 --> 01:10:08,260 A menos que haya estado mintiendo durante años, ¿no? 1714 01:10:08,260 --> 01:10:13,660 1 dividido por 10 es realmente no exactamente 0,1, ¿cuál es 1715 01:10:13,660 --> 01:10:14,700 realmente está pasando aquí? 1716 01:10:14,700 --> 01:10:16,420 Así que usted puede tipo de razón a través de esta lógica. 1717 01:10:16,420 --> 01:10:19,200 Si un equipo sólo tiene una cantidad limitada de memoria RAM para empezar 1718 01:10:19,200 --> 01:10:23,530 con, y de hecho un único ordenador utiliza 32 bits para una 1719 01:10:23,530 --> 01:10:26,200 flotando valor en puntos, es lógico pensar que con un 1720 01:10:26,200 --> 01:10:29,870 número finito de bits, 32 en este caso, sí, se puede 1721 01:10:29,870 --> 01:10:31,050 representan un montón de cosas. 1722 01:10:31,050 --> 01:10:33,220 En realidad, es cuatro mil millones valores diferentes pueden ser 1723 01:10:33,220 --> 01:10:38,040 representado con 32 bits, 2 a la 32, pero es todavía limitada. 1724 01:10:38,040 --> 01:10:40,730 Así que el problema es que hay un número infinito de raíces 1725 01:10:40,730 --> 01:10:41,370 números, claro. 1726 01:10:41,370 --> 01:10:43,560 Si me da un número real, siempre se puede encontrar una 1727 01:10:43,560 --> 01:10:46,080 un poco más grande, un poco menos, con sólo ajustar la 1728 01:10:46,080 --> 01:10:47,970 números que están después del punto decimal. 1729 01:10:47,970 --> 01:10:50,870 Así que si usted no tiene un número infinito de bits, 1730 01:10:50,870 --> 01:10:52,940 no es posible que represente un infinito 1731 01:10:52,940 --> 01:10:54,800 número de números reales. 1732 01:10:54,800 --> 01:10:58,090 >> Así que esta imprecisión inherente a las computadoras, y 1733 01:10:58,090 --> 01:11:00,930 esto se tropezó con todo el tiempo, incluso en el más simple de 1734 01:11:00,930 --> 01:11:02,260 programas como este. 1735 01:11:02,260 --> 01:11:05,640 Pero también en algunos problemas del mundo muy real también. 1736 01:11:05,640 --> 01:11:07,790 De hecho, vamos a tomar un momento para echar un vistazo a 1737 01:11:07,790 --> 01:11:09,530 algo que realmente sucedió en la realidad. 1738 01:11:09,530 --> 01:11:11,620 Vamos a ver sólo el primer par de minutos, y luego 1739 01:11:11,620 --> 01:11:13,270 vamos a publicar la línea de enlace. 1740 01:11:13,270 --> 01:11:16,700 Pero esto es una prueba de lo que sólo puede salir mal, bastante 1741 01:11:16,700 --> 01:11:19,680 honestamente, de una manera muy trágica cuando estas cosas no son 1742 01:11:19,680 --> 01:11:23,870 apreciado o sólo los seres humanos cometen errores a la hora de 1743 01:11:23,870 --> 01:11:26,792 este tipo de detalles de implementación de las computadoras modernas. 1744 01:11:26,792 --> 01:11:27,284 >> [JUEGO VIDEO] 1745 01:11:27,284 --> 01:11:30,730 -Volvemos ahora a los desastres de ingeniería en Maravillas Modernas. 1746 01:11:30,730 --> 01:11:32,200 Ordenadores. 1747 01:11:32,200 --> 01:11:34,920 Todos hemos llegado a aceptar los problemas a menudo frustrantes 1748 01:11:34,920 --> 01:11:36,750 que ir con ellos. 1749 01:11:36,750 --> 01:11:40,690 Errores, virus y fallos de software son un pequeño precio a 1750 01:11:40,690 --> 01:11:42,550 pagar por la comodidad. 1751 01:11:42,550 --> 01:11:45,170 Pero militar de alta tecnología y de alta velocidad y el espacio 1752 01:11:45,170 --> 01:11:48,450 aplicaciones de programa, el problema más pequeño puede ser 1753 01:11:48,450 --> 01:11:52,220 ampliada hacia el desastre. 1754 01:11:52,220 --> 01:11:56,780 El 4 de junio de 1996, los científicos prepararon para lanzar una plataforma no tripulada 1755 01:11:56,780 --> 01:11:58,430 Cohete Ariane 5. 1756 01:11:58,430 --> 01:12:00,750 Llevaba satélites científicos diseñados para 1757 01:12:00,750 --> 01:12:03,580 establecer con precisión cómo el campo magnético de la Tierra 1758 01:12:03,580 --> 01:12:06,900 interactúa con los vientos solares. 1759 01:12:06,900 --> 01:12:10,330 El cohete fue construido por la Agencia Espacial Europea y 1760 01:12:10,330 --> 01:12:13,450 despegó de sus instalaciones en la costa de la Guayana Francesa. 1761 01:12:13,450 --> 01:12:16,970 >> -Alrededor de unos 37 segundos de vuelo, primero 1762 01:12:16,970 --> 01:12:19,700 algo di cuenta que iba mal, que las boquillas se 1763 01:12:19,700 --> 01:12:21,590 giro de una manera que realmente no debería. 1764 01:12:21,590 --> 01:12:25,020 Alrededor de 40 segundos de vuelo, es evidente que el vehículo 1765 01:12:25,020 --> 01:12:27,340 estaba en problemas, y es entonces cuando se tomó la decisión de 1766 01:12:27,340 --> 01:12:28,136 destruirlo. 1767 01:12:28,136 --> 01:12:31,450 Un funcionario de seguridad de gama con agallas tremendas pulsado el 1768 01:12:31,450 --> 01:12:34,160 botón, estalló el cohete antes de que pudiera convertirse en un 1769 01:12:34,160 --> 01:12:37,470 un peligro para la seguridad pública. 1770 01:12:37,470 --> 01:12:40,750 >> -Este fue el viaje inaugural del Ariane 5, y su 1771 01:12:40,750 --> 01:12:43,990 destrucción se llevó a cabo debido a un defecto incorporado en el 1772 01:12:43,990 --> 01:12:45,480 software cohete. 1773 01:12:45,480 --> 01:12:47,660 >> -El problema en el Ariane fue que había un número que 1774 01:12:47,660 --> 01:12:51,245 requiere 64 bits para expresar y querían convertirla 1775 01:12:51,245 --> 01:12:53,010 a un número de bit 16. 1776 01:12:53,010 --> 01:12:54,900 Se supone que el número nunca fue 1777 01:12:54,900 --> 01:12:56,280 Va a ser muy grande, 1778 01:12:56,280 --> 01:12:59,920 que la mayoría de los dígitos en el número de 64 bits fueron 0s. 1779 01:12:59,920 --> 01:13:01,860 Estaban equivocados. 1780 01:13:01,860 --> 01:13:04,550 >> -La incapacidad de un programa de software para aceptar la 1781 01:13:04,550 --> 01:13:07,730 tipo de número generado por otro estaba en la raíz de 1782 01:13:07,730 --> 01:13:08,930 el fracaso. 1783 01:13:08,930 --> 01:13:11,490 El desarrollo de software se había convertido en una parte muy costosa de 1784 01:13:11,490 --> 01:13:13,280 nueva tecnología. 1785 01:13:13,280 --> 01:13:16,530 El cohete Ariane 4 ha sido muy exitosa. 1786 01:13:16,530 --> 01:13:19,100 Gran parte del software creado para él también fue utilizado 1787 01:13:19,100 --> 01:13:21,050 en el Ariane 5. 1788 01:13:21,050 --> 01:13:25,530 >> -El problema básico era que el Ariane 5 fue más rápido, 1789 01:13:25,530 --> 01:13:27,280 acelerado más rápido. 1790 01:13:27,280 --> 01:13:30,590 Y el software no habían tenido en cuenta que. 1791 01:13:30,590 --> 01:13:33,060 >> -La destrucción del cohete era un enorme financiero 1792 01:13:33,060 --> 01:13:37,670 desastre, todo se debe a un error de software minuto. 1793 01:13:37,670 --> 01:13:40,750 Pero esta no fue la primera vez que tenía problemas de conversión de datos 1794 01:13:40,750 --> 01:13:43,680 plagado de tecnología de cohetes modernos. 1795 01:13:43,680 --> 01:13:44,390 >> David Malan: Vamos a dejar las cosas así. 1796 01:13:44,390 --> 01:13:46,870 Pero esto es una prueba de cuán aplicable incluso algunos de 1797 01:13:46,870 --> 01:13:48,750 más estos detalles de nivel que hemos empezado a 1798 01:13:48,750 --> 01:13:50,040 explorar hoy son. 1799 01:13:50,040 --> 01:13:52,510 Así que, como te dan un poco distraído quizás por algunos de 1800 01:13:52,510 --> 01:13:55,240 la sintaxis y arcaneness aquí, se dan cuenta que más de la 1801 01:13:55,240 --> 01:13:57,690 plazo vamos a estar centrado sólo en cómo esto es aplicable 1802 01:13:57,690 --> 01:13:59,530 mundos más allá de CS. 1803 01:13:59,530 --> 01:14:00,780 Nos vemos el miércoles.