Search buenodc

Nesta página
  1. Questionário
  2. Tarefa
  3. Gabarito

Lista de Exercícios - Semana 3

Questionário

  • Questionário individual, de múltipla escolha, com uma resposta correta por questão.
  • Cobre a leitura do material e dos vídeos: operadores aritméticos, relacionais e lógicos, precedência, e a estrutura de decisão (if, if/else, aninhamento e else if).
  • Prazo: [definir].

1. O trecho abaixo mostra qual valor na tela?

int a = 9, b = 4;
cout << a / b;

a) 2 b) 2.25 c) 3 d) Erro de compilação

2. Qual é o resultado de 10 % 3?

a) 3 b) 1 c) 3.33 d) 0

3. Qual o resultado da expressão abaixo?

int r = 10 - 2 * 3;

a) 24 b) 8 c) 4 d) 6

4. No trecho abaixo, o que aparece na tela?

bool r = (8 > 3);
cout << r;

a) true b) 8>3 c) Erro de compilação d) 1

5. No trecho abaixo, o que a linha x == 10; faz?

int x = 5;
x == 10;

a) Compara x com 10, sem alterar o valor de x. b) Atribui o valor 10 a x. c) Provoca um erro de compilação. d) Soma 10 ao valor de x.

6. Considerando bool a = true;, bool b = false; e bool c = true;, qual o valor de a && b || c?

a) 0, porque a expressão inteira depende de b ser falso. b) 1, porque && é avaliado antes de ||. c) Erro de compilação, porque faltam parênteses. d) 1, porque || é avaliado antes de &&.

7. No trecho abaixo, qual é a saída se idade valer 15?

if (idade >= 18) {
    cout << "Maior de idade";
} else {
    cout << "Menor de idade";
}

a) Maior de idade b) Nenhuma mensagem c) Menor de idade d) Erro de compilação

8. A intenção do trecho abaixo é mostrar as duas mensagens só quando nota for maior ou igual a 7. Mas há um erro. Qual é?

if (nota >= 7)
    cout << "Aprovado" << endl;
    cout << "Parabens" << endl;

a) Falta um else depois do if. b) A condição deveria usar == em vez de >=. c) Falta um ponto e vírgula depois da primeira linha do if. d) Faltam chaves { } envolvendo as duas linhas do bloco.

9. Qual situação é mais bem resolvida com uma cadeia de else if, em vez de aninhamento?

a) Testar faixas de valores diferentes de uma mesma variável, que não se sobrepõem. b) Testar uma segunda condição que só faz sentido depois que a primeira for verdadeira. c) Repetir a execução de um bloco de comandos enquanto uma condição for verdadeira. d) Ler um valor digitado pelo usuário e guardar numa variável apropriada.

10. Numa cadeia de else if testando faixas de nota, por que a ordem das condições importa?

a) Porque o compilador exige que as condições estejam em ordem alfabética. b) Porque a primeira condição verdadeira interrompe a cadeia: as mais restritivas precisam vir antes. c) Porque cada else if precisa testar uma variável diferente da anterior. d) Porque, em C++, a ordem das condições dentro da cadeia não faz diferença nenhuma.

Tarefa

  • Cada exercício é um programa separado, em um arquivo .cpp com o nome exato indicado (letras minúsculas, sem espaço). O nome errado atrapalha a correção automática.
  • Formato estilo juiz online: a entrada é só os valores pedidos, sem mensagem de prompt (nada de cout << "Digite..." antes do cin). A saída é só o valor esperado, sem nenhum texto de rótulo junto. Isso deixa a saída fácil de comparar automaticamente.
  • Entrada: os valores são lidos na ordem exata indicada em cada exercício, um cin por valor.
  • Compile e rode cada programa antes de entregar, testando com os valores de exemplo.
  • Entrega: envie todos os arquivos .cpp juntos aqui no Moodle. Prazo: [definir].

Tarefa 1 - Maior de dois números

Arquivo: tarefa1.cpp

Leia dois números inteiros e mostre o maior deles.

Entrada: dois inteiros, nessa ordem: N1, depois N2.

Saída (um único valor):

<maior>

Exemplo: entrada

7
12

produz saída

12

Tarefa 2 - Par ou ímpar

Arquivo: tarefa2.cpp

Leia um número inteiro e mostre PAR se ele for par, ou IMPAR se for ímpar (sem acento).

Entrada: um inteiro, N.

Saída (um único valor):

<PAR ou IMPAR>

Exemplo: entrada

7

produz saída

IMPAR

Tarefa 3 - Aprovado ou reprovado

Arquivo: tarefa3.cpp

Leia a média de um aluno e mostre APROVADO se ela for maior ou igual a 7, ou REPROVADO caso contrário.

Entrada: um número real, MEDIA.

Saída (um único valor):

<APROVADO ou REPROVADO>

Tarefa 4 - Corrigindo o programa com erros

Arquivo: tarefa4.cpp

O programa abaixo deveria ler a idade e mostrar Maior ou Menor, mas tem 3 erros e não compila. Corrija todos e entregue a versão funcionando.

#include <iostream>
using namespace std;

int main() {
    int idade
    cin >> idade;
    if (idade = 18)
        cout << "Maior" << endl
    else
        cout << "Menor" << endl;
    return 0;
}

Entrada: um inteiro, IDADE.

Saída (um único valor):

<Maior ou Menor>

Repare que a condição deveria verificar se a idade é maior ou igual a 18, não apenas igual.

Tarefa 5 - Maior de três números

Arquivo: tarefa5.cpp

Leia três números inteiros e mostre o maior deles.

Entrada: três inteiros, nessa ordem: N1, N2, depois N3.

Saída (um único valor):

<maior>

Desafio (opcional) - Classificação por faixa de nota

Arquivo: desafio.cpp

Leia uma nota, de 0 a 10, e mostre o conceito correspondente: A para nota maior ou igual a 9, B para maior ou igual a 7, C para maior ou igual a 5, e D para o restante.

Entrada: um número real, NOTA.

Saída (um único valor):

<A, B, C ou D>

Cuidado com a ordem das condições: comece pela faixa mais alta e vá descendo, senão uma faixa mais ampla acaba capturando notas que deveriam cair numa faixa mais restrita.

Gabarito

Resolução de referência para consulta e correção.

Questionário

Resposta correta de cada questão, para conferência ou importação no Moodle.

QuestãoResposta
1a
2b
3c
4d
5a
6b
7c
8d
9a
10b

1. a=9, b=4, ambos int. 9/4 é divisão inteira: 2 (resto descartado).

2. 10 % 3: 3 cabe três vezes em 10 (9), resto 1.

3. Precedência: 2 * 3 = 6 primeiro, depois 10 - 6 = 4.

4. cout de um bool mostra 1 para true e 0 para false.

5. == compara, não atribui: a linha x == 10; só verifica a igualdade e descarta o resultado, sem mudar x.

6. && tem precedência maior que ||: primeiro a && b (true && false = false), depois false || c (c é true), resultado 1.

7. idade é 15, menor que 18: a condição é falsa, executa o bloco do else.

8. Sem chaves, só a linha imediatamente depois do if pertence a ele; a linha cout << "Parabens" sempre executa, esteja o if verdadeiro ou falso.

9. else if serve pra faixas de valores mutuamente exclusivas da mesma variável; aninhamento serve quando a segunda decisão depende do resultado da primeira.

10. A primeira condição verdadeira interrompe a cadeia: se uma faixa ampla vier antes de uma mais restrita, a restrita nunca é alcançada.

Tarefa

Soluções de referência, com o mesmo raciocínio esperado do aluno.

Tarefa 1:

#include <iostream>
using namespace std;

int main() {
    int n1, n2;
    cin >> n1 >> n2;
    if (n1 > n2) {
        cout << n1 << endl;
    } else {
        cout << n2 << endl;
    }
    return 0;
}

Tarefa 2:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    if (n % 2 == 0) {
        cout << "PAR" << endl;
    } else {
        cout << "IMPAR" << endl;
    }
    return 0;
}

Tarefa 3:

#include <iostream>
using namespace std;

int main() {
    double media;
    cin >> media;
    if (media >= 7) {
        cout << "APROVADO" << endl;
    } else {
        cout << "REPROVADO" << endl;
    }
    return 0;
}

Tarefa 4: os três problemas são: falta ; depois de int idade; a condição if (idade = 18) usa = (atribuição) em vez de comparação, e deveria testar “maior ou igual”, não igualdade; e falta ; depois de cout << "Maior" << endl. Corrigido:

#include <iostream>
using namespace std;

int main() {
    int idade;
    cin >> idade;
    if (idade >= 18)
        cout << "Maior" << endl;
    else
        cout << "Menor" << endl;
    return 0;
}

Tarefa 5:

#include <iostream>
using namespace std;

int main() {
    int n1, n2, n3;
    cin >> n1 >> n2 >> n3;
    int maior = n1;
    if (n2 > maior) {
        maior = n2;
    }
    if (n3 > maior) {
        maior = n3;
    }
    cout << maior << endl;
    return 0;
}

Desafio:

#include <iostream>
using namespace std;

int main() {
    double nota;
    cin >> nota;
    if (nota >= 9) {
        cout << "A" << endl;
    } else if (nota >= 7) {
        cout << "B" << endl;
    } else if (nota >= 5) {
        cout << "C" << endl;
    } else {
        cout << "D" << endl;
    }
    return 0;
}

Lista de Exercícios da Semana 3 - Base: Ascencio & Campos, seções 3.3.7 e 4.3. Traga suas dúvidas para o encontro síncrono.