Jump to content
Sign in to follow this  
JDSCaram

Troca de Valores.

Recommended Posts

Pra quem está começando agora na programação vou dar uma dica podemos chamar assim.

 

Quando voce tem problema e esse problema é que precisa trocar o valor de uma variavel pela da outra variavel

Ex:

Variavel | Valor
  A     =   4
  B     =   9

 

Para que possamos trocar o valor de A que é 4 por o valor de B que é 9 teremos que criar uma terceira variavel auxiliar

Ex:

A = 4
B = 9
X = A

Mais por que criar uma variavel para auxiliar no caso "X", pois bem explico no exemplo.

 

Se A = 4 e B = 9 e queremos fazer a troca de valores poderiamos fazer A = B e B = A correto e partir para o abraço hehe

Nãooo por que nao iria dar certo, se o valor de A passa a ser B e o B passa a ser A ira dar um erro de logica é só fazer seu teste de mesa ai que vera.

 

Sendo assim para dar certa ficaria assim.

A = B 
B = x

O A recebe o valor de B que é 9 e passa a ser 9 e B recebe o valor de x que é 4 pois x recebe o A

 

 

 

 

Ex: Em autoit

 

; ----- Autoit Script Brasil---- ;
;Problema: Crie um Script que faça a troca do valor de A = 4 pelo valor de B = 9
;Nome do Programa: Troca de Valores
;Função: Inverter o valor A pelo de B e vice versa.

;[Declaracao de variaveis]
Global $A , $B , $x


;[Entrada]
$A = 4
$B = 9
$x = $A ;Criou-se uma variavel Auxiliar ( $X ) para que assim fosse possivel realizar a troca.

;[Processamento]
$A = $B ; $A recebe $B e vira 9
$B = $x ; $B recebe $x que era $A no caso 4

;[saida]
MsgBox(0,"Troca de Valores","Valor de A agora é = "&$A &@CRLF& "Valor de B agora é = "&$B)

 

É isso ai espero que tenham consegido entender.

  • Like 1

Share this post


Link to post
Share on other sites

Eu fiquei pensando uns 20 min nessa lógica..........

pois se

 

A = 4

B = 9

x = A

 

no primeiro instante A = X e X = A ............ mas quando A passa a ser B ..... ( A=B ) e B=9 entao lógicamente X também altera o valor pq "X = A = 4" que passou a ser B = 9. Então praticamente a leitura do autoit nas variaveis é apenas 1x para que isso aconteça?

Pq se ele for verificar novamente o valor de X será exatamente o estado atual de A,se a leitura fosse constante. Correto?

Share this post


Link to post
Share on other sites

@Anderson_sc exatamente, ela ficaria trocando sem parar se fosse colocado em loop infinito. Abaixo tem um exemplo de como ficaria o script se fosse para ser repetido uma única vez:

 

 

[autoit] ; ----- Autoit Script Brasil---- ;

;Problema: Crie um Script que faça a troca do valor de A = 4 pelo valor de B = 9

;Nome do Programa: Troca de Valores

;Função: Inverter o valor A pelo de B e vice versa.

 

;[Declaracao de variaveis]

Global $A , $B

Local $X

 

 

;[Entrada]

$A = 4

$B = 9

 

While True

If $X <> $B Then ;Verifica se a função já foi executada

 

$X = $A ;Criou-se uma variavel Auxiliar ( $X ) para que assim fosse possivel realizar a troca.

 

;[Processamento]

$A = $B ; $A recebe $B e vira 9

$B = $X ; $B recebe $x que era $A no caso 4

 

;[saida]

MsgBox(0,"Troca de Valores","Valor de A agora é = "&$A &@CRLF& "Valor de B agora é = "&$B)

Else

MsgBox(0,"Troca de Valores","Função já foi executada: $X é diferente de $B")

ExitLoop

EndIf

WEnd[/autoit]

 

 

Sempre o primeiro membro da operação ( $A ) é sobrescrito pelo segundo ( $B ), logo , $A = $B , porém $B não sofre alteração caso $A seja modificado APÓS a operação.

Share this post


Link to post
Share on other sites

Na verdade você não precisa de uma terceira variável, é possível fazer só com duas.

 

se A = 5 e B = 4 por exemplo, fazendo as operações abaixo você tem a troca de valores.

 

A = A + B A passa a valer a soma de A + B então A = 9 e B = 4;

B = A - B B recebe o valor de A (que no momento vale 9) menos o valor de B (que é 4), então temos B = 9 - 4, B = 5 (que era o valor inicial e A)

A = A - B A recebe o valor de A (que ainda é 9) menos B que agora vale 5, então temos A = 9 - 5, A = 4 (que era o valor inicial e B)

  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×