Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/10/2011, 10:41
Kyshuo
 
Fecha de Ingreso: enero-2011
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 21
Comenzando a programar: 3b- Identificadores, Variables, Entrada estándar.

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 original
  1. PROGRAM EjemploVariable;
  2.  
  3. Var
  4.     nombre: String;
  5.  
  6. BEGIN
  7.     write(‘Ingresa tu nombre:);
  8.     readln(nombre);
  9.     writeln(‘Hola ‘,nombre);
  10. 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 original
  1. PROGRAM AraTriangulo;
  2.  
  3. Var
  4.     base, altura: integer;
  5.     area: real;
  6.  
  7. BEGIN
  8.     Write(‘Ingresa la base:);
  9.     Readln(base);
  10.     Write(‘Ingresa la altura:);
  11.     Readln(altura);
  12.  
  13.     area:= base*altura/2;
  14.  
  15.     Writeln(‘El área del triángulo es:,area:1:2);
  16. 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 original
  1. PROGRAM AraTriangulo;
  2.  
  3. Var
  4.    base, altura: integer;
  5.    area: real;
  6.  
  7. BEGIN
  8.    Write(‘Ingresa base y la altura separadas por un espacio:);
  9.    Readln(base,altura);
  10.  
  11.    area:= base*altura/2;
  12.  
  13.    Writeln(‘El área del triángulo es:,area:1:2);
  14. 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.

Última edición por Kyshuo; 17/11/2011 a las 09:57 Razón: Mejorar las vistas de código fuente