elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Programación modular en Batch [By Invisible_Hack]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programación modular en Batch [By Invisible_Hack]  (Leído 4,986 veces)
invisible_hack


Desconectado Desconectado

Mensajes: 978


Invisible_Hack™ Nick Registrado ^^


Ver Perfil WWW
Programación modular en Batch [By Invisible_Hack]
« en: 21 Noviembre 2008, 18:11 pm »

Bueno, hace tiempo que como ya sabeis he abandonado un poco Batch para dedicarme a otro tipo de lenguajes, pero resulta que en el módulo superior de informática que estoy haciendo pues ahora estamos trabajando con Ms-Dos y sus comandos (no el Ms-Dos de Windows, porque al fin y al cabo el DOS de Windows no es más que un mero simulador) sino con el verdadero Ms-Dos, es decir, arrancando el Pc desde Ms-Dos, y usando solamente comandos, sin tocar Windows para nada...

En fin, ahora que he vuelto temporalmente al tema de Batch, me ha apetecido hacer este pequeño tutorial sobre lo que se podría llamar programación modular en Batch...

Es algo muy sencillo, no os asustéis por el nombre, y es una forma que suelo usar bastante en clases de programación, ya que, entre otras cosas, te facilita mucho las cosas a la hora de codear programas largos...  :D

La cosa es muy sencilla, os explico:

Imaginad que teneis un programa en Batch, que consta de un menú de opciones, pero que son por ejemplo 10 o 20 opciones, y se podrían poner todas seguidas dentro del código de un .bat, si, pero al ser tantas opciones corremos el riesgo de liarnos y perdernos entre tantas líneas de code...

Pondré un ejemplo con un code sencillo, para que entendáis a lo que me refiero, aunque éste code no sería necesario dividirlo en módulos, porque ésto está mas bien orientado a programas con muchas líneas complejas de código, pero bueno...

Código
  1. @echo off
  2. :menu
  3. echo PROBANDO LA MODULARIDAD
  4. echo 1. Ver contenido de una unidad
  5. echo 2. Crear carpeta
  6. echo 3. Borrar carpeta
  7. echo 4. Salir
  8. set /p opcion=opcion:
  9. if %opcion%==1 goto 1
  10. if %opcion%==2 goto 2
  11. if %opcion%==3 goto 3
  12. if %opcion%==4 goto 4
  13.  
  14. :1
  15.  
  16. set /p var=Escribe unidad que deseas visualizar
  17. dir %var%
  18.  
  19.  
  20. goto menu
  21.  
  22. :2
  23.  
  24. set /p nom=Selecciona el nombre de la carpeta
  25. MD %nom%
  26. echo carpeta creada correctamente
  27.  
  28. goto menu
  29.  
  30. :3
  31. set /p borra= Nombre de carpeta a borrar
  32. rd %borra%
  33. echo carpeta destruida
  34.  
  35. goto menu
  36.  
  37. :4
  38.  
  39.  

Ahí teneis, un menú de opciones de los de toda la vida, ya sé que no son más que cuatro opciones de nada, pero quiero usar éste ejemplo sencillo para que se entienda...

Ahora voy a explicar cómo se modularía éste sencillo programa.

Creamos un archivo llamado director.bat con el siguiente código:

Código
  1. @echo off
  2. :menu
  3. echo PROBANDO DIRECTORIOS
  4. echo 1. Ver contenido de una unidad
  5. echo 2. Crear carpeta
  6. echo 3. Borrar carpeta
  7. echo 4. Salir
  8. set /p opcion=opcion:
  9. if %opcion%==1 call unidad.bat
  10. if %opcion%==2 call creador.bat
  11. if %opcion%==3 call borrando.bat
  12. if %opcion%==4 call exit
  13.  

Creamos otro archivo llamado borrando.bat con el siguiente código:

Código
  1. @echo off
  2. set /p borra= Nombre de carpeta a borrar
  3. rd %borra%
  4. echo carpeta destruida
  5. pause>nul
  6. cls
  7. call director.bat
  8.  

Creamos otro archivo llamado creador.bat y le metemos el siguiente código:

Código
  1. @echo off
  2. set /p nom=Selecciona el nombre de la carpeta
  3. MD %nom%
  4. echo carpeta creada correctamente
  5. pause>nul
  6. cls
  7. call director.bat
  8.  

Creamos otro archivo llamado unidad.bat con el siguiente código:

Código
  1. @echo off
  2. set /p var=Escribe unidad que deseas visualizar
  3. dir %var%
  4. pause>nul
  5. cls
  6. call director.bat
  7.  

Bien, ahora viene la explicación...

Usando el comando call (llamar) se puede conseguir que un .bat llame a otro .bat (o a cualquier otro archivo de cualquier otra extensión), y vamos a aprovechar ese comando para hacer la modulación en éste programa...

Como veis, el archivo principal director.bat no hace más que crear el menú de opciones y llamar a los otros tres archivos, que son los que realmente se encargan de hacer que el programa realice las funciones que debe, según la opción que teclee el usuario.

Dado que la primera opción que hay es ver el contenido de una unidad, hemos creado el bat llamado unidad.bat, que como veis, en su interior tiene los comandos necesarios para visionar la unidad que escriba el usuario. La segunda opción es crear una carpeta, y el bat llamado creador.bat tiene los comandos necesarios para crear la carpeta con el nombre que el usuario pida por consola. La tercera opción es la de borrado de carpetas, para ello hemos creado el bat llamado borrando.bat que tiene los comandos necesarios para preguntarle al usuario por consola el nombre de la carpeta a borrar. Para la última opción (salir), no necesitamos hacer un .bat con el comando exit sino que directamente podemos llamar al comando en la misma línea, es decir, fijaos en la última línea del archivo director.bat

Código
  1. if %opcion%==4 call exit
  2.  

Es decir, en lugar de estar todas las opciones del menú seguidas, como seria lo normal, cada opción es realizada por cada uno de los archivos .bat que hemos creado. Ya digo que en este caso el programa es pequeño, asi que nos bastaría con programarlo de la manera normal, pero ésto a la hora de programar cosas de mayor longitud de código nos sirve para no liarnos.

Si os fijais, lo que hace el archivo principal (es decir, director.bat) es mostrar el menú de opciones y, según el usuario teclee una u otra opción, llama a uno u otro .bat, en lugar de tener el código dentro del propio director.bat

Es decir, cada .bat representa una opción del menú mostrado por director.bat, pero director.bat no es el encargado de realizar la opción, sino simplemente muestra el menú y dependiendo de la tecla pulsada, llama a uno u otro bat para realizar una u otra operación...

Ventajas de programar de forma modular:

- Cuando se trata de programas que tienen decenas de opciones en los menús, y menús dentro de menús etc, el hecho de programar así nos facilita y agiliza mucho más la tarea, ya que vemos mejor los códigos de cada opción.

Desventajas de programar de forma modular:

- En lugar de crear solo un .bat con todo el código, creamos varios .bat`s, uno por cada opción que tenga el menú.

Autor: Invisible_Hack

Fuente: Professional Hackers 2006





« Última modificación: 21 Diciembre 2009, 18:51 pm por invisible_hack » En línea

"Si no visitas mi blog, Chuck te dará una patada giratoria"
WestOn

Desconectado Desconectado

Mensajes: 272


El testamento Maya...


Ver Perfil
Re: Programación modular en Batch [By Invisible_Hack]
« Respuesta #1 en: 21 Noviembre 2008, 18:58 pm »

Wenas, esta bien :D, pero no es cosa del otro mundo :P

un saludo ;)

PD:
Citar
Ventajas de programar de forma modular:

- Cuando se trata de programas que tienen decenas de opciones en los menús, y menús dentro de menús etc, el hecho de programar así nos facilita y agiliza mucho más la tarea, ya que vemos mejor los códigos de cada opción.
Eso si, opino lo mismo.


« Última modificación: 21 Noviembre 2008, 19:01 pm por WestOn » En línea

En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
                                                                                                                                                                                                                            
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con Programacion Modular en C
Programación C/C++
Hellkard 5 2,973 Último mensaje 31 Octubre 2012, 00:29 am
por Hellkard
ejemplo de programacion modular en pseudocodigo
Dudas Generales
Dnte.w 0 2,663 Último mensaje 14 Mayo 2015, 00:23 am
por Dnte.w
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines