Lógica de Programação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra !! do Gr. logiké, arte de raciocinar !! s. f., ciência que tem por objecto o estudo dos métodos e princípios que permitem distinguir raciocínios válidos de outros não válidos; ligação de ideias; coerência; parte da Filosofia que estuda as leis do raciocínio; continuidade no raciocínio. 2008/09 Algoritmos 2 !! Coerência !! Racionalidade !! É a arte de bem pensar 2008/09 !! Algoritmos 3 Uso correcto !! das leis do pensamento, da “ordem e da razão” !! de processos de raciocínio e de simbologias formais que conduz ao desenvolvimento de técnicas para a produção de soluções 2008/09 Algoritmos 4 !! do Lat. ratiociniu, cálculo !! s. m., acto ou faculdade de raciocinar; !! uso da razão; !! encadeamento de argumentos ou juízos para chegar a uma demonstração; !! juízo; !! ponderação. 2008/09 Algoritmos !! É algo abstracto e intangível !! Pode-se representar de diferentes formas (verbais, 5 escritas) !! Na lógica da programação pode-se representar em diferentes linguagens de programação 2008/09 Algoritmos 6 !! Representação do raciocínio da lógica de programação !! É uma sequencia de passos (instruções) não ambíguos que especificam exactamente o que deve ser feito 2008/09 !! Algoritmos 7 É uma sequencia de instruções não ambíguas que podem ser executadas automaticamente em tempo finito !! É um algoritmo escrito numa linguagem de programação !! Está sempre associado a um determinado objectivo !! Constitui a solução do problema !! A execução do programa (algoritmo) garante que o seu objectivo é atingido 2008/09 Algoritmos 8 do Lat.! algorithmos < Ár. Alkharizmi !! s. m., Mat., !! !! forma da geração dos números; !! processo de cálculo em que um certo número de regras formais resolvem, na generalidade e sem excepções, problemas da mesma natureza; !! qualquer procedimento que permita mecanizar a obtenção de resultados de tipo determinado, podendo um resultado ser obtido por mais do que um algoritmo; !! S.m., Inform., conjunto de etapas bem definidas necessárias para chegar à resolução de um problema. !! Rigoroso !! Eficaz !! Termina 2008/09 Algoritmos 9 2008/09 Algoritmos 10 !! Sim. !! Permite que nos concentremos na (lógica da construção da) solução, abstraindo-nos de detalhes computacionais que podem ser acrescentados mais tarde !! Podem ser reutilizáveis em diferentes linguagens de programação 2008/09 !! Algoritmos 11 Problema: Uma lâmpada de um candeeiro de tecto não acende 2008/09 Algoritmos 12 !! Estuda metodologias de desenvolvimento de programas !! Estuda a arquitectura dos programas !! Utiliza técnicas desenvolvidas em vários domínios da Informática (Inteligência Artificial, Bases de Dados, Interacção gráfica, …) !! Abordada seguindo diferentes paradigmas (imperativo, com objectos, funcional, lógico,…) !! Desenvolvimento de aplicações concretas !! Desenvolvimento de sistemas operativos É um mundo em constante evolução 2008/09 Algoritmos 13 Arquitectura de programas Imperativo I. A. funcional Bases de dados Técnicas PROGRAMAÇÃO Paradigmas Com objectos Interfaces gráficas Lógico Sistemas operativos Arquitectura de computadores 2008/09 Algoritmos 14 Matemática discreta Arquitectura de computadores Álgebra Especificações Estruturas de informação Processadores de linguagens Controle Abstrações Processo computacional Programa Linguagem Estudo de linguagens formais Complexidade computacional Algoritmo Computabilidade Fundamentos 2008/09 Teoria da Computação Algoritmos 15 Nos cerca de 50 anos de vida da Informática, largas centenas de linguagens de programação foram desenvolvidas. Algumas, frutos de modas e caprichos, tiveram uma vida muito curta, outras sobreviveram dezenas de anos. Seja qual for a evolução futura das linguagens de programação, os conceitos subjacentes às linguagens persistem. Daí a sua grande importância neste mundo em constante evolução que é a Programação. [J. P. Martins e M R. Cravo, Programação em scheme, IST Press, 2004] 2008/09 Algoritmos 16 !! Um homem precisa atravessar um rio com um barco que possui capacidade para apenas uma pessoa e um lobo, ou uma cabra ou um repolho. O que é que o homem tem de fazer para atravessar o rio sem perder o lobo, a cabra e o repolho, atendendo a que o lobo e a cabra não podem ficar sozinhos numa das margens, nem a cabra e o repolho. Escreva um algoritmo que mostre todas as acções necessárias para efectuar uma travessia segura. 2008/09 !! Algoritmos 17 Três jesuítas e três canibais pretendem atravessar um rio. Para tal, dispõem de um barco com capacidade para duas pessoas. Por segurança, não se deve permitir que numa das margens o número de Jesuítas seja inferior ao número de canibais. Elabore um algoritmo que mostre as acções que concretizam uma travessia segura. 2008/09 Algoritmos 18 !! Elabore um algoritmo que mostre os passos necessários para trocar um pneu de um carro nas seguintes situações: (i) Troca do pneu esquerdo traseiro; (ii) Troca do pneu esquerdo traseiro, verificando antes se o pneu de reserva está em condições de ser usado (iii) Verificar se existe algum pneu furado; se houver, verificar o pneu de reserva e trocar o pneu correcto. 2008/09 !! Algoritmos 19 O puzzle da Torre de Hanói é constituído por três postes verticais, nos quais podem ser colocados discos de diâmetros diferentes furados no centro, variando o número de discos de puzzle para puzzle. O puzzle inicia-se com todos os discos no poste da esquerda e a finalidade é movimentar todos os discos para o poste da direita de acordo com as seguintes regras (1) apenas se pode movimentar um disco de cada vez (2) em cada poste, apenas se pode movimentar o disco de cima (3) nunca se pode colocar um disco sobre outro disco de diâmetro menor 2008/09 Algoritmos 20 !! Considere uma calculadora comum com quatro operações (soma, subtracção, multiplicação e divisão) mas que tem inoperacionais as teclas de multiplicação e divisão. !! Escreva algoritmos que resolvam as seguintes expressões matemáticas, usando apenas as operações de soma e subtracção !! !! !! !! !! 12 x 4 23 x 11 10 / 2 175 / 7 2^8 2008/09 !! Algoritmos 21 Resolva o problema das Torres de Hanói com 3 discos 2008/09 Algoritmos 22 !! Resolva o problema das Torres de Hanói com 4 discos 2008/09 Algoritmos 23