Czytanie pseudokodu: kurs lub podręcznik

0

Dzień dobry.

Wydaje mi się, że mam podstawy programowania w językach proceduralnych i obiektowych. Jednak mam luki w algorytmach, a co za tym idzie, w czytaniu pseudokodu algorytmów. Czy jest jakiś zbiór zasad, jak czytać pseudokod? Np. to:

screenshot-20200413183544.png

Nie rozumiem tego:

wybierz akcja = (stan, stanN)

i dalej też nie rozumiem tego zapisu. Czy jest jakiś podręcznik, jak czytać taki kod?

Dzięki, M.

0

Pseudo, to pseudo.
Najwięcej zależy z jakim kontekście, na jakim gruncie to jest.
Socjologia, mechanika, optymalizacja procesów, materiały stricte dla programistów (programistów czego) itd...

Co to wg wiedzy z kontekstu jest akcja? Tego nie znajdziesz w żadnym "uniwersalnym" podreczniku (które oczywiście nie istnieją)

3

Nie ma dobrej definicji pseudo-kodu, bo cała idea jest taka, żeby niczego nie definiować, tylko mieć taki luźny zapis do tłumaczenia innym różnych idei. Jakby był ściśle zdefiniowany, to stałby się tym samym „prawdziwym” językiem programowania.

Jak Cię to pocieszy, to bez wiedzy o tym, co to ma być, też nie bardzo wiem, co autor miał na myśli… Powiedziałbym, że ten zapis miał oznaczać „niech akcja będzie równa albo stan, albo stan_n, gdzie (linijka niżej) — gdybym tylko wiedział, na jakiej zasadzie wybieramy… Ew. chodziło o wybranie i przypisanie akcja pierwszej takiej wartości stan_n, gdzie Wynik(stan_n) == v.

0

Chcę się wziąć za naukę algorytmów. Jednak wszędzie są one pisane w pseudokodzie. Jak mam się ich uczyć, jak nie rozumiem tego zapisu?

2

Znaleźć podręcznik kogoś, kto czytelniej (dla Ciebie) pisze… Tutaj nie ma specjalnej filozofii niestety, tego się nie da ugryźć od innej strony. Pseudo-kod nie językiem formalnym, który miałby swoje reguły, tylko takimi „bazgrołami na kartce papieru” — celem jest szybkie wytłumaczenie czegoś, bez wdawania się w szczegóły czy klepanie zaciemniających ideę linijek wymaganych przez jakiś konkretny język ze względu na niedoskonałości składni. Tu nie ma jednego, uniwersalnego zapisu, który można/trzeba by było zrozumieć — tutaj jest „wolna amerykanka”, każdy pisze po swojemu. Jedni czytelniej, inni mniej.

3

Pseudokod (dobry pseudokod) to tak "napisany kod" żeby nie trzeba było wyjaśniać "pseudo składni" itd

title

[źródła chyba nie muszę podawać? ;) ]

LBNL
Dla własnego dobra i lepszych efektów nauki osiąganych później mniejszym wysiłkiem - dobra rada: od początku nauki nie korzystamy ze źródeł po polsku, tym bardziej z "polskiego pseudokodu". Z początku będzie trudniej, wolniej, więcej pracy i zniechęcenia, będą kusić różne Heliony :) ale później to się zwróci z dużym bonusem.

2
mpaw napisał(a):

Chcę się wziąć za naukę algorytmów. Jednak wszędzie są one pisane w pseudokodzie. Jak mam się ich uczyć, jak nie rozumiem tego zapisu?

Kol @Althorion dwukrotnie odpowiedział ci absolutnie wyczerpująco (a że negatywnie, to inna sprawa).

Przykładasz jakiś zły kąt myślenia do tej nauki, nie umiem tego jaśniej powiedzieć. Konieczne jest przemieszczenie się w poziomach abstrakcji.
Pseudokod nie jest sam w sobie wartością. Jest wyrażeniem (na pewien sposób tego), o czym i tak jest mowa, np "dla wzrokowców", np w obrębie wykładu.

0
BraVolt napisał(a):

Pseudokod (dobry pseudokod) to tak "napisany kod" żeby nie trzeba było wyjaśniać "pseudo składni" itd

[źródła chyba nie muszę podawać? ;) ]

Dałeś w wersji "blond" (nie "błąd") Temat jest niemal banalny (a pseudokod jest re-translacją z języka programowania, o prawie tej samej ilości linii).
Powiedziałbym, że bezwartościowy jako pseudo-kod. Taki gotowiec, żeby nie było za łatwo.
To nie "pseudo-kod" ale "prawie-pascal"

Algorytmy z heurystyki i optymalizacji to "zupełnie inny segment rynku". Zupełnie na suficie zobaczyłem liczbę, ze "nasz" by się rozwijał na 1000 linii. I prawdopodobnie by nawet nie dawał twardego dowodu na "absolutnie najlepszy wynik"

0

Pamiętam, jak kilka lat temu zrozumiałem, jak napisać algorytm sortowania szybkiego. To, że ciągi trzeba podzielić to rozumiałem. Ale w żadnym podręczniku nie było napasane jak je scalać. W końcu wpadłem na rozwiązanie (po długim czasie od dowiedzenia się od tym algorytmie - kilka lat). Teraz wiem jak to się robi. Ale uważam, że algorytmy powinny być dogłębnie wyjaśniane, jak dla żółtodziobów, a nie, że siedzi sobie taki geniusz i upokarza słuchaczy pokazując, jaki to on jest mądry (mówię o autorach książek i kursów)

2
BraVolt napisał(a):

Pseudokod (dobry pseudokod) to tak "napisany kod" żeby nie trzeba było wyjaśniać "pseudo składni" itd

Tu w problemie Kolegi nie chodzi o składnię. Chodzi o semantykę. Jak @Althorion zauważył w szerokim sensie (tzn poza pseudokodem też)

UPDATE: semantyka pseudokodu leży nie w podręcznikach programowania, tylko w kontekście jego podania (kurcze, wreszcie coś mi się udało wyrazić)

0
AnyKtokolwiek napisał(a):

Tu w problemie Kolegi nie chodzi o składnię. Chodzi o semantykę. Jak @Althorion zauważył w szerokim sensie (tzn poza pseudokodem też)

Pseudokod IMO wyręcza nas z zastanawiania się właśnie nad składnią

https://www.thecrazyprogrammer.com/2018/05/difference-between-syntax-and-semantics.html
*Same is in programming, if we talk about any language like C, C++, Java, etc there are certain rules that we follow when coding to make the compiler understand what we want to convey.

Some of these rules are:

  1. Command terminates with a semi colon.
  2. Code block starts with a opening curly brace “{“ and ends with a closing curly brace “}”.
    for loop has three statements inside round brackets“()”, first one is initialise, second one is condition and third is variable update.
  3. So these actually form a structure to write something that is correct and agrees with the grammar of a language.

This grammar of a language is called Syntax of that language.*

0

Ja ten kod rozumiem tak, że stan to jest jakaś kolekcja (lista, zbiór) a stan N to ilość elementów tej kolekcji.

Konstrukcja wybierz a = (a, b) - powiedziałbym że to jest iterownaie po tej kolekcji (coś jak for lub while),

Linijka po wybierz to jest dopasowanie elementu z kolekcji do jakiegoś warunku, a poniżej (return) zwrócenie pasującego elementu.

1

Sorry za popsucie zgadywanki ;0

PW OKNO
prof. dr hab. inż. Włodzimierz Kasprzak
Instytut Automatyki i Informatyki Stosowanej
Wydział Elektroniki i Technik Informacyjnych

http://www.ia.pw.edu.pl/~wkasprza/PAP/MSI-2014.pdf
strona 105

0
BraVolt napisał(a):

Sorry za popsucie zgadywanki ;0

PW OKNO
prof. dr hab. inż. Włodzimierz Kasprzak
Instytut Automatyki i Informatyki Stosowanej
Wydział Elektroniki i Technik Informacyjnych

http://www.ia.pw.edu.pl/~wkasprza/PAP/MSI-2014.pdf
strona 105

No właśnie, semantyka tkwi w kontekście.
A tu można było bić pianę jeszcze tyle tyle godzin, popsułeś nastrój ;)

0
AnyKtokolwiek napisał(a):

A tu można było bić pianę jeszcze tyle tyle godzin, popsułeś nastrój ;)

Przyszedł Luke, użył Google, można się rozejść.

1 użytkowników online, w tym zalogowanych: 0, gości: 1