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.

4 comentarios:

cervantes dijo...

a la madre !!

que bueno que me dedico al fino arte de la publicidad ajaja..

no jodas...!!

:S

Anónimo dijo...

orale, esta practica la ultima solucion, ami me toco hacerlo con un componente

Rulas dijo...

Así es, algunas de las nuevas características de C# lo aproximan a los lenguajes funcionales, si estas interesado en este tipo de programación te recomiendo que conozcas F#.

Saludos

Unknown dijo...

hola soy nuevo en esto de la programacion y pues par ver si me pueden decir como se hace este programa espero y me puedan alludar:
1.- Hacer un programa en c# que permita calcular la serie Fibonacci con respecto a cualquier numero numero.

Agregarle la funcionalidad que este dentro del componente.