2. C# PROGRAMINA GĠRĠġ

Transkript

2. C# PROGRAMINA GĠRĠġ
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
2. C# PROGRAMINA GĠRĠġ
2.1. Ġlk Program

İlk programımıza başlamadan önce visual studio ile console penceresi nasıl açıldığını görelim. Bunun için
aşağıdaki adımları takip edelim.
 Bir konsol uygulaması oluĢturmak ve çalıĢtırmak için
1) Visual Studio programını açıyoruz.
2) Dosya (File) menüsünü aç, Yeni (New) ve daha sonra Proje (Project) tıklayın.
3) ġablonlar Kategorileri (Templates Categories) bölmesinde, Visual C # seçin
4) Console Application seçin.
5) Proje için bir ad yazın Adı (Name) alanı.
6) Tamam 'ı (OK) tıklayın .
7) Yeni proje Solution Explorer'da görünür. Sağ tarafta
8) Program.cs açık değilse Solution Explorer’da gidin Program.cs’yi çift tıklayın kodun yazılacağı bölüm gelecektir.
9) Aşağıdaki kod ile program.cs içeriğini değiştirin.
System;
System.Collections.Generic;
using System.Linq;
using System.Text;
using
using
//Merhaba Dünya Programi
namespace
ilkuygulama
{
class merhaba
{
static void
Main(string[] args)
{
Console.WriteLine("merhaba Dünya");
Console.WriteLine("Çıkmak için herhangi bir tuşa basın");
Console.ReadKey();
}
}
}
 Programı çalıĢtırmak için f5 tuĢuna basın.
Sayfa 1
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI

ġimdi programı inceleyelim.

Yorum satırı
// Eğer yapacağımız açıklama
// Merhaba dünya C # programı.
tek satırdan oluşuyorsa bunun için iki tane bölü işareti // kullanılır.
Birden fazla açıklama satırı kullanılacaksa /* */ karakterleri arasına da yazılabilir.
/ * "Merhaba Dünya!" C # programı. Bu program ekranda "Merhaba Dünya!" mesajı görüntüler görüntüler. * /

Console.WriteLine("…");
: Kod satırı ekrana mesaj yazdırır. Mesajı ekrana yazıp bir satır aşağı iner. Bir alt satılra
inmesini Line ifadesi gerçekleştirir. Eğer Console.Write("..."); kullanılmış olsaydı alt satıra inmezdi.

Console.WriteLine("…");
ifadesi ile Console.Write("...\n"); ifadesi aynı işlemi gerçekleştiri. Çünkü Line ve \n aynı
işlemleri gerçekleştirir.

Mesaj yerine değişken yazıldığı zaman tırnak içine yazılmaz.
string
mesaj = "merhaba
dünya";
Console.WriteLine(mesaj);

Console.Write("merhaba dünya");

Console.ReadKey();

void
: Aynı görevi görmekle beraber imleci bir alt satıra indirmez.
: Herhangi bir tuşa basılmasını bekler. Bu kod kullanılmazsa konsol penceresi açılıp hemen
kapanacaktır. Bunun yerine ctrl+f5 tuş kombinasyonu da kullanılabilir.
Main : C# konsol uygulamasında bir void
biter.
main
metodu bulunmalıdır, programımız bu kontrol ile başlar ve
Sayfa 2
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
2.2 Değişkenler Ve Sabitler
2.2.1 Değişkenler
Değişkenler bir programlama dilinde verilerin depolanma alanlarını temsil eder. Tanımlanan her değişkene
bellek bölgesinden bir alan ayrılır. Bu bellek bölgesine okuma ve yazma işlemleri ise değişken ismi
üzerinden sağlanır. Kısacası; Değişken, her seferinde farklı değerler içerebilen yapıdır.

Yapı:
 <veri tipi><değişken adı>;
 <veri tipi><değişken adı1, değişken adı2, … , değişken adın >;
 Örnek:
 int i;
 int i, k, n;
 “ , “Bir veri tipiyle birden fazla değişken tanımlanabilirken ‘virgül işareti’ ile birbirinden ayrılır.
 “;” Her kod satırının sonunda, kod satırının sona erdiğini belirten ‘noktalı virgül işareti’ mutlaka kullanılır.
 = Operatörü “Değişkene Değer Atama” :
 Tanımlarken,
 Program içinde herhangi bir satırda,
 Bir veri tipi altında birden fazla isimle farklı değişkenler tanımlanabilir ve bu esnada,
değişkene değer ataması yapılabilir.
 Örnek:
 bool dogrumu = false;
 double yuzde = 98.32, ortalama = 35.32;
 char karakter = 'A';

Bazı programlama dillerinde yerel bir değişken tanımlıyorsak
değişkeni kullanmadan önce bir değer ataması yapmak zorundayız.
bu
 “+,-,*,/” operatörleri kullanılarak hesaplama işlemleri yapılabilir. Sağda hesaplanan değerler soldaki
değişkene atanmış oluyor.
 Örnek:
int
a =
b =
c =
d =
a, b, c, d;
1 + 2;
2 - 1;
5 * 2;
10 / 2;
Sayfa 3
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
 Yaşam Döngüleri:
Tanımlanan yerel değişkenler sadece tanımlandıkları bloktan erişebilir. Yaşam döngüleri sadece o blok
olduğu için başka bir bloktan erişilemez.
 Örnek:
namespace CosmicBilisim
{
class Program
{
static void Main(string[] args)
{
{ //Birinci blok
int a = 10;
}
{ //İkinci blok
int a = 20;
}
Console.WriteLine(a); // a değişkeni Main bloğunda tanımlanmadığı için program hata
verecektir. Çünkü a değişkeni sadece kendi bloğunda geçerlidir.
}
}
}
2.2.1.1 Değişken Tanımlama Kuralları
 Değişken adı içerisinde boşluk kullanılamaz. Eğer değişken adı birden fazla kelimeden oluşuyorsa kelimeler
arasına _ kullanılması tavsiye edilir.
string adi_soyadi;//doğru kullanım
string adi soyadi;//yanlış kullanım
 Birçok programlama dili küçük ve büyük harflere duyarlıdır. SAYİ, sayi, Sayi değişkenleri farklı değişkenlerdir.
byte sayi, Sayi, SAYİ; //3 farklı değişken tanımlamış olduk.
 Değişkenlerin ilk karakteri harf ya da _ (alt çizgi) ile başlamalıdır. Sayı veya diğer özel karakterlerle
başlayamaz. İlk karakter dışında değişken içinde sayı olabilir.
int
int
int
int
sayi;//doğru kullanım
_sayi;//doğru kullanım
1sayi;//yanlış kullanım
sayi1;//doğru kullanım
 Değişken içinde _(alt çizgi) dışında özel karakterler !, ], ?, -, }, >, ” gibi kullanılamaz.
int sayi?;//yanlış kullanım
int [sayi];//yanlış kullanım
 Programın kendi kodları değişken adı olarak kullanılamaz.
string null;//hatalı kullanım
int for;//hatalı kullanım
 Bazı yerlerde hata vermese bile, Türkçe karakterler kullanmamaya dikkat etmeliyiz.
Türkçe Karakterler: ç, ı, ü, ğ, ö, Ģ, Ġ, Ğ, Ü, Ö, ġ, Ç
Sayfa 4
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
 Standart yazım şekilleri:

Camel notasyonunda isim küçük harfle başlar, eğer değişken isminde birden fazla kelime geçiyor ise
isimdeki diğer kelimeler büyük harfle başlar.

Camel Notasyonu:
maas;
maasMiktari;
massMiktariAciklama;

Pascal Notasyonunda kelime büyük
kelimelerde büyük harfle başlar.

Pascal Notasyonu:
Maas();
MaasHesapla();

Bu notasyonların kullanımı mecburi değildir. Fakat sürekli olarak bu tür bir notasyona uyarak
kodlarınızı yazarsanız, kodlarınız daha anlaşılır bir hâle girer.

Eğer ondalıklı sayı tanımlanmak istenirse veri tipi double olarak belirtilmelidir.
harfle
başlar.
Camel
Notasyonunda
da
olduğu
gibi
diğer
double ondalikli = 1.2;

char, veri tipi tek karakterleri veya özel karakterleri barındırır. Char değişkeninin değerleri her zaman tek tırnak „…‟
içerisine yazılmalıdır. Char değişkenlerine sayılar da atanabilir. Çünkü sayılarda birer karakterdir.
char karakter = 'k';
char sayikarakteri = '7';

string, veri tipleri birden çok karakteri barındırır. String ifadeler çift tırnak “…” içerisinde kullanılır. + operatörü
kullanılarak iki veya daha fazla string beraber kullanılabilir.
string s = "bu";
string ss = s + " string bir ifadedir.";

bool , veri tipi sadece iki değer alır: true ve false
bool bl = true;
bl = false;
 Tip Dönüşümleri

Bir veri tipinde tanımlamış olduğunuz bir değişkeni başka bir veri tipine dönüştürebilirsiniz. Bu aşağıdaki örnekte
gösterilmiştir. Bu durumda int tam sayıları kapsadığı için i‟nin değeri 7 olur.
Double d = 7.5;
int i = (int)d;

Eğer sayı ve string ifadeleri birbirine dönüştürmek istenirse, bunun için özel dönüştürme yöntemleri kullanılır.
Bunun için convert metodu kullanılır.
int i = 5;
string s = Convert.ToString(i);//i int’ten string’e dönüştürüldü.
double d = Convert.ToDouble(i);//i string’ten double çevrildi.
byte b = Convert.ToByte(i);// i byte dönüştürüldü.
sbyte sb = Convert.ToSByte(i);// i sbyte'a dönüştürüldü.
short srt = Convert.ToInt16(i);// i short'a dönüştürüldü.
ushort usrt = Convert.ToUInt16(i);// i ushort'a dönüştürüldü.
int nt = Convert.ToInt32(i);// i int'e dönüştürüldü.
long lng = Convert.ToInt64(i);// i long'a dönüştürüldü.
ulong ulng = Convert.ToUInt64(i);// i ulong'a dönüştürüldü.
float flt = Convert.ToSingle(i);// i float'a dönüştürüldü.
decimal dclm = Convert.ToDecimal(i);// i decimal'e dönüştürüldü.
char chr = Convert.ToChar(i);// i char'a dönüştürüldü.
bool bl = Convert.ToBoolean(i);// i bool'a dönüştürüldü.
Sayfa 5
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
2.2 .2 Sabitler
Sabitlerin değeri bir kere belirlendikten sonra başka bir yerde değiştirilemez. Bir sabit tanımlamak için
const anahtar kelimesini kullanırız.
 Sabitler tanımlanırken ilk değer ataması yapılmak zorundadır.
 Program boyunca sabit değeri değiştirilemez.

Yapı:
const <veri tipi><değişken adı>=değer;
const double pi=3.4;
Sayfa 6
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
2.3 Veri Tipleri

.Net de iki çeşit veri tipi vardır:



Değer tipleri (value type)
Referans tipleri(reference type)
Değer tipleri belleğin „stack‟ bölgesinde saklanır ve veriyi direkt olarak bellek bölgesinden alırken referans tipleri
bellekte „heap‟ alanında saklanır. Yani referans tipleri içinde veri değil bellekteki „heap‟ alanının adres bilgisini
tutarlar.
 Değer Tipleri
Type Adı
CTS Karşılığı
Tam Sayı Veri Tipleri
byte
Byte
sbyte
SByte
short
Int16
ushort
UInt16
int
Int32
uint
UInt32
Boyut(size)
Değer aralığı
8 bit işaretsiz tam sayı
8 bit işaretli tam sayı
16 bit işaretli tam sayı
16 bit işaretsiz tam sayı
32 bit işaretli tam sayı
32 bit işaretsiz tam sayı
long
64 bit işaretli tam sayı
64 bit işaretsiz tam sayı
0 ile 255
-128 ile 127
-32.768 ile 32.767
0 ile 65.535
-2.147.483.648 ile 2.147.483.647
0 ile 4.294.967.295
-9.223.372.036.854.775.808 ile
+9.223.372.036.854.775.807
0 ile 18.446.744.073.709.551.615
32 bit
64 bit
128 bit
-3.4 × 1038 ile +3.4 × 1038
±5.0 × 10−324 ile ±1.7 × 10308
±1,5*10-28 ile ±7,9*1028
Int64
ulong
UInt64
Noktalı Sayı Veri Tipleri
float
Single
double
Double
decimal
Decimal
Diğer Veri Tipleri
Char
Char
String
String
bool
Boolean
16 bit karakterleri temsil eder Tek karakter
16bit*karakter adedi
Karakter dizisi
32 bit
True veya False
 Referans Tipleri

int, double, float gibi veri tipleri değer tiplerine örnek gösterilebilir. Herhangi bir sınıf türü ise referans tipine
örnek gösterilebilir.

Değer tipleri birbirine eĢitlenirken değiĢkenin barındırdığı değer bir diğer değiĢkene kopyalanır. Böylece iki
farklı bağımsız değiĢken oluĢur.

Referans tipleri ise eşitleme sırasında değişkenlerin taşıdıkları veri değil „heap‟ bölgesinde işaret ettikleri adres
kopyalanır. Böylece eğer iki referans değiĢkeni birbirine eĢitledi isek ve daha sonra bunlardan birinde
bulunan veriyi değiĢtirdi ise otomatik olarak diğer referans değiĢkeninin değeri de değiĢir. Çünkü adreste
bulunan veri değişince bu adresi işaret eden iki değişkende yeni veri bilgisine ulaşır.

Değişkenlerin tuttukları değerlerin türünü ve bellekte ki büyüklüğünü tanımlar. Şimdi yukarıda gösterilmiş olan
veri tiplerine örnekler verelim.
Sayfa 7
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
byte x = 10, y = 5;

x ve y değişkenleri byte olarak tanımlanmış olup değerleri atanmıştır. Programımızda bu değerlerle aritmetik
işlem yaptığımız zaman çıkan sonuç int olacaktır. Çünkü sayısal ifadelerde varsayılan değer int‟tir.
byte z = x + y;//hata: int’ten byte dönüşüm hatası

bu sorunu aşağıdaki şekilde çözebiliriz. Açık tip dönüşümü
byte z = (byte) (x + y);

Temel şey şu, boyutu kendisinden küçük bir veri tipine atama yapıldığı zaman tip dönüşümü gerekir. Örneğin int
veri tipinde bir değişkeni byte veri tipinde bir değişkene atama yapabilmek için dönüşüm yapılması gerekir.
Bunun tam tersi için sorun olmaz. Bu diğer sayısal veri tipleri için de geçerlidir.
byte x = 10, y = 5;
int z = x + y;// int>byte olduğu için sorun olmaz
sbyte s = 127;
short st = 32767;
ushort us = 65535;
int i = 123;

long veri tipinin sonunda istenilirse l veya L harfi kullanılabilir.
long long1 = 4294967296;
long long2 = 4294967296L;

Eğer float değeri virgüllü bir sayı ise değerin sonuna f veya F eklenmelidir.
float f = 3.5F;

double değişken değerlerinin sonuna d vey D konulabilir.
double d = 3.6D;

decimal değişken değerlerinin sonuna m vey M konulabilir.
decimal dcml = 300.5m;
Sayfa 8
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
2.4 Operatörler

Operatörler, tek başlarına kullanıldıklarında bir anlam ifade etmeyen, ancak programın işleyişine katkıda bulunan
karakterlere operatör denir.
Matematiksel Operatörler
ĠliĢkisel Operatörler
Atama ve ĠĢlemli Atama Operatörleri
Mantıksal Operatörler
KoĢul Operatörü

+,-,/,*,%
==, !=, >, <, >=, <=
=, +=, -=, *=, /=, %=, x++, x-&, |, &&, ||, !
?:
C# da bunun dışında bazı operatörler mevcuttur. Ama en çok kullanılanlar bunlar.
2.4.1 Matematiksel Operatörler
Operatör
+
*
/
%
Açıklama
Toplama iĢlemi
Çıkarma iĢlemi
Çarpma iĢlemi
Bölme iĢlemi
Mod alma iĢlemi

+ Operatörü



Toplama işlemi yapmak için kullanılır.
String ifadeleri birleştirme işlemi için kullanılabilir.
Bir string ifade ile bir sayısal ifadeyi birleştirme işlemi için kullanılabilir.
static void Main(string[] args)
{
Console.WriteLine(5+7); //Toplama İşlemi için kullanılır. Sonuç:12
Console.WriteLine("5" + "7");// String ifadeleri birleştirmek için
kullanılır.sonuç:57
Console.WriteLine("Merhaba " + 10 + "-D");// string+sayı+string ifade
}

- Operatörü

Çıkarma işlemi yapmak için kullanılır.
static void Main(string[] args)
{
int x = 5, y = 7;
int fark = x - y;
Console.WriteLine("x-y=" + fark);
}

* Operatörü
Sayfa 9
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI

Çarpma işlemi için kullanılır.
static void Main(string[] args)
{
int x = 5, y = 7;
int carpma = x * y;
Console.WriteLine("x*y=" + carpma);
}

/ Operatörü

Bölme işlemi için kullanılır.
static void Main(string[] args)
{
int x = 15, y = 2;
int bol = x / y;
Console.WriteLine("x/y=" + bol);
}

Bu örneğin sonucunda bol değişkeninin veri tipi int olarak tanımlandığı için bölüm 7 çıkacaktır.
static void Main(string[] args)
{
int x = 15, y = 2;
float bol = (float)x / y;
Console.WriteLine("x/y=" + bol);
}

Bu örneğimizde ise bol değişkeni float tanımlanmış bölüm 7.5 çıkacaktır.

% Operatörü (Mod alma)

Bir sayının başka bir sayıya bölümünden kalan sonucu alma işlemine mod alma denir.
Bu işlemi yapmak için % karakteri kullanılır.
static void Main(string[] args)
{
int x = 15, y = 2;
int mod = x % y;
Console.WriteLine("x%y=" + mod);
}
x in y ye bölümümden kalanı verir. Sonuç 1 çıkacaktır.
2.4.2 İlişkisel Operatörler
Sayfa 10
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
Operatör
==
!=
<
>
<=
>=
Açıklama
EĢittir
EĢit değildir
Küçüktür
Büyüktür
Küçük eĢittir
Büyük eĢittir

İlişkisel operatörler iki değerin karşılaştırılması işlemi için kullanılır. Programımızda koşul ifadelerinde kullanılarak
programın akşını değiştirmemizi sağlar.

Karşılaştırma sonucunda işlem doğru çıkarsa True (doğru), yanlış çıkarsa False (yanlış) olmak üzere boolen bir
değer döndürür.

Karşılaştırılan ifadelerin aynı türde olması gerekir. Yani bir sayı ile karakter ifadesi karşılaştırılamaz.

= = Operatörü : Aynı türdeki iki değerin birbirine eşitliğini kontrol eden operatördür. Bu iki değer birbirine eşit
ise True değilse False değeri döndürülür.
static void Main(string[] args)
{
int x = 10;
int y = 4;
string str1 = "bil";
string str2 = "yazilim";
Console.WriteLine(x == y);// false
Console.WriteLine(str1 == str2);// false
Console.WriteLine(3 == "3");// hatalı kullanım. int tipi ile string tipi
karşılaştırılamaz.
Console.WriteLine((2 + 2) == 4);// sonuç true olacaktır.
Console.WriteLine((2 + 1) == 4);// sonuç false olacaktır.
}

!= Operatörü: Aynı türdeki iki değerin birbirine eşit olmadığının (eşit değil) kontrolü
için kullanılan operatördür.
static void Main(string[] args)
{
int x = 7;
int y =5;
string s1 = "bilyazilim";
string s2 = "bilyazilim";
Console.WriteLine(x != y);// true
Console.WriteLine(s1 != s2);// false
Console.WriteLine(3 != 3);// false
Console.WriteLine(1 != 3); // true
}

< Operatörü: Bir değerin aynı türdeki başka bir değerden küçüklüğünün kontrolünün yapıldığı operatördür. Bu
operatör string ifadelerde kullanılmaz. Char ifadelerinde kullanılabilir.
Sayfa 11
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
static void Main(string[] args)
{
int x = 7;
int y =5;
string s1 = "bilyazilim";
string s2 = ".net";
Console.WriteLine(x < y);// false
Console.WriteLine(s2<s1);//hata:bu operatör string ifadelerde kullanılamaz.
Console.WriteLine(3 < 3);// false
Console.WriteLine('a'<'z'); // true
}

> Operatörü: Bir değerin aynı türdeki başka bir değerden büyüklüğünün kontrolünün yapıldığı operatördür. Bu
operatör string ifadelerde kullanılmaz. Char ifadelerinde kullanılabilir.
static void Main(string[] args)
{
int x = 7;
int y =5;
string s1 = "bilyazilim";
string s2 = ".net";
Console.WriteLine(x > y);// True
Console.WriteLine(s2>s1);//hata:bu operatör string ifadelerde kullanılamaz.
Console.WriteLine(3 > 3);// false
Console.WriteLine('a'>'z'); // false
}

<= Operatörü: Bir değerin aynı türdeki başka bir değerden küçük veya eşitliği kontrolünün yapıldığı operatördür.
Bu operatör string işlemlere uygulanmaz.
static void Main(string[] args)
{
int x = 7;
int y =5;
string s1 = "bilyazilim";
string s2 = ".net";
Console.WriteLine(x <= y);// false
Console.WriteLine(s2<=s1);//hata:bu operatör string ifadelerde kullanılamaz.
Console.WriteLine(3 <= 3);// true
Console.WriteLine('a'<='z'); // true
}

>= Operatörü: Bir değerin aynı türdeki başka bir değerden büyük veya eşitliği kontrolünün yapıldığı
operatördür. Bu operatör string işlemlere uygulanmaz.
static void Main(string[] args)
{
int x = 7;
int y =5;
string s1 = "bilyazilim";
string s2 = ".net";
Console.WriteLine(x >= y);// True
Console.WriteLine(s2>=s1);//hata:bu operatör string ifadelerde kullanılamaz.
Console.WriteLine(3 >= 3);// true
Console.WriteLine('a'>='z'); // false
}
2.4.3 Atama ve İşlemli Atama Operatörleri
Operatör
Açıklama
Sayfa 12
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
=
+=
-=
*=
/=
%=
++
--
Atama (sağdaki ifadeyi soldaki ifadeye atar.)
Sağdaki ifadeyi soldakine ekle
Sağdaki ifadeyi soldakinden çıkar.
Sağdaki ifadeyi soldakine çarp
Sağdaki ifadeyi soldakine böl
Soldaki ifadenin sağdaki ifadeye bölümünden kalan (sol mod sağ)
Ġfadenin değerini bir arttırır.
Ġfadenin değerini bir azaltır.
 = Operatörü: Bu operatörle sağdaki ifade soldaki ifadeye atanmış olur. Bu operatörü çok sık kullanılır.
Operatörrün solunda yalnızca bir tane değişken olmalıdır.
x+y= 23;// hata:operatörün solunda sadece bir değişken olmalıdır.
x=5; // burada x değerine 5 atanmış. Dolayısıyla x in değeri 5 olur.

Bu operatörle matematikte ki = (eşittir) operatörünü birbirine karıştırmamak gerekir.
x=x+5; // böyle bir kullanım matematikte yanlış, ama programlama da kullanılabilir.
x=5+5; // x in değeri 5, x+5 x’e atanmış oldu. x in en son değeri 10 olur.
static void Main(string[] args)
{
int x = 19, y = 5;
x = x + y; // x+y değeri x atanmış oldu.
}
 += operatörü: sağdaki ifade soldaki ifadeye eklenir. Sonuç soldaki ifadenin değeri olur.
int x = 19, y = 5;
x += y; //y değeri x eklenir x son değeri 24 olur. x=x+y aynı işlemi yapar.
//x+=y; ile x=x+y; aynı işlemi yapar.
y += x + 5;//(x+5) ifadesi y'ye eklenir. y değeri 34 olur.

Bir bir artırma işlemi için x+=1 (veya x=x+1) yerine x++ işlemi kullanılabilir.

++ değişkenden sonra kullanılırsa önce atama işlemi yapılır sonra artırma yapılır.
int x=0, y=0,toplam;
x=y++;
toplam = x + y; //önce x y’ye eşitlenir, daha sonra y artırılır. İşlem sonucu: x=0, y=1, toplam=1 olur.

++ değişkenden önce kullanılırsa önce artırım yapılır daha sonra atama işlemi yapılır.
int x=0, y=0,toplam;
x=++y;
toplam = x + y; //önce y artırılır daha sonra x y’ye eşitlenir. İşlem sonucu: x=1, y=1, toplam=2 olur.

Yukarıdaki ++ operatörü için geçerli olan işlem, aynen -– içinde geçerlidir.
 = operatörü: sağdaki ifadeden soldaki ifadeyi çıkarır. Sonuç soldaki ifadenin değeri olur.
byte x = 7, y = 5;
x -= y;// x=x-y; sonuç x in değeri 2 olur.
y -= 2;// y nin değeri 2 azaltılmış oldu. y 3 oldu.
Sayfa 13
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
 *= operatörü: sağdaki ifade ile soldaki ifade çarpılır. Sonuç soldaki ifadenin değeri olur.
byte x = 7, y = 5;
x *= y;// x=x*y; sonuç x in değeri 35 olur.
y *= 2;// y=y*2; y nin değeri 10 olur.
 /=operatörü: sağdaki ifade soldaki ifadeye bölünür. Sonuç soldaki ifadenin değeri olur.
byte x = 10, y = 5;
x /= y;// x=x/y; sonuç x in değeri 2 olur.
y /= 2;// y=y/2; y nin değeri 2 olur.
 %= operatörü: soldaki ifadenin sağdaki ifadeye bölümünden kalan bulunur. Bu kalan değer soldaki ifadenin
değeri olur.
static void Main(string[] args)
{
int x =23, y = 5;
x%= y;//x=x%y ifadesiyle aynı işlemi yapar.x 3 olur.
Console.WriteLine(x);// Ekranda 3 gösterir.
}
 ++ operatörü: bir değişkenin değerini bir artırır. Değişkenin önünde ve arkasında kullanılabilir. Önünde
kullanıldığında önce değişkenin değerini artırır sonra atama yapar. Arkasında kullanıldığı zaman önce atama
yapar sonra artırır. Örnekler üzerinde inceleyelim.
static void Main(string[] args)
{
int x = 7, y = 5, z = 3;
x++;// x bir artar, x değeri 8 olur.
Console.WriteLine("x:" + x);
x = y++;// y değeri x'e atanır, y nin değeri 1 artar. x değeri 5, y değeri 6 olur.
Console.WriteLine("x:" + x + ", y:" + y);
x = ++z;//z değeri 1 artar, z değeri x'e atanır. x değeri 4, z değeri 4 olur.
Console.WriteLine("x:" + x + ", z:" + z);
}
 -- operatörü: Bir değişkenin değerini azaltır. Değişkenin önünde ve arkasında kullanılabilir. Önünde
kullanıldığında önce değişkenin değerini azaltır sonra atama yapar. Arkasında kullanıldığı zaman önce atama
yapar sonra azaltır. Örnekler üzerinde inceleyelim.
static void Main(string[] args)
{
int x = 7, y = 5, z = 3;
x--;// x bir azalır, x değeri 6 olur.
Console.WriteLine("x:"+x);
x = y--;// y değeri x'e atanır, y nin değeri 1 azalır. x değeri 5, y değeri 4 olur.
Console.WriteLine("x:"+x+", y:"+y);
x = --z;//z değeri 1 azalır, z değeri x'e atanır. x değeri 2, z değeri 2 olur.
Console.WriteLine("x:"+x+", z:"+z);
}
2.4.4 Mantıksal Operatörler

Mantıksal değerler birden fazla koşulun olduğu durumlarda kullanılır. Bütün boolen değerlerini tek bir boolen
değere dönüştürmede kullanılır.
Sayfa 14
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
Operatör
&&
&
||
|
!
Açıklama
Mantıksal ve
Bitsel ve
Mantıkasl veya
Bitsel veya
Değil
 && operatörü: Mantıksal ve operatörü bütün koşulların doğru (true) olması durumunda sonuç doğru (true),
koşullardan herhangi biri yanlış (false) olduğu zaman sonuç yanlış (false) olur.
True && false = false,
True && true = true,
False && false = false

& ile && operatörü aynı işlemi yaparlar. Birden fazla koşulda && operatörü false
gördüğü anda diğer koşullara bakmadan sonuç false olur. & operatörü ise bütün
koşullara bakar ve sonucu öyle belirler. Onun için &&, & den daha hızlı
çalışabilir.
static void Main(string[] args)
{
int x = 5, y = 7, z = 11;
bool a = (x == 5 && y == 10 && z == 11);// true ve false ve true, a'nın değeri false
Console.WriteLine(a);//ekranda false gösterir.
}
 || operatörü: Mantıksal ve operatörü bütün koşulların false (yanlış) olması durumunda sonuç false (yanlış),
koşullardan herhangi biri true (doğru) olduğu zaman sonuç true (doğru) olur.
True && false = true,
True && true = true,
False && false = false

| ile || operatörü aynı işlemi yaparlar. Birden fazla koşulda || operatörü true
gördüğü anda diğer koşullara bakmadan sonuç true olur. | operatörü ise bütün
koşullara bakar ve sonucu öyle belirler. Onun için ||, | den daha hızlı
çalışabilir.
static void Main(string[] args)
{
int x = 5, y = 7, z = 11;
bool a = (x == 5 || y == 10 || z == 11);// true ve false ve true, a'nın değeri true
Console.WriteLine(a);//ekranda true gösterir.
}
 ! operatörü: “Değil” anlamına gelir. Boolen ifadeleri tersine çevirir.
static void Main(string[] args)
{
int x = 5, y = 7, z = 11;
bool a=!(x<7);// a'nın değeri false olur.
bool b = !(y > z);// b'nın değeri true olur.
Console.WriteLine("a=" + a + ", b=" + b);//çıktısı: a=False, b=True
}
 ?: KoĢul Operatörü : Verilen koşula göre iki ifadeden biri çalışır. Koşun doğru olması ve yanlış olması durumuna
göre çalışır.

Kullanımı:
 Koşul ? doğruysa burası : yanlışsa burası
Sayfa 15
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
 Koşul ? a : b // koşul doğruysa a, değilse b olur.
static void Main(string[] args)
{
Console.WriteLine("Devam etmek istiyor musunuz?(e,y)");
string cvp = Console.ReadLine();
Console.WriteLine(cvp=="e"?"Tebrikler...":"Sağlıkla kalın...");
}
.4.5 İşlem Önceliği

İşlem öncelik sırası aşağıdaki tabloda en yüksekten en düşüğe doğru sıralanmıştır.

Yapılan işlemde yukarıdaki sıra tamamlandıktan sonra eğer aynı tür işlemler kaldıysa işlem soldan sağa doğru
yapılır.
 Örnek: 3+5*2 işleminin sonucu nedir?
 Yukarıdaki işlemde önce 3 ile 5‟i toplar ve sonucu 2 ile çarparsanız sonuç yanlış çıkar.
 İşlem önceliğine göre önce 2 ile 5‟i çarpıp çıkan sonuçla 3‟ü topladığımız zaman sonuç doğru çıkar.
 3+5*2 = 8*2 = 16 // yanlış cevap
 3+5*2 = 3 + 10 = 13 // doğru cevap
.5

Giriş - Çıkış İşlemleri:
Console.WriteLine() :
bu komutu daha önceki derslerde sık sık kullandık. Ekrana bilgi gösterme komutudur. Bilgiyi
ekranda gösterir ve imleci bir alt satıra indirir.
Sayfa 16
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
Console.WriteLine("bilyazilim.net");//Ekrana bilyazilim.net yazılacaktır.

Console.ReadLine() :
bu komut klavyeden değerler okunmasına ve bir değişkene değer atamak için kullanılır.
Console.Write("Bir mesaj giriniz:");
string s = Console.ReadLine();
Console.WriteLine(s);

C# programında klavyede bir veri girildiği zaman program bunu string olarak alır. Bunun için string bir ifade
girildiği zaman dönüştürmeye gerek yoktur. Ama string dışında bir veri girildiği zaman mutlaka o veri tipine
dönüştürmek gerekiyor.
string s = Console.ReadLine();

bu örneğimizde dönüşüm yapmadan s değişkenine direkt olarak değer atıyoruz.
int x = Convert.ToInt32(Console.ReadLine());// x int'e dönüştürüldü.

Bu örneğimizde ise Console.ReadLine() ile klavyeden değer giriyoruz. Convert.ToInt32 ile de klavyeden girilen
değerin int veri tipine dönüştürüyoruz. Dönüştürmek anlamına gelen Convert burada anahtar kelimedir. To.Int32
ise dönüşüm yapılacağı veri tipini gösteriyor.
 ÇıkıĢ parametreleri:


\n: Bir alt satıra geçmek için kullanılır.
\r: Paragraf başı yapmak için kullanılır.
static void Main(string[] args)
{
Console.WriteLine("\n\n Merhaba Dünya");
Console.ReadKey();
}

Şimdi bunları basit bir örnek üzerinde görelim.
static void Main(string[] args)
{
// Klavyeden girilen iki tane değerin toplamını yapan ekranda gösteren program
int x, y;
Console.Write("1. sayıyı giriniz:");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("2. sayıyı giriniz:");
y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("x+y="+ (x + y));
Console.ReadKey();
}
Çıktısı:
1. sayıyı giriniz:5
2. sayıyı giriniz:7
x+y=12

Örneği inceleyelim.
int x, y;

int
veri tipinde x ve y diye iki değişken tanımlıyoruz.
Console.Write("1. sayıyı giriniz:")
Sayfa 17
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI

Bu kodumuzla ekranda mesajı gösteriyoruz.
x = Convert.ToInt32(Console.ReadLine());

Bu kodla Console.ReadLine() ile klavyeden değer girilmesini sağlıyor, Convert.ToInt32 ile
dönüştürüyor ve = ile girilen değeri x değişkenine atama yapıyor.
int
veri tipine
Console.Write("2. sayıyı giriniz:");

Bu kodumuzla ekranda mesajı gösteriyoruz.
y = Convert.ToInt32(Console.ReadLine());

Bu kodla Console.ReadLine() ile klavyeden değer girilmesini sağlıyor, Convert.ToInt32 ile int veri tipine dönüştürüyor
ve = ile girilen değeri y değişkenine atama yapıyor.
Console.WriteLine("x+y="+ (x + y));

+ operatörünün birleştirme ve toplama işlemlerini yaptığını operatörler konusunda anlatmıştık. İşte bu kodda
(x+y) ile toplama işlemi, diğer + operatörü toplam değeri ile açıklamayı birleştiriyor. Açıklama ifadeleri “…” (çift
tırnak) içine yazılır. Değişkenler ise “…” içine yazılmaz.
Console.ReadKey();

İşlemi ekranda gösterdikten sonra bir tuşa basılmasını bekler. Ctrl+f5 ile aynı işlevi görür.
 {0} ifadesi: Bilgileri istenilen bir şekilde ekranda göstermek için {0} ifadesini de kullanılabilir. Virgülden sonra
tanımlanan ilk değişken değeri {0} yerine yazılır. Bu örnek üzerinde daha iyi anlaşılacaktır. Yukarıda ki örneği alıp
biraz değiştirelim.
static void Main(string[] args)
{
// Klavyeden girilen iki tane değerin toplamını yapan ekranda gösteren program
int x, y;
Console.Write("1. sayıyı giriniz:");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("2. sayıyı giriniz:");
y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0}+{1}={2}",x,y,(x + y));
Console.ReadKey();
}
Çıktısı:
1. sayıyı giriniz:5
2. sayıyı giriniz:7
5+7=12
 Yukarıdaki örnekle aynı işlemi yapıyor. Sadece sonucu gösterme şekli farklı. Bu kullanım biraz daha kullanışlı
diyebiliriz.
Örneği inceleyelim.
Örnekteki şu kodu inceleyelim. Diğerleri aynı çünkü.
Sayfa 18
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
Console.WriteLine("{0}+{1}={2}",x,y,(x + y));

Birinci virgülden sonra x değerini {0} yerine yazdı. İkinci virgülden sonraki y değerini {1} yerine yazdı. Üçüncü
virgülden sonraki (x+y) değerini {2} yerine yazdı. Bu şekilde aynı anda birden fazla değişken ekrana yazdırılmak
isteniyorsa {0},{1},{2}… şeklinde devam eder. Değişkenler virgülle ayrılarak tanımlanır. Konunun mantığını
kavradıktan sonra işlemler çok kolay oluyor. Bakın aynı işlemi yapan farklı iki kod göstereyim.
Console.WriteLine("{0}+{1}={2}", x, y,(x + y));

ve
Console.WriteLine(x+"+"+y+"="+(x+y));

Aradaki farkı siz bulun. Aynı işlemi yapıyorlar. Ama gidiş yolu farklı.
 Formatlı Çıkış İşlemleri

Tam sayı tipinde tanımlanmış değişkenler üzerinde uygulanabilecek format biçimleri aşağıdaki tabloda
belirtilmiştir.
 Tam sayı tipindeki değişkenlere uygulanacak format listesi
 Formatlı yazımda kullanılan parametrelerin açıklaması:
 C: Sayıyı para birimi şeklinde gösterir.
 D: Tek kullanıldığında bir anlam ifade etmez. Yanına sayı yazılarak kullanılır. Formatı alınacak sayının basamak
değeri yanında yazılan sayıdan küçükse arta kalan değer kadar yanına sıfır eklenir.
 E: Sayıyı 10 üzeri şeklinde gösterir.
 F: Sayıların virgülden sonraki basamak sayısı ayarlamada kullanılır.
 N: Sayıyı binlik basamaklara ayırarak yazar.
 X: Sayıyı hexdecimal(16' lık sayı sistemi) olarak yazar.
# işareti: Formatlı yazımda her bir sayı için # işaretini kullanabiliriz.
static void Main(string[] args)
{
Console.Write("{0:(###) ### ## ##}", 2123552154);
Console.ReadKey();
}
Çıktısı:
Sayfa 19
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
 Tarih formatlama
 Özel Tarih formatlama


Giriş-Çıkış İşlemleri Hata Mesajları
Hazırlayacağımız programın en önemli özelliklerinden biri de stabil çalışması olmalıdır. Stabil çalışması
programımızın hatalara karşı ne kadar hazırlıklı ve kullanıcıya verdiği geri dönütle eş değerdir.
Sayfa 20
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI

Programımızın çalışması sırasında oluşabilecek hatalar genellikle kullanıcı girişlerinden kaynaklanır. Bu yüzden
kullanıcı girişlerini kontrol altına alarak çalışma zamanında oluşabilecek hataları en aza indirmek ise biz
programcıların görevidir.

Önce hatalar oluştuğunda programın nasıl sonlandığını görelim daha sonra bunun için bir çözüm arayalım.
 Örnek:
static void Main(string[] args)
{
int x;
Console.Write("Bir Sayıyı Giriniz: ");
x = Convert.ToInt16(Console.ReadLine());
Console.ReadKey();
}
 Programımızı çalıştıralım ve sayı yerine string bir ifade girelim.
Ekran çıktısı
 Programda istenilen sayı yerine „string‟ bir ifade girdiğimiz zaman ekran çıktısı aşağıdaki gibi olacaktır. „String‟
ifade „int‟ tipine çevrilmede zorlanılacağından program duracaktır. Giriş dizesinin doğru olmadığına dair bir hata
verecektir (Input string was notin a corrent format.) .
 Giriş dizesi doğru biçimde değil hata mesajı
 Yukarıdaki kodlarda da görüldüğü gibi program esnasında kullanıcılar tarafından yapılan hatalı girişler programın
hatayla karşılaşmasına ve durmasına sebep olmaktadır. Biz bu hataları program içinde nasıl yakalarız ve
kullanıcıya hata hakkında nasıl mesaj veririz buna bakalım.
 .Net programcılıkta biz bu tür hatalara istisnalar(Exception) diyoruz. İstisnalar, programımızın çalışma zamanında
yani program çalışırken ortaya çıkan olağan dışı durumlardır.
 .NET ortamında her şey gibi istisnalar da sınıflar kullanılarak oluşturulmakta ve tüm istisnalar temel
System.Exception nesnesinden türetilmektedir.
Sayfa 21
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI
 İstisnaları program esnasında yakalamak ve kullanıcıya hata mesajını vermek için try{} catch{} finally{} bloklarını
kullanıyoruz.

try{} bloku: İstisnanın çıkması muhtemel kodların yazıldığı bloktur.

catch{} bloku: Oluşan istisnanın yakalandığı ve kullanıcıya sunulduğu bloktur.

finally{} bloku: Try bloku içinde hata olsa da olmasa da çalışmasını istediğimiz kodların yazıldığı bloktur. Finally
bloğu genellikle bazı kaynakları serbest bırakmak için kullanılır. Kullanılması isteğe bağlı bir
bloktur. En sık kullanıldığı yerler açık olan veri tabanı bağlantılarının program kırılsa da kırılmasa
da kapatılması durumlarıdır.
 Örnek :
static void Main(string[] args)
{
int x, y;
Console.Write("1. Sayıyı Giriniz: ");
x = Convert.ToInt16(Console.ReadLine());
Console.Write("2. Sayıyı Giriniz: ");
y = Convert.ToInt16(Console.ReadLine());
try
{
Console.WriteLine("{0} / {1} = {2}", x, y, x / y);
}
catch (Exception e)
{
Console.WriteLine("Hata Oluştu : {0}", e);
}
finally
{
Console.WriteLine("İyi Günler");
}
Console.ReadKey();
}

Programımızı çalıştırıp aşağıdaki gibi değerleri girdiğimiz zaman herhangi bir hatayla karşılaşılmadığından
istediğimiz sonucu üretecektir.
Ekran Çıktısı

Fakat programımıza aşağıdaki değerleri girdiğimiz zaman hatayla karşılaşılacak ve programımız olduğu yerde
durup catch{} blokuna atlayacak ve buradan çalışmaya devam edecektir.
Ekran Çıktısı


Açıklama Satırları
Açıklama satırları programcıya kod içinde tanımlama metinleri yazma imkânı sağlar. Bu sayede kod parçacıklarının
ne iş yaptıkları anlatılmış olur. Kodlarımız arasına açıklama satırları eklemek oldukça önemlidir.
Sayfa 22
2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI

Az satırlı program kodlarında bir şey ifade etmeyebilir fakat büyük programlarda kod bloklarının ne işe yaradıkları
yazılarak programcının ileride karşılaşacağı problemleri kolay çözmesinde yardımcı olacaktır.

Ayrıca açıklama satırları program derlenirken dosya içerisine alınmadığından oluşan dosyanın boyutunu ya da
çalışmasını etkilememektedir.
static void Main(string[] args)
{
//Bu Satır ekrana Merhaba Dünya Yazar.
Console.Write("Merhaba Dünya");
}

// karakterlerinden sonra gelen ve satırın sonuna kadar olan sözcükler yorum satırlarıdır ve programlama dili
derleyicisi tarafından görünmez.

Aynı zamanda birden fazla satıra yorum eklemek istiyorsak /* */ karakterleri arasına yorum yazarız.
static void Main(string[] args)
{
/* Bu Satır ekrana Merhaba Dünya Yazar.
Bu Kısım derleyici tarafından yok sayılır.
*/
Console.Write("Merhaba Dünya");
}
Sayfa 23

Benzer belgeler

C# ile İlk Uygulamalar ve Değişkenler

C# ile İlk Uygulamalar ve Değişkenler Eğer sayı ve string ifadeleri birbirine dönüştürmek istenirse, bunun için özel dönüştürme yöntemleri kullanılır. Bunun için convert metodu kullanılır. int i = 5; string s = Convert.ToString(i);//i ...

Detaylı

BİL 288 BİLGİSAYAR PROGRAMLAMA-II

BİL 288 BİLGİSAYAR PROGRAMLAMA-II Değişkenler bir programlama dilinde verilerin depolanma alanlarını temsil eder. Tanımlanan her değişkene bellek bölgesinden bir alan ayrılır. Bu bellek bölgesine okuma ve yazma işlemleri ise değişk...

Detaylı