O documento define o que é um programa e o ato de programar. Um programa é um conjunto de instruções escritas em uma linguagem de computador para resolver um problema. Programar é ordenar instruções logicamente para resolver um problema. Isso envolve definir o problema, escolher uma estratégia, desenvolver um algoritmo, codificar as instruções, testar e documentar.
2. 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.
3. 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.
4. 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,
Actionscript, Pascal, Java, C, C++, Objective C,….);
5. Testar e corrigir erros;
6. Documentar o programa.
5. 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?
6. 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)
7. 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 correcta.
8. 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 adopção de estratégias é não “desesperar” perante um problema
que pode parecer demasiado complicado!
9. 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.
10. Características de um algoritmo
• Etapas fundamentais de um algoritmo:
• input de dados
• processamento
• output de dados
11. 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.)
12. 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.
13. 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
14. 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
15. 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
17. 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
18. 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
19. 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
20. 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
22. 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
• ...
23. 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
24. 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
25. 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
26. Outras questões a resolver...
• E se a máquina de lavar estivesse a funcionar?
• (sugestões de outros problemas...)
27. 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