namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:sprachkern

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:sprachkern [2020-07-27 09:59] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Sprachkern ======
 +> Ein Programmierer darf durchaus erwarten,
 +> dass er die gesamte Sprache kennt, versteht und regelmäßig nutzt.
 +>> ---  Brian Kernighan & Dennis Ritchie : Programmieren in C
 +
 +===== Quelltextbausteine =====
 +Ein Programm kann aus mehreren Quelltexten ([[.:module]]) bestehen.
 +Ein (korrekter) Quelltext ist eine Folge von 
 +[[.:begriffe#Deklaration|Deklarationen]]
 +und [[.:begriffe#Definition|Definitionen]].
 +Die [[.:begriffe#Syntax]]
 +(Grammatik) legt fest, welche Quelltexte korrekt (wohlgeformt) sind.
 +Einzelne [[#Zeichen]]
 +("Alphabet")
 +und Gruppen von Zeichen bilden Symbole (lexikalische Einheiten).
 +Beim Erkennen von Symbolen wird stets 
 +die maximal mögliche Länge des Symbols verarbeitet. So wird
 +''x+++++y''
 +als ''x ++ ++ + y'' zerlegt
 +(was dann zu einem syntaktischen Fehler führt)
 +und nicht als das auch mögliche ''x ++ + ++ y''.
 +Dies ist einer der seltenen Fälle, in denen Leerräume (white spaces)
 +eine sprachliche Bedeutung haben.
 +Ansonsten ist der Quelltext frei formatierbar.
 +Einrückungen und Leerzeilen gliedern den Quelltext optisch.
 +
 +===== Zeichen =====
 +Unabhängig von der internen Darstellung besteht ein Quelltext
 +aus den 
 +Buchstaben
 +
 +<code cpp>
 +  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
 +_ a b c d e f g h i j k l m n o p q r s t u v w x y z
 +</code>
 +(der Unterstrich ''_'' gilt als Buchstabe), den Ziffern
 +<code cpp>
 +0 1 2 3 4 5 6 7 8 9
 +</code>
 +und den Sonderzeichen
 +<code cpp>
 ++ - * / % ? : = [ ] ( ) { } , . < > ! | & ~ ^ # ' " \
 +</code>
 +Leerzeichen, Tabulatoren und Zeilenumbrüche ("white spaces") gliedern den Quelltext.
 +
 +===== Namen =====
 +Namen (Bezeichner) beginnen mit einem [[#Zeichen|Buchstaben]],
 +darauf können beliebig viele Buchstaben oder Ziffern folgen.
 +Groß- und kleinschreibung wird unterschieden.
 +[[.:keywords#Schlüsselwörter]]
 +sind reservierte Namen mit vordefinierter Bedeutung.
 +
 +===== Literale  =====
 +==== Zahlen ====
 +Zahlkonstanten beginnen mit einer [[#Zeichen|Ziffer]].
 +Ganzzahlen können dezimal, oktal oder hexadezimal angegeben werden:
 +
 +|      | Basis | Ziffern | Anfangszeichen |
 +| 127  |  10   | 0...9   | keine 0 (bei mehrziffrigen Zahlen)|
 +| 0177 |  8    | 0...7   | 0|
 +| 0x7F |  16   | 0...9, A...F, a...f | 0x|
 +[[Begriffe#C++14]] erlaubt Binärzahlen ''0b101010'' und Stellentrennzeichen ''1'234'567''.  
 +Dezimalzahlen können ein Vorzeichen haben.
 +Durch Anfügen des Buchstabens ''l'' oder ''L'' 
 +erhält die Konstante den [[.:typen#Ganzzahlige Typen|Typ]] ''long int''.
 +Ein ''u'' oder ''U'' am Ende markiert die Zahl als vorzeichenlos
 +(''unsigned'').
 +
 +<code cpp>
 +65      255     65535   4294967295U
 +0x41    255U    65535L  -1UL
 +</code>
 +Gleitkommazahlen enthalten einen Dezimalpunkt oder einen Exponenten.
 +Sie haben den [[.:typen#Gleitkommatypen|Typ]] ''double''.
 +Mit ''f'' oder ''F'' am Ende wird der Typ ''float'',
 +mit ''l'' oder ''L'' wird ''long double'' erzwungen.
 +
 +<code cpp>
 +123.0   0.123   1.602e-19f
 +123.     .123   2999792.458E+8L
 +</code>
 +
 +==== Zeichen und Zeichenketten ====
 +Apostrophe (einfache Anführungsstriche) umschließen Zeichenkonstanten '''a'''.
 +Zeichenketten beginnen und enden mit doppelten Anführungsstrichen ("Gänsefüßchen").
 +In Zeichenketten darf kein Zeilenende auftreten.
 +Aufeinanderfolgende, höchstens durch white spaces getrennte Zeichenketten 
 +werden zu einer verschmolzen:
 +
 +<code cpp>
 +   "Das ist eine "   
 +   "Zeichenkette"
 +</code>
 +Durch vorangestelltes ''l'' oder ''L'' erfolgt die Codierung als "wide character"
 +
 +<code cpp>
 +   L'x'
 +</code>
 +für Plattformen mit erweiterten Zeichensätzen.
 +
 +Einige Zeichen müssen durch Kombination mit dem fallenden Schrägstrich (backslash) 
 +gebildet werden (Escape-Sequenzen):
 +
 +| ''\a'' | alert           | Warnsignal (Piepton) |
 +| ''\b'' | backspace       | ein Zeichen zurück|
 +| ''\f'' | form feed       | Blattvorschub (bei Druckern)|
 +| ''\n'' | new line        | Zeilenumbruch|
 +| ''\r'' | carriage return | zum Zeilenanfang (ohne Zeilenvorschub)|
 +| ''\t'' | tab             | zur nächsten Tabulatorposition|
 +| ''\\'' | backslash       | druckt \|
 +| ''\v'' | vertical tab    | zur nächsten Zeile (ohne Rücklauf)|
 +| ''\''' | quote           | Apostroph|
 +| ''\"'' | double quote    | Gänsefüßchen|
 +| ''\0'' | nul             | Endekennung von Zeichenketten|
 +| ''\ooo'' | octal value   | Zeichenwert (1..3 Oktalziffern)|
 +| ''\xhh'' | hex value     | Zeichenwert (1..3 Hexziffern)|
 +| ''\uhhhh'' | wide char   | Unicode-Zeichen (''wchar_t'')|
 +| ''\Uhhhhhhhh'' |         | mit 4 oder 8 Hexziffern|
 +
 +Bei einem //raw string// ''%%R"(...)"%%'' werden keine Ersetzungen mit dem Backslash durchgeführt. 
 +Der eigentliche Inhalt kann durch eine Begrenzerfolge außerhalb der runden Klammern eingeschlossen werden: ''%%R"**(...)**"%%''.
 +
 +
 +===== Kommentare =====
 +Kommentare werden bei der Programmübersetzung ignoriert.
 +Sie sind nur zur menschlichen Kommunikation bestimmt.
 +
 +C-Kommentare 
 +<code cpp>
 +/* Computer sind doof */
 +</code>
 +beginnen und enden mit Schrägstrich und Stern und sind nicht schachtelbar.
 +Sie können sich über mehrere Zeilen erstrecken (Kommentarblock).
 +
 +C++-Kommentare 
 +<code cpp>
 +// gelten bis zum Zeilenende.
 +</code>
 +
 +===== Syntaktische Einheiten =====
 +==== Ausdrücke und Anweisungen ====
 +[[.:begriffe#Anweisung|Anweisungen]] 
 +werden mit einem Semikolon '';'' abgeschlossen.
 +Was vor dem Semikolon steht, heißt [[.:begriffe#Ausdruck]]
 +(der auch leer sein kann).
 +Ausdrücke sind u.a. [[.:begriffe#Deklaration|Deklarationen]],
 +[[.:begriffe#Funktionsaufruf|Funktionsaufrufe]], 
 +[[.:begriffe#Zuweisung|Zuweisungen]], 
 +[[#Literale|Konstanten]], [[#Namen]]
 +und durch [[.:operator|Operatoren]] verbundene Ausdrücke.
 +
 +<code cpp>
 +double const pi = 4*atan(1.0);
 +</code>
 +
 +==== Blöcke ====
 +Geschweifte Klammern '' }'' umschließen 
 +[[.:begriffe#Block|Blöcke]]
 +(Deklarations- oder Anweisungsfolgen).
 +Blöcke sind ineinander schachtelbar oder können auch leer sein.
 +Jeder [[.:funktion|Funktionsrumpf]] ist ein Block.
 +
 +==== Präprozessoranweisungen ====
 +Doppelkreuze ''#'' am Zeilenanfang leiten Anweisungen
 +für den [[.:cpp|Präprozessor]]
 +ein.
 +Sie gehören genaugenommen nicht zur Sprache, 
 +jedoch kommt kein ernsthaftes Programm ohne sie aus,
 +weil [[.:header|Header der Standardbibliothek]] 
 +eingebunden werden müssen
 +([[.:module|Übersetzungsprozess]]).
 +
 +<code cpp>
 +#include <iostream>  // Ein-/Ausgabe
 +#include <cmath>     // mathematische Funktionen
 +</code>
  
kennen/sprachkern.txt · Zuletzt geändert: 2020-07-27 09:59 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki