Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Offtopic - Dúvida PHP

Bom dia pessoal, tudo bem?

Este código abaixo foi retirado de uma prova de concurso, onde o resultado final do mesmo é 310. O que eu não consigo entender são essas atribuições feitas dentro da variável $b e $a. Alguém me ajuda?

<?php
$a=10; $b=20;
if($a) {
$b = $a*$b=$b+$a;
} elseif($b) {
$a = $a+$b=$a*$a;
};
echo $a+$b; ?>
7 respostas
solução!

Ola Caio Medeiros, tudo bom?

Na primeira linha de comando a variavel

$a = 10; e $b=20;

O código coloca uma condição de if se $a for verdadeiro ele entra na condição, logo ele entra na condição, e $b recebe o seguinte valor

$b = $a*$b=$b*$a; // ou seja
$b = 10*$b = 20+10;
$b = 10*30;

O valor de $b agora é 300,como ele já entrou no primeiro if ele pula o else, e no final ele usa o echo.

echo $a+$b;// ou seja echo 10+300;

Abraços!

Valeu Mateus! Só mais uma dúvida bem parecida, o resultado deste "código" é 5,5,10. Por que?

Valeu!

inteiro x,y,z;
leia(x,y);
se(x > y) {
z = x + y = x +z;
} senão se(x == y){ z = 10;
} senão{
z = x – y;
escolha(x){
caso 2: { y = y + 1; }
caso 3: { x = x + 1; } default: { z = z + 1; }
} }
escreva(x,y,z);

Você possui o questionário dessa questão? Pode colocar aqui no post?

Analise o algoritmo abaixo. inteiro x,y,z;

leia(x,y);
se(x > y) {
z = x + y = x +z;
} senão se(x == y){ z = 10;
} senão{
z = x – y;
escolha(x){
caso 2: { y = y + 1; }
caso 3: { x = x + 1; } default: { z = z + 1; }
} }
escreva(x,y,z);

Quais os resultados de escrita se x=5 e y=3 ? a) 8 2 10 b) 5 3 3 c) 8 5 2 d) 8 10 11 e) 5 5 10

Podemos observar X é maior que Y ou seja ele entra na primeira condição:

se(x>y){
    z = x+y = x+z;//ou seja z=5+y=5+0;  ou seja o valor de z se torna 10, e y se torna 5
}

Como ele entra na primeira condição ele pula as outras, e o switch se encontra no ultimo senão ou seja, ele não entra no senao, então ele vai para a ultima linha de comando que é escreva

Entendeu?

Abraços!

Opa Mateus,

Apenas não entendi por que você não trocou de imediato o valor de X e Y pelos seus respectivos valores e apenas trocou o X?

Observe nessa linha de código

z = x+y = x+z;// z = 5+y=5+0;

Eu não troquei o valor de y por que ele está recebendo um novo valor ou seja y=5+0, o valor antigo de y será descartado.

Não deixe de marcar o tópico como resolvido.

Entendeu?

Abraços!