C programlama kursu Dev konu..

  • Konbuyu başlatan Konbuyu başlatan Z1rT
  • Başlangıç tarihi Başlangıç tarihi
9
EXE RANK

Z1rT

Fexe Kullanıcısı
Puanları 0
Çözümler 0
Katılım
26 Kas 2009
Mesajlar
9,190
Tepkime puanı
0
Puanları
0
Yaş
33
Web sitesi
www.netbilgini.net
Z1rT
Dersleri hazırlarken kaynak ve rehber olarak Deitel & Deitel'in C ve C++ adlı kitabını kullanıyorum. İsteyenler [B]buradan[/B] kitap hakkında daha fazla bilgiye sahip olabilir... Dersler hemen hemen bu kitaba paralel ilerleyecek bu yüzden
Kod:
                          [SIZE=5][COLOR=Red][B]- Ayrıntılı İndex -[/B][/COLOR][/SIZE]

  [B]C ile Programlamaya Giriş[/B]
[LIST]
[*]C      ile basit programlar yazabilmek
[*]Basit      giriş/çıkış ifadelerini kullanabilmek
[*]Temel      veri tiplerini tanımak
[*]Bilgisayar      hafızasını kullanmayı anlamak
[*]Aritmetik      operatörleri kullanabilmek
[*]Aritmetik      operatörlerin önceliklerini anlamak
[*]Basit      karar verme ifadeleri yazabilmek
[/LIST]
[B]C'de Yapısal Program Geliştirme[/B]
[LIST]
[*]Temel      problem çözme tekniklerini anlamak
[*]Yukarıdan      aşağıya adımsal iyileştirme süreciyle algoritmalar geliştirebilmek
[*]İf      ve if/else yapılarını uygun yerde kullanarak işlemleri seçebilmek
[*]While      yapısını programlarda uygulayarak, ifadeleri tekrar çalıştırabilmek
[*]Sayıcı      kontrollü döngü ve nöbnetçi kontrollü döngüleri anlamak
[*]Yapısal      programlamayı anlamak
[*]Arttırma,      azaltma ve atama işlemlerini kullanabilmek
[/LIST]
[B]C'de Program Kontrolü[/B]
[LIST]
[*]For      ve do/while döngü yapılarını kullanabilmek
[*]Switch      seçim yapısını kullanarak çoklu seçimler yapabilmek
[*]Program      kontrolünde break ve continue kullanabilmek
[*]Mantık      operatörlerini kullanabilmek
[/LIST]
[B]Fonksiyonlar[/B]
[LIST]
[*]Fonksiyon      adı verilen küçük parçalarla modüler programlar oluşturabilmeyi anlamak
[*]C      standart kütüphanesinde içinde yer alan genel matematik fonksiyonlarını      tanımak
[*]Yeni      fonksiyonlar oluşturabilmek
[*]Fonksiyonlar      arasında bilgi aktarımını sağlayan yöntemleri anlamak
[*]Rasgele      sayılar üreterek benzetim (simulation) tekniklerini tanıtmak
[*]Kendi      kendini çağırabilen fonksiyonları yazabilmek ve nasıl kullanılacaklarını anlamak
[/LIST]
[B]Diziler[/B]
[LIST]
[*]Dizi      yapısını tanıtmak
[*]Dizilerin      değerleri depolama, sıralama ve listeleri arama ile değer tablolarını      oluşturmada kullanımlarını anlamak
[*]Bir      dizinin nasıl bildirileceğini, bir diziye nasıl ilk değer  atanacağını ve      dizideki bağımsız elemanların nasıl  çağırılacaklarını anlamak
[*]Dizileri      fonksiyonlara geçirebilmek
[*]Temel      sıralama tekniklerini anlamak
[*]Çok      boyutlu dizileri bildirebilmek ve kullanabilmek
[/LIST]
[B]Göstericiler[/B]
[LIST]
[*]Göstericileri      kullanabilmek
[*]Referansa      göre çağırma ile fonksiyonlara argüman geçirmede göstericileri      kullanabilmek
[*]Göstericiler,      diziler ve stringler arasındaki yakın ilişkiyi anlamak
[*]Fonksiyonlarda      gösterici kullanımını anlamak
[*]String      dizilerini bildirmek ve kullanabilmek
[/LIST]
[B]Karakter ve Stringler[/B]
[LIST]
[*]Karakter      kütüphanesindeki (ctype) fonksiyonları kullanabilmek
[*]Standart      giriş/çıkış kütüphanesindeki (studio) string ve karakter giriş/çıkış      fonksiyonlarını kullanabilmek
[*]Genel      amaçlı kütüphanedeki (stdlib) string dönüşüm fonksiyonlarını kullanabilmek
[*]String      kütüphanesindeki (string) string işleme fonksiyonlarını kullanabilmek
[*]Yazılımın      yeniden kullanılabilirliğinde fonksiyon kütüphanelerinin gücünü anlamak
[/LIST]
[B] Biçimlendirilmiş Giriş - Çıkış[/B]
[LIST]
[*]Giriş      ve çıkış akışlarını (stream) anlamak
[*]Bütün      yazdırma biçimlendirme yeteneklerini kullanabilmek
[*]Bütün      giriş biçimlendirme yeteneklerini kullanabilmek
[/LIST]
[B]Yapılar, Birlikler, Bit İşleme ve Sayma Sabitleri[/B]
[LIST]
[*]Yapılar,      birlikler ve sayma sabitleri oluşturabilmek
[*]Yapıları      fonksiyonlara değere göre çağırma ve referansa göre çağırma ile      geçirebilmek
[*]Bir operatörleriyle      veri işleyebilmek
[*]Verileri      daha verimli bir şekilde depolayabilmek için bit alanları yaratmak
[/LIST]
[B]Dosya İşleme[/B]
[LIST]
[*]Dosyalar      yaratabilmek, dosyalara yazma ve dosyadan okuma yapabilmek, dosyaları      güncelleyebilmek
[*]Sıralı      erişimle dosya işlemeyi tanımak
[*]Rasgele      erişimle dosya işlemeyi tanımak
[/LIST]
[B]Veri Yapıları[/B]
[LIST]
[*]Veri      nesleri için dinamik hafıza tahsis etmek ve tahsis edilen alanı      boşaltabilmek
[*]Göstericiler,      kendine dönüşlü yapılar ve yineleme kullanarak bağlı veri yapıları      oluşturabilmek
[*]Bağlı      listeler, sıralar ve ikili ağaçlar oluşturabilmek ve yönetebilmek
[*]Bağlı      veri yapılarının bir çok önemli uygulamasını anlamak
[/LIST]
[B]C Önişlemcisi[/B]
[LIST]
[*]Büyük      programlar geliştirirken #include kullanabilmek
[*]#define      kullanarak makrolar ve argüman içeren makrolar yaratabilmek
[*]Koşullu      derlemeyi anlamak
[*]Koşullu      derleme esnasında hata mesajları yazdırabilmek
[*]Değimlerin      değerlerinin doğru olup olmadığını belirlemek için bildirimler (assertion)      kullanabilmek
[/LIST]
[B]İleri Düzey C komutları[/B]
[LIST]
[*]Klavye      girişini dosyadan gelecek şekilde değiştirebilmek
[*]Ekran      çıktısının dosyaya yerleştirilebilmesini sağlamak
[*]Uzunluğu      değişebilen argüman listesine sahip fonksiyonlar yazabilmek
[*]Komut      satırı argümanlarını işleyebilmek
[*]Nümerik      sabitlere belli tipler atayabilmek
[*]Geçici      dosyaları kullanabilmek
[*]Bir programda      beklenmeyen durumları işleyebilmek
[*]Diziler      için dinamik hafıza tahsisi yapabilmek
[*]Daha      önceden dinamik olarak tahsis edilmiş hafıza miktarını değiştirebilmek
[/LIST]
Programları yazarken ve derlerken Turbo C programını kullanıcaz bunun nedeni ise boyutunun ufak ve ilk aşamalarda bize yetecek bi compiler(derleyici) olmasıdır.

Aşağıdaki linklerden programı download edebilirsiniz boyutu yaklaşık 1.2 MB;


MS-DOS tabanlı bir program olduğundan dolayı kullanım açısından biraz farklılıklar ve WinXP'de çok ufak bi ayar gerektiyor. Kullanımı hakkında bilgi almak için
Kod:
[SIZE=5][COLOR=Red][B]- Turbo C Kullanım Klavuzu -[/B][/COLOR][/SIZE]

WinXP kullanan arkadaşların yazdıkları programlar çalışıp hemen  kapanıyor ve programları düzgün çalışsa bile herhangi bişi göremiyorlar.  hemen bunun çaresini yazayım daha sonrada ikinci derse geçeriz...

turbo c bi ms dos programı olduğu için faremiz bu programı kullanırken  hiç bir işimize yaramıyor... bu yüzden herşeyi klavyeden halletmek  zorundayız. şimdi programı açıp kodlarımızı yazdıktan sonra [B][COLOR=Red]ALT + C[/COLOR][/B] tuşlarına basarak [B][COLOR=Red]Compile[/COLOR][/B] menüsüne ulaşıyoruz. buradan [COLOR=Red][B]Make EXE file[/B][/COLOR] seçeneğini seçiyoruz. Aşağıdaki resimde de zaten gözüküyor...

 
 [CENTER][IMG]http://img316.imageshack.us/img316/1672/0048iy.jpg[/IMG]
[/CENTER]
        
Eğer kodu yazarken herhangi bir[B][COLOR=Red] hata yapmamışsanız[/COLOR][/B] programın derlendiğini gösteren aşağıdaki gibi bi mesaj geliyor ekrana.

[CENTER][IMG]http://img426.imageshack.us/img426/9141/0053iz.jpg[/IMG]
[/CENTER]
    
Bu mesajı herhangi bir tuşa basarak geçiyoruz. Ekrandan programımızın yerini ve adını öğreniyoruz. 

[CENTER][IMG]http://img426.imageshack.us/img426/3605/0066cf.jpg[/IMG]
[/CENTER]
      
Eğer değiştirmediyseniz programımız [B][COLOR=Red]C:\TC\[/COLOR][/B] klasörü altındaki [B][COLOR=Red]NONAME.EXE[/COLOR][/B]  olarak oluşturulmuş olacaktır. Eğer Windows XP kullanıyorsanız  programınızı çalıştırmak için extradan bir adım daha yapmamız lazım.
[B][COLOR=Red]C:\TC\[/COLOR][/B] klasörüne gidiyoruz (resimde 1  olarak işaretli) ve programımızı bulup sağ tıklıyoruz (resimde 2 olarak  işaretli), açılan menüden özellikleri seçiyoruz (resimde 3 olarak  işaretli).

[CENTER][IMG]http://img426.imageshack.us/img426/8735/0071bp.jpg[/IMG]
[/CENTER]
      
karşımıza gelen özellikler penceresinden [B][COLOR=Red]Program[/COLOR][/B] tabını seçiyoruz. Buradaki [COLOR=Red][B]Çıkışta kapat[/B][/COLOR] seçeneğinin yanındaki tiki kaldırıyoruz. Uygula tamam diyip çıkıyoruz. Aşağıdan görebilirsiniz...

[CENTER][IMG]http://img426.imageshack.us/img426/4530/0080cs.jpg[/IMG]
[/CENTER]
      
Eveeeet artık programımıza çift tıklayarak nasıl bir sonuç elde ettiğinizi görebilirsiniz. 

Daha profesyonel bir editör olan [B][COLOR=Black]Borland C++ 5.02[/COLOR][/B] kullanmak isteyenler[CODE]Yazdığımız programları daha profesyonel bir editör ve compiler olan [COLOR=black][B]x_string_x[/B][/COLOR]'in upload ettiği [B][COLOR=Red]Borland C++ 5.02[/COLOR][/B] programını kullanarak yapmak isteyenler aşağıdaki linklerden download edebilirler...

 [url][B]Part 1[/B][/url]
[url][B]Part 2[/B][/url]

Programın nasıl kurulacağını anlatan yine [COLOR=Black][B]x_string_x[/B][/COLOR]'in sadece bu kusra katılan kişiler için hazırladığı dökümanı da [B][url]buradan[/url][/B] download edebilirsiniz...

Tüm bu emekleri ve desteği için [COLOR=Black][B]x_string_x[/B][/COLOR][COLOR=Red][COLOR=Black]'e teşekkür ediyorum..[/COLOR][/COLOR]
Ayrıca ekstra kaynak isteyenler için kaos_fırtına arkadaşımızın açmış olduğu konuya da gözatmalarını öneririm
Kod:
[FONT=Comic Sans MS][B]C  KURSU BAŞLIYOR

[COLOR=Red]1. C  Dilinde Program Geliştirme ve İcra Etme[/COLOR]
-Problemin Tanımlanması
•    Probleme ilişkin veriler
•    Çözüm yöntemleri
•    Problemin çözümü sonucunda hangi bilgiler elde edilecek

[COLOR=#ff0000]2. Algoritma Belirlenmesi[/COLOR]
Algoritma belirli bir problemi çözmek için gerekli adımlar kümesi olarak tanımlanır.

[COLOR=#ff0000]Not[/COLOR]: Bir algoritma ancak bir bilgisayar programlama dilinde ifade edilebilmişse icra edilir

 Bir C programının bilgisayarda çalıştırılıp istenilen sonucun elde edilebilmesi için 3 adım gerekir.
•    Programın metnini yazılması
•    Programın derlenmesi
•    Derleyicini makine diline dönüştürdüğü programın çalıştırılması

[COLOR=#ff0000]Problem : [/COLOR]C=(F-32)/ 1,8  Fahrenheit birimi ile verilen bir sıcaklığın Celcius birimine dönüştüren bir C programı yazınız.
[COLOR=#ff0000]Hatırlatma [/COLOR]! Derleyici  /*………..*/ arasında yazan kısmı görmeyecektir.

     Alıntı:
                                                 [COLOR=#ff0000]#include “stdio.h” /* <stdio.h>  bu yazılım biçimide doğru */
main()
{
double f,c;
printf(“\n Fahrenheit Turunden Sıcaklıgı Girin…….”);
scanf(“%1f”,&f);
c=(f-32)/1.8;
printf(“Fahrenheit =%1f Celcius’tur”,f ,c);
return0;
}[/COLOR]                                 
Tabiki de size ilk bakışta zor gelmiş olabilir.Bu sadece alıştırma turları, detaylı bilgi ileride verilecektir…

[COLOR=#ff0000]3. C  Programının Genel Yapısı[/COLOR]

[COLOR=#ff0000]Örnek Problem : [/COLOR]

     Alıntı:
                                                 [COLOR=#ff0000]#include <stdio.h> /* C Başlık Kütüphanesi Olmazsa Olmazlardan*/
main()
int x,y,z;
x=5;
y=6;
z=x*y;
printf(“\nz=%d”,z);[/COLOR]                                 
     Alıntı:
                                                 [COLOR=#ff0000]Not [/COLOR]: stdio.h C  dilinini temel giriş ve çıkış fonksiyonlarının tanımlanmış olduğu bir başlık dosyasıdır.                                 
C dilinde matematiksel işlemler (logaritma ,karekök,trigonometri…) [COLOR=#ff0000]math.h[/COLOR] adlı başlık dosyası  içinde tanımlanmıştır.



[COLOR=#ff0000]conio.h[/COLOR] >>> konsol girişi için
[COLOR=#ff0000]time.h[/COLOR]   >>> Zaman Fonksiyonları için
[COLOR=#ff0000]graphics.h[/COLOR] >>> Grafik fonksiyonları için

     Alıntı:
                                                 Her  C  Programının bir başlığı bir de gövdesi vardır.
[COLOR=Red]main() 
void main()
main(int argc,char *argv[])
int main()
int main(int argc,char *argv[])
void main(int argc,char *argv[])[/COLOR]                                 
Başlık ve gövde yapıları bu gibi farklı durumlarda olabilirler.

Fonksiyon gövdesi {}  
Bir C  Programı içerisinde birden fazla blok(  {}  ) olabilir ama  dengelenmiş olması gerekir.Yani kaç tane   {    varsa o kadar da   }     olmalı.

[COLOR=#ff0000]4. Atama Deyimi[/COLOR]
Değişken = ifade  C   Dilinde = sembolü atama sembolüdür ve şu şekilde çalışır.
Sağ taraftaki ifadenin değerini hesapla ve sonucu sol tarafa ata.

[COLOR=#ff0000]Örnek [/COLOR]:  x=x+3  önce sap taraf x+3 hesaplanırdaha sonra hesaplanan yeni değer sol tarafa atanır.atama sonucunde eski değer silinir.

[COLOR=#ff0000]KURAL :[/COLOR]  Bir değişkene yeni değer atanırsa eski değeri silinir.

[COLOR=#ff0000]5. C  Dilinde  Değişkenler İsim Verme[/COLOR]
•     İsimler bir harf yada  _  sembolü ile başlamalı
•    Özel karakterler kullanılmaz (?+* vs.)
•    Büyük küçük harf ayrımı vardır.

Örnek: x2      ,      b_1x      ,      kaos_fırtına   >>>>>> Doğru Kullanım!
    2_x    ,       _+b6   >>>>>>> Yanlış Kulanım.!

Printf(“\nz=&d”,z);
\ n  Sembolü ekranda yeni bir satıra geçiş için %d ise format belirleyicisi olarak kullanılmıştır.

Problem :[url][IMG]http://img96.imageshack.us/img96/646/18cn3.jpg[/IMG][/url]

İfadesinin klavyeden girilecek a değeri için hesaplayan bir c programı yazınız.

     Alıntı:
                                                 [COLOR=Red]#include “stdio.h”
#include “ math.h”
main()
{
float a,y;
printf(“\n a degerini giriniz…..”);
scanf(“%1f”,&a);
y=pow(a+2,(1.0/3.0))/pow(a+56,(1.0/4))+a;
printf(“\ny=%f”y);
}[/COLOR]                                 
[url][IMG]http://img162.imageshack.us/img162/6610/s22zp.th.jpg[/IMG][/url]

     Alıntı:
                                                 [B][url]Programın Çıktısını görmek İçin Tıklayın(Flash Animasyon)[/url][/B]                                 

     Alıntı:
                                                 [COLOR=#ff0000]Not :[/COLOR] C  Dilinde irrasyonel ifadeler(köklü ifadeler) üssel ifadeler dönüştürülerek hesaplanır!                                 
 [url][IMG]http://img138.imageshack.us/img138/9531/23nx.jpg[/IMG][/url]  şeklinde düşünülerek C dilinde pow(a,1.0/4.0); şeklinde hesaplatılabilinir.
[COLOR=#ff0000]Pow(x,y) = xy[/COLOR]

[COLOR=#ff0000]Problem[/COLOR] : b=a2-a+5 ifadesini klavyeden girilecek bir değer için hesaplatan bir C programı yazınız…

     Alıntı:
                                                 [COLOR=#ff0000]#include<stdio.h>
#include<math.h>
main()
{
int b,a;
printf(“\n a’nın degerini giriniz……”);
scanf(“%d”,a);
b=a*a-(a+5);
printf(“\nb=%d,”b);
}[/COLOR]                                 
[url][IMG]http://img207.imageshack.us/img207/7025/s31mm.th.jpg[/IMG][/url]

     Alıntı:
                                                 [url]Ney Müziği Eşliğinde Programın Yazılışı ve Çıktısı İçin Tıklayın>>>Flash Animasyon[/url]                                 
Klavyeden girilecek olan a değeri ondalıklı alınacak olsaydı b ve a yı float veya double olarak tanımlamamız gerekirdi.

[COLOR=#ff0000]Problem[/COLOR] : Birim Kar = (Satış Fiyatı-Maliyet)
            Topam Kar = Birim Kar x Miktar

Klavyeden girilecek olan Satış Fiyatı (s) , Maliyet (ma) ve Miktar(mi)  değerlerine göre Toplam Karı (t)ve Birim Karı (b) hesaplatan bir C   programı yazınız…

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “math.h”
int main
{
float b,t,s,ma,mi;
printf(“\nSatis Fiyatını Giriniz:…..”);
scanf(“%f”,s);
printf(“\nMaliyeti Giriniz……..”);
scanf(“%f”,ma);
printf(“\n Miktarı Giriniz:…….”);
scanf(“%f”,mi);
b=(s-ma);
t=(b*mi);
printf(“\nBirim Kar=%f”,b);
printf(“\nToplam Kar=%f”,t);
}[/COLOR]                                 
Hepsi Bu Kadar ….

[COLOR=#ff0000]Problem[/COLOR] : x = (ce-bf) / (ae-bd)  ve   y = (ae-cd) / (ae-bd) klavyeden girilecek  a,b,c,d,e,f yardımı ile x ve y ’yi bulunuz ?

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “math.h”
void main()
{
int a,b,c,d,e,f,x,y;
printf(“\na değerini giriniz…..”);
scanf(“%d”.&a);
printf(“\nb değerini giriniz…..”);
scanf(“%d”.&b);
printf(“\nc değerini giriniz…..”);
scanf(“%d”.&c);
printf(“\nd değerini giriniz…..”);
scanf(“%d”.&d);
printf(“\ne değerini giriniz…..”);
scanf(“%d”.&e);
printf(“\nf değerini giriniz…..”);
scanf(“%d”.&f);
x=(c*e-b*f)/(a*e-b*d);
y=(a*e-c*d)/(a*e-b*d);
printf(“\nX’in değeri=%f,x);
printf(“\nY’in değeri=%f,y);
}[/COLOR]                                 
[COLOR=#ff0000]Problem[/COLOR] : [url][IMG]http://img138.imageshack.us/img138/6154/35ll.jpg[/IMG][/url] Bileşik faiz problemini hesaplatan bir c program yazınız.
A:Ana para  i : Faiz Yüzdesi  n : Zaman P : Ana Para+Faiz

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “math.h”
main()
{
float i,p,n,a;
printf(“\nAna Parayı Giriniz…….”);
scanf(“%f”,&a);
printf(“\nFaiz Yüzdesini Giriniz…….”);
scanf(“%f”,&i);
printf(“\Zamanı Giriniz…….”);
scanf(“%f”,&n);
p=a*pow((1+i),n);
printf(“\nDönem Sonu Ana  Para + Faiz=%f”,p);
}[/COLOR]                                 
[COLOR=#ff0000]Problem [/COLOR]: [url][IMG]http://img138.imageshack.us/img138/6924/43bh.jpg[/IMG][/url] x’in klavyeden girilecek bir değeri için y yi hesaplatan bir program yazın.

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “math.h”
int main()
{
float x,y;
printf(“\nX değerini giriniz……”);
scanf(“%f”,&x);
y=(x+sqrt(x*x+1))/log(x+1);
printf(“\nY=%f”y);
[/COLOR]                                 
     Alıntı:
                                                 Not : sqrt(x) = karekök(x)                                 


Problem : [url][IMG]http://img161.imageshack.us/img161/6603/59jw.jpg[/IMG][/url]   x’in girilen bir değeri için z’yi hesaplatan bir c programı yazınız.

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “math.h”
main()
{
float x,y,z;
printf(“\X değerini giriniz……”);
scanf(“%f”,&x);
y=pow(x, (3+x) )-pow(x, (1+sin(x)  ))/(x+5);
z=y+1/(y+1);
printf(“\y=%f”,y);
printf(“\z=%f”,z);
}[/COLOR]                                 
[COLOR=#ff0000]C Dilinde Basit Veri Yapıları[/COLOR]

İnt -- Ondalık kısmı olmayan sayı
Char -- Tamsayı ve karakter için kullanılır. 

%c karakter %d ise tamsayı için kullanılır….

Değişkenlere Başlangıç Değeri Atama

[COLOR=#ff0000]#include ”stdio.h”
main()
{
int a,b;
a=0; b=10; (a ve b’ye başlangıç değeri atanmıştır.) [/COLOR][/B]

[COLOR=Blue][SIZE=5][B]02.03.2006 Tarihli En Son Eklenen Derslerimiz[/B][/SIZE][/COLOR]

[COLOR=#ff0000][SIZE=3][B]If Deyimi[/B]
[/SIZE][/COLOR]
İf deyimi c dilinde şartlı dallanma adı verilen işlemi  gerçekleştirir.Şartlı dallanma işlemi sayesinde bir program kararlar  alma imkanına kavuşur. İf deyimi ; bir ifadenin sonucuna göre bir  komutlar dizisinin icra edilip edilemeyeceğine karar verir.

     Alıntı:
                                                 [COLOR=Red]if(ifade) deyim1;
deyim2;

İfade bir doğru ise deyim bir , yanlış ise deyim 2 icra edilir.

İf(ifade) deyim1;
else deyim2;
deyim3;[/COLOR]                                 
ifade bir doğru ise deyim bir icra edilip deyim 3 ‘e geçilir.

İf deyimi, ifade doğru ise ve deyimler grubunun icra edilmesi isteniliyorsa şu şekilde kullanılmalı.

     Alıntı:
                                                 [COLOR=#ff0000]if(ifade)
{ deyim1;
deyim2;
……
deyim_n;}
else
{
deyim_n+1;
 deyim_n+2;
 deyim_m; 
}
deyim_k;
[/COLOR]                                 
ifade doğru ise deyim grubu icra edilip deyim k ya geçilir. Yanlış ise deyim_n+1 grubu icra edilerek deyim_k ya geçilir.


[COLOR=Red]Örnek;     Alıntı:
                                                 [COLOR=#ff0000]
#include ”stdio.h”
main()
{
int a;
printf(“\nBir Tamsayı Giriniz……”);
scanf(“%d”,&a);
if(a>10)
printf(“\nGirdiğiniz sayı 10’dan Büyüktür\n”);
}[/COLOR]                                 
[/COLOR]

Yukarıdaki örnekte klavyeden girilen sayı 10 dan büyükse ekrana  “Girdiğiniz sayı 10’dan büyüktür” mesajı gelecektir.Ancak 10’dan küçük  bir sayı girilirse  herhangi bir mesaj yazmayacaktır.

Örnek2 ;
     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
main()
{
int a;
printf(“\nBir Tamsayı Giriniz……”);
scanf(“%d”,&a);
if(a>10)
printf(“\nGirdiğiniz sayı 10’dan Büyüktür\n”);
else
printf(“\nGirdiğiniz sayı 10 yada daha küçük bir sayıdır…\n”);
}
[/COLOR]                                 
Yukarıdaki örnekte klavyeden girilen sayı 10 dan büyükse ekrana  “Girdiğiniz sayı 10’dan büyüktür” mesajı gelecektir. Küçükse “Girdiğiniz  sayı 10 yada daha küçük bir sayıdır” mesajı gelecektir.

[COLOR=Cyan]Problem ;[/COLOR] Bir satış elemanının sattığı ürün miktarına göre alacağı günşlük ücret aşağıdaki gibidir.
Günlük satış miktarı 50’den az ise günlük sabit ücret 4 YTL alınarak satılan ürün başına 0,5 YTL’lik
prim eklenerek günlük ücret belirlenecektir.
Günlük satış miktarı 50 yada fazla ise günlük sabit ücret 5 YTL alınarak  satılan ürün başına da ilk 50 ürün için  0,5 YTL 50 yi aşan kısım  içinde  0,6 YTlL pirim verilerek günlük ücret belirlenecektir
Bir satıcının günlük satış miktarını bilgisayardan girildiğinde  satıcının alacağı günlük ücreti belirleyen bir C  Programı yazınız.



     Alıntı:
                                                 [COLOR=Red]#include ”stdio.h”
#include “math.h”
main()
{
int satis;
double ucret;
printf(“\Satış Miktarını Giriniz…..”);
scanf(“%d”,&satis);
if(satis<50)
ucret=4+(satis*0.5);
if(satis>=50);
ucret=5+50*0.5+(satis-50)*0.6;
printf(“\nUcret=%1f\n”,ucret);
}[/COLOR]                                 
[COLOR=Cyan]Problem ;[/COLOR] Bilgisayardan negatif olmayan  bir sayı girildiğinde karekökünü alan , negatif bir sayı girildiğinde  ise kullanıcıyı uyaran bir C programı yazınız….

     Alıntı:
                                                 [COLOR=Red]#include ”stdio.h”
#include “math.h”
main()
{
daouble sayi;
printf(“\nNegatif Olmayan Bir Sayı Giriniz”);
scanf(“%1f”,&sayi);
if(sayi<0)
printf(“\nGiriş Hatası girilen sayı negatiftir….”);
else
printf(“\nSayının karekökü=%1f\n”,sqrt(sayi));
}
[/COLOR]                                 
[COLOR=Cyan]Not:[/COLOR] Çift duyarlıklı (double) tiplerin format belirleyicisi %1f tir

Karşılaştırma İfadeleri

     Alıntı:
                                                 [COLOR=Red]<     …………. ‘den küçük
>     …………. ‘den büyük
<=  …………..  küçük veya eşit
>=  …………..  büyük veya eşit
==  …………..  ‘e eşit
!=  …………..  eşit değil
[/COLOR]                                 
[COLOR=Cyan]Not[/COLOR] İlişkisel bir ifadenin değeri doğru ise C  bunu “1” olarak yanlış ise “0“ olarak görür.

-12<0  ………. 1
0>23   ……….. 0
1==1   ……….. 1

[COLOR=Cyan]İç İçe İf Deyimleri[/COLOR]

Tek bir if deyimi iki seçenekten birinin seçilmesine olanak tanır.İç içe  if deyimi ise birinci karardan sonra ikinci,üçüncü kararların alınmasın  sağlar.

     Alıntı:
                                                 [COLOR=Red]İf(ifade1) deyim1;
else if(ifade2)
          deyim2;
else if(ifade3)
          deyim3;
……………..
else deyim_n
deyim_n+1[/COLOR]                                 
[COLOR=Cyan]Açıklama[/COLOR]; Önce ifade 1 kontrol edilir  doğru ise deyim 1 icra edilir ve deyim_n+1 ‘e geçilir.ifade 1 yanlış ise  ifade 2 kontrol edilir.doğru ise deyim2 yanlış ise deyim_n+1’e geçilir.
Bütün if’lerdeki ifadeler yanlış ise bu halde deyim_n ve sonrasında deyim_n+1’e geçilir.

[COLOR=#00ffff]Problem; [/COLOR]

Gelir Küçük Eşit  150 YTL ise vergi oranı %25
Gelir Küçük Eşit  300  YTL ise vergi oranı %30
Gelir Küçük Eşit  600  YTL ise vergi oranı %35
Gelir Küçük Eşit  1200 YTL ise vergi oranı %40
Gelir Büyük         1200 YTL ise vergi oranı %50

-Gelir bilgisi klavyeden girilecek
-Gelir bilgisi yukarıdaki kurala göre kontrol edilecek
-Vergi hesaplanıp yazdırılacak



     Alıntı:
                                                 [COLOR=Red]#include ”stdio.h”
#include “math.h”
void main()
{
double gelir,vergi,v1,v2,v3,v4;
v1=150*0,25;
v2=300*0.30;
v3=600*0.35;
v4=1200*0.40;
printf(“\n Vergi Mükellefinin Geliri……..”);
scanf(“%1f”,&gelir);
if(gelir<=150)
vergi=gelir*0.25;
else if(gelir<=300)
vergi=v1+(gelir-150)*0.30;
else if(gelir<=600)
vergi=v1+v2+(gelir-300);
else if(gelir<=1200)
vergi=v1+v2+v3+(gelir-600)*0.40;
else if(gelir<1200)
vergi=v1+v2+v3+v4+(gelir-1200)*0.5;
printf(“\nHesaplanan Vergi=%12.21f\n\n”,vergi);[/COLOR]                                 
[COLOR=Cyan]Açıklama [/COLOR]; Yukarıdaki programda uygulanan vergilendirme mantığı şu şekildedir;
200 YTL geliri olan birisinin vergisi hesaplanırken bunun ilk 150 YTL si %25’ten geri kalanı ise %30’dan hesaplanmştır.
Bu nedenle sabit vergiler hasaplanmıştır.(v1,v2,v3,v4)
Kullanılan %12.21 f deyimi ise basamak sayısını belirmek içindir.
[/FONT][/B]

[COLOR=Blue][SIZE=5][B]05.03.2006 Tarihli En Son Eklenen Derslerimiz[/B][/SIZE][/COLOR]

[FONT=Comic Sans MS][B][FONT=Comic Sans MS][COLOR=Red]Switch Case Deyimi[/COLOR]

Çok sayıda koşul kontrolü ile bunların sonucuna göre gerçekleştirilecek eylemlerin icrasında kullanılır.(İf-else yerine)

Switch deyimi tek bir ifadenin değerine göre sınırsız sayıda icra yolu belirlemeye yarar.

Swtitch’den sonra gelen ifade parantez içerisinde ve tamsayı olmalı

Char,Short,,int,long biçiminde olabilir.

Case anahtar sözcükleri içeren ifadeler tamsayı sabit türünde olmalı (değişken içermemeli)
Switch ifadesinde hesaplanansonuç hangi case ‘i ,izleyen sabitle çakışıyorsa ğrogram kontrolü vuraya geçer.

Bu case’den sonrakideyimler de bir kontrole tabi olmaksızın sonuna kadar icra edilir.

İki case sabiti aynı değeri alamaz.

Programın kontrolünün ifadenin değerine göre case seçeneklerinden sadece  birini icra edip bundan sonra switch-case yapısının terk edilmesi  isteniliyorsa “break;” komutu kullanılmalı.

     Alıntı:
                                                 [COLOR=#ff0000]Örnek ; 
#include ”stdio.h”
int main()
{
char sec;
printf(“\nseçiminiz….. A,B,C’den birini seçiniz”);
scanf(“%c”,&sec);
switch(sec)
{
case ‘a’ : printf(“\nGirdiğiniz Harf A’dır”);break;
case ’b’ : printf(“\nGirdiğiniz Harf B’dir”);break;
case ‘c’ : printf(“\nGirdiğiniz Harf C’dir”);break;
default : printf(“\nHatalı Giriş Yaptınız…A,B veya C den birini girmelisiniz...\n”);
}
}
[/COLOR]                                 
[COLOR=#ff0000]Not :[/COLOR] sec değişkeni yerine a  değeri girilince case ’a’ icra edilir, break komutundan dolayı da switch-case yapısından çıkılır.

Yukarıdaki programda break komutu kullanılmasaydı klavyeden a değeri  girildiğinde ekrana bütün case ler sıra ile icra edilip yazdırılacaktı.

[COLOR=#ff0000]Problem :[/COLOR] Aşağıdaki program bir turizm şirketinin tatil seçenekleri için yazılmıştır.

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
int main()
{
int sec;
printf(“\nFırtına Turizm şirketi İftaharla Sunar…..”)
printf(“\n1.Elazığ Seyehati”);
printf(“\n2.Gaziantep Seyehati”);
printf(“\n3.İstanbul Seyehati”);
pritntf(“\Seçiminiz……”);
scanf(“%d”,&sec);
switch(sec)
{
case ‘1’ : printf(“\nKaykay ile Seyehat,Yemek,Konaklama=250ytl”);break;
case ‘2’ : printf(“\nUçak ile Seyehat,Yemek,Konaklama,Eğlence=1000ytl”);break;
case ‘3’ : printf(“\nSandal ile Seyehat,Yemek,Konaklama,Gezi=5ytl”);break;
default : printf(“\nHatalı seçim…1,2veya 3 girilmeli\n\n”);
}[/COLOR]                                 
}[/FONT][/B][/FONT]

     Alıntı:
                                                 [SIZE=4][FONT=Comic Sans MS][COLOR=Magenta]10.03.2006 TARİHLİ EKLENEN EN SON C DERSLERİMİZ......[/COLOR][/FONT][/SIZE]                                 
[FONT=Comic Sans MS][SIZE=2][B][COLOR=Black][COLOR=Red][B]Çevrim Oluşturma[/B][/COLOR]

Belli bir koşul sağlanana kadar aynı işlemler grubunu tekrar tekrar yaptırmaktır.
C dilinde çevrim yapısını oluşturmak için 3 deyim mevcuttur.

     Alıntı:
                                                 [COLOR=#ff0000]-    While Deyimi
-    do….While Deyimi
-    for Deyimi
[/COLOR]                                 
[COLOR=SeaGreen]While Deyimi[/COLOR]

     Alıntı:
                                                 [COLOR=Red]While(ifade)
        Deyim1;
        Deyim2;
        ………
        deyim_n;[/COLOR]                                 
[COLOR=#ff0000]Açıklama:[/COLOR] Önce ifade hesaplanır,sıfır olmayan bir değer çıkarsa(doğru) deyim icra edilir.

Deyim icra edildikten sonra program kontrolü while deyiminin başına  geçer ve işlem tekrarlanır.Yani ifade yeniden hesaplanır , sonucuna göre  işlem yapılır.Bu ifadenin sonucu yanlış(0) olana kadar hesaplama devam  eder.

[COLOR=#ff0000]Do…….While deyim[/COLOR]i

While deyiminde ilk anda koşulun yanlış olması durumunda while gövdesi hiçbir zaman icra edilmez.
Do……While de ise hiç değilse program gövdesi 1 defa  icra edilir.

     Alıntı:
                                                 [COLOR=#ff0000]Do{ deyim1;
          deyim2;
       ………
       deyim_n;
     }
while(ifade)
[/COLOR]                                 
Test koşulu do….while deyiminden sonra bulunur.Bu nedenle çevrim  hiç olmazsa bir defa icra eldir.Sonra ifadenin değerine bağlı olarak do  ya dönülerek çevrim sürebilir.

[COLOR=#ff0000]For Deyimi[/COLOR]

For deyimi işlemlerin tekrar sayısı önceden belli olan durumlarda kullanılır.

     Alıntı:
                                                 [COLOR=#ff0000]for(ifade1;ifade2;ifade3) deyim1;
     deyim2;

veya

for(ifade1;ifade2,ifade3)
{deyim1;
 deyim2;
 ……….
 deyim_n;
}
deyim_x;
[/COLOR]                                 
[COLOR=#ff0000]Açıklama : [/COLOR]

1.    İlk önce ifade 1 hesaplanır ,bu genellikle bir veya daha fazla değişkene ilk değer atamaya yarayan bir atama deyimidir.
2.    sonra ifade 2 hesaplanır.Bu deyimin koşulsal kısmıdır.
3.    iade 2 yanlışsa ,programın kontrolü for deyiminden çıkar ve programın akışı programdaki bir sonraki deyime geçer (deyim_x[IMG]http://img.frmtr.com/images/smilies/wink.gif[/IMG]
4.    Deyim veya bloklar arasındaki deyimler grubu icra edildikten sonra  ifade 3 icra edilerek hesaplanır.Bundan sonra ifade 2 (koşul) hesaplanır  ,koşul devam ediyorsa deyimler grubu tekrar icra edilir ve program  tekrar ifade 2 ye döner.

İfade 1 sadece 1 defa icra edilir. İfade 2 ve ifade 3 çevrimin her tekrarında icra edilir. 

     Alıntı:
                                                 [COLOR=#ff0000]for(ifade1;ifade2;ifade3 )
deyim;
[/COLOR]                                 
     Alıntı:
                                                 [COLOR=#ff0000]ifade1;
while(ifade2)
{deyim;
  ifade3;
}
[/COLOR]                                 
bu ikisi tamamen aynıdır…..

[COLOR=#ff0000]Problem: [/COLOR]1’den n’e kadar olan tamsayıların toplamını veren bir C programı yazınız….

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “conio.h”
main()
{
clrscr();
int top,i,n
printf(“\nÜst Sınırı Giriniz(Tamsayı)……”);
scanf(“%d”.&n);
top=0;
for(i=1;i<=n;i=i+1)
top=top+i
printf(“\1’den n’e kadar olan sayıların toplamı%d=%d\n\n(1+2+3+…..n)”,n,top);
}
[/COLOR]                                 
[COLOR=#ff0000]Açıklama :[/COLOR] Başlangıç olarak top değerine 0 değeri atanmıştır.Girilen sayı 5 olsun yani n=5 için
i değerine başlangıçta 1değeri atanmıştır (i= için )bu halde “i<=n” koşulu sağlanacağından 
top=0+1=1 olacak bu işlemin sonunda i bir arttırılarak çevrim devam edecek yani i=2 için
top=1+2 olacak i=3 için top=(1+2)+3, i=4 için top=(1+2+3)+4, i=5 için top=(1+2+3+4)+5 olacaktır.
Bundan sonra i=6 için koşul sağlanmayacağından çevrim sonlanacaktır.
İfade2 i<=n oluncaya kadar çevrim devam edecektir…
İfade3 ise i=1+i şeklinde b,r artırım ifadesidir.Çevrimin her tekrarında i değişkeninin değerini 1 arttıracaktır.
[COLOR=#ff0000]
Faktöryel Hesabı[/COLOR]

     Alıntı:
                                                 [COLOR=#ff0000]#include ”stdio.h”
#include “conio.h”
main()
{
clrscr();
int fak,i,n;
printf(“\nFaktöryeli Alınacak Sayıyı Giriniz……”);
scanf(“%d”,n);
fak=1;
for(i=1;i<=n;i++)
fak=fak*i
printf(“\n%d!=1*2*3*……%d=%d\n\n”,n,n,fak);
}[/COLOR]                                 
[COLOR=#ff0000]Açıkama :[/COLOR]

Çevrim öncesi i=1,fak=1 dir.

n=4 için koşul sağlanacak(i<=n) ve i=1 için fak=1*1 olacak i=2 için  de koşul sağlanacak ve fak=1*2 olacak i=3 için fak=(1*2)*3 ve i=4 için  (çevrim son kez olacak) fak=(1*2*3)*4 olacaktır.
i=4 olduğunda çevrim bitecektir
[/COLOR][/B][/SIZE][/FONT]
Şimdiye kadar aşağıdaki dersler yayınlanmıştır. Devamı geldikçe listeye eklenecektir...
 
- Ders 1 (İlk Programımız) -

#include <stdio.h>
main()
{
pirntf("hello world\n");
}
eveeet bu programın yaptığı iş ekrana hello world yazdırmaktır. çok kısa ve önemsiz bir kod gibi gözüksede c deki temel bilgileri barındırır. gelelim bu kodun satır satır açıklamasına:
#include <stdio.h> bu satır c'nin o meşhur kütüphanelerinin eklendiği bölümdür. hemen kütüphanelerin ne işe yaradıklarını açıklayayım.
aslında bilgisayar programları, pek çok küçük programın bir araya gelmesiyle oluşur... ve her bir ufak programa fonksiyon bloğu denir. c kütüphanelerinde ise programcının işini kolaylaştırmak için önceden hazırlanmış fonksiyonlar bulunur. örneğin kök alma işlemi yaparken sadece sqrt(kökü alınacak sayı) şeklinde yazarak kolayca bu değer alınabilir. işte bu kullanılan fonksiyonlar farklı kütüphanelerde bulunurlar. ve eğer bu fonksiyonlardan herhangi birisini kullanacaksanız programın başına mutlaka fonksiyonun bulunduğu kütüphaneyi eklemeniz gerekir. şimdilik bunlarla pek kafa yormayın ileride daha geniş bi şekilde hepsini görücez.
gelelim diğer satırlara
main()
{
.......
}
bu kısım bizim yazdığımız programın ana fonksiyon bloğudur. sizinde farkettiğiniz gibi { ile başlayıp } ile sona ermektedir. bu bölümü programın gövdesi olarak düşünebilirsiniz.
main() yazılmasının sebebi fonksiyonun adının belirtilmesidir. programın gövdesi olduğu için main olarak isimlendirilmektedir.
printf("hello world\n"); satırı ise ekrana yazıyı gönderen komuttur. buradaki noktalama işaretleri çok önemlidir!!! eğer bunlara dikkat etmezseniz programınız hata verecektir!



0018ah1.jpg



buda programın ekran çıktısı...



0028ov1.jpg




printf'in içindeki \n ise bir alt satıra geçmek için kullanılır. bunu daha iyi anlamak için yeni bir program yazalım...
#include <stdio.h>
main()
{
printf("bu birinci satirdir!\n bu ise ikinci!\n buda ucuncu satir!");
}





0035ae.jpg
 
- Ders 2 (Kullanıcıdan Bilgi Alma scanf Fonksiyonu) -

bu derste kullanıcıdan bilgi almayı ve girilen bu bilgiler doğrultusunda işlem yapmayı görecez.
Bu arada kodların içindeki /*……*/ arasındaki yazılar açıklama içindir. Bunları program yazarken kullanabilirsiniz. Compiler /* */ arasındaki yazıları dikkate almayacaktır…
programımızı yazalım...

#include <stdio.h>
int main()
{
int tamsayi1, tamsayi2, toplam;/*değişken bildirimleri*/

printf("1. tamsayiyi giriniz:");/*mesaj yazdırma*/
scanf("%d",&tamsayi1); /*kullanıcıdan birinci sayının alınması*/
printf("2. tamsayiyi giriniz:"); /*mesaj yazdırma*/
scanf("%d",&tamsayi2); /*kullanıcıdan ikinci sayının alınması*/
toplam=tamsayi1+tamsayi2; /*girilen değerlerin toplanarak toplam değişkenine atanması*/
printf("Toplam %d dir\n", toplam); /*toplamın ekrana yazdırılması*/
return 0; /*programın başarıyla sona erdiğini belirtmek*/
}

programın çıktısı şu şekilde olacaktır:
1. tamsayiyi giriniz: 45
2. tamsayiyi giriniz: 72
Toplam 117 dir.


Bu program kullanıcıdan alınan iki sayıyı toplayıp, toplamı ekrana yazdırır. Programımızı inceleyelim…

#include <stdio.h>satırında artık biliyoruz ki bu satır kütüphaneleri eklemek için kullanılıyor.

int main(){satırı ise programımızın ana bloğunu başlatıyor.

int tamsayi1, tamsayi2, toplam;işte bu satır bizim için yeni sayılır. Gerçi daha öncede bu satırla karşılaşmıştık. Şimdilik bu satırın ayrıntılarına pek girmiyorum değişkenleri görürken ki bi sonraki konudur. Ayrıntılı olarak inceleyeceğiz.

printf("1. tamsayiyi giriniz:");bu satırda ise ekrana yazı yazdırıyorduk…

scanf("%d",&tamsayi1);işteeee bu dersin konusu olan satıra geldik!!! Bu derste scanf fonksiyonunu ve kullanımını görecez. Scanf kullanıcıdan bir değer almak için kullanılan komuttur. Alınan bu değeri hafızada tutmak için bir değişkene aktarırız. Burada küçük bi açıklama değişkenler hafızada veri tutmak için kullanılırlar. Scanf’in temel kullanımı şöyledir:
[align=center]scanf(“%d”),&degisken_adi;
[/align]

şimdi bu satırı inceleyelim…

scanf(“%d”), kısmı kullanıcıdan alınan değerin türünü belirler. Buradaki %d alınacak değere göre değişiklik gösterecektir. Örneğin tam sayılar için %d, ondalıklı sayılar için %f… gibi bunu bir sonraki derste daha iyi kavrayacaksınız. Bu arada virgüle dikkat!

&degisken_adi; bu kısımda da aldığımız değeri hangi değişkene atayacağımızı belirtiyoruz. Değişken adından önce & karakterini kullandığımıza dikkat edin.

DİKKAT: C programında her satırın sonunda mutlaka ; konulur. En çok yapılan hatalardan birisidir. Eğer bir satırın sonunda ; koymazsanız tüm programınız hatalı olacaktır ve bunu bulmak için çok fazla zaman harcamanız gerekebilir!!!

Değişkenleri de aldıktan sonra toplama işlemini şu satırda yaptırıyoruz…

[align=center]toplam=tamsayi1+tamsayi2;
[/align]
 
- Ders 2,5 (Aritmetik İşlemler) -

Toplama:
sembolü sizinde tahmin edeceğiniz gibi + işaretidir... kullanım şekli 7+5 yada x+8, a+b+8, a+b+c... şeklinde devam eder.

Çıkarma:
sembolü - işaretidir. kullanım şekli 7-5, x-8, a-(b-5), a-b... gibidir.

Çarpma:
sembolü * işaretdir. kullanım şekli 6*6, 8*c, a*b*2... gibi.

Bölme:
sembolü / işaretidir. kullanım şekli 9/8, 48/a, a/b... gibi.

Mod Alma:
sembolü % işaretidir. iki sayının bölümünde kalanı verir. kullanım şekli 9%2 gibidir. burada bize vereceği sayı 1 dir.

C'de işlemlerin öncelik sırası vardır. bu sıra şu şekildedir: *, /, %, +, -

uzun ve karışık bir hesaplama işleminde C bu sırayı takip ederek sonucu bulur... Tabi böyle olması durumunda işlemimizin sonucu yanlış çıkabilir. Örneğin;

1+1*5 işlemini C ilk önce 1 ve 5i çarpacak daha sonra bu sonuçla biri toplayacaktır. yani işlemimiz 10 yerine bize 6 sonucunu verecektir. bu gibi yanlış sonuçlar almamak için parantez işaretleriyle işlem önceliklerini belirlememiz gerekir. Aynı işlemi aşağıdaki gibi yazarsak istediğimiz 10 sonucunu alabiliriz:

(1+1)*5 bu şekilde parantez içine alarak toplamı işleminin ilk önce yapılacak işlem olduğunu belirtmiş olduk. bu çok çok çok önemli bi ayrıntıdır mutlaka bi yerlere not alın derim...

şimdi biraz daha uzun bi işlemi inceleyelim...

4/2+2*5 burada da yine öncelik sırasına göre çarpma ve bölme işlemleri önce yapılacak sonra toplama işlemi yapılacaktır... bunu önlemek için şu şekilde yazmamız gerekli...

4/(2+2)*5
 
- Ders 3 (Değişken Türleri) -

Nihayet üçüncü derse geçebildik… Bu dersin konusu değişkenler ve veri tipleri. Öncelikle değişken nedir ne değildir ondan biraz bahsedelim.
Değişkenin tanımı bellekte bilginin saklandığı gözlere verilen simgesel isim olarak geçiyor. Ama buna çoğu kimsenin ney? yanıtını verdiğini bildiğimden biraz daha insalcıl bi dille anlatmaya çalışayım. Efenim şimdi bi program yazarken bize pek çok veri lazım oluyor… bu veriler gerek kullanıcıdan alınacak olsun gerekse bizim program içinde kullanacağımız bazı değerler olsun hepsi değişkenler sayesinde programın hafızasında tutuluyor. mesela dairenin alanını hesaplayan bi program yazarken bize lazım olacak değerler; dairenin yarıçapı ve pi sayısıdır (3.1415). işte bu değeri programın hafızasında değişkenler yoluyla tutuyoruz. Değişken denmesinin nedeni bir değişkenin hafızasında tuttuğu değerin programın akışı içerisinde isteğe bağlı olarak değiştirilebiliyor olmasıdır. (bunu anlamadıysanız çok kasmayın birazdan anlayacaksınız…)
Gelelim değişken türlerine… bilgisayarlar çok akıllı gibi gözükseler de aslında olabilecek en aptal mantıkla çalışırlar o yüzden girdiğimiz değerlerin türlerini bile önceden belirtmemiz gerekir. Örneğin bir değişkende tam sayı girilecekse bunu değişkeni tanımlarken belirtmemiz gerek yada bi kesirli sayı tutulacaksa o değişkende hep bunları değişkeni tanımlarken belirtmemiz lazım… Nedir bu değişken türleri?
Temel olarak bizim kullanacağımız dört adet değişken türü var bunlar;
char: Karakter türündeki verileri tutmak için kullanılan değişken türüdür. Sayısal işlemler bu türde yapılamaz.
int: Tamsayı türündeki verileri tutmak için kullanılan değişken türüdür.
float: Ondalıklı sayıları tutmak için…
double: Buda ondalıklı sayıları tutman için kullanılan bi değişken türüdür.

Değişken adlarını belirlerken bazı kurallara uymamız gerekir.
  • İlk karakteri rakam olamaz
  • Sadece harfler, rakamlar ve _ (underscore) karakterinin birleşiminden oluşabilir.
  • C diline ait saklı (reserved) sözcükler kullanılamaz.
  • En fazla 31 karakter olabilir.
  • Küçük - büyük harf ayırımı vardır.
Yukarıda da belirttiğim gibi değişkenlerin türlerini önceden belirtmemiz gerekir. Bu belirteçler şu şekildedir:
char : c
int : d
float : f
double : lf

örnek olarak birkaç değişken tanımını görelim…
int sayi, sayi2;
double ondalikli_sayi1;
char karakter_degiskeni;
float ondalikli_sayi2;

gibi…
şimdi bunların program içinde kullanalım…
#include <stdio.h>
void main(){
int sayi=5;
double ondalikli_sayi1=3.5;
char karakter_degiskeni=”h”;
float ondalikli_sayi2=”89,8”;
printf(“int degiskenin degeri= %d’ “, sayi); /*%d belirteci ile değişkenin nerede yazılacağını belirliyoruz! */
printf(“double degiskenin degeri= %lf’ “, ondalikli_sayi1);
printf(“char degiskenin degeri= %c’ “, karakter_degiskeni);
printf(“float degiskenin degeri= %d’ “, ondalikli_sayi2);
}

Bu tip belirteçlerini kullanıcıdan değişken değeri alırkende kullanıyoruz…
#include <stdio.h>
void main(){
int sayi;
double ondalikli_sayi1;
printf(“bir tamsayi girin.”);
scanf(“%d“, &sayi); /*kullanıcıdan değişkenin değerini alırken & karakterini yazdığımıza dikkat edin… */
printf(“bir ondalikli sayi girin.”);
scanf(“%f”, &ondalikli_sayi1);
printf(“int degiskenin degeri= %d’ “, sayi);
printf(“float degiskenin degeri= %f’ “, ondalikli_sayi2);
}
 
- Ders 4 (matıksal sınamalar - if else) -

işte yepis yeni bir ders daha karşınızda...
C programlama dilinin en temellerini öğrendikten sonra sıra programımıza gerçekten program niteği kazandırak komutları öğrenmeye geldi.
bir programın asıl görevi olan girilen bilgiler karşısında karar verip ona göre davranma eylemini nasıl yapacağımıza temel bir giriş yapalım.

bu dersin konusu if else yapısı. if'in türkçe manası "eğer" demek, else ise aşa yukarı başka gibi bi anlam taşıyor ama biz bunu "değilse" olarak algılıyalım.
örneğin bizim programımız öğrencinin notunu alsın ve notu 50 yada 50 den büyükse ekrana "geçti", eğer 50 den küçükse "kaldı" yazdırsın.
programın aşamaları şu şekilde olacaktır:

- öğrenciden notunu al
- 50 ile karşılaştır
- büyük yada eşitse geçti yaz
- değilse kaldı

bunu biraz daha programlama tarzına yaklaştırarak yazacak olursak;

eğer not >= 50
geçti
değilse
kaldı


şeklinde bir ifade kullanmış oluruz... Şimdi de tam olarak C koduna çevirelim olayı...

if(not>=50)
printf("geçti");
else
printf("kaldi);

işte bu kadar basit. programı tam olarak yazalım...

#include <stdio.h>
void main()
{
int ogrencinin_notu;
printf("notunuzu girin:\n");
scanf("%d",&ogrencinin_notu);
if(ogrencinin_notu >= 50)
printf("gecti");
else
printf("kaldi");
}


Bir başka örnek olarakda basit bi hesap makinesi yapalım...
bu programda kullanıcıdan öncelikle 2 tane sayı alıcaz, daha sonra bu sayılarla hangi işlemi yapmak istediğini soracaz ve buna uygun olarak işlemi yaptırıp ekrana sonucu yazdıracaz.


#include <stdio.h>
void main(){
int sayi1, sayi2, islem, sonuc; /* islem değişkenini de tanımladığımıza dikkat!!! */

printf("birinci sayiyi yazin:");
scanf("%d",&sayi1); /* burada girilen degeri, degiskene nasil atadigimiza dikkat edin!!! */

printf("ikinci sayiyi yazin:");
scanf("%d",&sayi2);

printf("lutfen islemin numarasini girin (toplama 1, cikartma 2, carpma 3, bolme 4):");
scanf("%d",&islem);
/* bu noktadan sonra islem degiskenini karsilastiricaz ve ona gore islemi yaptiricaz!!! */

if(islem==1){
/* karsilastirirken sadece = yerine == kullandık bunun nedeni tek = operatoru atama icin kullaniliyor! ayrica if'den sonra { açtık bunun nedeni ise eger if'ten sonra tek satırlık bir islemden fazla islem yaptıracaksak mutlaka {} parantezlerini kullanmamız gerekir aksi takdirde program hata verecektir!!! */

sonuc=sayi1+sayi2;

printf(" yaptirdiginiz islem toplama ve sonucu= %d",sonuc);
} /* açtığımız ikinci parantezi kapatmayı unutmuyoruz... */

/* ve iste birden fazla sınama yaptırırken kullanacagimiz komutuda ogrenmis oluyoruz */


else if(islem==2){
sonuc=sayi1-sayi2;
printf(" yaptirdiginiz islem cikartma ve sonucu= %d",sonuc);
}

else if(islem==3){
sonuc=sayi1*sayi2;
printf(" yaptirdiginiz islem carpma ve sonucu= %d",sonuc);
}

else if(islem==4){
sonuc=sayi1/sayi2;
printf(" yaptirdiginiz islem bolme ve sonucu= %d",sonuc);
}

else /* eger bu 4 rakamın haricinde bir sayı yada harf girildiyse kullanıcıya hata mesajı verilecektir */
printf("hata! boyle bir islem bulunmamaktadir");
}


eveeet bu programı yazarken çoklu seçimlerde de if else ifadesini kullandığımızı ve nasıl kullandığımızı görmüş olduk... yine dikkat edilecek bir nokta ise {} parantezleridir. yukarda da dediğim gibi eğer if yada else if yada yada else ifadesinden sonra tek satırlık işlemden fazlası yapılacaksa bunları mutlaka {} parantezleri içerisine almamız gereklidir. tek satırlık işlemden kastım yukarda yaptığımız gibi hem bir işlem yaptırıp hemde ekrana bir yazı yazdırmak birden fazla işlem anlamına gelir ki bu durumda parantezleri kullanmak zorundayız...

bu else if mevzusunu daha iyi kavramak için bir örnek daha yapalım...
bu örnektede kullanıcıdan notunu alıcaz ve bunu harfsel olarak ekrana yazdıracaz...
100-90 arası AA
89-85 arası BA
84-80 arası BB
79-75 arası CB
74-70 arası CC
69-60 arası DD
50-0 arası ise FF olarak yazdırılacaktır...

#include <stdio.h>
void main()
{
int not;
printf("Notunuzu yaziniz:\n");
scanf("%d",&not);

if(not>=90)
printf(" Notunuz AA\n");

else if(not>=85)
printf(" Notunuz BA\n");

else if(not>=80)
printf(" Notunuz BB\n");

else if(not>=75)
printf(" Notunuz CB\n");

else if(not>=70)
printf(" Notunuz CC\n");

else if(not>=60)
printf(" Notunuz DD\n");

else /* ve bunlardan hiçbirisi değilse sonuç mutlaka FF'tir bunu karşılaştırmaya gerek olmadığında else'e yazıyoruz */
printf("Notunuz FF\n");
}


bu dersimizinde sonuna geldik...
gelelim alıştırma bölümüne :D

Soru 1: kullanıcıdan 1'den 12'ye kadar bir rakam alıp bu rakama denk gelen ayı ekrana yazdıracak bir program. şayet girdiği sayı 1-12 arasında değilse ekrana böyle bir ay yok yazdırsın...

Soru 2: kullanıcıdan bir harf alıp bunun ünlü mü yoksa ünsüz mü olduğunu ekrana yazdırsın. bunu yaparken char değişken tipi kullanılacak!
 
- Ders 5 (çoklu seçim – switch case) –

Uzun bir aradan sonra tekrardan derslere devam…

Öncelikle swicth - case’in ne iş yaptığını açıklayalım; çok seçimli kıyaslamalar söz konusu olduğunda if-else if gibi uzun uzadıya yazmak yerine kısaca kodlamaya yarayan bi komuttur. Örnek verelim daha iyi anlaşılsın
biggrin.gif


Son olarak verdiğim bi alıştırma vardı bunu if - else if ile yapan arkadaşlar oldu ve kodlar buradan yayınlandı…
Soru şöyleydi:

Soru 1: kullanıcıdan 1'den 12'ye kadar bir rakam alıp bu rakama denk gelen ayı ekrana yazdıracak bir program. şayet girdiği sayı 1-12 arasında değilse ekrana böyle bir ay yok yazdırsın...

Şimdi aynı programı switch – case ile yapalım. Böylece kodun ne gibi bir işlem yaptığını çok daha kolay anlayacaksınız.

#include <stdio.h>
void main()
{
int ay;
printf("\nLutfen bir rakam giriniz:\n");
scanf("%d",&ay);

switch(ay){ //* karsilastirilacak degiskeni switch'e göster *//
case 1: printf("Ocak\n");
break; //*karsilastirmadan cik *//
case 2: printf("Subat\n");
break;
case 3: printf("Mart\n");
break;
case 4: printf("Nisan\n");
break;
case 5: printf("Mayis\n");
break;
case 6: printf("Haziran\n");
break;
case 7: printf("Temmuz\n");
break;
case 8: printf("Agustos\n");
break;
case 9: printf("Eylul\n");
case 10: printf("Ekim\n");
break;
case 11: printf("Kasim\n");
break;
case 12: printf("Aralik\n");
break;
default : printf("Boyle bir ay yok.\n"); //* eger her hangi bir degere uymuyorsa yapilacak islemler *//
}
}

Her zamanki gibi programımızı satır satır inceleyelim… Önemli kısımları kalın yazdım kodu incelerken özellikle bu kısımlara dikkat edin!

Öncelikle kullanacağımız kütüphaneyi ekliyoruz ki bunun hangi satır olduğunu bu derse kadar takip eden herkesin bildiğini umduğumdan açıklamıyorum.

Programımızın ana bloğunu açıyoruz void main(){ ……. }

Kullanıcıdan bir değer alacağımız için, bu değeri hafızada tutacak bir değişken belirlememiz gerekli. Bunu belirlerkende alacağımız değerin tipine göre değişken tipimizi de belirliyoruz. Alacağımız değer sayısal bir ifade olduğundan int değişken tipini kullandık.

int ay;
printf("\nLutfen bir rakam giriniz:\n");
scanf("%d",&ay);

Ve geldik programın asıl bizim öğrenmemiz gereken kısmına…

switch(ay){
case 1: printf("Ocak\n");
break;

switch(ay) burada karşılaştırılacak olan değişkeni switch’e gösteriyoruz. Kullanıcıdan aldığımız değeri ay değişkenine atadığımız için switch’e ay değişkenini gösterdik. Parantezlere dikkat!

case 1: printf("Ocak\n"); burada ise değişkeni hangi değerle karşılaştıracağımızı yazıyoruz. case kodundan sonra karşılaştıracağımız değer olan 1’i yazıyoruz. Eğer ay değişkenindeki değer 1 ise programımız buradaki kodları yürütecektir, değilse diğer bir case’e geçip oradaki değerlerle karşılaştıracaktır…

Biz şimdilik kullanıcının 1 değerini girdiğini varsayıp devam edelim… Program ilk case’de 1 görünce hemen : (iki nokta üstüste)‘den sonraki komutları işletmeye başlıyor ve ekrana Ocak yazdırıyor. Bu komuttan sonraki break; ise bizim artık aradığımız değeri bulduğumuzu ve karşılaştırmadan yani switch – case’den çıkmamız gerektiğini programa bildirir.

[align=center]
0061vv.jpg

[/align]

Biraz karışık gibi gözüküyor ancak ikinci örnekte ne kadar basit olduğunu göreceksiniz… Sıkılmadan devam
biggrin.gif


Şimdi diyelimki kullanıcı ilk başta değer olarak 6 girdi… Bu sefer programımız case’lerin içinde sırayla 6 sayısını arayacaktır ve bulduğunda burada belirtilen işlemi yapacaktır yani ekrana Haziran yazdıracak. Ve tekrardan break komutunu görüp switch – case’den çıkacak…

[align=center]
0076em.jpg

[/align]

Kullanıcının 1-12 arasında bir sayı değilde 42 gibi bizim hiçbir case’de tanımlamadığımız bir değer girdiğini düşünelim. Bu sefer programımız baştan sona kadar tüm case’leri tarayacak ve hiçbir değerin buna uymadığını görünce en alttaki satır olan

default : printf("Boyle bir ay yok.\n");

kısma gelecektir. Buradaki default : satırının görevi eğer girilen değer hiçbir case içinde belirtilmemişse yapılacak işlemlerin yazıldığı bölümdür. Girilen sayı hiçbir case’de tanımlanmadığı için default satırında Böyle bir ay yok yazdırdık ve programımız tamamlanmış oldu.

Bu programı break; satırını yazmadan çalıştırsaydık ne olurdu? Şimdi tüm break; satırlarını silip programımızı yeniden çalıştıralım…

#include <stdio.h>
void main()
{
int ay;
printf("\nLutfen bir rakam giriniz:\n");
scanf("%d",&ay);

switch(ay){
case 1: printf("Ocak\n");
case 2: printf("Subat\n");
case 3: printf("Mart\n");
case 4: printf("Nisan\n");
case 5: printf("Mayis\n");
case 6: printf("Haziran\n");
case 7: printf("Temmuz\n");
case 8: printf("Agustos\n");
case 9: printf("Eylul\n");
case 10: printf("Ekim\n");
case 11: printf("Kasim\n");
case 12: printf("Aralik\n");
default : printf("Boyle bir ay yok.\n");
}
}

Ekran çıktısını inceliyelim…

[align=center]
0081no.jpg

[/align]

Gördüğünüz gibi eğer break; komutunu kullanmazsak karşılaştırma işlemine uyan satırdan sonra sınamadan çıkmadığımız için o satırdan sonraki tüm işlemleri yaptırmaya devam ediyor…

Geçelim ikinci örneğimize bu örnekte ise geçen dersin sonunda vermiş olduğumuz diğer soruyu switch – case ile yapalım.

Soru 2: kullanıcıdan bir harf alıp bunun ünlü mü yoksa ünsüz mü olduğunu ekrana yazdırsın. bunu yaparken char değişken tipi kullanılacak!

Hemen programımızı yazalım

#include <stdio.h>
void main()
{
char harf;

printf("Lutfen bir karakter giriniz:\n");
scanf("%c",&x);

switch(harf){
case 'a':case'A':case'e':case'E':case'i':case'I':case'o ':case'O':case'u':case'U':
printf("Girdiginiz harf sesli bir harftir.\n");
break;

default:
printf("Girdiginiz harf sessiz bir harftir\n");
}
}

Satır satır incelemeye geçiyoruz…

char harf; değişkenimizi tanımlarken char değişken tipini kullandık. Çünkü bu sefer kullanıcıdan sayısal bir değer yerine bir karakter alıcaz. Char kullandığımız zaman dikkat edeceğimiz bazı noktalar vardı ve bunları geçen derslerimizde anlatmıştık. Bunları şimdi programda görelim

scanf("%c",&x); Bu satırda da görüldüğü gibi değeri değişkene atarken %d yerine %c kullandık ki bu da değişken türlerini belirlerken dikkat etmemiz gereken bir noktaydı!

switch(harf) Burada bir önceki örnekten farklı bir şey yapmadık. Değişken türünün değişmesinin, switch’e değişkeni gösterirken herhangi bir etkisi olmuyor. Ancak case’de ufak ama çok önemli bir fark var!!!

case 'a':case'A':case'e':case'E':case'i':case'I':case'o ':case'O':case'u':case'U': Bu satıra dikkat edecek olursak karşılaştırma yaptığımız her harfi tek tırnak içerisine aldık. Bunu yapmamızın sebebi c dilinde eğer char tipi bir değeri kullanacaksak mutlaka bu tırnakların içerisinde belirtmemiz gerektiğidir…

İlk örnekten farklı olarak burada case’lerimizi ardarda yazmamız. Koddan da anlamış olacağınız gibi eğer birden fazla seçenekte aynı işlemi yaptıracaksak bu işlemleri tekrar tekrar yazmak yerine case’lerimizi ardarda yazıp işlemleri ise bunların sonuna bir defada yazmamızdır.
 
Geri
Üst