Ir al contenido principal

Entradas

Katas (en programación)

¿Qué son las Katas (en programación)? Son ejercicios de programación que nos ayudan a mejorar nuestras técnicas y habilidades en programación. Ejemplos como: Obtener la raíz de un número usando solo restas Determinar los primeros 25 números primos usando tan solo un bucle Calcular un cuadrado mágico usando recursividad Etc. Son solo algunos ejemplos de katas de código.  Muchas veces requiere tener bastante práctica ( la práctica hace al maestro ), leer varias veces para entender los problemas, comprender y saber usar las sentencias de control (selectivas y repetitivas). Existen sitios como http://www.solveet.com/  que contienen una gran cantidad de ejercicios y retos de programación publicadas en su mayoría por usuarios. Links http://mundogeek.net/archivos/2011/03/02/katas-de-codigo/ http://ejerciciosdeprogramacion.com/

Clojure ... interoperabilidad con Java: JOptionPane

"Cuando el alumno está listo, aparece el maestro, o al menos eso dicen" En el post anterior vimos un ejemplo del uso de JOptionPane en código Clojure, ahora veremos como introducir datos usando el método showInputDialog. 1. Introduciendo un dato tipo 'String', el método no necesita  argumento. ;;importar librería ( import '(javax.swing JOptionPane));' ;;defino el método introduceDato ( defn introduceDato []     (JOptionPane/ showInputDialog          ( str "Introduce una cadena:" )      ) ) ;;lo usamos así ( def entrada (introduceDato)) ;;imprimimos (JOptionPane/ showMessageDialog nil,    ( str "Cadena: " entrada) ) Resultado: 2. Método que decide si un número es menor a 100 ( import '(javax.swing JOptionPane));' ( defn esMenor? [n]   ( if (< n 100) (JOptionPane/ showMessageDialog nil,       ( str n " es menor a 100" ) )  (JOptionPan...

Clojure ... interoperabilidad con Java

"Clojure ... ese lenguaje inventado por sumerios" - Phillips, el programador anónimo ¿Qué puedo hacer con Clojure que no pueda hacer en Java ? , para responder esta pregunta hay que entender que la filosofía que manejan ambos lenguajes es distinta,básicamente: Clojure es funcional  Java es orientado a objetos ;; un simple mensaje en Clojure ( println "Clojure es un lenguaje funcional ..." )   //en Java escribimos más código class Mensaje{      public static void hola(){            System.out.println( "Java es orientado a objetos" );      } } Clojure permite interoperabilidad con Java (al ser dependiente de la JVM), podemos hacer uso de sus librerías. También podemos hacer uso de clases en nuestros scripts. En este ejemplo vamos a mostrar una ventanita tipo alert con ayuda de Java Swing (javax.swing). ;;importamos la librería ( import '( javax.swing JOptionPan...

Python, el ahora es mejor que el nunca

Cuando iniciamos en este mundo de la programación muchas veces nos encontramos perdidos. No sabemos que lenguaje usar y el por qué nos conviene uno de otro. Creo  no se pierde nada echarle un vistazo a los lenguajes y decidir cual nos conviene.  ¿Qué lenguaje elegir para iniciar? El lenguaje preferido de algunos profesores sigue siendo C. Nada como empezar con el famoso "¡Hola, mundo! En C: #include<stdio.h> void main (){    print ( "¡Hola, mundo!" ); } En Python: print "¡Hola, mundo!" #mucho más sencillo Después viene cosas más interesantes y complejas como las funciones (o como les conocían algunos "programitas sobre otros programitas"), estructuras de control (if,if-else,for,while...), y las estructuras de control (vectores, listas,árboles...). Independientemente del que elijamos necesitamos tener nociones de lógica, entender qué es un algoritmo,estudiar el lenguaje,  y lo más importante: practicar. Python puede s...

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...