Einführung in die Programmierung für Studierende der Naturwissenschaften

Zeit/Ort: Mo 16 - 18 Uhr, HS Weismann-Haus, Albertstr. 21a
Dozent: Prof. Dr. P. W. Dondl
Sprechstunde Dozent: Mo 12:15-13:45 Uhr, Zi. 217, Hermann-Herder-Str. 10
Tutorium: Dr. Keith M. P. Anguige
Sprechstunde Assistent: Di 10-12 Uhr, Zi. 206, Hermann-Herder-Str. 10

Inhalte

Die Veranstaltung bietet eine Einführung in die wissenschaftliche Programmierung mit theoretischen und praktischen Einheiten. Schwerpunkte der Veranstaltung sind:

  • Programmstruktur und Kontrollfluss
  • Ausdrücke, Operatoren und Anweisungen
  • Datentypen, Typumwandlung und Typinferenz
  • Container: Tupel, Felder, Listen, etc.
  • Funktionen und Rekursion
  • Zeichenketten, Dateien, Ein- und Ausgabe
  • Einführung in die objektorientierte Programmierung
  • grafische Darstellungsmöglichkeiten

Die Inhalte werden anhand von Beispielen aus den Naturwissenschaften in der Programmiersprache C++ sowie in MATLAB erarbeitet. Die erworbenen Kenntnisse werden anhand von Übungen und Hausaufgaben praktisch erprobt und vertieft.

Vorlesungsfolien

Technische Hinweise

C++-Compiler

Am einfachsten: cpp.sh. Hier können Sie einfach ein Programm in das Fenster eintippen (ich empfehle, das Programm in einem Texteditor zu schreiben und dann in das Fenster mittels Copy/Paste zu übertragen). Unter Linux sollte gcc installiert sein, dann können Sie mit dem Kommando g++ wie in der Vorlesung diskutiert Ihre Programme übersetzen. Auf dem Mac müssen Sie das kostenlose XCode (aus dem AppStore) installieren. Unter Windows empfehle ich die Nutzung von cpp.sh oder (für etwas erfahrenere Windows-Nutzer) eine Installation von mingw-64 (Downloadlink). Nach der Installation können Sie g++ (eventuell mit Angabe das Installationspfades, Sie sollten also einen PATH setzen) wie unter Linux auf der Kommandozeile aufrufen.

MATLAB

Es ist dringend empfohlen, dass Sie eine MATLAB-Lizenz bekommen. MATLAB kostenlos für Studenten (Student Option). Mit dieser Lizenz können Sie MATLAB auf Ihrem eigenen Rechner installieren oder via MATLAB Online direkt im Webbrowser verwenden.

Es gibt auch von Mathworks direkt ein MATLAB Tutorial.

Eine sehr gute freie Alternative zu MATLAB ist GNU Octave.

Beispielprogramme

MATLAB-Beispiele

Informationen zur Arrayindizierung
Beispielprogramm zur Arrayindizierung
test_movie.m
test_avi.m
vecexample.m

Beispielfragen

C++-Beispiele

hello.cpp
greet.cpp
string_and_int.cpp
while.cpp
for.cpp
pointertest.cpp
point.hpp, point.cpp, point_test.cpp

Beispielfragen

Übungsblätter

Blatt Ausgabe Abgabe
Blatt 1 5.5.2017 17.5.2017
Blatt 2 11.5.2017 24.5.2017
Blatt 3 20.5.2017 31.5.2017
Blatt 4 26.5.2017 14.6.2017
Blatt 5 9.6.2017 21.6.2017
Blatt 6 15.6.2017 28.6.2017
Blatt 7 24.6.2017 5.7.2017
Blatt 8 3.7.2017 12.7.2017
Blatt 9 10.7.2017 19.7.2017

Hinweise und Korrekturen

  • Aufgabe 12: Es sollte $v_{ij} = (x_i)^j$ heißen.

  • Aufgabe 22: Es ist eventuell nützlich einen Vektor v zu sortieren. Das geht mit "std::sort(v.begin(), v.end());" nach "#include <algorithm>". Probieren Sie es aus. Eine einfachere Möglichkeit Zufallszahlen zu generieren ist hier zu finden. Hier ein Beispielprogramm. Compilieren mit "g++ -std=c++11 -o rand_and_sort rand_and_sort.cpp" oder über cpp.sh.

  • Aufgabe 27: Die zweite Codezeile sollte "std::vector<int> v(u.size());" lauten.

  • Compilieren von Programmen: Falls "g++ -o dateiname dateiname.cpp" nicht funktioniert, versuchen Sie "g++ -std=c++11 -o dateiname dateiname.cpp". Mehr dazu in der Vorlesung am 10. Juli.

  • Programm door.m.

  • Programm elstring.m.

Übungen

Gruppe Zeit Ort Tutor
1 Di 14 - 16 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10 Steve Wolff-Vorbeck
2 Di 16 - 18 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10 Johannes Daube
3 Mi 14 - 16 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10 Johannes Daube
4 Fr 12 - 14 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10 Benjamin Jäger