Programmieren: Java

Welche Ausgaben auf dem Bildschirm erzeugt folgende Klasse beim Ausführen?

package aufg1;

public class Aufg1 {

	public static void main(String[] args) {

		int i = Integer.MAX_VALUE; // entspricht Wert 2147483647

		System.out.println("A:" + ((i+1) + i));

		float f = Float.MAX_VALUE; // entspricht Wert 3.4028235E38
		System.out.println("B:" + ( 2*f - f));

		i = 1;
		System.out.println("C:" + (i<<=2) + " " + i);

		i = 7;
		System.out.println("D:" + (i & 0xFF));
		System.out.println("E:" + (i | 0xFF));

		i = 4;
		System.out.print("F:");
		while (i-- > 0) {
			System.out.print("+");
		}
		System.out.println();

		String first = new String("Hallo");
		String second = new String("Hallo");
		System.out.println("G:" + (first==second));
		System.out.println("H:" + (first.equals(second)));
	}

}

A:-1
B:Infinity
C:4 4
D:7
E:255
F:++++
G:false
H:true

Es sei folgende rekursive Methode gegeben:

package aufg2;

public class Aufg2a {

	public static void main(String[] args) {
		printRec(5);
	}

	public static void printRec(int n) {
		if (n == 0)
			return;
		for (int j = 1; j <= n; j++)
			System.out.print(j);
		System.out.println();
		printRec(n - 1);
	}

}

a) Welches Muster erzeugt der Aufruf printRec(5) auf dem Bildschirm?

12345
1234
123
12
1

b) Was passiert, wenn Sie versuchen, einen Aufruf der Form printRec(3.14) zu tätigen?

1. Compiler wird einen Fehler ausgeben
2. Die rekursive Methode erwartet einen Integer Wert, es wird allerdings ein Double übergeben

c) Was erfolgt, wenn die Methode printRec() mit einer negativen ganzen Zahl als aktuellem Parameter aufgerufen wird? Wie würden Sie die Implementierung der Methode verändern, um diesen Effekt zu verhindern?

Die Methode bricht nicht mehr ab, dh sie wird unendlich lange laufen bis der minimale Integer Wert erreicht wird und dann weiter laufen bis sie endlich bei 0 ankommt.

package aufg2;

public class Aufg2c {

	public static void main(String[] args) {
		printRec(-1);
	}

	public static void printRec(int n) {
		if (n == 0 || n <= 0)
			return;
		for (int j = 1; j <= n; j++)
			System.out.print(j);
		System.out.println();
		printRec(n - 1);
	}

}

d) Wandeln Sie die rekursive Implementierung von printRec() unter dem nachfolgenden Methodenkopf in eine iterative Implementierung um.

package aufg2;

public class Aufg2d {

	public static void main(String[] args) {
		printIt(9);
	}

	public static void printIt(int n) {
		if (n == 0 || n <= 0)
			return;

		for (int i = 1-n; i <= n; i++) {

			for (int j = 1; j <= n; j++) {
				System.out.print(j);
			}
			n = n-1;
			System.out.println();
		}
	}

}

e) Modifizieren Sie die Implementierung von printRec() unter Benutzung des nachfolgenden Rahmens so, dass in dem erzeugten Muster nur noch Kleinbuchstaben statt Ziffern erscheinen, und zwar ein a an Stelle von 1, b an Stelle von 2, …. (Es kann dabei davon ausgegangen werden, dass die Methode nur für einstellig Zahlen 0, …, 9 als aktueller Parameter aufgerufen wird).

package aufg2;

public class Aufg2e {

	public static void main(String[] args) {
		printRec(9);
	}

	public static void printRec(int n) {
		if (n == 0 || n <= 0)
			return;

		char c = 'a';

		for (int j = 1; j <= n; j++) {
			System.out.print(((char)c));
			c++;
		}
		System.out.println();
		printRec(n - 1);
	}

}

Auf Pythagoras geht der Begriff der vollkommenen Zahl (perfect number) zurück. Eine vollkommene Zahl ist eine positive ganze Zahl, deren Wert gleich der Summe seiner Teiler ist. Die kleinste vollkommene Zahl ist 6 (6 = 1 + 2 + 3), die nächste ist 28 (28 = 1 + 2 + 4 + 7 +14).
Schreiben Sie eine Methode (Klassen- oder Objektmethode?), die als Parameter eine ganze Zahl übergeben bekommt und als Wahrheitswert zurückliefert, ob die übergebene Zahl eine vollkommene Zahl ist.

public static boolean perfectNumber(int n) {
	boolean perfNum = false;
	int sumSoFar = 0, sumOfDivisors, i;

	for (i = 1; i < n; i = i + 1) {
		if (n%i == 0) {
			sumSoFar = sumSoFar + i;
		}
	}
	sumOfDivisors = sumSoFar;

	if (n == sumOfDivisors) {
		System.out.println( "The value " + n + " is PERFECT" );
		perfNum = true;
	} else {
		System.out.println( "The value " + n + " is NOT PERFECT" );
	}
	return perfNum;
}

Es soll der Speiseplan eines Restaurants in Java-Code abgebildet werden. Das nachfolgende Klassendiagramm enthält fragmentarisch den zugehörigen Entwurf.

class

a) Definieren Sie die Java-Klasse Gericht. Es soll die Attribute erhalten, die in obigem Klassendiagramm angegeben sind. Das Attribut preis speichert den Preis des Gerichts in Cent. Sein Wert soll über eine get()-Methode abgefragt und über eine set()-Methode verändert werden können. Die Werte der restlichen Attribute sollen unveränderlich sein. Die Werte des Attributs typ sollen wie im Diagramm durch ein auch zu definierendes enum Essenstyp abgedeckt werden (oder, falls Sie damit nichts anfangen können, ersatzweise über symbolische Konstanten in einer eigenen Klasse Essenstyp).

Ergänzen Sie die Klasse Gericht durch einen entsprechenden Konstruktor und überschreiben Sie die toString()-Methode der Klasse Object geeignet, so dass dadurch alle Attributwerte wiedergegeben werden können.

package aufg4;

public class Gericht {

	public final String name;
	public final Essenstyp typ;
	public final boolean fleischlos;
	private int preis;

	public Gericht(String name, Essenstyp typ, boolean fleischlos, int preis) {
		this.name = name;
		this.typ = typ;
		this.fleischlos = fleischlos;
		this.preis = preis;
	}

	public void setPreis(int preis) {
		this.preis = preis;
	}

	public int getPreis() {
		return preis;
	}

	public String toString() {
		String s = "Name: " + name + "\nEssenstyp: " + typ.toString() +
				   "\nFleischlos: " + fleischlos + "\nPreis: " + preis + "cent";
		return s;
	}

}
package aufg4;

public enum Essenstyp {

	VORSPEISE, HAUPTGERICHT, NACHSPEISE;

}

b) Realisieren Sie nun die Klasse Speisekarte. Die Assoziation gerichte im Klassendiagramm soll über ein Array fester Länge abgedeckt werden (Die Länge wird im Konstruktor übergeben). Realisieren Sie diesen Konstruktor sowie die Methoden addGericht() (fügt ein Gericht zur Speisekarte hinzu) sowie getBilligstes() (sucht das billigste Gericht vom übergebenen Typ heraus).

package aufg4;

public class Speisekarte {

	private Gericht[] gerichte;
	private int z = 0;

	public Speisekarte(int n) {
		gerichte = new Gericht[n];
	}

	public void addGericht(Gericht gericht) {
		for (int i = 0; i < gerichte.length -1; i++) {
			if (gerichte[i] == null) {
				gerichte[i] = gericht;
			}

			if (z < gerichte.length) {
				gerichte[z++] = gericht;
			}

		}
	}

	public Gericht getBilligstes(Essenstyp typ) {
		Gericht bG = null, aG;

		for (int i = 0; i < z; i++) {
			if (gerichte[i].typ != typ)
				continue;

			aG = gerichte[i];

			if (bG == null) {
				bG = aG;
				continue;
			}

			if (aG.getPreis() < bG.getPreis()) {
				bG = aG;
			}
		}
		return bG;
	}

}

c) Definieren Sie eine Test-Methode, in der eine Speisekarte und zwei Gerichte von gleichem Typ aber unterschiedlichem Preis instanziert und die Gerichte zur Speisekarte hinzugefügt werden. Anschließend soll die Speisekarte auf das billigste Gericht dieses Typs abgefragt werden und dessen Daten auf die Konsole ausgegeben werden.

package aufg4;

public class Test {

	public static void main(String[] args) {

		Speisekarte sk = new Speisekarte(2);
		Gericht knoedel = new Gericht("Knödel", Essenstyp.HAUPTGERICHT, true, 50);
		Gericht wurst = new Gericht("Wurst", Essenstyp.HAUPTGERICHT, false, 40);

		sk.addGericht(knoedel);
		sk.addGericht(wurst);

		System.out.println(sk.getBilligstes(knoedel.typ).toString());
	}

}

,

4 Kommentare

We didn’t start the Flame War

The Internet video that YOU helped to write.

2 Kommentare

Der “King of Pop” ist tot

michael_jacksonMichael Jackson ist tot. Der US-Popstar starb im Alter von 50 Jahren in Los Angeles. Der Gerichtsmediziner Fred Corral bestätigte dem Amerikanischem Nachrichtensender CNN den Tod des “King of Pop”. Eine Autopsie sei für heute angesetzt. Übereinstimmenden Medienberichten zufolge erlitt Jackson nach 12:00 Uhr Ortszeit in seinem Haus einen Herzstillstand, weitere Wiederbelebungsversuche blieben vergeblich. Trotzdem sei er ins Krankenhaus gebracht worden, wo er am Nachmittag (Ortszeit) für tot erklärt wurde. Unmittelbar nach Bekanntwerden des Todes versammelten sich Hunderte Fans bestürzt und schockiert vor dem Krankenhaus. Auch vor dem Haus des Sängers trafen trauernde Fans ein.

Medikamenten als Todesursache?
Die Familie von Jackson hält einen Zusammenhang zwischen dem Tod des Popstars und seinem Medikamentenkonsum für möglich. Jacksons Tod sei “nicht unerwartet” gekommen, sagte der Anwalt der Familie, Brian Oxman, dem Sender CNN. Jackson habe in letzter Zeit verschreibungspflichtige Medikamente genommen, um sich für seine bevorstehenden Comeback-Konzerte vorzubereiten.

“Ich weiß nicht genau, in welchem Umfang er die Medikamente genommen hat, aber nach dem, was der Familie berichtet wurde, war der Umfang erheblich” sagte Oxman. Auch der frühere Agent des Sängers, Michael Levine, zeigte sich “nicht überrascht” von dem Tod Jacksons. “Michael hatte seit Jahren einen unmöglichen und oftmals selbstzerstörischen Weg eingeschlagen”, sagte er der Nachrichtenagentur AFP.

Quelle: tagesschau.de

, ,

Keine Kommentare

Ubuntu Linux: Leichter als man denkt

tuxIm Online-Angebot der FAZ findet sich derzeit ein sehr wohlwollender und guter Artikel über Ubuntu.

Ubuntu: Leichter als man denkt und besser als gedacht: Linux!

Meiner Meinung nach ein sehr gelunger Artikel, dem ich nur zustimmen kann. Es ist sicherlich nicht alles perfekt unter Linux, aber mir macht das arbeiten mit Ubuntu 9.04 deutlich mehr Spaß als mit Windows (egal ob XP, Vista oder 7).

, ,

Keine Kommentare

Rechnerstrukturen

1. Darstellung von Zahlen

Gegeben sind die Zahlen z1= (165)7, z2= (141)8

a) Konvertieren Sie z1 und z2 ins Dualsystem und ins Dezimalsystem.

z1 = (165)7 = 5*1 + 6*7 + 1*7² = (96)10
z2 = (141)8 = 1*1 + 4*8 + 1*8² = (97)10

z1 = (96)10 = (?)2
96 / 2 = 48 R 0
48 / 2 = 24 R 0
24 / 2 = 12 R 0
12 / 2 = 06 R 0
06 / 2 = 03 R 0
03 / 2 = 01 R 1
01 / 2 = 00 R 1
z1 = (96)10 = (1100000)2
z2 = (97)10 = (1100001)2

b) Berechnen Sie die Differenz z3 = z1 - z2 mit Hilfe des 2-Komplements und konvertieren Sie diese ins Dezimalsystem. Die Dualzahlen werden mit N=8 Bit dargestellt.

11000000
00111110
---------
11111110

z3 = (-1)10

c) Stellen Sie z2 im Exzesscode dar.

z+k mit k = 2^(n-1)
z + 2^(n-1) = 97 + 2^7 = (225)10 = (11100001)2

2. Codes, Funktionen

a) Gegeben sind die beiden Mengen C={e, f, g, h, i} und D={0010, 1110, 1001, 0111} sowie die Funktion f: C->D, definiert durch

c e C d e D
e 0010
f 1110
g 1001
h 0111
i 0010

Welche Art von Abbildung (injektiv, surjektiv, bijektiv) wird durch f definiert? Begründen Sie Ihre Antwort.

surjektiv; denn jedes Element der Zielmenge wird mindestens einmal als Funktionswert angenommen. Es kannt nicht injektiv sein da die Abbildungen nicht eindeutig sind. Und daher ist die Abbildung auch nicht bijetiv.

b) Ist für die Zeichenmenge D der Hammingabstand definiert? Berechnen Sie ihn gegebenenfalls.

Ja;
h = 2

c) Wieviele verschiedene 3-stellige und 4-wertige Schaltfunktionen gibt es?

2^(n+2^m) = 2^12 = 4096
n = wertig, m = stellig

Keine Kommentare

Filmempfehlung “Ein mörderischer Sommer”

sommerIch habe heute einen fantastischen Abend gehabt und möchte diesen nun mit Ihnen teilen. In meinem Leben habe ich nicht viele Filme gesehen, die mich wirklich berührt haben, aber ab und an wird man wirklich überrascht!

Der Name des Titels “Ein mörderischer Sommer” verrät uns unter Umständen in was es in dieser Tragödie geht, die zu Anfang wie ein Liebesfilm wirkt, dann immer mehr einem Thriller gleicht und schließlich in einer Katastrophe endet. Die Geschichze erzählt, wie eine junge hinreißende Frau versucht herauszufinden, welche drei Männer ihre Mutter, die aus Deutschland stammt und den Spitznamen Eva Braun trägt, in einem Landhaus in einer französischen Provinz, bei dunkler Nacht vergewaltigt haben. Die Geschichte wird bruchstückartig voraugengeführt, ergibt sich aber als ein Meisterwerk von kleinen Details.

Mehr will ich Ihnen nicht verraten. Nehmen Sie sich einfach eine Auszeit und genießen Sie diesen einzigartigen Film oder lesen Sie den Vorlageroman aus dem französichem.

Keine Kommentare

Untreue!

DeutschZuersteinmal muss ich mich für die nachfolgenden Auslassungen meiner Person entschuldigen, denn ich könnte im wahrsten Sinne des Wortes “kotzen”, wenn ich Begrifflichkeiten wie “Finanzcenter” oder “files abspielen” lese und lesen muss. Anstatt altgebräuchliche, bereits vorhandene Deutsche Wörter zu nutzen, wird hier sprachliche Vergewaltigung betrieben! Warum sagt man nicht “Dateien abspielen” oder “Finanzamt”?

Am meisten sprachlicher Exzess wird im Fernsehen betrieben. “Last but not least hauptsache dabei”, meine Oma versteht -bei solch wahrloser Satzbildung- die Welt nicht mehr! Warum tun wir so etwas und warum so halbherzig? Natürlich ist Englisch die Weltsprache und es wäre auch vernünftig diese Sprache zu beherschen, ja es wäre sogar sinvoll, wenn wir nicht mehr Deutsch sprechen würden, sondern nur noch Englisch! Doch wollen wir das? Nein, wollen wir nicht, aber wir wollen modern sein! Sind wir Deutsche als Volk selbst, nicht in der Lage eigene Wörter in unserer eigenen Sprache zu verwenden? Anscheinend können wir das nicht, wir klauen. Ein Paradebeispiel “Germany´s Next Topmodel”, in solchen Fernsehsendungen sind “Challanges” an der Tagesordnung, denn ein einfacher Wettbewerb ist ja nichts besonderes mehr. Der Mensch will Aufregung, er will modern sein und das kann er nur mit dem englischen Sprachgebrauch.

Das schlimme ist nur, dass wir sogar versuchen Wörter die wir nicht kennen, auf bemitleidende Art und Weise, krampfhaft auf Englisch auszusprechen, um dann festzustellen, dass es sich um ein skandinavisches Wort handelt. Ein guter Bekannter berichtigte mich, über die Aussprache des vermeindlichen Wortes und machte sich sogar lustig darüber, dass ich das unbekannte Wort ja so falsch, nämlich auf Deutsch auszusprechen versuche, denn die richtige Aussprache ist ja die englische. Dass man das Wort aber komplett anders ausprechen muss, interessiert hier keinen und ich könnte kotzen, wie weit die Banalisierung unserer eigenen Herkunft, unserer Sprache gekommen ist. Die Ignoranz und Selbstüberschätzung vieler Menschen tut ihr selbiges hinzu, denn Fehler werden heutzutage nicht mehr eingesehen!

Aber egal meine Damen und Herren, wir haben ein Dach über dem Kopf und wir sind nicht am Verhungern, was diesem Artikel gänzlich den Zauber nimmt und mich zum ende führt.

In diesem Sinne machen Sie es gut!

, ,

2 Kommentare

Horst Köhler

horstDer Bundespresident Dr. Horst Köhler wird weitere fünf Jahre im Amt bleiben. Er gewann mit einer knappen Mehrheit gegen seine Gegenkandidaten, allen voran Gesine Schwan.

In der 13. Bundesversammlung würdigte Köhler seine Herausforderin und kündigte an, weiterhin voller Tatenkraft für das deutsche Volk -in dieser, vorallem für die Politik, schwierigen Amtsperiode- einzustehen.

Wir wünschen Herrn Köhler eine erfolgreiche Amtsperiode und hoffen, dass er auch in Zukunft seinen Amt so gekonnt vertritt, wie er es die letzten fünf Jahre tat.

Paul Stanik

Keine Kommentare

Der Untergang einer fundierten Medienberichterstattung

medienLaut einer Studie ist die Objektivität der Medien auf globaler Ebene immer stärker Eingeschränkt.
Dies lässt sich auch sehr gut auf Deutschland übertragen. Wenn man sich die Nachrichten von Pro7, SAT1 und RTL zu gemühte führt, wird eindringlich klar um was es anscheinend in der Welt geht. Es geht um Themen die die Welt bewegen, Themen, wie gefälschte Videos aus dem Internet für Furore sorgen, oder ob Heidi Klum schon wieder einen neuen Werbespot ihr eigen nennt.

An dieser Stelle frage ich mich: Warum bekommen wir solche Themen präsentiert?

Die Anwort liegt auf der Hand: Einschaltquoten, Geld!

Niemand will sehen wie die Welt wirklich ist, wie viele Menschen wieder starben, wir brauchen Entertainment!

Es liegt also garnicht an den Medien, es liegt an uns, wir müssen uns erwehren, kämpfen, gegen die völlige Banalisierung der Medienberichterstattung!

Paul Stanik

,

Keine Kommentare

Some facts about Facebook

facebookFacebook is for old people
It was designed for college kids. But it took legions of people their parents’ age to fulfill its ultime destiny.

Facebook is five. Maybe you didn’t get it in your news feed, but it was in Februrary 2004 that Harvard student Mark Zuckerberg, along with some classmates, launched the social network that ate the world. Did he realize back then in his dorm that he was witnessing merely the larval stage of his creation? For what began with college students has found its fullest, richest expression with the middle-aged. Here are 10 reasons Facebook is for old fogies:

  1. Facebook is about finding people you’ve lost track of.
    And, son, we’ve lost track of more people than you’ve ever met. Remember who you went to prom with junior year? See, we don’t. We’ve gone through multiple schools, jobs and marriages. Each one of those came with a complete cast of characters, most of whom we have forgotten existed. But Facebook never forgets.
  2. We’re no longer bitter about high school.You’re probably still hung up on any number of petty slights, but when that person who used to call us that thing we’re not going to mention here, because it really stuck, asks us to be friends on Facebook, we happily freind that person. Because we’re all grown up now. We’re bigger than that. Or some of us are, anyway. We’re in therapy, and it’s going really well. These are just broad generalizations. Next reason.
  3. We never get drunk at parties and get photographed holding beer bottles in suggestive positions.
    We wish we still did that. But we don’t.
  4. Facebook isn’t just a social network; it’s a business network.
    And unlike, say, college students, we actually have jobs. What’s the point of networking with people who can’t hire you? Not that we’d want to work with anyone your age anyway. Given the recession - and the amount of time we spend on Facebook - a bunch of hungry, motivated young guns is the last thing we need around here.
  5. We’re lazy.
    We have jobs and children and houses and substance-abuse problems to deal with. At our age, we don’t want to do anything. What we wont is to hear about other people doing things and then judge threm for it. Which is what news feeds are for.
  6. We’re old enough that pictures from grade school or summer camp look nothing like us.
    These days, the only way to identify us is with Facebook tags.
  7. We have children.
    There is very little that old people enjoy more than forcing others to pay attention to pictures of their children. Facebook is the most efficient engine ever devised for this.
  8. We’re too old to remember e-mail addresses.
    You have to understand: we have spent decades drinking diet soda out of aluminum cans. That stuff catches up witch you. We can’t remember friend’s e-mail addresses. We can barely remember their names.
  9. We don’t understand Twitter.
    Literally. It makes no sense to us.
  10. We’re not cool, and we don’t care.
    There was a time when it was cool to be on Facebook. That time has passed. Facebook now has 150 million members, and its fastest-growing democraphig is 30 and up. At this point, it’s way cooler not to be on Facebook. We’ve ruined it for good, just like we ruined Twilight and skateboarding. So git! And while you’re at it, you damn kids better get off our lawn too.

Source: Time (March 2, 2009)

The fast growing Facebook…

facebook

, ,

Keine Kommentare