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