1 / 27

Lógica de Programação

Computação Depressão O Portal do Estudante de Computação www.facebook.com/ComputacaoDepressao www.ComputacaoDepressao.com.br. Lógica de Programação. Linguagem C Pascal. Estruturas condicionais. Dão inteligência aos nossos programas!

morrison
Download Presentation

Lógica de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computação Depressão O Portal do Estudante de Computação www.facebook.com/ComputacaoDepressao www.ComputacaoDepressao.com.br Lógica de Programação Linguagem C Pascal

  2. Estruturas condicionais • Dão inteligência aos nossos programas! • Conseguimos dizer o que ele fará, de acordo com condições impostas a ele. • Essas condições podem ser agrupadas em grandes quantidades. • Essas condições apenas resultarão em dois valores: verdadeiro ou falso. • Se ele é verdadeiro, ele faz uma coisa. Senão, se ele for falso, ele faz outra coisa (ou não).

  3. Lógica proposicional e álgebra booleana • Lógica Proposicional é um sistema lógico utilizado na Lógica. • Ela propõe que operações lógicas podem ser agrupadas com operadores lógicos e cálculos lógicos podem ser feitos com elas. • Álgebra booleana, definida inicialmente pelo matemático George Boole, é uma aplicação prática da Lógica Proposicional formalizada. • Utilizamos apenas duas condições nas operações lógicas: Verdadeiro e Falso.

  4. Operadores lógicos • Negação: ¬ • E: ∧ • Ou: ∨ • Ou exclusivo: ⊻ • Existem outros operadores, mas estes serão suficientes para a utilização em lógica de programação

  5. Estrutura condicional • Na programação utilizamos uma rotina condicional chamada “SE” (no inglês “IF”) e com ela faremos com que nosso programa tome decisões através de condições. • Exemplo: SE(condição) ENTÃO FAÇA • ↳ algo • Portanto, o programa só fará algo se a condição for verdadeira. Sendo verdadeiro, ele fará algo. Se a condição não for verdadeira, ele não fará.

  6. Exemplo de condição • Eu preciso desenvolver um programa que, ao digitar a idade de um indivíduo, ele diga se ele é maior de idade (não precisa dizer se é menor de idade). O que devemos fazer? • 1 – Perguntar a idade para o usuário • 2 – Armazenar a idade em uma variável • 3 – Usar uma estrutura condicional que verifique se a idade for de 18 anos ou mais • 4 – Informar que ele é de maior, caso a condição seja verdadeira

  7. Operadores relacionais • Igual: == (em C) ou = (em Pascal) • Diferente: != (em C) ou <> (em Pascal) • Maior que: > • Menor que: < • Maior ou igual a: >= • Menor ou igual a: <=

  8. Exemplo de condição • Definir variável “idade”: número inteiro; • EstreverNaTela(“Qual é a sua idade?”); • Armazenar(idade); • Se(idade >= 18) então faça • ↳ EstreverNaTela(“Você é maior de idade.”); • //Se a idade dele for maior ou igual (>=) a 18, então está//confirmado que ele é maior de idade e será escrito na tela://“Você é maior de idade.”

  9. Estrutura condicional • Mas e se eu quiser dizer que ele é de menor, caso ele não tenha mais de 18 anos? • Para toda rotina “SE” que deve possuir uma condição verdadeira para ser atendida, há um “SENÃO” (no inglês “ELSE”) para caso a condição seja falsa, logo, não atendida. • Exemplo: SE(condição) ENTÃO FAÇA • ↳ algo • SENÃO FAÇA • ↳ outro algo

  10. Exemplo de condição • O programa deve informar se a pessoa é de maior ou de menor. • Definir variável “idade”: número inteiro; • EstreverNaTela(“Qual é a sua idade?”); • Armazenar(idade); • Se(idade >= 18) então faça • ↳ EstreverNaTela(“Você é maior de idade.”); • Senão faça • ↳ EstreverNaTela(“Você é menor de idade.”);

  11. Agrupando condições • Digamos que esse programa gerencia a entrada de pessoas em uma boate. A pessoa deve ter pelo menos 18 anos, mas tem de ser inferior a 70 anos idade. Então eu posso agrupar condições em apenas uma estrutura “SE”. • Se((idade >= 18) e (idade < 70)) então faça • ↳ EscreverNaTela(“Entrada permitida”); • Senão faça • ↳ EscreverNaTela(“Entrada negada”); • //O operador “e” é um operador lógico, como vimos. Ele será//válido se as as duas condições forem verdadeiras

  12. Tabelas verdade • Quando temos condições agrupadas em estruturas condicionais, podemos organizá-las separando as premissas. Estas premissas, analisando todas as possibilidades de permutação entre VERDADEIRO eFALSO (que são as duas únicas possibilidades de resultado entre condições lógicas), e relacionando as premissas com os operadores lógicos, nos dão a possibilidade de criar tabelas verdade. • “Se((idade >= 18) e (idade < 70))” • Condição 1: idade >= 18  premissa “p” • Condição 2: idade < 70  premissa “q”

  13. Tabela verdade: operador “e” • Com duas premissas:

  14. Tabela verdade: operador “e” • Com três premissas:

  15. Tabela verdade: operador “ou” • Com duas premissas:

  16. Tabela verdade: operador “ou” • Com três premissas:

  17. Tabela verdade: operador “ou exclusivo” • Com duas premissas:

  18. Tabela verdade: operador “ou exclusivo” • Com três premissas:

  19. Tabela verdade: operador “Negação” • Negação: • E a negação da negação? •  ¬¬p = p

  20. agrupando condições • Voltando ao exemplo da entrada da boate, temos mais uma regra. Ele deve ter pelo menos 18 anos, ter menos de 70, mas se ele tiver menos de 18, ele pode entrar acompanhando de algum adulto também com idade de pelo menos 18 anos e menos de 70. • O programa armazenará a idade da pessoa e a idade de um tutor. Caso não haja tutor, a idade do tutor será 0. Como ficará? • Se(((idade >= 18) e (idade < 70)) ou ((idade < 18) e ((tutor >= 18) e (tutor < 70)))) então faça • ↳ EscreverNaTela(“Entrada permitida”); • Senão faça • ↳ EscreverNaTela(“Entrada negada”);

  21. agrupando condições p q ¬p r s • ( • ( • (idade >= 18) e (idade < 70) • ) • ou • ( • (idade < 18) e • ( • (tutor >= 18) e (tutor < 70) • ) • ) • )

  22. Detalhes nas estruturas condicionais • Um erro comum acontece na hora de agruparmos as condições. Elas são sempre dessa forma: •  (valor + operador lógico + valor) • Se eu tenho uma estrutura condicional assim: “Se ele tiver 25 ou 26 anos, então ele está numa ótima idade para casar”. • Em programação, será...? • Se(idade = 25 ou 26)  EscreverNaTela(“Casar já!”); • Não! Isso está gramaticalmente correto, mas computacionalmente errado. • Se((idade = 25) ou (idade = 26))  EscreverNaTela(“Casar já!”);

  23. Operações matemáticas nas estruturas condicionais • Sim, podemos fazer operações matemáticas e outras operações com funções dentro das estruturas condicionais, desde que elas estejam inclusas e agrupadas entre parênteses. • Digamos que o programa informe se é ou não possível ceder um desconto na mensalidade dos dois filhos numa escola. Para isso, a diferença dos dois filhos deve ser de até 5 anos. • Primeiro devemos armazenar as idades dos filhos nas variáveis de nome “maior” (que armazenará a idade do filho mais velho) e “menor” (que armazenará a idade do filho mais novo) e realizar uma operação de subtração para sabermos a diferença entre a idade deles. • Se((maior - menor) <= 5)  EscreverNaTela(“Ceder desconto”); • Senão  EscreverNaTela(“Não é possível ceder o desconto”);

  24. ENCADEAMENTO DE ESTRUTURAS CONDICIONAIS • É possível iniciar estruturas condicionais dentro de estruturas condicionais, desde que sejam iniciadas no bloco “SENÃO” do “SE”. • Um programa que armazene a média de um aluno e informe que ele foi aprovado se a nota for entre 7.0 e 10.0, informe que ele tem direito a fazer uma prova substituta se ele a nota dele for de 4.0 até 6.9 e informe que ele foi reprovado se a nota dele for de 0 a 3.9.

  25. ENCADEAMENTO DE ESTRUTURAS CONDICIONAIS • Definir variável “média”: número de ponto flutuante; • EstreverNaTela(“Qual foi a sua média?”); • Armazenar(média); • Se(média >= 7) então faça • ↳ EstreverNaTela(“Você é foi aprovado! Parabéns!”); • Senão faça • ↳ Se(média >= 4) então faça • ↳ EstreverNaTela(“Você tem direito a uma prova substituta. Estude!”); • Senão faça • ↳ EstreverNaTela(“Você foi reprovado. Boa sorte na próxima vez!”);

  26. Estrutura de caso • Há também outra estrutura condicional, porém ela não utiliza operadores lógicos. Ela põe uma variável em evidência e para cada valor que ela possa assumir, ele executa uma ação. Há uma opção que assume qualquer valor que não esteja em algum dos casos. • Caso(hora) • Seja 7: EscreverNaTela(“Congestionamento da manhã”); • Seja 12: EscreverNaTela(“Congestionamento do almoço”); • Seja 18: EscreverNaTela(“Hora do rush”); • Senão: EscreverNaTela(“Menor chance de enfrentar • congestionamento”);

More Related