Wenn Programme Entscheidungen fällen müssen, dann …

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Forschungszentrum caesar
Zusammenfassung der Vorwoche
Einführung in JavaScript II
Imperative Programmierung
der Universität Oldenburg
Robotik mit LEGO Mindstorms
Imperative Programmierung Funktionen und Parameter
Imperative Programmierung
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Algorithmisches Problemlösen mit Kara
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Thema des Informatikkurses der Klasse 8
Bedingte Wiederholung (Buch S119)
Einführung in die Programmierung Anweisungen und Datentypen
Schleifen mit der Turtle
Informatik Grundkurse mit Java
Struktogramme IF-ELSE FOR – Schleife
boolean Datentyp und Operator

Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
Wieder und wieder und wieder …. Nicht vor Pilz? ja Schritt vorwärts.
Informatik 1 Übung 2.
Kapitel 1 – Erste Schritte
Algorithmisches Problemlösen mit Kara
Programmieren - wie einsteigen ?
Programmieren Kapitel 3 – Variablen.
Guten Nachmittag!.
Wir haben gesehen Das Gerüst ist bei JavaKara fix vorgegeben
Übungen zum Vortrag „Backtracking mit Heuristiken“
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Berechenbarkeit Klaus Becker 2004.
Didaktische Programminterpreter
Wiederholte Programmausführung
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
2. Zustandsorientiertes Modellieren 2.1 Einfachauswahl
Einführung in JavaKara
Purga - Scriptengine Ein Einblick.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Programmieren - wie einsteigen ?
PHP: Operatoren und Kontrollstrukturen
Gestern: Kara Steuerung: Endliche Automaten.
Programmiervorkurs WS 2014/15 Schleifen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Software Engineering Struktogramme
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
MATLAB Control Statements.
Korrektheit von Programmen – Testen
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
JavaKara programmieren: Methoden
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Variablen und Datentypen
Das Fach Informatik am SMG.  wird als Wahlfach in Klasse 9/10 angeboten,  wird als Grundfach in der MSS angeboten,  wird als Leistungsfach in der MSS.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Class HelloWorldApp { public static void main(String[] args) {... } Grundkurs Inf - wie einsteigen ?
JavaKara programmieren: Verzweigungen
Aufgaben zu Rückgabewerten
Schleifen mit der Turtle
Informatik Kurse
Kara: act()-Methode.
 Präsentation transkript:

Wenn Programme Entscheidungen fällen müssen, dann …

Kein Baum vorne? Schritt vorwärts ja

Kein Baum vorne? Schritt vorwärts Kein Baum links? janein Drehe links ja Schritt vorwärts

Kein Baum vorne? Schritt vorwärts Kein Baum links? Kein Baum rechts? janein Drehe links ja Schritt vorwärts nein Drehe links Schritt vorwärts ja

public void myProgram() { while (! kara.onLeaf()) { if (!kara.treeFront()) { kara.move(); } else if (!kara.treeLeft()) { kara.turnLeft(); kara.move(); } else if (!kara.treeRight()) { kara.turnRight(); kara.move(); } kara.removeLeaf(); }

public void myProgram() { while (! kara.onLeaf()) { if (!kara.treeFront()) { kara.move(); } else if (!kara.treeLeft()) { kara.turnLeft(); kara.move(); } else if (!kara.treeRight()) { kara.turnRight(); kara.move(); } kara.removeLeaf(); }

public void myProgram() { while (! kara.onLeaf()) { if (!kara.treeFront()) { kara.move(); } else if (!kara.treeLeft()) { kara.turnLeft(); kara.move(); } else if (!kara.treeRight()) { kara.turnRight(); kara.move(); } kara.removeLeaf(); }

if («Boolescher Ausdruck») { // falls wahr («true»), dann führe diese Befehle aus } else { // falls nicht wahr («false»), dann führe diese Befehle aus } Ein Boolescher Ausdruck ist eine Formel, deren Resultat ein Wahrheitswert ist. Der Aufruf von kara.treeFront() ist eine solcher Ausdruck: Die Methode gibt true oder false zurück.

«Input» Boolescher Ausdruck: kara.treeFront() Resultat false true «Input» Negation des Ausdrucks: !kara.treeFront() Resultat false true

«Input» UND-Verknüpfung: kara.treeLeft() && kara.treeRight() Resultat false true false «Input» ODER-Verknüpfung: kara.treeLeft() || kara.treeRight() Resultat false true

Operator-Präzedenz und Klammerung kara.treeLeft() && kara.treeRight() || !kara.onLeaf() entspricht (kara.treeLeft() && kara.treeRight()) || !kara.onLeaf() und nicht kara.treeLeft() && (kara.treeRight() || !kara.onLeaf()) ! «bindet» am stärksten (analog -5 in Mathematik) && «bindet» am zweitstärksten (analog -5*4) || «bindet» am drittstärksten (analog -5*4+3) () Klammerungen ermöglichen eigene Reihenfolgen

Test auf Gleichheit kara.onLeaf() == true kürzer geschrieben als kara.onLeaf() Test auf grösser, grösser gleich, kleiner, kleiner gleich 5 < 4 == false 5 <= 4 == false 5 <= 5 == true 5 > 4 == true 5 >= 4 == true 5 >= 5 == true

Kara zum «Tunneleingang» (Feld 2a) laufen und dort stehen bleiben. Alltagssprache: «Kara soll laufen, bis (er links einen Baum und rechts einen Baum hat)». Wir geben die Abbruchbedingung an: Ist das Ziel erreicht? Java: «Solange nicht (Kara links einen Baum und rechts einen Baum hat), soll Kara laufen.» Hier muss die Ausführungs- bedingung angegeben werden: Müssen die Befehle noch ausgeführt werden? while (!(kara.treeLeft() && kara.treeRight())) { kara.move(); }

Kara zum «Tunneleingang» (Feld 2a) laufen und dort stehen bleiben. Ausführungsbedingung «auf (mind.) einer Seite kein Baum»: «nicht (links Baum und rechts Baum)» !(kara.treeLeft() && kara.treeRight()) ist gleich zu «nicht links Baum oder nicht rechts Baum» !kara.treeLeft() || !kara.treeRight() Allgemein formuliert ist das eines der De Morganschen Gesetze: !(a && b) == !a || !b

Kara zur «Gallerie» (Feld 1) laufen und dort stehen bleiben. Ausführungsbedingung «auf keiner Seite ein Baum»: «nicht (links Baum oder rechts Baum)» !(kara.treeLeft() || kara.treeRight()) ist gleich zu «nicht links Baum und nicht rechts Baum» !kara.treeLeft() && !kara.treeRight() Allgemein formuliert ist das eines der De Morganschen Gesetze: !(a || b) == !a && !b 1