Merhaba izlek!
Suan öğrenilen bilgilerin harmanlanmasi ile olusturulmuş Böte öğrenci blogundasin.
Gitmek istedigin kategori icin yukaridaki yahut sagdaki paneli kullanabilirsin.

Hot Potatoes

Hot Potatoes  kolaylıkla klasik, çoktan seçmeli vb testler hazırlayabileceginiz ve web ortamında aktara bileceğiniz küçük bir programdır.

HP ile etkileşimli hazırlayabileceğiniz 6 modül vardır. Bunlar:

~ Boşluk Doldurma
~ Çoktan Seçmeli
~ Eşleştirme Alıştırması
~ Karışık Cümlelerden Anlamlı
~ Cümle Oluşturma
~ Bulmaca Hazırlama
~ Ünite Mantığı Oluşturma

Neden Hot Potatoes kullanmalıyız?

Programın kolay bir ara yüzü var hemde ücretsiz sürümleri mevcuttur. Hemde herhangi bir konuda etkileşimli alıştırmalar hazırlamalarını kolaylaştırarak bilgisayar destekli eğitime destek sağlamaktır. HP kullanarak kısa sürede beş değişik türde etkileşimli alıştırmalar hazırlayabilir. Hazırlanan etkileşimli alıştırmalar bir web sitesinde yayınlanarak öğrencilerin kullanımına sunulabilir.

Hot Potatoes Sunusu İçin Tıklayınız

Hot Potatoes 6 Kullanma Kılavuzu İçin Tıklayınız


DownLoad Hot Potatoes for Windows

DownLoad Hot Potatoes for Linux

Assure Modeli’ne Genel Bakış

08 Mart 2010 1 yorum

1. Giriş

ASSURE modeli, öğretmenlerin sınıflarında kullanmaları için değiştirilmiş bir

Öğretim Sistemi Tasarımı (ISD) sürecidir. Öğretim Sistemi Tasarımı, öğretmenlerin öğrencileri için en uygun öğrenme ortamlarını tasarlamada ve geliştirmede kullanabilecekleri bir işlemdir. Bu metodu ders planı oluşturmada ve öğretime öğrenmeyi geliştirmede kullanabilmektedir.


ASSURE, bir dersin geliştirilmesinde kullanılan adım-adım işlemler bütünüdür.

Bilindiği gibi İngilizce’ de ASSURE sözcüğü garanti etmek, temin etmek anlamına da gelmektedir. Bu sözcük aynı zamanda, modelin öngördüğü aşamaların İngilizce yazılışlarının baş harflerinden oluşturulmuş bir kısaltmadır.

ASSURE Modeli Aşamaları

Gagne’nin öğrenme koşulları; iyi tasarlanmış dersler öğrencilerin dikkatinin çekilmesi ile başlar ve sonra yeni materyal sunulur, öğrenciler uygulama yapar, öğrenmeleri ölçülür ve sıradaki aktivitelere geçilir. ASSURE Modeli, tüm bu şartları kapsamaktadır (Heinich, Molenda, Russel ve Smaldino ). Özet olarak; ASSURE Modeli bireysel olarak öğretmenin sınıfta öğretim teknolojileri kullanmasının planlanmasında ve bir saatlik ders sürecinin adım adım planlanmasında kullanılabilecek öğrenme-öğretme süreçlerinde meydana gelebilecek sorunları aşmada bir kılavuz niteliğindedir.

2. ASSURE Modelinin Aşamaları

2.1 Analyze Learners : Öğrencilerin Analizi

ASSURE modelinin ilk aşamasında; öğrenme üzerinde etkili olduğu genel kabul gören

ve öğretim teknolojileri planlamasında dikkate alınması gereken öğrenci özellikleri (genel karakteristikleri, giriş yeterlilikleri ve öğrenme stilleri) incelenmektedir.

2.1.1 Genel Karakteristikleri

Genel karakteristikler yaş, öğrenme düzeyi, meslek, kültürel ya da sosyo-ekonomik faktörler gibi tanımlayıcı hususları kapsar. Bu özelliklerin yüzeysel bir analizi bile öğretim yöntemi seçiminde oldukça yol göstericidir.

2.1.2 Giriş Yeterlilikleri

Öğrenciler öğretmenlerin anlatacaklarını zaten biliyor olabilir ya da öğrenciler, öğretmenin anlatacaklarını anlayabilmek için önkoşul niteliğindeki çok temel yeterliliklere bile sahip olmayabilir. Hedef kitlenin halihazırda ne biliyor olduğunu ölçerek uygun ortam ve materyaller seçilebilir.

2.1.3. Öğrenme Stilleri

Öğrenme stili, bir bireyin nasıl algıladığını, öğrenme ortamları ile nasıl etkileşim içine girdiğini ve bu ortama duygusal olarak nasıl tepkide bulunduğunu tanımlayan psikolojik özellikler grubu anlamına gelmektedir .Literatürde tartışılan öğrenme biçimi değişkenleri şu kategorilere ayrılabilir: Algısaltercihler ve güçlülükler, bilgi işleme alışkanlıkları, motivasyonel faktörler vepsikolojik faktörler.


ASSURE modelinin uygulanacağı grubun öğrenme stillerin öğrenilmesi amacıyla Gregorc’un zeka biçimleri modeli için bir ölçek bulunamadığından Kolb’un öğenmestilleri envanteri kullanılmıştır.

2.1.3.1. Algısal Tercihler ve Güçlükler

Temel algısal tercihler; işitsel, görsel, dokunsal, adalesel duyulardır. Öğrencilerin farklı yönde algısal tercihleri ve güçlükleri dikkate alınarak materyaller seçilmelidir.

2.1.3.2. Bilgi İşleme Alışkanlıklar

Bu kategori de bireylerin bilginin bilişsel işlemesine yönelmeye nasıl meylettikleri ile ilgili birçok değişkeni kapsamaktadır.

2.1.3.3. Motivasyonel Faktörler

Endişe, kontrol odağı, yapı seviyesi, başarı motivasyonu, sosyal motivasyon, dikkatlilik ve idealistlik, çoğu kez öğrenme sürecinde kritik faktörler olarak görülmüştür.

2.1.3.4. Psikolojik Faktörler

Cinsiyet farklılıkları, sağlık ve çevresel koşullar öğrenmenin etkililiği üzerinde en etkili faktörler arasındadır. Sıcaklık, gürültü, ışık ve günün zamanı, konsantrasyon ve dikkati sürdürmeyi etkilediği bilinen unsurlardır.

2.2. State Objectives : Hedeflerinin Belirlenmesi

ASSURE Modelinde öğretim ortamlarını kullanmada ikinci aşama öğretimhedeflerinin belirlenmesidir. Her bir öğrencinin hangi öğrenme hedefine ulaşması beklenmektedir? Daha doğru bir ifade ile eğitim sonunda öğrenci hangi yeni kabiliyete sahip olacaktır. Bir hedef, öğreticinin derse ne koymayı planladığı değil, öğrencinin dersten ne alması gerektiğidir.

2.2.1. İyi belirlenmiş Hedeflerin ABCD’si

Amaçların yazımında ABCD yaklaşımı kullanılabilir:

􀂙 Audince (Topluluk) : Öğrencileriniz kimler?

􀂙 Behavior (Davranış): Öğretim sonucu kazanılacak ve gösterilecek davranışlar

veya performanslar nelerdir?

􀂙 Conditions (Şartlar) : Davranışın gerçekleşeceği ortamın şartları nelerdir?

􀂙 Degree (Derece/Seviye): Gösterilecek öğrenme yetenekleri seviyesi nedir?

2.2.2. Hedeflerin Sınıflandırılması

Bir hedef sonuçta ulaşılması amaçlanan birincil öğrenme tipine göre sınıflandırılır: Bilişsel, duyuşsal, psiko-motor ve bireylerarası (interpersonal) hedefler.

􀂙 Bilişsel öğrenme kategorisi; sözel/görsel bilgi ya da entelektüel kabiliyetler olarak sınıflandırılabilecek zihinsel kabiliyetleri kapsar.

􀂙 Duyuşsal kategorideki kabiliyetler duygu ve değerleri içine alır.

􀂙 Psiko-motor kabiliyetlerde ise atletik kabiliyetler, elle yapılan kabiliyetler ve bunlar gibi fiziksel kabiliyetler söz konusudur

􀂙 Bireylerarası (Interpersonal) kabiliyetler başkaları ile etkin ilişkiler kurma yetisi gerektiren insan merkezli kabiliyetlerdir..

2.2.3. Hedefler ve Bireysel Farklılıklar

Hedefler, öğrencinin ne öğreneceğini sınırlamak için değil minimum başarı seviyesini ortaya koymak içindir. Doğal öğrenmeyi desteklemek ve bireysel farklılıklara zemin hazırlamak için, öğrencilere kendi hedeflerinin bir kısmını belirlemekte yarar vardır.

2.3. Select Methods, Media and Materials : Yöntem, Ortam ve Materyallerin Seçimi

2.3.1.Yöntemin Seçilmesi

Ortam kullanımına yönelik sistemli bir planda ilk olarak, yöntem, ortam ve materyallerin sistematik şekilde seçilmesi gerekir. Seçim sürecinin üç aşaması vardır:

􀂙 Hedeflenen öğrenme görevleri için uygun yöntemlerin belirlenmesi.

􀂙 Yöntemi gerçekleştirmeye uygun ortam formatının seçilmesi.

􀂙 Bu ortam için spesifik materyallerin seçilmesini, gerekli değişikliklerin ya da

tasarımın yapılması.

2.3.2. Ortam Formatının Seçilmesi

ASSURE modeli uygulaması için seçilen ortamın özellikleri aşağıda belirtilmektedir.

2.3.3. Materyallerin Seçimi

Materyal seçerken faklı teknikler vardır. Levy ve Dickie tarafından kullanılacak

medya tabanlı materyaller için yedi özellik belirlenmiştir:

1. Resimli gösterimlerin özellikleri: Resimlere ihtiyacınız var mı? İçeriğin sadece metin ile anlatılması yeterli mi?

2. Boyutun özellikleri: Anlam belirsizliği söz konusu olduğunda resimli gösterimlerdaha kolay görmeye ve anlamaya yardımcı olur. Boyut hem mutlak hem de orantılıdır. Mutlak boyut resmin projeksiyon ekranından veya kitapta görünmesidir.

Resim belirli ve ölçülebilir yükseklik ve genişliğe sahiptir. Resmin belirli parçaları veya elemanları resme veya belirli parçalarına göre daha geniş veya küçükse o zaman bu parçaların boyutuna orantı denir. Orantılı boyutta izleyiciye daha yakın olan kısımlar daha büyük diğerleri daha küçük olarak algılanır.

3. Renklerin özellikleri: Renkler anlamı daha açık hale getirmek için gereklimidir? Renkleri sunuda birlik ve süreklilik duygusunu sağlamak için mi kullanıyorsunuz?

4. Hareketlerin özellikleri: Öğrenme süreçleri ve motor beceriler hareket özelliklerine gereksinim duyar. Bitkilerin damarlarındaki faaliyetler veya farklı yoğunluklarda ışık dalgalarının hareketleri gibi öğrenme süreçleri hareketin kullanılmasını gerektirir.

5. Dilin özellikleri: Yeni materyalin öğrenilmesi için gerekli olan temel kelimeler nelerdir? İçerik dil hakkında yeterli kavramaya sahip biri tarafından öğrenilebilecek düzeyde mi?

6. Ses/resim ilişkisinin özellikleri: Resim yapıyı gösterir. Ses ise resmin nasıl çalıştığını gösterir, belirli terimleri açıklar.

7. Düzenlemenin özellikleri: Herhangi bir türdeki bilginin düzenlenmesi öğrenimi ne kadar etkilemektedir? Genellikle, kompleks materyaller daha kolay olanların arkasından gelmektedir. Bu ardışık düzendir. Fakat bilgi random olarak yapılandırılabilir mi? Öğrenci materyaldeki bilgiler arasında ilişki kurabilecek midir?

Bu özellikler sadece bir teknoloji kullanılarak ulaşılamaz, farklı teknolojilerin birleşimi olmalıdır. Materyallerin tasarım özellikleri ve karakteristiklerinin anlaşılması hangisinin öğrenmeyi çoğaltacağına karar verilmesinde önemlidir.

􀂙 Mevcut materyallerin seçimi: Halihazırda bulunan materyallerden uygun olanının seçilmesidir.

􀂙 Mevcut materyallerin revizyonu: Halihazırda bulunan materyallerde yapılan değişiklikler ile yeni bir materyal elde edilmesi sürecidir.

􀂙 Yeni materyal tasarımı: Öğretim hedeflerine ulaşmada kullanılabilecek yeni bir materyal tasarımı hedefler, zaman, uzmanlık gibi konular dikkate alınmalıdır.

2.4. Utilize Media and Materials : Ortam ve Materyallerden Yararlanma

2.4.1. Materyali ve ortamı gözden geçirme

Materyalin kullanılmada önce gözden geçirilerek olası sorunların önüne geçilebilir. Öğrenme ortamı hazırlanarak ders öncesi son kontroller yapılır.

2.4.2. Materyalleri hazırlama

Eğitimcinin ve öğrencilerini ihtiyaç duyduğu materyallerin toplanıp, ortam ve materyallerin hangi sıra içinde kullanılacağının belirlenmesidir.

2.4.3. Ortamı hazırlama

Öğretim açısından uygun bir hazırlama aşağıdaki gibi olabilir:

􀂙 Dersin içeriğini kapsamlı bir şekilde veren bir sunum

􀂙 Çalışılan konu ile ilgisinin mantıksal izahı

􀂙 Öğrencinin dikkat etmekle ne fayda sağlayacağını dile getiren motive edici açıklama

􀂙 Dikkati dersin spesifik yönlerine çeken ipuçları

2.4.4. Öğrencileri hazırlama

1. Konu ile gerçek hayatta uygulamakta oldukları arasındaki ilişkinin soru cevap yöntemi ile incelenmesi.

2.5. Require Learner Participation: Öğrenci Katılımını Sağlama

Öğrencilere geri bildirim ve öğrenme ortamına katılarak uygulama yapma olanağının sağlanmasıdır.

2.6. Evaluate and Revise : Değerlendirme ve Revizyon

Ders tasarım sürecinin en çok hatalı kullanılan unsuru olan değerlendirme ve gözden geçirme, kaliteli öğretime ulaşmada vazgeçilmez bir bileşendir. Değerlendirme sürekli bir işlemdir. Değerlendirmeler öğretim öncesinde, sırasında ve sonrasında yapılır. Örneğin öğretimden önce, öğrenci kabiliyetleri ile kullanmayı düşündüğünüz metotmateryaller arasında uygunluk olduğundan emin olmak için öğrenci karakteristikleri ölçülür. Ayrıca kullanmadan önce materyaller değerlendirilmelidir. Öğretim esnasında değerlendirme, arzulanan bir kabiliyetin öğrenci tarafından pratiğinin yapılması şeklinde olabileceği gibi, kısa bir quiz veya kendini değerlendirme şeklinde de olabilir. Öğretim esnasında değerlendirmenin genel, tespite yönelik bir amacı vardır. Yani öğretim sürecindeki hedeflere ulaşmayı engelleyebilecek öğrenme /öğretme problemlerini ve zorluklarını belirleyip düzeltmeye yöneliktir.

İşlemci

İşlemci (CPU) Nedir? Bölümleri ve Çalışma Mantığı

İşlemci: İşlemci kısaca takılı bulunduğu sistemde (bilgisayar, playerlar, oyun konsolları vs..) tüm işlemleri denetleme ve sistemin çalışması için gerekli olan adımları uygulama görevine sahiptir. Yani örnek verecek olursak en basit anlamda bir hesap makinasında 4+4 işlemini yaptığımız zaman sonucu görebilmemiz için gerekli işlemlerin yapıldığı birime diyebiliriz. Veya bilgisayarda bir klasöre tıkladığımız zaman içindeki bilgileri ekrana getiren veya bir programı kurarken dosyaların gerekli şekilde bilgisayara yüklenmesini sağlayan aygıtlara diyebiliriz.

İşlemci Nedir?

CPU ingilizce olarak Central Processing Unit veya Merkezi İşlem Birimi olarak adlandırılına ve kısaca yukarıda bahsettiğimiz ve daha birçok işlemi yapan ve sistemlerin çalışmasını sağlayan bir ünite olarak adlandırılabilir. Saniyede yaptığı işlem sayısında göre bir hız birimi atanarak işlemcilerin kapasiteleri ve çalışma hızları belirlenmektedir. İşlemcinin çalışma hızları tamamen tasarım ve üretim teknolojisine bağlı olarak değişmekle birlikte yeni nesil işlemcilerde dışarıdan yapılan müdahalelerle (overclock) hız arttırımları söz konusu olmaktadır. İşlemcilerde hız birimi HZ, MHZ ve GHZ olarak adlandırılan birimle ifade edilmektedir. Bazı özel işlemcilerde ise bu birimin yerini Flop adı verilen bir birim almaktadır.

İşlemci Nasıl Çalışır?

İşlemci kendi içinde bir mimariye sahip olup işlemlerin yapılabilmesi için birçok ünitesi bulunmaktadır. İşlemler yapılırken Logic (mantıksal 1 veya 0) mantığı ile yapılmaktadır. Yani iki sayıyı toplamak için ilk olarak sayıların ikilik değerleri (1001010 şeklinde) ele alınır ve bunun üzerine işlemler yapılarak sonuç elde edilir. Veya bir film izlerken ekrandaki görüntünün oluşması için hafızada bulunana ikilik değerler birleştirilerek görüntüler oluşur. İşlemciler hafızalarında bulunana komutlarla dışarıdan gelen uyarılar eşliğinde işlemleri yapmaktadırlar. İşlemcini hafızasında bulunan komutlara o işlemcinin komut seti denilebilir.

Normalde bilgisayarımızda veya başka kompleks ürünlerde sadece bir tane işlemcinin olduğunu düşünürüz oysaki detaylıca inceleyecek olursak
Bilgisayarımızda;

– Ekran Kartı: İkilik sistemdeki verileri görüntüye dönüştürmek ve görüntüledeki bozukluklar ile yuvarlamalar, gölgelendirmelere, hareketlendirmeler ve diğer bütün efektlerin gerçekleştirilmesi için bir işlemci bulunmaktadır.

– Ses Kartı: Sistemdeki verileri ikilik sistemden alarak özel bir işleme sayesinden duyabileceğimiz şekle getiren, dolby, stereo, çok kanallı gibi özel ifadelerle belirtilen efektlerin oluşması için merkezi bir işlem ünitesine sahiptir.

– Tv Kartı: Yine yayından aldığı verileri ikilik sisteme dönüştürerek işlemci üstünden ekran kartına aktarılmasını sağlayan merkezi bir işlem birimine sahiptir.

Bu örneklerin sayısı sürekli arttırılabilir yani anlıacağımız yapılan her şey için bir işlemci biriminin gerekli olduğudur. Ve işlemcilerin ne işe yaradığı yukarıdaki örneklerdede daha iyi oalrak anlaşılmıştır.
İşlemci Üniteleri Nelerdir?

İşlemcinin iç yapısına biraz bakacak olursak çeşitli ünitelerden teşkil edildiği gözükmektedir. Öncelikle kendi içinde bir belleğe sahiptir bu bellekte hafızasında bulunan komutlar (komut seti) ve işlem sırasında geçici bilgilerin saklanması için boş hafıza kısımları bulunmaktadır. Üniteleri biraz daha geniş açacak olursak.

– Data Yolları: İşlemcinin içindeki bölümleri birbirine bağlayan ve bilgi akışının olduğu kısımlar olarak nitelendirebiliriz. Yeni nesil işlemcilerde data yolları çok daha büyük yapılarak (32 Bit, 64 Bit, 128 Bit) büyük verileri daha kısa sürede işlemeye olanak sağlamaktadırlar. Örnek olarak 64 bitlik veri yoluna sahip bir işlemcide tek döngüde 64 bit uzunluktaki bir veri bir yerden bir yere aktarılabilir.

– Cache (Ön Bellekler): Normal olarak işlemci işlemleri gerçekleştirirken bir yerdeki bilgiyi alıp bir kısmını işeldikten sonra bilgilerin o anda tutulacağı ram adını verdiğmiz yerlere gönderir fakat işlemlerdevam ederken önceden ram e atmış olduğu bilgilerden bazılarına gereksinim duyabilir. Fakat işlemci ile ram arasındaki veri transferi işlemcinin kendi içindeki ram bölümündeki beri transferinden çok daha uzundur. Bu nedenle bu tarz gereksinimleri karşılamak için işlemciler dahili bir ram bellek ile (cache – ön bellek) üretilmektedirler. Öneli bilgiler ram bölümüne gönderilirken cache kısmındada saklanmaktadır ve bir işlem sırasında gereksinim duyulduğunda bu kısımda bilgiler alınmakta veya bu kısma aktarılmaktadır.

– ALU: (Aritmetic Logic Unit – Matematiksel Mantık Birimi) olarak ta adlandırılabile bu bölüm ise işlemci içindeki işlemci oalrak nitelendirilebilir. İşlemci içinde 2 lik sistemde işlemlerin yapıldığı bölümdür ve tüm işlemler aslında toplama, çıkarma, çarpma, bölme gibi işlemlerin türevi olduğundan komut setleri ile gelen işlemler burdan gerekli şekilde işlenerek çıkartlılmaktadır.
İşlemcinin İç Yapısı Nasıldır ve Nasıl Tasarlanır?

İşlemciler aslında transistör adını veridiğimiz yarı iletken elemanların birleştirilmesi ile oluşmaktadır. Başlarda 100 -200 transistör birleştirilerek yapılan işlemciler, teknolojinin gelişmesi ise 1 Milyar ve daha fazla transistör birleştirilerek yapılabilir hale geldi. Aşağıdaki resimde yüzlerce milyon transistöre sahip bir işlemcinin yapısını görmektesiniz.

İşlemciler transistör

Yukarıdaki resimde aslında yüzmilyonlarca transistör bulunmatadır. Bunlar küçültülerek monte edildikleri için çok fazla sayıda transistör silicon wafer (silikon yüzey) adını verdiğimiz bu küçük yüzey üzerine sığdırılabilmektedirler. İşlemciler tasarlanırken birçok aşamadan geçmektedirler. Tasarım fabrikalarında 200 e yakın ayrı band dan geçerek üretimleri sonlanmaktadır. Öncelikle transistörlerin monte edilecekler pürüzsüz silikon yüzeyler oluşturulmakta ve elektronik departmanlarda hazırlanan transistör yerleşim planı ve bağlantı şekiller birçok aşamadan geçerek son halini almaktadır. Transistörlerin bulunduğu alanlar mor ötesi (ultraviyole) ışıklarla aşındırılarak negatif ve pozitif malzemeler eklenerek doldurulmakta ve transistörler oluşturulmaktadır.

Transistörler arasındaki bağlantılar ise yine aşındırma yönteminden sonra aliminyum zerrecikler yardımıyla birleştirilmektedir. Fakat günümüz teknolojisinde artık bu şekilde birleştirilmelerin yapılamıyacağı küçüklüklere inildiği için yakın gelecekte karbon bağlantı yöntemi kullanılacaktır. Bu yöntemle enerjinin taşınmasını sağlayan elektronilar karbon yolalr üzerinden akacaktır. bunun haricinde silikon yüzey üzerindeki bağlantıları dışarı ile bağlamak için bir ara yol bölümüm birde iç yapıyı dış etkenlerden koruma için kılıf montajı yapılmaktadır. Silikon yüzeydeki bağlantıları, dışarı taşıyan bağlantılara bağlamak için altın kaynak teknolojisi kullanılmaktadır.

Günümüzde belli başlı işlemci üreticileri bulunmaktadır. Bunların en başında glenler Intel, AMD, Via, Nvidia, Ati, IBM ve daha saymadığımız birçok firma gelmektedir. Bu şifrekteler sürekli olarak ürünlerini güçlendirerek piyasa sunmaktadırlar. Yeni nesil işlemcilerde sıkcalıkta çok önemli bir faktördür, işlemci sıcaklıkları ile ilgili problemlerin artmasından dolayı firmalara bununla ilgili oalrak yapısal mimari değişim çalışmalarına gitmişlerdir. İşlemcilerin tarihi gelişimi ve performans bilgileri ile ilgili makaleler bu bölüm altında sürekli olarak yayınlanacaktır.

Anakart

Bilgisayarın en temel donanımlarından biri olan anakart (motherboard) hakkında bilinmesi gerekenler, çalışma mantığı, üzerinde bulunan temel parçalar ve görevleri hakkında detaylı bilgiler ve açıklamalar aşağıda bulunmaktadır.

Anakart Nedir?

Bilgisayar donanımlarını birbirlerine bağlamak ve koordineli halde çalışmalarını sağlamak için kullanılan bir donanımdır. Parçaların aralarında iletişim kurmasını ve gerekli işlemlerin gerçekleşmesini sağlamak için anakartlar üzerinde harici işlemci yanında kart işlemcileri de bulunmaktadır. Chipset olarak ta adlandırılan bu işlemcilerin bilgisayar performansı üzerinde çok etkili oldukları bilinmektedir. Dahili parçaları birbirine bağlamanın yanında bilgisayarı dış çevre ile iletişimini (ses, görüntü, veri) sağlamak içinde üzerinde portlar bulunmaktadır. Kısaca bilgisayarların olmazsa olmaz parçasıdır. Günümüzde birçok anakart üreticisi firma (intel, asus, gigabyte, msi, dfi vs..) genellikle birkaç chipset üreticisinin işlemcilerini kullansalar bile kartlar üzerindeki diğer donanım ve araçlar ile birbirlerine karşı üstünlük sağlamaya çalışmaktadırlar.

Anakartların Temel Parçaları ve Görevleri

Diğer bilgisayar donanımlarını ve dış dünya ile iletişimi sağlamak için anakart üzerinde çeşitli portlar ve entegreler (işlemci ve diğer) bulunmaktadır. Aşağıdaki resimde örnek bir anakart devresinin üstten görüntüsü bulunmaktadır.

Anakart Genel Görünüm

Yukarıdaki resimde gözüken anakart ile diğer anakartlar arasında mantık ve çalışma prensibi olarak çok fazla fark yoktur. Devre üstünde bulunan parçalardan diğer anakartlarda’da bulunan anakartların ortak parçaları olan adlandırılan çalışma birimlerini inceleyecek olursak;

Anakart İşlemcisi – Dahili İşlemci (Chipset): Yukarıda da kısaca bahsettiğimiz gibi, averi ekrankartı üzerinden görüntüye dönüştürülürken bu entegreler üzerinden transfer yapılmaktadır. Bilgisayara takılı olan parçalar genellikle farklı hızda ve türde iletişim birimlerine sahipleridir. Birbirleriyle direk olarak haberleşemezler işte burda da yine chipset’ler devreye girmektedir. Aradaki bu farklılıkları ortak bir merkezde toplayarak parçaların uyum içinde haberleşmelerini sağlamaktadır. Aşağıdaki resimde yukarıdaki anakartın Kuzey Köprüsü işlemcisi yani kart üzerindeki iki dahili genel işlemciden biri gözükmektedir.nakartlarda parçalar arasındaki veri transferlerini ve anakartı dışarı ile çeşitli bağlantılarını sağlamak için anakart işlemcisi olarak ta adlandırılan chipset işlemcileri bulunmaktadır. Örnek olarak harddisk üzerindeki bir veri işlemci ile işlenirken veya işlemcideki bir

Anakart Chipset Görünümü

Dahili işlemci (chipset) hızları çok yüksek olduğu için ve mimarileriyle de ilgili olarak ısınmalar gözükmektedir. Bu nedenle parçalar için soğutucu modüller kullanılmaktadır. Birçok aletin aynı zamanda haberleşmesini ve birbirlerine veri transferi yapmasını sağlayan bu entegreler anakartların en temel parçalarındandır. Şu anda birkaç büyük firma (intel, nvidia, via ..) bu chipsetlerin üretimini üstlenmiştir. Anakart üreticilerinin bir çoğru bu firmaları özellikle intel ve nvidianın chipsetlerini kullanmaktadır.

Dahili Parça Portları

Bu portlar bilgisayar kasası içinde bulunan ve genellikle sadece dış bağlantılarını gördüğümüz kartların ve parçaların bağlandığı portlardır. Aşağıdaki anakart resminde numaralandırdığımız portlar ve görevleri aşağıda verilmiştir.

Anakart Parçaları

1.) PCI Portları: Bu portlar bilgisayara satın aldığımız, ekran kartı dışındaki kartları bağlamak için kullandığımız portlardır. Örnek olarak ses kartı, televizyon – tv kartı, ethernet kartı, güvenlik kartı gibi kartlar bu portlara bağlanmaktadır. PCI portunun veri hızı 33 MHz veya 66 MHZ düzeyindedir. 124 pi ile tek seferde 32 bitlik bir veri transferi sağlamaktadır. 3.3v veya 5v düzeyinde çalışma gerilimine sahip olup 32bit adresleme yapabilmektedir (4GB). Son olarak ta saniyede 133MB veri transferi yapabilmektedir.

2.) PCI Express Portları: Bu portlar PCI slotunun yerini almak için tasarlanmıştır ve çok yakın zamanda artık kartlarda sadece bu portlar kullanılacaktır. Veri transfer hızları ve ergonomisi sebebiyle PCI ile kıyaslanmaz derece güçlüdür. PCI Express 1.1 ve PCI Express 2.0 versiyonları mevcuttur. PCI Express 1.1 de 2.5GB/Saniye veri transfer hızı PCI Express 2.0 da ise bunun iki katı yani 5GB/saniye veri transfer hızları yapılabilmektedir. Yeni üretilen dahili kartlar (ses, tv, mpeg decoder vs…) artık bu teknolojiye uygun olarak üretimlerini arttırmaktadırlar.

3.) PCI EXPRESS X16 Portu: Bu slot ise AGP ye alternatif olarak geliştirilmiştir. Temelde PCI EXPRESS mantığını kullanmaktadır fakat katman sayısı çok fazla olduğu için veri transfer hızları inanılmaz boyutlara ulaşmıştır. Bazı anakrtlarda iki adet bu slottan bulunmaktadır. Temel mantık iki ekran kartını aynı anakarta bağlayarak görüntü işleme kalitesini dahada yükseltmektir. Ekran kartları için tasarlanan PCI EXPRESS X16 slotu saniyede 4GB veri transferi sağlamaktadır. 16 hat kullanmakta ve her hat saniyede 250MB veri transferi sağlayabilmektedir. Yeni nesi ekran kartlarının tamamı bu slot yapısına uygun olarak üretilmektedir.

4.) IDE – ATA Portu: Bu port ise bilgisayarımıza CDRom, CRrewriter, DVDRom, IDE Destekli Harddiskleri bağlamak için kullanılmaktadır. Integrated Drive Elektronics – Dahili Sürücü Elektroniği terimlerinin kısaltması ile elde edilmiş olan bu arabirimin üst versiyonları 100MHZ hıza ve 48 bit ile 144PB depolama kapasitesine sahiptir. Paralel ATA olarak adlandırılan bu arabirimde veriler 40 gözlü kablolar ile iletilmekte ve aynı kablo üstüne birden fazla IDE destekli parça takılabilmektedir.

5.) Sata ve Sata 2 Portları: Bu portlar ise ATA arabiriminin paralel moddan seri moda ve bazı geliştirilmeler yapılmasıyla elde edilmiştir. Veri transfer hızları çok büyük ölçüde artmakla birlikte yeni sürümde sata 2.0 ile 3.0Gb/saniye veya 300MB/saniye veri transferi sağlayabilmektedir. Kullanılan kablo teknolojisi ile kasa içinde daha ergonomik bir kullanım sağlanmaktadır. 4 Pin ile harddisk anakart arasında veri iletişimi sağlanmaktadır. Yakın zamanda sata 3.0 ın çıkması ile birlikte veri transfer hızı 6.0Gb/Saniye düzeyine çıkacaktır. Bu portlar anakart işlemcilerine direk bağlantılı değildir. Kablolardan gelen veriler öncelikle bu iletişim protokolü için özel olarak üretilen sata kontrolcü entegreleri tarafından işlenip chipsete aktarılmaktadır.

6.) Distek Sürücü Bağlantı Portu: Bu porta ise disket sürücüler bağlanmaktadır. Son derece sınırlı bir transfer hızına sahiptir ve ergonomik olarak kullanışlı değildir. Yeni nesil pclerde artık bu slot kullanılmamaya başlanmıştır.

7.) Güç Bağlantı Portu: Kasada bulunan güç kaynağından (power supply) anakarta gerekli olan gücü sağlamak için yapılacak bağlantıda kullanılacak olan porttur. Sağlam bir şekilde karta monteli olup kart için gerekli olan +5v -5v +12v güçleri buradan sağlanmaktadır.

Dahili parçalar için kullanılan portları ve çalışma şekillerini yukarıda anlattık. Diğer sabit parçalar ve bağlantı portları ile ilgili bilgiler aşağıda bulunmaktadır.

Dahili Parça Portları – İşlemci ve Ram

Bu soketlerin diğer bağlantılardan farkı, anakart üzerinde takılı kalmaları ve bilgisayarın en önemli parçalarından ikisi olmalarıdır. Bilgisayar üzerinde yürütülen ana işlemleri hepsi bu iki parça üzerinde yapılmaktadır.

İşlemci – CPU Portu: İşlemci kendisine gelen komut ve bilgileri uygun şekilde işleyerek çıktıları ram ve diğer gereken parçalara aktarmaktadır. Bilgilerin büyük kısmı ram üzerinde toplanacağı için bu iki parça arasında çok fazla sayıda bağlantı vardır ve genellikle birbirine yakın pozisyonda tasarlanırlar. Aşağıdaki resimde örnek bir işlemci slotu gözükmektedir.

Anakart İşlemci Slotu

Bu slotlar genellikle değişik standartlarda üretilirler. Günümüzdeki en önemli iki işlemci üretici firmanın ürettiği ve kullandığı genel standartlar;
Intel İşlemcileri için: Soket 370, 423, 478, 479, 486, 495, 603, 604, 611, LGA 775
AMD İşlemcileri İçin: 563, 754, 939, 940, AM2, AM2+, AM3, 1207 gibi soketler kullanılmaktadır. Bizim resmimizde bulunana soket LGA 775 soketidir. Bu soket türlerinde erkek bacaklar anakart üzerinde bulunmaktadır.

İşlemciler çalışırken ısı seviyeleri yükseldiği için soğutulmaya kesinlikle ihtiyaçları vardır. Hatta pasif değil fan montajı ile aktif olarak soğutulmaları gerekmektedir. Soğutucu bağlanabilmesi içinde yuva çevresinde belirli bir boşluk bulunmaktadır. Ayrıca yuvanın çevresinde bulunan parçalar genellikle güç mosfetleri ve regulatör devreleridir. İşlemcilerde voltaj dalgalanmasının çok ufak değerlerde olması yada hiç olmaması tercih edilmektedir. Bu nedenle güç kaynağı regulasyonu yanında anakart üreticileri işlemci için kendi özel geliştirdikleri regulatör devrelerinde kullanmaktadırlar.

Ram Portu – DIMM Port: Yukarıdada kısaca açıkladığımız gibi işlemci ve ram slotları birbirine genellikle yakın üretilirler çünkü aralarında çok fazla kablo bağlantısı vardır ve bilgisayar hızını en çok etkileyen elemanlardır. Ram parçasına kısaca değinecek olursak, normalde bilgileri harddisk üzerinden okuyup işlemek ne kadar hızlı olursa olsun ekranda takılmalar ile karşılaşırız çünkü bir sayfadan diğerine geçerken harddisk üzerindeki verinin alınıp işlenmesi, harddsikin erişim süresinden dolayı gecikir. Fakat ram’lar, üzerindeki bilgileri anında ekrana ve gerekli birimlere aktarma yeteneklerine sahiplerdir. Dolayısıyla gerekli bilgiler işlemci tarafından işlenip ram’e aktarılır ve oradan da gerektiği zaman kullanılırlar. Örnek verecek olursak bilgisayarımızda bir program çalıştırdığımız zaman bu program harddsik züerinden uygun şekilde işlenerek ram bellek üzerine aktarılmaktadır. Program üzerinde herhangi bir işlem yaparken aslında program ram üzerinden çalışmaktadır. Aksi taktirde herhangi bir işlemde veya sayfa değişiminde her defasında harddsik kullanılıyor olsaydı çok fazla zaman kaybımız olurdu.

Anakart Ram DIMM Slotu

Yukarıda resimde örnek bir 240 Pin DIMM Ram slotu – DDR2 gözükmektedir. Soket yapılarına gelecek olursak. Ram soket yapı standartları aşağıdaki gibidir;
SDRAM Standartları: 72 pin SO-DIMM, 100 pin DIMM, 144 pin SO-DIMM, 168 pin DIMM
DDR SDRAM Standartları: 200 pin SO-DIMM, 240 pin DIMM bu standartlar DDR2 ve DDR3 içinde kullanılmaktadır.
Boyut olarak 256MB, 512MB, 1GB, 2GB, 4GB gibi standartlar vardır. Anakartların adresleme yeteneklerine bağlı olarak 16GB veri büyüklüğünde ram takılabilecek 4 slot bulunabilir. Ramler üzerindeki bellek entegreleri sayesinde çok büyük verileri kaydedebilirler ve sadece elektrik varken veriler üzerinde durur. Herhangi bir elektrik kesintisinde üstündeki veriler sıfırlanır. Yeni anakartlarda genellikle 4 tane DIMM slotu bulunmaktadır. Dimm slotları kullanılırken eğer elimizde iki tane ram varsa aynı bölgedeki iki slota takılmazlar. 1 tanesi sarıya takılır diğerdie ikinci sarıya takılır. 3 ram varsa işlemciye yakın olan ilk kırmızıya takılır. Ram takma işlemlerini yaparken gerekli belgeleri okumanızı tavsiye ederiz.

Harici Parça Portları

Bu portlar ise bilgisayarımızın içindeki verileri ve bilgilerin dış dünya ile haberleştirilmesini sağlar. Örnek; ses, internet, mouse, klavye gibi parçalar bu slotlara bağlanarak çalışmaktadır. Aşağıdaki resimde bulunan bağlantı portları ve görevlerini inceleyecek olursak.

Anakart Dış Bağlantı Portları

1.) Klavye ve Mouse Portu: Bu portlar ile klavye ve mouse gibi aygıtlarımızı pc’ye bağlarız. Dışarıdan gireceğimiz bilgiler ve yapmak istediğimiz herşeyi kontrol eden bu iki aleti anakarta bağlayan yuva burasıdır. Bu aygıtlar ayrıca USB portu üzerinden de bağlanabilmektedir.

2.) Paralel Port: Eski bir iletişim birimidir ve yeni nesil bilgisayar anakartlarında kullanılmamaya başlanmaktadır. Çok küçük veri transfer hızlarıyla (Baud rate) çalışmaktadırlar.

3.) Seri Port: RS232 olarak ta adlandırılabile bu port’ta eski bir bağlantı arabirimidir ve yine paralele port gibi yeni nesil kartlarda kullanılmamaya başlanmaktadır. Seri protta veri transferi RX ve TX olarak adlandırılan iki bacak vasıtasıyla iletilmektedir.

4.) USB Portu: Yeni nesil iletişim teknolojisi olarak kullanılan USB 480Mbit/Saniye veri transfer hızına ulaşmaktadır. Bağlantı kablo sayısının az olması ve ergonomik bir bağlantı yapısıyla hemen hemen tüm al

C Programlama Dersi – VIII

Bu yazıda öğrenecekleriniz:
– Kısa Devre Değerlendirme
– Önişlemci Komutları
– #define Önişlemci Komutu
– #undef Önişlemci Komutu
– #ifdef ve #ifndef Önişlemci Komutları
– #if, #else, #endif, #elif Önişlemci Komutları
– #include Önişlemci Komutu

Kısa Devre Değerlendirme


Kısa devre değerlendirme, ne yazık ki pek iyi bir çeviri olmadı ve bu yüzden hiçbir anlam ifade etmeyebilir. İngilizce’de, Short Circuit Evaluation olarak geçen bu konu, mantıksal ifadelerle ilgilidir.

Hatırlarsanız, daha önce ki derslerimizde iki farklı AND ve OR operatörü görmüştük. Bu yapılardan biri AND için && işaretini kullanıyorken, diğeri sadece tek & simgesini kullanıyordu. Keza, OR ifadesi bir yerde, || şeklinde gösteriliyorken, diğer yerde, tek bir | simgesiyle ifade edilmekteydi. Bu işaretler, aynı sonucu üretiyor gibi görünseler de, farklı şekilde çalışırlar.

Çift şekilde yazılan operatörler, ( yani && ve || ) kısa devre operatörleridir. İngilizce, Short Circuit Operator olarak isimlendirilirler. Tek sembolle yazılan operatörlerden farkı, işlemleri kısaltmalarıdır.

Bir koşul içersinde AND ( && ) operatörü kullandığınızda, koşulun sol tarafı yanlışsa, sağ tarafı kontrol edilmez. Çünkü artık sağ tarafın doğru veya yanlış olmasının önemi yoktur; sonuç her şekilde yanlış olacaktır.

Benzer bir mantık OR ( || ) operatörü içinde geçerlidir. Eğer sol taraf doğruysa, sağ tarafın kontrol edilmesine gerek yoktur. Çünkü OR operatöründe taraflardan birinin doğru olması durumunda, diğerinin önemi kalmaz ve sonuç doğru döner.

Aşağıdaki örnekleri inceleyelim:


&& Operatörü

 
#include<stdio.h>
int main( void )
{
	int i, j;
	i = 0;
	j = 5;
	if( i == 1 && j++ ) {
		printf( "if içersine girdi\n" );
	}
	else {
		printf( "if içersine girmedi\n" );
		printf( "i: %d, j: %d\n", i, j );
	}
	return 0;
}
 
if içersine girmedi
i: 0, j: 5




& Operatörü

 
#include<stdio.h>
int main( void )
{
	int i, j;
	i = 0;
	j = 5;
	if( i == 1 & j++ ) {
		printf( "if içersine girdi\n" );
	}
	else {
		printf( "if içersine girmedi\n" );
		printf( "i: %d, j: %d\n", i, j );
	}
	return 0;
}
 
if içersine girmedi
i: 0, j: 6

Gördüğünüz gibi, program çıktıları birbirinden farklıdır. Bunun sebebi, ilk örnekte, i == 1 koşulu yanlış olduğu için, && operatörünün ifadenin sağ tarafına bakmamasıdır. İkinci örnekteyse, & operatörü, koşulun her iki tarafına da bakar. Bu yüzden, j değişkenine ait değer değişir. Benzer bir uygulamayı, OR için || ve | kullanarak yapabilirsiniz.

ÖNEMLİ NOT: Özetle işlemlerinizi hızlandırmak istiyorsanız; AND kullanacağınız zaman, && operatörüyle çalışın ve yanlış olması muhtemel olan koşulu sol tarafa koyun. Eğer OR operatörü kullanacaksanız, doğru olma ihtimali fazla olan koşulu, ifadenin soluna koyun ve operatör olarak || ile çalışın. Bu şekillde yazılan bir program, kısa devre operatörleri sayesinde, gereksiz kontrolden kaçınarak işlemlerinizi hızlandıracaktır.

Elbette & veya | operatörlerinin kullanılması gereken durumlarda olabilir. Her n’olursa olsun, koşulun iki tarafınında çalışmasını istiyorsanız, o zaman & ve | operatörlerini kullanmanız gerekmektedir.



Önişlemci Komutları

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 PI’yi, 3.141592653 olarak değiştirmek isterseniz daha da sıkıcı hâle dönüşebilir. Veya canınız istedi, printf(  ) fonksiyonu yerine ekrana_yazdir(  ) kullanmaya niyetlendiniz… İşte bu gibi durumlarda, Önişlemci Komutlarını ( Preprocessor ) kullanırız. Önişlemci komutlarının amacı, bir şeyi başka bir şekilde ifade etmektir.

Konuya devam etmeden önce ufak bir uyarı da bulunmakta yarar var. Önişlemci komutlarını, değişkenler veya fonksiyonlarla karıştırmamak gerekiyor. Değişkenlerin ve fonksiyonların daha dinamik ve esnek bir yapıları varken, önişlemci komutları statiktir. Programınıza direkt bir kod yazdığınızı düşünün. Bu kod herhangi bir şey (sembol, program parçası, sayı, karakter vs…) olabilir. Örneğin, her yerde PI’nin karşılığı olarak 3.14 girmek yerine, PI diye bir sembol tanımlarız ve bunun görüldüğü her yere 3.14’ü koyulmasını isteriz. Önişlemci komutları bu gibi işlerde, biçilmiş kaftandır.



#define Önişlemci Komutu

#define komutu, adından da anlaşılabileceği gibi tanımlama işlemleri için kullanılır. Tanımlama komutunun kullanım mantığı çok basittir. Bütün yapmamız gereken, neyin yerine neyi yazacağımıza karar vermektir. 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.

Altta ki program, PI sembolü olan her yere 3.14 koyacak ve işlemleri buna göre
yapacaktır:

 
/* Çember alanını hesaplar */
 
#include<stdio.h>
#define PI 3.14 
int main( void )
{
	int yaricap;
	float alan;
	printf( "Çemberin yarı çapını giriniz> " );
	scanf( "%d", &yaricap );
	alan = PI * yaricap * yaricap;
	printf( "Çember alanı: %.2f\n", alan );
	return 0;
}

Gördüğünüz gibi, PI bir değişken olarak tanımlanmamıştır. Ancak #define komutu sayesinde, PI’nin aslında 3.14 olduğu derleyici (compiler) tarafından kabul edilmiştir. Sadece #define komutunu kullanarak başka şeylerde yapmak mümkündür. Örneğin, daha önce dediğimizi yapalım ve printf yerine, ekrana_yazdir; scanf yerine de, deger_al isimlerini kullanalım:

 
/* Yarıçapa göre daire alanı hesaplar */
 
#include<stdio.h>
#define PI 		3.14
#define ekrana_yazdir 	printf
#define deger_al 	scanf 
int main( void )
{
	int yaricap;
	float alan;
	ekrana_yazdir( "Çemberin yarı çapını giriniz> " );
	deger_al( "%d", &yaricap );
	alan = PI * yaricap * yaricap;
	ekrana_yazdir( "Çember alanı: %.2f\n", alan );
	return 0;
}

#define komutunun başka marifetleri de vardır. İlerki konularımızda göreceğimiz fonksiyon yapısına benzer şekilde kullanımı mümkündür. Elbette ki, fonksiyonlar çok daha gelişmiştir ve sağladıkları esnekliği, #define tutamaz. Bu yüzden #define ile yapılacakların sınırını çok zorlamamak en iyisi. Ancak yine de bilginiz olması açısından aşağıda ki örneğe göz atabilirsiniz:

 
/* Istenen sayida, "Merhaba" yazar */
 
#include<stdio.h>
#define merhaba_yazdir( x ) int i; for ( i = 0; i  " );
	scanf( "%d", &yazdirma_adedi );
	merhaba_yazdir( yazdirma_adedi );
	return 0;
}	



#undef Önişlemci Komutu

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ı

Ö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.

 
#include<stdio.h>
#define PI 3.14
int main( void )
{
	// Tanımlı PI değeri, tanımsız hâle getiriliyor.
	#undef PI 
 
	int yaricap;
	float alan;
	printf( "Çemberin yarı çapını giriniz> " );
	scanf( "%d", &yaricap );
 
	// PI değerinin tanımlı olup olmadığı kontrol ediliyor.
	#ifdef PI 
		//PI tanımlıysa, daire alanı hesaplanıyor.
		alan = PI * yaricap * yaricap;
		printf( "Çember alanı: %.2f\n", alan );
	#else 
		//PI değeri tanımsızsa, HATA mesajı veriliyor.
		printf("HATA: Alan değeri tanımlı değildir.\n");
	#endif 
	
	return 0;
}

Yukardaki örneğe bakacak olursak, önce PI değeri tanımlanıyor ve sonrasında tanım kaldırılıyor. Biz de sürprizlerle karşılaşmak istemediğimizden, PI değerinin tanım durumunu kontrol ediyoruz. Tek başına çalışan biri için gereksiz bir ayrıntı gibi gözükse de, ekip çalışmalarında, bazı şeylerin kontrol edilmesi ve istenmeyen durumlarda, ne yapılacağı belirlenmelidir. Yukarda ki programı şöyle de yazabilirdik:

 
#include<stdio.h>
int main( void )
{
	int yaricap;
	float alan;
	printf( "Çemberin yarı çapını giriniz> " );
	scanf( "%d", &yaricap );
 
	// Şu noktaya kadar tanımlı bir PI değeri bulunmuyor.
	// #ifndef opertörü bu durumu kontrol ediyor.
	// Eğer tanımsızsa, PI'nin tanımlanması sağlanıyor.
	#ifndef PI		
		#define PI 3.14
	#endif 
 
	alan = PI * yaricap * yaricap;
	printf( "Çember alanı: %.2f\n", alan );
 
	return 0;
}



#if, #else, #endif, #elif Önişlemci Komutları

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.

Konumuza dönersek, #if, #else, #endif yapısı daha önce işlemiş olduğumuz if-else yapısıyla hemen hemen aynıdır. if-elif yapısı da if-else if yapısına benzer. Her ikisinin de genel yazım kuralı aşağıda verilmiştir:

#if – #else Yapısı: #if – #elif Yapısı:
 
#if koşul 
	komut(lar) 
#else 
	komut(lar) 
#endif
 
#if koşul 1 
	komut(lar) 1 
#elif koşul 2 
	komut(lar) 2 
.
.
.
#elif koşul n-1 
	komut(lar) n-1 
#else 
	komut(lar) n 
#endif

Bir program tasarlayalım. Bu programda, pi sayısınının virgülden sonra kaç basamağının hesaba katılacağına karar veren bir mekanizma olsun. Soruyu,şu ana kadar gördüğümüz, if – else gibi yapılarla rahatça yapabiliriz. Önişlemci komutuyla ise, aşağıdakine benzer bir sistem oluşturulabilir:

 
/* Daire alanını hesaplar */
 
#include<stdio.h>
#define HASSASLIK_DERECESI 2
int main( void )
{
	int yaricap;
	float alan;
	printf( "Çemberin yarı çapını giriniz> " );
	scanf( "%d", &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;
	#else
		alan = -1;
	#endif
 
	printf( "Çember alanı: %.2f\n", alan );
	return 0;
}



#include Önişlemci Komutu

#include oldukça tanıdık bir operatördür. Her programımızda, #include önişlemci komutunu kullanırız. Şayet kullanmasak, printf(  ) veya scanf(  ) gibi fonksiyonları tekrar tekrar yazmamız gerekirdi. #include komutu, programımıza bir başlık dosyasının (header file) dâhil 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.

Eğer sistem kütüphanelerine ait bir başlık dosyasını programınıza dâhil edeceksek,küçüktür ( < ) ve büyüktür ( > ) işaretlerini kullanırız. Örneğin stdio.h sisteme ait bir kütüphane dosyasıdır ve Linux’ta /usr/include/stdio.h adresinde bulunur. Dolayısıyla stdio.h kütüphanesini programımıza eklerken, #include<stdio.h> şeklinde yazarız. Kendi oluşturduğumuz başlık dosyaları içinse, durum biraz daha farklıdır.

Çalışma ortamımızla aynı klasörde olan bir başlık dosyasını, programımıza eklemek için #include “benim.h” şeklinde yazarız. İlerki derslerimizde, kendi başlık dosyalarımızı oluşturmayı göreceğiz. Ancak şimdilik burada keselim…



Önemli Noktalar…

Konuyu noktalarken, söylemek istediğim bazı şeyler bulunuyor. Olabildiğince, önişlemci komutlarından  #include komutu hariç  uzak durun. Çünkü bu komutlar, esnek bir yapıya sahip değiller ve bu durum, bir noktadan sonra başınızı ağrıtacaktır. Önişlemci komutlarıyla yazılmış kodları takip etmek oldukça zordur ve debug edilemezler. Java gibi gelişmiş dillerde, #define komutu bulunmaz. Modern dillerde, bu yapıdan uzaklaşılmaya başlanmıştır.

Yukarda saydıklarıma rağmen, bazı durumlarda, önişlemci komutlarını kullanmak uygun olabilir. Kaldı ki bu komutların kullanıldığı birçok yer bulunuyor ve biz kullanmasak bile, bilmeye mecbur durumdayız. Sözün özü; bu konuyu es geçmek uygun değil. Ancak üzerine düşmek oldukça gereksiz.


  <<   C Programlama Dersi – VII                                               C Programlama Dersi – IX   >>


WordPress.com ile böyle bir site tasarlayın
Başlayın