Showing posts with label Dart Programlama Dili. Show all posts
Showing posts with label Dart Programlama Dili. Show all posts

Monday, November 7, 2022

Dart Ders Notlarım 25: if – if – if vs if – else if – else Derin Analiz

Dart Ders Notlarım 25: if – if – if vs if – else if – else Derin Analiz

 

Dart Ders Notlarım 25: if – if – if vs if – else if – else Derin Analiz


    int yas = 15;

  if (yas < 1) {

    print("Bebek");

  } else if (yas < 4) {

    print("Çocuk");

  } else if (yas < 12) {

    print("Genç");

  } else if (yas < 18) {

    print("Ergen");

  } else {

    print("Yetişkin");

  }

Şimdi diyebiliriz ki ben sıfır girince bu hepsinde geçerli oluyor. Eğer ben sıfır girersem bu giriş 1,4,12 ve 18 den küçük olmaz mı? Her şart sağlanmaz mı? Aslında her şartı sağlıyor. Ama çalışma mantığını kavradık mı işin pekte öyle olmadığını göreceğiz.

Şöyle ki buradaki sistem yakalama sistemi. Burada program şartlara bizim yazdığımız sıra ile bakıyor. Bu sebeple şartları mantıklı bir şekilde yazmalıyız. Buradaki gibi sayısal ise küçükten büyüğe doğru. Her şart topluluğumuzu girerken mantıklı bir sıralamamız olması gerekiyor.  Yoksa programın yanlış bir bloğa girme ihtimali var.

Sıfır için deneyelim

Program ilk yakaladığı şartın içine giriyor ve ardından diğer şartlara bakmadan kod bloğundan dışarı çıkıyor. Diyelim ben 0 girdim.  İlk sırada 1 den küçük mü diye kontrol sağlandı. Kontrol doğru. Ne olacak. Bu şartın print’i çalışacak. Sonra ne olacak. Daha program diğer şartlara bakmadan kod bloğundan dışarı çıkacak.  //Bebek

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Üç için deneyelim

Şimdi 3 girdiğimizi düşünelim. İlk satırda 3 1’den küçük mü? Değil. İkinci satırda 3 4’ten küçük mü? Evet. Hemen oradaki bloğa girecek ve oradaki kodu çalıştıracak. Sonra kod bloğundan çıkacak. Yani diğer şartları kontrol etmeyecek. Etseydi zaten 3 girince biz sadece ilk şartı geçip sonraki her şarta girmesi gerekirdi. //Çocuk

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Dokuz için deneyelim

 

Şimdi de 9 için bakalım. Dokuz 1 den büyük orayı geçti. 4 ten büyük orayı da geçti. 12 den büyük mü? Hayır. Ne olacak o kod bloğu çalışacak ve diğer şartlara bakmadan kod bloğundan çıkacak.//Genç

 

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

On altı için deneyelim

16 için bakalım. Hemen program başlayacak. 16, 1-4-12 den büyük. Yani küçük değil. Ama 18 den küçük. Şart doğrulandı. Gir kodu çalıştır bloktan çık.//Ergen

 

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Yirmi için deneyelim

 

20 için daha hızlı bakalım. 20 demek else bloğu demek.  Çok daha hızlı bakalım.

20 1-4-12 ve 18 den büyük. Hiçbir şart sağlanmadığı zaman varsa program else bloğuna bakıyor. O blok varsa oradaki kodu çalıştırıp bloktan çıkıyor ki zaten blokta başka bir şey kalmadı. Eğer else yoksa direkt bloğu komple baypas ediyor. 20 her şarttan büyük çıktığı için program else içindeki kodu ekrana yazacak. //Yetşikin

 

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Yanlış yazılmış şartlarda ne oluyor

Şimdi şartları yanlış yazdığımız bir bloğa bakalım. Diyelim ki şartları aklımıza geldikçe yazdık ve tabi hatalı oldu. Aşağıdaki gibi 18 şartını en başa çaktık diyelim. Bu blok iki durumda çalışır artık. Bir 18 den küçük olduğu durumlarda. Bir de 18 den büyük olduğu durumlarda. Çünkü alttaki hiçbir şart kontrol edilmez else hariç diğer hepsine ölü kod diyebiliriz. İki örnekle bunu görelim. Bir tane 18 den küçük bir tane de büyük örnekle bakalım neler olacak.

yas < 18

yas < 1    

yas < 4

yas < 12

else

Hatalı blok.

 

Yanlış yazımda on değerine bakalım

10 için bakalım. 10 18’den küçük mü? Evet. Hemen birinci şart sağlandı mı? Evet. Program bu şart sağlandığı için diğer şartlara bakacak mı? Hayır. İlk kod bloğuna girdi print’i bastı ve diğer bloklara bakmadan tüm bloktan çıktı mı? Evet. Ne olmuş oldu şimdi peki? Olan şey şartları doğru sırada yazmadığımız için hatalı kontrol sağlandı. Şartlar doğru yazılsaydı 10 değeri kendine en yakın 12 den küçük olduğu için 12’nin else if bloğu çalışacaktı. O bloğa program bakmadı bile. Neden? Çünkü ölü kaldı orası. CanlanamadıJ

yas < 18

yas < 1    

yas < 4

yas < 12

else

Hatalı blok.

Yanlış yazımda otuz beş değerine bakalım

Şimdi de 35 için bakalım. Bu sefer program tüm satırlara bakacak. Çünkü hatalı da yazılmış olsa hiçbir şart else bloğuna kadar sağlanamadığı için hepsine tek tek baktıktan sonra else bloğuna gidip orasını çalıştıracak program. Bu bozuk saat bile günde 2 kez doğruyu gösteriyor gibi bir şey oldu galibaJ

yas < 18

yas < 1    

yas < 4

yas < 12

else

Hatalı blok.

Hatalı yazım için kısa analiz

İki adet hatalı giriş denedik. Biri en büyük şarttan küçük diğeri de en büyük şarttan büyük iki sayı. Mantıklı bir şekilde bakınca şu gözüküyor. Şartların içinde en büyük şartı biz en başa koyunca ondan küçük tüm şartlar ölü oluyor ve o sayıdan küçük bütün değerleri kendisi direkt yakalıyor ve diğer şartların kontrol edilmesine bile gerek kalmadan program bloktan çıkıyor.

En büyük şarttan büyük her sayı için ise program bütün şartları kontrol edip else bloğuna gidiyor. Çünkü sayımız en başta bulunan en büyüğe zaten girmediği için alt sıralardaki diğer şartlara da doğal olarak girmeden ama kontrol ederek else bloğuna gidecek. Burada sıralama doğru olsaydı yine de bütün şartlar tek tek kontrol edilecekti. 

Neden her şartı if yapmadık da else if yaptık?

 

if   yas < 1    

if   yas < 4

if   yas < 12

if   yas < 18

else

Neden böyle değil?

 

if   yas < 1    

else if   yas < 4

else if   yas < 12

else if   yas < 18

else

Neden böyle.

 

Aslında ihtiyacımıza göre ikisinin de kullanılmasında bir problem yok. Problem üsttekine ihtiyaç varken alttakinin veya alttakine ihtiyaç varken üstekinin kullanılmasından ortaya çıkıyor genelde. Ama bazen aynı işi ikisi de yapabiliyor. O zaman da tercih size ve tecrübenize kalmış demektir.

Burada önemli olan çalışma felsefelerini bilmek ve ihtiyaca göre gerekli olanı kullanmak. Aslında bu yapılardan biri diğerinin yaptığı işi yapabiliyor ise o zaman kod tasarrufu, zaman tasarrufu, işlemci tasarrufu vb. durumları göz önüne alarak tercihimizi yapmamız gerekiyor.

Şimdi çalışma felsefelerine bakalım. Önce üstten beri açıklaya geldiğimiz else if yapısına bakalım.

else if - else if - else

else if yapısını kullanırken bizim amacımız şartlarımızdan sadece biri doğru olunca onun sonucuna göre bir işlem yapmak. Burada üstteki kodu düşünebiliriz. Biz orada kişinin yaşam dönemini buluyoruz. Bu bizden sadece bir şartın doğru çıkmasını gerektirecek bir kod yapısı ister. Çünkü bir kişi hem bebek hem yetişkin olamaz. En sonunda sadece tek bir şartın geçerli olduğu ve o şarta göre programın yapması gereken bir şey varsa böyle durumlarda else if ile kodlama yapıyoruz. Bu şartları da doğru bir sıralamada yazmamız gerekiyor orasını artık biliyoruz. Tekrar ifade edeyim sadece bir şart gerekli ve o şart sağlandı mı diğer şartlara program bakmadan o bir şartın kod bloğunu çalıştırıp hemen kod bloğundan çıkan bir yapı bu yapımız. Bu ve benzeri durumlarda else if yapısını kullanabiliriz.

if – if – if

Eğer her şartı if ile kodlayacağımız yapıyı kullanacaksak bizim amacımız şartlardan sadece biri değil de birden fazlası doğru olunca doğru olan bu birden fazla şart için bir şeyler yapmak. Burada şöyle bir örnek verebiliriz.

Kurgumuz şu şekilde. Diyelim ki Yükseköğretim Kurumu yurt dışı Üniversitelere Erasmus ile öğrenci yolluyor. Bunun için bir puan değişkeni lazım bize. Düşününki bu puan bir sürü çarpandan oluşuyor orası bizi ilgilendirmez biz direkt puanın son hali bize gelmiş gibi işlem yapacağız. Puan 90 ve üzeri ise tüm Üniversitelere geçiş hakkı oluyor, A-B-C-D-E kalitedeki hepsine. 80 ve üzeri B-C-D-E kalite. 70 ve üzeri C-D-E kalite. 60 ve üzeri D-E kalite. 50 ve üzeri E kalite olsun. Daha aşağı puanlarda ise geçiş hakkı bulunmuyor.

Şimdi aşağıda else if ile sözde koda benzer yazımına bakalım. A-B-C-D-E aynı zamanda fonksiyonlarımızın da isimleri olsun. Her bir harfin içinde onlarca fonksiyon olduğunu unutmayalım. Burada gördüğümüz gibi her şartın yanına fonksiyonlarımızı ekledik. Doksandan büyük olana hepsini ekleyerek alt alta giderek her satırda bir fonksiyonu çıkardık. Mesela E fonksiyonun her şartta çağırdık. Esas mesela her şartta yazmış olmamız. Çalışma mantığına bakalım. Örneğin 55 girdik. Şartlar sağlanmadığı için puan>=50 ye kadar olan şartlar atlandı. Puan>=50’de şart sağlandı sadece E fonksiyonları çalıştı. Diyelim 95 girdik. İlk şart direkt sağlandığı için o bloktaki kodlar çalıştı ve program bloktan dışarı çıktı. Birde 45 girildi diyelim. Hiçbir şart sağlanmadığı için en sona eklediğimiz else bloğu çalışır ve ekrana geçiş hakkınız yoktur yazılır.

if        puan >= 90 A-B-C-D-E

else if   puan >= 80 B-C-D-E

else if   puan >= 70 C-D-E

else if   puan >= 60 D-E

else if   puan >= 50 E

else              Geçiş Hakkınız Yoktur…   

else if yapısı bu şekilde.

 

Aradaki farkı daha iyi anlama adına else if halini yukarda yazdık ve açıkladık. Şimdi de aşağıda if ile kodların sözde yazımına ve açıklamasına bakalım. Fonksiyonların mantığı yukarıda dediğimiz gibi olsun. Burada en önemli nokta program bizim girdiğimiz her puan değeri için her satırdaki şartı tek tek kontrol edecek ve uygun olan tüm şartlardaki fonksiyonları çalıştıracak. Şimdi 55 girelim. Şartları kontrole başladı program. Hepsine baktı ve sadece puan >= 50 şartı sağlandığı için sadece E fonksiyonu çalışacak. Şimdi 95 girelim. 95 için ilk if çalıştı, ikinci if çalıştı ve bunun gibi ilk 5 adet if kodumuz çalışacaktır. En sondaki puan < 50 hariç. Bütün if’ler çalıştığı için A-B-C-D-E fonksiyonları hepsi çalışmış olacak. Şimdide 45 girelim ve sadece son if şartı doğru olduğu için sadece o if bloğu çalışır ve geçiş hakkınız yoktur yazar ekrana.

 

if      puan >= 90 A

if      puan >= 80 B

if      puan >= 70 C

if      puan >= 60 D

if      puan >= 50 E

if      puan < 50 Geçiş Hakkınız Yoktur…***

if yapısı bu şekilde.

 

*** bu satırda else olmaz çünkü bütün if’ler ayrı ayrı kontrol ediliyor. Yine burada puan>=0 diyemeyiz. Çünkü o zaman 95 girince bu şartı da sağladığı için kişiye hem her şeyi tercih edebilirsiniz dönecek hem de geçiş hakkınız yoktur diyecek. Bunun için puan < 50 dememiz gerekiyor orada.

if – if – if vs else if – else if – else Sonuç

Şimdi yazılım iki kod bloğunu da çalıştırır. Yazılımın kodlamayı nasıl yaptığımızla bir alıp veremediği olmaz. Gelelim biz neye göre tercih yapacağız.

Şimdi şöyle bir gelenek var. Bir if bloğu else if’lerle birlikte sadece bir ana şartı gündemine alsa daha iyi gibi. Sürekli alt alta if’leri dizeceksek gelenek derki her bir if ayrı bir şartın başlangıcı olsun. Bir if ile başlıyorsak ilgili diğer şartları o if içerisinde tanımlamak daha bir tercih sebebi.

Lakin dediğimiz gibi her şey gelir sizin ihtiyacınızı en verimli şekilde çözen yola dayanır. Bunu tecrübeyle, araştırmayla vb. daha başka yollarla siz kendiniz bulacaksınız.

Hiç olmadı deneme yanılma yoluna gideceksiniz. Zamanla zaten istediğiniz kıvama geleceksiniz. O zaman şu anda ne yapmalıyım daha önemli oldu. Oda sizin zamanla geleceğiniz kıvama şuanda gelmiş olan bir usta bulmak. Araştırmak dediğimiz olay ustalığa gelinince bırakılmıyor. O ömür bitene kadar bitmeyen bir şey. Orası ayrı zaten. Her zaman araştırın. Ama kendisini bu işe vermiş ciddi anlamda ilerlemiş ve insanlara yardım etmekten zevk alan biri bulursanız o zaman bu işler tadından yenmez oluyor.

İstisnaları olmakla birlikte bir kişinin yol göstermesi onun yıllarca edindiği tecrübeyi size bir anda aktarması gibi bir şey zaten. Arının binlerce ağaçtan yüzlerce günde yaptığı balı bir anda yemek gibi bir şey oluyor.

Tabi bu iş böyle gözüküyor diye araştırmayı bırakırsanız olan yine size olur. Hem siz kendiniz faydalandığınız kadar başkalarına da faydalı olmalısınız ilerleyen zamanlarda. Bunu yapmaz iseniz adalet gelir sizi bulur ve emin olun belli bir seviyenin üstüne çıkamazsınız. İnsan olmak insan kalmak güzeldir…

Şimdi de sayı doğrusunda else if şart yakalama sistemine renkli olarak bakalım.

yas < 1   bebek  

yas < 4   Çocuk

yas < 12  Genç

yas < 18  Ergen    

else      Yetişkin

0 1…3 4…11 12…17 18 19…

yas < 1  yas < 4   yas < 12    yas < 18        else

 

https://gist.github.com/metulangu/7a6a9ffe8679296541724bf00ba73ae6

Friday, October 28, 2022

Dart Ders Notlarım 24: Kısa Yazım if  -  else if - else

Dart Ders Notlarım 24: Kısa Yazım if - else if - else

Dart Ders Notlarım 24: Kısa Yazım if  -  else if - else


void main() {

/*

Şimdi sıra geldi else if ile çoklu sorgulu olarak yazdığımız blokların daha kısa 

bir yazım yoluna. Burada 3 ve daha fazla şartlı kodlarımızı if, else if,

ve else bloklarını hatta kelimelerini bile kullanmadan yazacağız. Bunu daha az 

kod yazarak yapacağımız için tabiki bize kolaylık sağlayacaktır.


Şimdi daha önce yaptığımız bir insanın yaşam dönemini bize veren programı burada

kodlayalım. Programa yaş bilgisini veriyorduk ve bize bebek, çocuk, genç, ergen

ve yetişkin değerlerini dönüyordu.


Bunu ilk defa kullanıyoruz. O sebeple detaylı bir açıklamasını yapalım.

önce int tipinde yani tam sayı bir yas isiminde değişken tanımlayıp hemen

aynı satırda değer olarak 30 değerini girdik.


Sonra String isminde sonuc adında bir değişkene eşittir diyoruz ve sorgularımızı

yazmaya başlıyoruz. Bu şu anlama gelmektedir. Sonuç değişkenine yas<1 ile 

başlayan ve en son satırında noktalı virgül ile biten bütün bu sogulamanın

sonucunu ata. Text olarak atayacak. Bunu nerden biliyoruz. Değerler tırnak 

işareti ile yazılmış. 


Devam edelim. ilk sorgumuz yas<1 yazdıktan sonra alt satıra ? soru işareti ile 

boşluk atıyoruz ve doğru çıktığında ekrana yazıalcak ifadeyi tırnak içinde 

giriyoruz yani bebek. Sonra altsatıra iki nokta üstüste koyup yeni sorguyu yazıyoruz. 

Bu sorgumuz yas<4. Bunu yazdıktan sonra alt satıra soru işareti koyarak 

tırnak içinde sorgu doğru olunca çalışacak texti yazıyoruz yani çocuk. Sonra 

yine iki nokta üstüste koyup yeni sorgumuzu yazıyoruz. yas<12. Alt satıra

soru işareti koyup tırnak içinde genç yazıyoruz. Bu şart doğru çıkarsa

sonuç değişkenine genç değeri atanacak. Sonra alt satıra iki nokta üstüste

koyduktan sonra yeni şartımızı yazıyoruz yas<18. Altsatıra soru işareti koyup 

tırnaklar arasına ergen yazıyoruz. Şartlarımız bitti. Şimdi bu durumlardan 

hiç biri sağlanmaz ise çalışacak kodu yazmalıyım. Yani else işlemi. Bunun için 

alt satıra inip iki nokta üstüste dedikten sonra tırnak içinde yetişkin 

yazıyoruz. Hiç bir şart sağlanmaz ise sonuc değişkenine yetişkin değerini ata

demiş oluyoruz. Ve en sonunda noktalı virgül ile bloğu kapatıyoruz. Bloktan

sonra sonuc değişkenini ekrana yazdırmak için print komutunu kullanıyoruz. Tüm

işlemler bitti. 


Biraz korkutucu gibi durdu koca bir paragraf açıklama ama alakası yok :). 

Çok kolay aslında. Şimdi yukarıdaki açıklamadan daha basit bir açıklama ile

anlatmaya çalışalım. 


Şimdi ilk önce String bir değişken tanımladık ki biz sonucu ona atalım en sonunda

onuda print ile ekrana yazdıralım. Bu sonuc değişkenini ilk sorgumuza eşitliyoruz

gibi duruyor aslında ama asıl olan bütün sorgunun sonucunda gelecek texti biz

o sonuc değişkenine aktarmış oluyoruz. İlk şartımızı bu şekilde yazıyoruz. 

yas<1 dedik. sonra soru işareti ile doğru mu diye soruyoruz şeklinde düşünebiliriz.

Soru işaretinden sonra doğru ise değişkene atayacağımız text değerini yazıyoruz.

Bundan sonrası tam bir döngü aslında.


 

: sorgu 

  ? 'text'

Dikkatli bakarsanız hemen yukardaki gibi devam etmekte kodlama. İlki ve en son

else için bişi kullanacaksak onlar hariç arada ister 3 ister 103 tane şart olsun

hepsi bu şekilde yazılıyor. İki nokta üstüste diyoruz sorguyu yazıp sonra alt

satıra soru işareti koyup textimizi tırnak içine yazıyoruz.


Onu da şöyle okuyabiliriz. :(sorgumuz) yas<4 ? (ise bunu ekrana yaz) 'text'


: bunu "sorgumuz" ve ? bunuda "ise ekrana bunu yaz" şeklinde okuyabilirsiniz.


Şimdi son sorgumuzuda bu şekilde yazdıktan sonra else bloğu için sadece iki nokta

üst üste koyup direkt bütün bu şartların dışında bir şey gelirse o zaman 

bunu değişkene ata der gibi tırnak içinde texti yazacaksınız. Zaten else de şart

olmaz. Çünkü lazım olan şartları kontrol ettik biz. Eğer bu şartlarda bir değer

gelirse onu da bu şekilde cevapla demiş oluyoruz. En son print ile sonuc 

değişkenini ekrana basıyoruz.


Alt satıra diye sürekli belirtiyorum çünkü bir satır şeklinde de yazabilirsiniz

ama kaydet deyince bunu bu şekle sokuyor editör. Bende bu şekilde anlattım daha

kolay alışırız diye.

*/


  int yas = 30;

  String sonuc = yas < 1

      ? 'Bebek'

      : yas < 4

          ? 'Çocuk'

          : yas < 12

              ? 'Genç'

              : yas < 18

                  ? 'Ergen'

                  : 'Yetişkin'; //True

  print(sonuc);


/*

Şimdi bir de satır satır sadece nasıl okuyoruz onuda gösterelim. 

*/


  yas = 12;

/*

  Yaş değişkeni 12 oldu.

*/


  sonuc = yas < 1

/*

sonuc değişkenine tüm sorgunun sonucunu atamaya başladığımız satır. Ve 

burada ilk sorgumuzu yazıyoruz.

*/


      ? 'Bebek'

/*

Üstte yazdık yas<1 ise Bebek. Bu şekilde okunabilir.

*/

      : yas < 4

          ? 'Çocuk'

/*

Aradakileri ikili ikili şu şekilde okuyabiliriz. 

yaş küçük 4 ise sonuç Çocuk

*/


          : yas < 12

              ? 'Genç'

/*

yaş küçük 12 ise sonuç Genç

*/


              : yas < 18

                  ? 'Ergen' //True

/*

yaş küçük 18 ise sonuç Ergen

*/


                  : 'Yetişkin';

/*

Üsttekilerden hiç biri gelmezse sonuç Yetişkin olsun.

*/


  print(sonuc);


/*

Sonra sonuç değişkenini ekrana bastırıyoruz.

*/


/*

Şimdi bu örneğin sonucunu bir değişkene atamadan da çözebiliriz.

Bunun için string bir değişkene gerek kalmıyor. Çünkü üstteki örneklerde textleri

yazdığımız yere bu sefer direkt printle sonucu yazdıracağız.


Olan işleme bir kez daha bakalım. Üstte ? işaretinden sonra gelmesini istediğimiz

sonucu yazıp bunu bir sonuc adlı değişkene aktarıp en sonunda sonuc değişkenini

ekrana basıyorduk. 


Burada ise ekrana basma işlemini direkt yerinde yapıyoruz. Belki bu daha da 

anlaşılır olacaktır.


Bu kodu açıklayalım. Önce yas değişkenini sıfıra eşitledik.

Bundan sonra iki satır iki satır açıklama yapalım.

Soru işaretini "ise", iki nokta üstüsteyi de "değilse" olarak okuyabiliriz.

yas<1 ise bebek yaz.

değilse yas<4 ise çoccuk yaz.

değilse yas<12 ise genç yaz.

değilse yas<18 sie ergen yaz.

Son tek satır. Hiç biri değilse yetişkin yaz.


Bu tür kullanımda daha belirgin olarak şunu gördük ikili kullanım olarak

bakınca mantığını daha iyi anlıyoruz.


*/


  yas = 0;


  yas < 1

      ? print('Bebek') //True

      : yas < 4

          ? print('Çocuk')

          : yas < 12

              ? print("Genç")

              : yas < 18

                  ? print("ergen")

                  : print("yetişkin");


/*

Şimdiki örneğimiz daha önce yaptığımız sayının sıfır, pozitif veya negatif

olduğunu bulup ekrana yazan kodun kısa gösterim hali olsun. Uzun gösterimine 

daha önceki yazılardan bakabilirsiniz.


Şimdi kodu açıklayalım.

sayi -33 atandı.

sayi < 0 ise negatif yaz.

değilse sayi == 0 ise sıfır yaz.

hiçbiri değilse pozitif yaz.


Açıklama bile ne kadar kısaldı :)

*/


  int sayi = -33;


  sayi < 0

      ? print("Girdiğiniz sayı negatiftir.") //True

      : sayi == 0

          ? print("Girdiğiniz sayı sıfırdır")

          : print("Girdiğiniz sayı pozitiftir");


/*

Şimdi de mevsimlerin ayları ile ilgili yaptığımız örneğimizi kısa 

gösterimle yapalım. Bu son örneğimiz olsun. HEm uzun haline hemde kısa haline

aynı anda bakalım. Önce eski stildekini görelim.

*/


  String mevsim = "yaz";


  if (mevsim == "ilkbahar") {

    print("Mart,Nisan,Mayıs");

  } else if (mevsim == "yaz") {

    print("Haziran,Temmuz,Ağustos"); //True

  } else if (mevsim == "sonbahar") {

    print("Eylül,Ekim,Kasım");

  } else if (mevsim == "kış") {

    print("Aralık,Ocak,Şubat");

  } else {

    print("küçük harfle ve bitişik bir mevsim ismini girin");

  }

/*

Yukarda else if ile yazılmış halini gördüğünüz kod bloğunun aşağıda 

zincirleme halini görüyorsunuz. Kodları hızlıca açıklayalım. 

mevsimi kış yaptık. 

mevsim ilkbahar ise ayları bas

değilse mevsim yaz ise ayları bas

değilse mevsim sonbahar ise ayları bas

değilse mevsim kıs ise ayları bas

hiçbiri değilse uyarı açıklamasını ekrana bas.

*/

  mevsim = "kış";


  mevsim == "ilkbahar"

      ? print("Mart,Nisan,Mayıs")

      : mevsim == "yaz"

          ? print("Haziran,Temmuz,Ağustos")

          : mevsim == "sonbahar"

              ? print("Eylül,Ekim,Kasım")

              : mevsim == "kış"

                  ? print("Aralık,Ocak,Şubat") //True

                  : print("küçük harfle ve bitişik bir mevsim ismini girin");


/*

Şimdi bu yazım şekli klasik if else if else yazım şeklinin daha kısa bir hali.

zincirleme şartlar gibi bir şey olabilir bunun adı. Bende tam bilmiyorum :)

Şimdi bunları kullanmakta özgürsünüz. Kodlarınızı yazarken istediğinizi 

seçebilirsiniz. Hangisi daha koalyınıza geliyorsa onu tercih edebilirsiniz. 

*/

}



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

Friday, October 21, 2022

Dart Ders Notlarım 23:  if  - else if - else

Dart Ders Notlarım 23: if - else if - else

Dart Ders Notlarım 23:  if  - else if - else


 void main() {

/*

Arkadaşlar şimdiye kadar tek koşul ve iki koşul için işlemler yaptık. Şimdi sıra

geldi ya 2 den fazla koşul varsa sorusuna. Böyle bir durumla karşılaşmamız 

gayet doğal. Bunun için if yapısında şöyle bir durum deniyoruz. 

Burada if deyip parantez içine şartımızı yazıyoruz. Sonra süslü parantez 

içine doğru çıkınca çalışacak kodları yazıyoruz. Bundan sonraki kısmı istediğimiz 

kadar yazabiliriz. En az 3 en fazla gereken kadar şartı kontrol edip sağlandığı 

anda çalıcak kodlarımızı yazabiliriz. Sonra else if diyerek yeni şartımızı

parantez içine yazıyoruz ve hemen devamında süslü parantez içine çalışması gereken

kodlarımızı yazıyoruz. Sonra yine else if diyoruz ve parantezler içine şartımızı

yazıyoruz ve ardından süslü parantez içine çalışması geerekn kodlarımızı yazıyoruz. 

Sonra bu işlemi yukarda belirttiğim gibi ihtiyacımız kadar çoğaltıyoruz. En 

sonunda ise else diyerek bütün yazdığımız şartların dışında bir durum gerçekleşmiş

ise o zaman da bu kodları çalıştır diyerek o kodları yazıyoruz. Burada ikinci

if else'den sonra else diyoruz. Else deyince şart yazmıyoruz artık. Sadece 

süslü parantezlerin içine belirttiğimiz hiç bir şart sağlanmadığında çalışacak

kodları yazıyoruz. Ve işlemi bitiriyoruz. 


if () {


} else if () {


} else if () {


} else {


}


Birde dolu halini görelim.


if (şart) {

Kodlar

} else if (şart) {

Kodlar  

} else if (şart) {

Kodlar

} else {

Kodlar  

}


Bu arada else'i kullanmak tamamen bize kalmış. İster kullanırız ister kullanmayız.


Şöyle bir şey oluyor else ile ilgili eğer kullanırsak ekrana her türlü bir çıktı

vermiş oluyoruz veya şöyle de diyebiliriz her halükarda bir işlem yapmış oluyoruz

çünkü o blokta kodlar var. Bizim belirlediğimiz şartların dışında bir durum ile 

karşılaştık ve bunun içinde bir planımız var demektir. Her zaman bu blok çalışır

ya if veya else if'lerden biri çalışır ya da else çalışır.


Şayet kullanmazsak şartlarımızın dışında bir durum olduğunda ekrana bir çıktı 

vermiyoruz veya öyle bir blok olmadığı ve orada çalışacak kodumuz bulunmadığı için

her hangi bir işlem yaptırmıyoruz programa. Bizim belirlediğimiz şartların 

dışında bir durum ile karşılaştık ve bu bizim için önemli değil demiş olduk. 

Bizim için şartlardan hiç biri sağlanmaz ise bu bloğu hiç çalıştırma.

*/


/*

Şimdi örneklere başlayalım. İlk örneğimiz yaşı girilen kişiyi bebek, çocuk, genç,

ergen ve yetişkin şeklinde katogorize edip sonucu ekrana yazan program olsun.

Görüldüğü üzere burada beş adet şartımız var. Eğer bu kodları if ile yazacaksak

if else if mantığını kullanmalıyız.


Kodu açıklayalım şimdi. Artık parantezleri falan uzun uzun yazmayacağım 

açıklamalarda haberiniz olsun. Öğrendik artık diye düşünüyorum.


Önce yas adında int tipinde bir değişken tanımlayıp değer olarak 15 attık içine.


Sonra if deyip yas<1 sorgusunu yaptık. Bu doğru ise ekrana bebek yaz dedik.


Sonra else if ile yas<4 sorgusunu yaptık. Bu doğru ise ekrana çocuk yaz dedik.

yas<4 demek 1 ve 4 arasında demek oluyor.


Sonra else if ile yas<12 sorgusunu yaptık. Bu doğru ise ekrana genç yaz dedik.

Buda 4 ile 12 arasında demek oluyor.


Sonra else if ile yas<18 sorgusunu yaptık. Bu arada bir değer gelirse Ergen 

çıktısını ver diyoruz. Bu değer 12 ile 18 arasını kapsıyor.


Sonra else yaptık. Buda demek oluyor ki 18 den büyük bir değer gelirse 

o zaman ekrana yetişkin yaz. Çünkü en büyük değerimiz 18 den küçük 12 den 

büyük sayıyı yakalıyor. Girilen değer 18 den büyükse doğal olarak else

bloğu devreye giriyor.

*/


  int yas = 15;


  if (yas < 1) {

    print("Bebek");

  } else if (yas < 4) {

    print("Çocuk");

  } else if (yas < 12) {

    print("Genç");

  } else if (yas < 18) {

    print("Ergen"); //True

  } else {

    print("Yetişkin");

  }


/*

Şimdi üstteki blokta yazdığımız şartların okunaklığnı daha da düzeltebiliriz. 

Kontrol hangi aralıkta ise direkt olarak ona bakabiliriz. Bu bir şeyi değiştirmez

kodun çalışmasında. Ama kodun okunurluluğunda büyük kolaylık sağlar. Birlikte 

görelim. Üstteki örneği direk aşağıya alıyorum bir farkla şartları daha 

okunaklı yazarak. Yani yine tercih sizin diyebiliriz.

*/


  yas = 35;


  if (yas > 0 && yas < 1) {

    print("Bebek");

  } else if (yas >= 1 && yas < 4) {

    print("Çocuk");

  } else if (yas >= 4 && yas < 12) {

    print("Genç");

  } else if (yas >= 12 && yas < 18) {

    print("Ergen");

  } else {

    print("Yetişkin"); //True

  }


/*

Şimdi bir örnek daha yapalım. Sıcaklığı girilen suyun hangi madde halinde 

olduğunu ekrana basalım. Sıfıdan küçükse katı 0 ve 99 arası sıvı 100 ve yukarısı

ise gaz halinde olacak şekilde kodları yazalım.


Aslında buradaki ince nokta şu. if de tek şart vardı. Doğruysa 

ekrana birşeyler bastık, yanlış ise bir şey yapmadık. if else de ise

şart doğruysa bunu yap yanlış ise şunu yap dedik. Bu da iki durumluydu.


Şimdi baktığımız else if ile en az iki şart girip onları kontrol edip a gelince

a işlemini yap, b gelince b işlemini yap dedikten sonra ikisi de gelmez ise

şu işlemi yap diyebiliyoruz. En az iki en çok ise gerektiği kadar.


Şimdi kodu açıklayalım. suDerecesi diye 15 değerini girdiğimiz bir int değişkeni

tanımladık.Sonra if dedik sıfırdan küçükse katı halde yaz. Su sıfırın altında

buz oluyor oda katı madde demek. Sonra else if ile ikinci şartımızı girdik.

su sıfırdan büyük veya eşit ve yüzden küçük ise. Burada ve köprüsünü kullandık.

hem sıfır yada büyük ve 100 den de küçük olacak. Bu halde ise sıvı halde olacağından

Sıvı haldedir diye çıktı verdik. Şimdi bir tane daha else if yazmaya gerek yok.

Bu durumların dışında girilecek sayılar sadece 100 den büyük sayılar. Belirlediğimiz

durumların dışında gelecek her durum için else diyoruz. Çünkü belirlediğimiz 

şartların dışında sadece 100 den büyük sayılar gelebilir. Aynı zamanda şu demek daha 

kısa ifade edersek. else diyerek şunu demiş oluyoruz. Diğer her durum için Gaz halde

yaz. Diğer her durum zaten bizim şartlarımızn dışında kalan tek bir durum. O da 100

den büyük durum. Su 100 derecenin üzerinde gaz halinde olacağından sonuç olarak

zaten bu durumu yazdırıyoruz.

*/


  int suDerecesi = 15;


  if (suDerecesi < 0) {

    print("Su Katı Halde");

  } else if (suDerecesi >= 0 && suDerecesi < 100) {

    print("Su Sıvı Halde"); //True

  } else {

    print("Su Gaz Halde");

  }


/*

Yeni bir örneğe bakalım. Girilen bir sayının negatif, pozitif yada sıfır 

olup olmadığını bulup bunu ekrana yazan program. Görüldüğü gibi burada da

en az 3 durum söz konusu. Yani else if sistemini kullanmak gerekecek.

Kodu açıklayalım. sayi değişkeni int tanımlandı ve sıfıra eşitlendi. Sonra

sayi küçük sıfır ise negatif yaz, sayı eşittir 0 ise sıfır yaz ve sayı büyük 

sıfır ise pozitif yaz. Bu kadar.

*/


  int sayi = 0;


  if (sayi < 0) {

    print("$sayi'sayısı Negatiftir");

  } else if (sayi == 0) {

    print("$sayi'sayısı sıfırdır"); //True

  } else if (sayi > 0) {

    print("$sayi'sayısı pozitiftir");

  }

/*

Bu sefer mevsimin adı girilince o mevsimdeki

ayların isimlerini ekrana yazan programı kodlayalım.

mevsim isminde string bir değişken tanımlayıp değerini tırnak içinde yaz

olarak girdik aynı satırda. Sonra koşullar geliyor zaten. Burada sıralamanın

bir önemi yok. İstediğimiz sırada kontrollerimizi sağlayabiliriz. Ben ilkbahar

ile başladım mesela. mevsim ilkbahar ise ilkbahar aylarını, yaz ise yaz aylarını,

sonbahar ise sonbahar aylarını ve kış ise kış aylarını ekrana yaz diye kodlarımızı

yazdık. En sona else koyduk ki kişi yanlış herhangi bişi girince mesaj olarak

ona ne girmesi gerektiğini söyleyelim.

*/


  String mevsim = "yaz";


  if (mevsim == "ilkbahar") {

    print("Mart,Nisan,Mayıs");

  } else if (mevsim == "yaz") {

    print("Haziran,Temmuz,Ağustos"); //True

  } else if (mevsim == "sonbahar") {

    print("Eylül,Ekim,Kasım");

  } else if (mevsim == "kış") {

    print("Aralık,Ocak,Şubat");

  } else {

    print("küçük harfle ve bitişik bir mevsim ismini girin");

  }


/*

Bu çoklu şartlarında az daha kısa bir yolu var. Bir dahaki yazıda ona bakalım.

Ternary gösterimin çoklu şart için kullanılan hali diyebiliriz ona.

*/

}

Friday, October 14, 2022

Dart Ders Notlarım 22: Tek Satır if-else

Dart Ders Notlarım 22: Tek Satır if-else

 

Dart Ders Notlarım 22: Tek Satır if-else


void main() {

/*

Arkadaşlar. if-else yapısına göre ayarlanmış bir kısa yazım şekli var.

 Buna üçlü operatör diyorlar. Bir satır ve 3 kısımdan oluşuyor. 

1. kısım şart. 2.kısım şart doğru olunca çalışacak kod. 3. kısım şart yanlış

olunca çalışacak kısım. Bu yazım şeklinde if sonra blok aç kodları yaz sonra 

else yap sonra blok aç else kodlarını yaz gibi durumlar yok.

Bunun gösterimi tek satırda oluyor.Bir satırda işi bitiriyoruz. Yazı olarak yazalım.

Şartımız ? şartDoğruOluncaBurası : şartYanlışOluncaBurası

Gördüğünüz gibi önce bir şart yazıyoruz. Sonra soru işareti ? bırakıyoruz yanına.

Sonra şart doğru olunca yapılacak işlemi giriyoruz. Sonra iki nokta üstüste : 

koyuyoruz. Ve bundan da sonra şart yanlış çıkınca çalışacak kodu yazıyoruz. En 

sonuna noktalı virgül deyip ; işlemi tamamlıyoruz. Şimdi aşağıdaki 

örneklere bakalım.

*/


/*

Aşağıdaki örnekte önce uzun halini sonra kısa halini yazdık. Aynı anda görelim

daha iyi anlaşılır. Uzun halini zaten biliyoruz. Kısa halini açıklayayım. Direkt

şartımızı girdik. 15>10. Yani sorumuz 15 10'dan büyük mü şeklinde. Sonra ?

soru işaretini koyup şart doğru ise çalışacak printi yazdık. Sonra iki nokta

üstüste koyup : devamında yanlış ise çalışacak printi yazdık. En sona da noktalı

virgül ; bırakıp satırı tamamladık. Önemli bir not. ilk print için noktalı virgül

koymuyoruz. Sadece satır sonuna koyuyoruz ;.


*/


  if (15 > 10) {

    print("Uzun İf Büyük"); //True

  } else {

    print("Uzun İf Küçük");

  }


  15 > 10 ? print("Kısa İf Büyük") : print("Kısa İf Küçük"); //Kısa İf Büyük


/*

Şimdide aşağıda değişkenli bir kullanıma bakalım. Burada durum adında bir değişken

tanımlayıp bu değişkene 9==10 sorugusundan çıkacak sonucu atıyoruz. Değişken

string olabiliyor. Şimdi ifade ifade gidelim. String dedik ve durum isminde bir

değişken tanımladık. Sonra = eşittir dedik. Bu eşittir kendinden sonraki tüm işlemin

sonucunu durum değişkenine ata demek. Kendinden sonraki işlem ne. 9 10'a eşitmi

sorusu. Evet 9==10 sorgusunu yazdıktan sonra ? soru işaretini koyuyoruz. Ve şimdi

eşitse çalışacak kodu yazıyoruz. Tabiki şuanda eşit değil. Bu kod çalışmayacak.

Sonra iki nokta üstüste koyup devamında eşit olmadığı zaman çalışacak kodu 

yazıyoruz. Ve bu kod çalışacak. Yani Eşit Değil String değerini durum isimli

değişkene atayacak.Burada tırnak içinde eşit veya eşit değil yazdık.

Çünkü sonuç olarak string dönecek ve durum değişkenide string tanımlı. Sonra alt

satırda durum değişkenini print ediyoruz.

Aşağıdaki örnekte şartımızı parantez içine alsak da oluyor almasak da. 

*/


  String durum = 9 == 10 ? "Eşit" : "Eşit Değil";

  print(durum); //Eşit Değil


/*

Şimdide iki değişken olarak karşılaştırma yapalım. Burada önce küçük sayıyı 

buluyoruz ama değişkenler yardımıyla. Sonra ise mutlak değere çevirme işlemi var.

Adım adım bakalım. Önce iki adet int değişken tanımlayıp değerlerini girdik.

Sonra int kucukDeger diye bir değişken girdik sonucu tutalım diye. Zaten hemen

altında sonucu print ile ekrana yazıyoruz. Burada interpolasyonuda kullandım.

Çıktılarımız daha güzel gözüksün.

*/


  int a = -11;

  int b = 22;

  int kucukDeger;

  kucukDeger = (a < b) ? a : b;

  print("Küçü sayı $kucukDeger"); //Küçü sayı -11


/*

Şimdi yukardaki örneği aşağıda tekrar yapalım. Bu sefer yazım işlemini de aynı 

satırda yapalım. Değişkenler yine yukardaki a ve b olsun. Değerlerini de olduğu

gibi bırakıyorum. Ancak bu sefer BÜYÜK sayıyı bulalım. Aşağıdaki örneği hem 

interpolasyonlu hemde interpolasyonsuz yapalım. Önce ilk satırdakine bakalım.

interpolasyonsuz olanına. 


Direkt şartımızı giriyoruz. Parantez kullanabilirsiniz aslında. Ama şuanda

karışıklık veya matematiksel bir sıkıntı olmadığı için bu örnekte parantez 

kullanmıyorum. 


Şartımız a b den büyüktür. Hemen soru işareti atıyoruz yanına ?.

Bundan sonra doğru ise çalışacak kodu yani print a yı ekrana bas diyoruz. a b'den

küçük olduğu için ilk print çalışmaz. 


Sonra iki nokta üst üste koyup : şart yanlış ise çalışacak kodu yazıyoruz. 

Burada da print b deyip b yi ekrana basıyoruz. Çünkü b daha büyük.

a=-11

b=22

*/


  a > b ? print(a) : print(b); //22


/*

Hemen üstteki örneği tekrar yazdım aşağıya. İkiside aynı sonucu veriyor ama 

yazımları biraz farklı oldu. Üstte a>b yi kontol ettiğimiz için ilk printe a yı

bastık. 


Altta ise b>a yı kontrol ettiğimiz için ilk printte b yi bastık.


İkisiyle de büyük sayıyı buluyoruz. Mantık şu şekilde. Yazdığımız koşul bizim

isteğimize göre olmalı. Büyük sayıyı bulacak isek büyüktür işareti kullanmamız

gerekiyor. Önce hangi değişkeni yazdığımızın bir önemi yok. Büyüktür işaretini

kullandığımız için ilk print büyük olarak yazdığımız değişkeni girmeliyiz. 

a>b yazarsak ilk print a yada b>a yazarsak ilk print b olmalı.

*/


  b > a ? print(b) : print(a); //22


/*

Bir alttaki satırın tek farkı açıklamalı print yaptık. Ekrana bir çıktı geliyor

ama ne bu. Ne olduğu sadece bir örnek olsa anlaşılır tamam da burda şu anda

dünyanın kodu oldu. Daha anlaşılır işler ortaya çıksın diye açıklamalı print

gördüğünüz gibi oluyor. Bunu daha önceki konularda detaylı olarak ele aldık.

Bakabilirsiniz. Şimdi üşenmeden bu satırımızı da açıklayalım. Bu ifade şekline

ternary yani üçlü operatör diyiliyor demiştik. Bu sefer de öyle açıklayalım.

birin kısım şart kısmı. Soru işaretine kadar olan kısımdır.

İkinci kısım true kısmıdır. Soru işareti ile iki nokta üstüste araıdır.

Üçünçü kısım false kısmıdır. İki nokta üstüste ile noktalı virgül arasıdır.

Birinci kısım   (a > b) ?

İkinci kısım    ? print("Büyük Sayı $a") :

Üçünçü kısım    : print("Büyük Sayı $b");

a=-11

b=22'dir.

Çok kısa şartı giriyoruz. a>b dedik. Soru işareti ve doğru olunca çalıaşcak print

iki nokta üstüste  sonra yanlış olunca çalışacak kısım. Sorgu doğru olduğu için

ilk print çalışacaktır.

*/


  (a > b) ? print("Büyük Sayı $a") : print("Büyük Sayı $b"); //Büyük Sayı 22


/*

Aşağıda bir örneğe daha bakalım. Bu örnekte girilen sayı sıfırın altında bir sayı ise 

onun mutlak değerini alalım. Yok zaten sıfırdan büyükse kendisini alalım.

a değişkeni -11 olarak girilmiş zaten ve bizde yine onu kullanalım.

int mutlakDeger'i direkt aynı satırda sorgumuzun sonucuna eşitliyoruz. Sorgumuz

a<0. Sonra ? deyip -a yapıyoruz. Yani sorgu doğruysa girilen sayı eksi bir sayıdır.

Bizde mutlak değer alacağımız için a'yı eksi ile çarpıyoruz orada. Sonra : koyuyuruz.

Burda da a'yı sonuç olarak dönüyoruz. Bu ihtimal zaten a sıfırdan büyük olduğu zaman

çalışacağı için o zaman a pozitif demektir ve direkt kendisini kullanabiliriz.

Bu satırda mutlakDeger içine 11 değerini atmış olduk. Kısaca a-11 olduğu için

ilk önerme çalışacak. Orda da ayı - ile çarpıyruz. Ve a artı 11 oluyor. Artıyı

yazmaya gerek yok zaten. Ki sistem de çıktıda yazmıyor onu.

a=-11

*/

  int mutlakDeger = (a < 0) ? -a : a;

  print("Girilen sayının Mutlak Değeri $mutlakDeger"); //11


/*

Aşağıda daha önce if else için çözdüğümüz soruları bu yöntemle tek satır if ile

çözelim. İlk kodumuz sayının tek mi yoksa çift mi olduğu bize söylüyor.

sayi adında int tipinde yani tam sayı tipinde bir değişken tanıplayım aynı

satırda değer olarak 15 değerini atadık içine. Sonra alt satırda ternary yöntemi

ile koşulumuzu yazdık. sayi mod 2 eşit sıfır ise ilk kod çalışacak değilse ikinci

kod çalışacak. Ki sayımız tek olduğu için ikinci kodumuz çalışacak.

*/


  int sayi = 15;

  (sayi % 2 == 0) ? print("$sayi çift sayıdır") : print("$sayi tek sayıdır");

  //15 tek sayıdır


/*

Aşağıda direkt not değerini aldık işlem falan yapmadan. Amacımız 44 den büyükse 

Tebrikler küçükse Daha Çok Çalış yazdırmak ekrana. Notumuz 46 verilmiş. Doğru 

olduğu için ilk kodumuz çalışacak. Ekrana Tebrikler yazacak.

Bunu kısımlarına ayıralım. Ternary olarak bakalım. Yani üçlü olarak.

Birinci kısım şartımız.   (not > 44) ?

İkinci kısım true         ? print("Tebrikler") :

Üçüncü kısım false        : print("Daha Çok Çalış");

Ture demek şartımız doğru olunca çalışacak kod, doğal olarak false de şartımız

yanlış çıkınca çalışacak kod.

*/


  int not = 46;

  (not > 44) ? print("Tebrikler") : print("Daha Çok Çalış"); //Tebrikler

}


Friday, October 7, 2022

Dart Ders Notlarım 21: if else

Dart Ders Notlarım 21: if else

Dart Ders Notlarım 21: Dart Programlama Dilinde if else


 void main() {

/*Arkadaşlar merhabalar.

Bu sefer inceleyeceğimiz konu yine şartlı ifadelerin devamı olan konumuz

if else yapısı. Bu yapının tek if şartımızdan farkı iki adet durum için 

kodlarımızı yazabiliyoruz. hatırlarsınız if şartımızda dedik ki bir şart 

giriyoruz bu doğru yada yanlış olunca çalış diyoruz programa. Yani tek bir 

durumda sistem çalışıyor ama diğer durumda programa bir aksiyon aldırmıyorduk.

bir örneği hatırlarsak eğer hız radar ceza uygulaması yapmıştık. tek şartımız

vardı ve o dopru olunca ilgili kod bloğu çalşıyordu. eğer doğru değilse birşey

yapmıyorduk. şimdi ise şart doğru ise bunu yap eğer şart doğru değilse o zaman

da bunu yap diyeceğiz programa. şartın hem doğru olduğu zamanda bir kod bloğu

tetiklenecek hemde yanlış olduğu zaman bir kod bloğunu tetiklenecek.

sytaxına bakalım.

if (şart) {

şart doğru olunca

çalıcak kod veya kodlar

} else {

şart yanlış olunca

çalıcak kod veya kodlar

}

syntax bu şekilde. Açıklayalım basitçe.

if diyoruz ilgili şartımızı parantezin içine yazıyoruz. Sonra köşeli 

parantezlerin içerisine true gelince çalışacak kodları yazıyoruz. 

Sonra else kelimesini yazıyoruz. Ve köşeli parantezlerin içine bu 

sefer false gelince çalışacak kodlarımızı yazıyoruz.


Şimdi bir örnekle başlayalım. En popüler sorulardan birini bizde çözelim.

Girilen sayının tek mi yoksa çift mi olduğunu bulalım. Bu soruyu 2 şekilde

çözeceğiz. 


İlk yolumuz mod ile çözme olsun. Mod 2 sıfıra eşitse çift sayı

değilse tek sayı çıkacaktır.


İkici yolumuz biraz daha eğlenceli farklı bir yol olsun. Orda da şunu yapacağız.

Sayımızı 2 ye bölüp bir double değişkene attık mı sonucu. Bu elimizde dursun. 

Sonra bu sonucu int e çevirip başka bir değişkene atacağız. 

Elimizde 2 adet sonuç oldu. Birisi double ondalık çıkma ihtimali var. 

Diğeri ise her türlü int çevirdiğimiz sonucumuz. 

Bundan sonra if else yapısını kurmamız gerekiyor. İki sonuç değişkenini

birbirine eşit mi diye kontrol etmemiz gerekiyor. Eğer eşitse sayımız çift yok

eşit değilse sayımız tek sayıdır. Arkadaşlar merak etmeyin aşağıda 

örneğin açıklamsında daha detaylı olarak anlatacağım. Süper bir şekilde 

anlayacağınıza eminim.

*/

  int sayi = 16;

  if (sayi % 2 == 0) {

    print("$sayi çift bir sayıdır."); //True

  } else {

    print("$sayi tek bir sayıdır.");

  }

/*

Yukardaki kodları adım adım inceleyelim. önce int veri tipinde

yani tamsayı tutacak sayi isminde bir değişken tanımladık ve içine 16 değerini

atadık. Sonra if deyip parantez içinde şartımızı koşulumuzu girdik.

koşulda % işaretini kullandık. Operatörlerde görmüştük. bu işaret mod alma 

işlemi yapıyordu. Oda şöyle solundaki değeri sağındaki değere bölüp kalanını

dönüyordu. Burda da aynı şekilde sayi % 2 den sonra eşit eişt == 2 diyoruz. 

Yani sayi değişkeninin ikiye bölümünden kalan 0'a sıfıra eşit diyoruz.

Bu eşitlik sağlanınca ilk köşeli parantezin içindeki kodları çalıştır diyoruz.

Orada da  print("$sayi çift bir sayıdır."); bu değeri ekrana yazdırıyoruz.

Çünkü sayımız çift bir sayı. Şart doğrulandı ve if bloğu kodları çalıştı.

Sonra köşeli parantezden sonra else diyoruz ve yine köşeli parantez açıp

print("$sayi tek bir sayıdır."); ifadesini giriyoruz. Burası çalışmayacak.

Bu else kısmı sayi % 2 == 0 ifadesi false dönünce doğru olmayınca çalışacaktı.

Bu örneğimize göre sayı çift olduğu için çalışmayacak. 


Aslında else çalışsın şeklinde sayı girebilirdik çünkü konumuz else :) Ama olsun

aşağıdaki örnekte de else kısmı çalışacak. Else var diye her zaman

o çalışmaz değil mi? Sonuçta şart false dönerse çalışıyor. Bu seferlik true döndü

diyelim :)


Bir sayının tek mi çift mi olduğunu anlamanın en basit ve kolay yolu % operatörüyle

mod 2 sinin sıfıra eşit olup olmadığını bulmaktır. Çünkü mod 2 sıfıra eşit

çıkarsa bu sayı 2 ye tam bölünmüştür ve dolayısıyla çift sayıdır. ilk if bloğu 

çalışır. Mod2 sıfırdan farklı çıkarsa bu sefer de else bloğu çalışır ve ekrana 

sayı tek sayıdır yazdırmış oluruz.


print("$sayi tek bir sayıdır."); Bu kodu da açıklayalım. Tekrar 

bilgiye güç katar. interpolation türkçesi interpolasyon anlamı ise ekleme yapma

gibi bir terime karşılık geliyor. Print içine çift veya tek tırnakla bir

ifade yazınca bu olduğu gibi ekrana basılır. Dikkat ederseniz burada sayi isimli

değişkeni başına dolar işarti koyduk mu ekrana sayi kelimesi basılmıyor.

Ekrana sayi isimli değişkene atanmış son değer basılıyor. Normalde değişkeni

ekrana basarken tırnak kullanmayız. Değişkeni bu şekilde güzel bir açıklamayla

birlikte ekrana bastırmak istiyorsak kullanım böyle olmalı.

Bu da print için bir istisnadır.

*/


  sayi = 15;

  double dsonuc = sayi / 2;

  int isonuc = dsonuc.toInt();

  if (dsonuc == isonuc) {

    print("$sayi çift bir sayıdır.");

  } else {

    print("$sayi tek bir sayıdır."); //True

  }

/*

Şimdi de modsuz olarak nasıl çözülür onu inceleyelim. Bu işlem sadece beyin

jimnastiği gibi birşey. Tercih edilen yol değildir. Baştan bunu söylemiş

olayım. önce sayi değişkenine 15 değerini atadık. Tanımlama ve ilk değer işlemi

yukardaki örnekte yapılmıştı zaten. Burda sadece değerini yeniledik diyelim.

sonra double sonuç anlamına gelen dsonuc diye bir değişken tanımlaması yaparken

aynı satırda sayi değişkenimizi 2 ye bölüp onun içine atadık.

Sonra int bir değeri çağrıştırsın diye isonuc isminde bir değişken tanımlayıp

yine aynı satırda dsonuc değişkeninin değerini integere to.Int ile çevirip onun 

içine atadık. Sayıyı ikiye bölünce ondalıklı gelirse dsonuc bunu tutacak. Lakin 

int sonuc ondalıklı gelen bu sayının tam kısmını tutacak. Arada tek sayı girilmesi

durumunda böyle bir ilişki var. Çift sayı girdiğimizi düşünürsek 2 ye bölününce

dsonuc double tuttuğu gibi int değerde tutuyor olduğu için dsonuc tam sayı olacak.

isonuc da zaten to.Int le tama çevirip alıyor. O da aynı sayı olacak. Bu zaten if

şartımız bizim. İkisi aynı geldi mi sayımız çift sayı olmuş olacak. Farklı geldi mi

tek sayı girilmişti diyeceğiz.

Şöyle kısa bir izah daha yapıp kodları açıklamaya devam edeceğim.


örneğimizde ki gibi 15 girilmiş diyelim. 15/2 = 7.5 çıkar.

dsonuc=7.5

7.5 toint yaparsak 7 olur mu? evet olur. O zaman 

isonuc=7 dir.

dsonuc==isonuc olmadığı için else bloğu çalışır.

ikisi birbirine eşit oldu mu. Olmadı. Demek ki sayımız tek sayıdır.


Birde çift sayı girelim. Sayımı 16 olsun. 16/2=8 çıkar.

dsonuc=8

8 toint yapsak yine 8 olacak. O zaman

isonuc=8 dir.

dsonuc==isonuc olduğu için if bloğu çalışır.

İkisi birbirine eşit oldu mu? Evet. Demek ki bu sefer sayımız çift sayıdır.


Üç üstten devam ediyorum :) if satırına gelmiştik. if satırında iki değişkenimiz

birbirine eşit mi diye soruyoruz. Sayımız 15 girilmişti. Dolayısıyla iki değişken

birbirine eşit çıkmayacak. Program if bloğunun içine girmeyecek. 

Çünkü şart sağlanmadı. O zaman else bloğundaki kodu ekrana yazdıracak.


Gerçek hayatta mod yöntemiyle çözülmesi daha evladır. Mod ile çözülen 6 satır

bu ise 8 satırdır. Kısa olan her zaman tercih edilir. 

*/


/*

Şimdi kısa bir örnek daha yapalım if-else ile ilgili.

Bir Öğrencinin iki notunun ortalaması 50 den büyük eşitse ekrana 

geçti, değilse ekrana kaldı yazan programı kodlayalım. 

*/

  double not1 = 45, not2 = 43, sonuc = (not1 + not2) / 2;

  if (sonuc > 50) {

    print("Geçtiniz");

  } else {

    print("Kaldınız"); //True

  }

/*

Şimdi kodları yorumlayalım. İlk önce değişkenlerden başladık işe. Değişkenlerin

hepsini double tanımladık. Çünkü sonuç değişkeninde bölme işlemi yapacağımız için

sonucun ondalıklı çıkma ihtimali oluyor. O sebeple onun double olması gerekir.

Bende hazır o olmuşken hepsi öyle olsun dedim. Ve değişkenleri tek bir satırda

halletmek için. Gördüğünüz gibi değişkenleri bir satırda tanımlayıp değerlerini

de atamış olduk. Sonra if satırına geçip parantez içindeki şart çalıştı. sonuç 44

44 olduğu için program baktı ki bu if şartı geçersiz. Yani false dönüyor. if

bloğüna hiç girmeden else bloğundaki kodu çalıştırdı. Ekrana Kaldınız yazdı.

Farklı bir açıklaması da aşağıdaki gibi olsun.

45+43=88

88/2=44

44>50 false döner

else bloğuna program gider.


Bu if else özel olarak tek satırla yazılabiliyor. 

Bir sonraki yazımızda da ona bakalım.

*/

}

Wednesday, September 28, 2022

Dart Ders Notlarım 20: if

Dart Ders Notlarım 20: if

 

Dart Ders Notlarım 20: Dart Programlama Dilinde IF


void main() {

/*Program yazarken kodlarımızı şekillendiren bazı durumlar olacaktır. Her zaman

kodları yazıp üstten aşağıya doğru hurra hepsi çalışsın diye bir durum söz konusu

olmaz. Bazen bazı şartlarla karşılaşırız. Yine üstten aşağıya doğru kodlarımız 

çalışacaktır lakin bu şart dediğimiz durum gerçekleşirse gerekli blok kodumuz

çalışacaktır eğer şart geçerli değilse o bloğun çalışmasına gerek yoktur. Program

o bloğu atlayıp yoluna devam edecektir.


Biraz daha basit şekilde ifade etmek gerekirse kodlarımızı yazarken bazı seçeneklerle

karşlaşacağımız  durumlar olacaktır. Bu durumlarda şöyle olursa program şöyle yapsın,

böyle olursa böyle yapsın diye en az bir en çok da durum ne kadar gerektiriyorsa o kadar

şartı değerlendirmeye alarak kodlarımızın tamamının değilde sadece gereken kıssımlarının

çalışmasını sağlıyoruz.


Burada karşımıza şart blokları diyebileceğimiz kontrol yapıları çıkıyor. Bu bölümde

if ile ilgili durumları inceleyeceğiz.


Neden en az bir durum dedik bununla zaten başlıyacağız anlatmaya. Bir durum vardır

ve sadece onun gerçekleştiği durumda bir işlem yapılması gerekiyordur diğer durumda

herhangi bir işlem yapmaya gerek yoktur. 


Bir iki örnekle aklımıza yaklaştıralım bu seçeneği.


Örneğin trafikte otomatik ceza sistemine geçildi diyelim. Ama ciddi anlamda. Aynı

yerden 50 kere geçince bişi yokta 51 de ceza yazıldı gibi değil :). Disiplinli 

bir şekilde her geçen arabayı yapay zeka destekli sistemle takip edip o bölgedeki

hız sınırı neyse onun üzerinde giden arabalara plakalarının tespit edilmesiyle 

plakanın sahibi kişinin e posta adesine Tebrikler Ceza Yediniz. Buda Videonuz. Bir

daha ki sefere daha dikkatli olmalısın. Hadi Aslanım bu cezayı şimdi hemen ödersen 

%70 indirimi kaçırma :). Hatta işi abartıp sadece mail değil plakanın sahibi kişiye 

mailin yanında sms, sesli telefon mesajı, acele posta ile mektup, e devlet sisteminden

direkt mesaj, acele telgraf, cep numarasına bağlı olduğu operatörle özel ekran mesajı,

hatta akıllı bilbord vb reklamlar vardı azınlık raporu filminde onun gibi kişiye 

özel reklam panolarında bir adet cezanız var gibi reklamlar, hatta ve hatta çerez

 politikalarıyla her türlü web sitesi mobil uygulama - oyun vb. 

 reklamların olduğu her yerde reklam olarak, ve aynı tel numarasıyla kayıtlı

  olduğu sosyal medyalarda watsapda mesaj ve durum mesajı, 

twitterda direkm mesaj ve mention :) vb. :):) daha her türlü yoldan kutlama 

yapar gibi reklam şeklinde mesaj bombardımanı yapabiliriz. 

Neden mi bu kadar önüne çıkarıyoruz kişinin.İndirim Abi. %70 indirim ne demek :)

 Kim kime yapıyor faydalansın vitamin.

Aklıma gelen bu kadar şimdilik. Daha fazla ulaşacağımız durumlar olursa onalrıda

ekleriz ilerde :) Varsa aklınıza gelen yorum bırakabilirsiniz 

ve değerlendirmeye alırız:) 


Belirteyim de kimse haddini aşmasın.Bu şekilde hikayelememin 

sebebi akılda daha iyi kalsın diye. Sonuçta ben öncelikle kendime anlatıyorum.

Ve isteyen herkese. İstemeyen çıkabilir. Yok yazmıcam :) Bir eleştiri: Bunu

açıklamak zorunda kalmak bile bazen acı veriyor...napıcan...hayata devam...


Şimdi örnekle ilgili durumunu ciddi olarak ele alalım. Hız limiti 90 olsun.

kodumuzla biz doksan bir den yukarıda giden her araca ceza yazıcaz. beki 90 ve

altında gidenler için birşey yapmamıza gerek var mı? Hayır. Tutup ta teşekkür 

etmeye gerek yok dimi :)... Bu şekilde olacaksa kodumuzu sadece bir if şartıyla

yazabiliriz. 


Bir de if syntaxına bakalım. Yani nasıl kullanıcaz.if kelimesini yazıyoruz.

bir normal parantez içine şatımız koşulumuz neyse onu yazıyor. sonra köşeli

parantez içine şartımız doğru olduğunda sağlandığında true döndüğünde 

bir satır veya daha çok satır çalışması gereken kodlarımızı yazıyoruz.


if (koşul) {

kod

veya

kodlar  

}


  şimdi kodlayalım artık.

 */


  /*

  kodlar

  kodlar

  kodlar */

  double hiz = 90.5;

  if (hiz > 90) {

    print("""

    xx xx xx Plakalı Araç Hız Sınırını Aşmıştır.

    Hızı $hiz km'dir.

    Tüm Ceza Mesajları Yollansın:)""");

    print("1.if bloğunun İÇİ çalıştı");

  }

  print("1.if bloğunun DIŞI çalıştı");

  /*kodlar

  kodlar

  kodlar */


  /*şimdi kodlarımızı yorumlayalım. kodumuzun üstüne ve altına kodlar kodlar diye

  yorum satırları ekledim. Daha iyi anlayalım diye. şidmi program üsten aşağı geliyor.

  tabi üsten aşağıya gelecek Ordu'nun deresi değil bu yukarı aksın yani alttan yukarı doğru

  gitsin:) Şimdi program kodları işleye işleye geldi. double ile biz elle girdik hız 

  bilgisini ama gerçekte cihazdan otomatik gelecek o bilgi. double hız bilgisi okundu.

  sonra alt satıra geldi baktı burda if var. ifin parantez içindeki şartına baktı. 

  true döndüyse bizde true dönecek bu sefer köşeli parantez içinde girdi. ne kadar

  kod varsa çalıştırdı.ekrana üç adet print çıktısı verecek.kod bloğunun içinde 3

  satırlı bir print var o çalışacak. sonra kod bloğunun içinde 1.if bloğunun İÇİ

  çalıştı diye bir print var oda çalıkşacak. çünkü aynı blok içindeler. dikkat 

  ederseniz kod bloğunun dışında da 1.if bloğunun DIŞI çalıştı diye bir print var oda çalıştı.

  ilk iki print şart doğru olduğu için program if bloğunun içine girdiğinden

  bu ikiside  if bloğunun içinde bulunduklarından ekrana çıktı verdiler. 3.print ise 

  dediğimiz gibi program bloktan çıkınca satır satır devam edeceğinden hemen ordaki 

  print te o sebeple ekrana çıktısını verdi.Üçüncü printin aşağıda örneklicez zamanı gelince

  şart bloğuyla bir alakası yok. O her türlü çalışır. çünkü şart bloğunun dışında 

  programın ana akışında kendisine sıra gelince çalışcak olan koddur o. şart doğru olsa da

  yanlış olsa da o print veya onun gibi kodlar kendi yoluna bakarlar her zaman.Ve program

  satır satır ne kadar kod varsa aşağıya doğru yoluna devam etti gitti.

  

  şimdi bir tane de 90 dan küçük bir değer girelim ve bakalım nasıl olacak.

   */


  hiz = 70;

  if (hiz > 90) {

    print("""

    xx xx xx Plakalı Araç Hız Sınırını Aşmıştır.

    Hızı $hiz km'dir.

    Tüm Ceza Mesajları Yollansın:)""");

    print("2.if bloğunun İÇİ çalıştı");

  }

  print("2.if bloğunun DIŞI çalıştı");


/*şimdi bı kod bloğuna bakalım. üsten aşağıya kodlar okunuyor. hız bu sefer

70 olarak girilmiş. yani hız değşkeninin değerini 70 olarak tanımladık. 

program bir alt satıra indi. orda if ile karşılaştı. hemen şartını kontrol

ediyor. bakıyor hız 90 dan küçük. yani şart false doğru değil. bu sefer if

bloğu diyeceğimiz köşeli parantezlerin içine girmeden  devam edecek.

if bloğunun içindeki iki adet if ekrana çıktı vermeyecek doğal olarak. 

lakin burda if bloğundan çıkınca hemen orda bir print daha var. 

2.if bloğunun DIŞI çalıştı diye. bu çıktı vericek. çünkü ifin dışında kendileri.

devam eden kodlar varsa satır satır onları işlemeye devam edecek. */


/*bir örnek daha yapalım. Kısaca tekrar açıklayalım. tek bir şartımız var ve 

bu şart doğru olduğu zaman bir kod bloğunu çalıştıracaksak ve yanlış olduğu

zaman hiç bir kod bloğu çalışmayacak ise böyle durumlarda if şartını kullanıyoruz.

Ya 2 şart veya daha fazla şart olduğu zaman ne yapacağız diyorsanız merak etmeyin

o durumları da ilerleyen derslerde inceleyeceğiz.


Bu seferde diyelim ki sürücü belgesi için başvuruların yapıldığı sistemi kodluyoruz.

Bu işin yazılımında bizim ilk şartımız nedir. Ön başvuru işlemi sırasında ilgili 

kişinin yaşının 18 den büyük olması gerekir değil mi? ilk şartımız budur. Kişi kimlik

bilgilerini girer ön başvuru ekranında tam o anda Sen yazılımla kişinin kimlik

bilgisini nvi'den (Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü)

kontrol edersin (biz şimdi direkt yaşını girerek bu işlemi yapıcaz :) )

kişi o gün 18 den büyükse sorun yok. Yok eğer 18 den küçükse 

henüz 18 olmadığınız için başvuru yapamazsınız dersin ve diğer adımlara geçmesini

engellersin. Dikkat ederseniz sadece yaş 18 den küçükse hata verecek şart doğruysa

hata mesajı verecek şart yanlış ise bir şey yapmadan program devam edecek.

*/


  int yas = 17;

  print("ifin dış üstündeki print");

  if (yas < 18) {

    print("Yetişkin olmadığınız için başvuru yapamazsınız");

    print("ifin içindeki print");

  }

  print("ifin dış altındaki print");

/*Kısaca kodu yorumlayalım. true durumunu yorumluyoruz. şu anda yazıldığı gibi.

int olarak yaşı 17 girdik. print("ifin dış üstündeki print"); bu ifade ekrana 

çıktısını verecektir. çünkü zaten ifin dışında.

sonra if şartına sıra gelecek. şart doğru. çünkü 17 sayısı 18 den küçüktür.

o zaman ifin içindeki iki print de çıktısını ekrana yazdıracak.

yani bunlar  

print("Yetişkin olmadığınız için başvuru yapamazsınız");

print("ifin içindeki print");

sonra if bloğundan çıkıyoruz. ve bir print daha var. Oda ekrana çıktısını verecek.

zaten oda iften bağımsız her halükarda çalışacaktır. oda budur.

print("ifin dış altındaki print"); */


/*birtane de bool ile ilgili bir if şartı yazalım.

diyelim app uygulamamız var. kişiler üye olmadan da uygulamamızı kullanabiliyorlar.

bizim görevimiz uygulamayı kullanan kişi uygulamamıza üye olmuş ise ve uygulamamızı

playstroe da puanlaMAMIŞ ise ona bir ekran açıp uygulamamızı puanlamasını tavsiye 

etmek olsun. iki şart ekledim çünkü operatörleri boşuna mı öğrendik :)

*/


/*önce değişkenleri tanımlıyoruz. şimdi değişkenlerin bana hangi sonucu uygun ise

o sonuca göre sonuçlarını kontrol ettiriyorum. uyeMi ile kişinin üye olması 

gerekli olduğu için true olması şartını kontrol edicem. üye değilse üye olacak

kadar uygulamayı benimsemediyse neme lazım şimdi eksi verir o :) o zaman ona 

hatırlatmayayım...

Sonra puanladiMi ile daha önce puan verdiyse eğer ona sormamam lazım. demez mi

adam ikide bir ne diye bana hatırlatıyorsun. zaten 5 yıldız verdim ya ben. şimdi 

onu 4 yapıp bu saçmalığı yazayım orda da görsün bu :)


ve bu iki şartı aynı anda kontrol ettirmem lazım. bunu mantıksal olarak kontrol 

etmemiz gerekiyor. ikiside benim istediğim sonuç gelirse kişiye sormalıyız. 

öncelikle bunu VE yada VEYA operatörlerinden biriyle kontrol ettirmem gerekiyor.

ikiside aynı anda ise evet siz söyleyin tabiki de VE kapısını kullanmamız doğru olacaktır.

kişi üye olmuş olacak ve daha önce puan vermemiş olacağı için ve ile uyeMi true

VE puanladiMi false gelince hemen o kişiyi kapıyoruz.


şimdi uyeMi true gelecek ve sorguda zaten true. Kafamız karışmasın bakın puanladiMi

nin değeri false gelmesi gerekiyor. o değer false gelecek ama bizim şartımıza göre

değer false gelsede sonuç olarak true dönmüş olacak. Çünkü biz onu false gelince 

işleyeceğimiz bir değer olarak görüyoruz. kafalar karışmasın.


bitti mi. tabiki hayır.

biz daha şimdiye kadar kişiye soruyoruz. birde onun cevap hakkı var. ya puanlama 

isticek yada sonra yaparım diye istemicek. burda da kişi true dönerse evet derse

ifin içine gircek ve bize puanlama yapıldı diye bildirim gönderecek. yok eğer 

hayır derse bir şey yapmayacağız. ifin içine girmeden devam edeceğimiz için 

print("Kullanıcı Uygulamayı Kullanmaya Devam Ediyor."); diye bu printten uygulama

kullanımı devam edecek. Çok önemli bir dikkat. Kullanıcı puan verdi de mi 

biz bu printi gördük yoksa vermedi demi biz bu printi gördük sorusunun cevabını

bu printten öğrenemeyiz. Bu print iflerin dışındaki print. o yüzden cevap değeri

true veya false olsada bu print her türlü çalışır.Hatta cevap değişkeni ikinci 

ifin içinde. program ilk ifin içine girmese bile bu print çalışacaktır.

biz kişinin puan verip vermediğini print("Puanlama yapıldı."); printinden

anlayabiliriz. Çünkü bu print sadece cevap değeri true olunca çalışacaktır.

puan vermese de verse de kullancı her zaman programı kullanmaya devam edecektir. 


iki tane bir birinden bağımsız if şartını burada kontrol etmiş oluyoruz. 

Tabi bu iş burda kalmaz. en az 7 en fazla 15 gün içinde 

sana tekrar soracaz sayın kullanıcı. illaki bir bir yıldız da olsa alıcaz senden.

etkileşim iyidir. tabi 5 yıldız verseydi daha iyi etkileşim daha da iyidir derdik:)

*/


  bool uyeMi = true;

  bool puanladiMi = false;

  bool cevap = true;


  if (uyeMi == true && puanladiMi == false) {

    print("Uygulayı puanlamak ister misin ?");

    if (cevap == true) {

      print("Puanlama yapıldı.");

    }

  }

  print("Kullanıcı Uygulamayı Kullanmaya Devam Ediyor.");


/*kısaca kodu tekrar yorumlayalım.

uyeMi true, puanladiMi=false ve cevap=true olacak şekilde üç adet bool tipli

değişken tanımlıyoruz. giriş değerlerini bu şekilde verdik çünkü bu sonuçlar 

sağlanırsa if bloğumuzda işlemler yapmamız gerekiyor.

sonra ilk if şartımızı yazdık. burada VE operatörünü kullandık çünkü iki şartın 

sonucunun aynı anda istediğim değerlerde gelmesi gerekiyor. biri true diğeri false.

ve bu aynı anda olmalı. bir şart yeterli olsaydı o zaman VEYA ile işlem

yapabilirdik yalnız bize ikisi aynı anda lazım.

iki şart sağlanmaz ise en dış printe gidip program devam eder. iki şart sağlanınca

allttaki printle kullanıcıya bir soru iletiyoruz. puanlama yapıcanmı ve aynı yerde

yeni bir if ile cevap değişkenine cevap vermesini istiyoruz. Cevabı kullanıcı hayır

diye verirse hemen bu cevap ifinin içine program girmeden ana ifden de dışarı çıkar

ve son printe gider. tabi biz o cevabı evet olarak girdiğimiz için ekrana  

puanlama yapıldı yazıyoruz ve iflerden çıkıp son printi ekrana yazdırıp 

uygulamayı devam ettiriyoruz.  */

/*

kodlarımızı her hangi bir derleyiciye yapıştırırsanız hatasız çalışacaktır. 

istediğiniz gibi şartları değiştire değiştire denemeler yapabilirsiniz. 

isterseniz kodları blok blok kopyalayıp daha net çıktıları okuyabilirsiniz. 

 */

}