Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sumário CAPÍTULO 2 – NOÇÕES BÁSICAS SOBRE ALGORITMOS ____________________ 30 2.1 Introdução ____________________________________________________________ 30 2.2 Lógica ________________________________________________________________ 30 2.3 Sequência Lógica_______________________________________________________ 30 2.4 Instruções _____________________________________________________________ 31 2.5 O Algoritmo ___________________________________________________________ 32 2.5.1 Padrão e desvio de Comportamento _____________________________________________ 33 2.5.2 A arte de pensar para criar _____________________________________________________ 34 2.6 Exercícios _____________________________________________________________ 37 2.7 A linguagem algorítmica - Pseudocódigo ___________________________________ 38 2.8 Regras para Construção de Algoritmos ____________________________________ 38 2.9 Fases dos Algoritmos – Entrada, Processamento e Saída ______________________ 38 2.10 Exemplo de algoritmo ___________________________________________________ 39 2.11 Teste de Mesa _________________________________________________________ 40 2.12 Exercícios _____________________________________________________________ 40 UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 30 CAPÍTULO 2 – NOÇÕES BÁSICAS SOBRE ALGORITMOS 2.1 Introdução Este capítulo tem por objetivo despertar no aluno a capacidade de reconhecer os requisitos para a construção de um algoritmo. Serão construídos alguns algoritmos que não obedecem à regra de construção exigida na matéria, pois somente servem para ilustrar o pensamento correto para a construção dos algoritmos. 2.2 Lógica De acordo com Manzano (1965), para entendermos o que é Lógica precisamos entender o que é um problema. Pode-se dizer que problema é uma proposta duvidosa que pode ter inúmeras soluções ou é uma questão não resolvida que é objeto de discussão, segundo definição do Dicionário Aurélio. Para nós, problema é uma questão que foge a uma determinada regra, a qual nos impede de atingirmos com sucesso determinado objetivo. Por isso, temos que descobrir as regras, a ordem das mesmas e resolver o problema usando um procedimento de desenvolvimento. A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas. Ela nos permite definir a sequência lógica para o desenvolvimento. Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. 2.3 Sequência Lógica Segundo Moraes (2000) estes pensamentos podem ser descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa. Sequência lógica são os passos executados até atingir um objetivo ou solução de um problema. UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 31 2.4 Instruções Numa linguagem comum pode-se dizer que instruções são “um conjunto de regras ou normas definidas para a realização ou emprego de algo”. Pode-se dizer também que são ordens, que quando identificadas, são realizadas. Como exemplo: “Feche os olhos” é uma ordem. O ato de fechar os olhos é a execução desta ordem. Um conjunto de instruções é determinado para a execução de uma tarefa. Somente este conjunto de instruções em uma ordem sequencial lógica é capaz de realizar o processo desejado. Por exemplo: se quisermos fazer batatas fritas, no estilo palito, precisamos colocar em prática uma série de instruções em uma determinada ordem e executá-las para alcançar o objetivo. Quais seriam essas instruções? Tente descrevê-las abaixo: 1. 2. 3. 4. 5. Considerações: Obviamente que você descreveu as tarefas em uma ordem adequada, ou seja, descascou as batatas antes de fritá-las. Pode ser que você tenha descrito 3, ou talvez 4 instruções para realizar o nosso objetivo e algum outro colega seu fez mais ou até menos instruções para tal fim. Não se assuste, isso é normal. Cada pessoa poderá ter uma ideia diferente da outra para a realização de uma tarefa. O importante é alcançar o objetivo. Porém, o tempo para a realização do processo também conta. Se você resolveu cozinhar as batatas na água e depois secá-las antes de fritá-las, demoraríamos mais para come-las, porém elas ficariam mais crocantes. Tudo bem se isso for na sua casa, mas se você pensar em uma lanchonete e você está na mesa esperando, qual seria a sua reação se demorasse muito para um processo tão simples? Você deve ter em mente que dependendo do processo a primeira tentativa de solucioná-lo pode não ser a melhor nem a mais rápida. Para alcançar seu objetivo você deve também procurar uma maneira de otimizar o processo, diminuindo o número de instruções, procurar outra forma de resolver o problema, mais eficaz, mais rápida. Porém esta mudança jamais poderá influenciar no resultado final. UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 32 Colocar uma instrução fora de uma sequência lógica ou uma instrução tomada em separado, não tem muito sentido. Para obtermos o resultado, devemos colocar em prática todo o conjunto de instruções, na ordem correta. Instruções é um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar. 2.5 O Algoritmo De acordo com Venancio (1997), algoritmo é um conjunto de regras que permite a resolução de um problema ou a execução de um trabalho, através de um número finito de operações. As regras que definem um algoritmo podem ser entendidas como instruções que executadas produzem um resultado. Vamos agora entender como devemos pensar para começarmos a construção de algoritmos. Como exemplo, descrevem-se abaixo algumas frases que podem ser consideradas como instruções: “Iniciar a faixa 5 de um Compact Disc (CD)”; “Escovar os dentes”; “Chamar por alguém através de um nome”; “Informar a sua idade”; “Atribuir o valor 5,67 a uma variável”. Esse exemplo não demonstra um conjunto de instruções, nem mesmo possui uma sequência lógica de funcionamento. Para entender uma sequência de instruções devemos observar os eventos a elas atribuídos. Até mesmo coisas simples podem ser descritas por sequências lógicas, por exemplo: Pense no seu objetivo: Chupar uma bala. Como chegar ao objetivo: as instruções: Pegar a bala; Retirar o papel; UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 33 Chupar a bala; Jogar o papel no lixo; Agora, outro objetivo: Somar dois números: Escreva o primeiro número no retângulo A; Escreva o segundo número no retângulo B; Some o número do retângulo A como o número do retângulo B e coloque o resultado no retângulo C; Sempre que pensamos em um conjunto de instruções devemos pensar que estas tem um objetivo em comum e a sequência é definida para transformar um problema em solução. 2.5.1 Padrão e desvio de Comportamento Vamos agora a um exemplo mais significativo. Imagine como é o seu despertar. Observe as ações a seguir e tente imaginar a execução das mesmas sequencialmente: “Ao toque do despertador, levantar-se”; “Tirar o pijama”; “Vestir-se adequadamente”; “Tomar café da manhã”; “Escovar os dentes”; Se todos os dias você executa esta mesma ação pela manhã, independente de mudar de roupa a cada dia, comer algo diferente no café ou mesmo trocar de creme dental paraescovar os dentes, sem alteração na sequência das ações, temos o que chamamos de padrão de comportamento. Um exemplo mais claro de padrão de comportamento seria o conjunto dos números pares de 2 a 20, [2,4,6,8,10,12,14,16,18,20], onde de um número a outro a diferença é dois. O padrão de comportamento é o incremento de duas unidades de um número para outro. Retângulo C Retângulo B Retângulo A + = UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 34 Como observador você deve descobrir o padrão de comportamento para a resolução de um problema, independente dos fatores externos ou internos que possam existir. Se em um determinado dia você observar que ao invés de vestir-se antes de tomar o café da manhã, esta ação foi executada depois de escovar os dentes, temos então um desvio do comportamento. Um desvio de comportamento é claramente observado no conjunto dos números primos de 1 a 15: [1, 2, 3, 5, 7, 11, 13]. Existe um desvio de comportamento toda vez que é encontrado um número que seja divisível por mais algum número além do número 1 e do próprio número (regra dos números primos). Como bom observador você deve ter a capacidade de prever certas ações que desviam o comportamento normal de um procedimento e implementar estas características para concluir o objetivo. 2.5.2 A arte de pensar para criar Consideremos o seguinte exemplo: descascar batatas. Observe as ações a seguir: “Traga a cesta com batatas do porão”; “Traga a panela do armário”; “Coloque avental”; “Descasque as batatas”; “Devolva a cesta ao porão”. Pense agora: Como estas ações podem ser incrementadas? O que pode acontecer para que uma ação não aconteça? Existem algumas condições que devem ser verificadas antes ou depois de cada ação? De algum modo você pode tornar esta sequência de ações mais rápida? Tente descobrir um padrão comportamental e se existe algum desvio possível nesse comportamento. UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 35 Essa é a tarefa do construtor de algoritmos, do programador, ou mesmo até de um analista de sistemas: observar, levantar dados sobre as ações e informações a respeito da execução da tarefa. Pensar antes de fazer. Fazer e observar. Testar as ações escritas. Tornar possível o incremento e o decremento de ações no processo da solução do problema. Voltando as questões acima, podemos responder as questões da seguinte forma: As ações podem ser incrementadas da seguinte maneira: Especificar um número de batatas a serem descascadas; Especificar que se deve colocar o avental caso esteja com roupas claras. Pode se imaginar que o cesto de batatas não esteja no porão e sim na cozinha e o mesmo esteja vazio, sem nenhuma batata. Vamos supor que se deseja descascar 5 batatas e colocar o avental se estiver com roupas claras e buscar o cesto no porão caso ele não esteja na cozinha. Então teremos a seguinte sequência de ações: “Se a cesta não estiver na cozinha então busque a cesta no porão”; “Traga a panela do armário”; “Se estiver com roupas claras, então coloque o avental”; “Descasque uma batata”; “Descasque uma batata”; “Descasque uma batata”; “Descasque uma batata”; “Descasque uma batata”; “Devolva a cesta no porão”. A sequência de ações acima poderia ser ainda incrementada. Supomos que na cesta do porão caibam apenas 50 batatas e que se deseja descascar batatas até que o número de batatas seja suficiente, não ultrapassando o máximo de batatas possíveis de serem descascadas. A sequência ficaria: “Se a cesta não estiver na cozinha, então busque a cesta no porão”; “Traga a panela do armário”; “Se estiver com roupas claras, então coloque o avental”; UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 36 “Se o numero de batatas é insuficiente então Descasque uma batata”; “Se o numero de batatas é insuficiente então Descasque uma batata”; “Se o numero de batatas é insuficiente então Descasque uma batata”; “Se o numero de batatas é insuficiente então Descasque uma batata”; . . (50 vezes) . “Devolva a cesta no porão”. Assim notamos um comportamento repetitivo nas nossas ações, muito maior que o exemplo anterior. Deste modo temos que imaginar um modo de simplificar as instruções contidas no conjunto, pois se queremos descascar apenas 10 batatas, ainda teremos que responder 40 vezes que não queremos mais descascar para podermos devolver a cesta no porão. Deste modo a seguinte sequência de ações pode solucionar o nosso problema: “Se a cesta não estiver na cozinha, então busque a cesta no porão”; “Traga a panela do armário”; “Se estiver com roupas claras, então coloque o avental”; “Enquanto o número de batatas não for suficiente faça Descasque uma batata”; “Devolva a cesta no porão”. Deste modo podemos descascar nenhuma até N batatas escrevendo apenas uma linha de ação. Segundo Guimarães (1994), há dois conceitos de algoritmo: Os programas de computador nada mais são do que algoritmos escritos em uma linguagem de computador (Pascal, C, Cobol, Fortran, Basic, entre outras) e que são executados por uma máquina, no caso um computador. Um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas. Um texto estático, capaz de cobrir toda uma classe de acontecimentos, no mesmo nível de detalhe conforme o relato de um observador. UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 37 2.6 Exercícios a) Crie a sua sequência lógica do momento que você acorda até o momento de chegar à universidade. b) Descreva em detalhes a sequência lógica para trocar um pneu de um carro. c) Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes. d) Coloque as seguintes instruções em uma ordem lógica de comportamento: (Discar para o 102 – Informações): ( ) “Pressionar a tecla 2”; ( ) “Colocar o fone no gancho”; ( ) “Anotar o número informado”; ( ) “Pressionar a tecla 0”; ( ) “Pressionar a tecla 1”; ( ) “Aguardar na linha”; ( ) “Tirar o fone do gancho”; ( ) “Solicitar um número de Telefone”; e) Descreva com suas palavras como você pode ter uma boa sequência de instruções para alcançar um objetivo. f) Dados dois baldes, um balde azul e um balde amarelo, cada um deles contendo tinta nas cores: azul no balde amarelo e amarelo no balde azul. Crie uma sequência de instruções para trocar a tinta dos baldes de modo que cada qual fique com a tinta de acordo com a sua cor. g) Considere que x possui um valor inicial 15 e foram executadas as seguintes instruções: X = X + 3; X= X – 6; X = X / 2; X = 3X. Qual será o valor de x ao final destas instruções? UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 38 2.7 A linguagem algorítmica - Pseudocódigo Os algoritmos são descritos em uma linguagem chamada pseudocódigo, ou seja, falso código. Os algoritmos são independentes de uma Linguagem de Programação (LP). Ao contrário de uma LP, não existe um formalismo rígido de como deve ser escrito o algoritmo. O algoritmo deve ser fácil de ser interpretado e fácil de codificar, ou seja, ele deve ser o intermediário entre a linguagem falada e a LP. O que vimos até agora é o que chamamos de algoritmos nãocomputacionais. O que há de comum entre os algoritmos computacionais e os algoritmos não computacionais são que ambos possuem um conjunto de instruções em uma ordem lógica para a execução de uma tarefa. 2.8 Regras para Construção de Algoritmos Para escrevermos um algoritmo precisamos descrever a sequência de instruções, de maneira simples e objetiva. Para isso utilizaremos algumas técnicas: Utilizar apenas uma instrução por linha; Ser objetivo; Fazer apenas o que o algoritmo pede. Fazer a mais atrasa o processo e fazer a menos o invalida. 2.9 Fases dos Algoritmos – Entrada, Processamento e Saída Definimos que algoritmos possuem uma ordem lógica de instruções para a execução de uma tarefa. Para montar um algoritmo precisamos dividir o problema apresentado em três fases fundamentais: Onde temos: ENTRADA PROCESSAMENTO SAÍDA UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 39 Entrada: São os dados de entrada do algoritmo, os valores iniciais que podem ser descritos ou solicitados; Processamento: São os procedimentos (instruções) utilizados para se alcançar o resultado final (objetivo do algoritmo); Saída: São os dados processados que podem ser exibidos, retornados ou impressos. 2.10 Exemplo de algoritmo Vamos imaginar o seguinte problema: Calcular a média final dos alunos da terceira série. Os alunos realizarão quatro provas: P1, P2, P3 e P4. Onde: Média Final (MF) = P1 + P2 + P3 + P4 dividido por 4. Para montarmos o algoritmo proposto, responda as seguintes perguntas: Quais são os dados de entrada? Você possui os valores iniciais ou terá que solicitá-los? Qual será o procedimento a ser executado? Quais são os dados de saída? Algoritmo: “Receba a nota da Prova 1”; “Receba a nota da Prova 2”; “Receba a nota da Prova 3”; “Receba a nota da Prova 4”; “Some as notas recebidas e divida por 4”; “Mostre o resultado da divisão”. UFMT – Rondonópolis Algoritmo e Técnicas de Programação – Capítulo 2 40 2.11 Teste de Mesa Após o desenvolvimento de um Algoritmo ele deverá ser sempre testado. Este teste é conhecido como Teste de Mesa, que significa, seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado para a resolução do problema está correto ou não. O teste deve ser realizado com a criação de uma tabela que sugere o mapeamento de uma memória computacional com o espaço para todos os dados, tanto de entrada como de saída, que deve ser preenchida conforme a execução do algoritmo numa forma sequencial. Sugerimos a tabela abaixo para o teste do algoritmo acima. Percorra o algoritmo e preencha a tabela abaixo conforme a posição dos dados. P1 P2 P3 P4 MF 2.12 Exercícios a) Identifique os dados de entrada, processamento e saída do seguinte algoritmo: “Receba o Código da peça”; “Receba o Valor da peça”; “Receba a Quantidade de peças”; “Calcule o valor total de peças (Qtd multiplicado pelo valor da peça)”; “Mostre o código da peça e seu valor total”. b) Faça um algoritmo para calcular o estoque médio de uma peça, sendo que ESTOQUEMEDIO = (QUANTIDADE MÍNIMA + QUNTIDADE MÁXIMA) dividido por 2. c) Escreva um algoritmo que recebe três valores e informe a soma dos mesmos.
Compartilhar