Gdprog1_spicker_ws2008

  • Uploaded by: Dirk van Molwentop
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Gdprog1_spicker_ws2008 as PDF for free.

More details

  • Words: 1,445
  • Pages: 2
GdProg 1 – Formelsammlung

HTML-CODE:

Datentypen Bez boolean char byte short int long float

Byte 1 Byte 2 Byte 1 Byte 2 Byte 4 Byte 8 Byte 4 Byte

Werte true/false Unicode 27..27-1 215..215-1 231..231-1 263..263-1 10-38..1038

Ganz ja ja ja ja ja ja nein

VZ nein nein ja ja ja ja ja

Stel 1 1 3 7 10 19 6..7

Exception Handling a) Wie wird dieses Konzept bezeichnet ? Ausnahmebehandlung / Expection Handling b) Was wird mit diesem Sprachelement erreicht ? Abfangen von Laufzeitfehlern. Bedeutung Schlüsselworte: try Beginn des geschützten Bereichs catch Kennzeichnet den Beginn des Blocks zum Auffangen und Reagieren auf Fehler. finally Wird auf jedenfall ausgeführt throws "Wirft" die Exception an höhrere Methode. Throw Bietet Möglichkeit, selber Exceptions auszulösen.

Beispiele: catch(ArrayIndexOutOfBoundsException e){} catch(ArithmeticException e) { //DivNULL} catch(IOException e) { // Eingabefehler} catch(NumberFormatException e) {//Zahl? }

Wir eingebunden durch java.lang;

Applet GutenMorgen JAVA-CODE: import java.applet.*; import java.awt.*; public class GutenMorgen extends Applet { Image picture; AudioClip sound; public void init() { sound = getAudioClip(getCodeBase(), "WelchWunderschoenerTag.au"); picture = getImage(getCodeBase(), "Sonnenaufgang.jpg"); } public void start({ sound.loop();} public void stop(){ sound.stop();} public void paint(Graphics g) { g.drawImage(picture, 0, 0, this); g.drawString("Hello World!",30,30); } public void destroy(){sound.stop();} }

<param name="text" value="Parammeter!">

Die HTML und der ByteCode befinden sich im selben Verzeichnis.

Sequenz & Verzweigung Zählschleife for( int i = 0; i <= feld.length; i++) {System.out.println(feld[i]);} System.out.println("Anz.: "feld.legth()); for( feld : zugriffsvariable} {System.out.println(zugriffsvaiable);}

Bedingungsschleife int i = 1; while ( i <= 10) { i++; } do { i++; } while(i<=10);

Verzweigungen if(true) {} else {}

Mehrfachverzweigung switch(antwort) { case 's': doSomeThing(); break; default: doSomeThing(); }

Aufgabenbeispiel Ausgabe der von des aktuellen Wertes von t, Sinus von t und Cosinus von t solange bis PI erreicht ist.

Array und ArrayList Array Typ[] Name = new Typ[Anzahl]; Typ Name[] = new Typ[Anzahl]; Beispiel String [] mystring = {"eins","zwei","drei"} mystring[2] = "vier"; System.out.println("Anz"+mystring.lenght);

ArrayList in Telefonliste import java.util.*; public class TelefonListe { private static ArrayList <String> liste = new ArrayList <String> (); public static void addList() { liste.add(Console.inpString()); }

public static void countList(){ System.out.println("Die Liste enthaellt " + liste.size() + " Eintraege."); } public static void showList() { System.out.println("Die Liste enthaelt folgenden Inhalt \n+"+liste.toString()); } public static void main (String [] args) { addList(); addList(); countList(); showList(); } }

ArrayList ermöglichen Referenzielle Datentypen (Felder) welche Daten mit verschiedenen Datentypen enthält import java.util.*; class {private static ArrayList liste = new ArrayList (); methode() {liste.add(new String);list.set(index,WERT);liste.remove( index) try { for (Iterator e = liste.iterator () ; e.hasNext () ;) { zeigerInt = liste.indexOf(e.next());}} }}

Typumwandlung (auch Typ-Konvertierung, Typ-Casting, TypKonversionen) Typeinengungen (engl. casting) kann es zu Informationsverlusten kommen. Typeinengungen sind immer explizit anzuweisen. Dazu dient der cast-Operator. double i = 12345678; 012 int d = (int) i;

Modifizierer Erreichbarkeit public protected default private Innerhalb derselben Klasse

Ja

Ja

Ja

Ja

Von einer beliebiger Klasse im selben Paket

Ja

Ja

Ja

Nein

Von einer beliebiger Klasse

Ja

außerhalb des Pakets Von einer Subklasse im selben Paket

Ja

Ja

Ja

Nein

Von einer Subklasse außerhalb des Pakets

Ja

Ja

Nein

Nein

Variablentypen Lokale Variablen class{ methode() { float EineKlassenVariable;} } Klassenvariablen class{ static float EineKlassenVariable; } Instanzvariablen class{ float EineKlassenVariable; } // Zugriff mit this.EineKlassenVariable; Konstanten class{ methode() { final float konstentenVariable;} }

Zeichen & Zeichenketten String var = new String("Zeichenkette"); Strng var = "Zeichenkette"; char var = 'z'; // einfache Anf.Zeichen int var = 4; // keine Anführungszeichen

Ein- und Ausgabe Console import Console.java; class { methode() { zahl = Console.getInt("Bitte geben sie eine Zahl ein!"); }}

Klassisch import java.io.*; class { methode() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Bitte geben Sie Ihren Vornamen ein: "); vorname = br.readLine(); }}

Dateien und Datenströme Eingabestrom

Nein

Nein

Nein

import java.io.*; public class TextAusDateiLesen{ public static void main (String [] args) throws IOException { String datei = "Die_zwei_Wurzeln.txt"; FileReader fr = new FileReader(datei);

GdProg 1 – Formelsammlung BufferedReader br = new BufferedReader(fr); System.out.println("Gedicht von Christian Morgenstern:"); while(br.ready()) System.out.println(br.readLine()); } }

Rekursion Rekursion Bezeichnet eine sich selbst aufrufende Methode mit einer Abbruchbedingung. Wenn sich Probleme in fast identische Teilprobleme zerlegen lassen, dann sind diese oftmals durch rekursive Algorithmen lösbar.

Beispiele Quicksort Rekusiv class QuickSort{ public static int[] quick(int[] reihe, int u, int o) { int i = u, j = o, median; median = reihe[(u + o) >> 1]; do { while (reihe[i] < median) i++; while (median < reihe[j]) j--; if (i <= j) { int temp = reihe[j]; reihe[j] = reihe[i]; reihe[i] = temp; i++; j--; } } while (i < j); if (u < j) quick (reihe, u, j); if (i < o) quick (reihe, i, o); return reihe; } } BubbleSort Iterativ static int[] bubbleSort (int[] liste) { boolean sortiert; do { sortiert = true; for (int i = 0; i < liste.length – 1; i++) { if (liste[i] > liste[i + 1]) { // Tauschen: int temp = liste[i]; liste[i] = liste[i + 1]; liste[i + 1] = temp; // Nicht sortiert! sortiert = false; } } } while (!sortiert); return liste; }

BubbleSort Rekursiv public static void main (String args[]) { int[] werte = {3, 7, 1, 9, 2, 5, 2}; werte = bubbleSort (werte); for (int i = 0; i < werte.length; i++) { System.out.print (werte[i] + " "); } } Fakultätsberechnung rekusiv int rekursiv(int zahl){ if (zahl == 1) // Abbruch bei 1 return 1; else return zahl * rekursiv(zahl - 1); }} Fakultätsberechnung iterativer int iterativ (int zahl){ int i = 1; // Schleifenvariable vereinbaren int f = 1; // Variable für Zwischenprodukt while (i <= zahl){ // Berechnungsschleife f = i * f; // Teilprodukt i++; // Schleifenzaehler erhoehen } return f; // Rueckgabe des Fakultaetswertes } Potenz Iterativ pub. static int potenzFor(int n, int pot){ int erg = 0; for( int k=0; k < pot; k++) { erg += n; } return erg; } public static long potenzWhile(int n) { long erg = n; while(n > 2) { erg += n-1; n--; } return erg; } Potenz Rekursiv public static int potRekursiv(int x, int y){ int result = 0; if(y == 0){ result = 1; }else{ result = x * potRekursiv(x, y-1); } return result; } Zweierpotenz Interativ ( 0 < n 64 ) public static void zp(int n){ long z = 2; if(n<64) { for(int i = 1;i<=n; i++){

System.out.println(i+"..."+z); z=z*2; }// Ende for }// Ende if

} Zweierpotenz Rekusiv public static long zp(int n){ long z = 2; if(n > 1 && n< 64) { z = 2*zp(n-1); } System.out.println(n + " " + z); return z; } „Türme von Hanoi“ Rekursiv hanoi(int n, int from, int to, int aux) { if(n == 1) System.out.println(n+": "+from +"->"+ to); else { hanoi(n - 1, from, aux, to); System.out.println(n + ": " + from + "-->" + to); hanoi(n - 1, aux, to, from); } }

Mulitplikation Iterativ pub. static int multiFor(int n, int fak){ int erg = 0; for( int k=0; k < fak; k++) { erg += n; } return erg; }

Vorteile der Rekursion • • •

Eine rekursive Lösung ist natürlicher und dadurch klarer als eine iterative Lösung. Eine rekursive Lösung ist deutlich kürzer als die iterative Variante. Die Korrektheit rekursiver Lösungen ist meist leichter zu überprüfen.

Nachteile • •

Die rekursive Lösung benötigt mehr Speicherplatz. Sie kann dabei den Laufzeitstack effizient ausnutzen. Bei grosser Rekursionstiefe steigt die Laufzeit stark an.

Programmentwicklung 1. Editieren 2. Compilieren 3. Ausführen

Glossar Cast-Operator CLASSPATH Deklarierung

Dient der explizieten Zuweisung Systemvariable die der JVM & JVC erweiternde Klassen sichtbar macht Variable mit Typ und Bezeichner festlegen; = Variable mit Typ und Bezeichner festlegen; import Dient zum Zum Sichtbarmachen anderer Klassen. Initialisierung Zuweisung eines Anfangswertes an eine Konstante oder Variable Instanziierung Bereitst. von Speicherplatz f. Vari. Instanzvariablen beschreiben die Eigenschaften einzelner Objekte einer Klasse. (gelten nur dort) Java-Beans sind fertige Programmkomponnenten für die visuelle Entwicklung von Oberflächen Java-Byte-Code Maschinenunabh. ProgCode, der vom Java-Compiler erzeugt u. auf jeder JVM ausführbar JVM Software die Java-Byte-Code interpretiert und in Befehle für den Prozessor des Rechners umsetzt. Klassenvariablen (static) sind Attribute die für alle Instanzen der jeweiligen Klasse gültig sind. Kommentar Ist eine Textzeile die rein Informativen Charakter hat. Kompilieren Umwandlung des Quellcodes.java in Bytecode.class Konstante Eine Konstante ist im Gegensatz zur Variablen ein unveränderlicher Wert zugewiesen hat. Konstruktor Lokale Variablen gelten nur innerhalb einer Methode. Modifizierer Schlüsselwörter die die Zugriffsrechte auf Attribute, Methoden und Klassen beschreiben. (private, satic puiblic, protected) Rekursion Bezeichnet eine sich selbst aufrufende Methode mit einer Abbruchbedingung Sandbox gesicherten Speicherbereich mit begrenzten Ausführungsrechten für Applets StringBuffer Zeichenkette vom Typ String bei der Veränderungen möglich sind Typenumwandlung Explizit Mit Cast Operator: int var = (float) var; Typenumwandlung Implizit ohne Castoperator: int var = byte var;

More Documents from "Dirk van Molwentop"