Pređi na sadržaj

Špageti kod

S Vikipedije, slobodne enciklopedije
Porcija špageta izgleda izuvijano i zamršeno, što je i bio razlog da se uvede pojam špageti kod.

Špageti kod je pogrdni izraz za programski kod koji ima složenu i zamršenu kontrolnu strukturu, posebno za kod koji sadrži mnogo GOTO naredbi ili drugih „nestrukturiranih“ konstrukcija čija je suština promena toka izvršenja programa.

Dobio je takav naziv pošto tok izvršavanja programa ima tendenciju da liči na porciju špageta, zbog svoje složenosti i zamršenosti. Upotrebljava se još i termin kengurov kod jer takav kod ima u sebi mnogo skokova.

Primeri

[uredi | uredi izvor]

Sledi trivijalan primer špageti koda pisan u BASIC-u. Program prikazuje na ekranu brojeve od 1 do 10, zajedno sa njihovim kvadratima. Može se primetiti da nema uvučenih redova koji i nisu potrebni jer se GOTO naredba referiše na broj kojim je označen red. Takođe se može primetiti da je tok izvršavanja programa nepredvidljiv.

 10 i = 0
 20 i = i + 1
 30 print i; " squared = "; i * i
 40 if i < 10 then goto 20
 50 print "Program je zavrsio sa radom."
 60 end

Ovo je isti kod napisan po pravilima strukturiranog programiranja:

 for i = 1 to 10
     print i; " squared = "; i * i
 next i
 print "Program je zavrsio sa radom."

Programski kod prelazi iz jednog dela u drugi, ali su ti prelasci predvidljivi, zahvaljujući upotrebi FOR petlji i funkcija koje čine standardni način za kontrolu toka. Sa druge strane, GOTO naredba ne podržava kontrolu toka izvršavanja programa. Iako je ovaj primer kratak, pravi programi obično imaju mnogo linija koda i jako su teški za održavanje ako su napisani kao špageti kod.

Programski jezici različitih nivoa

[uredi | uredi izvor]

Kada se koristi neki od mnogih oblika asemblera (kao i odgovarajući mašinski jezik) velika je opasnost od stvaranja špageti koda zato što su u pitanju programski jezici niskog nivoa u kojima se retko mogu naći ekvivalenti za strukturirane naredbe kojima se kontoliše tok izvršavanja programa kao što su FOR petlja i WHILE petlja.

Programi napisani na jezicima višeg nivoa sa konstrukcijama kao što su FOR petlje (kao u navedenom drugom primeru) se često kompajliraju u asembler ili mašinski jezik. U takvim situacijama, konstrukcije visokog nivoa se prevode u „špageti kod“ koji podseća na prvi navedeni primer u terminima kontrole toka izvršavanja. Kako kompajleri moraju podržavati konstrukcije visokog nivoa u izvornom kodu, oni nemaju problema kakvi se mogu sresti pri programiranju u BASIC-u.

Vidi još

[uredi | uredi izvor]

Spoljašnje veze

[uredi | uredi izvor]