Upload
others
View
58
Download
5
Embed Size (px)
Citation preview
Algoritmi i programiranje
Polja
Prof. dr. sc. Tonči Carić
ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko
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)
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
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
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
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
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;
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
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
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
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
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
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
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
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
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
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
ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko
POLJA
• Primjer – Pomoćna metoda za kvadriranje elemenata polja
PoljeParametar
ZITS :: Algoritmi i programiranje :: Polja © 2013 Carić, Ivanjko
Zadaci
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
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??
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