18.04.2013 Views

Fundamentos de Programação 1 - Alcides Maya Tecnologia

Fundamentos de Programação 1 - Alcides Maya Tecnologia

Fundamentos de Programação 1 - Alcides Maya Tecnologia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Escola Alci<strong>de</strong>s <strong>Maya</strong> - Primeiro Módulo<br />

printf(“%d + %d = %d\n”, a, b, c);<br />

}<br />

int somar( int x, int y ) /* <strong>de</strong>claração da função */<br />

{<br />

int z;<br />

z = x + y;<br />

return(z);<br />

}<br />

/* tipo <strong>de</strong> retorno da função */<br />

Veja algumas consi<strong>de</strong>rações sobre o programa acima:<br />

• Antes da função main( ), <strong>de</strong>claramos o protótipo da função somar: int somar( int x, int y ); on<strong>de</strong> o protótipo<br />

explica que a função aceitará dois argumentos int e retorna um valor tipo int. Na verda<strong>de</strong>, o padrão ANSI sugere<br />

que toda a função seja prototipada num arquivo <strong>de</strong> cabeçalho separado. Como po<strong>de</strong>mos presumir, é assim que<br />

os arquivos <strong>de</strong> cabeçalho são associados às suas bibliotecas C apropriadas. Para programas simples, você po<strong>de</strong><br />

incluir o protótipo da função <strong>de</strong>ntro do corpo do programa<br />

• Na chamada da função: c = somar( a, b ); estamos atribuindo o valor <strong>de</strong> retorno da função a uma<br />

variável<br />

• Logo após a chave final da função main temos a <strong>de</strong>claração da função: int somar( int x, int y ) , que não<br />

tem ponto-e-vírgula.<br />

• E finalmente, antes da chave final da função: return(z); retornamos para a função chamadora o resultado<br />

do cálculo.<br />

Chamada por valor<br />

No programa anterior, os argumentos foram passados por valor para a função somar.<br />

Quando variáveis são passadas <strong>de</strong>ssa maneira, uma cópia do valor da variável é passada para a função.<br />

Como uma cópia é passada, a variável no programa <strong>de</strong> chamada não é alterada.<br />

Chamar uma função por valor é um meio popular <strong>de</strong> passar informações para uma função e é o método<br />

padrão em C.<br />

A limitação <strong>de</strong>sta técnica (“chamada por valor”) é que somente um valor é retornado pela função.<br />

Chamada por referência<br />

Em uma chamada por referência, o en<strong>de</strong>reço do argumento, e não seu valor, é passado para a função. Esta<br />

passagem exige menos memória pelo programa do que a chamado por valor.<br />

Quando usamos uma chamada por referência, as variáveis na chamada do programa po<strong>de</strong>m ser alteradas.<br />

A vantagem <strong>de</strong>sta técnica (“chamada por referência”) é que mais <strong>de</strong> um valor po<strong>de</strong> ser retornado pela<br />

função.<br />

Vejamos o programa anterior utilizando esta técnica:<br />

int somar( int *x, int *y );<br />

main( )<br />

{<br />

int a,b,c;<br />

a=5;<br />

b=93;<br />

80

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

Saved successfully!

Ooh no, something went wrong!