28.06.2013 Views

Bilgisayara Giriş - Akademik Personel Bilgi Bankası - Kocaeli ...

Bilgisayara Giriş - Akademik Personel Bilgi Bankası - Kocaeli ...

Bilgisayara Giriş - Akademik Personel Bilgi Bankası - Kocaeli ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2009<br />

2010<br />

<strong><strong>Bilgi</strong>sayara</strong> <strong>Giriş</strong><br />

20092010 Güz – Bahar Öğretim Yılı<br />

Ders Notları<br />

Arzu Erdem<br />

Kaynaklar:<br />

1. Yazılım Uzmanı 1, Selçuk Tüzel<br />

2. Yazılım Profesyoneli 2, Fulya<br />

SATAR . Engin ÖREN<br />

3. Herkes için Visual Basic 2005, Jeff<br />

Kent<br />

4. Microsoft Visual Basic.Net<br />

Başlangıç Rehberi, İhsan Karagülle<br />

5. Visual Basic.Net 2003, Y.İnan,<br />

N.Demirli<br />

Arzu Erdem<br />

<strong>Kocaeli</strong> Üniversitesi<br />

2009 2010


Bölüm 1. KURULUM ve GİRİŞ<br />

Bu kısımda Microsoft Visual Studio.NET 2003 programının nasıl kurulacağını ve kurulum<br />

sırasında nelere dikkat edileceğini adım adım inceleyeceğiz.<br />

Lisanslı olarak aldığınız Microsoft Visual Studio. NET 2003 programı altı CD'den<br />

oluşmaktadır. Bunlardan iki tanesi program kurulumunu içeren CD'lerdir. Eğer<br />

bilgisayarınızFramework yapısına uygun değilse, bunu ayarlayacak bir adet Windows<br />

Prerequisites CD'si vardır. Diğer üç CD ise en son istenildiği takdirde kurulacak MSDN<br />

(yardım) CD' leridir.<br />

Şimdi adım adım kuruluma başlayalım;<br />

1) <strong>Bilgi</strong>sayarımıza Microsoft Visual Studio.NET 2003 Dics 1'i takalım. Bunun<br />

sonucunda eğer şekildeki ekran karşımıza gelirse, kurulum başlamadan önce<br />

bilgisayarımızda çeşitli ayarlamalar yapılacak anlamındadır. Kuruluma devam etmek<br />

için Visual Studio.NET Prerequisites seçeneğine tıklıyoruz.<br />

2) Eğer şekildeki ekran ile<br />

karşılaşırsanız, bilgisayarınızda<br />

Web uygulamaları ve servisleri<br />

geliştirerek bilgisayarınızı bir Web<br />

Server olarak kullanacaksanız,<br />

mutlaka Front Page Server<br />

Extensions bileşenini kurmanız<br />

gerekmektedir. Bunu IIS içinden<br />

gerçekleştirebilirsiniz. Bu işlemi<br />

nasıl yapacağınızı Setup<br />

Instructions butonuna tıklayarak öğrenebilirsiniz. Kurulumu yapmak istemiyorsanız<br />

Skip butonuna basmanız sterlidir.


3<br />

KURULUM ve GİRİŞ 2009 2010<br />

3) Yandaki görüntü karşımıza<br />

geldiğinde CD'ler içinde<br />

bulunan Windows Prerequisites<br />

CD'sini takarak OK butonuna<br />

basalım.<br />

4) <strong>Bilgi</strong>sayarımız için gerekli bileşenleri<br />

yükleme analizini yapan şekildeki ekranı<br />

görünce bir süre bekleyelim.<br />

5) Gelen lisans ekranını okuduktan sonra,<br />

eğer bir sorun yoksa I agree seçeneğini<br />

işaretleyerek Continue linkine tıklayalım.<br />

6) Gelen listede eksikler belirlenmiş<br />

durumdadır. Bunların tamamlanması<br />

için Install Now Linkine tıklamamız<br />

yeterlidir. Bu liste bilgisayarınızda<br />

kurulu programların versiyonuna göre<br />

daha kısa ve uzun olabilir.<br />

7) Gerekli bileşenlerin yüklenmesi bittikten sonra, sağ alt köşede çıkan Done linkine<br />

tıklayarak bu ilk kademeyi sonlandırıyoruz.


Programlamaya <strong>Giriş</strong> 2009 2010<br />

8) Program kurulumu için ikinci kısım olan Visual Studio.NET seçeneğine tıklıyoruz.<br />

9) Şekildeki ekran karşımıza çıkınca, ilk kurulum CD' sini takarak OK butonuna<br />

basıyoruz.<br />

10) Kurulumda gerekli dosyaların kopyalanması ve yapılandırılması için kısa bir süre<br />

bekledikten sonra, karşımıza gelen ekranda lisans maddelerini okuyarak I agree<br />

seçeneğini işaretliyoruz. Ardından Product Key kısmına 25 haneli kurulum anahtarını<br />

doğru olarak girdikten sonra, Continue linkine tıklıyoruz.<br />

4


5<br />

KURULUM ve GİRİŞ 2009 2010<br />

11) Eğer elinizdeki CD' 1er<br />

Microsoft Visual<br />

Studio.NET kurulumuna<br />

ait ise aşağıdaki ekranda<br />

aynı anda bu yapı içinde<br />

bulunan Visual<br />

Basic.NET, Visual C++<br />

.NET, Visual C# .NET,<br />

Visual J# .NET<br />

programlarını<br />

kurabilirsiniz. Tüm<br />

kurulum yaklaşık 1.5 GB<br />

yer kaplamaktadır.<br />

Ancak sadece<br />

kullanacağınız seçenekleri kurmak istiyorsanız, diğer programların başlarında<br />

bulunan kutuları boşaltmanız gerekmektedir. Fazla program seçimi hem Disk<br />

üzerinde gereksiz yer kaplayacaktır, hem de kurulum süresini uzatacaktır. Eğer<br />

başka bir Disk bölümünüz varsa ve oraya kurmak istiyorsanız Local Path kısmından<br />

bu seçimi yapabilirsiniz. Ben, Visual C++.Net dışında tüm programları kurmaya<br />

karar verdim ve Disk bölümü olarak E sürücüsünü seçtim. Ayrıca, eksik kurduğunuz<br />

programları sonradan ekleyebileceğinizi unutmayın. Her şey tamamsa install Now<br />

linkine tıklayabilirsiniz.<br />

12) <strong>Bilgi</strong>sayarınızın performansına göre kurulum süresinin ilk bölümü 15 dakika ile 45<br />

dakika arasında sürebilir.


Programlamaya <strong>Giriş</strong> 2009 2010<br />

13) Şekildeki mesaj iletisi karşımıza geldiği zaman artık ilk CD'nin görevi sonlanmış<br />

demektir. İlk kurulum CD'sini çıkartarak yerine ikinci kurulum CD'sini takıp, OK<br />

butonuna basarak kuruluma devam ediyoruz.<br />

14) Evet nihayet kurulum tamamlandı. Kurulum ekranını kapatmak için Done linkine<br />

tıklamanız yeterli olacaktır.<br />

15) Bundan sonra devam etmek zorunda<br />

değilsiniz. Ancak yazılım yaparken,<br />

elinizin altında yardım kütüphanesinin<br />

yüklü olması her zaman yararlıdır. Bunun<br />

için şekildeki listeden Product<br />

Documentation seçeneğine tıklayıp, MSDN<br />

6


7<br />

KURULUM ve GİRİŞ 2009 2010<br />

CD'lerinin ilkini takarak gelen ekran yardımları ile yardım dosyalarını yükleyelim.<br />

MSDN'in tamamını Disk üzerine yüklemek için, ekstradan 2 GB alana ihtiyaç<br />

olduğunu hatırlatayım.


Bölüm 2. Programlamaya <strong>Giriş</strong><br />

Bu bölümde, bir programcının bilmesi gereken temel programlama kavramlarına giriş<br />

yapılacaktır. Bir programı oluşturan öğeler ve programın çalışma süreci tamamlanana kadar<br />

geçirdiği aşamalar ayrı ayrı işlenecektir. Bu kavramlar programcının ve programlama<br />

dillerinin tanımlanmasına yardımcı olacaktır.<br />

Bu bölümün sonunda;<br />

a prensibini açıklayabilecek,


9<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Konu 1. Program Nedir?<br />

Günümüzde bilgisayarların kullanım alanları büyük ölçüde artmıştır. Dolayısıyla işlerimizi<br />

daha hızlı ve düzenli bir şekilde yapmamız, bilgisayarları ne kadar iyi kullandığımıza<br />

bağlıdır. Bunun için de çeşitli amaçlara göre yazılan programları kullanırız.<br />

Program, bilgisayarın belli bir işi yapması için tasarlanan komutların tümüdür. Kullanım<br />

amaçları ve yerlerine göre birçok değişik program türü vardır:<br />

programların çalışması için gerekli olan kaynakları ve ortamı sağlar.<br />

programlardır. Klavye ile yazılan yazıların algılanması için, klavyenin sürücü programı<br />

kullanılır.<br />

ar. İşletim sistemi üzerinde çalışan, kullanıcıların ihtiyaç duyduğu işlevleri<br />

sağlayan programlardır.<br />

Bir Internet sitesini gezmek istediğimizde, Internet Explorer tarayıcısı kullanılabilir. Bu<br />

uygulama, işletim sisteminden sitenin istenen sayfasındaki yazı ve resimleri almasını ister.<br />

İşletim sistemi, ağ kartıyla (Ethernet) sürücü programı sayesinde Internet sitesinin<br />

sunucusuna isteği gönderir.


Programların Çalışma Modeli<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Programların kullanılmasındaki amaç, girilen bilgilerin işlenip sonuçların istenen şekilde<br />

üretilmesidir.<br />

ıların veri girmesi ile başlar. Girilen veriler daha sonra<br />

işlenmek üzere hafızada saklanır.<br />

veriler kullanıcıya aktarılır.<br />

Programlar, belli kurallar çerçevesinde yazılır. Bu yazım kuralları sayesinde bilgisayar,<br />

programın işleyişini anlar ve gerekli sonuçları çıkartır. Yazılan programlar, belirtilen yazım<br />

kuralları kontrol edilerek derlenir. Bu derleme işlemi sonunda, yazılan kaynak kodlar<br />

bilgisayarın anlayacağı tek dile çevrilir. Makine dili denilen bu dil, sadece 1 ve 0<br />

sayılarından oluşur.<br />

Örnek: ATM makinesinden para çekmek.<br />

1 Kullanıcı ATM makinesine kartını yerleştirir.<br />

2 Şifresini girer.<br />

3 ATM cihazında çalışan uygulama kartta yazan bilgileri okur.<br />

4 Şifre kontrolü işlemi yapılır.<br />

5 Şifre doğru girilmişse kullanıcı çekmek istediği miktarı girer.<br />

6 Bankadaki hesap kontrol edilir.<br />

7 Uygunsa kullanıcıya ödeme yapar.<br />

10


11<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Konu 2. Programcı Kimdir?<br />

Programcı, belirli işlevlere sahip programlar geliştirebilen bir uzmandır. Bir programcının,<br />

üzerinde çalıştığı platformu, kullandığı teknolojileri iyi tanıması ve bilgisayarın anlayacağı<br />

mantıksal dilde düşünebilmesi gerekir. Programcıların çoğu genellikle aynı işi gerçekleştirse<br />

de, üstlendikleri görevlere göre programcılar üç gruba ayrılabilir:<br />

programın daha kolay yönetilmesi için küçük parçalara ayıran programcıdır.<br />

amın geliştirilmesi aşamasında, hataların kaynaklarını bulan ve<br />

geliştiricilere raporlayan programcıdır.<br />

Konu 3. Programlama Dilleri


Programlamaya <strong>Giriş</strong> 2009 2010<br />

Dünyada konuşulan her dilin amacı iletişim sağlamaktır. Farklı kültürlerden insanların<br />

anlaşabilmesi için ortak konuştukları bir dil gerekir. Programlama dillerinin amacı da<br />

bilgisayar ile programcının haberleşmesidir. Programcı, bilgisayara hangi komutların<br />

çalıştırması gerektiğini bilgisayarın anlayacağı dilden konuşarak söyler.<br />

<strong>Bilgi</strong>sayarda, programlar makine diline çevrildikten sonra çalışır. 1 ve 0 sayılarından oluşan<br />

bu makine dili, en alt seviye dildir. Dolayısıyla programların bu dilde yazılması oldukça<br />

zordur. Programcılar konuşma diline daha yakın, kolay anlaşılabilecek diller kullanır. Bu<br />

dillere yüksek seviye programla dilleri denir. Programlama dillerinin seviyeleri, makine<br />

diline yakın olup olmamaları ile ölçülür.<br />

Bir programlama dili şu unsurlardan oluşur:<br />

er ile konuşulur. Programlama dillerinin de<br />

benzer bir davranışı vardır. Programlama dillerindeki bu kelimeler, programlama dilinin<br />

anahtar kelimeleridir (komutlarıdır).<br />

ildir.<br />

Eğer anlamlı bir şekilde bir araya getirilemiyorsa, bu kelimeler hiçbir anlam ifade etmez.<br />

kullanabiliriz. Ancak konuşulan kelimelerin ne için kullanıldığı da önemlidir. Bir<br />

programlama dilinin özelliklerinin nasıl ve ne için kullanıldığı da, bu dilin semantiğidir.<br />

Örneğin bir finans programı, Yeni Türk Lirası cinsinden bir miktarı dolara çevirecektir.<br />

Yapılacak işlem, o andaki parite değerini merkez bankasından aldıktan sonra, girilen<br />

miktarı bu değerle çarpıp kullanıcıya göstermektir. Kullanılan programlama dili ÇARP,<br />

GÖSTER, EŞİTLE komutları ile bu işlemi gerçekleştirecektir.<br />

ÇARP EŞİTLE GÖSTER miktar parite sonuç<br />

Bu şekilde yazılan program söz dizimi açısından doğrudur. Girilen veriler ve komutlar<br />

dışında, programlama dilinin anlamayacağı bir kelime kullanılmamıştır. Ancak komutlar<br />

yanlış sırada kullanılmıştır. ÇARP komutu hangi sayıları çarpması gerektiğini<br />

bilemeyecektir.<br />

parite EŞİTLE sonuç ÇARP miktar GÖSTER parite<br />

Komutları ve değişkenleri, programlama dilinin gramerine göre doğru yerlerde kullanmamız<br />

gerekir. Bu şekilde kullanılan komutlar doğru bir şekilde çalışır. Fakat GÖSTER komutunun<br />

ne için kullanıldığı yani semantiği de önemlidir. İstenilen, miktar ile pariteyi çarpmak,<br />

sonuca eşitlemek ve sonucu göstermektir.<br />

Sonuç EŞİTLE miktar ÇARP parite GÖSTER sonuç<br />

Şu ana kadar 2500‟den fazla programlama dili yazılmıştır. Bunlardan bazıları Pascal, Basic,<br />

C, C++, Java, JavaScript, Cobol, Perl, Python, Ada, Fortran, Visual Basic. NET, Microsoft<br />

Visual C# programlama dilleridir.<br />

12


13<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Yüksek seviye programlama dillerine Visual Basic. NET ve Microsoft Visual C++ dillerini<br />

örnek verebiliriz. C ile işletim sistemi yazılabildiğinden, daha alt seviye bir dil olarak<br />

değerlendirilir.<br />

Programlama Dillerinin Tarihçesi<br />

<strong>Bilgi</strong>sayarlar, icat edilmeleriyle birlikte belli bir işi yapmak için bir dizi komuta ihtiyaç<br />

duymuşlardır. En başta çok basit işlemler yapan bu komutlar, zamanla nesne yönelimlilik<br />

(object orientation) gibi ileri seviyede özellikler kazanmıştır.<br />

İlk programlama dilleri, bilgisayarların üzerinde bazı araçların yerlerini değiştirerek veya<br />

yeni bileşenler eklenerek yapılıyordu. Programın işlemesi için bir devinime ihtiyaç vardı.<br />

Eskiden programlar fiziksel olarak yazılıyordu. Daha sonra, fiziksel programlama yerini<br />

elektrik sinyallerine bıraktı. Artık, kurulan elektronik devrelere düşük ya da yüksek<br />

voltajda akım gönderilerek bilgisayarın davranışı belirlenmeye başlanmıştı. Yüksek voltaj 1,<br />

düşük voltaj 0 sayılarını ifade ediyordu. Böylelikle bugün de kullanılan makine dilinin<br />

ortaya çıkması için ilk adımlar atılmış oldu.<br />

Ancak bu şekilde programlar yazmak, sistemi oluşturan elektronik devrelerin her program<br />

için baştan kurulmasını gerektiriyordu. Böylelikle programlar bazı kavramlar çerçevesinde<br />

yazılmaya başlandı. Öncelikle bilgisayar donanımı her program için baştan kurulmamalı,<br />

bunun yerine basit bir donanımın üzerine yazılan komutlar kullanılmalıdır. Daha sonra,<br />

programlar tek bir komutlar zinciri yerine, küçük parçalar halinde yazılmalıdır. Bu<br />

parçaların programın içinde defalarca kullanılabilmesi yordam (subroutine) kavramını<br />

ortaya çıkarmıştır. Bu modelin kullanılması ise mantıksal karşılaştırmaları, döngülerin<br />

kullanılmasını ve yazılan kodlar tekrar kullanıldığı için kütüphane (library) mantığını ortaya<br />

çıkarmıştır.<br />

1957 yılında IBM, düşük seviye (makine diline yakın) bir programlama dili olan FORTRAN<br />

dilini ortaya çıkardı. FORTRAN ile beraber basit mantıksal karşılaştırmalar, döngüler, lojik<br />

(truefalse) ve sayısal (integer, double) değişkenler kullanılmaya başlandı.<br />

1959 yılında, bu programlama dilinin özelliklerini alıp, giriş çıkış (Input/Output – IO) gibi<br />

yeni işlevler sağlayan COBOL dili ortaya çıktı. Daha sonra 1968 yılında, COBOL ve FORTRAN


Programlamaya <strong>Giriş</strong> 2009 2010<br />

dillerinin en iyi özelliklerini alarak Pascal ortaya çıktı. Ayrıca Pascal dili, hafızadaki<br />

adresler üzerinde işlem yapmaya olanak veren işaretçi (pointer) kavramını da beraberinde<br />

getirdi.<br />

1972 yılında C, Pascal dilindeki birçok hatayı gidererek ortaya çıktı. C dili ilk defa Unix<br />

işletim sistemini yazmak için kullanılmaya başlanmıştır. C, düşük seviye bir dil olması,<br />

kuvvetli giriş çıkış işlemleri sağlaması gibi birçok özelliği ile işletim sistemlerinin<br />

yazılmasında tercih edilmiştir.<br />

Bütün programlama dilleri birçok özelliğe sahip olmasına rağmen, modüler programlamanın<br />

birçok eksiğini gidermek amacıyla, yeni bir programlama modeli olan nesne yönelimli<br />

programlama (Object Oriented Programming – OOP) ortaya çıkarıldı. C dilinin ve OOP<br />

modelinin tüm özellikleriyle C++ dili oluşturuldu.<br />

C++ dilini, Sun Microsystems tarafından çıkartılan Java takip etti. Java dilinin kullanım<br />

alanları, nesneye yönelimli bir programlama dili olması ve beraberinde getirdiği artık<br />

toplama (Garbage Collection – GC) gibi performans artırıcı özellikleri ile büyük ölçüde<br />

genişledi.<br />

Microsoft, 2000 yılında .NET platformunu sunarak, otuzdan fazla programlama dilini aynı<br />

çatı altına topladı. VisualBasic.NET ve Visual C# günümüzde .NET platformunu kullanan en<br />

güçlü yüksek seviyeli programlama dilleri arasında yer alır. .NET platformu hakkında daha<br />

detaylı bilgi için Bölüm 2‟ye bakın.<br />

Konu 4. Programın Derlenmesi<br />

Programlar yazıldıktan sonra, çalışmaya uygun hale getirilene kadar bir dizi işlemden<br />

geçer. Bu işlemi gerçekleştiren, programlama dilinin derleyicisidir. (Compiler)<br />

nin gramer ve söz dizimi yapısına uygun bir şekilde yazılır.<br />

14


15<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

bir yazım veya mantık hata sıvarsa, programcıya gerekli hata mesajı verilerek derleme<br />

işlemi iptal edilir.


Programlamaya <strong>Giriş</strong> 2009 2010<br />

Bölüm 3. Microsoft .NET Platformu<br />

Microsoft .NET, uygulama geliştiricilerin yazılım geliştirme sürecinde alt yapı işlemleri için<br />

harcadığı eforu en aza indirgemek ve daha güvenli, güvenilir ve sağlıklı uygulamalar<br />

geliştirebilmelerini sağlamak için geliştirilmiş bir alt yapıdır.<br />

Bu bölümü tamamladıktan sonra;<br />

bileşenlerini açıklayabilecek,<br />

avantajları tanımlayabileceksiniz.<br />

Konu 1. Yazılım Geliştirme Dünyası<br />

NET Framework ve<br />

Microsoft 1975 yılında Bill Gates ve Paul Allen tarafından kurulduğunda, vizyonu “Her eve,<br />

her masaya bir PC” idi. Donanım ve yazılım alanlarındaki gelişmelerin hızı ve birbirlerini<br />

sürekli tetiklemesinin sonucunda bilgisayar kullanıcılarının sayısı hızla arttı. Artan kullanıcı<br />

sayısı beraberinde yeni gereksinim ve talepleri getirdi. Bu taleplerin doğal sonucu olarak da<br />

farklı platformlar ve farklı servis sağlayıcıları ortaya çıktı. İletişim, finansal hizmetler,<br />

ticaret ve eğlence kullanıcıların (özellikle Internet‟in yaygınlaşmasıyla birlikte) en yoğun<br />

talep gösterdiği hizmetler halini aldı. Günümüze baktığımızda, Microsoft‟un çıkış<br />

noktasındaki hedefine büyük oranda ulaştığını görebiliyoruz. Ancak geldiğimiz noktada hızla<br />

artan bilgisayar ve Internet kullanıcısı sayısı, beraberinde güvenlik, iletişim ve entegrasyon<br />

gibi alanlarda çeşitli engelleri de getirdi.<br />

Gelişmelere kendi açımızdan, yani yazılım geliştiriciler açısından baktığımızda işlerin çok<br />

daha zor ve zahmetli durumda olduğunu görürüz. Kurumsal uygulamaların geliştirilmesinde<br />

performans, güvenlik ve süreklilik gibi konularda belirli bir seviyeyi yakalamak için oldukça<br />

fazla efor sarf etmemiz gerekiyor. Örneğin, elektronik cihazlarla soket iletişimi kuracak<br />

uygulamaları geliştirebilmek için iki alternatifimiz var. Birincisi, 3. parti firmalar<br />

tarafından geliştirilmiş olan bileşenler satın almak ve uygulamamıza entegre etmektir.<br />

16


17<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Diğer alternatifimiz ise, oldukça uzun sürecek bir kodlama ile benzer bir iletişim katmanını<br />

geliştirmektir. Her ikisi de firmaların birinci tercihi olmayacaktır. Sorunumuz, sadece soket<br />

iletişimi noktasında değil elbette. Bölümün başında da belirttiğimiz gibi uygulama<br />

geliştiriciler, güvenlik, performans ve yetkilendirme gibi pek çok konuda oldukça zahmetli<br />

alt yapı kodlarını geliştirmekle uğraşmak zorunda kalıyor. İşin kötü yanı, geliştirilen bu alt<br />

yapı kodlarının çoğu zaman istenen verimliliği sunmaktan oldukça uzak kalmasıdır. Kabul<br />

etmemiz gereken şey, bu alt yapı kodlarını geliştirecek bilgiye sahip olmadığımız; sahip<br />

olsak bile, alt yapı kodlarını yazacak zamana ve işgücüne sahip olmadığımız; zaman ve<br />

işgücü konusundaki ihtiyaçlarımızı karşılayabilsek bile, bu kodların testi, güvenliği,<br />

güvenilirliği, performansı ve uygulamalara entegrasyonu konusunda hiçbir zaman istenen<br />

düzeye ulaşamayacağımızdır. Keşke ihtiyaç duyduğumuz tüm altyapı işlemleri için hazır,<br />

kullanımı kolay ve esnek bir platform olsaydı.<br />

Hayalini kurduğumuz, aslında şöyle bir sistem:<br />

“Bir sanal mağazada cep telefonlarından sorumlu departmanda satış müdürü olarak<br />

çalışıyorsunuz. İş dışındasınız ve akıllı cihazınıza bir mesaj geliyor: „Piyasaya henüz çıkmış<br />

olan telefonumuz inanılmaz satışlar yapıyor, telefon çok popüler ve stoklarımız da oldukça<br />

azalmış durumda.‟ Bu mesajın hemen ardından, akıllı cihazınız üzerinden, şirketiniz için<br />

fiyat ve teslim zamanı açısından en uygun olan tedarikçiyi bulup, ihtiyacınız kadar telefonu<br />

sipariş edebiliyorsunuz. Peki ya bu koşullar altında çalışmıyor olsaydınız? Şirketiniz, sizi cep<br />

telefonunuzdan arayacak ve problemi iletecekti. Sonra da siz ancak şirketinize<br />

dönebildiğiniz zaman tedarikçilerle teker teker irtibata geçerek hangisinin şirketiniz için en<br />

yararlı olduğuna karar verecektiniz. Sipariş ve teslimat bilgileri üzerinde anlaştıktan sonra<br />

işleminizi tamamlamış olacaktınız. Yani sadece birkaç dakikada yapabileceğiniz basit bir<br />

işlem için, belki de bütün bir gününüzü kaybedecektiniz. Verimliliğiniz düşerken,<br />

zamanınızı etkili şekilde kullanamayacaktınız. Oysa akıllı cihazınız üzerinden tüm bu<br />

işlemleri kısa bir şekilde çözebildiğinizden, işe gitmenize bile gerek kalmadan çok kısa bir<br />

zamanda şirketiniz için en iyi olan seçimi yapabilirsiniz.”<br />

İşler kesinlikle çok daha verimli ve kolay ilerlerdi. Elbette bu, kurulabilecek hayallerin<br />

sadece mobil platforma yönelik bölümünden bir kesit.


Konu 2. Sorunun Temeli<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Microsoft, vizyonu doğrultusunda attığı adımların yazılım geliştiricilere yansıyan sonuçlarını<br />

sürekli izliyordu ve yazılım geliştiricilerin sorunlarını şu başlıklar altında ele alıyordu.<br />

iletişim sorunu.<br />

farklı kurumlar arasındaki<br />

tiyaç duydukları anda, kesintisiz, hatasız ve<br />

güvenli bir şekilde ve istedikleri platformdan erişebilmeleri gereksinimi.<br />

yapı kodları ile uğraşması ve bunun<br />

sonucunda, uygulama geliştirme ve test süresinin uzaması.<br />

kodların tekrar tekrar yazılması gereksinimi.<br />

Konu 3. Çözüm Platformu<br />

18


19<br />

Programlamaya <strong>Giriş</strong> 2009 2010<br />

Microsoft 1990 yılında, yaşanacak 10 yılı da öngörerek, bu ve benzeri sorunlara çözüm<br />

sunacak, uygulama geliştiricilerin ve son kullanıcıların işlerini kolaylaştıracak bir platform<br />

geliştirmeye başladı. Microsoft bu platforma öylesine inanıyordu ki, kaynaklarının<br />

%80‟inden daha fazlasını, yani kaderini bu platforma bağlamıştı. Çok geniş bir analiz ve<br />

geliştirme ekibinin çalışmaları sonucunda ortaya çıkan ürün 2000 yılında dünyaya<br />

sunulduğuna, insanların karşılarında gördükleri yapı karşısında hissettiklerini tanımlamak<br />

için kullanılabilecek en uygun kelime “hayranlık” idi.<br />

Microsoft.NET platformu, her türlü yazılım geliştirme ihtiyacına yönelik hazır bir altyapı<br />

sunarak, uygulama geliştiricilerin Windows, Web ve mobil platformlara yönelik<br />

uygulamaları çok daha hızlı, kolay ve güçlü bir şekilde geliştirebilmelerine olanak<br />

tanıyordu. Uygulama geliştiriciler şifreleme, kimlik doğrulama, yetkilendirme, soket<br />

iletişimi, her türlü veri kaynağına yönelik veritabanı işlemleri, XML ve Web servisi<br />

teknolojilerine kadar burada saymadığımız (editörler bir bölümün 100 sayfayı geçmesine<br />

pek sıcak bakmıyorlar) pek çok teknolojiyi ve hatta milyonlarca hazır sınıf ve fonksiyonu<br />

karşılarında gördüler. Bugüne kadar günler, haftalar ve hatta aylar harcayarak geliştirmeye<br />

çalıştıkları bu yapıların hepsini, karşılarında kullanıma hazır bir şekilde görmekten de son<br />

derece memnunlardı.


Microsoft Visual Studio 2009 2010<br />

Bölüm 4. Microsoft Visual Studio<br />

Ara yüzü<br />

Bu bölüm, Microsoft Visual Studio ara yüzünü tanımayı sağlar ve etkili bir biçimde<br />

kullanmayı gösterir. Ev ve işyerindeki çalışma ortamını düzenlemek, daha verimli çalışmayı<br />

sağlar. Yazılım geliştirirken de çalışılan ortamı tanımak ve kişiselleştirmek, rahat çalışmak<br />

açısından önemlidir.<br />

Bu bölümü tamamladıktan sonra;<br />

ortamını tanıyacak,<br />

ullanabilecek,<br />

yardımını etkili bir şekilde kullanabileceksiniz.<br />

20


21<br />

Konu 1. Visual Studio Çalışma Ortamı<br />

Microsoft Visual Studio 2009 2010<br />

Visual Studio, çok gelişmiş özelliklere ve yardımcı araçlara sahip bir dosya editörüdür. .NET<br />

platformu üzerinde geliştirilen proje dosyaları dışında, metin dosyaları, *.sql ve *.rtf<br />

uzantılı dosyalar da düzenlenebilir. Visual Studio ortamını oluşturan ve kullanımını<br />

kolaylaştıran dört ana bileşen vardır:<br />

I. Çalışma Sayfaları<br />

Visual Studio ortamında dosyalar, birer çalışma sayfası (Tab Pages) olarak açılır. Bu<br />

dosyalar sekmeler halinde sıralanır. Sayfalar arasında CTRL+TAB kısayolu ile geçiş yapılır.<br />

Bu çalışma modelinde, sadece bir sayfa görünür ve üzerinde çalışma yapılır. Ancak Visual<br />

Studio bize, çalışma ortamını parçalara bölme imkânı verir. Örnek:<br />

1 Visual Studio çalışma ortamını açın. Başlangıç sayfası karşınıza çıkar. (Eğer başlangıç<br />

sayfasını göremiyorsanız, Help menüsünden Show Start Page komutunu seçin.)<br />

2 View menüsünden, Web Browser alt menüsünü işaretleyin ve Show Browser<br />

komutunu seçin. Visual Studio, açmak istediğimiz Internet tarayıcısı için yeni bir sayfa<br />

oluşturur.<br />

3 CTRL tuşunu basılı tutarak TAB tuşuna basın. Açtığınız Internet tarayıcısından<br />

başlangıç sayfasına dönülür.<br />

4 Başlangıç sayfasını sağ tıklayın ve açılan menüden New Vertical Tab Group<br />

komutunu seçin. Visual Studio, sayfaları “sekme gruplarına” ayırarak birden fazla sayfa<br />

üzerinde çalışma imkânını sağlar.<br />

5. Başlangıç sayfasını, sayfa başlığını tıklayıp fare düğmesini basılı tutarak Internet<br />

tarayıcısının bulunduğu sekme grubuna taşıyın.


Microsoft Visual Studio 2009 2010<br />

İPUCU Visual Studio ortamını bir Web tarayıcısı olarak kullanabilirsiniz.<br />

Araç Çubukları<br />

Visual Studio, menü komutları için görsel kısayolları araç çubukları (Toolbars) ile sunar.<br />

Benzer işlemler için kullanılan komutlar bir araç çubuğunda gruplanır. Örneğin Standard<br />

araç çubuğu, yeni dosya oluşturmak, bir dosyayı açmak ve kaydetmek gibi genel dosya<br />

işlemleri için kullanılır.<br />

Araç çubukları, varsayılan durumda menülerin altında bulunur. Ancak araç çubukları<br />

taşınarak yerleri değiştirilebilir veya kayan duruma getirilebilir. Ayrıca istenen araç<br />

çubukları saklanabilir veya gösterilebilir. Araç çubuklarının listesini görmek için View<br />

menüsünden Toolbars alt menüsünü işaretleyin.<br />

Visual Studio bize kendi araç çubuklarımızı oluşturma imkânı da verir. Farklı işlevlere sahip<br />

komutlar gruplanıp, kişisel bir araç çubuğu oluşturulabilir. Örnek:<br />

1 Başlangıç sayfasının üstündeki bir araç çubuğunu sağ tıklayın. Açılan menüde,<br />

varılan tüm araç çubukları listelenir. İşaretli olan araç çubukları eklenmiş araç<br />

çubuklarıdır. Bu listeden Web araç çubuğunu seçin.<br />

2 Web araç çubuğunu çift tıklayın. Bu işlem, araç çubuğunu “Floating” (kayan menü)<br />

durumuna getirir. Tekrar çift tıklandığında, araç çubuğu “Dockable” (sabit) durumuna<br />

gelir.<br />

3 Araç çubuğunu sağ tıklayın. Açılan menünün en altındaki Customize (özelleştir)<br />

komutunu seçin.<br />

4 Toolbars sekmesinde New (yeni) komutunu tıklayın. Açılan pencerede araç<br />

çubuğunun ismi için “Genel İşlemlerim” yazın. OK düğmesini tıklayın. Visual Studio, verilen<br />

isimde bir araç çubuğu oluşturur ve kayan durumda görüntüler.<br />

5 Commands (komutlar) sekmesinde, Categories (kategoriler) listesinden Help<br />

kategorisini seçin. Bu listenin yan tarafında bulunan Commands listesinden Index komutunu<br />

bulun. Bu komutu taşıyıp, oluşturduğumuz “Genel İşlemlerim” araç çubuğuna bırakın.<br />

22


23<br />

Bu şekilde şu komutları da ekleyin:<br />

Categories Commands<br />

Tools Options<br />

File Exit<br />

View Show Web Browser<br />

Window Close All Documents<br />

1 Araç çubuğunu çalışma ortamının altına taşıyarak sabitleyin.<br />

Microsoft Visual Studio 2009 2010<br />

2 Araç çubuğunu sağ tıklayın ve listeden “Genel İşlemlerim” araç çubuğunu seçerek<br />

çalışma ortamından kaldırın.<br />

Menüler<br />

Birçok çalışma ortamının yaptığı gibi, Visual Studio da benzer öğeler üzerinde işlevleri olan<br />

komutları menüler halinde gruplar. Menülerin araç çubuklarından farkı, sabit olmaları ve<br />

özelleştirmeye açık olmamalarıdır. Menüler bu bölümde detaylı olarak ele alınacaktır.<br />

Paneller<br />

Paneller, Visual Studio içindeki pencerelerdir. Çalışma ortamında birçok panel bulunur.<br />

Bunlar arasında Solution Explorer, Toolbox, Object Browser, Properties, Watch, Output,<br />

Search Result, Task List gibi sıkça kullandığımız paneller sayılabilir.<br />

İPUCU Görmek istenen paneller View menüsünden seçilebilir.<br />

Paneller, Visual Studio ortamı içersinde istenen yere taşınabilir veya sabitlenebilir.<br />

Panellerin birkaç genel özelliği vardır:<br />

Auto Hide (Otomatik gizle). Panelin, fare imleci üzerindeyken gözükmesi ve imleç<br />

çekildikten sonra gizlenmesidir.


Microsoft Visual Studio 2009 2010<br />

Dockable (Sabitlenebilir). Panelin, Visual Studio ortamı içersinde bir yerde<br />

sabitlenebilme özelliğidir.<br />

Floating (Kayan). Kayan paneller herhangi bir yere sabitlenemez. Ancak her sayfanın<br />

üstünde durur ve böylece sürekli görünür.<br />

Panellerin bu özelliklerine Window menüsünden erişilebilir.<br />

Örnek:<br />

1 View menüsünden Other Windows alt menüsünü işaretleyin ve Favorites panelini<br />

seçin. Panelin başlığında, biri Auto Hide, diğeri Close olmak üzere iki düğme görülür.<br />

2 Auto Hide düğmesini tıklayarak paneli gizleyin.<br />

3 Paneli tekrar seçin, Window menüsünden Auto Hide özelliğini seçin. Daha sonra aynı<br />

menüden Floating özelliğini seçin. Panelin taşınabildiği, ancak sabitlenemediği görülür.<br />

4 Panel seçiliyken, Window menüsünden Dockable özelliğini seçin. Bu sefer, panelin<br />

taşındığında çalışma ortamının herhangi bir yerine sabitlenebildiği görülür.<br />

5 Panel seçiliyken, Window menüsünden Hide komutunu seçin. Paneli tekrar açmak<br />

için bu adımları tekrarlayın.<br />

Konu 2. Start Page<br />

Visual Studio çalışma ortamını açtığımız zaman karşımıza ilk gelen başlangıç sayfasıdır. Bu<br />

sayfa üç bölümden oluşur (Resim 3.3).<br />

Projects. O ana kadar çalıştığınız projeleri gösterir. Bu menüden son projelerinizi<br />

açabilirsiniz. Son projelerde gözükmeyen bir proje (Open Project) veya yeni bir proje (New<br />

Project) de açabilirsiniz.<br />

24


25<br />

Microsoft Visual Studio 2009 2010<br />

Online Resources. Bu bölümde örnek uygulamalar (Find Samples), ipuçları bulabilir, en<br />

yeni teknolojileri, güncellemeleri veya en son eklenen haberleri takip edebilir, MSDN<br />

kütüphanelerinde kod örnekleri ve makaleler araştırabilirsiniz.<br />

My Profile. Bu bölümde çalışma şeklinize göre bir profil seçebilirsiniz. Profiller; kullanılan<br />

kısayollara, panellerin yerlerine ve görünümlerine, Visual Studio yardımını kullanırken<br />

yapılan filtrelemeye göre değişir.<br />

Örneğin, profili Visual Basic Developer olarak ayarlarsak Toolbox, sayfaların sol tarafında<br />

çivili olarak durur. Yardım panelinde bir arama yapmak istediğimizde ise, sonuçlar Visual<br />

Basic filtresine göre çıkar. Ayrıca Solution Explorer paneli CTRL+R kısayolu ile açılır.<br />

Görünüm, kısayollar ve yardım filtresi birbirinden bağımsız olarak da ayarlanabilir. Bu<br />

durumda seçilen profil, custom (özel) olarak gözükecektir. At Startup seçeneklerinden,<br />

Visual Studio açılırken hangi pencerenin gözükeceğini belirleyebilirsiniz. Örneğin,<br />

başlangıçta en son çalıştığınız projenin açılmasını istiyorsanız, “Load last loaded solution”<br />

seçeneğini tercih etmelisiniz.<br />

İPUCU <strong>Giriş</strong> sayfasını kapattıktan sonra, Help menüsünden Show Start Page seçeneğini<br />

tıklayarak açabilirsiniz.


Microsoft Visual Studio 2009 2010<br />

Konu 3. Menüler<br />

Visual Studio menüleri birçok uygulamanın menülerine benzer niteliktedir. Menü<br />

isimlerinde, belirli bir harfinin altı çizilmiştir. Belirtilen harflere ALT tuşu ile birlikte<br />

basıldığında, o menülere kısayolla ulaşılır. Menü komutlarının bazılarında ise, sadece o<br />

komuta özel bir kısayol tanımlıdır. Bu kısayollar CTRL veya SHIFT gibi birkaç tuş<br />

kombinasyonu ile gerçekleşir.<br />

File (Dosya). Tüm dosya işlemleri bu menü altındadır. Standard araç çubuğu ile bu<br />

menüdeki bazı komutlara ulaşılır. File menüsündeki komutlar ile:<br />

Yeni bir proje, bir dosya veya boş bir çözüm (solution) oluşturmak,<br />

varılan bir dosyayı açmak,<br />

leri (Recent Files) açmak,<br />

ür.<br />

Edit (Düzenle). Tüm yazı düzenleme işlemleri için, bu menüdeki komutlar kullanılır. Text<br />

Editor araç çubuğu da bu menünün komutlarına kısayoldur. Edit menüsündeki komutlar ile:<br />

Copy, Cut, Paste, Delete, Select All gibi temel işlemleri<br />

Find And Replace, Go, Bookmark gibi navigasyon işlemleri<br />

Outlining ile metinleri gruplama işlemleri<br />

seviye işlemler gerçekleştirilir.<br />

çük harf çevrimi gibi ileri<br />

26


27<br />

Microsoft Visual Studio 2009 2010<br />

View (Görünüm). Visual Studio çalışma ortamındaki tüm paneller bu menü komutlarıyla<br />

gösterilir. Ayrıca Navigate Backward ve Navigate Forward komutlarıyla en son çalışılan<br />

satıra geri dönülür.<br />

Project (Proje). Projeye dosya eklemek, çıkarmak, proje özelliklerini göstermek için bu<br />

menü kullanılır.<br />

Build (Derleme). Projelerin çalışmak üzere derlenmesi için gereken komutlar, bu menü<br />

altındadır.<br />

Debug (Hata Ayıklama). Projede hata ayıklarken gereken komutlar Debug menüsü<br />

altındadır. Projeyi Debug durumunda başlatmak, BreakPoints (hata ayıklarken durulması<br />

gereken satırları ayarlamak) gibi işlemler yapılır.<br />

Tools (Araçlar). Visual Studio ile beraber yüklenen yardımcı araçların listelendiği<br />

menüdür. Araç çubuklarını özelleştirmek için kullanılan Customize seçeneği gibi Options<br />

seçeneği de en sık kullanılan özelliklerden biridir.<br />

Visual Studio çalışma ortamının tüm ayarları Options menüsünden yapılır. Environment ve<br />

Text Editor en sık kullanılan seçeneklerdir.<br />

Environment (Ortam). Sayfa düzeni ve görünüm ayarları, yazı tipi (font) ve renk ayarları,<br />

komutlar için kısayol ayarları, Internet tarayıcısı ayarları, yardım ve dinamik yardım<br />

ayarları buradan yapılır.<br />

Text Editor (Metin düzenleyicisi). Farklı programlama dillerine özgü yazı düzeni ayarları<br />

buradan yapılır.<br />

Örnek:<br />

1 Tools menüsünden Options komutunu seçin.<br />

2 Sol panelde bulunan Environment menüsünden Fonts and Colors (yazı düzeni ve<br />

renkler) sekmesine gelin.<br />

3 Sağ panelde bulunan Display items (Öğeleri listele) menüsünden Text alanını seçin<br />

ve Item background (Öğe arka planı) özelliğini Light Grey (Açık gri) olarak belirleyin. Tüm<br />

sayfaların arka plan rengi açık gri olacaktır.


Microsoft Visual Studio 2009 2010<br />

1 Sol panelde Environment menüsünden Web Browser sekmesine gelin. Home Page<br />

(ana sayfa) özelliğinin altındaki Use Default seçeneğini kaldırın ve metin kutusuna<br />

www.bilgeadam.com yazın.<br />

2 Sol panelde Text Editor menüsünden Basic alt menüsünü seçin. Burada Visual Basic<br />

diline özel metin düzenleme seçenekleri bulunur. Sağ panelde, Display sekmesinin altında<br />

Line Numbers (Satır numaraları) seçeneğini işaretleyin. Bu seçenek, Visual Basic<br />

projelerinde çalışırken satır numaralarını gösterir.<br />

Window (Pencere). Sayfaların ve panellerin görünümlerini ve özelliklerini değiştirmek<br />

için kullanılan komutlar bu menü altında bulunur. Tüm açık çalışma sayfaları bu menü<br />

altında görüldüğü gibi, istenen sayfa seçilerek ön plana getirilir. Ayrıca, Close All<br />

Documents (Tüm sayfaları kapat) komutu ile açık olan bütün sayfalar kapatılır. Auto Hide<br />

All (Tümünü otomatik gizle) komutu ile, sabit hale getirilmiş tüm paneller gizlenir.<br />

Help (Yardım). Visual Studio çalışma ortamında çok sık kullanılan yardım panellerinin<br />

görünümü bu menü ile sağlanır. Bu menü ile ayrıca, kullanılan Visual Studio çalışma<br />

ortamının sürümü hakkında bilgi alınır, son güncellemeler kontrol edilir, teknik destek için<br />

gereken eposta adreslerine veya telefonlara ulaşılır.<br />

Yardım kullanımı bu bölümde detaylı olarak ele alınacaktır.<br />

28


29<br />

Konu 4. Solution Explorer Paneli<br />

Microsoft Visual Studio 2009 2010<br />

Visual Studio çalışma ortamında projeler bir çözüm (solution) altında açılır. Bir çözüm içine<br />

farklı dilde ve tipte projeler dahil edilebilir. Visual Studio ile bir çözüm açıldığında,<br />

Solution Explorer panelinde (Resim 3.5) çözüm içinde bulunan tüm projelerle, ilgili dosya<br />

ve klasörler görüntülenir. Panelde koyu yazı tipinde gözüken proje, çözüm içindeki<br />

başlangıç projesidir.<br />

Bu panelden, öğeler üzerinde silme, kopyalama, taşıma ve ismini değiştirme işlemleri<br />

yapılabilir. Ayrıca panelin üst kısmında, seçilen öğe üzerinde basit işlemler gerçekleştirmek<br />

için bir araç çubuğu bulunur.<br />

Refresh (Yenile). Proje dosyaları üzerindeki değişikliklerin gözükmesini sağlar.<br />

Show All Files (Bütün dosyaları göster). Seçilen projenin bulunduğu klasördeki tüm<br />

dosyaları ve alt klasörleri gösterir. Panelde gözüken beyaz öğeler proje içine dahil<br />

edilmemiş öğelerdir. Proje kapsamında kullanılmak istenen öğeler (örneğin, arka plan<br />

resmi), sağ tıklanıp Include In Project komutu ile projeye dahil edilmelidir.<br />

Properties (Özellikler). Paneldeki tüm öğelerin özellikleri, Properties komutu ile<br />

görülebilir. Bu komut seçildiğinde, öğenin özellikleri Properties paneli ile görüntülenir.<br />

(Properties paneli bu bölümde detaylı olarak ele alınacaktır.)


Microsoft Visual Studio 2009 2010<br />

Solution Explorer paneli, View menüsünden görülebildiği gibi, varsayılan klavye<br />

seçeneklerinde CTRL+ALT+L kısayolu ile de görülebilir.<br />

Konu 5. Toolbox Paneli<br />

Toolbox (Araç kutusu) paneli, projelerde kullanılan çeşitli bileşenlerin listelendiği paneldir.<br />

Buradaki öğeler, sekmeler içinde gruplanmıştır. Her sekme, ortak platformlarda çalışan<br />

veya benzer işlevleri olan nesnelere sahiptir. Örneğin, Data sekmesinde veritabanı<br />

işlemlerinde kullanılan bileşenler vardır. Windows Forms bileşenleri Windows platformunda<br />

çalışan projelerde, Web Forms bileşenleri ise Web tabanlı projelerde kullanılan<br />

nesnelerdir. ClipBoard Ring sekmesinde ise kopyalanan metinler bulunur. Nesnenin silik<br />

gözükmesi, o anda çalışılan sayfada kullanılamayacağı anlamına gelir.<br />

30


31<br />

Microsoft Visual Studio 2009 2010<br />

Toolbox panelinde nesneler, en sık kullanılandan en az kullanılana göre sıralanır. Örneğin,<br />

Windows Forms sekmesinde en üstte Label, Link Label, Button, TextBox nesneleri bulunur.<br />

Nesneler, yerleri ve sıraları taşınarak değiştirilebilir, ayrıca başka bir sekmeye de<br />

taşınılabilir. Varsayılan sıralama dışında, alfabetik olarak da sıralama yapılabilir.Visual<br />

Studio çalışma ortamı, Toolbox panelindeki nesnelere yeni isim verme, nesneleri silme<br />

veya panele yeni sekmeler ve nesneler ekleme imkânlarını da sağlar.<br />

Örnek:<br />

1 View menüsünden Toolbox panelini seçin.<br />

2 Panelde herhangi bir yeri sağ tıklayın ve Show All Tabs (Bütün sekmeleri göster)<br />

komutunu seçin.<br />

3 Windows Forms sekmesinde TextBox nesnesini sağ tıklayın. Çıkan menüden Rename<br />

Item (Ad Değiştir) komutunu seçin ve “Metin Kutusu” yazın.<br />

4 “Metin Kutusu” nesnesini taşıyarak sekmenin en üstüne getirin.<br />

5 Paneli sağ tıklayın ve Sort Items Alphabetically (Nesneleri alfabetik olarak sırala)<br />

komutunu seçin. Metin Kutusu nesnesinin, alfabetik sırada yerini aldığı görülür.<br />

6 Paneli sağ tıklayın ve Add Tab (Sekme ekle) komutunu seçin. Sekmeye “Medya”<br />

ismini verin.<br />

7 Sekmeyi sağ tıklayın ve Add/Remove Items (Nesne Ekle/Kaldır) komutunu seçin.<br />

Customize Toolbox iletişim kutusu açılır. Burada Toolbox paneline eklenebilecek tüm<br />

bileşenler listelenir. Com Components sekmesine gelin ve listeden Windows Media Player<br />

nesnesini işaretleyin. OK düğmesini tıklayarak iletişim kutusunu kapatın. Windows Media<br />

Player nesnesinin, oluşturulan Medya sekmesine eklendiği görülür.<br />

Toolbox paneline varsayılan klavye seçeneklerinde CTRL+ALT+X kısayolu ile ulaşılır.


Microsoft Visual Studio 2009 2010<br />

Konu 6. Properties Paneli<br />

Properties (Özellikler) paneli seçilen bir nesnenin özelliklerini görüntüler. Paneldeki<br />

görünüm, “Özellik adı – değeri” şeklindedir. Silik olarak gözüken özellikler salt okunurdur<br />

ve değiştirilemez. Panelin üzerindeki açılır liste, çalışma sayfasındaki nesneleri listeler.<br />

Buradan istenen nesne seçilerek özellikleri görüntülenir.<br />

Paneldeki özellikler kategorilere göre gruplanmıştır, ancak alfabetik olarak da dizilebilir.<br />

Panelin üstünde bulunan araç kutusundan Categorized (Kategorileştirilmiş) veya Alphabetic<br />

(Alfabetik) seçenekleri işaretlenerek özelliklerin görünümleri değiştirilebilir.<br />

Panelin en altında bulunan bölümde, her özelliğin açıklaması bulunur.<br />

İPUCU Bir nesnenin üzerindeyken F4 tuşuna basınca, Properties paneli görüntülenir.<br />

32


33<br />

Konu 7. Help Kullanımı<br />

Microsoft Visual Studio 2009 2010<br />

Yazılım geliştirirken en çok kullanacağımız kaynaklar yardım dosyaları olacaktır. Bir<br />

programlama dilinin çok çeşitli özellikleri ve kullanım farklılıkları olabilir. İyi bir programcı<br />

bütün bu özellikleri ezbere bilen değil, bu özellikleri en kısa sürede bulan, öğrenen ve<br />

kullanan programcıdır. Yardım dosyalarının kullanımını bilmek, programcılığın temelini<br />

oluşturan önemli unsurlardan biridir.<br />

DİKKAT Visual Studio yardımını kullanmak için, MSDN (Microsoft Developer Network)<br />

yardım kütüphanelerinin yüklenmiş olması gerekir.<br />

Visual Studio yardımı programcıya, gelişmiş özelliklere sahip paneller ve yardım dosyaları<br />

ile geniş bir kullanım kolaylığı sağlar.Visual Studio yardım dosyalarının yapısı, başlık, içerik<br />

ve ilişkili konular (See Also) bölümlerinden oluşur. Ayrıca her yardım dosyasının altında<br />

bulunan Send Comments bağlantısı ile konu hakkında yorum gönderilebilir.<br />

Visual Studio yardım panelleri Dynamic Help, Search, Index ve Contents olarak dörde<br />

ayrılır. Bu panellere, Help menüsünden ulaşılabilir.<br />

I. Dynamic Help<br />

Dynamic Help (Dinamik yardım) paneli, içeriği otomatik olarak değişen bir araçtır. Kod<br />

yazarken, panellerde veya sayfalarda nesneler seçildiğinde, kullanıcının başka bir işlem<br />

yapmasına gerek kalmadan, o nesne hakkındaki yardım konularını listeler. F1 tuşuna<br />

bastığımız zaman ise, seçilen nesneye ait, Dynamic Help panelindeki ilk yardım konusu yeni<br />

bir sayfada görüntülenir.


Microsoft Visual Studio 2009 2010<br />

Paneldeki yardım konuları Help, Samples ve Getting Started olarak üç bölüme ayrılmıştır.<br />

Help bölümü, seçilen nesneyle ilişkili olan kavramların listelendiği bölümdür. Samples,<br />

konuyla ilgili kod örnekleri bulunan yardım dosyalarını gösterir. Getting Started, çalışılan<br />

sayfalara göre değişen, temel işlemleri içeren başlangıç yazılarını gösterir.<br />

Search<br />

Search (Arama) paneli, MSDN kütüphanelerinde arama yapılan paneldir. Look for metin<br />

kutusuna, aranacak anahtar kelimeler girilir. Filtered by (Filtreleme) ile arama sonuçları<br />

belli konulara göre sınırlanır ve istenmeyen seçeneklerin gösterilmesi engellenir.<br />

Search panelinde, Search in titles only, Match related words, Search in previous results,<br />

Highlight search hits arama seçenekleri bulunur:<br />

Search in titles only. Sadece konu başlıklarında arama yapar; içerik kısmına bakmaz.<br />

Match related words. Kelimeleri yazıldığı gibi arar; benzer yazımlı kelimeleri aramaz.<br />

Search in previous results. İlk aramadan sonra aktif olan bu seçenek ile kelimeler, bir<br />

önceki aramada bulunan sonuçlar arasında aranır. Highlight search hits. Bulunan yardım<br />

sayfalarında, aranan kelimelerin seçili olmasını sağlar.<br />

Bulunan sonuçlar Search Results (Arama Sonuçları) panelinde gösterilir. Bu panelde;<br />

Title, konunun başlığınıLocation, MSDN kütüphanelerinde hangi başlık altında bulunduğunu<br />

Rank, konunun aranan kelimeye olan yakınlık derecesini ifade eder.<br />

Index<br />

Index (Dizin) paneli, yardım dosyalarındaki bütün konuları alfabetik sırada dizer. Filtreleme<br />

işlevi, arama panelinde olduğu gibidir. Bu panelin özelliği, aranacak kelime yazılırken, bu<br />

kelime ile başlayan tüm konuların alfabetik sırada gösterilmesidir. Bu şekilde, aranan<br />

konulara çok hızlı bir şekilde ulaşılabilir.<br />

Eğer bir konu ile ilgili birden fazla yardım dosyası varsa, Index Results (Dizin Sonuçları) panelinde bu<br />

seçenekler gösterilir.<br />

Contents<br />

Contents (İçerik) panelinde, tüm MSDN içeriği konulara göre hiyerarşik yapıda, kategorilere<br />

ayrılmış olarak gösterilir. Bu panelde de aynı şekilde filtreleme yapılarak istenmeyen<br />

içerikler çıkartılabilir.<br />

Bir yardım dosyası açıkken, Help menüsünden Sync Contents (İçerik senkronizasyonu)<br />

komutu seçilerek o yardım dosyasının Contents panelindeki yeri bulunabilir.<br />

34


35<br />

Algoritma ve Dump Coding 2009 2010<br />

Bölüm 5. Algoritma ve Dump<br />

Coding<br />

Programlamanın temelinde, çalışma akışını ve izlenecek yolları belirleyen algoritmalar<br />

vardır. Bir iş yapılmaya başlanmadan önce nasıl planlanıyorsa, kodlamaya geçilmeden önce<br />

de bir çalışma planı belirlenmelidir. Programla, bu planda yazılan kodları belli bir sıra ile<br />

okur ve işler. Dolayısıyla algoritma yapısını çok iyi kurmak gerekir. Kurulan algoritmalar<br />

akış diyagramları ile görsel zenginlik kazanırlar.<br />

Dump Coding yöntemi algoritmaları çözmenin uzun, fakat etkili bir yoludur. Bu yöntem,<br />

adımları tek tek inceleyerek algoritma akışını çözer. Bu modül tamamlandıktan sonra;<br />

ding ile algoritmaları çözümleyecek,


Konu 1. Algoritma Nedir?<br />

Algoritma ve Dump Coding 2009 2010<br />

Algoritma, bir işin hangi etaplardan geçilerek yapılacağını gösteren çalışma planıdır.<br />

Algoritma bir programlama dili değildir. Programlama dillerine yol gösteren bir yöntem<br />

dizisidir. Her dilde algoritma yazılıp uygulanabilir. Örneğin bir cep telefonunun el<br />

kitapçığında yazan, rehber kaydı girmek için izlenecek yollar, o işin algoritmasıdır.<br />

Algoritma yazarken, programın çalışması için kullanılan kaynakların, yapılması gereken<br />

kontrollerin veya işlemlerin açıkça ifade edilmesi gerekir. Ayrıca iyi bir algoritmanın, tüm<br />

ihtimalleri kontrol edip istenmeyen durumlarda ne yapılması gerektiğini de belirtmesi<br />

gerekir.<br />

alışma zamanında çoğu kez, işleyişin tamamlanması için dışarıdan bir bilgi<br />

girilmesi gerekir. Algoritmanın çalışması için ihtiyaç duyduğu veriler, işlemi başlatan<br />

kişiden veya belirtilen bir kaynaktan alınabilir. Bu bilgiler sağlanmadan işlem devam<br />

etmez.<br />

kavramlardır. Girilen veya işlem sonucunda elde edilen veriler, işlemin amacına göre<br />

kontrol edilir ve sonuca göre algoritma akışı istenen yere yönlendirilir.<br />

itmanın akışı boyunca veriler üzerinde değişiklikler, yeni değer atamaları<br />

gibi işlemlere ihtiyaç duyulur. Algoritmalar kurulurken, yapılan işlemlerin yalın halde, tek<br />

tek yazılması okunabilirliği artırır.<br />

Algoritmalar adım sırası ile çalışır ve karar yapıları sonucunda farklı bir yere<br />

yönlendirilmediği müddetçe, bir sonraki adım ile işlemeye devam eder.<br />

Örnek: Telefon kulübesinden telefon açmak için örnek bir algoritma<br />

1 Telefon kulübesine git.<br />

2 Telefon kartı al.<br />

36


37<br />

Algoritma ve Dump Coding 2009 2010<br />

3 Telefon sırasında kaç kişi olduğuna bak.<br />

4 Kişi sayısı sıfırdan fazlaysa 3‟e dön.<br />

5 Kapı kapalıysa kapıyı aç.<br />

6 İçeri gir, kapıyı kapat.<br />

7 Telefon kartını telefona yerleştir.<br />

8 Ahizeyi kaldır.<br />

9 Numarayı çevir.<br />

10 Konuşmanın bitip bitmediğine bak.<br />

11 Konuşma bittiyse kartı al, bitmediyse 10‟a dön.<br />

12 Bir daha konuşma yapılacaksa 7‟ye dön.<br />

13 Kapıyı aç, dışarıcık.<br />

Bu algoritmanın işlemesi için, her ihtimal gözden geçirilerek, algoritma akışı gerekli yerlere<br />

yönlendirilir. Örneğin, kapının kapalı olması durumunda kapıyı açmak için gerekli komutlar<br />

verilmelidir. Bu algoritmanın ihtiyaç duyduğu veriler ya kullanıcı tarafından verilir ya da<br />

işlem başlamadan önce belirlidir. Sıradaki kişi sayısı, telefon kartı gibi veriler kullanıcı<br />

tarafından sağlanmış; çevrilecek numara, algoritma başlamadan önce belirlenmiştir.<br />

Konu 2. Dump Coding Nedir?<br />

Dump Coding yöntemi birçok karışık algoritmayı çözümlememizi sağlar.


Algoritma ve Dump Coding 2009 2010<br />

Dump Coding yöntemi, algoritmanın her adımında, değişkenlerin tek tek değerlerini yazıp<br />

işleyişi takip etmektir. Örnek: İki sayının OBEB‟ini (ortak bölenlerin en büyüğünü) alan<br />

algoritmalardan bir tanesi Euclid tarafından geliştirilmiştir.<br />

1 İki sayı gir. Büyük A, küçük B.<br />

2 A sayısını B sayısına böl. Tam bölünüyorsa, OBEB B sayısıdır. Çıkış.<br />

3 A sayısının değerini, kalan sayının değeri yap.<br />

4 A ile B sayılarının yerini değiştir. İkinci etaba dön.<br />

Bu algoritmanın çalışma mantığı, Dump Coding yöntemi ile adım adım incelenir.<br />

1 İki sayı girilir. A = 12 ve B = 8.<br />

2 A sayısı, B sayısına tam bölünmüyor. Algoritma diğer etaptan devam eder.<br />

3 Kalan sayı = 4. Dolayısıyla A = 4 olur.<br />

4 A sayısı ile B sayısının yerleri değiştirilir.A = 8 ve B = 4 olur. İkinci etaba dönülür.<br />

5 A sayısı B sayısına tam bölünüyor. OBEB = 4.<br />

Konu 3. Akış Diyagramlarında Kullanılan Semboller<br />

Madde madde yazılan algoritmaların okunması kolaydır, ancak işleyişin bütününü görmek,<br />

çoğu zaman mümkün değildir. Akış diyagramları, algoritmaları görsel biçimde göstermeyi,<br />

dolayısıyla daha anlaşılır hale getirmeyi sağlar. Algoritmada yapılacak işlemlerin çeşitlerine<br />

göre çeşitli semboller kullanılır.<br />

38


39<br />

Algoritma ve Dump Coding 2009 2010<br />

Başla – Bitir. Algoritmanın hangi aşamadan başlayacağını ve ne zaman biteceğini gösteren<br />

semboldür. Bir algoritmayı temsil eden akış diyagramında, bir tane Başla ve bir tane Bitir<br />

sembolü olmalıdır (Resim 5.1).<br />

Veri <strong>Giriş</strong>i. Kullanıcıdan ve başka bir kaynaktan alınan verilerin isimlerini tutar (Resim<br />

5.2).<br />

Karar Verme. Karar yapısını belirten semboldür. Üstünde koşul ifadesi belirtilir (Resim<br />

5.3).<br />

Veritabanı. Veritabanında okuma veya yazma işlemi yapıldığını gösterir (Resim 5.4).<br />

kullanılması, akış diyagramını daha anlaşılır kılar (Resim 5.7).<br />

sembolle belirtilir (Resim 5.8).<br />

rı bir fonksiyon sembolü


Konu 4. Algoritma Uygulamaları<br />

Algoritma ve Dump Coding 2009 2010<br />

I. Bilet Satma<br />

Bir tiyatro uygulamasının sürekli gerçekleştireceği temel işlem, bilet satmaktır. Bu işlemi<br />

gerçekleştirmek için gerekli kodlar yazılmadan önce, algoritma kurulmalıdır (Resim 5.9).<br />

1 Kullanıcının istediği oyun, gün ve yer bilgileri alınır.<br />

2 Veritabanı sorgulanarak, belirtilen günde oynayan oyunun boş yerleri çıkartılır.<br />

3 Boş yer sayısı sıfırsa, o günde belirtilen oyun oynanmıyordur ya da oyundaki bütün<br />

yerler satılmıştır.<br />

4 Her iki durumda da bilet kesilemediği için ekranda hata mesajı gösterilir. Gün ve<br />

oyun bilgilerini baştan almak için ilk etaba dönülür.<br />

5 Kullanıcıdan oturmak istediği yer bilgisi alınır.<br />

6 İstediği yerin dolu olup olmadığı kontrol edilir.<br />

7 Yer dolu ise ekrana hata mesajı gösterilir ve yer bilgisi tekrar alınmak üzere 5.<br />

etaba dönülür.<br />

40


41<br />

Algoritma ve Dump Coding 2009 2010<br />

8 Yer boşsa, veritabanında oyunun yer kayıtları güncellenir.<br />

9 İstenilen gün, oyun ve yer bilgilerini içeren bilet yazıcıdan çıkartılır.<br />

Çay Demleme<br />

Bu örnekte, bir çay demleme işleminde yapılması gereken işlemleri, kontrol edilmesi<br />

gereken olayları içeren algoritma kurulur (Resim 5.10).<br />

1 Kullanıcıdan su vermesi beklenir.<br />

2 Suyu ısıtma işlemi yapılır.<br />

3 Suyun kaynayıp kaynamadığı kontrol edilir. Kaynamamışsa 2. etaba dönülür.<br />

4 Çay daha önceden hazır olduğu için, kullanıcıdan beklenmez. Demliğe çay koyma<br />

işlemi yapılır.<br />

5 Kullanıcıdan, demleme işleminin ne kadar süreceği bilgisi alınır.<br />

6 Kullanıcıdan alınan demleme süresi ile şimdiki zaman (çayın demlenmeye başladığı<br />

zaman) toplanır. Çıkan değer, BitisZamani isimli değişkene atılır. Bu değişken demleme<br />

işleminin ne zaman biteceği bilgisini tutar.<br />

7 Şimdiki zaman, bitiş zamanından küçükse çayın demlenmesi için ayrılan süre daha<br />

dolmamış demektir. Bu süre dolana kadar 7. etap tekrarlanır.<br />

8 Çayın demlendiğini, kullanıcıya ekran üzerinde bildiren bir mesaj çıkartılır.


Algoritma ve Dump Coding 2009 2010<br />

Üniversite Eğitim Notunu Hesaplama<br />

Üniversitede bir dersin başarı notu, genelde bir vize ve bir final notu ile hesaplanır. Vize<br />

notunun katsayısı finalden daha düşüktür. Sonuçta çıkan not 50 ve üstündeyse öğrenci<br />

geçer, 50‟nin altındaysa kalır. Bu örnek, vizenin %30 ve finalin %70 ağırlıklı olduğu başarı<br />

notunun hesaplanmasını akış diyagramıile gösterir (Resim 5.11).<br />

1 Notu hesaplanacak öğrencinin numarasıkullanıcıdan alınır.<br />

2 Veritabanından öğrencinin vize ve final notları çekilir.<br />

3 Eğer final notu 28 veya daha düşükse öğrenci kalır ve 9. etaba gidilir. Bu durumda<br />

vize notu 100 olsa dahi, sonuç olarak toplanan not 50‟nin altında olur. Dolayısıyla<br />

öğrencinin kalması kesinleşir. Böyle bir kontrol yapılması, gereksiz işlemlerin yapılmasını<br />

engeller.<br />

4 Vize değişkenine, veritabanından alınan vize notunun %30‟u atanır.<br />

5 Final değişkenine, veritabanından alınan final notunun %70‟i atanır.<br />

6 Sonuc değişkenine, Vizeve Finaldeğerlerinin toplamıatanır.<br />

7 Sonuc değerinin 50‟den büyük olup olmadığı kontrol edilir.<br />

8 Sonuc 50‟den büyükse ekrana “Geçtiniz” yazan bir mesaj çıkartılır. Algoritmadan<br />

çıkılır.<br />

9 Sonuç 50‟den küçükse ekrana “Kaldınız” yazan bir mesaj çıkartılır.<br />

42


43<br />

Algoritma ve Dump Coding 2009 2010


Konu 5. Alıştırmalar<br />

Kaynak: http://www.biltek.tubitak.gov.tr<br />

Algoritma ve Dump Coding 2009 2010<br />

Aşağıdaki sorular Yeryüzünde henüz cevabını kimsenin bilmediği sorular<br />

Ancak biz bunların cevabını bulmayacağız tabii<br />

Bu sorulardan yararlanarak bazı problemler yapalım…<br />

I. Soru<br />

Asal sayılara ilişkin pek çok bilgi henüz gün ışığına çıkmadı. Bunun yanı sıra ortaya atılmış<br />

ama ispatlanmamış pek çok da kestirim var. İşte bunlardan biri:<br />

• İkiz Asallar: İkiz asallar yani aralarındaki fark 2 olan asallar sonsuz tane midir? Bende<br />

bilmiyorum ve tabii ki bunu bulmanızı istemicem<br />

(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43). ..???<br />

Veee soru.<br />

• keyfi verilen N sayısı için elemanları ikiz asal sayılardan oluşan (2xN) lik matrisi<br />

veren programın algoritmasını yazınız.<br />

Soru<br />

Mükemmel Sayı Sorusu<br />

Mükemmel sayı kendisi haricindeki tüm çarpanlarının toplamı kendisini veren sayıdır.<br />

Örneğin 6 bir mükemmel sayıdır çünkü kendisi haricindeki çarpanları yani 1, 2 ve 3<br />

toplanınca kendisini verir: 1 + 2 + 3 = 6. Diğer örneklerse 28, 496, 8128 şeklinde gidiyor.<br />

Şimdiye kadar hiç tek mükemmel bir sayıya rastlanmamış. Merak edilen böyle bir sayının<br />

var olup olmadığı. Eğer vardır diyorsanız bu sayıyı, saklandığı yerden bulup çıkarmalı, ya da<br />

olmadığını iddia ediyorsanız bunu ispatlamalısınız.<br />

• Tabii ki sizden böyle bir ispat beklemiyorum. Sizden istediğim (i,j) bileşenleri<br />

mükemmel sayılardan oluşan verilen 2x2 lik mükemmel bir matris oluşturacak şekilde<br />

algoritma yazmanız…. Yani bu durumda matrisinizin elemanları 6,28,496,8128 olacaktır.<br />

Soru<br />

Palindromik Sayılar<br />

44


45<br />

Algoritma ve Dump Coding 2009 2010<br />

Kapak, kütük, sus, yay, kepek kelimeleri ilginç bir ortak özellik ile dikkat çekiyor: düzden<br />

ve tersten okunduğunda aynı. Benzer bir yapıya sahip olan Palindromik sayılar da düzden<br />

ve tersten okunduğunda aynı olan sayılardır: 1991, 10001, 12621, 79388397, 82954345928.<br />

Bu alandaki açık soru ise şöyle:<br />

Hem asal hem de Palindromik olan sonsuz tane asal sayı bulunabilir mi? Yine ben bu soruyu<br />

sormayacağım. Sanırım asallarla çok işimiz var.<br />

Soru şu:<br />

• Bileşenleri Palindromik sayı olan NxN matris oluşturacak şekilde programın<br />

algoritmasını yazınız.<br />

Kaynak: http://www.math.metu.edu.tr/~aldoks/oyak/2003_1.pdf<br />

Soru<br />

Elemanları, 6 ile bölündüğünde 5 kalanını; 7 ile bölündüğünde 6 kalanını veren keyfi NxN<br />

matrisi yazdıran programın algoritmasını yazınız.<br />

Soru<br />

Kendisi dışındaki tüm bölenlerinin toplamı kendisinden büyük olan her pozitif tam sayıya<br />

verimli sayı diyelim. Örneğin, 27 sayısının, kendisi dışındaki bölenlerinin toplamı 1+3+9 = 13<br />

< 27 olduğundan, 27 sayısı bir verimli sayı değildir. Öte yandan, kendisi dışındaki tüm<br />

bölenlerinin toplamı 1+2+3+5+6+10+15 = 42 > 30 olduğundan, 30 sayısı bir verimli sayıdır.<br />

Buna göre elemanları verimli sayılardan oluşan keyfi NxN lik matrisi veren programın<br />

algoritmasını yazınız.<br />

Kaynak: http://www.math.metu.edu.tr/~aldoks/oyak/2004_1.pdf<br />

Herkese çok kolay gelsin.<br />

Arzu Erdem


Konu 6. Alıştırmaların çözümleri<br />

Kaynak: http://www.biltek.tubitak.gov.tr<br />

Algoritma ve Dump Coding 2009 2010<br />

Aşağıdaki sorular Yeryüzünde henüz cevabını kimsenin bilmediği sorular<br />

Ancak biz bunların cevabını bulmayacağız tabii<br />

Bu sorulardan yararlanarak bazı problemler yapalım…<br />

I. Soru<br />

Asal sayılara ilişkin pek çok bilgi henüz gün ışığına çıkmadı. Bunun yanı sıra ortaya atılmış<br />

ama ispatlanmamış pek çok da kestirim var. İşte bunlardan biri:<br />

• İkiz Asallar: İkiz asallar yani aralarındaki fark 2 olan asallar sonsuz tane midir? Bende<br />

bilmiyorum ve tabii ki bunu bulmanızı istemicem<br />

(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43). ..???<br />

Veee soru.<br />

• keyfi verilen N sayısı için elemanları ikiz asal sayılardan oluşan (2xN) lik matrisi<br />

veren programın algoritmasını yazınız.<br />

Çözüm<br />

Soru<br />

Mükemmel Sayı Sorusu<br />

Mükemmel sayı kendisi haricindeki tüm çarpanlarının toplamı kendisini veren sayıdır.<br />

Örneğin 6 bir mükemmel sayıdır çünkü kendisi haricindeki çarpanları yani 1, 2 ve 3<br />

toplanınca kendisini verir: 1 + 2 + 3 = 6. Diğer örneklerse 28, 496, 8128 şeklinde gidiyor.<br />

Şimdiye kadar hiç tek mükemmel bir sayıya rastlanmamış. Merak edilen böyle bir sayının<br />

var olup olmadığı. Eğer vardır diyorsanız bu sayıyı, saklandığı yerden bulup çıkarmalı, ya da<br />

olmadığını iddia ediyorsanız bunu ispatlamalısınız.<br />

• Tabii ki sizden böyle bir ispat beklemiyorum. Sizden istediğim (i,j) bileşenleri<br />

mükemmel sayılardan oluşan verilen 2x2 lik mükemmel bir matris oluşturacak şekilde<br />

algoritma yazmanız…. Yani bu durumda matrisinizin elemanları 6,28,496,8128 olacaktır.<br />

Soru<br />

Palindromik Sayılar<br />

46


47<br />

Algoritma ve Dump Coding 2009 2010<br />

Kapak, kütük, sus, yay, kepek kelimeleri ilginç bir ortak özellik ile dikkat çekiyor: düzden<br />

ve tersten okunduğunda aynı. Benzer bir yapıya sahip olan Palindromik sayılar da düzden<br />

ve tersten okunduğunda aynı olan sayılardır: 1991, 10001, 12621, 79388397, 82954345928.<br />

Bu alandaki açık soru ise şöyle:<br />

Hem asal hem de Palindromik olan sonsuz tane asal sayı bulunabilir mi? Yine ben bu soruyu<br />

sormayacağım. Sanırım asallarla çok işimiz var.<br />

Soru şu:<br />

• Bileşenleri Palindromik sayı olan NxN matris oluşturacak şekilde programın<br />

algoritmasını yazınız.<br />

Kaynak: http://www.math.metu.edu.tr/~aldoks/oyak/2003_1.pdf<br />

Soru<br />

Elemanları, 6 ile bölündüğünde 5 kalanını; 7 ile bölündüğünde 6 kalanını veren keyfi NxN<br />

matrisi yazdıran programın algoritmasını yazınız.<br />

Soru<br />

Kendisi dışındaki tüm bölenlerinin toplamı kendisinden büyük olan her pozitif tam sayıya<br />

verimli sayı diyelim. Örneğin, 27 sayısının, kendisi dışındaki bölenlerinin toplamı 1+3+9 = 13<br />

< 27 olduğundan, 27 sayısı bir verimli sayı değildir. Öte yandan, kendisi dışındaki tüm<br />

bölenlerinin toplamı 1+2+3+5+6+10+15 = 42 > 30 olduğundan, 30 sayısı bir verimli sayıdır.<br />

Buna göre elemanları verimli sayılardan oluşan keyfi NxN lik matrisi veren programın<br />

algoritmasını yazınız.<br />

Kaynak: http://www.math.metu.edu.tr/~aldoks/oyak/2004_1.pdf<br />

Herkese çok kolay gelsin.<br />

Arzu Erdem


Microsoft Visual Studio Ara yüzü 2009 2010<br />

Bölüm 6. Visual Basic.NET ile<br />

Windows Tabanlı Programlama<br />

Windows tabanlı uygulamalar, Windows işletim sistemi üzerinde çalışan uygulamalardır.<br />

Windows uygulamaları Windows formları ve kontrollerinden oluşur. Visual Studio bu<br />

formların ve üzerindeki kontrollerin tasarımını ve kodların yazılmasını büyük ölçüde<br />

kolaylaştırarak, uygulama geliştirme sürecini daha hızlı ve kolay hale getirir.<br />

Bu bölümü tamamladıktan sonra;<br />

tabanlı programlamada kullanılan kontrolleri tanıyacak,<br />

kavramlarını öğrenecek,<br />

tanımlamayı öğrenecek,<br />

48


49<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

Konu 1. İlk Uygulama (Hello World, The Time Is...)<br />

Visual Basic .NET ile yazacağımız Windows uygulaması ekrana, “Hello World” yazısını ve o<br />

anki zamanı gösteren bir bilgi mesajını çıkartır.<br />

1 Visual Studio çalışma ortamını açın.<br />

2 File menüsünden, New alt menüsünü ve Project komutunu seçin. “New Project”<br />

iletişim kutusu, yazılacağı dile, çalışacağı ortama göre değişen proje tiplerini listeler.<br />

3 Proje tiplerinden Visual Basic Project ve Windows Application tipinin seçili olduğunu<br />

kontrol edin.<br />

4 Name özelliğine Hello World yazın ve OK düğmesini tıklayın. Açılan Windows<br />

projesinde başlangıç olarak bir adet Windows Form, tasarım görünümünde açılır.<br />

5 Toolbox panelinden Button kontrolünü formun üzerine sürükleyip bırakın. Properties<br />

panelini açarak Button kontrolünün Text özelliğine “Hello World” yazın.<br />

6 Eklenen Button kontrolünü çift tıklayarak kod sayfasına geçin. Button kontrolü<br />

tıklandığında çalıştırılacak kodu yazın:<br />

MsgBox("Hello World The time is " & Now)<br />

NOT Yazdığınız kodun ne anlama geldiğini belirtmek için yorum satırları kullanmak, kodları<br />

okumayı kolaylaştırır. Yorum satırları tek tırnak 'ile başlayarak yazılmalıdır.<br />

7. MsgBox metodunun yazıldığı kodun üstüne, yapılmak isteneni belirten bir yorum<br />

satırı yazın.<br />

' MsgBox metodu ile kullanıcıya Merhaba diyoruz. ' Now özelliği ile o andaki saat ve gün '<br />

değerlerini de kullanıcıya gösteriyoruz.<br />

8. F5 tuşuna basarak projeyi çalıştırın.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

İPUCU Çalışma sayfaların isimlerinin yanında yıldız işaretinin gözükmesi, o sayfada<br />

değişiklik yapıldığını, ancak henüz kaydedilmediğini belirtir. Proje dosyalarınızı CTRL+S<br />

tuşlarına basarak sıkça kaydedin.<br />

Konu 2. Özellikler, Metotlar ve Olaylar<br />

.NET kontrolleri üç temel kavramdan oluşur.<br />

I. Özellikler<br />

Özellikler, kontrollerin görünümü, yerleşimi veya davranışlarına özgü niteliklerdir. Örneğin,<br />

bir Button kontrolünün Text özelliği, üzerinde yazan yazıya erişmemizi sağlar.<br />

Kontrollerin özellikleri, tasarım anında Properties panelinden ulaşılabileceği<br />

gibi, kod tarafında da okunup değiştirilebilir. Kontrollerin birçok özelliği hem okunabilir,<br />

hem de değiştirilebilir. Ancak bazı özellikler salt okunur (ReadOnly) ve salt yazılır<br />

(WriteOnly) olabilir. Bu tip özellikler Properties panelinde gözükmezler.<br />

Kontrollerin birçok ortak özellikleri vardır.<br />

Text (Yazı). Kontrollerin Text özelliği, üzerinde görüntülenen yazıdır. Bu özellik, çalışma<br />

anında sıkça okunup değiştirilerek kullanıcıyla iletişim sağlanır.<br />

TextBox kontrolüne girilen bir değerin okunup Label kontrolüne yazılması için, kontrollerin<br />

Text özellikleri kullanılır.<br />

Private Sub Button1_Click(ByVal sender As System.Object,<br />

ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = TextBox1.Text<br />

End Sub<br />

50


51<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

Name (İsim). Name özelliği kontrollere ulaşmak için kullanılan özelliktir. Birçok kontrolün<br />

Text özelliği aynı olabilir. Ancak her biri ayrı birer nesne olduğu için, Name özelliklerinin<br />

benzersiz olması gerekir.<br />

TextBox2.Text = TextBox1.Text<br />

İki TextBox kontrolünün yazıları aynı, fakat isimleri farklıdır.<br />

Size (Büyüklük). Kontrollerin büyüklük özelliğidir. Height (yükseklik) ve Width (genişlik)<br />

özelliklerinden oluşur. Genellikle tasarım anında belirlenen bu özellik, çalışma anında da<br />

değiştirilebilir.<br />

Label1.Height = 10 Label1.Width = 20<br />

BackColor (Arka plan rengi). Kontrollerin arka plan renginin ayarlandığı özelliktir. Bu<br />

özelliğin değeri, Color (renk) nesnesinde tanımlı değerlerle belirlenir.<br />

ForeColor (Önalan rengi). Kontrollerin üzerindeki yazıların rengini belirler.<br />

Private Sub Button1_Click(ByVal sender As System.Object,<br />

ByVal e As System.EventArgs) Handles Button1.Click Button1.BackColor = Color.Black<br />

Button1.ForeColor = Color.White<br />

End Sub<br />

Visible (Görünür). Kontrollerin ekranda görünüp görünmediklerini belirleyen özelliktir.<br />

True ve False olmak üzere iki değer alabilir. Boolean veri tiplerinden bu modülde<br />

bahsedilecektir.<br />

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)<br />

Handles Button1.Click<br />

'Label kontrolünü gizle<br />

Label1.Visible = False<br />

'Label kontrolünü göster


Label1.Visible = True<br />

End Sub<br />

End Class<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Metotlar<br />

Metotlar kontrollerin yaptığı işlemlerdir. Metotlar parametreyle veya parametresiz<br />

çağrılabilir. Parametreyle çağırmak, metodun girilen değere göre işlem yapacağını belirtir.<br />

Örneğin<br />

Focus (Odaklan) metodu, parametre beklemeden çalışır ve kontrolün seçilmesini sağlar.<br />

Private Sub Button1_Click(ByVal sender As System.Object,<br />

ByVal e As System.EventArgs) Handles Button1.Click ' İşlem yapıldıktan sonra ' TextBox<br />

kontrolüne odaklan TextBox1.Focus()<br />

End Sub<br />

Kontrollerin bazı ortak metotları vardır.<br />

Select (Seç). Select metodu Focus ile aynıdır, ama TextBox kontrolünün Select metodunun<br />

diğerlerinden bir farkı vardır. TextBox içindeki yazının belli bir kısmını ya da tamamını,<br />

verilen parametrelere göre seçer (Resim 4.3).<br />

Private Sub Button1_Click(ByVal sender As System.Object,<br />

ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "Yazılım Uzmanı"<br />

TextBox1.Focus()<br />

' Sekizinci karakterden sonra, beş karakter seç TextBox1.Select(8, 5)<br />

End Sub<br />

RESİM 4.3<br />

BringToFront (Öne Getir). Kontrolü, üst üste duran kontroller arasından en öne getirir.<br />

SendToBack (Arkaya Gönder). Kontrolü, üst üste duran kontrollerin en arkasına gönderir.<br />

Hide(Sakla). Kontrolün gözükmesini engeller.<br />

Show(Göster). Kontrolün gözükmesini sağlar.<br />

52


53<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

Olaylar<br />

Olaylar kontrollerin başına gelen işlemlerdir. Olayların metotlardan farkı, bu işlemlerin<br />

kontrollerin elinde olmadan gerçekleşmesidir. Örneğin bir Button kontrolünün tıklanması, o<br />

kontrolün isteği dışında yapılmıştır. Bu olayın tetiklenmesinde kontrolün bir rolü yoktur. Bu<br />

olaylar gerçekleştiği zaman yapılması gereken işlemler, ilgili olayın yordamına yazılır.<br />

Button1 isimli kontrol tıklandığı zaman gerçekleştirmek istenen eylemler Button1_Click<br />

yordamına yazılır.<br />

Visual Studio ortamı, kontrollerin olaylarını kolay bir şekilde seçmeyi sağlar. Kod<br />

sayfalarında kontrollerin bulunduğu listeden, istenen kontrol seçilir. Kontrolün olaylarının<br />

listelendiği diğer listeden de istenen olay seçilir (Resim 4.4).<br />

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles<br />

MyBase.Click MsgBox("Form üzerine tıklandı") End Sub<br />

Visual Studio, olayların yordam isimlerini Kontrol İsmi_Olay İsmi biçiminde<br />

yazar.Kontrollerle çalışırken benzer olaylar kullanılır.<br />

Click (Tıklandığında). Kontrol tıklandığı zaman tetiklenen olaydır. Windows tabanlı<br />

programlamada en sık kullanılan olaylardan biridir.<br />

MouseDown (Fare düğmesi basıldığında). Fare, kontrolün üzerindeyken herhangi bir<br />

düğmesine basıldığı zaman gerçekleşen olaydır. Bu olay, Click olayından önce çalışır.<br />

MouseUp (Fare düğmesi bırakıldığında). Fare, kontrolün üzerindeyken basılan düğme<br />

bırakıldığı zaman çalışır.<br />

Enter (Girildiğinde). Kontrol seçildiği veya üzerine odaklanıldığı zaman gerçekleşen<br />

olaydır.<br />

Leave (Çıkıldığında). Başka bir kontrol seçilmek üzere çıkıldığında, bu kontrolün Leave<br />

olayı tetiklenir.<br />

VisibleChanged(Görünürlüğü değiştiğinde). Kontrolün görünüp görünmediğini belirten<br />

Visibleözelliği değiştiği zaman tetiklenir.<br />

İPUCU Olayların çalışma sıralarını test etmek için tüm olay yordamlarına, mesaj kutusu<br />

çıkaran (MsgBox) kod yazın. Daha sonra projeyi çalıştırıp kontroller üzerinde yapılan<br />

değişikliklere göre olayların çalışma sıralarına bakın.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

Konu 3. Visual Basic.NET‟e Kontrollerin Eklenmesi<br />

Windows tabanlı uygulamalar geliştirirken sıkça kullanacağımız bir grup kontrol vardır.<br />

Form kontrolü hariç diğer bütün kontroller Toolbox panelinden seçilir. Bu kontroller<br />

sürüklenip form üzerinde istenen pozisyona bırakılır (Resim 4.5).<br />

Şekil 4.5<br />

Kontroller, Toolbox panelinde çift tıklanarak da eklenebilir.Kontrollerin tasarım anında<br />

büyüklükleri ve yerleri Size ve Location özellikleri ile değiştirilebileceği gibi, fare ile de<br />

istenen şekilde ayarlanabilir (Resim 4.6).<br />

Şekil 4.6<br />

54


55<br />

Microsoft Visual Studio Ara yüzü<br />

I. Form<br />

2009 2010<br />

Windows uygulamaları, Windows kontrollerinin tutulduğu pencereler olan formlardan<br />

oluşur. Bir Windows projesi açıldığı zaman Form kontrolü otomatik olarak eklenir. İkinci bir<br />

form eklemek için Project menüsünden Add Windows Form komutunu seçilir. Proje çalıştığı<br />

zaman başlangıç formu görüntülenir. Başlangıç formu projenin özelliklerinden değiştirilir<br />

(Resim 4.7 ve Resim 4.8)<br />

Şekil 4.7<br />

Şekil 4.8<br />

Visual Studio ortamında formlar, tasarım sayfası ve kod sayfası olmak üzere iki farklı<br />

sayfada görüntülenir. Tasarım sayfası, formun ve üzerindeki kontrollerin görünümlerini


Microsoft Visual Studio Ara yüzü 2009 2010<br />

kolay bir şekilde değiştirmeyi sağlar. Visual Studio bu sayfada yapılan değişiklikleri kod<br />

sayfasında eşzamanlı olarak günceller. Örneğin, bir Button kontrolünün genişliğini fare ile<br />

değiştirdiğimiz zaman, kod sayfasında bu kontrolün Width özelliği yapılan değişikliğe göre<br />

güncellenir. Aynı değişiklikler Properties panelinde de görülebilir.<br />

Formların, diğer kontrollerin özelliklerinden farklı bazı özellikleri vardır.<br />

ControlBox (Denetim kutusu). Form üzerindeki simge durumuna küçültme, ekranı kaplama<br />

ve formu kapatma (Minimize / Maximize / Close) kutularının görünümünü ve<br />

erişilebilirliğini kontrol eder.<br />

NOT Formun ControlBox özelliği False iken uygulama, Debug menüsünden Stop Debugging<br />

komutu seçilerek kapatılabilir.<br />

StartPosition (Başlangıç pozisyonu). Form açıldığı zaman nerede gözükeceğini belirler.<br />

CenterScreen seçeneği formu ekranın ortasında gösterir.<br />

Private Sub Form1_Load(ByVal sender As System.Object, ByVal<br />

e As System.EventArgs) Handles MyBase.Load<br />

Label1.Text = "Proje başlatıldı. Kayıt zamanı: " &<br />

Now<br />

End Sub<br />

Form Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

AcceptButton Button Form üzerinde Enter tuşuna basıldığı zaman “tıklanacak”<br />

Button kontrolü<br />

AllowDrop Bu özelliğin “True” olması ile resim dosyalarını formunuzun<br />

üstüne sürükleyip bıraktığınızda şekil formunuzun üstünde<br />

kalabilecektir. (Sadece True olması yeterli değildir.<br />

Formunuzun DragDrop olayı ile kod ekranında istediğiniz<br />

formatı vermeniz gerekmektedir.)<br />

AutoScroll Panel içinde kaydırma çubuklarının eklenmesini istiyorsanız<br />

bu özelliği “True” yapmalısınız.<br />

AutoSize “True” ise nesnenin boyutlarını değiştiremeyebilirsiniz. Bu<br />

durumda nesnenin boyutlarını değiştirmek istiyorsanız<br />

“False” yapmalısınız.<br />

AutoValidate (i) Disable: Onaylama işlemleri bu özellik ile kapanır.<br />

(ii) EnableAllowFocusChange: Onaylama işlemleri<br />

ulaşılabilirdir. Fakat onaylama işlemi başarısız olursa işlem<br />

56


57<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

yeni bir kontrole geçer. Validated olayı çalışmaz.<br />

(iii) EnablePreventFocusChange: Onaylama işlemi<br />

kontrol başarısız olsa bile gerçekleşir.<br />

(iv) Inherit: Otomatik kontrol davranışını içerdiği bir<br />

formdan veya başka bir kontrolden alır. Eğer içerdiği bir<br />

kontrol davranışı yok ise otomatik olarak<br />

EnablePreventFocusChange olarak atar.<br />

BackColour Nesnenizin arka plan rengini değiştirir.<br />

BackgroundImage Nesnenizin arka planına resim koymak istiyorsanız bu<br />

özellikten yararlanacaksınız.<br />

BackgroundImageLayout Resminizin ortalı, dayalı,… vb. gibi olmasını istiyorsanız bu<br />

özelliği kullanacaksınız.<br />

CancelButton AcceptButton‟un aksine formunuzda ESC düğmesini aktif<br />

hale getirme işlemini yapar.<br />

CauseValidation Validating veya validated olaylarının meydana gelmesi için<br />

bu özelliğin “True” olması gerekir.<br />

ContextMenuStrip ContextMenu kontrolü sağ fare tuşu ile açılan menüler<br />

oluşturmak için kullanılır.<br />

ControlBox Max. Min. Ve kapatma ile ilgili kontrolleri kullanmak<br />

istemiyorsanız bu özelliği “False” yapmalısınız.<br />

Cursor Fare kontrol üzerine geldiğinde fare göstergesinin alacağı<br />

şekil bu özellik ile belirlenir<br />

DoubleBuffered Kontrolünüzün yüzeyinin çizilebilir olmasını istiyorsanız<br />

“True” özelliğinde olmalı.<br />

Enabled Kontrolünüzü erişilebilir olması için “True” özelliğinde<br />

olmalıdır.<br />

Font Kontrolünüzdeki yazı tipini belirlemek istiyorsanız buradan<br />

değişiklik yapabilirsiniz.<br />

ForeColour Kontrolünüzdeki yazı renklerini buradan değiştirebilirsiniz.<br />

FormBorderStyle Bu özellik ile formun çerçeve şeklini belirleyebilirsiniz.<br />

(i) Sizable: Otomatik olarak atana değerdir. Formun<br />

kapatılması, boyutlandırılması ve taşınması mümkündür.<br />

(ii) FixedSingle: Boyutları değiştirilemeyen ancak<br />

taşınabilir bir form oluşturur. Ekran boyutu yalnızca ekranı


Microsoft Visual Studio Ara yüzü 2009 2010<br />

kapla ve simge durumuna küçült seçenekleri ile değişir.<br />

(iii) Fixed3D: Aynı FixedSingle da olduğu gibi boyutları<br />

değiştirilemeyen bir form oluşturur. Tek farkı 3 boyutlu bir<br />

görünüme sahip olmasıdır.<br />

(iv) FixedDialog: Boyutları değiştirilemeyen ve sistem<br />

menüsü (ControlBox) olmayan bir form oluşturur. Genelde<br />

diyalog pencereleri oluşturmak için kullanılır.<br />

(v) FixedToolWindow: Normal forma göre başlığı daha<br />

küçük olan, kontrol menüsü olmayan ve boyutlandırmayan<br />

bir form oluşturur. Ekranı kapla ve simge durumuna küçült<br />

düğmeleri bulunmaz.<br />

(vi) SizableToolWindow: FixedToolWindow ile hemen<br />

hemen aynı olup tek farkı boyutlandırılabilir olmasıdır.<br />

(vii) None: Çerçevesi, başlığı, kontrol kutusu, ekranı kapla<br />

ve simge durumuna küçült düğmeleri olmayan bir form<br />

oluşturur.<br />

HeplButton Bu özelliği “True” yaparak formlarınıza düğmesini<br />

ekleyebilirsiniz. Formun üzerinde bu düğmenin<br />

bulunabilmesi için:<br />

(i) ControlBox özelliği True olmalıdır.<br />

(ii) FormBorderStyle özelliği, FixedSingle, Fixed3D,<br />

Sizable veya FixedDialog olmalıdır.<br />

(iii) MaximizeBox ve MinimizeBox özellikleri False olmalı.<br />

(iv) Formunuzun üstüne bir TextBox yerleştirin.<br />

(v) Textbox‟un HelpRequested olayına<br />

Help.ShowPopup(TextBox1, _<br />

"Buraya ne görüntülenmesini istiyorsanız<br />

yazın...", _<br />

hlpevent.MousePos)<br />

ifadesini yazın ve formunuzu çalıştırın.<br />

Icon Formunuzun ikonunu değiştirmek için gerekli olan bir<br />

özelliktir. İkon dosyalarının uzantısı *.ico olduğu için<br />

buradaki dosyanızın *.ico uzantılı olması gerekmektedir.<br />

ImeMode Nesneniz seçili olduğunda nesnenizin the Input Method<br />

58


59<br />

Microsoft Visual Studio Ara yüzü<br />

Editor (IME) durumunu verir.<br />

2009 2010<br />

IsMdiContainer Tek başına çalışan formlara SDI form denir. Normalde yeni<br />

bir projeye başlarken projede bulunan form ve daha sonra<br />

eklenen formlar SDI formlardır. Bir formun IsMdiContainer<br />

özelliğini true yaparsak o form MDI form haline<br />

dönüşecektir. MDI formlar içinde kendisine bağlı formlar<br />

bulundurur Bu formlar (Child form) MDI formuna bağlıdır.<br />

MDI forma bağlıdır. Formunuzu MDIChild yapma işlemini<br />

tasarım ile değil, kod ile yapabilirsiniz.<br />

KeyPreview Bu özelliği True yaparsanız herhangi bir tuşa basıldığında, o<br />

kontrolün Key olayları ile birlikte Formun da Key olayları<br />

meydana gelir.<br />

Örnek: F10‟ basıldığında programdan çıkmak istiyorsunuz.<br />

Bu durumda kodu hangi kontrolün Key olayına yazacaksınız?<br />

Programınızda bir sürü kontrol olabilir. Programınızdaki tüm<br />

kontrollerin KeyDown olayına F10 tuşunu algılayacak kodu<br />

yazmaktansa Formun KeyPreview özelliği True yapılır. Daha<br />

sonra formun kod kısmına<br />

Protected Overrides Sub OnKeyDown(ByVal e As<br />

System.Windows.Forms.KeyEventArgs)<br />

MyBase.OnKeyDown(e)<br />

If Keys.F10 Then end<br />

End Sub<br />

Language Dil özelliklerini belirler.<br />

Konutlarını yazıp programınızı çalıştırdıktan sonra F10<br />

tuşuna bastığında programınızın kısayol olarak sonlandığını<br />

göreceksiniz.<br />

Localizable Dil seçenlerinizin kullanılabilir olması için bu özelliğin True<br />

olması gerekmektedir.<br />

Location Kontrolünüzün x ve y koordinatlarını belirler. Fareyle de<br />

belirleyebileceğiniz gibi hassas ayarlar için elle giriş<br />

yapabilirsiniz.<br />

Locke True olduğunda kontrolün kilitlenmesini sağlar.<br />

MainMenuStript Formunuza yerleştirdiğiniz MenuStript özelliği için<br />

geçerlidir.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

MaximizeBox True olduğunda ekranı kapla düğmesi kullanılabilirdir.<br />

MinimizeBox True olduğunda simge durumuna küçült düğmesi<br />

kullanılabilirdir.<br />

Opacity: Bu özelliğin değeri normalde 100% dır. Bu değeri azalttıkça<br />

formunuzun saydamlaşmasını ve alttaki belgeyi göstermesini<br />

sağlarsınız.<br />

Padding Kontrolün kenarlara olan uzaklığını verir.<br />

RightToLeft Kontrolün text yazısını sağdan sola doğru yazılması için Yes<br />

olarak seçilmelidir<br />

ShowIcon İkonun görünebilir olması için bu özelliğin True olması<br />

gerekir.<br />

Size Kontrolün boyutlarını belirlemek için kullanılır. Fare ile de<br />

belirleyebilirsiniz.<br />

SizeGripStyle<br />

Formunuzun sağ alt köşesinde sembolünü görmek<br />

istiyorsanız bu özelliği Show olarak ayarlayınız.<br />

StartPosition Form açılırken ekrandaki koordinatların belirlenmesi için<br />

kullanılan özellikleri:<br />

(i) CenterScreen: Form ekranın ortasında açılır.<br />

(ii) CenterParent: Form içinde bulunduğu formun<br />

ortasında açılır. (MDI Child formlar gibi)<br />

(iii) Manual: Form tasarlanırken bulunduğu koordinatlarda<br />

açılır.<br />

(iv) WindowsDefaultBounds: Formun koordinatları ve<br />

boyutları Windows tarafından belirlenir.<br />

(v) WindowsDefaultLocation: Formun koordinatları<br />

Windows tarafından belirlenir<br />

Tag Bu özelliğin Visual Basic için hiçbir anlamı yoktur. Kullanıcı<br />

bu özelliği bir değişken gibi kullanarak istediği bilgiyi<br />

saklayabilir.<br />

Text Kontrolün başlığıdır.<br />

TopMost Formun devamlı üstte durmasını istiyorsanız bu özelliğin<br />

True olması gerekir. Örneğin Word‟de kelime arama<br />

formunu düşünün.<br />

TransparencyKey Formunuzu görüntü olarak özelleştirmek istiyorsanız bu<br />

60


61<br />

Microsoft Visual Studio Ara yüzü<br />

özelliği kullanın.<br />

Örnek:<br />

2009 2010<br />

Şeklinde Paint de bir dosya oluşturun ve kaydedin.<br />

Formunuzun BackgroundImage‟ne bu resmi yerleştirin.<br />

TransparencyKey özelliğindeki arka plan rengini resminizin<br />

arka plan rengi olarak seçin. (Benim örneğimde mavi olacak)<br />

Formunuzu çalıştırdığınızda formunuzun saydam bir özellikte<br />

olduğunu göreceksiniz.<br />

UseWaitCursor Fare göstergesinin, formun üstüne geldiğinde program<br />

çalışıyormuş formatında görünmesini istiyorsanız bu özelliği<br />

True yapmalısınız.<br />

WindowsState Form açıldığında hangi formatta olduğunu buradan<br />

belirleyeceksiniz.<br />

Form Olayları<br />

Olay Açıklama<br />

(i) Normal: Normal olarak açılacaktır<br />

(ii) Minimized: Simge durumunda açılacaktır.<br />

(iii) Maximized: Tam ekran durumunda açılacaktır.<br />

Click Form üzerine tıklandığı zaman gerçekleşir<br />

Closing Form kapanmadan hemen önce gerçekleşir<br />

Closed Form kapandıktan sonra gerçekleşir<br />

Load Form yüklenirken gerçekleşir


Microsoft Visual Studio Ara yüzü 2009 2010<br />

KeyDown Form üzerindeyken bir tuşun basılması ile gerçekleşir<br />

KeyUp Basılan tuşun kaldırılması ile gerçekleşir<br />

Form Metotları<br />

Metot Açıklama<br />

Hide Visible özelliğini False yaparak formu gizler<br />

Close Formu kapatır. Eğer form başlangıç formuysa uygulama<br />

sonlanır<br />

Show Formu gösterir. Hide ile gizlenmişse, Visible özelliği True<br />

yapılır.<br />

ShowDialog Formu iletişim kutusu olarak gösterir.<br />

Button<br />

Bir Windows düğmesini temsil eder. Button kontrolü tıklandığında Click olayı tetiklenir. Bu<br />

olay gerçekleştiği zaman yapılacak işlemler, Button İsmi_Click yordamında yazılır.<br />

Private Sub btnRenkDegistir_Click(ByVal sender As System.Object, ByVal e As<br />

System.EventArgs) Handles btnRenkDegistir.Click<br />

btnRenkDegistir.ForeColor = Color.Gray<br />

End Sub<br />

62


63<br />

Microsoft Visual Studio Ara yüzü<br />

Button Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

2009 2010<br />

Anchor Anchor kelime anlamı olarak demir atmak demektir. Bu<br />

özellik ile formunuzun boyutları değişse de kontrolünüz<br />

belirlediğiniz konumda sabit kalacaktır.<br />

AutoEllipsis Bu özelliği True yaparak okunmayan yazıları ipucu gibi<br />

görüntüleyebilirsiniz. Bunun için AutoSize seçeneğinin<br />

False olması gerekmektedir.<br />

Dock Bu özellik ile herhangi bir kontrolün, formun belirlemiş<br />

olduğunuz bir kenarına alınmasını sağlarsınız.<br />

ImageList Butonun arka planında resmi kapsanmış bir şekilde değil de<br />

bir ikon gibi görünmesini istiyorsanız bu özelliği<br />

kullanacaksınız.<br />

Örnek:<br />

Toolbox penceresinde Components sekmesinden formunuza<br />

bir ImageList kontrolü yerleştirin. ImageList formda<br />

görünmeyen kontrollerdendir.<br />

ImageList‟in Properties penceresinde Images seçeneğinden<br />

resimler belirleyin.<br />

Seçmiş olduğunuz butonun ImageList özelliğinde formunuza<br />

koymuş olduğunuz ImageList‟inizi seçin. ImageIndex<br />

özelliğinden istediğiniz resmi seçip, ImageAlign özelliği ile<br />

resminizin butonun neresinde olmasını ayarlayın.<br />

TabIndex Klavyedeki Tab kontrolünü bu özellik ile belirleyebilirsiniz.<br />

Bu özellikte vermiş olduğunuz numaralandırma sizin tab<br />

kontrolünüzün sırasını belirler.<br />

TabStop True olduğunda nesneye Tab ile ulaşabilirsiniz.<br />

TextAlign Kontrolünüzün üstünde bulunan yazının hizalamasını<br />

buradan belirleyebilirsiniz.<br />

TextImageRelation Butonunuzda yazı ile birlikte şekilde varsa bunların<br />

ilişkisini bu özellik ile ayarlayabilirsiniz.<br />

UseCompatibleTextRendering Uyumlu olabilen yazıları bir araya toplar.<br />

UseMnemonic Bu özelliği True yaparak yazı da (kısayol tuşu olarak<br />

kullanılabilen) & sembolünü kullanmanızı sağlayabilirsiniz.<br />

Visible Kontrolünüzün görünmesini istiyorsanız True olarak seçin


TextBox<br />

TextBox Özellikleri<br />

Özellik Açıklama<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

aksi durumda False olarak seçin.<br />

MultiLine Metin kutusuna birden fazla satırda değer girilebilmesini sağlar.<br />

False durumunda ise, metin kutusunun yüksekliği değiştirilemez<br />

ScrollBars Metin kutusunda kaydırma çubuklarının görünmesini kontrol<br />

eder. Varsayılan durumda kaydırma çubuğu görüntülenmez,<br />

ancak Horizontal, Vertical kaydırma çubukları ya da ikisi birden<br />

gösterilebilir.<br />

PasswordChar Metin kutusuna parola girilecekse, girilen karakterlerin hangi<br />

karakter olarak görüneceğini belirler.<br />

WordWrap Metin kutusuna girilen değerlerin, satır sonlandığında bir alt<br />

satıra geçmesini belirtir. Eğer MultiLine özelliği False ise, alt<br />

satırlar tanımlı olmayacağı için bu özelliğin bir etkisi görülmez.<br />

MaxLength Metin kutusunun alabileceği maksimum karakter sayısını<br />

belirtir.<br />

TextBox Olayları<br />

TextChanged Metin kutusundaki yazı değiştiği zaman gerçekleşir.<br />

64


65<br />

Microsoft Visual Studio Ara yüzü<br />

TextBox Metotları<br />

Metot Açıklama<br />

Cut Seçilen karakterleri siler, ancak hafızada tutar.<br />

Copy Seçilen karakterleri kopyalar.<br />

2009 2010<br />

Paste Hafızaya alınan karakterleri metin kutusuna yapıştırır.<br />

Clear Metin kutundaki yazıları temizler.<br />

SelectAll Metin kutusundaki tüm yazıyı seçer.<br />

SelectedText Seçilmiş kısmı silmek veya değiştirmke için kullanılır.<br />

Select Select(Baslangic,Uzunluk), Text kutusu içindeki bölgeyi<br />

seçmek için kullanılır.<br />

Undo Kullanıcı Ctrl+Z tuşlarına basarak en son yaptığı işlemi geri<br />

alabilir.<br />

CanUndo Bu özelliği kullanarak geri alınacak bir işlemin olup olmadığını<br />

anlayabilirsiniz.<br />

Label<br />

Label kontrolü form üzerinde kullanıcıya bilgi vermek amacıyla kullanılan etikettir.<br />

Label Özellikleri<br />

Özellik Açıklama<br />

TextAlign Yazının etiket üzerindeki pozisyonu belirler.<br />

BorderStyle Kontrolün kenar stilidir.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

FixedSingle değeri, kontrolün kenar çizgilerini gösterir.<br />

Fixed3Ddeğeri, kenarların üç boyutlu olmasını sağlar.<br />

ImageAlign Etiket üzerindeki resmin nerede duracağını belirler.<br />

RightToLeft Etiket üzerindeki yazının yönünü belirler. Eğer Yes değerini<br />

alırsa, yazılar sağdan sola gösterilir<br />

Label1.BorderStyle = BorderStyle.Fixed3D<br />

Visual Studio klasörü altındaki simgeler kullanılabilir<br />

Label1.Image = Image.FromFile("C:\Program Files\Microsoft Visual Studio .NET<br />

2003\Common7\Graphics\icons\Flags\FLGTURK.ICO")<br />

Label1.ImageAlign = ContentAlignment.MiddleRight Label1.RightToLeft =<br />

RightToLeft.Yes Label1.Text = "Türkçe"<br />

NOT Resmin bulunduğu yer kontrolün sağ tarafında bulunacak şekilde ayarlanmasına<br />

rağmen, sol tarafta gözükür. Bu durum, RightToLeft özelliğinin Yes olarak atanmasından<br />

kaynaklanır.<br />

CheckBox<br />

CheckBox Özellikleri<br />

Özellik Açıklama<br />

Appearence Görüntüsünü bu özellik ile değiştirebilirsiniz.<br />

AutoCheck Normalde True değerindedir ve kullanıcı Check kutusunu<br />

tıklayarak işaretleyebilir. False yapılırsa bu özelliğini<br />

66


67<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

kaldırmış olursunuz ve sadece kod ile erişebilirsiniz.<br />

CheckAlign Check kutusunun hangi tarafta olduğunu belirlemeniz için<br />

bu özelliği kullanacaksınız.<br />

Checked Check kutusunun işaretli olmasını istiyorsanız True olarak<br />

belirlemelisiniz. Normalde False olarak atanır.<br />

CheckState Check kutusunun işraret durumunu belirler. Checke<br />

özelliğini True olarak belirlerseniz, CheckState özelliğiniz<br />

Checked olarak belirlenecektir.<br />

TextAlign Kontrolünüzün üstünde olan yazının hizalamasını bu özellik<br />

ile verebilirsiniz.<br />

RadioButton<br />

RadioButton kontrolleri, kullanıcıya sunulan seçeneklerden sadece bir tanesinin seçilmesine<br />

izin verir. Form üzerinde birden fazla RadioButton konulduğunda, bu kontrollerin sadece<br />

bir tanesi seçili olabilir. Fakat bazı durumlarda, farklı seçenek grupları kullanılarak<br />

kullanıcının birden fazla seçim yapması istenebilir. Bu durumda, bazı seçenekler GroupBox<br />

kontrolü ile gruplanmalıdır.<br />

Bu kontrolün özellikleri ve olayları CheckBox kontrolü ile aynıdır. Sadece bir seçenek<br />

işaretlenebildiği için, kontrollerin yapılması CheckBox kontrolüne göre daha kolaydır.


ListBox<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Kullanıcıya sunulan seçeneklerin bir liste halinde görünmesini sağlar. Liste kutusundan<br />

istenen sayıda öğe seçilebilir.<br />

ListBox Özellikleri<br />

Özellik Açıklama<br />

Items Liste kutusuna eklenen öğelerin tutulduğu koleksiyon<br />

nesnesidir.<br />

SelectedItem Liste kutusundan seçilen öğeyi alır.<br />

SelectedItems Liste kutusundan seçilen öğeleri alır. Seçilen öğeler dinamik<br />

bir dizide tutulur.<br />

SelectedIndex Liste kutusundan seçilen öğenin indisini alır.<br />

SelectedIndices Liste kutusundan seçilen öğelerin indislerini bir koleksiyon<br />

nesnesinde tutar.<br />

DataSource Listenin öğelerinin tutulduğu veri kaynağıdır. Veri kaynağı<br />

boş geçilirse Itemskoleksiyonuna eklenen öğeler<br />

görüntülenir.<br />

DisplayMember Veri kaynağından gelen öğelerin, kullanıcıya gösterilecek<br />

özelliğidir.<br />

ValueMember Veri kaynağından gelen öğelerin, dönüş değerini belirleyen<br />

özelliğidir.<br />

SelectedValue Seçilen öğenin, liste kutusunun ValueMember ile belirtilen<br />

özelliğidir.<br />

68


69<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

SelectionMode Liste kutusundan kaç tane öğe seçilebileceğini belirtir.<br />

Nonedeğeri 0,<br />

Onedeğeri 1,<br />

MultiSimple ve MultiExtended değerleri birden fazla öğenin<br />

seçilebileceğini belirtir.<br />

MultiColumn Liste kutusundaki öğelerin biden fazla kolonda<br />

görüntülenmesini belirler.<br />

ListBox Olayları<br />

Olay Açıklama<br />

SelectedIndexChanged Liste kutusunda bir öğe seçildiği zaman gerçekleşir.<br />

ListBox Metotları<br />

Metot Açıklama<br />

Items.Add(ByVal Eleman As<br />

Object)<br />

Listeye eleman eklemek için bu metot kullanılır.Verilen<br />

elemanları listenin sonuna ekler.<br />

Items.AddRange Bir grup elemanı tek seferde listeye eklemek için bu metot<br />

kullanılır.<br />

Items.Insert(No,Eleman) Elemanı verilen yere eklemek için kullanılır.<br />

Items.RemoveAt(No) Numarası verilen elemanı listeden siler.<br />

Items.Remove(Eleman) Verilen elemanı listeden siler.<br />

Items.Clear Listedeki bütün elemanları siler.<br />

Items.Count Listedeki eleman sayısını verir.<br />

Items(No) Listede numarası verilen elemanın içeriğini öğrenmek veya<br />

değiştirmek için bu metot kullanılır.<br />

Items.IndexOf(Eleman) Listede bir elemanı aramak için bu metot kullanılır.<br />

Items.Contains(Eleman) Bir elemanın listede olup olmadığını incelemek için bu<br />

metot kullanılır.<br />

Items.CopyTo(Dizi,No) Listedeki elemanları bir diziye aktarmak için bu metot<br />

kullanılır.<br />

SelectedIndex Listedeki seçili elmanın sıra numarasını öğrenmek için bu


Microsoft Visual Studio Ara yüzü 2009 2010<br />

özellik kullanılır.<br />

ClearSelected Listedeki seçili elemanı kaldırmak için bu metot kullanılır.<br />

FindStringExact(aranan) Bu metot, verdiğiniz elemanı arar ve bulunduğu konumu<br />

verir.<br />

FindString Parametredeki String ifadesini liste kutusunda arayarak,<br />

bulduğu ilk öğenin indisini döndürür. FindStringExact‟tan<br />

farkı elemanın tümünde değil bir bölümünde arama yapar.<br />

Örneğin “Ali” kelimesini aramak istiyorsanız “Ali”, “Aliş”,<br />

“Alihan” gibi elemanları da bulur.<br />

GetItemText Parametre olarak verilen nesnenin liste kutusunda gösterilen<br />

yazısını döndürür.<br />

GetSelected Parametre olarak verilen indisteki öğenin seçili olup<br />

olmadığını döndürür.<br />

FindString Parametredeki String ifadesini liste kutusunda arayarak,<br />

bulduğu ilk öğenin indisini döndürür<br />

Çok Seçimli Listeler<br />

SelectedItems Seçili elemanların sayısı, içeriği vb. gibi bilgileri verir.<br />

SelectedItems.Count Seçili eleman sayısını verir.<br />

SelectedItems.Item(No) Seçili elemanın içeriğini verir.<br />

ComboBox<br />

Liste kutusu ile aynı özelliklere sahiptir, ancak listelenen öğeler açılan bir kutuda<br />

görüntülenir ve listeden en fazla bir tane öğe seçilebilir. Liste kutusuna göre bir başka<br />

70


71<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

farklılığı ise, isteğe bağlı olarak, kullanıcının açılan kutu üzerinde değer girebilmesidir.<br />

Dolayısıyla bir TextBox kontrolü gibi de davranabilir.<br />

ComboBox Özellikleri<br />

Özellik Açıklama<br />

AutoCompleteCustomSource Otomatik tamamlama ilgili kaynak belirlemek istiyorsanız<br />

buradaki listeye elemanları giriniz.<br />

AutoCompleteMode Otomatik tamamlama şekillerini bu özellik ile<br />

belirleyebilirsiniz.<br />

AutoCompleteSource Otomatik tamamlama ilgili var olan kaynakları seçebilirsiniz.<br />

AutoCompleteCustomSource ile farkı:<br />

AutoCompleteCustomSource da kendi listenizi oluşturma<br />

ayrıcalığı mevcuttur.<br />

DropDownStyle ComboBox ın tipini belirler.<br />

i. DropDown: Aşağı doğru açılan v eiçeriği kullanıcı<br />

tarafından değiştirilebilen ComboBox dır.<br />

ii. DropDownList: Aşağı doğru açılabilen fakat<br />

kullanıcı tarafından değiştirilemeyen ComboBox<br />

lardır.<br />

iii. Simple: Aşağı doğru açılmayan fakat kullanıcı<br />

tarafından değiştirilebilen ComboBox dır.<br />

DropDownWith ComboBox ile açılan kısmın genişliğini ayarlayabilirsiniz.<br />

MaxDropDownItems Listenizin maksimum uzunluğunu belirler.<br />

SelectedIndex Listede seçili olan elemanların numarası bu özellik ile<br />

belirlenir.<br />

ComboBox Olayları<br />

Olay Açıklama<br />

SelectedIndexChanged Liste kutusunda bir öğe seçildiği zaman gerçekleşir.<br />

TextChanged DorpDownStyle özelliği DropDown olan listeler için kullanıcın<br />

listedeki yazıyı değiştirirken gerçekleşen bir olaydır.


MainMenu<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Type Here yazılan yere menu eklemek için kullanırız. Bunun yerine DropDownItems yerine<br />

menuleri ekleyebilirisiniz.<br />

MainMenu Özellikleri<br />

Olay Açıklama<br />

DropDownItems Menu eklenir<br />

ShortCut Kısayol eklemek için kullanılır.<br />

ShowShortCut ShortCut özelliğinin gösterilip gösterilemeyeceğini belirler.<br />

Checked True özelliği ile CheckBox özelliği kazanılır.<br />

OpenFileDialog<br />

OpenFileDialog Özellikleri<br />

Özellik Açıklama<br />

FileName Kullanıcının seçtiği dosyanın adını bu özellikle<br />

öğrenebilirsiniz.<br />

Filter Dosya türünü belirlemek için kullanılır. “Resimler|*.gif”<br />

MultiSelect Birden fazla dosyayı seçmek için kullanılır.<br />

72


73<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

ReadOnlyCheck “Salt okunur aç” seçeneğinin işaretli olup olmadığını<br />

öğrenebilirsiniz.<br />

Title Diyalog penceresi açılırken<br />

InitialDirectory Diyalog penceresi açıldığında hangi klasörü göstereceğini<br />

belirler.<br />

DefaultExt Kullanıcı dosya isminde dosya uzantısını yazmaz ise bu<br />

özellik ile belirtilen dosya uzantısı dosya adına eklenir.<br />

CehckFileExists True değeri atanırsa, dosya aç penceresinde yazılan<br />

dosyanın kayıtlı olup olmadığını kontrol eder.<br />

CheckPathExists True değeri ile, kullanıcının yazdığı dosya yolunun<br />

doğruluğunu kontrol edersiniz.<br />

OpenFileDialog Metotları<br />

Olay Açıklama<br />

ShowDialog Dialog penceresini açmak için kullanılır.<br />

SaceFileDialog<br />

OpenFileDialog ile aynı özelliklere sahip olup, dosyaları kaydetmek için kullanılır.<br />

RichTextBox<br />

Standart TextBox kutusunda formatlı bir giriş için uygun olmadığından bu nesne kullanılır.<br />

RichTextBox Metotları<br />

Özellik Açıklama<br />

SelectionFont Seçili bölgenin fontunu ayarlamak için kullanılır.<br />

SelectionColor Seçili bölgenin yazı rengini ayarlamak için kullanılır.<br />

SelectionAlignment Seçili paragrafın hizalamak için kullanılır.<br />

Cut, Copy, Paste Kesme, kopyalama ve yapıştırma işlemleri için kullanılır.<br />

CanPaste Pano içine yapıştırılabilir bir bilgi olup olmadığını öğrenmek<br />

için kullanılır.<br />

Undo Son yapılan işlemi geri almak için kullanılır.<br />

Redo Son geri alınan işlemi tekrar yapmak için kullanılır.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

CanUndo, CanRedo Geri alınacak veya yinelecek bir işlem olup olmadığını<br />

öğrenmek için kullanılır.<br />

SaveFile(Dosya_Adı) Dosya adı verilerek RTF formatında kayıt yapar.<br />

LoadFile(Dosya_Adı) RTF formatında dosyayı açmak için kullanılır.<br />

NumericUpDown<br />

NumericUpDown Özellikleri<br />

Özellik Açıklama<br />

DecimalPlaces Sayının ondalık kısmını belirlemek istediğimizde bu özelliği<br />

kullanacaksınız.<br />

Hexadecimal Bu özelliğin True olması durumunda sayı Hexadecimal (16<br />

tabanında) gösterilir.<br />

Increment Sayıların artış miktarı için kullanılacak olan bir özelliktir.<br />

InterceptArrowKeys Klavyedeki üst ve alt tuşların kullanılabilir olması için bu<br />

özelliği True olarak belirlemelisiniz.<br />

Maximum: Sayıların üst sınırıdır.<br />

Minimum Sayının alabileceği en küçük değerdir.<br />

ReadOnly Kontrolün içine sayı girişi yapılmamasını istiyorsanız bu<br />

özelliği True olarak değiştirmelisiniz.<br />

ThousandsSeparator Binlik hanelerde “.” Ayıracını koymak istiyorsanız bu özelliği<br />

True olarak belirlemelisiniz.<br />

74


75<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

UpDownAlign Yukarı ve aşağı azaltma düğmelerini bu özelliği kullanarak<br />

sağda veya solda görünmesini sağlayabilirsiniz.<br />

Value NumericUpDown kontrolünün içindeki değerini bu özellik ile<br />

öğrenebiliriz.<br />

NumericUpDown Olayları<br />

Olay Açıklama<br />

ValueChanged NumericUpDown kontrolünün içinde değer yukarı aşağı<br />

seçildiğinde bu olay gerçekleşir.<br />

NumericUpDown Metodları<br />

Olay Açıklama<br />

UpButton(),DownButton() Kontrolün içindeki sayıyı kontrol ile azaltmak isterseniz bu<br />

metodu kullanabilirsiniz.<br />

ProgressBar<br />

ProgressBar Özellikleri<br />

Özellik Açıklama<br />

Mininmum ProgressBarın alacağı minimum değerdir.<br />

Maximum ProgressBar ın alacağı maksimum değerdir.<br />

Value ProgressBar ın alacağı değerdir.<br />

Step Değerin hangi adımlarla artacağını belirler.


NumericUpDown Metotları<br />

Özellik Açıklama<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

PerformStep Step belirttikten sonra bu metot ile değeri belirtilen aralık<br />

kadar değiştirebilirsinz.<br />

TabControl<br />

TabControl Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

HotTrack Boolean Fare ile sekme sayfalarının üzerine gelindiğinde,<br />

isimlerinin görsel olarak değişmesini belirler.<br />

ItemSize Size Sekme sayfalarının büyüklüğünü belirler.<br />

Multiline True Eklenen sekmelerin birden fazla satırda üst üste<br />

gözükmesini belirler.<br />

ShowToolTips Boolean Fare sekme sayfalarının üzerindeyken bilgi mesajının<br />

gösterilmesini belirler.<br />

SelectedTab TabPage Seçilen sekme sayfasını belirler.<br />

SelectedIndex Integer Seçilen sekme sayfasının indisini belirler.<br />

TabCount Integer Sekme sayısını belirler.<br />

TabPages TabPageCollection Kontrolün içinde bulunduğu sekme sayfalarının<br />

koleksiyonudur.<br />

76


77<br />

Microsoft Visual Studio Ara yüzü<br />

Timer<br />

Timer Özellikleri<br />

Özellik Açıklama<br />

Interval Bu nesnenin çalışacağı zaman periyodudur.<br />

2009 2010<br />

Enabled Normalde program çalıştığında False değerindedir. Timer ın<br />

çalışması için True yapılmalıdır.<br />

Timer Olayları<br />

Özellik Açıklama<br />

Tick Timer kontrolünün Interval özelliği ile belirtilen süre<br />

içerisinde periyodik olarak bu olay meydana gelir. Interval


ErrorProvider<br />

ErrorProvider Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

özelliği düşük olan Timer lar için bu olay içerisinde yazılacak<br />

kodun hızlı olması gerekir.<br />

BlinkRate Integer Hata simgesinin kaç milisaniyede bir yanıp söneceğini belirler.<br />

BlinkStyle ErrorBlinkSytle Hata simgesinin yanıp sönme stilini belirler.<br />

i. AlwaysBlink, her zaman,<br />

ii. BlinkIfDifferentError farklı bir hata meydana<br />

geldiğinde yanıp söneceğini belirler.<br />

iii. NeverBlinkise simgenin yanıp sönmeden<br />

görüntüleneceğini belirler.<br />

Icon Icon Hata mesajlarının gösterilmesi sırasında çıkan simgeyi belirler.<br />

ErrorProvider Metotları<br />

SetError Kontrollerin hata mesajlarının belirlenmesi için kullanılır.<br />

ErrorProvider kontrolü forma eklendiği zaman, Properties panelinde, kontrollerin ekstra<br />

özellikleri görünür. Bu özellikler, forma eklenen her ErrorProvider için oluşturulur.<br />

78


79<br />

Microsoft Visual Studio Ara yüzü<br />

Özellik Açıklama<br />

2009 2010<br />

IconAlignment On Hata simgesinin, kontrolün üzerinde nerde bu lunacağını<br />

belirler.<br />

IconPadding On Hata simgesinin, kontrolden kaç piksel uzakta duracağını<br />

belirler.<br />

Error On Varsayılan hata mesajını belirler<br />

ImageList<br />

Birden fazla resmi bir arada tutmak için kullanılır.<br />

ImageList Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

ImageSize Resmin boyutunu ayarlarsınız.<br />

Images(No) Listenin içindeki resmileri almak için kullanılır.<br />

PictureBox<br />

Form üzerinde bir resim görüntülemek için kullanılır.<br />

PictureBox Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

Image Image Kontrolün resim kaynağını belirler.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

SizeMode PictureBoxSizeMode Kontrolün, resmi nasıl görüntüleyeceğini belirler.<br />

DateTimePicker<br />

i. AutoSizedeğeri, kontrolün büyüklüğünü resmin<br />

büyüklüğüne göre ayarlar.<br />

ii. CenterImagedeğeri, resmi kontrolün ortasına<br />

gelecek şekilde ayarlar.<br />

iii. Normaldeğeri, kontrolün sol üst köşesine göre<br />

konumlandırır.<br />

iv. StretchImagedeğeri, resmi kontrolün<br />

büyüklüğüne göre boyutlandırır ve resmin tam<br />

görünmesini sağlar.<br />

Bir açılan kutudan zaman değeri seçmeyi sağlar. Seçilen değer Date tipinde olur.<br />

DateTimePicker Özellikleri<br />

Özellik Değer Tipi Açıklama<br />

CalendarTrailing<br />

ForeColor<br />

CalendarTitle<br />

ForeColor<br />

CalendarTitle<br />

BackColor<br />

CalendarMonth<br />

Background<br />

Color Bir önceki ve bir sonraki ayın günlerinin görüntülenme<br />

rengidir.<br />

Color Takvim başlığının ön plan rengidir.<br />

Color Takvim başlığının arka plan rengidir.<br />

Color Takvim arka plan rengidir.<br />

80


81<br />

Microsoft Visual Studio Ara yüzü<br />

CalendarForeColor Color Takvimdeki yazıların ön plan rengidir.<br />

CalendarFont Font Takvimin gösterileceği yazı tipi ayarlarıdır.<br />

2009 2010<br />

ShowCheckBox Boolean Tarih değerinin yanında seçme kutusunun gösterilmesi.<br />

Checked Boolean Seçme kutusu görüntülendiği zaman, tarihin seçili olup<br />

olmadığını gösterir<br />

Format<br />

DateTime<br />

PickerFormat<br />

Kontrolün görüntüleneceği formatı belirler. Long,<br />

Shortdeğerleri uzun ve kısa tarih formatını, Time sadece<br />

zamanı gösterir. Custom değeri, CustomFormat<br />

özelliğine girilen formatta gösterileceğini belirler.<br />

CustomFormat String Tarihin hangi formatta gösterileceğini belirler.<br />

Value Date Seçilen tarih değerini belirler.<br />

MaxDate Date Kontrolün alabileceği maksimum tarih değeridir.<br />

MinDate Date Kontrolün alabileceği minimum tarih değeridir.<br />

ShowUpDown Boolean<br />

DateTimePicker Metotları<br />

ToOADate:Tarih bilgisini Double türünden bir sayıya çevirir.<br />

ToShortDateString: Tarihi kısa formatta stringe dönüştürür.<br />

ToLongTimeString: Zamanı uzun formda stringe dönüştürür.<br />

Kontrolün formunu açılan kutu ya da yukarı aşağı okları<br />

formatında gösterir. Bu özellik True olduğunda,<br />

kontrolün formatı, NumericUpDown kontrolünün<br />

formatında olur.


Konu 4. Hazır Fonksiyonlar<br />

I. Yazı işlemleri<br />

Trim<br />

Yazının başındaki ve sonundaki boşlukları atmak:<br />

Label1.Text = Trim(" BilgeAdam ") ' Sonuç: BilgeAdam<br />

LCase<br />

Tüm yazıyı küçük harfe çevirmek:<br />

Label1.Text = LCase("BILGEAdam") ' Sonuç: bilgeadam<br />

UCase<br />

Tüm yazıyı büyük harfe çevirmek:<br />

Label1.Text = UCase("bilgeADAM") ' Sonuç: BİLGEADAM<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Mid<br />

Yazının belirli bir bölümünü almak. İkinci parametrede verilen pozisyondan başlayarak,<br />

üçüncü parametredeki değer kadar karakter alınır:<br />

Label1.Text = Mid("BilgeAdam", 6, 4) ' Sonuç: Adam<br />

Replace “Replace(Neyin_İçinde,Neyi,Ne_İle,<br />

[Kaçıncı_Harften],[Kaç_Tane],[Nasıl])”<br />

Stringin içindeki bir ifadeyi değiştirmek istediğimizde kullanırız.<br />

Replace(“Arzu Erdem”,”Arzu”,”Melike”) „ Sonuç: Melike Erdem<br />

Space “Space(Sayı)”<br />

Verilen sayıda boşluk oluşturur.<br />

Msgbox(“Hoşçakal” & Space(25) & & “Bye” & Space(25) & “Tschüs”)<br />

82


83<br />

Microsoft Visual Studio Ara yüzü<br />

II. Karakter işlemleri<br />

Char.IsLetter<br />

Karakterin alfabetik olup olmadığını öğrenmek için kullanılır.<br />

CharIsDigit<br />

Karakterin 09 arasında bir rakam olup olmadığını öğrenmek için kullanılır.<br />

2009 2010<br />

CharIsNumber<br />

Karakterin sadece bir rakam değil ½, 1/5 gibi bir sayı olup olmadığını öğrenmek için<br />

kullanılır.<br />

CharIsLower<br />

Karakterin küçük harf olup olmadığını kontrol eder.<br />

CharIsUpper<br />

Karakterin büyük harf olup olmadığını kontrol eder.<br />

CharIsSymbol<br />

Karakterin bir sembol olup olmadığını kontrol eder.<br />

Aşağıdaki program ad girişinde harf kontrolü yapmaktadır. Eğer harf girişi yok ise<br />

program uyarı vericek<br />

Dim adim As String, i As Byte, c As Char<br />

adim = InputBox("Adınızı giriniz", "Ad girişi")<br />

For i = 0 To adim.Length 1<br />

c = adim.Chars(i)<br />

If Not Char.IsLetter(c) Then<br />

Else<br />

Next<br />

MsgBox("Lütfen harf giriniz", MsgBoxStyle.Critical)<br />

Exit For<br />

If i = adim.Length 1 Then<br />

MsgBox("Adınız..." & adim)<br />

End If<br />

End If<br />

GetChar<br />

Yazının parametrede belirtilen sıradaki karakteri almak:


Label1.Text = GetChar("BilgeAdam",9) ' Sonuç: m<br />

III. Sayı işlemleri<br />

Rnd<br />

Rasgele sayı üretmek<br />

' Maximimum 400 değerini alan bir sayı üretir<br />

Rnd() * 400<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

değer üretmek için, Rnd fonksiyonundan önce Randomize fonksiyonunun çağırılması<br />

gerekir:<br />

Randomize() Rnd() * 400<br />

0 ile 1 arasında rasgele sayı üretir.<br />

Rnd<br />

20 ile 50 arasında sayı üretir.<br />

Rnd*30+20<br />

IsNumeric<br />

Parametrede verilen bir değerin sayı olup olmadığını kontrol etmek. Geriye dönen değer<br />

True ya da False mantıksal değeridir:<br />

IsNumeric(TextBox1.Text)<br />

IV. Sayı işlemleri<br />

Rnd<br />

Rasgele sayı üretmek<br />

' Maximimum 400 değerini alan bir sayı üretir<br />

Rnd() * 400<br />

değer üretmek için, Rnd fonksiyonundan önce Randomize fonksiyonunun çağırılması<br />

gerekir:<br />

Randomize() Rnd() * 400<br />

0 ile 1 arasında rasgele sayı üretir.<br />

Rnd<br />

84


85<br />

Microsoft Visual Studio Ara yüzü<br />

20 ile 50 arasında sayı üretir.<br />

Rnd*30+20<br />

2009 2010<br />

IsNumeric<br />

Parametrede verilen bir değerin sayı olup olmadığını kontrol etmek. Geriye dönen değer<br />

True ya da False mantıksal değeridir:<br />

IsNumeric(TextBox1.Text)<br />

Konu 5. InputBox<br />

InputBox, kullanıcının veri girmesi için açılan bir mesaj kutusudur. Formlarda TextBox<br />

kontrolüne ihtiyaç duymadan veri almayı sağlar (Resim 4.15).<br />

InputBox("Bir sayı giriniz: ", "Sayı <strong>Giriş</strong>i", 1, 350, 350)<br />

Prompt InputBox metodunun ilk parametresi, mesaj kutusunun gövdesinde gözükecek<br />

yazıdır .<br />

Diğer tüm parametreler isteğe bağlıdır.<br />

Title(Başlık). Mesaj kutusunun başlığıdır<br />

DefaultResponse (Varsayılan cevap). Kullanıcı veri girmediğinde varsayılan değerdir.<br />

XPos(X pozisyonu). Mesaj kutusunun sol kenarının, ekranın sol kenarına olan uzaklığıdır.<br />

YPos(Y pozisyonu). Mesaj kutusunun üst kenarının, ekranın üst kenarına olan uzaklığıdır.<br />

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As<br />

System.EventArgs) Handles Button1.Click<br />

ListBox1.Items.Add(InputBox("İsim soyad giriniz:", "<strong>Bilgi</strong> <strong>Giriş</strong>i", "Bilinmiyor"))<br />

End Sub


Konu 6. MessageBox<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

MessageBox, kullanıcıya bilgi göstermek için açılan mesaj kutusudur. Bu mesaj kutusu dört<br />

öğeden oluşur (Resim 4.16).<br />

Text(Yazı). Mesaj kutusunda verilmek istenen bilgiyi tutan yazıdır.<br />

Caption(Başlık). Mesaj kutusunun başlığıdır.<br />

Buttons (Düğmeler). Mesaj kutusunda hangi düğmelerin gösterileceğini belirler.<br />

Icon (Simge). Mesaj kutusunda gösterilecek olan simgeyi ve açıldığı zaman çıkartılacak<br />

sesi belirler.<br />

MessageBox.Show("Devam etmek istiyor musunuz?", "Uyarı",<br />

MessageBoxButtons.YesNo, MessageBoxIcon.Warning)<br />

Mesaj kutusu, kapanırken hangi düğmenin tıklandığını DialogResult nesnesi ile programcıya<br />

bildirir.<br />

NOT MsgBoxhazır fonksiyonu MessageBox.Show metodu ile aynı işleve sahiptir.<br />

86


87<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

Konu 7. Değişken – Sabit Nedir? Değişkenlerin ve<br />

Sabitlerin Tanımlanması<br />

I. Değişken Nedir, Nasıl Tanımlanır?<br />

Program yazarken, bazı verilerin daha sonra kullanılmak üzere bir yerde tutulması<br />

gerekebilir. Örneğin, bir hesaplama yapılırken, önceden hesaplanmış verilerin kullanılması<br />

istenirse, bu verileri tekrar hesaplamak yerine hafızada tutmak performansı artırır. Veya<br />

veritabanından alınan bir kullanıcı isminin hafızada tutulması, bu değer her istendiğinde<br />

veritabanına bağlanıp alınmasına tercih edilmelidir. Verilerin bu şekilde hafızada tutulması<br />

değişkenlerle sağlanır.<br />

Değişkenler farklı türlerde verileri tuttukları için, farklı tiplere sahip olabilir. Bir negatif<br />

veya pozitif sayıyı tutan değişken ile yazı tutan bir değişken farklı tiplere sahiptir.<br />

Değişkenler Dim anahtar kelimesi ile tanımlanır.<br />

Dim sayi<br />

NOT Dim sözcüğü, “boyut” anlamına gelen Dimension kelimesinin kısaltmasıdır.<br />

Bu şekilde tanımlanan değişkenler Object (nesne) tipindedir, yani her türden veriyi<br />

tutabilirler. Nesne tipindeki değişkenler, tanımlanmalarının kolay olması ve istenen tipte<br />

değer tutabilmeleri açısından avantajlı olsa da, performansı önemli ölçüde düşürürler.<br />

Tuttukları değerlerin tipleri biliniyorsa, değişkenleri tanımlarken tiplerini belirlemek<br />

gerekir.


Microsoft Visual Studio Ara yüzü 2009 2010<br />

Sayısal Tipler: Byte, Short, Integer, Long, Single, Double, Decimal<br />

String Tipler: String, Char<br />

Mantısal Tipler: Boolen<br />

Tarih Tipi: Date<br />

Tanımlama Kuralları<br />

Boşluk, nokta, soru işareti, noktalı virgül, çift tırnak, tek tırnak, aritmetik operatörler,<br />

karşılaştırma operatörleri ve atama operatörleri ile parantezler kullanılamaz.<br />

Dim Ad1 Doğru<br />

Dim 1Ad Yanlış<br />

Dim Ad_Soyad Doğru<br />

Dim Ad ve Soyad Yanlış<br />

Dim AdSoyad Yanlış<br />

Dim Ad_Soyad Doğru<br />

Değişken ismi 255 karakterden fazla olmamalıdır.<br />

Dim x,y,z as Integer, t,k as String<br />

Değişkenlerin tanımlanmadan kullanılması için Option Explicit seçeneğinin kapalı olması<br />

gerekir. Option Explicit seçeneğini projenin özelliklerindeki Build sekmesinden<br />

değiştirilebileceği gibi, kod sayfalarının en üstünde de değiştirilebilir.<br />

88


89<br />

Microsoft Visual Studio Ara yüzü<br />

2009 2010<br />

Option Explicit seçeneğinin On olması, tanımlanmamış değişkenlerin kullanılmasına izin<br />

vermez, tasarım anında hata üreterek programcıya bildirir. Varsayılan durumda Ondeğeri<br />

seçilidir.<br />

II. Sayısal Tipler<br />

Byte: 1 Baytlık 0 ile 255 arasında değer alır.<br />

Short: 2 Baytlık 32.768 ile 32.767 arasında değer alır.<br />

Integer: 4 Baytlık 2.147.483.648 ile 2.147.483.647 arasında değer alır.<br />

Long: 4 Baytlık 9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasında değer<br />

alır.<br />

38<br />

45<br />

Single: 4 Baytlık 3.402823 10 ile 1.401298 10 <br />

arasında değer alır.<br />

308<br />

324<br />

Double: 8 Baytlık 1.79769313486232 10 ile 4.94065645841247 10 <br />

arasında<br />

değer alır.<br />

Decimal: 14 Baytlıktır ve 29 basamağı tüm dijitleri koruyarak tutabilir.<br />

Sayısal hesaplamalarda hassasiyet için Decimal kullanmanızı öneririz.<br />

Sınır aşımlarına dikkat<br />

Val(String): Text kutularında sayı olup olmadığını anlamak için IsNumeric komutunu<br />

kullanmak kodunuzu uzatabilir. Böyle bir durumda hatalı veri girişini engellemek için bu<br />

komutu kullanırız.<br />

Val fonksiyonu ondalık ayıracı olarak nokta işaretini kabul eder. Eğer ondalık ayıracı<br />

kullanmak istiyorsanız Val yerine Cdec fonksiyonunu tercih etmelisiniz.<br />

Sayıların Yuvarlanması<br />

\ Operatörü Sonucu tamsayı gösterir. Virgülden sonrasını yuvarlama yapmaksızın atar.<br />

Int(sayı) Kendinden düşük olan sayıya tam sayı olarak yuvarlar. Tam değer gibi<br />

düşünebilirsiniz.


Fix(sayı) Int(sayı) dan farkı sadece virgülü atar.<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Math.Round Diğerlerinden farkı istediğiniz ondalığa kadar gösterme ve yuvarlama<br />

işlemini yapar.<br />

Sayıları Biçimlendirme<br />

Format: Format(sayı,”##,## TL”)<br />

III. Char ve String Tipi<br />

Char: Sadece 1 karakter barındırır.<br />

String: Karakter sınırı verilmezse 2 milyar karaktere kadar atama yapılabilir.<br />

Length: String‟in uzunluğunu verir.<br />

Dim str As String = "Ali Gel"<br />

MsgBox(str.Length)<br />

Chars: Chars(k) Stringin k. Harfini verir.<br />

BüyükKüçük Harfe Çevirme<br />

ToLower: Küçük harfe çevirir.<br />

Label1.Text.ToLower<br />

ToUpper: Büyük harfe çeirir.<br />

Label1.Text.ToUpper<br />

String Karşılaştırma<br />

String.Compare(String1,String2) karşılaştırma harfin öncelik sırasına göre yapılır. Eşitse<br />

0 değerini alır, string in baş harfi diğerinden önce geliyorsa büyüktür ve pozitif bir sayı alır<br />

aksi durumda negatif değer alır.<br />

String.Compare(TextBox1.Text, TextBox2.Text)<br />

String.Compare(String1,String2,Ayırım yapılmasın mı?) İki String arasında karşılaştırma<br />

yaparken harfin büyük ve küçük ayrımı yapılmasını istemiyorsanız Ayırım yapılmasın<br />

mı?yerine True yazınız…<br />

String.Compare(TextBox1.Text, TextBox2.Text, True)<br />

BoşlukKarakter Atma<br />

TrimStart: Stringin başındaki boşlukları atar.<br />

TextBox2.Text = TextBox1.Text.TrimStart<br />

90


91<br />

Microsoft Visual Studio Ara yüzü<br />

TrimEnd: Stringin sonundan boşlukları atar.<br />

TextBox2.Text = TextBox1.Text. TrimEnd<br />

Trim: Stringin her iki tarafından boşlukları atar.<br />

TextBox2.Text = TextBox1.Text.Trim<br />

String Parçalama<br />

SubString(Başlangıç, Uzunluk) MsgBox(“Erzurum”.SubString(2,4))zuru<br />

Split<br />

Dim S() As String<br />

S=”Arzu Erdem”.Split(“”) S(0)=Arzu, S(1)=Erdem<br />

UBound Stringin kaç parçaya ayrıldığını öğrenebilirsiniz.<br />

UBound(S) 1 (Yukarıdaki örnek için)<br />

String Arama<br />

IndexOf, LastIndexOf<br />

IndexOf(Aranan_String, Kaçıncı_Harften(, Kaç_Harf)) Aramayı baştan yapar<br />

Dim str As String<br />

str = "Arzu Erdem"<br />

MsgBox(str.IndexOf("r", 2))<br />

MsgBox(str.IndexOf("r", 0))<br />

MsgBox(str.IndexOf("r", 2, 4)) .<br />

2009 2010<br />

LastIndexOf(Aranan_String, Kaçıncı_Harften, Kaç_Harf) Aramayı sondan yapar<br />

String Birleştirme<br />

Concat “Concat(String1, String2, …, StringN)”<br />

Concat(String1, String2, …, StringN) = String1 & String2 & … & StringN = String1 + String2 +<br />

… + StringN<br />

String.Concat(TextBox1.Text, TextBox2.Text)<br />

TextBox1.Text&TextBox2.Text<br />

TextBox1.Text+TextBox2.Text


Join “Join(Birleştirici_String,String Dizisi)”<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Bir grub stringin arasına bir karakter koyarak birleştirmek için kullanılır.<br />

Dim str() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I"}<br />

MsgBox(String.Join(", ", str))<br />

Insert “Insert (Kacinci_Harften, String)”<br />

Bir stringin içine başka bir stringi eklemek için kullanılır.<br />

Dim str As String = "Ali Gel"<br />

MsgBox(str.Insert(4, "Okula "))<br />

String Değitirme ve Silme<br />

Replace “Replace(Aranan_Metin, Yerine_Yazilacak_Metin)”<br />

Bir stringin içinde geçen metni başka bir metin ile değiştirmek için bu metod kullanılır.<br />

Dim str As String = "Ali Gel"<br />

MsgBox(str.Replace("Gel", "Gelme"))<br />

Remove “Remove(Kacinic_Harften, Kac_tane)”<br />

Bir stringin içinde geçen metni silmek için bu metod kullanılır.<br />

Dim str As String = "Ali Okula Gel"<br />

MsgBox(str.Remove(4, 6))<br />

String Formatlama<br />

PadLeft, PadRight<br />

PadRight(adet,karakter) Sağa karakter ekleme,<br />

PadLeft(adet,karakter) Sola karakter ekleme<br />

Dim str As String = "Ali Okula Gel"<br />

MsgBox(str.PadRight(20, "."))<br />

Format<br />

String.Format(“Formatlanicak_bicim”)<br />

Dim ad, yer As String, tarih As Date<br />

ad = "Arzu"<br />

yer = "İzmit"<br />

92


93<br />

Microsoft Visual Studio Ara yüzü<br />

tarih = Today<br />

2009 2010<br />

MsgBox(String.Format("{0}, {1} tarihinde, {2}'te Vbasic dersi veriyor... ", ad, tarih,<br />

yer))<br />

RSet, LSet<br />

RSet(String, Uzunluk) Sağa hizalama,<br />

LSet(String, Uzunluk) Sola hizalama<br />

Dim str As String = "Ali Okula Gel"<br />

TextBox1.Text = LSet(str, 20)<br />

IV. Global ve Local Değişkenler<br />

Dim ile tanımlanan değişken bir prosedür veya bir fonksiyonun içinde tanımlanmış ise<br />

Local, dışında tanımlanmış ise Global olarak adlandırılır.<br />

Bir değişken Public Shared ile tanımlanıyorsa tüm formlarda ve tüm modüllerde<br />

kullanılabilir.<br />

Bir değişkeni programın her tarafında kullanacak şekilde tanımlamak için bir Modülün<br />

içinde Public deyimi ile kullanmak gerekir.<br />

Değişkenlere değer atamayı aşağıdaki şekillerde yapabilirsiniz:<br />

Dim a=1, b=2<br />

Dim a,b<br />

a=1<br />

b=2<br />

Dim a as integer=1, b as integer=2<br />

V. Static Değişken Tanımı<br />

Local olarak tanımlanan bir değişkenin , tanımladığı altprogram veya fonksiyonun çalışması<br />

bittikten sonra değerinin korunması isteniyorsa Dim yerine Static deyimi kullanılır. Static<br />

değişkenlere değer atama aşağıdaki şekilde yapılır.<br />

Static a=1<br />

Static a „ Yanlis kullanim…


a=1<br />

VI. Sabit Tanımlama<br />

Const Sabit_Ismi=Degeri (Const pi=3.1415)<br />

Konu 8. Operatörler<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

I. Aritmetiksel Mantıksal Operatörler<br />

Bu operatörler aritmetik işlemlerinde, sayılarla veya sayı tutan ifadelerle kullanılır.<br />

Özellik Değer Tipi Açıklama<br />

= Eşittir<br />

* Çarpma<br />

/ Bölme<br />

\ Tam Bölme<br />

+ Toplama<br />

Çıkarma<br />

^ Üs Alma<br />

Mod Bölmede kalan<br />

Not Değil<br />

And Ve<br />

Or Veya<br />

XOr Verilen koşulların farklarını kıyaslar<br />

94


95<br />

Microsoft Visual Studio Ara yüzü<br />

TABLO: And Operatörü<br />

Koşul 1 Koşul 2 Koşul 1 AndKoşul 2<br />

True True True<br />

True False False<br />

False True False<br />

False False False<br />

TABLO : Or Operatörü<br />

Koşul 1 Koşul 2 Koşul 1 Or Koşul 2<br />

True True True<br />

True False True<br />

False True True<br />

False False False<br />

TABLO: XOr Operatörü<br />

Koşul<br />

1<br />

Koşul 2 Koşul 1 XOrKoşul 2<br />

True True False<br />

True False True<br />

False True True<br />

False False False<br />

2009 2010<br />

II. Karşılaştırma Operatörleri<br />

Bu operatörler veri tiplerini birbirleriyle karşılaştırmak için kullanılır. Bu operatörler ile<br />

yapılan işlemlerin sonucunda True ya da False değeri döner. Karşılaştırma operatörleri<br />

yalnızca sayı tipleri üzerinde yapılmaz. String tipleri birbirleriyle alfabetik sıraya göre<br />

karşılaştırılabilir.<br />

Özellik Değer Tipi Açıklama<br />

Eşit Değil


Büyük<br />

< Küçük<br />

>= Büyük eşit<br />


97<br />

Microsoft Visual Studio Ara yüzü<br />

x=x+y<br />

IV. Kısaltılmış Atama Operatörleri<br />

ifadesi yerine<br />

x+=y<br />

kullanabiliriz. Buna göre kısaltabileceğimiz diğer operatörler şöyledir:<br />

^= *= \= += = &=<br />

Konu 9. Dizilerle Çalışmak<br />

I. Dizi Tanımlama<br />

Dim isimler(3) As String<br />

2009 2010<br />

Diziler tanımlanırken, ismi verildikten sonra parantez içinde kaç eleman içereceğini<br />

belirtmek gerekir. Dizilerin indisleri sıfırdan başlar. Örnekteki isimler dizisinin String<br />

tipinde 4 tane elemanı vardır.<br />

Dizilerin elemanlarına ulaşmak için, istenen elemanın indisinin verilmesi gerekir.<br />

isimler(0) = "Ali" isimler(1) = "Ahmet" isimler(2) = "Mehmet" isimler(3) = "Ayşe"<br />

MsgBox(isimler(3))<br />

Dizilere tek tek değer atanabildiği gibi, tanımlarken de başlangıç değerleri atanabilir.


Dim isimler() As String = {"Ali","Ahmet","Mehmet","Ayşe"}<br />

Microsoft Visual Studio Ara yüzü 2009 2010<br />

Diziler tek boyutlu olduğu gibi, birkaç boyutlu diziler de tanımlanabilir.<br />

Dim x(10,25)<br />

II. Dinamik Dizi Tanımlama<br />

Programda tanımlanacak dizinin boyutu her zaman belli olmayabilir. Örneğin bir üye takip<br />

programı yapacaksınız. Üyeler ile ilgili bilgilerin hafızada tutulması gerekebilir. Bu program<br />

örneğin Türkiye genelinde kullanılacaksa yüz binlerle ifade edilir ama küçük bir sitede<br />

uygulayacaksanız yüzlerle ifade edebilirsiniz. Boyutu 500 gibi bir değerde tutarsak,<br />

program 500 den fazla üyenin bulunduğu bir sitede çalışmayacaktır. 500000 gibi bir rakam<br />

yazarsak sorun çözülecektir. Ancak bu kadar boyut ayırdığımızda bu kadar boyutun<br />

tamamını kullanamayabiliriz. Bu durumda hem programa yer kaplatmış oluruz hem de<br />

programı yavaşlatmış oluruz. İşte böyle durumlarda diziyi static deyimi yerine ReDim<br />

deyimi ile tanımlayabiliriz.<br />

ReDim [Preserve] degisken_ismi (dizi_boyutu)<br />

Burada Preserve kullanılmazsa dizi içindeki elemanlar kaybolur.<br />

Dim degisken_ismi () As tipi<br />

Parantez içerisinde dizi boyutları verilmemiştir. Daha sonra dizinin boyutu ReDim ile<br />

yeniden tanımlanır.<br />

(3,0) boyutlu olan bir dizi, ' değerlerini koruyarak (3,1) boyutlu yapılır<br />

Dim dizi(,) As Double = {{1.0},{2.0},{3.0},{4.0}}<br />

ReDim Preserve dizi(3, 1)<br />

III. Diziler Üzerinde Yapılan İşlemler<br />

Array.Sort(Dizi) Diziyi sıralar<br />

Array.BinarySearch (Dizi, Aranan) Sıralı dizide arama yapar<br />

Array.IndexOf (Dizi, Aranan) Sıralı olmayan dizide de arama yapar<br />

Array.Reverse(Dizi) Diziyi ters çevirir…<br />

98


99<br />

Karar Yapıları ve Döngüler<br />

2009 2010<br />

Bölüm 7. Karar Yapıları ve Döngüler<br />

Karar yapıları ve döngüler, algoritmaların akışını yönlendirir. If ve Select Case karar<br />

yapıları ile gerekli kontroller yapılarak, uygulama istenen şekilde yönlendirilir. Döngüler<br />

ile, belli bir yol izelenerek birçok kez tekrarlanacak işlemler bir defa yazılır. Bu işlem,<br />

döngü sonlanana kadar gerçekleştirilir.<br />

Bu modül tamamlandıktan sonra:<br />

yapısının ve döngünün nerede kullanılacağını öğreneceksiniz.<br />

Konu 1. Karar Yapıları


I. If<br />

Karar Yapıları ve Döngüler 2009 2010<br />

If karar yapısı, bir koşul sağlandığı zaman yapılacak işlemleri kapsar. Kontrol edilecek koşul<br />

ifadesinin sonucu True değerini alırsa, If EndIf bloğu arasındaki kodlar çalıştırılır.<br />

If Şart Then<br />

ElseIf Şart<br />

ElseIf Şart<br />

…<br />

Else<br />

End If<br />

If Şart then<br />

End If<br />

Komutlar<br />

Komutlar<br />

Komutlar<br />

Komutlar<br />

Komutlar<br />

Tek şartımız varsa End If kullanmayabiliriz<br />

If Şart Then Komutlar Else Komutlar<br />

100


101<br />

Karar Yapıları ve Döngüler<br />

If Şart Then Komutlar<br />

2009 2010<br />

II. Select Case<br />

Bir değişkenin aldığı bir çok değere göre farklı komutların çalıştırılması gereken durumlar<br />

için If yapısını kullanmak yerine Select Case yapısını kullanmak daha avantajlıdır.<br />

Select Case Değişken<br />

Case Durum 1: Komutlar<br />

Case Durum2, Durum3: Komutlar<br />

Case Durum4 to Durum7: Komutlar<br />

Case is Durum9: Komutlar<br />

…<br />

End Select<br />

Case DurumN: Komutlar<br />

Case Else Komutlar<br />

Konu 2. Döngüler


I. For Next<br />

For Sayac=Baslangic_Degeri To Bitis_Degeri Step Artim<br />

Next<br />

Komutlar<br />

Karar Yapıları ve Döngüler 2009 2010<br />

DİKKAT Döngüler içinde dizi kullanılırken, sayaç sıfırdan başlamışsa döngünün biteceği<br />

nokta “dizi uzunluğu 1” olmalıdır.<br />

DİKKAT Değişken tanımlamaları For döngüsünün içinde de yapılabilir. Bu durumda,<br />

değişkenin kapsam alanı bu döngüyle sınırlı kalır.<br />

For Döngülerinin İç İçe Kullanımı:<br />

For ….<br />

Next<br />

….<br />

For<br />

Next<br />

…<br />

102


103<br />

Karar Yapıları ve Döngüler<br />

II. While End While ve Do whileLoop<br />

2009 2010<br />

Bir döngünün kaç defa çalışacağı biliniyorsa ForNext döngüsü tercih edilir ancak<br />

bilinmiyorsa While döngüleri kullanılır. Bu iki döngünün de çalışma mantığı aynıdır.<br />

While Şart<br />

End While<br />

Komutlar<br />

Do While Şart<br />

Loop<br />

Komutlar<br />

III. Döngü Kontrol İfadeleri<br />

Exit Do<br />

Loop ve While döngülerinden birinde bazı şartların gerçekleşmesi durumunda döngüden<br />

çıkmak için kullanılır.<br />

Exit For<br />

ForNext döngüsü tamamlanmadan, bazı şartlar gerçekleştiğinde döngüden çıkmak için<br />

kullanılır.<br />

Exit SubExit Function<br />

Prosedür sonuna ulaşmadan prosedürden çıkmak için kullanılır.


End<br />

Programı sona erdir.<br />

Karar Yapıları ve Döngüler 2009 2010<br />

WithEnd With<br />

Bir kontrole ait bir özellik değiştirmek istendiğinde veya bir metod çağrıldığında kısayol<br />

olarak ulaşmak için kullanılır.<br />

With kontrol_adı<br />

.Özellik=Değer<br />

.Özellik=Değer<br />

…<br />

End With<br />

Konu 3. Hata Yakalama<br />

Örneğin InputBox metodu ile bir sayının alınması sırasında, kullanıcı String tipinde bir değer<br />

girerse çalışma zamanında bir hata oluşur.<br />

104


105<br />

Karar Yapıları ve Döngüler<br />

Dim dizi(10) As Integer<br />

For i As Integer = 0 To dizi.Length Label1.Text &= dizi(i)<br />

Next<br />

2009 2010<br />

Resim ‟deki hata mesajı, dizinin büyüklüğünün dışında bir indis verildiğini belirtir. Visual<br />

Basic .NET dilinde uygulama geliştirirken oluşabilecek tüm hatalar .NET Framework<br />

altındaki Exception sınıfları halinde tanımlanır. Örneğin dizinin büyüklüğünden farklı bir<br />

indis verildiğinde IndexOutOfRangeException hatası ortaya çıkar. Tüm hatalar gibi bu hata<br />

da Exception taban sınıfından türetilmiştir.<br />

I. Try Catch Finally


Try<br />

Catch<br />

End Try<br />

Komutlar<br />

Komutlar<br />

Karar Yapıları ve Döngüler 2009 2010<br />

Çalışma zamanında ortaya çıkan hatalar uygulamanın beklenmedik bir şekilde sonlanmasına<br />

neden olur. Uygulamanın devam etmesi için bu hataların yakalanıp işlenmesi gerekir. Try<br />

Catch Finally blokları içinde, çalışma zaman hataları meydana geldiği durumlarda çalışması<br />

istenen kodlar yazılır. Try bloğu içine, çalışırken hata üretebilecek kodlar yazılırken, Catch<br />

bloğu içine, hata oluştuğunda yapılması gereken işlemler yazılır.<br />

Dim sayi As Byte Dim sonuc As Integer Try<br />

sayi = Rnd() * 3<br />

sonuc = 100 / sayi<br />

MsgBox("Bölme işlemi başarılı, sonuç: ” & sonuc)<br />

Catch ex As Exception<br />

MsgBox("Bölme işlemi başarısız. Hata Mesajı: " & ex.Message)<br />

End Try<br />

Bu örnekte üretilen rasgele bir sayı ile bölme işlemi yapılıyor. Sayı sıfır değerini aldığında,<br />

bölme işlemi hata üretir. Dolayısıyla bu işlem Try bloğu içine yazılmalıdır. Catch bloğunda,<br />

işlemin başarısız olduğunu belirten bir mesaj yazılır. Exception nesnesinin Message özelliği,<br />

hatanın oluştuğu zaman üretilen mesajı tutar. Exception nesnesinin özellikleri Catch içinde<br />

kullanılmayacaksa, tanımlanmasına gerek yoktur.<br />

106


107<br />

Fonksiyonlar ve Altprogramlar<br />

Bölüm 8. Fonksiyonlar ve<br />

Altprogramlar (Yordamlar)<br />

2009 2010<br />

Uygulama geliştirirken, bir işlemin birçok yerde kullanıldığı zamanlar olur. Bu gibi<br />

durumlarda bir kere yazılan kodlar, farklı yerlerde tekrar yazılır. Uygulama üzerinde bir<br />

değişiklik yapılmak istenirse, tekrar yazılan kodların tek tek bulunup değiştirilmesi gerekir.<br />

Böylece hem uygulamanın yazımı zorlaşır, hem de değişik yapmak giderek imkânsız hale<br />

gelir. Bu problemler, birçok yerde yapılması istenen işlemlerin fonksiyonlar ve yordamlar<br />

içinde yazılması ile çözülür. Sadece fonksiyon ve yordamların isimleri kullanılarak, istenen<br />

yerlerde kodlar çalıştırılır.<br />

Yapılan işlemin sonucunda oluşan değer isteniyorsa fonksiyonlar kullanılır. Örneğin,<br />

veritabanına yeni bir kullanıcı ekledikten sonra, kullanıcının ID numarası isteniyorsa<br />

fonksiyon kullanılmalıdır. Eğer yapılan işlemlerin sonunda bir değer döndürülmüyorsa<br />

yordamlar kullanılır. Örneğin bir ComboBox kontrolüne öğe ekleme işlemi yordam içine<br />

yazılabilir.<br />

.NET çatısındaki nesnelerin birçok fonksiyon ve yordamları vardır. Tüm fonksiyon ve<br />

yordamların kaç parametre aldığı, geriye dönüş değerinin ne olduğu, hangi nesneye ait<br />

oldukları ezberlenemez. Dolayısıyla Visual Studio yardımının kullanılması kaçınılmazdır.<br />

Bu modül tamamlandıktan sonra;<br />

rak kodlarınızın yönetilebilirliğini ve esnekliğini artıracak,


I. Sub<br />

Fonksiyonlar ve Altprogramlar (Yordamlar) 2009 2010<br />

Sub yordamları dönüş değeri olmayan kod bloklarıdır. Bu kodlar Sub ve End Sub ifadeleri<br />

arasına yazılır.<br />

Sub YordamIsmi([<strong>Giriş</strong>_Parametreleri[As Tipi]])<br />

End Sub<br />

Uygulama içinde birçok yerde çalışacak olan kodlar Sub yordamı içinde yazılır. Bu kodlar,<br />

içine yazıldıkları yordamın ismi ile çağırılarak, istenen yerde tekrar çalıştırılabilir. Örneğin,<br />

bir uygulama başlarken form üzerindeki kontrollerin temizlenmesi gerekiyorsa, bu kodları<br />

bir daha yazmamak için yordam kullanılabilir.<br />

II. Parametre Kullanımı<br />

Yordamların bazı değerlere göre farklı işlem yapması istenebilir. İşlemin bağlıolduğu bu<br />

değerlere parametre veya argüman denir. Yordamlar parametre alacak şekilde tanımlanıp,<br />

çağırıldıkları sırada istedikleri parametreler verilerek kullanılır.<br />

Sub YordamIsmi(Parametre1 As VeriTipi, Parametre2 As VeriTipi, …)<br />

End Sub<br />

108


109<br />

Fonksiyonlar ve Altprogramlar<br />

2009 2010<br />

Örneğin, uygulamanın birçok yerinde kullanıcıya bilgi vermek amaçlı mesaj kutuları<br />

kullanılır. Eğer bu mesajlar bir yordam içine yazılırsa, daha sonra mesajlar bir Label<br />

üzerinde gösterilecek şekilde kodu değiştirmek kolay olacaktır. Yordamın göstereceği<br />

mesajların parametre olarak verilmesi gerekir.<br />

Optinal Parametre kullanımı<br />

Public Function f(x,y,Optinal t=3, Optinal k=5)<br />

F(5,4) x=5, y=t, t=3, k=5<br />

F(5,4,2) x=5, y=4, t=2, k=5<br />

F(5,4,2,3) x=5, y=4, t=2, k=3<br />

F(5,4,,2) x=5, y=4, t=3, k=2<br />

III. Function<br />

Fonksiyonlar bir işlem yaptıktan sonra geriye değer döndürürler. Örneğin, bir çarpma<br />

fonksiyonunun dönüş değeri, parametre olarak verilen iki sayının çarpımıolacaktır.<br />

Fonksiyonların tanımları değişkenler gibidir.<br />

Function Fonksiyon(ByVal Param1 As VeriTipi, ...) As DönüşVeriTipi<br />

End Function<br />

Fonksiyonların geriye dönüş değerleri Return ifadesi ile ya da fonksiyonun ismi verilerek<br />

yapılır.


Fonksiyonlar ve Altprogramlar (Yordamlar) 2009 2010<br />

IV. Parametre sayısı belli olmayan prosedür yazma<br />

ParamArray<br />

Yordamları ve fonksiyonları çağırırken parametrelerin mutlaka girilmesi gerekir. Ancak bazı<br />

durumlarda yordamlara ve fonksiyonlara girilecek parametrelerin sayısı tasarım zamanında<br />

belli olmaz. ParamArray anahtar kelimesi ile yordamlara, aynı veri tipinde bir parametre<br />

dizisi verilebilir. ParamArray ile verilen dizi, yordamın son parametresi olarak<br />

tanımlanmalıdır.<br />

Function(Sub) Fonksiyon(Yordam)Adı(ParamArray degisken As Tipi) As Tipi<br />

V. Fonksiyonların ve Yordamların Aşırı Yüklenmesi<br />

Fonksiyon ve yordamları kullanırken, aynı isimde birden fazla kez tanımlanabildikleri<br />

görülür. Buna Aşırı Yükleme (OverLoad) denir. Bir yordamın ve fonksiyonun aşırı yüklenmesi<br />

kullanımını kolaylaştırır. Aynı isimde farklı seçenekler sunması, metotların kullanışlılığını<br />

artırır.<br />

Overloads Function FonksiyonAdı(degisken1 As Tipi, degisken2 As Tipi,…)<br />

…<br />

End Function<br />

110


111<br />

ADO.NET<br />

Bölüm 9. ADO.NET<br />

Konu 1. Veri Depolama<br />

2009 2010<br />

Günümüzde verileri saklamak için çeşitli teknikler kullanılır. Örneğin bir emlakçı emlak<br />

alımsatım bilgilerini dosya kâğıtları üzerinde depolayabilir. Bu yöntem veri arama ve<br />

listeleme işlemlerinin karmaşık hale gelmesine ve arama süresinin uzamasına sebep olur.<br />

Hatta daha büyük organizasyonlarda işlemlerin yavaşlamasına ve durmasına sebep olabilir.<br />

Artan ihtiyaçlar doğrultusunda veri depolamak ve depolanan veriye erişmek için çeşitli veri<br />

depolama yöntemleri geliştirilmiştir. Bu yöntemler şunlardır:<br />

Yapısal Olmayan: Bu yöntem ile depolanan veriler için belirli bir sınıflandırma ve<br />

sıralama yoktur. Veriler düz bir şekilde kaydedilir. Örneğin basit not dosyaları.<br />

Yapısal: Bu yöntem ile depolanan veriler çeşitli gruplara ayrılarak saklanır, fakat bu<br />

gruplar arasında bir altüst ayrımı yapılmaz. Örneğin virgülle ayrılmış dosyalar (csv),<br />

Excel belgeleri.<br />

Hiyerarşik: Hiyerarşik depolama yöntemini ağaç yapısına benzetebiliriz. Bu<br />

yöntemde veriler çeşitli kategorilere bölünerek depolanır. Her bir kategorinin içinde<br />

alt kategorilerde olabilir. Örneğin XML (eXtensible Markup Language) dosyaları.


ADO.NET 2009 2010<br />

İlişkisel Veritabanı: İlişkisel veritabanlarında veriler tablolar üzerinde depolanır.<br />

Tablo içindeki her satır kaydı, her sütun ise veriyi ifade eder. Örneğin SQL Server,<br />

Oracle, Access.<br />

Nesne Yönelimli Veritabanı: En gelişmiş veri depolama yöntemidir. Bu yöntemde<br />

veriler; ihtiyaca göre gruplandırılarak nesneler içinde saklanır. Örneğin Versant, AOL.<br />

ADO.NET bu depolama tekniklerinin tümünü destekler.<br />

Bağlantılı (Connected) Veri Ortamları<br />

Bağlantılı veri ortamları, uygulamaların veri kaynağına sürekli bağlı kaldığı ortamlardır. Bu<br />

ortamlarda veri alma ve değiştirme işlemleri uygulama ile veri kaynağı arasında bağlantı<br />

kurulduktan sonra gerçekleştirilir. Bağlantılı veri ortamlarında, veri işlemleri gerçekleştiği<br />

sürece bağlantı açık kalır.<br />

İlk bilgisayar üretiminden bugüne en çok tercih edilen yöntem bağlantılı veri ortamları<br />

olmuştur. Bağlantılı ortamlar veriye erişmek için birçok avantaj sağlar.<br />

Avantajları<br />

En güvenli veri ortamıdır.<br />

Veri kaynağına yapılan eş zamanlı erişimlerde, veri kaynağının kontrolünü<br />

kolaylaştırır.<br />

Dezavantajları<br />

Uygulama ile veri kaynağı arasında gerçekleşen bağlantıyı koruyabilmek için sabit bir<br />

ağ bağlantısının olması gerekir.<br />

Uygulama ile veri kaynağı arasındaki bağlantı ağ üzerinden gerçekleştiği için, ağ<br />

trafiğinin yoğunluğunu artırır.<br />

Örneğin araba üreten bir fabrikada yapılan üretim bilgilerinin diğer birimlere ulaştırılması<br />

ve bu kayıtların depolanması için eş zamanlı bir bağlantı kurulması gereklidir. Ya da bir<br />

emlak firmasında emlakçının, mülk ve menkul bilgilerini güncel tutabilmesi için sabit bir<br />

bağlantı kurması gereklidir.<br />

112


113<br />

ADO.NET<br />

Bağlantısız (Disconnected) Veri Ortamları<br />

2009 2010<br />

Bağlantısız veri ortamı, uygulamanın veri kaynağına sürekli bağlı kalmadığı veri ortamıdır.<br />

Uygulama ile veri kaynağı arasındaki bağlantı, veri alışverişi yapılırken açılır ve işlem<br />

bittikten sonra kapatılır. Bu veri ortamları çevrim dışı çalışmak için kullanılır.<br />

Teknolojinin ilerlemesi ve veri depolayan araçların taşınabilirliğinin sağlanması ile tüm<br />

dünyada çevrimdışı ortamlara duyulan ihtiyaç artmıştır. Laptop, Notebook ve Pocket PC<br />

gibi araçların yaygınlaşması ile günümüzde uygulamanın veri kaynağına bağlı olmadığı<br />

durumlarda bile veri girişi yapılabilir.<br />

Uygulamada sadece çevrimiçi veya çevrimdışı ortamlardan birini seçmek yeterli<br />

olmayabilir. Gelişmiş uygulamalarda her iki ortamın avantajlarını birleştiren bir çözüm<br />

tercih edilebilir.<br />

Avantajları<br />

Laptop, Notebook ve Pocket PC gibi araçlarla girilen veriler, istenilen zamanda veri<br />

ortamlarına aktarılabilir.<br />

Çevrimdışı ortamlar sayesinde, verilerin depolandığı uygulama üzerindeki yük<br />

hafifletilir. Bu durum performans artışını sağlar.<br />

Dezavantajları<br />

Bağlantısız veri ortamlarında, verilerin güncel kalmasına dikkat edilmelidir. Bu<br />

ortamlarda veri güncelleme işlemleri farklı zamanlarda gerçekleştirilebilir. Veri<br />

üzerinde yapılan bu değişimlerin diğer kullanıcılara gösterilebilmesi için çeşitli<br />

çözümler geliştirilmelidir.<br />

Bağlantısız veri ortamları içinde farklı kullanıcılar eş zamanlı güncelleme işlemleri<br />

gerçekleştirebilir. Bu durumda oluşacak veri çakışmalarının engellenmesi gerekir.<br />

Örneğin bir toptancı firmasında, firma çalışanları farklı konumdaki bayilerinin tüm<br />

siparişlerini bir el bilgisayarına kaydedebilir. Bu veriler el bilgisayarında geçici bir süre için<br />

depolanır. Bu süre çalışanların sahada kaldığı süredir. Süre sonunda veriler sunucu<br />

bilgisayara aktarılır.


Konu 2. ADO.NET‟e <strong>Giriş</strong><br />

ADO.NET Nedir?<br />

ADO.NET 2009 2010<br />

ADO (ActiveX Data Objects), farklı veri kaynaklarına hızlı ve güvenli erişim için Microsoft<br />

tarafından geliştirilen nesne modelidir. ADO.NET ise ADO teknolojisinin en yeni<br />

versiyonudur. ADO ile aynı programlama modelini kullanmamakla birlikte, ADO modelinden<br />

gelen pek çok çözüm yolunu da beraberinde getirir.<br />

Uygulama gelişim ihtiyacı arttıkça, yeni uygulamalarda Web uygulama modeline olan<br />

bağlılık gittikçe azalmaktadır. Şimdilerde ise ağ bağlantıları üzerinden veriyi rahatça<br />

aktarabilmek için XML kullanımına olan yönelim artmaktadır. İşte ADO.NET, XML ve<br />

ADO.NET„in .NET Framework içinde en uygun şekilde programlama ortamı oluşturmamızı<br />

sağlar.<br />

ADO.NET modelinin diğer veri erişim modellerine göre üstünlüklerini şöyle sıralayabiliriz:<br />

ADO.NET, veritabanından çekilen verilerin kopyasını XML formatını kullanarak belleğe<br />

aktarır.<br />

Uygulamanın kullanıcı sayısı arttıkça kaynak kullanımı da artar. Nkatmanlı (Ntier)<br />

uygulama yapısı kullanılarak, uygulamaların katmanlar üzerinden dağıtılması sağlanır.<br />

Böylece uygulamaların ölçeklenirliği artar.<br />

ADO.NET ile bağlantısız veri ortamları için uygulama geliştirilebilir. ADO.NET<br />

gelişmiş XML desteği verir.<br />

114


115<br />

ADO.NET<br />

ADO.NET Nesne Modeli<br />

ADO.NET nesne modeli iki ana bölümden oluşur.<br />

DataSet sınıfları<br />

.NET veri sağlayıcı sınıfları<br />

2009 2010<br />

DataSet sınıfları, çevrimdışı ortamlar için veri depolama ve yönetme işlemlerini sağlar.<br />

DataSet sınıfları veri kaynağından bağımsız her tür uygulama ve veritabanı için<br />

kullanılabilir. Özellikle İlişkisel Veritabanı, XML ve XML Web Servisleri üzerinden veri<br />

çekmek için kullanılır.<br />

.NET veri sağlayıcı sınıfları, farklı türdeki veritabanlarına bağlanmak için kullanılır. Bu<br />

sınıflar sayesinde istenilen türdeki veri kaynağına kolayca bağlantı kurulabilir, veri<br />

çekilebilir ve gerekli güncelleme işlemleri yapılabilir. ADO.NET nesne modeli, aşağıdaki<br />

veri sağlayıcı sınıflarını içerir:<br />

SQL Server .NET veri sağlayıcısı<br />

OLE DB .NET veri sağlayıcısı<br />

Diğer .NET veri sağlayıcıları<br />

Hangi veri kaynağı kullanılacaksa, sadece ona uygun veri sağlayıcı sınıfı kullanılmalıdır.<br />

ADO.NET Veri Sağlayıcıları


ADO.NET 2009 2010<br />

.NET veri sağlayıcıları, ADO.NET mimarisinin veritabanı ile uygulama (Windows, Web) veya<br />

XML Web Servisi arasında bağlantı kurmak için her tür alt yapıyı barındıran çekirdek<br />

bileşendir. Tüm veri sağlayıcıları, System.Data isim alanı içinde tanımlanmıştır.<br />

.NET Framework 1.0 sürümü ile birlikte SQL Server .NET ve OLE DB .NET veri sağlayıcı<br />

sınıfları gelmiştir.<br />

SQL Server .NET: SQL Server 7.0 ve SQL Server 2000 veritabanlarına hızlı bağlantı<br />

sağlar. SQL Server bağlantı nesneleri System.Data.SqlClient isim alanında bulunur.<br />

OLE DB .NET: SQL Server 6.5 ve daha öncesi sürümlerine, Oracle, Sybase, DB2/400<br />

ve Microsoft Access veritabanlarına bağlantı kurmayı sağlar. OLE DB bağlantı nesneleri<br />

System.Data.OleDb isim alanında bulunur.<br />

.NET Framework 1.1 sürümü ile birlikte SQL Server .NET ve OLE DB .NET veri sağlayıcılarına<br />

Oracle .NET ve ODBC .NET veri sağlayıcıları da eklenmiştir.<br />

ORACLE .NET: Oracle veritabanlarına bağlantı için tasarlanmış veri sağlayıcısıdır.<br />

Oracle bağlantı nesneleri System.Data.OracleClient isim alanında bulunur.<br />

System.Data.OracleClientisim alanını kullanmak için, projeye<br />

System.Data.OracleClient.dll referansı eklenmelidir.<br />

ODBC .NET: Diğer veritabanlarını destekleyen genel bir veri sağlayıcıdır. ODBC<br />

bağlantı nesneleri System.Data.ODBC isim alanında bulunur.<br />

Veritabanı Veri Sağlayıcısıİsim Alanı<br />

Sql Server 7.0 ve sonraki sürümler System.Data.SqlClient<br />

Sql Server 6.5 ve önceki sürümler System.Data.OleDb<br />

Microsoft Access veritabanı System.Data.OleDb<br />

Oracle Server System.Data.OracleClient<br />

Diğer veritabanları(Oracle,<br />

Sybase,DB2/400)<br />

System.Data.OleDb<br />

XxxConnection: Veri kaynağına bağlantı için kullanılan sınıftır.<br />

116


117<br />

ADO.NET<br />

2009 2010<br />

XxxCommand: Veri kaynağı üzerinde sorgu çalıştırmak için kullanılır. Veri<br />

kaynağından dönen kayıtlar<br />

XxxDataReader veya DataSet kullanılarak veri bağlantılı kontrollere aktarılır.<br />

XxxDataReader: Çevrimiçi bağlantılarda sadece veri okumak için kullanılan sınıftır.<br />

XxxDataAdapter: Çevrimdışı bağlantılarda kullanılan veri işleme nesnesidir.<br />

Xxx yerine seçilen veri sağlayıcısına göre SQL, OLEDB, Oracle ve ODBC eklerinden biri<br />

kullanılır.<br />

Konu 3. Bağlantı Oluşturmak<br />

Öncelikle grafiksel arayüzü kullanarak daha kolay şekilde yapacağız. Daha sonra bunu kod<br />

ile yapacağız.<br />

Menü Yardımı ile bağlantı oluşturmak<br />

1. Data menüsünden Add New Data Source menüsüne tıklayın:<br />

2. Data Source Configuration Wizard da Database icon‟u tıklayıp Next‟e tıklayın.<br />

3. New Connection butonuna tıklayın.


4. Microsoft Access Database File ı seçin ve OK deyin.<br />

5. DataBase‟i seçmek için Browse‟yi tıklayın ve dosyanızı seçin.<br />

6. Test Connection butonuna basın.<br />

ADO.NET 2009 2010<br />

7. OK dedikten sonra bağlantımızı test etmiş oluyoruz.<br />

8. (+) işaretine bastığımızda tamamlanmış bağlantının şekli aşağıdaki gibidir. Bağlantı<br />

sağlayıcımızın ismi Microsoft.Jet.OLEDB.4.0 şeklinde ve otomatik olarak gelmiştir.<br />

Daha sonra bunu kod ile yapacağız.<br />

118


119<br />

ADO.NET<br />

9. Next‟ tıklayın.<br />

10. Geçerli bağlantı cümlesini oluşturmak için Next‟e tıklayın.<br />

2009 2010


11. Tablonun içindeki listeleri görmek için (+)‟ya tıklayın.<br />

12. Seçmek istediğiniz sütunları checkbox‟ı işaretleyerek seçiniz.<br />

ADO.NET 2009 2010<br />

120


121<br />

ADO.NET<br />

13. Data Source Configuration Wizard‟ı kapatmak için Close tıklayın.<br />

14. Solution Explorer pencersindeki görünüt aşağıdaki gibi olacaktır.<br />

2009 2010<br />

Burada yeni bir dosya türü görüyoruz: StudentsDataSet.xsd. Bu dosya bir XML<br />

şemasıdır, tabloları, alanları, data tiplerini ve diğer elemanları içerir<br />

15. Solution Explorer‟dan dosyayı seçin ve görüntüsünü izleyin.<br />

16. Instructor field alanını tıklayın ve özellikler kısmını açın.


17. Bu uygulamada yeni bir pencere açılıyor. Data Sources window.<br />

Yeni DataSet ekleme için kullanılır.<br />

DataSet i düzenleme için kullanılır.<br />

DataSet e alan ekleme ve silme için kullanılır.<br />

DataSet i yenilemek için kullanılır.<br />

ADO.NET 2009 2010<br />

Yeni StudentsDataSet bağlantısı.<br />

Students.mdb veri tabanından instructors<br />

tablosun alanlar<br />

Seçili olan alanlar<br />

122


123<br />

ADO.NET<br />

Grafiksel arayüzü kullanarak bağlantı oluşturmak<br />

Uygulamaya veritabanınıeklemek.<br />

Proje ismi sağ tıklayın.<br />

Açılan menüden Add alt menüsündeki Add Existing Item komutunu verin.<br />

2009 2010<br />

Açılan pencere üzerindeki Look in açılan kutusundan CD Sürücüsü\Veritabanı klasörünü<br />

seçin.<br />

Açılan Add Existing Item penceresinden *.mdb veritabanını seçerek Open düğmesini<br />

tıklayın.<br />

Şimdi ise bu işlemleri kod ile gösterelim.<br />

Parametre Tanımı<br />

Provider Sadece OleDbConnection nesnelerinde kullanılır. Bağlantı<br />

sağlayıcısının ismini tutar. Sağlayıcı isimleri diğer Tablo „da<br />

belirtilmiştir.<br />

ConnectionTimeout<br />

veya<br />

ConnectTimeout<br />

Initial Catalog Veritabanı adı<br />

Veritabanı bağlantı için beklenmesi gereken maksimum saniye<br />

sayısıdır. Varsayılan değer 15 saniyedir.<br />

Data Source SQL Server adı, veya MS Access veritabanı için dosya<br />

adı<br />

Password (pwd) SQL Server login (giriş) parolası<br />

User Id (uid) SQL Server login (giriş) adı<br />

Integrated Security<br />

veya Trusted<br />

Connection<br />

SQL sunucusuna Windows hesabı ile bağlantı yapıla-<br />

cağını belirtir. True, Falseveya SSPI girilebilir.<br />

SSPI, Trueile eş anlamlıdır ve bu durumda Windows<br />

hesabı kullanılır.<br />

Persist Security Info Varsayılan değeri False olur. Bu durumda güvenlik<br />

için hassas bilgileri geri döndürmez. True olduğunda<br />

ise güvenlik risk taşımaya başlar.


ADO.NET 2009 2010<br />

Provider parametresinin Access, SQL Server ve Oracle veritabanlarına göre alacağı değerler<br />

aşağıdaki tabloda gösterilmiştir.<br />

Tür Açıklama<br />

SQLOLEDB SQL Server için Microsoft OLE DB Provider<br />

MSDAORA ORACLE için Microsoft OLE DB Provider<br />

Microsoft.Jet.OLEDB.4.0 Microsoft Jet için OLE DB Provider<br />

Bağlantılı (Connected) Veri Ortamları<br />

XXXConnection<br />

Toolbox ı kullanarak<br />

ToolBox üzerinden Connection nesnesi oluşturmak için belirtilen adımları takip edin.<br />

1. ToolBox içinden Data paneli seçilir.<br />

2 Data panelindeki OleDbConnection veya SqlConnection nesnesi form üzerine sürüklenir.<br />

Eğer bu nesneler Data panelinde yok ise panelin üstüne sağ tuş tıklanıp “Choose Items”<br />

seçeneği seçilir. Gelen menüde Net Framework Components‟lerin içinden OleDbConnection<br />

veya SqlConnection nesnesi işaretlenerek OK butonuna basılır.<br />

Bağlantı oluşturmak için Connection nesnesinin DataSource özelliğinden, veri tabanını<br />

seçiniz.<br />

Kod kullanarak<br />

SQL Server veritabanı için bağlantı cümlesi<br />

Örnek: SQL Server veritabanı için bağlantı cümlesi oluşturulmuştur. London isimli<br />

sunucuda bulunan Northwind veritabanına, sa kullanıcı ismi ve 2389 parolası ile<br />

bağlanılıyor. Eğer veritabanı sunucusundan 60 saniye içinde cevap alınamazsa bağlantı<br />

iptal ediliyor.<br />

Dim cnNorthwind as New System.Data.SqlClient.SqlConnection()<br />

cnNorthwind.ConnectionString = _<br />

124


125<br />

ADO.NET<br />

"User ID=sa;" & _<br />

"Password=2389;" & _<br />

"Initial Catalog=Northwind;" & _<br />

"Data Source=London;" & _<br />

"Connection TimeOut=60;"<br />

Microsoft Access veritabanı için bağlantı cümlesi<br />

2009 2010<br />

Örnek: Microsoft Access veritabanı için bağlantı cümlesi oluşturulmuştur. OleDb<br />

bağlantısı yapıldığı için Provider özelliğinin Microsoft.Jet. OleDB.4.0 olarak belirtilmesi<br />

gerekir. Bağlantının yapılacağı Northwind veritabanının local makinede C:\Samples<br />

dizini altında bulunduğu belirtiliyor.<br />

Dim cnNorthwind as New System.Data.OleDb.OleDbConnection()<br />

cnNorthwind.ConnectionString = _<br />

"Provider=Microsoft.Jet.OLEDB.4.0;" & _<br />

"Data Source=C:\Samples\Northwind.mdb;"<br />

Connection Özellikleri<br />

Parametre Tanımı<br />

ConnectionTimeout VeritabanI bağlantI için beklenmesi gereken maksi-mum saniye<br />

sayIsIdIr. VarsayIlan değer 15 saniyedir.<br />

ConnectionString Veri kaynağına bağlanmak için oluşturulan bağlantı cümlesi<br />

Data Source SQL Server adI, veya MS Access veritabanI için dosya adI<br />

Provider Bağlantı sağlayıcısının ismini tutar.


Bağlantıyı Açmak ve Kapatmak<br />

ADO.NET 2009 2010<br />

Bağlantı cüml esini oluşturduktan sonra, bağlantıyı açmak ve kapatmak için Connection<br />

sınıfının iki önemli metodu kullanılır.<br />

Open<br />

Close<br />

Open metodu, bağlantı cümlesinde belirtilen veri kaynağını açmak için kullanılır.<br />

Close metodu, açılan bağlantıyı kapatmak için kullanılır. Close metodu ile kullanılmayan<br />

bağlantıları kapatmak, kaynak tüketimini azaltır. Open metodu, uygulama ile veri kaynağı<br />

arasındaki bağlantıyı, bağlantı cümlesinin Timeout parametresinde belirtilen süre içinde<br />

kurmaya çalışır. Eğer belirtilen süre içinde bağlantı gerçekleşmiyorsa, uygulama hata<br />

üretir. Bu süre için herhangi bir değer belirtilmemişse, varsayılan değer 15 saniyedir.<br />

Daha önceden açılmış bir bağlantı; kapatılmadan tekrar açılmaya çalışılırsa, uygulama yine<br />

hata üretir. Kapatılan bağlantının yeniden kapatılması hataya yol açmaz.<br />

cnNorthwind.ConnectionString = _<br />

"Provider=Microsoft.Jet.OLEDB.4.0;" & _<br />

"Data Source=C:\Samples\Northwind.mdb;"<br />

Bağlantıyı açmak<br />

cnNorthwind.Open()<br />

Veritabanı işlemleri bu arada gerçekleştirillir.<br />

Bağlantıyı kapatmak<br />

cnNorthwind.Close()<br />

Open metodu ile veri kaynağı açılırken, çeşitli çalışma zamanı hatalarından dolayı bağlantı<br />

açılmayabilir ve uygulama hata üretebilir. Bu çalışma zamanı<br />

126


127<br />

ADO.NET<br />

hataları;<br />

Sunucunun bulunamamasından,<br />

Veritabanının bulunamamasından,<br />

Hatalı kullanıcı adı veya parola girilmesinden,<br />

Donanım veya yazılımdan kaynaklanabilir.<br />

Bağlantı Durumlarını Kontrol Etmek<br />

2009 2010<br />

Bağlantı sınıfının durumu hakkında bilgi almak için, bağlantı sınıfının State özelliği<br />

kullanılır.State özelliğinin alabileceği değerler Tablo „da belirtilmiştir.<br />

İsim Açıklama Değeri<br />

Broken Yalnızca, açık bir bağlantının kopup tekrar bağlanıldığı<br />

durum<br />

Closed Bağlantı kapalı 0<br />

Connecting Veri kaynağına bağlanma aşamasında 2<br />

Executing Bağlantı üzerinden bir komutu çalıştırılıyor 4<br />

Fetching Bağlantı üzerinden veri çekiliyor 8<br />

Open Bağlantı açık 1<br />

16


XXXCommand<br />

ADO.NET 2009 2010<br />

Command, veritabanı üzerinde Stored Procedure (SaklıYordam) ve sorgu çalıştırmak için<br />

kullanılır. Command nesneleri ile veritabanı tablolarında; sorgu, ekleme, silme ve<br />

güncelleme işlemleri yapılabilir.<br />

Nesne Veri Sağlayıcıları<br />

System.Data.SqlClient.SqlCommand SQL Server .NET Veri Sağlayıcısı<br />

System.Data.OleDb.OleDbCommand OLE DB .NET Veri Sağlayıcısı<br />

System.Data.OleDb.ODBCCommand ODBC .NET Veri Sağlayıcısı<br />

Veritabanı üzerinde Stored Procedure ve sorgu çalıştırmak için Command nesnelerinin<br />

belirli özelliklerini kullanmak gerekir.<br />

Toolbox ı kullanarak<br />

ToolBox üzerinden Command nesnesi oluşturmak için belirtilen adımları takip edin.<br />

1 Veri kaynağına bağlantıkurmak için Connection tanımlanır.<br />

2 ToolBox içinden Data paneli seçilir.<br />

3 Data panelindeki OleDbCommand veya SqlCommand nesnesi form üzerine<br />

sürüklenir.<br />

Kod kullanarak<br />

Dim sql As String = "SELECT StokMiktari FROM Urun " & _<br />

"WHERE UrunID = @UrunID"<br />

Dim cmUrun As New SqlCommand(sql, cnAlisveris)<br />

Dim prmID As SqlParameter = cmUrun.Parameters.Add( _<br />

New SqlParameter("@UrunID", SqlDbType.Int, 4))<br />

cmUrun.Parameters("@UrunID").Value = 42<br />

128


129<br />

ADO.NET<br />

cnAlisveris.Open()<br />

Command özellikleri<br />

Özellik Açıklama<br />

Name Command nesnesinin kod içinde kullanılan ismidir.<br />

Connection Commandnesnesinin hangi Connection üzerinde çalışacağını<br />

belirler. Bu özellik ile yeni Connection oluşturabilir veya varolan<br />

Connection nesnesine bağlanılabilir.<br />

CommandType Command nesnesinin tipini belirler. Çalıştırılacak Command„a<br />

göre Text, StoredProcedureve TableDirect seçilir.<br />

Text: SQL Cümlesi<br />

StoredProcedure: Kayıtlı Yordam<br />

TableDirect: Tablo kayıtları<br />

TableDirectsadece OleDbCommand nesnesi tarafından<br />

kullanılır.<br />

CommandText Commandnesnesinin çalıştırılacak komutudur. Seçilen<br />

CommandType„a göre CommandText belirlenir.<br />

Text: Çalıştırılacak SQL cümlesi.<br />

StoredProcedure: Çalıştırılacak Stored Procedure adı.<br />

TableDirect: Veritabanındaki tablo adı<br />

Parameters Commandnesnesinin CommandTextkomutuna dışardan değer<br />

almak veya komuttan geriye değer döndürmek için kullanılır.<br />

Parameters özelliği Collection olduğu için bir veya birden çok<br />

değer alabilir veya gönderebilir.<br />

2009 2010


Command metotları<br />

Command Metodu Açıklama<br />

ADO.NET 2009 2010<br />

ExecuteScalar Çalıştırılan Command nesnesinden geriye tek değer döndürmek<br />

için kullanılır.<br />

ExecuteReader Çalıştırılan Command nesnesinden geriye kayıt kümesi döndürmek<br />

için kullanılır.<br />

ExecuteNonQuery Command nesnesi üzerinde veri güncelleme, değiştirme ve<br />

silme işlemleri yapmak için kullanılır. Bu işlemin sonucunda<br />

etkilenen kayıt sayısı geriye döndürür.<br />

ExecuteXmlReader Çalıştırılan Command nesnesinden geriye XML döndürmek için<br />

kullanılır. Sadece SQL Server 7.0 ve sonraki versiyonları için<br />

kullanılır.<br />

Dispose Command nesnesini kapamak amacıyla kullanılır. Böyle bir<br />

durumda tekrar Connection tanımlanmalıdır.<br />

Parametre Kullanmak<br />

Stored Procedure ve SQL cümleleri parametre alabilir veya gönderebilir. Ayrıca Stored<br />

Procedure geriye tek değer bile döndürebilir. Stored Procedure ve SQL cümlelerinin<br />

130


131<br />

ADO.NET<br />

2009 2010<br />

parametre değerlerini saklamak için, XXXCommand nesnesinin Parameters özelliği<br />

kullanılır. Aynı zamanda bu özellik XXXParameters nesnesinin koleksiyonudur.<br />

Command nesnesi çalıştırılmadan önce, komuttaki her giriş parametresi için bir değer<br />

girilmelidir. Ayrıca Command nesnesi çalıştırıldıktan sonra, sonuç parametrelerinin<br />

değerleri geriye döndürülebilir.<br />

Commandnesnesine parametre eklemek için aşağıdaki yöntemler kullanılır.<br />

Properties penceresi kullanılarak Command nesnesinin Parameters özelliğine tasarım<br />

aşamasında parametreler eklenir.<br />

XXXParameter nesnesini kullanarak, parametre eklemek için aşağıdaki adım-lar takip edilir.<br />

1 Yeni bir OleDbParameterveya SqlParameternesnesi oluşturulur.<br />

2 Eklenen Parameter nesnesinin özellikleri göre ayarlanır.<br />

3. XxxParameter nesnelerini Command nesnesine eklemek için, Command nesnesinin<br />

Parameters koleksiyonunu içindeki Add metodu kullanılır. Eğer bu komut sonuç döndürecek<br />

bir Stored Procedure çağırıyorsa, herhangi bir parametre eklemeden önce<br />

ParameterDirection. ReturnValue parametresini eklenmelidir. Parametrelerin eklenme<br />

sırasıönemli değildir.<br />

OleDbCommand_Name.Parameters.Add (parametername as string, oledbtype as<br />

oledbtype, size as integer)<br />

Oledbcommand_name.Parameters. .AddWithValue(parametername as string, value as<br />

Object)<br />

Parametrelerin özellikleri:<br />

Özellik Açıklama<br />

ParameterName Parametrenin ismi, @Adgibi<br />

DbType,SqlDbType,<br />

OleDbType<br />

Parametrenin veri türü. Kullanılan veritabanına göre<br />

SqlDbTypeveya OleDbType enumeratörlerinden seçilir.<br />

Size Parametredeki verinin byte olarak maksimum boyutu.


Direction Parametrenin türü.<br />

XXXDataReader<br />

ADO.NET 2009 2010<br />

ParameterDirectiondeğerlerinden biri ile belirtilir. Bu<br />

özelliğin alabileceği değerler:<br />

ParameterDirection.Input (varsayı-<br />

lan değer)<br />

ParameterDirection.InputOutput<br />

ParameterDirection.Output<br />

ParameterDirection.ReturnValue<br />

DataReader dönen kayıtlar üzerinde işlem yapmayı sağlayan metot ve özelliklere<br />

sahiptir. DataReader nesnesinin bu özellik ve metotları aşağıda işlemleri<br />

yapar.<br />

Kayıt kümesi içindeki kayıtları tek tek okur.<br />

Kaydın belirli bir kolonunu veya tüm kolonlarını okur.<br />

Kolonların içinde değer olup olmadığını kontrol eder.<br />

Kolonların şema bilgilerini okur. (ColumnName, ColumnOrdinal,ColumnSize,<br />

NumericPrecision, NumericScale, Datatype,ProviderType, Islong, AllowDBNull)<br />

Aşağıdaki şekilde sadece kod ile DataReader nesnesi tanımlanır<br />

Dim DataReader_Adı As OleDbDataReader<br />

132


133<br />

ADO.NET<br />

DataReader metotları<br />

Metot Açıklama<br />

Close DataReader nesnesini kapatılır ve hafızadan kaldırır.<br />

2009 2010<br />

NextResult Komut metninde birden fazla SELECT ifade varsa, sonuçlar bu<br />

metot kullanılarak farklı veri kümeleri gibi alınabilir.<br />

Read DataReader nesnesinde okunacak kayıt olduğu sürece okuma<br />

yapar. Kayıt varsa True, yoksa False değeri geri döndürür.<br />

Command ile Sorgu Oluşturmak<br />

Command ile veritabanı yapısında değişiklik yapılabilir (veri almak, eklemek, değiştirmek<br />

ve silmek. OleDbCommand veya SqlCommandnesnesi ile bu tür işlemlerin yapılabilmesi<br />

için, ExecuteNonQuerymetodu kullanılır.<br />

ExecuteNonQuery metodu ile Select hariç SQL (Structured Query Language) ve TSQL<br />

(Transact Structured Query Language) komutları kullanılır. SQL "Structured Query<br />

Language" (YapılandırılmışSorgulama Dili) veritabanı sorgu dilidir. SQL ile veritabanına<br />

kayıt ekleme, silme, varolan kaydı düzenleme ve kayıt sorgulama işlemleri yapılabilir. SQL<br />

standart bir veritabanı sorgu dilidir ve Oracle, db2, Sybase, Informix, Microsoft SQL Server,<br />

MS Access gibi veritabanı yönetim sistemlerinin temelini oluşturur. En sık kullanılan SQL<br />

komutları SELECT, INSERT, UPDATEve DELETE komutlarıdır.<br />

DML Komutu Açıklama<br />

SELECT Veri seçmek<br />

DELETE Veri silmek<br />

UPDATE Veri güncellemek<br />

INSERT Veri girmek<br />

SELECT ifadesi<br />

Veritabanından bilgi seçmek için kullanılır.<br />

Genel ifade:


ADO.NET 2009 2010<br />

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi WHERE Koşul<br />

ORDER BY Sıralanacak_sütun [ASC/DESC]<br />

Temel SELECT ifadesi:<br />

SELECT * FROM Tablo_ismi<br />

(*) ile tüm alanları seçer.<br />

Belirli Sütunların seçilmesi:<br />

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi<br />

Koşullu olarak sütunların seçilmesi<br />

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi WHERE Koşul<br />

Satırları sıralamak için:<br />

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi ORDER BY<br />

Sıralanacak_sütun [ASC/DESC]<br />

INSERT ifadesi:<br />

Veritabanına yeni kayıt eklemek için kullanılır.<br />

INSERT INTO Tabo_ismi (Sütun_ismi1, Sütun_ismi 2,…) VALUES (Deger1, Deger2,…)<br />

UPDATE ifadesi:<br />

Veritabanına kayıt değiştirmek için kullanılır.<br />

UPDATE Tabo_ismi SET (Sütun_ismi 1=Deger1, Sütun2= Deger2,…) WHERE koşul<br />

DELETE ifadesi:<br />

Veritabanından kayıt silmek için kullanılır.<br />

DELETE FROM Tabo_ismi WHERE Koşul<br />

Command ile Kayıt Döndüren Sorgular Çalıştırmak<br />

DataReader kullanarak kayıt çekmek için aşağıdaki adımları takip edin.<br />

1 Bağlanılacak veritabanına göre Connection nesnesi eklenir.<br />

2 Bağlanılacak veritabanına göre OleDbCommand veya SqlCommand nesnesi<br />

eklenir ve gerekli özellikleri ayarlanır.<br />

3 Veritabanı bağlantısı açılır.<br />

134


135<br />

ADO.NET<br />

2009 2010<br />

4 DataReader tanımlanır. Command nesnesinin ExecuteReader metodu ile çağrılan<br />

kayıtlar DataReadernesnesine atanır.<br />

5 DataReader nesnesinin Read metodu False oluncaya kadar, kayıtlar döngü ile<br />

okunur ve form kontrollerine aktarılır.<br />

6 Command nesnesi kapatılır (dispose)<br />

7 DataReader kapatılır.<br />

8 Veri tabanı bağlantısı kapatılır.<br />

NOT: Eğer kayıt döndürmek istemiyorsak, Datareader nesnesini tanımlamya, Read ve<br />

Close metodlarını çalıştırmaya gerek yoktur.


Data ile Bağlantı Yapınız (Menü ile).<br />

OleDBConnection nesnesi tanımlayınız (Toolbar<br />

veya kod ile).<br />

OleDBConnection nesnesinin ConnectionString<br />

özelliği ile veritabanına bağlantı yapınız (Properties<br />

penceresi veya kod ile).<br />

OleDBCommand nesnesi tanımlayınız (Toolbar<br />

veya kod ile).<br />

OleDBCommand nesnesinin Connection özelliğini<br />

OleDBConnection nesnesi olarak belirleyiniz<br />

(Toolbar veya Kod ile.)<br />

OleDBConnection nesnesinin Connection özelliğini<br />

Open olarak belirleyiniz (Herbir prosedür için ayrı<br />

ayrı yapılıcak ise kod ile).<br />

OleDbCommand nesnesinin ConnectionString<br />

Özelliğini Belirle!<br />

ADO.NET 2009 2010<br />

136


137<br />

ADO.NET<br />

SELECT-Veri seçmek<br />

• SELECT Sütun_ismi1,<br />

Sütun_ismi2, Sütun_ismi3,…<br />

FROM Tablo_ismi WHERE<br />

Koşul ORDER BY<br />

Sıralanacak_sütun<br />

[ASC/DESC]<br />

DELETE-Veri silmek<br />

• DELETE FROM Tabo_ismi<br />

WHERE Koşul<br />

UPDATE-Veri<br />

güncellemek<br />

• UPDATE Tabo_ismi SET<br />

(Sütun_ismi 1=Deger1,<br />

Sütun2= Deger2,…) WHERE<br />

koşul<br />

2009 2010<br />

Kayıt Döndürücek misin!<br />

Evet<br />

OleDbDataReader nesnesi<br />

tanımla! (Kod ile)<br />

Command nesnesinin ExecuteReader<br />

metodu ile çağrılan kayıtlar DataReader<br />

nesnesine ata<br />

DataReader nesnesinin Read metodu<br />

False oluncaya kadar, kayıtlar döngü ile<br />

okunur ve form kontrollerine aktarılır.<br />

DataReader kapatılır.<br />

Command nesnesi Dispose ile son<br />

bulur.<br />

Connection kapatılır.<br />

Hayır<br />

INSERT-Veri girmek<br />

• INSERT INTO Tabo_ismi<br />

(Sütun_ismi1, Sütun_ismi<br />

2,…) VALUES (Deger1,<br />

Deger2,…)<br />

Command Nesnesi Dispose<br />

ile son bulur.<br />

Connection kapatılır.


ADO.NET 2009 2010<br />

Örnek 1: Öğrenci not tablosu, öğrenci no bulma, öğrenci kayıt ekleme, silme,<br />

güncelleme<br />

Örnek 2: İş başvuru formu, iş başvuru kayıt ekle, sil, güncelle, görüntüle.<br />

Bağlantısız (Disconnected) Veri Ortamları<br />

Bağlantısız veri ortamları, uygulamaların veritabanından bağımsız çalıştığı ortamlardır.<br />

Veritabanı sunucusunun uzak olması, veri işlemlerinin uzun sürmesi ve mobil çalışma<br />

ihtiyacı, bağlantısız veri ortamlarına olan ihtiyacı artırmıştır.<br />

Bağlantısız veritabanı mimarisini öğrenecek,<br />

DataAdapter nesnesinin yapısını tanıyacak,<br />

DataSet nesne modelini öğrenecek,<br />

DataTable nesne modelini öğrenecek,<br />

Veri arama ve sıralama işlemlerini öğreneceksiniz.<br />

Bağlantısız veri ortamı, uygulamanın veri kaynağına sürekli bağlı kalmadığı veri ortamıdır.<br />

Bu modelde, veri kaynağının istenen bölümü çekilerek belleğe alınır. Veri üzerinde gerekli<br />

işlemler gerçekleştirildikten sonra, veri kaynağına aktarılarak güncelleme yapılır.<br />

138


139<br />

ADO.NET<br />

Sınıf Açıklama<br />

2009 2010<br />

XXXDataAdapter Connection, Command ve DataReader sınıflarını kullanarak,<br />

verilerin DataSet„e doldurulmasını ve DataSet„te yapılan<br />

değişikliklerin veritabanına kaydedilmesini sağlar.<br />

Örneğin SqlDataAdaptersınıfı SQL Server ile DataSetarasındaki<br />

etkileşimi sağlar.<br />

XXXConnection Bağlantı açmak ve kapatmak için kullanılan nesnedir.<br />

Örneğin SqlConnectionSQL Server„a bağlantı sağlar.<br />

XXXCommand Veritabanı üzerinde Stored Procedure (Saklı Yordam) veya SQL<br />

cümleleri çalıştırmak için kullanılan nesnedir.<br />

Örneğin SqlCommandSQL Server üzerinde Stored Procedure<br />

veya SQL cümleleri çalıştırmayı sağlar.<br />

XXXDataReader Veritabanından sadece okunur ve ileri hareketli kayıtlar<br />

çekmek için kullanılır. Örneğin SqlDataReaderile SQL Server<br />

üzerinden kayıtlar okunur. Kayıtlar SqlCommandnesnesinin<br />

ExecuteReader metodu ile DataReader„a aktarılır.<br />

DataAdapter Oluşturmak<br />

DataAdapter, data kaynağı ile DataSet arasında duran bir mekanızmadır. SQLDataAdapter<br />

ve OleDbDataAdapter olmak üzere 2 çeşittir. DataAdapter, seçme, güncelleme, silme ve<br />

kayıt ekleme işlemlerini yapar. Bu yöntemler SelectCommand, UpdateCommand,<br />

InsertCommand ve DeleteCommand özellikleri ile sağlanır.


XxxDataAdapter oluşturmak için aşağıdaki adımları takip ediniz:<br />

ADO.NET 2009 2010<br />

Formunuzun Toolbox penceresinde, Data panelinden XxxDataAdapter bileşeninin<br />

formunuza sürükleyin.<br />

140


141<br />

ADO.NET<br />

2009 2010<br />

Karşımıza aşağıdaki gibi DataAdapter Configuration Wizard penceresi çıkıcaktır.<br />

Burada database ile bağlantı yapılacaktır. Eğer daha önceden bir bağlantı yapılmış ise<br />

dropdownlist‟de yapılan bağlantıyı görürsünüz aksi durumda boştur ve New<br />

Connection butonuna basarak yeni bağlantı oluşturmak zorundasınız.<br />

Data bağlantısını yaptıktan sonra Sorgu tipini belirleyeceğimiz ekran gelicektir.<br />

Burada SQL komutunu veya yeni (varolan) bir prosedürü kullanabilirsiniz. İlk önce<br />

kullanmak için SQL konutunu belirlemelisiniz. Buna göre aşağıdaki pencereyle<br />

karşılaşırsınız.<br />

Database deki kayıtları çağırmak için SELECT komutunu kullanmamız gerekmektedir.<br />

(Bkz. SELECT ifadesi). Ayrıca direk yazmak yerine “Query Builder” butonu bize<br />

yardımız olucaktır. Öncelikle Advance Options butonuna basalım.


ADO.NET 2009 2010<br />

Seçtiğimiz pencerede 3 seçenek vardır. Birincisi, Insert, Update ve Delete SQL<br />

ifadeleriniz SELECT konutu ile oluşturulacağını söyler. Eğer veriler üzerinde silme,<br />

kaydetme veya güncelleme işlemleri yapıcaksak bu seçeneğin tıklı olması<br />

gerekmektedir aksi durumda seçimi kaldırmalısınız. 2. Seçenek olan Use optimistic<br />

concurrency seçeneği, UPDATE veDELETE konutlarını gerçekleştir ve orijinal kayıtlara<br />

ulaşıldığında hiçbir kolonun değişmemesini sağlar ve aynı zamanda birden fazla<br />

kullanıcının değişiklik yapmasını engeller. Son seçenek olan Refresh Dataset ise<br />

UPDATE ve DELETE konutlarından sonra SELECT ifadesini çağırarak, DataSet‟inizi<br />

günceller.<br />

OK butonuna basarak bir önceki ekrana geri dönelim ve şimdi Query Builder butonuna<br />

basalım.<br />

142


143<br />

ADO.NET<br />

2009 2010<br />

İstediğiniz tabloyu seçerek, burada görüntülenmesini istediğiniz kolonları belirleyin.<br />

Seçmiş olduğumuz kolonlar SQL komutu ile aşağıdaki ekranda görünür.


Finish butonu ile bağlantı işlemini yapmış oluruz.<br />

ADO.NET 2009 2010<br />

Ve formumuza XxxDataAdapter1 nesnesi ile birlikte XxxConnection1 nesnesi de gelir.<br />

144


145<br />

ADO.NET<br />

Kod Kullanarak<br />

2009 2010<br />

Dim conn As New OleDbConnection("provider = “ & _ “microsoft.jet.oledb.4.0; data<br />

source=../stok.mdb")<br />

Dim da As New OleDbDataAdapter("select * from “ & _<br />

“kitaplar", conn)<br />

DataSet ve DataTable Oluşturmak<br />

Veri kaynağından DataAdapter ile çekilen verilerin çekirdek belleğe atılan kopyası DataSet<br />

içinde saklanır. DataSet ile bu veriler üzerinde gerekli düzenlemeler yapıldıktan sonra,<br />

veriler aynı DataAdapter ile veritabanına aktarılır.<br />

DataSet„in temel özellikleri aşağıda listelenmiştir:<br />

Veri sağlayıcı türünden bağımsız çalışır: DataSet tüm veri sağlayıcılarıile<br />

kullanılabilir. Tamamen türden bağımsız çalışır.<br />

Sürekli çevrimdışıdır: DataAdapter nesnesi ile veriler DataSet içine aktarılır ve<br />

bağlantı kapatılır. Bağlantı kesildikten sonra yapılan tüm değişiklikler DataSet içine<br />

kaydedilir. Bu durum uygulamanın çevrimdışıçalışmasınısağlar.<br />

Değişikliklerin kaydını tutar: DataSet içinde yapılan tüm değişiklikler, DataAdapte<br />

rnesnesi ile veri kaynağına aktarılır.<br />

Birden fazla tablo bulundurabilir: İlişkisel veritabanlarında olduğu gibi, birden fazla<br />

tablo ve ilişkileri hafızada tutmanın tek yolu DataSet kullanmaktır.


ADO.NET 2009 2010<br />

DataSet, sanal bir veritabanı yapısını temsil eder. DataTable nesnelerinden oluşur. Bu<br />

tablolar arasında ilişkiler tanımlanabilir. DataSet„i oluşturan nesneler, DataTable,<br />

DataColumn, DataRow ve DataRelation nesneleridir.<br />

DataTable: Veritabanı tablolarını temsil eder. DataColumn, DataRow nesnelerinden<br />

oluşur. Primary Key alanı tanımlanabilir.<br />

DataColumn: DataTable nesnelerini oluşturmak için gereken kolonlarıtemsil eder.<br />

DataRow: DataTablenesneleri için veri satırlarını temsil eder.<br />

DataRelationship: Tablolar arasındaki ilişkileri temsil eder.<br />

DataView: DataTable nesneleri üzerinde filtreleme, veri güncelleme leri işlemleri<br />

yapmak için kullanılır.<br />

Dataset oluşturmak için aşağıdaki adımları takip ediniz:<br />

XxxDataAdapter1 kontrolünü üzerine sağ tuş tıklayıp Generate Dataset ifadesini seçin.<br />

146


147<br />

ADO.NET<br />

2009 2010<br />

Buradaki Configure Data Adapter seçeneği, bağlantınızı yeniden oluşturmanızı ve<br />

Preview Data seçeneği ise verilerinizi göstermeyi sağlar. Eğer bunu seçerseniz<br />

aşağıdaki gibi bir ekran ile karşılaşırsınız.<br />

Generate DataSet seçeneğini seçtikten sonra yeni bir CustomerDataSet oluşturalım,<br />

adını belirleyip, Add this dataset to designer seçeneğini işaretleyin. Bunu<br />

işaretlememiz durumunda formun yüklenmesi ile datanız prejenize yüklenicektir.


ADO.NET 2009 2010<br />

Ok butonuna bastığımızda formumuzda, CustomerDataSet.xsd XML şeması ile<br />

bağlantılı olan CustomerDataSet1 kontrolü oluşucaktır.<br />

Böylece formumuzda aşağıdaki gibi 3 bileşen bulunacaktır.<br />

Kod Kullanarak<br />

Örnekte ds isminde yeni bir DataSet, New anahtar sözcüğü tanımlanmaktadır. Tanımlamada<br />

DataSet„e parametre olarak girilen YeniDataSet değeri, DataSet nesnesinin DataSetName<br />

argümanıdır. Eğer hiçbir isim verilmezse varsayılan olarak NewDataSet ismi verilir.<br />

Dim ds As New DataSet(“YeniDataSet”)<br />

DataSet, diğer bir DataSet nesnesinden kopyalanarak oluşturulabilir. DataSet kopyalamak<br />

için iki yöntem kullanılır. Birinci yöntem Copy metodu ile diğer bir DataSet nesnesinin, veri<br />

ve ilişkileri (şema bilgileri) kopyalanarak yeni bir DataSet oluşturmaktır. İkinci yöntem<br />

Clone metodu ile diğer bir DataSet nesnesinin şema bilgilerini kopyalanarak, yeni bir<br />

DataSet oluşturmaktır. Bu yöntem şablon kopyalamak için kullanılır.<br />

Örnekte ds ismindeki DataSet nesnesinin tüm tablo, ilişki ve verileri dsCopyismindeki<br />

DatasSetnesnesinin içine aktarılmıştır.<br />

Dim dsCopy As DataSet dsCopy = ds.Copy()<br />

Örnekte ds ismindeki DataSet nesnesinin tüm tablo ve ilişkileri, dsClone ismindeki<br />

DataSetnesnesinin içine aktarılmıştır.<br />

Dim dsClone As DataSet dsClone = ds.Clone()<br />

148


149<br />

ADO.NET<br />

2009 2010<br />

Örnekte Stok veritabanını içindeki tüm kitaplar, DataAdapter nesnesi ile DataSet„e<br />

aktarılmıştır.<br />

Dim conn As New OleDbConnection("provider = “ & _ “microsoft.jet.oledb.4.0; data<br />

source=../stok.mdb")<br />

Dim da As New OleDbDataAdapter("select * from “ & _<br />

“kitaplar", conn)<br />

Dim ds As New DataSet("set")<br />

da.Fill(ds, "kitaplar") DataGrid1.DataSource = ds.Tables("kitaplar")<br />

DataSet sınıfının Tables koleksiyonu ile DataSet içine bir veya birden çok DataTable<br />

eklenebilir. DataSet sınıfının Relations koleksiyonu ile DataSet içine bir veya birden çok<br />

DataRelation eklenebilir.<br />

Örnekte dtKitaplarisminde yeni bir DataTableoluşturulmaktadır.<br />

Dim dtKitaplar As New DataTable("kitaplar")<br />

Oluşturulan tabloyu DataSet içine eklemek için DataSet nesnesinin Tables koleksiyonu<br />

kullanılır.<br />

Ds.Tables.Add(dtKitaplar)<br />

DataTable nesnesinin içine kolon eklenebilir. Örnekte dtKitaplar ismindeki<br />

DataTablenesnesinin içine, yeniId isminde yeni bir kolon eklenmektedir. Yeni kolon<br />

eklemek için, DataTablenesnesinin Columnskoleksiyonu kullanılır.<br />

Dim colKitapId As DataColumn = dtKitaplar.Columns.Add("yeniId",<br />

GetType(System.Int32))<br />

DataAdapter ile KayıtlarıDataset’e Doldurmak


ADO.NET 2009 2010<br />

DataAdapter sınıfı, DataSet ile veri kaynağı arasında köprü oluşturur. Veri kaynağına<br />

yapılan bağlantı ile verilerin DataSet nesnesine aktarılmasını sağlar. DataAdapter ayrıca<br />

DataSet üzerinde yapılan değişikliklerin veri kaynağına aktarılmasını sağlar.<br />

XxxDbDataAdapter ile çekilen veriler Dataset nesnesine fill komutu ile aktarılır.<br />

XxxDataAdapter_Name.fill (DatSet_Name)<br />

Fill yöntemi bir tamsayı sonucu verir ve bu sayı DatSet‟te mevcut olan kayıtların sayısıdır.<br />

Verilerin Form kontrolleri ile bağlantısı<br />

1. Veri tabanını formunuza bağlayınız.<br />

2. Veritabanınızdaki sütünlar için formunuzda açıklayıcı label ve textbox (combobox)<br />

ekleyin.<br />

3. Textboxların özelliklerinde DataBinding –Text özelliğini seçmek istedğiniz alan<br />

olarak değiştirin. (DataSet, BindingSource ve TableAdapter nesneleri formunuza<br />

otomatik olarak eklenecektir.)<br />

4. Forma Data panelinden DataGridView ekleyin ve datasource özelliğini belirleyin.<br />

5. Verilerin form başladığında görünmesi için Form_Load olayına aşağıdaki kodu yazın.<br />

Name_TableAdapter.Fill(Name_DataSet.NameofTable)<br />

6. Verilerin buton içinde kod ile ileri-geri kontrolleri için aşağıdaki kodu kullanın.<br />

Name_BindingSource.MoveNext(Previous)<br />

DataSet Nesnesini Kontrollere Bağlamak<br />

150


151<br />

ADO.NET<br />

2009 2010<br />

DataSet nesnesi ile veritabanının bir kopyası çekirdek belleğe atıldıktan sonra, bu veriler<br />

çeşitli Windows kontrolleri ile gösterilebilir veya değiştirilebilir. Bu kontrollerin en önemlisi<br />

DataGrid bileşenidir.<br />

DataSet nesnesin içerdiği veri, Windows Form içindeki herhangi bir kontrolün herhangi bir<br />

özelliğine bağlanabilir. Örneğin DataSet içindeki bir tablonun ilk satır ve sütunundaki veri,<br />

TextBoxkontrolünün Textözelliğine bağlanabilir.<br />

DataSet içindeki veriyi Windows kontrollere bağlamanın iki yöntemi vardır. Bu yöntemler<br />

basit (simple data binding) ve karmaşık (complex data binding) veri bağlama olarak<br />

adlandırılır.<br />

Basit veri bağlama; DataSet içindeki bir veri elemanını (DataTable kolonunu) Windows<br />

kontrollere bağlama işlemidir. TextBox, Label, RadioButton gibi kontroller bu gruba girer.<br />

Örneğin, DataSet tablosundaki herhangi bir kolonu TextBox, Labelgibi Windows kontrollere<br />

bağlamak.<br />

Karmaşık veri bağlama; DataSet içindeki birden fazla veri elamanını Windows kontrollerine<br />

bağlama işlemidir. DataGrid, ListBox, ErrorProvider gibi kontroller bu gruba girer.<br />

Basit Bağlantı - CheckBox için: (diğerleri için de benzer şekilde herçekleşir.)<br />

CheckBox‟ın DataBindings.Checked özelliğini, varolan DataSetteki tablonun kolonu ile<br />

bağlayın.


Textbox için ise Text kısmını bağlamanız gerekmektedir.<br />

Karmaşık Bağlantı – Listbox için (diğerleri içinde aynıdır!)<br />

ADO.NET 2009 2010<br />

ListBox‟ın DataSource özelliğinden DatSet i seçiniz. Ve DisplayMember özelliğini, Listbox‟ın<br />

içerisinde görünmesi gereken kolon olarak belirleyin.<br />

152


153<br />

ADO.NET<br />

2009 2010<br />

Kod Kullanarak<br />

ComboBox ve ListBox gibi kontrollere veri bağlamak için DataSource ve DataMember<br />

özelliği kullanılır. DataSouce özelliği DataSet içindeki tablo ismini, DisplayMember ise tablo<br />

kolonunu belirtir.<br />

Örnekte, ComboBox ve ListBox kontrolünün DataSource ve DisplayMember özellikleri<br />

kullanılmaktadır.<br />

ComboBox1.DataSource = ds.Tables("kitaplar") „ds DataSetin adı!<br />

ComboBox1.DisplayMember = _ ds.Tables("kitaplar").Columns("kitap_baslik").ToString<br />

ListBox1.DataSource = ds.Tables("kitaplar")<br />

ListBox1.DisplayMember = _ ds.Tables("kitaplar").Columns("kitap_baslik").ToString<br />

Bir diğer özelliği de DataBinding.Add yöntemidir.<br />

TextBox1.DataBindings.Add("Text", CustomerDataSet1, "Customers.Address")


DataSet içindeki veriyi DataGridView’e Bağlamak<br />

ADO.NET 2009 2010<br />

DataGridView, veriyi satırlar ve sütunlar halinde görüntüler. DataGridView ile ilişkisiz<br />

DataSet tabloları kolay bir şekilde görüntülenebilir. Bu görüntü Excel tablolarına benzer.<br />

DataGridView ilişkili DataSet tabloları da gösterebilir. Bu durumda istenilen tabloya<br />

DataGridView üzerindeki gezinti köprülerinden erişilebilir. DataSet tablolarını<br />

DataGridView kontrolüne bağlamak için iki yöntem kullanılır. Bu yöntemler grafiksel ve<br />

programlama yöntemleridir.<br />

Grafiksel yöntem ile bağlantısağlamak için aşağıdaki adımlarıtakip edin.<br />

1 Araç kutusu üzerindeki DataGridView kontrolünü form üzerine sürükleyin.<br />

2 DataGridView kontrolünün DataSource özelliğini, önceden oluşturulmuş<br />

DataSetnesnesine bağlayın.<br />

3 DataGridView kontrolünün DataMember özelliğini, DataSet tablolarının herhangi biri<br />

ile bağlayın.<br />

Programlama yöntemi ile bağlantı sağlamak için DataGridView nesnesinin DataSource<br />

özelliği kullanılır. Örnekte, DataSet içindeki Kitaplar tablosu DataGridView kontrolüne<br />

bağlanır.<br />

DataGridView1.DataSource = ds.Tables("Kitaplar")<br />

154


155<br />

ADO.NET<br />

DataTable Üzerine Yeni Veri Eklemek<br />

2009 2010<br />

DataTable, veritabanı tablolarını temsil eder. DataColumn, DataRow nesnelerinden oluşur.<br />

DataSet içinde yeni bir DataTable oluşturduktan sonra, veritabanı üzerinde işlem<br />

yapıyormuş gibi veri üzerinde düzenlemeler yapılabilir. DataTable, bu çevrimdışı<br />

düzenlemeleri kabul veya iptal etme olanağı sunar.<br />

DataTable nesnesine, yeni bir satır eklemek için DataRow nesnesi kullanılır. DataTable<br />

nesnesinin NewRow metodu ile oluşturulan yeni satır, DataRow nesnesinin değişkenine<br />

atanır.


Örnekte, dtKitaplar tablosuna drNew isminde yeni bir kolon eklenmiştir.<br />

Dim drNew As DataRow = dtKitaplar.NewRow()<br />

ADO.NET 2009 2010<br />

DataRownesnesi tanımlandıktan sonra, index veya kolon isimleri üzerinden kolonlara değer<br />

girilir.<br />

Örnekte birinci kolona kitabın ISBN numarası, ikinci kolona ise yazar adi bilgileri girilmiştir.<br />

drNew(0) = “9758725149”<br />

drNew(1) = “Tamer Şahiner”<br />

veya<br />

drNew(“kitap_ISBN”) = “9758725149”<br />

drNew(“kitap_yazar”) = “Tamer Şahiner”<br />

Kolanlara bilgi girildikten sonra, tanımlanan DataRow nesnesi DataTable nesnesinin Rows<br />

koleksiyonuna eklenir.<br />

Örnekte drNew nesnesi, dtKitaplar nesnesinin Rows koleksiyonuna eklenir.<br />

dtKitaplar.Rows.Add(drNew)<br />

DataTable nesnesine DataRow kullanmadan kayıt eklenebilir. Örnekte dtKitaplarismindeki<br />

DataTablenesnesine bu yöntem ile kayıt eklenmiştir.<br />

dtKitaplar.Rows.Add(New Object() {“9758725149”, “Tamer Şahiner”})<br />

DataTable Üzerindeki Veriyi Düzenlemek<br />

DataRow ile DataTable içindeki kayıtlar değiştirilebilir. DataRow nesnesi ile satır<br />

düzenleme işlemleri için aşağıdaki metotlar kullanılır.<br />

156


157<br />

ADO.NET<br />

BeginEdit<br />

EndEdit<br />

CancelEdit<br />

2009 2010<br />

BeginEdit, veriyi düzenlerken oluşabilecek olayları askıya alır. Veriyi düzenlemek için Items<br />

koleksiyonu kullanılır. EndEdit metodu ile, askıya alınan olaylar yeniden aktif edilir.<br />

CancelEdit metodu ile değişikliklerden ve askıya alınan olaylardan vazgeçilir.<br />

Örnekte, DataTable içindeki dördüncü kayıt için güncelleme işlemi yapılmıştır.<br />

Dim drNew As DataRow = dtKitaplar.Rows(3)<br />

drNew.BeginEdit()<br />

drNew("kitap_baslik") = "yeni hayat"<br />

drNew("kitap_yazar") = "can dündar"<br />

drNew.EndEdit()<br />

DataRow ile DataTable içindeki belirli bir satır silinebilir. Örnekte, DataTable içindeki<br />

dördüncü kayıt silinmiştir.<br />

Dim drSil As DataRow = dtKitaplar.Rows(3) dtKitaplar.Rows.Remove(drSil)<br />

DataRownesnesinin Deletemetodu kullanılarak aktif kayıt silinebilir.<br />

DrSil.Delete()<br />

Windows Form ile Kayıt Üzerinde Hareket Sağlamak<br />

Verileri düzenlemeden önce, hangi veri üzerinde düzenleme yapılacağının tespit edilmesi<br />

gerekir. Windows Form uygulamaları, veri içinde hareket sağlanan nesneler ile verilerin<br />

bağlı olduğu katmanı yönetebilir. Bunun için gerekli olan komut:<br />

BindingContext(DatSet_Name, “Table_Name”). Position = …


Veri Arama ve Sıralama<br />

ADO.NET 2009 2010<br />

DataSet içinde veri arama ve sıralama işlemleri yapmak için, DataTable sınıfının arama ve<br />

sıralama metotlarıkullanılır. DataTable sınıfının Find metodu, birincil anahtar değerine<br />

göre arama yapılmasını sağlar. Select metodu ise, belirli bir arama kriterine göre arama<br />

yapılmasınısağlar. Selectmetodu ile geriye satır koleksiyonları döndürülür.<br />

Örnekte DataTable sınıfının Find metodu ile kitap barkod numarasına göre arama yapılır.<br />

Bu aramanın sonucunda yazar adı geriye döndürülür.<br />

Dim conn As New OleDbConnection("provider =" & _ “microsoft.jet.oledb.4.0;data<br />

source=c:\Proje\stok.mdb")<br />

Dim da As New OleDbDataAdapter("select * from" & _ "kitaplar",conn)<br />

Dim tbl As New DataTable<br />

da.Fill(tbl)<br />

tbl.PrimaryKey = _ New DataColumn(){tbl.Columns("kitap_ISBN")}<br />

Dim row As DataRow = tbl.Rows.Find("97512533")<br />

If row Is Nothing Then<br />

MessageBox.Show("Kayıt Bulunamadı!")<br />

Else<br />

MessageBox.Show(row("kitap_yazar"))<br />

End If<br />

Örnekte Tbl ismindeki DataTable nesnesine, DataAdapter nesnesinden gelen kayıtlar<br />

doldurulur. Tbl tablosunun Kitap_ISBN kolonu birincil anahtar olarak atanır. Row isminde<br />

yeni bir DataRow tanımlanır. DataTable nesnesinin Find metoduna kitabın barkod<br />

158


159<br />

ADO.NET<br />

2009 2010<br />

numarasıgirilir ve sonuç Row değişkenine aktarılır. Son olarak Rowdeğişkeni içindeki sonuç<br />

ekrana yazılır.<br />

Arama işlemlerinde özel karakter kullanılabilir. Örneğin yazar ismi ”E„ harfi ile başlayan<br />

kayıtlarısorgulamak için aşağıdaki komut kullanılır.<br />

Select * from kitaplar Where kitap_yazar Like 'E%'<br />

DataTable sınıfının Select metodu ile DataRow nesnelerinden oluşan bir koleksiyon geri<br />

döndürür. Select metodu aslında orijinal DataSet içindeki satırları işaret eden işaretçiler<br />

kümesi olarak da algılanabilir. Veri kopyalama yapmaz, ancak değişimleri görüntüler.<br />

Örnekte, DataTable sınıfının Select metodu kullanılarak kitap fiyatı sekizden farklıkayıtlar<br />

gösterilmektedir. Bu kayıtlar kitap isimlerine göre sıralanmıştır.<br />

Dim selRows As DataRow() = tbl.Select("kitap_fiyat 8", _ "kitap_baslik ASC",<br />

DataViewRowState.CurrentRows) Dim row As DataRow<br />

For Each row In selRows MessageBox.Show("kitap: " & _ row("kitap_baslik",<br />

DataRowVersion.Original)) Next<br />

Select metodunun dört farklı kullanımı vardır. Bu kullanımlar aşağıda listelenmiştir.<br />

public DataRow() Select()<br />

public DataRow() Select(filterExpression as string)<br />

public DataRow() Select(filterExpression as string, _ sort as string)<br />

public DataRow() Select(filterExpression as string, _ sort as string, _ recordStates as<br />

DataViewRowState)<br />

Select metodunun filterExpression, Sortve recordStatesisminde üç parametresi<br />

bulunur. filterExpression, filtreleme yapılacak ifadeyi içerir.<br />

"Country = „Turkey' AND City 'Ankara'"<br />

Sort, sonuçların hangi sırada görüntüleneceğini belirtir.<br />

“City DESC”<br />

Veriler artan ve azalan olmak üzere iki şekilde sıralanabilir. Sıralanacak kolonun sonuna;<br />

azalan sıralama için DESC, artan sıralama için ASC anahtar sözcüğü yazılır.<br />

recordStates ise, kayıtların durumuna göre, (Deleted, Modified gibi) seçim yapar.


Bölüm 10. SETUP<br />

SETUPADO.NET 2009 2010<br />

1) File/Add Project kısmından New Project seçeneğini işaretleyelim. Gelen ekrandan<br />

Project Types kısmından Setup and Deploymeııt Projects klasörünü seçtikten sonra,<br />

Templates bölümünden Setup Project seçerek ismine “pec” yazıp, OK butonuna<br />

basalım. Kaydettiğiniz yeri unutmayınız çünkü Setup için gerekli dosyalar buraya<br />

kopyalanacaktır.<br />

2) Ekran görüntüsü, aşağıdaki gibi olacaktır. Burada programın kurulacağı yer ile ilgili<br />

ayarlar Application Folder kısmından yapılır.<br />

3) ApplicationFolder'ın özelliklerinde bulunan DefauItLocation ile kurulum<br />

yapıldığında, kurulum dosyalarının nerede olacağını belirleyebiliriz. Biz<br />

ProgramFiles klasörü içinde olmasını istediğimiz için, şekildeki gibi değişiklik yaptık.<br />

160


161<br />

SETUP<br />

2009 2010<br />

4) ApplicationFolder üzerine sağ tuşa basarak Add File seçeneğinden Setup‟ı<br />

oluşturacak projenin bulunduğu yere gidelim, Bin klaösrü içindeki .exe uzantılı<br />

dosyayı seçelim. Örnekte setuplar.exe olarak alınmıştır.<br />

5) Yine ApplicationFoIder üzerinde sağ tuşa basarak Add/Project Outpııl seçeneğine<br />

tıklayarak, gelen ekrandan exe ve dll'leri kapsayan Primary Output'u seçip, OK<br />

butonuna basalım.


SETUPADO.NET 2009 2010<br />

6) UserPrograms menü üzerine sağ tuşa basığ Add Folder‟ı seçiniz. İsmine “pec”<br />

yazınız. Sonra “pec” klasörü seçili iken bölmenin sağ kısmına geçerek, Create New<br />

Shortcut seçeneğine tıklayınız. Bunun sonucunda aşağıdaki ekran karşımıza gelir.<br />

7) Yukarıdaki şekil üzerinde Application Folder üzerine iki kez tıklayarak daha önce<br />

eklettiğimiz "setuplar.exe" dosyasını seçip, OK butonuna basalım.<br />

162


163<br />

SETUP<br />

2009 2010<br />

8) Eklenen kısayolun ismini "prestigeturk" olarak değiştirelim. Böylelikle program<br />

kurulunca Start/Programs seçeneği içinde "pec" isimli bir klasör ve içinde programı<br />

çalıştırmak için" prestig"e isimli bir kısayol oluşacaktır.<br />

9) Programı kurunca, masaüstüne de kısayolunun gelmesi için User's Desktop klasörü<br />

seçili iken bölmenin sağ kısmına geçerek, Create New Shortcut seçeneğine<br />

tıklayınız. Yine dosyamızı seçerek, ismini "prestige" yapalım.<br />

10) Bu kısayollara kısayol oluşturmak için ilk önce ApplicationFolder üzerinde sağ tuşa<br />

basarak Add/File seçeneğini kullanıp, istediğiniz yerden bir Icoıı getiriniz. Ardından<br />

"prestige" kısayolunun özelliklerinden Icon seçeneğinden, Browse alt seçeneğine<br />

tıklayarak, ApplicationFolder içinden ekletmiş olduğunuz Icon'u seçiniz.


SETUPADO.NET 2009 2010<br />

11) Setup projemize "pec" Setup projemizi seçerek, Properties penceresine geçelim. Bu<br />

kısımda kurulan program hakkında çeşitli bilgiler verebiliriz. Programı açıklayıcı<br />

bilgiyi Description hakkında bilgiyi Manufacturer destek bilgilerini Support<br />

kısımlarına yazabiliriz.<br />

Programı kuran kişi bu bilgileri Control Panel içindeki Add/ Remove Programs<br />

kısmından görebilir.<br />

12) "pec" isimli Setup projenizin üzerinde sağ tuşa basarak View seçeneğine tıklarsanız,<br />

diğer görünümlerin listesi ile karşılaşırsınız. Bu listeden ekranının ayarlan için<br />

Userlnterface seçeneğine tıkladığımızda görüntü aşağıdaki gibi olacaktır:<br />

164


165<br />

SETUP<br />

2009 2010<br />

13) Bir önceki adımda gelen ekrandan Start seçeneğinin altında bulunan Welcome alt<br />

seçeneğinin Properties penceresini aşağıdaki gibi yapılandıralım;<br />

14) Bir Setup'da olması gerekenleri aşağı yukarı koyduktan sonra, Build menüsünden<br />

Build pec seçeneği ile derleyelim. Bir hata ile karşılaşmadığınızı bildiren sağ alt<br />

köşedeki Build succeeded yazısı ile karşılaşırsanız, işlem tamamdır. Artık,<br />

projelerinizi tamamen kapatabilirsiniz.<br />

15) Setup projesini kaydettiğiniz "pec" klasörünü açıp, Debug klasörüne geçtiğinizde<br />

aşağıdaki şekilde "pec.msi"dosyasını görebilirsiniz.<br />

16) Şimdi adım adım kurulumu gerçekleştirmek için, "pecmsi" dosyası nu tıklayalım.<br />

17) İlk olarak karşımıza gelen görüntü, aşağıdaki gibidir. Next butonıı ile devam edelim.


SETUPADO.NET 2009 2010<br />

18) Belirlediğimiz kurulum yeri, burada görünmektedir. İstenirse Browse değiştirilebilir.<br />

Devam için Next butonuna basalım.<br />

19) Tekrar Next butonuna basınca kurulum başlayacaktır ve kurulum tamamlanınca,<br />

aşağıdaki bilgi ekranı karşımıza çıkacaktır. İşlemi sonlandırmak için Close butonuna<br />

basmamız yeterli olacaktır.<br />

166


167<br />

SETUP<br />

2009 2010<br />

20) Şimdi de kurulum sonuçlarını incelemek için ilk olarak ProgramFiles klasörü içindeki<br />

"Pec" klasörünü açalım ve gerekli dosyalann burada yer aldığını, şekildeki gibi<br />

gözlemleyelim<br />

21) Hem masaüstünde, hem de Start menüsündeki Programs grubu içinde oluşan "pec"<br />

klasörü içinde "prestige" kısayolunu görebiliriz.<br />

22) Bunlardan herhangi birine tıkladığımız zaman, programımız çalışacaktır .Bu<br />

programm çalışacağı bilgisayarda sadece Framework 1.1'in kurulu olması yeterlidir.


SETUPADO.NET 2009 2010<br />

23) Son olarak program ile ilgili bilgileri bulmak için Control Panel içinde bulunan Add<br />

or Remove Programs seçeneğine tıkladığımızda, programın listede yerini aldığını<br />

göreceksiniz. Buradan isterseniz Remove ile kaldırabilrsiniz.<br />

24) Program ile ilgili bilgileri öğrenmek içinse ortadaki Click here for support<br />

information Link'ine tıklamanız yeterlidir. Bunun sonucunda Setup yapılandınlması<br />

sırasında kazandırdığınız özellikler, şekildeki gibi görüntülenecektir:<br />

168

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!