Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Julio 26, 2008, 10:49:03
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, The Shadow)  |  Tema: Recursividad bath 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: Recursividad bath  (Leído 624 veces)
ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« en: Mayo 04, 2008, 02:34:05 »

Habia estado tratando de entender el porque no podia aplicar recursividad en bath como una forma de solucionar problemas. Y lo cierto es que no eh encontrado ni encontraba ningun ejemplo que me permitiera saber como hacerlo. Por que en bath definitivamente no es algo que se ve el como hacerlo a simple vista. Asi que habia estado intentado hacer algo como esto:
sea test.bat
Código:
echo %1
sea example.bat
Código:
set name=test.bat ECDundy
echo %name%
la salida en lugar de ECDundy seria:
Código:
test.bat ECDundy
Entonces no eh cumplido mi objetivo y es que no puedes ejecutar codigo en variables. Luego basandome en otros lenguajes de programacion encontre una logica:
sea test.bat
Código:
set name=%1
sea example.bat
Código:
set name=""
test.bat ECDundy
echo %name%
Cuando haces una clase como lo es test.bat(para mi) en otro lenguaje.
puede devolver algo o simplemente no devolver nada. Luego necesitamos que nos devuelva algo en este caso un valor. Por eso creariamos la variable antes de ejecutar test.bat. La restriccion seria que obligatoriamente nuestro bat tendria que establecer la coneccion con ese valor. Esta coneccion la podriamos hacer de la siguiente manera y asi no tendriamos que conocer el nombre de ante mano:
sea test.bat
Código:
set %2=%1
sea example.bat
Código:
set name=""
test.bat ECDundy name
echo %name%
Entonces la llamada quedaria completa. Estariamos llamando a nuestra clase test.bat que pide una cadena y nos devuelve un valor en nuestra variable predefinida. De esta manera se definiria la posibilidad de hacer recursividad en bath.
Esta recursividad estaria inclusive mejor definida que en otros lenguajes de programacion. Debido a la posibilidad de hacer llamadas mas alla de los parametros predefinidos dentro del mismo codigo recursivo. Es decir que si inicialmente llamaras dos parametros. Podrias utilizar todos cuantos sean necesarios recursivamente enviandote a ti mismo un tercero por ejemplo. Por tanto la algoritmia a la hora de programar seria mas simple que en otros lenguajes, mas rapida. Y la solucion de problemas mas abierta.
Espero disfruten esto tanto como yo.
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 340



Ver Perfil Email
« Respuesta #1 en: Mayo 04, 2008, 09:39:08 »

la recursividad en batch se hace con la orden "call".
En línea
ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« Respuesta #2 en: Mayo 04, 2008, 01:55:49 »

Test.bat ECDundy
o
call Test.bat ECDundy
la diferencia es nula en mi ejemplo.
Por eso mi ejemplo no la utiliza.
« Última modificación: Mayo 04, 2008, 05:51:05 por ECDundy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
:: SmartGenius™ :: ツ
Moderación
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1660


Hello there...you was Bluejacked ¡¡...xD

smartgenius@el-hacker.org
Ver Perfil WWW
« Respuesta #3 en: Mayo 04, 2008, 03:14:20 »

No entendi  terco terco terco

me pueden hacer dibujitos  disimulo disimulo
En línea



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Proyecto Windows El-Hacker.com Edition...Colabora¡¡



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion






Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Reglas del Area de Phreaking - Leetelas


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
TUTORIAL: Como Traducir Aplicaciones JAVA - Moviles


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Super Bluetooth Hack 1.08 en Español - by SmartGenius


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Aplicaciones que nunca deben faltar en tu Movil !!
Sh4k4
Colaborador
*****
Desconectado Desconectado

Mensajes: 557


SHAKA


Ver Perfil WWW
« Respuesta #4 en: Mayo 04, 2008, 04:53:50 »

que es?

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://www.monografias.com/trabajos14/recursividad/recursividad.shtml


lueo viene el debate si batch en primer lugar es un lenguaje y creo... NO lo es lastima  Undecided hasta que micr0s0ft nos haga un compilador!! jajaja  Cheesy
En línea

Arayashiki
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 340



Ver Perfil Email
« Respuesta #5 en: Mayo 04, 2008, 05:03:00 »

ecdundy... no se qeu entenderas por recursividad pero con call o incluso directamente con etiquetas se puede implementar.
En línea
ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« Respuesta #6 en: Mayo 04, 2008, 05:16:33 »

veamos que se me ocurre.Hagamos el factorial de un numero.
sea classfactorial.bat
Código:
set factorial=0
set %2=1
if %%1% LSS 2 (set /a factorial=%%2%*1
 )ELSE (
set /a %2=%%1%-1
classfactorial.bat %1 %2
set /a %factorial%=%%1%*%%2%
)
set /a %2= %factorial%
sea factorial.bat
Código:
set p=0,q=3
classfactorial.bat q p
echo p

No lo eh provado pero eh de suponer que este codigo nos devuelve en la variable p el factorial de q el cual seria 6 en este caso. Perdonen cualquier error.
---------------------------------------------------------------------------------------------------------
sami es lo mismo pero no hace falta implementarlo en mi ejemplo ya que trato de ponerlo lo mas basico posible. Me comprendes?
sh4k4 puedes programar cierto?
Tienes un compilador por defecto o no es verdad?
Entonces esto implica un "lenguaje de programacion".
« Última modificación: Mayo 04, 2008, 05:46:39 por ECDundy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
Sh4k4
Colaborador
*****
Desconectado Desconectado

Mensajes: 557


SHAKA


Ver Perfil WWW
« Respuesta #7 en: Mayo 04, 2008, 05:25:39 »

si si puedo programar....

compilador por defecto?... a que te refieres... el batch no se puede compilar de que hablas? de cual fumas?

claro va sumado lenguaje -> compilacion

postear x postear? que no te vale el link que puse? cortina de humo? de que hablas? ok no posteo bytez!! y si es CALL
En línea

Arayashiki
:: SmartGenius™ :: ツ
Moderación
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1660


Hello there...you was Bluejacked ¡¡...xD

smartgenius@el-hacker.org
Ver Perfil WWW
« Respuesta #8 en: Mayo 04, 2008, 05:52:10 »

y ya por eso se van a pelear.... Angry   ehhhhhhhhhhhhh Undecided
En línea



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Proyecto Windows El-Hacker.com Edition...Colabora¡¡



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion






Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Reglas del Area de Phreaking - Leetelas


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
TUTORIAL: Como Traducir Aplicaciones JAVA - Moviles


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Super Bluetooth Hack 1.08 en Español - by SmartGenius


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Aplicaciones que nunca deben faltar en tu Movil !!
plof
Miembro
*****
Desconectado Desconectado

Mensajes: 76



Ver Perfil Email
« Respuesta #9 en: Mayo 04, 2008, 06:43:23 »

veamos que se me ocurre.Hagamos el factorial de un numero.
sea classfactorial.bat

....

sea factorial.bat

....


¿¿Por qué esa necesidad de crear dos batchs para algoritmos recursivos???
No entiendo......no me parece muy práctico.
En línea
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 340



Ver Perfil Email
« Respuesta #10 en: Mayo 04, 2008, 07:19:22 »

yo sigo diciendo que es mas sencillo con etiquetas... pero para nada pretendo discutir.

para los que no lo supieran:
Una funcion recursiva es en matematicas aquella funcion que para proyectar su imagen, se realimenta a si misma con las imegenes obtenidas previamente hasta cumplir una condicion de parada.
En cristiano, es una funcion que viene definida para un caso basico y para el resto de los casos requiere de un resultado que se obtiene llamandose a si misma.
Si la funcion no converge al caso basico, entonces computacionalmente se trata de un bucle infinito.

En programacion, la recursividad es la tecnica que consiste en invocar a un procedimiento o funcion recursivo.

EL ejemplo tipico es el factorial:

Código:
factorial :: int -> int

factorial 0 = 1
factorial 1 = 1
factorial n = n * factorial (n-1)

y cualquier serie recursiva.

el algoritmo de la raiz cuadrada o la division tambien son recursivos, e incluso el de la multiplicacion o la suma.

Código:
multiplicacion :: (int,int) -> int

multiplicacion (0,_) = 0
multiplicacion (_,0) = 0
multiplicacion (n,1) = n
multiplicacion (1,n) = n
multiplicacion (n,m) = n+multiplicacion(n,m-1)


« Última modificación: Mayo 04, 2008, 07:39:11 por sami » En línea
ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« Respuesta #11 en: Mayo 04, 2008, 09:59:51 »

No, no es necesario crear 2 bats es a modo de ejemplo basico. En mi opinion el ejemplo basico es que sean 2 bats diferentes. Factorial es un clasico al igual que fibonnaci y hanoi.
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
wizard_0
Miembro
*****
Desconectado Desconectado

Mensajes: 111


wizard_0_@hotmail.com
Ver Perfil Email
« Respuesta #12 en: Mayo 05, 2008, 06:58:08 »

Weno   lo productivo  en mi opion  seria q  podriamos implementar  los metodos  de  recursividada para  ahorrarnos  lineas de codes.. (etiketas) especiales para dicho problema..  dado q  estas  funciones... las  remplazarian..  podemos  hacer  toda una  coleccion de funciones.. recursivas para  strings.. como  enteros... 

salu2..
En línea

↑__P®egun†a__b!na®¡a__↑

3reS_un__[1]__ø__[0]__?¿?¿
        ø__vives__ø__mueres

Si__estas__v1vø_!!!__ganate__el__ saludo_!!!

"
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion"
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 340



Ver Perfil Email
« Respuesta #13 en: Mayo 06, 2008, 06:13:30 »

Lo que no entiendo es la razon de usar un lenguaje tan limitado, lento y cutre como es batch para "programar" cosas para las que no ha sido diseñado...

Para evitar complicarse la vida se inventaron el resto de lenguajes...
« Última modificación: Mayo 06, 2008, 06:17:36 por sami » En línea
Klez.H
Habitual
*****
Desconectado Desconectado

Mensajes: 395


Dios es sofisticado, pero no malévolo.


Ver Perfil Email
« Respuesta #14 en: Mayo 06, 2008, 07:56:41 »

Mucha gente dice que el "lenguaje" batch es muy limitado, de escazas funciones etc...
Pero no se dan cuenta que eso es lo que lo hace un desafio para hacer nuevas funciones, y es por eso que la gran mayoria de la gente lleva al limite a los codes Grin no solo para encontrar soluciones locas de programacion sino por que es facil de usar sacandole todo el jugo a este maravilloso "lenguaje" Smiley Si bien no es un lenguaje de programacion, la gente que ni se molesta en aprenderlo cree que no les servira y que no aprenderan nada de el, pero para mi es el primer paso y un gran escalon para alcanzar los rangos mas altos de programacion en otros lenguajes.

PD: No creo que batch sea un "lenguaje" lento Tongue
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion




Dark-Hacker
Habitual
*****
Desconectado Desconectado

Mensajes: 181


Ver Perfil
« Respuesta #15 en: Mayo 06, 2008, 08:19:14 »

Mucha gente dice que el "lenguaje" batch es muy limitado, de escazas funciones etc...
Pero no se dan cuenta que eso es lo que lo hace un desafio para hacer nuevas funciones, y es por eso que la gran mayoria de la gente lleva al limite a los codes Grin no solo para encontrar soluciones locas de programacion sino por que es facil de usar sacandole todo el jugo a este maravilloso "lenguaje" Smiley Si bien no es un lenguaje de programacion, la gente que ni se molesta en aprenderlo cree que no les servira y que no aprenderan nada de el, pero para mi es el primer paso y un gran escalon para alcanzar los rangos mas altos de programacion en otros lenguajes.

PD: No creo que batch sea un "lenguaje" lento Tongue

 palmas palmas palmas palmas palmas palmas palmas palmas palmas palmas
En línea
ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« Respuesta #16 en: Mayo 06, 2008, 10:00:10 »

Cuando programas debes obtener la mayor liertad en todos los lenguajes posibles segun la algoritmia y posibilidades.
Como sea, Bath es un lenguaje que podemos encontrar en cualquier maquina con windows instaldo. Lo que implica que es una gran herramienta y por tanto no tiene por que subestimarse.
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
:: SmartGenius™ :: ツ
Moderación
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1660


Hello there...you was Bluejacked ¡¡...xD

smartgenius@el-hacker.org
Ver Perfil WWW
« Respuesta #17 en: Mayo 06, 2008, 10:14:48 »

No entiendo por que tiene que venir a desestimar el Batch, si aca mismo nos hemo daod cuenta de lo que se puede hacer con esto, grandes codes para grandes herrameintas, que pueden incluso superar a las programadasen otro lenguajes...

Que manera de pensar  Undecided Undecided

Saludos.
En línea



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Proyecto Windows El-Hacker.com Edition...Colabora¡¡



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion






Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Reglas del Area de Phreaking - Leetelas


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
TUTORIAL: Como Traducir Aplicaciones JAVA - Moviles


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Super Bluetooth Hack 1.08 en Español - by SmartGenius


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Aplicaciones que nunca deben faltar en tu Movil !!
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 340



Ver Perfil Email
« Respuesta #18 en: Mayo 07, 2008, 04:00:14 »

Bueno para mi es solo un lenguaje mediocre y poco potente.
No hay nada que se pueda hacer solo en batch y no en la mayoria de los restantes lenguajes... pero no entiendo si os puede sentar mal ese comentario.
Citar
para mi es el primer paso y un gran escalon para alcanzar los rangos mas altos de programacion en otros lenguajes.

a mi juicio es solo una verdad a medias. Realmente cuando sabes batch y aprendes un lenguaje de alto nivel nuevo, todo lo que sabes de batch no te va a servir de nada. Por otro lado si es cierto qeu enseña a plantear algoritmos basicos.

como os dije, es solo una opinion. No se pq tanto cariño al batch cuando por si solo y sin combinar con otros lenguajes no sirve ni para hacer una calculadora decente pq ni siquiera opera con decimales.
Batch se ha concebido para otras cosas, pero creo que no para programar... y de ahi sus limitadas prestaciones.
En línea
plof
Miembro
*****
Desconectado Desconectado

Mensajes: 76



Ver Perfil Email
« Respuesta #19 en: Mayo 07, 2008, 12:50:31 »

Mucha gente dice que el "lenguaje" batch es muy limitado, de escazas funciones etc...
Pero no se dan cuenta que eso es lo que lo hace un desafio para hacer nuevas funciones, y es por eso que la gran mayoria de la gente lleva al limite a los codes Grin no solo para encontrar soluciones locas de programacion sino por que es facil de usar sacandole todo el jugo a este maravilloso "lenguaje" Smiley Si bien no es un lenguaje de programacion, la gente que ni se molesta en aprenderlo cree que no les servira y que no aprenderan nada de el, pero para mi es el primer paso y un gran escalon para alcanzar los rangos mas altos de programacion en otros lenguajes.

PD: No creo que batch sea un "lenguaje" lento Tongue

 Grin  palmas  brindis  porraco  risaexagerada  saludos
En línea
Dark-Hacker
Habitual
*****
Desconectado Desconectado

Mensajes: 181


Ver Perfil
« Respuesta #20 en: Mayo 07, 2008, 02:11:39 »

No quiero alargar el tema pero... Batch SI te permite hacer calculos matematicos con decimales pero la mayoria no sabe como... Grin
En línea
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 340



Ver Perfil Email
« Respuesta #21 en: Mayo 07, 2008, 02:57:08 »

Citar
Batch SI te permite hacer calculos matematicos con decimales pero la mayoria no sabe como...
me gustaria que me dijeras como... y me sorprenderia si la solucion no es una chapuza.

Citar
No creo que batch sea un "lenguaje" lento
como dicen por ahi batch no es lento, tienen razon, es lentisimo.

Citar
Mucha gente dice que el "lenguaje" batch es muy limitado, de escazas funciones etc...
Lo es, es mas que limitado.
no sirve para mates, no sirve para estructuras de datos decentes, no sirve para parsers, ni para GUI y para declarar procedimientos y funciones hay que hacer autenticas chapuzas.
Tiene algun error de parseo (que por ahi llaman batch inyection), tiene errores en ciertos casos con el manejo de variables.
No permite crear sockets ni threads...

Citar
Pero no se dan cuenta que eso es lo que lo hace un desafio para hacer nuevas funciones
Cuando tengo que hacer un programa creeme que complicarme la vida con cientos de lineas cuando puedo hacerlo con 3 o 4 no es un desafio ni un reto sino una perdida de tiempo. Reto seria si aprendiera algo haciendolo por la via dificil y larga pero en mi caso, siendo capaz de hacerlo simplemente me parece una locura a veces usar batch para algun programa que otro.

Pero bueno, si de verdad creeis qeu es la ostia, me parece perfecto que lo penseis.
Pero solo sirve para dos cosas: Automatizacion de rutinas y administracion basica. (Que no es poco)
Sin embargo sigue siendo una mierda... eso si, una mierda divertida y en cierto modo didactica.

Si algun incondicional se acuerda del 3 en raya, solo decirle que en (por ejemplo) c se hace mejor, mas corto, mas rapido y mas bonito que en batch, ocupa menos, consume menos memoria... etc. Simplemente no hay color.

Ni que fuerais sectarios... simplemente, si no sabeis otro lenguaje no pongais en un pedestal a este. Y si sabeis otro lenguaje, no entiendo que batch os parezca... "decente"
« Última modificación: Mayo 07, 2008, 03:09:24 por sami » En línea
Klez.H
Habitual
*****
Desconectado Desconectado

Mensajes: 395


Dios es sofisticado, pero no malévolo.


Ver Perfil Email
« Respuesta #22 en: Mayo 07, 2008, 03:44:53 »


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://foro.el-hacker.com/index.php/topic,119174.50.html
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion




ECDundy
Habitual
*****
Desconectado Desconectado

Mensajes: 164


throw new exception(":)");

erick_cartman_ok
Ver Perfil WWW Email
« Respuesta #23 en: Mayo 07, 2008, 04:55:52 »

Veo que ah surgido un reto. Podemos hacer una calculadora que sume, reste y divida decimales. Es ciero en bath no se opera con decimales pero una etiqueta bien programada puede hacerlo. Puede hacerse tomando las vriables como cadenas o strings simples. La suma la resta y la multiplicacion son sencillas. Lo unico que plantearia reto para algunos podria ser la divicion.
 Bash es un lenguaje de programacion. Las limitantes que ustedes le ven son sus limitantes como programadores. No las del lenguaje.
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

<br="The cat with a glass eye and fire in the tail"
 href="http://www.programmersheaven.com/user/ECDundy/blog/"/>
S.O ADWARE 21
Miembro
*****
Desconectado Desconectado

Mensajes: 66



Ver Perfil WWW Email
« Respuesta #24 en: Mayo 09, 2008, 07:15:00 »

Mira primero q nada batch es un gran lenguaje sólo tienes q tener ideas y llevarlo al máximo,además la fuente de windows viene de batch sino fuera por este lenguaje no se había inventado el windows es la Esencia viva.
En línea





Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
El Mejor AntiSpyware