Download pdf - Programiranje - uvod

Transcript
Page 1: Programiranje - uvod

Kolegij: Programski jezik C++

Ak. god. 2016/2017

Doc. Dr. Sc. Marko Maliković

Programiranje - Uvod -

Page 2: Programiranje - uvod

Program koji ne radi ništa

int main()

{

return 0;

}

Page 3: Programiranje - uvod

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pokrenimo prethodni program

Kako pomaknuti ispis nakon teksta "Dobar dan" u novi redak?

Page 23: Programiranje - uvod

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

Tako da dodamo << endl na kraj

naredbe za ispis

Page 25: Programiranje - uvod

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

Nadovezivanje operatora za ispis cout << "Dobar dan dragi gosti!" << endl << "Smjestite se." << endl << "Jeste li za kavu?" << endl;

Page 27: Programiranje - uvod

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

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

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

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

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

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

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

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

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)