Tamsayılar Üzerinde Aritmetik İşlemler

İşlemint a,b
Toplamaa+b
Çıkarmaa-b
Çarpmaa*b
Kesirli Bölme a/b ( b != 0 olmalidir.) PASCAL'da a div b
Tamsayı Bölme a % b ( a nin b ye bölümünden kalan; PASCAL'da a mod b )

BAGLANTI OPERATORLERI (Koşullu Deyimler)

Operator C PASCAL
Esitlik == =
Esisizlik != <>
Buyuktur > >
Kucuk ya da esit <= <=
Kucuktur < <
Buyuk ya da esit >= >=

Özel Operatörler

Aritmetik,mantiksal,baglantili,bitwise ve adama operatorleri yaninda C dilinin kullandigi ozel operatorler de vardir. Bunlar asagida siralanmistir:

Artirma ++
Eksiltme --
Kosullu ?:
Yapi pointeri ->
Yapi uyeligi .
bir'in tumleyeni ~
operand'in buyuklugu sizeof()(byte cinsinden)

Standart Tamsayı Fonksiyonları

Fonksiyon C Pascal
Salt deger abs(x) abs(x)
Kare pow(x,2.0) sqr(x)
Karekok sqrt(x) sqrt(x)
En buyuk tamsayi alt sinir floor(x) trunc(x)
En kucuk tamsayi ust sinir ceil(x) trunc(x)

Pascal'daki trunc(x) fonksiyonunu C de yaratmak icin asagidaki fonksiyon kurulabilir :

#include 
int trunc(k)
	double k;
{
	if ( k >= 0 )
		return (int) floor(k);
	else
		return (int) ceil(k);
}

Gerçel Sayı Fonksiyonları

Fonksiyon C Pascal
Salt deger abs(x) abs(x)
Kare pow(x,2.0) sqr(x)
sinus sin(x) sin(x)
cosinus cos(x) cos(x)
tangent tan(x) tan(x)
arccos acos(x)
arcsin asin(x)
arctan atan(x) arctan(x)
" atan2(x)
Doğal log log(x) ln(x)
Üstel exp(x) exp(x)
Karekok sqrt(x) sqrt(x)
polinom poly

Mantıksal Bağıntılar

Bağıntı C Pascal
ve && and
ya da || or

Ornek :

	if( a >0 && a <50 ) 
	printf(" Bu ve içeren bir mantıksal deyimdir.\n");
         

	if( x >= 14 && (x <= 45 || y == 0))
	printf(" Bu ve ile ya da iceren bir mantiksal deyimdir\n");

Kendiliğinden Artma (Auto increment)

Bircok programlama dilinde dongu yaparke bir x degiskeninin degerlerinin artirilmasi icin

		x = x+1;						(1)

adamasi yapilir. C dilinde bu adama yapilabildigi gibi, buna denk olarak

		x++;							(2)

deyimi kullanilir. Buna otomatik artirma diyoruz.

Bazi durumlarda kosullu bir deyimin yurutulmesinden once artirma islemini yapmak istiyebiliriz. Bu durumda, yukaridaki otomatik artirmayi

		++x;							(3)

biciminde yazariz. Bunlara gore

		while( x++ <30) { ... }			(4)

deyiminde { ... } icindeki deyimler yurudukten sonra x degiskeninin degeri 1 artar. Oysa

		while( ++x < 30 ) { ... }		(5)

kosullu deyiminde ise { ... } blokundaki deyimler yurumeden once x degiskeninin degeri 1 artar.

Bunlarin nasil calistigini ve aralarindaki farki gormek icin asagidaki program parcalarini incelemek yeterlidir.

Kendiliğinden Eksilme (Auto decrement)

Bircok programlama dilinde dongu yaparke bir x degiskeninin degerlerinin eksiltilmesi icin

		x = x-1;						(1)

adamasi yapilir. C dilinde bu adama yapilabildigi gibi, buna denk olarak

		x--;							(2)

deyimi kullanilir. Buna otomatik eksiltme diyoruz.

Bazi durumlarda kosullu bir deyimin yurutulmesinden once eksiltme islemini yapmak istiyebiliriz. Bu durumda, yukaridaki otomatik artirmayi

		--x;							(3)

biciminde yazariz. Bunlara gore

		while( x-- <30) { ... }			(4)

deyiminde { ... } icindeki deyimler yurudukten sonra x degiskeninin degeri 1 eksilir. Oysa

		while( --x < 30 ) { ... }		(5)

kosullu deyiminde ise { ... } blokundaki deyimler yurumeden once x degiskeninin degeri 1 eksilir.

Bunlarin nasil calistigini ve aralarindaki farki gormek icin asagidaki program parcalarini incelemek yeterlidir.

Koşullu Operator

if ... else denetimi yerine gecmek uzere C dilinde sozdizimi asagida verilen kosullu operator kullanilir:

	deyim1 ? deyim2 : deyim3 ;				(1)

Eger deyim1 dogru ise deyim2 yurutulur; degilse deyim3 yurutulur. Buna gore bu kosullu deyimi if..else ile soyle yazabilirdik :

	if(deyim1)
	deyim2;
		else
		deyim3;

VERI TURLERI

C dilinde gercekte iki tur veri vardir:

  1. Tamsayila
  2. r,
  3. Gercel sayilar.

Bu ikisinden turetilen dort ana veri turu vardir:

char Bir karakter temsil eder; tamsayilarin bir alt kumesidir
int Bir tamsayi temsil eder
float Bir gercel sayi temsil eder
double

Bu ana veri turlerinden yeni veri turleri üretmek icin asagidaki niteleme sifatlari kullanilabilir:

short int
Bazi donanim dizgelerinde int icin ayrilan yerin yarisini ayirir; PC 'lerde int ile short icin ayni buyuklukte yer ayrilir.
long int
int icin ayrilan yerin iki kati uzunlugunda bir yer ayrilir
unsigned
Tamsayilarda +,- isareti icin ayrilan hane mantise katilir; boylece int icin ayrilan yerde int'in iki kati buyuklugunde pozitif tamsayilari gostermek olanagi yaratilir.

DEPO SINIFLARI

Bir degiskenin gecerlilik alanini ve varrolus suresini belirlemek icin depo sinifi belirtilebilir: auto Bir fonksiyonun isi bitince o fonksiyon icinde tanimlanan degiskenin isi biter ve ona ayrilan yer kapanir. Depo sinifi belirtilmeyen degisken auto sinifindan varsayilir. static Bu sinifa ait bir degisken, ilgili fonksiyon aktif olmadigi zamanda da varligini surdurur. register CPU registerinde saklanarak hiz kazanilmak istendiginde kullanilir. Ancak registerde yer varsa orada saklanabilir. Programci orada saklanacagini garanti edemez. extern Baska bir modulde tanimli degiskeni belirtmek icin kukllanilir.