22
Seite 1 Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Th Letschert

Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

  • Upload
    lamnga

  • View
    236

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 1

Programmieren lernen mit Groovy

AllgemeinesProgramme und ihre Ausführung

Th Letschert

Page 2: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 2

Allgemeines

Dozent Dr. Th. Letschert

Lernziel Einführung in die Software-Entwicklung und ProgrammierungKenntnisse einer modernen Programmiersprache

LiteraturFolien / Skript / Anleitungen

• SoftwareJava SE 6 [ http://java.sun.com/javase/downloads ]Groovy [ http://groovy.codehaus.org/Download ]

Th Letschert

Page 3: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 3

Allgemeines

Entwicklungsplattform

beliebiges Betriebssystem

Java

Groovy

Th Letschert

Page 4: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 4

2 Arten der Programmausführung: Compiler, Interpreter

ProgrammFestlegung von Aktionenin einer festen Notation (Programmiersprache)

Interpreterführt das Programm ausInterpreter als Hardware: Computer (Maschine)

Compilerübersetzt Programme von einer Sprache in die andereQuellsprache: für Menschen verstehbarZielsprache: für Maschinen verstehbar

Th Letschert

Programm

Interpretierer

Daten

ErgebnisCompiler

Maschinen-Programm

Daten

Maschine

Page 5: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 5

Moderne Programmausführung: Virtuelle Maschine ~ Compiler + Interpreter

Compilerist ein Maschinenprogrammwird von Maschine ausgeführt

Virtuelle Maschineist Softwareführt übersetzte Programm ausist ein Maschinenprogrammwird von Maschine ausgeführtvirtuelle Maschine: ~ Interpretierer für Maschinen- Programme~ simuliert Maschine in SW

Th Letschert

Programm(Sprache A)

Interpretierer

Ergebnis

Programm(Sprache B)

DatenMaschine

virtuelle Maschine

Maschine

Compiler

Page 6: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 6

Programmiersprache Java: Was ist Java

ProgrammierspracheSyntax: FormSemantik: Inhalt

Klassenbibliothekvorgefertigte Klassen (Programmkomponenten)

CompilerQuellcode (Java)Zielcode: Bytecode

Virtuelle MaschineSoftware (Maschinenprogramm)simuliert Maschine die Bytecode ausführen kann. (Beliebige Plattform)

public class Hallo {    public static void main(String[] args) {        System.out.println(''Hallo'');   }}

Compiler

� 1 ! Hallo java/lang/Object <init> ()V Code LineNumberTable LocalVariableTable this LHallo; main ([Ljava/lang/String;)V java/lang/System out Ljava/io/Pr .............

virtuelleMaschine

Hallo

Hallo.java

Hallo.class

javac Hallo.java

java Hallo

Th Letschert

Page 7: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 7

Java: Compiler, virtuelle Maschine

Compilerübersetzt Java-Code in Quelltext-Datei (.java-Datei)in Bytecode (Code für virtuelle Maschine)

javac-Programm

Virtuelle Maschine, JVM (Java Virtual Maschine)gedachte Maschineführt Bytecode (in .class-Datei)) ausrealisiert durch

reale Maschine (physischer Prozessor)Bytecode-Interpretierer / java-Programm

auch „Virtuelle Maschine“ / JVM genannt

Warum virtuelle MaschineKeine Anpassung des Compilers notwendigÜbersetzte Programme überall lauffähigNachteil: Ausführung langsamer

Klassisch: Compiler / Bibliotheken an Plattform anpassen, Quellcode transferieren

Java: Ablaufumgebung (JVM) an Plattform anpassen, Bytecode transferieren

CPU / HW

Betriebs-system

java (JVM)

Bytecode

virtuelle Maschine

Java-code

Compiler

reale Maschine

Th Letschert

Page 8: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 8

Java: Entwicklung

project green / Sprache Oak / ~ 1991Konzept: Programmierung von „eingebetteten“ Geräten(Toaster mit Internetanschluss und Web-Server)Beweglicher Code, Virtuelle Maschine

Java 1.02 (erste offizielle Version) ~ 1995Klassenbibliothek : 250 KlassenEinsatz : Fun / Applets

Java 1.1 ~ 1997Klassenbibliothek : 500 KlassenEinsatz : Unterricht / GUI / erste ernsthafte Anwendungen

Java 2 ( ~ Version 1.2 – Version 1.4 ) ~ ab 1998Klassenbibliothek : 2300 KlassenEinsatz : Server- (Geschäfts-) Anwendungen (!)

Java 5 ( ~ Version 1.5) ~ ab 2005Wesentliche Erweiterung/Modifikation (ca. 3500 Klassen)

Java 6 ~ ab 2007Leichte Weiterentwicklung

Th Letschert

Page 9: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 9

Java: Installation

JRE Java SE (= Standard Edition) Runtime EnvironmentEnthält Dinge die zur Ausführung von (bereits übersetzen) Java-

Programmen benötigt werden:virtuelle Maschine (JVM, Programm java) Bibliotheken

JDK Java SE Development KitEnthält

JREJava-Compiler (Programm javac)Weitere Entwicklerwerkzeuge

Für Java-Entwicklungen muss das JDK installiert werden

API-Dokumentation Enthält Beschreibung der Klassen der BibliothekWichtige Dokumentation bei der Programmentwicklung

http://java.sun.com/javase/6/docs/api/Download als java-d.doc.zip

Th Letschert

Page 10: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 10

Java: Programme

Beispiel: ein einfaches Programm bestehend aus

einer Methode (main)in einer Klasse (MyClass)in einem Paket (myPackage)

Programm mit 2 Klassenin einem Paket

Th Letschert

package myPackage;

public final class MyClass {

/** * @param args wird ignoriert */public static void main(final String[] args) {

System.out.println("Hallo Java");}

}

Page 11: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 11

Java: Programme

Java-ProgrammEin Java-Programm besteht aus

mindestens einem Paket (package)kann das namenlose default-Paket sein

mindestens einer öffentlichen Klasse in diesem Paketmindestens einer Methode in dieser Klasseeine der Methoden einer Klasse muss öffentlich sein, den Namen main tragen und ein String-Array als Parameter habenein Methode enthält üblicherweise mindestens eine Anweisung

Th Letschert

package myPackage;

public final class MyClass {public static void main(

final String[] args) {System.out.println("Hallo");

}}

ein Paket: myPackage

eine Klasse im Paket: MyClass

eine Methode in der Klasse: main

eine Anweisung: System.out.println

Page 12: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 12

Java: Programm erstellen, übersetzen und ausführen

Programm erstellen

Verzeichnis erstellen: myPackageDatei erstellen (beliebiger Text-Editor): MyClass und in diesem Verzeichnis in

der Datei MyClass.java speichern

Programm übersetzen

Kommando z.B.: javac myPackage/myClass.java erzeugt die Datei myPackage/myClass.class

Programm ausführen

Kommando z.B.: java myPackage.myClass

Th Letschert

package myPackage;public final class MyClass { public static void main(final String[] args) { System.out.println("Hallo Java"); }}

Editor

Compiler(javac)

JVM(java)

Hallo Java

Page 13: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 13

Java

Java: warummoderne Sprache in stetiger Weiterentwicklungsichert Programme gegen etliche Programmierfehler abStandardsprache für ProgrammierunterrichtPlattform-unabhängigStandardsprache für große kommerzielle Serversystemesehr reichhaltige Sprachmittel

Java: warum nichtteils umständliche Ausdrucksmittelteils sehr komplex Konstruktekorrekte Verwendung erfordert umfangreiches Informatik-Wissen

Th Letschert

Argumentation gilt ähnlich für C#

Page 14: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 14

Groovy

Groovyinterpretierte (Skript-) Sprache, basiert auf Javavereinfachte Ausdrucksmittelzielt auf schnelle Produktivität der Programmiererfür sehr große, langlebige und maximal effiziente Programme nicht geeignet Aktivierung mit Kommando (Programm) groovyConsole

Th Letschert

Crtl-R

> groovyConsole

Page 15: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 15

Sprachelemente: Variable, Zuweisung, Ausdruck

Variable : Ablageplatz für Werte

Zuweisung : Speichern eines Werts in einer Variablen

Ausdruck : Sprachkonstrukt mit dem ein Wert angegeben (berechnet) wird

Th Letschert

Variablen: - radius, - flaeche

Ausdrücke: - 5 - radius*radius * Math.PI

Zuweisungen: - radius = 5 - flaeche = radius*radius * Math.PI

Page 16: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 16

Sprachelemente: Variable, Zuweisung, Ausdruck

Variablendefinition Speicherplatz anlegen

def radius // Variablendefinitionradius = 5 // Zuweisung def radius = 5 // Variablendefinition mit Zuweisung

Zuweisung Wert in Variable speichern

radius = 5 // Wert 5 in der Variablen radius speichern

Ausdruck Sprachkonstrukt das einen Wert bezeichnet

radius5Math.PIradius*radius

Th Letschert

Page 17: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 17

Programm in Datei speichern und ausführen

Speichern über File-Menü

Ausführen von einer Konsole mit Groovy-Kommando

Th Letschert

> groovy kreisflaeche.groovy78.53981633974483

z.B. in kreisflaeche.groovy

speichern

direkt aus der Datei ausführen

Page 18: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 18

Programm mit Komandozeilen-Argument

Kommandozeilen-Argument Argument (Wert für das Programm) das als Teil den Ausführungskommandos eingegeben wird

Beispiel: Double.parseDouble(args[0])

Th Letschert

> groovy kreisflaeche.groovy 578.53981633974483

Ausführung aus GroovyConsole ist nicht möglich (Wert für radius fehlt)

Ausführung an der Kommandozeile mit Argument

Nimm das erste Argument (an Position 0) und wandle es in eine gebrochene Zahl um.

Page 19: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 19

Programm mit graphischer Ein- / Ausgabe

Dialog-Eingabe und -Ausgabe

Argument (Wert für das Programm) über Dialog-Fenster eingegeben

Ergebnis in Dialog-Fenster ausgeben

Th Letschert

Aktivierung mit GroovyConsole

> groovy kreisflaeche.groovy

Aktivierung als Kommando

Page 20: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 20

Programm mit graphischer Ein- / Ausgabe

Dialog-Eingabe und -Ausgabe

Beispiel-Programm:

Th Letschert

import javax.swing.JOptionPane

def radiusString = JOptionPane.showInputDialog("Bitte Radius eingeben:");def radius = Double.parseDouble(radiusString);def flaeche = radius*radius * Math.PI

JOptionPane.showMessageDialog(null, flaeche)

Wert via Dialog vom Benutzer erfragen

Berechnungsergebnis via Dialog dem Benutzer mitteilen

Page 21: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 21

Rückblick : was ist ein Programm und wie wird es ausgeführt

ProgrammAnweisungen, Variablen

ProgrammausführungInterpretierer Compilervirtuelle Maschine

ProgrammierspracheSyntax und Semantikcompilierte Sprache Beispiel Javainterpretierte Sprache Beispiel Groovy

Th Letschert

Page 22: Programmieren lernen mit Groovy - Proteus-Infoproteus.mni.fh-giessen.de/~hg51/WWW/Praesentationen/Groovy/groov… · Seite 4 2 Arten der Programmausführung: Compiler, Interpreter

Seite 22

Rückblick : was ist ein Programm und wie wird es ausgeführt

PraktischProgramm schreiben

Editor => xy.groovygroovyConsole + Speichern in einer Datei

Programm ausführenKommando: groovy xy.groovymit groovyConsole

ProgrammeingabeKommandoargumnete: groovy xy.groovy 1 2 3 Dialog-Eingabe

Programmausgabe printlnDialogausgabe

Th Letschert