4 - Programmieren

Wie erstelle ich ein Programm

4.1 – Logik

Grundlage von Entscheidungen

Lesson Learned

In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können

  • Operatoren der boolschen Algebra:
    • Negation
    • Konjunktion
    • Disjunktion
  • Auswerten von Wahrheitstafeln

Logik

Quelle: https://www.youtube.com/watch?v=aXKR0Ld9dTU

Definitionen

  • P, Q sind Aussagen, die WAHR oder FALSCH ergeben
  • Beispiel:
    • x>10 oder x<10
    • Der Tisch ist größer als 1m2
    • Hr. Wählisch verdient mehr als Google

Nicht - Negation

  • die Negation ist ein unärer Operator, mit dem sich der Wahrheitswert einer Aussage negieren lässt
  • Beispiel:
    • P: Hr. Wählisch verdient mehr als Google ⇒ FALSCH
    • ¬P: Hr. Wählisch verdient NICHT mehr als Google ⇒ WAHR

Wahrheitstabellen

George Boole Quelle: Wikipedia - George Boole

  • Wahrheitstabellen sind ein Werkzeug, um sich über die möglichen Ergebnisse eines logischen Ausdruckes (Bedingung, Boolean Expression) Klarheit zu verschaffen
  • Man beginnt mit der Auflistung aller möglichen Kombinationen der an der Gleichung beteiligten Aussagen

Negation - Wahrheitsafel

  • Negation
  • ¬P
  • gesprochen: „nicht P“
P ¬P
0 1
1 0

UND - Konjunktion

  • Mit der Konjunktion lassen sich zwei Aussagen so verknüpfen, dass die Gesamtaussage nur dann erfüllt ist, wenn beide Teilaussagen wahr sind
  • Bsp: Um ins Kino zu gehen, muss schlechtes Wetter sein (Aussage 1) UND ich muss mir den Eintritt leisten können (Aussage 2)
wetter Quelle: [pexels(https://www.pexels.com/de-de/foto/blitz-donner-dramatisch-draussen-1446076/)
ʌ
geld Quelle: [pixabay(https://pixabay.com/en/coins-pennies-money-currency-cash-912718/)

Konjunktion - Wahrheitstabelle

  • Konjunktion
  • P ʌ Q
  • gesprochen: „P und Q“
P Q P ʌ Q
0 0 0
0 1 0
1 0 0
1 1 1

ODER - Disjunktion

  • Mit der Disjunktion lassen sich zwei logische Aussagen so verknüpfen, dass die Gesamtaussage wahr ist, sobald eine Teilaussage wahr ist
  • Bsp: „Herr Wählisch lehrt TD1 (Aussage 1) oder Herr Bongen lehrt TD1 (Aussage 2)“
wetter
v
geld

Konjunktion - Wahrheitstabelle

  • Konjunktion
  • P v Q
  • gesprochen: „P oder Q“
P Q P v Q
0 0 0
0 1 1
1 0 1
1 1 1

Reihenfolge der Operatoren

  • Werden keine Klammern angegeben, gilt folgende Reihenfolge:
    • Negation
    • Konjunktion
    • Disjunktion
  • Grundsätzlich werden Aussagen von links nach rechts abgearbeitet

komplexere Aussagen

  • Jede Aussage P, Q kann auch aus einer Aussagenverknüpfung bestehen!
  • Bsp:
    • (A v B) ʌ ¬C
    • entpricht P ʌ Q
    • mit P= (A v B) und Q = ¬C

Übung

A B C A v B ¬C (A v B) ʌ ¬C
0 0 0      
0 0 1      
0 1 0      
0 1 1      
1 0 0      
1 0 1      
1 1 0      
1 1 1      

Übung

A B C A v B ¬C (A v B) ʌ ¬C
0 0 0 0 1 0
0 0 1 0 0 0
0 1 0 1 1 1
0 1 1 1 0 0
1 0 0 1 1 1
1 0 1 1 0 0
1 1 0 1 1 1
1 1 1 1 0 0

Weitere Operatoren

  • Daneben existieren noch andere logische Operatoren:
    • ⊕ Xor (ausschließendes Oder)
    • ⇒ Implikation (Folgerung: aus A folgt B)
    • ⇔ Äquivalenz
  • Diese können aber alle durch Kombinationen von:
    • Negation
    • Konjunktion
    • Disjunktion

dargestellt werden

4.2 – Programmentwicklung

Entwurfsstrategien, Notationen

Lesson Learned

In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können

  • Programmkonzeption
    • Vorgehensweise bei der Lösung von Programmierproblemen
  • Notationen
    • Pseudocode
    • Struktogramme
    • Programmablaufpläne

Vom Problem zur Lösung

Diagramm

Einfaches Wasserfallmodell

Wasserfallmodell

Der Robuste Fahrkartenautomat

Fahrkarten

Anforderungen:

  • Fahrpreise zwischen 0,90 € und 19,90 € in 0,10 € Abständen
  • Bezahlung mit Scheinen (10 €, 5 €) und Münzen (kein “Rotgeld”)
  • Rückgabe von Wechselgeld mit möglichst wenigen Münzen
  • Es können beliebig viele Münzen und Scheine im Automaten sein
  • Zur Bezahlung benutzte Münzen können als Wechselgeld verwendet werden

Top-Down & Bottom-UP

topDownBottomUp

Pseudocode

Pseudocode ist eine abstrahierte, textuelle Darstellung eines Programms

Beispiele

hamlet

theQuestion= 2*b || !(2*b)

Beispiele

starwars

doIt() || !doIt();
// try();

Programmablaufpläne

Programmablaufpläne verwenden im Hauptsächlichen folgende Elemente

Symbol Beschreibung
Kontrollpunkt Kontrollpunkt
Kontrollpunkt Verbindung zum nächsten Element
Kontrollpunkt Operation / Tätigkeit
Kontrollpunkt Unterprogramm ausführen
Kontrollpunkt Ein- und Ausgabe
Kontrollpunkt Verzweigung / Entscheidung

Freundschaftsalgorithmus

Quelle: https://www.youtube.com/watch?v=I37XYZe8L-o

Struktogramme

Motivation

  • Flussdiagramme sind fehleranfällig und unübersichtlich
  • Beschränkung der Verzweigung und Reduzierung des Umfangs

IkeNassi schneidermann

Konventionen

  • Ein Eingang, ein Ausgang
  • Umfang maximal eine Seite
  • Rücksprünge werden vermieden
  • Pro Modul ein Diagramm

Struktogramm - Anweisungen

  • Beispiel:
    • Wertzuweisung
    • Ein- und Ausgabeanweisungen
    • Aufruf einer Bibliotheksfunktionen

Anweisung

Struktogramm - Bedingung und Auswahl

if

Verzweigungen in Programmen Bedingung

  • If-Else in Java

if

Mehrfachverzweigungen

  • Switch-Case in Java

Struktogramm - Schleifen

dowhile

Fußgesteuerte Schleifen

  • Anweisungen werden mindestens einmal ausgeführt
  • do-while in Java

while

Kopfgesteuerte Schleifen

  • Anweisungen werden auch beim ersten Mal erst nach Prüfung der Bedingung ausgeführt
  • While oder For in Java

Struktogramm - Sonstiges

Rücksprung

return

  • Ende der Methode
  • return in Java

Aufruf eines Unterprogramms

method

  • Aufruf einer Funktion in Java

Vom Papier zum Programm

compiler