Aufbau von Programmen/Dateien



Ähnliche Dokumente
Teil IV. Grundlagen der Programmierung

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

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Java Einführung Operatoren Kapitel 2 und 3

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

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Grundlagen. Kapitel 1

Die Programmiersprache C

Objektorientiertes Programmieren für Ingenieure

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

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

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Daten, Informationen, Kodierung. Binärkodierung

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Modul 122 VBA Scribt.docx

2. Programmierung in C

Einführung in die Programmierung

Angewandte Mathematik und Programmierung

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Einführung in die C-Programmierung

Informatik I (D-MAVT)

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Diana Lange. Generative Gestaltung Operatoren

Übungen zu C++ Kapitel 1

Klausur in Programmieren

Programmieren in C/C++ und MATLAB

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Grundlagen der Programmiersprache C++

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Modellierung und Programmierung 1

Einführung in die Programmierung

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

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Einführung in die Programmierung (EPR)

Tutorium Rechnerorganisation

Vorkurs C++ Programmierung

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Klausur in Programmieren

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Deklarationen in C. Prof. Dr. Margarita Esponda

Die Programmiersprache C99: Zusammenfassung

C++ - Einführung in die Programmiersprache Ein- und Ausgabe in die Konsole. Leibniz Universität IT Services Anja Aue

1 Vom Problem zum Programm

Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen.

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

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

Grundlagen der Informatik - 6. Praktikum

Einführung in die Programmiersprache C

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Kompilieren Datentypen Operatoren. Überblick. 1 Kompilieren. 2 Datentypen. const static volatile. 3 Operatoren. Alexander Batoulis

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Klausur in Programmieren

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

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Programmierung in C. Grundlagen. Stefan Kallerhoff

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

VBA-Programmierung: Zusammenfassung

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Programmentwicklung mit C++ (unter Unix/Linux)

DLLs (dynamic loaded libraries) mit MingW erstellen

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

FB Informatik. Fehler. Testplan

Numerische Datentypen. Simon Weidmann

Informatik Repetitorium SS Volker Jaedicke

5.4 Klassen und Objekte

Unterlagen. CPP-Uebungen-08/

Programmieren in C Einführung

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

2 Einfache Rechnungen

L6. Operatoren und Ausdrücke

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Grundlagen der Informatik 2. Typen

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Computerarithmetik ( )

Grundlagen von C# - 1

Projektverwaltung Problem Lösung: Modulare Programmierung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Zusammenfassung des Handzettels für Programmieren in C

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Prinzipien der Softwareentwicklung S. Strahringer

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Kurze Einführung in die Programmiersprache C++ und in Root

Zusammengesetzte Datentypen -- Arrays und Strukturen

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

3 Die Grundrechenarten

Einführung in die Programmierung II. 2. Fundamentale Datentypen, Ausdrücke

C-Programmierung unter TOS ATARI ST

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Transkript:

Aufbau von Programmen/Dateien Typen von Dateien Header-Dateien (.h): enthalten Deklarationen (auch Signatur, Prototyp, Rumpf) von Funktionen, Variablen, Konstanten und in C++ auch Klassendefinitionen eines Programms oder einer Bibliothek, welche in anderen Programm(datei)en genutzt werden können, in der Regel jedoch nicht deren Definition (Implementierung) /* Deklaration einer Funktion */ int sum(int x, int y); Code-Dateien (.cpp,.c,.c, etc.): enthalten die Definition von Funktionen (oder Methoden in C++) und ggf. die spezielle Funktion main als Einstiegspunkt für ein ausführbares Programm /* Definition einer Funktion */ int sum(int x, int y) { return x+y }; Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 5

Aufbau von Programmen/Dateien /2 Programme können aus zahlreichen Code- und Header-Dateien bestehen Header-Dateien als Schnittstelle zwischen verschiedenen Code Dateien: in einer inkludierten Datei deklarierte Funktionen können benutzt werden, sind aber in einer anderen Code-Datei implementiert Code-Dateien werden zuerst separat übersetzt Ergebnis: Objektdateien.obj oder.o Linker: statische Verbindung verschiedener Objektdateien zu einer Programmbibliothek oder zu einem ausführbaren Programm Standardbibliotheken der Programmiersprache oder des Betriebssystems sowie Teile komplexer Programme werden meist dynamisch (zur Laufzeit) gelinkt/geladen Windows: Dynamic Load Libraries (DLL) Unix: zum BeispielShared Objects (.so) Vermeidet Aufblähung ausführbarer Programme und ständige Neuübersetzung immer wieder verwendeter Programmteile Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 6

C++ Übersetzungsprozeß gif.h stdio.h math.h prog.cpp gif.cpp prog.obj Compiler gif.obj Als Teil des Betriebsystems oder der Laufzeitumgebung der Programmiersprache implementiert und vorübersetzt Linker prog.exe msvcrtxxx.dll system32.dll...... Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 7

Struktur der Hauptdatei Im folgenden Fokus auf einfache Programme bestehend aus einer Hauptdatei: #include <...> /* Einzubettende Programmbibliotheken */ #define... /* Definitionen und Makros */ /* Globale Variablen */ int i; char c[] =...; /* Funktionen */ int f1(int a, int b) {... }; void f2() {...}; /* Hauptprogramm */ int main() {... } Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 8

Der Präprozessor Mit#beginnende Zeilen sind Anweisungen für den Präprozessor (Teilprogramm des Compilers) zur Durchführung einfacher Transformationen des Quelltextes vor der eigentlichen Übersetzung, z.b. #include-statements: Einbettung anderer Quelltextdateien (vor allem Header-Dateien von Programmteilen oder Standardbibliotheken) #include <...> /* Datei im INCLUDE-Pfad */ #include... /* relativer Pfad */ #define-statements: Festlegung von Werten für Ausdrücke, die z.b. im Quelltext in der Folge ersetzt werden können oder für die Steuerung des Präprozessors verwendet werden können #define PI 3.14159265 Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 9

Programmblöcke Inhaltlich zusammengehörige Befehlsfolgen werden durch geschweifte Klammern {... } zu Programmblöcken zusammengefaßt Verwendung zum Beispiel für Definition von Funktionen int f(int x, int y) {...}; Steueranweisungen wie Schleifen while (<bedingung>) {...}; Innerhalb eines Programmblocks definierte Variablen, können nur dort verwendet werden Verwendung geschweifter Klammern auch zur Definition zusammengesetzter Datentypen ( z.b.struct,enum,union) sowie zur Definition von Klassen in C++ Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 10

Sequenzen Sequenzen von Befehlen (entsprechend imperativem Programmierparadigma) werden durch Verkettung mit Semikolon ; gebildet Dabei können einzelne Befehle Definition/Deklaration von Variablen Steueranweisungen (Schleifen, Bedingungen, Fehlerbehandlung, etc.) Ausdrücke (haben immer ein Ergebnis und einen Ergebnistyp) sein Literale Werte Variablen Funktionsaufrufe Komplexe Ausdrücke: Verknüpfung von Teilausdrücken durch Operatoren Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 11

Beispiel: Mittelwert (C) #include <stdio.h> float mittelwert(float a, float b) { return (a+b)/2; } int main() { float x,y,m; printf( x = ); scanf( %f,&x); printf( y = ); scanf( %f,&y); m = mittelwert(x,y); printf( Mittelwert = %f \n, m); return 0; } Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 12

Beispiel: Mittelwert (C++) #include <iostream> using namespace std; float mittelwert(float a, float b) { return (a+b)/2; } int main() { float x,y,m; cout << x = ; cin >> x; cout << y = ; cin >> y; m = mittelwert(x,y); cout << Mittelwert = << m << endl; return 0; } Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 13

Variablendeklarationen Grundlegender Syntax: <datentyp> <variablennamen> [, <variablenname>...]; Datentyp ist: Basisdatentyp wieint,float, etc. (siehe Abschnitt Kodierung) Feld von Variablen eines Datentyps ( ) Zusammengesetzter, nutzerdefinierter Datentyp ( ) Nutzerdefinierter Objekttyp (C++ ) Zeiger auf Adresse eines Objektes oder Wertes von Datentyp ( ) Erlaubt Deklaration mehrerer Variablen eines Typs in einem Statement, z.b. int x, y, z; Erlaubt Zuweisung initialer Werte, z.b. int solution=42; Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 14

Ausdrücke Zusammengesetzt aus Variablen, literalen Werten und Funktionsaufrufen Verbunden durch Operatoren Beispiele: x=1; /* Zuweisung eines literalen Wertes */ x++; /* Inkrementierung (postfix) */ x=x+1; /* Zuweisung und arithemtische Verknüpfung */ x=(x==4); /* Zuweisung und geklammerter Vergleich */ x=quadrat(x+1); /* Zuweisung und Funktionsaufruf */ x & 1; /* Logische Operation, Ergebnis ignoriert */ Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 15

Ausdrücke /2 Können durch Kombination und Klammerung beliebig komplex werden VORSICHT: Lesbarkeit! VORSICHT: Typ-Kompatibilität der Operanden Implizite Konvertierung manchmal unproblematisch, z.b.int float Teilweise Verlust von Information, z.b.float int durch Abschneiden der Nachkommastellen Nur zum Teil Fehlermeldungen oder Warnungen bei inkompatiblen Typen Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 16

Ausdrücke: Arithmetische Operatoren Operator Beispiel Bedeutung + x+y Addition - x-y Subtraktion * x*y Multiplikation / x/y Division % x%y Rest bei ganzzahliger Division ++ y=x++ Inkrementierung (postfix) x um eins erhöht y hat alten Wert von x y=++x Inkrementierung (prefix) x um eins erhöht y hat neuen Wert von x x Dekrementierung entsprechend x als pre- und postfix anwendbar......... Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 17

Ausdrücke: Zuweisungsoperatoren Operator Beispiel Bedeutung = x=7 Standardzuweisungsoperator += x+=7 Selbstzuweisung mit Addition entsprichtx=x+7 (prefix Variante) =+ x=+7 Selbstzuweisung mit Addition (postfix Variante) -= x-=7 Selbstzuweisung mit Subtraktion *= x*=7 Selbstzuweisung mit Multiplikation /= x/=7 Selbstzuweisung mit Division %= x%=7 Selbstzuweisung des Divisionsrestes......... Ergebnis einer Zuweisung ist immer der neue Wert des linken Operanden Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 18

Ausdrücke: Vergleichsoperatoren Da in C lange einboolean-datentyp fehlte, ist Ergebnis ganzzahliger Wert 1, wenn Vergleich erfolgreich (TRUE) 0, andernfalls (FALSE) Operator Beispiel Bedeutung == x==y Test auf Wertegleichheit!= x==y Test auf Ungleichheit > x>y... größer als... < x<y... kleiner als... >= x>=y... größer als oder gleich... <= x<=y... kleiner als oder gleich............ Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 19

Ausdrücke: Logische Operatoren /1 Zwei Sichtweisen für logische Operationen 1 Bitweises Verknüpfen für Bytes 2 Logische Verknüpfungen von 1 (TRUE) und 0 (FALSE) kann auf 1. zurückgeführt werden Bei Operatoren für logische Verknüpfung: Abbruch (short cut) der Auswertung, wenn möglich Bei AND: Abbruch, wenn erste Bedingung FALSE, da Ergebnis nur FALSE sein kann Bei OR: Abbruch, wenn erste Bedingung TRUE, da Ergebnis nur TRUE sein kann Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 20

Ausdrücke: Logische Operatoren /2 Operator Beispiel Bedeutung!!x Logische Negation (NOT) && x&&y Logische Konjunktion (AND) x y Logische Disjunktion (OR) & x&y Bitweises AND x y Bitweises OR x y Bitweises XOR x Bitweise Negation......... Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 21

Ausdrücke: Sonstige Operatoren Zur Arbeit mit speziellen Datentypen wie zum Beispiel Feldern, Zeigern, Strukturen und Objekten ( ) Operator Beispiel Bedeutung [] a[7] Zugriff auf Position in Feld. window.size Zugriff auf Komponente einer Struktur oder eines Objektes * *i Dereferenzierung eines Zeigers & &i Bildung der Referenz (Zeiger) -> window->size Zugriff auf Komponente über Zeiger () (int)myfloat Explizite Typumwandlung (Casting) new w = new Window() Erzeugen eines neuen Objektes......... Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 22

Ein-/Ausgabe C-style: printf() Grundlegende Ein-/Ausgabe für C definiert instdio.h als Funktionen Ausgabe: Funktionprintf() printf(<formatstring>[,<ausgabeliste>]) Formatstring besteht aus literalem Augabetext und typspezischen Platzhaltern beginnend mit % für formatierte Ausgabe von Werten Ausgabeliste besteht aus freier Anzahl von kommaseparierten Parametern welche auszugebende Variablenwerte darstellen und mit Anzahl und Typ der Platzhalter übereinstimmen muss Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 23

Ein-/Ausgabe C-style: printf()-formatstring Einige wichtige Formatplatzhalter: Platzhalter entsprechendes Parameter %c char: ein einzelnes Zeichen %d und %i decimal,integer: Ganzahlwert in Dezimaldarstellung %f, %e, %g float,exponential: Gleitkommazahhlen in unterschiedlichen Darstellungsweisen %lf long float: zum Beispieldouble %s string: eine Zeichenkette %x hex: eine Hexadezimalzahl %% Prozentzeichen Beispiel printf( Name: %s Alter: %i, name, alter); Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 24

Ein-/Ausgabe C-style: printf()-steuerzeichen Außerdem ASCII-Steuerzeichen kodiert mit führendem \ zur weiteren Formatierung der Textausgabe Einige wichtige Steuerzeichen: Steuerzeichen Bedeutung \ Einfacher Anführungsstrich \ Doppelter Anführungsstrich \n Zeilenumbruch (newline) \t Tabulatorvorschub (horizontal) \\ Backslash...... Beispiel: printf( Zeile 1 \n \ Zeile 2\ \n \t Zeile 3 \n ); Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 25

Ein-/Ausgabe C-style: scanf() Eingabe: Funktionscanf() printf(<formatstring>[,<eingabeliste]]) Erlaubt Erfassen komplex strukturierter Eingaben mit Textmustern und Platzhaltern entsprechendprintf(), aber im folgenden einfache Eingabe meist einzelner Werte scanf( %i, &meineinteger); scanf( %f, &meinefloat); Vorsicht: Eingabeliste besteht aus Adressen der Variablen (vorgestelltes &), da Werte durch Funktion modifiziert werden müssen (pass by reference Funktionen) Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 26

Ein-/Ausgabe C++-style C++ definiert für Ein-/Ausgabe eigene Bibliothekiostream.h Verwendet außerdem Namensräume (iostream im Standardnamensraumstd, d.h. für Verwendung #include <iostream> using namespace std; Basiert auf Datenströmen (Streams) Eingehende Datenströme: Input Streams Ausgehende Datenströme: Output Streams und deren Auswertung bzw. Manipulation Beliebige Datenströme sowie deren Operatoren und Funktionen sind als Klassen definiert Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 27

Ein-/Ausgabe C++-style:cin undcout iostream definiert Standardobjekte der Stream-Klassen für Standardeingabe (Tastatur) und Standardausgabe (Konsole) cout - Standardausgabe cin - Standardeingabe Arbeit mit Datenströmen vor allem über Shift-Operatoren, d.h. Verschieben von Daten auf oder aus Strömen >> - Verschieben von Daten aus dem Strom (Lesen) << - Verschieben von Daten auf den Strom (Schreiben) Ergebnis ist der Stream selbst, d.h. Operatoren können verkettet werden Beispiel cout << Eingabe << endl << x: ; cin >> x; Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 28

Ein-/Ausgabe C++-style: Stream-Manipulatoren Kontrolle der Streams bzgl. Darstellung von Werten und Formatierung über definierte Konstanten (Stream-Manipulatoren), z.b. Manipulator Bedeutung dec Integer als Dezimalzahl hex Integer als Hexadezimal fixed Float als Festkommazahl scientific Float als Halblogarithmisch endl Zeilenende flush Sofortige Buffer-Entleerung..... Beispiel: cout << Alter << dec << alter << endl; Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 29

Kommentare Natürlichsprachliche Beschreibung/Erklärung des Quelltextes oft hilfreich und erforderlich Werden vom Compiler bei der Übersetzung vollständig ignoriert /* Kommentar, gerne auch mal über mehrere Textzeilen */ x=x+1; // Kommentar bis zum Zeilenende Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 30