definicao_funcao
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
— | definicao_funcao [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Definições de Funções ====== | ||
+ | * Comando [[return]] | ||
+ | * Definição [[extern]] | ||
+ | * Definição [[static]] | ||
+ | * Função [[atexit]] | ||
+ | |||
+ | |||
+ | ===== Criação de Funções ===== | ||
+ | |||
+ | As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções, visando um fácil entendimento e uma manutenção facilitada. De acordo com a técnica, devem-se agrupar códigos correlatos em uma função. | ||
+ | |||
+ | Uma outra utilização de função é quando um trecho de código será utilizado muitas vezes no programa. Deve-se colocar este trecho em uma função e sempre que for preciso chamar a função. | ||
+ | |||
+ | A Linguagem C possibilita criar funções, sendo possível passar parâmetros para elas e retornar valores tanto no nome da função como em algum parâmetro passado. | ||
+ | |||
+ | |||
+ | ===== Função e Protótipo (assinatura da função) ===== | ||
+ | O uso de funções na Linguagem C exige certas regras. Primeiramente a função deve estar definida, isto é, deve-se indicar para o compilador qual o nome da função e quais são os parâmetros esperados. | ||
+ | |||
+ | Uma maneira simples de se resolver isto é a colocação da função antes de seu uso, ou seja, coloca-se a função dentro do programa fonte antes das posições onde ela é chamada. | ||
+ | |||
+ | Quando se têm sistemas grandes, não é recomendável ter um único arquivo fonte, pois a manutenção seria impraticável. Neste caso é possível ter uma função definida em um programa fonte e seu uso em outro programa fonte. Para resolver este problema a Linguagem C | ||
+ | criou uma definição chamada de **protótipo**. | ||
+ | |||
+ | No protótipo de uma função é definido somente o necessário para o compilador não acusar erros. A definição do protótipo geralmente é colocada dentro de arquivos ''// | ||
+ | |||
+ | No protótipo somente são informados o nome da função, o seu tipo de retorno e o tipo de cada parâmetro esperado. | ||
+ | |||
+ | ===== Definido Funções ===== | ||
+ | Sintaxe: | ||
+ | <code c> | ||
+ | tipo_retorno nome_função(tipo_parâmetro_01 nome_parâmetro_01, | ||
+ | { | ||
+ | .... | ||
+ | bloco de comandos; | ||
+ | .... | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | ---- | ||
+ | |||
+ | Para se definir uma função deve-se indicar o tipo do retorno da função, seu nome e os parâmetros da mesma. | ||
+ | Uma função pode ou não retornar um valor. Se uma função não retorna nenhum valor seu retorno deve ser definido como void. | ||
+ | Os parâmetros devem ser definidos, um por um, indicando o seu tipo e nome separado por virgula. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | <code c> | ||
+ | /* programa definindo_funcao.c */ | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int soma (int, int); /* Declaração da função (protótipo da função. | ||
+ | Esta declaração indica que a função soma irá receber 2 valores inteiros e vai retornar 1 valor inteiro */ | ||
+ | |||
+ | int main (void) | ||
+ | { | ||
+ | int iValor_a; | ||
+ | int iValor_b; | ||
+ | int iResultado; | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | |||
+ | int soma (int a, int b) /* função soma que recebe 2 inteiros */ | ||
+ | { | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Escopo de Variáveis ===== | ||
+ | Entende-se como escopo de variáveis a área onde o valor e o nome dela tem significado. Pode-se ter dois tipos de variáveis na Linguagem C. O primeiro tipo é a variável global. Uma variável é global quando a mesma é definida fora de qualquer função. Esta variável pode ser usada em qualquer função e o significado dela abrange todo o programa fonte. | ||
+ | As variáveis locais são definidas dentro de funções e o seu significado é somente válido dentro da função. Assim têm-se duas variáveis com o mesmo nome em funções diferentes. | ||
+ | |||
+ | |||
+ | ==== Variáveis Globais ==== | ||
+ | As variáveis globais são definidas fora de qualquer função e o seu nome é válido para todo o programa. Qualquer função que alterar o seu conteúdo estará alterando para todo o programa pois estas variáveis ficam em uma área de dados disponível para todo o programa. | ||
+ | |||
+ | ==== Variáveis Locais ==== | ||
+ | Quando uma variável é definida dentro de uma função, está sendo definindo uma variável local à função. Esta variável utiliza a pilha interna da função como memória, portanto ao final da função este espaço de memória é liberado e a variável não existe mais. Portanto a definição da variável só é valida dentro da função. | ||
+ | |||
+ | Os parâmetros de uma função também são considerados variáveis locais e também utilizam a pilha interna para a sua alocação. | ||
+ | |||
+ | <code c> | ||
+ | /* programa escopo_variavel.c */ | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int soma (int, int); | ||
+ | int diferenca (int, int); | ||
+ | void le_valores(void); | ||
+ | |||
+ | int G_iValor_a; /* Declarando as variáveis como públicas, ou seja, elas estarão disponíveis para uso em todo o programa. */ | ||
+ | int G_iValor_b; | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int iResultado; /* Variável local e portanto somente disponível para a função main */ | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | |||
+ | void le_valores(void) | ||
+ | { | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | int soma (int a, int b) /* Variáveis declaradas como parâmetros de função sempre são locais, portanto as variáveis a e b | ||
+ | | ||
+ | { | ||
+ | int iResultado; /* Variável local e portanto somente disponível para a função soma. Importante: não é a mesma variável definida anteriormente. */ | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | int diferenca (int a, int b) /* Variáveis declaradas como parâmetros de função sempre são locais, portanto as variáveis a e b estão disponíveis | ||
+ | para uso somente na função diferenca, embora na função soma também tenha sido utilizado o mesmo nome para as variáveis. | ||
+ | { | ||
+ | int iResultado; | ||
+ | |||
+ | | ||
+ | | ||
+ | } | ||
+ | </ |
definicao_funcao.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1