Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Gliederung des Inhalts Einführung in die Planung und Entwicklung kleiner Computerprogramme Unterscheidung Compiler und Linker Entwicklungsumgebung zur.

Ähnliche Präsentationen


Präsentation zum Thema: "Gliederung des Inhalts Einführung in die Planung und Entwicklung kleiner Computerprogramme Unterscheidung Compiler und Linker Entwicklungsumgebung zur."—  Präsentation transkript:

1 Gliederung des Inhalts Einführung in die Planung und Entwicklung kleiner Computerprogramme Unterscheidung Compiler und Linker Entwicklungsumgebung zur Erstellung von Computerprogrammen Aufbau eines einfachen Programms (Eingabe, Verarbeitung, Ausgabe) Dokumentation von Programmen (Struktogramme) Kontrollstrukturen (Verzweigungen, Schleifen) Einsatz von Funktionen Datenstrukturen (Felder) Nutzung von Zeigern Testen von Programmen mit geeigneten Hilfsmitteln Fehlersuche in selbsterstellten Programmen

2 Sprachbeschreibung C++ basiert auf dem ANSI-Standard (American National Standards Institute) Darstellung der Sprache ist Plattform unabhängig Hybridsprache (C plus OOP- objektorientierte Programmiersprache) C++ ist von Bjarne Stroustrup bei AT&T entwickelt (um. 1980)

3 Erstellen eines C++-Programms Quelldatei Objektdatei ausführbare Datei Standard- bibliothek weitere Bibliotheken, Objektdateien weitere Bibliotheken, Objektdateien Header- Dateien Editor Compiler Linker

4 Aufbau eines Programms 4 #include //Header-Dateien int main () { Ausführungen des Programms } } Funktionsblock Funktionsname Beginn der Funktion Ende der Funktion Typ der Funktion Präprozessor- Anweisungen

5 Beispielprogramm 5 #include using namespace std; int main() { cout << "Viel Spass mit c++!! << endl; return 0; } Befehl Ausgeben auf den Bildschirm: cout<

6 Erweiterung des Beispielprogramms 6 Lassen Sie folgendes auf dem Bildschirm ausgeben: C unterscheidet zwischen Groß- und Kleinschreibung. Die Programmausführung beginnt bei der main-Funktion. Geschweifte Klammern markieren die Funktionsgrenze. Ein Semikolon markiert das Ende einer Anweisung.

7 Elementare Datentypen 7 Verschiedene Daten werden im Programm verarbeitet z. B. Zeichen, Ganzzahlen oder Gleitpunktzahlen diese werden unterschiedlich bearbeitet und gespeichert ein Datentyp bestimmt: 1. die Art der internen Darstellung 2. die Größe des zu benötigten Speicherplatzes der Compiler kann leichter Fehler erkennen

8 Elementare Datentypen 8 Gleitpunktzahlen long double double float Elementare Datentypen* Ganzzahlen short int long charZeichen Wahrheitswertebool *ohne void

9 Schreibkonventionen in C++ bei Namen von Variablen, Funktionen, Klassen und Makronamen muss folgendes beachtet werden: englische Alphabet deutsche Umlaute dürfen nur in Kommentaren oder Zeichenketten vorkommen Ziffern 0 bis 9 (dürfen nicht am Anfang stehen) Unterstrich _ Länge nicht vorgegeben (ANSI min. 31 Zeichen) Es wird zwischen Groß- und Kleinschreibung unterschieden!!!

10 Elementare Datentypen - Ganzzahlen 10 TypGrößeZahlenbereich char8 Bit = 1 Byte-128 bis 127 unsigned char8 Bit = 1 Byte0 bis 255 short16 Bit = 2 Bytes bis unsigned short16 Bit = 2 Bytes0 bis int32 Bit = 4 Bytes bis unsigned int32 Bit = 4 Bytes0 bis long32 Bit = 4 Bytes bis unsigned long32 Bit = 4 Bytes0 bis

11 Elementare Datentypen - Gleitpunktzahlen 11 TypGrößeZahlenbereichGenauigkeit float32 Bit = 4 Bytes1,18E-38 bis 3,40E387 Stellen double64 Bit = 8 Bytes2,23E-308 bis 1,79E30815 Stellen long double80 Bit = 10 Bytes3,37E-4932 bis 1,18E Stellen

12 Operatoren - Grundsätzliches 12 In C/C++ stehen u. a. folgende Gruppen von Operatoren zur Verfügung arithmetische Operatoren für die grundlegenden Rechenoperationen Vergleichsoperatorenzur Formulierung von Bedingungen logische Operatorenzur Verknüpfung von Einzelbedingungen zu einer komplexen Bedingung Hinweis: Ähnlich der Regel Punktrechnung vor Strichrechnung in der Mathematik, gibt es in C/C++ eine feste Reihenfolge bei Auswertung der einzelnen Operatoren in komplexeren Ausdrücken. Insgesamt gibt es in C/C++ 16 Prioritätsstufen (Rangfolge 1: höchste Priorität, Rangfolge 16: niedrigste Priorität). Bei Zweifeln hinsichtlich der Prioritäten der Operatoren ist es ratsam, zusätzliche Klammern zu setzen.

13 Beispielprogramm Summe bilden 13 Schreiben Sie ein Programm, das zwei Fließkommazahlen über die Tastatur einliest und dann die Summe bildet und ausgibt. 1.Schritt Struktogramm 2.Schritt Programmieren Ergänzungen: - Differenz, Produkt und Quotient [griech.], Darstellung des Ablaufs eines Algorithmus bzw. Programms mit speziellen Symbolen. (c) Meyers Lexikonverlag. Befehl Einlesen über die Tastatur: cin>>Variable_1>>Variable_2>>...Variable_n; Befehl Einlesen über die Tastatur: cin>>Variable_1>>Variable_2>>...Variable_n;

14 Beispiel: Summe bilden 14 Struktogramm:

15 Arithmetische Operatoren 15 OperatorRangfolgeBeispielOperation +2+a Wert des Operanden wird nicht verändert -2-a Wert des Operanden wird negiert +5a + b Addition -5a – b Subtraktion *4a * b Multiplikation /4a / b Division %4a % b Modulo (Restbestimmung) =15a = b Zuweisung ( )1(a+b)*c Klammersetzung Arithmetische Operatoren dienen der Durchführung grundlegender Rechenoperationen.

16 Vergleichsoperatoren 16 OperatorBedeutungRangfolgeBeispiel größer als7a > b >=größer oder gleich7a >= b ==gleich8a == b !=ungleich / verschieden von8a != b Vergleichsoperatoren werden benötigt, um Bedingungen zu formulieren.

17 Logische Operatoren 17 OperatorBedeutungRangfolgeBeispiel !Negation2!a &&logisches UND12a && b ||logisches ODER13a || b &bitweises UND9a & b |bitweises ODER11a | b ^bitweises XOR10a ^ b <>bitweises Rechtsschieben6a >> b ~Einerkomplement2~a Sollen mehrere Bedingungen berücksichtigt werden, so können diese durch logische Operatoren miteinander kombiniert werden.

18 if-else 18 Befehl Verzweigungen mit if-else: if (Ausdruck) z. B. a

19 Taschenrechner 19

20 Schleifen I – Übersicht 20 Schleifentypen geschlossene Schleifenoffene Schleifen kopfgesteuertfußgesteuert Der Programmierer weiß bereits beim Programmieren wie oft die Schleife durchlaufen werden soll. Wie oft die Schleife durchlaufen wird, ist nicht zahlenmäßig festgelegt, sondern hängt z. B. von Benutzereingaben ab.

21 Schleifen II – geschlossene Schleife 21 C++ - Quellcode short main( ) { short max_zahl, z; cout << Wie weit soll ich zaehlen?; cin >> max_zahl; for (z = 1; z <= max_zahl; z++) { cout << z = << z << endl; } cout << Schleife beendet, z= << z; getch(); return 0; } //Ende von main

22 Schleifen III – kopfgesteuerte offene Schleife 22 C++ - Quellcode short main( ) { short zahl = 0, i = 1; cout << Bitte eine Zahl eingeben: ; cin >> zahl; while(zahl < 100) //Schleifenkopf mit { //Bedingung zahl = zahl + 1; cout << i <<. Schleifendurchlauf ; cout << zahl << zahl << endl; i++; } //Schleifenfuß ohne Bedingung cout << Schleife beendet, zahl= << zahl; getch(); } //Ende von main

23 Schleifen IV – fußgesteuerte offene Schleife 23 C++ - Quellcode short main( ) { short zahl = 0, i = 1; cout << Bitte eine Zahl eingeben: ; cin >> zahl; do //Schleifenkopf ohne Bedingung { zahl = zahl + 1; cout << i <<. Schleifendurchlauf ; cout << zahl << zahl << endl; i++; } while(zahl < 100); //Schleifenfuß mit Bed. cout << Schleife beendet, zahl= << zahl; getch(); } //Ende von main

24 Präprozessor, Compiler und Linker 24 Mit Hilfe des include-Befehls werden sogenannte Header-Dateien eingefügt. Der Präprozessor (Übersetzungsprogramm) kopiert die Header-Datei in den Quellcode hinein (vor der Compilierung). In ihr stehen Informationen zur Syntax von Befehlen, so das der Compiler Fehler erkennen kann. Neben den Quelltextergänzungen entfernt der Präprozessor auch alle Kommentare, Leerzeilen und Leerzeichen aus dem Quellcode. Der Compiler übersetzt dann den Quellcode in maschinenlesbaren Objektcode (.obj Datei). Syntaktische Fehler im Programm werden vom Compiler angezeigt und müssen korrigiert werden. Dem Linker obliegt jetzt die Aufgabe, diese Objektcode-Dateien sowie den Objektcode der benutzten Bibliotheksfunktionen (.lib ) in eine Programmdatei (.exe unter Windows) zusammenzubinden.

25 Namensbereiche 25 Um Namenskonflikte bei globalen Bezeichnern auszuschalten, sieht C++ die Bildung von Namensbereichen vor. Innerhalb eines Namens- bereichs können Bezeichner verwendet werden, ohne Rücksicht darauf, ob sie bereits außerhalb definiert wurden. Mit Hilfe des Schlüsselwortes namespace kann der Programmierer somit den globalen Gültigkeitsbereich in Unterbereiche aufteilen.

26 Bibliothek 26 Mit Bibliothek bezeichnet man in Programmiersprachen eine Sammlung von Funktionen und Konstanten, die nicht zu einem Programm selbst gehört, sondern diesem und zumeist auch anderen Funktionen und Konstanten zur Verfügung stellt. In der Regel sind Bibliotheken für einen breiten Einsatz konzipiert und sollten daher möglichst flexible Funktionen enthalten und vor allem gut dokumentierte Schnittstellen anbieten. Bei jedem C++-Compiler sollten die C++-Standardbibliotheken vorhanden sein, die z.B. einige abstrakte Datenstrukturen wie Listen u.ä. implemen- tieren. Zusätzlich gibt es oft Bibliotheken, die den Zugriff auf Hardware, graphische Oberfläche oder andere Teile einer Plattform wesentlich vereinfachen. Bibliotheken werden i.d.R. in schon compilierter Form genutzt, sie werden selten mit einem Projekt compiliert und häufig liegt der Quelltext auch gar nicht vor (Urheberschutz).

27 Definition, Deklaration und Initialisierung 27 Variablen dürfen in einem Programm außerhalb oder innerhalb von Funktionen definiert werden. Der Unterschied ist folgender: Eine außerhalb jeder Funktion definierte Variable ist global, d. h. in allen Funktionen verwendbar. Eine innerhalb einer Funktion definierte Variable ist lokal, d. h. nur in derselben Funktion verwendbar. Lokale Variablen werden normalerweise unmittelbar hinter einer sich öffnenden Klammer – am Beginn einer Funktion – definiert. Sie können aber überall dort stehen, wo eine Anweisung erlaubt ist.

28 Definition, Deklaration und Initialisierung float zahl, a; //Definition und Deklaration globaler Variablen int main () { int i; //Definition und Deklaration lokaler Variablen short c = 0; //Definition, Deklaration und Initialisierung einer //lokalen Variablen i = 100; // Initialisierung von i... } Initialisierung bedeutet einer Variablen eine Startwert zu geben. Wird es nicht gemacht, so steht bei einer lokalen Variablen irgend ein Wert. (z. B. c = c +1 (Zähler) wird c nicht initialisiert so steht nachdem ersten Durchlauf keine 1 in c.)

29 Zahlenraten 29 Programmieren Sie folgende Aufgabenstellung: PC soll eine Zahl zwischen 1 und 100 erraten Vorgehensweise: 1.User soll sich eine Zahl zwischen 1 und 100 merken 2.PC gibt eine Zahl aus und fragt den User... 3.Wenn die Zahl nicht erraten wurde gibt der PC eine weitere Zahl aus und fragt wieder... 4.Vielen Dank für das Spiel 5.Möchten Sie ein weiteres Spiel? 6.(Ergänzungen: Programm gibt die Anzahl der Versuche aus und Programm merkt ob der User schummelt) Erstellen Sie als erstes ein Struktogramm mit allen wichtigen Befehlen (Variablendefinitionen, -deklarationen, -initialisierungen, mathematische Operationen usw. )

30 Zeiger I #include void main(void) { int zahl; // Integer Variable int* pZeigerAufZahl; // Zeiger auf Integer-Variable pZeigerAufZahl = &zahl; zahl = 5; cout << zahl; cout << pZeigerAufZahl; cout << *pZeigerAufZahl; zahl = 10; cout << zahl; cout << pZeigerAufZahl; cout << *pZeigerAufZahl; *pZeigerAufZahl = 20; cout << zahl; cout << pZeigerAufZahl; cout << *pZeigerAufZahl; cout << &pZeigerAufZahl; } Bildschirmausgabe 5 0x4cc723e x4cc723e x4cc723e8 20 0x4cc723e4 Adressoperator Dereferenzierungs- operator 30

31 Zeiger II #include void main(void) { int zahl; int* pZeigerAufZahl; pZeigerAufZahl = &zahl; zahl = 5; cout << zahl; cout << pZeigerAufZahl; cout << *pZeigerAufZahl; zahl = 10; cout << zahl; cout << pZeigerAufZahl; cout << *pZeigerAufZahl; *pZeigerAufZahl = 20; cout << zahl; cout << pZeigerAufZahl; cout << *pZeigerAufZahl; cout << &pZeigerAufZahl; } zahlpZeigerAufZahl Adresse 0x4cc723e8 Inhalt ? Adresse 0x4cc723e4 Inhalt ? Speicherinhalte Adresse 0x4cc723e8 Inhalt 5 Adresse 0x4cc723e4 Inhalt 0x4cc723e8 Adresse 0x4cc723e8 Inhalt 10 Adresse 0x4cc723e4 Inhalt 0x4cc723e8 Adresse 0x4cc723e8 Inhalt 20 Adresse 0x4cc723e4 Inhalt 0x4cc723e8 31

32 Operatoren – Grundsätzliches 32 In C/C++ stehen u. a. folgende Gruppen von Operatoren zur Verfügung arithmetische Operatoren für die grundlegenden Rechenoperationen Vergleichsoperatorenzur Formulierung von Bedingungen logische Operatorenzur Verknüpfung von Einzelbedingungen zu einer komplexen Bedingung Zuweisungsoperatoren Postfix – Operatoren Zeiger – Operatoren diverse Kategorien Hinweis: Ähnlich der Regel Punktrechnung vor Strichrechnung in der Mathematik, gibt es in C/C++ eine feste Reihenfolge bei Auswertung der einzelnen Operatoren in komplexeren Ausdrücken. Insgesamt gibt es in C/C++ 16 Prioritätsstufen (Rangfolge 1: höchste Priorität, Rangfolge 16: niedrigste Priorität). Bei Zweifeln hinsichtlich der Prioritäten der Operatoren ist es ratsam, zusätzliche Klammern zu setzen.


Herunterladen ppt "Gliederung des Inhalts Einführung in die Planung und Entwicklung kleiner Computerprogramme Unterscheidung Compiler und Linker Entwicklungsumgebung zur."

Ähnliche Präsentationen


Google-Anzeigen