L�gica de Programa��o

Document Sample
L�gica de Programa��o Powered By Docstoc
					   IEC081 – INTRODUÇÃO A
CIÊNCIA DOS COMPUTADORES
   D.Sc. David Fernandes de Oliveira
           (david@dcc.ufam.edu.br)
                          INTRODUÇÃO

Alguns slides foram tirados do material dos profs. Leandro Galvão,
                   Arilo Claudio e Raimundo Barreto (DCC/UFAM)
Lógica


• Do grego logiké, que significa “arte de raciocinar”.
• Aristóteles, filósofo grego (384-322 a.C.), foi o fundador da
  lógica.
• Lógica é o ramo da filosofia que cuida das regras do bem
  pensar ou do pensar correto
   – Portanto, lógica é um instrumento do pensar.
• Podemos dizer que a lógica é a arte de pensar corretamente.
• A lógica ensina a colocar Ordem no Pensamento.
Lógica de Programação


• A lógica de programação...
   – Necessária para pessoas que desejam          trabalhar   com
     desenvolvimento de sistemas e programas
   – Permite definir a sequencia lógica para o desenvolvimento de
     sistemas computacionais.
   Quais as ações que você faz ao
acordar antes de sair para o trabalho?
Uma possível solução...
• 1º Passo: Levanta da cama
• 2º Passo: Vai ao banheiro
• 3º Passo: Veste a roupa
• 4º Passo: Toma o café da manhã
• 5º Passo: Sai de casa
Sequencia Lógica
• Sequencia Lógica é um conjunto de
  instruções executadas (sequencialmente) até
  atingir um objetivo ou solução de um
  problema.
Sequencia Lógica
• Até as coisas mais simples podem ser
  descritas por sequencias lógicas.
• Por exemplo: “Chupar uma bala”
  – Pegar a bala
  – Retirar o papel
  – Colocar a bala na boca
  – Jogar o papel no lixo
Instruções
• Na linguagem comum:
   – “um conjunto de regras ou normas definidas para a realização
     de algo”.

• Em informática:
   – Indica a um computador uma ação elementar a ser executada.

• Uma ordem isolada não permite realizar o processo
  completo, para isso é necessário um conjunto de
  instruções colocadas em ordem sequencial lógica.
Instruções
• Ex: ao fazer omelete de batatas, precisaremos colocar
  em prática uma série de instruções:
   – Descascar as batatas, bater os ovos, fritar as batatas, etc...
   – Essas instruções tem que ser executadas em uma ordem
     adequada
       • Não se pode descascar as batatas depois de fritá-las.
   – Assim, uma instrução tomada em separado não tem muito
     sentido;
       • Para obtermos o resultado, precisamos colocar em prática o
         conjunto de todas as instruções, na ordem correta.
Programação
• O que seria “lógico” se quisermos ter bons resultados em uma
  prova escolar? O que seria “ilógico”?
• O que seria “lógico” fazer para ter sucesso numa modalidade
  esportiva? O que seria “ilógico”?
• O que seria “lógico” fazer para desenvolver bons programas de
  computador?
   – Devemos programá-lo logicamente, para que este possa resolver o
     problema desejado da forma mais otimizada possível, dado um
     conjunto de restrições.
• É neste ponto que entra o conceito de programação.
Programação
• Raciocínio lógico    é empregado       no
  desenvolvimento   de   programas       de
  computador
• Nosso objetivo será construir programas de
  computador
Programação
• Uma boa programação é desenvolvida a partir
  de um conjunto de elementos, entre eles:
  – Organização
  – Criatividade
  – Perseverança
  – Padronização
  – Otimização
Algoritimizando a Lógica
• Construir algoritmos é o objetivo fundamental de
  toda a programação, mas afinal o que é algoritmo?
  – Algoritmo é uma sequencia de passos que visam atingir
    um objetivo bem definido.
  – Algoritmo é a descrição de um conjunto de ações que
    obedecidas, resultam numa sucessão finita de passos,
    atingindo o objetivo.
  – Descrição de um conjunto finito de instruções para a
    solução de um problema em um tempo finito.
Algoritimizando a Lógica
• Podemos pensar em algoritmo como uma receita,
  uma sequencia de instruções que dão cabo de uma
  meta específica.

• Estas tarefas não podem ser redundantes nem
  subjetivas na sua definição, devem ser claras e
  precisas.

• Por quê isso?
Algoritimizando a Lógica
• Pessoas tem inteligência e habilidade racional
  – fazem perguntas para se esclarecer.

• Computador não tem senso próprio
  – deve receber instruções explícitas (algoritmos)
Algoritmo
• Um algoritmo poderia ser grosseiramente
  comparado a uma receita culinária.
  – Uma receita é um programa de atividades que deve ser
    respeitada e cumprida passo-a-passo.
  – Caso um dos passos seja desconsiderado, a receita não
    dará certo.
• Um algoritmo não representa, necessariamente, um
  programa de computador, e sim os passos
  necessários para realizar uma tarefa.
Algoritimizando a Lógica
• Exemplo de aplicação da lógica e construção de
  algoritmos:
  – Um homem precisa atravessar um rio com um barco que
    possui capacidade de transportar apenas ele e mais uma
    de suas três cargas, que são: um cachorro, uma galinha e
    um saco de milho.
  – Quais as restrições desse problema?
  – Há limite na quantidade de viagens?
  – O que o homem deve fazer para conseguir atravessar o
    rio sem perder as suas cargas?
Solução
• Quais as restrições desse problema?
   – O cachorro não pode ficar só com a galinha
   – A galinha não pode ficar só com o milho


• Há limite na quantidade de viagens?
   – Não

• O que o homem deve fazer para atravessar a carga?
Solução




          Inicial: H – C – G – M : vazio
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
          PASSO 2: H – C – M : G
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
          PASSO 2: H – C – M : G
          PASSO 3: M : H – C – G
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
          PASSO 2: H – C – M : G
          PASSO 3: M : H – C – G
          PASSO 4: H – G – M : C
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
          PASSO 2: H – C – M : G
          PASSO 3: M : H – C – G
          PASSO 4: H – G – M : C
          PASSO 5: G : H – C – M
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
          PASSO 2: H – C – M : G
          PASSO 3: M : H – C – G
          PASSO 4: H – G – M : C
          PASSO 5: G : H – C – M
          PASSO 6: H – G : C – M
Solução




          Inicial: H – C – G – M : vazio
          PASSO 1: C – M : H – G
          PASSO 2: H – C – M : G
          PASSO 3: M : H – C – G
          PASSO 4: H – G – M : C
          PASSO 5: G : H – C – M
          PASSO 6: H – G : C – M
          PASSO 7: vazio : H – C – G – M
Torre de Hanói
Torre de Hanói
• Objetivo:
  – Mover os discos da haste A para a haste C.

• Quais as restrições?
  – Um disco NÃO pode ficar sobre um disco menor que
    ele.

• Qual a sequencia lógica para resolver este
  problema?
Torre de Hanói
Torre de Hanói
• Algoritmo
  – Mover peça pequena da haste A para C
  – Mover peça média da haste A para B
  – Mover peça pequena da haste C para B
  – Mover peça grande da haste A para C
  – Mover peça pequena da haste B para A
  – Mover peça média da haste B para C
  – Mover peça pequena da haste A para C
Torre de Hanói
• Resolva o problema da Torre de Hanói para 4
  discos.
Torre de Hanói
• Resolva o problema da Torre de Hanói para 4
  discos.
         1                      2




         3                      4
Torre de Hanói
• Resolva o problema da Torre de Hanói para 4
  discos.
         5                      6




         7                      8
Torre de Hanói
• Resolva o problema da Torre de Hanói para 4
  discos.
         9                      10




        11                      12
Torre de Hanói
• Resolva o problema da Torre de Hanói para 4
  discos.
        13                     14




                     15
Algoritmo
• Algoritmo não é a solução do problema, pois,
  se assim fosse, cada problema teria um único
  algoritmo.
• Algoritmo é um caminho para a solução de
  um problema.
  – Em geral, os caminhos que levam a uma solução
    são muitos.
Algoritmo Não Computacional
• Podemos criar algoritmos para tarefas do cotidiano.
• Ex: Algoritmo não computacional cujo objetivo é
  usar um telefone público.
Algoritmo Não Computacional
Algoritmo
• Outro exemplo: algoritmo para “somar 2 números
  quaisquer” usando a notação abaixo.
  – Escreva o primeiro número no retângulo A
  – Escreva o primeiro número no retângulo B
  – Some o número do retângulo A com número do
    retângulo B e coloque o resultado no retângulo C
Por que usar algoritmos?
• Abstração - todo o esforço é concentrado na
  resolução do problema e não em detalhes
  computacionais      que      podem      ser
  acrescentados posteriormente
• Portabilidade - uma solução algorítmica pode
  ser traduzida para qualquer linguagem de
  programação
Programas
• Os programas de computadores nada mais
  são do que algoritmos escritos numa
  linguagem de computador (Pascal, C, Cobol,
  Fortran, Visual Basic, Java, dentre outras) e
  que são interpretados e executados por um
  computador.
Programas
• Aprender uma linguagem de programação sem
  dominar a criação de algoritmos não faz sentido,
  seria o mesmo que ter um vocabulário vasto,
  mas não saber usar as palavras certas na hora
  certa.
• Sabendo algoritmo é relativamente fácil criar um
  programa em qualquer linguagem, basta
  pesquisar qual comando realiza a ação desejada.
Linguagem Estruturada
• É uma forma de programação de
  computadores que preconiza que todos os
  programas possíveis podem ser reduzidos a
  apenas três estruturas:
  – Sequencia
  – Decisão
  – Iteração
Linguagem Estruturada
• Características:
  – Sua principal característica é a utilização de
    blocos para solução de um problema.
  – Permite a utilização combinada de sub-rotinas
    compiladas separadamente, sem que pertençam
    ao mesmo programa propriamente dito.
Passos para elaboração de um
programa
1. Compreender o problema.
2. Esboçar um procedimento para resolver o
   problema.
3. Formular o algoritmo.
4. Traduzir o algoritmo para uma linguagem de
   programação (Codificação).
   IEC081 – INTRODUÇÃO A
CIÊNCIA DOS COMPUTADORES
   D.Sc. David Fernandes de Oliveira
           (david@dcc.ufam.edu.br)

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:65
posted:3/20/2012
language:Portuguese
pages:47