Pascal: Nichtdeterministischer Ausdruck gesucht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Pascal: Nichtdeterministischer Ausdruck gesucht

    Hej ya!

    Ich muss für ein Übungsblatt einen "konkreten, nichtdeterministischen Ausdruck" in Pascal finden und meine Antwort anhand des Pascal-Standards belegen. Aber irgendwie kann ich dafür einfach nichts finden. Hat jemand hier eine Idee zu der Aufgabe? Also irgendwas, das vom Compiler in willkürlicher Reihenfolge abgearbeitet wird oder so? Ein grober Hinweis würde mir vermutlich schon genügen...

    Bzw. habe ich mich gefragt, ob man die random-Funktion dafür verwenden kann - aber wegen der ->Pseudo<-zufallszahlen tendiere ich eigentlich eher zu nein.

    Thx schonmal im Voraus!
  • Ich glaube einige Ausdrücke sind zumindest von ihrer Definition nicht deterministisch. Ich denke da an Sachen wie:

    a:= b*c*d;

    Da ein Produkt (oder auch die Summe) kommutativ ist, kann der Pascal-Compiler in einer beliebiegen Reihenfolge auswerten.

    Was anderes ist ein Variablenbezeichner. Bei der lexikalischen Analyse ist das im Prinzip nicht deterministisch, da eigentlich alle Wörter die den Bezeichnungsregeln folgen (erstes Zeichen ein Buchstabe, nicht länger als xx Zeichen,...). Soll heißen: "if", "begin", "while", ... wären prinzipiell auch zulässige Bezeichner, was aber natürlich nicht sein kann da es Terminalsymbole sind. "beginner" ist hingegen ein zulässiger Bezeichner, obwohl "begin" drinsteckt

    Der ist Compiler ein Computerprogramm, er arbeitet intern sicher deterministisch, soll heißen: Derselbe Compiler wird denselben Code auch immer gleich auswerten. Echten Nichtdeterminismus wirste in der PC-Welt schwer finden ;) Meistens gibt es Konventionen bei der Auswertung, wie zum Beispiel "längster möglicher Ausruck wird genommen", oder Prioritätenreihenfolge.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Hab zwischendurch selbst schon 'ne Lösung gefunden -> die Reihenfolge von Variablenreferenzierung und Auswertung in Assignment-Statements ist in Pascal implementierungsabhängig.

    Aber auf jeden Fall danke für die schnelle Antwort! :D

    Derselbe Compiler wird denselben Code auch immer gleich auswerten. Echten Nichtdeterminismus wirste in der PC-Welt schwer finden :wink:


    Ich weiß - hab mich wohl bei der Compilersache ein bisschen unglücklich ausgedrückt. :)
    Obwohl...wenn man 2 sich ausschließende Schaltelemente auf das gleiche Signal warten lässt, wäre es eigentlich nichtdeterministisch (oder zumindest von schwer vorhersehbaren, äußeren Einflüßen gelenkt), wer das Signal als erstes setzt, oder? *fg* Whatever. Aufgabe gelöst.

    Grüße, JesaX