onurgs59
Aileden
- Aktiflik
- K.Tarihi
- 19 Haz 2009
- Mesajlar
- 1,769
- Puanı
- 504
Kodlarınıza açıklama (comment) koymak
Yazılım mühendislerinin en büyük sıkıntısı kod yazmak değildir. Yazılmış bir kodu okuyup anlamak -hele ki büyük bir projeden söz ediyorsak- asıl başınıza bela olacak konudur. Bundan korunmak için kodlarımıza açıklama/yorum koyarız.
C programlama dilinde iki şekilde açıklama koymak mümkündür. Bunlardan bir tanesi, satır bazında yapılır. Diğeriyse, belirli bir bloğu yorumlamaya yarar. Compiler her iki şekilde de, açıklama olarak belirlemiş yerleri işlemeyecektir. Aşağıdaki örnekte satır ve blok olarak, nasıl kodlarınıza açıklama getirebileceğinizi görebilirsiniz:
Cast Operator
Cast operator'un Türkçe karşılığı olacak bir kelime aklıma gelmedi. Ancak cast operatoru şu şekilde açıklayabiliriz. Bir değişken tipini örneğin (Tam sayı-int), bir başka tipe (virgüllü sayı-float) gibi dönüştürmek isterseniz, o zaman cast operator kullanırız.
Aşağıdaki kodu yazıp derleyin.
Program çıktısı; "Sonuc: 1.000000" olacaktır:
Normalde 1.5 çıkmasını beklediğiniz sonucun, 0.000000 çıkmasının nedeni casting kullanmamamızdır. Bir tam sayıyı, bir başka tam sayıya bölerseniz, sonuç bir başka tam sayı çıkar. Ve C programlama dili, bir virgüllü sayıyı tam sayıya atamaya kalktığınızda, herhangi bir yuvarlama işlemi yapmadan, virgülden sonrası atar.
Cast Operator şu şekilde kullanılmalıdır: degisken_1 = ( tip ) degisken_2;
Elimizdeki bu bilgiye göre programımızı tekrar yazalım.
Sonuç bu sefer, beklediğimiz gibi 1.5 çıkacaktır.
Aşağıdaki örneği inceleyelim:
Öğrendiğimiz üzere, bunun da sonucu 0.5 yerine, 0 olarak gözükecektir. Sonucu doğru yazdırmak için (float)2/4 şeklinde yazmanız yeterlidir. Ancak dahi basit bir yöntem olarak 2/4.0 veya 2.0/4 yazarsanız yine aynı sonucu elde edersiniz.Çünkü bu durumda sayılardan bir tanesi float olmaktadır.
Kullanılan değişken tiplerinden hangisi büyükse, sonuç o değişkenin tipinde döner. Yüksek değişken bellekte daha fazla yer kaplamaktadır. Bunun doğal bir sonucu olarakta, domine eden o'dur. Değişkenlerin büyüklüğünü daha önceki dersimizde vermiştik. Ancak hatırlamak açısından, aşağıya bakabilirsiniz.
Çıkan sonucu, daha düşük bir değişken tipine atamaya kalkarsanız, o zaman veri kaybı yaşanır. Ve örneğin float 1.5 olan sonucu int değişkene 1.0 olarak kaydedilir.
Öğrendiklerinizin pekişmesi için bir program yazalım. Bu programda, klavyeden girilen, bir virgüllü sayının, yuvarlanıp, tam sayı olması gösterilsin:
Koşullu (Conditional) İfadeler
if
Bilgisayarda yapılan bütün mantıksal işlemler kaba bir temele dayanır. Şartlar sağlandığı halde yapılacak işlem belirlenir. Ve şartlar sağlandığında, bu işlemler yapılır. Şartların kontrol edilmesini, C (ve daha birçok) programlama dilinde if operatörünü kullanarak yaparız.
if operatörünün genel kullanım yapısı şu şekildedir:
Eğer if'in altında birden çok komut varsa, ayraç işareti (veya küme parantezi) koymamız gerekir. Şayet if'ten sonra, tek komut bulunuyorsa, ayraç koyup-koymamak size kalmıştır. Zorunluluğu yoktur.
Örnek bir program yazalım. Bu programda kullanıcının klavyeden, bir tam sayı girsin. Ve bizde girilen sayı, 100'den büyükse, ekrana yazdıralım:
if-else
Bazı durumlarda, bir koşulun doğruluğuna göre sonuç yazdırmak yetmez. Aksi durumda da ne yapacağımızı belirtmek isteriz. Bunun için if-else yapısını kullanırız.
if-else yapısı şu şekildedir:
Önceki yazdığımız programı düşünelim; 100'den büyük olduğunda, ekrana çıktı alıyorduk. Bu programa bir özellik daha ekleyelim ve 100'den küçükse, bunu da söyleyen bir yapıyı oluşturalım:
Örnekte gördüğünüz gibi, bir koşulun doğruluğunu program kontrol ediyor ve buna doğru olursa, bazı işlemler yapıyor. Şayet verilen koşul yanlışsa, o zaman daha başka bir işlem yapıyor. Ancak ikisini de yapması gibi bir durum söz konusu değil.Aşağıdaki akış diyagramlarında (flowchart) her iki durumu da görebilirsiniz.
İlişkisel (Relational) Operatörler
Koşullu operatörlerde, koşulun doğruluğunu kontrol ederken kullandığımız ilişkisel operatörler, aşağıda verilmiştir:
[TABLE="class: grid, width: 500"]
[TR]
[TD]<[/TD]
[TD]Küçüktür[/TD]
[/TR]
[TR]
[TD]>[/TD]
[TD]Büyüktür[/TD]
[/TR]
[TR]
[TD]==[/TD]
[TD]Eşittir[/TD]
[/TR]
[TR]
[TD]<=[/TD]
[TD]Küçük eşittir[/TD]
[/TR]
[TR]
[TD]>=[/TD]
[TD]Büyük eşittir[/TD]
[/TR]
[TR]
[TD]!=[/TD]
[TD]Eşit değildir[/TD]
[/TR]
[/TABLE]
Birleşik (Compound) Operatörler
Bazı durumlarda, kontrol edeceğimiz koşul, tek bir parametreye bağlı değildir. Örneğin, bir kişinin yaşının 65'den küçük olup olmadığına bakabiliriz. Ama 65'den küçük ve 18 yaşından büyük olup olmadığına karar vermek istersek, o zaman Birleşik/Birleştirici Operatörler'i kullanmamız uygun olacaktır.
Compound operator'ler aşağıdaki gibidir:
[TABLE="class: grid, width: 500"]
[TR]
[TD]&&[/TD]
[TD]and[/TD]
[TD]ve[/TD]
[/TR]
[TR]
[TD]||[/TD]
[TD]or[/TD]
[TD]veya[/TD]
[/TR]
[TR]
[TD]![/TD]
[TD]not[/TD]
[TD]tersi[/TD]
[/TR]
[/TABLE]
Bu operatörlerin mantıksal (logical) doğruluk tablosu da şu şekildedir:
[TABLE="class: grid, width: 500"]
[TR]
[TD]p[/TD]
[TD]q[/TD]
[TD]p&&q[/TD]
[TD]p||q[/TD]
[TD]!p[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]1[/TD]
[TD]0[/TD]
[TD]1[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]1[/TD]
[TD]0[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]0[/TD]
[/TR]
[/TABLE]
Yazılım mühendislerinin en büyük sıkıntısı kod yazmak değildir. Yazılmış bir kodu okuyup anlamak -hele ki büyük bir projeden söz ediyorsak- asıl başınıza bela olacak konudur. Bundan korunmak için kodlarımıza açıklama/yorum koyarız.
C programlama dilinde iki şekilde açıklama koymak mümkündür. Bunlardan bir tanesi, satır bazında yapılır. Diğeriyse, belirli bir bloğu yorumlamaya yarar. Compiler her iki şekilde de, açıklama olarak belirlemiş yerleri işlemeyecektir. Aşağıdaki örnekte satır ve blok olarak, nasıl kodlarınıza açıklama getirebileceğinizi görebilirsiniz:
Kod:
/*Çok satırlı bir açıklama.
Yıldızlar arasında kalan bütün
alan, yorum olarak değerlendirilir
ve derleyici (compiler) tarafından
işlenmez.
*/
#include<stdio.h>
int main( void )
{
//Tek satırlık bir açıklama.
printf("Hello World\n");
}
Cast operator'un Türkçe karşılığı olacak bir kelime aklıma gelmedi. Ancak cast operatoru şu şekilde açıklayabiliriz. Bir değişken tipini örneğin (Tam sayı-int), bir başka tipe (virgüllü sayı-float) gibi dönüştürmek isterseniz, o zaman cast operator kullanırız.
Aşağıdaki kodu yazıp derleyin.
Kod:
#include<stdio.h>
int main( void )
{
int bolunen = 12, bolen = 8;
float bolum;
bolum = bolunen / bolen;
printf("Sonuc: %f\n",bolum);
return 0;
}
Normalde 1.5 çıkmasını beklediğiniz sonucun, 0.000000 çıkmasının nedeni casting kullanmamamızdır. Bir tam sayıyı, bir başka tam sayıya bölerseniz, sonuç bir başka tam sayı çıkar. Ve C programlama dili, bir virgüllü sayıyı tam sayıya atamaya kalktığınızda, herhangi bir yuvarlama işlemi yapmadan, virgülden sonrası atar.
Cast Operator şu şekilde kullanılmalıdır: degisken_1 = ( tip ) degisken_2;
Elimizdeki bu bilgiye göre programımızı tekrar yazalım.
Kod:
#include<stdio.h>
int main( void )
{
int bolunen = 12, bolen = 8;
float bolum;
bolum = (float)bolunen / bolen;
printf("Sonuc: %f\n",bolum);
return 0;
}
Aşağıdaki örneği inceleyelim:
Kod:
#include<stdio.h>
int main( void )
{
printf("Sonuc: %f\n", 2 / 4);
return 0;
}
Kullanılan değişken tiplerinden hangisi büyükse, sonuç o değişkenin tipinde döner. Yüksek değişken bellekte daha fazla yer kaplamaktadır. Bunun doğal bir sonucu olarakta, domine eden o'dur. Değişkenlerin büyüklüğünü daha önceki dersimizde vermiştik. Ancak hatırlamak açısından, aşağıya bakabilirsiniz.
Kod:
(DÜŞÜK) char <-> int <-> long <-> float <-> double (YÜKSEK)
Öğrendiklerinizin pekişmesi için bir program yazalım. Bu programda, klavyeden girilen, bir virgüllü sayının, yuvarlanıp, tam sayı olması gösterilsin:
Kod:
#include<stdio.h>
int main( void )
{
float girilen_sayi;
printf("Lütfen bir sayı giriniz> ");
scanf("%f",&girilen_sayi);
printf("Sayının yuvarlanmış hali: %d\n", (int)(girilen_sayi+0.5));
return 0;
}
if
Bilgisayarda yapılan bütün mantıksal işlemler kaba bir temele dayanır. Şartlar sağlandığı halde yapılacak işlem belirlenir. Ve şartlar sağlandığında, bu işlemler yapılır. Şartların kontrol edilmesini, C (ve daha birçok) programlama dilinde if operatörünü kullanarak yaparız.
if operatörünün genel kullanım yapısı şu şekildedir:
Kod:
if( koşul ) {
komut(lar)
}
Örnek bir program yazalım. Bu programda kullanıcının klavyeden, bir tam sayı girsin. Ve bizde girilen sayı, 100'den büyükse, ekrana yazdıralım:
Kod:
#include<stdio.h>
int main( void )
{
int girilen_sayi;
printf("Lütfen bir tam sayı giriniz> ");
scanf("%d",&girilen_sayi);
if( girilen_sayi > 100 )
printf("Girilen sayı 100'den büyüktür\n");
return 0;
}
Bazı durumlarda, bir koşulun doğruluğuna göre sonuç yazdırmak yetmez. Aksi durumda da ne yapacağımızı belirtmek isteriz. Bunun için if-else yapısını kullanırız.
if-else yapısı şu şekildedir:
Kod:
if( koşul ) {
komut(lar)
}
else {
komut(lar)
}
Kod:
#include<stdio.h>
int main( void )
{
int girilen_sayi;
printf("Lütfen bir tam sayı giriniz> ");
scanf("%d",&girilen_sayi);
if( girilen_sayi > 100 )
printf("Girilen sayı 100'den büyüktür\n");
else
printf("Girilen sayı 100'den küçüktür\n");
return 0;
}
İlişkisel (Relational) Operatörler
Koşullu operatörlerde, koşulun doğruluğunu kontrol ederken kullandığımız ilişkisel operatörler, aşağıda verilmiştir:
[TABLE="class: grid, width: 500"]
[TR]
[TD]<[/TD]
[TD]Küçüktür[/TD]
[/TR]
[TR]
[TD]>[/TD]
[TD]Büyüktür[/TD]
[/TR]
[TR]
[TD]==[/TD]
[TD]Eşittir[/TD]
[/TR]
[TR]
[TD]<=[/TD]
[TD]Küçük eşittir[/TD]
[/TR]
[TR]
[TD]>=[/TD]
[TD]Büyük eşittir[/TD]
[/TR]
[TR]
[TD]!=[/TD]
[TD]Eşit değildir[/TD]
[/TR]
[/TABLE]
Birleşik (Compound) Operatörler
Bazı durumlarda, kontrol edeceğimiz koşul, tek bir parametreye bağlı değildir. Örneğin, bir kişinin yaşının 65'den küçük olup olmadığına bakabiliriz. Ama 65'den küçük ve 18 yaşından büyük olup olmadığına karar vermek istersek, o zaman Birleşik/Birleştirici Operatörler'i kullanmamız uygun olacaktır.
Compound operator'ler aşağıdaki gibidir:
[TABLE="class: grid, width: 500"]
[TR]
[TD]&&[/TD]
[TD]and[/TD]
[TD]ve[/TD]
[/TR]
[TR]
[TD]||[/TD]
[TD]or[/TD]
[TD]veya[/TD]
[/TR]
[TR]
[TD]![/TD]
[TD]not[/TD]
[TD]tersi[/TD]
[/TR]
[/TABLE]
Bu operatörlerin mantıksal (logical) doğruluk tablosu da şu şekildedir:
[TABLE="class: grid, width: 500"]
[TR]
[TD]p[/TD]
[TD]q[/TD]
[TD]p&&q[/TD]
[TD]p||q[/TD]
[TD]!p[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]1[/TD]
[TD]0[/TD]
[TD]1[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]1[/TD]
[TD]0[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]0[/TD]
[/TR]
[/TABLE]