Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5. Funções e ponteiros<br />
5.1 O que são funções<br />
Como diss<strong>em</strong>os no capítulo 2, um programa <strong>em</strong> C pode (e deve) ser escrito como um conjunto de<br />
funções que são executadas a partir da execução de uma função denominada main(). Cada função pode<br />
conter declarações de variáveis, instruções, ativações de funções do sist<strong>em</strong>a e de outras funções definidas<br />
pelo programador. Naturalmente, o objetivo de uma função deve ser a realização de alguma "sub-tarefa"<br />
específica da tarefa que o programa pretende realizar. Assim, pode-se escrever funções para a leitura dos<br />
dados de entrada, para a saída do programa, para a determinação da média de vários el<strong>em</strong>entos, para a troca<br />
dos conteúdos de uma variável, para o cálculo do máximo divisor comum de dois números dados, etc.<br />
Normalmente, a realização da "sub-tarefa" para a qual a função foi escrita é chamada de retorno da função.<br />
Este retorno pode ser a realização de uma ação genérica, como a leitura dos dados de entrada, ou um valor<br />
específico, como o cálculo do máximo divisor comum de dois números dados.<br />
Como foi dito na seção citada, uma função deve ser definida com a seguinte sintaxe:<br />
Tipo de Dado Identificador da função(Lista de parâmetros)<br />
{<br />
Declaração de variáveis<br />
Sequência de instruções<br />
}<br />
onde, como também já foi dito, o conjunto Tipo de Dado Identificador da função(Lista de parâmetros) é<br />
chamado protótipo da função. Aí, Tipo de dado é int, char, float, ou um dos seus "múltiplos", quando a<br />
função deve retornar um valor específico e void se a função deve realizar uma ação genérica s<strong>em</strong> retornar um<br />
valor definido. Por seu turno, Lista de parâmetros é um conjunto de variáveis utilizadas para a função<br />
receber os valores para os quais a função deve ser executada; estes valores são chamados argumentos, que,<br />
comparando uma função com um programa, constitu<strong>em</strong> os dados de entrada da função.<br />
Na declaração de variáveis são declaradas as variáveis que as instruções da função vão manipular<br />
internamente. Estas variáveis (e os parâmetros da função) só são acessáveis pelas instruções da função e, por<br />
esta razão, são chamadas variáveis locais (na seção 5.5 são apresentados maiores detalhes).<br />
Se a função deve retornar um valor, uma de suas instruções deve ter a seguinte sintaxe:<br />
return (expressão);<br />
sendo os parênteses facultativos. A s<strong>em</strong>ântica desta instrução é evidente: a expressão é avaliada e o seu valor<br />
é retornado à função que a ativou. Além disso (e isto agora não é evidente), a execução desta instrução<br />
interrompe a execução da função e o processamento retorna à função que ativou a função <strong>em</strong> discussão.<br />
A ativação (ou chamada) da função por outra função se faz com a referência ao identificador da<br />
função seguido dos argumentos <strong>em</strong> relação aos quais se pretende executar a função. Por ex<strong>em</strong>plo, o cálculo<br />
do máximo divisor comum de dois números dados, discutido no capítulo anterior, poderia ser reescrito da<br />
seguinte forma:<br />
/*Função que retorna o máximo divisor comum de dois números positivos dados*/<br />
int MaxDivCom(int x, int y)<br />
{<br />
int Resto;<br />
Resto = x % y;<br />
while (Resto != 0)<br />
{<br />
x = y;<br />
y = Resto;<br />
Resto = x % y;<br />
}<br />
return (y);<br />
}