1 00:00:00,000 --> 00:00:02,742 >> [REPRODUCCIÓN DE MÚSICA] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI Peng: Esto es CS50, y Bienvenida a la semana dos de la sección. 4 00:00:09,090 --> 00:00:11,740 Esto es en realidad mientras semana dos de nuestros class-- realidad, 5 00:00:11,740 --> 00:00:14,550 la primera semana que hemos tenido sección. 6 00:00:14,550 --> 00:00:18,897 Levantando la mano, ¿cuántos de ustedes llegó a súper sección de la semana pasada? 7 00:00:18,897 --> 00:00:19,480 OK, eso está bien. 8 00:00:19,480 --> 00:00:20,020 Eso está bien. 9 00:00:20,020 --> 00:00:23,110 ¿Cuántos de ustedes visto Super sección de la semana pasada? 10 00:00:23,110 --> 00:00:23,610 OK. 11 00:00:23,610 --> 00:00:25,702 Y ustedes hicieron bien el problema de establecer una? 12 00:00:25,702 --> 00:00:28,660 Así que voy a considerar que tenemos un grupo de niños muy inteligentes 13 00:00:28,660 --> 00:00:32,310 en esta clase y las cosas van a estar bien. 14 00:00:32,310 --> 00:00:33,180 OK. 15 00:00:33,180 --> 00:00:33,980 Así primero-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> En primer lugar, sólo vamos a actualizar brevemente repasar el orden del día de hoy. 18 00:00:41,090 --> 00:00:42,700 Vamos a hablar de la logística del curso. 19 00:00:42,700 --> 00:00:45,480 Muchos de ustedes probablemente tiene preguntas acerca de 20 00:00:45,480 --> 00:00:46,920 cómo las cosas funcionan en este curso. 21 00:00:46,920 --> 00:00:47,897 Vamos a responder a ellos. 22 00:00:47,897 --> 00:00:49,730 Vamos a actualizar brevemente ir más bucles en caso 23 00:00:49,730 --> 00:00:51,410 cualquiera de ustedes perdieron súper sección. 24 00:00:51,410 --> 00:00:53,240 Hablaremos de mapeo ASCII. 25 00:00:53,240 --> 00:00:56,180 Hablaremos acerca de las matrices, funciones, argumentos de la línea de comandos. 26 00:00:56,180 --> 00:01:00,210 Y, por último, lo que ustedes probablemente todos realmente quiero estar aquí para aprender, 27 00:01:00,210 --> 00:01:01,270 es su PSet2. 28 00:01:01,270 --> 00:01:04,209 Vamos a tener algunos trucos agradables y consejos sobre cómo hacer eso. 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> OK. 31 00:01:08,690 --> 00:01:11,450 Además, en segundo lugar, tenemos un montón de caramelos aquí. 32 00:01:11,450 --> 00:01:13,583 Cualquier persona que le gusta el caramelo, acaba de llegar aquí. 33 00:01:13,583 --> 00:01:14,430 Coge un poco. 34 00:01:14,430 --> 00:01:15,100 Tengo un montón. 35 00:01:15,100 --> 00:01:16,390 Tenemos una tonelada en la oficina. 36 00:01:16,390 --> 00:01:18,230 Yo realmente no quiero comer dulces durante todo el día. 37 00:01:18,230 --> 00:01:20,300 Ustedes deben comer todos los dulces, porque yo lo traje aquí para ustedes. 38 00:01:20,300 --> 00:01:20,990 Sólo comer dulces. 39 00:01:20,990 --> 00:01:24,080 Habrá dulces cada sección. 40 00:01:24,080 --> 00:01:25,330 >> Así que primero, ¿quién soy yo? 41 00:01:25,330 --> 00:01:27,080 Mi nombre es Andi Peng. 42 00:01:27,080 --> 00:01:30,270 Yo soy la cabeza de TA CS50 aquí en Yale. 43 00:01:30,270 --> 00:01:32,540 Y además de eso, también se ser-- 44 00:01:32,540 --> 00:01:35,600 si a alguien le como-- su funcionamiento amigo, tu hombro para llorar. 45 00:01:35,600 --> 00:01:39,140 Si la noche anterior debido de su conjunto de procesadores, no tienes idea de lo que está pasando, 46 00:01:39,140 --> 00:01:40,080 golpéame. 47 00:01:40,080 --> 00:01:42,770 Nos compadecemos juntos, etcétera. 48 00:01:42,770 --> 00:01:46,100 Sólo sé que estoy aquí como un recursos para usted como la línea del frente 49 00:01:46,100 --> 00:01:51,830 para ayudar a los chicos averiguar cómo para resolver problemas en CS50 y más allá. 50 00:01:51,830 --> 00:01:54,590 >> Mi correo electrónico es andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 También enviaré a un individuo correo electrónico con mi número de teléfono en el mismo 52 00:01:58,390 --> 00:02:01,860 por lo que no todo el mundo en el Internet puede ver mi número de teléfono. 53 00:02:01,860 --> 00:02:03,640 No dude en llamarme en cualquier momento. 54 00:02:03,640 --> 00:02:07,510 En serio, mi teléfono es por lo general adjunto a la mano. 55 00:02:07,510 --> 00:02:10,240 Puedo no responder en un par de minutos. 56 00:02:10,240 --> 00:02:11,984 Puedo no responder dentro de un par de horas. 57 00:02:11,984 --> 00:02:14,400 Pero les puedo garantizar, si me e-mail, si me llamas, 58 00:02:14,400 --> 00:02:17,404 texto mí, voy a responder dentro de 24 horas. 59 00:02:17,404 --> 00:02:19,820 A menudo, voy a responder antes que, porque entiendo 60 00:02:19,820 --> 00:02:23,900 que todo el mundo tiene algunos problemas, y desea que sus respuestas 61 00:02:23,900 --> 00:02:26,110 por responder muy rápidamente. 62 00:02:26,110 --> 00:02:28,945 >> Sin embargo, si usted llama Me 30 minutos antes 63 00:02:28,945 --> 00:02:31,570 esa pieza que se debe Jueves noche-- ser así, Andi, ayúdame, 64 00:02:31,570 --> 00:02:35,380 No he started-- puedo dar que hombro para llorar. 65 00:02:35,380 --> 00:02:41,520 Pero tal vez sea hora de pensar en cómo no hacerlo la próxima vez. 66 00:02:41,520 --> 00:02:44,040 OK. 67 00:02:44,040 --> 00:02:44,944 Vaya. 68 00:02:44,944 --> 00:02:45,850 ¿Cómo puedo volver? 69 00:02:45,850 --> 00:02:48,140 Allá vamos. 70 00:02:48,140 --> 00:02:52,310 >> Así que en este supuesto, tenemos una tonelada de apoyo para todos. 71 00:02:52,310 --> 00:02:54,640 Además de simplemente secciones aquí, que usted 72 00:02:54,640 --> 00:02:57,000 cada semana llegar a pasar 90 maravillosos minutos conmigo, 73 00:02:57,000 --> 00:02:58,330 también tenemos horario de oficina. 74 00:02:58,330 --> 00:03:01,021 ¿Cuántos de ustedes ya tienen estado de las horas de oficina en busca de ayuda? 75 00:03:01,021 --> 00:03:01,520 Excelente. 76 00:03:01,520 --> 00:03:05,700 Eso es muy bueno para ver, porque nos con una plantilla de más de 45 TA y CA 77 00:03:05,700 --> 00:03:11,780 entrenado para este curso que está aquí para ayudar a chicos con sus conjuntos de procesadores. 78 00:03:11,780 --> 00:03:14,580 >> Los lunes están llevan a cabo en el TRULLO aula en 17 Hill House aquí 79 00:03:14,580 --> 00:03:15,350 en Yale. 80 00:03:15,350 --> 00:03:17,349 Martes y jueves, que están llevan a cabo en bienes comunes. 81 00:03:17,349 --> 00:03:20,010 8:00-11:00 casi todos los días de la semana. 82 00:03:20,010 --> 00:03:21,620 Entra, salir. 83 00:03:21,620 --> 00:03:24,030 Cualquier problema, sin problema-- acaba de llegar en adelante, 84 00:03:24,030 --> 00:03:26,650 y luego le ayudaremos con eso. 85 00:03:26,650 --> 00:03:31,640 >> En segundo lugar, además de las horas de oficina y las secciones, también tenemos pantalones cortos. 86 00:03:31,640 --> 00:03:35,930 ¿Alguien ha visto un par de la pantalones cortos o recorridos en los videos 87 00:03:35,930 --> 00:03:36,750 ¿en el sitio web? 88 00:03:36,750 --> 00:03:37,250 OK. 89 00:03:37,250 --> 00:03:39,510 Así que son muy, muy servicial. 90 00:03:39,510 --> 00:03:42,470 Nuestra hermosa producción de Harvard equipo allá en esa escuela 91 00:03:42,470 --> 00:03:47,910 hacia el norte, se han filmado y producido estos videos tutorial increíbles. 92 00:03:47,910 --> 00:03:52,290 >> Van a tomar paso a paso a través de cómo hacer para resolver un problema. 93 00:03:52,290 --> 00:03:56,340 A menudo, si usted está confundido acerca de un concepto sencillo, un concepto singular, 94 00:03:56,340 --> 00:03:59,780 echar un vistazo, porque es probable que un corto en algún lugar en nuestro sitio web. 95 00:03:59,780 --> 00:04:03,800 Y por lo general es un gran recurso buscar cuando estás primero 96 00:04:03,800 --> 00:04:06,510 perdido sobre cómo manejar un problema. 97 00:04:06,510 --> 00:04:09,750 >> En tercer lugar, también tenemos study50 y reference50. 98 00:04:09,750 --> 00:04:15,650 Así que estudiar 50 en el sitio web es sólo un enlace. 99 00:04:15,650 --> 00:04:21,500 Es, creo, study.cs50.net o algo asi. 100 00:04:21,500 --> 00:04:22,860 Sólo Google él. 101 00:04:22,860 --> 00:04:24,229 Tenemos un montón de muestras preparadas. 102 00:04:24,229 --> 00:04:26,770 Tenemos un montón de pantalones cortos y cosas walkthroughs-- todo compilados 103 00:04:26,770 --> 00:04:31,070 muy agradable y limpio para todos ustedes chicos para navegar a través, consulte cualquier concepto 104 00:04:31,070 --> 00:04:32,860 que usted está confundido acerca. 105 00:04:32,860 --> 00:04:35,920 Sería probablemente será cubierto allá en study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- similar. 107 00:04:37,640 --> 00:04:41,510 Tenemos una gran cantidad de diversas notas fácilmente disponible para su disposición. 108 00:04:41,510 --> 00:04:44,450 Y por último, tenemos lo que es llama CS50 Discutir, 109 00:04:44,450 --> 00:04:48,082 un foro en el que, si la noche anterior que está haciendo sus problemas, dice, 110 00:04:48,082 --> 00:04:49,880 usted tiene una pregunta. 111 00:04:49,880 --> 00:04:52,340 Entre para CS50 Discuta. 112 00:04:52,340 --> 00:04:53,190 Publique una pregunta. 113 00:04:53,190 --> 00:04:55,820 Y entonces uno de los hundreds-- tal vez, thousands-- de compañeros 114 00:04:55,820 --> 00:04:57,960 tomar esta clase en línea se ingrese. 115 00:04:57,960 --> 00:05:01,182 Y tal vez alguien puede conseguir su respuesta antes de una lata TA. 116 00:05:01,182 --> 00:05:03,390 Básicamente se trata de sólo una foro en línea que todos podemos 117 00:05:03,390 --> 00:05:04,556 utilizar para discutir nuestros problemas. 118 00:05:04,556 --> 00:05:06,483 Eso es genial. 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> OK. 121 00:05:11,550 --> 00:05:13,220 Así que el problema se pone. 122 00:05:13,220 --> 00:05:17,840 Estamos a punto justo en el gruesa del problema planteado dos. 123 00:05:17,840 --> 00:05:20,570 Muchos de nosotros ya tiene luchado a través de un problema de un conjunto. 124 00:05:20,570 --> 00:05:24,460 Ya sabemos que tal vez esperando para la última noche para hacer su pset 125 00:05:24,460 --> 00:05:28,170 No es la cosa más inteligente que hacer en CS50. 126 00:05:28,170 --> 00:05:32,380 >> Consejos y sugerencias esencialmente para el éxito se leen toda la especificación. 127 00:05:32,380 --> 00:05:36,270 ¿Cuántos de ustedes ya tienen leer la especificación de conjunto de procesadores 2? 128 00:05:36,270 --> 00:05:36,770 OK. 129 00:05:36,770 --> 00:05:39,840 Esa es una cantidad sólida. 130 00:05:39,840 --> 00:05:43,210 Sé que ustedes probablemente han reconocido por ahora las especificaciones son realmente largo. 131 00:05:43,210 --> 00:05:45,700 Son muy, muy larga. 132 00:05:45,700 --> 00:05:49,630 >> Es realmente difícil de leer cada línea de esa palabra cuidadosamente por palabra. 133 00:05:49,630 --> 00:05:52,780 Usted quiere simplemente descremada a donde que te dice que hagas algo. 134 00:05:52,780 --> 00:05:54,459 Te puedo garantizar, no hagas eso. 135 00:05:54,459 --> 00:05:56,750 Si lo haces, es probable que va a perder alguna parte 136 00:05:56,750 --> 00:05:58,458 donde se le dice cómo iniciar un problema 137 00:05:58,458 --> 00:06:01,140 o que te dice qué nombre Su problema o se le dice, 138 00:06:01,140 --> 00:06:03,720 esta es probablemente la mejor manera para empezar a hacer su problema. 139 00:06:03,720 --> 00:06:05,050 Y entonces se le perdió. 140 00:06:05,050 --> 00:06:08,219 >> Cuando intenta leer su spec mitad, 141 00:06:08,219 --> 00:06:10,510 una gran parte del importante información-- en que no estás 142 00:06:10,510 --> 00:06:12,260 va a ser capaz de realmente acceso. 143 00:06:12,260 --> 00:06:13,219 Así que lea toda la especificación. 144 00:06:13,219 --> 00:06:15,468 Trate de leer toda la especificación antes de llegar a la sección, 145 00:06:15,468 --> 00:06:17,360 porque entonces, cuando nos hablar del conjunto de procesadores, 146 00:06:17,360 --> 00:06:21,070 que todos podemos tener una idea de lo que está pasando. 147 00:06:21,070 --> 00:06:25,169 >> En segundo lugar, este es un concepto que me va a gustar hacer referencia 148 00:06:25,169 --> 00:06:26,710 mucho a lo largo del semestre del curso. 149 00:06:26,710 --> 00:06:30,070 Pero, en esencia, nuestro encuentro a mitad de camino, ¿no? 150 00:06:30,070 --> 00:06:33,970 Yo, como su ayudante técnico y Jason como plato gerente y Scaz como su profesor 151 00:06:33,970 --> 00:06:37,120 y David como su profesor y todos los demás TAs encantadoras en este curso, 152 00:06:37,120 --> 00:06:39,830 asistentes en este supuesto-- haremos nuestro mejor esfuerzo 153 00:06:39,830 --> 00:06:42,965 para asegurarse de que se establecen hasta para tener éxito en este curso. 154 00:06:42,965 --> 00:06:43,840 Vamos a celebrar sección. 155 00:06:43,840 --> 00:06:44,870 Vamos a tener horas de oficina. 156 00:06:44,870 --> 00:06:47,087 Vamos a responder a su teléfono llamadas, responder a sus correos electrónicos, 157 00:06:47,087 --> 00:06:49,670 hacer todo lo posible para que Asegúrese de que sus preguntas sean contestadas. 158 00:06:49,670 --> 00:06:51,460 >> Sin embargo, nos ayudan demasiado. 159 00:06:51,460 --> 00:06:52,450 Reunirse con nosotros hasta la mitad. 160 00:06:52,450 --> 00:06:56,040 Si vienes a las horas de oficina no haber ido a la sección, no 161 00:06:56,040 --> 00:07:02,060 habiendo visto las conferencias, al no tener idea de lo que está pasando, ser, que me ayude. 162 00:07:02,060 --> 00:07:04,350 Yo voy a ser como, bueno, lo siento. 163 00:07:04,350 --> 00:07:06,410 Quizá sea el momento de prestar que hombro para llorar, 164 00:07:06,410 --> 00:07:08,959 porque no estoy seguro lo que puedo hacer para ayudarte 165 00:07:08,959 --> 00:07:12,000 si no se intenta al menos ayuda a ti mismo un poco al principio. 166 00:07:12,000 --> 00:07:12,910 Reunirse con nosotros hasta la mitad. 167 00:07:12,910 --> 00:07:15,020 Ya sabes, por favor venga preparado para responder y obtener 168 00:07:15,020 --> 00:07:16,353 listo para participar en el material. 169 00:07:16,353 --> 00:07:19,342 Hace las cosas mucho más fácil para todos los involucrados. 170 00:07:19,342 --> 00:07:22,970 Sí, eso es prácticamente todo. 171 00:07:22,970 --> 00:07:23,720 >> Clasificación. 172 00:07:23,720 --> 00:07:29,250 Así que en el plan de estudios, es bastante en profundidad en relación con la forma en que grado. 173 00:07:29,250 --> 00:07:32,440 Pero, en esencia, el desglose en esto es el 50% de la calificación 174 00:07:32,440 --> 00:07:34,530 serán los conjuntos de procesadores, los cuales es precioso, porque eso es 175 00:07:34,530 --> 00:07:37,400 donde se está gastando el vasto mayoría de su tiempo en curso. 176 00:07:37,400 --> 00:07:39,854 Quizzes 40%, y su proyecto final será del 10%. 177 00:07:39,854 --> 00:07:42,520 Habrá dos pruebas a lo largo de el curso del semestre. 178 00:07:42,520 --> 00:07:47,050 Creo que los tiempos y las fechas son También figuran en el programa de estudios. 179 00:07:47,050 --> 00:07:49,210 >> La forma en que lo haremos debe calificar sus conjuntos de procesadores 180 00:07:49,210 --> 00:07:53,930 es que tenemos básicamente de cuatro valores que asignamos a cada grado. 181 00:07:53,930 --> 00:07:57,250 Contamos con un valor de alcance, corrección, diseño y estilo. 182 00:07:57,250 --> 00:08:01,530 Así que como ves, eso es algo de nuestra fórmula para el cálculo de conjuntos de procesadores. 183 00:08:01,530 --> 00:08:03,640 Tres damos más peso a la corrección, 184 00:08:03,640 --> 00:08:06,140 porque, obviamente, su entrenador debe probar para los casos 185 00:08:06,140 --> 00:08:08,480 que lo queremos para detectar si existen. 186 00:08:08,480 --> 00:08:11,000 >> Ustedes todos tienen check50 a su disposición. 187 00:08:11,000 --> 00:08:13,730 Es una función muy útil que ustedes pueden todos 188 00:08:13,730 --> 00:08:17,560 cargar su código a nuestros servidores, donde vamos a comprobar que para usted. 189 00:08:17,560 --> 00:08:20,800 Y usted ha visto los caras frowny, caras sonrientes. 190 00:08:20,800 --> 00:08:22,119 Son muy, muy servicial. 191 00:08:22,119 --> 00:08:23,910 Por favor, no ser el estudiante que como intentos 192 00:08:23,910 --> 00:08:26,230 para codificar en todas las respuestas a ellos. 193 00:08:26,230 --> 00:08:30,050 Sin duda, me he visto un conjunto de procesadores, donde alguien vio a todos los valores de check50 194 00:08:30,050 --> 00:08:33,429 y que sólo dura codificados en-- si este número, imprima este número. 195 00:08:33,429 --> 00:08:35,080 Si ese número, imprima ese número. 196 00:08:35,080 --> 00:08:36,090 No hagas eso. 197 00:08:36,090 --> 00:08:39,360 >> A pesar de que técnicamente check50 es correcta, 198 00:08:39,360 --> 00:08:41,809 su manera de resolver el problema no es la correcta. 199 00:08:41,809 --> 00:08:45,770 Entonces sólo tiene que utilizar check50 moderación. 200 00:08:45,770 --> 00:08:48,497 Pero también asegurarse de que usted entender cómo está funcionando, 201 00:08:48,497 --> 00:08:50,580 el programa está funcionando Además de check50, 202 00:08:50,580 --> 00:08:53,120 porque no podemos probar cada posible caso de check50. 203 00:08:53,120 --> 00:08:55,440 Estaremos probando algunos de ellos. 204 00:08:55,440 --> 00:09:00,390 >> El diseño es en esencia, cómo bien diseñado es el código? 205 00:09:00,390 --> 00:09:04,150 Si usted es copiar y pegar múltiples líneas de código de muchas, muchas veces. 206 00:09:04,150 --> 00:09:06,960 Tal vez usted no tiene bastante el mejor diseño en el código. 207 00:09:06,960 --> 00:09:09,470 Tal vez es el momento de añadir ese bucle. 208 00:09:09,470 --> 00:09:12,090 En esencia, esto es sólo todo por tratar de hacer su código, 209 00:09:12,090 --> 00:09:17,010 tratando de escribir su código de manera más eficiente como sea posible para que su programa se ejecuta 210 00:09:17,010 --> 00:09:19,630 lo más rápido posible. 211 00:09:19,630 --> 00:09:20,996 >> Por último, tenemos el estilo. 212 00:09:20,996 --> 00:09:24,360 Así que el estilo es una especie de arbitrario, término subjetivo. 213 00:09:24,360 --> 00:09:27,470 Sé que tenemos oficialmente una guía de estilo 50 para CS50, 214 00:09:27,470 --> 00:09:30,050 donde te dice, oh, debe tener un espacio aquí. 215 00:09:30,050 --> 00:09:32,220 Usted debe tipo de formato su código de esta manera. 216 00:09:32,220 --> 00:09:34,070 Usted debe nombrar las cosas de esta manera. 217 00:09:34,070 --> 00:09:38,180 >> Realmente no me importa, por sí mismo, ¿cómo usted elige el estilo de su código, 218 00:09:38,180 --> 00:09:39,840 al igual que siempre y cuando permanezca constante. 219 00:09:39,840 --> 00:09:43,732 Por ejemplo, si te gusta dejar un espacio después de su hijo de cuatro 220 00:09:43,732 --> 00:09:45,690 antes de su bucle de cuatro, hacer eso todo el tiempo. 221 00:09:45,690 --> 00:09:46,523 No especie de hacerlo. 222 00:09:46,523 --> 00:09:47,730 No lo hagas otras veces. 223 00:09:47,730 --> 00:09:51,046 Si te gusta mantener rizado apoyos espacio de una manera determinada, 224 00:09:51,046 --> 00:09:52,170 acaba siempre hacerlo de esa manera. 225 00:09:52,170 --> 00:09:54,628 No especie de hacerlo en algún lugar aquí y en algún lugar no existe. 226 00:09:54,628 --> 00:09:57,010 Cuando estamos de clasificación, es muy difícil 227 00:09:57,010 --> 00:09:59,420 si tengo ni idea de cómo estás formatear su código, 228 00:09:59,420 --> 00:10:02,064 las cosas son extravagantes y fuera de lugar. 229 00:10:02,064 --> 00:10:04,980 Si te quedas consistente, es mucho más fácil para mí como el mayor 230 00:10:04,980 --> 00:10:06,310 ser capaz de leer el código. 231 00:10:06,310 --> 00:10:09,393 Es mucho más fácil para usted como estudiante ser capaz de mirar a través de su código 232 00:10:09,393 --> 00:10:11,720 y ver lo que está mal con que roza por qué hay problemas. 233 00:10:11,720 --> 00:10:15,740 El estilo es una de las cosas más fáciles que ustedes pueden hacer para obtener resultados completos. 234 00:10:15,740 --> 00:10:18,770 En esencia, si lo que importa, si usted paga cinco minutos de atención 235 00:10:18,770 --> 00:10:22,760 a su código de cada semana, usted debe será conseguir puntos de estilo completo. 236 00:10:22,760 --> 00:10:26,020 >> Por último, tenemos lo que se llama el multiplicador de alcance. 237 00:10:26,020 --> 00:10:28,890 Scope-- Sé que es un gran palabra, sobre todo en esta clase. 238 00:10:28,890 --> 00:10:31,030 Pero alcance, todo lo que significa es que usted está tratando 239 00:10:31,030 --> 00:10:33,670 los conjuntos de procesadores a la medida de su capacidad. 240 00:10:33,670 --> 00:10:37,180 Si se activa en tres de sus cuatro problemas 241 00:10:37,180 --> 00:10:39,460 y ni siquiera intentar la último, es probable que 242 00:10:39,460 --> 00:10:41,630 va a perder algunos puntos sobre el alcance. 243 00:10:41,630 --> 00:10:44,560 >> Incluso si usted acaba de empezar el problema, hacer lo mejor para caminar a través de él. 244 00:10:44,560 --> 00:10:47,691 Incluso si no funciona, convertirlo en, debido a que muestra y demuestra 245 00:10:47,691 --> 00:10:50,190 para nosotros que usted está tratando, que ha intentado establecer el problema 246 00:10:50,190 --> 00:10:51,430 a lo mejor de su capacidad. 247 00:10:51,430 --> 00:10:53,800 Y entonces podemos darle puntos completos de alcance. 248 00:10:53,800 --> 00:10:58,715 >> Ámbito de aplicación también es muy importante para cuando hablar de la caída de puntuación pset más bajo. 249 00:10:58,715 --> 00:11:02,010 Por eso, durante el transcurso de la semestre, ustedes tienen nueve conjuntos de procesadores. 250 00:11:02,010 --> 00:11:05,340 Y que en realidad vamos a estar disminuyendo la puntuación más baja de las nueve, 251 00:11:05,340 --> 00:11:07,670 pero sólo si tiene puntos de alcance completo. 252 00:11:07,670 --> 00:11:11,120 >> Así que si a su vez en un conjunto de procesadores incompleta, por desgracia, no podemos dejar caer que uno, 253 00:11:11,120 --> 00:11:13,540 debido a que su alcance los puntos no se completaron. 254 00:11:13,540 --> 00:11:16,570 Así que incluso si usted tiene la semana horrible donde se está muriendo y que está enfermo 255 00:11:16,570 --> 00:11:20,040 o su perro muere, su gato muere, y ya está sobrecargado con la tarea, 256 00:11:20,040 --> 00:11:21,074 simplemente tratar el conjunto de procesadores. 257 00:11:21,074 --> 00:11:22,490 Hazlo lo mejor que puedas. 258 00:11:22,490 --> 00:11:23,840 Si no funciona, no importa. 259 00:11:23,840 --> 00:11:24,506 Sólo entregarla. 260 00:11:24,506 --> 00:11:26,590 Por lo menos que podemos dar que puntos de esfuerzo. 261 00:11:26,590 --> 00:11:28,510 >> Una para el esfuerzo en esta clase. 262 00:11:28,510 --> 00:11:30,170 Al menos caída de puntuación más baja para el esfuerzo. 263 00:11:30,170 --> 00:11:32,354 Así que sí. 264 00:11:32,354 --> 00:11:33,270 Eso es practicamente todo. 265 00:11:33,270 --> 00:11:36,521 ¿Alguien tiene preguntas para ahora en la forma en que su grado en la clase? 266 00:11:36,521 --> 00:11:37,187 O alguno de estos? 267 00:11:37,187 --> 00:11:41,220 Cualquiera de estos para far-- secciones, las horas de oficina? 268 00:11:41,220 --> 00:11:41,720 Guay. 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 OK. 271 00:11:47,800 --> 00:11:51,260 >> Así que este es un tema que no realmente le gusta hablar. 272 00:11:51,260 --> 00:11:53,084 Realmente no me gusta hablar de ello. 273 00:11:53,084 --> 00:11:55,250 Ustedes realmente no quiero oírme hablar de ello. 274 00:11:55,250 --> 00:11:57,690 Pero, por desgracia, todos tiene que hablar de ello. 275 00:11:57,690 --> 00:12:00,110 David pasó 20 minutos a dar una conferencia hablando de ello. 276 00:12:00,110 --> 00:12:02,580 Y ese es el tema de la honestidad académica. 277 00:12:02,580 --> 00:12:08,110 >> Así que todos aquí, probablemente, hemos escrito un ensayo en algún momento de nuestra carrera de Yale. 278 00:12:08,110 --> 00:12:11,800 Probablemente nos hemos metido una charla en la que hemos ha dicho que no plagiar nuestro ensayo, 279 00:12:11,800 --> 00:12:13,940 debido a que el trabajo no es el nuestro. 280 00:12:13,940 --> 00:12:18,109 En informática, tenemos el mismo tipo de concepto. 281 00:12:18,109 --> 00:12:20,150 Todo el trabajo que usted envíe, todo el código que escriba 282 00:12:20,150 --> 00:12:21,900 debe ser código que usted ha escrito. 283 00:12:21,900 --> 00:12:24,280 ¿No debería ser el código que tienes copiado de otro lugar. 284 00:12:24,280 --> 00:12:26,777 ¿No debería ser el código que usted Googled y se dejó caer en 285 00:12:26,777 --> 00:12:28,360 y no se sabe muy bien si funciona. 286 00:12:28,360 --> 00:12:32,440 Que tipo de tener un sentido de lo que está haciendo, pero en realidad no. 287 00:12:32,440 --> 00:12:36,562 En caso de duda, en esencia, es sólo ser razonable. 288 00:12:36,562 --> 00:12:38,520 En nuestro programa, tenemos toda una lista de cosas 289 00:12:38,520 --> 00:12:40,560 vemos como razonables frente no razonable. 290 00:12:40,560 --> 00:12:43,820 >> Por ejemplo, razonable es usted y su amigo 291 00:12:43,820 --> 00:12:47,360 discutir cuál es la mejor manera de ir acerca lógicamente la solución de un problema. 292 00:12:47,360 --> 00:12:48,910 Eso es bastante razonable. 293 00:12:48,910 --> 00:12:53,244 Lo que no sería razonable es si chicos se reunieron, escriben el mismo código, 294 00:12:53,244 --> 00:12:54,410 y se convirtió en el mismo código. 295 00:12:54,410 --> 00:12:56,302 Eso no es razonable. 296 00:12:56,302 --> 00:12:57,510 La misma cosa, una especie de un ensayo. 297 00:12:57,510 --> 00:12:59,290 Si usted quiere discutir con su amigo, oye, 298 00:12:59,290 --> 00:13:00,220 esto es lo que quiero escribir. 299 00:13:00,220 --> 00:13:02,500 Estos son los pasos que quiero tomar para escribir sobre ella, muy bien. 300 00:13:02,500 --> 00:13:03,208 Eso es maravilloso. 301 00:13:03,208 --> 00:13:04,790 Por favor, colabore con los demás. 302 00:13:04,790 --> 00:13:06,540 Si ustedes empezar escribir la misma cosa, 303 00:13:06,540 --> 00:13:10,020 girar en el mismo ensayo, eso es menos bien. 304 00:13:10,020 --> 00:13:13,200 Así que en caso de duda, simplemente no lo hagas. 305 00:13:13,200 --> 00:13:16,940 >> En este sentido, en el CS50, tenemos guiones que se ejecutan para automatizar para probar 306 00:13:16,940 --> 00:13:21,740 no sólo la corrección de su código, sino también la singularidad de su código. 307 00:13:21,740 --> 00:13:25,920 Así que por favor no nos ponga en la posición de tener que derivar su caso a EXCOMM. 308 00:13:25,920 --> 00:13:31,110 Por favor, sólo para todo el mundo, vamos a hacer de esto una experiencia maravillosa. 309 00:13:31,110 --> 00:13:33,600 Todo el mundo aprende mejor, todos somos más felices, 310 00:13:33,600 --> 00:13:37,926 y que está todo listo hasta tener éxito en este curso. 311 00:13:37,926 --> 00:13:39,800 Algo que es muy único acerca de esta clase 312 00:13:39,800 --> 00:13:42,660 que creo que cada uno debe realmente prestar atención a es que tenemos 313 00:13:42,660 --> 00:13:44,930 lo que se llama el pesar cláusula en nuestro plan de estudios. 314 00:13:44,930 --> 00:13:50,010 Así que, esencialmente, un plazo de 72 horas, si crees que has hecho algo 315 00:13:50,010 --> 00:13:53,240 usted no está realmente seguro de era adecuada, por favor venga a nosotros. 316 00:13:53,240 --> 00:13:57,220 Le prometemos que dentro de las 72 horas vamos a tratar el caso a nosotros mismos 317 00:13:57,220 --> 00:13:59,820 sin hacer referencia a una mayor autoridad en la administración. 318 00:13:59,820 --> 00:14:03,100 >> Así que si tú vienes a mí y decir, Andi, oye, lo siento mucho, 319 00:14:03,100 --> 00:14:07,620 pero creo que hay un par de líneas en mi código de la última noche que tipo de google, 320 00:14:07,620 --> 00:14:10,120 se bajó de la Pila Desbordamiento, copiar y pegar, 321 00:14:10,120 --> 00:14:13,680 y estoy realmente, realmente lo siento por eso, que me haga saber. 322 00:14:13,680 --> 00:14:16,900 Por favor, no dejar que se agraven y sólo espero que lo cojo. 323 00:14:16,900 --> 00:14:17,784 Vamos a atraparlo. 324 00:14:17,784 --> 00:14:18,450 Solo tiene que venir a mí. 325 00:14:18,450 --> 00:14:20,520 Déjame saber dentro de las 72 horas. 326 00:14:20,520 --> 00:14:22,240 Vamos a encontrar una solución. 327 00:14:22,240 --> 00:14:26,679 Y prometemos que no nos referiremos a autoridades universitarias esencialmente. 328 00:14:26,679 --> 00:14:29,220 Así que es en su mejor interés sólo ser honesto con todo el mundo 329 00:14:29,220 --> 00:14:31,720 involucrado en el curso. 330 00:14:31,720 --> 00:14:34,630 >> OK. 331 00:14:34,630 --> 00:14:35,240 OK. 332 00:14:35,240 --> 00:14:37,800 Así que ahora, rápidamente antes Sigo adelante, ¿alguien 333 00:14:37,800 --> 00:14:42,670 tiene preguntas con respecto a la logística sobre cómo los cursos que vamos a ejecutar, 334 00:14:42,670 --> 00:14:45,982 cómo secciones van correr, nada de eso? 335 00:14:45,982 --> 00:14:46,711 OK. 336 00:14:46,711 --> 00:14:47,210 Sí. 337 00:14:47,210 --> 00:14:48,126 >> AUDIENCIA: [inaudible]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI Peng: Sí. 340 00:14:51,080 --> 00:14:54,850 Así quizzes-- ¿cuántos de ustedes son en la sección Lunes / Miércoles? 341 00:14:54,850 --> 00:14:56,700 ¿Cuántos de ustedes están en el Martes / Jueves? 342 00:14:56,700 --> 00:14:58,550 OK, así que es una fracción sólida aquí. 343 00:14:58,550 --> 00:15:00,900 Así que la forma en que se corre que en Yale es que 344 00:15:00,900 --> 00:15:04,040 van a tener dos por separado quizzes-- uno para cada sección- que 345 00:15:04,040 --> 00:15:06,160 se tomarán durante la clase. 346 00:15:06,160 --> 00:15:09,310 Creo que es de octubre a finales de octubre, algo así como la primera semana 347 00:15:09,310 --> 00:15:10,794 de la prueba. 348 00:15:10,794 --> 00:15:11,960 Sí, por lo que acaba de llegar a clase. 349 00:15:11,960 --> 00:15:13,920 Ese lunes o el miércoles usted tomará la prueba. 350 00:15:13,920 --> 00:15:16,336 Ese martes o jueves usted tomará un examen diferente. 351 00:15:16,336 --> 00:15:18,570 Pero el mismo material será cubierto. 352 00:15:18,570 --> 00:15:19,160 Sí. 353 00:15:19,160 --> 00:15:20,660 Buena pregunta. 354 00:15:20,660 --> 00:15:21,160 Sí. 355 00:15:21,160 --> 00:15:23,260 >> AUDIENCIA: ¿Dónde estamos ir a consultar nuestras notas? 356 00:15:23,260 --> 00:15:23,926 >> ANDI Peng: Sí. 357 00:15:23,926 --> 00:15:28,420 Así que va a enviar a cabo una e-mail lo que cada semana 358 00:15:28,420 --> 00:15:31,460 cuando pruebas son graded-- o, lo siento, cuando se califican conjuntos de procesadores. 359 00:15:31,460 --> 00:15:34,120 Conjuntos de procesadores son generalmente volvieron en el mediodía o viernes. 360 00:15:34,120 --> 00:15:37,540 Así que te prometo que lo haré tratar de conseguir de nuevo a usted 361 00:15:37,540 --> 00:15:40,000 por el mediodía del viernes siguiente. 362 00:15:40,000 --> 00:15:44,950 >> Cada vez que un conjunto de procesadores de grado, enviaré una notificación en el libro de calificaciones 363 00:15:44,950 --> 00:15:47,070 que te dice tu puntuación se puede ver en línea. 364 00:15:47,070 --> 00:15:52,022 Así que justo esta semana, después de que terminar con ley de conjuntos de procesadores de la semana pasada, 365 00:15:52,022 --> 00:15:54,230 ustedes van a llegar un e-mail notificación que le dice, 366 00:15:54,230 --> 00:15:55,870 bueno aquí es donde usted ir a ver sus calificaciones. 367 00:15:55,870 --> 00:15:57,680 Y se puede ver todos los desglose de sus calificaciones. 368 00:15:57,680 --> 00:15:58,555 Usted puede ver los comentarios. 369 00:15:58,555 --> 00:16:00,360 Oh, cosa rápida también. 370 00:16:00,360 --> 00:16:03,060 La sección de comentarios en la gran libro es donde probablemente 371 00:16:03,060 --> 00:16:05,300 pasar la mayor parte de mi tiempo de clasificación. 372 00:16:05,300 --> 00:16:07,094 Así que una cosa que es realmente importante cuando 373 00:16:07,094 --> 00:16:09,010 que ustedes están viendo sus calificaciones en sus conjuntos de procesadores 374 00:16:09,010 --> 00:16:11,400 no sólo se busca en la puntuación física 375 00:16:11,400 --> 00:16:14,630 sino también tomar tiempo para realmente leer mis comentarios. 376 00:16:14,630 --> 00:16:17,820 >> A menudo, eso te da retroalimentación de cómo se está resolviendo un problema. 377 00:16:17,820 --> 00:16:20,480 Si lo que necesita hacer algo un poco mejor, 378 00:16:20,480 --> 00:16:24,080 crítica constructiva por lo general es mejor dada en las sección de comentarios. 379 00:16:24,080 --> 00:16:26,950 Así que por favor, por favor, me voy pasar tiempo escribiendo comentarios. 380 00:16:26,950 --> 00:16:30,440 Por favor, te lo agradecería muchísimo si ustedes leería esos comentarios. 381 00:16:30,440 --> 00:16:31,170 OK. 382 00:16:31,170 --> 00:16:34,150 Guay. 383 00:16:34,150 --> 00:16:34,680 >> Correcto. 384 00:16:34,680 --> 00:16:40,680 Así que vamos a empezar a hablar y acaba de revisar rápidamente 385 00:16:40,680 --> 00:16:45,040 algunos de los materiales de semana cero justo lo que estamos 386 00:16:45,040 --> 00:16:48,760 en la página correcta para comenzando problemas de esta semana. 387 00:16:48,760 --> 00:16:52,600 Así que el bucle while es uno de los tres tipos de bucles 388 00:16:52,600 --> 00:16:54,510 hemos comentado anteriormente en esta clase. 389 00:16:54,510 --> 00:16:57,060 >> Un bucle while esencialmente que está escrito en la sintaxis 390 00:16:57,060 --> 00:17:00,666 donde, mientras que una cierta condición, hacer esto varias veces, ¿verdad? 391 00:17:00,666 --> 00:17:02,040 Piense en ello en este gráfico aquí. 392 00:17:02,040 --> 00:17:04,780 Usted va a comenzar en un cierto punto en el código. 393 00:17:04,780 --> 00:17:09,030 Vas a entrar en la condición de bucle si: No sé-- x es menor que uno. 394 00:17:09,030 --> 00:17:11,677 >> Si eso es cierto, vas para ejecutar el cuerpo del bucle. 395 00:17:11,677 --> 00:17:14,010 Y vas a seguir haciendo que de nuevo, una vez más, de nuevo, 396 00:17:14,010 --> 00:17:17,900 una y over-- que es por eso que es un loop-- hasta que su condición se convierte en 397 00:17:17,900 --> 00:17:19,079 falsa. 398 00:17:19,079 --> 00:17:22,140 Así de esta manera, un bucle while es una de las formas más simples 399 00:17:22,140 --> 00:17:25,619 para escribir cualquier tipo de condición que hay que repetir una y otra y otra vez. 400 00:17:25,619 --> 00:17:28,109 Sólo tenga cuidado de siempre estás escribiendo cualquier tipo de bucle 401 00:17:28,109 --> 00:17:32,140 que usted tiene una condición de salida como así como una actualización de lo que sea 402 00:17:32,140 --> 00:17:36,714 es para que su bucle no hace precisamente ejecutar una y otra vez hasta el infinito. 403 00:17:36,714 --> 00:17:38,630 En cualquier caso, te vas a querer asegurarse 404 00:17:38,630 --> 00:17:42,670 que va a modificar algún aspecto de su código o al final del bucle 405 00:17:42,670 --> 00:17:46,680 sólo para asegurarse de que usted tiene una manera de avanzar hacia la condición 406 00:17:46,680 --> 00:17:48,400 que desea satisfacer a extremo. 407 00:17:48,400 --> 00:17:50,239 ¿Eso tiene sentido para todo el mundo? 408 00:17:50,239 --> 00:17:52,530 Simplemente no queremos ser atrapados en esta espiral, donde 409 00:17:52,530 --> 00:17:55,710 vamos vueltas y vueltas y no hay manera de romper el bucle. 410 00:17:55,710 --> 00:17:58,844 Y cada bucle esencialmente tiene una manera de hacer eso. 411 00:17:58,844 --> 00:17:59,344 OK. 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> En segundo lugar, muchos de ustedes en sus conjuntos de procesadores de Mario 414 00:18:06,060 --> 00:18:08,910 probablemente tenido que emplear este tipo de bucle. 415 00:18:08,910 --> 00:18:11,802 Se llama un do while. 416 00:18:11,802 --> 00:18:14,510 En primer lugar, ¿puede alguien decirme cuál es la diferencia entre un do 417 00:18:14,510 --> 00:18:16,586 while y un bucle while es? 418 00:18:16,586 --> 00:18:17,086 Sí. 419 00:18:17,086 --> 00:18:21,030 >> AUDIENCIA: El bucle Do While corre a primera [inaudible]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI Peng: Sí, exactamente. 421 00:18:22,120 --> 00:18:27,130 Así que un do while siempre hace lo que sea está dentro de la do, dentro de los corchetes 422 00:18:27,130 --> 00:18:30,520 allí y hace que la condición antes de comprobar el-- siento, 423 00:18:30,520 --> 00:18:32,940 hace que el código antes la comprobación de la condición. 424 00:18:32,940 --> 00:18:37,200 Y esto es especialmente relevante para nosotros aquí en esta clase, porque la mayoría de veces 425 00:18:37,200 --> 00:18:41,450 vamos a querer provocar el usuario de algún tipo de entrada. 426 00:18:41,450 --> 00:18:43,520 Y luego, dependiendo de la entrada que nos dan, 427 00:18:43,520 --> 00:18:46,150 entonces podemos evaluar, oh, hacer tenemos que impulsar de nuevo? 428 00:18:46,150 --> 00:18:49,930 >> Así que en Mario, si el usuario le dio una altura negativo, por ejemplo, 429 00:18:49,930 --> 00:18:52,990 vas a primer mensaje y hacer lo que hay dentro. 430 00:18:52,990 --> 00:18:54,820 Entonces usted va a comprobar cuando. 431 00:18:54,820 --> 00:18:57,570 Ya sabes, es negativo 1, es que un número positivo? 432 00:18:57,570 --> 00:19:00,680 Si no es así, me voy a ir atrás y repetir el hacer y repetir 433 00:19:00,680 --> 00:19:03,950 y repetir y repetir hasta que finalmente se le dará un número que te gusta, 434 00:19:03,950 --> 00:19:07,002 que todo lo que podemos emplear en nuestro código. 435 00:19:07,002 --> 00:19:09,210 Es muy importante para esencialmente cualquier entrada del usuario. 436 00:19:09,210 --> 00:19:11,760 Puedo garantizar que cualquier tiempo en un conjunto de procesadores, donde 437 00:19:11,760 --> 00:19:15,070 le pedimos a la entrada cualquier tipo de código, estamos 438 00:19:15,070 --> 00:19:17,540 probablemente va a dar un caso de prueba en el que estamos 439 00:19:17,540 --> 00:19:21,200 te va a dar algo malo que es va a tratar de romper el código. 440 00:19:21,200 --> 00:19:25,044 >> Si tratamos de preguntarle a una entrada número entero, que sólo puede darle una cadena 441 00:19:25,044 --> 00:19:26,460 y ver cómo manejaría eso. 442 00:19:26,460 --> 00:19:30,610 Si le pedimos que emplear una edad, es posible que le dará un número negativo 443 00:19:30,610 --> 00:19:32,340 para ver cómo manejaría eso. 444 00:19:32,340 --> 00:19:37,260 Sólo asegúrese de que ustedes están poniendo a prueba para casos en los que no reciben la mejor 445 00:19:37,260 --> 00:19:38,590 de entrada, digamos. 446 00:19:38,590 --> 00:19:40,510 Y un do while es a menudo la mejor 447 00:19:40,510 --> 00:19:45,260 manera de diseñar su código para que cumple con ese ámbito. 448 00:19:45,260 --> 00:19:45,760 OK. 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> OK. 451 00:19:49,470 --> 00:19:53,270 Así que este es probablemente el más bucle complejo de los tres 452 00:19:53,270 --> 00:19:54,990 que hemos visto hasta ahora. 453 00:19:54,990 --> 00:19:56,689 Y parece muy complicado en principio. 454 00:19:56,689 --> 00:19:59,730 Pero te garantizo que, una vez que ustedes conseguir la caída de cómo utilizar un bucle for, 455 00:19:59,730 --> 00:20:03,320 es una de las cosas más útiles, la mayoría de herramientas útiles en su arsenal 456 00:20:03,320 --> 00:20:05,300 para avanzar en esta clase. 457 00:20:05,300 --> 00:20:09,920 >> Así por ejemplo, en Scratch, tuvimos esta muy simple bloque 458 00:20:09,920 --> 00:20:13,180 que acaba de decir repita este seguro frases cierto número de veces. 459 00:20:13,180 --> 00:20:16,260 Por cierto, SAJ-- eso es Scaz Andi Jason. 460 00:20:16,260 --> 00:20:18,740 Nosotros muchas veces firmamos nuestro correos electrónicos SAJ. 461 00:20:18,740 --> 00:20:20,360 Si decimos SAJ, no ser confundido. 462 00:20:20,360 --> 00:20:22,630 Eso es sólo nosotros. 463 00:20:22,630 --> 00:20:28,600 >> Así que en Scratch, hemos sido capaces de tener un bloque que dijo, me encanta repetir SAJ! 464 00:20:28,600 --> 00:20:29,430 10 veces. 465 00:20:29,430 --> 00:20:30,130 Muy sencillo. 466 00:20:30,130 --> 00:20:32,302 La lógica detrás de esto es una muy, muy simple, ¿verdad? 467 00:20:32,302 --> 00:20:35,260 Quiero ir primero a través de la primera tiempo y ver que, por segunda vez 468 00:20:35,260 --> 00:20:38,510 y ver que, por tercera vez, etc. y así sucesivamente, hasta llegar a 10. 469 00:20:38,510 --> 00:20:41,960 >> Y la forma en que representaría que en código es sólo a través de un sencillo bucle for. 470 00:20:41,960 --> 00:20:45,440 Así que para, usted va a declarar la variable de aquí, en este caso, 471 00:20:45,440 --> 00:20:46,349 con un int. 472 00:20:46,349 --> 00:20:47,390 Vamos a llamarlo i. 473 00:20:47,390 --> 00:20:49,500 Vamos a inicializar a 0. 474 00:20:49,500 --> 00:20:52,490 Y la edición de parada es va a ser i es menor que 10. 475 00:20:52,490 --> 00:20:54,622 Y la actualización va a ser i ++. 476 00:20:54,622 --> 00:20:57,750 >> Y dentro del bucle, que va para ejecutar hasta que finalmente 477 00:20:57,750 --> 00:21:01,490 golpea el extremo de la condición-- en el cual caso, que va a romper el bucle. 478 00:21:01,490 --> 00:21:04,600 Debe haber cosas que usted chicos han todo tipo de visto antes 479 00:21:04,600 --> 00:21:07,270 y tuvo que hacer para su problema de un conjunto. 480 00:21:07,270 --> 00:21:12,310 Alguien tiene alguna pregunta respecto de bucles en este momento? 481 00:21:12,310 --> 00:21:12,930 OK. 482 00:21:12,930 --> 00:21:13,430 Excelente. 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> OK. 485 00:21:18,620 --> 00:21:22,270 Así que para aquellos de ustedes que tienen leer la especificación de conjunto de procesadores para esta semana 486 00:21:22,270 --> 00:21:27,690 Sabemos que vamos a tener que emplear algo llamado ASCII y tabla ASCII. 487 00:21:27,690 --> 00:21:32,380 Así que David, en la conferencia se dirigió brevemente cómo las computadoras essentially-- todo 488 00:21:32,380 --> 00:21:35,410 se codifica en un ordenador en binario, en ceros y unos. 489 00:21:35,410 --> 00:21:39,740 Y la forma en que las computadoras son capaces para almacenar diferentes valores además 490 00:21:39,740 --> 00:21:44,360 a ceros y unos son a través de la cartografía esos números para representar otros dígitos 491 00:21:44,360 --> 00:21:47,220 o esencialmente otros personajes. 492 00:21:47,220 --> 00:21:49,810 >> Así pues, en este caso, una ASCII table-- todo lo que hace 493 00:21:49,810 --> 00:21:53,600 es caracteres mapa, o caracteres, a los números. 494 00:21:53,600 --> 00:21:57,385 Así que el archivo de código fuente en su computer-- que ve, 495 00:21:57,385 --> 00:22:00,010 bueno, un montón de ceros y unos, ceros y unos, ceros y unos. 496 00:22:00,010 --> 00:22:02,350 Eso es lo que almacena en la memoria real del ordenador. 497 00:22:02,350 --> 00:22:04,750 >> Pero cuando los seres humanos quieren comunicarse con el ordenador, 498 00:22:04,750 --> 00:22:08,249 nos want-- decimos, por ejemplo, si quiero la A mayúscula, 499 00:22:08,249 --> 00:22:10,540 Voy a necesitar alguna manera de decirle a la computadora, oh, 500 00:22:10,540 --> 00:22:16,300 cuando escribo en mayúsculas A, quiero decir esta representación en binario. 501 00:22:16,300 --> 00:22:22,260 >> Y así, la forma de hacer que se lanzó una Lo arbitrario llama una tabla ASCII, 502 00:22:22,260 --> 00:22:25,020 donde nosotros, como seres humanos, como programadores, hace algún tiempo, 503 00:22:25,020 --> 00:22:28,660 arbitrariamente decidimos que iban a asignar estos números 504 00:22:28,660 --> 00:22:30,960 valores a estos personajes. 505 00:22:30,960 --> 00:22:32,720 >> Así que ustedes pueden google esta línea. 506 00:22:32,720 --> 00:22:37,120 Creo que hay un enlace a ella en su pset-- sólo una tabla de mapa ASCII, ASCII 507 00:22:37,120 --> 00:22:37,720 mesa. 508 00:22:37,720 --> 00:22:40,722 Simplemente se traduce binaria números en caracteres. 509 00:22:40,722 --> 00:22:42,930 Y va a ser muy útil para su conjunto de problemas 510 00:22:42,930 --> 00:22:45,470 cuando tu quieras calcular algo o si 511 00:22:45,470 --> 00:22:47,880 desee mostrar cierta caracteres o números enteros 512 00:22:47,880 --> 00:22:50,327 o manipular ciertos personajes. 513 00:22:50,327 --> 00:22:52,160 Va a ser muy importante que todos ustedes 514 00:22:52,160 --> 00:22:55,140 saber cómo navegar una tabla ASCII. 515 00:22:55,140 --> 00:23:01,260 >> Así, por ejemplo, la mayúscula A se representa por el número 65. 516 00:23:01,260 --> 00:23:04,207 Y la minúscula está representado por 97. 517 00:23:04,207 --> 00:23:07,040 Así que es importante saber que la diferencia entre los dos valores 518 00:23:07,040 --> 00:23:08,320 es 32. 519 00:23:08,320 --> 00:23:13,210 A menudo, si usted necesita para convertir de una a la otra, la diferencia es de 32. 520 00:23:13,210 --> 00:23:15,710 Y no te preocupes si eres tipo de confusa en esto al principio. 521 00:23:15,710 --> 00:23:20,230 Vamos a ir sobre la forma en que lo haría emplear esta en código real. 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> OK. 524 00:23:26,380 --> 00:23:30,770 Así que para aquellos de ustedes con los ordenadores portátiles fuera, no dude en tirar de una tabla ASCII, 525 00:23:30,770 --> 00:23:36,030 porque estos probablemente requieren ustedes hacer referencia 526 00:23:36,030 --> 00:23:38,100 lo que los personajes son. 527 00:23:38,100 --> 00:23:38,640 OK. 528 00:23:38,640 --> 00:23:42,840 >> Así que sabiendo que cierta caracteres se asignan a determinados números, 529 00:23:42,840 --> 00:23:47,240 si tuviera que correr sólo el primer línea de esa code-- el printf una, 530 00:23:47,240 --> 00:23:50,900 minúscula con menos mayúscula A. ¿Alguien 531 00:23:50,900 --> 00:23:55,880 tener una conjetura sobre lo que sería impresión de la pantalla en este momento? 532 00:23:55,880 --> 00:23:58,190 >> Así que en primer lugar, lo que hace minúscula representan? 533 00:23:58,190 --> 00:24:00,990 ¿Qué número es que codificado en la tabla ASCII. 534 00:24:00,990 --> 00:24:01,490 ¿Apenado? 535 00:24:01,490 --> 00:24:02,630 >> AUDIENCIA: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI Peng: 97, muy bien. 537 00:24:03,630 --> 00:24:05,077 ¿Y qué es mayúscula? 538 00:24:05,077 --> 00:24:06,330 >> AUDIENCIA: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI Peng: Entonces, ¿qué es 97, menos de 65 años? 540 00:24:08,255 --> 00:24:09,227 >> AUDIENCIA: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI Peng: OK. 542 00:24:09,810 --> 00:24:13,530 Así que ¿qué piensan ustedes que va a pasar cuando de entrada esa línea de código 543 00:24:13,530 --> 00:24:14,670 en mi computadora? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> AUDIENCIA: [inaudible]. 546 00:24:19,896 --> 00:24:21,020 ANDI Peng: Lo sentimos, hablar. 547 00:24:21,020 --> 00:24:22,520 Sin preocupaciones. 548 00:24:22,520 --> 00:24:25,750 Este es un muy seguro medio ambiente, menos la cámara. 549 00:24:25,750 --> 00:24:27,550 Todos vamos a-- sin preocupaciones. 550 00:24:27,550 --> 00:24:30,940 Así que todos vamos a fingir que es sólo nos escalofriante en esta habitación. 551 00:24:30,940 --> 00:24:31,480 Sin preocupaciones. 552 00:24:31,480 --> 00:24:33,410 Ninguna pregunta es demasiado estúpido. 553 00:24:33,410 --> 00:24:35,300 Ninguna respuesta es una respuesta estúpida. 554 00:24:35,300 --> 00:24:38,260 Probablemente voy a cometer errores en el curso de mi enseñanza. 555 00:24:38,260 --> 00:24:40,740 En serio, chicos, sólo blurt a cabo. 556 00:24:40,740 --> 00:24:43,092 Ten confianza en ti mismo, ¿sabes? 557 00:24:43,092 --> 00:24:43,800 Entonces, ¿qué fue eso? 558 00:24:43,800 --> 00:24:47,990 ¿Quién dijo que la última respuesta? 559 00:24:47,990 --> 00:24:48,540 OK. 560 00:24:48,540 --> 00:24:50,380 Grita que agradable y clara. 561 00:24:50,380 --> 00:24:51,220 >> AUDIENCIA: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI Peng: 32. 563 00:24:51,850 --> 00:24:54,141 OK, vamos a ejecutar este código y ver si eso es lo que pasa. 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 OK. 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 Así como ustedes pueden tipo de ver, la notación típica tengo 568 00:25:06,360 --> 00:25:12,250 establecido aquí por cómo íbamos a emplear cualquier tipo de programa en nuestro ordenador. 569 00:25:12,250 --> 00:25:14,770 Tenemos nuestra función principal dentro de nuestra función principal. 570 00:25:14,770 --> 00:25:17,265 Yo sólo voy a copiar y pegue esta línea de código. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 También tenga cuidado cuando chicos están copiando y pegando el código. 573 00:25:23,540 --> 00:25:28,750 A veces, ciertos operadores no pegar sobre correctamente. 574 00:25:28,750 --> 00:25:31,397 En ese caso, el signo menos señal era en realidad un guión. 575 00:25:31,397 --> 00:25:32,980 Y por lo que el equipo no recogerlo. 576 00:25:32,980 --> 00:25:35,870 Así que tuve que volver atrás y vuelva a escribir físicamente eso. 577 00:25:35,870 --> 00:25:37,846 Sólo tenga cuidado al que ustedes están haciendo eso. 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> OK. 580 00:25:42,660 --> 00:25:43,980 Vamos a ejecutar esta aquí. 581 00:25:43,980 --> 00:25:45,670 Así que vamos a cd en nuestra sección2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 He llamado a este programa asciimath. 584 00:25:52,030 --> 00:25:55,690 Así que recuerda, cuando corremos ningún programa, queremos primero compilarlo 585 00:25:55,690 --> 00:25:57,150 mediante la ejecución a través de nuestra marca. 586 00:25:57,150 --> 00:26:00,030 Y luego queremos ejecutar realidad el programa haciendo punto-raya vertical. 587 00:26:00,030 --> 00:26:01,280 Así que vamos a ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> Derecha, ahí vamos. 590 00:26:06,590 --> 00:26:07,410 Y vemos 32. 591 00:26:07,410 --> 00:26:07,930 Bien hecho. 592 00:26:07,930 --> 00:26:10,340 Mereces un pedazo de caramelo. 593 00:26:10,340 --> 00:26:11,160 Caramelo para usted. 594 00:26:11,160 --> 00:26:11,900 Apenado. 595 00:26:11,900 --> 00:26:13,100 Correcto. 596 00:26:13,100 --> 00:26:13,670 OK. 597 00:26:13,670 --> 00:26:18,070 Así que podemos volver a nuestro ejemplo aquí. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, no. 600 00:26:24,345 --> 00:26:29,147 601 00:26:29,147 --> 00:26:31,090 Aah. 602 00:26:31,090 --> 00:26:32,490 OK. 603 00:26:32,490 --> 00:26:34,610 Yo sólo voy a seguir así. 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 OK. 606 00:26:51,240 --> 00:26:51,740 OK. 607 00:26:51,740 --> 00:26:55,340 Así como ustedes pueden ver, podemos hacer un montón de cosas muy interesantes, 608 00:26:55,340 --> 00:26:58,880 un montón de cosas muy interesantes, una gran cantidad de cosas muy complicadas que implican 609 00:26:58,880 --> 00:27:02,720 Caracteres ASCII y números. 610 00:27:02,720 --> 00:27:05,890 Una vez que llegue a la línea de cinco, eso es mucho para seguir adelante. 611 00:27:05,890 --> 00:27:07,640 No vamos a ir a través de la sección. 612 00:27:07,640 --> 00:27:10,720 No dude, si se puede, razonarlo en papel 613 00:27:10,720 --> 00:27:14,750 primero en lo que debería estar sucediendo cuando introduce una cadena como de valores. 614 00:27:14,750 --> 00:27:19,720 Por ejemplo, en la última línea, tenemos z-- que representa un cierto number-- 615 00:27:19,720 --> 00:27:24,740 A-- que también representa un ciertos number-- más 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 además de minúsculas a. 617 00:27:26,750 --> 00:27:29,220 >> Si ustedes seguir leyendo a través de estos, 618 00:27:29,220 --> 00:27:34,009 puede ver un patrón viene en cómo estamos manipulando el código. 619 00:27:34,009 --> 00:27:36,050 Lo recomiendo, recomiendo encarecidamente después de la sección a todos ustedes 620 00:27:36,050 --> 00:27:38,160 chicos van por delante y la entrada los todo en su computadora 621 00:27:38,160 --> 00:27:40,060 y ver qué tipo de los números están saliendo 622 00:27:40,060 --> 00:27:43,090 y el razonamiento a través de por qué esos son pasando, porque para sus conjuntos de procesadores 623 00:27:43,090 --> 00:27:45,060 que va a ser realmente importante para que usted entienda 624 00:27:45,060 --> 00:27:47,132 por qué ciertas cosas están sucediendo. 625 00:27:47,132 --> 00:27:48,590 Todas estas diapositivas estarán en línea. 626 00:27:48,590 --> 00:27:51,510 Así que no se preocupa por tratar de copiar físicamente notas. 627 00:27:51,510 --> 00:27:52,510 En línea de todo. 628 00:27:52,510 --> 00:27:54,050 En esta sección sí estará en línea. 629 00:27:54,050 --> 00:27:57,500 Toda mi código fuente que Estoy corriendo estará en línea. 630 00:27:57,500 --> 00:27:58,180 Sí. 631 00:27:58,180 --> 00:27:59,430 ¿Sabía usted todavía tiene una pregunta? 632 00:27:59,430 --> 00:28:00,587 AUDIENCIA: ¿Cuál es modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI Peng: OK. 634 00:28:01,170 --> 00:28:05,620 Así módulo es un operador que va a ser bastante importante conjunto de procesadores de sus chicos 635 00:28:05,620 --> 00:28:06,690 Aquí. 636 00:28:06,690 --> 00:28:12,280 Así que la forma que los operadores en C y en el trabajo de programación 637 00:28:12,280 --> 00:28:16,360 es que usted tiene lo que se llama la símbolo de la división y el símbolo de módulo, 638 00:28:16,360 --> 00:28:18,350 que es como el signo de porcentaje. 639 00:28:18,350 --> 00:28:24,840 >> Así que en C, cuando haces un entero dividido por un entero con una barra, 640 00:28:24,840 --> 00:28:27,720 C tiene una tendencia a querer cortar off todos los puntos decimales, 641 00:28:27,720 --> 00:28:30,290 porque un número entero quiere para convertir a un entero. 642 00:28:30,290 --> 00:28:33,550 No va a querer ser un doble con un montón de decimales todo después de ella. 643 00:28:33,550 --> 00:28:39,322 >> Así que si lo hago 3 dividido por 2, que va para cortar el 0,5 y sólo le dará 1. 644 00:28:39,322 --> 00:28:41,530 Así que eso es algo para estar muy cuidadoso de cuando estás 645 00:28:41,530 --> 00:28:45,294 haciendo cualquier tipo de matemáticas en la programación, es que los números que quedan 646 00:28:45,294 --> 00:28:47,210 pueden no ser los números que estabas pensando, 647 00:28:47,210 --> 00:28:50,190 que es la razón por redondeo en su último conjunto de procesadores es tan importante. 648 00:28:50,190 --> 00:28:51,980 >> Modulo le da el resto. 649 00:28:51,980 --> 00:28:56,200 Así, por ejemplo, si lo hice 3 módulo 2-- modo 3 por ciento signo 2-- 650 00:28:56,200 --> 00:28:58,020 le daría el resto de ese. 651 00:28:58,020 --> 00:29:00,460 Así 3 dividido por 2 es 1,5. 652 00:29:00,460 --> 00:29:01,410 Es 1 resto de 1. 653 00:29:01,410 --> 00:29:04,600 Le daría a la 1, que es el resto de eso. 654 00:29:04,600 --> 00:29:07,361 >> Así que cuando ustedes se están moviendo a través de la tabla ASCII, 655 00:29:07,361 --> 00:29:09,735 módulo va a terminar siendo algo que es muy importante, 656 00:29:09,735 --> 00:29:11,240 y vamos a discutir eso más adelante. 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> OK. 659 00:29:19,040 --> 00:29:27,300 Así que algo que es bastante, bastante nuevo y bastante único 660 00:29:27,300 --> 00:29:31,920 que hemos discutido esta semana es el concepto de lo que es una matriz. 661 00:29:31,920 --> 00:29:34,370 Así matriz es el primero tipo de estructura de datos 662 00:29:34,370 --> 00:29:36,320 que vamos a encontrar en esta clase. 663 00:29:36,320 --> 00:29:40,010 Toda la estructura de datos se está algún tipo de arbitraria, 664 00:29:40,010 --> 00:29:43,370 literalmente cosas como la estructura que nosotros como programadores hemos creado, 665 00:29:43,370 --> 00:29:47,890 que hemos puesto en nuestro código que puede contener otras piezas de código. 666 00:29:47,890 --> 00:29:51,090 >> Así que en este sentido, un array-- pensar en él como un archivador, 667 00:29:51,090 --> 00:29:53,470 donde si abre diferente estanterías de su gabinete, 668 00:29:53,470 --> 00:29:55,630 se puede acceder a diferentes cosas. 669 00:29:55,630 --> 00:29:58,630 En la memoria, un array sólo está haciendo lo mismo en el equipo. 670 00:29:58,630 --> 00:30:01,730 Usted puede tener diferentes que blocks-- llamarlos indices-- de una matriz. 671 00:30:01,730 --> 00:30:04,210 Es como un bloque, un estante de la memoria 672 00:30:04,210 --> 00:30:07,580 que hemos creado dentro de su equipo que puede introducir 673 00:30:07,580 --> 00:30:10,270 ciertas cosas en diferentes espacios. 674 00:30:10,270 --> 00:30:18,000 >> Así que con una matriz, siempre hay que specify-- 675 00:30:18,000 --> 00:30:22,360 tiene que especificar declarar un matriz en el siguiente formato. 676 00:30:22,360 --> 00:30:24,290 Vas a primera especificar el tipo de datos 677 00:30:24,290 --> 00:30:25,831 que desea crear de la matriz. 678 00:30:25,831 --> 00:30:28,870 Si quiero una matriz de enteros, Me voy a poner int allí mismo. 679 00:30:28,870 --> 00:30:32,079 Si quiero una matriz de cadenas, Me voy a poner cadenas allí, 680 00:30:32,079 --> 00:30:34,995 el nombre de su matriz, y luego vas a tener corchetes. 681 00:30:34,995 --> 00:30:39,580 Y dentro de los corchetes, eres va a tener el tamaño de su matriz. 682 00:30:39,580 --> 00:30:42,900 >> Algo que es realmente importante para tener en cuenta al crear arrays es 683 00:30:42,900 --> 00:30:46,530 que, una vez que se crea una array, que el tamaño no puede cambiar. 684 00:30:46,530 --> 00:30:50,180 Así que si usted sabe que en este momento usted tiene una matriz de tamaño 10, 685 00:30:50,180 --> 00:30:54,550 usted sabe que voy a tener 10 células dentro o 10 índices dentro de esta matriz, 686 00:30:54,550 --> 00:30:56,830 y que nunca va ampliar o disminuir 687 00:30:56,830 --> 00:30:59,850 no importa qué, y que hay Actualmente sólo 10 bloques de espacio 688 00:30:59,850 --> 00:31:04,490 asignado en su memoria que puede almacenar hasta 10 cosas de todo lo que has puesto. 689 00:31:04,490 --> 00:31:08,790 >> Así de esta manera, un tipo de datos de matriz, la estructura de datos que es una matriz 690 00:31:08,790 --> 00:31:13,392 es muy diferente de algunos otros que vamos a estar cubriendo más adelante en este curso. 691 00:31:13,392 --> 00:31:15,170 Sí. 692 00:31:15,170 --> 00:31:20,080 Por ejemplo, si usted quiere crear una matriz de tamaño 3 que 693 00:31:20,080 --> 00:31:23,670 variables contenidas de integer-- oh, lo siento, de temperature-- 694 00:31:23,670 --> 00:31:25,640 y la temperatura, de Por supuesto, es un número entero. 695 00:31:25,640 --> 00:31:28,710 >> Así que nos creamos int, que es el tipo de datos de lo que queremos guardar. 696 00:31:28,710 --> 00:31:32,680 Vamos a llamar a esta temperatura en aras de la nomenclatura de los nombres 697 00:31:32,680 --> 00:31:34,200 algo que todos entendemos. 698 00:31:34,200 --> 00:31:35,900 Y vamos a tener entre corchetes. 699 00:31:35,900 --> 00:31:37,200 Y queremos tres números. 700 00:31:37,200 --> 00:31:39,000 Así que vamos a poner de tres en el interior de la misma. 701 00:31:39,000 --> 00:31:41,041 >> Algo que es muy importante a tener en cuenta 702 00:31:41,041 --> 00:31:43,530 es que las matrices se indexan cero. 703 00:31:43,530 --> 00:31:46,410 Todo lo que significa es que usted comenzar con el índice de 0, 704 00:31:46,410 --> 00:31:49,800 y se ejecuta a través de la tamaño de la matriz menos 1. 705 00:31:49,800 --> 00:31:52,730 Así, por ejemplo aquí, tener una matriz de tamaño 3. 706 00:31:52,730 --> 00:31:54,680 Va a ser capaz de a celebrar tres valores. 707 00:31:54,680 --> 00:31:57,450 Pero los números que themselves-- número, la matriz, que índice, 708 00:31:57,450 --> 00:32:00,271 la matriz, son del 0 al 2. 709 00:32:00,271 --> 00:32:03,520 Así que chicos, ser muy, muy cuidadoso cuando usted va a través de sus problemas establecidos 710 00:32:03,520 --> 00:32:06,500 y la creación de cualquier tipo de matriz, porque muchas de las veces es 711 00:32:06,500 --> 00:32:08,490 muy, muy fácil de olvidar eso. 712 00:32:08,490 --> 00:32:11,840 En realidad, yo no tengo el índice de 3, que actualmente solo 713 00:32:11,840 --> 00:32:13,130 tener el índice de 2. 714 00:32:13,130 --> 00:32:16,046 Y si intenta acceder a la tercera índice, 715 00:32:16,046 --> 00:32:18,170 que va a ser lo que es llamado el terminador nulo. 716 00:32:18,170 --> 00:32:19,990 No va a realidad existir en la matriz. 717 00:32:19,990 --> 00:32:21,781 Y el equipo es No va a gustar eso. 718 00:32:21,781 --> 00:32:24,570 Así que tenga cuidado cuando que está accediendo cosas 719 00:32:24,570 --> 00:32:28,070 para asegurarse de que se acuerde que las matrices son cero indexados. 720 00:32:28,070 --> 00:32:28,880 >> OK. 721 00:32:28,880 --> 00:32:34,030 Así que el primer ejemplo es sólo una manera de crear una matriz. 722 00:32:34,030 --> 00:32:36,790 El segundo ejemplo que tengo a continuación es sólo una forma separada 723 00:32:36,790 --> 00:32:40,210 de la creación de lo que es el mismo de datos estructura que acabamos introducidos. 724 00:32:40,210 --> 00:32:44,347 Así que en vez de físicamente funcionando a través y poner en la temperatura de 0 725 00:32:44,347 --> 00:32:47,180 es igual a lo que sea, la temperatura 1 es igual a lo que, de temperatura 2 iguales 726 00:32:47,180 --> 00:32:50,950 lo que sea, lo que pude en realidad sólo crear directamente todo en una sola línea 727 00:32:50,950 --> 00:32:53,010 entre corchetes temperatura iguales. 728 00:32:53,010 --> 00:32:56,536 >> Y fíjense en este caso, no es necesario para especificar el tamaño de su matriz es, 729 00:32:56,536 --> 00:32:59,160 porque el equipo va a ir a través y ver que hay 730 00:32:59,160 --> 00:33:01,570 tres elementos en esas llaves. 731 00:33:01,570 --> 00:33:04,000 Y se va a saber, está bien, Necesito una matriz de tamaño 3. 732 00:33:04,000 --> 00:33:07,440 No vas a necesitar de entrada es de la siguiente manera. 733 00:33:07,440 --> 00:33:10,170 >> Y también, si, de esa manera. 734 00:33:10,170 --> 00:33:12,610 ¿Alguien tiene preguntas con respecto a cómo hacemos arreglos 735 00:33:12,610 --> 00:33:17,391 o cómo funciona la estructura de una matriz? 736 00:33:17,391 --> 00:33:17,890 Sí. 737 00:33:17,890 --> 00:33:18,806 >> AUDIENCIA: [inaudible]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI Peng: Sí, exactamente. 740 00:33:22,690 --> 00:33:26,150 Así que si usted fuera a declarar e inicializar una matriz el siguiente método, 741 00:33:26,150 --> 00:33:28,477 que es la segunda manera, usted puede simplemente dejar esos. 742 00:33:28,477 --> 00:33:30,310 Y la computadora sabe automáticamente que 743 00:33:30,310 --> 00:33:33,950 debe contar cuántos elementos están en esas llaves, separados 744 00:33:33,950 --> 00:33:34,930 por comas. 745 00:33:34,930 --> 00:33:37,517 >> Así que aquí ven 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 Así que el equipo sabe, oh, hay tres enteros. 747 00:33:39,600 --> 00:33:45,960 Sé que para crear un nombre de matriz temperatura con tres elementos en los mismos. 748 00:33:45,960 --> 00:33:46,590 Buena pregunta. 749 00:33:46,590 --> 00:33:47,090 Sí. 750 00:33:47,090 --> 00:33:51,590 >> AUDIENCIA: ¿No es posible la creación de una matriz con diferentes tipos de datos 751 00:33:51,590 --> 00:33:53,021 que se podía entrar en ella? 752 00:33:53,021 --> 00:33:56,746 Por ejemplo, con números enteros [inaudible]? 753 00:33:56,746 --> 00:33:59,120 ANDI Peng: A los efectos de esta clase, no, ahora mismo. 754 00:33:59,120 --> 00:34:03,070 Cuando se crea un conjunto de datos estructurar como una matriz, 755 00:34:03,070 --> 00:34:04,990 estás diciendo la equipo, hey, te necesito 756 00:34:04,990 --> 00:34:08,159 asignar este mucho memoria en mi disco duro, 757 00:34:08,159 --> 00:34:10,690 con cada celda de ser una cierto número de bits. 758 00:34:10,690 --> 00:34:13,429 >> Recuerde que aprendimos en la semana cero que datos diferentes 759 00:34:13,429 --> 00:34:15,300 tipos tienen diferentes tamaños? 760 00:34:15,300 --> 00:34:17,630 Así, por ejemplo, una cadena es una cantidad diferente 761 00:34:17,630 --> 00:34:20,719 de espacio que un char, que es una cantidad diferente de espacio 762 00:34:20,719 --> 00:34:21,830 a partir de un número entero. 763 00:34:21,830 --> 00:34:25,534 Y así, si no se especifica y mezclar y combinar qué tipos de variables 764 00:34:25,534 --> 00:34:27,659 usted tiene, el equipo de va a ser muy confuso. 765 00:34:27,659 --> 00:34:29,950 Y no va a saber la cantidad de memoria para darle. 766 00:34:29,950 --> 00:34:32,480 Así que para los propósitos de la derecha Ahora, las computadoras sólo pueden 767 00:34:32,480 --> 00:34:36,120 reconocer un tipo de una matriz. 768 00:34:36,120 --> 00:34:37,940 Buena pregunta. 769 00:34:37,940 --> 00:34:38,440 OK. 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> Así que, naturalmente, la segunda pregunta que tenemos 772 00:34:47,120 --> 00:34:50,760 es, bueno, ahora que hemos creado un matriz y que hemos puesto todas estas cosas 773 00:34:50,760 --> 00:34:54,190 en la matriz, ¿cómo vamos va a ser capaz de acceder a él? 774 00:34:54,190 --> 00:34:59,710 Así que la estructura típica que siempre acceder a una matriz es nuestra preciosa para bucle. 775 00:34:59,710 --> 00:35:03,830 Te prometo que ustedes que vamos a ser viendo un montón de este hombre aquí. 776 00:35:03,830 --> 00:35:06,470 >> Esencialmente, cualquier momento que desee para introducir valores en una matriz 777 00:35:06,470 --> 00:35:09,940 o si desea acceder a ellos, la mejor manera de hacerlo es un bucle for, 778 00:35:09,940 --> 00:35:13,730 porque en un bucle for, que Sabes cuántas veces eres 779 00:35:13,730 --> 00:35:17,290 va a querer correr a través de la matriz, porque usted tiene una edición parada, ¿verdad? 780 00:35:17,290 --> 00:35:19,680 Y cada vez que se ejecuta a través, puede acceder a 781 00:35:19,680 --> 00:35:21,310 un elemento diferente de la matriz. 782 00:35:21,310 --> 00:35:26,920 >> Y también, esta es una razón por la cual típicamente comenzamos nuestro bucles en el valor 0, 783 00:35:26,920 --> 00:35:30,080 porque cuando se accede a las matrices, se puede acceder al índice cero. 784 00:35:30,080 --> 00:35:32,070 Y lo que es paralelo muy bien. 785 00:35:32,070 --> 00:35:35,295 Ustedes pueden haber querido escribir para int i es igual a 1. 786 00:35:35,295 --> 00:35:37,330 i es menor que o igual a 3. 787 00:35:37,330 --> 00:35:39,890 >> Pero no iba a funcionar tan bien aquí, porque sólo 788 00:35:39,890 --> 00:35:42,010 tener elementos de 0, 1, y 2. 789 00:35:42,010 --> 00:35:45,815 Y por lo que si usted fuera a comenzar su i en el elemento 1, 2, y 3, 790 00:35:45,815 --> 00:35:48,440 usted va a terminar corriendo fuera de los límites de la matriz, 791 00:35:48,440 --> 00:35:50,440 y las cosas malas van a suceder. 792 00:35:50,440 --> 00:35:54,480 >> Así que espero que ustedes ven el segue de por qué en las clases anteriores 793 00:35:54,480 --> 00:35:58,560 os enseñábamos chicos cómo ejecutar y formatear un bucle for la forma en que nos encontrábamos. 794 00:35:58,560 --> 00:36:01,900 Es porque, ahora que hemos la transición a las matrices, 795 00:36:01,900 --> 00:36:06,760 se puede ver por qué los 0 presta sí muy bien para el acceso. 796 00:36:06,760 --> 00:36:09,880 >> Así que la forma en que hacemos que es que-- Estoy simplemente imprimirlo aquí en aras 797 00:36:09,880 --> 00:36:10,830 de imprimirlo. 798 00:36:10,830 --> 00:36:13,750 Pero yo tengo mi marcador de posición, coma. 799 00:36:13,750 --> 00:36:15,645 Y el que accede real parte está sucediendo. 800 00:36:15,645 --> 00:36:17,520 El nombre de la matriz se llamó la temperatura. 801 00:36:17,520 --> 00:36:21,570 Así que es la temperatura y la i-ésimo elemento de la matriz. 802 00:36:21,570 --> 00:36:24,400 >> Así como para recorrer corre, que va a comenzar a 0. 803 00:36:24,400 --> 00:36:27,640 Se va a imprimir la Índice 0 ª de esta matriz. 804 00:36:27,640 --> 00:36:29,599 Luego se va a imprimir el primer elemento. 805 00:36:29,599 --> 00:36:31,431 Luego se va a imprimir a cabo la segunda. 806 00:36:31,431 --> 00:36:32,880 Y luego vamos a romper. 807 00:36:32,880 --> 00:36:36,718 Es claro en todo el mundo lo que está sucediendo? 808 00:36:36,718 --> 00:36:37,217 Excelente. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Correcto. 811 00:36:44,100 --> 00:36:47,270 Así que aquí tenemos una forma de diciendo, si no queríamos 812 00:36:47,270 --> 00:36:50,020 para codificar me en-- como el programador. 813 00:36:50,020 --> 00:36:53,320 Yo no quiero realidad física puesto en cada elemento individual 814 00:36:53,320 --> 00:36:54,020 de esta matriz. 815 00:36:54,020 --> 00:36:56,500 Si quisiera lugar tener los valores de entrada del usuario, 816 00:36:56,500 --> 00:36:58,100 ¿cuál es la mejor manera de hacer eso? 817 00:36:58,100 --> 00:37:00,920 >> Bueno, aquí he creado esta hermosa función, 818 00:37:00,920 --> 00:37:03,560 en la que yo puedo declarar una matriz. 819 00:37:03,560 --> 00:37:06,210 Así int scores-- vamos simplemente decimos que queremos hacer 820 00:37:06,210 --> 00:37:10,660 una matriz que contenía los grados de los 18 de los estudiantes aquí en esta sección. 821 00:37:10,660 --> 00:37:12,670 Creo que tenemos un poco más de 18 niños de hoy. 822 00:37:12,670 --> 00:37:16,460 Pero por el bien de ejemplo, vamos a suponer que teníamos 18. 823 00:37:16,460 --> 00:37:21,580 Me gustaría crear un nombre de matriz con puntuaciones tipo int, porque las puntuaciones, por supuesto, 824 00:37:21,580 --> 00:37:22,987 son números. 825 00:37:22,987 --> 00:37:24,820 Y yo voy a tener 18 entre corchetes, 826 00:37:24,820 --> 00:37:29,900 porque ese es el número de estudiantes que quiero ser capaz de almacenar decenas de. 827 00:37:29,900 --> 00:37:32,206 >> Y la manera en que yo había pueblan la matriz es que yo había 828 00:37:32,206 --> 00:37:35,572 ejecutar a través de un bucle for, de Por supuesto, siendo 0 mi índice 0 ª. 829 00:37:35,572 --> 00:37:38,030 Y luego, con 18 siendo mi detener la edición, porque no hay 830 00:37:38,030 --> 00:37:39,690 18 elementos de la matriz. 831 00:37:39,690 --> 00:37:44,620 Y luego me voy a hacer printf, introduzca anotar para student-- bla bla bla. 832 00:37:44,620 --> 00:37:51,171 >> ¿Puede alguien decirme por qué aquí estoy imprimir i + 1 y no yo? 833 00:37:51,171 --> 00:37:52,920 Es un poco un truco se trata, en realidad no. 834 00:37:52,920 --> 00:37:56,020 En realidad, no físicamente afectar a la ejecución del código. 835 00:37:56,020 --> 00:37:56,520 Sí. 836 00:37:56,520 --> 00:37:57,909 >> AUDIENCIA: [inaudible] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI Peng: Sí, exactamente. 838 00:37:58,950 --> 00:38:02,620 Es un poco difícil de decir, bueno, eres el estudiante 0th en esta clase. 839 00:38:02,620 --> 00:38:03,780 Es un poco raro. 840 00:38:03,780 --> 00:38:08,340 Así que nosotros, como seres humanos, no me gusta pensar en cómo piensan los ordenadores. 841 00:38:08,340 --> 00:38:10,930 Así que, aunque en el equipo, es el almacenamiento de los valores 842 00:38:10,930 --> 00:38:13,310 en el 0 º índice, cuando somos seres humanos, no lo hacemos de verdad 843 00:38:13,310 --> 00:38:15,520 referirme a nosotros mismos como cero. 844 00:38:15,520 --> 00:38:18,119 Así que cuando me acaba de impresión que, Voy a imprimir y añadir 845 00:38:18,119 --> 00:38:19,410 1 sólo por el bien de la claridad. 846 00:38:19,410 --> 00:38:22,447 Así que cuando imprimo, yo voy a ser capaz de imprimir los estudiantes del 1 al 18. 847 00:38:22,447 --> 00:38:24,530 En realidad, no afecta el funcionamiento de la código 848 00:38:24,530 --> 00:38:27,110 de ninguna manera, la forma en que se imprime. 849 00:38:27,110 --> 00:38:30,380 >> Pero tenga cuidado cuando estás en realidad el acceso a la matriz. 850 00:38:30,380 --> 00:38:32,780 Cuando vea los resultados i, notar aquí que soy en realidad 851 00:38:32,780 --> 00:38:38,200 acceso al índice 0 ª y no la 1 más 0-- o 1 más 1, 852 00:38:38,200 --> 00:38:45,530 En este caso, el índice de por lo que en realidad es clara. 853 00:38:45,530 --> 00:38:48,870 ¿Están todos tipo de OK en cómo esto se está ejecutando a través de 854 00:38:48,870 --> 00:38:51,470 y con todos los índices que soy poner un valor en la matriz 855 00:38:51,470 --> 00:38:55,340 y la creación de una matriz con 18 números que el usuario va a la entrada? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 OK. 858 00:38:59,821 --> 00:39:00,321 Guay. 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> OK. 861 00:39:07,400 --> 00:39:12,220 Ahora nos movemos hacia algo que es bastante relevante para esta pieza establecer también. 862 00:39:12,220 --> 00:39:15,020 Sé que en la conferencia, David-- lo siento, tenías una pregunta? 863 00:39:15,020 --> 00:39:16,840 >> AUDIENCIA: ¿Se puede ampliar? 864 00:39:16,840 --> 00:39:18,080 >> ANDI Peng: Sí, así que lo intenté. 865 00:39:18,080 --> 00:39:18,788 Pero yo no lo sé. 866 00:39:18,788 --> 00:39:21,437 Por alguna razón, esta versión de PowerPoint 867 00:39:21,437 --> 00:39:23,270 es realmente no funciona bien con la pantalla. 868 00:39:23,270 --> 00:39:25,260 Así que sólo vamos para mantenerlo así. 869 00:39:25,260 --> 00:39:27,280 Todos ellos se subirán en línea. 870 00:39:27,280 --> 00:39:28,218 Lo siento chicos. 871 00:39:28,218 --> 00:39:30,090 Sí. 872 00:39:30,090 --> 00:39:30,980 OK. 873 00:39:30,980 --> 00:39:35,530 >> Así también podemos tener cuerdas. 874 00:39:35,530 --> 00:39:39,320 Así que si ustedes realmente me notice-- Sabe Rob se acercó esto en esa conferencia 875 00:39:39,320 --> 00:39:43,652 que did-- una cadena es en realidad sólo un conjunto de caracteres, 876 00:39:43,652 --> 00:39:44,860 si se piensa en ello, ¿no? 877 00:39:44,860 --> 00:39:47,500 Una cadena es un nombre o un frase o una palabra, ¿verdad? 878 00:39:47,500 --> 00:39:52,975 >> Si tuviera que crear una cadena denominada Andi-- sólo mi nombre, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Se piensa en eso como una sola variable. 880 00:39:55,460 --> 00:39:58,630 Pero, en realidad, se descompone en apenas una serie de caracteres. 881 00:39:58,630 --> 00:40:01,910 Por lo tanto, tiene un carácter de una almacenan en un valor de matriz. 882 00:40:01,910 --> 00:40:05,420 Tiene un carácter de n almacenada en el segundo índice y así sucesivamente y así sucesivamente. 883 00:40:05,420 --> 00:40:08,660 >> Así, de tal manera, en realidad tienen este tipo 884 00:40:08,660 --> 00:40:10,970 de estructura establecida en lugar para nuestras cadenas. 885 00:40:10,970 --> 00:40:14,660 Así que aquí, si yo tuviera que introducir el palabra "comer" - por lo que la palabra cadena es igual 886 00:40:14,660 --> 00:40:15,540 conseguir cadena. 887 00:40:15,540 --> 00:40:19,260 Si tuviera que introducir la palabra "comer", que es físicamente la forma en que mi equipo 888 00:40:19,260 --> 00:40:21,870 está almacenando esa cadena en mi memoria. 889 00:40:21,870 --> 00:40:27,140 >> Y si quería ejecutar a través de ese y de impresión que fuera-- así que para en i 890 00:40:27,140 --> 00:40:30,890 es igual a cero, recuerda, en conferencia, algo cubierto que se llama strlen, 891 00:40:30,890 --> 00:40:32,990 o la longitud de la cadena. 892 00:40:32,990 --> 00:40:36,520 Porque en realidad no sabe lo grande que la matriz es 893 00:40:36,520 --> 00:40:38,210 de cualquier inputting-- del usuario 894 00:40:38,210 --> 00:40:40,370 >> Por ejemplo, he introducido la palabra "comer", y sé 895 00:40:40,370 --> 00:40:41,870 eso es tres caracteres de largo, ¿no? 896 00:40:41,870 --> 00:40:44,700 Así que podría poner en una de tres que hay y todo va a estar bien. 897 00:40:44,700 --> 00:40:49,290 Pero si su entrada del usuario algo eso es un número diferente de valores, 898 00:40:49,290 --> 00:40:52,760 usted va a no ser capaz de realmente Sabe que cuando se programa el código. 899 00:40:52,760 --> 00:40:56,040 >> Así que la forma en que manejamos los casos de prueba así es que tenemos algo 900 00:40:56,040 --> 00:41:00,070 llamada strlen, que es sólo una función que te dice cuánto tiempo una cadena es. 901 00:41:00,070 --> 00:41:02,080 Así strlen de la palabra. 902 00:41:02,080 --> 00:41:03,470 Mi palabra es comer. 903 00:41:03,470 --> 00:41:05,990 n es igual a strlen de la palabra. 904 00:41:05,990 --> 00:41:08,930 ¿Puede alguien decirme lo que valor efectivamente está ahí? 905 00:41:08,930 --> 00:41:12,550 Lo que n representa a la derecha Ahora, en este ejemplo, si tuviera comer? 906 00:41:12,550 --> 00:41:13,530 >> AUDIENCIA: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI Peng: 3, exactamente. 908 00:41:14,520 --> 00:41:18,820 Así que tenemos para int i es igual cero, n es igual a 3, esencialmente. 909 00:41:18,820 --> 00:41:22,355 Y me va a correr hasta que sea menos de 3i ++. 910 00:41:22,355 --> 00:41:24,980 Y que va a ir en esencia a través y hacer lo mismo. 911 00:41:24,980 --> 00:41:26,979 Se va a imprimir todo valor y darle 912 00:41:26,979 --> 00:41:29,700 COMER. Es sólo que denota una diferente manera de escribirlo. 913 00:41:29,700 --> 00:41:31,170 Eso va a ser muy útil. 914 00:41:31,170 --> 00:41:31,670 Sí. 915 00:41:31,670 --> 00:41:35,174 AUDIENCIA: ¿Qué hay de los beneficios de poner n es igual a la palabra strlen dentro de ese 916 00:41:35,174 --> 00:41:36,894 bucle for [inaudible]? 917 00:41:36,894 --> 00:41:37,560 ANDI Peng: Sí. 918 00:41:37,560 --> 00:41:44,880 Así que si yo fuera a-- decir, por ejemplo, si yo fuera a hacer eso y después 919 00:41:44,880 --> 00:41:51,935 hacer-- oop-- que, en mi código, sería en realidad estar haciendo como la misma cosa. 920 00:41:51,935 --> 00:41:55,060 Sin embargo, la forma en que David explicó durante la conferencia, si alguno de ustedes 921 00:41:55,060 --> 00:41:57,854 recuerde, era que, como seres humanos, como programadores, 922 00:41:57,854 --> 00:42:00,270 Realmente tratamos de programar nuestra código para que nuestro equipo tiene 923 00:42:00,270 --> 00:42:04,070 trabajar como mínimo posible, por lo que que nuestro código es muy eficiente. 924 00:42:04,070 --> 00:42:06,850 >> Así que si tuviera que hay, lo que que pasaría a través de mi bucle for 925 00:42:06,850 --> 00:42:10,790 es que me declaro una primera i llamado la variable va a ser 0. 926 00:42:10,790 --> 00:42:13,350 Voy a comprobar, oh, lo que es lo strlen de palabra? 927 00:42:13,350 --> 00:42:15,000 Oh, el strlen es 3. 928 00:42:15,000 --> 00:42:16,191 Así es i menos de tres? 929 00:42:16,191 --> 00:42:16,690 Sí lo es. 930 00:42:16,690 --> 00:42:17,870 Voy a correr. 931 00:42:17,870 --> 00:42:21,130 >> Y entonces la segunda vez la vuelta el bucle, voy a incrementar i. 932 00:42:21,130 --> 00:42:22,550 i va a ser una. 933 00:42:22,550 --> 00:42:25,600 Y me va a comprobar, oh, pero ¿cuál es el strlen de la palabra? 934 00:42:25,600 --> 00:42:26,839 Oh, es tres. 935 00:42:26,839 --> 00:42:29,880 ¿Y que parecen tipo de desperdicio, cada vez que se ejecuta a través del bucle, 936 00:42:29,880 --> 00:42:33,340 a la comprobación de la función, a pesar de que los strlen de palabra 937 00:42:33,340 --> 00:42:35,490 en realidad nunca cambia? 938 00:42:35,490 --> 00:42:38,590 >> Así que es más potencia de un ordenador. 939 00:42:38,590 --> 00:42:42,180 Cuando empiezas a hablar acerca de las cosas que son miles de millones 940 00:42:42,180 --> 00:42:44,431 y miles de millones de lugares largo, imaginar su ordenador 941 00:42:44,431 --> 00:42:47,430 tener que ir físicamente a través y comprobar todo eso cada vez. 942 00:42:47,430 --> 00:42:53,170 Por eso, para hacer justo en aras de la eficiencia, 943 00:42:53,170 --> 00:42:57,620 tendemos a simplemente hacer esto, porque de esta manera, sólo estamos 944 00:42:57,620 --> 00:42:59,850 llamando a la función una vez en el principio, 945 00:42:59,850 --> 00:43:01,766 y que cada vez que pasa por que va 946 00:43:01,766 --> 00:43:03,789 para almacenar el valor 3 allí, que no lo hace 947 00:43:03,789 --> 00:43:05,330 que comprobar continuamente cada vez. 948 00:43:05,330 --> 00:43:05,743 Sí. 949 00:43:05,743 --> 00:43:06,409 >> AUDIENCIA: Lo sentimos. 950 00:43:06,409 --> 00:43:09,070 Justo [inaudible]. 951 00:43:09,070 --> 00:43:13,985 ¿Podría usted int n es igual a strlen y poner que por encima de la parte exterior del bucle for 952 00:43:13,985 --> 00:43:15,364 ¿así como? 953 00:43:15,364 --> 00:43:16,030 ANDI Peng: Sí. 954 00:43:16,030 --> 00:43:17,100 Usted podría hacer eso, absolutamente. 955 00:43:17,100 --> 00:43:19,970 La razón por la que tenemos aquí es porque la forma en que una de las obras de bucle 956 00:43:19,970 --> 00:43:23,500 es que se llama variable local en el sentido 957 00:43:23,500 --> 00:43:26,150 que todo lo que eres crear dentro del bucle for 958 00:43:26,150 --> 00:43:27,890 sólo existe en el interior del bucle for. 959 00:43:27,890 --> 00:43:31,530 >> Así que la única variable i existe en esos soportes. 960 00:43:31,530 --> 00:43:35,260 Y aquí las variables de N también sólo existe en esos soportes. 961 00:43:35,260 --> 00:43:39,350 Así que si usted fuera a utilizar strlen de palabra varias veces hasta abajo, 962 00:43:39,350 --> 00:43:42,230 absolutamente la mejor manera de hacerlo sería declarar hasta la parte superior 963 00:43:42,230 --> 00:43:43,563 por lo que no tiene que hacerlo una vez. 964 00:43:43,563 --> 00:43:45,420 Sí. 965 00:43:45,420 --> 00:43:47,670 AUDIENCIA: ¿Por qué tiene un nueva línea después de que el ciento 966 00:43:47,670 --> 00:43:51,300 ver si usted quiere poner todo las letras junto a él por separado? 967 00:43:51,300 --> 00:43:54,140 >> ANDI Peng: Oh, yo quería imprimirlas todas en cada línea. 968 00:43:54,140 --> 00:43:54,890 No importa. 969 00:43:54,890 --> 00:43:55,890 Sí, se trata de un formato. 970 00:43:55,890 --> 00:43:57,181 Esa es una buena pregunta, sin embargo. 971 00:43:57,181 --> 00:43:59,360 Sí, si quería imprimir todo en una sola línea, 972 00:43:59,360 --> 00:44:02,731 Yo no tendría el guión en. 973 00:44:02,731 --> 00:44:03,230 OK. 974 00:44:03,230 --> 00:44:06,880 ¿Todos bien? 975 00:44:06,880 --> 00:44:07,500 OK. 976 00:44:07,500 --> 00:44:08,000 Guay. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> Así que creo que he hablado suficiente. 979 00:44:14,750 --> 00:44:20,040 Turno de Ustedes se ejecute a través de la código y decirme lo que está mal aquí. 980 00:44:20,040 --> 00:44:21,560 ¿Dónde está el error? 981 00:44:21,560 --> 00:44:26,920 Así como usted puede ver, he declarado un nueva matriz de tipo cadena de clase llamada. 982 00:44:26,920 --> 00:44:30,220 Y he introducido Sam, Jess, y Kim en ella. 983 00:44:30,220 --> 00:44:33,400 Y estoy tratando de imprimir todos los elementos de la matriz. 984 00:44:33,400 --> 00:44:36,796 ¿Puede alguien decirme por qué esto me va a dar problemas? 985 00:44:36,796 --> 00:44:39,320 Te voy a dar 10 chicos segundo para pensar en esto. 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> OK. 988 00:44:56,619 --> 00:44:57,118 ¿Sí? 989 00:44:57,118 --> 00:45:01,972 >> AUDIENCIA: ¿Es el centro izquierda igual a 3 o [inaudible]? 990 00:45:01,972 --> 00:45:02,680 ANDI Peng: Correcto. 991 00:45:02,680 --> 00:45:06,784 Entonces, ¿cuántas veces es esta realidad va a correr a través de este circuito? 992 00:45:06,784 --> 00:45:07,620 >> AUDIENCIA: Cuatro. 993 00:45:07,620 --> 00:45:08,070 >> ANDI Peng: Exactamente. 994 00:45:08,070 --> 00:45:09,445 Va a través de cuatro veces. 995 00:45:09,445 --> 00:45:12,250 Se va a ejecutar a través de a los 0, 1, 2, y 3, 996 00:45:12,250 --> 00:45:15,200 debido a que su elemento es i es menor que o igual a 3. 997 00:45:15,200 --> 00:45:16,960 No va a dejar cuando es 2. 998 00:45:16,960 --> 00:45:18,800 Se va a mantener ir hasta que llega a 3. 999 00:45:18,800 --> 00:45:21,720 Y como sabemos, hay sólo tres elementos de nuestra gama actual. 1000 00:45:21,720 --> 00:45:27,260 >> Si intentamos acceder al cuarto elemento o el índice de 3, 1001 00:45:27,260 --> 00:45:30,357 usted va a golpear a algún lugar en la memoria que no existe. 1002 00:45:30,357 --> 00:45:31,690 Se llama el terminador nulo. 1003 00:45:31,690 --> 00:45:32,856 Nada va a estar allí. 1004 00:45:32,856 --> 00:45:35,324 Su equipo no se va a ser muy feliz contigo. 1005 00:45:35,324 --> 00:45:36,170 Sí. 1006 00:45:36,170 --> 00:45:38,430 ¿Alguien tiene preguntas sobre por qué lo que estaba sucediendo? 1007 00:45:38,430 --> 00:45:39,679 Eso es un espacio común de evitar. 1008 00:45:39,679 --> 00:45:40,712 Sí. 1009 00:45:40,712 --> 00:45:45,777 >> AUDIENCIA: No ¿El primero deslice también tienen una cadena de 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI Peng: No. 1011 00:45:46,360 --> 00:45:49,610 Así que, esencialmente, cuando usted está haciendo una matriz, 1012 00:45:49,610 --> 00:45:51,540 ese derecho soporte allí, que number-- todo 1013 00:45:51,540 --> 00:45:53,480 se dice que es la forma de muchos elementos que tienen. 1014 00:45:53,480 --> 00:45:55,840 No es en realidad diciendo me los índices de nada. 1015 00:45:55,840 --> 00:45:58,760 Así que en este caso, sé que quiero escribir con tres lugares, 1016 00:45:58,760 --> 00:46:02,690 con tres lugares físicos a Sostengo lo que quiera celebrar. 1017 00:46:02,690 --> 00:46:04,510 Así que por eso el número tres está ahí. 1018 00:46:04,510 --> 00:46:06,560 Sin embargo, si quería acceder a la realidad, 1019 00:46:06,560 --> 00:46:11,220 si lo que quería decir, printf número de soporte de clase, entonces 1020 00:46:11,220 --> 00:46:14,560 usted va a poner realmente el índice de física allí. 1021 00:46:14,560 --> 00:46:16,330 Sí, buena pregunta. 1022 00:46:16,330 --> 00:46:20,065 >> AUDIENCIA: Así es la física Índice supone que es [inaudible]? 1023 00:46:20,065 --> 00:46:20,940 ANDI Peng: Lo siento. 1024 00:46:20,940 --> 00:46:21,500 ¿Puedes hablar un poco? 1025 00:46:21,500 --> 00:46:24,208 >> AUDIENCIA: Así es el índice físico [Inaudible] cada una de las cajas? 1026 00:46:24,208 --> 00:46:25,260 [Inaudible]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI Peng: Sí. 1028 00:46:26,040 --> 00:46:28,970 Así que me voy a ir de nuevo a la derecha aquí. 1029 00:46:28,970 --> 00:46:31,120 Piense aquí. 1030 00:46:31,120 --> 00:46:32,820 Tenemos una matriz de tamaño 3. 1031 00:46:32,820 --> 00:46:35,540 Hay tres lugares, como, marcadores de posición física en aquí. 1032 00:46:35,540 --> 00:46:37,620 Pero están nombrados 0, 1 y 2. 1033 00:46:37,620 --> 00:46:40,700 Así que si quería acceder a ellos, el camino que yo les acceder 1034 00:46:40,700 --> 00:46:43,480 printf es de lo que quisiera aquí. 1035 00:46:43,480 --> 00:46:45,485 Usted tendría que imprimir el nombre de la misma, 1036 00:46:45,485 --> 00:46:47,610 porque entonces el ordenador sabe, oh, tengo que mirar 1037 00:46:47,610 --> 00:46:51,391 en esta matriz para el índice 0 ª. 1038 00:46:51,391 --> 00:46:51,890 Sí. 1039 00:46:51,890 --> 00:46:53,306 Pero el tamaño de la misma no cambia. 1040 00:46:53,306 --> 00:46:55,492 El tamaño es de 3, sin tener en cuenta de cómo se les etiqueta. 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 OK. 1043 00:46:58,820 --> 00:47:01,387 ¿Todos bien? 1044 00:47:01,387 --> 00:47:02,970 AUDIENCIA: Así que cada vez que [inaudible]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI Peng: OK. 1047 00:47:06,940 --> 00:47:13,270 Así que en este caso, no lo hacemos de verdad entrar en ella en estos momentos en el curso. 1048 00:47:13,270 --> 00:47:16,760 Pero saber que un string-- como yo dijo antes, una cadena es esencialmente 1049 00:47:16,760 --> 00:47:18,440 una serie de caracteres. 1050 00:47:18,440 --> 00:47:21,430 Así que si puedo crear un array de cadenas, que tipo de 1051 00:47:21,430 --> 00:47:24,430 tienen una gran variedad de gama de personajes, ¿no? 1052 00:47:24,430 --> 00:47:27,720 >> Así que en este caso, porque yo tener una matriz de cadenas, 1053 00:47:27,720 --> 00:47:31,340 si usted fuera a introducir una palabra muy larga, que todavía ocupa un solo espacio, 1054 00:47:31,340 --> 00:47:33,230 porque esa es la cadena. 1055 00:47:33,230 --> 00:47:37,492 Pero si tuviera que pensar en los personajes de esa matriz, 1056 00:47:37,492 --> 00:47:40,450 entonces eso es ocupar mucho más personajes que cualquiera de las otras palabras 1057 00:47:40,450 --> 00:47:41,372 son. 1058 00:47:41,372 --> 00:47:42,830 No es realmente importante para este momento. 1059 00:47:42,830 --> 00:47:44,921 Pero eso es sólo general cómo está funcionando. 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> OK. 1062 00:47:50,560 --> 00:47:55,840 Así que esto es algo que voy a dejar que hagas mucho en el transcurso del semestre. 1063 00:47:55,840 --> 00:47:57,500 Necesito descansar mi voz. 1064 00:47:57,500 --> 00:47:59,530 Ustedes necesita estimular ustedes mismos. 1065 00:47:59,530 --> 00:48:02,300 Muchos de ustedes probablemente tienen que dormir en este momento. 1066 00:48:02,300 --> 00:48:05,960 Estoy introduciendo problemas aleatorios donde nosotros como una clase o 1067 00:48:05,960 --> 00:48:09,480 con un compañero a tu lado van para pasar un par de minutos discutiendo 1068 00:48:09,480 --> 00:48:14,980 sobre cómo íbamos a ir sobre la solución o la creación de un programa como este. 1069 00:48:14,980 --> 00:48:17,100 >> Así que ahora mismo, queremos para crear un program-- 1070 00:48:17,100 --> 00:48:19,560 vamos a llamarlo upper.c-- que los conversos 1071 00:48:19,560 --> 00:48:24,787 una palabra en minúsculas a una clase alta mayúscula string--, lo siento. 1072 00:48:24,787 --> 00:48:26,370 Palabra en cadenas, lo siento, es sinónimo. 1073 00:48:26,370 --> 00:48:28,370 Voy a cambiarlos a significar lo mismo. 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> Sí. 1076 00:48:33,499 --> 00:48:34,540 Tomar un par de minutos. 1077 00:48:34,540 --> 00:48:37,130 No tiene que ser escrito en cualquier idioma. 1078 00:48:37,130 --> 00:48:39,890 Justo en el código pseudocódigo o lógicamente la forma en que lo haría aun 1079 00:48:39,890 --> 00:48:42,083 ir haciendo tal problema. 1080 00:48:42,083 --> 00:48:42,583 Sí. 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [CONVERSACIÓN SIDE] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> También me di cuenta de que ustedes can-- Yo como que veo ya el programa. 1085 00:49:22,130 --> 00:49:24,600 Supongo que mi falta de modo de presentador es un problema. 1086 00:49:24,600 --> 00:49:27,410 Pero está bien. 1087 00:49:27,410 --> 00:49:30,410 >> [CONVERSACIÓN SIDE] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Sí, por favor, chicos. 1090 00:50:04,380 --> 00:50:05,400 Venga conseguir caramelos. 1091 00:50:05,400 --> 00:50:06,372 Venga conseguir caramelos. 1092 00:50:06,372 --> 00:50:07,698 >> AUDIENCIA: ¡Sí! 1093 00:50:07,698 --> 00:50:09,958 >> [CONVERSACIÓN SIDE] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI Peng: También, sí, Voy a empezar lanzando caramelos 1096 00:50:18,100 --> 00:50:20,280 a las personas que no responden a las preguntas. 1097 00:50:20,280 --> 00:50:22,260 Así que todos debemos responder preguntas. 1098 00:50:22,260 --> 00:50:24,895 O supongo que la gente que no responder a las preguntas. 1099 00:50:24,895 --> 00:50:26,070 Sí, revés. 1100 00:50:26,070 --> 00:50:28,570 >> [CONVERSACIÓN SIDE] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 AUDIENCIA: [inaudible] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI Peng: Sí. 1105 00:51:18,340 --> 00:51:19,340 Sí. 1106 00:51:19,340 --> 00:51:22,840 >> [CONVERSACIÓN SIDE] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> Muy bien, chicos. 1109 00:51:41,590 --> 00:51:44,731 Tomemos, como, 10 segundos más. 1110 00:51:44,731 --> 00:51:48,210 >> [CONVERSACIÓN SIDE] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> Ok muchachos. 1113 00:52:11,750 --> 00:52:14,920 Así que antes de empezar a tratar de en realidad físicamente escribir código, 1114 00:52:14,920 --> 00:52:20,650 un buen hábito para desarrollar es que queremos primera clase de la razón 1115 00:52:20,650 --> 00:52:22,737 lógicamente cómo íbamos a hacerlo. 1116 00:52:22,737 --> 00:52:24,570 Usted quiere asegurarse de que, antes de que físicamente 1117 00:52:24,570 --> 00:52:27,210 empezar a tratar de codificar en Mario, que haga 1118 00:52:27,210 --> 00:52:28,870 Asegúrese de que usted tiene su pseudocódigo. 1119 00:52:28,870 --> 00:52:31,235 Que se está llevando a través de lo que necesita para crear de manera 1120 00:52:31,235 --> 00:52:33,360 que, cuando físicamente escribir su programa de tarde, 1121 00:52:33,360 --> 00:52:36,640 usted es más capaz de detectar errores en el código y cosas por el estilo. 1122 00:52:36,640 --> 00:52:40,460 >> Así que vamos a empezar justo por-- en Inglés, en pseudocódigo, 1123 00:52:40,460 --> 00:52:43,320 ¿alguien quiere dar mí una explicación genérica 1124 00:52:43,320 --> 00:52:46,250 de cómo íbamos a ir haciendo esto? 1125 00:52:46,250 --> 00:52:48,102 Sí. 1126 00:52:48,102 --> 00:52:49,664 >> AUDIENCIA: [inaudible]. 1127 00:52:49,664 --> 00:52:50,830 ANDI Peng: Claro, no se preocupe. 1128 00:52:50,830 --> 00:52:57,233 AUDIENCIA: ¿Se puede pedir a o pedir alguien para conseguir cadena 1-- sí, cuerda, 1129 00:52:57,233 --> 00:52:58,160 y entonces-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI Peng: Sí, por lo que este es un buen comienzo. 1131 00:52:59,826 --> 00:53:01,972 Voy a empezar a escribir, lo siento, como usted habla. 1132 00:53:01,972 --> 00:53:02,471 Asi que-- 1133 00:53:02,471 --> 00:53:05,698 >> AUDIENCIA: --el minúsculas los números son más altos, ¿no? 1134 00:53:05,698 --> 00:53:08,519 O las letras minúsculas tienen altos números? 1135 00:53:08,519 --> 00:53:09,310 ANDI Peng: Exactamente. 1136 00:53:09,310 --> 00:53:16,156 AUDIENCIA: Entonces restamos 32 de cualquier [inaudible]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI Peng: Grande. 1139 00:53:29,870 --> 00:53:35,020 Así que tipo de tener un sentido general de cómo trabajar sobre este problema. 1140 00:53:35,020 --> 00:53:40,060 Sabiendo que hemos tipo de Aprendimos la forma física que las cadenas 1141 00:53:40,060 --> 00:53:43,320 se almacenan en la memoria, lo que haces ya 1142 00:53:43,320 --> 00:53:45,920 Sabes que vas a probablemente tiene que escribir en el código 1143 00:53:45,920 --> 00:53:48,288 con el fin de moverse a través de la cadena? 1144 00:53:48,288 --> 00:53:49,259 >> AUDIENCIA: Para bucle. 1145 00:53:49,259 --> 00:53:50,550 ANDI Peng: Un bucle for, exactamente. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Excelente. 1148 00:53:57,220 --> 00:54:00,539 Así que tipo de tener un genérico pseudocódigo escrito 1149 00:54:00,539 --> 00:54:02,330 ese tipo de está dando notas de cómo se 1150 00:54:02,330 --> 00:54:03,900 se movería sobre la solución del problema. 1151 00:54:03,900 --> 00:54:06,150 Ahora que tiene esto, puede hacer referencia para más tarde 1152 00:54:06,150 --> 00:54:08,233 cuando usted está tratando de en realidad escribir el código. 1153 00:54:08,233 --> 00:54:10,240 Así que en realidad podemos ir aquí. 1154 00:54:10,240 --> 00:54:25,130 Y tengo una función llamada upper.c-- allí es-- apenas de una plantilla en blanco 1155 00:54:25,130 --> 00:54:28,510 en este momento que ustedes van a Me gustaría saber sobre cómo escribir 1156 00:54:28,510 --> 00:54:30,430 esta línea de no code-- línea de código. 1157 00:54:30,430 --> 00:54:32,890 Será múltiples líneas de código. 1158 00:54:32,890 --> 00:54:35,710 >> Al iniciar cualquier tipo del conjunto de procesadores en blanco, lo que es 1159 00:54:35,710 --> 00:54:37,418 lo primero que necesito recordar a hacer? 1160 00:54:37,418 --> 00:54:39,290 >> AUDIENCIA: [inaudible]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI Peng: Gran Sip. 1162 00:54:41,000 --> 00:54:41,500 Incluir. 1163 00:54:41,500 --> 00:54:44,850 1164 00:54:44,850 --> 00:54:47,130 stdio.h. 1165 00:54:47,130 --> 00:54:49,640 A menudo este es uno de Los errores más fáciles personas 1166 00:54:49,640 --> 00:54:51,598 hará que cuando están escritura, es que van a 1167 00:54:51,598 --> 00:54:54,180 se olvide de incluir un importante biblioteca que necesitan. 1168 00:54:54,180 --> 00:54:57,689 Así que si sus horarios de oficina y usted es como, No sé por qué mi código no funciona. 1169 00:54:57,689 --> 00:54:59,230 ¿Me puede decir por qué no está funcionando? 1170 00:54:59,230 --> 00:55:00,730 Vamos a decir qué #include? 1171 00:55:00,730 --> 00:55:02,520 Usted debe #include ella. 1172 00:55:02,520 --> 00:55:03,270 OK. 1173 00:55:03,270 --> 00:55:07,230 >> Así que tenemos el estándar de E / S aquí. 1174 00:55:07,230 --> 00:55:10,740 ¿Es esa la única biblioteca vamos a necesitar aquí? 1175 00:55:10,740 --> 00:55:12,681 ¿Qué más vamos a hacer? 1176 00:55:12,681 --> 00:55:13,180 Apenado. 1177 00:55:13,180 --> 00:55:14,562 Alguien acaba de gritar hacia fuera? 1178 00:55:14,562 --> 00:55:15,666 >> AUDIENCIA: [inaudible]. 1179 00:55:15,666 --> 00:55:16,666 ANDI Peng: Hay que ir. 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 OK. 1182 00:55:21,440 --> 00:55:26,070 ¿Y cómo hago para comenzar cualquier tipo de la función, cualquier tipo de función principal 1183 00:55:26,070 --> 00:55:28,760 dentro de nuestro programa? 1184 00:55:28,760 --> 00:55:30,020 Int principal. 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 OK. 1187 00:55:35,030 --> 00:55:35,970 ¿Qué puedo poner aquí dentro? 1188 00:55:35,970 --> 00:55:37,640 ¿Cuál es la primera cosa que quieres hacer? 1189 00:55:37,640 --> 00:55:39,910 Si queremos conseguir un cadena del usuario, 1190 00:55:39,910 --> 00:55:43,870 ¿qué vamos a tener que hacer en esta primera línea? 1191 00:55:43,870 --> 00:55:46,120 Lo sentimos, ustedes simplemente se siente libertad para hablar y en voz alta. 1192 00:55:46,120 --> 00:55:47,123 Sólo gritar lo que sea. 1193 00:55:47,123 --> 00:55:48,772 >> AUDIENCIA: Pida al usuario? 1194 00:55:48,772 --> 00:55:49,980 ANDI Peng: ¿Cómo lo hacemos? 1195 00:55:49,980 --> 00:55:51,873 Ask-- voy a escribir "pedir al usuario"? 1196 00:55:51,873 --> 00:55:52,600 >> AUDIENCIA: Printf. 1197 00:55:52,600 --> 00:55:54,341 >> ANDI Peng: OK. 1198 00:55:54,341 --> 00:55:54,840 Printf. 1199 00:55:54,840 --> 00:55:57,372 ¿Qué es lo que quiero printf? 1200 00:55:57,372 --> 00:55:58,776 >> AUDIENCIA: Escriba algo. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI Peng: Al igual que? 1203 00:56:03,840 --> 00:56:05,430 Chicos, pretenden como si yo fuera un ordenador. 1204 00:56:05,430 --> 00:56:08,475 Físicamente me dicen cada paso que tengo que escribir aquí? 1205 00:56:08,475 --> 00:56:09,600 ¿Estoy haciendo algo mal? 1206 00:56:09,600 --> 00:56:10,743 ¿Debería haber escrito algo? 1207 00:56:10,743 --> 00:56:11,690 >> AUDIENCIA: Usted necesita comillas. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI Peng: Necesito cotizaciones? 1209 00:56:12,380 --> 00:56:12,880 OK. 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 OK. 1212 00:56:16,297 --> 00:56:17,698 >> AUDIENCIA: Y entonces nueva línea. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Punto y coma. 1215 00:56:22,465 --> 00:56:23,340 ANDI Peng: punto y coma? 1216 00:56:23,340 --> 00:56:24,060 OK. 1217 00:56:24,060 --> 00:56:24,560 Bien. 1218 00:56:24,560 --> 00:56:27,060 >> AUDIENCIA: Y tal vez especificar que usted lo quiere en minúsculas? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI Peng: Grande. 1221 00:56:31,415 --> 00:56:33,540 Ustedes se ríen de mí olvidarse de poner un punto y coma. 1222 00:56:33,540 --> 00:56:36,350 Te garantizo que en algún lugar en el curso de esta clase, 1223 00:56:36,350 --> 00:56:38,260 usted se olvide de poner un punto y coma, y 1224 00:56:38,260 --> 00:56:41,116 le llevará tres horas a la figura por qué su código no funciona. 1225 00:56:41,116 --> 00:56:42,240 Nos ha pasado a todos nosotros. 1226 00:56:42,240 --> 00:56:43,950 Esto sucederá probablemente a usted. 1227 00:56:43,950 --> 00:56:46,352 Póngase en un buen hábito de usar puntos y comas. 1228 00:56:46,352 --> 00:56:46,852 OK. 1229 00:56:46,852 --> 00:56:49,010 >> AUDIENCIA: ¿Usted desea para hacer la barra invertida en? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI Peng: Claro. 1231 00:56:50,398 --> 00:56:51,856 ¿Quieres hacer la barra invertida en? 1232 00:56:51,856 --> 00:56:53,020 >> AUDIENCIA: Sí. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI Peng: Grande. 1234 00:56:54,330 --> 00:56:54,830 OK. 1235 00:56:54,830 --> 00:56:57,872 ¿Que hago después? 1236 00:56:57,872 --> 00:56:58,964 >> AUDIENCIA: Obtener cadena. 1237 00:56:58,964 --> 00:56:59,880 ANDI Peng: Obtener cadena. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 Entonces, ¿qué escribo? 1240 00:57:03,830 --> 00:57:04,233 Alguien? 1241 00:57:04,233 --> 00:57:05,040 >> AUDIENCIA: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI Peng: String s. 1243 00:57:05,873 --> 00:57:07,251 AUDIENCIA: GetString. 1244 00:57:07,251 --> 00:57:09,000 ANDI Peng: Alguien, puedes decirme dónde 1245 00:57:09,000 --> 00:57:12,000 esta función GetString está viniendo? 1246 00:57:12,000 --> 00:57:13,660 >> AUDIENCIA: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI Peng: string.h? 1248 00:57:15,256 --> 00:57:16,715 ¿Crees que es de string.h? 1249 00:57:16,715 --> 00:57:17,830 >> AUDIENCIA: [inaudible]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI Peng: Hay que ir. 1251 00:57:18,830 --> 00:57:21,280 Es de CS50.h. 1252 00:57:21,280 --> 00:57:24,530 Si siempre está confundido en donde un archivo de biblioteca es o un archivo de cabecera es, 1253 00:57:24,530 --> 00:57:28,450 google literalmente string.h, y te diré 1254 00:57:28,450 --> 00:57:30,450 ¿cuáles son todas las funciones que están en string.h. 1255 00:57:30,450 --> 00:57:31,340 OK. 1256 00:57:31,340 --> 00:57:35,210 >> Así que ahora que he creado una cadena y he solicitar al usuario que, 1257 00:57:35,210 --> 00:57:38,770 Me ha almacenado en una variable s con nombre, ¿qué tengo que hacer ahora? 1258 00:57:38,770 --> 00:57:40,652 >> AUDIENCIA: Compruebe si está en minúsculas. 1259 00:57:40,652 --> 00:57:41,360 ANDI Peng: Lo siento? 1260 00:57:41,360 --> 00:57:42,545 AUDIENCIA: Compruebe si está en minúsculas. 1261 00:57:42,545 --> 00:57:44,045 ANDI Peng: Muy bien, vamos a hacer eso. 1262 00:57:44,045 --> 00:57:45,857 ¿Cómo puedo hacer eso? 1263 00:57:45,857 --> 00:57:47,940 En realidad, para los fines de la clase en este momento, 1264 00:57:47,940 --> 00:57:50,330 sólo vamos a asumir que todo 1265 00:57:50,330 --> 00:57:52,620 que de entrada ya está en minúsculas. 1266 00:57:52,620 --> 00:57:55,430 Si quería comprobar, lo haría simplemente añada una sentencia condicional 1267 00:57:55,430 --> 00:57:59,640 que comprobó, que corrió a través de cada elemento de la matriz única 1268 00:57:59,640 --> 00:58:02,540 y comprobado si es entre ciertos valores. 1269 00:58:02,540 --> 00:58:05,627 Me olvido de lo que el número de los valores de minúsculas son. 1270 00:58:05,627 --> 00:58:07,210 Usted puede mirar para arriba en la tabla ASCII. 1271 00:58:07,210 --> 00:58:08,800 Pero sí, es un muy buen punto. 1272 00:58:08,800 --> 00:58:11,758 Pero en este momento, sólo vamos a asumir que todas las cuerdas que de entrada 1273 00:58:11,758 --> 00:58:13,130 son en minúsculas. 1274 00:58:13,130 --> 00:58:13,870 OK. 1275 00:58:13,870 --> 00:58:18,069 >> Entonces, ¿cómo hago para este problema siguiente? 1276 00:58:18,069 --> 00:58:18,860 AUDIENCIA: Para bucle. 1277 00:58:18,860 --> 00:58:19,340 ANDI Peng: Para lazo? 1278 00:58:19,340 --> 00:58:19,839 OK. 1279 00:58:19,839 --> 00:58:20,847 Dime lo que escribir. 1280 00:58:20,847 --> 00:58:25,230 >> AUDIENCIA: Para int i es igual a 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI Peng: OK. 1282 00:58:27,230 --> 00:58:36,350 >> AUDIENCIA: Oh, en realidad, entonces usted hacer una coma y hacer n es igual a strlen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI Peng: cosa tan importante que yo creo que ella se dio cuenta aquí 1284 00:58:38,940 --> 00:58:42,936 es que no teníamos que decir int n la segunda vez que hizo esto. 1285 00:58:42,936 --> 00:58:45,060 Sólo tienes que saber que en una de bucle cuando se está declarando, 1286 00:58:45,060 --> 00:58:47,934 que realmente no necesita el int de la segunda vez que haces una variable. 1287 00:58:47,934 --> 00:58:51,202 Se puede decir n strlen. 1288 00:58:51,202 --> 00:58:52,620 >> AUDIENCIA: De s. 1289 00:58:52,620 --> 00:58:53,510 >> ANDI Peng: s. 1290 00:58:53,510 --> 00:58:54,706 OK. 1291 00:58:54,706 --> 00:58:58,370 >> AUDIENCIA: Entonces un punto y coma. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI Peng: Claro. 1293 00:59:00,130 --> 00:59:04,050 >> AUDIENCIA: Y entonces [inaudible] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Entonces i ++. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI Peng: Grande. 1297 00:59:11,780 --> 00:59:12,280 Correcto. 1298 00:59:12,280 --> 00:59:14,690 ¿Qué queremos interior de este bucle for ahora? 1299 00:59:14,690 --> 00:59:17,820 Recuerde, si vamos a ejecutar a través de una cadena y ejecutar a través de una matriz, 1300 00:59:17,820 --> 00:59:19,287 queremos comprobar las cosas en ella. 1301 00:59:19,287 --> 00:59:20,370 ¿Qué vamos a necesitar? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Esta es una especie de la parte difícil ahora. 1304 00:59:26,900 --> 00:59:27,960 Alguien tiene una conjetura? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> OK. 1307 00:59:34,690 --> 00:59:37,830 Así que primero, ¿cómo incluso el acceso? 1308 00:59:37,830 --> 00:59:41,610 ¿Cómo podemos siquiera primer cheque o acceder a un elemento de la matriz? 1309 00:59:41,610 --> 00:59:42,920 como hacemos eso? 1310 00:59:42,920 --> 00:59:47,120 ¿Cuál es la notación que usamos para hacer eso? 1311 00:59:47,120 --> 00:59:50,920 ¿Cuál es el nombre de esta serie se llama? 1312 00:59:50,920 --> 00:59:52,400 Se llama s, ¿no? 1313 00:59:52,400 --> 00:59:54,850 >> Recuerde, cualquier cadena es siempre una matriz. 1314 00:59:54,850 --> 00:59:58,210 Así soporte s i, ¿verdad? 1315 00:59:58,210 --> 01:00:01,360 Porque ese es el valor actual o valor del índice que estamos comprobando. 1316 01:00:01,360 --> 01:00:05,156 Y vamos a establecer que la igualdad a-- queremos un valor en minúsculas, ¿verdad? 1317 01:00:05,156 --> 01:00:07,530 Queremos convertir esa lower-- lo siento, queremos una mayúscula. 1318 01:00:07,530 --> 01:00:10,014 Queremos convertir la minúscula valor en una mayúscula. 1319 01:00:10,014 --> 01:00:11,805 Y así como-- Lo siento, ¿Cuál es tu nombre? 1320 01:00:11,805 --> 01:00:12,580 >> AUDIENCIA: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI Peng: Lo siento? 1322 01:00:12,940 --> 01:00:13,280 >> AUDIENCIA: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI Peng: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Al igual que Heidi dijo Inicialmente, estamos probablemente 1325 01:00:15,850 --> 01:00:20,330 va a necesitar el-- estamos probablemente va a tener que restar 1326 01:00:20,330 --> 01:00:22,630 32 desde cualquier CHARC que es, ¿no? 1327 01:00:22,630 --> 01:00:24,680 Debido a que en una ASCII mesa, la diferencia 1328 01:00:24,680 --> 01:00:27,790 entre una letra minúscula y una letra mayúscula es 32. 1329 01:00:27,790 --> 01:00:31,290 Así que cuando estamos haciendo esto, probablemente estamos va a querer restar 32, ¿no? 1330 01:00:31,290 --> 01:00:33,910 >> Así que vamos a hacer s i. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 ¿Todo el mundo entiende por qué lo hice? 1333 01:00:41,200 --> 01:00:45,760 Porque ahora, en nuestra serie, estamos comprobando el índice 0 ª, ¿verdad? 1334 01:00:45,760 --> 01:00:49,190 Y en el índice 0 ª del cadena, que es el primer carácter. 1335 01:00:49,190 --> 01:00:51,820 Y ese carácter que vamos a asumir que es minúscula. 1336 01:00:51,820 --> 01:00:55,980 Si queremos que sea mayúscula, nos tiene que restar 32 de su valor, 1337 01:00:55,980 --> 01:00:58,620 porque en nuestra ASCII mesa, así es como lo hacemos 1338 01:00:58,620 --> 01:01:01,600 correspondiente a la siguiente valor que hace que sea mayúsculas. 1339 01:01:01,600 --> 01:01:03,714 ¿Todo el mundo entiende eso? 1340 01:01:03,714 --> 01:01:04,213 Sí. 1341 01:01:04,213 --> 01:01:06,530 >> AUDIENCIA: ¿Podría usted también no minúsculas un minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI Peng: Sí, así que eso es realmente buena. 1343 01:01:08,080 --> 01:01:10,455 Voy a volver a eso pregunta después de que hacemos esto. 1344 01:01:10,455 --> 01:01:11,060 Sí. 1345 01:01:11,060 --> 01:01:13,940 Y luego si quiero ver lo que está pasando, 1346 01:01:13,940 --> 01:01:16,180 Probablemente voy a que desee imprimir, ¿verdad? 1347 01:01:16,180 --> 01:01:19,930 Que alguien me diga lo que Quiero imprimir aquí. 1348 01:01:19,930 --> 01:01:29,160 >> AUDIENCIA: ciento printf c barra invertida [inaudible]. 1349 01:01:29,160 --> 01:01:33,570 Ese es el valor de [inaudible] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI Peng: s i, lo siento? 1351 01:01:34,614 --> 01:01:35,530 AUDIENCIA: [inaudible]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI Peng: No sé. 1354 01:01:39,550 --> 01:01:40,600 ¿Qué piensas? 1355 01:01:40,600 --> 01:01:44,016 >> AUDIENCIA: Bueno, yo wouldn't-- Supongo que no me bring-- 1356 01:01:44,016 --> 01:01:46,944 Me gustaría llevarlo a cabo el en el interior, ya que [inaudible]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI Peng: Oh, usted habría hecho eso? 1359 01:01:51,392 --> 01:01:53,867 AUDIENCIA: Sí. 1360 01:01:53,867 --> 01:01:56,700 ANDI Peng: Vamos a dejarlo así el camino que es, y voy a explicar por qué más tarde. 1361 01:01:56,700 --> 01:01:58,533 Recuerde, incluso cuando usted tener un marcador de posición, 1362 01:01:58,533 --> 01:02:00,701 usted quiere poner paréntesis alrededor. 1363 01:02:00,701 --> 01:02:01,200 Correcto. 1364 01:02:01,200 --> 01:02:04,810 Así que esto debe ser una función sólida aquí. 1365 01:02:04,810 --> 01:02:06,370 Vamos a correr y ver si se compila. 1366 01:02:06,370 --> 01:02:08,750 Hacer superior. 1367 01:02:08,750 --> 01:02:09,250 UH oh. 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 Eso no parece demasiado bueno. 1370 01:02:13,340 --> 01:02:14,507 ¿Por qué está pasando esto? 1371 01:02:14,507 --> 01:02:17,340 Al igual que con cualquier error, quieres ir atrás y comenzar con la primera, 1372 01:02:17,340 --> 01:02:20,630 porque por lo general las causas de un error un montón de otros errores después de ella. 1373 01:02:20,630 --> 01:02:26,700 Aquí vemos upper.c: 18: 25, que dice yo en este programa denominado upper.c, 1374 01:02:26,700 --> 01:02:33,800 en la línea 18, el error de declarar implícitamente biblioteca de funciones strlen con el tipo 1375 01:02:33,800 --> 01:02:36,330 bla unassigned--, no sé ¿qué pasa después de eso. 1376 01:02:36,330 --> 01:02:39,990 >> Todo lo que me está diciendo en este momento está de que algo está pasando en el strlen. 1377 01:02:39,990 --> 01:02:43,520 Y el equipo está confundido, porque es como, no sé lo que strlen es? 1378 01:02:43,520 --> 01:02:45,520 ¿Qué significa que, probablemente, le dirá que se está perdiendo? 1379 01:02:45,520 --> 01:02:46,490 >> AUDIENCIA: Te estás perdiendo [inaudible]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI Peng: Tienes razón. 1381 01:02:47,630 --> 01:02:49,510 Exactamente. 1382 01:02:49,510 --> 01:02:52,140 Así que esto es en donde está importante asegurarse 1383 01:02:52,140 --> 01:02:56,970 que todas las funciones que utiliza en su código está teniendo la cabecera correcta 1384 01:02:56,970 --> 01:02:59,660 declararse en la biblioteca, o bien usted va a obtener un montón de errores 1385 01:02:59,660 --> 01:03:01,150 y su código no va para saber lo que está pasando. 1386 01:03:01,150 --> 01:03:03,050 Así que vamos a incluir string.h aquí. 1387 01:03:03,050 --> 01:03:06,270 >> Ahora cuando tratamos de recopilar superior. 1388 01:03:06,270 --> 01:03:08,410 Compilar correctamente. 1389 01:03:08,410 --> 01:03:09,960 Vamos a ejecutar este programa. 1390 01:03:09,960 --> 01:03:12,000 Así que escribir algo en minúsculas. 1391 01:03:12,000 --> 01:03:14,920 ¿Qué es lo que ustedes quieren que escriba? 1392 01:03:14,920 --> 01:03:16,546 Preguntad por algo. 1393 01:03:16,546 --> 01:03:17,920 Muy bien, Charly acaba de entrar. 1394 01:03:17,920 --> 01:03:18,990 Vamos a escribir el nombre de Charly. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly en minúsculas. 1397 01:03:22,840 --> 01:03:27,742 Y es de esperar, con suerte, esto es va a gritar y escupir 1398 01:03:27,742 --> 01:03:28,575 Charly en mayúsculas. 1399 01:03:28,575 --> 01:03:30,830 ¡Hurra! 1400 01:03:30,830 --> 01:03:33,430 no todo el mundo entiende cómo Fui sobre solucionar eso? 1401 01:03:33,430 --> 01:03:36,190 La forma en que puedo manipular usando números enteros 1402 01:03:36,190 --> 01:03:39,410 algo que para resolver Yo quiero hacer en cuerdas, 1403 01:03:39,410 --> 01:03:44,390 porque los caracteres y números enteros puede se hace referencia en la misma manera porque 1404 01:03:44,390 --> 01:03:45,540 de la cartografía ASCII. 1405 01:03:45,540 --> 01:03:52,890 >> Así que volver a su punto, si querido poner aquí en lugar de 32 1406 01:03:52,890 --> 01:03:58,959 A mayúscula minúscula menos un igual eso, que funcionaría igual de bien, 1407 01:03:58,959 --> 01:04:01,750 porque eso es simplemente la diferencia entre esos dos valores. 1408 01:04:01,750 --> 01:04:09,570 Si quiero hacer este charly nuevo--. 1409 01:04:09,570 --> 01:04:10,320 Oh no. 1410 01:04:10,320 --> 01:04:11,820 Creo que fuimos por el camino equivocado, sí? 1411 01:04:11,820 --> 01:04:13,260 >> AUDIENCIA: [inaudible] minúsculas a. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI Peng: Hay que ir. 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 Sí. 1415 01:04:22,880 --> 01:04:24,920 Y fuera escupe charly. 1416 01:04:24,920 --> 01:04:28,020 Así que tenga cuidado cuando estás valores restando 1417 01:04:28,020 --> 01:04:30,400 recordar cuál es mayor que el otro. 1418 01:04:30,400 --> 01:04:35,220 Por ejemplo, aquí se me olvidó que es en realidad una minúscula 1419 01:04:35,220 --> 01:04:38,540 mayor que en mayúscula A. Así que cuando me tratado de restar a la inversa 1420 01:04:38,540 --> 01:04:40,600 alrededor, me dieron negativo 32. 1421 01:04:40,600 --> 01:04:42,800 Y mi equipo era como, No sé lo que es eso. 1422 01:04:42,800 --> 01:04:45,810 Es la probabilidad sólo algunos al azar valor que no es muy bueno. 1423 01:04:45,810 --> 01:04:48,760 Y así que asegúrese de que usted es restando en la longitud correcta 1424 01:04:48,760 --> 01:04:52,831 para encontrar el carácter que desea. 1425 01:04:52,831 --> 01:04:53,330 OK. 1426 01:04:53,330 --> 01:04:58,550 ¿Hay alguien confundido sobre cómo anduvo escribir esta función? 1427 01:04:58,550 --> 01:04:59,180 OK. 1428 01:04:59,180 --> 01:05:04,830 Así que en realidad, una función ya existe en la biblioteca llamada ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Llamada ctype.h de la biblioteca. 1430 01:05:06,417 --> 01:05:08,500 Esta función es en realidad ya escrito para usted. 1431 01:05:08,500 --> 01:05:10,820 Se llama a la superior. 1432 01:05:10,820 --> 01:05:13,027 >> Y así, a los efectos de este conjunto de procesadores, vas 1433 01:05:13,027 --> 01:05:15,860 para encontrar que usted realmente desea utilizar muchas de las funciones contenidas 1434 01:05:15,860 --> 01:05:17,390 dentro de la biblioteca ctype. 1435 01:05:17,390 --> 01:05:21,040 Para es superior, para bajar, superior, es lower-- esas son todas las funciones 1436 01:05:21,040 --> 01:05:24,914 que usted será capaz de utilizar muy, muy rápidamente en su propio código que 1437 01:05:24,914 --> 01:05:26,080 hace exactamente lo que esto hace. 1438 01:05:26,080 --> 01:05:28,941 Escribimos la manera de convertir una cadena a mayúsculas. 1439 01:05:28,941 --> 01:05:31,440 Pero esto es en realidad el código que alguien más ha escrito 1440 01:05:31,440 --> 01:05:33,800 y que se puede acceder a través de una función diferente. 1441 01:05:33,800 --> 01:05:34,300 ¿Sí? 1442 01:05:34,300 --> 01:05:39,570 >> AUDIENCIA: ¿Así que simplemente copiar una está ahí y que lo haga por cada carta? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI Peng: Sí, porque yo no lo hago preocuparse por los valores de a. 1444 01:05:42,070 --> 01:05:44,540 Yo sólo me importa que la diferencia entre ellos es 32, ¿no? 1445 01:05:44,540 --> 01:05:48,210 La diferencia entre minúsculas b mayúscula y B es también 32. 1446 01:05:48,210 --> 01:05:50,860 Y la diferencia entre c y C mayúscula siempre es 32. 1447 01:05:50,860 --> 01:05:53,235 >> Sólo tengo que preocuparse por el diferencia entre los dos, 1448 01:05:53,235 --> 01:05:56,666 porque todas las letras seguir el mismo patrón, ¿no? 1449 01:05:56,666 --> 01:05:58,540 Si tengo la diferencia entre uno de ellos, 1450 01:05:58,540 --> 01:06:01,050 Yo sé cuál es la diferencia entre todos ellos es. 1451 01:06:01,050 --> 01:06:01,740 Buena pregunta. 1452 01:06:01,740 --> 01:06:04,090 Sí. 1453 01:06:04,090 --> 01:06:06,660 ¿Todos bien? 1454 01:06:06,660 --> 01:06:09,080 OK. 1455 01:06:09,080 --> 01:06:09,580 Oop. 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> OK. 1458 01:06:15,270 --> 01:06:20,310 Así que otro concepto que es va a ser muy útil, ya que 1459 01:06:20,310 --> 01:06:22,570 continuar desarrollando su código es esta idea 1460 01:06:22,570 --> 01:06:25,430 de crear funciones o abstracción. 1461 01:06:25,430 --> 01:06:28,479 Así que ahora, todos hemos tomado álgebra. 1462 01:06:28,479 --> 01:06:31,770 En álgebra, se les enseña que hay esta cosa maravillosa llamada una función 1463 01:06:31,770 --> 01:06:35,300 máquina, donde si entrada de un tipo de número, 1464 01:06:35,300 --> 01:06:38,720 que corre a través de esta función maravillosa y hace estallar una salida diferente, ¿no? 1465 01:06:38,720 --> 01:06:42,220 En el código, lo mismo sucede en cualquier tipo de función. 1466 01:06:42,220 --> 01:06:48,230 >> Así que pude físicamente escribir en mi cuerpo de mi código 1467 01:06:48,230 --> 01:06:52,357 una declaración principal que realmente hace cualquiera que sea el cuerpo del código está haciendo. 1468 01:06:52,357 --> 01:06:54,940 Pero fuera de eso, también puede escribir muchas funciones diferentes 1469 01:06:54,940 --> 01:06:56,320 que hacer muchas cosas diferentes. 1470 01:06:56,320 --> 01:06:58,570 Por ejemplo, ya hemos comenzado a usar algunos de ellos. 1471 01:06:58,570 --> 01:07:00,610 Printf-- que es una función que alguien más 1472 01:07:00,610 --> 01:07:02,870 ya ha escrito que podemos llamar a nuestro código. 1473 01:07:02,870 --> 01:07:05,410 Para upper-- en este caso, upper-- es otra función 1474 01:07:05,410 --> 01:07:07,330 hemos escrito que puede llamar a nuestro código. 1475 01:07:07,330 --> 01:07:09,520 Y así que supongo qué hacer incluso tenemos funciones? 1476 01:07:09,520 --> 01:07:12,100 ¿Por qué no simplemente plop todos en la misma línea de código? 1477 01:07:12,100 --> 01:07:13,730 Esto hace que sea fácil para todos. 1478 01:07:13,730 --> 01:07:19,200 >> Pues bien, el razonamiento detrás de esa es, en primer lugar, la organización. 1479 01:07:19,200 --> 01:07:21,880 Es realmente molesto ir a través de código de alguien 1480 01:07:21,880 --> 01:07:25,110 y una función como printf. 1481 01:07:25,110 --> 01:07:28,570 Si ustedes realmente sabía lo que el función printf implicaba escribir, 1482 01:07:28,570 --> 01:07:30,530 es, como, 1.000 líneas de código. 1483 01:07:30,530 --> 01:07:32,357 >> Si cada vez que quería a printf algo, 1484 01:07:32,357 --> 01:07:35,440 Tuve que escribir 1.000 líneas de código, que sería muy molesto para leer, 1485 01:07:35,440 --> 01:07:36,290 ¿derecho? 1486 01:07:36,290 --> 01:07:38,860 Es por eso que acabamos de creado esta función abstracta 1487 01:07:38,860 --> 01:07:41,670 que ya tenemos a alguien más ha escrito en otro lugar. 1488 01:07:41,670 --> 01:07:44,920 Y cada vez que tenemos que usarlo en nuestro código, sólo tiene que decir printf. 1489 01:07:44,920 --> 01:07:48,070 Y es capaz de utilizar la función alguien ha escrito en nuestro código. 1490 01:07:48,070 --> 01:07:51,020 Hace más fácil organizativamente para leer código. 1491 01:07:51,020 --> 01:07:53,460 >> En segundo lugar, es la simplificación. 1492 01:07:53,460 --> 01:07:56,750 Simplifica los pasos que tenemos tomar para resolver nuestro problema. 1493 01:07:56,750 --> 01:07:59,300 Printf, funciones como printf, funciones como a superior 1494 01:07:59,300 --> 01:08:03,560 son todas las cosas que nos permiten simplificar nuestro código abajo por lo que es más fácil. 1495 01:08:03,560 --> 01:08:05,830 Y lo último es la reutilización. 1496 01:08:05,830 --> 01:08:08,710 >> Así que el hecho de que tenemos una función llamada printf 1497 01:08:08,710 --> 01:08:11,990 que podemos llamar variados veces y permite que sea reutilizable. 1498 01:08:11,990 --> 01:08:14,980 Si tuviera que escribir printf, Yo sólo escribo una vez. 1499 01:08:14,980 --> 01:08:16,439 Sólo existe en aquel lugar. 1500 01:08:16,439 --> 01:08:19,890 Si quería hacerlo de nuevo, lo haría que copiar y pegar todo eso 1501 01:08:19,890 --> 01:08:21,760 en mi segunda línea de código. 1502 01:08:21,760 --> 01:08:24,880 Es por eso que si creamos una función lo que existe fuera de nuestra principal, 1503 01:08:24,880 --> 01:08:26,880 sólo podemos recurrir a y reutilizarlo siempre 1504 01:08:26,880 --> 01:08:29,604 que necesitamos para que sea mucho más fácil para nosotros como programas para escribir. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> Así que la forma en que realmente escribiríamos una función es muy similar, ¿no? 1507 01:08:35,549 --> 01:08:37,590 Esta es una especie de la primera instancia en la que vamos a 1508 01:08:37,590 --> 01:08:42,830 ver una toma de función en un estilo diferente a la nuestra void main int. 1509 01:08:42,830 --> 01:08:46,779 En este caso, si quería escribir una función llamada q, ¿verdad? 1510 01:08:46,779 --> 01:08:49,370 >> Y el valor int aquí es todo lo que me dice, 1511 01:08:49,370 --> 01:08:51,649 ¿qué quiero este funcionar para volver a mí? 1512 01:08:51,649 --> 01:08:54,484 Si quiero cubicar un entero, Voy a querer entrada. 1513 01:08:54,484 --> 01:08:55,525 Estos son los parámetros. 1514 01:08:55,525 --> 01:08:58,490 Voy a las entradas de un valor de tipo int. 1515 01:08:58,490 --> 01:09:01,300 Y voy a volver otro valor tipo de int. 1516 01:09:01,300 --> 01:09:03,050 Y aquí, como usted puede ver, todo lo que estoy haciendo 1517 01:09:03,050 --> 01:09:07,300 se cubicando lo que mi entrada es como mi salida y devolverlo. 1518 01:09:07,300 --> 01:09:10,790 >> Así que todo lo que hace esta función es toma algún tipo de número entero. 1519 01:09:10,790 --> 01:09:14,979 Se multiplica por sí mismo dos veces de modo que cubos en efecto. 1520 01:09:14,979 --> 01:09:17,729 Y entonces se devuelve lo que la producción es. 1521 01:09:17,729 --> 01:09:20,540 Así que en este caso, se trata de dos líneas de código que teníamos que escribir extra. 1522 01:09:20,540 --> 01:09:22,880 Pero si quisiéramos llamar sobre esto varias veces, 1523 01:09:22,880 --> 01:09:26,210 es mucho más fácil de escribir que uno línea de aquí que está en el cubo de 1524 01:09:26,210 --> 01:09:28,830 tiene que pasar por varias veces. 1525 01:09:28,830 --> 01:09:34,180 >> Así que la forma que esencialmente cualquier formateo para cualquier tipo de función 1526 01:09:34,180 --> 01:09:36,420 va a existir es como aquí. 1527 01:09:36,420 --> 01:09:38,659 Así que tenemos el nombre de la función. 1528 01:09:38,659 --> 01:09:39,950 En este caso, se llama cubo. 1529 01:09:39,950 --> 01:09:42,033 Y nombramos cubo porque es fácil de recordar. 1530 01:09:42,033 --> 01:09:44,220 Puedes llamarlo cuadrados y de hecho, puede ser en cubos. 1531 01:09:44,220 --> 01:09:45,500 No importa. 1532 01:09:45,500 --> 01:09:48,020 Sólo un nombre que usted está la asignación de su función. 1533 01:09:48,020 --> 01:09:51,660 >> Este derecho aquí, int, es la tipo del parámetro que necesita. 1534 01:09:51,660 --> 01:09:54,149 Entonces, ¿qué hace esta función necesita para operar? 1535 01:09:54,149 --> 01:09:55,990 Bueno, se necesita una entrada. 1536 01:09:55,990 --> 01:09:56,704 Lo nombré entrada. 1537 01:09:56,704 --> 01:09:58,120 Usted puede nombrar como quieras. 1538 01:09:58,120 --> 01:10:00,500 Pero necesito algo de tipo int. 1539 01:10:00,500 --> 01:10:03,730 Se va a ejecutar en realidad lo que hay dentro de aquí, 1540 01:10:03,730 --> 01:10:04,990 el cuerpo de la función. 1541 01:10:04,990 --> 01:10:07,847 Y luego el tipo de retorno aquí, este int-- 1542 01:10:07,847 --> 01:10:09,680 todo lo que me está diciendo es que esta función es 1543 01:10:09,680 --> 01:10:11,250 va a volver a mí en int. 1544 01:10:11,250 --> 01:10:14,460 Así que va a disfrutar de un int, y que va a dar vuelta un int. 1545 01:10:14,460 --> 01:10:17,750 ¿Todo el mundo entiende cómo el el formato de este tipo funciona? 1546 01:10:17,750 --> 01:10:18,250 Guay. 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> OK. 1549 01:10:25,740 --> 01:10:31,770 Así que no te preocupes si esto parece un poco de derecho abstracto ahora. 1550 01:10:31,770 --> 01:10:33,450 Esto es algo que vamos a hablar. 1551 01:10:33,450 --> 01:10:36,310 Vamos a sumergirnos en el más profundo más adelante en el curso. 1552 01:10:36,310 --> 01:10:41,170 La forma en que cualquier tipo de nivel superior la abstracción de estas cosas el trabajo 1553 01:10:41,170 --> 01:10:43,530 es que, en la memoria, en su computadora, todo 1554 01:10:43,530 --> 01:10:47,660 se almacena en este tipo de la pila, he de decir. 1555 01:10:47,660 --> 01:10:49,070 >> Así que allá arriba en la parte superior. 1556 01:10:49,070 --> 01:10:50,861 No sé si usted chicos pueden ver muy bien. 1557 01:10:50,861 --> 01:10:52,590 Voy a tratar de hacer un zoom. 1558 01:10:52,590 --> 01:10:55,111 Aquí, en la parte superior, que el texto física 1559 01:10:55,111 --> 01:10:57,860 de lo que el equipo está interpreting-- todos los ceros y unos que 1560 01:10:57,860 --> 01:10:59,540 existen dentro de nuestro ordenador. 1561 01:10:59,540 --> 01:11:03,390 Y luego tenemos la inicializado datos e inicializar, 1562 01:11:03,390 --> 01:11:05,340 lo que llamamos variables globales. 1563 01:11:05,340 --> 01:11:08,200 Así variables que existen en todos los programas 1564 01:11:08,200 --> 01:11:11,815 y en su totalidad, esencialmente, código. 1565 01:11:11,815 --> 01:11:13,940 No se preocupe si ustedes son especie de claro en esto. 1566 01:11:13,940 --> 01:11:16,060 Es en realidad no importa en este momento. 1567 01:11:16,060 --> 01:11:18,680 >> Y luego tenemos lo que es llamada una pila en una pila. 1568 01:11:18,680 --> 01:11:21,140 Piense en una pila literalmente como al igual que un montón de cosas, 1569 01:11:21,140 --> 01:11:23,098 una pila de diferente cosas siendo empujados en la parte superior 1570 01:11:23,098 --> 01:11:27,870 el uno del otro que almacenan los diversos variables y sintaxis dentro de su código. 1571 01:11:27,870 --> 01:11:31,460 Y entonces aquí en la parte inferior, tenemos las variables de entorno 1572 01:11:31,460 --> 01:11:35,480 de lo que se está ejecutando dentro de sólo su pequeña línea de código. 1573 01:11:35,480 --> 01:11:40,510 >> Y sólo vamos a enfocar en en la parte real de la pila. 1574 01:11:40,510 --> 01:11:43,880 Así que aquí, si tuviéramos que hacer un zoom en el solo esta zona de la pila, 1575 01:11:43,880 --> 01:11:45,140 Esto es lo que parece. 1576 01:11:45,140 --> 01:11:48,590 Y esto es realmente muy importante cuando ustedes hablan de funciones, 1577 01:11:48,590 --> 01:11:52,330 debido aviso de que el memoria de tu computadora 1578 01:11:52,330 --> 01:11:55,600 se almacenar las variables y las funciones 1579 01:11:55,600 --> 01:11:58,790 y los parámetros de ambos su función y sus principales variables 1580 01:11:58,790 --> 01:12:00,190 en diferentes lugares. 1581 01:12:00,190 --> 01:12:03,390 >> Así que ahora, la principal es la función real 1582 01:12:03,390 --> 01:12:04,780 que se está ejecutando en un código. 1583 01:12:04,780 --> 01:12:08,050 Has sus parámetros almacenados aquí y sus variables locales almacenan aquí. 1584 01:12:08,050 --> 01:12:12,270 Variable local sólo significa cualquier variable que sólo existen dentro de esa función. 1585 01:12:12,270 --> 01:12:15,610 Y encima de ello, usted tiene esta función separada llamada cubo. 1586 01:12:15,610 --> 01:12:18,240 Tienes que eso es parámetros así como los lugareños. 1587 01:12:18,240 --> 01:12:21,540 >> Y la razón que pueda ver aquí es que lo que 1588 01:12:21,540 --> 01:12:25,030 que sucede cuando toma en un cubo valor de su función principal 1589 01:12:25,030 --> 01:12:27,640 es que en realidad se está copiando de que más. 1590 01:12:27,640 --> 01:12:31,470 Así que si yo quería cubo 2 y volver 8, que 2 1591 01:12:31,470 --> 01:12:33,730 en realidad está introducida como un parámetro y es 1592 01:12:33,730 --> 01:12:37,690 copiado de manera que usted lo tiene existente en dos lugares diferentes en la memoria. 1593 01:12:37,690 --> 01:12:40,520 Y hay que tener mucho cuidado en recordar que uno de los 1594 01:12:40,520 --> 01:12:42,520 en realidad estás manipulando. 1595 01:12:42,520 --> 01:12:47,170 Y un ejemplo de lo sucedido eso sería muy, muy malo 1596 01:12:47,170 --> 01:12:48,050 existe aquí. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> Así que aquí, tengo, en teoría, un programa de aquí, una función principal 1599 01:12:58,650 --> 01:13:02,180 que estoy declarando un int x es igual a 1. 1600 01:13:02,180 --> 01:13:04,505 Estoy declarando otra int y es igual a 2. 1601 01:13:04,505 --> 01:13:06,380 Y entonces yo estoy corriendo a través de esta función 1602 01:13:06,380 --> 01:13:09,647 llamada de intercambio, donde supongo que está intercambiando los dos valores. 1603 01:13:09,647 --> 01:13:11,480 Y luego voy a imprimirlos, ¿verdad? 1604 01:13:11,480 --> 01:13:13,220 Eso es lo que quiero este programa hacer. 1605 01:13:13,220 --> 01:13:15,180 >> Así que vamos a venir y echar un vistazo. 1606 01:13:15,180 --> 01:13:18,200 Así que si yo escribo una realidad diferente función, como se puede ver, 1607 01:13:18,200 --> 01:13:19,750 tenemos nuestra función principal aquí. 1608 01:13:19,750 --> 01:13:22,860 Y luego tenemos nuestro segunda función aquí. 1609 01:13:22,860 --> 01:13:24,520 Canje de Vacío. 1610 01:13:24,520 --> 01:13:27,090 Void simplemente significa que es no va a devolver nada. 1611 01:13:27,090 --> 01:13:28,930 El nombre de la función es llamado swap, y es 1612 01:13:28,930 --> 01:13:33,730 ir a la ingesta de dos variables, int a y int b, de su función [inaudible]. 1613 01:13:33,730 --> 01:13:39,010 >> Así que, esencialmente en aquí, estamos pasando x e y en esta función. 1614 01:13:39,010 --> 01:13:40,760 Y si tuviéramos que Creamos esto-- por lo que queremos 1615 01:13:40,760 --> 01:13:42,420 para crear un valor temporal, ¿no? 1616 01:13:42,420 --> 01:13:43,930 Vamos a asignar esa a una. 1617 01:13:43,930 --> 01:13:45,388 Y luego una va a ahora igual b. 1618 01:13:45,388 --> 01:13:47,660 Y b va a estar de vuelta donde el valor de temperatura era, 1619 01:13:47,660 --> 01:13:51,070 que es una, porque cuando quiere cambiar las cosas, 1620 01:13:51,070 --> 01:13:52,320 no se puede simplemente desea intercambiarlos. 1621 01:13:52,320 --> 01:13:54,360 >> Tienes que mantener uno aquí, así que recuerda 1622 01:13:54,360 --> 01:13:56,485 lo que es, porque una vez cambias uno, se le olvida 1623 01:13:56,485 --> 01:13:58,200 lo que el valor original, ¿verdad? 1624 01:13:58,200 --> 01:14:00,990 Así que en teoría, este programa debería funcionar, ¿no? 1625 01:14:00,990 --> 01:14:03,630 Si quisiera cambiar la dos, que deberían cambiar. 1626 01:14:03,630 --> 01:14:05,490 Así que vamos a correr y ver si funciona. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> Así como ustedes pueden ver, x una vez fue 1 e y fue una vez 2. 1629 01:14:16,940 --> 01:14:21,475 Y si puedo imprimir a cabo, x sigue siendo 1 ey es 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, este programa no parece ser trabajando de la manera que quiero que funcione. 1631 01:14:25,970 --> 01:14:29,950 ¿Alguien quiere tomar una foto en adivinar qué estaba ocurriendo esto? 1632 01:14:29,950 --> 01:14:34,430 Tiene que ver con la forma en que las cosas son diferentes 1633 01:14:34,430 --> 01:14:38,172 almacenada en diferentes lugares de la memoria. 1634 01:14:38,172 --> 01:14:39,377 >> OK. 1635 01:14:39,377 --> 01:14:41,960 Así que ustedes no tienen que preocuparse demasiado sobre esto ahora mismo. 1636 01:14:41,960 --> 01:14:46,610 Pero saber que el cubo de locales variables fueron a y b, 1637 01:14:46,610 --> 01:14:49,230 porque aquí en nuestra función, hemos declarado a y b 1638 01:14:49,230 --> 01:14:53,570 como las variables que existen dentro de cubo, esa función. 1639 01:14:53,570 --> 01:14:59,490 Pero como se puede ver, los parámetros que está tomando en estaban siendo almacenados aquí. 1640 01:14:59,490 --> 01:15:01,370 Pero no estábamos en realidad devolver nada. 1641 01:15:01,370 --> 01:15:03,120 No estábamos realmente cambiando x e y. 1642 01:15:03,120 --> 01:15:04,440 Estábamos cambiando ay b. 1643 01:15:04,440 --> 01:15:08,340 >> Habíamos copiado x e y en algo que se llama a y b. 1644 01:15:08,340 --> 01:15:11,092 Pero en realidad nunca manipulado x e y ellos mismos. 1645 01:15:11,092 --> 01:15:12,800 ¿Están viendo lo que está sucediendo? 1646 01:15:12,800 --> 01:15:16,140 Es que simplemente hemos copiamos más, pero nosotros no hemos guardado realidad 1647 01:15:16,140 --> 01:15:18,030 un seguimiento de dónde se encontraban en la memoria. 1648 01:15:18,030 --> 01:15:20,127 >> Y lo que ahora el equipo está mirando, oh, tengo 1649 01:15:20,127 --> 01:15:21,960 ejecutar esta cosa a través esta hermosa función. 1650 01:15:21,960 --> 01:15:23,690 Pero x e y son todavía x e y. 1651 01:15:23,690 --> 01:15:26,240 Nada ha pasado ellos por el hecho de 1652 01:15:26,240 --> 01:15:28,340 que esos parámetros y variables locales 1653 01:15:28,340 --> 01:15:30,150 se almacenan en una diferente colocar en la memoria. 1654 01:15:30,150 --> 01:15:32,030 Y esta es una de nivel superior concepto que vamos a 1655 01:15:32,030 --> 01:15:34,300 empezar a ver más adelante en el curso. 1656 01:15:34,300 --> 01:15:36,950 Pero sólo sé que esto es un problema que puede ocurrir 1657 01:15:36,950 --> 01:15:41,400 y que vamos a averiguar la manera de cómo a frente a esto más adelante en el curso. 1658 01:15:41,400 --> 01:15:41,900 OK. 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 Correcto. 1661 01:15:48,250 --> 01:15:51,780 Así que el último concepto que estamos realmente va a cubrir 1662 01:15:51,780 --> 01:15:53,880 eso va a ser útil para el conjunto de procesadores esta semana 1663 01:15:53,880 --> 01:15:56,060 son lo que se llaman argumentos de la línea de comandos. 1664 01:15:56,060 --> 01:16:00,820 Así que Rob en su conferencia fue a través de tipo de brevemente sobre cómo funcionan. 1665 01:16:00,820 --> 01:16:02,770 Esencialmente saber que cuando estás escribiendo 1666 01:16:02,770 --> 01:16:06,280 como una función principal, cuando escribió funciones antes en el pasado, 1667 01:16:06,280 --> 01:16:07,804 tuvimos void main int. 1668 01:16:07,804 --> 01:16:10,470 Y la razón por la que tuvo nula allí fue porque nuestros programas no lo hicieron 1669 01:16:10,470 --> 01:16:12,520 necesitar valores de entrada para funcionar, ¿no? 1670 01:16:12,520 --> 01:16:16,020 Cuando me encontré con Mario, yo no necesitaba que en realidad sólo tiene que escribir algo 1671 01:16:16,020 --> 01:16:16,970 cuando me encontré con Mario. 1672 01:16:16,970 --> 01:16:20,170 Yo podría pedir al usuario más adelante. 1673 01:16:20,170 --> 01:16:22,450 Pero eso no siempre será el caso. 1674 01:16:22,450 --> 01:16:24,980 >> Por ejemplo, en este El problema de la semana fija, 1675 01:16:24,980 --> 01:16:28,365 usted va a pedir que, Además de ejecutar su programa, 1676 01:16:28,365 --> 01:16:30,990 usted va a querer entrada ciertas cosas en la recta como usted 1677 01:16:30,990 --> 01:16:32,050 ejecutar el programa. 1678 01:16:32,050 --> 01:16:34,720 Así que la forma de hacer que se llama un argumento de línea de comandos, que 1679 01:16:34,720 --> 01:16:37,280 es como un argumento puede introducir directamente 1680 01:16:37,280 --> 01:16:39,260 como usted está tratando de ejecutar el programa. 1681 01:16:39,260 --> 01:16:44,680 >> Así que la notación para esto, es bastante compleja de futuro, 1682 01:16:44,680 --> 01:16:47,320 pero en realidad no es que difícil. Así int main-- 1683 01:16:47,320 --> 01:16:48,910 eso es sólo su función principal. 1684 01:16:48,910 --> 01:16:52,110 En comas argc soportes argv cadena. 1685 01:16:52,110 --> 01:16:56,040 Así que todo lo que está diciendo es que este int argc-- todo lo que se le dice 1686 01:16:56,040 --> 01:17:00,560 es que aquellos son el número de argumentos el equipo debe esperar. 1687 01:17:00,560 --> 01:17:03,130 >> Así que una cosa que es verdad importante no perder de vista 1688 01:17:03,130 --> 01:17:07,080 es el nombre físico de su programa cuenta como uno de esos argumentos. 1689 01:17:07,080 --> 01:17:11,080 Así que si yo quería tener mi programa correr más una línea de comandos adicional 1690 01:17:11,080 --> 01:17:13,310 argumento, en realidad estoy va a tener dos. 1691 01:17:13,310 --> 01:17:15,080 Argc en realidad va a ser dos. 1692 01:17:15,080 --> 01:17:18,010 Y luego argv cadena bracket-- todo lo que está haciendo, 1693 01:17:18,010 --> 01:17:20,410 que me está dando una matriz de cadenas que es 1694 01:17:20,410 --> 01:17:24,870 va a simplemente mostrar y almacenar lo todos esos argumentos de la línea de comandos son. 1695 01:17:24,870 --> 01:17:34,090 >> Así por ejemplo, si yo quería tener este programa, ./copy archivoentrada archivosalida archivosalida, ¿verdad? 1696 01:17:34,090 --> 01:17:37,330 Eso es sólo un comando típico Linux. 1697 01:17:37,330 --> 01:17:38,830 Lo que en realidad es argc? 1698 01:17:38,830 --> 01:17:41,320 ¿Cuántos argumentos de la línea de comandos hay en realidad en este? 1699 01:17:41,320 --> 01:17:45,130 Todo esto hace es hacer una copia de un infile del nombre de un archivo 1700 01:17:45,130 --> 01:17:47,070 y lo copia en otro archivo, ¿verdad? 1701 01:17:47,070 --> 01:17:48,700 Eso es todo esto está haciendo. 1702 01:17:48,700 --> 01:17:53,080 Como se puede ver, lo estoy haciendo en una sola línea sin realmente necesitar el programa. 1703 01:17:53,080 --> 01:17:55,380 >> ¿Cuál es nuestra argc en este caso? 1704 01:17:55,380 --> 01:17:58,968 ¿Cuántos argumentos tenemos? 1705 01:17:58,968 --> 01:17:59,634 AUDIENCIA: ¿Tres? 1706 01:17:59,634 --> 01:18:01,200 ANDI Peng: Tenemos tres, exactamente. 1707 01:18:01,200 --> 01:18:05,030 Así que es muy intuitivo basta pensar que es sólo 1708 01:18:05,030 --> 01:18:06,290 el infile y el archivo de salida. 1709 01:18:06,290 --> 01:18:10,190 Pero saber que el nombre físico del programa que se está ejecutando cuenta como una. 1710 01:18:10,190 --> 01:18:13,220 Así que en este caso, argc es en realidad tres. 1711 01:18:13,220 --> 01:18:15,860 ¿Qué te parece, lo que es argv 0? 1712 01:18:15,860 --> 01:18:18,180 Recuerde, todo el argumentos de la línea de comandos 1713 01:18:18,180 --> 01:18:20,500 se almacena en una matriz de cadenas. 1714 01:18:20,500 --> 01:18:24,140 Así que si trato de acceder a ella, lo que sería argv soporte 0 dame? 1715 01:18:24,140 --> 01:18:25,364 >> AUDIENCIA: [inaudible]. 1716 01:18:25,364 --> 01:18:26,155 ANDI Peng: Exactamente. 1717 01:18:26,155 --> 01:18:28,550 Me daría el punto slash copia, porque eso es 1718 01:18:28,550 --> 01:18:31,070 el elemento 0 ª, la primer elemento de mi matriz. 1719 01:18:31,070 --> 01:18:33,236 ¿Qué pasa con argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> AUDIENCIA: Infile. 1721 01:18:33,945 --> 01:18:35,070 ANDI Peng: Infile, exactamente. 1722 01:18:35,070 --> 01:18:36,272 ¿Qué pasa con argv 2? 1723 01:18:36,272 --> 01:18:37,022 AUDIENCIA: OUTFILE. 1724 01:18:37,022 --> 01:18:38,190 ANDI Peng: OUTFILE. 1725 01:18:38,190 --> 01:18:39,290 Esto es un poco complicado ahora. 1726 01:18:39,290 --> 01:18:42,630 ¿Qué piensan ustedes argv 3 se va a darme 1727 01:18:42,630 --> 01:18:45,522 si trataba de imprimir que fuera? 1728 01:18:45,522 --> 01:18:48,260 >> AUDIENCIA: [inaudible]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI Peng: ¿Usted tiene una mano? 1730 01:18:50,164 --> 01:18:50,663 Sí. 1731 01:18:50,663 --> 01:18:51,550 >> AUDIENCIA: Una alternativa. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI Peng: Exactamente. 1733 01:18:52,341 --> 01:18:55,440 Así que recuerda, en la conferencia que tener al final de una carrera de algo 1734 01:18:55,440 --> 01:18:56,640 llamado un terminador nulo? 1735 01:18:56,640 --> 01:18:58,890 Vamos a entrar en esto también más adelante en la clase. 1736 01:18:58,890 --> 01:19:02,472 Pero saber que en la notación, la forma en que su equipo 1737 01:19:02,472 --> 01:19:04,430 Sabe que es el final de la matriz es que 1738 01:19:04,430 --> 01:19:07,310 pone algo llamado un nulo terminador o un guión cero. 1739 01:19:07,310 --> 01:19:12,047 >> Así que si se intenta acceder a argv 3, te vas a ir a este tablero 0. 1740 01:19:12,047 --> 01:19:13,630 Esto es aún más de una pregunta con trampa. 1741 01:19:13,630 --> 01:19:17,020 ¿Qué pasa con argv 4? 1742 01:19:17,020 --> 01:19:20,920 Así que esto es pasado terminador nulo, más allá de los límites de nuestra matriz. 1743 01:19:20,920 --> 01:19:24,380 ¿Qué crees que va a sucederá cuando tratamos de hacer eso? 1744 01:19:24,380 --> 01:19:25,842 >> AUDIENCIA: [inaudible]? 1745 01:19:25,842 --> 01:19:26,550 ANDI Peng: Lo siento? 1746 01:19:26,550 --> 01:19:28,025 Decir que un poco más fuerte? 1747 01:19:28,025 --> 01:19:29,086 >> AUDIENCIA: [inaudible]. 1748 01:19:29,086 --> 01:19:29,710 ANDI Peng: Sí. 1749 01:19:29,710 --> 01:19:32,420 Ese es el nombre de la área lo más probable obtener. 1750 01:19:32,420 --> 01:19:36,610 Pero saber que argv 4-- que permite el acceso 1751 01:19:36,610 --> 01:19:38,610 lugares en su equipo de memoria que realmente 1752 01:19:38,610 --> 01:19:41,650 no debe ser conmovedora, porque ahora usted sabe lo que es argv. 1753 01:19:41,650 --> 01:19:46,220 Usted sabe que es una matriz de tamaño 3 que tiene puntos de copia, infile y archivosalida. 1754 01:19:46,220 --> 01:19:50,200 >> Si trata de ir mucho más allá de que que eres más allá del terminador nulo, 1755 01:19:50,200 --> 01:19:53,050 el equipo tiene, probablemente, algo almacenado en argv 4. 1756 01:19:53,050 --> 01:19:55,790 Y que realmente no debería ser autorizarle a entrar en argv 4, 1757 01:19:55,790 --> 01:19:58,130 porque usted tiene un archivo armario y sólo son 1758 01:19:58,130 --> 01:19:59,790 permitido el acceso a esos tres estantes. 1759 01:19:59,790 --> 01:20:02,870 Pero si intenta llegar mucho más allá de la plataforma de donde se le permite, 1760 01:20:02,870 --> 01:20:04,930 usted va a empezar a jugar con otras cosas en la memoria del equipo. 1761 01:20:04,930 --> 01:20:06,690 Eso va a ser muy, muy malo. 1762 01:20:06,690 --> 01:20:07,440 Así que saber eso. 1763 01:20:07,440 --> 01:20:10,370 Tenga mucho cuidado de que no sólo empezar azar 1764 01:20:10,370 --> 01:20:14,772 acceso a los elementos de un array que no estaban en lo que quería crear. 1765 01:20:14,772 --> 01:20:17,114 Sí. 1766 01:20:17,114 --> 01:20:18,430 >> OK. 1767 01:20:18,430 --> 01:20:26,360 Así que vamos a hacer otra ejemplo terminal de aquí. 1768 01:20:26,360 --> 01:20:27,300 OK. 1769 01:20:27,300 --> 01:20:29,900 Así que Rob rápidamente en conferencia El otro día se fue 1770 01:20:29,900 --> 01:20:35,040 a través de este ejemplo, donde tenido int main int argv cadena argc 1771 01:20:35,040 --> 01:20:39,090 corchetes, lo que me está diciendo que soy va a tener argumentos de la línea de comandos. 1772 01:20:39,090 --> 01:20:41,860 >> Él tiene, si argc es igual es igual a 2-- recuerde, 1773 01:20:41,860 --> 01:20:45,070 es igual a iguales significa la comparación. 1774 01:20:45,070 --> 01:20:47,980 Si es igual a 2, entonces estoy va a imprimir hola, 1775 01:20:47,980 --> 01:20:51,190 cualquiera que sea la primera elemento de la matriz es. 1776 01:20:51,190 --> 01:20:54,100 Impresión Else, hola mundo. 1777 01:20:54,100 --> 01:20:56,300 ¿Qué es esto va a suceder en esencia? 1778 01:20:56,300 --> 01:21:00,570 ¿Puede alguien explicar en Inglés lo que este programa está haciendo? 1779 01:21:00,570 --> 01:21:01,272 Sí. 1780 01:21:01,272 --> 01:21:08,160 >> AUDIENCIA: Si alguien escribe en un comando y dijo su nombre y apellido, 1781 01:21:08,160 --> 01:21:12,096 que no sólo va a imprimir la primero y decir hola, 1782 01:21:12,096 --> 01:21:14,090 cualquiera que sea su nombre es. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI Peng: OK, vamos a ejecutarlo. 1784 01:21:15,410 --> 01:21:22,470 Así, por ejemplo, si yo tuviera que hacer este archivo hacen hola hola a-- 1785 01:21:22,470 --> 01:21:24,500 a-- ¿qué quieres que de entrada? 1786 01:21:24,500 --> 01:21:25,900 >> AUDIENCIA: Nombre y apellidos. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI Peng: Nombre y apellido? 1788 01:21:27,280 --> 01:21:28,180 Espacios? 1789 01:21:28,180 --> 01:21:29,690 >> AUDIENCIA: Sí. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI Peng: ¿Puede alguien decir mí en este momento, lo que es argc? 1791 01:21:33,490 --> 01:21:35,630 Justo ahí? 1792 01:21:35,630 --> 01:21:36,290 Ups, lo siento. 1793 01:21:36,290 --> 01:21:37,920 Permítanme volver. 1794 01:21:37,920 --> 01:21:40,740 ¿Cuántos argumentos de la línea de comandos que trate: ustedes no pueden ver realmente. 1795 01:21:40,740 --> 01:21:43,760 Pero voy a tratar de hacer un zoom. 1796 01:21:43,760 --> 01:21:44,290 Lo estoy intentando. 1797 01:21:44,290 --> 01:21:45,414 Sí, hay tres, ¿no? 1798 01:21:45,414 --> 01:21:48,750 Es slash dot hola, es Andi, y es Peng. 1799 01:21:48,750 --> 01:21:51,870 >> Entonces, ¿qué piensan ustedes este programa se va a imprimir? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 Oh. 1802 01:21:56,060 --> 01:21:57,120 Oh, lo siento. 1803 01:21:57,120 --> 01:21:57,810 Nombre equivocado. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 Está imprimiendo, hola mundo. 1806 01:22:06,130 --> 01:22:09,603 ¿Alguien quiere explicar por qué está sucediendo? 1807 01:22:09,603 --> 01:22:10,103 ¿Sí? 1808 01:22:10,103 --> 01:22:11,019 >> AUDIENCIA: [inaudible]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI Peng: Exactamente. 1811 01:22:15,230 --> 01:22:19,940 Así que aquí, son condicionales Es decir, si argc es igual es igual a 2. 1812 01:22:19,940 --> 01:22:23,650 Así que sólo en el caso de que hay dos argumentos de la línea de comandos. 1813 01:22:23,650 --> 01:22:25,850 Entonces me voy a imprimir, hola, lo que sea. 1814 01:22:25,850 --> 01:22:28,210 Pero otra cosa, voy a imprimir solo, hola mundo. 1815 01:22:28,210 --> 01:22:30,040 Así que quiere a alguien darme un ejemplo 1816 01:22:30,040 --> 01:22:35,050 de la forma en que sería capaz de realidad lograr que se desea imprimir el valor de argv 1? 1817 01:22:35,050 --> 01:22:38,600 >> ¿Qué iba a tener que introducir aquí? 1818 01:22:38,600 --> 01:22:39,840 Sólo una cosa, ¿verdad? 1819 01:22:39,840 --> 01:22:42,900 Debido a que el punto para saludar ya cuenta como el primer argumento. 1820 01:22:42,900 --> 01:22:43,930 Sólo tengo uno más. 1821 01:22:43,930 --> 01:22:46,470 Así dot hola si me hago Andi. 1822 01:22:46,470 --> 01:22:47,270 Hola, Andi. 1823 01:22:47,270 --> 01:22:49,186 ¿Todos entienden por qué está sucediendo? 1824 01:22:49,186 --> 01:22:49,602 Sí. 1825 01:22:49,602 --> 01:22:52,500 >> AUDIENCIA: Entonces, el espacio entre el comando line-- es que [inaudible]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI Peng: No. 1828 01:22:56,830 --> 01:23:03,810 Así que el espacio en una línea de comandos argumento, x, de decirle a su equipo 1829 01:23:03,810 --> 01:23:06,820 que este es el comienzo de una nueva cadena. 1830 01:23:06,820 --> 01:23:11,130 Así argv cadena aquí-- que tiendas todos sus argumentos de línea de comandos 1831 01:23:11,130 --> 01:23:13,110 en las cadenas. 1832 01:23:13,110 --> 01:23:17,420 Y por lo que el espacio en la línea de comandos argument-- lo único que hace es decirle, 1833 01:23:17,420 --> 01:23:21,030 esto es en el extremo de una cuerda y es el momento de pasar a otro. 1834 01:23:21,030 --> 01:23:21,990 >> Sí. 1835 01:23:21,990 --> 01:23:23,530 Esto es muy importante para el conjunto de procesadores, porque eres 1836 01:23:23,530 --> 01:23:24,613 va a probar estos. 1837 01:23:24,613 --> 01:23:29,300 Así que ¿alguien tiene alguna pregunta sobre esto? 1838 01:23:29,300 --> 01:23:30,016 Vale, guay. 1839 01:23:30,016 --> 01:23:30,515 ¿Sí? 1840 01:23:30,515 --> 01:23:35,008 >> AUDIENCIA: Así que la razón por la que lo haría poner entero argumento calc lugar 1841 01:23:35,008 --> 01:23:40,059 de [inaudible] sería cuando desee para escribir información adicional para 1842 01:23:40,059 --> 01:23:41,030 [Inaudible]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI Peng: Sí, exactamente. 1844 01:23:42,090 --> 01:23:45,370 Algunos programas requieren que usted para introducir un argumento de línea de comandos 1845 01:23:45,370 --> 01:23:47,732 que entra y que utiliza eso. 1846 01:23:47,732 --> 01:23:49,035 Sí. 1847 01:23:49,035 --> 01:23:50,410 AUDIENCIA: ¿Y qué si [inaudible]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI Peng: Bueno, ¿qué tengo cambiar entonces en mi programa? 1850 01:23:58,870 --> 01:23:59,870 >> AUDIENCIA: Sólo 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI Peng: ¿Por qué es que pasando, qué te parece? 1853 01:24:15,020 --> 01:24:18,940 >> AUDIENCIA: Debido a que el [inaudible]. 1854 01:24:18,940 --> 01:24:22,370 >> AUDIENCIA: Usted tendría que cambiarlo a 2 [inaudible]. 1855 01:24:22,370 --> 01:24:23,484 >> AUDIENCIA: 1 y 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI Peng: 1 y 2, exactamente. 1857 01:24:24,650 --> 01:24:29,150 Así que en este caso, es probable que quiero tener de dos printf statements-- 1858 01:24:29,150 --> 01:24:32,601 uno que argv impreso 1 y el que imprime argv 2. 1859 01:24:32,601 --> 01:24:33,100 Aquí. 1860 01:24:33,100 --> 01:24:34,516 Que puedo hacer realidad que muy rápido. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Ahi tienes. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 No es exactamente lo que querías. 1865 01:24:49,370 --> 01:24:52,590 Pero si ustedes perder el tiempo con el formato, que va a salir. 1866 01:24:52,590 --> 01:24:54,981 Sí. 1867 01:24:54,981 --> 01:24:55,480 Guay. 1868 01:24:55,480 --> 01:24:57,670 Sé que estamos un poco cortos de tiempo. 1869 01:24:57,670 --> 01:25:02,469 Pero voy sólo para pasar rápidamente una par de minutos que pasan por helpful-- 1870 01:25:02,469 --> 01:25:03,760 AUDIENCIA: Tienes dos minutos. 1871 01:25:03,760 --> 01:25:05,010 ANDI Peng: Tengo dos minutos? 1872 01:25:05,010 --> 01:25:06,340 Gracias. 1873 01:25:06,340 --> 01:25:09,180 Algunos consejos PSet rápidas. 1874 01:25:09,180 --> 01:25:13,100 Así que para este conjunto de procesadores, le recomiendo, como he dicho, a todos a leer la especificación. 1875 01:25:13,100 --> 01:25:16,804 Vas a estar escribiendo un solo de tres programs-- llamada initials.c, uno llamado caesar.c, 1876 01:25:16,804 --> 01:25:17,720 uno llamado vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Algunos consejos importantes que ustedes realmente quieren 1879 01:25:22,340 --> 01:25:25,040 tener en mente-- lo existe esta función 1880 01:25:25,040 --> 01:25:27,770 llamada atoi-- como me gusta decir, a trois. 1881 01:25:27,770 --> 01:25:29,520 No queda claro si eso es en realidad cómo lo dice. 1882 01:25:29,520 --> 01:25:32,510 Pero todo lo que está haciendo, que está introduciendo. 1883 01:25:32,510 --> 01:25:34,320 Convierte una cadena a un entero. 1884 01:25:34,320 --> 01:25:37,490 Así que a representa ASCII para i entero. 1885 01:25:37,490 --> 01:25:40,310 Es sólo la conversión de ASCII valores a valores enteros. 1886 01:25:40,310 --> 01:25:44,510 Así que recuerde argv, la matriz que almacena todos los comandos de la línea arguments-- 1887 01:25:44,510 --> 01:25:46,300 que todos ellos almacena como cadenas. 1888 01:25:46,300 --> 01:25:50,010 Y por lo que si usted quiere ser capaz de tienen uno de ellos se convierten en un número entero, 1889 01:25:50,010 --> 01:25:52,750 vas a tener utilizar este valor aquí. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, como hemos cubierto anteriormente en la clase de hoy, 1891 01:25:56,690 --> 01:25:59,550 permite que usted tenga la resto de lo que tengas. 1892 01:25:59,550 --> 01:26:03,620 Así que si tenemos muy, muy un gran número de César, 1893 01:26:03,620 --> 01:26:06,117 lo que si tenemos el final de una cadena de Vigenére? 1894 01:26:06,117 --> 01:26:08,450 ¿Cómo vas a poder para conseguir que para envolver alrededor? 1895 01:26:08,450 --> 01:26:11,330 Si me golpeó z y quiero que vaya de nuevo a una, 1896 01:26:11,330 --> 01:26:13,650 ¿cómo voy a conseguir que para envolver alrededor? 1897 01:26:13,650 --> 01:26:15,960 Probablemente quiera utilizar módulo en alguna parte. 1898 01:26:15,960 --> 01:26:19,190 >> En segundo lugar, navegar alrededor su biblioteca. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Eso es una nueva biblioteca que tenemos. 1900 01:26:20,680 --> 01:26:25,270 Usted encontrará una gran cantidad de muy, muy isupper functions-- útil, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isalpha, etcétera. 1902 01:26:27,681 --> 01:26:30,680 Todas las funciones que serán de gran utilidad cuando usted está tratando de averiguar, 1903 01:26:30,680 --> 01:26:33,780 es este personaje una letra minúscula? 1904 01:26:33,780 --> 01:26:35,730 ¿Cómo puedo convertir este cadena a una mayúscula? 1905 01:26:35,730 --> 01:26:38,146 Todas estas cosas van a ser muy, muy útil para el conjunto de procesadores. 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 OK. 1908 01:26:45,500 --> 01:26:49,644 >> El horario de atención de esta noche son las 8:00 a las 11:00 en el aula TRULLO mañana 1909 01:26:49,644 --> 01:26:51,310 así como el miércoles y el jueves por la noche. 1910 01:26:51,310 --> 01:26:53,280 Las horas de oficina están en commons. 1911 01:26:53,280 --> 01:26:56,180 Altamente sugerir chicos todo puede empezar inmediatamente, 1912 01:26:56,180 --> 01:27:00,490 porque usted no desea ser que chico que la noche del jueves tiene problemas 1913 01:27:00,490 --> 01:27:03,870 presentando el conjunto de procesadores y está como, yo no sé qué hacer. 1914 01:27:03,870 --> 01:27:05,870 Empecé, he terminado, me presenté. 1915 01:27:05,870 --> 01:27:09,737 Trate de dar un poco de ambiente, porque en siempre se producen problemas de código. 1916 01:27:09,737 --> 01:27:11,570 Usted quiere asegurarse de que que usted se da 1917 01:27:11,570 --> 01:27:14,810 un montón de tiempo para poder para completar los conjuntos de procesadores. 1918 01:27:14,810 --> 01:27:15,310 Guay. 1919 01:27:15,310 --> 01:27:16,720 Me quedaré por aquí. 1920 01:27:16,720 --> 01:27:18,226 >> AUDIENCIA: ¿Es esta línea ya? 1921 01:27:18,226 --> 01:27:20,850 ANDI Peng: Yo no sé si es ya en línea, pero será. 1922 01:27:20,850 --> 01:27:23,500 Me quedaré por aquí si alguien tiene alguna pregunta ya. 1923 01:27:23,500 --> 01:27:25,390 Gracias por venir. 1924 01:27:25,390 --> 01:27:27,105