14.03.2015 Views

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

são desconheci<strong>da</strong>s no resto <strong>da</strong> função main(). Quan<strong>do</strong> usarmos a variável a dentro <strong>do</strong> bloco for estaremos usan<strong>do</strong> a<br />

variável a local ao for e não a variável a <strong>da</strong> função main().<br />

7.6.2 - Parâmetros formais<br />

O segun<strong>do</strong> tipo de variável que veremos são os parâmetros formais. Estes são declara<strong>do</strong>s como sen<strong>do</strong> as entra<strong>da</strong>s de<br />

uma função. Não há motivo para se preocupar com o escopo deles. É fácil: o parâmetro formal é como se fosse uma<br />

variável local <strong>da</strong> função. Você pode também alterar o valor de um parâmetro formal, pois esta alteração não terá<br />

efeito na variável que foi passa<strong>da</strong> à função. Isto tem senti<strong>do</strong>, pois quan<strong>do</strong> o C passa parâmetros para uma função, são<br />

passa<strong>da</strong>s apenas cópias <strong>da</strong>s variáveis. Isto é, os parâmetros formais existem independentemente <strong>da</strong>s variáveis que<br />

foram passa<strong>da</strong>s para a função. Eles tomam apenas uma cópia <strong>do</strong>s valores passa<strong>do</strong>s para a função.<br />

7.6.3 - Variáveis globais<br />

Variáveis globais são declara<strong>da</strong>s, como já sabemos, fora de to<strong>da</strong>s as funções <strong>do</strong> programa. Elas são conheci<strong>da</strong>s e<br />

podem ser altera<strong>da</strong>s por to<strong>da</strong>s as funções <strong>do</strong> programa. Quan<strong>do</strong> uma função tem uma variável local com o mesmo<br />

nome de uma variável global a função <strong>da</strong>rá preferência à variável local. Vamos ver um exemplo:<br />

int z,k;<br />

func1 (...)<br />

{<br />

int x,y;<br />

...<br />

}<br />

func2 (...)<br />

{<br />

int x,y,z;<br />

...<br />

z=10;<br />

...<br />

}<br />

main ()<br />

{<br />

int count;<br />

...<br />

}<br />

No exemplo acima as variáveis z e k são globais. Veja que func2() tem uma variável local chama<strong>da</strong> z. Quan<strong>do</strong> temos<br />

então, em func2(), o coman<strong>do</strong> z=10 quem recebe o valor de 10 é a variável local, não afetan<strong>do</strong> o valor <strong>da</strong> variável<br />

global z.<br />

Evite ao máximo o uso de variáveis globais. Elas ocupam memória o tempo to<strong>do</strong> (as locais só ocupam memória<br />

enquanto estão sen<strong>do</strong> usa<strong>da</strong>s) e tornam o programa mais difícil de ser entendi<strong>do</strong> e menos geral.<br />

7.7 - Chama<strong>da</strong> por Valor e Chama<strong>da</strong> por Referência<br />

Já vimos que, na linguagem C, quan<strong>do</strong> chamamos uma função os parâmetros formais <strong>da</strong> função copiam os valores <strong>do</strong>s<br />

parâmetros que são passa<strong>do</strong>s para a função. Isto quer dizer que não são altera<strong>do</strong>s os valores que os parâmetros têm<br />

fora <strong>da</strong> função. Este tipo de chama<strong>da</strong> de função é denomina<strong>do</strong> chama<strong>da</strong> por valor. Isto ocorre porque são passa<strong>do</strong>s<br />

para a função apenas os valores <strong>do</strong>s parâmetros e não os próprios parâmetros. Veja o exemplo abaixo:<br />

#include <br />

float sqr (float num);<br />

void main (void)<br />

{<br />

float num,sq;<br />

printf ("Entre com um numero: ");<br />

scanf ("%f",&num);<br />

sq=sqr(num);<br />

printf ("\n\nO numero original e: %f\n",num);<br />

printf ("O seu quadra<strong>do</strong> vale: %f\n",sq);<br />

}<br />

float sqr (float num)<br />

Pág. 52

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

Saved successfully!

Ooh no, something went wrong!