Você está na página 1de 17

Introdução Algoritmos

Introdução
1. O que são algoritmos?
2. Algoritmos no nosso dia a dia
3. Importância dos algoritmos na programação.
4. Princípios básicos de programação.

1.0 O que são algoritmos

Os algoritmos são uma sequência ordenada de passos que descrevem como resolver um problema
ou executar uma tarefa de forma clara e precisa. Eles são utilizados na programação para resolver
uma ampla variedade de problemas, desde tarefas simples até complexos processamentos de dados.

Eles são uma parte fundamental da programação e são utilizados para criar soluções eficientes e
estruturadas.

Os algoritmos são uma sequência ordenada de passos que descrevem como resolver um
problema ou executar uma tarefa de forma clara e precisa. Eles são utilizados na
programação para resolver uma ampla variedade de problemas, desde tarefas simples até
complexos processamentos de dados.

Características dos algoritmos:

1. Definição precisa: Um algoritmo deve ser definido de forma clara, sem ambiguidades, para
que qualquer pessoa possa entender e seguir os passos descritos.

2. Entrada: Um algoritmo geralmente requer algum tipo de entrada de dados. Pode ser um
valor numérico, uma sequência de caracteres, um arquivo, entre outros. A entrada é
processada pelo algoritmo para produzir uma saída.

3. Processamento: Os algoritmos contêm instruções ou comandos que descrevem as ações a


serem executadas para resolver o problema. Essas instruções podem envolver cálculos
matemáticos, tomada de decisões, iterações (repetições), manipulação de dados, entre
outros.

4. Saída: Um algoritmo produz uma saída que é o resultado final do processamento realizado.
Pode ser um valor, um relatório, uma resposta, um arquivo gerado, entre outros.

5. Finitude: Um algoritmo deve ter um número finito de etapas, ou seja, deve ser possível
executar todas as instruções dentro de um tempo razoável. Algoritmos infinitos ou que
nunca terminam não são úteis.

1
Introdução Algoritmos

6. Eficiência: Algoritmos eficientes são aqueles que resolvem o problema de forma rápida e
com uso mínimo de recursos. A eficiência de um algoritmo pode ser medida em termos de
tempo de execução e uso de memória.

Algoritmos podem ser expressos em diversas formas, como pseudocódigo, fluxogramas ou


linguagens de programação. Eles são a base para o desenvolvimento de software e
permitem automatizar tarefas, otimizar processos e resolver problemas de maneira
estruturada.

Aqui estão alguns exemplos:

1. Receita culinária: Uma receita é um exemplo clássico de algoritmo. Ela fornece uma
sequência de passos precisos para preparar um prato específico. Cada instrução, como
cortar ingredientes, misturar temperos e cozinhar em determinada temperatura, segue uma
ordem específica para obter o resultado desejado.

2. Instruções de montagem: Ao montar um móvel, por exemplo, você segue um conjunto de


instruções que descrevem como encaixar as peças corretamente. Essas instruções são uma
sequência de passos que você precisa seguir para montar o móvel com sucesso.

3. Roteiro de viagem: Ao planejar uma viagem, você cria um roteiro que indica os locais que
deseja visitar e a ordem em que deseja visitá-los. Cada parada e atividade é organizada em
uma sequência lógica para otimizar o tempo e aproveitar ao máximo a experiência de
viagem.

4. Organização de tarefas diárias: Ao criar uma lista de tarefas para o dia, você está
essencialmente criando um algoritmo para gerenciar seu tempo e prioridades. Você define
uma sequência de atividades a serem realizadas, considerando a importância, urgência e
dependências entre as tarefas.

5. Jogos de tabuleiro: Jogos como xadrez, damas são baseados em algoritmos. Cada
movimento feito pelos jogadores segue regras específicas, definidas pelo jogo. Os
jogadores usam estratégias e sequências de movimentos para alcançar seus objetivos.

Esses são apenas alguns exemplos para ilustrar como os algoritmos estão presentes no
nosso cotidiano. Eles nos ajudam a resolver problemas, otimizar processos e organizar
informações, tornando as tarefas mais eficientes e consistentes.

2
Introdução Algoritmos

2.0 Os algoritmos no nosso dia a dia.

Os algoritmos estão presentes em muitos aspectos do nosso dia a dia, mesmo que não
percebamos. Aqui estão alguns exemplos de como os algoritmos são utilizados em diversas
situações:

1. Mídias Sociais: Os algoritmos são usados nas plataformas de mídias sociais para determinar
quais conteúdos exibir em seu feed, com base em seus interesses, interações anteriores e
preferências. Eles também são utilizados para sugerir amigos, grupos e páginas com base
em suas conexões e atividades.

2. Recomendação de Produtos: Quando você faz compras online, os algoritmos são usados
para recomendar produtos com base em suas preferências de compra, histórico de
navegação, compras anteriores e padrões de outros consumidores com perfis semelhantes.

3. Navegação por GPS: Os aplicativos de navegação utilizam algoritmos para calcular as


melhores rotas e estimar o tempo de chegada com base em dados de tráfego em tempo
real, distâncias, velocidades e outras informações relevantes.

4. Pesquisas na Web: Os motores de busca, como o Google, utilizam algoritmos complexos


para classificar e exibir os resultados de pesquisa de acordo com a relevância. Eles
consideram fatores como palavras-chave, popularidade, localização geográfica e outros
critérios para fornecer os resultados mais relevantes para sua consulta.

5. Sistemas de Recomendação de Conteúdo: Plataformas de streaming de música, vídeos e


filmes utilizam algoritmos para recomendar conteúdos com base em seus interesses,
preferências, histórico de reprodução e tendências populares.

6. Detecção de Fraudes: Algoritmos são usados em sistemas de detecção de fraudes para


analisar padrões e comportamentos suspeitos, como transações financeiras fraudulentas,
atividades suspeitas em contas e outros tipos de comportamento não autorizado.

Esses são apenas alguns exemplos de como os algoritmos estão presentes em nosso dia a
dia. Eles desempenham um papel fundamental em várias áreas, ajudando a otimizar
processos, fornecer recomendações personalizadas, tomar decisões mais eficientes e
melhorar nossa experiência em diversas atividades.

3
Introdução Algoritmos

4.0 Importância dos algoritmos na programação.

Os algoritmos desempenham um papel fundamental na programação e têm uma


importância significativa. Aqui estão algumas razões pelas quais os algoritmos são
importantes na programação:

1. Resolução de problemas: Os algoritmos permitem a resolução de problemas complexos por


meio de uma sequência estruturada de etapas. Eles fornecem uma abordagem sistemática
para que os programadores possam decompor um problema em partes menores e mais
gerenciáveis, tornando a solução mais viável.

2. Eficiência: Algoritmos bem projetados podem melhorar significativamente a eficiência de


um programa. Eles permitem que os desenvolvedores otimizem o desempenho do código,
minimizem o uso de recursos (como tempo de execução e espaço de memória) e reduzam o
consumo de energia.

3. Reutilização de código: Os algoritmos podem ser reutilizados em diferentes partes de um


programa ou em projetos diferentes. Isso economiza tempo e esforço, pois os
desenvolvedores podem aproveitar soluções algorítmicas existentes, em vez de reinventar a
roda toda vez.

4. Organização e manutenção: Algoritmos bem estruturados tornam o código mais


organizado, legível e compreensível. Eles facilitam a manutenção e a colaboração entre os
membros da equipe, tornando mais fácil fazer alterações, corrigir erros e atualizar o
software no futuro.

5. Tomada de decisão: Algoritmos são utilizados para tomar decisões lógicas e controlar o
fluxo de execução de um programa. Eles permitem que o programa faça escolhas com base
em condições específicas, permitindo que os desenvolvedores implementem lógica de
negócios e regras personalizadas.

6. Abstração: Algoritmos fornecem uma camada de abstração que permite aos


desenvolvedores lidar com problemas complexos de forma mais simplificada. Eles ajudam a
ocultar os detalhes técnicos e focar na solução do problema em um nível mais alto de
abstração.

Em resumo, os algoritmos são a base da programação. Eles fornecem a estrutura necessária


para resolver problemas, melhorar a eficiência, facilitar a manutenção e tomar decisões
lógicas. Dominar os algoritmos é essencial para se tornar um programador eficiente e capaz
de desenvolver soluções robustas e escaláveis.

4
Introdução Algoritmos

Aqui está um exemplo de algoritmo que aplica descontos com base no valor de venda:

Neste exemplo, o algoritmo segue as seguintes etapas:

1. Início: Marca o início do algoritmo.

2. Ler o valor da venda: Solicita ao usuário que informe o valor da venda.

3. Verificar o valor da venda:

 3.1: Se o valor da venda for maior que 10000, calcula o desconto de 10% sobre o valor da
venda, subtrai o desconto do valor da venda e exibe o valor final com o desconto aplicado.

 3.2: Se o valor da venda estiver entre 5000 e 9999, calcula o desconto de 5% sobre o valor
da venda, subtrai o desconto do valor da venda e exibe o valor final com o desconto
aplicado.

 3.3: Caso contrário, calcula o desconto de 3% sobre o valor da venda, subtrai o desconto do
valor da venda e exibe o valor final com o desconto aplicado.

5
Introdução Algoritmos

4. Fim: Marca o final do algoritmo.

Esse exemplo ilustra um algoritmo que aplica diferentes descontos com base no valor da
venda. Dependendo do valor informado, um desconto específico é aplicado e o valor final
da venda é exibido.

Aqui está o exemplo dado anteriormente, adaptado para a linguagem SQL, considerando uma
tabela de vendas:

SELECT id, valor,

CASE

WHEN valor > 10000 THEN valor - (valor * 0.1)

WHEN valor BETWEEN 5000 AND 9999 THEN valor - (valor * 0.05)

ELSE valor - (valor * 0.03)

END AS valor_com_desconto

FROM vendas;

A cláusula CASE é utilizada para avaliar as condições e retornar o valor com desconto
correspondente. No exemplo, a coluna resultante é chamada de "valor_com_desconto". Ela
exibirá o valor original da venda com o desconto aplicado, de acordo com a regra
correspondente.

Ao executar essa consulta SQL na tabela "vendas", você obterá um resultado que inclui o ID
da venda, o valor original da venda e o valor com o desconto aplicado, de acordo com as
condições definidas.

Vale destacar que a mesma regra pode ser escrita de maneira diferente dependendo da linguagem a
ser utilizada ou mesmo do analista que estiver criando o select.

6
Introdução Algoritmos

Exemplo 1.

SELECT id, valor,

CASE

WHEN valor > 10000 THEN valor * 0.9

WHEN valor BETWEEN 5000 AND 9999 THEN valor * 0.95

ELSE valor * 0.97

END AS valor_com_desconto

FROM vendas;

Exemplo 2

SELECT id, valor,

valor *

CASE

WHEN valor > 10000 THEN 0.9

WHEN valor BETWEEN 5000 AND 9999 THEN 0.95

ELSE 0.97

END AS valor_com_desconto

FROM vendas;

Exemplo 3

SELECT id, valor,

IF(valor > 10000, valor * 0.9,

IF(valor BETWEEN 5000 AND 9999, valor * 0.95,

valor * 0.97)) AS valor_com_desconto

FROM vendas;

Esses são apenas alguns exemplos de como a mesma regra pode ser expressa de maneiras
diferentes em SQL. A escolha da abordagem depende do estilo de codificação preferido
pelo analista ou da estrutura de lógica que melhor se adequa ao sistema ou projeto em
questão.

7
Introdução Algoritmos

3.0 Princípios básicos de programação (Algoritmos)

Os principais princípios básicos de programação com algoritmos são:

1. Decomposição: Dividir um problema complexo em problemas menores e mais simples,


tornando-o mais gerenciável e fácil de resolver. Isso envolve a quebra do problema em
etapas menores e a criação de funções ou módulos independentes para lidar com cada
etapa.

2. Abstração: Identificar e isolar os aspectos essenciais de um problema, ignorando os detalhes


desnecessários. A abstração permite lidar com o problema em um nível mais alto,
concentrando-se apenas nos conceitos relevantes para a solução.

3. Modularização: Organizar o código em módulos ou blocos de código independentes e


reutilizáveis. Cada módulo tem uma função específica e pode ser chamado ou invocado
quando necessário. Isso promove a reutilização de código, facilita a manutenção e torna o
programa mais legível.

4. Algoritmo bem definido: Um algoritmo deve ser bem definido, ou seja, ter uma sequência
lógica de passos que leva à solução do problema. Cada passo deve ser claro, preciso e não
ambíguo.

5. Estruturas de controle: Utilizar estruturas de controle, como condicionais (if/else) e loops


(for/while), para controlar o fluxo de execução do programa. Isso permite que o programa
tome decisões com base em condições específicas e execute repetidamente determinadas
ações.

6. Variáveis e tipos de dados: Utilizar variáveis para armazenar e manipular dados. É


importante escolher o tipo de dado correto para cada variável, levando em consideração os
valores que ela irá armazenar (números, texto, booleanos, etc.).

7. Comentários: Incluir comentários no código para explicar o propósito de certas partes,


tornando o código mais legível e compreensível para outros desenvolvedores.

Esses são alguns dos principais princípios básicos de programação com algoritmos. Seguir
esses princípios ajuda a escrever algoritmos mais eficientes, organizados e fáceis de
entender.

8
Introdução Algoritmos

Aqui estão exemplos com os sete princípios básicos de programação com algoritmo:

Decomposição:

# Exemplo de decomposição em um programa para calcular a média de notas

def calcular_media(notas):

soma = 0

for nota in notas:

soma += nota

media = soma / len(notas)

return media

notas_aluno = [8, 7, 9, 10, 6]

media_aluno = calcular_media(notas_aluno)

print("Média do aluno:", media_aluno)

Neste exemplo, temos uma função chamada calcular_media que recebe uma lista de
notas como parâmetro. Essa função calcula a média das notas fornecidas.

A decomposição ocorre na implementação da função, onde dividimos o problema maior


(calcular a média) em etapas menores e mais gerenciáveis. Primeiro, inicializamos a variável
soma como zero e determinamos a quantidade de notas com base no tamanho da lista
fornecida.

Em seguida, percorremos cada nota na lista usando um loop for e adicionamos seu valor à
variável soma. No final, dividimos a soma pelo número de notas para obter a média.

A função retorna o valor da média, que pode ser atribuído a uma variável e impresso na
tela.

No exemplo, temos dois conjuntos de notas para diferentes alunos. Chamamos a função
calcular_media passando cada conjunto de notas como argumento e atribuímos o
resultado às variáveis media_aluno1 e media_aluno2. Em seguida, imprimimos as médias
dos alunos na tela.

Essa decomposição do problema em etapas menores facilita o desenvolvimento, a


depuração e a compreensão do código. Cada etapa é responsável por uma tarefa específica,
tornando o código mais modular e legível. Além disso, permite a reutilização do código,

9
Introdução Algoritmos

uma vez que a função calcular_media pode ser usada para calcular a média de diferentes
conjuntos de notas.

Abstração

# Exemplo de abstração em um programa para calcular a área de diferentes formas geométricas

def calcular_area(forma, medidas):

if forma == "retangulo":

largura = medidas[0]

altura = medidas[1]

area = largura * altura

elif forma == "circulo":

raio = medidas[0]

area = 3.14 * raio**2

else:

area = None

return area

medidas_retangulo = [4, 5]

area_retangulo = calcular_area("retangulo", medidas_retangulo)

print("Área do retângulo:", area_retangulo)

medidas_circulo = [2]

area_circulo = calcular_area("circulo", medidas_circulo)

print("Área do círculo:", area_circulo)

Neste exemplo, temos uma função chamada calcular_area que recebe dois parâmetros:
forma e medidas. Essa função calcula a área de diferentes formas geométricas com base nas
medidas fornecidas.

A abstração ocorre na implementação da função, onde não nos preocupamos com os


detalhes internos de como o cálculo é feito para cada forma geométrica específica. Em vez
disso, utilizamos um mecanismo de seleção condicional ( if, elif, else) para determinar
qual fórmula usar com base na forma fornecida.

10
Introdução Algoritmos

Dessa forma, podemos abstrair os detalhes de implementação e tratar as diferentes formas


geométricas de maneira generalizada. Isso permite que reutilizemos a mesma função
calcular_area para diferentes formas, apenas fornecendo as medidas específicas.

No exemplo, calculamos a área de um retângulo e de um círculo. Para o retângulo,


fornecemos as medidas de largura e altura como uma lista [4, 5]. Para o círculo,
fornecemos apenas o raio como uma lista [2]. Chamamos a função calcular_area
passando a forma e as medidas correspondentes, e em seguida imprimimos os resultados.

Essa abstração nos permite escrever um código mais genérico e reutilizável, tornando-o
mais fácil de entender e manter. Podemos adicionar mais formas geométricas ao sistema
sem alterar a estrutura central da função calcular_area, apenas adicionando novas
condições ao mecanismo de seleção condicional.

11
Introdução Algoritmos

Modularização:

# Exemplo de modularização.

def calcular_media(notas):

soma = 0

quantidade = len(notas)

for nota in notas:

soma += nota

media = soma / quantidade

return media

def exibir_situacao_aluno(media):

if media >= 7:

situacao = "Aprovado"

else:

situacao = "Reprovado"

print("Situação do Aluno:", situacao)

def processar_aluno(notas):

media = calcular_media(notas)

exibir_situacao_aluno(media)

notas_aluno1 = [7, 8, 9, 6]

processar_aluno(notas_aluno1)

notas_aluno2 = [6, 5, 8, 7]

processar_aluno(notas_aluno2)

12
Introdução Algoritmos

Neste exemplo, temos a modularização ocorrendo por meio da divisão do código em


diferentes funções, cada uma com uma responsabilidade específica.

A função calcular_media recebe uma lista de notas como parâmetro, realiza o cálculo da
média das notas e retorna o resultado. Essa função é responsável por executar a lógica
relacionada à média, abstraindo-a em um bloco de código reutilizável.

A função exibir_situacao_aluno recebe a média como parâmetro e determina a situação


do aluno com base nesse valor. Se a média for maior ou igual a 7, o aluno é considerado
aprovado; caso contrário, ele é considerado reprovado. Essa função é responsável por exibir
a situação do aluno na tela.

A função processar_aluno recebe as notas de um aluno como parâmetro. Ela chama a


função calcular_media para calcular a média das notas e, em seguida, chama a função
exibir_situacao_aluno para exibir a situação do aluno com base na média calculada. Essa
função coordena o processamento de um aluno, chamando as funções necessárias para
realizar as tarefas específicas.

No exemplo, temos dois conjuntos de notas para diferentes alunos. Chamamos a função
processar_aluno passando cada conjunto de notas como argumento. Essa função será
responsável por calcular a média e exibir a situação do aluno para cada conjunto de notas
fornecido.

A modularização do código permite dividir a lógica em partes menores e independentes,


facilitando a compreensão, a manutenção e o reaproveitamento do código. Cada função
tem uma responsabilidade bem definida, o que torna o código mais legível, organizado e
modular.

13
Introdução Algoritmos

Algoritmo bem definido:

1. Início do algoritmo.

2. Ler dois números inteiros do usuário: A e B.

3. Calcular a soma dos números lidos e armazenar em uma variável chamada "soma".

4. Calcular o produto dos números lidos e armazenar em uma variável chamada "produto".

5. Verificar se a soma dos números é maior que o produto.

6. Se a soma for maior, imprimir a mensagem "A soma é maior que o produto.".

7. Caso contrário, imprimir a mensagem "O produto é maior que a soma.".

8. Fim do algoritmo.

# Passo 1:Início do algoritmo.

print("Algoritmo para calcular a soma e o produto de dois números e


comparar os resultados.")

# Passo 2: Ler dois números inteiros do usuário: A e B.

A = int(input("Digite o primeiro número inteiro (A): "))

B = int(input("Digite o segundo número inteiro (B): "))

# Passo 3: Calcular a soma dos números lidos e armazenar em uma variável


chamada "soma".

soma = A + B

# Passo 4: Calcular o produto dos números lidos e armazenar em uma


variável chamada "produto".

produto = A * B

14
Introdução Algoritmos

# Passo 5: Verificar se a soma dos números é maior que o produto.

if soma > produto:

# Passo 6: Se a soma for maior, imprimir a mensagem "A soma é maior


que o produto."

print("A soma é maior que o produto.")

else:

# Passo 7: Caso contrário, imprimir a mensagem "O produto é maior que


a soma."

print("O produto é maior que a soma.")

# Fim do algoritmo.

print("Fim do algoritmo.")

Neste exemplo, o usuário digita dois números inteiros (A e B), e o algoritmo realiza os cálculos da
soma e do produto desses números. Em seguida, é feita a comparação entre a soma e o produto, e é
exibida a mensagem correspondente.

15
Introdução Algoritmos

Estruturas de controle:

# Exemplo de estruturas de controle.

idade = int(input("Digite a sua idade: "))

if idade >= 18:

print("Você é maior de idade.")

else:

print("Você é menor de idade.")

Neste exemplo, utilizamos a estrutura de controle if-else para verificar se a idade digitada
pelo usuário é maior ou igual a 18. Caso seja verdadeira essa condição, o programa imprime
a mensagem "Você é maior de idade". Caso contrário, ou seja, se a idade for menor que 18,
o programa imprime a mensagem "Você é menor de idade".

A estrutura if-else permite tomar decisões com base em uma condição, executando um
bloco de código quando a condição é verdadeira e outro bloco de código quando a
condição é falsa.

16
Introdução Algoritmos

Variáveis e tipos de dados:

# Exemplo de uso de variáveis e tipos de dados para calcular a área de um


retângulo

largura = float(input("Digite a largura do retângulo: "))

altura = float(input("Digite a altura do retângulo: "))

area = largura * altura

print("A área do retângulo é", area)

No script acima, temos as seguintes variáveis e seus tipos de dados:

largura : É uma variável do tipo float. Ela armazena a largura do retângulo fornecida pelo
usuário.
altura: É uma variável do tipo float. Ela armazena a altura do retângulo fornecida pelo
usuário.
area: É uma variável do tipo float. Ela armazena o resultado do cálculo da área do
retângulo, que é o produto da largura pela altura.

A utilidade das variáveis é armazenar os valores informados pelo usuário e realizar cálculos
com esses valores. No caso específico desse script, as variáveis largura e altura são
utilizadas para obter as dimensões do retângulo, e a variável area é utilizada para
armazenar o resultado do cálculo da área. Em seguida, a área é exibida ao usuário por meio
do comando print.

Comentários:

# Exemplo de comentários para explicar partes do código

salario = float(input("Digite o salário: ")) # Lê o salário digitado pelo


usuário

aumento = salario * 0.1 # Calcula o valor do aumento de 10%

salario_final = salario + aumento # Calcula o novo salário

print("Salário anterior:", salario)

print("Aumento:", aumento)

print("Novo salário:", salario_final)

Incluir comentários no código para explicar o propósito de certas partes, tornando o código mais
legível e compreensível para outros desenvolvedores.

17

Você também pode gostar