22
Algoritmi i programiranje Polja Prof. dr. sc. Tonči Carić ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

  • Upload
    others

  • View
    58

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

Algoritmi i programiranje

Polja

Prof. dr. sc. Tonči Carić

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

Page 2: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• Sadržaj • Polja

• Deklaracija polja i njegovo kreiranje

• Pohrana vrijednosti

• Kopiranje polja

• Reference

• Upotreba atributa Length

• Višedimenzionalna polja (matrice) – Dohvaćanje elemenata polja

• Metode sa poljima kao parametrima

• Jednostrana komunikacija (glavni program-metoda)

• Obostrana komunikacija (glavni program-metoda)

Page 3: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• POLJA – U nekim slučajevima jednostavnije je kreirati polje

vrijednosti nego • za svaku vrijednost kreirati novu varijablu

• Na primjer: – Ako želimo pohranit sve OIB-e učenika u nekom razredu jednostavnije

je kreirati

» polje razred od 40 elemenata u kojem će se pohraniti podaci svih učenika, nego

» koristiti varijable ucenik1, ucenik2, ucenik3, ….

POLJA

Page 4: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• Polje je imenovani uređeni skup vrijednosti koji se zajednički

pohranjuje u memoriju

– Sve vrijednosti polja su istog tipa

– Svaka od vrijednost dostupna je putem indeksa

– Polje se najčešće koristi za pohranu • matrica

• lista

• nizova

• tablica

POLJA

ime_polja članovi, elementi polja

indeksi članova polja

Page 5: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• DEKLARACIJA I KREIRANJE POLJA

deklaracija polja izvodi se

navođenjem tipa polja (int, double,

float..), uglatih zagrada i navođenjem

imena polja

polje se u memoriji kreira naredbom new (novo),

navodi se tip podataka i

rezervira potrebna veličina

polja

• Deklaracija polja i njegovo kreiranje

Polje01

Page 6: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Pohrana vrijednosti – Svakom od elemenata polja pristupa se

• putem indeksa koji se navodi u uglatim zagradama [ ]

• Za polje od 4 elementa – indeksi započinju od 0 i završavaju sa 3

Polje02

Page 7: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Kopiranje polja – Kad se nekoj varijabli polja pridruži vrijednost druge varijable polja, ne

kopira se sadržaj već samo referenca (pokazivač) na polje

– Dvije varijable upućuju na isto polje

double[] a = new double [3];

double[] b = a;

Page 8: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Reference – Varijable polje_a i polje_b pokazuju na isti sadržaj

– Promjena elementa bilo koje varijable će se reflektirati i na drugu jer obe varijable referenciraju na isto polje u memoriji

Polje03

Page 9: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Kopiranje polja – Za potpunu kopiju polja, potrebno je kreirati novo polje iste veličine i

kopirati vrijednosti svih elemenata iz "starog" polja

deklaracija i kreiranje polja

pridjeljivanje vrijednosti polje_a

kopiranje vrijednosti iz polja_a u polje_b

Polje04

Page 10: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Duljina polja – Polja su objekti koji imaju imenovane varijable (atribute) i

odgovarajuće metode

– Upotrebom atributa Length može se saznati duljina polja

– U petlji za gornju granicu veličine polja prikladno je koristiti varijablu Length, a ne konstantnu vrijednost

DuljinaPolja

Page 11: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Višedimenzionalna polja (matrice)

– Deklaracija polja koje imaju više dimenzija izvodi se na ovaj način:

– Broj dimenzija polja određen je brojem zareza unutar uglatih zagrada kod deklaracije, uvećan za jedan

Page 12: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Dohvaćanje elemenata polja – Za dohvaćanje elementa polja moraju se navesti indeksi za svaku

dimenziju

– Veličina svake dimenzije se može doznati pomoću metode GetLength

Polje3D

Page 13: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Prolaz kroz dvodimenzionalno polje

– Primjer postavljanja vrijednosti svih elemenata dvodimenzionalnog polja c na 1

– Kod dohvaćanja elementa, varijabla i predstavlja redak, a varijabla j stupac

Page 14: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA 2D

• Dvodimenzionalno polje - prikaz

a[0,0]

a[0,1]

a[0,2]

a[0,3]

a[1,0]

a[1,1]

a[1,2]

a[1,3]

a[2,0]

a[2,1]

a[2,2]

a[2,3]

Polja2DProlaz

Page 15: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Metode sa poljima kao parametrima

– Metode mogu imati polja kao parametre, npr.

– Kod običnih varijabli metodi se šalje vrijednost

– Kod varijabli deklariranih kao polja, metodi se šalje referenca što znači da metoda ima pristup originalnom polju

Page 16: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• Prosljeđivanje argumenata pri pozivanju metode

općenito se može izvesti na dva načina

– Prosljeđivanje vrijednosti

• JEDNOSTRANA KOMUNIKACIJA (glavni program-metoda) glavni program prosljeđuje podatke metodi, ali glavni program ne vidi promjene nad tim podatkom

• Stvara se kopija varijable u metodi

– Prosljeđivanje reference

• OBOSTRANA KOMUNIKACIJA (glavni program-metoda) glavni program prosljeđuje podatke metodi, sve promjene koje metoda napravi nad podatkom su vidljive i u glavnom programu

• Metodi poznata memorijska lokacija varijable

• Kada koristimo varijable kao argumente pri pozivanju metoda C# koristi JEDNOSTRANU KOMUNIKACIJU glavni program-metoda

Predavanja argumenata metodi

Page 17: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• Kada koristimo polja kao argumente pri pozivanju metoda C# koristi OBOSTRANU KOMUNIKACIJU glavni program-metoda tj. prosljeđivanje referenci

– Prosljeđivanje reference

• OBOSTRANA KOMUNIKACIJA (glavni program-metoda) glavni program prosljeđuje podatke metodi, sve promjene koje metoda napravi nad podatkom su vidljive i u glavnom programu

• Metodi poznata memorijska lokacija varijable

Predavanja argumenata metodi

Page 18: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

POLJA

• Primjer – Pomoćna metoda za kvadriranje elemenata polja

PoljeParametar

Page 19: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

Zadaci

Page 20: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• U polje naziva „mojePolje” je potrebno dodati 10 proizvoljnih cijelih brojeva. Nakon toga je potrebno ispisati najmanji, najveći i prosječan broj koji se izračunavaju svaki u svojoj metodi – Prosjek računamo da sumiramo vrijednosti svih elemenata polja te ga

podijelimo sa brojem elemenata

1. zadatak Pronalaženje min, max i prosjeka

Deklaracija i instanciranje polja

Pozivi metoda

Ispis MinMaxAvg

Page 21: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

1. zadatak Pronalaženje min, max i prosjeka

Izračun minimuma

Izračun maksimuma

Izračun prosjeka

Kako ove tri metode spojiti u jednu te

vratiti sva tri rezultata??

Page 22: Algoritmi i programiranje - Weboteka.net i programiranje/e-student/006... · ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko • U polje naziva „mojePolje”

ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko

• Zbrajanje velikih brojeva preko dva niza (polja) znakova – int (od -2.147.483.648 do 2.147.483.647)

2. zadatak Zbrajanje velikih brojeva

• Zbrajanje je potrebno napraviti kao na papiru znamenku po znamenku, te je potrebno paziti na prijenos znamenki – Izračun napraviti u metodi

te ispisati rezultat kao na slici

VelikiBrojevi