b tp205 – görsel programlama
DESCRIPTION
B TP205 – Görsel Programlama. C# Temelleri. Bugün…. Değişkenler ve İfadeler Yorumlar Değişkenler İfadeler Operat örler Namespace s (Ad alanları) Akış kontrolü if, switch while, do-while, for, foreach İkili operatörler. Temel C# Sözdizimi. - PowerPoint PPT PresentationTRANSCRIPT
BTP205 – Görsel Programlama
C# Temelleri
1
Bugün…
• Değişkenler ve İfadeler– Yorumlar– Değişkenler– İfadeler– Operatörler– Namespaces (Ad alanları)
• Akış kontrolü– if, switch– while, do-while, for, foreach– İkili operatörler
2
Temel C# Sözdizimi
• Boşluklar (boşluk, yeni satır, tab) C# derleyicisi tarafından göz ardı edilir
• İfadeler noktalı virgül (;) ile sonlandırılır• C# kodları büyük-küçük harf duyarlıdır• C# blok-yapılı bir dildir ve bloklar ayraçlar ile
sınırlanır (‘{’ ve ‘}’)• Kodlarınızı yazarken okunabilir olması için – içerden başlamaya dikkat ediniz– yorumlar yazınız
3
Yorumlar• Tip I/* Tek yorum satırı *//* Çoklu- Yorum Satırı*/
• Tip II// Başka bir tekli yorum satırıa = 0; // sayacı sıfırla
• Tip III/// Dokümantasyon için kullanılan özel yorum satırları
4
Değişkenler
• Değişkenleri, verinin içinde saklandığı kutular olarak düşünebiliriz
• Değişkenlerin tipleri, isimleri ve değerleri vardır
int num = 5;• Burada, int değişkenin tipi, num ismi ve 5‘de
değeridir• Bütün değişkenler kullanılmadan önce
tanımlanmalıdır5
Basit Tipler
• Basit tipler sayıları Boolean (doğru ya da yanlış) değerleri kapsar
• Sayıları ifade etmek için birçok tip vardır, çünkü her tipi ifade edebilmek için farklı sayıda byte gerekir
6
Tamsayı Tipleri (integer) Tip Diğer adı İzin verilen değer aralığı Byte sayısı
sbyte System.SByte –128 ve 127 aralığında tamsayı 1
byte System.Byte 0 ve 255 aralığında tamsayı 1
short System.Int16 –32768 ve 32767 aralığında tamsayı 2
ushort System.UInt16 0 ve 65535 aralığında tamsayı 2
int System.Int32 –2,147,483,648 ve 2,147,483,647 aralığında tamsayı 4
uint System.UInt32 0 ve 4,294,967,295 aralığında tamsayı 4
long System.Int64 –9223372036854775808 ve 9223372036854775807 aralığında tamsayı 8
ulong System.UInt64 0 ve 18446744073709551615 aralığında tamsayı 8
7u: unsigned-işaretsiz s: signed-işaretli
Noktalı Sayı Tipleri (Floating Point)Tip Diğer Adı Aralığı Byte sayısı
float System.Single 4
double System.Double 8
decimal System.Decimal 16
8
HassasiyetTip Hassasiyet
float 7-8 basamak
double 15-16 basamak
decimal 28 basamak
9
Decimal veri tipi genellikle daha yüksek hassasiyet isteyen para birimleri için
kullanılır!
Diğer Basit TiplerTip Diğer adı İzin verilen aralık
char System.Char Tekil Unicode karakter, 0 ve 65535 aralığında bir tamsayı olarak saklanır
bool System.Boolean Doğru ya da yanlış
string System.String Bir karakter dizisi
10
Char veri tipinin 2 byte ve Unicode olarak
saklandığına dikkat ediniz!
Değişken Tanımlama, Değer Atama ve Yazdırma Örneği
static void Main(string[] args){
int myInteger;string myString;myInteger = 17;myString = "\"myInteger\" is";Console.WriteLine("{0} {1}.", myString, myInteger);
}
11
Burada iki değişken tanımlanıyor
DeğişkenlereDeğerler atanıyor
Değişkenler ekrana yazdırılıyor.
"myInteger" is 17.
Değişken Değerlerini Yazdırma
• Değişken değerlerini ekrana yazdırmak için Console.Write() veya Console.WriteLine() metodlarını kullanınız
• Console.WriteLine() metodu satırın sonuna yeni bir satır ekler
• Metodların birçok veri tipini yazdırmak üzere farklı suretleri vardır, en uygun olanı kullanınız
12
Bazı Console.WriteLine() Suretleri
13
Ekrana bir int yazdırma
• int x = 17, y = 25;• Console.WriteLine(x);• Console.WriteLine(x.ToString());• Console.Write(“x = ”);• Console.WriteLine(x);• Console.WriteLine(“x = ” + x);• Console.WriteLine(“x = ” + x.ToString());• Console.WriteLine(“x = {0}, y = {1}.”, x, y);
14
1717x = 17x = 17x = 17x = 17, y = 25.
Değişken İsimlendirme
• İlk karakter bir harf ya da alt çizgi (_) olmalıdır• Devam eden karakterler harf, alt çizgi ya da
sayı olabilir• Rezerve edilmiş kelimeler değişken ismi olarak
kullanılamaz– Eğer rezerve bir kelimeyi değişken ismi olarak kullanmak
isterseniz, başına bir at karakteri (@) getirebilirsiniz
15
Örnek: Geçerli Değişken İsimleri
• myBigVar• VAR1• _test• i• myVariable• MyVariable• MYVARIABLE
16
Örnek: Geçersiz Değişken İsimleri
• a+b• 99bottles• namespace• double• my-result
17
Anahtar Kelimelerabstract const extern int out short typeof
as continue false interface override sizeof uint
base decimal finally internal params stackalloc ulong
bool default fixed is private static unchecked
break delegate float lock protected string unsafe
byte do for long public struct ushort
case double foreach namespace readonly switch using
catch else goto new ref this virtual
char enum if null return throw void
checked event implicit object sbyte true volatile
class explicit in operator sealed try while
18
C# Bağlamsal Anahtar Kelimeleradd ascending async await by descending dynamic
equals from get global group in into
join let on orderby partial remove select
set value var where yield
19
Bağlamsal anahtar kelimeler bazı dil yapılandırmalarında kullanılırlar. Bu yapılandırmalarda tanımlayıcı olarak kullanılamazlar. Aksi taktirde, tanımlayıcı olabilirler.
Macar Notasyonu
• Değişkenin tipini gösteren bir önek başa eklenir– nAge– iAge– fDelimeter– btnClick– txtName
20
Deve Stili
• İlk kelime küçük harfle başlar, diğerleri byük harfle devam eder– age– firstName– lastName– birthDay
21
Pascal Stili
• Bütün kelimeler büyük harfle başlar– Age– FirstName– LastName– WinterOfDiscontent
22
Önceleme dizgeleri (Escape Sequences)
Önceleme dizgesi Üretilen karakter Unicode Değeri
\’ Tek tırnak işareti 0x0027
\” Çift tırnak işareti 0x0022
\\ Ters bölü çizgisi 0x005C
\0 Null 0x0000
\a Alarm (bip sesi çıkarır) 0x0007
\b Geri silme tuşu 0x0008
\f Sayfa başı tuşu 0x000C
\n Yeni satır 0x000A
\r Satır başına getirme 0x000D
\t Yatay tab 0x0009
\v Dikey tab 0x000B
23
Karakter dizileri (string) üzerine…
• \u sonrasında Unicode karakterler kullanabilirsiniz– “Karli\’s string”– “Karli\u0027s string”
• Eğer bir karakter dizisinin önüne @ işareti koyarsanız bütün önceleme dizgeleri yok sayılır– “C:\\inetpub\\wwwroot\\”– @“C:\inetpub\wwwroot\”– “A short list:\nitem 1\nitem 2”– @“A short list:
item 1item 2”
24
Değişken Tanımlama ve Değer Atama
• int age;• age = 25;• int age = 25;• int xSize, ySize;• int xSize = 4, ySize = 5;• int xSize, ySize = 5;
25
Operatörler
• Toplama, çıkarma vb. işlemler operatörler aracılığıyla yapılır
• Üç operatör kategorisi vardır:– Unary (tekli) – tek terim üzerinde işlem yapar– Binary (ikili) – iki terim üzerinde işlem yapar– Tertiary (üçlü) – üç terim üzerinde işlem yapar
26
Matematiksel OperatörlerOperatör Kategori Örnek
+ Binary (ikili) var1 = var2 + var3;
– Binary (ikili) var1 = var2 – var3;
* Binary (ikili) var1 = var2 * var3;
/ Binary (ikili) var1 = var2 / var3;
% Binary (ikili) var1 = var2 % var3;
+ Unary (tekli) var1 = +var2;
– Unary (tekli) var1 = –var2;
27
% : mod (bölümünden kalan) operatörüÖrnek: 8 % 3 2.
Artırma ve Azaltma OperatörleriOperatör Kategori Örnek
++ Unary (tekli) var1 = ++var2;
-- Unary (tekli) var1 = --var2;
++ Unary (tekli) var1 = var2++;
-- Unary (tekli) var1 = var2--;
28
Önce arttır,sonra atama yap
Önce atama yap, sonra arttır
Alıştırma
int var1, var2 = 5, var3 = 6;var1 = var2++ * --var3;Console.WriteLine("var1={0}, var2={1}, var3={2}", var1, var2, var3);
29
var1=25, var2=6, var3=5
Değişken Değerlerini Yazdırma
int var1 = 3, var2 = 5;Console.WriteLine("var1 = {0}, var2 = {1}", var1, var2);
30
var1 = 3, var2 = 5
Değişken Değerlerini Yazdırma
int var1 = 3, var2 = 5;Console.WriteLine("{0}{1}{0}{1}{1}", var1, var2);
31
35355
Metinleri (string) Okuma
string userName;Console.Write("İsminiz: ");userName = Console.ReadLine();Console.WriteLine("Hoş geldin {0}!", userName);
32
İsminiz: BilgeHoş geldin Bilge!
Tamsayıları (int) Okuma
• int age;• Console.WriteLine("Yasiniz: ");• age = int.Parse(Console.ReadLine());• Console.WriteLine("Yasiniz {0}.", age);
33
Eşdeğer kod:Convert.ToInt32(Console.ReadLine());
Double değerleri okuma
• double w;• Console.WriteLine("Agirliginiz (kg.): ");• w = double.Parse(Console.ReadLine());• Console.WriteLine("{0} kilogramsiniz", w);
34
Equivalent code:Convert.ToDouble(Console.ReadLine());
Atama OperatörleriOperatör Örnek Eşdeğeri
= var1 = var2;
+= var1 += var2; var1 = var1 + var2;
-= var1 -= var2; var1 = var1 – var2;
*= var1 *= var2; var1 = var1 * var2;
/= var1 /= var2; var1 = var1 / var2;
%= var1 %= var2; var1 = var1 % var2;
35
Operatör ÖncelikleriÖncelik Operatörler
En yüksek ++, -- (son ek olarak), +, - (unary)
*, /, %
+, -
=, *=, /=, %=, +=, -=
En düşük ++, -- (ön ek olarak)
36
Ad Alanları (Namespaces)
• Hazır kütüphaneleri sağlamanın .NET yolu– C ve C++’daki başlık (header) dosyaları– Java’daki paketler
• .NET sınıfları ad alanlarında gruplanmıştır– Sin, Cos, Atan, Acos, Pi, Sqrt, vb. Math ad alanı– Int32, Double, vb. System ad alanı– Windows Forms sınıfları System.Windows.Forms– Kayıt defteri (registry) operasyonları Microsoft ad alanı
• Programlarınızı ya da DLL’lerinizi ayrı bir ad alanı içinde yazabilirsiniz, örneğin şirketinizin isminde
37
Akış Kontrolü
• Dallanma (if, switch, üçlü operatörler)• Döngüler (for, while, do-while, foreach)
38
Karşılaştırma OperatörleriOperatör Anlamı
== Eşittir
!= Eşit değildir
< Küçüktür
> Büyüktür
<= Küçük eşittir
>= Büyük eşittir
39
Boolean Değişkenler
• Boolean bir değişken doğru ya da yanlış değerleriniz alabilir– bool isWhite = true;– isWhite = false;
• Karşılaştırma sonuçları boolean değişkenlerde tutulabilir– bool isLong = (height > 195);– bool isWhite = (color == Color.White);
40
Temel Mantık OperatörleriOperatör Adı Örnek
&& AND – VE (a > 0) && (a < 10)
|| OR – VEYA (a <= 0) || (a >= 10)
! NOT – DEĞİL !(a < 100)
41
‘Eğer’ İfadeleri
int height;Console.Write("Boyunuzu giriniz (cm.) ");height = int.Parse(Console.ReadLine());if (height > 190) Console.WriteLine("Siz uzun bir kişisiniz!");else Console.WriteLine("Boyunuz normaldir!");
42
‘Eğer’ İfadeleri
if (koşul) <koşul doğru ise çalıştırılacak ifadeler>;
if (koşul){ <ifade 1>; <ifade 2>;}
43
if..else
if (koşul) < koşul doğru ise çalıştırılacak ifadeler>;else < koşul yanlış ise çalıştırılacak ifadeler >;
• Birden fazla ifade yer alırsa süslü parantez kullanınız.
44
‘if’ üzerine..
• Parantezler (‘(’ and ‘)’) mutlaka gereklidir• Süslü parantezler (‘{’ and ‘}’) birden fazla ifade var
ise kullanılmalıdır:if (test){ ifade1; ifade2;}
• else kısmı atılabilir• if ifadeleri iç içe yazılabilir
45
Örnek: 3 sayıdan en küçüğünü bulma
int a, b, c, min;Console.WriteLine("3 sayi giriniz:");Console.Write("a = ");a = int.Parse(Console.ReadLine());Console.Write("b = ");b = int.Parse(Console.ReadLine());Console.Write("c = ");c = int.Parse(Console.ReadLine());
if (a < b){ if (a < c) min = a; else
min = c;}else{ if (b < c) min = b; else min = c;}
Console.WriteLine(«En kucuk sayi {0}.", min);
46
Koşulları kontrol etmeif (var1 == 1) { // bir şeyler yap.}else { if (var1 == 2) { // başka bir şeyler yap. } else { if (var1 == 3 || var1 == 4) { // başka bir şeyler yap. } else { // başka bir şeyler yap. } }
}
if (var1 == 1) { // bir şeyler yap.}else if (var1 == 2) { // başka bir şeyler yap.}else if (var1 == 3 || var1 == 4) { // başka bir şeyler yap.}else { // başka bir şeyler yap.}
47
Sık karşılaşılan hatalar
• if (var1 = 1) {…}• if (var1 == 1 || 2) {…}
48
‘switch’ İfadeleriswitch (<testDegiskeni>){ case <karsilastirmaDegeri1>: <eğer <testDegiskeni > == <karsilastirmaDegeri1> ise calistirilacak ifadeler> break; case < karsilastirmaDegeri2>: <eğer <testDegiskeni > == <karsilastirmaDegeri2> ise calistirilacak ifadeler> break; . . . case <karsilastirmaDegeriN>: <eğer <testDegiskeni > == <karsilastirmaDegeriN> ise calistirilacak ifadeler> break; default: <eğer <testDegiskeni> != karsilastirmaDegerleri ise calistirilacak ifadeler> break;}
49
Örnek 1switch (var1){ case 1: // Bir şey yap. break; case 2: // Başka bir şey yap. break; case 3: case 4: // Başka bir şey yap. break; default: // Başka bir şey yap. break;}
50
Örnek 2switch (secim){ case 1: Console.WriteLine(“1 sectiniz”); break; case 2: Console.WriteLine(“2 sectiniz”); break; case 3: Console.WriteLine(“3 sectiniz”); break; default: Console.WriteLine(“1 ile 3 arasinda bir tamsayi seciniz.”); break;}
51
switch Örneğiswitch (mtnMeslek){ case "ogretmen": MessageBox.Show("Siz cocuklari egitiyorsunuz"); break; case "programci": MessageBox.Show("Siz muhtemelen zeki ama anti-sosyalsiniz"); break; case «muhasebeci": MessageBox.Show("Siz bir sayma makinesisiniz"); break; default: MessageBox.Show("switch ifadesine uyan meslek bulunamadi"); break;}
52
C dilinde yalnızca tamsayı değerler
koşul olarak kullanılabilir, ancak C# dilinde, metinler
de kullanılabilir.
break kullanmayi unutmayiniz!
Örnek 3switch (mtnHayvan){ case “kus”: Console.WriteLine(“2 bacagi vardir.”); break; case “at”: case “kopek”: case “kedi”: Console.WriteLine(“4 bacagi vardir.”); break; case “kirkayak”: Console.WriteLine(“40 bacagi vardir.”); break; case “yilan”: Console.WriteLine(“Hic bacagi yoktur.”); break; default: Console.WriteLine(“Bu hayvanı bilmiyorum!”); break;} 53
Üçlü Operatör
• ? :• <test> ? <DogruİseSonuc> : < YanlisİseSonuc >• 3 operand üzerinde çalıştığı için Tertiary denir
(unary ve binary operatörler sırasıyla 1 ve 2 operand üzerinde çalışırlar)
• Örnek:– if (a < b) min = a; else min = b;– min = (a < b) ? a : b;
54
Döngüler
55
for Döngüsü
for (öndeğerleme; koşul; değiştirme_ifadesi){ <ifadeler>}• Örnek:for (i = 0; i < 10; i++) { Console.WriteLine("i = " + i.ToString());}
56
while Döngüsü
while (koşul){ <ifadeler>}
57
do-while Döngüsü
do{ <ifadeler>} while (koşul);
58
foreach Döngüsü
foreach (<tip> <ad> in <liste>){ <ifadeler>}
59
for döngüsü ile ayları yazdırma
string[] aylar = new string[] {"Ocak", "Şubat", "Mart", "Nisan", "Mayis", "Haziran", "Temmuz", "Agustos", "Eylul", "Ekim", "Kasim", "Aralik" };
for (int i = 0; i < months.Length; i++){ MessageBox.Show(months[i]);}
60
foreach döngüsü ile ayları yazdırma
string[] aylar = new string[] {"Ocak", "Şubat", "Mart", "Nisan", "Mayis", "Haziran", "Temmuz", "Agustos", "Eylul", "Ekim", "Kasim", "Aralik" };
foreach (string ay in aylar){ MessageBox.Show(ay);}
61
Alıştırma
• İlk 10 asal sayıyı ekrana yazan bir program yazınız.
62
Döngüleri kesmek
• break – döngüyü derhal bitirir• continue – döngünün o anki çevrimini bitirir• return – fonksiyondan geri döner• goto – belirlenmiş bir noktaya sıçrar (kullanmayın)
63
Sonsuz Döngüler
while (true){ …}
64
Örnekint sayi;while (true){ Console.Write(“1 ile 100 arasinda bir sayi giriniz: ”); sayi = Convert.ToInt32(Console.ReadLine()); if (sayi >= 1 && sayi <= 100) break; else { Console.WriteLine(“1 ile 100 arasinda girmelisiniz.”); Console.WriteLine(“Lütfen tekrar deneyin!\n”); }}
65
Bitwise Operatörler
• & (Bitwise AND)• | (Bitwise OR)• ~ (Bitwise NOT)• ^ (Bitwise XOR)
66
Örnekler
• 0110 & 0101 = 0100 (1&1=1, aksi taktirde 0)• 0110 | 0101 = 0111 (0|0=0, aksi taktirde 1)• 0110 ^ 0101 = 0011 (aynı0, farklı1)• ~0110 = 1001 (01, 10)
67
Kaydırma Operatörleri
• >> (Sağa kaydır)• << (Sola kaydır)• >>=• <<=
68
Sonuçlar
• int a = 16;• int b = a >> 2; // b 4 olur• int c = a << 4; // c 256 olur• a >>= 2; // a 4 olur• a <<= 4; // a 64 olur
69