Sin mas preambulo ni estupidas divagaciones vamos a lo que vinimos
;determinar si un numero par
(define (numberopar n)
(if (= (remainder n 2) 0)
true
false))
(numberopar 5)
> false
(numberopar 4)
> true
(numberopar 20)
> true
Bueno, teniendo esto en cuenta, solo es dejar correr nuestra imaginacion:
En este caso podemos ver simples valores de verdad o como mas adelante usted los conocera como "booleanos" o "boolean", con estos valores de verdad podemos llegar a jugar y hacer muchas cositas
;Determiar si en un grupo de numeros hay un numero par
(define (numerospares nA nB nC)
(if (numberopar nA)
true
(if (numberopar nB)
true
(if (numberopar nC)
true
false))))
Tambien se me olvida que estas operaciones estan completamente condicionadas y fuertemente ligadas a lo que se conocen como operadores logicos:
= (igual, equal, equivalente)
> (mayor que)
< (menor que)
;Determinar el valor absoluto de un numero
(define (valorabsoluto n)
(if (> n 0)
n
(* -1 n)))
En el ejemplo anterior podemos ver como comparamos un numero que le damos a la funcion para que determine si es negativo o positivo y si el caso es negativo, osea menor que 0, entonces procedamos a multiplicarlo contra un elemento neutro negativo para cancelar el signo, a.k.a. volverlo positivo
Tambien podemos anidar el if creando mas subflujos algo como asi
;(if (> a b)
; (if (> a c)
; (if (> a d)
Pero eso es cuestion del problema con el que cada quien lidie, ahora bien, scheme tiene un sistema de nidamiento de condicionales bastante peculiar, usted, el que me lee y si le guste esto de programar, mas adelante podra ver que en lenguajes mas populares como java, javascript, c#, php, python o ruby tienen una forma como esta:
;java, javascript, c#
;if (a > b) {
;} else if (a < b) {
;} else {
;}
;php
;if ($a > $b) {
; echo "a es mayor que b"
;} elseif ($a == $b) {
; echo "a y b son iguales"
;} else {
; echo "a es menor a b"
;}
;python
;if valor:
; print valor
;elif
; print 'no valor'
;else
; print 'otro valor'
;end
;ruby
;if @valor
; puts @valor
;elsif
; puts 'no valor'
;else
; puts 'otro valor'
;end
Como les venia hablando de que drRacket es un caso peculiar y lo veremos a continuacion:
;ompaniadg
(define (cotizacionCompra nCompu)
(cond
[(> 20 nCompu)(* nCompu 3000000)]
[(< 40 nCompu)(* nCompu 2150000)]
[else (* nCompu 2740000)]))
Y pues no siendo mas, aqui les dejo el ultimo ejemplo que enrealidad es algo que tenia en mi pastebin personal para no recuerdo exactamente que
;8
(define (salarioHoras horas)
(* horas 2328))
(define (salarioTotal horas ventas)
(cond
[(> ventas 200)(+ (salarioHoras horas)
(/ (* (salarioHoras horas) 60) 100))]
[(< ventas 100)(salarioHoras horas)]
[else (+ (salarioHoras horas)
(/ (* (salarioHoras horas) 40) 100))]))
(salarioTotal 40 80)
(salarioTotal 40 101)
(salarioTotal 40 247)
No hay comentarios.:
Publicar un comentario