Atualmente, os algoritmos nos cercam a todo instante - desde o despertar até o horário de dormir. Pensando em exemplos do cotidiano de cada um de vocês, descrevam um algoritmo que utilizam com frequência, seja na rotina, no trabalho ou nos estudos. Descrevam o funcionamento do algoritmo, as possíveis variáveis envolvidas e como elas interagem no processo.

Passo 1

O enunciado pede que eu descreva um algoritmo cotidiano que eu uso com frequência, explicando o funcionamento, quais são as variáveis envolvidas e como elas interagem. Não preciso perguntar nada a você: vou escolher um exemplo típico e útil para quem estuda — um algoritmo de planejamento e execução de sessões de estudo (versão “Pomodoro adaptado para provas”). Vou listar o que o algoritmo deve fazer: organizar tarefas de estudo quando o tempo é limitado, priorizar o que estudar, dividir o tempo em blocos focados e ajustar conforme energia e imprevistos.

Passo 2

Visão geral do algoritmo (o objetivo)
  • Objetivo: transformar várias tarefas de estudo em uma sequência de blocos focados que maximiza aprendizado e uso do tempo disponível.
  • Saída esperada: um cronograma de sessões de estudo (ordem das tarefas + duração de cada sessão + pausas) e regras para reajuste em caso de atraso ou cansaço.

Passo 3

Definição das variáveis (e o que cada uma representa)
  • T: tempo total disponível para estudar (em minutos ou horas). Ex.: T=240 significa 4 horas.
  • N: número de tarefas a cobrir (ex.: revisar 5 tópicos ou resolver conjuntos de exercícios).
  • Para cada tarefa i (com i=1,\dots,N):
    • d_i: estimativa de duração necessária para a tarefa i (minutos).
    • p_i: prioridade da tarefa i (número, maior = mais importante/urgente).
    • c_i: custo/percepção de dificuldade da tarefa i (escala por exemplo 1 a 5).
  • S: duração padrão de um bloco focado (ex.: S=25 minutos, estilo Pomodoro).
  • B: duração de uma pausa curta (ex.: B=5 minutos) e B_L pausa longa (ex.: B_L=15 minutos).
  • E: nível de energia atual (escala 0–1 ou 0–100); afeta quantos blocos seguidos consigo fazer.
  • R: regra de reajuste/realocação (por exemplo, quando o total estimado excede T).
Observação sobre interação: p_i, d_i e c_i são usadas para decidir que tarefa entra primeiro; E e S influenciam se devo reduzir S ou trocar uma tarefa muito difícil por uma mais simples; T impõe limite total.

Passo 4

Princípio do método (intuição prática)
  • Primeiro: fazer um inventário rápido das tarefas (anotar N, listar d_i, p_i, c_i).
  • Segundo: calcular uma “pontuação de prioridade por custo” para ordenar as tarefas; por exemplo: s_i=\frac{p_i}{d_i\cdot c_i}onde s_i maior indica tarefa com melhor “retorno” por minuto de esforço.
  • Terceiro: ordenar tarefas por s_i decrescente e alocar blocos de duração S até cumprir d_i ou acabar T.
  • Quarto: fazer ciclos: estudar S minutos, pausinha B; a cada 3–4 blocos, pausa longa B_L.
  • Quinto: ao notar queda de E (sono, distração), aplicar R: reduzir S ou mudar para tarefa de menor c_i.

Passo 5

Pseudocódigo do algoritmo (passo a passo operacional)
  • Entrada: T, lista de tarefas com (d_i,p_i,c_i), parâmetros S,B,B_L,E.
  • Saída: cronograma de blocos (\text{tarefa},\text{início},\text{duração})íçã.
Pseudocódigo:
Initialize tempo_restante := T
Para cada tarefa i calcule s_i := \dfrac{p_i}{d_i\cdot c_i}
Ordene tarefas por s_i decrescente
Enquanto tempo_restante > 0 e existir tarefa com tempo restante:
Seleciona a primeira tarefa com d_i>0
bloco := min( S, d_i, tempo_restante))
Agende bloco na tarefa selecionada
Atualize d_i := d_i - bloco
tempo_restante := tempo_restante - bloco
Se bloco == S então:
Agende pausa curta B
tempo_restante := tempo_restante - B
Conte blocos desde última pausa longa; se atingiu 4, agende B_L em vez de B
Se detectar E baixo então:
Aplicar regra R (ex.: trocar tarefa por revisão mais leve ou reduzir próximos blocos a S/2)

Passo 6

Exemplo numérico ilustrativo (faça sem calculadora, passo a passo)
Suponha T=120 minutos (2 horas), S=25, B=5, B_L=15.
Tarefas:
  • tarefa 1: d_1=40, p_1=9, c_1=2
  • tarefa 2: d_2=30, p_2=6, c_2=1
  • tarefa 3: d_3=60, p_3=7, c_3=3
Calcule s_i:
s_1=\dfrac{9}{40\cdot2}=\dfrac{9}{80}=0{,}1125
s_2=\dfrac{6}{30\cdot1}=\dfrac{6}{30}=0{,}2
s_3=\dfrac{7}{60\cdot3}=\dfrac{7}{180}\approx0{,}0389
Ordenação por s_i: tarefa 2, tarefa 1, tarefa 3.
Alocação:
  • Primeiro bloco: tarefa 2 por 25 min (resta d_2=5, T \rightarrow 95)
  • Pausa 5 min ( T \rightarrow 90)
  • Segundo bloco: tarefa 2 por 5 min (conclui tarefa 2, T \rightarrow 85)
  • Pausa pequena 5 min ( T \rightarrow 80)
  • Terceiro bloco: tarefa 1 por 25 min (resta d_1=15, T \rightarrow 55)
  • Pausa 5 min ( T \rightarrow 50)
  • Quarto bloco: tarefa 1 por 15 min (conclui tarefa 1, T \rightarrow 35)
  • Pausa longa 15 min (porque já fez 4 blocos) ( T \rightarrow 20)
  • Último bloco: tarefa 3 por 20 min (resta d_3=40, T \rightarrow 0)
Resultado: prioridades respeitadas, tarefas de maior retorno completas primeiro; tarefa 3 teve parte feita. Se E caísse para baixo de um limiar antes do último bloco, podia-se reduzir o último bloco para revisar em vez de tentar aprender conteúdo novo.

Passo 7

Entendendo por que essa escolha de regras funciona (a aula rápida)
  • Ordenar por s_i=\dfrac{p_i}{d_i\cdot c_i} é uma heurística gulosa: ela tenta maximizar “valor por unidade de esforço”. Isso é parecido com problemas de knapsack/otimização, mas aqui usamos algo simples para fazer rápido na prova/na prática.
  • Dividir em blocos S explora a ideia de atenção limitada: focar 25 minutos é mais efetivo que tentar 2 horas seguidas. As pausas B recuperam energia ( E tende a subir após pausas).
  • A regra R é a adaptação dinâmica: planos têm que mudar quando E e imprevistos mudam. Um algoritmo com reajuste é robusto.

Passo 8

Dicas práticas e variantes (como adaptar na hora da prova da vida)
  • Se tiver pouca energia ( E baixo): prefira tarefas com baixo c_i (revisões, exercícios resolvidos) até recuperar.
  • Se T muito pequeno, use uma versão curta (por exemplo S=15 e B=3).
  • Se uma tarefa é crítica e urgente, aumente p_i ou reduza \,d_i estimando apenas uma “versão mínima aceitável” para aquela tarefa.
  • Variante para listas longas: agrupe tarefas similares (p.ex., todos exercícios de cálculo num bloco) e trate o grupo como uma única tarefa com d somada e p média.

Passo 9

Principais armadilhas e como evitá-las
  • Superestimação/ subestimação de d_i: seja conservador — melhor sobrará tempo do que faltar.
  • Não monitorar E: se você ignora cansaço, perde eficiência. Marque no papel/voz seu nível de energia no início e a cada pausa.
  • Perfeccionismo: se uma tarefa vira “consome tempo demais”, use uma versão mínima para garantir cobertura do restante do conteúdo.

Passo 10

Motivação final e tom amigo
Sei como é desesperador olhar pra pilha de matérias quando a prova está chegando. Esse algoritmo é como um amigo organizado: te ajuda a priorizar o que realmente importa e a manter energia até o fim. Começa simples, testa por uma sessão e ajusta os parâmetros ( S,B) conforme seu ritmo. Você consegue — um bloco por vez!

Resposta

Algoritmo: Planejamento e execução de estudo em blocos (Pomodoro adaptado) — ordenar tarefas por s_i=\dfrac{p_i}{d_i\cdot c_i}, alocar blocos de duração S até T acabar, inserir pausas B/ B_L, e aplicar regra de reajuste R quando E diminuir.

Exercícios relacionados