Integer Sınıfı. 9.1 Integer Sınıfına Uygulanan Başlıca Metotlar. Ruby de tamsayılar için kullanılan Fixnum ve Bignum sınıflarını üreten sınıftır.

Benzer belgeler
Operatörler. 6.1 Operatör Nedir?

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

String String İşlemleri

Mantıksal İşlemler. 7.1 true, false, nil

232 DIZIN. attr, 65 attributes, 65

3.3. İki Tabanlı Sayı Sisteminde Dört İşlem

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Sayıtlama Dizgeleri. (a n a n-1 a n1 a n0. b 1 b 2 b m )r. simgesi şu sayıyı temsil eder.

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

Biçem Belirteçleri (Format Specifiers)

Mikrobilgisayarda Aritmetik

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

HSancak Nesne Tabanlı Programlama I Ders Notları

Lab105-02/ BAHAR DÖNEMİ 3.Hafta Tarih:

(Sözlük, dictionary, birleşik array, map)

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği

1.SORU. Genişlemiş ascii karakterlerinin kodlarını karşılarına yazan C programını

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

SAYISAL ELEKTRONİK DERS NOTLARI:

Java: printf() Metodu İle Çıktıyı Biçemleme

Internet Programming II

2. SAYI SİSTEMLERİ VE KODLAR

Internet Programming II

Sayılar Teorisi SAYILAR TEORİSİ VE SAYILAR

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

1. Bölüm Sayı Sistemleri

Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar;

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

String. 1.1 Python da String

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

ARALARINDA ASAL SAYILAR

SAYISAL ELEKTRONİK. Ege Ü. Ege MYO Mekatronik Programı

Döngüler. Tablo 15.1: Ruby de Başlıca Döngü Yapıları

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Asal Çarpanlara Ayırma / EBOB-EKOK ORTAK DERSLER MATEMATİK. Prof. Dr. Emin KASAP

n. basamak basamak 3. basamak 2. basamak 1. basamak Üstel değer 10 n Ağırlık 10 n-1...

Internet Programming II

C Programlama Dilininin Basit Yapıları

RASYONEL SAYILAR. ÖRNEK: Aşağıda verilen eşitliklerde verilmeyen harflere karşılık gelen tamsayıları bulunuz. RASYONEL SAYILAR A =?

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri

OCTAL (SEKİZLİ) SAYI SİSTEMİ:

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi

Dr. Fatih AY Tel: fatihay@fatihay.net

Bilgisayar Mimarisi. Veri (DATA) Veri nedir? Veri bazı fiziksel niceliklerin ham ifadesidir. Bilgi verinin belli bir yapıdaki şeklidir.

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Atatürk Anadolu. Temel Kavramlar Üzerine Kısa Çalışmalar

C Konsol Giriş Çıkış Fonksiyonları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Eln 1001 Bilgisayar Programlama I

BLM221 MANTIK DEVRELERİ

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Üst Düzey Programlama

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

2. SAYI SİSTEMLERİ. M.İLKUÇAR - imuammer@yahoo.com

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri 2. SAYI SĐSTEMLERĐ VE KODLAR

12-A. Sayılar - 1 TEST

BÖLÜM 2 SAYI SĐSTEMLERĐ (NUMBER SYSTEMS)

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

MANTIK DEVRELERİ HALL, 2002) (SAYISAL TASARIM, ÇEVİRİ, LITERATUR YAYINCILIK) DIGITAL DESIGN PRICIPLES & PRACTICES (3. EDITION, PRENTICE HALL, 2001)

Programlama Dilleri 1. Ders 4: Diziler

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

WEB PROGRAMLAMA. PHP Temelleri. Dr. Erman Yükseltürk

PROGRAMLANAB L R DENETLEY C LER. DERS 02 Sayı Sistemleri

EBOB - EKOK EBOB VE EKOK UN BULUNMASI. 2. Yol: En Büyük Ortak Bölen (Ebob) En Küçük Ortak Kat (Ekok) 1. Yol:

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

140. 2< a< 1 ise kesrinin değeri aşağıdakilerden hangisi olamaz? (3,7) a 1,9 2,4 2,7 3,2 3,7. a a c b ve c a a b c

TEMEL KAVRAMLAR. a Q a ve b b. a b c 4. a b c 40. 7a 4b 3c. a b c olmak üzere a,b ve pozitif. 2x 3y 5z 84

PROGRAMLAMAYA GİRİŞ DERS 2

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

SAYILAR DOĞAL VE TAM SAYILAR

2. SAYI SİSTEMLERİ 2. SAYI SİSTEMLERİ

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Fatih University- Faculty of Engineering- Electric and Electronic Dept.

BİL1001 Bilgisayar Bilimlerine Giriş 1

Nesne Yönelimli Programlama

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

C Programlama printf() Fonksiyonu

Programlama Dillerinde Kullanılan Veri Tipleri

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

BLM221 MANTIK DEVRELERİ

Temel Giriş/Çıkış Fonksiyonları

SAYISAL DEVRELER. İTÜ Bilgisayar Mühendisliği Bölümündeki donanım derslerinin bağlantıları

PASCAL PROGRAMLAMA DİLİ YAPISI

Ruby Nedir? 1.1 Amaçlar. 1.2 Ruby nin Yapısal Sıradüzeni

TEMEL KAVRAMLAR Test -1

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

Temel Kavramlar 1 Doğal sayılar: N = {0, 1, 2, 3,.,n, n+1,..} kümesinin her bir elamanına doğal sayı denir ve N ile gösterilir.

SAYI SİSTEMLERİ. Sayı Sistemleri için Genel Tanım

SAYI SİSTEMLERİ. 1. Sayı Sistemleri. Sayı Sistemlerinde Rakamlar

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

VHDL ile KODLAMA ve HATA BULMA TEKNİKLERİ

FAKTÖRİYEL. TANIM Pozitif ilk n tam sayının çarpımı n = n! biçiminde gösterilir. n Faktöriyel okunur.

Transkript:

9 Integer Sınıfı Ruby de tamsayılar için kullanılan Fixnum ve Bignum sınıflarını üreten sınıftır. Integer Literal Tamsayı gösteren metinler, 1 0, 1, 123, 123456789012345678901234567890 biçiminde yalnızca 0 9 aralığındaki sayakları (digits) içeren dizimlerdir. Ruby tamsayının tipini kendisi belirler. Sayı 31 bite sığıyorsa, onu Fixnum, değilse Bignum olarak algılar ve işlemleri ona göre yapar. Çok haneli sayıların okunurluğunu ve algılanırlığını artırmak için, sayı binler bölüklerine ayrılabilir ve binlik bölüklerin arasına alt çizgi (_) konulabilir. Bu gösterim yalnızca kaynak programı okuyanlar için kolaylık sağlar; Kaynak kodda sayının binliklerine ayrılıp ayrılmaması Ruby için önem taımaz. 1 x= 3_123_456_789 # => 3123456789 9.1 Integer Sınıfına Uygulanan Başlıca Metotlar Integer sınıfı Numeric sınıfından türetilen bir nesnedir. Dolayısıyla Object ve Numeric sınıflarının bütün metotlarını kalıtsal alır. Integer sınıfının metotlarının tam listesi http://www.ruby-doc.org/core-2.1.2/integer.html web

104 BÖLÜM 9. INTEGER SINIFI sayfasından görülebilir. Burada çok kullanılan bazı metotlara örnekler vermekle yetineceğiz. to_i > integer Binary, octal ya da hexadecimal sayıları onlu sistemde (decimal) yazılmış tamsayıya (integer) dönüştürür. Liste 9.1. 0b111. to_i # => 7 0123. to_i # => 83 0x1a2b. to_i # => 6699 chr([encoding]) > string Kodu verilen harfi, parametredeki kodlama sistemine göre verir. encode parametresi yazılmazsa, genişlemiş ASCII kodlaması öntanımlı (default) olur. Binary, octal ya da hexadecimal sayıları onlu istemde (decimal) yazılmış tamsayıya (integer) dönüştürür. Liste 9.2. 65. chr # => "A" 2 230. chr # => "\346" 255. chr ( Encoding : : UTF_8) # => "\303\277" chr > string Verilen ascii koduna karşılık olan karakteri verir. ord metodunun karşıtıdır. Liste 9.3. i r b ( main ) :057:0 > 2 65. chr # => A 32. chr # => " " ord > integer Verilen bir karakterin ASCII kodunu verir. chr metodunun karşıtıdır. Liste 9.4. i r b ( main ) :057:0 > => 65 2?a. ord # => 97??. ord # => 63?#. ord # => 35

9.1. INTEGER SINIFINA UYGULANAN BAŞLICA METOTLAR 105 integer? > true Verilen tamsayının integer olup olmadığını söyler. Tamsayılar için daima true verir. Tamsayı olmayan verilere uygulanırsa hata verir. Liste 9.5. 1 4. i n t e g e r? # => true 4. i n t e g e r? # => NoMethodError : undefined method i n t e g e r? f o r " 4 " : S t r i n g even? > true ya da false Verilen tamsayı çift ise true, tek ise false verir. Tamsayı olmayan veriler için hata verir. odd metodunun karşıtıdır. Liste 9.6. 24. even # => true 25. even # => f a l s e " 3 " abc ". even? # => NoMethodError : undefined method even? f o r " abc " : S t r i n g odd? > true ya da false Verilen tamsayı tekse true çiftse false verir. even metodunun karşıtıdır. Liste 9.7. 1. odd? # => true 2 2. odd? # => f a l s e 10.odd # => f a l s e gcd(int2) > integer Uygulandığı tamsayı ile argümanının en büyük ortak bölenini (ebob) verir. Liste 9.8. 2. gcd (2) # => 2 2 3. gcd ( 7) # => 1 ((1<<31) 1). gcd((1<<61) 1) # => 1

106 BÖLÜM 9. INTEGER SINIFI gcdlcm(int2) > integer Uygulandığı tamsayı ile argümanının en büyük ortak bölenini (ebob) ve en küçük ortak katını (ekok) bir array biçiminde verir. Liste 9.9. 2. gcdlcm (2) # => [ 2, 2 ] 2 3. gcdlcm ( 7) # => [ 1, 21] ((1<<31) 1). gcdlcm((1<<61) 1) # => [ 1, 4951760154835678088235319297] next > integer Verilen tamsayının ardışığını verir. Verilen sayı x ise sonuç x + 1 olur. Liste 9.10. 1. next # => 2 2 ( 1). next # => 0 10. next # => 11 pred > integer Verilen tamsayının öncülünü verir. Verilen sayı x ise sonuç x 1 olur. Liste 9.11. 1. pred # => 0 2 ( 1). pred # => 2 10. pred # => 9 rand > float Seçkisiz (random) sayı üretir. Liste 9.12. r = Random. new 2 r. rand (100) # => 18

9.2. INTEGER <==> FLOAT DÖNÜŞÜMLERI 107 seed -> integer seed metodu seçkisiz (random) tamsayı üretir. Aynı sonuçları tekrar verir. Liste 9.13. r1 = Random. new (1234) r1. seed #=> 1234 3 r1. rand (100) #=> 47 r2 = Random. new( prng1. seed ) r2. rand (100) #=> 47 round([ndigits]) > integer or float Verilen tamsayıyı istenen duyarlığa (precision) yuvarlar. Öntanımlı duyarlığı 0 dır. İstenen duyarlık negatif olabilir. ndigits duyarlığı pozitif ise bir float sayı verir, 0 ise sayının kendisini, negatif ise skalada alttaki değeri verir. Örnekler: Liste 9.14. 1. round #=> 1 1. round (2) #=> 1.0 15. round ( 1) #=> 20 succ > integer n sayısından sonra gelen tamsayıyı verir; n tamsayısı için n+1 sayısını verir. next ile aynıdır. Liste 9.15. 1. succ #=> 2 2 ( 1). succ #=> 0 9.2 Integer <==> Float Dönüşümleri Integer tipi Float tipe dönüştürme Integer tipler Float tipe dönüşürken sağ yanlarına.0 eklenir. 123. to_f # => 123.0

108 BÖLÜM 9. INTEGER SINIFI Float tipi Integer tipe Dönüştürme to_i metodu F loat tipi Integer tipe dönüştürür. Dönüşümde kesir kısmı atılır. Yuvarlama yapılmaz. Tam kısmın tabanını verir. 1 2 3. 4 5 6. to_i => 123 9.3 Sayıların Farklı Tabanlara Göre Yazılması Bilindiği gibi her sayı istenilen bir pozitif q tabanına göre yazılabilir. 10 tabanına göre tamsayılar 1, 2, 3, 4, 5, 6, 7, 8, 9 sayaklarından birisiyle başlar. Tamsayı gösteren bir metnin (numeric literal) önüne 0b ya da 0 ya da 0x gelirse Ruby onu, sırasıyla binary, octal ve hexadecimal sayı olarak algılar. Binary sayılar 2 tabanına göre yazılmış sayılardır. octal sayılar 8 tabanına göre yazılmış sayılardır. Hexadecimal sayılar 16 tabanına göre yazılmış sayılardır. binary: 2 tabanlı Binary sayılarda sayaklar (digits) 0,1, simgeleridir. Dolayısıyla binary gösteriminde 0 ve 1 sayaklarından başka karakterler kullanılamaz. Örneğin, 0b10 binary sayısının onlu (decimal) sistemdeki değeri 2 dir. Bu dönüşümü, etkileşimli irb kabuğunda kolayca yapabiliriz. Ruby binary sayıları to_i metodu ile onlu (decimal) tipe dönüştürür. Liste 9.16. 0b000 # => 0 0B111 # => 7 3 0b0101 # => 5 0b111_111. to_ int # => 63 (0 b1_111_11 ). to_int # => 63 octal: 8 tabanlı Onlu sayıtlama sisteminde sayının soluna yazılan 0 ların basamak değeri yoktur; yani sayının değerini değiştirmezler. Bunu "solda sıfır" deyimiyle ifade ederiz. Onlu sayıtlama sisteminde 00123 sayısı 123 sayısına eşittir. Ancak bir çok programlama dilinde solda sıfır 10 tabanına göre yazılan (decimal) sayının 8 tabanına (octal) dönüştürülmesini sağlar. Ruby dili de

9.3. SAYILARIN FARKLI TABANLARA GÖRE YAZILMASI 109 onlardan biridir. Tamsayı gösteren bir metnin önüne sıfır 0 simgesi konulursa, Ruby onu 8 tabanına göre algılar. Octal sayılarda sayaklar (digits) 0,1,2,3,4,5,6,7 simgeleridir. Dolayısıyla octal yazılışta 0 7 aralığı içinde olmayan karakterler kullanılamaz. Örneğin, 012345 octal sayısının onlu (decimal) sistemdeki değeri 5349 olur. Bu dönüşümü, etkileşimli irb kipinde kolayca yapabiliriz. Ruby octal sayıları to_i metodu ile decimal tipe dönüştürür. Liste 9.17. 4 012345 #5349 0256 # => 174 0255 # => 173 0111_111 # => 37449 0111111 # => 37449 01234567 # => 342391 9 0777777777777777 # => 35184372088831 0777_777_777_777_777 # => 35184372088831 012345. to \_i # => 5349 0256. to \_i # => 174 14 0111_111. to \_i # => 37449 9.3.1 hexadecimal: 16 tabanlı Hexadecimal sayılar 16 tabanına göre yazılmış sayılardır. Hexadecimal sayıların önüne 0X ya da 0x konulur. Ruby bir sayısal literalin önünde 0X ya da 0x simgesini görünce onu hexadecimal olarak algılar. Hexadecimal sayılarda sayaklar (digits) 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F simgeleridir. Burada A sayağı 10, B sayağı 11, C sayağı 12, D sayağı 13, E sayağı 14 ve F sayağı 15 yerine geçer. 0x deki x karakteri küçük harf ise 9dan sonraki sayaklar a, b, c, d, e, f gibi küçük harflerle yazılır. Karşıt olarak, 0X deki X karakteri büyük harf ise 9dan sonraki sayaklar A, B, C, D, E, F gibi büyük harflerle yazılır. Örneğin, oxabc == 0XABC == 2748 olur. Liste 9.18. Ruby hexadecimal sayıları to_i metodu ile decimal tipe dönüştürür. 1 0 x12345 #74565 0X1ABC5D2E0F # => 114829372943 0XA # => 10 0xa # => 10 0Xf # => 15 6 0x1AB3 # => 6835

110 BÖLÜM 9. INTEGER SINIFI 0XA. to \_i # => 10 0xabc. to \_i #=> 2748 x=0x123_456_abc_789 # => 20016001697673 9.3.2 min, max bulma İki sayının ya da bir sayı arrayinin enküçük ve ve enbüyük değerleri array sınıfının min ve max metotları ile bulunabilir. Liste 9.19. 1 [ 5, 1 7 ]. min # => 5 [ 5, 1 7 ]. max # => 17 [234, 987]. min # => 987 [234, 987].max # => 234 [9,7, 3, 7,2]. min # => 7 6 [9,7, 3, 7,2].max # => 9 9.3.3 Bignum Ruby da Bignum tipi (type) 31 bit e sığmayan tamsayılar içindir. Bignum sayıların bir sınırı yoktur. Kullanılan sistemin tahsis edebildiği bellek adresiyle sınırlıdır. Bunun anlamı, Bignum sayıların sınırsız olduğudur. Uygulamada bu tip sayılar ancak ağır bilimsel hesaplamalarda kullanılır. Ruby de Integer tipler, büyüklüklerine göre kendiliğinden Fixnum ya da Bignum tipine dönüşür. Kullanılan sayı 31 bite sığıyorsa, ona ana bellekte 31 bitlik bir yer ayrılır. Sığmıyorsa o sayı otomatik olarak Bignum tipe dönüşür. Bazı dillerde olduğu gibi, Bignum sayıların sonuna L ya da l yazmak gerekmiyor. Örneğin, Liste 9.20. m= 999999999999999999 m. c l a s s # => Fixnum (18 basamak ) 4 n= 9999999999999999999 n. c l a s s # => Bignum (19 basamak )