Estratégias de
resolução de problemas
Práticas de ensino de algoritmos(Hazzan, Cap. 5) Péricles Miranda
Resolução de Problemas (PS)
• PS é uma das atividades centrais realizadas porcomputeiros.
• No processo de resolução de problemas, estudantes tem dificuldades em:
• Análise do problema
Resolução de Problemas (PS)
• O professor tem que estar ciente destasdificuldades e
Apresentar estratégias para ajudar o estudante a ganhar experiência e desenvolver habilidades.
O que iremos estudar hoje?
Estratégias de resolução de
problemas
Introdução
• Programar é um processo de resolução de problema;
• Desenvolver habilidades em resolver problemas deve ser inicialmente abordado;
• Abstração
• Analogia
• Brainstorming
• Dividir para conquistar
Introdução
Introdução
•
O que acontece hoje no ensino?
• Ensina-se linguagens de programação
• Aluno se vira para desenvolver as habilidade de PS.
Introdução
Processo de PS
• O processo de PS básico é:
• Identificar os requisitos do sistema
• Criar um conjunto de passos que resolve o problema
Processo de PS
• Os passos podem ser vistos como um PROCESSO DE DESCOBERTA.
Muitos autores tratam o processo de PS como um PROCESSO CRIATIVO, como a ARTE.
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas: Pense em diversas
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
• Escolha uma abordagem
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
• Escolha uma abordagem
• Decomponha o problema em sub-tarefas
• Desenvolvimento do algoritmo: desenvolva o
algoritmo em estágios considerando as sub-tarefas
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
• Escolha uma abordagem
• Decomponha o problema em sub-tarefas
• Desenvolvimento do algoritmo
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
• Escolha uma abordagem
• Decomponha o problema em sub-tarefas
• Desenvolvimento do algoritmo
• Verifique a corretude do algoritmo
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
• Escolha uma abordagem
• Decomponha o problema em sub-tarefas
• Desenvolvimento do algoritmo
• Verifique a corretude do algoritmo
• Calcule a eficiência do algoritmo
• Reflita: reflita e analise o processo e verifique se
Processo de PS
• Existem estágios no processo de PS que podem ajudar:
• Análise do problema
• Considerar alternativas
• Escolha uma abordagem
• Decomponha o problema em sub-tarefas
• Desenvolvimento do algoritmo
• Verifique a corretude do algoritmo
• Calcule a eficiência do algoritmo
Entendendo o Problema
• Primeiro estágio do processo de PS;• Objetivo: identificar as características/requisitos do problema
• Entradas
Exercício 1:
Identificação de entradas
e saídas
• Problema: Crie um sistema que simula um caixa
eletrônico com as operações depositar, sacar e transferir.
• Tarefa: Identificar a(s) entrada(s) e saída(s) para
Design da solução
• Estudantes possuem maior dificuldade nesta etapa;
• Existem 3 passos que devem ser seguidos
• Definição de variáveis
• Desenvolvimento progressivo
Design da Solução
Definição das variáveis
• A identificação das entradas e saídas doproblema clarificam o problema;
• A partir deste artefato, pode-se extrair as variáveis
Exercício 2:
Definição das variáveis
• Problema: Crie um sistema que simula um caixa
eletrônico com as operações creditar, debitar e transferir.
• Tarefa: Definir as variáveis necessárias para a
Design da Solução
Desenvolvimento Progressivo
• É uma metodologia top-down que parte de umproblema geral para problemas específicos;
• A ideia principal é dividir o problema em sub-problemas
Design da Solução
Design da Solução
Desenvolvimento Progressivo
• Vantagens• Cada sub-problema possui uma solução mais fácil de implementar e de checar;
• A modularização melhora a legibilidade da solução;
• As soluções dos sub-problemas podem ser
O mais legal é que essa metodologia pode ser
aplicada a qualquer processo de desenvolvimento de
A importância do “Desenvolvimento progressivo” aumenta a medida que a complexidade do problema também aumenta!
Exercício 3:
Quebra em sub-problemas
• Problema: Crie um sistema que simula um caixa
eletrônico com as operações creditar, debitar e transferir.
Design da Solução
Uso de padrões de algoritmos
• Diante de um problema não familiar, comoDesign da Solução
Uso de padrões de algoritmos
• Diante de um problema não familiar, como estudantes irão pensar em soluções?
• Identificar similaridades entre o problema e problemas já resolvidos;
• Transferir ideias destes problemas para problema novo;
• Observar a essência do problema e identificar soluções que podem ser reusadas;
Exemplo Prático
• Problema: Criar um sistema que auxilie o
usuário em sua locomoção de um lugar para outro.
O que já existe que pode nos ajudar
a resolver este problema?
Design da Solução
Uso de padrões de algoritmos
• É de fundamental importância a identificação decomponentes que foram utilizadas em problemas similares;
• Os componentes (se necessário) devem ser adaptados e integrados ao problema atual;
• Em muitos casos, pode-se combinar diferentes componentes no desenvolvimento da solução
Exercício 4:
Reuso de componentes
• Problema: Dobrar o salário dos funcionários da
empresa na folha.
Componentes
MAP: Recebe como parâmetros uma lista de itens e a operação que
deseja realizar sobre os itens, e retorna uma nova lista.
FILTER: Recebe como parâmetros uma lista de itens e uma operação
Booleana que irá operar sobre cada item; e retorna uma nova lista com os itens que satisfazem a operação.
Exercício 5:
Reuso de componentes
• Problema: Selecionar os funcionários
Verificação da solução
• Após o desenvolvimento da solução, sua corretude deve ser examinada.
Como avaliar se a nossa solução está
correta?
Dicas
• Sempre execute mentalmente a sua solução como se fosse o compilador!
Exemplo prático
• Tem um erro neste algoritmo! Como descobrir?
Verificação da solução
• A grande vantagem da execução mental é que você é forçado a refletir sobre a sua solução.
• Além de identificar problemas, você passa a pensar em como aperfeiçoar sua solução!
Alguém já ouviu falar em
Reflexão
• Etapa em que o estudante deve repensar e analisar a sua solução como um todo.
• Exige tempo e prática!
Reflexão
• A reflexão deve acontecer em diversos momentos:
• Antes de começar a resolver o problema: refletir
problemas similares já resolvidos e identificar componentes.
• Enquanto estiver resolvendo: inspecionar,
controlar e supervisionar o que está sendo feito (pode ser feito mentalmente).
• Depois de resolver: identificar problemas e
Reflexão
• Oriente a sua reflexão com perguntas:
• Perguntas a se fazer antes:
• Como estimar a dificuldade do problema? Por que cheguei a esta conclusão?
• Estou com dificuldade em entender alguma parte do problema? Qual parte não está clara?
• Eu já resolvi problemas similares? Quais são? Quais as similaridades?
• Perguntas a se fazer depois
• A solução está completa?
• Por que eu escolhi esse caminho de resolução? O que poderia mudar?
• A resolução teve a dificuldade que eu esperava?
Você deve estar se perguntando:
“Esse processo é muito longo,
tenho que fazer muitas coisas!
Estratégias de
resolução de problemas
Práticas de ensino de algoritmos(Hazzan, Cap. 5) Péricles Miranda