C PROGRAMLAMA DİLİ
Operatörler Aritmetik Operatörler Atama Operatörleri Karşılaştırma Operatörleri ve Mantıksal Operatörler
Aritmetik Operatörler Değişken veya sabitler üzerinde temel aritmetik işlemleri gerçekleyen operatörlerdir. Operatör Açıklama Örnek Anlamı + toplama x+y x ve y nin toplamı - çıkarma x-y x ve y nin farkı * carpma x*y x ve y nin çarpımı / bölme x/y x ve y nin oranı % artık bölme x%y x/y den kalan sayı
Atama Operatörleri Bu operatörler bir değişkene, bir sabit eşitlemek için kullanılır. Birleşik atama: bazı ifadelerde işlem operatörü ile atama operatörü birlikte kullanılarak, ifadeler daha kısa yazılabilir. Eğer ifade değişken= değişken[operatör] ifade; şeklinde ise, daha kısa bir biçimde değişken[operatör]= ifade; olarak yazılabilir.
Operatör Açıklama Örnek Anlamı = atama x=7; x=7; += ekleyerek atama x+=3 x=x+3 -= eksilterek atama x-=5 x=x-5 *= çarparak atama x*=4 x=x*4 /= bölerek atama x/=2 x=x/2 %= bölüp, kalanını atama x%=9 x=x%9 ++ bir arttırma x++ veya ++x x=x+1 -- bir azaltma x-- veya --x x=x-1
değişken [operatör]= aritmetik ifade; i = i + 1; // i değerini her döngüde 1 arttırır a = 5; C=a+b;
Karşılaştırma Operatörleri ve Mantıksal Operatörler Operatör Açıklama Ornek Anlamı > büyüktür x>y x, y den büyük mü? < küçüktür x<y x, y den küçük mü? == eşittir x==y x, y ye eşit mi? >= büyük-eşittir x>=y x, y den büyük yada eşit mi? <= küçük-eşittir x<=y x, y den küçük yada eşit mi?!= eşit değil x!=y x, y den farklı mı? && mantıksal VE x>2 && x<y mantıksal VEYA x>2 x<y x 2 den büyük VE y den küçük mü? x 2 den büyük VEYA y den küçük mü?
Temel Giriş/Çıkış Fonksiyonları printf() Fonksiyonu puts() Fonksiyonu scanf() Fonksiyonu gets() Fonksiyonu getchar() Fonksiyonu Temel giriş/çıkış fonksiyonları kullanılırken stdio.h başlık dosyası programın başına eklenmelidir. Bu fonksiyonlardan en çok kullanılanlar aşağıda verilmiştir. Fakat bunların dışında olan bir kaç fonksiyon daha vardır.
printf() Fonksiyonu Standart C kütüphanesinin bir parçası olan printf() fonksiyonu, değişkenlerin içeriğini veya mesajı ekrana bir düzenle(formatla) standart çıkışa(stdout) yazmak için en çok kullanılan fonksiyondur. Basit olarak eğer ekrana Hata oluştu!.. şeklinde bir mesaj yazdırmak için, printf fonksiyonu çağırmak ve fonksiyon içinde, çift tırnaklar arasına, bu iletiyi yazmak yeterli olacaktır. Yani: printf("hata Oluştu!..");
Çoğu zaman ekrana, programda kullanılan bir değişkenin değeri yazdırılmak istenebilir. Örneğin ekranda bir alt satıra geçerek x tamsayı değişkeninin sayısal değerini ekrana yazdırmak istediğimizi varsayalım. Bu durumda printf() fonksiyonun kullanımı şu şekilde olacaktır: printf("\nxin değeri %d dir",x); x=12 için bu işlemin sonucunda ekrana şu ileti çıkacaktır: Dikkat edilirse %d sembolü x değişkenin nerede yazılması gerektiğini belirtiyor x in değeri 12 dir
Kontrol karakterleri Karakter Anlamı \a Ses üretir(alert) \b imleci bir sola kaydır(backspace) \f Sayfa atla. Bir sonraki sayfanın başına geç(formfeed) \n Bir alt satıra geç(newline) \r Satır başı yap(carriage return) \t Yatay TAB(Horizontal TAB) \v Dikey TAB(vertical TAB) \" Çift tırnak karakterini ekrana yaz \' Tek tırnak karakterini ekrana yaz \\ \ karakterini ekrana yaz %% % karakterini ekrana yaz
Tip karakterleri Tip Karakteri Anlamı Tip %c tek bir karakter char %d işaretli ondalık tamsayı int, short %ld uzun işaretli ondalık tamsayı long %u işaretsiz ondalık tamsayı unsigned int, unsigned short %f Gerçel sayı float, double %s karakter dizisi (string) char %lu işaretsiz uzun tamsayı unsigned long
puts() Fonksiyonu puts(*string); *katarolarak belirtilen karakter topluluğunu ekrana yazdıktan sonra, imleci alt satıra geçirir. Örneğin: puts("puts() fonksiyonunun gösterimi!"); şekindekullanılırsa çıkış şöyle olacaktır. puts() fonksiyonunun gösterimi! puts() fonksiyonu daha önce verilen kontrol karakterleri ile kullanılabilir. puts("bu birinci satır...\nbu ikinci satır."); Bu birinci satır... Bu ikinci satır.
scanf() Fonksiyonu Birçok programda ekrana verilerin yazılmasının yanısıra klavyeden veri okunması gerekebilir. scanf() fonksiyonu bu amaçla kullanılan fonksiyondur. printf() gibi scanf() fonksiyonu da daha önce verilen karakterleri kullanır. Örneğin klavyeden bir x tamsayısı okumak için: scanf("%d",&x);
Klavyeden iki farklı sayı okunmak istendiğinde scanf() fonksiyonu şöyle kullanılabilir: scanf("%d %f",&x,&y);
scanf() fonksiyonun kullanımı #include <stdio.h> main() { int x; floaty; char c; printf("bir tamsayigirin :"); scanf("%d",&x); printf("bir karakter girin :"); scanf("%s",&c); printf("bir reel sayigirin: "); scanf("%f",&y); printf("\n\ttamsayi :%d",x); printf("\n\tkarakter :%c",c); printf("\n\treelsayi: %f\n",y); puts("girdin."); puts("bye."); }
gets() Fonksiyonu Klavyeden bir karakter topluluğu (katar) okumak için kullanılır. Okuma işlemi yeni satır karakteriyle(\n) karşılaşılıncaya kadar sürer. puts()-gets() arsındaki ilişki, printf() - scanf() arasındaki gibidir. puts() ile ekrana bir katar yazdırılırken, gets() ile okunur. Örneğin:... charktr[10]; puts("bir şeyler yazın:"); gets(ktr);...
Yukarıdaki program parçası, klavyeden girilen karakterlerin, gets() fonksiyonu ile ktr katarına aktarmak için kullanılır. ktr[10]şeklindeki kullanım girilen katarın içerisinden ilk 10 karakteri değerlendir manasındadır.
getchar() Fonksiyonu Standart girişten bir karakter okur. Programı istenen bir yerde dudurup, bir karakater girinceye kadar bekletir. Örneğin:... for(i=0;i<10;i++) { getchar(); printf("%d\n",i); }... Yukarıdaki program parçası 0-9 arası sayıları sırasıyla ekranda göstermek için kullanılır. Fakat her rakamı yazdırılmadan önce klavyeden herhangi bir karakter girip [Enter] tuşuna basılması beklenir. Bu bekleme getchar() fonksiyonu ile gerçekleştirilir.
Örnek: Kullanıcıdan bir sayı girmesini isteyen ve bu sayıyı ekrana yazdıran program #include<stdio.h> #include<conio.h> inta; main() { printf("birsayigiriniz:"); scanf("%d",&a); printf("girdiginiz sayi =%d",a); getch(); }
Örnek: Klavyeden girilen iki tamsayının toplamını yazdıran bir program #include<stdio.h> #include<conio.h> inta,b; main() { printf("ilk sayınız:");scanf("%d",&a); printf("ikinci sayınız:");scanf("%d",&b); printf("toplam =%d",a+b); getchar(); getch(); }
Klavyeden girilen iki tamsayının çarpımını yazdıran bir program #include<stdio.h> inta,b; main() { printf("ilk sayınız:");scanf("%d",&a); printf("ikinci sayınız:");scanf("%d",&b); printf("carpım=%d",a*b); getchar(); }
Bölme işlemi: #include<stdio.h> #include<conio.h> main() { intbolunen= 12, bolen= 8; float bolum; bolum = (float)bolunen/ bolen; printf("sonuc: %f\n",bolum); getch(); }
Girilen iki sayının farkını ve bölümünü bulup yazıcı ile yazan #include<stdio.h> #include<conio.h> inta,b; main() { printf("ilk sayınız:");scanf("%d",&a); printf("ikinci sayınız:");scanf("%d",&b); printf("fark =%d\n",a-b); printf("bolum =%d",a/b); getch(); }
Bölüm neden tamsayı çıkıyor? Normalde kesirli çıkmasını beklediğiniz sonucun, 0.000000 çıkmasının nedeni castingkullanmamamızdır. Bir tam sayıyı, bir başka tam sayıya bölerseniz, sonuç bir başka tam sayı çıkar. Ve C programlama dili, bir virgüllü sayıyı tam sayıya atamaya kalktığınızda, herhangi bir yuvarlama işlemi yapmadan, virgülden sonrası atar. CastOperatorşu şekilde kullanılmalıdır. degisken_1 = (tip) degisken_2;
#include<stdio.h> #include<conio.h> inta,b; main() { printf("ilk sayiniz:");scanf("%d",&a); printf("ikinci sayiniz:");scanf("%d",&b); printf("fark =%d\n",a-b); floatc; c=(float)a/b; printf("bolum =%f",c); getch(); }
Soru: Kullanıcıdan doğum tarihini isteyen ve sonuç olarak kaç yaşında olduğunu hesaplayan program?
#include<stdio.h> #include<conio.h> inta,b,c; main() { printf("dogumyilinizigiriniz:");scanf("%d",&a); c=2014-a; printf("yasiniz=%d\n",c); getch(); }
Örnek:İki sayının toplamlarının karesini ve küpünü hesaplayıp yazan
#include<stdio.h> #include<conio.h> int a,b,c,tkare,tkup; main() { printf("ilk sayiniz:");scanf("%d",&a); printf("ikinci sayiniz:");scanf("%d",&b); c=a+b; Tkare=c*c; Tkup=c*c*c; printf("toplamlarinin Karesi =%d\n",tkare); printf("toplamlarinin Kupu =%d\n",tkup); getch(); }
#include<stdio.h> #include<conio.h> #include<math.h> int a,b,c,tkare,tkup; main() { printf("ilk sayiniz:");scanf("%d",&a); printf("ikinci sayiniz:");scanf("%d",&b); c=a+b; Tkare=pow(c,2); Tkup=pow(c,3); printf("toplamlarinin Karesi =%d\n",tkare); printf("toplamlarinin Kupu =%d\n",tkup); getch(); }
Bir karenin kenar uzunluğunu soran ve bu karenin alanını ve çevresinin hesaplayan program?
#include <stdio.h> #include <conio.h> main() { int kenar; float sonuc; printf("karenin kenar degerini giriniz? (m):"); scanf("%d",&kenar); sonuc = float(kenar) * float(kenar); printf("\n\nkarenin Alani%ld mı ve ",long(sonuc)); printf("cevresi%5.0f m'dir.",(4*float(kenar))); getch(); }