(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)
Estructuras secuenciales
Siguiendo con los conceptos iniciales, en esta oportunidad veremos como crear un programa con el que se pueda interactuar utilizando las estructuras de lectura y escritura.

Para empezar a conversar…
Vamos a crear un simple programa que nos pregunte nuestro nombre y que luego nos responda. El mismo almacenará el dato ingresado en una variable llamada nombre.
Recuerden que las variables son espacios de memoria en donde podemos guardar las lecturas que haga el programa cuando este se ejecuta.
Se llaman variables porque pueden variar de acuerdo a lo que ingresemos.
Hay que tener en cuenta que en lenguajes más avanzados debemos declarar las variables antes de utilizarlas (en PseINT no necesitamos hacer esto porque están aprendiendo y por eso ajustamos su configuración a flexible y perdonará cualquier animalada que hagamos).

Veamos el programa en el siguiente diagrama:

La figura del paralelogramo representa en nuestro diagrama las entradas (leer) y salidas (escribir). Estas dos estructuras se diferencian gráficamente solo por la dirección de la flecha.
Analizamos el código
Cerramos el diagramador y echamos un vistazo al código para aclarar algunas cositas….
Algoritmo prog02 // Escribimos una pregunta. Escribir "¿Cuál es tu nombre?" // almacenamos la respuesta en un espacio de memoria llamado nombre. Leer nombre // Respondemos al usuario usando lo que almacenamos en memoria. Escribir "Que lindo nombre ",nombre FinAlgoritmo
- El uso de comillas es REALMENTE IMPORTANTE: En el programa podemos ver que la primera escritura tiene la pregunta “¿Cuál es tu nombre?” (y está entre comillas). En programación esto se llama cadena de caracteres (string, en inglés), no es más que una secuencia ordenada de elementos que pertenecen a un cierto lenguaje formal o alfabeto. Estas cadenas van entre comillas para que no sean confundidas con espacios en memoria (otras variables que realmente no existen).
- NO ES LO MISMO “NOMBRE” y NOMBRE: En la segunda escritura vemos una cadena “Que lindo nombre ”, y separado por una coma va nuestra variable nombre. De esta forma la palabra nombre que está dentro de las comillas funciona como una cadena de caracteres (un texto normal), mientras que la que está fuera de las comillas hace referencia al contenido que está guardado en la variable. Si no ponemos las comillas el intérprete dará por sentado que cada palabra es una variable. Otro error muy común es no dejar un espacio para separar el contenido de la cadena de lo que vendrá a continuación; en este caso es el nombre ingresado por quien ejecute el programa, ahora lo veremos más claro al ejecutarlo.
- PseINT ignorará las líneas que comiencen con dos barras (//). En el diagramador también podemos agregar comentarios (es la primera estructura que aparece arriba a la derecha). Para que un programa funcione, no hace falta dejar comentarios, aunque un programa bien comentado será más fácil de entender en un futuro, sobre todo para otras personas que lean el código.
Ejecutamos el programa
Al ejecutar el programa la computadora nos pregunta nuestro nombre. Ingresamos nuestro nombre y presionamos la tecla Enter. Responde “que lindo nombre “, seguido del nombre que ingresen. Aquí es donde se entiende la importancia del espacio que dejamos antes de cerrar comillas dentro del código, sino aparecería todo junto.
La verdad es que la PC no sabe lo que hace…
Nuestro programa guarda en memoria cualquier cosa que ingresemos y luego lo repite como si fuera un loro, viendo el diagrama y su ejecución se entiende perfectamente su funcionamiento, y puede llegar a ser incluso muy divertido.
Ejecutamos de nuevo el programa para entender la situación…
La respuesta que dará es solo una construcción gramatical lograda gracias a la unión de dos cadenas de texto, estamos aún muy lejos de haber creado una inteligencia artificial.
Veamos el código en C++:
// ESTRUCTURAS SECUENCIALES.
#include <iostream>
using namespace std;
string nombre;
int main()
{
cout << "¿Cuál es tu nombre?" << endl << endl;
// cin >> nombre; Esta línea solo tomaría una palabra.
getline(cin, nombre); //Esta línea no dará problemas con los espacios en el nombre.
cout << endl << "Que lindo nombre " << nombre << "." << endl;
return 0;
}
Vamos a analizar línea por línea este código en C++:
Línea 1: // ESTRUCTURAS SECUENCIALES.
Este es un comentario de una sola línea, que no hace nada en sí mismo. Los comentarios son lineas de texto que comienzan con // o /* */. El compilador los ignora.
Línea 2: #include <iostream>
Incluimos la biblioteca iostream, que proporciona entrada/salida estándar (como cout y cin) y algunas operaciones de flujo básicas.
Línea 4: using namespace std;
Declaramos que queremos utilizar el espacio de nombres std, que contiene las clases y funciones de la biblioteca estándar C++. Esta directiva permite acceder a los elementos de std sin tener que usar la notación
qualificada (std::cout, por ejemplo).
Línea 6: string nombre;
Declaramos una variable llamada nombre del tipo string. En C++, string es un tipo de dato que representa una cadena de caracteres. La variable nombre tendrá espacio para almacenar una cadena de texto.
Línea 8: int main()
La función main es la entrada principal del programa. Su retorno es int, lo que indica que devuelve un valor entero. La función main es el punto de inicio del programa cuando se ejecuta.
Línea 10: cout << "¿Cuál es tu nombre?" << endl << endl;
Escribimos un mensaje en la salida estándar (pantalla) utilizando la función cout. El mensaje es "¿Cuál es tu nombre?", seguido de dos líneas vacías (endl) que salen al final de la línea y saltan una línea.
Línea 11: // cin >> nombre;
Este comentario indica que la siguiente línea sería incorrecta si no se elimina el comentario. La línea originalmente era cin >> nombre, lo que significa que leería un string desde la entrada estándar (teclado) y lo asignaría a la variable nombre. Sin embargo, como no hay espacio para almacenar espacios en blanco, esto sería incorrecto.
Línea 12: getline(cin, nombre);
En lugar de usar cin >> nombre, que puede causar problemas con espacios en blanco, utilizamos la función getline (que significa “obtener línea“) para leer una línea completa desde la entrada estándar y asignarla a la variable nombre. La función getline es más segura cuando se trata de leer cadenas de texto que pueden contener espacios.
Línea 13: cout << endl << "Que lindo nombre " << nombre << "." << endl;
Escribimos otro mensaje en la salida estándar, esta vez con el contenido de la variable nombre. El mensaje es "Que lindo nombre " seguido del valor de nombre, seguido de un punto (.) y otra línea vacía (endl).
Línea 14: return 0;
La función main devuelve 0, lo que indica que el programa se ejecutó correctamente.
Ahora el código en PYTHON:
print("¿Cómo te llamas?")
nombre = input()
print(f"¡Que lindo nombre {nombre}!")
Vamos a analizar línea por línea este código en PYTHON:
Línea 1: print("¿Cómo te llamas?")
La función print() se utiliza para mostrar una cadena de texto en la salida estándar (pantalla). En este caso, muestra el mensaje "¿Cómo te llamas?", que es un título para pedir el nombre del usuario.
Línea 2: nombre = input()
La función input() se utiliza para leer una entrada desde la consola (teclado) y asignarla a una variable. En este caso, la variable es nombre. La función input() devuelve un string que contiene lo que el usuario ha escrito en la consola.
Nota importante: La función input() no hace distinción entre espacios y caracteres especiales, por lo que si el usuario ingresa un nombre con espacio (como “Juan Pérez“), se almacenará correctamente en la variable nombre.
Línea 3: print(f"¡Que lindo nombre {nombre}!")
La función print() se utiliza de nuevo para mostrar un mensaje en la salida estándar. Pero esta vez, utilizamos una sintaxis especial llamada f-string (o cadena f). La f-string es un modo de concatenar strings y variables en una sola cadena.
En este caso, la cadena f es "¡Que lindo nombre {}!", que tiene un lugar holder ({}) donde se podrá insertar el valor de la variable nombre. El f al principio de la cadena indica que se trata de una cadena f-string.
Cuando se imprime la cadena, Python reemplaza {} con el valor de nombre, resultando en "¡Que lindo nombre Juan Pérez!" (si el usuario ingresó ese nombre).
En resumen, el Formatted string literals (también llamado f-strings para abreviar) le permiten incluir el valor de las expresiones de Python dentro de una cadena prefijando la cadena con f o F y escribiendo expresiones como {expresión}.
En versiones anteriores de Python no era algo tan amistoso, en el siguiente Código pueden ver cómo se hacía antaño:
print("¿Cómo te llamas?")
nombre = input()
print("¡Que lindo nombre %s!" % nombre)
Nosotros en este curso utilizaremos f-strings, lo consideramos más elegante, menos confuso y esta es una de las cosas por las cuales antes no me gustaba Python, y ahora puedo decir que gracias a estas mejoras que fue teniendo el lenguaje en las últimas versiones me gusta más y es uno de mis favoritos, se convirtió en un lenguaje más didáctico, facilitando las cosas para todos los que recién comienzan o vienen de un pseudolenguaje previo.
TAREA PARA EL HOGAR
Modificar el programa para que haga al menos tres preguntas.
Vas a tener que usar un nombre distinto de variable para cada respuesta que almacenemos.
Por un momento vas a ser programador, y al testear tu programa vas a ser un usuario. ¡No confundas los roles!
Un ejemplo de programa podría ser que pregunte nuestro nombre, luego el apellido y que responda mostrando nombre y apellido todo junto. Vas a ver la importancia de poner una cadena que solo contenga un espacio para poder separarlos y que no aparezcan unidos.
Recordá separar las cadenas de las variables en PseINT con una coma.
