Eine Einführung in den Kontrollfluss durch ein JavaKara-Programm: - Aufruf von Methoden (ohne Parameter, ohne Rückgabewerte) - Programmausführung mit

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

Grundlegende Programmierkonzepte: Anweisungen und Methoden

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

Aufgabe Total Punkte

Grundlegende Programmierkonzepte: Variablen, Methoden-Parameter, Rückgabewerte

Gestern: Kara. Steuerung: Endliche Automaten

Arbeiten mit JavaKara

Prüfung Computation, Programming

Rückgabewerte von Methoden

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Arbeitsblatt zu Methoden

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

Ein erstes "Hello world!" Programm

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1


Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein

12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke.

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

II.1.1. Erste Schritte - 1 -

Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen)

JavaKara. public void myprogram() { int zaehler = zaehlekleeblaetterbisbaum(); tools.showmessage("ich habe "+zaehler+ " Kleeblaetter gefunden.

Arbeitsblatt zur While Schleife

Rekursive Funktionen (1)

Selbststudium OOP8 & ALG3 Aufgaben

Rekursive Funktionen (1)

Einführung in die Programmierung I. 2.1 Methoden. Thomas R. Gross. Department Informatik ETH Zürich

2. Unterprogramme und Methoden

II.1.1. Erste Schritte - 1 -

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test


Was passiert eigentlich im Computer wenn ich ein Programm starte

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

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

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

Brückenkurs Programmieren

C++ Quellcodes zum Buch Kapitel 5

Eindimensionale Arrays und Heap

II.1.1. Erste Schritte - 1 -

EWS, WS 2016/17 Pfahler I-1

Einführung: Verteilte Systeme - Remote Method Invocation -

Girls Day 2017 Programmierung

Elementare Konzepte von

Greenfoot: Verzweigungen

4.4 Imperative Algorithmen Prozeduren

Java Bytecode. Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19. Register und Stack. Klassenhierarchie und Typen

Vorlesung Modellierung, Analyse, Verifikation Wintersemester 2018/19

Mit Zyklen schnell zum Werkstück

Informatik II - Tutorium 5

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Bei jedem Arduino-Projekt muss man ein Grundgerüst "bauen". Das sieht dann so aus:

5. Java Arrays und Strings

Effizientes Programmieren

Subprozesse in Python

Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als "der Standard" bezeichnet werden.

41.2 LUA Grundlagen - Funktionen

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

Seminar. Lernen der Programmiersprache Java

Vorlesung Rechnerarchitektur. Einführung

Programmiertechnik Klassenmethoden

Übungen mit Anleitung. Hamster-Simulator. Nicola Ramagnano 23. Oktober 2011

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden

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

Informatik 2 für Regenerative Energien

Vorlesung Programmieren

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Java Virtual Machine (JVM) Bytecode

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Von Assembler zu Java

Exceptions. Prof. Dr.-Ing. Thomas Schwotzer 21. November 2017

Zeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei anderen Zeigertypen zusätzlich die Größe gespeichert werden muss.

1 pulsierender Speicher

Vererbung in der objektorientieren Programmierung

3. Das erste eigene Programm mit Greenfoot: Litte Crab

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

Grundlagen der Programmierung

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Methoden und Wrapperklassen

Einführung in die Programmierung mit Java

Interruptverarbeitung

Zahlenraten: Ein Spiel in Java.

Umsetzung einer Klassenkarte in einer Programmiersprache

2. Programmierung in C

Hochschule Düsseldorf University of Applied Sciences HSD RISC &CISC

Kapitel zu bearbeitende Aufgaben: 6.1 bis :

Grundlagen. Übungen. Klassen, Attribute, Assoziationen, Methoden. Grundlagen_Klassen_Attribute_Assoziationen_Methoden.odt. Christine Janischek

Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining

Michael Dienert. 8. Dezember 2016

Programmierung und Angewandte Mathematik

Übungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm

Universität Karlsruhe (TH)

float *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses

Transkript:

Eine Einführung in den Kontrollfluss durch ein JavaKara-Programm: - Aufruf von Methoden (ohne Parameter, ohne Rückgabewerte) - Programmausführung mit Call Stack

public void myprogram() { kara.turnright(); kara.turnright(); }

public void myprogram() { umdrehen(); } voidumdrehen() { kara.turnright(); kara.turnright(); }

public void myprogram() { umdrehen(); } voidumdrehen() { kara.turnright(); kara.turnright(); } Methode definieren Methode aufrufen Methode definieren Methode aufrufen Methode aufrufen

Der Prozessor Der Arbeitsknecht, der das Programm zum Leben erweckt. Er weiss, welche Programmzeile er als nächstes ausführen muss. Bei JavaKara ist der Start immer in myprogram(). Das Programm Der Programmtext, der ausgeführt werden soll. Die Welt («Daten») Die Welt, in der das Programm ausgeführt werden soll. Sie enthält den Käfer, den der Prozessor steuert.

Der Prozessor Eine Schülerin spielt den Prozessor. Sie hat die Hauptrolle in dieser Aufführung. Das Programm Ein Schüler erhält das auszuführende Programm. Die Welt («Daten») Eine Schülerin steuert zb an einem Computer mit Beamer den Marienkäfer.

Der Prozessor Bei JavaKara ist der Start immer in myprogram(). Wenn diese Methode abgearbeitet ist, hat der Prozessor seine Arbeit erledigt. Das Programm Der Programmtext, der ausgeführt werden soll. Die Welt («Daten») Die Welt, in der das Programm ausgeführt werden soll. Sie enthält den Käfer, den der Prozessor steuert.

Der Prozessor Er weiss, welche Programmzeile er als nächstes ausführen muss. Er muss neu beim Aufruf einer Methode merken, von welcher Programmzeile aus er eine Methode aufgerufen hat. Das Programm Es enthält jetzt eigene Methoden, die eigene Methoden aufrufen. Die Notizen des Prozessors («Call Stack») Mit einem Stapel von Notizkarten kann sich der Prozessor merken, von welcher Programmzeile aus er eine Methode aufgerufen hat. Alternativ als Tabelle dargestellt.

Der Prozessor Eine Schülerin spielt den Prozessor. Sie hat die Hauptrolle in dieser Aufführung. Das Programm Je ein Schüler erhält eine Methode des auszuführenden Programms. Damit muss der Prozessor rumlaufen, das soll den Methodenaufruf verdeutlichen. Die Notizen des Prozessors («Call Stack») Die Schülerin, welche den Prozesserspielt, erhält einen Stapel Notizzettel. Bei jedem Methodenaufruf schreibt sie auf einen neuen Zettel, aus welcher Methode und Zeile der Aufruf kommt.

Methode myprogram Zeile 6 myprogramm: 6

Methode Methode myprogram ganze Drehung Zeile Zeile 6 10 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram ganze dreiviertel Drehung Drehung Zeile Zeile Zeile6 10 15 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram Methode ganze dreiviertel halbedrehung Drehung Zeile Drehung Zeile Zeile6 Zeile10 15 28 halbedrehung: 28 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram Methode ganze dreiviertel halbedrehung Drehung Zeile Drehung Zeile Zeile6 Zeile10 15 28 halbedrehung: 28 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram Methode ganze dreiviertel halbedrehung Drehung Zeile Drehung Zeile Zeile6 Zeile10 15 28 halbedrehung: 28 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram Methode ganze dreiviertel halbedrehung Drehung Zeile Drehung Zeile Zeile6 Zeile10 15 28 halbedrehung: 28 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram Methode ganze dreiviertel halbedrehung Drehung Zeile Drehung Zeile Zeile6 Zeile10 15 28 halbedrehung: 28 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram ganze dreiviertel Drehung Drehung Zeile Zeile Zeile6 10 15 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram Methode ganze dreiviertel halbedrehung Drehung Zeile Drehung Zeile Zeile6 Zeile10 15 29 halbedrehung: 29 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram ganze dreiviertel Drehung Drehung Zeile Zeile Zeile6 10 15 dreivierteldrehung: 15 ganzedrehung: 10 myprogramm: 6

Methode Methode myprogram ganze Drehung Zeile Zeile 6 10 ganzedrehung: 10 myprogramm: 6

Methode Methode Methode myprogram ganze dreiviertel Drehung Drehung Zeile Zeile Zeile6 10 16 dreivierteldrehung: 16 ganzedrehung: 10 myprogramm: 6

Methode Methode myprogram ganze Drehung Zeile Zeile 6 10 ganzedrehung: 10 myprogramm: 6

Methode myprogram Zeile 6 myprogramm: 6

Methode Methode myprogram ganze Drehung Zeile Zeile 6 11 ganzedrehung: 11 myprogramm: 6

Methode myprogram Zeile 6 myprogramm: 6

Der Kontrollfluss bei der Ausführung eines Programms (noch ohne Daten; Methoden haben weder Input noch Output): Der Prozessor führt ein Programm Zeile für Zeile für Zeile aus. Ein Programm kann viele Methoden haben. Der Prozessor merkt sich mit Hilfe eines Stapel Notizkarten, woher ein Methodenaufruf kommt, damit er dorthin zurückkehren kann. Der Stapel kann gross werden, aber nicht unendlich wachsen (was passiert sonst?).

public void myprogram() { while(!kara.onleaf()) { kara.move(); } kara.turnleft(); kara.move(); kara.turnright(); kara.move(); kara.move(); kara.turnright(); kara.move(); // Fortsetzung kara.turnright(); kara.move(); kara.turnleft(); kara.move(); kara.turnright(); kara.move(); kara.move(); kara.turnright(); kara.move(); kara.turnright(); } Das Hauptprogramm ist unübersichtlich: Es ist unklar, welche Befehle inhaltlich zusammengehören und welche nicht. Und es hat viel doppelten Code!

public void myprogram() { suchepilz(); umpilzherum(); kara.move(); umpilzherum(); } void suchepilz() { while(!kara.onleaf()) { kara.move(); } } void umpilzherum() { kara.turnleft(); kara.move(); kara.turnright(); kara.move(); kara.move(); kara.turnright(); kara.move(); kara.turnright(); } Das Hauptprogramm ist so schon fast natürlich-sprachig formuliert. Die Absicht der einzelnen Methoden wird durch deren Namen klar ausgedrückt.

public void myprogram() { umdrehen(); voidumdrehen() { kara.turnright(); kara.turnright(); } }

public void myprogram() { umdrehen(); } voidumdrehen() { kara.turnright(); kara.turnright(); }