Programlama Araçları
Programlama editörünü açarak aşağıdaki programı yazın ve terminalde çalıştırın.
puts "Hello, World!"
Kaynak kodu kaydederken uygun bir dosya adı seçmeniz ve dosya uzantısını
.rb
yapmanız önerilir. Neden?Dosya uzantısını (
.rb
) doğru şekilde vermezseniz sonuç ne oluyor?Türkçe'ye özgü karakterler nelerdir?
Kaynak kod dosyalarında sadece ASCII karakterlerin (Türkçe karakterler hariç alfanumerik karakterler) kullanılması önerilir, neden?
Programlama editörünün temel özelliklerini inceleyin.
Sözdizimi renklendirmesi nedir, ne işe yarar?
Sözdizimi hatalarını görebiliyor musunuz? Örneğin tırnakları kapatmazsanız ne oluyor?
Kopyala/Kes/Yapıştır nasıl yapılıyor?
Bul/değiştir nasıl çalışıyor?
Bir kod bloğu (birden fazla satır) açıklama satırları halinde nasıl etkisizleştiriliyor?
Terminali tanıyın.
Terminali nasıl çalıştırıyorsunuz? Programlama editöründen çıkmadan yeni terminal nasıl açarsınız?
Komut istemi ("Command prompt") nedir?
Terminalde temel kabuk komutlarını deneyin.
Komut | Açıklama |
---|---|
pwd | Bulunduğun dizini görüntüle |
ls | Bulunduğun dizindeki dosyaları listele |
cat DOSYA | Metinsel KAYNAK dosyasının içeriğini görüntüle |
cd DİZİN | DİZİN dizine geç (.. üst dizin) |
cp KAYNAK HEDEF | KAYNAK dosyasını HEDEF dosyası olarak kopyala |
mv KAYNAK HEDEF | KAYNAK dosyasını HEDEF dosyası olarak taşı |
rm DOSYA | DOSYA dosyasını sil |
Komut ve argümanlar nasıl ayrılıyor? Boşluk karakterinin önemi nedir?
Komutlar hakkında kısa yardım nasıl alabilirsiniz? İpucu:
--help
anahtarıKomutlar hakkında ayrıntılı dokümantasyona nasıl erişebilirsiniz? İpucu:
man
komutu
Oyuncak Makine
Oyuncak Makine ile işlemciyi anlayın.
Klavyeden girilen iki sayıyı toplayan ve sonucu görüntüleyen aşağıdaki programı deneyin.
get store toplam get add toplam print stop toplam 0 "toplam" hücresinin ilk değeri 0 (program başlamadan önce)
DİKKAT! Buyrukları (örneğin get veya add) ilk sütundan başlayarak yazmayın, buyrukların öncesinde mutlaka bir veya daha fazla boşluk veya sekme bulunmalıdır. Sadece satır etiketleri ilk sütundan başlayarak yazılmalıdır. Programınızı stop buyruğuyla bitirmeyi unutmayın.
Klavyeden okunan sayıları toplayan ve 0 değeri girildiğinde sonucu görüntüleyen aşağıdaki programı deneyin.
başla get klavyeden bir sayı al ifzero duyur eğer sayı sıfır ise "göster"e git add toplam aküdeki yeni sayıyı mevcut toplama ekle store toplam sonucu yin toplam hücresine kaydet goto başla yeni sayıyı almak için "başla"ya git duyur load toplam toplamı aküye yükle print sonucu duyur stop işlem tamam toplam 0 "toplam" hücresinin ilk değeri 0 (program başlamadan önce)
Bu programı girilen tüm sayıların ortalamasını alacak şekilde değiştirin. Örneğin klavyeden sırayla
3
,5
,7
,0
girilmişse, ortalama değer(3 + 5 + 7) / 3 = 5
olarak hesaplanmalıdır. (Girdiyi sonlandırmak için en sonda girilmesi gereken0
sayısını hesaba katmayın.)
Kur çevirici
Klavyeden okunan bir Dolar değerini güncel kura göre çeviren basit bir program yazın. (Güncel kur değerini tam olarak bilmiyorsanız İnternet'ten öğrenin.) Kullanıcıdan girdi almak için gets
, bir dizgiyi gerçel sayıya dönüştürmek için to_f
, sonuç veya bilgi görüntülemek için puts
metodunu kullanabilirsiniz.
Programın gerçeklemesinde kullandığınız değişkenlere ne isimler verdiniz?
Hatalı girdilerde (örneğin kullanıcı geçerli bir sayı dizgisi girmediğinde) ne oluyor?
Kullanıcı girdisinin sonunda bulunan satır sonu karakterinden (
"\n"
) nasıl kurtulursunuz?
Vergi hesaplayıcı
Klavyeden okunan bir ürün değerini %18 KDV oranıyla vergi ekleyerek nihai değeri görüntüleyen bir program yazın.
Programın gerçeklemesinde kullandığınız değişkenlere ne isimler verdiniz?
Kullanıcı girdisinin başında ve sonunda bulunan boşluk karakterlerinden nasıl kurtulursunuz?
KDV oranını rasyonel bir sayı olarak hesaba katmak için ne yapmanız gerekiyor?
IRB
Terminalde irb
komutunu çalıştırarak bir IRB oturumu açın ve IRB'yi tanıyın.
IRB komut isteminde aşağıdaki iki satırı ayrı ayrı girdiğinizde ortaya çıkan görüntüyü yorumlayın.
"merhaba"
puts "merhaba"
=>
ile başlayan satırlar ne anlama geliyor?Komut istemi tarihçesine (yani önceden girdiğiniz satırlara) nasıl erişiyorsunuz?
IRB oturumunda çalıştırdığınız bir kodla, bir kaynak kod dosyasına yazıp Terminal komut satırında
ruby DOSYA_ADI.rb
yazarak çalıştırdığınız kod arasında ne fark var? Denemeler yapın.IRB'den nasıl çıkış yaparsınız?
Dizgiler
Dizgileri tanıyın.
Dizgileri (dizgi literallerini) tek tırnak ve çift tırnak kullanarak oluşturabilirsiniz. Bu iki söz dizimi arasında ne fark var? Çift tırnağı tek tırnakla değiştirdiğinizde ne oluyor?
you = gets puts "Merhaba #{you}"
Dizgiler nasıl birleştiriliyor? IRB'de deneyin.
name = gets name << "adında" name << " " name << "bir" name << " " name << "kişi" puts name
Bir önceki örneği içeriği aşağıda verilen bir kaynak kod dosyasına yazarak komut satırında çalıştırırsanız ne oluyor?
# frozen_string_literal: true name = "Elif" name << " " name << "adında" name << " " name << "bir" name << " " name << "kişi" puts name
Hata alıyorsanız nedeni hakkında bir fikir yürütebilir misiniz? Hatayı nasıl giderebilirsiniz? (İpucu: ders slaytlarını inceleyin)
Dizgi Metotları
Aşağıdaki dizgi ("string") metotlarını IRB'de deneyerek her bir metodun nasıl çalıştığını anlayın.
string = gets
puts string.size # string.length
puts string.empty?
puts string.chomp
puts string.chop
puts string.upcase
puts string.downcase
puts string.capitalize
puts string.tr '_', ' '
puts string.delete '_'
puts string.strip
puts string.start_with? '2021'
puts string.end_with? '2021'
puts string.delete_prefix '2021'
puts string.delete_suffix '.rb'
a, b = string.split
puts b
Aritmetik karşılaştırma işleçleri
Aşağıdaki karşılaştırma ifadelerini IRB oturumunda deneyin.
2 > 2
2 >= 2
2 == 2
3 <= 3
3 < 3
İkinci derece denklemler
İkinci derece (kuadratik) bir denklemi göz önüne alın: ax2 + bx + c. Bu denklemdeki a
, b
ve c
katsayılarını sırayla kullanıcıdan okuyarak denklemin çözümünü görüntüleyen bir program yazın.
Denklemin sadece çözümü olup olmadığını görüntüleyin.
Programda hangi
if
satırlarını tek satır halinde yazabilirsiniz?Çözüm varsa denklem köklerini görüntüleyin.
Programdaki tüm
if
deyimleriniunless
ile değiştirirseniz ne oluyor? Programın davranışının değişmemesi içinunless
koşulları nasıl düzenlenmeli?
Mantık işleçleri
Aşağıdaki mantık ifadelerini IRB oturumunda deneyin.
2 >= 2 && 2 == 3
2 >= 2 || 2 == 3
!(2 >= 2 && 2 == 3)
!(2 >= 2 || 2 == 3)
Üçgen kuralı
Kullanıcının girdiği üç adet sayının geçerli bir üçgen oluşturup oluşturmadığını görüntüleyen bir program yazın.
Programın davranışı değişmeden tüm
&&
(mantıksal VE) operatörleri yerine sadece||
ve!
operatörlerini (uygun şekilde düzenleyerek) kullanabilir misiniz?Kullanıcıdan tek seferde (tek bir satır halinde) girdi alabilir misiniz? İpucu:
split
metodu