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.

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

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

}<br />

poemsg( )<br />

{<br />

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

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

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

}<br />

71<br />

<strong>Fundamentos</strong> <strong>de</strong> <strong>Programação</strong><br />

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

• Veja que as variáveis nome1 e nome2 da função main( ), permanecem com as mesmas informações antes<br />

e <strong>de</strong>pois da chamada da função poemsg( ).<br />

Variáveis globais<br />

Nos programas utilizados até agora foram utilizadas variáveis <strong>de</strong>claradas <strong>de</strong>ntro das funções, ou seja, <strong>de</strong>ntro<br />

<strong>de</strong> seu próprio bloco, consi<strong>de</strong>radas, portanto privadas ao bloco on<strong>de</strong> foram <strong>de</strong>clarada e nenhuma outra função<br />

tem acesso direto a elas. O mesmo é verda<strong>de</strong>iro para variáveis <strong>de</strong> outras funções.<br />

Cada variável local numa rotina passa a existir somente quando a função é chamada e <strong>de</strong>ixa <strong>de</strong> existir<br />

quando a função termina.<br />

Devido às variáveis locais virem e irem com a ativação da função, elas não retêm seus valores <strong>de</strong> uma<br />

chamada para outra, e <strong>de</strong>vem ser explicitamente inicializadas a cada ativação. Se elas não forem inicializadas,<br />

conterão lixo.<br />

Como uma alternativa, é possível <strong>de</strong>finir variáveis que sejam externas a todas as funções, isto é, variáveis<br />

globais que possam ser acessadas pelo nome por qualquer função que assim o <strong>de</strong>sejar.<br />

Visto que as variáveis externas sejam globalmente acessíveis, po<strong>de</strong>m ser usadas, ao invés <strong>de</strong> listas <strong>de</strong><br />

argumentos, para comunicar dados entre funções. Além do mais, <strong>de</strong>vido às variáveis externas existirem<br />

permanentemente, ao invés <strong>de</strong> aparecerem com a ativação e <strong>de</strong>sativação <strong>de</strong> funções, elas retêm seus valores<br />

mesmo quando as funções que as acessam <strong>de</strong>ixam <strong>de</strong> existir.<br />

Uma variável externa <strong>de</strong>ve ser <strong>de</strong>finida fora <strong>de</strong> qualquer função; isso aloca armazenamento para as mesmas.<br />

A variável <strong>de</strong>ve também ser <strong>de</strong>clarada em cada função que <strong>de</strong>sejar acessa-la; isso po<strong>de</strong> ser feito por uma<br />

<strong>de</strong>claração explícita extern ou implicitamente pelo contexto.<br />

Vamos ver um pequeno programa que possa exemplificar o uso <strong>de</strong> variáveis externas.<br />

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

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

main( )<br />

{<br />

extern char nome1[ ];<br />

extern char nome2[ ];<br />

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

poemsg( );<br />

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

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

Saved successfully!

Ooh no, something went wrong!