(a02) labmm3 - introdução à programação
TRANSCRIPT
![Page 1: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/1.jpg)
Introdução à algoritmia
Carlos SantosLabMM 3 - NTC - DeCA - UAAula 02, 14-09-2012
![Page 2: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/2.jpg)
O que é um programa?
• Um programa é um conjunto de instruções que:
• tem como objetivo 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.
![Page 3: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/3.jpg)
O que é programar?
• É o acto de ordenar um conjunto de instruções pré-definidas de forma lógica, com o objetivo 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.
![Page 4: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/4.jpg)
Passos a seguir no acto de programar
1. 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, PHP, Actionscript, Pascal, Java, C, C++, Objective C,….);
5. Testar e corrigir erros;
6. Documentar o programa.
![Page 5: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/5.jpg)
1. Definição do problema
• Identificar claramente:
• Qual o objetivo final a atingir com a resolução do problema?
• Quais os dados e que tipos de dados estão em causa?
• Quais as variantes que o problema pode ter e em que situações?
• Quais os limites dos dados?
![Page 6: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/6.jpg)
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)
![Page 7: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/7.jpg)
2. Estratégias ou métodos de resolução de problemas
• 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 correta.
![Page 8: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/8.jpg)
2. Estratégias ou métodos de resolução de problemas
• 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 adoção de estratégias é não “desesperar” perante um problema que pode parecer demasiado complicado!
![Page 9: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/9.jpg)
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 objetivos, 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.
![Page 10: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/10.jpg)
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.)
![Page 11: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/11.jpg)
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.
![Page 12: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/12.jpg)
Características de um algoritmo
• Etapas fundamentais de um algoritmo:
• entrada de dados (input)
• processamento dos dados
• output de dados (output)
![Page 13: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/13.jpg)
Desafio para a próxima OT
• Exercício a lançar para recordar entrada e saída de dados com JavaScript
• enunciado lançado online
• resolução em casa
• esclarecimento de dúvidas online e na OT
![Page 14: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/14.jpg)
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 objetividade
![Page 15: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/15.jpg)
Como “escrever” um algoritmo?
• Fluxograma ou diagramas de blocos
+ representação por diagramas padronizados
+ objetivo 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 diretamente na linguagem de programação. Não deve ser considerada uma técnica de representação de algoritmos
![Page 16: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/16.jpg)
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 um ou vários FIM
• Termos e expressões reservadas em MAIÚSCULAS
![Page 17: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/17.jpg)
Pseudo-código
![Page 18: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/18.jpg)
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
+ objetividade
+ clareza na interpretação
+ facilita a transposição para qualquer linguagem de programação
![Page 19: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/19.jpg)
Fluxograma
• Principais símbolos utilizados num fluxograma ou num diagrama de blocos (norma ISO 5807: 1985)
![Page 20: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/20.jpg)
Fluxograma
• Principais símbolos utilizados num fluxograma ou num diagrama de blocos (norma ISO 5807: 1985)
XX X X
![Page 21: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/21.jpg)
Fluxogramas
• Como desenhar?
• Papel e lápis são um excelente ponto de partida!
• Ferramentas específicas:
• Aplicações locais:
• Microsoft Visio
• OmniGraffle (mac)
• Online:
• Gliffy
![Page 22: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/22.jpg)
E “no antigamente”? :)
IBM Data Processing Techniques, Flowcharting Techniques (1969)http://www.fh-jena.de/~kleine/history/software/IBM-FlowchartingTechniques-GC20-8152-1.pdf
![Page 23: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/23.jpg)
Exemplos de aplicação
• um recurso com exemplos básicos (pseudo-código e fluxograma)
• http://www.comp.dit.ie/rlawlor/prob_solv/flowcharts/ch03%20Flowchart%20and%20Pseudocode%20Examples.pdf
![Page 24: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/24.jpg)
Como mudar um pneu furado de um carro?
• que passos são necessário?
![Page 25: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/25.jpg)
Como mudar um pneu furado de um carro?
Ver possível solução em:http://www.rff.com/flat_tire.htm
![Page 26: (A02) LabMM3 - Introdução à programação](https://reader033.vdocuments.site/reader033/viewer/2022042614/559d266f1a28abf6518b45e3/html5/thumbnails/26.jpg)
Exemplos
• exemplo da troca de pneu furado e outros exemplos com diferentes níveis de complexidade
• http://www.rff.com/flowchart_samples.htm