Also hi erstmal @ habo. Ich habe letzte Woche eine Klausur in Informatik geschrieben. Das Ergebnis ist meiner Meinung nach lächerlich.
Ich bitte euch um eure Meinung, bitte möglichst schnell, es sieht nach mehr aus, als es ist ;-)
Vorab einege Informationen:
In meinem Info Kurs benutzen wir das steinzeitliche Turbo-Pascal. Meine Lehrerin ist (und das sage ich nicht um sie schlecht zu machen, sondern um ihr Bewertungsvermögen zu klären) Alkoholikerin. Wenn ihr dazu mehr Angaben wissen wollt, schreibt mir ne pm oder so. Ich muss regelmäßig in diesem Kurs sie auf Fehler hinweisen, die sie in Programmcodes macht.
Ich denke deswegen hat sie etwas gegen mich, die Klausur findet ihr hier:
------------------------------------------------------------------
Informatikklausur Jahrgangstufe 11, Schuldorf Bergstraße
Aufgabe 1:
Im Programm Falsch auf der Rückseite sind einige Fehler eingebaut, die man teilweise auf unterschiedliche Art beheben kann. Dabei sollen die angegebenen Rechnungen durchgeführt werden und zum Schluss die Ergebnisse angezeigt werden.
Schreiben Sie das Programm so um dass es fehlerfrei läuft. Erläuter Sie dabei kurz, warum Sie welche Änderungen vornehmen.
Das Programm:
Program Falsch!;
var a,b,c: integer;
Begin
clrscr;
a=1;
b:=a+3;
c:=a/b;
writeln('Die Ergebnisse sind: a,b,c');
end;
Meine Lösung:
Program Falsch; //Kein Ausrufezeichen
uses crt; //Damit wir es überhaupt sehen
var a,b,c: real; //wenn es laufen soll, hier real (warum kommt weiter unten)(Lehrer: warum??)
Begin
clrscr;
a:=1; //Doppelpunkt
b:=a+3;
c:=a/b; //Semikolon
writeln('Die Ergebnisse sind: 'a,b,c); //Hochkomma falsche Stelle (Lehrer: warum??)
end;
Das Programm würde u.a. nicht laufen, da c (1:4) eine Kommazahl ergibt, die ein Integer nicht kann (Lehrer: also??) - siehe kommentar bei var
Aufgabe 2:
Das Programm was_tue_ich ist fehlerfrei!
1. Beschreiben Sie in Worten, was dieses Programm leistet.
2. Geben Sie die Bildschirmausgabe an
3. Schreiben Sie die Schleife als repeat Schleife
4. Warum ist es nicht sinnvoll, hier eine For-Schleife einzusetzen?
Das Programm:
Program was_tut_es; //wieder ein Fehler des Lehrers, in der Aufgabe heißt dass Proggy was_tue_ich, wenn wir hier schon so ne Haarspalterei an den Tag legen.
var a: Integer;
Begin
a:=2;
while a<9 do begin
a:=a+2;
writeln(a);
end;
readln;
end.
Meine Lösung:
1.Das Programm addiert so lange a+2, solange a<9 ist. Dann gibt es das Ergebnis aus (Lehrer: a+2+a+2+a+2...?). Also mit viel gutem WIllen kann man das ja da hineininterpretieren, aber ich denke es geht klar hervor was ich sagen will.
2. Bildschirmausgabe: 468 //Fehler, es muss untereinanderstehen, ok das seh ich irgendwo ein
3. Schreiben Sie die Schleife als repeat Schleife:
(...) (Lehrer: ???)
repeat
a:=a+2;
writeln(a);
until a<=8; (Leher: f), ok seh ich ein, a ist von Anfang an <=8
(...)
4.Eine For-Schleife macht hier keinen Sinn, da das Ergebnis <9 lautet. Bei einer For-Schleife kann hier schnell eine Endlosschleife entstehen, wenn das Ergebnis nie zutrifft. Außerdem ist es mit einer while Schleife unkomplizierter. //Falsch, ok seh ich auch hier ein, aus verschiedenen Gründen.
Aufgabe 3:
Das Programm Addieren enthält einige Spielereien.
1. Beschreiben Sie in einem Satz, Was die Hauptaufgabe dieses Programms ist.
2. Was bewirkt die GotoXY-Anweisung, was genau geschieht durch die Textcolor Anweisung? //mussten wir nicht unbedingt machen
3. Fügen Sie einen Anweisungsteil ein, der Ihnen die gewürfelten Zahlen anzeigt.
4. Welche Bedeutung haben die Zahlen :2:3 in der ersten write-Anweisung?
Ist diese Angabe für dieses Programm sinnvoll?
Wie sieht es mit der entsprechenden Angabe in der zweiten write- Anweisung aus?
Das Programm:
Program Addieren;
uses crt;
var Zahl, Summe, d: real;
i: integerM
Begin
clrscr;
Summe:=0;
For i:=1 to 10 do begin
gotoxy(i.3,i+i);
textcolor(i);
Zahl:=random(30);
Summe:=Summe+Zahl;
end;
d:=summe/10;
writeln('Die Summe der 10 Zahlen ist ',Summe:2:3);
writeln(Der Zahlendurchschnitt beträgt ',d:3:2);
readln;
end.
Meine Lösung:
Vorab:
Die 'randomize'- Anweisung fehlt (ohne '') //ich glaube das hat sie auch angepisst, dass in Ihren "fehlerfreien" Proggy Fehler sind
1. Das Programm schreibt an der Stelle (i+3,i+i) in der Farbe (i) die Variablen Summe und d auf den Bildschirm. (Lehrer: falsch, sei nicht die Hauptaufgabe)
2. Siehe 3.1
3.
(...) //In der For-schleife
textcolor(i);
Zahl:=random(30);
writeln(Zahl);
(...)
(Lehrer: sehr minimalistisch)
4.Hier gibt uns das Programm die Ergebnisse in einer für uns leserlichen Form aus. Es macht keinen Sinn diese zu benutzen, da die Zahlen nur ganze Zahlen sein können.
Im zweiten Fall macht es keinen Sinn, da es ein Bruch, mit maximal einer Nachkommastelle ist.
(Lehrer: 0/3 Pkt) - ich hab einen Fehler gemacht, man braucht sie, da es real Variablen sind, aber der erste Satz in 3.4 ist ja wohl verständlich
Aufgabe 4:
Teil eines Programms ist die gegebene For-Schleife.
Schleife:
For i:=1 to 40 do begin
a:=i*i;
writeln(i,'--',a);
end;
1.Was geschieht, wenn das Begin vergessen wird?
2.Schreiben Sie die Schleife als while und repeat Schleife.
3.Was berechnet der Programmteil?
Meine Lösung:
1. Wenn das Begin vergessen wird, funktioniert die Schleife nicht, da wir mehr als eine Anweisung innerhalb der Schleife haben (Lehrer: naja - es funktioniert gar nichts!) -sprich das was ich gesagt habe...
2.
i:=0;
while i<41 do
begin
inc(i);
a:=i+i;
writeln(i,'--',a);
end;
2.2
i:=0;
repeat
inc(i);
a:=i*i;
writeln(i,'--',a);
until i<41; //gleicher Fehler wie bei 2.3
3. Der Programmteil multipliziert i mit sich selbst und weist das Ergebnis a zu. Dann gibt es i und a aus. (Lehrer: Ausgabe ist keine Rechnung) - hab ich das etwa gesagt? Ich sagte er gibt i und a aus.
Auf diese Klausur habe ich 7 Punkte erhalten
-------------------------------------------------------------------
Ich bitte euch nochmals um eure Meinung dazu.
Danke im Voraus
Executor
Ich bitte euch um eure Meinung, bitte möglichst schnell, es sieht nach mehr aus, als es ist ;-)
Vorab einege Informationen:
In meinem Info Kurs benutzen wir das steinzeitliche Turbo-Pascal. Meine Lehrerin ist (und das sage ich nicht um sie schlecht zu machen, sondern um ihr Bewertungsvermögen zu klären) Alkoholikerin. Wenn ihr dazu mehr Angaben wissen wollt, schreibt mir ne pm oder so. Ich muss regelmäßig in diesem Kurs sie auf Fehler hinweisen, die sie in Programmcodes macht.
Ich denke deswegen hat sie etwas gegen mich, die Klausur findet ihr hier:
------------------------------------------------------------------
Informatikklausur Jahrgangstufe 11, Schuldorf Bergstraße
Aufgabe 1:
Im Programm Falsch auf der Rückseite sind einige Fehler eingebaut, die man teilweise auf unterschiedliche Art beheben kann. Dabei sollen die angegebenen Rechnungen durchgeführt werden und zum Schluss die Ergebnisse angezeigt werden.
Schreiben Sie das Programm so um dass es fehlerfrei läuft. Erläuter Sie dabei kurz, warum Sie welche Änderungen vornehmen.
Das Programm:
Program Falsch!;
var a,b,c: integer;
Begin
clrscr;
a=1;
b:=a+3;
c:=a/b;
writeln('Die Ergebnisse sind: a,b,c');
end;
Meine Lösung:
Program Falsch; //Kein Ausrufezeichen
uses crt; //Damit wir es überhaupt sehen
var a,b,c: real; //wenn es laufen soll, hier real (warum kommt weiter unten)(Lehrer: warum??)
Begin
clrscr;
a:=1; //Doppelpunkt
b:=a+3;
c:=a/b; //Semikolon
writeln('Die Ergebnisse sind: 'a,b,c); //Hochkomma falsche Stelle (Lehrer: warum??)
end;
Das Programm würde u.a. nicht laufen, da c (1:4) eine Kommazahl ergibt, die ein Integer nicht kann (Lehrer: also??) - siehe kommentar bei var
Aufgabe 2:
Das Programm was_tue_ich ist fehlerfrei!
1. Beschreiben Sie in Worten, was dieses Programm leistet.
2. Geben Sie die Bildschirmausgabe an
3. Schreiben Sie die Schleife als repeat Schleife
4. Warum ist es nicht sinnvoll, hier eine For-Schleife einzusetzen?
Das Programm:
Program was_tut_es; //wieder ein Fehler des Lehrers, in der Aufgabe heißt dass Proggy was_tue_ich, wenn wir hier schon so ne Haarspalterei an den Tag legen.
var a: Integer;
Begin
a:=2;
while a<9 do begin
a:=a+2;
writeln(a);
end;
readln;
end.
Meine Lösung:
1.Das Programm addiert so lange a+2, solange a<9 ist. Dann gibt es das Ergebnis aus (Lehrer: a+2+a+2+a+2...?). Also mit viel gutem WIllen kann man das ja da hineininterpretieren, aber ich denke es geht klar hervor was ich sagen will.
2. Bildschirmausgabe: 468 //Fehler, es muss untereinanderstehen, ok das seh ich irgendwo ein
3. Schreiben Sie die Schleife als repeat Schleife:
(...) (Lehrer: ???)
repeat
a:=a+2;
writeln(a);
until a<=8; (Leher: f), ok seh ich ein, a ist von Anfang an <=8
(...)
4.Eine For-Schleife macht hier keinen Sinn, da das Ergebnis <9 lautet. Bei einer For-Schleife kann hier schnell eine Endlosschleife entstehen, wenn das Ergebnis nie zutrifft. Außerdem ist es mit einer while Schleife unkomplizierter. //Falsch, ok seh ich auch hier ein, aus verschiedenen Gründen.
Aufgabe 3:
Das Programm Addieren enthält einige Spielereien.
1. Beschreiben Sie in einem Satz, Was die Hauptaufgabe dieses Programms ist.
2. Was bewirkt die GotoXY-Anweisung, was genau geschieht durch die Textcolor Anweisung? //mussten wir nicht unbedingt machen
3. Fügen Sie einen Anweisungsteil ein, der Ihnen die gewürfelten Zahlen anzeigt.
4. Welche Bedeutung haben die Zahlen :2:3 in der ersten write-Anweisung?
Ist diese Angabe für dieses Programm sinnvoll?
Wie sieht es mit der entsprechenden Angabe in der zweiten write- Anweisung aus?
Das Programm:
Program Addieren;
uses crt;
var Zahl, Summe, d: real;
i: integerM
Begin
clrscr;
Summe:=0;
For i:=1 to 10 do begin
gotoxy(i.3,i+i);
textcolor(i);
Zahl:=random(30);
Summe:=Summe+Zahl;
end;
d:=summe/10;
writeln('Die Summe der 10 Zahlen ist ',Summe:2:3);
writeln(Der Zahlendurchschnitt beträgt ',d:3:2);
readln;
end.
Meine Lösung:
Vorab:
Die 'randomize'- Anweisung fehlt (ohne '') //ich glaube das hat sie auch angepisst, dass in Ihren "fehlerfreien" Proggy Fehler sind
1. Das Programm schreibt an der Stelle (i+3,i+i) in der Farbe (i) die Variablen Summe und d auf den Bildschirm. (Lehrer: falsch, sei nicht die Hauptaufgabe)
2. Siehe 3.1
3.
(...) //In der For-schleife
textcolor(i);
Zahl:=random(30);
writeln(Zahl);
(...)
(Lehrer: sehr minimalistisch)
4.Hier gibt uns das Programm die Ergebnisse in einer für uns leserlichen Form aus. Es macht keinen Sinn diese zu benutzen, da die Zahlen nur ganze Zahlen sein können.
Im zweiten Fall macht es keinen Sinn, da es ein Bruch, mit maximal einer Nachkommastelle ist.
(Lehrer: 0/3 Pkt) - ich hab einen Fehler gemacht, man braucht sie, da es real Variablen sind, aber der erste Satz in 3.4 ist ja wohl verständlich
Aufgabe 4:
Teil eines Programms ist die gegebene For-Schleife.
Schleife:
For i:=1 to 40 do begin
a:=i*i;
writeln(i,'--',a);
end;
1.Was geschieht, wenn das Begin vergessen wird?
2.Schreiben Sie die Schleife als while und repeat Schleife.
3.Was berechnet der Programmteil?
Meine Lösung:
1. Wenn das Begin vergessen wird, funktioniert die Schleife nicht, da wir mehr als eine Anweisung innerhalb der Schleife haben (Lehrer: naja - es funktioniert gar nichts!) -sprich das was ich gesagt habe...
2.
i:=0;
while i<41 do
begin
inc(i);
a:=i+i;
writeln(i,'--',a);
end;
2.2
i:=0;
repeat
inc(i);
a:=i*i;
writeln(i,'--',a);
until i<41; //gleicher Fehler wie bei 2.3
3. Der Programmteil multipliziert i mit sich selbst und weist das Ergebnis a zu. Dann gibt es i und a aus. (Lehrer: Ausgabe ist keine Rechnung) - hab ich das etwa gesagt? Ich sagte er gibt i und a aus.
Auf diese Klausur habe ich 7 Punkte erhalten
-------------------------------------------------------------------
Ich bitte euch nochmals um eure Meinung dazu.
Danke im Voraus
Executor