Sunday, August 14, 2022

Dart Ders Notlarım 14: Int'i Yakından Tanıyalım

 

Dart Ders Notlarım 14: Int'i Yakından Tanıyalım



void main() {

  /*bu derste de integer dart için int olan veri tipinin yani tam sayıları

 belleğe aldığımız veri tipidir bu, özellik ve metodlarına bir göz atalım.

 özellik bu şekilde > değişkenAdi.özellik

 metod bu şekilde >  değişkenAdi.metot()  

 */


  int sayi = 10;


  //sayımız çift ise true değilse false döner.

  print("Sayımız çift midir? > ${sayi.isEven}"); // True


  //sayımız tek ise true değilse false döner.

  print("Sayımız tek midir? > ${sayi.isOdd}"); //False


  //değişken tipimizi dönüyor.

  print("Veri Tipimiz > ${sayi.runtimeType}"); // int


  //girilen sayı negatif ise -1 sıfır ise 0 ve pozitif ise 1 çıktısını verir.

  print("sayımız negatif ise -1, sıfır ise 0 ve pozitif ise 1 > ${sayi.sign}");

  // 1


  //sayımız negatif mi? true yada dalse döner.

  print("Sayı megatif mi?  > ${sayi.isNegative}"); // false


  /* sonuc.isNaN özelliğine bakıcaz.bu özellik değerimizin belirsiz olup

  olmadığını kontrol ediyor. matetiksel olarak üç sonuç alma durumumuz var.

  sayı bölü sayıdan  sonuç sayıdır.

  sayı bölü sıfırdan sonuç sonsuzdur.

  sıfır bölü sıfıdan sonuç belirsiz. yani NaN.

  üç durumada aşağıda bakıyoruz. 

  Bazı durumlarda sonucun belirsiz olup olmadığını kontrol etmek gerekebiliyor.

  böyle durumlar için kullanılabilir. sonucu true yada false olarak dönüyor.

 */


  int bes = 5;

  int sifir = 0;

  double sonuc;


  sonuc = bes / bes;

  print("5/5 sonucu > $sonuc"); //işlem sonucu 1

  print(sonuc.isNaN); //NaN durumu false


  sonuc = bes / sifir;

  print("5/0 sonucu > $sonuc"); //işlem sonucu Infinity

  print(sonuc.isNaN); // NaN durumu false


  sonuc = sifir / sifir;

  print("0/0 sonucu > $sonuc"); //işlem sonucu NaN

  print(sonuc.isNaN); //Nan durumu sonucu true


  //şimdide metodlara bakalım...


  //sayi.abs() sayımızın mutlak değerini verir.

  print("Sayımızın mutlak değeri  > ${sayi.abs()}"); // 10


  /*

  ondalik.ceil() girilen sayıdan büyük ilk tam sayıya yükseltir.

  ondalik.floor() girilen sayıdan küçük ilk tam sayıya düşürür */

  double ondalik = 99.3;

  print(ondalik.ceil()); //100

  print(ondalik.floor()); //99


  /* .clamp() metoduna bakalım. .clamp( minimum değer, maksimum değer)

  bu metodda bize gelen veriyi kısıtlayabiliyoruz. diyelim işlediğimiz verinin

  bir alt birde üst sınırı var. seçici olmak istiyoruz. 

  clamp içinde biz  minimum ve maksimum değer aralığımızı belirliyoruz.

  gelen değer bizim verdiğimiz  aralıkta ise sorun yok onu işleme alıyoruz. 

  gelen değer bizim alt sınırımızın altında ise minimum değer işleme girer. 

  gelen değer üst sınırdan yukarda ise bizim maksumum değerimiz işleme girer. 

  aşağıdaki örneklerle daha kolay anlaşılacaktır.  


  */

  var deger;


  deger = 7;

  print(deger.clamp(1, 10.0)); // 7

  //değer aralığımızda olduğu için direkt 7 gelir.


  deger = 10.5;

  print(deger.clamp(5, 10.0)); // 10.0

  //değer üst sınırdan yukarda olduğu için bizim maksimum değer gelir. 10.0


  deger = 0.75;

  print(deger.clamp(5, 10.0)); // 5

  //değer alt sınırdan aşağıda olduğu için bizim minimum değer gelir. 5


  deger = -10;

  print(deger.clamp(-5, 5.0)); // -5

  //değer negatif olarak alt sınırdan aşağıda olduğu için bizim min değer gerlir.-5


  deger = -0.0;

  print(deger.clamp(-5, 5.0)); // -0.0 özel durum.

  //değer -0.0 olduğu için kendisini çıktı veriyor. tam nedenini bilemiyorum :)

  /* dart core da böyle açıklamışlar.

  The comparison is done using compareTo and therefore takes -0.0 into account. 

  This also implies that double.nan is treated as the maximal double value.

  türkçesi:

  Karşılaştırma, CompareTo kullanılarak yapılır ve bu nedenle -0.0 dikkate alınır. 

  Bu aynı zamanda double.nan'ın maksimum çift değer olarak ele alındığı anlamına gelir.

  */


  /* numara.compareTo(other); bakıcaz. stringde baktık aynı metoda. aynı mesele.

  compare dizileri karşılaştırıp bize durum bilgisi dönüyor. döndüğü bilgi

  alfabetik olarak büyüklük bilgisi aslında. burda da üç değer dönüyör. 

  değişken değerimiz büyükse 1 eşitse 0 küçükse -1 değerini dönüyor. 

  aşağıda int değeri yaprık. Daha iyi anlayalım diye.  */

  int numara = 2;

  print(numara.compareTo(1)); //1

  print(numara.compareTo(2)); //0

  print(numara.compareTo(3)); //-1


  /*  sayimiz.gcd(other) iki sayının en büyük ortak bölenini bize bulan metoddur.

  verimizle sabit bazı sayıları deneyelim. her örnekte yaprığımız gibi. other

  kısmına diğer sayıyı yazıcaz.yada print içinde o anda aklımıza gelen sayılarıda

  kullanabilir. */

  int sayimiz = 20;

  print(sayimiz.gcd(10)); //10

  print(sayimiz.gcd(100)); //20

  print(10.gcd(12)); //2

  print(10.gcd(0)); // sıfırla bir sayıyı bakarsak sayının kendisini verir. 10

  print(15.gcd(0)); //15

  print(0.gcd(0)); // 0


  /*

  usluModAlma.modPow(exponent, modulus) bu metod ise sayımızın üssünü alıp sonra

  modunu alıyor. mod biliyorsunuz sıfıra bölümünden kalanı verir.

  üs olarak 1 yazarsanız direkt sayımızın modunu almış olursunuz. çünkü bir sayının 

  1.üssü kendisine eşittir :) exponent üs demek zaten. ilk değer üs ikinci değer

  olarak ise modu giriyoruz.

  bu index değerlerimizi değişkenler olarak da kullanabiliriz. şimdi üs değerimizi

  bir olarak sabitlicem ve ilk indeximize us olarak girecem. değişken olarak yani.

  direkt sayı girmemiş olacaz.

  */


  int us = 1; //üssümüzü 1 alacağız.


  print(15.modPow(us, 2)); //1

  print(20.modPow(us, 2)); //0


  //bir tane de üs alarak yapalım

  print(10.modPow(2, 3)); //1 burda 10un karesi mod 3 olmuş oldu. 100%3=1

  print(100.modPow(us, 3)); //1 yukardakinin aynısı.


  //çift değişlkenli bakalım birde.

  int usluModAlma = 10;

  print(usluModAlma.modPow(us, 4)); //2


  /*bol.remainder(other) burada int girersek sonuç int double girersek sonuç

  double olur. */

  double bol = 22;

  int boz = 21;

  print(bol.remainder(7)); //1.0

  print(10.remainder(4)); //2 tip belirtmedik mi direk int olur değerimiz.

  bol = 13;

  print(bol.remainder(7)); //6.0

  print(boz.remainder(2)); //1


  /*yuvarla.round() ve yuvarla.roundToDouble() 

  sayıları yuvarlamak için round metodu var. round int olarak yuvarlama yapıyor

  roundToDouble ise double yuvarlıyor. yani sonuna bir sıfır atıyor. buçuk ve 

  üstünü yukar buçuktan altını aşağıya yuvarlıyor paşam :)    */

  double yuvarla = 25.6;

  num yuvarlak = 25.4;

  print(yuvarla.roundToDouble()); //26.0

  print(yuvarlak.round()); //25


  /*int dönüşümlerine bakalım. veri tipi dönüşümü */


  int tamSayi = 10;

  //tamSayi.toString() metoduyla değişkenimizi string yapıyoruz.

  //string yapınca doğal olarak altta gördüğünüz gibi stringle toplayabiliyoruz.

  print("şimdi yanına int topla" + tamSayi.toString());


  double ondalikSayi = 10.355;

  print(ondalikSayi.toInt()); //10

  //burda double bir değeri ondalikSayi.toInt() ile int değere dönüştürüyoruz.


  print((tamSayi * ondalikSayi).toInt()); //103

  //burada ise normalde 103.55 olması gereken sonucu yani double sonucu inte çevirdik.

}

void main() {
  /*bu derste de integer dart için int olan veri tipinin yani tam sayıları
 belleğe aldığımız veri tipidir bu, özellik ve metodlarına bir göz atalım.
 özellik bu şekilde > değişkenAdi.özellik
 metod bu şekilde >  değişkenAdi.metot()  
 */

  int sayi = 10;

  //sayımız çift ise true değilse false döner.
  print("Sayımız çift midir? > ${sayi.isEven}"); // True

  //sayımız tek ise true değilse false döner.
  print("Sayımız tek midir? > ${sayi.isOdd}"); //False

  //değişken tipimizi dönüyor.
  print("Veri Tipimiz > ${sayi.runtimeType}"); // int

  //girilen sayı negatif ise -1 sıfır ise 0 ve pozitif ise 1 çıktısını verir.
  print("sayımız negatif ise -1, sıfır ise 0 ve pozitif ise 1 > ${sayi.sign}");
  // 1

  //sayımız negatif mi? true yada dalse döner.
  print("Sayı megatif mi?  > ${sayi.isNegative}"); // false

  /* sonuc.isNaN özelliğine bakıcaz.bu özellik değerimizin belirsiz olup
  olmadığını kontrol ediyor. matetiksel olarak üç sonuç alma durumumuz var.
  sayı bölü sayıdan  sonuç sayıdır.
  sayı bölü sıfırdan sonuç sonsuzdur.
  sıfır bölü sıfıdan sonuç belirsiz. yani NaN.
  üç durumada aşağıda bakıyoruz.
  Bazı durumlarda sonucun belirsiz olup olmadığını kontrol etmek gerekebiliyor.
  böyle durumlar için kullanılabilir. sonucu true yada false olarak dönüyor.
 */

  int bes = 5;
  int sifir = 0;
  double sonuc;

  sonuc = bes / bes;
  print("5/5 sonucu > $sonuc"); //işlem sonucu 1
  print(sonuc.isNaN); //NaN durumu false

  sonuc = bes / sifir;
  print("5/0 sonucu > $sonuc"); //işlem sonucu Infinity
  print(sonuc.isNaN); // NaN durumu false

  sonuc = sifir / sifir;
  print("0/0 sonucu > $sonuc"); //işlem sonucu NaN
  print(sonuc.isNaN); //Nan durumu sonucu true

  //şimdide metodlara bakalım...

  //sayi.abs() sayımızın mutlak değerini verir.
  print("Sayımızın mutlak değeri  > ${sayi.abs()}"); // 10

  /*
  ondalik.ceil() girilen sayıdan büyük ilk tam sayıya yükseltir.
  ondalik.floor() girilen sayıdan küçük ilk tam sayıya düşürür */
  double ondalik = 99.3;
  print(ondalik.ceil()); //100
  print(ondalik.floor()); //99

  /* .clamp() metoduna bakalım. .clamp( minimum değer, maksimum değer)
  bu metodda bize gelen veriyi kısıtlayabiliyoruz. diyelim işlediğimiz verinin
  bir alt birde üst sınırı var. seçici olmak istiyoruz.
  clamp içinde biz  minimum ve maksimum değer aralığımızı belirliyoruz.
  gelen değer bizim verdiğimiz  aralıkta ise sorun yok onu işleme alıyoruz.
  gelen değer bizim alt sınırımızın altında ise minimum değer işleme girer.
  gelen değer üst sınırdan yukarda ise bizim maksumum değerimiz işleme girer.
  aşağıdaki örneklerle daha kolay anlaşılacaktır.  

  */
  var deger;

  deger = 7;
  print(deger.clamp(1, 10.0)); // 7
  //değer aralığımızda olduğu için direkt 7 gelir.

  deger = 10.5;
  print(deger.clamp(5, 10.0)); // 10.0
  //değer üst sınırdan yukarda olduğu için bizim maksimum değer gelir. 10.0

  deger = 0.75;
  print(deger.clamp(5, 10.0)); // 5
  //değer alt sınırdan aşağıda olduğu için bizim minimum değer gelir. 5

  deger = -10;
  print(deger.clamp(-5, 5.0)); // -5
  //değer negatif olarak alt sınırdan aşağıda olduğu için bizim min değer gerlir.-5

  deger = -0.0;
  print(deger.clamp(-5, 5.0)); // -0.0 özel durum.
  //değer -0.0 olduğu için kendisini çıktı veriyor. tam nedenini bilemiyorum :)
  /* dart core da böyle açıklamışlar.
  The comparison is done using compareTo and therefore takes -0.0 into account.
  This also implies that double.nan is treated as the maximal double value.
  türkçesi:
  Karşılaştırma, CompareTo kullanılarak yapılır ve bu nedenle -0.0 dikkate alınır.
  Bu aynı zamanda double.nan'ın maksimum çift değer olarak ele alındığı anlamına gelir.
  */

  /* numara.compareTo(other); bakıcaz. stringde baktık aynı metoda. aynı mesele.
  compare dizileri karşılaştırıp bize durum bilgisi dönüyor. döndüğü bilgi
  alfabetik olarak büyüklük bilgisi aslında. burda da üç değer dönüyör.
  değişken değerimiz büyükse 1 eşitse 0 küçükse -1 değerini dönüyor.
  aşağıda int değeri yaprık. Daha iyi anlayalım diye.  */
  int numara = 2;
  print(numara.compareTo(1)); //1
  print(numara.compareTo(2)); //0
  print(numara.compareTo(3)); //-1

  /*  sayimiz.gcd(other) iki sayının en büyük ortak bölenini bize bulan metoddur.
  verimizle sabit bazı sayıları deneyelim. her örnekte yaprığımız gibi. other
  kısmına diğer sayıyı yazıcaz.yada print içinde o anda aklımıza gelen sayılarıda
  kullanabilir. */
  int sayimiz = 20;
  print(sayimiz.gcd(10)); //10
  print(sayimiz.gcd(100)); //20
  print(10.gcd(12)); //2
  print(10.gcd(0)); // sıfırla bir sayıyı bakarsak sayının kendisini verir. 10
  print(15.gcd(0)); //15
  print(0.gcd(0)); // 0

  /*
  usluModAlma.modPow(exponent, modulus) bu metod ise sayımızın üssünü alıp sonra
  modunu alıyor. mod biliyorsunuz sıfıra bölümünden kalanı verir.
  üs olarak 1 yazarsanız direkt sayımızın modunu almış olursunuz. çünkü bir sayının
  1.üssü kendisine eşittir :) exponent üs demek zaten. ilk değer üs ikinci değer
  olarak ise modu giriyoruz.
  bu index değerlerimizi değişkenler olarak da kullanabiliriz. şimdi üs değerimizi
  bir olarak sabitlicem ve ilk indeximize us olarak girecem. değişken olarak yani.
  direkt sayı girmemiş olacaz.
  */

  int us = 1; //üssümüzü 1 alacağız.

  print(15.modPow(us, 2)); //1
  print(20.modPow(us, 2)); //0

  //bir tane de üs alarak yapalım
  print(10.modPow(2, 3)); //1 burda 10un karesi mod 3 olmuş oldu. 100%3=1
  print(100.modPow(us, 3)); //1 yukardakinin aynısı.

  //çift değişlkenli bakalım birde.
  int usluModAlma = 10;
  print(usluModAlma.modPow(us, 4)); //2

  /*bol.remainder(other) burada int girersek sonuç int double girersek sonuç
  double olur. */
  double bol = 22;
  int boz = 21;
  print(bol.remainder(7)); //1.0
  print(10.remainder(4)); //2 tip belirtmedik mi direk int olur değerimiz.
  bol = 13;
  print(bol.remainder(7)); //6.0
  print(boz.remainder(2)); //1

  /*yuvarla.round() ve yuvarla.roundToDouble()
  sayıları yuvarlamak için round metodu var. round int olarak yuvarlama yapıyor
  roundToDouble ise double yuvarlıyor. yani sonuna bir sıfır atıyor. buçuk ve
  üstünü yukar buçuktan altını aşağıya yuvarlıyor paşam :)    */
  double yuvarla = 25.6;
  num yuvarlak = 25.4;
  print(yuvarla.roundToDouble()); //26.0
  print(yuvarlak.round()); //25

  /*int dönüşümlerine bakalım. veri tipi dönüşümü */

  int tamSayi = 10;
  //tamSayi.toString() metoduyla değişkenimizi string yapıyoruz.
  //string yapınca doğal olarak altta gördüğünüz gibi stringle toplayabiliyoruz.
  print("şimdi yanına int topla" + tamSayi.toString());

  double ondalikSayi = 10.355;
  print(ondalikSayi.toInt()); //10
  //burda double bir değeri ondalikSayi.toInt() ile int değere dönüştürüyoruz.

  print((tamSayi * ondalikSayi).toInt()); //103
  //burada ise normalde 103.55 olması gereken sonucu yani double sonucu inte çevirdik.
}



Share This

0 comments:

Soru, Görüş, Öneri ve Eklemek İstediklerinizi Yazabilirsiniz...