Sie sind auf Seite 1von 34

Programmiersprache C++

1. Jahrgang

Dipl.-Ing. Heinrich Dornmayr MBA


Allgemeines zu C
• Die Programmiersprache C wurde 1972 von
Dennis M. Ritchie bei den Bell Laboratories
(AT&T) entwickelt.
• Zusammen mit Ken Thompson arbeitete Ritchie
damals daran, das eben entwickelte
Betriebssystem Unix auf einen weiteren
Prozessor zu portieren.
• Neuschreiben des Betriebssystems in der
Maschinensprache des jeweiligen Prozessors =
großer Aufwand.
Allgemeines zu C
• Daher wurde eine Programmiersprache
entwickelt, in der das Betriebssystem
geschrieben werden konnte.
• Der Portierungsaufwand reduziert sich dann auf
das Anpassen des Betriebsystemkerns und des
Compilers.
• So entstand C!
Allgemeines zu C++
• C++ ist eine Weiterentwicklung von C.
• Der Name verdeutlich den evolutionären
Charakter der Sprachentwicklung aus C heraus.
• "++" ist der Inkrementoperator in C.
• Deshalb ist C praktisch vollständig in C++
enthalten!
• C++ ist eine objektorientierte
Programmiersprache.
• Auch die meisten heutigen Compiler sind C++
Compiler, sie können C und C++ Programme
übersetzen.
Allgemeines zu C/C++
• Heute kann man C (bzw. C++) als die wichtigste
Programmiersprache für Systementwickler
bezeichnen.
• Der Großteil aller auf PCs und Unix Maschinen
angebotener Software ist in C geschrieben.
• Beispielsweise bezeichnet sich die Datenbank
Oracle als das größte C Programm der Welt.
• C ist sowohl maschinennahe, verfügt aber auch
über alle Eigenschaften einer höheren
Programmiersprache (entsprechende
Datentypen, Kontrollstrukturen (if, for, …),
Modularität (Funktionen, Unterprogramme), …).
Allgemeines zu C/C++
• Neben dem Sprachumfang selbst, der sehr klein
gehalten ist, gibt es zu jedem Compiler noch
eine umfangreiche, großteils genormte
Bibliothek vorgefertigter Funktionen, die
wesentlich zur Brauchbarkeit von C beiträgt.
• Dort befinden sich sämtliche Möglichkeiten der
Ein- und Ausgabe (cin, cout, …), alle
mathematischen Funktionen (sin, cos, …),
Möglichkeiten zur Bildschirmansteuerung, usw.
Allgemeines zu C/C++
• Auf PCs ist C/C++ eine der wichtigsten
Sprachen und kann durch Produkte wie Visual
C++, Borland C++ oder Symantec C++ sehr
effizient eingesetzt werden.
Erstes Beispielprogramm
#include <iostream>

using namespace std;

int main()
{
cout << "Mein erstes C++ Programm!" << endl;
return 0;
}
Erstes Beispielprogramm
Erstes Beispielprogramm
#include <iostream>

• <iostream> ist eine Header-Datei der


Standardbibliothek,
• für Standard I/O-Stream-Objekte und –
Operatoren (cin, cout,…)
• welche sich im Standard-Include-Verzeichnis
befindet (eckige Klammern anstatt
Anführungszeichen, kein Suffix (.h) notwendig).
Erstes Beispielprogramm
using namespace std;

• Die Hilfsmittel der Standardbibliothek werden im


Namensbereich "std" definiert und als eine
Menge von Header-Dateien repräsentiert.
• Ein Namensbereich ist ein Gültigkeitsbereich.
• Damit nicht jeder Name für sich mit seinem
Namensbereich qualifiziert werden muss (z.B.:
std::cin) verwendet man die Using-Deklaration.
Erstes Beispielprogramm
• Das Programm beginnt mit der Funktion namens
main:
– int und () besagen, dass die Funktion einerseits einen
Integer-Wert zurückgibt aber andererseits keine
Daten erhält.
– Teile eines Struktogramms werden im Programm zu
einer eigenen Funktion.
– Das Programm beginnt seinen Ablauf immer mit der
Funktion main.
Erstes Beispielprogramm
– Deshalb ist auch der Name main zwingend, während
andere Funktionen beliebig heißen können.
– return 0 gibt den integer-Wert 0 an das aufrufende
Programm zurück.
– In diesem Fall ist das aufrufende Programm das
Betriebssystem.
Erstes Beispielprogramm
• Geschwungene Klammern { } fassen mehrere
Befehle zu einer Einheit (einem Programmblock)
zusammen.
• Hier sind das jene Befehle, die zur Funktion
main gehören.
• Alle Befehle müssen mit ; beendet werden.
Erstes Beispielprogramm
cout << "Mein erstes C++ Programm!" << endl;

• Der Operator << ("sende nach") gibt sein


zweites Argument auf sein erstes aus.
• In diesem Fall wird das Zeichenkettenliteral
"Geben Sie eine Zahl ein: " auf den
Standardausgabe-Stream cout ausgegeben.
• \n innerhalb einer Zeichenkette oder endl
außerhalb sind Zeilentrennzeichen.
Zweites Beispielprogramm
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "Geben Sie eine Zahl ein: ";
cin >> i;
cout << "Die von Ihnen eingegebene Zahl ist: " << i << endl;
return 0;
}
Zweites Beispielprogramm
Zweites Beispielprogramm
cin >> i;

• Der Operator >> ("empfange von") wird als


Eingabeoperator benutzt.
• cin ist der Standardeingabe-Stream.
• Der Operand auf der rechten Seite des
Operators >> bestimmt das Ziel der
Eingabeoperation.
• Sein Typ legt fest was als Eingabe akzeptiert
wird.
Datentypen
Arrays (Felder)
• Zusammenfassen mehrerer Elemente gleichen
Typs.
• Mit Hilfe des Index wird die Elemente der Felder
durchnumeriert.
• Es ist auch möglich, die Elemente nicht alle
hintereinander (= eindimensional), sondern in
Form eines Rechtecks (= zweidimensional) oder
auch mehrdimensional anzuordnen.
• Der Index jeder Dimension beginnt immer bei 0.
Arrays (Felder)
• int tab [3];
– ist ein eindimensionales Array und hat 3 Elemente
(tab[0], tab[1], tab[2]).
– Der Index wird nach dem Tabellennamen in eckigen
Klammern geschrieben und wird ab 0 durchnumeriert.
– Versuchen Sie im Programm tab[3] anzusprechen, so
liegen Sie außerhalb (hinter) der Tabelle und
bewegen sich im Speicherbereich einer anderen
Variable.  Führt zu schweren Fehlern!
– WICHTIG: Es erfolgt keine Überprüfung auf
gültigen Speicherbereich von Seiten des Compilers!
Arrays (Felder)
• Bei der Deklaration kann gleich eine
Initialisierung erfolgen:
– Beispiel: int n[] = {8,7,9,-13};
• Die Arraygröße wird dabei automatisch
festgelegt.
• Der Zugriff auf ein Feld erfolgt folgendermaßen:
n[0] = 8;
n[3] = -13;
Arrays (Felder)
• int feld [2] [3];
– ist zweidimensional und definiert 6 Elemente:

feld [0][0] feld [0][1] feld [0][2]


feld [1][0] feld [1][1] feld [1][2]

• Auch mehrdimensionale Arrays können direkt


initialisiert werden:
– int matrix [3] [2] = { {2,3}, {1,4}, {7,5} };
Arrays (Felder)
• Beispiel:
– Deklariere und initialisiere ein dreidimensionales
Array mit 3 Elementen in jeder Dimension.
– Wie kann man sich ein solches Array vorstellen?
Arrays (Felder)
• Lösung:
– int acker [3] [3] [3] = {{{1,2,3},{1,2,3},{1,2,3}}, {{1,2,3},
{1,2,3},{1,2,3}}, {{1,2,3},{1,2,3},{1,2,3}}}
– Entspricht einem Würfel mit der Kantenlänge 3.
Arrays (Felder)
• Beispiel:
– Deklariere ein
Feld von
Zeichen
namens "brett"
in Form eines
Schachbrettes.
– Befülle es mit
den Figuren,
symbolisiert
durch
Buchstaben.
Arrays (Felder)
• Lösung:
// Schachbrett.cpp : Definiert den Einstiegspunkt für die
Konsolenanwendung.
//

#include "stdafx.h"
#include "stdio.h"

int main()
{
/* Deklaration eines Schachbretts von Zeichen */
char brett[8][8];
int i,j;
Arrays (Felder)
/* Belegen des Schachbretts */
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
brett[i][j]=' ';
}
}
for(i=0;i<8;i++) /* Bauern */
{
brett[1][i]='b';
brett[6][i]='B';
}
Arrays (Felder)

/* weitere Figuren */
brett[0][0]=brett[0][7]='t';
brett[0][1]=brett[0][6]='s';
brett[0][2]=brett[0][5]='l';
brett[0][3]='d';
brett[0][4]='k';
brett[7][0]=brett[7][7]='T';
brett[7][1]=brett[7][6]='S';
brett[7][2]=brett[7][5]='L';
brett[7][3]='D';
brett[7][4]='K';
Arrays (Felder)
/* Ausgabe */

printf(" A B C D E F G H\n");
for(i=7;i>=0;i=i-1)
{
printf(" +-+-+-+-+-+-+-+-+\n%d|",i+1);
for(j=0;j<=7;j=j+1)
{
printf("%c|",brett[i][j]);
}
printf("%d\n",i+1);
}
printf(" +-+-+-+-+-+-+-+-+\n A B C D E F G H\n\n");

return(0);
}
Spezielles zu char - Arrays
• Weil der Typ char nur ein Zeichen speichern
kann, ist das char-Array häufig in Verwendung
um Strings zu speichern.
• Um mit Strings besser umgehen zu können, gibt
es String Konstante (zwischen
Anführungszeichen) und eine eigene Gruppe
von Funktionen, die mit Strings arbeiten weil es
keine Operatoren für Strings oder Arrays gibt.
• Diese verlangen aber, dass ein String immer mit
einer binären Null abgeschlossen wird!!!
Spezielles zu char - Arrays
• Hat ein String kein \0 am Ende, so kann das,
genauso wie das planlose Überschreiten von
Indexgrenzen eines Arrays, zu völlig dubiosen
Programmabstürzen führen.
• So wie \n für eine "neue Zeile" steht, steht \0 für
die "binäre Null".
• Das char - Array muss immer um 1 Byte größer
sein als der Text in der Konstante, weil ein \0 als
Endezeichen angefügt wird!!!
Funktionen zur String-Bearbeitung
• strlen(string)
– Die Funktion strlen() gibt die Länge der mit ´\0´
abgeschlossen Zeichenkette string zurück. Das
abschließende Nullbyte wird nicht mitgezählt.
• strcpy(str1,str2)
– Mit der Funktion strcpy() wird der Inhalt von str2
nach str1 kopiert. str2 muss eine mit ´\0´
abgeschlossene Zeichenkette (char-Array) sein.
str1 muss lang genug sein um den Inhalt von str2
aufzunehmen.
Funktionen zur String-Bearbeitung
• strcat (str1,str2)
– Die Funktion strcat() hängt den Inhalt von str2 an
str1 an. Das Nullbyte, das ursprünglich am Ende von
str1 stand, wird vom ersten Zeichen der Zeichenkette
str2 überschrieben. Auch hier muss str1 lang genug
sein um den Gesamtinhalt aufzunehmen.
• strcmp(str1,str2)
– Die Funktion strcmp() vergleicht zwei mit ´\0´
abgeschlossene Zeichenketten (gemäß Code) und
gibt einen Ergebniswert zurück. Ergebniswert Bedeutung
kleiner 0 str1 < str2
gleich 0 str1 == str2
größer 0 str1 > str2

Das könnte Ihnen auch gefallen