Ir para conteúdo
Faça parte da equipe! (2024) ×

Tutorial de algoritmos


Arkanun1000
 Compartilhar

Posts Recomendados

  • Velha Guarda

1 – O que é algoritmo? Pra que algoritmo? Como criar algoritmos?

O que é algoritmo? Pra que algoritmo?

 

A programação estruturada é “a arte ou técnica de construir e formular algoritmos de forma sistemática.” [Niklaus Wirth]

 

Segundo Wirth, “programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados”.

 

Bem vindos, aspirantes a programadores ao primeiro tutorial de introdução aos algoritmos, com as breves palavras do criador da linguagem Pascal, Niklaus Wirth, começamos a nossa aula de algoritmos que é a base da programação estruturada, vamos à definição

 

Algoritmo é a descrição de comandos que, obedecidos, resultam numa solução finita de ações.

 

Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito produz um estado final previsível e bem definido.

 

O algoritmo, em termos de computação, é a ordem que você dá para o computador.

 

O algoritmo não é a exposição do problema, mas a exposição de sua solução, somente.

 

É necessário pensar de forma algorítmica (isso existe? O.o) para resolver problemas grandes. Atualmente é possível cursos de engenharia ensinado algoritmos.

 

Depois de definido o algoritmo, basta segui-lo para resolver um mesmo problema a qualquer momento.

 

Como criar algoritmos?

 

Para criar algoritmos, você precisa fazer refinamentos, para que, por exemplo, um computador possa entender. Um refinamento é transformar uma solução grande em uma solução ou soluções pequenas, por exemplo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Poderia ser refinada para:

 

É necessário se cadastrar para acessar o conteúdo.

 

Vamos fazer um algoritmo de como trocar uma lâmpada fazendo os refinamentos posteriormente

 

É necessário se cadastrar para acessar o conteúdo.

 

Aqui temos o exemplo bruto de como trocar uma lâmpada, agora vamos refinar

 

É necessário se cadastrar para acessar o conteúdo.

 

Em termos humanos, esse poderia ser um algoritmo para trocar uma lâmpada. Como podemos perceber, nem tudo o que é escrito no algoritmo inicial precisa ser refinado (passos 2, 5 e 6), nesse caso, consideramos que a instrução já está refinada. Depois de feito o refinamento, podemos eliminar os comandos refinados. A exposição da solução e o refinamento são importantíssimos para o iniciante, porém, com a experiência em criar algoritmos podemos chegar a criá-los (algoritmos complexos, inclusive) sem utilizar o refinamento, programando diretamente na linguagem desejada. Temos, a seguir, o algoritmo da lâmpada, depois do refinamento:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

2 – Como o computador trabalha com algoritmos?

Óbvio que o seu computador não vai trocar uma lâmpada, a não ser que você vá trocar uma lâmpada ou criar um robô que troque lâmpadas (o que não é uma má ideia), qual a aplicação prática da programação ou algoritmos nos computadores? O algoritmo é utilizado na metodologia de programação estruturada (vide Glossário) que é o que vamos aprender aqui. O algoritmo, quando utilizado em computadores, pode ser feito para resolver problemas matemáticos, problemas de armazenamento de informações, construção de jogos, etc.

 

Aqui, temos um exemplo prático de um algoritmo simples para computador que soma dois números inteiros:

 

É necessário se cadastrar para acessar o conteúdo.

 

Agora, refinado:

 

É necessário se cadastrar para acessar o conteúdo.

 

Como resultado final teríamos:

 

É necessário se cadastrar para acessar o conteúdo.

 

Existem diversas linguagens de programação, essa é apenas uma tradução de uma delas (PASCAL). Nenhum computador entende as linguagens de programação, pois os programas são apenas letras e caracteres, e o computador só entende zeros-e-uns. É preciso um tradutor para converter o que esse programa diz (que é o q queremos) para algo q o computador entenda, esse tradutor chama-se compilador.

 

A estrutura do computador digital (e existe outro?)

As informações que você manda para o computador (como o que vc digita no teclado) são enviadas para a unidade de entrada que traduz tudo isso em pulsos elétricos (zeros-e-uns) e manda pra memória que armazena os dados e o programa manipulador desses dados. Entendeu? Continuando…

A memória manda esses dados para a unidade de controle que controla(redundância :p) o tráfego de dados, interpretando esses dados e mandando-os para a unidade de lógica e aritmética (ALU) que faz todos os cálculos aritméticos e qualquer manipulação de dados numéricos ou não. Daí, os dados voltam para a unidade de controle, que pode mandar os dados de volta para a memória ou para a unidade de saída (seu monitor, no caso).

As definições individuais, você encontra no glossário.

Não entendeu? Vô desenhar

 

fluxograma1.png?w=702

Entendeu? Eu sei q foi feio no paint, whatever...

É assim que o computador trabalha com algoritmos, o computador vai traduzir tudo o que vc escreveu para a linguagem de máquina (zeros-e-uns, impulsos elétricos etc.).

 

 

3 – Como fazer algoritmos que o computador entenda?

Com a criação do compilador para as linguagens de programação, os programadores não tinham mais que se preocupar com como a máquina lidaria com os dados e sim com a solução do problema em si, antes de responder a pergunta do post vamos explicar sobre as linguagens de programação.

 

As linguagens de programação podem ser divididas em linguagens de programação de alto nível e baixo nível, porém alguns cientistas da computação dizem que existem linguagens de médio nível.

 

Linguagem de alto nível – Linguagem mais próxima da linguagem humana, quanto mais próxima da linguagem humana e mais fácil de entender para leigos, maior o nível.

 

Linguagem de médio nível – Linguagem que possui a sintaxe de alto nível mas que também pode se comunicar com a máquina através do baixo nível

 

Linguagem de baixo nível – Linguagem que mais se aproxima da linguagem de máquina, marcada por conter abreviações que ajudam na sintaxe

 

Linguagem de máquina – É a única linguagem que a máquina entende, composta basicamente de zeros-e-uns e códigos hexadecimais.

 

As linguagens de programação e seus níveis

 

Linguagem de alto nível – Visual Basic, Ruby

 

Linguagem de médio nível – C/C++, FORTH

 

Linguagem de baixo nível – Assembly

 

Nota: as linguagens de médio nível são comumente chamadas de alto nível.

 

Ok, para fazer o computador entender o seu programa, você precisa escolher uma linguagem de programação e entender sua sintaxe para que vc saiba como expressar seus algoritmos através dela.

 

Deixando claro algumas coisas

 

Vamos explicar os tipos de compiladores

 

Compiladores simples – são os compiladores cuja função é compilar o código e verificar possíveis erros.

 

Compiladores com ambiente de Desenvolvimento – são os compiladores que possuem um editor de texto interno. Geralmente esse editor de texto marca as palavras-chave com cores diferentes facilitando a leitura do código.

 

qRXaV1L.png

Link para o comentário
Compartilhar em outros sites

Excelentississimo tópico!

Muito bem explicado e elaborado e fácil de entender.

 

Reparei em duas coisas. Uma delas foi no código de trocar a lâmpada kkk acho que eu montaria a ordem diferente da sua, mas isso não tem importância, o que importa é o programa funcionar.

 

A outra coisa que reparei e que eu não sabia, até por que eu sou leigo - ainda - no assunto, é que C++ é uma linguagem de médio nível e Assembly é uma linguagem de baixo nível. Pensei que fosse o contrário.

Algumas nascem sob estrelas de sorte; outros, sob estrelas de azar. Mas eu só posso dizer que eu farei o possível, sejam quais forem as minhas estrelas.

Link para o comentário
Compartilhar em outros sites

  • Velha Guarda
Reparei em duas coisas. Uma delas foi no código de trocar a lâmpada kkk acho que eu montaria a ordem diferente da sua, mas isso não tem importância, o que importa é o programa funcionar.

Sim, desde que o resultado fosse igual o algoritmo estaria certo.

Não existe "certo" ou "errado" propriamente dito, mas sim uma logica mal montada/explicada.

Abçs!

qRXaV1L.png

Link para o comentário
Compartilhar em outros sites

Sim, desde que o resultado fosse igual o algoritmo estaria certo.

Não existe "certo" ou "errado" propriamente dito, mas sim uma logica mal montada/explicada.

Abçs!

Exatamente. Deu pra me entender hehe.

Uma lógica mal montada/explicada.

 

Excelente!

Algumas nascem sob estrelas de sorte; outros, sob estrelas de azar. Mas eu só posso dizer que eu farei o possível, sejam quais forem as minhas estrelas.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.