Ir al contenido principal

Entradas

Python, lo simple es mejor que lo complejo

Python es ... simple Antes de escribir el código es necesario hacer el siguiente análisis: Leer el problema y entenderlo Identificar variables y funciones Escribir paso a paso como se resuelve el problema Convertir esos pasos en código Ejemplo . Supongamos que queremos determinar el mayor de 5 números leídos del teclado. Paso 1 Esto es bastante claro. Hallar el número mayor de 5 números. Paso 2 entrada: 5 números introducidos por el usuario salida: mayor Paso 3 vector=[] mayor=0 para i=0 ; i<5 ; i++ hacer       "Introduce no. " +str(i+1)+ " : "        input vector[i] para j=0;j<0;j++ hacer       si  mayor<vector[i] entonces             mayor=vector[i] "mayor es " +str(mayor) Paso 4 Convertir el algoritmo en código. #aquí tenemos el código print "Introduce 5 numeros:" vector=[] #definimos una lista #introducimos 5...

Definir funciones en Clojure

Definir una función La sintaxis  es: ( defn nombreFunción [param1, param2,paramN]     ;; cuerpo de la función ) Las funciones pueden o no devolver un valor . Pueden o no tener argumentos. ;;mostrar un mensaje, no devuelve ningún valor ( defn mensaje     ( println "Este es un simple mensaje" ) ) ;;sumar dos números, devuelve el resultado ( defn suma [x1, x2]     (+ x1 x2) ) Invocamos las funciones: ( mensaje )  ( suma 23 45);;suma: 68 Ejemplo. Obtener la talla ideal de una persona con peso igual a 74.8 kg y un índice de masa corporal de 18.0. Fórmulas: imc(índice de masa corporal) =peso/(talla*talla) peso =imc*(talla*talla) (talla*talla) =peso/imc indice.clj ;;defino las funciones ( defn obtenerImc [p,t]   (/ p (* t t))) ( defn obtenerPeso [t,i]   (* i (* t t))) ( defn obtenerTalla [p,i]   (Math/sqrt (/ p i))) ;;defino dos variables: peso e imc ( def peso 74.8) ( def imc 18.0) ( try  ...

Python, lo bello es mejor que lo feo

En el post anterior vimos como crear una clase en Python . Comparado con lenguajes como Java es bastante sencillo.  /*Java*/ public class Submarino{       private java.util.List<String> tripulacion;       public Submarino(){}       //getters y setters      ...      ... } ''' Python ''' class  Submarino( object ):        def __init__(self,tripulacion):                self.tripulacion=tripulacion Esto solo para crear una clase, pero si necesito que una clase herede atributos y método de una clase ... ¿existe la herencia en Python?. La respuesta es si. #clase Padre class Submarino( object ):          def tipo(self):              print "submarino militar" #clase hija class Submarino_Juguete( Sub...

Crear 'clases' en Clojure

¿Cómo puedo crear un 'clase' en Clojure? ( defrecord Objeto [prop1 prop2  propN]) Para hacer uso de esta 'clase' escribimos lo siguiente: ( def miObjeto  "primerValor" "segundoValor" "otroMas") Ejemplo. Crear una 'clase' Fecha, con tres propiedades: dia,mes, y año ;;importamos la librería java.util.Scanner para introducir datos  ( import '(java.util Scanner))    ( def entrada(Scanner. *in*))   ;;creamos una interface para mostrar los valores tecleados ( defprotocol Servicio   (verFecha[this]))   ;;creamos la 'clase' Fecha e implementamos la interface Servicio ( defrecord Fecha[dia mes anyo]    Servicio    (verFecha[this]( println "Fecha: { dia:"dia" -mes: "mes" -anyo:"anyo"}")))  ;; probamos ( try   ( def miFecha(Fecha.  "23" "agosto" "1943"))   (verFecha miFecha)  ( println "Dia:")  ( def dia(.nextLine entrada)...

Creando una clase en Python

Crear una clase en Python es bastante sencillo. En la siguiente imagen se muestra un ejemplo de una clase llamada 'Triángulo_equilátero'. En Python: ''' Clase '''   class   Triangulo_equilatero(object):       def __init__(self,altura,base,lado):                  self.altura=altura                  self.base=base                  self.lado=lado No es necesario crear métodos setter y getter. Podemos acceder a cualquier miembro/propiedad de la clase de la siguiente manera: ''' main ''' def main(): #instanciamos la clase      triangulo=Triangulo(2.8,3.0,3.0)      #mostramos valores      print "altura: %f , base: %f ,lado: %f\n"%(triangulo.al...

Uso de case en Clojure

En la otra ocasión vimos como introducir datos desde Clojure usando la librería java.util.Scanner , ahora veremos como hacer uso de 'case',es  algo parecido al switch de otros lenguajes como C y Java. Supongamos introducimos un número del 1 al 3. ( import '(java.util Scanner)) ( def entrada (Scanner. *in*)) ( println "Introduce un número del 1 al 3:") ( def numero (.nextLine entrada)) Ahora crearemos nuestro 'switch'. ( case numero   "1" ( println "Introduciste el numero 1")   "2" ( println "Introduciste el numero 2")   "3" ( println "Introduciste el numero 3") ) Si introduzco el número 1, mostrará el primer mensaje, pero ¿qué pasa si coloco otro número que no sean esos 3? Para ello definimos un "else" a ese 'switch': ( case numero   "1" ( println "Introduciste el numero 1")   "2" ( println "Introduciste el numero...

Scanner en Clojure

Para introducir datos desde Clojure podemos importar la librería java.util.Scanner . Vamos hacer un ejemplo,mediante la fórmula: v=d/t , donde d=distancia,t=tiempo,  calcularemos la velocidad (v) obtenida. Un camión  recorre una distancia de 45 km en 15 minutos, ¿cuál es la velocidad que alcanza? entrada: distancia= 45 km , tiempo=15 min. salida: velocidad=¿? nombre del archivo: velocidad.clj ejecutar: java -jar clojure-1.6.0.jar velocidad.clj ;;importamos la librería java.util.Scanner ( import '(java.util Scanner)) ( def scan (Scanner. *in*)) ;;solicitamos distancia y tiempo, usamos .nextFloat ( println "Introduce distancia: ") ( def distancia (.nextFloat scan)) ( println "Introduce tiempo: ") (def tiempo (.nextFloat scan)) ;;visualizamos  datos ( println "Distancia leida: "distancia) ( println "Tiempo leido: "tiempo) ;;calculamos la velocidad ( println "Velocidad obtenida: "(/ distancia tiempo...