Spaghetti code: Różnice pomiędzy wersjami
[wersja nieprzejrzana] | [wersja nieprzejrzana] |
Nie podano opisu zmian |
→Przykłady: konsekwentne użycie LET |
||
Linia 14: | Linia 14: | ||
== Przykłady == |
== Przykłady == |
||
10 INPUT count |
10 INPUT count |
||
20 LET steps = count |
20 LET steps = count |
||
30 LET bbk = 0 |
|||
40 LET bk = 1 |
|||
50 IF count < 1 THEN GOTO 100 |
|||
60 LET k = bbk + bk |
|||
70 LET bbk = bk |
|||
80 LET bk = k |
|||
90 LET count = count - 1 |
|||
100 PRINT "Wyraz nr "; steps - count; "ciagu Fibonacci'ego wynosi: "; k |
|||
110 IF count > 0 THEN GOTO 50 |
|||
120 END |
|||
Program wyświetla podaną przez użytkownika ilość pierwszych wyrazów ciągu Fibonacciego. |
Program wyświetla podaną przez użytkownika ilość pierwszych wyrazów ciągu Fibonacciego. |
Wersja z 11:36, 5 lut 2008
|
Ten artykuł należy dopracować |
Spaghetti code- ten termin określa skomplikowany, trudny do zrozumienia kod źródłowy programu. Z takiego kodu skompilowano wiele programów w starszych językach proceduralnych, typu Fortran czy Basic. Było to jeszcze przed powstaniem metody programowania strukturalnego.
Używano wielu instrukcji warunkowych i następnych w nich zagnieżdżonych, konstrukcji GOTO czy wyjątków. Droga przez kolejne rozkazy była tak poplątana, że odczytanie takiego kodu i zrozumienie go było bardzo uciążliwe, a ewentualne modyfikacje zwykle prowadziły do błędów w programie.
Programowanie strukturalne, w myśl zasady od ogółu do szczegółu, wprowadziło znaczne uporządkowanie w procesie tworzenia programów.
W skrócie taka metodologia programowania polega na dzieleniu zadania do wykonania na mniejsze, aż do uzyskania wystarczająco prostych fragmentów do zrealizowania. Łatwiej wtedy jest zaimplementować w poszczególnych modułach procedury, które w całości dadzą pożądany efekt.
W praktyce zazwyczaj dzieli się program na funkcje, z których każda realizuje określony cel i może być wywoływana wielokrotnie. Tak napisany kod jest już znacznie bardziej czytelny.
Przykłady
10 INPUT count 20 LET steps = count 30 LET bbk = 0 40 LET bk = 1 50 IF count < 1 THEN GOTO 100 60 LET k = bbk + bk 70 LET bbk = bk 80 LET bk = k 90 LET count = count - 1 100 PRINT "Wyraz nr "; steps - count; "ciagu Fibonacci'ego wynosi: "; k 110 IF count > 0 THEN GOTO 50 120 END
Program wyświetla podaną przez użytkownika ilość pierwszych wyrazów ciągu Fibonacciego. W kilku liniach trywialnego programu dwukrotne użyto bezwarunkowej instrukcji skoku - GOTO. Przy bardziej złożonym kodzie i większej liczbie skoków pojawi się problem z jego zrozumieniem.
Ten sam cel zrealizowany przez programowanie strukturalne (w C):
scanf ("%d",&steps); for (count = 0; count < steps; count++){ static int bbk = 0, bk = 1; int k = bbk + bk; bbk = bk; bk = k; printf ("Wyraz nr %d ciagu Fibonacci'ego wynosi: %d\n", steps - count,k); }
Poszczególne kroki wykonywane są w przejrzystej i formalnej pętli. Ciąg instrukcji do wykonania w programowaniu strukturalnym nie może być dowolnie zmieniany, "przejścia" do poszczególnych bloków są obsługiwane przez zaimplementowane konstrukcje (np. for, while, do while czy if else).