Algoritmo � uma mat�ria fundamental que ensina a pensar como um programador.
Um algoritmo � uma sequ�ncia de passos para se alcan�ar um objetivo. � um conceito f�cil, porque mesmo sem notar lidamos com algoritmos desde os primeiros anos de vida.
Por exemplo, no ensino fundamental aprendemos um algoritmo conhecido como Long Multiplication (C�digo 1) para multiplicar n�meros com mais de uma casa decimal.
500
x 10
------
000 (500 x 0)
+ 500 (500 x 1)
------
5000
Utilizando long multiplication precisamos multiplicar o multiplicando (500) por cada multiplicador (0 e 1), deslocando cada resultado apropriadamente para depois somar cada um deles.
Algoritmos na computa��o
Nessa mat�ria, o nosso trabalho ser� aprender como identificar quais s�o os passos que comp�em um algoritmo e se ele resolve o problema proposto da melhor forma.
Algoritmo e programa s�o coisas diferentes. Enquanto um algoritmo descreve uma sequ�ncia de passos e pode ser escrito de diferentes formas, tais como com uma narrativa textual, fluxogramas ou pseudoc�digo, um programa � a implementa��o desses passos em uma linguagem de programa��o. Por isso a mat�ria de algoritmos � menos sobre programa��o e mais sobre aprender como pensar como um programador.
As ferramentas fundamentais para a cria��o de um algoritmo s�o vari�veis, express�es e instru��es.
Vari�vel
Uma vari�vel armazena um ou mais valores. Al�m disso, elas possuem um nome e um tipo. Usamos o nome de uma vari�vel para definir e acessar o seu valor.
O tipo de uma vari�vel informa quais valores ela pode armazenar e o quanto da mem�ria do computador dever� ser reservado para ela.
Por exemplo, vamos declarar uma vari�vel para armazenar a nota de um aluno. Nesse contexto chamamos �nota de um aluno� de dado, que pode conter valores como 0, 2, 7.5, 8.9, por exemplo. Dessa forma, o nome da vari�vel pode ser �nota� e o seu tipo � Real, pois seus valores est�o dentro do conjunto dos n�meros reais.
Em pseudoc�digo declaramos uma vari�vel da seguinte forma:
Var nota: Real
Na Linha 1 usamos a palavra-chave Var para indicar que esse se trata do bloco de declara��o de vari�veis do algoritmo. Nessa mat�ria vamos sempre come�ar um algoritmo com esse bloco.
Ap�s, nessa mesma linha declaramos a primeira vari�vel chamada nota do tipo Real. Uma vari�vel do tipo Real pode armazenar n�meros inteiros e reais, tais como 0, 2, 7.5, 8.9.
No C�digo 2 temos outros exemplos de declara��o de vari�veis de outros tipos.
Var apartamento: Inteiro
preco: Real
nome: Literal[20]
ativo: Logico
Uma vari�vel do tipo Inteiro pode armazenar somente n�meros inteiros.
Uma vari�vel do tipo Real pode armazenar n�meros reais, incluindo os n�meros inteiros, pois fazem parte desse conjunto.
Uma vari�vel do tipo Literal pode armazenar um texto, como �Ol�, mundo�, �Informe o seu nome: �, entre outros. O n�mero entre colchetes determina o n�mero m�ximo de caracteres que o texto pode conter.
Uma vari�vel do tipo Logico pode armazenar os valores VERDADEIRO, verdadeiro, ou FALSO, Falso. Veremos a utilidade desse tipo em um outro momento.
Express�es
Express�es produzem novos valores a partir de uma ou mais vari�veis. Elas s�o constru�das com operadores, tais como +, -, *, /, entre outros.
Por exemplo, nota_av + nota_avs � uma express�o que soma as vari�veis nota_av e nota_avs. O valor produzido por essa express�o � um novo n�mero.
As express�es se dividem em tr�s conjuntos de acordo com o valor que os seus operadores produzem.
Express�es aritm�ticas
O primeiro conjunto � o das express�es aritm�ticas, que s�o aquelas que resultam em um n�mero inteiro ou real. Nesse conjunto est�o contidos os operadores aritm�ticos, como mostra a Tabela1.
Operador | Opera��o | Exemplo |
+ | Adi��o | 1 + 1, salario + bonus |
- | Subtra��o | 2 - 1, preco - desconto |
* | Multiplica��o | 4 * 4, preco * juros |
/ | Divis�o | 4 / 2, total / pagantes |
** | Exponencia��o | 2 ** 2, m * c ** 2 (mc�) |
+ | Manuten��o de sinal | + (-2) |
- | Invers�o de sinal | - (-2) |
Uma express�o aritm�tica pode ser composta por um ou mais operadores aritm�ticos.
Express�es l�gicas
As express�es l�gicas resultam em um valor l�gico como verdadeiro, simbolizado por VERDADEIRO, ou falso, simbolizado por FALSO.
Nesse primeiro contato com os operadores l�gicos s� o que precisamos aprender � que eles produzem valores l�gicos e tudo a seguir vem apenas a t�tulo de conhecimento.
Fazem parte desse conjunto os operadores listados na Tabela 2.
Operador | Opera��o |
OU | Disjun��o |
E | Conjun��o |
NAO | Nega��o |
Dado que uma vari�vel l�gica pode armazenar apenas dois valores, VERDADEIRO e FALSO, os operadores l�gicos realizam opera��es sobre esses valores considerando as quatro combina��es poss�veis entre eles. Cada operador retornar� um valor dependendo da combina��o utilizada.
Abaixo, na Tabela 3 vemos esses combina��es e os valores que ser�o gerados ao aplicar cada um desses tr�s operadores.
A | B | NAO A | NAO B | A OU B | A E B |
FALSO | FALSO | VERDADEIRO | VERDADEIRO | FALSO | FALSO |
FALSO | VERDADEIRO | VERDADEIRO | FALSO | VERDADEIRO | FALSO |
VERDADEIRO | FALSO | FALSO | VERDADEIRO | VERDADEIRO | FALSO |
VERDADEIRO | VERDADEIRO | FALSO | FALSO | VERDADEIRO | VERDADEIRO |
Esses operadores nos ajudam a express�o em pseudoc�digo frases como �cliente ativo e com pagamento em dia�, �preco > 199.99 ou em promo��o�, entre muitas outras para as quais a resposta deve ser verdadeira ou falsa.
Por exemplo, �cliente ativo e com pagamento em dia� pode ser escrito como:
cliente_ativo E pagamento_em_dia
Considerando que o valor de cliente_ativo seja VERDADEIRO e que o valor de pagamento_em_dia seja FALSO, no caso acima o valor produzido pela express�o ser� FALSO, uma vez que de acordo com a Tabela 3 a opera��o VERDADEIRO E FALSO e igual a FALSO.
Faz sentido aprender sobre isso, porque recebemos muitos pedidos para escrever c�digos como esse durante nossa carreira e eles permitem ao programa ter intelig�ncia, decidindo quando fazer algo ou n�o com base nos valores VERDADEIRO e FALSO.
Os operadores l�gicos podem ser um assunto novo para a maioria das pessoas e eles t�m a sua pr�pria mat�ria, a l�gica booleana. Por isso, n�o se preocupe se esse assunto parecer estranho num primeiro momento, porque voltaremos a falar dele mais tarde.
Instru��es
As instru��es s�o rotinas fundamentais que todo programa deve executar para conseguir gerenciar mem�ria e se comunicar com o mundo exterior. Elas s�o tr�s, atribui��o de valor a uma vari�vel, entrada e sa�da de dados.
Atribui��o de valor
� com a instru��o <- que uma vari�vel passa a armazenar algum valor.
Por exemplo, no algoritmo do C�digo 3 declaramos tr�s vari�veis que recebem diferentes valores.
Algoritmo "Exemplo de atribui��o de valor"
Var
cliente_ativo, pagamento_em_dia, resultado_da_expressao: Logico
Inicio
cliente_ativo <- VERDADEIRO
pagamento_em_dia <- FALSO
resultado_da_expressao <- cliente_ativo E pagamento_em_dia
Escreval(resultado_da_expressao)
FimAlgoritmo
Na Linha 6 a vari�vel cliente_ativo recebe o valor VERDADEIRO.
Na Linha 7 a vari�vel pagamento_em_dia recebe o valor FALSO.
Na Linha 8 a vari�vel resultado_da_expressao recebe o valor resultante da express�o l�gica cliente_ativo E pagamento_em_dia que nesse caso ser� FALSO, de acordo com a Tabela 3.
Aqui vemos pelo menos duas formas de atribuir valor a uma vari�vel. Na primeira forma, Linhas 5 e 6, fazemos isso diretamente, utilizando os valores VERDADEIRO e FALSO. Na segunda forma, usamos uma express�o para gerar um novo valor a partir de duas vari�veis o qual atribu�mos a vari�vel.
Sa�da de dados
Como vimos antes, as vari�veis s�o um recurso poderoso para facilitar o gerenciamento da mem�ria. Contudo, se o programa guarda todas as informa��es para si, ele tem pouca utilidade. As instru��es de sa�da nos permitem compartilhar informa��es com o usu�rio, colocando-as em dispositivos de sa�da, tais como a tela do computador.
H� duas formas de escrever essa instru��o:
Escreval(variavel1, variavel2)
Onde o valor das vari�veis ser� impresso em linhas diferentes.
Escreval(�Ol�, mundo!�)
Onde o texto Ol�, mundo! � apenas um exemplo de literal que podemos escrever.
Por exemplo, escreva um algoritmo (C�digo 4) que calcule o valor total de uma venda considerando o pre�o unit�rio do produto e a quantidade comprada.
Algoritmo �Uso da instru��o de sa�da Escreva�
Var preco_unidade, valor_total: Real
quantidade_comprada: Inteiro
Inicio
preco_unidade <- 2.99
quantidade_comprada <- 10
valor_total <- preco_unidade * quantidade_comprada
Escreval(valor_total)
FimAlgoritmo
No exemplo acima, usamos a instru��o de sa�da Escreval na Linha 9 para apresentar para o usu�rio o valor da vari�vel valor_total.
Entrada de dados
Perceba que at� aqui atribu�mos as vari�veis valores literais, n�meros ou textos inseridos diretamente no c�digo, como 2.99 na Linha 6 do C�digo 4 ou 10 na Linha 5 do mesmo exemplo. Mas na maioria das vezes lidamos com valores desconhecidos, que devem ser informados por outra pessoa e n�o pelo programador.
Por exemplo, no problema do C�digo 4 uma outra solu��o poss�vel seria criar um algoritmo que lesse do usu�rio os valores das vari�veis preco_unidade e quantidade_comprada. Assim, o algoritmo passaria a poder ser utilizado para qualquer venda e se tornaria mais �til dessa forma.
A instru��o de entrada de dados Leia � o que precisamos para que um valor seja fornecido pelo usu�rio. A sintaxe ou forma de escrever essa instru��o � esta:
Leia([nome_da_variavel1], [nome_da_variavel2], [nome_da_variaveln])
Vamos reescrever o algoritmo no C�digo 4 adicionando essa instru��o, conforme mostra o C�digo 5.
Algoritmo �Uso da instru��o de entrada Leia�
Var preco_unidade, valor_total: Real
quantidade_comprada: Inteiro
Inicio
Leia(preco_unidade, quantidade_comprada)
valor_total <- preco_unidade * quantidade_comprada
Escreval(valor_total)
FimAlgoritmo
Agora, em lugar de lidar com valores literais no c�digo estamos recebendo na Linha 6 um dado de um dispositivo de entrada, tal qual o teclado.
Como escrever um algoritmo
A descri��o de um algoritmo passa por algumas etapas, que podemos resumir com as tr�s perguntas abaixo:
- Qual problema
precisamos resolver?
A especifica��o do problema que ser� resolvido. Quanto mais precisa e detalhada melhor. - Como esse
problema pode ser resolvido?
Uma descri��o do pr�prio algoritmo que demonstra como o problema ser� resolvido.
Existem outros passos, mas por hora trabalharemos com esses dois para manter as coisas simples de in�cio.
N�o importa se estamos controlando as luzes de um sem�foro ou ajustando a �rbita de um sat�lite, sempre podemos utilizar essas perguntas para organizar nosso trabalho.
Escrevendo algoritmos
Vamos praticar um pouco escrevendo algoritmos simples.
Exemplo 1
Qual problema precisamos resolver? Somar dois n�meros e imprimir o resultado.
Como esse problema pode ser resolvido? Uma forma poderia ser esta do C�digo 6.
Algoritmo �Algoritmo para ler e somar dois n�meros�
Var numero1, numero2, soma: Real
In�cio
Leia(numero1, numero2)
soma <- numero1 + numero2
Escreval(soma)
FimAlgoritmo
Na Linha 3 declaramos tr�s vari�veis chamadas numero1, numero2 e soma. As vari�veis numero1 e numero2 armazenar�o os valores que n�o conhecemos e que ser�o informados pelo usu�rio. Quanto a soma, ser� armazenado nela o resultado do c�lculo entre numero1 e numero2.
Na Linha 6 usamos a instru��o Leia para obter o valor do primeiro n�mero, que armazenamos na vari�vel numero1, e do segundo n�mero, que armazenamos na vari�vel numero2.
Na Linha 8 temos uma express�o, usada para somar os valores das vari�veis numero1 e numero2. O resultado desse c�lculo guardamos na vari�vel soma.
Na Linha 10 usamos a instru��o Escreval para imprimir o valor da vari�vel soma na tela.
Exemplo 2
Qual problema precisamos resolver? Calcular a m�dia entre dois n�meros e imprimir o resultado.
Como esse problema pode ser resolvido? Esse problema � muito parecido com o anterior, portanto aqui tamb�m precisaremos de duas vari�veis para os n�meros que calcularemos e uma terceira para ent�o podermos imprimir seu resultado na tela.
Vamos escrever o algoritmo conforme o C�digo 7.
Algoritmo �Algoritmo para calcular a m�dia entre dois n�meros�
Var numero1, numero2, media: Real
Inicio
numero1 <- 10.0
numero2 <- 5.0
media <- (numero1 + numero2) / 2
Escreval(media)
FimAlgoritmo
Na Linha 3 declaramos as vari�veis numero1 e numero2 para armazenar o primeiro e o segundo n�mero.
Na Linha 9 somamos o valor das duas vari�veis numero1 e numero2 e depois dividimos esse resultado por 2 para calcular a m�dia que armazenamos na vari�vel media.
Nesse caso o valor impresso na Linha 11 dever� ser 7.5.
Exemplo 3
Agora vamos aumentar um pouco a dificuldade.
Qual problema precisamos resolver? Considerando que a velocidade de um humano adulto varia entre 5 e 6.5 km/h, calcule o tempo m�nimo e m�ximo de uma caminhada considerando a dist�ncia que ser� percorrida em km.
Como esse problema pode ser resolvido? Vamos resolver esse problema um passo de cada vez.
Ele � de f�cil resolu��o, porque podemos dividir a dist�ncia que ser� percorrida pelos valores 5 e 6.5 para encontrar os tempos m�nimo e m�ximo de caminhada.
Para isso, primeiro vamos declarar vari�veis para armazenar os valores conhecidos, 5 e 6.5
velocidade_media_minima <- 5
velocidade_media_m�xima <- 6.5
Agora, devemos armazenar a dist�ncia percorrida em quil�metros. Vamos testar com um n�mero qualquer.
distancia_em_quilometros <- 10
De posse desses valores podemos calcular o tempo m�nimo e m�ximo multiplicando a dist�ncia que ser� percorrida pelas velocidades m�nima e m�xima de caminhada:
tempo_minimo_de_caminhada <- distancia_em_quilometros / velocidade_media_minima
tempo_maximo_de_caminhada <- distancia_em_quilometros / velocidade_media_maxima
Ent�o, exibimos esses valores usando a fun��o Escreval, assim como fizemos anteriormente:
Escreval(tempo_minimo_de_caminhada)
Escreval(tempo_maximo_de_caminhada)
Esse algoritmo funciona, resolvendo o problema proposto, por dois motivos principais:
- Seus comandos est�o ordenados corretamente;
- O c�lculo realizado est� correto.
Outro ponto importante � o c�lculo realizado pelo algoritmo. Essa � a intelig�ncia por tr�s do c�digo e o motivo pelo qual ele existe. Sendo assim, caso esse c�lculo estivesse incorreto, o algoritmo apresentaria uma resposta incorreta.
Exemplo 4
Sempre que precisarmos armazenar valores usamos vari�veis. Quanto mais complexo for um problema, de mais vari�veis podemos precisar para resolv�-lo.
Qual problema precisamos resolver? Escreva um algoritmo que troca o valor de duas vari�veis, a e b.
Como esse problema pode ser resolvido? O problema descreve duas vari�veis, mas n�o fornece os seus valores, ent�o vamos utilizar novamente Leia para pedir ao usu�rio que informe cada um deles.
O ponto mais importante aqui � a utiliza��o da vari�vel temporaria para resolver o problema, como mostra o C�digo 8.
Algoritmo "Troca o valor de duas vari�veis"
Var numero1, numero2, temporaria: Real
Inicio
Leia(numero1, numero2)
temporaria <- numero1
numero1 <- numero2
numero2 <- temporaria
Escreval(numero1)
Escreval(numero2)
FimAlgoritmo
Vale apontar algo importante: toda vez que atribu�mos um valor a uma vari�vel o anterior atribu�do a ela � perdido. Ent�o, se tentarmos trocar os valores das vari�veis dessa forma:
numero1 <- numero2
numero2 <- numero1
Quando a segunda instru��o for executada, b = a, a j� ter� recebido o valor de b na linha anterior, o que far� com que a e b tenham o mesmo valor no final.
Portanto, precisamos de uma vari�vel tempor�ria para armazenar o valor de a, ent�o atribu�mos o valor de b a a e depois o valor da vari�vel tempor�ria a b.
Assim, esse algoritmo termina com a tendo o valor de b e b o valor de a.
Confira outros conte�dos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouqu�ssimas coisas de programa��o antes de come�ar a estudar com voc�s, fui me especializando em v�rias �reas e ferramentas que tinham na plataforma, e com essa bagagem consegui um est�gio logo no in�cio do meu primeiro per�odo na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse per�odo a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta � continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma � bem intuitiva e muuuuito did�tica a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda n�o tinha visto. A did�tica � do jeito que qualquer pessoa consegue aprender. S�rio, to apaixonado, adorando demais.
Adquiri o curso de voc�s e logo percebi que s�o os melhores do Brasil. � um passo a passo incr�vel. S� n�o aprende quem n�o quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que j� fiz na vida e tenho aprendido bastante com a plataforma. Voc�s est�o fazendo parte da minha jornada nesse mundo da programa��o, irei assinar meu contrato como programador gra�as a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exerc�cios pr�ticos que n�o tem como n�o aprender, est�o de parab�ns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino t�o presente na vida acad�mica de seus alunos, parab�ns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia h� cerca de 1 ano e meio... Hoje estou h� 1 ano empregado trabalhando 100% com React!
Adauto Junior
J� fiz alguns cursos na �rea e nenhum � t�o bom quanto o de voc�s. Estou aprendendo muito, muito obrigado por existirem. Est�o de parab�ns... Espero um dia conseguir um emprego na �rea.
Utilizamos cookies para fornecer uma melhor experi�ncia para nossos usu�rios, consulte nossa pol�tica de privacidade.