Moin!
Gibt es eigentlich jedes Jahr neue Testklausuren für SE1 ?
Und wenn ja, weiß jemand wie man an die alten Testklausuren rankommt?
(In die entsprechenden Gruppen im mincommsy kommt man ja nicht rein.)
Wäre sicherlich hilfreich im Hinblick auf die Vorbereitung zur kommenden Klausur!
MfG
Freddy
Gibt es eigentlich jedes Jahr neue Testklausuren für SE1 ?
Soweit ich mich erinnern kann, ist das jedes Jahr dieselbe Testklausur.
Danke Fred!
Dann brauch ich ja nicht mehr weiter danach zu suchen.
Die Fragen zu den alten Klausuren (und insbesondere die Antworten, die ja zu einem Großen Teil von dir verfasst waren - nochmals Danke!) durchzulesen war ja auch schon hinreichend hilfreich!
Eine weiter Frage habe ich noch:
Gibt es eigentlich irgendwo Gedächtnis-Protokolle/Abschiften/Photos etc. der vergangenen SE1 - Klausuren? (Ich weiß, dass es solche in anderen Fachschaften gibt und das diese bisher häufig sehr hilfreich waren.)
MfG
Freddy
Im Fachschafts-Wiki gibt es
ein kurzes vom letzten Jahr, allgemein ist die Klausur von den Fragestellungen her allerdings wirklich recht nah an der Probeklausur (wie man an dem Protokoll ja auch sieht).
Danke!
Bin ja ein eifriger Aufgaben-Sammler, da ich denke, dass jeder Gedanke den ich Zuhause machen (und nachprüfen) kann, ein Gedanke ist, der mich bei der Klausur nicht mehr ins Stolpern bringen kann.
Insofern sind auch ein paar Aufgaben besser als keine!
Gruß
Freddy
Danke Fred!
Dann brauch ich ja nicht mehr weiter danach zu suchen.
Die Fragen zu den alten Klausuren (und insbesondere die Antworten, die ja zu einem Großen Teil von dir verfasst waren - nochmals Danke!) durchzulesen war ja auch schon hinreichend hilfreich!
Eine weiter Frage habe ich noch:
Gibt es eigentlich irgendwo Gedächtnis-Protokolle/Abschiften/Photos etc. der vergangenen SE1 - Klausuren? (Ich weiß, dass es solche in anderen Fachschaften gibt und das diese bisher häufig sehr hilfreich waren.)
MfG
Freddy
Hey Leute,
wo befinden sich die Fragen zu den alten Klausuren und die von Fred gegebenen Antworten? :) Danke…
wo befinden sich die Fragen zu den alten Klausuren
In diesem Board, "PM Praktische Informatik", einfach mal in Threads vom letzten Jahr wühlen, z.B.
dieser hier.
Im Fachschafts-Wiki gibt es ein kurzes vom letzten Jahr, allgemein ist die Klausur von den Fragestellungen her allerdings wirklich recht nah an der Probeklausur (wie man an dem Protokoll ja auch sieht).
Was haltet ihr von folgenden Antworten für das oben genannte Protokoll:
Aufgabe 34: 18
Aufgabe 35: 18
Nächste: Punkt 1 ankreuzen
Nächste: 12
Nächste: 7.5
Nächste: 0
Nächste: Punkt 2 ankreuzen
????? :)
Tipp: Java-Code kann man auf einem Computer ausführen.
Und bei der letzten Aufgabe ist die korrekte Antwort gar nicht dabei, das hat letztes Jahr ein Oliver B. gemerkt, wenn micht nicht alles täuscht.
Bei der Aufgabe
Frage
Berechne den folgenden Ausdruck:
(int)( 13.0 / 3 * 3 )
* 4
* 12
* 13
* bla
kommt 13 und nicht 12 raus. Erst wird die Fließkommadivision dann -multiplikation ausgeführt und dann der Typecast von 13.0 auf 13 durchgeführt.
Bei der folgenden Aufgabe hab ich Fragen:
Frage
Welche Aussagen stimmen?
class Schalter {
private int _aktuellerZustand;
static public int _ANZAHL;
public void umschalten() {
_aktuellerZustand = !_aktuellerZustand;
_ANZAHL++;
}
static private int gibAnzahl() {
return _ANZAHL;
}
}
* _ANZAHL ist eine Klassenvariable
* gibAnzahl ist eine Exemplarmethode
* _aktuellerZustand kann nicht aus gibAnzahl abgefragt werden
* in _ANZAHL zählt für jedes Objekt getrennt das umschalten.
Ich verstehe die letzten beiden Antwortmöglichkeiten nicht.
Soll die dritte bedeuten, dass gibAnzahl() _aktuellerZustand nicht ausgibt (was zutrifft), oder dass _aktuellerZustand nicht im Sichtbarkeitsbereich der Methode liegt (was nicht zutrifft)? Und bei der letzten Antwort weiß ich gar nicht, was das bedeuten soll.
Außerdem ist doch
_aktuellerZustand = !_aktuellerZustand;
völliger Unsinn oder nicht?
Bei der letzten Frage aus dem Gprot hätt ich gedacht, dass "Der Code wirft eine Exception" richtig wär, weil das Array nie erzeugt wird. In dem Zusammenhang ist dann auch unschlüssig, ob "intArray hat 0 Elemente" als richtig oder falsch zu werten ist, weil das Array ja gar nicht existiert (wurd nur deklariert).
Soll die dritte bedeuten, dass gibAnzahl() _aktuellerZustand nicht ausgibt (was zutrifft), oder dass _aktuellerZustand nicht im Sichtbarkeitsbereich der Methode liegt (was nicht zutrifft)?
_aktuellerZustand ist eine Exemplarvariable, gibAnzahl() ist jedoch eine Klassenmethode (static) und kann somit nicht auf Exemplarvariablen zugreifen. Der Compiler sagt einem das auch recht klar, wenn man versucht, _aktuellerZustand innerhalb von gibAnzahl() zu benutzen:
non-static variable _aktuellerZustand cannot be referenced from a static context
Und bei der letzten Antwort weiß ich gar nicht, was das bedeuten soll.
Mein Versuch einer Paraphrasierung:
Jeder Schalter protokolliert für sich in seiner Variable _ANZAHL die Anzahl seiner Umschaltvorgänge.Außerdem ist doch _aktuellerZustand = !_aktuellerZustand;
völliger Unsinn oder nicht?
In diesem Fall ja, der Code lässt sich ebenfalls nicht kompilieren. Ich vermute allerdings, dass _aktuellerZustand im Original vom Typ boolean war, dann funktioniert das wieder. (Man mache sich die Semantik eines Schalters klar. Gute Aufgabe, um die Auswertung von Ausdrücken und den Ablauf bei einer Zuweisung zu wiederholen.)
Bei der letzten Frage aus dem Gprot hätt ich gedacht, dass "Der Code wirft eine Exception" richtig wär, weil das Array nie initialisiert wird. In dem Zusammenhang ist dann auch unschlüssig, ob "intArray hat 0 Elemente" als richtig oder falsch zu werten ist, weil das Array ja gar nicht existiert (wurd nur deklariert).
Den Code kann man überhaupt nicht ausführen, da er sich gar nicht erst kompilieren lässt:
variable intArray might not have been initialized
Allgemein gilt, was Fred schon sagte: Solange ihr noch zuhause am PC sitzt, könnt ihr solche Fragen relativ komfortabel durch Ausführen überprüfen. :)
Bei der Aufgabe
Frage
Berechne den folgenden Ausdruck:
(int)( 13.0 / 3 * 3 )
* 4
* 12
* 13
* bla
kommt 13 und nicht 12 raus. Erst wird die Fließkommadivision dann -multiplikation ausgeführt und dann der Typecast von 13.0 auf 13 durchgeführt.
Das Ergebnis 13 ist korrekt (kann man ja einfach ausprobieren), aber kann man das wirklich durch reines Nachdenken wissen? Bei Gleitkommaoperationen muss man ja immer sehr vorsichtig sein. Die Zahl 13.0 / 3 kann man als double ja gar nicht exakt darstellen.
Probier z.B. mal folgendes Gegenbeispiel in der Direkteingabe von BlueJ:
(int)(61.0 / 7 * 7)
Außerdem ist doch _aktuellerZustand = !_aktuellerZustand;
völliger Unsinn oder nicht?
Wie gesagt ist _aktuellerZustand ziemlich sicher ein boolean.
!_aktuellerZustand macht einfach aus true ein false und umgekehrt. Ganz simpel.
Bei der Aufgabe
Frage
Berechne den folgenden Ausdruck:
(int)( 13.0 / 3 * 3 )
* 4
* 12
* 13
* bla
kommt 13 und nicht 12 raus. Erst wird die Fließkommadivision dann -multiplikation ausgeführt und dann der Typecast von 13.0 auf 13 durchgeführt.
Sicher? Durch das rechnen mit Fliesskommazahlen treten hier Rundungsfehler auf, das heisst, ( 13.0 / 3 * 3 ) ist UNGEFÄHR 13, aber nicht zwingend genau 13. Und falls es weniger als 13 ist, wird auf 12 abgerundet.
edit: Fred war schneller…
Erstmal Danke an Fred und Julian. :)
Das Ergebnis 13 ist korrekt (kann man ja einfach ausprobieren), aber kann man das wirklich durch reines Nachdenken wissen? Bei Gleitkommaoperationen muss man ja immer sehr vorsichtig sein. Die Zahl 13.0 / 3 kann man als double ja gar nicht exakt darstellen.
Probier z.B. mal folgendes Gegenbeispiel in der Direkteingabe von BlueJ:
(int)(61.0 / 7 * 7)
Okay, das macht natürlich Sinn. Aber wie soll man denn dann so eine Aufgabe in der Klausur beantworten? Setzt man in dem Beispiel z.b. 60.0 ein, ist das Ergebnis wieder korrekt. Gibt es da irgendeine Regelmäßigkeit?
Mein Versuch einer Paraphrasierung: Jeder Schalter protokolliert für sich in seiner Variable _ANZAHL die Anzahl seiner Umschaltvorgänge.
Dann ist die Antwort falsch, oder? _ANZAHL ist ja eine statische Variable, wird also afaik nicht für jedes Exemplar einzeln erzeugt.
Den Code kann man überhaupt nicht ausführen, da er sich gar nicht erst kompilieren lässt:
variable intArray might not have been initialized
Da schein ich die Begrifflichkeit noch nicht drauf gehabt zu haben. Ich dachte jegliche Fehlermeldung, die die Ausführung des Programms verhindert, egal ob bei der Übersetzung oder zur Laufzeit, würde als Exception bezeichnet…
Aber wie soll man denn dann so eine Aufgabe in der Klausur beantworten? […] Gibt es da irgendeine Regelmäßigkeit?
Die gibt es bestimmt, IEEE754 ist ja deterministisch. Aber für eine Klausuraufgabe ist das natürlich zu hoch gegriffen. Das Problem ist bisher einfach niemandem aufgefallen (und plötzlich fällt es zwei Leuten im Abstand von zwei Minuten auf - Wahnsinn, oder?).
Der Grundgedanke war bisher immer "x.0 / n * n == x.0", und in der Klausur solltet ihr das auch so handhaben (falls eine solche Aufgabe drankommt).
Dann ist die Antwort falsch, oder? _ANZAHL ist ja eine statische Variable, wird also afaik nicht für jedes Exemplar einzeln erzeugt.
Da liegst Du richtig. (Wobei man aufpassen muss, was in der Aufgabe steht, steht da Objekt oder Exemplar?) Es ist aber definitiv so gemeint, wie Du es interpretiert hast.
Ich dachte jegliche Fehlermeldung, die die Ausführung des Programms verhindert, egal ob bei der Übersetzung oder zur Laufzeit, würde als Exception bezeichnet…
Nein. Exceptions treten nur zur Laufzeit auf, setzen also voraus, dass das Programm übersetzbar ist, d.h. syntaktisch und semantisch korrekt.
Ich dachte jegliche Fehlermeldung, die die Ausführung des Programms verhindert, egal ob bei der Übersetzung oder zur Laufzeit, würde als Exception bezeichnet…
Nein. Exceptions treten nur zur Laufzeit auf, setzen also voraus, dass das Programm übersetzbar ist, d.h. syntaktisch und semantisch korrekt.
Wieso semantisch korrekt? Logikfehler kann der Compiler doch gerade nicht erkennen.
So spät noch hier im Forum unterwegs? :D
Nein. Exceptions treten nur zur Laufzeit auf, setzen also voraus, dass das Programm übersetzbar ist, d.h. syntaktisch und semantisch korrekt.
Okay, wie nennt man solche Fehlermeldungen / Abbrüche zur Übersetzungszeit?
Wieso semantisch korrekt? Logikfehler kann der Compiler doch gerade nicht erkennen.
Semantik ist nicht dasselbe wie Logik. Ein Compiler durchläuft nach der Syntaxphase viele Semantikphasen, in denen das Programm auf statisch erkennbare Fehler überprüft wird. Gibt es die Methode, die hier aufgerufen wird? Darf ich diese Zuweisung durchführen? Wurde die Variable vor der ersten Benutzung initialisiert?
Siehe
Wikipedia. Oh, die benutzen da ja sehr ähnliche Beispiele [28]
Logikfehler (das Programm berechnet Quatsch) sind eine andere Schiene.
Okay, wie nennt man solche Fehlermeldungen / Abbrüche zur Übersetzungszeit?
Syntaxfehler nennt man Syntaxfehler, Semantikfehler nennt man Semantikfehler. Der Oberbegriff lautet dann wohl Übersetzungsfehler oder so.
Dann gibt's von mir ein… Bitte [23] Jetzt aber ins Bett.
Für die Aufgabensucher unter euch ist vielleicht ein Beitrag von Henning Pridöhl aus dem CommSy interessant:
Ich hab mir mal die Mühe gemacht und 23 Übungsaufgaben ausgedacht. Zu finden sind sie unter http://se1fragen.hprid.de/
Keine Garantie, dass Fragen und dazugehörige Antwortmöglichkeiten richtig sind, aber wer Fehler oder unklare/missverständliche Formulierungen findet, möge doch bitte Bescheid geben.
Viel Spaß damit.
Ich hab sie selbst noch nicht vollständig kontrolliert, die ersten paar sehen aber zum Lernen ganz geeignet aus.
(Crossposting mit Genehmigung des Autors)