🔁 Capítulo: Estruturas Repetitivas - Exercícios Práticos
Nesta lista de exercícios, você praticará o uso de estruturas de repetição com teste no início (while / enquanto) e repetição com variável de controle contadora (for / para).
🗺️ Mapa de Progressão Pedagógica
graph LR
A["Nível 1: Fundamentos\n(crescente, senha_fixa)"] --> B["Nível 2: Prática\n(tabuada, media_idades)"]
B --> C["Nível 3: Integração\n(soma_impares, fatorial)"]
C --> D["Nível 4: Desafio\n(experiencias)"]
style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style B fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style C fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style D fill:#fce4ec,stroke:#e91e63,stroke-width:2px
🟢 Nível 1 — Fundamentos
Exercício 1: Problema “crescente”
Enunciado: Leia uma quantidade indeterminada de duplas de valores inteiros $X$ e $Y$. Para cada dupla, exiba “CRESCENTE” se $X$ for menor que $Y$, ou “DECRESCENTE” caso contrário. O programa deve finalizar quando forem digitados dois valores iguais.
Resultado Esperado
flowchart TD
A["Ler X e Y"] --> B{"X == Y ?"}
B -- "Sim" --> C(["Fim do Programa"])
B -- "Não" --> D{"X < Y ?"}
D -- "Sim" --> E["Exibir CRESCENTE!"]
D -- "Não" --> F["Exibir DECRESCENTE!"]
E & F --> G["Ler novos X e Y"]
G --> B
Exemplo de Execução:
Digite dois números:
5
4
DECRESCENTE!
Digite outros dois números:
3
8
CRESCENTE!
Digite outros dois números:
2
2
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_07_Repetitivas_Crescente_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 07 - Estruturas Repetitivas
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int x, y;
printf("Digite dois números:\n");
scanf("%d", &x);
scanf("%d", &y);
while (x != y) {
if (x < y) {
printf("CRESCENTE!\n");
} else {
printf("DECRESCENTE!\n");
}
printf("Digite outros dois números:\n");
scanf("%d", &x);
scanf("%d", &y);
}
return 0;
}
Solução em Java:
import java.util.Scanner;
public class Crescente {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Digite dois números:");
int x = sc.nextInt();
int y = sc.nextInt();
while (x != y) {
if (x < y) {
System.out.println("CRESCENTE!");
} else {
System.out.println("DECRESCENTE!");
}
System.out.println("Digite outros dois números:");
x = sc.nextInt();
y = sc.nextInt();
}
sc.close();
}
}
Solução em Python:
print("Digite dois números:")
x = int(input())
y = int(input())
while x != y:
if x < y:
print("CRESCENTE!")
else:
print("DECRESCENTE!")
print("Digite outros dois números:")
x = int(input())
y = int(input())
🟡 Nível 2 — Prática
Exercício 2: Problema “tabuada”
Enunciado: Ler um número inteiro $N$ ($1 \le N \le 10$). A seguir, mostrar a tabuada de $N$ de 1 a 10.
Resultado Esperado
Exemplo de Execução:
Deseja a tabuada para qual valor? 4
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
4 x 10 = 40
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_07_Repetitivas_Tabuada_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 07 - Estruturas Repetitivas
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int n, i;
printf("Deseja a tabuada para qual valor? ");
scanf("%d", &n);
for (i = 1; i <= 10; i++) {
printf("%d x %d = %d\n", n, i, n * i);
}
return 0;
}
Solução em Java:
import java.util.Scanner;
public class Tabuada {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Deseja a tabuada para qual valor? ");
int n = sc.nextInt();
for (int i = 1; i <= 10; i++) {
System.out.printf("%d x %d = %d\n", n, i, n * i);
}
sc.close();
}
}
Solução em Python:
n = int(input("Deseja a tabuada para qual valor? "))
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")
🟠 Nível 3 — Integração
Exercício 3: Problema “soma_impares”
Enunciado: Leia 2 valores inteiros $X$ e $Y$ (em qualquer ordem). A seguir, calcule e mostre a soma dos números ímpares entre eles (sem incluir os próprios $X$ e $Y$).
Resultado Esperado
Exemplo de Execução:
Digite dois numeros:
6
-5
SOMA DOS IMPARES = 5
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_07_Repetitivas_SomaImpares_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 07 - Estruturas Repetitivas
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int x, y, soma = 0, i, menor, maior;
printf("Digite dois numeros:\n");
scanf("%d", &x);
scanf("%d", &y);
if (x < y) {
menor = x;
maior = y;
} else {
menor = y;
maior = x;
}
for (i = menor + 1; i < maior; i++) {
if (i % 2 != 0) {
soma += i;
}
}
printf("SOMA DOS IMPARES = %d\n", soma);
return 0;
}
Solução em Java:
import java.util.Scanner;
public class SomaImpares {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Digite dois numeros:");
int x = sc.nextInt();
int y = sc.nextInt();
int menor = Math.min(x, y);
int maior = Math.max(x, y);
int soma = 0;
for (int i = menor + 1; i < maior; i++) {
if (i % 2 != 0) {
soma += i;
}
}
System.out.println("SOMA DOS IMPARES = " + soma);
sc.close();
}
}
Solução em Python:
print("Digite dois numeros:")
x = int(input())
y = int(input())
menor = min(x, y)
maior = max(x, y)
soma = 0
for i in range(menor + 1, maior):
if i % 2 != 0:
soma += i
print(f"SOMA DOS IMPARES = {soma}")
🔴 Nível 4 — Desafio
Exercício 4: Problema “experiencias”
Enunciado:
Maria quer saber a quantidade total de cobaias utilizadas no laboratório e o percentual de cada tipo (C: Coelho, R: Rato, S: Sapo). O programa deve ler a quantidade de casos de teste $N$. Cada caso de teste consiste de uma linha contendo um inteiro (quantidade de cobaias) e um caractere (C, R ou S). Ao final, emitir um relatório completo com os totais e as porcentagens com duas casas decimais.
Resultado Esperado
flowchart TD
A["Ler N casos"] --> B["Loop N vezes:\nLer Quantidade e Tipo (C, R, S)"]
B --> C["Acumular totalCobaias,\ntotalCoelhos, totalRatos, totalSapos"]
C --> D["Calcular Percentuais:\n(tipo / totalCobaias) * 100"]
D --> E["Exibir Relatório Estatístico"]
Exemplo de Execução:
Quantos casos de teste serao digitados? 5
Quantidade de cobaias: 10
Tipo de cobaia: C
Quantidade de cobaias: 6
Tipo de cobaia: R
Quantidade de cobaias: 15
Tipo de cobaia: S
Quantidade de cobaias: 5
Tipo de cobaias: C
Quantidade de cobaias: 14
Tipo de cobaia: R
RELATORIO FINAL:
Total: 50 cobaias
Total de coelhos: 15
Total de ratos: 20
Total de sapos: 15
Percentual de coelhos: 30.00 %
Percentual de ratos: 40.00 %
Percentual de sapos: 30.00 %
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_07_Repetitivas_Experiencias_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 07 - Estruturas Repetitivas
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int n, i, qtd, total = 0, coelhos = 0, ratos = 0, sapos = 0;
char tipo;
printf("Quantos casos de teste serao digitados? ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Quantidade de cobaias: ");
scanf("%d", &qtd);
printf("Tipo de cobaia: ");
scanf(" %c", &tipo);
total += qtd;
if (tipo == 'C' || tipo == 'c') {
coelhos += qtd;
} else if (tipo == 'R' || tipo == 'r') {
ratos += qtd;
} else if (tipo == 'S' || tipo == 's') {
sapos += qtd;
}
}
printf("\nRELATORIO FINAL:\n");
printf("Total: %d cobaias\n", total);
printf("Total de coelhos: %d\n", coelhos);
printf("Total de ratos: %d\n", ratos);
printf("Total de sapos: %d\n", sapos);
printf("Percentual de coelhos: %.2lf %%\n", (double)coelhos / total * 100.0);
printf("Percentual de ratos: %.2lf %%\n", (double)ratos / total * 100.0);
printf("Percentual de sapos: %.2lf %%\n", (double)sapos / total * 100.0);
return 0;
}
Solução em Java:
import java.util.Locale;
import java.util.Scanner;
public class Experiencias {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.print("Quantos casos de teste serao digitados? ");
int n = sc.nextInt();
int total = 0, coelhos = 0, ratos = 0, sapos = 0;
for (int i = 0; i < n; i++) {
System.out.print("Quantidade de cobaias: ");
int qtd = sc.nextInt();
System.out.print("Tipo de cobaia: ");
char tipo = sc.next().toUpperCase().charAt(0);
total += qtd;
if (tipo == 'C') coelhos += qtd;
else if (tipo == 'R') ratos += qtd;
else if (tipo == 'S') sapos += qtd;
}
System.out.println("\nRELATORIO FINAL:");
System.out.printf("Total: %d cobaias\n", total);
System.out.printf("Total de coelhos: %d\n", coelhos);
System.out.printf("Total de ratos: %d\n", ratos);
System.out.printf("Total de sapos: %d\n", sapos);
System.out.printf("Percentual de coelhos: %.2f %%\n", (double) coelhos / total * 100.0);
System.out.printf("Percentual de ratos: %.2f %%\n", (double) ratos / total * 100.0);
System.out.printf("Percentual de sapos: %.2f %%\n", (double) sapos / total * 100.0);
sc.close();
}
}
Solução em Python:
n = int(input("Quantos casos de teste serao digitados? "))
total, coelhos, ratos, sapos = 0, 0, 0, 0
for _ in range(n):
qtd = int(input("Quantidade de cobaias: "))
tipo = input("Tipo de cobaia: ").strip().upper()
total += qtd
if tipo == 'C':
coelhos += qtd
elif tipo == 'R':
ratos += qtd
elif tipo == 'S':
sapos += qtd
print("\nRELATORIO FINAL:")
print(f"Total: {total} cobaias")
print(f"Total de coelhos: {coelhos}")
print(f"Total de ratos: {ratos}")
print(f"Total de sapos: {sapos}")
print(f"Percentual de coelhos: {(coelhos / total) * 100.0:.2f} %")
print(f"Percentual de ratos: {(ratos / total) * 100.0:.2f} %")
print(f"Percentual de sapos: {(sapos / total) * 100.0:.2f} %")