Kapitel 2: Programmfluss steuern

Ähnliche Dokumente
HTW IMI-B Informatik 1 Kara Worksheet 2 Seite: 1. Variables to store a true/false state: boolean movingright = true;

PROGRAMMIEREN. Kapitel 1 Erste Schritte

Kapitel 1: Die ersten Schritte 1

Gierhardt. 1 import javakara. JavaKaraProgram ; 3 public class Playit1 extends JavaKaraProgram. 4 { // Anfang von Playit1. 6 void gehezumbaum ( ) 7 {

Kapitel 3: Variablen

Kapitel 1: Die ersten Schritte Thema: Programmieren Seite: 1

Arbeitsblatt zu Methoden

Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen)

Aufgaben. Objektorientierte Programmierung

Aufgaben. Objektorientierte Programmierung

Informatik mit Kara. Spielerischer Einstieg in die Informatik. Gerhard Bitsch. Seminarsitzung Informatik, Januar Kepler - Gymnasium Tübingen

Greenfoot: Verzweigungen

Methoden-Expertin. Aufgabe 1. Das Neue. Lösung in JavaKara. Puzzle: Expertin D

Web und Mobile Apps Programmieren mit Dart

Einführung in die Programmierung für NF. Übung

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

Kara programmieren als Automat

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Kurze Begründung, warum der Ausdruck korrekt ist oder jeweils zwei Gegenbeispiele, die zeigen, warum der Ausdruck nicht korrekt ist

Aufgaben: Gierhardt. 1 import javakara. JavaKaraProgram ; 3 public c l a s s Quadrat extends JavaKaraProgram 4 { 5 void turnaround ( )

AUFGABE 1: REGULÄRE AUSDRÜCKE (5 PUNKTE)

Prüfung Computation, Programming

Java Anweisungen und Ablaufsteuerung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Grundlegende Programmierkonzepte: Anweisungen und Methoden

Kara-Programmierung. Mag. Karen Hollweger, BG/BRG Bad Ischl Informatik, Mathematik

Schleifen: Immer wieder dasselbe tun

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

06 While-Schleifen. While-Schleifen 1/7 Wiederholung: Schleifen

Die Denkschule 1 Reto Speerli

Kapitel 2 Einfache Schleifen mit dem Befehl repeat

Kontrollstrukturen und Logik

Java Ablaufsteuerung (Beispiele)

Einführung in die Informatik I

Ideen und Konzepte der Informatik

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Informatik I: Einführung in die Programmierung

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Arbeitsblatt: Wie rede ich mit einem Roboter?

3.4 Struktur von Programmen

Einfaches Labyrinth Kleeblatt-Suche

Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung

Informatik 11: Einführung in Java. Lösungen zu den Rekursions-Aufgaben

Brückenkurs Programmieren

Einstieg in die Informatik mit Java

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

if ( Logischer Operator ) { } else { Anweisungen false

Schleifen in Javascript

Gruppenpuzzle: Bewegung und Zeichnen

3. Bedingte Anweisungen

Programmablaufpläne. Vorgehen zur Erstellung eines lauffähigen C-Programms

WS2018/ Oktober 2018

Kontrollstrukturen und Logik

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Kapitel 5 Zustand eines Objekts

Labor Software-Entwicklung 1

import JavaKaraProgram; public class Quadrat extends JavaKaraProgram { // Anfang von Quadrat void turnaround() { kara.turnleft(); kara.

Test zur Erfassung des Kenntnisstands

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Algorithmen und Datenstrukturen (für ET/IT)

In dieser Aufgabe geht es darum, das einfache Meteor-Spiel zu verstehen und anzupassen. Lade als erstes das Spiel sample12 und spiele es.

DENKEN VERSTEHEN LERNEN Computational Thinking in der Grundschule

Programmieren - wie einsteigen? class HelloWorldApp { public static void main(string[] args) { System.out.println("Hello World!

Programmierkurs Java

Kontrollstrukturen -- Schleifen und Wiederholungen

Einfache Bedingte Ausführung

Dash- Crash- Kurs. ein Robotik-Workshop mit dem Roboter Dash

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Schleifen in C/C++/Java

Ich gehe einen Schritt nach vorne

5. Elementare Befehle und Struktogramme

1. Einführung. Programmieren 1 / Algorithmen und Datenstrukturen. Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2010

Einführung in JAVAKARA

JavaKara. In JavaKara gibt es folgende Anweisungen: kara.move()

Prüfung Programming, Automation, Computation

JavaKara Aufgaben. 1 Kara und die Blätter... (einfach)

Informatik I Übung, Woche 40

1 Grundbefehle. Gerade Linien zeichnen

ECDL MODUL COMPUTING. Syllabus Version 1.0

Programmsteuerung mit PHP - if/else, elseif,switch

Korrektheit und Hoare-Kalkül für Imperative Programme

Einführung Java Programmieren in Java Arrays Schleifen Fehler. Einführung in Java. Arne Hüffmeier. Michelle Liebers, Dennis Hoffmann

Transkript:

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 1 Kapitel 2: Programmfluss steuern Das Flussdiagramm Um schwierige Aufgaben beim Programmieren zu lösen, ist es oft hilfreich, den Programmablauf in einem Flussdiagramm darzustellen. Folgende Symbole werden in einem Flussdiagramm verwendet: Symbole Bedeutung Start bzw. Stopp Aktivität Entscheidung / Bedingung AUFGABE 9: UM BAUM HERUM II a) Ergänzen Sie das Flussdiagramm so, dass Kara das Kleeblatt in allen Welten mit den folgenden Eigenschaften erreicht: - Das Kleeblatt liegt immer gerade vor ihm er muss nur um die Bäume herumlaufen. - Es stehen nie zwei Bäume nebeneinander Run-Wiederholungen act()-start yes treefront() no goaroundtree() move() act()-end

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 2 b) Zeichnen Sie ein erweitertes Diagramm, so dass Kara das Kleeblatt am Schluss auch aufliest, wenn er es findet. Rechts finden Sie nochmals die verfügbaren Methoden von Kara. Rufen Sie am Schluss die Methode stop() auf, damit das Programm stoppt. Lösungsvorschlag: Kara Aktionen: move() turnleft() turnright() putleaf() removeleaf() Sensoren: treefront() treeleft() treeright() onleaf() mushroomfront() Bedingte Anweisungen in Java 1 if (treefront()) { turnleft(); else { Bedingung Anweisungsblock 1 wenn Bedingung true ist. Anweisungsblock 2 wenn Bedingung false ist. Hinweis: Der else-teil (Anweisungsblock 2) kann, wenn er nicht benötigt wird, weggelassen werden. 1 Basiert auf: Thomas Kempe und David Tepasse, Informatik 1 - Softwareentwicklung mit Greenfoot und BlueJ, 1. Aufl (Paderborn: Schöningh, 2010), S. 36.

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 3 AUFGABE 10: Beschreiben Sie zuerst mit Worten, was die folgenden Codebeispiele bewirken. Skizzieren Sie diese jeweils auch als Flussdiagramm. a) if (onleaf()) { else { removeleaf(); putleaf(); Nimmt ein Blatt weg, wenn es eines hat, legt ein Blatt hin, wenn keines dort ist (Invertieren). b) if (onleaf()) { Wenn er auf einem Blatt ist, geht er einen Schritt vorwärts.

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 4 AUFGABE 11: VERSCHACHTELTE BEDINGUNGEN a) Bedingte Anweisungen können auch ineinander verschachtelt sein. Beschreiben Sie, was beim Ausführen des Programms in der gegebenen Kara Welt passiert. Zeichnen Sie ein entsprechendes Flussdiagramm. if (treeleft()) { if (onleaf()) { removeleaf(); else { else { Nimmt das Blatt auf, wenn links ein Baum steht. Implementieren Nun können Sie die Übungen, welche Sie gezeichnet haben, am Computer umsetzen. Sie sollen wie folgt vorgehen: ZU AUFGABE 9: - Öffnen Sie das scenario09 aus dem Projekt scenarios-chapter-2. In MyKara ist die Methode goaroundtree() bereits programmiert und ein Teil der act()-methode ist vorbereitet. - Programmieren Sie den Ablauf, welchen Sie unter Aufgabe 9b als Flussdiagram gezeichnet haben in der act()-methode. - Für diese Aufgabe haben Sie verschiedene Welten (WorldSetup) zur Verfügung (a, b und c). - Ihr Programm sollte in jeder Welt ohne Fehlermeldungen funktionieren. ZU AUFGABE 11: - Öffnen Sie das scenario11 und programmieren Sie das unter Aufgabe 11a skizzierte Programm. Formen Sie das Programm so um, dass Kara die Kleeblätter nur dann aufliest, wenn kein Baum neben ihm ist.

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 5 Logische Operatoren Unser Kara kann nun schon mehr als einfach nur simple Befehle abzuarbeiten. Er kann durch die Benutzung von Bedingungen auf die jeweiligen Ergebnisse eines Sensors unterschiedlich reagieren. Es sollte Kara aber natürlich auch möglich sein, auf zwei oder mehrere Sensoren gleichzeitig zu reagieren. Die folgende Tabelle zeigt die drei wichtigsten logischen Operatoren in Java: Operator Beschreibung Beispiel && und treefront() && onleaf() Ist nur erfüllt (true), wenn beide Aussagen erfüllt sind, d.h. wenn Kara vor einem Baum und auf einem Blatt steht. oder treefront() onleaf() Ist dann erfüllt (true), wenn entweder die eine oder die andere Aussage oder beide erfüllt sind.! nicht!treefront() Ändert einen Ausdruck von true in false und umgekehrt. Diese Aussage wäre also dann erfüllt (true), wenn Kara nicht vor einem Baum steht. Ein Beispiel in Java würde wie folgt aussehen: if (treeleft() && onleaf()) { // Mache etwas oder auch kombiniert: if (treeleft() &&!treeright()) { // Mache etwas AUFGABE 12: ANGST VOR TUNNEL Kara hat etwas Angst vor Tunneln. Er soll auf jedem Feld überprüfen, ob es ein Tunneleingang ist (d.h. ob es auf beiden Seiten Bäume hat). Ist dies der Fall, so lässt er vor Schreck gleich ein Kleeblatt fallen. Tunneleingang Öffnen Sie scenario12, schreiben Sie das Programm und testen Sie es mit allen drei Welten. AUFGABE 13: BLATT BEIM BAUM Nun soll Kara wieder geradeaus gehen und überall dort ein Blatt legen, wo entweder links oder rechts oder auf beiden Seiten ein Baum steht. Öffnen Sie scenario13 und schreiben Sie das Programm dazu. AUFGABE 14: BLÄTTER LEGEN BIS ZUM BAUM Kara soll vorwärts laufen und dabei überall ein Blatt legen, wo keines ist. Wenn er beim Baum angelangt ist, soll er nichts mehr machen. Öffnen Sie scenario14, schreiben Sie das Programm und testen Sie es.

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 6 AUFGABE 15: RUNDGANG Kara geht in einem Rundgang auf die Suche nach einem Kleeblatt (und liest es auf). Jedes Feld im Rundgang hat genau zwei freie benachbarte Felder. Eines liegt immer hinter Kara, von diesem Feld aus ist er auf das aktuelle Feld gekommen. Öffnen Sie scenario15 und verfassen Sie ein passendes Programm dazu. Testen Sie Ihr Programm mit allen drei Welten! Tipp: Stellen Sie sich vor, was nach jedem Drücken des Step-Knopfes geschehen muss. Zeichnen Sie dafür als Hilfe ein Flussdiagramm. ZUSATZAUFGABE 16 (SCHWIERIG): KARA SPIELT PACMAN Kara spielt Pacman: Er steht auf dem ersten Kleeblatt einer langen Spur von Kleeblättern, die vor einem Baum endet. Er soll alle Kleeblätter auffressen und vor den Bäumen stoppen. Schreiben Sie zur besseren Übersicht für gewisse Programmteile eigene Methoden. Schleifen Kara kann jetzt nach von uns festgelegten Regeln auf verschiedene Situationen reagieren. Er ist allerdings noch nicht in der Lage, Anweisungen bis zum Eintreten eines bestimmten Ereignisses zu wiederholen. Zum mehrfachen Ausführen von Anweisungsblöcken werden Schleifen verwendet. Als Beispiel möchten wir folgendes tun: Kara soll sich solange vorwärts bewegen, bis er auf einen Baum trifft. Im Flussdiagramm sieht man, dass move() immer wieder ausgeführt wird, solange kein Baum vor Kara steht. Start Die Schreibweise in Java: while (!treefront()) {! treefront() move() yes no Stop

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 7 AUFGABE 17: Gegeben ist die folgende Situation: Kara steht vor einem Tunnel. Beschreiben Sie, was die folgenden Schleifen bewirken und wie viele Schritte Kara macht. 1 2 3 4 5 Code Beschreibung Anzahl Schritte while (treeleft()) { Solange links ein Baum steht, mache einen 4 Schritt. while (treeright()) { Solange rechts ein Baum steht, mache einen Schritt. 0 while (treeleft() treeright()) { Solange entweder links oder rechts ein Baum steht, mache einen Schritt. 5 if (treeleft()) { while (treeleft() && treeright()) { Zuerst ein Schritt, wenn links ein Baum. Solange links und rechts ein Baum steht, mache einen Schritt. 4 while (!treefront) { if (treeleft()) { Solange kein Baum vor Kara steht Wenn links ein Baum, mache einen Schritt Achtung: Endlosschleife! 4 AUFGABE 18: UM BAUM HERUM III Dies ist die ähnliche Übung wie in Aufgabe 9: Kara soll ein Kleeblatt finden, das geradeaus vor ihm liegt. Nun können aber eine beliebige Anzahl Bäume hintereinander stehen. a) Öffnen Sie scenario18 und verbessern Sie die Methode goaroundtree() so, dass Kara um mehrere Bäume herumgehen kann. Testen Sie Ihr Programm in allen vorgegebenen Wiesen. b) Ändern Sie die act()-methode so ab, dass man nur noch einmal auf den Step-Knopf drücken muss. Kara soll dann automatisch um die Bäume laufen, bis er das Kleeblatt erreicht. Am Schluss soll er es dann wieder auffressen.

Kapitel 2: Programmfluss steuern Thema: Programmieren Seite: 8 AUFGABE 19: TREPPENSTEIGEN Kara soll eine beliebig lange Treppe hochlaufen. Schreiben Sie eine Methode onestepup(), wo Sie Kara eine einzelne Stufe hochsteigen lassen. Überlegen Sie Sich, wie Kara erkennen kann, ob er noch eine Stufe steigen muss. Hinweis: Die Lösung soll mit dem Step-Knopf funktionieren. ZUSATZAUFGABE 20 (SCHWIERIG): KARA ALS WÄCHTER Kara will einen Wald bewachen. Er soll endlos aussen am Waldrand entlang laufen. Als Hilfe können Sie Sich ein Flussdiagramm zeichnen. Hinweis: Für eine Endlosschleife können wir auf den Run-Knopf drücken. Hinweis zu Kara: - Ideen und Konzepte von Kara wurden entwickelt von Jürg Nievergelt, Werner Hartmann, Raimond Reichert et al., http://www.swisseduc.ch/informatik/karatojava/, abgerufen Februar 2011. - Einige Kara-Übungen basieren auf Unterlagen von Horst Gierhardt, http://www.swisseduc.ch/informatik/karatojava/javakara/material/, abgerufen Februar 2011.