FB Informatik
Prof. Dr. R.Nitsch
Programmieren 1 - Grundlagen
Reiner Nitsch
06151/16-8417
r.nitsch@fbi.h-da.de
Homepage: www.fbi.h-da.de/~r.nitsch
Raum: D14/0.09
Programmiersprachen
FB Informatik
Prof. Dr. R.Nitsch
• Maschinensprachen
• Assembler-Sprachen
• Hochsprachen (C, C++, Java, Pascal, Fortran, Cobol, …)
27.03.2008
C++ Grundlagen
2
Programmiersprachen: Machschinensprachen
•
•
•
•
•
•
FB Informatik
Prof. Dr. R.Nitsch
Muttersprache des jeweiligen Prozessors
Definiert durch sein Hardwaredesign (total maschinenabh.)
besteht aus aufeinanderfolgenden Bits
Für Menschen schwer nachvollziehbar
Für Programmierzwecke völlig ungeeignet
Höhere Programmiersprachen sind besser geeignet.
Beispiel:
Code
B17D41C3
B18D41C7
4FCA472A
DC7E23BA
27.03.2008
Kommentar
Lade Wert in Adresse 41C3 in Reg. 1
Lade Wert in Adresse 41C7 in Reg. 2
Addiere die Registerinhalte und speichere das Ergebnis in Reg. 1
Speichere Inhalt von Register 1 unter der Speicheradresse 23BA
C++ Grundlagen
3
Programmiersprachen: Assembler-Sprachen
FB Informatik
Prof. Dr. R.Nitsch
• Eine Assemblersprache repräsentiert die Maschinensprache einer spezifischen
Prozessorarchitektur in einer für den Menschen lesbaren und merkbaren Form.
• Jede Prozessorarchitektur hat folglich ihre eigene Assemblersprache.
• Beispiel:
LOAD R1,
LOAD R2,
ADD
R1,
STORE R1,
#41C3h
#41C7h
R2
#23BAh
Assembler
B17D41C3
B18D41C7
4FCA472A
DC7E23BA
☺Für Menschen leichter merkbar und lesbar
☺Ideal für zeitkritische Algorithmen durch optimale Ausnutzung des Befehlssatzes
☺Hohe Speicherplatzökonomie
Total maschinenabhängig
Ungeeignet für größere Softwareprojekte
27.03.2008
C++ Grundlagen
4
Programmiersprachen: Hochsprachen
•
•
FB Informatik
Prof. Dr. R.Nitsch
Mehrere Maschinenbefehle werden zu Anweisungen (statements)
zusammengefasst
Benutzen Elemente der Alltagssprache und bekannte mathematische Notationen
Beispiel:
int number1, number2, sum;
sum = number1 + number2;
Anweisung 1
Anweisung 2
•
Anweisungen werden von Compilern bzw. Interpretern in Maschinencode
übersetzt.
☺ Für Menschen leicht versteh- und anwendbar
☺ Maschinenunabhängig
27.03.2008
C++ Grundlagen
5
Eigenschaften von C
FB Informatik
Prof. Dr. R.Nitsch
•
•
•
•
•
•
C ermöglicht direkte Speicherzugriffe und sehr hardwarenahe Konstrukte
Gute Anpassung an die Prozessorarchitektur (Hardware)
Erlaubt maschinennahe Programmierung
Hohe Portabilität
Modulare Programme
C-Compiler erzeugen sehr effizienten Code (sowohl bzgl. Laufzeit als auch bzgl.
Programmgröße). UNIX ist in C programmiert.
• Sprachumfang von C ist klein, übersichtlich und relativ leicht erlernbar (nur 32 Schlüsselworte)
• C ist eine aus der Praxis entstandene und für die Praxis geschaffene Sprache. Sie ist keine
"didaktische" Sprache, wie z.B. die Sprache PASCAL, die von Wirth speziell für Lehrzwecke
entworfen wurde
nur sehr eingeschränkt Prüfungen zu Speicherzugriffen, Variablentyp, Stacknutzung etc.,
d.h. keine strenge Typenkonsistenz (vielfältige automatische Typkonvertierungen)
vielfältige Fehlermöglichkeiten, die vom Compiler nicht erkannt werden können
für sicherheitskritische Anwendungen (Medizintechnik, Verkehrsleittechnik, Raumfahrt)
wenig geeignet.
– Grundphilosophie von C :
27.03.2008
C++ Grundlagen
6
Eigenschaften von C++
FB Informatik
Prof. Dr. R.Nitsch
• Hybride Sprache:
– Enthält den Sprachumfang von C als Teilmenge (modular, effizient, maschinennah,
portabel, formatfrei)
– Unterstützt Konzepte der objektorientierten Programmierung (kurz: OOP)
• Datenabstraktion: Bildung von Klassen zur Beschreibung von Objekten.
• Datenkapselung: Kontrolliert den Zugriff auf Daten von Objekten.
• Vererbung: Aus Basisklassen werden Subklassen abgeleitet, die gleiche und
speziellere Eigenschaften wie die Basisklassen haben.
• Polymorphie (griech. Vielgestaltigkeit): Erlaubt die Implementierung von
Anweisungen, die zur Laufzeit in Abhängigkeit vom Objekttyp verschiedene
Wirkung haben können.
• Getypte Sprache (strenge Typkontrolle durch Compiler)
• Erweiterungen ohne Bezug zur OOP
– Referenzen
– Templates
– Ausnahmebehandlung (Exception-handling)
– Standard Library (STL)
• C++ übertrifft C in Bezug auf Entwicklungsgeschwindigkeit, Wartbarkeit,
Informationssicherheit, Entwurfsunterstützung und Abstraktionsniveau.
27.03.2008
C++ Grundlagen
7
All 62 C++ keywords
•
FB Informatik
Prof. Dr. R.Nitsch
Cannot be used as identifiers or variable names
C++ Keywords
Keywords common to the
C and C++ programming
languages
auto
continue
enum
if
short
switch
volatile
C++ only keywords
asm
delete
inline
private
static_cast
try
wchar_t
27.03.2008
break
default
extern
int
signed
typedef
while
case
do
float
long
sizeof
union
char
double
for
register
static
unsigned
const
else
goto
return
struct
void
bool
dynamic_cast
mutable
protected
template
typeid
catch
explicit
namespace
public
this
typename
class
false
new
reinterpret_cast
throw
using
const_cast
friend
operator
C++ Grundlagen
true
virtual
8
Erstellen eines C++ Programms
FB Informatik
Prof. Dr. R.Nitsch
Editor
.cpp
Quelldatei
HeaderDateien
Preprozessor
Compiler
Übersetzen in
Maschinencode
Entwicklungsumgebung
.obj
Objektdatei
Standard
Bibliothek
Linker
Binden der
Objektdateien
weitere
Objectdateien
.exe
Ausführbare
Datei
Loader
Debugger
27.03.2008
RAM
C++ Grundlagen
9
Ein einfaches Programm: 1 Textzeile ausgeben
FB Informatik
Prof. Dr. R.Nitsch
•
Kommentare
– Teil der Programmdokumentation
– Verbessern die Lesbarkeit des Programmcodes
– Werden vom Preprozessor entfernt
– Einzeiliger Kommentar
• Beginnt mit //
Beispiel: //This is a single-line comment
– Mehrzeiliger Kommentar
• /* This is a
multiple-line comment */
•
Preprozessor Anweisungen
– steuern der Preprozessor bei der Quellcodebearbeitung vor der Compilierung
– Beginnen mit #
27.03.2008
C++ Grundlagen
10
Ein einfaches Programm: 1 Textzeile ausgeben
// Fig. 1.2: fig01_02.cpp
// My first program in C++.
FB Informatik
Prof. Dr. R.Nitsch
1-zeilige Kommentare
Preprozessor Direktive zum Einfügen der Header-Datei
<iostream> der C++ Bibliothek.
Tipp: Verwende nicht <iostream.h> der C-Bibliothek
#include <iostream>
// function main begins program execution
int main()
Funktion main muss es genau 1-mal in jedem C++ Programm geben.
Funktion main gibt Ganzzahl-Wert zurück.
{
std::cout << "Welcome to C++!\n";
Funktionsrumpf beginnt mit {.
Anweisungen enden mit ;
Name cout gehört zum Namensraum std.
return 0;
Stream-Einfügeoperator: Der rechte Wert wird in den durch
cout kontrollierten Ausgabestrom eingefügt.
// indicate that program ended successfully
} // end function main
Funktionsrumpf endet mit } .
Schlüsselwort return ist eine von mehreren Möglichkeiten, eine
Funktion zu beenden. Wert 0 kennzeichnet ein erfolgreiches
Programmende.
Output
Welcome to C++!
27.03.2008
C++ Grundlagen
11
Escape Sequenzen
FB Informatik
Prof. Dr. R.Nitsch
std::cout << "Welcome to C++\n";
• Escape Zeichen '\' kündigt Steuerzeichen für Ausgabe an.
– \n positioniert Cursor am Anfang der nächsten Zeile (newline)
– \t bewegt Cursor zum nächsten Tabstop
– \r Cursor zum Zeilenanfang ohne Zeilenvorschub
– \a erzeugt Hinweiston
– \\ gibt backslash '\' aus
– \" gibt Anführungszeichen aus
– … es gibt noch mehr
std::cout << "Diese Zeichenkette enthaelt \"Anfuehrungsstriche\"."
erzeugt diese Ausgabe auf Bildschirm:
27.03.2008
Diese Zeichenkette enthaelt "Anfuehrungsstriche".
C++ Grundlagen
12
Ein einfaches Programm: mehrere Textzeilen ausgeben
FB Informatik
Prof. Dr. R.Nitsch
// Fig. 1.4: fig01_04.cpp
// Printing a line with multiple statements.
#include <iostream>
// function main begins program execution
int main()
{
std::cout << "Welcome ";
std::cout << "to C++!\n";
Mehrere Stream-Ausgabeanweisungen
erzeugen 1 Ausgabezeile
Mehrzeilige Ausgabe mittels mehrerer '\n'
std::cout << "Welcome\nto\n\nC++!\n";
return 0;
// indicate that program ended successfully
} // end function main
Welcome to C++!
Welcome
to
C++!
27.03.2008
C++ Grundlagen
13
Variablen
FB Informatik
Prof. Dr. R.Nitsch
• sagen dem Compiler,
– wo sich Daten befinden (Adresse)
– wie der Wert gespeichert ist (Typ)
– was für ein Wert vorliegt (Wert)
• sagen dem Programmierer was für Daten gespeichert sind
• Variablen
– müssen vor erster Benutzung definiert werden
Beispiel: int number1=10, number2;
Typ
Name
Initialisierung Name (o.Init.)
– Manchmal müssen Variable auch "nur" deklariert
werden (Definition schliesst die Deklaration mit ein)
– bestehen aus Buchstaben, Ziffern und '_'
– sind case sensitive
– müssen mit Buchstaben oder '_' beginnen
– dürfen kein Schlüsselwort sein
• Konventionen
– möglichst selbsterklärend
– sollten nicht mit '_' oder '__' beginnen
27.03.2008
C++ Grundlagen
Variablen-Initialisierung:
Variablen-Definition:
Variablen-Deklaration:
Der Compiler
• erfährt neuen Variablennamen
• erfährt den Variablentyp
• reserviert Speicherplatz
• schreibt Anfangswert in Speicher
Weitere Beispiele:
int number1 = 10;
int number2 (20);
char c = 'a';
const float pi(3.14); //read only
const int hundred;
Fehler: muß initialisiert werden
14
Namen (Bezeichner)
FB Informatik
Prof. Dr. R.Nitsch
• Einzelne Bestandteile eines Programms werden über Namen
Falsch
Richtig
identifiziert.
3terVersuch
versuch3
Anzahl der Werte anzahlDerWerte
Vorschriften zur Namensbildung:
zähler
zaehler
• Namen (Identifier) bestehen aus Buchstaben, Ziffern und
Unterstrichen "_" ; sie müssen mit einem Buchstaben oder
Unterstrich "_" beginnen;
Richtig
• Groß- und Kleinbuchstaben werden unterschieden;
schlecht
gut
• die Anzahl signifikanter Zeichen ist implementierungsabhängig (i.a.
summe
s
>30)
cnt
counter
• Reservierte C++-Worte (Schlüsselwörter . engl. key words) sind zur
Namensgebung verboten. (z.B. if, main, while, const, class, .)
openFile
_open
• Empfehlungen
atoi
alphanum_to_int
– Name sollen nicht mit Unterstrich "_" beginnen.
ascii2int
– Namen sollen natürlich-sprachig, problemnah, selbsterklärend sein.
print
toStream
– Inhaltsleere Namen (i, n) sind allenfalls für lokale Schleifenzähler
etc. sinnvoll. Hier gibt es allerdings Namenskonventionen (-> später)
– Darüber hinaus gibt es projektbezogene oder firmenübliche
Warum besser englische
Namenskonventionen, z.B. Variablennamen beginnen stets mit
Kleinbuchstaben, Typbezeichner dagegen mit Großbuchstaben.
Namen verwenden?
– Vorsicht mit Abkürzungen: die Verständlichkeit darf nicht leiden.
– Generell gilt: Namen sind entscheidend über die Lesbarkeit von
Programmen und sind somit ein Qualitätsmerkmal der erzeugten
Software!
27.03.2008
C++ Grundlagen
15
Wertspeicher (Variablen und Konstanten)
•
•
•
•
•
•
•
•
werden erzeugt durch Reservierung von Speicherplatz
können einen Wert zugewiesen bekommen (schreiben, initialisieren
bei der Erzeugung), wobei der bisherige Wert verloren geht
können gelesen werden, um ihren Wert zu erfahren ohne diesen zu
ändern.
sind gültig, nachdem sie erzeugt wurden und werden ungültig, wenn
der reservierte Speicherplatz frei gegeben wird. Sie haben also
einen Gültigkeitsbereich.
haben einen Sichtbarkeitsbereich, in dem auf sie zugegriffen
werden kann
sind gekennzeichnet durch Namen zur Identifizierung, Datentyp,
Adresse und Anzahl Bytes im Speicher und ihren aktuellen Wert
Variable sind Wertspeicher , die verschiedene Werte eines Typs
speichern können:
– zu verschiedenen Zeitpunkten können Variablen verschiedene
Werte enthalten;
– alle Werte, die über die Programmlaufzeit hinweg von einer
Variablen eingenommen werden, gehören zum gleichen Typ.
Konstanten sind Wertspeicher, die während der gesamten
Programmlaufzeit denselben Wert enthalten. Im Programmcode
fest eingetragene Werte werden ebenfalls als Konstanten
bezeichnet.
27.03.2008
C++ Grundlagen
FB Informatik
Prof. Dr. R.Nitsch
Name
Typ
Wert
Adresse
Gültigkeitsbereich
Sichtbarkeitsbereich
Merkmale eines
Wertspeichers
(komplett)
16
Wertspeicher in C++
FB Informatik
Prof. Dr. R.Nitsch
• müssen vor erster Benutzung definiert werden!
• dürfen im Programm nur einmal definiert
werden!
• Manchmal müssen Variable "nur" deklariert
werden (Definition beinhaltet die Deklaration)
• Konstanten müssen zusätzlich initialisiert
werden
Beispiel:
Initialisierung
int number1=10;
int number2;
Name (o.Init.)
Typ
Name
Initialisierung
Definition
Weitere Beispiele:
int number1 = 10;
int number2 (20);
char c = 'a';
const float pi(3.14); //read only
const int hundred;
Fehler: muß initialisiert werden
27.03.2008
C++ Grundlagen
Deklaration
Der Compiler
• erfährt neuen Variablennamen
• erfährt den Variablentyp
• reserviert Speicherplatz
• schreibt Anfangswert in Speicher
17
Programm zum Addieren von 2 Ganzzahlen
FB Informatik
Prof. Dr. R.Nitsch
// Addition program (Fig. 1.6: fig01_06.cpp)
#include <iostream>
int main()
// function main begins program execution
{
int number1; // first number to be input by user
Integer Variablen definieren.
int number2; // second number to be input by user
int sum=0;
// variable in which sum will be stored
std::cout << "Enter first integer\n"; // prompt
Benutzer-Eingabe vom StandardeingabeStream lesen mit Stream-Leseoperator.
std::cin >> number1;
std::cout << "Enter second integer\n"; // prompt
std::endl gibt '\n' aus und leert dann
std::cin >> number2;
// read an integer
den Ausgabepuffer.
sum = number1 + number2; // assign result to sum
std::cout << "Sum is " << sum << std::endl; // print sum
return 0;
// indicate that program ended successfully
} // end function main
Enter first integer
45
Enter second integer
72
Sum is 117
27.03.2008
Aneinandergereihte Ausgabe in Stream.
Alternative: Summe in Ausgabe-Anweisung berechnen:
std::cout << "Sum is " << integer1 + integer2 << std::endl;
C++ Grundlagen
18
Speicherkonzept bei Variablen
•
FB Informatik
Prof. Dr. R.Nitsch
Variablen (Wertspeicher)
– sind bestimmten Bereichen im Speicher zugeordnet
– sind u.a. gekennzeichnet durch Namen (name), Datentyp (type) und Wert
(value)
– schreibender Zugriff überschreibt den bisherigen Wert
– Lesender Zugriff verändert den aktuellen Wert nicht
(Namens)Bereichsauswahloperator
std::cin >> number1;
Stream-Ausleseoperator
number1
5
number1
number2
5
number1
number2
sum
5
Standard-Eingabe-Streamobjekt
– Angenommen Benutzer gibt 5 ein
std::cin >> number2;
– Angenommen Benutzer gibt 6 ein
Zuweisungs
operator
Ausdruck
Ausdruck
Ausdruck
sum = number1 + number2;
6
6
011
Jede Schreibweise einer formalen Sprache, die irgendwie einen bestimmten Wert
ausdrücken soll, wird als ein Ausdruck bezeichnet: "Ausdrücke haben einen Wert"
27.03.2008
C++ Grundlagen
19
Programm zum Addieren von 2 Ganzzahlen - Kommentare dazu
FB Informatik
Prof. Dr. R.Nitsch
• Eingabe von Tastatur
– Beispiel: int number1;
std::cin >> number1;
– cin: Standard-Eingabe-Streamobjekt, das Tastatureingaben entgegen nimmt.
– >> Ausleseoperator: Sagt dem Streamobj. was mit den Tastatureingaben
geschehen soll.
• Wartet auf Eingabewert des Benutzers, Enter (Return) Taste schliesst
Eingabe ab!
• Wandelt Eingabewert in den Typ der Variablen (hier: int) um!
– Wechselt in Fehlerzustand und blockiert, wenn Umwandlung
Vor der
5
number1
fehlschlägt!
Zuweisung
6
number2
• Speichert Eingabewert in rechtem Operand (hier: number1)
• Zuweisung (Assignment)
sum
0
– = (Zuweisungsoperator)
Nach der
5
number1
– Binärer Operator (benötigt 2 Operanden)
Zuweisung
6
number2
– Weist den Wert des rechten Ausdrucks (r-value)
11
sum
dem linken Operanden (l-value) zu. Dessen bisheriger
Wirkung der Zuweisung
Wert wird dabei überschrieben.
im Speicher
27.03.2008
C++ Grundlagen
– Beispiel:
20
using Anweisung
FB Informatik
Prof. Dr. R.Nitsch
• using std::cout;
// Teilt dem Compiler mit, daß mit dem cout
// derjenige aus dem Namensbereich std
// gemeint ist
• cout << "Hello…";
// geht jetzt ohne vorangestelltes std::
• using namespace std;
// alle nachfolgenden Bezeichner, die keine
// Bezeichner des Programms sind, beziehen sich
// auf den namespace "std"
• Beispiel folgt!
27.03.2008
C++ Grundlagen
21
Programm zum Addieren von 2 Ganzzahlen
FB Informatik
Prof. Dr. R.Nitsch
// Addition program (Fig. 1.6: fig01_06.cpp)
#include <iostream>
Kann durch Anweisung using namespace std; ersetzt werden!
using std::cout;
Alle nachfolgenden Bezeichner sind aus dem Namensraum std::
using std::cin
using std::endl;
Geht jetzt auch ohne
int main()
// function main begins program execution
vorangestelltes std::
{
int number1; // first number to be input by user
int number2; // second number to be input by user
int sum;
// variable in which sum will be stored
cout << "Enter first integer: "; // prompt
cin >> number1;
cout << "Enter second integer: "; // prompt
cin >> number2;
// read an integer
sum = number1 + number2; // assign result to sum
cout << "Sum is " << sum << endl; // print sum
return 0;
// indicate that program ended successfully
} // end function main
27.03.2008
C++ Grundlagen
22
Entwicklungsumgebung
FB Informatik
Prof. Dr. R.Nitsch
• Zur Zeit am FB Informatik verwendet: Microsoft Visual C++ 2005 Express Edition
• Download von hier: http://www.microsoft.com/express/2005/
• Die Erstellung eines C/C++- Standardprogramms wird hier erklärt:
http://msdn2.microsoft.com/de-de/library/ms235629(VS.80).aspx
• Nach dem Installieren und Starten der Entwicklungsumgebung meldet sie sich so
(oder ähnlich) auf dem Bildschirm:
27.03.2008
C++ Grundlagen
23
Anlegen eines einzelnen Projektes
FB Informatik
Prof. Dr. R.Nitsch
• Zu einem spezifizierten Pfad wird ein Verzeichnis mit dem Projektnamen erzeugt, in dem alle
Projektdateien abgelegt werden. Das erzeugte Projekt soll zunächst leer sein.
Aktionen der
Entwicklungsumgebung:
Im Verzeichnis C:\Temp\Projects
wird ein Projektverzeichis
C:\Temp\Projects\MyFirstProject
Erzeugt und darin die Projektdateien
abgelegt.
Mausklick auf OK …
27.03.2008
C++ Grundlagen
24
Anlegen eines einzelnen Projektes
FB Informatik
Prof. Dr. R.Nitsch
… öffnet dieses Fenster
Mausklick auf „Weiter >“ …
27.03.2008
C++ Grundlagen
25
Anlegen eines einzelnen Projektes
FB Informatik
Prof. Dr. R.Nitsch
… öffnet dieses Fenster
Projektmappe
Mausclick auf Fertigstellen erzeugt das
Projektverzeichnis sowie 5 Projektsteuerdateien.
MS Explorer
27.03.2008
C++ Grundlagen
26
Anlegen eines einzelnen Projektes
FB Informatik
Prof. Dr. R.Nitsch
Die noch fehlende Anwendungsdatei „main.cpp“ wird hinzugefügt durch Rechts-Click auf MyFirstProject im
Arbeitsfenster – Hinzufügen – Neues Element…
Nach Klick auf "Hinzufügen“ wird
die Datei "main.cpp" im
Projektverzeichnis erstellt. In der
Entwicklungsumgebung wird
diese dann im Editorbereich zur
Bearbeitung geöffnet (siehe
nächste Seite)
27.03.2008
C++ Grundlagen
27
Anlegen eines einzelnen Projektes
FB Informatik
Prof. Dr. R.Nitsch
Der Quellcode für eine main-Funktion ohne
Aktion wurde vom Benutzer hier bereits
eingetippt. Die Anwendung ist bereits lauffähig!
Editorbereich
27.03.2008
C++ Grundlagen
28
Anlegen eines einzelnen Projektes
FB Informatik
Prof. Dr. R.Nitsch
Mit „Debuggen / Starten ohne Debuggen“ oder Strg+F5 wird kompiliert und das Projekt gestartet
27.03.2008
C++ Grundlagen
29
Fehlersuche in Programmen
FB Informatik
Prof. Dr. R.Nitsch
• Compilerfehlermeldungen unterstützen die Suche nach Syntaxfehlern
– Wichtig: Immer zuerst die erste Fehlermeldung bearbeiten; danach erneut
compilieren.
• Ein übersetztes und damit lauffähiges Programm ist zwar frei von Syntaxfehlern
aber nicht unbedingt frei von logischen Fehlern ( = Laufzeitfehlern )
• Der Debugger unterstützt den Programmierer beim Aufspüren von logischen
Fehlern.
Debuggermenü
Symbolleiste "Debug"
aktiviert
27.03.2008
C++ Grundlagen
30
Debugger steuern
FB Informatik
Prof. Dr. R.Nitsch
Menüpkt „Debuggen / Debuggen starten“ oder Taste F5 startet den Debugger:
Einzelschritt
Prozedurschritt Ausführen bis Rücksprung
Ausführen bis Cursor
Nächste Anweisung zeigen
Hexadezimale Anzeige der Variablenwerte
Neu starten
Debuggen beenden
Debuggen starten/
Weiter
Symbolleiste "Debug"
Links-Click hier setzt neuen Haltepunkt
2. Links-Click löscht ihn wieder
Überwachung
"Auto"
Weitere
Überwachungsfenster
27.03.2008
C++ Grundlagen
31
Idealisierter Computer
CPU
FB Informatik
Prof. Dr. R.Nitsch
MassStorage
Memory
Interfaces
Bus
Bus
Alle Computer sind ausgestattet mit
•
•
•
•
CPU: Prozessor
Speicher: RAM, ROM, EPROM, Cache
Datenträger: Disketten-, Festplatten-, CD-ROM- und andere Laufwerke
Schnittstellen: Serielle und paralelle Anschlüsse für Maus, Netzwerk,
Tastatur, Bildschirm, usw.
27.03.2008
C++ Grundlagen
32
Operating Systems (OS)
FB Informatik
Prof. Dr. R.Nitsch
• An operating system is software which controls the
general operation of a computer. An operating system
– controls the loading and running of programs
– controls the use of peripherals such as disc drives
and printers
– organises the use of the computer’s memory.
– handles interrupts (signals from devices)
– maintains security (passwords etc)
• Part of the operating system is stored on a ROM
chip. When the computer is switched on, the first
thing that happens is that part of the operating
system is loaded into memory. This process is called
booting up.
• Examples of Operating Systems :
– UNIX, Linux, Windows, MS-DOS
27.03.2008
C++ Grundlagen
33
Evolution von Operating Systems (OS)
FB Informatik
Prof. Dr. R.Nitsch
• Batch Processing OS: Early systems (one task at a
time)
– Programs and data are collected together in a
batch before processing starts.
– Each piece of work for a batch processing system
is called a job. A job usually consists of a program
and the data to be run.
– Jobs are stored in job queues until the computer is
ready to process them.
– No interaction between the user and the computer
while the program is being run.
• Multiprogramming OS:
– Runs several different programs in a computer
apparently at the same time.
– The computer has a number of programs loaded
into memory and the OS switches quickly between
them, processing a little bit of each one in turn.
– The high speed of the processor makes it seem like
more than one program is being run at the same
time. On a PC it is usually called multitasking.
27.03.2008
C++ Grundlagen
34
Evolution von Operating Systems (OS)
FB Informatik
Prof. Dr. R.Nitsch
• Multi-access OS:
– A number of users have terminals
(workstations) which are directly linked
to a central computer via a Teletype
Network (Telnet). Each user can use the
computer interactively.
– Often called a multi-user OS.
27.03.2008
C++ Grundlagen
35
Visual Studio .NET Visual Studio .NET
FB Informatik
Prof. Dr. R.Nitsch
• .NET Framework ist eine neue Computerplattform, die in der hochgradig
verteilten Internetumgebung die Entwicklung von Anwendungen vereinfacht.
.NET Framework wurde im Hinblick auf folgende Zielsetzungen entwickelt:
– Bereitstellung einer konsistenten, objektorientierten Programmierumgebung,
in der Objektcode gespeichert wird. Die Ausführung erfolgt dann entweder
lokal oder über Remotezugriff bzw. lokal mit Verteilung über das Internet.
– Bereitstellung einer Codeausführungsumgebung, mit der Konflikte bei der
Softwareweitergabe und Versionskonflikte auf ein Minimum beschränkt
werden.
– Bereitstellung einer Codeausführungsumgebung, die eine sichere Ausführung
gewährleistet, und zwar auch von Code, der von unbekannten oder nur
halbvertrauenswürdigen Dritten erstellt wurde.
– Bereitstellung einer Codeausführungsumgebung, die nicht mehr die bei
interpretations- oder skriptbasierten Umgebungen auftretenden
Leistungsprobleme aufweist.
– Schaffung einer konsistenten Entwicklungsumgebung für die verschiedensten
Anwendungsarten, wie beispielsweise Windows- und webbasierte
Anwendungen.
– Aufbau der gesamten Kommunikation auf Industriestandards, um die
Integration von Code, der auf .NET Framework basiert, in jeden anderen
Code zu gewährleisten.
27.03.2008
C++ Grundlagen
36