Representação de Algoritmos

Last updated: August 14th, 2018

Introdução

Lógica

A lógica relaciona-se com a razão, investiga a correção do pensamento/raciocínio. Estuda e ensina a colocar ordem no pensamento. No nosso caso, usaremos a lógica, tanto a matemática como a de programação, para nos ajudar a compreender, modelar e propor soluções viáveis para problemas computacionais.

Lógica de Programação é a técnica de desenvolver sequências lógicas para atingir um determinado objetivo. Essas sequências lógicas são adaptadas para linguagem de computador pelo programador a fim de produzir software. Veremos mais sobre isso em seguida.

Algoritmo

Um algoritmo é uma sequência finita de passos para realizar uma tarefa ou solucionar um problema. Esses passos serão definidos a partir das sequências lógicas desenvolvidas para atingir algum objetivo, e são ordenados convenientemente. A ordem dos passos é muito importante. Mudando a ordem dos passos alteramos um algoritmo.

Algoritmos não são exclusivos da Computação, mas fazem parte do nosso dia a dia:

  • Instruções para uso de medicamentos.
  • Manual de instruções de montagem.
  • Receitas culinárias.

Os algoritmos são importantes em Ciência da Computação porque os computadores fazem exatamente aquilo que dizemos para eles fazerem. Dessa forma, precisamos estabelecer muito claramente quais passos ele deve seguir para cumprir uma determinada tarefa.

Na prática, criamos algoritmos com o objetivo de automatizar tarefas:

  • Obter os resultados esperados.
  • Repetibilidade.
  • Confiabilidade.
  • Tempo e qualidade constantes.

Dados e Informação

Um dado é uma sequência de símbolos. São elementos conhecidos de um problema (são os fatos em sua forma primária, como observamos no mundo).

Quando organizamos os dados atribuimos significado, eles ganham valor, tornam-se informação. Além disso, Um mesmo conjunto de dados pode ser utilizado para representar informações de natureza distintas.

Por exemplo:
  • 1.89 (dado)
  • "A altura de José é 1.89m" (informação)
  • "O tempo de execução do algoritmo foi de 1.89s" (informação)
  • "Aqui estão 1.89Kg de banana" (informação)
DADO e INFORMAÇÃO não são termos exclusivos da computação.
Foram cunhados por outras áreas,tais como a semiótica.

Entrada e Saída

A solução de qualquer problema envolve um processamento, que manipula dados de entrada e gera dados de saída. Solucionar o problema consiste exatamente em gerar dados de saída esperados a partir dos dados de entrada.

  • Dados de Entrada - Disponíveis no ambiente. Necessários para a resolução do problema.
  • Dados de Saída - Resultados desejados. Informação, relatórios, mensagens de erro, etc.
  • Processamento - Algoritmo para manipular os dados.
Fluxograma de dados

Lógica de programação

  • Nesta disciplina, queremos aprender a:

    • Dado um problema,

    • determinar uma sequência de instruções tal que,

    • fornecidos os dados de entrada,

    • a execução da sequência da instruções

    • resulte como saída a solução do problema.

  • Exemplo de um Algoritmo para trocar um Pneu:

  • Entrada: carro, macaco mecânico, pneu reserva
    
    Saída: carro com o pneu trocado

    Faça:

    Afrouxar ligeiramente os parafusos;
    
    Suspender o carro;
    
    Retirar os parafusos e o pneu;
    
    Colocar o pneu reserva;
    
    Apertar os parafusos;
    
    Abaixar o carro;
    
    Dar o aperto final nos parafusos.
    • Ou seja, construímos um algortimo que é generalizado para qualquer carro, basta seguir os passos do algortimo desenvolvido com as devidas entradas que a saída será a mesma.

  • Exemplo de um Algoritmo para tirar a média entre 3 números:

  • Entrada: número A, número B, número C
    
    Saída: média dos 3 números

    Faça:

    Somar os números A, B e C
    
    Dividir a soma por 3
    • A mesma ideia serve para esse exemplo, independente de quais sejam os números representados por A, B ou C, a resposta sempre será a média dos 3 números.

Representação de Algoritmos

  • Existem diversas formas de representação de algoritmos.

  • Não existe um consenso sobre qual é a melhor forma, cada uma tem vantagens e desvantagens.

  • Algumas formas tratam os problemas apenas no nível lógico, abstraindo os detalhes relacionados de implementação.

  • Outras formas entram em mais detalhes e são mais específicas, porém que podem obscurecer a idéia principal.

  • Entre as formas mais conhecidas, podemos citar:

    • Descrição Narrativa;

    • Fluxograma Convencional;

    • Pseudocódigo, também conhecido como portugol.

  • Descrição Narrativa

    • Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural.

    • Uso da linguagem natural pode gerar ambiguidades e imprecisões.

    • Por exemplo, no algoritmo do pneu, o que significa “Afrouxar ligeiramente o parafuso”?

    • Não seria mais preciso dizer “Afrouxar o parafuso, girando o mesmo 33.8° no sentido anti-horário”?

    • Quando criamos algoritmos, frequentemente precisamos utilizar estruturas condicionais e de repetição. Isto é, precisamos tomar decisões ou repetir passos.

    • Exemplo de um Algoritmo para trocar uma lâmpada:

  • Fluxograma Convencional e Pseudocódigo

    • Esses métodos não serão abordados na matéria porém podem conferir nos vídeos a seguir: