Mostrando entradas con la etiqueta Talleres. Mostrar todas las entradas
Mostrando entradas con la etiqueta Talleres. Mostrar todas las entradas

Taller de redes #1


INTRODUCCIÓN

Este manual tiene como meta lograr enseñar los conceptos básicos sobre redes informáticas, pero la idea es que sea divertido y de amena lectura, analogías y chistes no faltarán para lograr el máximo entendimiento del mismo, sin dejar de lado los tecnicismos requeridos para la correcta comprensión del tema.

Por otra parte, el texto nace como una iniciativa de nuestra querida comunidad Underc0de hacia los usuarios más nuevos que recién inician su camino en este maravilloso mundo de la tecnología, para tratar de lograr darle los matices necesarios para comprender las toneladas de información que llenan nuestro foro.

Así, que sin más es  momento de comenzar.

1.- EN EL PRINCIPIO...

La comunicación siempre ha sido una necesidad de la humanidad, y podríamos aplicarle la definición que se nos dio desde que éramos niños, así que a grandes rasgos la comunicación es:


"La acción en la que dos o más sujetos (emisor y receptor) a través de algún tipo de canal intercambian información e ideas utilizando un código (lenguaje) en común."

Podríamos complicarnos la existencia y llenar media página con mucho más conceptos, pero esa no es la idea de "Underc0de", así que a partir de aquí esta es la definición que usaremos para ilustrarnos y es la que será citada a medida que avanza el manual.

En épocas pretéritas la comunicación solo necesitaba conocer la lengua (código)  de otra persona que hiciera de interlocutor, pues como se imaginarán hablar solo no tiene mucho sentido (risas). Pero como la humanidad  jamás deja de evolucionar, comenzamos a notar que solo podíamos comunicarnos con personas cercanas a nosotros y únicamente en el momento en que estábamos con esas personas; notamos así  que estábamos limitados por "el tiempo" y "el espacio";  y simplemente no podíamos dejarlo así.

1.1- Más allá del tiempo

Al darnos cuenta de que nuestras ideas no perduraban más allá de la muerte, buscamos de forma intensa algún método que nos permitiera vencer el tiempo; y fue entonces que  nació la escritura (hace más de 10.000 años) permitiéndonos dejar una huella que trasciende el tiempo. 

1.2- Más allá del espacio

Esta es la parte realmente interesante, esto es,  cuando descubrimos como lograr comunicarnos superando distancias considerables. Al principio fueron señales de humo que lograban transmitir mensajes completos de una atalaya a otra, y allá por el 1940 se produjo la primera transmisión de información por medios eléctricos/electrónicos, circunstancias que marcaron el inicio de la comunicación usando la tecnología;   en ese preciso instante fue cuando se vislumbró lo que hoy día es: "una red informática."


2.- REDES INFORMÁTICAS




Después de los duros inicios -y aproximadamente a mediados de la década de los ’60- comienzan a aparecer las primeras computadoras que usan la red telefónica para compartir archivos usando un modem, se cuenta que en los inicios las velocidades eran poco más de 1200 bps y las últimas conexiones por Dial-up alcanzaban la vertiginosa y asombrosa velocidad de ¡56 kbps! Si pasas de 28 años es muy probable que hayas tenido un modem de esos en tu casa, ¿recuerdan ese mágico sonido de dos máquinas negociando una conexión...? (se asoman lagrimas a mis ojos); pues con la llegada de las redes informáticas nos llegó una puerta a horizontes magníficos y nunca antes imaginados.


2.1- CÓMO FUNCIONA “ESO” DE LAS REDES INFORMÁTICAS

Al igual que en la antigüedad, hoy día necesitamos comunicarnos a través de los continentes y de los mares de una forma segura y confiable, y para ello necesitamos varios elementos:

a.- Una plataforma/infraestructura.

Necesitamos todo un conjunto de dispositivos que funcionen en un orden común, tarjetas de red, routers, modems, switches, cables, etc... Todos funcionan dentro de algún estándar previamente establecido.

b.- Hace falta un conjunto de reglas que estructuren la comunicación.

Si alguien de habla inglesa intenta entablar una conversación con alguien de su misma lengua lo más seguro es que no tendrán ningún problema para entenderse y el resultado será una comunicación exitosa, pero se imaginan alguien de habla hispana intentando entablar una conversación con alguien de nacionalidad rusa (creo que ni por señales de humo podrían comunicarse).

Dentro de las redes informáticas lo ideal es que todo el mundo hable el mismo idioma lo cual asegura la correcta comunicación.


2.2- TIPOS DE REDES

Las redes pueden clasificarse por varios factores, pero en esta entrega solo abordaremos dos:

a.- Tamaño.

De acuerdo a su tamaño las redes pueden ser:

I.-   Pequeñas (< 200 computadoras)
II.-  Medianas (200 - 1000 computadoras)
III.- Grandes (> 1000 computadoras)

b.- Topología.

I.-   LAN  (Red área local, esas cableadas que tenemos en nuestros hogares).
II.- WLAN (Red área local inalámbricas, son la tendencia ya que todos los modems hogareños vienen habilitados para servir conexión inalámbrica).

Existen más topologías, algo complejas, pero recuerden que esto es plato de entrada y la idea es no complicarnos ya que queremos darles los matices de cómo funcionan las redes, así que, sigan conmigo.


2.3.- ¿QUE “IDIOMA” SE HABLA EN LAS REDES DE COMPUTADORAS?


Pues al igual que en todo tipo de comunicación, aquí necesitamos un “idioma” común para que nuestras computadoras puedan comunicarse unas con otras y en el mundo de las redes ese idioma tiene un nombre, se llama "TCP/IP".  Cuenta la leyenda que fue diseñado por Vinton Cerf y Robert Khan en 1972, lo que significa que mientras nuestros padres estaban ocupados enamorándose y todo eso, estos señores estaban desarrollando algo que cambiaria al mundo por completo... y lo lograron.

2.3.1.- ¿CÓMO FUNCIONA TCP/IP?

Definir al señor TCP/IP como una sola cosa creo sería un error, así que considero mas idóneo decir que: "Es un conjunto de reglas y normas de funcionamiento que hacen posible la comunicación eficaz entre máquinas de una red"; podría dar una definición mas técnica y quizás mas compleja pero vuelvo y repito: esa no es la idea de este material, así que les propongo un ejercicio mental, vamos a contar una historia y les explico el resto luego.

"La carta"

"Hoy en la mañana me decidí enviarle una carta a mi madre que vive en Canadá, así que tome papel y escribí mi carta. Al terminarla la puse en un sobre y la deposité en el buzón del correo de mi ciudad. Pero resulta que los empleados que organizan los envíos en la oficina de correo me devolvieron mi carta por no haber especificado la dirección de destino, yo mismo quede sorprendido con mi nivel de estupidez y también triste porque al final mi carta no pudo llegar"

Muy bien, esa fue mi pequeña historia de cómo una carta no llegó a su destino, ahora surge la pregunta obvia: 

"¿Por qué no llego mi carta?"

Respuesta: No llego porque no le puse la dirección de destino.

Bien, en el mundo de las redes necesitamos especificar a quién le queremos hacer llegar las cartas (de aquí en adelante paquetes), y la forma favorita del señor TCP/IP es que los paquetes tengan una dirección de destino especificada, de lo contrario no llegara exitosamente a su destino y es así como aparece algo muy mencionado por estos rumbos: "las direcciones IP"

2.3.1.1 ¿QUÉ ES UNA DIRECCION IP?

"Pues una dirección IP es un conjunto de números por el que se puede especificar una red ó un ordenador dentro de esa misma red" es la forma en la que el gordo señor TCP/IP identifica destinos. Mientras que en la vida humana las direcciones constan de ciudad, sector, calle y número de casa; las máquinas no pueden entender de esas cosas, así que aquí las direcciones son de la siguiente forma:

192.168.1.1
172.16.1.1
10.0.0.1

2.3.2.- ¿CÓMO ES EL CAMINO DE LOS PAQUETES?


Bien, ya el señor TCP/IP sabe el destino de los paquetes, ahora surge la interrogante de cómo hacerlos llegar a su destino y aquí otra divertida historia:

"El señor Rutenio trabaja ordenando las cartas en la oficina de correo local. Todos los días va laboriosamente a su trabajo que consiste en ordenar los envíos de acuerdo a su [dirección de destino] y simplemente lo hace leyendo los sobres de las cartas, él nunca sabe el contenido, solamente se limita a leer los sobres para ordenar correctamente la correspondencia. De esa forma las cartas que van a Alemania se ponen en la caja de Alemania, las que van para Canadá en la caja de Canadá, y así sucesivamente, hasta el final del día cuando regresa a su casa a descansar."

Pues como se habrán dado cuenta gracias a "la dirección" el señor Rutenio puede determinar hacia dónde enviar cada carta;  y así mismo es lo que ocurre en el mundo de las redes.

El Router (familiar cercano del señor Rutenio) busca en cada paquete una dirección IP de destino que indique hacia donde enviar dicho paquete, pero quizás más de uno se esté preguntando: "ok Cloudswx, pero qué es eso del paquete".

2.3.2.1.- QUÉ ES UN PAQUETE

No sé, estoy pensando en si debo describirlo o es mejor contar una historia; la verdad me encantan las historias y también me encanta la tecnología, así que para mí no hay nada mejor que explicar la tecnología con una buena historia, vayamos a ella.

"En un día soleado de mi ciudad decidí abordar el bus que lleva al Centro de la ciudad, cuando de repente la tierra comenzó a temblar y el cielo se oscureció. Todos los que íbamos a bordo nos asustamos bastante y decidimos salir corriendo del bus, pero cuál fue la sorpresa al darnos cuenta de que no podíamos salir todos al mismo tiempo (por lo angosto de la puerta). En medio de la desesperación, un señor regordete llamado TCP/IP nos dijo que resultaría mejor si nos poníamos en turno y salíamos uno a uno. La sugerencia fue genial, ya que pudimos resolver nuestro terrible problema dado que el terremoto estaba por destruir nuestro bus"




Ufff, me salvé de suerte y gracias a TCP/IP, pues en las redes los paquetes no pueden pasar todos al mismo tiempo, por ser poco ideal y poco preciso; por esto la información se corta en trocitos más pequeños llamados paquetes, que toman turnos para salir a navegar a la red. 

Si en este momento estás oyendo música online y al mismo tiempo estas navegando podría parecer que lo haces todo al mismo tiempo, pero siento defraudarte al decirte que es una ilusión del mundo de las máquinas (esto es Matrix). Realmente tu red alterna tu conexión entre la música y tu navegación, pero lo hace tan rápido que no lo percibes, y a este fenómeno se le conoce como "multiplexación."


2.3.3.- ¿DE QUÉ ESTA HECHO EL CAMINO DE LOS PAQUETES?


Pues cada vez mas estamos comprendiendo al señor TCP/IP, ya sabemos que es una dirección IP, que es un paquete y como se encamina o enruta hasta su destino, pero un momento... 

Todavía no sabemos de que esta hecho el camino de nuestros paquetes...

Tampoco sabemos cuántas veces debe transformar su naturaleza nuestro paquete para viajar por esos caminos, así que vamos a explicar (esta vez sin historias, vamos a ponernos serios).

Como expliqué anteriormente las comunicaciones en el mundo digital tienen un alfabeto muy singular y limitado, basado en "unos" y "ceros"; pero no se confundan, esa simpleza también lo hace muy sencillo y cómodo de transmitir y de interpretar, así que vamos a hacer unos cuantos ejercicios mentales para asimilar el concepto:

1 =  ruido             voltaje                           luz               
0 = silencio     ausencia de voltaje        oscuridad


Ahora sabiendo esto, imaginemos que debemos encontrar la forma de transmitir "unos" y "ceros" por medio de un cable de cobre. Simplemente podemos asignar un valor de voltaje como "1" y la ausencia de este sería "0" y en el otro extremo, nuestro receptor está al tanto de la forma en que debe interpretar los cambios, pues ¡ya está! A grandes rasgos esa es la forma en que se transmiten los paquetes por un cable de cobre.

Ahora imaginemos que debemos hacerlo usando la luz... Ummmm.... Interesante, pues el comportamiento es el mismo: asignamos el "1" a un pulso de luz y el "0" a la oscuridad y ¡ya está! Así se transmiten los paquetes por una fibra óptica.

Y si tuviéramos que hacerlo usando los modems antiguos (lágrimas a mis ojos nuevamente) usaríamos una secuencia de ruidos y silencios para interpretar "1" y "0"

Así que podríamos decir que el camino de nuestros paquetes puede estar hecho de cualquier cosa, siempre y cuando logremos asignar estados para nuestros "unos" y nuestros "ceros". Cada vez que la humanidad encuentra una nueva forma de transmitir se crea un estándar


3.- PROTOCOLOS DE LAS REDES INFORMATICAS

Como escribí anteriormente, para la correcta comunicación es necesaria una serie de mecanismos y normas que definan y le den sentido a la forma en que las máquinas se saludan y se hablan, pero... un momento... 

¿Cómo es eso de que las máquinas se saludan?

Pues sí, las máquinas se saludan antes de establecer una conexión, y es así porque el señor TCP/IP es muy educado y antes de iniciar el envío de paquetes debe estar seguro que del otro lado alguien los está esperando; además debe establecer la velocidad a la que van a hablar y varias cosas más, y todo esto se logra con una serie de saludos que consisten en 3 pasos:

El emisor saluda con un:

-"Hola que tal, ¿cómo estás? ¿Podría enviarte algunos paquetes?" (SYN)

Y el receptor responde:

-"Ok, recibí tu saludo y estoy totalmente de acuerdo" (SYN-ACK)

A lo que el emisor finaliza diciendo:

-"Ok entonces, aquí van mis paquetes"  (ACK)


Así es como se establece una conexión entre dos dispositivos de una red.


3.1 LOS HIJOS DEL SEÑOR TCP/IP

El señor TCP/IP tienes dos hijos, uno es un tanto rebelde y descuidado pero muy veloz; mientras que el otro, es muy dedicado y atento a los detalles, vamos a conocerles después de explicar lo siguiente.

Las redes deben ser confiables y no me refiero a su seguridad, me refiero a que deben proporcionar mecanismos para asegurar la transmisión de los "unos y los "ceros”, así pues debe existir un acuse de recibo por cada paquete enviado (o por cada grupo de estos) y esa es la norma establecido por el señor gordo, pero veamos cómo son sus hijos y cómo funciona cada uno de ellos.




a.- TCP

Lleva casi el mismo nombre de su padre y sus iniciales significan "Transmission Control Protocol" y él es muy estricto en cuanto a las normas de su padre: él envía los paquetes de forma normal, pero exige un acuse de recibo por cada paquete y si no lo recibe no envía el siguiente paquete sino que reenvía el mismo hasta confirmar que el paquete fue entregado. Es muy confiable y preciso pero es lento ya que debe procesar cada paquete y esperar un acuse de recibo antes de enviar el siguiente.

b.- UDP

Es el hijo menor de TCP y no se preocupa mucho por esas cosas de asegurar cada paquete, no le importa, su único objetivo es enviar todos los paquetes de la forma más rápida posible sin preocuparse sobre si fueron recibidos o no. No es confiable ni preciso, pero es mucho más rápido que su hermano.


Podríamos preguntarnos entonces: "¿Y para qué necesitaría usar al rebelde de UDP?"  La respuesta depende mucho de nuestras necesidades, ya que por ejemplo, una descarga desde Internet necesita completarse con todos los paquetes, no se puede perder ninguno, de lo contrario la descarga seria en vano, y en este caso se usa TCP; pero si en lugar de eso necesitamos ver video online, escuchar música en línea y esas cosas... lo que más importante es la rapidez y no importa si se pierde un paquete (un milisegundo de música, un pixel menos en pantalla, etc...) en este último caso se utiliza UDP.

   
Creo que esta sencillo y claro, ¿no?


Esta historia continuará...
            
¡Hasta la próxima!


Versión PDF                                                                                                       Visítanos en Underc0de




Taller de Programacion en Batch #2


Esta es la segunda parte del taller de Batch, recomendamos leer la primera entrega debido a que es necesario saber/recordar algunas instrucciones allí dichas para poder seguir y comprender mejor al presente, comencemos:

COMANDO SET (continuación)

Como pudimos ver en el taller anterior, el comando set se utiliza para definir variables, pero imaginemos que creamos un programa y queremos que un usuario pueda asignar el valor que él quiera a una variable, por ejemplo, para preguntarle su nombre.
¿Cómo podríamos hacerlo? Pues es muy sencillo, simplemente debemos escribir set /p "variable"=Cual es tu edad?


Observemos la imagen y el comando que hemos escrito /p ¿para qué sirve esto? Pues /p  después de set, nos permite pedir al usuario que escriba el valor de la variable, en este caso, el valor de la variable "nombre".

¿Para qué nos puede ser útil utilizar este comando? Este comando nos puede ser útil para múltiples usos, por ejemplo: si queremos crear un programa de felicitaciones, esto es, cuando un usuario introduzca su nombre, la consola devuelva: Feliz cumpleaños "Nombre".

Una duda que se suele plantear, es en caso de que escriba set/p sin el espacio ¿funcionaría? La respuesta, es afirmativa.

No importa si /p esta junto a set o separado por 900 espacios, seguirá funcionando. La razón de la separación con un espacio es para mayor legibilidad a la hora de examinar o leer ese código; pero de todas formas, les invito a probarlo en su consola de comandos o si prefieren, desde un documento de notas y ejecutar el .bat .

Dado que la finalidad de este taller es ayudar en la adquisición de conocimientos sobre Batch, dejaremos ejercicios para hacer por cada comando explicado.

NOTA: Si bien les invitamos a practicar e intentar realizar los ejercicios por ustedes mismos, todos ellos se encuentran resueltos al final del documento. 

Ejercicio 1: Anteriormente, comentamos sobre crear un programa que pida al usuario su nombre.  Este primer ejercicio consiste en pedir al usuario su nombre y que la consola devuelva: Feliz cumpleaños "nombre del usuario".

OPERACIONES CON VARIABLES

Seguramente, los que ya tienen experiencia en programar pero que no han usado Batch, piensan que sumar será igual o parecido a otros lenguajes, y si bien es cierto que existen similitudes, hay que evitar un error que se suele cometer y ahora mismo comentaremos; pero antes preparemos la operación:

Primero creamos una variable, en este caso le pondremos el nombre de "a" y le asignaremos el valor de 1.
Después creamos otra variable, en este caso con el nombre de "b" y le asignamos el valor de 2.
Ahora creamos una tercera variable, en este caso con el nombre de "c" y escribimos %a% + %b% y finalmente escribimos echo %c%

¿Ven lo que ocurre? No se ha realizado la operación y pasamos a explicar las razones.


Como habrán podido observar en la imagen, el resultado ha sido “1+2”. Se preguntarán por qué no se han sumado los valores contenidos en las variables (a y b)  y la respuesta es muy sencilla: no le hemos indicado a la consola que queríamos realizar una operación y por lo tanto ha tomado el "+" como un string (cadena).

Ahora, se preguntarán: ¿Cómo le digo a la consola que quiero realizar una operación? La instrucción se la damos usando el comando /a de esta manera: set/a c = %a% + %b%


¡Mirad! Lo hemos conseguido, ahora la suma ha funcionado y todo gracias a la orden /a que se encarga de "instruir" a la consola que queremos realizar una operación.

Una duda que surge al ver esto es ¿qué puedo hacer si quiero realizar una operación sin utilizar variables?
Simplemente debes escribir set/a "operación". En la imagen siguiente, un pequeño ejemplo:


En la imagen precedente pudimos ver un ejemplo del uso de /a y las operaciones. Explicaremos sus signos, aunque seguramente ya los conozcen todos y también pueden utilizarlos para hacer operaciones seguidas en Batch:

+ Este signo sirve para sumar.
-  Este signo sirve para restar.
Este signo, al igual que en la calculadora, sirve para dividir.
* Este signo sirve para multiplicar.
% Este signo, a diferencia de los demás, cabe la posibilidad de que no lo conozcan y su uso   (aparte de identificar las variables) es para ver el resto de un número entre otro, fijándonos en la imagen 9%3=0 ya que la división de 9/3 da de resto 0.

Esta parte es muy sencilla, por lo tanto dejaremos unos ejercicios para que practiquen y lo comprueben ustedes mismos.

Ejercicio 2: Crear un programa que pida al usuario dos variables:"numero" y "otronumero" y muestre con el comando echo el resultado de la suma, la multiplicación y el resto del primero por el segundo.

Ejercicio 3: Para que repasen algunas cosas que aprendieron en el primer taller, este ejercicio tratará de crear un bucle que empieza por 1 y se sume 1 infinitamente.

No se preocupen si no les sale el ejercicio, ya aprenderán con la práctica y verán que es muy fácil.

OPERACIONES SEGUIDAS EN BATCH

Posiblemente se pregunten ¿puedo hacer operaciones seguidas en Batch, por ejemplo: 9+3*2?
La respuesta es sí...ya pueden ir tirando las calculadoras.
Comprobaremos su funcionamiento usando una operación larga, por ejemplo: 9*3+6*68-5/3


Fijaos, podría ser que realizara las operaciones según el orden en el que aparecen dispuestas; sin embargo, no es así. Este lenguaje realiza las operaciones en orden de prioridad: primero potencias y restos (%), después multiplicaciones y divisiones, y finalmente restas y sumas.

A continuación, unos ejercicios que pueden hacer para ver el buen funcionamiento de Batch en operaciones matemáticas:

Ejercicio 4: Tendrán que crear una operación matemática con una multiplicación, tres divisiones, cinco sumas y ejecutarla para comprobar que Batch lo resuelve correctamente.

Ejercicio 5: Consiste en pedirle al usuario tres números, uno para cada variable (la variable  numero1, numero2  y numero3) y que multiplique numero1 por numero2 y divida el resultado por numero3.

CONDICIONALES EN BATCH (continuación)

En el anterior taller vimos una introducción al uso de if y else, pero en esta parte vamos a seguir profundizando su uso.
If y else no solamente sirven para determinar si existe un archivo o no y ejecutar algún comando, sino que se pueden utilizar como comparadores.

Comenzaremos aprendiendo la comparación con números:

Primeramente utilizaremos == (No confundir con el signo igual, estos son dos iguales seguidos y se utilizan para ver si un número es igual a otro).

Escribiremos para empezar dos comparaciones:

Primera comparación: if 9==3 echo hola
Como podemos comprobar no devolverá "hola", debido a que el numero 9 no es igual al número 3.

Segunda comparación: if 9==9 echo hola
En este caso, sí devolverá “hola”, ya que el número 9 es igual a 9.

Ahora viene el gran fallo que suele tenerse si se ha programado en otros lenguajes. Para poder verlo y que no les pase cuando programen en Batch ¿qué mejor que probarlo?

Probaremos con una comparación de mayor:
if 9>3 echo El 9 es mayor que el tres

¿Qué ha pasado? Lo vemos en la siguiente imagen.


La respuesta es muy simple, en Batch los signos > (mayor que), < (menor que), >= (mayor o igual que), <= (menor o igual que) NO se utilizan.

¿Entonces, cómo puedo hacer este tipo de comparaciones en Batch? Vamos a tener que aprender algunas instrucciones:

==     Se encarga de verificar si dos números son iguales.
GTR   Esta vez no es un signo raro, si no letras...Se encarga de comprobar que el primer número es mayor que el segundo.
LSS   Se encarga de comprobar que el primer número sea menor que el segundo.
GEQ  Se encarga de comprobar que el primer número es mayor o igual
LEQ  Se encarga de comprobar que el primer número es menor o Igual al segundo.

A continuación, verificamos que todos funcionan correctamente con una comparación verdadera y otra falsa:

Mayor que:
if 3 GTR 1 echo 3 es mayor que 1
if 3 GTR 15 echo 3 es mayor que 15

Menor que:
if 1 LSS 7 echo 1 es menor que 7
if  6 LSS 1 echo 6 es menor que 1

Mayor o igual que:
if 1 GEQ 1 echo 1 es mayor o igual a 1
if 1 GEQ 5 echo 1 es mayor o igual a  5

Menor o igual que:
if  7 LEQ 9 echo 7 es menor o igual a 9
if 7 LEQ 3 echo 7 es menor o igual a 3


¡Excelente! Todas las comparaciones han sido correctas. Por cierto,  LSS, GEQ y LEQ se pueden poner en minúsculas, pero se suelen poner en mayúsculas para mejor legibilidad del código.

Pero si queremos crear una condición, que en caso de que no se cumpla (la condición) se ejecute, ¿qué debo hacer?

Pues la respuesta a esta pregunta es muy simple: debes poner "not", como pueden observar en los siguientes unos ejemplos:

if not 9==4 echo 9 no es igual a 4, por eso me ejecuto igual
if not 3 GTR 135 echo 3 no es mayor que 135, por eso me ejecuto igual
if not 1 GEQ 5 echo 1 no es mayor o igual que 5, por eso me ejecuto
if not 1==1 echo 1 es igual a 1, por eso no me ejecuto
if not 7 GTR 3 echo 7 es mayor que 3, por eso no me ejecuto
if not 15 GEQ 15 echo 15 es mayor o igual a 15,por eso no me ejecuto


¿A qué no es tan difícil? El not es tan simple que si se cumple la comparación, pues no se ejecuta, pero en caso de que no se cumpla, entonces va a ejecutarse.

Ahora que hemos visto las comparaciones de números, les comento que también se pueden comparar variables. Solamente tenemos que darle un valor a las variables y comparar, en este ejemplo, compararemos dos cadenas:

set variable=cadena
set variable2=cadena
if %variable1%==%variable2% echo las dos variables son iguales


Perfecto, ya han comprobado que también se pueden comparar cadenas.

Practiquemos con un ejercicio...

Ejercicio 6: Tendrán que crear un programa que le pregunte al usuario por dos variables: variable1 y variable2; y en cada una de ellas que ingrese un número. Luego que compare ambas y si son iguales, que devuelva son iguales y si son diferentes, que devuelva son diferentes.

COMANDOS PROMPT, COLOR Y TITLE:

Vamos a aprender unos comandos, que a la vez de simples son muy interesantes. Seguramente, habrán observado que las imágenes, en lugar de poner el directorio en el que nos encontrábamos, ponía el nick: La_muerte_blanca y se preguntarán cómo hacerlo. Para explicároslo, les presento el comando Prompt.

Prompt: Este comando se utiliza para cambiar el nombre del directorio en Batch. El comando se utiliza de esta manera: prompt “nombre”.
Vamos a probarlo, en nuestro caso escribiré prompt la_muerte_blanca_de_undercode, pero vosotros podéis poner el nombre que queráis.


Se recomienda escribir un espacio al final, para que lo que escriban no se una al nombre y  lleve a confusión.
Este comando tiene una utilidad estética porque permite cambiar el nombre del directorio, disimulando un dato que no quieran mostrar o porque quieran mostrar un nick, sin tener luego que editar la imagen.

Color: Como indica su nombre, este comando sirve para cambiar el color de las letras. En la consola de comandos, escribimos color list y aparecerá un listado de colores como puede verse en la imagen siguiente. Elegid el que más les guste. Mucha gente elige color “a” ya que les gusta la pantallita con las letras verdes como en las películas XD.


Title: Luego del “colorido” comando precedente, title nos que sirve para poner un título en la parte superior. Puede ser interesante usarlo, por ejemplo, para crear un programilla y ponerle de título un nombre.

Es muy fácil de utilizar, simplemente ponemos title “aquí el título”.
Nosotros, para mostrar su uso, podremos de title underc0de:



Si bien, los comandos son simples, los ejercicios combinan lo que venimos aprendiendo.

Ejercicio 7: Realizar una multiplicación de varios números pidiéndoselos al usuario; y si da superior o igual a 300 cambiar el nombre de directorio con prompt a mayor_de_trescientos. En caso de ser igual o inferior, no hacer nada.

Ejercicio 8: En este ejercicio tendrán que utilizar variables, condicionales y el comando color; de forma tal, que al ejecutar el programa te pida un número y si este número es menor que 7 el color cambie a azul, si es igual a 7 que el color cambie a rojo y si es mayor que 7 cambie a verde.

Ejercicio 9: Por último, tendrán que crear un programa que pida al usuario introducir una palabra la cual se pondrá como título a la consola de comandos.

ERRORES TÍPICOS

En este apartado, explicaremos alguno de los errores muy típicos que se suelen tener en Batch.

Palabras con tilde y algunos caracteres especiales:

Si ya han probado algunas cosas en Batch, habrán visto que desde el cmd se pueden escribir palabras con tildes, pero desde el block de notas no.

¿Qué podemos hacer?

Para escribir palabras con tildes y la ñ deberemos usar comandos alt:

á =  alt 0160 
é =  alt 0130
í =  alt 0161
ó =  alt 0162
ú =  alt 0163
Á =  alt 0181
É =  alt 0144
Í =  alt 0214
Ó =  alt 0224
Ú =  alt 0233
ñ =  alt 0164
Ñ =  alt 0165

Ahora, vamos a probar llamando a todos desde un archivo .bat:


Nota: La á y la Á son espacios, pero no son los espacios “normales” porque si prueban con ellos no funcionarán debido a que son unos espacios “especiales”;  a efectos que se comprenda, podemos decir que están constituidos por caracteres invisibles.

No es necesario que se aprendan de memoria estos comandos con alt, pero se recomienda tener una lista con ellos ya que son muy útiles.

Por ejemplo, si quisiésemos escribir: “Tengo la solución”, tendríamos que poner:

echo Tengo la soluci¢n

Como pueden observar, utilizamos alt 0162 para poner el signo que la consola de comandos identifica como ó.

También nos gustaría comentarles que si quieren realizar varios comandos en un if utilicen el comando &.

Por otra parte, para hacer que caracteres especiales como > salgan en la consola (que por cierto, no sale porque sirve para enviar datos a otro archivo), hay que colocar el símbolo "^"para que impida que la consola lo considere como un comando y crea que es una cadena. Aquí un ejemplo:


Ejercicio 10: Tendrán que preguntar al usuario: "¿Qué desea hacer escribir algo o una multiplicación con números? Elige escribir o multiplicar:"
En caso de que el usuario responda escribir, permitirle escribir algo y después mostrarlo en la consola con echo, y volver al principio.
En el caso de que el usuario elija multiplicar, permitirle al usuario escribir dos números y mostrar el resultado de su multiplicación con echo, y volver al principio.
En el caso de que el usuario escriba otra cosa distinta de la que se le pide,  que la consola le de error y vuelva a elegir.
Para este ejercicio tendrán que usar muchas cosas de las aprendidas en el primer taller, como las etiquetas.

RESOLUCIÓN DE LOS EJERCICIOS

Para finalizar dejaremos una de las posibles soluciones a los ejercicios. También dar aviso, que pueden no tener un código igual, pero si el programa funciona el ejercicio estará correcto.

Ejercicio 1:

Código: DOS
  1. @echo off
  2. set /p nombre=Introduzca su nombre:
  3. echo Feliz cumpleaños %nombre%

Ejercicio 2:

Código: DOS
  1. @echo off
  2. set /p numero=elige el primer numero:
  3. set /p otronumero=elige el segundo numero:
  4. set/a suma=%numero%+%otronumero%
  5. set/a multiplicacion=%numero%*%otronumero%
  6. set/a resto=%numero%%%otronumero%
  7. echo %suma%
  8. echo %multiplicacion%
  9. echo %resto%

Ejercicio 3:

Código: DOS
  1. @echo off
  2. set numero=1
  3. :bucle
  4. echo %numero%
  5. set /a numero=%numero%+1
  6. goto bucle

Ejercicio 4:

Este ejercicio puede resolverse con todos los números posibles, por ello mismo yo solamente usaré el 1. Lo pondré como lo resolvería con el block de notas,pero también se puede realizar desde la consola de comandos:

Código: DOS
  1. @echo off
  2. set /a operacion=1*1/1/1/1+1+1+1+1+1
  3. echo %operacion%

Ejercicio 5:

Código: DOS
  1. @echo off
  2. set /p numero1=Elige el primer numero:
  3. set /p numero2=Elige el segundo numero:
  4. set /p numero3=Elige el tercer numero:
  5. set/a operacion=%numero1% * %numero2% / %numero3%
  6. echo %operacion%

Ejercicio 6:

Código: DOS
  1. @echo off
  2. set /p variable1=Elige un numero:
  3. set /p variable2=Elige otro numero:
  4. if %variable1%==%variable2% (echo son iguales) else (echo son diferentes)

Ejercicio 7:

En este ejercicio no escribiremos @echo off para poder ver el directorio ya que lo haremos desde un .bat, pero si lo hacen desde la consola de comandos no es necesario ya que se verá igual.

Código: DOS
  1. set /p numero1=Elige un numero:
  2. set /p numero2=Elige otro numero:
  3. set /p numero3=Elige un ultimo numero:
  4. set/a multiplicacion=%numero1%*%Numero2%*%numero3%
  5. if %multiplicacion% GEQ 300 prompt mayor_de_trescientos

Ejercicio 8:

Código: DOS
  1. @echo off
  2. set /p numero1=Elige un numero:
  3. if %numero1% LSS 7 color 1
  4. if %numero1% ==7 color 4
  5. if %numero1% GTR 7 color a

Ejercicio 9:

Código: DOS
  1. @echo off
  2. set/p titulo=Escribe una palabra:
  3. title %titulo%

Ejercicio 10:

Código: DOS
  1. @echo off
  2. :hacer
  3. set /p hacer="¿Que desea hacer escribir algo o una multiplicaci¢n con n£meros?Elige escribir o multiplicar:
  4. if %hacer%==escribir goto escribir
  5. if %hacer%==multiplicar goto multiplicacion
  6. echo Error,vuelva a elegir & goto hacer
  7.  
  8. :escribir
  9. set /p texto=¿Que deseas esribir?Escribe algo:
  10. echo %texto%
  11. goto hacer
  12.  
  13. :multiplicacion
  14. set /p numero1=Escribe el primer n£mero:
  15. set /p numero2=Escribe el segundo n£mero:
  16. set/a multiplicacion=%numero1%*%numero2%
  17. echo %Multiplicacion%
  18. goto hacer