Πρότυπα για τον κωδικό ψευδο;

ψήφοι
24

Πρέπει να μεταφράσει κάποιες python και java ρουτίνες σε κώδικα ψευδο για μεταπτυχιακής εργασίας μου, αλλά έχουν πρόβλημα να ανεβαίνει με μια σύνταξη / στυλ που είναι:

  • σταθερός
  • ευνόητος
  • δεν είναι πολύ φλύαρη
  • δεν είναι πολύ κοντά στη φυσική γλώσσα
  • δεν είναι πολύ κοντά σε κάποια συγκεκριμένη γλώσσα προγραμματισμού.

Πώς μπορείτε να γράψετε κώδικα ψευδο; Υπάρχουν τυποποιημένες συστάσεις εκεί;

Δημοσιεύθηκε 20/02/2010 στις 10:58
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
16

Θα ήθελα να συστήσω κοιτάζοντας την «Εισαγωγή στην Αλγόριθμοι» του βιβλίου (από Cormen, Leiserson και Rivest). Έχω πάντα βρεθεί ψευδο-κώδικα περιγραφή της αλγορίθμων πολύ σαφής και συνεπής.

Ενα παράδειγμα:

DIJKSTRA(G, w, s)
1  INITIALIZE-SINGLE-SOURCE(G, s)
2  S ← Ø
3  Q ← V[G]
4  while Q ≠ Ø
5      do u ← EXTRACT-MIN(Q)
6         S ← S ∪{u}
7         for each vertex v ∈ Adj[u]
8             do RELAX(u, v, w)
Απαντήθηκε 20/02/2010 στις 11:03
πηγή χρήστη

ψήφοι
4

Εάν ο κωδικός είναι διαδικαστικό, η κανονική ψευδο-κώδικας είναι μάλλον εύκολο (Wikipedia έχει μερικά παραδείγματα).

Αντικειμενοστραφής ψευδο-κώδικα μπορεί να είναι πιο δύσκολη. Σκεφτείτε:

  • χρησιμοποιώντας UML διαγράμματα κλάσεων για να απεικονίζουν τις τάξεις / inheritence
  • χρησιμοποιώντας UML διαγράμματα ακολουθίας να απεικονίζουν την αλληλουχία των κώδικα
Απαντήθηκε 20/02/2010 στις 11:05
πηγή χρήστη

ψήφοι
5

Σας προτείνω να ρίξετε μια ματιά στο Φρούριο γλώσσα προγραμματισμού .

Αυτή είναι μια πραγματική γλώσσα προγραμματισμού και όχι ψευδοκώδικα, αλλά σχεδιάστηκε για να είναι όσο πιο κοντά στο εκτελέσιμο ψευδοκώδικα όσο το δυνατόν. Ειδικότερα, για το σχεδιασμό τη σύνταξη, διαβάζουν και να αναλυθούν εκατοντάδες των CS και τα έγγραφα τα μαθηματικά, μαθήματα, βιβλία και περιοδικά για να βρουν κοινά πρότυπα χρήσης για ψευδοκώδικα και άλλες υπολογιστικές / μαθηματικές σημειώσεις.

Μπορείτε να αξιοποιήσουν όλα ότι η έρευνα από απλά κοιτάζοντας Φρούριο πηγαίο κώδικα και αφαιρώντας τα πράγματα που δεν χρειάζεστε, από το κοινό-στόχος σας είναι ανθρώπινα, ενώ το φρούριο είναι ένα compiler.

Εδώ είναι ένα πραγματικό παράδειγμα της λειτουργίας κώδικα Φρούριο από το NAS (NASA Σύνθετη Supercomputing) Σύζευγμα Βαθμιαίος Παράλληλες Benchmark . Για μια διασκεδαστική εμπειρία, συγκρίνετε την προδιαγραφή του δείκτη αναφοράς με την εφαρμογή στο Φρούριο και παρατηρήστε πώς δεν υπάρχει σχεδόν 1: 1 αντιστοιχία. Επίσης, συγκρίνουν την εφαρμογή σε μερικές άλλες γλώσσες, όπως η C ή Fortran, και παρατηρήστε πώς δεν έχουν απολύτως τίποτα να κάνει με τις προδιαγραφές (και είναι επίσης συχνά μια τάξη μεγέθους μεγαλύτερη από ό, τι το spec).

Πρέπει να τονίσω: αυτό δεν είναι ψευδοκώδικα, αυτό είναι πραγματικό κώδικα Φρούριο εργασίας! Φρούριο Κωδικός Παράδειγμα http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

Επεξεργασία: Πάνω Κωδικός Παράδειγμα σύνδεσης είναι νεκρός. Ενδεχομένως παρόμοιο παράδειγμα μπορεί να βρεθεί εδώ: https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/

Απαντήθηκε 20/02/2010 στις 15:33
πηγή χρήστη

ψήφοι
3

Δεν καταλαβαίνω την απαίτηση σας «δεν είναι πολύ κοντά σε κάποια συγκεκριμένη γλώσσα προγραμματισμού».

Python θεωρείται γενικά ως ένα καλό υποψήφιο για το γράψιμο ψευδο-κώδικα. Ίσως μια ελαφρώς απλοποιημένη έκδοση της python θα μπορούσε να λειτουργήσει για σας.

Απαντήθηκε 20/02/2010 στις 15:39
πηγή χρήστη

ψήφοι
2

Pascal ήταν πάντα παραδοσιακά το πιο παρόμοιο με ψευδοκώδικα, όταν πρόκειται για μαθηματικές και τεχνικούς τομείς. Δεν ξέρω γιατί, ήταν απλά πάντα έτσι.

Έχω κάποια (OH, δεν ξέρω, ίσως και 10 βιβλία σε ένα ράφι, η οποία συγκεκριμένα αυτή τη θεωρία).

Python όπως προτείνεται, μπορεί να είναι ωραίο κώδικα, αλλά μπορεί να είναι τόσο δυσανάγνωστο επίσης, ότι είναι ένα θαύμα από μόνη της. Παλαιότερα γλώσσες είναι πιο δύσκολο να κάνουν δυσανάγνωστο - αυτά είναι «απλούστερη» (πάρτε με προσοχή) από τη σημερινή αυτά. Θα ίσως να είναι πιο δύσκολο να καταλάβουμε τι συμβαίνει, αλλά πιο εύκολο να διαβάσει (λιγότερο σύνταξη / γλώσσα χαρακτηριστικά είναι απαραίτητη για να καταλάβουμε τι κάνει το πρόγραμμα).

Απαντήθηκε 20/02/2010 στις 16:15
πηγή χρήστη

ψήφοι
7

Η απάντηση η δική μου ερώτηση, θα ήθελα απλώς να επιστήσω την προσοχή στην ακόλουθη ιστοσελίδα για την στοιχειοθεσία ψευδοκώδικα σε LaTeX: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=algorithms . Περιγράφουν μια σειρά από διαφορετικά στυλ, τα πλεονεκτήματα και τα μειονεκτήματα λίστα. Παρεμπιπτόντως, συμβεί εκεί να υπάρχουν δύο stylesheets για το γράψιμο κώδικα ψευδο κατά τον τρόπο που χρησιμοποιείται σε «Introductin να Αλγόριθμοι» από Cormen, όπως συνιστάται παραπάνω: newalg και clrscode. Το τελευταίο γράφτηκε από τον ίδιο τον Cormen.

Απαντήθηκε 25/02/2010 στις 15:08
πηγή χρήστη

ψήφοι
0

Αυτή η θέση είναι παλιό, αλλά ελπίζουμε ότι αυτό θα βοηθήσει τους άλλους.

«Εισαγωγή στην Αλγόριθμοι» του βιβλίου (από Cormen, Leiserson και Rivest) είναι ένα καλό βιβλίο για να διαβάσει για αλγορίθμους, αλλά η «ψευδο-κώδικα» είναι τρομερό. Τα πράγματα όπως Q [1 ... n] είναι ανοησία, όταν κάποιος πρέπει να καταλάβει τι [1 ... n] είναι υποθέτει να σημαίνει Q. Ποια θα πρέπει να σημειωθεί έξω από το «ψευδο-κώδικα.» Επιπλέον, βιβλία όπως «Εισαγωγή στην Αλγόριθμοι» ήθελαν να χρησιμοποιήσουν μια μαθηματική σύνταξη, η οποία παραβιάζει ένα σκοπό της ψευδο-κώδικα.

Ψευδο-κώδικας θα πρέπει να κάνει δύο πράγματα. Περίληψη μακριά από τη σύνταξη και να είναι εύκολο να το διαβάσετε. Αν πραγματικό κώδικα είναι πιο περιγραφικό από το ψευδο-κώδικα, και την πραγματική κώδικας είναι πιο περιγραφικό, τότε δεν είναι ψευδο-κώδικα.

Ας πούμε ότι ήταν γράφοντας ένα απλό πρόγραμμα.

σχεδιασμός οθόνης:

Welcome to the Consumer Discount Program!
Please enter the customers subtotal: 9999.99
The customer receives a 10 percent discount
The customer receives a 20 percent discount
The customer does not receive a discount
The customer's total is: 9999.99

Μεταβλητή Λίστα:

TOTAL:         double
SUB_TOTAL:     double
DISCOUNT:      double

Ψευδοκώδικας:

DISCOUNT_PROGRAM

    Print "Welcome to the Consumer Discount Program!"
    Print "Please enter the customers subtotal:"
    Input SUB_TOTAL

    Select the case for SUB_TOTAL
        SUB_TOTAL > 10000 AND SUB_TOTAL <= 50000
            DISCOUNT = 0.1
            Print "The customer receives a 10 percent discount"
        SUB_TOTAL > 50000
            DISCOUNT = 0.2
            Print "The customer receives a 20 percent discount"
        Otherwise
            DISCOUNT = 0
            Print "The customer does not a receive a discount"

    TOTAL = SUB_TOTAL - (SUB_TOTAL * DISCOUNT)
    Print "The customer's total is:", TOTAL

Σημειώστε ότι αυτό είναι πολύ εύκολο να διαβάσει και δεν αναφέρει καμία σύνταξη. Αυτό υποστηρίζει και τα τρία του Bohm και Jacopini για δομές ελέγχου.

Αλληλουχία:

Print "Some stuff"
VALUE = 2 + 1
SOME_FUNCTION(SOME_VARIABLE)

Επιλογή:

if condition
    Do one extra thing

if condition
    do one extra thing
else
    do one extra thing

if condition
    do one extra thing
else if condition
    do one extra thing
else
    do one extra thing

Select the case for SYSTEM_NAME
    condition 1
        statement 1
    condition 2
        statement 2
    condition 3
        statement 3
    otherwise
        statement 4

Επανάληψη:

while condition
    do stuff

for SOME_VALUE TO ANOTHER_VALUE
    do stuff

συγκρίνετε ότι σε αυτό το Ν-Queens «ψευδο-κώδικα» ( https://en.wikipedia.org/wiki/Eight_queens_puzzle ):

PlaceQueens(Q[1 .. n],r)

    if r = n + 1
        print Q
    else
        for j ← 1 to n
            legal ← True
            for i ← 1 to r − 1
                if (Q[i] = j) or (Q[i] = j + r − i) or (Q[i] = j − r + i)
                    legal ← False
        if legal
            Q[r] ← j
            PlaceQueens(Q[1 .. n],r + 1) 

Εάν δεν μπορείτε να το εξηγήσω απλά, δεν καταλαβαίνετε αρκετά καλά. - Albert Einstein

Απαντήθηκε 11/01/2019 στις 15:02
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more