C dersleri

Kodla Büyü

gökalp

Seçkin Üye
Seçkin Üye
Mesajlar
506
GiRiŞ

Bilgisayar, verileri saklayan, bunlar üzerinde çok hızlı işlem yapan ve istenen verileri sunan bir aygıttır.

Donanım (hardware) ve yazılım(software) diye iki bölüme ayrılır. Donanım bilgisayarin fiziksel bileşenleridir. Yazılım ise donanımı oluşturan bileşenlerin çalışmasını ve işlevlerini yerine getirmesini sağlayan programlardır.


YAZILIMIN SINIFLANDIRILMASI


— Bilimsel MühendislikYazılımlar

— Görüntüsel Yazılımlar

— Mesleki ve Ticari Yazlımlar

— Sistem Yazılımları

— İşletim Sistemleri

— Derleyiciler

— Editörler

— Debug programları

— Yapay Zekâ Yazılımları



PROGRAMLAMA DİLLERİNİN SINIFLANDIRILMASI


— Seviyelerine göre

— Uygulama alanlarına göre



1) Seviyelerine Göre



Programlama dilinin insan anlayışına yakınlığı…



İnsana yakın





Çok yüksek programlama dilleri(Dbase,Clipper,Vbasic,Paradox,Access)



Yüksek seviyeli programlama dilleri(Fortran,Basic,Pascal,Cobol)



Orta seviyeli programlama dilleri( C )



Sembolik makina dilleri (Assembler)







Makinaya yakın



2) Uygulama Alanlarına Göre



-Bilimsel ve mühendislik dilleri(Fortran,C,Pascal)

-Sistem programlama dilleri(C,Assembler)

-Veri tabanı dilleri(Dbase,Clipper)

-Yapay zeka dilleri(Prolog,LISP)

-Genel amaçlı(C,Pascal,Basic)



Ve galiba C dilinin varligini Unix Isletim sistemine borcluyuz. Bir isleti sistemini yüksek düzeyli bir dilde yazmak isteyen Dennis Ritche Bell laboratuarlarında C adını verdigi bu yep yeni dili olusturur. (1978 de tanıtıldı).BCPL dilinden etkilenmistir.

Peki neden insanlar yüksek seviyeli programlama dilleri gelistirmek istemis? İlk kuşak bilgisayarlar çok basit ve kavramsal olarak çok küçüktü. Örneğin Manchester Mark1 1948 yılında yedi tane işlem kodu ve 64 byte’lık ana bellekle doğdu. Böyle bir bilgisayarda program yazarken işlem kodlarını program yazarken bu kodları klavyeden binary kodlar halinde sıralanmış olarak girmek hiçte zor değildi. Bununla beraber programı önceden hazırlarken bu kodları binary olarak değil de kısaltmalar veya simgeler şeklinde yazmak daha uygundu.

Daha karmaşık bilgisayarlar ve daha uzun programlar ortaya çıktıkça bu kısaltmaları programcının binary koda çevirmesi oldukça yorucu ve içinden çıkılmaz bir hale geldi. 1940’ların sonunda bu çevirme işinin pekâlâ bilgisayarın kendisi tarafından yapılabileceği konusuna işaret edildi ve bu yönde çalışmalar başlatıldı. Bu işi yapmak üzere “assembler” olarak tanıdığımız program ortaya çıktı. Bu programın kodlarından oluşan dil de “assembly dili” olarak adlandırıldı. Tabii bu arada mnemonic kavramı dogdu ( yani kısa kelimerle yapılacak işlemin komutlanlanması ). Assembly dili progrlama ile ilgili bütün problemleri tam anlamıyla çözemeyip ve zor olmasının getirdigi nedenler insanları yüksek düzeyli dilleri yapmaya zorladı.

Bizde TürKKoD olarak dünyada oldugu kadar ülkemizdede hızla yayılan bu dile bir katkıda bulunmaktır. Yazım yanlışları olabilir, ama sizler için güzel örneklerle ve konularla haftada bir sürekli güncelleştirilecektir.

Bilgi insanı şüpheden, iyilik acı çekmekten, kararlı olmak korkudan kurtarır.

Konfüçyüs


//Gökalp
 
Programlama Dillerinin Değerlendirilmesi


—Taşınabilirlik

—Verimlilik

—Veri yapıları ve türleri

—Alt programlama yeteneği:



—Avantajları:

---Kodu küçültür

---Algıyı kolaylaştıtır

---Test imkânını arttırır

---Yeniden kullanılabilirliliği arttırır

—Esneklik

—Yapısallık

—Nesne yönelimlilik

—Öğrenme kolaylığı


TEMEL KAVRAMLAR


—İşletim sistemi

—Derleyiciler





C kaynak kodu makina dili(0,1) [amac program]

Derleyici



Derleyicinin Hata Mesajları


1)Uyarılar(warning)

2)Gerçek hatalar(error)

3)Fatal error: Derleme işleminin bitirilmesini engelleyecek büyüklükteki hatalar.



Derleyici. OBJ Linker

.C .EXE



SAYI SİSTEMLERİ VE İKİLİK SİSTEM


İkilik sistemde yezılmış sayının her basamağına 1 bit denir.Bilgisayarda heseplamalar 2’lik sistemde yapılır ve öyle kaydedilir. 1 byte=8 bit 1 kilobyte=1024 byte



1 byte içerisindeki tüm dizilimlerin sayısı 2*2*2*2*2*2*2*2=256’dır.

00000000

………...

………...

11111111

Sayısal olarak 0-255 arası.

Bilgisayarda makina komutları da yazılar da sayılar da 1ve 0’lar olarak korunur…



Tamsayıların 2’lik Sistemde Tutulması



-İşaretsiz sistem

-İşaretli sistem



Tam sayılar işaretli veya işaretsiz sistemde tutulabilirler.İşaretsiz sistemde sayılar hep pozitif kabul edilirler..İşaretli sistem (genellikle bu kullanılır) pozitif ve negatif sayıların yazılabildiği sitemdir..



İşaretli Sistemde Sayıların Gösterimi



Negatif bir sayı bilgisayarda -1100 gibi tutulmaz.nagatiflik için de 1 ve 0’larla gösterilir.Bu konuda 3 sistem önerilmiştir..



1.Sistem



X0101101=> x=1 ise negatif x=0 ise pozitif

Bu sistemde yazılabilecek en büyük sayı 01111111=+127 en küçük sayı ise 11111111=-127.Bu sistemde iki tane 0 vardır.

00000000 ve 10000000

Toplamada da sorunları vardır..

+10= 00001010

10= 10001010

00001010 + 10001010 = 10010100 = -20

Bu sistemde +n ile –n toplandığında –2n yapar..



2.Sistem(1’e tümleme)



0=>+

1=>-

1’e tümleme sayı içindeki 1’lerin 0, 0’ların 1 yapılmasıdır.Pozitif ve negatif sayılar birbirlerinin 1’e tümleyenleridir..



+10=00001010

-10=11110101

Bu sistemde negatif bir sayı yazmamız istenirse önce sayının pazitifini yazar sonra !2 tümleriz.Bu sistemde yazılabilecek en büyük sayı 011111111, en küçük sayı 100000000.1.sistemde olduğu gibi 2 tane 0 var(00000000,111111111)

Toplama hatası yok.



3.Sistem(2’ye tümleme)



Sayının 1’e tümleyenine 1 eklenerek sayının 2’ye tümleyeni bulunmuş olur..



10101101à01010010à01010011

Ya da sayının sağından soluna doğrı ilk 1’i görene kadar (ilk 1 dahil) aynısı ilk 1’den sonra 0’ları 1 1’leri 0 yapılabilir.

Bu sistemde de problemli bir sayı vardır.: 10000000Bu sayının 2’ye tümleyeni alınamaz.Problemli olan bu sayıya –128 değeri verilmiştir.

(C’de en büyük pozitif sayıya 1 eklenirse en küçük negatif tam sayı elde edilir.127+1=-128)



16’lık Sayı Sistemi(Hexadecimal)

0 0000 1A13=3+1*16+10*16*16+1*16*16*16

1 0001 16’lık sistemdeki herbir digite 4 bit karşılık düşer.16’lıktan ikiliğe

2 0010 dönüşüm kolaydır.

3 0011 FC18=1111 1100 0001 1000

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

A 1010

B 1011

C 1100

D 1101

E 1110

F 1111



8’lik Sistem



0 000

1 001

2 010

3 011

4 100

5 101

6 110

7 111

Yazıların Bellekte Tutulması


Her karakter ascii tablosunda 8 bitlik bir dizilim olaraka tutulmaktadır.Ascii tablusu 256 girişli bir tablodur.Yani karakterler 1 byte’lık sayılardır.C’de örneğin bir karakter aritmetik işlemlere sokulabilir. Bu durumda karakterin ascii numarası işleme sokulmaktadır.(‘A’+1=66)





Gençliğinde bilgi ağacını dikmeyen, yaşlılığında rahatlayacağı bir gölge bulamaz...

Seneca

// GöKALP
 
Problem Çözme ve Algoritmalar

Problem Çözme

Problem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayırılmaladır.

Descartes tarafindan "Discourse on Method" isimli kitabında anlatılan problem çözme teknikleri ;

1. Dogrulugu kesin olarak kanitlanmadikça, hiçbir seyi dogru olarak kabul etmeyin; tahmin ve önyargilardan kaçinin.

2. Karsilastiginiz her güçlügü mümkün oldugu kadar çok parçaya bölün.

3. Düzenli bir biçimde düsünün; anlasilmasi en kolay olan seylerle baslayip yavas yavas daha zor ve karmas.. olanlara dogru ilerleyiniz.

4. Olaya bakısınız çok genel, hazırladıgınız ayrıntılı liste ise hiçbir seyi dısarıda bırakmayacak kadar kusursuz ve eks..siz olsun.

Belirli bir görevi yerine getiren sonlu sayidaki islemler dizisidir.

I.S. 9.yy da Iranli Musaoglu Horzumlu Mehmet

(Alharezmi adini araplar takmistir) problemlerin çözümü için genel kurallar olusturdu. Algoritma Alharezmi'nin Latince okunusu.

Her algoritma asağıdaki kriterleri sağlamalıdır.

1. Girdi: Sıfır veya daha fazla deger dısarıdan verilmeli.

2. Çikti: En azından bir deger üretilmeli.

3. Açiklik: Her islem (komut) açık olmalı ve farklı anlamlar içermemeli.

4. Sonluluk: Her türlü olasilik için algoritma sonlu adimda bitmeli.

5. Etkinlik: Her komut kisinin kalem ve kagit ile yürütebilecegi kadar basit olmalidir.

Not: Bir program için 4. özellik geçerli degil. isletim sistemleri gibi program sonsuza dek çalisirlar .

Örnek: İşte size sabah evinden çıkan ve işe giden Kiriş amcanın yolda benzini bitmesi ile başlayan problemi çözmesinin algoritması (çözüm yolu).



Kiri Arabaya gir ve çalıştır.
Benzin göstergesine bak
Depo yarıdan azmı?
Hayır ise
Yoluna devam et
Evet ise
Cebine bak para varmı?
Yok ise arabandan in halk otobüsüne bin yoksa yolda kalabilirsin.
Var ise İlk benzin istasyonunda dur
Benzin al
Ödeme yap
Yoluna devam et
SON


Birde algoritma ile birlikte kullanacağımız Akış diyagramları (Flowchart) var. Akış diyagramları program tasarlamada çok büyük faydaları vardır. Bu programın sematik olarak gösterimidir. Böylece program yazılımı kolaylaştırılır.



Akış diyagramları, uluslar arası sematik semboller kullanılırak hazırlanır. Her sembolun belirli bir anlamı vardır. Avantajları: uluslar arası standandarta sahiptir, Programın konusunu bastan sona gösterir, Mantık hataları varsa önceden düzeltilebilir, Anlaşılması ve takibi kolaydır, Her konuya uygulanabilir.

İlim ilim bilmektir ilim kendin bilmektir.Sen kendini bilmessen bu nice okumaktır.
(Yunus Emre)

// GöKALP
 
Bilgisayar programcılığı dünyasının en önemli sorunlarından biri dil seçimidir. Kullanıcılar genellikle dil seçimi konusunda zorlanmaktadırlar. Çünkü dillerin özelliklerini karşılaştırmalı olarak verebilecek, birbirlerine göre üstünlüklerini, eks..lerini ortaya koyabilecek ve böylece kullanıcıya rehberlik yapabilecek kaynak yok denecek kadar azdır. Böyle bir ortamda, özellikle programcılığa yeni başlayanlar dil seçimi konusunda önemli problemler yaşamaktadırlar. Ama 4.dersimize kadar geldiğinize göre bu problemi çözmüşsünüzdür. Hangi derleyiniz var bilmiyorum ama ben şuan Borland 5.02 versiyonunu kullaniyorum ve tavsiye ederim.

Basitliği, oluşan kodun küçüklüğü ve her çeşit programlamada kullanılabilmesi, C yi popüler bir dil yapmıştır. C, çok kestirme olması nedeni ile, yeni bilgisayarlara başlayanlar için öğrenmesi biraz daha zordur. Ama tabii bir dava ya gönül vermiş insanların her şeyi yapabileceğini de unutmayalım. Bir programcı, C ile üst seviyelerden, assembly'yeyaklaşan alt seviyelere kadar programlama yapabilir.


C dilinde Fonksiyonlar (İşlevler)


C dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir yâda birçok programın bir araya gelmesi ile oluşur.



[geri dönüş değeri] <fonksiyon>([paramatre])

{

ANABLOK

}


#include <stdio>

main() { printf("Korkmayın Turkkodla C yi öğreneceğiz."); }

Önişlemci bildirimleri

Bu C programı iki kısımdan oluşur: Önişlemci bildirimleri ve main işlevi. Önişlemci bildirimleri # ile başlayan komutlardır. Bunlar C'nin önişlemcisi tarafından kullanılır. C'nin önişlemcisi program derlenmeden önce programın metininde bu komutları kullanarak bazı değişiklikler yapar ve program ondan sonra derlenir.
#include ve #define C'de en çok kullanılan önşlemci bildirimleridir.

C dili program yazmada yararlı olabilecek birçok hazır işlevi programcının kullanımına sunar. Bu hazır işlevler C'nin değişik kütüphanelerinde saklanır. Her kütüphanede adı .h uzantısıyla biten bir üstbilgi kütüğü vardır. #include bildirimi programın C'nin kütüphanelerinden birine erişimini sağlar. Bu bildirim ile C önişlemcisi bir kütüphanenin üstbilgi kütüğündeki bazı tanımları programa aktarır ve program bu değişikliklerden sonra derlenir. Örneğin şekildeki programda kullanılan

#include "[kütüphana adı]" şeklinde yapılır

#include <stdio>

önişlemciye bu programda kullanılan bazı işlev isimlerinin (printf ve scanf gibi) stdio.h (standart giris cikis ) adlı üstbilgi kütüğünde olduğunu bildirir.



Gördüğünüz gibi yukarıdaki ilk programımız da iki tane fonksiyon tanımlanmıştır birincisi main() sözcüğüdür. Her programda olması gereken bu sözcük, daha sonra göreceğimiz gibi, ilk satırda olmak zorunda degildir, fakat bir giris noktasi sağlaması nedeni ile gereklidir. Bunu takiben, iki tane parantez vardir. Bunlar da, main'in bir fonksiyon olduğunu belirtir. İkincisi printf() fonksiyonudur oda İçinde yer alan fonksiyonun, bir satiri ekrana getirmesi için, satiri " " isaretleri arasına alıyoruz. Ayrıca fonksiyonun parametresi olduğunu belirtmek için de, çevresine parantez koyuyoruz. Satirin sonundaki noktalı virgüle dikkat cekelim: Bir satirin bittiğini derleyiciye bildirmek için, C dilinde; noktalı virgül kullanılır.


Fonksiyonlara örnek:


#include <stdio>

main()

{

printf("Ben main'im\n");

fonk1();

fonk2();

}

fonk1()

{

printf("Ben 1.fonksiyonum\n");

}

fonk2()

{

printf("Ben 2. fonksiyonum\n");

fonk3();

}

fonk3()

{

printf("Ben 3. fonksiyonum\n");

}

C programlama dilinde ozgun programlar yazmak isteyecek programcı fonksiyonların nasıl yazıldığını ve nasil kullanıldığını tam olarak bilmek zorundadır. Iki sayının toplamını bulan bir fonksiyon örneği: int topla (a,b) int a,b; { int toplam; toplam =a+b; return toplam; } Burada yazılan int fonksiyonun tam sayi tipinde olduğunu gösterir. Çünkü iki tamsayının toplamı yine bir tam sayıdır. int ve daha birçok değişkeni bir sonraki konumuzda göreceğiz. Burada toplam değişkeni geçici olarak kullanılmıştır return ise toplam değerinin çağrılan yerde geri bildirimi için kullanılır. Scanf() fonksiyonu printf fonksiyonu gibi format karakterleri alır. Ancak bu karakterler klavyeden yapılan girişi belirlemekte kullanılır. #include <stdio>

main()

{

int a;

printf("sayı=");

scanf("%d", &a);

printf("%d", a);

}

scanf fonksiyonunun string kısmında format karakterleri dışında hiçbir şey konulmamalıdır. Buraya konulacak boşluk bile farklı anlama gelir. scanf fonksiyonunun diğer parametrelerinin önünde ampersan(&) operatörü bulunur.

Son olarak: C dilinin temel yap taşı fonksiyonlardır. Fonksiyonlar bir araya gelerek programı oluşturur. Bir fonksiyonun tipi kendini çağırana göndereceği sonucun nasıl bir veri olacağını belirtir aksi belirtilmediği zaman tamsayıdır. main() program yürütüldüğünde ilk çağrılan fonksiyon olup ana program anlamındadır. Programda yalnızca bir tane olmalidir.

Ne kadar bilirsen bilirsen bil söylediklerin karsındakinin anlayabildiği kadardır. (Mevlana)

// GöKALP
 
Veri Türleri

Tanımlayacağımız her değişken bellekte bir bölgeye denk gelecektir. Bir değişkenin türü o değişkene denk düşen bellek bölgesinin büyüklüğünü ve o bölgenin içindeki bilginin nasıl yorumlanacağını gösterir. Bir değişkene yeni bir değer verdiğimizde, verdiğimiz bu değer o değişkene denk düşen bellek bölgesine eski değeri yok ederek saklanır.

Örneğin,

int x;

tanımlaması, x değişkeni için 32 bitlik bir bellek bölgesinin kullanacağını ve bu bölgenin içindeki bitlerin bir tamsayı (integer) olarak yorumlanacağını gösterir.

Aşağıdaki atama ifadesi ile x değişkenine 10 değerini verebiliriz:

x = 10;

Bu atama ifadesinden sonra, x değişkenine denk gelen bellek bölgesi 10 sayısını 32 bit’lik bölgeyi kullanarak bir tamsayı olarak tutacaktır. Bu bellek bölgesi sonradan yeni bir atama ifadesi ile değiştirilebilir. Örneğin,

x = 20;

atama ifadesi x değişkenin içine 20 sayısını koyacaktır ve eski değer olan 10 buradan silinecektir.

2.2.1. İkilik Düzendeki (Binary) Sayılar:

Bilgisayardaki her değer, ikilik düzendeki sayılar ile gösterilir. İkilik düzendeki tek bir rakam (0 ya da 1) bir bit olarak adlandırılır. Her bir bit iki değişik durumu gösterir. Bit dizgileri daha büyük sayıları göstermekte kullanılır. Her bit dizgisinin kaç değişik değeri gösterebileceği o dizgideki bit sayısına bağlıdır. Eğer bir bit dizgisinde N bit varsa, o dizgi 2N değişik değeri gösterebilir. Örneğin bit sayısına göre kaç değişik değer gösterilebileceği aşağıdaki tabloda verilmiştir:

1 bit 21=2 değişik değer : 0 1
2 bit 22=4 değişik değer : 00 01 10 11
3 bit 23=8 değişik değer : 000 001 010 011 100 101 110 111
:
32 bit 232=4,294,967,296 değişik değer
64 bit 264=18,446,744,073,709,551,616 değişik değer


Gördüğünüz gibi dizgiye her bit eklediğimizde, o dizginin gösterebileceği değişik değerin sayısı iki katına çıkar. Tanımlayacağımız her değişken bellekte bir bit dizgisi olarak tutulacaktır ve bu bit dizgisinin nasıl yorumlanacağı ise o değişkenin türüne bağlı olacaktır. Örneğin veri türü int olan bir değişken 32 bitlik bir bit dizgisi olarak tutulacaktır ve bu bit dizgisi artı ya da eksi bir tamsayı olarak yorumlanacaktır.

C'deki her veri türü bir değerler kümesinden ve onların üzerinde yapılabilecek işlemlerden oluşur. Her veri türünün int, double, char gibi bir adı olacaktır. Bellekte tutulan her değer belirli bir veri türü kullanılarak yorumlanacaktır. C’deki her değişkenin bir türü olacaktır ve bir değişkenin türünün ne olacağını tanımlama (declaration) ifadesi ile belirtiriz. Örneğin,

int x, y;
int z;
double d;

tanımlama ifadeleri x, y, z değişkenlerinin türlerinin tamsayıların gösteriminde kullanılan bir veri türü olan int olacağını ve d değişkeninin türünün ise reel sayıların gösteriminde kullanılan bir veri türü olan double olacağını belirtir. C'de kullanılan her literalin (sabit sayı) de bir veri türü vardır. Örneğin, 5 bir tamsayıyı (yani int) ve 5.0 bir reel sayıyı (yani double) gösteren birer literaldir. Bellekte 5 ve 5.0 gösteren bit dizgileri tamamen farklı iki dizgi olacaklardır.

C'de standart veri türleri char,double,int gibi önceden tanımlanmış veri türleridir. double ve int reel ve tamsayıları programlarımızda göstermek için kullanılır. char ise her türlü karakter bilgisini saklamak için kullanılan bir veri türüdür. Standart veri türleri ile tanımlanan değişkenler için gerekli bellek, tanımlama (declaration) sırasında otomatik olarak ayrılır. C 'de standart veri türleri dışında programcı kendisi değişik veri türleri de tanımlayabilir (enumerated types). Ayrıca dinamik veri türleri de vardır (pointers). Dinamik veri türü olarak tanımlanan bir değişken için gerekli bellek bölgesi tanımlama anında değil de programın çalışma zamanında ayırılır.

Biz bu derste sadece standart veri türlerini anlatacağız. Önce sayısal veri türlerini, daha sonra da karakter veri türünü tanıtacağız.

Standart Veri Türleri:

C programlama dilinde aşağıdaki anahtar sözcüklerle ifade edilen 10 standart veri türü vardır:

short, unsigned short, int, unsigned, long, unsigned long, float, double, long double, char

Tamsayılar için standart veri türleri:

Tamsayıların gösteriminde altı değişik veri türü kullanabiliriz. Bu veri türleri şunlardır:

short
unsigned short
int
unsigned
long
unsigned long
Bu dört veri türü de artı ve eksi tamsayıların gösteriminde kullanılır; tek farklı olan nokta değişik miktarlarda bellek kullanmalarıdır. Bu durumda gösterebilecekleri tamsayıların miktarları da farklı olacaktır. Bu veri türlerinden biri ile tanımlanan değişkene denk düşen bellekteki bit dizgisi bir tamsayı (artı ya da eksi) olarak yorumlanacaktır. Her bir veri türü, yalnızca biri eksi (en küçük değer) diğeri artı (en büyük değer) olan belirli iki tam sayı arasındaki değerleri gösterebilir. Aşağıdaki tablo her veri türünün kaç bitlik bir bellek bölgesi kullandığını ve bu veri türü ile gösterilebilen en küçük ve en büyük tamsayıları gösterir.


Veri Türü
Bellek Kapasitesi
En Küçük Değer
En Büyük Değer

short
16 bit
-215 = -32,768
215-1 = 32,767

unsigned short
16 bit
0
216 - 1 = 65,535

int
16 bit
-215 = -32,768
215-1 = 32,767

long
32 bit
-231 = -2,147,483,648
231-1 = 2,147,483,647

unsigned long
32 bit
0
232 - 1 = 4,294,967,295


C programlama dilinde tamsayıları aşağıdakiler gibi yazabiliriz:

5, 3344, 89

C'de int veri türü değerleri aynı zamanda mantıksal değerler olan doğru ve yanlışı ifade etmek için de kullanılır. Bir int değer pozitif ise doğru; sıfır ya da negatif ise yanlış olan bir durumu gösterebilir. Örneğin, int bir değer bir lambanın açık ya da kapalı olması gibi iki değişik değeri olan durumları göstermekte kullanılabilir. Pozıtif ise lamba açık; değilse kapalı olarak kabul edilebilir. int değerlerinin bu tip kullanımını daha sonraki derslerimizde detaylı olarak inceleyeceğiz.

Reel sayılar için standart veri türleri:

Reel sayılar için kullanılan üç standart veri türü vardır:

float
double
long double
Bu üç veri türü de reel sayıların gösteriminde kullanılır. Bir reel sayı, bilimsel notasyonda mantissa * 2power formülüyle gösterilebilir; böylece bir reel sayıyı bilgisayarda göstermek için kullanılan bit dizgisinin bir bölümü sayının rakamlarını gösteren mantissa için ayrılmış ve diğer bir bölümü de üs (power) göstermek için ayrılmıştır. float, double ve long double veri türlerinin kullandıkları bellek büyüklüğü ve mantissa ve power için ayırdıkları bit miktarı farklıdır. Aşağıdaki tablo bu veri türlerinin kaç bitlik bir alan kullandıklarını ve yaklaşık olarak gösterebilecekleri en küçük ve en büyük sayıları gösterir.



Veri Türü
Bellek Kapasitesi
En Küçük Değer
En Büyük Değer

float
32 bit
-3.4x10-37
3.4x1038

double
64 bit
-1.7x10308
1.7x10308

long double
80 bit
-3.4x104932
1.1x104932


float veri türü sayının 6 rakamını, double veri türü 15 rakamını, long double veri türü ise 19 rakamını saklayabilir.

Reel sayıları yazmak için noktalı notasyonu ya da bilimsel notasyon olarak bilinen e-notasyonunu kullanabiliriz. Bazı reel sayıları aşağıdaki gibi yazabiliriz:

5.0 7.34 0.5e+12 -15.35e-15

e-notasyonunda yazılan 0.5e+12 sayısı 0.5x1012 sayısına, -15.35e-15 sayısı -15.35x10-15 sayısına eşittir.

char standart veri türü:

char veri türü, harf, rakam ya da noktalama işareti gibi herhangi bir karakter değeri temsil eder. Her karakter literal iki tırnak işareti ('') arasına yazılır. Örneğin, bazı karakter literalleri aşağıdaki gibi yazılabilir:

'A' 'B' 'a' 'b' '0' '1' '*' ':' '"' ' '

Sondan ikinci karakter çift tırnak işaretini.("), sonuncu ise boşluk karakterini göstermek için kullanılır (iki tırnak içine bir boşluk yazılır). Karakter değerleri karakter veri türü ile tanımlanmış bir değişkenin içinde saklanır. C değişik karakter değerlerinin karşılaştırılması ya da üzerlerinde aritmetik işlem yapılması gibi işlemler yapmaya izin verir.

2.2.3. Değişkenlerin Tanımlanması

Bir değişken belirli bir veri türünü tutan bir bellek bölgesini gösteren bir tanımlayıcıdır. Bütün değişkenler kullanılmadan önce tanımlanmalıdır. Bir tanımlama ifadesi aynı veri türüne sahip olacak bir ya da daha fazla değişkenin tanımlanmasında kullanılır. Bir tanımlama ifadesinin yapısı aşağıdakiler gibi olmalıdır:

veri-türü değişken-adı;
veri-türü değişken-adı1,değişken-adı2, ... ,değişken-adın;

Örneğin,

int sum;
int x,y;
double z;

Birinci tanımlama ifadesi sum değişkeninin türünün int olacağını, ikinci tanımlama ifadesi x ve y değişkenlerinin türünün int olacağını ve üçüncü ifade de z değişkeninin türünün double olacağını gösterir. Bir tanımlama ifadesinde birden fazla değişken tanımlanacaksa, bu değişkenler virgüllerle ayrılır.

Değişkenlere ilk değerleri istenirse tanımlanma anında verilebilir. Örneğin,

int sum = 0;
int x=0, y=10;

tanımlama ifadeleri aynı zamanda sum, x ve y değişkenlerine ilk değerlerini verirler.



BİN KİLOMETRELİK BİR YOLA BİLE BİR ADIMLA BAŞLANIR.

Atasozu

// GöKALP
 
Temel Giriş/Çıkış Operasyonları (BASIC I/O):

C ile ilgili olarak bu ve önümüzdeki yazılarda birçok komut/fonksiyon göreceğiz. Ama hep kullanacağımız ve ilk öğrenmemiz gerekenler temel giriş çıkış fonksiyonlarıdır. C de klavyeden bir değer alabilmek için scanf(); fonksiyonunu kullanırız. Ekrana herhangi bir şey yazdırmak içinse printf(); fonksiyonu kullanılır.

Bir örnekle görelim;

#include<stdio>

main()
{
printf(“Merhaba Bilgisayarcı arkadaşlarım”);
}

Eğer bunu derleyicinizde yazıp derlerseniz, -Borland Turbo C++ için, Ctrl+F9 tuşları ile yazdığınız programınızı derleyebilirsiniz- ekrana "Merhaba Bilgisayarcı arkadaşlarım" yazılacaktır. #include<stdio> standart girdi/çıktı’yı destekle gibi bir anlama sahiptir. main() , ana fonksyiondur. Ondan sonra gelen ayraç standarttır. Çift tırnak işaretleri, printf ve parantez standarttır. Noktalı virgülse C dilinde her komutun sonuna konulur. Tırnakların içine istediğinizi yazıp bastırabilirsiniz. Programın sonunda ki ayraçta programın bittiğini gösterir.

Şimdi yukarıda yazdığımız basit programı, biraz daha geliştirelim.

#include<stdio>
#include<conio>
main()
{
clrscr();
printf(“Hello World\n”);
printf(“Merhaba Dünya”);
return 0;
}

Birkaç yeni satır ekledik. Sırayla ne olduklarını açıklayalım. #include<conio> başlık dosyaları (header files) ile ilgilidir. Onu şuan izah etmem için erken. Ama şu kadarını söyleyelim, clrscr(); fonksiyonunu kullanabilmek için bunu yazmamız gerekmektedir. clrscr(); fonksiyonuysa, ekranda önceden yazılan şeyleri temizler ve kullanacağımız ortamın sıfır olmasını sağlar. Az evvel yazdığımız Hello World yazısının sonuna “\n” ekledik. “\n” bir alt satıra geç anlamına geliyor. Eğer \n yazmazsak, ekranda Hello WorldMerhaba Dünya şeklinde bir yazı çıkar. \n kullandığımızdaysa, Hello World yazılacak onun ve sonra bir alt satırına geçilecek, oraya Merhaba Dünya yazılacaktır. En alt satırdaysa return 0; adında yeni bir komut görüyorsunuz. Bunu eklemeden de program çalışacaktır. Ancak uyarı verir. Bunu ekleyerek bu uyarıdan kurtulabilirsiniz. Detayına girmek için henüz erken, return konusuna ileride değineceğiz.

Yukarıda ki programın aynısını şöyle de yazabilirdik;

#include<stdio>
#include<conio>
main()
{
clrscr();
printf(“Hello Türkkod”);
printf(“\nMerhaba Dünya”);
return 0;
}

Bir önce ve şimdi yazdığımız programların ekran çıktısı aynıdır. Bu örnekle anlatmak istediğim, printf(); te çift tırnakların içerisinde nereye \n koyarsak koyalım, ondan sonrası için cursor bir alt satıra geçer.

printf(); daha birçok şekilde kullanılabilir. Diyelim ki yukarıdaki programı tek printf(); komutuyla yazmak istediniz. O zaman ne yaparsınız?

#include<stdio>

#include<conio>

main()
{
clrscr();
printf(“Hello Türkkod\nMerhaba Dünya”);
return 0;

}

Gördüğünüz gibi tek bir printf(); kullanarak aynı işlemi yaptırdık.

Varsayalım, ekrana çok uzun bir cümle yazmamız gerekti. Örneğin;

#include<stdio>
#include<conio>
main()

{
clrscr();
printf(“Benim adım GöKALPve Türkkod sitesi’nde adminim...”);
return 0;

}

Bu yazdığımız program hata vermez ama compiler’ın çalışma verimini düşürür. Bu düşüş önemsiz olsa bile bizim yazma verimimiz düşecektir. Çünkü ne yazdığını okumak için ok tuşlarını kullanarak bir sağa bir sola gidip gelmemiz gerekir.

Bu programı aşağıda ki gibi yazmamız daha uygundur.

#include<stdio>

#include<conio>

main()

{

clrscr();

printf(“Benim adım GöKALP”

“ ve Türkkodda”

“ adminim.”);

return 0;

}

Tek bir printf(); fonksiyonu kullanılmıştır. Ancak gördüğünüz gibi alt alta yazarak bütün cümleyi tek seferde görülebilir hâle getirdik. Ekrana bunu bastırırsanız, alt alta üç satır basmaz. Bu çok hata yapılan bir noktadır. Sadece tek satır basar ve yazılan bir önceki örnekle aynı olur. Alt alta yazmak için daha önce bahsettiğimiz gibi \n eklememiz gerekir.

Ekrana, Ali: “Naber, nasılsın? diye sordu. şeklinde bir yazı yazdırmamız gerekiyor diyelim. Bu konuda ufak bir problem yaşayacağız. Çünkü printf(); fonksiyonu gördüğü ilk iki çift tırnak üzerinden işlem yapar. Böyle bir şeyi ekrana yazdırmak için aşağıda ki gibi bir program yazmamız gerekir.

#include<stdio>
#include<conio>

main()
{

clrscr();
printf(“Dom Ali: \“Naber, nasılsın?\” dedi.”);
return 0;

}

printf(); fonksiyonunu kullanmayı sanırım iyice anladınız. printf( yazıp, sonra çift tırnak açıyor, yazmak istediklerimizi yazıyor, çift tırnağı sonra da parantezi kapatıyor, sonuna noktalı virgül ekliyoruz. Alt satıra geçmek içinse, yazdıklarımızın sonuna \n ekliyoruz. Çift tırnaklı bir şey kullanmak içinse \“ ... \” kullanıyoruz.

scanf(); fonksiyonuna gelince, bu başında bahsettiğimiz gibi bizim giriş (Input) fonksiyonumuzdur. Ancak yazımı burada noktalıyorum. Çünkü değişkenler işin içine girmekte ve onları anlatmam uzun sürecek. Gelecek haftaki yazımda kaldığımız yerden devam edeceğiz. Yazdıklarımla ilgili öneri, eleştiri veya sorunuz varsa, bana ulaşabilirsiniz. Haftaya ya da en kötü ihtimalle öbür haftaya görüşürüz.

Bir kısmı alıntı olmakla birlikte yazı GöKALPtarafından düzenlenmiştir.
 
Geri
Üst