c programlama ders 6

Upload: emre-doenmez

Post on 06-Apr-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 C programlama ders 6

    1/28

    BLNRLK ALANI ve MR,

    KONTROL DEYMLER

    r.Gr. Mahmut YALIN

    stanbul niversitesiElektrik Elektronik Mhendislii

    Kaynak:C ve Sistem ProgramclarDerneiKurs notu

  • 8/3/2019 C programlama ders 6

    2/28

    Bilinirlik AlanBilinirlik alan (scope), bir ismin tannabildii program araldr. Derleyiciyebildirilenisimler, derleyici tarafndan her yerde bilinmez. Her isim derleyicitarafndan ancak "o ismin bilinirlik alan" iinde tannabilir. Bilinirlik alandorudan kaynak kod ile ilgili bir kavramdr, dolaysyla derleme zamannailikindir. C dilinde derleyici, bildirimleri yaplan deikenlere kaynak kodunancak belirli blmlerinde ulalabilir. Yani bir deikenin tanmlanmas, odeikene kaynak dosyann her yerinden ulalabilmesi anlamna gelmez.Bilinirlik alanlar C standartlar tarafndan 4 ayr grupta toplanmtr:i. Dosya Bilinirlik Alan (File scope) :Bir ismin bildirildikten sonra tm kaynakdosyaiinde, yani tanmlanan tm ilevlerin hepsinin iinde bilinmesidir.ii. Blok Bilinirlik Alan (Block scope):Bir ismin bildirildikten sonra yalnzca bir blokiinde, bilinmesidir.iii. lev Bilinirlik Alan (Function Scope):Bir ismin, bildirildikten sonra yalnzca birblokiinde bilinmesidir. Yalnzca goto etiketlerini kapsayan zel bir tanmdr.iv. lev Bildirimi Bilinirlik Alan (Function Prototype Scope):lev bildirimlerindeki,ilevparametre ayrac iinde kullanlan isimlerin tannabilirliini kapsayan birtanmdr.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    3/28

    Bir kaynak dosya iinde tanmlanan deikenler, bilinirlik alanlarna gre "yerel"ve "global" olmak zere ikiye ayrlabilir:

    Yerel DeikenlerBloklarn iinde ya da ilevlerin parametre ayralar iinde tanmlanandeikenlere, yerel deikenler (local variables) denir. C dilinde bloklarn iindetanmlanan deikenlerin tanmlama ilemlerinin, bloun en banda yaplmasgerektiini biliyorsunuz. Yerel deikenler, blok iinde tanmlanan deikenlerdir,bir ilevin ana blou iinde ya da isel bir blok iinde bildirilmi olabilirler.

    Yerel deikenlerin bilinirlik alan, blok bilinirlik alandr. Yani yerel deikenlereyalnzca tanmlandklar blok iinde ulalabilir. Tanmlandklar bloun dahadndaki bir blok iinde bu deikenlere eriilemez.Aadaki programda tanmlanan deikenlerin hepsi yereldir. nk x, y, zisimlideikenler bloklarn iinde tanmlanyor. Bu deikenler yalnzcatanmlanm olduklar blok iinde kullanlabilir. Tanmlandklar blok dnda

    bunlarn kullanlmas geersizdir.Yorum satrlar iine alnan deyimler geersizdir. z ve y deikenleri bilinirlikalanlarnn dnda kullanlmtr. Yukardaki rnekte deikenlerin hepsi yerelolduu iin blok bilinirlik alan kuralna uyar, ancak bu durum, 3 deikenin debilinirlik alannn tamamen ayn olduu anlamna gelmez.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    4/28

    #include

    int main()

    {

    int x = 10;

    printf("x = %d\n", x);{

    int y = 20;

    printf("y = %d\n", y);

    x = 30;

    {

    int z = 50;

    y = 60;printf("z = %d\n", z);

    printf("x = %d\n", x);

    printf("y = %d\n", y);

    }

    z = 100; /* Geersiz! */y = x;

    printf("x = %d\n", x);

    printf("y = %d\n", y);

    }

    y = 500; /* Geersiz! */printf("x = %d\n", x);

    return 0;

    } stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    5/28

    Bu programdax deikeni en geni bilinirlik alanna sahipken y deikeni dahakk ve z deikeni de en kk bilinirlik alanna sahiptir.levlerin parametre deikenleri de (formal parameters), blok bilinirlik alankuralna uyar. Bu deikenler ilevin ana blou iinde bilinir. lev parametredeikeninin bilinirlik alan, ilevin ana blounun kapanmasyla sonlanr. Yaniilev parametre deikeninin bilinirlik alan, ilevin ana bloudur.void func (int a, double b)

    {

    /* a ve b bu ilevin her yerinde bilinir. */}Yukardaki rnekte func ilevinin parametre deikenleri olan a ve b isimlideikenler, func ilevinin her yerinde kullanlabilir.Global DeikenlerC dilinde bloklarn dnda da deikenlerin tanmlanabileceini biliyorsunuz.

    Bloklarn dnda tanmlanan deikenler"global deikenler" (global variables)olarakisimlendirilir.Derleme ileminin bir yn vardr. Bu yn kaynak kod iinde yukardan aayadorudur. Bir deiken yerel de olsa global de olsa, tanmlamas yaplmadannce kullanlmas geersizdir. Global deikenler tanmlandklar noktadansonra kaynak dosyann sonuna kadar her yerde bilinir:

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    6/28

    stanbul niversitesiElektrik Elektronik Mhendislii

    #include int g;void func()

    {g = 10;}int main(){g = 20;

    printf("g = %d\n", g); /* g = 20 */func();printf("g = %d\n", g); /* g = 10 */return 0;}Yukardaki rnekte g deikeni blok dnda tanmland iin -ya da hibir ileviniinde tanmlanmad iin- global deikendir. g deikeninin bilinirlik alan, dosyabilinirlikalandr. Yani g deikeni, tanmlandktan sonra tm ilevlerin iindekullanlabilir. Yukardaki programda nce g global deikenine 20 deeriatanyor.Daha sonra bu deer printf ileviyle ekrana yazdrlyor. Daha sonra funcilevi arlyor. func ilevi arlnca kodun ak func ilevine geer.

  • 8/3/2019 C programlama ders 6

    7/28

    Ayn simli DeikenlerC dilinde ayn isimli birden fazla deiken tanmlanabilir. Genel kural udur: ki

    deikenin bilinirlik alanlar ayn ise, bu deikenler ayn ismi tayamaz. Aynismi tamalar derleme zamannda hata oluturur. ki deikenin bilinirlikalanlarnn ayn olmas ne anlama gelir? ki deikenin bilinirlik alanlar, aynkapanan kme ayrac ile sonlanyorsa, bu deikenlerin bilinirlik alanlar ayndemektir.{float a;int b;double a; /* Geersiz */{int c;

    /*...*/}}Yukardaki kod geersizdir. nk her iki a deikeninin de bilinirlik alan ayndr.Farkl bilinirlik alanlarna sahip birden fazla ayn isimli deiken tanmlanabilir.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    8/28

    #include int main(){

    int x = 100;printf("%d\n", x);{int x = 200;printf("%d\n", x);{int x = 300;printf("%d\n", x);}}return 0;}Yukardaki program parasnda bir hata bulunmuyor. nk her xdeikeninin de bilinirlik alanlar birbirlerinden farkldr. Peki yukardaki rnekte ibloklarda x ismikullanldnda derleyici bunu hangix deikeni ile ilikilendirir?Bir kaynak kod noktas, ayn isimli birden fazla deikenin bilinirlik alan iindeise, bu noktada deikenlerden hangisine eriilir?

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    9/28

    Derleyici, bir ismin kullanm ile karlatnda bu ismin hangi yazlmsalvarla ait olduunu bulmaya alr. Bu ileme "isim arama" (name lookup)denir. sim arama, darbilinirlik alanndan geni bilinirlik alanna doru yaplr.

    Yani derleyici sz konusu ismi nce kendi blounda arar. Eer isim, bu blokiinde tanmlanmam ise bu kez isim kapsayan bloklarda aranr. sim,kapsayan bloklarda da bulunamaz ise bu kez global isim alannda aranr.Dar bilinirlik alanna sahip isim, daha geni bilinirlik alannda yer alan ayn ismimaskeler, onun grnmesini engeller. Aadaki program inceleyin:void func1()

    {

    int k;

    /***/

    }

    void func2()

    {

    int k;

    /***/}

    void func3()

    {

    int k;

    /***/

    }

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    10/28

    Ayn isimli hem bir global hem de bir yerel deikene eriilebilen bir noktada,eriilen yerel deiken olur. nk ayn bilinirlik alannda, birden fazla ayn isimlideiken olmas durumunda, o alan iinde en dar bilinirlik alanna sahip olannaeriilebilir. Aadaki kodu inceleyin:

    #include int g = 20; /* g global deiken */void func()

    {

    /* global g deikenine atama yaplyor. */g = 100;

    /* global g deikeninin deeri yazdrlyor. */printf("global g = %d\n", g);}

    int main()

    {

    int g; /* g yerel deiken *//* yerel g deikenine atama yaplyor */

    g = 200;/* yerel g yazdrlyor. */printf("yerel g = %d\n", g);

    func();

    /* yerel g yazdrlyor. */printf("yerel g = %d\n", g);

    return 0;

    } stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    11/28

    Nesnelerin mrlerimr(storage duration / lifespan), nesnelerin, programn alma zaman iindebellekteyer kaplad sreyi anlatmak iin kullanlan bir terimdir. Bir kaynak kodiinde tanmlanm deikenlerin hepsi, program almaya baladnda aynzamanda yaratlmaz. Programlarda kullanlan varlklar, mrleri bakmndan gruba ayrlabilir:1. Statik mrl varlklar2. Otomatik mrl varlklar3. Dinamik mrl varlklari. Statik mrl VarlklarStatik mrl varlklar(static duration static storage class), programn almayabalamasyla bellekte yerlerini alr, programn almas bitene kadar varlklarnsrdrr, yani bellekte yer kaplar. Statik mrl varlklar, genellikle ama kod (.obj)

    iine yazlr.ii. Otomatik mrl VarlklarOtomatik mrl nesneler programn almasnn belli bir zamannda yaratlan,belli sre etkinlik gsterdikten sonra yok olan, yani mrlerini tamamlayannesnelerdir. Bu tr nesnelerin mrleri, programn toplam alma sresindenksadr.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    12/28

    Yerel deikenler, otomatik mrldr. Programn alma zamanndatanmlandklar bloun almas baladnda yaratlrlar, bloun almasbitince yok olurlar, yani mrleri sona erer.void func(int a, int b){int result;

    /***/}Yukardaki func ilevinin ana blou iinde result isimli bir yerel deiken

    tanmlanyor. Programn almas srasnda func ilevinin koduna girildiinderesult deikeni yaratlr. Programn ak func ilevinden ktnda, resultdeikeninin mr sona erer.Statik mrl deikenlerle otomatik mrl deikenler arasnda ilkdeerverme (initialization) asndan da fark vardr. Statik mrl olan globaldeikenlere de yereldeikenlerde olduu gibi ilkdeer verilebilir.

    lkdeer verilmemi ya da bir atama yaplmam bir yerel deikenin iinde birp deer bulunur. Bu deer o an bellekte o deiken iin ayrlm yerdebulunan 1 ve 0 bitlerininoluturduu deerdir.lkdeer verilmemi statik mrl deikenlerin 0 deeri ile balatlmas gvencealtndadr. lk deer verilmemi ya da bir atama yaplmam global deikenleriinde her zaman 0 deeri vardr.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    13/28

    iii. Dinamik mrl VarlklarDinamik bellek ilevleri ile yerleri ayrlm nesneler, dinamik mrldr.

    Global ve Yerel Deikenlerin KarlatrlmasBir programda bir deiken gereksinimi durumunda, global ya da yerel deikenkullanlmas baz avantajlar ya da dezavantajlar getirebilir. Ancak genel olarakglobal deikenlerin baz sakncalarndan sz edilebilir. zel bir durum szkonusu deil ise, yerel deikenler global deikenlere tercih edilmeli, globaldeikenler ancak zorunlu durumlarda kullanlmaldr. Global deikenler

    aadaki sakncalara neden olabilir:1.Global deikenler statik mrl olduklarndan programn sonuna kadarbellekte yerlerini korur. Bu nedenle bellein daha verimsiz olarakkullanlmalarna neden olurlar.2. Global deikenler tm ilevler tarafndan ortaklaa paylaldndan, globaldeikenlerin oka kullanld kaynak dosyalar okumak daha zordur.

    3. Global deikenlerin ska kullanld bir kaynak dosyada, hata aramamaliyeti daha yksektir. Global deikene ilikin bir hata sz konusu ise, buhatay bulmak iin tm ilevler aratrlmaldr. Tm ilevlerin global deikenlereulaabilmesi, bir ilevin global bir deikeni yanllkla deitirebilmesi riskini dedourur.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    14/28

    4. Global deikenlerin kullanld bir kaynak dosyada, deiiklik yapmak dadaha fazla aba gerektirir. Kaynak kodun eitli blmleri, birbirine globaldeiken kullanmlaryla sk bir ekilde balanm olur. Bu durumda kaynak kodiinde bir yerde deiiklik yaplmas durumunda baka yerlerde de deiiklikyapmak gerekir.

    5. Programclarn ou, global deikenleri mmkn olduu kadar az kullanmakister. nk global deikenleri kullanan ilevler, baka projelerde kolaylklakullanlamaz. Kullanldklar projelerde de ayn global deikenlerin tanmlanmolmas gerekir. Dolaysyla global deikenlere dayanlarak yazlan ilevlerinyeniden kullanlabilirlii azalr.levlerin Geri Dn Deerlerini Tutan Nesneler

    levler geri dn deerlerini, geici bir nesne yardmyla kendilerini aranilevlere iletir. Aadaki program inceleyin:

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    15/28

    #include int add(int x, int y){return x + y;}int main(){int a, b, sum;

    printf("iki say girin: ");scanf("%d%d", &a, &b);sum = add(a, b);printf("toplam = %d\n", sum);return 0;}

    Bir ilevin geri dn deerinin tr aslnda, ilevin geri dn deerini iindetayacak geici nesnenin tr demektir. Yukarda tanm verilen add isimli ilevinmain ileviiinden arldn gryorsunuz. Programn ak, add ilevi iindereturn deyiminegeldiinde, geici bir nesne yaratlr. Bu geici nesne, returnifadesiyle ilkdeerini alr.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    16/28

    KONTROL DEYMLERC dilinde yazlm bir programn cmlelerine deyim(statement) denir.Baz deyimler, yalnzca derleyici programa bilgi verir. Bu deyimler derleyicininilem yapan bir kod retmesine neden olmaz. Byle deyimlere "bildirim deyimi"

    (declaration statement) denir.Baz deyimler derleyicinin ilem yapan bir kod retmesine neden olur. Byledeyimlere "yrtlebilir deyim" (executable statement) denir.Yrtlebilir deyimler de farkl gruplara ayrlabilir:Yaln Deyim:Bir ifadenin, sonlandrc atom ile sonlandrlmasyla oluan deyimlere yaln

    deyim (simple statement) denir;x = 10;

    y++;

    func();

    Yukarda 3 ayr yaln deyim yazlmtr.Bo Deyim:

    C dilinde tek bana bulunan bir sonlandrc atom ';', kendi bana bir deyimoluturur. Bu deyime bo deyim (null statement) denir. Bo bir blok da bo deyimoluturur:;

    {}

    Yukardaki her iki deyim de bo deyimdir.stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    17/28

    Bileik Deyim:Bir blok iine alnm bir ya da birden fazla deyimin oluturduu yapya, bileikdeyim (compound statement) denir. Aada bir bileik deyim grlyor.{

    x = 10;y++;

    func();

    }

    Kontrol deyimi:

    Kontrol deyimleri, programn ak ynn deitirebilen deyimlerdir. Kontrol

    deyimleri ile programn ak farkl noktalara ynlendirilebilir. Bunlar, C dilininnceden belirlenmi baz szdizimi kurallarna uyar, kendi szdizimleri iinde enaz bir anahtar szck ierir. C dilinde aadaki kontrol deyimleri vardr:if deyimiwhile dng deyimido while dng deyimi

    for dng deyimibreak deyimicontinue deyimiswitch deyimigoto deyimireturn deyimi

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    18/28

    if DEYMC dilinde program akn denetlemeye ynelik en nemli deyim if deyimidir.En yaln biimiyle if deyiminin genel szdizimi aadaki gibidir:if (ifade)

    deyim;if ayrac iindeki ifadeye koul ifadesi (conditional expression) denir.if ayracn izleyen deyime, if deyiminin doru ksm (true path) denir.if deyiminin doru ksmn oluturan deyim, bir yaln deyim (simple statement)olabileceigibi, bir bo deyim (null statement), bir bileik deyim (compoundstatement) ya dabaka bir kontrol deyimi de (control statement) olabilir.

    Yaln if deyiminin yrtlmesi aadaki gibi olur:nce koul ifadesinin saysal deerini hesaplar. Hesaplanan saysal deer,mantksal DORU ya da YANLI olarak yorumlanr. Koul ifadesinin hesaplanandeeri 0 ise yanl, 0'dan farkl bir deer ise doru olarak yorumlanr.int main()

    {

    int x;printf("bir sayi girin : ");

    scanf("%d", &x);

    if (x > 10)

    printf("if deyiminin doru ksm!\n");return 0;

    }stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    19/28

    Yanl Ksm Olan if Deyimi

    if kontrol deyimi, else anahtar szcn de ierebilir. Byle if deyimine, yanlksm olan if deyimi denir. Yanl ksm olan if deyiminin genel biimi aadakigibidir:if (ifade)

    deyim1;

    else

    deyim2;Bu kez if deyiminin doru ksmn izleyen deyimden sonra else anahtarszcnn, daha sonra ise bir baka deyimin yer aldn gryorsunuz. Genelbiimdeki deyim2'ye ifdeyiminin yanl ksm (false path) denir.if deyiminin koul ifadesi, mantksal olarak DORU ya da YANLI olarakyorumlanr. Bukez koul ifadesinin DORU olmas durumunda deyim1, YANLI

    olarak yorumlanmas durumunda deyim2 yaplr. Yanl ksm olan if deyimi, birkoul ifadesinin doru ya da yanl olmasna gre iki ayr deyimden birininyaplmasna yneliktir. Yani ifade doru ise bir i, yanl ise baka bir i yaplr.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    20/28

    #include

    int main()

    {

    char ch;

    printf("bir karakter girin : ");

    ch = getchar();

    if (ch >= 'a' && ch = 'a' && ch

  • 8/3/2019 C programlama ders 6

    21/28

    if deyiminin doru ve/veya yanl ksm bir bileik deyim olabilir. Bu durumda,koulifadesinin doru ya da yanl olmasna gre, birden fazla yaln deyimin

    yrtlmesi salanabilir. Aadaki rnei inceleyin:/***/

    if (x > 0) {

    y = x * 2 + 3;

    z = func(y);

    result = z + x;

    }else {

    y = x * 5 - 2;

    z = func(y - 2);

    result = z + x - y;

    }

    /***/Yukardaki if deyiminde, x > 0 ifadesinin doru olup olmasna gre, resultdeikeninin deeri farkl ilemlerle hesaplanyor. if deyiminin hem doru hem deyanl ksmlarn bileik deyimler oluturuyor.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    22/28

    Bir if deyiminin yanl ksm olmak zorunda deildir. Ancak bir if deyimi yalnzcaelseksmna sahip olamaz. Bu durumda if deyiminin doru ksmna bo deyim

    ya da bo bileik deyim yerletirilmelidir:if (ifade)

    ;

    else

    deyim1;

    ya da

    if (ifade){ }

    else

    deyim1;

    Yalnzca yanl ksm olan, doru ksm bir bo deyim olan bir if deyimi,okunabilirlikasndan iyi bir seenek deildir. Byle durumlarda daha iyi bir

    teknik, koul ifadesinin mantksal tersini alp, if deyiminin yanl ksmn ortadankaldrmaktr:if (!ifade)

    deyim1;

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    23/28

    Aadaki kod parasn inceleyin:/***/

    if (x > 5);

    else {

    func1(x);

    func2(x);

    }

    /***/Yukardaki if deyiminde, x deikeninin deeri 5'ten bykse bir ey yaplmyor,aksihalde func1 ve func2 ilevleri x deikeninin deeri ile arlyor. Koulifadesi tersevrilerek if deyimi yeniden yazlrsa:/***/

    if (x

  • 8/3/2019 C programlama ders 6

    24/28

    if ayracnn iinde, ifade tanmna uygun herhangi bir ifade bulunabilir:if (10)

    deyim1;

    if (-1)

    deyim2;

    Yukardaki koul ifadelerinin deeri, her zaman doru olarak yorumlanr. nk ifadeler,sfrdan farkl deere sahiptir.Aadaki koul ifadesi ise her zaman yanl olarak yorumlanacandan if deyiminin doruksm hibir zaman yrtlmez:if (0)

    deyim1;Aadaki if deyiminde ise, x deikeninin deerinin 0 olup olmamasna gre, deyim1 vedeyim2 yrtlr:if (x) {

    deyim1;

    deyim2;

    /***/

    }Yukardaki yapyla aadaki yap edeerdir:if (x != 0) {

    deyim1;

    deyim2;

    }

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    25/28

    if (!x) {

    deyim1;

    deyim2;

    }

    Bu if deyiminde ise ancak x deikeninin deerinin 0 olmas durumunda deyim1ve deyim2 yrtlr.Yine yukardaki yapyla aadaki yap edeerdir:if (x == 0) {

    deyim1;

    deyim2;

    } e if Deyimleriif deyiminin doru ya da yanl ksmn, baka bir if deyimi de oluturabilir:if (ifade1)

    if (ifade2) {

    deyim1;

    deyim2;deyim3;

    }

    deyim4;

    Bu rnekte ikinci if deyimi birinci if deyiminin doru ksmn oluturur. Birinci veikinci ifdeyimlerinin yanl ksmlar yoktur.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    26/28

    ie if deyimlerinde, son if anahtar szcnden sonra gelen else anahtarszc, en iteki if deyimine ait olur:if (ifade1)

    if (ifade2)

    deyim1;

    else

    deyim2;

    Yukardaki rnekte, yazm biimi nedeniyle else ksmnn birinci if deyimine ait

    olmas gerektii gibi bir grnt verilmi olsa da, else ksm ikinci if deyimineaittir. else anahtarszc, bu gibi durumlarda, kendisine yakn olan if deyimineait olur (dangling else). else anahtar szcnn birinci if deyimine ait olmasisteniyorsa, birinci if deyiminindoru ksm bloklanmaldr:if (ifade1) {

    if (ifade2)

    deyim1;}

    else

    deyim2;

    Yukardaki rnekte else ksm birinci if deyimine aittir.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    27/28

    if (ifade1) {if (ifade2)

    deyim1;

    else {

    deyim2;

    deyim3;

    }deyim4;

    }

    else

    deyim5;

    Yukardaki rnekte birinci if deyiminin doru ksm, birden fazla deyimden

    olutuu iin -bu deyimlerden birisi de yine baka birif deyimidir- bloklamayaplyor. deyim5, birinci ifdeyiminin yanl ksmn oluturur.

    stanbul niversitesiElektrik Elektronik Mhendislii

  • 8/3/2019 C programlama ders 6

    28/28

    TO BE CONTINUED...