Pravljenje stranice Korisnik:Vujaniczoran1/Pristup koji u rešavanju problema imaju proceduralni programski jezici

Proceduralno programiranje

uredi

Proceduralno programiranje[1][2] je programska paradigma zasnovana na imperativnom programiranju[3] [4] [5], gde je program podeljen na procedure i funkcije radi bolje organizacije i ponovne upotrebe koda.

Programska paradigma određuje način struktuiranja, ali i izvršavanja programa. (Primer: U objektnom programiranju, programer promatra program kao skup objekata koji međusobno komuniciraju, dok u funkcijskom programiranju[6] program možemo promatrati kao niz evaluacija funkcija.)

Programi napisani imperativnim stilom programiranja mogu se posmatrati kao stanje i niz naredbi koje računar treba da izvrši i koje menjaju to stanje. Imperativ (od lat. impero — „narediti”)

Proceduralno programiranje je česta metoda korišćenja imperativnog programiranja.

Programski jezici

uredi

Različiti programski jezici podržavaju različite paradigme programiranja. Neki programski jezici podržavaju samo jednu paradigmu (Primer: Haskell), a ima i jezika koji podržavaju više njih (Primer: C++, Python).

U jezicima koji podržavaju više paradigmi ne moramo koristiti u celom programu samo jednu paradigmu, već možemo napisati program koji sadrži elemente obe paradigme.

Prvi značajni proceduralni programski jezici su nastali između 1957. i 1964. godine, i to su Fortran, ALGOL, COBOL, PL/I i BASIC. Značajniji jezici, Pascal i C, su nastali oko 1970. godine, a C++ 1985.

Većina računara je konstruisana da izvršava mašinski jezik napisan u imperativnom stilu, pa samim tim podržava i proceduralni stil programiranja.

Pošto su temeljne ideje imperativnog programiranja „ugrađene” u hardver, većina programskih jezika je imperativna.

Imperativno (proceduralno) programiranje je najčešći način rešavanja problema u inženjerskoj praksi.

Procedure

uredi

Procedura (tj. podrutina, potprogram, funkcija...) može biti bilo koji deo koda koji se koristi za obavljanje specifičnog zadatka, a njeno izvršavanje je nezavisno od ostatka programa.

Sastoji se od sleda računarskih koraka koji se mogu izvršavati "pozivom" u bilo kojoj tački izvršavanja celog programa, a takođe je moguće izvršavanje u drugim procedurama.

U proceduralnom programiranju, program je struktuiran od procedura koje su sekvencijalno organizovane radi rešavanja određenog problema. Sam program time postaje sled poziva procedura i koda koji povezuje te pozive, što omogućava jednostavnije održavanje i bolju čitljivost programa.

Fokus je na koracima koje program treba da sprovede da bi se postigao željeni rezultat.

Rešavanje problema proceduralnim programiranjem

uredi

Rešavanje problema proceduralnim programiranjem zasniva se na principu „Od opšteg ka posebnom”:

  1. Polazi se od postavljenog zadatka kao opšteg
  2. Zatim se zadatak razlaže na jednostavnije celine, koje izražavamo procedurama i funkcijama
  3. Ako su te celine i dalje previše kompleksne, ponavljamo drugi korak sve dok se ne dođe do nivoa naredbi

#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;
}

Određene prakse razvoja softvera se često koriste sa proceduralnim programiranjem kako bi se poboljšao kvalitet i smanjili troškovi razvoja i održavanja.

  • Modularnost podrazumeva podelu velikih procedura u više manjih gde svaka manja ima

jasnu i specifičnu svrhu.

  • Ograničavanje obima promenljivih i procedura podrazumeva da ih definišemo i koristimo samo tamo gde su nam potrebne.

Program bez modularnosti ili s prevelikim obimom često sadrži procedure koje koriste veliki broj promenljivih, što otežava razumevanje i održavanje koda.

Kada procedura ima jasno definisan interfejs i nezavisna je, to omogućava njenu ponovnu upotrebu i uprošćavanje ostatka koda.

Proceduralno programiranje se često koristi u situacijama gde je važno postići jasnu organizaciju zadataka kroz seriju koraka, a posebno u inženjerskim aplikacijama ili softveru koji zahteva visok nivo efikasnosti i tačnosti u izvršavanju.

Vrline i mane proceduralnog programiranja

uredi

Vrline

uredi
  • Jednostavna struktura – Struktura programa je linearna, instrukcije se izvršavaju redom, i kod je uređen u procedure, pa je lako pratiti i razumeti tok programa.
  • Lako učenje i otklanjanje grešaka – Zbog svoje jednostavne strukture pogodno je za učenje, i otklanjanje grešaka je često lakše nego kod drugih paradigmi.
  • Efikasnost – Proceduralno programiranje je vrsta imperativnog programiranja, pa je po načinu izvršavanja veoma slično mašinskom kodu i zato je u mnogim slučajevima efikasnije od drugih paradigmi.
  • Ponovna upotrebljivost koda – Procedura može biti pozvana više puta u različitim delovima programa, čime se izbegava dupliranje koda.
  • Testiranje i otklanjanje grešaka – Pojedinačne procedure mogu biti izolovano testirane, što olakšava identifikaciju i ispravljanje grešaka.
  • Loša mogućnost proširivanja – Zbog nedostatka načina organizovanja podataka, u velikim projektima kod može postati manje razumljiv i manje efikasan. Samim tim je teže održavanje koda i otklanjanje grešaka.

Reference

uredi
  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