Programlama Dilleri 3

Benzer belgeler
HSancak Nesne Tabanlı Programlama I Ders Notları

Operatörler. Operatörlerin işlem yapabilmek için ihtiyaç duydukları değerlere ise operand denir.


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

static void dizi_24() { Random rnd = new Random(); int [] tutulan=new int[10]; int dogru;

JAVADA DİZİ İŞLEMLERİ

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

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

Görsel Programlama 1

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

PROGRAMLAMA DİLLERİ I

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

Operator Aşırı Yükleme (Operator OverLoading)

Programlama Dilleri III 1

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

Akış Konrol Mekanizmaları

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

YZM 2105 Nesneye Yönelik Programlama

Java String İşlemleri

11- FONKSİYONLAR (FUNCTIONS)

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

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

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

Programlama Dilleri 3

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Nesne Tabanlı Programlama

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

NESNEYE DAYALI PROGRAMLAMA 11. HAFTA UYGULAMA DERSİ

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

C# Örnek Uygulamalar I

Nesne Tabanlı Programlama

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

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

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

NESNEYE YÖNELİK PROGRAMLAMA

Özyineleme (Recursion)

public static int Toplam int x, int y

Programlama Dilleri 3

PDF. C# Console Örnekleri.

/*int sayi1, sayi2,toplam=0;

ALGORİTMA VE PROGRAMLAMA I

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

C# Çalışma Örnekleri

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

Dizi ( Array ) ve Dizgi ( String )

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

BPR152-Algoritma ve Programlama II Uygulama -13

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

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

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

Visual Basic Uygulamaları-4. Dİ Zİ LER (ARRAYS) ve Nesne Kü meleri

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

BİL1001 Bilgisayar Bilimlerine Giriş 1

ALGORİTMA VE PROGRAMLAMA I

Diziler (Arrays) Çok Boyutlu Diziler

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

Programlama Dilleri 3

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

Emre Alan Bellekte aynı türden sıralanmış verilerin oluşturduğu yapıya dizi denir.

OPERATÖRLER Alıştırmalar

Sınav Dağılım & IMKB Endeks

C# Console Uygulamaları ifelse Yapıları 2

Örnek1: #include <iostream> #include <string> using namespace std;

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

YZM 2116 Veri Yapıları

T.C. MARMARA ÜNİVERSİTESİ BİLGİSAYAR VE ÖĞRETİM TEKNOLOJİLERİ ÖĞRETMENLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI PROGRAMLAMA DERSİ KAPSAMINDA YAPILAN

Javada Diziler. Javada diziler

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

// hataları işaret eden referans

İ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İ

Console.Write = Ekrana Yazıyı ve değişkenin değerini yazarak imleci satırın sonunda beklemesini sağlar.

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

1 JAVASCRIPT NEDİR? 1

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

C# Dilinde Temel Veri Türleri

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Lambda İfadeleri (Lambda Expressions)

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

String Sınıfını Yönetmek

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

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Görsel Programlama (Visual Programming)

Ders 8: Metotlar. barisgokce.com

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Merge Sort Bireşen Sıralama

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

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

Nesneye Dayalı Programlama

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

C#(Sharp) Programlama Dili

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

Transkript:

Diziler (Arrays) 1

Dizi Kavramı Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar arasındaki ayırt edici özellik, bellekteki yeridir. 2

5 elemanlı bir tamsayı dizisi bellekte aşağıdaki gibi yerleştirilir. dizi[] 1020 dizi[0] 20 5 0 16587 dizi[1] dizi[2] dizi[3] dizi[4] Dizinin İsmi İndeks dizi[3] Dizi indeks operatörü 3

C# da diziler ayrı bir tür olarak tasarlanmıştır. Bütün diziler System.Array sınıfından türetilmiştir. Bir dizi tanımlandığında Array sınıfı türünden bir nesne tanımlanmış olur. Dizinin sınırlarını aşan bir indeks kullandığımızda derleme hatası oluşmaz, ancak çalışma zamanında hata oluşur. 4

Dizi Tanımlama 2türlütanımlama yapılabilir : int [ ] dizi = new int[19] veya int [ ] dizi; dizi=new int [19]; 5

new anahtar sözcüğü ile, dizinin her elemanınatemelveritürleriiçinvarsayılan değer, ğ ilk değerğ olarak verilmektedir. Builk değer; referans türleri için null, nümerik türler için 0, bool türü için ise false tur. 6

Dizileri aşağıdaki gibi de tanımlamak mümkündür: string[ ] dizi1= Bilgisayar Mühendisliği Bölümü ;,, Bölümü int [ ]=5,9,12,56,23; float [ ] dizi3=8f,39f,324f,23f,2f; f f f f 7

Dizilerin boyutu C ve C++ dillerinde derleme sırasında bilinmek zorundadır. Böylece derleyici, dizi için bellekte dizinin boyutuna göre yer ayırmaktadır. Ancak C# da dizilerin boyutlarını çalışma zamanında belirtmek mümkündür. 8

Aşağıdakikod parçasını bilgisayarınızda deneyiniz: class Program static void Main(string[] args) Console.Write("Dizinin boyutunu giriniz="); int boyut = Convert.ToInt32(Console.ReadLine()); bool [] dizi = new bool [boyut]; for (int i = 0; i < boyut; i++) Console.WriteLine(dizi[i]); Console.ReadLine(); Bir dizinin boyutu bir kez belirlendikten sonra artık değiştirilemez. Yani dizinin boyutunu dinamik olarak değiştirmemiz mümkün değildir. 9

System.Random Sınıfı Rastgele sayı üretmek için.net Framework sınıf kütüphanesindeki System.Random sınıfı kullanılır. Rastgele sayı üretmek için öncelikle Random sınıfı türünden bir nesne oluşturmakgerekir. ş Örn: Random rnd =newrandom(); 10

rnd nesnesi oluşturulduktan sonra artık bu nesnenin metotlarına tl erişebiliriz. i Örn: int rastgelesayi=rnd.next (10,20); intrastgelesayi=rnd.next(50); int rastgelesayi=rnd.next; double rastgelesayi=rnd.nextdouble(); 11

using System; class dizi_3 static void Main() Random r = new Random(); int[] dizi = new int[20]; char[] chr = new char[20]; for (int i = 0; i < 20; i++) dizi[i] = r.next(1, 51); chr[i] = (char)r.next Next(20, 126); for (int i = 0; i < 20; i++) Console.Write( Write("0 0,2. değer 1,2 -> ", i, dizi[i]); for (int j = 0; j < dizi[i]; j++) Console.Write(chr[i]); Console.WriteLine(); 12

Çok Boyutlu Diziler (Multidimensional i l Arrays) İki türlü çok boyutlu dizi bulunur. Her boyutta eşit miktarda elemanın olduğu düzenli diziler (matrisler) ve her boyutta farklı sayıda eleman barındıran düzensiz diziler(jagged arrays). Aslında düzensiz diziler elemanları da dizi olan dizilerdir. Çok boyutlu dizi tanımlaması yaparken [,, ] şeklinde yazılır. 13

Matris Dizileri int [,] dizi = 1,2,3,4,5,6; Şeklinde tanımlanan bir 3x2 lik dizinin elemanları: dizi[0,0]=1i[0 0] dizi[0,1]=2 dizi[1,0]=3 dizi[1,1]=4 dizi[2,0]=5 dizi[2,1]=6 dizi [0,0] [0,1] [1,0] [1,1] [2,0] [2,1] 14

Aşağıdaki programı bilgisayarınızda deneyiniz. using System; class dizi_4 static void Main() int[,] dizi = 1, 2, 3, 4, 5, 6 ; for (int i=0; i<3; i++) for (int j =0; j < 2; j++) Console.WriteLine(dizi[i, j]); 15

Düzensiz Diziler(Jagged Arrays) Dizilerin elemanları da farklı diziler olabilir. Bu durumda tanımlanan dizinin birbirinden farklı boyutlarda alt elemanları olabilir. Bu gibi yapılara düzensiz diziler ismi verilir. Bu diziler şu şekilde tanımlanırlar: int[][] dizi new int[3][]; dizi[0] = new int[2]; dizi[1] = new int[4]; dizi[2] = new int[3]; 16

Düzensiz tanımlananbir dizinin yapısı şu şekildedir: dizii dizi[0] dizi[0][0] dizi[0][1] dizi[1] dizi[2] dizi[1][0] dizi[2][0] dizi[1][1] dizi[2][1] dizi[1][2] dizi[2][2] dizi[1][3] Düzensiz dizilerde eleman sayısı sabit olmadığı için dizi elemanlarını taramak için Array sınıfının metotları ve ya özellikleri kullanılır. Length özelliği bir dizinin eleman sayısını verir. 17

using System; class dizi_5 static void Main() int[][] dizi = new int[3][]; dizi[0] = new int[] 1, 2 ; dizi[1] = new int[] 3, 4, 5, 6, 7 ; dizi[2] = new int[] 8, 9, 0 ; for (int i = 0; i < dizi.getlength(0); i++) for (int j = 0; j < dizi[i].getlength(0); j++) Console.WriteLine("dizi[0][1]=2",i,j,dizi[i][j]); 18

using System; class dizi_6 static void Main() int[][] dizi = new int [3][]; dizi[0] = new int[] 1,2; dizi[1] = new int[] 3,4,5,6,7; dizi[2] = new int[] 8,9,0; foreach (int[] boyut in dizi) foreach (int eleman in boyut) Console.Write("0,3",, eleman); Console.WriteLine(); 19

System.Array Sınıfı Dizi nesneleri System.Array sınıfından türemişlerdir. Dolayısıyla bu sınıfın bazı özellik ve metotlarını bünyelerinde barındırırlar. 20

Özellikler: IsFixedSize IsReadOnly Length Rank Dizinin eleman sayısınınsabit olup olmadığını verir. (Boolean) Dizideki elemanların sadece okunabilir olup olmadığını verir. (Boolean) Dizideki eleman sayısını verir. Dizinin boyutunu verir. 21

Metotlar: BinarSearch Clear Clone Copy CopyTo GetLength GetValue IndexOf Reverse SetValue Sort CreateInstance Tek boyutlu dizide binary search algoritmasına göre arama yapar. Dizinin elemanlarını varsayılan değere çeker. Dizinin bit bit kopyasını çıkarır. Dizinin bir bölümünü başka bir diziye kopyalar. Bir dizinin belirlenen bir kısmını başka bir diziye kopyalar. Dizideki eleman sayısını verir. Dizideki ilgili eleman değerini verir. Dizi içindeki bir değerin ilk görüldüğü indeksi verir. Diziyi tersine çevirir. Bir dizinin bir elemanına değer atar. Bir boyutlu dizilerde sıralama yapar. Yeni bir dizi nesnesi oluşturur. 22

CreateInstance( ) CreateInstance metodu ile aşağıdaki gibi dizi nesnesi oluşturulabilir: ş Array dizi=array.createinstance(typeof(int),5); İlk parametre her zaman Type türünden olmalıdır. Yukarıdaki gibi bir kullanımda, typeof() operatörü yardımıyla int türünün type sınıfındaki karşılığı elde edilmiş olmaktadır. Örn: CreateInstance(Type,int,int,int); 3 boyutlu bir dizi oluşturulmakta. 23

CreateInstance( ) using System; class dizi_6 static void Main() Array dizi i = Array.CreateInstance(typeof(int), t t) 5, 4, 3); Random r = new Random(); for (int i=0; i< dizi.getlength(0); i++) for (int j=0; j< dizi.getlength(1); j++) for (int k = 0; k < dizi.getlength(2); k++) dizi.setvalue(r.next(10, 100), i, j, k); Console.WriteLine("dizi[0,1,2]=3,3", i,j,k,dizi.getvalue(i,j,k)); 24

CopyTo ( ) CopyTo metodu ile bir dizinin tamamı, başka bir dizinin istenilenyerine kopyalanabilir. Örn: int[ ] dizi1= 1234; 1,2,3,4; int dizi2=new int[10]; dizi1.copyto(dizi2,3); 25

Aynı işlemcopy() metodukullanılarakda gerçekleştirilebilir. Copy(Array dizi1,array dizi2,int uzunluk); Bu şekildeki bir kullanım, uzunluk kadar elemanı dizi1 den dizi2 ye kopyalar.kopyalama işlemi 0. indekten başlar. Copy(Array dizi1,int x,array dizi2,int y,int uzunluk); dizi1 in x. İndeksinden sonraki uzunluk kadar elemanı dizi2 niny. İndeksinden sonrasınakopyalar. 26

using System; CopyTo ( ) class dizi_7 static void Main() int[] dizi1 = 1, 2, 3, 4, 5, 6, 7 ; int[] dizi2 i2 = new int[10]; int[] dizi3 = new int[10]; dizi1.copyto(dizi2, 2); foreach (int i in dizi2) i2) Console.Write(i); Console.WriteLine(); Array.Copy(dizi1, 2, dizi3, 5, 3); foreach (int i in dizi3) Console.Write(i); 27

Array.Sort ( ) Sort() metodunun birçok kullanım biçimi vardır. Temelde aşağıdakiş ğ şekilde kullanımı yaygındır.örn: yyg Array.Sort(Array); 28

using System; Array.Sort ( ) class dizi_8 static void Main() string[] dizi = "Zeynep", "Fatma", "Ali", "Yılmaz", "Gökhan", "Osman", "Feride" ; Console.WriteLine("Dizinin Elemanları\n=================="); foreach (string s in dizi) Console.WriteLine(s); Array.Sort(dizi); Console.WriteLine(); Console.WriteLine("Sıralanmış Dizi\n==============="); foreach (string s in dizi) Console.WriteLine(s); 29

Array.BinarySearch BinarySearch metodunun iki önemli kullanım biçimi vardır Örn: BinarySearch(Array dizi, object nesne); Bu yapı, diziiçerisindenesneyiarar;eğer aranan nesne bulunursa bulunduğu index ile geri dönülür. Eğer bulunamazsanegatif birsayıylageri dönülür. BinarySearch(Array dizi, int baslangic, int uzunluk, object nesne); Bu yapı ise, nesneyi başlangic indeksinden itibaren uzunluk kadar eleman içerisinde arar. 30

using System; Array.BinarySearch class dizi_9 static void Main() string[] dizi = "Zeynep", "Fatma", "Ali", "Yılmaz", "Gökhan", "Osman", "Feride" ; Console.Write("Aranacak İsmi Giriniz :"); string isim = Console.ReadLine(); Array.Sort(dizi); int indeks = Array.BinarySearch(dizi, isim); if (indeks < 0) Console.WriteLine("Aranan isim dizide bulunamadı!"); else Console.WriteLine("Aranan isim dizinin 0. elemanında bulundu...",indeks); 31

Diğer İşlemler Clear() metodu, belirtilen indis aralığındaki elemanları sıfırlar. Array.Clear(dizi,2,5); Reverse() metodu, dizinin tümünü yada belirtilen indis aralığındakielemanları ters çevirir. Array.Reverse(dizi); veya Array.Reverse (dizi,1,3);, Alttaki gibi bir kullanımda ise,1. elemandan itibaren ilk 3 elemanı ters çevirir. 32