Começando a Programar: Algoritmos (Introdução)

Começando a Programar: Algoritmos (Introdução)



Fala ai pessoal,

Estou escrevendo mais um POST dedicado para aqueles que queiram aprender os princípios básicos sobre programação, para que possam aprender a desenvolver suas próprias aplicações (independente se será um sistema comercial, um jogo, um pequeno aplicativo, uma página web, um utilitário e etc).

O princípio para qualquer indivíduo que queira aprender a desenvolver sua aplicação é aprender sobre LÓGICA DE PROGRAMAÇÃO e ALGORITMOS.

Primeiramente, vamos entender esse conceito sobre a palavra ALGORITMOS. Possivelmente, algum de vocês que estão lendo esse POST já devem ter ouvido falar dessa palavra em algum lugar (como na escola ou faculdade), e essa palavra NÃO TEM NADA A VER com álgebra, aritmética, cálculos avançados, geometria e qualquer segmento da matemática.

O ALGORITMO (conceitualmente falando) NADA MAIS É do que : Um conjunto de de etapas finitas que precisam ser executadas para resolver um problema.

Vou dar aqui um exemplo básico para que possamos entender o real significado da palavra ALGORITMO.

Vamos supor que você está no trabalho e que agora você precise ir para sua casa, muito bem. O que você precisa fazer para , do seu trabalho, você possa chegar EM CASA (supondo que você não tenha nenhum veículo e bastante somente um único ônibus para ir pra casa) :

1) SAIR DO SEU TRABALHO

2) IR EM DIREÇÃO AO PONTO DO ÔNIBUS

3) ESPERAR SEU ÔNIBUS CHEGAR

4) PEGAR SEU ÔNIBUS QUANDO CHEGAR

5) AGUARDAR SEU ÔNIBUS CHEGAR NO PONTO DESEJADO

6) SALTAR DO ÔNIBUS AO CHEGAR NO PONTO DESEJADO

7) CAMINHAR ATÉ SUA CASA

8) ENTRAR EM CASA

Como podemos observar acima, foi necessário a execução de uma sequência de passos para que você pudesse sair do seu trabalho para em sua casa. ISSO É UM ALGORITMO. Tudo aquilo que possui uma sequência para ser resolvido/solucionado nada mais é do que um ALGORITMO.

O exemplo que demonstrei acima nada mais é do que um ALGORITMO DA VIDA REAL.

Na programação para sistemas de computador o sentido é o mesmo. O ALGORITMO é uma sequência de passos, só que ESSES PASSOS são representados por COMANDOS(INSTRUÇÕES) que serão executados pelo computador (mostrando algum resultado esperado).

Voltando ao exemplo do “VOLTAR PARA CASA” , o mesmo algoritmo poderia ser executado com alguns passos a mais, demonstrando mais o seu detalhamento de execução. Vejamos uma nova versão do ALGORITMO (com novos passos destacados EM NEGRITO):

1) SAIR DO SEU TRABALHO

2) ATRAVESSAR A RUA (QUANDO O SINAL ESTIVER VERDE)

3) VIRAR PARA A DIREITA

4) IR EM DIREÇÃO AO PONTO DO ÔNIBUS

5) CHEGAR NO PONTO DE ÔNIBUS

6) ESPERAR SEU ÔNIBUS CHEGAR

7) AO AVISTAR SEU ÔNIBUS, FAZER SINAL PARA ELE PARAR

8) ENTRAR NO ÔNIBUS

9) SE VOCÊ TIVER SEU RIO-CARD

10) PASSAR SEU RIO-CARD NA MAQUINA (SE A CONDIÇÃO ACIMA FOR VERDADEIRA) E IR PARA O PASSO (12)

11) CASO CONTRÁRIO , PAGAR COM SEU DINHEIRO PARA O MOTORISTA/TROCADOR

12) ATRAVESSAR A ROLETA

13) PROCURAR UM LUGAR PARA SENTAR (SE HOUVER)

14) AGUARDAR SEU ÔNIBUS CHEGAR NO PONTO DESEJADO

15) SALTAR DO ÔNIBUS AO CHEGAR NO PONTO DESEJADO

16) CAMINHAR ATÉ SUA CASA

17) ENTRAR EM CASA

18) FECHAR A PORTA DE CASA

Como podemos ver, nosso novo algoritmo possui 18 passos (diferente dos 8 passos da primeira versão). Isso significa que o nosso primeiro algoritmo que desenvolvemos ESTÁ ERRADO ? NÃO. Por incrível que pareça, nossa primeira versão do algoritmo está certa.

O conceito da palavra ALGORITMO é a execução de passos ordenados com o objetivo de solucionar um determinado problema, agora, não importa quantos passos serão necessários para atingir um objeto, O IMPORTANTE É VOCÊ ATINGIR ESSE OBJETIVO.

Irei dar mais um exemplo prático sobre ALGORITMO que realizamos no nosso dia-a-dia (no computador). Vamos supor que abra seu navegador (como o FireFox por exemplo), conforme mostra a figura:


Agora vamos digitar na URL o endereço do Google : http://www.google.com.br

Se pressionarmos [ENTER], podemos ver que o site do Google foi carregado com sucesso.

Bom, agora a pergunta que eu faço é : O QUE FOI EXECUTADO POR TRÁS para que a página do Google fosse carregada ? NADA MAIS DO QUE UM ALGORITMO, ou seja, uma série de comandos de computador foram executados para que a minha página do Google fosse carregada.

Mais um exemplo : Quando você está com o documento do WORD aberto e clica no botão IMPRIMIR, temos o nosso documento impresso no papel. Agora novamente pergunto, o que foi executado para que meu documento no WORD fosse impresso na papel através da impressora ? DE NOVO, UM ALGORITMO. Uma série de comandos em linguagem de computador foi processado para que seu documento fosse impresso.

E ai, está começando a entender aos poucos o significado e como funciona essa questão de algoritmos ? Aposto que SIM 🙂

Agora vamos aprofundar mais um pouco.

O intuito deste POST é mostrar o foco do desenvolvimento de algoritmos voltado para a criação de programas de computador (sistemas de forma geral). Quando a gente desenvolve um algoritmo precisamos saber uma série de etapas e critérios que envolvem o seu desenvolvimento, são eles :

1) Entender o problema: Está etapa é uma das primeiras e importantes antes de desenvolvermos o nosso algoritmo. Nela analisamos o cenário do problema em questão para fazer os levantamentos necessários para a construção do nosso algoritmo (em termos gerais, nosso programa de computador).

2) Desenvolvendo a solução: A “SOLUÇÃO” aqui em questão nada mais é do que o algoritmo (programa) desenvolvido para solucionar o problema.

3) Realizando Testes : Nessa etapa verificamos se o problema desenvolvido (na etapa 2) atende ao que foi proposto, mediante a realização de diversos testes.

4) Manutenção: Aqui nessa etapa verificamos a real necessidade de realizamos uma manutenção do nosso programa desenvolvido, de forma que possamos corrigi-lo (caso o mesmo apresente algum problema em algum módulo) ou melhora-lo.

5) Distribuição (aplicação em execução): Aqui neste etapa é que temos POR DEFINITIVO a nossa aplicação em execução (algoritmo) para solucionar o problema.

Agora vamos entender melhor essas etapas mencionadas em uma situação real (supondo de forma “intuitiva” a construção do WhatsApp”) :

Situação : Precisamos de um aplicativo móvel em que as pessoas pudessem enviar mensagens, áudio, imagens e vídeos, de forma que essas informações ficassem armazenadas somente nos dispositivos do remetente e destinatário (de forma isolada, sem que outras pessoas saibam). Uma das características desse aplicativo é que ele não consiste numa rede social e, que as pessoas pudessem adicionar seus contatos utilizando somente o número de telefone (de uma forma simples e prática).

Bom essa é uma situação real, em que nós (equipe de desenvolvedores) precisamos realizar o ESTUDO DE VIABILIDADE (1ª Etapa), ou seja, analisar todos os requisitos necessários para a construção de um aplicativo de acordo com a situação acima.

Depois dos requisitos levantados, partirmos para a etapa de desenvolvimento (SOLUÇÃO, que é a etapa 2), onde desenvolvemos os nossos módulos da aplicação.

A terceira etapa (TESTES) consiste em verificar se todos os módulos desenvolvidos (como o módulo de conversa, módulo para o envio de mensagens, envio de vídeos e etc) estão atendendo aos requisitos propostos inicialmente.

A quarta etapa (MANUTENÇÃO) consiste se a aplicação (formada por todos os módulos citados) precisa de alguma melhoria ou correção (se por acaso algum desses módulos não funcionar de forma correta).

A quinta e última etapa (DISTRIBUIÇÃO) consiste na publicação do software (supondo o “WhatsApp”) no Play Store para download por parte dos usuários.



Bom, agora vamos partir para uma coisa mais legal. Iremos desenvolver nosso primeiro algoritmo a partir de um enunciado simples, proposto a seguir: Desenvolver um algoritmo para calcular e mostrar a média de quatro notas de um aluno.

Bom , o enunciado acima pede que a gente desenvolva um algoritmo para calcular a média de quatro notas do aluno. Fazendo um levantamento: Para a gente calcular algo, precisamos ter fontes (entradas) necessárias para calcular esse “algo”. Como precisamos calcular a média de quatro notas, o que a gente precisa fazer antes de calcular É OBTER ESSAS QUATRO NOTAS. Segue abaixo de como seria a nossa solução (algoritmo) :

1) LER (OBTER) a primeira nota

2) LER (OBTER) a segunda nota

3) LER (OBTER) a terceira nota

4) LER (OBTER) a quarta nota

5) EFETUAR a soma das quatro notas e dividir por 4 (obtemos aqui a nossa média)

6) MOSTRAR a média calculada

Com os passos mencionados acima, conseguiremos efetuar o cálculo da nossa média.

Entrada, Processamento e Saída de Dados

Bom, agora gostaria de falar uma coisa muito importante do a respeito do CICLO DA VIDA DE UM COMPUTADOR (sendo ele um PC, SMARTPHONE, TABLET e etc). Todo e qualquer dispositivo realiza o seguinte ciclo : ENTRADA , PROCESSAMENTO E SAÍDA DE DADOS.

No exemplo anterior a respeito do cálculo da média , nós OBTEMOS as NOTAS, EFETUAMOS o cálculo média e em seguida MOSTRAMOS a média calculada.

Observe que eu (propositalmente) destaquei os verbos OBTEMOS, EFETUAMOS e MOSTRAMOS. Você vai entender.

OBTER as notas, nada mais é do que realizar UMA ENTRADA DE DADOS

EFETUARMOS o cálculo da média nada mais é do que o PROCESSAMENTO

MOSTRARMOS a média calculada nada mais é do que SAÍDA DE DADOS

No computador as notas deveriam ser obtidas de uma fonte (entrada), para que em seguida pudessem ser calculadas (processadas) e finalmente para que pudesse ser mostrada (saída).

O algoritmo realizado acima está expresso de uma forma que nós, “HUMANOS”, conseguimos entender o que a gente tem que fazer passo a passo para calcular a média. Agora, essa mesma expressão NÃO É COMPREENSÍVEL para o computador. Ai que entra o que nós chamamos de LINGUAGENS DE PROGRAMAÇÃO.

Uma LINGUAGEM DE PROGRAMAÇÃO nada mais é do que um conjunto de REGRAS SINTÁTICAS, que se seguidas corretamente, permite a construção de um programa de computador. Exemplo de linguagens de programação mais comuns e utilizadas hoje em dia são : Java, C#, Delphi, PHP, C/C++, Javascript e etc.

Como seria então, nosso algoritmo expresso em uma linguagem de programação para que nosso programa pudesse ser executado por um computador ? Irei mostrar aqui uma demonstração do mesmo algoritmo do cálculo de médias escrito na linguagem de programação C/C++ (para aqueles que não viram linguagem de programação , não se assuste). Seria assim :

#include <stdio.h>
int main(void)
{

  float nota1, nota2, nota3, nota4, media;

  prinft("Digite as quatro notas :\n");

  scanf("%d",&nota1);

  scanf("%d",&nota2);

  scanf("%d",&nota3);

  scanf("%d",&nota4);

  media = (nota1 + nota2 + nota3 + nota4) / 4;

  printf("A média é : %.2f",media);

  return 0;

}

Quem nunca viu linguagem de programação deve estar MEIO PERDIDO nesse meio de código “ESTRANHOS” sem entender o que cada linha significa. Não se preocupe , isso é natural.

O que acabamos de fazer é TRADUZIR o que MENTALIZAMOS (e que também expressamos em passos) nosso algoritmos para um conjunto de comandos em linguagem de programação : ISSO É CONSTRUIR UM PROGRAMA 🙂

Então acabamos nesse exato momento, de construir um programa em LINGUAGEM DE PROGRAMAÇÃO C.

Conforme havia falado no meu PRIMEIRO POST sobre programação aqui no blog, antes de alguém começar a mexer com LINGUAGENS DE PROGRAMAÇÃO, deveria aprender primeiramente ALGORITMOS.

Normalmente quando se ensina ALGORITMOS para programação, ADOTA-SE uma linguagem de programação padrão para ensino conhecida como PORTUGOL (ou português estruturado), que consiste em um conjunto de comandos de linguagem de programação , SO QUE ESCRITOS EM PORTUGUÊS (diferente das linguagens de programação tradicionais, cujo os comandos são em inglês).

Algumas abordagens de ensino (contida em livros, ou até mesmo algumas escolas técnicas de ensino ou faculdades de programação) adotam o ensino de algoritmos DIRETAMENTE em uma LINGUAGEM DE PROGRAMAÇÃO (sem utilizar o PORTUGOL). Confesso que NÃO SOU MUITO FÃ desse tipo de metodologia. Acho que primeiramente devemos aprender o PORTUGOL para depois aprendermos a traduzir o que realizamos no PORTUGOL em uma linguagem de programação.

Bom pessoal, por hoje é só.

No próximo post estarei ensinando como desenvolver nossos algoritmos no português estruturado (PORTUGOL), por meio de exemplos básicos passo a passo.

Um forte abraço para vocês e até a próxima.

 

1 comentário em “Começando a Programar: Algoritmos (Introdução)”

Deixe um comentário