Mostrando las entradas con la etiqueta Aprender a programar. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Aprender a programar. Mostrar todas las entradas

jueves, 4 de diciembre de 2008

¿Con cuál lenguaje empezar?

Una buena pregunta que se hacen los novatos es la de ¿con cuál lenguaje me conviene aprender a programar? y es que hay de tantas variedades que a veces cuesta trabajo saber por donde comenzar, bien puede ser por los más populares, los más usados, los más nuevos, etc.

Personalmente recomendaría C# o Ruby, y aunque las opiniones están divididas creo que estos dos lenguajes son una buena manera de comenzar pues se trata de lenguajes modernos, ampliamente soportados, C# esla carta fuerte de .NET y Ruby que se apunta como el futuro de la disciplina y el favorito de los alpha geeks de hoy en día.

Y es a través de stackoverflow que me entero de esta paginita muy divertida donde aprendes instrucciones básicas de Ruby, y la verdad es que es muy sencillo y cualquiera con deseos de aprender puede empezar a hacerlo.

Mientras tanto yo sigo experimentando con Ruby on Rails cuando puedo, y no me quejo, es un lenguaje muy interesante y en unos años sé que crecerá exponencialmente.

Saludos!!

domingo, 26 de octubre de 2008

Aprender a programar - Small Basic

 download

Recién me entero de un nuevo lanzamiento por parte de Microsft que me pareció muy interesante.

Se trata de Small Basic un pequeño entorno de desarrollo que según sus creadores busca hacer fácil y divertido el arte de aprender a programar, está basado en la tecnología .Net con cosas propias de IDEs modernos como Intellisence. La verdad es que me parece una muy buena idea y pues ya lo descargué y hasta me dio nostalgia de recordar los días en que escribí mi primer "hola mundo".

image

La descarga es muy ligera, apenas 4 megas, muy recomendable para cualquier entusiasta que desee saber en que consiste la programación o para aquellos chavos de secundaria o incluso primaria que se quieran empezar a meter pero que les da miedo enfrentarse a herramientas complejas.

La interfaz es muy limpia, construida con WPF y agradable de usar. Lo único deseable es que incluyera ayuda pues se trata de motivar a los que empiezan.

No dejen de probar la clase Turtle ñ_ñ es muy buena.

t1
t2

Saludos

domingo, 21 de septiembre de 2008

Ejercicios para aprender a programar - Estructuras de datos y patrones

Recuerdo que en la universidad el filtro para los que aspirábamos a convertirnos en desarrolladores de software fue la temible materia de Estructura de Datos o como le decíamos nosotros "Sepultura de vatos".

Por aquí les dejo la referencia de un libro bastante decente en el que se revisan las estructuras de datos más comunes abordadas con una perspectiva de patrones de diseño de software en lenguaje C#. Es un poco difícil de leer pero es gratis, creo que podría ayudarte si estas implementando algún proyecto final o si deseas conocer más sobre estructuras de datos.

Checa aquí el libro.

Saludos

sábado, 5 de julio de 2008

Ejercicios para aprender a programar - Code Kata

El rulas en su ardua tarea de traerle a usted todos aquellos conocimientos esenciales para aprender el noble oficio de programador, le trae en esta ocasión una página muy interesante que nos da algunos ejercicios por resolver, el objetivo es practicar las técnicas que nos hacen mejores desarrolladores, la analogía que nos da sobre los katas del karate y la importancia de practicar la programación es muy interesante, ahí les dejo

sábado, 21 de junio de 2008

Ejercicios para aprender a programar - Manipulación de archivos

Un aspecto que es importante para un desarrollador es el que su sistema interactue con otros sistemas y muchas veces debido al escaso diseño de las aplicaciones estas no presentan interfaces de comunicación adecuadas, si bien estándares actuales como XML o JSON pretenden resolver esta problemática, lo cierto es que hay un sin fin de aplicaciones comerciales y diseñadas a la medida que no facilitan este tipo de tareas.

Personalmente he sufrido este problema y a veces lo que tienes para trabajar es un poderoso y siempre refinado archivo .txt ñ_ñ, así es mi estimado blogescucha, nada de WPF ni flex, nada agradable a la vista sólo un montón de controles en una forma (muerte a VB6!!).

En fin, la tarea que hay que lograr...

OBJETIVO: Contar y señalar las palabras que estén en mayúsculas (toda la palabra) en un archivo y mostrarlas en la pantalla (Con fines de simplicidad el archivo ya estará creado y su ruta se sabrá A priori a cualquier línea de código)

CODIGO:

using System;

using System.Text;

using System.IO;

using System.Collections.Generic;

 

namespace FileManipulation

{

    class Program

    {

        static void Main(string[] args)

        {

            String filename=@"C:\TestFile.txt";

            String currentLine;

            String[] dividedLine;

            StreamReader reader;

            String currentWord;

            List<String> pickedWords= new List<string>();

 

            //El stream reader lee los caracteres que vienen en un stream

            //de acuerdo a un encoding determinado. El método OpenText

            //de la clase File nos trae un StreamReader en encoding

            //UTF-8

            reader = File.OpenText(filename);

            currentLine = reader.ReadLine();

            while (currentLine != null)

            {

                dividedLine = currentLine.Split(' ');

                for (int i = 0; i < dividedLine.Length; i++)

                {

                    currentWord = dividedLine[i];

                    if (currentWord.Equals(currentWord.ToUpperInvariant()))

                        pickedWords.Add(currentWord);

                }

                currentLine = reader.ReadLine();

            }

            Console.WriteLine("Palabras en mayúsculas");

            foreach (String item in pickedWords)

            {

                Console.WriteLine(item);

            }

            Console.WriteLine(pickedWords.Count);

            Console.Read();

        }

    }

}

 

Como ya saben, siempre son bienvenidas otras soluciones y la aquí mostrada es sólo una que intenta ser pedagógica dentro de lo que su servidor puede serlo ñ_ñ.

Saludos .

sábado, 10 de mayo de 2008

Ejercicios para aprender a programar-ejemplo 3: Fizz Buzz

Hace ya un buen tiempo que soy un asiduo lector de Jeff Atwood su blog es definitivamente una referencia obligada para todos los que gustan de la tecnología y particularmente del desarrollo de software, ya hace un buen de tiempo me encontré uno de sus post en donde señalaba la grave crisis que existe a la hora de buscar programadores, pues muchos de los programadores no saben programar, por ahí señala que un gran número de desarrolladores tienen problemas en resolver problemas simples, que exigen apenas la mínima lógica de programación uno de ellos es el Fizz Buzz y aunque Jeff insistía en que no había posteado eso para que lo resolviéramos, puso un link donde te ponen de prueba escribir el código más compacto y eficiente posible para resolverlo, en aquel momento me llamo mucho la atención y empecé a tratar de hacerlo lo más compacto y eficiente, tras algunos intentos logré ponerme en las primeras posiciones, opriman ctrl+F y luego "Nikes" que así es como me conocen en el underground ¬¬ y por ahí me encontraran.

Ese es otro buen ejemplo para empezar a programar, intentenlo.

Hasta la próxima!

Ejercicios para aprender a programar -ejemplo 2: Reynolds

Otro ejemplo muy recurrente en la universidad son los problemas físicos y matemáticos, estos ofrecen un aprendizaje rápido sobre la precedencia de operadores y en algunos casos la comprensión de la lógica boleana. Debo mencionar que soy un asco en física, pero cuando uno se gana el pan con el oficio de programador se debe tener la capacidad de resolver problemas abstrayendo lo que necesite de la totalidad del problema

Objetivo:

Calcula el numero de Reynolds usando la formula (D*v*rho)/mu donde D = Diámetro, V= Velocidad, rho = Densidad mu = Viscosidad.

Escribe un programa que acepte todos los valores en unidades apropiadas sin preocuparse por conversión de unidades (ahora, si quieres…).

Si el numero es menor a 2100, Muestra “Flujo Laminar”, si está entre 2100 y 4000 muestra “Flujo Transicional” y si es mayor a 4000, muestra “Flujo Turbulento”.

Solución propuesta:

Fácil, sólo hay que seguir la fórmula mediante código.

Lo primero es hacer una pequeña clase que haga las veces de objeto de negocio de nuestro problema, es aquí donde se modela un escenario dado usando un diseño basado en objetos.

using System;
namespace Reynolds
{
    class Reynolds
    {
        //Las propiedades necesarias para calcular el número de Reynolds
        public float Diametro { get; set; }
        public float Velocidad { get; set; }
        public float Densidad { get; set; }
        public float Viscocidad { get; set; }
        //El solitario método que hace el trabajo
        public string MostrarResultado()
        {
            //Tan fácil como seguir la fórmula, hay que notar que la multiplicación está entre parentesis,
            //esto le indica al compilador que primero debe realizar las operaciones que esten dentro y el resultado
            //se dividirá entre la viscocidad
            float resultado = (Diametro * Velocidad * Densidad) / Viscocidad;
            if (resultado < 2100)
                return "Flujo Laminal";
            else if (resultado >= 2100 && resultado < 4000)
                return "Flujo Transicional";
            else if (resultado >= 4000)
                return "Flujo turbulento";
            else
                return "Error al calcular";
        }
    }

Y este sería el método main que sería quien solicitara los datos e invocaría el método de la clase "Reynolds" que hace la chamba.

using System;
namespace Reynolds
{
    class Program
    {

        static void Main(string[] args)
        {
            //Obtener todos los datos requeridos
            Reynolds reynolds = new Reynolds();
            Console.Write("Introduzca el valor del diamentro: ");
            reynolds.Diametro=float.Parse(Console.ReadLine());
            Console.WriteLine("Introduzca la velocidad: ");
            reynolds.Velocidad = float.Parse(Console.ReadLine());
            Console.WriteLine("Introduzca la densidad: ");
            reynolds.Densidad = float.Parse(Console.ReadLine());
            Console.WriteLine("Introduzca la viscocidad: ");
            reynolds.Viscocidad = float.Parse(Console.ReadLine());

            //Imprimir el resultado
            Console.WriteLine("Según los valores introducidos el tipo de flujo es " + reynolds.MostrarResultado());
        }
    }
}

Hasta la próxima!

Les dejo un pequeño reto.

Modifica el programa anterior para que pregunte si “desea calcular de nuevo? (s/n) con “si” para pedir nuevos parámetros y “no” para salir. Intenta prevenir errores como que el usuario entregase mu = 0 usando Manejo de Excepciones.

jueves, 8 de mayo de 2008

Ejercicios para aprender a programar - ejemplo 1: Fibonacci

Últimamente me han comentado algunos amigos estudiantes y otros ya egresados ¬¬ "wey pon algo ahí en tu blog para aprender a programar" aunque creo que para programar de verdad hay que invertirle mucho tiempo y no podría yo proporcionar la bala de plata para hacerlo, el otro día me encontré una lista de ejercicios que me parecieron adecuados para despertar la lógica de programación. Lo interesante de esto es que quien los trate de resolver lo debe hacer en su lenguaje favorito o en el que necesite aprender en ese momento, yo los iré publicando y resolviendo en C#, con las ventajas del framework 3.5 de .net, por lo que muy probablemente la resolución de muchos parezca muy sencilla. Si alguien lo resuelve con otro lenguaje no dude en compartirlo.

Instrucciones: Calcula la serie de Fibonacci de un número dado.

Este es todo un clásico del primer semestre de informática, el despertar una lógica recursiva puede llegar a ser una de las principales herramientas de un programador, a continuación el pequeño código que realiza la tarea y aquí el wikipediazo de Fibonacci.

using System;

class Fibonacci

{

     public static int Fibonacci(int x)

     {

        if (x <= 1)

            return 1;

        return Fibonacci(x - 1) + Fibonacci(x - 2);

    }

 

    public static void Main()

    {

        string numero;

        int intNum;

        Console.Write("Dame un número: ");

        numero = Console.ReadLine();

        intNum = int.Parse(numero);

        Console.Write("Serie de Fibonacci: " + Fibonacci(intNum));

        Console.Read();

    }

}

Esta es una versión simple de como calcular la serie de fibonacci, hay un método (Fibonacci¬¬) que calcula el valor del número proporcionado menos uno y lo suma al valor del número proporcionado menos 2, al final todos caen en el condicional verdadero del if y las suma de los valores van formando el valor final, es difícil entenderlo así de golpe, les sugiero ponerle unos Console.Write dentro del if y antes del ultimo return para comprender mejor lo que pasa.

Y ya por último para los que han de estar bostezando de tan sencillo, les dejo la manera  á la 3.5 que esta interesante, sencilla y sumamente elegante.

public static int ShowSerie(int x)

{

     Func<int, int> fib = null;

     fib = n => n > 1 ? fib(n - 1) + fib(n - 2) : n;

     return fib(x);

}

Eso es todo por ahora, luego les pondré más ejemplitos, pongan sus soluciones.