Algoritmos CONCEITOS BÁSICOS LÓGICA É a arte de bem pensar. Ciência das formas de pensamento – estuda a correção do raciocínio (forma mais complexa do pensamento). Visa a ordem da razão - Coloca ordem no pensamento. É a ciência que estuda as leis e critérios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio. 2 LÓGICA Exemplos: –Todo mamífero é um animal. Todo cavalo é um mamífero. Portanto todo cavalo é um animal. –A gaveta está fechada A caneta está dentro da gaveta. Precisamos primeiro abrir a gaveta para depois pegar a caneta. 3 LÓGICA Fatores que influenciam a lógica: – calma – conhecimento – vivência – versatilidade – experiência – criatividade – ponderação – responsabilidade e etc. 4 LÓGICA Seu uso na programação – Lógica de Programação : Significa o uso correto das leis do pensamento, da ordem da razão e de processos de raciocínio e simbolização formais na programação de computadores, objetivando a racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar. O objetivo principal da Lógica de Programação é a construção de algoritmos. 5 ALGORITMOS É o conceito central da lógica de programação que basicamente consiste na construção de algoritmos. 6 ALGORITMOS • Presentes em nosso dia-a-dia. Ex.: – Tomar banho; – Instruções para o uso de um aparelho eletrodoméstico; – Receita de preparo de algum prato; – Trocar pneu de um carro; – Sacar dinheiro de um caixa eletrônico; 7 ALGORITMOS – Conceitos • “Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico” [KNUTH] • “Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY] • “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” [AURÉLIO] 8 ALGORITMOS – Importância – É necessária a especificação de uma seqüência de passos lógicos para que o computador possa executar uma determinada tarefa; – O computador não possui vontade própria, faz apenas o que mandamos; – Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, independendo de uma linguagem específica e até mesmo do próprio computador. 9 ALGORITMOS – Características – ter fim; – não dar margem à dupla interpretação (não ambíguo); – capacidade de receber dado(s) de entrada do mundo exterior; – poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo; – ser efetivo (todas as etapas do algoritmo devem ser alcançáveis em um tempo finito). 10 ALGORITMOS – Exemplo – Vamos nos colocar na situação de um cozinheiro que para fazer certos pratos, precisa seguir uma receita. • EXEMPLO: Receita de Bolo: – – – – – – – – – Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Unte a fôrma Despeje a mistura na fôrma de bolo Leve a fôrma ao forno Espere 20 minutos Retire a fôrma do forno Deixe esfriar Experimente 11 ALGORITMOS – Mas o que um cozinheiro tem a ver com algoritmo e com programação? A receita deve ser seguida exatamente da maneira como se apresenta. Você poderia imaginar que o cozinheiro pudesse despejar a mistura na fôrma antes de juntar os ingredientes? É impossível, concorda? Logo a seqüência das ações precisa ser respeitada para obtermos um produto final. 12 ALGORITMOS Então: Na medida em que precisamos especificar uma seqüência de passos, é necessário utilizar ordem,ou seja, “pensar com ordem”, portanto precisamos utilizar lógica. 13 ALGORITMOS Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido na lógica de programação e , dessa forma, permite-nos abstrair de uma série de detalhes computacionais, que podem ser acrescentados mais tarde. Foco no que é importante: a lógica da construção de algoritmos. 14 ALGORITMOS - Princípios – São formas de resolução de um problema, através da especificação passo-a-passo de como resolvê-lo. – A noção de algoritmo é básica em computação, mas pode ser aplicada a vários contextos. Como ao do cozinheiro. 15 ALGORITMOS - Princípios – Contexto Administrativo Verifique preenchimento do formulário Se (preenchimento correto) então Arquive o documento Forneça o protocolo Se não Lamente Mande o cliente comprar outro formulário Despeça-se educadamente do cliente 16 ALGORITMOS - Princípios – Logo, percebe-se que o conceito de algoritmo associado ‘a área de computação, pode ser entendido, no seu sentido mais amplo, como sinônimo de processo, rotina ou procedimento, e nesse sentido, ele se insere em qualquer contexto. – E mais, algoritmos só se aprende: • construindo algoritmos • testando algoritmos 17 ALGORITMOS – representação – Descrição Narrativa: • Faz-se uso do português para descrever algoritmos. • EXEMPLO: Troca de lâmpada: Pegue uma escada Posicione-a embaixo da lâmpada Busque uma lâmpada nova Suba na escada Retire a lâmpada velha Coloque a lâmpada nova 18 ALGORITMOS – representação – Fluxograma: • Utilização de símbolos gráficos para representar algoritmos. • No fluxograma existem símbolos padronizados para início, entrada de dados, cálculos, saída de dados, fim, etc. 19 ALGORITMOS – representação – Fluxograma - Exemplo: 20 ALGORITMOS – representação – Fluxograma: • Vantagens: – Uma das ferramentas mais conhecidas; – Figuras dizem muito mais que palavras; – Padrão mundial. • Desvantagens: – Faz com que a solução do problema já esteja amarrada a dispositivos físicos; – Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los; – Complica-se à medida que o algoritmo cresce. 21 ALGORITMOS – representação – Linguagem Algorítmica: • Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, para representar algoritmos; • EXEMPLO: Algoritmo CALCULA_DOBRO Início Leia NUM DOBRO 2 * NUM Escreva DOBRO Fim 22 ALGORITMOS – representação – Linguagem Algorítmica: • Estrutura geral: Algoritmo Nome do algoritmo Declaração de constantes, tipos e variáveis Início atribuições seqüências de comandos estruturas de controle comandos de E/S Fim 23 ALGORITMOS – representação: Visual G Algoritmo "<nome do algoritmo>" var < declaração de variáveis> inicio < lista de comandos> fimalgoritmo 24 ALGORITMOS – representação – Linguagem Algorítmica: • Vantagens: – Independência física da solução (solução lógica apenas); – Usa o português como base; – Pode-se definir quais e como os dados vão estar estruturados; – Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. • Desvantagens: – Exige a definição de uma linguagem não real para trabalho; – Não padronizado. 25 ALGORITMOS – representação:regras importantes 1.O algoritmo sempre deve possuir um nome. 2.É importante descrever o objetivo do algoritmo. 3.Iniciar o algoritmo com a palavra Início. 4.Descrever a entrada de dados. 5.Para facilitar a leitura e compreensão, utilizar espaços de tabulações (identação) nos blocos de instruções. 6.Utilizar somente um verbo por instrução. 7.Utilizar frases (instruções) simples e curtas para facilitar o entendimento. 8.Enumerar cada uma das instruções. 9.Inserir comentários explicativos para as instruções, principalmente quando estiver programando. 10.Destacar as palavras que indicam ações ou condições a serem executadas ou seguidas, como por exempro:Ler, escrever, se, enquento, faça e outras. 11.Descrever a saída de dados. 12.Encerrar o algoritmo com a palavra Fim. 26 ALGORITMOS – representação:regras importantes Nome: Média Objetivo: Calcular a média de um aluno e apresentar a mensagem “aprovado” ou “reprovado”. Entrada de dados: Notas do 1º e 2º bimestre (Nota1 e Nota2) Saída de dados: Exibir a média e resultado “aprovado” ou “reprovado” Início 1.Ler a nota do primeiro bimestre (Nota1) 2. Ler a nota do segundo bimestre (Nota2) 3. Calcular a média Media = (Nota1 + Nota2)/2 4.Se Media >= 6,0 então 4.1 imprimir “aprovado” senão 4.2 imprimir “reprovado” fim se 27 5. Imprimir o valor da Media Fim ALGORITMOS – Resolvendo – Suponha que queiramos resolver o seguinte problema: • a partir de dois números que serão informados, calcular a adição dos mesmos. – Se você fosse encarregado de efetuar essa tarefa, seria bem provável que utilizasse os passos a seguir: • saber quais são os números; • calcular a soma dos números; • responder à questão com o valor do resultado. 28 ALGORITMOS – ESTRUTURAS CHAVES DA CONSTRUÇÃO DE ALGORITMOS • Existem 3 estruturas básicas de controle nas quais se baseiam os algoritmos: – Sequenciação; – Decisão; – e Repetição. 29 ALGORITMOS – Sequenciação – Os comandos do algoritmo fazem parte de uma seqüência; – é relevante a ordem na qual se encontram os mesmos; – serão executados um de cada vez, estritamente, de acordo com essa ordem. Comando-1 Comando-2 Comando-3 : Comando-n 30 ALGORITMOS – Sequenciação – Tem-se uma sequenciação de n comandos na qual os comandos serão executados na ordem em que aparecem; – o comando de ordem i+1 só será executado após a execução do de ordem i (o 3o só será executado após o 2o); – Todo algoritmo é uma seqüência; – A sequenciação é aplicada quando a solução do problema pode ser decomposta em passos individuais. 31 ALGORITMOS – Decisão – Também conhecida por seleção ou estrutura condicional; – Há a subordinação da execução de um ou mais comandos à veracidade de uma condição; Se <condição> Então <comando-1> Senão <comando-2> 32 ALGORITMOS – Decisão – Se a <condição> for verdadeira será executado o <comando-1>; – caso contrário, teremos a execução do <comando-2>; – A decisão deve ser sempre usada quando há a necessidade de testar alguma condição e em função da mesma tomar uma atitude; – Em nosso dia-a-dia, estamos sempre tomando decisões, vejamos um exemplo: • Se tiver dinheiro suficiente, então vou almoçar em um bom restaurante. • Caso contrário (senão), vou comer um sanduíche na lanchonete da esquina. 33 ALGORITMOS – Repetição – Também conhecida por “looping” ou laço; – Permite que tarefas individuais sejam repetidas um número determinado de vezes ou tantas vezes quantas uma condição lógica permita; – Exemplos: a) vou atirar pedras na vidraça até quebrá-la; b) baterei cinco pênaltis; c) enquanto tiver saúde e dinheiro, vou desfrutar a vida. 34 ALGORITMOS – Repetição – No exemplo (a), vai-se repetir a ação de atirar pedras na janela até que seja satisfeita a condição de quebrar a janela. – No exemplo (b), haverá a repetição da atitude de bater um pênalti um número determinado de vezes (cinco). – No exemplo (c), a condição que me permitirá continuar desfrutando a vida é ter dinheiro e saúde. – A utilização combinada dessas 3 estruturas descritas vai permitir expressar, usando qualquer que seja a ferramenta, a solução para uma gama muito grande de problemas. – Todas as linguagens de programação oferecem representantes dessas estruturas. 35 ALGORITMOS – refinamentos sucessivos – Um algoritmo é considerado completo se os seus comandos forem do entendimento do seu destinatário; – Caso um comando não seja do entendimento do destinatário, ele terá que ser desdobrado em novos comandos; – Estes novos comandos constituirão um refinamento do comando inicial, e assim sucessivamente, até que os comandos sejam entendidos pelo destinatário. 36 ALGORITMOS – refinamentos sucessivos – Por exemplo, o algoritmo para calcular a média aritmética de dois números pode ser escrito da seguinte forma: Algoritmo CALCULA_MÉDIA Início Receba os dois números Calcule a média dos dois números Exiba o resultado Fim – Podemos desdobrar o comando “Calcule a média dos dois números” em: Soma os dois números Divida o resultado por 2 37 ALGORITMOS – refinamentos sucessivos – Após esse refinamento, o algoritmo pode ser considerado completo; – a menos que o destinatário não saiba fazer as operações de adição e divisão, ou não seja capaz de entender diretamente algum comando. Algoritmo CALCULA_MÉDIA Início Receba os dois números Soma os dois números Divida o resultado por 2 Exiba o resultado Fim 38 ALGORITMOS – refinamentos sucessivos – Um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares permite: • ter uma visão global de como o algoritmo deve ser executado – À medida que o algoritmo passa a ser maior e mais complexo, esta visão global torna-se menos clara; – Neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entendê-lo. 39 ALGORITMOS – Exercícios – Cite alguns algoritmos que podemos encontrar na vida quotidiana. – Suponha que temos um robô a nossa disposição. Esse robô precisa ser ensinado a fazer determinadas tarefas. Para ensiná-lo, vamos fazer uso do português para passar-lhe as instruções necessárias à execução de cada atividade. Escreva os passos necessários para o robô: a) encher uma bacia com água; b) Fazer uma ligação de um telefone fixo; c) calcular a sua idade daqui a 20 anos; d) calcular a média de um aluno com 3 notas; e) Fazer um suco de laranja. 40