yzm 2105 nesneye yönelik programlama · c# programlama dili elemanları 2 bu bölümde; veri...
TRANSCRIPT
YZM 2105
Nesneye Yönelik Programlama
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
1
BÖLÜM - 2
C# Programlama Dili Elemanları
2
Bu bölümde;
Veri tipleri
Değişkenler ve Sabitler
Tip Dönüşümleri
Operatörler
Akış Kontrol Mekanizmaları ve Döngüler
Diziler
Yapılar (Struct)
ile ilgili konular anlatılacaktır.
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Sabitler
Sabitler, içeriği sabit olan değer ve ifadelerin saklanması
için kullanılan değişken türleridir.
3
• Başlangıçta sabit değişkene bir değer vererek,
ihtiyaç duyulduğunda bu değişkeni
kullanabiliriz.
• Değerini sonradan değiştirmek istediğimizde
derleyici, derleme zamanı hatası verir.
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Sabitler
• Sabit değişkenlerinin tanımlandığı satırda değer
verilmek zorundadır.
• C# programlama dilinde const anahtar sözcüğü
kullanılarak tanımlanır.
4Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Program içerisinde üretilen değerleri bellekte geçici
olarak saklamak için kullanılırlar.
• İlk değerlerinin atanması zorunlu değildir. Program
içerisinde de sonradan değer ataması yapılabilir.
• Aynı satırda aynı tipte birden fazla değişken
tanımlaması ve değer ataması yapılabilir.
• Global olarak tanımlanmayan değişkenler sadece
tanımlandıkları metot içerisinde kullanılabilirler.
• Değişkenlerin tipini öğrenmek için GetType()
metodu kullanılır.
5
Değişkenler
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
[değişkenin tipi] [değişkenin adı] = [ilk değer] ;
int yarıcap = 12;
float alan;
int yukseklik = 2 , taban = 4 ;
string adSoyad ;
string ad = " Deniz", soyad = " Kılınç";
6
Değişkenlerin Tanımlanması
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
7
Değişken TürleriDeğişken Türü Boyutu CTS Değer Aralığı Örnek
byte 1 bayt System.Byte 0, ..., 255 (tam sayı) byte a=5;
sbyte 1 bayt System.Byte -128, ..., 127 (tam sayı) sbyte a=5;
short 2 bayt System.Int16 -32768, ..., 32767 (tam sayı) short a=5;
ushort 2 bayt System.UInt16 0, ..., 65535 (tam sayı) ushort a=5;
int 4 bayt System.Int32-2147483648, ..., 2147483647
(tam sayı)int a=5;
uint 4 bayt System.UInt32 0, ..., 4294967295 (tam sayı) uint a=5;
long 8 bayt System.Int64-9223372036854775808, ...,
9223372036854775807 (tam sayı)long a=5;
ulong 8 bayt System.UInt640, ..., 18446744073709551615
(tam sayı)ulong a=5;
float 4 bayt System.Single ±1.5*10-45, ..., ±3.4*1038 (reel sayı)float a=5F; veya float
a=5f;
double 8 bayt System.Double±5.0*10-324, ..., ±1.7*10308 (reel
sayı)
double a=5; veya double
a=5d; veya double a=5D;
decimal 16 bayt System.Decimal ±1.5*10-28, ..., ±7.9*1028 (reel sayı)decimal
a=5M; veya decimal a=5m;
bool 1 bayt System.Boolean True ya da False bool cevap = False;
char 1 bayt System.Char 16 Bit Unicode Karakter char harf = 'a';
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Değişken tanımlamaları istenirse programlama diline
ait değişken tipi tanımlamasıyla, istenirse .NET
uygulama geliştirme platformunun bir özelliği olan
CTS (Common Type System) tanımlaması ile
yapılabilir.
8
Değişken Türleri (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• .NET uygulama geliştirme platformunda
programlama dilleri arasındaki
standardizasyonu CTS dediğimiz sistem
sağlar.
• C#.NET ile program yazarken tamsayı
veri tipinde değişken tanımlamak için int
ifadesini kullanırız.
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama 9
Common Type System
• VB.NET'te ise tamsayı veri tipi Integer olarak geçer.
• Her iki dil farklı olsa dahi CTS dediğimiz sistem sayesinde int ve
Integer tanımlamalar MSIL'e çevrilirken CTS sisteminde tanımlanan
System.Int32 olarak aradile çevrilecektir.
Değişken Tipi Dönüşümleri
10Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
a) Bilinçsiz (İmplicit) Tür Dönüşümü
b) Bilinçli (Explicit) Tür Dönüşümü (Type-casting)
c) Tostring() Metodu İle Tür Dönüşümü
d) Convert Sınıfı İle Tür Dönüşümü
11
Değişken Tipi Dönüşümleri
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Değişkenin tanımlandığı veri tipinden daha yüksek
kapasiteli bir veri tipindeki değişkene atanabilir. Bu
duruma Bilinçsiz (İmplicit) Tür Dönüşümü denir.
12
Bilinçsiz (İmplicit) Tür Dönüşümü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Bilinçli Tür Dönüşümü, derleyicinin izin vermediği
durumlarda kullanılır. Bir diğer adı type-casting olan
bu yöntemde veri kaybı yaşanabilir.
[Değişken] = [hedef tür] [değişken adı]
i = (int) a;
j = (char) b;
13
Bilinçli (Explicit) Tür Dönüşümü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
14
Bilinçli (Explicit) Tür Dönüşümü (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• ToString() metodu Bir değişken veya
sabitin değerini string veri tipine
dönüştürerek tutar.
• Kullanımı:
[değişken adı] . ToString();
15
ToString() Metodu İle Tür Dönüşümü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
16
ToString() Metodu İle Tür Dönüşümü (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• System isim alanının altındaki Convert sınıfı tür
dönüşümü yapılabilen metotları içeren bir
sınıftır.
• Bu metodlar ile hemen hemen her türü, her türe
CTS karşılıklarını kullanarak dönüştürülür.
[değişken] = Convert . [hedef tür] ( [değişken] );
17
Convert Sınıfı İle Tür Dönüşümü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
18
Convert Sınıfı İle Tür Dönüşümü (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
19
Convert Sınıfı İle Tür Dönüşümü (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Operatörler
20Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Programlama dillerinde tek başlarına herhangi bir
anlamı olmayan ancak programın işleyişine katkıda
bulunan karakter ya da karakter topluluklarına
operatör denir. Örneğin a+b ifadesinde + işareti bir
operatördür.
• Operatörlerin etki ettikleri sabit ya da değişkenlere
ise operand denir. Örneğin a+b ifadesinde a ve b
birer operanddır.
21
Operatörler
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Operatörler
( )
! + - ++ --
* / %
+ -
< <= > >= is as
== !=
&
^
|
&&
||
?:
= *= /= %= += -= &= ^= !=
22
Operatörler
Operatörlerde İşlem
önceliği
En Yüksek
En Düşük
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
23
Operatörler
a) Aritmetik Operatörler
b) Aktarma Operatörü
c) Mantıksal Operatörler
d) Karşılaştırma Operatörleri
e) «as» ve «is» Operatörleri
f) typeof operatörü
g) Bitsel Operatörler
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
24
Aritmetik Operatörler
Operatör Açıklama
+ Toplama
- Çıkarma
* Çarpma
/ Bölme
% Mod Alma
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
25
Aktarma Operatörleri
Operatör Açıklama
+=Eşitliğin sağındaki ve solundaki değeritoplar ve solundaki değişkene atar
-=Eşitliğin sağındaki ve solundaki değeriçıkarır ve solundaki değişkene atar
*=Eşitliğin sağındaki ve solundaki değeriçarpar ve solundaki değişkene atar
/=Eşitliğin sağındaki değeri solundakideğerine bölerek solundaki değişkeneatar
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
26
Mantıksal Operatörler
Operatör Açıklama
&& Ve
|| Veya
! Değil
^ Özel Veya
?? Null coalescing
?: Koşul
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• İlk ifade ve sonraki ifadeler doğru ise True değerini
döndürür. Herhangi bir koşul False değerini taşıyorsa
geriye False değerini döndürür.
– 1 && 1 = True
– (5 < 6 ) && (4 < 4) = False
– (2^4 < 3) && (6/2 < 4) = False
27
&& (Ve) Operatörü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• İlk ifade veya sonraki ifadelerden herhangi birisi
doğru ise True değerini döndürür.
– 1 || 1 = True
– (5 < 6 ) || (4 < 4) = False
– (2^4 < 3) || (6/2 < 4) = True
28
|| (Veya) Operatörü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Koşulun değerini tersine çevirir.
– ( 8 < 3 ) || (4/8 < 3/9)! =
29
! (Değil) Operatörü
False (False)!||
TrueFalse || =
=
True
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Eğer ilk değişken NULL ise ikinci ifade eşitliğin
solundaki değişkene atanır.
30
?? Null Coalescing Operatörü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
31
• Verilen koşula göre verilen değerlerden birini
çalıştırır.
[koşul] ? [doğruysa_değer] : [yanlışsa_değer]
?: Koşul Operatörü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
32
Karşılaştırma Operatörleri
Operatör Açıklama
< Küçüktür
> Büyüktür
<= Küçük Eşittir
>= Büyük Eşittir
== Eşittir
!= Eşit Değildir
--> Uzaklaşma Operatörü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Akış Kontrol Mekanizmaları
33Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
1. Karar Yapıları
a) if - else Yapısı
b) switch - case Yapısı
2. Döngüler
a) for Döngüsü
b) foreach Döngüsü
c) while Döngüsü
d) do – while Döngüsü
34
Akış Kontrol Mekanizmaları
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Karar Yapıları
35Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• If ve else karşılaştırma deyimidir.
else kullanımı isteğe bağlıdır.
• Sorgulanan koşul olumlu ise if
den sonraki bölüm ; olumsuz ise
else den sonraki bölün işleme
konulur.
36
if – else Yapısı
• Tek satır deyim içeren bloklarda {} sembolünün
kullanımına gerek yoktur.
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Bir değişkenin değerini sabitlerle
karşılaştırılması sonucunda farklı işlemler
yapılacak ise switch – case yapısı kullanılır.
• switch – case ile yapılan kontroller if – else
kontrol yapısıyla da yapılabilir fakat switch –
case yapısı sabit değerler karşılaştırılacağında
kodun okunabilirliğini arttırır.
• Kontrol edilen sabitler double ve float olamaz.
• Aynı sabit değer ayrı case bloklarında
bulunamaz.
37
switch – case Yapısı
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Genel yazım biçimi şu şekildedir:
38
switch – case Yapısı
Switch ( [koşul] ) {
case [sabit] : [işleme alınacak komutlar]; break;
case [sabit] : [işleme alınacak komutlar]; break;
. . .
default : [sabitlerle eşleşmeyince işleme alınacak komutlar]; break;
}Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
39
Döngüler
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Bir veya birden fazla kod satırının belirtilen koşulları
sağladığı sürece artış ve ya azalım değeri kadar
tekrarlanmasını sağlayan döngüdür.
• Başlangıç ve bitiş değerleri olmak zorundadır.
• Başlangıç değeri, koşul, artış veya azalım kısımları
farklı bir yerde tanımlanmak istenirse boş
bırakılabilir. Fakat noktalı virgüller kesinlikle
olmalıdır.
40
for Döngüsü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Genel yazım biçimi şu şekildedir:
41
for Döngüsü
for ( [başlangıç değeri ] ; [koşul] ; [artış veya azalım] ) {
. . .
[işleme alınacak komutlar];
. . .}
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
42
foreach Döngüsü
• foreach döngüsü bir dizinin ve ya koleksiyonun her
elemanı için bulundurduğu komutları çalıştıran
döngüdür.
• Dizinin her elemanının değerini geçici bir değişkene
atayarak bu değişken üzerinde işlemler yapmamızı
sağlar.
• foreach döngüsü ile dizi veya koleksiyondaki
elemanların değerleri değiştirilemez. Sadece «read –
only» işlemler yapılabilir.
• Dizi veya koleksiyonların eleman sayıları
bilinmediğinde kullanılır.
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Genel yazım biçimi şu şekildedir:
43
foreach Döngüsü
foreach ( [değişkenVeriTipi] [değişkenAdı] in [dizi/koleksiyon] ) {
. . .
[işleme alınacak komutlar];
. . .}
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
44
foreach Döngüsü
Örnek:
• Bir dizinin tüm elemanlarının ekrana yazdırılması
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Not: Kodlama
esnasında for ve
foreach yazdıktan
sonra iki kere tab
tuşuna basmamız
halinde derleyici içerik
bloğunu otomatik olarak
oluşturacaktır.
• while döngüsü bir koşulun doğru olduğu durumlarda
belirli işlemlerin tekrarlanması için kullanılan
döngüdür.
• Koşul yanlış olduğunda döngüden çıkılır.
• Döngünün başlayabilmesi için başlangıçta koşulun
sağlanması / koşulun doğru olması gereklidir.
• for döngüsünün yalnızca koşuldan oluşan halidir.
45
while Döngüsü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Genel yazımı şu şekildedir:
46
while Döngüsü
while ( [koşul] ){
. . .
[işleme alınacak komutlar] ;
[arttırım / azalım] ;
. . .}
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• while döngüsü ile aynı
mantıktadır.
• Koşul sağlanmasa da
komutlar en az bir kez
çalışması istendiğin
kullanılan döngüdür.
47
do - while Döngüsü
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Genel yazımı şu şekildedir:
48
do - while Döngüsü
do {. . .
[işleme alınacak komutlar] ;
[arttırım / azalım] ;
. . .
} while ( [koşul] ) ;
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
49
Döngülerde Kullanılan Deyimler
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Döngü devam ederken döngünün koşuluna
bakılmaksızın döngüden çıkılmasını sağlayan
deyimdir.
• Tüm döngü türlerinde kullanılabilir.
• Genel kullanımı şu şekildedir:
50
break Deyimi
{ . . .
break; //burada döngüden çıkılır sonrasındaki komutlar işleme alınmaz
. . .}
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Döngüde bir adım atlamak için kullanılır.
• Döngüde sıra bu deyime geldiğinde , continue
ardından döngü sonuna kadar olan komutlar atlanır
ve döngüye sonraki adımdan devam edilir.
• Genel kullanımı şu şekildedir:
51
continue Deyimi
{ . . .
continue; //burada sonraki komutlar işletilmez sonraki döngü adımına //atlanır
. . .}
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Diziler
52Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Aynı veri tipindeki değişkenlerin sıralı bir şekilde
saklanması ve erişilmesi için kullanılan yapılardır.
Boyutlarına göre diziler:
1. Tek Boyutlu Diziler
2. Çok Boyutlu Diziler
a) Düzenli Diziler (Matris)
53
Diziler
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Tek Boyutlu Dizilerin bildirimi şu şekilde yapılır:
• İstenirse eleman sayıları belirtilmeden de dizi
bildirimi yapılabilir:
54
Tek Boyutlu Diziler
[diziVeriTipi] [] [diziAdı] = new[diziVeriTipi][elemanSayısı];
int[] telefonNumaralari = new int[25];
string [] cumle; bool [] devamsizlik;
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Diziler tanımlandıktan sonra dizinin her elemanına
tanımlandıkları veri tipinin varsayılan değerleri
atanır.
• Sayısal veri tipleri için 0 ,
• Object veri tipi için NULL,
• String veri tipi için " ",
• Char veri tipi içim ‘ ’ (boşluk),
• Bool veri tipi için False atanır.
55
Tek Boyutlu Diziler (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• .NET uygulama geliştirme platformunda C’de
olduğu gibi dizi indisleri 0’dan başlar.
dizi[0] dizinin 1. elemanı ,
dizi[4] dizinin 5. elemanı olarak kullanılır.
• Dizi bildirimlerinde dizi boyutu bir değişkene bağlı
olabilir.
56
int a = 20; int[] dizi = new int[a*2] ;
Tek Boyutlu Diziler (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Dizi tanımlanırken dizi elemanlarının başlangıç değerleri
verilebilir.
• Dizininin veri tipine göre dizi elemanı değerlerini
aralarında virgül varken ;
– Sayısal veri tip ise olduğu gibi
– string veri tipi ise çift tırnak (" ") işaretleri arasında ,
– char veri tipi ise tek tırnak (‘’) işaretleri arasında
yazılmalıdır.
57
[diziVeriTipi] [] [diziAdı] = { [dizi elemanlarının değerleri] };
Tek Boyutlu Diziler (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
• Örneklerdeki gibi dizinin eleman sayısı belirtilmeden tanımlanan
dizilerde dizinin boyutu girilen değerlerin sayısı kadardır.
– Mevsimler dizisi 4 elemanlı,
– ogrNumara dizisi 4 elemanlı,
– harf dizisi ise 3 elemanlı olarak tanımlanır.
58
string[] mevsimler = {"yaz", "kış", "güz", "bahar"};
int[] ogrNumara = { 2146, 2112, 2121, 1112211};
char[] harf = {‘a’, ‘b’, ‘c’} ;
Tek Boyutlu Diziler (devam…)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
59
• Çok boyutlu diziler her bir elemanı bir dizi şeklinde
olan dizilerdir.
• Her bir dizi elemanının eşit sayıda dizi içerdiği
dizilere düzenli dizi (matris) denir.Matrisler boyutlarına göre aşağıdaki gibi gruplandırılır:
– İki boyutlu matrisler
– Üç Boyutlu matrisler
– …
– n boyutlu matrisler
Düzenli Diziler(Matris)
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
60
Düzenli Dizilerin (Matris) Bildirimi
[veri tipi] [ , ] [dizi adı]= new [veri tipi] [ [satır] , [sütün] ] ;
int [,] carpimTablosu = new int [9,9];
int [,] sayilar = new int [4,4];
char [,] kelime = new char [10, 29];
string [, ,] takvim = new string [12, 30, 24];
Genel bildirim biçimi şu şekildedir:
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama
Yararlanılan Kaynaklar
61
• Sefer Algan , HER YÖNÜYLE C# , Pusula Yayıncılık,
İstanbul, 2003
• Milli Eğitim Bakanlığı «Nesne Tabanlı Programlama",
2012
• http://www.AlgoritmaveProgramlama.com
Celal Bayar Üniversitesi - YZM 2105 Nesneye Dayalı Programlama