} }
}
Übungsklausur für Programmierung A/B
Aufgabe 1)
Erstellen sie eine Klasse welche eine Methode Gruss besitzt der ein Name im Format String übergeben wird und den String „Hallo, (übergebener Name)!“ ausgibt.
Führen sie die Methode anschließend beispielhaft in der Main Methode aus!
Die Ausgabe der Methode soll auf der Konsole ausgegeben werden!
public class A1 {
public static void gruss(String Name) {
System.out.print(“Hallo, ” + Name + “!”); }
public static void main(String[] args) {
gruss(“Tim”); }
}
Aufgabe 2)
Schreiben sie den Methodenrumpf der Methode teilbar(int A,int b), es soll true zurück gegeben werden falls die Zahl A durch die Zahl B restlos teilbar ist, ansonsten soll die Rückgabe false sein.
Public class A2{
public boolean teilbar(int A, int B){
if( A % B == 0) {
return true;
} else {
return false;
©Secret Invader 1/19
Aufgabe 3)
Geben sie i nach Durchlauf des switch an
int i = 1; switch (i) {
case 2: i++;
break; case 1:
i++; case 3:
i = i * i; }
i++=2;
i=i*i=2*2=4;
Aufgabe 4)
Schreiben sie den Methodenrumpf der Methode Quesumme(int Zahl), welche die Summe aller Einzelzahlen einer größeren Zahl bildet.
Als Beispiel 1234 = 1+2+3+4= 10
public int Quersumme (int Zahl){
int Sum=0;
while (Zahl>0) {
Sum += Zahl%10;
Zahl = Zahl/10;
} return Sum;
}
©Secret Invader 2/19
Aufgabe 5)
In der Methode QuersummeArray(int[] Array) wird ihnen ein Array mit int-Werten übergeben, Ziel ist es ein zweidimensionales Array zu erstellen bei dem in der ersten Spalte die Zahlen aus dem übergebenen Array enthalten sind und die andere Spalte die entsprechende Quersumme.
Zur einfachen Lösung dürfen sie davon ausgehen das die Methode aus Aufgabe 3 richtig gelöst ist.
Beispiel
übergebenes Array [123]
[1234]
[12345]
Rückgabe-Array der Methode [123] [6]
[1234] [10]
[12345] [15]
Public int [][] QuersummeArray(int[] Array){
// [Anzahl Zeilen][Anzahl Spalten pro Zeile] int[][] Qarray = new int[Array.length][2];
for(int i=0;i
public static void main(String[] args) { Liste Firma = new Liste(); Firma.insert(“Alfred”, 2);
Firma.insert(“Alex”, 1); Firma.insert(“Lisa”, 3); Firma.insert(“Laura”, 4); Firma.insert(null, 5); Firma.insert(“Christian”, 6); Firma.insert(“”, 7);
} }
Quellcode Container(Buero) public class Buero {
private Angestellter a;
public Buero(String Name, int Abteilung) {
a = new Angestellter(Name, Abteilung);
}
public Angestellter getAngestellter() { return a;
} }
} }
} else { return;
} }
}
now.setNext(b.getAngestellter());
now = now.getNext();
b.getAngestellter().setNext(now.getNext());
©Secret Invader 5/19
Quellcode Listenelement
public class Angestellter { private String Name;
private int Abteilung; private Angestellter next;
public Angestellter(String Name, int Abteilung) { this.Name=Name;
this.Abteilung=Abteilung; public void setNext(Angestellter next) {
this.next=next;
public getNext() {
;
public void setName(String Name) {
} }
} }
} }
Angestellter
return
next
} }
this.Name=Name; public String getName() {
return Name;
public void setAbteilung(int Abteilung) {
this.Abteilung=Abteilung; public int getAbteilung() {
return Abteilung;
Beispiel für die ersten beiden inserts
2
1
NULL
©Secret Invader 6/19
Aufgabe 7)
i) Zeichnen sie wie im Beispiel die entstehende Liste nach vollständigem Durchlauf der Main- Methode.
null
ii) Wie würde sich die insert Methode verändern, wenn der durch Beginn Aufgabe ii) und Ende Aufgabe ii) Code nicht enthalten wäre.
Durch den Wegfall des Codes Würden auch leere Strings eingefügt werden.
iii) Schreiben sie eine Methode welche alle Elemente mit dem übergebenem Namen aus der Liste herauslöscht.
public void delete( String Name) {
while (first.getName().equals(Name) && first!=null) {
first=first.getNext();
}
Angestellter now= first; while(now.getNext()!=null) {
if(now.getNext().getName().equals(Name)) { now.setNext(now.getNext().getNext());
} else { now=now.getNext();
} }
}
1
3
6
2
4
©Secret Invader 7/19
Aufgabe 8)
Schreiben sie einen Methodenrumpf welcher von der übergebenen Zahl Start ausgehend die Fakultät bis zur Zahl Stop berechnet, alle Zahlen die kleiner oder gleich Stop sind sollen nicht mehr in die Rechnung einfließen.
Gehen sie davon aus das Start größer Stop übergeben wird!
Es wird ausschließlich eine rekursive Lösung akzeptiert!
public int Fkt(int Start, int Stop){
if(Start-1 == Stop){
return Start ;
} else {
retrun Start * Fkt(Start-1,Stop);
} }
©Secret Invader 8/19
Aufgabe 9)
public class Produkt {
public void punkt(int a, int b) {
System.out.print(a*b);
} }
public class Quotient extends Produkt{
public void rest(int a, int b) {
System.out.print(a/b);
} }
public class Summe {
public void strich(int a, int b) {
System.out.print(a+b);
} }
public class Differenz extends Summe{
public void strich(int a, int b) {
System.out.print(a-b);
} }
i)
Geben sie die Ausgaben für folgende Aufrufe aus:
Differenz.strich(5,3) = 2 Produkt.punkt(4,3) = 12 Summe.strich(4,8) = 12 Quotient.punkt(4,2) = 8
ii)
Schreiben sie eine Klasse Modulo welche von Quotient erbt, dabei soll die Methode rest(int a, int b) überschrieben werden und den Restwert von a modulo b zurück geben.
public class Modulo extends Quotient { public void rest(int a, int b) {
} }
System.out.print(a%b);
©Secret Invader 9/19
Quellcode Baum:
public class baum {
private Knoten Wurzel;
public void einsetzen(int Zahl) {
if(Wurzel == null){
Wurzel = new Knoten(Zahl);
} else {
einsetzen(Zahl, Wurzel);
} }
private void einsetzen(int Zahl, Knoten knoten) {
if(knoten.getLinks() == null) {
knoten.setLinks(new Knoten(Zahl));
} else if (knoten.getRechts()== null) {
knoten.setRechts(new Knoten(Zahl));
} else {
if (gewicht(knoten.getLinks())
public List
List
for( E vor : Vornamen) {
if(Nachnamen.contains(vor)) {
gleich.add(vor);
} }
return gleich;
}
}
i) Was macht die dargestellte Methode wasMachIch?
Die Methode überprüft die beiden Listen Vornamen und Nachnamen ob es Einträge gibt die in beiden Listen existieren, wird dieser Eintrag in die neu erstellte Liste gleich des selben Typs wie Vornamen und Nachnamen eingefügt.
ii)Nennen sie sowohl ein Vorteil, wie auch ein Nachteil von Generics in Java und erläutern sie diese.
©Secret Invader 17/19
Aufgabe 14)
public class Klausur {
String Klausurname;
int AnzahlStudenten;
}
i) Erstellen sie eine Exception AnmeldeException, die Exception soll einen Konstruktor besitzen dem der Klausurname übergeben wird und eine void Methode Fehlertext (String Klausurname) welche die Konsolenausgabe „zu viele Anmeldungen für die Klausur: (Klausurname)„ besitzt.
Public class AnmeldeException extends Exception {
public AnmeldeExceptions ( String Klausurname ) { super(Klausurname);
}
public void Fehlertext( String Klausurname) {
System.out.print(„zu viele Anmeldungen für die Klausur: „+ Klausurname);
} }
ii) Wir befinden uns nun in der Klasse Klausur, erstellen sie die void Methode Anmeldung(), welche sofern noch keine 100 Studenten für die Klausur angemeldet sind die AnzahlStudenten um 1 erhöht, will sich aber 1 Person mehr als das Maximum von 100 Teilnehmern anmelden werfen sie die AnmeldeException!
public void Anmeldung() throws AnmedleException{ if(AnzahlStudenten < 100) {
AnzahlStudenten ++; } else {
throw new AnmeldeException (Klausurname); }
}
©Secret Invader
18/19
iii) Schreiben sie ein Codestück bei dem die AnmeldeException garantiert geworfen wird.
For( int i=0; i<101; i++) { Anmeldungen();
}
iv) Schreiben sie nun ein Codestück welches die AnmeldeException abfangen würde und stattdessen die Methode Fehlertext (String Klausurname) der AnmeledeException ausführt.
Try {
Anmeldungen();
}
catch (AnmeldeException AE) {
return AE.Fehlertext(Klausurname); }
Viel Glück euch allen!
©Secret Invader
19/19
Powered by TCPDF (www.tcpdf.org)