Como Interpretar Enunciados de Programação e Extrair as Informações Certas
Muitos alunos travam ao ler um enunciado e pensam: "Não sei por onde começar!"
O segredo é fazer 3 perguntas fundamentais para TODO enunciado:
Essas 3 perguntas formam o fluxo de TODO programa:
"Escreva um programa que leia 10 números inteiros, os armazene em um vetor e mostre a sequência em ordem inversa."
Palavras-chave: leia 10 números inteiros
→ Preciso ler 10 valores do tipo int
→ Ferramenta: scanf("%d", &vetor[i]) dentro de um laço
Palavras-chave: armazene em um vetor ordem inversa
→ Preciso de um vetor de 10 posições
→ "Ordem inversa" = percorrer do último ao primeiro índice
Palavras-chave: mostre a sequência
→ Imprimir na tela com printf
💡 Mapa mental gerado:
Ler 10 ints → Guardar em vetor[10] → Imprimir de vetor[9] até vetor[0]
"Escreva um programa que leia 16 números reais e os armazene em uma matriz quadrada. Calcule o somatório dos elementos da diagonal principal e o somatório dos elementos da diagonal secundária. O programa deve imprimir o maior somatório e indicar a qual diagonal ele pertence."
(Lista 7, Exercício 6)
| Trecho do Enunciado | Tradução para Código |
|---|---|
| "leia 16 números reais" | float matriz[4][4]; + scanf em laço duplo |
| "armazene em uma matriz quadrada" | Matriz 4×4 (√16 = 4) |
| "somatório dos elementos da diagonal principal" | if(i == j) soma_princ += matriz[i][j]; |
| "somatório dos elementos da diagonal secundária" | if(i+j == 3) soma_sec += matriz[i][j]; |
| "imprimir o maior somatório" | if(soma_princ > soma_sec) ... else ... |
| "indicar a qual diagonal ele pertence" | Imprimir texto: "Diagonal principal" ou "Diagonal secundária" |
Aprenda a reconhecer estas palavras e o que elas significam:
| Palavra/Frase | Significado | Ferramenta |
|---|---|---|
| "leia" | Entrada do usuário | scanf() |
| "receba como entrada" | Entrada do usuário | scanf() |
| "fornecido pelo usuário" | Entrada do usuário | scanf() |
| "N números" | Quantidade específica | for com N iterações |
| "sequência de" | Vários valores | Vetor + laço |
| Palavra/Frase | Significado | Ferramenta |
|---|---|---|
| "armazene em um vetor" | Usar array | tipo nome[tamanho]; |
| "armazene em uma matriz" | Usar matriz 2D | tipo nome[lin][col]; |
| "calcule a média" | Soma ÷ quantidade | Acumulador + divisão |
| "somatório" | Soma de elementos | Variável acumuladora |
| "maior" / "menor" | Comparação | if + atualização |
| "ordem inversa" | De trás pra frente | Laço decrescente |
| "par" / "ímpar" | Resto da divisão por 2 | % 2 == 0 |
| "positivo" / "negativo" | Sinal do número | >= 0 ou < 0 |
| "diagonal principal" | Linha = Coluna | i == j |
| "diagonal secundária" | Linha + Coluna = N-1 | i + j == N-1 |
| Palavra/Frase | Significado | Ferramenta |
|---|---|---|
| "imprima" / "mostre" | Exibir na tela | printf() |
| "apresente na tela" | Exibir na tela | printf() |
| "informe" | Exibir resultado | printf() |
| "ao final" | Depois do laço | Código após o for |
Para cada enunciado, siga este passo a passo:
Ex: leia, armazene, calcule, imprima
Cada verbo é uma ação que seu programa deve executar.
Ex: "10 números inteiros", "temperaturas na escala Celsius", "matriz 5x5"
Isso define tipos (int, float) e tamanhos.
for(i=0; i<10; i++)while(num != 0)for aninhadosEx: "média" → soma/N, "25%" → valor * 1.25, "primo" → verificar divisores
Ex: "com duas casas decimais" → %.2f, "em sequência" → "%d "
"Escreva um programa que leia 10 valores correspondentes a temperaturas na escala Celsius, os guarde em uma matriz unidimensional (vetor) e imprima a maior temperatura, a menor temperatura e a temperatura média."
(Lista 6, Exercício 5)
| Passo | Pergunta | Resposta |
|---|---|---|
| 1 | Verbos de ação? | LEIA, GUARDE, IMPRIMA |
| 2 | Dados? | 10 temperaturas (Celsius) → float |
| 3 | Estrutura? | "matriz unidimensional (vetor)" → float temp[10]; |
| 4 | Repetição? | 10 valores fixos → for(i=0; i<10; i++) |
| 5 | Fórmulas? | Maior: comparação, Menor: comparação, Média: soma/10 |
| 6 | Saída? | "maior", "menor", "média" → 3 printf com %.2f |
#include <stdio.h> int main() { float temp[10]; float soma = 0, maior, menor, media; int i; // 📥 ENTRADA: leitura das temperaturas for(i = 0; i < 10; i++) { scanf("%f", &temp[i]); soma += temp[i]; } // ⚙️ PROCESSAMENTO: encontrar maior e menor maior = temp[0]; menor = temp[0]; for(i = 1; i < 10; i++) { if(temp[i] > maior) maior = temp[i]; if(temp[i] < menor) menor = temp[i]; } media = soma / 10.0; // 📤 SAÍDA: imprimir resultados printf("Maior temperatura: %.2f\n", maior); printf("Menor temperatura: %.2f\n", menor); printf("Temperatura media: %.2f\n", media); return 0; }
✅ Faça um ESBOÇO antes de codar:
Escreva em português (ou em comentários) o que cada parte do programa vai fazer. Exemplo:
// 1. Declarar vetor de 10 floats
// 2. Ler 10 valores com for + scanf
// 3. Encontrar maior e menor
// 4. Calcular média
// 5. Imprimir resultados
✅ Use o EXEMPLO do enunciado:
Se o enunciado mostra um exemplo de entrada e saída, use-o para testar seu raciocínio. Faça as contas manualmente com o exemplo para entender a lógica antes de programar.
⚠️ Cuidado com "pegadinhas":
>= 0for/whileif antes
🔍 Lembre-se: Todo enunciado tem as 3 respostas escondidas:
📥 ENTRADA ·
⚙️ PROCESSAMENTO ·
📤 SAÍDA
Encontre-as e você terá o mapa completo do programa! 🚀