🎓 Revisão do Bloco 1

UFLA
Preparação para a Prova 1

Prof. Paulo Rettore

Universidade Federal de Lavras

GAC124 — Introdução aos Algoritmos

🧭 Como usar esta revisão

UFLA

1. Relembre

Leia a ideia central de cada temática e identifique quais conceitos ainda precisam de prática.

2. Tente antes

Resolva o exercício de cada slide no papel ou no compilador antes de conferir a explicação.

3. Conecte

No desafio integrador, combine entrada, decisões, repetições, funções e arquivos.

Escopo: aulas 01 a 06 — fundamentos, estrutura sequencial, condicionais, repetições, modularização e arquivos de texto.

1. Algoritmos, variáveis e tipos

UFLA

Ideias essenciais

  • Um algoritmo organiza passos para transformar entradas em resultados.
  • O fluxo básico é entrada → processamento → saída.
  • Uma variável tem nome, tipo e valor armazenado na memória.
  • Tipos frequentes: int, double, char, string e bool.
int idade;
double altura;
string nome;

int ano = 2026;
idade = 18;
idade = 19; // substitui o valor anterior

Exercício: declare variáveis para nome, idade e média. Qual tipo representa melhor cada informação?

2. Estrutura sequencial, operadores e E/S

UFLA

O que revisar

  • = atribui; == compara.
  • Parênteses vêm antes de multiplicação, divisão e resto; depois vêm soma e subtração.
  • cin lê; cout exibe.
  • Use fixed e setprecision para formatar decimais.

Atenção: 7 / 2 produz 3 quando os dois operandos são inteiros. Use 7.0 / 2 para obter 3.5.

int x = 2;
int y = 5;
int z = x + y * 2 % 3;

x += 4;  // x = x + 4
x++;     // pós-incremento

cout << "Resultado: " << z;

Exercício: calcule z passo a passo. Resposta: y * 2 = 10, 10 % 3 = 1, então z = 3.

3. Condicionais

UFLA

Escolher um caminho

  • if executa uma ação quando a condição é verdadeira.
  • if-else oferece dois caminhos.
  • else if testa alternativas em sequência.
  • switch-case organiza escolhas por valores discretos.

and exige todas as condições; or exige pelo menos uma; not inverte o resultado.

if (idade < 12) {
    cout << "Criança";
} else if (idade < 18) {
    cout << "Adolescente";
} else {
    cout << "Adulto";
}

switch (opcao) {
case 1: cout << "Salvar"; break;
case 2: cout << "Abrir";  break;
default: cout << "Inválida";
}

Exercício: valide uma nota entre 0 e 100 usando nota >= 0 and nota <= 100. Não use comparações encadeadas como em Matemática.

4. Repetições

UFLA

Escolher o laço

Estrutura Teste Mínimo
while Antes do corpo Zero vezes
do-while Depois do corpo Uma vez
  • Contador: registra quantas vezes algo ocorre.
  • Acumulador: guarda um resultado parcial.
  • Sentinela: valor que encerra uma leitura.
int valor, soma = 0;
cin >> valor;

while (valor != -1) {
    soma += valor;
    cin >> valor;
}

// Menu: ação ao menos uma vez
do {
    cin >> opcao;
} while (opcao != 0);

Exercício: leia valores até -1 e mostre soma e quantidade. O que precisa mudar a cada volta para não criar um laço infinito?

5. Modularização e parâmetros

UFLA

Funções organizam o programa

  • Protótipo: informa assinatura e retorno.
  • Definição: contém os comandos executados.
  • Chamada: inicia a execução da função.
  • Variáveis locais existem apenas no próprio escopo.

Por valor: a função recebe uma cópia. Por referência: o parâmetro é um apelido para a variável original.

double media(double a, double b);

double media(double a, double b) {
    return (a + b) / 2.0;
}

void troca(int& a, int& b) {
    int aux = a;
    a = b;
    b = aux;
}

Exercício: por que void dobra(int x) não altera a variável original? Reescreva usando int& x e explique a diferença.

6. Arquivos de texto

UFLA

Fluxos e cuidados

  • ifstream: entrada e leitura.
  • ofstream: saída e escrita.
  • fstream: leitura e escrita no mesmo fluxo.
  • Confirme a abertura com if (!arquivo).
  • Prefira while (arquivo >> valor) a while (!arquivo.eof()).
  • Use ios::app para acrescentar sem apagar o conteúdo existente.
ifstream entrada("alunos.txt");
ofstream saida("aprovados.txt");

if (!entrada || !saida) return 1;

string nome;
double nota;
while (entrada >> nome >> nota) {
    if (nota >= 60)
        saida << nome << ";" << nota << '\n';
}

CSV e getline: para campos com espaços ou separadores, leia a linha com getline e depois separe os campos pelo delimitador.

Exercício: abra um arquivo CSV em modo leitura, conte quantos registros foram lidos e grave o total em outro arquivo.

🧩 Desafio integrador

UFLA

Crie um programa que leia temperaturas de um arquivo e gere um relatório.

  1. Crie uma função bool perigosa(double t) para identificar valores menores que 0 ou maiores que 40.
  2. Leia o arquivo com ifstream usando um while controlado pela própria leitura.
  3. Use um contador, um acumulador e uma variável para maior valor.
  4. Use if-else para separar temperaturas perigosas e normais.
  5. Grave quantidade, média e maior temperatura em um relatório com ofstream.
double valor, soma = 0;
int quantidade = 0;
while (entrada >> valor) {
    soma += valor;
    quantidade++;
    if (perigosa(valor)) cout << "Atenção\n";
}
if (quantidade > 0)
    relatorio << soma / quantidade;

✅ Checklist antes da Prova 1

UFLA

Raciocínio e controle

  • Sei diferenciar = de ==?
  • Sei resolver uma expressão pela precedência correta?
  • Sei explicar quando usar while e do-while?
  • Meu laço sempre atualiza sua condição?
  • Sei combinar condições com and, or e not?

Código e arquivos

  • Declaro e inicializo as variáveis antes de usá-las?
  • Separo responsabilidades em funções?
  • Entendo valor, referência e escopo?
  • Confiro a abertura dos arquivos?
  • Uso a leitura no teste do while?
  • Consigo testar entradas válidas, inválidas e vazias?

Erros frequentes: esquecer break, esquecer atualização do laço, usar variável sem inicializar, confundir cin com cout e usar eof() como condição principal.

📚 Referências e prática

UFLA

Use estas fontes para consultas pontuais e exercícios adicionais:

As aulas 01 a 06, as atividades do Campus Virtual e as orientações do DREDD continuam sendo as referências principais para a Prova 1.

🚀 Agora é praticar!

UFLA

REVISÃO CONCLUÍDA

Leia o problema, planeje as variáveis, escreva o algoritmo e teste o código.

Prof. Paulo Rettore

Utilize o fórum do Campus Virtual para enviar dúvidas.