Practico 10 ejercicio 4, pregunta.

Practico 10 ejercicio 4, pregunta.

de Jose Gabriel Provera Sabaño -
Número de respuestas: 4

Buenos días,

mi consulta es acerca de la asignación

día := laborable

del práctico 10 en el ejercicio 4.

lo probé y compila, luego con la función ord() he impreso en pantalla el ordinal de día e imprime "0" ósea el ordinal correspondiente a lunes.

No me queda claro por qué se le puede asignar un subrango a una variable de tipo "TipoDia" en lugar de un valor concreto del enumerado, para que caso serviría y por qué devuelve "0" la función ord()

Si alguien puede echar un poco de luz al asunto le agradezco.

Saludos,

Gabriel.


En respuesta a Jose Gabriel Provera Sabaño

Re: Practico 10 ejercicio 4, pregunta.

de Guillermo Rey Martusciello -

Buenas,

eso que comentas debe ser porque estas utilizando la variable laborable antes de inicializarla. Lo que debe estar pasando es que inicializa la variable laborable en el primer valor posible, siendo lunes en este caso, por lo tanto ord(dia) va a ser igual a 0 despues de esa asignacion. Recordamos que antes de usar el valor de una variable para cualquier cosa, la misma debe estar previamente inicializada (ya sea leyendola de la entrada o asignandole un valor por defecto). Si te quedan mas dudas sobre esto, no dudes en volver a preguntar!

Saludos,

Guillermo

En respuesta a Jose Gabriel Provera Sabaño

Re: Practico 10 ejercicio 4, pregunta.

de Felipe Miranda Torres De La Llosa -
Hola Gabriel, ¿cómo andas?

Esta asignación es posible porque la variable laborable es un sub rango del enumerado TipoDia, entonces el valor que puede tomar laborable están incluidos dentro del conjunto de valores de TipoDia, y por eso puedo asignarlo a una variable de TipoDia.
Esto es válido para todos los tipos ordinales, por ejemplo, si tengo una variable de tipo integer, le puedo asignar a esta el valor de otra variable que sea de tipo sub rango de integer.

Sobre porque el ordinal es 0, posiblemente si no inicializaste la variable laborable, free pascal la va a inicializar en 0. Más halla de esto, a los efectos del curso es importante inicializar todas las variables.

Saludos,
Felipe
En respuesta a Felipe Miranda Torres De La Llosa

Re: Practico 10 ejercicio 4, pregunta.

de Alexis Sokorov Vargas -
Buenas, tengo una duda con la asignación laborable := pred(sabado) porque en sí el rango asignado a laborable va de lunes a viernes (sabado no pertenece al rango) , ¿es válido ejecutar pred o succ a un identificador que no pertenezca al rango? O sea pred(sabado) --> 4 que sí pertenece a laborable (ya que 4 es la codificación interna de viernes) pero no sé si esas funciones son sólo válidas dentro de identificadores que pertenezcan al rango establecido o pueden ser usadas para cualquier identificador dentro del enumerado
En respuesta a Alexis Sokorov Vargas

Re: Practico 10 ejercicio 4, pregunta.

de Guillermo Rey Martusciello -

Buenas Alexis, si, es completamente valido. Esto es porque pred de sabado te va a dar viernes que esta dentro del rango como comentas. pred y succ simplemente son funciones que te dan el predecesor y el sucesor, a pascal en esa asignacion no le importa que estes haciendo pred(sabado), solo le importa que el resultado de pred(sabado) (o sea, viernes) este dentro del rango de la varable, cosa que esta.

Saludos,

Guillermo