Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
EST - Pseudocode & PDF
Irgendwie stößt mir das langsam immer böser auf: Man darf ja bei den Pseudocode-Aufgaben auch komplett in Java coden, soweit so gut. Jedoch verstehe ich es nicht, warum man die Abgabe nicht auf weitere Dateitypen erweitert.
Ich habe das jetzt mit PDFCreator & Winword probiert, bei beiden Tools stimmen die Zeilen bei der aktuellen Abgabe nicht überein und STRG + A & STRG + C & STRG + V gibt dann zumindest ein ziemlich hässliches Code-Konstrukt, welches sich nicht mehr kompilieren lässt, da wie gesagt die Zeilen nicht übereinstimmen.
Ich habe mich mit den Einstellungen gespielt: Schriftgröße 3, größere Blattgröße etc. - jedes Mal die selbe Misere.
Bei meiner jetzigen Abgabe sieht es, wenn ich die PDF wieder in Notepad++ kopiere, so aus:
pdf.js (Waterfox): Von ursprünglich 151 Zeilen auf 837. (44 Errors)
Hier mal ein kleiner Ausschnitt (etwas abgeändert):
public class
Zahlenraten
{
// Kommentar
public static int
Name
(
int
a
,
int
b
)
Reader (Win8.1): Von ursprünglich 151 Zeilen auf 131. (89 Errors)
Winword (Win8.1 Office 365): PDF größer als das größte Seitenformat.
Man kann sicherlich die Abgabe auf dem Papier lesen, jedoch möchte ich so menschlich sein und meinem Tutor ermöglichen, dass er die Abgabe einfach nur kopieren & kompilieren braucht. Außerdem möchte ich nicht, dass es am Ende meine Note versaut, weil es sich eben nicht direkt kompilieren lässt.
Zumindest aus User-Sicht fällt mir da nichts mehr ein, was ich tun kann. Ich habe auch keine Lust mein ganzes Wochenende damit zu verschwenden, eine vernünftige PDF aus diesen Convertern zu bekommen.
Das ist ganz einfach nicht dein Problem Dein Tutor wird dafuer bezahlt, das zu korrigieren, da muss er durch. Jeder Tutor ist (hoffentlich) in der Lage, die Pseudocode-Aufgaben zu korrigieren, ohne das Ganze zu uebersetzen und auszufuehren. Im Laufe des Semesters kommen noch ganz andere Hausnummern an Code auf euch und eure Tutoren zu, das hier ist Kindergarten Und deine Punktzahl wird dadurch auch nicht beeintraechtigt, mach dir da mal keine Sorgen.
Wenn dein Tutor meint, er braucht den Code, dann schick ihm das Java-File per Mail, dann kann er es uebersetzen und ausfuehren.
Latex ftw!
Ansonsten hat br0gr4mm3r natürlich recht, dass dein Tutor damit schon zurecht kommen wird. Auf deine Punkte sollte das keine Auswirkungen haben, solange nur newlines und Einrückungen in deiner Abgabe verschoben sind.
Gut zu wissen, jedoch verstehe ich es nicht, warum man den Leuten mehr Aufwand aufdrückt als nötig. Ob sie dafür bezahlt werden ist jetzt einmal vollkommen unerheblich…
Ich empfinde zumindest den Bereich im EST als ausbaufähig. Sollte ja mehrere Dateitypen bei einer Abgabe unterstützen können.
Mein Tutor fordert das ja nicht explizit, das ist eher eine Sache, welche von mir ausgeht, da es mich, wenn ich Tutor wäre, wahrscheinlich massiv nerven würde. Und es wäre ja für die EST-Admins (wer auch immer das ist) ja sicher keine großer Aufwand. Es muss ja nicht einmal zwingend *.java sein, *.txt o.Ä. würde ja schon reichen.
Äh ja, Latex…
Naja, der Code wird halt einfach abgeschnitten und in die nächste Zeile gesetzt. Das ist einfach nicht so das Wahre.
Grundsätzlich ist eure Aufgabe Pseudocode abzugeben. Das wird auch bewertet. Ob sich das ganze in Java ausführen lässt oder nicht ist für eure Punkte egal. Wenn jemand sich die Mühe macht das Programm tatsächlich in Java zu coden, würde ich es als Tutor auch einfach mal ausprobieren und entsprechendes Feedback geben, da ich davon ausgehe, dass die Mühe zur Verbesserung der Programmierfähigkeiten auf sich genommen wurde.
Das heißt, dass du dir quasi wirklich den Sourcecode anhand der PDF anschaust & bewertest? Ich dachte eigentlich, dass es eben schon kompilieren muss, wenn man es so macht. Aber gut, wieder etwas dazugelernt. Dann hoffe ich mal, dass ich mir bei der aktuellen Abgabe genügend Mühe mit den Einrückungen gegeben habe…
Trotzdem wäre es doch definitiv etwas besser eine *.java / *.txt Datei zu haben, anstatt einer PDF. Dann könntest du es auch einfacher ausprobieren & Feedback geben. Ich meine wir reden hier lediglich über Dateiendungen…
Die Aufgabe verlangt nach Pseudocode. Wenn dein Pseudocode Java-Syntax ist, ist das für Tutoren meistens toll, weil das eindeutiger ist, aber es bleibt auf dem Papier Pseudocode. Der große Vorteil ist, dass ihr das besser ausprobieren und eventuell fixen könnt.
Eher nicht. Bei .txt passiert es relativ leicht, dass die Einrückungen kaputt gehen (Windows-Editor lässt grüßen…). .java würde indizieren, dass es wirklich kompilieren muss, und meiner Meinung nach hat Pseudocode nichts in einer .java zu suchen. Das soll ausschließlich für echte Programmierung da sein. Weiterer Vorteil: PDF sieht überall gleich aus und lässt sich schön kommentieren (Wobei man .java per Script auswerten könnte. Wäre hübsch…)
Solange du nicht mit Microsoft-Tabellenlayout abgibst, und halbwegs anständige Einrückungen (Und nicht zuviel schreibst!), freut sich dein Tutor bereits. Am meisten tut er das, wenn es richtig ist - dann spart er sich das kommentieren.
[quote=Alicen]
Die Aufgabe verlangt nach Pseudocode. Wenn dein Pseudocode Java-Syntax ist, ist das für Tutoren meistens toll, weil das eindeutiger ist, aber es bleibt auf dem Papier Pseudocode. Der große Vorteil ist, dass ihr das besser ausprobieren und eventuell fixen könnt.[/quote]
Naja, es ist kein Pseudocode. Es ist eher ein funktionsfähiges Programm. Ich halte einfach nichts von Pseudocode (und jetzt bitte keine Diskussion darüber, dass Javacode auch kein richtiger Code ist.) - der bringt mich beim Lernen doch auch nicht weiter. Was bringt es mir getUserInput() oder Zufallszahl() hinzuschreiben? Eigentlich nichts, ich will eher wissen, wie man das umsetzen kann. Das ist doch gerade der Reiz an der Sache.
[quote=Alicen]
Eher nicht. Bei .txt passiert es relativ leicht, dass die Einrückungen kaputt gehen (Windows-Editor lässt grüßen…). .java würde indizieren, dass es wirklich kompilieren muss, und meiner Meinung nach hat Pseudocode nichts in einer .java zu suchen. Das soll ausschließlich für echte Programmierung da sein. Weiterer Vorteil: PDF sieht überall gleich aus und lässt sich schön kommentieren (Wobei man .java per Script auswerten könnte. Wäre hübsch…)
Solange du nicht mit Microsoft-Tabellenlayout abgibst, und halbwegs anständige Einrückungen (Und nicht zuviel schreibst!), freut sich dein Tutor bereits. Am meisten tut er das, wenn es richtig ist - dann spart er sich das kommentieren.[/quote]
Deswegen verwendet man ja auch notepad++, PSPAD o.Ä. Das tut es ja in meinem Fall auch und ich stimme dir zu, dass Pseudocode in einer *.java Datei nichts zu suchen hat.
Für die Zahlenraten-Aufgabe waren es jetzt 150 Zeilen (4988 Zeichen) an Quelltext. Wobei viele leere Zeilen für ein ‘schönes’ Output drinnen sind
In der Aufgabe ist aber nur Pseudocode verlangt. Wenn dein Pseudocode zufälligerweise Javasyntax besitzt ist das nett, weil es bequem zu lesen ist. Korrigiert wird trotzdem so als wäre es Pseudocode, ohne auf Kompilierbarkeit oder ähnliches zu achten.
Ich wüsste auch grade gar nicht, wieso ich deinen Code ausführen wollen würde. Der Code sollte bei der Aufgabe so einfach sein, dass man auch beim Korrigieren per Hand Fehler findet, die Kompilieren/Ausführen verhindern würden, und entsprechende Hinweise (natürlich ohne Punktabzug) geben kann.
Der Sinn ist, algorithmisches Denken zu lernen, insbesondere wie man ein gegebenes Problem in Code umsetzt. Davon soll man nicht abgehalten werden, nur weil man gewisser Sprachkonzepte nicht mächtig ist.
Sinn von AuD ist es nicht, jedes Details von Java, wie bspw. Userinput, zu lernen, sondern gewisse allgemeine Algorithmen und in vielen Sprachen verwendete Datenstrukturen kennenzulernen. Es gibt durchaus Universitäten, an denen AuD komplett in Pseudocode gehalten wird. Hier in Erlangen versucht man eben, besagte Algorithmen durch Umsetzten in Java näherzubringen.
Ich mag allerdings Pseudocodeaufgaben auch nicht besonders und bin froh über jede Abgabe, die in Javasyntax erfolgt.
Selbstverständlich ist Java-Code „richtiger Code“. Es handelt sich dabei um Code für eine sog. abstrakte Maschine bzw. einen sog. abstrakten Prozessor, also eine (gedachte) Maschine, die Java-Code versteht - nur, weil es keine echte Hardware dafür gibt, heißt es nicht, dass der Code dafür nicht „richtig“ ist. Durch jede Sprache ist eine entsprechende abstrakte Maschine definiert, auch für C, PHP, Assembler, und was es nicht alles gibt. Wenn du als „richtigen Code“ nur das bezeichnen willst, was tatsächlich von der Hardware ausgeführt wird, dann musst du schon ganz tief runter in der Hierarchie - selbst Befehle der Instruktionsebene („Maschinencode“) wird im Allgemeinen von der Hardware noch in mehreren Schritten interpretiert, wäre also nach dieser Definition kein richtiger Code…
Und doch, Pseudocode hat durchaus seine Berechtigung. Schau dir beispielsweise Paper aus der (theoretischen) Informatik an - da findest du selten Code in einer tatsächlichen Programmiersprache, sondern haufenweise Pseudocode. Ganz einfach, weil man dabei Dinge abstrahieren kann, die für die eigentliche Betrachtung irrelevant sind. Genau das Gleiche gilt hier auch: es spielt keine Rolle für den Algorithmus, wie die Benutzereingabe in das Programm kommt (das alleine ist schon unvorstellbar komplex; glaub das jemandem, der schon das ein oder andere in Richtung Betriebssystem-Entwicklung gemacht hat) oder wie genau eine Zufallszahl generiert wird.
Ziel dieser Aufgaben ist es, Programmier-Neulinge an das algorithmische Denken heranzuführen. Sie sollen lernen, wie man ein komplexes Problem in kleinere, leichter handhabbare Teilschritte zerlegt. Das alleine ist für die allermeisten (> 90%, lange AuD-Erfahrung) schon mehr als genug Herausforderung. Das Ganze dann auch noch in Java abzuliefern würden die meisten schlichtweg nicht hinbekommen.
Wenn du Java bereits beherrscht - umso besser für dich! Das ist einer der Gründe, warum Java-Code als Lösung akzeptiert wird.
Ach hier im Forum lernt man noch einiges
Ok.
Ich glaube ich habe das Fach gar nicht, ich studiere ja lediglich Wirtschaftsinformatik (ich hoffe, ich werde jetzt nicht direkt gesteinigt. Ich habe deswegen im Vorfeld von Leuten, die Informatik studieren, recht unschöne Dinge an den Kopf geworfen bekommen…)
Bezüglich der 90 % - ist das wirklich so viel? Das ist ja echt heftig. Ich meine ich bin auch kein 1337haxx0r. Ich habe in der 13. Klasse (FOS) mit C# auf einem sehr sehr niedrigen Niveau angefangen (da sind 85 % der Klasse schon bei den Arrays ausgestiegen). Habe mich dann in C# in Eigeninitiative etwas weitergebildet und nunja, deswegen fällt mir der Einstieg wohl recht einfach. Davor hatte ich immer mal wieder mit PHP/SQL/Bash/Bat/HTML rumgespielt. C# und Java sind ja ‚recht gleich‘ (zumindest, was Konsolenanwendungen betrifft, mit GUI habe ich bei Java noch nichts gemacht…)
Was bei C# jedoch definitiv schöner ist, ist das Input-Handling. Wobei das bei Java doch einfacher geht, als gedacht.
Dafuer ist das Forum ja da
Das ist leider typisch fuer viele Informatiker (ich darf das sagen, bin selber einer)… Viele denken anscheinend, dass Informatik das einzig Wahre ist, merkt man auch immer wieder schoen an den Reaktionen auf Job-Angebote hier im Forum. Vielleicht ist das bei anderen Studienfaechern aber ja genauso, keine Ahnung.
Das „Problem“ mit Wirtschaftsinformatikern ist meiner Erfahrung nach, dass viele etwas blauaeugig in das Studium gehen und dann ueberrascht sind, dass das Studium doch tatsaechlich nicht nur Informatik im Namen traegt, sondern sogar inhaltlich was mit Informatik zu tun hat und man doch glatt programmieren muss. Das sorgt dann letztendlich fuer ein schlechtes Image des Studiengangs. Selbsverstaendlich betrifft das aber nicht alle, es gibt durchaus faehige Wirtschaftsinformatiker! Der inhaltliche Schwerpunkt ist halt ein anderer, das scheinen aber manche nicht verstehen zu wollen…
Ja, der Großteil hat zu Beginn des Studiums wirklich Schwierigkeiten und waere ohne Hilfe komplett aufgeschmissen. Ist aber ja nicht schlimm, man ist ja hier, um was zu lernen Heißt ja auch nicht, dass die alle durch AuD durchfallen. Wer bereit ist, Zeit und Arbeit zu investieren, der schafft es in der Regel auch, auch bei anfaenglichen Schwierigkeiten
Du lernst Abstraktion und Kapselung. Immer dann, wenn man in Pseudo-Code sowas wie [m]getRandomInt()[/m] oder [m]getInputLine()[/m] schreibt um sich das Leben zu vereinfachen, hat man eine Stelle gefunden, an der es in echtem Code Sinn ergeben könnte, eine separate Funktion für die Aufgabe zu schreiben (z.B. weil die Implementierung mehrmals gebraucht wird, hässlich ist, oder ganz banal – von jemand anderem implementiert wird).
[quote=br0gr4mm3r:1414270869]
Selbstverständlich ist Java-Code „richtiger Code“. Es handelt sich dabei um Code für eine sog. abstrakte Maschine bzw. einen sog. abstrakten Prozessor, also eine (gedachte) Maschine, die Java-Code versteht - nur, weil es keine echte Hardware dafür gibt[/quote]
Das ist so nicht ganz richtig: Java processor - Wikipedia
[quote=while(true):1414279861]
Ich glaube ich habe das Fach gar nicht, ich studiere ja lediglich Wirtschaftsinformatik (ich hoffe, ich werde jetzt nicht direkt gesteinigt. Ich habe deswegen im Vorfeld von Leuten, die Informatik studieren, recht unschöne Dinge an den Kopf geworfen bekommen…)[/quote]
Diese Arroganz ist in der Informatik leider weit verbreitet.
Doch, Java != Java Bytecode Die Hardware führt Bytecode aus, keine Java-Programme.
OK, hast Recht – ich hatte angenommen, dass du “Java” hier synonym für “Java-Bytecode” benutzt hattest (weil das üblicherweise auf anderen Systemen das ist, was man ausführt).