Tutorial de algoritmos

1337

Membro
Registrado
Maio 31, 2018
Mensagens
8
Pontos de reações
8
Idade
51
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:





Leia os valores dos catetos





Poderia ser refinada para:





Leia os valores dos catetos
Leia a
Leia b





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





Trocar lâmpada

1: Ter os elementos necessários

2: Desligar o interruptor

3: Trocar a lâmpada

4: Verificar se a lâmpada nova funciona

5: Se funcionar, terminar

6: Se não funcionar, repetir o passo 2





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





1: Ter os elementos necessários
Escada, lâmpada nova
2: Desligar o interruptor

3: Trocar a lâmpada
Subir na escada
Tirar a lâmpada velha
Colocar a lâmpada nova
Descer da escada

4: Verifica se a lâmpada nova funciona
Ligar o interruptor

5: Se funcionar, terminar

6: Se não funcionar, repetir o passo 2





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:





Escada, lâmpada nova
Desligar o interruptor
Subir na escada
Tirar a lâmpada velha
Colocar a lâmpada nova
Descer da escada
Verifica se a lâmpada nova funciona
Ligar o interruptor
Se funcionar, terminar
Se não funcionar, repetir o passo 2







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:





1: Defina o tipo das variáveis

2: Leia os números

3: Soma os números

4: Escreva a soma dos números





Agora, refinado:





1: Defina o tipo das variáveis
a, b, soma: inteiro
2: Leia os números
Leia a
Leia b
3: Soma os números
Soma = a + b
4: Escreva a soma dos números
Escreva soma





Como resultado final teríamos:





Programa adicionar
Variáveis
A, b, soma: inteiro
Inicio
Leia a
Leia b
Soma = a + b
Escreva (soma)
Fim





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





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.
 

Mex

Velha Guarda
Registrado
Janeiro 16, 2018
Mensagens
179
Pontos de reações
120
Localização
Recife
Entendi tudo
 

harryp3

Velha Guarda
Warface VIP
Paladins VIP
Registrado
Janeiro 27, 2018
Mensagens
200
Pontos de reações
94
ctrlc
 

harryp3

Velha Guarda
Warface VIP
Paladins VIP
Registrado
Janeiro 27, 2018
Mensagens
200
Pontos de reações
94
ctrlv
 

ThomasMagma

Banido
Membro
Registrado
Novembro 1, 2020
Mensagens
4
Pontos de reações
0
Idade
36
Aquí dejo los algoritmos para resolver todos los casos posibles que pueden salir a la hora de resolver las 2 últimas aristas del 5x5, tal y como los ejecuto yo. Estos algoritmos se pueden aplicar también a cubos de tamaño superior como el 6x6, 7x7, etc...

LoL: Uw R U R F R F R Uw
LoLoL: Dw R U R F R F R Dw
LoLWaT: Uw Dw R U R F R F R Dw Uw

P-Parity: Rw2 F2 U2 Rw2 U2 F2 Rw2
Parity: Rw2 B2 U2 Lw U2 Rw U2 Rw U2 F2 Rw F2 Lw B2 Rw2
D-Parity: Rw U2 3Rw F2 Rw U2 3Lw U2 Rw U2 3Lw U2 Rw
2-Swap: Lw U2 Lw U2 F2 Lw F2 Rw U2 Rw U2 Lw2

N-a: Lw2 F2 U2 Rw U2 Rw2 F2 Rw U2 Lw2 U2 F2 Lw
N-b: Rw2 F2 U2 Rw U2 Rw2 F2 Rw U2 Rw2 U2 F2 Rw

Check-R: Rw U2 Rw2 U2 Rw U2 Rw U2 Rw U2 Rw2 U2 Rw
Check-L: Lw U2 Lw2 U2 Lw U2 Lw U2 Lw0 U2 Lw2 Uw Lw
Chess: Rw U2 Rw U2 x U2 Rw U2 x Rw F2 3Rw2 B2 x 3Lw U2 Rw2
 

Membros que estão visualizando este tópico (Total: 1, membros: 0, visitantes: 1)

Topo