Buscar

Compilado - Prova Linguagens de Servidor

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

1 Chegou a hora da verdade! A interface está funcionando, e vocês decidem colocar a integração com o 
banco de dados para funcionar. Assim, escrevem o seguinte código: 
$str = 'mysql:host=localhost;dbname=meu_banco;charset=utf8'; 
$db = new PDO($str, 'root', 'root'); 
$select = 'SELECT * FROM produtos'; 
Após este início, quais deveriam ser as linhas para executar este select no banco e pegar todos os 
produtos? 
R: $consulta = $db->query($select); 
$produtos = $consulta->fetchAll(); 
 
2 Você foi contratado por uma empresa para desenvolver uma aplicação de e-commerce. Na sua primeira 
semana, você foi incumbido de fazer programação em dupla com um programador back-end júnior. Juntos, 
vocês vão fazer o formulário de login do e- commerce. No entanto, o seu colega não sabe muito bem qual 
seria o método mais adequado para o formulário. Você responde que o mais adequado é o método: 
R: POST, pois mantém as informações escondidas do usuário, ideal para um formulário de login; 
 
3 Na hora de listar os produtos da loja, que vem dentro de uma array $produtos, o seu colega chegou ao 
seguinte código: 
for($i = 0; $i < count($produtos); $i++) { 
echo '<p>'.$produtos[$i]['nome'].'</p>'; 
} 
Você identifica que o loop pode ser facilmente substituído por um foreach. Assim, sugere ao seu colega 
que substitua os trechos em negrito por: 
R: foreach($produtos as $p) e $p['nome'] 
 
4 Você e seu colega criam uma função para reajustar o valor de forma a oferecer um desconto base, cujo 
valor pode ser dobrado se o usuário atender a certas condições. A função está exemplificada abaixo: 
function calcularValorFinal($valor, $descontoBase, $dobrarDesconto){ 
if($dobrarDesconto){ 
 $valor = $valor * (100 - $descontoBase * 2)/100; 
} else { 
 $valor = $valor * (100 - $desconto Base)/100; 
} 
} 
Devido à arquitetura do sistema, vocês não podem retornar o conteúdo de $valor usando um return. Em 
outras palavras, isto significa que deve ser possível fazer o seguinte: 
$valor = 500; 
calcularValorFinal($valor, 15, false); 
echo $valor; // imprime 425 
Assim, uma alternativa para essa situação é 
R: Passar o parâmetro valor por referência. 
 
5 O sistema está caminhando muito bem! Vocês partem para o desenvolvimento do painel administrativo, 
em que deve ser possível fazer upload de uma foto para o produto. Vocês chegam ao seguinte código: 
if(array_key_exists('foto_produto', $_FILES)){ 
$localAtual = $_FILES['foto_produto']['tmp_name']; 
$novoLocal = "./imagem_produtos/$id.jpg"; 
___________; 
} 
Qual deve ser o comando para mover a imagem de $localAtual para $novoLocal? 
R: rename($localAtual, $novoLocal); 
 
6 Para o sistema de descontos, vocês criam a seguinte classe: 
class Promocao { 
private $titulo; 
private $desconto; 
private $cupom; 
 
public function __construct($t, $d, $c) { 
$this->titulo = $t; 
$this->desconto = $d; 
$this->cupom = $c; 
} 
public function aplicarDesconto($valor){ 
return $valor * (100-$this->desconto)/100; 
} 
public function cupomValido($palpite){ 
return $palpite == $this->cupom; 
} 
Podemos dizer que as propriedades desta classe são 
R: $titulo, $desconto, $cupom. 
 
7 Você e seu colega chegaram ao seguinte código para somar os preços de um carrinho de 
compras: 
function somaCarrinho($produtos) { 
$soma = 0; 
foreach($produtos as $p){ 
} 
$soma += $p['valor']; 
 
return $soma; 
} 
$carrinho = []; 
$valorTotal = somaCarrinho($carrinho). 
No entanto, ao passar um carrinho vazio, o resultado é 0. Isso, embora correto, causa confusão com 
carrinhos cujo valor é realmente 0 (isto é, em que todos os produtos são gratuitos devido ao cupom). 
 
Para resolver isso, vocês alteraram a função para criar uma exception/exceção quando isso acontece: 
 
function somaCarrinho($produtos) { 
if(count($produtos) == 0){ 
} 
throw new Exception("Carrinho vazio"); 
$soma = 0; 
foreach($produtos as $p){ 
} 
$soma += $p['valor']; 
return $soma; 
} 
Agora falta envolver a chamada da função em um try/catch. Qual seria a forma adequada de fazer isso? 
 
try{ 
$valorTotal = soma Carrinho($carrinho); 
} 
catch(Exception $e){ 
echo ‘Carronho vazio; 
}

Outros materiais