Guia de Engenharia de Prompt: Economize Tokens com Comandos Precisos

Imagem
Foto: Google DeepMind / Pexels Resumo rápido Entenda o que são tokens e por que cada fragmento de texto impacta o custo e o processamento. Aprenda o método dos 4 pilares para criar instruções técnicas diretas e sem redundâncias. Descubra como o uso de delimitadores substitui frases explicativas longas e economiza recursos. Veja exemplos práticos de como reduzir o tamanho de um prompt em mais de 50% mantendo a precisão. Se você já sentiu que está gastando "munição" à toa ao interagir com uma IA, este guia é para você. No nosso dia a dia de desenvolvimento, tratar o prompt como uma conversa de bar é um erro comum que consome recursos preciosos. Cada palavra que enviamos para o modelo é processada e cobrada, e entender essa mecânica é a diferença entre um sobrevivente eficiente e alguém que fica sem suprimentos no meio da missão. Neste artigo, vamos mergulhar na Engenharia de Prompt com foco total em eficiência. Vamos aprender a cortar o que é irrelevante, estruturar o que é v...

Laços de repetição em C#: while, do while, for e foreach sem complicação

Mascote do Devs na Prática correndo ao lado do título Laços de repetição em C#

Resumo rápido

  • while: repete enquanto a condição for verdadeira; pode nem rodar.
  • do while: roda pelo menos uma vez e depois testa.
  • for: ideal quando você sabe quantas vezes vai repetir.
  • foreach: percorre cada item de uma coleção, sem contador.
  • Todo laço precisa de algo que faça a condição ficar falsa, senão ele nunca para.

Imagine escrever Console.WriteLine("Atirou!") trinta vezes para trinta inimigos. Ninguém merece. Os laços de repetição fazem o programa repetir um bloco quantas vezes for preciso, com poucas linhas.

Os laços usam condições, então vale ter visto antes o post If, else e else if em C#.

while: enquanto houver inimigos

Mascote determinado ao lado de um while que repete até acabarem os inimigos

O while testa a condição antes de cada volta. Se for verdadeira, roda o bloco e testa de novo. Quando ficar falsa, sai do laço.

C#

int inimigos = 3;

while (inimigos > 0)
{
    Console.WriteLine($"Inimigo derrotado! Restam {inimigos - 1}.");
    inimigos--;
}

Console.WriteLine("Área limpa.");

Saída esperada

Inimigo derrotado! Restam 2.
Inimigo derrotado! Restam 1.
Inimigo derrotado! Restam 0.
Área limpa.

Se inimigos começasse em 0, o bloco nunca rodaria e o programa iria direto para "Área limpa.".

⚠️ Sem o inimigos--;, a condição nunca fica falsa e o programa trava num laço infinito. Sempre confira o que muda a cada volta.

do while: age primeiro, pergunta depois

O do while roda o bloco uma vez e só depois testa a condição. É perfeito para menus: o menu precisa aparecer pelo menos uma vez antes de você saber se o jogador quer sair.

C#

int opcao;

do
{
    Console.WriteLine("1 - Continuar | 0 - Sair");
    opcao = int.Parse(Console.ReadLine());
} while (opcao != 0);

Console.WriteLine("Jogo salvo. Até a próxima!");

Saída esperada (digitando 1 e depois 0)

1 - Continuar | 0 - Sair
1
1 - Continuar | 0 - Sair
0
Jogo salvo. Até a próxima!

Repare no ponto e vírgula depois do while (opcao != 0);: no do while ele é obrigatório.

for: quando você sabe quantas vezes

Mascote ao lado de um for que conta as balas de 1 a 5

O for junta três coisas numa linha só: onde o contador começa, até quando repete e como ele muda.

C#

int capacidadeDoPente = 5;

for (int bala = 1; bala <= capacidadeDoPente; bala++)
{
    Console.WriteLine($"Colocando bala {bala}...");
}

Console.WriteLine("Pente cheio!");

Saída esperada

Colocando bala 1...
Colocando bala 2...
Colocando bala 3...
Colocando bala 4...
Colocando bala 5...
Pente cheio!
Parte do forNo exemploQuando roda
Inícioint bala = 1Uma vez, antes de tudo
Condiçãobala <= capacidadeDoPenteAntes de cada volta
Passobala++Depois de cada volta

foreach: item por item da maleta

Mascote com uma lupa ao lado de um foreach que percorre a maleta

Quando você tem uma coleção (um array ou uma lista) e quer passar por todos os itens, o foreach é o mais simples: não tem contador nem risco de passar do fim.

C#

string[] maleta = { "pistola", "erva verde", "granada", "faca" };

foreach (string item in maleta)
{
    Console.WriteLine($"Na maleta: {item}");
}

Saída esperada

Na maleta: pistola
Na maleta: erva verde
Na maleta: granada
Na maleta: faca

Arrays são o assunto do próximo post da série, onde a maleta vira o exemplo principal.

break e continue: saindo antes ou pulando uma volta

  • break sai do laço na hora. Ex.: achou a chave, para de procurar.
  • continue pula o resto desta volta e vai para a próxima. Ex.: ignore os itens quebrados.

C#

string[] gavetas = { "vazia", "erva verde", "chave", "granada" };

foreach (string conteudo in gavetas)
{
    if (conteudo == "vazia") continue;
    Console.WriteLine($"Achou: {conteudo}");
    if (conteudo == "chave") break;
}

Saída esperada

Achou: erva verde
Achou: chave

Qual laço usar?

LaçoUse quandoExemplo do jogo
whileNão sabe quantas vezes; depende de uma condiçãoLutar enquanto houver inimigos
do whilePrecisa rodar pelo menos uma vezMostrar o menu até o jogador sair
forSabe o número de repetiçõesColocar 5 balas no pente
foreachVai passar por todos os itens de uma coleçãoListar a maleta

DESAFIO

Tente resolver antes de abrir a resposta. Sobreviveu? Vá para o próximo.

  1. Escreva um for que mostre a contagem regressiva de uma granada: 3, 2, 1 e depois "BOOM!".

    Ver resposta
    for (int i = 3; i >= 1; i--)
    {
        Console.WriteLine(i);
    }
    Console.WriteLine("BOOM!");
  2. Quantas vezes este laço roda? int vida = 0; while (vida > 0) { vida--; }

    Ver resposta

    Nenhuma. O while testa antes, e 0 > 0 é falso. Com do while, rodaria uma vez.

  3. Use while para curar o personagem de 10 em 10 até a vida chegar a 100, começando em 40. Quantas curas foram usadas?

    Ver resposta
    int vida = 40;
    int curas = 0;
    while (vida < 100)
    {
        vida += 10;
        curas++;
    }
    Console.WriteLine(curas); // 6

Conclusão

Com while, do while, for e foreach você repete tarefas sem copiar código. O foreach já deu uma prévia do próximo assunto: guardar vários valores numa única variável, o inventário do seu programa.

📖 Continue a série: Arrays em C#.

Comentários

Postagens mais visitadas deste blog

Classes e objetos em C#: criando o seu personagem do jeito certo

Console.WriteLine e Console.ReadLine em C#: conversando com o jogador

Modificadores de acesso em C#: public, private, protected e internal