Funktionales C++ zum Ersten

Ähnliche Dokumente
Einführung in die C++ Programmierung für Ingenieure

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

Einführung in die Programmierung Wintersemester 2011/12

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Unterlagen. CPP-Uebungen-08/

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

Algorithmen zur Datenanalyse in C++

Einführung in die Programmierung Wintersemester 2016/17

RO-Tutorien 15 und 16

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

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Einführung in die Programmierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

RO-Tutorien 3 / 6 / 12

C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19

RO-Tutorien 17 und 18

Einführung in die C-Programmierung

Vorlesungsprüfung Programmiersprache 1

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

Einführung in die Programmierung

Tutorium Rechnerorganisation

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

3D Programmierpraktikum: Einführung in C++ - Teil 1

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

Grundlagen der Informatik 4. Kontrollstrukturen I

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Gestrige Themen. Benutzung des Compilers und Editors. Variablen. Ein- und Ausgabe mit cin, cout (C++) Verzweigungen. Schleifen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Grundlagen der Informatik 2. Typen

Primitive Datentypen

5. Elementare Befehle und Struktogramme

Programmieren in C/C++ und MATLAB

4.2 Programmiersprache C

1 UNIX und die Kommandozeile. 2 C++ Tipps. 1.1 wichtige Befehle und Programme. 1.2 Umleiten der Standardein- und Ausgabe. 2.

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

4 Formelsammlung C/C++

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Programmierung und Angewandte Mathematik

Pseudo-Programmiersprache

Programmiervorkurs Einführung in Java Tag 1

3 Grundstrukturen eines C++ Programms anhand eines Beispiels

Die Programmiersprache C Eine Einführung

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

3. Java - Sprachkonstrukte I

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Grundlagen der Informatik 2. Operatoren

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

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

C- Kurs 03 Ausdrücke und Operatoren

Vom Problem zum Programm

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Grundlagen der Informatik 5. Kontrollstrukturen II

Einstieg in die Informatik mit Java

Vorlesung Programmieren

Variablen, Konstanten und Datentypen

3. Grundanweisungen in Java

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

Vorlesung Programmieren

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

Informatik für Elektrotechnik und Informationstechnik

Projektverwaltung Problem Lösung: Modulare Programmierung

Einstieg in die Informatik mit Java

Einführung Programmierpraktikum C Michael Zwick

Javakurs für Anfänger

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Java Einführung Methoden. Kapitel 6

Klausur Informatik WS 2012/13

PVK Informatik I 1.Teil. Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen

Numerische Methoden und Algorithmen in der Physik

Informationsverarbeitung im Bauwesen

JAVA-Datentypen und deren Wertebereich

Anweisungen zur Ablaufsteuerung

Programmieren I. Kapitel 5. Kontrollfluss

ModProg 15-16, Vorl. 5

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Transkript:

Funktionales C++ zum Ersten WiMa-Praktikum 1, Teil C++, Tag 1 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 26.08.08 Christoph Ott 1

Programmieren unter Solaris/ Linux Wichtige Verzeichnisse:. &.. & ~ & / Wechseln in ein geeigneten Verzeichnis: cd Anlegen eines geeigneten Ordners: mkdir Inhalt eines Verzeichnisses: ls Schreiben von Programmcode: bspw. nedit oder vim Weitere Befehle: mv, cp ls -l rm, rm -r, rmdir 26.08.08 Christoph Ott 2

Unser erstes CPP-Programm main(){ first1.cpp Kompilieren mit: rechnername$ g++ first1.cpp besser mit: rechnername$ g++ -Wall first1.cpp Ausführen mit: rechnerneme$ a.out Was passiert? Nichts! Wichtig: Ihr befindet Euch in unserem Rechner-Pool Programmname endet auf.cpp Bausteine main, () und { Kompilieren und Ausführen (wie javac first.java & java first) 26.08.08 Christoph Ott 3

Ein bisschen schöner //Programm, das nichts tut /* ein weiterer, das Programm beschreibende Kommentar*/ first2.cpp int main(){ return 0; main() ist eine Funktion, signalisiert das Hauptprogramm (Java: ähnlich, main als Methode) Rückgabewert von main() ist int 0 signalisiert Erfolg, andere Zahlen Fehler alternativ kann Programm auch über exit() (an jeder Stelle) verlassen werden Kommentare wie in Java 26.08.08 Christoph Ott 4

Nun auch mit Ausgabe #include <iostream> first3.cpp int main(){ std::cout << Hurra, es funktioniert! ; std::cout << std::endl; return 0; iostream wird zur Ein- und Ausgabe benötigt Einbinden von Bibliotheken z.t ähnlich wie bei Java (import) jedoch: Bei #include wird der Code genau an diese Stelle kopiert cout ist keine Funktion, sondern ein Objekt << ist ein Operator und somit funktions-ähnlich (Pfeilrichtung beachten) Verstehen muss man das an dieser Stelle nicht! 26.08.08 Christoph Ott 5

Namensräume #include <iostream> using namespace std; first4.cpp int main(){ cout << Hurra, es funktioniert! ; cout return 0; Verwendung des Namensraums std zur Vermeidung umständlicher Schreibweise Alternativ: cout << "Hurra, es funktioniert!" cout << "Hurra, es funktioniert!" oder 26.08.08 Christoph Ott 6

Und mit Eingabe #include <iostream> using namespace std; int main(){ bremsweg.cpp Verwendung Namensraum std double kmh, bremsweg; cout << "Wie schnell (in km/h)? "; cin >> kmh; bremsweg=(kmh/10)*(kmh/10); cout << "Dein Bremsweg beträgt: " << bremsweg << Meter return 0; zwei erste Variablen Textausgabe Einlesen 1. Variable Berechnen 2. Variable Kombinierte Ausgabe Newline 26.08.08 Christoph Ott 7

Überblick Datentypen Das alles gab es in Java auch schon: bool 1 Byte = 256 Werte (eigentlich 2) ((un)signed) short (int) ((un)signed) int bei uns 4 Bytes = 2³² Werte ((un)signed) long (int) float double 8 Bytes = 2⁶⁴ Werte long double ((un)signed) char 1 Byte = 256 Werte 26.08.08 Christoph Ott 8

Variablen Variablen haben stets einen (Daten-)typ alle Variablen müssen zuerst angelegt werden bevor ihnen Werte zugewiesen werden (kann in einem Schritt geschehen) es gibt intrinsische und nicht-intrinsische Datentypen intrinsische Datentypen können ohne vorherige Bekanntmachung in einem C++-Programm verwendet werden (bspw. bool, int, double, char). nicht-intrinsische Datentypen müssen vor ihrer Verwendung bekannt gemacht (deklariert) werden (bspw. Strings). #include <iostream> using namespace std;... string s="servus!";... 26.08.08 Christoph Ott 9

Gültigkeit/Veränderbarkeit von Variablen konstant vs. variabel const int x=1; global vs. lokal Lebensdauer bis zum Ende des Gültigkeitsbereichs { statisch Gültigkeit (d.h. Sichtbarkeit) lokale, Lebensdauer bis Programmende (d.h. global), deshalb Merker -Variable (interessant bei Funktionen) static int y; extern Deklaration von externer Variable, Definition sonstwo extern int z; 26.08.08 Christoph Ott 10

Typumwandlung implizit: ohne eigenes Zutun int i1=0.25; i1=0 (Compiler-Warnung) int i2=1/4; i2=0 (Keine Typ-Konvertierung) double d1=1/4; d1=0 double d2=1./4; d2=0.25 double d3=1.0/4; d3=0.25 explizit: mit Cast-Operator double d1=double(1)/double(4); oder aber wie in Java: double d2=(double)1/(double)4; 26.08.08 Christoph Ott 11

Operatoren Zuweisungoperator: int x=3; arithmetische Operatoren: + - * / % logische Operatoren: &&! bitweise Operatoren: nicht relevant Vergleichsoperatoren: ==!= < > <= >= vereinfachende Operatoren: += -= /= *= %= Inkrement/ Dekrement: ++ -- (vor-/nachgestellt) Sequenzoperator:, Bsp: int a, b, c; 26.08.08 Christoph Ott 12

Priorität Bezeichnung Symbole Priorität Bewertung von Klammern () [] 14 links Arithmetische Negation - 13 rechts Logische Negation! 13 rechts Inkrement ++ 13 rechts Dekrement -- 13 rechts Arithmetische Operatoren * / % 12 links + - 11 links Vergleichsoperatoren > >= < <= 9 links ==!= 8 links Logische Operatoren && 4 links 3 links Zuweisungsoperatoren = += -= *= /= %= 2 rechts Sequenzoperator, 1 rechts Auswertungsreihenfolge folgt fest vorgegebenem, nachschlagbarem Schema Umgehungsmöglichkeit: runde Klammern 26.08.08 Christoph Ott 13

Kontrollstrukturen Wie bisher funktionieren: if-anweisung: if (bool. Ausdruck) Anweisung; else Anweisung; nicht notwendig for-schleife: for (Startanweisung; bool. Ausdruck; Sukzessive Anweisung) while-schleife: while (bool. Ausdruck) Anweisung; do-while-schleife: do Anweisung while (bool. Ausdruck) Unterschied? Wann sind geschweifte Klammern notwendig? 26.08.08 Christoph Ott 14

Kontrollstrukturen 2 Wie bisher funktionieren: switch-verzweigung: switch(variable){ case Konstante: Anweisung; break;... default: Anweisung; Verlassen von Kontrollstukturen: return; exit; break; continue; Konditional-Operator: bool. Ausdruck?true-Ausdruck:false-Ausdruck 26.08.08 Christoph Ott 15

Bsp. if-anweisung #include <iostream> using namespace std; if1.cpp int main(){ char geschlecht; cout << "Geschlecht: (m/w)" cin >> geschlecht; if (geschlecht=='m') cout << "Guten Tag, der Herr!" if (geschlecht=='w') cout << "Guten Tag, die Dame!" else cout << "Guten Tag, wer auch immer!" return 0; Fallunterscheidung je nach Wert der Variablen 'geschlecht' Tut dieses Programm was es tun soll? 26.08.08 Christoph Ott 16

Bsp. if-anweisung (Lösung) #include <iostream> using namespace std; if2.cpp int main(){ char geschlecht; cout << "Geschlecht: (m/w)" cin >> geschlecht; if (geschlecht=='m') cout << "Guten Tag, der Herr!" else{ if (geschlecht=='w') cout << "Guten Tag, die Dame!" else cout << "Guten Tag, wer auch immer!" return 0; 26.08.08 Christoph Ott 17

Bsp. for-schleife #include <iostream> using namespace std; for.cpp int main(){ int max; cout << "Maximale Zahl" cin >> max; int sum=0; for (int i=1; i<=max; i+=2) sum+=i; cout << "Summe: " << sum return 0; Alle ungeraden Zahl bis 'max' durchlaufen und aufsummieren Passt die Klammerung? 26.08.08 Christoph Ott 18

while-schleife vs. do-while-schleife #include <iostream> #include <cmath> using namespace std; while.cpp #include <iostream> #include <cmath> using namespace std; dowhile.cpp int main(){ double zahl; cout << "Start-Zahl, bitte" cin >> zahl; while(zahl>=0){ cout << "Zahl: " << zahl << ", Wurzel: " << sqrt(zahl) zahl--; return 0; Unterschied? int main(){ double zahl; cout << "Start-Zahl, bitte" cin >> zahl; do { cout << "Zahl: " << zahl << ", Wurzel: " << sqrt(zahl) zahl--; while(zahl>=0); return 0; 26.08.08 Christoph Ott 19

Bsp. switch-anweisung #include <iostream> using namespace std; switch.cpp int main(){ int zahl; cout << "Geben Sie eine Zahl ein" cin >> zahl; switch(zahl%3){ case 0: cout << "Rest 0" break; case 1: cout << "Rest 1" break; case 2: cout << "Rest 2" break; default: cerr << "unerwuenschter Zustand" exit(1); return 0; Ausgabe auf Standardfehlerausgabe Beenden mit Exit-Status 1 Was passiert ohne 'break'? 26.08.08 Christoph Ott 20