ATPS Programação
Por: luizzcastro • 16/11/2015 • Trabalho acadêmico • 6.108 Palavras (25 Páginas) • 220 Visualizações
Faculdade Anhanguera de Campinas (FAC3)
Ciência da Computação
Nome: Luiz Filipe Castro
RA: 4997025726
Série/Turma: 3º Semestre
Professor: Michel Fontana
Funções:
As funções permitem ao programador modularizar um programa. Todas as variáveis declaradas em definições de funções são variáveis locais — elas são conhecidas apenas na função onde são definidas. A maioria das funções tem uma lista de parâmetros. Os parâmetros fornecem os meios para a comunicação de informações entre funções. Os parâmetros de uma função também são variáveis locais. Há vários motivos para “funcionalizar um programa” e um deles é o fato de torna-lo mais flexível! Outra possibilidade com o uso das funções o fato de poder reutiliza-las sempre que necessário. A capacidade de reutilizar uma função é um fator importante na programação orientada objeto. Ao criar uma função bem definida e com uma boa nomenclatura, os programas poderão ser criados a partir destas funções. Uma ótima vantagem da função é evitar a repetição de código, já que você poderá chamar a função toda vez que necessário.
Uma função deve ser definida facilmente, ou seja, ela deve estar limitada a resolver tarefas simples e de forma bem clara. O nome da função deve estar expressando exatamente aquilo que a função faz. Caso você não consiga achar um nome simples que defina a função isso pode significar que sua função está executando várias tarefas, ou seja, é melhor você dividi-la.
Definição de funções:
Antes todos os programas que você construiu se consistiu em uma função denominada main que chamou as funções j da biblioteca padrão para realizar suas tarefas. Agora vamos analisar como os programadores escrevem j suas próprias funções personalizadas. Considere um programa que use a função square para calcular os quadrados dos números inteiros de 1 a 10
Exemplo:
/* Funcao square definida pelo programador */ #include
int square(int); /* protótipo da funcao */ main() {
int x;
for (x = 1; x <= 10; x++) printf("%d ", square(x)); return 0;
}
/* Definição da funcao */ int square(int y)
{
return y * y;
}
A função square é chamada ou invocada em main dentro da instrução printf:
printf("%d ", square(x));
A função square recebe uma cópia do valor de x no parâmetro y. Então square calcula y * y. O resultado é passado de volta para a função printf em main onde square foi chamada e printf exibe o resultado. Esse processo é repetido dez vezes usando a estrutura de repetição for. A definição de square mostra que essa função espera receber um parâmetro inteiro y. A palavra-chave int antes do nome da função indica que square retorna um resultado inteiro. A instrução return em square passa o resultado do cálculo de volta para a função. A linha int square(int); é um protótipo da função. O int entre parênteses informa ao compilador que square espera receber um valor inteiro da função que faz a chamada. O int à esquerda do nome da função square informa ao compilador que square retorna um resultado inteiro à função que faz a chamada. O compilador consulta o protótipo da função para verificar se as chamadas de square contêm o tipo correto do valor de retorno, o número correto de argumentos, os tipos corretos dos argumentos e se os argumentos estão na ordem correta.
Definição de função:
Uma função é definida por:
ipo da função Nome da função (Parametros da função){ Instruções;
}
O nome da função é qualquer identificador válido. O tipo da função é o tipo do valor que ela irá retornar. Caso o tipo da função seja void isso significa que ela não irá retornar qualquer valor. Caso não seja definido algum tipo para a função ele será considerado int. Os parâmetros devem ser separados por virgulas contendo a declaração dos parâmetros que serão chamados. Se a função não recebe nenhum valor, a lista de parâmetros é void. Deve ser listado o tipo de todos os parâmetros ao menos que ele seja int. As declarações e as instruções entre chaves formam o corpo da função, também chamado bloco. Um bloco é simplesmente uma instrução composta que inclui declarações. As variáveis podem ser declaradas em qualquer bloco e os blocos podem estar aninhados. Uma função não pode ser definida no interior de outra função sob quaisquer circunstâncias. Há três maneiras de retornar controle ao ponto no qual uma função foi chamada. Se a função não fornecer um valor como resultado, o controle é retornado simplesmente quando a chave que indica o término da função é alcançada, ou executando a instrução return;
Se a função fornecer um valor como resultado, a instrução
return expressão;
retorna o valor de expressão à função que realizou a chamada. Nosso segundo exemplo usa uma função definida pelo programador
denominada maximum para determinar e retornar o maior entre três inteiros (Fig. 5.4). Os três inteiros são fornecidos pelo usuário por meio da instrução scanf. A seguir, os inteiros são passados para maximum que determina o maior inteiro. Esse valor é retornado ao programa principal (main) por meio da instrução return em maximum. O valor retornado é atribuído à variável maior que é então impressa na instrução printf.
Chamando Funções: Chamadas por Valor e Chamadas por Referência
As duas maneiras de ativar as funções em muitas linguagens de programação são chamadas por valor e chamadas por referência. Quando os argumentos são passados através de uma chamada por valor, é feita uma cópia do valor dos argumentos e a mesma é passada para a função chamada. As modificações na cópia não afetam o valor original de uma variável na função que realizou a chamada. Quando um argumento é passado através de uma chamada por referência, a função chamadora permite realmente que a função chamada modifique o valor original da variável.
...