Conceitos básicos de algoritmos

Operações relacionais e lógicas Operações Aritméticas variáveis Tipos de dados Estruturas Aninhadas algoritmos

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 >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.
recentes antigos mais votados
Notificar
Souza
Visitante
Souza

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
Visitante
Elaine Cecília Gatto

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
Visitante
Roniere Rezende

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

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

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
Visitante
Roniere Rezende

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

Obrigado pela atenção!

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

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
Visitante
Roniere Rezende

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
Visitante
Elaine Cecília Gatto

poxa que bom!!! fico muito feliz mesmo

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

=) testando comentários ....

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

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

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Maravilha!

Roniere Rezende
Visitante
Roniere Rezende

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

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

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