Wednesday, September 28, 2022

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. 

 */

}




Share This

0 comments:

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