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(“Pressione uma tecla”);<br />

getch( );<br />

}<br />

poemsg( )<br />

{<br />

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

}<br />

73<br />

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

Você <strong>de</strong>ve observar que estamos usando as palavras <strong>de</strong>claração e <strong>de</strong>finição cuidadosamente quando nos<br />

referimos a variáveis externas nessa seção. “Definição” refere-se ao local on<strong>de</strong> a variável está sendo criada ou<br />

à qual é atribuída uma área <strong>de</strong> armazenamento; “<strong>de</strong>claração” refere-se ao local on<strong>de</strong> a natureza da variável é<br />

dada, sem alocação <strong>de</strong> área <strong>de</strong> armazenamento.<br />

A propósito, há uma tendência <strong>de</strong> se fazer com que tudo em vista seja uma variável extern porque simplifica<br />

aparentemente a comunicação – listas <strong>de</strong> argumentos são curtas e as variáveis estão sempre on<strong>de</strong> você as quer.<br />

Mas variáveis externas estão sempre lá, mesmo quando você não as quer.<br />

Este estilo <strong>de</strong> codificação é cheio <strong>de</strong> perigos porque leva a programas cujas conexões <strong>de</strong> dados não são<br />

óbvias – variáveis po<strong>de</strong>m ser mudadas <strong>de</strong> modo inesperado e inadvertidamente, e o programa é difícil <strong>de</strong><br />

modificar se o for necessário.<br />

Nós ainda não tratamos funções com passagem <strong>de</strong> argumentos, mas logo vamos ver como isto funciona, e<br />

ai então, po<strong>de</strong>remos i<strong>de</strong>ntificar melhor o uso <strong>de</strong>stas variáveis.<br />

Refinamento Sucessivo<br />

O refinamento sucessivo é uma técnica <strong>de</strong> programação que possibilita dividir uma função em outras funções.<br />

Deve ser aplicado com muito critério para que o programa a ser construído não se torne <strong>de</strong>sestruturado e difícil<br />

<strong>de</strong> ser compreendido por você ou por outras pessoas.<br />

Na aula anterior vimos um programa que utilizava um menu na rotina principal e 4 funções para efetuar<br />

cálculos básicos (soma, subtração, multiplicação e divisão).<br />

Neste programa po<strong>de</strong>mos aplicar esta técnica, aliada a <strong>de</strong>claração <strong>de</strong> variáveis externas.<br />

Por exemplo: a entrada e a saída são efetuadas com as mesmas variáveis. Observe que as variáveis valorA,<br />

valorB e result são <strong>de</strong>finidas quatro vezes, uma em cada função.<br />

A solução é <strong>de</strong>finir as variáveis valorA, valorB e result como externas e construir mais duas funções, uma para<br />

a entrada e a outra para a saída. As quatro funções atuais serão diminuídas em números <strong>de</strong> linhas, pois tudo o<br />

que se repete nas funções será retirado.<br />

Veja no programa a seguir a <strong>de</strong>finição das variáveis externas e a <strong>de</strong>finição das duas novas funções <strong>de</strong><br />

entrada e <strong>de</strong> saída. Perceba nas funções estão sendo <strong>de</strong>claradas as variáveis que serão utilizadas pela função,<br />

fazendo uso do conceito <strong>de</strong> variáveis externas.<br />

float valorA, valorB, result;<br />

main( )<br />

{<br />

char opcao=0;<br />

while(opcao != ‘5’)<br />

{<br />

clrscr( );<br />

printf(“1 - adicao\n”);

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

Saved successfully!

Ooh no, something went wrong!