YTÜROK TEMEL C PROGRAMLAMA EĞİTİMİ
C’ye Genel Bakış C programlama dili Dennis Ritchie tarafından 1972 yılında oluşturuldu. C’nin bugün dünyada en fazla kullanılan yazılım dili olmasındaki sebepler: *Güçlü ve esnek bir dil olması *Yapabileceklerinizin hayal gücünüzle sınırlı olması *Çok fazla derleyiciye, kütüphaneye ve öğrenilmesi için gerekli birçok yardımcı kaynağa sahip olması *C’nin fonksiyonlar şeklinde yazılabilmesidir.
Bir C programında bulunması gerekli komutlar #include<stdio.h> //Kütüphane int main() // Temel Fonksiyon { return 0; /*Programın Sonlanması İçin Gerekli ifade*/ }
Kütüphaneler Bütün C programlarının başında yazılır. Yazılmış bir kütüphaneyi program içinde kullanmak isterseniz başında #include < ekleyeceginizkutuphane> yazmalısınız. koymalısınız.Kütüphaneler fonksiyonları barındırır; C dilinde yazacağınız programın amacına göre hazır kütüphaneleri ya da hazırlamış olduğunuz kütüphaneleri ekleyerek fonksiyonlardan yararlanabilirsiniz. Örnek: #include<stdio.h> // Standart input output kütüphanesi { printf(), scanf() gibi } #include<math.h> // Matematiksel fonksiyonların yer aldığı kütüphane { sqrt() , abs( ) , asin() , acos() gibi } #include<stdlib.h > // Yazıyı tamsayıya çeviren { atoi( ) , max( ), min( ) } Not:Fazladan ekleyeceğimiz her kütüphane programımızın boyutunu büyütmektedir.Gereksiz kütüphaneleri include etmeyin!
Değişken Tanımlama C dilinde gerek fonksiyonları kullanırken, gerek matematiksel işlemler yaparken gerekse diğer gerekli alanlarda değişkenlere ihtiyacımız vardır. Değişken tanımlarken mesela : int xdegiskeni; yazabiliriz. Buradaki xdegiskeni bir değişkendir. Değişkenlere istediğimiz ismi verebiliriz x y elma armut mahmut vs… Yukarıdaki tanımlamada kullanılan int ise tanımlamış olduğumuz xdegisken’inin bir integer yani tamsayı olduğunu compiler’a tanıtır. int aslen bir değişken tipidir. Değişken tiplerini inceleyelim. Not: C dilinde yazdığımız her ifade, her tanımlama noktalı virgül ‘ ; ‘ ile son bulmalıdır. Böylece compiler’a yazdığımızın son bulduğunu anlatmış oluruz.
Değişken Tipleri Değişken tanımlarken hangi değişken tipi kullanacağımız çok önemlidir.Gereksiz yere kullanılacak daha büyük yer kaplayan bir değişken, yazdığımız programımızı büyütecektir. Tipler: char x; // x adında 1 byte ‘lık karakter değişkeni ( Signed: -128 tan 127 e kadar, Unsigned : 0 dan 255 e kadar sayılar geçerli ) int y; // y adında 2 veya byte’lık bir tamsayı oluşturur. ( Signed : -2147483648 to 2147483647 ‘e kadar sayı alabilir.) unsigned int a; // a adında pozitif bir değişken tamsayı; ( Unsigned 0 dan 4294967295’ e kadar sayı girilebilir. ) float b; // b adında bir rasyonel değişken tanımlanır. ( 7 haneye kadar tüm rasyonel sayılar ) NOT: Eğer istersek mesela int x=5; şeklinde, direk x’i 5 e atayabiliriz.
Bildiklerimizi Ufak bir Programın İçinde Kullanalım! #include<stdio.h > // Kütüphane int main( ) // Program Başlangıcı { int x; // x diye bir tamsayı tanımladık. printf(« Lutfen bir tamsayi giriniz»); // printf() fonksiyonuyla ekrana yazı gönderdik. scanf(«%d»,&x); //Kullanıcının gireceği tamsayıyı x değişkenine atadık. printf(« Girilen sayi %d dir. », x) ; // Ve printf() fonksiyonuyla bu x değişkenini ekrana verdik. return 0; }
Yazdırma Komutu printf(): Ekrana yazdırma komutu olan printf’de istersek değişkenleri de yazdırabiliriz.Eğer sadece kullanıcıya mesaj vermek istiyorsak puts(«mesajiniz» ) daha kullanisli ve daha düşük boyutlu bir fonksiyondur. printf(« bir degisken : %f »,y) ; Yukarıda y değişkenini yazdırırken y’nin bir float olduğunu göz önüne alarak mesaj bölümü içinde %f yazdık. y bir karakter olsaydı %c , tamsayı ya da long int olsaydı %d yazabilirdik. Not: C dilinde boşluklar önemsizdir, yukarıdaki ifadeyi printf(« bir degisken : %f » ,y) ; printf(« bir degisken : %f »,y) ; veya printf(« bir degisken : %f » ,y) ; şeklinde yazarsak da bir sıkıntı yaşanmaz. Yazılım dillerinde boşluklar algılanmaz.
Yazdırma Komutu: printf() printf ile çalışırken boşluk elde etmek istiyorsak, \n ile alt satırda yazdırmaya devam edebiliriz. Örnek: printf(«Deneme1 \n Deneme2 \n Deneme3 Deneme4») Çıktı: Deneme1 Deneme2 Deneme3 Deneme4 \t ile tab yapabiliriz. Örnek: printf(«Deneme1 \t Deneme2»); Çıktı: Deneme1 Deneme2 \a ile makineden ses çıkartabiliriz. Örnek: printf(«\a\a\a») Çıktı: Dıt dıt dıt!
scanf() Fonksiyonu Kullanıcının keyboard’dan veri girişi yapmasını istiyorsak, ya da başka bir dosyadan , başka bir yerden programımıza veri girişi yapmak istiyorsak scanf( ) kullanabiliriz. Mesela : scanf (« %d », &x); // Burada x tamsayısı kullanıcı tarafından girilir. scanf(« %d %f »&y , &m) // Burada kullanıcıdan ilk önce y tamsayısını ENTER’a bastıktan sonra m rasyonel sayısını girmesini isteyebiliriz.
C’de Operatörler C dilinde birçok matematiksel operatörü kullanabiliriz; örneğin 4 işlemi yapmamıza yarayan + - * / gibi. Tanımladığımız 2 değişken üzerinde bunları kullanabiliriz. X+Y ; , X/Y ; gibi.. Bunun yanında Not: Matematikte kullandığımız eşittir , « = » ile ifade edilmez. X=Y ; dediğimizde Eğer int y=5; int x; şeklinde tanımlanmışsa x=y ; ifadesinde y’nin değeri x üzerine işlenmiş olur. Not:Matematikte kullandığımız eşittiri kullanmak istersek , çift eşittir « == » kullanmamız gerekir.
Basit Program Kontrolü : if Çeşitli amaçlarda yazacağımız programlarla , istediğimizi gerçekleştirmemiz için program akışını kontrol etmemiz gerekir. Bunun için birçok ifade vardır , bazıları if, while ve for’dur. Şimdi kısaca bunlardan bahsedelim. if : if döngüsü olarak da bilinen bu döngüde ilişkisel operatörler olan büyüktür > , küçüktür <, büyük eşit >=, küçük eşit <= kullanılabilir. Bu döngüyü şekilsel olarak gösterirsek: if (şart ) //mesela x>y ise { ifade1; // yaptırmak istediğimiz bir ifadeler ifade2; }
Basit Program Kontrolü : if if ile beraber kullanılan bir yardımcı ifade vardır ki, bahsetmeden olmaz. Tabiki else’den söz ediyoruz. Kullanım şeması kısaca şu şekildedir. if (şartımız) // mesela x>y ise ifade1; // ifade 1 i gerçekleştir. else ifade2; // eğer x>y değilse ifade 2 yi gerçekleştir. Eğer 2 den fazla durumdan bahsediyorsak şu şekilde yazabiliriz: if (1. Şartımız) İfade1; else if ( 2. şartımız) İfade2; İfade3 gibi
Basit Program Kontrolü : if Şimdi de if ile oluşturulmuş bir programla bildiklerimizi pekiştirelim. int main() // Program Başlangıcı { int a,b; // a ve b adında 2 integer tanımlanıyor. printf(« 1 . Sayıyı giriniz: \n"); scanf(« %d ", & a); // Girilen sayı a üzerine tanımlanıyor. printf(« 2. Sayıyı Giriniz:\n "); scanf(« %d ", &b); // Girilen sayı b üzerinde tanımlanıyor. if(a<b) printf("%d büyüktür %d den :\n",b,a); if(a==b) printf("%d=%d",a,b); if(a>b) printf("%d büyüktür %d: ‘den\n",a,b); getch(); return (0); }
Basit Program Kontrolü:while Şimdi de while’dan bahsedelim. Kullanım şemasını gösterecek olursak; while (şart) //Herhangi bi şart kullanılabilir, genelde 2 sayının birbirine göre durumu karşılaştırılır. { İfade1; // istenilen herhangi bi ifade ya da fonksiyon kullanılabilir. İfade2; İfade3; } while’da eğer şart sağlanmazsa içindeki ifadelere bakılmaksızın direk atlanır ve program sonraki komutları yürütmeye devam eder.
Basit Program Kontrolü:While Şimdi de while ile yazılmış bir programı inceleyelim. //Faktoriyel Hesaplama Algoritması int Cevap=1; // Cevap degiskeni 1 olarak tanımlandı. int x=5; // x degiskeni 5 olarak tanımlandı. while(x>0) // x’in pozitif oldugu sürece { if(x>1) Cevap = Cevap * x ; //Önceki 1 olan Cevap degiskeni üzerine Cevap * x işleniyor. x--; // x sayısını 1 azaltmış olduk. } else // x 1’den büyük değilse x--; // x’i bir azalt.
Basit Program Kontrolü:for while’a nazaran çok daha fazla kullanılan for döngüsü C dili için çok önemlidir. Kullanım şemasından bahsedecek olursak: for (başlangıç; şart; artış ) ifade; Örnek: * for(x=4;x<20; x++) // tam 17 defa aşağıdaki ifade print edilir. printf(«Robotik Otomasyon Kulübü»); * for(y=50;y>10;y--) gibi kullanılabilir. Not: for ile yapabilecekleriniz tamamen sizin hayal gücünüze bağlıdır.2 for döngüsünü iç içe de kullanabilir, while ve ifle beraber de kullanabilirsinz.
Basit Program Kontrolü: for For döngüsüyle ilgili bir örneği inceleyelim. int tek=0,cift=0,sayac; for(sayac=0;sayac<10;sayac++) // sayaç 0’dan 10 ‘a kadar artırılıyor. { if(sayac%2==1) // Eğer sayaçın modu(2’ye bölündüğünde veren kalan) 1 se tek=tek+sayac; // 1+3+5+7+9 = 25 else cift=cift+sayac; // 0+ 2 +4 +6 +8 =20 }
Basit Program Kontrolü: for Basit bir örnek daha inceleyelim. int i,j; // i ve j adında 2 tamsayı tanımlanıyor. for(i=10;i>=1;i--) // i=10 değerinden her iterasyonda 1 azaltılarak 1 e ulaşacak. { for(j=10;j>=1;j--) // j=10 değerinden her iterasyonda 1 azaltılarak 1 e ulaşacak. printf("*"); // * Döngü boyunca ekrana * yazdırılıacak } printf("\n"); // Alt satıra geçmeye yarar.
Ferhat MAÇİN ferhatmacin@gmail.com Sorular?? Ferhat MAÇİN ferhatmacin@gmail.com YTÜROK