ÖNİŞLEMCİ KOMUTLARI:
Önişlemci komutlarının amacı, bir şeyi başka bir şekilde ifade etmektir.
Bir program yazdığınızı düşünün... Bu programda, PI değerini birçok yerde kullanmanız gerekiyor.
Siz de PI değeri olması gereken her yere, 3.14 yazıyorsunuz. Oldukça sıkıcı bir iş.
İleride PIyi, 3.141592653 olarak değiştirmek isterseniz daha da sıkıcı hâle dönüşebilir.
#define
#define komutu, adından da anlaşılabileceği gibi tanımlama işlemleri için kullanılır.
Bunun için #define yazıp bir boşluk bıraktıkan sonra, önce kullanacağımız bir isim verilir,
ardından da yerine geçeceği değer.
Kısaca:
#include<iostream>
#define PI 3.14159 //artık PI değeri 3.14159dur.
#define ekrana_yazdir cout
#define deger_al cin
#undef
Bazı durumlarda, #define komutuyla tanımladığımız şeyleri, iptal etmek isteriz.
Tanımlamayı iptal etmek için, #undef komutu kullanılır.
Örneğin #undef PI yazdığınız da, o noktadan itibaren PI tanımsız olacaktır.
#define ile oluşturduğunuz sembolleri belirli noktalardan sonra geçerliliğini iptal
etmek veya yeniden tanımlamak için #undef komutunu kullanabilirsiniz.
#ifdef ve #ifndef
Önişlemci komutlarında bir sembol veya simgenin daha önce tanıtılıp tanıtılmadığını kontrol etmek isteyebiliriz.
Tanıtılmışsa, şöyle yapılsın; yok tanıtılmadıysa, böyle olsun gibi farklı durumlarda ne olacağını belirten yapılar
gerekebilir. Bu açığı kapatmak için #ifdef (if defined - şayet tanımlandıysa) veya
#ifndef (if not defined - şayet tanımlanmadıysa) operatörleri kullanılır.
Kısa bir örnekle ile açıklayacak olursak:
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
main( **** ){
int yaricap;
float alan;
cout<< "Cemberin yari capini giriniz: " ;
cin >> yaricap;
// Şu noktaya kadar tanımlı bir PI değeri bulunmuyor.
// #ifndef opertörü bu durumu kontrol ediyor.
// Eğer tanımsızsa, PInin tanımlanması sağlanıyor.
#ifndef PI
#define PI 3.14
#endif
alan = PI * yaricap * yaricap;
cout << "Cember alani: " << alan ;
getch();
return 0;
}
#if, #else, #endif, #elif
Bazen bir değerin tanımlanıp, tanımlanmadığını bilmek yetmez. Bazı değerler, bayrak (flag) olarak kullanılır.
Yani eğer doğruysa, böyle yapılması lâzım, aksi hâlde böyle olacak gibi... Bazı programlar, önişlemci komutlarından yararlanır.
Değişken yerine, önişlemcileri kullanarak tanımlanan simgeler, bu programlarda flag görevi görür.
#include <stdio.h>
#include <iostream>
#include <conio.h>
#define HASSASLIK_DERECESI 2 //buradaki 2 degerini degistirirsek #elif komutları ona göre isler.
using namespace std;
main( **** ){
int yaricap;
float alan;
cout<< "Cemberin yari capini giriniz> " ;
cin >> yaricap ;
// Hassaslık derecesi, pi sayısının virgülden kaç
// basamak sonrasının hesaba katılacağını belirtir.
// Eğer hassaslık derecesi bunlara uymuyorsa, alan
// değeri -1 yapılır.
#if ( HASSASLIK_DERECESI == 0 )
alan = 3 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 1 )
alan = 3.1 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 2 )
alan = 3.14 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 3 )
alan = 3.141 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 4 )
alan = 3.1415 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 5 )
alan = 3.14159 * yaricap * yaricap;
#else //hassasiyet 5den buyuk olursa alan -1 olur.
alan = -1;
#endif
cout<< "Cember alani: "<< alan ;
getch();
return 0;
}
#include
#include komutu, programımıza bir başlık dosyasının dahil edileceğini belirtir.
Bu başlık dosyası, standart giriş çıkış işlemlerini içeren bir kütüphane olabileceği gibi,
kendimize ait fonksiyonların bulunduğu bir dosya da olabilir.
Önişlemci komutlarının amacı, bir şeyi başka bir şekilde ifade etmektir.
Bir program yazdığınızı düşünün... Bu programda, PI değerini birçok yerde kullanmanız gerekiyor.
Siz de PI değeri olması gereken her yere, 3.14 yazıyorsunuz. Oldukça sıkıcı bir iş.
İleride PIyi, 3.141592653 olarak değiştirmek isterseniz daha da sıkıcı hâle dönüşebilir.
#define
#define komutu, adından da anlaşılabileceği gibi tanımlama işlemleri için kullanılır.
Bunun için #define yazıp bir boşluk bıraktıkan sonra, önce kullanacağımız bir isim verilir,
ardından da yerine geçeceği değer.
Kısaca:
#include<iostream>
#define PI 3.14159 //artık PI değeri 3.14159dur.
#define ekrana_yazdir cout
#define deger_al cin
#undef
Bazı durumlarda, #define komutuyla tanımladığımız şeyleri, iptal etmek isteriz.
Tanımlamayı iptal etmek için, #undef komutu kullanılır.
Örneğin #undef PI yazdığınız da, o noktadan itibaren PI tanımsız olacaktır.
#define ile oluşturduğunuz sembolleri belirli noktalardan sonra geçerliliğini iptal
etmek veya yeniden tanımlamak için #undef komutunu kullanabilirsiniz.
#ifdef ve #ifndef
Önişlemci komutlarında bir sembol veya simgenin daha önce tanıtılıp tanıtılmadığını kontrol etmek isteyebiliriz.
Tanıtılmışsa, şöyle yapılsın; yok tanıtılmadıysa, böyle olsun gibi farklı durumlarda ne olacağını belirten yapılar
gerekebilir. Bu açığı kapatmak için #ifdef (if defined - şayet tanımlandıysa) veya
#ifndef (if not defined - şayet tanımlanmadıysa) operatörleri kullanılır.
Kısa bir örnekle ile açıklayacak olursak:
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
main( **** ){
int yaricap;
float alan;
cout<< "Cemberin yari capini giriniz: " ;
cin >> yaricap;
// Şu noktaya kadar tanımlı bir PI değeri bulunmuyor.
// #ifndef opertörü bu durumu kontrol ediyor.
// Eğer tanımsızsa, PInin tanımlanması sağlanıyor.
#ifndef PI
#define PI 3.14
#endif
alan = PI * yaricap * yaricap;
cout << "Cember alani: " << alan ;
getch();
return 0;
}
#if, #else, #endif, #elif
Bazen bir değerin tanımlanıp, tanımlanmadığını bilmek yetmez. Bazı değerler, bayrak (flag) olarak kullanılır.
Yani eğer doğruysa, böyle yapılması lâzım, aksi hâlde böyle olacak gibi... Bazı programlar, önişlemci komutlarından yararlanır.
Değişken yerine, önişlemcileri kullanarak tanımlanan simgeler, bu programlarda flag görevi görür.
#include <stdio.h>
#include <iostream>
#include <conio.h>
#define HASSASLIK_DERECESI 2 //buradaki 2 degerini degistirirsek #elif komutları ona göre isler.
using namespace std;
main( **** ){
int yaricap;
float alan;
cout<< "Cemberin yari capini giriniz> " ;
cin >> yaricap ;
// Hassaslık derecesi, pi sayısının virgülden kaç
// basamak sonrasının hesaba katılacağını belirtir.
// Eğer hassaslık derecesi bunlara uymuyorsa, alan
// değeri -1 yapılır.
#if ( HASSASLIK_DERECESI == 0 )
alan = 3 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 1 )
alan = 3.1 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 2 )
alan = 3.14 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 3 )
alan = 3.141 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 4 )
alan = 3.1415 * yaricap * yaricap;
#elif ( HASSASLIK_DERECESI == 5 )
alan = 3.14159 * yaricap * yaricap;
#else //hassasiyet 5den buyuk olursa alan -1 olur.
alan = -1;
#endif
cout<< "Cember alani: "<< alan ;
getch();
return 0;
}
#include
#include komutu, programımıza bir başlık dosyasının dahil edileceğini belirtir.
Bu başlık dosyası, standart giriş çıkış işlemlerini içeren bir kütüphane olabileceği gibi,
kendimize ait fonksiyonların bulunduğu bir dosya da olabilir.
