1. Einleitung

Sehr geehrte Studierende,

Herzlich Willkommen zur VU Grundlagen des Programmierens 317.530. Wie bereits im Namen verankert, beschäftigt sich die LVA mit der Einführung in das Programmieren. Einige Studierende sind mit diesen Grundlagen teilweise vertraut, für andere ist dieses Thema Neuland. Wir haben versucht einen Mittelweg zu finden und bitten um Verständnis wenn es manchmal „zu langsam“ und manchmal „zu schnell“ vorangeht.

Programmierung bedeutet das Erstellen von Computerprogrammen mittels einer Programmiersprache.

_images/codeBinary.jpg

… keine Sorge, wir verwenden Python …

Inhaltlich orientiert sich dieses Skriptum an unterschiedlichen Quellen und wird laufend verbessert. Das Skriptum beinhaltet sehr viele WWW Links, aus diesem Grund gibt es eine elektronische HTML Version des Skriptums.

Hörer früherer Semester sollten beachten dass mit WS 2020 das Skriptum stark überarbeitet und auf Python 3 umgestellt wurde .

In diesem Sinne - Have Fun beim Programmieren lernen - Ihr LVA Team

1.1. Wie meistere ich am besten diese Lehrveranstaltung?

Kurz gesagt, durch Interesse, Beharrlichkeit, regelmäßiges Lernen und üben, üben, üben.

Hat man andauernde Motivationsprobleme, sollte man (gerade im ersten Semester) kritisch hinterfragen warum man sich für dieses Studium und somit für diesen Kurs entschieden hat? Antworten der Art:

  • gehört zum Studium, da muss ich durch …
  • brauche ich für …
  • wird von mir erwartet …
  • besser studieren als arbeiten zu gehen …

deuten auf ein grundsätzliches Problem hin. Überdenken Sie Ihr Tun (Studium) und verschwenden Sie nicht Ihre Zeit. Suchen Sie sich ein Studium, dass Sie begeistert und Spaß macht nach dem Motto: Carpe Diem - Nütze den Tag!

In anderen Worten, wenn Sie am Kurs teilnehmen:

  • versuchen Sie Ihr Bestes,
  • freuen Sie sich darauf, etwas Neues zu lernen,
  • stehen Sie auf, wenn Sie niederfallen (Rückschläge erleiden),
  • vor allem aber, haben Sie Freude bei dem, was Sie tun!

Warum ist das wichtig? Universitäten unterscheiden sich grundsätzlich von Schulen. Bei Lehrveranstaltungen

  • gibt es sehr große oder sehr kleine Gruppen,
  • muss man schnell denken und komplizierten Inhalten folgen,
  • ist oft der Vortrag zu schnell, oder manchmal ist dieser zu langsam,
  • wird viel in kurzer Zeit abverlangt!

Mein Erfolgsrezept beim Studium lautete SMOD:

  • Selbst-Motivation-Organisation-Disziplin

Bei Vorlesungen sollte man für ein gutes Miteinander folgendes beachten:

  • pünktlich kommen - zu spät kommen stört den Unterricht!
  • Mobiltelefone leise stellen - niemals Telefonate beantworten, keine Textnachrichten schreiben, soziale Medien checken, etc!
  • Computer, Tablets, etc für Vortragsunterlagen und zum Mitschreiben verwenden - keine Videos, Spiele, Emails, etc. im Hörsaal!
  • sich auf den Vortrag konzentrieren - nütze die Zeit!
  • nicht untereinander sprechen (tratschen) - störend für andere!
  • bei Fragen entsprechend der Vorgaben agieren (Klopfen, Online agieren, etc)!
  • essen vermeiden - vor allem stark riechende Speisen!

1.2. Administration

Warnung

Bitte beachten Sie, dass sich Termine und Modalitäten gemäß den geltenden COVID19 Regelungen im Laufe des Semesters ändern können!

1.2.1. Ziele der LVA

Motivation

Warum Programmieren lernen? Im Video Programming – What most schools don’t teach dazu Meinungen einiger IT-Größen!

Bemerkung

Steve Jobs (1955-2011)

Everybody in this country should learn to program a computer… because it teaches you how to think.

Grundkenntnisse des Programmierens sind kein „nice to have“ sondern ein „must have“ für technische Berufe!

Ziele

In dieser LVA lernen Sie die Grundlagen der Programmierung d.h.

  • Erlernen einer Programmiersprache (hier Python) und
  • verfassen einfacher Computer-Programme.

Zusätzlich wird der Einsatz dieses Wissens hinsichtlich ingenieurswissenschaftlichem Arbeiten vorgestellt.

Bemerkung

  • Durch den Besuch dieser LVA wird man kein Programmierexperte,
  • jedoch sollte man besser verstehen was hinter Computerprogramme steckt,
  • und wofür Programmierung zukünftig in Studium & Arbeit verwendet werden kann!

1.2.2. Voraussetzung für die LVA

Vorausgesetzt werden:

  • ein eigener Computer (Laptop, Desktop-PC oder Tablet mit Tastatur)
  • mit dem Betriebssystem Linux, Windows oder MacOS - Windows Mobile, iOS, Android, etc sind nicht ausreichend!
  • und Minimum 5 GB freien Speicher sowie
  • eine EDV-Allgemeinbildung d.h. die Fähigkeit mit einem Computer im Bereich Bildung umgehen zu können.
  • für die online Kolloquien sind darüber hinaus weitere technische Voraussetzungen zu erfüllen - siehe dazu TUWEL

Tipp

Sollten Sie keinen eigenen Computer haben, ziehen sie ubook oder edustore bei einem PC Kauf in Betracht (für Studierende, gutes Preis-Leistungsverhältnis, 3 Jahre Garantie, …). Sofern Sie viel am Computer arbeiten, kaufen Sie sich einen entsprechend großen Bildschirm.

Nicht vorausgesetzt werden:

  • grundlegende Programmierkenntnisse, natürlich sind solche von Vorteil!

Zusätzlich zum Computer benötigen Sie:

  • eine darauf laufende Python Distribution inklusive IDE (integrated development environment).

Tipp

Wir empfehlen anaconda von Continuum Analytics (Python Version >3.6 NICHT 2.X!). Dieses Paket gibt es gratis zum Download für alle gängigen Betriebssysteme und enthalten alle notwendigen Softwareprogramme.

1.2.3. Ablauf der LVA

Allgemeiner Ablauf

  • Grundsätzlich starten wir mit der Vorlesung. Diese läuft über das ganze Semester (siehe Zeitplan).
  • Unmittelbar nach den Vorlesungen finden Übungseinheiten statt.
  • Zusätzlich werden Hausübungen aufgegeben.
  • Im Laufe des Semesters gibt es 2 Kolloquien sowie ein Ersatzkolloquium im Februar (siehe Zeitplan). Alle Kolloquien finden online statt. Details hierzu siehe Notenfindung.
  • Damit Sie sich mit dem Ablauf der Kolloquien vertraut machen können, gibt es ein Probekolloquium.
  • Die VU wird aufgrund der aktuellen Situation durch COVID19 bis auf Weiteres im Hybrid-Modus abgehalten. Details hierzu siehe Abhaltung der LVA im Hybrid-Modus.

Wichtig

Für die Teilnahme an der Lehrveranstaltung ist es notwendig, dass Sie sich in TISS anmelden. Erst dann bekommen Sie Zugang zu dem entsprechenden Kurs in TUWEL, der E-Learning Plattform der TU Wien.

Zeitplanung

Der vorläufige Zeitplan sieht folgendermaßen aus. Änderungen werden via TISS als News E-mails bekanntgegeben:

_images/Planung_GdP_2022WS_v1.png

Vorläufiger Zeitplan (zuletzt modifiziert am 14.09.2022)

Übungseinheiten

  • Zum selbständigen Üben werden vor den Übungseinheiten Übungsvideos in TUWEL online gestellt.
  • Die Übungsvideos sind vor der entsprechenden Übungseinheit selbstständig von Ihnen durchzuarbeiten.
  • In den Übungseinheiten werden die Übungsbeispiele und Hausübungen diskutiert.
  • Darüber hinaus können Sie Fragen zu den Übungsbeispielen und zu den Hausaufgaben stellen.

Hausübungen

  • Hausübungen sind bis zu den im Zeitplan angegebenen Terminen selbstständig zu lösen und in TUWEL hochzuladen.
  • Insgesamt gibt es 12 Hausübungsbeispiele, bei denen jeweils maximal 1 Punkt erreicht werden kann.
  • Um zu den Kolloquien antreten zu dürfen benötigen Sie:
  • Für das 1. Kolloquium: Zumindest 3 von 6 Punkten aus HÜ 1.1 bis 4.1
  • Für das 2. Kolloquium: Zumindest 3 von 6 Punkten aus HÜ 5.1 bis 8.1
  • Wenn Sie durch die Kolloquien eine positive Note erreicht haben, werden Ihnen alle Punkte, die Sie durch Hausübungen erzielt haben, als Bonuspunkte angerechnet.

Wichtige details:

  • Die abgegebenen Hausübungsbeispiele werden binär bewertet (0 oder 1 Punkt pro Beispiel). Keinen Punkt bekommen Sie unter anderem, wenn die hochgeladene Datei:
  • kein Python-File (.py) ist.
  • keinen Python-Code enthält.
  • nicht lauffähig ist.
  • wesentliche Merkmale des zu lösenden Beispiels nicht enthält.
  • überwiegend identisch mit einer anderen abgegebenen Datei ist –> Schummelverdacht!

Hinweis

Eine positive Bewertung Ihres Beispiels (1 Punkt) bedeutet nicht unbedingt, dass das Beispiel komplett richtig gelöst wurde - vergleichen Sie dazu die Musterlösung in TUWEL!

  • Die in TUWEL hochgeladenen Übungsvideos sollen beim Lösen der Hausübungen helfen. Arbeiten Sie sie deshalb vor der Hausübungen durch.
  • Zusätzlich besteht die Möglichkeit, Fragen zu den Übungsbeispielen und Hausübungen mit den TutorInnen in deren Sprechstunden zu klären (siehe auch: TutorInnen-Sprechstunden).

Wichtig

Sobald Sie mindestens eine Hausübung abgeben, haben Sie eine prüfungsrelevante Aktion gesetzt und bekommen ein Zeugnis!

Tipp

Hausübungen selbstständig machen, Unklarheiten in den TutorInnen-Sprechstunden oder Übungen klären und das Programmieren üben, üben, üben - nur so lernt man es. Wer diese Ratschläge befolgt, sollte für die Kolloquien gut vorbereitet sein!

TutorInnen-Sprechstunden

  • In den Sprechstunden können Sie direkt mit unseren TutorInnen in Kontakt treten und Fragen stellen (Übungen, Hausübungen, …)
  • Die Sprechstundentermine werden in TUWEL bekannt gegeben.
  • Zusätzlich gibt es die Möglichkeit, sich einen individuellen Termin per Email auszumachen.
  • Die Sprechstunden finden ausschließlich über die Webmeeting-Anwendung Zoom statt.
  • Den entsprechenden Link zu den Sprechstunden finden Sie in TUWEL.

Hinweis

TutorInnen sind Studierende höherer Semester, die diese VU hervorragend abgeschlossen haben und auch schon darüber hinaus Programmiererfahrung gesammelt haben. Sie werden Ihnen gerne bei programmiertechnischen Problemen in den Sprechstunden helfen.

Tipp

Nutzen Sie diese Möglichkeit, um individuelles und detailliertes Feedback zu bekommen und diverese inhaltliche Fragen zu stellen!

1.2.4. Abhaltung der LVA im Hybrid-Modus

Die LVA wird aufgrund der aktuellen COVID19 Situation im Hybrid-Format abgehalten. Das heißt die LVA findet in einem Hörsaal statt, wird zugleich aber auch live gestreamt.

E-Learning Plattform:

  • TUWEL ist die primäre E-Learning Plattform.
  • In TUWEL finden Sie auch sämtliche Streaming Links und ggf. erforderliche Passwörter.
  • Um Zugang zum TUWEL Kurs zu bekommen, müssen Sie sich in TISS anmelden.

Abhaltung der Vorlesung und Übung:

  • Vorlesung und Übung werden im FH HS1 und per Lecturetube Livestream abgehalten. Den Link zum Livestream entnehmen Sie TUWEL .
  • Vorlesung und Übung werden außerdem aufgezeichnet und stehen das ganze Semester lang zur Verfügung.
  • Interaktion mit den Vortragenden während der Vorlesung/Übung ist über die Software ARSnova möglich.
  • Fragen, die außerhalb der Vorlesungs-/Übungszeit über ARSnova gestellt werden, können nicht berücksichtigt werden.
  • Die „Room-No.“ lautet 91211600.

Abhaltung der Kolloquien

  • Die Kolloquien werden ausschließlich online als schriftlicher TUWEL-Test durchgeführt.
  • Die Anmeldung zu den Kolloquien ist für die Teilnahme verpflichtend und erfolgt ausschließlich über TUWEL.
  • Für die Teilnahme benötigen Sie zumindest einen Computer, eine Webcam, eine Python IDE, die Software Zoom und eine stabile Internetverbindung.
  • Kommt es zu einem Schummelverdacht, behalten wir uns vor, nach der Prüfung Feststellungsgespräche via Zoom durchzuführen.
  • Weitere Details zum Ablauf des Kolloquiums und den genauen technischen Anforderungen entnehmen Sie bitte dem TUWEL Kurs.

Feedback

  • Sie können jederzeit, auch während dem Semester, Feedback zu der LVA geben.
  • Für anonymes Feedback nutzen Sie bitte die Feedback Funktion in TUWEL .
  • Soweit erforderlich, können wir dadurch auch im laufenden Semester Änderungen am LVA Ablauf vornehmen.

1.2.5. Notenfindung

Kolloquien

  • Die Noten werden anhand der beiden Kolloquien ermittelt.
  • Eine Teilnahme ist nur möglich, wenn Sie die erforderliche Anzahl an Hausübungspunkten erreicht haben (siehe Ablauf der LVA)
  • Die Kolloquien sind schriftliche Wissensüberprüfungen und bestehen aus 2 Teilen:
  • einem Theorieteil, also theoretischen Fragen zum Programmieren,
  • und einem praktischen Teil, bei dem kurze Python-Code Beispiele zu schreiben sind.
  • Pro Kolloquium können maximal 100 Punkte erreicht werden.
  • Die Stoffgebiete der beiden Kolloquien sind:
    1. Kolloquium: Kapitel 1 bis 6
    1. Kolloquium: Kapitel 7 bis 12
  • Alle Kolloquien werden online über TUWEL abgewickelt. Genauere Informationen zu den Kolloquien werden über TUWEL bekanntgegeben.

Gesamtnote

  • Die Gesamtnote ergibt sich aus der Summe der Punkte aus den beiden Kolloquien (maximal 200 Punkte).
  • Für einen positive Bewertung der LVA brauchen Sie:
  • Pro Kolloquium mindestens 25 Punkte, damit dieses gewertet wird.
  • Auf beide Kolloquien in Summe benötigen Sie mindestens 100 Punkte für eine positive Note.
  • Wenn Sie ingesamt mindestens 100 Punkte erreicht haben, werden die Hausübungspunkte als Bonuspunkte hinzuaddiert.
  • Der Notenschlüssel ist:
  • 0-99 Punkte: 5
  • 100-124 Punkte: 4
  • 125-149 Punkte: 3
  • 150-174 Punkte: 2
  • >=175 Punkte: 1

Ersatzkolloquium

  • Für jene, die durch die beiden Kolloquien keine positive Note erreicht haben, gibt es ein Ersatzkolloquium. Das Ersatzkolloquium ersetzt das schlechtere der beiden regulären Kolloquien.
  • Um am Ersatzkolloquium teilnehmen zu können, müssen Sie:
  • mindestens 6 der insgesamt 12 Hausübungspunkte erreicht haben
  • UND bei mindestens einem der beiden Kolloquien zumindest 25 Punkte erreicht haben.
  • Das Stoffgebiet des Ersatzkolloquiums umfasst das gesamte Stoffgebiet und wird ebenfalls online über TUWEL abgewickelt.

Probekolloquium

  • Damit Sie sich mit dem Ablauf der online Kolloquien vertraut machen können, ist ein Probekolloquium vorgesehen.
  • Die Teilnahme ist freiwillig, wird aber ausdrücklich empfohlen.
  • Ihre Leistung beim Probekolloquium wird nicht bewertet.
  • Den Termin für das Probekolloquium entnehmen Sie dem Zeitplan. Genaure Informationen zur Abwicklickung werden über TUWEL bekanntgegeben.

1.2.6. Fragen

Wen soll ich wie kontaktieren?

Bei inhaltlichen Fragen:

  • Allgemein - während der LVA über die Kommentarfunktion von ARSnova .
  • Spezifisch - die TutorInnen in den Sprechstunden über Zoom .

Bei organisatorischen Fragen:

  • Allgemein - TISS Forum für Fragen die alle betreffen.
  • Spezifisch - individuellen Anliegen in den Sprechstunden mit den TutorInnen über Zoom klären.

Bei Anliegen, welche nicht in die obigen Kategorien fallen bzw. kurzfristig auftreten, jedoch von entsprechender Bedeutung sind:

  • Per Email an gdp@tuwien.ac.at (ein Anliegen, in 2-3 Sätzen). Ausgenommen hiervon sind Reklamationen o. Ä., welche ausschließlich persönlich in den Sprechstunden der TutorInnen vorzubringen sind.

Hinweis

Aufgrund der seit 25.05.2018 anzuwendenden Datenschutz-Grundverordnung werden nur E-Mails bearbeitet, welche von Ihrer offiziellen TU-Wien E-Mail Adresse kommen. Telefonische Auskünfte sind nicht mehr möglich.

Hinweis

Persönliche Emails oder Telefonate werden aufgrund der hohen Hörerzahl NICHT beantwortet.

1.3. Informatik Grundlagen

Bevor wir den Computer verwenden noch einige Grundideen und Begriffe der Informatik bzw. Programmierung.

1.3.1. Programm und Algorithmus

Programme

Im Alltag sind uns Programme geläufig, wie z.B.:

  • das Programm einer Feier,
  • ein Kochrezept,
  • eine HowTo Anleitung, etc.

Diese beschreiben einen Ablauf d.h. was wie zu tun ist.

In der Informatik wird der Begriff enger gefasst und man spricht von der Programmierung.

Programmierung

  • Unter Programmierung versteht man das Schreiben solcher Programme in Form von Quellcode, d.h. Befehlen in einer Textdatei.
  • Das Verfassen von Quellcode erfolgt in einer Programmiersprache (C++, Java, Python, Fortran, …)
  • Diese Programmiersprachen werden von Softwareprogrammen in Maschinensprache übersetzt, welche ein Computer versteht und ausführen kann.
  • Somit kann man mit Programmierung das Verhalten eines Computers steuern.
Algorithmus

Ein Algorithmus ist eine eindeutige Abfolge von Anweisungen (Befehlen) zur Lösung eines Problems.

Beispiel eines Algorithmus:

ALGORITHMUS mach_was()
   ANFANG mach eine Aufgabenliste
   SOLANGE was zu tun ist
   WENN nicht erledigt
      mach weiter
   SONST
      geh zur nächsten Aufgabe
   WIEDERHOLE
ENDE

Ein Algorithmus kann auch graphisch in Form eines Flussdiagramms dargestellt werden.

_images/algorithmus.png

Algorithmus graphisch mittels Flussdiagramm

Ein Programm besteht im Allgemeinen aus vielen Algorithmen!

1.3.2. Hardware und Software

Ein Computersystem besteht aus Hardware und Software.

Hardware:

Bezeichnet alle Komponenten eines Computers, welche man „angreifen“ kann. Zum Beispiel:

  • Arbeitsspeicher, Prozessor, Festplatte, … = PC
  • Monitor, Maus, Tastatur, Drucker, …

Die Abbildung „Komponenten eine Computers“ zeigt die wesentlichen Bestandteile eines Computers (1 Bildschirm, 2 Motherboard, 3 CPU, 4 RAM, 5 Grafik- und Netzwerkkarte, 6 Netzgerät, 7 DVD, 8 Festplatte, 9 Tastatur, 10 Maus).

_images/ComputerAufbau.png

Komponenten eines Computers

Die Abbildung „Zusammenspiel der Komponenten“ zeigt deren Verknüpfung.

_images/vonNeumann.png

Zusammenspiel der Komponenten (Von-Neumann-Architektur)

Software

Bezeichnet die Summe aller Programme eines Computers. Man unterteilt diese in:

  • Betriebssystem und
  • Anwendungsprogramme.
Betriebssystem

Regelt den Zugriff auf Hardware des Computers und verwaltet Daten, die auf dem Rechner gespeichert werden.

Bekannte Betriebssysteme sind:

  • Unix
  • MS Windows
  • Mac OS
Anwendungssoftware

Dient zum Lösen spezifischer Probleme. Typische Vertreter sind:

  • Textverarbeitungsprogramme,
  • Internet-Browser,
  • Bildbearbeitung, …
Computersystem

Ein Computersystem kann als Schichtmodell gesehen werden.

_images/ComputerSystem.png

Schichtmodell eines Computersystems

1.3.3. Bits und Bytes

Bits und Bytes sind Maßeinheiten für eine Datenmenge.

_images/bit-byte2.jpg

Bit und Byte

Bits
  • Eine Speicherzelle kennt 2 Werte: 0 und 1.
  • Diese Binärziffer bezeichnet man als Bit (binary digit).
Byte
  • 8 Bits werden zu einem Byte zusammengefasst.
  • Dies ist das kleinste adressierbare Element im Computer.
  • Ein Byte kann 256 unterschiedliche Zahlen speichern.
  • 1 GByte = 1000 MBytes = 1 Milliarde Bytes!

Beispiel: Die Binärzahl 10011011 errechnet sich im Dezimalsystem zu:

1*2^7 + 0*2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 155

Zahlendarstellung
  • Character: benötigt 1 Byte (siehe ASCII Tabelle)

  • Integer: 2 Bytes (short), 4 Bytes (long), etc.

  • Gleitkomma (Float): 4 Bytes (single precision), 8 Bytes (double precision), etc.

    _images/32bit_float.png

    32 Bit (4 Byte) Float

    Der Wert berechnet sich daraus wie folgt:

Wert = (-1)^{Vorz.} * 2^{(Exponent-127)} * Mantisse

Bemerkung

  • Wertebereich Integer bei 4 Bytes: -2147483648 bis 2147483647 (2.147x10 9 )
  • Wertebereich Gleitkomma bei 4 Bytes: 3.4x10 -38 bis 3.4x10 38 (Genauigkeit 7-8 Stellen)

1.3.4. Programmiersprachen

Eine Programmiersprache zeichnet sich - wie jede Sprache - durch Syntax und Semantik aus.

Syntax

Legt fest, in welcher Folge Zeichen den Programmtext bilden. Z.B. Python-Syntax zur Definition einer Variablen:

a = 1.843

Nicht erlaubt wäre z.B.:

a 1.843

Bei anderen Programmiersprachen würde dies wie folgt aussehen:

real a = 1.843     # Fortran
float a = 1.843;   # C++, Java

Bemerkung

Python erkennt den Datentyp automatisch und kann diesen dynamisch verändern.

Semantik

Beschreibt die Bedeutung eines Programmtextes

print("Alles Python oder was?")

Dieser Programmtext gibt einen Text am Bildschirm aus. Ein weiteres Beispiel :

if a < 0 :
   a = a*(-1)

Dieser Code macht aus a eine positive Zahl.

Wichtige Programmiersprachen

Die Liste der Programmiersprachen ist lang. Anbei eine Abbildung über die Entwicklung wichtiger Programmiersprachen.

_images/Programmiersprachen.png

Entwicklung wichtiger Programmiersprachen

Python
In dieser LVA lernen wir Python - eine eher junge Sprache. Warum Python?
  • auf allen Plattformen verfügbar
  • einfache Syntax (Code is 2-10x kürzer als C++, Java)
  • leicht lesbar (Wartbarkeit)
  • schnell erlernbar

Dies bestätigen auch internationale Umfragen, siehe Abbildung: Beste, erste Programmiersprache.

_images/ErsteProgrammiersprache.png

Beste, erste Programmiersprache auf lifehacker.com

Aber auch Experten wie Bjarne Stroustrup, der Erfinder von C++, meint dazu im Video zu den 5 wichtigsten Programmiersprachen:

  • C++, Java, Python … JavaScript
  • … Experten kennen mehr als nur eine Sprache,
  • kennt man diesen Cluster, kennt man alle anderen!

1.3.5. Interpreter und Compiler

Es gibt 2 unterschiedliche Methoden, wie Programmtext (Quelltext, source code) in Computersprache übersetzt wird, d.h. vom Computer „verstanden“ wird.

Compiler

Der Programmtext wird nach Erstellung komplett in Maschinen-Code (executeable) übersetzt (siehe Arbeitsweise eines Compilers) und ausgeführt.

_images/Compiler.png

Arbeitsweise eines Compilers

Vor- und Nachteile:

  • benötigt Compiler (=eigene Anwendungssoftware)
  • läuft nur auf dem Betriebssystem, wo Programm kompiliert wurde
  • i.a. sehr schnell (high performance)
  • Quelltext nach kompilieren nicht einsehbar
  • typische Sprachen: Fortran, C++
Interpreter

Der Programmtext wird Zeile für Zeile an das Betriebssystem geschickt und ausgeführt (siehe Arbeitsweise eines Interpreters).

_images/Interpreter.png

Arbeitsweise eines Interpreters

Vor- und Nachteile:

  • benötigt Interpreter (=eigene Anwendungssoftware)
  • unabhängig vom Betriebssystem
  • schnell implementiert, langsam exekutiert
  • Quelltext einsehbar, schnell änderbar
  • typische Sprachen: JavaScript, Python

1.3.6. Programmierstile

Quellcode kann imperativ (z.B. prozedural) oder objektorientiert geschrieben werden.

Imperativ

Kommt aus dem lateinischen imperare = anordnen d.h. einzelnen Befehle werden sequentiell hintereinander geschrieben mittels:

  • Kontrollstrukturen = Strukturierte Programmierung
  • Überschaubare Unterprogrammen = Prozedurale Programmierung
  • Logisch zusammengefassten Unterprogrammen = Modulare Programmierung

Vor- und Nachteile:

  • für kleine Programme geeignet
  • i.a. sehr schnell, da Compiler den Code gut optimieren kann
  • wird schnell unübersichtlich, schwer wartbar, …
Objektorientiert

Das Programm wird als System von Objekten dargestellt, die miteinander kommunizieren (siehe Beispiel objektorientierte Programmierung).

_images/zusammenfassung-oop.png

Beispiel objektorientierte Programmierung

Erklärungen:

  • Zunächst definiert man sogenannte Klassen (z.B. Klasse „Artikel“). Ein Programm kann beliebig viele unterschiedliche Klassen haben (Artikel, Auftrag, Kunde, …).
  • Erzeugt man nun einen bestimmten „Artikel“ (z.B. Artikel 1, anders gesagt gibt man diesem spezifische Daten), spricht man von einem Objekt.
  • Diesen Vorgang bezeichnet man auch als „das Objekt (Artikel 1) wird von der Klasse (Artikel) instantiiert. Man kann viele Objekte einer Klasse erzeugen (Artikel 1, Artikel 2, ..).
  • Jedes Objekt besitzt (anhand der Klassendefinition) Eigenschaften (Attribute), dies sind die Daten (z.B. Nummer, Text, …) und Methoden (Algorithmen), welche diese Daten ändern, anzeigen, bereitstellen, etc (z.B. auslagern, einlagern, …).
  • Ein Hauptprogramm enthält z.B. alle hier dargestellten Objekte in Form von Listen und steuert den Programmablauf inklusive Daten Ein- und Ausgabe.

Vor- und Nachteile:

  • für große Programmierprojekte gut geeignet
  • Konzepte wie Vererbung, Datenkapselung, Polymorhismus, etc umsetzbar

Hinweis

Python kann sowohl prozedural als auch objektorientiert verwendet werden. Mehr Details dazu werden später behandelt.

1.3.7. Software Engineering

Software Engineering wird auf deutsch als Softwaretechnik bezeichnet. Softwaretechnik umfasst eine Vielzahl von Teilgebieten wie (siehe WIKI Softwaretechnik):

  1. Projektmanagement
  2. Qualitätsmanagement
  3. Risikomanagement
  4. Anforderungserhebung
  5. Systemdesign/technische Konzeption
  6. Implementierung
  7. Softwaretest
  8. Softwareeinführung
  9. Wartung/Pflege

In dieser LVA beschäftigen wir uns vorwiegend mit Punkt 6) und am Rande mit 5) und 7). Diese Übersicht soll zeigen, dass Software Engineering nicht nur aus Programmieren besteht!

Software Engineering kann man in Phasen aufteilen. Man spricht auch vom Software Lebenszyklus (siehe Abbildung).

_images/SDLC_-_Software_Development_Life_Cycle.png

1.3.8. Einführendes Beispiel

Am Ende dieser Lehrveranstaltung sollten Studierende in der Lage sein, ingenieurwissenschaftliche Fragestellungen numerisch aufzubereiten.

Zur Motivation stellen wir Online ein solches Beispiel aus dem Gebiet der Physik vor. Dabei wird die Flugbahn eines Projektils untersucht und gleichzeitig ein Berechnungsbericht erstellt. Das folgende Bild zeigt ein Ergebnis dieser Untersuchungen.

_images/projektil1.png

1.4. Übungsbeispiele

Wichtig

Installieren Sie für die Übung eine Python Distribution für Ihr Betriebssystem. Wir empfehlen Anaconda von Continuum Analytics (Python Version >3.6 NICHT 2.X!). Dieses Paket gibt es gratis zum Download für alle gängigen Betriebssysteme.

Idealerweise nehmen Sie Ihren Laptop oder ihr Tablet zur Übung mit. Notfalls läuft Python auch auf dem Smartphone.

Achten Sie bitte bei der Installation darauf, dass der Pfad, in dem Sie Anaconda installieren keine Leerzeichen oder Umlaute enthält!

Aufgabe 1.1

Hat Ihr Computer einen 32-Bit oder 64-Bit Processor? Wie viel Speicher hat Ihr Computer?

Hinweis:

  • In Windows, klicken Sie rechte Maustaste auf ‚Computer‘ bzw. ‚My Computer‘ und schauen Sie die Eigenschaften an. Für noch ausführlichere Informationen, installieren Sie die Software CPU-Z von cpuid (http://www.cpuid.com/softwares/cpu-z.html).
  • In Linux, benutzen Sie den Command lscpu, lesen Sie die Inhalte von /proc/cpuinfo, /proc/meminfo
  • In Mac OS verwenden sie im Terminal den Befehl sysctl hw, die Zeilen hw.cpu64bit_capable und hw.memsize zeigen Ihnen die gesuchten Werte an.

Aufgabe 1.2

Wieviel Arbeitspeicher wird von Ihrem Browser, Spyder und anderen Anwendungen benutzt?

Hinweis:

  • Starten Sie den Task Manager in Windows
  • den System Monitor in Linux (top)
  • bzw. die Aktivitätsanzeige in Mac OS.