$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \newcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$
Priručnik za početnike (C++) / Struktura tvog prvog programa

Struktura tvog prvog programa

  • Dozvoljeno polaganje
  • Lekcije
  • Nema
  • Teo
  • 7/24/2015

Ajde sada da se osvrnemo na strukturu programa iz prethodne lekcije. Uobičajeno je da početnici prvo napišu program koji se zove "Hello World" (Zdravo svete), koji samo štampa "Hello World" na ekran računara. Ovaj program smo već napisali u editoru. Iako je ovaj program jednostavan, sadrži sve bitne komponente C++ programa. Leva strana tabele označava C++ zapis (kod) ovog programa, dok je na desnoj strani tabele prikazan rezultat ispisa na ekranu kada se program izvrši. Brojevi prikazani sa strane predstavljaju redne brojeve linija uz pomoć kojih ćemo lakše diskutovati program i istražiti moguće greške lakše. Ovi brojevi nisu deo programa.

Hajde da ispitamo ovaj program liniju po liniju:

// moj prvi C++ program

 

 

 

 

#include <iostream>

 

 

 

 

int main()

 

 

 

 

 

{

 

 

 

  std::cout << "Hello World!";

 

 

 

 

 

 

 

}

// označava početak komentara. Komentar se završava krajem reda. Programeri koriste komentare da ostave kratka objašnjenja ili zapažanja koja se tiču programa. U ovom slučaju to je prosto uvodni opis našeg programa. Programi rade potpuno isto i bez komentara, samo su (bez komentara) nama manje razumljivi.  

 

iostream je skraćeno od input-output stream. #include iostream znači "uključi ulazno-izlazni tok". Ovde tražimo da se našem programu doda deo koji mu (između ostalog) omogućava da ispiše tekst na ekranu ili da primi ono što je otkucano na tastaturi. Bez ove linije, program za prevođenje ne bi razumeo ostatak našeg programa, konkretno liniju gde pominjemo "Hello world!".

 

Prazne linije ne utiču na program, one jednostavno poboljšavaju čitljivost koda.

 

Ova linija predstavlja deklaraciju funkcije. Funkcija predstavlja grupu programskih naredbi kojima se daje ime, u ovom slučaju ime funkcije je "main". O funkcijama ćemo detaljno pisati u kasnijoj lekciji, za sada je bitno da znaš da definicija funkcije počinje sa tipom podataka koji funkcija vraća (int), imenom (main) i parom zagrada "()", i opciono sa ulaznim parametrima. Funkcija pod nazivom main (glavna) je specijalna funkcija u svim C++ programima, to je funkicja koja se poziva kada se pokrene program. Izvršavanje svih C++ programa počinje sa main funkcijom, bez obzira gde se ta funkcija u kodu nalazi (na početku, u sredini ili na kraju).

 

Otvorena vitičasta zagrada "{" u liniji 5 označava početak definicije funkcije main, a zatvorena vitičasta zagrada "}" u liniji 7 predstavlja njen kraj. Sve između ovih zagrada je telo funkcije koje definiše šta se dešava kada se funkcija main pozove. Sve funkcije koriste vitičaste zagrade da označe početak i kraj svojih definicija.

 

Ova linija predstavlja jednu C++ komandu. Komanda je izraz koji može proizvesti neki efekat. One predstavljaju "meso" programa i definišu njegovo pravo ponašanje. Komande se izvršavaju u istom redosledu u kome su napisane u okviru tela funkcije. Ova komanda ima tri dela: prvi, cout, koji označava standardni izlaz (standard character output - standardni tekstualni tj. izlaz konzole i obično je to ekran računara). Drugi, operator ubacivanja "<<", koji označava da ono što sledi će biti ubačeno na izlaz konzole. Na kraju, rečenica u okviru navodnika ("Hello world!"), je sadržaj koji će biti ubačen/ispisan na standardni izlaz. Primeti da se komanda završava sa znakom ";". Ovaj karakter označava kraj naredbe, kao što tačka označava kraj rečenice u Srpskom jeziku. Sve naredbe programskoj jezika C++ moraju se završiti sa ";". Jedna od najčešćih sintaksnih grešaka u C++ se javlja usled zaboravljanja da se izraz završi sa ";".

 

 

Možeš da primetiš da ne utiču sve linije ovog programskog koda na samo izvršenje programa. Postoje linije koje sadrže komentare (počinju sa //) i linije sa direktivama/uputstvima pretprocesoru (počinju sa #). Postoji i linija koja definiše main funkciju. I na kraju linija sa naredbom koja se završava sa ";" (i vrši ispis na ekran),  koja se nalazi u okviru bloka označenog sa vitičastim zagradama ( { } ) funkcije main. 

Program je napisan u različitim linijama i pravilno su komande uvučene (eng. indent), da bi ljudi mogli lakše da razumeju kod čitajući ga. No, C++ nema striktna pravila za uvlačenje i podelu naredbi u različite linije. Tako da smo na primer umesto 

1

2

3

4

int main ()

{

  cout << " Hello World!";

}

 

mogli da napišemo i sledeće:

 

int main () { cout << "Hello World!"; }

sve u jednoj liniji, i program bi imao isto značenje kao i u prethodnom zapisu.

U C++ odvajanje naredbi se vrši uz pomoć ";", a razdvajanje u različite linije se ne koristi u ovu svrhu. Više naredbi se može napisati u okviru samo jedne linije, ili se svaka naredba može pisati u novoj liniji. Razdvajanje koda po različitim linijama služi da omogući lakše čitanje koda od strane ljudi, i nema nikakvo uticaja na samo ponašanje programa.

Sada, hajde da dodamo još jednu komandu našem prvom programu:

1

2

3

4

5

6

7

8

9

// my second program in C++

#include <iostream>

using namespace std;

 

int main ()

{

  cout << "Hello World! ";

  cout << "I'm a C++ program";

}

Hello World! I'm a C++ program

U ovom slučaju, program izvršava dva ispisa na ekran u dve različite naredbe. Još jednom odvajanje koda u odvojene linije povećava čitljivost/preglednost programa, jer funkcija main bila ispravna i da smo je napisali na sledeći način:

 

int main () { cout << " Hello World! "; cout << " I'm a C++ program "; }

Kod programa smo takođe mogli da podelimo u više linija:

1

2

3

4

5

6

7

int main ()

{

  cout <<

    "Hello World!";

  cout

    << "I'm a C++ program";

}

i dobili bismo isti rezultat.

 

Za direktive pretprocesoru (one koje počinju sa znakom #) ne važi ovo opšte pravilo jer one nisu izrazi (komande). One predstavljaju linije koje čita i procesira pretprocesor pre nego što kompajliranje počne. Direktive pretprocesoru moraju biti ispisane u zasebnoj liniji, i pošto nisu izrazi ne moraju se završiti sa znakom ";".

 

Komentari

Kao što smo pomenuli ranije, komentari ne utiču na izvršavanje programa. Međutim, komentari pružaju način da u sred koda dokumentujemo/objasnimo šta i kako naš program radi.

C++ podržava dva načina komentarisanja koda:

1

2

// linijski komentar

/* blok komentara */

Linijski komentar odbacuje/zanemaruje sve od iza para znakova za deljenje "//" pa do kraja te linije. 

Blok komentar odbacuje/zanemaruje sve između /* karaktera i prvog pojavljivanja */ karaktera, sa mogućnošću uključivanja više linija.

Hajde da dodamo komentare našem drugom programu

1

2

3

4

5

6

7

8

9

10

11

/* moj drugi C++

   sa više komentara */

 

#include <iostream>

using namespace std;

 

int main ()

{

  cout << "Hello World! ";     // ispisuje Hello World!

  cout << "I'm a C++ program"; // ispisuje I'm a C++ program

}

Hello World! I'm a C++ program

Ukoliko komentare uključimo u program bez navedene dve kombinacije karaktera // ili /*  */ kompajler će ih smatrati za C++ izraze što će vrlo verovatno uzrokovati da kompajliranje bude neuspešno sa jednom ili više poruka o grešci.