SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Capítulo 3
ALGORITMOS

       O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo,
entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular
e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, como uma forma
de indicar o caminho para a solução dos mais variados problemas.
       Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único
algoritmo. Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que
levam a uma solução são muitos.
        Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando
linguagens semelhantes às linguagens de
programação e outras utilizando formas
gráficas.
       O aprendizado de algoritmos não
se consegue a não ser através de muitos
exercícios.




1. CONCEITO DE ALGORITMO
       A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e
passa a ser realizada por máquinas, sejam estas dispositivos mecânicos (como as máquinas
industriais), eletrônicos (como os computadores), ou de natureza mista (como os robôs).
        Para que a automação de uma tarefa seja bem-sucedida é necessário que a máquina que
passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a
ser automatizado com eficiência, de modo a garantir a repetibilidade do mesmo. Assim, é
necessário que seja especificado com clareza e exatidão o que deve ser realizado em cada uma das
fases do processo a ser automatizado, bem como a seqüência em que estas fases devem ser
realizadas.
      À especificação da seqüência ordenada de passos que deve ser seguida para a realização de
uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo.
      Embora esta definição de algoritmo seja correta, podemos definir algoritmo, de maneira
informal e completa como:




       Informalmente, um algoritmo é qualquer procedimento computacional bem definido que
toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de
valores como saída.
Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de
saída, e satisfazer a propriedade da efetividade, isto é, todas as operações especificadas no
algoritmo devem ser suficientemente básicas para que possam ser executadas de maneira exata e
num tempo finito.
       Na prática não é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O
mais importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o problema
proposto e o faz exatamente.
      Para se ter um algoritmo, é necessário:
         Que se tenha um número finito de passos
         Que cada passo esteja precisamente definido, sem possíveis ambigüidades
         Que existam zero ou mais entradas tomadas de conjuntos bem definidos
         Que existam uma ou mais saídas
         Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo
          finito.
        Para que um computador possa desempenhar uma tarefa é necessário que esta seja
detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se
chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo
escrito numa forma compreensível pelo computador.




2. FORMAS DE REPRESENTAÇÃO DE ALGORITMOS
       Existem diversas formas de representação de algoritmos, mas não há um consenso com
relação à melhor delas.
        Algumas formas de representação de algoritmos tratam dos problemas apenas em nível
lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma
linguagem de programação específica. Por outro lado, existem formas de representação de
algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer a
idéia principal, o algoritmo, dificultando seu entendimento.
      Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam:
       a Descrição Narrativa
       o Fluxograma Convencional
       o Diagrama de Chapin
       o Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol


2.1. DESCRIÇÃO NARRATIVA
       Nesta forma de representação, os algoritmos são expressos diretamente em linguagem
natural. Como por exemplo, têm-se os algoritmos seguintes:
 Troca de um pneu furado:
   Afrouxar ligeiramente as porcas
   Suspender o carro
   Retirar as porcas e o pneu
 Colocar o pneu reserva
   Apertar as porcas
   Abaixar o carro
   Dar o aperto final nas porcas
 Cálculo da média de um aluno:
   Obter as notas da primeira e da segunda prova
   Calcular a média aritmética entre as duas
   Se a média for maior ou igual a sete, o aluno foi aprovado, senão ele foi reprovado
       Esta representação é pouco usada na prática porque o uso de linguagem natural muitas
vezes dá oportunidade a más interpretações, ambigüidades e imprecisões.
       Por exemplo, a instrução “afrouxar ligeiramente as porcas” no algoritmo da troca de pneus
está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria:
“afrouxar a porca, girando-a de 30º no sentido anti-horário”.


2.2. FLUXOGRAMA CONVENCIONAL OU DIAGRAMA DE BLOCOS
       É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam
ações (instruções, comandos) distintas. Tal propriedade facilita o entendimento das idéias
contidas nos algoritmos.
       Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da
implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para
representar operações de saída de dados realizadas em dispositivos distintos, como uma unidade
de armazenamento de dados ou um monitor de vídeo. A figura abaixo mostra as principais formas
geométricas usadas em fluxogramas.

                   Início e final do fluxograma                  Decisão




                   Operação de entrada de dados                  Seta de Fluxo de Dados



                                                                 Conector utilizado quando é preciso
                   Operação de saída de dados em                 particionar o diagrama, colocando
                   impressora                                    uma letra ou número no símbolo para
                                                                 identificar os pares da conexão


                   Operação de saída de dados em                 Conector específico para indicar
                   vídeo                                         conexão do fluxo de execução em
                                                                 outra página


                   Operações de         atribuição e             Preparação – operações que utilizam
                   chamada      ou      retorno    de            uma chave que modifica a execução
                   subalgoritmo                                  do programa


Principais formas geométricas usadas em fluxogramas
De modo geral, o fluxograma se resume a um único símbolo inicial, por onde a execução do
algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se
encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido,
representando a existência de uma única seqüência de execução das instruções. Isto pode ser
mais bem visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma
mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são
os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode
haver mais de um caminho de saída (normalmente dois caminhos), representando uma bifurcação
no fluxo.
       Um diagrama de blocos é uma forma de fluxograma usada e desenvolvida por profissionais
da programação, tendo como objetivo descrever o método e a seqüência do processo dos planos
num computador. Pode ser desenvolvido em qualquer nível de detalhe que seja necessário.
Quando se desenvolve um diagrama para o programa principal, por exemplo, seu nível de
detalhamento pode chegar até as instruções. Esta ferramenta usa diversos símbolos geométricos,
os quais estabelecerão as seqüências de operações a serem efetuadas em um processamento
computacional. Após a elaboração do diagrama de bloco, é realizada a codificação do programa.
       A figura a seguir mostra a representação do algoritmo de cálculo da média de um aluno sob
a forma de um fluxograma.




2.3. DIAGRAMA DE CHAPIN
         O diagrama foi criado por Ned Chapin a partir de trabalhos de Nassi-Shneiderman, os quais
resolveram substituir o fluxograma tradicional por um diagrama que apresenta uma visão
hierárquica e estruturada da lógica do programa. A grande vantagem de usar este tipo de
diagrama é a representação das estruturas que tem um ponto de entrada e um ponto de saída e
são compostas pelas estruturas básicas de controle de seqüência, seleção e repartição. Enquanto
é difícil mostrar o embutimento e a recursividade com o fluxograma tradicional, torna-se mais
simples mostrá-lo com o diagrama de Chapin, bem como codificá-lo futuramente na conversão de
código português estruturado ou pseudocódigos. A figura abaixo apresenta um exemplo do tipo
de diagrama de Chapin para o algoritmo de cálculo da média de um aluno.
2.4. PSEUDOCÓDIGO
       Esta forma de representação de algoritmos, também conhecida como português
estruturado ou portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em
que os programas são escritos. Ela encontra muita aceitação, sendo, portanto a forma de
representação de algoritmos que utilizaremos nesta disciplina.
       Na verdade, esta representação é suficientemente geral para permitir que a tradução de
um algoritmo nela representado para uma linguagem de programação específica seja
praticamente direta.


Representação de Um Algoritmo na Forma de Pseudocódigo
      A representação de um algoritmo na forma de pseudocódigo é a seguinte:

algoritmo <nome_do_algoritmo>
<declaração_de_variáveis>
<subalgoritmos>
inicio
    <corpo_do_algoritmo>
fim.



      onde:
     Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma de
      pseudocódigo.
     <nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a finalidade de
      distingui-lo dos demais.
     <declaração_de_variáveis> consiste em uma porção opcional onde são declaradas as
      variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos.
     <subalgoritmos> consiste de uma porção opcional do pseudocódigo onde são definidos os
      subalgoritmos.
     Início e Fim são respectivamente as palavras que delimitam o início e o término do
      conjunto de instruções do corpo do algoritmo.
      Como exemplo, a seguir é mostrado a representação do algoritmo de cálculo da média de
um aluno na forma de um pseudocódigo.
algoritmo media_aluno
var N1, N2, media
inicio
    leia N1, N2
    media <- (N1+N2)/2
    se media >= 7 entao
       escreva “Aprovado”
    senao
 escreva “Reprovado”
fim




3. UM AMBIENTE PARA DESCREVER ALGORITMOS
       Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos. O
nosso computador hipotético apresentará a seguinte organização:




      Cada uma das partes constituintes da figura acima tem os seguintes significados:
  (1) Dispositivo de entrada (o teclado): meio pelo qual os dados que serão trabalhados pelo
      algoritmo vão ser introduzidos em nosso computador hipotético;
  (2) Unidade Lógica e Aritmética (ULA): parte responsável pelas operações matemáticas e
      avaliações lógicas;
  (3) Unidade de Controle: exerce controle sobre as demais partes do nosso computador. É uma
      verdadeira gerente que distribui tarefas às outras unidades;
  (4) Memória: guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo.
      Todo dado fornecido ao computador e o resultado de suas operações ficam guardados na
      memória;
  (5) Dispositivo de Saída (vídeo e impressora): meio que se dispõe para apresentação dos
      resultados obtidos.
3.1. FUNCIONAMENTO DO NOSSO COMPUTADOR
       Todos os computadores, independentemente dos seus tamanhos, são conceitualmente
semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos aqui dos
casos especiais).
     Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer
computador pode executar:
  a) operações de entrada e saída: ler dados do teclado e escrever dados na tela são exemplos
     destas operações. Elas servem para introduzir dados na memória do nosso computador e
     exibir dados que já estejam lá armazenados;
  b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição,
     subtração, multiplicação e divisão);
  c)   operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições
       lógicas (2>6 ? X=Y ?);
  d) movimentação de dados entre os vários componentes: as operações aritméticas são
     executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para
     essa unidade e da volta do resultado final para ser guardado na memória.


3.2. RESOLVENDO UM PROBLEMA
      Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão
informados, calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa tarefa, seria
bem provável que utilizasse os passos a seguir:
       a) saber quais são os números;
       b) calcular a soma dos números;
       c) responder à questão com o valor do resultado.
       Vejamos como seria resolvido esse mesmo problema em termos das operações básicas
citadas anteriormente:
       a) operação de entrada de dados dos números ;
       b1) movimento do valor dos números entre a memória e a ULA;
       b2) operação aritmética de somar os 2 números;
       b3) movimentação do resultado da ULA para guardar na memória;
       c)   operação de saída do resultado, que está guardado na memória, para o dispositivo de
            saída desejado.
     Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operação
matemática, não sendo explicitados.
       Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar
consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das
quatro operações básicas citadas.
        Esses passos que compõem o algoritmo são denominados de comandos. Os comandos de
uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo
nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível). A seqüência de
operações básicas, dada anteriormente, para resolver o problema de adicionar dois números, está
em uma linguagem de baixo nível para o nosso computador hipotético. Em uma linguagem de alto
nível teríamos um resultado assim:
Leia X,Y
SOMA X + Y
Escreva SOMA




EXERCÍCIOS PROPOSTOS


Questão 01:
Crie uma seqüência lógica para tomar banho. Construa um fluxograma para seu algoritmo.


Questão 02:
Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número.
Construa um fluxograma para seu algoritmo.


Questão 01:
Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes. Construa um fluxograma
para seu algoritmo.

Mais conteúdo relacionado

Mais procurados

Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoProfessor-David Remigio
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionaisDérick Platini
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosRodrigo Kiyoshi Saito
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)Sandro Lopes
 
3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacao3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacaoDisys do Brasil
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisRodrigo Kiyoshi Saito
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11Luis Ferreira
 
Linguagens de programação 12º M12
Linguagens de programação 12º M12Linguagens de programação 12º M12
Linguagens de programação 12º M12Luis Ferreira
 
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)João Palmeiro
 
Algorítmo estruturado
Algorítmo estruturadoAlgorítmo estruturado
Algorítmo estruturadoNaldo Falaschi
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgRegis Magalhães
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"deniscody
 

Mais procurados (19)

Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introdução
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionais
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmos
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)
 
Logica usando c_-_aula_1
Logica usando c_-_aula_1Logica usando c_-_aula_1
Logica usando c_-_aula_1
 
3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacao3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacao
 
Algoritmos parte1
Algoritmos parte1Algoritmos parte1
Algoritmos parte1
 
Aula iv
Aula ivAula iv
Aula iv
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
Aula02
Aula02Aula02
Aula02
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Clp
ClpClp
Clp
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11
 
Linguagens de programação 12º M12
Linguagens de programação 12º M12Linguagens de programação 12º M12
Linguagens de programação 12º M12
 
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
Apontamentos teóricos de Fundamentos de Programação (para 1º Teste)
 
Algorítmo estruturado
Algorítmo estruturadoAlgorítmo estruturado
Algorítmo estruturado
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Apostila programação "pascalzim"
Apostila programação "pascalzim"Apostila programação "pascalzim"
Apostila programação "pascalzim"
 

Destaque (10)

Cap04
Cap04Cap04
Cap04
 
Cap01
Cap01Cap01
Cap01
 
Cap05
Cap05Cap05
Cap05
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Cap08
Cap08Cap08
Cap08
 
Cap07
Cap07Cap07
Cap07
 
Cap02
Cap02Cap02
Cap02
 
Cap01
Cap01Cap01
Cap01
 
Tecnologias De Redes De Computadores
Tecnologias De Redes De ComputadoresTecnologias De Redes De Computadores
Tecnologias De Redes De Computadores
 

Semelhante a Cap03

Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação12anogolega
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimosCleide Soares
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmosslashmelhor
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoRegis Magalhães
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosElaine Cecília Gatto
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfEizoKato
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfEizoKato
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmospronatecvja
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmiadiogoa21
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxItamarGoncalves2
 
Aula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxAula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxGrsonEgnaciodaConcei
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4spawally
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 

Semelhante a Cap03 (20)

Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimos
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de Algoritmos
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmos
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmia
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Excel VBA: Aula 2
Excel VBA: Aula 2Excel VBA: Aula 2
Excel VBA: Aula 2
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
134
134134
134
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 
Aula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxAula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptx
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
PDF.pdf
PDF.pdfPDF.pdf
PDF.pdf
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 

Mais de mvbahamut (14)

Cap05
Cap05Cap05
Cap05
 
Cap04
Cap04Cap04
Cap04
 
Cap03
Cap03Cap03
Cap03
 
Cap02
Cap02Cap02
Cap02
 
Cap01
Cap01Cap01
Cap01
 
Cap06
Cap06Cap06
Cap06
 
Cap07
Cap07Cap07
Cap07
 
Cap06
Cap06Cap06
Cap06
 
Cap05
Cap05Cap05
Cap05
 
Cap04
Cap04Cap04
Cap04
 
Cap03
Cap03Cap03
Cap03
 
Cap02
Cap02Cap02
Cap02
 
Cap09
Cap09Cap09
Cap09
 
Cap08
Cap08Cap08
Cap08
 

Cap03

  • 1. Capítulo 3 ALGORITMOS O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, como uma forma de indicar o caminho para a solução dos mais variados problemas. Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos. Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando linguagens semelhantes às linguagens de programação e outras utilizando formas gráficas. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios. 1. CONCEITO DE ALGORITMO A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas dispositivos mecânicos (como as máquinas industriais), eletrônicos (como os computadores), ou de natureza mista (como os robôs). Para que a automação de uma tarefa seja bem-sucedida é necessário que a máquina que passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficiência, de modo a garantir a repetibilidade do mesmo. Assim, é necessário que seja especificado com clareza e exatidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqüência em que estas fases devem ser realizadas. À especificação da seqüência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo. Embora esta definição de algoritmo seja correta, podemos definir algoritmo, de maneira informal e completa como: Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída.
  • 2. Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de saída, e satisfazer a propriedade da efetividade, isto é, todas as operações especificadas no algoritmo devem ser suficientemente básicas para que possam ser executadas de maneira exata e num tempo finito. Na prática não é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o problema proposto e o faz exatamente. Para se ter um algoritmo, é necessário:  Que se tenha um número finito de passos  Que cada passo esteja precisamente definido, sem possíveis ambigüidades  Que existam zero ou mais entradas tomadas de conjuntos bem definidos  Que existam uma ou mais saídas  Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo finito. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador. 2. FORMAS DE REPRESENTAÇÃO DE ALGORITMOS Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. Algumas formas de representação de algoritmos tratam dos problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado, existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer a idéia principal, o algoritmo, dificultando seu entendimento. Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam:  a Descrição Narrativa  o Fluxograma Convencional  o Diagrama de Chapin  o Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol 2.1. DESCRIÇÃO NARRATIVA Nesta forma de representação, os algoritmos são expressos diretamente em linguagem natural. Como por exemplo, têm-se os algoritmos seguintes:  Troca de um pneu furado:  Afrouxar ligeiramente as porcas  Suspender o carro  Retirar as porcas e o pneu
  • 3.  Colocar o pneu reserva  Apertar as porcas  Abaixar o carro  Dar o aperto final nas porcas  Cálculo da média de um aluno:  Obter as notas da primeira e da segunda prova  Calcular a média aritmética entre as duas  Se a média for maior ou igual a sete, o aluno foi aprovado, senão ele foi reprovado Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. Por exemplo, a instrução “afrouxar ligeiramente as porcas” no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: “afrouxar a porca, girando-a de 30º no sentido anti-horário”. 2.2. FLUXOGRAMA CONVENCIONAL OU DIAGRAMA DE BLOCOS É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintas. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma unidade de armazenamento de dados ou um monitor de vídeo. A figura abaixo mostra as principais formas geométricas usadas em fluxogramas. Início e final do fluxograma Decisão Operação de entrada de dados Seta de Fluxo de Dados Conector utilizado quando é preciso Operação de saída de dados em particionar o diagrama, colocando impressora uma letra ou número no símbolo para identificar os pares da conexão Operação de saída de dados em Conector específico para indicar vídeo conexão do fluxo de execução em outra página Operações de atribuição e Preparação – operações que utilizam chamada ou retorno de uma chave que modifica a execução subalgoritmo do programa Principais formas geométricas usadas em fluxogramas
  • 4. De modo geral, o fluxograma se resume a um único símbolo inicial, por onde a execução do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido, representando a existência de uma única seqüência de execução das instruções. Isto pode ser mais bem visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída (normalmente dois caminhos), representando uma bifurcação no fluxo. Um diagrama de blocos é uma forma de fluxograma usada e desenvolvida por profissionais da programação, tendo como objetivo descrever o método e a seqüência do processo dos planos num computador. Pode ser desenvolvido em qualquer nível de detalhe que seja necessário. Quando se desenvolve um diagrama para o programa principal, por exemplo, seu nível de detalhamento pode chegar até as instruções. Esta ferramenta usa diversos símbolos geométricos, os quais estabelecerão as seqüências de operações a serem efetuadas em um processamento computacional. Após a elaboração do diagrama de bloco, é realizada a codificação do programa. A figura a seguir mostra a representação do algoritmo de cálculo da média de um aluno sob a forma de um fluxograma. 2.3. DIAGRAMA DE CHAPIN O diagrama foi criado por Ned Chapin a partir de trabalhos de Nassi-Shneiderman, os quais resolveram substituir o fluxograma tradicional por um diagrama que apresenta uma visão hierárquica e estruturada da lógica do programa. A grande vantagem de usar este tipo de diagrama é a representação das estruturas que tem um ponto de entrada e um ponto de saída e são compostas pelas estruturas básicas de controle de seqüência, seleção e repartição. Enquanto é difícil mostrar o embutimento e a recursividade com o fluxograma tradicional, torna-se mais simples mostrá-lo com o diagrama de Chapin, bem como codificá-lo futuramente na conversão de código português estruturado ou pseudocódigos. A figura abaixo apresenta um exemplo do tipo de diagrama de Chapin para o algoritmo de cálculo da média de um aluno.
  • 5. 2.4. PSEUDOCÓDIGO Esta forma de representação de algoritmos, também conhecida como português estruturado ou portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos. Ela encontra muita aceitação, sendo, portanto a forma de representação de algoritmos que utilizaremos nesta disciplina. Na verdade, esta representação é suficientemente geral para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta. Representação de Um Algoritmo na Forma de Pseudocódigo A representação de um algoritmo na forma de pseudocódigo é a seguinte: algoritmo <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> inicio <corpo_do_algoritmo> fim. onde:  Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma de pseudocódigo.  <nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a finalidade de distingui-lo dos demais.  <declaração_de_variáveis> consiste em uma porção opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos.  <subalgoritmos> consiste de uma porção opcional do pseudocódigo onde são definidos os subalgoritmos.  Início e Fim são respectivamente as palavras que delimitam o início e o término do conjunto de instruções do corpo do algoritmo. Como exemplo, a seguir é mostrado a representação do algoritmo de cálculo da média de um aluno na forma de um pseudocódigo.
  • 6. algoritmo media_aluno var N1, N2, media inicio leia N1, N2 media <- (N1+N2)/2 se media >= 7 entao escreva “Aprovado” senao escreva “Reprovado” fim 3. UM AMBIENTE PARA DESCREVER ALGORITMOS Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos. O nosso computador hipotético apresentará a seguinte organização: Cada uma das partes constituintes da figura acima tem os seguintes significados: (1) Dispositivo de entrada (o teclado): meio pelo qual os dados que serão trabalhados pelo algoritmo vão ser introduzidos em nosso computador hipotético; (2) Unidade Lógica e Aritmética (ULA): parte responsável pelas operações matemáticas e avaliações lógicas; (3) Unidade de Controle: exerce controle sobre as demais partes do nosso computador. É uma verdadeira gerente que distribui tarefas às outras unidades; (4) Memória: guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operações ficam guardados na memória; (5) Dispositivo de Saída (vídeo e impressora): meio que se dispõe para apresentação dos resultados obtidos.
  • 7. 3.1. FUNCIONAMENTO DO NOSSO COMPUTADOR Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer computador pode executar: a) operações de entrada e saída: ler dados do teclado e escrever dados na tela são exemplos destas operações. Elas servem para introduzir dados na memória do nosso computador e exibir dados que já estejam lá armazenados; b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição, subtração, multiplicação e divisão); c) operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições lógicas (2>6 ? X=Y ?); d) movimentação de dados entre os vários componentes: as operações aritméticas são executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para essa unidade e da volta do resultado final para ser guardado na memória. 3.2. RESOLVENDO UM PROBLEMA Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão informados, calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa tarefa, seria bem provável que utilizasse os passos a seguir: a) saber quais são os números; b) calcular a soma dos números; c) responder à questão com o valor do resultado. Vejamos como seria resolvido esse mesmo problema em termos das operações básicas citadas anteriormente: a) operação de entrada de dados dos números ; b1) movimento do valor dos números entre a memória e a ULA; b2) operação aritmética de somar os 2 números; b3) movimentação do resultado da ULA para guardar na memória; c) operação de saída do resultado, que está guardado na memória, para o dispositivo de saída desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operação matemática, não sendo explicitados. Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operações básicas citadas. Esses passos que compõem o algoritmo são denominados de comandos. Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível). A seqüência de
  • 8. operações básicas, dada anteriormente, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador hipotético. Em uma linguagem de alto nível teríamos um resultado assim: Leia X,Y SOMA X + Y Escreva SOMA EXERCÍCIOS PROPOSTOS Questão 01: Crie uma seqüência lógica para tomar banho. Construa um fluxograma para seu algoritmo. Questão 02: Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número. Construa um fluxograma para seu algoritmo. Questão 01: Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes. Construa um fluxograma para seu algoritmo.