Wie heißt der Nachrichtenausgabeoperator? I/O-Operator in Pascal. Eine Beschreibung einiger Standarddatentypen und der integrierten Operationen und Funktionen, die für sie gelten. Ausgabeoperatoren

Eine Interaktion des Programms mit der externen Umgebung (Benutzer, andere Programme, gespeicherte Daten) ist zwingend erforderlich. Verantwortlich für eine solche Schnittstelle in Programmiersprachen I/O-Anweisungen Information. Mit diesen Anweisungen können Sie Daten in das Programm eingeben, während das Programm läuft (und nicht beim Schreiben) und die berechneten Daten in einer für Menschen verständlichen Form ausgeben.

Mit diesen Befehlen können Sie während der Programmausführung über die Tastatur Daten in einzelne Variablen oder in mehrere Variablen gleichzeitig eingeben. Die Elemente der Eingabeliste können Variablennamen sein, die mit über die Tastatur eingegebenen Werten gefüllt werden müssen.

Die Ausführung von Eingabeanweisungen erfolgt wie folgt: Das Programm wird angehalten, ein Cursor wird auf dem Bildschirm angezeigt und der Computer erwartet vom Benutzer, dass er einen Datensatz für die Variablen bereitstellt, deren Namen in der Eingabeliste angegeben sind. Der Benutzer gibt die erforderlichen Zeichen über die Tastatur in der Reihenfolge ein, in der sie in der Eingabeliste erforderlich sind, und drückt die Eingabetaste. Danach werden die eingegebenen Daten in die entsprechenden Variablen übernommen und die Programmausführung fortgesetzt. Die Eingabedaten werden durch Leerzeichen getrennt.

Bei der Eingabe von Quelldaten findet eine Transformation von der externen Darstellungsform in die interne statt, die durch die Art der Variablen bestimmt wird. Die Variablen, aus denen die Eingabeliste besteht, können entweder Ganzzahl-, Real- oder Zeichentypen sein. Das Lesen boolescher Quelldaten ist nicht zulässig.

Der Unterschied zwischen der Funktionsweise der Read- und Readln-Operatoren in Pascal ist wie folgt: Nach der Ausführung von Read wird der Wert der nächsten Daten aus derselben Zeile gelesen und nach der Ausführung von Readln aus einer neuen Zeile.

Mit diesen Operatoren können Sie Daten aus der Ausgabeliste auf dem Monitorbildschirm anzeigen. Elemente der Ausgabeliste können Variablennamen, Ausdrücke und Konstanten sein. Bevor die Werte von Ausdrücken angezeigt werden, wertet der Computer diese zunächst aus. Listenelemente werden wie in Eingabeanweisungen durch Kommas getrennt.

Der Unterschied zwischen den beiden Ausgabeoperatoren in Pascal ist wie folgt: Nach der Ausführung des Writeln-Operators (von der Write-Zeile) erfolgt ein Übergang zu einer neuen Zeile, und nach der Ausführung der Write-Anweisung erfolgt kein Übergang zu einer neuen Zeile und es erfolgt keine Ausgabe Bei nachfolgenden Write- oder Writeln-Ausgabebefehlen erfolgt die Ausgabe in derselben Zeile. Wenn der Writeln-Operator ohne Parameter aufgerufen wird, springt er einfach in eine neue Zeile.

In BASIC druckt jede neue PRINT-Anweisung Werte in einer neuen Zeile.

Die Variablen, aus denen die Ausgabeliste besteht, können ganzzahlige, reelle, zeichenhafte oder boolesche Variablen sein. Als Element der Ausgabeliste können neben Variablennamen auch Ausdrücke und Strings verwendet werden.

Jeder Wert wird entsprechend der Breite des Ausgabefelds, die durch die spezifische Implementierung der Sprache bestimmt wird, in einer Zeile des Bildschirms ausgegeben.

Die Darstellungsform der Werte im Ausgabefeld entspricht der Art der Variablen und Ausdrücke: Werte vom Typ Integer werden als ganzzahlige Dezimalzahlen ausgegeben, vom Typ Real – als reelle Dezimalzahlen mit Dezimalreihenfolge, vom Zeichentyp und Zeichenfolge – in Form von Zeichen, vom logischen Typ – in Form von logischen Konstanten TRUE und FALSE.

Betrachten Sie das Verfahren zum Lesen von Informationen aus einer Datei in Pascal.

Zuerst müssen Sie eine Dateivariable deklarieren. Dateivariablen haben bestimmte Verwendungszwecke. Sie können an ihnen keine Operationen ausführen (Wert zuweisen, vergleichen usw.). Sie können nur zum Ausführen von Vorgängen an Dateien (Lesen, Schreiben usw.) verwendet werden.

Bevor E/A erfolgen kann, muss eine Dateivariable mithilfe der Assign-Prozedur einer bestimmten externen Datei zugeordnet werden.

Zuordnen(<Имя файловой переменной>,<Имя файла>);

Der Dateiname wird entweder als String-Konstante oder über eine String-Variable angegeben. Der Dateiname muss den Regeln des aktuell laufenden Betriebssystems entsprechen. Wenn die Namenszeile leer ist, ist die Dateivariable einem Standard-Eingabe-/Ausgabegerät (normalerweise der Konsole) zugeordnet.

Danach muss die Datei mit einer der folgenden Prozeduren geöffnet werden:

Zurücksetzen(<Имя файловой переменной>);

Eine vorhandene Datei wird zum Lesen geöffnet und der aktuelle Komponentenzeiger der Datei wird auf den Anfang der Datei gesetzt. Wenn die der Dateivariablen entsprechende physische Datei nicht vorhanden ist, tritt ein E/A-Fehlerzustand auf.

Umschreiben(<Имя файловой переменной>);

Eine neue leere Datei wird zum Schreiben geöffnet und erhält den durch die Assign-Prozedur angegebenen Namen. Wenn bereits eine Datei mit demselben Namen existiert, wird sie zerstört. Nach der Arbeit mit einer Datei sollte diese normalerweise mit der Close-Prozedur geschlossen werden.

Schließen(<Имя файловой переменной>);

Diese Anforderung muss für die Datei erfüllt sein, in der die Aufzeichnung vorgenommen wurde.

Als wir ein Beispiel für den Zuweisungsoperator betrachteten, standen wir vor der Notwendigkeit, das Ergebnis der Programmausführung herauszufinden. Wir haben herausgefunden, wie man Informationen speichert (in Variablen) und wie man sie verarbeitet (mithilfe von Ausdrücken), aber zwei grundlegende Informationsprozesse blieben außerhalb unserer Aufmerksamkeit: das Empfangen von Informationen und deren Übermittlung an die Welt außerhalb des Computers. Bisher können unsere Programme nur Informationen nutzen, die direkt im Programmtext stehen. Es war auch nicht möglich herauszufinden, welche Werte die Variablen aktuell haben. Das Programmieren unter solchen Bedingungen wird bedeutungslos.

Die Interaktion von Informationsverarbeitungs- und Speichergeräten mit externen Medien (zumindest mit dem Benutzer) ist zwingend erforderlich. In Pascal sind Informationseingabe-/-ausgabeoperatoren für eine solche Schnittstelle verantwortlich. Mit diesen Anweisungen können Sie Argumente und Berechnungsparameter während der Programmausführung (und nicht beim Schreiben des Programms) eingeben und die berechneten Daten in einer für Menschen verständlichen Form ausgeben.

Eingabeanweisungen (Anweisungsformate):

Lesen(<Список ввода>); Readln(<Список ввода>);

In diesem Format ermöglichen diese Befehle die Eingabe von Daten in Variablen während der Programmausführung über die Tastatur. Die Elemente der Eingabeliste können Variablennamen sein, die mit über die Tastatur eingegebenen Werten gefüllt werden müssen. Die Ausführung von Eingabeanweisungen erfolgt wie folgt: Das Programm wird angehalten, ein Cursor wird auf dem Bildschirm angezeigt und der Computer erwartet vom Benutzer, dass er einen Datensatz für die Variablen bereitstellt, deren Namen in der Eingabeliste angegeben sind. Der Benutzer gibt die erforderlichen Werte über die Tastatur in der Reihenfolge ein, in der sie von der Eingabeliste benötigt werden, und drückt die Eingabetaste. Danach werden die eingegebenen Daten in die entsprechenden Variablen übernommen und die Programmausführung fortgesetzt.

Hinweis: Die eingegebenen Daten werden durch Leerzeichen getrennt.

Der Unterschied zwischen der Funktionsweise der Read- und Readln-Prozeduren (von der Read-Zeile) ist wie folgt: Nach der Ausführung von Read wird der Wert der nächsten Daten aus derselben Zeile und nach der Ausführung von Readln aus einer neuen Zeile gelesen.

Es gibt auch zwei Befehle zum Anzeigen von Informationen in Pascal:

Schreiben(<Список вывода>); Writeln(<Список вывода>);

Mit diesem Format der Verwendung von Write und Writeln können Sie Daten aus der Ausgabeliste auf dem Monitorbildschirm anzeigen. Elemente der Ausgabeliste können Variablennamen, Ausdrücke und Konstanten sein. Bevor die Werte der Ausdrücke auf dem Bildschirm angezeigt werden, berechnet der Computer diese zunächst. Listenelemente werden wie in Eingabeanweisungen durch Kommas getrennt. Der Unterschied zwischen den beiden Ausgabeoperatoren ist wie folgt: Nach der Ausführung des Writeln-Operators (von der Write-Zeile) erfolgt ein Übergang zu einer neuen Zeile, und nach der Ausführung der Write-Anweisung erfolgt kein Übergang zu einer neuen Zeile und der Druck erfolgt weiter Die Ausgabebefehle „Write“ oder „Writeln“ werden in derselben Zeile ausgeführt. Wenn der Writeln-Operator ohne Parameter aufgerufen wird, springt er einfach in eine neue Zeile.

Hier ist ein Beispiel für die Verwendung der Eingabe- und Ausgabeoperatoren:

Programmschnittstelle;

Write("Geben Sie den Radius des Kreises ein"); (Auf dem Bildschirm drucken und um Eingabe bitten)

Readln(R); (Eingabe des Wertes in

Variable R über die Tastatur)

S:=4*ARCTAN(1)*SQR(R); (Berechnung der Fläche eines Kreises (pR2))

Writeln("Die Fläche eines Kreises mit dem Radius ,R," ist ,S)

Dieses Programm fragt den Benutzer nach dem Radius eines Kreises, bietet die Möglichkeit, seinen Wert einzugeben, berechnet die Fläche eines Kreises mit diesem Radius und zeigt ihn an. Dadurch wird es möglich, ohne Änderungen am Programmtext unterschiedliche Radiuswerte einzugeben und die entsprechenden Kreisflächenwerte zu erhalten. Führen Sie dazu das Programm einfach mehrmals aus. Dieses Programm demonstriert auch die folgende Regel: Die Ausgabe von Ergebnissen sollte kommentiert werden, damit die Bedeutung der gedruckten Zahlen klar ist. Man könnte sich zwar auf Writeln(S) beschränken, aber die Bedeutung der vom Programm ausgegebenen Zahl wäre in diesem Fall nur dem klar, der das Programm geschrieben hat.

Um die Ausgabe dieses Programms anzuzeigen, muss es zunächst kompiliert werden. In Pascal können Sie dies tun, indem Sie die Tastenkombination Strg+F9 drücken. Das Programm wird auf Fehler überprüft (falls Fehler gefunden werden, erhalten Sie oben auf dem Bildschirm eine Meldung und der Cursor bewegt sich an die Fehlerstelle). Wenn keine Fehler gefunden werden, wird das Ergebnis angezeigt und Sie können es durch Drücken der Tastenkombination Alt+F5 ansehen.

Das Eingeben eines Programms in Pascal ähnelt dem Eingeben einer normalen Textdatei, nur dass hierfür die TurboPascal-Umgebung verwendet wird. Sie können es von Ihrem Desktop aus starten.

Beispiel. Bestimmen Sie das Volumen und die Fläche der Mantelfläche eines Zylinders mit gegebenem Basisradius R und Höhe H.

Programmzylinder;

R, (Zylinderbasisradius)

H, (Zylinderhöhe)

V, (Zylindervolumen)

S: Echt; (Mantelfläche des Zylinders)

Write("Geben Sie die Höhe des Zylinders ein: "); ReadLn(H);

Write("Basisradius eingeben:"); ReadLn(R);

V:= Pi * R * R * H;

S:= 2 * Pi * R * H; WriteLn;

WriteLn("Zylindervolumen = ", V: 5: 2); (Hier ist 5 die Gesamtzahl der Positionen, die die Variable V während der Ausgabe einnimmt, und 2 ist die Anzahl der Positionen im Bruchteil des Werts V)

WriteLn("Seitenfläche = ",);

Laboraufgabe.

1. Berechnen Sie den Umfang, die Fläche eines Kreises und das Volumen einer Kugel mit dem gleichen gegebenen Radius.

2. Berechnen Sie den Wert der Funktion y = 3x 2 + 4(sin(x)- x 3)

Wenn Sie sich erinnern, standen wir bei der Betrachtung eines Beispiels des Zuweisungsoperators vor der Notwendigkeit, das Ergebnis der Programmausführung herauszufinden. Wir haben herausgefunden, wie man Informationen speichert (in Variablen) und wie man sie verarbeitet (mithilfe von Ausdrücken), aber zwei der grundlegendsten Informationsprozesse blieben außerhalb unserer Aufmerksamkeit: das Empfangen von Informationen und deren Weitergabe an die Welt außerhalb des Computers. Bisher können unsere Programme nur Informationen nutzen, die direkt im Programmtext stehen. Es war auch nicht möglich herauszufinden, welche Werte die Variablen aktuell haben. Unter solchen Bedingungen verliert das Programmieren seinen Sinn.

Die Interaktion von Informationsverarbeitungs- und Speichergeräten mit der externen Umgebung (zumindest mit dem Benutzer) ist unbedingt erforderlich. In Pascal sind Informationseingabe-/-ausgabeoperatoren für eine solche Schnittstelle verantwortlich. Mit diesen Anweisungen können Sie Argumente und Berechnungsparameter während der Programmausführung (und nicht beim Schreiben des Programms) eingeben und die berechneten Daten in einer für Menschen verständlichen Form ausgeben.

Zuerst die Eingabeanweisungen (Anweisungsformate):

Lesen(<Список ввода>);

Readln(<Список ввода>);

In diesem Format ermöglichen diese Befehle die Eingabe von Daten in Variablen während der Programmausführung über die Tastatur. Die Elemente der Eingabeliste können Variablennamen sein, die mit über die Tastatur eingegebenen Werten gefüllt werden müssen.

Die Ausführung von Eingabeanweisungen erfolgt wie folgt: Das Programm wird angehalten, ein Cursor wird auf dem Bildschirm angezeigt und der Computer erwartet vom Benutzer, dass er einen Datensatz für die Variablen bereitstellt, deren Namen in der Eingabeliste angegeben sind. Der Benutzer gibt die erforderlichen Werte über die Tastatur in der Reihenfolge ein, in der sie von der Eingabeliste benötigt werden, und drückt die Eingabetaste. Danach werden die eingegebenen Daten in die entsprechenden Variablen übernommen und die Programmausführung fortgesetzt.

Hinweis: Die eingegebenen Daten werden durch Leerzeichen getrennt.

Der Unterschied zwischen der Funktionsweise der Read- und Readln-Prozeduren (von der Read-Zeile) ist wie folgt: Nach der Ausführung von Read wird der Wert der nächsten Daten aus derselben Zeile und nach der Ausführung von Readln aus einer neuen Zeile gelesen.

Um Informationen in Pascal anzuzeigen, gibt es außerdem zwei Befehle:

Schreiben(<Список вывода>);

Writeln(<Список вывода>);

Mit diesem Format der Verwendung von Write und Writeln können Sie Daten aus der Ausgabeliste auf dem Monitorbildschirm anzeigen. Elemente der Ausgabeliste können Variablennamen, Ausdrücke und Konstanten sein. Bevor die Werte der Ausdrücke auf dem Bildschirm angezeigt werden, berechnet der Computer diese zunächst. Listenelemente werden wie in Eingabeanweisungen durch Kommas getrennt.

Der Unterschied zwischen den beiden Ausgabeoperatoren ist wie folgt: Nach der Ausführung des Writeln-Operators (von der Write-Zeile) erfolgt ein Übergang zu einer neuen Zeile, und nach der Ausführung der Write-Anweisung erfolgt kein Übergang zu einer neuen Zeile und der Druck erfolgt weiter Die Ausgabebefehle „Write“ oder „Writeln“ werden in derselben Zeile ausgeführt. Wenn der Writeln-Operator ohne Parameter aufgerufen wird, springt er einfach in eine neue Zeile.

Hier ist ein Beispiel für die Verwendung der Eingabe- und Ausgabeoperatoren:

Programmschnittstelle;

Write("Geben Sie den Radius des Kreises ein"); (Auf dem Bildschirm drucken und um Eingabe bitten)

Readln(R); (Eingabe eines Werts in die R-Variable über die Tastatur)

S:=4*ARCTAN(1)*SQR(R); (Berechnung der Fläche eines Kreises (pR2))

Writeln("Die Fläche eines Kreises mit dem Radius ,R," ist ,S)

Dieses Programm fragt den Benutzer nach dem Radius eines Kreises, bietet die Möglichkeit, seinen Wert einzugeben, berechnet die Fläche eines Kreises mit diesem Radius und zeigt ihn an. Dadurch wird es möglich, ohne Änderungen am Programmtext unterschiedliche Radiuswerte einzugeben und die entsprechenden Kreisflächenwerte zu erhalten. Führen Sie dazu das Programm einfach mehrmals aus. Dieses Programm demonstriert auch die folgende Regel: Die Ausgabe von Ergebnissen sollte kommentiert werden, damit die Bedeutung der gedruckten Zahlen klar ist. Man könnte sich zwar auf Writeln(S) beschränken, aber die Bedeutung der vom Programm ausgegebenen Zahl wäre in diesem Fall nur dem klar, der das Programm geschrieben hat.

EINGABE- UND AUSGABEOPERATOREN

Betrachten wir die Organisation der Dateneingabe und -ausgabe von einem Endgerät. Ein Endgerät ist ein Gerät, mit dem der Benutzer interagiert, normalerweise ein Bildschirm (Display) und eine Tastatur. Zur Ein- und Ausgabe von Daten werden die Standard-Ein- und Ausgabeverfahren Read und Write verwendet, die mit den standardmäßigen sequentiellen Dateien INPUT und OUTPUT arbeiten.

Diese Dateien sind in Zeilen variabler Länge unterteilt, die durch einen Zeilenabschluss voneinander getrennt sind. Das Ende der Zeile wird durch Drücken der ENTER-Taste festgelegt.

Zur Eingabe von Quelldaten werden Eingabeprozeduroperatoren verwendet:

Lesen(A1,A2,...AK);

ReadLn(A1,A2,...AK);

Der erste von ihnen implementiert das Lesen von K-Werten der Quelldaten und das Zuweisen dieser Werte zu den Variablen A1, A2, ..., AK. Der zweite Operator implementiert das Lesen von K-Werten der Quelldaten, das Überspringen der verbleibenden Werte bis zum Anfang der nächsten Zeile und das Zuweisen der gelesenen Werte zu den Variablen A1, A2, ..., AK. Der dritte Operator implementiert das Überspringen einer Zeile mit Quelldaten.

Bei der Eingabe von Quelldaten findet eine Transformation von der externen Darstellungsform in die interne statt, die durch die Art der Variablen bestimmt wird. Die Variablen, aus denen die Eingabeliste besteht, können entweder Ganzzahl-, Real- oder Zeichentypen sein. Das Lesen boolescher Quelldaten in PASCAL ist nicht zulässig.

Eingabeanweisungen überspringen beim Lesen von Werten von Variablen vom Typ Integer und Real die Leerzeichen vor der Zahl. Gleichzeitig überspringen diese Operatoren keine Leerzeichen vor den Werten von Zeichenvariablen, da Leerzeichen in Zeichenfolgen gleiche Zeichen sind. Ein Beispiel für das Schreiben von Eingabeanweisungen:

var rV, rS: Real;

iW, iJ: Ganzzahl;

................

Read(rV, rS, iW, iJ);

Quelldatenwerte können durch Leerzeichen und durch Drücken der Tabulator- und Eingabetaste voneinander getrennt werden.

Um die Ergebnisse des Programms auf dem Bildschirm anzuzeigen, werden folgende Operatoren verwendet:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Der erste dieser Operatoren implementiert die Ausgabe der Werte der Variablen A1, A2,...,AK in eine Zeile des Bildschirms. Der zweite Operator implementiert die Ausgabe der Werte der Variablen A1, A2, ..., AK und den Übergang zum Anfang der nächsten Zeile. Der dritte Operator implementiert das Überspringen einer Zeile und das Wechseln zum Anfang der nächsten Zeile.

Die Variablen, aus denen die Ausgabeliste besteht, können ganzzahlige, reelle, zeichenhafte oder boolesche Variablen sein. Als Element der Ausgabeliste können neben Variablennamen auch Ausdrücke und Strings verwendet werden.

Jeder Wert wird entsprechend der Breite des Ausgabefelds, die durch die spezifische Implementierung der Sprache bestimmt wird, in einer Zeile des Bildschirms ausgegeben.

Die Darstellungsform der Werte im Ausgabefeld entspricht der Art der Variablen und Ausdrücke: Werte vom Typ Integer werden als dezimale Ganzzahlen ausgegeben, vom Typ reell – als reelle Dezimalzahlen mit Dezimalreihenfolge, des Zeichens Typ und String – als Zeichen, vom logischen Typ – als logische Konstanten TRUE und FALSE.

Mit dem Ausgabeoperator können Sie die Breite des Ausgabefelds für jedes Element der Ausgabeliste festlegen. In diesem Fall hat das Ausgabelistenelement die Form A:K, wobei A ein Ausdruck oder eine Zeichenfolge und K ein Ausdruck oder eine Ganzzahlkonstante ist. Wenn der Ausgabewert weniger Positionen im Ausgabefeld einnimmt als K, werden vor diesem Wert Leerzeichen eingefügt. Passt der angezeigte Wert nicht in die Breite des K-Feldes, wird diesem Wert die erforderliche Anzahl an Stellen zugewiesen. Für Werte eines reellen Typs kann ein Element der Ausgabeliste die Form A:K:M haben, wobei A eine Variable oder ein Ausdruck eines reellen Typs ist, K die Breite des Ausgabefelds und M die Zahl ist Anzahl der Ziffern des Bruchteils des Ausgabewerts. K und M sind Ausdrücke oder Konstanten vom Typ Integer. In diesem Fall werden die tatsächlichen Werte in Festkomma-Dezimalform ausgegeben. Ein Beispiel für das Schreiben von Ausgabeanweisungen:

. . . . . . . . . . . .

var rA, rB: Real; iP,iQ:Integer;

bR, bS: Boolescher Wert; chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

Stichworte. Unbedingter Sprungoperator.

Jedes Haus auf der Straße hat seine eigene Nummer, alle Menschen haben ihre eigenen Namen, sogar die Speicherzellen des Computers haben jeweils ihre eigene Adresse. All dies wird berücksichtigt, um das zu definierende Objekt eindeutig angeben zu können. Ebenso werden Labels verwendet, um Anweisungen in Programmen zu kennzeichnen.

Eine Bezeichnung im Pascal-Sprachstandard ist eine nicht negative Ganzzahl. Alle im Programm verwendeten Labels müssen im Abschnitt mit der Labelbeschreibung aufgeführt sein, beginnend mit dem Servicewort Label, zum Beispiel:

Es kann nur ein Operator mit einem Label gekennzeichnet werden. Die Bezeichnung wird durch einen Doppelpunkt von der markierten Anweisung getrennt.

6: Writeln(14/2);

In allen bisherigen Programmen wurden die Anweisungen nacheinander in der Reihenfolge ausgeführt, in der sie im Text geschrieben wurden. Diese algorithmische Struktur wird als direkte Nachfolge bezeichnet. Allerdings gibt es in der Pascal-Sprache zunächst einen Operator, der die lineare Ausführung des Programms unterbricht und die Kontrolle an einen beliebigen Punkt überträgt. Diese Anweisung wird als unbedingter Sprung bezeichnet und hat das folgende Format:

Gehe zu<метка>;

Der Operator, zu dem der Übergang erfolgt, muss mit dieser Bezeichnung gekennzeichnet sein.

Der bedingungslose Sprungoperator sollte mit äußerster Vorsicht verwendet werden, um fehlerhafte Ergebnisse oder eine vollständige Schleife des Programms zu vermeiden. Im Allgemeinen gilt die Verwendung dieses Befehls unter Programmierern als schlechte Form. Wie Sie sehen werden, ist es immer möglich, darauf zu verzichten.

ELEMENTE DER STRUKTURIERTEN PROGRAMMIERUNG

Ein strukturiertes Programm (oder Unterprogramm) ist ein Programm, das aus einem festen Satz grundlegender Konstrukte besteht. Betrachten wir die grundlegenden Definitionen und Methoden zur Bildung dieser Konstruktionen in Algorithmusschemata.

Aus Operationen, Forks und Mergers werden Grundstrukturen aufgebaut: Following, Branching, Cycle. Wenn Sie nur diese drei Konstruktionen verwenden, können Sie einen Algorithmus zur Lösung jedes Problems implementieren.

Eine Konstruktion, die die sequentielle Ausführung von zwei oder mehr Operationen darstellt, wird als Folgendes bezeichnet.

Eine Konstruktion, die aus einer Verzweigung, zwei Operationen und einer Zusammenführung besteht, wird als Verzweigung bezeichnet. Möglicherweise fehlt eine der Operationen.

Ein Entwurf, bei dem Steuerleitungen zu vorherigen Vorgängen oder Verzweigungen führen, wird als Schleife bezeichnet.

Die folgenden Verzweigungs- und Schleifenkonstrukte können als Operationen betrachtet werden, da sie über eine einzige Eingabe und eine einzige Ausgabe verfügen. Eine beliebige Abfolge von Operationen kann als eine Operation dargestellt werden.

Die Operation kann durch jeden PASCAL-Sprachoperator (einfach oder zusammengesetzt) ​​oder eine Gruppe von Operatoren implementiert werden, mit Ausnahme des GOTO-Übergangsoperators.

In der PASCAL-Sprache wurde die Anzahl der Grundstrukturen auf sechs erhöht, diese sind:

Folgend;

Verzweigung;

Schleife mit Vorbedingung;

Schleife mit Nachbedingung;

Schleife mit Parameter;

Bedingter Operator

Eine der wichtigsten algorithmischen Strukturen ist die Verzweigung (Alternative).

Wenn die Bedingung erfüllt ist, wird die Anweisung „1“ ausgeführt; wenn nicht, wird die Anweisung „2“ ausgeführt. Obwohl es in der Schaltung zwei Aktionen gibt, wird nur eine ausgeführt, da die Bedingung entweder falsch oder wahr ist. Es gibt kein Drittes. Mit diesem Schema können Sie Probleme lösen, bei denen Sie je nach den vorherrschenden Umständen die eine oder andere Aktion ausführen müssen. Es besteht kein Zweifel, dass die Zahl der Probleme dieser Art enorm ist. Darüber hinaus ist es sehr schwierig, eine wirklich wichtige Aufgabe zu finden, deren Ausführungsalgorithmus eine einfache direkte Befehlsfolge enthalten würde. Selbst ein einfaches Beispiel aus einem Mathematikkurs kann, wie Sie sehen werden, nicht ohne Verzweigung gelöst werden. Daher ist es notwendig, den Wert des Ausdrucks y=1/x zu berechnen. Sie wissen, dass eine gegebene Funktion nicht immer einen Wert hat, das heißt, nicht alle Argumentwerte haben einen Ergebniswert. Unsere Aufgabe besteht darin, den Algorithmus so zu gestalten, dass der Ausführende niemals in eine Sackgasse gerät, selbst wenn er Null als Argument erhält. Es ist nicht schwer, dies in natürlicher Sprache zu formulieren:

1. Ermitteln Sie den Wert von x.

2. Wenn x=0, dann melden Sie, dass der Ausdruck keinen Wert hat, andernfalls berechnen Sie y als 1/x.

Auf diese Weise wird die obige algorithmische Struktur verwendet. Es kann in einfachen Worten ausgedrückt werden:

Wenn<усл.>(Wenn die Bedingung erfüllt ist)

Das<действие 1>(Führen Sie dann Aktion Nummer 1 aus)

ansonsten<действие 2>(Andernfalls - Aktion Nr. 2 ausführen)

Wie schreibe ich das in Pascal? Ja, genau das Gleiche, nur auf Englisch.

Format des Bedingungsoperators in Pascal:

Wenn<условие>

Dann<оператор 1>

Anders<оператор 2>;

Bitte beachten Sie, dass es in den Teilen „Then“ und „Else“ nur eine Anweisung gibt. Aber was ist zu tun, um ein Problem zu lösen, bei dem Sie zum Erfüllen oder Nichterfüllen einer Bedingung nicht eine, sondern mehrere Aktionen ausführen müssen? Hier kommt der Compound-Operator, den Sie bereits kennen, zur Rettung. Sie können beliebig viele Operatoren in Operatorklammern einschließen.

Eine Variante des bedingten Operators in diesem Fall:

Wenn<условие>

Dann fangen Sie an<группа операторов 1>Ende

Sonst beginnen< группа операторов 2>Ende;

Das Semikolon steht nicht vor dem Else-Funktionswort, aber Anweisungen in Gruppen werden natürlich durch dieses Semikolon voneinander getrennt.

Lassen Sie uns nun über die Bedingungen sprechen. Bedingungen sind in Pascal-Programmen Ausdrücke, deren Wert ein boolescher Wert ist. Dies kann entweder eine einfache Variable des angegebenen Typs oder eine komplexe Folge von Anweisungen sein, die durch logische Operationen verbunden sind.

Unter einfachen Bedingungen können Vergleichsoperatoren verwendet werden: >(größer als),<(меньше), =(равно), <>(ungleich), >= (größer oder gleich),<=(меньше или равно).

Beispiele für einfache Bedingungen: A=5 (Der Wert der Variablen A ist 5)

(C+D3)>=(D1*(45-2)) (Der Wert des Ausdrucks auf der linken Seite ist größer oder gleich dem Wert des Ausdrucks auf der rechten Seite)

S<>„ABC“ (Der Wert der Variablen S ist nicht gleich der String-Konstante „ABC“)

Lassen Sie uns ein Beispiel für die Lösung eines anderen Problems geben: „Wählen Sie die größte von zwei Zahlen.“

Die Lösung liegt auf den ersten Blick auf der Hand, ist aber nicht so trivial, wie sie scheint.

Programmbeispiel;

Var A,B,C: Real; (A,B – zum Speichern von Argumenten, C – Ergebnis)

Writeln("Geben Sie zwei Zahlen ein");

Readln(A,B); (Geben Sie Argumente über die Tastatur ein)

Wenn A>B, dann C:=A, sonst C:=B; (Wenn A>B, dann ist das Ergebnis A, andernfalls ist das Ergebnis B)

WriteIn(C); (Wir zeigen das Ergebnis auf dem Bildschirm an)

Ein weiteres klassisches Beispiel: „Lösen Sie eine quadratische Gleichung unter Verwendung gegebener Koeffizienten.“ Diese Aufgabe ist komplizierter. Bevor wir das Programm schreiben, erstellen wir einen Algorithmus und schreiben ihn in Form eines Blockdiagramms. Zuerst geben wir die Koeffizienten ein und berechnen dann die Diskriminante. Nun ergeben sich zwei Möglichkeiten: Entweder gibt es bei einer negativen Diskriminante keine echten Wurzeln, oder bei einer nichtnegativen Diskriminante können diese Wurzeln trotzdem berechnet und angezeigt werden (der Fall, dass die Diskriminante gleich Null ist, ist hier eingeschlossen). , es gibt zwei Wurzeln, nur dass sie gleich sind J).

Wenn Sie einen Algorithmus in einer Programmiersprache schreiben, sollten Sie berücksichtigen, dass es im „Nein“-Zweig nicht eine, sondern drei Aktionen gibt, sodass Sie einen zusammengesetzten Operator verwenden sollten. Vergessen Sie nicht, arithmetische Ausdrücke gemäß den Regeln der Pascal-Sprache zu schreiben. Ansonsten ist dieses Programm nicht komplizierter als das vorherige.

Var A, B, C, D, X1, X2: Real;

Writeln("Geben Sie die Koeffizienten der quadratischen Gleichung ein");

Wenn D<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Interessant ist, dass ein bedingter Operator als Operator fungieren kann, der ausgeführt wird, wenn eine Bedingung erfüllt oder nicht erfüllt ist. In diesem Fall sprechen wir von der Verschachtelung bedingter Anweisungen. Bei der Lösung solcher Probleme empfehle ich dringend, ein Flussdiagramm des Algorithmus in einem Notizbuch zu erstellen. Erst dann, wenn Sie das Programm verfassen, müssen Sie zunächst nur den gesamten Then-Teil sorgfältig ausschreiben und dann mit dem Else-Teil fortfahren. Beim Schreiben von bedingten Anweisungen in Pascal (insbesondere bei mehreren Verzweigungen) werden Befehle normalerweise nach rechts und unten eingerückt geschrieben. Dies erhöht die Sichtbarkeit und reduziert, glauben Sie mir, die Zeitverschwendung beim Debuggen.

Zur Veranschaulichung lösen wir ein weiteres Problem: „Lösen Sie eine Gleichung der Form A*x^2 + B*x + C = 0.“ Bitte verwechseln Sie es nicht mit einer quadratischen Gleichung, von der wir wussten, dass der Koeffizient A ungleich Null ist. Dabei können die Koeffizienten beliebige Zahlen sein. Basierend auf elementaren mathematischen Überlegungen erhalten wir den folgenden Algorithmus:

Var A, B, C, D, X, X1, X2: Real;

Writeln("Geben Sie die Koeffizienten der Gleichung (A, B, C) ein");

Wenn C=0, dann Writeln("X ist eine beliebige Zahl")

Else Writeln("Keine Wurzeln!")

Else Begin X:=-C/B; Writeln("X=",X:8:3) Ende

Wenn D<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Writeln("X1=", X1:8:3, " X2=",X2:8:3)

Zyklus. Arten von Zyklen.

Ein Zyklus ist die wiederholte Wiederholung derselben Art von Aktion. Der Hauptteil des Zyklus besteht aus denselben Aktionen, die viele Male wiederholt werden müssen.

Wie Sie wissen, können Sie dieselben Aktionen mit dem bedingungslosen Sprungoperator wiederholen. Wenn Sie diese Aktionen nacheinander in das Programm schreiben und am Ende einen Sprungoperator an den Anfang dieses Blocks setzen. Allerdings erhält man auf diese Weise nur ein Programm, das ewig läuft (Schleifen). Dies kann vermieden werden, indem zusammen mit dem Übergangsoperator ein bedingter Operator verwendet wird, der die Ausführung des Übergangs von der Erfüllung einer bestimmten Bedingung abhängig macht. Dadurch erhalten wir die Struktur eines bedingten Sprungs und die Möglichkeit, eine Endschleife zu organisieren. Im Allgemeinen können wir auf diese Weise fast jedes Problem lösen, das die Implementierung eines zyklischen Algorithmus erfordert. Natürlich kann man mit nur einer Axt ein Haus bauen. Stellen wir uns die folgenden Fragen: „Wird dieses Haus schön sein? Wie viel Zeit und Mühe können Sie durch den Einsatz aller Arten von Spezialwerkzeugen sparen?“ Wofür? - Aus Gründen der Bequemlichkeit, der Kürze, der einfachen Lesbarkeit des Programms und, ich wage es zu sagen, der Schönheit. Es gibt also drei Arten von Schleifen, die ihre eigenen Pascal-Operatoren zum Schreiben haben. Diese Typen haben ihre eigenen konventionellen Namen: „While“, „Before“, „With Parameter“. Sie unterscheiden sich etwas voneinander und werden jeweils für ihre eigene Aufgabenklasse verwendet.

„BYE“-Zyklus

Eine Gruppe von Operatoren, die als „Schleifenkörper“ bezeichnet wird, wird nach diesem Diagramm ausgeführt, solange die Schleifenbedingung wahr ist. Die Schleife wird beendet, wenn die Bedingung nicht mehr erfüllt ist.

Wenn die Bedingung zunächst falsch ist, wird der Schleifenkörper kein einziges Mal ausgeführt. Wenn die Bedingung zunächst wahr ist und es im Schleifenkörper keine Aktionen gibt, die die Wahrheit dieser Bedingung beeinflussen, wird der Schleifenkörper unendlich oft ausgeführt. Diese Situation wird „Looping“ genannt. Ein Schleifenprogramm kann entweder durch eine Anweisung (durch Drücken von Strg+C) oder durch einen Notstopp des Programms selbst im Falle eines Variablenüberlaufs, einer Division durch Null usw. unterbrochen werden. Daher sollte die Schleifenstruktur mit verwendet werden Vorsicht, wohlverstanden, dass eine wiederholte Ausführung manchmal jemals enden sollte.

In Pascal wird die Struktur der While-Schleife wie folgt geschrieben:

Während<условие>Tun<оператор>;

Wirklich, prägnant? Auf Russisch kann es wie folgt gelesen werden: „Solange die Bedingung wahr ist, führen Sie die Anweisung aus.“ Hier soll, genau wie im bedingten Anweisungsformat, nur eine Anweisung ausgeführt werden. Wenn mehrere Aktionen ausgeführt werden müssen, kann ein zusammengesetzter Operator verwendet werden. Dann nimmt das Operatorformat die folgende Form an:

Während<условие>Tun

<оператор #1>;

<оператор #2>;

<оператор #3>;

Zyklus „VORHER“

Diese Art von Schleife unterscheidet sich von der vorherigen hauptsächlich dadurch, dass die Prüfung auf Wiederholungsbedingung des Schleifenkörpers nicht davor, sondern danach erfolgt. Daher wird der „Vorher“-Zyklus als „mit Nachbedingung“-Zyklus und „Während“ als „mit Vorbedingung“-Zyklus bezeichnet.

Beachten Sie auch, dass eine neue Iteration (erneute Ausführung des Schleifenkörpers) nicht dann erfolgt, wenn die Bedingung wahr ist, sondern genau dann, wenn sie falsch ist. Deshalb hat die Schleife ihren Namen (Führen Sie den Schleifenkörper aus, bis die entsprechende Bedingung erfüllt ist).

10. Eingabe- und Ausgabeoperatoren

Betrachten wir die Organisation der Eingabe und Ausgabe von Daten von einem Endgerät.

Schwärme. Das Endgerät ist das Gerät, mit dem gearbeitet wird

Benutzer, normalerweise ein Bildschirm (Display) und eine Tastatur.

Für die Datenein- und -ausgabe werden Standardeingabeverfahren verwendet

und Lese- und Schreibausgabe für standardmäßige sequentielle Dateien

EINGANG und AUSGANG.

Diese Dateien sind in Zeilen variabler Länge unterteilt, die jeweils voneinander getrennt sind

durch ein Zeichen des Zeilenendes voneinander unterscheiden. Das Zeilenende wird durch Drücken der Taste festgelegt

Zur Eingabe von Quelldaten werden Eingabeprozeduroperatoren verwendet:

Lesen(A1,A2,...AK);

ReadLn(A1,A2,...AK);

Die erste davon implementiert das Lesen von K-Werten der Quelldaten und deren Anwendung

Zuweisen dieser Werte zu den Variablen A1, A2,..., AK. Zweiter Operator

implementiert das Lesen von K-Werten der Quelldaten und überspringt die verbleibenden Werte

bis zum Anfang der nächsten Zeile, Zuweisung der gelesenen Werte an die

Variable A1, A2, ..., AK. Der dritte Operator implementiert das Zeilenspringen mit

laufende Daten.

Bei der Eingabe der Quelldaten erfolgt eine Transformation von außen

Darstellungsform in eine interne Darstellungsform, die durch die Art der Variablen bestimmt wird. Sport-

Die Variablen, die die Eingabeliste bilden, können entweder zu einer Ganzzahl gehören,

entweder echte oder Zeichentypen. Das Original lesen

Der Datentyp Boolean ist in PASCAL nicht zulässig.

Eingabeanweisungen beim Lesen der Werte von ganzzahligen und variablen Variablen

Der reale Typ überspringt Leerzeichen vor der Zahl.

Gleichzeitig überspringen diese Operatoren keine Leerzeichen vor dem Wert.

tionen von Zeichenvariablen, da Leerzeichen gleich sind

Zeichenfolgenzeichen. Ein Beispiel für das Schreiben von Eingabeanweisungen:

var rV, rS: Real;

iW, iJ: Ganzzahl;

................

Read(rV, rS, iW, iJ);

Quelldatenwerte können durch Leerzeichen getrennt werden

und drücken Sie die Tabulator- und Eingabetaste.

Um die Ergebnisse des Programms auf dem Bildschirm anzuzeigen, verwenden Sie

Betreiber:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Der erste dieser Operatoren implementiert die Ausgabe der Werte der Variablen A1,

A2,...,AK Zeile des Bildschirms. Der zweite Operator implementiert die Ausgabe

Werte der Variablen A1, A2,..., AK und Übergang zum Anfang der nächsten

Linien. Der dritte Operator implementiert das Überspringen einer Zeile und das Zurückgehen zum Anfang

nächste Zeile.

Die Variablen, aus denen die Ausgabeliste besteht, können sich auf eine Ganzzahl beziehen.

reelle, zeichenhafte oder boolesche Typen. Als Element

In der Ausgabeliste können neben Variablennamen auch Ausdrücke verwendet werden

und Linien.

Jeder Wert wird entsprechend in einer Zeile des Bildschirms ausgegeben

abhängig von der implementierungsspezifischen Ausgabefeldbreite

Die Darstellungsform der Werte im Ausgabefeld entspricht dem Typ

Ausdrücke und Ausdrücke: Werte vom Typ Ganzzahl werden als ganze Zehner ausgegeben

reelle Zahlen – wie echte Dezimalzahlen

Zahlen mit Dezimalreihenfolge, Zeichentyp und Zeichenfolgen – in Form von Symbolen

Ochsen, logischer Typ - in Form der logischen Konstanten TRUE und FALSE.

Mit dem Ausgabeoperator können Sie die Breite des Ausgabefelds für jedes Feld festlegen

Ausgabelistenelement. In diesem Fall

Das Ausgabelistenelement hat die Form A:K, wobei

A – Ausdruck oder Zeichenfolge, K – Ausdruck oder Ganzzahlkonstante.

Wenn der Ausgabewert weniger Positionen im Ausgabefeld einnimmt als K,

dann werden diesem Wert Leerzeichen vorangestellt. Wenn der Ausgabewert lautet

nicht in die Breite des K-Feldes passt, dann gibt es für diesen Wert ein

die erforderliche Anzahl der Positionen ist angegeben. Für echte Werte

Ein Ausgabelistenelement kann die Form A:K:M haben, wobei A eine Variable oder ein Ausdruck ist

Definition des tatsächlichen Typs, K – Breite des Ausgabefelds, M – Anzahl der Ziffern

Bruchteil des Ausgabewerts. K und M sind Ausdrücke oder Konstanten

Integer-Typ. In diesem Fall werden die tatsächlichen Werte im Formular ausgegeben

Festkomma-Dezimalzahl.

Ein Beispiel für das Schreiben von Ausgabeanweisungen:

. . . . . . . . . . . .

var rA, rB: Real;iP,iQ:Integer;

bR, bS: Boolean;chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

Bei der Eingabe erster Informationen und der Ausgabe von Ergebnissen interagiert jedes Programm mit externen Geräten. Ein Sonderfall des Datenaustauschs mit externen Geräten ist der Austausch mit der Konsole. Die Konsole ist eine Kombination aus Tastatur und Bildschirm.

Schauen wir uns die Möglichkeiten an, die Eingabe und Ausgabe von Informationen zu organisieren, die von der Programmiersprache Pascal bereitgestellt werden.

Einreiseverfahren

Bei der Dateneingabe werden Quelldaten von einem externen Gerät in den RAM übertragen.

Das externe Eingabegerät ist normalerweise eine Tastatur oder eine Datendatei.

Um Daten über die Tastatur in Pascal einzugeben, werden die Prozeduren read und readln verwendet, die das folgende Format haben:

  • lesen(Liste);
  • readln(list);

Die readln-Prozedur ähnelt der read-Prozedur, der einzige Unterschied besteht darin, dass nach dem Lesen des letzten Werts einer Variablen aus der Liste die nächste Dateneingabe an den Anfang einer neuen Zeile verschoben wird.

Das Element „Liste“ ist eine durch Kommas getrennte Liste von Variablennamen, deren Werte über die Tastatur eingegeben werden (beachten Sie, dass die Liste leer sein kann), zum Beispiel:

  • lesen(a, b, c);
  • readln;

Die eingegebenen Werte müssen durch Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch) getrennt werden und ihre Anzahl ist nicht begrenzt. Die Dateneingabe für einen Vorgang wird durch Drücken der Eingabetaste abgeschlossen. Wird die readln-Prozedur ohne Parameter verwendet, wartet sie auf das Drücken der Enter-Taste.

ACHTUNG: Die eingegebenen Werte müssen mit den Typen der Variablen übereinstimmen, sonst kommt es zu einem Fehler (z. B. ist die Variable b vom Typ integer , aber die Eingabe ist eine reelle Zahl).

Auszahlungsverfahren

Bei der Ausgabe handelt es sich um den Prozess der Übertragung von Daten nach der Verarbeitung vom RAM an ein externes Gerät.

Um Daten auf dem Bildschirm in Pascal anzuzeigen, werden die Prozeduren write und writeln verwendet, die das folgende Formular haben:

  • write(list);
  • writeln(list);

Wenn Sie das Schreibverfahren verwenden, bleibt der Cursor nach der Anzeige des letzten Elements der Liste auf dem Bildschirm in derselben Zeile. Die writeln-Routine bewegt den Cursor nach Abschluss der Ausgabe in die nächste Zeile. Wenn der writeln-Prozedur keine Parameter übergeben werden, wird der Cursor einfach in die nächste Zeile verschoben.

Regeln zum Aufzeichnen von Ausgabeprozedurparametern

  1. Die Ausgabeliste wird durch Kommas getrennt
  2. Die Ausgabeliste kann Variablen, Konstanten und Ausdrücke enthalten
  3. Für die Ausgabe eines beliebigen Werts können Sie das Format des Ausgabefelds festlegen – die Anzahl der Positionen, an denen der Wert platziert wird (angegeben unmittelbar nach dem Ausgabewert, getrennt durch einen Doppelpunkt):
    • ist der angezeigte Wert kürzer, wird er an den rechten Rand des zugewiesenen Feldes „gedrückt“, andernfalls wird das Feld auf die erforderliche Größe „erweitert“;
    • Für reelle Zahlen bietet das Format des Ausgabefelds die Möglichkeit, die Anzahl der anzuzeigenden und für den Bruchteil der Zahl zugewiesenen Stellen anzugeben (der Dezimalpunkt belegt ebenfalls eine Stelle).

Zum Beispiel:

  • writeln("a = ", a:2, " ", 10 + sqrt(a):2:4, " ", pi:4:2);
gastroguru 2017