Pseudocode - Welche Form



  • volkard schrieb:

    beispiel von mir, wo pseudocode als kommentar noch lebt

    void vorneEinfuegen(double neuerWert){
            //neuen Knoten erzeugen und Adresse merken in lokaler
            //Variable namens nk
            Knoten* nk;
            nk=new Knoten;
            //den Wert in das Daternfeld vom neuen Knoten schreiben
            nk->daten=neuerWert;
            //Adresse vom ersten Element in das Next-Feld vom neuen
            //Knoten schreiben
            nk->next=anfang;
            //Listenanfang setzen auf die Adresse des neuen Knotens
            anfang=nk;
        }
    

    hehe, du kommentierst bestimmt auch sowas:

    // setze a auf 0
    a = 0;
    

    🙂



  • ~fricky schrieb:

    hehe, du kommentierst bestimmt auch sowas:

    // setze a auf 0
    a = 0;
    

    🙂

    volkards code war das Endresultat mit dem Pseudo Code als Kommentar.

    Insofern: ja, man würde bei dieser Variante auch ein a=0; kommentieren (da es ja keine Kommentare sind sondern die Anweisungen als Pseudo Code).

    Für mich persönlich nehme ich auch eher volkards variante - es sei denn jemand anderer soll den code lesen, dann wirds eine mischung aus pascal und python - ähnlich dem was du auf der 1. seite geschrieben hast, nur mit := als zuweisung statt <- und öfters auch deutsch statt englisch...



  • volkard schrieb:

    hans rosenberger müßte da einen punkt abziehen, denke ich.

    Hans wer?



  • volkard schrieb:

    beispiel von mir, wo pseudocode als kommentar noch lebt

    du bist also auch so ein frickler, der in seinem code deutsche bezeichner verwendet. da läufts mir kalt den rücken runter.
    was ist mit "next", ist dir da das doitsche wort nicht eingefallen? 🙂



  • volkard schrieb:

    der prof benutzt pseudocode anscheinend, um zwanzigzeiler in dreizeiler zu verwandeln. naja, mir würde das spaß machen, aber nur aus freude am extremen.

    Für nen Dreizeiler beweist sich auch die Korrektheit etwas angenehmner. Außerdem werden durch diese Formulierung viele Implementierungsdetails offen gelassen, das heißt man sieht sehr klar den Algorithmus und kann sich danach überlegen welche schicken Datenstrukturen da nun das Maximum an Effizienz für die einzelnen Schritte rausholen. Mir gefällt der Pseudo-Code von dem Kruskal. 🙂



  • kulturwächter schrieb:

    du bist also auch so ein frickler, der in seinem code deutsche bezeichner verwendet.

    ich glaub, ich mache in code, der zur wiederverwendung ansteht, ausschließlich englische bezeichner.
    code allerdings, der ausschließlich für das aktuelle projekt da ist, der wird gerne deutsch.
    die projektübergreifende liste hat eher sowas wie void push(T const& t){top=new Node(top,t)} stehen. mal überlegen, ob ich T const&& t schreiben sollte. hab immernoch keinen modernen compiler drauf.



  • kulturwächter schrieb:

    du bist also auch so ein frickler, der in seinem code deutsche bezeichner verwendet. da läufts mir kalt den rücken runter.

    Es gibt sogar Firmen wo die Vorgabe lautet, das man deutsche Bezeichner verwendet. Sei es, weil die Software nur im deutschen Sprachraum verwendet wird, sei es weil die krampfhafte Suche der englischen Fachbegriffe unnötig Zeit dauern würde, oder dazu führen würde das man englische Programmierer mit Lachkrämpfen einliefern müsste...



  • Mein eigener Pseudocode dient in der Regel nur, um mir selbst klar zu machen wie ich ein Problem loesen will. Und er ist daher ist je nach Laune, Komplexitaet des Problems und mein Verstaendnis des selben irgendwo zwischen Mathematisch formuliert (wie beim Kruskal) oder schaut fast schon aus wie Python. Wobei ich beliebig zwischen C++ - Objektnotation ( foo.get_something()) und normaler Funktionsnotation rumspring (get_something_from_foo()), hin & wieder auch Bezeichner verwend die nur ich kenn oder sachen einfach komplett auslass weil sie fuer mich klar sind.

    Aktuelles Beispiel:

    relevant_subtypes = all_subtypes_of_segment()
    
    for each pos in segment:
       current_subtype = pos.get_subtype()
       for each sequence:
          if sequence.get_subtype() == relevant_subtype:
              ... possible mismatch type 1
          else if sequence.get_subtype() in relevant_subtypes
              // ignore
          else
              ... possible mismatch type 2
    

    Wenn ich Pseudocode verwende, um jemand einen Algorithmus zu erklaeren, kommt es ganz auf den Gespraechspartner an, was ich verwende. Ich bevorzuge mathematisch genaue und kurze Notationen. Meiner Erfahrung nach sind die aber sehr ungeeignet, um Leuten "was Neues" beizubringen, weil die meisten Leute Probleme mit solchen Notationen haben und dann gleichzeitig die Notation & den Inhalt verstehen muessen. Da wird dann ein mathematischer Dreizeiler zum mentalen Vierzigzeiler. Nicht umsonst wird der Prof. bei der Kurskal-Folie laenger als 2 Minuten verweilt sein 😉



  • Es gibt keinen Pseudocode, sondern nur Pseudocoder, wie man hier mal wieder sieht.



  • this->that schrieb:

    Abgesehen davon finde ich generell Pseudocode sinnlos.

    manchmal kommt man aber eben nicht drumrum. Es gibt Vorlesungen, bei denen ohne Pseudocode nicht mitkommen könntest. Da denke ich z.b. an KI Vorlesungen oder Hardware verifikation, wenn du über BDD travesieren muss oder Bild/Urbildberechnung mittels (K)BBDs machen musst, denn wenn du erstmal richtigen Code [1] schreiben müsstest, würde man 300 Folien statt 10 pro Vorlesung durchgehen.

    Ich musste schon mit BDDs Bibliotheken arbeiten, das macht es keinen Spaß mehr, wenn man sich davor den Algorithmus nicht in Pseudocode aufgeschrieben hat, denn ohne würde man nichts machen können.

    [1] zumal, welche Sprache ist "die Richtige"? C, C++, Java, haskell, ...



  • supertux schrieb:

    zumal, welche Sprache ist "die Richtige"? C, C++, Java, haskell, ...

    ist doch egal. man kann in jeder sprache c++-programme bauen.



  • volkard schrieb:

    ist doch egal. man kann in jeder sprache c++-programme bauen.

    verstehe ich nicht, was meinst du damit?



  • supertux schrieb:

    volkard schrieb:

    ist doch egal. man kann in jeder sprache c++-programme bauen.

    verstehe ich nicht, was meinst du damit?

    das sollte ein witz sein.
    🙂



  • dann war er schlecht (oder ich bin zu blöd) 😞 denn ich hab ihn nicht verstanden



  • supertux schrieb:

    dann war er schlecht (oder ich bin zu blöd) 😞 denn ich hab ihn nicht verstanden

    ich ehrlich gesagt auch nicht. vielleicht sollte es 'ne anspielung sein auf: 'aus 300 folien machen wir 10'. wie er's meinte, wird er uns bestimmt bald sagen.
    🙂



  • Wenn es eine Anspielung war, dann auf "a good programmer can write FORTRAN in any language"



  • *scherz-on*
    wörtlich könnte man es auch auslegen als "man kann in jeder sprache einen C++ compiler programmieren" 😃
    *scherz-off*



  • Helium schrieb:

    Wenn es eine Anspielung war, dann auf "a good programmer can write FORTRAN in any language"

    ja, so sollte ihr das mal nehmen.



  • asc schrieb:

    Es gibt sogar Firmen wo die Vorgabe lautet, das man deutsche Bezeichner verwendet. Sei es, weil die Software nur im deutschen Sprachraum verwendet wird, sei es weil die krampfhafte Suche der englischen Fachbegriffe unnötig Zeit dauern würde, oder dazu führen würde das man englische Programmierer mit Lachkrämpfen einliefern müsste...

    dann bin ich sehr froh, dass ich noch nicht in einer firma mit solchen vorgaben arbeiten musste. noch froher sogar, ausschließlich in firmen gearbeitet zu haben, deren vorgaben das exakte gegenteil besagen.

    obwohl, wenn man es konsequent macht...

    #define neu new
    #define loeschen delete
    #define nix void
    typedef int ganzzahl;
    

    😮



  • kulturwächter schrieb:

    obwohl, wenn man es konsequent macht...

    Es geht um eigene Bezeichner. Davon ganz abgesehen finde ich es persönlich schlimmer wenn Begriffe wegen dem Englischzwang falsche Bedeutungen bekommen, weil die Programmierer nicht immer die fachlich richtigen englischen Begriffe kennen (Und Konzepte, wenn es den sowas gibt, in Deutsch vorliegen; weil die Software nunmal in erster Linie für den deutschsprachigen Markt bestimmt ist).

    cu André


Anmelden zum Antworten