Jestem studentem pracującym z różnymi technikami programowania i natknąłem się na pseudokod i schemat blokowy. Wiem, że oba są używane do przemyślenia problemu przed rozpoczęciem programowania, ale mam kilka pytań z tym.

  1. Kiedy używać pseudokodu do planowania, a kiedy schematy blokowe? A może lepiej zrobić jedno i drugie przed rozpoczęciem programowania. Szczególnie dla małej gry zręcznościowej w JAVA, ponieważ jest to mój następny projekt.
  2. Zauważyłem, że pseudokod jest bardzo podobny do rzeczywistego kodu, a nie do schematów blokowych. Czy to poprawiłoby pseudokodowanie, ponieważ zasadniczo kopiujesz / wklejasz pseudokod do swojego programu (oczywiście musisz zmienić go na pasuje do języka. Rozumiem tę część).
  3. Czy praktyczne jest używanie obu tych elementów podczas programowania? Szczególnie ta sama gra wspomniana wcześniej. Dzięki.

Komentarze

  • Oczywiście nie używałbyś schematów blokowych, w których ' nie ma przepływu – tj. dla prawie wszystkich deklaratywnych encji.
  • Mogę ' nie pamiętam, kiedy ostatnio widziałem schemat blokowy kodowania. Diagramy klas i przepływu danych, diagramy przypadków użycia, tak. Ale nie schematy blokowe. Może są one bardziej rozpowszechnione w tworzeniu gier.
  • @RobertHarvey, diagramy FSM (które są zasadniczo schematami blokowymi) są używane dość często w projektowaniu sprzętu.

Odpowiedź

Fl Wykresy i pseudokod często mają ten sam poziom wyrazistości, ale różnią się linearyzacją. Pseudokod jest liniowy (tj. Sekwencja wierszy z instrukcjami), a schemat blokowy nie. Dlatego schematy blokowe są wyższym poziomem abstrakcji, używanym przed napisaniem pseudokodu lub do dokumentacji.

Diagramy blokowe mają, moim zdaniem, dwie mocne zalety w porównaniu z pseudokodami: Po pierwsze, są graficzne. Wiele osób nietechnicznych obawia się ustrukturyzowanego tekstu, ale nie opisów graficznych, więc schematy blokowe będą z nimi znacznie lepiej współpracować. Po drugie, schematy blokowe znacznie lepiej wyrażają meta-rozważania, takie jak pokazanie głównej linii wykonania w przeciwieństwie do gałęzi.

Szczegółowe pytania:

  1. Dla naprawdę skomplikowanego problem, najpierw użyjesz schematów blokowych, a potem pseudokodu. Oba są opcjonalne, jeśli czujesz się wystarczająco bezpiecznie.
  2. Tak, pseudokod ma tę zaletę, że można go scalić z rzeczywistym kodem. Na przykład Steve McConnell zdecydowanie zaleca najpierw pisanie metod w pseudokodzie, a następnie pozostawienie pseudokodu w kodzie jako komentarzy.
  3. Zawsze czułem, że potrzeba narysowania schematu blokowego podczas projektowania pokazuje, że problem jest niewystarczający. Nietrywialne schematy blokowe wskazują na zawiłą logikę, której należy unikać przy dużych kosztach.

Komentarze

  • Diagramy blokowe to także świetny sposób aby upewnić się, że każdy punkt decyzyjny definiuje działania dla mniej powszechnej ścieżki (ścieżek), jak również najbardziej powszechnej. Pomaga to upewnić się, że będziesz wiedział, co zrobić, gdy odmowa zatwierdzenia lub zamówienie zostanie anulowane! W skrajnych przypadkach często występuje więcej błędów, ponieważ ludzie zapominają o nich lub robią je w pośpiechu podczas kontroli jakości, gdy testowanie je znajduje.

Odpowiedź

Pseudokod

Szczerze mówiąc, rzadko używam pseudokodu. Zwykle szybciej jest po prostu napisać kod, więc kiedy skończę z mój kod, to rzeczywisty kod. W niektórych przypadkach pseudokod może być pomocny, ale generalnie pracujesz nad czymś bardzo złożonym i po prostu próbujesz rozbić strukturę metody lub coś w tym rodzaju. W takich przypadkach używam komentarzy w moim IDE do rozplanowania struktury dopóki wszystko nie będzie dobrze. Następnie wchodzę i piszę rzeczywisty kod w komentarzach. Pomaga mi to w kilku rzeczach:

  • Widzę obszary, które mam i których nie zostały zaimplementowane przez czytając komentarze i widząc w nich oczywiste luki.
  • Kiedy wpisuję prawdziwy kod, mam komentarze wyjaśniające po angielsku, co robię. (Prawdopodobnie będą tego potrzebować, jeśli jest to tak skomplikowane że muszę najpierw napisać pseudokod).

Na schematach blokowych

Kod zwykle zmienia się tak bardzo, że schematy blokowe nie są pomocne, z wyjątkiem większej, bardziej systemowej architektury projekt lub dokumentacja. W takich przypadkach po prostu zapiszę diagram, aby uzyskać istotę rzeczy lub pokazać go komuś innemu w zespole. Jeśli naprawdę nie potrzebujesz schematu blokowego, który pomoże ci zrozumieć, to naprawdę nie potrzebujesz ich do „robienia” oprogramowania dobrze. Obecnie istnieje wiele wtyczek dla IDE , które generują schematy blokowe na podstawie samego kodu, a także diagramy klas i inne (oraz vice versa `). Jedynym rzeczywistym momentem, w którym musiałbyś zrobić naprawdę dokładny schemat blokowy, jest to, że nie możesz od razu zachować całej architektury i tego, jak rzeczy działają w twojej głowie i musisz porozmawiać przez coś wizualnego, aby złapać dziwactwa.

Odpowiedź

Generalnie nie piszę schematów blokowych podczas pracy nad projektami osobistymi (ponieważ projekty nie są zbyt duże) i większość danych wejściowych, wyjściowych i procesów jest przejrzysta.

ale ponieważ zaczniesz pracować nad złożonymi dużymi projektami z różnymi źródłami wejściowymi, płaskie pliki, bazy danych, ręczne interfejsy itp. schematy blokowe są przydatne.

Polecam piszesz pseudokod i digramy UML, ponieważ te narzędzia pomogą Ci wymyślić lepsze klasy, metody itp. Czasami podczas pisania pseudokodu znajdziesz inne i bardziej wydajne sposoby rozwiązania programu.

Odpowiedź

Pseudo kod służy do szybkiego przedstawienia pomysłu tym, którzy rozumieją przynajmniej podstawy kodu. Schematy blokowe służą do rysowania ładnych obrazków dla wszystkich innych aby zrozumieć to samo.

Diagramy blokowe są często używane do celów dokumentacyjnych, ponieważ wiele różnych osób korzysta z tej dokumentacji, a schematy blokowe są łatwiejsze do śledzić niż pseudokod dla nie programistów. W projekcie, nad którym sam pracujesz, trzymanie się pseudokodu jest w porządku, ponieważ jest znacznie bardziej użyteczny i łatwiejszy do utworzenia, ponieważ edytor tekstu to wszystko, czego potrzebujesz.

Odpowiedź

Schematy blokowe to wysoki poziom abstrakcji, które pozwalają zaplanować przebieg rzeczy, na przykład

jeśli x dies y wins

Nie muszą zależeć od tego, jak projektujesz program pod względem klas i metod, z drugiej strony pseudokod zapewniają niższy poziom abstrakcji (chociaż to naprawdę zależy)

if (isdead (s)) y.win ()

w ten sposób pseudokod można teraz przetłumaczyć na rzeczywisty program w oparciu o język, którego używasz.

W przypadku gry zalecałbym najpierw użyć schematu blokowego, a następnie zaprojektować klasy i metody, napisz pseudokod i ostatecznie przekonwertuj go na program

Odpowiedź

Chciałbym d zastanów się nad naturą kodu, który piszesz. Jeśli tak jest:

  1. Wysoce iteracyjne / rekurencyjne
  2. Rozgałęzienia w skomplikowany sposób
  3. Zaimplementowane w kilku systemach, które chcesz reprezentować

W pierwszych dwóch przypadkach pseudokod staje się coraz trudniejszy do odczytania niż duży diagram. Z drugiej strony kod, który jest w większości liniowy, tworzy niezwykle nudne diagramy, które w rzeczywistości utrudniają zrozumienie procesu ze względu na to, jak bardzo go wysadza.

W trzecim przypadku schematy blokowe lepiej przedstawiają procesy, które przekraczać granice systemu i przedstawiać cały proces.

Odpowiedź

  1. Powinieneś używać wszystkiego, z czym czujesz się komfortowo. To powiedziawszy, mam wrażenie, że schematy blokowe nie są obecnie zbytnio wykorzystywane do szkicowania sterowania programem; po pierwsze, w porównaniu z pseudokodami są zazwyczaj niestrukturalne. Diagramy zależności klas, takie jak UML, są częściej używane do opisywania architektury na znacznie wyższym poziomie. Ponadto, jeśli twoja aplikacja ma maszynę stanów, konieczne jest narysowanie diagramu automatu stanów (podobnego do schematu blokowego).
  2. Myślę, że masz rację. Jednym ze sposobów pracy jest zapisanie pseudokodu jako komentarzy w pliku źródłowym na początek i wstawienie między nimi rzeczywistych wierszy implementacji.
  3. Ponownie użyj tego, z czym czujesz się komfortowo. Jeśli nie jesteś pewien, wypróbuj oba; spodziewam się, że twoja praktyka szybko zbiegnie się z tym, co jest dla ciebie najbardziej przydatne. Osobiście nie uważam diagramów za przydatne, chyba że próbuję rozwikłać szczególnie skomplikowane zlecenie wykonania.

Odpowiedź

Po co pisać pseudokod, skoro można pisać w Javie? Znalazłem Javę, dobre IDE i Javadoc to najłatwiejszy sposób na zrozumienie problemu programistycznego – przynajmniej tego zorientowanego obiektowo . (A gra zręcznościowa powinna być OO.) Język został zaprojektowany od podstaw do tego. Jego proste i nieskomplikowane. (Być może zbyt prosty do wielu celów, ale najlepsza rzecz, jaką widziałem w tym zakresie.) Hipertekst w Javadoc i, za pośrednictwem IDE, w samym kodzie tworzą bardziej zrozumiały „diagram”, niż można by to wykorzystać nawet duży arkusz papieru. Kod w Javie jest tak samo prosty jak każdy pseudokod i dużo bardziej rygorystyczny. A kiedy już go „zaprogramujesz” i zakodujesz „pseudo”, program będzie faktycznie działał!

Komentarze

  • java i inne mogą być rozwlekłe. ” public static void main .. ” lub ” system.out.println ” lub długie identyfikatory z zapisem wielbłąda, długo nawinięte. złapałem 2b … a wywoływanie jakichkolwiek bibliotek może być długie. Pamiętam, że 10 lat temu otworzyłem plik. coś w rodzaju nowego BufferedReader (new InputStreamReader (System.in)); najwyraźniej teraz łatwiejsze mkyong.com / java / … Ale tak naprawdę każda biblioteka, którą wywołujesz, może być rozwlekła, nie jak pseudokod, który może być tak zwięzły, jak możesz sobie wyobrazić
  • również w javie lub jakimkolwiek innym języku, napotykasz na błędy przy kompilacji. nic z tego z pseudokodem. możesz skupić się na projektowaniu bez rozpraszania uwagi. Komentarze do pseudokodu mogą być znacznie krótsze, ponieważ pseudokod jest jaśniejszy dla umysłu, ponieważ ' pochodzi z umysłu. ' nie jesteś ograniczony myśleniem tylko w jednym języku i możesz zobaczyć ah i ' użyjesz tego drugiego języka. ' jest szybsze i mniej bolesne (nie są potrzebne kompilacje – nawet bardzo płynnie pojawiają się błędy kompilacji), a więc mniej czasu na pisanie ułatwia przeprojektowanie.
  • @barlop: To działa dla mnie, ale może nie działać dla wszystkich. Zostawiam dużo kodu (na przykład ” BufferedReader „) z moich zajęć, dopóki go nie potrzebuję lub nie będę wiedzieć, czy może sprawić, że to zadziała. Nawet jeśli go mam, ' jest ładnie schowany na zajęciach, na które nie ' nie muszę brać pod uwagę, biorąc pod uwagę całość projekt. Błędy kompilatora można łatwo naprawić i mogą zapobiec poważnym wadom projektowym, takim jak użycie niewłaściwej klasy w momencie, w którym można ' t nawet pobrać instancję klasy właściwa klasa. Przyznaję, mam ” zaprojektowałem ” w ten sposób tylko być napisane w Javie, ale OP jest używa Java.
  • więc powiedz, że chcesz otworzyć plik, czy widzisz jak pseudokod openfile (” c: \ blah \ file „) jest krótszy niż java, aby to zrobić? lub że wydruk ” dfdfd ” jest krótszy niż java, aby to zrobić? Nigdy ' nigdy nie skończyłem (jeszcze) stron z pseudokodami i wieloma klasami. częściowo ' cos nie ' nie pisałem dużych programów w wieku b) częściowo ' cos Nie ' nie sądzę, żebym to zrobił, myślę, że ' nie piszę jakiegoś pseudokodu, a następnie wdrażam go. Każdy inny pseudokod, jeśli taki istnieje, miałby wyższy poziom. Mogę mieć listę wszystkich klas i metod, w tym konstruktorów. Więc wiem, jakie są klasy i że mogę uzyskać ich instancję ..
  • więc nie ' nie będę w sytuacji, gdy użyję niewłaściwej klasy ale w każdym razie, jeśli ' jest moim programem, to ' d zapisałem w swoich notatkach, jaka jest klasa .. zajęcia są ładne wysoki poziom. i ' d mam na ten temat notatkę, jeśli ' nie pamiętam. A pseudokod polega na tym, co jeden oznacza, więc jeśli zamierzałeś utworzyć instancję klasy blah i napisałeś bleh, to ' to tylko literówka, ale nie ' nie utrudniać projektowania. (jeśli ' piszesz dla siebie ' bo wiesz, co masz na myśli, i użyłeś tego jak bzdura).

Odpowiedź

Możesz użyć schematu blokowego, jeśli „naprawdę czujesz się zdezorientowany stwierdzeniami if” i próbujesz zrozumieć że. Lub jeśli próbujesz zrozumieć pętlę, zobacz efekt liczników. Jeśli się ponownie uczysz, może to bardzo pomóc.

To może wydawać się nieco restrykcyjne, ponieważ musisz umieścić krótkie instrukcje w pudełkach. A jeśli twój program jest bardzo liniowy, a twoje pętle i if są trywialne, to nie widzę pożytku.

Pseudokod jest przydatny przy projektowaniu programu. bez rozpraszania się koniecznością uzyskania prawidłowej składni i bez rozwlekłości, które mogą wiązać się z niektórymi językami. Szybsze pisanie ułatwia również przeprojektowanie kod. Możesz być tak zwięzły, jak sobie tego życzy twój umysł, pisanie jest przyjemne, wymaga mniej wysiłku umysłowego, aby to zadziałało (jak brak lub dużo mniej debugowania) i więcej możliwości skupienia się na szerszym obrazie i projekcie. p>

Więc przydatne dla siebie.

Mogą być również używane do komunikowania się z innymi.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *