potencia en recursiva

0 comentarios

Hoy vamos a poner un ejemplo sencillo de recursividad en C/C++. Se trata de algo muy sencillo pero extraordinariamente util en la programacion de funciones matematicas, se trata de nada más y nada menos que la potencia, todos sabemos que dentro de la libreria math se pueden hacer potencias casi de cualquier tipo pero lo que con este ejercicios queremos demostrar es que por recursividad podemos tener cualquier base y cualquier exponente.

//Lo priemro como siempre es cargar las librerias que nos puedan hacer falta.
#include <stdio.h>

//Declaramos la potencia que nos va a servir como recursiva, fijaros que le pasamos dos enteros pero devuelve un numero largo, esto es para previsionar un posible fallo por un numero demasiado alto.
long potencia(int,int);

void main()
{

int x=0,y=0;//La declaracion de las variables que nunca nos puede faltar en C

printf ("\nIntroduzca la base -> ");//se saca por pantalla la peticion de una base.
scanf ("%d",&x);//y con esto lo recojemos, fijaros que solo aceptamos numeros enteros, y se lo pasamos a la variable "X"

printf ("\nintroduzca la potencia -> ");
scanf ("%d",&y);



printf ("\nel resultado es igual a %ld\n\n\n",potencia(x,y));//Esto es interesante, si os fijais imprimimos una funcion y no una variable esto es debido a que cuando lee la funcion la ejecuta una vez pasandoles las dos variables anteriores.

};


long potencia (int x,int n)//Como siempre cargamos la funcion y sus variables, se han cambiado los nombres para que veais que no hace falta que sean los mismos.
{

if (n>0)//Con la setencia if hacemos que se ejecute la primera sentencia si es cierta y si es falsa pasara al else ejecutando la segunda sentencia.
return potencia (x,n-1)*x;//con return lo que hacemos es salir de la funcion dando el resultado de lo que esta detras de ella.
else
return 1;

};

Programacion en cobol

0 comentarios

Pocos son los que programan en Cobol y de los pocos que intentan hacerlo se encuentran con el problema añadido de no encontrar con que hacerlo por eso desde el programador cutre os traemos una manera de poder probar vuestros codigos.

Anita es un programa basado en Java por lo que en cualquier maquina en la que tengais la maquina virtual de Java podreis mover el programa, en este caso el link solo incluye el .exe de Windows pero si os hace falta el de Linux me podeis enviar un mail para ponerlo en la pagina ademas de enviaroslo por mail. Tened en cuenta que este programa no es propiedad nuestra si no de si no de April System Design, cualquier duda con el programa en cuestion teneis que reportarselo a ellos, de igual manera que agradeceran que le reporteis los posibles bugs que tenga el programa. El programa en cuestion es una evaluacion de 30 dias.

Las torres de Hanoi C/C++

0 comentarios

Las torres de Hanoi es un juego matemático. Consiste en tres varillas verticales y varios discos dispuestos en la primera varilla de mayor a menor. No existen dos discos iguales y contra más hayan más dificil sera la solución, ¿Seguro? pues no por que el programador cutre os ofrece la manera de solucionar este problema; esta entrega sera en C/C++, ello no significa que no se pueda hacer en otros lenguajes.

/*Las torres de Hanoi es el juego de tres torres con unos discos en el que se tienen
*que pasar los discos de una torre a la otra con la condicion de que en ninguna torre puede
*haber un disco pequeño por debajo de uno grande
*las funciones serian:
* Hanoi (1,A,B,C)
* Hanoi (1,A,C,B)
* Hanoi (1,B,C,A)
* Donde el orden seria el de: Hanoi (numero de discos, origen, destino, torre auxiliar)*/

#include <stdio.h>//incluimos esta libreria ya que pediremos por pantalla cuantos discos se usaran.

void hanoi(int,char,char,char);// aqui se ve claramente como estamos inicializando una funcion nueva.

void main()//esta es la funcion principal, se pone void por que al ser una funcion unica tampoco no nos interesa que devuelva nada. Dentro de la funcion no recojemos nada por que de momento a los main no le pasaremos nada.
{
int num;//Declaramos un variable entera.
char A='A',B='B',C='C';//Declaramos tres variables de tipo caracter para indicar la torre en la que estamos.

printf ("Introduzca el numero de discos que utilizara: ");//Esto es lo que se visualizara por pantalla, tened en cuenta que si poneis algun tipo de escape tendria que estar fuera de las comillas.
scanf ("%d",&num);//Con %d le indicamos que lo que recogeremos sera un decimal y con &num que se pasara a la variable num.

hanoi (num,A,C,B);//Con esto realizamos la llamada a la función inicializada con anterioridad.

printf ("\n\n\n");//Se imprimiran tres saltos de linea cuando se acabe la anterior función.
}

/**En esta funcion viene la parte importante de este programa**/

void hanoi (int num,char org,char des,char aux)// Aqui se esta inicializando la función y sus variables.
{
if (num==1) //en caso de que num sea 1 se hara el ultimo printf dando por finalizado esta funcion.
printf("\n%c-->%c",org,des);//Esto nos printara en el dispositivo estandar el ultimo movimiento.
else//en caso contrario se ejecutaran tres veces seguidas las funciones
{
hanoi (num-1,org,aux,des);
hanoi (1,org,des,aux);
hanoi (num-1,aux,des,org);
}//Teneis que recordad que esto esta pensado en recursiva por lo tanto asta que num no sea 1 se seguiran concatenando las fuciones para despues volver hacia atras.
}

Bueno una vez ejecuteis este programa podreis ver cual es el resultado y una vez lo hayais visto pensad en la leyenda detras de este problema.

Cuenta la leyenda que Dios al crear el mundo colocó tres varillas de diamante con 64 discos de oro en la primera. También creó un monasterio con monjes que tenian que resolver esta torre de Hanoi divina. Se dice que el dia en que la terminen el mundo terminara. xD desde luego este Edouard Lucas creo una buena falacia.


Solucion 4 discos

Funcionamiento

0 comentarios

Teoricamente esto tendria que haber sido el primer post, pero me apetecia saludaros dando un poco de historia, se que eso es inservible y que los filosofos diran que la historia siempre se repite, pero la verdad espero que no pase eso.

En este blog vamos a dar información general sobre la programación, dandola de manera explicita desde ejercicios realmente faciles asta los mas complicados que no necesiten de herencia ni supere las 200 lineas de programa, en caso de que suceda alguna de estas cosas pasara por nuestras manos el problema enseñando algo muy importante y que todo programador tiene que tener en cuenta, esto es saber dividir el problema, de esta manera se pueden enfrentar con mayor facilidad al problema global, que sepais que no soy muy partidario de los analisis funcionales pero son un bien que todos tenemos que acojer con sumo gusto pues nos dividen los problemas de tal manera que es mas facil abordar un programa más grande y en más tiempo.

Todo lo que querais preguntar se tiene que enviar a WebMaster y el lo distribuira al que mas sepa del sistema de programación que soliciteis, en el caso de que nadie sepa de ese sistema de programación podran darse dos cosas, o bien os facilitamos un pseudocodigo con la solucion o bien aprendemos, intentaremos que no aparezcan muchos pseudocodigos.

Es posible que aparezca información que no este relacionada con la programación, tal y como puede ser un teclado nuevo de Logitech o una placa base nueva de Epox peró eso nunca dara lugar a que la pagina se vea derivada a temas que no sean de programación.

Todo lo aquí expuesto son horas que depositaremos en esta pagina y problemas personales que compartiremos con todos, en ningun caso se vera vulnerada la identidad de las empresas en las que trabajamos ni se mostrara codigo interno de las paginas, primero por que no quiero y segundo por la ley de privacidad de datos.

La pagina y todos los componentes no se hacen responsables de los codigos que salgan como contestación a las preguntas que nos formulen los visitantes, desde luego desde nuestra posición evitaremos en la medida de lo posible el facilitar lineas de programas que pudieran perjudicar la integridad de los sistemas, en caso de que se detecte dichas peticiones de una manera muy constante o de una manera muy directa nos pondremos en contacto con el usuariopara ponerle en conocimiento el problema que existe con su codigo en caso de insistencia por parte del usuario se pondra en conocimiento de las entidades judiciales pertinentes que tomaran sus propias medidas.

Esta Web no contribuira de ninguna manera en la creacion de Malware, spyware, virus o cualquier tipo de programa que pueda vulnerar la seguridad de algun sistema.

Como es logico todo lo aqui expuesto, y con esto me refiero a soluciones que no estuvieran planteadas con anterioridad, son una propiedad intelectual propia de la que nadie puede hacer un lucro personal o corporativo. (que si no haveros quemado vosotros las neuronas)

Inicio de un sueño

0 comentarios

Ningun inicio fue facil, muchos se rindieron, otros quedaron en el camino pero entre todos nos han enseñado una leccion muy importante que la constancia y la persistencia nos puede reportar la alegria de un trabajo bien realizado y en algunas ocasiones podremos ver como todo el mundo habla de aquello que nos dejo sin dormir durante unos cuantos dias.

Todo el mundo necesita de la figura del informatico desde sus inicios cuando en 1642 se invento la pascalina, posiblemente no fue el percusor de la informatica tal y como la conocemos, pero fue el primer proceso mecanico existente en la tierra capaz de sumar de una manera mecanica, se componia de ocho manivelas que hacian girar unas piezas de tal manera que podia sumar desde numeros como 000000,01 a 999999,99 ahora nos puede resultar una tonteria pero por aquel entoces hera un avance muy a tener en cuenta, hay que pensar que no fue asta 30 años despues cuando un filosofo aleman invento un proceso similar pero capaz de multiplicar y dividir y lo que parece mas dificil todavia podia obtener raices cuadradas en tipo binario.
Cierto es lo que estais pensando que de momento la figura del informatico no pinta nada en todo esto si no que es mas bien el mecanico el que podria hacer algo con esto, pero teneis que pensar que la informatica moderna tal y como la conocemos no la podemos contar asta mas o menos el 1801 cuando un hombre llamado Joseph Marie Jacquard utilizó un mecanismo de tarjetas perforadas que utilizaba para poder controlar el dibujo formado por los hilos de las telas que heran confeccionadas por una máquina. Pero en este caso se podria tratar mas bien como unas plantillas o un molde para las puntadas se dibujaran de determinada manera.
Tuvieron que pasar 42 años y que lo dijera una mujer para que se inventara la programación, no fue otra que Ada Augusta Lovelace que sugirió la idea de que las tarjetas perforadas se adaptaran de manera que ciertas operaciones se repitieran, personalmente pienso que todos dicen que fue solamente una sugerencia de esta mujer mas que nada por que en aquella epoca la mujer no hera considerada mucho mas que un ser pensado para el disfrute del hombre y para la perpetuación de la especie.

De todas maneras la programación digital propiamente dicha no se dio asta los comienzos de los años 30 cuando Atanasoff se dio cuenta de que los problemas que queria resolver requerian de una gran cantidad de calculos por lo que gracias al Consejo de Investigacion del Estado de Iowa con su aportacion de 650 dolares consiguio la cooperación de Clifford Berry y los primeros materiales. Posteriormente recibió otras donaciones sumando la cifra de 6460 dólares. La primera computadora digital que conseguieron crear se denomino ABC que no es otra cosa que las siglas de Atanasoff Berry y Computer, este aparato que costo tanto dinero, tiempo y dedicación por parte de estos dos hombre no hera más que una calculadora sencilla, el primer aparato electronico de calculo sencillo que tal y como Mrs. Augusta Lovelace havia dicho con las tarjetas perforadas podria ser el percusor de la programación avanzada.
No fue asta el 1940 cuando Atanasoff encontro a John Mauchly en la Asociacion Americana para el Avance de la Ciencia, un hombre que mas o menos a la vez havia tenido los mismos problemas por lo que se originó la disputa sobre la paternidad del computador digital.

Y esto es todo por hoy sobre la historia de la programación, nos vemos en otro momento para ver como hacer un programa sencillo.