Você sabia que algoritmos são tipo receitas de bolo para computadores? Eles são sequências de instruções que ajudam a resolver problemas e realizar tarefas. Eles são tão importantes na programação que, sem eles, seria impossível criar soluções eficientes para problemas complexos. Além disso, acredite ou não, há até mesmo algoritmo para fazer café!
Os algoritmos são tão versáteis que podem ser usados em várias áreas. Por exemplo, desde a criação de jogos até a análise de dados. Além disso, são uma das habilidades mais importantes para quem deseja seguir uma carreira na área de tecnologia.
Bem, hoje é o dia de nos jogarmos nos conceitos básicos da programação, da lógica dos algoritmos e dar os primeiros passos para criar seus próprios programas. Bora lá!
O que é Algoritmo?
Algoritmos são uma sequência de instruções que resolvem um problema ou realizam uma tarefa específica.
Essas instruções são escritas de forma clara e precisam ser executadas passo a passo, sem ambiguidades ou contradições.
Antes de vermos um algoritmo de computador, vamos dar uma olhada em como isso funcionaria no mundo real. Já vimos que algoritmos nada mais são do que uma sequência de instruções, que devem ser executadas em uma ordem determinada. 👈
Um exemplo prático
Vamos começar com um exemplo simples do mundo real. Como você descreveria os passos para comprar um pão na padaria? 🥖 😋.
Sim, isso mesmo! Algoritmos podem descrever problemas do mundo real. Vamos ver uma possível solução Prontos? Vamos lá!
1. Escolher a padaria mais próxima.
2. Caminhar até a padaria escolhida.
3. Entrar na padaria.
4. Escolher o pão desejado.
5. Checar o preço do pão escolhido.
6. Se o preço estiver dentro do orçamento, pegue o pão.
7. Senão, escolher um pão mais barato.
8. Caso não tenha nenhum pão dentro do orçamento, deixe a padaria e desista da tarefa.
8. Caso tenha algum pão dentro do orçamento, vá para o caixa pagar.
9. Pegue o recibo do pagamento.
10. Agradeça ao atendente e saia da padaria com o pão comprado.
Viu como um algoritmo pode ser algo simples? De fato, existem algumas características comuns no mundo de desenvolvimento relacionado a criação de algoritmos. São algumas delas:
- Diferentes algoritmos podem resolver um mesmo problema. Em outras palavras, pessoas diferentes escrevem algoritmos diferentes para resolver o mesmo problema.
Por isso, é importante nos preocuparmos em escrever algoritmos claros e simples, que permitam fácil manutenção por você ou outro desenvolvedor. - Algoritmos de computador só farão aquilo que você programar eles a fazer. Logo, certifique-se de mapear os detalhes importantes que precisam sem resolvidos.
- É natural que algoritmos possam evoluir com o tempo para tratar novos problemas. Você não precisa garantir que vai resolver TODO e QUALQUER problema logo na primeira versão do seu algoritmo.
- Você pode precisar interromper a execução do seu algoritmo sem que ele consiga concluir a tarefa para a qual foi criado, caso problemas surjam.
Em tais circunstâncias, vamos tentar entregar a melhor experiência o possível para o usuário do nosso algoritmo, informando o motivo da interrupção e se possível, alguma forma de contornar aquele problema.
Como algoritmos funcionam?
Eles são como receitas de bolo da programação: começam com um conjunto de ingredientes (os dados de entrada) e seguem uma série de passos lógicos para produzir o resultado final.
Os algoritmos são implementados em diferentes linguagens de programação e variam em complexidade, dependendo do problema que estão resolvendo.
Alguns são absurdamente simples que até quem não conhece programação consegue entender, enquanto outros são tão complexos que só um supercomputador é capaz de processar.
Existem vários tipos de algoritmos, como aqueles que organizam dados, procuram dados ou analisam informações. Além disso, eles são tão úteis que até a inteligência artificial, aprendizado de máquina, criptografia e processamento de imagem e som não conseguem viver sem eles.
Exemplo de algoritmo
Vamos agora a um exemplo prático de algoritmo de computador. O objetivo do algoritmo a seguir é simples: pedir que o usuário digite um número qualquer e multiplicar o número por 2 para exibirmos o dobro do valor informado pelo usuário.
O que esperamos que o algoritmo faça:
Digite um número: 3
O dobro do número 3 é 6
Agora vamos ao algoritmo:
# Este é um algoritmo que pede ao usuário para digitar um número e calcula o seu dobro
# Pedir ao usuário para digitar um número
numero = input("Digite um número: ")
# Calcular o dobro do número
dobro = int(numero) * 2
# Exibir o resultado para o usuário
print("O dobro do número", numero, "é", dobro)
Escrevemos o algoritmo acima na linguagem de programação Python. Vamos entender o algoritmo por partes:
Comentários
Linguagens de programação permitem que os programadores enriqueçam seus códigos com comentários, permitindo que ele descreva melhor o que o código faz. Na linguagem Python, comentários iniciam com o símbolo #
.
O ideal é que o seu código seja tão claro e fácil de entender que comentários sejam desnecessários. A fim de alcançar essa clareza, é importante focar em ter um código simples, com nomes de funções e variáveis que revelem o propósito deles (evitando criar código usando nomes sem significado, como por exemplo a
, b
, c
).
Variáveis
As variáveis são muito importantes na programação, pois permitem que o programador armazene e manipule informações de maneira eficiente durante a execução do programa. No nosso código temos 2 variáveis:
Variável | O que faz? |
numero | Guarda na memória do computador o número que o usuário digitou |
dobro | Guarda na memória do computador o dobro do número que o usuário digitou |
Funções
Funções em programação são blocos de código que realizam uma tarefa específica e, portanto, podem ser chamados em diferentes partes do programa. Além disso, elas podem receber valores como entrada (parâmetros) e, consequentemente, retornar um valor como saída.
As funções são muito úteis para evitar a repetição de código, tornando-o mais organizado e fácil de entender.
As funções podem ser definidas pelo programador ou já estar disponíveis em bibliotecas de funções. Dessa forma, quando uma função é definida, ela pode ser chamada por qualquer parte do programa que precise executar a tarefa que a função realiza.
As funções também permitem que os programas sejam mais fáceis de manter e atualizar, pois uma vez que uma função é corrigida ou aprimorada, todas as partes do programa que a chamam serão atualizadas automaticamente.
No nosso código utilizamos 3 funções que são disponibilizadas pelo Python:
Função | O que faz? | Qual o parâmetro recebe? | Qual valor retorna? |
input | Pede ao usuário para digitar algum valor. | Texto a ser exibido ao usuário. | O texto que o usuário digitou. |
int | Transforma algum valor para número inteiro. | Valor a ser transformado. | Número transformado. |
print | Imprime algum texto para o usuário | Texto a ser impresso | Não retorna nenhum valor explicito. |
Algoritmos e lógica de programação
Algoritmos e lógica de programação são como dois irmãos que se amam, mas cada um tem seu próprio talento.
A lógica de programação é como o irmão mais velho, que dá as instruções e orientações para o mais novo. Além disso, ela é o cérebro por trás da criação de programas de computador, utilizando técnicas para resolver problemas e tomar decisões na elaboração de algoritmos.
Já o algoritmo é como o irmão mais novo, que coloca em prática o que aprendeu com o irmão mais velho. Ele é a sequência lógica de instruções usadas para chegar a um determinado resultado. É como um receita de bolo, mas para o computador.
Em outras palavras, a lógica de programação é a habilidade de pensar de forma estruturada para transformar um problema em um algoritmo.
Exercício de lógica de programação
Um exemplo simples de lógica de programação é a criação de um programa que calcule a média de três números.
Para resolver esse problema, podemos utilizar a seguinte lógica:
- Ler os três números digitados pelo usuário.
- Somar os três números.
- Dividir o resultado da soma por 3, que é o número de valores somados.
- Exibir o resultado da média para o usuário.
Em pseudocódigo, essa lógica ficaria assim:
1. Ler número1
2. Ler número2
3. Ler número3
4. Soma = número1 + número2 + número3
5. Media = Soma / 3
6. Exibir "A média é: ", Media
Em um programa de verdade, as instruções acima seriam convertidas em código de programação válido para a linguagem utilizada. Mas a lógica de programação é a mesma, independente da linguagem escolhida.
Por exemplo, o pseudocódigo acima escrito em Javascript ficaria assim:
// Ler os números digitados pelo usuário
let numero1 = parseInt(prompt("Digite o primeiro número: "));
let numero2 = parseInt(prompt("Digite o segundo número: "));
let numero3 = parseInt(prompt("Digite o terceiro número: "));
// Somar os três números
let soma = numero1 + numero2 + numero3;
// Calcular a média
let media = soma / 3;
// Exibir o resultado para o usuário
console.log("A média é: " + media);
Neste código, estamos utilizando as funções parseInt()
e prompt()
para ler os números digitados pelo usuário, a variável soma
para armazenar a soma dos três números, a variável media
para calcular a média e a função console.log()
para exibir o resultado para o usuário.
Quais os principais benefícios dos algoritmos?
Algoritmos são a base fundamental para a criação de softwares, sendo essenciais para a resolução de problemas complexos e/ou repetitivos.
Existem vários benefícios em usar algoritmos na programação, tais como:
- Resolução de problemas: os algoritmos são utilizados para a resolução de problemas, ajudando a identificar e solucionar erros.
- Melhoria de eficiência: os algoritmos são projetados para executar tarefas com a maior eficiência possível, economizando tempo e recursos.
- Automação de processos: muitos processos repetitivos e rotineiros podem ser automatizados por meio de algoritmos, permitindo que os desenvolvedores se concentrem em tarefas mais complexas.
- Reutilização de código: algoritmos podem ser armazenados e reutilizados em diferentes partes do código, tornando a programação mais modular e fácil de manter.
- Padronização: a utilização de algoritmos padroniza a forma como as tarefas são executadas, o que ajuda a garantir consistência e qualidade no código.
Como os algoritmos são usados na internet?
Os algoritmos utilizados nos principais aplicativos da internet são construídos com base em diversas técnicas e ferramentas de programação.
Em geral, esses algoritmos são desenvolvidos por equipes de programadores, engenheiros de dados e cientistas da computação. Para criar soluções inteligentes e eficientes, é comum que eles utilizem uma série de metodologias e técnicas, tais como análise de dados, aprendizado de máquina, modelagem matemática, entre outras.
Algumas das técnicas utilizadas na construção de algoritmos para aplicativos da internet incluem:
- Machine Learning: o machine learning é uma técnica que utiliza algoritmos de aprendizado de máquina para analisar grandes quantidades de dados e encontrar padrões. Isso permite que os aplicativos da internet sejam mais inteligentes e capazes de tomar decisões autônomas.
- Análise de dados: a análise de dados é uma técnica que envolve a coleta e análise de grandes quantidades de dados para identificar padrões e insights úteis. Isso permite, por exemplo, que os aplicativos da internet sejam mais eficientes em fornecer conteúdo personalizado aos usuários.
- Algoritmos de otimização: esses algoritmos são usados para otimizar a performance dos aplicativos da internet, como por exemplo na seleção dos anúncios mais relevantes para exibição aos usuários.
- Inteligência Artificial: a inteligência artificial é uma técnica que utiliza algoritmos avançados para permitir que os programas “aprendam” e se adaptem a novas situações, tornando-os mais inteligentes e capazes de tomar decisões autônomas.
Google: como funciona o algoritmo de busca?
O algoritmo de busca do Google é um dos algoritmos mais complexos e avançados do mundo. Além disso, ele utiliza uma série de técnicas de processamento de linguagem natural, aprendizado de máquina e análise de dados para fornecer resultados de busca relevantes para o usuário.
Com isso, é possível afirmar que o sucesso do Google se deve em grande parte à eficiência desse algoritmo.
Em linhas gerais, o algoritmo de busca do Google funciona da seguinte maneira:
- Rastreamento: o Google rastreia a web e indexa todas as páginas da internet em seu banco de dados. Para isso, utiliza robôs chamados “Googlebots“, que percorrem a web em busca de novas páginas e conteúdos.
- Análise: quando um usuário realiza uma pesquisa, o Google analisa as palavras-chave e outros critérios de busca, como localização e histórico de navegação, para determinar os resultados mais relevantes.
- Classificação: o Google classifica os resultados com base em uma série de fatores, incluindo a relevância do conteúdo, a qualidade do site, a autoridade do site, a experiência do usuário e muitos outros.
- Exibição dos resultados: o Google exibe os resultados de busca em ordem de relevância, com os resultados mais relevantes e úteis para o usuário aparecendo no topo da página.
O Google constantemente atualiza e aprimora o algoritmo de busca para fornecer resultados de busca cada vez mais relevantes e úteis para os usuários.
Além disso, o Google também utiliza outros recursos, como featured snippets, mapas, imagens e vídeos para fornecer uma experiência de busca mais rica e diversificada.
Facebook: como funciona o algoritmo de recomendação de amigos?
O algoritmo de recomendação de amigos do Facebook é um dos recursos mais utilizados da plataforma. Além disso, ele funciona através de uma combinação de técnicas de análise de dados e aprendizado de máquina, permitindo que a rede social sugira amizades com maior precisão e eficiência.
Em linhas gerais, o algoritmo de recomendação de amigos do Facebook funciona da seguinte maneira:
- Coleta de dados: o Facebook coleta uma grande quantidade de dados dos usuários, incluindo informações de perfil, interesses, atividades, localização, grupos e páginas curtidas, além de outras informações.
- Análise de dados: o algoritmo analisa esses dados para identificar padrões e relações entre os usuários, como amigos em comum, interações e interesses compartilhados.
- Aprendizado de máquina: o algoritmo utiliza técnicas de aprendizado de máquina para analisar os dados coletados e encontrar padrões que possam indicar novas conexões e amizades entre os usuários.
- Recomendações: com base nas informações coletadas e nas análises realizadas, o algoritmo faz recomendações de amigos para o usuário, que aparecem em sua lista de sugestões de amigos.
Além disso, o algoritmo de recomendação de amigos do Facebook também leva em consideração outras informações, como a localização e a proximidade geográfica dos usuários, para fornecer sugestões de amigos mais relevantes e úteis.
Em resumo, o algoritmo de recomendação de amigos do Facebook utiliza uma combinação de análise de dados e técnicas de aprendizado de máquina para fazer sugestões de amigos aos usuários com base em seus interesses, atividades e conexões na rede social.
Youtube: como funciona o algoritmo de recomendação de vídeos?
O YouTube utiliza diversas estratégias em seu algoritmo para recomendar um vídeo aos usuários. Algumas dessas estratégias incluem:
- Histórico de visualização: o algoritmo de recomendação do YouTube analisa o histórico de visualização de cada usuário para entender seus interesses e preferências.
- Similaridade de conteúdo: o algoritmo também leva em consideração a semelhança de conteúdo entre os vídeos que o usuário já assistiu e os vídeos recomendados.
- Popularidade do vídeo: o algoritmo leva em consideração o número de visualizações, curtidas e comentários de um vídeo para determinar sua relevância e popularidade.
- Tempo de exibição: o tempo de exibição que o usuário passou assistindo a um vídeo também é um fator importante. O algoritmo de recomendação prioriza vídeos que prendem a atenção do usuário por mais tempo.
- Comportamento do usuário: o YouTube leva em conta o comportamento do usuário, como as pesquisas realizadas, as inscrições em canais e as interações com outros usuários, para recomendar vídeos relevantes.
- Novidade: o YouTube também recomenda vídeos novos ou que estão em alta, para manter o usuário atualizado com as tendências
Instagram: como funciona o algoritmo de recomendação de conteúdo?
Assim como no algoritmo do Youtube, o algoritmo de recomendação de conteúdo do Instagram leva em consideração diversas métricas. Algumas dessas métricas que o algoritmo leva em consideração são:
- Engajamento: o algoritmo leva em conta o engajamento do usuário com o conteúdo, como as curtidas, comentários, compartilhamentos e salvamentos. Quanto mais engajamento, mais chance o conteúdo tem de ser recomendado.
- Histórico de navegação: o algoritmo também analisa o histórico de navegação do usuário para entender seus interesses e preferências.
- Hashtags: o algoritmo leva em consideração o uso de hashtags relevantes pelo usuário e pelos criadores de conteúdo para determinar a relevância do conteúdo.
- Localização: o Instagram também considera a localização do usuário e do criador de conteúdo para recomendar conteúdos relacionados à região.
- Seguidores: o número de seguidores do criador de conteúdo e o engajamento dos seguidores com o conteúdo também são fatores importantes para determinar sua relevância.
- Recência: conteúdos mais recentes e atualizados têm mais chances de serem recomendados pelo algoritmo.
- Comportamento do usuário: o algoritmo analisa o comportamento do usuário na plataforma, como as buscas realizadas, os perfis seguidos, as interações com outros usuários, entre outros, para fornecer sugestões personalizadas de conteúdo.
- Compartilhamento: se um usuário compartilha uma publicação em sua história, o algoritmo pode entender que o conteúdo é relevante para o usuário e pode recomendar mais conteúdo semelhante.
Tipos de Algoritmos
Algoritmos podem servir a diversas finalidades e portanto, suas possibilidades são imensas. Porém, com o tempo foi-se identificando que muitos algoritmos serviam para resolver problemas de natureza parecidas.
Com isso, a classificação dos algoritmos criou algumas áreas, possibilitando assim que surgissem famílias de algoritmos com finalidades em comum. Os tipos de algoritmos mais conhecidos são:
Algoritmos de ordenação
São algoritmos que ordenam um conjunto de elementos, como números, em ordem crescente ou decrescente. Exemplos de algoritmos de ordenação são o Bubble Sort, o Quick Sort e o Merge Sort.
Algoritmos de busca
São algoritmos que procuram por um elemento em um conjunto de dados. Exemplos de algoritmos de busca são o Linear Search (ou Busca Linear) e o Binary Search (ou Busca Binária).
Algoritmos recursivos
São algoritmos que se repetem várias vezes, chamando a si mesmos, para chegar a uma solução. Um exemplo de problema que podemos resolver usando recursividade é o cálculo do fatorial de um número.
Algoritmos de criptografia
São algoritmos que transformam informações em um formato que só pode ser lido por pessoas que possuem a chave para decodificar a informação. Exemplos de algoritmos de criptografia são o RSA e o AES.
Algoritmos de inteligência artificial
São algoritmos que usam técnicas de aprendizado de máquina para melhorar seu desempenho ao longo do tempo. Exemplos de algoritmos de inteligência artificial são Redes Neurais e Algoritmos Genéticos.
Criando seu primeiro algoritmo
Vamos colocar em prática! Para o primeiro desafio de algoritmo, vamos realizar uma tarefa simples: ler a quantidade de horas trabalhadas por um funcionário e o valor recebido por hora de trabalho. A partir dessas informações, será possível calcular o salário mensal do trabalhador.
Quebrando o problema em partes
Para esse exercício, vamos dividir o desenvolvimento do algoritmo em etapas bem definidas. A nossa intenção nesse primeiro problema é entender todo o processo de elaborar uma solução até o desenvolvimento do programa.
Para isso, seguiremos as seguintes etapas:
1. Definição do problema
O primeiro passo é definir claramente qual é o problema que se deseja resolver. Olhando para descrição o problema, temos:
Ler a quantidade de horas trabalhadas de um funcionário e quantos reais esse funcionário recebe por hora trabalhada, para então calcular e exibir o salário mensal dele.
Entendemos então que o problema que queremos resolve é exibir o salário mensal de um funcionário. Para isso, vamos estruturar alguns passos que serão descritos na próxima etapa.
2. Identificar os passos necessários
Nesse exemplo simples, identificamos as seguintes operações:
- Leitura da quantidade de horas trabalhadas;
- Leitura da quantia em reais que o funcionário recebe por hora trabalhada;
- Multiplicar as duas informações acima;
- Exibir o resultado.
3. Escrever um rascunho do possível algoritmo
Esse passo é importante para trazer para a realidade as idéias para a solução. Para esse momento, vamos optar por usar a estrutura de um pseudocódigo onde a gente possa expressar nossa imaginação sem nos preocuparmos com detalhes de implementação que as linguagens de programação possam impor.
Vamos lá:
Início
//Declaração das variáveis
Real horasTrabalhadas, valorHora, salarioTotal
//Leitura das entradas
Escreva("Digite a quantidade de horas trabalhadas: ")
Leia(horasTrabalhadas)
Escreva("Digite o valor da hora trabalhada: ")
Leia(valorHora)
//Cálculo do salário total
salarioTotal = horasTrabalhadas * valorHora
//Exibição do resultado
Escreva("O salário total é: ", salarioTotal)
Fim
Nesse pseudocódigo encontramos:
Inicio
eFim
: são delimitadores do nosso código. Em uma linguagem de programação real, você delimitará o seu código com recursos da própria linguagem (como funções e classes).
horasTrabalhadas
,valorHora
,salarioTotal
: são variáveis que criamos para armazenar temporariamente valores que serão utilizados ao longo do nosso algoritmo.
Real
: é o tipo da variável que criaremos. Nesse caso, indicamos que a variável será numérica do universo dos números reais. Normalmente criamos variáveis desse tipo quando temos valores fracionados (como dinheiro).
Escreva
eLeia
: são funções para interagir com o usuário.Escreva
é uma função que imprime na tela um texto, eLeia
é uma função que lê algum texto digitado pelo usuário. Note que a funçãoLeia
recebe a variávelvalorHora
para que o valor digitado pelo usuário seja armazenado nela.
Com a sua evolução como programador, essa etapa de criar um pseudocódigo naturalmente desaparecerá e você já desenvolverá a sua solução em uma linguagem real.
4. Desenvolver o algoritmo
Enfim, a codificação em uma linguagem de programação de verdade! Neste exemplo, iremos desenvolver a aplicação usando a linguagem Python. Para desenvolver e testar a sua aplicação, o Python oferece diversas opções de ambiente de desenvolvimento – alguns inteiramente online.
Código:
# Leitura das entradas
horas_trabalhadas = float(input("Digite a quantidade de horas trabalhadas: "))
valor_hora = float(input("Digite o valor da hora trabalhada: "))
# Cálculo do salário total
salario_total = horas_trabalhadas * valor_hora
# Exibição do resultado
print("O salário total é: ", salario_total)
Nesse código, lemos as entradas do usuário usando a função input()
e convertemos os valores para o tipo float
usando a função float()
.
Em seguida, calculamos o salário total multiplicando as horas trabalhadas pelo valor da hora e armazenamos o resultado na variável salario_total
. Por fim, exibimos o resultado na tela usando a função print()
.
Outros desafios
Programar é uma arte que precisamos exercitar bastante. Assim, quanto mais você pratica, mais fluente se torna na linguagem de programação. Por isso, deixo abaixo alguns desafios que você pode encarar como parte da aprendizagem.
Não deixe de compartilhar nos comentários suas dúvidas, dificuldades e soluções!
Média das notas
Desenvolva um programa que seja capaz de ler as notas de 2 provas de um aluno e imprima na tela a média.
Calculadora de gorjeta
Desenvolva um programa que leia o valor da conta de um restaurante e calcule o valor da gorjeta (acrescentando 10%).
Conversor de tamanho
Desenvolva um programa que leia um tamanho em metros e imprima o seu valor em centímetros
Conversor de temperatura
Desenvolva um programa que seja capaz de ler uma temperatura em Fahrenheit e converta para Celsius. Lembrando que para converter as 1 grau Fahrenheit para Celsius você deve pegar o valor em Fahrenheit e subtrair 32 para depois dividir por 0.5556 (ou 5/9).
Menor valor
Desenvolva um programa que leia 3 notas e diga qual delas é a menor.
Par ou ímpar?
Desenvolva um programa que leia um número fornecido pelo usuário e informe se o valor é par ou impar. Dica: aqui você terá que identificar se o resto de uma divisão é igual a zero.
Considerações finais
Os algoritmos são conjuntos de instruções que ajudam a resolver um problema específico. Eles são a base de qualquer programa de computador e são essenciais para a programação.
Se você está iniciando seus estudos em programação, há alguns conselhos importantes que podem ajudá-lo a progredir. É crucial começar com os conceitos básicos, como variáveis, estruturas de controle, loops e funções, para compreender os fundamentos da programação.
Além disso, é essencial praticar constantemente, começando com exercícios simples e, à medida que avança, desafiando-se com projetos mais complexos.
Um aspecto importante da programação é a habilidade de solucionar problemas. Por isso, é preciso aprender a dividir problemas em partes menores e resolvê-las individualmente.
Recomendações de Leitura e Ferramentas
- Como programar em Python
- Como o algoritmo de busca do Google funciona (em Inglês)
- Algoritmo de recomendação de amigos do Facebook (em Inglês)
- Algoritmo de recomendação do Instagram funciona em 2023 (em Inglês)
- Aprenda programar jogando: Coding Game (em inglês)
- Livro: Algoritmos E Lógica Da Programação
- Livro: Introdução à Programação com Python: Algoritmos e Lógica de Programação Para Iniciantes
- Apostila Algoritmos e Programação, do Instituto Federal de Edução, Ciência e Tecnologia