Pascal/Turbo Pascal - Problema con type - subrangos

 
Vista:

Problema con type - subrangos

Publicado por Jose (2 intervenciones) el 25/04/2010 20:47:02
Tengo un problema con el turbo pascal.Mas precisamente definiendo tipos de subrango.

Si yo defino por ejemplo

type
tprueba=1..4;

y despues creo una variable

var
n:tprueba;

por lo que entendi, esa variable N solo podria tomar valores entre 1 y 4 ( 1,2,3 o 4). Hasta ahi todo bien. Mi idea era probar eso. Lo primero que intente hacer era asignarle a n un valor fuera de ese rango para ver si compilaba. (n:=5 por ejemplo). Tanto turbo pascal como free pascal dieron error, me acuerdo el del pascal "Constant out of range". Joya funciona.

Despues quise ver si le asignaba el valor desde el programa que pasaba, mas que nada para ver que error daba por si me pasaba en un programa en serio. Hice un read n y despues write n. Aca surgio el problema.

El turbo pascal me acepta CUALQUIER N, con la salvedad de que despues el write n a veces tira cualqueir cosa (Probando asi a ojo, de 0 a 127 me daba bien los valores..despues tira valores en negativo,o devuelve cualquier numero). Pero lo importante es que me permite poner cosas fuera del rango y devuelve cualqueir valor. Con el Free pascal en cambio no pasa, cuando ingreso un valor fuera del rango, se cierra el programa. (No llega a hacer el write).

Lo facil seria decir listo, el turbo pascal esta viejo..ya fue uso el free pascal. Pero la verdad es que ya me acostumbre al turbo, y no me gusta como me marca los errores el free (A veces me dice donde esta, otras dice FALTA ERROR y no dice nada...).

Si alguno sabe que puede estar pasando, o que puedo estar haciendo mal, ayuda por favor!. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con type - subrangos

Publicado por Diego Romero (996 intervenciones) el 26/04/2010 05:22:16
Interesante, voy a probar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con type - subrangos

Publicado por Diego Romero (996 intervenciones) el 26/04/2010 05:31:53
Pues me temo que no puedo corroborar lo que dices. He hecho lo siguiente:

uses crt;
type
TRango=1..4;

var
n: TRango;

begin
clrscr;
read(n);
write(n);
readkey;

end.

Y si ingreso 5 me salta Error: 201: Range check error, lo cual es correcto que pase.

Así que lo que me parece que te está pasando es que no tienes habilitado la verificación de rangos en tiempo de ejecución.

En el IDE de Turbo Pascal, en el menú Options->Compiler.., en el cuadro que aparece verifica que haya una X en "Range checking" en el grupo "Runtime errors".

Compila con F9 y luego ejecuta con ctrl-F9.

La pregunta es por qué Turbo Pascal permite que no se verifiquen rangos siendo esta característica algo muy necesaria?, pues porque la verificación de rango es "costosa" en tiempo de procesador, la intención es que cuando estás depurando un programa uses la verificación de rango y solo cuando estás seguro de que no se producirá ningún fuera de rango, compiles el programa sin la verificación, así el programa final será más rápido que la versión de desarrollo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con type - subrangos

Publicado por Jose (2 intervenciones) el 26/04/2010 09:00:52
Efectivamente no estaba tildada esa opcion, muchas gracias! Ahi lo probe y funciona perfecto.

Entonces ahora que estoy aprendiendo me combiene dejarla habilitada, y en todo caso llegado el momento, tendre en cuetna eso de la memoria. Igualmente para los programas que llegue a hacer en algoritmos uno no creo que haya diferencia en ese sentido.

Por cierto, sos el mismo de driverop no? Hubiera preguntado ahi, pero estaba caida justo la pagina jeje. Que bueno que te encontre por aca. Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con type - subrangos

Publicado por Diego Romero (996 intervenciones) el 26/04/2010 13:08:14
Pues sí, para programas cortos la diferencia entre tener esa opción y no tenerla es nula en función del rendimiento.

Sí, soy DriverOp. Lamentablemente por problemas en el hosting mi página estuvo caída un par de días. Afortunadamente tengo back up de todo y pude reestablecerla. Bueno, no todo, descubrí que perdí un archivo de la sección pascal que me es casi imposible reproducir de cero. Pero bueno, cosas que pasan...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar