JUGS Java 8 Hands On Übungen
|
|
|
- Helge Peters
- vor 9 Jahren
- Abrufe
Transkript
1 JUGS Java 8 Hands On Übungen (C) Copyright by Michael Inden, 2015 [email protected] Lambdas Aufgabe 1a: Was sind gültige Lambdas? Schaue auf das folgende Interface LongBinaryOperator. public interface LongBinaryOperator long applyaslong(final long left, final long right); Nachfolgend sind einige Lambdas gezeigt. Welche davon sind gültig? Wofür erhält man Fehler beim Kompilieren? final LongBinaryOperator v1 = (long x, Long y) -> return x + y; ; final LongBinaryOperator v2 = (long x, long y) -> return x + y; ; final LongBinaryOperator v3 = (long x, long y) -> x + y; final LongBinaryOperator v4 = (long x, y) -> x + y; final LongBinaryOperator v5 = (x, y) -> x + y; final LongBinaryOperator v6 = x, y -> x + y; Tipp: Überlege ein wenig und prüfe deine Vermutungen dann mithilfe der IDE. Aufgabe 1b: Welche Varianten kompilieren, wenn man das Interface wie folgt abändert: public interface LongBinaryOperator long applyaslong(final long left, final Long right); Aufgabe 2a: Schreibe Functional Interfaces für die folgenden Abbildungen / Aufgaben a) Bilde Objekte von Typ String auf int ab: StringToIntConverter b) Bilde Objekte von Typ String auf String: StringToStringMapper und implementiere diese mit mindestens einem Lambda. 1 von 9
2 JUGS Java 8 Hands On Übungen [email protected] Aufgabe 3a: Gegeben sei folgendes rudimentäres Fragment eines Functional Interfaces als Ergänzung der obigen public interface Mapper<S, T> // TODO: map S -> T // TODO: mapall List<S> -> List<T> Vervollständige die Implementierung, sodass nachfolgendes Programm kompiliert: public static void main(final String[] args) final List<String> names = Arrays.asList("Tim", "Andi", "Michael"); final Mapper<String, Integer> intmapper = String::length; System.out.println(intMapper.mapAll(names)); final Mapper<String, String> stringmapper = str -> ">> " + str.touppercase() + " << "; final List<String> uppercasenames = stringmapper.mapall(names); System.out.println(uppercaseNames); Tipp: Stelle die mapall()-funktionalität mithilfe einer Defaultmethode bereit. Aufgabe 3b: Welche Alternativen bietet das JDK 8? Schaue ins Package java.util.function. Aufgabe 3c: Was ist von Defaultmethoden in Applikationsklassen zu halten? Welche Vorteile bringen diese, welche Fallstricke sollte man bedenken? Diskutiere mit deinem Nachbarn! 2 von 9
3 Aufgabe 4a: Was ist bei Lambdas und dort ausgelösten Checked Exceptions zu bedenken? Wie kann man folgendes Runnable so korrigieren, dass es kompiliert? final Runnable runner = () -> System.out.println("Throwing"); throw new IOException(); ; Aufgabe 4b: Realisiere ein Functional Interface als Erweiterung zu Runnable, dass eine Checked Exception in den Typ RuntimeException public interface RunnableThatThrows extends default void run() // TODO public void runthrows() throws Exception; Der Aufruf soll dann wie folgt möglich sein: public class Exercise4_RunnableThatThrowsExample public static void main(string[] args) final RunnableThatThrows runner2 = () -> System.out.println("RunnableThatThrows"); throw new IOException(); ; runner2.run(); Aufgabe 4c: Realisiere ein Functional Interface als Erweiterung zu Comparator, dass eine Checked Exception in den Typ RuntimeException wandelt basierend auf folgenden public interface ComparatorThatThrows<T> extends Comparator<T> public int comparethrows(final T t1, final T t2) throws Exception; 3 von 9
4 KÜR: Beschäftige dich mit der Frage: Wie kann man mit Lambdas rekursive Aufrufe formulieren? Das geht mit etwas tricksen. Widerlege also die Aussage von Angelika Langer, dass Rekursion in Lambdas nicht möglich ist. 1 Starte mit den folgenden, nicht kompilierfähigen Ausdrücken und bringe diese zum Laufen: UnaryOperator<Integer> myfactorialint = Function<Integer, Long> myfactoriallong = i -> i == 0? 1 : i * myfactorialint.apply(i - 1); i -> i == 0? 1 : i * myfactoriallong.apply(i - 1); Tipp: Versuche es mit einem statischen Attribut oder einem Instanzattribut. Was könnte an dem obigen UnaryOperator problematisch sein? Prüfe deine Lösung mit folgenden Aufrufen: myfactorialint.apply(5) myfactoriallong.apply(5) myfactorialint.apply(20) myfactoriallong.apply(20) myfactorialint.apply(50) myfactoriallong.apply(50) Die Ausgaben sind vermutlich wie folgt: Man erkennt die Überläufe für den Typ Integer bzw. int. Was gibt es für Lösungsmöglichkeiten? Schaue mal in die Klasse Math. Seit Java 8 findet man dort Abhilfe. 1 Maurice Naftalin schreibt dazu Folgendes: Yes, provided that the recursive call uses a name defined in the enclosing environment of the lambda. This means that recursive definitions can only be made in the context of variable assignment and, in fact given the assignment-before-use rule for local variables only of instance or static variable assignment. So, in the following example, factorial must be declared as an instance or static variable. 4 von 9
5 Collections Aufgabe 1a: Formuliere die Bedingungen Zahl ist gerade", Zahl ist positiv", Zahl ist Null" und Wert ist null" als Predicate<Integer> und/oder als IntPredicate und prüfe diese mit verschiedenen Eingaben. final Predicate<Integer> iseven = //... TODO... final IntPredicate ispositive = //... TODO... Aufgabe 1b: Formuliere die Bedingung "Wort kürzer als 4 Buchstaben" und prüfe das damit realisierte Predicate<String> isshortword. Aufgabe 1c: Kombiniere die Prädikate wie folgt und prüfe wieder: Zahl ist positiv und Zahl ist gerade (Nutze die Methode and()) Zahl ist positiv und ungerade (Nutze einen Aufruf von negate()) Aufgabe 2: Lösche aus einer Liste von Namen all diejenigen Einträge mit kurzem Namen. Wandle dazu die externe in eine interne Iteration um. Die JDK-7-Implementierung aus dem Listing soll mithilfe von JDK-8-Mitteln einfacher gestaltet werden: private static List<String> removeif_external_iteration() final List<String> names = createnameslist(); final Iterator<String> it = names.iterator(); while (it.hasnext()) final String currentname = it.next(); if (currentname.length() < 4) return names; it.remove(); private static List<String> createnameslist() final List<String> names = new ArrayList<>(); names.add("michael"); names.add("tim"); names.add("flo"); names.add("clemens"); return names; Tipp: Nutze das in Aufgabe 1 erstellte Predicate<String> isshortword und die Methode removeif(predicate<t>) aus dem Interface Collection<E>. 5 von 9
6 Streams JUGS Java 8 Hands On Übungen [email protected] Aufgabe 1: Quadriere alle ungeraden Zahlen von 1 bis 10 und ermittle deren Summe: final int result = IntStream.of(1,2,3,4,5,6,7,8,9,10).filter( ). map( ). reduce(0, ); Tipp: Verwende lokale Hilfsvariablen, um die Verarbeitungsabfolgen besser lesbar zu gestalten. Möglicherweise ist Integer::sum beim Aufruf von reduce() nützlich. Aufgabe 2a: Finde mindesten drei unterschiedliche Arten, die Werte von 1 bis 10 als Stream zu erzeugen und (kommasepariert) auszugeben. Aufgabe 2b: Generiere die Ziffernfolge der natürlichen Zahlen als unendlichen Stream. Starte die Ausgabe bei 11 und begrenze diese auf 10 Elemente. Tipp: Nutze die Methoden skip(), limit(), generate(supplier) und iterate(). Zur Umwandlung eines IntStream in einen Stream<Integer> dient die Methode boxed(). collect() und Collectors.joining() hilft bei der Ausgabe. Aufgabe 2c: Bedenke, dass unendliche Streams problematisch sein können insbesondere beim Einsatz der Methode sorted(). Führe folgende Anweisungen zunächst ohne sorted() und danach mit aus. Schaue was passiert: public class Exercise2_InfiniteStreamSurprises public static void main(string[] args) IntStream.iterate(0, i -> i + 1). boxed(). // sorted(). limit(10). map(e -> "" + e). foreach(system.out::println); 6 von 9
7 Aufgabe 3: Mitunter muss man eine Statistikauswertung erstellen, die auf einen IntStream operiert, etwa wenn man Minimum, Maximum, Durchschnitt usw. berechnen soll. Mit JDK 7 wird dies aufwendig, aber folgende Möglichkeit mit Stream ist auch nicht optimal: final OptionalInt min = IntStream.of(1,2,3,4,5,6,7,8,9,10).min(); final OptionalInt max = IntStream.of(1,2,3,4,5,6,7,8,9,10).max(); final OptionalDouble average = IntStream.of(1,2,3,4,5,6,7,8,9,10).average(); final long count = IntStream.of(1,2,3,4,5,6,7,8,9,10).count(); final long sum = IntStream.of(1,2,3,4,5,6,7,8,9,10).sum(); Was ist daran unschön? Gibt es eine andere Variante? Schaue dich im IntStream um. Aufgabe 4: Gruppiere den Inhalt eines Streams von Strings nach dem Anfangsbuchstaben, sodass wir folgendes Ergebnis erhalten: A=[Andy], T=[Tim, Tom], M=[Mike, Merten] final Stream<String> inputs = Stream.of("Tim", "Tom", "Andy", "Mike", "Merten"); final Map<Character, List<String>> grouped = inputs. //... TODO... System.out.println(grouped); Tipp: Nutze collect() und die Methode Collectors.groupingBy(). Aufgabe 5a: Erstelle ein Programm, das den Ablauf der Verarbeitungs-Pipeline mithilfe von Konsolenausgaben visualisiert. Ein Startpunkt liefern diese Zeilen: Stream.of("Andi", "Barbara", "Carsten", "Marius", "Micha", "Tim"). map(name -> System.out.println("map: " + name); return name.touppercase(); ). filter(name -> System.out.println("filter: " + name); return name.startswith("m"); ). foreach(name -> System.out.println("forEach: " + name)); Welche Erkenntnisse gewinnst du anhand der Ausgaben? In welcher Reihenfolge sollte man die Operationen ausführen? Tausche einmal die Aufrufe von filter() und map(). Aufgabe 5b: Verbessere das Hineinschauen in den Stream durch Aufruf von peek(consumer). 7 von 9
8 Date and Time API Aufgabe 1: Berechne die Zeit zwischen heute und deinem Geburtstag bzw. deinem Geburtstag und heute. final LocalDate now = LocalDate.now(); final LocalDate birthday = LocalDate.of(1971, 2, 7); Tipp: Verwende die Klasse LocalDate und die Methode until(). Probiere als Variante auch den Aufruf von Period.between(). Aufgabe 2: Ermittle alle Zeitzonen, die mit "America/L " oder "Europe/S " starten und gib diese sortiert auf der Konsole aus oder befülle damit eine Liste. Tipp: Nutze die Klasse ZoneId sowie deren Methode getavailablezoneids(). Setze Streams und das Filter-Map-Reduce-Framework ein, um die zu den zuvor angegebenen Präfixen passenden Zeitzonen-Ids zu ermitteln. Aufgabe 3a: Welcher Wochentag war der Heiligabend 2013 ( )? Was für ein Wochentag war der erste und letzte Tag im Dezember? Starte mit folgenden Programmzeilen: final LocalDate christmaseve = LocalDate.of(2014, 12, 24); System.out.println(DayOfWeek.from(christmasEve)); Aufgabe 3b: Berechne das Datum des ersten und letzten Freitags und Sonntags im März Starte mit folgendem Sourcecode-Schnipsel: final LocalDate midofmarch = LocalDate.of(2014, 3, 15); final TemporalAdjuster tofirstsunday = TemporalAdjusters.firstInMonth(DayOfWeek.SUNDAY); Tipp: Nutze dabei die Klasse TemporalAdjusters und ihre Hilfsmethoden und die Methode with() aus der Klasse LocalDate. Hinweis: Hier gibt es noch folgende alternative Lösung mit der Methode adjustinto() aus dem Interface TemporalAdjuster. tofirstsunday.adjustinto(midofmarch) Welche Variante ist zu bevorzugen bzw. besser zu verstehen? 8 von 9
9 Aufgabe 4: Gegeben ist folgender selbstdefinierter TemporalAdjuster, der einen Datumswert auf den Anfang des jeweiligen Quartals setzt: Demnach springt man am 18. August auf den 1. Juli usw. Eine Implementierung für diese Datumsarithmetik findet man im Internet unter Betrachte den Sourcecode und überlege, was ungünstig an dieser Implementierung ist: 2 public class Exercise04_FirstDayOfQuarterOrig implements public Temporal adjustinto(temporal temporal) int currentquarter = YearMonth.from(temporal). get(isofields.quarter_of_year); if (currentquarter == 1) return LocalDate.from(temporal). with(temporaladjusters.firstdayofyear()); else if (currentquarter == 2) return LocalDate.from(temporal).withMonth(Month.APRIL.getValue()). with(firstdayofmonth()); else if (currentquarter == 3) return LocalDate.from(temporal).withMonth(Month.JULY.getValue()). with(firstdayofmonth()); else return LocalDate.from(temporal).withMonth(Month.OCTOBER.getValue()). with(firstdayofmonth()); Tipp: Was kann man vereinfachen? Entferne Spezialbehandlungen und Inkonsistenzen! Wenn du eine auf Monaten basierende Lösung hast, schaue nochmals in die Aufzählung IsoFields. Dort findet man auch DAY_OF_QUARTER. KÜR: Schreibe eine eigene Realisierung des Interface TemporalAdjuster, die 1. den 2. Samstag oder 3. Freitag usw. ermittelt (parametrierbar) oder 2. den Tag der nächsten Gehaltszahlung ermittelt (25. des Monats, oder Werktag davor, falls der 25. auf ein Wochenende fällt) 2 Leider sieht man auch eine der wenigen kleinen Schwächen im neuen Date and Time API: Die Methode withmonth() arbeitet nicht mit Konstanten vom Typ Month, sondern leider mit int-werten. 9 von 9
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Überblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
Studentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
Informationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
Mediator 9 - Lernprogramm
Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop
WebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
Zählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http://www.d120.de/vorkurs.
Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger http:www.d120.de/vorkurs Aufgabenblatt 3 Du findest zur Bearbeitung dieses Aufgabenblatts zu einigen Aufgaben
5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
Objektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
Große Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Daten sammeln, darstellen, auswerten
Vertiefen 1 Daten sammeln, darstellen, auswerten zu Aufgabe 1 Schulbuch, Seite 22 1 Haustiere zählen In der Tabelle rechts stehen die Haustiere der Kinder aus der Klasse 5b. a) Wie oft wurden die Haustiere
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel [email protected] Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die
Zahlen auf einen Blick
Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.
Java Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1
Zahlenwinkel: Forscherkarte 1 alleine Tipp 1 Lege die Ziffern von 1 bis 9 so in den Zahlenwinkel, dass jeder Arm des Zahlenwinkels zusammengezählt das gleiche Ergebnis ergibt! Finde möglichst viele verschiedene
Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) 18.06.2002. Seite 1
Aufgabe 1: Gegeben ist das folgende Programm: PR figur :n :Länge WH 3 [ VW :Länge WENN :n>1 DANN ( RE 90 figur :n-1 :Länge/2 RW :Länge Seite 1 Zeichne das Bild, welches beim Aufruf der Prozedur mit figur
Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse
Übung 05: Arrays Abgabetermin: xx.xx.xxxx Name: Name, Vorname Matrikelnummer: 0XXXXXX Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch
Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff
Die Java Stream API Funktionale Programmierung mit der Stream API des JDK 1.8 Prof. Dr. Nikolaus Wulff Funktionale Programmierung Neben der Collection API mit default Methoden ist als weitere Neuerung
Auswahlabfragen mit ACCESS
Auswahlabfragen mit ACCESS Abfragekriterien und Operatoren Beim Entwerfen von ACCESS-Auswahlabfragen (queries) sind definierte Abfragekriterien bzw. Operatoren zu benutzen. Ein Abfragekriterium ist eine
Scala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])
3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere
Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu
Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
Viele Bilder auf der FA-Homepage
Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet
Programmieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11
Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe
Software-Engineering und Optimierungsanwendungen in der Thermodynamik
Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Kapitel 4 Die Datenbank Kuchenbestellung Seite 1
Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung
Kulturelle Evolution 12
3.3 Kulturelle Evolution Kulturelle Evolution Kulturelle Evolution 12 Seit die Menschen Erfindungen machen wie z.b. das Rad oder den Pflug, haben sie sich im Körperbau kaum mehr verändert. Dafür war einfach
Professionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
Der lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
Kontrollstrukturen und Funktionen in C
Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren
Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
Delegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
U08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
Erstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG
Frist berechnen BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG Sie erwägen die Kündigung eines Mitarbeiters und Ihr Unternehmen hat einen Betriebsrat? Dann müssen Sie die Kündigung
Unsere Webapplikation erweitern
Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.
Primzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
[zur Information: die Linse a) heißt Konvex-Linse, die Linse b) heißt Konkav-Linse] Unterscheiden sich auch die Lupen voneinander? In welcher Weise?
Station 1: Die Form einer Lupe Eigentlich ist eine Lupe nichts anderes als eine Glaslinse, wie du sie z.b. auch in einer Brille findest. Aber Vorsicht!! Nicht jedes Brillenglas ist auch eine Lupe. Verschiedene
Erwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
Informatik Grundlagen, WS04, Seminar 13
Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt
2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.
Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html
Arbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
Anzeige von eingescannten Rechnungen
Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung
ZAHLUNGSAVIS. Im Zahlungsprogrammteil automatisch erstellen
DIBU GS/XP Finanzbuchhaltung Erweiterung ZAHLUNGSAVIS Im Zahlungsprogrammteil automatisch erstellen Seite - 1 - von 8 Seite(n) Stand März 2005-03-28 Technische Hinweise: Geänderte Programme FIZAHL1, FIZAHL2,
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
Mit Papier, Münzen und Streichhölzern rechnen kreative Aufgaben zum Umgang mit Größen. Von Florian Raith, Fürstenzell VORANSICHT
Mit Papier, Münzen und Streichhölzern rechnen kreative Aufgaben zum Umgang mit Größen Von Florian Raith, Fürstenzell Alltagsgegenstände sind gut greifbar so werden beim Rechnen mit ihnen Größen begreifbar.
Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.
040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl
Deutsches Rotes Kreuz. Kopfschmerztagebuch von:
Deutsches Rotes Kreuz Kopfschmerztagebuch Kopfschmerztagebuch von: Hallo, heute hast Du von uns dieses Kopfschmerztagebuch bekommen. Mit dem Ausfüllen des Tagebuches kannst Du mehr über Deine Kopfschmerzen
Datenbanken Kapitel 2
Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,
Praxisplatz Kindertagesstätte 1 In jeder Kindertagesstätte gibt es einen bestimmten Tagesablauf. Wie sieht der aus? Beobachte die Arbeit deiner Mentorin/deines Mentors und die Aktivitäten ihrer/ seiner
Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".
Mathematik- Unterrichts- Einheiten- Datei e. V. Klasse 9 12 04/2015 Diabetes-Test Infos: www.mued.de Blutspenden werden auf Diabetes untersucht, das mit 8 % in der Bevölkerung verbreitet ist. Dabei werden
Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen
Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig
Kosten-Leistungsrechnung Rechenweg Optimales Produktionsprogramm
Um was geht es? Gegeben sei ein Produktionsprogramm mit beispielsweise 5 Aufträgen, die nacheinander auf vier unterschiedlichen Maschinen durchgeführt werden sollen: Auftrag 1 Auftrag 2 Auftrag 3 Auftrag
Info zum Zusammenhang von Auflösung und Genauigkeit
Da es oft Nachfragen und Verständnisprobleme mit den oben genannten Begriffen gibt, möchten wir hier versuchen etwas Licht ins Dunkel zu bringen. Nehmen wir mal an, Sie haben ein Stück Wasserrohr mit der
Bruchrechnung Wir teilen gerecht auf
Bruchrechnung Wir teilen gerecht auf Minipizzen auf Personen. Bruchrechnung Wir teilen gerecht auf Minipizzen auf Personen. : (+) : + Wir teilen einen Teil Eine halbe Minipizza auf Personen. :? Wir teilen
Einführung in die C++ Programmierung für Ingenieure
Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
Übungsaufgaben zur Programmiersprache Python
Übungsaufgaben zur Programmiersprache Python Stefanie Behrens Niels Lohmann 16. November 2010 Hallo, damit auch zwischen den Vorbereitungscamps Dein neu erworbenes Python- und Programmierwissen nicht einstaubt,
Um die Patientenverwaltung von Sesam zu nutzen, muss man die Patienten natürlich zuerst in die Kartei eintragen.
Kartei, Patient neu anlegen / 1. Kontaktbrief schreiben Um die Patientenverwaltung von Sesam zu nutzen, muss man die Patienten natürlich zuerst in die Kartei eintragen. -> Klick Button Kartei -> Klick
Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler
Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5
Die Größe von Flächen vergleichen
Vertiefen 1 Die Größe von Flächen vergleichen zu Aufgabe 1 Schulbuch, Seite 182 1 Wer hat am meisten Platz? Ordne die Figuren nach ihrem Flächeninhalt. Begründe deine Reihenfolge. 1 2 3 4 zu Aufgabe 2
Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999
Mind Mapping am PC für Präsentationen, Vorträge, Selbstmanagement von Isolde Kommer, Helmut Reinke 1. Auflage Hanser München 1999 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21222 0 schnell
Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
Übung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Rock-Band. Einleitung. Scratch. In diesem Projekt lernst du, wie du deine eigenen Musikinstrumente programmieren kannst! Activity Checklist
Scratch 1 Rock-Band All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Einleitung
Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19
Seite 19 Arbeitsblätter Seite 20 Dieses Arbeitsblatt wird Sie Schritt für Schritt durch das Verfahren von Finanzanalysen geleiten. Sie gehen von Ihren Finanzberichten aus egal wie einfach oder hoch entwickelt
Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert
Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das
Abwesenheitsnotiz im Exchange Server 2010
Abwesenheitsnotiz im Exchange Server 2010 1.) Richten Sie die Abwesenheitsnotiz in Outlook 2010 ein und definieren Sie, an welche Absender diese gesendet werden soll. Klicken Sie dazu auf Datei -> Informationen
Blog Camp Onlinekurs
Blog Camp Reichenberger Str. 48 DE-10999 Berlin [email protected] www.blog-camp.de +49 (0) 152 36 96 41 83 Blog Camp Onlinekurs #IchLiebeBloggen Werde erfolgreicher Blogger www.blog-camp.de [email protected]
Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
Themen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
