Zum Inhalt springen

Pseudocode Programmierstil?


Empfohlene Beiträge

Hallo,

derzeit ärgere ich mich mit der Prüfungsvorbereitung für Mittwoch herum.

Was ich nicht verstehe:

1) Warum ist der Großteil der Pseudocodeaufgaben so gestellt/gelöst, dass lediglich Prozeduraler Code verwendet werden soll, bzw. in der Lösung eben solcher angeboten wird?

Manches läßt sich e.g. OO oder ggf. sogar funktional wesentlich kompakter formulieren.

Wenn man aber die vorgegebenen Hilfsfunktionen benutzt, kommt doch wieder prozeduraler Code bei rum.

2) Wieso sind die Aufgaben zwar in Pseudocode formuliert, aber im Hintergrund blitzt dann doch wieder C/C++ auf.

3) Kennen die bei der IHK auch andere Datenstrukturen außer Arrays (in beliebiger Dimensionierung :rolleyes:)? Haben die schon einmal etwas von Iteratoren gehört oder kennen die nur for-schleifen?

4) Warum sind die Pseudocodefunktionen, die einem als Hilfe angeboten werden von derart schlechtem Stil: teilweise werden da Funktionen mit 4 bis 5 Übergabeparameter gebaut.

Das ist nach meinem Dafürhalten ein Zeichen schlechten Programmierstils.

Mal abgesehen davon, das mich das ärgert, würde mich interessieren, ob es tatsächlich pädagogische oder zumindest rationale Gründe für das Vorgehen der IHK gibt. Wollen die eine bestimmte Art des Programmierers ausbilden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

derzeit ärgere ich mich mit der Prüfungsvorbereitung für Mittwoch herum.

Was ich nicht verstehe:

1) Warum ist der Großteil der Pseudocodeaufgaben so gestellt/gelöst, dass lediglich Prozeduraler Code verwendet werden soll, bzw. in der Lösung eben solcher angeboten wird?

Manches läßt sich e.g. OO oder ggf. sogar funktional wesentlich kompakter formulieren.

Wenn man aber die vorgegebenen Hilfsfunktionen benutzt, kommt doch wieder prozeduraler Code bei rum.

Es handelt sich ja immer um so kleine Aufgaben und Probleme, dass es kein großer Nachteil ist, dass man nur prozedural programmieren kann. Ich hatte jetzt noch keine Aufgabe, wo ich gerne wirklich OO Stil programmieren wollte...nur weil man gerne ein, zwei Methoden noch auslagen will, ist es ja nicht direkt OO ;)

2) Wieso sind die Aufgaben zwar in Pseudocode formuliert, aber im Hintergrund blitzt dann doch wieder C/C++ auf.

Also was das angeht, hab ich in vielen Musterlösungen zu den Prüfungen unterschiedliche Sachen gesehen, wobei sich Ersteller dabei nie wirklich an die (wenigen) Vorgaben in Sachen Pseudocode gehalten haben, vorallem was die Deklaration und Initialisierung von Variablen angeht.

Jedenfalls war in den Musterlösungen von "Ich schreib, wir mir der Mund gewachsen ist", über C/C++ bis zum 100%igen Java Code alles dabei.

Finds gut, dass man offensichtlich diese Freiheit hat.

3) Kennen die bei der IHK auch andere Datenstrukturen außer Arrays (in beliebiger Dimensionierung :rolleyes:)? Haben die schon einmal etwas von Iteratoren gehört oder kennen die nur for-schleifen?

Ich habe auch schon Aufgaben mit Listen gesehen, aber das gleiche habe ich mir auch schon einige male gedacht.

Vorallem verkürzte for Schleifen wie "foreach..." oder "for(Kunde k : liste)..." wollte ich oft gerne benutzen. Da ich dies aber noch nie in einer Musterlösung gesehen habe und mir auch meine Berufsschullehrerin nichts dazu sagen konnte, ist mir das zu heikel, das so in der Prüfung zu schreiben.

4) Warum sind die Pseudocodefunktionen, die einem als Hilfe angeboten werden von derart schlechtem Stil: teilweise werden da Funktionen mit 4 bis 5 Übergabeparameter gebaut.

Das ist nach meinem Dafürhalten ein Zeichen schlechten Programmierstils.

Mal abgesehen davon, das mich das ärgert, würde mich interessieren, ob es tatsächlich pädagogische oder zumindest rationale Gründe für das Vorgehen der IHK gibt. Wollen die eine bestimmte Art des Programmierers ausbilden?

Es geht in meinen Augen einfach darum, dass man die Prüflinge einheitlich, unabhängig von der Programmiersprache, die einem in der Berufsschule und im Ausbildungsbetrieb vermittelt wurde, prüfen kann.

Da steckt denke ich keinerlei blöde Absicht dahinter, das ist denke ich der einzig mögliche Weg, die Leute fair zu testen. Ich würde mir auch ********t vorkommen, wenn in der Prüfung jetzt über die tiefsten Tiefen von C gefragt werden würde^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil soetwas unübersichtlich ist!

Code will gelesen und verstanden werden. Und je simpler eine Funktion/Methode etc. ist, desto schneller wird sie verstanden und desto weniger Fehleranfällig ist die Methode, bzw. desto schneller kann sie im Fehlerfall gefixt werden.

Eine Funktion mit einem Übergabeparameter ist okay. Zwei sind tolerabel, aber ab 3 sollte man dazu übergehen, Objekte/Strukturen o.ä. zu übergeben.

Ein Klassiker ist auch ein boolscher Übergabeparameter. Dann könnte ich in die Tischkante beissen.

Stichwort: "Clean Code".

Ich hatte jetzt noch keine Aufgabe, wo ich gerne wirklich OO Stil programmieren wollte

Also ich schon. Einfaches Beispiel (Prüfung vergessen):

Daten aus einer CSV-Datei sollten ausgewertet werden.

Statt mich durch einen Wust von Arrays zu wuseln, befülle ich lieber ein Objekt und iteriere über eine Collection.

Der Code ist kompakter und für mich lesbarer.

Finds gut, dass man offensichtlich diese Freiheit hat.

Die Freiheit finde ich prinzipiell ja auch gut. Nur wirklich nutzen tut es dann doch keiner (bei der Musterlösung).

Da ich dies aber noch nie in einer Musterlösung gesehen habe und mir auch meine Berufsschullehrerin nichts dazu sagen konnte, ist mir das zu heikel, das so in der Prüfung zu schreiben.

Wenn es angebracht ist, werde ich es stumpf machen.

Andererseits ist die Aufgabenstellung aber bei den Sachen, die ich gemacht habe, derart, dass es sich anbietet, mit einer gewöhnlichen For-Schleife zu iterieren, weil man ansonsten eh eine Zählvariable für irgendeinen anderen Blödsinn benötigt, der dann bei Foreach künstlich aufgepropft wäre.

Es geht in meinen Augen einfach darum, dass man die Prüflinge einheitlich, unabhängig von der Programmiersprache, die einem in der Berufsschule und im Ausbildungsbetrieb vermittelt wurde, prüfen kann.

Da steckt denke ich keinerlei blöde Absicht dahinter, das ist denke ich der einzig mögliche Weg, die Leute fair zu testen. Ich würde mir auch ********t vorkommen, wenn in der Prüfung jetzt über die tiefsten Tiefen von C gefragt werden würde

Ich weiß zwar nicht, inwiefern mein Vorurteil zutrifft (darum fragte ich ja eingangs danach), dass ich den Eindruck habe, dass bei der IHK so ein bisschen die Zeit stehen geblieben ist, zumindest bei den FIAE im Programmierteil. Ich fände es anregend, Fragen bezüglich TDD gestellt zu bekommen.

Beispielsweise wird ein Code-Schnipsel vorgegeben und man sollte Tests dazu formulieren.

Ich hatte eine Frage nach Kriterien für Softwarequalität und wenn ich es recht erinnere kam das Wort "Testability/Testbarkeit" nicht mit einer Silbe drin vor.

Ich finde es nur schade, dass der Beruf des Anwendungsentwickler so viele spannende Facetten besitzt und die Prüfung ein bisschen davon nimmt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist einfach, dass die IT Branche viel zu schnelllebig ist, um immer direkt neue Trends aufnehmen zu können. Da muss evtl. der Rahmenlerplan angepasst werden, da müssen die Berufsschulehrer das Wissen und den Elan dazu haben, neue Technologien/Sprachen/Paradigmen zu vertiefen und dann muss man sich eigentlich sicher sein, dass das jeder Schüler so vermittelt bekommt, bevor man das in der Prüfung stellen kann.

Und da ich persönlich in der Berufsschule in 3 Jahren seitens einer Lehrkraft nicht ein einzige mal den Begriff "Softwaretests", geschweige denn "Unit Tests", "Integrationstests" oder das von dir angesprochene "TDD" gehört habe, denke ich nicht, dass es gut wäre, wenn sowas in der Prüfung gefragt wird.

Mir reicht da der GH2 Teil, bei dem in alten Prüfungen zu 80-90% Fragen waren, die wir in der Berufsschule entweder thematisch garnicht behandelt haben oder zumindest nicht in dieser Tiefe, da brauch ich nicht noch nen GH1 Teil mit ne Menge an theoretischen Fragen ;)

Aber dir scheints wie mir zu gehen...ich hatte mir von der Berufsschule im Vorfeld auch mehr Tiefe und...naja, ich will nicht um den heißen Brei herumreden...Kompetenz erwartet. Das ist auf jeden Fall mit ein Grund, warum ich jetzt noch ein Studium dranhänge, wäre für dich ja vielleicht auch eine Option :)

Auf jeden Fall schonmal viel Glück für Mittwoch! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil soetwas unübersichtlich ist!

Code will gelesen und verstanden werden. Und je simpler eine Funktion/Methode etc. ist, desto schneller wird sie verstanden und desto weniger Fehleranfällig ist die Methode, bzw. desto schneller kann sie im Fehlerfall gefixt werden.

Eine Funktion mit einem Übergabeparameter ist okay. Zwei sind tolerabel, aber ab 3 sollte man dazu übergehen, Objekte/Strukturen o.ä. zu übergeben.

Ich hoffe für dich, dass du niemals ABAP programmieren mußt. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

neue Trends aufnehmen zu können

Neu ist gut :D über den Daumen gepeilt, ist XP, Agile, TDD und weiß der Geier was seit spätestens 2000 unterwegs - also knappe 12 Jahre ^^

Mit UML haben die es ja auch geschafft.

Da muss evtl. der Rahmenlerplan angepasst werden, da müssen die Berufsschulehrer das Wissen und den Elan dazu haben, neue Technologien/Sprachen/Paradigmen zu vertiefen und dann muss man sich eigentlich sicher sein, dass das jeder Schüler so vermittelt bekommt, bevor man das in der Prüfung stellen kann.

Ja. Stimmt. Wir haben es ja mit Schule zu tun... *g*

Mir reicht da der GH2 Teil, bei dem in alten Prüfungen zu 80-90% Fragen waren, die wir in der Berufsschule entweder thematisch garnicht behandelt haben oder zumindest nicht in dieser Tiefe, da brauch ich nicht noch nen GH1 Teil mit ne Menge an theoretischen Fragen

Ja, da gebe ich Dir vollkommen recht. Nur hätte ich mir sowas sowohl für die Schule als auch für die Prüfung gewünscht.

Bei den ganzen Aufgaben habe ich eben den Eindruck, dass die Aufgabensteller so knapp Mitte der 90er kleben geblieben sind, als C++ seinen (bisher letzten) Hype hatte Und das langweilt. Andererseits, wenn es natürlich so ist, dass TDD so wie Trockenschwimmen behandelt wird, ist das niemandem zur Prüfung zu wünschen ;)

Das ist auf jeden Fall mit ein Grund, warum ich jetzt noch ein Studium dranhänge, wäre für dich ja vielleicht auch eine Option

Eh, ich denke nicht *g* Umschreiben wir es mal so: Persönlich biographisch wird es derzeit ein wenig schwierig für mich ein Studium durchzuziehen. Die Allgemeine Hochschulreife besitze ich; das berechtigt mich zwar zum Studium, aber reicht allein auch nicht *g*

Auf jeden Fall schonmal viel Glück für Mittwoch!

Danke! Dir auch :]

Ich hoffe für dich, dass du niemals ABAP programmieren mußt.

Ja! +++ <- da mache ich jeden Tag 3 Kreuze :D

Ebenso wie C/AL.

Bei uns in der Firma wird auch für Dynamics Navision entwickelt. Wenn ich da gelandet wäre, hätte ich meine Ausbildung am 2ten Tag geschmissen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ebenso wie C/AL.

Ich ziehe definitiv auch C++ vor, aber so schlimm ist C/AL nicht, wenn man aber ohne viel Detailkenntnis Datenbank, GUI und Verarbeitungsalgorithmen zusammen bauen möchte, dann ist C/AL durchaus absolut brauchbar. Es hat nach meiner Erfahrung ein bisschen was von Pascal. Natürlich kann man das auch alles unter C++ schon OOP machen, aber da brauche ich definitiv viel mehr, als wenn ich "nur" eine Anwendung umsetzen will

Link zu diesem Kommentar
Auf anderen Seiten teilen

eine for schleife über die länge eines arrays ist doch eine iteration?

Aber das mit den Arrays nervt schon.. Array ist für viele Probleme bei mir nur 3. Wahl, c# bietet da für viele ihk aufgaben deutlich bessere Datentypen.

Aber ich denke die IHK nimmt arrays weils die (soweit ich weiß) in jeder Sprache gibt und sie immer sehr ähnlich funktionieren.

Mir sträuben sich nur immer die Haare wenn die IHK irgendsowas treibt wie "füge dem array eine neue position zu". igitt.

Aber allgemein scheint mir die IHK was das programmieren angeht längst nicht so fitt zu sein, wie sie es eigentlich für die FIAE Prüfung sein sollte..Alles was die Programmierer unter den FIAEs täglich machen, übersteigt das Prüfungs Niveau doch um welten.

Aber das ist wieder ein ganz anderes Thema ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

eine for schleife über die länge eines arrays ist doch eine iteration?

hmmmnööö. Nicht wirklich.

Eigentlich ist ein Iterator ein ausgefeilteres Abstraktionsmodell...

Iterator

Aber egal ... darum soll's ja nicht wirklich gehen.

Array ist für viele Probleme bei mir nur 3. Wahl, c# bietet da für viele ihk aufgaben deutlich bessere Datentypen.

Ich behaupte, dass die meisten Sprachen da bessere Containertypen anbieten.

Apropos C# ... IEnumerable ist einfach Klasse :D

Alles was die Programmierer unter den FIAEs täglich machen, übersteigt das Prüfungs Niveau doch um welten.

Eben. Das war ja auch der Anlass, warum ich den Thread aufgemacht hab.

Und das, was heute an Abstraktion geleistet wird, ist wesentlich eleganter umzusetzen mit anderen Paradigmen :]

Zum Beispiel faszinieren mich die funktionalen Möglichkeiten von C# mehr und mehr *g*

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmmmnööö. Nicht wirklich.

Eigentlich ist ein Iterator ein ausgefeilteres Abstraktionsmodell...

Iterator

Aber egal ... darum soll's ja nicht wirklich gehen.

Aus Wiki->Iteration->Informatik:

[..]wenn ein Zugriff iterativ, das heißt schrittweise, beziehungsweise wiederholt, auf Datenstrukturen erfolgt, beispielsweise bei einer FOR-Schleife. Hierbei steht der Begriff Datenstruktur für Sammlungen von Objekten, Objektreferenzen oder Datentypen. Der Zeiger auf diese Objekte nennt sich Iterator. In der Regel handelt es sich um Arrays, Listen, Schlüssel-Wert-Paare (Maps, Hashes) oder Mengen (Sets). [..]

Der Zeiger auf das Objekt ist bei diesem Beispiel eben array.

Laut dem von dir verlinkten Artikel kann ein Iterator explizit über IEnumerator<MyType> iter = list.GetEnumerator(); definiert werden oder implizit über foreach (MyType value in list).

Ein Iterator wird über das Interface IEnumerable definiert, das von allen Arrays in C# implementiert wird. Eine for Schleife ist in dem Fall genau das gleiche wie eine foreach Schleife. Man kann also sehr wohl sagen, dass eine for schleife über ein Array iteriert, das Objekt i also der Iterator ist . ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum Glück muss ich mich nicht mit Arrays, Listen und Collections rumschlagen...

Btw: In Baden-Württemberg wird in den Prüfungen richtig programmiert (in einer in der Schule behandelten Sprache). Da muss man nicht mit unterschiedlichen Definitionen von Pseudocode kämpfen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Eine Funktion mit einem Übergabeparameter ist okay. Zwei sind tolerabel, aber ab 3 sollte man dazu übergehen, Objekte/Strukturen o.ä. zu übergeben.

Also kapselst Du die einzelnen Parameter in einen extra Parameter-Container, der dann auch bloß wieder gefüllt und innerhalb der aufgerufenen Routine wieder ausgelesen werden muß (am besten dann auch noch alles über getter/setter). Ganz tolle Idee, so kann man wunderbar Resourcen verprassen und den Code aufblähen.

Ein Klassiker ist auch ein boolscher Übergabeparameter.

Wo genau liegt das Problem ?

Also ich schon. Einfaches Beispiel (Prüfung vergessen):

Daten aus einer CSV-Datei sollten ausgewertet werden.

Statt mich durch einen Wust von Arrays zu wuseln, befülle ich lieber ein Objekt und iteriere über eine Collection.

Der Code ist kompakter und für mich lesbarer.

Das gibt ein triviales 2d-Array. Wo ist das Problem daran ?

Wenn zumindest eine Dimension (zur compile-Zeit) fest begrenzt ist, kann der Compiler das wunderbar linearisieren und feste Address-Offsets generieren. Okay, in C++ kann man auch Iteratoren mit inline-Methoden bauen, wo letztlich unter der Haube das gleiche rauskommt - in der Praxis macht man's aber genau andersrum: array-Operatoren für Collections definieren, die unter der Haube ganz anders aufgebaut sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...