bilgiz.org

C# İle biLGİsayar programlama temelleri (C# Programlama Kitabı) Svetlin Nakov & Co




Sayfa7/31
Tarih02.07.2017
Büyüklüğü3.36 Mb.

Indir 3.36 Mb.
1   2   3   4   5   6   7   8   9   10   ...   31

2.6.5.1 Kaçma Karakterleri
Bazen klavyede gösterilmeyen veya özel anlamlara sahip karakterler ile çalışmamız gerekli olur, örneğin “yeni satır” karakteri gibi. Bu karakterler programın kaynak kodunda doğrudan temsil edilemiyorlar, ve bunları kullanmamız için şimdi tartışacağımız özel teknikler gerekir.
Kaçma karakterleri birer simgedeğerdir. Özel bir karakter dizisidir, kaynak kodunda doğrudan yazılamayan bir karakteri tarif eder. Örnek olarak, "yeni satır" karakteri verilebilir.
Kaynak kodunda doğrudan temsil edilemeyen pek çok karakter örneği vardır: çift ​​tırnak işareti, sekme, yeni satır, ters eğik çizgi ve diğerleri. İşte en sık kullanılan kaçma karakterlerinin bazıları:


  • \' – tek tırnak

  • \" – çift tırnak

  • \\ – ters eğik çizgi

  • \n – yeni satır

  • \t – sekme (tab)

  • \uXXXXUnicode sayısına göre belirlenen karakter, örneğin \u03A7.


\ (ters eğik çizgi) karakteri de kaçma karakteridir, çünkü özel bir anlama veya etkiye sahip ve kaynak kodunda doğrudan temsil edilemeyen karakterlerin ekran (veya başka bir çıkış aygıtı) üzerinde görüntülenmesini sağlar.
2.6.5.2 Kaçma Karakterleri – Örnek
Karakter simgedeğerleri bazı örnekler aşağıda verilmiştir:

// An ordinary character

char character = 'a';

Console.WriteLine(character);
// Unicode character code in a hexadecimal format

character = '\u003A';

Console.WriteLine(character);
// Assigning the single quotiation character (escaped as \')

character = '\'';

Console.WriteLine(character);
// Assigning the backslash character (escaped as \\)

character = '\\';

Console.WriteLine(character);
// Console output:

// a

// :

// '

// \



2.6.6 Dize Simgedeğerleri
Dize simgedeğerleri string türündeki veriler için kullanılır. Çift tırnak içinde bir karakter dizisidir.
char türü için yukarıda tartışılan bütün kaçma kuralları string simgedeğerleri için de geçerlidir.
Dizeler alıntı dizeyi (kelimesi kelimesine dize) belirtecek şekilde @ karakteri tarafından önekli olabilir. Alıntı dizelerde kaçma kuralları geçerli değildir, yani, \ karakteri kaçma karakteri değildir ve \ anlamına gelir. Alıntı dizelerde sadece bir karakterin kaçması gerekmektedir – “ karakteri (çift tırnak) ve tekrarlanma yoluyla kaçması sağlanır “” (çift çift tırnak). Diğer tüm karakterlere, tam anlamıyla riayet edilir hatta yeni satır karakterine bile. Alıntı dizeleri, genellikle dosya sistemi yollarının adlandırılması için kullanılır.
2.6.6.1 Dize Simgedeğerleri – Örnek
Dize simgedeğerlerinin kullanımı için birkaç örnek aşağıda verilmiştir:

string quotation = "\"Hello, Jude\", he said.";

Console.WriteLine(quotation);

string path = "C:\\Windows\\Notepad.exe";

Console.WriteLine(path);

string verbatim = @"The \ is not escaped as \\.

I am at a new line.";

Console.WriteLine(verbatim);

// Console output:

// "Hello, Jude", he said.

// C:\Windows\Notepad.exe

// The \ is not escaped as \\.

// I am at a new line.


Dizeler hakkında daha fazlasını "Dizeler ve Metin İşleme" Bölümü’nde bulacaksınız.

2.7 Alıştırmalar


  1. Aşağıdaki değerleri sbyte, byte, short, ushort, int, uint, long ve ulong türlerinden en uygununa atamak için birkaç değişken bildirin: 52.130; -115; 4825932; 97; -10000; 20000; 224; 970.700.000; 112; -44; -1.000.000; 1990; 123456789123456789.

  2. Aşağıdaki değerlerden hangileri float, double ve decimal türündeki değişkenlere atanabilir? : 5; -5,01; 34,567839023; 12,345; 8923,1234857; 3456,091124875956542151256683467.

  3. En azından 0,000001 doğruluğunda iki gerçek sayıyı karşılaştıran bir program yazın.

  4. Onaltılık formatta 256 değeri ile int türünde bir değişkeni başlatın (16’lık tabandaki bir sayı sisteminde 256’nın karşılığı 100’dür).

  5. char türünde bir değişken bildirin ve Unicode kodu 72 olan bir değere karakter olarak atayın (72’nin onaltılık gösterimini bulmak için Windows hesap makinesini kullanın).

  6. bool türünde olan isMale değişkenini bildirin ve cinsiyetinize bağlı olarak ona bir değer atayın.

  7. "Merhaba" ve "Dünya" değerlerine atanmış olan string türünde iki değişken bildirin. object türünde bir değişken bildirin. İki string değişkeninin bitiştirilmesiyle elde değeri bu değişkene atayın (gerekirse boşluk ekleyin). object türündeki değişkeni yazdırın.

  8. string türünde iki değişken bildirin ve "Merhaba" ve "Dünya" değerlerini atayın. İki string türündeki değişkenin bitiştirilmesiyle elde edilen değeri bir object türü değişkenine atayın (ortadaki boşluk karakterini atlamadan). string türünde üçüncü bir değişken bildirin ve object türünde tanımladığınız değişkenin değeri ile başlatın (tür çevrimi kullanmanız gerekir).

  9. string türünde iki değişken bildirin ve Çift tırnakların "kullanımı" zorluklara neden olmaktadır.” değerini atayın (dış tırnak işaretleri olmadan). Değişkenlerden biri alıntı dize olsun ve diğeri olmasın.

  10. "o" karakterini kullanarak bir kalp şeklini yazdıran bir program yazın.

  11. Kenarları telif hakkı karakterinden “©” oluşan bir ikizkenar üçgenini konsola yazdıran bir program yazın.

  12. Pazarlama ile ilgili bir şirket, çalışanlarının veri kaydını tutmak istiyor. Her kayıt aşağıdaki verilerle karakteristik olmalıdır : Ad, soyad, yaş, cinsiyet ('m' veya 'f') ve tekil çalışan sayısı (27,560,000 – 27,569,999). Uygun veri türlerini ve öznitelik adlarını kullanarak bir çalışanın bilgilerini korumak için gerekli uygun değişkenleri bildirin.

  13. int türünde iki değişken bildirin. Sırasıyla 5 ve 10 değerleri atayın. Değerleri değiş-tokuş (takas) edin ve bunları yazdırın.



Bölüm 3. İşleçler ve İfadeler

3.1 Bölümün İçindekileri
Bu bölümde C# işleçlerini ve farklı veri türleri ile kullanıldığında gerçekleştirebilecekleri eylemleri tanıyacağız. Başlangıçta, hangi işleçlerin yüksek önceliğe sahip olduğunu açıklayacağız ve farklı işleç türlerini alabildikleri argüman sayısına ve gerçekleştirdikleri eylemlere göre analiz edeceğiz. İkinci bölümde ise, veri türlerinin dönüşümünü inceleyeceğiz. Ne zaman ve neden gerekli olduklarını ve farklı veri türleri ile nasıl çalışılacağını açıklayacağız. Bölümün sonunda, ifadeler ve onlarla nasıl çalışmamız gerektiğine özel dikkat vereceğiz. Son olarak, bu bölümdeki bilgi materyalimizi güçlendirmek için alıştırmaları hazırladık.

3.2 İşleçler
Her programlama dili işleçleri kullanır, bunlar aracılığıyla veriler üzerinde farklı eylemleri gerçekleştirebilirsiniz. C# işleçlerine bir göz atalım ve onların ne için ve nasıl kullanıldığını görelim.

3.2.1 İşleç Nedir?
Önceki bölümde bir değişkenin nasıl bildirileceğini ve değer atanacağını öğrendikten sonra, onlar üzerinde çeşitli işlemleri gerçekleştirmeyi tartışacağız. Bu amaçla işleçler ile tanışacağız.
İşleçler temel veri türlerini ve nesneleri işlemeye izin verir. Girdi olarak bir veya daha fazla işlenen alırlar ve sonuç olarak bazı değer döndürürler. C# işleçleri özel karakterlerdir (örneğin "+", ".", "^", vb.) ve bir, iki veya üç işlenen üzerinde dönüşümler gerçekleştirirler. C# işleçlerine örnekler, matematikteki ekleme çıkarma, çarpma ve bölme işaretleridir (+, -, *, /) ve onların tamsayılar ve gerçek sayılar üzerinde gerçekleştirdikleri işlemlerdir.
3.2.2 C# İşleçleri
C# işleçleri farklı birkaç kategoriye ayrılmıştır:


  • Aritmetik işleçler – basit matematiksel işlemleri gerçekleştirmek için kullanılır.

  • Atama işleçleri – değişkenlere değer atamaya izin verir.

  • Karşılaştırma işleçleri – iki karakter ve/veya değişkenin karşılaştırılmasına olanak verir.

  • Mantıksal işleçler – Boole veri türleri ve Boole ifadeler ile çalışan işleçler.

  • İkili işleçler - sayısal verilerin ikili gösterimi üzerinde işlem gerçekleştirmek için kullanılır.

  • Türü dönüştürme işleçleri - bir türden diğerine veri dönüşümünü sağlar.



3.2.2.1 İşleç Kategorileri
Aşağıda kategorilere ayrılmış işleçlerin bir listesi yer almaktadır:

Kategori

İşleçler

aritmetik

-, +, *, /, %, ++, --

mantıksal

&&, ||, !, ^

ikili

&, |, ^, ~, <<, >>

karşılaştırma

==,!=, >, <, >=, <=

atama

=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

dize bitiştirme

+

türü dönüştürme

(type), as, is, typeof, sizeof

diğerleri

., new, (), [], ?:, ??



3.2.2.2 Argüman Sayısına Göre İşleç Türleri
İşleçler aldıkları argüman sayısına göre farklı türlere ayrılır:

İşleç türü

Argüman sayısı (işlenenler)

birli

bir işlenen alır

ikili

iki işlenen alır

üçlü

üç işlenen alır

C#’da ikili işleçlerin tümü sola-ilişkilendirilmiştir, yani atama işleçleri hariç ifadeler soldan sağa hesaplanır. Tüm atama işleçleri ve koşullu işleçler ?: ve ?? sağa-ilişkilendirilmiştir, yani ifadeler sağdan sola hesaplanır. Birli işleçler ilişkisel değildir.
C# işleçlerinden bazıları farklı veri türleri üzerinde farklı işlemleri gerçekleştirir. Örneğin + işleci sayısal veri türleri (int, long, float, vb) üzerinde kullanıldığında, işleç matematiksel toplama gerçekleştirir. Ancak, dizeler üzerinde kullanıldığında, işleç iki değişken/simgedeğerin içeriğini bitiştirir (peş peşe ekler) ve yeni dizeyi döndürür.

3.2.2.3 İşleçler – Örnek
İşleçleri kullanmaya bir örnek aşağıda verilmiştir:

int a = 7 + 9;

Console.WriteLine(a); // 16
string firstName = "John";

string lastName = "Doe";
// Do not forget the space between them

string fullName = firstName + " " + lastName;

Console.WriteLine(fullName); // John Doe



Örnek yukarıda açıklandığı gibi, nasıl + işlecinin sayılar üzerinde kullanıldığı zaman sayısal bir değer döndürdüğünü ve dizeler üzerinde kullanıldığında peş peşe bitiştirilen dizeyi döndürdüğünü göstermektedir.

3.2.3 C# İşleç Önceliği
Bazı işleçler diğerleri üzerinde önceliğe sahiptir. Örneğin, matematikte çarpma toplamanın üzerinde önceliğe sahiptir. Daha yüksek bir önceliğe sahip işleçler daha düşük olanlardan önce hesaplanmaktadır. () operatörü önceliği değiştirmek için kullanılır ve matematikte olduğu gibi ilk önce hesaplanır.
Aşağıdaki tablo, C# işleçlerinin önceliğini göstermektedir:

Öncelik

İşleçler

En yüksek öncelik



En düşük öncelik



(, )

++, -- (arttakı), new, (type), typeof, sizeof

++, -- (öntakı), +, -(birli), !, ~

*, /, %

+ (dize bitiştirme)

+, -

<<, >>

<, >, <=, >=, is, as

==, !=

&, ^, |

&&

||

?:, ??

=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=



Tablonun üst satırlarında bulunan işleçler, alt satırlarda bulunan işleçlerden daha yüksek önceliğe sahiptir ve dolayısıyla bir ifadenin hesaplanmasında bunların sırasıyla avantajı vardır. Bir işlecin önceliğini değiştirmek üzere parantez kullanabilirsiniz.
Daha karmaşık ifadeleri yazarken yada birçok işleç varsa kodun okunabilirliği ve anlaşılabilirliğindeki güçlükleri önlemek için parantez kullanılması tavsiye edilir. Örneğin:

// Ambiguous

x + y / 100
// Unambiguous, recommended

x + (y / 100)


3.2.4 Aritmetik İşleçler
C# aritmetik işleçleri +, -, * matematikte olanlar gibi aynıdır. Sayısal değerler üzerinde toplama, çıkarma ve çarpma işlemini yaparlar ve sonucu da sayısal bir değerdir.
Bölme işleci / tamsayı ve gerçek sayılar üzerinde farklı bir etkiye sahiptir. Bir tamsayıyı bir tamsayı ile böldüğünüzde (int, long ve sbyte gibi), döndürülen değer bir tamsayıdır (yuvarlama yoktur, kesirli kısım atılır). Böyle bölünmeye tamsayı bölünmesi denir. Tamsayı bölünmesine örnek: 7 / 3 = 2.
Tamsayı bölünmesinde 0 ile bölmeye izin verilmez ve bir çalışma zamanı istisnai durumuna DivideByZeroException neden olur. Tamsayı bölümünün kalanı % işleci ile elde edilebilir. Örneğin, 7 % 3 = 1, ve –10 % 2 = 0.
İki gerçek sayıyı veya biri gerçek olan iki sayıyı böldüğünüzde (örneğin float, double, vb), bir gerçek sayı bölünmesi yapıyorsunuz (tamsayı değil) ve sonuç, bir tamsayı ve bir kesir kısmıdır. Örneğin: 5,0 / 2 = 2,5. Gerçek sayı bölünmesinde 0,0 ile bölmeye izin verilir ve sırasıyla sonuç + (Sonsuz), -∞ (-Sonsuz) veya NaN (geçersiz değer) olur.
Artım işleci ++ değişkenin değerine bir birim ekler, benzer şekilde azalım işleci -- değerden bir birim çıkarır. Öntakı olarak ++ ve -- işleçlerini kullandığınızda, (hemen değişkenden önce onları yerleştirdiğinizde), önce yeni değer hesaplanır ve daha sonra sonuç geri gönderilir. Aynı işleçleri arttakı olarak kullandığınızda, (değişkenden hemen sonra onları yerleştirdiğinizde), ilk olarak işlenen özgün değer döndürülür, daha sonra toplama veya çıkarma yapılır.

3.2.4.1 Aritmetik İşleçler – Örnek
Aritmetik işleçler ve etkilerine bazı örnekler şunlardır:

int squarePerimeter = 17;

double squareSide = squarePerimeter / 4.0;

double squareArea = squareSide * squareSide;

Console.WriteLine(squareSide); // 4.25

Console.WriteLine(squareArea); // 18.0625
int a = 5;

int b = 4;

Console.WriteLine(a + b); // 9

Console.WriteLine(a + (b++)); // 9

Console.WriteLine(a + b); // 10

Console.WriteLine(a + (++b)); // 11

Console.WriteLine(a + b); // 11

Console.WriteLine(14 / a); // 2

Console.WriteLine(14 % a); // 4
int one = 1;

int zero = 0;

// Console.WriteLine(one / zero); // DivideByZeroException
double dMinusOne = -1.0;

double dZero = 0.0;

Console.WriteLine(dMinusOne / zero); // -Infinity

Console.WriteLine(one / dZero); // Infinity





3.2.5 Mantıksal İşleçler
Mantıksal (Boole) işleçleri Boole değerleri alır ve (true veya false) bir Boole sonucu döndürür. Temel Boole işleçleri "AND" (&&), "OR" (||), "exclusive OR" (^) ve mantıksal olumsuzlamadır (!).
Aşağıdaki tablo C# mantıksal işleçler ve gerçekleştirdikleri işlemleri içerir:

x

y

!x

x && y

x || y

x ^ y

true

true

false

true

true

false

true

false

false

false

true

true

false

true

true

false

true

true

false

false

true

false

false

false


Tablo ve aşağıdaki örnek mantıksal "AND" (&&) işlecinin ancak her iki değişken de doğru olduğu zaman true döndürdüğünü göstermektedir. Mantıksal "OR" (||) işleci en az bir değişken doğru olduğu zaman true döndürür. Mantıksal olumsuzlama operatörü (!) argümanın değerini değiştirir. Örneğin işlenenin true değeri varsa ve bir olumsuzlama operatörü uygulanırsa, yeni değer false olacaktır. Olumsuzlama birli işleçtir ve argümandan önce yerleştirilir. İki işlenenden sadece birinin true değeri varsa Exclusive "OR" (^) true döndürür. İki işlenenin farklı değerleri varsa onlar aynı değerleri varsa, Exclusive "OR" true sonuç dönecek, aynı değerleri varsa false dönecektir.

3.2.5.1 Mantıksal İşleçler – Örnek
Aşağıdaki örnek mantıksal işleçlerin kullanımını ve bunların etkilerini gösteriyor:

bool a = true;

bool b = false;

Console.WriteLine(a && b); // False

Console.WriteLine(a || b); // True

Console.WriteLine(!b); // True

Console.WriteLine(b || true); // True

Console.WriteLine((5 > 7) ^ (a == b)); // False




3.2.5.2 De Morgan Kuralları
Mantıksal işlemler matematiksel mantığın kapsamı içerisindeki De Morgan kurallarının altında toplanır.

!(a && b) == (!a || !b)

!(a || b) == (!a && !b)




Birinci kural, iki önermenin birletiminin (mantıksal AND) olumsuzlanmasının, onların olumsuzlamalarının ayırtımına eşit olduğunu ifade eder.
İkinci kural, her iki önermenin ayırtımının olumsuzlanmasının, onların olumsuzlamalarının birletimine eşit olduğunu ifade eder.
1   2   3   4   5   6   7   8   9   10   ...   31






    Ana sayfa


C# İle biLGİsayar programlama temelleri (C# Programlama Kitabı) Svetlin Nakov & Co

Indir 3.36 Mb.