IEC037 Introdução à Programação de Computadores Aula 02 – Método de Resolução de Problemas Turma: 03 Professor: Leandro Galvão E-mail: [email protected] Página: ipc-t03.weebly.com Problema Inicial Qual a resposta da figura abaixo? Conteúdo 1. Introdução à lógica 2. Introdução ao método de resolução de problemas Lógica Arte do bem pensar Vem do grego logos, que significa “linguagemdiscurso e pensamento-conhecimento” Estuda e ensina a colocar “ordem no pensamento” Normalmente associada à Matemática, mas é uma ferramenta das demais ciências O que acontece quando não utilizamos a Lógica? Trabalhos desordenados Complexidade em tarefas simples Retrabalho Onde e quando utilizamos a Lógica? Pensar Falar, argumentar Escrever Proceder corretamente Como podemos exercitar? Exercícios Jogos Programando Exemplo 1 Rosa é mãe de Ana Paula é filha de Rosa Júlia é filha de Ana Logo, Júlia é neta de Rosa e sobrinha de Paula. Rosa Ana Júlia Paula Exemplo 2 Todo mamífero é animal. Todo cavalo é mamífero. Logo, todo cavalo é animal. Todo que bebe leite é mamífero. Seres humanos bebem leite. Logo, todo ser humano é mamífero. (e é animal, mas não um cavalo ) Exemplo 3 Qual o valor de X na sequência abaixo? 5 7 9 11 13 15 17 5+2=7 7 + 2 = 9, etc. Logo, 17 + 2 = 19. X é 19. X Exemplo 4 E na sequência abaixo? 12 13 15 18 22 27 33 12 + 1 = 13 13 + 2 = 15 15 + 3 = 18, etc. Logo, 33 + 7 = 40. X é 40. X Conteúdo 1. Introdução à lógica 2. Introdução ao método de resolução de problemas Resolução de problemas Diariamente, deparamo-nos com os mais variados tipos de problemas Tipos de problemas Heurísticos Não podem ser resolvidos através de uma série direta de ações Exemplos: Expandir uma empresa Tornar um quadro ‘bonito’ Convocar jogadores de futebol para a seleção Algorítmicos Podem ser resolvidos com uma série de ações Exemplos: Fazer um bolo Pagar contas vencidas Controlar a temperatura de um ambiente fechado Algoritmo Uma sequência finita e ordenada de passos sem ambiguidade que leva à resolução de um problema em um tempo finito. Sequência Ordem Pensar com ordem Utilizar a lógica Origem da palavra: Sobrenome do matemático persa do século IX, Mohamed ben Musa Al-Khowarizmi. Algoritmo Pode haver várias soluções para um mesmo problema → pode haver vários algoritmos Todos devem chegar ao resultado (objetivo) desejado de forma correta; Uns algoritmos podem ser mais rápidos e outros mais seguros; Objetivo Resolução de Problemas Algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo 4 Converter o algoritmo em linguagem de programação 5 Testar solução Fim Refinar passo a passo Resolução de Problemas Algorítmicos 1 – Identificar o problema Em sala de aula: enunciados Fora de sala: necessário identificar Resolução de Problemas Algorítmicos 2 – Definir Entradas e Saídas Entradas: Todos os recursos e informações que o sistema precisa para chegar ao seu objetivo. Saída: o resultado esperado pelo sistema. Processamento: tratamento dado à entrada visando chegar ao objetivo final (saída). Entradas ? Saídas Resolução de Problemas Algorítmicos 3 – Projetar o algoritmo Você já resolveu um problema similar? Analogia – enunciado diferente, mas estrutura de solução é semelhante. Generalização – solução particular é conhecida, mas deseja-se uma solução geral. Especialização – conhece-se a solução geral, que serve de base para uma particular. Decomposição – se o problema é complicado, pode ser quebrado em partes menores. Redução – Se um problema é difícil, tente resolver um mais simples. Resolução de Problemas Algorítmicos 4 – Converter o algoritmo em declarações Vocabulário humano Vocabulário da máquina Resolução de Problemas Algorítmicos 5 – Testar o programa resultante Teste o algoritmo com diversos dados de entrada e verifique os resultados. Sem resultados? verifique problema de sintaxe Conjunto de regras que determinam a ordem e as relações das palavras na frase Há resultados? verifique se estão corretos Resultados incorretos? verifique as condições, operações ou ordem dos passos Problema 1 Fazer um robô chegar ao ladrilho marcado com um ponto, contornando os obstáculos. Processo de resolução de problemas algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo 4 Converter o algoritmo em linguagem de programação 5 Testar solução Fim Refinar passo a passo Problema 1 1 • Identificar o problema Robô deve ser guiado a um ladrilho indicado. Robô não pode ocupar o mesmo ladrilho que contém uma caixa. Robô não pode atravessar as paredes do mapa. Quais os movimentos que o robô pode fazer? Problema 1 2 • Definir entradas e saídas Entradas mapa ladrilho inicial do robô Saídas robô sobre o ladrilho com ponto Problema 1 • Projetar o algoritmo 3 1. 2. 3. 4. 5. Frente Direita Frente Frente Esquerda Problema 1 4 • Converter o algoritmo em declarações da linguagem de programação Mais tarde neste curso Problema 1 • Testar o programa resultante 5 1. 2. 3. 4. 5. Frente Direita Frente Frente Esquerda Problema 2 Um pastor diz para outro: “Dê-me um de seus carneiros que ficamos com igual número de carneiros.” O outro responde: “Nada disso, dê-me um de seus carneiros que ficarei com o dobro dos seus”. Quantos carneiros têm cada um? Processo de resolução de problemas algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo 4 Converter o algoritmo em linguagem de programação 5 Testar solução Fim Refinar passo a passo Problema 2 1 • Identificar o problema Determinar quantos carneiros tem cada um dos dois pastores X e Y Problema 2 2 • Definir entradas e saídas Dê-me um de seus carneiros que ficamos com igual número de carneiros X+1=Y–1 Y + 1 = 2(X – 1) Dê-me um de seus carneiros que ficarei com o dobro dos seus Entradas Saídas X Y Problema 2 3 • Projetar o algoritmo 1. Isolar o X na primeira equação X=Y–2 2. Substituir X na segunda equação 2((Y – 2) – 1) = Y + 1 3. Encontrar o valor de Y Y=7 4. Substituir Y na primeira equação X+1=7–1 5. Encontrar o valor de X X=5 6. Apresentar X e Y X=5eY=7 Problema 2 4 • Converter o algoritmo em declarações da linguagem de programação Mais tarde neste curso Problema 2 5 • Testar o programa resultante X=5eY=7 X+1=Y–1 Y + 1 = 2(X – 1) 5+1=7–1 7 + 1 = 2(5 – 1) Problema Inicial Qual a resposta da figura abaixo? Processo de resolução de problemas algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo 4 Converter o algoritmo em linguagem de programação 5 Testar solução Fim Refinar passo a passo Problema Inicial 1 • Identificar o problema Quantos e quais animais se equilibram com o carneiro? Problema Inicial 2 • Definir entradas e saídas Entradas Saídas lobo + carneiro + macaco = porco porco = 4 lobos 2 lobos = 4 macacos carneiro Problema Inicial 3 • Projetar o algoritmo lobo + carneiro + macaco = porco porco = 4 lobos 2 lobos = 4 macacos Isolar lobos em Equação 3 → Substituir lobos em Equação 2 → Substituir lobo e porco na Equação 1 → Guardar o resultado em carneiro Apresentar carneiro (Equação 1) (Equação 2) (Equação 3) lobo = 2 macacos porco = 8 macacos carneiro = 5 macacos Problema Inicial 4 • Converter o algoritmo em declarações da linguagem de programação Mais tarde neste curso Problema Inicial 5 • Testar o programa resultante • • • 5 macacos, ou 2 lobos e 1 macaco, ou 1 lobo e 3 macacos. Para praticar Light-Bot | armorgames.com/play/6061/light-bot-20 Para praticar Robozzle | www.robozzle.com Referências bibliográficas Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec. Farrer, Harry (2011). Algoritmos Estruturados, 3ª edição. Editora LTC. Forbellone, A. L. V.; Eberspächer, H. F. (2006) Lógica de Programação, 3ª edição. Pearson. HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7. Dúvidas?