heim - Erholung
Typisierte Programmiersprache. Typisierte Programmiersprache Typ oder Formatbezeichner oder Konvertierungszeichen oder Steuerzeichen

Programmiersprache C++

Letzte Aktualisierung: 28.08.2017

Die Programmiersprache C++ ist eine statisch typisierte, kompilierte Allzweck-Programmiersprache auf hoher Ebene, die sich zum Erstellen einer Vielzahl von Anwendungen eignet. C++ ist heute eine der beliebtesten und am weitesten verbreiteten Sprachen.

Es hat seine Wurzeln in der Sprache C, die 1969–1973 in den Bell Labs vom Programmierer Dennis Ritchie entwickelt wurde. In den frühen 1980er Jahren entwickelte der dänische Programmierer Bjarne Stroustrup, der damals bei Bell Labs arbeitete, C++ als Erweiterung der C-Sprache. Tatsächlich hat C++ anfangs lediglich die C-Sprache um einige objektorientierte Programmierfunktionen ergänzt. Und deshalb nannte Stroustrup es selbst zunächst „C mit Klassen“.

Anschließend begann die neue Sprache an Popularität zu gewinnen. Es wurden neue Funktionen hinzugefügt, die es nicht nur zu einer Ergänzung von C, sondern zu einer völlig neuen Programmiersprache machten. Infolgedessen wurde „C mit Klassen“ in C++ umbenannt. Und von da an begannen sich beide Sprachen unabhängig voneinander zu entwickeln.

C++ ist eine leistungsstarke Sprache, die umfangreiche Speicherfunktionen von C erbt. Daher findet C++ häufig Verwendung in der Systemprogrammierung, insbesondere bei der Erstellung von Betriebssystemen, Treibern, verschiedenen Dienstprogrammen, Antivirenprogrammen usw. Übrigens ist das Windows-Betriebssystem größtenteils in C++ geschrieben. Die Verwendung dieser Sprache ist jedoch nicht auf die Systemprogrammierung beschränkt. C++ kann in Programmen jeder Ebene verwendet werden, bei denen Geschwindigkeit und Leistung wichtig sind. Es wird häufig zum Erstellen grafischer Anwendungen und verschiedener Anwendungsprogramme verwendet. Es wird auch besonders oft verwendet, um Spiele mit reichhaltiger, reichhaltiger Visualisierung zu erstellen. Darüber hinaus gewinnt in letzter Zeit die mobile Richtung an Dynamik, wo auch C++ seine Anwendung gefunden hat. Und selbst in der Webentwicklung können Sie C++ verwenden, um Webanwendungen oder einige unterstützende Dienste zu erstellen, die Webanwendungen bedienen. Im Allgemeinen ist C++ eine weit verbreitete Sprache, in der Sie nahezu jede Art von Programm erstellen können.

C++ ist eine kompilierte Sprache, was bedeutet, dass der Compiler den C++-Quellcode in eine ausführbare Datei übersetzt, die eine Reihe von Maschinenanweisungen enthält. Allerdings haben unterschiedliche Plattformen ihre eigenen Besonderheiten, sodass kompilierte Programme nicht einfach von einer Plattform auf eine andere übertragen und dort ausgeführt werden können. Auf der Quellcodeebene sind C++-Programme jedoch weitgehend portierbar, sofern nicht einige betriebssystemspezifische Funktionen verwendet werden. Und die Verfügbarkeit von Compilern, Bibliotheken und Entwicklungstools für fast alle gängigen Plattformen ermöglicht es Ihnen, denselben C++-Quellcode in Anwendungen für diese Plattformen zu kompilieren.

Im Gegensatz zu C können Sie mit der Sprache C++ Anwendungen in einem objektorientierten Stil schreiben und ein Programm als eine Sammlung von Klassen und Objekten darstellen, die miteinander interagieren. Dies vereinfacht die Erstellung großer Anwendungen.

Hauptstadien der Entwicklung

1979-80 entwickelte Bjarne Stroustrup eine Erweiterung der C-Sprache – „C with Classes“. 1983 wurde die Sprache in C++ umbenannt.

Im Jahr 1985 erschien die erste kommerzielle Version der Sprache C++ sowie die Erstausgabe des Buches „The C++ Programming Language“, das die Erstbeschreibung dieser Sprache in Ermangelung eines offiziellen Standards darstellte.

1989 wurde eine neue Version der Sprache C++ 2.0 veröffentlicht, die eine Reihe neuer Funktionen enthielt. Danach entwickelte sich die Sprache bis 2011 relativ langsam. Doch gleichzeitig wurde 1998 der erste Versuch unternommen, die Sprache durch die ISO-Organisation (International Organization for Standardization) zu standardisieren. Der erste Standard hieß ISO/IEC 14882:1998, kurz C++98. Anschließend wurde im Jahr 2003 eine neue Version des C++03-Standards veröffentlicht.

Im Jahr 2011 wurde der neue C++11-Standard veröffentlicht, der viele Ergänzungen enthielt und die C++-Sprache um eine Vielzahl neuer Funktionalitäten bereicherte. Daraufhin wurde 2014 eine kleine Ergänzung des Standards, auch bekannt als C++14, veröffentlicht. Und eine weitere wichtige Veröffentlichung der Sprache ist für 2017 geplant.

Compiler und Entwicklungsumgebungen

Um Programme in C++ zu entwickeln, benötigen Sie einen Compiler – er übersetzt den Quellcode in C++ in eine ausführbare Datei, die Sie dann ausführen können. Aber im Moment gibt es viele verschiedene Compiler. Sie können sich in verschiedenen Aspekten unterscheiden, insbesondere in der Umsetzung von Standards. Eine grundlegende Liste von Compilern für C++ finden Sie auf Wikipedia. Für die Entwicklung wird empfohlen, diejenigen Compiler auszuwählen, die die neuesten Standards entwickeln und implementieren. Daher werden wir in diesem Tutorial hauptsächlich den frei verfügbaren g++-Compiler verwenden, der vom GNU-Projekt entwickelt wurde.

Sie können zum Erstellen von Programmen auch IDEs wie Visual Studio, Netbeans, Eclipse, Qt usw. verwenden.

In diesem Artikel wird die Funktion scanf() allgemein und ohne Bezugnahme auf einen bestimmten Standard erläutert. Daher sind hier Daten aus allen C99-, C11-, C++11- und C++14-Standards enthalten. Es ist möglich, dass die Funktion in einigen Standards anders funktioniert als im Artikel dargestellt.

scanf C-Funktion – Beschreibung

scanf() ist eine Funktion, die sich in der Header-Datei von stdio.h(C) und cstdio(C++) befindet, sie wird auch als formatierte Eingabe für das Programm bezeichnet. scanf liest Zeichen aus der Standardeingabe (stdin), konvertiert sie entsprechend dem Format und schreibt sie dann in die angegebenen Variablen. Format bedeutet, dass die Daten beim Empfang auf eine bestimmte Form reduziert werden. Somit wird die scanf-C-Funktion beschrieben:

scanf("%format", &variable1[, &variable2,[…]]),

wobei Variablen als Adressen übergeben werden. Der Grund für die Übergabe von Variablen an eine Funktion auf diese Weise liegt auf der Hand: Als Ergebnis ihrer Operation gibt sie einen Wert zurück, der auf das Vorhandensein von Fehlern hinweist. Daher besteht die einzige Möglichkeit, die Werte von Variablen zu ändern, darin, sie per Adresse zu übergeben. Dank dieser Methode kann die Funktion auch Daten jeglicher Art verarbeiten.

Einige Programmierer rufen aufgrund von Analogien zu anderen Sprachen Funktionen wie die Prozeduren scanf() oder printf() auf.

Mit Scanf können Sie alle grundlegenden Sprachtypen eingeben: char, int, float, string usw. Bei Variablen vom Typ String muss das Adresszeichen „&“ nicht angegeben werden, da eine Variable vom Typ String ein Array ist und ihr Name die Adresse des ersten Elements des Arrays im Computerspeicher ist.

Dateneingabeformat oder Steuerzeichenfolge

Schauen wir uns zunächst ein Beispiel für die Verwendung der C-Funktion scanf aus der Beschreibung an.

#enthalten int main() ( int x; while (scanf("%d", &x) == 1) printf("%d\n", x); return 0; //Anforderung für Linux-Systeme )

Das Eingabeformat besteht aus den folgenden vier Parametern: %[*][width][modifiers] Typ. In diesem Fall sind das „%“-Zeichen und der Typ erforderliche Parameter. Das heißt, das Mindestformat sieht so aus: „%s“, „%d“ und so weiter.

Im Allgemeinen werden die Zeichen, aus denen eine Formatzeichenfolge besteht, unterteilt in:

  • Formatbezeichner – alles, was mit dem %-Symbol beginnt;
  • Trenn- oder Leerzeichen – das sind Leerzeichen, Tabulatorzeichen (\t), neue Zeile (\n);
  • andere Zeichen als Leerzeichen.

Die Funktion ist möglicherweise unsicher.

Verwenden Sie scanf_s() anstelle von scanf().

(gepostet von Visual Studio)

Typ- oder Formatbezeichner oder Konvertierungszeichen oder Steuerzeichen

Die Beschreibung von scanf C muss mindestens einen Formatbezeichner enthalten, der am Ende von Ausdrücken angegeben wird, die mit dem „%“-Zeichen beginnen. Es teilt dem Programm mit, welche Art von Daten es bei der Eingabe erwarten soll, normalerweise über die Tastatur. Eine Liste aller Formatspezifizierer finden Sie in der folgenden Tabelle.

Bedeutung

Das Programm wartet auf die Eingabe eines Zeichens. Die zu schreibende Variable muss vom Zeichentyp char sein.

Das Programm erwartet die Eingabe einer ganzzahligen Dezimalzahl. Die Variable muss vom Typ int sein.

Das Programm erwartet eine Gleitkommazahl in Exponentialform. Die Variable muss vom Typ float sein.

Das Programm erwartet die Eingabe einer Gleitkommazahl. Die Variable muss vom Typ float sein.

7

Das Programm erwartet die Eingabe einer Gleitkommazahl. Die Variable muss vom Typ float sein.

Das Programm erwartet die Eingabe einer Oktalzahl. Die Variable muss vom Typ int sein.

Das Programm erwartet die Eingabe einer Zeichenfolge. Als Zeichenfolge gilt eine Menge beliebiger Zeichen bis zum ersten gefundenen Trennzeichen. Die Variable muss vom Typ String sein.

Das Programm erwartet die Eingabe einer Hexadezimalzahl. Die Variable muss vom Typ int sein.

Die Variable erwartet eine Zeigereingabe. Die Variable muss vom Typ Zeiger sein.

Schreibt einen ganzzahligen Wert in eine Variable, der der Anzahl der bisher von der Funktion scanf gelesenen Zeichen entspricht.

Das Programm liest eine vorzeichenlose Ganzzahl. Der Variablentyp muss eine vorzeichenlose Ganzzahl sein.

Das Programm erwartet die Eingabe einer Binärzahl. Die Variable muss vom Typ int sein.

Eine Reihe scannbarer Zeichen. Das Programm wartet auf die Eingabe von Zeichen aus einem begrenzten Pool, der zwischen scanf angegeben wurde, und funktioniert, solange Zeichen aus dem angegebenen Satz im Eingabestream vorhanden sind.

Zeichen in der Formatzeichenfolge

Sternchen (*)

Das Sternchen (*) ist ein Flag, das angibt, dass der Zuweisungsvorgang unterdrückt werden soll. Unmittelbar nach dem „%“-Zeichen wird ein Sternchen eingefügt. Zum Beispiel,

Scanf("%d%*c%d", &x, &y); //ignoriere das Zeichen zwischen zwei Ganzzahlen. scanf("%s%*d%s", str, str2); //ignoriere die Ganzzahl zwischen zwei Zeichenfolgen.

Das heißt, wenn Sie in der Konsole die Zeile „45-20“ eingeben, führt das Programm Folgendes aus:

  1. Der Variablen „x“ wird der Wert 45 zugewiesen.
  2. Der Variablen „y“ wird der Wert 20 zugewiesen.
  3. Und das Minuszeichen (Bindestrich) „-“ wird dank „%*c“ ignoriert.

Breite (oder Feldbreite)

Dies ist eine Ganzzahl zwischen dem „%“-Zeichen und dem Formatbezeichner, die die maximale Anzahl von Zeichen angibt, die während des aktuellen Lesevorgangs gelesen werden sollen.

Dabei sind einige wichtige Punkte zu beachten:

  1. scanf stoppt die Ausführung, wenn es auf ein Trennzeichen trifft, auch wenn noch nicht 20 Zeichen gezählt wurden.
  2. Wenn die Eingabe mehr als 20 Zeichen enthält, werden nur die ersten 20 davon in die Variable str geschrieben.

Typmodifikatoren (oder Präzision)

Hierbei handelt es sich um spezielle Flags, die den Typ der für die Eingabe erwarteten Daten ändern. Das Flag wird links vom Typbezeichner angegeben:

  • L oder l (kleines L) Bei Verwendung von „l“ mit den Spezifizierern d, i, o, u, x weist das Flag das Programm an, eine Eingabe vom Typ long int zu erwarten. Bei Verwendung von „l“ mit dem Spezifizierer e oder f teilt das Flag dem Programm mit, dass es mit der Eingabe eines doppelten Werts rechnen soll. Durch die Verwendung von „L“ wird dem Programm mitgeteilt, dass ein Wert vom Typ „long double“ erwartet wird. Die Verwendung von „l“ mit den Spezifizierern „c“ und „s“ teilt dem Programm mit, dass Doppelbyte-Zeichen vom Typ wchar_t erwartet werden. Beispiel: „%lc“, „%ls“, „%l“.
  • h ist ein Flag, das den Typ short angibt.
  • hh – gibt an, dass die Variable ein Zeiger auf einen Wert vom Typ „signed char“ oder „unsigned char“ ist. Das Flag kann mit den Spezifizierern d, i, o, u, x, n verwendet werden.
  • ll (zwei kleine L) – gibt an, dass die Variable ein Zeiger auf einen Wert vom Typ „signed int“ oder „unsigned long long int“ ist. Das Flag wird mit den Spezifizierern verwendet: d, i, o, u, x, n.
  • j – gibt an, dass die Variable ein Zeiger auf den Typ intmax_t oder uintmax_t aus der Header-Datei stdint.h ist. Wird mit Spezifizierern verwendet: d, i, o, u, x, n.
  • z – gibt an, dass die Variable ein Zeiger auf den Typ size_t ist, dessen Definition in stddef.h steht. Wird mit Spezifizierern verwendet: d, i, o, u, x, n.
  • t – gibt an, dass die Variable ein Zeiger auf den Typ ptrdiff_t ist. Die Definition für diesen Typ befindet sich in stddef.h. Wird mit Spezifizierern verwendet: d, i, o, u, x, n.

Das Bild mit Modifikatoren kann in Form einer Tabelle übersichtlicher dargestellt werden. Diese Beschreibung von scanf C wird für Programmierer klarer sein.

Andere Charaktere

Alle im Format vorkommenden Zeichen werden verworfen. Es ist zu beachten, dass das Vorhandensein von Leerzeichen oder Trennzeichen (Zeileumbruch, Leerzeichen, Tabulatorzeichen) in der Steuerzeichenfolge zu einem unterschiedlichen Verhalten der Funktion führen kann. In einer Version liest scanf(), ohne eine beliebige Anzahl von Trennzeichen zu speichern, bis es auf ein anderes Zeichen als das Trennzeichen trifft, und in einer anderen Version spielen Leerzeichen (nur sie) keine Rolle und der Ausdruck „%d + %d“ ist äquivalent zu „%d+%d“.

Beispiele

Schauen wir uns einige Beispiele an, die Ihnen helfen sollen, über die Funktionsweise der Funktion nachzudenken und sie genauer zu verstehen.

Scanf("%3s", str); //Wenn Sie in der Konsole die Zeile „1d2s3d1;3“ eingeben, wird nur „1d2“ in str geschrieben scanf("%dminus%d", &x, &y); //Minuszeichen zwischen zwei Zahlen werden verworfen scanf("%5", str); //Zeichen werden in str eingegeben, bis es 5 davon gibt und die Zeichen Zahlen von 0 bis 9 sind. scanf("%lf", &d); //erwartete Eingabe vom Typ double scanf("%hd", &x); //erwarte eine Zahl vom Typ short scanf("%hu", &y); //erwarte eine Zahl vom Typ unsigned short scanf("lx", &z); //erwartete Anzahl vom Typ long int

Anhand der angegebenen Beispiele können Sie sehen, wie sich die erwartete Zahl bei Verwendung verschiedener Symbole ändert.

scanf C - Beschreibung für Anfänger

Dieser Abschnitt wird für Anfänger nützlich sein. Oftmals muss man nicht so sehr eine vollständige Beschreibung von scanf C zur Hand haben, sondern eher die Details zur Funktionsweise der Funktion.

  • Die Funktion ist etwas veraltet. Es gibt verschiedene Implementierungen in Bibliotheken unterschiedlicher Versionen. Zum Beispiel die verbesserte Funktion scanf S C, deren Beschreibung auf der Microsoft-Website zu finden ist.
  • Die Anzahl der Spezifizierer im Format muss der Anzahl der an die Funktion übergebenen Argumente entsprechen.
  • Elemente des Eingabestreams dürfen nur durch Trennzeichen getrennt werden: Leerzeichen, Tabulator, Zeilenumbruch. Komma, Semikolon, Punkt usw. – diese Zeichen sind keine Trennzeichen für die Funktion scanf().
  • Wenn scanf auf ein Trennzeichen stößt, wird die Eingabe gestoppt. Wenn mehr als eine Variable zu lesen ist, fährt scanf mit dem Lesen der nächsten Variablen fort.
  • Die geringste Abweichung im Format der Eingabedaten führt zu unvorhersehbaren Ergebnissen des Programms. Es ist gut, wenn das Programm einfach mit einem Fehler endet. Aber oft funktioniert das Programm weiterhin und macht es falsch.
  • scanf("%20s ...", ...); Wenn der Eingabestream 20 Zeichen überschreitet, liest scanf die ersten 20 Zeichen und wird entweder beendet oder fährt mit dem Lesen der nächsten Variablen fort, sofern angegeben. Der nächste Scanf-Aufruf liest den Eingabestream dort weiter, wo der vorherige Scanf-Aufruf aufgehört hat. Wenn beim Lesen der ersten 20 Zeichen ein Trennzeichen auftritt, stoppt scanf die Ausführung oder fährt mit dem Lesen der nächsten Variablen fort, auch wenn für die erste Variable keine 20 Zeichen gelesen wurden. In diesem Fall werden alle nicht gezählten Zeichen an die nächste Variable angehängt.
  • Wenn der zu scannende Zeichensatz mit dem Zeichen „^“ beginnt, liest scanf die Daten, bis ein Trennzeichen oder ein Zeichen aus dem Satz gefunden wird. Beispielsweise liest „%[^A-E1-5]“ Daten aus dem Stream, bis eines der englischen Großbuchstaben A bis E oder eine der Zahlen 1 bis 5 gefunden wird.
  • Die C-Funktion scanf gibt, wie beschrieben, eine Zahl zurück, die der erfolgreichen Anzahl von Einträgen in Variablen entspricht. Wenn scanf 3 Variablen schreibt, ist das Ergebnis der erfolgreichen Ausführung der Funktion die Rückgabe der Zahl 3. Wenn scanf keine Variablen schreiben konnte, ist das Ergebnis 0. Und schließlich, wenn scanf nicht mit der Arbeit beginnen konnte Aus irgendeinem Grund wird das Ergebnis EOF sein.
  • Wenn die Funktion scanf() ihre Arbeit nicht korrekt abgeschlossen hat. Beispiel: scanf("%d", &x) – eine Zahl wurde erwartet, aber Symbole wurden als Eingabe empfangen. Der nächste Aufruf von scanf() beginnt an der Stelle im Eingabestream, an der der vorherige Funktionsaufruf endete. Um dieses Problem zu lösen, müssen Sie die problematischen Charaktere loswerden. Dies kann beispielsweise durch den Aufruf von scanf("%*s") erfolgen. Das heißt, die Funktion liest eine Zeichenfolge und verwirft sie. Auf diese clevere Weise können Sie die erforderlichen Daten weiterhin eingeben.
  • Einige Implementierungen von scanf() erlauben nicht die Verwendung von „-“ im zu scannenden Zeichensatz.
  • Der Spezifizierer „%c“ liest jedes Zeichen aus dem Stream. Das heißt, es liest auch das Trennzeichen. Um das Trennzeichen zu überspringen und mit dem Lesen des gewünschten Zeichens fortzufahren, können Sie „%1s“ verwenden.
  • Wenn Sie den Spezifizierer „c“ verwenden, ist es akzeptabel, die Breite „%10c“ zu verwenden, aber dann müssen Sie ein Array von Elementen vom Typ char als Variable an die scanf-Funktion übergeben.
  • „%“ bedeutet „alle Kleinbuchstaben des englischen Alphabets“ und „%“ bedeutet einfach 3 Zeichen: „z“, „a“, „-“. Mit anderen Worten bedeutet das Zeichen „-“ nur dann einen Bereich, wenn es zwischen zwei Zeichen in der richtigen Reihenfolge steht. Wenn „-“ am Ende eines Ausdrucks, am Anfang oder in der falschen Reihenfolge der Zeichen auf beiden Seiten steht, dann stellt es lediglich einen Bindestrich und keinen Bereich dar.

Abschluss

Damit ist die Beschreibung von scanf C abgeschlossen. Es handelt sich um eine gute Komfortfunktion für die Arbeit in kleinen Programmen und bei der Verwendung einer prozeduralen Programmiermethode. Der größte Nachteil ist jedoch die Anzahl unvorhersehbarer Fehler, die bei der Verwendung von scanf auftreten können. Daher ist es am besten, beim Programmieren die Beschreibung von scanf C vor Augen zu behalten. In großen professionellen Projekten werden iostreams verwendet, da sie über höhere Fähigkeiten verfügen, Fehler besser erkennen und verarbeiten können und auch mit erheblichen Informationsmengen arbeiten. Es sollte auch beachtet werden, dass aufgrund des Alters der Funktion in vielen Online-Quellen eine Beschreibung von scanf C auf Russisch sowie Anwendungsbeispiele verfügbar ist. Daher finden Sie die Antwort bei Bedarf immer in thematischen Foren.

Diese Tutorials sind für jeden geeignet, egal ob Sie neu in der Programmierung sind oder über umfassende Programmiererfahrung in anderen Sprachen verfügen! Dieses Material richtet sich an diejenigen, die die C/C++-Sprachen von ihren Grundlagen bis hin zu den komplexesten Strukturen erlernen möchten.

C++ ist eine Programmiersprache. Mit Kenntnissen dieser Programmiersprache können Sie Ihren Computer auf höchstem Niveau steuern. Im Idealfall können Sie den Computer tun lassen, was Sie wollen. Unsere Website hilft Ihnen, die Programmiersprache C++ zu beherrschen.

Installation /IDE

Das allererste, was Sie tun sollten, bevor Sie mit dem Erlernen von C++ beginnen, ist sicherzustellen, dass Sie über eine IDE verfügen – eine integrierte Entwicklungsumgebung (das Programm, in dem Sie programmieren). Wenn Sie keine IDE haben, dann sind Sie hier genau richtig. Sobald Sie sich für eine IDE entschieden haben, installieren Sie sie und üben Sie das Erstellen einfacher Projekte.

Einführung in C++

Die Sprache C++ besteht aus einer Reihe von Befehlen, die dem Computer sagen, was er tun soll. Dieser Befehlssatz wird üblicherweise Quellcode oder einfach Code genannt. Befehle sind entweder „Funktionen“ oder „Schlüsselwörter“. Schlüsselwörter (für C/C++ reservierte Wörter) sind die Grundbausteine ​​der Sprache. Funktionen sind komplexe Bausteine, weil sie als einfachere Funktionen geschrieben sind – Sie werden dies in unserem allerersten Programm sehen, das unten gezeigt wird. Diese Funktionsstruktur ähnelt dem Inhalt eines Buches. Der Inhalt kann die Kapitel des Buches anzeigen, jedes Kapitel im Buch kann seinen eigenen Inhalt bestehend aus Absätzen haben, jeder Absatz kann seine eigenen Unterabsätze haben. Obwohl C++ viele allgemeine Funktionen und reservierte Wörter bereitstellt, die Sie verwenden können, besteht dennoch die Notwendigkeit, eigene Funktionen zu schreiben.

In welchem ​​Teil des Programms beginnt es? Jedes Programm in C++ hat eine Funktion, sie wird Haupt- oder Hauptfunktion genannt, die Programmausführung beginnt mit dieser Funktion. Von der Hauptfunktion aus können Sie auch beliebige andere Funktionen aufrufen, unabhängig davon, ob es sich um von uns geschriebene oder, wie bereits erwähnt, vom Compiler bereitgestellte Funktionen handelt.

Wie greifen Sie auf diese Standardfunktionen zu? Um auf die Standardfunktionen des Compilers zuzugreifen, müssen Sie die Header-Datei mit der Präprozessoranweisung #include einbinden. Warum ist das effektiv? Schauen wir uns ein Beispiel eines Arbeitsprogramms an:

#enthalten << "Моя первая программа на С++\n"; cin.get(); }

Betrachten wir die Elemente des Programms im Detail. #include ist eine „Präprozessor“-Direktive, die den Compiler anweist, den Code aus der iostream-Header-Datei in unser Programm einzufügen, bevor die ausführbare Datei erstellt wird. Durch die Verbindung einer Header-Datei mit einem Programm erhalten Sie Zugriff auf viele verschiedene Funktionen, die Sie in Ihrem Programm verwenden können. Beispielsweise erfordert der cout-Operator iostream . Zeile mit Namespace std; weist den Compiler an, eine Gruppe von Funktionen zu verwenden, die Teil der Standardbibliothek std sind. Diese Zeile ermöglicht dem Programm auch die Verwendung von Operatoren wie cout . Das Semikolon ist Teil der C++-Syntax. Es teilt dem Compiler mit, dass dies das Ende des Befehls ist. Sie werden gleich sehen, dass Semikolons zum Beenden der meisten Befehle in C++ verwendet werden.

Die nächste wichtige Zeile des Programms ist int main(). Diese Zeile teilt dem Compiler mit, dass es eine Funktion namens main gibt und dass die Funktion eine Ganzzahl zurückgibt. Geschweifte Klammern ( und ) signalisieren den Beginn (und das Ende) einer Funktion. Geschweifte Klammern werden auch in anderen Codeblöcken verwendet, sie geben jedoch immer eines an – den Anfang bzw. das Ende des Blocks.

In C++ wird das Cout-Objekt zum Anzeigen von Text verwendet (ausgesprochen „C out“). Er verwendet Symbole<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

Der nächste Befehl ist cin.get() . Dies ist ein weiterer Funktionsaufruf, der Daten aus dem Eingabedatenstrom liest und auf das Drücken der ENTER-Taste wartet. Dieser Befehl verhindert, dass das Konsolenfenster geschlossen wird, bis die EINGABETASTE gedrückt wird. Dies gibt Ihnen Zeit, die Ausgabe des Programms zu sehen.

Beim Erreichen des Endes der Hauptfunktion (der schließenden geschweiften Klammer) gibt unser Programm den Wert 0 an das Betriebssystem zurück. Dieser Rückgabewert ist wichtig, da das Betriebssystem durch seine Analyse beurteilen kann, ob unser Programm erfolgreich abgeschlossen wurde oder nicht. Ein Rückgabewert von 0 bedeutet Erfolg und wird automatisch zurückgegeben (jedoch nur für den Datentyp int; bei anderen Funktionen müssen Sie den Wert manuell zurückgeben). Wenn wir jedoch etwas anderes zurückgeben wollten, beispielsweise 1, müssten wir dies tun manuell.

#enthalten Verwenden des Namensraums std; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Um das Material zu konsolidieren, geben Sie den Programmcode in Ihre IDE ein und führen Sie ihn aus. Sobald das Programm ausgeführt wurde und Sie die Ausgabe gesehen haben, experimentieren Sie ein wenig mit der cout-Anweisung. Dies wird Ihnen helfen, sich an die Sprache zu gewöhnen.

Kommentieren Sie unbedingt Ihre Programme!

Fügen Sie Kommentare zu Ihrem Code hinzu, um ihn nicht nur für Sie selbst, sondern auch für andere klarer zu machen. Der Compiler ignoriert Kommentare beim Ausführen von Code, sodass Sie eine beliebige Anzahl von Kommentaren verwenden können, um den tatsächlichen Code zu beschreiben. Um einen Kommentar zu erstellen, verwenden Sie oder // , was dem Compiler mitteilt, dass der Rest der Zeile ein Kommentar ist, oder /* und dann */ . Wenn Sie das Programmieren lernen, ist es hilfreich, Teile des Codes kommentieren zu können, um zu sehen, wie sich die Ausgabe des Programms ändert. Sie können sich ausführlich über die Kommentartechnik informieren.

Was tun mit all diesen Arten von Variablen?

Manchmal kann es verwirrend sein, mehrere Variablentypen zu haben, wenn einige Variablentypen redundant zu sein scheinen. Es ist sehr wichtig, den richtigen Variablentyp zu verwenden, da einige Variablen mehr Speicher benötigen als andere. Darüber hinaus sind Gleitkommazahlen, die Datentypen float und double aufgrund der Art und Weise, wie sie im Speicher gespeichert werden, „ungenau“ und sollten nicht verwendet werden, wenn ein präziser ganzzahliger Wert gespeichert werden muss.

Variablen in C++ deklarieren

Um eine Variable zu deklarieren, verwenden Sie den Syntaxtyp<имя>; . Hier sind einige Beispiele für Variablendeklarationen:

Int num; char-Zeichen; float num_float;

Es ist zulässig, mehrere Variablen des gleichen Typs in einer Zeile zu deklarieren; dazu müssen sie jeweils durch ein Komma getrennt werden.

Int x, y, z, d;

Wenn Sie genau hingesehen haben, ist Ihnen vielleicht aufgefallen, dass auf eine Variablendeklaration immer ein Semikolon folgt. Sie können mehr über die Konvention „zur Benennung von Variablen“ erfahren.

Häufige Fehler beim Deklarieren von Variablen in C++

Wenn Sie versuchen, eine nicht deklarierte Variable zu verwenden, wird Ihr Programm nicht kompiliert und Sie erhalten eine Fehlermeldung. In C++ wird bei allen Sprachschlüsselwörtern, allen Funktionen und allen Variablen die Groß-/Kleinschreibung beachtet.

Verwenden von Variablen

Jetzt wissen Sie also, wie man eine Variable deklariert. Hier ist ein Beispielprogramm, das die Verwendung einer Variablen demonstriert:

#enthalten Verwenden des Namensraums std; int main() ( int number; cout<< "Введите число: "; cin >>Anzahl; cin.ignore(); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Werfen wir einen Blick auf dieses Programm und untersuchen wir seinen Code Zeile für Zeile. Das Schlüsselwort int gibt an, dass Zahl eine ganze Zahl ist. Die Funktion cin >> liest den Wert in number ein, der Benutzer muss nach der eingegebenen Zahl die Eingabetaste drücken. cin.ignore() ist eine Funktion, die ein Zeichen liest und ignoriert. Wir haben unsere Eingabe in das Programm organisiert; nach der Eingabe einer Zahl drücken wir die ENTER-Taste, ein Symbol, das auch an den Eingabestream übertragen wird. Wir brauchen es nicht, also werfen wir es weg. Beachten Sie, dass die Variable als Ganzzahltyp deklariert wurde. Wenn der Benutzer versucht, eine Dezimalzahl einzugeben, wird diese abgeschnitten (d. h. der Dezimalteil der Zahl wird ignoriert). Versuchen Sie, eine Dezimalzahl oder eine Zeichenfolge einzugeben. Wenn Sie das Beispielprogramm ausführen, hängt die Antwort vom Eingabewert ab.

Beachten Sie, dass beim Drucken aus einer Variablen keine Anführungszeichen verwendet werden. Das Fehlen von Anführungszeichen teilt dem Compiler mit, dass eine Variable vorhanden ist und dass das Programm daher den Wert der Variablen überprüfen sollte, um den Variablennamen bei der Ausführung durch ihren Wert zu ersetzen. Mehrere Shift-Anweisungen in derselben Zeile sind durchaus akzeptabel und die Ausgabe erfolgt in derselben Reihenfolge. Sie sollten Zeichenfolgenliterale (in Anführungszeichen eingeschlossene Zeichenfolgen) und Variablen trennen und jeder ihren eigenen Umschaltoperator zuweisen<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Werte verändern und vergleichen

Unabhängig davon, welche Art von Daten Sie verwenden, sind Variablen ohne die Möglichkeit, ihren Wert zu ändern, natürlich nicht sehr interessant. Im Folgenden sind einige Operatoren aufgeführt, die in Verbindung mit Variablen verwendet werden:

  • * Multiplikation,
  • - Subtraktion,
  • + Ergänzung,
  • / Aufteilung,
  • = Aufgabe,
  • == Gleichheit,
  • >mehr
  • < меньше.
  • != ungleich
  • >= größer oder gleich
  • <= меньше или равно

Um das Ergebnis der Variablen links zuzuweisen, müssen rechts vom Zuweisungszeichen Operatoren verwendet werden, die mathematische Funktionen ausführen.

Hier sind einige Beispiele:

A = 4 * 6; // Zeilenkommentar und Semikolon verwenden, a ist gleich 24 a = a + 5; // gleich der Summe aus Originalwert und fünf a == 5 // weist keine fünf zu, prüft, ob es gleich 5 ist oder nicht

Sie verwenden == häufig in Konstrukten wie bedingten Anweisungen und Schleifen.

A< 5 // Проверка, a менее пяти? a >5 // Überprüfen Sie, ob es mehr als fünf ist? a == 5 // Prüfung, ist a gleich fünf? a != 5 // Überprüfen Sie, ob es nicht gleich fünf ist? a >= 5 // Prüfen, ob a größer oder gleich fünf ist? A<= 5 // Проверка, a меньше или равно пяти?

Diese Beispiele zeigen die Verwendung von Vergleichszeichen nicht sehr deutlich, aber wenn wir mit der Untersuchung von Auswahloperatoren beginnen, werden Sie verstehen, warum dies notwendig ist.

C++ (sprich: c-plus-plus) ist eine kompilierte, statisch typisierte Allzweck-Programmiersprache, mit der Sie Programme beliebiger Komplexität erstellen können.
Seit mehr als 20 Jahren gehört diese Sprache zu den drei beliebtesten und gefragtesten Programmiersprachen. (Sie können dies überprüfen, indem Sie die TIOBE-Website besuchen.)
Die Sprache entstand in den frühen 1980er Jahren, als Björn Stroustrup, Mitarbeiter von Bell Labs, für seine eigenen Bedürfnisse eine Reihe von Verbesserungen an der C-Sprache vorschlug.

Bjarne Stroustrup – Schöpfer der C++-Sprache

Stroustrup beschloss, die C-Sprache um die Fähigkeiten der Simula-Sprache zu erweitern. C ist die Basissprache des UNIX-Systems, auf dem Bell-Computer liefen, und ist schnell, funktionsreich und portabel. Stroustrup fügte die Möglichkeit hinzu, mit Klassen und Objekten zu arbeiten. Dadurch erwiesen sich praktische Modellierungsprobleme sowohl im Hinblick auf die Entwicklungszeit (dank der Verwendung von Simula-ähnlichen Klassen) als auch im Hinblick auf die Rechenzeit (dank der Geschwindigkeit von C) als einfach zu lösen.
So spricht der Sprachentwickler selbst darüber:



1998 wurde der erste Sprachstandard, bekannt als C++98, von einem Standardkomitee veröffentlicht. C++ entwickelt sich ständig weiter, um den heutigen Anforderungen gerecht zu werden. Eine der Gruppen, die die C++-Sprache entwickeln und dem C++-Standardkomitee Vorschläge zu ihrer Verbesserung vorlegen, ist Schub, das sich unter anderem damit beschäftigt, die Fähigkeiten der Sprache durch das Hinzufügen von Metaprogrammierungsfunktionen zu verbessern. Der neueste Standard wurde 2017 veröffentlicht und heißt C++17. Der nächste Standard lässt nicht lange auf sich warten und wird voraussichtlich im Jahr 2020 erscheinen.
Niemand besitzt die Rechte an der Sprache C++; sie ist kostenlos. Im März 2016 wurde in Russland eine Arbeitsgruppe WP21 C++ gegründet. Die Gruppe wurde gegründet, um Vorschläge für den C++-Standard zu sammeln, sie an ein Komitee zu senden und sie auf Generalversammlungen der International Organization for Standardization zu verteidigen.
C++ ist eine Multi-Paradigmen-Sprache (vom Wort Paradigma – ein Stil zum Schreiben von Computerprogrammen), die eine breite Palette verschiedener Programmierstile und -technologien umfasst. Sie wird oft als objektorientierte Sprache klassifiziert, streng genommen ist dies jedoch nicht der Fall. Während des Arbeitsprozesses erhält der Entwickler absolute Freiheit bei der Wahl der Werkzeuge, um das mit einem bestimmten Ansatz gelöste Problem möglichst effizient zu lösen. Mit anderen Worten: C++ zwingt den Programmierer nicht dazu, sich nur an einen einzigen Stil der Programmentwicklung zu halten (z. B. objektorientiert).
C++ verfügt über eine umfangreiche Standardbibliothek, die gängige Container und Algorithmen, E/A, reguläre Ausdrücke, Multithreading-Unterstützung und andere Funktionen umfasst. C++ hat viele Programmiersprachen beeinflusst, darunter: Java, C#, D. Da C++ zu einer Sprachfamilie gehört, die auf der Syntax der C-Sprache basiert, können Sie andere Programmiersprachen dieser Familie problemlos beherrschen: JavaScript, PHP , Perl, Objective-C und viele andere. usw., einschließlich der Muttersprache selbst – C. ()
Im Laufe ihrer Existenz hat sich die C++-Sprache hartnäckige Mythen angeeignet, die leicht zu widerlegen sind (siehe hier: Teil 1 und Teil 2)

Geschichte der Sprach- und Standardveröffentlichung

1983

Der Schöpfer der Sprache ist Björn Stroustrup, ein Mitarbeiter von Bell Labs, stellte eine frühe Version der C++-Sprache vor („C mit Klassen“)

1985

Erste kommerzielle Veröffentlichung von C++, die Sprache erhält ihren modernen Namen

1986

Veröffentlichung der ersten Ausgabe von The C++ Programming Language – einem C++ gewidmeten Buch von Björn Stroustrup

1998

Der internationale Standard für die Sprache C++ wurde ratifiziert: ISO/IEC 14882:1998 „Standard for the C++ Programming Language“

2003
2005

Der Library Technical Report 1 (TR1) wurde veröffentlicht. Obwohl dies nicht offiziell Teil des Standards ist, beschrieb der Bericht Erweiterungen der Standardbibliothek, die in der nächsten Version der C++-Sprache enthalten sein sollten.

2011

Veröffentlichung eines neuen Standards – C++11 oder ISO/IEC 14882:2011; Der neue Standard umfasste Ergänzungen zum Sprachkern und eine Erweiterung der Standardbibliothek, einschließlich des größten Teils von TR1

2014

Veröffentlichung des C++14-Standards („International Standard ISO/IEC 14882:2014(E) Programming Language C++“); C++14 kann als kleine Erweiterung gegenüber C++11 angesehen werden, die hauptsächlich Fehlerkorrekturen und kleinere Verbesserungen enthält

2017

Die Veröffentlichung eines neuen Standards – C++1z (C++17). Dieser Standard führte viele Änderungen und Ergänzungen ein. STD umfasste beispielsweise Bibliotheken des C11-Standards, ein auf boost::filesystem basierendes Dateisystem und den Großteil der experimentellen TS I-Bibliothek.

2020

C++20 ist der inoffizielle Name des ISO/IEC-Standards für die Programmiersprache C++, der voraussichtlich C++17 folgen wird. Entwurf des N4800-Standards.

C++-Philosophie

In seinem Buch The Design and Evolution of C++ (2007) beschreibt Björn Stroustrup die Prinzipien, denen er beim Design von C++ folgte (abgekürzt):

  • Erhalten Sie eine Allzwecksprache mit statischen Datentypen, der Effizienz und Portabilität der C-Sprache.
  • Unterstützen Sie direkt und umfassend eine Vielzahl von Programmierstilen.
  • Geben Sie dem Programmierer Entscheidungsfreiheit, auch wenn er dadurch die Möglichkeit hat, eine falsche Wahl zu treffen.
  • Sorgen Sie so weit wie möglich für eine Kompatibilität mit C, um einen einfachen Übergang von der C-Programmierung zu ermöglichen.
  • Vermeiden Sie Diskrepanzen zwischen C und C++: Jedes Konstrukt, das in beiden Sprachen gültig ist, muss in beiden Sprachen dasselbe bedeuten und zum gleichen Programmverhalten führen.
  • Vermeiden Sie Funktionen, die plattformabhängig oder nicht universell sind.
  • „Zahlen Sie nicht für das, was Sie nicht nutzen“ – keine Sprachfunktion sollte zu einer Leistungsminderung von Programmen führen, die sie nicht nutzen.
  • Benötigen Sie keine übermäßig komplizierte Programmierumgebung.

C und C++

Die Syntax von C++ ist von der Sprache C geerbt. Obwohl formal eines der Prinzipien von C++ die Wahrung der Kompatibilität mit der Sprache C bleibt, interagieren die Standardisierungsgruppen für diese Sprachen tatsächlich nicht und die von ihnen vorgenommenen Änderungen auch nicht nur nicht korrelieren, sondern oft ideologisch grundsätzlich widersprüchlich sind. Somit befinden sich die Elemente, die die neuen C-Standards dem Kernel hinzufügen, in den C++-Standardelementen der Standardbibliothek und sind überhaupt nicht im Kernel, beispielsweise dynamische Arrays, Arrays mit festen Grenzen, Parallelverarbeitungsfunktionen. Laut Stroustrup wäre eine Kombination der Entwicklung dieser beiden Sprachen von großem Nutzen, dürfte aber aus politischen Gründen nicht möglich sein. Daher wird die praktische Kompatibilität zwischen C und C++ nach und nach verloren gehen.
In diesem Beispiel wird je nach verwendetem Compiler entweder „C++“ oder „C“ ausgegeben:

Programm 9.1

#enthalten int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

Dies liegt daran, dass Zeichenkonstanten in C vom Typ int und in C++ vom Typ char sind, die Größen dieser Typen jedoch unterschiedlich sind.

Anwendungslebenszyklusmodelle

Lebenszyklus Software ist ein Zeitraum, der mit der Entscheidung über die Notwendigkeit der Erstellung eines Softwareprodukts beginnt und mit der vollständigen Außerbetriebnahme endet. Dieser Zyklus ist der Prozess des Erstellens und Entwickelns von Software. Es gibt mehrere Lebenszyklusmodelle.
Kaskadenmodell Lebenszyklus (englisches Wasserfallmodell) wurde 1970 von Winston Royce vorgeschlagen. Es sieht die sequentielle Umsetzung aller Projektphasen in einer streng festgelegten Reihenfolge vor. Der Übergang zur nächsten Stufe bedeutet den vollständigen Abschluss der Arbeiten der vorherigen Stufe. Die im Rahmen der Anforderungsbildung ermittelten Anforderungen werden in Form von technischen Spezifikationen streng dokumentiert und für die gesamte Projektentwicklung protokolliert. Jede Phase gipfelt in der Veröffentlichung einer vollständigen Dokumentation, die ausreicht, um die Fortsetzung der Entwicklung durch ein anderes Entwicklungsteam zu ermöglichen.
Projektschritte nach dem Wasserfallmodell:

  1. Anforderungsbildung;
  2. Design;
  3. Implementierung;
  4. Testen;
  5. Implementierung;
  6. Betrieb und Instandhaltung.

Im Kaskadenmodell wird beim Übergang von einer Projektphase zur nächsten davon ausgegangen, dass das Ergebnis der vorherigen Phase völlig korrekt ist. Bei großen Projekten ist dies nahezu unmöglich zu erreichen. Daher eignet sich dieses Modell nur für die Entwicklung eines kleinen Projekts. (W. Royce selbst hielt sich nicht an dieses Modell und verwendete ein iteratives Modell).
Iteratives Modell
Eine Alternative zum Kaskadenmodell ist das iterative und inkrementelle Entwicklungsmodell (IID), das in den 70er Jahren von T. Gilb übernommen wurde. Name des Evolutionsmodells. Das IID-Modell beinhaltet die Aufteilung des Projektlebenszyklus in eine Folge von Iterationen, die jeweils einem „Miniprojekt“ ähneln und alle Entwicklungsprozesse umfassen, die auf die Erstellung kleinerer Funktionalitätsteile im Vergleich zum Projekt als Ganzes angewendet werden. Das Ziel jeder Iteration besteht darin, eine funktionierende Version des Softwaresystems zu erhalten, einschließlich der Funktionalität, die durch den integrierten Inhalt aller vorherigen und aktuellen Iterationen definiert ist. Das Ergebnis der letzten Iteration enthält alle erforderlichen Funktionen des Produkts. Somit erhält das Produkt mit Abschluss jeder Iteration ein Inkrement – ​​ein Inkrement – ​​seiner Fähigkeiten, die sich daher evolutionär weiterentwickeln.


In den meisten modernen Entwicklungsmethoden sind verschiedene Varianten des iterativen Ansatzes implementiert:

Entwicklungsprozess – Rational Unified Process (RUP)

Rational Unified Process (RUP)(Rational Unified Process) ist eine Softwareentwicklungsmethodik, die von Rational Software (IBM) verwaltet wird. Die Methodik liefert Empfehlungen für alle Phasen der Entwicklung: von der Geschäftsmodellierung bis zum Test und der Inbetriebnahme des fertigen Programms. Als Modellierungssprache wird die Unified Modeling Language (UML) verwendet.
Der gesamte Produktentwicklungslebenszyklus besteht aus vier Phasen, die jeweils eine oder mehrere Iterationen umfassen.

  • Anfangsphase (Inception)
  • Bestimmen des Umfangs des Projekts und der Menge der erforderlichen Ressourcen. Die grundlegenden Anforderungen, Einschränkungen und Schlüsselfunktionen des Produkts werden ermittelt. Risiken werden bewertet. Aktionsplanung. Am Ende der Anfangsphase wird die Erreichung des Lebenszyklusziel-Meilensteins bewertet, was eine Vereinbarung zwischen den Beteiligten zur Fortsetzung des Projekts voraussetzt.

  • Klärung
  • Anforderungen dokumentieren. Design, Implementierung und Test ausführbarer Architektur. Klärung der Konditionen und Kosten. Reduzierung wichtiger Risiken. Der erfolgreiche Abschluss der Entwicklungsphase bedeutet das Erreichen des Lifecycle Architecture Milestone.

  • Konstruktion
  • In der „Build“-Phase werden die meisten Funktionen des Produkts implementiert: Das Anwendungsdesign wird fertiggestellt, der Quellcode wird geschrieben. Die Build-Phase endet mit der ersten externen Freigabe des Systems und dem Meilenstein „Initial Operational Capability“.

  • Einführung
  • In der Phase „Implementierung“ wird die finale Version des Produkts erstellt und vom Entwickler an den Kunden übertragen. Dazu gehören ein Betatestprogramm, Benutzerschulungen und die Bestimmung der Qualität des Produkts. Falls die Qualität nicht den Erwartungen der Benutzer oder den in der Startphase festgelegten Kriterien entspricht, wird die Implementierungsphase erneut wiederholt. Das Erreichen aller Ziele bedeutet das Erreichen des Produktfreigabe-Meilensteins und den Abschluss des gesamten Entwicklungszyklus.



"Informationstechnologie. System- und Software-Engineering. Software-Lebenszyklusprozesse“. Dieser Standard wurde von der Bundesagentur für technische Regulierung und Metrologie der Russischen Föderation übernommen und ähnelt dem internationalen Standard ISO/IEC 12207:2008. Dieser Standard legt eine allgemeine Struktur von Software-Lebenszyklusprozessen fest, die in der Softwareindustrie befolgt werden können. Der Standard schlägt kein spezifisches Lebenszyklusmodell vor. Seine Bestimmungen gelten für alle Lebenszyklusmodelle, Methoden und Technologien zur Softwareerstellung. Es beschreibt die Struktur von Lebenszyklusprozessen, ohne anzugeben, wie die in diesen Prozessen enthaltenen Aktivitäten und Aufgaben implementiert oder abgeschlossen werden sollen.

Präsentation für den Unterricht
Nachrichtenthemen
  • Free Software Foundation (FSF)
  • Kostenlose Softwarelizenzen
  • Freie Software und Open Source
  • Geschichte der Entwicklung von Programmiersprachen
  • Die Geschichte der C-Sprache. C und C++
  • Geschichte
  • Kritik an C++
  • Geschichte von UNIX
  • Spiral-Software-Lebenszyklusmodell
  • UML (Unified Modeling Language)
  • Microsoft Solutions Framework
  • IDE für C/C++-Programmierung unter Windows
  • C/C++-Compiler
  • Erstellen einer Konsolenanwendung unter Windows
Fragen
  1. Warum wird das Wasserfallmodell der Softwareentwicklung in großen Projekten nicht verwendet?
  2. Was ist der Unterschied zwischen Wasserfall- und iterativen Entwicklungsmodellen?
  3. Listen Sie die Phasen der Softwareentwicklung in der Rational Unified Process (RUP)-Methodik auf

Die C/C++-Standardbibliothek enthält eine Reihe von Funktionen zum Lesen und Schreiben auf der Konsole (Tastatur und Monitor). Diese Funktionen lesen und schreiben Daten als einfachen Zeichenstrom.

Das in der Programmierung verwendete Konzept des Streams ist eng mit dem alltäglichen Verständnis dieses Wortes verbunden. Der Eingabestrom kann mit einem Rohr verglichen werden, durch das Wasser (Informationen) in ein Becken (Computerspeicher) gelangt, und der Ausgabestrom kann mit einem Rohr verglichen werden, durch das Wasser das Becken verlässt. Ein wichtiges Merkmal dieser Pipe ist, dass sich Daten jeweils nur in eine Richtung bewegen können. Auch wenn das gleiche Rohr für Ein- und Ausgang verwendet wird, kann dies nicht gleichzeitig passieren: Um die Strömungsrichtung zu ändern, muss sie gestoppt werden, es muss eine Aktion ausgeführt werden, und nur dann kann die Strömung in die entgegengesetzte Richtung gelenkt werden . Ein weiteres Merkmal des Baches ist, dass er fast nie versiegt. Manchmal trocknet es aus, aber dieser Zeitraum kann nicht lange dauern, wenn das System normal funktioniert.

Die Standardausgabefunktion printf()

Die Funktion printf() ist eine Standardausgabefunktion. Mit dieser Funktion können Sie auf dem Monitorbildschirm eine Zeichenfolge, eine Zahl, den Wert einer Variablen usw. anzeigen.

Die Funktion printf() hat einen Prototyp in stdio.h
int printf(char *Steuerzeichenfolge, ...);

Bei Erfolg gibt printf() die Anzahl der gedruckten Zeichen zurück.

Die Steuerzeile enthält zwei Arten von Informationen: Zeichen, die direkt auf dem Bildschirm gedruckt werden, und Formatbezeichner, die angeben, wie die Argumente gedruckt werden.

Die Funktion printf() ist eine formatierte Ausgabefunktion. Das bedeutet, dass in den Funktionsparametern das Format der auszugebenden Daten angegeben werden muss. Das Datenformat wird durch Formatbezeichner angegeben. Der Formatbezeichner beginnt mit einem %-Zeichen, gefolgt von einem Formatcode.

Formatbezeichner:

%Mit Symbol
%D ganzzahlige Dezimalzahl
%ich ganzzahlige Dezimalzahl
%e Dezimalzahl in der Form x.xx e+xx
%E Dezimalzahl in der Form x.xx E+xx
%F
%F dezimale Gleitkommazahl xx.xxxx
%G %f oder %e, je nachdem, welcher Wert kürzer ist
%G %F oder %E, je nachdem, welcher Wert kürzer ist
Oktalzahl
%S Zeichenkette
%u vorzeichenlose Dezimalzahl
%X Hexadezimalzahl
%X Hexadezimalzahl
%% Symbol %
%P Zeiger
%N Zeiger

Darüber hinaus können die Modifikatoren l und h auf Formatbefehle angewendet werden.

%ld print long int
%hu Stempel kurz unsigniert
%Lf langer Doppelstempel

Im Formatbezeichner kann nach dem %-Symbol die Genauigkeit (Anzahl der Nachkommastellen) angegeben werden. Die Genauigkeit wird wie folgt festgelegt: %.n<код формата>. Wobei n die Anzahl der Nachkommastellen ist und<код формата>- einer der oben angegebenen Codes.

Wenn wir beispielsweise eine Variable x=10,3563 vom Typ Float haben und ihren Wert auf drei Dezimalstellen genau anzeigen möchten, sollten wir Folgendes schreiben:

printf("Variable x = %.3f",x);

Ergebnis:
Variable x = 10,356

Sie können auch die Mindestbreite des zum Drucken vorgesehenen Feldes festlegen. Wenn die Zeile oder Zahl größer als die angegebene Feldbreite ist, wird die Zeile oder Zahl vollständig gedruckt.

Wenn Sie zum Beispiel schreiben:

printf("%5d",20);

dann wird das Ergebnis wie folgt sein:
20

Bitte beachten Sie, dass die Zahl 20 nicht ganz am Anfang der Zeile gedruckt wurde. Wenn Sie möchten, dass die ungenutzten Felder des Feldes mit Nullen gefüllt werden, müssen Sie vor der Feldbreite ein 0-Symbol einfügen.

Zum Beispiel:

printf("%05d",20);

Ergebnis:
00020

Zusätzlich zu Datenformatspezifizierern kann die Steuerzeile Steuerzeichen enthalten:

\B BS, unten
\F Neue Seite, Seitenwechsel
\N Neue Zeile, Zeilenvorschub
\R Wagenrücklauf
\T Horizontale Tabellierung
\v Vertikale Registerkarte
\" Doppeltes Anführungszeichen
\" Apostroph
\\ Backslash
\0 Nullzeichen, Nullbyte
\A Signal
\N Oktalkonstante
\xN Hexadezimale Konstante
\? Fragezeichen

Am häufigsten verwenden Sie das Zeichen \n. Mit diesem Steuerzeichen können Sie in eine neue Zeile wechseln. Schauen Sie sich die Beispielprogramme an und Sie werden alles verstehen.

Beispiele für Programme.

/* Beispiel 1 */
#enthalten

void main(void)
{
int a,b,c; // Deklaration der Variablen a,b,c
a=5;
b=6;
c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
}

Ergebnis des Programms:
a=5, b=6, c=9

/* Beispiel 2 */
#enthalten

void main(void)
{
float x,y,z;

X=10,5;
y=130,67;
z=54;

Printf("Objektkoordinaten: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}

Ergebnis des Programms:
Objektkoordinaten: x:10,50, y:130,67, z:54,00

/* Beispiel 3 */
#enthalten

void main()
{
int x;

X=5;
printf("x=%d", x*2);
}

Ergebnis des Programms:
x=10

/* Beispiel 4 */
#enthalten

void main(void)
{
printf("\"Text in Anführungszeichen\"");
printf("\nSauerstoffgehalt: 100 %%");
}

Ergebnis des Programms:
„Text in Anführungszeichen“
Sauerstoffgehalt: 100 %

/* Beispiel 5 */
#enthalten

void main(void)
{
int a;

A=11; // 11 im Dezimalformat entspricht b im Hexadezimalformat
printf("a-dec=%d, a-hex=%X",a,a);
}

Ergebnis des Programms:
a-dez=11, a-hex=b

/* Beispiel 6 */
#enthalten

void main(void)
{
char ch1,ch2,ch3;

Ch1="A";
ch2="B";
ch3="C";

Printf("%c%c%c",ch1,ch2,ch3);
}

Ergebnis des Programms:
ABC

/* Beispiel 7 */
#enthalten

void main(void)
{
char *str="Meine Zeichenfolge.";

Printf("Das ist %s",str);
}

Ergebnis des Programms:
Das ist meine Linie.

/* Beispiel 8 */
#enthalten

void main(void)
{
printf("Hallo!\n"); // Nach dem Drucken erfolgt ein Übergang in eine neue Zeile - \n
printf("Mein Name ist Pavel."); // Dies wird in einer neuen Zeile gedruckt
}

Ergebnis des Programms:
Guten Tag!
Mein Name ist Pavel.

Die Standardeingabefunktion scanf()

Die Funktion scanf() ist eine formatierte Eingabefunktion. Mit seiner Hilfe können Sie Daten über ein Standard-Eingabegerät (Tastatur) eingeben. Eingabedaten können Ganzzahlen, Gleitkommazahlen, Zeichen, Zeichenfolgen und Zeiger sein.

Die Funktion scanf() hat den folgenden Prototyp in stdio.h:
int scanf(char *Kontrollzeichenfolge);

Die Funktion gibt die Anzahl der Variablen zurück, denen ein Wert zugewiesen wurde.

Die Steuerzeichenfolge enthält drei Arten von Zeichen: Formatbezeichner, Leerzeichen und andere Zeichen. Formatbezeichner beginnen mit dem %-Zeichen.

Formatbezeichner:

Bei der Eingabe einer Zeichenfolge mit der Funktion scanf() (Formatbezeichner %s) wird die Zeichenfolge vor dem ersten Leerzeichen eingegeben!! diese. wenn Sie die Zeichenfolge „Hallo Welt!“ eingeben. mit der Funktion scanf()


scanf("%s",str);

Nach der Eingabe besteht die resultierende Zeichenfolge, die im str-Array gespeichert wird, aus einem Wort „Hallo“. DIE FUNKTION GEHT VOR DEM ERSTEN LEERZEICHEN EINEN STRING EIN! Wenn Sie Zeichenfolgen mit Leerzeichen eingeben möchten, verwenden Sie die Funktion

char *gets(char *buf);

Mit der Funktion gets() können Sie vollständige Strings eingeben. Die Funktion gets() liest Zeichen von der Tastatur, bis das Zeilenumbruchzeichen (\n) erscheint. Das Zeilenumbruchzeichen selbst erscheint, wenn Sie die Eingabetaste drücken. Die Funktion gibt einen Zeiger auf buf zurück. buf – Puffer (Speicher) für die Eingabezeichenfolge.

Obwohl gets() nicht das Thema dieses Artikels ist, schreiben wir ein Beispielprogramm, mit dem Sie eine ganze Zeile über die Tastatur eingeben und auf dem Bildschirm anzeigen können.

#enthalten

void main(void)
{
Char-Puffer; // Array (Puffer) für die Eingabezeichenfolge

Gets(buffer); // Geben Sie eine Zeile ein und drücken Sie die Eingabetaste
printf("%s",buffer); // den eingegebenen String auf dem Bildschirm ausgeben
}

Noch ein wichtiger Hinweis! Um Daten mit der Funktion scanf() einzugeben, müssen Variablenadressen als Parameter übergeben werden, nicht die Variablen selbst. Um die Adresse einer Variablen zu erhalten, müssen Sie dem Variablennamen ein & (kaufmännisches Und) voranstellen. Das &-Zeichen bedeutet, dass die Adresse übernommen wird.

Was bedeutet Adresse? Ich werde versuchen, es zu erklären. Im Programm haben wir eine Variable. Eine Variable speichert ihren Wert im Computerspeicher. Das ist also die Adresse, die wir mit & erhalten, und ist die Adresse im Computerspeicher, wo der Wert der Variablen gespeichert ist.

Schauen wir uns ein Beispielprogramm an, das uns zeigt, wie man & verwendet

#enthalten

void main(void)
{
int x;

Printf("Variable x eingeben:");
scanf("%d",&x);
printf("Variable x=%d",x);
}

Kehren wir nun zur Steuerzeile der Funktion scanf() zurück. Noch einmal:

int scanf(char *Kontrollzeichenfolge);

Das Leerzeichen in der Steuerzeichenfolge bewirkt, dass ein oder mehrere Leerzeichen im Eingabestream übersprungen werden. Neben dem Leerzeichen ist auch ein Tabulator- oder Newline-Zeichen zu erkennen. Ein Nicht-Null-Zeichen gibt an, dass das Zeichen gelesen und verworfen wird.

Die Trennzeichen zwischen den beiden Zahlen, die Sie eingeben, sind Leerzeichen, Tabulator oder Zeilenumbruch. Das * nach dem % und vor dem Formatcode (Formatbezeichner) befiehlt, dass der Datentyp gelesen, aber nicht diesem Wert zugewiesen wird.

Zum Beispiel:

scanf("%d%*c%d",&i,&j);

Durch die Eingabe von 50+20 wird die Variable i auf 50 und die Variable j auf 20 gesetzt, und das +-Zeichen wird gelesen und ignoriert.

Der Formatbefehl kann die größte zu lesende Feldbreite angeben.

Zum Beispiel:

scanf("%5s",str);

gibt an, dass die ersten 5 Zeichen aus dem Eingabestream gelesen werden müssen. Wenn Sie 1234567890ABC eingeben, enthält das str-Array nur 12345, die restlichen Zeichen werden ignoriert. Trennzeichen: Leerzeichen, Tabulator und Zeilenumbruch – bei der Eingabe eines Symbols werden sie wie alle anderen Zeichen behandelt.

Wenn in der Steuerzeichenfolge andere Zeichen vorkommen, dienen diese dazu, das entsprechende Zeichen zu identifizieren und zu überspringen. Zeichenstrom-10plus20-Operator

scanf("%dplus%d",&x,&y);

weist der Variablen x den Wert 10 und der Variablen y den Wert 20 zu und überspringt die Pluszeichen, da sie in der Steuerzeichenfolge vorkommen.

Eine der leistungsstarken Funktionen der Funktion scanf() ist ihre Fähigkeit, einen Scansatz anzugeben. Der Suchsatz definiert den Zeichensatz, mit dem die von der Funktion scanf() gelesenen Zeichen verglichen werden. Die Funktion scanf() liest Zeichen, solange sie im Suchsatz erscheinen. Sobald das eingegebene Zeichen nicht im Suchsatz gefunden wird, wechselt die Funktion scanf() zum nächsten Formatbezeichner. Der Suchsatz wird durch eine Liste von Zeichen in eckigen Klammern definiert. Das %-Zeichen steht vor der öffnenden Klammer. Schauen wir uns das anhand eines Beispiels an.

#enthalten

void main(void)
{
char str1, str2;
scanf("%%s", str1, str2);
printf("\n%s\n%s",str1,str2);
}
Geben wir eine Reihe von Zeichen ein:
12345abcdefg456

Das Programm zeigt auf dem Bildschirm Folgendes an:
12345
abcdefg456

Bei der Angabe eines Suchsatzes können Sie auch den Bindestrich verwenden, um den Abstand sowie die maximale Breite des Eingabefelds festzulegen.

scanf("%10", str1);

Sie können auch Zeichen definieren, die nicht im Suchsatz enthalten sind. Dem ersten dieser Zeichen ist ein ^ vorangestellt. Viele Zeichen unterscheiden zwischen Klein- und Großbuchstaben.

Ich möchte Sie daran erinnern, dass Sie bei Verwendung der Funktion scanf() Variablenadressen als Parameter an diese übergeben müssen. Der obige Code wurde geschrieben:

char str; // Array mit 80 Zeichen
scanf("%s",str);

Beachten Sie, dass vor str kein & steht. Dies geschieht, weil str ein Array ist und der Array-Name – str ein Zeiger auf das erste Element des Arrays ist. Daher sollte das &-Zeichen nicht verwendet werden. Wir übergeben die Adresse bereits an die Funktion scanf(). Einfach ausgedrückt ist str die Adresse im Computerspeicher, an der der Wert des ersten Elements des Arrays gespeichert wird.

Beispiele für Programme.

Beispiel 1.
Dieses Programm zeigt die Anfrage „Wie alt sind Sie?:“ an und wartet auf die Dateneingabe. Wenn Sie beispielsweise die Zahl 20 eingeben, zeigt das Programm die Zeile „Sie sind 20 Jahre alt.“ an. Beim Aufruf der scanf()-Funktion setzen wir ein &-Zeichen vor die Altersvariable, da die scanf()-Funktion Variablenadressen benötigt. Die Funktion scanf() schreibt den eingegebenen Wert an die angegebene Adresse. In unserem Fall wird der eingegebene Wert 20 an die Adresse der Altersvariablen geschrieben.

/* Beispiel 1 */

#enthalten

void main(void)
{
int Alter;

Printf("\nWie alt bist du?:");
scanf("%d",&age);
printf("Du bist %d Jahre alt.", age);
}

Beispiel 2.
Rechnerprogramm. Dieser Rechner kann nur Zahlen addieren. Wenn Sie 100+34 eingeben, liefert das Programm das Ergebnis: 100+34=134.

/* Beispiel 2 */

#enthalten

void main(void)
{
int x, y;

Printf("\nRechner:");
scanf("%d+%d", &x, &y);
printf("\n%d+%d=%d", x, y, x+y);
}

Beispiel 3.
Dieses Beispiel zeigt, wie Sie die Lesefeldbreite einstellen. In unserem Beispiel beträgt die Feldbreite fünf Zeichen. Wenn Sie eine Zeichenfolge mit einer großen Anzahl von Zeichen eingeben, werden alle Zeichen nach dem 5. verworfen. Beachten Sie den Funktionsaufruf scanf(). Das &-Zeichen steht nicht vor dem Array-Namen name, da der Array-Name name die Adresse des ersten Elements des Arrays ist.

/* Beispiel 3 */

#enthalten

void main(void)
{
Char-Name;

Printf("\nGeben Sie Ihren Benutzernamen ein (nicht mehr als 5 Zeichen):");
scanf("%5s", Name);
printf("\nSie haben %s eingegeben", name);
}

Beispiel 4.
Das letzte Beispiel in diesem Artikel zeigt, wie ein Suchsatz verwendet werden kann. Geben Sie nach dem Start des Programms eine Zahl von 2 bis 5 ein.

/* Beispiel 4 */

#enthalten

void main(void)
{
Saibling;

Printf("Ihre Bewertung ist 2,3,4,5:");
scanf("%", &bal);
printf("\nRating %c", bal);
}



 


Lesen:



So vereinbaren Sie einen Termin bei einem Arzt in der Region Moskau

So vereinbaren Sie einen Termin bei einem Arzt in der Region Moskau

Die Entwicklung von Internet-Technologien vereinfacht das Leben der Benutzer des World Wide Web erheblich. Dies gilt uneingeschränkt für die Terminvereinbarung beim Arzt....

So überprüfen Sie die Lizenznummer eines Unternehmens anhand der Steueridentifikationsnummer

So überprüfen Sie die Lizenznummer eines Unternehmens anhand der Steueridentifikationsnummer

2. Wie prüfe ich eine Taxigenehmigung? Um eine bestimmte Auflösung zu finden und zu überprüfen, geben Sie eine oder mehrere... an.

Wofür steht „TNT“ und was ist das Erfolgsgeheimnis?

Wie wird es entziffert?

Die Ausstrahlung von TNT begann im Jahr 1998. Damals gehörte es dem Konzern Media-Most. TNT – wie man es entziffert Der Name bedeutete nichts weiter als...

Bitcoin-Kryptowährungs-Mining

Bitcoin-Kryptowährungs-Mining

So starten Sie das Mining auf Ihrem Heim-PC mit einem einfachen Programm. Wir analysieren den gesamten Dienst und das Programm selbst im Detail und bereiten den Computer für das Mining vor...

Feed-Bild RSS