Pređi na sadržaj

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

Izvor: Викикњиге

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.

Mane

[uredi]
  • 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