[Powered by Google Translate] Funções são seções de código utilizadas dentro de um programa maior para executar uma determinada tarefa. Eles também são conhecidos como procedimentos, rotinas, e subprogramas, uma vez que eles realmente são apenas mini programas dentro de programas. Mesmo que você pode não ter notado, você definitivamente ter usado funções se você já tiver programado em C. Quando você escrever coisas na tela usando printf, você está realmente usando uma função chamada printf. Da mesma forma, GetInt e GetString são funções que CS50 oferece para você. Como programadores, usamos as funções de um certo número de razões. Tendo funções para realizar tarefas comuns como a escrita para a tela e avisar o usuário para a entrada nos poupa tempo na programação. Não é necessário escrever código para fazer as mesmas coisas uma vez que está já fez por nós. Não é mesmo necessário para que possamos entender exatamente como as funções funcionam internamente. Em vez disso, apenas tem que saber como usar ou chamá-los em nossos programas. Também é útil para escrever funções em programas de maiores mesmo se você não está pensando em ter outros usá-los, apenas para dividir a maior tarefa na mão. Desta forma, você dá a estrutura para o seu código muito parecido com você daria estrutura para um ensaio, e com projetos realmente grandes, você permitir que várias pessoas para trabalhar em diferentes partes ao mesmo tempo, uma vez que está claro que o trabalho de uma pessoa termina e outro começa. Funções tipicamente operam em uma ou mais entradas, conhecidos como argumentos ou parâmetros, transformando esses insumos em um valor de saída, que depois é devolvido. No entanto, também é possível ter funções que não utilizam quaisquer argumentos de entrada e não retornam uma saída. Ok, chega com o material macio. Vamos dar uma olhada em algumas funções reais em C. Aqui nós temos uma função chamada praça que, acredite ou não, calcula o quadrado da entrada. Vamos dissecar a sintaxe dela. A primeira palavra que você vê na função, int, especifica o tipo de retorno da função, ou seja, o tipo C de saída da função. Esta função irá gerar um valor com tipo int. A próxima palavra que você vê é o nome da função, a praça neste caso. Nomeando funções de forma adequada é especialmente importante uma vez que é, provavelmente, a documentação mais visível do que a função faz. Pode ser legal para nomear esta função shazam ou booyah, mas isso não nos diz nada sobre o que a função faz. Seguindo o nome da função, vêm as entradas para a função, os argumentos. Eles estão listados no interior de um conjunto de parênteses tanto com o seu tipo e um nome a ser usado para eles dentro do corpo da função. Praça leva apenas um argumento, o int a praça, que eu decidi dar o nome x. Isto termina a declaração de função ou protótipo. As chaves que cercam o resto da função denotam o início eo fim do corpo da função, a definição da função em si. Praça é uma função bem simples. Ele só tem uma linha, uma vez que tudo o que temos a fazer é multiplicar x por si só. O retorno palavra especifica o valor de saída e desencadeia o final da função. Para usar a função quadrado, temos de fornecer os insumos adequados e capturar a saída. Aqui, você vê um par de maneiras de fazer isso. Podemos passar um int-prima, como 6, ou podemos passar uma variável como um. Observe que cada vez que nós chamamos de quadrado, que capturar a saída em uma variável e, em seguida, imprimi-lo. No entanto, não temos para armazenar o valor de retorno em uma variável e depois imprimir. Nós poderíamos apenas enviá-lo diretamente para printf como fazemos quando quadrado 10, mas isso não significa que não temos acesso ao valor de retorno da praça 10 em qualquer outra parte do código. Vejamos outro exemplo simples. Desta vez, vamos somar dois carros alegóricos juntos para que possamos ver o que uma função parece quando tem duas entradas, em vez de apenas 1. Como você pode ver, não é muito diferente. Tudo o que fazemos é adicionar no argumento segundo, um ponto flutuante chamado b, à lista de argumentos usando uma vírgula para separá-lo do primeiro argumento, flutuar um. Então, a nossa praça e funções soma são muito fácil de entender porque eles são equivalentes às funções que você já viu antes na aula de matemática. Agora, vamos olhar para uma função que é ligeiramente diferente. Em vez de retornar um valor, ele modifica um estado. Isto é conhecido como tendo um efeito colateral. Neste programa, a função printf_fudd_style tem um tipo de retorno que nós não vimos antes, vazio. Vazio é usada para dizer que uma função não retorna nada. Não há variáveis ​​de tipo void por isso, se você tentar retornar algo de uma função como printf_fudd_style, o compilador vai gritar com você. Dentro printf_fudd_style, vemos que enquanto a função ainda executa uma tarefa, ou seja, mudar tudo Rs para Ws, o ponto da função é modificar a seqüência e depois imprimi-lo na tela, a alteração do estado do programa, em vez de retornar um resultado. Usando esta função é muito parecida com a nossa praça e funções de soma, exceto nós não armazenar o resultado em uma variável ou passá-lo para outra função já que não há resultado para falar. Então, quando nós compilar e executar o nosso programa de Elmer Fudd, você vê que "Você rascally coelho!" se transforma direito de "Você wascally Wabbit!" Finalmente, há uma função mais vale a pena discutir desde que você se usá-lo em todos os programas de C que você já escreveu, principal. Principal é uma função muito como qualquer outro. Ele tem um tipo de retorno, um nome, uma lista de argumentos, e um corpo. O tipo de retorno principal é sempre um int, e isso int é usado para comunicar o status do programa quando ele terminar. Será que ele executar com sucesso, ou ele terminar mais cedo por causa de um erro? Retorno a zero indica um funcionamento bem sucedido, e devolver qualquer valor diferente de zero indica um erro. Dependendo do tipo de programa que você está escrevendo, retornando códigos diferentes para os diferentes erros podem ser úteis para pessoas que usam o seu programa mais tarde. Argumentos de linha são um pouco mais complicado. A lista de argumentos pode ser vazia, que indicar por escrito vazio entre os parênteses, ou a lista pode ter dois argumentos: uma int e uma matriz de char * s. Estes são utilizados quando o programa pretende usar argumentos passados ​​na linha de comando quando o programa é invocado. O argumento int é normalmente chamado argc, e é o comprimento igual a matriz de char *, conhecido como argv. Argv contém os argumentos de linha de comando passados ​​para o programa. Em outro curta, vamos falar sobre como usar essas variáveis ​​em mais detalhes. Por enquanto, você pode se sentir livre para declarar uma ou outra maneira principal. Eu normalmente optar por escrever o caminho mais curto, sem argumentos, quando possível. Agora que você sabe como escrever funções, você está bem em seu caminho para o desenvolvimento de programas maiores, mais complexas. Meu nome é Nate Hardison. Este é CS50.