Professional Documents
Culture Documents
C++ Srbija
C++ Srbija
osmo
ZA RAZVOJ VEB STRANA
Siddhartha Rao izdanje
Lemay
sedmo izdanje jednalekcijadnevno Colburn
Pokriva C++14
Kyrnin i C++17
Do sada prodato
vie od 500.000
primeraka!
Potpuno izmenjen i auriran, sa primerima napisanim u skladu sa Uite kada imate vremena,
nauite samostalno
Ovo sedmo izdanje obuhvata najnovije
HTML-a i CCS-a, pre nego to preete na naprednije teme, kao to su
C++
tehnologije i tehnike objavljivanja na
grafika, video i interakcija sa JavaScriptom. Samo jedan sat dnevno vebu
dovoljno je da nauite vetine potrebne za dizajniranje, kreiranje i Nauite kako da u potpunosti primenite
odravanje veb sajta profesionalnog izgleda. HTML5 i CSS3 standarde.
Prethodno iskustvo nije potrebno. Pratei kratke, jednoasovne U jasnim (korak-po-korak) lekcijama
lekcije u ovoj knjizi, svako moe nauiti osnove veb razvoja. predstavljen je praktian nain za
kreiranje veb stranica pomou HTML-a.
Uite svojim tempom. Svaku lekciju moete redom prostudirati
Nauite osnove rada sa tekstom i
da biste bili sigurni da ste u potpunosti razumeli sve koncepte i
kreiranje linkova.
metodologije, odnosno moete da se fokusirate na odreene lekcije
Dodajte slike i grafiku na svoju stranicu.
da biste nauili tehnike koje vas najvie interesuju.
Koristite CSS za izgled sajta i poloaj
Testirajte svoje znanje. Svaka lekcija se zavrava radionicom, koja elemenata na stranici.
sadri pitanja, odgovore i vebe za dalje uenje.
Strukturiite stranicu koristei HTML5.
Koristite odgovarajui veb dizajn da bi
stranice izgledale dobro na ekranima
Laura Lemay je jedan od najpopularnijih svetskih autora o temama razliitih veliina.
Web razvoja. Pored najprodavanije knjige Sams Teach Yourself Web Koristite JavaScript za dodavanje
Publishing with HTML, ona je originalni autor knjige Sams Teach dinaminih elemenata i interaktivnosti
Yourself Java in 21 Days.
Rafe Colburn je programer i autor i ivi u Severnoj Karolini. Njegove
na stranicama.
Nauite kako vam jQuery moe pomoi
da na stranicu dodate JavaScript funkcije.
jednalekcijadnevno
druge knjige obuhvataju Sams Teach Yourself CGI in 24 Hours i Special
Dizajnirajte veb za mobilne ureaje.
Edition Using SQL.
Saznajte kako da obavite svoj sajt na
Jennifer Kymin predaje HTML, XML i Web dizajniranje online od 1997. vebu i kako da ga posetioci pronau u
Ona je napravila i odravala sajtove svih veliina i trenutno specijalizira moru drugih sajtova sedmo izdanje
prilagodljivi dizajn koristei Bootstrap i WordPress. Nauite kako da optimizujete sajt za
pretraivae
jednalekcijadnevno
ISBN: 978-86-7310-510-9
Kategorija: Web dizajn/Web programiranje
Pokriva: HTML5, CSS3, JavaScript, jQuery
Nivo: PoetniSrednji
osnovana 1986. informit.com/sams
www.kombib.rs 9 788673 105109
Siddhartha Rao
NAUITE SAMOSTALNO
C++
OSMO IZDANJE
jednalekcijaDNEVNO
Izdava: Sams Teach Yourself C++
in One Hour a Day
by Siddhartha Rao
ISBN: 978-0-7897-5774-6
Obalskih radnika 15, Beograd
Copyright 2017 by Pearson Education, Inc.
Tel: 011/2520272
All right reserved. No part of this book may be reproduced or
e-mail: kombib@gmail.com transmitted in any form or by means, electronic or mechanical,
including photocopying, recording or by any information storage
internet: www.kombib.rs retrieval system, without permission from the Publisher.
Autorizovani prevod sa engleskog jezika edicije u izdanju
Urednik: Mihailo J. olaji Pearson Education, Inc, Copyright 2017.
Za izdavaa, direktor: Sva prava zadrana. Nije dozvoljeno da nijedan deo ove knjige
bude reprodukovan ili snimljen na bilo koji nain ili bilo kojim
Mihailo J. olaji sredstvom, elektronskim ili mehanikim, ukljuujui
fotokopiranje, snimanje ili drugi sistem presnimavanja
Autor: Siddhartha Rao informacija, bez dozvole izdavaa.
Prevod: Slavica Prudkov
Zatitni znaci
Lektura: Milo Jevtovi Kompjuter Biblioteka i Pearson Education, Inc su pokuali da
u ovoj knjizi razgranie sve zatitne oznake od opisnih termina,
Slog : Zvonko Aleksi pratei stil isticanja oznaka velikim slovima.
Autor i izdava su uinili velike napore u pripremi ove knjige, iji
Znak Kompjuter biblioteke: je sadraj zasnovan na poslednjem (dostupnom) izdanju softvera.
Delovi rukopisa su moda zasnovani na predizdanju softvera
Milo Milosavljevi dobijenog od strane proizvoaa. Autor i izdava ne daju nikakve
garancije u pogledu kompletnosti ili tanosti navoda iz ove knjige,
tampa: Pekograf, Zemun niti prihvataju ikakvu odgovornost za performanse ili gubitke,
odnosno oteenja nastala kao direktna ili indirektna posledica
Tira: 500 korienja informacija iz ove knjige.
ISBN: 978-86-7310-513-0
CIP -
, ,
O autoru
Siddhartha Rao je zaduen za Security Response u SAP SE-u za vodei svetski trgovinski softver.
Evolucija C++-a ubedila je Siddharthau da je danas mogue programiranje brih, jednostavnijih i
monijih aplikacija nego ikada do sada. Voli da putuje i strastveni je biciklist.
uvod
Za C++ su bile posebno vane 2011. i 2014. godina. Iako je C++11 oznaio dramatino
poboljanje predstavljanjem novih kljunih rei i struktura koje su poboljale efikasnost
programera, C++14 je doneo dodatna poboljanja dodavanjem zavrne obrade za funkcije
koje su predstavljene u verziji C++11.
Ova knjiga e vam pomoi da detaljno nauite C++. Paljivo je podeljena na lekcije
pomou kojih ete nauiti osnove ovog objektno-orijentisanog programskog jezika sa prak-
tine take gledita. U zavisnosti od nivoa strunosti, moi ete da savladate C++, veba-
jui dnevno po jedan sat.
Praktino uenje C++-a je najbolji nain uenja stoga, isprobajte razliite primere koda
u ovoj knjizi i poboljajte svoju strunost u programiranju. Ovi iseci koda su testirani
pomou najnovijih verzija dostupnih kompajlera u vreme kada je knjiga pisana, konkretno
Microsoft Visual C++ kompajlera za C++ i GNU-ovog C++ kompajlera, koji obezbeuju
bogatu pokrivenost funkcija verzije C++14.
Napomena Posetite veb sajt izdavaa i registrujte ovu knjigu na adresi informit.
com/register za laki pristup auriranjima, fajlovima za preuzimanje i spiskovima
greaka dostupnim za ovu knjigu.
Panja Ovi okviri upozoravaju na probleme ili sporedne efekte koji se mogu desiti
u posebnim situacijama.
Ur adite Ne r adite
Upotrebite Uradite/Ne radite okvire da biste pronali Nemojte da previdite korisne informacije koje se nalaze
rezime osnovnih principa lekcije. u ovim okvirima.
U ovoj knjizi upotrebljeni su razliiti fontovi da biste razlikovali kod i obian tekst. Kod,
komande i termini koji se odnose na programiranje prikazani su raunarskim fontom.
Poetak rada
1
Dobrodoli u Sams Teach Yourself C++ za sat vremena dnevno! Znai da ste spremni da
postanete vet C++ programer.
U ovoj lekciji otkriete:
zato je C++ standard u razvoju softvera
kako da unesete, kompajlirate i poveete prvi radni C++ program
ta je novo u C++-u
5
6 LEKCIJA 1 Poetak rada
Povezanost sa C-om
C++ je projektovan da bude naslednik jezika C, od koga se razlikuje po injenici da je dizaj-
niran da bude objektno-orijentisani jezik, koji implementira koncepte, kao to su nasleivanje,
apstrakcija, polimorfizam i kapsuliranje. Ukljuuje klase koje se koriste za skladitenje poda-
taka lana i metoda lana. Ovi metodi lana funkcioniu upotrebom podataka lana. Efekat ove
organizacije je da programer modeluje podatke i akcije koje eli da izvri. Mnogi popularni
C++ kompajleri nastavili su da podravaju i jezik C.
Prednosti C++-a
C++ se smatra programskim jezikom srednjeg nivoa, to znai da omoguava programiranje
aplikacija visokog nivoa i biblioteka niskog nivoa koje funkcioniu blisko sa hardverom. On
obezbeuje optimalnu kombinaciju jezika visokog nivoa koji omoguava izradu sloenih apli-
kacija dok prua fleksibilnost u omoguavanju programeru da izvue najbolju performansu
tanom kontrolom potronje resursa i dostupnosti.
Uprkos postojanja novijih programskih jezika, kao to su Java i drugi jezici zasnovani na .NET-u,
C++ je i dalje veoma popularan i jo uvek se razvija. Noviji jezici obezbeuju neke funkcije,
kao to je upravljanje memorijom putem garbage kolekcije implementirane u izvrnoj kompo-
nenti, koje su ove jezike uinile omiljenim za neke programere. Ipak, C++ ostaje izabrani jezik
u sluajevima gde je potrebna tana kontrola nad potronjom resursa aplikacije i performansa.
Slojevita arhitektura, gde veb server programiran u C++-u slui drugim komponentama pro-
gramiranim u HTML-u, Java-i ili .NET-u, je uobiajena.
Programiranje C++ aplikacije 7
Napomena Aktuelni standard moda nisu odmah ili u potpunosti podrali svi
popularni kompajleri. Stoga, iako je dobro znati najnovije dodatke standarda sa aka-
demske take gledita, imajte na umu da oni nisu preduslov za pisanje dobrih, funk-
cionalnih C++ aplikacija.
Ur adite Ne r adite
1
Snimite fajlove, koristei ekstenziju .cpp. Nemojte da upotrebite ekstenziju .c za C++ fajl, zato
Upotrebite jednostavan editor teksta ili integrisano to e neki kompajleri prevesti ove fajlove kao C
razvojno okruenje za pisanje koda. programe, umesto kao C++.
Nemojte za pisanje koda da koristite velike editore
teksta, kao to su programi za obradu teksta, zato to
oni esto dodaju sopstvene oznake u kod koji se
programira.
Ova jednostavna aplikacija samo prikazuje liniju na ekranu, koristei liniju koda std::cout.
Linija koda std::endl izdaje naredbu coutu da zavri konkretnu liniju. Aplikacija se zatvara
kada se operativnom sistemu vrati 0.
10 LEKCIJA 1 Poetak rada
Napomena Da biste itali program, moe biti korisno da znate kako da izgovarate
specijalne karaktere i kljune rei.
Na primer, #include moete da itate kao hash-include. Ostale verzije su sharp-include
ili pound-include, u zavisnosti od toga odakle dolaze.
Slino tome, moete da itate std::cout kao standard-c-out, a endl kao end-line.
Panja Vani su detalji, to znai da treba da kucate kod na potpuno isti nain kao
to je prikazano u programskom kodu. Kompajleri su striktni i ako sluajno unesete na
kraj iskaza a :, a potrebno je da unesete a ;, moete da oekujete greku kompajliranja
i dugaak izvetaj o greci.
Ova komanda daje naredbu kompajleru g++ da kreira izvrni fajl, pod nazivom hello, kompaj-
liranjem C++ fajla Hello.cpp.
Ako koristite Microsoft Visual Studio na Windowsu, pritisnite tastere Ctrl+F5 da biste pokre-
nuli program direktno pomou IDE-a. Ova preica e kompajlirati, povezati i izvriti aplika-
ciju. Alternativno, izvrite sledee korake:
1. Kliknite desnim tasterom mia na projekat i izaberite opciju Build da biste generisali
izvrni fajl Hello.exe.
2. Kliknite na putanju izvrnog fajla, koristei komandnu liniju (obino se nalazi ispod
direktorijuma Debug u direktorijumu projekta).
3. Pokrenite izvrni fajl, tako to ete uneti njegov naziv.
Program kreiran u Microsoft Visual Studiou izgleda slino kao to je ilustrovano na slici 1.1.
Programiranje C++ aplikacije 11
Slika 1.1
Jednostavan
1
Hello World C++
program editovan
u Microsoft Visual
Studio Expressu.
Izvravanje fajla ./hello na Linuxu ili fajla Hello.exe na Windowsu vraa sledei ispis:
Hello World!
estitam! Zapoeli ste uenje jednog od najpopularnijih i najmonijih programskih jezika svih
vremena!
Ova poruka o greci iz Visual C++ Compilera je prilino jasna: ispisuje naziv fajla koji sadri
greku i broj linije (u ovom sluaju 6) u kojoj je izostavljena dvotaka i daje opis same greke,
zajedno sa brojem greke (u ovom sluaju C2143). Iako je znak interpunkcije izbrisan iz pete
linije za ovaj primer, greka je prijavljena za sledeu liniju, zato to je postala oigledna kom-
pajleru samo kada je analizirao vraeni iskaz koji ukazuje da bi prethodni iskaz trebalo da bude
zaustavljen pre vraanja. Isprobajte da dodate dvotaku na poetak este linije i videete da e
program biti kompajliran bez problema.
Napomena U C++ jeziku prelom linije nee automatski zavriti iskaze kao u
nekim drugim jezicima, kao to je VBScript.
U C++ jeziku iskazi mogu da se proteu kroz vie linija. Takoe je mogue da imate
vie iskaza u jednoj liniji, u kojoj je svaki iskaz zavren znakom taka-zarez.
ta je novo u C++-u?
Ako ste iskusni C++ programer, moda ste primetili da osnovni C++ program u programskom
kodu 1.1 nije promenjen. Iako je C++ ostao usklaen sa prethodnim verzijama C++-a, uraeno
je mnogo da bi taj jezik bio jednostavniji za upotrebu i programiranje.
Najnovije auriranje je izdato kao deo ISO standarda koji je ratifikovan 2011. godine
(popularno se naziva C++11). C++14 je izdat 2014. godine i sadri manja poboljanja i korek-
cije u odnosu na verziju C++11.
Funkcija kao to je auto, prvi put predstavljena u verziji C++11, omoguava da se definie
promenljiva iji tip kompajler automatski izvodi zbijanjem razvuenih deklaracija, bez kom-
promitovanja bezbednosti tipa. C++14 proiruje istu ovu funkciju za vraanje tipova. Lambda
funkcije su funkcije bez naziva. One omoguavaju da se piu kompaktni objekti funkcije bez
dugih definicija klase, ime se znaajno smanjuju linije koda.
Rezime 13
C++ obezbeuje programerima mogunost pisanja prenosivih, vienitnih C++ aplikacija koje
su usklaene sa standardima. Ove aplikacije, kada su pravilno izgraene, podravaju paralelna
izvrenja obrazaca i dobro su pozicionirane u srazmeri performanse kada korisnik poveava
mogunosti konfiguracije hardvera poveavanjem broja jezgara procesora. Ovo su neka od
brojnih poboljanja u C++ jeziku koja e biti opisana u ovoj knjizi.
1
Nove funkcije jezika koje se oekuju u sledeoj velikoj reviziji, koja e imati naziv C++17,
predstavljene su na kraju knjige, u Lekciji 29, Napredak.
Rezime
U ovoj lekciji nauili ste kako da programirate, kompajlirate, povezujete i izvravate prvi C++
program. U njoj je, takoe, predstavljen kratak pregled evolucije C++ jezika i demonstrirana je
efikasnost standarda prikazom da isti program moe da bude kompajliran korienjem razlii-
tih kompajlera na razliitim operativnim sistemima.
Pitanja i odgovori
P Mogu li da ignoriem poruke upozorenja kompajlera?
O U odreenim sluajevima kompajler e prikazati poruke upozorenja. Upozorenja se
razlikuju od greaka po tome to je konkretna linija sintaktiki tana i moe da se
kompajlira. Meutim, verovatno postoji bolji nain da se konkretna linija napie, a
dobri kompajleri prikazae upozorenje, zajedno sa preporukom kako moe da se
ispravi linija.
Preporuena ispravka prua bezbedniji nain programiranja ili nain koji omoguava
da aplikacija koristi karaktere i simbole koji nisu iz latinskog jezika. Treba da
obratite panju na ova upozorenja i da, u skladu sa njima, poboljate aplikaciju.
Nemojte ignorisati poruke upozorenja ako niste sigurni da su one tane.
P Po emu se razlikuje interpretirani od kompajliranog jezika?
O Jezici kao to je Windows Script su interpretirani. Ne postoji korak kompajliranja.
Interpretirani jezik koristi interpreter, koji direktno ita tekstualni fajl skripta (kod) i
izvrava eljene akcije. Shodno tome, poeljno je da imate instaliran interpreter na
maini na kojoj skript treba da bude izvren; meutim, kada interpreter funkcionie
kao izvrni prevodilac izmeu mikroprocesora i napisanog koda, to obino utie na
performansu.
14 LEKCIJA 1 Poetak rada
Radionica
Radionica obezbeuje kviz da biste proverili koliko dobro razumete ono to ste nauili u ovoj
lekciji i vebe za poveanje iskustva u upotrebi onoga to ste nauili. Pokuajte da odgovorite
na pitanja u kvizu i obavite vebe pre nego to proverite odgovore u Dodatku E.
Kviz
1. U emu je razlika izmeu interpretera i kompajlera?
2. ta radi program za povezivanje?
3. Koji su koraci u normalnom ciklusu razvoja?
Vebe
1. Pogledajte sledei program i pokuajte da pogodite ta on izvrava, a da ga ne
pokrenete:
1: #include <iostream>
2: int main()
3: {
4: int x = 8;
5: int y = 6;
6: std::cout << std::endl;
7: std::cout << x - y << << x * y << << x + y;
8: std::cout << std::endl;
9: return 0;
10: }
17
18 LEKCIJA 2 Anatomija C++ programa
Ovaj C++ program se moe generalno razdvojiti na dva dela: na pretprocesorske komande koje
zapoinju simbolom # i na glavno telo programa koje zapoinje funkcijom int main().
Napomena Linije 1, 4, 7 i 10, koje zapoinju oznakom // ili /*, nazivaju se komen-
tari i kompajler ih ignorie. Ovi komentari su samo za korisnike koji itaju kod.
Opisani su detaljnije u sledeem odeljku.
2
#include ...relative path to FileB\FileB
Ova varijanta funkcije je usklaena sa standardom i prihvatljiva je, jer vraa vrednost
int. Sadraji zagrada su argumenti koji su dodati u program. Ovaj program verovatno
omoguava korisniku da ga pokrene pomou argumenata komandne linije, kao to je
program.exe /DoSomethingSpecific
Iskaz cout (console-out, izgovara se kao si-aut) ispisuje Hello World u konzoli odnosno,
ekranu. cout je tok definisan u standardnom std imenskom prostoru (otuda i std::cout) - u
ovoj liniji postavljate tekst Hello World u tok upotrebom operatora za ubacivanje toka <<.
Iskaz std::endl je upotrebljen na kraju linije i njegovo ubacivanje u tok je slino ubacivanju
znaka za poetak novog reda. Ne zaboravite da se operator za ubacivanje toka << koristi svaki
put kada novi objekat treba da bude dodat u tok.
U C++ jeziku razliiti tipovi toka podravaju slinu semantiku toka za izvravanje razliitih
operacija pomou istog teksta. Na primer, za ubacivanje u fajl, umesto u konzolu, koristimo isti
operator unosa << u toku std::fstream, umesto u toku std::cout. Stoga, upotreba tokova
postaje intuitivna i kada se naviknete na jedan tok (kao to je cout, koji pie tekst u konzolu),
otkriete da je upotreba drugih tokova jednostavna (kao to je fstream, koji pomae snimanje
fajlova na disk).
Tokovi su detaljnije opisani u Lekciji 27, Upotreba tokova za unos i ispis.
Vraanje vrednosti
Funkcije u C++ jeziku treba da vraaju vrednost, ako nije eksplicitno specifikovano drugaije.
Funkcija main() je isto funkcija i uvek vraa ceo broj. Ova vrednost celog broja je vraena u
operativni sistem (OS) i, u zavisnosti od prirode aplikacije, moe da bude veoma korisna, jer
veina operativnih sistema obezbeuje mogunost slanja upita o vraenoj vrednosti aplikacije
koja je normalno zaustavljena. U mnogim sluajevima jedna aplikacija je pokrenuta drugom, a
matina aplikacija (koja pokree) eli da zna da li je podreena aplikacija (koja je pokrenuta)
uspeno izvrila zadatke. Programer moe da upotrebi vraenu vrednost funkcije main() za
saoptavanje uspenog stanja ili greke matinoj aplikaciji pomou koda.
Panja C++ jezik razlikuje velika i mala slova. Dakle, oekujte da e kompajliranje
biti neuspeno ako napiete Int, umesto int, ili Std::Cout, umesto std::cout.
Koncept imenskih prostora 21
Mnogim programerima je dosadno da dodaju iznova specifikator std imenskog prostora u kod
kada koriste cout i druge sline funkcije sadrane u istom imenskom prostoru. Deklaracija
using namespace, kao to je prikazano u programskom kodu 2.2, pomae da se izbegne ovo
ponavljanje.
Analiza
Pogledajte liniju 8. Ako ukaete kompajleru da koristite imenski prostor std, ne treba ekspli-
citno da spomenete imenski prostor u liniji 11 kada koristite kod std::cout ili std::endl.
Restriktivnija varijanta programskog koda 2.2 prikazana je u programskom kodu 2.3, u kojem
imenski prostor nije upotrebljen u potpunosti. Ukljuiemo samo one artefakte koje elimo da
upotrebimo.
Analiza
Linija 8 u programskom kodu 2.2 je sada zamenjena linijama 7 i 8 u programskom kodu 2.3.
Razlika izmeu kodova using namespace std i using std::cout je to using names-
pace std omoguava da svi artefakti u imenskom prostoru std (count, cin i tako dalje) budu
upotrebljeni bez eksplicitnog ukljuivanja kvalifikatora imenskog prostora std::. U kodu
using std::cout imenski prostor je eksplicitno naznaen, pa je, stoga, omoguena upotreba
samo artefakata std::cout i std::endl.
Ur adite Ne r adite
Dodajte komentare koji objanjavaju rad sloenih Nemojte da koristite komentare za objanjenje ili
algoritama i sloenih delova programa. ponavljanje oiglednog.
Sastavite komentare, koristei stil koji programeri Nemojte da zaboravite da dodavanje komentara ne
saradnici mogu da razumeju. opravdava pisanje nejasnog koda.
Nemojte da zaboravite da, kada je kod modifikovan,
moda treba aurirati i komentar.
Funkcije u C++-u
Funkcije omoguavaju da se podeli sadraj aplikacije na funkcionalne jedinice koje mogu da
budu pozvane u sekvenci po naem izboru. Funkcija, kada je pozvana, obino vraa vrednost
u funkciju koja ju je pozvala. Najpoznatija funkcija je, naravno, int main(). Kompajler je
prepoznaje kao poetnu taku C++ aplikacije i obavezno vraa int (ceo broj).
24 LEKCIJA 2 Anatomija C++ programa
Kao programeri, imamo izbor i obino treba da sastavimo sopstvene funkcije. Programski
kod 2.4 je jednostavna aplikacija koja koristi funkciju za prikaz iskaza na ekranu, koristei
std::cout sa razliitim parametrima.
Programski kod 2.4: Deklarisanje, definisanje i pozivanje funkcije koja prikazuje mogunosti
koje ima std::cout
1: #include <iostream>
2: using namespace std;
3:
4: // Declare a function
5: int DemoConsoleOutput();
6:
7: int main()
8: {
9: // Call i.e. invoke the function
10: DemoConsoleOutput();
11:
12: return 0;
13: }
14:
15: // Define i.e. implement the previously declared function
16: int DemoConsoleOutput()
17: {
18: cout << This is a simple string literal << endl;
19: cout << Writing number five: << 5 << endl;
20: cout << Performing division 10 / 5 = << 10 / 5 << endl;
21: cout << Pi when approximated is 22 / 7 = << 22 / 7 << endl;
22: cout << Pi is 22 / 7 = << 22.0 / 7 << endl;
23:
24: return 0;
25: }
Ispis
This is a simple string literal
Writing number five: 5
Performing division 10 / 5 = 2
Pi when approximated is 22 / 7 = 3
Pi is 22 / 7 = 3.14286
Analiza
Linije 5, 10 i od 16 do 25 su vane. Linija 5, koja se naziva deklaracija funkcije, u sutini
ukazuje kompajleru da elimo da kreiramo funkciju pod nazivom DemoConsoleOutput(),
koja vraa vrednost int (ceo broj). Ova deklaracija omoguava kompajleru da prevede liniju
10, u kojoj je funkcija DemoConsoleOutput() pozvana unutar funkcije main(). Kompajler
pretpostavlja da e se definicija (odnosno implementacija funkcije) pojaviti, a pojavie se u
linijama od 16 do 25.
Funkcije u C++-u 25
U stvari, ova funkcija prikazuje mogunosti artefakta cout. Ne samo da tampa tekst na isti
nain kao to je prikazan Hello World u prethodnim primerima, ve i rezultat jednostavnog
aritmetikog izraunavanja. Linije 21 i 22 prikazuju rezultat pi (22 / 7); linija 22 je mnogo
tanija, zato to deljenjem 22.0 sa 7 ukazujete kompajleru da treba da tretira rezultat kao realan
(float u terminu C++-a), a ne kao ceo broj.
Vidite da funkcija treba da vrati ceo broj, kao to je deklarisano u liniji 5, a vraa 0. Slino
tome, i funkcija main() vraa vrednost 0. S obzirom da je funkcija main() prenela sve svoje
aktivnosti na funkciju DemoConsoleOutput(), bilo bi mnogo bolje da upotrebite vraenu 2
vrednost funkcije za vraanje vrednosti iz funkcije main(), kao to je prikazano u program-
skom kodu 2.5.
Analiza
Ispis ove aplikacije je isti kao i ispis prethodnog programskog koda. Ipak, postoje male pro-
mene u nainu na koji je aplikacija programirana. Na primer, poto ste definisali (odnosno
implementirali) funkciju ispred funkcije main() u liniji 5, nije vam potrebna dodatna dekla-
racija. Moderni C++ kompajleri upotrebie ovu definiciju kao deklaraciju funkcije i definiciju
ujedno. Funkcija main() je malo kraa. Linija 19 poziva funkciju DemoConsoleOutput() i
istovremeno vraa vrednost funkcije iz aplikacije.
26 LEKCIJA 2 Anatomija C++ programa
Funkcije mogu da koriste parametre, mogu da budu rekurzivne, mogu da sadre vie povratnih
iskaza, mogu da budu preklopljene, kompajler moe da ih proiri u liniji i tako dalje. Ovi kon-
cepti su predstavljeni detaljnije u Lekciji 7, Organizovanje koda pomou funkcija.
Iskaz prikazuje cout, praen operatorom unosa << (to pomae pri ubacivanju podataka u tok
ispisa). Iza operatora je dodat literal znakovnog niza Hello World, a nakon toga je dodata
nova linija u formi std::endl (izgovara se standard end-lajn).
Upotreba iskaza cin je, takoe, jednostavna. Poto je cin upotrebljen za unos, spojen je sa
promenljivom u kojoj elite da sauvate unete podatke:
std::cin >> Variable;
Osnovni unos pomou iskaza std::cin i ispis pomou iskaza std::cout 27
Stoga, cin je praen operatorom ekstrahovanja >> (ekstrahuje podatke iz toka unosa), a zatim
je dodata promenljiva u kojoj treba da budu sauvani podaci. Ako unos korisnika treba da bude
sauvan u dve promenljive, koje sadre podatke razdvojene razmakom, iskoristite jedan iskaz:
std::cin >> Variable1 >> Variable2;
Vidite da iskaz cin moe da se upotrebi za tekst i za numerike unose korisnika, kao to je
prikazano u programskom kodu 2.6.
2
Programski kod 2.6: Upotreba iskaza cin i cout za prikaz numerikog i tekstualnog unosa korisnika
1: #include <iostream>
2: #include <string>
3: using namespace std;
4:
5: int main()
6: {
7: // Declare a variable to store an integer
8: int inputNumber;
9:
10: cout << Enter an integer: ;
11:
12: // store integer given user input
13: cin >> inputNumber;
14:
15: // The same with text i.e. string data
16: cout << Enter your name: ;
17: string inputName;
18: cin >> inputName;
19:
20: cout << inputName << entered << inputNumber << endl;
21:
22: return 0;
23: }
Ispis
Enter an integer: 2017
Enter your name: Siddhartha
Siddhartha entered 2017
28 LEKCIJA 2 Anatomija C++ programa
Analiza
Linija 8 prikazuje kako je deklarisana promenljiva pod nazivom inputNumber za uvanje
podataka tipa int. Korisnik treba da unese broj, koristei iskaz cout u liniji 10; uneti broj je
sauvan u promenljivoj celog broja pomou iskaza cin u liniji 13. Ista veba ponovljena je
za uvanje imena korisnika, koje naravno ne moe da se uva kao ceo broj, ve kao drugaiji
tip pod nazivom string, kao to moete da vidite u linijama 17 i 18. Ukljuen je <string>
u liniju 2 da bi kasnije bio upotrebljen tip string unutar funkcije main(). Na kraju, u liniji 20
iskaz cout se koristi za prikaz unetog imena sa brojem i teksta za kreiranje ispisa Siddhar-
tha entered 2017.
Ovo je jednostavan primer kako funkcioniu osnovni unos i ispis u C++ jeziku. Ne brinite ako
vam nije jasan koncept promenljive - detaljniji opis ete nai u Lekciji 3, Upotreba promen-
ljivih i deklarisanje konstanti.
Rezime
U ovoj lekciji su predstavljeni osnovni delovi jednostavnog C++ programa. Objanjeno je ta
je funkcija main(), predstavljeni su imenski prostori i nauili ste osnove unosa i ispisa u kon-
zoli. Moete sada da upotrebite ove koncepte u svakom programu koji piete.
Pitanja i odgovori
P ta izvrava komanda #include?
O Ovo je pretprocesorska komanda, koja se pokree kada se pozove kompajler. Ova
specifina komanda izaziva da sadraji fajla naznaenog u <> iza #include budu
ubaeni u odreenu liniju kao da su uneti na tu lokaciju u izvornom kodu.
P U emu je razlika izmeu // komentara i /* komentara?
O Komentari dvostruke kose crtice (//) istiu na kraju linije. Komentari kose crtice i
zvezdice (/*) su aktivni do unosa oznake za zatvaranje komentara (*/). Komentari
dvostruke kose crte se nazivaju i jednolinijski, a komentari kose crtice i zvezdice se
esto nazivaju vielinijski. Ne zaboravite: ak ni kraj funkcije ne zavrava komentar
Radionica 29
kose crtice i zvezdice; morate da postavite oznaku za zatvaranje komentara ili ete, u
suprotnom, dobiti greku u vreme kompajliranja.
P U kom sluaju treba programirati argumente komandne linije?
O Argumenti se dodaju kada treba izvriti unos opcija koje omoguavaju korisniku da
promeni ponaanje programa. Na primer, komanda ls u Linuxu ili dir u Windowsu
omoguava da vidite sadraje unutar aktuelnog direktorijuma. Da biste pregledali
fajlove u drugom direktorijumu, specifikujte putanju direktorijuma, koristei
argumente komandne linije, kao to su ls / ili dir \.
2
Radionica
Radionica obezbeuje kviz da biste proverili koliko dobro razumete ono to ste nauili u ovoj
lekciji i vebe za poveanje iskustva u upotrebi onoga to ste nauili. Pokuajte da odgovorite
na pitanja u kvizu i obavite vebe pre nego to proverite odgovore u Dodatku E.
Kviz
1. U emu je problem u deklarisanju funkcije Int main()?
2. Mogu li komentari biti dui od jedne linije?
Vebe
1. BUG BUSTERS: Unesite sledei program i kompajlirajte ga. Zato je izvrenje
neuspeno? Kako moete to da ispravite?
1: #include <iostream>
2: void main()
3: {
4: std::Cout << Is there a bug here?;
5: }