If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Jak opisać algorytm?

Możemy wyrazić algorytm na wiele sposobów, wliczając w to język naturalny, schematy blokowe, pseudokod i oczywiście rzeczywiste języki programowania.
Język naturalny jest popularnym wyborem, ponieważ wydaje nam się tak naturalny i może przekazać kroki algorytmu szerokiej publiczności. Gdy opracowujemy algorytmy, często współpracujemy zarówno z ludźmi znającymi programowanie, jak i tymi, którzy nie znają - ale wszyscy znają język naturalny.
Język naturalny ma jednak swoje wady. Ma tendencję do bycia niejednoznacznym i zbyt niejasno zdefiniowanym, ponieważ nie ma narzuconej struktury. Utrudnia to innym przestrzeganie algorytmu i poczucie pewności co do jego poprawności. Schematy blokowe i pseudokody są bardziej uporządkowanymi formatami, które mogą precyzyjniej wyrażać algorytm i są popularne wśród informatyków i programistów.
Wypróbujmy bardziej uporządkowane formaty, wyrażając algorytm Pig Latin z poprzedniego artykułu.

Schematy blokowe

Bardziej formalnym sposobem wyrażenia algorytmu jest schemat blokowy , jest to schemat z polami połączonymi strzałkami.
Na początek coś prostego, to jest schemat blokowy podstawowej wersji algorytmu Pig Latin:
Schemat blokowy dla podstawowego algorytmu Pig Latin, z 6 węzłami przepływającymi od jednego do drugiego:
  • „Start”
  • „Dołącz” - „”
  • „Dołącz pierwszą literę”
  • „Dołącz” ay „”
  • „Usuń pierwszą literę”
  • „Zakończ”
Każdy prostokąt reprezentuje krok w sekwencji, a strzałki przepływają od jednego kroku do drugiego.
Poniższy schemat blokowy dotyczy ulepszonego algorytmu i wykorzystuje diament do reprezentacji fazy wyboru:
Każdy prostokąt reprezentuje krok w sekwencji, a strzałki przepływają od jednego kroku do drugiego.
  • "Start"
  • „Dołącz” - „”
  • „Zapisz pierwszą literę”
Następnie węzeł diamentowy ma warunek „pierwsza litera = samogłoska?”.
Strzałka oznaczona jako „prawda” prowadzi do:
  • „Dołącz” yay ”
  • "Koniec"
Strzałka oznaczona jako „fałsz” prowadzi do:
  • „Dołącz pierwszą literę”
  • „Dołącz„ ay ””
  • „Usuń pierwszą literę”
  • "Koniec"
Na koniec ten schemat blokowy przedstawia pełny algorytm z iteracją:
Schemat blokowy końcowego algorytmu Pig Latin. Zaczyna się od 3 węzłów przepływających z jednego do drugiego:
  • "Początek"
  • „Przechowuj słowa”
  • „Słowo w słowach”
Strzała oznaczona „słowem” płynie stamtąd do zagnieżdżonego schematu blokowego, który zaczyna się od:
  • "Start"
  • „Dołącz” - „”
  • „Zapisz pierwszą literę”
Następnie węzeł diamentowy ma warunek „pierwsza litera = samogłoska?”.
Strzałka oznaczona jako „prawda” prowadzi do:
  • „Dołącz” yay ”
  • "Koniec"
Strzałka oznaczona jako „fałsz” prowadzi do:
  • „Dołącz pierwszą literę”
  • „Dołącz„ ay ””
  • „Usuń pierwszą literę”
  • "Koniec"
Strzałka płynie z „End” zagnieżdżonego schematu blokowego z powrotem do „For word in words”.
Strzałka oznaczona „koniec słów” wypływa z „Dla słowa w słowach”, prowadząc do węzła „Koniec”.
Wyrażenie algorytmu w schemacie blokowym pozwala nam wizualizować algorytm na wysokim poziomie, a ponadto zmusza nas do bardzo uważnego zastanowienia się nad sekwencjonowaniem i selekcją. Która strzałka idzie do jakiego węzła? Czy brakuje strzałek? Są to rodzaje cennych pytań, które mogą pojawić się podczas tłumaczenia algorytmu na schemat blokowy.

Pseudokod

Ostatecznie większość algorytmów staje się kodem, który faktycznie działa na komputerze. Zanim to nastąpi, programiści często lubią wyrażać algorytm w pseudokodzie: kodzie, który wykorzystuje wszystkie konstrukcje języka programowania, ale tak naprawdę nigdzie nie działa.
Oto algorytm Pig Latin napisany w stylu pseudokodu AP CSP:
DLA KAŻDEGO słowa W SŁOWACH
{   
DOŁĄCZ (słowo „-”)
   list ← PIERWSZA_LITERA (słowo)
   JEŻELI (JEST_SAMOGŁOSKA (list)) {
     DOŁĄCZ (słowo „yay”)
   } INACZEJ {
     DOŁĄCZ (słowo, list)
     DOŁĄCZ (słowo „ay”)
     WYRZUĆ_PIERWSZE (słowo)
   }
}
Każdy programista pisze pseudokod inaczej, ponieważ nie ma oficjalnego standardu, więc możesz napotkać pseudo-kod, który wygląda zupełnie inaczej.
Wyrażenie algorytmu w pseudokodzie pomaga programiście myśleć w znany sposób, nie martwiąc się składnią i szczegółami. Daje także informatykom niezależny od języka sposób wyrażania algorytmu, dzięki czemu programiści z dowolnego języka mogą przychodzić, czytać pseudo-kod i tłumaczyć go na wybrany przez siebie język.

Języki programowania

Po zaplanowaniu naszego algorytmu, czy to w języku naturalnym, na schematach, w pseudokodzie lub w kombinacji, nadszedł czas, aby przekształcić go w działający kod.
Przetłumaczymy algorytm Pig Latin na JavaScript, ponieważ jest to nasz wybrany język w Khan Academy. Możemy użyć pętli for do powtórzenia, if / else do wyboru, a następnie kombinacji operacji na łańcuchach i tablicach dla kroków.
📝 Zobacz podobny kod w: App Lab | Snap | Python
Algorytm można przetłumaczyć na dowolny język programowania ogólnego przeznaczenia. Aby to udowodnić, wystarczy odwiedzić RosettaCode.org, wiki, która zawiera setki algorytmów przetłumaczonych na ponad 700 języków.
Oprogramowanie jest napisane w różnych językach programowania, w zależności od tego, co robi i kto je tworzy. Khan Academy używa obecnie czterech różnych języków dla różnych części baz kodowych. Na szczęście możemy wszędzie używać tych samych algorytmów!

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Czy masz jakieś pytania na ten temat? Chętnie na nie odpowiemy — wystarczy, że zadasz pytanie w poniższym obszarze pytań!

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.