Spaghetti code
Spaghetti code- terminem tym przyjęto określać skomplikowany, trudny do zrozumienia kod źródłowy programu. W taki sposób napisanych zostało 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, instrukcji GOTO, wyjątków, które dalej powodowały wykonanie pewnej(ych) instrukcji. Droga przez kolejne instrukcje była tak poplątana, że odczytanie takiego kodu i zrozumienie go często graniczyło z cudem, 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 polega to 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
Poniższy fragment kodu źródłowego języka Basic ilustruje nieczytelność kodu:
10 INPUT count 20 LET steps = count; bbk = 0; bk = 1 30 IF count < 1 THEN GOTO 70 40 LET k = bbk + bk 50 bbk = bk: bk = k 60 count = count - 1 70 PRINT "Wyraz nr "; steps - count; "ciagu Fibonacci'ego wynosi: "; k 80 IF count > 0 THEN GOTO 30 90 END
Program wyświetla podaną przez użytkownika ilość pierwszych wyrazów ciągu Fibonacci'ego. W kilku liniach trywialnego programu dość potrzebne było dwukrotne użycie bezwarunkowej instrukcji skoku- GOTO. Nie trudno się domyślić, że przy bardziej złożonym kodzie i większej liczbie skoków pojawi się problem z jego zrozumieniem. Nie mówiąc już o konserwacji programu.
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).