Imperative Programmierung ist ein Programmierparadigma. Sie versteht ein Programm als Folge von Befehlen, die der Rechner in definierter Reihenfolge abarbeitet. Imperative Programmiersprachen orientieren sich stark an der klassischen Von-Neumann-Architektur für Rechner, bei der ein Rechner die Befehle eines Programms ebenfalls nacheinander abarbeitet. Auf die Reihenfolge der Befehlsabarbeitung kann bei einem von-Neumann-Rechner durch Sprungbefehle Einfluss genommen werden. In imperativen Programmiersprachen wird dies durch verschiedene typische Kontrollflusselemente, wie bedingte Verzweigungen und Schleifen, abgebildet. Charakteristisch für imperative Programmiersprachen ist darüber hinaus das Konzept der Variablen, die für die Speicherung von Zwischenergebnissen verwendet werden können.
Der Begriff der prozeduralen Programmierung wird oft synonym gebraucht, setzt aber die Verwendung von Prozeduren voraus, was nicht für jede imperative Programmiersprache gelten muss. Beispielsweise kennen ältere BASIC-Varianten keine Prozeduren.
Das Prinzip des Information Hiding (Datenkapselung) wird in imperativen Sprachen oft dadurch umgesetzt, dass Prozeduren, die eine logische Einheit bilden, in Modulen oder Paketen zusammengefasst werden.
Pascal und C sind typische Beispiele für imperative Programmiersprachen.
Imperative Programmiersprachen haben sich gegenüber den deklarativen historisch durchgesetzt. Jedoch stieg bereits in den frühen 1980er Jahren das Interesse an der objektorientierten Programmierung. Die meisten Sprachen, die dieses Programmierparadigma unterstützen, sind im Grunde imperativ, bieten aber zusätzliche Sprachmittel, die mehr oder weniger konsequent die Objektorientierung unterstützen.