Programiranje – razlika između verzija

Uklonjeni sadržaj Dodani sadržaj
dopuna sa bs
Red 1:
'''Programiranje''' ili '''računarsko programiranje''' ({{jez-en|programming}}) jeste vještina pomoću koje korisnik stvara i izvršava [[algoritam|algoritme]] koristeći određene [[programski jezik|programske jezike]] da bi napravio [[računarski program]]. Programiranje sadrži elemente umjetnosti, nauke, matematike i konstruisanja.
;'''''Programiranje''''':je način upravljanja pomoću definisanja programa rada.
 
== Programski jezici ==
Za resavanje kompleksnih matematickih problema postoje veoma razvijeni programski jezici.
{{glavni|Programski jezik}}
Ovi programi omogucuju rukovanje elementarnim operacijama, skupovima unapred programiranih operacija.
Svaki [[programer]] piše programski kod u nekom programskom jeziku. Različiti programski jezici podržavaju različite stilove programiranja ([[programska paradigma]]). Različiti programski jezici zahtjevaju različite nivoe znanja, umijeća i detalja koje programer treba posjedovati.
Jezik (ADA) je jedan od takvih jezika. Dobio je ime u cast Ade Lavlejs Bajron koja je bila druzbenica Carlsa Bebidza.
Ova genijalna matematicarka XIX veka je pripremila programe za Bebidzevu masinu, pretecu savremenog racunara. Ona je dakle prva na svetu programirala racunar.
{{stub}}
 
Jedini [[programski jezik]] koji računar može direktno izvršavati je [[binarni kod|mašinski jezik (mašinski kod ili binarni kod)]]. U počecima računarstva [[programer]]i su pisali u mašinskom kodu, što je bilo vrlo komplikovano i zamorno. Sljedeći korak u razvoju [[računar]]skog programiranja ogleda se u upotrebi simboličkih jezika, poznatih pod zajedničkim nazivom [[asembler]].
== Spoljni linkovi ==
Asemblerski jezici sastoje se od jednostavnih instrukcija koje se direktno i jednoznačno mogu prevesti u mašinski kod koji se direktno izvršava. Iako mnogo pogodnije i od mašinskog programiranja, asemblersko programiranje karakteriše velika količina posla koju programer mora obaviti, zbog činjenice da su operacije i dalje elementarne.
* [http://en.wikibooks.org/wiki/Programming Computer Programming WikiBooks]
Zbog toga su stručnjaci stvorili programske jezike višeg nivoa pomoću kojih se piše izvorni kod koji se u mašinski kod prevodi posredstvom specijalnih programa - prevodilaca čiji je zadatak da prevede kod višeg programskog jezika u mašinski kod tzv. [[interpreter]] i [[kompajler]].
* [http://en.wikibooks.org/wiki/Programming:Windows_Programming Windows Programming WikiBooks]
 
<!-- Note to anyone editing this section of the article: Please try to avoid adding links to programming forums, as they will likely be removed. If you are here to add a link to your own site, it will be removed as well. However, if you have found an interesting article from a reputable source, then we encourage you link to it. Please see this URL for more info:
== Koraci u programiranju ==
http://meta.wikimedia.org/wiki/When_should_I_link_externally -->
Pri izradi svakog programa potrebno je proći kroz 4 osnovne faze ili koraka:
* [http://www.gamasutra.com/features/19991222/mcconnell_pfv.htm 1999 article on software programmer demographics]
# Analiza problema
* [http://www.levenez.com/lang/history.html#04 Detailed timeline on history of programming languages]
# Kreiranje algoritma (crtanje dijagrama toka)
* [http://www.iaeng.net/IJCS/index.html IAENG International Journal of Computer Science]
# Pisanje programskog koda
* [http://www.webbasedprogramming.com Web Based Programming Tutorials]
# Unos programskog koda u računar i pokretanje programa
* [http://programiranje.org/ Programiranje.Org :: Zajednica Programera]
 
=== Analiza problema ===
Prvi korak u izradi [[računarski program|računarskog programa]] je analiza potreba, razmatranje situacije i problem koji treba riješiti definisati preko [[jednačina]], uslova i kroz tzv. ''pseudo algoritam''. [[Programer]]u mora biti jasno kako će se dešavati promjene, zavisnosti, uzroci i posljedice, da bi sve to prenio i precizirao kroz [[programski kod]]. Sve mora biti [[matematika|matematički]] precizirano. Kod jednostavnijih programa ovaj dio je u domenu usmene analize, dok se kod složenijih programa ovaj dio radi u pisanoj i simboličkoj formi uz uredno dokumentiranje svih promjena ( ovaj dio spada u domen [[softversko inženjerstvo|softverskog inženjerstva]]).
 
=== Kreiranje algoritma ===
{{Glavni|Algoritam}}
Riječ ''algoritam'' potiče od imena iranskog [[matematičar]]a [[al-Hvarizmi]]ja koji se smatra tvorcem algoritma kao skupom precizno definisanih pravila za izvršavanje [[aritmetika|aritmetičkih]] operacija. [[Algoritam]] je procedura (postupak) sa skupom jasno definisanih koraka koji nedvosmisleno vode ka rješenju problema. Svaki algoritam mora ispoštovati 5 osnovnih zakonitosti algoritma:
* '''Definisanost''' (svi koraci moraju biti jasni i nedvosmisleni)
* '''Konačnost''' (izvršenje algoritma se mora obaviti u određenom broju koraka)
* '''Posjedovanje ulaza i izlaza''' ( moraju se definisati ''ulazi'' kojih može biti: ''ni jedan, jedan ili više'' i ''izlazi'' kojih '''''mora''' biti '''bar''' jedan ili više)''
* '''Efikasnost''' (algoritam se izvršava u razumnom vremenskom intervalu)
* '''Rezultativnost''' (algoritam mora dati rješenje problema a ako nema rješenja onda poruku da rješenje ne postoji).
 
=== Pisanje programskog koda ===
 
Nakon završetka [[algoritam|algoritma]], pristupa se pisanju [[programski kod|programskog koda]] na [[papir]]u. U ovom koraku se svaki korak [[algoritam|algoritma]] prevodi u odgovarajuću komandu u [[programski jezik|programskom jeziku]] u kojem se piše.
 
=== Unos koda u računar i testiranje programa ===
Kada su izvršene sve (analitičke) pripreme i ručno ispisan kod potrebno ga je unijeti u računar prilagođavajući programskom alatu u kojem će se program testirati i izvršavati. Svaki programski jezik ima svoj editor koji omogućuje unos programskog koda tzv. [[Izvorni kod]] uz kontrolu ispravnosti ispisa ključnih riječi i [[sintaksa|sintakse]] uopće. Uz editor u svakom programskom alatu nalazi se i [[interpreter]] koji omogućava testiranje svake linije koda ili koda u cjelini kako bi se blagovremeno otklonile eventualne greške u sintaksi ili definisanim varijablama, dimenzionisanju varijabli i sl. Nakon unosa kompletnog [[program]]a u [[računar]] program se treba pokrenuti da bi se vidjelo da li radi. Program se treba više puta pokrenuti da bi se vidjelo da li program radi za različite ulazne vrijednosti,a ovo podrazumjeva i sve granične vrijednosti.
 
== Elementarne algoritamske strukture ==
Algoritamske strukture se dijele u tri osnovne grupe:
* Linijska (sekvencija)
* Razgranata (selekcija)
* Ciklična (iteracija)
 
{|
|-
!colspan="3"|Linijska struktura:
 
|-
|colspan="3"|Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili "skretanja".
 
|-
|
|Primjer u BASIC-u
|Primjer u C-u
|-valign="top"
|
|
INPUT a, b
zbir = a + b
PRINT zbir
END
|
#include <stdio.h>
void main () {
int a, b, zbir;
printf("a,b? ");
scanf("%d%d", &a, &b);
zbir = a + b;
printf("a + b = %d\n", zbir);
}
|-
!colspan="3"|Razgranata struktura:
|-
|colspan="3"|Razgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE, pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija. Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli. Ako je djelilac različit od nule, daće rezultat dijeljenja, u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa.
|-
|
|Primjer u BASIC-u
|Primjer u C-u
|-valign="top"
|
|
INPUT a,b
IF b <> 0 THEN
PRINT a/b
ELSE
PRINT "Ne mogu dijeliti nulom"
END
|
#include<stdio.h>
void main () {
float a, b;
scanf("%f%f", &a, &b);
if (b == 0) {
printf("Ne mogu dijeliti nulom\n");
} else {
printf("a : b = %f\n", a / b);
}
}
|-
!colspan="3"|Ciklična struktura
|-
|colspan="3"|Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta. Postoji više varijanti ove srtukture a dvije osnovne podjele su:
* Broj iteracija (ponavljanja) jeste unaprijed poznat. Primjer ove petlje je na slici i tu se obično koristi petlja FOR.
* Iteracija se vrši dok se ne zadovolji određen uslov. Koriste se petlje tipa WHILE..DO.
 
Kod Iteracije sa provjere istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju, odnosno na kraju petlje. Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju.
|-
|
|Primjer u BASIC-u
|Primjer u C-u
|-valign="top"
|
|
zbir = 0
INPUT b
FOR a = 1 TO b
zbir = zbir + a
NEXT a
PRINT zbir
END
|
#include <stdio.h>
void main() {
int a, b, zbir = 0;
scanf("%d", &b);
for (a = 1; a <= b; a++) {
zbir += a;
}
printf("%d\n", zbir);
}
|}
 
{|
|-
!colspan="3"|Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje
|-
|
|Primjer u BASIC-u
|Primjer u C-u
|-valign="top"
|Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje. Razlog je jednostavan, ako uslov nije ispunjen odmah se "preskače" na sljedeću liniju izvan petlje. Za ovu vrstu petlje u većini programa se koristi ključna riječ "WHILE" prilagođena sintaksi programskog jezika.
|
zbir = 0
WHILE zbir < 200
INPUT a
zbir = zbir + a
WEND
PRINT zbir
END
|
#include <stdio.h>
void main() {
int a, zbir = 0;
while (zbir < 200) {
scanf("%d", &a);
zbir += a;
}
printf("%d\n", zbir);
}
|
|-
!colspan="3"|Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje
|-
|
|Primjer u BASIC-u
|Primjer u C-u
|-valign="top"
|Kod provjere istinitosti na kraju petlje, ne postoji mogućnost da se ne izvrši ni jedno ponavljanje. Razlog je jednostavan, provjera se vrši u posljednjem redu bloka kôda, te se mora proći barem jedanput kroz čitav blok. Za ovu vrstu petlje u većini programa se koristi ključna riječ "DO..WHILE" prilagođena sintaksi programskog jezika.
|
zbir = 0
DO
INPUT a
zbir = zbir + a
WHILE (zbir < 200)
PRINT zbir
END
|
#include <stdio.h>
void main() {
int a, zbir = 0;
do {
scanf("%d", &a);
zbir += a;
} while (zbir < 200);
printf("%d\n", zbir);
}
|}
 
Ekonomskim konceptima se dalje bavi [[Softversko inženjerstvo]]
 
== Razvoj softvera ==
{{glavni|Softverski razvoj}}
Stvaranje nekog programa uključuje:
 
* Analizu potreba
* Tehnički opis
* Dizajn i Arhitekturu
* Kodiranje
* Prevođenje
* Isprobavanje
* Dokumentaciju
* Održavanje
 
== Povezano ==
* [[Programski jezik]]
* [[Programski jezici|Spisak programskih jezika]]
* [[Računarski program]]
* [[Algoritam]]
* [[Kompajler]]
* [[Interpreter]]
* [[Funkcionalno programiranje]]
* [[Logičko programiranje]]
* [[Paralelno programiranje]]
* [[Izvorni kod]]
* [[Softver]]
 
== Vanjske veze ==
{{Commonscat|Computer programming}}
* [http://programiranje.org/ Programiranje.Org - Zajednica programera]
* [http://www.techbooksforfree.com/ Knjige vezane za programiranje, besplatne za skidanje] {{en icon}}
* [http://www.gamemaker.nl/ Game Maker] {{en icon}}
* [http://bhwebmasters.net/ BHWebmasteri, besplatni tečajevi programiranja]
* [http://www.code-it.net/ Code-it! Tutorijali / vodiči -> Programiranje, C#, C++, VB, PHP, Java, SQL, VB .NET, HTML...]
 
[[Kategorija:Programiranje| ]]
[[Kategorija:Informatika]]
[[Kategorija:Softver]]