Zum Inhalt springen
  • 0

Allgemeingültigkeit + Programmieransatz


Finux

Frage

Hallo, 

eine recht knappe Frage: Wann muss/sollte ein Programm Allgemeingültigkeit aufweisen? Woran erkenne ich das? (z.B. in schulischen Aufgabenstellungen, aber auch im Job als FiAe)

Die einzigen Dinge die mir einfallen sind hier gewisse Dinge im Vorfeld (z.B. Lastenheft/ anderweitige Absprache oder Kenntnisnahme von "Zuständen" und Umgebung möglicher Einsatzbereiche etc.).

Aber gibt es grundlegend Dinge, die mir signalisieren sollten, dass ein allgemeingültiges Programmieren von Vorteil / zwingend erforderlich ist?

(Habe dazu iwie im Netz nichts finden können, sry, aber habe glaube mit euch hier gute Ansprechpartner gefunden... ?)

 

Hinzu meine nächste Frage:

In unten stehender Aufgabe habe ich zuerst den Ansatz gehabt die Bedingungen zu programmieren, um dann eine Liste von möglichen Zahlen unter diesen Bedingungen zu generieren.

Ich kam jedoch als Neuling nicht wirklich weiter als geschlagene 5 Zeilen Code. Ich wählte diesen Ansatz zu Anfang, weil ich mir dachte "das Programm durchläuft ja unnötig Codezeilen (sozusagen "Verschnitt"), das muss doch performanter gehen...?

Mein Ausbilder sagte dann, dass ein anderer Ansatz dafür vorgesehen ist: "Generiere erst die Zahlencodes, und sortiere dann mithilfe deiner Bedingungen aus." 

 

Hier die Programmieraufgabe:

Ein 5-stelliges Zahlenschloss wurde verstellt.
            Das Zahlenschloss beseteht aus 5 Ringen mit je 10 möglichen Einstellungen ('0', '1', '2', ..., '9').
            Der neue Coode ist leider unbekannt. Aufgrund von Lieblingszahlen und Mustern sind folgende Informationen
            bekannt:

            - Der neue Code enthält keine 5.
            - Er enthält mind. einmal die Ziffer 3.
            - Er enthält mind. einmal die Ziffer 6.
            - Er startet nicht mit einer geraden Ziffer, auch nicht mit der '0'.

            - Er ist fast aufsteigend. Das heißt, die nachfolgenden Ziffern sind nicht kleiner als die vorangehenden
            (z.B. '23368'). Dies jedoch mit maximal einer Ausnahme.

            - An einer Stelle darf die Ziffernfolge absteigend sein (z.B. '23326'); aber wie erwähnt, maximal einmal!

            Lohnt es sich nun von den theoretisch 100.000 Möglichkeiten die verbleibenden auszuprobieren?

            a)  Schreiben Sie ein Programm, dass alle verbleibenden Möglichkeiten ausgibt und die Anzahl.
            b)  Eine Kombination auszuprobieren dauert 3 Sekunden. Angenommen durch manuelles Probieren nach etwa der Hälfte 
                aller Kombinationsmöglichkeiten wurde die richtige Kombination eingegeben- ist dies innerhalb von 60 Minuten möglich?

 

Wie immer- besten Dank!

Fin

Bearbeitet von Finux
Link zu diesem Kommentar
Auf anderen Seiten teilen

4 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Was genau verstehst du unter Allgemeingültigkeit? Grundsätzlich sollte ein Progeamm das leisten, was die Spezifikation verlangt und auch wenn Programmierer oft eine Tendenz dazu haben alles möglichst generisch machen zu wollen, ist es oft keine gute Idee.

Was genau ist denn deine Frage im zweiten Teil? Dein Ansatz ist in der Tat effizienter, der deines Ausbilders dagegen einfacher umzusetzen. Das ist eine Abwägung, die man tatsächlich sehr oft machen muss. Gerade als Anfänger empfiehlt es sich natürlich erst mal die einfachste Lösungsmöglichkeit zu verfolgen und dann erst später ggf. zu optimieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 50 Minuten schrieb lessbess:

Was genau verstehst du unter Allgemeingültigkeit?

Ich habe das bisher immer nur in dem Zusammenhang gehört: Entweder, dass ein Algo nicht ein spezifisches Problem löst, sondern ein Recht allgemeines Problem. Sprich recht wiederverwendbar für verschiedene Situationen. Das könnten z.B. Extention Methods (für die C#ler hier) sein (wer eine Extention Method für DateTimes schreibt, der muss sie so schreiben, dass sie für alle DateTimes anwendbar ist). 

vor 2 Stunden schrieb Finux:

Woran erkenne ich das? (z.B. in schulischen Aufgabenstellungen, aber auch im Job als FiAe)

Das kommt auf das Ausmaß an. Wenn es wesentlich Mehrarbeit erfordert, dann evtl. mit den Vorgesetzten sprechen. Oft wird meist einfach gerne nur das gemacht, was auch mit dem Kunden abgesprochen wurde. Wenn dies später Probleme macht, tja dann muss der Kunde halt noch eine Lösung *nachbestellen*. Als Entwickler natürlich unschön, wird aber oft bewusst gemacht.

In Sachen IHK: Halte dich an die Arbeitsanweisungen...wenn diese nicht spezifisch sind, kannst du oft machen, was du willst, Hauptsache es ist am Ende richtig. Am Ende heißt das meist: mach was am effizientesten für deine begrenzte Bearbeitungszeit ist.

Bei deiner Aufgabe z.B. finde ich den Ansatz deines Ausbilders auch besser, da man in diesem Algo später eine vordefinierte Liste übergeben könnte, welche auf verschiedene Art bearbeitet (das wird dann halt mithilfe der Parameter entschieden) wird. Du willst eine Liste generieren, vergisst aber, dass diese schon existieren könnte. Du müsstest für diesen Fall also sowieso einen Algo schreiben, der eine existierende Liste entsprechend bearbeitet.

Bearbeitet von KeeperOfCoffee
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Moin,

du solltest die Fragen in verschiedenen Themen unterbringen, die haben ja nichts miteinander zu tun.

vor 2 Stunden schrieb Finux:

Aber gibt es grundlegend Dinge, die mir signalisieren sollten, dass ein allgemeingültiges Programmieren von Vorteil / zwingend erforderlich ist?

Man muss es eben immer im Rahmen halten, ich finde es auch schwer dort eine Daumenregel zu finden.

Wenn deine Web-Anwendung per Formular eine Excel-Datei mit Fahrzeugteilen importieren können soll, macht es Sinn die Komponenten so zu gestalten, dass man auch Komponenten für andere Dateiformate implementieren kann, z.B. wäre der Wechsel auf csv ja nicht sonderlich überraschend.

Genauso wie man die Formate recht einfach austauschbar machen kann, kann man auch die Übertragungsarten abstrahieren; es muss die lesende Komponente ja nicht interessieren ob die Datei jetzt per HTML-Formular von der Website hochgeladen oder per SOAP-WebService gesendet wurde also koppelt man vielleicht nicht die Request-Objekte aus dem Framework an die Services sondern bereit die Daten vorher auf und gibt sie dann weiter...

 

 

Aber manchmal gibt es eben Stellen wo es heißt: "Das hier ist das Format für Buchungen das sich frühestens in 40 Jahren ändert.", da lohnt es sich dann eher nicht nochmal 2 Tage* zu investieren um generischer unterwegs zu sein.

 

* oder 2 Stunden, in manchen Situationen ist die generische Lösung einfach irrelevant

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Mit zunehmender Erfahrung bekommt man ein Gefühl dafür, wann eine generische Lösung vom Vorteil  ist, oder nicht. Ich würde aber immer erst mit einer konkreten Lösung für ein Problem anfangen und erst, wenn man merkt, dass dass man die Lösung für ein ähnliches Problem benötigt, dann sollte man über eine generische Lösung nachdenken.

Zur Aufgabe:

Denke in kleinen Schritten. Mache dir über Performance erstmal überhaupt keine Gedanken. Viel wichtiger ist es, eine Lösung zu finden, die auch les- und wartbar ist. Erst, wenn man merkt, dass die Performance ein Problem wird, sollte man sich darum kümmern. Die Performance könnte ja evtl. gar kein Problem sein. Da macht es wenig sinn, im Vorfeld sich darüber den Kopf zu zerbrechen und eine Lösung ausdenken, die zwar vielleicht performant ist, aber keiner versteht.

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
Diese Frage beantworten...

×   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...