L1 Programmiersprachen



Ähnliche Dokumente
Pseudo-Programmiersprache

L1 Programmiersprachen

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Einführung in die C++ Programmierung für Ingenieure

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Einführung in die Programmierung

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 -

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Grundlagen der Programmentwicklung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

12. Rekursion Grundlagen der Programmierung 1 (Java)

Die Programmiersprache C

Übungen zur Vorlesung Wissenschaftliches Rechnen I

3. Methodik der Programmerstellung

Kapitel 1: Einführung

Definitionen/Vorarbeit zum Thema Java

Java I Vorlesung 1 Einführung in Java

Die Programmiersprache C

Objektorientierte Programmierung OOP Programmieren mit Java

Inhalt. Einführung in die Strukturierte Programmierung 15

Einführung in die Programmierung mit VBA

Einführung in die Programmierung Wintersemester 2016/17

Grundstruktur eines C-Programms

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Unterlagen. CPP-Uebungen-08/

Softwareentwicklung 1 UE-Stunde 01 - Algorithmen

Javakurs für Anfänger

Grundlagen der Fortran Sprache

Einführung in die Programmierung

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Einführung in die Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

4.Grundsätzliche Programmentwicklungsmethoden

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Softwareentwicklung 1

Programmiersprache. Emily & rica

Algorithmen und Datenstrukturen

Effizienz von Algorithmen

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

1.3 Geschichte der Programmiersprachen

Variablen, Konstanten und Datentypen

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

Hello World! Eine Einführung in das Programmieren Variablen

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Wie entsteht ein Computerprogramm?

Programme erstellen in Java

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

ALGOL 68 im Aspekt einer modernen Programmiersprache???

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Projekt 3 Variablen und Operatoren

Übungsblatt 1. Java Vorkurs (WS 2017)

Programmiersprachen Einführung in C

2. Programmierung in C

Programmieren für Physiker: C++

Vorlesung 2: Programmieren mit C

Kap 1. Programmentwicklung

Propädeutikum Programmiersprache C und Mathematik 2014

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Programmieren in Haskell Einführung

Java I Vorlesung Imperatives Programmieren

Die Programmiersprache C Eine Einführung

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

Klausur in Programmieren

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Algorithmus: Kochrezept

2. Programmierung in C

Einführung in die Informatik I (autip)

1. Vom Sourcecode zum Programm

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Abschnitt 2: Daten und Algorithmen

2. Programmierung in C

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Transkript:

C++ Programmierung C++ ist eine moderne Programmiersprache, an deren Beispiel sich grundsätzliche Eigenschaften und Vorgehensweisen anderer Programmiersprachen erlernen lassen. Die Codierung der Algorithmen kann daher sinnvoll in C++ erfolgen. Das Hauptaugenmerk soll aber hauptsächlich auf der Herleitung der Algorithmen liegen, nicht auf der Verwendung einer speziellen Programmiersprache. 1.1 Wie erstelle ich eigene Software? Um spezielle Problemlösungen zu erstellen bzw. Unterstützung durch den Computer zu erfahren, bedient sich der Anwender spezifischer Softwareprogramme, die im Falle der Nutzung von DOS-kompatiblen Rechnern in großer Fülle auf dem Markt angeboten werden. Hier sind oft Programme notwendig, die auf die eventuell erforderlichen Bedürfnisse des Benutzers zugeschnitten werden. Man spricht in diesem Fall von Programmanpassungen über die Programmier- bzw. Softwareschnittstelle. Bei Computersystemen in höheren Größenordnungen wird die Software für den Benutzer auf der Basis des dort bestehenden Betriebssystems speziell geschrieben, so dass den betrieblichen Anforderungen schon von Anbeginn Rechnung getragen wird. Man kann Software also auch unterscheiden in fertiggestellte Programme und in Programmiersprachen, mit denen sie erstellt werden können. Lerninhalte ❶ ❷ ❸ ❹ Programmiersprachen Grundlagen des Programmierens Der Begriff Algorithmus Beschreibungsmöglichkeiten für Algorithmen Lerninhalte L1 Programmiersprachen Programme, die für einen Computer geschrieben werden, bedienen sich des Befehlsvorrats, den der Mikroprozessor im Computer verstehen kann. Der Prozessor vom Typ 8080 z. B. versteht 243 verschiedene Befehle wie addiere, subtrahiere, hole aus Speicherzelle usw. Diese Befehle werden dem Prozessor allerdings in binär codierter Form eingegeben. Der Befehl addiere lautet beispielsweise verschlüsselt 10000110. Da diese Verschlüsselung oder Sprache den Prozessor direkt zur Ausführung von Operationen veranlasst, nennt man sie auch Maschinensprache. Allerdings ist diese Form der Sprache zum Programmieren sehr ungünstig; man müsste in diesem Fall nämlich 243 verschiedene 8-stellige Zahlen kennen und die entsprechende Funktion zuordnen. Es lag nahe, anstelle der Zahlenkombination Abkürzungen zu verwenden, die von ihrer Namensgebung einen Rückschluss auf die Funktion zulassen (sogenannte Mnemonics). Aus dem Zahlencode wurde ein Buchstabencode und die Umsetzung übernimmt ein entsprechendes Programm, der sogenannte Assembler. ADD z. B. steht für addiere, SUB steht für subtrahiere. Diese Beschreibungsart nennt man Assemblersprache. Die Assemblersprache ist sehr maschinennah, aber immer noch bedienerunfreundlich. Insbesondere weist jeder Mikroprozessortyp eine andere Assemblersprache auf. Die Folge davon war die Entwicklung von höheren Programmiersprachen. Diese beinhalten nun Wörter aus der (englischen bzw. amerikanischen) Umgangssprache, so dass der Abstraktionsgrad nicht mehr so hoch und die Eingabe von Befehlen wesentlich komfortabler ist. Nach Abschluss einer Programmerstellung muss dieses lediglich mit einem Übersetzungsprogramm (Compiler oder Interpreter) in die jeweilige Maschinensprache übertragen werden, damit die Befehlsmenge für den Prozessor verständlich ist und dieser sie ausführen kann. Damit ist auch gewährleistet, dass die gleichen Programme auf verschiedenen Mikroprozessorsystemen abgearbeitet werden können. Wichtige Hochsprachen sind im folgenden kurz genannt. 1. FORTRAN (Formula Translator, entstanden 1954) ist die meistverbreitete Hochsprache zur Lösung mathematisch-naturwissenschaftlicher Probleme. Die Sprache 2000-06 datadidact Programmieren mit C++ 1-3

C++ Programmierung entspricht nicht mehr den modernen Erkenntnissen der strukturierten Programmierung, dennoch wird sie wegen der großen Menge geschriebener Software noch lange verwendet werden. 2. COBOL (Common Business Oriented Language entstanden 1959) ist die verbreitetste Programmiersprache für kommerzielle Problemstellungen. Bezüglich Sprachsyntax und Menge der programmierten Software gilt ähnliches wie bei FORTRAN. 3. ALGOL (Algorithmic Language, entstanden etwa 1960) war eine Spezialsprache für mathematisch-wissenschaftliche Probleme. ALGOL wird in der heutigen Programmentwicklung nicht mehr praktisch verwendet. Die knappe, einheitliche und geschlossene Sprachdefinition diente jedoch als Vorbild für die moderneren strukturierten Hochsprachen. 4. BASIC (Beginners All Purpose Symbolic Instruction Code) ist auf Mikrocomputern mit am weitesten verbreitet. Die stärkste Syntax-Verwandtschaft besteht zu FORTRAN. BASIC ist jedoch wenig standardisiert und ursprünglich unstrukturiert. Nach dem Aufkommen von PASCAL erschienen immer mehr BASIC-Dialekte, die auch eine Unterstützung der strukturierten Programmierung aufweisen. 5. PASCAL (benannt nach Blaise Pascal, einem Wissenschaftler des 17. Jahrhunderts, entstanden 1972) Die Sprache ist an ALGOL angelehnt, wurde unter didaktischen Gesichtspunkten entwickelt und zwingt zu strukturierter Programmierung, daher wird sie zu Lehrzwecken sehr gerne eingesetzt. Im Bereich der kommerziellen Programmierung hat sie nicht viel Anklang gefunden. Die Implementation TURBO-PASCAL bzw. BORLAND-PASCAL ist auf IBM-kompatiblen Rechnern zu einem Quasi-Standard geworden. In der grafischen Variante zur Windows-Programmierung ist ein PASCALorientiertes Entwicklungssystem unter dem Namen DELPHI bekannt. 6. C (entwickelt aus der Sprache B, etwa 1969), C++ (ab 1979) C ist die in der professionellen Softwareentwicklung am häufigsten verwendete Sprache. Obwohl ursprünglich für die Systemprogrammierung entworfen, lassen sich mit ihr auch gut strukturierte Programme für beliebige Anwendungsbereiche entwickeln. Die Spracherweiterung C++ ist mittlerweile der Quasistandard in der professionellen Softwareentwicklung. Ihre Syntax dient als Grundlage für viele neueren Programmiersprachen- Entwicklungen. 7. JAVA (ab 1994) Die Sprache wurde zur herstellerunabhängigen Programmierung von Internet-Anwendungen entwickelt und baut auf C++ auf. 8. ADA (benannt nach Lady Ada Augusta; veröffentlicht 1980) wurde vom US-Verteidigungsministerium als Universalsprache für alle Programmentwicklungen herausgebracht. Sie ist daher streng standardisiert und unterstützt parallel ablaufende Prozesse, hat sich jedoch in der professionellen Softwareentwicklung nicht stark verbreitet. 9. MODULA 2 (entstanden 1976) und OBERON MODULA 2 wurde von PASCAL-Erfinder Niklaus Wirth, Professor an der Eidgenössischen Technischen Hochschule in Zürich als Nachfolgesprachen von PASCAL entwickelt. Sie ist besser strukturiert und unterstützt modulares Programmieren. Als objektorientierte Nachfolgesprache entwickelten Wirth und seine Mitarbeiter die Sprache OBERON. Programmieren mit C++ datadidact 2000-06 1-4

C++ Programmierung 10. Weitere Hochsprachen sind z.b. LISP und PROLOG für Anwendungen der sogenannten Künstlichen Intelligenz, PL/1 als Großrechner-Sprache, FORTH für Steuerungsanwendungen, LOGO als kindgerechte Programmiersprache, ELAN, PEARL, PERL, SIMULA, APL usw. Die bestehenden Sprachen werden ständig fortentwickelt, neue Konzepte fließen in die alten Sprachen mit ein, wie z. B. die objektorientierte Programmierung. Als kurzes Beispiel sollen in einer tabellarischen Übersicht die Befehle zur Bildschirmausgabe in verschiedenen Hochsprachen dienen. FORTRAN: FORMAT('Hallo Welt!') BASIC: PRINT "Hallo, Welt!" PASCAL: WRITELN('Hallo, Welt!'); MODULA-2: Write('Hallo, Welt!');WriteLn; C: printf("hallo, Welt!\n"); C++: cout << "Hallo, Welt!" << endl; L2 Grundlagen des Programmierens Die Praxis der Grundlagen der Programmierung wird in der Programmiersprache C++ behandelt. In C++ lässt sich strukturiert programmieren, außerdem ist C++ weiter verbreitet als die klassischen Lehrsprachen Pascal oder gar Modula-2. Die Grundlagen, die hier erarbeitet werden lassen sich mühelos auf andere Programmiersprachen anwenden. Auf viele Spezialitäten von C++, die sich in anderen Sprachen nicht wiederfinden, wird im Grundlagenteil nicht eingegangen. Alleine die Kenntnis der Befehle einer speziellen Hochsprache genügt nicht, um Programme erstellen zu können. Die Kodierung einer Vorschrift zur Problemlösung (Programmerstellung) steht vielmehr am Ende eines länger dauernden Prozesses, der im folgenden skizziert ist. Problemstellung Algorithmus Mensch Umgangssprache, mehrdeutig, komplex Struktursprache, eindeutig, detailliert Assemblersprache Assembler Hochsprache Compiler/Interpreter Programmiersprache eindeutiger Formalismus genormt prozessorunabhängig Sprachenübersetzer Maschinensprache Maschinensprache, prozessorabhängig Mikroprozessor Maschine Von der Problemstellung bis zur Bearbeitung durch den Mikroprozessor 2000-06 datadidact Programmieren mit C++ 1-5

C++ Programmierung Ausgangspunkt der Programmierung ist eine Problemstellung, die meist umgangssprachlich vorgegeben ist. Daher ist sie oft mehrdeutig, unvollständig oder unklar; diese Mehrdeutigkeiten, Unvollständigkeiten und Unklarheiten müssen im Gespräch mit dem Problemsteller geklärt werden oder vom Programmierer in eigenem Ermessen beseitigt werden. Der erste Ansatz zur Lösung besteht darin, einen Algorithmus zur Lösung des Problems zu entwerfen, der möglichst unabhängig von der verwendeten Programmiersprache ist. Dieser Entwurf wird zunächst grob sein und muss verfeinert werden; dies kann in mehreren Stufen geschehen (Prinzip der schrittweisen Verfeinerung). Ein wichtiger Ansatzpunkt für den Grobentwurf des Algorithmus' ist das EVA-Prinzip. Es ist demnach wichtig zu erkennen, wo in der Problemstellung sich die Eingabedaten befinden, wo der Verarbeitungsvorgang stattfindet und welches die interessanten Ausgabedaten sind (Problemanalyse). Ist der Algorithmus fixiert, kann er in eine Programmiersprache übertragen werden. Dabei werden üblicherweise syntaktische Fehler gemacht (Schreibfehler), die sofort vom Compiler erkannt werden. Semantische Fehler (auch logische Fehler genannt) sind Fehler in der Bedeutung; es wird etwas anderes programmiert, als beabsichtigt. Diese Fehler sind schwer zu finden und müssen durch mehrfachen Test des Programms entdeckt und eliminiert werden. Am Ende dieser Entwicklung steht ein Programm, welches das gestellte Problem fehlerfrei löst. L3 Der Begriff Algorithmus Losgelöst von der gewählten höheren Programmiersprache muss zunächst eine genaue Beschreibung bzw. Definition des Problems, das gelöst werden soll, auf allgemeine Weise erreicht werden. Dazu bedarf es einer exakten Analyse, die Aufschluss über einzugebende Daten und die Festlegung der auszugebenden Daten beinhaltet. Diese Analyse muss am Ende auch kleinste Schrittfolgen aufzeigen, die die Lösung der Aufgabenstellung beschreiben. Ein Algorithmus ist eine endliche Folge von eindeutig bestimmten, ausführbaren Anweisungen zur Lösung einer Klasse von Problemen. In einem Algorithmus werden also Anweisungen aneinandergereiht, die unser Problem lösen. Dabei sind folgende Bedingungen zu beachten. 1. Die Anweisungsfolge muss ein Ende haben, sie muss terminieren. Ohne Ende liefert die Anweisungsfolge nämlich kein Ergebnis. 2. Die einzelnen Anweisungen müssen eindeutig bestimmt und ausführbar sein. Dividiere a durch b erscheint uns als sinnvolle Anweisung; im Falle b=0 ist diese Anweisung aber gar nicht mehr ausführbar, und ein Computer reagiert auf solche Anweisungen dann mit Fehlermeldungen und Programmabbrüchen. 3. Die Anweisungsfolge löst eine Klasse von Problemen, also nicht nur das aktuelle Problem mit den aktuellen Werten, sondern mindestens mit allgemeinen Werten oder sogar noch eine ähnliche Problemstellung. Wenn z.b. das Ergebnis der Addition 4+5 gefragt ist, soll der Algorithmus a und b als Eingabe nehmen und die Summe a+b ausgeben. Eventuell kann darüber nachgedacht werden, nicht nur die Summe der Zahlen, sondern auch noch Differenz, Produkt und Quotient mit auszugeben. Im täglichen Leben begegnen uns viele Dinge, die wir unbewusst mehr oder weniger komplex ausführen und die sich, würden wir sie exakt beschreiben, als Alltagsalgorithmen darstellen. Programmieren mit C++ datadidact 2000-06 1-6

C++ Programmierung Beispiel: Bedienung eines Getränkeautomaten Umgangssprachlich: Ich werfe Geld hinein, er liefert mir mein Getränk Eingaben in den Algorithmus: Verarbeitung: Ausgabe aus dem Algorithmus: Eine Verfeinerung des Algorithmus ist möglich, indem man als weitere Eingabe die Geldmenge im Geldbeutel betrachtet und nach dem Prüfen der Kosten testet, ob das Geld reicht. Nur in diesem Fall ist es nämlich sinnvoll, Geld einzuwerfen. L4 Beschreibungsmöglichkeiten für Algorithmen Um einen Algorithmus letztlich in eine höhere Programmiersprache übertragen zu können, ist die rein verbale Form wenig geeignet. Daher wird der Algorithmus zunächst graphisch dargestellt. Die graphische Form kann dann in eine Pseudo-Programmiersprache oder in eine konkrete Programmiersprache übertragen werden. Als graphische Darstellungsform werden der Programmablaufplan (PAP) und das Struktogramm verwendet. Programmablaufplan (PAP). Der PAP leitet nicht zum strukturierten Programmieren an, daher wird er nicht näher besprochen. 2000-06 datadidact Programmieren mit C++ 1-7

C++ Programmierung Ausschnitt aus einem Programmablaufplan Struktogramm Struktogramme wurden 1973 von Nassi/Shneidermann entwickelt. Der Aufbau eines Struktogramms ist selbst bei komplexen Algorithmen sehr übersichtlich, was ein einfaches Lesen zur Folge hat. Hinzu kommt, dass in etwa zeitgleich die Programmiersprachen PASCAL und C entwickelt wurden, die die gleichen Programmstrukturen verwenden. Ein Algorithmus, der mittels Struktogramm dargestellt wird, lässt sich deshalb recht leicht in die Programmiersprachen PASCAL oder C übertragen. Anhand eines Beispiels wird der Aufbau eines Struktogramms vorgestellt. Problemstellung: Klassensprecherwahl mit zwei Kandidaten. Auszählen der Stimmen bei der Klassensprecherwahl; Es gibt nur zwei Kandidaten; alle Stimmzettel befinden sich in der Wahlurne und weisen einen der beiden Namen auf. Struktogramm Programmieren mit C++ datadidact 2000-06 1-8

C++ Programmierung Das gezeigte Struktogramm enthält die elementaren Grundstrukturen Folge, Auswahl und Schleife. Diese werden in einem der nächsten Abschnitte genauer erläutert. Pseudo-Programmiersprache Als Pseudo-Programmiersprache wird eine Sprache bezeichnet, die sich an eine bestehende Programmiersprache anlehnt; bei der Formulierung des Algorithmus werden aber nicht so strenge Richtlinien angelegt wie bei der konkreten Programmiersprache. Beispiel: ALGORITHMUS Klassensprecherwahl-Stimmauszaehlung SOLANGE Stimmzettel in der Wahlurne TUE BEGINN Stimmzettel entnehmen Stimmzettel lesen WENN Name = A-Mann DANN Strich bei A-Mann SONST Strich bei B-Frau ENDE Striche zaehlen WENN Anzahl der Striche A-Mann = Anzahl der Striche B-Frau DANN Losentscheid SONST WENN Anzahl Striche A-Mann > Anzahl Striche B-Frau DANN A-Mann gewaehlt SONST B-Frau gewaehlt 1.2 Aufbau eines Programms in C++ Lerninhalte ❶ ❷ ❸ ❹ Vom Quelltext zum lauffähigen Programm Programmaufbau Kommentare Datentypen ❺ Variablen ❻ ❼ ❽ ❾ ❿ Konstanten Anweisungen Wertzuweisung, Rechenoperationen Implizite und explizite Typkonvertierung Inkrement- und Dekrementoperatoren Lerninhalte L1 Vom Quelltext zum lauffähigen Programm Wir arbeiten mit der integrierten Entwicklungsumgebung von Borland C++ unter Windows. Weltweit existieren ca. 10 Entwicklungssysteme für C++. Seit dem Jahr 1998 ist die Sprache nach ISO standardisiert, so dass alle Programmbeispiele mit jedem C++-System ausgeführt werden können. Im Entwicklungssystem werden die dem Menschen verständlichen C++-Quelltexte editiert (verändert), zudem werden die jeweiligen Programme compiliert (übersetzt) und gelinkt (verknüpft, verbunden mit Bibliotheken). Bei 2000-06 datadidact Programmieren mit C++ 1-9

C++ Programmierung größeren Programmierprojekten arbeitet man immer mit mehreren CPP-Dateien ihre Anzahl kann sehr groß werden, wenn viele Programmierer an dem Projekt beteiligt sind. Der Compiler erzeugt aus den Quelltexten *.CPP und *.H sogenannte Objektdateien (*.OBJ). Der Linker bindet diese Objektdateien mit Bibliotheksdateien (*.LIB) zu einem ablauffähigen EXE-Programm. Bibliotheksdateien enthalten vorgefertigte Sammlungen von Programmmodulen. ERSTPROG.CPP main() IOSTREAM.H X.CPP Y.H usw.... Compiler Compiler Compiler ERSTPROG.OBJ X.OBJ *.OBJ *.LIB Linker ERSTPROG.EXE L2 Programmaufbau Das folgende Beispielprogramm in C++ hat die Struktur der Sequenz. Diese Struktur wird weiter unten erläutert. Auch das EVA-Prinzip ist gut zu erkennen. Programmieren mit C++ datadidact 2000-06 1-10

C++ Programmierung // Programm Erstprog.cpp // Einbinden einer Header-Datei // iostream.h ist notwendig, um Ein-/Ausgabe nutzen zu koennen #include <iostream.h> /* Definitionsteil */ // main() enthaelt das Hauptprogramm zwischen den geschweiften Klammern {} void main() { // Deklaration der Variablen float a,b,c; /* Anweisungsteil */ // Startmeldung cout << "Programm zum Addieren von zwei Zahlen." << endl; // Eingabeaufforderungen cout << "Geben Sie die erste Zahl ein: "; cin >> a; cout << "Geben Sie die zweite Zahl ein: "; cin >> b; // Berechnung der Summe, Ergebnis in c ablegen c=a+b; // Ergebnis ausgeben cout << "Die Summe von " << a << " und " << b << " ist " << c << "." << endl; } An diesem Beispiel soll der Aufbau eines Programms in C++ erläutert werden. Ein Programm in C++ besteht zunächst aus 2 Teilen. I. Einbinden evtl. benötigter Headerdateien (Vorspanndateien). Durch diese werden neue Befehle in C++ zugänglich. Es gibt eine Reihe von Standard-Headerdateien, die bei jeder C++-Implementierung mitgeliefert werden. Eine davon ist die Datei iostream.h, durch die Befehle zur Eingabe und Ausgabe verfügbar werden. II. Im Definitionsteil werden benötigte Variablen und Funktionen definiert. Im hier dargestellten einfachsten Fall wird nur die Funktion main() definiert, die das Hauptprogramm enthält. Funktionen und damit auch das Hauptprogramm main bestehen wiederum aus zwei Teilen. A. Im Variablendeklarationsteil werden die benötigten Variablen und Konstanten eingeführt (deklariert). B. Im Anweisungsteil wird der eigentliche Algorithmus in der Sprache C++ formuliert. Grobanalyse des Beispielprogramms Erstprog.cpp Im Deklarationsteil werden drei Variablen mit den Namen a, b und c deklariert. Diese können bestimmte Datentypen ( Datentypen siehe einen der nächsten Abschnitte) speichern, hier float, also Fließkommazahlen. Im Anweisungsteil werden verschiedene Anweisungen zur Ausgabe (cout <<) und Eingabe (cin >>) verwendet. Auch eine Berechnungsvorschrift (c=a+b) ist zu finden. 2000-06 datadidact Programmieren mit C++ 1-11

C++ Programmierung L3 Kommentare Um den Überblick über ein größeres Programm zu behalten ist es wichtig, Programmteile optisch voneinander trennen zu können und bestimmte Anmerkungen anbringen zu können. Dies geschieht durch Kommentare, die vom restlichen Text auf zwei Arten abgetrennt werden können. Durch // wird ein Kommentar eingeleitet, der bis zum Ende der Zeile geht. Kommentare können aber auch in /*... */ eingeschlossen werden. Der Text in Kommentarklammern unterliegt keinen Einschränkungen und ist absolut beliebig. L4 Datentypen C++ kennt verschiedene Datentypen, die jeweils einen bestimmten Platzbedarf und verschiedene Wertebereiche haben. Typname Bereich Platzbedarf in Bytes Bool true, false 1 Char -128 bis 127 bzw. Zeichen nach ASCII-Tabelle, z.b. 1 A oder @ unsigned char 0 bis 255 bzw. Zeichen nach ASCII-Tabelle, z.b. 1 A oder @ int -32768 bis +32767 2 long -2 147 483 648 bis +2 147 483 647 4 unsigned int 0 bis 65535 2 unsigned long 0 bis 4.294.967.295 4 float ±3,4*10-38 bis ±3,4*10 +38 4 double ±1,7*10-308 bis ±1,7*10 +308 8 long double ±3,4*10-4932 bis ±1,1*10 +4932 10 Programmieren mit C++ datadidact 2000-06 1-12