Definición de “estado”

13

¿Cuál es una buena manera de definir "estado", como en la variable de estado o la máquina de estados, a un programador nuevo (anteriormente no)? ¿Cuáles son algunas buenas maneras de explicar por qué este concepto es útil para escribir software? ¿El concepto de estado se enseña explícitamente en los cursos o libros de programación de inicio comúnmente?

    
pregunta hotpaw2 25.05.2012 - 03:58

4 respuestas

5

se necesita "estado" cuando necesitas recordar algo. Las funciones (no "métodos" o lo que sea) idealmente solo dependen de sus entradas. Si hace una pregunta donde la respuesta puede cambiar con el tiempo, incluso si las entradas son las mismas, necesita algo para recordar esa diferencia en la respuesta, ¿correcto? De lo contrario, no puede dar una respuesta diferente porque ningún otro factor ha cambiado (supongamos que la respuesta no depende directamente del tiempo).

Esa "cosa / información" que necesitas recordar se llama "estado".

(no se requiere que este "estado" cambie con el tiempo, es básicamente una forma de decir "recordar / saber algo")

    
respondido por el phant0m 25.05.2012 - 11:16
7

De Wikipedia :

  

Estado comúnmente se refiere a la condición actual de un sistema o entidad ...

Eso es más o menos lo que significa en un contexto informático: los datos que definen la condición de algún objeto o sistema.

El significado de 'estado' no es específico de la programación. Hay ejemplos de "estado" literalmente en todas partes. La televisión está apagada. El cafe 'esta caliente. Las zapatillas son a) azules; b) maloliente; c) No se guardan; d) bastante desgastado. 'estado' en un sentido de programación es lo mismo que 'estado' en un sentido de no programación, excepto que lo aplicamos a los objetos con los que tratamos: variables, objetos, hilos, bases de datos, sistemas de archivos, etc. Si tiene Para explicarlo, explíquelo en términos que le resulten familiares: no es necesario convertirlo en un concepto técnico y extraño.

Un reloj es un buen ejemplo de un sistema simple que tiene algún estado: un reloj puede estar funcionando o no funcionar, e indica una hora que puede corresponder o no a la hora real del día. Es bastante fácil ver cómo esas cosas son como variables y cómo cambiar el estado del reloj podría afectar otras cosas.

Compare eso con algo sin estado, como una declaración: "La puerta es roja". La declaración en sí no tiene estado. Puede o no puede ser cierto que la puerta es roja, pero la declaración en sí no contiene ningún estado. Pintar la puerta puede cambiar la verdad de la afirmación, pero la afirmación en sí nunca cambia. De manera similar, un número como 42 no tiene ningún estado: 42 es 42 y no hay nada que puedas cambiar al respecto.

Las variables tienen un estado, los valores no.

    
respondido por el Caleb 25.05.2012 - 04:37
1

Estado es información que tu programa manipula para realizar alguna tarea. Es un dato o información que se cambia o manipula a lo largo del tiempo de ejecución de un programa. El "estado" de un programa en un momento dado se refiere a una instantánea de todos los datos que el programa está mirando o analizando para llegar al siguiente paso en su ejecución.

Mi universidad comenzó con Scheme, así que comenzamos a programar con un modelo sin estado. Luego cambiamos a C y fuimos muy explícitos sobre qué estado es, por qué es útil y por qué hace las cosas potencialmente muy complicadas. Así que algunas universidades ciertamente hablan sobre el estado, pero no necesariamente todas.

    
respondido por el Oleksi 25.05.2012 - 04:44
1

Puede usar la analogía de un semáforo que puede estar en uno de tres estados: [VERDE], [AMARILLO] o [ROJO]. Solo debe estar en un estado a la vez. El semáforo es la máquina de estado real que se está modelando. Normalmente pasará su estado de [VERDE a AMARILLO], luego [AMARILLO a ROJO], luego [ROJO a VERDE].

Una transición de estado alternativa (que está vigente en algunos países como el Reino Unido, tiene dos transiciones de [ROJO a AMARILLO, luego AMARILLO a VERDE] en lugar de la transición de [ROJO a VERDE].

    
respondido por el dodgy_coder 25.05.2012 - 06:07

Lea otras preguntas en las etiquetas