1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] CHRIS GERBER: Una función es una serie de pasos dentro de un 2 00:00:09,540 --> 00:00:12,000 programa más grande, que normalmente se destina a ser llamado 3 00:00:12,000 --> 00:00:14,440 varias veces y de varias otras localidades 4 00:00:14,440 --> 00:00:15,720 el programa. 5 00:00:15,720 --> 00:00:18,480 Al crear una función C, uno de los requisitos es 6 00:00:18,480 --> 00:00:21,050 especificar un tipo de valor de retorno. 7 00:00:21,050 --> 00:00:23,490 El caso más simple es una situación en la que la llama 8 00:00:23,490 --> 00:00:26,510 código no se refiere con el resultado de la función. 9 00:00:26,510 --> 00:00:28,530 Este podría ser el caso cuando se está imprimiendo datos a la 10 00:00:28,530 --> 00:00:31,120 para mostrar del usuario, al igual que printf. 11 00:00:31,120 --> 00:00:33,140 En este caso, se puede declarar un valor de retorno 12 00:00:33,140 --> 00:00:35,020 ser de tipo void. 13 00:00:35,020 --> 00:00:37,130 Usando vacío simplemente le dice al compilador que no 14 00:00:37,130 --> 00:00:39,120 valor será devuelto. 15 00:00:39,120 --> 00:00:40,530 Vamos a ver cómo se ve. 16 00:00:40,530 --> 00:00:42,940 >> Digamos que tenemos una función llamada decir_hola que 17 00:00:42,940 --> 00:00:44,490 toma un argumento. 18 00:00:44,490 --> 00:00:47,050 Vamos a pasar el nombre de una persona y se mostrará un saludo 19 00:00:47,050 --> 00:00:48,380 en la pantalla. 20 00:00:48,380 --> 00:00:50,505 El nombre será de tipo char *. 21 00:00:50,505 --> 00:00:53,080 Y vamos a especificar que como argumento. 22 00:00:53,080 --> 00:00:55,970 Mi aplicación no tiene por qué saber lo que estaba impreso o si 23 00:00:55,970 --> 00:00:56,970 se imprimió. 24 00:00:56,970 --> 00:00:59,680 Así, el valor devuelto será de tipo void. 25 00:00:59,680 --> 00:01:02,060 Esta función se puede imprimir en la pantalla con un comando como 26 00:01:02,060 --> 00:01:07,620 printf ("Hola,% s \ n 27 00:01:07,620 --> 00:01:12,100 ", Nombre);. 28 00:01:12,100 --> 00:01:14,690 El saludo se mostrará y el control se pasa 29 00:01:14,690 --> 00:01:16,260 volver al código de llamada. 30 00:01:16,260 --> 00:01:19,370 Una cosa a tener en cuenta es que cuando el tipo de valor de retorno es nulo, 31 00:01:19,370 --> 00:01:20,790 no es necesario que incluya una declaración de 32 00:01:20,790 --> 00:01:22,300 declaración de la función. 33 00:01:22,300 --> 00:01:25,270 Si opta por incluir una, no se incluye un valor de retorno 34 00:01:25,270 --> 00:01:27,420 como argumento. 35 00:01:27,420 --> 00:01:29,380 >> En algunos casos, tiene sentido para devolver una 36 00:01:29,380 --> 00:01:30,570 valor de una función. 37 00:01:30,570 --> 00:01:33,900 Digamos que estábamos escribiendo una función llamada add_floats. 38 00:01:33,900 --> 00:01:36,160 Vamos a pasar dos argumentos, ambos flotadores, 39 00:01:36,160 --> 00:01:37,510 llama primero y segundo. 40 00:01:37,510 --> 00:01:40,520 Y nos dirá cuál es la suma de los flotadores es. 41 00:01:40,520 --> 00:01:43,000 Sabemos que si sumamos dos flotadores juntos, el resultado 42 00:01:43,000 --> 00:01:44,120 será un flotador. 43 00:01:44,120 --> 00:01:47,540 Teniendo en cuenta que, elegimos un tipo de retorno de flotador. 44 00:01:47,540 --> 00:01:50,040 Esta función será realizar este cálculo y volver 45 00:01:50,040 --> 00:01:52,260 los valores de una declaración como la devolución 46 00:01:52,260 --> 00:01:54,770 primero + segundo;. 47 00:01:54,770 --> 00:01:57,300 Cuando el control se devuelve al código de llamada, el 48 00:01:57,300 --> 00:02:00,030 El valor resultante está disponible para ese código. 49 00:02:00,030 --> 00:02:04,250 Podemos almacenar este valor, así: float resultado = 50 00:02:04,250 --> 00:02:09,410 add_floats (3,14, 1,62 51 00:02:09,410 --> 00:02:11,290 ). 52 00:02:11,290 --> 00:02:15,200 Resultado en este caso ahora contendría el valor 4,76. 53 00:02:15,200 --> 00:02:18,620 >> Como recordatorio, los valores de punto flotante son imprecisas. 54 00:02:18,620 --> 00:02:21,250 Así que si se trataba de un cálculo financiero, utilizando dólares y 55 00:02:21,250 --> 00:02:24,960 centavos de dólar, es posible que desee considerar un tipo de datos precisos, tales como 56 00:02:24,960 --> 00:02:29,120 int y realizar el cálculo en peniques. 57 00:02:29,120 --> 00:02:31,270 >> Otro caso en el que se desea devolver un valor desde una 58 00:02:31,270 --> 00:02:33,980 Se presenta cuando queremos saber si una función se 59 00:02:33,980 --> 00:02:35,960 exitosa. 60 00:02:35,960 --> 00:02:39,190 Si no se ha realizado correctamente, también puede querer saber qué tipo de 61 00:02:39,190 --> 00:02:41,250 error. 62 00:02:41,250 --> 00:02:43,647 Digamos que estamos intentando abrir un archivo en el disco para contar 63 00:02:43,647 --> 00:02:45,220 el número de caracteres en ella. 64 00:02:45,220 --> 00:02:48,635 Si el archivo no se puede abrir, que quiere ser capaz de detener y 65 00:02:48,635 --> 00:02:50,910 informar al usuario sobre el problema. 66 00:02:50,910 --> 00:02:54,070 >> Llamaremos a nuestros count_file_chars función y lo hará 67 00:02:54,070 --> 00:02:55,490 tomar un argumento. 68 00:02:55,490 --> 00:02:57,420 Vamos a pasar en el nombre del archivo usando una 69 00:02:57,420 --> 00:02:59,610 char * nombre del archivo llamado. 70 00:02:59,610 --> 00:03:03,050 Esta función podría ser algo como esto. 71 00:03:03,050 --> 00:03:05,450 En este ejemplo, se esperaría que el número devuelto a 72 00:03:05,450 --> 00:03:07,130 ser 0 o más. 73 00:03:07,130 --> 00:03:08,870 Esto nos deja a los enteros negativos 74 00:03:08,870 --> 00:03:10,200 utilizar como valores de centinela. 75 00:03:10,200 --> 00:03:13,320 Un valor centinela es simplemente un valor especial que no es 76 00:03:13,320 --> 00:03:16,200 datos legítimos, pero que transmitir la información. 77 00:03:16,200 --> 00:03:19,480 En este caso, si vuelvo un -1 al código de llamada, estoy 78 00:03:19,480 --> 00:03:21,830 de enviar el mensaje de que ha ocurrido un error mientras 79 00:03:21,830 --> 00:03:23,810 tratando de acceder al archivo. 80 00:03:23,810 --> 00:03:26,060 Entonces podría comprobar que el valor de retorno para determinar si mi 81 00:03:26,060 --> 00:03:28,060 llamada a la función se realizó correctamente. 82 00:03:28,060 --> 00:03:30,350 Si el número es 0 o mayor, me gustaría saber el 83 00:03:30,350 --> 00:03:32,180 número de caracteres en el archivo. 84 00:03:32,180 --> 00:03:35,310 Si, sin embargo, el número fue de menos de 0, podría simplemente 85 00:03:35,310 --> 00:03:37,350 imprimir un problema que había ocurrido. 86 00:03:37,350 --> 00:03:40,120 Una solución de compromiso a tener en cuenta es que al reservar todo el 87 00:03:40,120 --> 00:03:43,180 valores negativos como valores centinela, asumiendo que este es un 88 00:03:43,180 --> 00:03:46,070 32-bit entero, he quitado esencialmente en torno a 89 00:03:46,070 --> 00:03:48,970 2 mil millones posibles valores devueltos. 90 00:03:48,970 --> 00:03:51,270 >> Tipos de valor devueltos de valor son uno de los elementos más importantes de 91 00:03:51,270 --> 00:03:52,460 llamadas a funciones. 92 00:03:52,460 --> 00:03:54,670 Esperemos que este breve resumen le haya ayudado a pensar en 93 00:03:54,670 --> 00:03:59,110 tres tipos fundamentales: vacíos, valores de resultado, y los valores centinela, 94 00:03:59,110 --> 00:04:00,190 y cuando cada uno de los tres podrían estar 95 00:04:00,190 --> 00:04:02,010 correspondiente en el código. 96 00:04:02,010 --> 00:04:03,260 Gracias por su atención.