GrundlagenProgra_v3 - martin

Werbung
Grundlagentest für Programmierung
Ich hab gerade noch gesagt, der Test wird nicht bewertet, also keine Panik 
Wer einen Rechtschreibfehler findet darf ihn behalten.
Kontrollstrukturen
Schreibe eine Methode, welche eine int Variable x entgegen nimmt und das
Doppelte von x zurückgibt, wenn x positiv ist und die sonst das dreifache von x
zurückgibt.
public int methode(int x) {
}
Konstruiere eine Methode, welche eine int Variable entgegen-nimmt und den Text
“Das ist Null” ausgibt, falls x den Wert 0 hat. Hat x den Wert 42 soll sie den Text
„Sinn des Lebens“ ausgeben und ansonsten den Text „Nichts besonderes“.
Verwende nicht die IF-Anweisung.
public void methode(int x) {
}
Schleifen
Konstruiere eine Methode, welche mit einer Schleife die Zahlen von 1 bis 10 ausgibt.
Verwende dazu eine WHILE-Schleife
public void methode() {
}
Konstruiere eine Methode, welche mit einer Schleife die Zahlen von 1 bis 10 ausgibt.
Verwende dazu eine DO-WHILE-Schleife
public void methode() {
}
Konstruiere eine Methode, welche mit einer Schleife die Zahlen von 1 bis 10 ausgibt.
Verwende dazu eine FOR-Schleife
public void methode() {
}
Sprunganweisungen
Ergänze die folgende Methode so, daß die Methode 42 ausgibt.
public void methode() {
int i = 0;
while(i < 100) {
i++;
}
System.out.println(i);
}
In der Schleife läuft i von -10 bis 10. Dabei wird in jedem Durchlauf der aktuelle Wert
von i auf die Variable m multipliziert. Da zwischendurch auch i = 0 gilt, wird natürlich
am Ende m = 0 herauskommen (Wenn ein Faktor eines Produktes 0 ist, ist das
Produkt auch 0!). Ergänze die Methode nun so, das i nicht auf m multipliziert wird,
falls i = 0 ist. Die Anweisung m *= 1 soll da bleiben wo sie ist!
public void methode() {
int m = 1;
for(int i = -10; i <= 10; i++) {
m *= i;
}
}
Arrays / Reihungen
Ergänze die Methode so, das am Ende in dem Array X die Zahlen von 1 bis 5 stehen.
public void methode() {
int [] X = new int[5];
}
Die folgende Methode erzeugt einen Fehler. Erkläre kurz warum!
public void
int []
X[1] =
X[2] =
X[3] =
}
methode() {
X = new int[3];
42;
23;
5;
[
Die folgende Methode erzeugt einen Fehler. Ändere die Methode so, das sie
fehlerfrei funktioniert, indem du eine Anweisung streichst.
]
public void
int []
X[0] =
X[1] =
X[2] =
X[3] =
}
methode() {
X = new int[3];
42;
23;
5;
13;
Datenabstraktion
Beschreibe ganz kurz, was Datenabstraktion im Bezug auf „Selektoren“ bedeutet.
[
]
Wer hat Zugriff auf eine Variable die mit der Zugriffsspezifikation private bzw.
public deklariert wurde?
[
]
Kreuze an, was in einer von Javadoc erstellten Schnittstellendokumentation
auftaucht:
□ Namen der dokumentierten Klassen
□ Beschreibungen von Parametern einer Methode
□ Liste aller Methoden
□ Reichlich Erdnussbutter
Klassen & Objekte
Geben ist die folgende Klasse mit einem Testprogramm:
public class Rechteck {
public int breite, hoehe;
Rechteck(int breite, int hoehe) {
this.breite = breite;
this.hoehe = hoehe;
}
public int flaeche() {
return breite*hoehe;
}
public boolean groesserAls(Rechteck R) {
return this.flaeche() > R.flaeche();
}
public static void main(String [] Argumente) {
Rechteck A, B, C;
A = new Rechteck(10, 20);
B = new Rechteck(5, 30);
System.out.println( C.breite );
B.hoehe = 42;
System.out.println( A.groesserAls(B) );
C = A;
C.hoehe += 5;
System.out.println( A.groesserAls(B) );
// PROGRAMMENDE!
}
}
Das Programm erzeugt einen Fehler. Behebe den Fehler, dadurch das du eine Zeile
streichst.
Welche Ausgaben liefert das Testprogramm zu der Rechtecksklasse?
[
Stelle die Speicherbelegung zum Programmende zeichnerisch dar!
]
Wieviele Objekte vom Typ „Rechteck“ erstellt das Testprogramm?
[
]
Gültigkeitsbereiche
Gegeben ist die folgende Klasse
public class
private
private
private
private
private
KlassenName {
static int a;
static int b;
static double c;
static boolean d;
static int e;
public static void main(String [] Argumente) {
a = 4; // HIER
for(b = 0; b < 10; b++) { // HIER
int c;
c = a; // HIER
}
c = (double)b; // HIER
{
int e;
e = a * b + 23; // HIER
}
e += a; // HIER
}
}
Schreibe bei allen Zeilen die mit „// HIER“ markiert sind auf, wo die Variablen auf
die sich die Bezeichner beziehen deklariert wurden. Am einfachsten geht es mit
Pfeilen (Für die erste Anweisung habe ich es einmal vorgemacht).
Konstruktoren
Kreuze an, was richtig ist: Eine Klasse kann über mehrere Methoden mit identischen
Namen verfügen, wenn sich die Parameterlisten der Methoden unterscheiden. Eine
solche Methode nennt man auch
□ überladen
□ abstrakt
□ überschrieben
□ statisch
□ konstrukoritiert
Welchen Rückgabetyp bekommt ein Konstruktor im Methodenkopf des Konstruktors?
[
]
Statische Methoden & Statische Attribute
Was ist das besondere an einer statischen Methode im Bezug auf den Aufruf einer
solchen Methode? Denkt daran wie ihr die statische Methode Math.sqrt()
verwendet habt um aus einer Zahl die Wurzel zu ziehen!
[
Gegeben ist die folgende Klasse mit
]
public class EineKlasse {
public static int EinWert;
}
Angenommen es existieren in einem Programm zwei Objekte A, B mit dem Typen
EineKlasse. Was passiert, wenn du den Wert von A.EinWert veränderst?
[
]
Warum kann man von einer statischen Methode in einer Klasse, nicht auf nichtstatische Attribute dieser Klasse zugreifen?
[
]
Verständnisdinge & Sonstiger Kram
Was ist der Unterschied zwischen „Eine Methode gibt etwas zurück“ und „Eine
Methode gibt etwas aus“?
[
]
Wo liegt der Unterschied von „primitiven Datentypen“ und „Referenzdatentypen“
bezüglich der Seiteneffekte?
[
]
Was referenziert das „this“-Objekt in Java?
[
]
Beschreibe kurz was ein abstrakter Datentyp ist und wodurch er sich auszeichnet.
[
]
Beschreibe kurz, was implizite und explizite Typumwandlung ist und wo der
Unterschied liegt.
[
]
Herunterladen