Gliederung des Inhalts

Slides:



Advertisements
Ähnliche Präsentationen
Programme in C++.
Advertisements

Einführung in die Programmiersprache C/C++
Objektorientierte Programmierung
Ein- und Ausgabe von Dateien
Programmorganisation
Imperative Programmierung -Entwicklungswerkzeuge
Java: Grundlagen der Sprache
Entwicklung der Programmiersprachen
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
FOR Anweisung.
DO...WHILE Anweisung.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 2 Gisbert Dittrich; Claudio Moraga FBI Unido
Objektorientierte Programmierung
Das erste Programm (Folie 16)
Einführung in C++ und das objektorientierte Programmieren (OOP)
Der C-Präprozessor EDV1 - 04Präprozessor.
DVG Einführung in Java1 Einführung in JAVA.
Der C-Präprozessor 08-CPräprozessor.
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Einleitung Suse Linux (System- und Software-Entwicklung) Allgemein:
Einführung in die Programmierung
Einführung in die Programmiersprache C 1
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Simple Programmierung
Einführung in die Programmiersprache Java
© Roland Angst, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 1.
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Auswahlanweisungen, Iterationsanweisungen, Blöcke, Sprunganweisungen
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Programmierung 1. Einführung Seite 1
Grundlagen wissenschaftlichen Arbeitens An Overview of C++ Ali CICEK
DAS C ++ PROGRAMM Emine Birol. Erste Version: C with classes In 1985, in 1990 und in 1994 hatte C++ Versionen, die weiterzuentwickeln. Der Standart ist.
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
BMEVIEEA100 Grundlagen der Programmierung
Programmieren ... in C++ Prof. Dr.-Ing. Franz-Josef Behr, HfT Stuttgart Programmeiren I.
Repetitorium PG : Standard Template Library FH-Darmstadt, FB Informatik.
early binding (frühe Bindung) late binding (späte Bindung)
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Software-Entwicklung
Namensräume (namespaces). verwendet man umfangreiche eigene und fremde Bibliotheken (Sammlungen von Funktionen) so ist die Wahrscheinlichkeit groß, daß.
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
Softwarepraktikum LEDA/C++ Lehrstuhl fuer Datenstrukturen und effiziente Algorithmen Prof. Naeher Dozent: Daniel Scmitt.
Einführung in die Programmierung
 Präsentation transkript:

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

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)

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

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

Beispielprogramm #include <iostream> using namespace std; int main() { cout << "Viel Spass mit c++!!„ << endl; return 0; } 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. Befehl „Ausgeben auf den Bildschirm“: cout<<Variable_1<<Variable_2<<...Variable_n; cout<< „Beliebiger Text“; 5

Erweiterung des Beispielprogramms 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. 6

Elementare Datentypen 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 7

Elementare Datentypen Gleitpunktzahlen long double double float Elementare Datentypen* Ganzzahlen short int long char Zeichen Wahrheitswerte bool *ohne void 8

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!!!

Elementare Datentypen - Ganzzahlen Größe Zahlenbereich char 8 Bit = 1 Byte -128 bis 127 unsigned char 0 bis 255 short 16 Bit = 2 Bytes -32.768 bis 32.767 unsigned short 0 bis 65.535 int 32 Bit = 4 Bytes -2.147.483.648 bis 2.147.483.647 unsigned int 0 bis 4.294.967.295 long unsigned long 10

Elementare Datentypen - Gleitpunktzahlen Größe Zahlenbereich Genauigkeit float 32 Bit = 4 Bytes 1,18E-38 bis 3,40E38 7 Stellen double 64 Bit = 8 Bytes 2,23E-308 bis 1,79E308 15 Stellen long double 80 Bit = 10 Bytes 3,37E-4932 bis 1,18E4932 18 Stellen 11

Operatoren - Grundsätzliches In C/C++ stehen u. a. folgende Gruppen von Operatoren zur Verfügung arithmetische Operatoren für die grundlegenden Rechenoperationen Vergleichsoperatoren zur Formulierung von Bedingungen logische Operatoren zur 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. 12

Beispielprogramm „Summe bilden“ Schreiben Sie ein Programm, das zwei Fließkommazahlen über die Tastatur einliest und dann die Summe bildet und ausgibt. Schritt Struktogramm Schritt Programmieren [griech.], Darstellung des Ablaufs eines Algorithmus bzw. Programms mit speziellen Symbolen. (c) Meyers Lexikonverlag. float zahl1=0, zahl2=0; cout<<"Geben Sie zwei Zahlen ein!"<<endl; cout<<„Es wird die Summe von beiden Zahlen gebildet!"<<endl; cin>>zahl1>>zahl2; cout<<zahl1 + zahl2<<endl<<endl; cout<<„Vielen Dank“<<endl; Befehl „Einlesen über die Tastatur“: cin>>Variable_1>>Variable_2>>...Variable_n; Ergänzungen: - Differenz, Produkt und Quotient 13

Beispiel: Summe bilden Struktogramm: 14

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

Vergleichsoperatoren Vergleichsoperatoren werden benötigt, um Bedingungen zu formulieren. Operator Bedeutung Rangfolge Beispiel < kleiner als 7 a < b <= kleiner oder gleich a <= b > größer als a > b >= größer oder gleich a >= b == gleich 8 a == b != ungleich / verschieden von a != b 16

Logische Operatoren ! Negation 2 !a && logisches UND 12 a && b || Sollen mehrere Bedingungen berücksichtigt werden, so können diese durch logische Operatoren miteinander kombiniert werden. Operator Bedeutung Rangfolge Beispiel ! Negation 2 !a && logisches UND 12 a && b || logisches ODER 13 a || b & bitweises UND 9 a & b | bitweises ODER 11 a | b ^ bitweises XOR 10 a ^ b << bitweises Linksschieben 6 a << b >> bitweises Rechtsschieben a >> b ~ Einerkomplement ~a 17

if-else Befehl „Verzweigungen mit if-else“: if (Ausdruck) z. B. a<b Anweisung; else Struktogramm: Anweisung1 Anweisung2 if (Ausdruck) true false 18

Taschenrechner 19

Schleifen I – Übersicht Schleifentypen geschlossene Schleifen offene Schleifen kopfgesteuert fuß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. 20

Schleifen II – geschlossene Schleife 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 21

Schleifen III – kopfgesteuerte offene Schleife 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 22

Schleifen IV – fußgesteuerte offene Schleife 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 23

Präprozessor, Compiler und Linker 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. 24

Namensbereiche 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. 25

Bibliothek 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). 26

Definition, Deklaration und Initialisierung 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. 27

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.) 28

Zahlenraten Programmieren Sie folgende Aufgabenstellung: PC soll eine Zahl zwischen 1 und 100 erraten Vorgehensweise: User soll sich eine Zahl zwischen 1 und 100 merken PC gibt eine Zahl aus und fragt den User... Wenn die Zahl nicht erraten wurde gibt der PC eine weitere Zahl aus und fragt wieder... Vielen Dank für das Spiel Möchten Sie ein weiteres Spiel? (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. ) 29

Dereferenzierungs-operator Zeiger I #include <iostream.h> 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; } Adressoperator Bildschirmausgabe 5 0x4cc723e8 5 10 0x4cc723e8 10 20 0x4cc723e8 20 0x4cc723e4 Dereferenzierungs-operator 30

Zeiger II Speicherinhalte zahl pZeigerAufZahl 31 #include <iostream.h> 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; } zahl pZeigerAufZahl Adresse 0x4cc723e8 Inhalt ? Adresse 0x4cc723e4 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

Operatoren – Grundsätzliches In C/C++ stehen u. a. folgende Gruppen von Operatoren zur Verfügung arithmetische Operatoren für die grundlegenden Rechenoperationen Vergleichsoperatoren zur Formulierung von Bedingungen logische Operatoren zur 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. 32