Chodzi o to, jak skutecznie możemy wyrazić algorytm. Potrzebuję tego do moich studiów licencjackich.
Rozumiem, że nie ma czegoś takiego jak standardowy sposób pisania pseudo kodu. Różni autorzy stosują różne konwencje.
Byłoby pomocne, gdyby ludzie tutaj wskazywali, w jaki sposób podążają i myślą najlepiej.
Czy jest jakaś książka, która zajmuje się tym szczegółowo.
ds.algorithms
soft-question
advice-request
writing
użytkownik3162
źródło
źródło
Odpowiedzi:
Pisanie pseudokodu przypomina pisanie kodu: nie jest szczególnie ważne, którego standardu przestrzegasz, o ile ty (i ludzie, z którymi piszesz) faktycznie przestrzegasz jakiegoś standardu.
Ale dla przypomnienia, oto idiosynkratyczny standard, którego używam w moich notatkach z wykładów, artykułach naukowych i nadchodzącej książce.
Użyj standardowej składni imperatywnej do sterowania przepływem i dostępu do pamięci - if, while, for, return, array [index], function (arguments). Przeliteruj „else if”.
record.field
record->field
Używać standardowego zapisu matematycznej matematycznych - zapis zamiast , a mod b zamiast , s ≤ T zamiast , Ź p zamiast , √xy amodb s≤t ¬p x−−√ π ∞
x*y
a%b
s <= t
!p
zamiast,πzamiast,∞zamiastitp.sqrt(x)
PI
MAX_INT
Ale użyj do przypisania, aby uniknąć problemu.x←y
==
Ale unikaj notacji (i pseudokodu!) Całkowicie, jeśli angielski jest wyraźniejszy.
Minimalizuj cukier składniowy - Wskaż strukturę bloku poprzez spójne wcięcie (à la Python). Pomiń słodkie słowa kluczowe, takie jak „początek / koniec”, „do / od” lub „fi”. Pomiń numery linii. Czy nie podkreślać słowa kluczowe jak „za” lub „a” lub „jeśli”, ustawiając je w inny
typeface
lub stylu . Zawsze. Po prostu nie.Ale nazwy i stałe algorytmów składu w \ textsc {Small Caps}, nazwy zmiennych kursywą i ciągi literalne w sans serif.
Dodaj jednak niewielką ilość pionowej „oddychającej” przestrzeni (
\\[0.5ex]
) między znaczącymi fragmentami kodu.Nie podawaj nieistotnych szczegółów. Jeśli nie ma znaczenia, w jakiej kolejności odwiedzasz wierzchołki, powiedz „dla wszystkich wierzchołków”.
Na przykład, tutaj jest rekurencyjne sformułowanie algorytmu minimalnego drzewa opinającego Borůvki . Wcześniej zdefiniowałem jako wykres otrzymany z G przez skurczenie wszystkich krawędzi w zestawie L , a Spłaszcz jako podprogram, który usuwa pętle i równoległe krawędzie.G/L G L
Używam własnego, lekkiego
algorithm
środowiska LaTeX do pisania pseudokodu. (To tylkotabbing
środowisko wewnątrz\fbox
.) Oto mój kod źródłowy algorytmu Borůvka:źródło
Zwykle używam czegoś przypominającego składnię Pythona. Python jest już na tyle blisko pseudokodu, że w niektórych przypadkach mój pseudokod może zacienić się na faktyczny działający kod.
źródło
Jeśli chcesz mieć określony kod (tj. Mało lub nie matematyki, blisko prawdziwego programowania), możesz rozważyć kod, który faktycznie się kompiluje. Ma to kilka zalet:
Profesor na moim uniwersytecie robi to na kursie algorytmów. Jego wybranym językiem jest Modula. Nie sądzę jednak, żeby konkretny wybór języka miał znaczenie. Po prostu trzymaj się jednego (według paradygmatu), który najlepiej pasuje do twojego poziomu abstrakcji.
źródło