// METODLAR, Method, function
// çağrılmadığı sürece çalışmayan kod bloğudur.
// sürekli tekrar tekrar uzun kod yazmamak için
// düzen için
// metodlara istediğimiz adı verebiliriz.
// bir blokta aynı isimde bir metod olamaz (c# da böyle değil)
// tanımlanması
// DönüşTipi MetodAdı(){
// }
import 'dart:math';
// void, boş, hiç anlamına geliyor,
// dönüştipi olarak yazarsak hiçbirşey döndürmez denir
void MerhabaYaz(){
print("Merhaba");
}
// Parametre ile devam edelim.
// Parametre, metodun çağrılırken içerisine veri göndermemizi sağlar
void EkranaYaz(String yazi){
print(yazi);
}
// Birden fazla parametre olabilir,
// parametreleri , ile ayırırız
void ToplamiYaz(int a, int b){
int toplam = a + b;
print("Toplam = $toplam");
}
// ToplamHesapla adında bir metod istese idik
// ne yapacaktı, toplamı hesaplayıp, sonucu çağrıldığı yere döndürmesi lazım
// dönüştipi void değilse, mutlaka return olmalıdır.
int ToplamHesapla(int a, int b){
int toplam = a+b;
return toplam; // geri döndür, değeri
// Not: return görüldüğünde metoddan çıkılır.
}
void main(){
MerhabaYaz(); // çağırmak için adını yazmak yeterlidir,
// aslında zaten metod kullanmıştık
// print("Ekrana bir şey yazdık."); // mesela bu voiddi, işi yapar çağrıldığoı yere döner
// int sayi = Random().nextInt(10); // bu ise çağrıldığı yere bir sayı döndürüyor.
EkranaYaz("Recep ÖZEN");
ToplamiYaz(5, 6);
int sonuc = ToplamHesapla(5,6);
print(sonuc);
}
// ZarAt adında bir metod tanımlayın.
// ve metodu kullanarak ürettiğiniz sayıyı ekrana yazın
import 'dart:math';
import 'p1101.dart';
int ZarAt(){
int zar = Random().nextInt(6)+1;
return zar;
}
void main(List<String> args) {
print(zarAt());
int sayi = zarAt();
print(sayi);
}
// Zorunlu olmayan parametreler
// metoda bir parametre yazdığımızda, çağırırken mecburi parametre de yazılmalı
import 'dart:io';
import 'dart:math';
// void EkranaYaz(String yazi){
// stdout.write(yazi);
// }
// // yukarıdaki metod, ekrana yazar alta geçmez
// void EkranaYaz(String yazi, bool yenisatir){
// stdout.write(yazi);
// if(yenisatir){
// stdout.write("\n");
// }
// }
// void main(List<String> args) {
// EkranaYaz("Recep",false);
// EkranaYaz("ÖZEN",false);
// }
// ************************************************
// zorunlu olmayan parametreler küme bloğu içerisinde tanımlanır
// öncelikle yazılması gerekenler, zorunlu olanlardır,
// yani küme bloğundaki parametreler, en sonda kullanılır.
// küme bloğunda tanımlanan parametrelerin, varsayılan değeri olmalıdır.
// void EkranaYaz(String yazi, {bool yenisatir=true}){
// stdout.write(yazi);
// if(yenisatir){
// stdout.write("\n");
// }
// }
// void main(List<String> args) {
// EkranaYaz("Recep",yenisatir: false);
// EkranaYaz("ÖZEN");
// }
// ***************************************************
// kendisine gönderilen listeyi küçükten büyüğe veya
// büyükten küçüğe sıralanmış olarak ekrana yazan metodu tanımlayınız.
// parametre olarak liste gönderilecek, aynı zamanda yon adında bir zorunlu olmayan
// parametre de küçükten büyüğe mi büyükten küçüğe mi sıralanacağını belirtsin
// varsayılan olarak küçükten büyüğe sıralama yapılacaktır.
void Sirala(List<int> a, {bool yon = true}){
List<int> yeni = a.toList();
yeni.sort();
if(yon) print(yeni);
else print(yeni.reversed);
}
void Metod(int a, int b, int c){
}
void main(List<String> args) {
List<int> liste = [3,56,7,23,8,1,9];
Sirala(liste,yon: false);
Sirala(liste);
print(liste);
}
// KisiYarat adında gönderilen bilgiler ile kişi oluşturan
// metod yazıp, kişi yaratın
// Adı, Soyadı, TCNo, doğumyılı, Cinsiyet, Telefon, Email
// kişi yaratıldığını simüle etmek için bilgileri ekrana yazsın
// aşağıdaki yazımda bu bilgiler parametre olarak kesinlikle girilmeli, yoksa metodu çağıramayız
// void KisiYarat(String Ad, String Soyad, String TCNO, int dy, String Cinsiyet, String Telefon, String Email){
// }
// Cinsiyet, Telefon ve email bilgisi zorunlu olmasın.
void KisiYarat(String Ad, String Soyad, String TCNO, int dy, {String? Cinsiyet, String? Telefon, String? Email}){
print("Ad: $Ad");
print("Soyad: $Soyad");
print("TCNo: $TCNO");
print("Doğum Yılı: $dy");
if(Cinsiyet!=null) print("Cinsiyet: $Cinsiyet");
if(Telefon!=null) print("Telefon: $Telefon");
if(Email!=null) print("Email: $Email");
}
void main(List<String> args) {
KisiYarat("Recep", "ÖZEN", "52753025212", 1980);
KisiYarat("Recep", "ÖZEN", "52753025212", 1980, Cinsiyet: "Erkek",Email: "recepozen54@gmail.com");
}
// KisiYarat metodu olsun yine, ad soyad cinsiyet ve medenihali göndereceğiz.
// void KisiYarat(String ad, String soyad, String cinsiyet, String medeniHali) {
// }
// enumaration, numaralandırma
enum Cinsiyet{
Erkek,
Kadin
}
enum MedeniHal{
Bekar,
Evli,
Dul,
AyriYasiyor,
Bosanmis
}
void KisiYarat(String ad, String soyad, Cinsiyet cinsiyet, MedeniHal medeniHali) {
print(ad);
print(soyad);
if(cinsiyet==Cinsiyet.Erkek) print("ERKEK");
if(cinsiyet==Cinsiyet.Kadin) print("KADIN");
switch (medeniHali) {
case MedeniHal.AyriYasiyor:
print("Ayrı Yaşıyor");
break;
case MedeniHal.Evli:
print("evli");
break;
case MedeniHal.Bekar:
print("Bekar");
break;
case MedeniHal.Dul:
print("Dul");
break;
case MedeniHal.Bosanmis:
print("Boşanmış");
break;
default:
}
}
void main(List<String> args) {
KisiYarat("Recep", "ÖZEN", Cinsiyet.Erkek,MedeniHal.Evli);
KisiYarat("Yağmur", "Tatlısu", Cinsiyet.Kadin, MedeniHal.Bekar);
}
void main(List<String> args) {
// constant - Sabit
const pi = 3.14;
// const ile tanımlanan değişken sadece bir defa atanabilir.
// const a; bu hata verir
// const ile tanımlanan sabit değişken, tanımlandığı anda değer ataması yapılmalıdır.
final pi2 = 3.14;
//pi2 = 4; // burada hata alınır
// const ve final ikisi de sabit değişkenlerdir.
// const atanırken değer tanımlanmalı idi
// final ise tanımlandığı anda değer ataması yapılmak zorunda değildir
// ataması yapıldıktan sonra bir daha atama yapılamaz, değeri değiştirilemez
final pi3;
pi3=3.14; // atama sonra da yapılabilir.
// pi3=3; // burada hata alırız
// final veya const ile tanımlanan değişkenler, var gibi davranır.
// yani ilk atamadaki değerin türünü alır.
}
// Class nedir? Sınıftır.
// sınıf nedir? kültürel anlamda sormuyoruz, programlamada
// Class yapıdır, Class fıtrattır, Class plandır
// planların özellikleri vardır
// örneğin bina planının kat adedi, daire adedi, rengi, vb
// insan fıtratının, cinsiyeti, kangrubu, kanrengi, tenrengi vb.
// Nesne yönelimli programlama, Nesne tabanlı programlama
// her nesnenin bir fıtratı vardır, planı vardır,
// yani özelliklerini ve yeteneklerini belirten unsurları vardır.
// bir class nasıl tanımlanır
// class ClassAdi{
// }
// kedi fıtratı yazıyoruz.
class Kedi{
// Özellikleri (Property), değişkenler olarak ifade edebiliriz.
// String Renk; // Bu şekilde yazdığımızda hata alırız.
// sebebi diyor ki nesne türetilir ise bu plandan, yani gerçek bir kedi
// üretilirse rengi yok. yani varsayılan rengi yok diyor.
// ya bir kedi üretildiğinde varsayılan rengi olmalı
// String Renk = "Sarı";
// ya bir kedi üretildiğinde varsayılan olarak null olsun
// String? Renk; // tabii ki kullanacağımız zaman null ise ne yapacağını söylememiz lazım.
// late String Renk; // bu ifade sonra anlamında kullanılabilir
// diyoruz ki programa, bu Renk değeri null olmayacak, ama ben değeri
// daha sonra atacağım, hata olabileceğinin farkındayım.
// değişkenlere classlarda Field adı da verilir.
String? renk;
int? yas;
int? patiSayisi;
String? gozrengi;
bool? tuylu;
// Yetenekleri (Method), metodlar olarak ifade edebiliriz.
void Miyav() {
print("Miyav miyav");
}
void Yuru(){
print("Yurudum, $yas yaşındayım, yoruldum");
}
}
void main(List<String> args) {
// Bir kedi yaratalım
// kedi sınıfından bir nesne üreteceğiz.
Kedi k1 = new Kedi();
k1.gozrengi = "Ela";
k1.patiSayisi = 5;
k1.tuylu = false;
k1.renk = "Turuncu";
k1.yas = 5;
k1.Miyav();
k1.Yuru();
var k2 = new Kedi();
k2.yas = 10;
k1.Yuru();
k2.Yuru();
}
// Kişinin bilgilerini tutan Person adında bir sınıf tanımlayın
// Ad, Soyad, Maas bilgilerini tutsun
// Klavyeden bu gerekli bilgileri giriş alan
// kişi oluşturarak sonra bu kişiyi ekrana yazan programı yazınız.
import 'dart:io';
class Person{
String? ad;
String? soyad;
double? maas;
}
void main(List<String> args) {
stdout.write("Ad giriniz: ");
String ad = stdin.readLineSync()!;
stdout.write("Ad giriniz: ");
String soyad = stdin.readLineSync()!;
stdout.write("Ad giriniz: ");
double maas = double.parse(stdin.readLineSync()!);
Person kisi = new Person();
kisi.ad =ad;
kisi.soyad=soyad;
kisi.maas = maas;
print("Kişi Adı: ${kisi.ad}");
print("Kişi soyadı: ${kisi.soyad}");
print("Kişi maası: ${kisi.maas}");
Person kisi2 = Person(); // new yazılmasa da yazılmış gibi nesne türetilir.
// ClassAdı() yaptığımızda new ClassAdı() yapmış oluruz.
stdout.write("Ad giriniz: ");
kisi2.ad = stdin.readLineSync()!;
stdout.write("Ad giriniz: ");
kisi2.soyad = stdin.readLineSync()!;
stdout.write("Ad giriniz: ");
kisi2.maas = double.parse(stdin.readLineSync()!);
print("Kişi Adı: ${kisi2.ad}");
print("Kişi soyadı: ${kisi2.soyad}");
print("Kişi maası: ${kisi2.maas}");
}