Qué es la entrada y salida
En primer lugar, parémonos a pensar qué quiere decir en el contexto de un programa "entrada y salida", antes de meternos exactamente en cómo se organiza la entrada y salida de un programa en Java.
En informática deberíamos tener claro a estas alturas el concepto de programa. Un programa son una serie de instrucciones que van a recibir una entrada y que van a producir una salida. Un programa puede ser un algoritmo o una serie de algoritmos que pretendan resolver un problema o plantear un resultado, o en general, resolver una tarea para la cual su operador vaya a necesitar hacer uso del mismo.
Sin embargo, de por sí un algoritmo no es el programa más emocionante del mundo. Necesita una forma de poder comunicarse con el mundo exterior, aunque solo sea para compartir con el usuario a través de una pantalla o de un medio equivalente el resultado de la ejecución del programa. También debería contar con una forma de poder obtener información del mundo exterior, para poder recibir como mínimo la información necesaria para disparar el algoritmo.
Sin embargo en algunas ocasiones esa entrada y salida, que es lo que se denominaría entrada y salida estándar, se nos van a quedar corta. Cuando un algoritmo se ejecuta o cuando un programa de software corre, lo normal es que quiera comunicar información hacia el mundo exterior. La forma más habitual de compartir esa información con el universo es utilizando la salida estándar, también denominada stdout
. En el caso de Java es muy posible que ya la hayas utilizado sin darte cuenta cuando utilizas System.out, por ejemplo cuando haces System.out.println. Esto está conectado con la salida estándar que tu sistema operativo le haya asignado a tu programa, y es lo que permite que se vea en la terminal, o (en el caso de que lo estés ejecutando en un IDE) en la pestañita, como la de NetBeans o la de Eclipse.
Similarmente, a pesar de que se puede hardcodear información al principio de un programa, lo más relevante para que se pueda desarrollar correctamente un algoritmo será proporcionarle desde fuera la información necesaria para poder comenzar a funcionar. Esto es algo que los sistemas operativos denominan stdin o entrada estándar. Si estás en Java, la entrada estándar se gestiona a través del objeto System.in, el cual es posible que a estas alturas incluso ya hayas tenido la ocasión de utilizar. A menudo, la entrada estándar está conectada con el teclado, por ejemplo cuando lo ejecutas en una terminal o en una ventanita del Eclipse o del NetBeans, con el teclado puedes introducir información que luego se manda al programa a través de System.in. Sería una forma de poder proporcionarle al programa la información necesaria para que pueda desarrollar sus algoritmos y finalmente comunicarle al mundo exterior el resultado a través de la salida estándar.
Solamente con una salida estandar y con una entrada estandar un programa podría ya comenzar a funcionar. Podríamos proporcionarle los datos de entrada a través de la entrada estandar, y nos escupiría la información calculada a través de la salida estandar. Sin embargo, en algunas ocasiones los programas de ordenador van a querer obtener información de más fuentes, es decir, van a querer utilizar entradas adicionales. Como pueda ser un archivo del cual tenga que leer una información, tal como pueda ser el caso de un programa que tenga que persistir en disco duro la información con la que está trabajando para poder rescatarla en la siguiente sesión. En este caso también sería necesario contar con salidas extra, como ese mismo archivo en el cual un programa guarde su estado para que la próxima vez que se ejecuta pueda recuperarla.
Sin embargo, la entrada y la salida puede ser prácticamente cualquier cosa. Puede ser un servidor con el cual se conecte a través de internet. En este caso, protocolos como TCP/IP también pueden actuar como entradas y como salidas, de tal forma que un programa pueda conectarse a internet para obtener una información o para enviar información a alguna parte.
Algunos tipos de hardware, como los puertos USB o los puertos serie. también pueden valer como dispositivos de entrada y salida, en los cuales un programa puede enviar información o de los cuales un programa puede leer información para poder trabajar. Y también, como veremos más adelante, a veces la entrada y la salida pueden ser conceptos abstractos, como otros programas de ordenador que se estén ejecutando para que se puedan comunicar entre sí.
Como vemos, un programa de ordenador no sería nada si no fuese por las entradas que le permiten obtener información del mundo exterior, y las salidas que les permiten comunicar el resultado o cualquier cosa que tengan que comunicar al exterior.
Desplegar transcripción del episodio
[Música]
En informática deberíamos tener claro a estas alturas el concepto de programa. Un programa son una serie de instrucciones que van a recibir una entrada y que van a producir una salida. Un programa puede ser un algoritmo o una serie de algoritmos que pretendan resolver un problema o plantear un resultado, o en general, resolver una tarea para la cual su operador vaya a necesitar hacer uso del mismo.
Sin embargo, de por sí un algoritmo no es el programa más emocionante del mundo. Necesita una forma de poder comunicarse con el mundo exterior, aunque solo sea para compartir con el usuario a través de una pantalla o de un medio equivalente el resultado de la ejecución del programa. También debería contar con una forma de poder obtener información del mundo exterior, para poder recibir como mínimo la información necesaria para disparar el algoritmo.
Sin embargo en algunas ocasiones esa entrada y salida, que es lo que se denominaría entrada y salida estándar, se nos van a quedar corta. Cuando un algoritmo se ejecuta o cuando un programa de software corre, lo normal es que quiera comunicar información hacia el mundo exterior. La forma más habitual de compartir esa información con el universo es utilizando la salida estándar, también denominada stdout
. En el caso de Java es muy posible que ya la hayas utilizado sin darte cuenta cuando utilizas System.out, por ejemplo cuando haces System.out.println. Esto está conectado con la salida estándar que tu sistema operativo le haya asignado a tu programa, y es lo que permite que se vea en la terminal, o (en el caso de que lo estés ejecutando en un IDE) en la pestañita, como la de NetBeans o la de Eclipse.
Similarmente, a pesar de que se puede hardcodear información al principio de un programa, lo más relevante para que se pueda desarrollar correctamente un algoritmo será proporcionarle desde fuera la información necesaria para poder comenzar a funcionar. Esto es algo que los sistemas operativos denominan stdin o entrada estándar. Si estás en Java, la entrada estándar se gestiona a través del objeto System.in, el cual es posible que a estas alturas incluso ya hayas tenido la ocasión de utilizar. A menudo, la entrada estándar está conectada con el teclado, por ejemplo cuando lo ejecutas en una terminal o en una ventanita del Eclipse o del NetBeans, con el teclado puedes introducir información que luego se manda al programa a través de System.in. Sería una forma de poder proporcionarle al programa la información necesaria para que pueda desarrollar sus algoritmos y finalmente comunicarle al mundo exterior el resultado a través de la salida estándar.
Solamente con una salida estandar y con una entrada estandar un programa podría ya comenzar a funcionar. Podríamos proporcionarle los datos de entrada a través de la entrada estandar, y nos escupiría la información calculada a través de la salida estandar. Sin embargo, en algunas ocasiones los programas de ordenador van a querer obtener información de más fuentes, es decir, van a querer utilizar entradas adicionales. Como pueda ser un archivo del cual tenga que leer una información, tal como pueda ser el caso de un programa que tenga que persistir en disco duro la información con la que está trabajando para poder rescatarla en la siguiente sesión. En este caso también sería necesario contar con salidas extra, como ese mismo archivo en el cual un programa guarde su estado para que la próxima vez que se ejecuta pueda recuperarla.
Sin embargo, la entrada y la salida puede ser prácticamente cualquier cosa. Puede ser un servidor con el cual se conecte a través de internet. En este caso, protocolos como TCP/IP también pueden actuar como entradas y como salidas, de tal forma que un programa pueda conectarse a internet para obtener una información o para enviar información a alguna parte.
Algunos tipos de hardware, como los puertos USB o los puertos serie. también pueden valer como dispositivos de entrada y salida, en los cuales un programa puede enviar información o de los cuales un programa puede leer información para poder trabajar. Y también, como veremos más adelante, a veces la entrada y la salida pueden ser conceptos abstractos, como otros programas de ordenador que se estén ejecutando para que se puedan comunicar entre sí.
Como vemos, un programa de ordenador no sería nada si no fuese por las entradas que le permiten obtener información del mundo exterior, y las salidas que les permiten comunicar el resultado o cualquier cosa que tengan que comunicar al exterior.