Entrada estándar
Veamos ahora como ingresar información a un programa mediante la
entrada estándar. La idea es la siguiente: el usuario ingresa un valor de un tipo específico y este se almacena en una variable.
En el siguiente ejemplo el programa le pedirá al usuario que ingrese su nombre y lo saluda mediante dicho nombre:
Código Pascal:
Ver originalPROGRAM EjemploVariable;
Var
nombre: String;
BEGIN
write(‘Ingresa tu nombre: ‘);
readln(nombre);
writeln(‘Hola ‘,nombre);
END.
Hemos comenzado como siempre escribiendo PROGRAM seguido de un identificador para nuestro programa y un punto y coma.
En la tercera línea vemos la palabra reservada
VAR y luego en la línea siguiente hemos declarado una variable llamada
nombre del tipo
string. A diferencia de los tipos numéricos, STRING guarda cadenas de caracteres, o sea, cualquier cosa escrita con cualquier símbolo será aceptada.
String es una palabra reservada de pascal y corresponde a un tipo primitivo del mismo.
Nosotros no usaremos mucho este tipo en general ya que no resulta muy útil a los efectos de este curso, pero aún así sirve conocerlo, y servirá para dar ejemplos prácticos antes de alguna implementación compleja de lectura de datos.
En la línea 6 indicamos el inicio del programa.
En la línea 7 usamos
write para imprimir un mensaje al usuario y dejar el cursor a continuación del mensaje, ya que allí se escribirá el nombre. En la octava línea utilizamos el procedimiento
readln para leer información de la entrada estándar e indicamos entre paréntesis que dicha información debe ser almacenada en la variable
nombre (la información se leerá al presionar enter). Siempre luego del procedimiento
read o
readln se especifica entre paréntesis la o las variables que guardarán la información leída, de lo contrario, el programa no guardará ningún registro de la información administrada por el usuario y continuará su curso.
En la novena línea utilizamos el procedimiento
writeln al cual le pasamos dos campos de información esta vez, primero el texto que debe imprimir y luego, separado por una coma, el nombre de la variable cuya información queremos que aparezca en pantalla. Cuando uno necesita imprimir varias cosas con un solo procedimiento
write o
writeln debe separar los campos con una coma. En este caso, un campo contiene el texto y el otro la variable
nombre. En este caso la variable
nombre guardará la palabra que nosotros escribamos y luego será lo que aparezca en pantalla al imprimir su contenido.
Ejemplo de ejecución:
Código:
Ingresa tu nombre: Vladimir
Hola Vladimir
Al igual que con
write y
writeln, la diferencia entre
read y
readln es que la primera lee información de la entrada estándar y deja el cursor al final de la línea en que la información fue ingresada. La segunda deja el cursor justo al inicio de la línea siguiente. Pueden probar a escribir el programa anterior intercambiando estas funciones para ver el resultado y comprenderlo mejor.
Notas: No declarar una variable luego de la palabra VAR es un error de sintaxis.
No usar los dos puntos ( : ) para luego indicar el tipo de la variable es un error de sintaxis.
Dos variables no pueden llamarse de la misma manera ni tampoco pueden llamarse igual que el programa, dicho de otra manera, no pueden repetirse dos identificadores, eso es un error de sintaxis.
----Todo esto ya lo dije antes, pero no está de más repetirlo---
-----------------------------------------------------------------------------------
Un programa más complejo:
En el siguiente ejemplo crearemos un programa que calcule el área de un triángulo. Para quién no lo recuerde, el área de un triángulo se calcula multiplicando el valor de la base por el de la altura y luego dividiendo ese valor entre 2. En este aso el usuario ingresará los valores y luego el programa mostrará el resultado:
Código Pascal:
Ver originalPROGRAM AraTriangulo;
Var
base, altura: integer;
area: real;
BEGIN
Write(‘Ingresa la base: ‘);
Readln(base);
Write(‘Ingresa la altura: ‘);
Readln(altura);
area:= base*altura/2;
Writeln(‘El área del triángulo es: ‘,area:1:2);
END.
Este programa utiliza tres variables:
base,
altura y
area, para calcular el área de un triángulo. La base y la altura del mismo son ingresadas por el usuario, y el valor de area se asigna dentro del programa.
Esta vez tenemos dos variables del tipo
integer, o sea que almacenarán números enteros y una del tipo
real, o sea que almacenará números reales.
En la línea 8 imprimimos una instrucción para el usuario y en la línea 9 indicamos al programa que lea de la entrada lo que el usuario ingrese y lo guarde dentro de la variable
base. En la línea 10 imprimimos otra instrucción al usuario y en la 11 leemos un valor y lo guardamos en la variable
altura.
En la línea 13 de nuestro programa le asignamos a la variable
area mediante el uso del símbolo de asignación ( := ) el valor del resultado de multiplicar el valor de
base por el valor de
altura y dividirlo entre 2. O sea, estamos multiplicando ambas variables ya que contienen números. El símbolo para multiplicar es el asterisco ( * ) y para la
división real la barra ( / ).
En la línea 15 usamos
writeln a la cual le pasamos dos campos de información, uno con el texto a imprimir y otro con la variable cuyo valor debe mostrarse con modificadores de decimales (ya explicaré esto). Este programa podría haberse hecho sin la variable
area y la línea 15 quedaría así
Writeln (‘El área del triángulo es: ‘,base*altura/2:1:2);
Como ven, es posible colocar expresiones en los campos de
write y
writeln.
Los números enteros no contienen cifras después de la coma y los reales sí pueden contenerlas. La variable
area es del tipo
real por lo cual al imprimir su contenido este se mostrará con valores decimales y exponente en base 10. Por ejemplo si su valor es 50, se imprimirá así 5.00000000000000E+001. Esto equivale a 5x10[sup]1[/sup]. Los modificadores
:1:2 indican en su primer valor el número mínimo de caracteres que toleraremos en el resultado (1) y el segundo valor indica cuantas cifras luego de la coma queremos que aparezcan (2). Con esto, el valor anterior se verá como 50.00.
-------------------------------------------------------------------------------------
Leer más de una variable a la vez:
El programa anterior podría haber sido escrito de la siguiente manera:
Código Pascal:
Ver originalPROGRAM AraTriangulo;
Var
base, altura: integer;
area: real;
BEGIN
Write(‘Ingresa base y la altura separadas por un espacio: ‘);
Readln(base,altura);
area:= base*altura/2;
Writeln(‘El área del triángulo es: ‘,area:1:2);
END.
Como pueden observar básicamente es lo mismo, con la única diferencia crucial de que esta vez, en la línea 9, indicamos al programa mediante el procedimiento
readln que lea dos variables a la vez. Esto siempre es posible. Solo deben colocarse entre los paréntesis los nombres de las variables a leer separados por comas. Pueden ser variables de distinto tipo. En este caso específico ambas son
integer. Cuando se ingresen los datos para la entrada estándar deben separarse por un espacio. Si el usuario ingresa solo un dato éste se asignará a la primera variable que aparezca dentro de los paréntesis y el programa quedará esperando el siguiente valor.
Del mismo modo pueden imprimirse varias variables a la vez ingresando los nombres de cada variable separados por comas dentro de los paréntesis de un procedimiento
write o
writeln.
-------------------------------------------------------------------------------------
Seguro tendrán miles de preguntas, dudas, sugerencias y demás. Así que a postear. Esta lección ha sido larga y sumamente más compleja que las anteriores. Daremos mucho tiempo para trabajar con todo esto.
Les dejo un pequeño ejercicio de aplicación.
Ejercicio:
Realicen un programa que calcule el área y el perímetro de un rectángulo. Recuerden que el área de un rectángulo se calcula como
base*altura y su perímetro como
base*2+altura*2. El programa recibirá de la entrada estándar la base y la altura y mostrará como salida un mensaje con el área y otro, debajo, con el perímetro. Estos mensajes deben estar separados al menos por una línea en blanco de los mensajes de instrucciones para el usuario.
Ejemplo de ejecución:
Ingrese la base: 10
Ingrese la altura: 6
El área de rectángulo es: 60
El perímetro del rectángulo es: 32
Deben ser capaces de realizar este ejercicio antes de continuar.