From Wikipedia, the free encyclopedia
Strukturirano programiranje je programska paradigma usmerena na poboljšanje jasnoće, kvaliteta i vremena razvoja računarskog programa putem ekstenzivne upotrebe selekcije strukturiranih konstrukata toka kontrole () i ponavljanja ( i ), blokovskih struktura i podrutina. Edsger Dajkstra je 1968. godine skovao termin „strukturirano programiranje”.
Strukturirano programiranje je nastalo 70-ih godina, a njemu je prethodilo kompozitno programiranje.[1] Činjenica da nije postojao softver, koji bi mogao da iskoristi novonastale velike mogućnosti hardvera dovela je do prve softverske krize. Godine 1968. holandski informatičar Edsher Dajkstra napisao je članak „ naredba se smatra štetnom”, gde izlaže rezultate svog istraživanja, na osnovu kojih je zaključio da je broj grešaka u softveru proporcionalan broju upotreba naredbe. Godine 1969, konačno je stvoren programski jezik koji je omogućio pisanje programa bez upotrebe goto naredbe. To je bio Paskal, koji je stvorio Niklaus Virt. Faktori koji su doprineli popularnosti i širokom prihvaćanju ovog pristupa, prvo u akademskim krugovima i kasnije među praktičarima, uključuju otkriće onoga što je sada poznato kao teorema strukturiranog programa iz 1966. godine.[2] Dajkstra, Hoare i Dahl su napisali knjigu „Strukturirano programiranje”, u kojoj se nalaze i članci koji se bave rešavanjem problema eliminisanja upotrebe naredbe.
Danas, pod stukturiranim programiranjem podrazumeva skup tehnika za razvijanje programskih modela koji koriste strogo definisane upravljačke strukture i strukture podataka. Strukturirano programiranje se najčešće koristi sa odstupanjima koja omogućavaju jasnije programe u nekim posebnim slučajevima, kao što je obrada izuzetaka.
Ciljna klasa programa naziva se pravilni program. Pod ovim podrazumevamo program koji zadovoljava sledeća tri uslova:
Funkcija prva dva uslova jeste da se ceo pravilni program može zameniti tačno jednim čvorom, a funkcija trećeg jeste da eliminiše mogućnost beskonačnih ciklusa izolovanih delova programa.
Posebna baza strukturnih programa, koju čine sekvenca, iteracija tipa "" i selekcija tipa "" jeste baza pomoću koje se može izvesti svaki program i na osnovu koje možemo napraviti neke druge baze koje su nam potrebne.
1966. godine C. Boehm i G. Jacopini su izveli strukturnu teoremu koja pokazuje da se sveki pravilan program može ostvariti superpozicijom ove tri strukture (može se ostvariti bez upotrebe skokova), što je bilo ključno za rešavanje problema, koji su tražili uvođenje strukturiranih programa.
Prema teoremi strukturiranog programa, smatra se da se svi programi sastoje od kontrolnih struktura:
if..then..else..endif
.while
, repeat
, for
ili do..until
. Često se preporučuje da svaka petlja ima samo jednu ulaznu tačku (u izvornom strukturalnom programiranju takođe samo jednu izlaznu tačku, a nekoliko jezika to nameće).Podrutine su jedinice koje se mogu pozvati, kao što su procedure, funkcije, metode ili potprogrami. Podrutine omogućavaju pozivanje sekvence programskih linija pojedinačnom izjavom.
Blokovi se koriste kako bi se omogućilo da se grupe izjava tretiraju kao da su jedna izjava. Blokovno strukturirani jezici imaju sintaksu za ograđujuće strukture na neki formalan način, kao što je izjava ograđena sa if..fi
u jeziku ALGOL 68, ili sekcija koda ograđena sa BEGIN..END
u i Paskalu, uvlačenje znakom razmaka kao u Pajtonu - ili vitičaste zagrade {...}
u C jeziku i mnogim kasnijim jezicima.
Teorema strukturiranog programa pruža teorijsku osnovu strukturiranog programiranja. U njemu se navodi da su tri načina kombinovanja programa — sekvenciranje, selekcija i iteracija — dovoljna za izražavanje bilo koje izračunljive funkcije.[3][4] Ovo zapažanje nije poteklo od pokreta strukturiranog programiranja; ove strukture su dovoljne da opišu ciklus instrukcija centralne procesorske jedinice, kao i rad Turingove mašine.[5][6][7][8] Stoga, procesor uvek izvršava „strukturirani program“ u ovom smislu, čak i ako instrukcije koje čita iz memorije nisu deo strukturiranog programa. Međutim, autori obično pripisuju rezultat radu iz 1966. Bema i Jakopinija, verovatno zato što je Dijkstra sam citirao ovaj rad.[9] Teorema strukturiranog programa ne govori o tome kako napisati i analizirati korisno strukturiran program. Ove teme su razmatrane tokom kasnih 1960-ih i ranih 1970-ih, uz velike doprinose Dijkstre, Roberta V. Flojda, Tonija Hora, Ole-Johana Dala i Dejvida Grisa.
P. Dž. Ploger, rani usvojilac strukturiranog programiranja, opisao je svoju reakciju na teoremu strukturiranog programa:
Mi, preobraćenici, mahali smo ovom zanimljivom vesti pred nosom nerekonstruisanih programera na asemblerskom jeziku koji su neprestano izvlačili uvrnute delove logike i govorili, 'Kladim se da ne mogu da strukturišem ovo.' Ni dokazi Bema i Jakopinija, niti naši ponovljeni uspesi u pisanju strukturiranog koda nisu ih pridobili ni jedan dan ranije nego što su oni sami bili spremni da se uvere.[10]
Donald Knut je prihvatio princip da programi moraju biti napisani imajući na umu dokazljivost, ali se nije složio sa ukidanjem izjave GOTO, i od 2018. je nastavio da je koristi u svojim programima.[11] U svom radu iz 1974. godine, „Strukturirano programiranje sa Goto izjavama“,[12] dao je primere u kojima je verovao da direktan skok vodi ka jasnijem i efikasnijem kodu bez žrtvovanja dokazivosti. Knut je predložio labavije strukturno ograničenje: trebalo bi da bude moguće nacrtati dijagram toka programa sa svim granama napred na levoj strani, sa svim granama unazad na desnoj strani i nijednim granama koje se međusobno ukrštaju. Mnogi od onih koji poznaju kompajlere i teoriju grafova zagovarali su dozvoljavanje samo reducibilnih grafova toka.[13]
Teoretičari strukturiranog programiranja stekli su glavnog saveznika 1970-ih nakon što je istraživač IBM-a Harlan Mils primenio svoje tumačenje teorije strukturiranog programiranja na razvoj sistema indeksiranja za istraživački fajl Njujork Tajmsa. Taj projekat je bio veliki inženjerski uspeh, a menadžeri drugih kompanija su ga citirali u prilog usvajanju strukturiranog programiranja, iako je Dijkstra kritikovao načine na koje se Milsova interpretacija razlikuje od objavljenog rada.[14]
Godine 1987, još uvek je bilo moguće pokrenuti pitanje strukturiranog programiranja u časopisu o računarskim naukama. Frenk Rubin je to učinio te godine sa otvorenim pismom pod naslovom „'GOTO smatrano štetnim' smatra se štetnim“.[15] Usledile su brojne primedbe, uključujući odgovor Dijkstre koji je oštro kritikovao Rubina i ustupke koje su drugi pisci činili kada su mu odgovarali.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.