22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

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 />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!