Deo 1 – Uvod i definisanje nizova


1. Kratko objašnjenje je iza sledećeg dugmenceta:

 


Kada se porede programski jezici C i C#, kroz prizmu nizova, višedimenzionalnih nizova i matrica, uočavaju se i sličnosti i razlike koje proizlaze iz njihove prirode i filozofije dizajna.

Osnovna sličnost je u tome što oba jezika omogućavaju rad sa nizovima, pri čemu se elementi niza čuvaju uzastopno u memoriji i pristup im se vrši preko indeksa koji uvek počinje od nule. I u C-u i u C#-u moguće je deklarisati višedimenzionalne nizove, a elementima se pristupa navođenjem više indeksa. Takođe, u oba jezika nizovi predstavljaju kolekcije elemenata istog tipa podataka, što omogućava njihovu efikasnu obradu.

Međutim, razlike između jezika postaju očigledne čim se razmotri način na koji se nizovi kreiraju i koriste. U jeziku C nizovi su statički, što znači da njihova veličina mora biti poznata u trenutku kompajliranja programa, osim ako se ne koriste posebne funkcije za dinamičku alokaciju memorije. U C# jeziku nizovi se tretiraju kao objekti, kreiraju se u toku izvršavanja programa i smeštaju na tzv. heap memoriju, što im daje veću fleksibilnost.

Bezbednost je još jedna značajna razlika. C ne vrši proveru granica niza, pa pristup elementima van zadatih granica može dovesti do oštećenja memorije i nepredvidivog ponašanja programa. Nasuprot tome, C# ima ugrađene mehanizme za proveru granica i u slučaju neispravnog pristupa automatski prekida izvršavanje, prijavljujući grešku kroz izuzetak.

Kada se govori o višedimenzionalnim nizovima i matricama, u jeziku C oni su zapravo organizovani kao nizovi nizova, pri čemu se struktura mora jasno definisati i ostaje nepromenljiva. C# nudi dve mogućnosti: korišćenje pravih višedimenzionalnih nizova, gde svi redovi imaju isti broj kolona, ili korišćenje tzv. nazubljenih (jagged) nizova, gde svaki red može imati različitu dužinu. Ovakav pristup daje veću slobodu programeru i prilagođava se raznovrsnijim problemima.

Što se tiče matrica, ni jedan od jezika nema poseban ugrađeni tip podatka za rad sa njima, ali je pristup različit. U C-u se matrice realizuju kroz dvodimenzionalne nizove, a sve operacije se implementiraju ručno. U C# jeziku, zahvaljujući objektnoj orijentaciji i bogatstvu biblioteka, lako se kreiraju posebne klase ili koriste gotovi moduli koji omogućavaju rad sa matricama na višem nivou apstrakcije.


2. Poređenje sa C

U C jeziku niz je jednostavno „deo memorije“ u kojem čuvamo podatke istog tipa. Deklaracija izgleda ovako:

int niz[5];

Ovo znači da imamo niz od 5 mesta, i svako mesto je tipa int. Prvi element niza ima indeks 0, drugi indeks 1, itd (indeksi uvek idu od nule do velicina - 1).

Tu smo na nivou proceduralnog razmišljanja – programer mora sam da vodi računa o veličini, indeksima, pa čak i da se pazi da ne pređe granice niza. Na početku programa mora da bude definisana maksimalna dužina niza i od toga može da se koristi manji broj elemenata, ali ne može da se naknadno poveća veličina niza, niti da bude veća od početno definisane.

U C# takođe postoje nizovi, ali ih posmatramo više objektno – svaki niz je zapravo objekat klase System.Array.

To znači:

  • niz ima svojstva (npr. Length),

  • niz ima metode (npr. Sort, Reverse),

  • niz nije samo „deo memorije“ već objekat sa mogućnostima.

Deklaracija:

int[] niz = new int[5];

Dakle, sintaksa je drugačija, ali logika je ista: niz čuva više vrednosti istog tipa.


3. Primer
using System;

class Program
{
    static void Main()
    {
        int[] brojevi = { 2, 4, 6, 8, 10 };

        Console.WriteLine("Prvi element: " + brojevi[0]);
        Console.WriteLine("Treći element: " + brojevi[2]);
    }
}


4.    

 

Zadatak 1: Napraviti niz od 3 imena svojih drugova i ispisati ih na ekranu.

string[] imena = { "Ana", "Marko", "Petar" };

foreach (string el in imena)
    Console.WriteLine(el);

Deo 2 – Sistemske metode za rad sa nizovima

Jedna od prednosti C# jezika je to što nudi gotove metode za rad sa nizovima. To znači da ne moramo sve da pišemo sami – mnoge stvari su već pripremljene. Drugim rečima, pošto je niz u jeeziku C# objekat, on ima metode i svojstva, od kojih ćemo najčešće koristiti sledeće:

  • Length –  dužina niza  (broj elemenata niza) - ovo je svojstvo, a ispod su neke metode:

  • Array.Sort(niz) – sortira niz u rastući redosled

  • Array.Reverse(niz) – obrće redosled elemenata niza

  • Array.IndexOf(niz, vrednost) – vraća indeks na kojem se nalazi određena vrednost

NAPOMENA:  U C jeziku ovoga nema – tamo moramo sve sami da pišemo (sopstvene funkcije za sortiranje, za traženje itd.).


5.   

int[] brojevi = { 42, 5, 17, 9 };

Console.WriteLine("Dužina niza: " + brojevi.Length);

Array.Sort(brojevi);
Console.WriteLine("Sortirani niz:");
foreach (int x in brojevi)
    Console.WriteLine(x);

Array.Reverse(brojevi);
Console.WriteLine("Obrnuti niz:");
foreach (int x in brojevi)
    Console.WriteLine(x);

int indeks = Array.IndexOf(brojevi, 17);
Console.WriteLine("Broj 17 se nalazi na poziciji: " + indeks);

6.    

 

Zadatak 2: Napraviti niz od 6 brojeva, ispisati ga, zatim ga sortirati i ponovo ispisati.

int[] niz = { 33, 12, 7, 98, 50, 1 };

Console.WriteLine("Originalni niz:");
foreach (int x in niz)
    Console.WriteLine(x);

Array.Sort(niz);

Console.WriteLine("Sortirani niz:");
foreach (int x in niz)
    Console.WriteLine(x);

Zadatak 3: Napraviti niz stringova (imena predmeta u školi). Koristiti Array.Reverse da se prikažu unazad.


Last modified: Friday, 25 September 2026, 10:35 AM