Spaghetti code: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
lit., drobne redakcyjne |
m drobne redakcyjne |
||
Linia 1: | Linia 1: | ||
{{ |
{{Dopracować|styl}} |
||
'''Spaghetti code''' – termin określający skomplikowany, trudny do zrozumienia [[kod źródłowy]] programu. Z takiego kodu skompilowano wiele programów w starszych [[język proceduralny|językach proceduralnych]], typu [[Fortran]] czy [[ |
'''Spaghetti code''' – termin określający skomplikowany, trudny do zrozumienia [[kod źródłowy]] programu. Z takiego kodu skompilowano wiele programów w starszych [[język proceduralny|językach proceduralnych]], typu [[Fortran]] czy [[BASIC]]. Było to jeszcze przed powstaniem metody [[programowanie strukturalne|programowania strukturalnego]]. |
||
Używano wielu [[instrukcja warunkowa|instrukcji warunkowych]] i następnych w nich zagnieżdżonych, konstrukcji [[GOTO]] czy [[wyjątek|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. |
Używano wielu [[instrukcja warunkowa|instrukcji warunkowych]] i następnych w nich zagnieżdżonych, konstrukcji [[Instrukcja skoku|GOTO]] czy [[wyjątek|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 [[Implementacja (informatyka)|zaimplementować]] w poszczególnych modułach [[podprogram|procedury]], które w całości dadzą pożądany efekt. W praktyce zazwyczaj dzieli się program na [[ |
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 [[Implementacja (informatyka)|zaimplementować]] w poszczególnych modułach [[podprogram|procedury]], które w całości dadzą pożądany efekt. W praktyce zazwyczaj dzieli się program na [[Podprogram|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 == |
== Przykłady == |
||
Linia 22: | Linia 22: | ||
120 END |
120 END |
||
Program wyświetla podaną przez użytkownika ilość pierwszych wyrazów [[ciąg Fibonacciego|ciągu Fibonacciego]]. W kilku liniach trywialnego programu dwukrotnie użyto bezwarunkowej instrukcji skoku |
Program wyświetla podaną przez użytkownika ilość pierwszych wyrazów [[ciąg Fibonacciego|ciągu Fibonacciego]]. W kilku liniach trywialnego programu dwukrotnie użyto bezwarunkowej instrukcji skoku – [[Instrukcja 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 (język programowania)|C]]): |
Ten sam cel zrealizowany przez programowanie strukturalne (w [[C (język programowania)|C]]): |
||
Linia 35: | Linia 35: | ||
} |
} |
||
Poszczególne kroki wykonywane są w przejrzystej i formalnej [[pętla (informatyka)|pętli]]. Ciąg instrukcji do wykonania w programowaniu strukturalnym nie może być dowolnie zmieniany, |
Poszczególne kroki wykonywane są w przejrzystej i formalnej [[pętla (informatyka)|pętli]]. Ciąg instrukcji do wykonania w programowaniu strukturalnym nie może być dowolnie zmieniany, „przejścia” do poszczególnych [[blok podstawowy|bloków]] są obsługiwane przez zaimplementowane konstrukcje (np. ''for, while, do while czy if else''). |
||
== Zobacz też == |
== Zobacz też == |
||
Linia 42: | Linia 42: | ||
* [[Algol (język programowania)|Algol]] |
* [[Algol (język programowania)|Algol]] |
||
* [[ATLAS (język programowania)|ATLAS]] |
* [[ATLAS (język programowania)|ATLAS]] |
||
* [[autokod]] |
* [[Język wysokiego poziomu|autokod]] |
||
* [[kod maszynowy]] |
* [[Język maszynowy|kod maszynowy]] |
||
* [[programowanie obiektowe]] |
* [[programowanie obiektowe]] |
||
Wersja z 17:50, 14 kwi 2013
|
Ten artykuł należy dopracować |
Spaghetti code – termin określający 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 Fibonacciego 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 dwukrotnie 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 Fibonacciego 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).