- 7 Tem 2013
- 8,198
- 670
Merhaba, 0'dan İleri seviyeye mobil uygulama geliştirme serisi 3.konumuzla devam ediyoruz. Seriden haberiniz yoksa öncelikle serinin ilk 2 konusunu gidip incelemenizi ve yorum yapmanızı tavsiye ederim. İlk konuda zaten bahsetmiştim fakat bilmeyenler için Dart programlama dili ve Flutter framework ile mobil uygulama geliştirme öğreniyoruz. İlk konuyu özellikle incelemenizi istiyorum. Devam edecek olursak 3.konumuzda Dart programlama diline devam ediyoruz. List ve Fonksiyonlardan bahsedeceğiz bu konuda. Konuda Visual Studio Code kullandığım için birkaç fotoğraf paylaşacağım Visual Studio Code kullananlar için. Dart dilinin önemini mobil uygulama geliştirmek için önceden anlatmıştım zaten. Hadi başlayalım
Serinin önceki konuları:
0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #1
0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #2
Dart dilinde Listler ve Fonksiyonlar
Biz bugüne kadar hep tek tek çalıştık dart üzerinde doğru düzgün listeleri kullanmadık ve görmedik. Şimdi listelerden bahsedelim
normalde öğrendiğimiz yere kadar değişken tanımlamalarımızı
şeklinde tek tek tanımlama yapmamız gerekiyordu fakat bu efektif bir çözüm değil. Sürekli olarak bir kontrol yaptığımızı düşünün her bir değişken için sürekli olarak ayrı ayrı kontrol
etmek işkence olacaktır.
şimdi aşağıdaki kod biraz kafa karışıklığına sebebiyet verebilir basit olmasına rağmen. çünkü final olarak bir int değer tutabilen list tanımladık ve içine 3 tane eleman koymuşuz
fakat ardından final olarak tanımladığımız bu liste eleman ekleyebilmişiz ve hata almamışız ama nasıl? şöyle referans type ve value type olayı işin içine giriyor burada aslında
biz listeyi final yaptığımızda evet değiştirilemez oluyor türü yani nesne olarak değiştirilemez ama içerisindeki şeylere müdahale edebiliyoruz yani listenin içerisine eleman ekleyip silebiliriz
sonuç olarak erişilen listin adresi değişmediği için sıkıntı çıkmıyor.
Şimdi fonksiyonlardan bahsedelim çünkü aşağıdaki kodlarda fonksiyonları kullanacağız
FONKSİYON NEDİR?
fonksiyonları matematikteki gibi kullanıyoruz programlamada da mesela biz bir for döngüsü veya bir kontrol işlemi yaptık örneğin biz bu kontrol işlemini atıyorum kodumuzun 38 yerinde yapacaksak
her seferinde yazdığımız kodu kopyala yapıştır yapmak yerine bu kontrolü bir metodun içine atıp yani bir fonksiyon oluşturup bu fonksiyonun içine atıp 38 tane kontrol kodu kullanmak yerine her seferinde bu fonksiyonu kullanacağımız yere çağırırsak sadece 1 fonksiyonu defalarca kullanmış oluruz ve daha mantıklı olur
fonksiyon oluştururken önce fonksiyonun döndüreceği değerin türünü veya döndürmezse void diyebiliriz ardından fonksiyonun adını ardından da varsa parametrelerini yazacağız dart dilinde.
Şimdi bizim asıl ilk konudan beri kodlarımızı içerisine yazdığımız void main dediğimiz şey main de bir fonksiyondur ana fonksiyon hatta onun süslü parantezlerinin dışına çıkıyoruz artık ve biz kendi fonksiyonlarımızı yazıyoruz. Şimdi konunun en alt kısmına yazdığımız fonksiyon kodlarını atacağım ve hemen aşağıdaki kodları incelerken aa burada ismini bilmediğim tanımlanmış bir şey var bu ne yahu diyeceğiniz şeyler tam da en aşağıda topluca vereceğim olan fonksiyonlarımızdır. tldenDolara, dolaraDonusturucu gibi fonksiyon isimlerimiz var bunlardan bahsediyorum
Listlerin generate metodu vardır bu metod ile list oluşturabiliyoruz
100 elemanli bir list düşün ve her indeksi için tek tek şu işlem yapılıyor
0.index için index + 5 yani 0+5 ten 5 atanacak ilk elemana.
ikinci eleman yani 1.index için 1+5 ten 6 atanacak böyle böyle 100 elemanlı
bir list oluşturmamıza yarıyor generate metodu burada.
Customers 100 30 40 60 olsun
35 tl den büyük olanlara kredi verebiliriz yazalım
küçük olanlara veremeyiz yazalım
yeni müşteri gelsin parası 50 tl olsun
parasını dolar yapmak istiyor ve kaç dolar olduğunu merak ediyor
şimdi farklı bir senaryo olsun
yeni bir fonksiyon oluşturup kullanalım bizim istediğimiz şey şu
doların kaç olduğunu da fonksiyona biz söyleyelim ona göre hesaplama yapsın bunu nasıl yapabiliriz?
şimdi daha farklı bir şey yapmayı deneyelim
bu sefer opsiyonel parametre kullanan bir fonksiyon yazalım
yine aynı işlemi yapsın ama dolar parametresini vermesek de çalışsın
YAZDIĞIMIZ FONKSİYONLAR
yazdığımız fonksiyonlar:
controlUserMoney fonksiyonumuz
tldenDolara fonksiyonumuz
geriye double deger döndüren 1 parametre alan bir fonksiyon
oluşturduk. bu fonksiyonun içerisinde kesinlikle return diyerek geriye
double bir değer döndürmemiz gerekli. onu da yaptık sıkıntı yok
dolaraDonusturucuKurlu adlı fonksiyonumuz
dolaraDonusturelim adlı fonksiyonumuz
sayHello adlı String değer döndüren fonksiyonumuz bu da son olarak
Serimizin 4.konusunda Maplerden ve Class yani sınıflardan bahsedeceğiz. Dart dilinde güzel bir ilerleme kaydettik 3 konumuzla özellikle de fonksiyonları temel olarak anlamamız muazzam önem taşıyordu. Şu anda mobil uygulama geliştirmek için hala yeterli Dart dili bilgisine sahip değiliz önümüzdeki derslerde ileri seviye class yapıları soyut sınıflar vs. try catch referans yapıları polimorfizm gibi kavramları da ele alacağız. Dart dilinde hatrı sayılır bir temelimiz olacak ve ardından Flutter framework'e geçiş yapacağız ve gerçek manada mobil uygulama geliştirmeyi öğrenmeye başladığımızı hissedeceğiz. Yorumlarınızı eksik etmeyin serinin bir sonraki konusunda görüşmek üzere!
Serinin önceki konuları:
0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #1
0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #2
Dart dilinde Listler ve Fonksiyonlar
Biz bugüne kadar hep tek tek çalıştık dart üzerinde doğru düzgün listeleri kullanmadık ve görmedik. Şimdi listelerden bahsedelim
normalde öğrendiğimiz yere kadar değişken tanımlamalarımızı
Kod:
final int money1=100;
final int money2=110;
final int money3=120;
şeklinde tek tek tanımlama yapmamız gerekiyordu fakat bu efektif bir çözüm değil. Sürekli olarak bir kontrol yaptığımızı düşünün her bir değişken için sürekli olarak ayrı ayrı kontrol
etmek işkence olacaktır.
Kod:
List <int> moneys = [100,110,120,130,140];
/*bir list oluşturduk int türünde değerler taşıyabilen*/
print('müşteri 1\'in parası: ${moneys[0]}'); /*listimizin 0.indeksinde 100 yer alır. */
/*list in farklı metodları mevcut bir sürü */
/*listte sıralama yapmak için sort metodu kullanılır bunu daha detaylı göreceğiz sonra*/
moneys.sort();
moneys.add(510);
/*list e ekleme yaptım*/
moneys.insert(2, 300); // indeks 2'ye 300 koyar indeks 2 dekini 3 e atıyor
print(moneys);
//reversed diye bir metod var Iterable dediğimiz bir kavram var list i de kapsayan listenin üstünde bir yapı gibi düşünebilirsiniz.
moneys.reversed.toList().add(600); //toList metodu da list e çevirir yani reversed metodu bize Iterable veriyor biz onu tekrar list e çevirdik
//sonra da add metodunu kullanarak 600 ü ekledik listemize, anlamadıysanız devam edin takılmayın
şimdi aşağıdaki kod biraz kafa karışıklığına sebebiyet verebilir basit olmasına rağmen. çünkü final olarak bir int değer tutabilen list tanımladık ve içine 3 tane eleman koymuşuz
fakat ardından final olarak tanımladığımız bu liste eleman ekleyebilmişiz ve hata almamışız ama nasıl? şöyle referans type ve value type olayı işin içine giriyor burada aslında
biz listeyi final yaptığımızda evet değiştirilemez oluyor türü yani nesne olarak değiştirilemez ama içerisindeki şeylere müdahale edebiliyoruz yani listenin içerisine eleman ekleyip silebiliriz
sonuç olarak erişilen listin adresi değişmediği için sıkıntı çıkmıyor.
Şimdi fonksiyonlardan bahsedelim çünkü aşağıdaki kodlarda fonksiyonları kullanacağız
FONKSİYON NEDİR?
fonksiyonları matematikteki gibi kullanıyoruz programlamada da mesela biz bir for döngüsü veya bir kontrol işlemi yaptık örneğin biz bu kontrol işlemini atıyorum kodumuzun 38 yerinde yapacaksak
her seferinde yazdığımız kodu kopyala yapıştır yapmak yerine bu kontrolü bir metodun içine atıp yani bir fonksiyon oluşturup bu fonksiyonun içine atıp 38 tane kontrol kodu kullanmak yerine her seferinde bu fonksiyonu kullanacağımız yere çağırırsak sadece 1 fonksiyonu defalarca kullanmış oluruz ve daha mantıklı olur
fonksiyon oluştururken önce fonksiyonun döndüreceği değerin türünü veya döndürmezse void diyebiliriz ardından fonksiyonun adını ardından da varsa parametrelerini yazacağız dart dilinde.
Şimdi bizim asıl ilk konudan beri kodlarımızı içerisine yazdığımız void main dediğimiz şey main de bir fonksiyondur ana fonksiyon hatta onun süslü parantezlerinin dışına çıkıyoruz artık ve biz kendi fonksiyonlarımızı yazıyoruz. Şimdi konunun en alt kısmına yazdığımız fonksiyon kodlarını atacağım ve hemen aşağıdaki kodları incelerken aa burada ismini bilmediğim tanımlanmış bir şey var bu ne yahu diyeceğiniz şeyler tam da en aşağıda topluca vereceğim olan fonksiyonlarımızdır. tldenDolara, dolaraDonusturucu gibi fonksiyon isimlerimiz var bunlardan bahsediyorum
Kod:
final List<int> newMoneys = [100,200,300];
newMoneys.add(50);
newMoneys.reversed.toList(); //listi ters çevirip iterable dönüyor ve toList diyerek yeni bir liste oluşturuyor toList bize. yeni bir referans atayıp yeni bir liste oluşturuyor o yüzden hata vermiyor gibi düşünebiliriz
/*
mesela mağaza bize 100 tane müşteri yap bunların hepsine sırayla numarasına göre 5 tl ekle diye bir senaryo oluşturalım ve inceleyelim
*/
List<double> customerMoney = List.generate(4, (index) {
return index + 5.0;
});
Listlerin generate metodu vardır bu metod ile list oluşturabiliyoruz
100 elemanli bir list düşün ve her indeksi için tek tek şu işlem yapılıyor
0.index için index + 5 yani 0+5 ten 5 atanacak ilk elemana.
ikinci eleman yani 1.index için 1+5 ten 6 atanacak böyle böyle 100 elemanlı
bir list oluşturmamıza yarıyor generate metodu burada.
Customers 100 30 40 60 olsun
35 tl den büyük olanlara kredi verebiliriz yazalım
küçük olanlara veremeyiz yazalım
Kod:
List<int> moneyCustomerNews = [100,30,40,60];
for(int i = 0; i<moneyCustomerNews.length; i++){
//bir for döngüsü oluşturduk döngüler basit
//i 0 dan başlar moneyCustomerNews listimizin uzunluğundan küçük olana kadar
//birer birer artarak her seferinde burada yazdığımız işlemleri yapmamıza yarar for döngüsü
print("müşteri parası: ${moneyCustomerNews[i]}");
//her seferinde 0,1,2,3... indeksteki elemanlarını gösterecek listemizin
if(moneyCustomerNews[i]>35){
print("kredi hazır verebiliriz");
}else{
print("kredi veremeyiz");
}
//basit bir kontrol işlemi yaptık 35 ten büyükse o eleman ona göre şeyler söylüyoruz
}
//diyelim bu listemizin tersten çalışmasını istiyoruz
//o zaman ne yapardık reversed metodunu kullanırdık
final int userMoney = 0;
final int userMoney2 = 50;
controlUserMoney(userMoney2); //fonksiyonumuzu kullandık
//fonksiyonumuza parametre olarak userMoney2 yi gönderdik
yeni müşteri gelsin parası 50 tl olsun
parasını dolar yapmak istiyor ve kaç dolar olduğunu merak ediyor
Kod:
final yeniKullaniciParasi = 50;
print(yeniKullaniciParasi/19); //doları 19 baz alarak yaptığımız bir işlem ama her seferinde böyle hesaplama yaptırmak yerine fonksiyon kullanalım
//ama yapacağımız fonksiyon sadece hesaplasın yani print etmesin diyelim
double result = tldenDolara(yeniKullaniciParasi);
print(result);
şimdi farklı bir senaryo olsun
yeni bir fonksiyon oluşturup kullanalım bizim istediğimiz şey şu
doların kaç olduğunu da fonksiyona biz söyleyelim ona göre hesaplama yapsın bunu nasıl yapabiliriz?
Kod:
double kullanici2 = 158; //kullanici2 nin 158 tl parası varmış
//şimdi gidip fonksiyonumuzu oluşturalım
double dolarKurumuz= 2; //keşke 2 olsa :')
//şimdi fonksiyonumuzu kullanalım
dolaraDonusturucuKurlu(kullanici2, dolarKurumuz);
//dolar 2 bazindan 158 tl nin kaç dolar ettiğini hesaplayacaktir fonksiyonumuz
şimdi daha farklı bir şey yapmayı deneyelim
bu sefer opsiyonel parametre kullanan bir fonksiyon yazalım
yine aynı işlemi yapsın ama dolar parametresini vermesek de çalışsın
Kod:
double kullanici3 = 160;
double dolarKuru2 = 18;
//şimdi gidip fonksiyonumuzu oluşturalım
//oluşturduk şimdi kullanalım
dolaraDonusturelim(kullanici3, dolar: dolarKuru2);
//opsiyonel parametreyi verirken bu şekilde ismini yazıyoruz hoş oldu
//fonksiyonlardan biraz bahsettik şimdi listelerle ilgili birkaç metoda bakalım
List<dynamic> user1 = [1,'a', true];
//dyanmic yani farklı farklı biri in tbiri string biri bool list farklı farklı şeyler taşıyabiliyor
//dynamic listler önerilmez sektörde pek :)
//listenin içerisinde gezmek
for(var item in user1){
print(user1[item]);
}
//tek tek listenin elemanları item e atanır ve kod parçası çalıştırılır
List<String> userNames = ["ali", "ayşe", "mehmet"];
//userNames. diyerek metodlarına erişebiliyoruz listlerin
userNames.contains("veli"); //bu false veya true döndürür veli içeriyor mu liste içermiyor mu
for(var item in userNames){
if(item=="veli"){
print("var"); //böyle de yapılabilirdi ama contains metodunu kullanmak çok daha mantıklı
}
}
YAZDIĞIMIZ FONKSİYONLAR
yazdığımız fonksiyonlar:
controlUserMoney fonksiyonumuz
Kod:
void controlUserMoney(int money){
//geriye değer döndürmeyen bir fonksiyon oluşturduk
//parametre olarak int türünde bir şey alıyor adı da money olsun demişiz
//bu fonksiyon kullanıldığında parametre olarak yollanan int türündeki şey money e atanır
//ardından bu kod çalışır bu kodumuz da kontrol yapmaya yarıyordu
if(money>0){
print("para var");
}else{
print("para yok");
}
}
tldenDolara fonksiyonumuz
geriye double deger döndüren 1 parametre alan bir fonksiyon
oluşturduk. bu fonksiyonun içerisinde kesinlikle return diyerek geriye
double bir değer döndürmemiz gerekli. onu da yaptık sıkıntı yok
Kod:
double tldenDolara(int money){
double hesaplananDeger = money/19;
return hesaplananDeger;
}
/*
*/
Kod:
double dolaraDonusturucuKurlu(double money, double dolar){
double hesaplamaSonucu = money/dolar;
return hesaplamaSonucu;
}
dolaraDonusturelim adlı fonksiyonumuz
Kod:
double dolaraDonusturelim(double money, {double dolar=14}){
//opsiyonel parametre oluşturduk yani kullanılırken ister verir ister vermez kullanıcı bunu
//vermezse 14 olarak default verdiğimiz değeri alacak
double hesaplamaSonucu = money/dolar;
return hesaplamaSonucu;
}
sayHello adlı String değer döndüren fonksiyonumuz bu da son olarak
Kod:
String sayHello(){
return 'hello';
} //Hello döndüren bir fonksiyon oluşturduk
//string döndürüyor yani
Serimizin 4.konusunda Maplerden ve Class yani sınıflardan bahsedeceğiz. Dart dilinde güzel bir ilerleme kaydettik 3 konumuzla özellikle de fonksiyonları temel olarak anlamamız muazzam önem taşıyordu. Şu anda mobil uygulama geliştirmek için hala yeterli Dart dili bilgisine sahip değiliz önümüzdeki derslerde ileri seviye class yapıları soyut sınıflar vs. try catch referans yapıları polimorfizm gibi kavramları da ele alacağız. Dart dilinde hatrı sayılır bir temelimiz olacak ve ardından Flutter framework'e geçiş yapacağız ve gerçek manada mobil uygulama geliştirmeyi öğrenmeye başladığımızı hissedeceğiz. Yorumlarınızı eksik etmeyin serinin bir sonraki konusunda görüşmek üzere!
Son düzenleme: