You are currently browsing the category archive for the 'Faydalı Siteler' category.

Ntvmsnbc‘de başlığı ilk gördüğümde gülmemek için kendimi zor tuttum. (Neden tutuyorsam..)

Süpermen’in, insanüstü güçlerini etkisiz kılan “kriptonit”, çizgi romanlardan bilim dünyasına geçiş yaptı.

Sırbistan’da jeologların bulduğu bir maden, “Süpermen Dönüyor” adlı filmde, Süpermen’in düşmanı Lex Luthor tarafından kahramanı zayıflatmak için kullanılan ve uzaydan gelen kurgusal kriptonit ile neredeyse aynı bileşimi içeriyor.

Londra’daki Doğal Tarih Müzesinden maden bilimci Dr. Chris Stanley, yeni madeni bulduktan sonra kimyasal içeriğini oluşturan “sodyum lityum bor silikat hidroksid” içerikli formülünü internette aradığını söyledi.

Stanley, Süpermen Dönüyor filminde Lex Luther’ın bir müzeden çaldığı taşın içeriğiyle ilgili aynı bilimsel yazıyı görünce inanamadığını anlattı.

Sirbistan’da bulunan maddenin Doğal Tarih Müzesi ve Kanada’daki Ulusal Araştırmalar Konseyi bilim adamlarınca test edildikten sonra yeni bir mineral olduğunun doğrulandığı belirtildi.

Kripitonite benzese de yeni maden, Süpermen’in yeşil kristalinden hayli uzak beyaz; florin ve radyoaktif içermeyen bir mineral. Jadarite adlı bu maddenin, 25 Nisan ve 13 Mayıs’ta, Londra Doğal Tarih Müzesinde sergileneceği kaydedildi.

Dünya’nın Seçkin Okulları
Türkiye’nin En Büyük Yurtdışı Eğitim Fuarı’nda


11. IEFT – AVEA ile Yurtdışı Eğitim Fuarları
dünyanın birçok ülkesinden üniversite, dil okulu, kolej, lise, sertifika ve daha birçok programın okul temsilcilerini İstanbul, Adana, Ankara ve İzmir’de Türk öğrenciler ile buluşturuyor.


Tüm ziyaretçilere ücretsiz olarak açık olan fuarlarımıza katılmak için tek yapmanız gereken web sitemizde yer alan On-Line Davetiye‘yi doldurmak…
www.ieft.com.tr

Makrolar:
Çogunuz programlarinizda #define ifadesini kullanmissinizdir. Bu ifade sembolik sabit (symbolic constant) tanimlarinda kullanilir. Makrolarda buna benzer fakat makrolar genisletilebilir. Ve birden fazla deger alabilir. Fonksiyon gibi prototiplenip fonksiyonlarin yerini alabilirler. Makrolarda tip denetimi yapilmaz. Ve yanlis tip yüklediginizde derleyici tarafindan uyarilmazsiniz.

Makronun tanimi su sekildedir. Makrolar sembolik sabit gibi tanimlanirlar ve bundan farkli olarak birden fazla deger alabilir ve fonksiyon yerine geçebilirler.

#define PI 3.1415 //bu bir sembolik sabittit
#define MESAJ printf(“Merhaba”) // bu bir makrodur

Bir noktaya dikkatinizi çekmek istiyorum eger makro sonuna ; (noktali virgül ) koymazsaniz program içinde kullanirken siz makronun yanina ; koymalisiniz.

#define MESAJ printf(“Merhaba”)
void main(void)
{
MESAJ;
//nokatli virgül kullandim
}

#define MESAJ printf(“Merhaba); // burada noktali virgül kullandim
void main(void)
{
MESAJ
//burada kullanmama gerek yok
}

gördügünüz gibi çikti fonksiyonunu makro olarak tanimladik. Bu sadece bir tür kullanimi istersek bunu fonksiyon gibi deger alabilen halde kullanabiliriz. Bu da makrolarin parametre almasi ile ilgilidir.

C ve C++ da makrolara parametre atamasi yapabilirsiniz. Buna bir örnek verelim

#include “stdio.h”
#include “conio.h”

#define TOPLA(x,y) (x+y)

int main()
{
printf(“%d”,TOPLA(5,3));
return 0;
}

bu kullanim iki sayinin toplamini makro kullarak yapiyor. Makrolarda kesinlikle tip tanimi yapilmaz. Ve size uyarida bulunulmaz. Makrolara yükleme yaparken deneyimsiz programcilar çok çabul hataya düserler. Makro genislemöesi olayi birden fazla ara degiskenin makroya yüklenmesidir. Fakat asiri genisleme programinizin kirlimasina neden olur.

#define OKU(s) scanf(“%d”,&s)
int main()
{
int sayi;
OKU(sayi); // makro genisliyor
}

makro tanimi dikkat isteyen bir istir. Bir boslugun veya parantezin çok büyük önemi vardir. Simdi bunlari görelim.

Birincisi parantezin önemi
Parantezin önemi islem önceligi için gereklidir. Paranteze alinmayan makrolar islem önceligini derleyicinin insiyatifine birakir. Bir x (3*x) makrosunu #define ISLEM(x) x * 3 * x yazarsaniz istediginiz sonucu alamazsiniz. Veya kare alma islemi yapan bir makroya x*x deyip sonra buna (x+5) dediginizde istediginiz sonucu alamazsiniz. Islem önceligi için tüm makro gövdesini paranteze almalisiniz.

#define ISLEM(x) ((x) * (3 *x))
seklinde bir kullanim yapmaniz gerekir.

Bir diger problem makronun bosluk karaterine duyarli olmasidir. Örnek #define ISLEM (x) ((x)*(x)) derleyici tarafindan algilanma sekli (x) ((x)*(x)) dir ayni argüman bu makro için yoktur denir.
Nedeni (x) in mako sabit ismi ile bitisik yazilmamasindan kaynaklanir
#define ISLEM(x) ((x)*(x)) bu sorunu çözer. Bu duyarliligin sebebi sabit tanimlarindan gelir. Sabit taniminda iki deger vardir. Yerine yazilacak isim ve o yazilan ile degsecek esas deger. Ve bunlar da bosluk katari ile ifade edilir.
Bu kadar bilgiden sonra bir örnek uygulama yazalim ve açiklayalim.

#include “stdio.h”
#include “conio.h”

#define YENISATIR “\n”
#define YAZIYAZ(yazi) printf(”%s”,yazi)
#define DEGERYAZ(d) printf(”%d”,d)
#define DEGEROKU(deger) scanf(”%d”,(&deger))
#define KARE(x) ((x)*(x))
#define TUSBEKLE getch()
#define TAMSAYI(deg) int deg
void main()
{
TAMSAYI(isayi);
YAZIYAZ(”Lutfen karesini almak istediginiz sayiyi girin: “);
DEGEROKU(isayi);
YAZIYAZ(”Bu sayinin karesi: “);
DEGERYAZ(KARE(isayi)); YAZIYAZ(YENISATIR);
YAZIYAZ(”CODED BY r0b33n”);
YAZIYAZ(YENISATIR);
TUSBEKLE;
}

evet önce standart makrolari tanimladik. Ve main içinde hiç C++ syntaxi kullanmadan bir kod yazdik. Böyle yaparak kendi syntaxinizi bile olusturabilirsiniz. Misal bir header içine bu makrolari yazip. Normal program yazarken kendi syntaxiniz ile bir kodlama sistemi gelistirebilirsiniz. Yukarida örnegini verdigim kodda aynen öyle degisken tanimini bile kendi makromuz sayesinde yaptik.
Simdi size derleyici üstünde tanimli bes adet makroyu gösterecegim. Bu makrolar derleyici için özel anlam tasir ve iki alt çizgi ile baslar ve biterler.

__LINE__ : Bu makro kaynak kodunun o anki satir numarasini tasiyan bir sabittir. Sayisal degeri 10luk sistemdedir.
__FILE__ : Kaynak dosyasinin adini tutan makrodur
__DATE__ : Tarihi tutan makrodur
__TIMESTAMP__ : Kaynak kod dosyasi üzerinde yapilan en son degisikligin tarih ve saatini tutar
__STDC__ : Kodun Ansi C standartinda uyumlu olup olmadigini bildirir.
printf(”Kaynak dosya adi: %s\nSaat ve Tarih: %s\nSatir No: %d”,__FILE__,__DATE__,__LINE__ );
Kodunu derlediginizde asagiakine benzer bir çikti alirsiniz

Kaynak dosya adi: .\prog.cpp
Saat ve Tarih: Apr 5 2006
Satir No: 10
önislemci
Önislemci kodlari derleyicinin kodu tamamen çevirmeden önce derlenen kisimlaridir. Ana koddan en önce önislemciler çalisir. Misal #include ifadesi. Siz bir header dosyasi içinde bir fonksiyonu kullanacaginiz zaman #include dersiniz. Derleyici önce #include ifadesine bakar ve karsisindaki header dosyasina ulasir önce içindeki fonksiyonlari compile eder ve ana programda kullanilan fonksiyon çagrilarinin dogru bir biçimde çaismasini saglar. Iste bu gibi öncelikli durumlarda önislemci ifadeleri yardima gelir. C++ da
#define, #include, #else, #elif, #endif, #error, #if, #ifdef,#ifndef,#import,#line,# pragma,#undef,#using olmak üzere 14 tane önislemci anahtari vardir. Bunlardan #include ve #define ye asinasiniz o yüzden onlari anlatmayacagim. Ve bu bölümde anlatacagim önislemciler.

#ifdef ,#endif, #else
#undef

#ifdef , #else ve #endif önislemcileri

Bu önislemciler programa kosullu ekleme yapilmasini saglar. Misal

#include “stdio.h”
#include “conio.h”
#define PI 3.1415
#ifdef PI
#define OK 0
#else
#define PI 3.1415
#define OK 1
#endif

void main()
{
if (OK == 0)
printf(”PI Sayisi Tanimli”);
else
printf(”PI Sayisi Tanimli Degil. Simdi Tanimlandi..”);
getch();
}

Önce programi #define PI olarak çalistirin ve sonucu görün. Daha sonra #define PI satirini koddan çikarin ve çalistirin. Ve sonucu gözlemleyin. Eger PI sayisi tanimlanmis ise bize pi sayisinin tanimlandigini söylüyor. Degilse tanimlanmadigini söylüyor ve simdi tanimlandigini söylüyor. Bu bize bir sabitin önceden olup olmadigini bulmamiza yarar. Eger derleyiciye ait bir sabit kullanmaktan süpheleniyorsak bunu önceden bakip bulabiliriz. Misal SW_SHOWNORMAL mesaji önceden derleyicide bulunan bir sabittir.
Biz bunu #ifdef ile kontrol edebiliriz.

#ifdef SW_SHOWNORMAL
#define rob33n_SHOWNORMAL 1
#endif

#undef

#undef, #define ile sabitlenmis bir sabiti kaldirir. Misal

#ifdef SW_SHOWNORMAL
#undef SW_SHOWNORMAL
#define SW_SHOWNORMAL 2
#endif

Uyari: Bu kodu oldugu gibi derlemeyin sonra basiniz derde girmesin. Ben örnek olsun diye yazdim. Bunlari da gördügümüze göre makalemin sonuna geliyim. Fazla uzatip ne sizi sikayim ne kendimi yorayim

Not: c++’ta macroyu tanittiktan sonra yani #define TEMP cout<<endl qibi burda ; kullanmayin. Çünkü program derleme kisminda zaten oraya ;  koyar. gerek yok yani.. (derleme sirasinda oraya ;; koyar ve hata olusur)
macrolar sadece #define ile tanitilirlar ve fonksiyon gibi çalisan kod parçalaridir.