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.

KomutAçıklama
pwdBulunduğun dizini görüntüle
lsBulunduğun dizindeki dosyaları listele
cat DOSYAMetinsel KAYNAK dosyasının içeriğini görüntüle
cd DİZİNDİZİN dizine geç (.. üst dizin)
cp KAYNAK HEDEFKAYNAK dosyasını HEDEF dosyası olarak kopyala
mv KAYNAK HEDEFKAYNAK dosyasını HEDEF dosyası olarak taşı
rm DOSYADOSYA 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 gereken 0 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 deyimlerini unless ile değiştirirseniz ne oluyor? Programın davranışının değişmemesi için unless 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