Bilgisayara Giriş - Akademik Personel Bilgi Bankası - Kocaeli ...
Bilgisayara Giriş - Akademik Personel Bilgi Bankası - Kocaeli ...
Bilgisayara Giriş - Akademik Personel Bilgi Bankası - Kocaeli ...
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