TAG 2: ANIMTATIONEN UND SCHLEIFEN Brückenkurs Programmierung WiSe 15/16

Ähnliche Dokumente
Bru ckenkurs Programmieren

TAG 3: FUNKTIONEN, EVENTS, ARRAYS, EXKURS: SPEICHERVERWALTUNG Brückenkurs Programmierung SoSe 16

TAG5: ABSCHLUSS Brückenkurs Programmierung WiSe 15/16

TAG 1: EINSTIEG, PROCESSING VARIABLEN UND VERZWEIGUNGEN Brückenkurs Programmierung WiSe 16/17

TAG5: ABSCHLUSS Brückenkurs Programmierung SoSe 17

Bru ckenkurs Programmieren

PROCESSING STRUKTUR UND INPUT. Created by Michael Kirsch & Beat Rossmy

Vorkurs Informatik WiSe 16/17

Repetitorium Informatik (Java)

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

TAG 4: SORTIEREN VON ARRAYS, OBJEKTORIENTIERTE PROGRAMMIERUNG Brückenkurs Programmierung SoSe 17

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Brückenkurs Programmieren

PROCESSING EINE EINFÜHRUNG IN DIE INFORMATIK. Created by Michael Kirsch & Beat Rossmy

Vorkurs Informatik WiSe 17/18

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

2 Programmieren in Java I noch ohne Nachbearbeitung

Brückenkurs Programmieren

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Bru ckenkurs Programmieren

PROCESSING KLASSEN UND OBJEKTE. Created by Michael Kirsch & Beat Rossmy

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Objektorientierte Programmierung

Created by Michael Kirsch & Beat Rossmy

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Brückenkurs Programmieren

Einführung in die Programmierung 1

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Vorkurs Informatik WiSe 16/17

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java Zusammenfassung. Basisdatentypen ganzzahlig: Byte, Short, Integer, Long Fließkomma: Float, Double Zeichen: Character Wahrheitswerte: Boolean

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Tag 7 Repetitorium Informatik (Java)

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Objektorientierte Programmierung

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Eine schnelle Processing-Einführung. von Thomas Rau

Praktische Informatik 1

Einführung in C. EDV1-04C-Einführung 1

Java Datentypen und Variablen

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Girls Go Informatics

JAVA-Datentypen und deren Wertebereich

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Objektorientierte Programmierung Studiengang Medieninformatik

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Überblick. Typanpassungen Iteration mit Schleifen Bedingte Anweisungen. Agile Softwareentwicklung Einfaches Ratespiel.

Wie entwerfe ich ein Programm?

Processing Info zu Variablen und Bedingungen

Java Ablaufsteuerung (Beispiele)

Informatik II. Woche 15, Giuseppe Accaputo

Java Anweisungen und Ablaufsteuerung

Software Entwicklung 1

Einstieg in die Informatik mit Java

Vorkurs: Java-Einführung

Praktische Informatik 1

Javakurs für Anfänger

Einstieg in die Informatik mit Java

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

PROCESSING SCHUBLADEN UND ZEICHEN. Created by Michael Kirsch & Beat Rossmy

Informatik II Prüfungsvorbereitungskurs

Informatik I (D-MAVT)

Klassen als Datenstrukturen

Institut für Informatik und Angewandte Kognitionswissenschaften

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Programmiervorkurs Einführung in Java Tag 1

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

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

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

Transkript:

TAG 2: ANIMTATIONEN UND SCHLEIFEN Brückenkurs Programmierung WiSe 15/16 Toni Barthel

Organisatorisches I Themen: Tag 1: Variablen Operatoren, Verzweigungen Tag 2: Animationen, Schleifen Tag 3: Events, Arrays Tag 4: Funktionen, Objektorientierung Tag 5: Ausblick auf Java und C Heute: Wiederholung Tag 1 Hinweise zur Reference, Cheat Sheet Große Übung zu Animationen

Organisatorisches II Tagesablauf: Zwei Vorlesungsblöcke (ca. 90min), 15min Kaffeepause Neuankömmlinge melden sich bitte in der Pause bei mir Kursunterlagen Informationen: Am Mittwoch tragen bitte alle ROT ;-) http://bit.ly/1kdjymy

Hinweis auf Reference Offizielle Referenz Übersetzte Referenz Cheat Sheet http://bit.ly/1vjo2ot http://bit.ly/1lkz9ke http://bit.ly/1jr5a6n

TAG 2.0: WIEDERHOLUNG Brückenkurs Programmierung WiSe 15/16 Toni Barthel

WDH: Theroie Was verstehen Sie unter Programmierung? Programmieren ist das Schreiben von Computerprogrammen. Ein Computerprogramm ist eine in einer Programmiersprache verfasste Anweisungsabfolge, die ein bestimmtes Problem löst. Wie werden Programme in höheren Pro.-sprachen ausführbar gemacht? Ebenfalls mit einem Programm. Dieses Programm nennt man Compiler. Nenne Sie 3 Programmiersprachen die Sie seit gestern beim Namen kennen. Processing (sozusagen Java), C, Ruby

WDH: Processing Was ist Processing, wofür wird es eingesetzt? Processing ist eine objektorientierte, stark typisierte Programmiersprache, sozusagen stark vereinfachten Version der Programmiersprache Java. Es ist jedoch möglich auf Java in Gänze zurück zugreifen. Processing ist spezialisiert auf die Einsatzbereiche Grafik, Simulation und Animation. Welche Funktion benötigen Sie um ein Viereck zu zeichnen? //rect(x,y,w,h) rect(225,300,200,100); Welche Funktion benötigen Sie um eine Linie zu zeichnen? //line(x1,y1,x2,y2) line(50,50,200,50);

WDH: Sprachunabhängig Nennen Sie die zwei unterschiedliche Hauptgruppen von Datentypen? Einfache (primitive) Datentypen und komplexe Datentypen. Unterteilen Sie primitive Datentypen in Untergruppen. Nennen Sie jeweils einen Datentyp als Beispiel. Integer (int, byte,short,int,long), Gleitkomma (float, double), Zeichen (char), Boolscher (boolean) Wie viele primitive Datentypen haben Sie kennengelernt? 8 (int, float, boolean, char, double, byte, short, long) Wie bilden Sie eine Zeichenkette ( Hallo Welt ) in einem Datentypen ab? String x = Hallo Welt ;

WDH: Verzweigungen I Formulieren Sie folgende die Verzweigung. b>c!= b<a ja wahr nein falsch if(b>c!= b<c) { Antwort //Anweisungsungsblock Anweisungsblock

WDH: Verzweigungen II Formulieren Sie folgende die Verzweigung. ja wahr x<2 nein falsch if(x<2) { Antwort //Anweisungsungsblock Anweisungsblock Anweisungsblock else { //Anweisungsblock

Sprechen Sie PROCESSING Problemstellung Stellen Sie rechts abgebildete Animation mit den ihnen bekannten Funktionen dar. black white 0 < > 255 void setup(){ size(450,600); Antwort void draw(){ 0 255 0 fill(mousex,mousey,mousex); ellipse(mousex,mousey,100,100); 0

TAG 2.1: SCHLEIFEN Brückenkurs Programmierung WiSe 15/16 Toni Barthel

Einfache Wiederholungen und Zufall Problemstellung Stellen Sie rechts abgebildete Animation mit den ihnen bekannten Funktionen dar. void setup() { size(400, 400); smooth(); background(255); nostroke(); Antwort void draw() { // Halbtransparente Farbe in grün/blau-tönen color col = color(0, random(255), random(255), 127); fill(col); // Größe zwischen 50 und 100 Pixeln float s = random(50, 100); ellipse(random(width), random(height), s, s);

Ablaufsteuerung Ablaufsteuerung Kontrollstrukturen IF-(else) Anweisung Swicht-Case Anweisung Schleifen while do-while for-schleife

Wiederholungen: While-Schleife Definition: Eine Schleife (engl. loop) erlaubt die wiederholte Ausführung eines Anweisungsblocks solange eine Fortsetzungsbedingung erfüllt ist. Syntax: while (<Bedingung>) { <Anweisungsblock> Beispiel: while (x <= 600) { x = x+10;

Anschauliches Beispiel Beispiel aus dem (studentischen) Leben: Solange du dich noch nicht am Boden festhalten musst, trinke ein weiteres Bier. boolean gleichgewichtok = true; int alkoholpegel = 0; while (gleichgewichtok) { gleichgewichtok = alkoholpegel < random(10); alkoholpegel = alkoholpegel + 1;

Anschauliches Beispiel Definition: Was passiert, wenn die Fortsetzungsbedingung immer erfüllt wird? boolean gleichgewichtok = true; int alkoholpegel = 0; while (gleichgewichtok) { alkoholpegel = alkoholpegel + 1; Der Computer hört nie auf zu rechnen!

WHILE-Schleife Beispiel I Problemstellung Stellen Sie rechts abgebildete Linienfolge mittels einer Schleife dar. size(400, 650); background(255); strokeweight(2); Antwort while (<Bedingung>) { <Anweisungsblock> // Einfache Linien int y = 0; while (y <= height) { line(0, y, width, y); y = y + 10;

For-Schleife Definition: Oft möchte man in einer Schleife einen Zähler verwenden und man weiß von Anfang an schon, wie oft die Anweisungen in der Schleife ausgeführt werden sollen. Syntax: for (<Initialisierung>; <Bedingung>; <Schrittanweisung>) { <Anweisungsblock> Beispiel: for (int x = 0; x<10; x++) { //Anweisungsblock

Beispiel-For-Schleife I Problemstellung Formulieren Sie folgende Bedingung in eine FOR-Schleife um. size(400, 650); background(255); strokeweight(2); // Einfache Linien int y = 0; while (y <= height) { line(0, y, width, y); y = y + 10; size(400, 650); background(255); strokeweight(2); Antwort // Einfache Linien for (int y = 0; y <= height; y = y + 10) { line(0, y, width, y); Syntax: for (<Initialisierung>; <Bedingung>; <Schrittanweisung>) { <Anweisungsblock>

Beispiel-For-Schleife II Problemstellung Wie können Sie einzelne Punkte mittels FOR-Schleife(n) über die gesamte Arbeitsfläche darstellen? Färben Sie die Punkte zufällig ein. Zutaten: For-Schleife I For-Schleife II Zufall für die Farbe Punkt übersetzt bedeutet das: for( ) for( ) float r = random(a,b) point (x, y); size(400, 650); background(255); strokeweight(5); Antwort // Einfache Linien for (int i = 10; i < width; i = i+10) { for (int j = 10; j < height; j = j+10) { float r = random(0,255); float g = random(0,255); float b = random(0,255); stroke(r, g, b); point(i, j);

TAG 2.2: ANIMATIONEN Brückenkurs Programmierung WiSe 15/16 Toni Barthel

Moving-Ball: Zielstellung

Moving-Ball: Zutaten Problemstellung a) Wie teilen Sie Ihren Quellcode ein? b) Welche Elemente um das Fenster zu initalisieren? c) Welche Funktion benötigen Sie um die Ellipse zu zeichnen? d) Legen Sie Variablen mit dem entsprechenden Datentyp fest: farbebg -> gibt die Farbe des Hintergrunds an farbeball -> gibt die Farbe des Balls an durchmesser -> gibt die Größe des Balls an xposbal -> gibt die x-koordinate der Startposition an yposbal -> gibt die y-koordinate der Startposition an xmovbal -> gibt die Distanz an um die sich der Ball in x Bewegt ymovbal -> gibt die Distanz an um die sich der Ball in y Bewegt //Initalisierung der Variablen void setup () {... void draw () {... size(500, 500); ellipse(x, y, w, h); color farbebg = color(...); color farbeball = color(255,165,0); float durchmesser; float xposbal; float yposbal; float xmovbal; float ymovbal;

Moving-Ball: Initialisierung Problemstellung e) Setzen Sie Ihre Programmcode-Teile zusammen. f) Initialisieren die Variablen. g) Zeichnen Sie die Ellipse. color farbebg = color(255); color farbeball = color(255,165,0); float durchmesser; float xposbal; float yposbal; float xmovbal; float ymovbal; void setup() { size(500, 500); smooth(); durchmesser = 50; xposbal = 0; yposbal = 50; xmovbal = 1; ymovbal = 0; void draw() { // re-draw the background background(white); // draw the ball fill(orange); ellipse(xposbal, yposbal, durchmesser, durchmesser);

Moving-Ball: Bewegung Problemstellung h) Wie bewegen Sie den ball zur nächsten Postion? i) Fügen die Brechnung an geeigneter Stelle ein. xposbal = xposbal + xmovbal; yposbal = yposbal + ymovbal; void draw() { // re-draw the background background(white); // draw the ball fill(orange); ellipse(xposbal, yposbal, durchmesser, durchmesser); // move the ball to its next position xposbal = xposbal + xmovbal; yposbal = yposbal + ymovbal;

Moving-Ball: Rückstoß Problemstellung j) Wie kommen Sie wieder zurück? k) Fügen die Brechnung an geeigneter Stelle ein. // hit the left edge? if (xposbal < 0) { xmovbal = xmovbal*-1; // hit the right edge? if (xposbal > 500) { xmovbal = xmovbal*-1; void draw () {...

Moving-Ball: Ergebnis color white = color(255); color orange = color(255, 165, 0); float xposbal; // (x, y) is the center float yposbal; // of the ball float xmovbal; // move up float ymovbal; // move to the right float durchmesser; void setup() { size(500, 500); smooth(); // set the ball's initial position and velocity xposbal = 0; // start in the center of the screen yposbal = 50; // start in the center of the screen xmovbal = 10; // move to the right / left ymovbal = 0; // move up / down durchmesser = 50; void draw() { background(white); nostroke(); fill(orange); ellipse(xposbal, yposbal, durchmesser, durchmesser); xposbal = xposbal + xmovbal; yposbal = yposbal + ymovbal; if (xposbal < 0) { xmovbal = xmovbal*-1; if (xposbal > 500) { xmovbal = xmovbal*-1; if (yposbal < 0) { ymovbal = -1*yMovBal; if (yposbal > 500) { ymovbal = -1*yMovBal;

TAG 2.3: AUSBLICK KLASSEN UND OBJEKTE Brückenkurs Programmierung WiSe 15/16 Toni Barthel

Was wenn Normale Datentypen nicht reichen? Problemstellung Stellen Sie zwei Bälle mit unterschiedlichen Farben dar. Zwei Variablensätze float x1,y1; color c1; float x2,y2; color c2; Eigener Typ Ball Ball b1, b2;

Zur Verdeutlichung Zur Erinnerung Objektorientierung Programme bestehen aus Objekten, die bestimmte (Teil-)Probleme lösen und zum Lösen eines Gesamtproblems mit anderen Objekten über Nachrichten kommunizieren können

Klassen Definition: Eine Klasse ist eine allgemeingültige Beschreibung von Dingen, in verschiedenen Ausprägungen vorkommen können, aber alle eine gemeinsame Struktur und ein gemeinsames Verhalten haben. Sie ist ein Bauplan für die Erzeugung von einzelnen konkreten Ausprägungen. Syntax: class <Klassen-Name> { //Attribute <Typ> name; Beispiel: class MeinBall { //Attribute int durchmesser; //Konstruktor <Klassen-Name>(<Parameter>){ this.name = nam1; //Konstruktor MeinBall(int radius){ this.durchmesser = 2*radius;

Objekte Definition: Diese Ausprägung einer Klasse bezeichnet man als Objekte oder Instanzen einer Klasse. Syntax: <KlassenName> name = new <Klassenname>(<Parameter>); Beispiel: MeinBall b1 = new MeinBall(30);

Erzeugen und Verwenden von Objekten Klassendefinition class MeinBall { //Attribute int durchmesser; color col = color(0, random(255), random(255), 127); rgb(y,x,z) //Konstruktor MeinBall(int radius){ this.durchmesser = 2*radius; //Variable anlegen MeinBall b1; Objekt erzeugen //Variable über Konstrukteur Aufruf initalisieren b1 = new MeinBall(30); //Änderung der Farbe über Zugriff auf Instanzvariable b1.col = col(0,0,0);

Zusammenfassung While-Schleife: while (<Bedingung>) { <Anweisungsblock> Random random(y,x); random(x); For-Schleife: for (<Initialisierung>; <Bedingung>; <Schrittanweisung>) { <Anweisungsblock> MORGEN: KLASSEN UND OBJEKTE IM DETAIL -> Events und Arrays

Aufteilung der Übungsgruppen A20.1.08 Betriebswirtschaft (1), Elektro- und Informationstechnik (2), Allgemeine Elektrotechnik (17), Energiesysteme (1), Maschinenbau (61), Maschinenbau und Energiesysteme (2) A20.1.09 Allgemeine Elektrotechnik (6), Medieninformatik (16), Technische Informatik (6) A20.2.09 Bahningenieur (2), Physikalische Technik (2), Wirtschaftsmathematik (2), Wirtschaftsinformatik (16), Maschinenbau (1), Mechatronik (4) A20.2.10 Bioinformatik (2), Informatik (10), Ingenieur-Informatik (9) Wirtschaftsinformatik (14) B14.3.15 Biomedizinische Technik (4), Medizinische Physik (1), Umwelt-, Hygiene- u. Sicherheitsingenieurwesen (2), Medizinische-Informatik (9), StudiumPlus (23), Wirtschaftsingenieurwesen (2), Architektur (1), Bauingenieurwesen (2)

HERZLICHEN DANK FÜR IHRE AUFMERKSAMKEIT Toni Barthel