Пређи на садржај

Прављење странице Корисник:Вујаницзоран1/Приступ који у решавању проблема имају процедурални програмски језици

Извор: Викикњиге

Процедурално програмирање

[уреди]

Процедурално програмирање[1][2] је програмска парадигма заснована на императивном програмирању[3] [4] [5], где је програм подељен на процедуре и функције ради боље организације и поновне употребе кода.

Програмска парадигма одређује начин структуирања, али и извршавања програма. (Пример: У објектном програмирању, програмер проматра програм као скуп објеката који међусобно комуницирају, док у функцијском програмирању[6] програм можемо проматрати као низ евалуација функција.)

Програми написани императивним стилом програмирања могу се посматрати као стање и низ наредби које рачунар треба да изврши и које мењају то стање. Императив (од лат. имперо — „наредити”)

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

Програмски језици

[уреди]

Различити програмски језици подржавају различите парадигме програмирања. Неки програмски језици подржавају само једну парадигму (Пример: Haskell), а има и језика који подржавају више њих (Пример: C++, Python).

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

Први значајни процедурални програмски језици су настали између 1957. и 1964. године, и то су Fortran, ALGOL, COBOL, PL/I и BASIC. Значајнији језици, Pascal и C, су настали око 1970. године, а C++ 1985.

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

Пошто су темељне идеје императивног програмирања „уграђене” у хардвер, већина програмских језика је императивна.

Императивно (процедурално) програмирање је најчешћи начин решавања проблема у инжењерској пракси.

Процедуре

[уреди]

Процедура (тј. подрутина, потпрограм, функција...) може бити било који део кода који се користи за обављање специфичног задатка, а њено извршавање је независно од остатка програма.

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

У процедуралном програмирању, програм је структуиран од процедура које су секвенцијално организоване ради решавања одређеног проблема. Сам програм тиме постаје след позива процедура и кода који повезује те позиве, што омогућава једноставније одржавање и бољу читљивост програма.

Фокус је на корацима које програм треба да спроведе да би се постигао жељени резултат.

Решавање проблема процедуралним програмирањем

[уреди]

Решавање проблема процедуралним програмирањем заснива се на принципу „Од општег ка посебном”:

  1. Полази се од постављеног задатка као општег
  2. Затим се задатак разлаже на једноставније целине, које изражавамо процедурама и функцијама
  3. Ако су те целине и даље превише комплексне, понављамо други корак све док се не дође до нивоа наредби

#include <iostream>
using namespace std;
int ucitaj() {
    int x;
    cin >> x;
    return x;
}
int saberi(int a, int b) {
    return a + b;
}
void ispis(int x) {
     cout << x << endl;
}
int main() {
     int a = ucitaj();
     int b = ucitaj();

     int zbir = saberi(a, b);

     ispis(zbir);

     return 0;
}

Одређене праксе развоја софтвера се често користе са процедуралним програмирањем како би се побољшао квалитет и смањили трошкови развоја и одржавања.

  • Модуларност подразумева поделу великих процедура у више мањих где свака мања има

јасну и специфичну сврху.

  • Ограничавање обима променљивих и процедура подразумева да их дефинишемо и користимо само тамо где су нам потребне.

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

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

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

Врлине и мане процедуралног програмирања

[уреди]

Врлине

[уреди]
  • Једноставна структура – Структура програма је линеарна, инструкције се извршавају редом, и код је уређен у процедуре, па је лако пратити и разумети ток програма.
  • Лако учење и отклањање грешака – Због своје једноставне структуре погодно је за учење, и отклањање грешака је често лакше него код других парадигми.
  • Ефикасност – Процедурално програмирање је врста императивног програмирања, па је по начину извршавања веома слично машинском коду и зато је у многим случајевима ефикасније од других парадигми.
  • Поновна употребљивост кода – Процедура може бити позвана више пута у различитим деловима програма, чиме се избегава дуплирање кода.
  • Тестирање и отклањање грешака – Појединачне процедуре могу бити изоловано тестиране, што олакшава идентификацију и исправљање грешака.

Мане

[уреди]
  • Лоша могућност проширивања – Због недостатка начина организовања података, у великим пројектима код може постати мање разумљив и мање ефикасан. Самим тим је теже одржавање кода и отклањање грешака.

Референце

[уреди]
  1. https://en.wikipedia.org/wiki/Procedural_programming
  2. https://sh.wikipedia.org/wiki/Proceduralno_programiranje
  3. https://en.wikipedia.org/wiki/Imperative_programming
  4. https://sr.wikipedia.org/sr-el/%D0%98%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D1%9A%D0%B5
  5. https://sh.wikipedia.org/wiki/Imperativno_programiranje
  6. https://skolakoda.github.io/imperativno-vs-funkcionalno-programiranje