z cyklu pseudokod

0

Witam, jako początkująca programistka nie do końca rozumiem na czym polega pseudokod. Rozumiem jak się zamienia pętle itd. Ale nie wiem co mam zawrzeć w pseudokodzie a co pominąć. Przykładowy kod:

import java.util.concurrent.*;

public class Producer extends Thread{
    	
    private final BlockingQueue queue;//referencja do kolejki
    public int id;//identyfikator producenta
    public static int noOfTasks=10;//licznik zadan do wykonania
    
    Producer (BlockingQueue queue, int id)//konstruktor
    {
        this.queue=queue;
        this.id=id;
    }
 
    public void run()
    {
        try//spróbuj
        {
            while(true)//w nieskończoność
            {
                //dodanie do kolejki wyprodukowanego zestawu danych
                queue.put(produce());
                //wstrzymanie wątku producenta
                sleep(100);
                //jeśli licznik jest pusty producent kończy działanie
                if(noOfTasks==0) break;
            }
        } catch  (InterruptedException e)//inaczej
        {  System.out.println("Wyjatek: "+e);}//wyświetl błąd
    }
    
    Object produce()
    {
        Integer data=new Integer(noOfTasks);//pobierz dane
        System.out.println("Producent "+id+": wytwarza dane: "+data);//wyświetl informacje
        noOfTasks--;//zmniejsz licznik
        return data;//zwróć dane
    }
}
0

https://pl.wikipedia.org/wiki/Pseudokod
Czyli: pseudokod nie powinien narzucać składni języka w którym będziemy go chcieli zaimplementować.

0

No tak z całą pewnością nie spojrzałam na wikipedię ;p ale dziękuję za odpowiedź ;)

0

To jest dobre pytanie.

Nie pamiętam, jakie były moje początki, może ciężkie, ale od kiedy pamiętam, lepiej pisze mi się w pseukodzie niż w jakimś języku programowania. Przy czym – to jest mój własny pseudokod; mam oczywiście wyuczone jakieś koncepcje stąd czy stamtąd, z tego czy z tamtego języka programowania, ale nadal są to tylko koncepcje, bo jeśli czego nie wiem, dorabiam to na ich podstawie właśnie sam.

I tak bym też radził Tobie – spróbować tak napisać kod, by nie musieć co chwila patrzeć, jakie parametry przyjmuje dana funkcja, jakie pola ma dana klasa itd. Weź to, co masz w głowie, i spróbuj wyrazić tym to, co chcesz osiągnąć.

Jeśli zechcesz opublikować ten pseudokod gdzieś na forum, trochę musisz jednak więcej czerpać z jakichś mniej lub bardziej oficjalnych (=rozpowszechnionych) konwencji – żeby inni po prostu to zrozumieli (niekoniecznie mam na myśli instrukcje warunkowe, bo te są w zasadzie takie same; raczej np. zapis tablic).

Myślę, że żeby zmodyfikować konkretny fragment kodu na pseudokod (w którym raczej pisze się algorytmy, a nie całe programy!), należy rozpatrzyć m.in. następujące punkty:

  • Co kod ma robić?
  • Czy kod ma być przeznaczony do implementacji w jakimś języku (jeśli jeszcze nie jest napisany)? Jeśli tak, to czy w ogóle jest sens pisania osobnego kodu (czy też pseudokodu), czy może można skorzystać z jakiejś biblioteki czy frameworka (i np. tylko wywołać funkcję)?
  • Czy kodu nie da się podzielić na mniejsze fragmenty (z których może nie wszystkie będzie trzeba zapisać w pseudokodzie)?

W dalszej kolejności:

  • Czy kod wymaga danych wejściowych? Jeśli tak, to jakich?
  • Czy kod produkuje dane wyjściowe? Jeśli tak, to jakie?
  • Czy kod można zapisać w postaci listy kroków?

W dalszej kolejności:

  • Czy kod jest obiektem czy funkcją? (Uwaga: np. w Javascripcie to rozróżnienie nie jest takie oczywiste). Jeśli funkcją, to czy wszystkie dane zewnętrzne ma ona podane w parametrach, czy też korzysta z jakichś zmiennych zewnętrznych?
  • Czy kod definiuje jakieś obiekty, funkcje, zmienne, stałe itp.?
  • Co jest używane lub modyfikowane, a nie zdefiniowane w kodzie? Np. zewnętrzne pliki, strumienie, procesy, okna itp., jakieś zmienne (np. globalne albo pola z innej klasy). (Wskazówka: https://pl.wikipedia.org/wiki/Hermetyzacja_(informatyka)).

W dalszej kolejności:

  • Czy kod powinien zawierać słowa kluczowe? Jeśli tak, to jakie?

Pisałem to z głowy, więc jeśli są jakieś nieścisłości, proszę mnie poprawić, kto będzie wiedział. :)

Tu trochę inne podejście, wygląda ciekawie (nie czytałem): https://www.wikihow.com/Write-Pseudocode

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