LabMM3 - Aula teórica 02
Upcoming SlideShare
Loading in...5
×
 

LabMM3 - Aula teórica 02

on

  • 1,656 views

Introdução à algoritmia

Introdução à algoritmia
(conteúdos adaptados dos slides de edições anteriores da Unidade Curricular)

Statistics

Views

Total Views
1,656
Views on SlideShare
1,652
Embed Views
4

Actions

Likes
2
Downloads
117
Comments
0

1 Embed 4

http://paper.li 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    LabMM3 - Aula teórica 02 LabMM3 - Aula teórica 02 Presentation Transcript

    • Introdução à algoritmiaCarlos SantosLabMM 3 - NTC - DeCA - UAAula 02, 15-09-2011
    • O que é um programa?• Um programa é um conjunto de instruções que: • tem como objectivo a resolução de um ou vários problemas; • é normalmente escrito com o apoio de uma linguagem de computador; • é interpretado e executado por uma máquina/computador.
    • O que é programar?• É o acto de ordenar um conjunto de instruções pré-definidas de forma lógica, com o objectivo de resolver um problema. • O que é a lógica ? • “É a ciência que estuda as leis e critérios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio.” (Manzano, 2000: 3) • Usar o “raciocínio” lógico implica compreender os processos de geração de conhecimento, implica seguir uma sequência coerente e regular de acontecimentos.
    • Passos a seguir no acto de programar1. Definir o problema e identificar todas as suas especificidades;2. Escolher a estratégia ou método para a resolução do problema;3. Resolver o problema numa sequência lógica de instruções;4. Codificar essas instruções numa linguagem de programação (JavaScript, Actionscript, Pascal, Java, C, C++, Objective C,….);5. Testar e corrigir erros;6. Documentar o programa.
    • 1. Definição do problema• Identificar claramente: • Qual o objectivo final a atingir com a resolução do problema? • Quais os dados e que tipo de dados estão em causa? • Quais as variantes que o problema pode ter e em que situações? • Quais os limites dos dados?
    • 1. Definição do problema• Para dar resposta a estas questões devem ser definidas: • Especificações de entrada (input de dados) • Especificações de saída (output de dados) • Variações (condicionantes, variantes em função de determinadas condições)
    • 2. Estratégias ou métodos de resolução deproblemas• Estratégia Top-down • baseada na divisão do problema em sub-problemas resolvendo um a um para chegar ao todo. Abordagem dos problemas gerais para a especificidade. Aplica-se a programação estruturada.• Estratégia Bottom-up • baseada na divisão do problema em sub-problemas mas partindo das especificidades conhecidas, evolui definindo as condições de combinação das especificidades num todo complexo.• Estratégia tentativa-erro • sequência de tentativas e experiências até atingir a solução correcta.
    • 2. Estratégias ou métodos de resolução deproblemas• E na prática? • divisão entre estratégias não é totalmente “estanque”; • uma combinação de métodos é aplicada dependendo do problema e da experiência do programador.• 1ª regra na adopção de estratégias é não “desesperar” perante um problema que pode parecer demasiado complicado!
    • 3. Resolução do problema• ... desenvolver um algoritmo capaz de dar resposta a todas as necessidades do problema. • O que é um algoritmo? • Um algoritmo é uma sequência de instruções delimitadas, um conjunto de passos claros e objectivos, que permitem resolver um problema ou problemas.• O acto de construir algoritmos é programar! • Descrever algoritmos consiste na representação gráfica ou numa linguagem próxima do homem dos processos de resolução e surge como um passo intermédio à codificação numa linguagem de computador.
    • Características de um algoritmo• Etapas fundamentais de um algoritmo: • input de dados • processamento • output de dados
    • Características de um algoritmo Os algoritmos, segundo Donald E. Knuth, têm cinco características importantes: • Finitude • Todos os passos definidos num algoritmo têm de ter um fim previsto, não podem ser deixados condicionantes que levem à infinitude. • Definitude • Um algoritmo e os seus passos têm de ser definidos até à exaustão, não pode ser deixada qualquer ambiguidade que leve à indefinição de instruções para o computador. (Donald E. Knuth, "Fundamental algorithms", V1 de "The Art of Computer Programming", 2ª edição, Addison- Wesley Publishing Company, Reading, Massachusetts, 1973.)
    • Características de um algoritmo • Entrada • Para a definição de um algoritmo é necessário identificar os dados de entrada, se existirem. • Saída • O algoritmo procura a resolução de um problema e portanto terá de produzir dados de saída, é necessário identificar os dados ou métodos de saída. • Eficácia • Os passos de um algoritmo não devem ultrapassar um nível de complexidade que não possam ser entendidos ou executados pelo programador o que leva a problemas em implementar, testar e corrigir.
    • Como “escrever” um algoritmo? Diferentes técnicas de representação: • Pseudo-código + linguagem próxima de língua natural + facilidade de representação e entendimento - pode conduzir a erros de interpretação - menor objectividade
    • Como “escrever” um algoritmo? • Fluxograma ou diagramas de blocos + representação por diagramas padronizados + objectivo e sintético - exige o conhecimento dos símbolos e métodos de representação de processos • Linguagem de programação • programadores experimentes têm a capacidade e o conhecimento necessário para escrever soluções de problemas directamente na linguagem de programação. Não deve ser considerada uma técnica de representação de algoritmos
    • Pseudo-código• Português estruturado e simplificado para evitar redundâncias• Menos rigoroso que as L.P. para facilitar o entendimento• Cada expressão deve ser colocada numa linha separada, usar a indentação• Colocar comentários precedidos de *• Cada algoritmo deve ser delimitado por INICIO e 1 ou vários FIM• Termos e expressões reservadas em MAIÚSCULAS• Exemplo ferramenta: http://fernando.softdr.com/produtos/ipe.html
    • Pseudo-código
    • Pseudo-código (exemplo)• Exemplo de um algoritmo para lavar a roupa na máquina (1) - 3 passos INICIO Colocar a roupa na máquina Iniciar o programa de lavagem Retirar a roupa da máquina FIM
    • Pseudo-código (exemplo)• Exemplo de um algoritmo para lavar a roupa na máquina (2) INICIO Colocar a roupa na máquina Fechar o óculo da máquina Colocar detergente na máquina Iniciar o programa de lavagem REPETIR ENQUANTO o programa não termina ver estado do programa FIM DE REPETIÇÃO Retirar a roupa da máquina FIM
    • Pseudo-código (exemplo)• Exemplo de um algoritmo para lavar a roupa na máquina (3) INICIO SE óculo da máquina fechado ENTÃO abrir óculo da máquina FIM SE Colocar a roupa na máquina Fechar o óculo da máquina Colocar detergente na máquina (...) Iniciar o programa de lavagem EXECUTAR programa de lavagem REPETIR ENQUANTO o programa não termina ver estado do programa FIM DE REPETIÇÃO Abrir óculo da máquina Retirar a roupa da máquina Fechar óculo da máquina FIM
    • Fluxograma• Conceito • Representação padronizada, pela utilização de símbolos definidos, da sequência de instruções e processos lógicos de um algoritmo.• Vantagens + objectividade + clareza na interpretação + facilita a transposição para qualquer linguagem de programação
    • Fluxograma• Principais símbolos utilizados num fluxograma ou num diagrama de blocos (norma ISO 5807: 1985)
    • Fluxogramas• Como desenhar? • Papel e lápis são sempre um excelente ponto de partida! • Ferramentas específicas: • Aplicações locais: • Microsoft Visio • OmniGraffle (mac) • Online: • Gliffy • ...
    • Fluxograma (exemplo)• Exemplo de um algoritmo para lavar a roupa na máquina (1) - 3 passos INICIO Colocar a roupa na máquina Iniciar o programa de lavagem Retirar a roupa da máquina FIM
    • Fluxograma (exemplo)• Exemplo de um algoritmo para lavar a roupa na máquina (2) INICIO Colocar a roupa na máquina Fechar o óculo da máquina Colocar detergente na máquina Iniciar o programa de lavagem REPETIR ENQUANTO o programa não termina ver estado do programa FIM DE REPETIÇÃO Retirar a roupa da máquina FIM
    • Fluxograma (exemplo)• Ex. de um algoritmo para lavar a roupa na máquina (3) INICIO SE óculo da máquina fechado ENTÃO abrir óculo da máquina FIM SE Colocar a roupa na máquina Fechar o óculo da máquina Colocar detergente na máquina (...) Iniciar o programa de lavagem EXECUTAR programa de lavagem REPETIR ENQUANTO o programa não termina ver estado do programa FIM DE REPETIÇÃO Abrir óculo da máquina Retirar a roupa da máquina Fechar óculo da máquina FIM
    • Outras questões a resolver...• E se a máquina de lavar estivesse a funcionar?• (sugestões de outros problemas...)
    • Fluxograma (exemplo)• Ex. de um algoritmo para lavar a roupa na máquina (3) INICIO SE óculo da máquina fechado ENTÃO abrir óculo da máquina FIM SE Colocar a roupa na máquina Fechar o óculo da máquina Colocar detergente na máquina (...) Iniciar o programa de lavagem EXECUTAR programa de lavagem REPETIR ENQUANTO o programa não termina ver estado do programa FIM DE REPETIÇÃO Abrir óculo da máquina Retirar a roupa da máquina Fechar óculo da máquina FIM