+ All Categories
Home > Documents > Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith...

Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith...

Date post: 05-Oct-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
32
Informatik für IWI Teil 1: Einführung Gerd Küveler
Transcript
Page 1: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI

Teil 1: Einführung

Gerd Küveler

Page 2: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

2 Informatik für IWI

Das EVA-Prinzip

nnnn Beispiel

Kopfrechenaufgabe: addiere 3 zu 2 Untergliederung in 3 Schritte 1. Aufnehmen der Daten mit unseren Sinnen 2. Verarbeiten der Daten im Gehirn 3. Mitteilen des Ergebnisses durch Wort oder Schrift n

Hieraus leitet sich das Hauptprinzip der DV ab:

E V A i e u

n r s

g a g

a r a

b b b

e e e

i

t

u

n

g

Dieses „EVA‘‘-Prinzip liegt allen klassischen technischen DV-Anlagen zugrunde.

Page 3: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 3

Historische Entwicklung der Datenverarbeitung

Die technische Geschichte der Rechenmaschinen weist folgende Meilensteine auf:

− ca. 1000 v. Chr. Abakus (=Rechenbrett, Rechentafel)

l Speicherfunktion l Rechenfunktion: Addition und Subtraktion l noch heute meistbenutzte „Rechenmaschine‘‘ der Welt

− 1623 Schickardsche Rechenmaschine

l Zahnradgetriebe: 10 Räder mit je 10 Zähnen l Stellenwertübertrag wie beim Kilometerzähler l Addition und Subtraktion

− 1642 Pascalsche Rechenmaschine

l Prinzip wie bei Schickard, jedoch mit verbesserter Mechanik

− 1672 Rechenmaschine von Leibniz

l zusätzlich verschiebbare Staffelwalze zum schnellen Addieren und Multiplizieren

− 1833 Differenzenmaschine nach Charles Babbage

l Babbage entwarf das Konzept eines programmierbaren Univer-salrechners mit Zahlenspeicher, Rechenwerk, Leitwerk sowie Ein- und Ausgabeeinheiten. Programmierung mit Lochkarten nach dem Vorbild der automatischen Webstühle nach Jacquard (um 1800).

Babbages „Analytical Engine‘‘ konnte nicht gebaut werden, da bis zu 25 Zahnräder ineinander greifen mussten, was damals mechanisch noch nicht lösbar war. 1991 wurde sie jedoch er-folgreich nachgebaut.

l sehr wichtig für die Theorie des Computers!

Page 4: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

4 Informatik für IWI

− 1886 Papplochkarte nach Hermann Hollerith

l Einsatz zur Auswertung der 11. amerikanischen Volkszählung l Format einer 1-Dollar-Note l Hollerith gründete 1896 die Tabulating Machine Company. Fu-

sionen führten 1924 zur IBM.

− 1941 Z3 nach Konrad Zuse

l erster programmierbarer Computer der Welt l Schaltelemente waren Relais. l 1944 das amerikanische Gegenstück Mark I nach Howard Ai-

kens

Die Rechnergenerationen

Die im zweiten Weltkrieg entwickelten Rechner werden heute der Vorgeneration zuge-

rechnet (bis 1946).

In Deutschland „Z3‘‘ (Konrad Zuse, 1941)

Anzahl der Additionen pro Sekunde: 20

Anzahl der Multiplikationen pro Sekunde: 15

In Amerika „Mark1‘‘ (Howard Aikens, 1944)

Anzahl der Additionen pro Sekunde: 3

Anzahl der Multiplikationen pro Sekunde: 0.16

Page 5: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 5

Generation Hardware-beispiele

Technologien Speicherkapazi-tät/Verarbeitungs-geschwindigkeit

Software: Sprache/ Betriebssystem

1. 1946 bis 1958

ENIAC Z22 (Zuse) UNIVAC IBM 650 SIEMENS 704

Elektronenröhren Trommel- speicher

0.02 MIPS/ 1 - 2 KByte

Maschinen-sprache/ _________

2. 1959 bis 1964

IBM 1400 AEG TR CDC 6600 SIEMENS- 2002

Transistoren Kernspeicher

0.1 MIPS/ 32 KByte

Assembler, FORTRAN/ Stapelverarb. Mehrprogramm-betrieb

3. 1965 bis 1980

IBM /370 DEC PDP-11 SIEMENS- 7000 Cray 1

ICs Halbleiter-speicher

5 MIPS/ 1 - 2 MByte

div. Hoch- sprachen: C, Pascal, .../ Multiuserdialog

4. 1981 bis heute

PC Cray XMP Sperry 1100 IBM 309x DEC VAX

Mikro-prozessoren Optische Speicher

50 MIPS/ 8 - 32 MByte

Sprachen der 4. Generation Code-Parallelisierung

Gegenwart Workstations Hochleistungs-PC

Pentium IV Computer-Netze

1000 MIPS GByte

Netzsoftware, Objektorientierte Sprachen: C++, LabVIEW/

UNIX/Linux

Windows XP

5. Entwicklung der Zukunft

Nanocomputer

Quantencompu-ter

supraleitende Keramiken, Nanotechnik

> 10000 MIPS viele TByte

?

Erläuterungen MIPS = Megainstructions per Second (Millionen Befehle pro Sekunde) KByte = Kilobyte (1024 Byte, siehe Teil III) MByte = Megabyte GByte = Gigabyte Tbyte = Terabyte

Page 6: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

6 Informatik für IWI

Von-Neumannsches-Rechnermodell

Programm Daten

Eingabeeinheiten

Zentraleinheit

Zentralspeicher

Prozessor

Leitwerk

Rechenwerk

Ausgabeeinheiten

Dialog-einheiten

periphereSpeicher

Page 7: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 7

Aufbau eines Mikrocomputers

2.1 Aufbau eines Mikrocomputers

Vom Prinzip her besitzen Mikrocomputer (µC) den folgenden funktionalen Grobaufbau:

Man unterscheidet drei Hauptbaugruppen:

� Prozessor oder Central Processing Unit (CPU)

� Zentralspeicher oder Memory

� Ein/Ausgabe-Einheiten oder Input/Output (I/O) Units

Verbunden sind sie über ein System von uni- und bidirektionalen Leitungen (Datenpfaden), Bus genannt.

Der Takt synchronisiert die internen Abläufe, ein Resetimpuls versetzt den Prozessor in den Grundzustand.

Im Folgenden werden diese drei Komponenten mit ihren typischen Eigenschaften kurz vor-gestellt. Danach wenden wir uns dem INTEL 8086 Prozessor zu, um zu detaillierteren und praktisch verwendbaren Ergebnissen zu kommen.

Mikroprozessor

Ein klassischer Prozessor (CPU) besteht aus:

� Leitwerk (Befehlswerk, Steuerwerk)

� Rechenwerk oder ALU (Arithmetic Logical Unit)

� Registern

Busleitungen

Alle Baugruppen des µCs sind untereinander, vor allem aber mit der CPU, durch Busleitun-gen verbunden (Omnibus = lat. „von allen‘‘, „für alle‘‘).

Jeder Systembus besteht aus n parallelen Leitungen, man unterscheidet:

Adressbus

Steuerbus

Datenbus

Registerblock

Rechenwerk

Mikroprozessor

Reset

Takt Leitwerk

Zentralspeicher: RAM ROM

Außenwelt

Ein- / Ausgabe- einheiten

Page 8: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

8 Informatik für IWI

� Steuerbus

� Adressbus

� Datenbus

Steuerbus

Die einzelnen Leitungen des Steuerbusses sind Träger spezifischer Informationen, z. B. ob gerade ein Lesen oder Schreiben von Daten erfolgen soll. Der Steuerbus ist stärker als Adress- und Datenbus auf den jeweiligen Prozessor zugeschnitten (® s. Kap. 2.2).

Adressbus

Die einzelnen Leitungen werden meist mit A0 ... An-1 bezeichnet. Sie werden in erster Linie zum Ansprechen von Speicherzellen benötigt. Die Anzahl der Leitungen bestimmt den Adressraum des Rechners:

Adressraum = 2n Byte, n = Anzahl der Adressbusleitungen

Beispiele: n = 08 -> Adressraum = 256 Byte n = 16 -> Adressraum = 064 KByte n = 20 -> Adressraum = 001 MByte n = 24 -> Adressraum = 016 MByte n = 32 -> Adressraum = 004 GByte

Datenbus

Der Datenbus ist ein bidirektionaler Bus zum schnellen Datenaustausch zwischen CPU und Zentralspeicher bzw. I/O-Ports. Die einzelnen Leitungen werden mit D0 ... Dn-1 bezeichnet.

Die Datenbusbreite beträgt bei modernen µCs mindestens 8 Bit, damit eine elementare Spei-cherzelle mit nur einem Zugriff ausgelesen bzw. beschrieben werden kann. Die Datenbus-breite ist mehr noch als die des Adressbusses ein Leistungskriterium für Rechner.

Gängige Datenbusbreiten: 8 Bit 16 Bit 32 Bit

Systemplatine

Ein komplettes Mikrocomputersystem ist heute, abgesehen von der Peripherie, auf einer Platine zusammengefasst: der Systemplatine (auch CPU-Platine, Hauptplatine, Mainboard oder Motherboard genannt).

Die Systemplatine enthält Steckplätze für den Prozessor und die Speicherbausteine sowie für Zusatzsatzkarten (Netzwerk, Grafik, Sound, …). An diesen Steckplätzen liegt der Systembus des PC an, so dass Einsteckkarten voll in das System integrierbar sind. Wegen dieses Zugriffs auf den Systembus wird der PC zu einem „offenen System‘‘, d. h. er kann herstellerunabhän-gig erweitert werden. Bei Steckplatzsystemen ist die CPU-Platine selbst eine austauschbare Steckkarte.

Die Steckkarten schaffen die Verbindungen zur Peripherie, z. B. einer Data-I/O-Karte mit einer seriellen und einer parallelen Schnittstelle.

Page 9: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 9

In umfangreichen Katalogen bieten diverse Firmen eine weite Palette von Einsteckkarten, z. B. für Steuerungs- und Messwerterfassungs-Zwecke, an.

Kernstück der Systemplatine der Chip-Satz. Er steuert den Datenaustausch mit den Main-bordkomponenten wie Prozessor und Hauptspeicher sowie den peripheren Geräten. Der PC-Chip-Satz besitzt meist aus zwei Haupt-Komponenten, der Northbridge und der Southbridge. In der Regel ist die Northbridge zuständig für das Speicherinterface (RAM und Cache), den Front-side-Bus und die Grafikschnittstelle (AGP oder PCIe 16x). Die Northbridge wird auch als Memory Controller Hub bezeichnet. Die Southbridge (Input/Output Controller Hub) verwaltet diverse Schnittstellen, deren wichtigste der Zeichnung zu entnehmen sind. Das Wort „Legacy‘‘ kann mit „Altlasten‘‘ übersetzt werden.

Page 10: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

10 Informatik für IWI

Hard- und Softwareschichten eines Mikrocomputers

A N W E N D U N G S S O F T W A R E

Access Word Excel Power Point Eigene Programme ...

B E T R I E B S S Y S T E M + SYSTEMSOFTWARE

DOS Compiler UNIX Diverse Tools (Werkzeuge) Linux OS/2 Windows 98 Windows NT Windows 2000 Windows XP ...

H A R D W A R E

Prozessor RAM-Speicherbausteine ROM-Speicherbaustein Controller-Bausteine Festplatte Memory-Stick Bildschirm Tastatur Netzwerkkarte Maus ...

Page 11: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 11

Aufgaben

1. Ordnen Sie die Bauteile eines modernen PC den Komponenten des von-Neumannschen-Rechnermodells zu.

PC Bauteil von-Neumann-Modellkomponente

Bildschirm

Tastatur

Mutterplatine

Disketten-Laufwerk

Mikroprozessor

RAM-Bausteine

Maus

Festplatte

Scanner

Modem

Soundkarte

Joystick

ROM-Speicherbaustein

Drucker

Netzwerkkarte

CD-ROM-Laufwerk

2. Welcher seiner historischen Vorgänger beeinflusste John von Neumann offensichtlich beim Entwurf seines Rechnermodells ?

3. Beschreiben Sie, welche Schritte bei der Abarbeitung eines Subtraktionsbefehls notwen-dig sind.

Page 12: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

12 Informatik für IWI

Betriebssysteme

Singletasking Kooperatives Multitasking Preemtive Multitasking

MS-DOS Windows 3.1 Windows 98

div. µC-Monitore Windows 3.11 Windows NT

Windows XP

Windows Vista

Mac OS X Leopard

UNIX

Linux

Anwendungen

Benutzeroberfläche

DOS

BIOS

Hardware

Page 13: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 13

Beispiele für Kommandos unter DOS und UNIX

DOS UNIX Bedeutung

dir ls ---l Inhaltsangabe des aktuel-len Verzeichnis

copy dat1 dat2 cp dat1 dat2 Kopiere Quelldatei dat1 auf Zieldatei dat2

type a.txt cat a.txt Ausgabe der Datei a.txt auf den Bildschirm

Shellskripts = „Superkommandos‘‘

n Beispiel : # Diese UNIX Shell-Prozedur laeuft so lange, bis ein existierender Dateiname # ueber die Tastatur eingegeben wird until test ---f "$datei_name" do echo "Eingabe: \c" read datei_name done echo "Datei $datei_name existiert" n

Page 14: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

14 Informatik für IWI

Vor- und Nachteile von Windows-Oberflächen

Vorteile − einheitliche Benutzerschnittstelle für alle Programme

− standardisierte Zwischenablage (clipboard) für den Datenaustausch zwischen verschiedenen Programmen

Nachteile − starke Inanspruchnahme von Prozessorleistung, Haupt- und Plattenspeicher

− keine Shellprozeduren zur Automatisierung wiederkeh-render komplizierter Abläufe

Windows XP ist das leistungsfähigere Profi-System:

• volle 32-Bit-Architektur, damit schneller als Windows 98

• Mehrbenutzerverwaltung durch Administrator, der die Benutzerrechte verwaltet

• unterstützt Multiprocessing (Systeme mit mehreren Prozessoren)

• getrennte Speicherbereiche für BS und Anwendungsprogramme; Speicherschutz-verletzungen werden abgefangen

• bessere Schichtentrennung als bei Windows 98, daher im Prinzip Prozessor-unabhängig

• kein direkter Zugriff von Anwendungsprogrammen auf die Hardware möglich (s.o.)

• in Workstation- und Server-Version erhältlich, damit zur Verwaltung großer Netzwerke gut geeignet.

Die Adressierung beim 80(x)86

Dem 8086/88 stand zur vollständigen Adressbildung nur der Real-Mode zur Verfügung. Ab 80826 sind weitere Prozessor-Modi verfügbar.

Real Mode

Im so genannten Real-Modus arbeiten die Prozessoren mit einer 20-Bit-Adresse. Diesen Modus beherrschen alle Prozessoren der INTEL-Familie. Unter dem Betriebssystem DOS wird auch bei den „höheren‘‘ Prozessoren der Real-Modus eingesetzt. In diesem Modus befindet sich jeder Prozessor (auch ein Pentium!) nach Einschalten des Rechners oder nach einem Reset. Unter modernen Betriebssystemen wie Windows und Linux ist der Real Mode nur noch das Sprungbrett zum Protected Mode.

Page 15: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 15

Protected Mode

Der Protected Mode existiert seit dem 80286 und unterstützt modernere Betriebssysteme wie Windows, UNIX und Linux. Damit werden wichtige Eigenschaften wie Multitasking, Multi-userbetrieb, Multihreading, Speicher- und I/O-Schutz sowie Privilegebenen ermöglicht.

Die Speicherstrukturen für die Adressierung unterscheiden sich völlig von denen des Real Modes. Zwar gibt es weiterhin Segmente, jedoch sind die Mechanismen andere. Segmente tragen Attribute wie READonly, Write + READ und EXEConly. Eine Descriptortabelle im Speicher verwaltet die Segmente. Jeder Descriptor enthält die notwendigen Informationen wie Startadresse, Größe und diverse Attribute. Im DS-Register steht ein Selector, der auf einen Descriptor in der Descriptortabelle zeigt.

Jedes Programm besitzt einen bestimmten Privileglevel. Zugriffe auf eine höhere Privileg-ebene sind ausgeschlossen. Die Privilegebenen werden häufig als vier konzentrische Kreise dargestellt. Die innere Ebene 0 ist dem Betriebssystem vorbehalten, die Ebenen 1 und 2 den Hardwaretreibern und Ebene 3 den Anwenderprogrammen. Das Überschreiten eines definier-ten Speicherbereichs erzeugt einen Interrupt, der zu einer Allgemeinen Schutzverletzung führt. Das Betriebssystem behebt entweder den Fehler oder beendet das Programm.

Alle „alten‘‘ Maschinenbefehle bleiben gültig, zusätzlich kann man im Protected Mode auch auf die erweiterten 32-Bit-Register zugreifen. Einige weitere Befehle sind hinzugekommen, die teilweise nur den Wechsel vom Real Mode zu Protected Mode ermöglichen.

Virtual Mode

Der Virtual- oder V86-Mode ist eine Sonderform des Protected Mode. Hier wird der vorhan-dene Speicher so eingeteilt, dass dem darin laufenden Programm „vorgetäuscht‘‘ wird, es befände sich auf einem 8086. Somit kann das Programm maximal 1 MByte Speicher anspre-chen. Der Virtual Mode erlaubte es z. B., auch 16-Bit-(DOS)-Anwendungen in eine Multi-tasking-Umgebung unter Windows einzubinden. Parallel zum Betrieb im Virtual Mode kön-nen auch Programme im Protected Mode laufen. Wir nutzen diesen Modus für unsere Ein-führung in die Maschinen- bzw. Assemblersprache (® Kap. 3).

System Management Mode (SMM)

Dieser Stromsparmodus wurde mit dem Pentium eingeführt. In ihn wird gewechselt, wenn der Prozessor ein bestimmtes Signal über eine seiner Steuer-Leitungen erhält, es gibt also keinen direkten Befehl für die Umschaltung. Dafür enthält der Pentium-Befehlsvorrat einen Befehl, der den Prozessor aus seinem Schlafmodus erweckt.

Page 16: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

16 Informatik für IWI

Dateien und Dateiensysteme

.

Unter einer Datei versteht man eine Menge logisch zusammengehörender Daten

Absolute Pfadnamen

erstrecken sich von der Wurzel bis zu der gewünschten Datei

Relative Pfadnamen erstrecken sich relativ zum Arbeits-verzeichnis bis zu der gewünschten Datei

<root>

<FHW>

<WB>

<MB>

(MATH.DAT) (CHEM.DAT) (EDV.DAT)

<PT> <ET>

<RH> <GH>

< > = directory (Verzeichnis) ( ) = normale Datei

Der absolute Pfadname der Datei "edv.dat" lautet:

Page 17: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 17

\fhw\rh\et\edv.dat (DOS oder Windows)

bzw. /fhw/rh/et/edv.dat (UNIX)

Regel:

Absolute Pfadnamen beginnen immer mit "\" ( Windows) oder "/" (UNIX) dem Symbol für das Wurzelverzeichnis.

et\edv.dat oder bei UNIX et/edv.dat

Page 18: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

18 Informatik für IWI

Algorithmen und Struktogramme

Neben der technischen Seite weist die EDV eine logisch-mathematische auf. Bei ihr geht es um die Lösung konkreter Probleme mit Rechnern.

Algorithmen

Möchte man ein Problem mit Hilfe eines Rechners lösen, ist zu prüfen, ob sich die Aufgabe in Algorithmen (Rechenregeln) formulieren lässt. Ein Algorithmus besteht aus elementaren Einzelschritten, diese müssen

− in einer bestimmten Reihenfolge ausgeführt werden,

− zahlenmäßig begrenzt und in endlicher Zeit abgearbeitet sein.

Der Algorithmus selbst muss allgemeingültig und maschinell lösbar sein. Ist dies der Fall, kann man die Automatisierung des Problems in Angriff nehmen.

n Beispiel

In einen Rechner soll eine unbestimmte Anzahl von ganzen Zahlen eingegeben werden. Die Aufgabe besteht darin, jeweils die Anzahl der positiven und der negativen Zahlen zu ermitteln und auszugeben. Die Verarbeitung soll enden, wenn eine „0‘‘ eingegeben wird.

Wir formulieren den Algorithmus zunächst umgangssprachlich:

Diese Lösung erfüllt unsere Forderungen an einen Algorithmus (s.o.). Der Algorithmus besteht aus Befehlsfolgen (1.,2. und 7.,8.), Auswahlen (4. und 5.) sowie einer Schleife (3. bis 6.). Das sind die drei Grundstrukturen, aus denen sich jeder Algorithmus maximal zu-sammensetzen kann. n

1. Setze den Zähler der positiven Zahlen auf Null. 2. Setze den Zähler der negativen Zahlen auf Null. 3. Lies eine ganze Zahl ein. 4. Falls die Zahl kleiner als Null ist, erhöhe den Zähler der negativen Zahlen. 5. Falls die Zahl größer als Null ist, erhöhe den Zähler der positiven Zahlen. 6. Falls die Zahl nicht „0‘‘ ist, gehe zurück nach 3. 7. Gib die Anzahl der positiven Zahlen aus. 8. Gib die Anzahl der negativen Zahlen aus.

Page 19: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 19

Struktogramme

Eine umgangssprachliche Formulierung, wie im obigen Beispiel, kann bei derart überschau-baren Problemen durchaus sinnvoll sein, bei komplexeren Algorithmen ist sie zu unüber-sichtlich. Deshalb bedient man sich in der Informatik häufig einer formalisierten Darstel-lungsform, die man „Struktogramm‘‘ nennt. Ein Struktogramm besteht aus einzelnen Struk-turblöcken, die sich bausteinartig zu dem kompletten Struktogramm zusammensetzen.

Es gelten folgende „Grundgesetze‘‘:

Nachstehende Regeln sind nicht zwingend, sie sollten jedoch ebenfalls befolgt werden:

1. Jeder Strukturblock ist rechteckig. 2. Jeder Block hat nur einen Eingang (oben) und einen Ausgang (unten). 3. Blöcke stehen entweder untereinander oder sie sind vollständig ineinander enthal-

ten (aus 1. und 3. -> das gesamte Struktogramm ist ebenfalls rechteckig). 4. Strukturblöcke sind knapp, aber verständlich zu kommentieren.

S T R U K T U R B L O C K

eintretende Kante

austretende Kante

5. Kein Struktogramm sollte länger sein als eine Seite, daraus folgt: 6. Teilprobleme sollten als separate Modulblöcke ausgegliedert werden.

Page 20: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

20 Informatik für IWI

Wir unterscheiden folgende Grundtypen von Strukturblöcken, mit denen sich jeder Algo-rithmus formulieren lässt:

Ein Modulblock besteht wiederum aus Sequenzen, Selektionen und Iterationen.

Die Selektion gibt es in zwei Varianten, von denen die Alternative die elementare ist. Ein eigener Strukturblock existiert jedoch auch für die Fallfolge oder Mehrfachauswahl. Diese ließe sich aber auch durch ineinander geschachtelte Alternativblöcke ersetzen.

Sequenz (Folge)

Beschreibung der Programmschritte

In diesem Block steht eine Folge der Programmschritte, die ohne „wenn und aber‘‘ in dieser Reihenfolge auszuführen sind.

n Beispiel

Setze den Zähler der positiven Zahlen auf Null.

Setze den Zähler der negativen Zahlen auf Null.

n

1. Sequenzblock = Folge (Sequenz) von unbedingten Anweisungen

(mind. eine Anweisung) 2. Selektionsblock = alternative Ausführung von Anweisungen

(Auswahl) 3. Iterationsblock = wiederholte Ausführung von Anweisungen

(Schleife) 4. Modulblock = black box für separat erläutertes Teilproblem

(Modul)

Page 21: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 21

Selektion (Verzweigungen)

a) Alternative

Es handelt sich um eine klare „entweder-oder“ -Entscheidung. Ist die Bedingung wahr, wird der linke Block durchlaufen, ist sie unwahr, der rechte.

Das folgende Beispiel prüft, ob „Zahl‘‘ größer als Null ist. Ist diese Bedingung im aktuellen Fall wahr, wird „Zähler‘‘ um eins erhöht.

n Beispiel

Wie dieses Beispiel zeigt, kann einer der beiden Alternativblöcke durchaus leer sein. Das bedeutet, dass in diesem Fall nichts geschieht. n

b) Fallfolge (Mehrfachauswahl)

Bedingung

1. Alternative 2. Alternative

Zahl < Null

Zähler = Zähler+1

ja nein

M e h r f a c h a u s w a h l m i t F e h l e r f a l l

F a l l 1 F a l l 2 F a l l 3 S o n s t f a l l

Page 22: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

22 Informatik für IWI

Fallfolgen eröffnen mehrere Alternativen. Sie eignen sich besonders gut zur Darstellung von Auswahlmenüs. Stets sollte man einen Sonstfall vorsehen, der immer dann greift, wenn keiner der gewünschten Fälle zutrifft. Der Sonstfall, manchmal auch als Fehlerfall bezeich-net, fängt alle „unerlaubten‘‘ Fälle, z. B. eine falsche Eingabe, ab.

Als Beispiel sollen mögliche Operationen auf eine Datenbank dienen. Datenbanken bestehen aus einer Vielzahl von Sätzen, die bestimmte Eigenschaften von Personen oder Dingen be-schreiben. Ein Satz aus einer Studentendatenbank enthält mit Sicherheit Elemente wie Mat-rikelnummer, Name und Adresse eines Studenten. Der Benutzer der Datenbank möchte Sätze lesen, ändern, hinzufügen und löschen. Das sind die möglichen Operationen.

n Beispiel (Datenbankoperation)

n

Fallfolgen sind, wie schon gesagt, erweiterte Alternativen. Jede Fallfolge lässt sich, wenn auch etwas umständlicher, mit ineinander geschachtelten Selektionen darstellen.

Iterationsblock (Schleife)

Bei den Iterationen unterscheiden wir wiederum zwei Typen:

− Schleife mit Kopfprüfung (abweisende Schleife)

− Schleife mit Fußprüfung (nicht-abweisende Schleife)

a) Schleife mit Kopfprüfung

Benutzereingabe

Satz lesen Satz ändern Satz löschen Satz anfügenAusgabe:´unerlaubteEingabe´

Sonstfall´R´ ´C´ ´D´ ´A´

Bedingung

Schleifenkernoder

Schleifenkörper

Page 23: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 23

Diese Schleife wird ausgeführt, solange die Bedingung wahr ist. Ist diese zu keinem Zeit-punkt wahr, wird die Schleife niemals durchlaufen.

In unserem Beispiel wird ein Zähler solange erhöht, wie er kleiner als ein vorgegebener Endwert ist. Der Schleifenkörper besteht aus zwei Schritten: Summe um Zähler erhöhen und Zähler um eins erhöhen. Der Schleifenkörper ist in diesem Beispiel eine Sequenz.

n Beispiel

n

b) Schleife mit Fußprüfung

Auch diese Schleife wird ausgeführt, solange die Bedingung wahr ist. Da die Bedingung jedoch erst am Schluss eines Schleifendurchlaufs geprüft wird, kommt es in jedem Fall zu mindestens einem Durchlauf.

n Beispiel

n

Schleifen mit Fußprüfung benutzt man gerne, um Eingabefehler zu verhindern. Der Benutzer wird solange zur erneuten Eingabe gezwungen, bis er eine gültige Eingabe macht.

solange Zähler < Endwert

Summe = Summe + Zähler

Zähler = Zähler + 1

Bedingung

Schleifenkernoder

Schleifenkörper

solange Eingabe falsch

Eingabe

Page 24: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

24 Informatik für IWI

Modulblock

Man kann sich leicht vorstellen, dass Struktogramme, die länger sind als eine Seite, schnell unübersichtlich werden. Wir leiten daraus die Forderung ab: jedes Struktogramm sollte auf eine Seite passen. Das scheint schwieriger als gesagt, wenn man an einen komplexen, um-fangreichen Algorithmus denkt. Den Ausweg bieten Modulblöcke. Teilalgorithmen werden einfach als „Blackbox‘‘ ausgegliedert und dann im Detail auf einer gesonderten Seite erläu-tert.

Im Beispiel wird ein Sortiervorgang als „Blackbox‘‘ ausgegliedert. An anderer Stelle ist hierfür ein eigenes Struktogramm zu erstellen.

n Beispiel

Ein Struktogramm setzt sich nun aus mehreren Strukturblöcken zusammen. Das Gesamt-Struktogramm bleibt dabei stets rechteckig, d.h. verändert seine Breite während des Pro-gramms nicht. Die beiden senkrechten Begrenzungen bilden „die Schienen‘‘ für die Struk-turblöcke.

Wir erinnern uns, dass die Strukturblöcke entweder aufeinander folgen oder vollständig geschachtelt sind. Zunächst ein kleines Beispiel:

Modulfunktion

Modulname

Daten in absteigenderReihenfolge sortieren

Sort

Page 25: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 25

n Beispiel

Dieser Algorithmus berechnet die Summe der ganzen Zahlen von 0 bis zu einer eingege-benen Zahl N. N und die Summe werden anschließend ausgegeben. Die Kommentierung der einzelnen Strukturblöcke ist recht knapp gehalten. Wir benutzen dabei eine Sprache, die bereits an Programmiersprachen angelehnt ist. Dies ist jedoch nicht zwingend, viel-mehr ist die Art der Kommentierung freigestellt. Programmiersprachen verwenden häu-fig für die benötigten Größen symbolische Namen, Variablen genannt. Im obigen Bei-spiel vergaben wir die Variablennamen „Summe‘‘, „Lauf‘‘ und „N‘‘. „=‘‘ dient als Sym-bol für eine Zuweisung. So bedeutet beispielsweise:

Lauf = 0 -> die Variable „Lauf‘‘ erhält den Wert 0 zugewie-sen

Summe = Summe + Lauf -> die Variable „Summe‘‘ erhält die Summe der Variablen „Summe‘‘ (alter Wert) und„Lauf‘‘ zugewiesen

Lauf = Lauf + 1 -> der augenblickliche Wert von „Lauf‘‘ wird um 1 erhöht. n

Eingabe N

Summe = 0

Lauf = 0

solange Lauf <= N

Summe = Summe + Lauf

Lauf = Lauf + 1

Ausgabe N, Summe

Page 26: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

26 Informatik für IWI

Wir formulieren nun unseren anfänglichen Beispiel-Algorithmus (Anzahl der positiven und negativen Zahlen) als Struktogramm:

Struktogramme sind unabhängig von einer bestimmten Programmiersprache, in der das Problem evtl. gelöst werden soll. Struktogramme dienen als Planungsinstrument (allgemeine Formulierung eines Algorithmus) und als sprachunabhängiges Dokumentationsmittel.

zpos = 0zneg = 0

Ausgabe zposAusgabe zneg

zneg = zneg + 1

zpos = zpos + 1

lies die Zahl x

solange x ungleich 0

ja

ja nein

nein

x < 0

x > 0

Page 27: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 27

Aufgaben

1. Analysieren Sie das Struktogramm von der vorherigen Seite.

a) Wieviele Elementarblöcke enthält es?

b) Benennen Sie die einzelnen Blöcke nach ihrer Art.

2. Formulieren Sie ein Struktogramm zur Berechnung der Fakultät einer positiven ganzen Zahl und führen Sie einen „Schreibtischtest‘‘ mit verschiedenen Eingabewerten durch.

Fakultät N = N * (N-1) * ... * 1; Def.: Fakultät 0 = 1.

3. Welche Aufgabe löst der folgende, als Struktogramm formulierte Algorithmus?

Hinweis: Führen Sie einen „Schreibtischtest‘‘ durch, indem Sie das Struktogramm mit unterschiedlichen Wertepaaren von x und y „durchlaufen‘‘. Notieren Sie die schrittweisen Wertänderungen von x und y. „ >=‘‘ bedeutet „größer gleich‘‘.

Eingabe: x Eingabe: y

x < 1 oder y < 1

ja nein

solange x ungleich y

x > y

ja nein

x = x - y y = y - x

Ausgabe:

"falsche

Eingabe"

Ausgabe: x

Page 28: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

28 Informatik für IWI

Maschinen- und Hochsprachen

Die Rechner der ersten Generation mussten mühsam in ihrer Maschinensprache program-miert werden, die aus einem reinen Binärcode (Folge von „0‘‘ und „1‘‘) besteht. Die As-semblersprache brachte die erste Erleichterung für den Programmierer. Maschinenbefehle konnten nun in halbwegs lesbarer Form programmiert werden, statt beispielsweise

Maschinenbefehl: Assemblerbefehl: Bedeutung:

1000010100110001 Add R3,R1 Addiere Reg.1 zu Reg. 3

Eine Assemblersprache verwendet also gedächtnisstützende Kürzel (mnemonics) statt Binär-ziffernfolgen.

Da jeder Rechner --- auch heute noch --- ausschließlich seine eigene Maschinensprache ver-steht, muss ein Assemblerprogramm zunächst, vor seiner Ausführung, in die Maschinenspra-che übersetzt werden. Dies besorgt ein (käufliches) Programm, das verwirrenderweise eben-falls „Assembler‘‘ heißt. Aus einem Assemblerbefehl wird ein Maschinenbefehl.

Maschinensprache und Assemblersprache gehören zu den maschinenorientierten Program-miersprachen, denn sie sind auf einen bestimmten Prozessortyp abgestimmt. Wie die folgen-de Übersicht zeigt, gibt es daneben die heute wesentlich häufiger eingesetzten problemorien-tierten Programmiersprachen:

Assemblerprogramm

Assembler

1 : 1Übersetzung

Maschinenprogramm

Page 29: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 29

Problemorientierte Sprachen sind unabhängig von einem bestimmten Rechnertyp. Es besteht auch keine 1:1 Zuordnung zwischen einem Befehl in einer „höheren‘‘ Sprache und einem Maschinenbefehl. Der Begriff „höher‘‘ bezieht sich auf das Abstraktionsniveau, die Sprache „schwebt‘‘ hoch über der Hardware. Man kann durchaus erfolgreich FORTRAN- oder PASCAL-Programme schreiben, ohne viel über den Aufbau und die Arbeitsweise von Rech-nern zu wissen. Selbstverständlich müssen auch problemorientierte Programme vor ihrer Ausführung in die jeweilige Maschinensprache ihres Zielrechners übersetzt werden. Dies übernimmt ein käufliches Softwareprodukt, der Compiler. Aus einem Hochsprachenbefehl entstehen N Maschinenbefehle, wobei N meistens größer als 1 ist.

Der Vorgang des Übersetzens heißt „compilieren‘‘.

Die wichtigsten problemorientierten Sprachen im Ingenieurbereich sind heute FORTRAN, PASCAL und C. FORTRAN ist die älteste Hochsprache überhaupt (seit 1954) und für Prob-leme der numerischen Mathematik nach wie vor unschlagbar. PASCAL (seit 1968) ist eine hervorragend strukturierte Sprache. Sie eignet sich wegen ihrer Modellhaftigkeit v.a. für die

maschinen-orientierteSprachen

problem-orientierteSprachen

Maschinen-sprachen

Assembler-sprachen

Programmier-sprachen

Spezial-sprachen

Universal-sprachen

FORTRANPASCAL

C

LispSQL

Prolog..

.

.

Quellprogramm:Programm in einerproblemorientiertenProgrammiersprache

Compiler

1 : N

Übersetzung

Maschinenprogramm

Page 30: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

30 Informatik für IWI

Ausbildung. Auf PC ist sie mit ihrem „Dialekt‘‘ TURBO PASCAL weit verbreitet und sehr attraktiv, weil sie die Möglichkeiten des PC recht einfach erschließt. C ist eine echte Univer-salsprache. Bei hardwarenahen Problemen macht sie sogar der Assemblersprache Konkur-renz, in der Systemprogrammierung ist C die Nummer eins, und auch normale Anwender-probleme lassen sich sehr gut lösen. C hat die höchste Verfügbarkeit (kein Computer ohne C-Compiler), C-Programme sind sehr leicht von einer Hardware auf eine andere übertragbar (portabel).

Die drei genannten Sprachen gehören der 3. Sprachgeneration an, inzwischen gibt es auch Sprachen der 4. und 5. Generation mit noch höherem Abstraktionsniveau. Diese Sprachen sind oftmals objektorientiert (strenge Modularität, Einheit von Daten und Programmen). Anders als bei FORTRAN-, PASCAL oder C-Programmen lassen sich aus der Befehlsrei-henfolge nicht immer Rückschlüsse auf die Verarbeitungsreihenfolge im Rechner ziehen. Der Algorithmus (das „wie‘‘) tritt gegenüber dem Problem (das „was‘‘) immer mehr in den Hintergrund. Man spricht deshalb auch von nicht-prozeduralen Sprachen.

Die Sprachen der 4. Generation sind allerdings oftmals weniger universell, es sind Spezial-sprachen für Spezialprobleme (z.B. PROLOG für Probleme der künstlichen Intelligenz und SQL als Abfragesprache für Datenbanksysteme). So finden nach wie vor alle Sprachgenera-tionen ihre Anwendungen, abhängig vom Problem.

C++ als Erweiterung von C kann bereits als Sprache der 5. Generation (objektorientiert) betrachtet werden.

Die Hochsprachen-Programmentwicklung

Auch bei der Softwareentwicklung spielt das EVA-Prinzip eine wichtige Rolle. Mit Befehlen wie READ oder WRITE werden Daten eingelesen und ausgegeben. Eingabemedium ist meist die Tastatur, während Bildschirm und Drucker zu den bevorzugten Ausgabemedien zählen. Zwischendurch wird gerechnet oder allgemein verarbeitet. Das EVA-Prinzip gibt jedoch keine feste Reihenfolge vor. Vor allem bei großen Programmen wechseln sich E-,V- und A-Schritte in bunter Vielfalt ab.

Eine typische Softwareentwicklung erfolgt in Stufen:

Stufe Tätigkeit Werkzeug oder Methode

0 Programmplanung Struktogramm

1 Quellprogramm eingeben Editor

2 Programm übersetzen Compiler

3 Evtl. Fehler beseitigen Schreibtischtest, Debugger

4 Programm „linken‘‘ Linker

5 Programm starten Kommandointerpreter

Page 31: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

Informatik für IWI 31

Unter einem Quellprogramm verstehen wir den Programmtext in lesbarer Form (s. folgendes Kapitel). Der Editor ist ein Programm, das die Tastatureingabe von Texten auf komfortable Weise ermöglicht.

Das Quellprogramm muss streng den Regeln der gewählten Programmiersprache, den Syn-taxregeln, entsprechen. Diese zu erlernen, macht den Schwerpunkt eines Programmierkurses aus. Teil II ist eine solche Einführung in die Sprache C / C++.

Durch den Linker in Stufe 4 werden evtl. mehrere vorhandene übersetzte Programmodule oder Bibliotheksroutinen zu einem lauffähigen Gesamtprogramm zusammengebunden. Jeder Compiler enthält Bibliotheken für häufig auftretende Standardfunktionen.

Generell sind problemorientierte Sprachen alle nach einem ähnlichen Muster aufgebaut. Typischerweise lässt sich ein Programm in drei Teile untergliedern:

1. Überschrift 2. Vereinbarungsteil 3. Anweisungsteil

Die Überschrift besteht nur aus einer Zeile, die je nach Sprache unterschiedlich aussieht.

Es folgt der Vereinbarungsteil; dort werden die im Programm benötigten Variablen und Konstanten vereinbart (deklariert), d.h. es wird Platz im Zentralspeicher des Rechners reser-viert. Speicherplätze werden, wie bereits weiter oben erläutert, über ihre numerische Adresse angesprochen. Hochsprachen arbeiten jedoch mit symbolischen Adressen, deren Namen im Rahmen gewisser Regeln vom Programmierer frei wählbar sind. Dies erleichtert die Arbeit sehr, weil sich der Programmierer über die exakte Länge und Verfügbarkeit von Speicher-plätzen keine Gedanken machen muss. Variablen und Konstanten können im Programm Werte zugewiesen werden, Konstanten nur einmal zu Beginn des Programms, Variablen beliebig oft.

Der Anweisungsteil entspricht dem in die jeweilige Programmiersprache umgesetzten Struk-togramm. Der Anweisungsteil besteht aus den einzelnen Befehlen, die den strengen Syntax-regeln der jeweiligen Sprache unterliegen.

Syntaxfehler entdeckt der Compiler, den man nach Eingabe des Quelltextes aufruft. Ist das Quellprogramm syntaktisch fehlerfrei, übersetzt es der Compiler in die Maschinensprache des verwendeten Rechners. Dennoch ist es möglich, dass unser Programm fehlerhaft ist. Es produziert u.U. falsche Ergebnisse. Der Grund: es enthält logische Fehler (Semantikfehler).

Die Fehlersuche nennt man debugging (= Entwanzung). Sie erfolgt entweder durch aufmerk-sames Studium des Quelltextes (evtl. „Schreibtischtest‘‘) oder mit Hilfe eines Debuggers, einer speziellen Software zur Fehlersuche. Entsprechend der Erkenntnisse wird nun der Quelltext verbessert. „Läuft‘‘ das Programm zufriedenstellend, ist der Entwicklungskreislauf abgeschlossen.

Übrigens startet man ein Programm in der Regel --- bei einfachen Zeilen-Benutzeroberflächen --- durch Eingabe des Programmnamens. Diese Eingabe wird vom

Page 32: Informatik für IWI - HSRM · 4 Informatik für IWI − 1886 Papplochkarte nach Hermann Hollerith Einsatz zur Auswertung der 11. amerikanischen Volkszählung Format einer 1-Dollar-Note

32 Informatik für IWI

Kommandointerpreter des Betriebssystems ausgewertet. Moderne Compiler bieten meist eine integrierte Arbeitsumgebung, aus der heraus man auch Programme starten kann.

Beispiel für ein C++-Programm:

// Overhead

# include <cstdin>

# include <iostream>

// Ueberschrift

int main(void)

{

// Vereinbarungsteil

int zahl1, zahl2, summe;

// Anweisungsteil

cout >> ‘‘1. Zahl >‘‘;

cin << zahl1;

cout >> ‘‘2. Zahl >‘‘;

cin << zahl2;

summe = zahl1 + zahl2;

cout << ‘‘Die Summe lautet ‘‘ << summe << endl;

return 0;

}


Recommended