WikiDer > Probe (Informatik)

Repetitie (informatica)

EIN Probe im Sinne der Informatik, meist gehen (aussprechen Lupe) und manchmal Schleife heißt, ist eine Konstruktion in a Programmiersprache mit welcher oder mehreren Aussagen wiederholt durchgeführt werden.

Probenaussagen

Fast alles zwingende Programmiersprachen haben mindestens eine Art von Probenstruktur. Eine solche Konstruktion hat die folgenden Komponenten:

  • die Schlüsselwörter oder Zeichen der Konstruktion selbst
  • (fast immer:) Der Quellcode soll wiederholt ausgeführt werden
  • (normalerweise:) die Bedingung, unter der die Wiederholung fortgesetzt werden muss
  • (manchmal:) die Anzahl der Wiederholungen

Bedingter Ausdruck

Jede Wiederholung kann sich natürlich endlos wiederholen. Die meisten nützlichen Proben in Computer ProgrammSie enden jedoch in endlicher Zeit.

Um anzuzeigen, wann eine Probe enden soll oder nicht, haben repetitive Konstruktionen normalerweise eine Art bedingter Ausdruck. Ein solcher Ausdruck ist eine Anweisung im Sinne der spezifischen Programmiersprache, die zu einem Wert von evaluate ausgewertet wird Sammlung. Dieses Set ist das Set der Wahrheitsbewertungen von George Boolea.

Die Semantik der meisten Iterationen besteht darin, dass der bedingte Ausdruck als wahr oder falsch ausgewertet wird. Je nach Wert, der sich aus dieser Auswertung ergibt, kann die Probe noch einen Schritt weitergehen oder auch nicht.

Arten von Probenaufbauten

Häufige Arten von Rezidiven sind:

während

Generelle Form:

  während V do S end

aber dazu gibt es einige Variationen.

Die Semantik dieser Konstruktion ist wie folgt: Sie wird ausgeführt von V (eine Bedingung), und nur wenn die Bedingung gilt (wahr ergibt) so (eine Reihe von Anweisungen und Konstrukten) und wiederholen, bis V gilt nicht mehr.

Einige Beispiele:

WHILE < 5 DO j :=i; ich := 1 OD # Algol 68 #
während(ja<5)tunloslegenja :=ich;ich :=1Ende// Pascal
während[ ich < 5];tunja=`ausdrücken "$y"1;ich=`ausdrücken "$i"1`;getan# Bourne-Schale
während(ja<5){ja =ich;ich}/* C, C, C#, Java, JavaScript, ... */
während($y<5){$y =ich;$i}/* Perl, PHP */
währendja<5:ja=jaich:ich=ich1:Endewährend--VisuellBasic.GERADE

Im Allgemeinen ist die währendKonstruieren Sie eine Anweisung, deren Ende nicht garantiert ist. Normalerweise testen V die Bedingung, ohne ihre Gültigkeit zu beeinträchtigen, während der Ausführung so wirkt sich auf die Gültigkeit aus. Die wiederholte Ausführung von S soll dann letztendlich sicherstellen, dass B einmal die Bewertung falsch bekommt. Geschieht dies nicht, gibt das Programm a Endlosschleife.

Aber hiervon wird oft abgewichen:

  • jetzt sofort Unterbrechung- oder gehe zu-Anweisung in so kann eine Schleife sofort verlassen werden; daher kann V fehlt, z.
tun{ja =ich;ich;wenn(ja<5)Unterbrechung;}/* K */
  • V kann den Zustand selbst beeinflussen; daher auch möglich so fehlt, z.
während((ja =ich)<5);/* K */

Eine weitere Variante davon mit hauptsächlich theoretischer Bedeutung ist die Do-Konstruktion in Bewachte Befehlssprache. Diese Konstruktion ermöglicht eine Wahl zwischen auszuführenden Blöcken. Gibt es mehrere Bedingungsausdrücke, die als wahr ausgewertet werden, wird ein Block nicht deterministisch aus allen Möglichkeiten ausgewählt. Die Probe endet, wenn es mehr bedingten Ausdruck gibt wahr wertet aus. Das Formular ist wie folgt:

  mach B0 -> S0 [] B1 -> S1 [] ... [] Bn -> Sn od

wiederholen

Eine weitere bekannte Form der Wiederholung ist die Rapportkonstruktion. Dies ist ähnlich wie bei while, ist aber genau umgekehrt. Der Anweisungsblock wird ausgeführt bis um der bedingte Ausdruck zu wahr bewertet statt so lange.

wiederholensobis umV

Die Unterschiede mit während sind so:

  • der Wert von V wird umgekehrt verwendet;
  • so wird schon einmal ausgeführt V wird zum ersten Mal berechnet.

Beispiele:

wiederholenja :=ich;ich :=1bis umja>=5// Pascal
tun{ja =ich;ich}während(ja<5)/* K, ... */

Für und für jeden

Eine letzte bekannte Probenreihe sind die for-like-Proben. Diese Proben sind besonders, weil sie oft keine unendlichen Proben zulassen (obwohl es Sprachen gibt, in denen Sie können, wie z Java).

Der bedingte Ausdruck ist ebenfalls anders und gibt oft eine Ober- und Untergrenze für eine Art von Zähler an. Dieser Ausdruck sollte gelesen werden als "Ist Zähler X zwischen den Werten A und B?" In vielen Sprachen ist die untere Grenze ein fester Wert, beispielsweise 0. Die meisten Sprachen lassen den Zähler automatisch anpassen, sodass die Wiederholung immer endlich ist. Bei einigen Sprachen kann auch der Schritt angegeben werden, um den der Zähler seinen Wert erhöht.

 für (Zähler = von unten nach oben) S wiederholen

Eine andere Verwendung von zum kann auf Objekte oder Variablen mit endlich vielen Elementen angewendet werden, z.B. a Array. Jede Iteration (Anwendung der Operation) wird dann auf das nächste Element angewendet.

 foreach (Element in Variable) do S

Axiom der Probe

Innerhalb der Hoare Logik Die Semantik von Proben und Axiome, aus denen auf die Korrektheit von Proben geschlossen werden kann, wurde ausführlich untersucht.

Logisch gesehen ist eine Probe gar nicht so kompliziert. Grundsätzlich ist eine Probe richtig, wenn der interne Aussageblock stimmt. Das letzte Axiom der Probe kann sogar begründet werden.

Jede Probe hat eine Voraussetzung, wie alle Aussagen:

Eine Probe kann zu einer Wiederholung der Probe führen – dies geschieht, wenn Bedingung B als wahr ausgewertet wird. Eine notwendige Bedingung für die Korrektheit der Wiederholung ist also, dass wenn S ausgeführt wird, dies zu einer Nachbedingung führt, die mindestens so stark ist wie P. P ist nämlich der logische Anfangszustand des nächsten Schlags der Wiederholung.

Außerdem kann die Probe enden – der nächste Schlag wird nicht mehr ausgeführt. Damit dies richtig ist, muss sich die Probennachbedingung aus der Vorbedingung und der Tatsache ergeben, dass der bedingte Ausdruck nicht zu führt wahr wertet aus.

Daraus "folgt" das Axiom der Probe:

Dieses allgemeine Schema kann für die vollständige do-Konstruktion mit mehreren bedingten Ausdrücken erweitert werden.

Rolle der Probe in der Informatik computer

Probe ist eine wesentliche Konstruktion in der Informatik. Eine Wiederholung, die unendlich sein kann, ist eine absolute Notwendigkeit für jeden, universellen, Programmiersprache. Dies folgt direkt aus dem Turing Maschine Berechnungsmodell. Jede Berechnung ist eine (möglicherweise unendliche) Wiederholung von Schritten. Diese Wiederholung kann in einer Sprache ohne Wiederholung nicht simuliert werden. Jeder Schritt ist eine Auswahl aus einer endlichen Anzahl von Möglichkeiten, woraus folgt, dass die Auswahl ist genauso wichtig wie die Probe.

Die Turing-Maschine entspricht voll und ganz der Lambda-Kalkül, die auf basiert Rekursion und nicht bei der Probe. Es ist daher nicht verwunderlich, dass sich Rekursion und Probe wechselseitig umsetzen können und grundsätzlich miteinander verbundene Konzepte sind.

Siehe auch