Task Manager: Gerenciador de Tarefas Digital
Objetivo do Projeto
Criar um gerenciador de tarefas simples usando arrays e collections básicas.
Estruturas de Dados Utilizadas
// Lista de tarefas usando array
String[] tarefas = new String[100];
int[] prioridades = new int[100];
boolean[] concluidas = new boolean[100];
int totalTarefas = 0;
// Lista dinâmica usando ArrayList
ArrayList<String> tarefasDinamicas = new ArrayList<>();
// Fila de tarefas urgentes
Queue<String> tarefasUrgentes = new LinkedList<>();
// Mapa para busca rápida
HashMap<String, Integer> indiceTarefas = new HashMap<>();
Funcionalidades Principais
1. Adicionar Tarefa
public static void adicionarTarefa(String tarefa, int prioridade) {
if (totalTarefas < tarefas.length) {
tarefas[totalTarefas] = tarefa;
prioridades[totalTarefas] = prioridade;
concluidas[totalTarefas] = false;
// Adiciona nas estruturas dinâmicas
tarefasDinamicas.add(tarefa);
indiceTarefas.put(tarefa, totalTarefas);
if (prioridade > 8) {
tarefasUrgentes.offer(tarefa);
}
totalTarefas++;
System.out.println("Tarefa adicionada: " + tarefa);
}
}
2. Listar Tarefas
public static void listarTarefas() {
System.out.println("\n=== Lista de Tarefas ===");
for (int i = 0; i < totalTarefas; i++) {
String status = concluidas[i] ? "[X]" : "[ ]";
System.out.printf("%s %s (Prioridade: %d)%n",
status, tarefas[i], prioridades[i]);
}
}
3. Marcar Como Concluída
public static void concluirTarefa(String tarefa) {
Integer indice = indiceTarefas.get(tarefa);
if (indice != null) {
concluidas[indice] = true;
System.out.println("Tarefa concluída: " + tarefa);
}
}
4. Buscar Tarefas
public static void buscarTarefa(String termo) {
System.out.println("\n=== Resultados da Busca ===");
for (int i = 0; i < totalTarefas; i++) {
if (tarefas[i].toLowerCase().contains(termo.toLowerCase())) {
System.out.println("- " + tarefas[i]);
}
}
}
5. Próxima Tarefa Urgente
public static String proximaTarefaUrgente() {
return tarefasUrgentes.poll();
}
Exemplo de Uso
public static void main(String[] args) {
// Adicionar algumas tarefas
adicionarTarefa("Debugar código", 9);
adicionarTarefa("Backup sistema", 7);
adicionarTarefa("Atualizar firewall", 10);
// Listar todas as tarefas
listarTarefas();
// Concluir uma tarefa
concluirTarefa("Backup sistema");
// Buscar tarefas
buscarTarefa("firewall");
// Verificar próxima tarefa urgente
String urgente = proximaTarefaUrgente();
System.out.println("Próxima urgente: " + urgente);
}
Desafios para Praticar
Filtrar por Prioridade
public static void filtrarPorPrioridade(int minimo) {
for (int i = 0; i < totalTarefas; i++) {
if (prioridades[i] >= minimo) {
System.out.println(tarefas[i]);
}
}
}
Remover Tarefa
public static void removerTarefa(String tarefa) {
Integer indice = indiceTarefas.get(tarefa);
if (indice != null) {
// Shift elements
for (int i = indice; i < totalTarefas - 1; i++) {
tarefas[i] = tarefas[i + 1];
prioridades[i] = prioridades[i + 1];
concluidas[i] = concluidas[i + 1];
}
totalTarefas--;
// Atualizar estruturas dinâmicas
tarefasDinamicas.remove(tarefa);
indiceTarefas.remove(tarefa);
}
}
Exercícios Propostos
Implementar ordenação por prioridade
Adicionar data limite para tarefas
Criar filtro por status (pendente/concluída)
Implementar sistema de tags usando arrays
Adicionar persistência em arquivo texto
Próximos Passos
26 June 2025