domingo, 30 de noviembre de 2014

Recursividad -Factorial de un número

Definición: En programación es cuando una función o método se llama a si mismo, sirve para algoritmos complejos o que serian casi imposibles sin la recursividad.

Ventajas: 
  • Se escribe poco código.
  • resuelve problemas recurrentes. 
Desventajas:
  • Creación y uso de muchas variables, lo que consume tiempo.
  • Requiere memoria adicional, para cada llamada de la función o método de si misma.
Requerimientos y Rendimiento:
  • Llamarse a si misma dentro de su código.
  • Retornar un valor.
  • Especificar un caso base, es cuando debe de terminar llamarse a si mismo e iniciar el retorno de los valores generados en cada llamada.
  • Hacer un análisis comparativo de uso de memoria y velocidad para saber si aplicar recursividad o su equivalente iterativo en caso de haberlo.
Seudocódigo o algoritmo en PSeint factorial de un número en forma recursiva:








martes, 11 de noviembre de 2014

Algortitmo para convertir números arábigos a números romanos


Historia:


   Los romanos formaron un imperio que se extendía por la mayor parte de Europa y por el norte de África
Los pueblos sometidos aprendieron de ellos su modo de vida, sus costumbres, su lengua llamada latín, su escritura y también su sistema de numeración.

  Tras la desaparición del Imperio Romano, en los siglos posteriores algunas de las cosas aprendidas de los romanos permanecieron, aunque fueron cambiando. Así nosotros, actualmente hablamos Castellano que es Latín evolucionado y al escribir seguimos utilizando letras latinas. Pero otras cosas aunque permanecieron varios siglos, después desaparecieron, así pasó con el sistema de numeración romano. Se sustituyó por el sistema de numeración arábigo, que proviene de la India y lo extendieron los árabes, es el que empleamos ahora y es mucho más fácil de manejar.

   Actualmente vemos y utilizamos números romanos en muy pocas ocasiones: para nombrar los siglos, en los actos y escenas de una obra de teatro, en la designación de olimpiadas, congresos y certámenes, en la numeración de reyes, emperadores y papas, en inscripciones antiguas y en relojes antiguos.

Algoritmo para convertir números arábigos a números romanos



Proceso Romanos
      Definir r,i,n,numsRomanos,nT Como Entero;
      Definir romano Como Texto;
      nT<-0;
      romano<-"";
      Escribir "Número:";
      Leer n;
     
                        r<-n%1000;
                        nT<-n/1000;
                        si(nT>=1 && nT<=9)Entonces
                             romano<-romano+repetirCaracteres(nT,'M');
                        FinSi
                        n<-r;
                       
                        r<-n%500;
                        nT<-n/500;
                        si(nT==1 && r<400)Entonces
                             romano<-romano+"D";
                        Sino
                             si(nT>0 && r>=400)Entonces
                                   romano<-romano+"CM";
                             FinSi
                        FinSi
                        n<-r;
                 
                        r<-n%100;
                        nT<-n/100;
                        si(nT>=1 && nT<=3)Entonces
                             romano<-romano+repetirCaracteres(nT,'C');
                        Sino
                             si(nT==4 && n>500)Entonces
                                   romano<-romano+"CD";
                             FinSi
                        FinSi
                        n<-r;
                       
                        r<-n%50;
                        nT<-n/50;
                        si(nT==1 && r<=39  )Entonces
                             romano<-romano+"L";
                        Sino
                             si(n>80)Entonces
                                   romano<-romano+"XC";
                             FinSi
                        FinSi
                        n<-r;
                       
                        r<-n%10;
                        nT<-n/10;
                        si(nT>=1 && nT<=3)Entonces
                             romano<-romano+repetirCaracteres(nT,'X');
                        FinSi
                        n<-r;

                        r<-n%5;
                        nT<-n/5;
                        si(nT==1 && r<4)Entonces
                             romano<-romano+"V";
                        finSi
                        si(nT==1 && n==9)Entonces
                             romano<-romano+"IX";
                        FinSi
                       
                        si(r>=1 && r<=3)Entonces
                             romano<-romano+repetirCaracteres(r,'I');
                        FinSi
                        Si(nT==0 && r==4)Entonces
                             romano<-romano+'IV';
                        FinSi
                        n<-r;

      Escribir "Numero romano: ",romano;
           
FinProceso

SubProceso ca<-repetirCaracteres(nV,c)
      Definir i Como entero;
      Definir ca Como Texto;
      ca<-"";
      Para i<-1 Hasta nV Con Paso 1 Hacer
            ca<-ca+c;
      FinPara
FinSubProceso

  Este algoritmo muestra una forma de convertir números arábigos a números romanos solo probado con positivos.
  Cualquier duda o comentario, también si hay errores favor de comentar espero les guste.