Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
ProgrammierTrainer„Ein guter Programmierer erkennt nichtdie Programmiersprachesondern das Problem“
ProjektteamBetreuender Lehrer:Dipl.-Ing. Harald HABERSTROHProjektteam:DINHOBL ErhardREITERER Martin
Agenda Einleitung / Ausgangslage Was ist der ProgrammierTrainer? Aus welchen Teilen besteht der ProgrammierTrainer? Ar...
Einleitung / AusgangslageProblem:Programmieranfängern fällt es zu Beginn oft schwer,sich den Ablauf eines Programms vorzus...
Was ist der ProgrammierTrainer?Der ProgrammierTrainer ist ein Programm zumErlernen der Programmier-Technik.Funktionalität:...
ProgrammierTrainer
Aus welchen Teilen besteht derProgrammierTrainer?Der ProgrammierTrainer besteht aus zweigroßen Teilen: Interface zum Löse...
Arten von AufgabenEs gibt zwei verschiedene Arten vonAufgabestellungen: E/A-Aufgaben: Entspricht dem Prinzip vonKonsole-A...
Technologien und RealisierungVerwendete Technologien Java Embedded Python (Jython) XML (Aufgabendateien)Programmierumge...
Übersicht über meine zu realisierenden Teile Erstellen einer Aufgabendatei Verschlüsselung Automatisches Erzeugen vonZu...
Abspeicherung einer AufgabeAbspeicherung: Aufgaben werden in Dateien abgelegt Die Dateien befinden sich im XML-FormatInh...
Verschlüsselungskonzept… Aufgabendateien sollen verschlüsselt werden können …Gewähltes Verfahren: DES (Data Encryption Sta...
Hamster Steuerung eines Hamsters mit einfachenBefehlen (vor, linksUm, …)Vorteil:Der Benutzer siehtsofort das Ergebnis sei...
Hamster (2)Implementierung: Um den Hamster an den verschiedensten Stelleneinsetzen zu können wurde ein Hamster-Panelentwi...
Das Ausführen vonProgrammenAutor: Erhard Dinhobl
Die Modi ausgelagert in einen Thread1. normales Ausführen eines Programms2. debuggen eines Programms3. testen eines Progr...
Das Ausführen Pseudocodeanweisung ist eigentlichPythonanweisung Zwischenanweisungen für Informationen Pythoncode + Zwis...
Interaktion mit Benutzern(Eingabe/Ausgabe und Hamster)...str = read(„Text:“)...print str...AusgeführtesProgrammdef read(st...
Wichtige Faktoren bei derAusführung bei Exception  Wo ist sie aufgetreten? anhalten beim Debuggen beenden eines Progra...
try:...trace.nextLine = ‚i = 1/0‘trace.iLineNumber = 3i = 1/0...except:print ‚Fehler bei: ‘ + trace.nextLine + ‚@‘ + trace...
Anhalten beim Debuggen Beispieltrace.nextLine = ‚i = 12’trace.iLineNumber = 5trace.nextStep()i = 12wait() „nächste Anweis...
Mechanismus zum Beenden Exception wird ausgelöst  except-Klauseltry:...trace.nextLine = ‚i = 12’trace.iLineNumber = 5tra...
Abbruch von Endlosschleifenweiterer Thread vor Ausführunggestartetbei Eingabe mit „read()“ Timeoutnicht weiterzählenbei...
Das TestenProgrammvirtuellerBenutzer Eingaben AusgabenPrüfungread()
Ablauf der Überprüfung für einen TestTestDummy Ausgabe-Prüfungread()Stringprintbcheck1 = ‚true’bcheck2 = ‚true’Vergleich b...
ENDEDanke für Ihre Aufmerksamkeit
Nächste SlideShare
Wird geladen in …5
×

Was ist der ProgrammierTrainer!

166 Aufrufe

Veröffentlicht am

Präsentation zum Projekt ProgrammierTrainer - welches auf GitHub zu finden ist: https://github.com/mrqc/programmiertrainer

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Was ist der ProgrammierTrainer!

  1. 1. ProgrammierTrainer„Ein guter Programmierer erkennt nichtdie Programmiersprachesondern das Problem“
  2. 2. ProjektteamBetreuender Lehrer:Dipl.-Ing. Harald HABERSTROHProjektteam:DINHOBL ErhardREITERER Martin
  3. 3. Agenda Einleitung / Ausgangslage Was ist der ProgrammierTrainer? Aus welchen Teilen besteht der ProgrammierTrainer? Arten von Aufgaben Technologien & Realisierung Übersicht über meine zu realisierenden
  4. 4. Einleitung / AusgangslageProblem:Programmieranfängern fällt es zu Beginn oft schwer,sich den Ablauf eines Programms vorzustellen.Grund:Sie befassen sich mehr mit der Syntax derProgrammiersprache als mit dem Programmablauf.Lösung:Programmieren mussprogrammiersprachenunabhängig erlernt werden
  5. 5. Was ist der ProgrammierTrainer?Der ProgrammierTrainer ist ein Programm zumErlernen der Programmier-Technik.Funktionalität: Benutzer muss eine Aufgabe lösen Aufgabe wird in Datei abgespeichert Verschlüsselung der Aufgabendateien ist möglich Lösen der Aufgabe durch das Erstellen eines Programm-Algorithmus Benutzer benötigt keine Kenntnis über eineProgrammiersprache Erstellte Programm-Lösung kann automatisiert getestet werden
  6. 6. ProgrammierTrainer
  7. 7. Aus welchen Teilen besteht derProgrammierTrainer?Der ProgrammierTrainer besteht aus zweigroßen Teilen: Interface zum Lösen einer Aufgabenstellung(ProgrammierTrainer) Interface zum Erstellen einerAufgabenstellung (ExampleBuilder)
  8. 8. Arten von AufgabenEs gibt zwei verschiedene Arten vonAufgabestellungen: E/A-Aufgaben: Entspricht dem Prinzip vonKonsole-Anwendungen Hamster-Aufgaben: Bei dieser Art vonAufgaben muss ein Hamster in einerHamster-Welt gesteuert werden.
  9. 9. Technologien und RealisierungVerwendete Technologien Java Embedded Python (Jython) XML (Aufgabendateien)Programmierumgebung Borland JBuilder 9.0
  10. 10. Übersicht über meine zu realisierenden Teile Erstellen einer Aufgabendatei Verschlüsselung Automatisches Erzeugen vonZufallsanweisungen Automatisches Zuordnen von Pseudo-Code-Anweisungen Hamster-Steuerung & Anzeige Python-Editor Drucken
  11. 11. Abspeicherung einer AufgabeAbspeicherung: Aufgaben werden in Dateien abgelegt Die Dateien befinden sich im XML-FormatInhalt: Aufgabenbeschreibung Musterlösung Hamster-Welt (bei Hamster-Aufgaben) Programmeinstellungen (Verfügbarkeit vonHinweisen, …)
  12. 12. Verschlüsselungskonzept… Aufgabendateien sollen verschlüsselt werden können …Gewähltes Verfahren: DES (Data Encryption Standard)DES: 1974 von IBM entwickelt Schlüssellänge von 56 Bit  sicher Kann in akzeptabler Zeit nicht geknackt werden Relativ schnell durch Hardware-Unterstützung Nur wenige Angriffsmöglichkeiten (Brute-Force,differenzielle und lineare Kryptanalyse)
  13. 13. Hamster Steuerung eines Hamsters mit einfachenBefehlen (vor, linksUm, …)Vorteil:Der Benutzer siehtsofort das Ergebnis seinerProgrammier-Tätigkeiten
  14. 14. Hamster (2)Implementierung: Um den Hamster an den verschiedensten Stelleneinsetzen zu können wurde ein Hamster-Panelentwickelt Panel wurde später zu einem eigenen Dialogweiterentwickelt Dialog kann universell in Java und Python (Jython)verwendet werden.
  15. 15. Das Ausführen vonProgrammenAutor: Erhard Dinhobl
  16. 16. Die Modi ausgelagert in einen Thread1. normales Ausführen eines Programms2. debuggen eines Programms3. testen eines Programms
  17. 17. Das Ausführen Pseudocodeanweisung ist eigentlichPythonanweisung Zwischenanweisungen für Informationen Pythoncode + Zwischenanweisungen durchJython ausgeführt Jythonin Java implementierter Pythoninterpreter
  18. 18. Interaktion mit Benutzern(Eingabe/Ausgabe und Hamster)...str = read(„Text:“)...print str...AusgeführtesProgrammdef read(str):return io.read(str)# ... Methoden zur# Steuerung des# Hamsters„initscript“read(String s) {...}/* ... Methoden zurSteuerung desHamsters */„io“-ObjektPython Python JavaJythonAusgabelistboxstdout
  19. 19. Wichtige Faktoren bei derAusführung bei Exception  Wo ist sie aufgetreten? anhalten beim Debuggen beenden eines Programms (Jython bietetdiese Möglichkeit von sich aus nicht) bei Endlosschleifen nach Timeout abbrechen
  20. 20. try:...trace.nextLine = ‚i = 1/0‘trace.iLineNumber = 3i = 1/0...except:print ‚Fehler bei: ‘ + trace.nextLine + ‚@‘ + trace.iLineNumberAuftreten einer Exceptiontrace.nextLine = ‚i = 1/0‘trace.iLineNumber = 3i = 1/04: i = 1/0 setze i auf 1/0Python-Code Pseudo-CodeAusführenAnalyse des Codes
  21. 21. Anhalten beim Debuggen Beispieltrace.nextLine = ‚i = 12’trace.iLineNumber = 5trace.nextStep()i = 12wait() „nächste Anweisung“ notify()
  22. 22. Mechanismus zum Beenden Exception wird ausgelöst  except-Klauseltry:...trace.nextLine = ‚i = 12’trace.iLineNumber = 5trace.nextStep()if trace.Exit == ‘True’:raise ExitProgrami = 12...except ExitProgram:print ‚Program Aborted’except:print ‚Fehler bei ’ + trace.nextLine + ‚@’ + trace.iLineNumber
  23. 23. Abbruch von Endlosschleifenweiterer Thread vor Ausführunggestartetbei Eingabe mit „read()“ Timeoutnicht weiterzählenbei Ablauf des Timeouts ExitProgram-Exception
  24. 24. Das TestenProgrammvirtuellerBenutzer Eingaben AusgabenPrüfungread()
  25. 25. Ablauf der Überprüfung für einen TestTestDummy Ausgabe-Prüfungread()Stringprintbcheck1 = ‚true’bcheck2 = ‚true’Vergleich bestimmter Variablenmit Endwerten der AufgabendateiJA NEINTest OK TestNicht OKSind‚bcheck1’und‚bcheck2’‚true’
  26. 26. ENDEDanke für Ihre Aufmerksamkeit

×