1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Las funciones son secciones de código utilizadas dentro de un programa más amplio 2 00:00:09,640 --> 00:00:11,430 para realizar una tarea particular. 3 00:00:11,430 --> 00:00:15,060 También son conocidos como procedimientos, subrutinas, y subprogramas, 4 00:00:15,060 --> 00:00:18,320 ya que en realidad son sólo mini programas dentro de los programas. 5 00:00:18,320 --> 00:00:20,340 A pesar de que es posible que no lo hayas notado, 6 00:00:20,340 --> 00:00:24,090 que sin duda han utilizado funciones ya si has programado en C. 7 00:00:24,090 --> 00:00:26,770 Al escribir cosas en la pantalla con printf, 8 00:00:26,770 --> 00:00:29,380 en realidad estás usando una función llamada printf. 9 00:00:29,380 --> 00:00:33,760 Del mismo modo, getInt y GetString son funciones que CS50 proporciona para usted. 10 00:00:33,760 --> 00:00:37,750 Como programadores, utilizamos funciones para un número de razones. 11 00:00:37,750 --> 00:00:41,240 >> Tener funciones para realizar tareas comunes como escribir a la pantalla 12 00:00:41,240 --> 00:00:44,480 y preguntar al usuario para la entrada nos ahorra tiempo en la programación. 13 00:00:44,480 --> 00:00:47,510 No es necesario escribir código para hacer esas mismas cosas 14 00:00:47,510 --> 00:00:49,520 puesto que ya están hecho por nosotros. 15 00:00:49,520 --> 00:00:54,580 Ni siquiera es necesario que entendamos exactamente cómo estas funciones operan internamente. 16 00:00:54,580 --> 00:00:58,880 En su lugar, sólo hay que saber cómo utilizar o llamarlos en nuestros programas. 17 00:00:58,880 --> 00:01:02,040 También es útil para escribir funciones en programas más amplios 18 00:01:02,040 --> 00:01:04,330 incluso si usted no está planeando en hacer que otros los utilizan, 19 00:01:04,330 --> 00:01:06,830 sólo para dividir la tarea más amplia a la mano. 20 00:01:06,830 --> 00:01:11,910 De esta manera, le dará estructura a su código mucho más parecido a lo que dan estructura a un ensayo, 21 00:01:11,910 --> 00:01:15,180 y con proyectos muy grandes que permiten que varias personas 22 00:01:15,180 --> 00:01:16,730 para trabajar en diferentes partes al mismo tiempo 23 00:01:16,730 --> 00:01:20,480 ya que es evidente que el trabajo de una persona termina y otro comienza. 24 00:01:20,480 --> 00:01:26,530 >> Funciones funcionan típicamente en 1 o más entradas, conocidos como argumentos o parámetros, 25 00:01:26,530 --> 00:01:30,520 la transformación de los insumos en un valor de salida que se devuelve. 26 00:01:30,520 --> 00:01:34,950 Sin embargo, también es posible tener funciones que no utilizan ningún argumento de entrada 27 00:01:34,950 --> 00:01:36,400 y no devuelven un resultado. 28 00:01:36,400 --> 00:01:38,790 Bueno, basta de cosas suaves. 29 00:01:38,790 --> 00:01:41,790 Echemos un vistazo a algunas de las funciones reales en C. 30 00:01:41,790 --> 00:01:45,570 >> Aquí tenemos una función llamada cuadrado que, lo creas o no, 31 00:01:45,570 --> 00:01:47,570 calcula el cuadrado de la entrada. 32 00:01:47,570 --> 00:01:49,490 Vamos a examinar la sintaxis de la misma. 33 00:01:49,490 --> 00:01:51,860 La primera palabra que ves en la función, int, 34 00:01:51,860 --> 00:01:57,460 especifica el tipo de retorno de la función, es decir, el tipo C de salida de la función. 35 00:01:57,460 --> 00:02:00,370 Esta función emitirá un valor con tipo int. 36 00:02:00,370 --> 00:02:04,100 La siguiente palabra que ves es el nombre de la función, el cuadrado en este caso. 37 00:02:04,100 --> 00:02:07,390 Nombrar adecuadamente las funciones es particularmente importante 38 00:02:07,390 --> 00:02:11,260 ya que es probable que la documentación más visible de lo que hace la función. 39 00:02:11,260 --> 00:02:14,880 Puede ser que sea fresco para nombrar esta función shazam o booyah, 40 00:02:14,880 --> 00:02:18,340 pero eso no nos dice nada acerca de lo que hace la función. 41 00:02:18,340 --> 00:02:23,470 >> Tras el nombre de la función vienen las entradas a la función, los argumentos. 42 00:02:23,470 --> 00:02:26,380 Se enumeran en el interior de un conjunto de paréntesis 43 00:02:26,380 --> 00:02:30,160 tanto con su tipo y un nombre de usar para ellos dentro del cuerpo de la función. 44 00:02:30,160 --> 00:02:34,030 Square tarda sólo 1 argumento, el int a plaza, 45 00:02:34,030 --> 00:02:36,160 que me he decidido a dar el nombre x. 46 00:02:36,160 --> 00:02:40,760 Esto termina la declaración de la función o prototipo. 47 00:02:40,760 --> 00:02:43,320 Las llaves que rodean el resto de la función 48 00:02:43,320 --> 00:02:45,870 indican el comienzo y el final del cuerpo de la función, 49 00:02:45,870 --> 00:02:48,320 la definición de la propia función. 50 00:02:48,320 --> 00:02:50,300 Square es una función bastante simple. 51 00:02:50,300 --> 00:02:54,100 Es sólo tengo una línea, ya que todo lo que tenemos que hacer es multiplicar x por sí mismo. 52 00:02:54,100 --> 00:02:59,250 El retorno palabra especifica el valor de salida y activa el final de la función. 53 00:02:59,250 --> 00:03:03,430 Para utilizar la función cuadrado, se necesita proporcionar las entradas apropiadas 54 00:03:03,430 --> 00:03:05,310 y luego capturar la salida. 55 00:03:05,310 --> 00:03:08,140 Aquí puede ver un par de formas de hacerlo. 56 00:03:08,140 --> 00:03:13,600 Podemos pasar un int prima, como 6, o nos puede pasar en una variable como un. 57 00:03:13,600 --> 00:03:15,700 Tenga en cuenta que cada vez que llamamos plaza, 58 00:03:15,700 --> 00:03:18,330 captamos el resultado en una variable y luego imprimirlo. 59 00:03:18,330 --> 00:03:22,690 Sin embargo, no es necesario almacenar el valor devuelto en una variable y luego imprimir. 60 00:03:22,690 --> 00:03:27,090 Podríamos enviarlo directamente a printf como lo hacemos cuando elevamos al cuadrado 10, 61 00:03:27,090 --> 00:03:30,580 pero esto no significa que nosotros no tenemos acceso al valor devuelto de la plaza 10 62 00:03:30,580 --> 00:03:32,230 otra parte del código. 63 00:03:32,230 --> 00:03:34,890 Veamos otro ejemplo simple. 64 00:03:34,890 --> 00:03:38,750 >> Esta vez, vamos a sumar 2 flotadores juntos para que podamos ver lo que se parece a una función 65 00:03:38,750 --> 00:03:41,220 cuando tiene 2 entradas en lugar de sólo uno. 66 00:03:41,220 --> 00:03:43,950 Como se puede ver, no es muy diferente. 67 00:03:43,950 --> 00:03:47,330 Todo lo que hacemos es añadir en el segundo argumento, un flotador llamado b, 68 00:03:47,330 --> 00:03:51,820 a la lista de argumentos utilizando una coma para separarlo del primer argumento, un flotador. 69 00:03:51,820 --> 00:03:55,550 Por lo tanto, nuestra plaza y funciones de suma son bastante fáciles de entender 70 00:03:55,550 --> 00:03:58,930 porque son equivalentes a las funciones que usted ha visto antes en la clase de matemáticas. 71 00:03:58,930 --> 00:04:01,610 Ahora, echemos un vistazo a una función que es ligeramente diferente. 72 00:04:01,610 --> 00:04:04,620 En lugar de devolver un valor, éste modifica un estado. 73 00:04:04,620 --> 00:04:07,260 Esto se conoce como teniendo un efecto secundario. 74 00:04:07,260 --> 00:04:10,750 En este programa, la función printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 tiene un tipo de cambio que no hemos visto antes vacío,. 76 00:04:13,410 --> 00:04:16,730 >> Void se utiliza para decir que una función no devuelve nada. 77 00:04:16,730 --> 00:04:19,410 No hay variables de tipo void, 78 00:04:19,410 --> 00:04:22,760 por lo que si se intenta devolver algo a partir de una función como printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 el compilador gritarte. 80 00:04:24,290 --> 00:04:29,390 Dentro printf_fudd_style, vemos que mientras la función todavía realiza una tarea, 81 00:04:29,390 --> 00:04:31,890 a saber, el cambio de rupias a todos Ws, 82 00:04:31,890 --> 00:04:36,380 el punto de la función es modificar la cadena y luego imprimirlo en la pantalla, 83 00:04:36,380 --> 00:04:39,400 cambiar el estado del programa en lugar de devolver un resultado. 84 00:04:39,400 --> 00:04:43,700 Con esta función es muy similar a usar nuestra plaza y funciones de suma, 85 00:04:43,700 --> 00:04:46,950 excepto que no almacene el resultado en una variable o hacerlo pasar a otra función 86 00:04:46,950 --> 00:04:49,520 ya que no hay un resultado que hablar. 87 00:04:49,520 --> 00:04:53,180 Así que, cuando compilar y ejecutar nuestro programa Elmer Fudd, 88 00:04:53,180 --> 00:04:56,970 se ve que "Usted pícaro conejo!" se transforma derecho a 89 00:04:56,970 --> 00:04:58,730 "Usted Wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Por último, hay una función más vale la pena discutir 91 00:05:02,250 --> 00:05:06,810 desde que ha estado usando en cada programa en C que has escrito, principal. 92 00:05:06,810 --> 00:05:09,450 Principal es una función muy similar a cualquier otro. 93 00:05:09,450 --> 00:05:13,580 Tiene un tipo de retorno, un nombre, una lista de argumentos, y un cuerpo. 94 00:05:13,580 --> 00:05:16,110 El tipo de retorno de main es siempre un int, 95 00:05:16,110 --> 00:05:19,120 y esto int se utiliza para comunicar el estado del programa cuando termina. 96 00:05:19,120 --> 00:05:23,360 >> ¿Se ejecutan correctamente, o qué terminó temprano debido a un error? 97 00:05:23,360 --> 00:05:26,390 Volviendo a cero indica una exitosa carrera, 98 00:05:26,390 --> 00:05:29,510 y devolver cualquier valor distinto de cero indica un error. 99 00:05:29,510 --> 00:05:31,950 Dependiendo del tipo de programa que usted está escribiendo, 100 00:05:31,950 --> 00:05:34,960 volver códigos diferentes para diferentes errores pueden ser útiles 101 00:05:34,960 --> 00:05:37,210 para las personas que utilizan el programa más adelante. 102 00:05:37,210 --> 00:05:40,220 Mains argumentos son un poco más complicadas. 103 00:05:40,220 --> 00:05:42,150 >> La lista de argumentos puede estar vacío, 104 00:05:42,150 --> 00:05:45,330 que nos indican por escrito vacío entre los paréntesis, 105 00:05:45,330 --> 00:05:50,220 o la lista puede tener dos argumentos: un entero y una matriz de char * s. 106 00:05:50,220 --> 00:05:52,820 Estos se utilizan cuando el programa tiene la intención de utilizar 107 00:05:52,820 --> 00:05:56,490 argumentos que se pasan en la línea de comandos cuando el programa se invoca. 108 00:05:56,490 --> 00:05:59,690 El argumento que se suele llamar int argc, 109 00:05:59,690 --> 00:06:03,300 y es igual a la longitud de la matriz char *, conocido como argv. 110 00:06:03,300 --> 00:06:07,080 Argv contiene los argumentos de la línea de comandos pasados ​​al programa. 111 00:06:07,080 --> 00:06:11,440 En otro corto, vamos a hablar acerca de cómo utilizar estas variables con más detalle. 112 00:06:11,440 --> 00:06:15,220 Por el momento, usted puede sentirse libre de declarar principal en ambos sentidos. 113 00:06:15,220 --> 00:06:19,410 Me suelen optar por escribir el camino más corto, sin argumentos, cuando sea posible. 114 00:06:19,410 --> 00:06:22,230 >> Ahora que sabes cómo escribir funciones, 115 00:06:22,230 --> 00:06:25,030 usted está bien en su camino hacia el desarrollo de los programas más grandes y más complejas. 116 00:06:25,030 --> 00:06:29,740 Mi nombre es Nate Hardison. Esto es CS50.