Tu web de informática

atras

3. Comandos goto, if y else

adelante

Crear "menús" y el comando goto

Muchas veces vamos a necesitar dividir nuestro programa en partes (a partir de ahora las llamaremos menús), y que dependiendo alguna condición vaya a un menú u otro. Más adelante veremos un ejemplo de para qué sirve esto.

Para crear un menú pondremos en una lína el código :nombre (con los dos puntos), de forma que indicamos que ahí empieza un menú que se llama nombre. Luego usaremos el código goto nombre para ir al menú nombre. De esta forma vamos a hacer como ejemplo un programa que al empezar tenga un menu llamado frases en el que escriba dos frases, y luego tenga un comando goto frases, de forma que el programa vuelve atrás al menú frases y nunca acaba (esto se llama bucle). Este programa sería por ejemplo así:

@echo off
title Bucle de ejemplo
color 0A

:frases
echo 100101001001010010010 Creado por Juanma 100101001001010010010
echo 011010110110101101101 Creado por Juanma 011010110110101101101

goto frases
exit

Cuando lo abrais vereis que no para de escribirse la frase, puesto que siempre vuelve el programa atrás.

Comandos if y else (establecer una condición)

El código if nos sirve para hacer que en el caso de que algo sea cierto o falso haga otra cosa. Por poneros un ejemplo, imaginaos que queremos hacer la división de dos números, pero si el denominador es 0 no podemos hacerla, puesto que algo entre 0 es infinito. Por lo tanto tenemos que verificar que el número de abajo no sea 0 para que no dé error, y si es 0 que le vuelva a preguntar el número. Este programa lo crearemos ahora de ejemplo.

Pues bien, el código de if tiene esta estructura:
if %var%==valor (comando) else (comando2)
Esto hace que si la variable llamada "var" tiene el valor "valor" ejecute el código "comando", y si no tiene ese valor que realize el valor "comando2". También podemos eliminar la segunda parte si no la necesitamos y dejar el código de la siguiente forma:
if %var%==valor (comando)

De esta forma vamos a hacer el programa de dividir un número entre otro:

@echo off
title Division de dos numeros
set/p uno=Escriba el numerador

:denominador
set/p dos=Escriba el denominador

if %dos%==0 (goto nosepuede) else (goto dividir)

:nosepuede
echo El denominador no puede ser cero.
goto denominador

:dividir
set/a tres=%uno%/%dos%
echo El resultado de %uno%/%dos% es %tres%
pause>nul
exit

Ahora vamos a remalcar un par de cosas. Primero que podemos sustituir el comando if por if not, de forma que realiza el comando si la condición no es verdad.

Lo segundo es que si os fijais usamos == en vez de un solo =. Cuando comparamos dos cosas tenemos que usar siempre el doble signo ==. Además de los signos igual podemos usar las siguientes cosas:

%var% == valor Verifica si var es igual al valor
%var% LSS valor Verifica si var es menor que el valor
%var% GTR valor Verifica si var es mayor que el valor
%var% LEQ valor Verifica si var es menor o igual al valor
%var% GEQ valor Verifica si var es mayor o igual al valor

Para finalizar vamos a hacer un ejemplo más que será un programa para hacer la media, pero esta vez no será entre dos números, sino que los elegirá el usuario. Este programa tendría la siguiente estructura:

@echo off
title Hacer media de dos numeros
:principio
set/p cant=Entre cuantos numeros quiere hacer la media?
set/a contador=%cant%
set total=0

if %cant% LSS 2 (goto mal) else (goto pregunta)

:mal
echo Debe indicar un numero mayor o igual que 2
goto principio

:pregunta
set/p num=Escriba uno de los %cant% numeros
set/a total=%total%+%num%
set/a contador=%contador%-1
if not %contador% == 0 (goto pregunta)

set/a media= %total% / %cant%
echo.
echo La media es %media%
pause >nul
exit

Si tienes alguna pregunta que hacernos o no entiendes alguno de los ejemplos tienes el foro a tu disposición.

atras
adelante

Volver a Programación >>


Creada el 01/11/08 14:03
Copyright © - Todos los derechos reservados - Página creada por Juanma