Baixe o app para aproveitar ainda mais
Prévia do material em texto
17 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 7 FLUXOGRAMAS O uso da lógica é fundamental para a execução de tarefas do dia a dia de todos os profissionais, em especial para os profissionais de TI. Esses profissionais continuamente se deparam com a necessidade de soluções que requerem uma aplicação lógica consistente, para se obter um resultado que garanta eficiência e eficácia e para que seja possível utilizar, desse modo, os recursos computacionais das organizações em sua plenitude. 7.1 Diagramação Prepara um diagrama de blocos para representar a linha de raciocínio lógico, denominada fluxograma, que estabelece a sequência de operações a se efetuar em um programa. Essa estruturação por meio de diagramas permite uma codificação posterior praticamente em qualquer linguagem de programação. É comum ouvir os profissionais envolvidos com desenvolvimento de aplicações denominarem os símbolos que representam as linhas de raciocínio lógico como fluxograma, diagrama de bloco ou algoritmo. Sendo assim: Fluxograma é a ferramenta utilizada para descrever os fluxos de entrada de dados, processamento e saída dos dados que um determinado grupo de linhas de código deve executar. Unidade III 5 10 15 20 18 Unidade II Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Exemplo: Figura 2 – Exemplo de fluxograma. Fonte: adaptado de Manzano; Oliveira, 1996. Diagrama de bloco é a ferramenta utilizada na descrição dos métodos e da sequência dos projetos. Exemplo: S N Figura 3 – Exemplo da diagramação de um processo. Fonte: adaptado de Manzano; Oliveira, 1996. 19 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Algoritmo é um conjunto de regras formais para obtenção de um resultado ou solução de um problema. Exemplo: S S N N Média = NotaP1+NotaP2 2 Média >=7 Nota do exame Aluno vai para exame Resultado do exame = Média + Nota do exame 2 Nota final >=5 Reprovado Aprovado Aprovado Figura 4 – Cálculo de média final do aluno. Fonte: adaptado de Manzano; Oliveira, 1996. 20 Unidade II Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 7.2 Programação estruturada Uma técnica bastante difundida no projeto lógico do programa é a programação estruturada, que consiste numa metodologia que objetiva: • agilizar a codificação escrita; • facilitar a depuração da leitura da mesma; • permitir a verificação de possíveis falhas apresentadas pelos programas; • facilitar as alterações e as atualizações dos programas. Está dividida em quatro etapas: • escrever as instruções em sequências ligadas entre si por estruturas sequenciais; • escrever instruções em grupos pequenos e combiná-las; • distribuir módulos do programa entre os diferentes programadores que trabalharão sob a supervisão do gerente de projeto; • revisar os módulos desenvolvidos em reuniões regulares, presenciais ou a distância. 7.3 Estrutura de controle A estruturação de um software deve respeitar algumas etapas para que seja possível a sua representação lógica adequada. De tal forma que aquele que escreveu o código possa relembrar rapidamente de detalhes da estrutura do programa quando necessário, e para aqueles que irão realizar manutenção posterior no programa, ter uma estrutura lógica em mãos poupa um tempo muito importante. 5 10 15 20 21 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Algoritmo 1. Conhecer dois valores incógnitos (estabelecer variáveis X e Y). 2. Efetuar a soma dos valores incógnitos X e Y, atribuindo o valor da soma na variável Z. 3. Apresentar o valor da variável Z. Diagrama de bloco Início Z ← X + Y X, Y Z > 10 Z Fim N S Figura 5 – Estrutura se ... então ... fim_se. Fonte: adaptado de Manzano; Oliveira, 1996. Programação estruturada Para representar a programação estruturada, pode-se iniciar realizando uma codificação simples, que servirá como referência 5 10 22 Unidade II Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 para você e para a equipe envolvida, ou até mesmo nas discussões com usuários. Esse código estruturado é chamado de “português estruturado”, segundo Manzano e Oliveira (1996), ou “portugol”, segundo Guimarães e Lages (1985). Segue o “português estruturado”, baseado na figura 3: Programa SOMA_NÚMEROS var X: inteiro Y: inteiro Z: inteiro início leia X leia Y Z ← X + Y se (Z > 10) então escreva Z fim_se fim Assim, é possível representar a estrutura de um programa que poderá ser escrito em praticamente qualquer linguagem de programação. 8 QUANTIFICAÇÕES O quantificador universal (∀) e o quantificador existencial (∃) são símbolos lógicos. [INT-∀]: uma quantificação universal é verdadeira se, e somente se todas as suas instâncias forem verdadeiras. Se 5 10 15 20 25 23 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 houver pelo menos uma instância falsa, então a quantificação universal será falsa. [INT-∃]: uma quantificação existencial é verdadeira se, e somente se houver pelo menos uma instância sua que seja verdadeira. Se todas as suas instâncias forem falsas, então a quantificação existencial será falsa. 8.1 Sentença aberta 8.1.1 Sentença aberta com uma variável É denominada uma sentença aberta com uma variável em um conjunto A ou apenas sentença aberta em A, uma proposição p(x) tal que p(a) é falsa (F) ou verdadeira (V) para todo a ∈ A. Exemplos: • X + 1 > 10; • X é divisor de 12. 8.1.2 Conjunto-verdade de uma sentença aberta O conjunto-verdade de uma sentença aberta p(x) em um conjunto A é o conjunto de todos os elementos a ∈ A tais que p(a) é uma proposição verdadeira (V). Simbolicamente, fica: Vp = {(x ∈ A | p(x)}. 8.1.3 Sentenças abertas com duas variáveis Compreendendo dois conjuntos A e B, entende-se por sentença aberta com duas variáveis em A x B ou sentença aberta A x B, uma expressão p(x, y) tal que p(a, b) é falsa (F) ou verdadeira (V) para todo par ordenado (a, b) ∈ A x B. 5 10 15 20 24 Unidade II Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Exemplos: • X é menor que y(x<y); • Y é divisor de y(x | y). 8.1.4 Conjunto-verdade de uma sentença aberta com duas variáveis O conjunto-verdade de uma sentença aberta p(x, y) em A x B é o conjunto de todos os elementos (a, b) ∈ A x B tais que p(a, b) é uma proposição verdadeira. Simbolicamente, fica: Vp = {(x, y) ∈ A x B | p(x, y)}. 8.1.5 Sentenças abertas com n variáveis Compreendendo n conjuntos A1, A2, A3,...An e o seu produto cartesiano A1 x A2 x ... x An, entende-se por sentença aberta com n variáveis em A1 x A2 x ... x An ou sentença aberta A1 x A2 x ... x An, uma expressão p(x1, x2, ..., xn) para toda n-upla (a1, a2, ..., na) ∈ A1 x A2 x ... x An. Exemplos: • x + 4y + 2z < 22. 8.1.6 Conjunto-verdade de uma sentença aberta com n variáveis O conjunto-verdade de uma sentença aberta p(x1, x2, ..., xn) em A1 x A2 x ... x An, o conjunto de todas n-uplas upla (a1, a2, ..., na) ∈ A1 x A2 x ... Ax tais que p(a1, a2, ..., an) é uma proposição verdadeira (V). 5 10 15 25 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Simbolicamente, fica: Vp = {(x1, x2, ..., xn) ∈ A1 x A2 x ... Ax | p(x1, x2, ..., xn)}. 8.2 Quantificador universal (∀) Seja uma sentença aberta p(x) em um conjunto não vazio A(A ≠ ∅) e seja Vp o seu conjunto-verdade: • X Vp = A Figura 6 Vp = { x | x ∈ A ∧ p(x)} Quando Vp = A, isto é, todos os elementos do conjunto A satisfazem a sentença aberta p(x), podemos, então, afirmar: (I) “Para todo elemento x de A, p(x) é verdadeira (V)”. (II) “Qualquerque seja o elemento x de A, p(x) é verdadeira (V)”. (III) “Para todo x de A, p(x)”. (IV) “Qualquer que seja x de A, p(x)”. … Assim, (V) ∀ x ∈ A: p(x). … Portanto, (VI) ∀ x: p(x). 5 10 15 26 Unidade II Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Prevalece a equivalência: (∀ x ∈ A) (p(x)) ⇔ Vp = A. A sentença aberta p(x) carece de valor V ou F, mas a sentença aberta p(x) com símbolo ∀, ou seja, (∀ x ∈ A) (p(x)), transforma-se numa proposição e tem um valor lógico que é verdade (V) se Vp = A e é falso (F) se Vp ≠ A. Ou seja, p(x) que está contido em A terá uma representação da operação lógica que transforma a sentença aberta p(x) numa proposição, verdadeira ou falsa, conforme p(x) exprime ou não uma condição universal no conjunto A. A essa operação lógica dá-se o nome de quantificação universal, e ao respectivo símbolo ∀, quantificador universal. Observe o exemplo abaixo: (∀ x) (x é mortal). Essa proposição se lê “qualquer que seja x, e é mortal”, o que é uma proposição verdadeira (V) no universo H dos seres humanos. Se a variável da sentença aberta for outra, em vez da letra x, escreve-se o qualificador universal ∀ seguido da respectiva variável. Desta forma, a expressão: (∀ Fulano) (Fulano é mortal). Lê-se “qualquer que seja Fulano, Fulano é mortal”, que significa a mesma coisa que a proposição anterior. ∀ 2x > x (“Para todo o x > 0, tem-se 2x > x”). X > 0. ∀ x2 > 0 (“Para todo o x ≠ 0, tem-se x2 > 0”). X ≠ 0. 5 10 15 20 25 27 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Outro exemplo pode ser: Primeira proposição (∀ n ∈ N) (n + 6 > 3) é verdade, porque o conjunto-verdade da sentença aberta p(n): n + 5 > 3 é: Vp = { n | n ∈ N ∧ n + 5 > 3 } = { 1, 2, 3, …} = N. Segunda proposição (∀ n ∈ N) (n + 2 > 8) é falsa, porque o conjunto-verdade da sentença aberta p(n): n + 2 > 8 é: Vp = { n | n ∈ N ∧ n + 2 > 8 } = { 6, 7, 8, …} ≠ N. 8.3 Quantificador existencial (∃) Seja uma sentença aberta p(x) em um conjunto não vazio A(A ≠ ∅) e seja Vp o seu conjunto-verdade: • X Vp A Figura 7 Vp = { x | x ∈ A ∧ p(x)}. 5 10 28 Unidade II Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 Quando Vp = A não é vazio (Vp ≠ φ), A satisfaz a sentença aberta p(x), e pode-se afirmar que: (I) “Existe pelo menos um x ∈ A tal que p(x) é verdadeira (V)”. (II) “Para algum x ∈ A, p(x) é verdadeira (V)”. (II) “Existe x ∈ A tal que p(x)”. (IV) “Para algum x ∈ A, p(x)”. … Assim, (V) ∃ x ∈ A: p(x). … Portanto, (VI) ∃ x: p(x). Prevalece a equivalência: (∃ x ∈ A) (p(x)) ⇔ Vp ≠ ∅. Dada uma sentença aberta p(x) em um conjunto A, o símbolo ∃, referido à variável x, representa uma operação lógica que transforma a sentença aberta p(x) numa proposição, verdadeira ou falsa, conforme p(x) exprime ou não uma condição possível no conjunto A. A essa operação lógica dá-se o nome de quantificação existencial, e ao respectivo símbolo ∃, quantificador existencial. 8.4 Negação de sentenças quantificadas O quantificador universal ou o existencial pode ser precedido do símbolo de negação ¬. Por exemplo, no universo dos habitantes do planeta Terra, as expressões: 5 10 15 20 29 LÓGICA ?-?sem-?mod Re vi sã o: A na - D iv isã o de u ni da de s: F ab io 1 6/ 03 /1 0 (I) (∀ x) (x fala alemão); (II) ¬(∀ x) (x fala alemão); (III) (∃ x) (x foi ao espaço); (IV) ¬(∃ x) (x foi ao espaço). Em linguagem comum, podem enunciar, respectivamente: • “Toda pessoa fala alemão”. • “Nem toda pessoa fala alemão”. • “Alguém foi ao espaço”. • “Ninguém foi ao espaço”. Portanto, são evidentes as equivalências: • ¬(∀ x) (x fala alemão) ⇔ (∃ x) (¬x fala alemão); • ¬(∃ x) (x foi ao espaço) ⇔ (∀ x) (¬x foi ao espaço). Assim, a negação da proposição (∀ x ∈ A) (p(x)) é equivalente à afirmação de que para ao menos um x ∈ A, p(x) é falsa ou ¬p(x) é verdade. Logo, subsiste a equivalência: ¬[(∀ x ∈ A) (p(x))] ⇔ (∃ x ∈ A) (¬p(x)). A negação da proposição (∃ x ∈ A) (p(x)) é equivalente à afirmação de que para todo x ∈ A, p(x) é falsa ou ¬p(x) é verdadeira. Logo, subsiste a equivalência: ¬[(∃ x ∈ A) (p(x))] ⇔ (∀ x ∈ A) (¬p(x)). Essas equivalências incorporam a regra de negação de De Morgan. 5 10 15 20
Compartilhar