pt 03 kontrol deyimleri 482bk0124

Upload: mebitefo

Post on 06-Apr-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    1/66

    T.C.

    MLL ETM BAKANLII

    BLM TEKNOLOJLER

    KONTROL DEYMLER482BK0124

    Ankara, 2011

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    2/66

    Bu modl, mesleki ve teknik eitim okul/kurumlarnda uygulanan ereve

    retim Programlarnda yer alan yeterlikleri kazandrmaya ynelik olarakrencilere rehberlik etmek amacyla hazrlanm bireysel renmemateryalidir.

    Mill Eitim Bakanlnca cretsiz olarak verilmitir.

    PARA LE SATILMAZ.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    3/66

    i

    AIKLAMALAR ...........................................................................................................................iiGR ..............................................................................................................................................1RENME FAALYET1 ...........................................................................................................31. KARAR KONTROL DEYMLER ............................................................................................3

    1.1. If-Else Deyimi .....................................................................................................................31.2. -e Iffadesi ....................................................................................................................71.3. Switch-Case Deyimi ..........................................................................................................12UYGULAMA FAALYET .....................................................................................................19LME VE DEERLENDRME ...........................................................................................20

    RENME FAALYET2 .........................................................................................................212. DNG DEYMLER .............................................................................................................21

    2.1. Dng eitleri..................................................................................................................21

    2.1.1. For Dngs...............................................................................................................212.1.2. While Dngs...........................................................................................................262.1.3. DoWhile Dngs..................................................................................................282.1.4. Foreach Dngs .......................................................................................................29

    2.2. Jump (Dallanma Atlama) Komutlar ..............................................................................302.2.1. Break Anahtar Szc..............................................................................................302.2.2. Continue Anahtar Szc.........................................................................................322.2.3. Goto Anahtar Szc ...............................................................................................332.2.4. Return Anahtar Szc ............................................................................................33

    UYGULAMA FAALYET .....................................................................................................34LME VE DEERLENDRME ...........................................................................................35

    RENME FAALYET3 .........................................................................................................363. DZLER ...................................................................................................................................36

    3.1. Dizi Oluturma...................................................................................................................363.2. Diziye Deer Girme...........................................................................................................383.3. Diziyi Yazdrma.................................................................................................................433.4. Baz Dizi zellikleri ve Metotlar .....................................................................................44

    3.4.1. Length ........................................................................................................................443.4.2. Clear(dizi,baslangic,adet)...........................................................................................453.4.3. Reverse(Dizi) .............................................................................................................473.4.4. Sort(Dizi) ...................................................................................................................483.4.5. IndexOf(Dizi,arananDeger)........................................................................................49

    3.5. Dinamik Diziler .................................................................................................................51

    3.5.1. Capacity zellii:.......................................................................................................523.5.2. Count zellii: ...........................................................................................................523.5.3. Add Metodu: ..............................................................................................................523.5.4. Insert Metodu: ............................................................................................................533.5.5. Remove Metodu:........................................................................................................553.5.6. RemoveAt Metodu:....................................................................................................563.5.7. Sort Metodu:...............................................................................................................57

    UYGULAMA FAALYET .....................................................................................................58LME VE DEERLENDRME ...........................................................................................59

    MODL DEERLENDRME .....................................................................................................60CEVAP ANAHTARLARI............................................................................................................61

    KAYNAKA................................................................................................................................62

    NDEKLER

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    4/66

    ii

    KOD 482BK0124ALAN Biliim TeknolojileriDAL/MESLEK Alan OrtakMODLN ADI Kontrol Deyimleri

    MODLN TANIMIBu modl programlama altyapsn oluturan kontroldeyimleri kavramlarnn renildii bir renmemateryalidir.

    SRE 40/32N KOUL Bu modln n koulu yoktur.YETERLK Kontrol deyimlerini kullanmak.

    MODLN AMACI

    Genel Ama

    Bu modl ile gerekli ortam salandnda; temelprogramlama ilemlerinde kontrol deyimlerinikullanabilecektir.Amalar

    1. Karar kontrol deyimlerini kullanabileceksiniz.2. Dng kontrollerini kullanabileceksiniz.3. Dizilerle alabileceksiniz.

    ETM RETMORTAMLARI VEDONANIMLARI

    Ortam: Bilgisayar laboratuarDonanm: Bilgisayar, Programlama Yazlm

    LME VEDEERLENDRME

    Modl iinde yer alan her renme faaliyetinden sonra

    verilen lme aralar ile kendinizi deerlendireceksiniz.retmen modl sonunda lme arac (oktan semelitest, doru-yanl testi, boluk doldurma vb.) kullanarakmodl uygulamalar ile kazandnz bilgi ve becerilerilerek sizi deerlendirecektir.

    AIKLAMALAR

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    5/66

    1

    Sevgili renci,

    Programlama Temelleri dersinin bu modlnde sizler, programlamann temel yaptalarndan Ak Kontrol Deyimleri ile reneceksiniz.

    Programcla ilk admlarnz bu kontrol deyimleriyle gerekletireceksiniz.

    Kontrol deyimleri programlarmzn ileyiinde eitli kontrol ve ak ilemlerinigerekletirmenizi salar.

    Bu modl ile if, switch, for, while, do-while, foreach ve dizi yap larn renip, herkonu sonunda bolca rneklerle konular pekitirmeniz salanacaktr.

    GR

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    6/66

    2

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    7/66

    3

    RENME FAALYET1

    Bu modl ile karar kontrol deyimlerini kullanabilecek ve programlarnzdauygulayabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrma faaliyetleriniyapmalsnz

    Gnlk hayatta bir olayn gereklemesi iin nceden istenilen/beklenilenkoullara verilebilecek rnekleri dnnz.

    Evden dar kmadan nce havann durumuna gre zerimize alacamzkyafetlere nasl karar veririz? Aratrnz.

    Bir kiinin askere gidebilmesi iin gerekli artlar nelerdir? Aratrnz.

    1. KARAR KONTROL DEYMLERProgram yazarken baz noktalarda belirli koullar altnda gereklemesini istenilen

    durumlar olabilir. Bu blmde anlatlan if-else ve switch deyimleri ile bu tr kapsamlprogramlar gelitirilebilir.

    Genel anlamda programlama dilinde kullanlan koul yaplar iki eittir. Bunlar; if-else deyimi switch deyimidir.

    1.1. If-Else Deyimi

    If deyimi bir programn akn kontrol etmek iin kullanlr. Belirli bir arta gre

    yaplmas istenilen ilemler, If-Else deyimi kullanlarak gerekletirilir.

    If-Else deyiminin kullanm ve ak diyagramlar ile gsterimi ise u ekildedir.

    Kullanm:

    if(koul){

    Koul doruysa yaplacak ilemler;}else{

    Koul yanlsa yaplacak ilemler;}

    RENME FAALYET1

    ARATIRMA

    AMA

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    8/66

    4

    ekil 0.1: If-Else Deyimi Ak Diyagram

    Yukardaki diyagramdan da grlecei zere, programn ak If deyiminin olduusatra geldiinde parantezler ierisindeki KOUL ifadesi altrlr. Bu koul ifadesi true(Doru) yada false (Yanl) olmak zere bir deer retmektedir.

    ayet koulumuz doruysa (true) programmzn ak mavi renkle gsterilendoruysa ksmndan devam edecek ve krmzyla gsterilen yanlsa ksmnauramayacaktr. Eer koulumuz yanlsa (false) bu sefer programmz yanlsa ksmndan

    krmzyla belirtilen yoldan devam edecektir.

    Not 1: Eer programmzn aknda sadece koulun doru olmasna bal ilem yaplmasisteniyor, koulun yanl olduu durumlarda ilem yaplmas istenmiyorsa Else blouprogram ierisinde hi kullanlmaz.

    Kullanm:

    if(koul){

    Koul doruysa yaplacak ilemler;

    }

    Not 2: Eer If veya Elseden sonra sadece bir komut yazlacak ise kme parantezleri ({})kullanlmayabilir.

    Kullanm:

    if(koul)Koul doruysa yaplacak ilemler;

    elseKoul yanlsa yaplacak ilemler;

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    9/66

    5

    rnek 1-1: Klavyeden ya girilen kiinin ehliyet alp alamayacan belirten

    program yaznz.Bu rneimizde saylarn karlatrlmasn inceleyelim.

    Console.Write("Yanz giriniz: ");int yas = Convert.ToInt32(Console.ReadLine());if (yas < 18)

    Console.WriteLine("Yanz 18den kk olduu iin ehliyetalamazsnz");

    elseConsole.WriteLine("Ehliyet alabilecek yatasnz.");

    Yukardaki uygulamay aada verilen deerler iin tek tek deneyiniz ve ekranktlarn yanlarndaki bo ksma yaznz.

    Girilecek Deerler Ekran kts16

    25

    18

    17

    Eitlik bakmndan deikenleri karlatrmak iin = = operatrn kullandna,zellikle dikkat edin. Bu ama iin = operatrn kullanmaynz. Tek bir = operatr,

    deikenleri atamak iin kullanlr.

    rnek 1-2: nl airimiz Mehmet Akifin soyad nedir? sorusunu kullancya sorancevabn isteyen program yaznz.

    Bu rneimizde metinsel ifadelerin karlatrlmasn inceleyelim.

    Console.Write("nl airimiz Mehmet Akif'in soyadnedir?\nCevabnz :");

    string cevap = Console.ReadLine();if(cevap=="Ersoy"){

    Console.Write("Tebrikler bu sorumuza doru cevapverdiniz...");

    }else{

    Console.WriteLine("Malesef yanl cevap");}Console.ReadLine();

    Not 3: Baz programlama dilleri byk/kk harf duyarl bir dil olduu iin Ersoy,ersoy veya ERSOY cevaplarndan yalnzca Ersoy cevabn kabul edecektir.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    10/66

    6

    If koul deyimlerde zaman zaman birden fazla koula bal bir takm ilemler

    yapmamz gerekebilir. Kullanm:

    VE (&& ) balac ile

    if((koul1) && (koul2)){

    koul1 ve koul2 doruysa yaplacak ilemler;}else{

    koullardan en az birisi veya her ikisi de yanl ise

    yaplacak ilemler;}

    VEYA ( || ) balac ile

    if((koul1) || (koul2)){

    koul1 veya koul2den en az birisi veya her ikisi de doruysayaplacak ilemler;

    }else{

    koullardan her ikisi de yanl ise yaplacak ilemler;}

    rnek 1-3: Klavyeden girilen saynn hem 3e hem de 5e kalansz blnpblnemediini ekrana yazan program yaznz.

    Console.Write("Bir say giriniz:");int sayi = Convert.ToInt32(Console.ReadLine());if((sayi % 3 == 0) && (sayi % 5 ==0))

    Console.WriteLine("{0} says hem 3'e hem de 5'e kalanszblnebilir",sayi);

    else

    Console.WriteLine("{0} says hem 3'e hem de 5'e kalanszblnemez", sayi);

    Yukardaki uygulamay aada verilen deerler iin tek tek deneyiniz ve ekranktlarn yanlarndaki bo ksma yaznz.

    Girilecek Deerler Ekran kts150

    38

    64

    90

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    11/66

    7

    rnek 1-4: Klavyeden girilen cinsiyet ve ya bilgilerine gre, kiinin askere gidip

    gidemeyeceini yazan program yaznz.char cinsiyet;int yas;Console.Write("Ltfen cinsiyetinizi giriniz (E/K):");cinsiyet=Convert.ToChar(Console.ReadLine());Console.Write("Ltfen yanz giriniz:");yas =Console.Read();if (((cinsiyet == 'E') || (cinsiyet=='e')) && (yas >= 20)){

    Console.WriteLine("Askere Gidebilir");}else

    {Console.WriteLine("Askere Gidemez");

    }

    Yukardaki uygulamay aada verilen deerler iin tek tek deneyiniz ve ekranktlarn yanlarndaki bo ksma yaznz.

    Girilecek DeerlerEkran ktsCinsiyet Ya

    E 18

    K 21

    E 23

    K 19

    1.2. -e Iffadesi

    Birden fazla koula ihtiya duyulan durumlarda i-ie If ifadeleri kullanlrlar. Bir ifkouluna ka tane else if ekleyebileceiniz konusunda hibir snr yoktur.

    -ie If ifadelerinin kullanm ise u ekildedir.

    Kullanm:

    if(koul1){

    koul1 doruysa yaplacak ilemler;}else if(koul2){

    koul1 yanlsa ve koul2 doruysa yaplacak ilemler;}else{

    her iki koul da yanlsa yaplacak ilemler;

    }

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    12/66

    8

    Dilerseniz i-ie If ifadelerini birka rnekle aklamaya alalm.

    rnek 1-5: Klavyeden girilen iki sayy karlatran program yaznz.

    int sayi1, sayi2;Console.Write("1. sayy giriniz: ");sayi1 = Convert.ToInt32(Console.ReadLine());Console.Write("2. sayy giriniz: ");sayi2 = Convert.ToInt32(Console.ReadLine());if(sayi1>sayi2)

    Console.Write("{0} says {1} saysndanbyktr.",sayi1,sayi2);

    else if(sayi1= 0 && puan < 25)Console.WriteLine("Puannzn 5'lik sistemdeki karl

    0'dr");else if (puan >= 25 && puan < 45)

    Console.WriteLine("Puannzn 5'lik sistemdeki karl1'dir");

    else if (puan >= 45 && puan < 55)Console.WriteLine("Puannzn 5'lik sistemdeki karl

    2'dir");else if (puan >= 55 && puan < 70)

    Console.WriteLine("Puannzn 5'lik sistemdeki karl

    3'tr");else if (puan >= 70 && puan < 85)

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    13/66

    9

    Console.WriteLine("Puannzn 5'lik sistemdeki karl4'tr");

    else if (puan >= 85 && puan

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    14/66

    10

    ekil 0-2. -ie Iffadesi

    rnek 1-7: Daha nceden belirlenen kullanc ad ve ifreyi kontrol eden programyaznz.

    string kullaniciAdi, sifre;Console.Write("Ltfen kullanc adnz giriniz:");kullaniciAdi = Console.ReadLine();

    if (kullaniciAdi == "Admin" || kullaniciAdi=="ADMN" ||kullaniciAdi=="admin")

    {Console.Write("Ltfen ifrenizi giriniz:");sifre = Console.ReadLine();if (sifre == "123rty")

    Console.WriteLine("Tebrikler Kullanc ve ifrenizDoru");

    elseConsole.WriteLine("ifrenizi Hatal Girdiniz");

    }else

    Console.WriteLine("Kullanc Adnz Hatal Girdiniz");

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    15/66

    11

    Yukardaki uygulamay aada verilen deerler iin tek tek deneyiniz ve ekran

    ktlarn yanlarndaki bo ksma yaznz.

    Girilecek DeerlerEkran ktsKullanc Ad ifre

    Admin 123RTY

    Ynetici 123rty

    Admin 123rty

    admin 123rty

    ADMN 123rty

    !!! Uyar: Yukardaki rnekte ifre 123rty eklinde verilmitir.

    rnek 1-8: Basit bir hesap makinesi yapm.

    byte secim;double sayi1,sayi2,sonuc;Console.WriteLine("1.TOPLAMA");Console.WriteLine("2.IKARMA");Console.WriteLine("3.ARPMA");Console.WriteLine("4.BLME");Console.WriteLine("-------");Console.Write("lem tipinizi seiniz (1-4):");secim = Convert.ToByte(Console.ReadLine());if (secim == 1){

    Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem TOPLAMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToDouble(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToDouble(Console.ReadLine());sonuc = sayi1 + sayi2;

    Console.Write("Sonu={0}", sonuc);}else if (secim == 2){

    Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem IKARMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToDouble(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToDouble(Console.ReadLine());

    sonuc = sayi1 - sayi2;Console.Write("Sonu={0}", sonuc);

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    16/66

    12

    }else if (secim == 3)

    {Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem ARPMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToDouble(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToDouble(Console.ReadLine());sonuc = sayi1 * sayi2;Console.Write("Sonu={0}", sonuc);

    }

    else if (secim == 4){

    Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem IKARMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToDouble(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToDouble(Console.ReadLine());if (sayi2 != 0){

    sonuc = sayi1 / sayi2;Console.Write("Sonu={0}", sonuc);

    }else

    Console.WriteLine("!!! SIFIRA BLME HATASI !!!");}

    1.3. Switch-Case Deyimi

    Switch-Case deyimi de If-Else deyimleri gibi karar kontrol mekanizmalarndakullanlmaktadr. Switch-Case deyimi genellikle karmak if-else bloklarnn yerine, daha

    okunabilir olduklar iin tercih edilmektedir. Switch-Case ile yapabileceimizkarlatrmalar if-else ile de yapabiliriz.

    Switch-Case yaps u ekilde alr; bir deyimin deeri, sabitlerden oluan bir listedepe pee test edilir. Deyimin deeri sabitlerden birisiyle eleince, bu elemeyle ilgiliilemler gerekletirilir.

    Switch-Case ifadesinin genel formu u ekildedir;

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    17/66

    13

    Kullanm:

    switch(ifade){

    case sabit1:Yaplacak ilemler;break;

    case sabit2:Yaplacak ilemler;break;

    case sabit3:Yaplacak ilemler;break;

    .

    .

    .default:

    Yaplacak ilemler;break;

    }

    Switch-Case yapsnn almasna bir gz atalm;

    nce switch parantezleri ierisindeki ifade hesaplanr. Programn ak, hesaplanan ifade ile ayn case sabitinin bulunduu satra gelir. Eer hesaplanan ifade, mevcut case sabitlerinden herhangi birisi ile

    elemiyorsa default anahtar szcnn bulunduu yere gelir ve programburadan devam eder.

    Her case satr ierisindeki ilemlerimiz tamamlandktan sonra, ilgili case satrnnsonuna geldiimizi belirtmek iin break komutu kullanlr.

    Eer aadaki rnekteki gibi break komutu kullanlmazsa, Control cannot fallthrough from one case label (case 1:) to another yani Bir case etiketinden (case1:)baka bir case etiketine geilemez hatasn alrz.

    switch(ifade)

    {case 1:Yaplacak ilemler;

    case 2:Yaplacak ilemler;break;

    case 3:Yaplacak ilemler;break;

    default:Yaplacak ilemler;break;

    }

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    18/66

    14

    Switch-case yapsnda case durumlarn srasnn sorun olmamaktadr. default

    durumunu bile ilk sraya koyabilirsiniz. Sonu olarak, iki durum ayn olamayaca iin ilgilicase yapsna gelindiinde o satrn almas salanacaktr.

    switch(ifade){

    default:Yaplacak ilemler;break;

    case 3:Yaplacak ilemler;break;

    case 1:Yaplacak ilemler;

    break;case 2:

    Yaplacak ilemler;break;

    }

    Switch-Case Yaps le lgili nemli Kurallar:

    Case anahtar szcnn yanndaki ifadeler sabit olmak zorundadrlar. Buifadeler ierisinde deiken bulunamaz.

    Case ifadeleri herhangi bir tam say sabiti, karakter veya string sabiti olabilir.

    Default durumunu istediimiz yere yazabiliriz. Ayn ekilde case ifadelerini deistediimiz srada yazabiliriz.

    Bir switch blounda iki veya daha fazla sayda ayn deere sahip case ifadesibulunamaz.

    Bir switch blounda default case olmak zorunda deildir. Ak herhangi bir case ifadesine geldiinde, ak farkl bir case ifadesine

    ynlendirilmek istenirse goto anahtar szc kullanlr.

    rnek 1-9: Klavyeden girilen 1-12 arasndaki say deerine gre o sradaki aynismini veren program yaznz

    byte ay;

    Console.Write("1-12 arasnda bir say giriniz:");ay = Convert.ToByte(Console.ReadLine());switch (ay){

    case 1:Console.WriteLine("{0}.ay OCAK aydr.", ay);break;

    case 2:Console.WriteLine("{0}.ay UBAT aydr.", ay);break;

    case 3:Console.WriteLine("{0}.ay MART aydr.", ay);

    break;case 4:

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    19/66

    15

    Console.WriteLine("{0}.ay NSAN aydr.", ay);break;

    case 5:Console.WriteLine("{0}.ay MAYIS aydr.", ay);break;

    case 6:Console.WriteLine("{0}.ay HAZRAN aydr.", ay);break;

    case 7:Console.WriteLine("{0}.ay TEMMUZ aydr.", ay);break;

    case 8:Console.WriteLine("{0}.ay AUSTOS aydr.", ay);break;

    case 9:Console.WriteLine("{0}.ay EYLL aydr.", ay);break;

    case 10:Console.WriteLine("{0}.ay EKM aydr.", ay);break;

    case 11:Console.WriteLine("{0}.ay KASIM aydr.", ay);break;

    case 12:Console.WriteLine("{0}.ay ARALIK aydr.", ay);break;

    default:Console.WriteLine("Girmi olduunuz deer 1-12 arasnda

    deildir.");break;

    }

    rnek 1-10: Klavyeden girilen deer ile seimi yaplan eklin alann veya evresinibulan program yaznz

    string sekil,secim;int kenar1, kenar2;Console.WriteLine("1.KARE--------->(kare)");Console.WriteLine("2.DKDRTGEN--->(dikdrtgen)");Console.WriteLine("---------------");Console.Write("Ltfen eklin ismini yaznz:");sekil = Console.ReadLine();switch (sekil){

    case "kare":Console.WriteLine(" # ALAN--------->(alan)");Console.WriteLine(" # EVRE-------->(evre)");Console.WriteLine("------------------------");Console.Write("Ltfen seiminizi yaznz:");secim = Console.ReadLine();switch (secim){

    case "alan":

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    20/66

    16

    Console.Write("Karenin bir kenar uzunluunugiriniz:");

    kenar1 =Convert.ToInt32(Console.ReadLine());Console.Write("Karenin alan={0}",kenar1*kenar1);break;

    case "evre":Console.Write("Karenin bir kenar uzunluunu

    giriniz:");kenar1 =Convert.ToInt32(Console.ReadLine());Console.Write("Karenin evresi={0}", kenar1 * 4);break;

    default:Console.Write("Geerli bir seim yapmadnz...");break;

    }break;

    case "dikdrtgen":Console.WriteLine(" # ALAN--------->(alan)");Console.WriteLine(" # EVRE-------->(evre)");Console.WriteLine("------------------------");Console.Write("Ltfen seiminizi yaznz:");secim = Console.ReadLine();switch (secim){

    case "alan":Console.Write("Dikdrtgenin bir kenar uzunluunu

    giriniz:");

    kenar1 = Convert.ToInt32(Console.ReadLine());Console.Write("Dikdrtgenin dier kenar uzunluunugiriniz:");

    kenar2 = Convert.ToInt32(Console.ReadLine());

    Console.Write("Dikdrtgenin alan={0}", kenar1 *kenar2);

    break;case "evre":

    Console.Write("Dikdrtgenin bir kenar uzunluunugiriniz:");

    kenar1 = Convert.ToInt32(Console.ReadLine());Console.Write("Dikdrtgenin dier kenar uzunluunu

    giriniz:"); kenar2 = Convert.ToInt32(Console.ReadLine());

    Console.Write("Karenin evresi={0}",(kenar1+kenar2) * 2);

    break;default:

    Console.Write("Geerli bir seim yapmadnz...");break;

    }break;

    default:Console.WriteLine("Geerli bir seim yapmadnz...");

    break;}

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    21/66

    17

    rnek 1-11: Bir nceki konuda rnek-1-8de IF-ELSE ile yaptmz basit hesapmakinesi programn Switch-Case ile biraz deitirerek tekrar yapalm.

    char secim;double sonuc;int sayi1, sayi2;Console.WriteLine("1.TOPLAMA--->T");Console.WriteLine("2.IKARMA--->C");Console.WriteLine("3.ARPMA --->R");Console.WriteLine("4.BLME --->B ");Console.WriteLine("---------------");Console.Write("lem tipinizi seiniz (T-C-R-B):");secim = Convert.ToChar(Console.ReadLine());

    switch(secim){case T:Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem TOPLAMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToInt32(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToInt32(Console.ReadLine());sonuc = sayi1 + sayi2;Console.Write("Sonu={0}", sonuc);

    break;case C:Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem IKARMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToInt32(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToInt32(Console.ReadLine());sonuc = sayi1 - sayi2;Console.Write("Sonu={0}", sonuc);break;

    case R:Console.Clear();Console.WriteLine("********************************");Console.WriteLine("* Seilen ilem ARPMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToInt32(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToInt32(Console.ReadLine());sonuc = sayi1 * sayi2;Console.Write("Sonu={0}", sonuc);break;

    case B:

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    22/66

    18

    Console.Clear();Console.WriteLine("********************************");

    Console.WriteLine("* Seilen ilem IKARMA ilemi *");Console.WriteLine("********************************");Console.Write("1.Sayy giriniz:");sayi1 = Convert.ToInt32(Console.ReadLine());Console.Write("2.Sayy giriniz:");sayi2 = Convert.ToInt32(Console.ReadLine());switch (sayi2){

    default:sonuc = sayi1 / sayi2;Console.Write("Sonu={0}", sonuc);break;

    case 0:Console.WriteLine("!!! SIFIRA BLME HATASI

    !!!");break;

    }break;

    default:Console.WriteLine("T-C-R-B den farkl bir deer

    girdiniz...");break;

    }

    Not: Yukardaki baz satrlar alta kaymtr, program yazarken kayan satrlarn teksatrda olmasna dikkat ediniz.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    23/66

    19

    UYGULAMA FAALYET

    lem Basamaklar neriler Klavyeden girilen saylarn tek mi ift

    mi olduunu bulan program yaznz. Bir saynn 2ye blmnden kalan

    sfr(0) ise say ifttir. Mod alma (%) ilemi kullannz.

    Klavyeden girilen iki metinden uzunolann ekrana yazdran programyaznz.

    Metinsel ifadelerin uzunluklar.length zelliiyle bulunur.

    Girilen metinlerin tek tek uzunluklarnbulup karlatrnz.

    Havann Gneli, Yamurlu ve KarYal olmas durumlarna gre,

    kiinin Gmlek, Hrka veya Kazakgiymesi hususunda uyar mesajnSwitch-Case kullanarak ekranayazdrnz.

    rnek: Hava yamurluysa; Bugnhava yamurlu, hrka giymelisin.

    Havann her durumu iin bir case yapsoluturup, kontrol salaynz.

    Klavyeden girilen 3 saynnkarlatrmasn yapp, en byk ve enkk saylar ekrana yazdran programyaznz.

    rnek 1-5ten faydalanabilirsiniz.

    Klavyeden girilen rakam yazyla ekranayazdran program Switch-Casekullanarak yaznz.

    Her bir rakam iin tek tek case yapsoluturup, kontrol salaynz.

    Bir iyerinde alan iilerin maalarnauygulanan kesinti miktarlarkarldktan sonra ellerine geecek olannet maalarn hesaplayan programyaznz. Kesinti miktarlar u ekildeolacaktr.

    Kiinin maa; 1.000-2.500 TL arasndaysa 384 TL

    kesinti 2.501-4.000 TL arasndaysa 567 TL

    kesinti 4.000 TL ve zeri ise 863 TL kesintiyaplacaktr.

    rnek 1-6da ki gibi birden fazla koulludurumlara dikkat ediniz.

    UYGULAMA FAALYET

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    24/66

    20

    LME VE DEERLENDRMEBu faaliyet kapsamnda kazandnz bilgileri, aadaki sorular cevaplayarakbelirleyiniz.

    1. Aadakilerden hangisi byktr ya da eittir manasna gelen karlatrmaoperatrleridir?A) D) >=

    2. Aada verilen bilgilerden hangisi yanltr?A) break komutu ierisinde bulunduu case satrn sonlandrmak iin kullanlr.B) default blou bir Switch-Case yapsnda bulunmasa da olur.C) Bir Switch -Case yapsnda birden fazka ayn deere sahip Case ifadesi olabilir.D) Ak farkl bir case ifadesine ynlendirilmek istenirse goto anahtar szc

    kullanlr.

    3. if(sayi1>0) || (sayi1

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    25/66

    21

    RENME FAALYET2

    Bu modl ile dng kontrollerini kullanabilecek ve programlarnzdauygulayabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrma faaliyetleriniyapmalsnz

    Gnmzde kullandmz saya eitlerini ve alma prensiplerini aratrnz. Bir bilgisayar program vastasyla ayn ilemi defalarca tekrar etmek yerine tek

    bir seferde nasl gerekletiririz? Aratrnz.

    2. DNG DEYMLERDngler bir program ierisinde belirli ilerin defalarca yaplmasn salayan komut

    bloklardr. Sonsuz dngler yaplabildii gibi belirli kriterler salanana kadar devam eden

    dngler de yaplabilir.

    4 tip dng vardr. Bunlar: for dngleri while dngleri do while dngleri foreach dngleri dir.

    2.1. Dng eitleri

    2.1.1. For Dngs

    Belirlenen balang deerinden itibaren belirtilen koul salanana kadar iineyazld kod parasn ard ardna altran bir dng eididir.

    For dngsnn kullanm u ekildedir;

    Kullanm:

    for(balang;koul;artm){

    yaplacak iler;

    }

    RENME FAALYET2

    ARATIRMA

    AMA

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    26/66

    22

    Balang, dng kontrol deikeni olarak da ifade edilebilir. Dng ierisinde bir

    saya grevini grr.

    Koul, dngnn ne kadar alacan denetleyen mekanizmadr. Koulsalanyorken dng almaya devam eder. Koul salanmadnda ise dng durur.Koulda genellikle balang deerinin durumu denetlenir.

    Artm, balang deerinin dngnn her admda artma ya da azaltma miktarnbelirler. Eer balang deeri hi deimez ise sonsuz dng oluur.

    Ak diyagramlaryla for dngsnn gsterimi de u ekildedir.

    Resim 0-1. For Dngs Ak Diyagram

    imdi basit bir rnekle for dngsnn almasn inceleyelim.

    rnek 2-1: 1den 10a kadar olan saylar ekrana yazdrnz.

    byte i;for(i=1;i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    27/66

    23

    Dng her seferinde koul ksmn kontrol eder ve buradaki koul false(yanl)

    olana kadar kme parantezleri ( { } ) ile snrlandrlan kod blounu altrmaya devamedecektir.

    Kod paramz altrdmzda aadaki gibi bir ekran kts alabiliriz.

    Resim 0-2. rnek 2-1'in Ekran kts

    For terimiyle dng kurarken balang deerimiz herhangi bir tam say olabileceigibi char trnde bir deikende olabilir.

    rnek 2-2: dden rye kadar olan harfleri ekrana yazdrnz.

    char i;for (i ='d'; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    28/66

    24

    for(;;){

    //.......}

    Uyar: Bu ekilde bir sonsuz dngy bilgisayarnzda altrdnz zaman uygulamanzsonsuza kadar devam eder.

    For dngleri ileriye doru sayabildii gibi geriye dnk sayma ilemlerinde dekullanlrlar.

    rnek 2-3: 10dan 0a geriye doru sayan ve saylar ekrana yazdran programyazdrnz.

    int i;for (i=10;i>=0;i--)

    Console.WriteLine(i);

    Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran ktsylakarlarz.

    Resim 0-4. rnek 2-3'n Ekran kts

    For dngs ierisinde birden fazla dng kontrol deiken kullanma ansna dasahibiz.

    rnek 2-4: i=0dan balayacak ve j=10dan balayacak olan iki deikendir. i ve jbirbirine eit olana kadar iki deikenin durumlarn ekrana yazdran program yaznz.

    int i,j;for (i = 0, j = 10; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    29/66

    25

    Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran ktsyla

    karlarz.

    Resim 0-5. rnek 2-4'n ekran kts

    rnek 2-5: 0dan klavyeden girilen sayya kadar olan saylarn toplamn ekranayazdran program yaznz.

    int bitis,i,toplam;Console.Write("Bir say giriniz:");bitis = Convert.ToInt32(Console.ReadLine());toplam = 0;for (i = 0; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    30/66

    26

    rnek 2-6: Aadaki ekran ktsn verecek programn kodunu yaznz.

    Resim 0-6. rnek 2-6 Yldz Sorusu

    string yildiz = "";for (int i = 1; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    31/66

    27

    rnek 2-8: 0dan 20ye kadar olan ift saylar ekrana yazdrnz.

    int i=0;while (i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    32/66

    28

    Yukardaki programda karmza kan Random komutu bize belirtilen bir aralktarastgele say retmemizi salayan bir komuttur. Programmzda bizler 1-50 arasnda bir sayretmesini saladk.

    Bir dier dikkat etmemiz gereken komutumuz da break komutudur. Ayn bir ncekirenme faaliyetinde grdmz select-case yapsndaki gibi sonlandrma iine yarayanbreak komutunun While dngleriyle birlikte kullanm olduka yaygndr. Dnglerdenistenilen koulun salanmasn beklemeden kmak iin kullanlr.

    2.1.3. DoWhile Dngs

    For ve while dnglerinde dng bloklarnn koul salanmad takdirde hialtrlmama ihtimali vardr. Ancak dngnn en az bir kere altrlmas istenilendurumlarda do-while dngleri kullanlrlar.

    Do-While dnglerinde koul dng ierisindeki ilemler bir kez gerekletirildiktensonra kontrol edilir. Koul doru olduu mddete de dng ierisindeki ilemlertekrarlanmay srdrr.

    Genel yazm ekli yledir.

    Kullanm:

    do{

    yaplacak iler;}while(koul);

    rnek 2-10: 1den 20ye kadar olan tek saylar ekrana yazdrnz.

    int i=1;

    do{Console.WriteLine(i);i = i + 2;

    } while (i < 20);

    Yukardaki rnek kod incelendiinde koulun do-while dngsnn en sonundakontrol edildiini grebilirsiniz.

    Kod paramz altrdmzda aadaki gibi bir ekran kts alabiliriz.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    33/66

    29

    Resim 0-8. rnek 2-10'un Ekran kts

    2.1.4. Foreach Dngs

    foreach, dizi (Array) ve koleksiyon ( collection ) tabanl nesnelerin elemanlar

    zerinden ilerleyen bir dngdr.

    Genel kullanm ekli yledir; Kullanm:

    foreach(tip deiken in koleksiyon){

    yaplacak iler;}

    Tip: buradaki tip koleksiyonun veri tipi ile ayn veya uyumlu olmakzorundadr.

    Deiken: foreach dngs ierisinde koleksiyonda bulunan sradaki elemantemsil eder.

    Koleksiyon: ArrayList ya da dizi gibi ayn tip verileri barndran koleksiyon.

    Uyar: Bir sonraki renme faaliyeti olan Diziler konusunda foreach dngsnnkullanmna ynelik daha fazla rnek gsterilecektir. Sadece n bilgi amacyla aadakirnei inceleyiniz.

    rnek 2-11: Gunler isimli dizi ierisindeki elemanlar ekrana yazdran programyaznz.

    string[] gunler=new string[7];gunler[0]="Pazartesi";gunler[1]="Sal";gunler[2]="aramba";gunler[3]="Perembe";gunler[4]="Cuma";gunler[5]="Cumartesi";gunler[6]="Pazar";foreach (string gun in gunler){

    Console.WriteLine(gun);

    }

    Bu ksmda dizinin tanmlanmasve ieriine deer atama ilemi

    gerekletirilmektedir.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    34/66

    30

    Burada, foreach, dizi boyunca her seferinde bir eleman admlar. Dizinin her bir

    elemannn deerini gun adndaki string deikenine aktarr ve daha sonra dngy balatr.Foreach dngs ile ilgili dikkat edilmesi gereken bir nemli nokta ise,

    koleksiyondaki elemann (rnek 2-11deki gun) deerini deitirememenizdir, aksi takdirdekodunuz derlenmeyecektir:

    foreach (string gun in gunler){

    gun= gun+ gn;Console.WriteLine(gun);

    }

    Yukardaki kullanm hatal bir kullanmdr ve program derlenmeyecektir.

    Eer bir koleksiyondaki elemanlar araclyla dngy balatmaya ihtiya duyulursave onlarn deerleri deitirilecekse, foreach dngs yerine bir for dngs kullanmnaihtiya duyulacaktr.

    2.2. Jump (Dallanma Atlama) Komutlar

    Programn ak esnasnda baka satrlara atlama ilemi gerekletiren bir takmanahtar szckler vardr.

    Bunlar;

    break, continue, goto, return anahtar szckleridir.

    2.2.1. Break Anahtar Szc

    Break anahtar szc dnglerden kmak iin kullanlr. Dnglerde, break anahtarszcne rastland anda dngden klr ve program dng bloundan sonraki ilkdeyimle akna devam eder.

    Break anahtar szc dng bloklarnn ya da switch bloklarnn dnda

    kullanlamazlar.

    rnek 2-12: A harfinden balayp Zye kadar devam eden bir dng de K harfinegelindiinde dngden kan programn kodunu yaznz.

    for (char i = 'A'; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    35/66

    31

    Yukardaki rnek incelendiinde dngmz A harfinden balayarak teker tekerharfleri yazmaktayken K harfine geldikten sonra break komutuyla karlar. Bu komutugren program o anda ierisinde bulunduu dngy sonlandrr ve programn aknakald yerden devam eder.

    Aadaki Resim 2-11den de grlecei zere programmzdaki dngde i deeri Kya eritiinde dng sonlandrlp, programn kald yerden devam etmesi salanyor.

    Resim 0-9. rnek 2-12'nin Ekran kts

    rnek 2-13: 0dan 100e kadar saylardan asal olanlar ekrana yazdran programnkodunu yaznz.

    for(int i=1; i < 100; i++){bool asalMi = true;//Saynn asal olup olmad kontrol ediliyor

    for(int j=2; j < i; j++)

    {if(i % j == 0){

    asalMi = false;break;

    }}

    // asal olan saylar ekrana yazdrlyorif(asalMi)

    Console.Write(i + " ");}

    Yukardaki rnekte de break komutu if bloundan kmak iin kullanlmtr.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    36/66

    32

    Kodlar altrdmzda karmza aadaki gibi bir ekran kts gelir.

    Resim 0-10 rnek 2-13'n Ekran kts

    2.2.2. Continue Anahtar Szc

    Continue ifadesi, break ifadesine benzerdir ve bir for, foreach, while ya da do...whiledngs iinde de kullanlabilir. Ancak, dngnn dna kmak yerine mevcut dngdenkarak bir sonraki dngye geii salayacaktr.

    imdiki rneimizde continue anahtar szcnn kullanmn inceleyelim.

    rnek 2-14: Continue anahtar szcnn kullanm.

    i n t i = 1 ;i n t k = 1 ;while (i < 10){

    Console.WriteLine("i:{0} iken k:{1}",i,k);i++;continue;

    k++;}

    Yukardaki kod parasn incelediimizde dngmzn koulu, inin 10dan kkolan deerleri salanmas durumunda TRUE deerini almasdr.

    i ve k deikenlerimizin deerleri dngmz ierisinde i++ ve k++ ifadeleriylearttrlmaktadr. Lakin programmzn ekran ktsn (Resim 2-11) incelediimizde yalnzcai deikeninin deerinin arttrldn grmekteyiz. Sebebi ise k deikeninin deerinincontinue anahtar szcnden sonra arttrlmasdr. Program continue anahtarszcn grnce o satrdan tekrar dngnn bana dner ve bylece k deikeninindeeri deitirilemez.

    Resim 0-11. rnek 2-14'n Ekran kts

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    37/66

    33

    2.2.3. Goto Anahtar Szc

    Goto anahtar szc, koulsuz atlama komutudur. Programn ak esnasnda gotoanahtar szcyle karlald anda program goto ile belirlenen etiketin bulunduu satraatlama ilemi gerekletirir.

    Goto anahtar szcnn kullanm nesne ynelimli programlama tekniinde pekuygun grlmese de baz durumlarda (rnein switch deyiminde case ifadeleri arasndadolama) gerekebilir.

    Uyar: Goto anahtar szc ile bir dng ve koul blou ierisine dallanma ilemi

    gerekletirilemez.

    Sradaki rneimizde goto anahtar szcnn kullanmn inceleyelim;

    rnek 2-15: Goto anahtar szcnn kullanm.

    int sayi1 = 10;int sayi2 = 20;Console.WriteLine("{0} + {1} = {2} ", sayi1, sayi2, sayi1 +

    sayi2);goto son;Console.WriteLine("{0} x {1} = {2} ", sayi1, sayi2, sayi1 *

    sayi2);son:

    Console.ReadLine();

    Yukardaki rnek incelendiinde program ilk goto satryla karlanca son isimlietiketin bulunduu satra dallanma ilemini gerekletirir ve arpma ileminingerekletirdii satr (Console.WriteLine("{0} x {1} = {2} ", sayi1, sayi2,sayi1 * sayi2);) atlayarak dallanma ilemini gerekletirir.

    2.2.4. Return Anahtar Szc

    Return anahtar szc, metotlardan geriye bir deer dndrmek iin kullanlr.Metotlarla ilgili ayrntl bilgiyi ve return anahtar szcnn kullanmn bir sonraki AltProgramlar Modl ierisinde inceleyeceiz.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    38/66

    34

    UYGULAMA FAALYET

    lem Basamaklar nerilerYandaki ekildeki gibiyldzlar klavyeden girilensay kadar ekrana yazdranprogramn kodunu yaznz.

    Dngnn biti deerini klavyeden girilensay olacak ekilde ataynz.Koulunuzu belirlerken bunu gz nndebulundurunuz.

    Verilen bir mesaj istenilen sayda ekranayazdran program yaznz.

    Girilen mesaj bilgisini bir deikeneataynz

    stenilen adede gre de dngnzkurunuz.

    Klavyeden girilen saynn faktriyelinihesaplayan programn kodunu yaznz.

    rnein klavyeden 5 deeri girilmi olsun;5!= 5 x 4 x 3 x 2 x 1 = 120Dngnn biti deerini klavyeden girilensay olacak ekilde ataynz.Dngnz rnee gre yaznz.

    1den 50ye kadar olan saylardan teksaylarn karesini ift saylarn da kpnalp ekrana yazdran programn kodunuyaznz.

    Bir saynn ssn hesaplamak iin;Math.Pow(sayi,us) fonksiyonunukullannz.

    Kullancdan klavyeden ncedenbelirlenmi bir PIN kodunu girmesiniisteyiniz. 3 defa PIN numarasn hatalgirerse Uygulamanz bloke olmuturmesaj, kullanc 3 deneme hakk iindedoru olarak PIN numarasn girerse Hogeldiniz mesaj veren programn kodunuwhile dngs ve yaznz.

    Say tahmin rneinden yapsal olarakfaydalanabilirsiniz.

    Klavyeden girilen 10 say ierisindena) 100-200 arasndaki saylarn

    adedinib) 100den kk saylarn toplamnc) 200den byk saylardan da 4e

    kalansz blnebilenleriniekrana yazdran program do-whiledngs ve if komutlaryla yaznz.

    Bir saya deikeni belirleyiniz ve girilensay miktarn tutunuz.Toplam,bolunenSayisi ve adetdeikenlerinizi oluturunuz.Girilen saynn yandaki hangi durumauyacan belirleyerek gerekli ilemlerigerekletiriniz.

    Klavyeden girilen saynn asal olupolmadn kontrol eden program yaznz.

    Yalnzca 1 ve kendisine blnebilen saylarasal saylardr.

    UYGULAMA FAALYET

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    39/66

    35

    LME VE DEERLENDRME

    Bu faaliyet kapsamnda kazandnz bilgileri, aadaki sorular cevaplayarakbelirleyiniz.

    1. Aadakilerden hangisi bir dng deyimi deildir?A) IF..ELSEB) FORC) FOREACHD) DOWHILE

    2. Aada for dngs ile ilgili verilen kullanmlardan hangisi yanltr?

    A) for(i=0;i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    40/66

    36

    RENME FAALYET3

    Bu modl ile dizilerle alabilecek ve programlarnzda uygulayabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrma faaliyetleriniyapmalsnz

    Ayn veri trne sahip birden fazla veriyi tek bir seferde nasl saklarz?Aratrnz.

    Farkl veri trlerine sahip birden fazla veriyi tek bir seferde nasl saklarz?Aratrnz.

    3. DZLERDeikenleri renirken grdk ki her deikene sadece bir deer atayabiliriz. Baz

    durumlarda ayn tipteki deikenleri bir arada tutma ihtiyac duyabiliriz. C# bize ayn tiptekideikenleri tek bir adla saklayabileceimiz dizileri (Array) sunmaktadr.

    Dizi (array), ortak isimle anlan ayn tipteki veriler topluluudur.

    Diziler bir programlama dilindeki en nemli veri yaplarndan biridir. Bu modlierisinde dizi oluturma, diziye deer girme, diziyi yazdrma, dizilerde arama, dizilerdesralama, dinamik diziler yapmay reneceiz.

    Bir dizi, ayn tipe ait bir miktar eleman ieren bir veri yapsdr. Dizileri hep bir aradayer alan deikenler listesi gibi dnebiliriz. rnein 5 tane sebze ismini tek bir listeierisinde tutmak istersek bir dizi kullanabiliriz.

    3.1. Dizi Oluturma

    Bir dizi, bo parantezler ve bir deiken ismi tarafndan takip edilen dizi iindekielemanlarn tipini tanmlayarak bildirilir;

    Tanmlanmas:

    1.Yol:

    tip[] dizi-ismi=new tip[eleman-says];

    RENME FAALYET3

    AMA

    ARATIRMA

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    41/66

    37

    Burada tip, dizinin temel veri trn belirlemek iin kullanlr. Temel veri tr, dizi

    ierisinde saklanacak olan verinin trn belirler. Tip ifadesinden hemen sonra keliparantezler ([ ]) geldiine dikkat edin. Keli parantezler, burada tek boyutlu bir dizinintanmlandn belirtirler. Eleman-Says ile de dizinin ierisine ne kadar eleman tutulacanbelirtilir.

    rnein, metinsel ifade (string) trde elemanlarn ieren bir dizi aadaki gibibildirilir;

    string[] sebzeler=new string[5];

    Yukarda tanmlamas gerekletirilen sebzeler isimli dizi ierisinde 5 adet string

    trnde veri tutabiliriz. Oluturmu olduumuz dizi kavramsal olarak u ekilde grnr;Marul Ispanak Biber Domates Salatalk

    sebzeler[0]

    sebzeler[1]

    sebzeler[2]

    sebzeler[3]

    sebzeler[4]

    sebzelerResim 0-1. sebzeler Dizisinin Kavramsal Grn

    Grm olduumuz ekilde dizi tanmlamas gerekletirilebilecei gibi, aadakigibi de dizi tanmlama ilemi gerekletirebilir.

    2.Yol:

    int[] notlar;rakamlar=new int[10];

    Eer tam say (integer) trnde eleman ieren bir dizi tanmlamak istiyorsakyukardaki yolu da izleyebiliriz.

    Yukardaki tanmlamada da rakamlar isimli dizi ierisinde 10 adet int trnde veritutabiliriz.

    Dizi tanmlama ilemlerinde nc bir yol da dizinin ilk deerlerinin kmeparantezleri ({}) ierisinde dizinin istenilen boyutu kadar balangta belirtilmesiyle

    tanmlanmasdr;

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    42/66

    38

    3.Yol:

    int[] notlar={65,76,85};

    Bu tanmlama yntemiyle tek boyutlu 3 elemandan oluan int trnde bir dizitanmlam olduk.

    Dikkat ederseniz yukardaki dizinin tanmlanmas esnasnda herhangi bir boyut(eleman says) belirtilmedi. Bu durumlarda ilk anda ka adet eleman girii yapldysa dizininboyutu da o kadar olur.

    stenirse aadaki gibi dizinin boyutu belirtilerek de tanmlama gerekletirilebilir;

    int[] notlar=new int[3]{65,76,85};

    3.2. Diziye Deer Girme

    Bir dizi tanmlandktan sonra sra o diziye deer girmeye gelir. Bir diziye deergirileri tanmlama esnasnda yaplabildii gibi, programn ak esnasnda dagerekletirilebilir.

    Dizi tanmlandktan sonra, dizinin her bir eleman iin indeks deerleriyle elemanaerierek deer atamas u ekildedir;

    int[] notlar=new int[3];notlar[0]=65;notlar[1]=76;notlar[2]=85;

    Bir dier yntemde bir nceki konuda grdmz, dizi oluturulurken deer girmeyitekrar hatrlarsak;

    int[] notlar=new int[3]{65,76,85};

    veya

    int[] notlar= {65,76,85};

    eklinde tanmlama esnasnda deer girii yapabiliriz.

    Yukarda her iki rnekte de verilen notlar dizisinin kavramsal gsterimi u ekildedir;

    notlar[0] notlar[1] notlar[2]

    65 76 85

    Resim 0-2. notlar Dizinin Kavramsal Grn

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    43/66

    39

    Char (karakter) trndeki bir dizinin ilk kullanmna hazrlanmas da u ekillerde

    gerekletirilir;char[] harfler = new char[]{'r','T','h','Y'};

    veya

    char[] harfler=new char[4];harfler[0] = 'r';harfler[1] = 'T';harfler[2] = 'h';harfler[3] = 'Y';

    String (metinsel) trdeki bir dizinin ilk kullanmna hazrlanmas da u ekillerdegerekletirilir;

    string[] sebzeler = new string[] { "Marul", "Ispanak", "Biber","Domates", "Salatalk" };

    veya

    string[] sebzeler=new string[5];sebzeler[0] = "Marul";sebzeler[1] = "Ispanak";sebzeler[2] = "Biber";sebzeler[3] = "Domates";sebzeler[4] = "Salatalk";

    Bir dizi ierisindeki elemanlara tek tek dizi indeksi yardmyla eriilebilir. Dizi indeksi(array index), bir elemann dizi ierisindeki konumunu ifade eder. Genellikle progrmalamadillerinde dizilerin ilk elemannn indeksi sfr (0)dr. rnein 10 elemanl bir dizi varsa, budizinin indeks numaralar 0-9 arasndadr.

    Dizinin tm elemanlarna deil de bir ksmna deer girii yapmamz isteniyorsa, ilgilideerin barndrlaca indeksine deer atama ilemi gerekletirilir.

    int[] plakalar=new int[10];plakalar[2] = 43;plakalar[5] = 16;plakalar[6] = 66;plakalar[9] = 6;

    Yukarda tanmlanan plakalar isimli dizinin 2,5,6 ve 9 numaral indeks konumlarnadeer atamas gerekletirilmi ve kavramsal grnts u ekilde olumutur.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    44/66

    40

    plakalar[0] 0

    plakalar[1] 0

    plakalar[2] 43

    plakalar[3] 0

    plakalar[4] 0

    plakalar[5] 16

    plakalar[6] 66

    plakalar[7] 0

    plakalar[8] 0

    plakalar[9] 6

    Balangta eleman says belli fakat deerleri daha sonra girilecekse tanmlama uekilde yaplabilir. rnein sebzeler dizisinin eleman says 5 deil de 8 olsun, balangtada 4 adet deer girilecek olsun;

    string[] sebzeler = new string[] { "Marul", "Ispanak", "Biber","Domates","" ,"","","","" };

    veya

    string[] sebzeler = new string[] { "Marul", "Ispanak", "Biber","Domates",null, null, null, null, null };

    Yukarda tanmlamas gerekletirilen sebzeler isimli dizinin kavramsal grnts deu ekildedir;

    sebzeler[0] Marul

    sebzeler[1] Ispanak

    sebzeler[2] Biber

    sebzeler[3] Domates

    sebzeler[4]

    sebzeler[5]

    sebzeler[6]

    sebzeler[7]

    Dikkat ederseniz int trndeki dizilerde bo kalan dizi hcrelerine sfr(0) deeri,

    string trndeki dizilerde de bo kalan hcrelere bo (null-) deer yklenmektedir.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    45/66

    41

    rnek 3-1: Rakamlar isimli dizi ierisine 0-9 aras rakamlar tersten bir dng

    yardmyla ykleyiniz.int[] rakamlar = new int[10];int i;

    for (i = 0; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    46/66

    42

    rnek3-2de verilen kodlar incelendiinde ciftSayilar isimli dizinin balangta 10

    elemanl bir dizi olarak tanmland grlmektedir. Ancak 0-25 arasndaki ift saylar budiziye bir for dngs yardmyla (i deikenin deeri olarak) eklenirken, dizinin 10.eleman eklendikten sonra (j deikeninin deerinin 10 olmasndan sonra) dngnn devametmesi sebebiyle 11. eleman eklemeye allnca Resim 3-3teki Dizi Snrlarnn Dhata mesaj ile karlarz.

    Dizi eleman saysnn st limitini amak gibi alt snr deerinin altna girilmeyeallmas da hata mesaj almamza sebebiyet verir.

    rnek 3-3: rnek 3-2deki kodlarda biraz deiiklik yapp programn dizinin alt snrdeerinden daha dk indeksine erimeye alalm;

    int[] ciftSayilar = new int[10];int i,j;j = 5 ;f o r ( i = 0 ; i < = 2 5 ; i = i + 2 ){

    ciftSayilar[j] = i;j--;

    }

    j deikenimizin balang deerini 5 yapp bu sefer dngmz vastasylaelemanlarmz yazdrmaya altmzda, j indeksimizin j-- ifadesiyle dng ierisinde

    her seferinde deerinin 1 azaltldn gryoruz. Ne zaman ki jnin deeri 0n altndanegatif bir sayya ulatnda, programmz Resim 3-4teki gibi bir hata mesajn bizlereverir.

    Resim 0-4. Dizi Snr Deeri Am Hatas

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    47/66

    43

    3.3. Diziyi Yazdrma

    Bir dizinin elemanlarna indeks numaralar vastasyla eriebileceimizi daha nce debahsetmitik. Eriilen bu elemanlarla ilgili ilemlerden birisi de ekrana yazdrma ilemidir.Eriilen deerlerinin ekrana yazdrlmas ilemi u ekilde gerekletirilir;

    int[] plakalar=new int[10];plakalar[2] = 43;plakalar[5] = 16;plakalar[6] = 66;plakalar[9] = 6;

    Aadaki ilemler yukarda tanmlanm olan diziye gre gerekletirilmektedir.

    Console.WriteLine(plakalar[2]);Console.WriteLine(plakalar[3]);Console.WriteLine(plakalar[4]);Console.WriteLine(plakalar[5]);

    Yukardaki kod paras altrldnda ekrana

    4300

    16

    deerleri yazlr.

    Bir dizi ierisindeki tm deerleri ekrana yazdrmak istiyorsak dng kullanmak gayetmantkl olacaktr. rnein 200 elemanl bir dizinin tm elemanlarn ekrana yazdrmakistersek alt alta 200 satr kod yazmamz mmkn deildir.

    rnek 3-4: Plakalar isimli dizi ierisinde bulunan btn elemanlar ekrana yazdranprogramn kodunu yaznz.

    int[] plakalar = new int[10];int sayac = 0;plakalar[2] = 43;plakalar[5] = 16;plakalar[6] = 66;plakalar[9] = 6;foreach (int note in plakalar){

    Console.WriteLine("plakalar["+sayac+"] :"+note);sayac++;

    }

    Yukardaki kodlar altrld zaman aadaki gibi bir ekran kts ile karlarz;

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    48/66

    44

    Resim 0-5. rnek3-4n Ekran kts

    rnek 3-5: rnek3-4teki plakalar dizisini bir de for dngsyle ekrana yazal m.

    int[] plakalar = new int[10];

    int sayac = 0;plakalar[2] = 43;plakalar[5] = 16;plakalar[6] = 66;plakalar[9] = 6;for(sayac=0;sayac

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    49/66

    45

    Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grnts alrz;

    Resim 0-6. rnek 3- 6'nn Ekran kts

    3.4.2. Clear(dizi,baslangic,adet)Parametre olarak verilen dizinin, belirtilen indeks aralndaki tm deerlerini

    temizler. Temizleme ileminde atanan deer, dizi elemanlarnn tiplerine gre deiir.

    rnein int tipinde tanml bir dizinin elemanlar temizlenirse 0 deerini alacaktr.

    Buna karn String tipindeki elemanlar

    (bo yaz) deerini alr.

    Kullanm:

    Array.Clear(diziAdi,baslangicIndeksi,Adet);

    rnek 3-7: Yeni tanmladmz ve ieriini oluturduumuz bir dizininelemanlarnn nasl silindiini inceleyelim;

    int[] sayilar = new int[] { 43, 16, 66, 26 };Console.WriteLine("Temizlenmeden nce dizinin elemanlar");Console.WriteLine("-------------------------------------");

    for (int i = 0; i < sayilar.Length; i++)Console.WriteLine("sayilar[{0}]: {1}", i,sayilar[i]);

    Array.Clear(sayilar, 1, 2);

    Console.WriteLine("\nTemizlendikten sonra dizinin elemanlar");Console.WriteLine("-------------------------------------");

    for (int i = 0; i < sayilar.Length; i++)Console.WriteLine("sayilar[{0}]: {1}", i, sayilar[i]);

    Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grnts alrz;

    Resim 0-7. rnek 3-7'in Ekran kts

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    50/66

    46

    Yukardaki rnek 3.7yi incelediimizde Array.Clear(sayilar,1,2); komut

    satr ile sayilar dizisinin 1 nolu indeksinden balayarak 2 adet dizi elemannn deerinitemizlemi olduk. Yani dizi elemanlarnn deerlerinin yerine 0 deeri verilmi oldu.

    rnek 3-8: Clear metodunu bir de string bir dizi zerinde deneyip sonularninceleyelim.

    string[] metin = new string[] { "rtyucel", "moymul","tavanl", "ktahya" };

    Console.WriteLine("Temizlenmeden nce dizinin elemanlar");Console.WriteLine("-------------------------------------");for (int i = 0; i < metin.Length; i++)

    Console.WriteLine("metin[{0}]: {1}", i, metin[i]);

    Array.Clear(metin, 2, 2);

    Console.WriteLine("\nTemizlendikten sonra dizinin elemanlar");Console.WriteLine("-------------------------------------");

    for (int i = 0; i < metin.Length; i++)Console.WriteLine("metin[{0}]: {1}", i, metin[i]);

    Yukardaki kodlar altrdmz zaman aadaki gibi bir ekran grnts alrz;

    Resim 0-8. rnek 3-8'in Ekran kts

    Yukardaki rnek 3.8i incelediimizde Array.Clear(metin,2,2) satryla metinisimli dizinin 2 numaral indeksinden balayarak 2 adet kaydn silinmesi ileminigerekletirdik. Burada yeni deerlerin (bo metin) olduuna dikkat ediniz.

    Dizideki tm elemanlar silmek iin sradaki rneimizi inceleyelim.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    51/66

    47

    rnek 3-9: Bir dizi ierisindeki tm elemanlar silen program yaznz.

    string[] metin = new string[] { "rtyucel", "moymul","tavanl", "ktahya" };

    Console.WriteLine("Temizlenmeden nce dizinin elemanlar");Console.WriteLine("-------------------------------------");for (int i = 0; i < metin.Length; i++)

    Console.WriteLine("metin[{0}]: {1}", i, metin[i]);

    Array.Clear(metin, 0, metin.Length);

    Console.WriteLine("\nTemizlendikten sonra dizinin elemanlar");Console.WriteLine("-------------------------------------");

    for (int i = 0; i < metin.Length; i++)Console.WriteLine("metin[{0}]: {1}", i, metin[i]);

    Yukardaki kodlar altrlnca aadaki ekran grnts karmza kar;

    Resim 0-9. rnek 3-9'un Ekran kts

    Yukardaki kodlardan Array.Clear(metin, 0, metin.Length); satrincelendiinde; Clear metodunda dizinin 0. elemanndan itibaren eleman says(metnin.Length) kadar verinin silineceini grebiliriz. Bu ekilde bir dizi ierisindeki tmelemanlar silme ilemi gerekletirilir.

    3.4.3. Reverse(Dizi)

    Parametre olarak verilen dizinin eleman srasn tersine evirir. Dizinin tmelemanlarnn veya belirli indeks aralndaki elemanlarnn sras tersine evrilebilir.

    Kullanm:

    Array.Reverse(diziAdi);

    rnek 3-10: Alfabe adl dizi ierisine girilen A-Zye harfleri tersten ekrana yazdranprogramn kodunu yaznz.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    52/66

    48

    char[] alfabe = new char[26];char harf;int i=0;Console.WriteLine("A'dan Z'ye ngiliz Alfabesi");Console.WriteLine("---------------------------");for (harf = 'A'; harf

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    53/66

    49

    Console.WriteLine("");Console.WriteLine("Sralanm Halleri: ");

    foreach (int sayi in sayilar)Console.Write(sayi + " ");

    Bu rnekte ayn zamanda foreach dngsnn kullanmn da grm olduk. Bundansonra dizilerle ilgili rneklerimizde foreach dngsn ska kullanacaz.

    Yukardaki kod paras altrld zaman aadaki gibi bir ekran ktsylakarlarz;

    Resim 0-11. rnek 3-11in Ekran kts

    3.4.5. IndexOf(Dizi,arananDeger)

    lk parametrede verilen dizide, ikinci parametrede verilen deeri arar. Aranan deerdizide bulunursa bulunan elemann indeks deeri, bulunamazsa -1 dndrr.

    Kullanm:

    Array.IndexOf(diziAdi,arananDeger);

    rnek 3-12: Daha nceden deerleri girilmi olan bir dizi ierisinde istenilen deeribulan programn kodunu yaznz.

    string[] iller = new string[] { "Ankara", "stanbul","Ktahya", "zmir", "Yozgat" };

    string aranan = "Ktahya";int i=0;foreach (string il in iller){

    Console.WriteLine("iller[{0}]: {1}", i, il);i++;

    }int indeks = Array.IndexOf(iller, aranan);Console.WriteLine("lleri dizisi ierisinde Ktahya'nn

    indeksi: "+indeks);

    Yukardaki kod paras altrld zaman aadaki gibi bir ekran ktsylakarlarz;

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    54/66

    50

    Resim 0-12. rnek 3-12'nin Ekran kts

    Uyar: Eer aranan=KTAHYA veya aranan=ktahya yazarsanzArray.IndexOf(iller,aranan) ifadesi geriye -1 deerini dndrr.

    rnek 3-13: 1-49 arasnda 6 adet rastgele say reten bir Saysal Loto Programhazrlaynz.

    // Boyutu 6 olan int array i tanmlayn.int[] sayilar = new int[6];//Random tipinden bir deiken oluturun.Random r = new Random();//int tipinden bir deiken oluturun ve ilk deerini 0 olarak

    atayn.int counter = 0;//Bir while dngs tanmlayn v e k oul olarak counter

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    55/66

    51

    Uyar: Random() komutu sayesinde program her altrldnda farkl saylar

    reteceinden Resim 3-13teki saylarn sizin programnzda da kma olasl oldukadktr.

    3.5. Dinamik Diziler

    imdiye kadar grdmz klasik dizilerin programlama tekniklerine getirdiklerikolaylklarn dnda birtakm kstlamalar da vardr . Bu kstlamalarn en banda dadizilerin boyutlar gelmektedir. Bir dizinin boyutu, dizi tanmlanrken belirlenir veprogramn ak esnasnda geniletilip-daraltlamazd.

    Bir dier kstlama da; rnein, programn balangcnda 250 elemanl bir dizitanmladk ve bunun yalnzca 120sini kullandk, geriye kalan 130 elemanlk bellek alan isebou bouna bellekte yer kaplam olur.

    te dizilerde ska karlalan bu kstlamalar ArrayList snf ile zmlenir.ArrayList, bykl, dinamik olarak artp azalabilen nesne referanslarndan oluandeiken uzunlukta biz dizidir. Bu veri yaps .NET snf ktphanesinin System.Collectionsisim alannda bulunur.

    ArrayList yapsnn, bu dinamik boyut dnda bizlere sunduu bir dier avantaj da birdizi ierisinde saklanacak olan verilerin tr snrlamasn ortadan kaldrmasdr. rnein birdizi ierisinde hem int trnden veriler, hem string trnden veriler, hem char trndenveriler hem de bool trnden veriler saklamak mmkndr.

    ArrayList ile dinamik bir dizi u ekilde tanmlanr;

    Tanmlanmas:

    ArrayList diziAdi=new ArrayList();

    ArrayListleri rneklerimizde kullanmadan nce sizlere ArrayListler ile skakullandmz baz metotlardan ve zelliklerden bahsetmemizde fayda olacaktr.

    zellikler:Capacitiy: ArrayListin kapasitesini int trnde verir.

    Count: ArrayList ierisindeki eleman saysn int trnde verir.Metotlar:Add: Bir nesneyi ArrayListin sonuna eklemeye yarar.Insert: Belirtilen indeks pozisyonuna nesneyi eklemeye yarar.Remove: Belirtilen nesne ArrayList ierisinde varsa siler.RemoveAt: ndeks deeriyle belirtilen pozisyondaki eleman siler.Sort: ArrayList ierisindeki elemanlar sralar.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    56/66

    52

    3.5.1. Capacity zellii:

    ArrayListin kapasitesini int trnde veren zelliktir.

    Kullanm:

    int kapasite=liste.Capacity;

    3.5.2. Count zellii:

    ArrayList ierisinde bulunana eleman saysn int trnde veren zelliktir.

    Kullanm:int elemanSayisi=liste.Count;

    3.5.3. Add Metodu:

    Bir nesneyi ArrayList'in sonuna eklemeye yarar.

    Kullanm:

    ArrayList liste=new ArrayList();liste.Add(123); //int trnde deer ekleme

    liste.Add("Tevfik"); //string trnde deer eklemeliste.Add('H'); //char trnde deer eklemeliste.Add(true); //bool trnde deer eklemeliste.Add(3.14d); //double trnde deer eklemeliste.Add(3.666f); //float trnde deer ekleme

    rnek 3-14: 0-50 arasnda 3e kalansz blnebilen saylar ArrayList ierisineekleyen programn kodunu yaznz.

    ArrayList liste=new ArrayList();for (int sayi = 0; sayi < 100; sayi++)

    { if (sayi % 3 == 0){

    liste.Add(sayi);Console.WriteLine(sayi+" listeye eklendi.");

    }}

    Yukardaki kodu altrdmzda aadaki gibi bir ekran kts alrz.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    57/66

    53

    Resim 0-14. rnek 3-14'n Ekran kts

    3.5.4. Insert Metodu:

    Parametre olarak belirtilen indeks deerine yine parametre olarak verilen nesneyiekler. Ekleme ileminden nce o indeksteki ve o indeksten sonraki tm deerler birer sonrakiindekslere kaydrlr.

    Dikkat edilmesi gereken nokta; araya eklenmek istenilen indeks deerinden en az birnceki konumda veri bulunmas gerekir. Aksi takdirde Resim3-15teki hata mesajn alrz.

    Resim 0-15. ArrayList Indeks Snr D Hatas

    Kullanm:

    liste.Insert(5,123); //5 nolu indekse 123 deerini ekler

    rnek 3-15: Oluturacanz bir ArrayListe 5 adet nesne ekleyiniz. Daha sonra insertmetodunu kullanarak 10. indekse baka bir nesne eklemeye alnz. Aldnz ekranktsn arkadalarnzla paylanz.

    rnek 3-16: 0dan 9a kadar rakamlar barndran bir ArrayListin aada verilendeerleri srasyla 5.indeksine ekleyen kodu yaznz.

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    58/66

    54

    - 123, - Tevfik, - H,

    - true, - 3.14d, - 3.666f ArrayList liste = new ArrayList();

    for (int i = 0; i < 10; i++)liste.Add(i);

    Console.WriteLine("Insert ileminden nce liste:");

    foreach (object obj in liste)Console.WriteLine(obj);

    liste.Insert(5, 123);liste.Insert(5, "Tevfik");liste.Insert(5, 'H');liste.Insert(5, true);liste.Insert(5, 3.14d);liste.Insert(5, 3.666f);

    Console.WriteLine("Insert ileminden sonra liste:");

    foreach (object obj2 in liste)Console.WriteLine(obj2);

    Yukardaki kod paras altrld zaman aadaki gibi bir ekran kts alrz.

    Resim 0-16. rnek 3-16'nn Ekran kts

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    59/66

    55

    3.5.5. Remove Metodu:

    Belirtilen nesne ArrayList ierisinde varsa siler.

    Kullanm:

    liste.Remove(nesne);

    rnek 3-17: Aada verilen deerleri srasyla bir ArrayListe ekledikten sonraTevfik,123 ve 3.14 deerlerini silen kodu yaznz.

    - 123, - Tevfik, - H,

    - true, - 3.14d, - 3.666f ArrayList liste = new ArrayList();liste.Add(123);liste.Add("Tevfik");liste.Add('H');liste.Add(true);liste.Add(3.14d);liste.Add(3.666f);

    Console.WriteLine("Remove ileminden nce liste:");

    foreach (object obj in liste)Console.WriteLine(obj);

    liste.Remove("Tevfik");liste.Remove(123);liste.Remove(3.14d);

    Console.WriteLine("Remove ileminden sonra liste:");foreach (object obj2 in liste)

    Console.WriteLine(obj2);

    Yukardaki kod paras altrld zaman aadaki gibi bir ekran kts alrz.

    Resim 0-17. rnek 3.17nin Ekran kts

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    60/66

    56

    Yukardaki kod parasn incelersek ve Resim 3.17den de grld gibi liste

    dizisinden Tevfik,123 ve 3.14d nesnelerinin silindiini grebiliriz.3.5.6. RemoveAt Metodu:

    Parametre olarak verilen indeks konumundaki eleman siler.

    Kullanm:

    liste.RemoveAt(indeks); //indeks olarak verilen konumda bulunaneleman siler.

    rnek 3-18: Aada verilen deerleri srasyla bir ArrayListe ekledikten sonra 2. ve4. indeksteki elemanlar silen kodu yaznz.

    - 123, - Tevfik, - H,- true, - 3.14d, - 3.666f

    ArrayList liste = new ArrayList();liste.Add(123);liste.Add("Tevfik");liste.Add('H');liste.Add(true);liste.Add(3.14d);liste.Add(3.666f);

    Console.WriteLine("Remove ileminden nce liste:");

    foreach (object obj in liste)Console.WriteLine(obj);

    liste.RemoveAt(2);

    Console.WriteLine("Remove ileminden sonra liste:");foreach (object obj2 in liste)

    Console.WriteLine(obj2);

    Yukardaki kod paras altrld zaman aadaki gibi bir ekran kts alrz.

    Resim 0-18. rnek 3-18'in Ekran kts

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    61/66

    57

    3.5.7. Sort Metodu:

    ArrayList ierisindeki elemanlar kkten bye sralar.

    Kullanm:

    liste.Sort();

    rnek 3-19: Klavyeden girilen 5 adet ismi bir ArrayList ierisine kaydedin ve bunlarAdan Zye sralayan kodu yaznz.

    ArrayList liste = new ArrayList();string isim;

    for (int i = 1; i

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    62/66

    58

    UYGULAMA FAALYET

    lem Basamaklar neriler0dan klavyeden girilen sayya kadar olansaylardan tek olanlar tekSayilar dizisinde, ift olanlar da ciftSayilar dizisinde

    saklayan daha sonra bu dizileri ayr ayrekrana yazdran program yaznz.

    Dngnn biti deerini klavyedengirilen say olarak belirleyiniz.

    Dng sayacn kontrol edip tek isetekSayilar dizisine, ift ise ciftSayilardizisine ekleyiniz.

    Herhangi bir dng yardmyla dizileriayr ayr ekrana yazdrnz.

    Bir renciye ait 3 yazl ve 2 szl notunu

    bir dizi ierisinde saklayan ve daha sonrabu notlarn ortalamasn hesaplayan Ortalama 45e eit ya da bykse

    ekrana Dersi Getin, Deilse Dersten Kaldn

    yazdran programn kodunu yaznz.

    Notlar bir dizi ierisinde saklaynz.

    Dizi ierisinden bir dng ile notlarokuyup ortalamasn bulunuz.

    Ortalamann 45e eit ya da byk olupolmadn kontrol ediniz.

    Ortalamann durumuna gre ekrana ilgilidurumu yazdrnz.

    Snftaki arkadalarnzn isim, telefon, e-posta adresi

    bilgilerini saklayacanz diziler oluturupbu bilgileri bir dng yardmyla bu dizilerekaydeden,

    Daha sonra klavyeden girilen isme aitbilgileri ekrana getiren, Eer klavyedengirilen isim kaytlarda bulunamazsa ekranaKayt bulunamad mesaj verenprogramn kodunu yaznz

    simler, telefon ve e-posta adresleri iinayr ayr diziler oluturunuz.

    Bir kiiye ait bilgilerin indeksnumaralarnn 3 dizide de ayn olmasnadikkat ediniz.

    Dizilerde arama metodu ile ilgili rneiinceleyin ve isim dizisinde klavyedengirilen isme gre arama yaptrnz.

    Dnen sonuca gre ilgili bilgileri/mesajekrana yazdrnz.

    Klavyeden bir dizi boyutu girin. Daha sonradizi boyutu kadar ondalkl sayy bu diziierisine ekleyin. Diziye eklenen busaylarn Toplamn, Aritmetik ortalamasn, En byk deerini En kk deerini

    ekrana yazdran program yaznz.

    Klavyeden girilen sayy dizinin boyutuolarak belirleyiniz.

    Girilen sayya gre bir dngoluturunuz.

    Dng yardmyla kullancnn girmiolduu saylar diziye ekleyiniz.

    Dizi ierisindeki deerlerin toplamnbulunuz.

    Dizi ierisindeki deerlerin aritmetikortalamasn bulunuz.

    Diziyi sralaynz. En byk ve en kk elemanlar

    bulunuz.

    UYGULAMA FAALYET

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    63/66

    59

    LME VE DEERLENDRME

    Bu faaliyet kapsamnda kazandnz bilgileri, aadaki sorular cevaplayarakbelirleyiniz.

    1. Tek boyutlu dizilerle ilgili aada verilenlerden hangisi yanltr?A) Diziler, ayn tipteki deikenleri tek bir adla saklayabildiimiz veri yaplardr.B) Diziler tanmlanrken kapasiteleri belirlenmelidir.C) Programn ak esnasnda dizilerin kapasiteleri deitirilebilir.D) Programn ak esnasnda dizilerin trleri deitirilemez.

    2. Dizilerin kapasiteleri tanmlanrken kullanlan karakterler aadaki hangi kta doru

    olarak verilmitir?A) {}B) []C) ()D)

    3. int[] dizi=new int[10] eklinde tanmlanan bir dizi iin aada verilenlerden hangisikesinlikle yanltr?A) Dizinin son eleman 10.indekse sahiptir.B) Dizinin ilk eleman 0.indekse sahiptir.C) Dizinin son eleman 9.indekse sahiptir.

    D) Dizi maksimum 10 eleman barndrabilir.

    4. Aada verilen dizilerle ilgili metotlardan hangisi dizi ierisindeki elemanlar silmeyeyarar?A) IndexOfB) ReverseC) SortD) Clear

    5. Dinamik diziler (ArrayList) ile ilgili verilenlerden hangisi yanltr?A) Dinamik dizilerin kapasiteleri programn ak esnasnda deitirilebilirler.B) Count zellii dinamik dizilerin ierisindeki eleman saysn verir.C) Capacity zellii dinamik dizilerin ierisindeki eleman saysn verir.D) Dinamik diziler ierisinde farkl trlerde veri depolayabiliriz.

    DEERLENDRME

    Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevapverirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz.Cevaplarnzn tm doru Modl Deerlendirmeye geiniz.

    LME VE DEERLENDRME

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    64/66

    60

    MODL DEERLENDRMEAadaki cmlelerin banda bo braklan parantezlere, cmlelerde verilen

    bilgiler doru ise D, yanl ise Y yaznz.

    1. ( ) Bir switch blounda ayn sabite sahip birden fazla case ifadesi yer alabilir.2. ( ) Float veri tipi bir case sabiti olarak kullanlabilir.3. ( ) default blou bir Switch-Case yapsnda bulunmasa da olur.4. ( ) -ie birden fazla if ifadesi kullanlamaz.5. ( ) Eer koulun salanmamas durumunda ilem yaplmas isteniyorsa, else ifadesine

    gerek duyulur.6. ( ) Eer If veya Else ifadelerinden sonra sadece bir komut yaz lacak ise kme

    parantezleri ({}) kullanlmayabilir.7. ( ) Bir case blou ierisinde break komutu kullanlmazsa, hata mesaj alrz.8. default anahtar kelimesi switch-case yaps ierisinde her zaman case ifadelerinden

    nce yer almaldr.9. ( ) For dngsnde saya char trnde de olabilir.10. ( ) For dngsnde koul salanmad mddete dng altrlmaz.11. ( ) Dngler yalnzca ileri dnk sayma ilemi gerekletirir, geriye doru sayma

    ilemi gerekletiremezler.12. ( ) While dngs koul yanl (false) iken kme parantezleri ({}) ile belirlenen

    alandaki ilemleri tekrarlar.

    13. ( ) Foreach, dizi (Array) ve koleksiyon ( collection ) tabanl nesnelerin elemanlarzerinden ilerleyen bir dngdr.14. ( ) Foreach dngsnde belirtilen deiken tipinin koleksiyon ile ayn veya uyumlu

    bir veri tipi olmas gerekir.15. ( ) Goto anahtar szc ile bir dng ve koul blou ierisine dallanma ilemi

    gerekletirilebilir.16. ( ) Dallanma ilemi bir programda yalnzca ileriye dnk yaplabilir.17. ( ) Tek boyutlu diziler yalnzca tanmlanrken belirlenen trde veri depolayabilirler.18. ( ) Diziler balangta belirlenen kapasitelerinden fazla veri depolayabilirler.19. ( ) Bir dizinin indeks deeri negatif (-) bir tam say olabilir.20. ( ) Length zellii dizinin kapasitesini verir.

    21. ( ) Sort metodu, dizi ierisindeki elemanlar bykten ke sralamak iinkullanlr.22. ( ) Reverse metodu, parametre olarak verilen dizinin eleman srasn tersine evirir.23. ( ) Dinamik dizilerin kapasiteleri, programn ak esnasnda deitirilebilir.24. ( ) Dinamik dizilerde yalnzca ayn trdeki verileri depolayabiliriz.25. ( ) Insert metoduyla bir dinamik diziye veri eklendiinde, o indekste bulunan

    elemann zerine yazlr.

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

    MODL DEERLENDRME

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    65/66

    61

    CEVAP ANAHTARLARIRENME FAALYET-1N CEVAP ANAHTARI

    1 D2 C3 D4 A5 B

    RENME FAALYET-2NN CEVAP ANAHTARI

    1 A2 D3 C4 B5 C

    RENME FAALYET-3N CEVAP ANAHTARI

    1 C

    2 B3 A4 D5 C

    MODL DEERLENDRME SORULARI CEVAP ANAHTARI

    1 Y 14 D2 Y 15 Y3 D 16 Y4 Y 17 D

    5 D 18 Y6 D 19 Y7 D 20 D8 Y 21 Y9 D 22 D

    10 D 23 D11 Y 24 Y12 Y 25 Y13 D

    CEVAP ANAHTARLARI

  • 8/3/2019 PT 03 Kontrol Deyimleri 482BK0124

    66/66

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

    MSDN : Introduction to C# Programming for the Microsoft .NETPlatform (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

    KAYNAKA