4.+Sentencias+de+entrada+y+salida

**4.1. INTRODUCCIÓN.**

En programación se denominan sentencias de entrada a aquellas que permiten enviar información desde el exterior al interior de un programa y sentencias de salida a aquellas que permiten enviar información desde el interior del programa al exterior.

En los lengua­jes de progra­mación existe una gran variedad de sen­tencias de entra­da y de salida. Normalmente estas sentencias se escriben de forma distinta en función de la información, por ejemplo se escribiría de una forma si la información de entrada es numérica y de otra si la información de entrada son caracteres. También se pueden escribir las sentencias de entrada y de salida de distinta forma en función de donde reciban la información o donde la envíen (a la pantalla, a la impresora, al disco duro, a la disquetera, al diskette, a otro ordenador, a un dispositivo de control remoto, etc.).

A las sentencias de entrada y de salida se las conoce como sentencias de E/S (Entrada/Salida) o sentencias de I/O (Input/Output cuya traducción sería input = entrada y output = salida).

**4.2. REPRESENTACIÓN ALGORÍTMICA DE LAS SENTENCIAS DE ENTRADA Y SALIDA.**

**4.2.1. Representación algorítmica de las sentencias de entrada.**

Las sentencias de entrada envían información desde el exterior al programa. Normalmente la información la suministra el usuario del programa a través del teclado y ésta se almacena en una variable. Para indicar en un organigrama una sentencia de entrada se necesitan dos cosas: una es el símbolo que representa la sentencia y otra es el lugar donde se va a almacenar la información de entrada, que se especifica por el nombre de una variable dentro de un símbolo*.

**//*La mayoría de los lenguajes de programación no admiten la "ñ" como parte del nombre de variable. En algoritmia no hay ningún problema de nombrar a las variables como se desee.//**



**Ejemplo:**

Si queremos realizar un organi­grama que represen­te la suma de los valores de dos variables podríamos realizarlo de la siguiente manera:
 * leer un dato numérico en la variable **a**
 * leer un dato numérico en la variable **b**
 * sumar las variables **a** y **b** y el resultado almacenarlo en la variable **c** (recordar que en las funciones se pondría la “variable solución” c a la izquierda del igual)

El organigrama para representar esta secuencia de pasos sería: <span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 120%; text-align: justify;">

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">En un organigrama no se suele indicar el tipo de infor­mación que contendrá las variables que están dentro del símbolo de en­trada, así no se especifica que las variables **a** y **b** son de tipo numérico.

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Las variables de entrada serían “**a** y **b”** y si no introducimos valores a esas variables el programa no funcionaría puesto que no tendría datos para realizar la suma. El programa no continuará su ejecución hasta que se hayan introducido los valores que demandan las sentencias de entrada.

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">- 1. Se detendría en la primera sentencia (leer un dato numérico en la variable **a**) y no continuaría hasta que alguien introdujera por teclado un valor y a continua­ción pulsara la tecla "return"(también denominada "enter" ó "intro").

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">- 2. El ordenador almacena en la variable **a** el valor que se ha tecleado en el paso anterior.

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">- 3. El ordenador se detendría de nuevo en la segunda sentencia (leer un dato numérico en la variable **b**) y no continuaría hasta que alguien introdujera por teclado un valor numérico y a continuación pulsara la tecla "return".

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">- 4. El ordenador almacena en la variable **b** el valor que se ha tecleado en el paso anterior.

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">- 5. Finalmente el ordenador realizaría la suma de los valores de las variables **a** y **b** y los almacenaría en la variable **c**. <span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;"> Es posible expresar varias sentencias de entrada como una sola; es decir, se puede poner una única sentencia de entrada con varias variables.

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 120%; text-align: justify;"> <span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Cuando se ejecuta una sentencia de entrada, el ordenador detiene su ejecución y no continúa hasta que se haya introducido por teclado un valor y pulsado la tecla "return".

<span style="color: #ff0000; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">**¿Cómo sabemos cuando el ordenador está esperando a que se introduzca un valor?**

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Normalmente el ordenador presenta un símbolo en pantalla que indica que está esperando a que se introduzca un valor; es decir, está detenido en una sentencia de entrada. Este símbolo varía de unos lenguajes de programación a otros.

<span style="color: #ff0000; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">**¿Cómo sabe el usuario del programa qué valor tiene que dar?**

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">En el programa para sumar el valor de dos variables es fácil saber qué valor está pidiendo el ordenador: cuando aparezca el primer **–** (o el símbolo que corresponda según el programa) estaremos dando el valor del primer sumando y cuando aparezca el segundo **–** estaremos dando el valor al segundo sumando.

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Cuando aparece un **–,** no sabemos qué valor debemos dar o para qué lo necesita el programa. Para evitar esto, todos los programadores profesionales ponen un texto indicativo que aparece antes del carácter **-** (esta acción se denomina **documentar la entrada**).

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Así para el caso de la suma de dos variables debería aparecer un texto indicativo antes de cada símbolo **-** y la pantalla quedaría como sigue:

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Introduce el segundo sumando _ b ||
 * <span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Introduce el primer sumando _ a

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 120%; text-align: justify;">

<span style="color: #ff0000; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">**4.2.2. Representación algorítmica de las sentencias de salida.**

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Para representar algorítmicamente una sentencia de salida se necesita (al igual que en las sentencias de entrada) el símbolo que representa la sentencia y la información que se va a enviar fuera del programa y permite ver el resultado.

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">La información que se puede enviar fuera del programa puede ser cualquier tipo de expresión. Así la información puede ser una variable, en cuyo caso se visualizará el contenido de la misma; puede ser una constante o una combinación de ambas.

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">La ma­yoría de las senten­cias de salida se emplean para que el usua­rio pueda ver la informa­ción con la que está trabajando el programa, no obstante otras sentencias sirven para enviar información de un programa a otro o entre diversas partes de un programa. Las variables que están en una sentencia de salida se las denomina **variables de salida**.

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Siguiendo el organigrama del ejemplo anterior de la suma, primero realizaría la operación y su valor lo almacenaría en la variable **c** pero el usuario no vería el resultado de la suma por pantalla, sin embargo si al final del algoritmo le añadimos una sentencia de salida para ver por pantalla el contenido de la variable **c**, entonces sí podríamos ver el resultado de la suma.

<span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">El nuevo algoritmo sería el siguiente:
 * <span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">leer un dato numérico en la variable **a**
 * <span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">leer un dato numérico en la variable **b**
 * <span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">sumar las variables **a** y **b** y el resultado almacenarlo en la variable **c**
 * <span style="color: #0000ff; display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">**visualizar el contenido de la variable c**

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 120%; text-align: justify;">

<span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Al igual que las sentencias de entrada, es posible expresar varias sentencias de salida en una sola y documentarla para saber que variable de salida es la que muestra. <span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 120%; text-align: justify;"> <span style="display: block; font-family: Verdana,Geneva,sans-serif; font-size: 110%; text-align: justify;">Recuerda que las variables de salida se documentan para que en todo momento sepamos el significado de la información que aparece por pantalla.