quinta-feira, 28 de maio de 2015

Aula 29–Tomada de Decisão – COND

Olá pessoal hoje aprenderemos o nosso ultimo comando de tomada de decisão o COND, apesar de ser um pouco mais complicado que o IF ele é de entendimento mais fácil, mais complicado por causa da sua sintaxe, muito programadores iniciantes (isso também aconteceu comigo) preferem utilizar o COND ao IF por acharem que ele é melhor e mais fácil, porem com o passar do tempo se percebe que o COND torna o programa difícil de ser interpretado e ele pode não atender a todas as condições possíveis, as vezes (quase sempre) é melhor usar IF alinhados (aprenderemos na aula de exercícios), então tomem cuidado COND demais pode atrapalhar os seus programas, prefira sempre o IF.

A função COND executa blocos de programação se o mesmo atender as condições especificadas, podemos ter quantas condições quisermos, é possível ainda criar um bloco de informação para que o mesmo seja executado se nenhuma das condições for atendida.

Sintaxe:

(cond
((<condição 1>)
(bloco de programação da condição 1)
)
((<condição 2>)
(bloco de programação da condição 2)
)
((<condição N>)
(bloco de programação da condição N)
)
(T
(bloco de informação caso nenhuma das condições acima tenha sido atendidas)
)
)


Realmente olhando a sintaxe do COND ela realmente assusta, talvez no final dessa leitura você ainda fique assustado, porem garanto que na vídeo-aula tudo parecera mais simples.

Nada melhor que um exemplo para que consigamos entender melhor o COND.

Exemplo 1:

Vamos criar um programa que o usuário escolha entre circulo, linha ou texto e dependendo da escolha o programa rodara o fluxo de informação escolhida, nesse exemplo não vamos criar uma condição caso nenhuma das condições seja satisfatória, faremos isso no próximo exemplo.

(defun c:exc()
  (setq opcao (getstring "\nEscolha <Circle/Linha/Texto>: "))
  (cond
    ((or (= opcao "c") (= opcao "C"))
      (setq pt1 (getpoint "\nClique no local desejado: "))
      (command "circle" pt1 10)
     )
     ((or (= opcao "l") (= opcao "L"))
      (setq pt1 (getpoint "\nClique no primeiro ponto: "))
      (setq pt2 (getpoint pt1 "\nClique no segundo ponto: "))
      (command "line" pt1 pt2 "")
     )
    ((or (= opcao "t") (= opcao "T"))
      (setq pt1 (getpoint "\nClique no local desejado: "))
      (command "text" pt1 "2" "0" "Exemplo")
     )
    )
  (princ)
  )

No exemplo acima, caso o usuário digite C (em amarelo), L (em verde) ou T (em laranja) ele executara um bloco de programação especifico, porém nada acontecera caso nenhuma das condições seja atendida, no exemplo abaixo mostrarei como criar um bloco programação caso isso aconteça.

Exemplo 2:

(defun c:exc2()
  (setq opcao (getstring "\nEscolha <Circle/Linha/Texto>: "))
  (cond
   
((or (= opcao "c") (= opcao "C"))
     (setq pt1 (getpoint "\nClique no local desejado: "))
     (command "circle" pt1 10)
     )
     ((or (= opcao "l") (= opcao "L"))
      (setq pt1 (getpoint "\nClique no primeiro ponto: "))
      (setq pt2 (getpoint pt1 "\nClique no segundo ponto: "))
      (command "line" pt1 pt2 "")
      )
    ((or (= opcao "t") (= opcao "T"))
      (setq pt1 (getpoint "\nClique no local desejado: "))
      (command "text" pt1 "2" "0" "Exemplo")
      )
   
(t
     (prompt "\nNenhuma das opções válidas foi selecionada.")
     )
    )
  (princ)
  )

No exemplo acima, caso o usuário digite C (em amarelo), L (em verde) ou T (em laranja) ele executara um bloco de programação especifico, porem se nenhuma dessas opções for escolhida ele fara o bloco de programação na cor vermelha, nesse caso ele emitira uma mensagem na linha de comando informando que nenhuma das opções válidas foi selecionada.

Exemplo 3:

Nesse exemplo o usuário vai digitar uma idade e vamos informar para ele se ele é uma criança, adolescente, adulto ou idoso.

(defun c:age()
  (setq idade (getint "\nDigite a sua idade: "))
  (cond
    ((and (>= idade 0)(<= idade 12))
     (alert "Voce é uma criança!!!")
     )
     ((and (> idade 12)(<= idade 17))
     (alert "Voce é um adolecente!!!")
     )
    ((and (> idade 17)(<= idade 50))
     (alert "Voce é um adulto!!!")
     )
    ((> idade 50)
     (alert "Voce é um idoso!!!")
     )
    )
  (princ)
  )

Esse é o ultimo comando de tomada de decisões, na próxima aula faremos alguns exercícios comentados para fixação do assunto.

Abaixo segue o link dessa vídeo Aula no meu canal Manual de Cad no youtube.

https://www.youtube.com/watch?v=d2KB8Em3_wM&feature=youtu.be

Espero que tenham gostado.

Sergio Fernandes

Manual de Cad 

Nenhum comentário:

Postar um comentário