Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Benzer belgeler
Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

JAVADA DİZİ İŞLEMLERİ

HSancak Nesne Tabanlı Programlama I Ders Notları

Dizi ( Array ) ve Dizgi ( String )

Programlama Dilleri 3

D İ Z İ L E R A R R A Y S

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Diziler İndisli Değişkenler

Programlama Dillerinde Kullanılan Veri Tipleri

Başlangıç Durumuna Getirme ve Temizlik. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1

ALGORİTMA VE PROGRAMLAMA I

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

Başlangıç Durumuna Getirme ve Temizlik

Javada Diziler. Javada diziler

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

ALGORİTMA VE PROGRAMLAMA I

Diziler (Arrays) Çok Boyutlu Diziler

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Özyineleme (Recursion)

Java String İşlemleri

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

ALGORİTMA VE PROGRAMLAMA II

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

// hataları işaret eden referans

BİL-141 Bilgisayar Programlama I (Java)

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama 1

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

C# Örnek Uygulamalar I

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Matlab da Dizi ve Matrisler. Mustafa Coşar

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

public static int Toplam int x, int y

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 6. UYGULAMA

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 3

Örnek 1: Programı yazın ve çalıştırın.

Arasınav Örnek Soruları Bahar 2018

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

7. HAFTA. Erişim Belirleyiciler

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Sunum İçeriği. Programlamaya Giriş

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Temel Veri Yapıları. (Veri Yapıları 1. Bölüm)

Nesne Yönelimli Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 4. Yrd.Doç.Dr.Hacer Karacan

BİL1001 Bilgisayar Bilimlerine Giriş 1

Java Dersi. Altuğ Bilgin Altıntaş

2. Dereceden Denklemin Köklerini Bulan Program

Ardışık Veri Tipleri. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

4.Hafta. this Anahtar Sözcüğü

Nesne Yönelimli Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş

YZM 2105 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Temel Veri Türü İşlemleri

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

Ders - 7 while döngüsü

NESNEYE YÖNELİK PROGRAMLAMA

BİLGİSAYAR PROGRAMLAMA DERSİ

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

İstisnalar (Exceptions) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 1

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

Programlama Dilleri 1. Ders 4: Diziler

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Bölüm 6. Veri Türleri ISBN

Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

İki Boyutlu Dizi Uygulamaları

Erişim konusunda iki taraf vardır:

Transkript:

Javada Diziler Java da diziler nesnedir; içerisinde belirli sayıda eleman bulunur. Eğer bu sayı sıfır ise, dizi boş demektir. Dizinin içerisindeki elemanlara eksi olmayan bir tam sayı ile ifade edilen dizi erişim indisi ile erişilir. Bir dizide n tane eleman varsa dizinin uzunluğu da n kadardır; ilk elemanın indisi/konumu 0 dan başlar, son elemanı ise n-1 dir. Dizi içerisindeki elemanlar aynı türden olmak zorundadır. Eğer dizi içerisindeki elemanların türü double ise, bu dizinin türü için double denilir. Bu double tipinde olan diziye String tipinde bir nesne atanması denenirse hata ile karşılaşılır. Diziler temel veya herhangi bir sınıf tipinde olabilir... Dizi Türündeki Referanslar Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez... double[] dd ; // double tipindeki dizi double dd[] ; // double tipindeki dizi float [] fd ; // float tipindeki dizi Object[] ao ; // Object tipindeki dizi Dizi nesnelerini oluşturmak için new anahtar sözcüğü kullanılması gereklidir. double[] d = new double[20]; // 20 elemanlı double tipindeki dizi double dd[]= new double[20]; // 20 elemanlı double tipindeki dizi float []fd = new float [14]; // 14 elemanlı float tipindeki dizi Object[]ao = new Object[17]; // 17 elemanlı Object tipindeki dizi String[] s = new String[25]; // 25 elemanlı String tipindeki dizi Dizi Boyunun Değiştirilmesi Dizi boyutu birkez verildi mi, artık değiştirilemezler! : int liste[] = new int[5] ; liste = new int[15] ; // yeni bir dizi nesnesi bağlandı www.dijitalders.com Javada Diziler 1

Yukarıda dizi boyutlarının büyütüldüğünü sanmayın; burada, yalnızca yeni bir dizi nesnesi daha oluşturulmaktır. liste dizi referansının daha evvelden bağlanmış olduğu dizi nesnesi (new int[5]), çöp toplama işlemi sırasında çöp toplayıcısı tarafından bellekten silinecektir. Dizi Elemanlarına Erişim Java dilinde dizi kullanımı diğer dillere nazaran daha az risklidir; anlamı, eğer tanımladığımız dizinin sınırları aşılırsak, çalışmaanında (runtime) hata ile karşılaşacağımızdır. Örneğin 20 elemanlı bir double dizisi tanımlanmış olsun. Eğer bu dizinin 78. elemanına ulaşılmak istenirse (- ki böyle bir indisli eleman yok), olanlar olur ve çalışma-anında hata alınır; böylesi hatanın (ArrayIndexOutOfBounds Exception) çalışma-anında alınması güvenlik açısından güzel bir olaydır. Böylece dizi için ayrılmış bellek alanından dışarı çıkılıp başka verilere müdahale edilmesi engellenmiş olunur. Örnek public class DiziElemanlariGosterimBir { double[] d = {2.1, 3.4, 4.6, 1.1, 0.11; String[] s = {"defter", "kalem", "sarman", "tekir", "boncuk"; ; // double tipindeki dizimizi ekrana yazdırıyoruz for (int i = ; i < d.length; i++) { System.out.println("d[" + i + "] = " + d[i]); // System.out.println("d["+78+"] = " + d[78] ); // Hata! System.out.println("---------------"); // String tipindeki dizimizi ekrana yazdırıyoruz for (int x = ; x < s.length; x++) { System.out.println("s[" + x + "] = " + s[x]); // System.out.println("s["+78+"]=" + s[78] ); // Hata! Length ifadesiyle bir dizinin içerisindeki eleman sayısı öğrenilir. Bu örnekte iki adet dizi tanımlandı:double ve String türündeki dizilerin içerisine 5 er adet eleman yerleştirildi ve sonradan bunları for döngüsü ile ekrana yazdırıldı. i < d.length ifadesine dikkat edilirse, döngü sayacın 4 e kadar artmaktadır; ancak, döngü sayacının 0'dan başladığı unutulmamalıdır. Eğer 5 elemana sahip olan dizinin 78. elemanına erişilmeye kalkışılırsa, derleme anında (compile-time) bir hata ile karşılaşılmaz; ancak, uygulama yürütüldüğü zaman; yani, çalışma-anında (runtime) hata ile karşılaşılır. Uygulamanın sonucu aşağıdaki gibi olur: d[] = 2.1 d[1] = 3.4 d[2] = 4.6 d[3] = 1.1 d[4] = 0.11 www.dijitalders.com Javada Diziler 2

--------------- s[] = defter s[1] = kalem s[2] = sarman s[3] = tekir s[4] = boncuk Bir önceki uygulamanın çalışma anına hata vermesi istenmiyorsa, yorum satırı olan yerler açılması ve uygulamanın baştan derlenip çalıştırması gerekmektedir. Aynı örnek daha değişik bir şekilde ifade edilebilir: DiziElemanlariGosterimIki.java public class DiziElemanlariGosterimIki { double[] d; String[] s; public DiziElemanlariGosterimIki() { // double tipindeki diziye eleman atanıyor d = new double[5]; d[] = 2.1; d[1] = 3.4; d[2] = 4.6; d[3] = 1.1; d[4] = 0.11; // d[5] = 0.56 ; // Hata! // String tipindeki diziye eleman atanıyor s = new String[5]; s[] = new String("defter"); s[1] = new String("kalem"); s[2] = new String("sarman"); s[3] = new String("tekir"); s[4] = new String("boncuk"); // s[5] = new String("duman"); // Hata! public void ekranabas() { // double tipindeki diziyi ekrana yazdırıyoruz for (int i = ; i < d.length; i++) { System.out.println("d[" + i + "] = " + d[i]); System.out.println("-------------------"); // String dizi ekrana yazdırılıyor for (int x = ; x < s.length; x++) { System.out.println("s[" + x + "] = " + s[x]); DiziElemanlariGosterimIki deg = new DiziElemanlariGosterimIki(); deg.ekranabas(); www.dijitalders.com Javada Diziler 3

Bu örnekte 5 elemanlı dizilere 6. eleman eklenmeye çalışıldığında, derleme anında (compile-time) herhangi bir hata ile karşılaşmayız. Hata ile karışılacağımız yer çalışma anındadır. Çünkü bu tür hatalar çalışma anında kontrol edilir. Yalnız çalışma anında hata oluşturabilecek olan satırlar kapatıldığı için şu an için herhangi bir tehlike yoktur; ancak, çalışma anında bu hatalar ile tanışmak isterseniz, bu satırların başında // yorum ekini kaldırmanız yeterli olacaktır. Uygulamanın sonucu aşağıdaki gibi olacaktır: d[] = 2.1 d[1] = 3.4 d[2] = 4.6 d[3] = 1.1 d[4] = 0.11 ------------------------ s[] = defter s[1] = kalem s[2] = sarman s[3] = tekir s[4] = boncuk Dizilerin Elemanlarını Sıralama Dizi elemanlarını büyükten küçüğe doğru sıralatmak için java.util paketini altındaki Arrays sınıfı kullanılabilir. Bu sınıfın statik sort() yordamı sayesinde dizilerin içerisindeki elemanlar sıralanabilir: Örnek DiziSiralama.java import java.util.*; // java.util kütüphanesini kullanmak için public class DiziSiralama { public static void ekranabas(double[] d) { for (int i = ; i < d.length; i++) { System.out.println("d[" + i + "] = " + d[i]); double d[] = new double[9]; d[] = 2.45; d[1] = 3.45; d[2] = 4.78; d[3] = 1.45; d[4] = 15.12; d[5] = 1; www.dijitalders.com Javada Diziler 4

d[6] = 9; d[7] = 15.32; d[8] = 78.17; System.out.println("Karisik sirada"); ekranabas(d); Arrays.sort(d); System.out.println("Siralanmis Sirada"); ekranabas(d); Uygulama sonucu aşağıdaki gibi olur: Karisik sirada d[] = 2.45 d[1] = 3.45 d[2] = 4.78 d[3] = 1.45 d[4] = 15.12 d[5] = 1.0 d[6] = 9.0 d[7] = 15.32 d[8] = 78.17 Siralanmis Sirada d[] = 1.0 d[1] = 1.45 d[2] = 2.45 d[3] = 3.45 d[4] = 4.78 d[5] = 9.0 d[6] = 15.12 d[7] = 15.32 d[8] = 78.17 Dizilerin Dizilere Kopyalanması Bir dizi tümden diğer bir diziye kopyalanabilir:bunu bir örnekle açıklayalım. Örnek: www.dijitalders.com Javada Diziler 5

DiziSiralama.java import java.util.*; // java.util kütüphanesini kullanmak için public class DiziSiralama { public static void ekranabas(double[] d) { for (int i = ; i < d.length; i++) { System.out.println("d[" + i + "] = " + d[i]); double d[] = new double[9]; d[] = 2.45; d[1] = 3.45; d[2] = 4.78; d[3] = 1.45; d[4] = 15.12; d[5] = 1; d[6] = 9; d[7] = 15.32; d[8] = 78.17; System.out.println("Karisik sirada"); ekranabas(d); Arrays.sort(d); System.out.println("Siralanmis Sirada"); ekranabas(d); System sınıfının statik yordamı olan arraycopy() sayesinde dizi1 dizi2 ye kopyalandı. Sonuç aşağıdaki gibi olur: dizi2[] = 1 dizi2[1] = 2 dizi2[2] = 3 dizi2[3] = 4 dizi2[4] = 40 dizi2[5] = 30 dizi2[6] = 20 dizi2[7] = 10 www.dijitalders.com Javada Diziler 6

Çok Boyutlu Diziler Çok boyutlu diziler, Java da diğer programlama dillerinden farklıdır. Sonuçta dizinin tek türde olması gerekir. Yani, dizi içerisinde diziler tanımlayabilirsiniz. int[ ] t1 = {{ 1, 2, 3, { 4, 5, 6 ; Yukarıda ifade edildiği gibi iki boyutlu temel türden oluşmuş çok boyutlu dizi oluşturulabilir. Çok boyutlu dizileri oluşturmanın diğer bir yolu ise, int [ ]t1 = new int [3][4] ; int [ ] t1 = new int [4] ; //! Hata! Çok boyutlu dizileri bir uygulama üzerinde incelersek; Örnek: CokBoyutluDizilerOrnekBir.java public class CokBoyutluDizilerOrnekBir { int ikiboyutlu[][] = new int[3][4]; ikiboyutlu[][] = 45; ikiboyutlu[][1] = 83; www.dijitalders.com Javada Diziler 7

ikiboyutlu[][2] = 11; ikiboyutlu[][3] = 18; ikiboyutlu[1][] = 17; ikiboyutlu[1][1] = 56; ikiboyutlu[1][2] = 26; ikiboyutlu[1][3] = 79; ikiboyutlu[2][] = 3; ikiboyutlu[2][1] = 93; ikiboyutlu[2][2] = 43; ikiboyutlu[2][3] = 12; // ekrana yazdırıyoruz for (int i = ; i < ikiboyutlu.length; i++) { for (int j = ; j < ikiboyutlu[i].length; j++) { System.out.println(" ikiboyutlu[" + i + "][" + j + "] = " + ikiboyutlu[i][j]); Verilen örnekte int türünde 3 e 4 lük (3x4) çok boyutlu dizi oluşturuldu; bu diziyi 3 e 4'lük bir matris gibi de düşünülebilir. Uygulama sonucu aşağıdaki gibi olur: ikiboyutlu[][] =45 ikiboyutlu[][1] =83 ikiboyutlu[][2] =11 ikiboyutlu[][3] =18 ikiboyutlu[1][] =17 ikiboyutlu[1][1] =56 ikiboyutlu[1][2] =26 ikiboyutlu[1][3] =79 ikiboyutlu[2][] =3 ikiboyutlu[2][1] =93 ikiboyutlu[2][2] =43 ikiboyutlu[2][3] =12 Uygulama sonucu matris gibi düşünülürse aşağıdaki gibi olur: 45 83 11 18 17 56 26 79 3 93 43 12 www.dijitalders.com Javada Diziler 8

Kaynak: Burak Taş www.dijitalders.com Javada Diziler 9