heim - Internet
Verzweigungsstruktur. Bedingter Operator

Es kommt vor, dass Programme eine Verzweigung organisieren müssen. In diesem Fall erfolgt die Lösung eines Problems auf der Grundlage der Erfüllung oder Nichterfüllung einer Bedingung.

In der Pascal-Sprache kann die Auswahl einer Aktion abhängig von einer Bedingung mithilfe der Konstruktion implementiert werden

wenn... dann... sonst... wenn, dann...

2. Wie lautet die vollständige Form des bedingten Sprungoperators in Pascal?

Vollständige Form des bedingten Sprungoperators Wenn :

Wenn Zustand Dann Operator1 anders Operator2;

Die Aktion des Operators ist wie folgt: Zunächst wird der Wert des Ausdrucks berechnet Zustand . Wenn es wahr ist (gleich TRUE), wird die Anweisung ausgeführt, die auf das Wort folgt Dann (Operator1). Wenn der Wert falsch (FALSE) ist, wird die Anweisung ausgeführt, die auf das Wort folgt anders(Operator2 ).

Betreiber Operator1 Und Operator2 kann zusammengesetzt sein, also mehrere Codezeilen enthalten. Solche Operatoren werden in Operatorklammern gesetzt beginnen...ende. Dieser Bedarf entsteht, wenn nach reservierten Wörtern gesucht wird Dann oder anders Sie müssen mehrere Operatoren angeben.

In diesem Fall kann die allgemeine Form des bedingten Sprungoperators beispielsweise die folgende Form haben:

Wenn Zustand Dann beginnen // mehrere Betreiber ... Ende anders beginnen // mehrere Betreiber ... Ende ;

3. Was ist die Kurzform des bedingten Sprungoperators?

Die Kurzform des bedingten Sprungoperators enthält keinen Block anders und hat die Form:

Wenn Zustand Dann Operator;

In diesem Fall funktioniert der Operator wie folgt. Zunächst wird der Wert des logischen (booleschen) Ausdrucks berechnet Zustand . Wenn das Ergebnis eines logischen Ausdrucks Zustand wahr (gleich WAHR), dann wird der Operator ausgeführt, der auf das Wort folgt Dann. Wenn das Ergebnis FALSE ist, wird die Anweisung ausgeführt, die der Anweisung folgt Wenn(in der Erklärung wenn, dann es wird nichts gemacht).

Wenn bei Erfüllung einer Bedingung mehrere Operatoren ausgeführt werden müssen, kann die allgemeine Form des bedingten Sprungoperators wie folgt aussehen:

Wenn Zustand Dann beginnen // zwei oder mehr Betreiber ... Ende ;

4. Beispiele für die Verwendung des bedingten Sprungoperators, der eine vollständige Darstellungsform hat.

Beispiel 1. Fragment eines Programms zum Ermitteln des Maximalwerts zwischen zwei reellen Zahlen.

var a,b:real; // a, b – Variablen, für die das Maximum gesucht wird max:real; // maximal ... beginnen ... // a, b - sind angegeben Wenn a>b Dann max:=a anders max:=b; ... Ende ;

Beispiel 2.

Ein Programmcodefragment, das dieses Problem löst:

... var x,f:real; beginnen ... // x - angegeben Wenn -5 Dann f:= x*x+8 anders f:= -x*x*x+2 ; // in der Variablen f - das Ergebnis ... Ende ;

5. Beispiele für die Verwendung des bedingten Sprungoperators, der eine verkürzte Darstellungsform hat.

Beispiel 1. Codeausschnitt, der den Mindestwert zwischen zwei reellen Zahlen ermittelt X Und j .

... var min:real; ... beginnen ... // x, y - gegeben min:= x; Wenn Mindest Dann min:= y; ... Ende ;

Beispiel 2. Berechnen Sie den Wert einer Funktion gemäß einer Bedingung. Angenommen, Sie müssen den Wert einer Funktion ermitteln:

var x, f:real; beginnen ... // x - angegeben Wenn X<-6 Dann f:=3 *x*x-x; Wenn (-6 <=x) Und(X<=5 ) Dann f:=sqrt(7 -x); Wenn x>5 Dann f:=8 *x-3 ; ... Ende ;

Diese Lektion befasst sich mit dem Bedingungsoperator in Pascal ( Wenn). Erklärt, wie mehrere Bedingungen in einem Konstrukt verwendet werden ( UND Und ODER). Berücksichtigt werden Beispiele für die Zusammenarbeit mit einem Bediener

Wir erinnern Sie daran, dass diese Website nicht den Anspruch erhebt, eine vollständige Darstellung der Informationen zu diesem Thema bereitzustellen. Der Zweck des Portals besteht darin, die Möglichkeit zu bieten, Material anhand vorgefertigter gelöster Beispiele zum Thema „Pascal-Programmiersprache“ zu erlernen und praktische Aufgaben zur Vertiefung des Materials zu stellen. Die auf der Website vorgestellten Pascal-Aufgaben sind mit zunehmender Komplexität der Reihe nach angeordnet. Die Website kann von Lehrern und Dozenten als zusätzliche visuelle Hilfe genutzt werden.

Vor der Betrachtung dieses Themas wurden hauptsächlich lineare Algorithmen in Pascal verwendet, die typisch für sehr einfache Probleme sind, bei denen Aktionen (Operatoren) sequentiell nacheinander ausgeführt werden. Komplexere Algorithmen beinhalten die Verwendung eines Verzweigungskonstrukts.

Blockdiagramm des bedingten Operators:

Die bedingte Anweisung in Pascal hat die folgende Syntax:

Kurzfassung:

Wenn Bedingung, dann Anweisung;

Vollversion:

if Bedingung dann Anweisung else Anweisung;

Der bedingte Operator in Pascal – if – dient dazu, den Fortschritt einer Aufgabe so zu organisieren, dass sich die Reihenfolge der Ausführung von Operatoren abhängig von einer logischen Bedingung ändert. Eine logische Bedingung kann einen von zwei Werten annehmen: entweder wahr oder falsch bzw. sie kann entweder wahr oder falsch sein.

Zusammengesetzter Operator

Wenn unter einer wahren Bedingung die Ausführung mehrerer Anweisungen erforderlich ist, dann Nach den Regeln der Pascal-Sprache müssen sie in einen Block eingeschlossen werden, beginnend mit dem Funktionswort begin und endend mit dem Funktionswort end . Ein solcher Block wird üblicherweise aufgerufen Bedienerhalterungen, und diese Konstruktion - zusammengesetzter Operator:

Operatorklammern und zusammengesetzter Operator in Pascal:

wenn logischer Ausdruck, dann beginne Anweisung1; Operator2; end else begin Anweisung1; Operator2; Ende;

Die Übersetzung des Bedingungsoperators aus dem Englischen erleichtert das Verständnis seiner Verwendung:

WENN DANN ANDERS
WENN DAS ANSONSTEN


Die Bedingung (in einem logischen Ausdruck) verwendet relationale Operatoren.
Betrachten Sie Pascals Liste der Vergleichsoperatoren:

  • mehr >
  • weniger
  • größer oder gleich in Pascal >=
  • kleiner oder gleich in Pascal
  • Vergleich in Pascal =
  • in Pascal nicht gleich

Beispiel: Finden Sie die größte von zwei Zahlen

Variante 1 Option 2


Verstehen Sie die Arbeit im Detail Sie können den Bedingungsoperator in Pascal verwenden, indem Sie sich das Video-Tutorial ansehen:

Beispiel: Berechnen Sie den Wert der Variablen y mithilfe eines von zwei Zweigen

Lösung anzeigen:

var x,y:real; begin writeln("enter x"); lesen(x); wenn x>0 dann y:=ln(x) sonst y:=exp(x); writeln ("y=", y:6:2) (die resultierende Zahl nimmt 6 Stellen ein und hat 2 Dezimalstellen) end.

Beachten Sie, wie y in diesem Beispiel ausgegeben wird. Beim Ableiten von Typvariablen in Pascal können Sie die sogenannten verwenden formatierte Ausgabe, oder Notation mit zwei Doppelpunkten:
y:6:2
- Die Zahl nach dem ersten Doppelpunkt (6) gibt an, wie viele Zeichen die Zahl bei der Anzeige auf dem Bildschirm einnehmen wird
- Die Zahl nach dem zweiten Doppelpunkt (2) gibt an, wie viele Dezimalstellen der reellen Zahl angezeigt werden

Wenn Sie also eine solche Notation in Pascal verwenden, können Sie praktisch auf Hundertstel, Tausendstel usw. runden.

Aufgabe 0. Berechnen Sie den Wert der Variablen y mithilfe eines von zwei Zweigen:

Aufgabe 1. Zwei Zahlen werden in den Computer eingegeben. Wenn der erste größer als der zweite ist, berechnen Sie deren Summe, andernfalls das Produkt. Danach sollte der Computer das Ergebnis und den Text PROBLEM SOLVED ausdrucken

Aufgabe 2. Dem Drachen wachsen jedes Jahr drei Köpfe, aber wenn er 100 Jahre alt wird, nur noch zwei. Wie viele Köpfe und Augen hat ein Drache? N Jahre?

Logische Operationen in Pascal (im logischen Ausdruck)

Wenn Sie in Pascal eine doppelte Bedingung verwenden müssen, benötigen Sie logische Operationen.

  • Logische Operation UND (Und) steht zwischen zwei Bedingungen und besagt, dass beide Bedingungen gleichzeitig erfüllt sein müssen (wahr sein müssen). Die logische Bedeutung der Operation ist „Konjunktion“.
  • Zwischen zwei Bedingungen platziert, das Zeichen ODER (OR) besagt, dass es ausreicht, wenn mindestens eine davon erfüllt ist (eine der beiden Bedingungen ist wahr). Die logische Bedeutung der Operation ist „Disjunktion“.
  • In Pascal XOR - ein Zeichen einer logischen Operation, die die Bedeutung „strenge Disjunktion“ hat und darauf hinweist, dass eine der beiden Bedingungen erfüllt (wahr) und die andere nicht erfüllt (falsch) sein muss.
  • Logische Operation NICHT vor einem logischen Ausdruck oder einer Variablen bedeutet es „Negation“ oder „Inversion“ und zeigt an, dass, wenn eine bestimmte Variable oder ein gegebener Ausdruck wahr ist, ihre Negation falsch ist und umgekehrt.

Wichtig: Jede einfache Bedingung muss in Klammern eingeschlossen werden.

Beispiel: Schauen wir uns Beispiele für logische Operationen in logischen Ausdrücken in Pascal an

1 2 3 4 5 6 7 8 var n: Ganzzahl ; Beginn n: = 6 ; wenn (n>5 ) und (n<10 ) then writeln ("истина" ) ; if (n>7) oder (n<10 ) then writeln ("истина" ) ; if (n>7 )xor (n<10 ) then writeln ("истина" ) ; if not (n>7) then writeln("true"); Ende.

var n:integer; begin n:=6; wenn (n>5) und (n<10) then writeln("истина"); if (n>7) oder (n<10) then writeln("истина"); if (n>7)xor(n<10) then writeln("истина"); if not(n>7) then writeln("true"); Ende.

Beispiel: Das Unternehmen rekrutiert Mitarbeiter im Alter von 25 bis einschließlich 40 Jahren. Geben Sie das Alter der Person ein und ermitteln Sie, ob sie für dieses Unternehmen geeignet ist (Antwort „geeignet“ oder „nicht geeignet“ anzeigen).
Besonderheit: Wir müssen prüfen, ob zwei Bedingungen gleichzeitig erfüllt sind.

Ein Operator ist ein unteilbares Element eines Programms, das die Ausführung bestimmter algorithmischer Aktionen ermöglicht. Der Unterschied zwischen einem Operator und anderen Elementen besteht darin, dass er immer eine Aktion impliziert. In Pascal bestehen Operatoren aus Funktionswörtern. In einem Programm verwendete Operatoren werden voneinander und von anderen Programmelementen durch das Symbol (;) getrennt. Alle Pascal-Operatoren lässt sich grob einteilen zwei Gruppen:

  1. einfach;
  2. strukturiert.

Einfache Operatoren sind Operatoren, die keine anderen Operatoren enthalten. Diese beinhalten:

  • Zuweisungsoperator (:=);
  • Verfahrenserklärung;
  • bedingungsloser Sprungoperator (GOTO).

Strukturierte Aussagen sind Operatoren, die andere Operatoren enthalten. Diese beinhalten:

  • zusammengesetzter Operator;
  • bedingte Operatoren (IF, CASE);
  • Schleifenoperatoren (FOR, WHILE, REPEAT);
  • Join-Operator (WITH).

Einfache Operatoren

Verfahrensbetreiber

Verfahrensbetreiber dient zum Aufruf einer Prozedur.

Format: [Prozedurname] (Liste der Aufrufparameter);

Eine Prozeduranweisung besteht aus einem Prozedurbezeichner, direkt gefolgt von einer Liste von Aufrufparametern in Klammern. Pascal hat Prozeduren ohne Parameter. In diesem Fall liegt beim Aufruf keine Parameterliste vor. Die Ausführung einer Prozeduranweisung führt zur Aktivierung der in ihrem Hauptteil beschriebenen Aktionen. In Pascal gibt es zwei Arten von Prozeduren:

  • Standardwörter, die in der Sprache selbst beschrieben werden und Teil der Sprache sind;
  • Benutzerprozeduren, die vom Benutzer erstellt werden.

Um Standardprozeduren aufzurufen, müssen Sie eine Verbindung im USES-Abschnitt des Modulnamens (Bibliotheksnamens) herstellen, in dem diese Prozedur beschrieben wird. Eine Reihe von Prozeduren, die sich im Modul SYSTEM befinden, werden immer automatisch mit dem Programm verbunden und ihre Verbindung im Abschnitt USES ist nicht erforderlich. Standard-Pascal-Prozeduren sind READ, WRITE, REWRITE, CLOSE, RESET.

READ ([file_variable], [input_list])

READ(x,y)

Benutzerprozeduren (nicht standardmäßig) müssen vor ihrer Verwendung im Programm erstellt werden und befinden sich entweder im Beschreibungsabschnitt des Programms selbst oder in separaten Programmeinheiten des Moduls. Wenn sich die Prozedur in einem Modul befindet, muss der Name dieses Moduls im USES-Antrag erwähnt werden.

Unbedingter GOTO-Operator

Format: GOTO [Label];

GOTO ist ein reserviertes Wort in Pascal. [label] ist ein beliebiger Bezeichner, der es Ihnen ermöglicht, eine bestimmte Programmanweisung zu markieren und später darauf zu verweisen. In Pascal ist es möglich, vorzeichenlose Ganzzahlen als Beschriftungen zu verwenden. Die Beschriftung wird vor dem markierten Operator (:) platziert und von diesem getrennt. Eine Aussage kann mit mehreren Labels gekennzeichnet werden. Sie sind auch voneinander getrennt (:). Bevor ein Label im Anweisungsabschnitt verwendet werden kann, muss es im LABEL-Abschnitt (Beschreibungsabschnitt) beschrieben werden.

Die GOTO-Aktion überträgt die Kontrolle an die entsprechende markierte Anweisung. Bei der Verwendung von Tags müssen Sie die folgenden Regeln beachten:

  • Das Etikett muss im Abschnitt „Beschreibungen“ beschrieben werden und alle Etiketten müssen verwendet werden.
  • Wenn Ganzzahlen als Beschriftungen verwendet werden, werden diese nicht deklariert.

Widerspricht den Prinzipien der strukturierten Programmiertechnologie. Moderne Programmiersprachen enthalten keinen solchen Operator und es besteht keine Notwendigkeit, ihn zu verwenden. Darüber hinaus nutzen moderne Computer das sogenannte Förderverfahren. Wenn in einem Programm ein bedingungsloser Sprungoperator auftritt, unterbricht ein solcher Operator die gesamte Pipeline und zwingt sie dazu, neu erstellt zu werden, was den Rechenprozess erheblich verlangsamt.

Strukturierte Aussagen

IF-Bedingungsanweisungen

Der bedingte Operator wird im Programm verwendet, um die algorithmische Struktur – Verzweigung – zu implementieren. In dieser Struktur kann der Rechenvorgang in eine der möglichen Richtungen fortgesetzt werden. Die Richtungswahl erfolgt in der Regel durch die Prüfung einer Bedingung. Es gibt zwei Arten von Verzweigungsstrukturen: Gabel- und Bypass-Strukturen.

In der Pascal-Sprache ist der bedingte IF-Operator ein Mittel zum Organisieren eines verzweigten Berechnungsprozesses.

Format: IF [boolean_expression] Then [operator_1]; Sonst [operator_2];

IF, Then, Else sind Funktionswörter. [Operator_1], [Operator_2] – gewöhnliche Operationen der Pascal-Sprache. Der Else-Teil ist optional (fehlt möglicherweise).

Die IF-Anweisung funktioniert folgendermaßen: Sie prüft zunächst das Ergebnis eines booleschen Ausdrucks. Wenn das Ergebnis WAHR ist, wird [Anweisung_1] nach dem Funktionswort „Dann“ ausgeführt und [Anweisung_2] wird übersprungen. Wenn das Ergebnis FALSE ist, wird [Anweisung_1] übersprungen und [Anweisung_2] ausgeführt.

Wenn der Else-Teil fehlt, liegt die IF-Anweisung nicht in vollständiger Form vor:

IF [boolescher Ausdruck] Then [Operator];

Wenn das Ergebnis in diesem Fall True (TRUE) ist, wird die [Anweisung] ausgeführt; wenn False (FALSE), wird die Kontrolle an die Anweisung übertragen, die auf die IF-Anweisung folgt.

Es gibt 2 Zahlen A und B. Finden Sie die maximale Zahl.

Zusammengesetzter Operator

Eine zusammengesetzte Anweisung ist eine Folge beliebiger Operationen in einem Programm, eingeschlossen in sogenannte Operatorklammern (Begin-End).

Format: Begin [Operatoren]; Ende;

Zusammengesetzte Anweisungen ermöglichen die Darstellung einer Gruppe von Anweisungen als eine einzelne Anweisung.

CASE-Auswahlanweisung

Entwickelt für die Implementierung mehrerer Zweige. Da der IF-Operator nur zwei Richtungen des Berechnungsprozesses implementieren kann, ist es nicht immer praktisch, ihn zum Implementieren mehrerer Zweige zu verwenden. Die Mehrfachverzweigung wird durch die CASE-Anweisung implementiert.

Format: CASE [select_key] OF

[selection_constant_1]:[operator_1];

[selection_constant_2]:[operator_2];

[selection_constant_N]:[operator_N];

ELSE [Operator];

CASE, OF, ELSE, END – Funktionswörter. [select_key] ist ein Parameter eines der Ordinaltypen. [selection_constants] – Konstanten vom gleichen Typ wie der Auswahlschlüssel, die die Auswahl implementieren. [operator_1(N)] ist ein gewöhnlicher Operator. ELSE fehlt möglicherweise.

Der Auswahloperator funktioniert wie folgt: Bevor der Operator arbeitet, wird der Wert des Auswahlschlüsselparameters bestimmt. Dieser Parameter kann entweder als Variable im Programm oder auf andere Weise ausgedrückt werden. Anschließend wird der Auswahlschlüsselparameter sequentiell mit der Auswahlkonstante verglichen. Wenn der Wert des Auswahlschlüssels mit einer der Auswahlkonstanten übereinstimmt, wird der auf diese Konstante folgende Operator ausgeführt und alle anderen Operatoren werden ignoriert. Wenn der Auswahlschlüssel mit keiner der Konstanten übereinstimmt, wird die auf Else folgende Anweisung ausgeführt. Oft ist Else optional und wenn der Auswahlschlüssel mit keiner der Auswahlkonstanten übereinstimmt und kein Else vorhanden ist, wird die Steuerung an die Anweisung übertragen, die auf die CASE-Anweisung folgt.

Die CASE-Anweisung verfügt nicht über die explizite bedingte Prüfung, die für die IF-Anweisung typisch ist. Gleichzeitig wird die Vergleichsoperation implizit durchgeführt. CASE führt zu Dissonanzen in einem Pascal-Programm, da diese Anweisung mit dem Dienstwort End endet, das kein gepaartes Begin hat.

Erstellen Sie einen Algorithmus und ein Programm für ein Problem, das den Betrieb einer Ampel simuliert. Wenn Sie das Symbol des Anfangsbuchstabens der Ampelfarben eingeben, sollte das Programm eine Meldung über die entsprechende Farbe und Aktionen anzeigen.

Das Programm funktioniert wie folgt: Über die Leseprozedur wird das Buchstabensymbol der Ampelfarbe über die Tastatur eingegeben. Wenn der Buchstabe „z“, der der grünen Farbe entspricht, eingegeben wird, findet der in der Auswahlliste eingegebene Wert in der CASE-Anweisung die Auswahlkonstante „z“ und die Meldung „Grüne Farbe, Bewegung ist erlaubt“ wird angezeigt. Wenn Sie das Symbol der Buchstaben „k“ und „zh“ eingeben, werden ähnliche Meldungen angezeigt. Wenn Sie ein anderes Zeichen eingeben, wird die Meldung „Ampel funktioniert nicht“ angezeigt, da in diesem Fall der Else-Teil der CASE-Anweisung funktioniert.

Schleifenanweisungen

Eine zyklische algorithmische Struktur ist eine Struktur, in der einige Aktionen mehrmals ausgeführt werden. In der Programmierung gibt es zwei Arten von Schleifenstrukturen: die Schleife mit einem Parameter und die iterative Schleife.

In einem Zyklus mit einem Parameter gibt es immer sogenannte Zyklusparameter: X, X n, X k, ∆X. Manchmal wird eine Schleife mit einem Parameter als reguläre Schleife bezeichnet. Ein charakteristisches Merkmal ist, dass die Anzahl der Schleifen und Wiederholungen bestimmt werden kann, bevor die Schleife ausgeführt wird.

In einer iterativen Schleife ist es unmöglich, die Anzahl der Schleifen vor der Ausführung zu bestimmen. Es wird solange ausgeführt, wie die Schleifenfortsetzungsbedingung erfüllt ist.

Die Pascal-Sprache verfügt über drei Operatoren, die zyklische Rechenstrukturen implementieren:

  • Zähloperator FOR. Es soll eine Schleife mit einem Parameter implementieren und kann nicht zur Implementierung einer iterativen Schleife verwendet werden;
  • Schleifenoperator mit WHILE-Vorbedingung;
  • Schleifenoperator mit REPEAT-Nachbedingung.

Die letzten beiden konzentrieren sich auf die Implementierung einer iterativen Schleife, können aber auch zur Implementierung einer Schleife mit einem Parameter verwendet werden.

FOR-Operator

Format: FOR [loop_parameter] := [n_z_p_ts] To [k_z_p_ts] Do [operator];

FOR, To, Do sind Funktionswörter. [cycle_parameter] – Zyklusparameter. [n_z_p_ts] – der Anfangswert des Zyklusparameters. [k_z_p_ts] – Endwert des Zyklusparameters. [Operator] – beliebiger Operator.

Der Schleifenparameter muss eine Ordinalvariable sein. Die Start- und Endwerte des Schleifenparameters müssen vom gleichen Typ sein wie der Schleifenparameter.

Betrachten wir die Arbeit des Operators anhand seines Algorithmus:

Im ersten Schritt nimmt der Wert des Zyklusparameters [n_z_p_ts] an, dann wird überprüft, ob der Zyklusparameter kleiner oder gleich [k_z_p_ts] ist. Diese Bedingung ist die Bedingung für die Fortsetzung der Schleife. Bei Ausführung setzt die Schleife ihre Operation fort und die [Anweisung] wird ausgeführt, woraufhin der Schleifenparameter um eins erhöht (verringert) wird. Anschließend wird mit dem neuen Wert des Schleifenparameters die Bedingung für die Fortsetzung der Schleife überprüft. Ist diese erfüllt, werden die Aktionen wiederholt. Wenn die Bedingung nicht erfüllt ist, wird die Schleife nicht mehr ausgeführt.

Der For-Operator unterscheidet sich erheblich von ähnlichen Operatoren in anderen Programmiersprachen. Die Unterschiede sind wie folgt:

  • Körper des For-Operators. Die Anweisung darf nicht einmal ausgeführt werden, da die Schleifenfortsetzungsbedingung vor dem Schleifenkörper geprüft wird;
  • der Zyklusparameter-Änderungsschritt ist konstant und gleich 1;
  • Der Schleifenkörper in der For-Anweisung wird durch eine Anweisung dargestellt. Wenn die Aktion des Schleifenkörpers mehr als eine einfache Anweisung erfordert, müssen diese Anweisungen mithilfe von Operatorklammern (BEGIN-END) in eine zusammengesetzte Anweisung umgewandelt werden.
  • Ein Schleifenparameter kann nur eine Ordinalvariable sein.

Beispiel für die Verwendung des FOR-Operators: Erstellen Sie eine Tabelle zum Umrechnen von Rubel in Dollar.

WHILE-Anweisung (Schleifenanweisung mit Vorbedingung)

Format: WHILE [Bedingung] Do [Operator];

WHILE, Do – Funktionswörter. [Bedingung] – Ausdruck des logischen Typs. [Operator] – gewöhnlicher Operator.

;

Die While-Anweisung funktioniert wie folgt: Zunächst wird das Ergebnis der logischen Bedingung überprüft. Wenn das Ergebnis wahr ist, wird die Anweisung ausgeführt und kehrt anschließend zur Überprüfung der Bedingung mit dem neuen Wert der Parameter im logischen Ausdruck der Bedingung zurück. Wenn das Ergebnis falsch ist, wird die Schleife beendet.

Wenn Sie mit While arbeiten, müssen Sie auf seine Eigenschaften achten:

  • Die in While verwendeten Bedingungen sind die Schleifenfortsetzungsbedingung.
  • Im Schleifenkörper ändert sich immer der Wert des im Bedingungsausdruck enthaltenen Parameters.
  • Die While-Schleife wird möglicherweise nicht einmal ausgeführt, da die Bedingungsprüfung in der Schleifenfortsetzung vor dem Schleifenkörper durchgeführt wird.

REPEAT-Anweisung (Schleifenanweisung mit Nachbedingung)

Format: REPEAT [cycle_body]; BIS [Bedingung];

Die REPEAT-Anweisung funktioniert wie folgt: Zunächst werden die Anweisungen im Schleifenkörper ausgeführt, anschließend wird das Ergebnis auf die logische Bedingung überprüft. Wenn das Ergebnis falsch ist, wird mit der Ausführung der Anweisungen des nächsten Schleifenkörpers fortgefahren. Wenn das Ergebnis wahr ist, wird der Operator beendet.

Der Wiederholungsoperator verfügt über die folgenden Funktionen:

  • Bei „Repeat“ wird die Schleifenbeendigungsbedingung überprüft und wenn die Bedingung erfüllt ist, funktioniert die Schleife nicht mehr.
  • Der Schleifenkörper wird immer mindestens einmal ausgeführt;
  • der Parameter zur Überprüfung der Bedingung wird im Schleifenkörper geändert;
  • Die Schleifenkörperanweisungen müssen nicht in Operatorklammern (BEGIN-END) eingeschlossen werden, während die Rolle der Operatorklammern von Repeat und Until übernommen wird.

Berechnen Sie y=sin(x), wobei xn=10, xk=100, Schritt 10 ist.

Mit dem Sprungoperator können Sie vom aktuellen Ausführungsort des Programms zu einem anderen Ort springen, der in der Reihenfolge nicht der nächste ist. Diese Anweisung stört den normalen Ablauf der Programmausführung.

Der Übergang erfolgt über sogenannte Tags.
Eine Bezeichnung ist ein Bezeichner oder eine vorzeichenlose Ganzzahl im Bereich von 0 bis 9999, die vor jeder Programmanweisung steht und durch einen Doppelpunkt von ihr getrennt ist. Alle im Programm verwendeten Labels müssen zuvor im Label-Deklarationsabschnitt deklariert werden, beginnend mit dem WORD-Label.

Es lässt sich theoretisch zeigen, dass die betrachteten Operatoren völlig ausreichen, um Programme beliebiger Komplexität zu schreiben. In dieser Hinsicht erscheint das Vorhandensein von Sprungoperatoren in der Sprache unnötig. Darüber hinaus basiert die moderne Technologie der strukturierten Programmierung auf dem Prinzip der „Programmierung ohne GOTOs“: Es wird angenommen, dass der Missbrauch von Sprungoperatoren das Programm schwer verständlich, verwirrend und schwer zu debuggen macht. In manchen Fällen kann die Verwendung von Sprungoperatoren jedoch ein Programm vereinfachen.

Der Übergangsoperator hat die Form:

Hier ist goto ein reserviertes Wort (go [to label]); - Etikett.

Etikett 1; // Deklarieren Sie ein Label mit dem Namen 1 var
a: Ganzzahl; beginnen
a: = 10;
Gehe zu 1; // Gehe zu Etikett 1
a:= sqrt(a); // Diese Anweisung wird niemals ausgeführt! 1: a:= a + a; // Operator mit der Bezeichnung 1 end;

Bedingte Sprungoperatoren

Der Bedingungsoperator ist so konzipiert, dass er abhängig vom Ergebnis einer booleschen Bedingung eine Aktion ausführt oder nicht ausführt. Dieser Operator wird verwendet, um die Ausführung eines Programms zu verzweigen.
d.h. wenn diese Bedingung wahr ist (und nur in diesem Fall!), dann wird eine bestimmte Folge von Operatoren ausgeführt, andernfalls werden andere Operatoren ausgeführt. Der Typ des Bedingungsoperators ist:

Wenn Zustand Dann Operator1 sonst Operator2;

Der Bedingungsoperator kann auch in vereinfachter Form geschrieben werden:

Wenn Zustand Dann Operator;

Hier sind Beispiele für die Verwendung von Bedingungsoperatoren:

wenn a > 0 dann b: = sqrt (a) sonst b: = a * 2; // Bedingungsoperator
wenn a = 10, dann b: = b + 1; // Vereinfachte Form

Um die Verzweigung in mehrere Richtungen (mehr als zwei) zu organisieren, können Sie mehrere ineinander verschachtelte bedingte Anweisungen verwenden. Die Verschachtelung bedingter Operatoren folgt denselben Regeln wie die Verschachtelung zusammengesetzter Operatoren.

Im Gegensatz zu anderen Programmiersprachen ist in Object Pascal die Priorität relationaler Operationen niedriger als die logischer Operationen; daher werden die einzelnen Komponenten eines komplexen logischen Ausdrucks in Klammern eingeschlossen. Beispielsweise wäre die folgende Aussage aus der vorherigen Aussage falsch:
wenn a>b und b 0 dann ...// Fehler, da der Compiler tatsächlich (unter Berücksichtigung der Priorität der Operation) die folgende Zeile sendet:
wenn a> (b und b)0 dann…

Strukturierte Anweisungen sind solche Anweisungen, die andere Anweisungen enthalten und die Reihenfolge steuern, in der sie ausgeführt werden. Diese beinhalten:

  • zusammengesetzter Operator;
  • bedingte Anweisung If;
  • bedingte Anweisung Case ;
  • Schleifenoperator Repeat ;
  • While-Schleifenanweisung;
  • For-Schleifenoperator.

Zusammengesetzter Operator

Oft ist es erforderlich, dass in Bezug auf eine Aktion mehrere Aussagen im Programm als eine Aussage wahrgenommen werden. Ein solcher Operator kann erhalten werden, wenn die erforderliche Operatorfolge mit Operatorklammern kombiniert wird. Die Dienstwörter Begin und End werden Operatorklammern genannt.

Operatorformat:

Betreiber Nr. 1;

Betreiber Nr. 2;

Betreiber Nr. 3;

Betreiber Nr. n-1;

Betreiber Nr. n; Ende;

Das Wort Begin fungiert als öffnende Klammer, das Wort End als schließende Klammer.

Eine zusammengesetzte Anweisung wird als einzelne Anweisung behandelt. Es kann an einer beliebigen Stelle im Programm eingefügt werden, an der nur eine Anweisung zulässig ist.

Anweisungen, die in einer zusammengesetzten Anweisung enthalten sind, werden wie jede andere Anweisung durch ein Semikolon getrennt, dieses Trennzeichen muss jedoch nicht vor dem Ende stehen. Nach dem Ende ist ein Semikolon als Trennzeichen zwischen der zusammengesetzten Anweisung und der nächsten Anweisung erforderlich.

In den folgenden Abschnitten werden Bedeutung und Zweck des zusammengesetzten Operators anhand zahlreicher Beispiele veranschaulicht.

Bedingte IF-Anweisung

Der If-Operator implementiert die algorithmische Konstruktion „Entscheidung“ und ermöglicht es Ihnen, die Reihenfolge der Ausführung von Operatoren abhängig von der Wahrheit oder Falschheit einer Bedingung zu ändern. Das Operatorformat kann in zwei Formen geschrieben werden: vollständiger und unvollständiger Form.

Die vollständige Form der Aussage lautet:

Wenn<условие>Dann<оператор 1>Anders<оператор 2>

Das Format der Erklärung in unvollständiger Form ist:

Wenn<условие>Dann<оператор 1>

If (if), Then (then), Else (sonst) sind reservierte Wörter.

Die Blockdiagramme der if-Anweisung sind unten aufgeführt:

Der bedingte Operator funktioniert wie folgt. Zuerst wird der bedingte Ausdruck ausgewertet< условие >. Wenn das Ergebnis „True“ ist, führen Sie es aus< оператор 1 >(nach dem Wort Dann) und< оператор 2 >übersprungen. Wenn das Ergebnis falsch ist, dann< оператор 1 >wird übersprungen und ausgeführt< оператор 2 >(nach dem Wort Else). Else wird niemals ein Semikolon vorangestellt, da es nicht das Ende der If-Anweisung ist.

Sonst Teil<оператор 2>Die If-Bedingungsanweisung kann weggelassen werden. Wenn< условие >der If-Anweisung als True ausgewertet wird, dann<оператор 1>, andernfalls wird diese Anweisung übersprungen. In diesem Fall ist das Format der bedingten Anweisung unvollständig:

Vergleichen wir zwei Designs:

Wenn<условие>Dann<оператор 1>;

Wenn<условие>Dann<оператор 1>; <оператор 2>;

In der ersten Zeile<оператор 1>je nach Ausführung entweder ausgeführt oder nicht ausgeführt<условия>. In der zweiten Zeile<оператор 2>ist immer erfüllt, denn danach<оператора 1>es gibt ein Trennzeichen „;“ und alles, was ein Trennfeld wert ist, wird als ein anderer Operator betrachtet. Daher kann es je nach Format der If-Anweisung nur eine Anweisung nach den reservierten Wörtern Then und Else geben.

Beispiel:

Wenn a > 0, dann b:=1;

Wenn a > 0, dann b:=1; a:=b; (Operator a:=b; immer ausgeführt)

Wenn Sie nach Then und Else nicht nur einen, sondern mehrere Operatoren ausführen müssen, sollten Sie Operatorklammern setzen, d. h. Verwenden Sie einen zusammengesetzten Operator.

In diesem Fall sieht die If-Anweisung folgendermaßen aus:

Wenn<условие>Dann

Betreiber 11;

Operator 1n;

Betreiber 21;

Operator 2n;

Beispiel.

Wenn a>0, dann beginne b:=1; a:=b; Ende;

AUFGABE 1. Berechnen Sie den Wert einer durch Ungleichungen gegebenen Funktion

y=x+1 bei x<0; y=2∙x при x>0.Programm a5; var x,y:real; begin write(‘Geben Sie den x-Wert ein: ’); readln(x); if x writeln('Der Wert von y ist: ', y:6:2) end.

Ergebnisse des Programms:

Geben Sie Werte x:0,5 ein

Der Wert von y ist: 1,00

AUFGABE 2. Schreiben Sie ein Programm zur Lösung einer quadratischen Gleichung. Wenn die Diskriminante kleiner als Null ist, wird eine entsprechende Meldung angezeigt.

Programm a6; var a,b,c:real; (Gleichungskoeffizienten) x1,x2:real; (Wurzeln der Gleichung) d:real; (diskriminant) begin Writeln(‘Lösen einer quadratischen Gleichung’:50); Write(‘Geben Sie die Werte der Koeffizienten a,b,c ein:’); Readln(a,b,c); (Eingabekoeffizienten) d:=b*b-4*a*c; wenn(d<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.

Ergebnisse des Programms:

Eine quadratische Gleichung lösen

Geben Sie die Werte der Koeffizienten a,b,c:3 1 6 ein

Die Gleichung hat keine Wurzeln.

Die If-Anweisung kann nicht nur eine zusammengesetzte Anweisung, sondern auch jede strukturierte Anweisung verwenden. Der von uns betrachtete bedingte Operator kann auch als solcher Operator verwendet werden. In diesem Fall sprechen wir von verschachtelten If-Anweisungen.

Beispiel.

wenn Bedingung dann
beginnen Operator-Klammern
Operator; verschachtelt
IF-Operator,
unvollständiges Formular
Wenn Bedingung, dann Operator
else-Anweisung;
Ende
anders
beginnen Operator-Klammern
Operator; verschachtelt
IF-Operator,
unvollständiges Formular
wenn Bedingung
dann Operator;
Ende;

Beim Arbeiten mit verschachtelten Anweisungen Wenn Folgende Regeln sollten beachtet werden:

  • vor dem reservierten Wort sonst das Symbol „;“ niemals setzen;
  • Das reservierte Wort else ist immer mit dem nächsten reservierten Wort then verknüpft.

AUFGABE 3. Lassen Sie uns das Programm zur Lösung einer quadratischen Gleichung verbessern (Aufgabe 2). Wenn der Koeffizient a=0 ist, degeneriert die Gleichung. Das Programm hat diesen Umstand nicht berücksichtigt, was zu einem schwerwiegenden Fehler bei der Programmausführung führt (Division durch Null). Um eine Division durch Null auszuschließen, überprüfen wir den Wert des Koeffizienten a, nachdem er mit dem Operator Readln(a,b,c) eingegeben wurde.

Da die Variable a im Programm als Variable vom Typ Real deklariert ist, wird ihr numerischer Wert in der Maschine mit einigen Fehlern nicht genau dargestellt. Daher ein Eintrag wie

Um die Werte einer reellen Variablen korrekt mit Null zu vergleichen, gibt es mehrere Möglichkeiten:

AUFGABE 4. Ein fortschrittlicher quadratischer Gleichungslöser.

Programm a7;Var a,b,c:real; (Gleichungskoeffizienten) x1,x2:real; (Wurzeln der Gleichung) d:real; (diskriminant) begin Writeln(‘Lösen einer quadratischen Gleichung’:50); Write(‘Geben Sie die Werte der Koeffizienten a,b,c ein: ’); Readln(a,b,c); (Koeffizienten eingeben) wenn Runde(a)<>0 dann begin d:=b*b-4*a*c; wenn d<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.

Ergebnisse des Programms:

Lösen einer quadratischen Gleichung Geben Sie die Werte der Koeffizienten ein a,b,c:0 1 6 Division durch Null.

Fall einer bedingten Auswahlanweisung

Der Auswahloperator ist eine Verallgemeinerung des If-Operators und wird in Fällen verwendet, in denen es erforderlich ist, abhängig vom Wert des Auswahlschlüssels nur eine Anweisung aus einer Menge von Operatoren auszuführen.

Der Auswahlschlüssel ist ein Ausdruck, der zwischen den reservierten Wörtern Case und of steht. Der Ausdruck kann vom Typ Ganzzahl, Logik oder Zeichen sein. Der Ausdruck darf nicht vom Typ Real, String sein.

Operatorformat:

Fall von "<ключ выбора>" Konstante1: Operator 1; Konstante2: Operator 2; Konstante3: Operator 3; ... KonstanteN-1: Operator N-1; KonstanteN: Operator Nn; Else-Operator Ende;

Hier sind Case (in case), of (from), Else (sonst) und End (end) reservierte Wörter.

Ein Auswahlschlüssel ist ein Ausdruck eines beliebigen Typs außer Real und String .

Constant1 ist eine Konstante vom gleichen Typ wie der Ausdruck.

Operator1 ist ein beliebiger Operator.

Der Select-Operator funktioniert wie folgt. Zuerst wird der Ausdruck ausgewertet<ключ выбора>, und dann wird in der Folge der Operatoren einer gefunden, dem eine Konstante vorangeht, die dem berechneten Wert entspricht<ключ выбора>. Der gefundene Operator wird ausgeführt, woraufhin der Auswahloperator seine Arbeit abschließt (die Kontrolle wird an Ende übergeben). Wenn in der Liste der Konstanten keine Konstante gefunden wird, die mit dem berechneten Wert der Auswahltaste übereinstimmt, wird die Steuerung an den Operator übergeben, der dem Wort Else folgt.

Sonst Teil<оператора>weggelassen werden kann, geschieht dann nichts, wenn die erforderliche Konstante nicht in der Konstantenliste enthalten ist, und der Auswahloperator beendet einfach seine Arbeit.

AUFGABE 5. Schreiben Sie ein einfaches Taschenrechnerprogramm.

Programm a8; var x,y:real; z:real; (Ergebnis) op:char; (Taste auswählen) begin Write(‘Operanden x,y eingeben: ’); Readln(x,y); Write(‘Operation eingeben(+,-,*,/):’); Readln(op); case op of '+':z:=x+y; ‘-‘:z:=x-y; ‘*‘:z:=x*y; ‘/‘:if y0 then z:=x/y Elsewriteln(‘Division by Zero’); Else writeln(‘Aktion nicht vorgesehen!’); Ende; (op) (auf diese Weise können Sie markieren, „wessen“ Ende ist) writeln(‘The result is =’,z:8:2); Ende.

Ergebnisse des Programms:

Operanden x,y:4 eingeben 2

Geben Sie die Operation ein (+,-,*,/):*

Das Ergebnis ist = 8,00

In einem Programm ist die Auswahltaste eine Variable vom Typ Zeichen. Abhängig vom eingegebenen Wert der Symbole (+, -, *, /) wird eine der arithmetischen Operationen ausgeführt: Addition, Subtraktion, Multiplikation oder Division. Wenn als Teiler Null eingegeben wird, ist keine Division möglich und es erscheint die Meldung „Durch Null dividieren“. Bei Eingabe eines anderen Zeichens wird als Ergebnis die Meldung „Aktion nicht erlaubt!“ ausgegeben. Wenn gültige Operationen eingegeben werden, wird das Ergebnis zurückgegeben.

AUFGABE 6. Schreiben Sie ein Programm, das den Benutzer zur Eingabe der Nummer des Wochentags auffordert und dann den Namen des Wochentags oder eine Fehlermeldung anzeigt, wenn die eingegebenen Daten falsch sind.

Programm a9; Var n: Ganzzahl; (Nummer des Wochentags) Begin write(‘Geben Sie die Nummer des Wochentags ein:’); readln(n); Fall n von 1: writeln(‘Monday’); 2: writeln('Tuesday'); 3: writeln('Mittwoch'); 4: writeln('Donnerstag'); 5: writeln('Freitag'); 6: writeln('Samstag'); 7: writeln('Sonntag'); else write(‘Du liegst falsch!’) end; (n)Ende.

Ergebnisse des Programms:

Geben Sie die Nummer des Wochentags ein: 1

Montag

Keine Konstante sollte einer anderen gleich sein. Soll derselbe Operator für mehrere Konstanten ausgeführt werden, können diese beispielsweise durch Kommas getrennt aufgelistet werden

Fall n von 1,3,5,7,9: writeln(‘Das sind ungerade Zahlen’); 2,4,6,8,10: writeln(‘Das sind gerade Zahlen’); Ende;



 


Lesen:



So partitionieren Sie eine Festplatte

So partitionieren Sie eine Festplatte

So teilen Sie eine Festplatte in zwei Partitionen auf, ohne Daten zu verlieren, vorausgesetzt, es gibt eine Partition, die in das Hauptvolume mit dem Buchstaben (C:) umgewandelt wurde, auf...

Wir unterteilen die Festplatte in Partitionen

Wir unterteilen die Festplatte in Partitionen

Bei der Installation von Windows wird die Festplatte traditionell in mindestens zwei Partitionen unterteilt – eine kleinere Systempartition mit dem Buchstaben C und eine größere Benutzerpartition...

Der Computer piept beim Einschalten

Der Computer piept beim Einschalten

Datum der Veröffentlichung: 01.02.2011 Es kann vorkommen, dass sich der Computer nicht einschaltet, sondern zu piepen beginnt. Wenn man zuhört, wird klar, dass...

Dateierweiterungen in Windows richtig ändern So ändern Sie die Archiverweiterung

Dateierweiterungen in Windows richtig ändern So ändern Sie die Archiverweiterung

Windows-Betriebssysteme erfreuen sich großer Beliebtheit, da sie es ermöglichen, Arbeitscomputer nach Belieben des Benutzers zu konfigurieren. Noch kein einziges Betriebssystem...

Feed-Bild RSS