<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Imperative_Programmierung</id>
	<title>Imperative Programmierung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Imperative_Programmierung"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Imperative_Programmierung&amp;action=history"/>
	<updated>2026-05-20T10:12:11Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Imperative_Programmierung&amp;diff=39221&amp;oldid=prev</id>
		<title>~2026-18538-81: /* Beispiel */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Imperative_Programmierung&amp;diff=39221&amp;oldid=prev"/>
		<updated>2026-03-25T08:18:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispiel&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Imperative Programmierung&amp;#039;&amp;#039;&amp;#039; ({{laS|&amp;#039;&amp;#039;imperare&amp;#039;&amp;#039;}} ‚anordnen‘, ‚befehlen‘) ist ein [[Programmierparadigma]], nach dem „ein Programm aus einer Folge von [[Anweisung (Programmierung)|Anweisungen]] besteht, die vorgeben, in welcher Reihenfolge was vom [[Computer]] getan werden soll“.&amp;lt;ref name=&amp;quot;GKIT&amp;quot;&amp;gt;Böhm, Jungkunz: &amp;#039;&amp;#039;Grundkurs IT-Berufe&amp;#039;&amp;#039;. Vieweg-Verlag, [http://books.google.de/books?id=tws9IGwds8MC&amp;amp;pg=PA86&amp;amp;lpg=PA86&amp;amp;dq=imperativ+Programmierung+prozedural&amp;amp;source=bl&amp;amp;ots=o5UE0MzcJ7&amp;amp;sig=NxPP9QJkysudSP6zfjv1pQ7tvtY&amp;amp;hl=de&amp;amp;ei=N6rcTsL4L4ar-gbhh5CgAg&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=4&amp;amp;ved=0CC0Q6AEwAzgK#v=onepage&amp;amp;q=imperativ%20Programmierung%20prozedural&amp;amp;f=false books.google.de]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die imperative [[Programmierung]] ist das am längsten bekannte Programmierparadigma. Bedingt durch den Sprachumfang früherer Programmiersprachen war diese Vorgehensweise ehemals die klassische Art des Programmierens. Sie liegt dem Entwurf vieler Programmiersprachen zugrunde, zum Beispiel [[ALGOL]], [[BASIC]], [[Fortran]], [[Pascal (Programmiersprache)|Pascal]], [[Ada (Programmiersprache)|Ada]], [[PL/I]], [[Cobol]], [[C (Programmiersprache)|C]] und allen [[Assemblersprache]]n.&amp;lt;ref name=&amp;quot;GKIT&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Abweichende Bezeichnungen:&amp;#039;&amp;#039; In der Literatur wird dieses Entwicklungskonzept zum Teil auch „imperativ/prozedural“, „algorithmisch“&amp;lt;ref name=&amp;quot;MSLIB&amp;quot; /&amp;gt; oder auch „zustandsorientiert“&amp;lt;ref&amp;gt;Goos: &amp;#039;&amp;#039;Vorlesungen über Informatik&amp;#039;&amp;#039;. [http://books.google.co.uk/books?id=-I_rfAOjZiYC&amp;amp;pg=PA1&amp;amp;hl=de&amp;amp;source=gbs_toc_r&amp;amp;cad=3#v=onepage&amp;amp;q&amp;amp;f=false books.google.co.uk]&amp;lt;/ref&amp;gt; genannt. Auch die Bezeichnung „[[prozedurale Programmierung]]“ wird zum Teil synonym verwendet, was jedoch abweichend auch mit „Verwendung von [[Prozedur (Programmierung)|Prozeduren]]“ definiert wird.&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
Bestimmende Merkmale für diese Art des [[Programmierung|Programmierens]] sind:&amp;lt;ref name=&amp;quot;PD&amp;quot;&amp;gt;&amp;#039;&amp;#039;Java and Object-Oriented Programming Paradigm&amp;#039;&amp;#039;. [http://books.google.com/books?id=wxTajapmFyMC&amp;amp;pg=PA6&amp;amp;dq=procedural+programming+paradigm&amp;amp;hl=de&amp;amp;ei=esXOTpCGBIK3hAeMqPHBDQ&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=1&amp;amp;ved=0CC8Q6AEwAA#v=onepage&amp;amp;q=procedural%20programming%20paradigm&amp;amp;f=false books.google.com]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;PPM&amp;quot;&amp;gt;&amp;#039;&amp;#039;Programming Paradigms and Methodology&amp;#039;&amp;#039;. [http://books.google.com/books?id=gvm9TPE96t4C&amp;amp;pg=PA170&amp;amp;dq=procedural+programming+paradigm&amp;amp;hl=de&amp;amp;ei=esXOTpCGBIK3hAeMqPHBDQ&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=10&amp;amp;ved=0CGEQ6AEwCQ#v=onepage&amp;amp;q=procedural%20programming%20paradigm&amp;amp;f=false books.google.com]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Im [[Quellcode]] wird festgelegt, was in welcher &amp;#039;&amp;#039;Reihenfolge&amp;#039;&amp;#039; und wie zu tun ist: „First do this and next do that“,&amp;lt;ref name=&amp;quot;PD&amp;quot; /&amp;gt; schrittweises ‚Fortschreiten‘ der Befehle; „viewed as sequence of things to be done“&amp;lt;ref name=&amp;quot;PPM&amp;quot; /&amp;gt; (dargestellt als Folge von Anweisungen).&lt;br /&gt;
* Zur Steuerung der Befehlsausführung verwendet der [[Softwareentwickler|Entwickler]] &amp;#039;&amp;#039;[[Kontrollstruktur]]en&amp;#039;&amp;#039;, z.&amp;amp;nbsp;B. Sequenz, [[Schleife (Programmierung)|Schleife]], [[bedingte Verzweigung]].&lt;br /&gt;
&lt;br /&gt;
Das dem imperativen [[Programmierparadigma|Paradigma]] zugrundeliegende abstrakte Ausführungsmodell ist eng angelehnt an die Ausführung von [[Maschinencode]] auf Computern, die nach der [[Von-Neumann-Architektur]] implementiert sind. Es existieren beispielsweise bedingte und unbedingte Sprunganweisungen. Der Status des Rechners bzw. des Programms ergibt sich aus dem Inhalt von Datenfeldern im [[Arbeitsspeicher]] und dem Zustand von [[Systemvariable]]n (z.&amp;amp;nbsp;B. [[Register (Computer)|Register]], [[Befehlszähler]]&amp;amp;nbsp;…).&lt;br /&gt;
&lt;br /&gt;
Die Hardware-Implementierung fast aller [[Computer]] ist imperativ. Nahezu die gesamte [[Computerhardware]] ist für die Ausführung von [[Maschinensprache]] ausgelegt, die dem Computer eigen und im imperativen Stil geschrieben ist. Aus dieser einfachen Perspektive wird der Programmstatus durch den Inhalt des Speichers definiert, und die [[Anweisung (Programmierung)|Anweisungen]] sind Anweisungen in der nativen [[Programmiersprache]] des Computers. Übergeordnete imperative Sprachen verwenden Variablen und komplexere Aussagen, folgen jedoch immer noch demselben [[Programmierparadigma|Paradigma]]. Rezepte und Prozess-Checklisten sind zwar keine [[Computerprogramm]]e, aber auch bekannte Konzepte, deren Stil der imperativen [[Programmierung]] ähnelt. Jeder Schritt ist eine Anweisung, und die physische Welt hält den Zustand. Da die Grundideen der imperativen Programmierung sowohl konzeptionell vertraut als auch direkt in der [[Hardware]] enthalten sind, sind die meisten [[Computersprache]]n im imperativen Stil.&lt;br /&gt;
&lt;br /&gt;
Zuweisungen führen im imperativen [[Programmierparadigma|Paradigma]] eine [[Operation (Informatik)|Operation]] für [[Information]]en im Speicher durch und speichern die Ergebnisse zur späteren Verwendung im Speicher. Höhere imperative Sprachen ermöglichen darüber hinaus die Auswertung komplexer Ausdrücke, die aus einer Kombination von arithmetischen Operationen und Funktionsauswertungen bestehen können, sowie die Zuordnung des resultierenden Werts zum Speicher. Durch Schleifenanweisungen ([[While-Schleife|While-Schleifen]], [[Do-while-Schleife|Do-while-Schleifen]] und [[For-Schleife|For-Schleifen]]) kann eine Folge von [[Anweisung (Programmierung)|Anweisungen]] mehrmals ausgeführt werden. Schleifen können entweder die Anweisungen ausführen, die sie vordefiniert enthalten, oder sie können sie wiederholt ausführen, bis sich einige Bedingungen ändern. Bedingte Verzweigungsanweisungen ermöglichen die Ausführung einer Folge von Anweisungen nur, wenn eine Bedingung erfüllt ist; andernfalls werden die Anweisungen übersprungen und die Ausführungssequenz wird ab der darauf folgenden Anweisung fortgesetzt. Unbedingte Verzweigungsanweisungen ermöglichen die Übertragung einer Ausführungssequenz auf einen anderen Teil eines [[Computerprogramm|Programms]]. Dazu gehören die [[Sprunganweisung]], Switch und das [[Unterprogramm]], die [[Unterroutine]] oder der Prozeduraufruf, der normalerweise nach dem Aufruf zur nächsten Anweisung zurückkehrt.&lt;br /&gt;
&lt;br /&gt;
Zu Beginn der Entwicklung höherer [[Programmiersprache]]n ermöglichte die Einführung des Blocks die Erstellung von [[Computerprogramm|Programmen]], in denen eine Gruppe von [[Anweisung (Programmierung)|Anweisungen]] und Deklarationen so behandelt werden konnte, als wären sie eine Anweisung. Dies ermöglichte neben der Einführung von [[Unterprogramm]]en, komplexe Strukturen durch hierarchische Zerlegung in einfachere prozedurale Strukturen auszudrücken.&lt;br /&gt;
&lt;br /&gt;
Viele imperative [[Programmiersprache]]n sind Abstraktionen der Assemblersprache.&amp;lt;ref&amp;gt;{{cite book|author=Bruce Eckel|title=Thinking in Java|url=https://books.google.com/?id=bQVvAQAAQBAJ&amp;amp;pg=PA24&amp;amp;lpg=PA24&amp;amp;dq=imperative#v=onepage&amp;amp;q=imperative&amp;amp;f=false|publisher=[[Pearson Education]]|year=2006|isbn=978-0-13-187248-6|page=24 |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abgrenzung ==&lt;br /&gt;
Als &amp;#039;&amp;#039;Gegenentwurf&amp;#039;&amp;#039; zur imperativen [[Programmierung]] gilt das Paradigma der [[Deklarative Programmierung|deklarativen Programmierung]]. Bei der deklarativen Programmierung wird vom [[Softwareentwickler|Entwickler]] im [[Quellcode]] definiert, &amp;#039;&amp;#039;was&amp;#039;&amp;#039; das [[Computerprogramm|Programm]] machen soll, aber nicht &amp;#039;&amp;#039;wie.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
„Die meisten […] [[Programmiersprache]]n, darunter auch &amp;#039;&amp;#039;[[Objektorientierte Programmierung|objektorientierte]] Sprachen&amp;#039;&amp;#039; wie [[C-Sharp|C#]], [[Visual Basic .NET]], [[C++]] und [[Java (Programmiersprache)|Java]], unterstützen in erster Linie [auch] die imperative […] Programmierung.“&amp;lt;ref name=&amp;quot;MSLIB&amp;quot;&amp;gt;[http://msdn.microsoft.com/de-de/library/bb669144.aspx Microsoft Library] MSDN&amp;lt;/ref&amp;gt; Das Prinzip der [[Datenkapselung (Programmierung)|Datenkapselung]] &amp;#039;&amp;#039;(information hiding)&amp;#039;&amp;#039; wird in imperativen Sprachen oft dadurch umgesetzt, dass Prozeduren, die eine logische Einheit bilden, in [[Modul (Software)|Modulen]] oder Paketen zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Nicht maßgeblich&amp;#039;&amp;#039; für die Einstufung als ‚imperativ‘ ist die Tatsache, dass bei der &amp;#039;&amp;#039;physischen Ausführung&amp;#039;&amp;#039; von [[Computerprogramm]]en im [[Prozessor]] die einzelnen Befehle des [[Maschinencode]]s „Befehl für Befehl“ ausgeführt werden, denn dies ist unabhängig vom praktizierten [[Programmierparadigma|Paradigma]] immer so. Vielmehr setzt ‚imperativ‘ voraus, dass „ein &amp;#039;&amp;#039;[[Softwareentwickler|Entwickler]]&amp;#039;&amp;#039; [[Code]] erstellt, der detailliert die Schritte beschreibt, die der [[Computer]] zur Erfüllung der Aufgabe ausführen muss“.&amp;lt;ref name=&amp;quot;MSLIB&amp;quot; /&amp;gt; Deklarativ erstellte [[Anweisung (Programmierung)|Anweisungen]] etwa werden von übergeordneten oder eingebundenen [[Systemkomponente]]n –&amp;amp;nbsp;und nur ‚basierend‘ auf dem [[Quellcode]]&amp;amp;nbsp;– in ausführbare [[Maschinenbefehl]]e umgeformt. Beispiel ‚[[SQL]]-Kommandos‘: Komponenten der [[Systemsoftware]] des [[Datenbankmanagementsystem]]s interpretieren sie, erzeugen daraus Maschinencode und lassen diesen ausführen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Ausgabe der [[Quadratzahl]]en ungerader Zahlen von 3 bis 11.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Imperative Programmierung&amp;#039;&amp;#039;&amp;#039; (Beispiel in der [[Programmiersprache]] [[C (Programmiersprache)|C]]):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (int i = 3; i &amp;lt; 12; i += 2)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;%d\n&amp;quot;, i * i);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Funktionale Programmierung&amp;#039;&amp;#039;&amp;#039; (Beispiel in der [[Programmiersprache]] [[Haskell (Programmiersprache)|Haskell]]):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
mapM_ print [ i^2 | i &amp;lt;- [3,5..11] ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Terrence W. Pratt, Marvin V. Zelkowitz&lt;br /&gt;
   |Titel=Programming Languages: Design and Implementation&lt;br /&gt;
   |Auflage=4.&lt;br /&gt;
   |Verlag=Prentice Hall&lt;br /&gt;
   |Jahr=2000&lt;br /&gt;
   |ISBN=978-0-13-027678-0}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Robert W. Sebesta&lt;br /&gt;
   |Titel=Concepts of Programming Languages&lt;br /&gt;
   |Auflage=9.&lt;br /&gt;
   |Verlag=Addison-Wesley&lt;br /&gt;
   |Jahr=2009&lt;br /&gt;
   |ISBN=978-0-13-607347-5}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierparadigma]]&lt;/div&gt;</summary>
		<author><name>~2026-18538-81</name></author>
	</entry>
</feed>