Last active
January 14, 2020 04:51
-
-
Save humbertodosreis/525dd6589e7619190774cbdd5c9480b0 to your computer and use it in GitHub Desktop.
Aula Demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Parte I | |
; Objetivo: simbolos locais vs globais | |
; mostrar o exemplo de cálculo | |
(def total (* (- 1 0.10) (* 10 5))) | |
(println "Total", total) | |
; movemos a expressão para um expressão | |
(defn valor-totalizado [qtde valor] | |
(* (- 1 0.10) (* qtde valor))) | |
(println "Total" (valor-totalizado 10 5)) | |
; para simplificar a expressão, colocamos o desconto em um simbolo | |
(defn valor-totalizado [qtde valor] | |
(def taxa-desconto (- 1 0.10)) | |
(* taxa-desconto (* qtde valor))) | |
(println "Total" (valor-totalizado 10 5)) | |
; O que ocorre se remover o simbolo taxa-desconto da função? | |
; explicar o conceito de escopo, falar sobre os pontos de problema | |
(def taxa-desconto (- 1 0.10)) | |
(defn valor-totalizado [qtde valor] | |
(* taxa-desconto (* qtde valor))) | |
(println "Total" (valor-totalizado 10 5)) | |
;para resolver isso, definimos uma váriavel local | |
;explicar que o escopo é limitado para a expressão | |
(defn valor-totalizado [qtde valor] | |
(let [taxa-desconto (- 1 0.10) | |
total (* qtde valor)] | |
(* taxa-desconto total))) | |
(println "Total" (valor-totalizado 10 5)) | |
;Outro exemplo | |
(let [total 1] | |
(let [total 2] | |
(println total)) ;imprime 2 | |
(println total)) ; imprime 1 | |
; Parte II | |
; Objetivo: condicional if | |
; Para o cálculo anterior, o desconto somente deve ser aplicado se a quantidade for > 10 | |
; Exemplo de condicional | |
(> 100 50) | |
(< 30 80) | |
(if (> 100 50) | |
(println "Maior")) ; Se falso,nil | |
; Exemplo com else | |
(if (> 100 50) | |
(println "Maior") | |
(println "Menor")) | |
(if-not (= 1 2) (println "Vai imprimir")) | |
(defn multiplo-de-3? [dividendo] (= 0 (mod dividendo 3))) | |
; Função atualizada | |
(defn valor-totalizado [qtde valor] | |
(let [taxa-desconto (- 1 0.10) | |
total (* qtde valor)] | |
(if (> qtde 10) | |
(* taxa-desconto total)))) | |
(println "Total" (valor-totalizado 50 1)) | |
(println "Total" (valor-totalizado 10 1)) | |
; No exemplo anterior, se qtde <= 10, devolve nil | |
; Sempre a última expressâo é retornada | |
(defn valor-totalizado [qtde valor] | |
(let [taxa-desconto (- 1 0.10) | |
total (* qtde valor)] | |
(if (> qtde 10) | |
(* taxa-desconto total) | |
total))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment