Conceitos básicos de algoritmos

Confira os conceitos básicos de algoritmos, visando desenvolver uma solução de software independente de linguagem de programação.
PSEUDOCODIGO bubble sort switch case

Olá pessoal!!! A partir de hoje daremos início a uma sequencia de artigos sobre ALGORITMOS. Esses artigos tem como objetivo apresentar aos leitores os conceitos básicos fundamentais para desenvolver uma solução de software independente de linguagem de programação. Será um prazer estar com vocês nessa caminhada.

Com certeza, a maioria de vocês já deve programar em alguma linguagem, C ou C++, por exemplo, portanto, devem conhecer os recursos que as linguagens fornecem. Pode ser que alguns leitores estejam começando nesta fantástica área, e ainda não conhecem as técnicas de algoritmos, estes encontrarão aqui tudo o que precisam para aprender a desenvolver software.

Dessa forma, o primeiro passo antes de sair desenvolvendo um software em uma determinada linguagem, é conseguir abstrair ao máximo o problema a ser resolvido, identificando todos os fatores e situações envolvidos no contexto do problema e, a partir deste levantamento, desenvolver um algoritmo que solucione este problema. De acordo com o que foi identificado, vocês também poderão escolher qual a melhor linguagem a ser utilizada para desenvolver a solução, já que existem diversos tipos de linguagens de programação, mas este tópico abordaremos mais pra frente, em outro artigo.

Para entender os conceitos básicos sobre algoritmos, vamos acompanhar os slides a seguir:

 
 

Lógica de programação

 

Lógica de programação significa o uso correto das leis de pensamento, da “ordem de razão”, de processos de raciocínio e simbolização formais, objetivando racionalidade e o desenvolvimento de técnicas que cooperem para produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.

Devemos usar a nossa lógica para desenvolver um software e, em Computação, lógica é a base para tudo. A Computação é resultado de duas grandes áreas, a filosofia e a matemática, assim como as Engenharias são frutos das grandes áreas matemática, física e química. Portanto, a base das ciências exatas é necessária para quem quer trabalhar nessa área.

Um algoritmo é uma forma de organizar a sua lógica, a solução para o problema que está solucionando. Normalmente, um algoritmo é uma sequência de passos, em ordem e sem ambiguidade, que deve ser seguida para resolver um problema. Já a programação é referente à execução dessas instruções – passo a passo – no computador.

A Figura 1 ilustrada no Slide 5 apresenta o FLUXOGRAMA de construção de um algoritmo, isto é, os passos que você deve seguir para desenvolver a sua solução para o problema em computação – um fluxograma é uma forma de representação gráfica de algoritmos.

O primeiro passo é entender o problema que você precisa resolver, com a maior abstração e precisão possível, desenvolvendo assim a primeira versão do seu algoritmo. O segundo passo consiste em melhorar o algoritmo inicial, tentando enxergar todas as situações possíveis que podem ocorrer, tentando remover redundâncias e, assim, otimizar os passos.

Faça isso, quantas vezes forem necessárias, normalmente, quanto mais algoritmos você desenvolve, mais o seu grau de abstração aumenta, ou seja, maior qualidade terá. Quando chegar à sua versão final do algoritmo, teste-o, execute quantas vezes forem necessárias, avaliando todas as possibilidades imagináveis e inimagináveis. Se encontrar erros, falhas ou problemas, tente resolve-los modificando o seu algoritmo. Após a bateria de testes, identificação de falhas e correção das mesmas, você já tem um algoritmo pronto para ser traduzido para um computador. Veremos como realizar os testes de algoritmos em breve (na mão!).

Os slides apresentam um exemplo de algoritmo: TROCAR UMA LÂMPADA. No slide 7 é apresentada uma versão de um algoritmo para solucionar este problema, que consiste de seis passos. Entretanto, esta solução ainda não é adequada, por isso, no slide 8, é apresentada outra versão, que ordena corretamente a execução dos passos do algoritmo. O slide 9 apresenta uma versão um pouco mais detalhada do mesmo algoritmo e, o slide 10, uma versão com ainda mais detalhes, considerando outras situações.

Nos algoritmos dos slides 7 e 8, os passos são simples, já nos algoritmos dos slides 9 e 10, os passos contêm subpassos e a palavra ENQUANTO aparece com frequência. Essa palavra é conhecida como palavra chave, pois refere-se a um comando de loop, isto é, enquanto determinada condição (ou situação) não terminar, aqueles passos continuarão a ser repetidos, até se atingir a condição necessária. Falaremos mais sobre esses comandos particulares em artigos posteriores.

Finalizando, tente construir algoritmos para as situações listadas abaixo. Se tiver dúvidas, deixe-as nos comentários ao final do artigo ok!

  1. Arrumar a cama;
  2. Fazer uma ligação telefônica a partir de um SmartPhone;
  3. Fazer uma ligação telefônica a partir de um telefone fixo;
  4. Sacar R$40,00 de um caixa eletrônico;
  5. Trocar um pneu.

Outros artigos da série

Tipos de dados para uso em algoritmos >>
13 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Souza
Souza
18/10/2016 09:48

Eu já havia me interessado por um assunto mais adiante e até comentei nele, mas eu tinha que, como dizem, começar do começo.

Só agradeço por compartilhar seus conhecimentos.
Gosto muito dessa área.
Um dos meus hobby’s é ficar desenhando (isso mesmo usando caneta e lápis) portas lógicas. Construindo Full Adders, Half Adders, X bits multiplier, S bit divider. Coisas do tipo.
E um programinha show que gosto para testar é o Logisim. Dá para simular muita coisa nele. Inclusive “computadores bem completos” ou quase.
Vamos em frente.

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Souza
18/10/2016 09:58

Oi!!! Sim, eu já usei o Logisim e também gosto muito de desenhar circuitos. Muito Obrigada Souza, continue acompanhando as séries ok! Até

Roniere Rezende
Roniere Rezende
07/10/2016 19:17

@elainececliagatto:disqus, você tem algum ou alguns artigos sobre como programar em linguagem C microcontroladores?

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Roniere Rezende
13/10/2016 15:32

Oi Roniere

Aqui mesmo no site do Embarcados tem alguns artigos que falam sobre isso, preciso só dar uma pesquisada pra te passar certinho.

Sei que alguns livros em inglês mostram detalhes da linguagem C em baixo nível, só dar uma olhada no sumário que você encontrará o tópico relativo.

Muito Obrigada

Roniere Rezende
Roniere Rezende
Reply to  Elaine Cecília Gatto
13/10/2016 16:05

@elainececliagatto:disqus , você pode me indicar alguns desses livros?

Obrigado pela atenção!

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Roniere Rezende
13/10/2016 16:57

Roniere, vou te indicar alguns que tenho anotados aqui e acredito que vão te ajudar: BREY, B. B. The Intel microprocessors: 8086 – 8088, 80186 – 80188, 80286, 82386, 80486, Pentium, Pentium Pro Processor, Pentium II, Pentium III, Pentium 4, and Core2 with 64 – Bit Extensions : architecture, programming, and interfacing. 8. ed. Índia: Prentice Hall, 2012. IRVINE, K. Assembly language for x86 processors. 6. ed. Upper Saddle River, Estados Unidos: Prentice Hall, 2007. TOCCI, R. J.; AMBROSIO, F. J. Microprocessors and Microcomputers: hardware and software. 6. ed. Upper Saddle River, Estados Unidos: Prentice Hall, c2003. KUMAR, N. S.;… Leia mais »

Roniere Rezende
Roniere Rezende
07/10/2016 19:13

Ficaram muito bons os artigos @elainececliagatto:disqus! Eu li todos até o momento e ao mesmo tempo procurando outros materiais para aulixiar o aprendizado. Hoje já tenho um bom conhecimento em C, e estou aprendendo C++, Java e Python. Os seus artigos ajudaram muito!

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Roniere Rezende
13/10/2016 15:30

poxa que bom!!! fico muito feliz mesmo

Elaine Cecília Gatto
Elaine Cecília Gatto
03/06/2016 18:07

agora foi @Fabio_Souza_Embarcados:disqus desculpa a demora @roniererezende:disqus
em breve mais artigos =)

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Elaine Cecília Gatto
03/06/2016 18:48

Maravilha!

Elaine Cecília Gatto
Elaine Cecília Gatto
03/06/2016 18:07

=) testando comentários ….

Roniere Rezende
Roniere Rezende
25/05/2016 21:54

Haverá continuidade nas postagens? Tenho muito interesse sobre o assunto. Obrigado!

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Roniere Rezende
03/06/2016 17:15

Olá Roniere, tudo bem? A Elaine já está preparando a segunda parte. Será uma serie bem legal sobre algoritmos. Espero que goste. Abraços

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H