1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funcións son seccións de código utilizadas dentro dun programa máis 2 00:00:09,640 --> 00:00:11,430 para realizar unha determinada tarefa. 3 00:00:11,430 --> 00:00:15,060 Eles tamén son coñecidos como procedementos, rutinas e subprogramas, 4 00:00:15,060 --> 00:00:18,320 unha vez que realmente son só mini programas dentro de programas. 5 00:00:18,320 --> 00:00:20,340 Aínda que pode non ter notado, 6 00:00:20,340 --> 00:00:24,090 definitivamente usar funcións se xa ten programado en C. 7 00:00:24,090 --> 00:00:26,770 Cando escribir cousas na pantalla empregando printf, 8 00:00:26,770 --> 00:00:29,380 está realmente usando unha función chamada printf. 9 00:00:29,380 --> 00:00:33,760 Do mesmo xeito, GetInt e GetString son funcións que CS50 ofrece para ti. 10 00:00:33,760 --> 00:00:37,750 Como desenvolvedores, usamos as funcións dun certo número de razóns. 11 00:00:37,750 --> 00:00:41,240 >> Tendo funcións para realizar tarefas comúns como a escrita para a pantalla 12 00:00:41,240 --> 00:00:44,480 e avisar o usuario para a entrada nos aforra tempo na programación. 13 00:00:44,480 --> 00:00:47,510 Non é necesario escribir código para facer as mesmas cousas 14 00:00:47,510 --> 00:00:49,520 unha vez que está xa fixo por nós. 15 00:00:49,520 --> 00:00:54,580 Non o é necesario para que poidamos entender exactamente como as funcións funcionan internamente. 16 00:00:54,580 --> 00:00:58,880 En vez diso, só ten que saber como usar ou chamalos nos nosos programas. 17 00:00:58,880 --> 00:01:02,040 Tamén é útil para escribir funcións en programas de maiores 18 00:01:02,040 --> 00:01:04,330 mesmo se non está a pensar en ter outros usalos, 19 00:01:04,330 --> 00:01:06,830 só para dividir a maior tarefa na man. 20 00:01:06,830 --> 00:01:11,910 Deste xeito, dáse a estrutura para o seu código moi parecido contigo daría estrutura para un ensaio, 21 00:01:11,910 --> 00:01:15,180 e con proxectos realmente grandes, permitir que varias persoas 22 00:01:15,180 --> 00:01:16,730 para traballar en diferentes partes ao mesmo tempo, 23 00:01:16,730 --> 00:01:20,480 xa que está claro que o traballo dunha persoa remata e outro comeza. 24 00:01:20,480 --> 00:01:26,530 >> Funcións tipicamente operan en unha ou máis entradas, coñecidos como argumentos ou parámetros, 25 00:01:26,530 --> 00:01:30,520 transformando eses insumos nun valor de saída, que despois é devolto. 26 00:01:30,520 --> 00:01:34,950 Con todo, tamén é posible ter funcións que non utilizan os argumentos de entrada 27 00:01:34,950 --> 00:01:36,400 e non retornan unha saída. 28 00:01:36,400 --> 00:01:38,790 Ok, chega co material brando. 29 00:01:38,790 --> 00:01:41,790 Imos dar un ollo a algunhas funcións reais en C. 30 00:01:41,790 --> 00:01:45,570 >> Aquí temos unha función chamada praza que, cren ou non, 31 00:01:45,570 --> 00:01:47,570 calcula o cadrado da entrada. 32 00:01:47,570 --> 00:01:49,490 Imos dissecar a sintaxe dela. 33 00:01:49,490 --> 00:01:51,860 A primeira palabra que ve na función, int, 34 00:01:51,860 --> 00:01:57,460 especifica o tipo de retorno da función, ou sexa, o tipo C de saída da función. 35 00:01:57,460 --> 00:02:00,370 Esta función pode xerar un valor co tipo int. 36 00:02:00,370 --> 00:02:04,100 A seguinte palabra que ve é o nome da función, a praza neste caso. 37 00:02:04,100 --> 00:02:07,390 Nomeando funcións de forma adecuada é especialmente importante 38 00:02:07,390 --> 00:02:11,260 unha vez que é, probablemente, a documentación máis visible do que a función fai. 39 00:02:11,260 --> 00:02:14,880 Pode ser legal para nomear esta función Shazam ou booyah, 40 00:02:14,880 --> 00:02:18,340 pero iso non nos di nada sobre o que a función fai. 41 00:02:18,340 --> 00:02:23,470 >> Seguindo o nome da función, veñen as entradas para a función, os argumentos. 42 00:02:23,470 --> 00:02:26,380 Eles están listados no interior dun conxunto de parénteses 43 00:02:26,380 --> 00:02:30,160 tanto co seu tipo e un nome a ser usado para eles dentro do corpo da función. 44 00:02:30,160 --> 00:02:34,030 Praza leva só un argumento, o int a praza, 45 00:02:34,030 --> 00:02:36,160 que eu decidir dar o nome x. 46 00:02:36,160 --> 00:02:40,760 Isto remata a declaración de función ou prototipo. 47 00:02:40,760 --> 00:02:43,320 As claves que rodean o resto da función 48 00:02:43,320 --> 00:02:45,870 denotan o inicio eo fin do corpo da función, 49 00:02:45,870 --> 00:02:48,320 a definición da función en si. 50 00:02:48,320 --> 00:02:50,300 Praza é unha función ben simple. 51 00:02:50,300 --> 00:02:54,100 El só ten unha liña, unha vez que todo o que temos que facer é multiplicar x por si só. 52 00:02:54,100 --> 00:02:59,250 O retorno palabra especifica o valor de saída e desencadea o final da función. 53 00:02:59,250 --> 00:03:03,430 Para utilizar a función cadrado, debemos proporcionar os insumos axeitados 54 00:03:03,430 --> 00:03:05,310 e capturar a saída. 55 00:03:05,310 --> 00:03:08,140 Aquí, vostede ve un par de formas de facelo. 56 00:03:08,140 --> 00:03:13,600 Podemos pasar un int prima, como 6 ou podemos pasar unha variable como un. 57 00:03:13,600 --> 00:03:15,700 Teña en conta que cada vez que chamamos de cadrado, 58 00:03:15,700 --> 00:03:18,330 que capturar a saída dunha variable e, a continuación, imprimir lo. 59 00:03:18,330 --> 00:03:22,690 Con todo, non temos para almacenar o valor de retorno nunha variable e despois imprimir. 60 00:03:22,690 --> 00:03:27,090 Nós poderiamos só enviá-lo directamente para printf como facemos cando cadrado 10, 61 00:03:27,090 --> 00:03:30,580 pero iso non significa que non temos acceso ao valor de retorno da praza 10 62 00:03:30,580 --> 00:03:32,230 en calquera outra parte do código. 63 00:03:32,230 --> 00:03:34,890 Vexamos outro exemplo simple. 64 00:03:34,890 --> 00:03:38,750 >> Esta vez imos sumar dous coches alegóricos xuntos para que poidamos ver o que unha función parece 65 00:03:38,750 --> 00:03:41,220 cando ten dúas entradas, en vez de só 1. 66 00:03:41,220 --> 00:03:43,950 Como podes ver, non é moi diferente. 67 00:03:43,950 --> 00:03:47,330 Todo o que facemos é engadir o argumento segundo, un punto flotante chamado b, 68 00:03:47,330 --> 00:03:51,820 á lista de argumentos usando unha coma para separa-lo do primeiro argumento, flutuar un. 69 00:03:51,820 --> 00:03:55,550 Entón, a nosa praza e funcións suma son moi doado de entender 70 00:03:55,550 --> 00:03:58,930 porque son equivalentes ás funcións que xa viu antes na clase de matemáticas. 71 00:03:58,930 --> 00:04:01,610 Agora, imos ollar a unha función que é lixeiramente diferente. 72 00:04:01,610 --> 00:04:04,620 En vez de voltar un valor, que modifica un estado. 73 00:04:04,620 --> 00:04:07,260 Isto é coñecido como tendo un efecto colateral. 74 00:04:07,260 --> 00:04:10,750 Neste programa, a función printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 ten un tipo de retorno que non vimos antes, baleiro. 76 00:04:13,410 --> 00:04:16,730 >> Baleiro é usada para dicir que unha función non retorna nada. 77 00:04:16,730 --> 00:04:19,410 Non hai variables de tipo void 78 00:04:19,410 --> 00:04:22,760 por iso, se tentar voltar algo dunha función como printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 o compilador vai berrar con vostede. 80 00:04:24,290 --> 00:04:29,390 Dentro printf_fudd_style, vemos que mentres a función aínda executa unha tarefa, 81 00:04:29,390 --> 00:04:31,890 ou sexa, cambiar todo RS para WS, 82 00:04:31,890 --> 00:04:36,380 o punto da función é modificar a secuencia e despois imprimir lo na pantalla, 83 00:04:36,380 --> 00:04:39,400 a alteración do estado do programa, en vez de regresar un resultado. 84 00:04:39,400 --> 00:04:43,700 Usando esta función é moi parecida á nosa praza e funcións de suma, 85 00:04:43,700 --> 00:04:46,950 excepto non almacenar o resultado en unha variable ou pasalo para outra función 86 00:04:46,950 --> 00:04:49,520 xa que non hai resultados para falar. 87 00:04:49,520 --> 00:04:53,180 Entón, cando nós compilar e executar o noso programa de Elmer Fudd, 88 00:04:53,180 --> 00:04:56,970 vostede ve que "Vostede rascally coello!" transfórmase dereito de 89 00:04:56,970 --> 00:04:58,730 "Vostede wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Finalmente, hai unha función máis paga a pena discutir 91 00:05:02,250 --> 00:05:06,810 sempre que se usalo en todos os programas de C que xa escribiu, principal. 92 00:05:06,810 --> 00:05:09,450 Principal é unha función moi como calquera outro. 93 00:05:09,450 --> 00:05:13,580 El ten un tipo de retorno, un nome, unha lista de argumentos, e un corpo. 94 00:05:13,580 --> 00:05:16,110 O tipo de retorno principal é sempre un int, 95 00:05:16,110 --> 00:05:19,120 e iso int é usado para comunicar o estado do programa cando rematar. 96 00:05:19,120 --> 00:05:23,360 >> Será que realizar con éxito, ou rematar máis cedo por mor dun erro? 97 00:05:23,360 --> 00:05:26,390 Retorno a cero indica un funcionamento exitoso, 98 00:05:26,390 --> 00:05:29,510 e devolver calquera valor distinto de cero indica un erro. 99 00:05:29,510 --> 00:05:31,950 Dependendo do tipo de programa que está escribindo, 100 00:05:31,950 --> 00:05:34,960 retornando códigos diferentes para os distintos erros poden ser útiles 101 00:05:34,960 --> 00:05:37,210 para persoas que usan o seu programa máis tarde. 102 00:05:37,210 --> 00:05:40,220 Argumentos de liña son un pouco máis complicado. 103 00:05:40,220 --> 00:05:42,150 >> A lista de argumentos pode ser baleira, 104 00:05:42,150 --> 00:05:45,330 que indicar por escrito baleiro entre os parénteses, 105 00:05:45,330 --> 00:05:50,220 ou a lista pode ter dous argumentos: unha int e unha matriz de char * s. 106 00:05:50,220 --> 00:05:52,820 Estes son utilizados cando o programa pretende utilizar 107 00:05:52,820 --> 00:05:56,490 argumentos pasados ​​na liña de comandos cando o programa é invocado. 108 00:05:56,490 --> 00:05:59,690 O argumento int é normalmente chamado argc, 109 00:05:59,690 --> 00:06:03,300 e é a lonxitude igual a matriz de char *, coñecido como argv. 110 00:06:03,300 --> 00:06:07,080 Argv contén os argumentos de liña de comandos pasados ​​para o programa. 111 00:06:07,080 --> 00:06:11,440 Noutro curta, imos falar sobre como usar estas variábeis en máis detalles. 112 00:06:11,440 --> 00:06:15,220 De momento, pode sentirse libre para declarar unha ou outra forma principal. 113 00:06:15,220 --> 00:06:19,410 Eu normalmente optar por escribir o camiño máis curto, sen argumentos, cando sexa posible. 114 00:06:19,410 --> 00:06:22,230 >> Agora que sabe como escribir funcións, 115 00:06:22,230 --> 00:06:25,030 está ben no seu camiño para o desenvolvemento de programas maiores, máis complexas. 116 00:06:25,030 --> 00:06:29,740 O meu nome é Nate Hardison. Este é CS50.