0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #2

Gauloran

Global Moderatör
7 Tem 2013
8,128
619
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/

Screenshot-2.png


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:


Screenshot-1.png


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.​
 

Muslukcu

Katılımcı Üye
17 Kas 2021
699
262
Tesisat dükkanı
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/

Screenshot-2.png


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:


Screenshot-1.png


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.​
Elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.