Postagens

Mostrando postagens de outubro, 2024

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...

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

Imagem
Resumo rápido Classe é o molde: descreve os dados e as ações de algo, como um personagem. Objeto é uma cópia de verdade criada a partir do molde, com new . Campos guardam os dados do objeto; métodos são as ações dele. O construtor roda quando o objeto nasce e define os valores iniciais. Cada objeto tem os seus próprios valores: ferir um não fere o outro. Até agora, o personagem do jogo era um monte de variáveis soltas: nome , vida , balas . Funciona para um personagem. Mas e quando aparecem dois jogadores, cinco inimigos e um cachorro? Você vai criar vidaDoInimigo1 , vidaDoInimigo2 ... e se perder rapidinho. As classes resolvem isso: você descreve uma vez o que é um personagem e cria quantos quiser a partir dessa descrição. É a base da Programação Orientada a Objetos (POO). Classe é o molde, objeto é o personagem Pense na ficha de personagem em branco de um RPG. Ela diz que todo personagem tem nome, vida e balas, mas ainda não é ninguém. Essa ficha em branco é a classe . Qu...

Estruturas Aninhadas em C#: Decisão e Repetição Passo a Passo!

Imagem
Já conferiu os posts sobre Estruturas de Decisão e Estruturas de Repetição em C#? Se não viu ainda, vale a pena dar uma olhada antes de continuar! 😉 🌳 O que são Estruturas Aninhadas? Resumindo: Estruturas Aninhadas são quando colocamos uma estrutura de controle dentro de outra . Isso nos permite criar lógicas mais poderosas e detalhadas. Exemplos clássicos: 👉 Um if dentro de outro if 👉 Um for dentro de outro for 👉 Um if dentro de um for (e vice-versa) ✅ Estruturas de Decisão Aninhadas (if dentro de if) Perfeitas para quando você precisa verificar múltiplas condições! Exemplo Prático: int idade = 20; bool possuiHabilitacao = true; if (idade >= 18) { if (possuiHabilitacao) { Console.WriteLine("Você pode dirigir."); } else { Console.WriteLine("Você precisa tirar a habilitação....

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

Imagem
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 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 esp...

Laço for em C# a fundo: contagem regressiva, passos e for aninhado

Imagem
Resumo rápido O for tem três partes: início, condição e passo, separadas por ; . O passo não precisa ser i++ : pode ser i-- , i += 2 ou o que você quiser. Contagem regressiva: comece alto, use i >= 0 e i-- . Para percorrer um array do fim para o começo, comece em Length - 1 . Um for dentro de outro passa por todas as combinações. O erro mais comum é o "um a mais": <= onde deveria ser < . No post Laços de repetição em C# você viu while, do while, for e foreach lado a lado. Aqui o foco é só o for , o laço que você mais vai usar quando sabe quantas vezes repetir, e os truques que ele permite. As três partes do for C# for (int bala = 1; bala <= 3; bala++) { Console.WriteLine($"Disparo {bala}"); } Console.WriteLine("Pente vazio."); Saída esperada Disparo 1 Disparo 2 Disparo 3 Pente vazio. Parte No exemplo Quando roda início int bala = 1 uma vez, antes de tudo condição bala <= 3 antes de cada volta; se for false , o laço aca...

Switch em C#: quando usar no lugar de vários if (com exemplos)

Imagem
Resumo rápido O switch escolhe um caminho comparando um valor com uma lista de opções ( case ). Cada case termina com break . O default roda quando nenhuma opção bate, como o else . Vários case podem dividir o mesmo bloco. A expressão switch ( => ) devolve um valor direto, em menos linhas. Você chega ao mercador e ele mostra o menu: 1 para comprar, 2 para vender, 3 para melhorar a arma, 4 para sair. Dá para escrever isso com uma escada de if/else if , mas fica comprido. Para esse tipo de decisão, o C# tem o switch . Se ainda não viu o if , comece pelo post anterior da série: If, else e else if em C# . A estrutura do switch O switch recebe um valor e compara com cada case . Quando encontra o igual, executa aquele bloco até o break . C# Console.WriteLine("1 - Comprar | 2 - Vender | 3 - Melhorar arma | 4 - Sair"); int opcao = 2; switch (opcao) { case 1: Console.WriteLine("O que você vai levar?"); break; case 2: Cons...

Matrizes em C#: montando o mapa do jogo com arrays de duas dimensões

Imagem
Resumo rápido Matriz é um array com duas dimensões: linhas e colunas, como um tabuleiro. Cria com int[,] mapa = new int[3, 4]; (3 linhas, 4 colunas). Acessa com dois índices: mapa[linha, coluna] , ambos começando em 0. GetLength(0) dá o número de linhas e GetLength(1) o de colunas. Para percorrer, use um for dentro de outro. Um array comum é uma fila de compartimentos, como a maleta do post Arrays em C# . Mas o mapa de um jogo não é uma fila: é uma grade, com linhas e colunas. Para isso o C# tem as matrizes , ou arrays bidimensionais. Neste post você vai montar o mapa de um prédio abandonado, posicionar o jogador e os zumbis e desenhar tudo no console. Criando a matriz A vírgula dentro dos colchetes indica as duas dimensões. Você pode criar vazia, informando o tamanho, ou já com os valores: C# // 0 = chão, 1 = parede, 2 = zumbi int[,] mapa = { { 1, 1, 1, 1, 1 }, { 1, 0, 0, 2, 1 }, { 1, 0, 1, 0, 1 }, { 1, 1, 1, 1, 1 } }; Console.WriteLine($"Linhas: ...

Propriedades em C#: get e set para proteger a vida do personagem

Imagem
Resumo rápido Propriedade parece um campo por fora, mas por dentro tem código que controla a leitura e a escrita. get roda quando alguém lê o valor; set roda quando alguém muda. Dentro do set , value é o valor que tentaram colocar. Propriedade automática ( { get; set; } ) é o atalho quando não há regra. private set deixa ler de fora, mas só a própria classe muda. No post de classes e objetos , o personagem tinha um campo public int Vida . Funciona, mas qualquer parte do código pode fazer isto: C# Personagem leon = new Personagem(); leon.Vida = -500; // nada impede leon.Balas = 9999; // nem isso Console.WriteLine($"Vida: {leon.Vida} | Balas: {leon.Balas}"); class Personagem { public int Vida = 100; public int Balas = 6; } Saída esperada Vida: -500 | Balas: 9999 Vida negativa e munição infinita: um bug esperando para acontecer. As propriedades colocam um porteiro na frente do dado, que confere tudo o que entra e sai. get e set: o porteiro do dado ...

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

Imagem
Resumo rápido Modificadores de acesso dizem quem pode usar cada parte de uma classe. public : qualquer código pode usar. private : só a própria classe. É o padrão dos membros quando você não escreve nada. protected : a própria classe e as classes filhas (herança). internal : qualquer código do mesmo projeto. É o padrão das classes. Regra de ouro: comece com private e abra só o necessário. Num abrigo de sobreviventes, nem tudo fica à vista. O mapa da cidade está pregado na parede para todos. O diário do líder fica trancado no quarto dele. O depósito de armas, só os membros do grupo acessam. O C# tem a mesma ideia para o código: os modificadores de acesso . Você já viu public e private nos posts de classes e propriedades . Agora vamos entender todos de uma vez. Os quatro principais Modificador Quem acessa No abrigo public qualquer código, de qualquer lugar o mapa na parede private só a própria classe o diário trancado do líder protected a própria classe e as classes fil...