Algoritmi i strukture podataka 2. Čas, Uvod u C++

Similar documents
Programiranje III razred

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

NIZOVI.

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom

VHDLPrimeri Poglavlje5.doc

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Naredbe za kontrolu toka

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Izrada VI laboratorijske vježbe

Uputstvo za korišćenje logrotate funkcije

2. Linijska algoritamska struktura

Programske paradigme Funkcionalna paradigma

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Nizovi. Programiranje 1

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Numeričke metode i praktikum

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

Ugradjena promenljiva ans cuva poslednju vrednost koja nije dodeljena ni jednoj promenljivoj >> ans+3

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Funkcije, prenos parametara i dinamička alokacija memorije

PREDMET. Osnove Java Programiranja. Čas JAVADOC

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević

Informacioni sistemi i baze podataka

Internet programiranje JavaScript - školska 2017/2018

12. Uskladištene procedure (Stored Procedures)

PROGRAMIRANJE INTERNET APLIKACIJA

Objektno orijentisano programiranje

Računarske osnove Interneta (SI3ROI, IR4ROI)

a = x * y; b = a / x; cout << "a = "<<a<<" b ="<< b <<endl;

Vežbe - XII nedelja PHP Doc

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

9. RAD S DATOTEKAMA PODATAKA

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

VRIJEDNOSTI ATRIBUTA

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Programiranje III razred

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

PARALELNO PROGRAMIRANJE

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Uvod u relacione baze podataka

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Lekcija 01 Uvodna razmatranja, Uvod u C. Miljan Milošević

Standardna ulazno-izlazna biblioteka

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

Jezik Baze Podataka SQL. Jennifer Widom

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Osnovne strukture podataka

AngularJS: JS biblioteka koju razvija Google zvanicni sajt: aktuelna verzija: AngularJS v1.3.6 (MIT licenca)

VEŽBA 5 do while petlja, switch case

x y = z Zadaci - procedure

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

f2() f6() main() f3() f7() f4()

VB komande. Programiranje 1

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

[] znači opciono; znači ili. Strana 3 od 5

Internet programiranje

... ; ako je a n parno. ; ako je a n neparno

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

Visoka tehnička škola strukovnih studija Novi Sad. seminarski rad na temu: Modbus protokol. dr. Velibor Pjevalica

Objektno-relacioni model

INSTALACIJA RAZVOJNOG OKRUŽENJA DEV-C++

GUI - događaji (Events) i izuzeci. Bojan Tomić

Functions and Recursion

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

Ime ograničenja je clients_client_num_pk. Ono inforsira biznis pravila po kojem client_number je PK u clients tabeli Naming Constraints

JavaScript JS Cookies

Functions. Functions in C++ Calling a function? What you should know? Function return types. Parameter Type-Checking. Defining a function

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Computational Physics

Standardne C++ biblioteke

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a

THE STANDARD TEMPLATE LIBRARY (STL) Week 6 BITE 1513 Computer Game Programming

Suppose that you want to use two libraries with a bunch of useful classes and functions, but some names collide:

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ URL: nikola.milikic.info

PROCENA UGROŽENOSTI METODOM INDEKSA POŽARA I EKSPLOZIJE (F&EI) DOW INDEKS

Sberbank Business Online na Mozilla FireFox

Sintaksa VHDL jezika - podsjetnik -

Zadaci za Tutorijal 2.

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

Java i Internet programiranje

Transcription:

Algoritmi i strukture podataka 2. Čas, Uvod u C++ Aleksandar Veljković 2017/2018 1 Uvod Jezik C++ je jezik koji pripada objektno orijentisanoj paradigmi, ipak, u okviru ovog kursa naglasak neće biti na objektno orijentisanoj strani jezika već na sturkturama koje se nalaze u okviru standardne biblioteke i njihovim primenama u implementacijama složenijih algoritama. Datoteka koja sadrži C++ kod ima ekstenziju.cpp. program.cpp Kompajler koji se koristi za prevodjenje C++ koda je g++. Za prevodjenje koda smeštenog u datoteci sa nazivom program.cpp izvršava se naredba: g++ program.cpp Nakon uspešnog prevodjenja koda, dobija se izvršna datoteka a.out. Za potrebe kursa, biće korišćen C++ standard iz 2011. godine, koji se navodi opcijom -std=c++11. g++ program.cpp -std=c++11 2 Zaglavlja biblioteka <iostream> - Zaglavlje biblioteke koja obezbedjuje rad sa ulaznim i izlaznim tokom (C++ paralela za stdio.h u C-u) <cstdio> - C Zaglavlje stdio.h <vector> - Zaglavlje biblioteke u kojoj je definisana struktura vektor <string> - Zaglavlje biblioteke za rad sa niskama <cmath> - Zaglavlje biblioteke za rad sa matematičkim operacijama (C zaglavlje math.h) <cstdlib> - C Zaglavlje stdlib.h 1

3 Ispis i učitavanje podataka Podaci se ispisuju na standardni izlaz usmeravanjem podataka, operatorom <<, na izlazni tok cout, koji je definisan u okviru iostream biblioteke. Ispis više podataka vrši se ulančavanjem više operatora <<i podataka za ispis. Prelazak u novi red označava se pomoću endl; int main( std::cout << "Trenutno zivimo u " << 21 << ". veku" << std::endl; Kako bi se izbeglo ponavljanje naziva imenskog prostora std, može se navesti da je podrazumevani imenski prostor std naredbom. cout << "Trenutno zivimo u " << 21 << ". veku" << endl; Učitavanje podataka vrši se usmeravanjem ulaznog toka cin, operatorom >>, ka promenlijvama u kojima će ulazni podaci biti smešteni. Ulazni tok cin je, takodje, definisan u okviru biblioteke iostream int dan, mesec, godina; /* Ucitavanje danasnjeg datuma */ cin >> dan >> mesec >> godina; 2

4 Vector Struktura vector predstavlja linearno uredjen niz, u memoriji susednih, elemenata. Struktura je definisana u okviru biblioteke vector. Pri deklaraciji, tip elemenata koje će vektor sadržati navodi se unutar zagrada <i >. Elementima vektora se pristupa operatorom [ ]. #include <vector> /* Promenljiva niz tipa vektor koji sadrzi 5 elemenata koji su celi brojevi */ vector<int> niz(5); Moguća je dinamička inicijalizacija broja elemenata u toku izvršavanja. #include <vector> int n; cin >> n; /* Inicijalizacija broja elemenata vektora na vrednost n, ucitanu u fazi izvrsavanja */ vector<int> niz(n); /* Ucitavanje elemenata vektora */ cin >> niz[i]; /* Ispisivanje elemenata vektora */ cout << niz[i] << " "; 3

Nakon deklaracije vektora, nova veličina vektora se može zadati funkcijom resize. vector<int> niz; niz.resize(10); Matrica se može definisati kao vektor vektora, pri čemu broj kolona u svakom redu može (a i ne mora) biti različit. int n; cin >> n; vector<vector<int> > matrica(n); // Navodjenje broja redova matrica[i].resize(n); // Navodjenje broja kolona za svaki red; Dodavanje novih elemenata na kraj vektora vrši se funkcijom push back(), dok se izbacivanje elementa sa kraja vrši funkcijom pop back(). Broj elemenata u vektoru dobija se pozivanjem funkcije size(). vector<int> niz; for(int i = 0; i < 10; i++) niz.push_back(i); // Dodavanje vrednosti promenljive i na kraj vektora for(int i = 0; i < niz.size(); i++) cout << niz[i] << " "; 5 String Biblioteka string obezbedjuje tip i funkcije za rad sa niskama. #include <string> string niska1 = "abcd"; string niska2; cin >> niska2; cout << niska1 << ", " << niska2; Niske se mogu nadovezivati (konkatenacija) operatorom +. Dužina niske se dobija pozivanjem funkcije length(). Funkcija find() pronalazi prvo pojavljivanje podniske u okviru niske počevši od pozicije u 4

niski koja je navedena kao drugi argument funkcije. Funkcija replace() zamenjuje podnisku koja počinje na poziciji koja je navedena kao prvi argument funkcije, dužina podniske koja se menja zadata je drugim argumentom, dok se trećim argumentom navodi niska koja dolazi na mesto podniske koja se menja. Jednakost niski se može proveriti operatorom == dok se leksikografsko poredjenje dve niske vrši funkcijom compare(), čiji je argument niska sa kojom se uporedjuje. string niska = "abc"; cout << niska << endl; niska = niska + "def"; cout << niska << endl; cout << "Duzina niske je: " << niska.length() << endl; cout << "Podniska de se nalazi na poziciji: " << niska.find("de", 0) << endl; cout << "Izmenjena niska: " << niska.replace(2, 3, "12345") << endl; if(niska == "abcd") cout << "Jednake su" << endl; else cout << "Nisu jednake" << endl; cout << "Leksikografsko poredjenje: " << niska.compare("abcde") << endl; 6 Iteratori Iteratori su posebna vrsta pokazivača koji se koriste za prolazak (iteraciju) kroz kolekciju elemenata. Svaka kolekcija elemenata (kao npr. vector) poseduje iterator koji pokazuje na početni element kolekcije (dobija se funkcijom begin()) i iterator koji pokazuje na kraj kolekcije (dobija se funkcijom end()). Prolazak kroz kolekciju obavlja se počevši od početnog iteratora, inkrementacijom iteratora koji prolazi kroz kolekciju, sve dok prolazeći iterator ne dostigne iterator za kraj. Promenljiva koja sadrži iterator ima tip iteratora kolekcije kroz koju se prolazi. vector<int> niz = 1, 2, 3, 4; // Ovakva inicijaliza zahteva -std=c++11 vector<int>::iterator it; // Prolazeci iterator for(it = niz.begin(); it!= niz.end(); it++) cout << *it << " "; Kako bi se izbeglo pisanje dugog naziva tipa iteratora, od standardna iz 2011. godine, podržano je korišćenje ključne reči auto, kojom se kompajleru ostavlja da prepozna tip promenljive. vector<int> niz = 1, 2, 3, 4; for(auto it = niz.begin(); it!= niz.end(); it++) cout << *it << " "; 5