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
.cppcom 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 docin). 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
cinpor valor. - Compile e rode cada programa antes de entregar, testando com os valores de exemplo.
- Entrega: envie todos os arquivos
.cppjuntos 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
Cforint, a contaC * 9 / 5pode perder casas decimais antes de somar32.
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ão | Resposta |
|---|---|
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | a |
| 6 | b |
| 7 | c |
| 8 | d |
| 9 | a |
| 10 | b |
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.