Search buenodc

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

Lista de Exercícios - Semana 2

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: estrutura de um programa, tipos, variáveis e a armadilha da divisão inteira.
  • Prazo: [definir].

1. No trecho abaixo, cout << a / b; mostra 3, e não 3.33.... Qual é a explicação?

int a = 10;
int b = 3;

a) Porque a divisão entre dois int descarta a parte decimal. b) Porque o cout arredonda o resultado para baixo. c) Porque falta um cast para double antes da divisão. d) Porque a divisão inteira arredonda para o inteiro mais próximo.

2. Qual o tipo mais adequado para guardar a idade de uma pessoa (ex.: 25)?

a) char b) int c) bool d) string

3. Qual o tipo mais adequado para guardar o preço de um produto (ex.: 19.90)?

a) int b) char c) double d) bool

4. Qual o tipo mais adequado para guardar a inicial do nome de uma pessoa (ex.: 'M')?

a) string b) int c) bool d) char

5. Qual o tipo mais adequado para guardar se um aluno foi aprovado (sim/não)?

a) bool b) int c) char d) string

6. Simule a execução do programa abaixo. Quais os valores finais de x e y?

int x = 4;
int y = 3;
x = x + y;
y = x - y;

a) x = 4, y = 3 b) x = 7, y = 4 c) x = 7, y = 3 d) x = 3, y = 4

7. O trecho abaixo não compila. Qual é o motivo?

int Main() {
    cout << "Ola" << endl;
    return 0;
}

a) Falta a biblioteca de entrada e saída no início do código. b) A linguagem C++ não permite retornar o valor 0. c) O nome da função está errado: deveria ser main, não Main. d) O operador de saída cout está sendo usado de forma errada.

8. O trecho abaixo, parte de um programa C++, não compila. Qual é o motivo?

int a, b
cin >> a >> b;

a) A variável a não foi declarada corretamente. b) O tipo int não pode ser usado com cin. c) Faltou declarar a e b em linhas separadas. d) Falta um ponto e vírgula depois de int a, b.

9. Qual a vantagem de declarar PI como constante (const double PI = 3.14159;) em vez de uma variável comum?

a) Impede que o valor seja alterado sem querer durante a execução. b) Ocupa menos espaço na memória do que uma variável comum. c) Faz o programa compilar mais rápido. d) Aceita qualquer tipo de dado, diferente de uma variável comum.

10. Por que é mais seguro declarar a variável de uma temperatura como double, em vez de int, num cálculo como F = C * 9 / 5 + 32?

a) Porque variáveis do tipo int não podem ser negativas. b) Porque a conta C * 9 / 5 pode perder a parte decimal, se todas as variáveis envolvidas forem inteiras. c) Porque double faz o programa compilar mais rápido. d) Porque o tipo int não existe na linguagem C++.

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].

Por que sem prompt aqui, se o vídeo ensina a sempre avisar antes do cin? Porque, num programa de verdade, que interage direto com uma pessoa, isso é essencial. Aqui, os arquivos vão ser lidos por um script de correção, não por uma pessoa digitando: então a saída precisa ser só o resultado, sem texto extra. São dois contextos diferentes, e vale saber reconhecer os dois.

Tarefa 1 - Nome e idade

Arquivo: tarefa1.cpp

Mostre na tela o seu nome e a sua idade, em duas linhas (valores fixos no código, sem cin).

Entrada: nenhuma.

Saída (duas linhas):

<seu nome>
<sua idade>

Esse exercício não tem uma resposta única certa (é o seu nome!), então não entra na correção automática por comparação exata.

Tarefa 2 - Produto de dois números

Arquivo: tarefa2.cpp

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

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

Saída (um único valor):

<resultado>

Exemplo: entrada

4
5

produz saída

20

Tarefa 3 - Valor total da compra

Arquivo: tarefa3.cpp

Leia o preço de um produto e a quantidade comprada, e mostre o valor total a pagar.

Entrada: nessa ordem, PRECO (real) e QUANTIDADE (inteiro).

Saída (um único valor):

<resultado>

Exemplo: entrada

10.00
3

produz saída

30

Tarefa 4 - Corrigindo o programa com erros

Arquivo: tarefa4.cpp

O programa abaixo deveria ler dois números e mostrar a soma, mas tem 3 erros e não compila. Corrija todos e entregue a versão funcionando.

#include <iostream>
using namespace std;

int Main() {
    int a, b
    cin >> a >> b;
    cout << a + b << endl
    return 0;
}

Entrada: dois inteiros, nessa ordem: a, depois b.

Saída (um único valor):

<resultado>

Tarefa 5 - Celsius para Fahrenheit

Arquivo: tarefa5.cpp

Leia uma temperatura em graus Celsius e mostre o valor correspondente em Fahrenheit, usando a fórmula F = C * 9 / 5 + 32.

Entrada: um número real, C.

Saída (um único valor):

<resultado>

Cuidado com os tipos: se C for int, a conta C * 9 / 5 pode perder casas decimais antes de somar 32.

Desafio (opcional) - Área e perímetro do círculo

Arquivo: desafio.cpp

Leia o raio de um círculo e mostre a sua área (3.14159 * raio * raio) e o seu perímetro (2 * 3.14159 * raio).

Entrada: um número real, RAIO.

Saída (duas linhas):

<área>
<perímetro>

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=10, b=3, ambos int. a/b é divisão inteira: 10/3 = 3 (resto descartado, sem arredondar).

2-5. Tipos: idade → int (contagem, sem casas decimais); preço → double (valores como 19.90); inicial → char (um único caractere); aprovado → bool (só duas respostas possíveis).

6. x = 4+3 = 7. y = x-y = 7-3 = 4 (repare que usa o x já atualizado, não o x original).

7. Main deveria ser main: C++ diferencia maiúsculas de minúsculas.

8. Falta ; depois de int a, b.

9. Uma constante protege o valor: se alguém tentar alterar PI no meio do código, o compilador barra na hora.

10. Divisão entre inteiros trunca a parte decimal; double evita a perda de precisão nesse tipo de cálculo.

Tarefa

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

Tarefa 1: não tem uma resposta única (é o nome e a idade do próprio aluno), por isso não entra na correção automática. Exemplo de programa válido:

#include <iostream>
using namespace std;

int main() {
    cout << "Nome Sobrenome" << endl;
    cout << 20 << endl;
    return 0;
}

Tarefa 2:

#include <iostream>
using namespace std;

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

Tarefa 3:

#include <iostream>
using namespace std;

int main() {
    double preco;
    int quantidade;
    cin >> preco >> quantidade;
    cout << preco * quantidade << endl;
    return 0;
}

Tarefa 4: os três erros são: a função está escrita como Main, em vez de main; falta um ; ao final da linha int a, b; e falta um ; ao final da linha cout << a + b << endl. Corrigido:

#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}

Tarefa 5:

#include <iostream>
using namespace std;

int main() {
    double c;
    cin >> c;
    cout << c * 9 / 5 + 32 << endl;
    return 0;
}

Desafio:

#include <iostream>
using namespace std;

int main() {
    double raio;
    cin >> raio;
    cout << 3.14159 * raio * raio << endl;
    cout << 2 * 3.14159 * raio << endl;
    return 0;
}

Lista de Exercícios da Semana 2 - Base: Ascencio & Campos, Cap. 1 (1.5–1.8) e Cap. 3 (3.3). Traga suas dúvidas para o encontro síncrono.