Em programação imperativa considera-se que as estruturas de dados (números, texto, vetores, matrizes, etc.) existem em um determinado estado, e à medida que um programa interage com o seu ambiente, seja através de uma entrada ou através da interação com o usuário, esses objetos vão mudando de estado.