Wie entwerfe ich ein Programm?

Ähnliche Dokumente
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

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

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Einstieg in die Informatik mit Java

System.out.println("TEXT");

Klausur Grundlagen der Programmierung

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

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

Vorkurs Informatik WiSe 16/17

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Primitive Datentypen

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Kapitel 3: Variablen

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

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

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Werkzeuge zur Programmentwicklung

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Einstieg in die Informatik mit Java

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays und Schleifen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

JAVA-Datentypen und deren Wertebereich

Einstieg in die Informatik mit Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Einführung in die Java- Programmierung

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Java-Vorkurs Wintersemester 15/16

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Einführung in die Programmierung mit VBA

3. Anweisungen und Kontrollstrukturen

Computeranwendung und Programmierung (CuP)

Datenbankanwendungsprogrammierung Crashkurs Java

Klassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68

II.1.1. Erste Schritte - 1 -

Ein erstes Java-Programm

RO-Tutorien 3 / 6 / 12

Propädeutikum zur Programmierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Programmierkurs Java

Unterlagen. CPP-Uebungen-08/

Kontrollstrukturen: Wiederholungsanweisungen

Informatik B von Adrian Neumann

Informatik I - Einstiegskurs

AuD-Tafelübung T-B5b

Einstieg in die Informatik mit Java

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Einführung in die Programmierung

Klausur Fachprüfung Wirtschaftsinformatik. Name:

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Programmieren I. Kapitel 5. Kontrollfluss

Programmiertechnik Kontrollstrukturen

Probeklausur: Programmierung WS04/05

3. Grundanweisungen in Java

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Elementare Konzepte von

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Arbeiten mit JavaKara

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Java Kurs für Anfänger Einheit 5 Methoden

Tag 3 Repetitorium Informatik (Java)

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Algorithmen zur Datenanalyse in C++

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Grundlagen der Programmierung

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Primitive Datentypen und Felder (Arrays)

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

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

Javakurs für Anfänger

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

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

Die einfachsten Anweisungen

Javakurs für Anfänger

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Javakurs für Anfänger

Java: Eine kurze Einführung an Beispielen

PROGRAMMIERUNG IN JAVA

Algorithmen und ihre Programmierung

Welche Informatik-Kenntnisse bringen Sie mit?

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Probeklausur: Programmierung WS04/05

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Transkript:

Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 1

Was für Klassen/ Objekte brauche ich? 1. Vorcode class Benutzereingabe { // Eingabe von Tastatur // einlesen class LottoTipp { // speichert Tipp und // Namen des Spielers class LottoGesellschaft { // Gewinnzahlen ziehen, // mit Tipp vergleichen class LottoSpiel { // Spieler verwalten, // Hauptcode testen Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 2

Flussdiagramm Start 1. Vorcode Programm einrichten Gewinnzahlen ziehen Tipps der Benutzer einlesen Gewinnzahlen für alle überprüfen nein gültiger Tipp? Gewinner benachrichtigen ja Stop Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 3

// Testet den Hauptcode und managt die Spieler class LottoSpiel {... 2. Testcode // Objekte erstellen LottoGesellschaft westlotto = new LottoGesellschaft (); Benutzereingabe eingabe = new Benutzereingabe (); LottoTipp JansTipp = new LottoTipp ();... int[] lottozahlen = new int[6]; // für Benutzereingabe... JansTipp.setTipp (lottozahlen); // Setter westlotto.ziehegewinnzahlen (); westlotto.pruefetipp (JansTipp.getTipp ()); // Getter... Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 4

3. Hauptcode // speichert einen Tipp und den Namen des Spielers class LottoTipp { private int[] tipp = new int[6]; private String name; // Setter und Getter public void settipp (int[] numbers) {... public int[] gettipp () { return tipp; public void setname (String spieler) {... public String getname () { return name; Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 5

Ein Code-Fertiggericht! 3. Hauptcode public class Benutzereingabe { public String getbenutzereingabe (String prompt) { // Gibt eine Aufforderung (prompt) aus, // liefert die Eingabe von der Tastatur als String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 6

Aber nicht alles ist schon vorgekocht... Hier ein paar Zutaten, die wir noch brauchen: Borchers: Programmierung für Alle (Java), WS 06/07 Nr. Kapitel 7

Wrapper-Klassen für elementare Datentypen Benutzereingabe eingabe = new Benutzereingabe (); String tipp = eingabe.getbenutzereingabe ( Ihr Tipp? ); // Wir brauchen einen int-wert! int tippalsint = Integer.parseInt (tipp); // String int Byte, Short, Integer, Long Float, Double Character Boolean Wrapper-Klassen Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 8

Elementare Typen casten byte klein = 17; short gross = klein; short gross = 12461; byte klein = gross; byte klein = (byte) gross; // Literale sind int! // implizite Umwandlung // geht nicht // explizite Umwandlung // klein wird zu -83 int preis = (int) 19.99f; // 19 float preis = (int) 19.99f; // 19.0 00110000 schnipp!! 10101101 Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 9

Elementare Ganzzahlen casten Implizit durch den Compiler byte short int long Explizit durch Sie Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 10

Boolesche Ausdrücke verknüpfen Und: && Oder: Nicht:! (Nicht verwechseln mit!=) if (alter >= 6 && alter < 60) { ermäßigung = false; if (alter < 6 alter >= 60) { ermäßigung = true; Auswertungsreihenfolge unklar? Klammern schaffen Klarheit if ( (alter!= 99 &&!name.equals.( Cubbi )) alter > 500 ) {... Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 11

Noch ein paar nützliche Operatoren... // Post-Inkrement-Operator anzahl ++; // verwende Wert, erhöhe ihn // Prä-Inkrement-Operator ++ anzahl; // erhöhe Wert, verwende ihn // Modulo für ganzzahligen Rest der Division rest = 10 % 3; // rest = 1 rest = 27 % 4; // rest = 3? Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 12

Welche Werte haben x und y am Ende von A bzw. B? Gewinnegewinnegewinne! SMS mit Ergebnis an: A: B: x = 1; y = x++*3; x = 1; y = ++x*3; Die SMS soll nur genau 4 Zahlen // x ist enthalten: 2, y ist 3 x und y für A und // x x und ist 2, y y für ist B6 (in dieser Reihenfolge) Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 13

Wiederholung aus der ersten Vorlesung: Die while-schleife Solange eine Bedingung wahr ist, wiederhole. while (Schleifenbedingung) { Anweisungsblock Die Schleifenbedingung wird zu einem Boolschen Wert ausgewertet: true oder false Boolsche Tests prüfen den Wert einer Variablen, z.b. <, >, ==, >=, <= int summe = 0; int zahl = 1; // wir nur ausgeführt, wenn Bedingung true ist while (zahl <= 100) { summe = summe + zahl; zahl ++; // entspricht zahl = zahl + 1 System.out.println ( Die Summe ist + summe); Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 14

Besser, wenn man die Anzahl Durchläufe schon kennt: Die for-schleife Initialisierung Boolescher Test Wiederholungsausdruck for (int zahl = 0; zahl < 6; zahl++) { // etwas berechnen......... // Erst nach allen Anweisungen in der Schleife // erhöht die JVM hier den Wert von zahl. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 15

Variablenwerte von zahl: int zahl; for (zahl = 0; zahl < 6; zahl++) { // am Anfang... // am Ende // nach der Schleife System.out.println (zahl); // 6 am Anfang am Ende 0 1 1 2 2 3 3 4 4 5 5 6 Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 16

Enhanced for-schleife int[] gewinnzahlen = new int[6]; Spart Tipparbeit und Fehler! Iterationsvariable in Element-Collection, z.b. ein Array for (int zahl : gewinnzahlen) { // Die Variable zahl enthält in jeder Iteration das // nächste Element des Arrays. 1. Iteration: zahl == gewinnzahlen[0]; 2. Iteration: zahl == gewinnzahlen[1]; 3. Iteration: zahl == gewinnzahlen[2]; 4. Iteration: zahl == gewinnzahlen[3]; 5. Iteration: zahl == gewinnzahlen[4]; 6. Iteration: zahl == gewinnzahlen[5]; Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 17

// Gewinnzahlen ziehen, mit Tipp vergleichen class LottoGesellschaft { private int[] gewinnzahlen = new int[6]; private void ziehegewinnzahlen () { // wie geht das? // Anzahl Treffer zurückliefern public int pruefetipp (int [tipp]) { // Übungsaufgabe Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 18

Die Java-API......hat viele Fertiggerichte! double Math.random () // liefert Zahl aus [0...1[ // Gewinnzahlen ziehen private void ziehegewinnzahlen () { for (int zahl = 0; zahl < 6; zahl++) { gewinnzahlen[zahl] = (int) (Math.random() * 49) + 1; Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 19

It s demo time! javac LottoSpiel.java java LottoSpiel Für Sie als Übungsaufgaben... Wertebereich der Zahlen prüfen, Tipps und Gewinnzahlen vegleichen... und noch viel meeehr... Nein, die Lösung gibt s nicht bei Media Markt! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 20

Die Java-API und Pakete double Math.random () Klasse Methode im Paket java.lang System.out.println () ArrayList im Paket java.util Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 21

http://java.sun.com/j2se/1.5.0/docs/api/ alle Pakete alle Methoden in einer Klasse alle Klassen im einem Paket

Pakete importieren // import Klassenname; import java.lang.*; // importiert der Compiler für Sie import java.io.*; // benutzt von Benutzereingabe.java import java.util.arraylist; // eine Klasse importieren // ohne import müssten sie jedesmal tippen! java.lang.system.out.println ( Eine Methode aus java.lang ); public java.util.arraylist<lottotipp> nurverlierer (...) {... Paketname Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 23

Arrays LottoTipp deintipp = new LottoTipp (); LottoTipp[] alletipps = new LottoTipp[2000]; // nur ein Spieler // viele Spieler Größe nicht veränderbar! ArrayList <Typ> import java.util.arraylist; ArrayList<LottoTipp> alletipps = new ArrayList<LottoTipp> (); Typ-Parameter Liste wächst und schrumpft dynamisch Speichert nur LottoTipps! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 24

LottoTipp-Objekt alletipps.add (deintipp); int anzahl = alletipps.size (); alletipps.add (meintipp); alletipps.remove (meintipp); ArrayList<LottoTipp> alletipps = new ArrayList<LottoTipp> (); int index = alletipps.indexof (JansTipp); boolean istleer = alletipps.isempty (); boolean istdarin = alletipps.contains (meintipp); Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 25

Enhanced For-Schleife......und Objekte ArrayList<LottoTipp> alletipps = new ArrayList<LottoTipp> (); // LottoTipp Objekt // Getter for (LottoTipp eintipp : alletipps) { int treffer = westlotto.pruefetipp (eintipp.gettipp()); if (treffer >=3) { // ein Gewinner!!! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 26

Jetzt sind Sie wieder an der Reihe! Die Details stehen in den Kapiteln 5 + 6. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 + 6 27