Škola C++ programskog jezika.
Drugi dio.
Prvi dio škole je bio kao neki mali uvod. Pomoću njega ste naučili neke osnovne stvari uvez programskih jezika, razliku između kompajlera i interpretera. Također ste mogli naučiti kako ide proces pretvaranja programskog koda u gotovu izvršnu datoteku i kompajlirali smo naš prvi program, "Hello World".
Prošli put smo se susreli sa kodom programa "Hello World". Pošto mi je za daljnje objašnjavanje potreban kod, ponovo ću ga ispisati.
Prilog 1:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World!\n";
system("pause" );
return 0;
}
Svaki put kada ubuduće naiđete na rijeć "Prilog X", gdje X predstavlja neki broj, to će biti zamjena za odgovarajući kod. Npr. Prilog 1 će se odnositi na predhodno ispisani kod.
Gledajući Prilog 1, možete primjetiti da se on, više-manje, sastoji iz 3 cjeline. To se uglavnom odnosi i na sve programe pisane C++ programskim jezikom. Te cjeline su: include dio, namespace dio i glavna funkcija int main.
Svaki C++ kod pocinje sa oznakom #include. Taj kod govori predprocesoru da, u našem slucaju, fajli između <> uključi u program. #include se najčešće koristi za uključivanje biblioteka u naš projekat. Kako on radi? Kada stisnemo dugme da kompajliramo program, prije kompajlera se pokreće predprocesor. On "prođe" kroz sve .cpp fajlove koji su vezani za naš projekat u potrazi za # znakom. Taj karakter govori predprocesoru da se naredne komande, sve do kraja reda, odnose na njega. Svrha predprocesora jeste da tekst pripremi za kompajler, da ovaj može nesmetano da obavlja svoj "posao". Predprocesorske komande imaju zajednički naziv, a to je "pragma". Nakon sto predprocesor obavi svoj dio posla, na scenu stupa kompajler koji ponovo prelazi tekst. Pošto to nije dio današnje teme, neću dalje ulaziti u objašnjavanje šta kompajler radi da bismo dobili izvršni fajl.
Kao što sam i naveo, #include se koristi, između ostalog, i za uključivanje standardnih ili naših header fajlova. Za one koji su se tek priključili školi, Header fajl je ustvari drugi naziv za biblioteka, za daljnje informacije pogledajte prvi dio škole. Ukoliko se header fajl nalazi u standardnom direktorijumu za headere, onda je potrebno samo naziv headera staviti izmeću < i >. U našem slučaju iostream ili iostream.h. I jedna i druga varijanta je validna. Svaki današnji kompajler prepoznaje datoteke i bez navođenja ekstenzije .h. Ukoliko header fajl nije u standardnom direktorijumu, potrebno je navesti punu putanju da nama neophodnog headera. Npr..#include C:\Biblioteke\Moje_Biblioteke\iostream.h
Zašto su nam potrebne biblioteke? Kao što sam u prvom dijelu škole napisao. Da bismo ubrzali rad, smanjili troškove pri razvoju aplikacija, ali i sačuvali naše živce i zdravlje, izmišljen je pojam biblioteke ili Header fajl. Da ne bismo morali u svakom našem programu definisati neke trivijalne funkcija, njih ćemo jednom definisati i ubaciti u biblioteku. Od tada, u svakom projektu u kojem nam zatreba ta funkcija, uključimo biblioteku i koristimo funkciju bez ponovnog definisanja iste.
Iostream je jedna od osnovnih biblioteka. Puni naziv joj je input/output stream (ulazno-izlazni niz). Kada nebi uključili navedenu biblioteku u nas projekat, kompajler nebi znao šta da uradi sa funkcijom "cout" i izbacio bi nam grešku pri pokušaju kompajliranja. Puni naziv za funkciju "cout" jeste console out ili, kako je rijetki nazivaju, console output. Kao sto joj puni naziv kaže, ona služi da nam nešto "izbaci" na konzolni interfejs.
Sljedeći dio programa jeste namespace, tj. imenski prostor. Po mom mišljenju, prerano je da objašnjavam njegovo značenje. Dovoljno je da znate da nam on pomaže da ne moramo stalno pisati std ispred funkcija kao sto je cout. Ako je cout ime funkcije, objekta ili klase, onda je njegov namespace neka vrsta prezimena. Npr. Kada kompajleru kažemo da želimo koristiti namespace, onda ne moramo kod svakog ispisa na ekran pisati
std::cout<<"Hello World!";
nego samo pišemo standarno
cout<<"Hello World!";
jer kompajler zna da je objekat cout dio std-a.
Treći dio našeg koda sačinjava glavna funkcija main u kojoj se sve događa, odnosno posao kompajlera poćinje prvom linijom main funkcije a završava se zadnjom. U jednom projektu može postojati samo jedna main funkcija. Ovdje su za vas zanimljive još dvije stvari: vitičasta zagrada i int. Svaka funkcija ili blok koda, u ovom slućaju main, mora početi otvorenom vitičastom zagradom ({), a završava zatvorenom vitičastom zagradom (}). Ove zagrade predstavljaju domen djelovanja funkcije. Sve što se nalazi izvan tih zagrada, neće se izvršavati stom funkciom, odnosno, one govore kompajler dogled a kompalira kod. Ovo nije ćitav opis domena funkcije, ali detaljnije ću opisati tek u dijlu u kojem budem detaljnije govorio o funkcijama.
Donedavno se isprad kljućne rijeci "main" moglo i stavljati void umjesto int. Sce donedavno su programeri i praktikovali stavljanje void ispred main-a, umjesto int. Ćak ste to mogli pročitati i u knjigama. Ali, na svu sreću, ANSI standard je tome stao u kaj i izričito je rečeno da vodi ne može biti vrsta povratne vrijednosti glavne funkcije. Međutim, neki kompajleri idalje podržavaju tu vrstui pisanja iako to nije dobra praksa. Naravno, da bi sprijćio buduće grsške, probleme i vama i korisnicima vaših aplikacija, od poćetka ću vas učiti da pišete int kao povratnu vrijednost main funkcije.
Vrste podataka
U prvom dijelu škole sam naveo da se posa programera svodi na baratanje raznim vrstama podataka. Koliko je programer uspješan, zavisi od toga kako njegov program barata podacima raznih vrsta. Kompajler ne može utvrditi grešku u programu, ako je kod ispravno napisan. Kompajle može samo da javi sintaxne greške, drugaćije rečeno "gramatičke greše" programskog jezika. On nam ne može javiti grešku ako je ona semantskog tipa, odnosno, logićka greška.
Kada kažemo podatak, mi ustvari mislimo na neku informaciju koju želimo prosljediti računaru. To može da bude neka konstanta, kao npr. broj Pi, ali može i da bude neka promjenjiva, odnosno varijabla. Većina podataka skojim programer radi su ustvari varijable i njihova vrijednost zavisi od korisnićkog unosa. To znaći da su konstante stalne vrijednosti, vrijednosti već unaprijed definisane po nekom principu zakonu ili po želji programera. To je vrsta podataka koja se nakon kompajliranja ne može promjeniti i ostaje stalna,a varijable su svi ostali podaci skojima korisnik dolazi direktno ili indirektno u kontakt.
Varijable se deklarišu na sljedeći način:
Tip ImeVarijable
gdje tip može biti bilo koji tip, vrsta, podatka, poznat kompajleru, a ImeVarijable je neko naše proizvoljno ime za tu varijablu. Konstante se deklarišu na sljedeći način:
const Tip ImeVarijable=vrijednost
Kao što vidite kod konstante moramo napisati ključnu riječ const i u istom redu joj moramo dodjeliti neku vrijednost (inicijalizirati je), koja se poslje ne može mijenjati bez mijenjanja koda. Npr.:
const int mojaVarijabla=20;
Sada sepitate šsta to uopšte znaći deklaracija i inicijalizacija. Deklaracija nije ništa drugo nego "predstavljanje" nekog podatka kompajleru. Mi ustvari kompajleru kažemo: "Ovo je nova informacija, ona je tog i tog tipa, tako se naaziva i toliko mjesta u memoriji zauzima." Inicijalizacija predstavlja dodjeljivanje, davanje, vrijednosti nekom podatku. Bitno je da zapamtite da se varijable ne moraju odma inicijalizirati, dok konstante moraju. Zlatno pravilo je da se u C++-u svaki podatak mora deklarisati prije inicijalizacije ili nekog drugog naćina korištenja. Ipak je logično da kompajler mora znati o čemu se radi, prije nego što može da koristi taj podatak.
Sada ću vam ispisati neki mali programčić, da vidite kako ovo sve gore ispisana teorija izgleda u praksi.
Prilog 2:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
const int brojSati=24;
const float Pi=3.14159;
a=15;
b=9;
c=a*b;
cout<<"Proizvod a*b je: "<<c<<endl;
c=c+brojSati;
cout<<"Zbir trenutne vrijednost c i ";
cout<<"konstante brojSati je: "<<c<<"\n";
cout<<"Vrijednost konstante Pi je: "<<Pi<<endl;
cout<<"________________________________________\n";
system("pause" );
return 0;
}
Da objasnim šta smo mi to uradili u drugom prilogu. Iako kod možda liči malo komplikovan, sve što smo uradili je veoma jednostavno. Nemam šta da objašnjavam sve do reda "int main ()", tako da ću krenuti od tog dijela. Prvo smo definisali glavno funkciju main. Ispred main stoji int. Int je skraćenica integer, sto predstavlja cjelobrojnu vrijednost podatka. To znači da će naša glavna funkcija nakon završetka obavljanja funkcije vratiti cjelobrojnu vrijednost. Nakon main idu zagrade ( i ). Ukoliko želimo da programu proslijedimo neke varijable još pri samom pokretanju, onda ćemo te varijable navesti između tih zagrada. Prelazimo na sljedeći red. zagrade sam već objasnio pa ću ih preskočiti. Sljedeći red je "int a,b,c;". Ovdje smo 3 varijable tipa int, odnosno. Maloprije sam djelimično objasnio tip int. Kao što sam rekao to je cjelobrojni tip podataka i na 32-bitnoj platformi on može da predstavlja broj od -2.147.483.647 do +2.147.483.647. On nikada ne može da bude broj sa decimalnim mjestima i na 32-bitnim platformama uvijek zauzima 4 bajta.
Kao sto u ovom redu vidite, varijable se ne moraju odmah inicijalizovati pa smo to i preskočili. Sljedeća dva reda predstavljaju deklaraciju i inicijalizaciju dvije konstante, brojSati i Pi. Od ove dvije, nama je trenutno zanimljiva inicijalizacija konstante Pi. Kao tip ove konstante smo naveli "float", a ono predstavlja decimalni broj. Pošto smo izabrali float, ograničili smo sebe na 5 decimalnih mjesta. Da smo i kod ove konstante izabrali tip int, kompajler bi konstantu Pi posmatrao kao cjelobrojnu vrijednost i na ekran bi nam ispisao samo broj 3.
U narednim linijama koda inicijalizujemo varijable a i b, odnosno, dodjeljujemo im određene vrijednosti, kompajleru kažemo da ih pomnoži i da dobijenu vrijednost dodjeli varijabli c. U sljedećem redu kažemo kompajleru, pomoću cout naredbe, da ispiše određeni tekst na ekran kao i vrijednost varijable c. Sljedeći red je malo neobičan. Glasi ovako "c=c+brojSati". Matematički gledano, ovaj red ima smisla samo ako konstanta "brojSati" ima vrijednost 0, odnosno c=c+0. Međutim, u programiranju ovaj red ima smisla jer znak = u matematici i programskim jezicima nema isto značenje. U matematici to je znak usporedbe, dok je u programskim jezicima uglavnom znak dodjele, davanja vrijednosti nekoj varijabli. Matematička jednakost (=) se u C++-u označava sa dva znaka =, odnosno ==. Znači ovaj red bi glasio ovako: "Uzmi vrijednost varijable c i konstante brojSati, saberi ih i upisi vrijednost u memorijsku lokaciju varijable c".
Naredna dva reda predstavljaju ispis na ekran. Nakon toga slijedi naredba system("pause" );. Ova naredba govori kompajleru da pauzira program. Program će se nastaviti izvršavati tek nakon što korisnik pritisne neku tipku na tastaturi. Program bi se mogao izvršavati i bez ove naredbe, međutim, prozor bi se tako brzo zatvorio da nebismo vidjeli rezultate našeg programa, jer se rezultati ispisuju na ekran. Sljedeća naredba je naredba return. Kada sam objašnjavao main funkciju, spominjao sam povratnu vrijednost. Return funkcija je ta koja tu vrijednost vraća. Kod main funkcije kao ta vrijednost se uglavnom stavlja 0, međutim, kod drugih funkcija, zavisno od njihove svrhe, stavljaju se neke varijable ili konstante. Ukoliko je funkcija void tipa, onda se return stavlja isključivo da bi kompajler znao da je to kraj funkcije, jer je void predstavlja funkcije koje ne vraćaju neku vrijednost. Jedna funkcija može maksimalno jednu vrijednost vraćati.
Sada nakon što sam globalno objasnio šta naš program rad, slijedi objašnjenje cout funkcije i njenu sintaksu. Znači, cout je funkcija koja ispisuje nešto na ekran, odnosno, na konzolni prozor. Prvo ispišemo ključnu riječ cout. Nakon nje ide dvostruki znak "manje" (<< ). Sada, zavisno od toga šta želimo ispisati na ekran, zavisi kako ćemo nastaviti. Ukoliko želimo da ispišemo neki tekst, onda taj tekst stavljamo pod navodnike ("tekst" ). Međutim, ukoliko želimo da ispišemo vrijednost neke varijable, onda ćemo staviti samo željenu varijablu, bez navodnika. Kao što možete vidjeti u drugom prilogu, moguće je i kombinovati ispis na ekran. Ali svaki put kada mijenjamo između teksta i varijable, moramo staviti dvostruko "manje". Također, pri ispisu više varijabli, svaku varijablu moramo odvojiti sa <<, da bi kompajler znao da se radi o više različitih varijabli.
Ukoliko ste detaljno pročitali prilog 2 i kompajlirali ga i provjerili rezultate, sigurno ste primijetili da kod cout funkcije pišem "\n" ili "endl", ali da ih ne vidite u programu. To je zato što je to za čovjeka djelimično nevidljiv karakter. I jedno i drugi ima isto značenje i istu ulogu, tako da ih možete ravnopravno koristiti, mada ja preferiram "\n". U ovom prilogu sam koristio oboje samo da pokažem da su to ustvari jedna te ista stvar. Ali šta oni rade? Kada program dođe do jedne od te dvije naredbe, on će preći u sljedeći red pri ispisu na ekran. To je jedna od naredbi pomoću koje možemo lakše uređivati ispis željenog teksta, rezultata ili vrijednosti varijabli.
To bi bio kraj drugog dijela škole C++-a. U ovom dijelu ste naučili, odnosno, mogli ste naučiti šta su to varijable i konstante, kako se deklarišu i inicijalizuju. Vidjeli ste kako se koriste neke od osnovnih matematičkih operacija i naučili ste korištenje cout funkcije. Uzmite si vremena, pročitajte ovaj tekst ako treba i dva, pa i tri puta, jer je ovo, kao i prvi dio, temelj za buduće gradivo, i ukoliko ovo niste savladali i ne znate u snu, teško da ćete biti i ispod prosječan programer.
I za kraj, evo jedan mali zadatak, pa provjerite svoje znanje. Nemojte gledati tuđe postove, naći nekoga drugo ko je uradio i kopirati njegov rezultat. Nećete tako mene slagati, već samog sebe. Ja nemam ništa od toga da li ste vi to sami riješili ili ste od nekog drugog prepisali. Neću vas ni ocjenjivati niti išta slično. Ovo je samo da sami sebe provjerite.
Zadaci:
Bez upotrebe kompajlera izračunajte vrijednost varijable "c".
int a=15,c;
float b=7.47851;
c=a+b;
Vidimo se u idućem dijelu školi, koji bi trebao biti gotov za 2 do 3 dana. Ostanite mi vrijedni.
Philosopher
Drugi dio.
Prvi dio škole je bio kao neki mali uvod. Pomoću njega ste naučili neke osnovne stvari uvez programskih jezika, razliku između kompajlera i interpretera. Također ste mogli naučiti kako ide proces pretvaranja programskog koda u gotovu izvršnu datoteku i kompajlirali smo naš prvi program, "Hello World".
Prošli put smo se susreli sa kodom programa "Hello World". Pošto mi je za daljnje objašnjavanje potreban kod, ponovo ću ga ispisati.
Prilog 1:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World!\n";
system("pause" );
return 0;
}
Svaki put kada ubuduće naiđete na rijeć "Prilog X", gdje X predstavlja neki broj, to će biti zamjena za odgovarajući kod. Npr. Prilog 1 će se odnositi na predhodno ispisani kod.
Gledajući Prilog 1, možete primjetiti da se on, više-manje, sastoji iz 3 cjeline. To se uglavnom odnosi i na sve programe pisane C++ programskim jezikom. Te cjeline su: include dio, namespace dio i glavna funkcija int main.
Svaki C++ kod pocinje sa oznakom #include. Taj kod govori predprocesoru da, u našem slucaju, fajli između <> uključi u program. #include se najčešće koristi za uključivanje biblioteka u naš projekat. Kako on radi? Kada stisnemo dugme da kompajliramo program, prije kompajlera se pokreće predprocesor. On "prođe" kroz sve .cpp fajlove koji su vezani za naš projekat u potrazi za # znakom. Taj karakter govori predprocesoru da se naredne komande, sve do kraja reda, odnose na njega. Svrha predprocesora jeste da tekst pripremi za kompajler, da ovaj može nesmetano da obavlja svoj "posao". Predprocesorske komande imaju zajednički naziv, a to je "pragma". Nakon sto predprocesor obavi svoj dio posla, na scenu stupa kompajler koji ponovo prelazi tekst. Pošto to nije dio današnje teme, neću dalje ulaziti u objašnjavanje šta kompajler radi da bismo dobili izvršni fajl.
Kao što sam i naveo, #include se koristi, između ostalog, i za uključivanje standardnih ili naših header fajlova. Za one koji su se tek priključili školi, Header fajl je ustvari drugi naziv za biblioteka, za daljnje informacije pogledajte prvi dio škole. Ukoliko se header fajl nalazi u standardnom direktorijumu za headere, onda je potrebno samo naziv headera staviti izmeću < i >. U našem slučaju iostream ili iostream.h. I jedna i druga varijanta je validna. Svaki današnji kompajler prepoznaje datoteke i bez navođenja ekstenzije .h. Ukoliko header fajl nije u standardnom direktorijumu, potrebno je navesti punu putanju da nama neophodnog headera. Npr..#include C:\Biblioteke\Moje_Biblioteke\iostream.h
Zašto su nam potrebne biblioteke? Kao što sam u prvom dijelu škole napisao. Da bismo ubrzali rad, smanjili troškove pri razvoju aplikacija, ali i sačuvali naše živce i zdravlje, izmišljen je pojam biblioteke ili Header fajl. Da ne bismo morali u svakom našem programu definisati neke trivijalne funkcija, njih ćemo jednom definisati i ubaciti u biblioteku. Od tada, u svakom projektu u kojem nam zatreba ta funkcija, uključimo biblioteku i koristimo funkciju bez ponovnog definisanja iste.
Iostream je jedna od osnovnih biblioteka. Puni naziv joj je input/output stream (ulazno-izlazni niz). Kada nebi uključili navedenu biblioteku u nas projekat, kompajler nebi znao šta da uradi sa funkcijom "cout" i izbacio bi nam grešku pri pokušaju kompajliranja. Puni naziv za funkciju "cout" jeste console out ili, kako je rijetki nazivaju, console output. Kao sto joj puni naziv kaže, ona služi da nam nešto "izbaci" na konzolni interfejs.
Sljedeći dio programa jeste namespace, tj. imenski prostor. Po mom mišljenju, prerano je da objašnjavam njegovo značenje. Dovoljno je da znate da nam on pomaže da ne moramo stalno pisati std ispred funkcija kao sto je cout. Ako je cout ime funkcije, objekta ili klase, onda je njegov namespace neka vrsta prezimena. Npr. Kada kompajleru kažemo da želimo koristiti namespace, onda ne moramo kod svakog ispisa na ekran pisati
std::cout<<"Hello World!";
nego samo pišemo standarno
cout<<"Hello World!";
jer kompajler zna da je objekat cout dio std-a.
Treći dio našeg koda sačinjava glavna funkcija main u kojoj se sve događa, odnosno posao kompajlera poćinje prvom linijom main funkcije a završava se zadnjom. U jednom projektu može postojati samo jedna main funkcija. Ovdje su za vas zanimljive još dvije stvari: vitičasta zagrada i int. Svaka funkcija ili blok koda, u ovom slućaju main, mora početi otvorenom vitičastom zagradom ({), a završava zatvorenom vitičastom zagradom (}). Ove zagrade predstavljaju domen djelovanja funkcije. Sve što se nalazi izvan tih zagrada, neće se izvršavati stom funkciom, odnosno, one govore kompajler dogled a kompalira kod. Ovo nije ćitav opis domena funkcije, ali detaljnije ću opisati tek u dijlu u kojem budem detaljnije govorio o funkcijama.
Donedavno se isprad kljućne rijeci "main" moglo i stavljati void umjesto int. Sce donedavno su programeri i praktikovali stavljanje void ispred main-a, umjesto int. Ćak ste to mogli pročitati i u knjigama. Ali, na svu sreću, ANSI standard je tome stao u kaj i izričito je rečeno da vodi ne može biti vrsta povratne vrijednosti glavne funkcije. Međutim, neki kompajleri idalje podržavaju tu vrstui pisanja iako to nije dobra praksa. Naravno, da bi sprijćio buduće grsške, probleme i vama i korisnicima vaših aplikacija, od poćetka ću vas učiti da pišete int kao povratnu vrijednost main funkcije.
Vrste podataka
U prvom dijelu škole sam naveo da se posa programera svodi na baratanje raznim vrstama podataka. Koliko je programer uspješan, zavisi od toga kako njegov program barata podacima raznih vrsta. Kompajler ne može utvrditi grešku u programu, ako je kod ispravno napisan. Kompajle može samo da javi sintaxne greške, drugaćije rečeno "gramatičke greše" programskog jezika. On nam ne može javiti grešku ako je ona semantskog tipa, odnosno, logićka greška.
Kada kažemo podatak, mi ustvari mislimo na neku informaciju koju želimo prosljediti računaru. To može da bude neka konstanta, kao npr. broj Pi, ali može i da bude neka promjenjiva, odnosno varijabla. Većina podataka skojim programer radi su ustvari varijable i njihova vrijednost zavisi od korisnićkog unosa. To znaći da su konstante stalne vrijednosti, vrijednosti već unaprijed definisane po nekom principu zakonu ili po želji programera. To je vrsta podataka koja se nakon kompajliranja ne može promjeniti i ostaje stalna,a varijable su svi ostali podaci skojima korisnik dolazi direktno ili indirektno u kontakt.
Varijable se deklarišu na sljedeći način:
Tip ImeVarijable
gdje tip može biti bilo koji tip, vrsta, podatka, poznat kompajleru, a ImeVarijable je neko naše proizvoljno ime za tu varijablu. Konstante se deklarišu na sljedeći način:
const Tip ImeVarijable=vrijednost
Kao što vidite kod konstante moramo napisati ključnu riječ const i u istom redu joj moramo dodjeliti neku vrijednost (inicijalizirati je), koja se poslje ne može mijenjati bez mijenjanja koda. Npr.:
const int mojaVarijabla=20;
Sada sepitate šsta to uopšte znaći deklaracija i inicijalizacija. Deklaracija nije ništa drugo nego "predstavljanje" nekog podatka kompajleru. Mi ustvari kompajleru kažemo: "Ovo je nova informacija, ona je tog i tog tipa, tako se naaziva i toliko mjesta u memoriji zauzima." Inicijalizacija predstavlja dodjeljivanje, davanje, vrijednosti nekom podatku. Bitno je da zapamtite da se varijable ne moraju odma inicijalizirati, dok konstante moraju. Zlatno pravilo je da se u C++-u svaki podatak mora deklarisati prije inicijalizacije ili nekog drugog naćina korištenja. Ipak je logično da kompajler mora znati o čemu se radi, prije nego što može da koristi taj podatak.
Sada ću vam ispisati neki mali programčić, da vidite kako ovo sve gore ispisana teorija izgleda u praksi.
Prilog 2:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
const int brojSati=24;
const float Pi=3.14159;
a=15;
b=9;
c=a*b;
cout<<"Proizvod a*b je: "<<c<<endl;
c=c+brojSati;
cout<<"Zbir trenutne vrijednost c i ";
cout<<"konstante brojSati je: "<<c<<"\n";
cout<<"Vrijednost konstante Pi je: "<<Pi<<endl;
cout<<"________________________________________\n";
system("pause" );
return 0;
}
Da objasnim šta smo mi to uradili u drugom prilogu. Iako kod možda liči malo komplikovan, sve što smo uradili je veoma jednostavno. Nemam šta da objašnjavam sve do reda "int main ()", tako da ću krenuti od tog dijela. Prvo smo definisali glavno funkciju main. Ispred main stoji int. Int je skraćenica integer, sto predstavlja cjelobrojnu vrijednost podatka. To znači da će naša glavna funkcija nakon završetka obavljanja funkcije vratiti cjelobrojnu vrijednost. Nakon main idu zagrade ( i ). Ukoliko želimo da programu proslijedimo neke varijable još pri samom pokretanju, onda ćemo te varijable navesti između tih zagrada. Prelazimo na sljedeći red. zagrade sam već objasnio pa ću ih preskočiti. Sljedeći red je "int a,b,c;". Ovdje smo 3 varijable tipa int, odnosno. Maloprije sam djelimično objasnio tip int. Kao što sam rekao to je cjelobrojni tip podataka i na 32-bitnoj platformi on može da predstavlja broj od -2.147.483.647 do +2.147.483.647. On nikada ne može da bude broj sa decimalnim mjestima i na 32-bitnim platformama uvijek zauzima 4 bajta.
Kao sto u ovom redu vidite, varijable se ne moraju odmah inicijalizovati pa smo to i preskočili. Sljedeća dva reda predstavljaju deklaraciju i inicijalizaciju dvije konstante, brojSati i Pi. Od ove dvije, nama je trenutno zanimljiva inicijalizacija konstante Pi. Kao tip ove konstante smo naveli "float", a ono predstavlja decimalni broj. Pošto smo izabrali float, ograničili smo sebe na 5 decimalnih mjesta. Da smo i kod ove konstante izabrali tip int, kompajler bi konstantu Pi posmatrao kao cjelobrojnu vrijednost i na ekran bi nam ispisao samo broj 3.
U narednim linijama koda inicijalizujemo varijable a i b, odnosno, dodjeljujemo im određene vrijednosti, kompajleru kažemo da ih pomnoži i da dobijenu vrijednost dodjeli varijabli c. U sljedećem redu kažemo kompajleru, pomoću cout naredbe, da ispiše određeni tekst na ekran kao i vrijednost varijable c. Sljedeći red je malo neobičan. Glasi ovako "c=c+brojSati". Matematički gledano, ovaj red ima smisla samo ako konstanta "brojSati" ima vrijednost 0, odnosno c=c+0. Međutim, u programiranju ovaj red ima smisla jer znak = u matematici i programskim jezicima nema isto značenje. U matematici to je znak usporedbe, dok je u programskim jezicima uglavnom znak dodjele, davanja vrijednosti nekoj varijabli. Matematička jednakost (=) se u C++-u označava sa dva znaka =, odnosno ==. Znači ovaj red bi glasio ovako: "Uzmi vrijednost varijable c i konstante brojSati, saberi ih i upisi vrijednost u memorijsku lokaciju varijable c".
Naredna dva reda predstavljaju ispis na ekran. Nakon toga slijedi naredba system("pause" );. Ova naredba govori kompajleru da pauzira program. Program će se nastaviti izvršavati tek nakon što korisnik pritisne neku tipku na tastaturi. Program bi se mogao izvršavati i bez ove naredbe, međutim, prozor bi se tako brzo zatvorio da nebismo vidjeli rezultate našeg programa, jer se rezultati ispisuju na ekran. Sljedeća naredba je naredba return. Kada sam objašnjavao main funkciju, spominjao sam povratnu vrijednost. Return funkcija je ta koja tu vrijednost vraća. Kod main funkcije kao ta vrijednost se uglavnom stavlja 0, međutim, kod drugih funkcija, zavisno od njihove svrhe, stavljaju se neke varijable ili konstante. Ukoliko je funkcija void tipa, onda se return stavlja isključivo da bi kompajler znao da je to kraj funkcije, jer je void predstavlja funkcije koje ne vraćaju neku vrijednost. Jedna funkcija može maksimalno jednu vrijednost vraćati.
Sada nakon što sam globalno objasnio šta naš program rad, slijedi objašnjenje cout funkcije i njenu sintaksu. Znači, cout je funkcija koja ispisuje nešto na ekran, odnosno, na konzolni prozor. Prvo ispišemo ključnu riječ cout. Nakon nje ide dvostruki znak "manje" (<< ). Sada, zavisno od toga šta želimo ispisati na ekran, zavisi kako ćemo nastaviti. Ukoliko želimo da ispišemo neki tekst, onda taj tekst stavljamo pod navodnike ("tekst" ). Međutim, ukoliko želimo da ispišemo vrijednost neke varijable, onda ćemo staviti samo željenu varijablu, bez navodnika. Kao što možete vidjeti u drugom prilogu, moguće je i kombinovati ispis na ekran. Ali svaki put kada mijenjamo između teksta i varijable, moramo staviti dvostruko "manje". Također, pri ispisu više varijabli, svaku varijablu moramo odvojiti sa <<, da bi kompajler znao da se radi o više različitih varijabli.
Ukoliko ste detaljno pročitali prilog 2 i kompajlirali ga i provjerili rezultate, sigurno ste primijetili da kod cout funkcije pišem "\n" ili "endl", ali da ih ne vidite u programu. To je zato što je to za čovjeka djelimično nevidljiv karakter. I jedno i drugi ima isto značenje i istu ulogu, tako da ih možete ravnopravno koristiti, mada ja preferiram "\n". U ovom prilogu sam koristio oboje samo da pokažem da su to ustvari jedna te ista stvar. Ali šta oni rade? Kada program dođe do jedne od te dvije naredbe, on će preći u sljedeći red pri ispisu na ekran. To je jedna od naredbi pomoću koje možemo lakše uređivati ispis željenog teksta, rezultata ili vrijednosti varijabli.
To bi bio kraj drugog dijela škole C++-a. U ovom dijelu ste naučili, odnosno, mogli ste naučiti šta su to varijable i konstante, kako se deklarišu i inicijalizuju. Vidjeli ste kako se koriste neke od osnovnih matematičkih operacija i naučili ste korištenje cout funkcije. Uzmite si vremena, pročitajte ovaj tekst ako treba i dva, pa i tri puta, jer je ovo, kao i prvi dio, temelj za buduće gradivo, i ukoliko ovo niste savladali i ne znate u snu, teško da ćete biti i ispod prosječan programer.
I za kraj, evo jedan mali zadatak, pa provjerite svoje znanje. Nemojte gledati tuđe postove, naći nekoga drugo ko je uradio i kopirati njegov rezultat. Nećete tako mene slagati, već samog sebe. Ja nemam ništa od toga da li ste vi to sami riješili ili ste od nekog drugog prepisali. Neću vas ni ocjenjivati niti išta slično. Ovo je samo da sami sebe provjerite.
Zadaci:
Bez upotrebe kompajlera izračunajte vrijednost varijable "c".
int a=15,c;
float b=7.47851;
c=a+b;
Vidimo se u idućem dijelu školi, koji bi trebao biti gotov za 2 do 3 dana. Ostanite mi vrijedni.
Philosopher
itd...
itd...


efirmisani c++" u kome imaju isto objasnjeno, mozda cak i detaljnije, i stim da je sve na jednom mjestu... Ovaj pocetak C++-a i nije nesto posebno tezak... Sve se to moze savladat za dan ucenja (al' bas ucenja)...