Social Icons

Mostrando postagens com marcador Algoritimos. Mostrar todas as postagens
Mostrando postagens com marcador Algoritimos. Mostrar todas as postagens

Python - Conceitos e Iniciação


Python é uma linguagem de programação de alto nível, open source, multiplataforma, interpretada e com uma extensa biblioteca padrão. Criada por Guido van Rossum em 1989, com a primeira versão lançada em 1991, Python, uma homenagem ao grupo humorístico inglês Monty Python, vem com uma sintaxe elegante, simples e clara, sem aqueles montes de “{” e “}” (chaves) por todo o código.

Existem várias linguagens de programação para os mais diversos fins e quem está querendo começar, não sabe qual escolher. Uma das febres é o Java, mas a sua sintaxe é complexa para quem nunca teve contato com programação.
Existem linguagens mais simples como o Pascal, mas não é mais tão usada e está defasada. Por isso o indicado é poder usar uma linguagem atual, que já usufrui das novas tecnologias, mas que seja fácil de aprender e acredito que não existe linguagem que se encaixe mais nesse perfil do que o Python.
O Python ajuda e muito a aprender noções básicas de programação, como também permite a criação de sistemas robustos com bancos de dados. A sua sintaxe é muito simples e lógica. Ele é baseado em palavras curtas em inglês, como print, function, dentre muitas outras.

 Principais características do Python

  • Sintaxe elegante, simples e clara: A sintaxe do Python facilita e encoraja a legibilidade do código, o que o torna mais fácil de manter e reutilizar;
  • Multiparadigmática: OOP, estruturada e procedural;
  • Tipagem forte e dinâmica;
  • Estruturas de dados de alto nível: tuplas, listas de dicionários;
  • Fácil de aprender;
  • Interpretador interativo: shell;
  • Blocos de código são delimitados por endentação!
É possível trabalhar em Python desde pequenas agências até grandes empresas, como Google, Industrial Light & Magic, Nortel, Nokia, Sepro, Interlegis, isto só para citar algumas…Aliás, Python é uma das três linguagens oficiais do Google, sendo adotada na primeira implementação do motor de busca, e hoje é a tecnologia que move o YouTube, entre tantos outros projetos da empresa.
  • Por que Python?
Essa resposta depende do ponto de vista de cada pessoa, mas na minha opinião pessoal eu escolhi a linguagem Python por ser clara e simples de se aprender.
Poderiamos utilizar também a linguagem Java, mas esta dá acesso limitado as funções do sistema operacional, tornando os aplicativos mais limitados.
Além de disso, podem os ainda, se desejarmos, utilizar pontes de outras linguagens com python para suprir quaisquer que sejam as necessidades do aplicativo.
Se você quer usar coisas como Wi-Fi, Bluetooth, etc.. no java terá na minha opnião uma dificuldade maior, pois a implementação por hardware tem q ser puzada do C, então ou você escreve tudo em C ou Mistura tudo com java, mas pode também fazer tudo apartir do Python, como é o caso de muitos programas que usam porta serial por exemplo, para linux, e alguns aplicativos para Symbian...
  • O que podemos fazer com o tal do Python ?
Posso citar alguns exemplos: podemos no caso de aparelhos  Celulares com Symbian manipular eventos de teclas, fazer conexões bluetooth ou wi fi, mandar mensagens SMS, acessar a câmera, fazer chamada s, utilizar informações de contatos e calendário, localizar o aparelho através do sinal GPRS, desenhar gráficos na tela, enfim ... poderia passar o dia todo aqui isso sem contar a aplicação dele em computadores ..

Vamos Trabalhar? 

Sabermos como funciona a sintaxe da linguagem e nos nos familiarizarmos mais.


Para Windows Pode se baixar o IDE Python Clicando aqui.
Sua instalação é simples, igual a qualquer outro instalador (Next, Next, Finish).
Para Linux: você já tem o Python instalado por padrão, diversos pacotes que movem o Linux são feitos em Python.Para Achar seu Python no Linux faça Assim:

- CRTL+ALT+T(abrindo terminal);
- Digite "Python" Sem Aspas, e seu terminal ficará +- assim:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
A melhor forma de aprender a programar é usando um interpretador em modo interativo. Dessa forma você pode digitar comandos linha por linha e observar a cada passo como o computador interpreta e executa esses comandos. Por tanto vamos ao interpretador:

1
2
3
4
5
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
A partir dai, é só executar os comandos. Vamos começar com alguns comandos bem básicos, para nos acortumarmos com o interpretador:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

>>> 2 + 2
4
>>> (1 + 2) * 3
9
>>> list = ["Macelo", 17, "Engenheiro"]
>>> print list[0]
Marcelo
>>> print list[1]
17
>>> print list[2]
Engenheiro
>>> print list[1:]
[17, 'Engenheiro']
>>> print list[:2]
['Marcelo', 17]
>>>
Para sair do interpretador basta apertar Crtl + d ou executar quit().

Eu estou estudando sobre Python também, e conforme for descobrindo coisas interessantes vou postando aqui para compartilhar e aprender também!
Qualquer dúvida ou sugestões é só comentar.

Laços de Repetição

Hoje iremos tratar de um tema de suma importância na programação: Os Laços de Repetição. Em nossos programas já estamos lendo dados do usuário. Imagine o seguinte: vamos fazer uma soma de números. Lemos dois números e realizamos a soma. E se quiséssemos fazer uma soma de, por exemplo, 100 números, ou mesmo uma quantidade X definida pelo usuário? No caso da soma de 100 números, teríamos 100 vezes o comando Leia()? E como faríamos pra ler uma quantidade X de vezes? Sem as estruturas de repetição, sem dúvida, seria bem complicado. Além disso, teríamos um código extremamente grande e repetitivo, com comandos iguais pra fazer as mesmas coisas. Os Laços de Repetição foram criados para solucionar estes problemas, deixando os códigos mais compactos, mais legíveis e mais rápidos de serem desenvolvidos.
Os Laços de Repetição que iremos tratar aqui são o Enquanto, Faça e o Para. Descrevendo-os resumidamente, temos o seguinte:
  • Enquanto: testa a condição antes de executar o bloco de código
  • Faça: executa o bloco de código e depois verifica a condição
  • Para: executa um bloco de código um determinado número de vezes
Vamos começar, então, falando do Enquanto. O enquanto possui um funcionamento bem simples, porém é de grande utilidade. Ele compara uma sentença e executa o bloco de código se a condição for verdadeira. Da mesma forma que, por exemplo, no Se, você pode colocar diversas condições, com o uso dos operadores lógicos e e ou, além do não. A seguir temos o exemplo da sintaxe em algoritmo…
1enquanto (nota > 70) faça
2   comandos...
3fim-enquanto
… e em Pascal…
1while (Nota > 70) do
2begin
3   comandos...
4end;
Dessa forma, utilizamos o Enquanto quando vamos executar uma repetição sem sabermos necessariamente o número de vezes que ele será executado. O looping pode, ainda, não ser executado nenhuma vez, caso a condição não seja satisfeita, ou seja, no Enquanto, testa-se a condição antes de executar o bloco de código.
Outra estrutura de repetição importante é o Repita. Ela possui praticamente o mesmo funcionamento que o Enquanto, porém a condição é testada após a execução do bloco de código. Abaixo, temos a sua sintaxe algoritmica…
1repita
2   comandos...
3enquanto(nota <= 70) e (nota >= 30)
… e em Pascal…
1repeat
2   comandos...
3until(nota <= 70) and (nota >= 30);
Neste exemplo acima, utilizei o operador lógico e para condicionar a repetição. Dessa forma, o looping será executado somente enquanto a variável Nota estiver na faixa entre 30 e 70 (para mais detalhes sobre os operadores lógicos, dê uma olhada no post sobre eles).
Por último, mas não menos importante, temos o Para. Esta estrutura de repetição se diferencia das outras por executar a repetição um determinado número de vezes. Como assim? A execução do Para é executada através da verificação e incremento de uma variável inteira, ou seja, determinamos a quantidade de vezes que a repetição será executada através de um limite para o valor da variável. Meio confuso? Calma, nos exemplos abaixo vai ficar mais claro. Primeiro na forma algoritmica…
1para i = 1 até 50 faça
2   comandos...
3fim-para
… e em Pascal…
1for i := 1 to 50 do
2begin
3   comandos...
4end;
No exemplo acima, temos a variável I funcionando como o contador de execução do looping, sendo incrementado automaticamente a cada execução do bloco de código. Dessa forma, o nosso looping será executado 50 vezes, ou seja, enquanto a variável I for menor ou igual o valor 50. Podemos, em vez do valor 50 colocar outra variável ou uma constante pra controlar a quantidade de vezes que o Para será executado.
O Para também possui uma particularidade interessante, podendo realizar decrementos a cada execução do looping. Dessa forma, podemos, por exemplo, criar contadores decrescentes, ou ainda exibir vetores invertidos (para mais informações sobre vetores, consulte o próximo post). A seguir temos a sintaxe do Para com decremento tanto em algoritmo quanto em Pascal:
1para i = 50 até 1 passo -1
2   Comandos...
3fim-para
1for i := 50 downto 1 do
2begin
3   Comandos...
4end;
Bem, pessoal, acho que é isso. Com o tempo vocês verão que a utilização das estruturas de repetição está sempre presente no dia-a-dia de um programador e tem papel fundamental na construção de um código otimizado. Fiquem atentos, pois no próximo post iremos falar de vetores e matrizes. Até lá e bons estudos!

Estruturas de Repetição "SE" "IF"

Os programas geralmente, baseados em algum dado, selecionam porções do código a serem executadas, realizando operações diferenciadas a cada execução. Para representar essa seleção em nosso programa utilizamos as estruturas de seleção.
A primeira estrutura de seleção que iremos conhecer é o Se. O Se é utilizado quando esperamos por uma condição. O bloco de código referente só sera executado se a condição for verdadeira. A seguir temos um exemplo algoritmico da utilização dessa estrutura e sua implementação em Pascal.
1leia(numero)
2se (numero MOD 2 = 0) então
3   início
4      escreva("O número é par.")
5   fim
1readln(numero);
2if (numero MOD 2 = 0) then
3   begin
4      write('O número é par.');
5   end;
Neste exemplo, lemos do usuário a variável numero. Se o resto da divisão do conteúdo da variável for igual a zero, será mostrada na tela a frase O número é par. A partir disso, podemos criar condições para o nosso programa, executando determinadas tarefas somente se algumas condições forem satisfeitas. Mas e se, por exemplo o número não fosse par? Ele seria ímpar… mas como faríamos isso no programa? A estrutura do Se é composta do Senão, que é executado caso a condição do Se não seja satisfeita. A seguir temos o exemplo da utilização do Se com o Senão na forma algoritmica e na linguagem Pascal:
1leia(numero)
2se(numero MOD 2 = 0)
3   então
4      escreva("O número é par.")
5   senão
6      escreva("O número é impar.")
7fim-se
1readln(numero);
2if (numero MOD 2 = 0) then
3   begin
4      write('O número é par.');
5   end
6else
7   begin
8      write('O número é ímpar.');
9   end;
Dessa forma, se o número digitado fosse par, a mensagem O número é par. Caso contrário, a mensagem O número é ímpar. seria exibida. Além disso, podemos encadear vários ‘Ses’, criando uma série de condições. Podemos também, colocar mais de uma condição ou negar uma condição, com a utilização dos operadores lógicos e, ou e não.
1leia(idade)
2se (idade < 13)
3   então
4      Escreva("Criança")
5senão se (idade >= 13 e < 21)
6      escreva("Adolescente")
7   senão
8      escreva("Adulto")
9fim-Se
01readln(idade);
02if (idade < 13) then
03   begin
04      write('Criança');
05   end
06else if (idade >= 13 and idade < 21) then
07   begin
08      write('Adolescente');
09   end
10else
11   begin
12      write('Adulto');
13   end;
Ah, um detalhe. Percebam que em Pascal, somente o último End de uma sequência de Ifs tem ponto-e-vírgula! Observando o exemplo acima, podemos realizar diversas tarefas, encadeando diversos Ifs / Elses. Apesar de simples, esta estrutura é vastamente utilizada na programação. Porém, quando precisamos conferir o valor de uma variável frente a muitos valores, o uso de Ifs encadeados torna-se trabalhoso, principalmente ao programador, além de deixar o código repleto de Begins e Ends. Para resolver problemas do tipo, utilizamos uma estrutura chamada Escolha ou Case. Com ela, podemos comparar o conteúdo de uma variável frente a diversas constantes, de uma forma bem mais organizada que o simples encadeamento de Ifs. A seguir, temos um exemplo de um programa de apuração de votos, com a utilização do Escolha.
1...
2escolha (votos)
3   caso (votos = 1) : candidato1 ← candidato1 + 1
4   caso (votos = 2) : candidato2 ← candidato2 + 1
5senão
6   escreva("Voto inválido")
7fim-escolha
1case votos of
2   1 : candidato1 := candidato1 + 1;
3   2 : candidato2 := candidato2 + 2;
4else
5   write('Voto inválido');
6end;
Neste caso, a variável votos foi comparada com os valores 1 e 2. Dependendo do seu conteúdo,  incrementa-se a variável correspondente ao candidato. Caso o voto não confira com nenhuma das opções do case, ele irá executar o comando para escrever Voto inválido na tela. Nesta estrutura, assim como no se, o uso do senão é facultativo, ou seja, ele não precisa necessariamente estar presente, sendo utilizado de acordo com a necessidade. Outro ponto é que os valores constantes comparados não precisam ser necessariamente inteiros. Podem ser, por exemplo, um tipo caracter.
Bom, pessoal, é isso. No começo pode ser que vocês estranhem um pouco estas estruturas, mas com o tempo elas virão a estar presente em praticamente todas as aplicações que vocês fizerem. E lembrem-se que, em caso de dúvida, podem  simplesmente deixar um comentário aqui no blog.
Obrigado pela visita e até o próximo post com as Estruturas de Repetição. Abraço a todos! :)

1.5) Variáveis


São os nomes que utilizamos para referenciar as posições de memória. A memória de um computador pode ser entendida como um conjunto ordenado e numerado de palavras. Na maioria dos PCs que usamos diariamente a memória pode ser considerada como um conjunto ordenado e numerado de bytes (8 bits). As linguagens de programação de alto nível atribuem nomes as posições de memória que armazenam os dados a serem processados. Deste modo os programadores tem mais facilidade para construir seus algoritmos. Na linguagem a-- um nome de variável é contruído da seguinte maneira: uma letra seguida por um conjunto de letras ou algarismos. Por exemplo, os nomes seguintes são nomes de variáveis válidos:
  • i
  • valor
  • nome
  • nota1
Como nomes inválidos podemos dar os seguintes exemplos:
  • 2nota (nome começado por algarismo)
  • nome de aluno (nome com espaços em branco no meio)
Durante a apresentação da linguagem iremos fazer referências a listas de variáveis. Uma lista de variáveis é um conjunto de nomes de variáveis separados por vírgulas, por exemplo: Ex. nota1, nota2, media

Na linguagem a-- uma variável não precisa ser definida antes de ser usada em um algoritmo. A variável irá assumir, dinamicamente, o tipo do dado que estiver sendo atribuído a esta variável. Por exemplo se armazenarmos o valor 5 em uma variável ela passará a ser do tipo inteiro. Caso resolvamos trocar o valor para 3.14 a variável passará a ser real.


Por que usar estrutura Inteiro, Real...?

Imagine Você criando um programa que lê quantos anos a pessoa tem e ela coloca 14,6 anos, acabou seu programa, com essa limitação de variaveis possibilita que se bloqueie esse tipo de erro.

1.4) Tipos de Dados


Os algoritmos irão manipular dados, que normalmente são fornecidos pelos usuários, e entregar resultados para estes usuários. Uma pergunta importante neste momento é: que tipo de dados poderemos manipular? As linguagens de programação normalmente estabelecem regras precisas para definir que tipos de dados elas irão manipular. A pseudo-linguagem a-- também estabelece, ainda que informalmente, algumas regras que limitam o conjunto de dados existentes na natureza e que poderão ser manipulados pelos algoritmos.
Existem três tipos básicos de dados que a linguagem irá manipular:
  • Dados numéricos
  • Dados alfa-numéricos
  • Dados Logicos

Dados Numéricos:

Os dados numéricos que os algoritmos podem manipular são de dois tipos:
  • Dados inteiros
  • Dados reais
O conjunto dos dados inteiros pode ser definido como Z={...,-3,-2,0,1,2,...}. O conjunto dos números reais inclui o conjunto dos números inteiros, dos números fracionários e dos números irracionais. O conjunto dos números fracionários pode ser formalmente definido como Q={p/q | p,q pertencem a Z}. O conjunto dos números irracionais engloba aqueles que não podem ser representados por uma fração, por exemplo o número PI=3.141515... Os números irracionais são armazenados até um certo número de casas decimais que o computador consegue representar a partir daí as casas decimais são descartadas.
Neste ponto é importante lembrar que dois fatos importantes. Primeiro computadores trabalham com uma base diferente de 10. Computadores trabalham em base 2 e no processo de conversão entre a base 10 e a base 2 podem ocorrer problemas de perda de dígitos significativos. Por exemplo, o número real 0.6 ao ser convertido para a base dois gera uma dízima periódica. Outro fato importante é que a memória do computador é limitada e portanto o número de dígitos binários que podem ser armazenados é função deste tamanho. Deste modo o processo de conversão e desconversão entre bases pode causar perda de informação.
Os dados inteiros tem a seguinte forma: NúmeroInteiro = [+,-]algarismo{algarismo}
O sinal de + e - entre colchetes significa que um número inteiro pode ou não ter sínal, isto é o sinal é opcional. Em seguida temos um algarismo que é obrigatório. Isto é dados inteiros tem de ter pelo menos um algarismo. A seguir temos a palavra algarismo entre chaves, o que significa que um número inteiro deve ter pelo menos um algarismo e pode ser seguido por uma seqüência de algarismos.
São portanto exemplos de números inteiros:
  • +3
  • 3
  • -324
Os dados reais tem a seguinte forma: [+,-]algarismo{algarismo}"."algarismo{algarismo}. Ou seja um número real pode ou não ter sinal, em seguida um conjunto de pelo menos um algarismo, um ponto decimal e depois um conjunto de pelo menos um algarismo. É importante notar que o separador entre a parte inteira e a fracionário é o ponto e não a vírgula.
São exemplos de números reais:
  • 0.5
  • +0.5
  • -3.1415

Dados Alfa-numéricos

Dados alfa-numéricos servem para tratamento de textos e normalmente são compostos por uma seqüência de caracteres contendo letras, algarismos e caracteres de pontuação. Nos algoritmos são normalmente representados por uma seqüência de caracteres entre aspas, por exemplo:
  • "Linguagem de programação"
  • "Qual é o seu nome?"
  • "12345"

Dados Lógicos

Este tipo de dados é intensamente aplicado durante o processo de tomada de decisões que o computador frequentemente é obrigado a fazer. Em muitos textos este tipo de dados também é chamado de dados booleanos, devido a George Boole, matemático que deu ao nome à álgebra (álgebra booleana) que manipula este tipo de dados. Os dados deste tipo somente podem assumir dois valores: verdadeiro e falso. Computadores tomam decisões, durante o processamento de um algoritmo, baseados nestes dois valores. Por exemplo, considere a decisão abaixo:

Se raiz >= 0 imprima "Existe raiz" caso contrário imprima "Não existe raiz real."

Nesta instrução aparece a expressão raiz >= 0, que procura descobrir se o valor de raiz é maior que 0. Esta expressão somente pode ter como resultado os valores: verdadeiro ou falso. Nos nossos algoritmos estes valores serão representados por verdadeiro e falso. Mais adiante ficará claro como este tipo de dados será empregado nos algoritmos.
Barra Horizontal Azul

1.3.3) Pseudo Linguagem

Pseudo Linguagem

Este modo de representar algoritmos procura empregar uma linguagem que esteja o mais próximo possível de uma linguagem de programação de computadores de alto nível mas evitando de definir regras de construção gramatical muito rígidas. A idéia é usar as vantagens do emprego da linguagem natural, mas restringindo o escopo da linguagem. Normalmente estas linguagens são versões ultra reduzidas de linguagens de alto nível do tipo Pascal ou C. No próximo capítulo veremos um exemplo de uma destas pseudo-linguagens. Barra Horizontal Azul

A Pseudo Linguagem a--

Para escrever estes exemplos de algoritmos usaremos uma pseudo linguagem de programação, que chamaremos de a--. Nesta linguagem definimos um número mínimo de comandos, o suficiente para descrever os algoritmos exemplos. Os dados não tem tipo definido, como em C e PASCAL. A linguagem como o C, que é utilizado no resto do programa é baseada em funções. Todos os algoritmos são descritos por funções, sendo que a função básica, e que deve existir sempre, pois ela é sempre a primeira a ser executada é a função principal.
Um exemplo simples da forma geral de um algoritmo em a-- é o seguinte:

principal ()
início
    imprimir "Olá Mundo."
fim
O algoritmo começa com a função principal que é a função obrigatória em todos os algoritmos. Os parênteses após o nome principal são normalmente usados para delimitar a lista de argumentos, também chamados parâmetros que a função irá receber para executar a sua tarefa. Neste caso a função não está recebendo nenhum parâmetro. Esta algoritmo executa um único comando que imprime o texto "Alo mundo" em um dispositivo qualquer de saída de dados.

1.1) Resumidamente

Basicamente um Algorítimo é uma sequência de passos simples para resolução de um problema. É uma receita que qualquer um entenda, ...

Exemplo Simples:

Algoritimo para lavar Cabeça:

1:INÍCIO
2:MOLHE O CABELO
3:COLOQUE SHAMPOO
4:ESFREGUE
5:ENXAGUE
6:FIM

                Análise :

                                   Processo Simples do dia-à-dia
                                   Início e Fim Claramente Definidos
                                   Passo-à-passo bem definido.
     

Mas há imperfeições:
                    Não Especifica quanto de Shampoo, não especifica como molhar, como lavar, quanto tempo...

Vamos Melhorar isso:


1:INÍCIO
2:MOLHE O CABELO
3:REPITA 2 VEZES:
   3.1:COLOQUE QUANTIDADE DE 1 TAMPINHA DE  SHAMPOO
   3.2:ESFREGUE POR 1 MINUTO
   3.3:ENXAGUE
6:FIM

O que é Algorítimo?

O que é Algorítimo?
Algoritmo é uma sequência de passos simples, bem estruturados e não ambíguos,que, quando executados em ordem correta, fornece resolução de algum problema.

Como Assim?

Bom, eu lembro de ter lido que em tempos antes de Cristo, um homem propôs que poderíamos executar diversas tarefas da seguinte maneira:

Tendo algumas pessoas, dizemos a cada uma uma tarefa muito simples, e cada uma executa sua tarefa, em ordem. Nenhuma sabe o processo todo. Mas espera-se que no fim, o processo inteiro se complete!

Um exemplo:

Cada número representa uma pessoa.

 1: escreve G em uma folha e entrega a 2
 2: escreve L em uma folha, coloca no fim das folhas, e as entrega a 3
 3: escreve O em uma folha, coloca no topo das folhas, e as entrega a 4
 4: escreve A em uma folha, coloca no fim das folhas, e as entrega a 5
 5: inverte a ordem das folhas
Se você observar bem, leremos "ALGO" no final, folha por folha.
Apesar de cada passo parecer desconexo, no fim obteve-se um resultado!

Essa lógica por trás da sequência de passos que é chamada de lógica de programação. Claro que geralmente o que queremos obter é algo mais complexo, e os tipos de passos que dispomos são mais bem definidos e mais simples.


Interessante!

Agora verifique um exemplo com um laço, ou loop:
 
Há algumas pedras, de diferentes tamanhos

 1: se há pedras, escolhe a menor e dá para 2
 2: coloca a pedra no fim de uma fila, e pede a 1 outra pedra

Perceba que nesse caso, 1 vai escolher primeiro a menor pedra de todas, e 2 vai colocá-la em primeiro lugar na fila.
Em seguida, 1 escolhe a segunda menor pedra (para 1, é a menor pedra que tinha, mas no total, ela é a segunda menor, afinal a menor já foi), e 2 a coloca atrás da primeira pedra, na fila.
No fim, teremos que as pedras estarão em ordem crescente!
Este foi um exemplo de algoritmo de ordenação.

E no computador?

Utilizamos as linguagens de programação para transcrever o passo-a-passo que o computador deve executar, e é isso que ocorre.
Note que quando compilamos um programa, é gerado um outro código, ainda mais simples, porque o computador compreende e é capaz de executar apenas uma pequena quantidade de comandos muito simples.
No entanto, unidos, esses comando muito simples se tornam algo maior e que faz sentido!

Algo importante a notar é que os exemplos dados aqui estão em alto nível, ou seja, há comandos que são relativamente complexos, e que no computador precisaríamos separá-los em instruções ainda menores e mais simples. Mas para nós, humanos, não é difícil compreender esses passos em alto nível, assim fica mais fácil escrevê-los desta forma.

Perceba também que apesar de se falar em algoritmos de computador, um algoritmo não pressupõe um computador! (É só lembrar do homem antes de Cristo, já criando a lógica de programação! XD)

Dois algoritmos podem ter o mesmo resultado?

Sim!
Pense no primeiro exemplo dado aqui!
Um meio mais fácil de formar a palavra "ALGO" seria cada pessoa escrever uma letra, na ordem, não?
Pois bem, faça isso e obterá o exato mesmo resultado que o outro algoritmo!







----------------------------------------------