Dobrodošli u svijet programiranja
Dobrodošli u školu programiranja, to jeste u školu C++-a. Sigurno se pitate zašto C++, kada nije najmoderniji jezik? Kada ima i boljih jezika? Odgovor je jednostavan. Ako stvarno želite naučiti programirati i istinski se zvati programerom, onda je C++ obavezno gradivo. Kada znate C++, ona vam nije nikakav problem u kratkom roku, a tržište to uglavnom i traži, da se prebacite sa High-level na Low-level , sa programiranja aplikativnog softvera na neko sistemsko ili hibridno programiranje.
C++ nije ni lagan ni jednostavan programski jezik. Zbog njega se provode mnoge besane noći i potrši gomila živaca dok ne shvatite neku krucijalnu stvar. Postoje mnogi jednostavniji programski jezici, na primjer Visual Basic, koji su lakši za naučiti, ali su zato funkcionalno znatno ograničeniji, dok C++ podsjeća na švicarski nožić (a.k.a. čakija), jer je u njemu moguće uraditi gotovo sve, od strukturnog (čisto proceduralnog) programa, pa do objektno orijentisanog programa, a i sve između toga, baš kao i za svaku platformu i namjenu.
Većina knjiga i tutorijala krene sa pisanjem koda prerano. Prije nego sto uspijete shvatiti šta je to program i što se sve dešava na putu od srca računara do GUI aplikacije koju imate pred sobom, i obratno. Program bismo najlakše mogli predstaviti kao neki medij koji korisniku pomaže da uz pomoć računara dođe do rješenja svog problema. Da bi korisnik moga ovo uraditi, zadatak je na programeru da računaru „kaže“ što i kako raditi, odnosno da isprogramira računar kako da reagira na razne podatke koje korisnik unosi.
A podatak je upravo ono što programer mora imati u glavi pri kodiranju programa i citav proces kodiranja će se uvijek vrtiti oko rada sa podacima. Od unosa podatka od strane korisnika pa do obrade tog podatka od strane računara dug je i slojevit put. Korisnik podatke, odnosno informacije šalje računaru u onom obliku kojeg računar ne razumije (riječi, brojevi, znakovi) i ti podaci se moraju transformisati u jedinice i nule da bi ih računar mogao „razumjeti“. Nivo na kom se nalazi podatak kod korisnika se naziva viskoi nivo, dok niskim nivoom nazivamo nivo računara.
Programeri su nekada morali raditi na ovom najnižem nivou, direktno unosići jedinice i nule pomoću kojih su programirali računar, odnosno premještli skolopke puštajući ili zaustavljejući dotok struje. Jer, jedinica i nula nije nista drugo nego protok struje – ili ga ima ili ga nema. Kasnije nastaje asemblerski jezik, asembler, koji je bio prvi pokušaj da se programeru olakša dosadno i naporno programiranje. Asembler se i dan danas koristi. Koriste ga programeri hardvera koji putam mnemonika, ustaljenih skraćenica, programiraju najniže slojeve računara.
Dolaskom jezika višeg nivo počinje programiranje kakvo danas znamo. Čak i ovi jezici visokog nivoa ili jezici treće generacije, prolaze stalne modifikacije u cilju stvaranja što jednostavnijeg programskog jezika. Danas proces programiranja, odnosno, proces pretvaranja naredbi razumljive čovjeku u nardbe razumljive računaru vrši preko kompailera ili preko interpretera. Ova dva pojma ste vjerovatno već čuli. Međutim, predpostavljam da većina vas ne zna koja je razlika između njih.
Interpreterom se svakodnevno susreću korisnici Linux shella. On nije nista više nego interpreter koji prevodi linijiu po liniju u kod razumljiv računaru. Njegova prednost je u tome sto u svakom momentu programer tačno zna u kojem se redu skriva greška. Negativna strana interpretera je u tome sto se preogram može izvršiti samo na računaru na kojem ima instaliran taj interpreter.
S druge strane, kompajler ima veći broj međukoraka pri kompajliranju. Zbog tih međukoraka je znatno otežano pronalađenje grešaka unutar koda, ali se zato, kao rezltat truda, dobije izvršna datoteka koja se ne mora kompajlirati pri svakom pokretanju, koja se mnogo brže izvršava. Naime, dobije se .exe datoteka, koju svakodnevno pokrecemo, a za koju većina ni nezna šsta je to zapravo. .exe file zapravo nije ništa više nego skup jedinica i nula, odnosno binarni fajl ( eng. binary file). Prednost ovakvog prevođenja naredbi jeste u tome što se dobijeni program lakse i brže izvršava, sto se lagano i brzo prenosi sa mašine na mašinu, bez ikakve potrebe za kompajlerom da bi se taj program izvršavo na datoj mašini.
Dug i kompleksan put je od programskog koda pa do stvaranja izvršnong fajla. Na našu sreću, sve međukorake izvršava kompajler. Naš posao, odnosno posao programera, jeste „samo“ da napise kod programa i da „kaže“ kompajleru koje biblioteke da ukljuci u program. Bibilioteka nije nista drugo nego skup ćesto koristenih funkcija, naredbi. Da nebi svaki put kada nam zatreba neka trivijalna stvar pisali kod nanovo, on se jednom napiše, stavi u biblioteku i nakon toga ga možemo koristiti koliko god puta nam zatreba. Jedino sto je potrebno predhodno uraditi jeste ukljućiti datu biblioteku u projekat. Na taj naćin se štedi i vrijeme i novac, koji sada mogu biti usmjereni prema samo razvoju programa. Biblioteke se takodjer nazivaju i header fajlovi.
Znaći, preogramer napise kod u višem programskom jeziku, ukljući sve neophodne biblioteke, i pokrene kompajler. Tada kompajler preuyima posao od programera, napisani kod pretvara u fajl sa ekstenziom .cpp, a nakon toga iz njega stvara fajl sa ekstenzijom .obj. Ovaj korak se naziva kompajliranjem, a rezultat toga jeste .obj fajl. Nakon ovog koraka, kompajler poziva linkere, cija je uloga vezanja kreiranih .obj fajlova sa bibliotekama u jedan .exe fajl. Svaki programer bi treba ovaj proces da ima usađeno u glavi, jer je bez toga nemoguće pronaći grešku.
U samom uvodu sam spomenuo strukturno i objektno programiranje. Iako još nisam pokazao kako kod programa izgleda, pokušat ću vam objasniti šta ti pojmovi znače. Da biste shvatili razliku, potrebno je samo da znate da programiranje predstavlja rešavanjem problema pomoću seta naredbi. Kao u u stvarnom životu, preobleme pri rešavanju razlažemo na manje, jednostavnije probleme i njih rešavamo. Kada ih rešimop, imamo rešen glavni problem.
Ovaj način programiranja se koristio sve do kraja 80-tih godina, kada su prorameri shvatili da im nesšto nedostaje, jer se često dešavalo da su ponovo morali izmišljati nova rešenja za stare probleme. Drugim riječima, izmišljali su toplu vodu. Tada je nastalo objektno programiranje. Ono je zasnovani na ideju da se napravi jedan „templejt“ koji će sadržati sve osnovne osobine jednog problema. Njega ćemo kasnije moći jednostavno ubaciti u program kao modul. Slicno kao sto je stvar sa bibliotekama. Zamislite si da vam crken sijalica i vi uzmete da izmišljate novu, da je konstruišete i pravite, umjesto da samo uzmete neku gotovu i zamjenite ih.
Iako C++ podržava objektno orijentisano programiranje, ja u ovoj maloj školi ne planiram da se toga dotakenm. Naučiću vas strukturnom programiranju. Da biste moglu pratiti ovu školu, neophodan vam je text editor i kompajler. Moja preporuka je da si skinete Dev-Cpp kompajler sa ugrađenim text editorom. Odličan je za učenje programiranja, malo zauzima, nije zahtjevan, jednostavan je za korištenje, a i ja ga koristim, pa mi je lakše objašnjavati.
Nakon sto instalirate Dev-Cpp, pokrenite ga. Da biste došli da dijela gdje kucate kod programa, kliknite na File -> New Project -> Console application, kliknite na C++ projekt i unesite neko ime za vaš projekta (ne smije biti razmak u imenu).
Po obićaju, i ovu školu otvaramo sa programom „Hello World“ . Ukucajte sljedeći kod:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World!\n";
system("pause" );
return 0;
}
Nakon što ste ukucalio kod, kliknite na opciju Run->Run ili samo F9. Za koji trenutak će vam se pojaviti konzolni prozor sa pozdravom svijetu, odnosno Hello World!
Ovo je sada kraj prvog dijela škole. Zasada nema potrebe da objašnjavam naredbe koje smo unijeli. To ću uraditi u idućem dijelu škole.
Do idućeg dijela.
Dev-Cpp
Dobrodošli u školu programiranja, to jeste u školu C++-a. Sigurno se pitate zašto C++, kada nije najmoderniji jezik? Kada ima i boljih jezika? Odgovor je jednostavan. Ako stvarno želite naučiti programirati i istinski se zvati programerom, onda je C++ obavezno gradivo. Kada znate C++, ona vam nije nikakav problem u kratkom roku, a tržište to uglavnom i traži, da se prebacite sa High-level na Low-level , sa programiranja aplikativnog softvera na neko sistemsko ili hibridno programiranje.
C++ nije ni lagan ni jednostavan programski jezik. Zbog njega se provode mnoge besane noći i potrši gomila živaca dok ne shvatite neku krucijalnu stvar. Postoje mnogi jednostavniji programski jezici, na primjer Visual Basic, koji su lakši za naučiti, ali su zato funkcionalno znatno ograničeniji, dok C++ podsjeća na švicarski nožić (a.k.a. čakija), jer je u njemu moguće uraditi gotovo sve, od strukturnog (čisto proceduralnog) programa, pa do objektno orijentisanog programa, a i sve između toga, baš kao i za svaku platformu i namjenu.
Većina knjiga i tutorijala krene sa pisanjem koda prerano. Prije nego sto uspijete shvatiti šta je to program i što se sve dešava na putu od srca računara do GUI aplikacije koju imate pred sobom, i obratno. Program bismo najlakše mogli predstaviti kao neki medij koji korisniku pomaže da uz pomoć računara dođe do rješenja svog problema. Da bi korisnik moga ovo uraditi, zadatak je na programeru da računaru „kaže“ što i kako raditi, odnosno da isprogramira računar kako da reagira na razne podatke koje korisnik unosi.
A podatak je upravo ono što programer mora imati u glavi pri kodiranju programa i citav proces kodiranja će se uvijek vrtiti oko rada sa podacima. Od unosa podatka od strane korisnika pa do obrade tog podatka od strane računara dug je i slojevit put. Korisnik podatke, odnosno informacije šalje računaru u onom obliku kojeg računar ne razumije (riječi, brojevi, znakovi) i ti podaci se moraju transformisati u jedinice i nule da bi ih računar mogao „razumjeti“. Nivo na kom se nalazi podatak kod korisnika se naziva viskoi nivo, dok niskim nivoom nazivamo nivo računara.
Programeri su nekada morali raditi na ovom najnižem nivou, direktno unosići jedinice i nule pomoću kojih su programirali računar, odnosno premještli skolopke puštajući ili zaustavljejući dotok struje. Jer, jedinica i nula nije nista drugo nego protok struje – ili ga ima ili ga nema. Kasnije nastaje asemblerski jezik, asembler, koji je bio prvi pokušaj da se programeru olakša dosadno i naporno programiranje. Asembler se i dan danas koristi. Koriste ga programeri hardvera koji putam mnemonika, ustaljenih skraćenica, programiraju najniže slojeve računara.
Dolaskom jezika višeg nivo počinje programiranje kakvo danas znamo. Čak i ovi jezici visokog nivoa ili jezici treće generacije, prolaze stalne modifikacije u cilju stvaranja što jednostavnijeg programskog jezika. Danas proces programiranja, odnosno, proces pretvaranja naredbi razumljive čovjeku u nardbe razumljive računaru vrši preko kompailera ili preko interpretera. Ova dva pojma ste vjerovatno već čuli. Međutim, predpostavljam da većina vas ne zna koja je razlika između njih.
Interpreterom se svakodnevno susreću korisnici Linux shella. On nije nista više nego interpreter koji prevodi linijiu po liniju u kod razumljiv računaru. Njegova prednost je u tome sto u svakom momentu programer tačno zna u kojem se redu skriva greška. Negativna strana interpretera je u tome sto se preogram može izvršiti samo na računaru na kojem ima instaliran taj interpreter.
S druge strane, kompajler ima veći broj međukoraka pri kompajliranju. Zbog tih međukoraka je znatno otežano pronalađenje grešaka unutar koda, ali se zato, kao rezltat truda, dobije izvršna datoteka koja se ne mora kompajlirati pri svakom pokretanju, koja se mnogo brže izvršava. Naime, dobije se .exe datoteka, koju svakodnevno pokrecemo, a za koju većina ni nezna šsta je to zapravo. .exe file zapravo nije ništa više nego skup jedinica i nula, odnosno binarni fajl ( eng. binary file). Prednost ovakvog prevođenja naredbi jeste u tome što se dobijeni program lakse i brže izvršava, sto se lagano i brzo prenosi sa mašine na mašinu, bez ikakve potrebe za kompajlerom da bi se taj program izvršavo na datoj mašini.
Dug i kompleksan put je od programskog koda pa do stvaranja izvršnong fajla. Na našu sreću, sve međukorake izvršava kompajler. Naš posao, odnosno posao programera, jeste „samo“ da napise kod programa i da „kaže“ kompajleru koje biblioteke da ukljuci u program. Bibilioteka nije nista drugo nego skup ćesto koristenih funkcija, naredbi. Da nebi svaki put kada nam zatreba neka trivijalna stvar pisali kod nanovo, on se jednom napiše, stavi u biblioteku i nakon toga ga možemo koristiti koliko god puta nam zatreba. Jedino sto je potrebno predhodno uraditi jeste ukljućiti datu biblioteku u projekat. Na taj naćin se štedi i vrijeme i novac, koji sada mogu biti usmjereni prema samo razvoju programa. Biblioteke se takodjer nazivaju i header fajlovi.
Znaći, preogramer napise kod u višem programskom jeziku, ukljući sve neophodne biblioteke, i pokrene kompajler. Tada kompajler preuyima posao od programera, napisani kod pretvara u fajl sa ekstenziom .cpp, a nakon toga iz njega stvara fajl sa ekstenzijom .obj. Ovaj korak se naziva kompajliranjem, a rezultat toga jeste .obj fajl. Nakon ovog koraka, kompajler poziva linkere, cija je uloga vezanja kreiranih .obj fajlova sa bibliotekama u jedan .exe fajl. Svaki programer bi treba ovaj proces da ima usađeno u glavi, jer je bez toga nemoguće pronaći grešku.
U samom uvodu sam spomenuo strukturno i objektno programiranje. Iako još nisam pokazao kako kod programa izgleda, pokušat ću vam objasniti šta ti pojmovi znače. Da biste shvatili razliku, potrebno je samo da znate da programiranje predstavlja rešavanjem problema pomoću seta naredbi. Kao u u stvarnom životu, preobleme pri rešavanju razlažemo na manje, jednostavnije probleme i njih rešavamo. Kada ih rešimop, imamo rešen glavni problem.
Ovaj način programiranja se koristio sve do kraja 80-tih godina, kada su prorameri shvatili da im nesšto nedostaje, jer se često dešavalo da su ponovo morali izmišljati nova rešenja za stare probleme. Drugim riječima, izmišljali su toplu vodu. Tada je nastalo objektno programiranje. Ono je zasnovani na ideju da se napravi jedan „templejt“ koji će sadržati sve osnovne osobine jednog problema. Njega ćemo kasnije moći jednostavno ubaciti u program kao modul. Slicno kao sto je stvar sa bibliotekama. Zamislite si da vam crken sijalica i vi uzmete da izmišljate novu, da je konstruišete i pravite, umjesto da samo uzmete neku gotovu i zamjenite ih.
Iako C++ podržava objektno orijentisano programiranje, ja u ovoj maloj školi ne planiram da se toga dotakenm. Naučiću vas strukturnom programiranju. Da biste moglu pratiti ovu školu, neophodan vam je text editor i kompajler. Moja preporuka je da si skinete Dev-Cpp kompajler sa ugrađenim text editorom. Odličan je za učenje programiranja, malo zauzima, nije zahtjevan, jednostavan je za korištenje, a i ja ga koristim, pa mi je lakše objašnjavati.
Nakon sto instalirate Dev-Cpp, pokrenite ga. Da biste došli da dijela gdje kucate kod programa, kliknite na File -> New Project -> Console application, kliknite na C++ projekt i unesite neko ime za vaš projekta (ne smije biti razmak u imenu).
Po obićaju, i ovu školu otvaramo sa programom „Hello World“ . Ukucajte sljedeći kod:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World!\n";
system("pause" );
return 0;
}
Nakon što ste ukucalio kod, kliknite na opciju Run->Run ili samo F9. Za koji trenutak će vam se pojaviti konzolni prozor sa pozdravom svijetu, odnosno Hello World!
Ovo je sada kraj prvog dijela škole. Zasada nema potrebe da objašnjavam naredbe koje smo unijeli. To ću uraditi u idućem dijelu škole.
Do idućeg dijela.
Dev-Cpp



j/k