Apostila C da UFMG - Universidade do Minho
Apostila C da UFMG - Universidade do Minho
Apostila C da UFMG - Universidade do Minho
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