Fibonacci, Factorial, Tablas de Multiplicar y Listas en shell linux

Hola a todos tiempo sin escribir. Siempre con ganas de compartir una que otra cosita pero entre las ocupaciones me quedo sin hacerlo. esta vez les voy a compartir un programa en shell linux que lo hice para estudiar para un parcial y contiene lo siguiente:

  1. Un menu en shell linux (EN si contiene varios)
  2. Operaciones matematicas en shell linux
  3. Generación de tablas de multiplicar en shell linux
  4. Fibonacci en shell linux
  5. Factorial en shell linux
  6. Listas (escritura y busqueda dentro de un archivo) en shell linux
bueno la aplicación dispone de varios menú y hace control de flujo sobre ellos por si quieres volver a ejecutar una operación o ir saliendo.

Y no lo van a creer pero despues de pasar casi toda la noche estudiando y haciendo esto el profesor coloco en el parcial determinar si un numero era primo o no jajaja. bueno ese codigo se quedo en la U si que me quedo sin compartirlo :D

Ahora, el código de la aplicación:


#!/bin/sh

#Programita para estudiar para el parcial de Sistemas Operativos 2

opPPal=0 #esta variable controla que se vuelva al menu ppal

while (test $opPPal -lt 1) || (test $opPPal -gt 1)
do 

op=0 # esta es la variable que me va a controlar el  flujo del while

while (test $op -lt 1) || (test $op -gt 6)
 do
clear
echo " Universidad Popular del Cesar"
echo " "
echo " "
echo "Seleccion una opcion: "
echo " "
echo "1. Operaciones matematicas "
echo "2. Tablas de Multiplicar"
echo "3. Fibonacci"
echo "4. Factorial"
echo "5. Listas"
echo "6. Salir "
echo " "
echo "Operacion a ejecutar: \c "
read op
done #hasta aqui el wuile del menu

case  $op
in

 1) #Opcion de operaciones matematicas
    clear
    echo Operaciones basicas
    echo " "
    echo "Num 1:  "
    read num1
    echo " "
    echo "Num 2: "
    read num2
    #pimero mostramos la suma
    resultado=`expr $num1 '+' $num2`
    echo "El resutldo de la suma es: $resultado"
    #segundo la resta
    resultado=`expr $num1 '-' $num2`
    echo "El resutldo de la resta es: $resultado"
    #tercero la multiplicacion
    resultado=`expr $num1 '*' $num2`
    echo "El resutldo de la mult es: $resultado"
    #cuarto divicion
     resultado=`expr $num1 '/' $num2`
    echo "El resutldo de la div es: $resultado"
 
    ;; #fin case 1
 2) 
     # Genera la tabal de multiplicar de un numero
     clear
     echo "Tabla de Multiplicar"
     echo " "
     echo "Numero:  \c"
     read nMult
     echo " "
     echo "Los resultados son: "
     echo " "  
     ii=1
     while (test $ii -le 10) 
     do
 mult=`expr $nMult '*' $ii` 
      echo  "$nMult * $ii = $mult"
     
        ii=`expr $ii '+' 1`     
     done #fin while contador multiplicacion

   ;; #fin case 2


3)
  # Genera el fibonacci de un numero

  clear
  echo "Fibonacci de un numero"
  echo " "
  echo "Digite un numero: \c "
  read nFib

  echo "El fibonacci es: "

  nActual=1
  nAnte=-1
  z=1
 
  while (test $z -le $nFib)
  do
    c=`expr $nAnte '+' $nActual` 
    nAnte=$nActual
    nActual=$c
    
    echo "$c" 
    
    z=`expr $nAnte '+' 1`
  done #fin while fibonacci   


  ;;
4)
  #Genera el factorial
  clear
  echo "Factoria de un numero"
  echo " "
  echo "Digite un numero: \c "
  read nFact
  numero=1
  i=1
  while (test $i -le $nFact)
  do     
     bbb=0
     aa=1 
     
     while  (test $aa -le $i)
     do
       bbb=`expr $bbb '+' $numero`
       aa=`expr $aa '+' 1`   
       # echo "vale -- $aa"
     done #fin while 2
     
    numero=$bbb

    i=`expr $i '+' 1`     
    
  done #fin while 1 factorial 


   echo "El factorial es: $numero"
 ;;


  5)
    ##porgrama de listas

   
   opLD=0 # esta variable me va a controlar si se mantiene en el menu de la lista o sale del aplicativo
 
   while (test $opLD -lt 1) || (test $opLD -gt 1)
   do 
        clear
 opl=0 # esta es la variable que me va a controlar el  flujo del while para la lectura de la opcion del menu

  while (test $opl -lt 1) || (test $opl -gt 3)
    do
         clear
           echo " Universidad Popular del Cesar"
           echo " "
           echo " "
           echo "Seleccione una opcion: "
    echo " "
         echo "1. Crear - Agregar" #Se necesita crear un archivo que se llame listaMenu en el directorio donde este este script
    echo "2. Consultar"
    echo "3. Salir"
    echo " "
    echo "Operacion a ejecutar: \c "
    read opl
        done #hasta aqui el wuile del menu  de listas

 case $opl
        in
          1) 
            clear
            echo "Digite su nombre: \c"   
            read nombre
            echo $nombre >>  listaMenu
            echo " "
            echo "Almacenado correctamente."
            ;;
          2)
            clear
            echo "Digite el nombre a buscar: \c"   
            read nombre
            grep $nombre listaMenu
            ;;
          3)
            ;;
             
 esac
    

   echo " "
   echo " "
   echo "Desea seguir ejecutando la opcion de listas? 0 (Si) 1 (No) \c"
   read opLD 

  done #hasta aqui el while para mantenerse dentro del menu de listas

  ;;
 6) 
   clear
   echo " "
   echo " "
   echo "Gracias por utilizar el aplicativo y no olvides Cristo te ama y quiere salvarte."
   echo " "
   echo " "
   opPPal=1  #esto es para mandar al aplicativo a salir y omitir el if que esta unas lineas abajo
   ;;
 *)
   # aqui entra cuando no encuenta ninguna de las opciones
 ;;

esac #fin case

if (test $opPPal -ne 1) #si es diferente de 1 salgo de la aplicacion ()
then

echo " "
echo " "
echo "Desea seguir en la aplicacion? 0 (Si) 1 (No) \c"
read opPPal 

fi

done #fin while ppal que permite que se repita el menu

Nota: No soy un experto en shell ni mucho menos en linux esto solo es el fruto de una noche de estudio.

PD:  Cristo te Ama y quiere salvarte.

Algoritmo tiempo mas corto y al azar en C#

En esta ocasión les quiero compartir este trabajo que me toco hacer como requisito en la materia de Sistemas Operativos 1. consiste en desarrollar un simulador o cualquier aplicación que implemente estos algoritmos para funcionamientos. yo lo que hice fue desarrollar un reproductor multimedia que utiliza estos dos algoritmos, claro algo sencillo pero es chevere.

La funcionalidad de estos algoritmos se basa en lo siguiente:

  • Algoritmo Tiempo mas corto: lo que hace es mirar entre todos los procesos y ver cual tiene menor tiempo de duración entonces ira ejecutando el que tenga menor tiempo de duración.  para un reproductor que implementa esta funcionalidad solo consiste en leer el tiempo de duración de la canción que se selecciono (Lista de canciones)cada una de esta representa un proceso luego lo que hago es ordenarlos de menor a mayor y listo voy reproduciendo.
  • Algoritmo al Azar: este algoritmo es sencillo  entre todas las canciones seleccionadas (procesos) va reproduciendo al azar.
Capturas de la aplicación.

En la siguiente pantalla se seleccionan las canciones a reproducir.


las canciones quedaran cargadas en la ventana de configuración (Si alguna no les carga el tiempo. hacer clic en la fila para que capture el tiempo de la canción).


luego hacer clic en el botón inferior simular tiempo mas corto. y el sistema organizara las canciones según el algoritmo de planificación q se halla seleccionado para este caso tiempo mas corto.

Panel izquierdo (Procesos en estado esperando). Panel Central (Procesos en Ejecución  y Panel derecho (Procesos Terminados).


A continuación podrán descargar el proyecto, esta desarrollado en Visual Studio 2010 Profesional


Saber si Javascript no esta habilitado en el navegador en asp.net

Hola a todos.

llevo bastante tiempo sin escribir pero es debido al tiempo :D estaba haciendo unas revisiones y me tope con la necesidad de saber si nuestro script se ejecuta o no. coloquemos un ejemplo digamos que mostramos un mensaje al usuario usando alert y si javascript no esta habilitado este usuario no recibirá esta notificación  despues de un rato pensar y explorando entre lo brindado por asp.net llegue a una conclucion senccilla:

colocar un hiddenfield en la pagina pasarle un valor por javascript  en el evento load luego cuando vaya a imprimir el mensaje verifico si ese hiddenfield contiene el valor pasado por javascript si no es así  quiere decir que javascript no esta actualmente habilitado en el navegador entonces lo que hago es mostrar el mensaje en un label que esta visible a la vista.

esa es la explicación teórica ahora les comparto el código que hice para realizar este proceso:


1
2
3
4
5
6
String idHF = HiddenField1.ClientID;

String alerta;

      alerta = "<script> theForm." + idHF + ".value='_true'; </script>";
      ScriptManager.RegisterStartupScript(this, typeof(Page), 'alerta', alerta, false);

Luego antes de enviar la alerta para este caso se verifica cual es el valor del hiddenfield si es _true quiere decir que si esta habilitado javascript en el navegador.

Esto es un ejmplo basico pero se puede extender muy facilmente para implementar otras funcionalidades.


Nota: Hay que saber que es diferente que el navegador no soporte javascript a que el navegador si soporta javascript pero no tienen javascript habilitado actualmente. para este segundo caso es que se aplica el método que acabo de mostrar.

Creando un nntool en matlab




Hola, buenas tardes a todos.

Después de varios pero varios meses sin escribir les traigo esta utilidad que es una interfaz gráfica en matlab que simula las operaciones del nntool y así poder generar redes neuronales.

a tener en cuenta:
las entradas, salidas, pesos iniciales (en el momento que desee cambiarlos), entrada para la simulación (en el momento que desee cambiarla) se ingresan en forma matricial de la siguiente forma:

[-1 -1 1 1; -1 1 -1 1]

El ordene de ejcuccion es:
  1. Seleccionar el algoritmo
  2. escribir el numero de capas
  3. dar clic en el botón generar capas
  4. el el recuadro neuronas por capa ir seleccionando la capa, escribir al frente el numero de neuronas y seleccionar a bajo la función de transferencia a usar.
  5. hacer clic en aplicar
  6. repetir pasos 4 y 5 por cada capa que tenga la red neuronal
  7. ir a datos de entrenamiento
  8. seleccionar función de entrenamiento
  9. escribir los parámetros iniciales epoch, gl, goal
  10. los pesos iniciales pueden ser automáticos o definidos por el usuario, si son definidos por el usuario aparecer un recuadro donde se debe ingresar los pesos iniciales en forma matricial como se explico al comienzo del post
  11. hacer clic en generar red
  12. hacer clic en inicializar y entrenar red (aqui se muesta la grafica de entrenamiento)
  13. ir a datos de simulación
  14. escoger si simular la red con la matriz de entrada (p) o ingresar una matriz con la cual realizar la prueba.
  15. hacer clic en simular red.
  16. los resultados de la simulación se obtienen en el recuadro resultados de la simulación







Interfaz Grafica en Matlab para Metodos Numericos

Me gusta compartir, y esta vez será algo que ayude a todos aquellos que por falta de tiempo han tenido dificultades para aprender algo de matlab, y no han podido realizar su “simulación” de los diferentes métodos numéricos aprendidos, y pues aquí les traigo una pequeña aplicación que desarrolle con implementación de interfaz grafica que resuelva estos ejercicios y no tengamos que estar haciendo tablas una y otra vez sino que tengamos los resultados de las tablas y todos los datos adicionales necesarios a unos solos clics.  

Metodos:

1) bairstow
2) biseccion
3)regresion gaussiana
4) interpolacion
5) metodo de euler
6) minimos cuadrados
7) metodo de newton rapson
8) newton para ecuaciones no lineales
9) runge kutta
10) gauss seidal 


Algunas Capturas:
                          









Arrastrar y soltar (drap y drop) en visual basic.net

Hola a todos, hoy desarrollaremos una práctica sobre arrastrar y soltar (drap y drop), esto se debe a que no solo es importante conocer cada vez más sobre programación (Claro que es muy importante, y primordial), sino también por comprender un poco que nuestros productos van enfocados al uso de usuarios finales(clientes u otros) y estos usuarios se clasifican en dos, los usuarios del teclado que les encanta escribir mucho, y los usuarios del mouse, que prefieren solo hacer operaciones  básicas como nuestro caso, de arrastrar y soltar objetos, además digamos algo ¿a quién no le gusta trabajar con el mouse?.

Una vista previa de lo que sera nuestra Practica:



Información técnica sobre la aplicación:




Esta desarrollada con visual basic.NET 2004 y framework 4.0, y pues se enfoca al uso de drap y drop, para obtener más información sobre: drap y drop, consultar un poco en internet, encontraran mucha ayuda, ya que para nuestro fin, solo realizamos practicas que ustedes puedan descargar y aplicar, y también decir que hay un formulario principal que acopla el arrastrar y soltar de texto, imágenes y archivos, y un formulario para cada uno de estos procedimientos, para que sea estudiado y comprendido mejor.

Algo de código fuente, arrastrar imagenes:

  1 Public Class ArrasrarImgs
  2     Private img As Image
  3     Private imglocalizacion As Point
  4  
  5     Private Sub ArrasrarImgs_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
  6         If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  7             ' Assign the file names to a string array, in 
  8             ' case the user has selected multiple files.
  9             Dim files As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
 10             Try 
 11                 ' Assign the first image to the 'picture' variable.
 12                 Me.img = Image.FromFile(files(0))
 13                 ' Set the picture location equal to the drop point.
 14  
 15                 Me.Foto2.Image = Me.img
 16                 ' Me.imglocalizacion = Me.PointToClient(New Point(e.X, e.Y))
 17             Catch ex As Exception
 18                 MessageBox.Show(ex.Message) 
 19                 Return 
 20             End Try
 21         End If
 22  
 23         ' Handle Bitmap data. 
 24         If e.Data.GetDataPresent(DataFormats.Bitmap) Then
 25             Try 
 26                 ' Create an Image and assign it to the picture variable.
 27                 Me.img = CType(e.Data.GetData(DataFormats.Bitmap), Image)
 28                 ' Set the picture location equal to the drop point.
 29                 Me.imglocalizacion = Me.PointToClient(New Point(e.X, e.Y))
 30             Catch ex As Exception
 31                 MessageBox.Show(ex.Message) 
 32                 Return 
 33             End Try
 34         End If
 35  
 36         ' Force the form to be redrawn with the image.
 37         Me.Invalidate() 
 38     End Sub
 39  
 40     Private Sub ArrasrarImgs_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
 41         If e.Data.GetDataPresent(DataFormats.Bitmap) _
 42       Or e.Data.GetDataPresent(DataFormats.FileDrop) Then
 43             e.Effect = DragDropEffects.Copy 
 44         Else 
 45             e.Effect = DragDropEffects.None 
 46         End If
 47     End Sub
 48  
 49  
 50     Private Sub ArrasrarImgs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 51         Me.AllowDrop = True
 52     End Sub
 53  
 54  
 55     Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
 56         MyBase.OnPaint(e) 
 57  
 58          
 59         If (Me.img IsNot Nothing) And _
 60           Not (Me.imglocalizacion.Equals(Point.Empty)) Then
 61             e.Graphics.DrawImage(Me.img, Me.imglocalizacion)
 62         End If
 63     End Sub
 64  
 65  
 66 End Class

código fuente, arrastrar texto:

  1 Public Class FormrArrastrarTexto
  2     Private MouseIsDown As Boolean = False
  3     'establecer la propiedad AllowDrop de la caja2 como true
  4  
  5  
  6     Private Sub CajaConfirmacion_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles CajaConfirmacion.DragDrop
  7         CajaConfirmacion.Text = e.Data.GetData(DataFormats.Text) 
  8     End Sub
  9  
 10     Private Sub CajaConfirmacion_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles CajaConfirmacion.DragEnter
 11         ' Check the format of the data being dropped.
 12  
 13         If (e.Data.GetDataPresent(DataFormats.Text)) Then
 14             ' Display the copy cursor. 
 15             e.Effect = DragDropEffects.Copy 
 16         Else 
 17             ' Display the no-drop cursor.
 18             e.Effect = DragDropEffects.Copy 
 19         End If
 20     End Sub
 21  
 22  
 23     Private Sub CajaCorreo_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CajaCorreo.MouseDown
 24  
 25         'primero que todo activo este flag o alerta que me avisa que se hizo clcik en la caja
 26         MouseIsDown = True 
 27     End Sub
 28  
 29     Private Sub CajaCorreo_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CajaCorreo.MouseMove
 30         'si se hizo click en la caja y el usuario 
 31         'mueve el mouse mientras el puntero está sobre la caja
 32         If MouseIsDown Then
 33             'inicio la operacion de arrastar y colocar
 34             CajaCorreo.DoDragDrop(CajaCorreo.Text, DragDropEffects.Copy) 
 35         End If
 36         MouseIsDown = False 
 37  
 38     End Sub
 39  
 40 End Class
 41 


código fuente, arrastrar Archivos:




  1 Public Class arrastrarARchivos
  2  
  3  
  4     Private Sub arrastrarARchivos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5         Me.AllowDrop = True
  6         Me.Caja1.AllowDrop = True
  7     End Sub
  8  
  9     Private Sub Caja1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Caja1.DragDrop
 10        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
 11             Dim MyFiles() As String
 12             Dim i As Integer
 13  
 14             ' Assign the files to an array.
 15             MyFiles = e.Data.GetData(DataFormats.FileDrop) 
 16             ' Loop through the array and add the files to the list.
 17  
 18  
 19  
 20             If MyFiles.Length > 0 Then
 21  
 22                 Me.Caja1.Multiline = True
 23                 Me.Caja1.ScrollBars = ScrollBars.Both
 24                 For i = 0 To MyFiles.Length - 1 
 25                     ' ListBox1.Items.Add(MyFiles(i))
 26                     Caja1.Text = Caja1.Text & MyFiles(i) & vbNewLine 
 27                 Next 
 28             Else 
 29                 Caja1.Text = MyFiles(0) 
 30             End If
 31              
 32         End If
 33     End Sub
 34  
 35     Private Sub Caja1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Caja1.DragEnter
 36         If e.Data.GetDataPresent(DataFormats.FileDrop) Then
 37             e.Effect = DragDropEffects.All 
 38         End If
 39     End Sub
 40  
 41     Private Sub Caja1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Caja1.TextChanged
 42  
 43     End Sub
 44 End Class
 45 











No siendo mas espero les halla agradado esta practica y pues no se les olvide sigan pendiente del blog.

Algoritmo:Convertir número décimal a hexadecimal en Java

Hola…   En este post quiero os  regalar un algoritmo (de mi autoría) que he realizado en pseudocódigo a lápiz y papel, pero se los regalaré en un lenguaje en el cuál aún no estoy acostumbrado a programar, Java.
El Algoritmo es fácil y sencillo, espero te sirva de ayuda:
método (ó función):    firstHex(int dec): Recibe como parámetro un numero décimal menor que 16. Sirve para convertir los numeros del 10 al 15 a su equivalente en Hexadecimal (A,B,C,D,E ó F).  Si es un numero menor que 10 devuelve el mismo número.
1 public String firstHex(int dec) {
  2         String numeroHex=""; 
  3         if(dec<16) {
  4             switch(dec) { 
  5                     case 10:
  6                     numeroHex="A"; 
  7                     break; 
  8                     case 11:
  9                     numeroHex="B"; 
 10                     break; 
 11                     case 12:
 12                     numeroHex="C"; 
 13                     break; 
 14                     case 13:
 15                     numeroHex="D"; 
 16                     break; 
 17                     case 14:
 18                     numeroHex="E"; 
 19                     break; 
 20                     case 15:
 21                     numeroHex="F"; 
 22                     break; 
 23                     default: 
 24                     numeroHex=Integer.toString(dec); 
 25                     break; 
 26                 } 
 27             return numeroHex; 
 28         } else { 
 29         return "false";
 30         } 
 31     }
método (ó función):   toHex(int dec): Recibe como parámetro un numero décimal cualquiera (menor, igual o mayor que 16).  Su función es de convertir totalmente el número en Hexadecimal.  Hace uso defirstHex(int dec).




  1 public String toHex(int dec) {
  2         int cociente=16, residuo=0;
  3         String numeroHex="", numeroHex1="";
  4         if(dec<16)
  5          {
  6              numeroHex=firstHex(dec);
  7          } else 
  8            {
  9              do 
 10               {
 11                cociente=dec/16;
 12                residuo=dec%16;
 13                dec=cociente;
 14                numeroHex1=firstHex(residuo);
 15                numeroHex=numeroHex1+numeroHex;
 16                dec=cociente;         
 17               } while (dec&gt;=16);
 18         numeroHex1=firstHex(dec);
 19         numeroHex=numeroHex1+numeroHex;
 20         }
 21         return numeroHex;
 22     }

Por ultimo sólo es llamar el método (o función) toHex(int dec). Ejemplo:  Queremos convertir el número 349.



  1 String numeroHexadecimal;
  2 numeroHexadecimal=toHex(349);