Professional Documents
Culture Documents
7. Ders
Diziler
Dr. Öğr. Üyesi Aysun ALTIKARDEŞ
14.11.2021
AMAÇ
Dizi Kavramı
Dizi ve İndislere İsim Verirken Dikkat Edilecek Noktalar
Tek Boyutlu Diziler
for-each Benzeri Döngü Yapısı ile Dizi Elemanlarına Erişmek
İki Boyutlu Diziler
Çok Boyutlu Diziler
Dizi Elemanlarının Başka Bir Diziye Kopyalanması
String İşlemleri
üzerinde önemle durularak, temel programlama bilgilerinin
kazandırılması amaçlanmıştır.
DİZİLER (ARRAYS)
Dizinler yani Arrays sınıfı java.util paketi içinde Object sınıfının bir alt sınıfıdır.
java.lang.Object sınıfından türetildiği için, Object sınıfının tüm özelliklerine
sahiptir ve 110’dan fazla bu sınıfa ait metod vardır.
DİZİLER (ARRAYS)
Kodlama Şekli
veya
Örnek:
int A[ ]={8,9,12,4,5,7,1,0,6};
Örnek:
Örnek
İçerisinde tamsayıları sakladığımız 5 elemanlı bir A dizisi
Değişkenler
İndis
int [ ] A=new int[5];
veya
int A [ ];
A =new int[5];
Bu şekilde tanımlanan 5 elemanlı bir A dizisinin ilk elemanı A[0], son
elemanı ise A[4]’dür.
A[2] ifadesi -> A dizisinin 2. indisli elemanı şeklinde okunabilir ve değeri bu
örnek için 9’dur.
STRING İŞLEMLERİ
String Metodları
14.11.2021
STRING METODLARI
14.11.2021
STRING SINIFI
Örnek:
class deneme {
public static void main(String args[])
{
char uzun[]={'a','b','c'};
String s=new String(uzun);
System.out.println(s.length( ));
}
}
14.11.2021
STRING SINIFI
String İndeksleri
• Bir stringin içinden belirli bir karaktere başvurmak bazen yararlıdır.
• Bu karakterin sayısal indeksi belirtilerek yapılabilir.
• Her string’de indeksler sıfırdan başlar.
• “Selam“ stringinde ‘S‘ karakteri 0. indekste ve ‘m' karakteri de 4.
indekstedir.
14.11.2021
STRING SINIFI
Stringlerin araştırılması
indexOf( ): karakter veya substring'in string içinde geçen ilk konumunu verir.
lastindexOf( ): karakter veya substring'in string içinde geçen son konumunu
verir.
Araştırılmaya nereden hangi konumdan başlanacağı bilgisi şu form ile
verilebilir.
Int indexOf( string s, int baslangic_indeksi )
Int lastindexOf( string s, int baslangic_indeksi )
14.11.2021
STRING SINIFI
Örnek:
import java.io.*;
public class Test {
public static void main(String args[]) {
String Str = new String("Welcome to Tutorialspoint.com");
String SubStr1 = new String("Tutorials");
String SubStr2 = new String("Sutorials");
System.out.print("Found Index :" );
System.out.println(Str.indexOf( 'o' ));
System.out.print("Found Index :" );
System.out.println(Str.indexOf( 'o', 5 ));
System.out.print("Found Index :" );
System.out.println( Str.indexOf( SubStr1 ));
System.out.print("Found Index :" );
System.out.println( Str.indexOf( SubStr1, 15 ));
System.out.print("Found Index :" );
System.out.println(Str.indexOf( SubStr2 ));
}
}
14.11.2021
STRING SINIFI
Çıktı
Found Index :4
Found Index :9
Found Index :11
Found Index :-1
Found Index :-1
14.11.2021
STRING SINIFI
StringMutation.java
14.11.2021
TEK BOYUTLU DİZİLER
Örnek:
import java.util.Scanner;
public class Diziyeelemangirme {
public static void main(String[] args) {
int[ ] Sayi=new int[6];
int veri;
Scanner scan=new Scanner (System.in);
//dizi elemanlarına veri girişi yapılıyor
for(int i=0; i<Sayi.length; i++)
{System.out.println("Tamsayı giriniz: ");
veri=scan.nextInt();
Sayi[i]=veri;
}
//dizi elemanları ekranda gösteriliyor
for(int i=0; i<Sayi.length; i++)
{System.out.println("Sayi[" + i + "]=" + Sayi[i]);
}
}}
TEK BOYUTLU DİZİLER
Örnek:
import java.util.Scanner;
public class Yil {
public static void main(String[] args) {
String Ay[]={"","Ocak","Şubat","Mart","Nisan","Mayıs","Haziran",
"Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"};
Scanner tara=new Scanner(System.in);
int y;
System.out.println("Ay değerini giriniz");
y=tara.nextInt();
if (y>0 && y<=12)
System.out.print(y+". ay..:" + Ay[y]);
else
System.out.print("1 ile 12 arasında bir rakam giriniz");
}}
TEK BOYUTLU DİZİLER
Örnek:
programı yazınız.
DİZİ ve İNDİSLERE
TEK
İSİM
BOYUTLU
VERİRKEN
DİZİLER
DİKKAT EDİLECEKLER
import java.util.Scanner;
public class Toplam {
public static void main(String[] args) {
Scanner tara=new Scanner(System.in);
int N;
int Toplam=0;
System.out.println("Dizi boyutunu giriniz");
N=tara.nextInt();
int A[]=new int[N];
for (int i=0; i<N; i++)
{System.out.println("Dizinin " + i + ". elemanı");
A[i]=tara.nextInt();
Toplam=Toplam+A[i];
}
System.out.print("Toplam="+Toplam);
}}
for-each
DİZİ veBenzeri
İNDİSLERE
Döngü
İSİMYapısı
VERİRKEN
ile DiziDİKKAT
Elemanlarına
EDİLECEKLER
Erişmek
Örnek
1’den 10’a kadar olan sayıları A dizisine aktaran ve dizi elemanlarının toplamını ekranda
gösteren programı yazınız.
int A[ ]={1,2,3,4,5,6,7,8,9,10};
int top=0;
for(int i=0; i<10; i++) top+=A[i];
Ancak for döngüsünün, for-each stilinde kullanımı ile de aynı program kodlanabilir.
for-each
DİZİ veBenzeri
İNDİSLERE
Döngü
İSİMYapısı
VERİRKEN
ile DiziDİKKAT
Elemanlarına
EDİLECEKLER
Erişmek
Örnek
1’den 10’a kadar olan sayıları A dizisine aktaran ve dizi elemanlarının toplamını ekranda
gösteren programı yazınız.
Çözüm:
Örnek
12 odalı (0’dan 11’e kadar) bir otelde, hangi odanın boş hangi odanın dolu
olduğunu gösteren programı yazınız.
public class Otel {
public static void main(String[] args) {
String []A=new String [12];
A[0]="Ali Akça";
A[1]="Bülent Yalçın";
A[2]="Ayşe Koç";
A[3]="Aslı Gül";
A[7]="Zehra Ak";
A[A.length-1]="Otel Müdür";
for(int j=0;j<A.length;j++)
if(A[j]!=null)
System.out.println("Oda No "+j+": "+A[j]);
else
System.out.println("Oda No "+j+": "+"Boş");
}}
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Kullanım şekli:
Örnek
Aşağıdaki A matrisini oluşturup ekranda gösteren programı yazınız.
1 2 3 4
5 6 7 8
9 10 11 12
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
for(i=0;i<4;++i){
A[t][i]=(t*4)+i+1;
System.out.print(A[t][i]+"\t");
}
System.out.println();
}
}}
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Örnek
Aşağıdaki A matrisini oluşturup ekranda gösteren programı yazınız.
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Örnek
Aşağıdaki birim matrisi oluşturup ekranda gösteren programı yazınız.
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Örnek
Aşağıdaki birim matrisi oluşturup ekranda gösteren programı yazınız.
0 1 1 1 1
-1 0 1 1 1
-1 -1 0 1 1
-1 -1 -1 0 1
-1 -1 -1 -1 0
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Örnek
A[2][3] matrisinin satırları ile sütunlarını yer değiştiren programı yazınız.
(Matematikte bu işlem transpose olarak adlandırılır ve A matrsinin
transposesi AT ile gösterilir. )
A matrisi 1 2 3
4 5 6
1 4
B matrisi
2 5
3 6
DİZİ ve İNDİSLERE İSİM
İki Boyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Kullanım şekli:
3 boyutlu A dizisini
şeklinde tanımlarız.
Bu ifade “4 satır, 5 sütunu olan 3 adet iki boyutlu matris için yer aç” şeklinde
okunur. A dizisi 4*5*3=60 elemana sahiptir.
DİZİ ve İNDİSLERE Çok
İSİMBoyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Örnek
Dışarıdan girilen N*N şeklindeki A matrisinin sütunları toplamı ile B dizisini,
satırları toplamı ile C dizisini oluşturup, ekranda gösteren programı yazınız.
N*N elemanlı A matrisinde N=3 değerini alırsa;
Sütunlar Toplamı
2 3 4 → 9
A3*3 = 5 6 7 → 18
1 5 9 → 15
↓ ↓ ↓
[8 14 20]
Satırlar toplamı
DİZİ ve İNDİSLERE Çok
İSİMBoyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
import java.util.Scanner;
public class Matris6 {
public static void main(String[] args) {
Scanner tara=new Scanner (System.in);
System.out.println("Dizi boyutunu giriniz");
int N=tara.nextInt();
int A[ ][ ]=new int[N][N];
int B[ ]=new int [N];
int C[ ]=new int [N];
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
System.out.print("A[" + i + "," + j + "]...:");
A[i][j]=tara.nextInt();}
System.out.println();}
for(int i=0; i<N ;i++){
for(int j=0;j<N;j++){
B[i]=B[i]+A[i][j];
C[i]=C[i]+A[j][i];}}
System.out.println("B dizisinin elemanları");
for (int i=0; i<N;i++){
System.out.print(B[i]+"\t");}
System.out.println("\nC dizisinin elemanları");
for(int i=0; i<N;i++){
System.out.print(C[i]+"\t");}
}}
DİZİ ve İNDİSLERE Çok
İSİMBoyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
Örnek
M*N elemanlı bir A matrisinin içindeki tek sayıları, tek boyutlu B dizisine
aktaran programı yazınız.
DİZİ ve İNDİSLERE Çok
İSİMBoyutlu
VERİRKEN
Diziler
DİKKAT EDİLECEKLER
İ
mport java.util.Scanner;
public class Matris7 {
public static void main(String[] args) {
Scanner tara=new Scanner (System.in);
System.out.println("A Matrisinin satır değerini giriniz");
int M=tara.nextInt();
System.out.println("A Matrisinin sütun değerini giriniz");
int N=tara.nextInt();
int A[ ][ ]=new int[M][N];
int B[ ]=new int[M*N];
int s=0;
for(int i=0; i<M; i++){
for (int j=0; j<N; j++){
System.out.print("A[" + i + "," + j + "]...:");
A[i][j]=tara.nextInt();}
System.out.println();}
for(int i=0; i<M; i++){
for(int j=0; j<N; j++){
if (A[i][j]%2!=0)
{B[s]=A[i][j];
s=s+1;}
}}
System.out.println("B dizisinin elemanları");
for (int i=0; i<s; i++){
System.out.print(B[i]+"\t");}
}}
DİZİDizi
ve Elemanlarının
İNDİSLERE İSİM
Başka
VERİRKEN
Bir Diziye
DİKKAT
Kopyalanması
EDİLECEKLER
Örnek
a dizisinin elemanlarını, b dizisine kopyalayan ve ekrana tersten yazan
programı yazınız. (a dizisi {“ali”,”betül”,”gani”,”zehra”})
DİZİDizi
ve Elemanlarının
İNDİSLERE İSİM
Başka
VERİRKEN
Bir Diziye
DİKKAT
Kopyalanması
EDİLECEKLER