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
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
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“
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)
Quelle: [pexels(https://www.pexels.com/de-de/foto/blitz-donner-dramatisch-draussen-1446076/)
ʌ
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)“
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
Einfaches Wasserfallmodell
Der Robuste Fahrkartenautomat
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
Top-Down:
Überblick über das System
Details werden Vernachlässigt
Algorithmus wird zerlegt
Bei der Top-Down-Methode liegt der Schwerpunkt auf Planung und Verständnis des Systems
Bottom-Up:
zunächst einzelne Programmbestandteile
(z. B. Funktionen, Klassen, Module)
Quelltext muss auf wiederverwendbarkeit optimiert werden
Gegebenenfalls schwierigkeiten bei der Kombination der Module
Pseudocode
Pseudocode ist eine abstrahierte , textuelle Darstellung eines Programms
Beispiele
theQuestion= 2* b | | ! ( 2* b)
Beispiele
doIt( ) | | ! doIt( ) ;
// try();
Struktogramme
Motivation
Flussdiagramme sind fehleranfällig und unübersichtlich
Beschränkung der Verzweigung und Reduzierung des Umfangs
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
Struktogramm - Bedingung und Auswahl
Verzweigungen in Programmen Bedingung
Mehrfachverzweigungen
Struktogramm - Schleifen
Fußgesteuerte Schleifen
Anweisungen werden mindestens einmal ausgeführt
do-while
in Java
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
Ende der Methode
return
in Java
Aufruf eines Unterprogramms
Aufruf einer Funktion in Java
Vom Papier zum Programm