10 Ekim 2016 Pazartesi

İç içe if…else Blokları (Nested If)

if-else yapıları içerisine başka if-else yapıları yerleştirerek birden fazla koşul aynı anda test edilebilir.

if (sayi < 0)
   printf("Negatif sayı girdiniz\n");
else
     if (sayi > 0)
          printf("Pozitif bir sayı  girdiniz\n");
     else
         printf("Sıfır sayısını girdiniz\n");

Diğer bir kullanım şekli aşağıdaki gibidir:

     if(koşul_1) {
        deyimler; //(küme_1)          
      }
      else if(koşul_2) {
        deyimler; //(küme_2)
      }
      ….
      ….
      else if(koşul_n-1) {
        deyimler; //(küme_n-1)
      }
      else {
        deyimler; //(küme_n)
       }


Örnek: Girilen notun harf karşılığını bulma
Girilen not;
60 ile 65 arasındaysa DD
65 ile 70 arasındaysa DC
70 ile 75 arasındaysa CC
75 ile 80 arasındaysa CB
80 ile 85 arasındaysa BB
85 ile 90 arasındaysa BA
90 ile 100 arasındaysa AA
yazdıran bir program yazalım. Bunların dışındaysa «Uygun değer girmediniz!» şeklinde uyarı verip, programdan çıkacak.

Cevap:
Standart C kütüphanesinde bulunan printf() fonksiyonu, değişkenlerin tuttuğu değerleri, onların adreslerini veya bir mesajı ekrana belli bir formatta yazdırmak için kullanılan fonksiyondur.

scanf() fonksiyonu klavyeden veri okumak için kullanılan fonksiyondur.








if…else Bloğu

if ve else tek bir karşılaştırma deyimi olup else kullanımı isteğe bağlıdır.
Eğer bu koşul olumlu ise if den sonraki bölüm yürütülür ve else den sonraki bölüm atlanır.
 Koşul olumsuz ise if den sonraki küme atlanır ve eğer varsa, else den sonraki kümedeki işlemler gerçekleştirilir.


if (koşul)
   { Doğru ise İşlem1}
else
   { Yanlış ise İşlem2}

Aşağıdaki her iki örnek aynı işlemi gerçekleştirmektedir. Tek fark birinci örnekte { } sembollerinin kullanılmasıdır. Tek satır deyim içeren bloklarda, { } sembollerinin kullanılmasına gerek yoktur.


if (sayi < 0) {
   printf("Negatif sayı girdiniz\n");
}
else {
  printf("Sıfır veya pozitif bir sayı  girdiniz\n");
}


if (sayi < 0)
   printf("Negatif sayı girdiniz\n");
else
  printf("Sıfır veya pozitif bir sayı  girdiniz\n");

Koşul

Akış kontrollerinin ve koşul ifadelerinin hem programlama dillerinde ve hem de uygulama altyapısında her zaman önemli bir yeri vardır. İyi bir yazılım geliştiricinin koşul ifadelerini iyi bilmesi gerekir. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını bilip buna göre bir akış kontrolü oluşturmamız gerekir.

Tüm programlama dillerinde olduğu gibi en temel koşul ifadesi «if-else» bloklarıdır.

Koşul ifadelerinin ve akış kontrollerinin programlama dillerinde ve uygulama altyapısında her zaman önemli bir yeri vardır.
Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerinin iyi bilinmesi gereklidir.

Tüm programlama dillerinde olduğu gibi en temel koşul ifadesi «if-else» bloklarıdır.

Sonucu DOĞRU veya YANLIŞ olan herhangi bir ifadeye “koşul” denir.
DOĞRU -> «1» ile gösterilir.
YANLIŞ -> «0» ile gösterilir.

Örnek:
if (kisi_boy > 170)
    printf("Uzun boylusunuz\n");

(kisi_boy > 170) ifadesi bir koşuldur.

Koşullar, karşılaştırma operatörleri ve mantıksal operatörler kullanılarak oluşturulurlar.


8 Ekim 2016 Cumartesi

Hanoi Kuleleri Oyunu C#.Net (WPF)

Uygulama C#.Net (WPF) ile geliştirilmiştir.

 
Hanoi Kuleleri Oyunu Nedir?
Hanoi kuleleri oyunu, basit ve matematik temelli bir bulmacadır. Oyun 3 sopa ve bu sopalar içerisinde bulunan halkalardan oluşur. Oyunun amacı bu halkaları sıralı bir şekilde en sağdaki sopaya sıralamaktır. Oyunda her seferinde sadece bir halka taşınabilir. Her hamlede sadece en üstte bulunan halka diğer bir sopaya taşınabilir. Diğer sopada daha önceden halkalar bulunabilir ancak hiçbir halka kendisinden küçük bir halkanın üzerine koyulamaz. 
En az hamde oyunu tamamlamakta diğer bir önemli konudur. 
En az hamle sayıları 
3 halka = 7 hamle 
4 halka = 15 hamle 
5 halka = 31 hamle 
6 halka = 63 hamle 
7 halka = 127 hamle 
8 halka = 255 hamle

Uygulamanın Bütün Kodları: http://www.fauset.hol.es/codes/HanoiTowers_Wpf.rar

7 Ekim 2016 Cuma

Printf ve Scanf

printf () - Tip belirleyici (conversion specifier)

% işareti ile başlar ve bir veya iki karakterden oluşur (%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir. Ayrıca biçim ifadesinin içine, sola - sağa yaslama, noktadan sonra x basamak yaz vb gibi isteklerimizi belirten karakterler de ekleyebiliriz.
Gerçek sayıların yazdırılmasında, noktadan sonra yazılacak basamak sayısı durumların ifade edilmesi için ve tamsayıların aynı hizada yazdırılması için nokta operatörü veya rakamlar kullanılır. Aynı şekilde karakter katarlarının sağa ya da sola dayalı yazdırılması için veya bir karakter katarındaki karakterlerin kaç tanesinin yazdırılacağını belirtmek için de yine nokta, eksi gibi operatörlerin ve rakamların çeşitli kombinasyonları kullanılır.


scanf() Fonksiyonu

Birçok programda ekrana verilerin bastırılmasının yanı sıra klavyeden veri okunması gerekebilir. scanf() fonksiyonu klavyeden veri okumak için kullanılan fonksiyondur. Tip belirleyicileri printf fonksiyonu ile aynı mantıkta kullanılır ve % sembolü ile ifade edilir.
Örneğin klaveden bir x tamsayısı okumak için aşağıdaki ifade kullanılır:
    scanf("%d", &x);

C Programlama Dili Elemanları


1.C Tanımlayıcıları

Programcı tarafından oluşturulurlar.
Programdaki değişkenleri, sabitleri, kayıt alanlarını, özel bilgi tiplerini vb. adlandırmak için kullanılan kelimelerdir.
Tanımlayıcılar, yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmelidir.
İngiliz alfabesindeki A-Z veya a-z arasındaki 26 harf ile 0-9 arası rakamlar kullanılabilir.
Sembollerden sadece alt çizgi _ kullanılabilir.
Tanımlayıcı isimleri harfle veya alt çizgiyle başlayabilir.
Tanımlayıcı ismi, rakamla başlayamaz veya sadece rakamlardan oluşamaz.
Tanımlayıcılar boşluk karakterini içeremezler.

2.C Anahtar Sözcükleri
C dilinde 32 adet anahtar sözcük vardır ve hepsi küçük harfle yazılır. Anahtar sözcükler tanımlayıcı olarak kullanılamazlar.

3.C Veri Türleri
Veri tipi (data type) program içinde kullanılacak değişken, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani bellekte ayrılacak bölgenin büyüklüğünü, belirlemek için kullanılır.
Bir programcı, bir programlama dilinde ilk olarak öğrenmesi gereken, o dile ait veri tipleridir. Çünkü bu, programcının kullanacağı değişkenlerin ve sabitlerin sınırlarını belirler.
C programlama dilinde 5 tane temel veri tipi bulunmaktadır.
char: karakter veriler
int: tamsayı veriler
float: tek duyarlıklı kayan noktalı sayılar
double: Çift duyarlıklı kayan noktalı sayılar
void: Değer içermeyen verilerdir.

Bazı özel niteleyiciler temel tiplerin önüne gelerek onların türevlerini oluşturur:
short
long
unsigned
Niteleyiciler değişkenin bellekte kaplayacağı alanı değiştirilebilirler.
Kısa (short), uzun (long), ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır. Eğer normal tamsayı 32 bit (4 bayt) ise uzun tamsayı 64 bit (8 bayt) uzunluğunda ve kısa tamsayı 16 biti (2 bayt) geçmeyecek uzunluktadır.

İşaretsiz (unsigned) ön eki kullanıldığı taktirde, veri tipi ile saklanacak değerin sıfır ve sıfırdan büyük olması sağlanır. İşaretli ve işaretsiz verilerin bellekteki uzunlukları aynıdır. Fakat, işaretsiz tipindeki verilerin üst limiti, işaretlinin iki katıdır.

Kısa ve uzun tamsayı tutacak tanımlayıcılar için int anahtar kelimesinin yazılmasına gerek yoktur.
short s;  /* short int s; anlamında */
long k;   /* long int k;  anlamında */

Bir C programı içerisinde, veri tiplerinin bellekte kapladığı alan sizeof operatörü ile öğrenilebilir. İlgi çekici olan, bu alanların derleyiciye??? ve işletim sistemine??? bağlı olarak değişiklik göstermesidir.


4.C Değişkenleri
Değişken, program içinde kullanılan değerlere bellek üzerinde açılan alanlardır. Bu alanlar bir değişken ismi ile anılır.
Değişken isimlendirilmeleri, tanımlayıcı kurallarına uygun biçimde yapılmalıdır.
C’de tüm değişkenler kullanılmadan önce programa bildirilmelidir.
Bu bildirim esnasında, değişkenin veri türü belirlenir.
Örnek:
veri_türü değişken_adı;
int sayac;

Örnekler
int x;
int x1, y1, z1;
long d, d1;
char c;
char c1, c2, c3;
float a;
float a1, a2, a3;
int u[3];
float k[10*20];

Örnekler
int x = 1;
int x1 = 10, y1 = 20, z1 = 30;
char c = ‘a’;
float a = 123.45;


5. C Sabitleri

Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır.
Ancak, veri tipinin önüne const anahtar sözcüğü konmalıdır.
Sabit içerikleri program boyunca değiştirilemez. Yalnızca kullanılabilir.
Genellikle, sabit olarak bildirilen değişken isimleri büyük harflerle, diğer değişken isimlerinin ise küçük harflerle yazılması (gösterilmesi) C programcıları tarafından geleneksel hale gelmiştir.
Örnekler:
const float PI = 3.142857;
const double NOT= 12345.8596235489;
const int EOF= -1;
const char[] = "devam etmek için bir tuşa basın...";


6.C Operatörleri
Operatörler, değişkenler veya sabitler üzerinde matematiksel ve karşılaştırma işlemlerini yapan simgelerdir. Yani bir operatör bir veya daha fazla değişken üzerinde işlem yapan semboldür.

C programlama dilinde 4 tip operatör bulunmaktadır.
Aritmetik Operatörler
Atama Operatörleri
Karşılaştırma Operatörleri
Mantıksal Operatörler

C Operatörleri – Aritmetik Operatörler
Örnekler:
a = b + 10;
c = d + c * e –f /g + h % j;
z = u[1] * u[2];
x = 10;
a = b = c = 0;

C Operatörleri – Atama Operatörleri
Bu operatörler bir değişkene, bir sabit veya bir aritmetik ifade atamak (eşitlemek) için kullanılır.
Birleşik atama: Bazı ifadelerde işlem operatörü ile atama operatörü birlikte kullanılarak, ifadeler daha kısa yazılabilir.
Eğer ifade
     değişken = değişken [operatör] aritmetik ifade;
şeklinde ise, daha kısa bir biçimde
    değişken [operatör]= aritmetik ifade;
olarak yazılabilir.

Örnek: Aşağıdaki işlemlerden sonra a, b ve c’nin son değerleri ne olur?
a = 5;   
b = a++; 
c = ++a; 

Atama Sonrasında
a=7
b=5
c=7

Örnek: Aşağıdaki işlemlerden sonra i’nin son değerleri ne olur?
int i = 1;
i++;
++i;
i += 1 + i++;
i = i + 1;

Atama Sonrasında
i=9

Code::Blocks ile İlk C Programı


Ana menüden “File > New > Project” seçilir ve proje oluşturma sihirbazı başlatılır.
1-)Karşımıza çıkan şablon seçim ekranında “Console application” şablonu seçilir “Go” düğmesine basılır.
2-)Karşımıza çıkan Programlama Dili Seçim ekranında “C” programlama dili seçilir ve “Next” düğmesine basılır.
3-)Karşımıza çıkan yeni ekranda “Project Title” alanına Proje İsmi girilir. “Folder to create project in” kısmında ise Proje klasörünün oluşturulacağı ve proje dosyalarının yaratılacağı dosya yolu seçilir.
4-)Karşımıza çıkan Derleyici (Compiler) seçim ekranı varsayılan değerleriyle bırakılır. Böylece “Debug” ve “Release” modlarının ayarları da tamamlanmış olur. Son olarak “Finish” düğmesine basılır.
5-)Proje oluşturma sihirbazının son adımının tamamlanması ile birlikte aşağıda görüldüğü gibi Proje sekmesinde HelloWorld isimli projemiz ve editörde de “main.c” isimli dosyada ilk C programımız otomatik olarak yerleştirilir.
6-)Son olarak derleme ve çalıştırma işlemi için “F9” kısa yolu veya “Build  Build and run” menü adımı seçilir.