Kolegij: Programski jezik C++ Ak. god. 2016/2017 Doc. Dr. Sc. Marko Maliković Programiranje - Uvod -
Kolegij: Programski jezik C++
Ak. god. 2016/2017
Doc. Dr. Sc. Marko Maliković
Programiranje - Uvod -
Program koji ne radi ništa
int main()
{
return 0;
}
Program koji ne radi ništa
int main()
{
return 0;
}
Naziv za glavnu funkciju u svakom C++ programu
Svaki C++ program mora imati jednu i samo jednu main funkciju
To je dio programa koji će se prvi početi izvoditi
Program koji ne radi ništa
int main()
{
return 0;
}
Zagrade u koje se smještaju (eventualni) argumenti odnosno parametri funkcije
Za sada su zagrade prazne i tako će ostati još dobar dio semestra
(Što su argumenti ćemo usvojiti kasnije tijekom kolegija →)
Program koji ne radi ništa
int main()
{
return 0;
}
Kaže da će main() kao rezultat izvođenja vratiti cijeli broj
O povratnim vrijednostima biti će još mnogo riječi tijekom kolegija →
Program koji ne radi ništa
int main()
{
return 0;
}
Naredba kojom glavni program vraća pozivnom programu broj 0
To je poruka operativnom sustavu da je program uspješno okončan
(u svakom operacijskom sustavu postoji skup definiranih vrijednosti
koje bi programi trebali vraćati)
Program koji ne radi ništa
int main()
{
return 0;
}
Početak i kraj bloka koji sadrži naredbe glavne funkcije
Svaki blok naredbi koji se treba ponašati kao cjelina smješta se u vitičaste zagrade
Vidi kasnije tijekom kolegija →
Program koji ne radi ništa
int main()
{
return 0;
}
Označava kraj naredbe
Svaki zapis iza točka-zareza interpretira se kao nova naredba
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
}
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
}
Komentar
Zanemaruje se sav tekst od dvostruke kose crte do kraja
tekućeg retka i program se nastavlja od početka slijedećeg retka
Komentari preko više redova
/* Osim već navedene dvije kose crte, C++ dopušta
pisanje i komentara unutar crta i zvjezdica kao
što je pisan i ovaj komentar. */
Komentari preko više redova
/* Osim već navedene dvije kose crte, C++ dopušta
pisanje i komentara unutar crta i zvjezdica kao
što je pisan i ovaj komentar.
Ovakvi komentari se mogu protezati na više
redaka, a da se znak za komentiranje ne mora
ponavljati u svakom retku. */
Komentari preko više redova
/* Osim već navedene dvije kose crte, C++ dopušta
pisanje i komentara unutar crta i zvjezdica kao
što je pisan i ovaj komentar.
Ovakvi komentari se mogu protezati na više
redaka, a da se znak za komentiranje ne mora
ponavljati u svakom retku.
Ovakav način komentiranja je vrlo pogodan i za
privremeno isključivanje dijelova programa. */
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
} Nije naredba jezika C++ nego tzv. predprocesorska naredba
Sve predprocesorske naredbe počinju znakom #
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
} Od prevoditelja traži da u program uključi zaglavlje biblioteke iostream
U toj datoteci su definirani izlazni tokovi
(između ostalog, funkcije koje omogučavaju ispis podataka na monitor)
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
} Aktivira imenski prostor odn. imenik (eng. namespace) pod nazivom std
std je imenik u kojem su definirane sve standardne funkcije i tipovi
Imenici služe kao zaštita od istih imena funkcija, klasa ili objekata iz različitih biblioteka
Ako dvije različite funkcije iz različitih imenika imaju isto ime prevoditelj će javiti grešku
(ili, u krajnjem slučaju, kada više programera piše isti program)
Da nismo aktivirali cijeli imenik std onda bi u programu morali pisati npr. std::cout umjesto cout
Analogija: Kućna adresa i nečije ime i prezime
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
} Naziv izlaznog toka koji je u biblioteci iostream pridružen monitoru
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
} Upućuje podatak koji slijedi na izlazni tok (u ovom slučaju na monitor)
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
} Podatak koji treba poslati na izlazni tok
Ako je podatak pisan u navodnicima onda ga treba ispisati doslovce
(u suprotnom prevoditelj traži varijablu s tim nazivom,
a ako ona ne postoji vraća grešku)
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
}
Ukratko:
Naredba za ispis teksta Dobar dan
Kako ispisati navodnike? Tako da ispred navodnika koje želimo ispisati stavimo
kosu crtu u lijevo
Na primjer: cout << "Ante je rekao: \"Ovako se ispisuju navodnici\"." << endl;
Pokrenimo prethodni program
Kako pomaknuti ispis nakon teksta "Dobar dan" u novi redak?
Tako da dodamo << endl na kraj
naredbe za ispis
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan" << endl;
return 0;
}
Tako da dodamo << endl na kraj
naredbe za ispis
Umjesto << endl imamo još dvije
mogućnosti:
cout << "Dobar dan" << '\n';
cout << "Dobar dan \n";
Razlika između endl i \n postoji ali nama sada nije
važna (razlika je u pražnjenju buffera prilikom
ispisa u datoteku...)
Nadovezivanje operatora za ispis cout << "Dobar dan dragi gosti!" << endl << "Smjestite se." << endl << "Jeste li za kavu?" << endl;
Program za zbrajanje dva broja (naš prvi interaktivni program)
// Program za zbrajanje dva broja
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Upiši prvi broj: ";
cin >> a;
cout << "Upiši drugi broj: ";
cin >> b;
c = a + b;
cout << "Zbroj je jednak: " << c << endl;
return 0;
}
Program za zbrajanje dva broja // Program za zbrajanje dva broja
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Upiši prvi broj: ";
cin >> a;
cout << "Upiši drugi broj: ";
cin >> b;
c = a + b;
cout << "Zbroj je jednak: " << c << endl;
return 0;
}
Deklariramo tri varijable cjelobrojnog tipa (integer)
Deklariranje varijabli ćemo preciznije opisati kasnije
Program za zbrajanje dva broja // Program za zbrajanje dva broja
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Upiši prvi broj: ";
cin >> a;
cout << "Upiši drugi broj: ";
cin >> b;
c = a + b;
cout << "Zbroj je jednak: " << c << endl;
return 0;
}
Program stane i čeka da upišemo vrijednost varijable a
(prvog broja kojeg želimo zbrajati)
Program za zbrajanje dva broja // Program za zbrajanje dva broja
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Upiši prvi broj: ";
cin >> a;
cout << "Upiši drugi broj: ";
cin >> b;
c = a + b;
cout << "Zbroj je jednak: " << c << endl;
return 0;
} Program stane i čeka da upišemo vrijednost varijable b
(drugog broja kojeg želimo zbrajati)
Program za zbrajanje dva broja // Program za zbrajanje dva broja
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Upiši prvi broj: ";
cin >> a;
cout << "Upiši drugi broj: ";
cin >> b;
c = a + b;
cout << "Zbroj je jednak: " << c << endl;
return 0;
} Program izračunava zbroj brojeva a i b i rezultat pohranjuje u varijablu c
O dodjeljivanju vrijednosti varijablama ćemo govoriti kasnije
Mogućnost ispravka unosa
Prilikom čekanja koje vrši naredba cin >> a; broj a neće biti pohranjen sve dok ne
pritisnemo tipku Enter. To znači da ga možemo ispraviti ako pogriješimo.
Primjećujemo da se hrvatski dijakritički znakovi ne prikazuju ispravno
Neka nam to za sada ne smeta nego pisimo tekst bez kvacica
O hrvatskim dijakritičkim znakovima kasnije na nastavi
Razdvajanje znakovnih nizova Znakovni nizovi ne smiju biti razdvojeni u dva reda, a
da se to ne naznači
Ako napišemo:
cout << "Ovo je prvi redak, a ovo je drugi redak" << endl;
… prevoditelj će javiti grešku
Možemo na kraju prvog retka pisati kosu crtu u lijevo:
cout << "Ovo je prvi redak, \ a ovo je drugi redak" << endl;
Razdvajanje znakovnih nizova cout << "Ovo je prvi redak, \
a ovo je drugi redak" << endl;
Prije drugog retka ne smije biti praznina
jer će prevoditelj te praznine shvatiti kao dio niza:
Datoteke zaglavlja i biblioteke C++ datoteke (ekstenzija .cpp) nisu jedine koje postoje u C++
programima
Druge vrste datoteka se zovu datoteke zaglavlja (header file, include file)
Datoteke zaglavlja obično imaju ekstenziju .h ali ponekad i .hpp ili nemaju ekstenziju
Namjena datoteka zaglavlja je da sadrže deklaracije funkcija te definicije konstanti i klasa sadržanih u odgovarajućim bibliotekama
Npr. naredba cout je deklarirana u datoteci zaglavlja iostream
Naredbom #include <iostream> zahtijevamo da sav sadržaj datoteke zaglavlja iostream bude bude kopiran u našu datoteku
Međutim, datoteke zaglavlja obično sadrže samo deklaracije, a ne sadrže definicije kako je nešto implementirano
Dakle, cout je samo deklarirano u datoteci zaglavlja, a definirano odnosno implementirano je u biblioteci koja se povezuje u naš program tijekom povezivanja (linkanja)