& loh *|uvho urjudpodpd€¦ ·

72
C# ile Görsel rogramlama-I Doç.Dr. Bülent Çobanoğlu

Upload: others

Post on 19-Oct-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: & LOH *|UVHO URJUDPODPD€¦ ·

C# ile Görsel rogramlama-I

Doç.Dr. Bülent Çobanoğlu

Page 2: & LOH *|UVHO URJUDPODPD€¦ ·

KaynaklarKitaplar

Her yönüyle C#, Sefer Algan, Pusula YayıncılıkKitap içeriği: C# dilini yapısal olarak konsol uygulama tabanlı anlatmakta

C# Programlama Dili ve Yazılım Tasarımı: Cilt-2, Ahmet KaymazKitap içeriği: C# dilinin daha çok veritabanı uygulamalarına yönelik anlatımı

Programming in Visual C#, Julia Case Bradley, Anita Millspaugh, 2008Kitap içeriği: C# dilini görsel /form uygulamaları ile anlatmaktaC# Programming: From Problem Analysis to Program Design, Barbara Doyle, 2012.

Siteler:http://www.csharp-station.com/Tutorial.aspxwww.csharpnedir.comwww.codeguru.comhttp://msdn.microsoft.com/library/aa288436.aspx (C# Tutorial)http://www.functionx.com/csharp

Ders Sitesi:www.cobanoglu.wikispaces.com

223/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 3: & LOH *|UVHO URJUDPODPD€¦ ·

Yrd.Doç.Dr. Bülent Çobanoğlu3

Proje Konuları

1- Windows benzeri Masaüstü Uygulamalar (Oyun programları, İleri hesap makinesi,..)

2- Dosya ve Veritabanı Uygulamaları (Rehber, Not defteri, Müşteri takip, Stok programı gibi)

3- Mikrodenetleyici- C# Arayüz Uygulaması (C# ile Mikrodonetleyici(PIC, Arduino gibi) arasında haberleşme yapan görsel bir arayüz uygulaması)

4- Web tabanlı uygulamalar (C# Masaüstü uygulamalarının bir benzerinin Web ortamına taşınması)

5- Windows Market uygulamaları(C# basit masaüstü uygulamalarının bir benzerinin Windows 10 yüklü tablet/telefon larda çalışabilecek market ortamına taşınması)

Page 4: & LOH *|UVHO URJUDPODPD€¦ ·

Visual Studio

Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE- Integrated Development Environment). Başta Visual C++, Visual C#, Visual Basic olmak üzere Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için Windows Form uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel/görsel kullanıcı ara yüzü uygulamaları geliştirmek için kullanılır.

MS Visual Studio: ttp://msdn.microsoft.com/vstudio/23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 4

Page 5: & LOH *|UVHO URJUDPODPD€¦ ·

C# için Visual Studio Alternatifleri

MonoAçık kaynaklı

Windows, Linux, Mac OS X, Solaris, Unix

Novell tarafından geliştirilmektehttp://www.mono-project.com

Sharp DevelopAçık kaynaklı, .NET SDK veya Mono kullanır

C# dilinde yazılmış

http://www.icsharpcode.net/OpenSource/SD/Default.aspx

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 5

Page 6: & LOH *|UVHO URJUDPODPD€¦ ·

.NET TeknolojileriWindows Formları ve Konsol

WEB Teknolojileri

ASP.NET

WEB Formları

WEB Hizmetleri (XML)

SOAP (Simple Object Access Protocol)

UDDI (Universal Description, Discovery and Integration)

WSDL (Web Services Description Language)

Veritabanı Teknolojileri

ADO.NET

Ve diğerleri…623/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 7: & LOH *|UVHO URJUDPODPD€¦ ·

.NET Program Akışı

C# Kodu

VBasic Kodu

Java Kodu

C++ Kodu

C# Derleyici

VB Derleyici

Java Derleyici

C++ Derleyici

Kontrollü Modül( Aradil ve

Önveri)

Kontrollü Modül( Aradil ve

Önveri)

Kontrollü Modül( Aradil ve

Önveri)

Kontrollü Modül( Aradil ve

Önveri)

CLR (Common Language Runtime)

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 7

Page 8: & LOH *|UVHO URJUDPODPD€¦ ·

.NET Bütüncül Yapısı

823/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 9: & LOH *|UVHO URJUDPODPD€¦ ·

.NET: Programcı-Program Akışı

923/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 10: & LOH *|UVHO URJUDPODPD€¦ ·

.NET Özellikleri

CLR hangi dil kodunu çalıştırdığını bilmezBütün diller IL (Ortak dil) koduna çevrilirIL kodlar her zaman managed’tir.IL code ve metadata ayrılamaz, aynı dosyada beraber üretilirlerSadece C++.NET ile hem managed hem de unmanaged (default) kod üretilebilirÜretilen dosya PE (Portable Executable) PE, CLR (.NET Framework) ile çalışırManaged Modül:

PE Başlık : GUI veya CUI veya DLL, built-timeSadece IL Kod içerirse: PE başlığı ihmal edilirYerel CPU Kod: PE başlık CPU yerel makine dili kodları içerir

CLR Başlık : CLR modeli, bayraklar, Ana fonk. Adresi, module bilgileriMetadata : Tanımlanmış veya hazır veri türleri, nesnelerin tablolarıIL Kod: Derleyici tarafından üretilen ortak kod, daha sonra CLR tarafından yerel CPU makine komutlarına çevrilir

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 10

Page 11: & LOH *|UVHO URJUDPODPD€¦ ·

C#Microsoft firması tarafından geliştirilen C# ( si şarp okunur), C++ ve Java dili gramer yapısını kullanan, nesne yönelimli bir dildir. C#, C++ diline yeni eklentiler yapılarak ((C++)++) bir adım daha ileriye götürülmüş ve C# dilinin isimlendirilmesinde, + karakterlerinin birbirlerine yakınlaşmış hali ve bir melodi anahtarı olan C# Major kullanılmıştır. C#’ ın kaynak dosya uzantısı (soyadı) “.cs” dir.

1123/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 12: & LOH *|UVHO URJUDPODPD€¦ ·

C# Programlama: Design/Tasarım Ortamı

Design Ortamı:

Y.Doç.Dr. Bülent Çobanoğlu 12

Toolbar

Çıktı MesajlarıÖzellikler/Olaylar

penceresi

Kod Penceresi

Form

Solution explorerMenuler

23/10/14

Page 13: & LOH *|UVHO URJUDPODPD€¦ ·

C# Windows Form Application

C# Form Uygulamaları, olay tabanlı /hareket bağımlı(event driven) uygulamalardır.

Geleneksel ya da “procedural/yapısal” uygulamalarda, uygulama kendisini belirli bir sıra ile kontrol etmekte ve işlemektedir. Bu tarzda uygulamalar ilk satırdan çalışmaya başlar ve belirli bir sırayla ilerler ve işlemler (procedure/function) gerekli oldukça çağırılarak çalıştırılır.Hareket/Olay-Bağımlı model uygulamalarda ise uygulama belirli doğrusal bir yol izleyerek çalıştırılmaz. Farklı hareketler için farklı işlemler çalıştırılır ve programın her çalıştırılmasıyla uygulama yeniden farklı farklı yollarla çalışmasını sürdürebilir.

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 13

Page 14: & LOH *|UVHO URJUDPODPD€¦ ·

Bir olay/hareket, kullanıcının faresine tıklaması ya da klavyeden herhangi bir tuşa basmasıyla, program içerisinden yapılan bir kontrol düzeneğiyle ya da başka bir pencerenin neden olacağı bir davranışı nedeniyle oluşmuş olabilir.Herhangi bir hareketin gerçekleştirilmesi, işletim sistemine bir mesaj gönderilmesine neden olur. Sistem mesajı işler ve diğer pencerelere yayımlar. Her pencere özelikle kendi yapısı ile ilgili (aynı zamanda uygun) mesajları yorumlayarak işler. Örneğin, başka bir pencere kendisi üzerinde yer alacaksa ilgili pencere kendi sınırlarını yeniden düzenler.

OLAYLAR (EVENTS)

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 14

Page 15: & LOH *|UVHO URJUDPODPD€¦ ·

Uygulamanızda, kaynak kodunuz tanımlanmış tetikleme hareketleriyle kontrol edilecek ve çalıştırılacaktır.

Örneğin bir textBox1’ın içeriğinin değişmesiyle birlikte TextChangedolayı (event procedure) ’ü gerçekleşecek ve bu değişikliğe bağlı işlem(ler) sırasıyla çalışacaktır.

void textBox1_TextChanged(object sender, EventArgs e){

}

Bir butona tıklanınca (button1_Click) Ekrana “ Merhaba ” yazan program;

void button1_Click(object sender, EventArgs e){

MessageBox.Show ("Merhaba”);}

OLAYLAR (EVENTS)

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 15

Page 16: & LOH *|UVHO URJUDPODPD€¦ ·

Özelik, Yöntem ve Hareket (Property, Method,Event)

C# Form ve nesneleri(kontrolleri); özellikleri, yöntemleri ve olayları/hareketleri olan nesnelerdir.Özellikler (Property) nesnenin ayırıcı

nitelik ve nicelikleri,Yöntemler (Methods)eylem yetenekleri,Olaylar (Hareketler)- ise tepkileri olarak düşünülebilir.

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 16

Page 17: & LOH *|UVHO URJUDPODPD€¦ ·

Y.Doç.Dr. Bülent Çobanoğlu 17

Nesne.Ozelligi = deger;

helloButton.Hide();messageLabel.Show();

titleLabel.Text = "Görsel Programlama";Label.Text = "1234 Esentepe";msgLabel.AutoSize = true;sayac = 12;

Nesne_Olay(…){}

Özellikler – Metotlar- Olaylar Nasıl Tanımlanır?

private void Form1_Load(object sender, EventArgs e)

private void button1_Click(object sender, EventArgs e){

}

Nesne.Metot();

Her bir nesne yada kontrol, özelliklere / properties, metotlara/methods, olaylara/events sahiptir.

23/10/14

Page 18: & LOH *|UVHO URJUDPODPD€¦ ·

Örneğin günlük yaşamdan bir nesne BALON seçelim.

ve bu balonun özeliklerini, yöntemlerini ve hareketlerini tanımlamaya çalışalım

Özellikleri ;

genişliği, yüksekliği, hacmi ve rengi, durumu hakkındaki bilgiler (patlak veya patlamamış olması gibi)

Yöntemleri ;

Bir balon gerçekleştirebileceği bir takım doğal yöntemlere veya yetilere sahip olacaktır mesela bunlardan (şişirme veya söndürme) bizim seçtiğimiz balonun yöntemleridir. Yine de ayrıca bütün balonlar bu yöntemlere sahiptir.

Hareketleri ;

Bir balon bir takım durumlara karşılık tepki verirler. İğne batırılırsa yada hava şiştikten sonra hava verilmeye devam edilirse patlayacaktır. Patlama balonun hareketidir.

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 18

Page 19: & LOH *|UVHO URJUDPODPD€¦ ·

Eğer bir balon programı yapacak olsaydık yazacağımız C# kaynak kodumuz aşağıdaki gibi olacaktı;

Balonun özeliklerini belirlemek için,

Balon.Renk = Mavi;

Balon.Basinc = 6;

Balon.Patlak = False;

Balonun metotlarını belirlemek için,

Balon.Sis()

Balon.Son()

Balon.Buyu(5) // 5 birim kadar büyüsün

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 19

Page 20: & LOH *|UVHO URJUDPODPD€¦ ·

Balonun olası olayları için,

void Balon_Patliyor()

{Balon.Son(); //balonun bir metotu

Balon.SesCikart(“paaatt”);//balonun bir metotu

Balon.Patlak = True; //balonun bir özellliği

Balon.Basinc = 1; //balonun bir özelliği

}

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 20

Page 21: & LOH *|UVHO URJUDPODPD€¦ ·

Kullanıcı arayüzü oluşturmak.Özelikleri atamak.Kod yazmak.Test etmek.

Private Sub Command1_Click()Text1.Text = “Merhaba VB!”End Sub

Şimdi klavyeden F9 tuşuna basarak yada C# IDE deki run tuşuna basarak uygulamamızı çalıştırıp test edebiliriz. İyi testler

C# ile uygulama geliştirmek için dört temel adım vardır.

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 21

Page 22: & LOH *|UVHO URJUDPODPD€¦ ·

Bir Form TasarlamakForm Özelikleri.Text : Pencerenin başlığı. (window title) Icon : Pencerenin simgesi.MaxButton : Pencere büyütme tuşuna sahip mi sorusunun yanıtı.MinButton : Pencere küçültme tuşuna sahip mi sorusunun yanıtı.BorderStyle : Pencerenin tipi.Height : Pencerenin yüksekliği.Width : Pencerenin genişliği.Left : Pencere sol kenarı ile monitörün sol kenarı arasındaki uzaklık.Top : Pencere üst kenarı ile monitörün üst kenarı arasındaki uzaklık.WindowState : Pencere ilk göründüğünde durumu. (Küçük, büyük, normal)Name : Program kaynak kodunda penceremizi tanımamıza da yardımcı olacak isim.Formun HareketleriResize : Pencerenin çerçevesinin büyüklüğünün değişmesi ile birlikte

çağrılan hareket işlemi (event procedure). Activate : Pencerenin aktif hale gelmesiyle çağrılan hareket işlemi.Deactivate : Pencerenin pasif hale gelmesiyle çağrılan hareket işlemi.Formun YöntemleriShow : Pencerenin görünmesini sağlayan yöntem.Print : Pencere üzerine yazı bastırmamızı sağlayan yöntem.Line : Pencere üzerine çizgi çizmemizi sağlayan yöntem.Circle : Pencere üzerine çember çizmemizi sağlayan yöntem.Refresh : Pencerenin yeniden boyanmasını sağlayan yöntem.

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 22

Page 23: & LOH *|UVHO URJUDPODPD€¦ ·

Nesneler / Kontroller

Y.Doç.Dr. Bülent Çobanoğlu

Form

Textbox

Button

Label

Listbox

23/10/14 23

Page 24: & LOH *|UVHO URJUDPODPD€¦ ·

Properties / Özellikler penceresiHer kontrol/nesne’nin

bir özelliği vardır;Name

Position (top and left)

Size (height and width)

Text

Özelliğin açıklaması

Y.Doç.Dr. Bülent Çobanoğlu 2423/10/14

Page 25: & LOH *|UVHO URJUDPODPD€¦ ·

Events/Olaylar Penceresi

Events(Olaylar):Button click

KeyPress

MouseMove

MouseDown

Her nesnenin kendine has bir

Olayı olabilir

– Form_load, Timer_tick () gibi

Y.Doç.Dr. Bülent Çobanoğlu 2523/10/14

Page 26: & LOH *|UVHO URJUDPODPD€¦ ·

C# Programlama– Kod Editörü

Kod Editörü – Bir nesneye veya forma click yaptığımızda gelen sayfa

Y.Doç.Dr. Bülent Çobanoğlu 26

Konsol ekranı na “ Mer haba” yazan ör nek pr ogr am kodu:

using System;

public class Merhaba{public static void Main(){Console.WriteLine("Merhaba!");}

}

23/10/14

Page 27: & LOH *|UVHO URJUDPODPD€¦ ·

İsimuzayları (namespaces)

System Bütün uygulamaların kullandığı temel veri türleri: int, long, float, string

System.Collections Stack, Queue, Hashtable

System.Diagnostics Debugging

System.Drawing Web ve Windows formlarda kullanılan 2-Boyutlu grafik nesnleri

System.IO Klasör, dosya ve stream nesneleri

System.Management WMI ile çoklu bilgisayar yönetimi

System.Net Ağ haberleşmesi

System.Security Veri ve kaynak koruması

System.Text Kodlama karakterleri: ASCII, Unicode

System.Threading Eşzamansız işlemcikler, kaynaklara eşzamanlı erişim

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 27

Page 28: & LOH *|UVHO URJUDPODPD€¦ ·

İlk Form uygulamamız

Çalıştır C#’ı,

File New Project

/Solution penceresinden

Windows Application seçilir.

Name: Dosya ismi yazılır

Y.Doç.Dr. Bülent Çobanoğlu 2823/10/14

Page 29: & LOH *|UVHO URJUDPODPD€¦ ·

İlk Form Uygulamamız

Design/Tasarım saçilir (click form1.cs[Design] tab).

Toolbox tan projemize uygun nesne / kontroller seçilir

Y.Doç.Dr. Bülent Çobanoğlu 2923/10/14

Page 30: & LOH *|UVHO URJUDPODPD€¦ ·

Form üzerindeki butona Double-click yapılarak button1’in click olayına kod yazılır.

Yazılacak kod: textBox1.Text=“Merhaba";

Çalıştır/Run (F9) yapılır ve butona click yapılır

Y.Doç.Dr. Bülent Çobanoğlu 30

İlk Form Uygulamamız

23/10/14

Page 31: & LOH *|UVHO URJUDPODPD€¦ ·

Veri Tipleri

Y.Doç.Dr. Bülent Çobanoğlu 31

Veri Tipi Doğrudan dönüşebileceği veri tipleri

23/10/14

Page 32: & LOH *|UVHO URJUDPODPD€¦ ·

Sabit Tanımlamaları

const int x = 0;

public const double gConstant = 6.673e-11;

private const string language = "Visual C#";

public const double x = 1.0, y = 2.0, z = 3.0;

static kelimesi kullanılmaz

Tanımlandığında değer atanmalı

readonly: atama constructor ‘da veya const gibi

3223/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 33: & LOH *|UVHO URJUDPODPD€¦ ·

Sınır AşımıSınır aşımı istisnai (exception) durum

byte x=256; // derleme hatası, sınır aşımı

byte z;

z=250;

z=z+10; // derlenir ancak sonuç yanlış

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 33

Page 34: & LOH *|UVHO URJUDPODPD€¦ ·

Sayıları Yazdırmabyte x=10;

MessageBox.Show(x.ToString());

int y=905323345577

textbox1.Text=y.ToString(“+## (###)### ## ##”);

int z=15;

textbox2.Text=z.ToString(“X”); //16 lık sistem

textbox3.Text=z.ToString(“X4”); //16 lık sistem

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 34

Page 35: & LOH *|UVHO URJUDPODPD€¦ ·

Tip Dönüştürme:Parse

Parse : string->sayı

string sayı1=“1234”;int x=Int32.Parse(sayı1);

string sayı2=“12.345”;int y=Int32.Parse(sayı2); //derleme hatası

long s;s=long.Parse(textbox1.Text);

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 35

Page 36: & LOH *|UVHO URJUDPODPD€¦ ·

Tip Dönüştürme:Convert

Convert: string->sayı VE sayı->string

string sayı1=“1234”;int x=Convert.ToInt32(sayı1);

string sayı2=“12.345”;int y=Convert.ToInt32(sayı2); //derleme hatası

long s;S=Convert.Tolong(textbox1.Text);

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 36

Page 37: & LOH *|UVHO URJUDPODPD€¦ ·

Değişkenler

C# ‘ta yeni türler: bool, decimal

Herşey nesne: System.Object

object tüm değişkenlerin ortak kalıbı

Reference ve Value

Value tipler Stack (yığın) bellekte

Reference tipler Heap (öbek) bellekte

3723/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 38: & LOH *|UVHO URJUDPODPD€¦ ·

Boxing-Unboxing

Boxing: Stack alanından Heap alanına taşımaobject x;

int i=10;

x=i;

Unboxing: Heap alanından Stack alanına taşımaobject x;

int i=10, j=20;

x=j;

i=(int)x;

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 39

Page 39: & LOH *|UVHO URJUDPODPD€¦ ·

Değişken Kapsama Alanları

Global değişkenler metotların dışında tanımlanır, değer ataması hemen yapılmalıdır ve sınıf içindeki tüm metotlardan erişilir

Yerel değişkenler metotların içinde tanımlanır, sadece metot içerisinden erişilir

public static: Diğer sınıflardan da erişilir, tüm kopyalarda ortak kullanılır

private: Sadece tanımlandığı sınıftan erişilir

protected: Sadece ilgili sınıftan ya da o sınıftan türetilen sınıflardan erişilir

internal: Sadece aynı isim uzayından

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 40

Page 40: & LOH *|UVHO URJUDPODPD€¦ ·

Dizi Tanımlama ve Kullanma

Tek Boyutlu dizi tanımlamalarıint [] dizi=new int[10];

int [] dizi; dizi=new int[10];

st r i ng [ ] di zi ={ “ SAU” , “ Mek” , “ Tekni k” } ;

int[]dizi={1,2,3,4,5};

char [ ] s=“ mer haba” ;

4123/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 41: & LOH *|UVHO URJUDPODPD€¦ ·

Tek Boyutlu Dizi (Array) Elemanlarını Ekrana Yazmaint[] myArray = new int[10];

for (int i=0;i<10; i++)

Console.Write ("{0} ",myArray[i]);

Console.WriteLine();

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 42

Page 42: & LOH *|UVHO URJUDPODPD€¦ ·

Çok Boyutlu Diziler

Düzenli Çok Boyutlu Diziint [,]dizi=new [3,3];

int [,] dizi={{1,2},{3,4},{10,11}};

int [,,]dizi=new dizi[5,5,5];

Düzensiz Çok Boyutlu Diziler (Jagged Arrays)int [][] dizi=new int[3][]; //satır sayısı belli

dizi[0]=new int[3];

dizi[1]=new int[4];

dizi[2]=new int[2];

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 43

Page 43: & LOH *|UVHO URJUDPODPD€¦ ·

Düzensiz Dizi İşlemleri

class jagged{

static void Main(){

int [][]dizi=new int [3][];dizi[0]=new int []{1,2,3};dizi[1]=new int []{6,7,8,9};dizi[2]=new int []{10,11};for(int i=0;i<dizi.GetLength(0);i++)

for(int j=0;j<dizi[i].GetLength(0);j++)Console.WriteLine("dizi[{0}][{1}]={2}",i,j,dizi[i][j]);

}

}4423/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 44: & LOH *|UVHO URJUDPODPD€¦ ·

Array Sınıfı Metotları

Array.Copy ()

//Diziyi kopyalar

Array.Sort()

// Dizi elemanlarını küçükten büyüğe sıralar

Array.BinarySearch()

//Dizi elemanları içerisinde ikili arama yapar

Array.Reverse()

//Diziyi ters çevirir.

Array.Clear()

//Diziyi temizler.4523/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 45: & LOH *|UVHO URJUDPODPD€¦ ·

Array Sınıfı Metotları

Array.Copy ()

//Diziyi kopyalar

Array.Sort()

// Dizi elemanlarını küçükten büyüğe sıralar

Array.BinarySearch()

//Dizi elemanları içerisinde ikili arama yapar

Array.Reverse()

//Diziyi ters çevirir.

Array.Clear()

//Diziyi temizler.4623/10/14 Y.Doç.Dr. Bülent Çobanoğlu

Page 46: & LOH *|UVHO URJUDPODPD€¦ ·

Yrd.Doç.Dr. Bülent Çobanoğlu47

Döngüler1. For komutu:

for( int i=0; i<7;i++){//-----;}

2. While komutuint i = 0;while(i < 7) {

i++;}

3. Do-While komutuint i = 0;do{i++;

} while(i < 7);

4. Foreach int [] i = new int [7]; foreach(int no in i) {i++;}

Page 47: & LOH *|UVHO URJUDPODPD€¦ ·

Döngülerwhile (a > 0)

a--;do a++;

while (a < 10);

for (int i=1; i<=10; i++) {a--;}

Eğer a Boolean ise şu şekilde döngü tanımı yapılabilir

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 48

Java-C-C++ daki gibi

Page 48: & LOH *|UVHO URJUDPODPD€¦ ·

Karar Yapıları

if (a >= 10){ fonksiyon1();fonksiyon2();}

else...

switch (a){case 10: fonksiyon1(); break;……default:...

}

Java-C++ daki gibi

23/10/14 Y.Doç.Dr. Bülent Çobanoğlu 50

Page 49: & LOH *|UVHO URJUDPODPD€¦ ·

Çift seçimli yapı ?: operatörü

Y.Doç.Dr. Bülent Çobanoğlu 51

1. Eğer ‘j<k ise m=j değilse m=k dir’ önermesi aşağıdaki gibi yazılabilir.

int m = j < k ? j : k;2. Eğer ‘j>k’ ise n=j+k değilse n=j*k işlemini yap’

önermesi aşağıdaki gibi yazılabilir.int n = j > k ? j + k : j * k;

23/10/14

Page 50: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14Y.Doç .Dr. Bü lent

Çobanoğ lu

Konsol Uygulaması-1Girilen bir ismi ekranda gösteren uygulama

Page 51: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14Y.Doç .Dr. Bü lent

Çobanoğ lu

Konsol Uygulaması-2Girilen iki sayıyı toplayan uygulama

Page 52: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14Y.Doç .Dr. Bü lent

Çobanoğ lu

Konsol Uygulaması-3

Haftanın gününü veren uygulama

Page 53: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14Y.Doç .Dr. Bü lent

Çobanoğ lu

Konsol Uygulaması-4Çarpım tablosu uygulaması

Page 54: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14Y.Doç .Dr. Bü lent

Çobanoğ lu

Konsol Uygulaması-5 Sayı Tahmin Oyunu

Page 55: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14Y.Doç .Dr. Bü lent

Çobanoğ lu

Konsol Uygulaması-6 Dizi elemanlarının sıralanması

İki boyutlu dizi tanımı:İnt [,] say=new int [2,3];

Page 56: & LOH *|UVHO URJUDPODPD€¦ ·

A yÖrneği

ArrayList gunler = new ArrayList();

Dizi boyu belli değil...

gunler.Add(“Pazartesi”);

gunler.Add(“Salı”);

gunler[0].ToString() >>> “Pazartesi” verir.

Page 57: & LOH *|UVHO URJUDPODPD€¦ ·

ArrayList gunler = new ArrayList();

İşe yarayan bazı özellik (property) ve metotlar:gunler.Count >>>> 7 verir ( büt ün günl er gi r i l mi şse)gunler.Clear();gunler.RemoveAt(1);gunler.Reverse();gunler.Sort();gunl er . Remove( “ Çar şamba” ) ;

Page 58: & LOH *|UVHO URJUDPODPD€¦ ·

Hashtable

ArrayList gibi... Fakat indeks yerine nesne var. (Kullanımda nesne genellikle string)

Hashtable Ulke = new Hashtable(),Ulke[“tr”] = “Türkiye”;Ulke[“de”] = “Almanya”;Ulke[“to”] = “Tonga”;

veya Ulke.Add(“tr”, “Türkiye”);Ulke.Add(“de”, “Almanya”);-- -- --

Page 59: & LOH *|UVHO URJUDPODPD€¦ ·

Hashtable

Bir üyeye ulaşmak için:string hangiUlke = Ulke[“tr”];

hangiUlke’nin içinde “Türkiye” vardır.foreach kullanımı:foreach(DictionaryEntry ulkeler in Ulke){

----}

Page 60: & LOH *|UVHO URJUDPODPD€¦ ·

Sö ü Uygu a as

Yrd.Doç.Dr. Bülent Çobanoğlu

62

Page 61: & LOH *|UVHO URJUDPODPD€¦ ·

Y.Doç.Dr. Bülent Çobanoğlu6323/10/14

Örnek Soru: Windows Hesap Makinesi Tasarımı 1

Page 62: & LOH *|UVHO URJUDPODPD€¦ ·

Y.Doç.Dr. Bülent Çobanoğlu6423/10/14

Örnek Soru: Windows Hesap Makinesi Tasarımı 2Global Değişkenler;

Page 63: & LOH *|UVHO URJUDPODPD€¦ ·

23/10/14

Ör g y Ü y y

Y.Doç.Dr. Bülent Çobanoğlu

Page 64: & LOH *|UVHO URJUDPODPD€¦ ·

Form Kontrolleri

Yrd.Doç.Dr. Bülent Çobanoğlu66

Page 65: & LOH *|UVHO URJUDPODPD€¦ ·

Yrd.Doç.Dr. Bülent Çobanoğlu67

{InitializeComponent();

}private void checkBox1_CheckedChanged(object sender, EventArgs e)

{if(checkBox1.Checked == true){button1.Enabled = true;}else{

button1.Enabled = false;}

}

private void radioButton1_CheckedChanged(object sender, EventArgs e){

label1.Font = new Font(label1.Font, FontStyle.Bold);}

private void radioButton2_CheckedChanged(object sender, EventArgs e){

label1.Font = new Font(label1.Font, FontStyle.Italic);}

private void button1_Click(object sender, EventArgs e){

Form2 a = new Form2();a.Show();

}

Page 66: & LOH *|UVHO URJUDPODPD€¦ ·

Yrd.Doç.Dr. Bülent Çobanoğlu68

bli ti l l F 2 F{

public Form2(){

InitializeComponent();}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){

Graphics g = base.CreateGraphics();Pen myPen = new Pen(Color.DarkRed);SolidBrush mySolidBrush = new SolidBrush(Color.DarkRed);g.Clear(Color.White);switch (comboBox1.SelectedIndex){case 0: // Daireg.DrawEllipse( myPen, 50, 50, 150, 150 ); //g.DrawEllipse(p, x, y, w, h);break;case 1: // Kareg.DrawRectangle( myPen, 50, 50, 150, 150 );break;

case 2: // Ellipseg.DrawEllipse( myPen, 50, 85, 150, 115 );break;case 3: // Pie

g.DrawPie( myPen, 50, 50, 150, 150, 0, 45 );break;

case 4: // İçi dolu daireg.FillEllipse( mySolidBrush, 50, 50, 150, 150 );break;

case 5: // içi dolu Dikdörtgeng.FillRectangle( mySolidBrush, 50, 50, 150, 150 );break;

}g.Dispose(); // Graphics nesnesini serbest bırak}

}

Page 67: & LOH *|UVHO URJUDPODPD€¦ ·

Yrd.Doç.Dr. Bülent Çobanoğlu69

private void button1_Click(object sender, EventArgs e){

int yas;char ehl;const int CHILD_AGE = 12;const int SENIOR_AGE = 65;yas = Convert.ToInt32(textBox1.Text);ehl = Convert.ToChar(textBox2.Text);outLabel.Text = String.Format("Yaşı {0} ve Basın Kartı {1} olan personele",yas, ehl);if ((yas <= CHILD_AGE || yas >= SENIOR_AGE) && ehl == 'E')

outLabel.Text += "\nİndirim uygula";else

outLabel.Text += "\nTam Ücret";}

String yenistring= String.Format(“Birim Fiyatı : {0}”,fiyat);

İn g g

Page 68: & LOH *|UVHO URJUDPODPD€¦ ·

Grafik Komutları

Page 69: & LOH *|UVHO URJUDPODPD€¦ ·

Uygulama: Saat

Page 70: & LOH *|UVHO URJUDPODPD€¦ ·

Uygulama: Form1

Page 71: & LOH *|UVHO URJUDPODPD€¦ ·

Uyg g

Page 72: & LOH *|UVHO URJUDPODPD€¦ ·

Uyg g