Wer hat die algorithmische Sprache entwickelt? Russische algorithmische Sprache. Masse Charakter. Das bedeutet, dass der Algorithmus zur Lösung des Problems in allgemeiner Form entwickelt wird, d.h. es sollte für eine bestimmte Klasse von Problemen anwendbar sein, die sich nur in den Ausgangsdaten unterscheiden. Gleichzeitig ref

Jede Programmiersprache ist voll von einer Vielzahl von Schlüsselwörtern, Funktionen oder Klassen. In der Regel verwenden sie alle Englisch, in dem Methoden oder Argumente beschrieben werden. In manchen Umgebungen gibt es überhaupt nur Abkürzungen für Maschinenfunktionen. Dies machte es in der Anfangsphase schwierig, die Entwicklung zu meistern. Um die Verständigungsgeschwindigkeit zu erhöhen, wurde eine Reihe spezieller algorithmischer Programmiersprachen erstellt, die aus verständlichen und zugänglichen Wörtern und deren Kombinationen bestanden, die auch einem unvorbereiteten Menschen klar sind.

Ein bisschen Geschichte

Um mit den ersten Computern zu kommunizieren, wurden Programmiersprachen verwendet, die dem Maschinencode möglichst nahe kamen, bestehend aus Nullen und Einsen. Natürlich war es eine sehr schwierige Aufgabe, sich viele Befehle zu merken. Darüber hinaus lag die Methodik zur Speicherzuweisung in der Programmierung vollständig auf den Schultern des Entwicklers. Und wenn er einen kleinen Fehler machte, musste er alles von Anfang an wiederholen.

Die Assemblersprache auf niedriger Ebene spielte eine große Rolle beim Übergang von einer Maschinensprache zu einer besser geeigneten Person. Es verwendete mnemonische Bedeutungen und Symbole. Dies vereinfachte die Aufgabe des Entwicklers, da er seine Algorithmen nun produktiver aus Kombinationen von Steueranweisungen und Zahlencodes aufbauen konnte. Bei aller Flexibilität und Kraft war die Sprache immer noch schwer zu erlernen.

Um Entwicklung und Algorithmen in Bildungseinrichtungen zu lehren, begann die Einführung der Programmiersprache BASIC. Es enthielt bereits viele Befehle, Schlüsselwörter, die der Auszubildende verstehen konnte. BASIC wird immer noch verwendet, um die Grundlagen der Programmierung zu beherrschen.

Mit der Entwicklung der ersten algorithmischen Programmiersprache – Algol – hat sich der Prozess der Beherrschung von Algorithmen deutlich beschleunigt.

Was ist der Algorithmus

Wenn wir uns von trockenen Theorien und Definitionen entfernen, dann ist ein Algorithmus eine Folge von Aktionen, die darauf abzielen, ein gegebenes Problem zu lösen. Bei allem kunstvollen Ausdruck stößt ein Mensch jeden Tag auf dieses Konzept. Um beispielsweise Tee zu trinken, müssen Sie die folgende Sequenz ausführen:

  1. Stellen Sie den Wasserkocher auf den Herd.
  2. Warten Sie, bis es kocht.
  3. Gießen Sie kochendes Wasser in das Wasser.
  4. Tauchen Sie den Teebeutel in die Tasse.
  5. Fügen Sie die erforderliche Menge Zucker, Milch oder Honig hinzu.

Diese Sequenz ist sehr vereinfacht, aber es ist der einfachste Algorithmus.

Genau wie ein Mensch ist eine Rechenmaschine in der Lage, eine bestimmte Abfolge von Aufgaben auszuführen. Damit sie sie jedoch klar verstehen kann, muss berücksichtigt werden, dass es für einen Computer nicht viele Konzepte gibt, die für den Menschen offensichtlich sind. Darüber hinaus muss der Algorithmus alle erforderlichen Aktionen genau beschreiben. Dazu dient die algorithmische Sprache, die eine Art Brücke zwischen Maschine und Mensch schafft.

Eigenschaften und Merkmale der algorithmischen Sprache

Algorithmisch - eine formale Sprache, in der Algorithmen beschrieben werden, die auf Computern ausgeführt werden sollen. Sie ist in der Regel an keine Maschinenarchitektur gebunden. Dies hilft, die Codierung erheblich zu beschleunigen und zu beschleunigen. Als anschauliches Beispiel - die algorithmische Sprache BASIC. Pascal und C erwiesen sich auch wegen ihrer einfachen Syntax und Lerngeschwindigkeit als beliebt.

Die Struktur ist so implementiert, dass die im Code beschriebenen Prozeduren nacheinander ausgeführt werden. Das heißt, ein Algorithmus - eine Aufgabe. Dies ist vergleichbar mit dem Erstellen von Funktionen oder Methoden in C und Java.

Der gesamte Code besteht aus Schlüsselwörtern, die ein Ereignis oder eine Variable beschreiben.

Unterschiede zwischen maschinellen und algorithmischen Sprachen

Die Assemblersprache ist ein prominenter Vertreter der maschinenabhängigen Sprache. Die Programmierung darin läuft darauf hinaus, dem Übersetzer mit speziellen Markierungen anzuzeigen, was und wohin er verschieben oder welcher Datenbereich zu füllen ist. Da die Syntax von Assembler eher der Maschinensyntax ähnelt, ist es ziemlich schwierig, Code darin zu studieren und zu schreiben. Unten sehen Sie, wie die Befehle für verschiedene Prozessoren aussehen könnten.

Daher wurde eine formale oder algorithmische Sprache mit einer großen Anzahl von menschenlesbaren Schlüsselwörtern und Namen geschaffen.

Stichworte

Eine algorithmische Sprache besteht aus Schlüsselwörtern, die Abkürzungen für die vollständige Bezeichnung von Aktionen oder Variablen sind. Auf diese Weise können Sie die Länge Ihres Codes verkürzen, während er verständlich bleibt.

  • Alg... Jeder Algorithmus beginnt mit diesem Schlüsselwort. Es beschreibt den Namen und gibt in Klammern an, welche Argumente es für die Berechnung braucht und was das Ergebnis sein soll.
  • Arg... Gibt die Argumente für den Algorithmus an. Gibt den Typ und den Namen des Werts wieder, der im Code verwendet wird.
  • Auflösung... Dieses Schlüsselwort wird verwendet, um den Typ und den Namen der Variablen zu bestimmen, in die das Ergebnis der Berechnung eingefügt werden soll.
  • Anfang Zeigt den sofortigen Start der Algorithmusausführung an. Dauert bis zum Schlüsselwort con. Das gesamte Intervall von "Start" bis "Ende" wird als Rumpf des aktuellen Algorithmus bezeichnet.
  • Kon. Zeigt an, dass die Ausführung des Algorithmus beendet ist.
  • Gegeben... Er spricht über einige Besonderheiten und Nuancen der Verwendung des Algorithmus oder über Einschränkungen. Hier können Sie beispielsweise festlegen, dass die Längen der verglichenen Strings gleich sein müssen. Die Verwendung des Schlüsselworts "gegeben" ist optional.
  • Es ist notwendig... Eine genauere Beschreibung dessen, was aus der Ausführung des Algorithmus resultieren soll. Es kann ebenso wie "gegeben" weggelassen werden, es wird jedoch empfohlen, es zu verwenden, um verständlicheren und detaillierteren Code zu erstellen.

Die Liste dieser Schlüsselwörter bezieht sich auf den Titel und die Bezeichnung des Hauptteils des Algorithmus. Und so sehen Token für Variablen aus:

  • Intakt... Der Variablentyp von Ganzzahlen. Ihr Bereich sollte von -32768 bis 32767 variieren.
  • Dinge... Reale Nummern. Zum Beispiel mit einem Exponenten oder einem Bruchteil.
  • Log... Dieses Schlüsselwort bedeutet, dass eine boolesche Variable verwendet wird, die nur "yes" oder "no" akzeptieren kann.
  • Sim. Dazu gehören Werte mit einzelnen Zeichen, wie zum Beispiel „a“, „3“.
  • Zündete... String-Variablen, die ganze Textstrings enthalten können.
  • Tab... Kennzeichnet eine Tabelle mit Daten eines bestimmten Typs. Es ist analog zu einem Array aus anderen Programmiersprachen.

Zusätzliche Servicewörter

Die folgende Wortliste wird verwendet, um Verzweigungs- und Schleifenmechanismen zu organisieren.

  • Zum... Es wird verwendet, um über alle Werte eines bestimmten Bereichs zu iterieren. Es wird für Schleifen verwendet, d. h. die kontinuierliche Ausführung beliebiger Prozeduren mit Daten.
  • Von und bis... Gibt an, über welchen Wertebereich in einer "for"-Schleife iteriert werden soll.
  • Tschüss... Dient auch zum Iterieren über mehrere Werte. Wird verwendet, um zu arbeiten, bis eine bestimmte Bedingung erfüllt ist.
  • Nts und kts... "Nts" bedeutet in der algorithmischen Sprache den Anfang des Zykluskörpers und "kts" das Ende. Zwischen diesen beiden Schlüsselwörtern sind die für die Berechnung notwendigen Prozeduren eingebettet.
  • Wenn ein. Dieses Wort implementiert die Verzweigungsstruktur. So können Sie unter Berücksichtigung der Rahmenbedingungen den Programmverlauf in die gewünschte Richtung bestimmen.
  • Das sonst... Zwei Wörter gepaart mit wenn. Sie bauen auch einen Verzweigungsmechanismus auf.
  • Wahl... Ein praktisches Werkzeug zum Verzweigen von mehreren Werten des gleichen Typs. Funktioniert in Verbindung mit dem Schlüsselwort "at" und "otherwise".
  • Alles... Bezeichnet das Ende des Verzweigungsmechanismus.
  • Eingang... Dieses Schlüsselwort ermöglicht es dem Benutzer, die Werte von Variablen während des Programms für ihre spätere Verarbeitung einzugeben.
  • Ausgabe. Erzeugt die Datenausgabe auf dem Bildschirm.

Grundlegende Sprachstrukturen

Eine algorithmische Programmiersprache hilft beim Aufbau verschiedener Strukturen, die auf bequeme Weise Rechenfunktionen erzeugen. Im Allgemeinen kann jede Sprache mehrere spezifische Mechanismen und deren Kombinationen verwenden.

Nachfolgestruktur

Beim Entwerfen einer solchen Struktur wird der Code direkt Zeile für Zeile ausgeführt. Ein allgemeines Beispiel lässt sich so ausdrücken:

alg Summe zweier Zahlen (arg ist ganzzahlig a, b, res ist ganzzahlig S)

Ausgang "S =", S

In diesem Beispiel wird die Summe zweier vom Benutzer eingegebener Zahlen berechnet. Am Anfang zeigt das Wort „alg“ an, dass der Algorithmus startet und beschreibt kurz, was er genau macht. Die Klammern definieren die für die Ausführung des Programms erforderlichen Argumente und eine Variable, die als Container zum Speichern der Ergebnisse dient. Als nächstes kommt das Schlüsselwort "start", das den sofortigen Beginn der Ausführung von Ausdrücken und Prozeduren angibt. Neben "start" können einige Zwischenvariablen definiert werden.

Im Hauptteil des Algorithmus nimmt das Schlüsselwort "input" Daten vom Benutzer und schreibt sie in Variablen. Dann werden sie addiert und ihre Summe wird S zugewiesen. Vor dem Ende des Algorithmus wird das Ergebnis des Programms mit dem Schlüsselwort "output" auf dem Bildschirm angezeigt. Diese Notation in einer algorithmischen Sprache ist typisch für viele andere Programmierumgebungen.

Verzweigungsstruktur

Der Programmablauf muss nicht immer Zeile für Zeile ablaufen. Manchmal müssen Sie den Wert einer bestimmten Variablen situationsabhängig bestimmen oder ändern. Wenn beispielsweise x = 0 ist, dividiere nicht durch x.

Die algorithmische Programmiersprache verwendet hierfür mehrere Konstruktionsvarianten und die Schlüsselwörter „wenn“, „dann“, „sonst“ oder „Wahl“. Nach dem "if" wird eine Bedingung gesetzt, anhand derer das Kriterium für den Wechsel in einen anderen Zweig bestimmt wird. Zum Beispiel so:

Somit können Sie die Werte der Variablen in Abhängigkeit von anderen Faktoren ändern. Dieses Beispiel deckt nicht alle möglichen Implementierungen vollständig ab. Daher wird neben der Konstruktion das Schlüsselwort "sonst" verwendet. Es ermöglicht Ihnen, zu einem anderen Zweig zu wechseln, wenn die Bedingung die ausgewählten Kriterien nicht erfüllt.

sonst y = 0

Das heißt, wenn x ungleich null ist, ist y auch null, unabhängig von dem Wert, den es zuvor hatte.

Ein bequemeres Mittel, um Mehrfachauswahlen zu treffen, ist das "Auswahl"-Konstrukt. Es ermöglicht Ihnen, über mehrere Bedingungen zu iterieren. Wenn einer von ihnen ausgelöst wird, wird die angegebene Aktion ausgeführt.

bei x = 0: y = 0

bei x = 1: y = 1

bei x = 2: y = 2

Dieses Beispiel demonstriert die Abhängigkeit der Variablen y von x. Das Programm durchläuft alle Daten und vergleicht den aktuellen Wert von x mit dem in der Bedingung angegebenen Wert. Wenn eine Übereinstimmung gefunden wird, führt es die nächste Aktion danach aus. Dieses Design kann auch mit dem Stichwort "sonst" für flexiblere Lösungen kombiniert werden, wenn keine der Bedingungen funktioniert hat.

Fahrräder

Schleifen spielen bei der Programmierung eine sehr wichtige Rolle. Kaum eine Entwicklung kommt ohne die Umsetzung dieses Designs aus. Im allgemeinen Fall lösen Schleifen das Problem, den gleichen Aktionstyp mit mehreren Variablen mehrmals auszuführen. Dies ist beispielsweise praktisch, wenn Sie Arrays nach einer bekannten Formel mit Daten füllen, sortieren oder einige Werte berechnen möchten.

Mit dem Schlüsselwort "while" können Sie einen Zyklus organisieren, in dem eine bestimmte Aktion wiederholt wird, bis eine bestimmte Bedingung erfüllt ist. Beispielsweise:

tschüss x<= 3

In diesem Beispiel wird y zunehmen, bis x größer als 3 wird. Damit die Schleife nicht unendlich ist, muss x in jedem Durchlauf auf eine größere Seite geändert werden, zum Beispiel um 1, was die zweite Codezeile tut .

Das Schlüsselwort "for" wird auf einen bestimmten Zahlenbereich angewendet, der sequentiell durchlaufen werden muss, wobei eine Aktion ausgeführt wird. Diese Konstruktion wird verwendet, wenn eine endliche Anzahl von Elementen bekannt ist.

Seine Syntax sieht so aus:

nts für x von 1 bis 3

Die Servicewörter „von“ und „bis“ geben den Wertebereich an, der aufgezählt werden muss. Somit wird in der ersten Iteration x = 1 als Ergebnis des Durchgangs auch y den Wert 1 annehmen. Weiter geht die Steuerung wieder an den Anfang, und x ist nun gleich 2 bzw. y wird 3.

Mit den gemeinsamen Konstruktionen von Schleifen und Verzweigungen können Sie die einfachsten Algorithmen erstellen, um einfache Probleme zu lösen und Kenntnisse über die Arbeit von Programmiersprachen zu erlangen.

Standardfunktionen

In eine algorithmische Sprache sind bereits Standardfunktionen eingebaut. Sie sind in der Lage, einige Routineoperationen mit Zahlen und Ausdrücken zu erleichtern. Die Standardfunktionen der algorithmischen Sprache können die Quadratwurzel, Logarithmen, Module, Sinus, Kosinus usw. berechnen.

  • absolutes Modul - abs (x);
  • Quadratwurzel - Quadrat (x);
  • natürliche und dezimale Logarithmen - ln (x) und lg (x);
  • minimal und maximal zwei Zahlen - min (x, y), max (x, y);
  • Sinus, Kosinus, Tangens, Kotangens - Sinus (x), Kosinus (x), tg (x), ctg (x).

Diese Standardfunktionen ermöglichen es Ihnen, die Erstellung eines "Fahrrads" zu vermeiden und helfen, einfachste Funktionen mit Standardmitteln zu implementieren.

Boolesche Ausdrücke

Boolesche Ausdrücke geben an, ob eine Operation eine Bedingung erfüllt. Zum Beispiel ist x> 0 wahr, wenn x 1, 2, 25 oder eine andere Zahl größer als Null ist. Die algorithmische Sprache enthält logische Ausdrücke, die zusätzlich zu mathematischen Standardoperationen die folgenden Schlüsselwörter und Operatoren verwenden können:

  • UND. Bedeutet, dass die Ausdrücke, zwischen denen sich das Schlüsselwort befindet, eine bestimmte Bedingung erfüllen müssen: (x> 0) und (y> 0);
  • Oder... Einer der Ausdrücke erfüllt möglicherweise nicht die Bedingung, zum Beispiel (x > 0) oder (y > 0);
  • Nicht... Kehrt den booleschen Wert des Ausdrucks um. Zum Beispiel eine solche Konstruktion nicht(x> 0) bedeutet, dass x trotzdem nicht größer als Null sein darf.

Vergleichsoperatoren sind ebenfalls vorhanden -<, >, =, die kombiniert werden können, um Ausdrücke vom Typ größer oder gleich zu erstellen.

Ein kleines Programm für eine algorithmische Sprache

Um den Prozess zu verstehen, können Sie ein Programm organisieren, das mit dem Benutzer interagiert. Sie wird nach einer Zahl fragen, und die Maschine wird sie quadrieren.

Die Komponenten einer algorithmischen Sprache umfassen viele Schlüsselwörter. Das erste, womit das Programm beginnt, ist die Deklaration des Algorithmus - alg.

alg Quadratzahl ()

In Klammern müssen Sie ein Argument angeben, das den Wert des Benutzers und das Ergebnis darstellt. Vergessen Sie auch nicht die Angabe der Typen dieser Daten.

Jetzt weiß die Maschine, dass sie mit einer ganzzahligen Variablen interagieren muss, und das Ergebnis ihrer Arbeit ist S.

Als erstes müssen Sie die Daten eingeben. Dies geschieht mit dem Schlüsselwort "enter".

Nun müssen Sie direkt im Hauptteil des Algorithmus eine Reihe von Befehlen beschreiben, mit denen die Berechnung der Zahlenquadrate durchgeführt wird.

Ausgang "S =", S

Eine algorithmische Sprache, deren Befehle die Umsetzung der Zuweisung ermöglichen, wird in der Form geschrieben: =. Somit erhält die Variable S selbst den Wert des Produkts x. Die Ausgabezeile zeigt das Ergebnis auf dem Bildschirm an. Nun, alles endet mit dem Schlüsselwort "con". Der komplette Code sieht nun so aus:

alg Quadriert eine Zahl (arg integer x, res integer S)

Ausgang "S =", S

Auf so einfache Weise wird der Algorithmus zur Berechnung des Quadrats der eingegebenen Zahl implementiert. Das Programm kann kompliziert werden, indem man die Summe aller Operationen hinzufügt. Und dann sieht es so aus:

alg Quadriert eine Zahl und berechnet ihre Summe (arg integer x, res integer S)

gegeben | x> 0

es ist notwendig | S = 1 * 1 + 2 * 2 + ... + x * x

Start intakt

Eingabe x; S: = 0

nts für a von 1 bis x

Ausgang "S =", S

Diese Variante verwendet eine Schleife, eine Zwischenvariable a und eine kurze Anweisung an die Aufgabe in den Abschnitten "gegeben" und "muss". Wenn Sie nun eine bestimmte Zahl an das Programm übergeben, quadriert es diese und gibt die Summe der Quadrate aller vorhergehenden Zahlen aus.

Einsatz und Entwicklung algorithmischer Sprachen

Algorithmische Sprache ist in der Lernumgebung üblich, um die grundlegenden Normen und Regeln der Programmierung zu verstehen. Zum Beispiel BASIC, das an vielen Schulen gelehrt wird. Es spiegelt perfekt alle Paradigmen eines solchen Begriffs als eine zwingende Programmiersprache wider, in der alle Befehle sequentiell nacheinander ausgeführt werden.

Aufgrund der Nähe der beschriebenen Konstrukte und Schlüsselwörter zur menschlichen Sprache ist es viel einfacher geworden, Code zu schreiben als auf vollständig maschinen- oder maschinenabhängigen Modellen. Die Programmiersprachenfamilie Algol ist in ihrer Entwicklung am weitesten fortgeschritten, da ihre Syntax in mehreren Lokalisierungen vorgestellt wurde. Es war möglich, den Code sogar auf Russisch zu schreiben.

Im Allgemeinen hat die Entwicklung algorithmischer Sprachen die Programmierung im Allgemeinen stark beeinflusst und es einer großen Anzahl von Menschen ermöglicht, Entwickler zu werden. Moderne Tools werden immer zugänglicher und verständlicher. Hohe Programmiersprachen enthalten immer mehr Funktionen mit aussagekräftigen Namen und Titeln. Die Grenzen ihres Einsatzes werden kleiner. Somit ist in Zukunft eine verständlichere und natürlichere Umsetzung der Entwicklung möglich.

Ein Computer kann ein Programm nur ausführen, wenn die darin enthaltenen Anweisungen in binärem Maschinencode, d.h. in einer Sprache ausgedrückt, deren Alphabet aus logischen Einsen und Nullen besteht. Für die ersten Computer wurden Programme direkt in Maschinencodes kompiliert, was eine hohe Qualifikation der Programmierer und einen hohen Arbeitsaufwand erforderte, daher begann bereits in den 40er Jahren die Entwicklung von Programmiersprachen, die in ihrem Vokabular möglichst nahe kommen zur natürlichen Sprache des Menschen. Solche Programmiersprachen heißen algorithmisch.

Ein Zwischenschritt zur Entwicklung algorithmischer Sprachen war die Sprache Monteur... In Assembler werden Anweisungen nicht durch Binärzahlen, sondern als Kombinationen von Zeichen (mnemonische Codes) dargestellt, durch die die Bedeutung der Anweisung reproduziert werden kann, wodurch die Schwierigkeiten und Nachteile der Programmierung in Maschinensprache deutlich beseitigt werden. Assembler hat jedoch auch Nachteile - es ist eine maschinenorientierte Sprache, und für jeden Computer wird eine eigene Assemblersprache erstellt. Die Programmierung in Assembler erfordert von einem Programmierer gute Kenntnisse der Architektur (des Geräts) eines Computers und ist mit erheblichen Arbeitskosten verbunden. Gleichzeitig können Sie mit Hilfe von Assembler die Computerressourcen optimal nutzen in einem Programm (Speicher, Geschwindigkeit), daher ist Assembler unter professionellen Programmierern immer noch weit verbreitet.

Die erste algorithmische Sprache war Fortran, gegründet 1957. von IBM-Spezialisten unter der Leitung von John Beckus. Es gibt mittlerweile viele algorithmische Sprachen: Pascal, C, Algol, PL1, Basic, Lisp, Prolog und viele andere.

Algorithmische Sprachen und Assembler sind symbolische Programmiersprachen, d.h. zu Sprachen, die nicht mit Maschinencodes, sondern mit herkömmlichen symbolischen Notationen arbeiten, daher können in diesen Sprachen geschriebene Programme nicht direkt auf einem Computer ausgeführt werden. Damit ein solches Programm funktioniert, muss sein Text in Maschinencodes umgewandelt werden. Dafür gibt es spezielle Übersetzerprogramme (Übersetzer). Es gibt 2 Arten von Übersetzern - Compiler und Interpreter. Compiler sendet das gesamte Programm auf einmal und erst danach ist seine Ausführung möglich. Dolmetscher ist ein einfacherer Übersetzer, der Programmanweisungen sequentiell übersetzt und auch in Teilen ausführt.

21) Die Struktur des Programms in C / C++.

Ein C++ Programm besteht aus Funktionen , Beschreibungen und Präprozessordirektiven ... Eine der Funktionen muss einen Namen haben Main ... Die Programmausführung beginnt mit der ersten Anweisung dieser Funktion. Die einfachste Funktionsdefinition hat das folgende Format:


In der Regel wird eine Funktion verwendet, um einen Wert zu berechnen, daher wird ihr Typ vor dem Namen der Funktion angegeben. Nachfolgend die wichtigsten Informationen zu den Funktionen:

  • soll die Funktion keinen Wert zurückgeben, wird der void-Typ angegeben:
  • der Funktionsrumpf ist ein Block und wird daher in geschweifte Klammern eingeschlossen;
  • Funktionen können nicht verschachtelt werden;
  • jede Anweisung endet mit einem Semikolon (außer bei einer zusammengesetzten Anweisung).

Ein Beispiel für den Aufbau eines Programms mit den Funktionen main, fl und f2:

Das Programm kann aus mehreren bestehen Module (Quelldaten).

Ein paar Hinweise zu I/O in C++

Die Sprache C++ hat keine eingebaute I/O – sie wird mit den in den Standardbibliotheken enthaltenen Funktionen, Typen und Objekten implementiert. Es gibt zwei Möglichkeiten: von der C-Sprache geerbte Funktionen und C++-Objekte.

Grundlegende C-Style I/O-Features:

int scanf (const char * format, ...) // Eingabe
int printf (const char * format, ...) // Ausgabe

Sie führen eine formatierte Ein- und Ausgabe einer beliebigen Anzahl von Werten gemäß der Formatzeichenfolge durch. Die Formatzeichenfolge enthält Zeichen, die bei der Ausgabe in den Stream (auf den Bildschirm) kopiert oder bei der Eingabe aus dem Stream (über die Tastatur) angefordert werden, sowie Konvertierungsangaben, die mit einem %-Zeichen beginnen und bei der Eingabe durch bestimmte Werte ersetzt werden und Ausgabe.

Ein Beispielprogramm, das I/O-Funktionen im C-Stil verwendet:

#einschließen
int main() (
int ich;
printf ("Geben Sie eine ganze Zahl \ n ein");
scanf ("% d", & i);
printf ("Sie haben die Zahl% d eingegeben, danke!", i);
0 zurückgeben;
}

Die erste Zeile dieses Programms ist eine Präprozessordirektive, nach der eine Header-Datei in den Programmtext eingefügt wird, die eine Beschreibung der im Programm verwendeten Ein-/Ausgabefunktionen enthält (Spitze Klammern sind in diesem Fall ein Sprachelement). Alle Präprozessordirektiven beginnen mit einem #-Zeichen.

Die dritte Zeile ist eine Beschreibung einer ganzzahligen Variablen namens i.

Die Funktion printf in der vierten Zeile druckt die Eingabeaufforderung "Bitte geben Sie eine ganze Zahl ein" und fährt entsprechend der Escape-Sequenz \ n mit einer neuen Zeile fort. Die Funktion scanf gibt eine über die Tastatur eingegebene Ganzzahl in die Variable i ein (das &-Zeichen bedeutet den Vorgang des Abrufens einer Adresse), und die nächste Anweisung zeigt die angegebene Zeichenfolge auf dem Bildschirm an und ersetzt die Konvertierungsspezifikation
auf den Wert dieser Zahl.

Und so sieht das gleiche Programm mit der C++-Klassenbibliothek aus:

#einschließen
int main() (
int ich;
cout<< "Введите целое число\ nein"; cin >> ich;
cout<< "Вы ввели число " << i << ", спасибо!";
0 zurückgeben;
}

Die Header-Datei enthält eine Beschreibung einer Reihe von Klassen zur Verwaltung von E / A. Es definiert die Standard-Stream-Objekte cin für Tastatureingaben und cout für die Ausgabe auf dem Bildschirm sowie Stream-Operationen.< < и чтения из потока >>.

22) Das Alphabet und die Bezeichner in der Sprache C / C ++.

ALPHABET
lateinische Groß- und Kleinbuchstaben und Unterstrich;
Arabische Ziffern von 0 bis 9;
Leerzeichen: Leerzeichen, Tabulatoren, Zeilenumbrüche.
spezielle Charaktere:

Sprachlexeme werden aus den Symbolen des Alphabets gebildet:
Identifikatoren;
Schlüsselwörter (reserviert);
Betriebszeichen;
Konstanten;
Trennzeichen (Klammern, Punkt, Komma, Leerzeichen).

IDENTIFIKATIONEN
Der Bezeichner kann lateinische Buchstaben, Zahlen und Unterstriche enthalten;
Groß- und Kleinbuchstaben sind unterschiedlich;
Das erste Zeichen eines Bezeichners kann ein Buchstabe oder ein Unterstrich sein, aber keine Zahl;
Leerzeichen innerhalb von Namen sind nicht erlaubt;
Die Länge eines Bezeichners ist nicht durch den Standard begrenzt, aber einige Compiler und Linker begrenzen sie;
Der Bezeichner darf nicht mit Schlüsselwörtern identisch sein;
Es wird nicht empfohlen, Bezeichner mit einem Unterstrich zu beginnen (sie können mit den Namen von Systemfunktionen oder Variablen übereinstimmen);
Auf Bezeichnern, die verwendet werden, um externe Variablen zu definieren;
Es gibt Linker-Einschränkungen (die Verwendung verschiedener Linker oder Linker-Versionen stellt unterschiedliche Anforderungen an die Namen externer Variablen).

C++-Schlüsselwörter

23) Integer-Datentypen in C / C++.

Ein Integer-Datentyp ist dafür ausgelegt, gewöhnliche Integer im Computerspeicher darzustellen. Der wichtigste und häufigste Integer-Typ ist der Typ int... Seine Sorten werden viel seltener verwendet: kurz(kurze ganze Zahl) und lange(lange ganze Zahl). Integer-Typen beinhalten auch den Typ verkohlen(Charakter). Darüber hinaus können Sie bei Bedarf den Typ lang Lang(lang-lang!), die, obwohl nicht vom Standard definiert, von vielen C++-Compilern unterstützt wird. Standardmäßig sind alle Integer-Typen ikonisch, d.h. das höchstwertige Bit in solchen Zahlen bestimmt das Vorzeichen der Zahl: 0 ist eine positive Zahl, 1 ist eine negative Zahl. Zusätzlich zu vorzeichenbehafteten Zahlen in C++ können Sie ohne Vorzeichen... In diesem Fall sind alle Ziffern an der Bildung einer ganzen Zahl beteiligt. Bei der Beschreibung von vorzeichenlosen Integer-Variablen wird das Wort hinzugefügt ohne Vorzeichen(ohne Vorzeichen).

Übersichtstabelle der vorzeichenbehafteten Integer-Datentypen:

Datentyp Größe, Byte Wertebereich
verkohlen -128 ... 127
kurz -32768 ... 32767
int -2147483648 ... 2147483647
lange -2147483648 ... 2147483647
lang Lang -9223372036854775808 ... 9223372036854775807

Übersichtstabelle der vorzeichenlosen Integer-Datentypen:

Datentyp Größe, Byte Wertebereich
unsigniertes Zeichen 0 ... 255
unsigned short 0 ... 65535
unsigned int (Sie können einfach unsigned) 0 ... 4294967295
lange nicht signiert 0 ... 4294967295
unsigniert lang lang 0 ... 18446744073709551615

Es lohnt sich kaum, sich an die Grenzwerte zu erinnern, insbesondere für 4 oder 8 Byte Integer, es reicht zumindest zu wissen, in welcher Reihenfolge diese Werte sein können, zum Beispiel type int- ungefähr 2 · 10 9.

In der Praxis empfiehlt es sich, überall den Basis-Integer-Typ zu verwenden, d.h. int... Der Punkt ist, dass Daten des grundlegenden Integer-Typs fast immer schneller verarbeitet werden als Daten anderer Integer-Typen. Kurze Typen ( verkohlen, kurz) eignen sich zum Speichern großer Zahlenarrays, um Speicherplatz zu sparen, sofern die Werte der Elemente die Grenze für diese Typen nicht überschreiten. Lange Typen werden in Situationen benötigt, in denen nicht genügend Typen vorhanden sind int.

24) Reale Datentypen in der Sprache C / C++.

Ein Merkmal von reellen (realen) Zahlen besteht darin, dass sie fast immer ungefähr im Computerspeicher gespeichert werden, und wenn arithmetische Operationen an solchen Daten durchgeführt werden, sammelt sich ein Rechenfehler an.

Es gibt drei echte Datentypen: schweben, doppelt und langes Doppel... Der Haupttyp wird berücksichtigt doppelt... Alle mathematischen Funktionen arbeiten also standardmäßig mit dem Typ doppelt... Die folgende Tabelle zeigt die Hauptmerkmale der realen Typen:

Eine Art langes Doppel ist derzeit im Allgemeinen derselbe wie der Typ doppelt und wird in der Praxis meist nicht verwendet. Bei Verwendung älterer 16-Bit-Compiler werden Daten wie langes Doppel sind 10 Byte groß und auf 19 Dezimalstellen genau.

Es wird empfohlen, überall nur den Typ zu verwenden doppelt... Die Arbeit damit ist immer schneller, die Wahrscheinlichkeit eines merklichen Genauigkeitsverlusts bei einer großen Anzahl von Berechnungen ist geringer. Eine Art schweben kann nur zum Speichern großer Arrays nützlich sein, vorausgesetzt, dieser Typ reicht aus, um die vorliegende Aufgabe zu lösen.

25) Zeichendatentyp in C / C ++.

Es gibt keinen Datentyp im C++-Standard, der als wirklich symbolisch angesehen werden kann. Für die Darstellung symbolischer Informationen gibt es zwei Arten von Daten, die für diesen Zweck geeignet sind – das sind Typen verkohlen und wchar_t, obwohl beide Typen von Natur aus ganzzahlige Typen sind. Du kannst zum Beispiel das Zeichen "A" nehmen und es durch die Zahl 2 teilen. Was passiert übrigens? Hinweis: Leerzeichen. Bei "normalen" Zeichentypen wie Pascal oder C # sind arithmetische Operationen auf Zeichen verboten.

Eine Art verkohlen verwendet, um Zeichen gemäß dem ASCII-Kodierungssystem (American Standard Code for Information Interchange) darzustellen. Dies ist ein 7-Bit-Code, es reicht aus, 128 verschiedene Zeichen mit Codes von 0 bis 127 zu codieren. Zeichen mit Codes von 128 bis 255 werden verwendet, um nationale Schriftarten, pseudografische Zeichen usw. zu codieren.

Eine Art wchar_t ist für die Arbeit mit einer Reihe von Zeichen konzipiert, für die 1 Byte nicht ausreicht, z. B. Unicode. Typgröße wchar_t normalerweise 2 Byte. Wenn das Programm String-Konstanten wie wchar_t, dann werden sie mit dem Präfix . geschrieben L zB L "Wort".

26) Der Zuweisungsoperator und der Leeroperator in C / C ++

Aufgabenverwalter ist der am häufigsten verwendete Operator. Sein Zweck besteht darin, einer Variablen einen neuen Wert zuzuweisen. In C++ gibt es drei Formen dieses Operators.

1)Einfacher Zuweisungsoperator ist so geschrieben:

variabel = Ausdruck;

Dieser Operator funktioniert wie folgt: Zuerst wird der rechts neben dem Operationssymbol geschriebene Ausdruck ausgewertet = (gleich), dann wird das Ergebnis der Variablen links vom Vorzeichen zugewiesen = ... Der Typ des Ergebnisses muss dem Typ der links geschriebenen Variablen entsprechen oder auf diesen reduzierbar sein.

Links vom Schild = es kann nur eine Variable geben, rechts können Sie sowohl eine Konstante als auch eine Variable und im Allgemeinen einen beliebig komplexen Ausdruck schreiben.

Beispiel für Betreiber

y = x + 3 * r;

s = Sünde (x);

2)Mehrfachbelegung- in einer solchen Anweisung wird sequentiell von rechts nach links mehreren Variablen der gleiche Wert zugewiesen, zum Beispiel:

a = b = c = 1;

So können Sie beispielsweise sofort feststellen, dass in einem gleichseitigen Dreieck alle Seiten die gleiche Zahl 1 haben. Der obige Operator entspricht der sequentiellen Ausführung von drei Operatoren:

Natürlich ist es einfacher für uns, einen Operator zu schreiben, nicht drei. Das Programm ist kürzer, der Text sieht natürlicher aus und diese Konstruktion funktioniert etwas schneller.

3)Zuweisung während der Ausführung einer Operation im Allgemeinen wird es wie folgt geschrieben:

Variable op_sign = Ausdruck;

und ist gleichbedeutend mit Schreiben

Variable = Variable op_sign-Ausdruck;

Zum Beispiel der Betreiber:

s + = 5; // 1. Möglichkeit

macht dasselbe wie Operator

s = s + 5; // 2. Möglichkeit

nämlich: nimm den alten Wert aus der Variablen so, füge die Zahl hinzu 5 und schreibe den resultierenden Wert zurück in die Variable so.

Wie Sie sehen, ist der Satz der 1. Variante kürzer als der Satz der 2. Variante und wird schneller ausgeführt, da in der 1. Variante die Adresse der Variablen so wird 1-mal und in der 2. Variante - zweimal berechnet.

Leerer Operator

Eine leere Anweisung ist eine Anweisung, die nichts bewirkt. Warum brauchen Sie einen "nutzlosen" Operator?

Ein leerer Operator wird in Fällen verwendet, in denen es gemäß der Syntax der Sprache notwendig ist, einen beliebigen Operator aufzuschreiben, aber gemäß der Logik des Programms werden wir nichts tun. Eine leere Anweisung kann beispielsweise in einer Verzweigungsanweisung erforderlich sein, wenn an einer Verzweigung nichts getan werden muss, sowie um eine Marke für einen Sprung im Programmtext und manchmal für einen leeren Schleifenkörper zu definieren.

Ein leerer Operator ist ein einzelnes Zeichen ; (Semikolon), zum Beispiel:

c = a + b; ;

Hier ist das erste Zeichen ; (Semikolon) vervollständigt die Zuweisungsanweisung und das zweite Zeichen gibt uns nur eine leere Anweisung. Ein leerer Operator wird in dieser Situation überhaupt nicht benötigt (ist aber auch kein Syntaxfehler!), Er dient nur zur Verdeutlichung. Weitere "vernünftige" Beispiele für die Verwendung des leeren Operators werden später in den verwandten Themen gegeben.

27) Arithmetische Operationen in C/C++.

Dies sind die am häufigsten verwendeten Operationen. Ihre Bedeutung kommt dem nahe, was man aus einem Mathematikkurs kennt. Also listen wir sie auf:

Die Priorität von Additions- und Subtraktionsoperationen ist niedriger als die von Multiplikation, Division und Rest. Um die Berechnungsreihenfolge zu ändern, verwenden Sie Klammern, um beispielsweise mit to zu multiplizieren 2 die Summe zweier Zahlen EIN und B Du kannst schreiben:

Des Weiteren. Wie Sie an den erhaltenen Ergebnissen sehen können, ist in C ++ ein Zeichen / bedeutet zwei verschiedene Operationen. Wenn einer oder beide Operanden reell sind, wird eine gewöhnliche Division durchgeführt, wenn beide Operanden ganze Zahlen sind, wird eine ganzzahlige Division durchgeführt und das Ergebnis ist ein ganzzahliger Typ. Die Verwendung dieser Operation erfordert besondere Sorgfalt, wenn Sie beispielsweise die Berechnung eines mathematischen Ausdrucks programmieren

wörtlich, d.h. So:

1/3 * Sünde (2 * X)

dann das Ergebnis unabhängig vom Wert X wird immer Null sein, da der Ausdruck 1/3 bedeutet ganze Division. Um das Problem zu lösen, genügt es, einen der Operanden reell zu machen

1.0 / 3 * Sünde (2 * X)

Die Operation der Restberechnung ( % ) gilt nur für ganzzahlige Operanden.

Vorzeichenwechsel... Unäre Operation " - " Bedeutet einen Zeichenwechsel. Wie Sie der allgemeinen Tabelle aller Operationen entnehmen können, hat sie eine sehr hohe Priorität - höher als beispielsweise die Operation der Multiplikation. Daher im Ausdruck

zuerst wird das Vorzeichen geändert für EIN und dann multiplizieren -EIN auf der B.

Für das Pairing gibt es auch eine Operation unäres Plus, d.h. kann schreiben

Für welche Zwecke soll ich es verwenden? Es ist schwer zu sagen. Aber es gibt eine solche Möglichkeit.

Interessanter und vor allem sehr verbreitet sind die Operationen Autoinkrement und Autodecrease.

Algorithmische Schulsprache

Algorithmische Sprache(ebenfalls Russische algorithmische Sprache, PARADISE) ist eine Programmiersprache zum Schreiben und Lernen von Algorithmen. Beim Informatikstudium an Schulen wird die sog. Algorithmische Schulsprache (pädagogische algorithmische Sprache) mit russischen Wörtern, die für den Schüler verständlich sind. Im Gegensatz zu den meisten Programmiersprachen ist die algorithmische Sprache nicht an die Architektur des Computers gebunden, enthält keine Details zur Struktur der Maschine.

Beispiele von

Ein Algorithmus in einer algorithmischen Sprache wird im Allgemeinen in der Form geschrieben:

Algen Algorithmusname (Argumente und Ergebnisse) gegeben Bedingungen für die Anwendbarkeit des Algorithmus es ist notwendig der Zweck des Algorithmus früh Beschreibung von Zwischenwerten | Befehlsfolge (Algorithmuskörper) con

In der Aufzeichnung des Algorithmus wurden Schlüsselwörter normalerweise unterstrichen oder fett gedruckt. Um logische Blöcke hervorzuheben, wurden Einzüge verwendet und die Wortpaare des Anfangs und des Endes des Blocks wurden durch eine vertikale Linie verbunden.

Ein Beispiel für die Berechnung der Quadratsumme:

Algen Quadratsumme ( arg intakt n, Schnitt intakt S) gegeben| n> 0 es ist notwendig| S = 1 * 1 + 2 * 2 + 3 * 3 +… + n * n früh intakt ich | Eingang n; S: = 0 | nts für i von 1 bis n | | S: = S + i * i | kts | Ausgabe"S =", S con

E-Workshop

Um das theoretische Studium der Programmierung in einer algorithmischen Sprache zu vertiefen, erstellten Spezialisten der Fakultät für Mechanik und Mathematik der Moskauer Staatlichen Universität 1985 einen Editor-Compiler "E-Werkstatt"("E" - zu Ehren von Ershov), mit dem Sie Programme in einer algorithmischen Sprache eingeben, bearbeiten und ausführen können.

1986 wurde für den "E-Workshop" eine Reihe von Bildungswelten (Performer) veröffentlicht: "Roboter", "Zeichner", "Zweibein", "Geländewagen", mit denen Sie die Konzepte einfach vorstellen können des Algorithmus. "E-Workshop" wurde auf Computern implementiert: Yamaha, Corvette, UKSC und verbreitete sich.

Diese Programmiersprache wurde ständig verbessert und eine Beschreibung einer späteren Version des "E-Workshops" erschien im Lehrbuch von 1990. Das Programmiersystem "Kumir" ("Set of Educational Worlds"), das dieses Lehrbuch unterstützt, wurde 1990 vom Unternehmen "InfoMir" veröffentlicht. Die Sprache dieses Systems wird auch "Kumir" genannt.

1995 wurde "Kumir" vom Bildungsministerium der Russischen Föderation als Hauptlehrmaterial für den Kurs "Grundlagen der Informatik und Computertechnik" nach den Lehrbüchern von A. G. Kushnirenko, G. V. Lebedev und R. A. Svoren empfohlen. ...

Kritik

Es ist jedoch anzumerken, dass eine algorithmische Sprache in Ermangelung von Details, die sie direkt mit der Architektur eines Computers verbinden, sich dennoch auf Algol-ähnliche Sprachen bezieht, Schulkindern implizit beibringt, sich auf die von Neumann-Architektur von Maschinen zu verlassen. (Die von Neumann-Architektur ist eine praktische Umsetzung einer früheren Idee namens Turing-Maschine. Neben der Turing-Idee gibt es noch andere Ideen. Die beliebteste von ihnen heißt Lambda-Kalkül: Alonzo Church arbeitete daran. Die Lisp-Maschine ist eine Architektur, die auf Lambda-Kalkül basiert.)

Links

  • A. P. Ershov. Algorithmische Sprache im Schulunterricht Grundlagen der Informatik und Computertechnik. 07.05.1985
  • Forum zu russischen Programmiersprachen und Entwicklungstools

Wikimedia-Stiftung. 2010.

Sehen Sie in anderen Wörterbüchern nach, was "Algorithmische Sprache der Schule" ist:

    Algorithmische Sprache ist eine formale Sprache, die verwendet wird, um Algorithmen zu schreiben, zu implementieren oder zu lernen. Jede Programmiersprache ist eine algorithmische Sprache, aber nicht jede algorithmische Sprache eignet sich als Sprache ... ... Wikipedia

    Dieser Begriff hat andere Bedeutungen, siehe Algorithmische Sprache. Pädagogische algorithmische Sprache ist eine formale Sprache, die verwendet wird, um Algorithmen zu schreiben, zu implementieren und zu lernen. Im Gegensatz zu den meisten Programmiersprachen ist es nicht an ... Wikipedia

    Dieser Begriff hat andere Bedeutungen, siehe Drache (Begriffsklärung). Ein Beispiel für ein Blockdiagramm eines Algorithmus in der DRAGON-Sprache Dragon of a DRAGON-Schema (Friendly Russian Algorithmic Language That Provides Visibility) visual ... ... Wikipedia

    Programmiersprache lernen Eine Programmiersprache, die für den Unterricht entwickelt wurde. Als solche wurden Sprachen wie BASIC und Pascal entwickelt. Die ABC-Sprache wurde zum Lernen entwickelt und ist aus Python hervorgegangen. Volkssprache, ... ... Wikipedia

    Dieser Artikel wird zur Löschung vorgeschlagen. Eine Erläuterung der Gründe und die dazugehörige Diskussion finden Sie auf der Wikipedia-Seite: Wird gelöscht / 28. September 2012. Während der Diskussionsprozess noch nicht abgeschlossen ist, kann der Artikel ... Wikipedia

    Algorithmische Sprache (auch russische algorithmische Sprache, PARADISE) ist eine Programmiersprache, die verwendet wird, um Algorithmen aufzuzeichnen und zu studieren. Beim Informatikstudium an Schulen wird die sog. Schule algorithmisch ... ... Wikipedia

    Dieser Begriff hat andere Bedeutungen, siehe Idol. Kumir ... Wikipedia

    Edumandriva ... Wikipedia

    - (Eine Reihe von Bildungswelten oder Mira Kushnirenko) ein Programmiersystem, das entwickelt wurde, um die ersten Kurse in Informatik und Programmierung in Sekundar- und Oberschulen zu unterstützen. Basierend auf einer in der zweiten Hälfte der 1980er Jahre entwickelten Technik ... ... Wikipedia

Bücher

  • Programmierung in der algorithmischen Sprache Kumir, herausgegeben von AG Kushnirenko, Anelikova L., Gusev O .. Dieses Handbuch richtet sich an Lehrer und Schüler, um die ersten Kurse in Informatik und Programmierung in Sekundar-, Ober- und Oberstufen zu unterstützen. ... Es umfasst die wichtigsten Schritte und ...

Algorithmische Programmiersprache- eine formale Sprache zum Schreiben, Implementieren und Erlernen von Algorithmen. Im Gegensatz zu den meisten Programmiersprachen ist die algorithmische Sprache nicht an die Architektur des Computers gebunden, enthält keine Details zur Struktur der Maschine.

Um die Grundlagen der Algorithmisierung zu studieren, die sog Russische algorithmische Sprache(algorithmische Schulsprache) mit russischen Wörtern, die für den Schüler verständlich sind.

Eine algorithmisch ähnliche algorithmische Sprache mit russischer Syntax wurde Mitte der 1980er Jahre vom Akademiemitglied A. P. Ershov als Grundlage für einen "maschinenlosen" Informatikkurs eingeführt.

Die wichtigsten Funktionswörter der algorithmischen Sprache

Beschreibung des Algorithmus

  • Algen(Algorithmus)
  • arg(Streit)
  • Schnitt(Ergebnis)
  • früh(start) - der Anfang des Algorithmus
  • con(Ende) - Ende des Algorithmus
  • gegeben- Ausgangsdaten in beliebiger Form
  • es ist notwendig- das Ziel des Algorithmus

Datentypen:

  • intakt(ganze)
  • Dinge(Real)
  • Sim(Charakter)
  • litas(wörtlich) - Zeichenfolge
  • Log(logisch)
  • Tab(Tabelle) - um ein Array zu bezeichnen
  • Längen(Länge) - Anzahl der Array-Elemente

Zustandsbezeichnung

  • wenn ein
  • Andernfalls
  • die Wahl
  • Bedeutung

Zyklusnotation

  • nts(Beginn des Zyklus)
  • kts(Ende des Zyklus)
  • Tschüss

Logische Funktionen und Werte zum Konstruieren von Ausdrücken

Input-Output

  • Eingang
  • Ausgabe

Gesamtansicht des Algorithmus

1
2
3
4
5
6

Algen Algorithmusname (Argumente und Ergebnisse)
| gegeben Bedingungen für die Anwendbarkeit des Algorithmus
| es ist notwendig der Zweck des Algorithmus
früh Beschreibung der Zwischenwerte
| Befehlsfolge (Algorithmuskörper)
con

Teil des Algorithmus aus dem Wort Algen zum Wort früh heißt der Titel und der Teil zwischen den Wörtern früh und con- der Körper des Algorithmus.

In einem Satz Algen hinter dem Namen des Algorithmus in Klammern stehen die Merkmale ( arg, Schnitt) und Werttyp ( intakt, Dinge, Sim, litas oder Log) aller Eingabe- (Argumente) und Ausgabe- (Ergebnisse) Variablen. Bei der Beschreibung von Arrays (Tabellen) wird ein spezielles Wort verwendet Tab, ergänzt mit Grenzpaaren für jeden Index der Array-Elemente.

Im Algorithmusdatensatz sind Schlüsselwörter normalerweise unterstrichen oder fett gedruckt. Um logische Blöcke hervorzuheben, wird eine Einrückung angewendet, und Wortpaare des Anfangs und des Endes des Blocks werden mit einer vertikalen Linie verbunden.

Grundlegende algorithmische Strukturen

Eine detaillierte Beschreibung der wichtigsten algorithmischen Strukturen finden Sie in diesem Artikel. Unten sind die Vorlagen zum Zusammensetzen dieser Strukturen in einer algorithmischen Sprache.
Unvollständige Gabel

| wenn ein Bedingung
| | dann Aktionen
| alles

Volle Gabel

1
2
3
4
5

| wenn ein Bedingung
| | dann Aktion 1
| | Andernfalls Aktion 2
| alles

Verzweigung

1
2
3
4
5
6
7
8

| die Wahl Parameter
| | bei Bedeutung Wert 1
| | | Aktion 1
| | bei Bedeutung Wert 2
| | | Aktion 2
| | Andernfalls
| | | Standardaktionen
| alles

Schleife mit Vorbedingung

| nc tschüss Bedingung
| | Aktionen
| kts

Schleife mit Nachbedingung

Bildungsministerium der Russischen Föderation Staatliche Technische Universität Perm

Institut für Informationstechnologien und Automatisierte Systeme

Vikentieva O. L.

Skript zur Vorlesung "Algorithmische Sprachen und Programmierung" (Grundlagen der Sprache C++, I. Semester)

Einführung

Im ersten Semester werden die Grundkonstruktionen der Sprache C und die grundlegende Programmiertechnik (Strukturierte Programmierung) betrachtet.

Strukturierte Programmierung ist eine Technologie zur Erstellung von Programmen, die es ermöglicht, unter Einhaltung bestimmter Regeln die Entwicklungszeit und die Fehleranzahl zu reduzieren sowie die Möglichkeit der Programmänderung zu erleichtern.

1.1. Algorithmus und Programm

Ein Algorithmus ist eine genaue Vorschrift, die den Rechenprozess von variablen Ausgangsdaten bis zum Endergebnis bestimmt, also ein Rezept zur Erreichung eines Ziels.

Der Satz von Werkzeugen und Regeln zur Darstellung eines Algorithmus in einer zur Ausführung durch einen Computer geeigneten Form wird als Programmiersprache bezeichnet, ein in dieser Sprache geschriebener Algorithmus wird als Programm bezeichnet.

Zuerst wird immer ein Aktionsalgorithmus entwickelt und dann in einer der Programmiersprachen geschrieben. Der Programmtext wird von speziellen Dienstprogrammen - Übersetzern - verarbeitet. Programmiersprachen sind künstliche Sprachen. Sie unterscheiden sich von natürlichen Sprachen durch eine begrenzte Anzahl von "Wörtern" und sehr strenge Regeln für das Schreiben von Befehlen (Operatoren). Die Gesamtheit dieser Anforderungen bildet die Syntax der Programmiersprache, und die Bedeutung jeder Konstruktion ist ihre Semantik.

1.2 Eigenschaften des Algorithmus

1. Massivität: Der Algorithmus sollte nicht auf ein Problem angewendet werden, sondern auf eine ganze Klasse ähnlicher Probleme (ein Algorithmus zur Lösung einer quadratischen Gleichung sollte nicht eine Gleichung, sondern alle quadratischen Gleichungen lösen).

2. Effizienz: Der Algorithmus soll in einer bestimmten Anzahl von Schritten zu einem Ergebnis führen (bei der Division von 1 durch 3 erhält man einen periodischen Bruch von 0,3333 (3); um das Endergebnis zu erhalten, muss die Genauigkeit des Erhaltens dieses Bruchs festgelegt werden , zum Beispiel bis zu 4 Dezimalstellen).

3. Gewissheit (Determinismus) - Jede Aktion des Algorithmus muss seinem Ausführenden klar sein (die Anleitung für ein Haushaltsgerät auf Japanisch für eine Person, die kein Japanisch spricht, ist kein Algorithmus, da sie nicht die Eigenschaft des Determinismus hat).

4. Diskretion – der Prozess muss mit unteilbaren . beschrieben werden

Operationen, die bei jedem Schritt ausgeführt werden (d. h. Schritte können nicht in kleinere Schritte unterteilt werden).

Algorithmen können in den folgenden Formen dargestellt werden:

1) eine verbale Beschreibung des Algorithmus.

2) grafische Beschreibung des Algorithmus.

3) mit einer algorithmischen Programmiersprache

1.2. Compiler und Interpreter

VON Mit Hilfe der Programmiersprache wird ein Text erstellt, der den zuvor kompilierten Algorithmus beschreibt. Um ein funktionierendes Programm zu erhalten, müssen Sie diesen Text in eine Folge von Prozessorbefehlen übersetzen, was mit speziellen Programmen, den sogenannten Übersetzern, erfolgt. Es gibt zwei Arten von Übersetzern: Compiler und Interpreter. Der Compiler übersetzt den Text des Quellmoduls in einem kontinuierlichen Prozess in Maschinencode, der als Objektmodul bezeichnet wird. Gleichzeitig durchsucht er zunächst den Quellcode des Programms nach Syntaxfehlern. Der Interpreter führt das Quellmodul des Programms im Operator-by-Operator-Modus aus, indem

Arbeitsfortschritt, wobei jeder Bediener in Maschinensprache übersetzt wird.

1.3 Programmiersprachen

Unterschiedliche Prozessortypen haben unterschiedliche Befehlssätze. Fokussiert sich eine Programmiersprache auf einen bestimmten Prozessortyp und berücksichtigt dessen Besonderheiten, so spricht man von einer Low-Level-Programmiersprache. Die Sprache der niedrigsten Ebene ist die Assemblersprache, die einfach jede Anweisung des Maschinencodes in Form von speziellen Symbolen darstellt, die als Mnemonik bezeichnet werden. Mit Hilfe von Low-Level-Sprachen werden sehr effiziente und kompakte Programme erstellt, da der Entwickler Zugriff auf alle Fähigkeiten des Prozessors erhält. weil Da auch die Befehlssätze für verschiedene Prozessormodelle unterschiedlich sind, hat jedes Prozessormodell seine eigene Assemblersprache und das darin geschriebene Programm kann nur in dieser Umgebung verwendet werden. Solche Sprachen werden verwendet, um kleine Systemanwendungen, Gerätetreiber usw. zu schreiben.

Hochprogrammiersprachen berücksichtigen die Besonderheiten bestimmter Computerarchitekturen nicht, daher lassen sich auf Quellcodeebene erstellte Programme problemlos auf andere Plattformen portieren, wenn dafür entsprechende Übersetzer erstellt wurden. Das Entwickeln von Programmen in Hochsprachen ist viel einfacher als in Maschinensprachen.

Die Hochsprachen sind:

1. Fortran ist die erste kompilierte Sprache, die in 50er Jahre des 20. Jahrhunderts. Es implementierte eine Reihe wesentlicher Programmierkonzepte. Für diese Sprache wurde eine große Anzahl von Bibliotheken erstellt, die von statistischen Komplexen bis hin zur Satellitensteuerung reichen, sodass sie weiterhin in vielen Organisationen verwendet wird.

2. Cobol - Kompilierte Sprache für wirtschaftliche Berechnungen und Entscheidungen Geschäftsprobleme traten in den frühen 60er Jahren auf. In Cobol wurden sehr leistungsfähige Tools implementiert, um mit großen Datenmengen zu arbeiten, die auf externen Medien gespeichert sind.

3. Pascal - erstellt am Ende 70er Jahre Schweizer Mathematiker Niklaus Wirth speziell für den Programmierunterricht. Es ermöglicht Ihnen, algorithmisches Denken zu entwickeln, ein kurzes, gut lesbares Programm zu erstellen, grundlegende Algorithmentechniken zu demonstrieren und ist auch für große Projekte gut geeignet.

4. BASIC - erstellt in 60er Jahre auch für den Programmierunterricht. Dafür gibt es Compiler und Interpreter, es ist eine der beliebtesten Programmiersprachen.

5. C - wurde in den 70er Jahren entwickelt und wurde ursprünglich nicht als Mainstream-Programmiersprache angesehen. Es sollte den Assembler ersetzen, um möglichst effiziente und kurze Programme erstellen zu können, die aber nicht von einem bestimmten Prozessor abhängig sind. Es ähnelt in vielerlei Hinsicht Pascal und verfügt über zusätzliche Funktionen für die Arbeit mit dem Speicher. Es enthält viele Anwendungs- und Systemprogramme sowie das Unix-Betriebssystem.

6. C++ ist eine objektorientierte Erweiterung der Sprache C, die 1980 von Bjarne Stroustrup entwickelt wurde.

7. Java ist eine Sprache, die von Sun am Anfang entwickelt wurde 90er basierend auf C++. Es soll die Entwicklung von C++-Anwendungen vereinfachen, indem es Low-Level-Features eliminiert. Das Hauptmerkmal der Sprache ist, dass sie nicht in Maschinencode kompiliert wird, sondern in plattformunabhängigen Bytecode (jeder Befehl benötigt ein Byte). Dieser Code kann mit einem Interpreter ausgeführt werden - der Java Virtual Machine (JVM).

2.Der Aufbau eines C++-Programms

Ein C-Programm hat die folgende Struktur: # Präprozessordirektiven

. . . . . . . . .

# Präprozessordirektiven Funktion a ()

Operatoren funktionieren in ()

Betreiber

void main() // Funktion, die die Programmausführungsanweisungen startet

Beschreibungen

Zuordnungen

Funktion leer Operator

zusammengesetzt

Überleitung

Präprozessordirektiven - steuern die Umwandlung des Programmtexts vor der Kompilierung. Das Originalprogramm, das in SI in Form einer Textdatei erstellt wurde, durchläuft 3 Verarbeitungsstufen:

1) Präprozessortransformation von Text;

2) Zusammenstellung;

3) Layout (Linkbearbeitung oder Assemblierung).

Nach diesen drei Stufen wird der ausführbare Code des Programms gebildet. Die Aufgabe der Vor-

cessor - Transformation des Programmtextes vor der Kompilierung Die Vorverarbeitungsregeln werden vom Programmierer unter Verwendung von Präprozessordirektiven definiert. Die Direktive beginnt mit #. Beispielsweise,

1) #define - gibt die Ersetzungsregeln im Text an. #define NULL 0.0

Bedeutet, dass jede Verwendung des Namens ZERO im Programm ersetzt wird

2) #einschließen< имя заголовочного файла>- zur Aufnahme des Textes aus dem mit den Standardbibliotheken mitgelieferten Katalog "Header-Dateien" in den Programmtext vorgesehen. Jede C-Bibliotheksfunktion hat eine entsprechende Beschreibung in einer der Header-Dateien. Die Liste der Header-Dateien wird durch den Sprachstandard definiert. Die Verwendung der Include-Direktive schließt die entsprechende Standardbibliothek nicht ein

Bibliothek, sondern erlauben nur das Einfügen von Beschreibungen aus der angegebenen Header-Datei in den Text des Programms. Die Bibliothekscodes werden in der Linking-Phase, d. h. nach der Kompilierung, verbunden. Obwohl die Header-Dateien alle Beschreibungen der Standardfunktionen enthalten, sind im Programmcode nur die Funktionen enthalten, die im Programm verwendet werden.

Nach der Vorverarbeitung verbleibt keine einzige Vorverarbeitungsanweisung im Programmtext.

Ein Programm ist eine Sammlung von Beschreibungen und Definitionen und besteht aus einer Reihe von Funktionen. Diese Funktionen sollten immer eine Funktion namens main enthalten. Ohne diese kann das Programm nicht ausgeführt werden. Dem Funktionsnamen gehen Informationen über den Typ des von der Funktion zurückgegebenen Werts (den Typ des Ergebnisses) voraus. Wenn die Funktion nichts zurückgibt, wird der void-Typ angegeben: void main(). Jede Funktion, einschließlich main, muss einen Parametersatz haben, er kann leer sein, dann wird (void) in Klammern angegeben.

Der Hauptteil der Funktion wird hinter dem Funktionskopf platziert. Ein Funktionsrumpf ist eine Folge von Definitionen, Beschreibungen und ausführbaren Anweisungen, die in geschweifte Klammern eingeschlossen sind. Jede Definition, Beschreibung oder Anweisung endet mit einem Semikolon.

Definitionen - Einführen von Objekten (ein Objekt ist ein benannter Speicherbereich, ein Sonderfall eines Objekts ist eine Variable), die notwendig sind, um die im Programm verarbeiteten Daten darzustellen. Ein Beispiel ist

int y = 10; // benannte Konstante float x; //Variable

Beschreibungen - benachrichtigt den Compiler über die Eigenschaften und Namen von Objekten und Funktionen, die an anderer Stelle im Programm beschrieben sind.

Operatoren - bestimmen die Aktionen des Programms bei jedem Schritt seiner Ausführung

Beispiel C-Programm:

#einschließen // Präprozessordirektive

Kontrollfragen

1. Was sind die Teile eines C++-Programms?

2. Wie unterscheidet sich eine Definition von einer Anzeige?

3. Listen Sie die Phasen der Erstellung eines ausführbaren Programms in C++ auf.

4. Was ist ein Präprozessor?

5. Was ist eine Präprozessordirektive? Geben Sie Beispiele für Präprozessordirektiven.

6. Schreiben Sie ein Programm, das den Text "Mein erstes C++-Programm" ausgibt

2. Grundlegende Mittel der Sprache C ++ 2.1 Die Zusammensetzung der Sprache

In einem Text in jeder natürlichen Sprache lassen sich vier Hauptelemente unterscheiden: Symbole, Wörter, Phrasen und Sätze. Die algorithmische Sprache enthält auch solche Elemente, nur Wörter werden als Lexeme (Elementarkonstruktionen), Phrasen - Ausdrücke, Sätze - Operatoren bezeichnet. Lexeme werden aus Symbolen gebildet, Ausdrücke aus Token und Symbolen, Operatoren aus Symbolen von Ausdrücken und Token (Abb. 1.1)

Feige. 1.1. Zusammensetzung der algorithmischen Sprache Die Elemente der algorithmischen Sprache sind also:

Bezeichner sind die Namen von Objekten von SI-Programmen. Der Bezeichner kann lateinische Buchstaben, Zahlen und Unterstrich enthalten. Groß- und Kleinbuchstaben sind unterschiedlich, zum Beispiel sind PROG1, prog1 und Prog1 drei verschiedene Bezeichner. Das erste Zeichen muss ein Buchstabe oder ein Unterstrich (aber keine Zahl) sein. Leerzeichen in Bezeichnern sind nicht zulässig.

Schlüsselwörter (reserviert) sind Wörter, die für den Compiler eine besondere Bedeutung haben. Sie können nicht als Bezeichner verwendet werden.

- Operationszeichen sind ein oder mehrere Zeichen, die die Aktion an den Operanden definieren. Operationen werden entsprechend der Anzahl der an dieser Operation beteiligten Operanden in unäre, binäre und ternäre unterteilt.

Konstanten sind unveränderliche Werte. Es gibt Integer-, Real-, Character- und String-Konstanten. Der Compiler wählt eine Konstante als Token (elementare Konstruktion) aus und ordnet sie anhand ihres Aussehens einem der Typen zu.

Trennzeichen sind Klammern, Punkt, Komma, Leerzeichen.

2.1.1. Konstanten in C ++

Eine Konstante ist ein Token, das ein Bild eines festen Zahlen-, String- oder Zeichenwerts darstellt.

Konstanten sind in 5 Gruppen unterteilt:

Ganzes;

- real (Gleitkomma);

Aufzählbar;

Symbolisch;

Zeichenfolge.

Der Compiler extrahiert ein Token und weist es der einen oder anderen Gruppe zu und dann intern

drei Gruppen zu einem bestimmten Typ nach seiner Form der Aufnahme im Programmtext und nach seinem Zahlenwert.

Ganzzahlkonstanten können dezimal, oktal und hexadezimal sein. Eine Dezimalkonstante wird als Folge von Dezimalziffern definiert, die mit einer Nicht-0 beginnen, wenn die Zahl nicht 0 ist (Beispiele: 8, 0, 192345). Eine Oktalkonstante ist eine Konstante, die immer bei 0 beginnt. Auf 0 folgen Oktalziffern (Beispiele: 016 - Dezimalwert 14, 01). Hexadezimale Konstanten sind eine Folge von hexadezimalen Ziffern, denen 0x oder 0X Zeichen vorangestellt sind (Beispiele: 0xA, 0X00F).

IM abhängig vom Wert der Integer-Konstante der Compiler werde sie anders präsentieren

im Computerspeicher (d. h. der Compiler weist der Konstante den entsprechenden Datentyp zu).

Reale Konstanten haben eine andere Form der internen Darstellung im Computerspeicher. Der Compiler erkennt solche Konstanten an ihrem Aussehen. Reale Konstanten können zwei Darstellungsformen haben: Festkomma und Gleitkomma. Festkomma-Konstantentyp: [Ziffern] [Ziffern] (Beispiele: 5.7,. 0001, 41.) Gleitkomma-Konstantentyp: [Ziffern] [.] [Ziffern] E | e [+ | -] [Ziffern ] (Beispiele: 0.5e5, .11e-5, 5E3). Bei der Notation reeller Konstanten kann entweder der ganzzahlige oder gebrochene Teil oder der Dezimalpunkt oder das Vorzeichen des Exponenten mit dem Exponenten weggelassen werden.

Aufzählungskonstanten werden mit dem Schlüsselwort enum eingegeben. Dies sind gewöhnliche ganzzahlige Konstanten, denen eindeutige und einfach zu verwendende Bezeichnungen zugewiesen werden. Beispiele: Aufzählung (eins = 1, zwei = 2, drei = 3, vier = 4);

enum (null, eins, zwei, drei) - Wenn Sie = und numerische Werte in der Definition von Aufzählungskonstanten weglassen, werden die Werte standardmäßig zugewiesen. In diesem Fall erhält der am weitesten links stehende Bezeichner den Wert 0 und jeder weitere wird um 1 erhöht.

Aufzählung (zehn = 10, drei = 3, vier, fünf, sechs);

enum (Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag,

Zeichenkonstanten sind ein oder zwei Zeichen, die in Apostrophe eingeschlossen sind. Zeichenkonstanten, die aus einem Zeichen bestehen, sind vom Typ char und belegen ein Byte im Speicher, Zeichenkonstanten, die aus zwei Zeichen bestehen, sind vom Typ int und belegen zwei Byte. Sequenzen, die mit einem \ beginnen, heißen Kontrollsequenzen, sie werden verwendet:

- Um Symbole darzustellen, die keine grafische Anzeige haben, zum Beispiel:

\ a - Tonsignal,

\ b - einen Schritt zurückgehen, \ n - Zeilenvorschub,

\ t - horizontale Registerkarte.

- Um Zeichen darzustellen: \, ',? , ”(\\, \’, \?, \ “).

- Zur Darstellung von Zeichen mit hexadezimalen oder oktalen Codes (\ 073, \ 0xF5).

Eine Zeichenfolgenkonstante ist eine Zeichenfolge, die in Anführungszeichen eingeschlossen ist.

Steuerzeichen können auch innerhalb von Strings verwendet werden. Beispiel: „\ nNeue Zeile“,

"\ N \" Hochrangige algorithmische Programmiersprachen \ "".

2.2. Datentypen in C++

Die Daten werden im Programm der Welt drumherum angezeigt. Zweck des Programms ist die Verarbeitung von Daten. Verschiedene Arten von Daten werden auf unterschiedliche Weise gespeichert und verarbeitet. Der Datentyp definiert:

1) interne Darstellung von Daten im Computerspeicher;

2) eine Reihe von Werten, die Werte dieses Typs annehmen können;

3) Operationen und Funktionen, die auf Daten dieses Typs angewendet werden können.

IM Je nach Anforderung der Aufgabe wählt der Programmierer den Typ der Programmobjekte aus. C++-Typen können in einfache und komplexe Typen unterteilt werden. Einfache Typen sind Typen, die durch einen einzelnen Wert gekennzeichnet sind. C++ definiert 6 einfache Datentypen:

int (Ganzzahl)

Zeichen (Zeichen)

wchar_t (breites Zeichen) bool (boolean) float (real)

double (doppelte Genauigkeit real)

Es gibt 4 Typbezeichner, die die interne Darstellung und den Bereich der Standardtypen angeben.

kurz lang signiert

ohne Vorzeichen

2.2.1. Int-Typ

Werte dieses Typs sind ganze Zahlen.

Die Größe des Typs int ist nicht durch den Standard definiert, sondern hängt vom Rechner und vom Compiler ab. Für einen 16-Bit-Prozessor sind dafür 2 Bytes belegt, für einen 32-Bit-Prozessor 4 Bytes.

Steht vor dem int der Kurzbezeichner, dann werden 2 Byte für die Zahl zugewiesen, und wenn der Langbezeichner 4 Byte. Die Menge des für das Objekt zugewiesenen Speichers hängt von den gültigen Werten ab, die das Objekt annehmen kann:

short int - benötigt 2 Byte, hat also einen Bereich von –32768 .. + 32767;

long int - belegt 4 Byte, hat also einen Bereich von –2 147 483 648 .. + 2 147 483 647

Der int-Typ ist derselbe wie short int auf 16-Bit-PCs und long int auf 32-Bit-PCs.

Die Modifikatoren mit Vorzeichen und ohne Vorzeichen wirken sich auch auf den Satz gültiger Werte aus, die ein Objekt annehmen kann:

unsigned short int - benötigt 2 Byte, hat daher einen Bereich von 0 ..65536; unsigned long int - belegt 4 Byte, hat also einen Bereich von 0 .. + 4 294 967

2.2.2. Zeichentyp

Werte dieses Typs sind Mitglieder einer endlichen geordneten Zeichenmenge. Jedem Zeichen wird eine Zahl zugewiesen, die als Zeichencode bezeichnet wird. Für den Wert des Zeichentyps wird 1 Byte belegt. Der Typ char kann mit den Vorzeichenbezeichnern und ohne Vorzeichen verwendet werden. Der Datentyp "signed char" kann Werte im Bereich von –128 bis 127 speichern. Bei Verwendung des Typs unsigned char können die Werte von 0 bis 255 reichen. Zur Codierung wird ASCII (American Standard Code foe International Interchange) verwendet . Zeichen mit Codes von 0 bis 31 beziehen sich auf Dienstzeichen und haben nur in Eingabe-Ausgabe-Anweisungen eine eigenständige Bedeutung.

Werte vom Typ char werden auch verwendet, um Zahlen aus den angegebenen Bereichen zu speichern.

2.2.3. Wchar_t-Typ

Entwickelt, um mit einer Reihe von Zeichen zu arbeiten, für die 1 Byte nicht ausreicht, zum Beispiel Unicode. Dieser Typ hat im Allgemeinen die gleiche Größe wie kurz. Stringkonstanten dieses Typs werden mit dem Präfix L: L „String # 1“ geschrieben.

2.2.4. Bool-Typ

Der bool-Typ wird boolean genannt. Seine Werte können wahr und falsch sein. Die interne Form ist false - 0, jeder andere Wert wird als true interpretiert.

2.2.5. Gleitkommatypen.

Die interne Darstellung einer reellen Zahl besteht aus 2 Teilen: der Mantisse und der Ordnung. Bei IBM-kompatiblen PCs belegen Float-Werte 4 Byte, wovon ein Bit für die Mantisse reserviert ist, 8 für die Ordnung und 24 für die Mantisse.

Werte von Double-Typen belegen 8 Byte, 11 und 52 Bit sind für die Ordnung bzw. Mantisse zugeordnet. Die Länge der Mantisse bestimmt die Genauigkeit der Zahl, und die Länge liegt in der Größenordnung ihres Bereichs.

Steht vor dem Namen des Double-Typs ein langer Bezeichner, werden dem Wert Bytes zugewiesen.

2.2.6. Stornotyp

ZU Zu den Haupttypen gehört auch der void-Typ. Die Wertemenge dieses Typs ist

2.3. Variablen

Eine Variable in C++ ist ein benannter Speicherbereich, der Daten eines bestimmten Typs speichert. Eine Variable hat einen Namen und einen Wert. Mit dem Namen wird auf den Speicherbereich verwiesen, in dem der Wert abgelegt wird. Jede Variable muss vor der Verwendung deklariert werden. Beispiele:

Allgemeine Ansicht des Beschreibungsoperators:

[Speicherklasse] Typname [Initialisierer];

Die Speicherklasse kann folgende Werte annehmen: auto, extern, static, register. Die Speicherklasse definiert die Lebensdauer und den Gültigkeitsbereich der Variablen. Wenn die Speicherklasse nicht explizit angegeben wird, bestimmt der Compiler sie basierend auf dem Kontext der Deklaration. Die Lebensdauer kann konstant sein - während der Programmausführung oder temporär - während des Blocks. Scope ist ein Teil des Programmtextes, von dem aus der normale Zugriff auf eine Variable erlaubt ist. Normalerweise ist der Umfang derselbe wie der Umfang. Außer für den Fall, dass im inneren Block eine Variable mit demselben Namen existiert.

Const - zeigt an, dass diese Variable nicht geändert werden kann (genannt konstant). Beim Beschreiben können Sie einer Variablen einen Initialwert zuweisen (Initialisierung). Gedächtnisklassen:

auto ist eine automatische lokale Variable. Der Autospezifizierer kann nur bei der Definition von Blockobjekten angegeben werden, beispielsweise im Rumpf einer Funktion. Für diese Variablen wird Speicher beim Eintritt in den Block allokiert und beim Verlassen wieder freigegeben. Solche Variablen existieren außerhalb des Blocks nicht.

extern ist eine globale Variable, sie befindet sich an einer anderen Stelle des Programms (in einer anderen Datei oder weiter im Text). Wird verwendet, um Variablen zu erstellen, die in allen Programmdateien verfügbar sind.

static ist eine statische Variable, sie existiert nur in der Datei, in der die Variable definiert ist.

register - sind ähnlich wie auto, aber der Speicher dafür wird in den Prozessorregistern zugewiesen. Ist dies nicht möglich, werden die Variablen als auto behandelt.

int a; // globale Variable void main () (

int b; // lokale Variable

extern int x; // Variable x ist an anderer Stelle definiert static int c; // lokale statische Variable a = 1; // Zuweisung an eine globale Variable

int a; // lokale Variable a

a = 2; // Zuweisung an eine lokale Variable :: a = 3; // Zuweisung an eine globale Variable

int x = 4; // Definition und Initialisierung von x

Im Beispiel wird die Variable a außerhalb aller Blöcke definiert. Der Geltungsbereich der Variablen a ist das gesamte Programm, mit Ausnahme der Zeilen, in denen die lokale Variable a verwendet wird. Die Variablen b und c sind lokal und ihr Gültigkeitsbereich ist block. Die Lebensdauer ist unterschiedlich: Der Speicher für b wird beim Betreten des Blocks allokiert (da standardmäßig die Speicherklasse auto ist), er wird beim Verlassen des Blocks wieder freigegeben. Die Variable mit (statisch) existiert, während das Programm läuft.

Wird der Initialwert der Variablen bei der Definition nicht explizit angegeben, löscht der Compiler die globalen und statischen Variablen. Automatische Variablen werden nicht initialisiert.

Der Variablenname muss in seinem Gültigkeitsbereich eindeutig sein.

Die Variablenbeschreibung kann entweder als Deklaration oder als Definition erfolgen. Die Deklaration enthält Informationen über die Speicherklasse und den Typ der Variablen, die Definition zusammen mit diesen Informationen gibt eine Anweisung zur Speicherzuweisung. Im Beispiel extern int x; - Deklaration, der Rest sind Definitionen.

2.4 Betriebszeichen in C ++

Betriebszeichen sorgen für die Bildung von Ausdrücken. Ausdrücke bestehen aus Operanden, Operatorzeichen und Klammern. Jeder Operand ist wiederum ein Ausdruck oder ein Sonderfall eines Ausdrucks - eine Konstante oder eine Variable.

Unäre Operationen

& die Adresse des Operanden abrufen

* Adressierung der Adresse (Dereferenzierung)

- unäres Minus, ändert das Vorzeichen des arithmetischen Operanden

++ Um eins erhöhen:

Präfixoperation - erhöht den Operanden, bevor er verwendet wird

postfix-Operation inkrementiert den Operanden, nachdem er verwendet wurde

int a = (m ++) + n; // a = 4, m = 2, n = 2

int b = m + (++ n); // a = 3, m = 1, n = 3

um eins verringern:

Präfix-Operation - dekrementiert den Operanden, bevor er verwendet wird

Die Postfix-Operation dekrementiert den Operanden, nachdem er verwendet wurde

Berechnen der Größe (in Bytes) für ein Objekt des Typs,

hat einen Operanden

hat zwei Formen

Größe des Ausdrucks

sizeof (float) // 4

sizeof (1.0) // 8, da standardmäßig reelle Konstanten

Fortsetzung des Themas:
Router

Standard-Gadgets sind bedingungslos aus modernen Versionen von Windows OC verschwunden. Aber die Benutzer sind es nicht gewohnt, etwas Gutes zu verlieren und verwenden daher aktiv Analoga. Lange bevor ...