Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Name:
Skript(e), Bcher
Vorname:
90 Minuten
Matr.Nr.:
Falsch
[ ]
[X]
[X]
[ ]
[ ]
Aufgabe 1.2 - Programmierung in der Praxis [5P] 0,5P pro richtigem Feld
Klassifizieren Sie die folgenden Aussagen als richtig oder falsch
Richtig
Wer programmieren kann, beherrscht noch lange nicht (immer) die Syntax
[X]
Algorithmen berlegt man sich am Besten erst beim programmieren
[ ]
Wer in groen Schritten denkt, wird schneller fertig
[ ]
Wenn ein Programm keine Syntaxfehler mehr hat, ist es richtig
[ ]
Wer Fehlermeldungen aufmerksam liest, kann Fehler schneller beheben
[X]
Falsch
[ ]
[X]
[X]
[X]
[ ]
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Hex:
CAFE
-->
Oktal: 1100 1010 1111 1110 = 001 100 101 011 111 110 = 145376
(1 Hexziffer=4 Bit)
(1 Oktalziffer = 3 Bit)
Oktal:
2007
-->
Dezimal:
1030
-->
-42
-->
Binr (8 Bit):
1537
+ 2951
1000
= 4488
Dezimal:
1,5P
5351
5351
Binr: 00111001 +57 = 00111001
- 3456 +6544 <= 2-er Komplement 1,5P -00011001 -25 = +11100111
1110 10000
111111110
= 1895
1895
= 00100000
00100000 +32
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
9er
9er
firstName
firstName
last_name
last_name
i
i
K0NSTANT3
K0NSTANT3
kfz-steuer
kfz-steuer
class
class
Variablen sind "Schubladen" in denen verschiedene Dinge stehen knnen. Wie unterscheidet der
Schubladeninhalt der folgenden Variablen (Skizze)? je 1P
^^^^^^^ !!!
int i = 321;
[ 321 ] (Wert) bzw. primitiver Datentyp
String s = "321";
[ ---]---> "321" (Referenz) bzw. Referenztyp
Wie lautet der erste und der letzte gltige Index bei folgendem Array? je 0,5P
int[] bits = {1, 2, 4, 8, 16, 32, 64, 128}; // bits[0]bits[7]
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Geben sie eine Programmzeile an, die eine Array-Variable fr 49 Lottozahlen definiert. 1P
int[] lotto = new int[49]; // "fr", nicht "mit"! Kein Math.random()!
0,5 Punkte bei falschem Typ wie String oder Anzahl 48 (Index=0..48, Anzahl 49!)
Skizzieren Sie die Struktur des in der Variablen shapeArray gespeicherten Arrays und geben
Sie die jeweils enthaltenen Datentypen und Werte an.
int[][] shapeArray = new int[3][];
shapeArray[2] = new int[2];
shapeArray[0] = new int[6];
shapeArray[1] = new int[4];
int[3][]shapeArray --> int[ ] --> [0][0][0][0][0][0]
int[ ] --> [0][0][0][0]
int[ ] --> [0][0]
0,5P je Teilarray + 0,5P fr korrekte Typen/Werte
Antwort:
Antwort:
Antwort:
Antwort:
Antwort:
1 ( == 0 in int!)
1000 | 0010 = 01100 = 12 (zwlf)
(1<<2)<<3) = (1<<2)<<3 = 100 << 3 = 100000 = 32
17/ 4 = 4 R 1, also 1
Wurzel aus 16 = 4.0
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Name:
Skript(e), Bcher
Vorname:
90 Minuten
Matr.Nr.:
int summe = 0;
for (int i=0; i<numbers.length, ++i) {
summe = summe + numbers[i]
}
System.out.println( summe);
c) Je nach Grenordnung des Werts der Variablen i sollen folgende Zeichenketten ausgegeben
werden: "einstellig", "zweistellig" oder "wow!"
Selektion, Unterscheidung von Wertebereichen geht nur mit if-else (3P), nix fr switch!
// Alternativlsungen mit Untergrenze/Vorzeichen gab es auch
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
// Datei: Dozent.java
package people.education;
import people.Person;
public class Dozent extends Person{
protected String personalnummer;
public Dozent( String vorname, String nachname, String personalnummer) {
this.firstName = vorname; // war Tippfehler: this.vorname; Extrapunkt
this.lastName = nachname; // war Tippfehler: this.nachname; private
this.personalnummer = personalnummer;
}
public boolean kontrolliereKlausur( Student s) {
if (null == s.spickzettel) { // private
s.semester++;
return true;
} else {
return false;
}
}
}
// Datei: Hochschule
import people.*;
import people.education.*;
public class Hochschule {
public static void main( String[] args) {
Person p = new Person( "Max", "Mustermann"); // protected
Student s = new Student( "Moritz", "Musterstudent", "123456");
Dozent d = new Dozent( "Hans", "Streng", "P54326");
if ( d.kontrolliereKlausur( s)) {
System.out.println( s.lastName + " mogelt!"); // protected
}
System.out.println( s + " ist im " + s.semester + ". Semester"); // default
}
}
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Wie wird die Vererbungsbeziehung noch bezeichnet bzw. wie kann sie gedeutet werden?
Als "ist-ein" Beziehung (1P), alternativ auch "Spezialisierung"
An welcher Stelle der folgenden Vererbungshierarchie wird die Vererbung falsch eingesetzt?
Fhren Sie wenn mglich eine entsprechende Korrektur durch.
Fortbewegungsmittel
geschwindigkeit : int
reichweite: int
Automobil
Pferd
baujahr: int
hersteller: String
leistung: int
kofferraumvolumen: int
geburtsjahr: int
rasse: String
Fahrrad
baujahr: int
hersteller: String
kategorie: String
ritzelVorne: int[]
ritzelHinten: int[]
Rennrad, MTB,
Pkw
kategorie: String
Motorrad
kategorie: String
Das "Motorrad" ist kein "Automobil" und mte direkt von "Fortbewegungsmittel" erben (1P)
Welche der folgenden Zuweisungen sind gem der obigen Klassenhierarchie nicht zulssig und
wann erfolgt ggf. die Fehlermeldung bei der bersetzung oder zur Laufzeit? je 1P fr Fehler+Art
Automobil a = new Pkw();
Fortbewegungsmittel fb1 = a;
Fahrrad f = (Fahrrad)fb1;
Object o = new Pferd();
Fortbewegungsmittel fb2 = o;
//
//
//
//
//
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Problem/Lsung
Die main Methode muss statisch sein (static fehlt).
Quellcode
public class Niederlangde {
public static void main( String[] args) {
System.out.printnl( "Ooops!");
}
}
Fehlermeldung
Typo.java:4: cannot find symbol
symbol : method printnl(java.lang.String)
location: class java.io.PrintStream
System.out.printnl( "Ooops!");
^
1 error
Problem/Lsung
Der Compiler kennt die Methode printnl nicht, richtig wre println.
Quellcode
public class NetterVersuch {
public static void main( String[] args) {
try {
int i = System.in.read();
// weitere Programmzeilen
} finally {
System.out.println( "Geschafft!");
}
}
}
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Fehlermeldung
NetterVersuch.java:6: unreported exception java.io.IOException; must be caught
or declared to be thrown
int i = System.in.read();
^
1 error
Problem/Lsung
Ein try-Block fr die I/O Operation ist zwar da aber ohne catch! Alternativ: throws Deklaration
Quellcode
public class SchNullEr {
public static void main( String[] args) {
int i = 10;
while ( 1/i <= 1) {
System.out.println( i--);
}
}
}
Problem/Lsung
Bei i=1 ist das Abbruchkriterium immer noch nicht erfllt und die Schleife luft weiter und erzeugt
bei i=0 den obigen Fehler. Richtiger Countdown z.B. mit i >= 0. Hier ist brigends kein Array!
Quellcode
public class Initernational {
public static void main( String[] args) {
int i;
System.out.println( i);
}
}
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Fehlermeldung
Initernational.java:6: variable i might not have been initialized
System.out.println( i);
^
1 error
Problem/Lsung
Die Variable i wurde nur deklariert aber nicht initialisiert und darf so nicht verwendet werden.
Aufgabe 5.2 - Programme lesen [10P]
Analysieren Sie das folgende Programm, beschreiben Sie die Bedeutung der
einzelnen Variablen/Methoden und geben sie die Ausgabe des Programms an.
public class Mystery { // praktische Bedeutung angeben(!):
public String brizzle( char c) { // Vokale ausfiltern:
if ( "aeiou".indexOf( c) == -1) { // -1 wenn kein Vokal...
return Character.toString( c); // ...dann Zeichen zurck...
} else {
return ""; // ...sonst nix zurck
}
} // Vokale und Umlaute sind brigends nicht dasselbe!
public String frotzle( String s) { // Zeichenkette umdrehen:
StringBuilder sb = new StringBuilder();
int p = s.length(); //von hinten nach vorne durchlaufen
while (--p>=0) sb.append( brizzle( s.charAt( p))); // + 1 char
return sb.toString(); // Ergebnis "auspacken"
}
public static void main( String[] args) {
Mystery m = new Mystery(); // neues Objekt erzeugen + aufrufen
System.out.println( m.frotzle( "ist ja alles super gut"));
}
}
Aus der API-Referenz der Klasse String:
int indexOf(int ch)
Returns the index within this string of the first occurrence of
the specified character or -1 if the character was not found.
char charAt(int index)
Returns the char value at the specified index.
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
Ausgabe:
auch 1
der 2
gewinnt 1
nicht 2
wagt 1
Quellcode:
import java.io.*;
import java.util.*;
public class TextAnalyzer {
// Collection zur Sammlung der Ergebnisse
Map words = new TreeMap(); // 1P
/*
* Die folgenden Trenner "\t.,:;!?" identifizieren
*/
public boolean isSeparator( char c) {
return " \t.,:;!?".indexOf( c)!=-1; // 1P Trenner 1P indexOf
}
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Skript(e), Bcher
Name:
Vorname:
90 Minuten
Matr.Nr.:
/*
* Wert erhhen oder eintragen falls noch nicht vorhanden
*/
public void incrementWordCount( String word) {
if ( words.containsKey( word)) { // vorhandenes wort, erhhen
int count = (Integer)words.get( word);
count++;
words.put( word, count); // 1P Aufruf 1P Wert
} else { // neues wort, erstmalig eintragen
words.put( word, 1); // 1P Aufruf 1P Wert
}
}
/*
* Trenner nutzen um abwechselnd Wortanfang und -ende zu suchen
*/
public void analyzeText( String text) {
StringBuilder word = new StringBuilder();
boolean haveWord = false;
for ( int i=0; i<text.length(); ++i) { // 1P
char c = text.charAt( i);
if ( haveWord) {
if ( isSeparator( c)) {
haveWord = false; // 1P
incrementWordCount( word.toString()); // 2P Call+String
} else {
word.append( c); // 1P
}
} else {
if ( !isSeparator( c)) {
word = new StringBuilder();
word.append( c);
haveWord = true;
}
}
}
if ( haveWord) incrementWordCount( word.toString()); // 2P
}
Fachhochschule Esslingen
Hochschule fr Technik
Wintersemester 2006/2007
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen
1 WFB 1041
Semester: 2
Hilfsmittel:
Zeit:
Name:
Skript(e), Bcher
Vorname:
90 Minuten
Matr.Nr.:
/*
* Textdatei lesen und zeilenweise analysieren
*/
public void analyzeFile( String filename) {
try {
FileReader fr = new FileReader( filename);
BufferedReader br = new BufferedReader( fr);
String line = br.readLine();
while ( null != line) {
analyzeText( line);
line = br.readLine();
}
} catch ( IOException ex) {
System.out.println( ex.getMessage());
}
}
/*
* Ergebnis am Bildschirm ausgeben
*/
public void showResult() {
for ( Object word : words.keySet()) {
System.out.println( word + " " + words.get( word)); // 1P
}
}
public static void main( String[] args) {
TextAnalyzer t = new TextAnalyzer();
t.analyzeFile( "C:\\beispiel.txt");
t.showResult();
}
}