A lo largo de la primera parte del curso, hemos estado hablando de algoritmos, funciones, procedimientos, estructuras repetitivas, y otras cosas no menos importantes para escribir un programa.
Sin embargo, una acci�n muy com�n cuando uno se enfrenta con una m�quina es coger el teclado y ponerse a escribir. Paralelamente, uno se espera que lo que escribe vaya apareciendo por la pantalla.
Cuando alguien realiza un programa, lo m�s normal es que vaya a interactuar con el usuario de alguna manera, bien pidiendo datos, bien mostrando paso a paso los resultados de un cierto proceso, o bien leyendo la posici�n del puntero del rat�n para ir dibujando puntos...
L�gicamente, querremos que los resultados de una entrada del usuario vayan a parar a algunas variables que nosotros habremos dispuesto para luego operar con ellas.
Luego, podremos querer mostrar por pantalla el resultado de una acci�n, que tendremos almacenado en alguna variable, para que el usuario pueda comprobar valores, usarlos posteriormente, etc...
Y en todo lo que hemos visto anteriormente, s�lo muy de pasada, hemos visto c�mo pod�amos llevar a cabo estas operaciones b�sicas de entrada/salida.
El nombre, formato, etc., depende del lenguaje escogido; sin embargo, todas tienen algo en com�n, y eso es lo que vamos a describir ahora.
Tenemos tres acciones b�sicas: asignaci�n, lectura (o entrada) y escritura (o salida). De la asignaci�n ya hablamos en el tema de las variables.
�Acciones de lectura
Las acciones de entrada nos permiten obtener determinados valores a partir de un perif�rico (teclado, rat�n, un fichero...) y ASIGNARLOS a unas determinadas variables.
Cuando escribimos un algoritmo, la acci�n de lectura se escribe:
leer de (periferico) (lista de variables de entrada)
Por ejemplo:
leer de teclado (x,y,z)
Si ahora el usuario introduce los n�meros 20, 10, 12, autom�ticamente se habr�n realizado las acciones de asignaci�n:
x <- 20 y <- 10 z <- 12
�Acciones de escritura
Las acciones de salida permiten transferir a un perif�rico (pantalla, un fichero, impresora, ...) resultados obtenidos por la m�quina. En un algoritmo, esta acci�n la pondremos de la siguiente forma:
mostrar por (perif�rico) (lista de variables de salida)
Por ejemplo, tras hacer:
A <- 100 B <- 101 C <- 99
si en nuestro algoritmo pone:
mostrar por impresora (A,B,C)
nuestra impresora se pondr� en marcha y nos sacar� los valores 100, 101, 99
�Una peque�a PostData
PD: Existe una estructura de salto incondicional, se llama GOTO, y tiene la forma
GOTO etiqueta
donde etiqueta es un nombre que nosotros elijamos como referencia. Usualmente van seguidas de : para saber que se trata de una etiqueta y no una variable (por ejemplo) NO declarada.
El funcionamiento es bien sencillo: en cuanto llegamos al GOTO, el flujo del programa autom�ticamente da un salto a la zona especificada a partir de la etiqueta.
Su uso no es nada recomendado por varios motivos: dificulta la lectura del programa y pueden descontrolarse muy f�cilmente si no se les sigue bien la pista. Lo que se puede hacer un GOTO se puede hacer con las otras estructuras que hemos visto.
Por ejemplo:
i <- 0
suma <- 0
saltar:
suma <- suma + i
si (i<10) entonces hacer
i <- i+1
GOTO saltar
fin si
puede hacerse tambi�n as�:
suma <- 0
desde <-0 mientras i<10 hacer
suma <- suma+i
fin desde
Mucho m�s compacto y menos engorroso.
Sin embargo, podemos estar en un bucle demasiado anidado y quiz� en alg�n momento el programa tenga un par�n cr�tico y haya que salir de ese bucle como sea: quiz� ese momento sea el �nico en que el GOTO nos pueda salvar, pero salvo en algo muy cr�tico, lo mejor es evitarlo. Me refiero en lenguajes de alto nivel, claro O:-D ....