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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

printf(“Pressione uma tecla”);<br />

getch( );<br />

}<br />

poemsg( )<br />

{<br />

extern char nome1[ ];<br />

extern char nome2[ ];<br />

printf(“%s e %s sao casados\n”, nome1, nome2);<br />

}<br />

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

• Veja que a <strong>de</strong>claração das variáveis nome1 e nome2 antes da função main( ), isto i<strong>de</strong>ntifica estas variáveis<br />

como sendo variáveis globais, ou seja, externas.<br />

• No inicio da função main( ) e também da função poemsg( ), <strong>de</strong>claramos o uso das variáveis globais com a<br />

<strong>de</strong>claração: extern char nome1[ ]; e extern char nome2[ ]; com isto estamos informando ao programa que vamos<br />

usar as variáveis globais <strong>de</strong>claradas antes <strong>de</strong> main( ).<br />

Consi<strong>de</strong>rações importantes<br />

As variáveis globais costumam ser chamadas <strong>de</strong> variáveis externas na linguagem C.<br />

Em main( ), as variáveis externas nome1 e nome2 são <strong>de</strong>finidas nas primeiras linhas do exemplo acima, que<br />

<strong>de</strong>finem seus tipos e alocam área <strong>de</strong> armazenamento para as mesmas.<br />

Sintaticamente <strong>de</strong>finições externas são iguais às <strong>de</strong>clarações que já usamos anteriormente, mas, como<br />

ocorrem fora das funções, as variáveis são externas.<br />

Antes <strong>de</strong> uma função usar uma variável externa, o nome da mesma <strong>de</strong>ve ser conhecido pela função. Uma<br />

maneira <strong>de</strong> fazer isso é escrever uma <strong>de</strong>claração extern na função; a <strong>de</strong>claração é igual à anterior, exceto que é<br />

precedida da palavra-chave extern<br />

Em certas circunstâncias, a <strong>de</strong>claração extern po<strong>de</strong> ser omitida. Se a <strong>de</strong>finição externa <strong>de</strong> uma variável ocorrer<br />

no arquivo fonte antes <strong>de</strong> seu uso numa função particular, então não há a necessida<strong>de</strong> <strong>de</strong> uma <strong>de</strong>claração extern<br />

na função. As <strong>de</strong>clarações extern em main( ) e poemsg( ) são, portanto, redundantes.<br />

De fato, a prática comum é colocar a <strong>de</strong>finição <strong>de</strong> todas as variáveis externas no início do arquivo fonte e,<br />

então, omitir todas as <strong>de</strong>clarações extern.<br />

Se o programa está em vários arquivos fonte, e uma variável é <strong>de</strong>finida em, digamos, arquivo1 e usada<br />

em arquivo2, então uma <strong>de</strong>claração extern é necessária no arquivo2 para conectar as duas ocorrências da<br />

variável.<br />

Baseado nisto o programa anterior po<strong>de</strong>ria ter sido escrito da seguinte forma:<br />

char nome1[ ]=”Fred”;<br />

char nome2[ ]=”Vilma”;<br />

main( )<br />

{<br />

clrscr( );<br />

printf(“%s e %s sao casados\n”, nome1, nome2);<br />

poemsg( );<br />

printf(“%s e %s se amam\n”, nome1, nome2);<br />

72

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

Saved successfully!

Ooh no, something went wrong!