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.

Como representar um algoritmo?

January 5, 2006

Este artigo é o segundo da série sobre algoritmos. Se você ainda não leu, leia a parte 1: O que é um algoritmo?.


No primeiro artigo, expliquei o que é um algoritmo e até citei exemplos do cotidiano, como acordar ou falar com outra pessoa. Talvez você nem tenha se dado conta, mas usando listas numeradas eu representei os algoritmos ali presentes, inclusive destacando a entrada e a saída de cada situação-problema. Mas não é sempre assim que representamos algoritmos.

Não existe uma regra padrão para a representação de algoritmos. Cada pessoa escreve de forma diferente, mas o importante é ser legível e convencionado. Por exemplo, o livro Algoritmos: Teoria e Prática traz nas páginas 14 e 15 convenções do pseudocódigo que utiliza no livro inteiro. Já eu, quando vou passar o mesmo algoritmo, utilizaria outro tipo de código, você pode utilizar outro, e por aí vai. Mas todos têm que ter o mesmo foco: legibilidade e fácil implementação para qualquer linguagem.

Os pseudocódigos costumam parecer um código em linguagem Pascal traduzido para a sua língua. :) Usam quase sempre estruturas que estamos acostumados a usar na programação, como se, enquanto, para, arrays, etc. Eles existem para que o algoritmo seja de fácil leitura para qualquer programador, que programe em qualquer linguagem "normal". Veja o pseudocódigo do Insertion Sort, um algoritmo de ordenação de vetores bastante simples:

para j LaTeX: leftarrow{} 2 até comprimento do vetor, faça
	elemento LaTeX: leftarrow{} vetor[j]
	i LaTeX: leftarrow{} j - 1
	enquanto i > 0 e vetor[i] > elemento, faça
		vetor[i + 1] LaTeX: leftarrow{} vetor[i]
		i LaTeX: leftarrow{} i - 1
	fim-enquanto
	vetor[i + 1] LaTeX: leftarrow{} elemento
fim-para

Se você programa em qualquer linguagem, você não terá dificuldade em traduzir esse pseudocódigo para ela. O pseudocódigo é sempre uma maneira bem simples de escrever o código. Veja por exemplo, o mesmo código em C:

for (j=2; vetor[j]!=NULL; j++) {
elemento = vetor[j];
for (i = j-1; i > 0 && vetor[i] > elemento; i--) {
vetor[i+1] = vetor[i];
}
vetor[i+1] = elemento;
}

Você deve ter percebido que ao invés de usar três linhas com uma declaração, um condicional e um incremento, eu juntei todos num só for. Mas por isso o algoritmo é bem simples e sempre parte do princípio de que a sua linguagem é simples. Veja só a implementação do código em Pascal e compare-a com a do pseudocódigo:

for j:=2 to comprimento, do begin
elemento := vetor[j];
i := j-1;
while i>0 && vetor[i] > elemento, do begin
vetor[i+1] := vetor[i];
i := i-1;
end;
vetor[i] := elemento;
end;

Linha por linha ela é exatamente igual! A única diferença é que o pseudocódigo é traduzido... Geralmente os pseudocódigos são parecidos sempre com essa base e suas implementações não são muito diferentes. E vai ser sempre dessa maneira que eu vou representar os algoritmos (usando pseudocódigos e alguns traduzindo para C para mostrar implementações)

Quando entrarmos no assunto de ordenação de vetores, analisaremos esse algoritmo do Insertion Sort e outros, mas por enquanto vamos ficando por aqui.

Qualquer dúvida, sugestão ou notificação de erro (considerando que nunca programei em Pascal, acho bem provável que eu tenha errado alguma vírgula ali); 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

37 comentários

#1 | Mônica (24/02/2006)

Eu estou fazendo faculdade de sistema de informação, na máteria de algoritmo eu estou meio que boiando, gostaria muito de começar a entender melhor, nesta matéria acima eu tenho um pouco de dificuldade para entender, gostaria que se podessem me mandar alguma coisa de inicio de algoritmo onde eu podesse entender melhor como montar um. com a questão e a resolução.
Obrigada!!!!

#2 | Fabio (06/03/2006)

Eu preciso de uma ajuda urgentimente,pois tenho um trabalho de 20 questoes sobre Algoritmos que tenha:para,enquanto e repita.

#3 | prekopio (20/03/2006)

epa, mas quem e’ que inventou esta cena ? n tinham mais nada para fazer LOL

[…] O artigo está em outro local agora: Como representar um algoritmo? […]

#5 | Renan (20/03/2007)

pohhaa… na aula de logica e programaçaum eu recebi uns algoritmos para converter em Pseudocódigos ….. mas eu naum sei fazeh q merda… alguem me ajuda…

#6 | rafaela (21/03/2007)

ler número calcular raíz quadrada e imprimi-lo

#7 | douglas (11/05/2007)

gostaria que se me tira-sse uma dúvida,aliás duas:

1_ o que faz um (1) algoritmo ser melhor que o outro?

2_ quais os critérios que são ultilizados para avaliar a qualidade de um algoritmo?

se fosse possíovel gostaria que me exclarecesse estas dúvidas. Obrigado

#8 | luanna (15/05/2007)

Eu estou fazendo faculdade de sistema de informação, na máteria de algoritmo eu estou meio que boiando, gostaria muito de começar a entender melhor, nesta matéria acima eu tenho um pouco de dificuldade para entender, gostaria que se podessem me mandar alguma coisa de inicio de algoritmo onde eu podesse entender melhor como montar um. com a questão e a resolução.
Obrigada!!!!

#9 | Alessandra (26/05/2007)

gostaria que se me tira-sse uma dúvida,aliás duas:

1_ o que faz um (1) algoritmo ser melhor que o outro?

2_ quais os critérios que são ultilizados para avaliar a qualidade de um algoritmo?

se fosse possíovel gostaria que me exclarecesse estas dúvidas. Obrigado

#10 | Tomy (14/06/2007)

Olá, gostaria de uma dica na feitura de um algoritmo para dizer se um ano é ou não bissexto. Obrigado!!! Se a dica puder vir rápido, agradaço mais ainda. Valeu!!

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

Algoritmo para determinar se um ano é bissexto

Basta que você faça o seguinte: receba a variável ano, cheque se é divisível por 4. Os números divisíveis por 4 são anos bissextos, os outros não.

receba Ano

se Ano for divisível por 4:
imprima “É bissexto.”
senão:
imprima “Não é bissexto.”

Em C:

#include <stdio.h> int main() {   int ano;    scanf("%d", &ano);   if (!(ano%4)) {      printf("É bissexto.n");   } else {      printf("Não é bissexto.n");   }    return 0;}
#12 | joao (18/06/2007)

cara estou precisando do programa para ordenação de vetores usando funtion.

#13 | Tiago Madeira (19/06/2007)

Você sabe usar uma função?

#14 | Pindio (29/06/2007)

Pessoal, segue um programa muito legal para ajudar na construção de algoritmos http://diuf.unifr.ch/softeng/student-projects/completed/kalt/NSD.html
Ele desenha diagramas de Nassi-Shneiderman. É uma versão antiga, feito em Delphi, estou tentando arranjar um tempo para passá-lo para .Net.

#15 | Renata (16/09/2007)

Estou com um pouco de dificuldades de entender algoritmos,por favor meajude.

#16 | natalya (11/10/2007)

Hola estou com um pouco de dificuldades de entender pq reamente o que eu queria entender e algoritmo pagerank alguma coisa do tipo !!!

#17 | Emilia baltazar (15/10/2007)

Aló
Eu sou Emilia Baltazar, estou a fazer Engenharia Informática e Comunicação, tenho muitas dificuldades na elaboração de um programa na Linguagem Pascal, Gostaria de obter alguns exercícios ou como devo fazer para melhor perceber

#18 | Emilia Baltazar (15/10/2007)

quero saber como se elabora um programa na linguagem pascal

#19 | Sidney (28/11/2007)

Exemplo de algoritmo me passa ai pra mim entender melhor
estou fazendo um traballho e presciso de um explicação?” exemplo?

#20 | tony (06/12/2007)

Eu estou fazendo faculdade de ciencia da computação, na máteria de algoritmo eu estou meio que boiando, gostaria muito de começar a entender melhor, nesta matéria acima eu tenho um pouco de dificuldade para entender, gostaria que se podessem me mandar alguma coisa de inicio de algoritmo onde eu podesse entender melhor como montar um. com a questão e a resolução.
Obrigado!!!!

#21 | Edson (29/12/2007)

O seu algoritmo para verificar se o ano é bissexto está faltando a situação do ano termindado em 00 que neste caso teria que ser divisível por 400 e não por 4.
2100 é divisível por 4, mas não é (ou será) bissexto.
Talvez ficasse:
Receba ano
Se ano for divisível por 400 então
imprima “É bissexto”
senão
Se ano é divisível por 4 então
imprima “É bissexto”
senão
imprima “Não é bissexto”

#22 | Tiago Madeira (29/12/2007)

Na verdade, você está incorreto. Sempre que o ano termina em 00 ele é
bissexto, porque é divisível por 4.

#23 | Edson (30/12/2007)

Está realmente incorreto, pois 1900 não é divisível por 400 e o algoritmo que eu coloquei manda verificar se é divisível por 4 quando não for por 400 e aí, está informando que se for divisível por 4, é bissexto (então neste contexto 1900 seria bissexto e não é).

Consertando o algoritmo

Receba ano
Se ano é divisível por 100 então
verifique se ano é divisível por 400
se ano NÃO for divisível por 400
imprima “Não é bissexto”
senão
imprima “É bissexto”
Se ano NÃO é divisível por 100 então
verifique se ano é divisível por 4
se ano NÃO for divisível por 4
imprima “Não é bissexto”
senão
imprima “É bissexto”

#24 | Tiago Madeira (30/12/2007)

Hmmm… Interessante, não sabia disso.

#25 | alisson Ribeiro (11/03/2008)

Elabore um algoritimo que emplemente uma calculadora, com as funções de somar,subtrair,multiplicar e dividir oprograma devera pedir ao ultilizador os dois operandos e perguntar qual operação pretedinta.

Como resolver isso…

#26 | weliton (15/03/2008)

oi, faço faculdade de engenharia civil e to estudando algoritmo, mas nao consigo entender como funciona a montagem de um algoritmo.Fico boiando nessa aula.Se alguem puder me mandar um material pra eu poder começar eu ficarei muito grato.

desde ja brigado pela força…

Weliton Farias

#27 | Alessandra (30/03/2008)

Eu to fazendo facu de analise de sistema e não sei como fazer um algoritimo ta muito dificil me ajude por favor.

#28 | edielson roberto parronchi (10/04/2008)

esta era a questão e eu não sei:
faça um algoritimo que calcule a media ponderada final sendo os pesos 1,2,3,4 respectivos os bimestre dos anos.
usando o exercicio anterior, faça um algoritmo que diga se o aluno esta reprovado, em exame ou aprovado sendo reprovado menor que 4e aprovado maior ou igual a 7

vlw

#29 | pindio (15/04/2008)

Pessoal, em relação ao ano bissexto, segue
Se ano módulo 400 é 0 então bissexto
Senão se ano módulo 100 é 0 então não_bissexto
Senão se ano módulo 4 é 0 então bissexto
Senão não_bissexto

#30 | pindio (15/04/2008)

Pessoal, fazer algoritmo tem haver com resolver problemas. É necessário ter uma estratégia, é preciso organizar o raciocínio. Tem um livro legal que recomendo a todos.

A arte de resolver problemas, G.Polya
Interciência

#31 | felippe santana (10/05/2008)

estou com dificuldade de desenvolver algoritmos em linguagem pascal de método de posição falsa,método iterativo linera,bisseção e queria uma idéia

#32 | Bruna Santos (19/05/2008)

Oiiiii

estou fazendo ciências da computação, no 1º semestre, eu tava indo muito bem em algoritmos só que to começando a me confundir, com o “caso” e o “enquanto…faça” na linguagem pascal. Gostaria de saber se vc poderia me dar umas dicas, se tem alguma apostila boa para estudar, pois nessa quarta terei prova disso

grata

Bruna

#33 | Joss (22/05/2008)

Estou com bastante dificuldades em um conteúdo que devo fazer uma prova neste sábado próximo. Esse conteúdo é algortimo.
podes me ajudar nesse sentido?

#34 | Frederico Lopes (23/05/2008)

Fala Tiago.. blz?
cara, eu li esse artigo ae sobre Algoritmos, e gostei muito! Eu estou fazendo facul de Eng Civil na UNITAU em taubaté e nao sei se vou ter essa matéria… mas meu trabalho está me forçando a aprender de algum jeito… mas isso quero fazer com mais calma… na verdade mesmo eu precisava saber de vc se vc pode me ajudar aqui… trabalho numa fabrica de lajes e eu quero agilizar a producao de vigas aqui, e pelo que eu vi, a arrumação para a produção das vigas nas pistas é feita através do uso de algoritmos… gostaria que vc me ajudasse com isso se possivel…
aguardo contato no msn ou pelo e-mail mesmo! Grato

#35 | robson palma (29/05/2008)

quero um exemplo de como construi um algoritmo usando:
escreva ( )
para
entao
saida
se nao
muito obriga abraço

#36 | Maria Regina de Queiroz (03/06/2008)

Olá Tiago, li os seus artigos e gostei muito, gostaria se possivel que voce me ajudasse faço Analise e Desenvolvimento de Sistemas e estou tendo muita dificuldade na matéria de algorimos gostaria que me ajudasse com o CASO, ENQUANTO REPITA. Desde já fico muito grata.

#37 | rafael (21/06/2008)

muito legal o artigo mas teria como resolver esse algoritmo nao consegui de jeito nenhum, assim é a pergunta:
CRIE UM PROGRAMA QUE CALCULE E ESCREVA O VALOR DE E CONSIDERANDO A SEGUINTE FORMULA: E=1+1/1!+1?2!/1/3!+….1/N!, ONDE N DEVERA SER INFORMADO PELO USUARIO.

esse é o algoritmo se puderem me ajudar agraço ate mais!!!!!!!!!!!!!!

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:

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 1.070 segundos.