LP2

LP2

LP2

profile-pic

Teste 01 — Enunciado e Gabarito

Teste 01

Colégio Pedro II — U. E. São Cristóvão III

Professor: João Luiz Lagôas

Coordenação: Flavio Costa

Exercício 01 — Ponto no plano cartesiano

No plano cartesiano, cada ponto é representado por um par ordenado (x, y). Faça um programa de Console C# que receba um ponto qualquer como entrada e indique se esse ponto está acima do eixo x, abaixo do eixo x ou sobre o eixo x.

Em seguida, continue a implementação: ao fim de cada verificação, o programa deve perguntar se o usuário deseja fazer uma nova consulta. Caso a resposta seja não, o programa encerra.

Exemplos

Entrada:
x = -3
y = 2

Saída:
Acima!

Entrada:
x = 6
y = -3

Saída:
Abaixo!

Observação importante

Para decidir se o ponto está acima ou abaixo do eixo x, o valor realmente relevante é a coordenada y. O x continua sendo lido porque faz parte do ponto, mas a classificação em relação ao eixo x depende apenas do sinal de y.

Gabarito sugerido
string resposta = "S";

while (resposta == "S" || resposta == "SIM")
{
    Console.Write("x: ");
    int x = Convert.ToInt32(Console.ReadLine());

    Console.Write("y: ");
    int y = Convert.ToInt32(Console.ReadLine());

    if (y > 0)
    {
        Console.WriteLine("Acima!");
    }
    else if (y < 0)
    {
        Console.WriteLine("Abaixo!");
    }
    else
    {
        Console.WriteLine("No eixo x!");
    }

    Console.Write("Deseja continuar? ");
    resposta = Console.ReadLine();
}

Exercício 02 — Doação de sangue

A doação de sangue segue critérios básicos de elegibilidade. Considere as regras:

  • A pessoa deve ter entre 16 e 69 anos, inclusive.
  • A pessoa deve pesar no mínimo 50 kg.

Implemente um programa de Console em C# que leia a idade e o peso e informe na tela "Pode doar sangue" ou "Não pode doar sangue".

Exemplos

Entrada:
20
60

Saída:
Pode doar sangue

Entrada:
30
45

Saída:
Não pode doar sangue

Gabarito sugerido
Console.Write("Idade: ");
int idade = Convert.ToInt32(Console.ReadLine());

Console.Write("Peso: ");
double peso = Convert.ToDouble(Console.ReadLine());

if (idade >= 16 && idade <= 69 && peso >= 50)
{
    Console.WriteLine("Pode doar sangue");
}
else
{
    Console.WriteLine("Não pode doar sangue");
}

Exercício 03 — Interruptor e lâmpada

Considere uma lâmpada inicialmente apagada e um interruptor que alterna seu estado sempre que é pressionado. O usuário deve digitar sucessivamente 1 para apertar o interruptor e, ao final, digitar 0 para encerrar a execução.

O programa deve indicar, ao término, se a lâmpada está acesa ou apagada.

Exemplo

Entrada:
1
1
1
0

Saída:
Acesa

Gabarito sugerido
bool acesa = false;

while (true)
{
    int entrada = Convert.ToInt32(Console.ReadLine());

    if (entrada == 0)
    {
        break;
    }

    if (entrada == 1)
    {
        acesa = !acesa;
    }
}

if (acesa)
{
    Console.WriteLine("Acesa");
}
else
{
    Console.WriteLine("Apagada");
}
Solução alternativa

Outra forma de pensar é contar quantas vezes o valor 1 foi digitado. Cada 1 representa um aperto no interruptor. Se a quantidade de apertos for ímpar, a lâmpada termina acesa. Se for par, termina apagada.

int quantidadeDeApertos = 0;

while (true)
{
    int entrada = Convert.ToInt32(Console.ReadLine());

    if (entrada == 0)
    {
        break;
    }

    if (entrada == 1)
    {
        quantidadeDeApertos++;
    }
}

if (quantidadeDeApertos % 2 != 0)
{
    Console.WriteLine("Acesa");
}
else
{
    Console.WriteLine("Apagada");
}

Questão 04 — Erros de compilação

Sublinhe as 4 linhas do código abaixo que apresentam erro de compilação e explique como corrigi-las.

double bas;
double alt;
Console.WriteLine("Entre com a base do triângulo:")
bas = Console.ReadLine();
Console.WriteLine("Entre com a altura do triângulo:");
alt = Convert.ToInt(Console.ReadLine());
Console.WriteLine('O valor da área do triângulo vale:');
Console.WriteLine(bas * alt / 2);
Console.ReadLine();
4 linhas com erro
  • Console.WriteLine("Entre com a base do triângulo:") — falta o ponto e vírgula no final.
  • bas = Console.ReadLine();Console.ReadLine() devolve texto; é preciso converter para double.
  • alt = Convert.ToInt(Console.ReadLine()); — o método está incorreto; aqui o mais coerente é usar Convert.ToDouble(...).
  • Console.WriteLine('O valor da área do triângulo vale:'); — texto deve usar aspas duplas, não aspas simples.
Código corrigido
double bas;
double alt;

Console.WriteLine("Entre com a base do triângulo:");
bas = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Entre com a altura do triângulo:");
alt = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("O valor da área do triângulo vale:");
Console.WriteLine(bas * alt / 2);
Console.ReadLine();

Questão 05 — Associação de tipos de dados

Assinale a alternativa que associa corretamente os tipos string, double, char, int e bool com os valores interpretados em tempo de execução.

Alternativas

A) bianca, 3.0, "b", 0, false

B) "joao", 6, 'j', 7.0, 0

C) "flavio", 7.8, 'f', 4, 1

D) "claudio", 4.1, 'c', -3, false

Resposta

A alternativa correta é a D: "claudio", 4.1, 'c', -3, false.

Justificativa
  • string usa texto entre aspas duplas.
  • double aceita valor decimal, como 4.1.
  • char usa um único caractere entre aspas simples, como 'c'.
  • int aceita inteiro, positivo ou negativo, como -3.
  • bool aceita true ou false.

Questão 06 — O que será mostrado no Console?

Observe o código C# abaixo e indique o que será mostrado no Console. É importante acompanhar os valores armazenados em a, b e c.

double a = 3;
double b = 4;
double c = 2;

a = ((b * b) - (c + a));
b = c + 2;
c *= -1;

Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Rastreamento

a = 3, b = 4, c = 2

a = ((b * b) - (c + a)) = (16 - 5) = 11

b = c + 2 = 2 + 2 = 4

c *= -1 faz c = c * -1, então c = -2

Saída final
11
4
-2