Download - Programiranje - uvod
![Page 1: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/1.jpg)
Kolegij: Programski jezik C++
Ak. god. 2016/2017
Doc. Dr. Sc. Marko Maliković
Programiranje - Uvod -
![Page 2: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/2.jpg)
Program koji ne radi ništa
int main()
{
return 0;
}
![Page 3: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/3.jpg)
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
![Page 4: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/4.jpg)
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 →)
![Page 5: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/5.jpg)
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 →
![Page 6: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/6.jpg)
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)
![Page 7: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/7.jpg)
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 →
![Page 8: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/8.jpg)
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
![Page 9: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/9.jpg)
Prvi program koji nešto radi
// Prvi program koji radi nešto
#include <iostream>
using namespace std;
int main()
{
cout << "Dobar dan";
return 0;
}
![Page 10: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/10.jpg)
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
![Page 11: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/11.jpg)
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. */
![Page 12: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/12.jpg)
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. */
![Page 13: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/13.jpg)
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. */
![Page 14: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/14.jpg)
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 #
![Page 15: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/15.jpg)
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)
![Page 16: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/16.jpg)
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
![Page 17: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/17.jpg)
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
![Page 18: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/18.jpg)
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)
![Page 19: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/19.jpg)
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)
![Page 20: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/20.jpg)
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
![Page 21: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/21.jpg)
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;
![Page 22: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/22.jpg)
Pokrenimo prethodni program
Kako pomaknuti ispis nakon teksta "Dobar dan" u novi redak?
![Page 23: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/23.jpg)
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;
}
![Page 24: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/24.jpg)
Tako da dodamo << endl na kraj
naredbe za ispis
![Page 25: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/25.jpg)
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...)
![Page 26: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/26.jpg)
Nadovezivanje operatora za ispis cout << "Dobar dan dragi gosti!" << endl << "Smjestite se." << endl << "Jeste li za kavu?" << endl;
![Page 27: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/27.jpg)
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;
}
![Page 28: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/28.jpg)
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
![Page 29: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/29.jpg)
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)
![Page 30: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/30.jpg)
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)
![Page 31: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/31.jpg)
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
![Page 32: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/32.jpg)
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
![Page 33: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/33.jpg)
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;
![Page 34: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/34.jpg)
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:
![Page 35: Programiranje - uvod](https://reader034.vdocuments.net/reader034/viewer/2022052309/589ad5901a28ab0f468ba602/html5/thumbnails/35.jpg)
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)