logica aplicada a programação

Upload: alexandre-santana

Post on 12-Jul-2015

340 views

Category:

Documents


0 download

TRANSCRIPT

Lgica MtemticaAplicao em Desenvolvimento de Software e Cincia da ComputaAlexandre, Elayne, Sergio, Gabriel e MateusIFBA Instituto Federal de Educao, Cincia e Tecnologia - BA Superior Tecnolgico em Analise e Desenvolvimento de Sistemas

Abstract Este trabalho apresenta uma anlise do matria lgica matemtica e sua aplicao no curso de Anlise e Desenvolvimento de software. Visando enriquecer o aprendizado e contextualizando a importncia e aplicabilidade dos conceitos matemticos para formao de profissionais da rea de cincia da computao e analise de sistemas. Palavras: lgica; algoritimo, lgica de programao.

completo, como so sentenas fechadas s podem assumir o carter de falso ou verdadeiro. So exemplos de proposies: a) b) c) A rosa vermelha (v) 5> 7 (V) 20 = 3 (F)

1. INTRODUOA palavra lgica deriva etimolgicamente do grego logos e significa palavra, discurso ou razo. Porem Aristteles, o primeiro que a sistematizou, no a entendia assim, utilizando-a como uma forma de analise de uma argumentao. Posteriormente, os estudos lgicos de Aristteles denominado rganon, ou seja, instrumento para o bem pensar. Desenvolveu-se a partir da o silogismo, onde pode-se, a partir da analise de um encadeamento de enunciados, chegar a alguma concluso. A lgica aristotlica, em particular, a teoria do silogismo, apenas um fragmento da assim chamada lgica tradicional. A lgica descreve as formas, as relaes e as propriedades das preposies, em decorrncia da construo de um simbolismo regulado e ordenado que permite diferenciar linguagem cotidiana e linguagem formalizada. Ela tornou-se uma disciplina praticamente autnoma em relao filosofia, graas ao seu elevado grau de preciso e tecnicismo. De maneira geral possui trs pilares ou princpios fundamentais: o principio da identidade, o principio da no contradio e o principio do terceiro excludo e podem ser, respectivamente, assim definidos: a) Todo ser : A= A b) O objeto no pode ser e no ser ao mesmo tempo. As mudanas que ocorrem so apenas aspectos. c) No h nada entre o ser e o no ser. Ou seja, um terceiro fica excludo. Toda sentena lgica composta por um termo, que juntos formam uma proposio. Logo o termo a parte mais simples de um enunciado e designa ou conceito ou uma ideia. A proposio, por sua vez, pode ser definida como um conjunto de palavras ou smbolos que expressam um pensamento num sentido

importante ressaltar que nem toda sentena pode ser considerada uma proposio. Caso ela assuma valores indefinidos, como por exemplo, X > 2, onde X pode assumir qualquer valor num conjunto infinito de possibilidades, portanto no pode ser considerado nem falso nem verdadeiro. Est sentena poderia se tornar uma proposio se fosse definido um conjunto universo de possibilidades que X pode assumir. A estes valores d-se o nome de conjunto universo. E ao subconjunto formado por estes nmeros que podem tornar a sentena verdadeira denomina-se conjunto verdade ou conjunto soluo da sentena aberta. Conectivos ou modificadores so termos, palavras ou smbolos utilizados para modificar uma proposio de simples para composta. Uma sentena simples aquela que no h nenhuma outra proposio condicionante. Por exemplo, p: Maria bonita, uma proposio simples, enquanto p: Se Maria bonita ento ela feliz uma proposio composta. A proposio indicada por letras maisculas ou minsculas do nosso alfabeto. Os elementos modificadores e conectivos lgicos so: ou ! (negao); ^ (conectivo e); v (conectivo ou); (conectivo implica); (conectivo se, e somente se).

Exemplos: Sejam p e q proposies. ~p verdadeira se p for falsa, e vice-versa; p e q verdadeira se ambas forem verdadeiras, e falsa caso contrrio;

p ou q verdadeira se pelo menos uma delas for verdadeira, e falsa caso contrrio; p q verdadeira se o primeiro operando verdadeiro e o segundo falso; p q verdadeira se ambos operandos forem verdadeiros ou ambos falsos; A Lgica extensivamente utilizada em todas as reas vinculadas aos computadores. Partindo-se do princpio que muitas das nossas tarefas dirias so uma sequncia que obedecem uma determinada ordem, de um estado inicial, atravs de um perodo de tempo finito e que nesse perodo produzimos resultados esperados e bem definidos, poderamos classificar essas tarefas dentro de um Algoritmo que utilizam o conceito da lgica formal para fazer com que o computador, produza uma srie sequencial.

4. Em ontologia da web, representao do conhecimento e lgica sao usadas para detalhar conceitos dentro de ontologias, ou seja como uma linguagem para descrever ontologias, existncia dos entes. 5. Em programao de software e sistemas computacionais em geral so desenvolvidos por algoritmos, que uma sequncia finita de instrues bem definidas e no ambguas, cada uma das quais pode ser executada mecanicamente num perodo de tempo finito e com uma quantidade de esforo finito. Um algoritmo no representa, necessariamente, um programa de computador, e sim os passos necessrios para realizar uma tarefa. Sua implementao pode ser feita por um computador, por outro tipo de autmato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instrues em mais ou menos tempo, espao ou esforo do que outros. Tal diferena pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. A anlise de algoritmos um ramo da cincia da computao que estuda as tcnicas de projeto de algoritmos e os algoritmos de forma abstrata, sem estarem implementados em uma linguagem de programao em particular ou implementadas de algum outro modo. Ela preocupa-se com os recursos necessrios para a execuo do algoritmo tais como o tempo de execuo e o espao de armazenamento de dados. Deve-se perceber que para um dado algoritmo pode-se ter diferentes quantidades de recursos alocados de acordo com os parmetros passados na entrada. Por exemplo, se definirmos que o fatorial de um nmero natural igual ao fatorial de seu antecessor multiplicado pelo prprio nmero, fica claro que a execuo de fatorial(10) consome mais tempo que a execuo de fatorial(5). 6. Mas, a area onde talvez lgica seja mais usada em inteligencia artificial. De fato ela o principal formalismo de representacao do conhecimento e portanto muito util no desenvolvimento de sistemas especialistas e sistemas multi-agentesassim como para descrever de forma simbolica e precisa redes neurais. O conhecimento extrado desde uma rede neural pode ser formulado em regras do tipo if-then-else as quais ainda podem ser posteriormente usadas em um sistema de inferencia lgica para a resolucao de problemas. Mas lgica classica, tambem tem sido usada no processamento de linguagens naturais, em algoritmos geneticos, robotica, etc. Mas tambem tem sido usada direta ou indiretamente, em outras areas ou disciplinas da Ciencia e da engenharia da Computacao, tais como em criptografia, sistemas de automacao e controle, processamento digital de imagens, Bioinformatica, Mineracao de dados, sistemas distribudos, etc. Alem disso, os conhecimentos em lgica classica servem de base para as outras lgicas algumas

2. LGICA E CIENCIAS DA COMPUTAONas dcadas de 50 e 60, pesquisadores previram que quando o conhecimento humano pudesse ser expresso usando lgica com notao matemtica, supunham que seria possvel criar uma mquina com a capacidade de pensar, ou seja, Inteligncia Artificial. Isto se mostrou mais difcil que o esperado em funo da complexidade do raciocnio humano. A programao lgica uma tentativa de fazer computadores usarem raciocnio lgico e a Linguagem de programao Prolog comumente utilizada para isto. A lgica classica usada nas mais variadas areas e disciplinas da computacao. Por exemplo: 1. Em Engenharia de software uma das questoes centrais desta area o uso de formalismos no processo de desenvolvimento de programas, sendo que o formalismo logico por sua facil compreensivilidade e um dos mais usados. Dentro de engenharia de software ainda, provadores automaticos de teoremas, tais como HOL (do ingles High Order Logic), tem sido empregados para especificacao e verificacao de propriedades de sistemas computacionais, entre outras coisas. Em Engenharia de software lgica classica tambem usada para descrever a semantica formal de linguagens de programacao. 2. Em Banco de dados relacionais na descricao de consultas e no relacionamento de tabelas e em banco de dados dedutivos. 3. Em hardware, a lgica classica usada como uma linguagem de descricao de componentes de hardware, alem claro das unidades lgicas de computadores utilizando algebra booleanas, estruturas algbricas que "capturam a essncia" das operaes lgicas E, OU e NO, bem como das operaes da teoria de conjuntos soma, produto e complemento. Ela tambm o fundamento da matemtica computacional, baseada em nmeros binrios.

das quais tem sido aplicadas em diversas areas da computacao.

4. APLICAES DA LGICA EM ANALISE EPROGRAMAO DE SOFTWARE

maior dificuldade, manipular valores por default e excees, assim como quantificar existencial e universalmente as expresses. Fundamentalmente, um programa em lgica pode ser visto como uma teoria de verdade que d fundamento slido a todo o sistema. Sintetizando, programao em lgica lgica em ao, onde as computaes so realizadas como dedues. Prolog, por exemplo, uma linguagem de programao que tambem se enquadra no paradigma de Programao em Lgica Matemtica. Prolog um acrnimo de PROgramming in LOGic (programao em lgica). Assim, Prolog, uma linguagem de programao baseada em lgica formal. Muitos programas de inteligncia artificial so escritos em Prolog, pois esta linguagem permite, de maneira natural, a representao e deduo de conhecimento. Prolog uma linguagem de programao interativa baseado em lgica com facilidades para a manipulao simblica e com um motor de inferncia, que lhe permite responder automaticamente questes, no s referentes ao conhecimento que contm explicitamente cada programa, ms tambm ao que se pode deduzir dele. Smbolos utilizados no prolog: Operador igual diferente maiorMenor que Maior ou igual aMenor ou igual a

A lgica de programao necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqncia lgica para o desenvolvimento. O sentido da programao lgica trazer o estilo da lgica matemtica programao de computadores. Matemticos e filsofos encontram na lgica uma ferramenta eficaz para desenvolvimento de teorias. Vrios problemas so naturalmente expressos como teorias. Lgica de programao, assim, a tcnica de encadear pensamentos para atingir determinado objetivo. Estes pensamentos, podem ser descritos como uma seqncia de instrues, que devem ser seguidas para se cumprir uma determinada tarefa. Por isso a aplicabilidade dos algoritmos no desenvolvimento de programas. Os programas de computadores nada mais so do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que so interpretados e executados por uma mquina, no caso um computador. Notem que dada esta interpretao rigorosa, um programa por natureza muito especfica e rgida em relao aos algoritmos da vida real. Os algoritmos so descritos em uma linguagem chamada pseudocdigo. Este nome uma aluso posterior implementao em uma linguagem de programao, ou seja, quando se programa em uma linguagem, por exemplo Visual Basic, se gera um cdigo em Visual Basic. Por isso os algoritmos so independentes das linguagens de programao. Ao contrrio de uma linguagem de programao no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de se interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao. Para escrever um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso utilizaremos algumas tcnicas: Usar somente um verbo por frase Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalham com informtica Usar frases curtas e simples Ser objetivo Procurar usar palavras que no tenham sentido dbio

Matemtica = > < ^ V ~

Programa o == > < >=