b tp205 – görsel programlama

Post on 03-Jan-2016

51 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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

top related