Programowanie/Metodyki/Programowanie zstępujące

Z Wikibooks, biblioteki wolnych podręczników.

Programowanie zstępujące[edytuj]

Programowanie zstępujące jest jedną ze strukturalnych technik programowania. Polega ono na „rozdzielaniu” zadania programistycznego na mniejsze podzadania. Podzadanie jest podprogramem (np. funkcją).

dekompozycja[edytuj]

Przykładowo mamy do napisania skomplikowaną funkcję, możemy ją sobie wyobrazić jako pustą klatkę schematu Nassi Schneidermanna. Możemy ją zmienić na bardziej szczegółowe podzadania trzema sposobami: (1) na sekwencję, (2) na warunek, (3) na iterację. Każdy z podprogramów możemy dalej dekomponować (rozdzielać na prostsze podprogramy) aż do momentu, w którym podprogram będzie łatwy do zakodowania.

Funkcja może być zapisana jako sekwencja elementarnych podzadań. Pierwsza podinstrukcja jest prostym wyświetleniem powitania. Druga podinstrukcja może być warunkowym sprawdzeniem poprawności danych wejściowych i reakcją na nie. Jeżeli dane są poprawne, wówczas wykonaj obliczenia, w przeciwnym razie wyświetl informację o błędzie. Instrukcja obliczania została zdekomponowana – jej projektowanie zostało odłożone na później. Technikę rozpisywania zadania na prostsze podzadania możemy kontynuować od rozwiązania problemu.

technika odraczania[edytuj]

Technika odraczania pozwala na skompilowanie algorytmu podczas jego dekompozycji, nawet jeżeli nie został jeszcze w pełni zakodowany. Wszystkie podprogramy mogę być wpisywane do komputera jako realny kod programu, ale z jednym uproszczeniem. Mianowicie niezakodowana funkcja jedynie wypisuje na ekranie informację o tym, że jest jeszcze niezakodowana. Ale posiada ona nagłówek (interfejs) i pozwala na skompilowanie oraz próbne uruchomienie programu. Pozwala to na wyłapanie błędów kompilacji i szybkie prototypowanie algorytmu, nawet jeżeli nie jest jeszcze w pełni wiadomy. Funkcję „niezakodowaną” dzielimy na dwie kategorie:

zaślepki[edytuj]

Zaślepki nie wykonują żadnych obliczeń, jedynie wyświetlają informację, że podprogram wymaga zakodowania.

makiety[edytuj]

Makiety ponadto wydają jakieś wyniki działania, wzięte „na lipę”, tzn. zapewniające możliwość uruchomienia programu jeszcze przed jego zakodowaniem.