- Yasaklandı
- #1
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1.PROGRAMLAMA NEDİR [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Programlama bilgisayarın yapacağı işlemleri kontrol etmek için geliştirilmiş bir yöntem olup, bilgisayar kullanımını önemli ölçüde kolaylaştırmıştır. İlk dev bilgisayarlar yapıldığında bunlar çok fazla aç-kapa düğmeleriyle sınırlı olduğundan, basit işlemleri yapabiliyorlardı. (Tabii ki, elektrik hızıyla bağlantılı olarak bu işlemleri çok kısa sürede halledip sonucu veriyorlardı. Dolayısıyla bilgisayarların önemi hız sayesinde daha da belirginleşti.) Bilgisayara bir işlem yaptırmak için bilgisayarın iç yapısını bilmek ve uzun süre çalışmak gerekiyordu. İşte tüm bu olumsuz yanları olumluya dönüştürebilecek bir yol bulundu. O da programlama! [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.PROGRAMLAMA NASIL YAPILIR?[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Programlama, insan beyniyle oluşturulan mantıksal işlemlerin, bilgisayara aktarılmasında şu yolu izlemektedir:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Sadece insanın anlayacağı kısım—– İnsan zekası— > Derleyicinin ve programlayanın anlayacağı kısım —–Derleyici—>Sadece bilgisayarın anlayacağı kısım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Görüldüğü gibi bu işlemler zincirinde programlayıcının yapması gereken sadece, matematiksel olarak istenilen işlemlerin taslağını oluşturmak, daha sonra da bunu derleyicinin anlayabileceği şekle sokmaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]3.MATEMATİKSEL TASLAK NEDİR?[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Matematiksel taslağı bir örnek vererek açıklığa kavuşturalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Mesela, öyle bir program yapalım ki, bizden sırasıyla iki sayı girmemizi istesin ve bunları toplayarak ekrana yazsın. En basit mantıkla bunu bilgisayara nasıl yapmasını söylerdiniz? Şöyle:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod
rogramı başlat. Ekrana şunu yaz: (Kullanıcıdan girilen ilk sayı ve kullanıcıdan girilen ikinci sayının toplamı) Programı kapat.Bu örnek basit olduğu için bu yöntemle oluşturulan bir taslak çok da karmaşık görünmedi. Peki şöyle bir program yaptığınızı düşünün. Klavyeden girilen 220 adet kelimeyi ekrana alfabetik sıraya göre dizen bir program. Bunu yukarıdaki yöntemle yazarsanız kafanız karmakarışık bir hal alabilir. Peki bunun kolay yolu nedir? Tabii ki semboller kullanarak taslağı anlaşılır hale getirmek. Yukarıdaki taslak örneğini bir de semboller kullanarak oluşturalım[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod
rogramı başlat. Kullanıcıdan bir sayı girmesini iste ve bu sayıya sayı1 de. Kullanıcıdan bir sayı girmesini iste ve bu sayıya sayı2 de. Ekrana (sayı1+sayı2) yaz. Programı kapat. Sanırım herkes ikinci yolun daha matematiksel göründüğünde hemfikir olmuştur. Bunun adına neden matematiksel taslak dediğimin sebebi de buydu işte![/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]4.DEĞİŞİK TASLAK HAZIRLAMA YOLLARI [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Matematiksel taslağı hazırlarken yüzlerce değişik yol izleyebilirsiniz. Fakat bunlardan en iyisi, kısa olan, anlaşılır olan, ve de hızlı olan yoldur. Bir örnek daha vererek bu konuda bir fikir edinmenizi sağlayayım: [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Öyle bir program yapalım ki, 1"den 5"e kadar olan sayıların çarpımlarını bulsun.(5 faktoriyel yani 1*2*3*4*5) Tabi şimdi bunu bulmaya ne gerek var diyenler olabilir. Örnek anlaşılır olsun diye küçük sayı verdim. Daha büyük bir sayıda programın taslak hazırlama yolunun ne kadar önemli olduğunu sanırım anlayacaksınız.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:Uzun olan yol: Programı başlat. sayı1"e 1 değerini ata. sayı2"ye 2 değerini ata. sayı3"e 3 değerini ata. sayı4"e 4 değerini ata. sayı5"e 5 değerini ata. Ekrana (sayı1*sayı2*sayı3*sayı4*sayı5) yaz. Programı kapat. Kod:Kısa olan yol: Programı başlat. sayaç"a 1 değerini ata. faktoriyel"e 1 değerini ata. sayaç 5 ten büyük olana kadar aşağıdaki işlemi yap. {faktoriyel değerini, faktoriyel değeri * sayaç yap. sayaç değerini 1 arttır. } Ekrana (faktoriyel) yaz. Programı kapat.Görüldüğü gibi uzun yolda 5 tane ayrı sembol kullanmak zorunda kaldık. Oysa ikinci yolda 2 tane sembol yeterli oldu. Sayıyı 5 yerine 2000 olarak alsaydık ve uzun yoldan programı yazsaydık 2000 adet sembol gerekecekti. Oysa kısa yoldan yapılan programda sadece 5 yerine 2000 yazmamız yeterli olacaktır. İşte tekrarlanan işlemler için kullanılan bu yönteme döngü denir. Değişik döngü tipleri vardır. Ama bunu kendi kafanızdan geliştirmenizi öneririm. Çünkü bu taslak hazırlama yolu, tamamen zekayla yapılır. İstediğiniz yöntemi geliştirebilir, istediğiniz yolu izleyebilirsiniz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi sırada matematiksel taslağı derleyicinin anlayacağı formata çevirmeyi öğrenmek var! [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]5.DERLEYİCİYLE HABERLEŞMEK [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Matematiksel taslağı hazırladıktan sonra bunu derleyiciye iletmek için bir haberleşme dili kullanmanız gerekmektedir. Buna da Programlama Dili denir. Programlama dilleri çeşitlidir ve her programlama dilinin de bir derleyicisi vardır. Biz başlangıç için Turbo C derleyicisini öneriyoruz. Dos ortamında programlar hazırlayabilen bu derleyici ile C dilinin tüm inceliklerini öğrenmeniz ve kullanmanız mümkün.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]6.C DİLİNİN TEMELİ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C dilindeki ana yapıyı inceleyerek başlayalım:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:#include **** main( ) { //Program başladığında yapılacak işlemler } Burada #include deyimi programın içereceği bazı fonksiyonların tanımlandığı dosyaları programa dahil etmek için kullanılır. Bu deyimi birden fazla kullanarak daha fazla komut dosyası ekleyebilirsiniz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]main( ) adından da anlaşıldığı gibi, programın ana işlemlerinin yapıldığı bir fonksiyondur.C dilinde fonksiyonlar çok önemlidir ve işlemler listesinin olduğu kısımlardır. Bu ana fonksiyon, program başlatıldığında hemen uygulamaya geçirilecek işlemlerin listesidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Her fonksiyon " { " karakteriyle açılır ve " } " karakteriyle kapanır. **** "in ne olduğu fonksiyonlar bölümünde açıklanmıştır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]7.SEMBOLLER (DEĞİŞKENLER)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bundan sonra sembollere değişkenler diyeceğiz. Çünkü değişkenler bu işlevi daha güzel açıklıyor. Program içinde değeri değişebilen semboller de diyebilirsiniz, fakat uzun olur[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"de değişkenler kullanılmadan önce mutlaka tanımlanmalıdırlar. Bu tanımlama değişkenin tipini belirtmek amacıyla yapılmalıdır.Değişken tipi, değişkenin içerdiği değerin türü demektir.(sayı,harf,kelime)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Başlıca değişken tipleri şunlardır:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int = tamsayı (-32 768 ile +32 767 arasında değer alır) float = virgüllü sayı (-3.4 E-38 ile +3.4 E+38 arasında değer alır) char = tamsayı(-128 ile +128 arasında değer alır ve her char tipi değişken sadece bir adet karaktere karşılık gelir.)Değişkenler fonksiyonların içinde tanımlanırsa, sadece o fonksiyon içinde geçerli olan bir değişken olur (lokal değişken).[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer "#include" satırlarından sonra tanımlanırsa tüm programda, yani tüm fonksiyonların içinde geçerli olur.(global değişken).[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kodeğişken tanımlanmasına örnekler: int sayi1; char karakter1; float sayi2; int sayi3,sayi4,sayi5;[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"deki en önemli şeylerden biri de noktalı virgüldür. Noktalı virgül, derleyiciye bir komutun sonunu haber verir. Noktalı virgül unutulduğu zaman program çalışmayacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"de aynı isimde iki değişken tanımlanamaz ve değişken isimlerinde Türkçe karakter kullanılamaz. Değişken isimleri rakam içerebilir ama rakamla başlayamaz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"de çok önemli bir ayrıntı da büyük-küçük harf duyarlılığı olmasıdır. örnek: sayi1 diye tanımlanan bir değişkene Sayi1 diye ulaşamazsınız. Yani Sayi1, sAYI1,sayI1,sayi1,… bunların hepsi farklı değişkenler olabilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]8.STANDART GİRDİ-ÇIKTI KOMUTLARI [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komutlardan en önemli iki tanesini görelim. Bu iki komutun bulunduğu include dosyası dır. Yani bu komutları kullanabilmek için programın başına[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include satırını eklemek gerekir[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]printf(yazılacaklar);[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Printf komutu ekrana bir şeyler yazdırmak için kullanılır. Yazılacaklar tırnak işaretleri içerisinde belirtilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kodrintf("Merhaba! Bu benim ilk komutum!");Bu komut ekrana Merhaba! Bu benim ilk komutum! yazdırır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Sembolleri yazdırmak içinse aşağıdaki yol izlenir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; float sayi2; char karakter1; printf("%d",sayi1); //sayi1 bir int tipi değişken olduğu için %d operatörü kullanılır. printf("%f",sayi2); //sayi2 bir float tipi değişken olduğu için %f operatörü kullanılır. printf("%c",karakter1); //karakter1 bir char tipi değişken olduğu için %c operatörü kullanılır. //Hepsini bir kerede yazdırmak içinse: printf("%d %f %c",sayi1,sayi2,karakter1); ///Aralara istenilen karakterler eklenebilir. Örnek: printf("sayı 1 = %d sayi 2 = %f karakter 1 = %c",sayi1,sayi2,karakter1); ///printf komutu yazmaya en son kaldığı yerden başlar. //Bir alt satıra geçmek için n karakteri kullanılır. (printf("Merhaba!n Alt satıra böyle geçilir.");scanf(girilenler);[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]scanf komutu kullanıcıdan bilgi almak için kullanılır. Alınan bilgiler değişkenlere aktarılır. Tırnak işaretleri içinde hangi tip değişken alınacağı belirtilir ve daha sonra değişken isimleri yazılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; scanf("%d",&sayi1);Bu komut programı durdurur. Kullanıcının "Enter" tuşuna basmasını bekler. "Enter" tuşuna basıldıktan sonra, klavyeden girilen değer sayi1 değişkenine aktarılır. Burada, sayi1"in önündeki & işareti atama operatörüdür.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Diğer tiplerin okunması aşağıdaki gibidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; float sayi2; char karakter1; scanf("%d",&sayi1); //sayi1 bir int tipi değişken olduğu için %d operatörü kullanılır. scanf("%f",&sayi2); //sayi2 bir float tipi değişken olduğu için %f operatörü kullanılır. scanf("%c",&karakter1); //karakter1 bir char tipi değişken olduğu için %c operatörü kullanılır. Hepsini bir kerede yazdırmak içinse: scanf("%d %f %c",&sayi1,&sayi2,&karakter1);[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]9. İLK C PROGRAMIMIZ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi de, ilk baştaki örnek programı c koduna çevirelim. Programımız klavyeden iki sayı girmemizi ve bunların toplamını ekrana yazdırmayı amaçlıyordu[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:include main( ) { int sayi1,sayi2,toplam; printf("Lütfen birinci sayıyı giriniz!n"); scanf("%d",&sayi1); printf(" Lütfen ikinci sayıyı giriniz!n"); scanf("%d",&sayi2) toplam=sayi1+sayi2; //buradaki = işareti atama operatörüdür. İşaretin sağındaki değer soldaki //değişkene aktarılır. printf("Girdiğiniz iki sayının toplamı = %d",toplam); } Şimdi programı inceleyelim:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include deyimiyle standart girdi-çıktı komutlarının bulunduğu dosyayı kullanacağımızı belirttik. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Sadece main( ) fonksiyonunda kullanılmak üzere üç adet int tipinden değişken tayin ettik.(lokal değişken)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Birinci ve ikinci sayıları girmesi için standart girdi-çıktı komutlarını kullandık.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]toplam=sayi1+sayi2; satırıyla toplam değişkenine sayi1 ve sayi2"nin o anki değerlerinin toplamını aktardık. Yani eğer sayi1 için kullanıcı 10, sayi2 için de 20 girseydi toplam = 10 + 20 yani 30 olacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]printf("Girdiğiniz iki sayının toplamı = %d",toplam); son olarak toplam değerini ekrana aktardık.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu programda akla takılabilecek iki soru:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1- n işaretlerini niye kullandık?[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2-// işaretleri neyi belirtir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]n işaretini kullanmasaydık program printf komutuyla yazılan herşeyi yan yana yazacak ve hoş bir görüntü oluşmayacaktı. Arada sırada aşağı satıra geçmek iyidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]// işaretleri açıklama satırları koymak için kullanılır. Yani derleyici bu işareti gördüğü an, o satırdaki kalan karakterlerin bir komut belirtmediğini anlar. Bu kodun aralarına açıklamalar koymak için kullanılır. Eğer belli bir bölümün işleme konmamasını dilerseniz her satırın başına // işaretini koymaktansa, bölümün en başına /* işareti koyup bölümün sonuna da */ işareti koyarak o bölümü işlem dışı bırakabilirsiniz. Uzun açıklamalar için bu yöntem kullanılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Program yazarken unutulmaması gereken en önemli şey noktalı virgüldür. C"de her komutun bitişinde noktalı virgül konulması mecburidir. Burada dikkat edilecek husus ise, komutun komple bitmiş olmasıdır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]10. BAZI GEREKLİ KOMUTLAR [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi de bazı gerekli komutlar hakkında bilgi verebilirim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]clrscr();[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komut ekrandaki yazılmış olan bütün karakterleri siler ve imlecin konumunu sol üst köşeye taşır. Yani bu komuttan sonra printf komutuyla yazılacak bir yazı sol üst köşeden başlayacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]getchar();[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komutun kullanılabilmesi için include satırlarına yazılması gerekenler[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komut bir tuşa basıncaya kadar bekleme sağlayacaktır. Böylece programın son çıktıyı göstermeden kapanmasını engellemiş olursunuz. Eğer hangi tuşa basıldığını öğrenmek istiyorsanız bunu fonksiyonun kendisinden öğrenebilirsiniz. Çünkü bu fonksiyon geri dönüş değeri olan bir fonksiyondur. Geri dönüş değeri olan bir fonksiyon bir değişken gibi değer içerir. Fakat fonksiyona yeni değer aktarması yapılamaz. Örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char karakter1; karakter1=getchar( )[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komutlardan sonra karakter1"in değeri klavyeden basılan tuşun karakter değeridir. Mesela, eğer "A" tuşuna basılmışsa değeri 65 olur. Çünkü 65"in karakter karşılığı A harfidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer burada printf("%c",karakter1); komutu kullanılırsa ekrana A harfi yazılır. Fakat printf("%d",karakter1); komutu kullanılırsa ekrana A"nın tamsayı değeri olan 65 yazılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]11.KOŞULLANDIRMA DEYİMLERİ[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Programlamadaki ana unsur elbette ki "eğer" ifadesidir. "eğer" bütün programların yapıtaşıdır. Çünkü bilgisayar "eğer"lerle çalışmaktadır. C dilinde karşılaştırma yapmak için if- else deyimleri sıklıkla kullanılır. Kullanımı şöyledir:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:if ( değer1 karşılaştırma operatörü değer2 ) Eğer doğruysa şunları yap… else Eğer yanlışsa şunları yap…Karşılaştırma operatörleri şunlardır:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:!= eşit değil mi? = = eşit mi? < küçük mü? > büyük mü? <= küçük – eşit mi? >= büyük – eşit mi? = işareti karşılaştırma operatörü değil, atama operatörüdür. == işareti karşılaştırma operatörüdür.Şimdi gerçek bir kod örneği verelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; if ( sayi1==10) printf("sayi1"in değeri 10"dur"); else printf("sayi1"in değeri 10 değildir.");Eğer birden fazla işlem yapılacaksa köşeli parantezler içine alınır[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char karakter1; if ( karakter1=="A")//*** { printf("karakter1"in sayısal değeri 65"dir"); printf("karakter1"in karakter değeri A harfidir"); } else { printf("karakter1"in sayısal değeri 65 değildir"); printf("karakter1"in karakter değeri A harfi değildir"); } İstenilirse else kullanılmayabilir. Doğru olmadığı durumda ekstra bir şeye gerek yoksa kullanmamak daha iyidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Not: "A" yerine A yazamayız. Çünkü eğer öyle yaparsak derleyici A"yı bir değişkenmiş gibi yorumlayacaktır. Öyle bir değişken yoksa hata verir. Eğer varsa o değişkenin değeri ile karşılaştırma yapar. Demek ki tek tırnak işaretleri, içerisindekini karakter olarak yorumlamak için kullanılır ve yalnızca bir karakter için kullanılır. Çift tırnak işaretleri ise içerisinde birden fazla karakter olanlar için kullanılır. Bu konu string"ler bölümünde tafsilatlı olarak anlatılacaktır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]12.Döngüler[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Daha önce, taslak hazırlama bölümünde, döngünün ne olduğuna kısaca değinmiştik. Döngü, tekrar edilecek işlemlerin oluşturulmasında kullanılan bir yöntemdir. C"de iki çeşit döngü vardır.Bunlar for döngüsü ve do-while döngüsüdür.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]for döngüsü:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu döngünün kullanımında en azından bir sayaç gerekir. Sayaç genelde tamsayı bir değişken olarak seçilir. Bir örnek verip inceleyelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayac; for (sayac=1;sayac<10;sayac++) yapılacak işlemlerBu döngüyü derleyici şu adımlarla yorumlar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. sayac değişkenine ilk değer olarak 1 verir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. sayac değişkeninin 10"dan küçük olup olmadığını test eder.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.a. Eğer küçükse yapılacak işlemleri yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.b. Eğer küçük değilse, yani eşit veya büyükse "5" numaralı adıma gider.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]3. sayac değişkenine bir eklenir. (sayac++ komutu bu değişkeni 1 arttır demektir)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]4. Döngünün devam etmesi için "2" numaralı adıma geri döner.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]5. Döngü bitmiştir. Programa döngünün dışından, kaldığı yerden, devam eder.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:for( ilk değer atama; karşılaştırma; değer değiştirme ) İŞLEMLER…. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]İlk değer atamada istenilen sayıda değişken için başlangıç değeri verilebilir. Karşılaştırma bölümünde o bölgedeki lokal değişkenler veya global değişkenler karşılaştırılabilir. Döngünün bir dahaki adımında karşılaştırma değerlerinin değiştirilmesi, değer değiştirme bölümünde olur. Yapılacak işlemler bölümünde bir değer değiştirme de elbette döngüyü etkileyecektir. Daha kısa veya uzun veya sonsuz döngü haline sokabilecektir. Buna dikkat edilmesi gerekir. İşlemler bölümünde birden fazla işlem varsa, işlemler köşeli parantezler içine alınır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]do-while döngüsü:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu döngü de kendi arasında iki çeşittir. Birincisi:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:do { yapılacak işlemler ve belirlenen sayaçta değer değiştirme; } while ( karşılaştırma);Bu döngü çeşitinde sayacı arttırmak için gerekli kod yapılacak işlemler bölümüne yazılır. Bu kod gayet açıktır. Derleyici bu kodu aşağıdaki şekilde yorumlar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. Yapılacak işlemleri yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. Karşılaştırma bölümündeki işlemi yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.a. Eğer karşılaştırma doğruysa "1" numaralı adıma döner.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.b. Eğer karşılaştırma yanlışsa döngü biter[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]İkincisi:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:while ( karşılaştırma) { yapılacak işlemler ve belirlenen sayaçta değer değiştirme; } Bu ikinci yöntem birincisine çok benzemekle birlikte farklıdır.. Derleyici bu kodu aşağıdaki şekilde yorumlar[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. Karşılaştırma bölümündeki işlemi yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1.a. Eğer karşılaştırma doğruysa "2" numaralı adıma gider.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1.b. Eğer karşılaştırma yanlışsa "4" numaralı adıma gider.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. Yapılacak işlemleri yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]3. "1" numaralı adıma geri döner.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]4. Döngü biter[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Aralarındaki tek fark şudur. Birinci örnekte, işlemler mutlaka, en az bir kere yapılır. Çünkü döngü, yapılacak işlemlerle başlar. İkinci örnekteyse ilk önce karşılaştırma yapıldığı için, döngü işlemleri en az bir kere yapılır diyemeyiz. Çünkü karşılaştırma yanlışsa döngü bitecektir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi bunlara birer örnek verelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayac; sayac=1; do { printf("%dn",sayac); sayac=sayac*2; } while ( sayac<=128);———————————————————————[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayac; sayac=1; while (sayac<=128) { printf("%dn",sayac); sayac=sayac*2; } Bu iki program kodu da, çalıştırıldığı zaman ekrana alt alta 2"nin kuvvetlerini 128"e kadar yazdırır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]"1 2 4 8 16 32 64 128" değerleri alt alta ekranda belirir. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]13.DÖNGÜLERDE KULLANILAN İKİ ÖZEL DEYİM [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Döngülerden çıkmak, ya da döngüye bir sonraki adımdan devam etmek bazen çok gerekli olur. Bu gibi durumlarda imdadımıza continue; ve break; komutları yetişir. Adlarından da anlaşılabileceği gibi, continue; komutu döngüyü bir sonraki adıma yönlendirir. break; komutu ise döngüyü yarıda bırakır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]14.SWITCH-CASE DEYİMİYLE KOLAY KOŞULLANDIRMA [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Ard arda bir sürü if-else kullanmak bazen karmaşıklığa yol açabilir. Bunun yerine göze daha hoş görünen bir koşullandırma yöntemi kullanılmalıdır. switch-case[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]switch-case �de karşılaştırma operatörü yoktur. Sadece tam sayılar için kullanılır ve tam sayıların farklı değerlerinde ne olacağını bir liste halinde belirtir. Örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; switch ( sayi1 ) { case 0:yapılacak işlemler; break; case 1: yapılacak işlemler; break; …………. …………. case 17: yapılacak işlemler; break; } Görüldüğü gibi sayi1 değişkeninin değerleri için ayrı ayrı karşılaştırma deyimi yazmaya gerek kalmadı. Bu yöntem bu gibi durumlarda büyük kolaylık sağlar. Şimdi bu yöntemi derleyicinin nasıl yorumladığına bakalım[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. Derleyici karşılaştırılacak tam sayı değer içeren değişkenin �sayi1� değişkeni olduğunu öğrenir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. Listedeki case değerlerini tek tek karşılaştırarak, sayi1 değerine eşit bir case satırı gördüğünde o satırdaki işlemleri yapar. break; komutu kullanılmazsa o satırdan sonra break; komutu gelene kadar bulunan bütün işlemler yapılır. Yani, listenin alt kısmında ne varsa yapılır. case dikkate alınmadan![/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Unutulmaması gereken bir başka özellik, karşılaştırılacak değişkenin sadece tam sayı olması gereğidir. char, int ya da başka bir tamsayı değişken tipi kullanılabilir. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]15.DİZİLER [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bazı programlarda çok sayıda ve sıralı değişkenler kullanmak ve bunlara özel indis numaralarıyla ulaşmak isteyebilirsiniz. Bütün programlama dillerinde de olduğu gibi, C dilinde bu işi diziler yardımıyla yapabilirsiniz. Örneğin, bir küpün koordinatlarını kaydetmek için 8 adet koordinat gerekir. Her koordinat için 3 adet float tipinden koordinat verisi gerekir. Bunun için ayrı ayrı 24 tane değişken tanımlamak çok hantaldır. Bunun yerine 3 tane dizi tanımlarız:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int x[8]; int y[8],z[8]; Bu diziler sayesinde her koordinata ulaşmak kolaylaşır. Çünkü istediğimiz koordinata ulaşmak için indis numarasını kullanmamız yeterli olacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Dizilerin önemli özelliği, indislemenin 0�dan başlayarak tanımlamada belirtilen sayının bir eksiğine kadar devam etmesidir. Yani dizi[2] olarak tanımlanan dizinin 2 elemanı vardır. {0 ve 1} [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi, dizileri kullanan bir örnek program verelim[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int dizi[8]; int sayac; dizi[0]=5; printf(�%dn�,dizi[0]); for (sayac=1;sayac<8;sayac++) { dizi[sayac]=dizi[sayac-1]*5; printf(�%dn�,dizi[sayac]); } 16.FONKSİYONLAR [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C dilinin en can alıcı kısımlarından biri de, şüphesiz fonksiyonlardır. Eğer buraya kadar olan kısmı okuduysanız, fonksiyonun ne olduğu hakkında ufak bir bilgi edinmişsinizdir. Fonksiyon programlayıcın yapacağı işlemleri gruplandırmasını sağlar. Bu gruplandırma sayesinde onlara ulaşım kolay olur ve program geliştirilmesi de kolaylaşır. Bu söylenileni daha önce BASIC dilini kullananlar daha iyi anlayacaktır. BASIC dilinde böyle bir gruplandırma söz konusu değildir. Bütün işlemler alt alta tek bir liste halinde yazılır. Bu dille uzun programlar yazmak o kadar zordur ki, insanı programlamadan soğutabilir. Neyse, konumuz BASIC dilinin dezavantajları değil elbette [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C dilinde program başlatıldığında hemen devreye girecek olan fonksiyon, main ( ) fonksiyonudur. Eğer başka fonksiyonlar tanımlamak isterseniz ilk olarak fonksiyonun ne yapmak istediğini belirtmeniz gerekir. Örnek olarak, bir satırı komple * karakteri ile dolduran bir fonksiyon yapalım. Fonksiyonun ismi yildiz_doldur olsun. (Not: 1 satıra 40 adet karakter sığar)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:**** yildiz_doldur( ) { int i=1; for( i=1;i<=40;i++) printf("*"); } Fonksiyonun başındaki **** ifadesi bu fonksiyonun geriye bir değer döndürmeyeceğini belirtir. Yani getch() fonksiyonunun geriye döndürdüğü bir değer gibi bir değere sahip değildir. Eğer bir fonksiyonun geriye değer döndürmesini istiyorsak döndüreceği değerin tipini buraya yazarız. **** ise bir değer döndürmeyen fonksiyonlarda kullanılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu fonksiyonu bu şekilde tanımladıktan sonra fonksiyon program başladığı gibi işlemleri faaliyete geçirmeyecektir. Çünkü bu fonksiyonu çalıştırmak için bilgisayara bunu yapmasını söyleyecek komut gerekir. Bu komutu istenilen bir fonksiyonun içine ekleyebilirsiniz. Bizim örneğimizi ana fonksiyonun içine yerleştirelim. Böylece program çalıştığı zaman ilk olarak 1. satır * karakteriyle dolacaktır. Programın tam metni şu şekilde olmalıdır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:#include **** yildiz_doldur( ) { int i=1; for( i=1;i<=40;i++) printf("*"); } **** main( ) { char kar; clrscr( ); yildiz_doldur(); fscanf("%c",&kar); } Bu program ekranı temizler. Birinci satırı * karakterleriyle doldurur. "Enter" tuşuna basılıncaya kadar bekler ve biter.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Fonksiyonları bir yerde çağırabilmek için, fonksiyonun o yerden önce mutlaka tanımlanmış olması gerekir. Örneğin, main fonksiyonuyla yildiz_doldur fonksiyonlarının yerlerini değişitirseydik program fonksiyonu bulamayacaktı. Eğer iki fonksiyon da birbirini çağırıyor ya da sıraları önemsememek istiyorsanız fonksiyonu ayrıca tanımlayabilirsiniz. Örnek üzerinde gösterelim:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:#include **** yildiz_doldur( ); **** main( ) { char kar; clrscr( ); yildiz_doldur(); fscanf("%c",&kar); } **** yildiz_doldur( ) { int i=1; for( i=1;i<=40;i++) printf("*"); } [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include satırından hemen sonra fonksiyonu olduğu şekliyle tanımlamak suretiyle programın bu halde de çalışmasını sağladık. Çünkü artık yildiz_doldur fonksiyonu, main fonksiyonundan önce tanımlanmıştır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Fonksiyonların önemli bir özelliği, lokal değişkenlere sahip olabilmesidir. Yani bir fonksiyonun içinde tanımlanmış bir değişkene, diğer fonksiyonlarla hiçbir şekilde ulaşamazsınız. Bunun sağladığı en büyük yarar gereksiz değişken kullanımını engellemektir. Aynı isimde iki değişkenin, iki ayrı fonksiyonda kullanılması bu şekilde mümkündür. Bu işlem kesinlikle hata vermez ve programlamada sık kullanılan bir biçimdir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer bütün fonksiyonlar içerisinde de geçerli değişkenler tanımlamak isterseniz, bu tanımlamayı fonksiyonların dışında yapmanız gerekir. Tanımlama yapıldığı yerden sonraki tüm fonksiyonlarda tanımlanan global değişken kullanılabilir. Çok gerekmedikçe, global değişken kullanımı tavsiye edilmez.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer bir fonksiyondan çıkmak isterseniz return komutunu kullanabilirsiniz. Fonksiyonda bu komut görüldüğü an fonksiyondan çıkılır ve programa kaldığı yerden devam edilir.Şu şekilde kullanılır:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]return; [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]17.FONKSİYONLARIN DEĞER DÖNDÜRMESİ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bazen bir fonksiyonun, bir işlem yapıldığında yapılan işlemin sonuçları hakkında bilgi vermesi istenir. Örneğin getchar() fonksiyonu içerisindeki işlem, klavyeden bir tuşa basılıncaya kadar beklemeyi sağlamaktadır. Bu fonksiyon yardımıyla, aynı zamanda, hangi tuşa basıldığını öğrenebiliriz. Demek ki bu fonksiyonun, geri dönüş değeri vardır ve bu değer char veri tipindedir. Yani bu fonksiyon aşağıdaki şekliyle tanımlanmıştır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char getchar();[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]İşte bu tanımlamaya uygun olarak siz de kendi geri dönüş değeri olan fonksiyonları oluşturabilirsiniz. Böyle bir fonksiyon bittiğinde yapılması gereken en önemli işlem, fonksiyonun değerini atamaktır. Bu atama return komutuyla yapılır. İngilizce�de anlamı, �kaldığın yere geri dön� demektir. Dönerken hangi değerle döneceği ise komuttan hemen sonra belirtilmelidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:return 10; return karakter;//char tipinden bir değişken olabilir return sayac;//int tipinden ya da başka herhangi bir tipten de olabilir. return karekok;//Bir sınırlama yoktur.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————-[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]18.FONKSİYONLARA DEĞER BİLDİRİMİ (PARAMETRELER)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bir fonksiyonun yapacağı işi, sadece belirli kalıplara sokarak oluşturmak her zaman kullanışlı olmayabilir. Örneğin bazı matematiksel işlemler için fonksiyonun hangi sayılara bu işlemi uygulayacağını belirtmek gerekir. Bunun için fonksiyonlar parametre alabilirler. Örneğin bir sayının faktoriyelini alan bir fonksiyon yapalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int faktoriyel(int sayi ) { int sonuc; sonuc=1; for( i=2;i<=sayi;i++) sonuc=sonuc*i; return sonuc; } [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu fonksiyon parametreli olarak tanımlanmıştır. Böylelikle fonksiyonumuz istenilen sayının faktoriyelini hesaplayabilir. Örneğin, 7 sayısının faktoriyeli için aşağıdaki kodu yazmak yeterlidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sonuc; sonuc=faktoriyel(7 ); veya direk ekrana yazdırmak için printf(�%d�,faktoriyel(7 )); Bu fonksiyon parametreli olarak tanımlanmıştır ve fonksiyonun geri döndüreceği değer bir tamsayıdır. return komutuyla bu değeri sonuç olarak gönderdik. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Parametreli fonksiyonlarda geri dönüş değeri kullanılmayabilir. Örneğin ekrana bir dikdörtgen çizecek bir fonksiyonun parametreleri dikdörtgenin koordinatlarını belirtsin. Bu fonksiyonun geriye değer döndürmesine gerek yoktur.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Parametreli fonksiyonlarda parametre sayısı 1�den fazla olabilir. Bunlar aralarına virgül konarak belirtilir. Fonksiyon çağrılırken yine virgüller kullanılarak çağrılır. Örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:**** pencere_ac(int x1,int y1,int x2,int y2); pencere_ac(0,0,100,100); [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]19.DEĞİŞKENLERİN ÖZELLİKLERİ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]7. bölümde değişkenlere çok kısa bir bakış yapmıştık. Şimdi değişkenlerin esas yapıları hakkında duralım ve değişik değişken tiplerine göz atalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Değişkenler, bir sayısal değerin hafızada tutulması ve kullanılması için bellekte ayrılan yeri ve bu verinin algılanış biçimini belirler. Dolayısıyla çeşitli değişkenler bellekte değişik boyutlar kaplayabilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bunları açıklamadan önce biraz da bellek yapısına değinelim. Bilgisayarda bellek verilerinin temel yapıtaşı, ikilik (binary) sistemdir. Yani bellek 1"ler ve 0"lardan oluşur. Bellekte 1 ya da 0 değeri alabilen birime bit denir. Başka bir ifadeyle bir bit 2 farlı değer alabilir. (1 ve 0) 8 tane bit yan yana getirilirse buna byte denir. 1 byte 8 tane bitten oluşur. Her bit iki farklı değer alabiliyordu. Kombinasyon hesabından, 8 tane bitin 2 üzeri 8 farklı değer alabileceği kolaylıkla bulunabilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Başka bir bakış açısıyla 2"lik düzende 8 basamaklı en büyük sayı 11111111 sayısıdır. Bu sayının değeri 255 "tir. 255"e kadar 0 "la birlikte tam 256 farklı sayı vardır. Bu da tam olarak 2 üzeri 8"e tekabül eder.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]O halde bir byte"ın 256 farklı değer alabileceğini gördük. 2 byte ise 256 "nın karesi kadar farklı değer alabilir. Buradan genelleme yaparsak, n byte 256 üzeri n farklı değer alır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C++ "ta bir değişkendeki ilk bit, sayının pozitif-negatif olup olmadığını belirten bit olarak değerlendirilir. Bu bitin değeri 0 ise sayı negatif, 1 ise sayı pozitiftir. Eğer bir değişken tanımından önce unsigned belirtecini kullanırsanız, C++ ilk biti de değişkene dahil edecek, ve değişken ilk bit ne olursa olsun pozitif değer içerecektir. Böylelikle sayının alabileceği maksimum değer iki katına çıkar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi C++"taki değişken çeşitlerini inceleyelim[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char 8 bit 1 byte Tam sayı -128…+127 unsigned char 8 bit 1 byte Tam sayı 0…255 int 16 bit 2 byte Tam sayı -32 768…+32 767 long int 32 bit 4 byte Tam sayı – 2 147 483 648…+2 147 483 647 unsigned int 16 bit 2 byte Tam sayı 0…+65 535 unsigned long 32 bit 4 byte Tam sayı 0…+4 294 967 296 float 32 bit 4 byte Ondalıklı sayı 3.4 * (10^-38) to 3.4 * (10^+38) double 64 bit 8 byte Ondalıklı sayı 1.7 10^-308 to 1.7 10^308 Kod:1 GigaByte=1024 MegaByte=1024^2 KiloByte=1024^3 Byte=1024^4 Byte=8*1024^4 Bit 1 Byte=8 Bit 1 KiloByte (KB) =1024 Byte = 8*1024=Bit 1 MegaByte(MB)=1024 KiloByte(KB) 1 GigaByte(GB)=1024 MegaByte(MB)————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]20.STRUCT (YAPILAR)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef : Yeni tip tanımlamak için kullanılan bir komuttur. Örnek: typedef TAMSAYI long int;Bu satırdan sonra artık TAMSAYI diye bir tip oluşur. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]TAMSAYI sayi1,sayi2;[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]sayi1 ve sayi2 TAMSAYI tipinden yani, long int değişkenlerdir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]struct: Belirli tipleri bir araya getirerek bir veri yapısı oluşturmak için kullanılan bir komuttur. (yapı)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Yapı, değişkenler içeren bir veri saklama ağacıdır. Programınızdaki değişkenleri düzenli tutmak için çok gerekli bir özelliktir. Yapılar kullanılmadan oluşturulan büyük programlar hantal olur ve anlaşılması ve geliştirilmesi çok zordur. Şimdi struct ifadesinin ne anlama geldiğini örneklerle inceleyelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bir programda çeşitli üçgenler saklamak isteyelim. Her üçgenin üç adet koordinatı olur. Her koordinatın da 2 adet değer içermesi gerekir. (x ve y) Şimdi bunu şu ana kadar öğrendiğimiz metotlarla yapmayı deneyelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:float x[3],y[3];Bu şekilde yalnızca bir üçgen belirttik. Daha fazla üçgen için ise şöyle yapabiliriz:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:float x[10][3],y[10][3];Bu şekliyle 10 tane üçgen saklayabiliriz. Yerine göre bunu da kullanabilirsiniz. Ama emin olun ki, program karmaşıklaştıkça bu yöntemin çok kötü olduğunu anlayacaksınız. Bundan daha kolay bir yolla böyle bir tanımlama yapmak mümkündür. Şimdi bu üçgeni struct olarak tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef struct { float x[3],y[3]; } UCGEN;[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Böylelikle UCGEN adında yeni bir tip tanımlamış olduk. Bu tipin bellekte kapladığı alan 24 byte"dır. Çünkü içinde 6 tane float tipinden değişken var. Hatırlarsanız float tipi 4 byte"lık belleğe ihtiyaç duyar. Bu yüzden bizim tanımladığımız UCGEN veri tipi hafızada 24 byte"lık yer kaplar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi 1 tane üçgen saklamak için aşağıdaki kodu yazalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:UCGEN ucgen1;Bu tanımlamadan sonra ucgen1 değişkeni UCGEN tipinden bir değişkeni temsil edecektir. Bu değişkenin kendisi bir değer içermez ama üyeleri değer içerir. Üyelerine erişmek için "nokta" operatörü kullanılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:ucgen1.x[0]=0.5; ucgen1.y[0]=15.5; ucgen1.x[1]=7; … ucgen1.y[2]=8.6; Görüldüğü gibi ucgen1 değişkeninin üyeleri UCGEN tipinde tanımladığımız değişkenlerdir. Bu üye değişkenler sadece tanımlandıkları yapı içinde geçerli oldukları için, isimleri diğer değişkenleri etkilemez. Yani başka bir yerde x adlı bir değişken tanımlayabiliriz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi de UCGEN tipinden 10 elemanlı bir dizi tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:UCGEN ucgen_dizisi[10]; ucgen_dizisi[0].x[0]=5.2; ucgen_dizisi[0].y[0]=3.2; … ucgen_dizisi[10].y[2]=4.1;Şimdi de koordinatlar için de bir yapı tanımlayalım. Düzlemdeki bir nokta x ve y değerinden oluşur. Buna göre:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef struct { float x,y; }NOKTA;Şimdi UCGEN tipini farklı bir şekilde yeniden tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef struct { NOKTA noktalar[3]; } UCGEN;Şimdi UCGEN tipinden bir değişken tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:UCGEN u1; u1.noktalar[0].x=3.9; u1.noktalar[0].y=5.8; … u1.noktalar[2].y=2.1;Görüldüğü gibi artık herşey daha derli toplu hale geldi. Bunun sağladığı kolaylığı daha kompleks programlar yapmaya başladıkça anlayacaksınız.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Başka bir örnekle olayı daha da açıklığa kavuşturalım. Bir veritabanı programında kullanmak üzere bir yapı tanımlayalım. Bu yapı içerisinde bir kulübe üye olan kişilerin isimlerini, telefonlarını vs. tutsun. Kulübün ismi, Hayvan Severler Derneği farzedelim. Örneğimizi oluşturalım, fakat daha önce küçük bir komutun ne işe yaradığına bakalım:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Programlama bilgisayarın yapacağı işlemleri kontrol etmek için geliştirilmiş bir yöntem olup, bilgisayar kullanımını önemli ölçüde kolaylaştırmıştır. İlk dev bilgisayarlar yapıldığında bunlar çok fazla aç-kapa düğmeleriyle sınırlı olduğundan, basit işlemleri yapabiliyorlardı. (Tabii ki, elektrik hızıyla bağlantılı olarak bu işlemleri çok kısa sürede halledip sonucu veriyorlardı. Dolayısıyla bilgisayarların önemi hız sayesinde daha da belirginleşti.) Bilgisayara bir işlem yaptırmak için bilgisayarın iç yapısını bilmek ve uzun süre çalışmak gerekiyordu. İşte tüm bu olumsuz yanları olumluya dönüştürebilecek bir yol bulundu. O da programlama! [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.PROGRAMLAMA NASIL YAPILIR?[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Programlama, insan beyniyle oluşturulan mantıksal işlemlerin, bilgisayara aktarılmasında şu yolu izlemektedir:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Sadece insanın anlayacağı kısım—– İnsan zekası— > Derleyicinin ve programlayanın anlayacağı kısım —–Derleyici—>Sadece bilgisayarın anlayacağı kısım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Görüldüğü gibi bu işlemler zincirinde programlayıcının yapması gereken sadece, matematiksel olarak istenilen işlemlerin taslağını oluşturmak, daha sonra da bunu derleyicinin anlayabileceği şekle sokmaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]3.MATEMATİKSEL TASLAK NEDİR?[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Matematiksel taslağı bir örnek vererek açıklığa kavuşturalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Mesela, öyle bir program yapalım ki, bizden sırasıyla iki sayı girmemizi istesin ve bunları toplayarak ekrana yazsın. En basit mantıkla bunu bilgisayara nasıl yapmasını söylerdiniz? Şöyle:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]4.DEĞİŞİK TASLAK HAZIRLAMA YOLLARI [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Matematiksel taslağı hazırlarken yüzlerce değişik yol izleyebilirsiniz. Fakat bunlardan en iyisi, kısa olan, anlaşılır olan, ve de hızlı olan yoldur. Bir örnek daha vererek bu konuda bir fikir edinmenizi sağlayayım: [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Öyle bir program yapalım ki, 1"den 5"e kadar olan sayıların çarpımlarını bulsun.(5 faktoriyel yani 1*2*3*4*5) Tabi şimdi bunu bulmaya ne gerek var diyenler olabilir. Örnek anlaşılır olsun diye küçük sayı verdim. Daha büyük bir sayıda programın taslak hazırlama yolunun ne kadar önemli olduğunu sanırım anlayacaksınız.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:Uzun olan yol: Programı başlat. sayı1"e 1 değerini ata. sayı2"ye 2 değerini ata. sayı3"e 3 değerini ata. sayı4"e 4 değerini ata. sayı5"e 5 değerini ata. Ekrana (sayı1*sayı2*sayı3*sayı4*sayı5) yaz. Programı kapat. Kod:Kısa olan yol: Programı başlat. sayaç"a 1 değerini ata. faktoriyel"e 1 değerini ata. sayaç 5 ten büyük olana kadar aşağıdaki işlemi yap. {faktoriyel değerini, faktoriyel değeri * sayaç yap. sayaç değerini 1 arttır. } Ekrana (faktoriyel) yaz. Programı kapat.Görüldüğü gibi uzun yolda 5 tane ayrı sembol kullanmak zorunda kaldık. Oysa ikinci yolda 2 tane sembol yeterli oldu. Sayıyı 5 yerine 2000 olarak alsaydık ve uzun yoldan programı yazsaydık 2000 adet sembol gerekecekti. Oysa kısa yoldan yapılan programda sadece 5 yerine 2000 yazmamız yeterli olacaktır. İşte tekrarlanan işlemler için kullanılan bu yönteme döngü denir. Değişik döngü tipleri vardır. Ama bunu kendi kafanızdan geliştirmenizi öneririm. Çünkü bu taslak hazırlama yolu, tamamen zekayla yapılır. İstediğiniz yöntemi geliştirebilir, istediğiniz yolu izleyebilirsiniz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi sırada matematiksel taslağı derleyicinin anlayacağı formata çevirmeyi öğrenmek var! [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]5.DERLEYİCİYLE HABERLEŞMEK [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Matematiksel taslağı hazırladıktan sonra bunu derleyiciye iletmek için bir haberleşme dili kullanmanız gerekmektedir. Buna da Programlama Dili denir. Programlama dilleri çeşitlidir ve her programlama dilinin de bir derleyicisi vardır. Biz başlangıç için Turbo C derleyicisini öneriyoruz. Dos ortamında programlar hazırlayabilen bu derleyici ile C dilinin tüm inceliklerini öğrenmeniz ve kullanmanız mümkün.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]6.C DİLİNİN TEMELİ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C dilindeki ana yapıyı inceleyerek başlayalım:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:#include **** main( ) { //Program başladığında yapılacak işlemler } Burada #include deyimi programın içereceği bazı fonksiyonların tanımlandığı dosyaları programa dahil etmek için kullanılır. Bu deyimi birden fazla kullanarak daha fazla komut dosyası ekleyebilirsiniz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]main( ) adından da anlaşıldığı gibi, programın ana işlemlerinin yapıldığı bir fonksiyondur.C dilinde fonksiyonlar çok önemlidir ve işlemler listesinin olduğu kısımlardır. Bu ana fonksiyon, program başlatıldığında hemen uygulamaya geçirilecek işlemlerin listesidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Her fonksiyon " { " karakteriyle açılır ve " } " karakteriyle kapanır. **** "in ne olduğu fonksiyonlar bölümünde açıklanmıştır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]7.SEMBOLLER (DEĞİŞKENLER)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bundan sonra sembollere değişkenler diyeceğiz. Çünkü değişkenler bu işlevi daha güzel açıklıyor. Program içinde değeri değişebilen semboller de diyebilirsiniz, fakat uzun olur[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"de değişkenler kullanılmadan önce mutlaka tanımlanmalıdırlar. Bu tanımlama değişkenin tipini belirtmek amacıyla yapılmalıdır.Değişken tipi, değişkenin içerdiği değerin türü demektir.(sayı,harf,kelime)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Başlıca değişken tipleri şunlardır:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int = tamsayı (-32 768 ile +32 767 arasında değer alır) float = virgüllü sayı (-3.4 E-38 ile +3.4 E+38 arasında değer alır) char = tamsayı(-128 ile +128 arasında değer alır ve her char tipi değişken sadece bir adet karaktere karşılık gelir.)Değişkenler fonksiyonların içinde tanımlanırsa, sadece o fonksiyon içinde geçerli olan bir değişken olur (lokal değişken).[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer "#include" satırlarından sonra tanımlanırsa tüm programda, yani tüm fonksiyonların içinde geçerli olur.(global değişken).[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kodeğişken tanımlanmasına örnekler: int sayi1; char karakter1; float sayi2; int sayi3,sayi4,sayi5;[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"deki en önemli şeylerden biri de noktalı virgüldür. Noktalı virgül, derleyiciye bir komutun sonunu haber verir. Noktalı virgül unutulduğu zaman program çalışmayacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"de aynı isimde iki değişken tanımlanamaz ve değişken isimlerinde Türkçe karakter kullanılamaz. Değişken isimleri rakam içerebilir ama rakamla başlayamaz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C"de çok önemli bir ayrıntı da büyük-küçük harf duyarlılığı olmasıdır. örnek: sayi1 diye tanımlanan bir değişkene Sayi1 diye ulaşamazsınız. Yani Sayi1, sAYI1,sayI1,sayi1,… bunların hepsi farklı değişkenler olabilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]8.STANDART GİRDİ-ÇIKTI KOMUTLARI [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komutlardan en önemli iki tanesini görelim. Bu iki komutun bulunduğu include dosyası dır. Yani bu komutları kullanabilmek için programın başına[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include satırını eklemek gerekir[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]printf(yazılacaklar);[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Printf komutu ekrana bir şeyler yazdırmak için kullanılır. Yazılacaklar tırnak işaretleri içerisinde belirtilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kodrintf("Merhaba! Bu benim ilk komutum!");Bu komut ekrana Merhaba! Bu benim ilk komutum! yazdırır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Sembolleri yazdırmak içinse aşağıdaki yol izlenir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; float sayi2; char karakter1; printf("%d",sayi1); //sayi1 bir int tipi değişken olduğu için %d operatörü kullanılır. printf("%f",sayi2); //sayi2 bir float tipi değişken olduğu için %f operatörü kullanılır. printf("%c",karakter1); //karakter1 bir char tipi değişken olduğu için %c operatörü kullanılır. //Hepsini bir kerede yazdırmak içinse: printf("%d %f %c",sayi1,sayi2,karakter1); ///Aralara istenilen karakterler eklenebilir. Örnek: printf("sayı 1 = %d sayi 2 = %f karakter 1 = %c",sayi1,sayi2,karakter1); ///printf komutu yazmaya en son kaldığı yerden başlar. //Bir alt satıra geçmek için n karakteri kullanılır. (printf("Merhaba!n Alt satıra böyle geçilir.");scanf(girilenler);[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]scanf komutu kullanıcıdan bilgi almak için kullanılır. Alınan bilgiler değişkenlere aktarılır. Tırnak işaretleri içinde hangi tip değişken alınacağı belirtilir ve daha sonra değişken isimleri yazılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; scanf("%d",&sayi1);Bu komut programı durdurur. Kullanıcının "Enter" tuşuna basmasını bekler. "Enter" tuşuna basıldıktan sonra, klavyeden girilen değer sayi1 değişkenine aktarılır. Burada, sayi1"in önündeki & işareti atama operatörüdür.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Diğer tiplerin okunması aşağıdaki gibidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; float sayi2; char karakter1; scanf("%d",&sayi1); //sayi1 bir int tipi değişken olduğu için %d operatörü kullanılır. scanf("%f",&sayi2); //sayi2 bir float tipi değişken olduğu için %f operatörü kullanılır. scanf("%c",&karakter1); //karakter1 bir char tipi değişken olduğu için %c operatörü kullanılır. Hepsini bir kerede yazdırmak içinse: scanf("%d %f %c",&sayi1,&sayi2,&karakter1);[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]9. İLK C PROGRAMIMIZ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi de, ilk baştaki örnek programı c koduna çevirelim. Programımız klavyeden iki sayı girmemizi ve bunların toplamını ekrana yazdırmayı amaçlıyordu[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:include main( ) { int sayi1,sayi2,toplam; printf("Lütfen birinci sayıyı giriniz!n"); scanf("%d",&sayi1); printf(" Lütfen ikinci sayıyı giriniz!n"); scanf("%d",&sayi2) toplam=sayi1+sayi2; //buradaki = işareti atama operatörüdür. İşaretin sağındaki değer soldaki //değişkene aktarılır. printf("Girdiğiniz iki sayının toplamı = %d",toplam); } Şimdi programı inceleyelim:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include deyimiyle standart girdi-çıktı komutlarının bulunduğu dosyayı kullanacağımızı belirttik. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Sadece main( ) fonksiyonunda kullanılmak üzere üç adet int tipinden değişken tayin ettik.(lokal değişken)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Birinci ve ikinci sayıları girmesi için standart girdi-çıktı komutlarını kullandık.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]toplam=sayi1+sayi2; satırıyla toplam değişkenine sayi1 ve sayi2"nin o anki değerlerinin toplamını aktardık. Yani eğer sayi1 için kullanıcı 10, sayi2 için de 20 girseydi toplam = 10 + 20 yani 30 olacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]printf("Girdiğiniz iki sayının toplamı = %d",toplam); son olarak toplam değerini ekrana aktardık.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu programda akla takılabilecek iki soru:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1- n işaretlerini niye kullandık?[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2-// işaretleri neyi belirtir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]n işaretini kullanmasaydık program printf komutuyla yazılan herşeyi yan yana yazacak ve hoş bir görüntü oluşmayacaktı. Arada sırada aşağı satıra geçmek iyidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]// işaretleri açıklama satırları koymak için kullanılır. Yani derleyici bu işareti gördüğü an, o satırdaki kalan karakterlerin bir komut belirtmediğini anlar. Bu kodun aralarına açıklamalar koymak için kullanılır. Eğer belli bir bölümün işleme konmamasını dilerseniz her satırın başına // işaretini koymaktansa, bölümün en başına /* işareti koyup bölümün sonuna da */ işareti koyarak o bölümü işlem dışı bırakabilirsiniz. Uzun açıklamalar için bu yöntem kullanılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Program yazarken unutulmaması gereken en önemli şey noktalı virgüldür. C"de her komutun bitişinde noktalı virgül konulması mecburidir. Burada dikkat edilecek husus ise, komutun komple bitmiş olmasıdır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]10. BAZI GEREKLİ KOMUTLAR [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi de bazı gerekli komutlar hakkında bilgi verebilirim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]clrscr();[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komut ekrandaki yazılmış olan bütün karakterleri siler ve imlecin konumunu sol üst köşeye taşır. Yani bu komuttan sonra printf komutuyla yazılacak bir yazı sol üst köşeden başlayacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]getchar();[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komutun kullanılabilmesi için include satırlarına yazılması gerekenler[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komut bir tuşa basıncaya kadar bekleme sağlayacaktır. Böylece programın son çıktıyı göstermeden kapanmasını engellemiş olursunuz. Eğer hangi tuşa basıldığını öğrenmek istiyorsanız bunu fonksiyonun kendisinden öğrenebilirsiniz. Çünkü bu fonksiyon geri dönüş değeri olan bir fonksiyondur. Geri dönüş değeri olan bir fonksiyon bir değişken gibi değer içerir. Fakat fonksiyona yeni değer aktarması yapılamaz. Örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char karakter1; karakter1=getchar( )[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu komutlardan sonra karakter1"in değeri klavyeden basılan tuşun karakter değeridir. Mesela, eğer "A" tuşuna basılmışsa değeri 65 olur. Çünkü 65"in karakter karşılığı A harfidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer burada printf("%c",karakter1); komutu kullanılırsa ekrana A harfi yazılır. Fakat printf("%d",karakter1); komutu kullanılırsa ekrana A"nın tamsayı değeri olan 65 yazılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]11.KOŞULLANDIRMA DEYİMLERİ[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Programlamadaki ana unsur elbette ki "eğer" ifadesidir. "eğer" bütün programların yapıtaşıdır. Çünkü bilgisayar "eğer"lerle çalışmaktadır. C dilinde karşılaştırma yapmak için if- else deyimleri sıklıkla kullanılır. Kullanımı şöyledir:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:if ( değer1 karşılaştırma operatörü değer2 ) Eğer doğruysa şunları yap… else Eğer yanlışsa şunları yap…Karşılaştırma operatörleri şunlardır:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:!= eşit değil mi? = = eşit mi? < küçük mü? > büyük mü? <= küçük – eşit mi? >= büyük – eşit mi? = işareti karşılaştırma operatörü değil, atama operatörüdür. == işareti karşılaştırma operatörüdür.Şimdi gerçek bir kod örneği verelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; if ( sayi1==10) printf("sayi1"in değeri 10"dur"); else printf("sayi1"in değeri 10 değildir.");Eğer birden fazla işlem yapılacaksa köşeli parantezler içine alınır[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char karakter1; if ( karakter1=="A")//*** { printf("karakter1"in sayısal değeri 65"dir"); printf("karakter1"in karakter değeri A harfidir"); } else { printf("karakter1"in sayısal değeri 65 değildir"); printf("karakter1"in karakter değeri A harfi değildir"); } İstenilirse else kullanılmayabilir. Doğru olmadığı durumda ekstra bir şeye gerek yoksa kullanmamak daha iyidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Not: "A" yerine A yazamayız. Çünkü eğer öyle yaparsak derleyici A"yı bir değişkenmiş gibi yorumlayacaktır. Öyle bir değişken yoksa hata verir. Eğer varsa o değişkenin değeri ile karşılaştırma yapar. Demek ki tek tırnak işaretleri, içerisindekini karakter olarak yorumlamak için kullanılır ve yalnızca bir karakter için kullanılır. Çift tırnak işaretleri ise içerisinde birden fazla karakter olanlar için kullanılır. Bu konu string"ler bölümünde tafsilatlı olarak anlatılacaktır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]12.Döngüler[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Daha önce, taslak hazırlama bölümünde, döngünün ne olduğuna kısaca değinmiştik. Döngü, tekrar edilecek işlemlerin oluşturulmasında kullanılan bir yöntemdir. C"de iki çeşit döngü vardır.Bunlar for döngüsü ve do-while döngüsüdür.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]for döngüsü:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu döngünün kullanımında en azından bir sayaç gerekir. Sayaç genelde tamsayı bir değişken olarak seçilir. Bir örnek verip inceleyelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayac; for (sayac=1;sayac<10;sayac++) yapılacak işlemlerBu döngüyü derleyici şu adımlarla yorumlar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. sayac değişkenine ilk değer olarak 1 verir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. sayac değişkeninin 10"dan küçük olup olmadığını test eder.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.a. Eğer küçükse yapılacak işlemleri yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.b. Eğer küçük değilse, yani eşit veya büyükse "5" numaralı adıma gider.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]3. sayac değişkenine bir eklenir. (sayac++ komutu bu değişkeni 1 arttır demektir)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]4. Döngünün devam etmesi için "2" numaralı adıma geri döner.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]5. Döngü bitmiştir. Programa döngünün dışından, kaldığı yerden, devam eder.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:for( ilk değer atama; karşılaştırma; değer değiştirme ) İŞLEMLER…. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]İlk değer atamada istenilen sayıda değişken için başlangıç değeri verilebilir. Karşılaştırma bölümünde o bölgedeki lokal değişkenler veya global değişkenler karşılaştırılabilir. Döngünün bir dahaki adımında karşılaştırma değerlerinin değiştirilmesi, değer değiştirme bölümünde olur. Yapılacak işlemler bölümünde bir değer değiştirme de elbette döngüyü etkileyecektir. Daha kısa veya uzun veya sonsuz döngü haline sokabilecektir. Buna dikkat edilmesi gerekir. İşlemler bölümünde birden fazla işlem varsa, işlemler köşeli parantezler içine alınır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]do-while döngüsü:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu döngü de kendi arasında iki çeşittir. Birincisi:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:do { yapılacak işlemler ve belirlenen sayaçta değer değiştirme; } while ( karşılaştırma);Bu döngü çeşitinde sayacı arttırmak için gerekli kod yapılacak işlemler bölümüne yazılır. Bu kod gayet açıktır. Derleyici bu kodu aşağıdaki şekilde yorumlar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. Yapılacak işlemleri yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. Karşılaştırma bölümündeki işlemi yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.a. Eğer karşılaştırma doğruysa "1" numaralı adıma döner.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2.b. Eğer karşılaştırma yanlışsa döngü biter[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]İkincisi:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:while ( karşılaştırma) { yapılacak işlemler ve belirlenen sayaçta değer değiştirme; } Bu ikinci yöntem birincisine çok benzemekle birlikte farklıdır.. Derleyici bu kodu aşağıdaki şekilde yorumlar[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. Karşılaştırma bölümündeki işlemi yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1.a. Eğer karşılaştırma doğruysa "2" numaralı adıma gider.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1.b. Eğer karşılaştırma yanlışsa "4" numaralı adıma gider.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. Yapılacak işlemleri yapar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]3. "1" numaralı adıma geri döner.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]4. Döngü biter[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Aralarındaki tek fark şudur. Birinci örnekte, işlemler mutlaka, en az bir kere yapılır. Çünkü döngü, yapılacak işlemlerle başlar. İkinci örnekteyse ilk önce karşılaştırma yapıldığı için, döngü işlemleri en az bir kere yapılır diyemeyiz. Çünkü karşılaştırma yanlışsa döngü bitecektir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi bunlara birer örnek verelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayac; sayac=1; do { printf("%dn",sayac); sayac=sayac*2; } while ( sayac<=128);———————————————————————[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayac; sayac=1; while (sayac<=128) { printf("%dn",sayac); sayac=sayac*2; } Bu iki program kodu da, çalıştırıldığı zaman ekrana alt alta 2"nin kuvvetlerini 128"e kadar yazdırır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]"1 2 4 8 16 32 64 128" değerleri alt alta ekranda belirir. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]13.DÖNGÜLERDE KULLANILAN İKİ ÖZEL DEYİM [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Döngülerden çıkmak, ya da döngüye bir sonraki adımdan devam etmek bazen çok gerekli olur. Bu gibi durumlarda imdadımıza continue; ve break; komutları yetişir. Adlarından da anlaşılabileceği gibi, continue; komutu döngüyü bir sonraki adıma yönlendirir. break; komutu ise döngüyü yarıda bırakır. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]14.SWITCH-CASE DEYİMİYLE KOLAY KOŞULLANDIRMA [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Ard arda bir sürü if-else kullanmak bazen karmaşıklığa yol açabilir. Bunun yerine göze daha hoş görünen bir koşullandırma yöntemi kullanılmalıdır. switch-case[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]switch-case �de karşılaştırma operatörü yoktur. Sadece tam sayılar için kullanılır ve tam sayıların farklı değerlerinde ne olacağını bir liste halinde belirtir. Örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sayi1; switch ( sayi1 ) { case 0:yapılacak işlemler; break; case 1: yapılacak işlemler; break; …………. …………. case 17: yapılacak işlemler; break; } Görüldüğü gibi sayi1 değişkeninin değerleri için ayrı ayrı karşılaştırma deyimi yazmaya gerek kalmadı. Bu yöntem bu gibi durumlarda büyük kolaylık sağlar. Şimdi bu yöntemi derleyicinin nasıl yorumladığına bakalım[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]1. Derleyici karşılaştırılacak tam sayı değer içeren değişkenin �sayi1� değişkeni olduğunu öğrenir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]2. Listedeki case değerlerini tek tek karşılaştırarak, sayi1 değerine eşit bir case satırı gördüğünde o satırdaki işlemleri yapar. break; komutu kullanılmazsa o satırdan sonra break; komutu gelene kadar bulunan bütün işlemler yapılır. Yani, listenin alt kısmında ne varsa yapılır. case dikkate alınmadan![/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Unutulmaması gereken bir başka özellik, karşılaştırılacak değişkenin sadece tam sayı olması gereğidir. char, int ya da başka bir tamsayı değişken tipi kullanılabilir. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]15.DİZİLER [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bazı programlarda çok sayıda ve sıralı değişkenler kullanmak ve bunlara özel indis numaralarıyla ulaşmak isteyebilirsiniz. Bütün programlama dillerinde de olduğu gibi, C dilinde bu işi diziler yardımıyla yapabilirsiniz. Örneğin, bir küpün koordinatlarını kaydetmek için 8 adet koordinat gerekir. Her koordinat için 3 adet float tipinden koordinat verisi gerekir. Bunun için ayrı ayrı 24 tane değişken tanımlamak çok hantaldır. Bunun yerine 3 tane dizi tanımlarız:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int x[8]; int y[8],z[8]; Bu diziler sayesinde her koordinata ulaşmak kolaylaşır. Çünkü istediğimiz koordinata ulaşmak için indis numarasını kullanmamız yeterli olacaktır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Dizilerin önemli özelliği, indislemenin 0�dan başlayarak tanımlamada belirtilen sayının bir eksiğine kadar devam etmesidir. Yani dizi[2] olarak tanımlanan dizinin 2 elemanı vardır. {0 ve 1} [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi, dizileri kullanan bir örnek program verelim[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int dizi[8]; int sayac; dizi[0]=5; printf(�%dn�,dizi[0]); for (sayac=1;sayac<8;sayac++) { dizi[sayac]=dizi[sayac-1]*5; printf(�%dn�,dizi[sayac]); } 16.FONKSİYONLAR [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C dilinin en can alıcı kısımlarından biri de, şüphesiz fonksiyonlardır. Eğer buraya kadar olan kısmı okuduysanız, fonksiyonun ne olduğu hakkında ufak bir bilgi edinmişsinizdir. Fonksiyon programlayıcın yapacağı işlemleri gruplandırmasını sağlar. Bu gruplandırma sayesinde onlara ulaşım kolay olur ve program geliştirilmesi de kolaylaşır. Bu söylenileni daha önce BASIC dilini kullananlar daha iyi anlayacaktır. BASIC dilinde böyle bir gruplandırma söz konusu değildir. Bütün işlemler alt alta tek bir liste halinde yazılır. Bu dille uzun programlar yazmak o kadar zordur ki, insanı programlamadan soğutabilir. Neyse, konumuz BASIC dilinin dezavantajları değil elbette [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C dilinde program başlatıldığında hemen devreye girecek olan fonksiyon, main ( ) fonksiyonudur. Eğer başka fonksiyonlar tanımlamak isterseniz ilk olarak fonksiyonun ne yapmak istediğini belirtmeniz gerekir. Örnek olarak, bir satırı komple * karakteri ile dolduran bir fonksiyon yapalım. Fonksiyonun ismi yildiz_doldur olsun. (Not: 1 satıra 40 adet karakter sığar)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:**** yildiz_doldur( ) { int i=1; for( i=1;i<=40;i++) printf("*"); } Fonksiyonun başındaki **** ifadesi bu fonksiyonun geriye bir değer döndürmeyeceğini belirtir. Yani getch() fonksiyonunun geriye döndürdüğü bir değer gibi bir değere sahip değildir. Eğer bir fonksiyonun geriye değer döndürmesini istiyorsak döndüreceği değerin tipini buraya yazarız. **** ise bir değer döndürmeyen fonksiyonlarda kullanılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu fonksiyonu bu şekilde tanımladıktan sonra fonksiyon program başladığı gibi işlemleri faaliyete geçirmeyecektir. Çünkü bu fonksiyonu çalıştırmak için bilgisayara bunu yapmasını söyleyecek komut gerekir. Bu komutu istenilen bir fonksiyonun içine ekleyebilirsiniz. Bizim örneğimizi ana fonksiyonun içine yerleştirelim. Böylece program çalıştığı zaman ilk olarak 1. satır * karakteriyle dolacaktır. Programın tam metni şu şekilde olmalıdır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:#include **** yildiz_doldur( ) { int i=1; for( i=1;i<=40;i++) printf("*"); } **** main( ) { char kar; clrscr( ); yildiz_doldur(); fscanf("%c",&kar); } Bu program ekranı temizler. Birinci satırı * karakterleriyle doldurur. "Enter" tuşuna basılıncaya kadar bekler ve biter.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Fonksiyonları bir yerde çağırabilmek için, fonksiyonun o yerden önce mutlaka tanımlanmış olması gerekir. Örneğin, main fonksiyonuyla yildiz_doldur fonksiyonlarının yerlerini değişitirseydik program fonksiyonu bulamayacaktı. Eğer iki fonksiyon da birbirini çağırıyor ya da sıraları önemsememek istiyorsanız fonksiyonu ayrıca tanımlayabilirsiniz. Örnek üzerinde gösterelim:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:#include **** yildiz_doldur( ); **** main( ) { char kar; clrscr( ); yildiz_doldur(); fscanf("%c",&kar); } **** yildiz_doldur( ) { int i=1; for( i=1;i<=40;i++) printf("*"); } [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]#include satırından hemen sonra fonksiyonu olduğu şekliyle tanımlamak suretiyle programın bu halde de çalışmasını sağladık. Çünkü artık yildiz_doldur fonksiyonu, main fonksiyonundan önce tanımlanmıştır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Fonksiyonların önemli bir özelliği, lokal değişkenlere sahip olabilmesidir. Yani bir fonksiyonun içinde tanımlanmış bir değişkene, diğer fonksiyonlarla hiçbir şekilde ulaşamazsınız. Bunun sağladığı en büyük yarar gereksiz değişken kullanımını engellemektir. Aynı isimde iki değişkenin, iki ayrı fonksiyonda kullanılması bu şekilde mümkündür. Bu işlem kesinlikle hata vermez ve programlamada sık kullanılan bir biçimdir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer bütün fonksiyonlar içerisinde de geçerli değişkenler tanımlamak isterseniz, bu tanımlamayı fonksiyonların dışında yapmanız gerekir. Tanımlama yapıldığı yerden sonraki tüm fonksiyonlarda tanımlanan global değişken kullanılabilir. Çok gerekmedikçe, global değişken kullanımı tavsiye edilmez.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Eğer bir fonksiyondan çıkmak isterseniz return komutunu kullanabilirsiniz. Fonksiyonda bu komut görüldüğü an fonksiyondan çıkılır ve programa kaldığı yerden devam edilir.Şu şekilde kullanılır:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]return; [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]17.FONKSİYONLARIN DEĞER DÖNDÜRMESİ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bazen bir fonksiyonun, bir işlem yapıldığında yapılan işlemin sonuçları hakkında bilgi vermesi istenir. Örneğin getchar() fonksiyonu içerisindeki işlem, klavyeden bir tuşa basılıncaya kadar beklemeyi sağlamaktadır. Bu fonksiyon yardımıyla, aynı zamanda, hangi tuşa basıldığını öğrenebiliriz. Demek ki bu fonksiyonun, geri dönüş değeri vardır ve bu değer char veri tipindedir. Yani bu fonksiyon aşağıdaki şekliyle tanımlanmıştır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char getchar();[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]İşte bu tanımlamaya uygun olarak siz de kendi geri dönüş değeri olan fonksiyonları oluşturabilirsiniz. Böyle bir fonksiyon bittiğinde yapılması gereken en önemli işlem, fonksiyonun değerini atamaktır. Bu atama return komutuyla yapılır. İngilizce�de anlamı, �kaldığın yere geri dön� demektir. Dönerken hangi değerle döneceği ise komuttan hemen sonra belirtilmelidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:return 10; return karakter;//char tipinden bir değişken olabilir return sayac;//int tipinden ya da başka herhangi bir tipten de olabilir. return karekok;//Bir sınırlama yoktur.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————-[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]18.FONKSİYONLARA DEĞER BİLDİRİMİ (PARAMETRELER)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bir fonksiyonun yapacağı işi, sadece belirli kalıplara sokarak oluşturmak her zaman kullanışlı olmayabilir. Örneğin bazı matematiksel işlemler için fonksiyonun hangi sayılara bu işlemi uygulayacağını belirtmek gerekir. Bunun için fonksiyonlar parametre alabilirler. Örneğin bir sayının faktoriyelini alan bir fonksiyon yapalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int faktoriyel(int sayi ) { int sonuc; sonuc=1; for( i=2;i<=sayi;i++) sonuc=sonuc*i; return sonuc; } [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bu fonksiyon parametreli olarak tanımlanmıştır. Böylelikle fonksiyonumuz istenilen sayının faktoriyelini hesaplayabilir. Örneğin, 7 sayısının faktoriyeli için aşağıdaki kodu yazmak yeterlidir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:int sonuc; sonuc=faktoriyel(7 ); veya direk ekrana yazdırmak için printf(�%d�,faktoriyel(7 )); Bu fonksiyon parametreli olarak tanımlanmıştır ve fonksiyonun geri döndüreceği değer bir tamsayıdır. return komutuyla bu değeri sonuç olarak gönderdik. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Parametreli fonksiyonlarda geri dönüş değeri kullanılmayabilir. Örneğin ekrana bir dikdörtgen çizecek bir fonksiyonun parametreleri dikdörtgenin koordinatlarını belirtsin. Bu fonksiyonun geriye değer döndürmesine gerek yoktur.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Parametreli fonksiyonlarda parametre sayısı 1�den fazla olabilir. Bunlar aralarına virgül konarak belirtilir. Fonksiyon çağrılırken yine virgüller kullanılarak çağrılır. Örnek:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:**** pencere_ac(int x1,int y1,int x2,int y2); pencere_ac(0,0,100,100); [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]19.DEĞİŞKENLERİN ÖZELLİKLERİ [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]7. bölümde değişkenlere çok kısa bir bakış yapmıştık. Şimdi değişkenlerin esas yapıları hakkında duralım ve değişik değişken tiplerine göz atalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Değişkenler, bir sayısal değerin hafızada tutulması ve kullanılması için bellekte ayrılan yeri ve bu verinin algılanış biçimini belirler. Dolayısıyla çeşitli değişkenler bellekte değişik boyutlar kaplayabilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bunları açıklamadan önce biraz da bellek yapısına değinelim. Bilgisayarda bellek verilerinin temel yapıtaşı, ikilik (binary) sistemdir. Yani bellek 1"ler ve 0"lardan oluşur. Bellekte 1 ya da 0 değeri alabilen birime bit denir. Başka bir ifadeyle bir bit 2 farlı değer alabilir. (1 ve 0) 8 tane bit yan yana getirilirse buna byte denir. 1 byte 8 tane bitten oluşur. Her bit iki farklı değer alabiliyordu. Kombinasyon hesabından, 8 tane bitin 2 üzeri 8 farklı değer alabileceği kolaylıkla bulunabilir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Başka bir bakış açısıyla 2"lik düzende 8 basamaklı en büyük sayı 11111111 sayısıdır. Bu sayının değeri 255 "tir. 255"e kadar 0 "la birlikte tam 256 farklı sayı vardır. Bu da tam olarak 2 üzeri 8"e tekabül eder.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]O halde bir byte"ın 256 farklı değer alabileceğini gördük. 2 byte ise 256 "nın karesi kadar farklı değer alabilir. Buradan genelleme yaparsak, n byte 256 üzeri n farklı değer alır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]C++ "ta bir değişkendeki ilk bit, sayının pozitif-negatif olup olmadığını belirten bit olarak değerlendirilir. Bu bitin değeri 0 ise sayı negatif, 1 ise sayı pozitiftir. Eğer bir değişken tanımından önce unsigned belirtecini kullanırsanız, C++ ilk biti de değişkene dahil edecek, ve değişken ilk bit ne olursa olsun pozitif değer içerecektir. Böylelikle sayının alabileceği maksimum değer iki katına çıkar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi C++"taki değişken çeşitlerini inceleyelim[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:char 8 bit 1 byte Tam sayı -128…+127 unsigned char 8 bit 1 byte Tam sayı 0…255 int 16 bit 2 byte Tam sayı -32 768…+32 767 long int 32 bit 4 byte Tam sayı – 2 147 483 648…+2 147 483 647 unsigned int 16 bit 2 byte Tam sayı 0…+65 535 unsigned long 32 bit 4 byte Tam sayı 0…+4 294 967 296 float 32 bit 4 byte Ondalıklı sayı 3.4 * (10^-38) to 3.4 * (10^+38) double 64 bit 8 byte Ondalıklı sayı 1.7 10^-308 to 1.7 10^308 Kod:1 GigaByte=1024 MegaByte=1024^2 KiloByte=1024^3 Byte=1024^4 Byte=8*1024^4 Bit 1 Byte=8 Bit 1 KiloByte (KB) =1024 Byte = 8*1024=Bit 1 MegaByte(MB)=1024 KiloByte(KB) 1 GigaByte(GB)=1024 MegaByte(MB)————————————————————————–[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]20.STRUCT (YAPILAR)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef : Yeni tip tanımlamak için kullanılan bir komuttur. Örnek: typedef TAMSAYI long int;Bu satırdan sonra artık TAMSAYI diye bir tip oluşur. [/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]TAMSAYI sayi1,sayi2;[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]sayi1 ve sayi2 TAMSAYI tipinden yani, long int değişkenlerdir.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]struct: Belirli tipleri bir araya getirerek bir veri yapısı oluşturmak için kullanılan bir komuttur. (yapı)[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Yapı, değişkenler içeren bir veri saklama ağacıdır. Programınızdaki değişkenleri düzenli tutmak için çok gerekli bir özelliktir. Yapılar kullanılmadan oluşturulan büyük programlar hantal olur ve anlaşılması ve geliştirilmesi çok zordur. Şimdi struct ifadesinin ne anlama geldiğini örneklerle inceleyelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Bir programda çeşitli üçgenler saklamak isteyelim. Her üçgenin üç adet koordinatı olur. Her koordinatın da 2 adet değer içermesi gerekir. (x ve y) Şimdi bunu şu ana kadar öğrendiğimiz metotlarla yapmayı deneyelim.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:float x[3],y[3];Bu şekilde yalnızca bir üçgen belirttik. Daha fazla üçgen için ise şöyle yapabiliriz:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:float x[10][3],y[10][3];Bu şekliyle 10 tane üçgen saklayabiliriz. Yerine göre bunu da kullanabilirsiniz. Ama emin olun ki, program karmaşıklaştıkça bu yöntemin çok kötü olduğunu anlayacaksınız. Bundan daha kolay bir yolla böyle bir tanımlama yapmak mümkündür. Şimdi bu üçgeni struct olarak tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef struct { float x[3],y[3]; } UCGEN;[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Böylelikle UCGEN adında yeni bir tip tanımlamış olduk. Bu tipin bellekte kapladığı alan 24 byte"dır. Çünkü içinde 6 tane float tipinden değişken var. Hatırlarsanız float tipi 4 byte"lık belleğe ihtiyaç duyar. Bu yüzden bizim tanımladığımız UCGEN veri tipi hafızada 24 byte"lık yer kaplar.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi 1 tane üçgen saklamak için aşağıdaki kodu yazalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:UCGEN ucgen1;Bu tanımlamadan sonra ucgen1 değişkeni UCGEN tipinden bir değişkeni temsil edecektir. Bu değişkenin kendisi bir değer içermez ama üyeleri değer içerir. Üyelerine erişmek için "nokta" operatörü kullanılır.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:ucgen1.x[0]=0.5; ucgen1.y[0]=15.5; ucgen1.x[1]=7; … ucgen1.y[2]=8.6; Görüldüğü gibi ucgen1 değişkeninin üyeleri UCGEN tipinde tanımladığımız değişkenlerdir. Bu üye değişkenler sadece tanımlandıkları yapı içinde geçerli oldukları için, isimleri diğer değişkenleri etkilemez. Yani başka bir yerde x adlı bir değişken tanımlayabiliriz.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Şimdi de UCGEN tipinden 10 elemanlı bir dizi tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:UCGEN ucgen_dizisi[10]; ucgen_dizisi[0].x[0]=5.2; ucgen_dizisi[0].y[0]=3.2; … ucgen_dizisi[10].y[2]=4.1;Şimdi de koordinatlar için de bir yapı tanımlayalım. Düzlemdeki bir nokta x ve y değerinden oluşur. Buna göre:[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef struct { float x,y; }NOKTA;Şimdi UCGEN tipini farklı bir şekilde yeniden tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:typedef struct { NOKTA noktalar[3]; } UCGEN;Şimdi UCGEN tipinden bir değişken tanımlayalım.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Kod:UCGEN u1; u1.noktalar[0].x=3.9; u1.noktalar[0].y=5.8; … u1.noktalar[2].y=2.1;Görüldüğü gibi artık herşey daha derli toplu hale geldi. Bunun sağladığı kolaylığı daha kompleks programlar yapmaya başladıkça anlayacaksınız.[/FONT]
[font=tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]Başka bir örnekle olayı daha da açıklığa kavuşturalım. Bir veritabanı programında kullanmak üzere bir yapı tanımlayalım. Bu yapı içerisinde bir kulübe üye olan kişilerin isimlerini, telefonlarını vs. tutsun. Kulübün ismi, Hayvan Severler Derneği farzedelim. Örneğimizi oluşturalım, fakat daha önce küçük bir komutun ne işe yaradığına bakalım:[/FONT]