Baixe o app para aproveitar ainda mais
Prévia do material em texto
Construção de Algoritmos Introdução aos conceitos de algoritmos Construção de Algoritmos – Introdução aos conceitos de algoritmos 2 Introdução aos conceitos de algoritmos Este curso tem como objetivo trabalhar o desenvolvimento do raciocínio lógico para a resolução de problemas computacionais. Primeiramente, vamos discutir alguns aspectos importantes para construção de um algoritmo. Geralmente, quando pensamos em programação, temos uma ideia inicial de ser algo difícil, complicado e até mesmo chato. Mas programar é uma arte e está diretamente relacionado a explorar a criatividade, a ter concentração, ao aperfeiçoamento de uma habilidade com o passar do tempo e com a prática. Podemos definir o termo programar como: “É a arte de resolver problemas através da criação de um software”. Se eu pedisse a várias pessoas diferentes para pintar um quadro de uma pessoa, provavelmente teria como resposta: Fonte: Disponível em: < www.corbis.com>. Acesso em: ; Disponível em: <notasaocafe.wordpress.com/category/arte-ao-cafe/>. Acesso em: Como resultado poderíamos ter vários quadros pintados de formas totalmente diferentes. Isto porque cada pessoa pensa de uma forma diferente para resolver um determinado problema. Outros resultados possíveis de quadros seriam: Construção de Algoritmos – Introdução aos conceitos de algoritmos 3 Fonte: Disponível em: <www.corbis.com>. Acesso em: ; Disponível em: <notasaocafe.wordpress.com/category/arte-ao-cafe/>. Acesso em: Afinal, a visão e o pensamento que cada pessoa pode ter para pintar um quadro se diferem. O que é lógica? O uso corriqueiro da palavra lógica está normalmente relacionado à coerência e à racionalidade. Frequentemente se associa lógica apenas à matemática, não se percebendo sua aplicabilidade e sua relação com as demais ciências (Forbellone, 2002). Existem várias definições para lógica. Segundo Forbellone (2002), a lógica pode ser definida como “a arte de pensar bem”. A lógica está relacionada à coerência e a racionalidade. Está relacionada ao que está correto. Sempre que você expressar pensamentos de forma correta, você está sendo lógico. Portanto a lógica se relaciona também com a correção do pensamento, determinando quais operações são válidas ou não. Podemos dizer que: Lógica = colocar “ordem no pensamento”! Construção de Algoritmos – Introdução aos conceitos de algoritmos 4 O que é um algoritmo? Mas o que é um algoritmo? Um algoritmo pode ser definido como “uma sequência finita de ações (instruções) encadeadas segundo uma determinada lógica com o objetivo de solucionar um problema específico”. Ou seja, um algoritmo deve ter uma sequência de passos logicamente encadeados e com início e fim bem determinados. Já uma instrução é a informação que indica a um computador uma ação elementar a ser executada. A instrução tem que ser bem precisa para que o computador consiga processá-la. Imagine o seguinte cenário: um robô está no início de um labirinto e precisa ser guiado por você até o fim do labirinto. Você formula algumas instruções para o robô começar a sua jornada. Guia: -Vire à esquerda! Robô: -Virando para a direita, virando para a direita, virando para a direita... A instrução inicial que você deu ao robô não foi precisa. Portanto o robô ficará infinitamente girando para a direita. Uma instrução correta para o robô seria: “Vire 90º à direita”. Percebem o quanto é importante ter clareza na definição de uma única instrução que seja em um algoritmo? Vamos agora para um exemplo clássico: como fazer um bolo de chocolate? Para resolver esse problema primeiro temos que saber o que é preciso para fazer um bolo de chocolate – quais ingredientes? Depois precisamos saber o como preparar o bolo de chocolate – modo de fazer. O que vai no bolo? Farinha, ovos, leite, açúcar, chocolate, manteiga, maisena e fermento. Mas qual ordem devo seguir para fazer o bolo? Esse é o modo de preparo, ou o algoritmo para fazer um bolo de chocolate. 1. Bater os ovos com a manteiga. 2. Adicionar o açúcar e a farinha aos poucos. 3. Adicionar o leite e bater. 4. Adicionar o chocolate. 5. Misturar o fermento. 6. Despejar a mistura em uma forma untada. 7. Levar ao forno para assar por 30 minutos. 8. Retirar do forno e comer. Construção de Algoritmos – Introdução aos conceitos de algoritmos 5 Os passos devem seguir uma sequência lógica! Analisando o algoritmo para fazer o bolo de chocolate, se os passos forem invertidos, provavelmente não teremos um bolo de chocolate no final, mesmo os passos sendo corretos! A sequência lógica dos passos de um algoritmo é de suma importância. Se analisarmos o passo 6, podemos observar que é um passo macro. Afinal o que é uma forma untada? A partir desse passo podemos elaborar um outro algoritmo contendo somente os passos necessários para resolver o problema de untar uma forma de bolo. Sendo assim, temos aqui um refinamento do algoritmo. Fases de um algoritmo A lógica computacional é fundamentada por entrada dos dados que serão processados para obter a saída. Os dados que entram em processamento sofrem transformações resultantes do processo e uma saída é produzida, representando a solução de um problema (PUGA & RISSETTI, 2009). Todo algoritmo atua em um princípio básico de três fases. São elas: Fase de entrada: corresponde aos possíveis dados de entrada de um algoritmo. Fase de processamento: fase em que condições ou relações devem ser satisfeitas para transformar dados de entrada em uma saída aceitável. Fase de saída: exibe os resultados provenientes das fases anteriores. Vamos identificar cada uma dessas fases do algoritmo no cálculo da média de duas notas. Pense: como é que se resolve um problema de matemática? Primeiro, devem-se identificar os dados que o problema oferece; depois, qual o resultado esperado e, em seguida, como alcançar tal resultado. É assim que fazemos na maioria das vezes. Com algoritmos é a mesma coisa! Construção de Algoritmos – Introdução aos conceitos de algoritmos 6 Para resolver o problema acima, vamos identificar: 1. Quais são as entradas? Analisando o enunciado do problema, temos que as entradas são as próprias notas. Nota1 e nota2. 2. Quais são as saídas, ou seja, aonde se quer chegar? O que o problema pede é o resultado do cálculo da média de duas notas. 3. Qual é o processamento? O próprio cálculo da média, onde média = (nota1 + nota2) / 2. Mas por que identificar primeiro a entrada e a saída? É simples: esses dados estarão bem explícitos no enunciado do algoritmo. Sabendo o ponto de partida e aonde se quer chegar, é só traçar o caminho (processamento) mais adequado. Portanto, para construir um algoritmo, é necessário: Estudar o problema; Identificar a solução (entrada, processamento, saída); Escrever o algoritmo (refinamento sucessivo); Implementar o programa (transcrição do algoritmo); Testar a implementação; Efetuar a manutenção. É uma técnica para construir algoritmos eficazes. Partindo de um problema, encontra-se uma solução e reescreve-se a solução sucessivamente até que todos os detalhes do problema sejam investigados. Construção de Algoritmos – Introdução aos conceitos de algoritmos 7 Como resolver problemas? Todo problema para ser resolvido deve primeiramente ser analisado. É importante fazeruma análise investigativa para identificar: Quais são os dados fornecidos pelo problema? O que se espera como resultado final da solução do problema? Pensar em como solucionar o problema. Para tanto, podemos dividir a solução em dois níveis básicos: Nível 01 – O que eu tenho que fazer? Nesse nível tentar tirar do problema quais são os passos gerais para solucioná-lo. Nível 02 – Como fazer? Aqui se deve desenvolver todo o raciocínio lógico para resolver o problema. Identificar quais são os passos a serem seguidos para atingir a solução. Vamos analisar um exemplo: Faça um algoritmo que leia quatro números, calcule e mostre a soma desses números. Analisando o problema podemos identificar os seguintes passos macros para definir o nível 1: Saber quais são os quatro números; Fazer a soma dos quatro números; Apresentar o resultado da soma. Após identificar os passos macros para a solução do problema, é possível elaborar um algoritmo refinando tais passos. Sendo assim, temos o nível 2: Construção de Algoritmos – Introdução aos conceitos de algoritmos 8 1. Obter o primeiro número (num1); 2. Obter o segundo número (num2); 3. Obter o terceiro número (num3); 4. Obter o quarto número (num4); 5. Calcular a soma de num1, num2, num3 e num4; 6. Mostrar a soma dos quatro números (soma). Essa técnica pode ser utilizada sempre que tivermos que resolver um problema computacional. É importante pensar no problema como um todo antes de resolvê-lo de fato. É preciso ser um gênio para programar? A resposta é não! Aprender a programar é como aprender uma nova língua. Está relacionado a aprender a se expressar em um novo dialeto. Uma linguagem que o computador entenda. Ferramentas a serem utilizadas Para desenvolver o raciocínio lógico para o desenvolvimento de soluções computacionais vamos utilizar a linguagem de programação Java. A ideia é utilizar Java como uma ferramenta de apoio na resolução de problemas. Vamos precisar do kit de desenvolvimento Java (JDK) e da IDE NetBeans para a construção de nossos algoritmos. Java Development Kit (JDK) – significa Kit de Desenvolvimento Java que é um conjunto utilitários que permite criar sistemas de software para a plataforma Java e é composto por um compilador e por um conjunto de bibliotecas. IDE (Integrated Development Environment) – Ambiente Integrado de Desenvolvimento, é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar esse processo. Disponível em: <http://netbeans.org/downloads/>. Construção de Algoritmos – Introdução aos conceitos de algoritmos 9 Para fazer o download do JDK acesse o site da Oracle. Exercitando a lógica Para começar a exercitar o raciocínio lógico vamos resolver alguns problemas de lógica. Problema 1: Problema dos comboios Um comboio parte de Brasília a uma velocidade de 120 Km/h em direção a São Paulo, ao mesmo tempo em que outro comboio parte de São Paulo a uma velocidade de 80 km/h em direção a Brasília. Quando os comboios se encontram, qual deles está mais próximo de Brasília? Resposta: Nenhum deles, pois ao se encontrarem, os dois estarão à mesma distância de Brasília. Problema 2: 4 pontos e 3 retas Dados os quatros pontos a seguir, una os quatro pontos com apenas três retas sem levantar a ponta do lápis e acabando no ponto onde começou. Disponível em: <http://www.oracle.com/technetwork/java/javase/downloads/index.html >. Construção de Algoritmos – Introdução aos conceitos de algoritmos 10 Resposta: O único polígono possível com três retas é um triângulo. Portanto, basta traçar um triângulo para unir os quatro pontos. Problema 3: Jarros de água Existem dois jarros com capacidade para 5 litros e 3 litros de água cada. Descreva os passos para juntar quatro litros de água em um dos dois jarros. Os jarros não possuem nenhum medidor de litros e podem ter seu conteúdo totalmente despejado no ralo. Resposta: Para resolver o problema dos jarros, podemos começar enchendo o jarro de 5 litros: Encher o jarro de 3 litros; Despejar o conteúdo do jarro de 3 litros no jarro de 5. Assim, o jarro de 3 litros fica vazio e o de 5 litros fica com 3 litros; Encher novamente o jarro de 3 litros; Despejar o conteúdo do jarro de 3 litros no jarro de 5 litros. Assim, o jarro de 5 litros, que tinha 3 litros, passa a ter os 5 litros e no jarro de 3 litros sobra 1 litro; Esvaziar o jarro de 5 litros; Despejar o litro do jarro de 3 litros no jarro de 5 litros. Assim, o jarro de 5 litros fica com 1 litro e o jarro de 3 litros fica vazio; Construção de Algoritmos – Introdução aos conceitos de algoritmos 11 Encher o novamente o jarro de 3 litros; Desejar o jarro de 3 litros no de 5 litros. Como o jarro de 5 litros já tinha 1 litro, passa a ter os 4 litros e o jarro de 3 litros fica vazio. Problema 4: O lobo, a cabra e o repolho Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele e mais uma de suas 3 cargas, que são: um lobo, uma cabra e um repolho. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? Lembre que: O lobo não pode ficar sozinho com a cabra; A cabra não pode ficar sozinha com o repolho. Problema 5: Missionários e canibais Em um lado do lago existem 3 missionários e 3 canibais. Toda vez que os missionários ficam em menor número que os canibais, eles são devorados. Como transportar os missionários de uma margem para outra do rio, em um barco com 2 lugares, sem que sejam devorados pelos canibais? Tanto um missionário quanto um canibal podem navegar o barco. As respostas dos problemas 4 e 5 podem ser obtidas por um site de jogos online. Esse site possui vários jogos de lógica para testar o seu raciocínio lógico. Técnicas para a construção de algoritmos Disponível em: <http://www.plastelina.net>. Construção de Algoritmos – Introdução aos conceitos de algoritmos 12 Existem várias técnicas para a construção de algoritmos. Dentre elas podemos citar: pseudocódigo, descrição narrativa, fluxograma e diagrama de Chapin. Segundo Puga e Rissetti (2009): O pseudocódigo utiliza linguagem estruturada e assemelha-se, na forma, a um programa escrito na linguagem de programação Pascal. O pseudocódigo também é denominado português estruturado, embora existam pequenas diferenças em sua simbologia e estrutura. É bastante utilizado para a resolução de problemas computacionais. Veja um exemplo de um pseudocódigo. A descrição narrativa utiliza linguagem natural para especificar os passos para a realização de tarefas. Mas como isso dá margem a interpretações errôneas e ambiguidades, inerentes à sua característica pouco formal, é pouco utilizada para essa finalidade. O fluxograma é uma forma universal de representação, pois utiliza figuras geométricas para ilustrar os passos a serem seguidos a para a resolução dos problemas. Bastante utilizado, também é chamado de diagrama de blocos. Veja exemplo de um fluxograma. diagrama de Chapin apresenta a solução do problema por meio de um diagrama de quadros com uma visão hierárquica e estruturada. Esse tipo de diagrama não é muito utilizado,pois é difícil representar alguns procedimentos, como a recursividade. Veja exemplo de um diagrama de Chapin. Construção de Algoritmos – Introdução aos conceitos de algoritmos 13 Exemplo de um Pseudocódigo Exemplo de um fluxograma Exemplo de um diagrama de Chapin Neste curso, vamos utilizar uma abordagem diferenciada. A ideia é Construção de Algoritmos – Introdução aos conceitos de algoritmos 14 construir algoritmos já utilizando a linguagem de programação Java. Para tanto, vamos analisar e estudar cada um dos componentes de um algoritmo por vez. Essa abordagem leva o aluno a não só escrever soluções computacionais, mas também a testá-las e ver o resultado de cada algoritmo desenvolvido. Construção de Algoritmos – Introdução aos conceitos de algoritmos 15 BIBLIOGRAFIA ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. Fundamentos de Programação de Computadores. 2ª ed. São Paulo: Pearson Prentice Hall, 2007. FORBELLONE, A. L. V. & EBERSPÄCHER, H. F. Lógica de Programação: a construção de algoritmos e estruturas de dados, 2ª. ed. São Paulo: Makron Books, 2002. PUGA, Sandra; RISSETTI, Gerson. Lógica de programação e estruturas de dados com aplicações em Java. 2ª ed. Paulo: Pearson Prentice Hall, 2009.
Compartilhar