Temel C dokumanları 1 (Giriş)
Evet C derslerinin ilk dokumanı. Öncelikle C programları yazabilmek için gerekli aletleri temin edelim. Bir adet notpad ve bir C compiler (yada bir linux makine, shell). Pek de bir şey gerekmiyormuş ne güzel. Compiler olarak miracle C, borland yada visual C compilerı öneririm. Compilerın nasıl kullanıldığına sonra değineceğiz.
Çok teorik girişler yapılabilir ama ben pratikten girecem biraz. Direk bir program yazıyorum ve üzerinde temel açıklamaları yapıyorum. Kod yazmaya başlamadan önce belirteyim. C de bir satırda // işaretlerinden sonra yazılanlar kod olarak kale alınmaz. Dokumanlarımızda kodları acıklama amaçlı olarak // işaretleri kullanılacaktır:
#include<stdio.h> // 1.satır
main() // 2.satır
{ // 3. satır
printf("Holey ilk programimi compile ettim"); // 4. satır
return 0; // 5. satır
} // 6. satır
Bu programı compile eder çalıştırırsanız, Holey ilk programımı compile ettim diye bir yazı verecek ekrana. Simdi bu kodları inceleyelim mantığını öğrenelim. 1. satırda #include<stdio.h> yazıyor. Bunu her programımızın başına yazacaz. Bu komut, compiler'a programımızda kullanacağımız library (kutuphane) dosyalarını gösterir. stdio.h bir kütüphane dosyasıdır. İçinde girdi ve çıktıları yöneten fonksiyonların komut bilgisini tutar."stdio" nun acılımı "standart input output" dur standartın üc harfi, input ve outputun ilk harfleri: stdio.h
sonundaki .h da dosyanın uzantısıdır.C de kütüphane dosyaları hep .h uzantılı olur.Her compiler'la beraber lib klasoru altında hazır vardır bu kütüphane dosyaları. input girdi output da cıktı anlamına gelir. Program ekranımıza bir yazı veriyorsa bu bir outputtur. Program çalışınca durup bir girdi bekliyorsa bu bir inputtur. 4.satırda yazdığımız printf bir output komutudur. Ekrana bilgi verir.
Eğer biz programın başına #include<stdio.h> yazmazsak compiler bu output komutunu tanımaz. Çünkü printf in kullanımı stdio.h dosyasının içinde yazılıdır. ilk satırın mantığı anlaşılmıştır artık sanırım.
Gelelim 2.satıra burada yazan main() bir fonksiyondur. Programımızın ana fonksiyonu. Tüm programın yapacağı iş bu fonksiyonun içinde anlatılır compiler'a. C de fonksiyonlar ismi, yanında açılan parantezler, ve içindekileri belirten { } kısımlarından oluşur.
main()
{
}
seklinde. Burdaki { } lar fonksiyonun içeriğini ve sınırlarını belirler. main fonksiyonun ismidir.main ismi compiler tarafından ana kısım olarak tanınır. Her programda bulunması şarttır. () parantezler ise fonksiyonun bi girdi alıp almadığını gösterir. Şimdilik biz main fonksiyonunu bir girdi almadan kullanıyoruz bu yüzden parantezlerin içi boş. Fonksiyonları sonraki dokümanlarda geniş bir şekilde anlatacam.
4.satırda printf komutunun kullanımı görülmektedir.input ve output komutları sonra detaylı bir şekilde anlatılacak.
5.satırda return fonksiyonun çıktısının ne olacağını belirler. Biz ana fonksiyonumuzun bir çıktı vermesini şu an istemiyoruz.
Zaten printf komutu ile çıktımızı aldık. return 0; diyerek compiler'a main fonksiyonumun baska çıktısı yoktur diyoruz. Bu satırı yazmak da şart değildir. Ama bazı compiler'lar sorun çıkarabilir diye ekledik bu komutu da.
Dikkat edilmesi gereken bir şey de C de her komuttan sonra noktalı virgül ( kullanılmasıdır.Bu, cümlelerden sonra nokta koymak gibidir.
Gelelim compile etme işine. Programımızı bir notpad de yazdıktan sonra bunu mesela "ilkprogramim.c" seklinde uzantısı .c olacak şekilde kaydediyoruz. Sonra shell kullanıyorsak "gcc ilkprogramım.c" komutu ile compile ediyoruz. Bulunduğumuz klasörde a.out diye bir çalıştırılabilir dosya oluşacaktır. ./a.out yazarsanız program çalışır. exploit derleyenler bilirler Eğer windows'da bir compiler kullanıyorsak. Compiler'ın bulunduğu klasöre ilkprogramim.c yi atacaz ve compiler'ımızın kullanımına göre mesela benim kullandığım borland için "bcc32 ilkprogramım.c" yazacaz komut isteminde.(ama komut isteminde compilerın bulundugu klasore gelmemiz lazım once). Sonra ilkprogramım.obj diye bir dosya oluşturacak compiler. Son adım olarak "make ilkprogramım.obj" yazarsak ilkprogramım.exe diye bir çalıştırılabilir dosya oluşacak. Artık ilkprogramım.
exe yazarak programı calıstırabiliriz.
Temel C Dokümanları 2 (Değişkenler ve Operatörler)
İlk dokümanda bir C programın ana yapısının nasıl olduğunu ve mantığını öğrendik.
Bu dokümanda C de en önemli olan ve ilk öğrenilmesi gereken değişkenler ve operatörler üzerine yazacam.
Önce değişken nedir niye bize lazımdır onu bir anlatayım...
Lise matematiğinden fonksiyonları bilirsiniz. Henüz liseye geçmemiş olan kardeşlerimiz de bu yazıyı okuyor olabilir tabi
F(x)=x+3 diye bir fonksiyonu düşünelim. Bu fonksiyon bize şunu ifade eder: Ben fonksiyona bir sayı verdiğim zaman fonksiyon o sayıya 3 ekleyip bana geri verir. Yani fonksiyonun yaptığı iş aldığı sayıyı 3 ile toplamaktır. Böyle bir sistemi ifade edebilmek için, fonksiyonun adını ve fonksiyonun yaptığı isi göstermesi icin bir değişken kullanmak zorundayız.
Bu örnekte değişken "x" dir. Biz bu "x" yerine ".. uot; yazsaydık ( F(a)=a+3 seklinde ) bir şey değişmezdi. Amaç fonksiyonun yaptığı işi anlatmak. Yani adı farketmez ama bir değişken kullanmalıyız ki yapılan işi tarif edebilelim.
Programlamada da mantık aynıdır. Programın yaptığı işi compiler'a anlatabilmemiz için değişkenler kullanmak zorundayız.
C'de de aynı x veya a gibi değişkenler kullnıcaz. Ama C değişkenin ne tür bir değişken olduğunu bilmek ister. Ne türden kastım değişkenin ne tür bir şeyi ifade edeceğidir. Mesela bir tamsayı mı yada bir harf mi yada virgüllü bir sayımı ? F(x)=x+3 gibi bir fonksiyona 'A' diye bir harf verirseniz A+3 diye bir şey saçma olur. Böyle karışıklıklar olmaması için C de değişken türleri vardır.
En temel değişken türleri:
int : integer yani tam sayı demek
double : virgüllü sayı
float : bu da bi çeşit virgüllü sayı ama kullanımı biraz farklı.
char : character yani harf demek.
Şimdi gelelim bu değişken türlerinin kullanımına. C de bir değişken kullanmadan önce tanıtılır. Tanıtma işlemini de bu değişken türleri ile yaparız. Mesela x diye bir değişken kullanacaksak ve bu değişkeni tam sayılar için kullanıyorsak:
int x;
seklinde bir satır yazmamız lazım kodumuza. Bu şekilde ben x diye bir değişken kullanıcam ve türü tam sayıdır demiş oluyoruz compiler'a.
Değişken belirlemeyi öğrendiğimize göre simdi değişkenlerin kullanımına geçebiliriz. Değişkenler operatorlerle kullanılır.
Nedir bu operatorler ?
Çeşit, çeşit operator var ama ben bu dokumanda matematiksel operatorlerden bahsedecem:
= bir değişkene değer atamaya yarar yada bir değişkeni başka bir değişkene eşitler.
+ : toplama
- : çıkarma
/ : bölme
* : çarpma
% :bölme işleminden kalanı verir.
Başka operatorler de var ama onlara sonra değinecez. Yavas yavas
Değişkenleri ve operatorleri oğrendik. Simdi de örnek bir program yapıp kullanımlarını örğenelim:
#include <stdio.h> //1.satır
//2.satır
main() //3. satır
{ //4.satır
int x; // 5.satır
int y; // 6.satır
scanf("%d",&x); // 7.satır
y=x+3; // 8.satır
printf("%d",y); //9.satır
return 0;
}
Bu program F(x)=x+3 fonksiyonunu temsil eden bir program oldu. Program çalışınca sizden bir input isteyecek.Girdiğiniz inputa 3 ekleyip ekrana verecek.
Şimdi satır, satır bu programı inceleyelim:
İlk satırların mantığını geçen dokumanda anlatmıştık zaten. 5.satırdan başlıyorum. 5.satırda x diye bir değişken belirleniyor int komutu ile. Ve x in int türünde yani tamsayı taşıyacak olan bir değişken olduğu anlatılıyor. 6.satırda aynı şekilde y diye bir tam sayı değişkeni belirleniyor.Fakat daha bu değişkenlere bir değer atanmadı. 7.satırda şimdiye kadar hiç anlatılmamış bir fonksiyon var: scanf . printf in ekrana output vermek için kullanıldığını anlatmıştık. scanf de input almak için kullanılıyor. scanf ve printf gecen örneğimizde olduğundan farklı bir şekilde kullanılmış bu sefer. parantez icinde %d ve & gibi daha öğrenmediğimiz karakterler var. Şimdilik bunların mantığını konuşmiycaz. Bunların mantığı bir sonraki derste anlatılacak. Şimdilik scanf ve printf in bu kullanımlarını ezberlemenizi istiyorum. sacanf de ,&x yazan kısım x değişkenine kullanıcının girdiği inputu atamasını söylüyor. Program çalışırken 7.satır execute edildikten(isleme sokulduktan) sonra artık x değişkeni ekrana yazdığımız sayıya eşit olacak.Yani x e bir değer atanmış olacak. 8.satırda y değişkenine x+3 un değeri atanıyor. Burda = ve + operatörlerini kullanmış oluyoruz. Mesela biz program çalıştığında ekrana 5 yazdıysak x, 5 oluyor y de 5+3 yani 8 olmuş oluyor. 9.satırda da printf in icinde yazan ,y kısmı ekrana y değişkeninin taşıdığı değeri vermesini sağlıyor. Yani bizim ilk yazdığımızın 3 fazlası.Burada printf in içinde değişkenden önce & işaretini yazmadığımıza dikkat edin. & işareti scanf i kullanırken değiskenin önüne gelir. Bunu şimdilik bir kural olarak oğrenin ve scanf ile printf in icine yazdığımız formatı ezberleyin. Bir sonraki derste scanf ve printf in kullanım şekillerini anlatacam.
Bu derste oğreneceklerimiz bu kadar. Gelelim ödeve
Öncelikle bu yazdıgımız programı compile edip calıstırın.programı tekrar, tekrar calıstırıp her seferinde ekrana değişik bir sayı yazıp enter a basın. Bakalım her seferinde 3 fazlasını veriyormu... Bir de tam sayı yerine virgüllü sayı veya harf yazıp enter a basın bakalım ne oluyor ?
Evet C derslerinin ilk dokumanı. Öncelikle C programları yazabilmek için gerekli aletleri temin edelim. Bir adet notpad ve bir C compiler (yada bir linux makine, shell). Pek de bir şey gerekmiyormuş ne güzel. Compiler olarak miracle C, borland yada visual C compilerı öneririm. Compilerın nasıl kullanıldığına sonra değineceğiz.
Çok teorik girişler yapılabilir ama ben pratikten girecem biraz. Direk bir program yazıyorum ve üzerinde temel açıklamaları yapıyorum. Kod yazmaya başlamadan önce belirteyim. C de bir satırda // işaretlerinden sonra yazılanlar kod olarak kale alınmaz. Dokumanlarımızda kodları acıklama amaçlı olarak // işaretleri kullanılacaktır:
#include<stdio.h> // 1.satır
main() // 2.satır
{ // 3. satır
printf("Holey ilk programimi compile ettim"); // 4. satır
return 0; // 5. satır
} // 6. satır
Bu programı compile eder çalıştırırsanız, Holey ilk programımı compile ettim diye bir yazı verecek ekrana. Simdi bu kodları inceleyelim mantığını öğrenelim. 1. satırda #include<stdio.h> yazıyor. Bunu her programımızın başına yazacaz. Bu komut, compiler'a programımızda kullanacağımız library (kutuphane) dosyalarını gösterir. stdio.h bir kütüphane dosyasıdır. İçinde girdi ve çıktıları yöneten fonksiyonların komut bilgisini tutar."stdio" nun acılımı "standart input output" dur standartın üc harfi, input ve outputun ilk harfleri: stdio.h
sonundaki .h da dosyanın uzantısıdır.C de kütüphane dosyaları hep .h uzantılı olur.Her compiler'la beraber lib klasoru altında hazır vardır bu kütüphane dosyaları. input girdi output da cıktı anlamına gelir. Program ekranımıza bir yazı veriyorsa bu bir outputtur. Program çalışınca durup bir girdi bekliyorsa bu bir inputtur. 4.satırda yazdığımız printf bir output komutudur. Ekrana bilgi verir.
Eğer biz programın başına #include<stdio.h> yazmazsak compiler bu output komutunu tanımaz. Çünkü printf in kullanımı stdio.h dosyasının içinde yazılıdır. ilk satırın mantığı anlaşılmıştır artık sanırım.
Gelelim 2.satıra burada yazan main() bir fonksiyondur. Programımızın ana fonksiyonu. Tüm programın yapacağı iş bu fonksiyonun içinde anlatılır compiler'a. C de fonksiyonlar ismi, yanında açılan parantezler, ve içindekileri belirten { } kısımlarından oluşur.
main()
{
}
seklinde. Burdaki { } lar fonksiyonun içeriğini ve sınırlarını belirler. main fonksiyonun ismidir.main ismi compiler tarafından ana kısım olarak tanınır. Her programda bulunması şarttır. () parantezler ise fonksiyonun bi girdi alıp almadığını gösterir. Şimdilik biz main fonksiyonunu bir girdi almadan kullanıyoruz bu yüzden parantezlerin içi boş. Fonksiyonları sonraki dokümanlarda geniş bir şekilde anlatacam.
4.satırda printf komutunun kullanımı görülmektedir.input ve output komutları sonra detaylı bir şekilde anlatılacak.
5.satırda return fonksiyonun çıktısının ne olacağını belirler. Biz ana fonksiyonumuzun bir çıktı vermesini şu an istemiyoruz.
Zaten printf komutu ile çıktımızı aldık. return 0; diyerek compiler'a main fonksiyonumun baska çıktısı yoktur diyoruz. Bu satırı yazmak da şart değildir. Ama bazı compiler'lar sorun çıkarabilir diye ekledik bu komutu da.
Dikkat edilmesi gereken bir şey de C de her komuttan sonra noktalı virgül ( kullanılmasıdır.Bu, cümlelerden sonra nokta koymak gibidir.
Gelelim compile etme işine. Programımızı bir notpad de yazdıktan sonra bunu mesela "ilkprogramim.c" seklinde uzantısı .c olacak şekilde kaydediyoruz. Sonra shell kullanıyorsak "gcc ilkprogramım.c" komutu ile compile ediyoruz. Bulunduğumuz klasörde a.out diye bir çalıştırılabilir dosya oluşacaktır. ./a.out yazarsanız program çalışır. exploit derleyenler bilirler Eğer windows'da bir compiler kullanıyorsak. Compiler'ın bulunduğu klasöre ilkprogramim.c yi atacaz ve compiler'ımızın kullanımına göre mesela benim kullandığım borland için "bcc32 ilkprogramım.c" yazacaz komut isteminde.(ama komut isteminde compilerın bulundugu klasore gelmemiz lazım once). Sonra ilkprogramım.obj diye bir dosya oluşturacak compiler. Son adım olarak "make ilkprogramım.obj" yazarsak ilkprogramım.exe diye bir çalıştırılabilir dosya oluşacak. Artık ilkprogramım.
exe yazarak programı calıstırabiliriz.
Temel C Dokümanları 2 (Değişkenler ve Operatörler)
İlk dokümanda bir C programın ana yapısının nasıl olduğunu ve mantığını öğrendik.
Bu dokümanda C de en önemli olan ve ilk öğrenilmesi gereken değişkenler ve operatörler üzerine yazacam.
Önce değişken nedir niye bize lazımdır onu bir anlatayım...
Lise matematiğinden fonksiyonları bilirsiniz. Henüz liseye geçmemiş olan kardeşlerimiz de bu yazıyı okuyor olabilir tabi
F(x)=x+3 diye bir fonksiyonu düşünelim. Bu fonksiyon bize şunu ifade eder: Ben fonksiyona bir sayı verdiğim zaman fonksiyon o sayıya 3 ekleyip bana geri verir. Yani fonksiyonun yaptığı iş aldığı sayıyı 3 ile toplamaktır. Böyle bir sistemi ifade edebilmek için, fonksiyonun adını ve fonksiyonun yaptığı isi göstermesi icin bir değişken kullanmak zorundayız.
Bu örnekte değişken "x" dir. Biz bu "x" yerine ".. uot; yazsaydık ( F(a)=a+3 seklinde ) bir şey değişmezdi. Amaç fonksiyonun yaptığı işi anlatmak. Yani adı farketmez ama bir değişken kullanmalıyız ki yapılan işi tarif edebilelim.
Programlamada da mantık aynıdır. Programın yaptığı işi compiler'a anlatabilmemiz için değişkenler kullanmak zorundayız.
C'de de aynı x veya a gibi değişkenler kullnıcaz. Ama C değişkenin ne tür bir değişken olduğunu bilmek ister. Ne türden kastım değişkenin ne tür bir şeyi ifade edeceğidir. Mesela bir tamsayı mı yada bir harf mi yada virgüllü bir sayımı ? F(x)=x+3 gibi bir fonksiyona 'A' diye bir harf verirseniz A+3 diye bir şey saçma olur. Böyle karışıklıklar olmaması için C de değişken türleri vardır.
En temel değişken türleri:
int : integer yani tam sayı demek
double : virgüllü sayı
float : bu da bi çeşit virgüllü sayı ama kullanımı biraz farklı.
char : character yani harf demek.
Şimdi gelelim bu değişken türlerinin kullanımına. C de bir değişken kullanmadan önce tanıtılır. Tanıtma işlemini de bu değişken türleri ile yaparız. Mesela x diye bir değişken kullanacaksak ve bu değişkeni tam sayılar için kullanıyorsak:
int x;
seklinde bir satır yazmamız lazım kodumuza. Bu şekilde ben x diye bir değişken kullanıcam ve türü tam sayıdır demiş oluyoruz compiler'a.
Değişken belirlemeyi öğrendiğimize göre simdi değişkenlerin kullanımına geçebiliriz. Değişkenler operatorlerle kullanılır.
Nedir bu operatorler ?
Çeşit, çeşit operator var ama ben bu dokumanda matematiksel operatorlerden bahsedecem:
= bir değişkene değer atamaya yarar yada bir değişkeni başka bir değişkene eşitler.
+ : toplama
- : çıkarma
/ : bölme
* : çarpma
% :bölme işleminden kalanı verir.
Başka operatorler de var ama onlara sonra değinecez. Yavas yavas
Değişkenleri ve operatorleri oğrendik. Simdi de örnek bir program yapıp kullanımlarını örğenelim:
#include <stdio.h> //1.satır
//2.satır
main() //3. satır
{ //4.satır
int x; // 5.satır
int y; // 6.satır
scanf("%d",&x); // 7.satır
y=x+3; // 8.satır
printf("%d",y); //9.satır
return 0;
}
Bu program F(x)=x+3 fonksiyonunu temsil eden bir program oldu. Program çalışınca sizden bir input isteyecek.Girdiğiniz inputa 3 ekleyip ekrana verecek.
Şimdi satır, satır bu programı inceleyelim:
İlk satırların mantığını geçen dokumanda anlatmıştık zaten. 5.satırdan başlıyorum. 5.satırda x diye bir değişken belirleniyor int komutu ile. Ve x in int türünde yani tamsayı taşıyacak olan bir değişken olduğu anlatılıyor. 6.satırda aynı şekilde y diye bir tam sayı değişkeni belirleniyor.Fakat daha bu değişkenlere bir değer atanmadı. 7.satırda şimdiye kadar hiç anlatılmamış bir fonksiyon var: scanf . printf in ekrana output vermek için kullanıldığını anlatmıştık. scanf de input almak için kullanılıyor. scanf ve printf gecen örneğimizde olduğundan farklı bir şekilde kullanılmış bu sefer. parantez icinde %d ve & gibi daha öğrenmediğimiz karakterler var. Şimdilik bunların mantığını konuşmiycaz. Bunların mantığı bir sonraki derste anlatılacak. Şimdilik scanf ve printf in bu kullanımlarını ezberlemenizi istiyorum. sacanf de ,&x yazan kısım x değişkenine kullanıcının girdiği inputu atamasını söylüyor. Program çalışırken 7.satır execute edildikten(isleme sokulduktan) sonra artık x değişkeni ekrana yazdığımız sayıya eşit olacak.Yani x e bir değer atanmış olacak. 8.satırda y değişkenine x+3 un değeri atanıyor. Burda = ve + operatörlerini kullanmış oluyoruz. Mesela biz program çalıştığında ekrana 5 yazdıysak x, 5 oluyor y de 5+3 yani 8 olmuş oluyor. 9.satırda da printf in icinde yazan ,y kısmı ekrana y değişkeninin taşıdığı değeri vermesini sağlıyor. Yani bizim ilk yazdığımızın 3 fazlası.Burada printf in içinde değişkenden önce & işaretini yazmadığımıza dikkat edin. & işareti scanf i kullanırken değiskenin önüne gelir. Bunu şimdilik bir kural olarak oğrenin ve scanf ile printf in icine yazdığımız formatı ezberleyin. Bir sonraki derste scanf ve printf in kullanım şekillerini anlatacam.
Bu derste oğreneceklerimiz bu kadar. Gelelim ödeve
Öncelikle bu yazdıgımız programı compile edip calıstırın.programı tekrar, tekrar calıstırıp her seferinde ekrana değişik bir sayı yazıp enter a basın. Bakalım her seferinde 3 fazlasını veriyormu... Bir de tam sayı yerine virgüllü sayı veya harf yazıp enter a basın bakalım ne oluyor ?
Son düzenleme:


