En la programación batch la instrucción for no cumple las funciones como la conocemos en otros lenguajes, también se carece de instrucciones repetitivas como while, do while, repeat until, etc. Por lo que para repetir un fragmento de código determinado número de veces, nos tenemos que valer de otros medios.

El presente post ejemplifica con un par programas sencillos como podemos usar ciclos en la programación batch.

Tabla de multiplicar.

Un ejemplo muy común de programa donde se utilizan ciclos es la impresión de una tabla de multiplicar deseada por el usuario. Se establece una variable de control del ciclo que inicia en 1 y se irá multiplicando por la tabla deseada, e incrementándose en 1 en cada iteración hasta llegar a 10.

Veamos el código:

Transcribamos este código en un editor de textos plano, como el notepad, guardando después el archivo con el nombre de nuestra elección sin olvidar la extensión .bat.

Analicemos línea a línea el código:

@echo off

En esta línea quitamos el eco de los comandos.

echo ¿Que tabla quieres ver?

Mandamos un mensaje pidiendo la tabla que se va a mostrar

set /p tabla=

Guardamos la tabla deseada en la variable “tabla”

set /a cont=1

set /a aux=0

Con la instrucción “set /a” asignamos valores a un par de variables, a una llamada “cont” que será la que controle el ciclo y hará 10 iteraciones de 1 hasta 10; y también inicializamos una variable llamada “aux” con el valor de 0, esta variable nos servirá como auxiliar para guardar en cada iteración el resultado de multiplicar la tabla por cada uno de los valores de la variable de control de ciclo, (por ejemplo 5×1, 5×2,… 5×10).

:iniciaciclo

Esta etiqueta nos permite un lugar de llegada para las instrucciones goto del programa, en un lugar donde se inicia el ciclo, este es el equivalente al inicio del ciclo.

set /a  aux=cont*tabla

Con la instrucción “set /a”, hacemos la operación de la tabla seleccionada por la variable de control, el resultado lo almacenamos en la variable “aux”-

echo %tabla% x %cont% = %aux%

Imprimimos el resultado, una vez por cada iteración, lo que equivale a cada renglón de la tabla.

set /a cont=cont+1

Con la instrucción “set /a”, hacemos la operación para incrementar la variable “cont” que es la que controla el ciclo.

if %cont% leq 10 goto iniciaciclo

Esta es la condición que controla el ciclo, mientras que la variable “cont” se mantenga en un valor menor o igual que 10, nos seguirá mandando con la instrucción goto a la etiqueta “iniciaciclo” cuando esto ya no se cumple, el programa terminara, justamente a las 10 iteraciones.

Factorial de un número

Otro programa clásico donde podemos utilizar ciclos, es el del cálculo del factorial de un número. En estos casos el ciclo es de forma decreciente, es decir la variable de control de ciclo inicia en un número dado y va disminuyendo en cada iteración, lo que se ajusta al propósito de este programa:

El factorial de un número se expresa de la siguiente manera, factorial de 7:

7! =7 x 6 x 5 x 4 x 3 x 2 x 1

La variable de control será tomada del valor del número al cual queremos conocer el factorial e irá disminuyendo su valor en 1, en cada iteración, deteniéndose cuando valga 1. Veamos el código:

Analicemos el código línea a línea:

@echo off

cls

Eliminamos el eco de los comandos, e inmediatamente después limpiamos pantalla.

set /p num= Que numero deseas ver su factorial:

Pedimos el numero al que queremos conocer su factorial y lo almacenamos en la variable “num”.

set /a res=1

Inicializamos la variable “res” en 1, esta variable nos va a servir para ir acumulando las multiplicaciones en cada iteración.

:iniciociclo

En la etiqueta :iniciociclo es donde comienza el ciclo, se nos estara mandando aqui mientras una condición posterior se cumpla.

set /a res=res*num

Con la instrucción “set /a” hacemos una operación en cada iteración para ir almacenando el resultado de las multiplicaciones.

set /a num=num-1

Decrementamos la variable “num” que es la variable de control del ciclo.

if %num% equ 1 goto salir

Esta es la condición que controla el ciclo, cuando la variable “num” sea igual a 1, saldremos del ciclo.

goto iniciociclo

En caso contrario, permanecermos dentro del ciclo.

echo el factorial del numero es %res%

Se imprime el resultado del factorial del número, que esta en la variable “res”.

Y eso es todo. Estamos a la orden para cualquier duda. Dejen comentarios.

Powered By DT Author Box

Written by chris

Programación batch. Emulación ciclos. (Primera Parte)

Leave a Reply

Follow

Get every new post delivered to your Inbox

Join other followers:

%d bloggers like this: