47
Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013.

Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Web und Mobile Apps

Programmieren mit Dart

Marco Jakob

Workshop INFOS 2013 in Kiel

28.09.2013.

Page 2: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

ZIEL

Programmier-

unterricht

aktuell attraktiv

wenig

Hürden

Page 3: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Inhalt

• Weshalb Web und Mobile im Unterricht?

• aktuelle Möglichkeiten für Web und Mobile

• die Sprache Dart

• Einsatzmöglichkeiten für den Unterricht

• Praktischer Teil

• Diskussion

Page 4: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

ZU MIR…

Page 5: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013
Page 6: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

ABER…

hat sich bewährt

Page 7: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

"Läuft das auch auf

meinem Handy?"

"Kann ich damit eine

Webseite programmieren?"

Billdquelle: Webalys (webalys.com)

Page 8: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Billdquellen: Webalys (webalys.com) und IFA

Page 9: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Billdquellen: Webalys (webalys.com) und IFA

Weshalb Web und

Mobile im Unterricht?

Page 10: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

AKTUELLE MÖGLICHKEITEN

FÜR WEB UND MOBILE

Page 11: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Problematik mobiler Anwendungen

iOS-Apps

• Sprache: Objective-C

• Laufen nur auf iPhones und iPads

• Entwicklung bevorzugt auf Mac-

Betriebssystem

• Installation über App Store schwierig

Billdquellen: Webalys (webalys.com)

Page 12: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Problematik mobiler Anwendungen

Android-Apps

• Sprache: Java (eigene Philosophie)

• Laufen nur auf Android-Geräten

Billdquellen: Webalys (webalys.com)

Page 13: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Eine Möglichkeit – Alles im Webbrowser

Billdquellen: Webalys (webalys.com), Visual Pharm (visualpharm.com) und IFA

Page 14: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Problematik webbasierter Anwendungen

PHP, ASP.net, …

Häufig verwendet für dynamische

Webanwendungen

Komplexe Kommunikation mit Server

Weniger geeignet für moderne,

objektorientierte Programmierkonzepte

Billdquellen: Webalys (webalys.com) und IFA

Page 15: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Problematik webbasierter Anwendungen

Python, Java, C++, Visual Basic, …

Gut für objektorientierte Konzepte

Langer und steiniger Weg bis zu einer

Webapplikation

Komplexe Kommunikation mit Server

Sprachen ursprünglich nicht für

Webprogrammierung entwicklelt

Billdquellen: Webalys (webalys.com) und IFA

Page 16: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Problematik webbasierter Anwendungen

JavaScript

Wird als einzige Sprache von allen

gängigen Browsern unterstützt

Webapplikationen für Mobile und Desktop

sind möglich

Schwierige Programmierkonzepte

Viele Ausnahmefälle und Überraschungen

Billdquellen: Webalys (webalys.com) und IFA

Page 17: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

DIE SPRACHE DART

Page 18: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

(JavaScript)

Billdquellen: Webalys (webalys.com) und IFA

Page 19: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Objektorientierte Sprache

Stark an Java, C++, Smalltalk, … angelehnt

Einfacher zu lernen

Dart Ökosystem

• Dart Editor

• Viele nützliche Bibliotheken: Math, HTML,

Kryptografie, Datenbanken, …

• Hilfsbereite Open Source Community

Page 20: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Dart Editor

Code completion

Debugger

Refactoring

Warnings

Page 21: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Demo

3 Möglichkeiten ein Dart-Programm zu starten

Billdquellen: Visual Pharm (visualpharm.com)

Page 22: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Hello World

main() {

print("Hello, World!");

}

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, World!");

}

}

Dart

Java

Page 23: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

PRAKTISCHER TEIL

Page 24: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Möglichkeiten für den Unterricht

• Konsole (Hello World, Math)

• Lernszenarien (Miniwelt Kara)

• Dynamische Webseiten (Todo-Liste)

• Spieleprogrammierung (Canvas)

• Client-Server Programmierung (z.B. Chat)

Page 25: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Die Welt von Kara

Page 26: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Unterlagen

• http://edu.makery.ch/

– Unter Projects, Learn Dart

Page 27: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Aufgabe 2 – Um Baum herum (S. 5)

Schreiben Sie ein Programm, welches Kara auf dem angegebenen Weg zum

Kleeblatt führt. Er muss dabei um die Bäume herumlaufen. Beim Kleeblatt

angekommen soll er es aufheben.

void act() { move(); turnLeft(); move(); turnRight(); move(); move(); turnRight(); move(); turnLeft(); ... }

Page 28: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Aufgabe 2

public class MyKara extends Kara

{

public void act()

{

move();

turnLeft();

move();

turnRight();

move();

move();

turnRight();

move();

turnLeft();

turnLeft();

move();

turnRight();

move();

move();

turnRight();

move();

turnLeft();

move();

turnLeft();

move();

turnRight();

move();

move();

turnRight();

move();

turnLeft();

removeLeaf();

}

}

Page 29: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Aufgabe 3 – Um Baum Methode

Schreiben Sie zwischen die geschweiften Klammern der Methode

goAroundTree() die Befehle, die es braucht, um um den Baum zu kommen.

void goAroundTree() { turnLeft(); move(); turnRight(); move(); move(); turnRight(); move(); turnLeft(); }

Page 30: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Aufgabe 3

void goAroundTree() { turnLeft(); move(); turnRight(); move(); move(); turnRight(); move(); turnLeft(); }

void act() { move(); goAroundTree(); goAroundTree(); move(); goAroundTree(); removeLeaf(); }

Page 31: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Was, wenn sich die Wiese ändert?

void act() { move(); goAroundTree(); goAroundTree(); move(); goAroundTree(); removeLeaf(); }

Was passiert auf dieser Wiese?

Page 32: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Ausblick Kapitel 2 Programmfluss

Start

nein ja

Stopp

treeFront()

move() goAroundTree()

Page 33: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Möglicher Aufbau mit Kara

Tag 1

– Dart Editor kennen lernen

– Kara Szenario verstehen

– Ausführen und schreiben von Programmen

Tag 2

– Bedingungen (evtl. mit Flussdiagrammen)

– Logische Operatoren

Tag 3

– Schleifen

– Variablen

Tag 4 – Kara Sokoban

– Interaktive Steuerung

– Eigene Levels und Bilder

– Szenario veröffentlichen

Tag 5

– Methoden mit Parametern und Rückgabewerten

Page 34: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Wie weiter…?

DartKara

• Einfache Szenarien

DartKara

• Komplexere Szenarien

• Bsp. Kara Sokoban

Dynamische Webseiten

• Bsp. Todo-Liste

Client-Server /

Eigene Spiele

• Datenbanken

• HTML5 Canvas

Page 35: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Beispiel Kara Sokoban

Page 36: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Beispiel Kara Sokoban

• Pfeil-Steuerung – Üben mit Variablen und Bedingungen

– Dokumentation lesen

• Vor Baum schützen, Pilze schieben – Methode schreiben

• Schritte zählen – Variablen

• Eigene Levels – Kreativität mit ASCII

– Levels mit Anderen teilen

• Highscore-Liste (für Fortgeschrittene)

Page 37: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

DART CODE-BEISPIELE

Page 38: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Funktionen und Variablen

// Funktion definieren.

printNumber(int number) {

// Nummer auf Konsole ausgeben.

}

main() {

// Variable deklarieren und initialisieren.

var number = 42;

// Funktion aufrufen.

printNumber(number);

}

Page 39: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Alles sind Objekte

// String in einen int umwandeln.

int i = int.parse("5");

// int in einen String umwandeln

String s = 22.toString();

Page 40: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Klassen import 'dart:math';

class Point {

num x;

num y;

// Konstruktor (kurz)

Point(this.x, this.y);

}

main() {

var p = new Point(2, 3);

}

// Konstruktor (lang)

Point(num x, num y) {

this.x = x;

this.y = y;

}

Page 41: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

String Interpolation

print('Hallo $name');

print('Distanz ${p.distanceTo(q)}');

Page 42: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Interaktion mit dem Browser // HTML Knopf erstellen.

var button = new ButtonElement()

..text = 'Bestellen'

..classes.add('wichtig')

// Knopf in HTML einfügen.

query('#bestellung').children.add(button);

// Beim Klicken die Funktion handleOnClick aufrufen.

button.onClick.listen(handleOnClick);

void handleOnClick(MouseEvent event) {

window.alert('Danke!');

}

Page 43: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Fazit?

Programmier-

unterricht

aktuell attraktiv

wenig

Hürden

Page 44: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

attraktiv aktuell

Objektorientierte Sprache

Client-Server (in einer Sprache)

Professionelle Entwicklungsumgebung

Page 45: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Einfacher Editor

Grosse Ähnlichkeiten mit

Java, C#, etc.

wenig

Hürden

Viele nützliche Bibliotheken

Elegante Sprache

Page 46: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Diskussion

• Meinung zu Dart im Unterricht

• Meinung zu Einsatzmöglichkeiten

– Konsole (Hello World, Math)

– Lernszenarien (Kara)

– Dynamische Webseiten (Todo-Liste)

– Spieleprogrammierung (Canvas)

– Client-Server Programmierung (z.B. Chat)

Page 47: Web und Mobile Apps Programmieren mit Dart · Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013

Umfrage

• Ihre Meinung!!

– Soll das Material weiterentwickelt werden?

• Umfrage:

http://goo.gl/sYwnG1