#encoding:UTF-8 #Ruby de dizilere erişimde birçok yöntem kullanılır. Aşağıda o yöntemlerden bazılarına değindik. dizi=[] #yukarıda boş bir dizi oluşturduk dizi=[1,"oNUR arslan"] #yukarıda 2 elemanlı bir Dizi oluşturduk. ruby de dizilerde int ve string ifadeler tek bir yerde yer alabiliyor. dizi=Array.new #yukarıda boş bir dizi oluşturduk. dizi=Array.new(3) #Yukarıda 3 indisli boş bir dizi oluşturduk. dizi=%{Onur 1} #yukarıda 2 elemanlı bir diziz oluşturduk. elemanların tipine göre kaydetme işlemini ruby otomatik gerçekleştiriyor. #yani Onur string olarak, 1 ise int olarak kaydedilecektir. dizi=["Onur Arslan","Trakya Üniversitesi","Bilgisayar Teknolojisi ve Bilişim Sistemleri"] #dizi gösterim şekillerini gösterdikten sonra 3 elemanlı bir dizi oluşturuyoruz. puts "Dizinin Uzunluğu: #{dizi.length}" #dizi'nin uzunluğunu(length) ekrana yazdırır. #times döngüsünü kullanarak dizi isimli dizinin tüm elemanlarını ekrana yazdırın. i=0 dizi.length.times{ puts dizi[i] i+=1 } dizi[1]="" #yukarıda dizinin uzunluğu kadar(dizi.length) times döngsünün dönmesini sağlıyoruz. #i yerel değişkenini dışarıda tanımladık ki döngü her başa girdiğinde i yerel değişkeni kaldığı yerden artarak devam etsin. # while döngüsünü kullanarak dizi isimli dizinin elemanlarını ekrana yazdırınız. i=0 while i<dizi.length puts dizi[i] i+=1 end #while döngüsünü biliyorsanız kullanımında zorlanmayacaksınız. i değişkeni dizinin uzunluğundan küçük olduğu sürece döngü çalışacak ve her i'ci eleman ekrana yazdırılacak dizi[1]="Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu" #yukarıda dizinin 1.indisinin elemanına yeni değer atadık. #dizi dizisinin tüm elemanlarını for döngüsü kullanarak ekrana yazdırınız. for i in dizi puts i end # dizi nin her elemanı sıra ile i geçici değişkenine atayacak ve puts ile ekrana yazdırılmasını sağlayacağız. #elemanların her brini each fonksiyonu ile ekrana yazdırabilriz. dizi.each{|eleman|print eleman," + "} puts #1den 10'a kadar olan sayıları ekrana yazdıran programı yazınız for i in 1..10 print i, " " end puts #10 kere 11e kadar olan sayılardan rastgele 10 sayı üren (rand(11)) programı yazınız for i in 1..10 print rand(11), " " end puts #sayiDizisi'nin ilk ve son indisindeki elemanları silen ve ilk indisine 0,1 ve son indisine 5,6,7 sayılarını eklemek içni aşağıdaki işlemleri yapalım. sayiDizisi=[2,2,3,4,4]#dizimizi oluşturduk print sayiDizisi#tüm elemanlarını ekrana yazdırdık puts sayiDizisi.shift#ilk indisteki sayıyı indisten atar sayiDizisi.unshift(1)#ilk indisine 1 rakamını ekler ve diğerleri 1 indis sağ kayar. sayiDizisi = [0]+sayiDizisi#ilk indisine 1 rakamını ekledik ve diğerlerini 1 indis sağ kaydırdık sayiDizisi.pop#son indisteki sayıyı atar sayiDizisi.push(5)#son indisine 5 rakamını ekler. sayiDizisi<<6#son indise 6 rakamını ekledik. sayiDizisi<<[7] print sayiDizisi#1 ve 5 eklendikten sonra tüm elemanları ekrana yazdırdık sayiDizisi.flatten!#bu ifade [7] dizisini dizi olarak değilde eleman olarak eklemeyi sağlar. normal bir görünüm sağlar. print sayiDizisi #yukarıda kulandığımız metotlarda sayıları dizilerde birleştirme işlemi yapmış olduğumuzda belirtelim. #örneğin sayiDizisi <<[6] olarak eklersek sayiDizisi içersinde ayrı bir dizi olarak gözükecektir. puts #sayiDizisine kullanıcının istediği indise istediği sayıyı araya eklediği programı yazalım. print "Sayının Ekleneceği İndis Numarasını Giriniz: " diziIndis=gets.chomp.to_i#gets ile kullanıcan aldırdığımız sayı enter a basıdlığında oluşan \n karakterini chomp ile silip değeri integer yani tam sayı yapamk için to_i dedik print "Sayıyı Giriniz: " sayi=gets.chomp.to_i sayiDizisi.insert(diziIndis,sayi) print sayiDizisi puts #kullanıcının silmek istediği sayıyı alıp silen ve ekrana yazan programı yazalım print "Silmek istediğiniz sayıyı giriniz: " sayi=gets.chomp.to_i sayiDizisi.delete sayi print sayiDizisi puts #kullanıcının istediği indisteki sayıyı silen ve kalan asyıları ekrana yazdıran programı yazınız print "Silinecek sayının indis numarasını giriniz: " diziIndis=gets.chomp.to_i sayiDizisi.delete_at diziIndis print sayiDizisi puts #kullanıcının gireceği sayıdan küçük veya büyük olan sayıları silen programı yazalım. print "Sayıyı Giriniz: " sayi=gets.chomp.to_i print "1. Sayıdan Küçük Olanları Sil\n2. Sayıdan Büyük Olanları Sil\n3. Sayıya Eşit Olanları Sil\n4. Sayıdan Farklı Olanları Sil\nİşlem Numarasını Giriniz: " islem=gets.chomp.to_i if islem==1 sayiDizisi.delete_if {|gecici| gecici<sayi}#gecici değişkeni dizinin her elemanı sıra ile bu değişkene atanır ve değerlendirme yapılır elsif islem==2 sayiDizisi.delete_if {|gecici| gecici>sayi} elsif islem==3 sayiDizisi.delete_if {|gecici| gecici==sayi} elsif islem==4 sayiDizisi.delete_if {|gecici| gecici!=sayi} else puts "Geçersiz İşlem !" end print sayiDizisi puts #öğrenci notlarını küçükten büyüğe sıralayan ve kullanıcının istediği indisler arasında ki sayıları diziden parçalayan programı yazınız. notlar=%w{20 50 78 93 25 49 34 87 56 54 21 5 67 69 34 56 43 28} #notlar.sort #yukarıdaki ifadeyi kaldırıdk çünkü !(ünlem) işareti olamyınca kalıcı olarak sıralama yapmıyor. notlar.sort! print "Notlar: ", notlar,"\n" print "Kaçıncı Indisten İtibaren Sayı Parçalamak İstiyorsunuz: " indisSec=gets.chomp.to_i puts print "Kaç Eleman Seçmek İstiyorsunuz: " elemanSayisi=gets.chomp.to_i notlar.slice!(indisSec,elemanSayisi)#işlemin kalıcı olmasını istmeiyorsak ! kaldırıyoruz. print notlar,"\n" #eper notlar.slice!(2) dersek bize sadece 2.indisteik sayıyı verecek. print notlar.sort.reverse,"\n" #notlar dizisini küçükten büyüğe tersten sıraladık yani büyükten küçüğe print notlar.sort.reverse.uniq #notlar dizisini büyükten küçüğe sıraladık ve birbirini tkerarlayan sayıları 1 kere gösterilmesini sitedik. #ifadelerde ünlem işareti olmadığı için gerçek anlamda bir değişiklik yapmaz. puts #dizinin tüm elemanlarını çağırmak ve üzerinde zaman zaman işlem yaptırmamız gerekebilir. böyle bir durumda c# bilenlerin foreach olarak yakından tanıdığı bu ifadeyi burda each olarak görüyoruz. #bir sayı dizisi oluşturalım ve bu sayılar arasında çift olanalrı, tek olanları ve 10dan küçük olanları ayrı dizilere atayan programı yazalım dizi1=[] dizi2=[] dizi3=[] dizi4=[] for i in 1..100 dizi1<<i end #yukaruda 1'den başlayarak 100'e kadar tüm sayıları dizinin son indisine << ifadesi ile ekledik. #each fonksiyonu eğer tek satır olmayacak ise do belirtecinide koymalıyız dizi1.each do |eleman| if eleman%2==0 dizi2.push(eleman) end end #yukarıda dizinin her değeri eleman adında geçici değişkene atandı ve her sayı çift olamsı halinde push metodu ile dizi2'nin son indisine eklendi dizi3<<dizi1.select{ |eleman| eleman%2==1 } #dizi1 de her tek sayıyı dizi3 ün son indisine ekledik dizi4<<dizi1.reject { |eleman| eleman>10} #dizi1 in 10'dan büyük olmayan değerlerini dizi4 ün son indisine ekledik. #dizi1 de yaptığımız değişiklikleri, başka diziye atamak yerine kendi üzerinde yapmak isterseniz map veya collect metotlarını kullanmalısınız. #örneğin dizi1.map{|eleman| eleman+3} print dizi1 print dizi2,"\n" print dizi3,"\n" print dizi4,"\n"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#encoding:UTF-8
#Ruby de dizilere erişimde birçok yöntem kullanılır. Aşağıda o yöntemlerden bazılarına değindik.
dizi=[]
#yukarıda boş bir dizi oluşturduk
dizi=[1,"oNUR arslan"]
#yukarıda 2 elemanlı bir Dizi oluşturduk. ruby de dizilerde int ve string ifadeler tek bir yerde yer alabiliyor.
dizi=Array.new
#yukarıda boş bir dizi oluşturduk.
dizi=Array.new(3)
#Yukarıda 3 indisli boş bir dizi oluşturduk.
dizi=%{Onur 1}
#yukarıda 2 elemanlı bir diziz oluşturduk. elemanların tipine göre kaydetme işlemini ruby otomatik gerçekleştiriyor.
#yani Onur string olarak, 1 ise int olarak kaydedilecektir.
dizi=["Onur Arslan","Trakya Üniversitesi","Bilgisayar Teknolojisi ve Bilişim Sistemleri"]
#dizi gösterim şekillerini gösterdikten sonra 3 elemanlı bir dizi oluşturuyoruz.
puts "Dizinin Uzunluğu: #{dizi.length}"
#dizi'nin uzunluğunu(length) ekrana yazdırır.
#times döngüsünü kullanarak dizi isimli dizinin tüm elemanlarını ekrana yazdırın.
i=0
dizi.length.times{
puts dizi[i]
i+=1
}
dizi[1]=""
#yukarıda dizinin uzunluğu kadar(dizi.length) times döngsünün dönmesini sağlıyoruz.
#i yerel değişkenini dışarıda tanımladık ki döngü her başa girdiğinde i yerel değişkeni kaldığı yerden artarak devam etsin.
# while döngüsünü kullanarak dizi isimli dizinin elemanlarını ekrana yazdırınız.
i=0
while i<dizi.length
puts dizi[i]
i+=1
end
#while döngüsünü biliyorsanız kullanımında zorlanmayacaksınız. i değişkeni dizinin uzunluğundan küçük olduğu sürece döngü çalışacak ve her i'ci eleman ekrana yazdırılacak
dizi[1]="Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu"
#yukarıda dizinin 1.indisinin elemanına yeni değer atadık.
#dizi dizisinin tüm elemanlarını for döngüsü kullanarak ekrana yazdırınız.
for i in dizi
puts i
end
# dizi nin her elemanı sıra ile i geçici değişkenine atayacak ve puts ile ekrana yazdırılmasını sağlayacağız.
#elemanların her brini each fonksiyonu ile ekrana yazdırabilriz.
dizi.each{|eleman|print eleman," + "}
puts
#1den 10'a kadar olan sayıları ekrana yazdıran programı yazınız
for i in 1..10
print i, " "
end
puts
#10 kere 11e kadar olan sayılardan rastgele 10 sayı üren (rand(11)) programı yazınız
for i in 1..10
print rand(11), " "
end
puts
#sayiDizisi'nin ilk ve son indisindeki elemanları silen ve ilk indisine 0,1 ve son indisine 5,6,7 sayılarını eklemek içni aşağıdaki işlemleri yapalım.
sayiDizisi=[2,2,3,4,4]#dizimizi oluşturduk
print sayiDizisi#tüm elemanlarını ekrana yazdırdık
puts
sayiDizisi.shift#ilk indisteki sayıyı indisten atar
sayiDizisi.unshift(1)#ilk indisine 1 rakamını ekler ve diğerleri 1 indis sağ kayar.
sayiDizisi = [0]+sayiDizisi#ilk indisine 1 rakamını ekledik ve diğerlerini 1 indis sağ kaydırdık
sayiDizisi.pop#son indisteki sayıyı atar
sayiDizisi.push(5)#son indisine 5 rakamını ekler.
sayiDizisi<<6#son indise 6 rakamını ekledik.
sayiDizisi<<[7]
print sayiDizisi#1 ve 5 eklendikten sonra tüm elemanları ekrana yazdırdık
sayiDizisi.flatten!#bu ifade [7] dizisini dizi olarak değilde eleman olarak eklemeyi sağlar. normal bir görünüm sağlar.
print sayiDizisi
#yukarıda kulandığımız metotlarda sayıları dizilerde birleştirme işlemi yapmış olduğumuzda belirtelim.
#örneğin sayiDizisi <<[6] olarak eklersek sayiDizisi içersinde ayrı bir dizi olarak gözükecektir.
puts
#sayiDizisine kullanıcının istediği indise istediği sayıyı araya eklediği programı yazalım.
print "Sayının Ekleneceği İndis Numarasını Giriniz: "
diziIndis=gets.chomp.to_i#gets ile kullanıcan aldırdığımız sayı enter a basıdlığında oluşan \n karakterini chomp ile silip değeri integer yani tam sayı yapamk için to_i dedik
print "Sayıyı Giriniz: "
sayi=gets.chomp.to_i
sayiDizisi.insert(diziIndis,sayi)
print sayiDizisi
puts
#kullanıcının silmek istediği sayıyı alıp silen ve ekrana yazan programı yazalım
print "Silmek istediğiniz sayıyı giriniz: "
sayi=gets.chomp.to_i
sayiDizisi.delete sayi
print sayiDizisi
puts
#kullanıcının istediği indisteki sayıyı silen ve kalan asyıları ekrana yazdıran programı yazınız
print "Silinecek sayının indis numarasını giriniz: "
diziIndis=gets.chomp.to_i
sayiDizisi.delete_at diziIndis
print sayiDizisi
puts
#kullanıcının gireceği sayıdan küçük veya büyük olan sayıları silen programı yazalım.
print "Sayıyı Giriniz: "
sayi=gets.chomp.to_i
print "1. Sayıdan Küçük Olanları Sil\n2. Sayıdan Büyük Olanları Sil\n3. Sayıya Eşit Olanları Sil\n4. Sayıdan Farklı Olanları Sil\nİşlem Numarasını Giriniz: "
islem=gets.chomp.to_i
if islem==1
sayiDizisi.delete_if {|gecici| gecici<sayi}#gecici değişkeni dizinin her elemanı sıra ile bu değişkene atanır ve değerlendirme yapılır
elsif islem==2
sayiDizisi.delete_if {|gecici| gecici>sayi}
elsif islem==3
sayiDizisi.delete_if {|gecici| gecici==sayi}
elsif islem==4
sayiDizisi.delete_if {|gecici| gecici!=sayi}
else
puts "Geçersiz İşlem !"
end
print sayiDizisi
puts
#öğrenci notlarını küçükten büyüğe sıralayan ve kullanıcının istediği indisler arasında ki sayıları diziden parçalayan programı yazınız.
notlar=%w{20 50 78 93 25 49 34 87 56 54 21 5 67 69 34 56 43 28}
#notlar.sort
#yukarıdaki ifadeyi kaldırıdk çünkü !(ünlem) işareti olamyınca kalıcı olarak sıralama yapmıyor.
notlar.sort!
print "Notlar: ", notlar,"\n"
print "Kaçıncı Indisten İtibaren Sayı Parçalamak İstiyorsunuz: "
indisSec=gets.chomp.to_i
puts
print "Kaç Eleman Seçmek İstiyorsunuz: "
elemanSayisi=gets.chomp.to_i
notlar.slice!(indisSec,elemanSayisi)#işlemin kalıcı olmasını istmeiyorsak ! kaldırıyoruz.
print notlar,"\n"
#eper notlar.slice!(2) dersek bize sadece 2.indisteik sayıyı verecek.
print notlar.sort.reverse,"\n"
#notlar dizisini küçükten büyüğe tersten sıraladık yani büyükten küçüğe
print notlar.sort.reverse.uniq
#notlar dizisini büyükten küçüğe sıraladık ve birbirini tkerarlayan sayıları 1 kere gösterilmesini sitedik.
#ifadelerde ünlem işareti olmadığı için gerçek anlamda bir değişiklik yapmaz.
puts
#dizinin tüm elemanlarını çağırmak ve üzerinde zaman zaman işlem yaptırmamız gerekebilir. böyle bir durumda c# bilenlerin foreach olarak yakından tanıdığı bu ifadeyi burda each olarak görüyoruz.
#bir sayı dizisi oluşturalım ve bu sayılar arasında çift olanalrı, tek olanları ve 10dan küçük olanları ayrı dizilere atayan programı yazalım
dizi1=[]
dizi2=[]
dizi3=[]
dizi4=[]
for i in 1..100
dizi1<<i
end
#yukaruda 1'den başlayarak 100'e kadar tüm sayıları dizinin son indisine << ifadesi ile ekledik.
#each fonksiyonu eğer tek satır olmayacak ise do belirtecinide koymalıyız
dizi1.each do |eleman|
if eleman%2==0
dizi2.push(eleman)
end
end
#yukarıda dizinin her değeri eleman adında geçici değişkene atandı ve her sayı çift olamsı halinde push metodu ile dizi2'nin son indisine eklendi
dizi3<<dizi1.select{ |eleman| eleman%2==1 }
#dizi1 de her tek sayıyı dizi3 ün son indisine ekledik
dizi4<<dizi1.reject { |eleman| eleman>10}
#dizi1 in 10'dan büyük olmayan değerlerini dizi4 ün son indisine ekledik.
#dizi1 de yaptığımız değişiklikleri, başka diziye atamak yerine kendi üzerinde yapmak isterseniz map veya collect metotlarını kullanmalısınız.
#örneğin dizi1.map{|eleman| eleman+3}
print dizi1
print dizi2,"\n"
print dizi3,"\n"
print dizi4,"\n"
Etiketler: birleştirme, diziler, ekleme, ruby, silme, sıralama
Onur ARSLAN
Java Developer
Abone Olun
Yeniliklerden haberdar olmak için e-posta bültenine abone olun.
Yazıyı Paylaş
Tweet
Related Articles
Stored Procedure Düzenleme ve Silme
Polymorphism(Çok Biçimlilik) – Ruby
Inheritance(Kalıtım) – Ruby
Encapsulation – Ruby
Metotlar – Ruby
Yorum Yaz
Cevabı iptal etmek için tıklayın.
Ad (Zorunlu)
E-Posta (yayınlanmayacak) (Zorunlu)
Website
Linkedin
Twitter
Facebook
GitHub
Email
Reklamlar
Popüler
Son Yazılar
Yorumlar
Bilgisayar Teknolojisi ve Bilişim Sistemleri 9 sene önce 361
Keşan KYK Kız Yurdu 9 sene önce 69
Keşan KYK Yüksek Ücretli Erkek Yurdu 7 sene önce 25
Bilgisayar Bilimci – Computer Scientist 8 sene önce 9
Opencart ve WordPress www Yönlendirme 9 sene önce 6
Builder Tasarım Şablonu (Design Pattern) 2 sene önce 0
İnceleme: Bir İdam Mahkumunun Son Günü 4 sene önce 0
Restful Web Services – JAX-RS File Download 5 sene önce 0
Restful Web Services – JAX-RS HTTP Başlıkları (HTTP Headers) 5 sene önce 0
Restful Web Services – JAX-RS Form Parametreleri (FormParam) 5 sene önce 0
Necati Kızılay: Teşekkürler...
Onur ARSLAN: Ortalama 2.000 - 3.500 TL aralığında işe başlarsınız....
Onur ARSLAN: bu biraz şans işi ama çok uzun sürmez yedek numaranız çok ileri d...
Murat: Merhaba yazdıklarınızdan yazılım sektöründe tecrübeli olduğunuza ...
deniz: Kyk kız yurda kaç yedek alrr...
akıllı telefon android apple bilgisayar teknolojisi ve bilişim sistemleri c c sharp delegate ders notları değişkenler diziler döngüler facebook galatasaray gebze get google inheritance java junit kalıtım keşan keşan kyk keşan yusuf çapraz uygulamalı bilimler yüksekokulu linux microsoft nasa nokia python ruby samsung site sosyal ağ t-sql tasarım tetikleyiciler trakya üniversitesi trigger tsql twitter veri yapıları virüs web windows 8 yarışma İnternet	
Reklamlar
Sponsorlar
Desteklenenler
Etiketler
akıllı telefon android apple bilgisayar teknolojisi ve bilişim sistemleri c c sharp delegate ders notları değişkenler diziler döngüler facebook galatasaray gebze get google inheritance java junit kalıtım keşan keşan kyk keşan yusuf çapraz uygulamalı bilimler yüksekokulu linux microsoft nasa nokia python ruby samsung site sosyal ağ t-sql tasarım tetikleyiciler trakya üniversitesi trigger tsql twitter veri yapıları virüs web windows 8 yarışma İnternet