Universität Bayreuth
Mathematisches
Institut
Einleitung
Erste Schritte
Mail und News
Drucken
KDE
LaTeX/TeX
Linksammlung
Linuxtools
Netzwerk
Programmieren
Windows
X Window
Anträge
Kontakt
|
Liste der Fachbegriffe rund ums Programmieren ("Fachchinesisch")
Stand: 08. November 2011, 09:50 Uhr
(Robert Baier, Matthias Höger, Simon Pirkelmann)
1. Arbeitsspeicher
2. CPU
3. Betriebssystem
4. Laufzeit
5. Stellenwertsysteme
6. Zeichensatz
7. ASCII
8. Programmiersprache
9. Funktionsorientiert/Objektorientiert
10. Schlüsselwörter
11. Entwicklungsumgebung (IDE)
12. Code::Blocks
13. Compiler/Assembler
14. Präprozessor
15. Linker
16. Debugger
17. Kommandozeile/Konsole
18. Sourcecode/Quelltext
19. Deklaration
20. Bezeichner
21. Wertzuweisung
22. Anweisung
23. Operator/Operand
24. Datentypen
25. Variable
26. globale/lokale Variablen
27. Konstante
28. Array
29. String
30. Implementierung
31. Funktion
32. Rückgabewert
33. Parameter
34. Prozedur
35. Iteration
36. Rekursive Programmierung
37. Headerfile/Realisierungsfile/Anwendungsfile
38. Kommentar
39. Syntax
40. Syntaxhervorhebung
41. Input/Output
42. Algorithmus
43. Datenstruktur
1. Arbeitsspeicher (RAM):
Beispiel:
Heutzutage besitzen die Computer i.d.R. 1 bis 4 Gigabyte Arbeitsspeicher.
Erklärung:
Beim Arbeitsspeicher (engl: Random Access Memory, wörtlich: Speicher mit wahlfreiem Zugriff) handelt es sich um den Hauptspeicher im Computer,
der aus RAM-Chips besteht und in dem Programme ablaufen sowie Dateien und Programmcodes zwischengelagert werden. Er ist ein sogenannter
flüchtiger Speicher, dessen Inhalte beim Ausschalten bzw. bei einem Reset gelöscht werden.
weitere Informationen
2. CPU (central processing unit):
Beispiel:
CPUs/Prozessoren werden z.B. von Intel, AMD, ... gebaut und verkauft. Die CPU bildet den Motor/das Gehirn des Computers.
Erklärung:
Die CPU (Hauptprozessor), oft auch nur Prozessor genannt, ist das Bauteil im Computer, das Programme ausführen kann.
Sie stellt damit die zentrale Verarbeitungseinheit (ZVE) eines Computers dar.
weitere Informationen
3. Betriebssystem (OS=operating system):
Beispiel:
Gängige Betriebssysteme sind Windows, Linux, Mac OS oder Android.
Erklärung:
Ein Betriebssystem steuert und verwaltet den Computer mit Hilfe von Programmen und Befehlen und stellt zumeist auch grafische Bedienungshilfen zur Verfügung. Ohne ein Betriebssystem kann ein Rechner nicht/nur mühsam verwendet werden. Es verwaltet wesentliche Bestandteile wie Speicher, Ein- und Ausgabegeräte (Tastatur, Mouse, Monitor, ...) und steuert die Ausführung von Programmen.
Da sich Betriebssysteme hinsichtlich der Art, wie Dateien, insbesondere ausführbarer Code, behandelt wird, unterscheiden, ist es für die Programmierung in C++ von entscheidender Bedeutung, für welche Plattform entwickelt wird. Eine unter Windows erstellte "*.exe"-Datei ist beispielsweise auf einem PC mit Mac OS nicht ohne weiteres lauffähig, ein unter Mac OS erstelltes Executable ist normalerweise nicht verwendbar unter Windows.
In der Programmiersprache Java besteht dieses Problem dagegen kaum, da statt eines Executables ein Bytecode erzeugt wird, der auf der Java Virtual Machine ausgeführt wird. Diese hat den Vorteil, dass sie auf nahezu jeder beliebigen Hard- und Softwarekombination lauffähig ist. Der Nachteil ist die im Normalfall auftretende langsamere Verarbeitung von Bytecode.
weitere Informationen
4. Laufzeit:
Beispiel:
Bei einem Studenten entspricht im übertragenen Sinn die Zeitspanne vom Erhalt einer Klausur bis zur Abgabe (=Dauer der Klausur),
der Laufzeit eines Programmes.
Erklärung:
Die Laufzeit beschreibt die Zeitspanne, während der ein Programm von einem Rechner ausgeführt wird. Man unterscheidet zwischen der Realzeit (real time), die das Programm zum Ablauf braucht und der Zeit, die das Programm in der CPU abläuft (cpu time/user time). Da das Betriebssystem mehrere (scheinbar) gleichzeitig laufende Prozesse/Programme unterstützt, die CPU aber immer nur einen Prozess/ein Programm ablaufen kann (und dann andere Programme warten lässt und auslagert), ist die CPU-Laufzeit meist viel kürzer als die reale Laufzeit.
weitere Informationen
5. Zahlensystem/Stellenwertsystem:
Beispiel:
Die Dezimalzahl 42 in verschiedenen Zahlensystemen:
Dezimalsystem: 42
Binärsystem: 101010
Oktalsystem: 52
Hexadezimalsystem: 2A
Erklärung:
Ein Zahlensystem dient dazu, Zahlen durch Ziffern/Zeichen darzustellen. Es basiert dabei auf einer Basis b, mit Hilfe derer man mit Potenzen eine beliebig große Zahl darstellen kann. Die Basis ist dabei auch die Anzahl der verschiedenen Ziffern/Zeichen. Jede ganze Zahl b>=2 ist als Basis für ein Stellenwertsystem geeignet.
Zahlensystem
|
Basis
|
Ziffern
|
Beispiel
|
Dezimalsystem
|
10
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
42 = 4*101 + 2*100
|
Dualsystem
|
2
|
0, 1
|
101010 = 1*25 + 0*24 + l*23 + 0*22 + 1*21 + 0*20
= 32 + 8 + 2
|
Oktalsystem
|
8
|
0, 1, 2, 3, 4, 5, 6, 7
|
52 = 5*81 + 2*80 = 40 + 2
|
Hexadezimalsystem
|
16
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
A=10, B=11, C=12, D=13, E=14, F=15
|
2A = 2*161 + 10*160 = 32 + 10
|
synonyme Begriffe:
Grundzahl = Basis
Stellenwertsystem = Positionssystem = Zahlensystem
weitere Informationen
6. Zeichensatz:
Beispiel:
ASCII (American Standard Code for Information Interchange)
Unicode
Erklärung:
Unter einem Zeichensatz versteht man eine Vorrat an Elementen (Zeichen), aus denen die Zeichenketten (=Strings) zusammengesetzt sind. Solche Elemente können Buchstaben,
Ziffern, aber auch Symbole wie Sonderzeichen sein. Die Zeichen
besitzen eine zugehörige Zeichensatznummer (normalerweise von 0 bis zur Anzahl der Zeichen - 1).
weitere Informationen
7. ASCII:
Beispiel:
ASCII-Zeichen:
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
Zusätzlich gibt es noch einige nicht druckbare Zeichen.
Der C++ Compiler interpretiert nur ASCII-konforme Zeichen.
Bei sog. ASCII-Art werden Bilder, bestehend nur aus ASCII-Zeichen, erstellt:
|\ _,,,---,,_
/,`.-'`' -. ;-;;,_
|,4- ) )-,_..;\ ( `'-'
'---''(_/--' `-'\_) fL
Erklärung:
Der ASCII-Zeichensatz besteht aus 128 verschiedenen Zeichen (verschlüsselt durch eine 7-Bit-Zeichenkodierung).
Die druckbaren Zeichen umfassen das lateinische Alphabet in Groß- und Kleinschreibung, die zehn arabischen Ziffern sowie einige Satzzeichen. Der Zeichenvorrat entspricht weitgehend dem einer Tastatur oder Schreibmaschine für die englische Sprache. In Computern und anderen elektronischen Geräten, die Text darstellen, wird dieser in der Regel gemäß ASCII oder abwärtskompatibel (ISO 8859, Unicode) dazu gespeichert.
Die nicht druckbaren Steuerzeichen enthalten Ausgabezeichen wie Zeilenvorschub oder Tabulator, Protokollzeichen wie Übertragungsende oder Bestätigung und Trennzeichen wie Datensatztrennzeichen.
weitere Informationen
8. Programmiersprache:
Beispiel:
C, C++, Java, Pascal, FORTRAN, u.v.m.
Erklärung:
Eine Programmiersprache ist eine formale Sprache, die Regeln festlegt, die den Aufbau, die Deklarationen und die Anweisungen von Computerprogramme festlegen. Die Anweisungen (Befehle) des Programmes sind dabei entweder in Maschinencode geschrieben, der vom Prozessor direkt (ohne weitere Übersetzung) ausgeführt werden kann, oder in Form eines abstrakteren Quelltextes angegeben. Dieser ist für den Menschen besser lesbar und veränderbar, muss aber noch durch den Compiler in Maschinencode übersetzt werden.
Die Zeile "erg = 3;" aus einem C++-Programm wird durch
den Compiler über das Zwischenresultat Assembler-Code in einen Maschinencode übersetzt und
entspricht dort dem Assembler-Befehl "movl $3, -8(%rbp)".
Damit dieser von einem AMD-Opteron-Prozessor ausgeführt werden kann, muss der Assembler-Code noch in einen Maschinencode (Folge von
Bytes) übersetzt werden.
weitere Informationen
9. Funktionsorientiert/Objektorientiert:
Beispiel:
vgl. die Dateien "tanken_fkt_ges.cpp" (funktionsorientiert) und "tanken_obj.cpp" (objektorientiert) aus den Vorlesungsbeispielen zu Kapitel 0
Erklärung:
Bei der funktionsorientierten Programmierung liegt der Schwerpunkt auf der Implementierung von Funktionen, die die gegebenen Daten (im Beispiel die gefahrenen Kilometer, den Benzinpreis und das verbrauchte Benzin in Litern) auswerten.
Im Gegensatz dazu entwirft man bei der objektorientierten Programmierung eigene Datentypen (im Beispiel die Klasse "Verbrauch"), die einerseits die gegebenen Daten zusammenfassen (im Beispiel die gefahrenen Kilometer, den Benzinpreis und das verbrauchte Benzin in Litern zu einem Objekt der Klasse "Verbrauch") und auf denen andererseits durch sog. Methoden Operationen (im Beispiel z.B. die Operatoren "=" und "==" sowie die Methoden "read_daten()" und "read_liter()") definiert sind, die die Auswertung der Daten ermöglichen.
weitere Informationen
10. Schlüsselwörter:
Beispiel:
using, namespace, if, else, return, ...
Liste von Schlüsselwörtern
Erklärung:
Schlüsselwörter (engl.: keywords) sind reservierte Bezeichner mit vordefinierter Bedeutung für die Programmiersprache. Sie können nicht als Namen für Variablen, Funktionen, Klassen usw. benutzt werden.
Verwendet man eine IDE mit Syntaxhervorhebung (wie z.B. Code::Blocks) werden die Schlüsselwörter meist besonders hervorgehoben.
weitere Informationen
11. Entwicklungsumgebung (IDE):
Beispiel:
Häufig verwedete IDEs sind Code::Blocks, Eclipse oder Microsoft Visual Studio.
Es gibt auch IDEs, die speziell zum einfachen Erlernen einer Programmiersprache konzipiert sind, z.B. BlueJ.
Erklärung:
Eine integrierte Entwicklungsumgebung (engl.:
integrated development environment, Abkürzung IDE)
ist ein Programm, das mehrere Werkzeuge/Anwendungsprogramme
zum Programmieren in einer (oder mehrerer) Programmiersprache(n)
in einer grafischen Bedienoberfläche
zusammenfasst. Damit kann man dann verschiedene Aufgaben
zur Softwareentwicklung
(Editieren des Quelltextes, Debuggen, Start von Programmen, ...)
durchführen, ohne das Programm wechseln zu müssen.
Integrierte Entwicklungsumgebungen besitzen in der Regel folgende Komponenten:
-
Texteditor
-
Compiler bzw. Interpreter
-
Linker
-
Debugger
-
Quelltextformatierungsfunktion
-
Werkzeuge zum Auffinden von Variablendefinitionen,
zur Codevervollständigung (z.B. Vorschlag von Namen,
bereits definierten Variablen), ...
weitere Informationen bei Wikipedia
Compiliervorgang im Detail
12. Code::Blocks:
Erklärung:
Code::Blocks ist eine freie, quelloffene, integrierte Entwicklungsumgebung für die Programmiersprachen C, C++ und D.
weitere Informationen
13. Compiler/Assembler:
Beispiel:
In unserem Fall der GNU GCC Compiler.
Erklärung:
Der Compiler erstellt aus der Ausgabe des Präprozessors (enthält keinerlei Präprozessor-Befehle mehr und nur noch C-/C++-Code) einen Assembler-Code (eine lesbare Variante der Prozessorbefehle).
Anschließend erzeugt der Assembler aus dem Output des eigentlichen Compilers ein binäres Objectfile (eine binäre Auflistung aller Prozessorbefehle als eine Folge von Bytes, wobei die Bytes entweder für einen Prozessorbefehl stehen oder reine Datenbytes sind).
weitere Informationen bei Wikipedia
Compiliervorgang im Detail
14. Präprozessor:
Erklärung:
Der Präprozessor hat folgende Aufgaben:
-
Beendigung jeder Zeile mit Zeilenumbruch
-
Umwandlung von Trigraph- und Escape-Sequenzen in zugehörige Zeichen
-
Zusammenfassen jeder mit "\" (Backslash) abgeschlossenen Zeile mit der Folgezeile zu einer Zeile
-
Ersetzen aller Kommentare durch ein Leerzeichen
-
Ausführung der Präprozessor-Direktiven, die mit "#" beginnen und stets eine Zeile lang sind, z.B. Textersetzung und Erweiterung der Makros sowie das Einladen aller Headerfiles, die mit "#include" eingeladen wurden.
Als Ausgabe erstellt der Präprozessor einen C- bzw. C++-Code ohne Präprozessorbefehle.
weitere Informationen bei Wikipedia
Compiliervorgang im Detail
15. Linker:
Beispiel:
Der Linker bewirkt bei einem Funktionsaufruf des Sinus in einem
C++-Programm einen Sprung zur Funktionsdefinition des Sinus,
die in einer mathematischen Bibliothek (Library) bereits
vorübersetzt ist.
Erklärung:
Ein Linker ist ein Werkzeug, das aus einem oder mehreren vom
Compiler vorübersetzten Programmteilen ein
ausführbares Programm erstellt. Dabei werden symbolische (d.h. noch nicht
aufgelöste) Funktionsaufrufe ersetzt durch konkrete
Sprungadressen zu den übersetzten Funktionsdefinitionen,
die sich entweder im Quelltext derselben Datei befinden oder
in sogenannten Bibliotheken (Archiven von vorcompilierten
Objectfiles).
Dabei unterscheidet man statisches und dynamisches Linken.
Beim statischen Linken sind diese Sprünge zu den
übersetzten Funktionsdefinitionen durch das Compilieren
aufgelöst, so dass die übersetzten Funktionsdefinitionen
im ausführbaren Executable enthalten sein müssen (das
Executable wird größer als beim dynamischen Linken).
Beim dynamischen Linken wird erst zur Laufzeit des
ausführbaren Programmes der durch einen Funktionsaufruf
verursachten Sprung zur (übersetzten)
Funktionsdefinition in der (dynamischen) Bibliothek (Library)
durchgeführt.
synonyme Begriffe:
Binder = Bindelader = Linker
Programmmodul = Programmteil
Executable = ausführbares Programm
Library = Bibliothek
weitere Informationen bei Wikipedia
Compiliervorgang im Detail
16. Debugger:
Beispiel:
Im Debugger kann man ein übersetztes Programm schrittweise ablaufen lassen und kann dabei jederzeit Werte der Variablen kontrollieren.
Wenn ein Programm abbricht bzw. abstürzt, kann man
die fehlerverursachende Zeile des Programmes finden.
Erklärung:
Ein Debugger ist ein Werkzeug zum Diagnostizieren und Auffinden von Fehlern in Computersystemen.
So kann z.B. der Programmablauf gesteuert werden, indem man Haltepunkte setzt und Anweisungen des Programmes Schritt für Schritt ausführen lässt. Es können
aber auch Werte der Variablen inspiziert werden.
weitere Informationen bei Wikipedia
Fehlersuche mit einem Debugger
17. Kommandozeile/Konsole:
Beispiel:
DOS-Box (Eingabeaufforderung) bei Windows bzw. Terminal unter Linux/Mac OS
Erklärung:
Die Konsole ist ein Werkzeug (meist ein Programm, das in einem
speziellen Fenster abläuft), das es erlaubt,
Befehle des Betriebssystems einzugeben, mit dem man andere Programme (z.B. einen Compiler, einen Bildbetrachter, ....) starten kann oder
den aktuellen Zustand des Betriebssystems (z.B. Speicherauslastung, laufende Prozesse, ....) kontrollieren kann. Die verfügbaren Befehle
hängen stark vom Betriebssystem selbst ab und laufen oft
nur im Textmodus ab.
Unter Windows kann man z.B. den Befehl "dir" zur
Anzeige der Dateien/Unterverzeichnisse des aktuellen
Verzeichnisses eingeben oder "path", um den
Suchpfad für startbare Programme sich anzeigen
zu lassen.
Unter Linux/Mac OS kann man analog den Befehl "ls -l" zur
Anzeige der Dateien/Unterverzeichnisse des aktuellen
Verzeichnisses eingeben oder "echo $PATH", um den
Suchpfad für startbare Programme sich anzeigen
zu lassen.
Beim Programmieren kann man z.B. den Compiler bei
komplizierteren Übersetzungsvorgängen starten.
Da der GCC-C++-Compiler eine nahezu identische Eingabeform
unter verschiedenen Betriebssystemen hat, hängt
normalerweise der Aufruf gar nicht vom Betriebssystem ab.
"g++ -ansi -Wall -pedantic tanken_fkt_main.cpp tanken_fkt.cpp"
übersetzt sowohl die Quelldatei "tanken_fkt_main.cpp"
mit der main()-Funktion als auch die Quelldatei "tanken_fkt.cpp"
für die Funktionen und startet danach automatisch den
Linker, der dann das ausführbare Programm erzeugt.
synonyme Begriffe:
Befehlszeile = Kommandozeile = command line interface (CLI)
Terminal = Konsole (engl.: console)
Programmmodul = Programmteil
Interface = Eingabebereich
weitere Informationen
18. Sourcecode/Quelltext:
Beispiel:
Ein erstes Beispiel wäre die Datei "bsp_01.cpp" mit dem Hello-World-Programm aus der Vorlesung.
Erklärung:
Der Quelltext ist der in einer Datei gespeicherte Text,
der Anweisungen/Deklarationen nach den Regeln einer
Programmsprache enthält. Dieser ist im Gegensatz zu
Maschinencode für einen Menschen (leicht) lesbar.
Die Datei, die einen C++-Sourcecode enthält,
trägt im Allgemeinen die Endung ".cpp".
synonyme Begriffe:
Quellcode (engl.: source code) = Programmcode = Quelltext
weitere Informationen
19. Deklaration:
Beispiel:
Beispiele für Variablendeklarationen:
int wert;
double erg;
string name;
Deklaration einer Funktion durch Funktionsprototyp:
int summe(int a, int b);
Erklärung:
Eine Deklaration dient dazu, dem Compiler wichtige Eigenschaften
von Variablen oder Funkionen mitzuteilen. Darunter fallen
der Name der Variable, ihr Datentyp, bei Arrayvariablen ihre
Dimension, aber auch weitere Aspekte (z.B. ob die Variable
konstant oder veränderbar ist, ob sie in einer
externen Programmdatei definiert ist oder lokal vorliegt, ...).
Der Compiler kann dann bei späteren Verwendungen der
Variable oder der Funktion prüfen, ob diese korrekt
benutzt wird (z.B. die Argumentanzahl einer Funktion passt,
ob die Wertanweisung an die Variable durchführbar ist, ...).
Zudem kann auch der Datentyp eines Terms (Ausdruckes)
abhängig vom Datentyp des Funktionsergebnisses
oder der Variable berechnet werden.
double zahl = 1.25, erg;
// der Term "1/zahl" wird als double-Wert erkannt,
// da "zahl" eine double-Variable ist
cout << "Kehrbruch = " << 1/zahl << endl;
// der Term "2*exp(-zahl)" wird als double-Wert erkannt,
// weil die Funktion "exp(..)" fuer double-Argumente
// einen double-Wert als Funktionsergebnis liefert
erg = 2*exp(-zahl);
Eigentlich muss man strikt zwischen einer Deklaration und einer Definition unterscheiden. Eine Definition legt eine Funktionsrealisierung
fest, eine Deklaration kündigt nur u.a. die Argumentliste,
den Datentyp des Funktionsergebenissen und den Funktionsnamen
dem Compiler an.
// Funktionsprototyp = Deklaration der Funktion
double maximum(double x, double y);
// Funktionsdefinition
double maximum(double x, double y)
{
if (x <= y)
return y;
else
return x;
}
int main()
{
// (Deklaration und) Definition der Variable "zahl"
double zahl;
// nur Deklaration der extern angelegten Variable "parameter"
// (die Variable wird in einem anderen Quelltext definiert)
extern double parameter;
}
weitere Informationen
20. Bezeichner:
Beispiel:
Der Name einer Variable, z.B. „variable1“ im folgenden Beispiel:
int variable1;
Wird später etwas mit der Variable gemacht, wird sie durch den Bezeichner eindeutig identifiziert:
variable1 = 42;
In C++ wird dabei zwischen Groß- und Kleinschreibung unterschieden.
Erklärung:
Ein Bezeichner dient zur eindeutigen Identifikation
einer Variable, Funktion, eines Datentyps, ... .
Die Eindeutigkeit kann auch mit sogenannten Namensräumen
auf einen Teilbereich des Quelltextes eingeschränkt werden.
synonyme Begriffe:
Identifikator (engl.: identifier) = Bezeichner
weitere Informationen
21. Wertzuweisung:
Beispiel:
Der Variablen "zahl" wird der Wert 2 zugewiesen:
zahl=2;
Der booleschen Variable "aussage" wird der logische Wert "true" zugewiesen:
aussage=true;
Der Wert, den der Benutzer mit der Tastatur eingibt, wird
der Variablen "nummer" zugewiesen:
cin >> nummer;
Erklärung:
Die Wertzuweisung ändert den Inhalt einer Variablen. Dabei ist zu beachten, dass der zugewiesene Wert (steht rechts von dem Gleichheitszeichen) im einfachsten Fall denselben Datentyp wie die Variable hat.
Ist dies nicht der Fall, versucht der Compiler, den zuzuweisenden
Wert vom Datentyp an den Datentyp der Variable (links von dem Gleichheitszeichen)
anzupassen (eine implizite Datentypumwandlung tritt auf).
Bei einer impliziten Datentypumwandlung kann entweder der Wert
erhalten bleiben (nur das Format ändert sich evtl.)
oder dieser wird beim Anpassen geändert.
weitere Informationen
22. Anweisung:
Beispiel:
if (3 > zahl)
zahl=3;
else
zahl=1;
Diese vier Zeilen entsprechen einer Anweisung (if-Anweisung),
die selbst wieder Teilanweisungen enthält (z.B. die Wertzuweisung "zahl=3;", falls "3 > zahl" ist).
Erklärung:
Eine Anweisung ist eine Arbeitsvorschrift in einem Programm. Diese kann aus mehreren Teilanweisungen bestehen oder sie ist nicht weiter zerlegbar
(direkter Befehl).
In der Maschinensprache kann die Bezeichnung "Anweisung" direkt als Synonym für Befehl gesehen werden, in höheren Programmiersprachen (z.B. C++)
gilt dies nicht, da eine Anweisung aus mehreren Befehlsfolgen bestehen kann.
weitere Informationen
23. Operator/Operand:
Beispiel:
2*3
a==4
Hier sind 2, 3, 4 bzw "a" die Operanden, * und == sind die Operatoren, wobei letzterer in C++ auf Gleichheit testet.
Weitere Operatoren sind u.a.:
+, -, /, !=, <, &&
Erklärung:
Der Operator ist das Zeichen, das symbolisiert, welche mathematische oder logische Operation ausgeführt werden soll. Der Operator bezieht sich immer
auf Operanden und hat selbst wieder einen Wert (und damit
einen Datentyp).
Der Operand ist im einfachsten Fall z.B. ein numerischer Wert oder ein String, kann aber auch selbst wieder ein Ausdruck (Term) sein, der
selbst wieder aus Operanden und Operatoren besteht.
weitere Informationen
24. Datentypen:
Beispiel:
In C++ gibt es z.B. die Standarddatentypen int (ganze Zahlen), float und double (einfach und doppelt genaue Gleitkommazahlen), char (Zeichen).
Weiterhin lassen sich Aufzählungsdatentypen (engl.: enumerations oder enums) sowie komplett selbst definierte Datentypen (Strukturen, Klassen,
wie z.B. string für Zeichenketten) festlegen.
Erklärung:
Der Datentyp gibt an, welchen Wertebereich eine Variable
(von diesem Datentyp) annehmen kann und welche Operationen
für diese Variable erlaubt sind. Beispiele können Ganz- oder Gleitkommazahlen, Zeichenketten oder auch komplexere Datentypen wie
Strukturen (zusammengesetzt aus Variablen i.a. unterschiedlichen
Datentyps) oder Klassen sein.
Ohne die Angabe eines Datentyps kann man in C++ keine Variablen anlegen/benutzen.
Selbst numerische Zahlenwerte, konstante Zeichenketten
oder ganz allgemein Ausdrücke (Terme)
haben einen zugehörigen Datentyp.
weitere Informationen
25. Variable:
Beispiel:
int zahl;
zahl=2;
...
zahl=4;
Der Wert der ganzzahligen Variablen "zahl" lässt sich beliebig oft ändern.
bool aussage;
aussage=true;
...
aussage=false;
Dies ist eine boolesche Variable. Sie kann die logischen Werte "true" und "false" annehmen. Im Rechner werden sie mit
"true" bzw "false" repräsentiert.
Erklärung:
Eine Variable ist eine Größe, deren Wert sich
(im Gegensatz zu Konstanten) ändern kann. Sie muss in typgebundenen Programmiersprachen wie C, C++, Java
einen Datentyp besitzen. Ihr Name bietet eine einfache
Möglichkeit, um Werte in einem vom Compiler (automatisch) festgelegten
Speicherort abzulegen oder den abgespeicherten Wert abzurufen.
weitere Informationen
26. globale/lokale Variablen:
Beispiel:
int zahl=0;
int main()
{
for (int i=1; i<10; i++)
zahl=zahl+i;
...
return 0;
}
Hier ist "zahl" eine globale Variable und "i" eine lokale Variable.
Erklärung:
Globale Variablen sind für das ganze Programm deklariert und können i.d.R. jederzeit aufgerufen werden. Lokale Variablen existieren jeweils nur in den
(Teilbereichen von) Funktionen, in denen sie deklariert wurden.
Wegen schlechter verständlichen Quelltext und wegen
schwer feststellbaren, versehentlichen Änderungen sollte
man auf globale Variablen verzichten. Dagegen sind globale
Konstante durchaus üblich.
weitere Informationen
27. Konstante:
Beispiel:
const int zahl=4;
zahl=2;
"zahl" ist hier eine Konstante und hat immer den Wert 4.
Versucht man der Konstante einen neuen Wert zuzuweisen, bringt der Compiler eine Fehlermeldung.
Erklärung:
Eine Konstante muss sofort bei der Definition einen festen Wert zugewiesen bekommen und behält diesen dauerhaft. Weder durch eine neue Anweisung im Quellcode kann
man den Wert einer Konstante ändern noch können Konstanten einen Wert zugewiesen bekommen, der z.B. durch die Standardeingabe durch den Anwender
festgelegt wird.
28. Array:
Beispiel:
int zahlen[7];
zahlen = {2,3,5,7,11,13,17};
Die erste Arraykomponente hat in C++ den Index 0, d.h. zahlen[0] = 2, während zahlen[1] = 3.
Erklärung:
Ein Array (Betonung auf 2. Silbe) ist einerseits
ein zusammengesetzter Datentyp, meint aber auch gleichzeitig
eine Variable dieses Datentyps.
Eine Arrayvariable speichert (ein oder) mehrere Variablen
desselben Datentyps und bietet über einen Index einen
bequemen Zugriff auf die im Array zusammengefassten Variablen.
Mit dem Index und z.B. einer for-Schleife kann man elegant
mehrere/viele Variablen ansprechen und bearbeiten.
Kann sich die Länge des Arrays zur Laufzeit
ändern, spricht man von dynamischen Arrays, ansonsten
von statischen Arrays.
synonyme Begriffe:
Feld = Array
Vektor = (eindimensionales) Array
Matrix = (zweidimensionales) Array
weitere Informationen
29. String:
Beispiel:
#include <string>
...
string name;
name = "Marvin";
Erklärung:
Eine Zeichenkette (engl.: String) ist wie ein Array einerseits
ein zusammengesetzter Datentyp und andererseits auch eine Variable dieses Typs.
Die Zeichenkette besteht aus einer geordneten Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen) aus einem definierten Zeichensatz. Zeichen können sich in einer Zeichenkette wiederholen, die Reihenfolge der Zeichen ist festgelegt.
Die Länge ist je nach konkretem Datentyp zur Abspeicherung
fest oder kann sich zur Laufzeit ändern.
Da Leerzeichen und der Punkt erlaubte Zeichen sind, kann man
ganze Wörter oder Sätze in einer Zeichenkette ablegen.
In C ist eine Realisierung einer Zeichenkette ein Array
aus Zeichen vom Datentyp char, in C++ wird eine
Zeichenkette häufig in ein Objekt der vordefinierten Klasse
string abgelegt.
weitere Informationen
30. Implementierung:
Erklärung:
Implementierung wird meist als Synonym für Programmierung verwendet. Die Implementierung einer Funktion bedeutet nichts anderes als
die Funktionsdefinition. Bei einer Implementierung einer ganzen
Klasse (spezieller Datentyp) versteht man normalerweise die Bereitstellung aller in der Klasse festgelegten Methoden (Funktionen) und objektunabhängiger Datenelemente.
31. Funktion:
Beispiel:
int summe(int zahl)
{
int summe=0;
for (int i=1; i<=zahl; i++)
summe=summe+i;
return summe;
}
Das erste "int" gibt an, dass der Datentyp des Rückgabewertes vom Typ "int" ist. "summe" ist der Name der
Funktion und "int zahl" der (einzige) Parameter vom Datentyp "int".
Erklärung:
Eine Funktion ist ein Programmteil, dessen Aufgabe sich meist darauf beschränkt, einen numerischen oder logischen Wert zurückzugeben.
Funktionen setzt man zur besseren Gliederung (oft funktionsorientierter) Programme ein (z.B. eine Funktion zur Eingabe aller Werte, eine zur Berechnung von Werten, eine zur Ausgabe, ...). Sie dienen auch dazu,
gleiche oder sehr ähnliche Programmteile durch einen
Funktionsaufruf mit gleichen (oder leicht verschiedenen)
Funktionsargumenten abzukürzen.
Bei einer Funktion muss man neben den eigentlichen Anweisungen deren Namen, den Datentyp des Rückgabewertes und optional Funktionsargumente definieren.
weitere Informationen
32. Rückgabewert:
Beispiel:
int fakultaet(int zahl)
{
if (zahl<0)
{
cout << "Die Fakultät ist nicht für negative Zahlen definiert!" << endl;
return -1;
}
else
{
int erg=1;
for (int i=1; i<=zahl; i++)
erg=erg*i;
}
return erg;
}
Hier ist entweder "erg" oder "-1" der Rückgabewert. Sollte "-1" zurückgegeben werden, dann weiß der Benutzer
(auch ohne der Fehlermeldung), dass bei der Fakultätsberechnung etwas schief gelaufen ist.
Erklärung:
Der Rückgabewert ist ein Wert, den eine Prozedur beim Programmieren zurückgbit, nachdem sie ausgeführt wurde.
Anhand des Rückgabewertes kann entschieden werden, welche Schritte als nächstes auszuführen sind.
Rückgabewerte können auch angeben, ob eine Prozedur erfolgreich ausgeführt wurde oder nicht.
33. Parameter:
Beispiel:
zahl=pow(7, 3);
Diese Funktion berechnet 7^3. Hier sind 7 und 3 die (Übergabe-)Parameter.
Erklärung:
Platzhalter für die Übergabe von Daten bei Befehlen oder Funktionen.
weitere Informationen
34. Prozedur:
Beispiel:
void ausgabe(int zahl)
{
cout << "Es wurde die Zahl " << zahl << " übergeben." << endl;
}
Erklärung:
Eine Prozedur ist ein gesonderter Teil eines Programmes. Sie lässt sich einzeln aufrufen und ausführen. Oft werden sie in Bibliotheken zusammengefasst
und immer wieder benutzt, auch von mehreren Programmen.
Funktionen, die keinen Rückgabewert besitzen, werden auch als Prozedur bezeichnet.
weitere Informationen
35. Iteration:
Beispiel:
int summe=0;
for (int i=1; i<=10; i++)
summe=summe+i;
Ein Algorithmus, mit dem man die ersten 10 Zahlen aufsummiert. "i<=10" ist die Bedingung und nach jedem
Schleifendurchang wird "i" um 1 erhöht.
Erklärung:
Die wiederholte Ausführung einer oder mehrerer Anweisungen um Probleme bzw Aufgaben zu lösen, wird Iteration genannt. Dabei muss es mindestens eine
Bedingung geben, die dafür sorgt, dass die Iteration irgendwann beendet wird.
Iterationen lassen sich mit Hilfe von Schleifen realisieren. Im obigen Beispiel ist "i" der sogenannte Iterator.
36. Rekursive Programmierung:
Beispiel:
fakultaet_rekursiv(n)
{
if (n <= 1)
return 1;
else
return ( n * fakultaet_rekursiv(n-1) );
}
Erklärung:
Bei der rekursiven Programmierung ruft sich eine Prozedur, Funktion oder Methode in einem Computerprogramm selbst wieder auf. Auch der gegenseitige Aufruf stellt eine Rekursion dar.
weitere Informationen
37. Headerfile/Realisierungsfile/Anwendungsfile:
Beispiel:
Headerfile funktionen.hpp:
#include
using namespace std;
int summe(int a, int b);
bool gleich(int a, int b);
Realisierungsfile funktionen.cpp:
#include "funktionen.hpp"
int summe(int a, int b)
{
return a+b;
}
bool gleich(int a, int b)
{
return a==b;
}
Anwendungsfile main.cpp:
#include "funktionen.hpp"
int main()
{
int zahl1 = 1, zahl2 = 2, erg;
bool equals;
erg = summe(zahl1,zahl2);
equals = gleich(zahl1,zahl2);
return 0;
}
Erklärung:
Eine Header-Datei ist in der Programmierung, insbesondere bei den Programmiersprachen C++ und C, eine Textdatei, die Deklarationen und andere Bestandteile des Quelltextes enthält. Quelltext, der sich in einer Header-Datei befindet, ist im Allgemeinen zur Verwendung in mehreren Programmen oder mehreren Teilen eines Programmes vorgesehen.
Das Realisierungsfile enthält die tatsächliche Definition der im Headerfile deklarierten Methoden und Funktionen.
Im Anwendungsfile erfolgt schließlich der Aufruf der deklarierten und definierten Funktionen.
weitere Informationen
38. Kommentar:
Beispiel:
Erklärung:
Kommentare werden beim kompilieren des Quellcodes ignoriert und stellen "nur" eine Anmerkung zum Quelltext dar. Kommentare machen Programme bei
(sinnvollen) Gebrauch leichter verständlich.
39. Syntax:
Beispiel:
Deklaration und Wertzuweisung einer Variable in C++:
int wert;
wert = 42;
Formal muss zunächst der Typ der Variable, hier int, angegeben werden, anschließend der Bezeichner, der eindeutig sein muss
und zugleich kein Schlüsselwort sein darf. Bei der Zuweisung muss der Bezeichner der Variable zwingend links stehen, rechts
steht, getrennt durch ein =, der zugewiesene Wert. Jede Codezeile muss außerdem durch ein Semikolon abgeschlossen werden.
Ein äquivalentes Programmstück ist:
int wert = 42;
Das zeigt auch, dass die Syntax nicht immer eindeutig festgelegt ist.
Bei falscher Syntax wie z.B.
42 = wert;
wert := 42;
wert <- 42;
zeigt der Compiler einen Syntaxfehler an.
Erklärung:
Unter der Syntax einer formalen Sprache (formale Syntax) – wie etwa Programmiersprachen in der Informatik oder Kalküle in der Logik – versteht man ein System von Regeln, nach denen erlaubte Konstruktionen bzw. wohlgeformte Ausdrücke aus einem grundlegenden Zeichenvorrat (dem Alphabet) gebildet werden – wobei von der inhaltlichen Bedeutung der Zeichen abgesehen wird bzw. werden kann.
40. Syntaxhervorhebung:
Beispiel:
Der Editor in Codeblocks stellt in den Standardeinstellungen Kommentare grau dar.
Präprozessorbefehle werden dagegen grün markiert.
Erklärung:
Syntaxhervorhebung, auch Syntax highlighting genannt, bezeichnet die Möglichkeit eines Computerprogrammes, bestimmte Wörter und Zeichenkombinationen
in einem Text abhängig von ihrer Bedeutung in unterschiedlichen Farbe, Schriftarten und -stilen darzustellen.
weitere Informationen
41. Input/Output (I/O):
Beispiel:
Das Programm fordert den Benutzer auf, eine Zahl einzugeben (Output):
cout << "Geben Sie eine Zahl ein: ";
Das Programm empfängt die eingegebene Zahl (Input):
cin >> zahl;
Erklärung:
Mit Input/Output (Ein-/Ausgabe) bezeichnet man die Kommunikation bzw Interaktion eines Informationssystems mit seiner "Ausßenwelt", z.B. seinen
Benutzern oder anderen Informationssystemen, und Aktionen zum Lesen und Schreiben von Daten.
weitere Informationen
42. Algorithmus:
Beispiel:
Euklidischer Algorithmus zur Berechnung des ggT zweier Zahlen (in Pseudocode):
EUCLID(a,b)
1 solange b != 0
2 h <- mod b
3 a <- b
4 b <- h
5 return a
Erklärung:
Ein Algorithmus ist ein schrittweises, präzises Verfahren zur Lösung eines Problems.
weitere Informationen
43. Datenstruktur:
Beispiel:
Array, verkettete Liste, Stack, ...
Erklärung:
Eine Datenstruktur ist ein mathematisches Objekt zur Speicherung von Daten. Es handelt sich um eine Struktur, weil die Daten in einer bestimmten Art und Weise angeordnet und verknüpft werden, um den Zugriff auf sie und ihre Verwaltung geeignet zu ermöglichen. Datenstrukturen sind daher nicht nur durch die enthaltenen Daten charakterisiert, sondern vor allem durch die Operationen auf diesen Daten, die Zugriff und Verwaltung realisieren.
weitere Informationen
|