Merhaba 2.konumuzla devam ediyoruz uzun soluklu 0'dan Mobil Uygulama Geliştirme serimize. Serinin başlangıcı olan bu konuyu inceleyip yorum yapmadıysanız öncelikle ona gidip incelemenizi öneririm. Oradan geliyorsanız devam edebiliriz en son Dart diliyle ilgili temelleri atmaya çalışıyorduk bu konumuzda da Dart diline devam edeceğiz aslına bakarsanız Dart diline bir süre daha devam edeceğiz çünkü Flutter'a direkt geçersek Dart dilini bilmeden geçmek pek mantıklı olmaz evet programlamaya aşina olanlar çok hızlı bir şekilde kavrayabilse de 0'dan başlayan birisinin de anlayabileceği şekilde yazmaya çalışıyorum. Tabii konular ilerledikçe artık bir şeyleri size hatırlatmamaya başlayacağım kodların sağına gerekmedikçe yorum satırı düşmemeye başlayacağım oralara da geleceğiz umarım. Şimdilik Dart dilinden devam edelim.
Serinin ilk konusu: https://www.turkhackteam.org/konula...ulama-gelistirme-egitimi-veriyorum-1.2037619/
Bu konuda Dart programlama dilinde
Serinin ilk konusu: https://www.turkhackteam.org/konula...ulama-gelistirme-egitimi-veriyorum-1.2037619/
Bu konuda Dart programlama dilinde
- if-else yapısından,
- switch-case yapısından
- operatörlerden 'bahsedetmeyi umuyorum.
şimdi bütün dillerde gördüğümüz if else yani conditional dediğimiz şart koşma mevzularını inceleyelim
bu arada bir önceki derste görmediğimiz bir değişken türü var o da boolean önce ona bakalım
Kod:
void main (){
int money = 15;
String userName = "ali ";
print('$money' + userName);
bool isCustomerRich = false; //false veya true değer alıyor bool veri tipi
//şimdi if else yani koşul yapısına bakalım
//burada yapacağımız kodlamanın bir şarta bağlı olduğunu söylebiliriz
if (money > 10){ //eğer money değeri 10 dan büyükse
print("money değeri $money, 10'dan büyük");
}else{
//eğer değilse...
print("money değeri $money, 10'dan büyük değil");
}
basit bir şekilde if-else kullanımını gördük.
moneyden 10 çıkartalım
money -=10;
daha fazla nasıl kontrol edebiliriz? yapacağımız şey basit if-else yapısını anladık bir de şöyle bir koşul yapalım
senaryo: müşteri bankaya gelir ve 10 TL'si vardır ve bir sorgu yapar sorgu sonucunda 20tlsi alınır ve eğer kalan parası sıfırdan küçükse bankadan kovulur
eğer adamın parası bankingCost'ta yetmiyorsa yani 20 tl ye yetmiyorsa bankaya almayın
Kod:
int musteriParasi = 4;
int bankaninKestigiMiktar = 5;
if(musteriParasi>bankaninKestigiMiktar){
//eğer müşterinin parası bankanın kestiği paradan büyükse
print("müşteriden 5 tl kesim yapilıyor...");
musteriParasi= musteriParasi-bankaninKestigiMiktar; //müşteriden para kesildi
print("müşterinin parası $musteriParasi");
}else if(musteriParasi==0){ //yok eğer müşterinin parası 0 a eşitse
print("müşterinin yeterli parası yok");
print("müşterinin parası $musteriParasi");
}else{ //yukarıdaki şartların hiçbiri değilse olacaklar...
print("deneme deneme");
print("müşterinin parası $musteriParasi");
}
bu arada kodlarda mantık hatası ararsanız bulabilirsiniz belki biraz geç saatler olduğu için tam emin değilim ama önemli olan mantığını anlamanız yani yarın öbür gün mobil uygulama yaparken pratik olarak if else çok fazla kullanacağız o açıdan.
başka bir senaryoyla çalışmaya devam edelim
bir mağazaya isim vereceğiz ve örnek isimler toplanacak. örnek isimler "ahmet, mehmet, veli ve kx, x" olsun.
mağaza "ben sadece karakter uzunluğu 2 veya daha altı olanları görmek istiyorum bu isimlerden" diye belirtiyor
Kod:
final String ahmetCompany = "Ahmet";
final String mehmetCompany = "Mehmet";
final String veliCompany = "Veli";
final String kxCompany = "kx";
final String xCompany = "x";
String results="";
değişkenlerimizi tanımladık. bu isimlerin değişmeyeceğini biliyoruz bu yüzden bunları final yapalım.
şimdilik neden final niye const değil diyorsanız dert etmeyin şu anda farkını anlamayız flutter tarafında anlayacağız farkını şimdilik böyle kalsın
biraz işkence olacak ama her birini kontrol edelim tek tek tabii bunu yapmanın çok daha efektif yolları var ileride değineceğim şimdilik anlamak için sizin aklınıza gelen ilk yöntem muhtemelen şöyle olacak:
Kod:
if(ahmetCompany.length>2){
/*
şimdi burada yaptığımız şey ahmetCompany bildiğimiz gibi bir String değer taşıyor. Şimdilik bilmemiz gereken şey . diyerek
artık elimizdeki her ne ise onun bazı özelliklerine erişebiliyoruz. Örneğin String tanımladığımız için ahmetCompany.length diyerek length özelliğini kullanabiliyoruz
length özelliği ise dartta bize kaç karakterden oluştuğunu veriyor Ahmet yazmıştık o kadar karakter uzunluğunda yani. devam edelim
*/
results=results+ahmetCompany; //results a ahmetCompany'yi ekliyoruz yani ahmet ismini results'a ekliyoruz en başta results boş olarak tanımlamıştık hemen yukarıda
}
if(mehmetCompany.length>2){ //aynı mantık
results=results+mehmetCompany;
}
if(veliCompany.length>2){ //aynı mantık
results=results+veliCompany;
}
if(kxCompany.length>2){ //aynı mantık
results=results+kxCompany;
}
if(xCompany.length>2){ //aynı mantık
results += xCompany; //daha rahat bir kullanım bunu önceki dersten hatırlayabiliriz
}
print(results); //ekrana yazdırıyoruz
if(results.isEmpty){ //if () parantez içerisindeki şart true ise if koşulunun çalıştığını biliyoruz. burada da results ın isEmpty özelliği bize results boş ise true döndürür
print("isEmpty metodu bize results boş ise true döndürür yani if koşulu sağlanmış olur ve buraya girer");
}
If-else dışında başka bir şey yok mu tabii var şimdi gelelim switch-case yapısına.
Kod:
void main(){
final int classDegree = 2;
bool isSuccess = false;
//müşteri bize sınıf notu 2 ise bravo, 1 ise olur, 0 ise yeterli, diğer durumlarda da başarısız diyecek şeklinde bir kod yazalım
//başka koşul şart yapamıyor muyuz if-else falan dışında? yapabiliyoruz. switch-case i tanıtayım
switch(classDegree){
//classDegree değişkenini kontrol edelim
case 2: //eğer 2 ise
print("bravo"); //ekrana bunu bas
isSuccess=true;
break; //çık
case 1: //eğer 1 ise
print("olur"); //ekrana bunu bas
isSuccess=true;
break; //çık
case 0:
print("yeterli");
isSuccess=true;
break;
default: //hiçbiri değilse
isSuccess=false;
print("başarısız"); //ekrana bunu bas
}
print("başarı sonucu: $isSuccess");
switch-case daha çok sabit değerleri kontrol eder yani son değerlere göre kontrol etmeyi spesifik işlemlerde kullanıyoruz if else ile ilgili bir tık daha performanslı çalışır aslında
üstteki kodumuzda case 2: falan yazmak yerine successValueHigh =2 ; diye bir int değişken tanımlayıp case successValueHigh: deseydik daha mantıklı olurdu tabii sadece bir örnek.
switch case'in farklı bir kullanımı daha var
iki tane case i alt alta verirsek şu şekilde
Kod:
String name="";
switch(name){
case "deneme1":
case "deneme2": //böyle yaparak bu 2 durumun herhangi biride olsa çalışır demiş oluyoruz. buraya 3 tane de alt alta yazabilirdik farklı bir case yani mantığı bu mevzumuz o değil
print("hop");
break;
default:
print("dee");
}
Şimdi de biraz operatörlere göz atalım. Sanki ilk derste bahsetmiştik bir tık.
Kod:
void main(){
int money =5;
money = money+1;
money+=1;
money++;
//bu operatörleri yerine göre kullanabilirsiniz ++, +=, -= bunlardan bahsetmiştik zaten
String name = "deneme";
String name2= "deneme2";
print(name + name2);
if (name == "deneme"){ //örneğin burada da == gidip dokümantasyona baktığınızda
//String operator +(String other); gibi şeyler görürsünüz iki objeyi karşılaştırma operatörü olarak geçiyor anlamadıysanız takmayın devam edin bir süre sonra anlıyorsunuz
+ operatörü misal aslında bizim bildiğimiz iki sayıyı toplar bu yahu dediğimiz operatör nasıl oluyor da 2 ismi yan yana yazıyor
şimdi biraz mantığına gidecek olursak operatör burada aslında ilerde de bahsedeceğimiz override edilmiş ince bir mevzu dönüyor arkada bu sayede
yani override edilmiş derken normalde toplama yapan bir fonksiyonu override ederek farklı sonuçlar elde ettirtebilirsiniz böyle düşünün şimdilik
Kod:
int denemeDegisken = 10;
double deneme3= 3.5;
if (name.length> 'deneme'.length){}
if (name.length>= 'deneme'.length){}
if (name.length<= 'deneme'.length){}
if (name.length< 'deneme'.length){}
//burada da çeşitli kontroller yaptık if yapısını zaten biliyorsunuz anlatmıştım. <= >= < ve > operatörlerimiz bunlar da eşitsizlik konusu gibi matematikteki.
int sayi1= 5;
int sayi2= 10;
int yeniSayi=0;
yeniSayi = sayi1 + (sayi2+1);
//gibi paranteze alma yaparak işlem önceliğini yapabilirsiniz
double sayi6= 15.2;
double yeniDouble = 0.0;
yeniDouble = sayi6 % 2; //%2 yani 2 ye bölüp kalanı verir mod alma gibi düşünebilirsiniz
print(yeniSayi.isEven);
print(yeniSayi.isOdd);
//bunlar da çift mi tek mi diye sorgulama yapabiliyoruz ona göre bool değer döndürüyorlar bize
//visual studio code üzerinden debug özelliğini kullanalım
print(yeniSayi); //örneğin burada sol kısma tıklıyoruz
//debugging önemli
}
ekstra:
Visual Studio Code kullananlar için debug yaparken yani yazdığımız kodu çalıştırdığımızda bazı değerleri kontrol etmek istedik diyelim bu şekilde yapabilirsiniz basitçe:
Serinin bir sonraki konusunda Dart diline devam edeceğim. Listelerden ve Fonksiyonlardan bahsedeceğim. Ondan sonraki konuda da muhtemelen sınıflardan(class) ve Null Safety'den, soyut sınıflardan ve ileri seviye class yapılarından bahsederim diye düşünüyorum. Gayet iyi gidiyoruz buraya kadar geldiyseniz henüz daha yolun başındayız devam. Okuduğunuz için teşekkürler, yorumlarınızı bekliyorum.