Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 FACULDADE DE COMPUTAÇÃO E INFORMÁTICA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Introdução a Programação – Aula 2 – 2º SEMESTRE/2013 TEORIA: ALGORITMOS – PARTE (II): FORMAS DE RESOLUÇÃO DE PROBLEMAS Nossos objetivos nesta aula são: compreender e utilizar as fases típicas de resolução de problemas desenvolver algumas estratégias específicas para cada tipo de problema resolver alguns problemas simples, utilizando o formalismo algorítmico apropriado praticar com resolução de problemas, utilizando algumas ferramentas para testar ideias algorítmicas A referência para esta aula é o Capítulo 2 (O raciocínio e as formas de resolução de problemas) do nosso livro-texto: Piva Jr., D. et al. Algoritmos e Programação de Computadores. Rio de Janeiro: Elsevier, 2012. Não deixem de ler este capítulo após a aula de hoje! Na nossa aula passada, aprendemos a relação entre problemas e algoritmos: um algoritmo resolve um determinado problema. Nesta aula, estabeleceremos uma sequência genérica de passos para se resolver problemas, com o objetivo de minimizar o processo de tentativa e erro na obtenção de algoritmos. Uma sequência genérica1 de passos para se resolver problemas pode ser posta como: 1. Saiba o que deve ser feito 2. Imagine possíveis soluções 3. Avalie as soluções levantadas 4. Uma vez escolhida uma solução, reavalie esta escolha durante o progresso de sua aplicação e, caso a solução não se mostre viável, volte ao passo 2 para imaginar novas soluções. 1 Polya, G. A arte de Resolver Problemas. Editora Interciência: Rio de Janeiro, 1978. 2 O passo 2 (imaginar as soluções), normalmente, exige que o programador faça abstrações. Abstrair significa, de uma forma bem genérica, formar imagens mentais do problema e dos possíveis passos para resolvê-lo. Muitas vezes, recorremos à construção de modelos matemáticos para produzir estas abstrações. Assim, estabeleceremos entre o mundo concreto (onde está o problema) e o mundo matemático (onde pode estar a solução). Abaixo, tem-se uma sequência de passos (derivada da sequência genérica vista anteriormente) para se estabelecer esta relação: Fonte: Piva Jr., D. et al. Algoritmos e Programação de Computadores. Rio de Janeiro: Elsevier, 2012, pag. 38. EXERCÍCIO TUTORIADO Um buquê de flores com 6 rosas e 4 margaridas custou R$ 50,00. Sabendo que cada margarida custou R$ 3,00 a mais do que uma rosa, determine o preço de cada rosa e de cada margarida. Resolva este problema utilizando os 9 passos listados no diagrama acima. 3 Uma vez que tenhamos resolvido um problema, vamos descrever as etapas de sua resolução na forma algorítmica, ou seja, passo a passo. Existem diversas formas para descrever uma solução algorítmica. Nesta aula (e durante grande parte da nossa disciplina) vamos utilizar duas formas básicas: fluxograma e português estruturado (também conhecido como portugol ou pseudocódigo). Uma vez que tenhamos a descrição algorítmica, podemos facilmente escrever um programa para esta descrição na linguagem de nossa preferência. Assim, é importante novamente ressaltar que o importante para se resolver um problema é a descrição algorítmica da solução e não a linguagem de programação. Um fluxograma é uma representação gráfica de um procedimento, problema ou sistema, cujas etapas ou módulos são ilustrados de forma encadeada por meio de símbolos geométricos interconectados. Um sinônimo normalmente utilizado para fluxograma é diagrama de fluxo. A tabela abaixo mostra alguns dos elementos geométricos (existem outros) mais utilizados em fluxogramas: Fonte: Piva Jr., D. et al. Algoritmos e Programação de Computadores. Rio de Janeiro: Elsevier, 2012, pag. 40. 4 EXERCÍCIO TUTORIADO Vamos considerar, novamente, o primeiro problema visto na aula passada: obter dois números, somá-los e mostrar o resultado da soma. Construa um fluxograma, utilizando a notação da tabela anterior, para descrever um algoritmo que resolva este problema. EXERCÍCIO COM DISCUSSÃO EM DUPLAS Consideremos, agora, o segundo problema visto na aula passada: obter dois números e mostrar qual o maior deles. Construa um fluxograma, utilizando a notação da tabela anterior, para descrever um algoritmo que resolva este problema. 5 O português estruturado (ou portugol ou pseudocódigo) também possui elementos chamados comandos que possibilitam descrever a solução de forma textual. O nome português estruturado vem do fato de estarmos utilizando a Língua Portuguesa na descrição textual. Porém, isto pode ser feito em qualquer língua. Por isto, muitos autores preferem usar o nome pseudocódigo para sair desta dependência da língua. Diferente dos algoritmos, não há uma notação padronizada para português estruturado. Assim, para a nossa disciplina, vamos fixar a notação mostrada na tabela abaixo: Fonte: Piva Jr., D. et al. Algoritmos e Programação de Computadores. Rio de Janeiro: Elsevier, 2012, pag. 43. Observe que, para cada elemento no fluxograma, há um comando correspondente em português estruturado e vice-versa. Assim, você poderá utilizar qualquer um deles para descrever o seu algoritmo. Porém, é importante observar que o português estruturado é o que mais se aproxima de uma linguagem de programação. Assim, pode ficar mais simples a transposição de um algoritmo em português estruturado para uma linguagem de programação do que a partir de um fluxograma. 6 EXERCÍCIO TUTORIADO Transforme o fluxograma do algoritmo para somar dois números para português estruturado. EXERCÍCIO COM DISCUSSÃO EM DUPLAS Transforme o fluxograma do algoritmo para mostrar qual o maior de dois números para português estruturado. Com base nestas duas descrições, vamos testá-las em laboratório com o VisualAlg e Java. 7 ATIVIDADES DE LABORATÓRIO Para a nossa primeira atividade de laboratório, considere o primeiro algoritmo (em pseudocódigo) visto em aula, para somar dois números: INICIO LEIA (X) LEIA (Y) S<- X+Y ESCREVA (S) FIM Seguindo as instruções de seu professor, transforme este algoritmo para a notação do VisuAlg e teste a sua execução: Seguindo as instruções de seu professor, implemente este algoritmo em Java e teste a sua execução: 8 ATIVIDADES DE LABORATÓRIO Para a nossa segunda atividade de laboratório, considere o segundo algoritmo (em pseudocódigo) visto em aula, para mostrar o maior de dois números: LEIA (X) LEIA (Y) SE (X > Y) ENTÃO ESCREVA (X) SENÃO ESCREVA (Y) Seguindo as instruções de seu professor, transforme este algoritmo para a notação do VisuAlg e teste a sua execução: Seguindo as instruções de seu professor, implemente este algoritmo em Java e teste a sua execução: 9 EXERCÍCIOS EXTRA-CLASSE 1. Ler integralmente o Capítulo 2 do livro-texto, base desta aula. Não se preocupe ainda com as linguagens Pascal, C e PHP que aparecem no texto. Na próxima semana, teremos a oportunidade de estudar um pouco destas linguagens. 2. Faça um algoritmo que leia dois números e mostre o menor deles. Descreva o seu algoritmo em fluxogramae em pseudocódigo. Simule seu algoritmo em VisualAlg e faça uma implementação em Java. 3. Faça um algoritmo que receba o salário de um funcionário, calcule e mostre o novo salário, sabendo que ele sofreu um aumento de 15%. Descreva o seu algoritmo em fluxograma e em pseudocódigo. Simule seu algoritmo em VisualAlg e faça uma implementação em Java. [Dica de implementação: para trabalhar com números “quebrados” em VisuAlg, utilize o tipo real. Em Java, utilize o tipo double.] 4. Sabe-se que o valor de cada 1000 litros de água corresponde a 2% do salário mínimo. Faça um algoritmo que receba o valor do salário mínimo e a quantidade de água consumida em uma residência por mês. Calcule e mostre: a. O valor da conta de água. b. O valor a ser pago com desconto de 15%. Descreva o seu algoritmo em fluxograma e em pseudocódigo. Simule seu algoritmo em VisualAlg e faça uma implementação em Java.
Compartilhar