Nuevas NORMAS para el foro
Bienvenido(a),
Visitante
. Favor de
ingresar
o
registrarse
.
¿Perdiste tu
email de activación?
- Julio 26, 2008, 10:49:03
Boton Buscar
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
Autor
Tema: Recursividad bath (Leído 624 veces)
ECDundy
Habitual
Desconectado
Mensajes: 164
throw new exception(":)");
Recursividad bath
«
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
Mensajes: 340
Re: Recursividad bath
«
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
Mensajes: 164
throw new exception(":)");
Re: Recursividad bath
«
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
Mensajes: 1660
Hello there...you was Bluejacked ¡¡...xD
Re: Recursividad bath
«
Respuesta #3 en:
Mayo 04, 2008, 03:14:20 »
No entendi
me pueden hacer dibujitos
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
Mensajes: 557
SHAKA
Re: Recursividad bath
«
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
hasta que micr0s0ft nos haga un compilador!! jajaja
En línea
Arayashiki
sami
Habitual
Desconectado
Mensajes: 340
Re: Recursividad bath
«
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
Mensajes: 164
throw new exception(":)");
Re: Recursividad bath
«
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 fa
ctorial.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
Mensajes: 557
SHAKA
Re: Recursividad bath
«
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
Mensajes: 1660
Hello there...you was Bluejacked ¡¡...xD
Re: Recursividad bath
«
Respuesta #8 en:
Mayo 04, 2008, 05:52:10 »
y ya por eso se van a pelear....
ehhhhhhhhhhhhh
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
Mensajes: 76
Re: Recursividad bath
«
Respuesta #9 en:
Mayo 04, 2008, 06:43:23 »
Cita de: ECDundy en Mayo 04, 2008, 05:16:33
veamos que se me ocurre.Hagamos el factorial de un numero.
sea
classfactorial.bat
....
sea fa
ctorial.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
Mensajes: 340
Re: Recursividad bath
«
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
Mensajes: 164
throw new exception(":)");
Re: Recursividad bath
«
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
Mensajes: 111
Re: Recursividad bath
«
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
Mensajes: 340
Re: Recursividad bath
«
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
Mensajes: 395
Dios es sofisticado, pero no malévolo.
Re: Recursividad bath
«
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
no solo para encontrar soluciones locas de programacion sino por que es facil de usar sacandole todo el jugo a este maravilloso "lenguaje"
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
En línea
Para ver los enlaces debes ser usuario
Crear Usuario
o
Hacer Sesion
Dark-Hacker
Habitual
Desconectado
Mensajes: 181
Re: Recursividad bath
«
Respuesta #15 en:
Mayo 06, 2008, 08:19:14 »
Cita de: Klez.H 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
no solo para encontrar soluciones locas de programacion sino por que es facil de usar sacandole todo el jugo a este maravilloso "lenguaje"
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
En línea
ECDundy
Habitual
Desconectado
Mensajes: 164
throw new exception(":)");
Re: Recursividad bath
«
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
Mensajes: 1660
Hello there...you was Bluejacked ¡¡...xD
Re: Recursividad bath
«
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
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
Mensajes: 340
Re: Recursividad bath
«
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
Mensajes: 76
Re: Recursividad bath
«
Respuesta #19 en:
Mayo 07, 2008, 12:50:31 »
Cita de: Klez.H 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
no solo para encontrar soluciones locas de programacion sino por que es facil de usar sacandole todo el jugo a este maravilloso "lenguaje"
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
En línea
Dark-Hacker
Habitual
Desconectado
Mensajes: 181
Re: Recursividad bath
«
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...
En línea
sami
Habitual
Desconectado
Mensajes: 340
Re: Recursividad bath
«
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
Mensajes: 395
Dios es sofisticado, pero no malévolo.
Re: Recursividad bath
«
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
Mensajes: 164
throw new exception(":)");
Re: Recursividad bath
«
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
Mensajes: 66
Re: Recursividad bath
«
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