Prof. Paulo Rettore
Universidade Federal de Lavras
GAC124 — Introdução aos Algoritmos
Leia a ideia central de cada temática e identifique quais conceitos ainda precisam de prática.
Resolva o exercício de cada slide no papel ou no compilador antes de conferir a explicação.
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.
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?
= atribui; == compara.cin lê; cout exibe.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.
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.
| Estrutura | Teste | Mínimo |
|---|---|---|
while |
Antes do corpo | Zero vezes |
do-while |
Depois do corpo | Uma vez |
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?
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.
ifstream: entrada e leitura.ofstream: saída e escrita.fstream: leitura e escrita no mesmo fluxo.if (!arquivo).while (arquivo >> valor) a while (!arquivo.eof()).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.
Crie um programa que leia temperaturas de um arquivo e gere um relatório.
bool perigosa(double t) para identificar valores menores que 0 ou maiores que 40.ifstream usando um while controlado pela própria leitura.if-else para separar temperaturas perigosas e normais.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;
= de ==?while e do-while?and, or e not?while?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.
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.
REVISÃO CONCLUÍDA
Prof. Paulo Rettore
Utilize o fórum do Campus Virtual para enviar dúvidas.