Foros del Web » Programación para mayores de 30 ;) » Programación General »

Duda en Pascal

Estas en el tema de Duda en Pascal en el foro de Programación General en Foros del Web. Hola, recien estoy aprendiendo este lenguaje y tengo una duda, o mejor dicho 2 dudas: Una es que para una variable del tipo single, al ...
  #1 (permalink)  
Antiguo 29/01/2013, 21:41
 
Fecha de Ingreso: marzo-2012
Mensajes: 7
Antigüedad: 12 años, 8 meses
Puntos: 0
Duda en Pascal

Hola, recien estoy aprendiendo este lenguaje y tengo una duda, o mejor dicho 2 dudas: Una es que para una variable del tipo single, al asignarle el valor de 3.14 y mostrarla por pantalla esta me decia que era 3.140000105E.... y como que me quedo esa duda en la cabeza, ¿por que me da ese 0.00..00105 de mas?, y la segunda duda es que para hacer el hola mundo, al usar el readln; me para el programa, pero si le pongo read; (sin el ln) el programa no se detiene, entonces creo que el read y readln no tienen como unica diferencia el crear un salto de linea.

Eso, me gustaria que me aclaracen esas dudas.

Saludos.
  #2 (permalink)  
Antiguo 02/02/2013, 22:41
 
Fecha de Ingreso: marzo-2012
Mensajes: 7
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Duda en Pascal

No tengo la intencion de crear otro tema pero se me presento otra duda, cuando creo el tipo subrango y por ejemplo hago:

type
cien:1..100;

var
numero:cien;

begin
numero:= 101;

Me funciona perfectamente, es decir, como que no me respeta el limite, si hago un subrango de un tipo enumerado si me lo respeta, pero de un tipo entero no, ¿Alguien sabe por que pasa estas cosas?.

Por si sirve de algo usao free pascal 2.6.0

Saludos.
  #3 (permalink)  
Antiguo 04/02/2013, 02:30
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Duda en Pascal

Sobre tu primera pregunta, se debe a un redondeo en la representación binaria del número, en este caso hacia arriba. Recuerda que la precisión de la máquina para cálculos en coma flotante es limitada y en algún lado hay que redondear, ya sea cortando lo que sobra (truncado) o redondeando por arriba (como en este caso).

Sobre tu segunda pregunta, por lo poco que recuerdo (dejé de utilizar Pascal cuando MS-DOS iba por su versión 3.3), readln aceptaba caracteres hasta que recibía un retorno de carro, quedando el programa en espera hasta ese momento, no recuerdo cómo funcionaba exactamente read.

Sobre tu última pregunta:

Un tipo enumerado (aunque internamente se almacene como un entero) consiste en una representación simbólica de unos cuantos valores, y solamente puedes utilizar esos valores. Por ejemplo, creas un tipo enumerado para los días de la semana. Internamente, el compilador va a hacer LUNES=1, MARTES=2, etc. Al compilar, donde encuentre LUNES lo va a sustituir por 1, MARTES por 2, etc. Algo así como si en el editor, una vez escrito el programa, le dices "Busca LUNES y lo sustituyes por 1", etc.

En cambio, si haces un subrango, en tiempo de compilación no se puede saber qué valor va a tomar esa variable, por lo que podrás meterle cualquier valor que esté dentro del rango admisible para ese tipo de variable. El compilador tampoco puede añadir código para comprobar que esa variable esté dentro del rango marcado (tendria que añadirlo cada vez que apareciera esa variable, y el ejecutable final tendría un tamaño monstruoso y sería lento hasta decir basta). Por ello, creo que lo de los subrangos es más por cuestión de claridad (indicando el margen de valores que se espera que pueda tener una variable).

Etiquetas: lenguaje, pascal, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:03.