Tuesday, June 28, 2022

Dart Ders Notlarım 8: Çok Satırlı String, Num Veri Tipi Ve Print

 

Dart Ders Notlarım 8: Çok Satırlı String, Num Veri Tipi Ve  Print




void main() {

/*
Değişken konusuna sürekli değiniyoruz. İstiyorum ki hiç bir bilgi 
kalmasın denemediğimiz. Şimdi de birden fazla satırlı değişkenler oluşturalım. Aşağıdaki örnekte görüldüğü gibi değişkenin değerini atarken yani tanımlarken 3 tane çift yada tek tırnak ile başlayıp bitirirsek bu tırnakların arasında birden fazla satırdan oluşan değişken tanımlaması yapabiliriz. Tabi bu durumu String tipindeki veriler için kullanabiliyoruz.
*/

  String satirlik = """
bu veri
birden fazla
satırdan oluşuyor""";

  print(satirlik); //Çıktısı 3 satır olarak oluşacaktır.

/*
Şimdi değişken tanımlarken dikkat edilmesi gereken birkaç durum var, onları paylaşalım.

1- Değişkenlerimizin isimlerinde Türkçe karakter olmamalı.
2- Değişkenlerin isimleri boşluk içermemeli.
3- Değişkenlerin isimleri rakamla başlamamalı.
4- Değişkenlerimiz dile ait özel ifadeler olamaz. örn: if else int vb.
5- Değişkenimiz aynı blokta aynı isimle bir kez tanımlanmalı.
*/

/*
Yukardaki örnekte değişkeni tanımlarken kod içinde 3 tırnak ile birden fazla satırda tanımlıyorduk. Şimdi ise  \n ifadesiyle değişkeni bir satırda tanımlayıp çıktıyı iki veya daha fazla satırda alabiliyoruz. Aşağıda hem değişken tanımlarken hem de print ile direkt ekrana yazdırırken \n ifadesini görmekteyiz.
*/

  String deneme1 = "bir deneme \n yazısı";
  print(deneme1);//İki satır çıktı 
  print("merhaba \n nasılsın"); // iki satır çıktı.
  print("merhaba \n nasılsın \n ben de \n iyiyim"); // daha fazla  satır çıktı.

/*
Burada şöyle bir durum var. String değişken değerimizi çift tırnak içinde yazdık mı sorun yaşamadan değişkenin içinde tek tırnakla bir ayırma işlemi yapabiliyoruz. Olay şu aslında. Çift tırnaklı bir değişken tanımlamada metnin içinde bir özel isim kullandığımızda bunu tek tırnakla ayırabiliriz. Örneği aşağıda... 
*/

  String CiftTirnak = "Rize'ye hiç gittin mi?";
  print(CiftTirnak); //Rize'ye hiç gittin mi?

/*
Ama String değişken değerimizi tek tırnak içinde yazarsak bu sefer değişken değeri ifademizin içinde tek tırnakla kelime ayırma işlemi yapamıyoruz. Sistem bu tek tırnağı değişken değeri olarak algıladığından ve değişken değerini biz yazmaya devam ettiğimiz için hata almış oluyoruz. Yani başta tek tırnak ile başladık. Devamında özel bir ismi tek tırnak ile ayırdığımız zaman sistem bu tek tırnağı
direkt olarak String ifadenin son tek tırnağı gibi algılıyor. Sonra biz en sona da bir tek tırnak koyuyoruz ama ona gelmeden sistem özel ismi ayırdığımız tek tırnağı son olarak algılıyor.   
*/

  //String tekTirnak = 'Rize'ye hiç gittin mi?';

/*
Yukardaki örnekte baştaki yorumu kaldırınca hata verdiğini görebilirsiniz. Sistem sadece 'Rize' kelimesini değer olarak sandığından sondaki tek tırnak işaretine gelmeden hata veriyor. Eğer ille de tek tırnakla işlem yapacaksak cümle içindeki tek tırnaktan hemen önce ters bölü işareti koymamız gerekecek. Böyle olunca sistem onu kod olarak algılamayacak. Yani sistem baştaki ve sondaki hariç ters bölü işaretinin olduğu tüm tek tırnakları karakter olarak algılıyor.
*/

/*
Eğer tek tırnak ile yazmak zorunda isek o zaman aşağıdaki örnekteki 
gibi yapacağız. Cümle içindeki tek tırnaktan hemen önce ters bölü işareti koymamız gerekecek. Böyle olunca sistem onu yani en dıştaki iki tek tırnak haricindeki ters bölü işareti olan tek tırnakları kod olarak algılamayacak. Çıktıda ise ters bölü işareti gözükmeyecek tabi.
 */

  String Tektirnak = 'Rize\'ye hiç gittin mi?';
  print(Tektirnak); //Rize'ye hiç gittin mi?

/*
Şimdi yeni bir değişken tipine bakalım. num tipimiz hem tam sayıları 
hem de kesirli sayıları tutabilen bir değişken tipidir. Normalde tam sayılar için int kesirli sayılar içinde  double kullanıyorduk. İşte bu ikisinin birleşimi num'dur. Aşağıdaki örneklerde iki türde de veri tanımlayıp ekrana yazalım. Birde iki sayıyı çarpalım print içinde. 
*/

  num tamSayi = 5; //tam sayı tanımı
  num kesirliSayi = 5.3; // kesirli sayı tanımlama
  print(tamSayi); //tamsayı ekrana yazdırma 5
  print(kesirliSayi); //kesirli sayıyı ekrana yazdırma 5.3
  print(tamSayi * kesirliSayi); //tam ve kesirli sayı çarpımı. 26.5

/*
Genel bir not: Değişkenlere kendi tipinin dışında bir değer atarsak hata alırız. Aşağıdaki örnekte num tipine bir string değer girmeye çalıştık ve sistem hata veriyor. Satırı yorumdan çıkarırsanız hata verdiğini sizde görebilirsiniz.
*/

  // num textDenemesi = "text deniyoruz"; // Hatalı işlem

/*
Şimdi de + (artı) operatörü için mini bir tekrar yapalım. Artı operatörümüz iki değer string ise bunu print komutu içinde birleştirir. Yani yan yana yazar. Eğer iki değer sayı ise int, double veya num gibi bunları toplar. Artının iki yanı aynı ise sorun yok ama biri text biri sayı ise o zaman 2 yol görmüştük. Şimdi bu iki yola tekrar bir göz atalım. Gerekli değişkenleri tanımlayalım ve gösterimlerimizi yapalım. Öncelikle iki adet text ve iki adet sayı değişkenleri tanımlayıp değerlerini girelim.
*/

  String text1Deger = "text değerimiz";
  String text2Deger = "text";
  int sayi1Deger = 10;
  int sayi2Deger = 99;

/*
Önce aşağıda iki text değeri birleştirip ekrana yazalım. Buradaki çıktı iki değişken de string olduğu için biz bunları topladığımız zaman çıktımız iki string değerin yan yana gösterimi şeklinde olacaktır. Burada boşluk bırakmadığımız için ikinci text ifadesi değerimiz ifadesine bitişik olarak gelecektir.
*/

  print(text1Deger + text2Deger); //text değerimiztext

/*
Şimdi aşağıda bir string değişken daha tanımladık. İsmine boşluk dedik ve içine bir adet boşluk değeri girdik. Ve sonrasında print ile üçlü toplama işlemi yaptık bu sefer. Üsttekinden farkı çıktıda iki textin arasına boşluk atmış olduk.
*/

  String bosluk = " ";
  print(text1Deger + bosluk + text2Deger); //text değerimiz text

/*
Şimdi ise iki sayı değerini birleştirme yani toplama işlemini yapıyoruz. Bu işlem matematiksel olarak toplama işlemidir. Tırnak işaretlerini kullanmadan değişken isimlerini yazdığımızı görüyorsunuzdur :)
*/

  print(sayi1Deger + sayi2Deger); //109

/*
Şimdi text bir değer ile sayı bir değeri toplayacağız. Daha önce böyle yapamayız demiştik. Evet normalde böyle yapamayız. Yapamayışımızın sebebi text ile sayının toplanamayışı. Ama biz eğer matematiksel olarak bir toplama işlemi değil de ikisini yan yana getirmek istiyorsak tabi ki bunun birkaç yolunu bulmuş atalarımız :)

Bunun mantığı şu ki; Text değer zaten text bir değerdir. Sayısal bir değer sayısal bir değer olmasının yanında text bir değer olarak da düşünülebilir. Bunun için text değer değişken isminin yanına artı dedikten sonra sayısal değişken ismini yazarken değişken adı.toString dediğimiz zaman sistem bunu matematiksel bir sayı olmaktan çıkartıp text bir değer olarak okuyor. Böylelikle textler birleşmiş gibi oluyor. Gibi değil bu oluyor aslında. 

Aşağıdaki örneği açıklayacak olursak; önce text1Deger sonra bosluk text değer sonra da yine artı diyerek sayi1Deger.toString dedik mi bu son değişken sayı tipinde bile olsa sen onu matematiksel işlem yapılamayacak bir text olarak bunların yanına ekle demiş oluyoruz.

Daha basit anlatırsak text1Deger'i al yanına bosluk değişkenini ekle onun da yanına sayi1Deger int tipinde ama sen onu sayi1Deger.toString() komutuyla string yap ve 3 string ifadeyi topla yani yan yana yaz.
*/

  print(text1Deger + bosluk + sayi1Deger.toString()); //text değerimiz 10

/*
Aşağıdaki örneği inceleyelim şimdi de. Burada da önce iki tane string değişken ismi girdik ve sonrasında bir tane integer değişken ismi girdik. Üç adet değişkenin üçüde string tipinde olsaydı üçünü de direkt yazabilirdik. Oysa şimdi son değişken olan int tipindeki değişkeni tırnak içine alıp başına dolar işareti koyarak yazmamız gerekti. Bu şekilde yazınca o değişkenin tipi int olmasına rağmen sistem onu string olarak algılayacak ve 3 adet text değişkeni toplamış gibi işlem yapacak. Bu yöntemde string olmayan değişken türünü string değişken gibi işleme alabiliyoruz. Dikkat ederseniz print içinde değişken isimleri olduğu için en başta ve en sonda tırnak kullanmadık. String değişkenler için zaten tırnaklara gerek olmuyordu. Bunların yanına int bir değişkeni eklemek istedik mi sadece o değişkene tırnak ve dolar ekledik. Tırnakları ve doları silerseniz sistem size hata verecektir. 
*/

  print(text1Deger + bosluk + '$sayi1Deger'); //text değerimiz 10

/*
Şimdiki örnekte ise aşağıdaki print içinde değişken isimlerinin haricinde yazı da olan bir durumla karşı karşıyayız. Ve en başta ve en sonda tırnak işareti var. Böyle bir durumda çıktı vermek istiyorsak ekrana o zaman şöyle yapacağız. Bu durumda değişkenlerin tiplerinin bir önemi yok. Hepsinin başına dolar işareti koyduk mu sistem hepsini text değer olarak normal yazının yanına ekliyor. Hemen yukardaki  örnekte sadece değişkenleri kullanıyorduk. İşlemler arasındaki fark oradan  kaynaklanıyor. 

Yukarıda değişkenlerin değerlerini yazdırıyorduk. int değişken string tipine dönüyordu. Burada ise zaten text bir metin var. Yani tırnaklar içindeki textin yanına değişkenlerin değerlerini aldığımız için burada olan işlem hangi kelimenin değişken olduğunu önce sisteme bildiriyoruz sonra texte çevirtiyoruz. Yukarda string değişkenleri otomatik basıyordu biz sadece int olanı sisteme tanıttık. Aşağıda ise hepsini tanıtıyoruz. 
*/

  print("$text1Deger $bosluk text içi değişkenler $bosluk $sayi1Deger");

/*
Aşağıdaki iki örneğe de bakalım :) Yeri gelmiş yada gelmemiş ne fark eder :). İki print komutu da aynı gibi duruyor lakin öyle değildir. Aralarındaki tek fark üsttekinde süslü parantez var alttakinde yok. Sadece string olmayan bir değişkeni yazdıracaksak ikisi de aynı işlemi yapabilir. Bunda bir problem yok. Şimdi gelelim farklarına.

Süslü parantez ile kullanılan değişkende şöyle bir durum var. Değişken ismini yazdıktan sonra nokta koyarsak eğer bize o değişkenin türüne göre kullanabileceğimiz bazı özellikler ve fonksiyonlar açılmaktadır. İhtiyacımıza göre oradan seçimler yapıp sadece değişkenin değeriyle ilgili değil daha genel manada değişkenin başka özellikleri ve fonksiyonları ile ilgili bilgileri de ekrana yazdırabiliriz. Bu konuya değindiğimiz yazıyı okuyabilirsiniz.
*/

  print('değişken olmadan düz text değer ${sayi1Deger}');
  print('değişken olmadan düz text değer $sayi1Deger');

/*
Şimdi konu iyice pekişsin diye son bir örnek yapalım. Bu örneğimiz için önce değişkenlerimizi tanımlayalım. Burada yazı, tam sayı, ondalık sayı ve doğru yanlış değişkenlerini kullanalım. Çünkü her türlü veriyi text şekline çevirebiliyoruz. 
*/

  String adi = "metulangu";
  int yas = 18;
  double not = 3.5;
  bool gectiMi = true;

/*
Şimdi hepsini bir print içinde aşağıda gösterdik. Kullandığımız tek veya çift tırnak olabilir. Bu printin açıklamasını yapalım şimdide. Tırnak işaretleri içerisinde textleri yazıyoruz. Artı işareti ile her şeyi topluyoruz. String dışındaki değişkenlerin hepsini .toString fonksiyonuyla String'e çeviriyoruz. Hepsi bu kadar aslında. Ancak yazımı biraz uzun gibi. Bu şekilde bir yazım var ama gördüğünüz gibi bunu yazmak gerçekten zor.
*/

  print("Adınız: " +
      adi +
      " " +
      "Yaşınız: " +
      yas.toString() +
      " " +
      "Notunuz: " +
      not.toString() +
      " " +
      "Durumunuz: " +
      gectiMi.toString());

/* 
Bunu gören yazılımcılar bunun daha kolay bir yolu olmalı dediler ve aşağıdaki daha kolay yolu icat ettiler :). Normal cümle kullanır gibi cümlemizi kuruyoruz. Sadece değişken adlarına geldik mi başlarına dolar işareti bırakıyoruz.
*/

  print("Adınız: $adi Yaşınız: $yas Notunuz: $not Durumunuz $gectiMi");

}


Sadece Kodlar

void main() {
String satirlik = """
bu veri
birden fazla
satırdan oluşuyor""";
print(satirlik); //Çıktısı 3 satır olarak oluşacaktır.
String satirlik = """
bu veri
birden fazla
satırdan oluşuyor""";
print(satirlik); //Çıktısı 3 satır olarak oluşacaktır.
String deneme1 = "bir deneme \n yazısı";
print(deneme1);//İki satır çıktı 
print("merhaba \n nasılsın"); // iki satır çıktı.
print("merhaba \n nasılsın \n ben de \n iyiyim"); // daha fazla  satır çıktı.
String CiftTirnak = "Rize'ye hiç gittin mi?";
print(CiftTirnak); //Rize'ye hiç gittin mi?
//String tekTirnak = 'Rize'ye hiç gittin mi?';
String Tektirnak = 'Rize\'ye hiç gittin mi?';
print(Tektirnak); //Rize'ye hiç gittin mi?
num tamSayi = 5; //tam sayı tanımı
num kesirliSayi = 5.3; // kesirli sayı tanımlama
print(tamSayi); //tamsayı ekrana yazdırma 5
print(kesirliSayi); //kesirli sayıyı ekrana yazdırma 5.3
print(tamSayi * kesirliSayi); //tam ve kesirli sayı çarpımı. 26.5
// num textDenemesi = "text deniyoruz"; // Hatalı işlem
String text1Deger = "text değerimiz";
String text2Deger = "text";
int sayi1Deger = 10;
int sayi2Deger = 99;
print(text1Deger + text2Deger); //text değerimiztext
String bosluk = " ";
print(text1Deger + bosluk + text2Deger); //text değerimiz text
print(sayi1Deger + sayi2Deger); //109
print(text1Deger + bosluk + sayi1Deger.toString()); //text değerimiz 10
print(text1Deger + bosluk + '$sayi1Deger'); //text değerimiz 10
print("$text1Deger $bosluk text içi değişkenler $bosluk $sayi1Deger");
print('değişken olmadan düz text değer ${sayi1Deger}');
print('değişken olmadan düz text değer $sayi1Deger');
String adi = "metulangu";
int yas = 18;
double not = 3.5;
bool gectiMi = true;
print("Adınız: " + adi + " " + "Yaşınız: " + yas.toString() + " " + "Notunuz: " +  not.toString() + " " + "Durumunuz: " + gectiMi.toString());
print("Adınız: $adi Yaşınız: $yas Notunuz: $not Durumunuz $gectiMi");
}


https://gist.github.com/metulangu/e0621bfda08955374272da790b1711e6 


Share This

0 comments:

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