tutorial de introdução à lógica e algoritmia

Upload: aureliano-duarte

Post on 29-Oct-2015

4 views

Category:

Documents


0 download

TRANSCRIPT

Tutorial de Introduo Lgica e AlgoritmiaEste tutorial tem o objectivo de dar algumas bases nestas duas disciplinas para iniciantes programao. Sendo que a programao est assente na algoritmia, e a algoritmia est assente na lgica, como se ver ao longo deste pequeno tutorial, este torna-se de extrema importncia para se entender muitos porqus da programao que os beginners muitas vezes colocam. LgicaDe forma resumida, a lgica o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar.1) Nesta parte vamos entender os operadores lgicos bsicos - E, OU e OU OU - recorrendo s Tabelas de Verdade. Proposies e condiesDe forma muito resumida, seguem-se trs exemplos simples e perceptveis: Sentena: O Joo gosta de ir praia. Proposio: O Joo gosta de ir praia e ao campo. Condio: O Joo gosta de ir praia se estiver bom tempo.Tabela de VerdadeNuma Tabela de Verdade so analisadas todas as hipteses de resposta a um problema lgico, desde o mais simples ao mais complexo, sendo mesmo a base das bases da investigao criminal forense. So lanadas as hipteses de forma lgica, unindo as sentenas em proposies e relacionando estas ltimas em condies. Um exemplo simples e sem fundamentao forense: O Joo culpado se a arma do crime tiver as impresses digitais dele. Ou a arma uma faca se as impresses digitais forem as dextras, ou ento uma pistola se ele praticar carreira de tiro. A Tabela de Verdade tem a seguinte estrutura bsica: proposio 1 (p) proposio 2 (q) Resultado com o operador lgico X (p X q)

V V V X V

V F V X F

F V F X V

F F F X F

Havendo duas proposies, h quatro hipteses de conjugao conforme os valores lgicos da proposio. Havendo N proposies num enunciado lgico como o anterior, vo existir combinaes. Neste caso, havendo 2 proposies, existem combinaes. Valor lgico: Verdadeiro, Falso. Uma proposio s pode tomar um valor lgico - no pode ser V e F ao mesmo tempo! Operadores lgicosE - ConjunoO Joo gosta de praia e do campo. Ou seja, o Joo gosta de ambas as coisas, a praia e o campo. p q

V V V

V F F

F V F

F F F

S verdadeiro quando ambas as proposies so verdadeiras. OU - DisjunoTambm denominada de Disjuno inclusiva. O Joo gosta de praia ou do campo Isto , o Joo gosta ou da praia, ou do campo ou de ambos. p q p OU q

V V V

V F V

F V V

F F F

S falso quando ambas as proposies so falsas. OU... OU... - Disjuno exclusivaO Joo ou gosta de praia ou gosta de campo. Ou seja, O Joo gosta de um s destes ambientes, e no dos dois ao mesmo tempo: ou um ou outro. p q OU p OU q

V V F

V F V

F V V

F F F

falso quando as proposies tm o mesmo valor lgico. CondiesImplicaoSe o Joo gosta de ir praia, ento gosta do mar. p q

V V V

V F F

F V V

F F V

NOTA: Verdadeiro implica falso falso. Mas Falso implica verdadeiro uma condio verdadeira. EquivalnciaTambm chamada de Implicao dupla ou bi-implicao. O Joo gosta de praia se e s se gosta de mar. p q

V V V

V F F

F V F

F F V

Ou seja, s verdade quando ambas as proposies tiverem o mesmo valor lgico - s assim as proposies equivalem uma outra. Outras operaes lgicasNegaoEsta uma operao muito bsica que, simplesmente, nega o resultado lgico de uma proposio ou condio. p ~

V F

F V

O Joo no gosta de ir praia e gosta de de mar. - ~ Dupla negao: ~~ Igualdade e diferenaSem negao: - verdadeiro - falsoCom negao: ~ - falso ~ - verdadeiroMaior do que, menor do que, maior ou igual que, menor ou igual que - falso - verdadeiro ~ - falso ~ - verdadeiroPrincipais Leis de Morgan ~~~ ~~~AlgoritmiaUm algoritmo 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 finita.2) Ou seja, um algoritmo um caminho bem definido para se resolver um determinado problema. Por exemplo: Problema Algoritmo Geral

Multiplicar 36 por 2 Alg. da Multiplicao:

Ordenar lista de forma crescente: Alg. de Ordenao (Crescente):

Representao de AlgoritmosUm algoritmo tem uma representao para que possa ser facilmente interpretado. Antes de se programar, os problemas devem ser estudados para se chegar a um algoritmo-soluo. Este ser representado num esquema, chamada Fluxograma, ou ento escrito na linguagem-me (no nosso caso, Portugus) ou numa mistura desta com a linguagem de programao a que nos propomos resolver o dito problema. Vamos ento analisar um algoritmo muito simples que resolve o seguinte problema: Dados dois nmeros, inteiros, inseridos pelo utilizador, dizer qual o maior, ou ento se so iguais. FluxogramaVamos resolver o problema anterior segundo o algoritmo tradicional: anlise caso-a-caso, que com este problema totalmente viveis pois basta analisar duas situaes, segundo esta ordem: Se num1 maior que num2, mostra num1 Caso contrrio, se num2 que maior que num1, ento mostra num2 Por fim, se num1 no o maior e num2 tambm o no , conclui-se que s podem ser iguais.Um fluxograma respeita uma norma geral que pode ser adaptada por cada pessoa. A imagem seguinte mostra o algoritmo de resoluo do problema proposto seguindo a norma geral dos fluxogramas. No canto superior direito da imagem est uma pequena legenda, que inclui smbolos no includos no esquema.

De notar que cada caminho chamado de fluxo, e no final do programa reconhecem-se trs fluxos que so unidos antes de se dar o fim do programa: o smbolo um crculo e denomina-se conector de fluxos. Na prtica, na programao no se nota esta conexo de fluxos, mas na teoria, havendo a um determinado ponto vrios caminhos possveis, eles unem-se sempre, pelo menos no fim do programa. Esta unio pode ocorrer noutro ponto e pode reunir apenas alguns dos N fluxos que existam - vrios conectores podem existir. Pontos em que um fluxo se divide so quase sempre Condies, excepto nos Ciclos que, em si, tm dois fluxos: o fluxo das aces a processar dentro do ciclo e um fluxo de retoma do ciclo no caso de a condio de paragem no for satisfeita. Esta a teoria bsica de fluxos nas Estruturas de Repetio. Pseudo-cdigo Incio Programa Ler num1 Ler num2 Se (num1>num2) Ento Escrever "O maior : " & num1 SeNo Se (num1