Структурирано програмирање

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

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) и понављања (while и for), блоковских структура и подрутина. Едсгер Дајкстра је 1968. године сковао термин „структурирано програмирање”.

Структурирано програмирање је настало 70-их година, а њему је претходило композитно програмирање.[1] Чињеница да није постојао софтвер, који би могао да искористи новонастале велике могућности хардвера довела је до прве софтверске кризе. Године 1968. холандски информатичар Едсхер Дајкстра написао је чланак „Go to наредба се сматра штетном”, где излаже резултате свог истраживања, на основу којих је закључио да је број грешака у софтверу пропорционалан броју употреба goto наредбе.[2] Године 1969, коначно је створен програмски језик који је омогућио писање програма без употребе гото наредбе. То је био Паскал, који је створио Никлаус Вирт. Фактори који су допринели популарности и широком прихваћању овог приступа, прво у академским круговима и касније међу практичарима, укључују откриће онога што је сада познато као теорема структурираног програма из 1966. године.[3] Дајкстра, Хоаре и Дахл су написали књигу „Структурирано програмирање”, у којој се налазе и чланци који се баве решавањем проблема елиминисања употребе goto наредбе.

Данас, под стуктурираним програмирањем подразумева скуп техника за развијање програмских модела који користе строго дефинисане управљачке структуре и структуре података. Структурирано програмирање се најчешће користи са одступањима која омогућавају јасније програме у неким посебним случајевима, као што је обрада изузетака.

Правилни програми[уреди]

Циљна класа програма назива се правилни програм. Под овим подразумевамо програм који задовољава следећа три услова:

  • има тачно једну улазну грану
  • има једну излазну грану
  • кроз сваки чвор пролази се бар једном од улаза до излаза

Функција прва два услова јесте да се цео правилни програм може заменити тачно једним чвором, а функција трећег јесте да елиминише могућност бесконачних циклуса изолованих делова програма.

Структурна теорема и програмирање без гото[уреди]

Посебна база структурних програма, коју чине секвенца, итерација типа "while-do" и селекција типа "if-then-else" јесте база помоћу које се може извести сваки програм и на основу које можемо направити неке друге базе које су нам потребне.

1966. године C. Боехм и Г. Јацопини су извели структурну теорему која показује да се свеки правилан програм може остварити суперпозицијом ове три структуре (може се остварити без употребе скокова), што је било кључно за решавање проблема, који су тражили увођење структурираних програма.

Елементи[уреди]

Контролне структуре[уреди]

Према теореми структурираног програма, сматра се да се сви програми састоје од контролних структура:

  • „Секвенца”; уређени изјаве или потпрограми извршени у низу.
  • „Селекција”; једна или више изјава се извршава зависно од стања програма. Ово се обично изражава са резервисаним речима као што су if..then..else..endif.
  • Итерација”; израз или блок се извршава док програм не досегне одређено стање, или су операције примењене на сваки елемент колекције. Ово се обично изражава са резервисаним речима као што су while, repeat, for или do..until. Често се препоручује да свака петља има само једну улазну тачку (у изворном структуралном програмирању такође само једну излазну тачку, а неколико језика то намеће).
  • Рекурзија”; изјава се извршава поновљеним позивањем док се не испуне услови раскида. Иако су у пракси сличне итеративним петљама, рекурзивне петље могу бити рачунски делотворније и различито се имплементирају као каскадни стек.

Подрутине[уреди]

Подрутине су јединице које се могу позвати, као што су процедуре, функције, методе или потпрограми. Подрутине омогућавају позивање секвенце програмских линија појединачном изјавом.

Блокови[уреди]

Блокови се користе како би се омогућило да се групе изјава третирају као да су једна изјава. Блоковно структурирани језици имају синтаксу за ограђујуће структуре на неки формалан начин, као што је if изјава ограђена са if..fi у језику АЛГОЛ 68, или секција кода ограђена са BEGIN..END у PL/I и Паскалу, увлачење знаком размака као у Пајтону - или витичасте заграде {...} у C језику и многим каснијим језицима.

Референце[уреди]

  1. ^ Цларк, Леслие Б. Wилсон, Роберт Г.; Роберт, Цларк (2000). Цомпаративе программинг лангуагес (3рд изд.). Харлоw, Енгланд: Аддисон-Wеслеy. стр. 20. ИСБН 9780201710120. Приступљено 25. 11. 2015. 
  2. ^ Дијкстра 1968, "Тхе унбридлед усе оф тхе го то статемент хас ас ан иммедиате цонсеqуенце тхат ит бецомес терриблy хард то финд а меанингфул сет оф цоординатес ин wхицх то десцрибе тхе процесс прогресс. ... Тхе го то статемент ас ит стандс ис јуст тоо примитиве, ит ис тоо муцх ан инвитатион то маке а месс оф оне'с програм."
  3. ^ Бохм, Цоррадо; Гиусеппе Јацопини (мај 1966). „Флоw Диаграмс, Туринг Мацхинес анд Лангуагес wитх Онлy Тwо Форматион Рулес” (ПДФ). Цоммуницатионс оф тхе АЦМ. 9 (5): 366—371. ЦитеСеерX 10.1.1.119.9119Слободан приступ. дои:10.1145/355592.365646. Архивирано (ПДФ) из оригинала на датум 2015-09-23. 

Литература[уреди]

Спољашње везе[уреди]

  • 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.