Professional Documents
Culture Documents
BLM TEKNOLOJLER
METOTLAR
482BK0121
Ankara, 2011
Bu modl, mesleki ve teknik eitim okul/kurumlarnda uygulanan ereve retim Programlarnda yer alan yeterlikleri kazandrmaya ynelik olarak rencilere rehberlik etmek amacyla hazrlanm bireysel renme materyalidir. Mill Eitim Bakanlnca cretsiz olarak verilmitir. PARA LE SATILMAZ.
NDEKLER
AIKLAMALAR ...................................................................................................................iii GR ....................................................................................................................................... 1 RENME FAALYET1 .................................................................................................... 2 1. METOTLAR ........................................................................................................................ 2 1.1. Metot Kavram .............................................................................................................. 2 1.2. Metot Tanmlama.......................................................................................................... 3 1.3. Metotlarda Parametre Kullanm................................................................................... 5 1.4. Metotlarla ilgili nemli zellikler ............................................................................... 9 1.5. zyineli (Rekrsif-Recursive) Metotlar ..................................................................... 14 1.6. Main( ) Metodu ........................................................................................................... 15 UYGULAMA FAALYET .............................................................................................. 20 LME VE DEERLENDRME .................................................................................... 21 RENME FAALYET2 .................................................................................................. 22 2. HAZIR METOTLAR ......................................................................................................... 22 2.1. Metinsel (String) Metotlar ......................................................................................... 22 2.1.1. Compare( )........................................................................................................... 23 2.1.2. Concat( ) .............................................................................................................. 25 2.1.3. Copy( )................................................................................................................. 26 1.2.4. Format( ) .............................................................................................................. 26 2.1.5. IsNullOrEmpty( )................................................................................................. 32 2.1.6. CompareTo ( ) ..................................................................................................... 33 2.1.7. Contains( ) ........................................................................................................... 34 2.1.8. CopyTo( ) ............................................................................................................ 35 2.1.9. EndsWith( ).......................................................................................................... 37 2.1.10. IndexOf( ) .......................................................................................................... 38 2.1.11. Insert(int baslangic,string value ) ...................................................................... 40 2.1.12. LastIndexOf( ) ................................................................................................... 41 2.1.13. PadLeft ( ).......................................................................................................... 43 2.1.14. PadRight ( )........................................................................................................ 44 2.1.15. Remove ( ) ......................................................................................................... 46 2.1.16. Replace ( ).......................................................................................................... 47 2.1.17. Split ( ) ............................................................................................................... 49 2.1.18. StartsWith ( ) ..................................................................................................... 49 2.1.19. Substring ( ) ....................................................................................................... 50 2.1.20. ToLower ( )........................................................................................................ 51 2.1.21. ToUpper ( ) ........................................................................................................ 52 2.2. Matematiksel (Math) Metotlar................................................................................... 52 2.2.1. Abs( ) ................................................................................................................... 52 2.2.2. BigMul( ) ............................................................................................................. 53 2.2.3. Ceiling( ).............................................................................................................. 53 2.2.4. DivRem( ) ............................................................................................................ 54 2.2.5. Max( ) .................................................................................................................. 54 2.2.6. Min( )................................................................................................................... 55 2.2.7. Pow( ) .................................................................................................................. 56 2.2.8. Round( )............................................................................................................... 56
2.2.9. Sign( ) .................................................................................................................. 57 2.2.10. Sqrt( )................................................................................................................. 57 2.2.11. Cos( ) ................................................................................................................. 59 2.2.12. Sin( ) .................................................................................................................. 59 2.2.13. Tan( ) ................................................................................................................. 60 2.2.14. Acos( ) ............................................................................................................... 61 2.2.15. Asin( ) ................................................................................................................ 61 2.2.16. Atan( )................................................................................................................ 61 2.3. Tarih/Saat (DateTime) Metotlar ................................................................................ 61 2.3.1. MinValue ............................................................................................................. 61 2.3.2. MaxValue ............................................................................................................ 62 2.3.3. Today ................................................................................................................... 62 2.3.4. Now ..................................................................................................................... 63 2.3.5. DateTime.Compare( ) .......................................................................................... 65 2.3.6. DateTime.DaysInMonth( ) .................................................................................. 65 2.3.7. DateTime.IsLeapYear( ) ...................................................................................... 66 2.3.8. DateTime.Parse( ) ................................................................................................ 66 2.3.9. Subtract( ) ............................................................................................................ 67 2.3.10. AddDays( ) ........................................................................................................ 68 2.3.11. AddMonths( ) .................................................................................................... 68 2.3.12. AddYears( ) ....................................................................................................... 68 2.3.13. AddHours( )....................................................................................................... 68 2.3.14. AddMinutes( ).................................................................................................... 69 2.3.15. AddSeconds( ) ................................................................................................... 69 2.3.16. AddMilliseconds( ) ............................................................................................ 69 UYGULAMA FAALYET .............................................................................................. 70 LME VE DEERLENDRME .................................................................................... 71 MODL DEERLENDRME .............................................................................................. 72 CEVAP ANAHTARLARI ..................................................................................................... 73 KAYNAKA ......................................................................................................................... 74
ii
AIKLAMALAR AIKLAMALAR
KOD ALAN DAL/MESLEK MODLN ADI MODLN TANIMI SRE N KOUL YETERLK 482BK0121 Biliim Teknolojileri Alan Ortak Metotlar Bu modl temel programlama ilemlerinde metotlar yazabilmenin renildii bir renme materyalidir. 40/32 Bu modln n koulu yoktur. Metotlarla almak Genel Ama Bu modl ile gerekli ortam salandnda; temel programlama ilemlerinde metotlar yazabileceksiniz. Amalar 1. Metotlar kullanabileceksiniz. 2. Hazr metotlar kullanabileceksiniz. Ortam: Bilgisayar laboratuar Donanm: Bilgisayar, Programlama Yazlm Modl iinde yer alan her renme faaliyetinden sonra verilen lme aralar ile kendinizi deerlendireceksiniz. retmen modl sonunda lme arac (oktan semeli test, doru-yanl testi, boluk doldurma vb.) kullanarak modl uygulamalar ile kazandnz bilgi ve becerileri lerek sizi deerlendirecektir.
MODLN AMACI
LME VE DEERLENDRME
iii
GR GR
Sevgili renci, Programlama Temelleri dersinin bu modlnde sizler, programlamann bir dier temel yap ta olan Metotlar reneceksiniz. Bilgisayar programclna giden bu yolda, nemli bir adm da bu modl renerek atacaksnz. Program yazarken belli bir ii yapan kod blounu bir ka kez kullanmak gerekebilir. Bunun iin ayn kod blounu tekrar yazmak yerine bunu bir metot olarak hazrlarz ve ihtiya duyduumuz yerde metodu ismi ile ararak altrabiliriz. Bu bize daha az kod yazma imkn salayp zaman kazandrd gibi, olas deiikliklerde de daha az hata yapmamz salar. Bu modlde birok programlama dilinin temel kavramlarndan olan metotlar detaylar ile inceleyeceiz. Metotlarn tanmlar ve kullanm, parametrelerin zellikleri rneklerle ilenecektir.
ARATIRMA
Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrma faaliyetlerini yapmalsnz. eitli programlama dillerindeki alt programlar kavramlarn aratrnz. Fonksiyonlarn alma mant hakknda n bilgi edininiz. Parametre, geri dn deeri nedir? Aratrnz.
1. METOTLAR
Programlarn hazrlanmas esnasnda, ayn ilemi gerekletiren program paralarna programn birok yerinde ihtiya duyulabilir. Bu ihtiyalar, metotlar yazlarak giderilir. Eer metotlar kullanlmazsa; programda ayn kodu defalarca yazmamz gerekebilir ve program kodlarnn okunmas zorlar. Ayn zamanda kaynak kodun gereksiz uzamasna sebep olur. Bunun iin programn birok yerinde ihtiya duyulan ve ayn ilemleri yapan program paralar metotlar olarak hazrlanrlar.
Tanmlanmas:
eriim dn-tipi isim(parametre-listesi) { // metodun gvdesi; }
Eriim: Bu metoda, programn dier blmlerinin nasl eriebileceini belirleyen bir eriim niteleyicisidir. Bunun kullanm istee baldr. Eer herhangi bir eriim belirteci kullanlmazsa varsaylan olarak snfa zel (private) olarak belirlenir. Private olarak kullanldnda yalnzca metodun yazld snf ierisinden arlabilmesini ngrr. Eer programn ierisinde bulunan dier kodlar ierisinden de bu metot arlabilsin isteniyorsa, eriim belirteci public olarak belirtilmelidir. Nesne ynelimli programlama dillerinde metotlar, tanmlandklar snf ad ile birlikte arlrken eer metot, programn ana metodu ( Main() ) ierisinden arlacaksa static olarak tanmlanr ve snf adn yazmaya gerek kalmadan arlr. Dn-tipi: Bu metodun altrldktan sonra programda arld noktaya dndrd verinin tipini belirlediimiz ksmdr. Eer metot bir deer dndrmeyecekse dn-tipi void olarak belirtilmelidir. sim: Metodunun isminin belirtildii ksmdr. Metodumuza isim verirken yapaca i ile alakal bir isim vermek hem metodun ne ie yaradyla ilgili bize bilgi verecektir, hem de bizden baka ayn program kodlayacak kimselere yol gsterecektir. Metoda isim verirken ayn deiken isimleri tanmlarken kullandmz kurallar yine gz nnde bulundurmalyz. Geri dn tiplerinin veya parametre-listesinin farkl olmas durumunda ayn isme sahip birden fazla metot olabilir. Parametre-Listesi: Virgl ( , ) ile ayrlm tip ve tanmlayc iftlerden oluan bir listedir. Parametreler, metot arldnda, metodun kullanmas iin gnderilen bilgilerdir. Eer metot hi parametre kullanmayacaksa parametre listesi de bo olur. rneklerle metot tanmlamalarn inceleyelim; rnek 0-1: Geri dn deeri ve parametre-listesi bo olan, ekrana Merhaba Dnya yazdran metodu tanmlayp program ierisinde kullanmna bir rnek veriniz.
static void MerhabaDunyaYazdir() { Console.WriteLine("Merhaba Dnya"); } static void Main(string[] args) { MerhabaDunyaYazdir(); }
Yukardaki kod paralar altrldnda aadaki gibi bir ekran grntsyle karlarz.
rnek 0-2: Klavyeden girilen bir tam saynn karesini bulan metodu ve bu metodun program ierisinde kullanmn gsteren programn kodunu yaznz.
static int KareAl(int sayi) { int karesi = sayi * sayi; return karesi; } static void Main(string[] args) { Console.Write("Bir say giriniz: "); int s1,sonuc; s1=Convert.ToInt32(Console.ReadLine()); sonuc = KareAl(s1); Console.WriteLine("{0} saysnn karesi: {1}",s1,sonuc); }
Yukardaki kod paralar altrldnda aadaki gibi bir ekran grntsyle karlarz.
rnek 0-3: Klavyeden girilen bir mesaj ekrana 10 defa yazdran metodun kodunu yaznz.
static void MesajYaz(string msj) { for (int i = 1; i <= 10; i++) Console.WriteLine(msj); } static void Main(string[] args) { Console.Write("Mesajnz giriniz: "); string mesaj; mesaj=Console.ReadLine(); MesajYaz(mesaj); }
Yukardaki kodlar incelediimiz zaman; klavyeden girilen yaz mesaj isimli deiken ierisine aktarlmakta ve daha sonra MesajYaz() isimli metota gnderilmektedir. MesajYaz() metodu ise kendisine parametre olarak verilen string trdeki mesaj ekrana 10 defa yazmaktadr. altrldnda aadaki gibi bir ekran ktsyla karlarz.
eitli veri trlerini parametre olarak metotlarmza nasl gnderdiimizi rneklerle inceleyelim; rnek 0-4: Klavyeden girilerek parametre olarak gnderilen bir saynn, asal say olup olmadn kontrol eden, eer say asal ise true, deilse false deeri dndren metodu yaznz.
static bool AsalMi(int s) { bool durum=false; for (int i = 2; i < s / 2 + 1; i++) { if (s % 2 == 0) durum=false; else durum=true; } return durum; } static void Main(string[] args) { int sayi = 0; bool drm; Console.Write("Bir say giriniz: "); sayi=Convert.ToInt32(Console.ReadLine()); drm=AsalMi(sayi); if (drm == true) Console.WriteLine("{0} says asaldr.",sayi); else Console.WriteLine("{0} says Asal deildir.",sayi); }
Yukardaki uygulamay aada verilen deerler iin tek tek deneyiniz ve ekran ktlarn yanlarndaki bo ksma yaznz. Girilecek Deerler 16 43 66 89 Ekran kts
rnek 0-5: Parametre olarak gnderilen kullanc ad ve ifreyi kontrol eden, nceden belirlenmi olan bir kullanc ad ve ifreyle karlatran metodun kodlarn yaznz.
static void KullaniciKontrol(string kAdi, string psw) { if ((kAdi == "Admin") || (kAdi == "ADMN") || (kAdi == "admin"))
{ if (psw == "123rty") Console.WriteLine("Tebrikler Kullanc ve ifreniz Doru"); else Console.WriteLine("ifrenizi Hatal Girdiniz"); } else { Console.WriteLine("Kullanc adnz hatal."); } } static void Main(string[] args) { string kullaniciAdi, sifre; Console.Write("Ltfen kullanc adnz giriniz: "); kullaniciAdi = Console.ReadLine(); Console.Write("Ltfen ifrenizi giriniz: "); sifre = Console.ReadLine(); KullaniciKontrol(kullaniciAdi, sifre); }
Yukardaki uygulamay aada verilen deerler iin tek tek deneyiniz ve ekran ktlarn yanlarndaki bo ksma yaznz. Girilecek Deerler Kullanc Ad ifre Admin 123RTY Ynetici 123rty Admin 123rty admin 123rty ADMN 123rty Ekran kts
rnek 0-6: Klavyeden girilen deerler arasnda rastgele say reten ve bu deerleri 10 elemanl bir dizi ierisine atayan SayiUret( ) isimli bir metot yaznz. Dizinin elemanlarn ekrana yazdran DiziYazdir( ) isimli bir metot daha yazarak elemanlar ekrana yazdrnz. Daha sonra bu dizi ierisindeki en byk say deerini bulan EnBuyuk( ) isimli, en kk deeri bulan EnKucuk( ) isimli iki metot daha yaznz. EnBuyuk ve EnKucuk metotlarndan dnen saylar ekrana yazdran programn kodlarn yaznz. Bu ksmda rastgele saylar retilip parametre olarak gnderilen dizi isimli diziye deerler aktarlyor ve dizi ana programa geri dndrlyor;
static int[] SayiUret(int bas, int bit,int[] dizi) { int tutulan = 0; Random rnd = new Random();
for (int i = 0; i < 10; i++) { tutulan = rnd.Next(bas, bit); dizi[i] = tutulan; } return dizi; }
Bu ksmda parametre olarak gnderilen dizi ierisindeki en byk deer bulunup ana programa geri dndrlyor;
static int EnBuyuk(int[] dizi2) { int ebs=0;//en kk deer foreach (int s in dizi2) { if (s > ebs) //eer say ebs'den bykse ebs = s; //yeni ebs, saynn deeri olur } return ebs; }
Bu ksmda parametre olarak gnderilen dizi ierisindeki en kk deer bulunup ana programa geri dndrlyor;
static int EnKucuk(int[] dizi3) { int eks = 100;//en byk deer foreach (int x in dizi3) { if (x < eks) //eer say ebs'den kkse eks = x; //yeni eks, saynn deeri olur } return eks; }
Ana programmz;
static void Main(string[] args) { int[] sayilar=new int[10]; int baslangic, bitis; Console.Write("Balang deerini giriniz: "); baslangic = Convert.ToInt32(Console.ReadLine()); Tekrar: Console.Write("Biti deerini giriniz: "); bitis = Convert.ToInt32(Console.ReadLine()); if (bitis <= baslangic) { Console.WriteLine("Biti deeri balangtan ({0}) kk ya da eit olamaz tekrar deneyiniz.",baslangic); goto Tekrar; } //Rastgele saylar retilip diziye aktarlyor sayilar = SayiUret(baslangic, bitis, sayilar); //Dizi ekrana yazdrlyor DiziYazdir(sayilar); //En byk deer bulunuyor int mak = EnBuyuk(sayilar); //En kk deer bulunuyor int min = EnKucuk(sayilar); //Sonular ekrana yazdrlyor Console.WriteLine("En byk say: " + mak); Console.WriteLine("En kk say: " + min); }
static int Topla(int sayi1, int sayi2, int sayi3) { int toplam; toplam = sayi1 + sayi2 + sayi3; return toplam; } static int Topla(int sayi1, int sayi2) {
int toplam; toplam = sayi1 + sayi2; return toplam; } static void Topla(int sayi1) { Console.Write("Parametresiz metodun sonucu= {0}", sayi1); } static void Main(string[] args) { int sonuc, s1, s2, s3; s1 = 43; s2 = 16; s3 = 66; sonuc = Topla(s1, s2, s3); Console.WriteLine("3 parametreli metodun sonucu= {0}", sonuc); sonuc = Topla(s1, s2); Console.WriteLine("2 parametreli metodun sonucu= {0}", sonuc); Topla(s1); }
Bu yntem pek de tavsiye edilen bir yntem deildir. Bu ekilde ayn isme sahip farkl metotlar olutururken ok dikkatli olmalyz. Metotlar arlrken, balangta belirlenen parametre saysndan ne az ne de ok sayda parametre girmeliyiz. Eer metodumuz 2 parametre ile ilem yapyorsa, biz bu metoda 1 veya 3 adet parametre gnderemeyiz. Aksi takdirde hata mesaj alrz.
static int Topla(int sayi1, int sayi2) { int toplam; toplam = sayi1 + sayi2; return toplam; } static void Main(string[] args) { int sonuc,s1,s2,s3; s1=43; s2=16; s3=66; sonuc = Topla(s1, s2, s3); sonuc = Topla(s1); Console.WriteLine ("Sonu= {0}",sonuc); }
10
Yukardaki kodlar incelediimizde; Topla isimli metoda ait parametre listesinde iki adet parametre alabilecei tanmlanm. Ancak ilk koyu renkli satrdan da greceimiz zere metot arlrken 3 parametre gnderildiinde veya bir sonraki satrdaki gibi tek parametre gnderildiinde hata mesaj alrz. Metotlarn geri dn deerleri vardr. Geri dn deeri olmayacak olan metotlarda geri dn tipi void olarak belirtilir ve return anahtar kelimesinin bu trdeki metotlarda kullanmna izin verilmez.
static void Topla(int sayi1, int sayi2) { int toplam; toplam = sayi1 + sayi2; return toplam; }
Yukardaki kodlar incelediimizde; geri dn tipi belirtilmeyen (void olarak tanmlanan) metottan return anahtar kelimesi kullanlarak geriye bir deer dndrlmeye alldnda hata mesaj alrz. Geri dn tr void olan metotlar, herhangi bir deiken ierisine atanamazlar.
static void Topla(int sayi1, int sayi2) { int toplam; toplam = sayi1 + sayi2; Console.WriteLine(toplam); } static void Main(string[] args) { int sonuc,s1,s2,s3; s1=43; s2=16; s3=66; sonuc = Topla(s1, s2); Console.WriteLine ("Sonu= {0}",sonuc); }
Yukardaki kodlar incelediimizde; geri dn deeri bulunmayan Topla isimli metot, - koyu renkli satrdan da grlecei zere - sonuc isimli deikene atama ilemi yaplmaya allrsa hata mesaj alrz. Metotlarn geri dn deerleri herhangi bir veri trnde olabilir. Metot ierisindeki bir deer return anahtar szcyle metodun arld yere geri dndrlr. Burada metodun geri dn tipine uyumlu bir deiken ierisine atanmaldr. Aksi takdirde tr uyumsuzluundan dolay hata mesaj alrz.
11
static float Topla(int sayi1, int sayi2) { float toplam; toplam = sayi1 + sayi2; return toplam; } static void Main(string[] args) { int sonuc,s1,s2,s3; s1=43; s2=16; s3=66; sonuc = Topla(s1, s2); Console.WriteLine ("Sonu= {0}",sonuc); }
Yukardaki kodlar incelediimizde; int trnde tanmlanm olan sonuc deikeni ierisine float trnde tanmlanm bir metodun geri dn atanmaya allrsa hata mesaj alrz. Bir metot parametre almadan da tanmlanabilir. Bu ekilde tanmlanan bir metoda parametre gnderilmez. Parametre-listesi parantezleri bo braklr.
static void yazdir() { Console.Write("Merhaba Dnya"); } static void Main(string[] args) { yazdir(); }
Metotlar tanmlanrken oluturulan parametre-listesindeki tm parametreler virgl ( , ) ile birbirinden ayrlmaldr. Tek bir tr yazp virglle deiken isimlerini ayramayz.
static float Topla(int sayi1,sayi2) { float toplam; toplam = sayi1 + sayi2; return toplam; }
Yukardaki gibi bir parametre listesi tanmlamaya alrsak hata mesaj alrz. Her bir parametreyi virglle ayrarak tek tek tanmlamamz gerekir.
static float Topla(int sayi1, int sayi2) { float toplam; toplam = sayi1 + sayi2; return toplam; }
12
Parametre-listesinde tanmlanan deikenlerin isimleri, metot ierisinde tanmlanacak baka bir deikende tekrar kullanlamaz.
static float Topla(int sayi1, int sayi2) { float toplam; int sayi1,sayi2; toplam = sayi1 + sayi2; return toplam; }
Yukardaki gibi bir parametre listesinde tanmlanm sayi1 ve sayi2 deiken isimlerini, metot ierisinde tekrardan her ne veri trnde olursa olsun yeniden kullanamayz. Bir metot ierisinde baka bir metot tanmlanamaz. Ancak baka bir metot arlabilir.
Yukardaki kullanm hatal bir kullanmdr. Metot ierisinde metot tanmlamas yaplamaz. Ancak aadaki rnek gibi metot ierisinden baka bir metot arlabilir.
static void MerhabaDunyaYazdir() { Console.Write("Merhaba Dnya"); } static void Yazdir() { MerhabaDunyaYazdir(); }
Yazdir isimli metot ierisinden MerhabaDunyaYazdir isimli metodu yukardaki gibi arabiliriz. Metotlarn ierisinde tanmlanan tm deikenler metot dnda kullanlamazlar, geersiz olurlar.
static float Topla(int sayi1, int sayi2) { int toplam; toplam = sayi1 + sayi2; return toplam; }
13
static void Main(string[] args) { int s1, s2; s1 = 43; s2 = 16; toplam = Topla(s1, s2); Console.WriteLine("Sonu: "+toplam); }
Yukardaki kodlar incelendiinde; Topla isimli metot ierisinde tanmlanan float trndeki toplam isimli deikene metot dnda tekrar eriilmek istenirse hata mesaj alrz.
Hemen hemen btn bilgisayar programlama kitaplarnda yinelenen metotlarla ilgili klasik olarak bir saynn faktriyelini hesaplayan programlara yer verilir. Bizlerde bu gelenei bozmayalm ve bir nceki rnekteki mantkla klavyeden girilen bir saynn faktriyelini hesaplayan zyineli bir metot hazrlayalm. rnek 0-8: Klavyeden girilen saynn faktriyelini hesaplayan programn kodunu yaznz.
14
Faktoriyel( ) isimli metot incelendiinde; return anahtar kelimesiyle birlikte Faktoriyel( ) metodu parametre (n) deeri 1 azaltlarak tekrar tekrar arlyor. Ne zaman ki parametre (n) deeri 0a eriti, o zaman metot ierisinden klyor.
static void Main(string[] args) { tekrar: Console.Write("Bir say giriniz: "); int sayi= Convert.ToInt32(Console.ReadLine()); if (sayi < 0) { Console.WriteLine("Negatif Saylarn Faktriyeli Hesaplanmaz..."); goto tekrar; } else { double sonuc = Faktoriyel(sayi); Console.WriteLine("{0}! = {1}", sayi, sonuc); } }
Yinelenen metotlar bir bakma i ie geen bir radyo anteni veya teleskop gibi kimi zaman uzayp, kimi zaman ksalabildiini dnebiliriz.
15
Burada dikkat ederseniz Main( ) metodunun geri dn deeri void yerine int trne sahiptir. Bu int trndeki deer genellikle programn nasl sonlandrld bilgisini iletim sistemine gndermeye yarar. Eer dn deeri; Sfr (0) ise program normal bir ekilde sonlandrlm, Sfrdan farkl ise programn bir hata sebebiyle sonlandrlm,
olduunu belirtir. Main( ) metodunun geri dn deerinin olmasnn yannda, baz durumlarda da parametre almas mmkndr. Programlarn komut satrndan aldklar parametrelere argman ad verilir. Programlar komut satrndan altrldnda, program isminden sonra gelen bilgiler o programn argmanlardr. rnein aadaki resimde metotlar.exe isimli program, komut satrndan arlrken, program isminden sonra bir takm argmanlar eklenmi ve bunlar Main( ) metodu ierisinde srayla ekrana yazdrlm. Komut satr:
D:\...........\bin\Debug\metotlar.exe bir iki drt be
Yukardaki gibi Main( ) metodunun argmanlarnn listelenmesi iin aadaki gibi bir kod yazmak yeterli olacaktr;
static void Main(string[] args) { int i=0; foreach (string a in args) { Console.WriteLine(i + ". argman: " + a); i++; } }
16
rnek 0-9: Komut satrn kullanarak iki saynn toplamn bulan program yaznz.
static int Main(string[] args) { int argumanAdedi = args.Length; if (argumanAdedi == 0 || argumanAdedi == 1 ) { Console.WriteLine("Eksik Parametre Girildi"); return 1; } if (argumanAdedi > 2) { Console.WriteLine("Fazla Parametre Girildi"); return 1; } int sayi1 =Convert.ToInt32(args[0]); int sayi2 =Convert.ToInt32(args[1]); int sonuc = sayi1 + sayi2; Console.WriteLine("Girilen saylarn toplam: "+sonuc); return 0; }
Satr ile Main( ) metodu tanmlanyor. Bu metoda string trnde bir dizi (args) parametre olarak gnderiliyor.
int argumanAdedi = args.Length;
ve
if (argumanAdedi > 2)
Programmzla 2 adet saynn toplamn bulacamz iin argman saysnn 2den az m yoksa ok mu olduunu kontrol etmemiz gerekiyor. Eer yukardaki kontrollerde argman says 2den az veya ok ise return 1; ile iletim sistemine yeterli argman girilmediini bildiren hata mesajlar gnderiliyor. Eer girilen argman says 2 ise aadaki satrlar altrlr ve gerekli ilemler gerekletirilir.
17
int sayi1 =Convert.ToInt32(args[0]);//1. argman int sayi2 =Convert.ToInt32(args[1]);//2. argman int sonuc = sayi1 + sayi2; Console.WriteLine("Girilen saylarn toplam: "+sonuc); return 0; //Hatasz bir ekilde sonlandrldn belirtir
Metotlar.exe isimli programmz komut satrndan altrldnda; Hi parametre girilmezse veya sadece 1 parametre girilirse Eksik Parametre Girildi mesajyla karlarz. 3 veya daha fazla sayda parametre girilirse Fazla Sayda Parametre Girildi mesajyla karlarz. 2 parametre girii gerekletirirsek, programmz girilen bu iki saynn toplamn ekranmza yazdrr.
rnek 0-10: Klavyeden komut satrna girilen metni ifreleyen ve ifreyi zen program yaznz.
static int Main(string[] args) { int argumanAdedi = args.Length; if (argumanAdedi == 0 || argumanAdedi == 1) { Console.WriteLine("Eksik Parametre Girildi"); return 1; } if (argumanAdedi > 2) { Console.WriteLine("Fazla Parametre Girildi"); return 1; } string anahtarKelime = args[0]; string kelime= args[1]; for (int i = 0; i < kelime.Length; i++) { if (anahtarKelime == "sifrele") Console.Write((char)(kelime[i] + 1)); else if (anahtarKelime == "sifreCoz")
18
ifreleme ilemi olarak yaptmz ey; klavyeden girilen metin ierisindeki harfleri tek tek ele alp, o harfi, kendinden bir sonra gelen harfe dntrmektir. ifre zme ilemi ile de ifrelenmi kelimenin harflerini geri eski hallerine getirmek, yani ilgili harften bir nceki harfe dntrmektir. Yukardaki kodlar altrdmzda aadaki gibi bir ekran grnts alrz.
Programda ilk olarak, sifrele parametresiyle birlikte tevfik kelimesi gnderdik sonu olarak ufwgjl kelimesini bize geri dndrd. Daha sonra sifreCoz parametresi ile ufwgjl kelimesini gnderdiimizde, geri tevfik kelimesini dndrd. Sizler de program vastasyla ifreleme algoritmasnn zerinde deiiklik yaparak, kendi kelimelerinizi ifreleyebilir, daha sonra da zebilirsiniz.
19
neriler
Bir saynn 2ye blmnden kalan sfr(0) ise say ifttir. Mod alma (%) ilemi kullannz. ifreleme ilemi, kelimedeki harflerin alfabeye gre 1 telenmesi ile ifre zme ilemi de kelimedeki harflerin alfabeye gre 1 geri alnmasyla Gerekletirilecektir. rnein: A harfi ifrelendiinde B harfi olacaktr. Metoda uzun kenar ve ksa kenar olmak zere 2 parametre gnderilecektir. Metottan geriye dikdrtgenin alan deeri dndrlecektir. Uzun kenarnn karesi, ksa kenarlarnn karelerinin toplamna eit olan genler dik genlerdir. Fibonacci say dizisi: kendisi ve kendisinden nce gelen saynn toplamnn kendisinden sonra gelen sayya eit olduu saylar dizisidir. 0-1-1-2-3-5-8-13
Fibonacci(n)= Fibonacci(n-1)+ Fibonacci(n-2)
Parametre olarak gnderilen gn saysnn ka yl, ka ay, ka gn olduunu hesaplayan metodu yaznz. Erkeklerin 25 yl, kadnlarn da 20 yl altktan sonra emekli olaca varsayldnda, klavyeden girilen cinsiyet ve sigorta prim gn saysna gre kiinin emekliliine ne kadar sresi kaldn bulan metodunu yaznz.
1 yl = 360 gn 1 ay = 30 gn Baz alnacaktr. rnek: 1943 gn = 5 yl 4 ay 23 gn Bir nceki rnekteki metoda cinsiyet parametresini de ekleyerek, buna gre sonucu ekrana yazdrnz. rnein: Erkek ve 6643 gn parametreleri girildiinde Emekliliinize 6 yl 6 ay 17 gn kald eklinde sonu dndrecek.
20
20.
DEERLENDRME Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise bir sonraki renme faaliyetine geiniz.
21
ARATIRMA
Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrma faaliyetlerini yapmalsnz String deiken trleri nasl tanmlanr? Aratrnz. Saylarla kullanabildiimiz deiken trleri aratrnz. Tarih/Zaman ifadeleri ile birlikte kullandmz deiken trlerini aratrnz.
2. HAZIR METOTLAR
Programlama dili ktphaneleri ierisinde nceden tanmlanm ve programclarn ilerini kolaylatran bir takm hazr metotlar vardr. Bu modlmz ierisinde metinsel (String), matematiksel, tarih ve zaman ilemlerinde ska kullanacamz metotlarn inceleyeceiz.
22
2.1.1. Compare( )
Parametre olarak verilen iki string ifadeyi karlatrr ve geriye int trnde bir veri dndrr. Eer dn deeri sfr (0) ise iki metin birbirine eittir. Aksi takdirde parametre olarak verilen metinleri ilk harflerinden itibaren tek tek karlatrr ve farklln olduu ilk harflerin alfabedeki sralarna gre -1 veya 1 say deerlerini dndrr. Kullanm:
int donusDegeri=String.Compare(metin1,metin2);
Aadaki tabloda metinlerin karlatrma durumlar ve geri dn deerleri verilmektedir; Durum metin1>metin2 metin1=metin2 metin1<metin2 Dn Deeri 1 0 -1
Burada metinlerin byktr/kktr karlatrmalar, harflerin alfabetik srasyla ilgilidir. rnek 0-1: Klavyeden girilen iki metnin karlatrlmasn yapan programn kodlarn yaznz.
Console.Write("1. metni giriniz: "); string metin1 = Console.ReadLine(); Console.Write("2. metni giriniz: "); string metin2 = Console.ReadLine(); int donusDegeri = String.Compare(metin1, metin2); switch (donusDegeri) { case -1: Console.WriteLine("{0} ve {1} kelimeleri birbirinden farkldr. \nGeri Dn deeri: {2}",metin1,metin2,donusDegeri); break; case 0: Console.WriteLine("{0} ve {1} kelimeleri birbirinin aynsdr. \nGeri Dn deeri: {2}", metin1, metin2, donusDegeri); break; case 1: Console.WriteLine("{0} ve {1} kelimeleri birbirinden farkldr. \nGeri Dn deeri: {2}", metin1, metin2, donusDegeri); break; }
23
Yukardaki program altrdktan sonra aadaki tabloda verilen deerleri tek tek deneyerek String.Compare( ) metoduyla geri dnen deerleri, tabloda bo braklan alanlara yaznz. Girilecek Deerler metin1 metin2 Tavanl tavanl Tavanl Tavsanl Tavanl Tavanl Tavanl Davanl Tavanl Tavanl Geri Dn Deeri
Eer metin karlatrmalarnda byk/kk harfe dikkat edilsin istemiyorsak Compare( ) metodunun bir baka kullanm olan Compare(metin1,metin2,boolean) formunu kullanmamz gerekir. Kullanm:
bool buyukKucuk=true; int donusDegeri=String.Compare(metin1,metin2,buyukKucuk);
Burada bool trndeki deikenin deeri true ise Compare( ) metodu byk/kk harfe bakmaszn iki kelimeyi karlatrr. Eer false deeri gnderilirse, bu durumda karlatrma ilemini byk/kk harfe biimde gerekletirir. rnek 0-2: Tavanl ve tavanl metinlerini byk/kk harf duyarl olarak ve byk/kk harf duyarsz olarak iki ekilde karlatrlmasn yapan programn kodlarn yaznz.
string metin1="MOYMUL"; string metin2="moymul"; // Byk/Kk harf duyarsz bool duyarlilik=true; int donusDegeri = String.Compare(metin1, metin2,duyarlilik); Console.WriteLine("duyarlilik=true olduunda dn deeri: " + donusDegeri); // Byk/Kk harf duyarl duyarlilik=false; donusDegeri = String.Compare(metin1, metin2,duyarlilik); Console.WriteLine("duyarlilik=false olduunda dn deeri: " + donusDegeri);
Yukardaki program altrldnda aadaki gibi bir ekran kts elde ederiz.
24
2.1.2. Concat( )
Parametre olarak verilen nesneleri string trnde birbirine peisra ekler ve geriye string trnde bir deer dndren String metodudur. Kullanm:
string donenMetin=String.Concat(parametre-listesi);
rnek 0-3: Klavyeden girilen iki metni birletiren programn kodlarn yaznz.
Console.Write("1. metni giriniz: "); string metin1 = Console.ReadLine(); Console.Write("2. metni giriniz: "); string metin2 = Console.ReadLine(); string birlestirilen = String.Concat(metin1, metin2); Console.WriteLine("{0} ve {1} kelimelerinin birletirilmi hali: {2}",metin1,metin2,birlestirilen);
Yukardaki kodlar altrldnda ve metin1 olarak Linyit, metin2 olarak da spor kelimeleri girildiinde birletirilen kelime Linyitspor olarak karmza kacaktr. String.Concat( ) ile farkl trlerdeki verileri de birletirme ansmz vardr. Aadaki rnekte hem metin, hem say, hem de boolean trndeki verileri birletirip, geriye string trnde bir veri elde etme ilemini inceleyeceiz. rnek 0-4: Metin, say ve boolean trnde verilerin birletirilmesini salayan programn kodlarn yaznz.
string metin = "Ktahya"; int sayi = 43; bool durum = false; string birlestirilen = String.Concat(metin, sayi, durum); Console.WriteLine("{0} ve {1} {2}nin birletirilmi hali: {3}", metin, sayi,durum,birlestirilen);
25
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran kts karmza kar;
2.1.3. Copy( )
Parametre olarak verilen string trndeki metnin bir kopyasn almaya yarayan String metodudur. Kullanm:
string kopyaMetin=String.Copy(metin);
Yukarda kod paras altrldnda aadaki gibi bir ekran kts ile karlarz.
1.2.4. Format( )
Programlama esnasnda baz ifadeleri belirli bir biim ierisinde yazmamz istenirse String.Format( ) metodu kullanlr. Bu metot geriye string trnde bir veri dndrr. rnein metinsel ifadelerin belirli bir biim ierisinde ekranda yazlmasn istiyorsak;
26
Yukardaki resmi incelediimizde String.Format( ) metodunun kullanmnda, kme parantezleri ( { } ) ierisindeki ilk deer, degisken isimli deiken ierisindeki deeri referans gstermektedir. kinci deer ise deikenin ieriinin, ekranda ka karakterlik alan kaplayacan (rn: Bu deer 5 ise ekranda 6 karakterlik, -7 ise 8 karakterlik yer kaplar) belirtir. Bu deerin pozitif olmas, deiken deerinin ayrlan alannn sana hizal olacan, negatif olmas ise soluna hizal olacan belirler. rnek 0-6: Sra No, Adnz, Soyadnz eklinde balklar olan ve ierii dolu olan bir tablo hazrlayp, ekrana yazdrnz.
Console.WriteLine("-------------------------------"); Console.WriteLine("Sra No | Adnz | Soyad"); Console.WriteLine("-------------------------------"); Console.WriteLine(String.Format("{0,7} | {1,-8} | {2,10}", 1, "Remzi", "ERTRK")); Console.WriteLine(String.Format("{0,7} | {1,-8} | {2,10}", 2, "Tevfik", "ULU")); Console.WriteLine(String.Format("{0,7} | {1,-8} | {2,10}", 3, "Ycel", "CAN")); Console.WriteLine("-------------------------------");
Yukardaki kodlar altrdmzda aadaki gibi bir ekran kts ile karlarz.
rnein int trndeki saysal ifadelerin belirli bir biim ierisinde ekranda yazlmasn istiyorsak;
// "00015"
String.Format("{0:00000}", 15);
ifadesiyle 15 says ekrana bana 3 adet 0 eklenerek toplamda 5 karakter olarak yazlr.
27
String.Format("{0:00000}", -15);
// "-00015"
ifadesiyle -15 says ekrana bana 3 adet 0 eklenerek toplamda 5 karakter olarak yazlr.
String.Format("{0,5}", 15); // " 15"
ifadesiyle 15 says ekrana bana 3 adet boluk eklenerek toplamda 5 karakterlik bir alana saa hizal olarak yazlr.
String.Format("{0,-5}", 15); // "15 "
ifadesiyle 15 says ekrana bana 3 adet boluk eklenerek toplamda 5 karakterlik bir alana sola hizal olarak yazlr.
String.Format("{0,5:000}", 15); // " 015"
ifadesiyle 15 says ekrana bana bir adet 0 ve iki adet boluk eklenerek toplamda 5 karakterlik bir alana saa hizal olarak yazlr.
String.Format("{0,-5:000}", 15); // "015 "
ifadesiyle 15 says ekrana bana bir adet 0 ve iki adet boluk eklenerek toplamda 5 karakterlik bir alana sola hizal olarak yazlr. String.Format( ) metodunun sfr ve negatif saylar iin zel formlar vardr. Saylar biimlenirken kullanlan noktal virgl (;) ile format 3 blme ayrrz. Buradaki ilk blm saynn deerini, ikinci blm negatif saylarn biimini, nc blm ise sfrn ekrana nasl yazlacann biimini belirlememize yardmc olur.
String.Format("{0:#;eksi #}", 15); // "15" String.Format("{0:#;eksi #}", -15); // "eksi 15" String.Format("{0:#;eksi #;Sfr}", 0); // "Sfr"
Saylar istee bal biimlendirmek istersek (rnein bir telefon numarasn alan kodu ve telefon numaras ayr ayr yazlsn istiyorsak), biimlendirme ileminde diyez (#) iareti ile formatmz belirleriz;
String.Format("{0:### ## ##}", 1234567); // 123 45 67 String.Format("{0:(#) ###-##-##}", 12345678); //(1) 234-56-78
rnein double trndeki saysal ifadelerin belirli bir biim ierisinde ekranda yazlmasn istiyorsak;
28
Ondalkl saylarda virglden (programlamada nokta) sonra ka basamak grnsn istiyorsak keli parantezler ({ }) ierisindeki biimleme ksmnda noktadan sonra o kadar sfr (0) koymamz gerekir;
String.Format("{0:0.00}", 123.4567); String.Format("{0:0.00}", 123.4); String.Format("{0:0.00}", 123); // "123.46" // "123.40" // "123.00"
Eer ondalkl saynn en fazla ka basamann ekranda kmasn istiyorsak, bu sefer sfr yerine o kadar sayda diyez (#) iareti kullanmamz gerekir;
String.Format("{0:0.##}", 123.4567); String.Format("{0:0.##}", 123.4); String.Format("{0:0.##}", 123); // "123.46" // "123.4" // "123"
Ondalkl saylarda virglden nce ka basamak grntlemek istiyorsak biimlendirme yaparken, noktadan nce ka basamak istiyorsak o kadar sfr (0) kullanmamz gerekir;
String.Format("{0:000.0}", String.Format("{0:000.0}", String.Format("{0:00.00}", String.Format("{0:00.00}", 123.4567); 23.4567); 3.4567); -3.4567); // // // // "123.5" "023.5" "03.46" "-03.46"
0 ile 1 arasndaki ondalkl saylarn gsterimi iki ekilde olur. Birincisinde saynn tam ksm 0 ve noktadan sonra ondalkl ksm gelir (rn: 0.123 eklinde), bir dier gsterim eklinde ise saynn tam ksm yazlmaz sadece nokta ve sonrasndaki ondalkl ksm yazlr (rn: .123 eklinde). te bu durumlardaki saylarn gsterimi ise u ekilde gerekletirilir;
String.Format("{0:0.0}", String.Format("{0:0.#}", String.Format("{0:#.0}", String.Format("{0:#.#}", 0.0); 0.0); 0.0); 0.0); // // // // "0.0" "0" ".0" ""
Btn bu formlarn dnda saylarmz aadaki gibi istediimiz metinler ile birlikte yazmamz da mmkndr;
String.Format("{0:sonu 0.0}", 12.3); String.Format("{0:x0x.yy0yy}", 12.3); // "sonu 12.3" // "x12x.yy3yy"
29
rnein tarih/saat trndeki ifadelerin belirli bir biim ierisinde ekranda yazlmasn istiyorsak;
Tarih/Zaman ifadelerini belirtmek iin nceden belirlenmi baz anahtar harfler vardr. Bunlar; y: Yl,M: Ay, d: Gn, h: 12lik sistemde saat, H: 24lk sistemde saat m: Dakika s: Saniye f: Salise z: Zaman dilimi rnek 0-7: salanr; 14.02.2006 18:05:07.123 zamanna ait deerlerin gsterimleri u ekilde
DateTime dt = new DateTime(2006, 2, 3, 18, 5, 7, 123); Console.WriteLine("Tarih:"+dt); Console.WriteLine("-------------------------"); Console.WriteLine("Yl gsterimleri: "+String.Format("{0:y yy yyy yyyy}", dt)); Console.WriteLine("Ay gsterimleri: " + String.Format("{0:M MM MMM MMMM}", dt)); Console.WriteLine("Gn gsterimleri: " + String.Format("{0:d dd ddd dddd}", dt)); Console.WriteLine("Saat gsterimleri: " + String.Format("{0:h hh H HH}", dt)); Console.WriteLine("Dakika gsterimleri: " + String.Format("{0:m mm}", dt)); Console.WriteLine("Saniye gsterimleri: " + String.Format("{0:s ss}", dt)); Console.WriteLine("Salise gsterimleri: " + String.Format("{0:f ff fff ffff}", dt)); Console.WriteLine("Zaman dilimi gsterimleri: " + String.Format("{0:z zz zzz}", dt));
Yukardaki kodlar altrldnda aadaki gibi bir ekran kts ile karlarz;
Tarih/zaman gsterimlerinin biimlendirilmesinde kullanlan bir dier yol da; daha nceden tanmlanm belirteler ile deerlerin ekrana yazdrlmasdr. Bu deerler aadaki tabloda verilmitir.
30
Gsterim rnei
h:mm M/d/yyy h:mm:ss dddd,MMMM dd, yyyy dddd, MMMM dd, yyyy h:mm dddd, MMMM dd, yyyy h:mm:ss M/d/yyyy h:mm M/d/yyyy h:mm:ss MMMM dd MMMM, yyyy
Ksa zaman gsterimi Ksa tarih gsterimi Uzun zaman gsterimi Uzun tarih gsterimi D ve t nin birleimi D ve Tnin birleimi d ve tnin birleimi d ve Tnin birleimi Ay ve gn gsterimi Yl ve ay gsterimi
rnek 0-8: 14.02.2006 18:05:07.123 zamann yukarda verilen biimlere gre gsterimini tek tek ekrana yazdran programn kodunu yaznz.
DateTime dt = new DateTime(2006, 2, 3, 18, 5, 7, 123); Console.WriteLine("Tarih:" + dt); Console.WriteLine("-------------------------"); Console.WriteLine("Ksa Zaman Gsterimi: " + String.Format("{0:t}", dt)); Console.WriteLine("Ksa Tarih Gsterimi: " + String.Format("{0:d}", dt)); Console.WriteLine("Uzun Zaman Gsterimi: " + String.Format("{0:T}", dt)); Console.WriteLine("Uzun Tarih Gsterimi: " + String.Format("{0:D}", dt)); Console.WriteLine("Uzun Tarih ve Ksa Zaman Birleimi: " + String.Format("{0:f}", dt)); Console.WriteLine("Full Tarih ve Zaman Gsterimi: " + String.Format("{0:F}", dt)); Console.WriteLine("Ksa Tarih ve Ksa Zaman Birleimi: " + String.Format("{0:g}", dt)); Console.WriteLine("Ksa Tarih ve Uzun Zaman Birleimi: " + String.Format("{0:G}", dt)); Console.WriteLine("Ay ve Gn Gsterimi: " + String.Format("{0:m}", dt)); Console.WriteLine("Ay ve Gn Gsterimi: " + String.Format("{0:M}", dt)); Console.WriteLine("Yl ve Ay Gsterimi: " + String.Format("{0:y}", dt)); Console.WriteLine("Yl ve Ay Gsterimi: " + String.Format("{0:Y}", dt));
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran kts ile karlarz;
31
2.1.5. IsNullOrEmpty( )
Parametre olarak verilen string trndeki deikenin ieriinin bo mu olduunu kontrol eden metottur. Eer deikenin ierii bosa geriye bool trnde true deeri dndrr. Eer deikene herhangi bir deer atamas yaplmsa geriye false deerini dndrr. Kullanm:
string metin=""; bool sonuc=String.IsNullOrEmpty(metin);
rnek 0-9: Kullanc ad ve ifre girii yaplan bir giri ekrannda kullanc ad veya ifre bo girilirse uyar veren, bo girilmemise girilen deerleri ekrana yazdran programn kodlarn yaznz.
Console.Write("Kullanc adnz giriniz: "); string kullaniciAdi = Console.ReadLine(); Console.Write("ifrenizi giriniz: "); string sifre = Console.ReadLine(); bool kaBosmu=String.IsNullOrEmpty(kullaniciAdi); bool sfrBosmu=String.IsNullOrEmpty(sifre); if(kaBosmu==true) Console.WriteLine("Kullanc adn bo geemezsiniz."); else Console.WriteLine("Girmi olduunuz kullanc ad:" + kullaniciAdi); if (sfrBosmu == true) Console.WriteLine("ifreyi bo geemezsiniz."); else Console.WriteLine("Girmi olduunuz ifre:" + sifre);
Bu ksmdan sonra anlatlacak olan metinsel metotlar direkt olarak String snf zerinden deil, string deiken zerinden arlacak olan metotlardr.
32
2.1.6. CompareTo ( )
arld string ifade ile parametre olarak verilen string ifadeyi karlatrr ve iki ifade de birbirine eitse geriye int trnde sfr (0) deerini dndrr. Aksi takdirde metinleri ilk harflerinden itibaren tek tek karlatrr ve farklln olduu ilk harflerin alfabedeki sralarna gre -1 veya 1 say deerlerini dndrr. Kullanm ve alma prensibi daha nce grdmz String.Compare( ) metoduyla hemen hemen ayndr. Kullanm:
int donusDegeri=metin1.CompareTo(metin2);
Aadaki tabloda metinlerin karlatrma durumlar ve geri dn deerleri verilmektedir; Durum metin1>metin2 metin1=metin2 metin1<metin2 Dn Deeri 1 0 -1
Daha nceden de belirttiimiz gibi metinlerin byktr/kktr karlatrmalar, harflerin alfabetik srasyla ilgilidir. rnek 0-10: Klavyeden girilen iki metnin karlatrlmasn yapan programn kodlarn yaznz.
Console.Write("1. metni giriniz: "); string metin1 = Console.ReadLine(); Console.Write("2. metni giriniz: "); string metin2 = Console.ReadLine(); int donusDegeri = metin1.CompareTo(metin2); switch (donusDegeri) { case -1: Console.WriteLine("{0} ve {1} kelimeleri birbirinden farkldr. \nGeri Dn deeri: {2}",metin1,metin2,donusDegeri); break; case 0: Console.WriteLine("{0} ve {1} kelimeleri birbirinin aynsdr. \nGeri Dn deeri: {2}", metin1, metin2, donusDegeri); break; case 1: Console.WriteLine("{0} ve {1} kelimeleri birbirinden farkldr. \nGeri Dn deeri: {2}", metin1, metin2, donusDegeri); break; }
33
Yukardaki program altrdktan sonra aadaki tabloda verilen deerleri tek tek deneyerek CompareTo( ) metoduyla geri dnen deerleri, tabloda bo braklan alanlara yaznz. Girilecek Deerler metin1 metin2 Biliim Biliim biliim bilisim BLM BILISIM bLM Biliim Bilisim Bilisim Geri Dn Deeri
Yukarda verilen deerleri istediiniz ekilde deitirerek metodun almasn iyice pekitiriniz.
2.1.7. Contains( )
Birlikte arld metinsel ifade ierisinde parametre olarak verilen char trndeki karakteri veya yine parametre olarak verilen string trndeki metinsel ifadeyi arar ve geriye bool trnde bir deer dndrr. Kullanm: Metinsel ifade ierisinde karakter arama;
char karakter= ''; bool donusDegeri=metin1.CompareTo(karakter);
rnek 0-11: Klavyeden girilen metin ierisinde rakamsal ifade olup olmadn kontrol eden bir metot yazp, kullancy uyaran programn kodlarn yaznz.
static void Main(string[] args) { Console.Write("Kelime giriniz: "); string ifade = Console.ReadLine(); bool sonuc = rakamVarMi(ifade); if (sonuc) Console.WriteLine("Girmi olduunuz metin rakamsal ifadeler ieriyor"); else
34
Console.WriteLine("Girmi olduunuz metin rakamsal ifadeler iermiyor"); } static bool rakamVarMi(string metin) { if (metin.Contains('0')) return true; else if (metin.Contains('1')) return true; else if (metin.Contains('2')) return true; else if (metin.Contains('3')) return true; else if (metin.Contains('4')) return true; else if (metin.Contains('5')) return true; else if (metin.Contains('6')) return true; else if (metin.Contains('7')) return true; else if (metin.Contains('8')) return true; else if (metin.Contains('9')) return true; else return false; }
Yukardaki uygulamay rakamsal ifade ieren ve iermeyen eitli kelime girileriyle deneyip pekitiriniz. rnek 0-12: Klavyeden girilen metin ierisinde, yine klavyeden girilen bir metni arayan programn kodlarn yaznz.
Console.Write("Metin giriniz: "); string ifade = Console.ReadLine(); Console.Write("Aranan metni giriniz: "); string aranan = Console.ReadLine(); if (ifade.Contains(aranan)) Console.WriteLine("({0}) ifadesi ierisinde ({1}) kelimesi mevcuttur.", ifade, aranan); else Console.WriteLine("({0}) ifadesi ierisinde ({1}) kelimesi yoktur.", ifade, aranan);
2.1.8. CopyTo( )
Bu metot kaynakBaslangicIndexi (int trnde), hedefDizisi (char dizisi trnde), hedefBaslangicIndexi (int trnde) ve miktar (int trnde) olmak zere 4 parametre alr.
35
Birlikte arld metinsel ifadenin; - Parametre olarak verilen int trndeki kaynak balang indeksinden itibaren, - Parametre olarak verilen char[] dizisinin ierisine, - Parametre olarak verilen hedef balang indeksinden itibaren, - Parametre olarak verilen sayda karakteri kopyalamaya yarayan metottur. Kullanm:
string metin1= ""; char[] hedefDizisi={,,,,,} ; int kayBasInd, hedBasInd, adet; metin1.CopyTo(kayBasInd,hedefDizisi,hedBasInd,adet);
rnek 0-13: Klavyeden girilen 10 harfli bir metnin ieriini 2.karakterinden balayarak 5 karakterini hedefDizi isimli char trndeki 10 elemanl bir dizinin 3.elemanndan balayarak kopyalaynz. hedefDizi isimli dizinin ieriini kopyalamadan nce ve sonra ekrana yazdrarak deiimi gzlemleyiniz.
Console.Write("Metin giriniz: "); string metin = Console.ReadLine(); int i = 0; char[] hedefDizi={'a','b','c','d','e','f','g','h','i','j'}; Console.WriteLine("Dizinin kopyalamadan nceki ierii"); foreach (char harf in hedefDizi) { Console.WriteLine("hedefDizi[{0}]: {1}", i, harf); i++; } metin.CopyTo(1, hedefDizi, 2, 5); Console.WriteLine("Dizinin kopyalamadan sonraki ierii"); i = 0; foreach (char harf in hedefDizi) { Console.WriteLine("hedefDizi[{0}]: {1}", i, harf); i++; }
Yukardaki kod paras altrldnda ve klavyeden 1234567890 verisi girilerek altrldnda aadaki gibi bir ekran kts ile karlarz;
36
2.1.9. EndsWith( )
Birlikte arld metinsel ifade parametre olarak verilen string trndeki ifade ile bitip bitmediini kontrol eden metottur. Geriye bool trnde bir deer dndrr. Eer metin parametre olarak verilen ifade ile bitiyorsa geriye true deerini dndrr. Eer metin parametre olarak verilen ifade ile bitmiyorsa geriye false deerini dndrr. Kullanm:
metin.EndsWith(ifade);
rnek 0-14: Klavyeden girilen metin sesli harf ile bitip bitmediini kontrol eden ve geriye bool trnde bir deer dndren metot tanmlaynz.
static void Main(string[] args) { Console.Write("Metin giriniz: "); string ifade= Console.ReadLine(); if (bitisSesliMi(ifade)) Console.WriteLine("Klavyeden girilen metin sesli harf ile bitiyor"); else Console.WriteLine("Klavyeden girilen metin sesli harf ile bitmiyor"); } static bool bitisSesliMi(string metin) { if (metin.EndsWith("a")) return true; else if (metin.EndsWith("e"))
37
return true; else if (metin.EndsWith("")) return true; else if (metin.EndsWith("i")) return true; else if (metin.EndsWith("o")) return true; else if (metin.EndsWith("")) return true; else if (metin.EndsWith("u")) return true; else if (metin.EndsWith("")) return true; else return false; }
2.1.10. IndexOf( )
Bu metodun birden fazla kullanm ekli vardr. 2.1.10.1. IndexOf(char) Birlikte arld metinsel ifade ierisinde parametre olarak verilen karakteri arar ve geriye bu karakterin metin ierisinde ilk bulunduu karakter srasn dndrr. Metnin ilk karakterinin indeks numarasnn sfr (0) olduunu unutmaynz. Eer aranan karakter kelime ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan karakterin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.IndexOf(char);
// // // //
-1 9 1 -1
38
2.1.10.2. IndexOf(string) Birlikte arld metinsel ifade ierisinde parametre olarak verilen string ifadeyi arar ve geriye bu ifadenin, metin ierisinde ilk bulunduu karakter srasn dndrr. Eer aranan ifade metin ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan ifadenin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.IndexOf(string);
2.1.10.3. IndexOf(char deger,int baslangic) Birlikte arld metinsel ifade ierisinde, parametre olarak verilen karakteri, yine parametre olarak verilen balang indeksinden balayarak arar ve geriye bu ifadenin, metin ierisinde balang indeksinden sonra ilk bulunduu karakter srasn dndrr. Eer aranan ifade metin ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan ifadenin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.IndexOf(char deger,int baslangic);
39
2.10.1.4. IndexOf(string deger,int baslangic) Birlikte arld metinsel ifade ierisinde, parametre olarak verilen metinsel ifadeyi, yine parametre olarak verilen balang indeksinden balayarak arar ve geriye bu ifadenin, metin ierisinde balang indeksinden sonra ilk bulunduu karakter srasn dndrr. Eer aranan ifade metin ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan ifadenin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.IndexOf(string deger,int baslangic);
Yukardaki kod paras altrldnda aadaki gibi ekran kts ile karlarz;
40
2.1.12. LastIndexOf( )
Bu metodun da IndexOf metotdu gibi birden fazla kullanm ekli vardr. 2.1.12.1. LastIndexOf (char) Birlikte arld metinsel ifade ierisinde parametre olarak verilen karakteri arar ve geriye bu karakterin metin ierisinde son bulunduu karakter srasn dndrr. Metnin ilk karakterinin indeks numarasnn sfr (0) olduunu unutmaynz. Eer aranan karakter kelime ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan karakterin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.LastIndexOf(char);
2.1.12.2. LastIndexOf (string) Birlikte arld metinsel ifade ierisinde parametre olarak verilen string ifadeyi arar ve geriye bu ifadenin, metin ierisinde son bulunduu karakter srasn dndrr. Eer aranan ifade metin ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan ifadenin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.LastIndexOf(string);
41
2.1.12.3. LastIndexOf (char deger,int baslangic) Birlikte arld metinsel ifade ierisinde, parametre olarak verilen karakteri, yine parametre olarak verilen balang indeksinden balayarak arar ve geriye bu ifadenin, metin ierisinde balang indeksinden sonra son bulunduu karakter srasn dndrr. Eer aranan ifade metin ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan ifadenin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.LastIndexOf(char deger,int baslangic);
2.1.12.4. LastIndexOf(string deger,int baslangic) Birlikte arld metinsel ifade ierisinde, parametre olarak verilen metinsel ifadeyi, yine parametre olarak verilen balang indeksinden balayarak arar ve geriye bu ifadenin, metin ierisinde balang indeksinden sonra son bulunduu karakter srasn dndrr. Eer aranan ifade metin ierisinde bulunamazsa geriye -1 deeri dndrr. Bu metot byk/kk harf duyarl olduu iin aranan ifadenin byk/kk olma durumlarna dikkat ediniz. Kullanm:
int indeks=metin.LastIndexOf(string deger,int baslangic);
42
2.1.13. PadLeft ( )
PadLeft metodunun 2 farkl kullanm vardr. 2.1.13.1. PadLeft(int deger) PadLeft( ) metodunun bu kullanmnda, birlikte arld metne parametre olarak verilen deer kadar karakterlik bir alan ayrr ve metni saa hizalanm yeni bir metinsel ifade geriye dndrr. Hizalamann grlebilmesi iin parametre olarak verilen deerin metnin karakter uzunluundan fazla olduundan emin olunuz. Kullanm:
string yeniMetin=metin.PadLeft(int deger);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
2.1.13.2. PadLeft(int deger,char karakter) PadLeft( ) metodunun bu kullanmnda da bir nceki kullanmda olduu gibi birlikte arld metne parametre olarak verilen deer kadar karakterlik bir alan ayrr ve metni saa hizalanm yeni bir metinsel ifade geriye dndrr. Ancak bir nceki kullanmda metin hizalanrken metnin sol taraf boluk karakteriyle dolduruluyordu. Bu kullanmda ise parametre olarak verilen karakter bu doldurma ilemi iin kullanlr.
43
Hizalamann grlebilmesi iin parametre olarak verilen deerin metnin karakter uzunluundan fazla olduundan emin olunuz. Kullanm:
string yeniMetin=metin.PadLeft(int deger,char karakter);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
Yukardaki resimden de grlecei zere hizalama ileminde boluklarn doldurulmas eitlik karakterler ile gerekletirilmitir.
2.1.14. PadRight ( )
PadRight metodunun 2 farkl kullanm vardr. 2.1.14.1. PadRight (int deger) PadRight( ) metodunun bu kullanmnda, birlikte arld metne parametre olarak verilen deer kadar karakterlik bir alan ayrr ve metni sola hizalanm yeni bir metinsel ifade geriye dndrr.
44
PadLeft( ) metodunun kullanmyla tamamen ayn olan bu metot ile metinsel ifade bu kez sola hizal olarak yeni bir metinsel ifade geriye dndrr. Hizalamann grlebilmesi iin parametre olarak verilen deerin metnin karakter uzunluundan fazla olduundan emin olunuz. Kullanm:
string yeniMetin=metin.PadRight(int deger);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
2.1.14.2. PadRight(int deger,char karakter) PadRight( ) metodunun bu kullanmnda da bir nceki kullanmda olduu gibi birlikte arld metne parametre olarak verilen deer kadar karakterlik bir alan ayrr ve metni sola hizalanm yeni bir metinsel ifade geriye dndrr. Ancak bir nceki kullanmda metin hizalanrken metnin sa taraf boluk karakteriyle dolduruluyordu. Bu kullanmda ise parametre olarak verilen karakter bu doldurma ilemi iin kullanlr. Hizalamann grlebilmesi iin parametre olarak verilen deerin metnin karakter uzunluundan fazla olduundan emin olunuz. Kullanm:
string yeniMetin=metin.PadRight(int deger,char karakter);
45
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
Yukardaki resimden de grlecei zere hizalama ileminde boluklarn doldurulmas eitlik karakterler ile gerekletirilmitir.
2.1.15. Remove ( )
Remove metodunun 2 farkl kullanm vardr. 2.1.15.1. Remove (int deger) Birlikte arld metnin, parametre olarak verilen deerinin bulunduu indeks deerinden itibaren sonuna kadar olan ksmn siler. Silinme ileminden arta kalan metni geriye dndrr. Kullanm:
string yeniMetin=metin.Remove(int deger);
46
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
2.1.15.2. Remove (int deger,int adet) Birlikte arld metnin, parametre olarak verilen deerinin bulunduu indeks deerinden itibaren yine parametre olarak verilen adet kadar olan ksmn siler. Silinme ileminden arta kalan metni geriye dndrr. Kullanm:
string yeniMetin=metin.PadRight(int deger,int adet);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
Resim 0-15. Remove(int deger,int adet) Metodu ile Metin Krpma lemi
2.1.16. Replace ( )
Replace metodunun 2 farkl kullanm vardr.
47
2.1.16.1. Replace (char eski, char yeni) Birlikte arld metin ierisinde, ilk parametredeki karakterleri, ikinci parametredeki karakter deerleriyle deitiren metottur. Geriye deitirme ileminin gerekletirildii string trnde bir ifade dndrr. Kullanm:
string yeniMetin=metin.Replace(char eski,char yeni);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
Resim 0-16. Replace(char eski, char yeni) Metodu ile Karakter Deitirme
2.1.16.2. Replace (string eski, string yeni) Replace metodunun bir nceki kullanmndan fark parametre olarak bu kez char trnde karakterler yeni string trnde metinsel ifade almasdr. Kullanm:
string yeniMetin=metin.Replace(string eski, string yeni);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
48
Resim 0-17. Replace(string eski, string yeni) Metodu ile Metin Deitirme
2.1.17. Split ( )
Split( ) metodu, arld metni istenilen karakterden itibaren paralara blmek iin kullanlan bir metottur. Eer istenilen karakter mevcut metin ifadesi ierisinde yer alyorsa, Split( ) metodu metni karakterlerden ncesi ve sonras eklinde paralara ayrr ve bu paralar string trnde bir dizi ierisinde saklar. Geriye de bu string[] trndeki diziyi dndrr. Kullanm:
string[] dizi=metin.Split(char karakter);
Yukardaki kod paras altrldnda aadaki gibi bir ekran grntsyle karlarz;
2.1.18. StartsWith ( )
Birlikte arld metinsel ifade parametre olarak verilen string trndeki ifade ile balayp balamadn kontrol eden metottur. Geriye bool trnde bir deer dndrr. Eer metin parametre olarak verilen ifade ile balyorsa geriye true deerini dndrr. Eer metin parametre olarak verilen ifade ile balamyorsa geriye false deerini dndrr.
49
Kullanm:
metin.StartsWith(ifade);
rnek 0-33: Klavyeden girilen kullanc adnn rakamla balayp balamadn kontrol eden, eer kullanc ad rakam ile balyorsa uyar mesaj veren bir metot tanmlaynz.
static void Main(string[] args) { Console.Write("Kullanc ad belirleyiniz: "); string kAdi= Console.ReadLine(); if (KullaniciAdiKontrol(kAdi)) Console.WriteLine("Kullanc ad tanmnz baarl"); else Console.WriteLine("Kullanc ad say ile balayamaz"); } static bool KullaniciAdiKontrol(string kAdi) { if (kAdi.StartsWith("1")) return false; else if (kAdi.StartsWith("2")) return false; else if (kAdi.StartsWith("3")) return false; else if (kAdi.StartsWith("4")) return false; else if (kAdi.StartsWith("5")) return false; else if (kAdi.StartsWith("6")) return false; else if (kAdi.StartsWith("7")) return false; else if (kAdi.StartsWith("8")) return false; else if (kAdi.StartsWith("9")) return false; else if (kAdi.StartsWith("0")) return false; else return true; }
2.1.19. Substring ( )
Substring( ) metodunun iki kullanm vardr.
50
2.1.19.1. Substring (int indeks) Birlikte arld metni parametre olarak verilen indeks deerinden itibaren keser ve arta kalan metni geriye string trnde dndren metottur. Kullanm:
string yeniMetin=metin.Substring(int indeks);
2.1.19.2. Substring (int indeks, int uzunluk) Substring metodunun bu kullanmnda ise ilk parametre indeks deerini, ikinci parametre ise ka karakter uzunluunda bir metnin kesileceini belirtir. Kullanm:
string yeniMetin=metin.Substring(int indeks,int uzunluk);
2.1.20. ToLower ( )
Birlikte arld metninin tm karakterlerini kk harfe dntrerek yeni bir metin geriye dndrr. Kullanm:
string yeniMetin=metin.ToLower();
51
2.1.21. ToUpper ( )
ToLower( ) metodunun tam tersi eklinde alr ve birlikte arld metninin tm karakterlerini byk harfe dntrerek yeni bir metin geriye dndrr. Kullanm:
string yeniMetin=metin.ToUpper();
2.2.1. Abs( )
Abs( ) metodu parametre olarak verilen saynn mutlak deerini veren metottur. Parametre olarak farkl say trlerinde deerler alabilir ve ald deerin trnde bir deer geri dndrr. Kullanm:
int mutlakDeger=Math.Abs(int sayi); decimal mutlakDeger=Math.Abs(decimal sayi); double mutlakDeger=Math.Abs(double sayi); float mutlakDeger=Math.Abs(float sayi); long mutlakDeger=Math.Abs(long sayi); short mutlakDeger=Math.Abs(short sayi); sbyte mutlakDeger=Math.Abs(sbyte sayi);
52
rnek 0-38: | x - 2| + 2 + |2 + x| ifadesinin sonucunu xin 0dan 10a kadar olan deerleri iin tek tek ekrana yazdran programn kodunu yaznz.
int sonuc=0; for (int x = 0; x <= 10; x++) { sonuc = Math.Abs(x - 2) + 2 + Math.Abs(2 + x); Console.WriteLine("x: {0} iin sonu: {1}",x,sonuc); }
Yukardaki kod paras altrldnda aadaki gibi bir ekran kts ile karlarz;
2.2.2. BigMul( )
Parametre olarak verilen iki int trndeki saynn arpmn long trnde veren metottur. Kullanm:
long sonuc=Math.BigMul(int a, int b);
2.2.3. Ceiling( )
Parametre olarak verilen double trndeki ondalkl saydan byk, en kk tam saynn deerini veren metottur. Kullanm:
decimal sonuc=Math.Ceiling(decimal sayi1); double sonuc2=Math.Ceiling(double sayi2);
53
2.2.4. DivRem( )
Parametre olarak verilen ilk iki saynn blme ilemini yapar ve geriye blme ileminin sonucunu dndren ve 3. parametre olarak verilen deikene de blme ileminin kalann aktaran metottur. Kullanm:
int bolum=Math.DivRem(int bolunen, int bolen,out int kalan); long bolum=Math.DivRem(long bolunen,long bolen,out long kalan);
Yukardaki kod paras altrldnda aadaki gibi bir ekran kts ile karlarz;
2.2.5. Max( )
Parametre olarak verilen iki saydan byk olan geriye dndren metottur. Btn say trleri tarafndan desteklenen bir metot eididir.
54
Kullanm:
byte maksimum=Math.Max(byte sayi1,byte sayi2); decimal maksimum=Math.Max(decimal sayi1,decimal sayi2); double maksimum=Math.Max(double sayi1,double sayi2); float maksimum=Math.Max(float sayi1,float sayi2); int maksimum=Math.Max(int sayi1,int sayi2); long maksimum=Math.Max(long sayi1,long sayi2); sbyte maksimum=Math.Max(sbyte sayi1,sbyte sayi2); short maksimum=Math.Max(short sayi1,short sayi2); unit maksimum=Math.Max(unit sayi1,unit sayi2); ulong maksimum=Math.Max(ulong sayi1,ulong sayi2); ushort maksimum=Math.Max(ushort sayi1,ushort sayi2);
rnek 0-42: Math.Max( ) metodu ile klavyeden girilen saylardan byn bulma
Console.Write("1. sayy giriniz:"); int sayi1 = Convert.ToInt32(Console.ReadLine()); Console.Write("2. sayy giriniz:"); int sayi2 = Convert.ToInt32(Console.ReadLine()); int maksimum = Math.Max(sayi1, sayi2); Console.WriteLine("{0} ve {1} saylarndan en by {2} saysdr.", sayi1, sayi2, maksimum);
Yukardaki kod paras altrldnda aadaki gibi bir ekran kts ile karlarz;
2.2.6. Min( )
Parametre olarak verilen iki saydan kk olan geriye dndren metottur. Btn say trleri tarafndan desteklenen bir metot eididir. Kullanm:
byte minimum=Math.Min(byte sayi1,byte sayi2); decimal minimum=Math.Min(decimal sayi1,decimal sayi2); double minimum=Math.Min(double sayi1,double sayi2); float minimum=Math.Min(float sayi1,float sayi2); int minimum=Math.Min(int sayi1,int sayi2); long minimum=Math.Min(long sayi1,long sayi2); sbyte minimum=Math.Min(sbyte sayi1,sbyte sayi2); short minimum=Math.Min(short sayi1,short sayi2); unit minimum=Math.Min(unit sayi1,unit sayi2); ulong minimum=Math.Min(ulong sayi1,ulong sayi2); ushort minimum=Math.Min(ushort sayi1,ushort sayi2);
55
Yukardaki kod paras altrldnda aadaki gibi bir ekran kts ile karlarz;
2.2.7. Pow( )
Parametre olarak verilen ilk saynn, yine parametre olarak verilen ikinci say kadar ssn hesaplayan metottur. Kullanm:
double usluSayi=Math.Pow(double x, double y);
2.2.8. Round( )
Parametre olarak verilen sayy en yakn tam sayya yuvarlayan metottur. Kullanm:
double yuvarlanmis=Math.Round(double sayi);
56
2.2.9. Sign( )
Parametre olarak verilen saynn iaretini verir. Say pozitif ise 1, negatif ise -1, say sfra eitse de geriye 0 deerini dndren metottur. Kullanm:
int isaret=Math.Sign(int sayi);
2.2.10. Sqrt( )
Parametre olarak verilen double trndeki saynn karekk deerini double trnde geriye dndren metottur. Kullanm:
double karekok=Math.Sqrt(double sayi);
rnek 0-47: Klavyeden 2 kenar uzunluu girilen dik genin hipotensnn uzunluunu hesaplayan programn kodunu yaznz.
Console.Write("1. kenar uzunluunu giriniz: "); double kenar1= Convert.ToDouble(Console.ReadLine()); Console.Write("2. kenar uzunluunu giriniz: "); double kenar2 = Convert.ToDouble(Console.ReadLine()); double kenarlarinKareToplami = Math.Pow(kenar1, 2) + Math.Pow(kenar2, 2); double kenar3= Math.Sqrt(kenarlarinKareToplami); Console.WriteLine("Hipotensn uzunluu: "+kenar3);
57
Dilerseniz trigonometrik metotlara gemeden nce verilen derece cinsinden verilen a deerini radyana dntren ve radyan deeri verilen ann derece cinsinden deerini veren basit metotlar yazalm ve bundan sonraki rneklerimizde bu metottan faydalanalm. rnek 0-48: Derece cinsinden a deerini radyan cinsinden a deerine dntren metodun yazm;
static double radyanaDonustur(double derece) { double radyan = 0; double piSayisi = Math.PI; radyan = piSayisi * (derece / 180); return radyan; }
Yukardaki ekilde yazdmz metodu aadaki gibi ararak programlarmz ierisinde kullanabiliriz.
double radyanDegeri=radyanaDonustur(double aci)
rnek 0-49: Radyan cinsinden verilen a deerini derece cinsinden a deerine dntren metodun yazm;
static double aciyaDonustur(double radyan) { double derece = 0; double piSayisi = Math.PI; derece = (radyan / piSayisi) * 180; return derece; }
Yukardaki ekilde yazdmz metodu aadaki gibi ararak programlarmz ierisinde kullanabiliriz.
double dereceDegeri=aciyaDonustur(double radyan)
Matematiksel metotlarn ierisinde yer alan ve trigonometrik ilemlerde ska kullandmz dier metotlar ise unlardr;
58
2.2.11. Cos( )
Parametre olarak verilen radyan a deerinin kosins deerini veren metottur. Kullanm:
double kosinus=Math.Cos(double aci);
rnek 0-50: 0-180 aras 15 ve katlarnn kosins deerini ekrana yazdran programn kodlarn yaznz.
for (double aci = 0; aci <= 180; aci = aci + 15) { double radyanDegeri = radyanaDonustur(aci); double kosinus = Math.Cos(radyanDegeri); Console.WriteLine("{0} asnn kosins deeri: {1:0.00}", aci, kosinus); }
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
2.2.12. Sin( )
Parametre olarak verilen radyan a deerinin sins deerini veren metottur. Kullanm:
double sinus=Math.Sin(double aci);
rnek 0-51: 0-180 aras 15 ve katlarnn sins deerini ekrana yazdran programn kodlarn yaznz.
for (double aci = 0; aci <= 180; aci = aci + 15) { double radyanDegeri = radyanaDonustur(aci); double sinus = Math.Sin(radyanDegeri); Console.WriteLine("{0} asnn sins deeri: {1:0.00}", aci, sinus); }
59
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
2.2.13. Tan( )
Parametre olarak verilen radyan a deerinin tanjant deerini veren metottur. Kullanm:
double tanjant=Math.Sin(double aci);
rnek 0-52: 0-180 aras 15 ve katlarnn tanjant deerini ekrana yazdran programn kodlarn yaznz.
for (double aci = 0; aci <= 180; aci = aci + 15) { double radyanDegeri = radyanaDonustur(aci); double tanjant = Math.Tan(radyanDegeri); Console.WriteLine("{0} asnn tanjant deeri: {1:0.00}", aci, tanjant); }
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
60
2.2.14. Acos( )
Parametre olarak verilen kosins deerinin radyan a deerini veren metottur. Kullanm:
double kosinusAcisi=Math.Acos(double kosinus);
2.2.15. Asin( )
Parametre olarak verilen sins deerinin radyan a deerini veren metottur. Kullanm:
double sinusAcisi=Math.Asin(double sinus);
2.2.16. Atan( )
Parametre olarak verilen tanjant deerinin radyan a deerini veren metottur. Kullanm:
double tanjantAcisi=Math.Atan(double tanjant);
Tarih / Zaman metotlarnn ayrntlarn incelemeden nce DateTime snf altnda yeralan ve ska kullanacamz yeleri tanyalm.
2.3.1. MinValue
Bu zellik ile DateTime yaps ile kullanabileceimiz en kk tarih-saat bilgisine eriebiliriz.
61
Kullanm:
DateTime enKucuk=DateTime.MinValue;
Bu sabit zellik arldnda geriye veri tr DateTime olan 01.01.0001 00:00:00 deerini dndrr. Bu deer deitirilemeyen Salt Okunur bir veridir.
2.3.2. MaxValue
Bu zellik ile DateTime yaps ile kullanabileceimiz en byk tarih-saat bilgisine eriebiliriz. Kullanm:
DateTime enBuyuk=DateTime.MaxValue;
Bu sabit zellik arldnda geriye veri tr DateTime olan 31.12.9999 23:59:59 deerini dndrr. Bu deer de ayn MinValue gibi deitirilemeyen Salt Okunur bir veridir. rnek 0-53: DateTime snf ile kullanlabilen en byk ve en kk tarihlerin ekrana yazdrnz;
DateTime enKucuk=DateTime.MinValue; DateTime enBuyuk=DateTime.MaxValue; Console.WriteLine("En byk tarih deeri:{0} ", enBuyuk); Console.WriteLine("En kk tarih deeri:{0} ", enKucuk);
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
2.3.3. Today
Bu zellik ile DateTime yaps ile birlikte kullanlr ve bugnn tarihini bize DateTime trnde geri dndrr. Kullanm:
DateTime bugun=DateTime.Today;
62
2.3.4. Now
Bu zellik de DateTime yaps ile birlikte kullanlr ve arld andaki hem tarih hem de saat bilgisini bize DateTime trnde geri dndrr. Kullanm:
DateTime simdi=DateTime.Now;
rnek 0-54: DateTime snf ile kullanlabilen Now ve Today zelliklerinin kullanm
DateTime bugun=DateTime.Today; DateTime simdi=DateTime.Now; Console.WriteLine("Bugn :{0} ", bugun); Console.WriteLine("uan :{0} ", simdi);
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
DateTime snfndan tretilmi bir nesne ile alrken ska kullanacamz zellikler aadaki tabloda aklamalaryla birlikte verilmitir; zellik Ad Date Month Day Year DayOfWeek DayOfYear TimeOfDay Hour Minute Second Millisecond Aklama Nesneye ilikin saat dndaki bilgiyi verir. Nesnenin ay bilgisini verir. Nesnenin gn bilgisini verir. Nesnenin yl bilgisini verir. Haftann gn, Nesnenin haftann kanc gn olduu bilgisini verir. Nesnenin yln kanc gn olduu bilgisini verir. Nesneye ait saat bilgisini verir. Nesnenin saat bilgisini verir. Nesnenin dakika bilgisini verir. Nesnenin saniye bilgisini verir. Nesnenin milisaniye bilgisini verir. Geri Dn Tr DateTime int int int DayOfWeek int TimeSpan int int int int
63
rnek 0-55: DateTime snf ile kullanlabilen zelliklerin kullanm ve ekrana yazdrlmas
DateTime zaman = DateTime.Now; DateTime tarih = zaman.Date; int ay=zaman.Month; int gun=zaman.Day; int yil=zaman.Year; DayOfWeek haftaninGunu=zaman.DayOfWeek; int yilinKacinciGunu=zaman.DayOfYear; TimeSpan sure=zaman.TimeOfDay; int saat=zaman.Hour; int dakika=zaman.Minute; int saniye=zaman.Second; int salise = zaman.Millisecond; Console.WriteLine("uandaki Zaman Console.WriteLine("Tarih Bilgisi Console.WriteLine("Ay Bilgisi Console.WriteLine("Gn Bilgisi Console.WriteLine("Yl Bilgisi Console.WriteLine("Haftann Gn Console.WriteLine("Yln Kanc Gn yilinKacinciGunu); Console.WriteLine("Sre Console.WriteLine("Saat Console.WriteLine("Dakika Console.WriteLine("Saniye Console.WriteLine("Salise : : : : : : : : : : : : {0}", {0}", {0}", {0}", {0}", {0}", {0}", {0}", {0}", {0}", {0}", {0}", zaman); tarih); ay); gun); yil); haftaninGunu);
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
DateTime Snfndan tretilen nesnelerle birlikte kullanlan zelliklerden sonra imdi de DateTime snf altnda yer alan metotlarmza gz atalm.
64
2.3.5. DateTime.Compare( )
Bu metot ile DateTime trnde parametre olarak verilen iki deer karlatrlr ve geriye int trnde bir deer dndrr. Eer karlatrmada; 1. parametredeki tarih deeri, 2. parametredeki tarih deerinden daha eski bir tarih deeri ise sonu -1, 2. parametredeki tarih deeri, 1. parametredeki tarih deerinden daha eski bir tarih deeri ise sonu 1, 1. parametredeki tarih deeri ile 2. parametredeki tarih deeri birbirine eitse sonu 0,
rnek 0-56: 31/12/1990 tarihinden nce domu kiilerin bavuru yapabildikleri bir snava, klavyeden doum tarihi bilgileri girilen kiinin, snava girip giremeyeceini kontrol eden programn kodlarn yaznz.
DateTime tarih1 = new DateTime(1990, 12, 31); Console.Write("Doum tarihinizi GG/AA/YYYY eklinde giriniz: "); //Klavyeden girilen string trndeki doum tarihi DateTime trne dntrlyor. DateTime dogumTarihi = Convert.ToDateTime(Console.ReadLine()); int sonuc = DateTime.Compare(tarih1,dogumTarihi); if(sonuc==-1) Console.Write("zgnz, snava giremezsiniz..."); else Console.Write("Tebrikler, snava girebilirsiniz...");
2.3.6. DateTime.DaysInMonth( )
Bu metot ile int trnde parametre olarak verilen yl ve ay bilgilerine denk gelen ayn ka gnden olutuunu, geriye int trnde bir deer dndrr. Kullanm:
int gunSayisi=DateTime.Compare(int yil, int ay); int int int int gunSayisi gunSayisi gunSayisi gunSayisi = = = = DateTime.DaysInMonth(2008,2); DateTime.DaysInMonth(2009,8); DateTime.DaysInMonth(2010,4); DateTime.DaysInMonth(2011,2); // // // // 29 31 30 28
65
2.3.7. DateTime.IsLeapYear( )
Bu metot ile int trnde parametre olarak verilen yln, artk yl (ubat aynn 29 gnden, yln toplam 366 gnden olutuu) olup olmadn kontrol eder, geriye bool trnde bir deer dndrr. Eer yl artk ylsa geriye true, deilse false deeri dndrr. Kullanm:
bool artikYilMi=DateTime.IsLeapYear(int yil);
// // // //
2.3.8. DateTime.Parse( )
Bu metot ile string trnde parametre olarak verilen metni DateTime trndeki tarih ve saat bilgisine dntrr. Kullanm:
DateTime tarih=DateTime.Parse(string metin);
66
Yukardaki kod paras altrldnda aadaki gibi bir ekran kts ile karlarz;
Yukardaki rnekte eitli biimlerde metin olarak verilen tarih/saat bilgilerinin nasl sonular verdiini inceleyiniz. Bu ksmdan sonra anlatlacak olan tarih/zaman metotlar direkt olarak DateTime snf zerinden deil, DateTime snfndan tretilmi nesneler zerinden arlacak olan metotlardr. DateTime Snfndan tretilen nesnelerle birlikte kullanlan metotlarda unlardr;
2.3.9. Subtract( )
Bu metot ile DateTime trnde tretilmi bir nesnenin deerinden, parametre olarak verilen DateTime veya TimeSpan trndeki deer kartlr ve geriye TimeSpan trnde bir deer dndrr. Kullanm:
TimeSpan yeniTarih=eskiTarih.Subtract(DateTime cikarilanTarih);
TimeSpan trnde dn yaplan deer zerinden; TotalDays zellii ile toplam gn saysn, TotalHours zellii ile toplam saati, TotalMinutes zellii ile toplam dakikay, TotalSeconds zellii ile toplam saniyeyi TotalMilliseconds zellii ile toplam saliseyi grebiliriz. rnek 0-58: uandaki zamandan doum tarihinizi kartarak ne kadar sredir hayatta olduunuzu hesaplaynz.
DateTime bugun= DateTime.Now; Console.Write("Doum tarihinizi giriniz: "); DateTime dogumTarihiniz = DateTime.Parse(Console.ReadLine()); TimeSpan sure = bugun.Subtract(dogumTarihiniz); Console.WriteLine("Dnya zerinde geleli {0} gn olmu.", sure.TotalDays);
67
zerinde geleli {0} saat olmu.", zerinde geleli {0} dakika olmu.", zerinde geleli {0} saniye olmu.", zerinde geleli {0} salise olmu.",
2.3.10. AddDays( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar gn eklenir ve geriye DateTime trnde bir deer dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double gunSayisi);
2.3.11. AddMonths( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar ay eklenir ve geriye DateTime trnde yeni bir tarih dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double ay);
2.3.12. AddYears( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar yl eklenir ve geriye DateTime trnde yeni bir tarih dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double yil);
2.3.13. AddHours( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar saat eklenir ve geriye DateTime trnde yeni bir tarih dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double saat);
68
2.3.14. AddMinutes( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar dakika eklenir ve geriye DateTime trnde yeni bir tarih dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double dakika);
2.3.15. AddSeconds( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar saniye eklenir ve geriye DateTime trnde yeni bir tarih dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double saniye);
2.3.16. AddMilliseconds( )
Bu metot ile DateTime trnde tretilmi bir nesneye, parametre olarak verilen double trndeki deer kadar saniye eklenir ve geriye DateTime trnde yeni bir tarih dndrr. Kullanm:
DateTime yeniTarih=eskiTarih.AddDays(double saniye);
rnek 0-59: 12/07/2008 20:12:23:33 tarihinden 5 yl, 6 ay, 28 gn, 23 saat, 29 dakika, 33 saniye ve 43 salise sonrasnn tarihi nedir?
DateTime ilkTarih = new DateTime(2008,07,12,20,12,23,33); DateTime bitisTarihi = ilkTarih.AddYears(5); bitisTarihi = bitisTarihi.AddMonths(6); bitisTarihi = bitisTarihi.AddDays(28); bitisTarihi = bitisTarihi.AddHours(23); bitisTarihi = bitisTarihi.AddMinutes(29); bitisTarihi = bitisTarihi.AddSeconds(33); bitisTarihi = bitisTarihi.AddMilliseconds(43); Console.WriteLine("lk tarih: "+ ilkTarih); Console.WriteLine("Son tarih: "+ bitisTarihi);
Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grntsyle karlarz;
69
neriler
rnek 2.6daki gibi String.Format( ) metodundan faydalanabilirsiniz. PadLeft( ) ve PadRight( ) metotlarnn kullanmlarn ve almalarn inceleyiniz. 1den 5e dngnz kurunuz. PadLeft( ) veya PadRight( ) metotlarndan hangisini kullanacanza karar veriniz. fadenize ilgili biimi verdikten sonra ekrana yazdrnz. 4 ekilde de yukardaki admlardan faydalannz.
Yukardaki ekilleri PadLeft, PadRight metotlarn kullanarak ekrana tek tek yazdrnz. Klavyeden girilen metin ierisindeki Trke karakterleri (,,,,,, ,,,,,) srasyla (c,g,i,o,s,u, C,G,I,O,S,U) harfleriyle deitiren metodu yaznz.
eklindeki bir formln a,b ve c deerlerini klavyeden girerek, x deerini hesaplayan programn kodunu yaznz. Doum gn, doum ay, doum yl bilgileri girildikten sonra, bugne kadar geen sreyi ve haftann hangi gnnde doduunu hesaplayan program yaznz
Parametresi ve geri dn deeri string olan yeni bir metot tanmlaynz. Kelime ierisindeki harfleri tek tek kontrol ediniz. Switch-Case yapsn kullanarak Trke karakterleri tespit edip, daha sonra bunlar yeni deerleriyle deitiriniz. Yeni metni string trnde geri gnderiniz. arpma ilemi iin BigMul( ) metodunu, Karekk almak iin Sqrt( ) metodunu, s almak iin Pow( ) metodunu, Mutlak deeri hesaplamak iin Abs( ) metodunu kullannz. Bugnn tarihinden doum tarihini kartnz ve gecen gn saysn hesaplaynz. DayOfWeek metoduyla doduu gn bulunuz.
70
3.
4. 5. 6. 7.
8.
9. 10.
DEERLENDRME Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru Modl Deerlendirmeye geiniz.
71
DEERLENDRME Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise bir sonraki modle gemek iin retmeninize bavurunuz.
72
73
KAYNAKA KAYNAKA
ALGAN Sefer, Her Ynyle C#, Pusula Yaynclk, 1.Bask, stanbul, Trkiye, (2003) SCHILDT Herbert, Herkes in C#, Alfa Yaynevi, 1.Bask, stanbul, Trkiye, (2002) ASLAN KAAN, Adan Zye C Klavuzu, Pusula Yaynclk, 8.Bask, stanbul, Trkiye, (2002) Butow, E., Ryan, T.: Your Visual Blueprint For Building .NET Application MSDN : Introduction to C# Programming for the Microsoft .NET Platform (Prerelease)Workbook Hejlsberg, A., Wiltamuth, S.: C# Language Referance Turtschi, A., Werry J., Hack, G., Albahari, J., Nandu S.: C#.NET Web Developers Guide, Syngress Publishing, Inc., Rockaland, USA (2002) Microsoft: C# Language Specification MSDN Yardm Dokmanlar
74