Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
* Programa para ordenar tres numeros dados*/<br />
#include <br />
main()<br />
{<br />
float x, y, z, Aux;<br />
printf("Digite os tres numeros");<br />
scanf("%f %f %f", &x, &y, &z);<br />
printf("Numeros dados: %f , %f , %f \n", x, y, z);<br />
if ((x > y) || (x > z)) /* verifica se x não é o menor */<br />
if (y < z) /* neste caso y é o menor */<br />
{<br />
Aux = x; /* troca os conteúdos de x e de y */<br />
x = y;<br />
y = Aux;<br />
}<br />
else /* neste caso z é o menor */<br />
{<br />
Aux = x; /* troca os conteúdos de x e de z */<br />
x = z;<br />
z = Aux;<br />
}<br />
if (y > z) /* verifica se z e y ainda não estão ordenados */<br />
{<br />
Aux = y; /* troca o conteúdo de y e de z */<br />
y = z;<br />
z = Aux;<br />
}<br />
printf("Numeros ordenados: %f , %f , %f \n", x, y, z);<br />
}<br />
Observe que uma sequência de comandos com o mesmo objetivo (trocar os conteúdos de duas<br />
variáveis) se repete. Num caso como este poderíamos escrever uma função que realizasse aquela ação<br />
pretendida e, então, esta função seria utilizada para substituir a sequência referida.<br />
Por enquanto t<strong>em</strong>os o seguinte probl<strong>em</strong>a. Se definirmos a função<br />
void Troca(float x, float y)<br />
{<br />
float Aux;<br />
Aux = x;<br />
x = y;<br />
y = Aux;<br />
}<br />
e a executarmos passando as variáveis a e b, apenas os conteúdos de a e de b serão passados para x e para y e<br />
a troca realizada pela função só afeta os conteúdos de x e de y, não modificando os conteúdos de a e de b que<br />
é o que se pretendia. Ou seja, a função Troca recebe apenas os "valores" de a e de b e as ações realizadas<br />
pela função interfere apenas nos parâmetros x e y, não alterando nada <strong>em</strong> relação aos argumentos a e b.<br />
Neste caso, diz<strong>em</strong>os que os parâmetros foram passados por valor.<br />
O sist<strong>em</strong>a Turbo C++ 3.0 oferece a possibilidade de que a execução de uma função altere conteúdos<br />
de variáveis “não locais”. Para isto, no protótipo da função os parâmetros dev<strong>em</strong> ser precedidos de &. Neste<br />
caso, os argumentos para ativação da função têm que ser variáveis e qualquer alteração no conteúdo do<br />
parâmetro se reflete no conteúdo da variável argumento. Diz-se então que a passag<strong>em</strong> dos parâmetros é feita<br />
por referência.<br />
Com este tipo de passag<strong>em</strong> de parâmetro, o programa acima poderia ser escrito da seguinte<br />
forma:<br />
/* Programa para ordenar tres numeros dados*/<br />
#include <br />
void Troca(float &a, float &b)