Algoritmos Computacionais

Artigos sobre lógica de programação por Tiago Madeira

algoritmo: do Lat. algorithmos < Ár. alkharizmi: [Inform.] conjunto de etapas bem definidas necessárias para chegar à resolução de um problema.

O que é um algoritmo?

January 4, 2006

Eu disse aí há uns dois posts atrás que eu ia começar a escrever artigos explicativos para quem está iniciando em áreas que eu já conheço há mais tempo como GNU/Linux, PHP/MySql, linguagem C e algoritmos. Então, resolvi começar pelo último. Esse é o primeiro de uma série de artigos que eu pretendo fazer e onde pretendo abordar:

  • O que é um algoritmo?
  • Como representar um algoritmo?
  • Qual a utilidade do algoritmo?
  • Exemplos de algoritmos simples
  • Comparação entre algoritmos de ordenação de vetores
  • Algoritmos gulosos
  • Algoritmos em grafos
  • Programação Dinâmica
  • Algoritmos Geométricos

Os últimos eu faço questão de colocar até porque eu quero revisar pra Olimpíada desse ano (aliás, quero ir pro México pra Olimpíada Internacional de Informática nesse ano!). Eles são meio complicadinhos, mas a gente chega lá.

Hoje vou começar com o primeiro item: O que é um algoritmo?


Um algoritmo é um procedimento computacional definido que recebe um ou mais valores (entrada) e produz um ou mais valores (saída). O algoritmo é aquela fórmula matemática, aquele pedaço de código, que fica ali no meio da entrada e da saída para transformar o primeiro no segundo.

Vamos supôr por exemplo que temos a função:

LaTeX: f(x) = \frac{x^{2}}{3}

A sua entrada é o x e a sua saída é o y (ou f(x), o valor que a função retorna).

O algoritmo aqui seria o seginte:

  1. Entrada: Receber o valor X.
  2. Elevar X ao quadrado e guardar o número resultante como Z.
  3. Dividir Z por 3 e guardar o número resultante como Y.
  4. Saída: Imprimir o valor Y.

O algoritmo, portanto, é a lógica do nosso problema matemático, ou, informático. É a seqüência de passos que eu faço na minha cabeça (ou, quando é complexo, no papel) antes de escrever, em C, a função f:

int f(int x) {
int z, y;
z = pow(x, 2);
y = z/3;
return y;
}

Se formos pensar, veremos que tudo o que fazemos é um algoritmo, é um procedimento que recebe uma entrada e envia uma saída. Não só no computador, mas na vida. Quando eu falo com alguém, eu espero sua entrada (o que a pessoa fala pra mim), então penso e transformo essa entrada numa saída (a resposta que vou dar pra pessoa). E assim é com várias outras coisas. Podemos dizer também que acordar é um algoritmo, por exemplo:

  1. Entrada: Meu cérebro disse que eu estou acordado!
  2. Percebi que acordei, mas estou com sono. Espero um pouco.
  3. Saída: Abrir os olhos.
  4. Saída: Se espreguiçar.
  5. Saída: Tirar a coberta.
  6. Saída: Sentar na cama.
  7. Saída: Sair da cama.

Podem existir vários algoritmos diferentes para resolver o mesmo problema. No caso de Acordar, cada um acorda de forma diferente, por exemplo. Foi até um exemplo meio estranho esse aí, mas outro algoritmo poderia dar outra saída, como por exemplo simplesmente abrir os olhos e cair da cama. Ou no caso acima da função matemática, poderíamos ter um algoritmo que fizesse a mesma coisa de maneira diferente também.

O algoritmo que usamos depende principalmente do tempo que ele demora pra ser executado e a memória que ele gasta no computador. Chamamos isso de custo. Quando começarmos a ver os algoritmos de ordenação de vetores, veremos que cada algoritmo faz uma coisa diferente, mas todos fazem a mesma coisa: ordenar o vetor. Para uma entrada pequena, um pode ser mais rápido... Para uma maior, outro. Portanto, o algoritmo que queremos usar (o tempo que ele vai demorar pra ser executado e a memória que ele vai gastar no computador) depende principalmente do tamanho da entrada (que chamamos de N e no exemplo da função seria a variável X).

Na maioria dos casos (e vai ser sempre assim aqui nos meus artigos), a entrada será o teclado (por exemplo, o usuário digita o X para a função) e a saída será a tela (por exemplo, o programa imprime o resultado da função, o Y, para a tela). Essas são a entrada e saída padrão (standard input output do C), que é usada nas olimpíadas e na maioria dos problemas que resolvemos no computador.

Em resumo, portanto, um algoritmo é a lógica de um programa computacional. Nos próximos artigos, isso deverá ser mais esclarecido e começaremos a ver algoritmos "de verdade" ;)

Qualquer dúvida, sugestão ou notificação de erro; poste um comentário ou me envie um e-mail.

Compare Preços de: notebooks, acer aspire, hp pavilion, computadores, pentium 4, nintendo wii, ps3, celulares, câmeras digitais

72 comentários

#1 | CosmeWeb (04/01/2006)

Gostei do artigo, ótima introdução.
Não esqueça de entrar no assunto de Algoritmos Geométricos.

#2 | Gabriel (04/01/2006)

Olá Tiago,

Gostei do artigo,
acompanho o seu site já algum tempo,
e estou sempre aguardando você postar as novidades, bom já estou na espera dos próximos artigos.

Parabéns!

Gabriel Santana
M4sk4r4

#3 | hlegius (04/01/2006)

Opa Tiago, muito bom a sua abordagem rapaz!
Algoritmos, é um tema pouco valorizado por muitos programadores iniciantes, que querem logo jogar a mão na massa hehehe
ah ficou muito bem explicado, parabéns!

Abraços!

#4 | CosmeWeb (05/01/2006)

Minha professora já marcou a prova de Lógica de Programação para dia 09/01, próxima segunda-feira, se puder agilizar nos artigos ficarei grato. :P

#5 | Lorn (05/01/2006)

Muito bom o tutorial, explicou melhor que uns professores meus da faculdade que tem até mestrado
Sinceramente, 2 meses falando de algoritmo…tsc tsc, no seu caso não seria nem uma aula. ;)

#6 | tatix (09/01/2006)

Olá Tiago,

Vi seu artigo sobre algoritmo recursivo, assunto que precisei relembrar quando estive diante de um problema num programa. Gostei tanto q vim aqui no primeiro artigo. =)

E achei fantastico. Por mais que os livros e os professores tentem fazer um cenario, uma metafora, nenhum conseguiu ser tão objetivo e eficaz como você.

Continue os com artigos…estão “massa”.

Um abraço!

#7 | Tiago Madeira (12/01/2006)

Valeu pelos comentários, galera! Fico contente que vocês tenham gostado dos artigos (estou quase até achando que estou no nível de um professor universitário… hehehe…). Sintam-se a vontade para darem sugestões de que assuntos devo abordar nessa série! :)

Um abraço,
Tiago.

#8 | Jamile (06/03/2006)

Sua explicação em relação a ese assunto éh bastante clara e explicida, resumindo está excelente.

becitóz

#9 | Luciane (15/03/2006)

Olá.
Há uma certa polêmica na área acadêmica a respeito de algoritmos e heurísticas. Você poderia indicar a diferença entre eles.
Obrigada.

#10 | simone (13/04/2006)

Será q vcs podem me explicar, sobre o teste de mesa de um algoritmo. obrigada

#11 | Junior (04/08/2006)

Olá Tiago,

Muito boa a introdução, pois para mim que sou iniciante ajudou bastante, principalmente a analogia feita com a matemática.
Se vc puder, nos próximos artigos, colocar bastante exemplos com a linguagem C seria ótimo mesmo, pois tenho interesse em aprender essa linguagem.

Abraços
Junior

#12 | Apolianário Leal (07/08/2006)

Blz mesmo este artigo , pra mim que estou começando então, estar o maximo

#13 | izete matias (18/08/2006)

olá tiago!!! interessante e útil esse seu artigo! certamente me ajudará bastante no teste da disciplina algoritmo e programação…

#14 | Ana Paula (24/08/2006)

olá,tiago adorei seu assunto ´tá bem claro e resumido qualquer dúvida,recorro a vc.

#15 | Maxwel (25/08/2006)

Nossa muito bom a introdução e estava em busca na net desse esclarecimento sobre algorito e encontrei…
Muito bom!!

[…] O artigo está em outro local agora: O que é um algoritmo? […]

#17 | Bruno (21/03/2007)

A sua definição de Algoritmo está equivocada, ela é muito mais genérica do que o publicado. Algoritmo não recebe um ou mais valores e retorna um ou mais valores. Um algoritmo pode não ter nenhuma entrada e várias saídas, ou o contrario. e não necessariamente ele é computacional, e se for mesmo assim não se aplica a sua definição.

#18 | Diego kpta (21/03/2007)

olá!!!
gostei muito de suas explicações,
“quase professor universitário” Tiago.
rsrs!!!!
gostaria q vc explicasse um pouco a respeito
de fluxograma.
to achando meio xato e complicado!
e meu professor ainda por cima é péssimo pra
explicar!
aguardo resposta
Grato

DIEGO

#19 | batele (04/04/2007)

sou galileu (batele) preciso de uma informaçao que por exemplo vai me deixar recordar do algoritmao em linguagem computacional

#20 | tarine (11/04/2007)

hum….
mt boa a explicaçao, porém só entendi o q seria um algoritmo…

mais aki na se fala exatamente como se usa na realidade…

pensei q iria me ajudar e só vi q tinha coisas escritas sobre algoritmo e nao resoluçoes…

bj [;)]

#21 | Rogerio (24/04/2007)

Estou com um grande probleminha fazer um programa em lógica que dê a sequinte saida tamanho 5 rodar no visualg

#22 | Marleni (04/05/2007)

O que faz um algoritmo ser melhor do que o outro? Quais os critérios que são utilizados para avaliar a qualidade de um algorotmo?

#23 | Mauro (08/05/2007)

Qual os critérios para avaliar a qualidade de uma lgoritimo?

#24 | Max Marinho (12/05/2007)

Muito Bom cara… Não sei se vc dá aula em algum lugar. Se não, seria interessante pensar nisto,
pois, vc tem o dom de ensinar de forma decomplicada. Parabéns. Muito bom memso.

#25 | Laís (13/05/2007)

por favor me ajude a decifrar ….o q faz um algotmo ser melhor do que o outro ???

aguardo resposta

#26 | Maria Cunha (14/05/2007)

Adorei o seu artigo, mas tenho uma pergunta, gostaria de saber o que faz um algoritmo ser melhor do que o outro? Quais os critérios que são utilizados para avaliar a qualidade de um algoritmo?

Por favor me envie a resposta o mais breve, pois estou com muita duvida.

Agradece, Maria Cunha

#27 | Nanda (14/05/2007)

O que faz um algoritmo ser melhor do que o outro? Quais os critérios que são utilizados para avaliar a qualidade de um algoritmo?

preciso da resposta para um trabalho q deve ser entregue amanhã

obrigada

#28 | Naiara (14/05/2007)

Blz,é a primeira vez q acessei esse site gostei mto estou começando agora o curso de Análise e desenvolvimento de sistemas, e realmente sua materia está resumida e bem explicada.

#29 | Douglas Oliveira (14/05/2007)

O que faz um algoritmo ser melhor do que o outro? Quais os critérios que são utilizados para avaliar a qualidade de um algorotmo?

#30 | Lauro Farias (14/05/2007)

Preciso entregar um trabalho,não sei se vc pode me ajudar.
A pergunta é a seguinte :O que faz um algoritmo ser melhor que o outro?
Quais são os critérios utilizados para avliar qualidade de um algoritmo?

#31 | talitta (19/05/2007)

sabe eu gostaria de saber como que um algoritmo pode ser melhor que outro? e quais os criterios para avaliar um algoritimo…..responde ai ………quebra esse calho

#32 | SILAS (19/05/2007)

Simples claro e conciso, este esclarecimento sobre algorítmo esgotou qualquer duvida que poderia se ter.

#33 | Walnicley (20/05/2007)

O que faz um algoritmo ser melhor do que o outro?
Quais são os critérios utilizados para avliar qualidade de um algoritmo?

#34 | marcio (26/05/2007)

por favor responda a pergunta da marleni #22, é um trabalho e esta valendo nota, nos esclareça esta pergunta o prazo de entrega do trabalho é dia 29/05/2007. Por favor.
E por favor me mande também por E-mail esta resposta.

É URGENTE, POR FAVOR ME ENVIE.

#35 | graci (26/05/2007)

O que faz um algoritmo ser melhor que o outro? Quais os critérios que são ultilizados para avaliar a qualidade de um algoritmo?
Por favor me responda urgentimente é um trabalho que estamos fazendo e o plazo de entrega do mesmo é no dia 29/05/2007.

#36 | Tiago Madeira (16/06/2007)

O que faz um algoritmo ser melhor que o outro? Quais são os critérios que são utilizados para avaliar a qualidade (complexidade) de um algoritmo?
Esta pergunta foi respondida aqui em: Análise de Algoritmos

#37 | Gabriela (04/08/2007)

EU detestei

#38 | Victor Jr (16/08/2007)

Gostei muito desse artigo. é um assunto que eu realmente quero
saber bem afundo. Espero que vc continue escrevendo artigos importantes e interessantes.

Peço que vc escreva um artigo sobre como montar um Servidor e sobre
Segurança de Rede.

#39 | anonimo (05/09/2007)

qual software vc usa pra fazer algoritmo???????????
espero sua resposta,

obs:
gostei do artigo, di grande valor pra iniciantes, parabens pela iniciativa

#40 | Jose Cabicho (11/09/2007)

Gramei d leer o seu artigo
Stava lendo cada palavra com muita atencao
Gostei

#41 | rafael vicente (14/09/2007)

Muito bom!!! vc explica fácil parabéns mesmo, foi melhor do que alguns professores. rsrs!.
Continue assim com essas iniciativas de falar mais sobre algoritmos, estarei atento as suas novas publicações.

até mais

#42 | juliana (23/09/2007)

Dado um grafo qualquer, o programa deverá calcular as seguintes informações:

a. para cada vértice:
• grau de entrada,
• grau de saída

b. para o grafo como um todo:
• a soma dos graus de entrada
• a soma dos graus de saída
• o número de arcos/arestas

Voce pode me ajudar a fazer em linguagem C?
Espero anciosamente.

#43 | juliana (23/09/2007)

Dado um grafo qualquer, o programa deverá calcular as seguintes informações:

a. para cada vértice:
• grau de entrada,
• grau de saída

b. para o grafo como um todo:
• a soma dos graus de entrada
• a soma dos graus de saída
• o número de arcos/arestas

A saída deverá conter n linhas, uma para cada vértice, em que cada linha contém, nesta ordem, o grau de entrada e o grau de saída do vértice respectivo.
Na última linha (linha n+1), o programa deverá imprimir sem espaços, nesta ordem, a soma dos graus de entrada, a soma dos graus de saída e o número de arestas.

Estou usando em lista de adjacencia.

Voce pode me ajudar a fazer em linguagem C?
Espero anciosamente.

#44 | Jonathan Clinger (04/10/2007)

Legal sua explicação sobre algoritmos Tiago, é boa mesmo
mas eu preciso de uma ajuda, preciso fazer um trabalho na
escola sobre algoritmos. Tem que ser um algorimo com cinco formas
de resolver, você pode me dar um exemplo ???

VALEU.

#45 | Aline Polo (23/10/2007)

Gostei muito da sua explicação sobre algoritmos.
Estou começando sistemas de informação e estava meio confusa sobre o tema.
Parabens pela iniciativa!

#46 | Schneider (11/11/2007)

Comecei a ler :)

#47 | Sérgio L.Rosa (03/12/2007)

Sou estudante Universitário do Curso de Analise e Desenvolvimento de Software.
Gostaria de saber o por que da obediencia dos sistemas de algoritmos aos nossos comandos(pascal,visualg2.0) etc…

#48 | Rogério (13/01/2008)

Gostei da introdução, estou ansioso pelos próximos tópicos.

#49 | ERALDO CARVALHO (24/01/2008)

cara valeu muito fera ,até eu que sou iniciante em algoritmo entendi sua explanação.está de parabéns.

#50 | Welinton (28/01/2008)

Olha, gostei muito de seu artigo.. sou estudante de Sistemas de Informação e gostei muito de sua abordagem sobre algoritmo, pois eleva bem a intenção logica de como proceder… deu para entender como enchergar logicamente o sentido do algoritmo…. continue postando para termo mais referencias de opinioes sobre o assunto, que é muito interessante e que pode ajudar aos colegas a enchergarem mais como aprender e facilitar mais os estudos, pois, opinioes diferentes são formas diferentes de interpretar o que é algoritmo…. forte abraço.

Welinton.

#51 | Ferd (06/02/2008)

Parabéns!!
Sou iniciante no assunto sem conhecimento algum.
Entendi objetivamente o conceito.
Obrigada!!

#52 | vera (11/02/2008)

1. Dado 3 valores, entre 0 e 1000, faça um algoritmo que informe se o valor digitado é menor que 100.

alguém poderia me ajudar a solucionar ?

Obrigada

#53 | leandro (11/03/2008)

oi to com dificuldade no processamento alguem poderia me ajudar ae
obrigado

#54 | Rodrigo Jonas Dias (15/03/2008)

Oi Tiago…primeiramente parabéns pela sua explicação de algorítmos!Desculpa te incomodar,é que estou no primeiro semestre de “Sistemas de Informação” e estou tendo dificuldades nessa matéria “algorítmos”não estou conseguindo compreender a explicação,será que vc poderia me mandar uma maneira mais fácil e complexa ??? Tipo com exemplos de vários exercícios,eu estou com 30 exercícios pra resolver e está complicado viu,por favor se possível me mande algum artigo no meu e-mail!!!Ficarei aguardando sua resposta o mais rápido possível!!Obrigado!!!me ajuda aí ……..

#55 | Alvaro (03/04/2008)

Thiago bom dia
Comecei ontem o curso de Licenciatura em Informática, gostaria muito das suas orientações.

#56 | Alvaro (03/04/2008)

O primeiro assunto dado pelo professor foi Algoritmo

#57 | fatima (04/04/2008)

Alvaro,
como faço para postar pergunta para o Tiago no forum? Nao achei opçao.

#58 | Everton (10/04/2008)

Nossa gostei de muito de suas explicações
conseguir ter um poco de noção rsrs

#59 | josecso (15/04/2008)

algoritmo muito bommmmmm

#60 | João Norberto (17/04/2008)

Muito legal todas essas informações sobre algoritmo … e esta sendo muito util para pesquisas e aprendisado.
gostaria de saber se poderia falar um pouco sobre visual algoritmo … e que estou precisando para um trabalho e não encontrei …

#61 | EVELIN CAROLINE (04/05/2008)

OI EU QUERIA SABER COMO DESENVOLVER UM ALGORITMO QUE LEIA UMA TEMPERAURA EM GRAUS CELSIUS E CONVERTA PARA FAHRENHEIT

#62 | EVELIN CAROLINE (04/05/2008)

EU ADOREI O CONCEITO SOBRE ALGORITMO

#63 | EVELIN CAROLINE (04/05/2008)

OI EU QUERIA SABER COMO DESENVOLVER UM ALGORITMO QUE LEIA UMA TEMPERATURA EM GRAUS CELSIUS E CONVERTA PARA FAHRENHEIT. F=180*(C+32)/100

#64 | romeu queiroz (06/05/2008)

por favor me ajude
E.1.A.Q Simule as compras em surmercado sabe-se que todos os produtos tem codigo,preço,quantidade e setor. uma pessoa pode pegar varias vezes o mesmo item. não exister limite de compras para cada produto passado pelo caixa deve ser informado um subtotal. ao final o programa deve mostrar todos itenas quantidades de cada um e total a ser pago ( use a criatividade)

#65 | romeu queiroz (06/05/2008)

E.1.A.Q Mostre todos os multiplos de 5 existentes entre 1 e 1000

#66 | romeu queiroz (06/05/2008)

E.1.A.Q Dado um valor ele informa seu dobro.tiplos e quaduplos simultaneamente.

se a alguem sabe me responda por favor e para amanha

#67 | Caroline Rodrigues (08/05/2008)

Nossa! sou iniciante de um curso técnico de informática..
Parabéns aí, Thiagão! Fui muito bem exclarecida!

#68 | karine (10/05/2008)

gostaria de saber cm se faz um teste de mesa …desde ja agradeço..

#69 | Irã Pezos (12/05/2008)

Sou estudante de Engenharia e gostaria de esta atualizado quando ao problemas e soluções de algoritmos livres e de repitação

Grato

Irã Pezos

#70 | Carlos Luiz Silva Meirelles (13/06/2008)

estou fazendo curso de informática gratuito patrocindo pelo estado.
já se passaram 04 meses,e até agora não consegui aprender nada sobre algoritmo.
será que te alguma material mais simples, para aprender.

#71 | Aline Celestrino Bento (19/06/2008)

o que É ALGORITMO=exemplo:35:7
porque eu ñ sei

ALINE

#72 | Matheus Eduardo Maura (30/06/2008)

Faço engenharia eletrica-eletronica(UNIRP SÃO JOSE DO RIO PRETO), e gostei muito da forma como esta explicado, quero contar com o auxilio de voces para manter-me informado sobre materias deste nivel, um abraço e boa tarde!

Escreva um comentário

Dados pessoais

Seu e-mail não será publicado, mas você deve informá-lo para o autor poder responder seu comentário.

HTML 4.01 Strict: Você pode usar as seguintes tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Artigos relacionados:

Nenhum post relacionado.

53 assinantes

Mais artigos

Comentários recentes

  • Matheus Eduardo Maura: Faço engenharia eletrica-eletronica( UNIRP SÃO JOSE DO RIO PRETO), e...
  • rafael: muito legal o artigo mas teria como resolver esse algoritmo nao consegui de jeito nenhum,...
  • Roger: Bom artigo. Podia atualizar esse site
  • Aline Celestrino Bento: o que É ALGORITMO=exemplo:35 :7 porque eu ñ sei ALINE
  • Claudio: eu gostaria de saber este algoritmo: faça um algoritmo que determine, para um digrafo,...
  • ingrid morgana gomes paes: que bacana que legau isso e emtesamte e legau para apremder mais a...
  • Filipe Névola: filipe.bico@hotmail. com
  • Filipe Névola: Boa noite, gostaria de saber se você tem alguma implementação de menor caminho...
  • Carlos Luiz Silva Meirelles: estou fazendo curso de informática gratuito patrocindo pelo estado....
  • Maria Regina de Queiroz: Olá Tiago, li os seus artigos e gostei muito, gostaria se possivel que...

Categorias

Escrevo também...

  • Tiago Madeira
    Site pessoal e blog do autor destes artigos
  • Mal Vicioso
    Blog sobre filosofia e sobre a hipocrisia da sociedade

Links

Sobre o design

Este design foi copiado do CSS Zen Garden e modificado com autorização de seu autor, Gunta Klavina.

Licença

Todo o conteúdo deste site (incluindo textos, imagens, arquivos de áudio e quaisquer outros trabalhos), exceto quando especificado o contrário, está licenciado por Tiago Madeira sob uma Licença Creative Commons.

HTML 4.01 gerado por WordPress em 0.767 segundos.