C Öğreniyoruz Ders 1 2 3

Bu konuyu okuyanlar

0ReiS0

Dekan
Emektar
Katılım
8 Temmuz 2008
Mesajlar
5,666
Reaksiyon puanı
91
Puanları
48
HTML clipboard

Ders 1



Başlamadan Önce;

Kaynak:
Dr. Yalçın Özkan (Ahmet Yesevi Üniversitesi)


C PROGRAMLARININ YAPISI


C programları belirli bir yapıya sahiptir ve kendine özgü bazı bileşenleri bulunmaktadır. İlk bilinmesi gereken nokta: Bir C programı bir veya daha fazla fonksiyondan oluşmakta ve herbir fonksiyon bir veya daha fazla sayıda deyim içermektedir.C’de bir fonksiyon altyordam (subroutine) olarak da adlandırılır ve bunlar programın bir başka yerinden isimleri kullanılarak çağrılabilir.

FONKSİYONLAR


Fonksiyonlar C bloklarından oluşur. Fonksiyon içindeki herbir deyim, programın çalıştırılması durumunda, belirli bir eylemi yerine getirir. O halde deyimler, programın amacına ulaşması için gereken işlemleri yerine getiren komutlar olarak değerlendirilir. Bunun dışındaki ifadeler de birer C deyimi olarak değerlendirilir.




Tüm C deyimleri noktalı virgül (;) işareti ile son bulur. Bu işaret program içindeki herhangi bir satırın sonunu belirlemez. Sadece deyimin sonunu belirler. O halde, bir satırın sonunda (;) işareti yer almıyorsa, bu satırdaki deyimin bir alt satırda da devam ettiği anlaşılır. Örneğin, C programı içinde,


printf("Toplam : %d",i);


satırının yer aldığını varsayalım. Bu satırın sonunda (;) işareti yer aldığına göre, deyimin tanımlanması bu satır üzerinde tamamlanmıştır. Bir C satırının üzerinde, deyim sonları (;) işareti ile belirlenmek koşuluyla, birden fazla deyime de yer verilebilir. C programlarının yapısı, basit biçimde ifade etmek gerekirse, aşağıda gösterildiği gibidir.


fonksiyon_adı()
{
deyimler;
}





Herbir deyimin sonunda mutlaka (;) işaretinin yer alması gerektiğini belirttik. Ancak bazı durumlarda bileşik deyim, deyim bloğu veya sadece bloklardan söz edilir. Bloklar içinde yer alan herbir deyimin sonuna (;) işareti konulması gerekmez. Söz konusu blok { } işaretleri arasına yerleştirilir. Ancak, deyim bloğunun sonunu belirleyen } işaretinin yanına (;) işareti eklenmez.




main() FONKSİYONU


Bir C programının bir veya daha fazla fonksiyondan oluştuğunu biliyoruz. Önceki sayfalarda verdiğimiz örneklerde yer alan main() bir fonksiyondur. Bir C programının içinde çok sayıda fonksiyon yer alabilir, ancak mutlaka bir main() fonksiyonu bulunmalıdır. Program yürütülmeye başladığında, öncelikle programın içinde bağlanmış bulunan bir başlangıç yordamının çalışması beklenir. Bu yordam da main() fonksiyonunu çağırır.

C’de programcı tarafindan tanımlanan ve isimlendirilen fonksiyonlar kullanılabilmektedir. Bu tür fonksiyonların nasıl oluşturulabileceği konusunu dersimizin ilerideki bölümlerinde ele alarak inceleyeceğiz.


C’ de programcı tarafından tanımlanan fonksiyonlar dışında, hazır kitaplık fonksiyonları da bulunmaktadır. Bu fonksiyonların, verilen görevi nasıl yerine getirdikleri belirtilmez. C programı içinde sadece isimleri kullanılarak istenilen sonuçlara ulaşılması sağlanır. Örneğin, ekran üzerine mesaj yazdırmak için kullanılan printf(), bir kitaplık fonksiyonudur. Yazdırılmak istenilen ifade parantez içinde, tırnak işaretleri arasına kaydedilerek amaca ulaşılır.


Aşağıdaki main() fonksiyonuna sahip C proğramı 100 sayısını ekranda görüntülemek için yazılmıştır.



#include<stdio.h>
main()
{
int num;
num=100;

printf("Sayi=%d",num);
}





C ÖNİŞLEMCİSİ

C programları kendi derleyicisi ile de ilişki halinde olacaktır. Bu ilişki C önişlemcisi yardımıyla sağlanır. Önişlemciler çesitli emirlerden oluşabilir. Bu emirler C derleyicisinin kaynak kodunu denetlemekte kullanılır. Önişlemci emirleri C programı içinde ( # ) işareti ile başlar. C&#8217;nin en çok kullanılan önişlemci emirleri #include ve #define ile tanımlanmaktadır. Önişlemci emirleri ( ; ) işareti ile sonlandırılmaz.

#include<stdio.h> /*c ön işlemcisi*/
main()
{
int num;
num=100;

printf("Sayi=%d",num);
}





KİTAPLIK FONKSİYONLARININ PROGRAMA DAHİL EDİLMESİ


En önemli önişlemci emirleri arasında #include sayılabilir. Bu önişlemci emri, bir kaynak dosyasının bu programa dahil edilmesini sağlar. C programına dahil edilen dosyalar, başlık dosyası olarak isimlendirilir.


C &#8217;de standart kitaplık fonksiyonları hakkındaki bilgiler, bu tür başlık dosyaları içinde yer alır. Standart fonksiyonları kullanmak için, söz konusu dosyaları C programına dahil etmek gerekiyor. Bu tür başlık dosyaları".h" uzantısıyla tanımlanır.



#include<stdio.h>
main()
{
printf("Bu Bir C Programıdır.");
}





Yukarıdaki C programında main() fonksiyonu içinde printf() standart kitaplık fonksiyonu kullanılmaktadır. printf() fonksiyonu ise stdio.h dosyası içinde tanımlanmıştır. Bu dosya, C için standart giriş-çıkış fonksiyonları kitaplığını içermektedir. Söz konusu dosyayı bizim yazdığımız bir programa dahil edebilmek için #include"stdio.h" önişlemci emri kulanılmıştır.




SEMBOLİK DEĞİŞMEZLERİN TANIMLANMASI


Program içinde kullanılacak değişmezlerin tanımlanması için önişlemci emri kullanılabilir. Söz konusu önişlemci emri bir isim ve bir değer ile birlikte tanımlanır. İşleme bir karakter dizisinin atanması amacıyla #define önişlemci emri kullanılır.



Örneğin, C programı içinde SON isimli bir değişmezin kullanılacağını varsayalım. #define önişlemcisi ile birlikte kullanılacak değişmez isminin büyük harfle yazılması, genel bir alışkanlık olarak kabul edilmektedir. Büyük harflerle kaydetmek zorunlu değildir. Söz konusu değişmezin program içindeki değerinin 50 olması gerektiğini varsayalım. Böyle bir amaca uygun C programının yapısı aşağıdaki şekilde olabilir:



#include<stdio.h>
#define SON 50
main()
{
deyimler;
}




AÇIKLAMA SATIRLARI


C programının bazı bölümlerine açıklamalar eklemek gerekebilir. Özellikle uzun programlarda, program bölümlerinin hangi işlemi yerine getirdiğini program satırları arasına kaydetmek yararlı olacaktır. Bu sayede, programı incleyen kişiler, kodların hangi amaçla düzenlendiği hakkında fikir sahibi olurlar.

C programının herhangi bir yerine açıklama satırı eklemek için, açıklamanın başına (/*) işaretleri sonuna ise (*/ ) işaretleri eklenir. Bu işaretler arasına kaydedilen ifadeler C derleyicisi tarafından "yok" sayılır. Yani herhangi bir işleme tabi tutulmaz.


Ders 2








TEMEL VERİ TÜRLERİ


Değişken, birinci bölümde tanımlandığı gibi, program içinde kullanılan değerlere bellek üzerinde açılan alanlardır. Bu alanlar bir değişken ismi ile anılır. C&#8217;de tüm değişkenler kullanılmadan önce programa bildirilmelidir. Bu bildirim esnasında, değişkenin veri türü belirlenir.


C&#8217;de birçok veri türü bulunmaktadır. Bunlardan en belli başlı olanı char olarak bilinir. Sözü edilen veri türü, karakter içeren değerlerin ifade edilmesinde kullanılır. Aşağıdaki tablo üzerinde C temel veri türleri yer almaktadır.


cwexplorer.gif

Yukarıdaki tablo en temel C veri türlerini içermektedir. Bunların dışında başka veri türleri de bulunmaktadır. Tabloda int ile tanımlanan tamsayı değişkenler tüm ondalıklı olmayan tüm işaretli sayıları kapsamaktadır. Bu tür bir değişken, genellikle -32768 ile 32767 arasındaki tamsayıları içerebilir. Tabloda belirtilenler dışında başka tamsayı veri türleri de tanımlanabilmektedir. Örneğin, kısa tamsayılar için short, uzun tamsayılar için long tamsayı tanımları da yapılabilir. Ayrıca işaretli tamsayılar için signed, işaretsizler için unsigned tanımları kullanılabilir.



Tek duyarlıklı ve çift duyarlıklı sayısal değerler ise kesirli sayılardır. Çift duyarlıklı sayılar, adından da anlaşılabileceği gibi, tek duyarlıklı sayılara oranla iki kat daha hassas bir değerlerdir. Bu iki veri türü büyük sayısal değerlerin ifade edilmesinde kullanılır.



DEĞİŞKEN VERİ TÜRÜNÜN BİLDİRİMİ


C programı içinde kullanılacak bir değişkenin veri türünü bildirmek için aşağıdaki şekilde bir tanım yapılır.


veri_türü değişken_adı;

Örneğin, C programı içinde sayma işlemlerini yerine getirmek için sayaç isimli bir değişkenin kullanılması gerektiğini varsayalım. Bu değişken aşağıdaki şekilde bildirilir.


int sayaç;


Yapılan bu bildirime göre, sayaç isimli değişken program içinde tamsayı değerler içerecektir. Bildirim satırları da aynen diğer C deyimleri gibi (;) işareti ile son bulmalıdır. Örnek:

#include<stdio.h>
main()
{
int i;
for(i=1;i<50;i++)
printf("%d",i)
}





DEĞİŞKENLERE BAŞLANGIÇ DEĞERİ ATAMA


Bir değişkene programın içinde herhangi bir yerde belirli bir değer atayarak içeriğini değiştirmek mümkündür. Ancak çoğu uygulamada, değişkenin veri türü daha başlangıçta belirlenirken, bir değere de sahip olması istenir. Aşağıdaki örneği inceleyiniz.



#include<stdio.h>
main()
{
int enaz=10;
int encok=100;

...
}

Blok içinde enaz ve encok isimli iki adet değişken tanımlanmıştır. Bunların her ikisi de int sözcüğü kullanılarak tanımlandığı için birer tamsayıdır. Veri türü tanımlarının yapıldığı satırlar üzerinde enaz değişkenine 10 değerinin, ençok değişkenine ise 100 değerinin yerleştirildiği görülmektedir.


DEĞİŞKEN TÜRLERİ


C programları içinde farklı amaçlara yönelik değişken tanımları yapılabilir. Değişken türlerini Aşağıdaki şekilde sıralayabiliriz.










Yerel Değişkenler,küresel değişkenler.extern değişkenler,static değişkenler,auto değişkenler,register değişkenler


Yerel Değişkenler

Değişkenler için veri türü bildirimleri fonksiyonların neresinde yapılacaktır? Bu sorunun yanıtını şöyle verebiliriz: Değişken veri türü bildirimleri bir fonksiyonun içinde yada dışında yapılabilir.
Veri türünün fonksiyon içindeki veya dışındaki bildirimi farklı sonuçlara neden olacaktır. Çünkü, fonksiyon içinde bildirimi yapılan bir değişken, sadece o fonksiyon için geçerlidir.


Yerel değişkenler, program yürütüldüğünde aktif hale geçerek kendisi için ayrılan bellek alanlarını kullanır. Ancak yer aldıkları blok sona erdiğinde bu bellek alanları iptal olur ve değişken içeriği tamamen yok olur. Aynı blok daha sonra tekrar başlasa bile, yerel değişkenler eski değerlerini alamaz.
Program içinde birden fazla fonksiyon varsa, sadece tanımlandığı fonksiyonda geçerli olabilecek değişkenlere yerel değişken (local

variable adı verilir.
#include<stdio.h>
int i=5;
main()
{
int i=5;
printf("sayi degeri 1:%d\\n",i);
fonk1();
}

fonk1()
{
int i;
printf("sayi degeri 2:%d",i);
}



Main() içindeki i değişkeninin değeri fonk1() içinde geçerli

değildir.
Yukarıdaki C proğramını göz önüne alalım.Burada iki adet fonksiyn yer almaktadır.Birinci main() fonksiyonu içinde bir i değişkeni tanımlanmıştır.Bu fonksiyon içinde fonk1() isimli başka bir fonksiyon çağırılmaktadır.Söz konusu fonk1() fonksiyonu da i&#8217;nin değerini görüntüleyecektir.


Küresel Değişkenler
Eğer bir değişkenin program içindeki tüm fonksiyonlar için geçerli olması söz konusu ise, bu kez fonksiyonların dışında bir yerde bildirimi yapılır. Yandaki şekil üzerinde gösterildiği biçimde durum değişkeni tanımlanacak olursa, bu tanım sadece main() fonksiyonunda değil, program içindeki tüm fonksiyonlar için geçerli olacaktır. Bu tür değişkenlere küresel değişken (global variable) adı verilir.


Extern Değişkenler
Küresel değişkenlerin içerdiği değerlerin, programın sonuna kadar tüm fonksiyonları kapsayacak biçimde geçerli olduğunu biliyoruz. Bazı durumlarda bir program dosyası içinde tanımlanan küresel değişkenlerin, bir başka programda da geçerli olması istenilebilir. Böyle durumlarda extern değişkenler kullanılır.


Static Değişkenler

Bir değişken, yerel değişken olarak tanımlanmış ise, bu değişkenin yer aldığı fonksiyonun yürütülmesi sona erdiğinde değeri yok oluyordu. Bu durumu önleyerek, değişken değerinin sadece ilgili fonksiyon içinde değil, tüm program boyunca geçerli olması sağlanabilir. Böyle bir amaca ulaşmak için static değişkenler tanımlanır.
Örneğin, derece isimli değişken değerinin, fonksiyonun çalışması ardından yok olmasını istemediğimizi varsayalım. Bu durumda aşağıda belirtilen tanım yapılır.


main()
{
static int derece;

...
}



Yukarıda yapılan tanımlar, static ile küresel değişkenlerin birbirine çok benzediğini göstermektedir. Burada şu farka dikkat etmek gerekiyor: static değişkenler, fonksiyonun yürütülmesi sonunda değerini kaybetmez; ancak bu değer diğer fonksiyonlar tarafından da kullanılamaz. Aynı fonksiyon yeniden yürütüldüğünde, daha önceki değerin kullanılmasını sağlar. O halde derece isimli değişkenin değeri, fonksiyon yeniden yürütüldüğünde, önceki değer göz önüne alınarak işlemlere devam edilir.


Register Değişkenler

Önceki sayfalarda incelediğimiz değişkenlerin tümü bellek üzerindeki alanları kullanır. Bazı uygulamalarda, değişkenlere çok daha hızlı biçimde erişmek söz konusu olabilir. Böyle durumlarda, register değişkenleri tanımlanarak bellek alanları yerine, makinenin hızlı bellek yazmaçları kullanılabilir. Ancak bu alanların miktarı sınırlı olduğundan, fazla sayıda register değişken tanımlanırsa amacına ulaşmaz. Derleyici fazla bulduklarını normal bellek alanlarına yerleştirir.


main()
register int k;
{
register int i;
...
}




Ders 3












DEĞİŞMEZLER

Değişmez yada bir başka deyişle sabit, değeri değişmeyen program bileşenleridir. C programlarında yanda belirtilen veri türlerine sahip değişmezler yer alabilir.

Bir değişmez C programı içinde const sözcüğü ile tanımlanır. Bu sözcük aşağıdaki şekilde kullanılmaktadır:
const sabit_adı=değeri
Program içinde tamsayıları belirtmek için int, karakterler için char ve kayan noktalı değerler içeren değişmezleri tanımlamak için float sözcüğü kullanılır.


BASİT VERİ GİRİŞ VE ÇIKIŞLARI


#include<stdio.h>
Bir C programı içinde değişkenlere değerler atayarak, bu değerler üzerinde çeşitli işlemler yapılabilir. Ancak bu tür veriler, program hazırlanırken program içine gömülen değerlerdir.
Programın yürütülmesi, yanı çalıştırılması esnasında da programa veri aktarmak gerekebilecektir. Bu amaca uygun C fonksiyonları bulunmaktadır. C&#8217;de veri girişleri ve çıkışları deyimler aracılığıyla değil, kitaplık fonksiyonları aracılığıyla yerine getirilir. O halde bu tip giriş ve çıkışlarda, C programına yandaki satırın eklenmesi gerekmektedir. Bilgisayarın standart giriş birimi klavye, çıkış birimi ise ekran olarak kabul edilmektedir.


İŞLEÇLER
Tüm programlama dillerinde, aritmetik işlemler başta olmak üzere, büyüklüklerin karşılaştırılması ve mantıksal karşılaştırmaların yapılmasını sağlamak için işleç (operatör) adı verilen simgelere başvurulur. C programlarında en çok yanda belirtilen işleçler kullanılmaktadır.

ARİTMETİK İŞLEÇLER
cwexpl.gif

Toplama, çıkarma, çarpma ve bölme işlemlerini yapmaya yönelik işleçler aritmetik işleçler olarak bilinir. Bu işleçler belirli bir sıraya göre işlem görürler. Aşağıdaki tablo üzerinde aritmetik işleçleri tanımlıyoruz.


Artırma ve Azaltma İşleçleri

C&#8217;de (++) artırma ve (--) azaltma işleçlerinin özel bir önemi vardır. (++) işleci yanındaki değişkenin otomatik olarak bir artmasını sağlar. (--) ise bu işlemin tersini gerçeklestirerek, yanındaki değişkenin değerini bir azaltır. Bu işleçler değişkenin önünde yada arkasında yer alabilir. Bu durumda anlamı değişir.
cwe.gif


Aritmetik İşleçlerin Atama İşleciyle Birlikte Kullanımı

Artırma ve azaltma işleçleri tek başlarına kullanıldığında, ilgili değişkenin değeri bir artıyor veya azalıyordu. Bu işleçler atama deyimi ile birlikte kullanıldığında, değişkenin önünde yada arkasında olması durumuna göre farklı sonuçlara neden olmaktadır. Örneğin,
a=sayac++;
deyimi söyle çalışacaktır: Önce sayac isimli değiskenin değeri a değişkeni içine atanacak, ardından sayac &#8217;ın değeri 1 artacaktır. Örneğin sayac değişkeninin değeri 5 ise, bu işlem sonucunda a &#8217;nın da değeri 5 olacaktır. Ancak sayac değişkeninin değeri 6 olacaktır. Buna karşılık,
a=++sayac;
biçimindeki bir tanım farklı bir sonuç yaratacaktır. Bu durumda sayac değişkeninin değeri 1 artırılır ve bulunan değer a değişkenine aktarılır. Söz konusu sayac değiskeninin değeri 5 ise, bu atama sonucunda a &#8217;nın değeri 6 olacaktır.
fsffsff.gif

KARŞILAŞTIRMA İŞLEÇLERİ

Bu işleçler iki sayısal değeri yada iki karakteri karşılaştırmak amacıyla kullanılır. Söz konusu bu işleçler çoğunlukla program içindeki karşılaştırma deyimleri ile birlikte kullanılır. Karşılaştırma işleçlerini yandaki tablo üzerinde sunuyoruz.
İki değerin karşılaştırılması amacıyla if deyimi kullanıllır. Bu deyimin ne anlama geldiğini sonraki bölümde ayrıntılı olarak ele alarak inceleyeceğiz. Bu aşamada sadece şunu söyleyebiliriz: Bir değeri bir başka değerle karşılaştırmak için if deyimi kullanılır. Eğer karşılaştırmanın sonucu doğru ise bu deyimin ardından gelen satır işlem görür. Eğer bu koşul doğru değil ise else deyimi ardından gelen satır işlem görecektir.
asdsddsdsds.gif

mmmmx.gif



MANTIKSAL İŞLEÇLER

Mantıksal işleçler, iki veya daha fazla sayıdaki koşulun birlikte

sınanması amacıyla kullanılırlar. Bu işleçleri aşağıdaki tablo üzerinde veriyoruz:
hhhhhr.gif

uuuuf.gif



Kaynak C-w
 

erenberk

Rektör
Katılım
10 Mayıs 2010
Mesajlar
10,637
Reaksiyon puanı
101
Puanları
48
eline sağlık çok faydalı bilgiler var, paylaşım için teşekkürler.
 

0ReiS0

Dekan
Emektar
Katılım
8 Temmuz 2008
Mesajlar
5,666
Reaksiyon puanı
91
Puanları
48
eline sağlık çok faydalı bilgiler var, paylaşım için teşekkürler.


Bugün Kollarım Parmaklarım Yoruldu Yarın İnşallah bi Çok Yararlı Bilgiyi Forumda Paylaşcam Yorumunuz İçin Tşk Ederim.
 
Üst