1 00:00:00,000 --> 00:00:04,664 2 00:00:04,664 --> 00:00:05,580 DOUG LLOYD: De acuerdo. 3 00:00:05,580 --> 00:00:08,877 Así que ahora vamos a una entrada Realmente gran tema, funciones. 4 00:00:08,877 --> 00:00:11,460 Hasta ahora, en el curso, todo el programas que hemos estado escribiendo 5 00:00:11,460 --> 00:00:12,969 se han escrito en el interior de la principal. 6 00:00:12,969 --> 00:00:14,260 Son programas muy simples. 7 00:00:14,260 --> 00:00:16,940 Usted no necesita tener todos estos ramas y cosas que hacer. 8 00:00:16,940 --> 00:00:18,773 Sólo podemos hacerlo todo dentro del principal y 9 00:00:18,773 --> 00:00:20,407 no conseguir terriblemente abrumador. 10 00:00:20,407 --> 00:00:22,990 Pero a medida que el curso sigue y a medida que comienza a desarrollar programas 11 00:00:22,990 --> 00:00:26,260 independiente, probablemente van para empezar a obtener una gran cantidad más de 10 12 00:00:26,260 --> 00:00:27,200 o 15 líneas. 13 00:00:27,200 --> 00:00:31,400 Usted puede obtener cientos o miles o decenas de miles de líneas de código. 14 00:00:31,400 --> 00:00:34,690 Y en realidad no es que loco un pensamiento. 15 00:00:34,690 --> 00:00:39,720 Como tal, no es probablemente una buena idea para mantener todo el interior de la principal. 16 00:00:39,720 --> 00:00:43,240 Puede ser un poco difícil de encontrar lo que estás buscando si haces eso. 17 00:00:43,240 --> 00:00:47,040 >> Afortunadamente, a pesar de C, y más o menos cualquier otro lenguaje de programación que 18 00:00:47,040 --> 00:00:50,386 podrían trabajar, permite que escribamos funciones. 19 00:00:50,386 --> 00:00:52,260 Y yo sólo voy a tomar una rápida lado aquí 20 00:00:52,260 --> 00:00:54,971 mencionar que las funciones es un área de la informática. 21 00:00:54,971 --> 00:00:57,970 Y verás muchos más de ellos en varios puntos a lo largo del curso 22 00:00:57,970 --> 00:00:59,290 y si continúa adelante. 23 00:00:59,290 --> 00:01:02,280 Donde hay una gran cantidad de sinónimos de la misma palabra. 24 00:01:02,280 --> 00:01:03,390 Así que llamamos a las funciones. 25 00:01:03,390 --> 00:01:05,980 Pero también puede ser que oírlos referido como procedimientos, 26 00:01:05,980 --> 00:01:09,570 o métodos, sobre todo, si tienes alguna vez hecho ninguna programación orientada a objetos 27 00:01:09,570 --> 00:01:11,950 antes-- y no te preocupes si no, no tiene 28 00:01:11,950 --> 00:01:14,280 un gran deal-- pero en orientado auditoría idiomas 29 00:01:14,280 --> 00:01:16,129 son llamados con frecuencia métodos. 30 00:01:16,129 --> 00:01:17,670 A veces se les llama subrutinas. 31 00:01:17,670 --> 00:01:20,690 Pero lo que realmente todos se refieren a la misma idea básica. 32 00:01:20,690 --> 00:01:22,480 >> Vamos a ver lo que esa idea es. 33 00:01:22,480 --> 00:01:23,310 ¿Qué es una función? 34 00:01:23,310 --> 00:01:26,470 Bueno una función es realmente nada más que un cuadro negro. 35 00:01:26,470 --> 00:01:31,430 Un cuadro negro que tiene un conjunto de cero o más entradas y una sola salida. 36 00:01:31,430 --> 00:01:33,420 Así, por ejemplo, este podría ser una función. 37 00:01:33,420 --> 00:01:35,510 Esta es una función llamada func. 38 00:01:35,510 --> 00:01:39,330 Y se necesita tres entradas a, b y c. 39 00:01:39,330 --> 00:01:42,580 Y dentro de esa caja negro, nos No sé exactamente lo que hace, 40 00:01:42,580 --> 00:01:45,100 pero procesa las entradas de alguna manera y entonces 41 00:01:45,100 --> 00:01:48,680 da una sola salida, en este caso, z. 42 00:01:48,680 --> 00:01:50,504 Ahora, para que sea un poco menos abstracto, nos 43 00:01:50,504 --> 00:01:52,420 Podríamos decir que tal vez tener una función llamada 44 00:01:52,420 --> 00:01:58,750 añadir que tiene tres entradas a, b, y c y procesa la salida de alguna manera 45 00:01:58,750 --> 00:02:01,010 dentro de la caja de negro para producir una única salida. 46 00:02:01,010 --> 00:02:05,190 Así pues, en este caso, si añadir toma 3, 6 y 7. 47 00:02:05,190 --> 00:02:07,020 En algún lugar dentro de la añadir la función, lo haríamos 48 00:02:07,020 --> 00:02:09,750 esperar que se sumarán para producir la salida, la cual 49 00:02:09,750 --> 00:02:13,220 es 3 más 6 más 7 o 16. 50 00:02:13,220 --> 00:02:17,940 >> Del mismo modo, tiene una función llamada mult que tiene dos entradas, A y B, 51 00:02:17,940 --> 00:02:21,070 los procesa de alguna manera que la salida de la función 52 00:02:21,070 --> 00:02:22,920 es el producto de las dos entradas. 53 00:02:22,920 --> 00:02:25,080 Las dos entradas multiplican entre sí. 54 00:02:25,080 --> 00:02:29,150 4 y 5 se traspasó mult, algo sucede, el resultado que esperamos 55 00:02:29,150 --> 00:02:31,090 es 20. 56 00:02:31,090 --> 00:02:32,507 ¿Por qué lo llamamos un cuadro negro? 57 00:02:32,507 --> 00:02:34,840 Bueno, si no estamos escribiendo la Funciones a nosotros mismos, lo que 58 00:02:34,840 --> 00:02:36,869 hemos hecho un poco en lo que va CS50. 59 00:02:36,869 --> 00:02:39,910 Hemos visto de impresión f, por ejemplo, que es una función que no escribimos 60 00:02:39,910 --> 00:02:42,305 nosotros mismos, sino que hace uso de todo el tiempo. 61 00:02:42,305 --> 00:02:44,180 Si no estamos escribiendo las funciones de nosotros mismos, 62 00:02:44,180 --> 00:02:48,450 que realmente no necesitamos saber cómo es realmente implementado bajo el capó. 63 00:02:48,450 --> 00:02:51,710 >> Así por ejemplo, el cuadro negro I sólo le mostró para la multiplicación, 64 00:02:51,710 --> 00:02:53,740 mult a, b podría ser defined-- y esto es sólo 65 00:02:53,740 --> 00:02:57,902 algunos pseudocode-- podría ser definida como la producción a veces b. 66 00:02:57,902 --> 00:02:58,860 Eso tiene sentido, a la derecha. 67 00:02:58,860 --> 00:03:01,370 Si tenemos una función llamada mult que tiene dos entradas. 68 00:03:01,370 --> 00:03:04,750 Es de esperar que la salida sería ser las dos entradas multiplican entre sí, 69 00:03:04,750 --> 00:03:06,240 unas veces b. 70 00:03:06,240 --> 00:03:09,170 Pero también podría ser mult implementado como este, 71 00:03:09,170 --> 00:03:13,150 tenemos un contador variable ponerse en el interior de mult a 0. 72 00:03:13,150 --> 00:03:18,000 Y luego repetimos este proceso b veces agregan un marcador. 73 00:03:18,000 --> 00:03:24,270 Por ejemplo, si multiplicamos por 3 bis 5b, podríamos decir establecer contador a 0, 74 00:03:24,270 --> 00:03:27,700 repetir cinco veces, añadir 3 al marcador. 75 00:03:27,700 --> 00:03:34,490 Así que empezamos a 0 y luego hacemos esto cinco veces 3, 6, 9, 12, 15. 76 00:03:34,490 --> 00:03:37,500 Es el mismo resultado. Nosotros aún así obtener 3 veces 5 solo 77 00:03:37,500 --> 00:03:39,500 la implementación es diferente. 78 00:03:39,500 --> 00:03:41,490 >> Eso es lo que queremos decir cuando decimos que un cuadro negro. 79 00:03:41,490 --> 00:03:44,406 Sólo significa que realmente no importa cómo se implementa bajo el capó 80 00:03:44,406 --> 00:03:46,170 siempre y cuando la salida es lo que esperamos. 81 00:03:46,170 --> 00:03:49,045 De hecho, eso es parte del contrato de la utilización de las funciones, en particular 82 00:03:49,045 --> 00:03:50,630 funciones que otros escriben. 83 00:03:50,630 --> 00:03:53,980 El comportamiento siempre va ser típico, impredecible 84 00:03:53,980 --> 00:03:55,420 basado en el nombre de la función. 85 00:03:55,420 --> 00:03:57,500 Y es por eso que es muy importante a la hora de escribir funciones 86 00:03:57,500 --> 00:04:00,020 o cuando otras personas escriben funciones que puede utilizar, 87 00:04:00,020 --> 00:04:03,590 que dichas funciones tienen claras, nombres relativamente obvias, 88 00:04:03,590 --> 00:04:04,990 y están bien documentados. 89 00:04:04,990 --> 00:04:08,560 Lo cual es ciertamente el caso para la función como la impresión f. 90 00:04:08,560 --> 00:04:09,860 >> Entonces, ¿por qué utilizamos funciones? 91 00:04:09,860 --> 00:04:14,220 Bueno, como he dicho antes, si escribimos todo nuestro código dentro de las cosas principales 92 00:04:14,220 --> 00:04:17,120 puede ser realmente complicado y realmente complicado. 93 00:04:17,120 --> 00:04:19,980 Funciones nos permiten la capacidad para organizar las cosas y romper 94 00:04:19,980 --> 00:04:24,540 un problema muy complicado en muchas partes sub más manejables. 95 00:04:24,540 --> 00:04:28,130 Las funciones también nos permiten simplificar el proceso de codificación. 96 00:04:28,130 --> 00:04:33,080 Es mucho más fácil de depurar un 10 función de línea frente a una línea de 100 97 00:04:33,080 --> 00:04:35,890 función o una función de línea de 1000. 98 00:04:35,890 --> 00:04:38,400 Si tan sólo tenemos que depurar pequeñas piezas a la vez, 99 00:04:38,400 --> 00:04:42,110 o escribir pequeños trozos de la época, que hace que la experiencia en programación 100 00:04:42,110 --> 00:04:43,070 mucho mejor. 101 00:04:43,070 --> 00:04:44,910 Confía en mí en eso. 102 00:04:44,910 --> 00:04:48,400 >> Por último, si escribimos funciones que puede reutilizar esas diversas partes. 103 00:04:48,400 --> 00:04:49,880 Las funciones pueden ser reciclados. 104 00:04:49,880 --> 00:04:51,880 Pueden ser utilizados en un programa u otro. 105 00:04:51,880 --> 00:04:53,713 Ya has escrito la función, todo lo que 106 00:04:53,713 --> 00:04:56,530 hay que hacer es decirle a ese programa dónde encontrar esa función. 107 00:04:56,530 --> 00:04:59,680 Hemos estado reciclando y utilizando imprimir f por más de 40 años. 108 00:04:59,680 --> 00:05:02,150 Pero sólo fue escrito una vez. 109 00:05:02,150 --> 00:05:04,270 Bastante útil, derecha. 110 00:05:04,270 --> 00:05:04,830 Correcto. 111 00:05:04,830 --> 00:05:06,040 Así funciones son grandes. 112 00:05:06,040 --> 00:05:06,860 Lo sabemos. 113 00:05:06,860 --> 00:05:08,700 Ahora vamos a empezar a escribir ellos. 114 00:05:08,700 --> 00:05:10,830 Empecemos conseguir ellos en nuestros programas. 115 00:05:10,830 --> 00:05:13,869 Con el fin de hacer eso, la primera Lo que hacemos es declarar la función. 116 00:05:13,869 --> 00:05:16,160 Cuando se declara una función lo que estás haciendo, básicamente, 117 00:05:16,160 --> 00:05:18,900 está diciendo que el compilador, bueno, para que lo sepas, 118 00:05:18,900 --> 00:05:20,850 Voy a estar escribiendo una función más adelante 119 00:05:20,850 --> 00:05:22,987 y esto es lo que va a ser similar. 120 00:05:22,987 --> 00:05:24,820 La razón de esto es porque los compiladores puede 121 00:05:24,820 --> 00:05:27,900 hacer algunas cosas extrañas si ven un conjunto de símbolos 122 00:05:27,900 --> 00:05:29,560 que no están familiarizados. 123 00:05:29,560 --> 00:05:33,000 Así que sólo nos damos el compilador una heads up, estoy creando una función 124 00:05:33,000 --> 00:05:35,492 y que va a hacer esto. 125 00:05:35,492 --> 00:05:38,450 Declaraciones de función general si usted está organizando su código de manera 126 00:05:38,450 --> 00:05:41,872 que otros podrán entender y hacer uso de, 127 00:05:41,872 --> 00:05:44,330 por lo general, quiere poner todo de sus declaraciones de funciones 128 00:05:44,330 --> 00:05:48,220 en la parte superior de su código, a la derecha antes de empezar a escribir incluso principal. 129 00:05:48,220 --> 00:05:50,770 Y convenientemente, hay una forma muy estándar 130 00:05:50,770 --> 00:05:53,500 que cada declaración sigue a la función. 131 00:05:53,500 --> 00:05:56,090 Ellos todos más o menos el siguiente aspecto. 132 00:05:56,090 --> 00:06:01,440 Hay tres partes a una función declaración, el tipo de devolución, nombre, 133 00:06:01,440 --> 00:06:03,420 y la lista de argumentos. 134 00:06:03,420 --> 00:06:07,180 >> Ahora el tipo de retorno es qué tipo de variable de la salida de función voluntad. 135 00:06:07,180 --> 00:06:10,710 Así por ejemplo, si pensamos volver un Hace minutos a la multiplicación de dos 136 00:06:10,710 --> 00:06:15,690 función de los números, ¿qué esperamos si multiplicamos un número entero por un número entero 137 00:06:15,690 --> 00:06:18,502 la salida será Probablemente un número entero, a la derecha. 138 00:06:18,502 --> 00:06:20,710 Multiplica dos enteros juntos, se obtiene un entero. 139 00:06:20,710 --> 00:06:24,167 Así que el tipo de retorno de esa función sería int. 140 00:06:24,167 --> 00:06:26,000 Nombre es lo que quieres para llamar a su función. 141 00:06:26,000 --> 00:06:29,330 Este es probablemente el menos importante parte de la declaración de la función, 142 00:06:29,330 --> 00:06:30,827 en términos de funcionalidad. 143 00:06:30,827 --> 00:06:33,160 Pero en realidad es probablemente uno de las partes más importantes 144 00:06:33,160 --> 00:06:36,243 de la declaración de la función en términos de saber lo que la función de realidad 145 00:06:36,243 --> 00:06:37,120 hace. 146 00:06:37,120 --> 00:06:40,474 Si el nombre de su función f o g o ho misterio o algo así, 147 00:06:40,474 --> 00:06:42,765 usted está probablemente va a conseguir un poco tropezó tratando 148 00:06:42,765 --> 00:06:44,650 recordar cuáles son esas funciones lo hacen. 149 00:06:44,650 --> 00:06:47,880 Así que es importante darle a su nombres significativos de función. 150 00:06:47,880 --> 00:06:51,030 >> Por último, la lista de argumentos es la lista separada por comas 151 00:06:51,030 --> 00:06:55,260 de todas las entradas a su función, cada uno de los cuales tiene un tipo y un nombre. 152 00:06:55,260 --> 00:06:57,840 Así que no sólo tiene usted que especificar qué tipo de variable 153 00:06:57,840 --> 00:07:00,760 la salida de la función de la voluntad, también desea especificar 154 00:07:00,760 --> 00:07:07,694 qué tipo y tipos de variables las la función estará aceptando como entradas. 155 00:07:07,694 --> 00:07:08,860 Así que vamos a hacer un ejemplo aquí. 156 00:07:08,860 --> 00:07:10,220 Vamos a echar un vistazo a uno más concreto. 157 00:07:10,220 --> 00:07:13,130 Así que aquí está un ejemplo de una función declaración para una función que 158 00:07:13,130 --> 00:07:14,925 añadiría dos enteros juntos. 159 00:07:14,925 --> 00:07:17,800 La suma de dos números enteros va a sea ​​un número entero, así, como acabamos 160 00:07:17,800 --> 00:07:18,450 discutido. 161 00:07:18,450 --> 00:07:21,610 Y por lo que el tipo de retorno, aquí en verde, sería int. 162 00:07:21,610 --> 00:07:25,190 Eso sólo nosotros que añadir dos ints dice va a, al final del día, 163 00:07:25,190 --> 00:07:28,799 salida o escupir de nuevo a nosotros, un entero. 164 00:07:28,799 --> 00:07:31,590 Teniendo en cuenta lo que hace esta función nos que desee darle un nombre significativo. 165 00:07:31,590 --> 00:07:33,630 Añadir dos enteros parece apropiado, teniendo en cuenta 166 00:07:33,630 --> 00:07:37,574 estamos tomando dos enteros como entradas y es de esperar sumarlos. 167 00:07:37,574 --> 00:07:40,240 Puede ser que sea un poco engorroso nombre y, francamente, esta función 168 00:07:40,240 --> 00:07:42,430 es probable que no sea necesario ya que contamos con la adición 169 00:07:42,430 --> 00:07:46,310 operador, si usted recuerda de nuestra discusión de los operadores, con anterioridad. 170 00:07:46,310 --> 00:07:49,650 Pero digamos que por el bien de argumento de que esta función es útil 171 00:07:49,650 --> 00:07:52,860 y así lo vamos a llamar añadir dos enteros. 172 00:07:52,860 --> 00:07:55,230 Por último, esta función toma dos entradas. 173 00:07:55,230 --> 00:07:56,960 Cada uno de los cuales es un número entero. 174 00:07:56,960 --> 00:07:59,900 Así que tenemos esta comas lista separada de los insumos. 175 00:07:59,900 --> 00:08:02,830 Ahora por lo general queremos dar un nombre a cada uno de ellos 176 00:08:02,830 --> 00:08:05,070 de modo que puedan ser utilizados dentro de la función. 177 00:08:05,070 --> 00:08:07,180 Los nombres no son muy importantes. 178 00:08:07,180 --> 00:08:11,400 >> En este caso, no lo hacemos necesariamente tener algún significado unido a ellos. 179 00:08:11,400 --> 00:08:13,140 Así que sólo les podemos llamar a y b. 180 00:08:13,140 --> 00:08:14,257 Eso es totalmente bien. 181 00:08:14,257 --> 00:08:16,090 Sin embargo, si usted encuentra en una situación 182 00:08:16,090 --> 00:08:19,497 donde los nombres de las variables en realidad podría ser importante, 183 00:08:19,497 --> 00:08:21,830 es posible que desee llamar algo distinto de A y B 184 00:08:21,830 --> 00:08:24,701 darles algo más simbólicamente significativa. 185 00:08:24,701 --> 00:08:27,700 Pero en este caso, no lo hacemos de verdad saber algo más acerca de la función. 186 00:08:27,700 --> 00:08:29,320 Sólo queremos sumar dos números enteros. 187 00:08:29,320 --> 00:08:32,429 Así que sólo llamaremos los números enteros a y b. 188 00:08:32,429 --> 00:08:33,990 Eso es un ejemplo. 189 00:08:33,990 --> 00:08:36,287 >> ¿Por qué no te tomas un segundo pensar acerca de esto, 190 00:08:36,287 --> 00:08:38,870 ¿cómo escribir una función declaración para una función que 191 00:08:38,870 --> 00:08:42,940 multiplica dos números de punto flotante? 192 00:08:42,940 --> 00:08:45,910 ¿Te acuerdas de lo que es un número de punto flotante es? 193 00:08:45,910 --> 00:08:48,120 ¿Qué sería de esta función declaración parece? 194 00:08:48,120 --> 00:08:53,330 Realmente te recomiendo que pausar el video aquí y toma la cantidad de tiempo que necesita. 195 00:08:53,330 --> 00:08:55,521 Piense en lo que esto declaración de la función sería? 196 00:08:55,521 --> 00:08:56,770 ¿Cuál sería el tipo de cambio? 197 00:08:56,770 --> 00:08:58,103 ¿Cuál sería un nombre significativo? 198 00:08:58,103 --> 00:08:59,580 ¿Cuáles serían las entradas? 199 00:08:59,580 --> 00:09:03,190 Así que ¿por qué no hace una pausa en el video aquí y escribir en marcha una declaración de función 200 00:09:03,190 --> 00:09:07,640 para una función que se multiplicaría dos números de punto flotante juntos. 201 00:09:07,640 --> 00:09:09,330 Esperemos que pausa el video. 202 00:09:09,330 --> 00:09:12,950 >> Así que vamos a echar un vistazo a un ejemplo de una sola declaración posible. 203 00:09:12,950 --> 00:09:17,340 Flotador mult dos reales flotan x, float y. 204 00:09:17,340 --> 00:09:19,090 El producto de dos números de punto flotante, 205 00:09:19,090 --> 00:09:21,710 que recordar son la forma en que representar números reales 206 00:09:21,710 --> 00:09:26,770 o números con valores decimales en c, va a ser un número de punto flotante. 207 00:09:26,770 --> 00:09:28,570 Cuando multiplicas un decimal por un número decimal, 208 00:09:28,570 --> 00:09:30,460 usted está probablemente va a conseguir un decimal. 209 00:09:30,460 --> 00:09:31,960 ¿Quieres darle un nombre relevante. 210 00:09:31,960 --> 00:09:33,810 Multiplicar dos reales parece bien. 211 00:09:33,810 --> 00:09:36,620 Pero usted podría realmente llamar mult dos flotadores o boyas mult. 212 00:09:36,620 --> 00:09:39,540 Nada de eso, siempre y cuando dio un significado real a lo que 213 00:09:39,540 --> 00:09:41,469 este cuadro negro que iba a hacer. 214 00:09:41,469 --> 00:09:44,260 Y de nuevo, en este caso, no lo hacemos parece tener ningún significado adjunta 215 00:09:44,260 --> 00:09:46,390 a los nombres de la las variables que estamos pasando en, 216 00:09:46,390 --> 00:09:48,645 así que sólo los llamamos x e y. 217 00:09:48,645 --> 00:09:51,020 Ahora bien, si usted los llama algo otra cosa, eso es totalmente bien. 218 00:09:51,020 --> 00:09:53,310 De hecho, si lo has hecho esta declaración en su lugar 219 00:09:53,310 --> 00:09:55,450 utilizando dobles vez de flotadores, si recuerdas 220 00:09:55,450 --> 00:09:59,100 que los dobles son una diferente manera de forma más precisa 221 00:09:59,100 --> 00:10:02,330 especificar los números reales o variables de punto flotante. 222 00:10:02,330 --> 00:10:03,620 Eso es totalmente bien también. 223 00:10:03,620 --> 00:10:04,670 Cualquiera de los que estaría bien. 224 00:10:04,670 --> 00:10:06,711 De hecho, hay varios diferentes combinaciones 225 00:10:06,711 --> 00:10:08,410 de maneras de declarar esta función. 226 00:10:08,410 --> 00:10:10,884 Pero estos son dos muy buenos. 227 00:10:10,884 --> 00:10:12,550 Hemos declarado una función, eso es genial. 228 00:10:12,550 --> 00:10:15,700 Le hemos dicho que el compilador lo que Es decir, lo que vamos a hacer. 229 00:10:15,700 --> 00:10:17,630 Ahora vamos a escribir en realidad esa función. 230 00:10:17,630 --> 00:10:20,750 Vamos a darle una definición, por lo que dentro de la caja de negro 231 00:10:20,750 --> 00:10:22,840 comportamiento predecible está sucediendo. 232 00:10:22,840 --> 00:10:26,270 De hecho, estamos multiplicando dos reales números juntos, o la adición de números 233 00:10:26,270 --> 00:10:29,760 juntos, o hacer lo que sea que pedimos nuestra función de hacer. 234 00:10:29,760 --> 00:10:32,780 >> Así que, de hecho, vamos a tratar de definir multiplicar dos números reales que acabamos 235 00:10:32,780 --> 00:10:35,350 hablado hace un segundo. 236 00:10:35,350 --> 00:10:38,560 Ahora bien, el principio de una definición de función 237 00:10:38,560 --> 00:10:41,720 se ve casi exactamente el mismo como una declaración de la función. 238 00:10:41,720 --> 00:10:43,170 Tengo dos de ellos aquí. 239 00:10:43,170 --> 00:10:47,770 En la parte superior es la declaración de la función, tipo, nombre, separados por comas argumento 240 00:10:47,770 --> 00:10:49,410 lista, punto y coma. 241 00:10:49,410 --> 00:10:53,800 El punto y coma indica que que es una declaración de la función. 242 00:10:53,800 --> 00:10:57,060 El principio de la función definición se ve casi exactamente 243 00:10:57,060 --> 00:11:03,790 la misma, tipo, nombre, separados por comas lista de argumentos, sin punto y coma, 244 00:11:03,790 --> 00:11:05,206 abrir corchete. 245 00:11:05,206 --> 00:11:07,580 La llave de apertura, al igual que que hemos estado haciendo con el principal, 246 00:11:07,580 --> 00:11:09,540 significa que estamos ahora comenzando a definir 247 00:11:09,540 --> 00:11:14,567 lo que sucede dentro de la caja negro que hemos decidido llamar mult dos reales. 248 00:11:14,567 --> 00:11:15,900 Aquí es una manera de ponerlo en práctica. 249 00:11:15,900 --> 00:11:20,370 Podríamos decir, podríamos declarar un nuevo variable del flotador llamado tipo de producto 250 00:11:20,370 --> 00:11:24,020 y asignar dicha variable al valor de x veces y. 251 00:11:24,020 --> 00:11:27,306 Y luego devolver el producto. 252 00:11:27,306 --> 00:11:28,430 ¿Qué significa aquí retorno. 253 00:11:28,430 --> 00:11:31,090 Bueno retorno es el camino indicamos que es como 254 00:11:31,090 --> 00:11:33,400 estamos pasando la salida de vuelta. 255 00:11:33,400 --> 00:11:38,160 Así devolver algo, es la misma que, esta es la salida de la caja de color negro. 256 00:11:38,160 --> 00:11:40,732 Así que esa es la forma de hacerlo. 257 00:11:40,732 --> 00:11:42,190 Aquí hay otra manera de ponerlo en práctica. 258 00:11:42,190 --> 00:11:45,050 Podríamos simplemente volver x veces y. 259 00:11:45,050 --> 00:11:45,870 x es un flotador. 260 00:11:45,870 --> 00:11:46,660 y es un flotador. 261 00:11:46,660 --> 00:11:48,490 Así que x veces y también es un flotador. 262 00:11:48,490 --> 00:11:50,750 Ni siquiera necesitamos crear otra variable. 263 00:11:50,750 --> 00:11:56,750 Así que esa es una manera diferente de aplicar el mismo cuadro negro exacta. 264 00:11:56,750 --> 00:11:58,570 >> Ahora tome un momento, pausar el video de nuevo, 265 00:11:58,570 --> 00:12:01,680 y tratar de definir sumar dos enteros, que es la otra función que nos 266 00:12:01,680 --> 00:12:03,090 hablado hace un momento. 267 00:12:03,090 --> 00:12:06,440 De nuevo aquí, he puesto la función declaración, por lo que el punto y coma, 268 00:12:06,440 --> 00:12:08,420 y un corchete abierto y un rizado cerrada 269 00:12:08,420 --> 00:12:12,080 abrazadera para indicar dónde vamos a llenar en los contenidos de sumar dos enteros, 270 00:12:12,080 --> 00:12:15,530 de manera que definimos lo particular el comportamiento dentro de la caja de color negro. 271 00:12:15,530 --> 00:12:16,380 Así que hacer una pausa en el vídeo. 272 00:12:16,380 --> 00:12:18,790 Y tomar todo el tiempo que hay que probar y definir 273 00:12:18,790 --> 00:12:25,040 una implementación de sumar dos enteros, tales que cuando la función de salida a un valor, 274 00:12:25,040 --> 00:12:29,209 lo hace, de hecho, el regreso la suma de las dos entradas. 275 00:12:29,209 --> 00:12:32,000 Así que al igual que el ejemplo anterior, hay varias maneras diferentes 276 00:12:32,000 --> 00:12:34,210 que se podía aplicar añadir dos enteros. 277 00:12:34,210 --> 00:12:35,130 Aquí hay uno. 278 00:12:35,130 --> 00:12:37,172 Aquí en naranja tengo sólo tenía algunos comments-- 279 00:12:37,172 --> 00:12:38,880 Yo sólo he añadido algunos comentarios para indicar 280 00:12:38,880 --> 00:12:41,400 lo que está sucediendo en cada línea de código. 281 00:12:41,400 --> 00:12:45,430 Así que me declaro una variable llamada suma de tipo int. 282 00:12:45,430 --> 00:12:47,279 Digo suma es igual a más b. 283 00:12:47,279 --> 00:12:50,070 Ahí es donde en realidad estamos haciendo el trabajo añadiendo A y B juntos. 284 00:12:50,070 --> 00:12:51,850 Y vuelvo suma. 285 00:12:51,850 --> 00:12:56,460 Y eso tiene sentido porque suma es una variable de tipo int. 286 00:12:56,460 --> 00:13:00,180 Y ¿cuál es el tipo de datos que esta función me dice que va a la salida? 287 00:13:00,180 --> 00:13:00,680 Int. 288 00:13:00,680 --> 00:13:03,072 Así que estoy volviendo suma, que es una variable entera. 289 00:13:03,072 --> 00:13:06,030 Y eso tiene sentido teniendo en cuenta lo que hemos declarado y definido nuestra función 290 00:13:06,030 --> 00:13:07,320 hacer. 291 00:13:07,320 --> 00:13:09,700 >> Ahora usted también puede definir la función de esta manera, 292 00:13:09,700 --> 00:13:15,260 int suma es igual a un plus B-- saltar esa primero step-- y luego, volver suma. 293 00:13:15,260 --> 00:13:17,760 Ahora usted podría tener también implementado de esta manera, 294 00:13:17,760 --> 00:13:19,180 que le recomiendo no lo recomiendo. 295 00:13:19,180 --> 00:13:22,540 Esto es malo para un estilo cosa y muy mal diseño, 296 00:13:22,540 --> 00:13:24,420 pero lo hace, de hecho, el trabajo. 297 00:13:24,420 --> 00:13:30,199 Si toma este código, que es int agregar mal punto sumador de c, y lo utilizan. 298 00:13:30,199 --> 00:13:31,990 En realidad, se le añade dos enteros juntos. 299 00:13:31,990 --> 00:13:37,632 Es una aplicación muy mala de este comportamiento en particular. 300 00:13:37,632 --> 00:13:38,340 Pero funciona. 301 00:13:38,340 --> 00:13:41,200 Es sólo para ilustrar el punto de que no lo hacemos de verdad 302 00:13:41,200 --> 00:13:44,530 importa lo que sucede en el interior el cuadro de negro, siempre 303 00:13:44,530 --> 00:13:46,510 como lo ha hecho la salida que esperamos. 304 00:13:46,510 --> 00:13:48,870 Este es un cuadro negro mal diseñado. 305 00:13:48,870 --> 00:13:53,801 Pero al final del día, lo hace de salida sigue siendo la suma de a más b. 306 00:13:53,801 --> 00:13:54,300 Correcto. 307 00:13:54,300 --> 00:13:56,320 Así que nos hemos declarado funciones. 308 00:13:56,320 --> 00:13:57,490 Y hemos función definida. 309 00:13:57,490 --> 00:13:58,540 Así que eso es muy bueno. 310 00:13:58,540 --> 00:14:03,020 Ahora vamos a empezar a utilizar las funciones que hemos declarado y hemos definido. 311 00:14:03,020 --> 00:14:05,960 Para llamar a un function-- en realidad bastante easy-- todo lo que tiene que hacer 312 00:14:05,960 --> 00:14:09,070 es pasarlo argumentos apropiados, argumentos del tipo de datos 313 00:14:09,070 --> 00:14:11,600 que espera, y a continuación, asignar el retorno 314 00:14:11,600 --> 00:14:15,190 valor de esa función y esto-- excusa mí-- 315 00:14:15,190 --> 00:14:19,390 asignar el valor de retorno de esa función a algo del tipo correcto. 316 00:14:19,390 --> 00:14:22,410 >> Así que vamos a echar un vistazo a esto en la práctica en un archivo 317 00:14:22,410 --> 00:14:27,730 llamada víbora 1 punto c, que Tengo en mi CS50 IDE. 318 00:14:27,730 --> 00:14:31,042 Así que aquí está el sumador 1 punto c. 319 00:14:31,042 --> 00:14:33,500 A principios veis que yo tengo mi incluye, libras incluyen, 320 00:14:33,500 --> 00:14:35,460 norma IO, y el punto CS50 h. 321 00:14:35,460 --> 00:14:37,700 Y luego tengo mi declaración de la función. 322 00:14:37,700 --> 00:14:39,570 Aquí es donde estoy diciéndole al compilador que soy 323 00:14:39,570 --> 00:14:42,850 va a estar escribiendo una función llamada sumar dos enteros. 324 00:14:42,850 --> 00:14:45,780 Se va a una salida variable de tipo entero. 325 00:14:45,780 --> 00:14:47,360 Eso es lo que esta parte está aquí. 326 00:14:47,360 --> 00:14:51,950 Y luego tengo dos entradas a un y b, cada uno de los cuales es un número entero. 327 00:14:51,950 --> 00:14:58,250 En el interior de la principal, le pido al usuario de entrada diciendo, dame un entero. 328 00:14:58,250 --> 00:15:01,040 Y se les pide que se olvide int, que es una función que 329 00:15:01,040 --> 00:15:03,240 se incluye en la biblioteca CS50. 330 00:15:03,240 --> 00:15:07,660 Y eso se almacena en x, una variable entera. 331 00:15:07,660 --> 00:15:09,886 >> Luego impulsarlos para otro número entero. 332 00:15:09,886 --> 00:15:13,070 Tenemos otro entero y almacenar que, en y. 333 00:15:13,070 --> 00:15:17,990 Y luego, aquí en la línea 28, que es donde realizamos nuestra llamada a la función. 334 00:15:17,990 --> 00:15:23,770 Estamos diciendo, iguales z int añadir 2 enteros x comas y. 335 00:15:23,770 --> 00:15:25,980 ¿Ves por qué esto tiene sentido? 336 00:15:25,980 --> 00:15:29,710 x es una variable de tipo entero y y es una variable de tipo entero. 337 00:15:29,710 --> 00:15:31,220 Así que eso es bueno. 338 00:15:31,220 --> 00:15:34,570 Eso tiene sentido con lo que nuestra función declaración en la línea 17 se parece. 339 00:15:34,570 --> 00:15:38,300 La lista de entrada separada por comas espera dos enteros, a y b. 340 00:15:38,300 --> 00:15:40,300 En ese caso, podemos llamar ellos lo que queramos. 341 00:15:40,300 --> 00:15:42,300 Simplemente espera que dos enteros. 342 00:15:42,300 --> 00:15:44,930 Y x es un número entero e y es un número entero. 343 00:15:44,930 --> 00:15:45,640 Eso funciona. 344 00:15:45,640 --> 00:15:48,680 >> Y sabemos que la función va a la salida de un enteros también. 345 00:15:48,680 --> 00:15:51,290 Y así estamos almacenando el salida de la función, 346 00:15:51,290 --> 00:15:56,050 sumar dos enteros, en un tipo entero variable, lo que estamos llamando z. 347 00:15:56,050 --> 00:16:01,980 Y entonces podemos decir, la suma de i ciento y ciento por ciento i es i. 348 00:16:01,980 --> 00:16:06,210 x, y y z respectivamente rellenar los ciento i de. 349 00:16:06,210 --> 00:16:08,334 ¿Cuál es la definición de añaden dos enteros parecen? 350 00:16:08,334 --> 00:16:09,125 Es muy sencillo. 351 00:16:09,125 --> 00:16:11,270 Es uno de los que acabo de ver hace un segundo, 352 00:16:11,270 --> 00:16:14,390 int suma es igual a una suma más b regreso. 353 00:16:14,390 --> 00:16:15,420 ¿Esto funciona? 354 00:16:15,420 --> 00:16:17,270 Salvemos el archivo. 355 00:16:17,270 --> 00:16:22,080 Y luego aquí en mi terminal Voy a hacer sumador 1, 356 00:16:22,080 --> 00:16:23,000 y yo aclaro la pantalla. 357 00:16:23,000 --> 00:16:25,791 Voy a hacer un zoom porque sé que es un poco difícil de ver. 358 00:16:25,791 --> 00:16:31,520 359 00:16:31,520 --> 00:16:33,770 >> Así que compilamos este programa como sumador 1. 360 00:16:33,770 --> 00:16:37,910 Así que podemos hacer punto slash sumador 1. 361 00:16:37,910 --> 00:16:40,060 Dame un entero, 10. 362 00:16:40,060 --> 00:16:42,380 Dame otro entero, 20. 363 00:16:42,380 --> 00:16:45,200 La suma de 10 y 20 es 30. 364 00:16:45,200 --> 00:16:47,615 Así que hicimos una llamada a la función con éxito. 365 00:16:47,615 --> 00:16:55,820 Puede ejecutar la función de nuevo, negativo 10, 17 suma de negativo 10 y 17 es 7. 366 00:16:55,820 --> 00:16:57,120 Esta función funciona. 367 00:16:57,120 --> 00:16:59,240 Tiene el comportamiento que esperamos que lo haga. 368 00:16:59,240 --> 00:17:03,610 Y así hemos hecho un éxito función, definición, declaración, 369 00:17:03,610 --> 00:17:07,288 y una llamada a la función con éxito. 370 00:17:07,288 --> 00:17:09,079 Miscelánea Pareja puntos sobre las funciones 371 00:17:09,079 --> 00:17:10,611 antes de concluir esta sección. 372 00:17:10,611 --> 00:17:12,319 Recordemos de nuestra discusión de los tipos de datos, 373 00:17:12,319 --> 00:17:16,109 previamente, que las funciones a veces puede tomar ninguna entrada. 374 00:17:16,109 --> 00:17:17,930 Si ese es el caso, declarar la función 375 00:17:17,930 --> 00:17:19,788 como tener una lista vacía argumento. 376 00:17:19,788 --> 00:17:21,579 ¿Recuerda lo que el más función común 377 00:17:21,579 --> 00:17:25,036 que hemos visto hasta el momento que toma una lista de argumentos es nulo? 378 00:17:25,036 --> 00:17:27,300 Su principal. 379 00:17:27,300 --> 00:17:30,850 Recordemos también que la función a veces en realidad no tienen una salida. 380 00:17:30,850 --> 00:17:34,210 En ese caso, declaramos la función como tener un tipo de retorno void. 381 00:17:34,210 --> 00:17:37,880 Vamos a concluir esta sección hacer frente a un problema de la práctica. 382 00:17:37,880 --> 00:17:39,900 >> Así que aquí está el problema presentado. 383 00:17:39,900 --> 00:17:43,630 Yo quiero que escribas una función llamado triángulo válida. 384 00:17:43,630 --> 00:17:47,410 Lo que esta función debe hacer es tomar tres números reales 385 00:17:47,410 --> 00:17:51,930 que representan las longitudes de los tres lados de un triángulo como sus parámetros, 386 00:17:51,930 --> 00:17:54,550 o sus argumentos, o su inputs-- otro conjunto de sinónimos 387 00:17:54,550 --> 00:17:57,340 que pueden surgir. 388 00:17:57,340 --> 00:18:01,120 Esta función debe ya sea de salida verdadero o falso 389 00:18:01,120 --> 00:18:04,960 dependiendo de si esas tres longitudes son capaces de hacer un triángulo. 390 00:18:04,960 --> 00:18:09,930 ¿Recuerdas el tipo de datos que utilizamos para indicar verdadero o falso? 391 00:18:09,930 --> 00:18:11,436 Ahora, ¿cómo se implementa esto? 392 00:18:11,436 --> 00:18:13,810 Bien saben que hay un par de normas relativas a triángulos 393 00:18:13,810 --> 00:18:15,480 que son realmente útil saber. 394 00:18:15,480 --> 00:18:18,292 Un triángulo sólo puede tener lados con longitud positiva. 395 00:18:18,292 --> 00:18:19,000 Eso tiene sentido. 396 00:18:19,000 --> 00:18:21,432 Probablemente usted está diciendo, duh. 397 00:18:21,432 --> 00:18:23,390 La otra cosa a tener en cuenta sin embargo, es que la suma 398 00:18:23,390 --> 00:18:25,484 de las longitudes de cualquier dos lados del triángulo 399 00:18:25,484 --> 00:18:27,650 tiene que ser mayor que la longitud del tercer lado. 400 00:18:27,650 --> 00:18:28,690 Eso es realmente cierto. 401 00:18:28,690 --> 00:18:34,150 No se puede tener un triángulo de lados 1, 2 y 4, por ejemplo, porque plus 1 2 402 00:18:34,150 --> 00:18:36,270 no es mayor que 4. 403 00:18:36,270 --> 00:18:38,870 Así que esas son las reglas que determinar si o no los tres 404 00:18:38,870 --> 00:18:42,740 entradas pueden formar concebible un triángulo. 405 00:18:42,740 --> 00:18:46,360 Así que toma un par de minutos y declarar y definir 406 00:18:46,360 --> 00:18:49,810 esta función se llama válida triángulo, de tal manera que en realidad 407 00:18:49,810 --> 00:18:51,650 tiene el comportamiento especificado aquí. 408 00:18:51,650 --> 00:18:57,030 >> Se dará salida a cierto si esos tres lados son capaces de que comprende un triángulo, 409 00:18:57,030 --> 00:19:01,950 y false en caso contrario Listo para ver cómo lo hizo? 410 00:19:01,950 --> 00:19:04,650 Aquí hay una aplicación triángulo de válido. 411 00:19:04,650 --> 00:19:05,770 No es el único. 412 00:19:05,770 --> 00:19:07,770 El tuyo puede variar ligeramente. 413 00:19:07,770 --> 00:19:11,040 Pero éste lo hace, de hecho, tienen el comportamiento que esperamos. 414 00:19:11,040 --> 00:19:14,450 Declaramos nuestra función en el muy superior, bool triángulo válida 415 00:19:14,450 --> 00:19:16,630 flotar x flotador y flotador z. 416 00:19:16,630 --> 00:19:18,930 Así que de nuevo, esta función lleva tres números reales 417 00:19:18,930 --> 00:19:22,280 como sus argumentos, flotando variables de valor punto, 418 00:19:22,280 --> 00:19:26,510 y emite una verdadera o falsa valor, que es un booleano, el recuerdo. 419 00:19:26,510 --> 00:19:28,660 Así que por eso el tipo de retorno es bool. 420 00:19:28,660 --> 00:19:30,016 Luego definimos la función. 421 00:19:30,016 --> 00:19:33,140 Lo primero que hacemos es comprobar para asegurarse que todos los lados son positivos. 422 00:19:33,140 --> 00:19:37,010 Si x es menor o igual a 0, o si y es igual a 0, 423 00:19:37,010 --> 00:19:41,050 o si z es menor o igual a 0, que no puede posiblemente ser un triángulo. 424 00:19:41,050 --> 00:19:42,380 No tienen aspectos positivos. 425 00:19:42,380 --> 00:19:45,790 Y así podemos volver falso en esa situación. 426 00:19:45,790 --> 00:19:49,010 A continuación, comprobamos para asegurarse que cada par de entradas 427 00:19:49,010 --> 00:19:51,830 es mayor que la tercera. 428 00:19:51,830 --> 00:19:54,530 >> Así que si x más y es menos o igual a z, 429 00:19:54,530 --> 00:19:57,060 o si x más z es menor o igual a Y, 430 00:19:57,060 --> 00:20:01,730 o si y más z es menor o igual a x, que tampoco puede haber un triángulo válida. 431 00:20:01,730 --> 00:20:03,800 Así que volvemos falsa de nuevo. 432 00:20:03,800 --> 00:20:06,900 Suponiendo que pasamos tanto de los controles sin embargo, entonces podemos volver realidad. 433 00:20:06,900 --> 00:20:09,440 Debido a que esas tres lados son capaces de returning-- 434 00:20:09,440 --> 00:20:11,647 de crear un triángulo válida. 435 00:20:11,647 --> 00:20:12,230 Y eso es. 436 00:20:12,230 --> 00:20:13,830 Ahora ha declarado y definido. 437 00:20:13,830 --> 00:20:17,330 Y usted puede ser capaz de ahora usar y llamar a esta función. 438 00:20:17,330 --> 00:20:19,470 Buen trabajo. 439 00:20:19,470 --> 00:20:20,650 Soy Doug Lloyd. 440 00:20:20,650 --> 00:20:22,820 Esto es CS50. 441 00:20:22,820 --> 00:20:24,340