PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler

Slides:



Advertisements
Benzer bir sunumlar
DİZİLER – I. Kısım YRD.DOÇ.DR. CİHAD DEMİRLİ
Advertisements

STRİNG FONKSİYONLARI.
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
void medyan(int cevap[]) { int j; siralama(cevap);
String Diziler(Katarlar)
Tanım Birbirleriyle ilişkili ve bitişik iki ya da daha fazla bellek hücresinden oluşan yapı Örnek dizi tanımı: int tamsayiDizi[10]; tamsayiDizi[0] /*ilk.
Diziler.
OOP UYGULAMA 5.
Selçuk Üniversitesi’nin Bilişime Gönül Veren Gençleri
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler(Arrays).
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 10 Yapılar ve Birleşimler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
7. DİZİLER Diziler birçok değişkene aynı adla ulaşmayı sağlayan bir grup veri yapısıdır. Bir dizi aynı tipte ve aynı adı paylaşan bir grup değişken demektir.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DÖNGÜ İFADELERİ.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
DİZİLER.
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Nesneye Yönelik Programlama
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Görsel C# Programlama Güz 2009 (6. Hafta).
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Chapter 6: Using Arrays.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller Aslı Ergün.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 2: Koşula Göre İşlem Yapma
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
NESNEYE YÖNELİK PROGRAMLAMA
Kalıtım , Sınıf Asli Ergün.
Diziler (Arrays).
JAVA’DA DİZİLER Dr.Galip AYDIN.
Bölüm 3: Diziler BTEP 102 – Veri Yapıları ve Programlama
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
DİZİLER Arrays.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
Nesne Tabanlı Programlama 2
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA DERSİ 6. DERS NOTU Konu: Matlab’ de Diziler ve Matrisler.
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
NBP103 Programlama Temelleri Öğr. Gör. Mahmut Kılıçaslan
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
7. DİZİLER Bir dizi, aynı tipteki elemanların yan yana sıralanışı ile elde edilen bir bilgi kümesidir. Matematikte kullanılan doğal sayılar (1,2,3,..),
NİŞANTAŞI ÜNİVERSİTESİ
Diziler(Arrays).
Sunum transkripti:

PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği

Dizi (Array) Birbiri ile ilişkili verilerin bir sıra halinde kaydedilmesi ve işlenmesi gerektiği durumlarda diziler kullanılır. Dizi içindeki elemanların hepsi aynı veri tipindedir ve bellekte artarda saklanırlar. Diziye eleman ekleme ve dizideki elamanları okuma işlemleri genellikle döngüler kullanılarak yapılır.

Dizi Tanımlama Bir dizi tanımı yapmak için veri türünden sonra [] kullanılır: int[] sayilar; Dizinin eleman sayısını belirlemek veya değiştirmek için new komutu kullanılır: sayilar = new int[10]; Eleman sayısı dizi tanımlandığı anda da new komutu kullanılarak belirlenebilir: char[] isim = new char[15]; C dilinde eleman sayısı dizi tanımlanırken verilmek zorunda idi (int sayilar[10]; şeklinde) ve sonradan değiştirilemiyordu.

Dizilerde İndis Kullanımı Dizilerin ilk elemanının indisi sıfırdır: Önceki slaytta tanımladığımız sayılar dizisinin son elemanı sayilar[9] olacağı için, eğer sayilar[10]’a değer atanırsa derleme sırasında hata vermez, fakat program çalışırken «IndexOutOfRangeException: Dizin, dizi sınırlarının dışındaydı» yazılı bir hata mesajı görüntülenir ve program sonlandırılır. Dizinin hangi elemanına değer atanacak ise köşeli parantez içinde o elemanın indis değeri yazılmalıdır: sayilar[5] = 1500; isim[3] = 'K'; sayilar dizisinin 6. elemanına 1500, isim dizisinin 4. elemanına da ‘K’ değerleri atanıyor.

1-10 arasındaki sayıların karesini bir diziye kopyalayan ve ekranda gösteren program static void Main(string[] args) { int i; int[] a = new int[10]; for (i = 1; i <= 10; i++) a[i-1] = i * i; Console.WriteLine(a[i-1]); } a dizisi daha küçük boyutta tanımlansa idi yada a[i-1] yerine a[i] kullanılsa idi program hatasız derlenir ama doğru çalışmazdı. Bu program dizi kullanmadan yapılabilir miydi? EVET

Girilen 10 tane tamsayıdan en büyüğünü bularak ekranda gösteren program static void Main(string[] args) { int[] sayilar = new int[10]; int i, enBuyuk; for (i = 0; i < 10; i++) { Console.Write((i + 1) + ". sayıyı giriniz : "); sayilar[i] = Convert.ToInt32(Console.ReadLine()); } enBuyuk = sayilar[0]; for (i = 1; i < 10; i++) if (sayilar[i] > enBuyuk) enBuyuk = sayilar[i]; Console.WriteLine("En büyük sayı = " + enBuyuk); Tek döngü ile yapılabilir miydi? EVET Dizi kullanmadan yapılabilir miydi? EVET (önceki derste yapmıştık) 1 <= i-1 i

Girilen 10 tane tamsayıyı girilme sırasının tersinde ekranda gösteren program static void Main(string[] args) { int[] sayilar = new int[10]; for (int i = 0; i < 10; i++) Console.Write((i + 1) + ". sayıyı giriniz : "); sayilar[i] = Convert.ToInt32(Console.ReadLine()); } for (int i = 9; i >= 0; i--) Console.WriteLine(sayilar[i]); Tek döngü ile yapılabilir miydi? HAYIR Dizi kullanmadan yapılabilir miydi?

toplam=toplam+dizi(i) 15 elemanlı bir sayı dizisine bilgi girişi yapılarak elemanların toplamını bulan program static void Main(string[] args) { int[] dizi = new int[15]; int toplam = 0; for (int i = 0; i < 15; i++) Console.Write((i + 1) + ". eleman: "); dizi[i] = Int32.Parse(Console.ReadLine()); toplam += dizi[i]; } Console.WriteLine("Toplam = " + toplam); AKIŞ ŞEMASI: Başla toplam Dur dizi(i) i,1,15,1 i toplam=toplam+dizi(i)

10 elemanlı iki dizinin eş indisli elemanlarının toplamını gösteren program static void Main(string[] args) { int[] dizi1 = new int[10], dizi2 = new int[10]; for (int i = 0; i < 10; i++) { Console.Write("İlk dizinin " + (i + 1) + ". elemanı : "); dizi1[i] = Convert.ToInt32(Console.ReadLine()); } Console.Write("İkinci dizinin " + (i + 1) + ". elemanı : "); dizi2[i] = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("İki dizinin elemanlarının toplamı : "); for (int i = 0; i < 10; i++) Console.WriteLine(dizi1[i] + dizi2[i]);

Dizilere ilk değer atama Dizi tanımlandığı anda ilk değerler atanabilir: int[] a = { 10, 25, 15, 40, 30 }; char[] b = { 'A', 'l', 't', 'a', 'n' }; Bu şekilde bir tanımlama yapıldığında dizinin boyutu verilen eleman sayısına eşit olacak şekilde belirlenir. Eğer dizi tanımlandıktan sonra elemanlar tek tek girilseydi (a[0] = 10; a[1] = 25; ...), öncesinde new ile boyut vermek gerekecekti.

10 elemanlı iki dizinin eş indisli elemanlarının toplamını gösteren program Daha önce yazdığımız programda kullanıcının 20 tane değer girmesi gerekiyordu. Bu programda ise değerler programcı tarafından veriliyor: static void Main(string[] args) { int[] dizi1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int[] dizi2 = { 2, 7, 9, 2, 3, -1, 5, 7, 4, 1 }; Console.WriteLine("İki dizinin elemanlarının toplamı : "); for (int i = 0; i < 10; i++) Console.WriteLine(dizi1[i] + dizi2[i]); }

Çok Boyutlu Diziler [ ile ] arasında 1 virgül ile 2 boyutlu dizi, 2 virgül ile 3 boyutlu dizi, ... tanımlanabilir: int[,] matris = new int[3,3]; char[,] isimler = new char[2,5]; string[,] isimler2 = new string[2,2]; char[,,] isimler2 = new char[2,2,5]; 7 2 1 4 0 -1 5 9 -4 { {7, 2, 1}, {4, 0, -1}, {5, 9, -4} } { {'A', 'l', 't', 'a', 'n'}, {'A', 'l', 'i', ' ', ' '} } { { "Altan", "Ali" }, { "Ahmet", "Veli" } }; {{{'A', 'l', 't', 'a', 'n'}, {'A', 'l', 'i', ' ', ' '}}, {{'A', 'h', 'm', 'e', 't'}, {'V', 'e', 'l', 'i', ' '}}}

3x3 Kare Matris Toplama Programı static void Main(string[] args){ int[,] matris1 = new int[3, 3], matris2 = new int[3, 3]; for (int i = 1; i <= 3; i++) for (int j = 1; j <= 3; j++) { Console.Write("İlk matris " + i + ". satır " + j + ". sütun: "); matris1[i - 1, j - 1] = Convert.ToInt32(Console.ReadLine()); } Console.Write("İkinci matris " + i + ". satır " + j + ". sütun: "); matris2[i - 1, j - 1] = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i <= 2; i++) { for (int j = 0; j <= 2; j++) Console.Write("{0,5}", matris1[i, j] + matris2[i, j]); Console.WriteLine(); Ekrana formatlı yazdırma hakkında bilgi için: hafta3-ödev2-AsalMükemmel.cs

Dizileri kapsayan dizi C dilinde iki boyutlu dizi [][] şeklinde tanımlanır. C# dilinde ise bu kullanım dizilerin dizisi (Jagged Array) anlamına gelir. İçerdiği her dizi aynı sayıda elemana sahip olmayabilir. int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

Notlar C# dilinde new kullanımının faydası: int[] sayilar; Dizinin henüz sadece türü belli büyüklüğü belli değil sayilar = new int[10]; Şu anda 10 elemanlı olduğunu belirledik sayilar = new int[20]; Şimdi de 20 elemanlı olarak yeniden tanımladık foreach (C: for each, VB: For Each) döngüsü ile dizinin eleman sayısı kadar döngü adımı sağlanabilir: int[] sayilar = {4, 5, 6, 1, 2, 3, -2, -1, 0}; foreach (int i in sayilar) Console.WriteLine(i);

Ödevler 10 elemanlı bir dizinin elemanlarının aritmetik ortalamasını bulan programı yazınız. Matris Çarpımı programı yazınız. Matrislerin boyutlarını kullanıcı belirleyecek ve sonrasında değerleri girecektir. Matrislerin boyutları çarpma işlemine göre uygun olması için ilk matrisin sütun değeri ile ikinci matrisin satır değeri eşit girilmesi sağlanacaktır. Kullanıcının ENTER tuşuna basana kadar klavyeden girdiği her şeyi tersten (sondan başa doğru) gösteren programı yazınız.

Ödevler 4. 100 Adam ve 100 kapımız var. 1. adam 1’in katları olan kapılardan, 2. adam 2’nin katları olan kapılardan, ...., N. Adam N’in katları olan kapılardan, ... , 100. Adam 100’ün katları olan kapılardan geçerek kapıların konumlarını değiştiriyor. (Kapı açıksa kapatıyor, kapalıysa açıyor). En başta bütün kapıların kapalı olduğunu kabul edersek, 100. adam da geçtikten sonra hangi kapıların açık olduğunu bulan programı yazınız.

Ödevler 5. Romalı problemi: Roma’da Kral 21 kişinin öldürülmesine karar veriyor. Cellat fazla yorulmamak için öldürülecek olanları çember biçiminde diziyor. Herkesin eline bir balta veriyor. Öldürme kuralı olarak da 2. Kişi 3. Kişiyi öldürüyor. 5. Kişi 6. Kişiyi öldürüyor. Yani 2 kişi atlayıp 3. kişi öldürülüyor. Bu son iki kişi kalana kadar sürüyor. Son kalan iki kişi serbest bırakılacaktır. Serbest bırakılan kişilerin hangi numaralar olduğunu bulan programı yazınız.