Strukturirano programiranje

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

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 (if/then/else) i ponavljanja (while i for), 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 „Go to 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 goto naredbe.[2] 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.[3] Dajkstra, Hoare i Dahl su napisali knjigu „Strukturirano programiranje”, u kojoj se nalaze i članci koji se bave rešavanjem problema eliminisanja upotrebe goto 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.

Pravilni programi[уреди]

Ciljna klasa programa naziva se pravilni program. Pod ovim podrazumevamo program koji zadovoljava sledeća tri uslova:

  • ima tačno jednu ulaznu granu
  • ima jednu izlaznu granu
  • kroz svaki čvor prolazi se bar jednom od ulaza do izlaza

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.

Strukturna teorema i programiranje bez goto[уреди]

Posebna baza strukturnih programa, koju čine sekvenca, iteracija tipa "while-do" i selekcija tipa "if-then-else" 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.

Elementi[уреди]

Kontrolne strukture[уреди]

Prema teoremi strukturiranog programa, smatra se da se svi programi sastoje od kontrolnih struktura:

  • „Sekvenca”; uređeni izjave ili potprogrami izvršeni u nizu.
  • „Selekcija”; jedna ili više izjava se izvršava zavisno od stanja programa. Ovo se obično izražava sa rezervisanim rečima kao što su if..then..else..endif.
  • Iteracija”; izraz ili blok se izvršava dok program ne dosegne određeno stanje, ili su operacije primenjene na svaki element kolekcije. Ovo se obično izražava sa rezervisanim rečima kao što su 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).
  • Rekurzija”; izjava se izvršava ponovljenim pozivanjem dok se ne ispune uslovi raskida. Iako su u praksi slične iterativnim petljama, rekurzivne petlje mogu biti računski delotvornije i različito se implementiraju kao kaskadni stek.

Podrutine[уреди]

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[уреди]

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 if izjava ograđena sa if..fi u jeziku ALGOL 68, ili sekcija koda ograđena sa BEGIN..END u PL/I i Paskalu, uvlačenje znakom razmaka kao u Pajtonu - ili vitičaste zagrade {...} u C jeziku i mnogim kasnijim jezicima.

Reference[уреди]

  1. ^ Clark, Leslie B. Wilson, Robert G.; Robert, Clark (2000). Comparative programming languages (3rd изд.). Harlow, England: Addison-Wesley. стр. 20. ISBN 9780201710120. Приступљено 25. 11. 2015. 
  2. ^ Dijkstra 1968, "The unbridled use of the go to statement has as an immediate consequence that it becomes terribly hard to find a meaningful set of coordinates in which to describe the process progress. ... The go to statement as it stands is just too primitive, it is too much an invitation to make a mess of one's program."
  3. ^ Bohm, Corrado; Giuseppe Jacopini (мај 1966). „Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules” (PDF). Communications of the ACM. 9 (5): 366—371. CiteSeerX 10.1.1.119.9119Слободан приступ. doi:10.1145/355592.365646. Архивирано (PDF) из оригинала на датум 2015-09-23. 

Literatura[уреди]

Spoljašnje veze[уреди]

  • BPStruct - A tool to structure concurrent systems (programs, process models)
  • J. Darlinton; M. Ghanem; H. W. To (1993), „Structured Parallel Programming”, In Programming Models for Massively Parallel Computers. IEEE Computer Society Press. 1993