Curso de Algoritmos e Lógica de Programação
Entender lógica de programação pode parecer assustador no início, mas ela está muito mais presente no seu dia a dia do que você imagina.
Sempre que você segue um passo a passo para resolver um problema, tomar uma decisão ou alcançar um objetivo, já está usando lógica — e é exatamente isso que este curso vai te ensinar a aplicar no mundo da programação.
Aqui, você vai transformar esse raciocínio natural em uma base sólida para criar algoritmos e dar seus primeiros passos com segurança em qualquer linguagem de programação, incluindo Python.
Começaremos pelos fundamentos, como variáveis, tipos de dados e operadores, avançando depois para estruturas condicionais (if e else) e estruturas de repetição (for e while), tudo de forma clara e prática.
Mais do que teoria, o objetivo é te dar confiança para pensar como programador, estruturar soluções e entender como transformar ideias em código. Se você quer descomplicar a programação de vez, esse curso é o seu ponto de partida.
O que você vai aprender no curso?
Para baixar os arquivos utilizados no curso, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Aula 1 – Algoritmos e Lógica de Programação: o que são e como funcionam na prática
Vamos dar início ao curso de Algoritmos e Lógica de Programação. Aqui você vai entender, de forma simples e direta, por que esses conceitos são a base de qualquer programador.
Nesta aula, você vai aprender como funcionam os algoritmos, qual é o papel da lógica computacional e como esses conceitos se aplicam na prática, com exemplos simples que ajudam a visualizar esse processo desde o início.
Algoritmo é uma sequência de passos lógicos e ordenados para resolver um problema, e lógica de programação é a habilidade de organizar esses passos para que o computador os execute. Antes de escrever código, você pode representar o algoritmo em texto, fluxograma ou pseudocódigo. Dominar variáveis, tipos de dados, operadores e estruturas (de decisão e de repetição) é a base para programar em Python e em qualquer linguagem.
O que é um algoritmo e como ele funciona
Um algoritmo é uma sequência ordenada de passos que leva a um resultado específico. Ele define exatamente o que precisa ser feito e em qual ordem, garantindo que a tarefa seja concluída corretamente.
No seu dia a dia, você já utiliza esse conceito sem perceber. Imagine que você está seguindo uma receita de bolo.
Você não junta ingredientes ao acaso. Existe uma ordem, etapas claras e uma lógica por trás de cada ação para que o resultado final dê certo. Isso, em essência, é um algoritmo. Trata-se de uma sequência de instruções que devem ser seguidas para resolver um problema ou executar uma tarefa.
Se a ordem desses passos for alterada, o resultado muda. Na programação, o mesmo princípio se aplica: o algoritmo organiza o caminho que o computador seguirá para chegar ao objetivo desejado.
E, assim como uma receita, as etapas são importantes porque um passo depende da execução correta do procedimento anterior.
O que é lógica de programação e por que ela é essencial
É muito comum vermos o termo lógica de programação ser usado quase como um sinônimo de algoritmo. Porém, existe uma diferença entre eles.
A lógica de programação é o raciocínio que estrutura o algoritmo. Ela define como as instruções devem ser organizadas para que o computador entenda e execute corretamente cada comando.
Enquanto o algoritmo representa o passo a passo, a lógica computacional é a forma como esse passo a passo é pensado, estruturado e organizado. É ela que garante clareza, evita ambiguidade e torna o código mais eficiente.
Na prática, esses dois conceitos caminham juntos. Ao criar um algoritmo, você automaticamente está aplicando princípios de lógica de programação, seja em Python, JavaScript ou qualquer outra linguagem.
Como criar um algoritmo antes de escrever código - Texto Descritivo
Antes de começar a programar, é fundamental planejar o que será feito. Definir claramente o processo ajuda a evitar erros, reduzir retrabalho e tornar o desenvolvimento mais organizado e eficiente.
Os algoritmos podem ser representados de diferentes formas. A primeira delas é por meio de um texto descritivo, semelhante ao exemplo da receita de bolo visto anteriormente, no qual cada etapa é detalhada de forma clara, explicando as ações e procedimentos que devem ser executados.
Para entender melhor essas formas de representação, vamos começar com um exemplo prático: a automação do envio de e-mails.
Ao estruturar um algoritmo, é importante pensar primeiro no objetivo final e em como essa ação seria realizada manualmente. Esse exercício facilita a construção da lógica e ajuda a organizar melhor a sequência de comandos que será transformada em código.
Imagine que você deseja automatizar o envio de um e-mail. Pensando de forma lógica, o processo pode ser descrito assim:
Envio de E-mail:
1º Passo: Abrir o navegador
2º Passo: Entrar no Gmail
3º Passo:
- Se o e-mail não estiver logado: Fazer o login no e-mail.
- Caso contrário: Passar para o próximo passo
4º Passo: Clicar na opção para criar o e-mail
5º Passo: Escrever o e-mail
6º Passo: Clicar no botão de enviar
Esses são os passos necessários para que o envio do e-mail aconteça corretamente. Ao criar um programa que execute essa mesma sequência, o processo será automatizado com eficiência, reproduzindo exatamente o comportamento esperado.
Algoritmo com Fluxograma - Representação visual
Outra forma muito eficiente de estruturar raciocínios em programação é o uso de fluxogramas. Esse modelo representa as etapas por meio de caixas conectadas por setas, facilitando a visualização da ordem e das decisões envolvidas.

No exemplo do envio de e-mail, o fluxograma mostra claramente a verificação: se o usuário já está logado, segue para escrever o e-mail. Caso não esteja, realiza o login antes de continuar. Essa representação ajuda a enxergar erros de lógica ainda na fase de planejamento.
Algoritmo com Pseudocódigo
Uma das formas mais utilizadas para estruturar algoritmos é o pseudocódigo. Ele funciona como uma ponte entre o texto comum e a linguagem de programação, tornando o raciocínio mais próximo da forma como o código será escrito de fato.
No pseudocódigo, você descreve as instruções em português, mas seguindo uma estrutura similar à de uma linguagem de programação. Os verbos indicam ações que o programa deve executar, enquanto os substantivos representam os elementos envolvidos nesse processo, como botões, campos e dados.
Essa abordagem facilita a visualização do funcionamento do algoritmo e ajuda a reduzir ambiguidades, deixando mais claro como cada etapa deverá ser convertida em código posteriormente.
Veja como ficaria o algoritmo de envio de e-mail nesse formato:
Pseudocódigo para enviar e-mail:
abrir(chrome)
digitar(gmail.com)
apertar(enter)
se a tela de login apareceu:
fazer_login()
caso contrário:
passe para o próximo passo
clicar(botão_criar_email)
digitar(destinatario@gmail.com)
digitar(assunto)
digitar(corpo_do_email)
clicar(botão_enviar)Mesmo não existindo uma regra fixa para a escrita do pseudocódigo, é fundamental manter um padrão. Isso garante que tanto você quanto outras pessoas consigam compreender, sem dificuldades, o que o programa deve fazer.
Além disso, o pseudocódigo precisa ser claro e livre de ambiguidades. Quanto mais objetiva for a descrição dos procedimentos, mais fácil será convertê-lo posteriormente em código real.
Conexão com Python e outras linguagens
Quando você domina esses conceitos, programar se torna muito mais intuitivo. Primeiro você pensa, depois organiza a solução e só então transforma esse raciocínio em código. Essa abordagem reduz erros, evita improvisos e torna o desenvolvimento mais eficiente desde o início.
Esse processo ajuda a transformar o raciocínio em algo mais técnico, preparando o caminho para a implementação em linguagens como Python.
Ao estruturar bem suas ideias antes de codar, você ganha mais clareza, escreve códigos mais organizados e entende melhor o funcionamento das lógicas de programação em Python e em outras linguagens.
Entender como funcionam os algoritmos, a lógica computacional e o pseudocódigo é o primeiro passo para programar com clareza e segurança. Ao organizar suas ideias antes de codar, você ganha controle, reduz erros e desenvolve soluções mais eficientes, independentemente da linguagem que escolher seguir.
Essas são as três formas que temos de escrever algoritmos. Você não precisa usar todas sempre que estiver desenvolvendo um código, apenas aquela que julgar melhor para você.
Aula 2 – Algoritmos e Lógica de Programação – Variáveis, Tipos de Dados e Operadores
Nesta segunda etapa, você vai entender como a programação lida com informações na prática. Aqui entram três conceitos essenciais: variáveis, tipos de dados e operadores. São eles que permitem armazenar valores, manipulá-los e realizar cálculos de forma estruturada e lógica.
Esses elementos estão presentes em qualquer linguagem de programação e são fundamentais para transformar ideias em soluções funcionais. Ao compreender como eles funcionam, seu raciocínio se torna mais claro e seus códigos passam a ter mais sentido, organização e eficiência.
Além disso, você verá como aplicar esses conceitos em situações reais, como cálculos de impostos, controle de vendas e extração de informações de textos, conectando teoria e prática de forma simples.
O que são Variáveis e Constantes
Variáveis e constantes são são utilizadas para armazenar informações que serão usadas ao longo do código. De forma simples, você pode imaginá-las como caixas onde guardamos dados, cada uma identificada por um nome que permite acessá-la sempre que necessário.
A principal diferença entre elas está na possibilidade de alteração. Enquanto os valores de uma variável podem mudar durante a execução do programa, os valores de uma constante permanecem fixos.
Imagine que você trabalha em uma empresa e precisa calcular o imposto sobre o faturamento. O valor faturado foi de R$10.000,00 e o imposto corresponde a 15%.
Se fizermos esse cálculo diretamente assim:
10000 * 0.15Perceba que essa linha, sozinha, não é intuitiva. Não fica claro o que representa cada número, o que dificulta a leitura e o entendimento do código.
Agora observe o mesmo cálculo utilizando variáveis:
faturamento = 10000
imposto_percentual = 0.15
imposto_faturamento = faturamento * imposto_percentualNeste caso, o código se torna muito mais claro. É possível identificar facilmente o significado de cada valor, o que melhora a leitura e facilita futuras alterações.
Outro benefício importante é a manutenção. Se no mês seguinte o faturamento mudar para R$12.000,00, não é necessário procurar todos os pontos do código onde o valor aparece. Basta alterar a variável:
faturamento = 12000
imposto_percentual = 0.15
imposto_faturamento = faturamento * imposto_percentualAssim como as variáveis, também podemos utilizar constantes para armazenar dados. A diferença é que a constante representa um valor que não deve ser modificado ao longo do código.
Nesse exemplo, o faturamento pode variar conforme as vendas da empresa, portanto funciona como uma variável. Já o imposto_percentual pode ser tratado como uma constante, pois representa uma taxa fixa definida previamente.
Cada linguagem de programação possui sua própria forma de declarar variáveis e constantes, mas a função de ambas é a mesma: armazenar informações de forma organizada para que possam ser utilizadas durante a execução do programa.
Tipos de Dados
Em programação, cada informação armazenada possui um tipo específico, que indica como ela será interpretada e manipulada pelo sistema. Os principais tipos de dados são: inteiros, números decimais (float), textos (string) e valores booleanos (verdadeiro ou falso).
No exemplo anterior, o faturamento armazena um valor inteiro, enquanto imposto_percentual é um número decimal. Isso significa que cada um desses dados será tratado de forma diferente pelo código.
O tipo float é o termo técnico utilizado para representar números com casas decimais. A expressão vem de “ponto flutuante” e, na maioria das linguagens de programação, utiliza-se o ponto como separador decimal, seguindo o padrão americano. Por isso, escrevemos 0.15 em vez de 0,15.
Além dos números, trabalhamos também com textos, representados pelo tipo string. Esse tipo de dado é utilizado sempre que lidamos com palavras, frases, e-mails ou qualquer informação textual. Para diferenciá-los dos valores numéricos, as strings são delimitadas por aspas, como no exemplo abaixo:
email = "emaildeexemplo@exemplo.com"Outro tipo essencial é o booleano, que representa apenas dois possíveis valores: verdadeiro ou falso. Ele é muito utilizado em verificações e tomadas de decisão dentro do código.
Por exemplo, para indicar se um vendedor atingiu ou não a meta, podemos usar:
bateu_meta = TrueSe a meta não for alcançada, esse valor seria False. Essa lógica binária é fundamental em diversas situações, como validações, condições e controles de fluxo.
Compreender esses quatro tipos de dados é essencial para construir códigos mais organizados e funcionais. Em algumas linguagens, é necessário declarar explicitamente o tipo de dado ao criar uma variável ou constante, enquanto em outras essa definição é feita automaticamente pelo próprio sistema.
Estruturas de Dados e Coleções
Além dos tipos de dados, também existem as estruturas de dados e coleções. Elas permitem armazenar várias informações em um único conjunto, facilitando a organização e o acesso aos dados.
Se você imaginar a variável como uma caixa individual, as estruturas funcionam como uma prateleira que armazena vários itens organizados em um mesmo espaço.
As estruturas mais comuns são as listas e os dicionários.
As listas são sequências ordenadas de informações, em que cada elemento ocupa uma posição específica.
Assim como as variáveis, elas também recebem um nome que permite acessar todo o conjunto de dados. Por exemplo, em uma loja, podemos ter uma lista de produtos e outra de preços:
produtos = ("iphone", "ipad", "airpod", "macbook")
precos = (5000, 7000, 2000, 10000)Cada item da lista pode ser acessado pela sua posição, o que torna essa estrutura ideal para trabalhar com conjuntos de dados relacionados e organizados em sequência. A forma de declarar listas pode variar conforme a linguagem, podendo utilizar chaves {}, colchetes [] ou parênteses ().
Já os dicionários permitem armazenar informações no formato chave-valor, em que cada chave é única e está diretamente associada a um valor correspondente.
No exemplo da loja, em vez de utilizar duas listas separadas, é possível concentrar todas as informações em um único dicionário, relacionando cada produto ao seu preço:
dic_produtos = ("iphone": 5000, "ipad": 7000, "airpod": 2000, "macbook": 10000)Essa estrutura torna o acesso aos dados mais intuitivo, pois é possível obter o valor diretamente a partir do nome do produto, facilitando a leitura e a manutenção do código.
Operadores Matemáticos em Programação
Dentro da programação, trabalhamos tanto com operadores matemáticos quanto com operadores lógicos. Nesta etapa, o foco está nas operações matemáticas, que permitem realizar cálculos diretamente no código, manipulando valores de forma precisa e estruturada.
Esses operadores são utilizados em situações simples, como somar dois números, e também em cálculos mais complexos, como análise de dados, controle financeiro ou processamento de informações. Os operadores matemáticos básicos mais utilizados são soma, subtração, multiplicação e divisão.
Além desses, algumas linguagens também oferecem operadores específicos para potenciação, raiz e resto da divisão, conhecido como mod. Esses recursos ampliam as possibilidades de cálculo e tornam o código mais versátil para diferentes cenários.
Embora a forma de implementação possa variar de uma linguagem para outra, os símbolos geralmente seguem um padrão: + para soma, - para subtração, * para multiplicação e / para divisão, o que facilita o entendimento mesmo ao trocar de linguagem.
Exercícios Práticos
Agora é o momento de colocar em prática tudo o que foi aprendido nesta aula e na anterior. A proposta é resolver três exercícios que ajudam a consolidar esses conceitos e fortalecer seu raciocínio lógico.
Em cada exercício, você irá transformar o enunciado do problema em um algoritmo e, em seguida, em um pseudocódigo. Esse processo é essencial para entender como uma ideia se transforma em uma solução estruturada.
Você pode tentar resolver cada desafio por conta própria antes de conferir a solução. O mais importante não é chegar exatamente ao mesmo resultado, mas garantir que a lógica utilizada faça sentido e leve ao objetivo correto.
Além disso, em todos os casos, você verá como essa estrutura pode ser convertida para Python, entendendo na prática como ocorre a transição do planejamento lógico para o código executável.
Primeiro Exercício:
Uma empresa precisa pagar 10% de imposto sobre seu faturamento como ISS. Além disso, sobre o lucro da empresa, ela precisa pagar 20% de IR e 5% de CSLL. Qual o total de imposto a ser pago em um mês que a empresa tenha 5000 de faturamento e 1000 de lucro?
Solução – Algoritmo de Texto:
- 1º Passo: Declarar as Variáveis – Definir as informações essenciais para o funcionamento do código.
- iss = 0.1
- ir = 0.2
- csll = 0.05
- faturamento = 5000
- lucro = 1000
- 2º Passo: Calcular o Imposto ISS sobre o Faturamento
- 3º Passo: Calcular o Imposto sobre o Lucro
- Calcular o IR sobre o Lucro
- Calcular o CSLL sobre o Lucro
- Somar os dois Impostos
- 4º Passo: Somar o Imposto sobre o Faturamento com o Imposto sobre o Lucro.
Solução – Pseudocódigo:
iss = 0.1
ir = 0.2
csll = 0.05
faturamento = 5000
lucro = 1000
- Calcular o imposto sobre o faturamento
imposto_fat = iss * faturamento
- Calcular o imposto sobre o lucro
imposto_lucro = ir * lucro + csll * lucro
- Calcular o imposto total
imposto_total = imposto_fat + imposto_lucroCódigo em Python:
iss = 0.1
ir = 0.2
csll = 0.05
faturamento = 5000
lucro = 1000
imposto_fat = iss * faturamento
imposto_lucro = ir * lucro + csll * lucro
imposto_total = imposto_fat + imposto_lucro
print(imposto_total)Resultado do Código:

Segundo Exercício:
Sua empresa vende cinco produtos: Iphone, Ipad, Airpod, Macbook e Apple Watch. No mês passado, foram vendidas 1000, 300, 200, 50 e 250 unidades, respectivamente. Qual foi o total de produtos vendidos e qual produto teve o maior volume de vendas?
Aqui, o objetivo é trabalhar com uma estrutura que relacione produtos e quantidades. A melhor forma de organizar isso é usando um dicionário, em que cada produto é uma chave associada à sua quantidade vendida.
O raciocínio consiste em somar todos os valores para encontrar o total e, em seguida, identificar o maior valor para descobrir o produto mais vendido.
Solução – Algoritmo de Texto:
- 1º Passo: Definir as informações essenciais: produtos e quantidades vendidas.
- 2º Passo: Calcular o total vendido: Somar todas as quantidades vendidas.
- 3º Passo: Encontrar o produto mais vendido: Verificar qual produto tem a maior quantidade vendida.
Solução – Pseudocódigo:
vendas_produtos = ("iphone": 1000, "ipad": 300, "airpod": 200, "macbook": 50, "apple watch": 250)
- Calcular o total vendido: Somar os valores de vendas_produtos
total = somar(vendas_produtos.valores)
- Calcular o produto mais vendido: Encontrar o valor máximo em vendas_produtos
mais_vendido = maximo(vendas_produtos.valores)Código em Python:
vendas_produtos = {"iphone": 1000, "ipad": 300,
"airpod": 200, "macbook": 50,
"apple watch": 250}
total_sum = sum(vendas_produtos.values())
maximo = max(vendas_produtos.values())
print(total_sum)
print(maximo)Resultado do Código:

Terceiro Exercício:
Todos os dias você recebe e-mails contendo o total de vendas de cada loja no seguinte formato:
"Prezado,
Segue total de vendas de ontem:
Total: R$1.530,00"
Você deseja automatizar esse processo e extrair apenas o valor total de cada e-mail. Como fazer isso?
Solução – Algoritmo de Texto:
- 1º Passo: Pegar o texto do e-mail
- 2º Passo: Identificar um padrão em todos os e-mails.
- O valor total sempre virá após o R$
- 3º Passo: Encontrar a posição do R$
- 4 º Passo: Pegar todo o texto que começa na posição do R$ até o final da linha.
Solução – Pseudocódigo:
texto_email = "Prezado,
Segue total de vendas de ontem:
Total: R$1.530,00"
- Encontrar a posição do R$
posicao_inicial = texto_email.encontrar("R$")
- Pegar todo o texto começando em R$ até o final
posicao_final = texto_email.fim
faturamento = extrair(posicao_inicial : posicao_final)Código em Python:
texto_email = """Prezado,
Segue total de vendas de ontem:
Total: R$1.530,00"""
posicao_inicial = texto_email.find("R$")
faturamento = texto_email[posicao_inicial:]
print(faturamento)Resultado do Código:

Aula 3 – Algoritmos e Lógica de Programação – Estruturas Condicionais If Else
Nesta terceira aula, você vai entender como funcionam as estruturas condicionais if else, responsáveis por permitir que o programa tome decisões com base em condições específicas. Esse é um dos conceitos mais importantes da programação, pois define como o código reage a diferentes situações.
As estruturas condicionais permitem que o programa avalie uma condição e execute uma ação se ela for verdadeira ou um caminho alternativo se for falsa. Isso está presente em praticamente qualquer sistema, desde validações simples até regras complexas de negócio.
Ao longo desta aula, você verá como utilizar operadores comparativos e operadores lógicos para construir essas condições e entenderá como transformar cenários reais em decisões automatizadas dentro do código.
No final, dois exercícios práticos vão te ajudar a visualizar esse funcionamento na prática, passando do raciocínio lógico para o pseudocódigo e, por fim, para a implementação em Python.
Estruturas Condicionais – If Else
As estruturas condicionais são um conceito essencial dentro da lógica de programação. Elas permitem que o programa tome decisões e execute ações diferentes de acordo com as condições definidas.
Essas condições são baseadas em expressões booleanas, que podem resultar em True (verdadeiro) ou False (falso). A partir desse resultado, o código decide qual caminho seguir.
Na prática, isso significa que você pode determinar o que o programa deve fazer quando uma condição é atendida e o que deve acontecer quando ela não é.
Um exemplo simples é uma automação de envio de e-mails. Antes de enviar a mensagem, você precisa verificar se o login foi realizado. Se estiver logado, o processo segue normalmente para o envio. Caso contrário, o sistema deve realizar o login antes de continuar.
Perceba como essa verificação cria dois caminhos possíveis dentro do código. E, dependendo da complexidade do sistema, podem existir vários outros caminhos alternativos.
As estruturas mais utilizadas nesse contexto são o if (se), que executa um bloco de código quando a condição é verdadeira, e o else (senão), que executa uma ação alternativa quando a condição é falsa.
Para construir essas condições, utilizamos os operadores comparativos e os operadores lógicos, responsáveis por avaliar as expressões e definir qual caminho será executado.
Operadores Comparativos
Os operadores comparativos são utilizados para analisar a relação entre dois valores e determinar se essa relação é verdadeira ou falsa. Eles funcionam de forma semelhante às comparações que fazemos na matemática e sempre retornam um resultado booleano: True (verdadeiro) ou False (falso).
Os principais operadores comparativos expressam ideias como “igual a”, “diferente de”, “maior que”, “menor que”, “maior ou igual a” e “menor ou igual a”. Embora os símbolos possam variar conforme a linguagem de programação, o conceito por trás deles permanece o mesmo.
Nas comparações envolvendo maior que, menor que, maior ou igual e menor ou igual, a maioria das linguagens utiliza símbolos padrão:
- > para maior que
- < para menor que
- = para maior ou igual a
- <= para menor ou igual a
Já os operadores de igualdade e diferença tendem a apresentar mais variações. É comum encontrar == ou = para indicar igualdade e != ou <> para indicar diferença.
O mais importante aqui não é memorizar a sintaxe específica de cada linguagem, mas compreender como esses operadores funcionam na prática. São eles que permitem ao código tomar decisões com base em comparações entre valores.
Operadores Lógicos
Os operadores lógicos são utilizados para combinar duas ou mais condições e avaliar se, juntas, elas resultam em verdadeiro ou falso. O retorno dessas combinações sempre será um valor booleano, ou seja, True ou False.
Os principais operadores lógicos são and (e) e or (ou). Eles permitem criar regras mais completas e decisões mais precisas dentro do código.
O operador and retorna True apenas quando todas as condições envolvidas são verdadeiras. Já o operador or retorna True quando pelo menos uma das condições é verdadeira.
Em diferentes linguagens de programação, esses operadores podem aparecer representados de formas variadas. É comum encontrá-los como and ou && para indicar “e”, e or ou || para indicar “ou”.
Esses operadores são fundamentais para construir condições mais elaboradas, permitindo que o programa avalie múltiplos critérios antes de tomar uma decisão.
Exercícios Práticos
Para compreender melhor como funcionam as estruturas condicionais e os operadores comparativos e lógicos, vamos trabalhar com dois exercícios aplicados.
A proposta é transformar cada enunciado em lógica estruturada, passando pelo algoritmo descritivo, pseudocódigo e, por fim, pela implementação em Python.
Você pode tentar resolver por conta própria antes de conferir a solução ou acompanhar passo a passo. O mais importante não é chegar exatamente à mesma resposta, mas garantir que a lógica construída seja coerente e leve ao resultado esperado.
Além disso, ao final de cada exercício eu deixarei um exemplo de como seria a solução dele em um código Python.
Primeiro Exercício:
Você precisa criar um programa que calcule o bônus dos funcionários da empresa. A meta de vendas é de 500 reais. Se o funcionário vender igual ou mais do que esse valor, ele recebe 50 reais de bônus. Caso contrário, não recebe bônus.
O raciocínio começa definindo a meta e, em seguida, comparando esse valor com as vendas realizadas. A partir dessa verificação, o bônus é determinado conforme o resultado da condição.
Solução – Algoritmo de Texto:
- 1º Passo: Definir as informações essenciais – Declarar as variáveis.
- meta = 500
- 2º Passo: Comparar as vendas do vendedor com a meta.
- Se as vendas forem maiores ou iguais à meta: o bônus é de 50.
- Caso contrário: não ganha bônus, então o bônus será de 0.
Solução – Pseudocódigo:
meta = 500
if vendas >= meta:
bonus = 50
else:
bonus = 0Código em Python:
Para exemplificar a execução, considere que o funcionário alcançou 700 reais em vendas.
meta = 500
vendas = 700
if vendas >= meta:
bonus = 50
else:
bonus = 0
print(bonus)Resultado do Código:

Explicação:
Neste exercício, utilizamos a estrutura condicional if/else para definir se o funcionário receberá ou não o bônus com base no seu desempenho em vendas.
A comparação foi realizada por meio do operador >= (maior ou igual a). Quando as vendas são maiores ou iguais à meta, o resultado da condição é verdadeiro (True) e o bônus é atribuído. Caso contrário, quando a condição é falsa (False), o bônus permanece em 0.
Essa lógica ilustra como decisões simples podem ser automatizadas de forma clara e estruturada utilizando estruturas condicionais.
Segundo Exercício:
Agora a empresa decidiu valorizar ainda mais os funcionários que vendem muito. Para isso, foi criada uma super meta de vendas no valor de 1500 reais. As regras são as seguintes:
- Se o funcionário vender igual ou mais que a super meta, ele recebe 100 reais de bônus.
- Se vender igual ou mais que a meta padrão de 500 reais, recebe 50 reais de bônus.
- Se não atingir nenhuma das metas, não recebe bônus.
O raciocínio começa definindo os valores das metas e, em seguida, comparando as vendas do funcionário com esses limites, começando pela condição mais alta, que é a super meta.
Solução – Algoritmo de Texto:
- 1º Passo: Definir as informações essenciais – Declarar as variáveis.
- meta = 500
- supermeta = 1500
- 2º Passo: Comparar as vendas do vendedor com a supermeta.
- Se as vendas forem maiores ou iguais à supermeta: o bônus é de 100.
- Caso contrário: Comparar as vendas do vendedor com a meta.
- 3º Passo: Comparar as vendas do vendedor com a meta.
- Se as vendas forem maiores ou iguais à meta: o bônus é de 50.
- Caso contrário: não ganha bônus, então o bônus será de 0.
Solução – Pseudocódigo:
supermeta = 1500
meta = 500
if vendas >= supermeta:
bonus = 100
else:
if vendas >= meta:
bonus = 50
else:
bonus = 0Código em Python:
Para ilustrar, vamos considerar dois cenários diferentes: o primeiro em que o vendedor vendeu acima da média (700) e o segundo em que ele vendeu acima da super meta (1600).
1º cenário:
supermeta = 1500
meta = 500
vendas = 700
if vendas >= supermeta:
bonus = 100
else:
if vendas >= meta:
bonus = 50
else:
bonus = 0
print(bonus)Resultado do Código:

2º Cenário:
supermeta = 1500
meta = 500
vendas = 1600
if vendas >= supermeta:
bonus = 100
else:
if vendas >= meta:
bonus = 50
else:
bonus = 0
print(bonus)Resultado do Código:

Explicação:
Neste exercício, utilizamos uma estrutura condicional aninhada de if/else para definir o valor do bônus com base no desempenho em vendas dos funcionários.
Primeiro, o código verifica se as vendas atingiram ou superaram a super meta por meio do operador comparativo >= (maior ou igual a). Se essa condição for verdadeira, o funcionário recebe o bônus máximo de 100 reais.
Caso essa verificação retorne falso, o programa passa a analisar se as vendas atingiram a meta padrão. Se essa condição for verdadeira, o bônus atribuído será de 50 reais.
Se nenhuma das duas condições for satisfeita, significa que o funcionário não alcançou nenhuma das metas estabelecidas e, portanto, não receberá bônus, resultando no valor 0.
Essa estrutura funciona de forma eficiente porque as condições são avaliadas em ordem, de cima para baixo, priorizando sempre a regra mais relevante. Isso garante que o bônus seja atribuído corretamente de acordo com o desempenho alcançado.
Aula 4 – Algoritmos e Lógica de Programação – Estruturas de Repetição – For e While
Nesta quarta e última aula do curso, você vai entender como funcionam as estruturas de repetição, também conhecidas como loops. Elas permitem que um mesmo trecho de código seja executado várias vezes de forma automática, sem precisar reescrever as mesmas instruções manualmente.
Esse recurso é essencial quando você precisa percorrer listas, processar grandes volumes de dados ou realizar ações repetitivas até que uma condição seja atendida.
Aqui você verá como utilizar as estruturas for e while, que possuem comportamentos semelhantes, mas são usadas em situações diferentes. Ao final, exercícios práticos vão te ajudar a consolidar esse conteúdo e aplicar a lógica de repetição em cenários reais
Estruturas de Repetição – For e While
As estruturas de repetição permitem que um bloco de código seja executado diversas vezes, de forma controlada. Elas são amplamente utilizadas para automatizar processos e trabalhar com coleções de dados.
O while executa um conjunto de instruções enquanto uma condição permanecer verdadeira. Ou seja, o código continua rodando até que essa condição se torne falsa. É ideal para situações em que você não sabe previamente quantas repetições serão necessárias.
Já o for é utilizado quando você quer percorrer um conjunto específico de elementos, como listas, strings ou sequências numéricas. Ele oferece mais controle sobre a quantidade de repetições e é muito comum quando se trabalha com coleções.
Essas estruturas tornam seu código mais eficiente, enxuto e organizado, além de reduzirem a chance de erros causados por duplicação de comandos.
Exercícios Práticos
Agora vamos aplicar as estruturas de repetição em situações reais, transformando os problemas em lógica estruturada, pseudocódigo e, por fim, código Python.
Você pode tentar resolver os exercícios sozinho antes de conferir a solução. O mais importante é que o raciocínio faça sentido e conduza ao resultado esperado.
Além disso, ao final de cada exercício eu deixarei um exemplo de como seria a solução dele em um código Python.
Primeiro Exercício:
Você trabalha em uma loja com 10 produtos, cada um com um preço diferente: 1000, 500, 300, 700, 1000, 50, 65, 80, 900 e 440. A empresa decidiu aplicar um aumento de 5% em todos os produtos. Como ficam os novos valores a serem cobrados?
O objetivo é percorrer a lista de preços e reajustar cada item aplicando a porcentagem definida.
Solução – Algoritmo de Texto:
- 1º Passo: Definir as informações essenciais – Lista com os preços dos produtos e taxa de aumento.
- precos_produtos = (1000, 500, 300, 700, 1000, 50, 65, 80, 900, 440)
- aumento = 0.05
- 2º Passo: Percorrer a lista de preços dos produtos
- Para cada produto aumentar o preço em 5%
- Novo Preço = Preço Antigo * (1 + aumento)
- Para cada produto aumentar o preço em 5%
Solução – Pseudocódigo:
precos_produtos = (1000, 500, 300, 700, 1000, 50, 65, 80, 900, 440)
aumento = 0.05
for preco in precos_produtos:
novo_preco = preco * (1 + aumento)Código em Python:
precos_produtos = [1000, 500, 300, 700, 1000, 50, 65, 80, 900, 440]
aumento = 0.05
for preco in precos_produtos:
novo_preco = preco * (1 + aumento)
print(novo_preco)Resultado do Código:

Explicação:
Neste exercício, utilizamos a estrutura de repetição for para percorrer a lista de preços e recalcular o valor de cada produto com o aumento de 5%.
A cada repetição do laço, um novo preço é gerado a partir da multiplicação do valor original pela expressão (1 + aumento). Dessa forma, o código aplica automaticamente o reajuste em todos os produtos, de forma sequencial e sem necessidade de cálculos manuais.
Essa abordagem torna o processo mais eficiente, organizado e fácil de manter, especialmente quando lidamos com listas maiores ou alterações frequentes de valores.
Segundo Exercício:
Mantendo o mesmo cenário do exercício anterior, agora o aumento de 5% deve ser aplicado apenas aos produtos que custam menos de 500 reais. Os demais devem permanecer com o preço original.
A ideia aqui é percorrer a lista de preços e, para cada item, verificar se ele atende ao critério definido antes de aplicar o reajuste.
Solução – Algoritmo de Texto:
- 1º Passo: Definir as informações essenciais – Lista com os preços dos produtos, taxa de aumento e o limite de preço.
- precos_produtos = (1000, 500, 300, 700, 1000, 50, 65, 80, 900, 440)
- aumento = 0.05
- limite_preco = 500
- 2º Passo: Percorrer a lista de preços dos produtos
- Para cada produto, comparar o preço com o limite de preço:
- Se o preço for menor que o limite de preço: aumentar o preço em 5%.
- Caso contrário: manter o preço original.
- Para cada produto, comparar o preço com o limite de preço:
Solução – Pseudocódigo:
precos_produtos = (1000, 500, 300, 700, 1000, 50, 65, 80, 900, 440)
aumento = 0.05
limite_preco = 500
for preco in precos_produtos:
if preco < limite_preco:
novo_preco = preco * (1 + aumento)
else:
novo_preco = precoCódigo em Python:
precos_produtos = [1000, 500, 300, 700, 1000, 50, 65, 80, 900, 440]
aumento = 0.05
limite_preco = 500
for preco in precos_produtos:
if preco < limite_preco:
novo_preco = preco * (1 + aumento)
else:
novo_preco = preco
print(novo_preco)Resultado do Código:

Explicação:
Neste exercício, combinamos a estrutura de repetição for com uma decisão condicional usando o if. O laço percorre todos os preços da lista e, para cada produto, verifica se o valor é menor que 500.
Quando essa condição é verdadeira, o aumento de 5% é aplicado. Caso contrário, o preço permanece inalterado. Essa lógica torna o reajuste mais inteligente e direcionado, evitando alterações desnecessárias em produtos mais caros.
Essa combinação entre repetição e condição é extremamente comum em situações reais, pois permite aplicar regras específicas apenas quando determinados critérios são atendidos.
Terceiro Exercício:
A empresa atingiu a meta de 50.000 unidades vendidas no mês com 40 lojas. Agora surge uma nova análise: seria possível atingir essa meta com menos lojas? E com 38? 35? 30?
Ao final, o objetivo é descobrir qual o menor número de lojas necessário para ainda atingir essa meta, considerando primeiro as lojas que mais venderam.
Aqui, o foco está em identificar quantas lojas, começando pelas mais eficientes, são suficientes para alcançar o valor desejado.
Solução – Algoritmo de Texto:
1º Passo: Definir as informações essenciais – Lista com as vendas das lojas e
- 1º Passo: Definir as informações essenciais – Lista com os preços dos produtos e a meta das vendas.
- lista_vendas = (Lista com as Vendas de Cada Loja)
- meta = 50000
- 2º Passo: Ordenar a lista de vendas em ordem decrescente, para começar pelas lojas com mais vendas.
- 3º Passo: Criar variáveis para somar as vendas e outra para contar o número de lojas.
- soma_vendas = 0
- num_lojas = 0
- 4º Passo: Percorrer a lista de vendas:
- Enquanto o total das vendas (soma_vendas) for menor que a meta, vamos somar o valor da próxima venda e incrementar o contador de lojas.
Solução – Pseudocódigo:
lista_vendas = (lista de vendas)
meta = 50000
- Ordenar a lista de vendas em ordem decrescente
lista_vendas.ordenar(drescente)
- Criar variáveis de controle e contagem
soma_vendas = 0
num_lojas = 0
- Utilizar o while para somar as vendas até atingir a meta
while soma_vendas < meta:
soma_vendas = soma_vendas + lista_vendas[num_lojas]
num_lojas = num_lojas + 1Código em Python:
Para exemplificar a execução do código em Python, vamos considerar alguns valores para as vendas das lojas.
# Lista de vendas de cada loja (exemplo)
lista_vendas = [5000, 4000, 3900, 3900, 3800, 3200, 3000, 2100, 3000, 3000,
2950, 2950, 2900, 5000, 2900, 2900, 2900, 2900, 2900, 2900,
2800, 2800, 2750, 2750, 2700, 2700, 3300, 2600, 2600, 2600,
2500, 2500 ,2500, 2400, 2400, 2300, 2300, 2000,2300, 4200]
meta = 50000
# Ordenar a lista de vendas em ordem decrescente
lista_vendas.sort(reverse=True)
# Criar variáveis de controle e contagem
soma_vendas = 0
num_lojas = 0
# Utilizar o while para somar as vendas até atingir a meta
while soma_vendas < meta:
soma_vendas += lista_vendas[num_lojas]
num_lojas += 1
# Exibir o número de lojas necessárias
print(num_lojas)Resultado do Código:

Explicação:
Neste exercício, utilizamos a estrutura while para determinar o número mínimo de lojas necessário para atingir a meta de 50.000 vendas.
Isso ocorre porque não sabemos previamente quantas lojas serão necessárias, então o código precisa continuar somando enquanto a condição soma_vendas < meta for verdadeira. Quando a meta é atingida ou ultrapassada, essa condição se torna falsa e o loop é encerrado.
Antes de iniciar o loop, a lista de vendas é ordenada em ordem decrescente, garantindo que as lojas com maior desempenho sejam consideradas primeiro. Isso permite chegar ao resultado com o menor número possível de lojas.
As variáveis soma_vendas e num_lojas controlam todo o processo. A primeira acumula o total vendido, enquanto a segunda registra quantas lojas foram utilizadas. A cada iteração, uma nova loja é adicionada ao cálculo até que a meta seja alcançada.
Essa abordagem mostra como estruturas de repetição podem ser usadas para resolver problemas mais estratégicos e analíticos, simulando decisões reais de negócio com base em dados.
Recomendação para Treinar Lógica de Programação
Com isso, você finaliza o Curso de Algoritmos e Lógica de Programação com uma base sólida para avançar no mundo da programação. A partir daqui, fica muito mais claro como estruturar o pensamento lógico antes de escrever qualquer linha de código, o que torna o aprendizado mais consciente e eficiente.
Se você quiser continuar treinando sua lógica antes de escolher uma linguagem específica, uma excelente alternativa é o Blockly. Essa plataforma oferece jogos interativos que utilizam comandos de programação para resolver desafios, estimulando o raciocínio lógico de forma prática, leve e progressiva. Cada exercício exige que você pense em sequência, condições e repetições, exatamente como na construção de algoritmos.

Já se a sua intenção for dar o próximo passo e iniciar em uma linguagem de programação, o Curso Básico de Python é uma ótima opção para transformar esse conhecimento lógico em código real.
O Python é uma linguagem acessível, intuitiva e muito utilizada no mercado, o que facilita a transição entre teoria e prática.
É importante lembrar que estudar uma linguagem não substitui a lógica de programação, mas sim a utiliza como base. Todo programa que você criar, independentemente da tecnologia, começa com uma estrutura lógica bem definida.
A diferença é que agora você passa a traduzir esse raciocínio em instruções compreensíveis pelo computador.
A prática contínua da lógica será sempre sua principal aliada na evolução como programador.
Perguntas frequentes sobre algoritmos e lógica de programação
1. O que é um algoritmo?
É uma sequência finita de passos lógicos e ordenados para resolver um problema ou realizar uma tarefa. No dia a dia, uma receita de bolo é um algoritmo; na programação, é o roteiro que o computador segue para chegar a um resultado.
2. O que é lógica de programação?
É a capacidade de organizar ideias em passos claros e ordenados para que o computador os execute. É a base de qualquer linguagem: antes de aprender a sintaxe, é preciso saber estruturar o raciocínio para resolver o problema.
3. Preciso aprender lógica antes de uma linguagem?
Sim, é o mais recomendado. A lógica de programação é independente de linguagem; dominando-a, você aprende Python ou qualquer outra com muito mais facilidade, pois só muda a forma de escrever o que já sabe estruturar.
4. Como representar um algoritmo?
As formas mais comuns são o texto descritivo (passos em português), o fluxograma (diagrama com símbolos) e o pseudocódigo (próximo de uma linguagem de programação). Eles ajudam a planejar a solução antes de escrever o código real.
Conclusão – Curso de Algoritmos e Lógica de Programação
Ao longo deste curso, você construiu uma base sólida sobre algoritmos e lógica de programação, entendendo como esses conceitos formam o alicerce de qualquer solução em programação.
Foi possível compreender o que é um algoritmo, como a lógica orienta sua construção, além de explorar diferentes formas de representar esse raciocínio, desde o texto descritivo até o pseudocódigo, sempre com foco em clareza e organização antes da escrita do código.
Dominar algoritmos e lógica de programação é essencial para quem deseja se tornar programador, pois é esse pensamento estruturado que permite resolver problemas de forma eficiente, previsível e escalável. Com esse conhecimento, você passa a enxergar a programação não apenas como código, mas como um processo lógico bem definido.
Agora, com essa base consolidada, o próximo passo é continuar praticando e aplicar esses conceitos em uma linguagem de programação, fortalecendo cada vez mais sua capacidade de transformar ideias em soluções reais. A Hashtag Treinamentos é a melhor plataforma para cursos de tecnologia e pode te ajudar a dominar as principais linguagens do mercado!
Caso prefira esse conteúdo no formato de vídeo-aula, assista à playlist abaixo ou acesse o nosso canal do YouTube!
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








