java diziler

43
JAVA Diziler

Upload: serhat

Post on 16-Sep-2015

283 views

Category:

Documents


4 download

DESCRIPTION

Java Dizileri konusunda konu anlatımı

TRANSCRIPT

  • JAVADiziler

  • Diziler

    Belirli bir tipte 1 veya daha fazla veri ieren deikenlerdir. Diziler bellekte ardk olarak sralanr. Temel veri tipinde ya da referans veri tipinde(nesne) dizilerimiz olabilir.

    Veritipi diziadi=new Veritipi[elemansayisi];

    Dizi elemanlarna keli parantez iinde indis deeri belirtilerek ulalr. Dizilerde ilk elemann indisi 0 dr. int[] a=new int[10] ; // tam say a dizisi- indisleri 0 dan 9 a kadardr. float[] b=new float[20] ; // ondalkl saylardan oluan bir dizi String[] isimler=new String[100] ; // Metin dizisi

    a[0]=5; // Dizinin ilk elemanna 5 deeri atanyor.a[5]=7; // Dizinin 5 indisli elemanna 7 deeri atanyor.

  • DZLER

    Dizi snrlar dndaki elemanlarna eriip zerinde ilem yapmak isterseniz hata uyars alrsnz ve ilem yapamazsnz.

    Dizileri metotlara parametre olarak geebilirsiz. Sadece dizinin adn yazn.

    int[] a=new int[10]; // eklinde tanmlanm olsun. d=k(a); // k metoduna a dizisi parametre olarak

    geilmi. Dizilerin uzunluunu program iinde renmek

    istiyorsak dizinin length propertisi ile renebiliriz. Diziadi.length eklinde kullanlr.

    ICINDEKILER

  • UYGULAMA Bir diziye deer atama ve yazdrma

    public class Program {public static void main(String[] args) {

    int[] a=new int[5]; // 5 elemanl bir dizi tanmlanyorint i;

    a[0]=2;a[1]=4;a[2]=6;a[3]= 8;a[4]=10;

    for(i=0; i

  • UYGULAMA Bir diziye deer atama ve ilem yapma

    public static void main(String[] args) {// 5 elemanl bir dizi tanmlanyorint[] a= {2, 4, 8,3,7 }; int i;

    for (i = 0; i < 5; i++) System.out.println(a[i]);

    a[2]=a[0] + a[1];System.out.println();

    for(i=0; i

  • UYGULAMA Klavyeden girilen deerleri bir diziye atama ve yazdrma

    public static void main(String[] args) {// 5 elemanl bir dizi tanmlanyorint[] a= new int[5];int i;Scanner sc = new Scanner(System.in);

    for (i = 0; i < 5; i++) {a[i] = sc.nextInt(); // Klavye ile girilen say dizi elemanna aktarlyor

    }System.out.println("Girdiiniz Saylar");

    for(i=0; i

  • UYGULAMA -ARAMAKlavyeden girilen deerleri bir diziye atayn. Sonra kullancdan baka aramas

    yaptrlacak bir say isteyin. Dizide bu girdiiniz saynn olup olmadn kullancya bildirin.

    public static void main(String[] args) {int[] a= new int[5]; // 5 elemanl bir dizi tanmlanyorint i, aranansayi;boolean bulundu=false; // Balangta aranan dizide yok varsaylyorScanner sc = new Scanner(System.in);

    for (i = 0; i < 5; i++) {a[i] = sc.nextInt(); // Klavye ile girilen say dizi elemanna aktarlyor

    }System.out.printf("Aranana Sayi: ");aranansayi = sc.nextInt();

    for(i=0; i

  • DZLERDE BOYUT DETRME

    Dizilerin boyutlarn istediimiz zaman arttrabiliriz.

    int[] yeniDizi = new int[3]; yeniDizi = new int[3];

    Ancak bu ilem daha nceden dizi iinde olan verilerin kaybolmasna neden olur. Bunun iin dikkatli olmalyz. Verilerin kaybolmasn istemiyorsak nce baka bir dizide bu deerleri tutmalyz ve sonra yeni dizimize kopyalamalyz. Bir sonraki sayfada buna bir rnek yapacaz.

    ICINDEKILER

  • DZLERDE BOYUT DETRME

    public static void main(String[] args) {

    int[] yeniDizi = new int[3];int[] gecici;

    yeniDizi[0]=3; yeniDizi[1]= 5; yeniDizi[2]=7;gecici = yeniDizi; // yeniDizi nin referans gecici ye aktarlyor// yeniDizi yeniden boyutlandrlyor. nceki veriler kaybolur.yeniDizi = new int[10]; for(int i=0; i

  • DZ KOPYALAMA

    Dizilerde hzl bir ekilde kopyalama yapabilmek iin System snf iindeki arraycopy metodu kullanmak daha performansldr.

    Kullanm ekli:

    System.arraycopy(dizi1, baslangic, dizi2, baslangic, adet)

    rnein elimizde u diziler olsun.

    int[] dizi1= new int[10];int[] dizi2 = new int[20];

    System.arraycopy(dizi1, 0, dizi2, 0, dizi1.length)

    dizi1 in ilk elemannda itibaren dizi1 deki tm elemanlar al, dizi2 nin 0 inci konumundan itibaren koy.

    ICINDEKILER

  • DZ ELEMANLARINI DOLAMA

    Eer bir dizi zerindeki tm elemanlar zerinde sra ile ilem yapacak isek aadaki gibi daha sade bir kullanm tercih edebiliriz.

    Bu kullanmda zellikle dizinin kanc eleman zerinde olduumuzun bir nemi yok ise tercih edilir. Eer dizinin kanc eleman zerinde olduumuzu merak ediyorsak normal for dngsn tercih edebiliriz.

    Burada dikkat edersek dizini veri tipi ile for iinde tanmlanan deiken ayn tipte.

    DiziVeriTipi[] Dizi;for ( DiziVeriTipi eleman : Dizi) {

    System.out.println(eleman);}

    rnek:

    public static void main(String[] args) {

    int[] yeniDizi = {3,5,7,9,11};

    for(int eleman:yeniDizi) {System.out.println(eleman); // Dizideki her int eleman yazdrlyor

    }}

    ICINDEKILER

  • UYGULAMA

    Rastgele 10 tam say retip bir tam say dizisine ataynz. Daha sonra dizinin elemanlarn ekrana yazdrnz.

    Rastgele say retmek iin Random snf eklenmelidir.import java.util.Random;

    Random SayiUretici=new Random();

    Sayi=SayiUretici.Next(10);

    (0 dan 9 a kadar rast gele say atanr)

    ICINDEKILER

  • UYGULAMA Rastgele 10 tam say retip bir tam say dizisine ataynz. Daha sonra

    dizinin elemanlarn ekrana yazdrnz.

    public static void main(String[] args) {// 10 elemanl bir dizi tanmlanyorint[] a= new int[10];int i;

    Random sayiuretici = new Random();

    for (i = 0; i < 10; i++) {a[i] = sayiuretici.nextInt(10);

    }System.out.println(">=0 ve

  • UYGULAMA Bir tamsay dizisinin ortalamasn bulun ve ekrana yazdrnz.

    public static void main(String[] args) {// 5 elemanl bir dizi tanmlanyorint[] a = {5, 15, 20, 30, 10};int i, toplam = 0, ortalama;

    // Dizinin elemanlar toplanyorfor (i = 0; i < a.length; i++) {

    toplam = toplam + a[i];}ortalama = toplam / a.length; // Ortalama hesaplanyorSystem.out.println("Ortalama : " + ortalama) ;

    }

    ICINDEKILER

  • UYGULAMA Ekrandan 5 adet tam sayy bir diziye girin. Daha sonra bu dizinin

    ortalamasn bulun ve ekrana yazdrn

    public static void main(String[] args) {int[] a = new int[5]; // 5 elemanl dizi tanmlanyorScanner sc = new Scanner(System.in);

    int i, toplam = 0, ortalama;for (i = 0; i < a.length; i++) {

    a[i] = sc.nextInt(); // Klavye ile dizi elemanlarna giri yaplyor}

    for (i = 0; i < a.length; i++) {toplam = toplam + a[i]; // Dizinin elemanlar toplanyor

    }ortalama = toplam / a.length; // Ortalama hesaplanyorSystem.out.println("Ortalama : " + ortalama); // Yazdrlyor

    }

    ICINDEKILER

  • UYGULAMA -SIRALAMAEkrandan 5 adet tam sayy bir diziye girin. Daha sonra bu dizinin elemanlarn

    kkten bye sralayn. Sralama algoritmasn kendimiz yazalm.

    public static void main(String[] args) {

    int[] dizi = new int[5]; // 5 elemanl dizi tanmlanyorint gecici;Scanner sc = new Scanner(System.in);

    for(int i=0; i< dizi.length; i++) {dizi[i]= sc.nextInt(); // Diziye elemanlar alnyor.

    }for(int i =0; i

  • Dizilerin Metotlara Parametre Olarak Geilmesi

    Dizileri fonksiyonlara parametre olarak geebilirsiz. Sadece dizinin adn yazn.

    int[] a=new int[10]; // 10 elemanl tanmlanm dizi. int[][] matris = new int[10][5]; // 10 satr 5 stnluk dizi iki boyutlu dizi

    d=topla(a); // topla metoduna a dizisi parametre olarak geilmi. DiziyeDegerAl(matris); // DiziyeDegerAl metoduna matris dizisi gnderilmi.

    Burada dikkat edilmesi gereken nokta dizinin gnderildii metodun parametre yapsnda dizimiz hangi tipte ve boyutta ise metotta da ayn ekilde olmaldr.

    int topla(int[] dizi) , - int DiziyeDegerAl(int[][] dizimiz) , -

  • Dizilerin Metotlara Parametre Olarak Geilmesi-rnek

    public static int topla(int[] dizi){int toplam =0;for(int sayi:dizi) {

    toplam=toplam + sayi; // Dizinin her bir eleman toplanyor}return toplam;

    } public static void main(String[] args) {

    int[] dizimiz = {3,5,7,9,11}; // Dizimiz tanmlanyor ve ilk deerler atanyorint sonuc;

    sonuc = topla(dizimiz); // dizimiz topla metoduna parametre olarak geiliyorSystem.out.println("Dizideki Elemanlarn toplam :" + sonuc);

    }

  • ki Boyutlu Diziler

    Programlama da her problemi tek boyutlu diziler ile zemeyiz. Baz durumlarda iki boyutlu dizilere de ihtiya duyarz. ki boyutlu dizilerde dizinin satr ve stn saysn belirtiriz.

    zellikle matematikteki matris problemleri iki boyutlu diziler kullanlarak zlr.

    VeriTipi[][] DiziAdi = new VeriTipi[satir_sayisi][sutun_sayisi]

    eklinde tanmlayabiliriz.

    int[][] matrisA = new int[4][5]; // iki boyutlu tamsay dizisi

    int[][] matrisB = { {1,2,3},{4,5,6},{7,8,9}}; // Tanmlamada deer atama

  • ki Boyutlu Diziler-rnek

    public static void main(String[] args) {

    int[][] carpim_tablosu = new int[5][5];

    for(int i=0; i

  • ki Boyutlu Diziler

    Her bir satrnda farkl sayda stun bulunan bir iki boyutlu dizi tanmlamak istersek aadaki gibi yaparz.

    public static void main(String[] args) {

    int[][] b = new int[2][]; // 2 satrl belirsiz stunlu bir dizi olutur

    b[ 0] = new int[5]; // 0 nc satr 5 stundan oluturuluyor

    b[ 1] = new int[3]; // 1 inci satr 3 stundan oluturuluyor

    // Dizinin her elemanna birtakm deerler aktarlyor

    for(int i=0; i

  • UYGULAMA-ki Boyutlu Diziler

    A*5+*5+ ve B*5+*5+ eklinde olan iki tamsay dizimiz olsun. Bu iki diziye rastgele tamsaylar atayn. Daha sonra bu iki dizinin elemanlarnn bire bir toplayn. Sonularda C dizisine aktarn.

    Yani B[0][0] ile B[0][0] , B[0][1] ile B[0][1] , B[0][2] ile B[0+*2+ .., toplanacak.

    Sonu dizisi C yi ekrana yazdrn.

  • Arrays Snf

    Arrays snf bize diziler ile ilgili yapacamz baz ilerde byk kolaylklar salar. Diziler zerinde arama ve sralama ilemlerimizi kolaylatrr.

    Bunun nce Arrays snfnn import edilmesi gerekir.

    import java.util.Arrays; // Arrays snf ekleniyor

    public class JavaApplication1 {

    public static void main(String[] args) {

    int[] dizi = {5,1,2,9,11,7,8,3};

    Arrays.sort(dizi); // Arrays snfnn sort metodu kullanlyor

    for(int a: dizi ) {

    System.out.println(a);

    }

    }

    }

  • ArrayList Snf

    ArrayList snf dinamik diziler olarak adlandrlabilir. Bu ismi almasndaki en byk neden nceden dizileri tanmlarken bir dizi boyutu belirlerken imdi ise dizi boyut belirtmemize gerek yoktur.

    Sabit boyutlu dizi tanmlamadaki dezavantajlar:

    Dizileri dizi boyutu belirterek tanmladmz da tm elemanlarn kullanmayacak olsak bile hafzada yer tutar.

    Eer dizideki eleman saysn arttrmak istersek, ekstra zaman ve bellek ihtiyac ortaya kar. nk bu ilem srasnda dizinin saca kadar baka bir bellek alann daha bellekte ayrmak gerekir. Ayrca nceki deerleri korumak iin bir kopyalama ilemi yapmak gerekir.

    ArrayListe yapsnn ien bir balon gibi dnebilirsiniz. htiya olduka boyutu byr.

    Bu zellii kullanmak iin ncelikle ArrayList snfn sayfa import etmek gerekmektedir.

    import java.util.ArrayList;

  • ArrayList Snf

    ArrayList Tanmlamas;

    ArrayList diziAdi= new ArrayList();

    Sk kullanlan metodlar:

    add(veri_tipi) Listenin sonuna yeni bir eleman ekler.

    remove(indis) nidisi belirtilen eleman listeden karr.

    clear() Listedeki tm elemanlar siler

    indexof(object) Liste ierisinde arama yapar. Bulursa bulunduunun indisi,

    bulamazsa -1 deerini geri gnderir.

    size() Dizinin eleman saysn verir.

    get(indis) Listedeki belirtilen indisteki eleman dndrr.

    contains (object) Liste ierisinde arama yapar. Bulursa true, bulamazsa false dner.

  • ArrayList Snf-rnek

    import java.util.ArrayList;

    public class JavaUygulama {

    public static void main(String[] args) {

    // Dinamik Liste tanmlanyor. Elemanlar tamsay olacak

    ArrayList TamsayiListesi = new ArrayList();

    TamsayiListesi.add(10);

    TamsayiListesi.add(30);

    TamsayiListesi.add(40);

    System.out.println("Eleman Says: " + TamsayiListesi.size());

    for(int i=0; i

  • UYGULAMA

    Kullancdan isimler aln ve bunlar bir ArrayList iinde saklayn. Kullanc k kelimesini girer ise isim alma ilemini tamamlayn. Ekrana ka adet isim girildiini yazn. Ayrca girilen tm isimleri ekrana listeleyin.

  • String Metotlar

    Metot Aklamas

    length() Stringin karakter uzunluunu verir

    charAt(indis) Sorgulanan indisin karakterlerini geriye gnderir.

    substring(balang,biti) Balang ve biti indisleri arasndaki ifadeyi gnderir. Eer ki biti belirtilmemi ise sonuna kadar ki blm gnderir.

    indexof(string_ifade) String iinde arama yapar varsa karakterin indisini yoksa -1 gnderir.

    lasindexOf(string_ifade) Sorgulanan karakterlerin son pozisyonunu gnderir.

    replace(x_string,y_string) x_string ifadesi grd yere y_string ifadesi yazlr.

    toUpperCase() Stringin btn karakterleri byk harf yaplr.

    toLowerCase() Stringin btn karakterleri kk harf yaplr.

    equals(string_ifade) Stringleri karlatrmak iin kullanlr.

  • String Metotlar-rneklerlength(), charAt(), substring()

    public static void main(String[] args) {

    int uzunluk, arananBasPos, arananBitPos;

    char c;

    String strParca;

    String metin = "Cok Uygulama Yaparak Programlamayi Cok yi Ogreniyorum";

    System.out.println("Metnimiz : " + metin );

    uzunluk = metin.length();

    System.out.println("Metin dizisinin boyutu : " + uzunluk + " karakter");

    c = metin.charAt(10);

    System.out.println("Metin dizisi 10 uncu karakter : " + c );

    strParca = metin.substring(4,12);

    System.out.println("Metin dizisi indis 4 ten 12 inci ye kadar : " + strParca );

    }

  • String Metotlar-rneklerindexOf(), lastIndexOf()

    public static void main(String[] args) {

    int arananBasPos, arananBitPos;

    String metin = "Cok Uygulama Yaparak Programlamayi Cok yi Ogreniyorum";

    String degistirilenMetin;

    System.out.println("Metnimiz : " + metin );

    // Bulursa balang indisi, bulunamaz ise arananpos -1 olur.

    arananBasPos= metin.indexOf(Yap");

    System.out.println("Metin dizisinde Yap' balang indisi : " + arananBasPos );

    // Bulursa son rastlanan balang indisi, bulunamaz ise arananBitPos -1 olur.

    arananBitPos= metin.lastIndexOf("ok");

    System.out.println("Metin dizisinde 'yap' balang indisi : " + arananBitPos );

    }

  • String Metotlar-rneklerreplace(), toLowerCase(), toUpperCase

    public static void main(String[] args) {

    String metin = "Cok Uygulama Yaparak Programlamayi Cok yi Ogreniyorum";

    String degistirilenMetin, strKucukHarfMetin, strBuyukHarfMetin;

    System.out.println("Metnimiz : " + metin );

    // 'cok' aranyor ve yerine 'cok cok' konuluyor

    degistirilenMetin = metin.replace("cok", "cok cok");

    System.out.println("Deitirilen metin : " + degistirilenMetin );

    strKucukHarfMetin = metin.toLowerCase();

    System.out.println("Metnin btn harflari kk yapld : " + strKucukHarfMetin );

    strBuyukHarfMetin = metin.toUpperCase();

    System.out.println("Metnin btn harflari byk yapld : " + strBuyukHarfMetin );

    }

  • String Metotlar-rneklerequals()

    public static void main(String[] args) {

    // Grld gibi metin2 ve metin3 ayn ierie sahip

    String metin2 = "Bilimsel",

    String metin3= "Bilimsel";

    System.out.println("Metnimiz : " + metin );

    // metin2 ve metin3 birbiri ile karlatrlyor

    if ( metin2.equals(metin3)) {

    System.out.println("metin2 ve metin3 birbirine eit");

    }

    else {

    // Eer metin2 ve metin3 birbirinden farkl olsayd aadaki ekrana kacakt

    System.out.println("metin2 ve metin3 birbirinden farkl");

    }

    }

  • Nesne Dizileri (Object Arrays)

    Javada dizilerimizi temel veri tipleri olan byte, int, long, float, double .vb oluturabileceimiz gibi kendi, oluturduumuz snflardan da diziler yapabiliriz. Aadaki gibi bir Ogrenci snfmz olsun.

    public class Ogrenci {

    public int OgrenciNo;

    public String Ad;

    }

    Eer bu snftan tek bir nesne oluturmak istersek aadaki gibi yapardk.

    Burada renci1 bir nesnedir. Bellekte yer kaplar.

    Ogrenci ogrenci1 = new Ogrenci();

    ogrenci1.OgrenciNo=100;

    ogrenci1.Ad = Ahmet;

  • Nesne Dizileri (Object Arrays)

    Eer bizim 30 rencimiz olsayd, her biri iin farkl deiken adnda saklamak pek pratik olmayacakt. Ayn temel veri tiplerinde olduu gibi dizi oluturabiliriz.

    30 rencinin bilgilerinin tutabilecek bir dizi aadaki gibi olurdu.

    Ogrenci[] ogrenciler= new Ogrenci[30];

    Bu ekildeki bir tanmlamay bir kitabn iindekiler blmne benzetebiliriz.

    Nasl ki iindekilerde bizzat ilgili sayfann bilgisi yok sadece konunun hangi sayfada olduu var. Yukarda yaptmz tanmlamada da henz her bir renci iin bir bellek alan ayrlmam durumdadr.

    Biz sadece iindekiler sayfasn oluturduk.

    O zaman renci bilgilerini bellekte tutabilmek iin 30 tane renci yaratma iini yapmamz lazm.

  • Nesne Dizileri (Object Arrays)

    Ogrenci[] ogrenciler= new Ogrenci[30];

    ogrenciler nesne dizisinin her bir renci eleman iin aada bellek ayrlyor.

    ogrenciler[0] = new Ogrenci(); // 0 indislii renci iin bellek ayrlyor

    ogrenciler[1] = new Ogrenci(); // 1 indislii renci iin bellek ayrlyor

    ogrenciler[2] = new Ogrenci(); // 2 indislii renci iin bellek ayrlyor

    .

    Diyebileceimiz gibi.

    for(int i=0; i

  • Nesne Dizileri (Object Arrays)

    public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    Ogrenci[] ogrenciler = new Ogrenci[30]; // 30 rencilik nesne dizisi tanmlad

    for(int i =0; i

  • UYGULAMALAR

  • UYGULAMALAR

    Ekrandan 5 adet say aln ve bunlar bir diziye koyun. Sonra bunlar ters srada tekrar ekrana yazdrnz.

    Ekrandan 5 adet say alp bir diziye yerletirin. Dizi elemanlarn 2 ile arpp tekrar ayn srada diziye koyun. Sonra ekrana yazdrn.

    Ekrandan 5 adet say alp bir diziye yerletirin. Bunlar bir dairenin yarap olsun. Her dairenin evresini hesaplayn ve cevre dizisine koyun ve ekrana yazdrnz.

    Cevre = 2 * PI * yaricap

  • UYGULAMALAR

    Ekrandan 5 adet tam sayy bir diziye girin. Dizinin ortalamasn bulun. Dizide ortalamann stnde olan saylar ekrana yazdrn. En sona da ortalamann stnde ka adet say olduunu yazdrnz.

    Bir deneyin sonularnn bulunduu dizide en ok tekrar eden sonucu deneyin doru sonucu olarak kabul edeceiz. Buna gre girilen bir dizideki en ok tekrar eden sonucu bulup ekrana yazdran program yaznz.

    Ekrandan 10 adet rencinin isim ve notunu aln. sim ve Not almn bitirdikten sonra notu 60 tan byk olanlarn ismini ekrana yazn.

  • UYGULAMALAR

    Bir tam say dizisindeki elemanlarn deeri kadar yldz her bir satrda yazdran program yaznz.

    rnein dizideki elemanlar srasyla 3, 2, 5, 4 olsun

    * *** ** * * * ** * * *

  • UYGULAMALAR

    Aadaki gibi tamsay deerlerden oluan bir dizimiz var. Bu dizideki en byk eleman bulan program yaznz.

    int dizi= {6,1,9,22,3,5,6,9,13,20};

    Yukardaki gibi tamsay deerlerden oluan bir dizimiz var. Bu dizideki en kk eleman bulan program yaznz.

    Bir zar 100 defa atlmaktadr. Hangi deerlerin ka defa geldiini dizi kullanarak hesaplayan bir program yaznz. Zarlarn rastgele say retmesini Random snf ile yapabilirsiniz.

  • UYGULAMALAR- 2 BOYUTLU DZ

    Saysal loto oynamak istiyorsunuz ve artk program yazabildiime gre yazlacak saylar bilgisayara rastgele rettirebilirim diye dnyorsunuz.

    Saysal lotoda 1 den 49 a kadar rakamlar olabiliyor ve her satrda 6 say olabiliyor. Siz 10 satr oynamak istiyorsunuz. rettiiniz saylar 6 ya 10 luk 2 boyutlu bir diziye koyun. Sonra kullancya bu dizideki saylar tablo grnmnde gsterin.

    satrl ve iki stunlu A ve B isimli iki matris oluturun. Matrislerin deerlerini konsoldan okutun ve bu matrislerin arpmn yaptrn ve bir C dizisine koyun. C dizisini konsola yazdrn.

  • UYGULAMALAR-NESNE DZLER

    Aadaki gibi bir Ogrenci classmz var.

    class Ogrenci {

    int ogrencino;

    String isim;

    String Sehir;

    }

    Uygulamamz aadaki ihtiyalar karlasn.

    Kullancnn belirttii adet renci girii yaplabilsin. Ogrenci tipinide bir nesne dizisine bilgiler koyulabilsin.

    Klavye ile ogrencino su girilen bir ogrencinin bilgileri listelensin.

    Nesne dizisini ogrencino ya gre sralayp listeleyin.

    Nesne dizisini isime gre sralayp listeleyin.

    Nesne dizisini Sehir e gre sralayp listeleyin.