bil gisayara giriş - wordpress.com1) bilgisayarımıza microsoft visual studio.net 2003 dics...

160
Bilgisayara Giriş 2010-2011 Güz – Bahar Öğretim Yılı Ders Notları Arzu Erdem 2010 2011 Arzu Erdem Kocaeli Üniversitesi 2010 2011 Kaynaklar: 1. Yazılım Uzmanı 1, Selçuk Tüzel 2. Yazılım Profesyoneli 2, Fulya SATAR . Engin ÖREN 3. Herkes için Visual Basic 2005, Jeff Kent 4. Microsoft Visual Basic.Net Başlangıç Rehberi, İhsan Karagülle 5. Visual Basic.Net 2003, Y.İnan, N.Demirli

Upload: others

Post on 25-Dec-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Bilgisayara Giriş 2010-2011 Güz – Bahar Öğretim Yılı

Ders Notları

Arzu Erdem

2010

2011

Arzu Erdem

Kocaeli Üniversitesi

2010 2011

Kaynaklar:

1. Yazılım Uzmanı 1, Selçuk Tüzel

2. Yazılım Profesyoneli 2, Fulya SATAR . Engin

ÖREN

3. Herkes için Visual Basic 2005, Jeff Kent

4. Microsoft Visual Basic.Net Başlangıç Rehberi,

İhsan Karagülle

5. Visual Basic.Net 2003, Y.İnan, N.Demirli

Bölüm 1. KURULU

M ve GİRİŞ

Bu kısımda Microsoft Visual Studio.NET

2003 programının nasıl kurulacağını ve

kurulum sırasında nelere dikkat edileceğini

adım adım inceleyeceğiz.

Lisanslı olarak aldığınız Microsoft Visual

Studio. NET 2003 programı altı CD'den

oluşmaktadır. Bunlardan iki tanesi program

kurulumunu içeren CD'lerdir. Eğer bilgisayarınızFramework yapısına uygun değilse, bunu ayarlayacak

bir adet Windows Prerequisites CD'si vardır. Diğer üç CD ise en son istenildiği takdirde kurulacak

MSDN (yardım) CD' leridir.

Şimdi adım adım kuruluma başlayalım;

1) Bilgisayarımıza Microsoft Visual Studio.NET 2003 Dics 1'i takalım. Bunun sonucunda eğer

şekildeki ekran karşımıza gelirse, kurulum başlamadan önce bilgisayarımızda çeşitli

ayarlamalar yapılacak anlamındadır. Kuruluma devam etmek için Visual Studio.NET

Prerequisites seçeneğine tıklıyoruz.

2) Eğer şekildeki ekran ile

karşılaşırsanız, bilgisayarınızda Web uygulamaları ve servisleri geliştirerek bilgisayarınızı bir

KURULUM ve GİRİŞ 2010 2011

3

Web Server olarak kullanacaksanız, mutlaka Front Page Server Extensions bileşenini

kurmanız gerekmektedir. Bunu IIS içinden gerçekleştirebilirsiniz. Bu işlemi nasıl yapacağınızı

Setup Instructions butonuna tıklayarak öğrenebilirsiniz. Kurulumu yapmak istemiyorsanız

Skip butonuna basmanız sterlidir. 3) Yandaki görüntü karşımıza

geldiğinde CD'ler içinde bulunan

Windows Prerequisites CD'sini

takarak OK butonuna basalım.

4) Bilgisayarımız için gerekli

bileşenleri yükleme analizini

yapan şekildeki ekranı görünce bir süre bekleyelim.

5) Gelen lisans ekranını okuduktan sonra, eğer bir sorun yoksa I agree seçeneğini işaretleyerek

Continue linkine tıklayalım.

6) Gelen listede eksikler belirlenmiş durumdadır. Bunların tamamlanması için Install Now!

Linkine tıklamamız yeterlidir. Bu liste bilgisayarınızda kurulu programların versiyonuna göre

daha kısa ve uzun olabilir.

7) Gerekli bileşenlerin yüklenmesi bittikten sonra, sağ alt köşede çıkan Done linkine tıklayarak

bu ilk kademeyi sonlandırıyoruz.

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

Bilgisayara Giriş 2010 2011

4

9) Şekildeki ekran karşımıza çıkınca, ilk kurulum CD' sini takarak OK butonuna basıyoruz.

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

sonra, karşımıza gelen ekranda lisans maddelerini okuyarak I agree seçeneğini işaretliyoruz.

Ardından Product Key kısmına 25 haneli kurulum anahtarını doğru olarak girdikten sonra,

Continue linkine tıklıyoruz.

11) Eğer elinizdeki CD' 1er Microsoft Visual Studio.NET kurulumuna ait ise aşağıdaki ekranda aynı

anda bu yapı içinde bulunan Visual Basic.NET, Visual C++ .NET, Visual C# .NET, Visual J#

.NET programlarını kurabilirsiniz. Tüm kurulum yaklaşık 1.5 GB yer kaplamaktadır. Ancak

sadece kullanacağınız seçenekleri kurmak istiyorsanız, diğer programların başlarında

bulunan kutuları boşaltmanız gerekmektedir. Fazla program seçimi hem Disk üzerinde

gereksiz yer kaplayacaktır, hem de kurulum süresini uzatacaktır. Eğer başka bir Disk

bölümünüz varsa ve oraya kurmak istiyorsanız Local Path kısmından bu seçimi yapabilirsiniz.

KURULUM ve GİRİŞ 2010 2011

5

Ben, Visual C++.Net dışında tüm programları kurmaya karar verdim ve Disk bölümü olarak E

sürücüsünü seçtim. Ayrıca, eksik kurduğunuz programları sonradan ekleyebileceğinizi

unutmayın. Her şey tamamsa

install Now linkine

tıklayabilirsiniz.

12) Bilgisayarınızın

performansına göre kurulum

süresinin ilk bölümü 15 dakika

ile 45 dakika arasında sürebilir.

13) Şekildeki mesaj iletisi karşımıza geldiği zaman artık ilk CD'nin görevi sonlanmış demektir. İlk

kurulum CD'sini çıkartarak yerine ikinci kurulum CD'sini takıp, OK butonuna basarak

kuruluma devam ediyoruz.

14) Evet nihayet kurulum tamamlandı. Kurulum ekranını kapatmak için Done linkine tıklamanız

yeterli olacaktır.

Bilgisayara Giriş 2010 2011

6

15) Bundan sonra devam etmek zorunda değilsiniz. Ancak yazılım yaparken, elinizin altında

yardım kütüphanesinin yüklü olması her zaman yararlıdır. Bunun için şekildeki listeden

Product Documentation seçeneğine tıklayıp, MSDN CD'lerinin ilkini takarak gelen

ekran yardımları ile yardım dosyalarını yükleyelim. MSDN'in tamamını Disk üzerine yüklemek

için, ekstradan 2 GB alana ihtiyaç olduğunu hatırlatayım.

Bölüm 2. Programlamaya Giriş

Program Nedir?

Program, bilgisayarın belli bir işi yapması için tasarlanan komutların tümüdür. Kullanım amaçları

ve yerlerine göre birçok değişik program türü vardır:

Sistem programları. Her program, bir işletim sistemi üzerinde çalışır. İşletim sistemi, diğer

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

Bilgisayara GirişBilgisayara GirişBilgisayara

Giriş

2010 2011

8

Sürücüler (Driver). İşletim sistemi ile donanım aygıtları arasında iletişim sağlayan

programlardır. Klavye ile yazılan yazıların algılanması için, klavyenin sürücü programı kullanılır.

Uygulamalar. İşletim sistemi üzerinde çalışan, kullanıcıların ihtiyaç duyduğu işlevleri sağlayan

programlardır.

Programların Çalışma Modeli

Örnek: ATM makinesinden para çekmek.

1 Kullanıcı ATM makinesine kartını yerleştirir.

2 Şifresini girer.

3 ATM cihazında çalışan uygulama kartta yazan bilgileri okur.

4 Şifre kontrolü işlemi yapılır.

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

6 Bankadaki hesap kontrol edilir.

7 Uygunsa kullanıcıya ödeme yapar.

Programlamaya Giriş 2010 2011

9

Programcı Kimdir?

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

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

mantıksal dilde düşünebilmesi gerekir. Programcıların çoğu genellikle aynı işi gerçekleştirse de,

üstlendikleri görevlere göre programcılar üç gruba ayrılabilir:

Mimar. Programların yazılması için gerekli teknolojileri belirleyen, gerekli durumlarda

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

Geliştirici. Programı yazan kişidir.

Test mühendisi. Programın geliştirilmesi aşamasında, hataların kaynaklarını bulan ve

geliştiricilere raporlayan programcıdır.

Bilgisayara GirişBilgisayara GirişBilgisayara

Giriş

2010 2011

10

Programlama Dilleri

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

C++, Java, JavaScript, Cobol, Perl, Python, Ada, Fortran, Visual Basic. NET, Microsoft Visual C#

programlama dilleridir.

Yüksek seviye programlama dillerine Visual Basic. NET ve Microsoft Visual C++ dillerini örnek

verebiliriz. C ile işletim sistemi yazılabildiğinden, daha alt seviye bir dil olarak değerlendirilir.

Programlamaya Giriş 2010 2011

11

Programlama Dillerinin Tarihçesi

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

bileşenler eklenerek yapılıyordu. Programın işlemesi için bir devinime ihtiyaç vardı. Eskiden

programlar fiziksel olarak yazılıyordu. Daha sonra, fiziksel programlama yerini elektrik

sinyallerine bıraktı. Artık, kurulan elektronik devrelere düşük ya da yüksek voltajda akım

gönderilerek bilgisayarın davranışı belirlenmeye başlanmıştı. Yüksek voltaj 1, düşük voltaj 0

sayılarını ifade ediyordu. Böylelikle bugün de kullanılan makine dilinin ortaya çıkması için ilk

adımlar atılmış oldu.

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

ortaya çıkardı. FORTRAN ile beraber basit mantıksal karşılaştırmalar, döngüler, lojik (true-false)

ve sayısal (integer, double) değişkenler kullanılmaya başlandı.

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

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

en iyi özelliklerini alarak Pascal ortaya çıktı. Ayrıca Pascal dili, hafızadaki adresler üzerinde

işlem yapmaya olanak veren işaretçi (pointer) kavramını da beraberinde getirdi.

1972 yılında C, Pascal dilindeki birçok hatayı gidererek ortaya çıktı. C dili ilk defa Unix işletim

sistemini yazmak için kullanılmaya başlanmıştır. C, düşük seviye bir dil olması, kuvvetli giriş

çıkış işlemleri sağlaması gibi birçok özelliği ile işletim sistemlerinin yazılmasında tercih

edilmiştir.

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

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

Bilgisayara GirişBilgisayara GirişBilgisayara

Giriş

2010 2011

12

programlama (Object Oriented Programming – OOP) ortaya çıkarıldı. C dilinin ve OOP modelinin

tüm özellikleriyle C++ dili oluşturuldu.

Programın Derlenmesi

Microsoft .NET Platformu 2010 2011

13

Bölüm 3. Microsoft .NET Platformu

Microsoft .NET, uygulama geliştiricilerin yazılım geliştirme sürecinde alt yapı işlemleri için harcadığı

eforu en aza indirgemek ve daha güvenli, güvenilir ve sağlıklı uygulamalar geliştirebilmelerini

sağlamak için geliştirilmiş bir alt yapıdır.

Bu bölümü tamamladıktan sonra;

NET Framework ve bileşenlerini

açıklayabilecek,

tanımlayabileceksiniz.

Konu 1. Yazılım Geliştirme Dünyası Microsoft 1975 yılında Bill Gates ve Paul Allen tarafından kurulduğunda, vizyonu “Her eve, her

masaya bir PC” idi. Donanım ve yazılım alanlarındaki gelişmelerin hızı ve birbirlerini sürekli

tetiklemesinin sonucunda bilgisayar kullanıcılarının sayısı hızla arttı. Artan kullanıcı sayısı

beraberinde yeni gereksinim ve talepleri getirdi. Bu taleplerin doğal sonucu olarak da farklı

platformlar ve farklı servis sağlayıcıları ortaya çıktı. İletişim, finansal hizmetler, ticaret ve eğlence

kullanıcıların (özellikle Internet‟in yaygınlaşmasıyla birlikte) en yoğun talep gösterdiği hizmetler

halini aldı. Günümüze baktığımızda, Microsoft‟un çıkış noktasındaki hedefine büyük oranda ulaştığını

görebiliyoruz. Ancak geldiğimiz noktada hızla artan bilgisayar ve Internet kullanıcısı sayısı,

beraberinde güvenlik, iletişim ve entegrasyon gibi alanlarda çeşitli engelleri de getirdi.

Gelişmelere kendi açımızdan, yani yazılım geliştiriciler açısından baktığımızda işlerin çok daha zor

ve zahmetli durumda olduğunu görürüz. Kurumsal uygulamaların geliştirilmesinde performans,

güvenlik ve süreklilik gibi konularda belirli bir seviyeyi yakalamak için oldukça fazla efor sarf

etmemiz gerekiyor. Örneğin, elektronik cihazlarla soket iletişimi kuracak uygulamaları

geliştirebilmek için iki alternatifimiz var. Birincisi, 3. parti firmalar tarafından geliştirilmiş olan

bileşenler satın almak ve uygulamamıza entegre etmektir. Diğer alternatifimiz ise, oldukça uzun

sürecek bir kodlama ile benzer bir iletişim katmanını geliştirmektir. Her ikisi de firmaların birinci

tercihi olmayacaktır. Sorunumuz, sadece soket iletişimi noktasında değil elbette. Bölümün başında

da belirttiğimiz gibi uygulama geliştiriciler, güvenlik, performans ve yetkilendirme gibi pek çok

konuda oldukça zahmetli alt yapı kodlarını geliştirmekle uğraşmak zorunda kalıyor. İşin kötü yanı,

geliştirilen bu alt yapı kodlarının çoğu zaman istenen verimliliği sunmaktan oldukça uzak kalmasıdır.

Bilgisayara Giriş 2010 2011

14

Kabul etmemiz gereken şey, bu alt yapı kodlarını geliştirecek bilgiye sahip olmadığımız; sahip olsak

bile, alt yapı kodlarını yazacak zamana ve işgücüne sahip olmadığımız; zaman ve işgücü konusundaki

ihtiyaçlarımızı karşılayabilsek bile, bu kodların testi, güvenliği, güvenilirliği, performansı ve

uygulamalara entegrasyonu konusunda hiçbir zaman istenen düzeye ulaşamayacağımızdır. Keşke

ihtiyaç duyduğumuz tüm altyapı işlemleri için hazır, kullanımı kolay ve esnek bir platform olsaydı.

Hayalini kurduğumuz, aslında şöyle bir sistem:

“Bir sanal mağazada cep telefonlarından sorumlu departmanda satış müdürü olarak çalışıyorsunuz.

İş dışındasınız ve akıllı cihazınıza bir mesaj geliyor: „Piyasaya henüz çıkmış olan telefonumuz

inanılmaz satışlar yapıyor, telefon çok popüler ve stoklarımız da oldukça azalmış durumda.‟ Bu

mesajın hemen ardından, akıllı cihazınız üzerinden, şirketiniz için fiyat ve teslim zamanı açısından

en uygun olan tedarikçiyi bulup, ihtiyacınız kadar telefonu sipariş edebiliyorsunuz. Peki ya bu

koşullar altında çalışmıyor olsaydınız? Şirketiniz, sizi cep telefonunuzdan arayacak ve problemi

iletecekti. Sonra da siz ancak şirketinize dönebildiğiniz zaman tedarikçilerle teker teker irtibata

geçerek hangisinin şirketiniz için en yararlı olduğuna karar verecektiniz. Sipariş ve teslimat bilgileri

üzerinde anlaştıktan sonra işleminizi tamamlamış olacaktınız. Yani sadece birkaç dakikada

yapabileceğiniz basit bir işlem için, belki de bütün bir gününüzü kaybedecektiniz. Verimliliğiniz

düşerken, zamanınızı etkili şekilde kullanamayacaktınız. Oysa akıllı cihazınız üzerinden tüm bu

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

şirketiniz için en iyi olan seçimi yapabilirsiniz.”

İşler kesinlikle çok daha verimli ve kolay ilerlerdi. Elbette bu, kurulabilecek hayallerin sadece mobil

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

Sorunun Temeli

Microsoft, vizyonu doğrultusunda attığı adımların yazılım geliştiricilere yansıyan sonuçlarını sürekli

izliyordu ve yazılım geliştiricilerin sorunlarını şu başlıklar altında ele alıyordu.

farklı kurumlar arasındaki iletişim

sorunu.

, ihtiyaç duydukları anda, kesintisiz, hatasız ve güvenli bir

şekilde ve istedikleri platformdan erişebilmeleri gereksinimi.

Microsoft .NET Platformu 2010 2011

15

yapı kodları ile uğraşması ve bunun sonucunda,

uygulama geliştirme ve test süresinin uzaması.

tekrar tekrar yazılması gereksinimi.

Çözüm Platformu

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

uygulama geliştiricilerin ve son kullanıcıların işlerini kolaylaştıracak bir platform geliştirmeye

başladı. Microsoft bu platforma öylesine inanıyordu ki, kaynaklarının %80‟inden daha fazlasını, yani

kaderini bu platforma bağlamıştı. Çok geniş bir analiz ve geliştirme ekibinin çalışmaları sonucunda

ortaya çıkan ürün 2000 yılında dünyaya sunulduğuna, insanların karşılarında gördükleri yapı

karşısında hissettiklerini tanımlamak için kullanılabilecek en uygun kelime “hayranlık” idi.

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

uygulama geliştiricilerin Windows, Web ve mobil platformlara yönelik uygulamaları çok daha hızlı,

kolay ve güçlü bir şekilde geliştirebilmelerine olanak tanıyordu. Uygulama geliştiriciler şifreleme,

kimlik doğrulama, yetkilendirme, soket iletişimi, her türlü veri kaynağına yönelik veritabanı

işlemleri, XML ve Web servisi teknolojilerine kadar burada saymadığımız (editörler bir bölümün 100

sayfayı geçmesine pek sıcak bakmıyorlar) pek çok teknolojiyi ve hatta milyonlarca hazır sınıf ve

fonksiyonu karşılarında gördüler. Bugüne kadar günler, haftalar ve hatta aylar harcayarak

geliştirmeye çalıştıkları bu yapıların hepsini, karşılarında kullanıma hazır bir şekilde görmekten de

son derece memnunlardı.

Bilgisayara Giriş 2010 2011

16

Bölüm 4. Microsoft Visual Studio Ara yüzü

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

gösterir. Ev ve işyerindeki çalışma ortamını düzenlemek, daha verimli çalışmayı sağlar. Yazılım

geliştirirken de çalışılan ortamı tanımak ve kişiselleştirmek, rahat çalışmak açısından önemlidir.

Bu bölümü tamamladıktan sonra;

ortamını tanıyacak,

i kullanabilecek,

yardımını etkili bir şekilde kullanabileceksiniz.

Microsoft Visual Studio Ara yüzü 2010 2011

17

Konu 1. Visual Studio Çalışma Ortamı

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

platformu üzerinde geliştirilen proje dosyaları dışında, metin dosyaları, *.sql ve *.rtf uzantılı

dosyalar da düzenlenebilir. Visual Studio ortamını oluşturan ve kullanımını kolaylaştıran dört ana

bileşen vardır:

I. Çalışma Sayfaları Visual Studio ortamında dosyalar, birer çalışma sayfası (Tab Pages) olarak açılır. Bu dosyalar

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

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

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

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

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

2 View menüsünden, Web Browser alt menüsünü işaretleyin ve Show Browser komutunu seçin.

Visual Studio, açmak istediğimiz Internet tarayıcısı için yeni bir sayfa oluşturur.

3 CTRL tuşunu basılı tutarak TAB tuşuna basın. Açtığınız Internet tarayıcısından başlangıç

sayfasına dönülür.

4 Başlangıç sayfasını sağ tıklayın ve açılan menüden New Vertical Tab Group komutunu seçin.

Visual Studio, sayfaları “sekme gruplarına” ayırarak birden fazla sayfa üzerinde çalışma imkânını

sağlar.

5. Başlangıç sayfasını, sayfa başlığını tıklayıp fare düğmesini basılı tutarak Internet tarayıcısının

bulunduğu sekme grubuna taşıyın.

İPUCU Visual Studio ortamını bir Web tarayıcısı olarak kullanabilirsiniz.

Bilgisayara Giriş 2010 2011

18

Araç Çubukları Visual Studio, menü komutları için görsel kısayolları araç çubukları (Toolbars) ile sunar. Benzer

işlemler için kullanılan komutlar bir araç çubuğunda gruplanır. Örneğin Standard araç çubuğu, yeni

dosya oluşturmak, bir dosyayı açmak ve kaydetmek gibi genel dosya işlemleri için kullanılır.

Araç çubukları, varsayılan durumda menülerin altında bulunur. Ancak araç çubukları taşınarak

yerleri değiştirilebilir veya kayan duruma getirilebilir. Ayrıca istenen araç çubukları saklanabilir veya

gösterilebilir. Araç çubuklarının listesini görmek için View menüsünden Toolbars alt menüsünü

işaretleyin.

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

gruplanıp, kişisel bir araç çubuğu oluşturulabilir. Örnek:

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

araç çubukları listelenir. İşaretli olan araç çubukları eklenmiş araç çubuklarıdır. Bu listeden Web

araç çubuğunu seçin.

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

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

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

seçin.

4 Toolbars sekmesinde New (yeni) komutunu tıklayın. Açılan pencerede araç çubuğunun ismi

için “Genel İşlemlerim” yazın. OK düğmesini tıklayın. Visual Studio, verilen isimde bir araç çubuğu

oluşturur ve kayan durumda görüntüler.

5 Commands (komutlar) sekmesinde, Categories (kategoriler) listesinden Help kategorisini

seçin. Bu listenin yan tarafında bulunan Commands listesinden Index komutunu bulun. Bu komutu

taşıyıp, oluşturduğumuz “Genel İşlemlerim” araç çubuğuna bırakın.

Bu şekilde şu komutları da ekleyin:

Categories Commands

Tools Options

Microsoft Visual Studio Ara yüzü 2010 2011

19

File Exit

View Show Web Browser

Window Close All Documents

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

2 Araç çubuğunu sağ tıklayın ve listeden “Genel İşlemlerim” araç çubuğunu seçerek çalışma

ortamından kaldırın.

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

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

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

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

arasında Solution Explorer, Toolbox, Object Browser, Properties, Watch, Output, Search Result,

Task List gibi sıkça kullandığımız paneller sayılabilir.

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

Paneller, Visual Studio ortamı içersinde istenen yere taşınabilir veya sabitlenebilir. Panellerin birkaç

genel özelliği vardır:

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

sonra gizlenmesidir.

Dockable (Sabitlenebilir). Panelin, Visual Studio ortamı içersinde bir yerde sabitlenebilme

özelliğidir.

Floating (Kayan). Kayan paneller herhangi bir yere sabitlenemez. Ancak her sayfanın üstünde

durur ve böylece sürekli görünür.

Panellerin bu özelliklerine Window menüsünden erişilebilir.

Örnek:

1 View menüsünden Other Windows alt menüsünü işaretleyin ve Favorites panelini seçin.

Panelin başlığında, biri Auto Hide, diğeri Close olmak üzere iki düğme görülür.

2 Auto Hide düğmesini tıklayarak paneli gizleyin.

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

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

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

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

5 Panel seçiliyken, Window menüsünden Hide komutunu seçin. Paneli tekrar açmak için bu

adımları tekrarlayın.

Bilgisayara Giriş 2010 2011

20

Start Page

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

bölümden oluşur (Resim 3.3).

Projects. O ana kadar çalıştığınız projeleri gösterir. Bu menüden son projelerinizi açabilirsiniz. Son

projelerde gözükmeyen bir proje (Open Project) veya yeni bir proje (New Project) de açabilirsiniz.

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

teknolojileri, güncellemeleri veya en son eklenen haberleri takip edebilir, MSDN kütüphanelerinde

kod örnekleri ve makaleler araştırabilirsiniz.

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

kısayollara, panellerin yerlerine ve görünümlerine, Visual Studio yardımını kullanırken yapılan

filtrelemeye göre değişir.

Örneğin, profili Visual Basic Developer olarak ayarlarsak Toolbox, sayfaların sol tarafında çivili

olarak durur. Yardım panelinde bir arama yapmak istediğimizde ise, sonuçlar Visual Basic filtresine

göre çıkar. Ayrıca Solution Explorer paneli CTRL+R kısayolu ile açılır.

Microsoft Visual Studio Ara yüzü 2010 2011

21

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

seçilen profil, custom (özel) olarak gözükecektir. At Startup seçeneklerinden, Visual Studio açılırken

hangi pencerenin gözükeceğini belirleyebilirsiniz. Örneğin, başlangıçta en son çalıştığınız projenin

açılmasını istiyorsanız, “Load last loaded solution” seçeneğini tercih etmelisiniz.

İPUCU Giriş sayfasını kapattıktan sonra, Help menüsünden Show Start Page seçeneğini tıklayarak

açabilirsiniz.

Menüler

Visual Studio menüleri birçok uygulamanın menülerine benzer niteliktedir. Menü isimlerinde, belirli

bir harfinin altı çizilmiştir. Belirtilen harflere ALT tuşu ile birlikte basıldığında, o menülere kısayolla

ulaşılır. Menü komutlarının bazılarında ise, sadece o komuta özel bir kısayol tanımlıdır. Bu kısayollar

CTRL veya SHIFT gibi birkaç tuş kombinasyonu ile gerçekleşir.

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

komutlara ulaşılır. File menüsündeki komutlar ile:

Bilgisayara Giriş 2010 2011

22

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

varılan bir dosyayı açmak,

ojeleri (Recent Files) açmak,

ür.

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

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

Copy, Cut, Paste, Delete, Select All gibi temel işlemleri

Find And Replace, Go, Bookmark gibi navigasyon işlemleri

Outlining ile metinleri gruplama işlemleri

-küçük harf çevrimi gibi ileri seviye

işlemler gerçekleştirilir.

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

Ayrıca Navigate Backward ve Navigate Forward komutlarıyla en son çalışılan satıra geri dönülür.

Project (Proje). Projeye dosya eklemek, çıkarmak, proje özelliklerini göstermek için bu menü

kullanılır.

Build (Derleme). Projelerin çalışmak üzere derlenmesi için gereken komutlar, bu menü altındadır.

Debug (Hata Ayıklama). Projede hata ayıklarken gereken komutlar Debug menüsü altındadır.

Projeyi Debug durumunda başlatmak, BreakPoints (hata ayıklarken durulması gereken satırları

ayarlamak) gibi işlemler yapılır.

Tools (Araçlar). Visual Studio ile beraber yüklenen yardımcı araçların listelendiği menüdür. Araç

çubuklarını özelleştirmek için kullanılan Customize seçeneği gibi Options seçeneği de en sık

kullanılan özelliklerden biridir.

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

Editor en sık kullanılan seçeneklerdir.

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

için kısayol ayarları, Internet tarayıcısı ayarları, yardım ve dinamik yardım ayarları buradan yapılır.

Text Editor (Metin düzenleyicisi). Farklı programlama dillerine özgü yazı düzeni ayarları buradan

yapılır.

Örnek:

1 Tools menüsünden Options komutunu seçin.

2 Sol panelde bulunan Environment menüsünden Fonts and Colors (yazı düzeni ve renkler)

sekmesine gelin.

Microsoft Visual Studio Ara yüzü 2010 2011

23

3 Sağ panelde bulunan Display items (Öğeleri listele) menüsünden Text alanını seçin ve Item

background (Öğe arka planı) özelliğini Light Grey (Açık gri) olarak belirleyin. Tüm sayfaların arka

plan rengi açık gri olacaktır.

1 Sol panelde Environment menüsünden Web Browser sekmesine gelin. Home Page (ana sayfa)

özelliğinin altındaki Use Default seçeneğini kaldırın ve metin kutusuna www.bilgeadam.com yazın.

2 Sol panelde Text Editor menüsünden Basic alt menüsünü seçin. Burada Visual Basic diline

özel metin düzenleme seçenekleri bulunur. Sağ panelde, Display sekmesinin altında Line Numbers

(Satır numaraları) seçeneğini işaretleyin. Bu seçenek, Visual Basic projelerinde çalışırken satır

numaralarını gösterir.

Window (Pencere). Sayfaların ve panellerin görünümlerini ve özelliklerini değiştirmek için

kullanılan komutlar bu menü altında bulunur. Tüm açık çalışma sayfaları bu menü altında görüldüğü

gibi, istenen sayfa seçilerek ön plana getirilir. Ayrıca, Close All Documents (Tüm sayfaları kapat)

komutu ile açık olan bütün sayfalar kapatılır. Auto Hide All (Tümünü otomatik gizle) komutu ile,

sabit hale getirilmiş tüm paneller gizlenir.

Help (Yardım). Visual Studio çalışma ortamında çok sık kullanılan yardım panellerinin görünümü bu

menü ile sağlanır. Bu menü ile ayrıca, kullanılan Visual Studio çalışma ortamının sürümü hakkında

bilgi alınır, son güncellemeler kontrol edilir, teknik destek için gereken e-posta adreslerine veya

telefonlara ulaşılır.

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

Bilgisayara Giriş 2010 2011

24

Solution Explorer Paneli

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

dilde ve tipte projeler dahil edilebilir. Visual Studio ile bir çözüm açıldığında, Solution Explorer

panelinde (Resim 3.5) çözüm içinde bulunan tüm projelerle, ilgili dosya ve klasörler görüntülenir.

Panelde koyu yazı tipinde gözüken proje, çözüm içindeki başlangıç projesidir.

Bu panelden, öğeler üzerinde silme, kopyalama, taşıma ve ismini değiştirme işlemleri yapılabilir.

Ayrıca panelin üst kısmında, seçilen öğe üzerinde basit işlemler gerçekleştirmek için bir araç çubuğu

bulunur.

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

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

alt klasörleri gösterir. Panelde gözüken beyaz öğeler proje içine dahil edilmemiş öğelerdir. Proje

kapsamında kullanılmak istenen öğeler (örneğin, arka plan resmi), sağ tıklanıp Include In Project

komutu ile projeye dahil edilmelidir.

Properties (Özellikler). Paneldeki tüm öğelerin özellikleri, Properties komutu ile görülebilir. Bu

komut seçildiğinde, öğenin özellikleri Properties paneli ile görüntülenir. (Properties paneli bu

bölümde detaylı olarak ele alınacaktır.)

Microsoft Visual Studio Ara yüzü 2010 2011

25

Solution Explorer paneli, View menüsünden görülebildiği gibi, varsayılan klavye seçeneklerinde

CTRL+ALT+L kısayolu ile de görülebilir.

Toolbox Paneli

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

öğeler, sekmeler içinde gruplanmıştır. Her sekme, ortak platformlarda çalışan veya benzer işlevleri

olan nesnelere sahiptir. Örneğin, Data sekmesinde veritabanı işlemlerinde kullanılan bileşenler

vardır. Windows Forms bileşenleri Windows platformunda çalışan projelerde, Web Forms bileşenleri

ise Web tabanlı projelerde kullanılan nesnelerdir. ClipBoard Ring sekmesinde ise kopyalanan

metinler bulunur. Nesnenin silik gözükmesi, o anda çalışılan sayfada kullanılamayacağı anlamına

gelir.

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

Forms sekmesinde en üstte Label, Link Label, Button, TextBox nesneleri bulunur. Nesneler, yerleri

ve sıraları taşınarak değiştirilebilir, ayrıca başka bir sekmeye de taşınılabilir. Varsayılan sıralama

dışında, alfabetik olarak da sıralama yapılabilir.Visual Studio çalışma ortamı, Toolbox panelindeki

nesnelere yeni isim verme, nesneleri silme veya panele yeni sekmeler ve nesneler ekleme

imkânlarını da sağlar.

Örnek:

1 View menüsünden Toolbox panelini seçin.

Bilgisayara Giriş 2010 2011

26

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

seçin.

3 Windows Forms sekmesinde TextBox nesnesini sağ tıklayın. Çıkan menüden Rename Item (Ad

Değiştir) komutunu seçin ve “Metin Kutusu” yazın.

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

5 Paneli sağ tıklayın ve Sort Items Alphabetically (Nesneleri alfabetik olarak sırala) komutunu

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

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

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

Toolbox iletişim kutusu açılır. Burada Toolbox paneline eklenebilecek tüm bileşenler listelenir. Com

Components sekmesine gelin ve listeden Windows Media Player nesnesini işaretleyin. OK düğmesini

tıklayarak iletişim kutusunu kapatın. Windows Media Player nesnesinin, oluşturulan Medya

sekmesine eklendiği görülür.

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

Properties Paneli

Properties (Özellikler) paneli seçilen bir nesnenin özelliklerini görüntüler. Paneldeki görünüm,

“Özellik adı – değeri” şeklindedir. Silik olarak gözüken özellikler salt okunurdur ve değiştirilemez.

Panelin üzerindeki açılır liste, çalışma sayfasındaki nesneleri listeler. Buradan istenen nesne

seçilerek özellikleri görüntülenir.

Paneldeki özellikler kategorilere göre gruplanmıştır, ancak alfabetik olarak da dizilebilir. Panelin

üstünde bulunan araç kutusundan Categorized (Kategorileştirilmiş) veya Alphabetic (Alfabetik)

seçenekleri işaretlenerek özelliklerin görünümleri değiştirilebilir.

Microsoft Visual Studio Ara yüzü 2010 2011

27

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

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

Help Kullanımı

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

dilinin çok çeşitli özellikleri ve kullanım farklılıkları olabilir. İyi bir programcı bütün bu özellikleri

ezbere bilen değil, bu özellikleri en kısa sürede bulan, öğrenen ve kullanan programcıdır. Yardım

dosyalarının kullanımını bilmek, programcılığın temelini oluşturan önemli unsurlardan biridir.

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

kütüphanelerinin yüklenmiş olması gerekir.

Visual Studio yardımı programcıya, gelişmiş özelliklere sahip paneller ve yardım dosyaları ile geniş

bir kullanım kolaylığı sağlar.Visual Studio yardım dosyalarının yapısı, başlık, içerik ve ilişkili konular

(See Also) bölümlerinden oluşur. Ayrıca her yardım dosyasının altında bulunan Send Comments

bağlantısı ile konu hakkında yorum gönderilebilir.

Visual Studio yardım panelleri Dynamic Help, Search, Index ve Contents olarak dörde ayrılır. Bu

panellere, Help menüsünden ulaşılabilir.

Bilgisayara Giriş 2010 2011

28

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

panellerde veya sayfalarda nesneler seçildiğinde, kullanıcının başka bir işlem yapmasına gerek

kalmadan, o nesne hakkındaki yardım konularını listeler. F1 tuşuna bastığımız zaman ise, seçilen

nesneye ait, Dynamic Help panelindeki ilk yardım konusu yeni bir sayfada görüntülenir.

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

bölümü, seçilen nesneyle ilişkili olan kavramların listelendiği bölümdür. Samples, konuyla ilgili kod

örnekleri bulunan yardım dosyalarını gösterir. Getting Started, çalışılan sayfalara göre değişen,

temel işlemleri içeren başlangıç yazılarını gösterir.

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

aranacak anahtar kelimeler girilir. Filtered by (Filtreleme) ile arama sonuçları belli konulara göre

sınırlanır ve istenmeyen seçeneklerin gösterilmesi engellenir.

Search panelinde, Search in titles only, Match related words, Search in previous results, Highlight

search hits arama seçenekleri bulunur:

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

related words. Kelimeleri yazıldığı gibi arar; benzer yazımlı kelimeleri aramaz. Search in previous

results. İlk aramadan sonra aktif olan bu seçenek ile kelimeler, bir önceki aramada bulunan sonuçlar

arasında aranır. Highlight search hits. Bulunan yardım sayfalarında, aranan kelimelerin seçili

olmasını sağlar.

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

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

Rank, konunun aranan kelimeye olan yakınlık derecesini ifade eder.

Index Index (Dizin) paneli, yardım dosyalarındaki bütün konuları alfabetik sırada dizer. Filtreleme işlevi,

arama panelinde olduğu gibidir. Bu panelin özelliği, aranacak kelime yazılırken, bu kelime ile

başlayan tüm konuların alfabetik sırada gösterilmesidir. Bu şekilde, aranan konulara çok hızlı bir

şekilde ulaşılabilir.

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

seçenekler gösterilir.

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

olarak gösterilir. Bu panelde de aynı şekilde filtreleme yapılarak istenmeyen içerikler çıkartılabilir.

Microsoft Visual Studio Ara yüzü 2010 2011

29

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

seçilerek o yardım dosyasının Contents panelindeki yeri bulunabilir.

Algoritma ve Dump Coding 2010 2011

30

Bölüm 5. Algoritma ve Dump Coding

Programlamanın temelinde, çalışma akışını ve izlenecek yolları belirleyen algoritmalar vardır. Bir iş

yapılmaya başlanmadan önce nasıl planlanıyorsa, kodlamaya geçilmeden önce de bir çalışma planı

belirlenmelidir. Programla, bu planda yazılan kodları belli bir sıra ile okur ve işler. Dolayısıyla

algoritma yapısını çok iyi kurmak gerekir. Kurulan algoritmalar akış diyagramları ile görsel zenginlik

kazanırlar.

Dump Coding yöntemi algoritmaları çözmenin uzun, fakat etkili bir yoludur. Bu yöntem, adımları tek

tek inceleyerek algoritma akışını çözer. Bu modül tamamlandıktan sonra;

ump Coding ile algoritmaları çözümleyecek,

Konu 1. Algoritma Nedir?

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

programlama dili değildir. Programlama dillerine yol gösteren bir yöntem dizisidir. Her dilde

Bilgisayara Giriş 2010 2011

31

algoritma yazılıp uygulanabilir. Örneğin bir cep telefonunun el kitapçığında yazan, rehber kaydı

girmek için izlenecek yollar, o işin algoritmasıdır.

Algoritma yazarken, programın çalışması için kullanılan kaynakların, yapılması gereken kontrollerin

veya işlemlerin açıkça ifade edilmesi gerekir. Ayrıca iyi bir algoritmanın, tüm ihtimalleri kontrol

edip istenmeyen durumlarda ne yapılması gerektiğini de belirtmesi gerekir.

işi. Çalışma zamanında çoğu kez, işleyişin tamamlanması için dışarıdan bir bilgi girilmesi

gerekir. Algoritmanın çalışması için ihtiyaç duyduğu veriler, işlemi başlatan kişiden veya belirtilen

bir kaynaktan alınabilir. Bu bilgiler sağlanmadan işlem devam etmez.

veya işlem sonucunda elde edilen veriler, işlemin amacına göre kontrol edilir ve sonuca göre

algoritma akışı istenen yere yönlendirilir.

Algoritmanın akışı boyunca veriler üzerinde değişiklikler, yeni değer atamaları gibi

işlemlere ihtiyaç duyulur. Algoritmalar kurulurken, yapılan işlemlerin yalın halde, tek tek yazılması

okunabilirliği artırır.

Algoritmalar adım sırası ile çalışır ve karar yapıları sonucunda farklı bir yere yönlendirilmediği

müddetçe, bir sonraki adım ile işlemeye devam eder.

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

1 Telefon kulübesine git.

2 Telefon kartı al.

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

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

5 Kapı kapalıysa kapıyı aç.

6 İçeri gir, kapıyı kapat.

7 Telefon kartını telefona yerleştir.

8 Ahizeyi kaldır.

9 Numarayı çevir.

10 Konuşmanın bitip bitmediğine bak.

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

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

13 Kapıyı aç, dışarıcık.

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

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

verilmelidir. Bu algoritmanın ihtiyaç duyduğu veriler ya kullanıcı tarafından verilir ya da işlem

başlamadan önce belirlidir. Sıradaki kişi sayısı, telefon kartı gibi veriler kullanıcı tarafından

sağlanmış; çevrilecek numara, algoritma başlamadan önce belirlenmiştir.

Algoritma ve Dump Coding 2010 2011

32

Dump Coding Nedir?

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

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

takip etmektir. Örnek: İki sayının OBEB‟ini (ortak bölenlerin en büyüğünü) alan algoritmalardan bir

tanesi Euclid tarafından geliştirilmiştir.

1 İki sayı gir. Büyük A, küçük B.

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

3 A sayısının değerini, kalan sayının değeri yap.

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

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

1 İki sayı girilir. A = 12 ve B = 8.

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

3 Kalan sayı = 4. Dolayısıyla A = 4 olur.

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.

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

Akış Diyagramlarında Kullanılan Semboller

Bilgisayara Giriş 2010 2011

33

Madde madde yazılan algoritmaların okunması kolaydır, ancak işleyişin bütününü görmek, çoğu

zaman mümkün değildir. Akış diyagramları, algoritmaları görsel biçimde göstermeyi, dolayısıyla

daha anlaşılır hale getirmeyi sağlar. Algoritmada yapılacak işlemlerin çeşitlerine göre çeşitli

semboller kullanılır.

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

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

olmalıdır (Resim 5.1).

Veri Girişi. Kullanıcıdan ve başka bir kaynaktan alınan verilerin isimlerini tutar (Resim 5.2).

Karar Verme. Karar yapısını belirten semboldür. Üstünde koşul ifadesi belirtilir (Resim 5.3).

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

çin ayrı bir fonksiyon sembolü

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

Algoritma ve Dump Coding 2010 2011

34

belirtilir (Resim 5.8).

Algoritma Uygulamaları

I. Bilet Satma

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

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

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

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

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

yerler satılmıştır.

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

bilgilerini baştan almak için ilk etaba dönülür.

5 Kullanıcıdan oturmak istediği yer bilgisi alınır.

6 İstediği yerin dolu olup olmadığı kontrol edilir.

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

dönülür.

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

Bilgisayara Giriş 2010 2011

35

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

Çay Demleme

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

olayları içeren algoritma kurulur (Resim 5.10).

1 Kullanıcıdan su vermesi beklenir.

2 Suyu ısıtma işlemi yapılır.

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

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

yapılır.

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

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

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

işleminin ne zaman biteceği bilgisini tutar.

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

dolmamış demektir. Bu süre dolana kadar 7. etap tekrarlanır.

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

Üniversite Eğitim Notunu Hesaplama

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

notunun katsayısı finalden daha düşüktür. Sonuçta çıkan not 50 ve üstündeyse öğrenci geçer,

50‟nin altındaysa kalır. Bu örnek, vizenin %30 ve finalin %70 ağırlıklı olduğu başarı notunun

hesaplanmasını akış diyagramıile gösterir (Resim 5.11).

Algoritma ve Dump Coding 2010 2011

36

1 Notu hesaplanacak öğrencinin numarasıkullanıcıdan alınır.

2 Veritabanından öğrencinin vize ve final notları çekilir.

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

notu 100 olsa dahi, sonuç olarak toplanan not 50‟nin altında olur. Dolayısıyla öğrencinin kalması

kesinleşir. Böyle bir kontrol yapılması, gereksiz işlemlerin yapılmasını engeller.

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

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

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

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

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

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

Bilgisayara Giriş 2010 2011

37

Alıştırmalar

Kaynak: http://www.biltek.tubitak.gov.tr

Aşağıdaki sorular Yeryüzünde henüz cevabını kimsenin bilmediği sorular!

Ancak biz bunların cevabını bulmayacağız tabii

Bu sorulardan yararlanarak bazı problemler yapalım…

I. Soru Asal sayılara ilişkin pek çok bilgi henüz gün ışığına çıkmadı. Bunun yanı sıra ortaya atılmış ama

ispatlanmamış pek çok da kestirim var. İşte bunlardan biri:

• İkiz Asallar: İkiz asallar yani aralarındaki fark 2 olan asallar sonsuz tane midir? Bende bilmiyorum

ve tabii ki bunu bulmanızı istemicem

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

Veee soru.

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

programın algoritmasını yazınız.

Soru Mükemmel Sayı Sorusu

Mükemmel sayı kendisi haricindeki tüm çarpanlarının toplamı kendisini veren sayıdır. Örneğin 6 bir

mükemmel sayıdır çünkü kendisi haricindeki çarpanları yani 1, 2 ve 3 toplanınca kendisini verir: 1 +

2 + 3 = 6. Diğer örneklerse 28, 496, 8128 şeklinde gidiyor. Şimdiye kadar hiç tek mükemmel bir

sayıya rastlanmamış. Merak edilen böyle bir sayının var olup olmadığı. Eğer vardır diyorsanız bu

sayıyı, saklandığı yerden bulup çıkarmalı, ya da olmadığını iddia ediyorsanız bunu ispatlamalısınız.

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

mükemmel sayılardan oluşan verilen 2x2 lik mükemmel bir matris oluşturacak şekilde algoritma

yazmanız…. Yani bu durumda matrisinizin elemanları 6,28,496,8128 olacaktır.

Soru Palindromik Sayılar

Algoritma ve Dump Coding 2010 2011

38

Kapak, kütük, sus, yay, kepek kelimeleri ilginç bir ortak özellik ile dikkat çekiyor: düzden ve tersten

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

okunduğunda aynı olan sayılardır: 1991, 10001, 12621, 79388397, 82954345928.

Bu alandaki açık soru ise şöyle:

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

sormayacağım. Sanırım asallarla çok işimiz var.

Soru şu:

• Bileşenleri Palindromik sayı olan NxN matris oluşturacak şekilde programın algoritmasını

yazınız.

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

Soru

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

matrisi yazdıran programın algoritmasını yazınız.

Soru Kendisi dışındaki tüm bölenlerinin toplamı kendisinden büyük olan her pozitif tam sayıya verimli sayı

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

sayısı bir verimli sayı değildir. Öte yandan, kendisi dışındaki tüm bölenlerinin toplamı

1+2+3+5+6+10+15 = 42 > 30 olduğundan, 30 sayısı bir verimli sayıdır.

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

algoritmasını yazınız.

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

Herkese çok kolay gelsin.

Arzu Erdem

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

39

Bölüm 6. Visual Basic.NET ile Windows Tabanlı Programlama

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

uygulamaları Windows formları ve kontrollerinden oluşur. Visual Studio bu formların ve üzerindeki

kontrollerin tasarımını ve kodların yazılmasını büyük ölçüde kolaylaştırarak, uygulama geliştirme

sürecini daha hızlı ve kolay hale getirir.

Bu bölümü tamamladıktan sonra;

tabanlı programlamada kullanılan kontrolleri tanıyacak,

t ve olay kavramlarını öğrenecek,

tanımlamayı öğrenecek,

Bilgisayara Giriş 2010 2011

40

Konu 1. İlk Uygulama (Hello World, The Time

Is...)

Visual Basic .NET ile yazacağımız Windows uygulaması ekrana, “Hello World!” yazısını ve o anki

zamanı gösteren bir bilgi mesajını çıkartır.

1 Visual Studio çalışma ortamını açın.

2 File menüsünden, New alt menüsünü ve Project komutunu seçin. “New Project” iletişim

kutusu, yazılacağı dile, çalışacağı ortama göre değişen proje tiplerini listeler.

3 Proje tiplerinden Visual Basic Project ve Windows Application tipinin seçili olduğunu kontrol

edin.

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

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

5 Toolbox panelinden Button kontrolünü formun üzerine sürükleyip bırakın. Properties panelini

açarak Button kontrolünün Text özelliğine “Hello World!” yazın.

6 Eklenen Button kontrolünü çift tıklayarak kod sayfasına geçin. Button kontrolü tıklandığında

çalıştırılacak kodu yazın:

MsgBox("Hello World! The time is " & Now)

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

kolaylaştırır. Yorum satırları tek tırnak 'ile başlayarak yazılmalıdır.

7. MsgBox metodunun yazıldığı kodun üstüne, yapılmak isteneni belirten bir yorum satırı yazın.

' MsgBox metodu ile kullanıcıya Merhaba diyoruz. ' Now özelliği ile o andaki saat ve gün ' değerlerini

de kullanıcıya gösteriyoruz.

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

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

41

İPUCU Çalışma sayfaların isimlerinin yanında yıldız işaretinin gözükmesi, o sayfada değişiklik

yapıldığını, ancak henüz kaydedilmediğini belirtir. Proje dosyalarınızı CTRL+S tuşlarına basarak sıkça

kaydedin.

Özellikler, Metotlar ve Olaylar

.NET kontrolleri üç temel kavramdan oluşur.

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

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

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

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

değiştirilebilir. Ancak bazı özellikler salt okunur (ReadOnly) ve salt yazılır (WriteOnly) olabilir. Bu

tip özellikler Properties panelinde gözükmezler.

Kontrollerin birçok ortak özellikleri vardır.

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

sıkça okunup değiştirilerek kullanıcıyla iletişim sağlanır.

TextBox kontrolüne girilen bir değerin okunup Label kontrolüne yazılması için, kontrollerin Text

özellikleri kullanılır.

Private Sub Button1_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = TextBox1.Text

End Sub

Bilgisayara Giriş 2010 2011

42

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

özelliği aynı olabilir. Ancak her biri ayrı birer nesne olduğu için, Name özelliklerinin benzersiz olması

gerekir.

TextBox2.Text = TextBox1.Text

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

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

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

değiştirilebilir.

Label1.Height = 10 Label1.Width = 20

BackColor (Arka plan rengi). Kontrollerin arka plan renginin ayarlandığı özelliktir. Bu özelliğin

değeri, Color (renk) nesnesinde tanımlı değerlerle belirlenir.

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

Private Sub Button1_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles Button1.Click Button1.BackColor = Color.Black

Button1.ForeColor = Color.White

End Sub

Visible (Görünür). Kontrollerin ekranda görünüp görünmediklerini belirleyen özelliktir. True ve

False olmak üzere iki değer alabilir. Boolean veri tiplerinden bu modülde bahsedilecektir.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

Button1.Click

'Label kontrolünü gizle

Label1.Visible = False

'Label kontrolünü göster

Label1.Visible = True

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

43

End Sub

End Class

Metotlar Metotlar kontrollerin yaptığı işlemlerdir. Metotlar parametreyle veya parametresiz çağrılabilir.

Parametreyle çağırmak, metodun girilen değere göre işlem yapacağını belirtir. Örneğin

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

Private Sub Button1_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles Button1.Click ' İşlem yapıldıktan sonra ' TextBox kontrolüne

odaklan TextBox1.Focus()

End Sub

Kontrollerin bazı ortak metotları vardır.

Select (Seç). Select metodu Focus ile aynıdır, ama TextBox kontrolünün Select metodunun

diğerlerinden bir farkı vardır. TextBox içindeki yazının belli bir kısmını ya da tamamını, verilen

parametrelere göre seçer (Resim 4.3).

Private Sub Button1_Click(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "Yazılım Uzmanı"

TextBox1.Focus()

' Sekizinci karakterden sonra, beş karakter seç TextBox1.Select(8, 5)

End Sub

RESİM 4.3

BringToFront (Öne Getir). Kontrolü, üst üste duran kontroller arasından en öne getirir.

SendToBack (Arkaya Gönder). Kontrolü, üst üste duran kontrollerin en arkasına gönderir.

Hide(Sakla). Kontrolün gözükmesini engeller.

Show(Göster). Kontrolün gözükmesini sağlar.

Olaylar Olaylar kontrollerin başına gelen işlemlerdir. Olayların metotlardan farkı, bu işlemlerin kontrollerin

elinde olmadan gerçekleşmesidir. Örneğin bir Button kontrolünün tıklanması, o kontrolün isteği

dışında yapılmıştır. Bu olayın tetiklenmesinde kontrolün bir rolü yoktur. Bu olaylar gerçekleştiği

zaman yapılması gereken işlemler, ilgili olayın yordamına yazılır. Button1 isimli kontrol tıklandığı

zaman gerçekleştirmek istenen eylemler Button1_Click yordamına yazılır.

Bilgisayara Giriş 2010 2011

44

Visual Studio ortamı, kontrollerin olaylarını kolay bir şekilde seçmeyi sağlar. Kod sayfalarında

kontrollerin bulunduğu listeden, istenen kontrol seçilir. Kontrolün olaylarının listelendiği diğer

listeden de istenen olay seçilir (Resim 4.4).

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles

MyBase.Click MsgBox("Form üzerine tıklandı") End Sub

Visual Studio, olayların yordam isimlerini Kontrol İsmi_Olay İsmi biçiminde yazar.Kontrollerle

çalışırken benzer olaylar kullanılır.

Click (Tıklandığında). Kontrol tıklandığı zaman tetiklenen olaydır. Windows tabanlı

programlamada en sık kullanılan olaylardan biridir.

MouseDown (Fare düğmesi basıldığında). Fare, kontrolün üzerindeyken herhangi bir düğmesine

basıldığı zaman gerçekleşen olaydır. Bu olay, Click olayından önce çalışır.

MouseUp (Fare düğmesi bırakıldığında). Fare, kontrolün üzerindeyken basılan düğme bırakıldığı

zaman çalışır.

Enter (Girildiğinde). Kontrol seçildiği veya üzerine odaklanıldığı zaman gerçekleşen olaydır.

Leave (Çıkıldığında). Başka bir kontrol seçilmek üzere çıkıldığında, bu kontrolün Leave olayı

tetiklenir.

VisibleChanged(Görünürlüğü değiştiğinde). Kontrolün görünüp görünmediğini belirten

Visibleözelliği değiştiği zaman tetiklenir.

İPUCU Olayların çalışma sıralarını test etmek için tüm olay yordamlarına, mesaj kutusu çıkaran

(MsgBox) kod yazın. Daha sonra projeyi çalıştırıp kontroller üzerinde yapılan değişikliklere göre

olayların çalışma sıralarına bakın.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

45

Visual Basic.NET‟e Kontrollerin Eklenmesi

Windows tabanlı uygulamalar geliştirirken sıkça kullanacağımız bir grup kontrol vardır. Form

kontrolü hariç diğer bütün kontroller Toolbox panelinden seçilir. Bu kontroller sürüklenip form

üzerinde istenen pozisyona bırakılır (Resim 4.5).

Şekil 4.5

Kontroller, Toolbox panelinde çift tıklanarak da eklenebilir.Kontrollerin tasarım anında büyüklükleri

ve yerleri Size ve Location özellikleri ile değiştirilebileceği gibi, fare ile de istenen şekilde

ayarlanabilir (Resim 4.6).

Şekil 4.6

Uygulamaların özellikleri ile ilgili örnekler için dosyasını açınız!

Bilgisayara Giriş 2010 2011

46

Form

Windows uygulamaları, Windows kontrollerinin tutulduğu pencereler olan formlardan oluşur. Bir

Windows projesi açıldığı zaman Form kontrolü otomatik olarak eklenir. İkinci bir form eklemek için

Project menüsünden Add Windows Form komutunu seçilir. Proje çalıştığı zaman başlangıç formu

görüntülenir. Başlangıç formu projenin özelliklerinden değiştirilir (Resim 4.7 ve Resim 4.8)

Şekil 4.7

Şekil 4.8

Visual Studio ortamında formlar, tasarım sayfası ve kod sayfası olmak üzere iki farklı sayfada

görüntülenir. Tasarım sayfası, formun ve üzerindeki kontrollerin görünümlerini kolay bir şekilde

değiştirmeyi sağlar. Visual Studio bu sayfada yapılan değişiklikleri kod sayfasında eşzamanlı olarak

günceller. Örneğin, bir Button kontrolünün genişliğini fare ile değiştirdiğimiz zaman, kod sayfasında

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

47

bu kontrolün Width özelliği yapılan değişikliğe göre güncellenir. Aynı değişiklikler Properties

panelinde de görülebilir.

Formların, diğer kontrollerin özelliklerinden farklı bazı özellikleri vardır.

ControlBox (Denetim kutusu). Form üzerindeki simge durumuna küçültme, ekranı kaplama ve

formu kapatma (Minimize / Maximize / Close) kutularının görünümünü ve erişilebilirliğini kontrol

eder.

NOT Formun ControlBox özelliği False iken uygulama, Debug menüsünden Stop Debugging komutu

seçilerek kapatılabilir.

StartPosition (Başlangıç pozisyonu). Form açıldığı zaman nerede gözükeceğini belirler.

CenterScreen seçeneği formu ekranın ortasında gösterir.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles MyBase.Load

Label1.Text = "Proje başlatıldı. Kayıt zamanı: " &

Now

End Sub

Form Özellikleri Özellik Değer Tipi Açıklama

AcceptButton Button Form üzerinde Enter tuşuna basıldığı zaman “tıklanacak” Button

kontrolü

AllowDrop Bu özelliğin “True” olması ile resim dosyalarını formunuzun üstüne

sürükleyip bıraktığınızda şekil formunuzun üstünde kalabilecektir.

(Sadece True olması yeterli değildir. Formunuzun DragDrop olayı

ile kod ekranında istediğiniz formatı vermeniz gerekmektedir.)

AutoScroll Panel içinde kaydırma çubuklarının eklenmesini istiyorsanız bu

özelliği “True” yapmalısınız.

AutoSize “True” ise nesnenin boyutlarını değiştiremeyebilirsiniz. Bu

durumda nesnenin boyutlarını değiştirmek istiyorsanız “False”

yapmalısınız.

AutoValidate (i) Disable: Onaylama işlemleri bu özellik ile kapanır.

(ii) EnableAllowFocusChange: Onaylama işlemleri

ulaşılabilirdir. Fakat onaylama işlemi başarısız olursa işlem yeni bir

kontrole geçer. Validated olayı çalışmaz.

(iii) EnablePreventFocusChange: Onaylama işlemi kontrol

başarısız olsa bile gerçekleşir.

(iv) Inherit: Otomatik kontrol davranışını içerdiği bir

formdan veya başka bir kontrolden alır. Eğer içerdiği bir kontrol

Bilgisayara Giriş 2010 2011

48

davranışı yok ise otomatik olarak EnablePreventFocusChange

olarak atar.

BackColour Nesnenizin arka plan rengini değiştirir.

BackgroundImage Nesnenizin arka planına resim koymak istiyorsanız bu özellikten

yararlanacaksınız.

BackgroundImageLayout Resminizin ortalı, dayalı,… vb. gibi olmasını istiyorsanız bu özelliği

kullanacaksınız.

CancelButton AcceptButton‟un aksine formunuzda ESC düğmesini aktif hale

getirme işlemini yapar.

CauseValidation Validating veya validated olaylarının meydana gelmesi için bu

özelliğin “True” olması gerekir.

ContextMenuStrip ContextMenu kontrolü sağ fare tuşu ile açılan menüler oluşturmak

için kullanılır.

ControlBox Max. Min. Ve kapatma ile ilgili kontrolleri kullanmak

istemiyorsanız bu özelliği “False” yapmalısınız.

Cursor Fare kontrol üzerine geldiğinde fare göstergesinin alacağı şekil bu

özellik ile belirlenir

DoubleBuffered Kontrolünüzün yüzeyinin çizilebilir olmasını istiyorsanız “True”

özelliğinde olmalı.

Enabled Kontrolünüzü erişilebilir olması için “True” özelliğinde olmalıdır.

Font Kontrolünüzdeki yazı tipini belirlemek istiyorsanız buradan

değişiklik yapabilirsiniz.

ForeColour Kontrolünüzdeki yazı renklerini buradan değiştirebilirsiniz.

FormBorderStyle Bu özellik ile formun çerçeve şeklini belirleyebilirsiniz.

(i) Sizable: Otomatik olarak atana değerdir. Formun

kapatılması, boyutlandırılması ve taşınması mümkündür.

(ii) FixedSingle: Boyutları değiştirilemeyen ancak taşınabilir

bir form oluşturur. Ekran boyutu yalnızca ekranı kapla ve simge

durumuna küçült seçenekleri ile değişir.

(iii) Fixed3D: Aynı FixedSingle da olduğu gibi boyutları

değiştirilemeyen bir form oluşturur. Tek farkı 3 boyutlu bir

görünüme sahip olmasıdır.

(iv) FixedDialog: Boyutları değiştirilemeyen ve sistem menüsü

(ControlBox) olmayan bir form oluşturur. Genelde diyalog

pencereleri oluşturmak için kullanılır.

(v) FixedToolWindow: Normal forma göre başlığı daha küçük

olan, kontrol menüsü olmayan ve boyutlandırmayan bir form

oluşturur. Ekranı kapla ve simge durumuna küçült düğmeleri

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

49

bulunmaz.

(vi) SizableToolWindow: FixedToolWindow ile hemen hemen

aynı olup tek farkı boyutlandırılabilir olmasıdır.

(vii) None: Çerçevesi, başlığı, kontrol kutusu, ekranı kapla ve

simge durumuna küçült düğmeleri olmayan bir form oluşturur.

HeplButton Bu özelliği “True” yaparak formlarınıza düğmesini ekleyebilirsiniz.

Formun üzerinde bu düğmenin bulunabilmesi için:

(i) ControlBox özelliği True olmalıdır.

(ii) FormBorderStyle özelliği, FixedSingle, Fixed3D, Sizable

veya FixedDialog olmalıdır.

(iii) MaximizeBox ve MinimizeBox özellikleri False olmalı.

(iv) Formunuzun üstüne bir TextBox yerleştirin.

(v) Textbox‟un HelpRequested olayına

Help.ShowPopup(TextBox1, _

"Buraya ne görüntülenmesini istiyorsanız yazın...", _

hlpevent.MousePos)

ifadesini yazın ve formunuzu çalıştırın.

Icon Formunuzun ikonunu değiştirmek için gerekli olan bir özelliktir.

İkon dosyalarının uzantısı *.ico olduğu için buradaki dosyanızın

*.ico uzantılı olması gerekmektedir.

ImeMode Nesneniz seçili olduğunda nesnenizin the Input Method Editor

(IME) durumunu verir.

IsMdiContainer Tek başına çalışan formlara SDI form denir. Normalde yeni bir

projeye başlarken projede bulunan form ve daha sonra eklenen

formlar SDI formlardır. Bir formun IsMdiContainer özelliğini true

yaparsak o form MDI form haline dönüşecektir. MDI formlar içinde

kendisine bağlı formlar bulundurur Bu formlar (Child form) MDI

formuna bağlıdır. MDI forma bağlıdır. Formunuzu MDI-Child yapma

işlemini tasarım ile değil, kod ile yapabilirsiniz.

KeyPreview Bu özelliği True yaparsanız herhangi bir tuşa basıldığında, o

kontrolün Key olayları ile birlikte Formun da Key olayları meydana

gelir.

Örnek: F10‟ basıldığında programdan çıkmak istiyorsunuz. Bu

durumda kodu hangi kontrolün Key olayına yazacaksınız?

Programınızda bir sürü kontrol olabilir. Programınızdaki tüm

kontrollerin KeyDown olayına F10 tuşunu algılayacak kodu

yazmaktansa Formun KeyPreview özelliği True yapılır. Daha sonra

Bilgisayara Giriş 2010 2011

50

formun kod kısmına

Protected Overrides Sub OnKeyDown(ByVal e As

System.Windows.Forms.KeyEventArgs)

MyBase.OnKeyDown(e)

If Keys.F10 Then end

End Sub

Konutlarını yazıp programınızı çalıştırdıktan sonra F10 tuşuna

bastığında programınızın kısayol olarak sonlandığını göreceksiniz.

Language Dil özelliklerini belirler.

Localizable Dil seçenlerinizin kullanılabilir olması için bu özelliğin True olması

gerekmektedir.

Location Kontrolünüzün x- ve y- koordinatlarını belirler. Fareyle de

belirleyebileceğiniz gibi hassas ayarlar için elle giriş yapabilirsiniz.

Locke True olduğunda kontrolün kilitlenmesini sağlar.

MainMenuStript Formunuza yerleştirdiğiniz MenuStript özelliği için geçerlidir.

MaximizeBox True olduğunda ekranı kapla düğmesi kullanılabilirdir.

MinimizeBox True olduğunda simge durumuna küçült düğmesi kullanılabilirdir.

Opacity: Bu özelliğin değeri normalde 100% dır. Bu değeri azalttıkça

formunuzun saydamlaşmasını ve alttaki belgeyi göstermesini

sağlarsınız.

Padding Kontrolün kenarlara olan uzaklığını verir.

RightToLeft Kontrolün text yazısını sağdan sola doğru yazılması için Yes olarak

seçilmelidir

ShowIcon İkonun görünebilir olması için bu özelliğin True olması gerekir.

Size Kontrolün boyutlarını belirlemek için kullanılır. Fare ile de

belirleyebilirsiniz.

SizeGripStyle Formunuzun sağ alt köşesinde sembolünü görmek istiyorsanız

bu özelliği Show olarak ayarlayınız.

StartPosition Form açılırken ekrandaki koordinatların belirlenmesi için

kullanılan özellikleri:

(i) CenterScreen: Form ekranın ortasında açılır.

(ii) CenterParent: Form içinde bulunduğu formun ortasında

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

51

açılır. (MDI Child formlar gibi)

(iii) Manual: Form tasarlanırken bulunduğu koordinatlarda

açılır.

(iv) WindowsDefaultBounds: Formun koordinatları ve boyutları

Windows tarafından belirlenir.

(v) WindowsDefaultLocation: Formun koordinatları Windows

tarafından belirlenir

Tag Bu özelliğin Visual Basic için hiçbir anlamı yoktur. Kullanıcı bu

özelliği bir değişken gibi kullanarak istediği bilgiyi saklayabilir.

Text Kontrolün başlığıdır.

TopMost Formun devamlı üstte durmasını istiyorsanız bu özelliğin True

olması gerekir. Örneğin Word‟de kelime arama formunu düşünün.

TransparencyKey Formunuzu görüntü olarak özelleştirmek istiyorsanız bu özelliği

kullanın.

Örnek:

Şeklinde Paint de bir dosya oluşturun ve kaydedin.

Formunuzun BackgroundImage‟ne bu resmi yerleştirin.

TransparencyKey özelliğindeki arka plan rengini resminizin arka

plan rengi olarak seçin. (Benim örneğimde mavi olacak!)

Formunuzu çalıştırdığınızda formunuzun saydam bir özellikte

olduğunu göreceksiniz.

UseWaitCursor Fare göstergesinin, formun üstüne geldiğinde program çalışıyormuş

formatında görünmesini istiyorsanız bu özelliği True yapmalısınız.

WindowsState Form açıldığında hangi formatta olduğunu buradan

belirleyeceksiniz.

(i) Normal: Normal olarak açılacaktır

Bilgisayara Giriş 2010 2011

52

(ii) Minimized: Simge durumunda açılacaktır.

(iii) Maximized: Tam ekran durumunda açılacaktır.

Form Olayları Olay Açıklama

Click Form üzerine tıklandığı zaman gerçekleşir

Closing Form kapanmadan hemen önce gerçekleşir

Closed Form kapandıktan sonra gerçekleşir

Load Form yüklenirken gerçekleşir

KeyDown Form üzerindeyken bir tuşun basılması ile gerçekleşir

KeyUp Basılan tuşun kaldırılması ile gerçekleşir

Örnek: Form açıldığında, fare yer değiştirdiğinde, form kapatıldığında, formun üstüne (çift)

tıklandığında mesaj veren program yazınız. (Program için dosyanın üzerine tıklayınız! )

Form Metotları Metot Açıklama

Hide Visible özelliğini False yaparak formu gizler

Close Formu kapatır. Eğer form başlangıç formuysa uygulama sonlanır

Show Formu gösterir. Hide ile gizlenmişse, Visible özelliği True yapılır.

ShowDialog Formu iletişim kutusu olarak gösterir.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

53

Button

Bir Windows düğmesini temsil eder. Button kontrolü tıklandığında Click olayı tetiklenir. Bu olay

gerçekleştiği zaman yapılacak işlemler, Button İsmi_Click yordamında yazılır.

Private Sub btnRenkDegistir_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnRenkDegistir.Click

btnRenkDegistir.ForeColor = Color.Gray

End Sub

Button Özellikleri Özellik Değer Tipi Açıklama

Anchor Anchor kelime anlamı olarak demir atmak demektir. Bu özellik

ile formunuzun boyutları değişse de kontrolünüz belirlediğiniz

konumda sabit kalacaktır.

AutoEllipsis Bu özelliği True yaparak okunmayan yazıları ipucu gibi

görüntüleyebilirsiniz. Bunun için AutoSize seçeneğinin False

olması gerekmektedir.

Dock Bu özellik ile herhangi bir kontrolün, formun belirlemiş

olduğunuz bir kenarına alınmasını sağlarsınız.

ImageList Butonun arka planında resmi kapsanmış bir şekilde değil de bir

ikon gibi görünmesini istiyorsanız bu özelliği kullanacaksınız.

Örnek:

Toolbox penceresinde Components sekmesinden formunuza bir

ImageList kontrolü yerleştirin. ImageList formda görünmeyen

Bilgisayara Giriş 2010 2011

54

kontrollerdendir.

ImageList‟in Properties penceresinde Images seçeneğinden

resimler belirleyin.

Seçmiş olduğunuz butonun ImageList özelliğinde formunuza

koymuş olduğunuz ImageList‟inizi seçin. ImageIndex özelliğinden

istediğiniz resmi seçip, ImageAlign özelliği ile resminizin butonun

neresinde olmasını ayarlayın.

TabIndex Klavyedeki Tab kontrolünü bu özellik ile belirleyebilirsiniz. Bu

özellikte vermiş olduğunuz numaralandırma sizin tab

kontrolünüzün sırasını belirler.

TabStop True olduğunda nesneye Tab ile ulaşabilirsiniz.

TextAlign Kontrolünüzün üstünde bulunan yazının hizalamasını buradan

belirleyebilirsiniz.

TextImageRelation Butonunuzda yazı ile birlikte şekilde varsa bunların ilişkisini bu

özellik ile ayarlayabilirsiniz.

UseCompatibleTextRendering Uyumlu olabilen yazıları bir araya toplar.

UseMnemonic Bu özelliği True yaparak yazı da (kısayol tuşu olarak

kullanılabilen) & sembolünü kullanmanızı sağlayabilirsiniz.

Visible Kontrolünüzün görünmesini istiyorsanız True olarak seçin aksi

durumda False olarak seçin.

Örnek1. Hokus – Pokus programımın adı ve bir butona tıkladığımda diğeri kaybolsun, bazı

textbox ve labelların arkafon rengi, yazı tipi değişsin.

Örnek 2. Sinir eden programımın adı: iki butonun üzerine gittiğimde görünmez oluyor (veya yer

değiştiriyor)!

Örnek 3. Rengarenk programımın adı..butonlara bastıkça arka font rengi değişiyor.

Örnek 4. Sayıları rakam ve yazı ile veren program.

Programlar için „ye tıklayın.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

55

Değişken – Sabit Nedir? Değişkenlerin ve

Sabitlerin Tanımlanması

I. Değişken Nedir, Nasıl Tanımlanır? Program yazarken, bazı verilerin daha sonra kullanılmak üzere bir yerde tutulması gerekebilir.

Örneğin, bir hesaplama yapılırken, önceden hesaplanmış verilerin kullanılması istenirse, bu verileri

tekrar hesaplamak yerine hafızada tutmak performansı artırır. Veya veritabanından alınan bir

kullanıcı isminin hafızada tutulması, bu değer her istendiğinde veritabanına bağlanıp alınmasına

tercih edilmelidir. Verilerin bu şekilde hafızada tutulması değişkenlerle sağlanır.

Değişkenler farklı türlerde verileri tuttukları için, farklı tiplere sahip olabilir. Bir negatif veya pozitif

sayıyı tutan değişken ile yazı tutan bir değişken farklı tiplere sahiptir.

Değişkenler Dim anahtar kelimesi ile tanımlanır.

Dim sayi

NOT Dim sözcüğü, “boyut” anlamına gelen Dimension kelimesinin kısaltmasıdır.

Bu şekilde tanımlanan değişkenler Object (nesne) tipindedir, yani her türden veriyi tutabilirler.

Nesne tipindeki değişkenler, tanımlanmalarının kolay olması ve istenen tipte değer tutabilmeleri

açısından avantajlı olsa da, performansı önemli ölçüde düşürürler. Tuttukları değerlerin tipleri

biliniyorsa, değişkenleri tanımlarken tiplerini belirlemek gerekir.

Bilgisayara Giriş 2010 2011

56

Sayısal Tipler: Byte, Short, Integer, Long, Single, Double, Decimal

String Tipler: String, Char

Mantısal Tipler: Boolen

Tarih Tipi: Date

Tanımlama Kuralları Boşluk, nokta, soru işareti, noktalı virgül, çift tırnak, tek tırnak, aritmetik operatörler, karşılaştırma

operatörleri ve atama operatörleri ile parantezler kullanılamaz.

Dim Ad1 Doğru

Dim 1Ad Yanlış

Dim Ad_Soyad Doğru

Dim Ad ve Soyad Yanlış

Dim Ad-Soyad Yanlış

Dim Ad_Soyad Doğru

Değişken ismi 255 karakterden fazla olmamalıdır.

Dim x,y,z as Integer, t,k as String

Değişkenlerin tanımlanma¬dan kullanılması için Option Explicit seçeneğinin kapalı olması gerekir.

Option Explicit seçeneğini projenin özelliklerindeki Build sekmesinden değiştirilebileceği gibi, kod

sayfalarının en üstünde de değiştirilebilir.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

57

Option Explicit seçeneğinin On olması, tanımlanmamış değişkenlerin kulla¬nılmasına izin vermez,

tasarım anında hata üreterek programcıya bildirir. Varsayılan durumda Ondeğeri seçilidir.

Sayısal Tipler Byte: 1 Baytlık 0 ile 255 arasında değer alır.

Short: 2 Baytlık -32.768 ile 32.767 arasında değer alır.

Integer: 4 Baytlık -2.147.483.648 ile 2.147.483.647 arasında değer alır.

Long: 4 Baytlık -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasında değer alır.

Single: 4 Baytlık 3.4028233810 ile 1.401298

4510 arasında değer alır.

Double: 8 Baytlık 1.7976931348623230810 ile 4.94065645841247

32410 arasında değer alır.

Decimal: 14 Baytlıktır ve 29 basamağı tüm dijitleri koruyarak tutabilir.

Sayısal hesaplamalarda hassasiyet için Decimal kullanmanızı öneririz.

Örnek: Sayı hassasiyeti ile ilgili örnekler ve sayıların gösterimleri ile ilgili bir uygulama…

X=1234567890123456789

Y=X+5

Z=X/(X-Y)

Single ve decimal olarak tanımlandığında farkları…

Sınır aşımlarına dikkat!

Val(String): Text kutularında sayı olup olmadığını anlamak için IsNumeric komutunu kullanmak

kodunuzu uzatabilir. Böyle bir durumda hatalı veri girişini engellemek için bu komutu kullanırız.

Val fonksiyonu ondalık ayıracı olarak nokta işaretini kabul eder. Eğer ondalık ayıracı kullanmak

istiyorsanız Val yerine Cdec fonksiyonunu tercih etmelisiniz.

Bilgisayara Giriş 2010 2011

58

Sayıların Yuvarlanması \ Operatörü Sonucu tamsayı gösterir. Virgülden sonrasını yuvarlama yapmaksızın atar.

Int(sayı) Kendinden düşük olan sayıya tam sayı olarak yuvarlar. Tam değer gibi düşünebilirsiniz.

Fix(sayı) Int(sayı) dan farkı sadece virgülü atar.

Math.Round Diğerlerinden farkı istediğiniz ondalığa kadar gösterme ve yuvarlama işlemini yapar.

Sayıları Biçimlendirme Format: Format(sayı,”##,## TL”)

Örnek: Sayıların Yuvarlatılması ile ilgili uygulama

Global ve Local Değişkenler - Dim ile tanımlanan değişken bir prosedür veya bir fonksiyonun içinde tanımlanmış ise Local,

dışında tanımlanmış ise Global olarak adlandırılır.

- Bir değişken Public Shared ile tanımlanıyorsa tüm formlarda ve tüm modüllerde kullanılabilir.

- Bir değişkeni programın her tarafında kullanacak şekilde tanımlamak için bir Modülün içinde Public

deyimi ile kullanmak gerekir.

Değişkenlere değer atamayı aşağıdaki şekillerde yapabilirsiniz:

Dim a=1, b=2

------------

Dim a,b

a=1

b=2

-----------

Dim a as integer=1, b as integer=2

Static Değişken Tanımı Local olarak tanımlanan bir değişkenin , tanımladığı altprogram veya fonksiyonun çalışması bittikten

sonra değerinin korunması isteniyorsa Dim yerine Static deyimi kullanılır. Static değişkenlere değer

atama aşağıdaki şekilde yapılır.

Static a=1

------------

Static a „ Yanlis kullanim…

a=1

-----------

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

59

Sabit Tanımlama Const Sabit_Ismi=Degeri (Const pi=3.1415)

Örnek 1. Global değişken için örneğimiz: basit bir hesap makinesi yapınız. 2 textbox toplma,

çıkarma, bölme ve çarpma butonları ve 2 değişken global olarak tanımlansın.

Örnek 2. Statik değişken için örnek: Kaç kere tıkladığımızı veren program.

If

If karar yapısı, bir koşul sağlandığı zaman yapılacak işlemleri kapsar. Kontrol edilecek koşul ifades

inin sonucu True değerini alırsa, If - EndIf bloğu arasındaki kodlar çalıştırılır.

If Şart Then

Komutlar

ElseIf Şart

Komutlar

ElseIf Şart

Komutlar

Else

Komutlar

End If

Bilgisayara Giriş 2010 2011

60

If Şart then

Komutlar

End If

Tek şartımız varsa End If kullanmayabiliriz!

If Şart Then Komutlar Else Komutlar

If Şart Then Komutlar

Örnek 1:

1 , 0

,0 2( )

3 ,2 4

4 , 4

x

x xf x

x

x x

ile tanımlanan fonksiyonun dışarıdan girilen “x” değerine

göre ( )f x ‟i hesaplayan programın VBasic dilinde yazınız.

Örnek 2. 2( ) 5 3f x x x fonksiyonu için sgn ( )f x fonksiyonunu hesaplayan programın

VBasic dilinde yazınız.

Örnek 3. Dışarıdan girilen bir sayının tek mi çift mi olduğunu veren programı VBasic dilinde

yazınız.

Örnek 4. Dışarıdan girilen 2 sayıdan büyük olanı veren programı yazınız.

Örnek 5. Dışarıdan girilen herhangi bir sayının negatifi pozitif veya 0 olduğunu veren programın

VBasic dilinde yazınız.

Örnek 6. Dışarıdan girilen herhangi bir negatif sayıyı pozitif sayıya çeviren programın VBasic

dilinde yazınız.

Örnek 7. Dışarıdan girilen herhangi bir pozitif sayıyı negatif sayıya çeviren programın VBasic

dilinde yazınız.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

61

Örnek 8. Katlı bir otoparkta arabalar girişte plaka numaraları, sahibinin adı ve giriş saati

kaydedilecektir. Garaj yöneticisi araba sahibi gelip plakasını veya ismini söylediğinde arabanın

kalma süresi ile orantılı olan ücretini bulup fişini kesebilecek programın VBasic dilinde yazınız.

0 - 2 saat 1,5 YTL

2 - 8 saat 3 YTL

8-24 saat 5 YTL

TextBox

TextBox Özellikleri Özellik Açıklama

MultiLine Metin kutusuna birden fazla satırda değer girilebilmesini sağlar. False

durumunda ise, metin kutusunun yüksekliği değiştirilemez

ScrollBars Metin kutusunda kaydırma çubuklarının görünmesini kontrol eder.

Varsayılan durumda kaydırma çubuğu görüntülenmez, ancak

Horizontal, Vertical kaydırma çubukları ya da ikisi birden

gösterilebilir.

PasswordChar Metin kutusuna parola girilecekse, girilen karakterlerin hangi karakter

olarak görüneceğini belirler.

WordWrap Metin kutusuna girilen değerlerin, satır sonlandığında bir alt satıra

geçmesini belirtir. Eğer MultiLine özelliği False ise, alt satırlar tanımlı

Bilgisayara Giriş 2010 2011

62

olmayacağı için bu özelliğin bir etkisi görülmez.

MaxLength Metin kutusunun alabileceği maksimum karakter sayısını belirtir.

TextBox Olayları TextChanged Metin kutusundaki yazı değiştiği zaman gerçekleşir.

TextBox Metotları Metot Açıklama

Cut Seçilen karakterleri siler, ancak hafızada tutar.

Copy Seçilen karakterleri kopyalar.

Paste Hafızaya alınan karakterleri metin kutusuna yapıştırır.

Clear Metin kutundaki yazıları temizler.

SelectAll Metin kutusundaki tüm yazıyı seçer.

SelectedText Seçilmiş kısmı silmek veya değiştirmek için kullanılır.

Select Select(Baslangic,Uzunluk), Text kutusu içindeki bölgeyi seçmek için

kullanılır.

Undo Kullanıcı Ctrl+Z tuşlarına basarak en son yaptığı işlemi geri alabilir.

CanUndo Bu özelliği kullanarak geri alınacak bir işlemin olup olmadığını

anlayabilirsiniz.

Örnek: Kes, kopyala, yapıştır, temizle ve geri al butonları ile bir textbox uygulaması yapınız.

Örnek: Kredi kartları uygulmasındaki 5 boşluklu ve her bir boşlukta 4 basamkalı sayı girşi

bulunucak. Sayıları girdikten sonra diğerine geçiş yapan program.

Örnek: Textbox‟a yazarken girmiş olduğumuz metni büyük harfe çeviren programı yazınız.

Bunun için kullanılacak kod:

ToUpper: Büyük harfe çeirir.

Label1.Text.ToUpper

Örnek: Bir giriş form hazırlayınız. Formda Ad, soyad ve şifre olucak. Şifreyi 3 kez yanlış

girdiğinde şifreniz iptal olmuştur yazıp programı sonlandıracak.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

63

Label

Label kontrolü form üzerinde kullanıcıya bilgi vermek amacıyla kullanılan etikettir.

Label Özellikleri Özellik Açıklama

TextAlign Yazının etiket üzerindeki pozisyonu belirler.

BorderStyle Kontrolün kenar stilidir.

FixedSingle değeri, kontrolün kenar çizgilerini gösterir.

Fixed3Ddeğeri, kenarların üç boyutlu olmasını sağlar.

ImageAlign Etiket üzerindeki resmin nerede duracağını belirler.

RightToLeft Etiket üzerindeki yazının yönünü belirler. Eğer Yes değerini alırsa,

yazılar sağdan sola gösterilir

Label1.BorderStyle = BorderStyle.Fixed3D

Visual Studio klasörü altındaki simgeler kullanılabilir

Label1.Image = Image.FromFile("C:\Program Files\Microsoft Visual Studio .NET

2003\Common7\Graphics\icons\Flags\FLGTURK.ICO")

Label1.ImageAlign = ContentAlignment.MiddleRight Label1.RightToLeft = RightToLeft.Yes

Label1.Text = "Türkçe"

Bilgisayara Giriş 2010 2011

64

NOT Resmin bulunduğu yer kontrolün sağ tarafında bulunacak şekilde ayarlanmasına rağmen, sol

tarafta gözükür. Bu durum, RightToLeft özelliğinin Yes olarak atanmasından kaynaklanır.

CheckBox

CheckBox Özellikleri Özellik Açıklama

Appearence Görüntüsünü bu özellik ile değiştirebilirsiniz.

AutoCheck Normalde True değerindedir ve kullanıcı Check kutusunu

tıklayarak işaretleyebilir. False yapılırsa bu özelliğini kaldırmış

olursunuz ve sadece kod ile erişebilirsiniz.

CheckAlign Check kutusunun hangi tarafta olduğunu belirlemeniz için bu

özelliği kullanacaksınız.

Checked Check kutusunun işaretli olmasını istiyorsanız True olarak

belirlemelisiniz. Normalde False olarak atanır.

CheckState Check kutusunun işraret durumunu belirler. Checke özelliğini

True olarak belirlerseniz, CheckState özelliğiniz Checked olarak

belirlenecektir.

TextAlign Kontrolünüzün üstünde olan yazının hizalamasını bu özellik ile

verebilirsiniz.

Örnek: Yazıyı kalın, italik ve altı çizili, hizalama ve geri al prosedürleri olacak şekilde program

yazınız.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

65

RadioButton

RadioButton kontrolleri, kullanıcıya sunulan seçeneklerden sadece bir tanesinin seçilmesine izin

verir. Form üzerinde birden fazla RadioButton konulduğunda, bu kontrollerin sadece bir tanesi seçili

olabilir. Fakat bazı durumlarda, farklı seçenek grupları kullanılarak kullanıcının birden fazla seçim

yapması istenebilir. Bu durumda, bazı seçenekler GroupBox kontrolü ile gruplanmalıdır.

Bu kontrolün özellikleri ve olayları CheckBox kontrolü ile aynıdır. Sadece bir seçenek

işaretlenebildiği için, kontrollerin yapılması CheckBox kontrolüne göre daha kolaydır.

Örnek: Memur maaş bordrolarında kullanılan Aile yardım hesabı yapan program yapınız. Aile

yardımı için şu kriterler dikkate alınır:

1. Bekarlar için aile yardımı ödenmez,

2. Evli olup da eşi çalışanlar için maaşının %2 si kadar yardım ödenir

3. Çocuğu olanlar için çocuk başına %2 kadar yardım ödenir.

4. Evli olup da eşi çalışmayanlar için %4 kadar yardım ödenir.

Örnek: Yapılan satışa %18 KDV nin dahil edilip edilmeyeceği şekilde bir satış programı yapınız.

Örnek: Ortalama özellikleri ve yazı tiplerini değiştirecek şekilde (kalın, eğik, altı çizili) küçük

bir Word programı yapınız.

Bilgisayara Giriş 2010 2011

66

Dizi Tanımlama Dim isimler(3) As String

Diziler tanımlanırken, ismi verildikten sonra parantez içinde kaç eleman içereceğini belirtmek

gerekir. Dizilerin indisleri sıfırdan başlar. Örnekteki isimler dizisinin String tipinde 4 tane elemanı

vardır.

Dizilerin elemanlarına ulaşmak için, istenen elemanın indisinin verilmesi gerekir.

isimler(0) = "Ali" isimler(1) = "Ahmet" isimler(2) = "Mehmet" isimler(3) = "Ayşe"

MsgBox(isimler(3))

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"}

Diziler tek boyutlu olduğu gibi, birkaç boyutlu diziler de tanımlanabilir.

Dim x(10,25)

Dinamik Dizi Tanımlama Programda tanımlanacak dizinin boyutu her zaman belli olmayabilir. Örneğin bir üye takip programı

yapacaksınız. Üyeler ile ilgili bilgilerin hafızada tutulması gerekebilir. Bu program örneğin Türkiye

genelinde kullanılacaksa yüz binlerle ifade edilir ama küçük bir sitede uygulayacaksanız yüzlerle

ifade edebilirsiniz. Boyutu 500 gibi bir değerde tutarsak, program 500 den fazla üyenin bulunduğu

bir sitede çalışmayacaktır. 500000 gibi bir rakam yazarsak sorun çözülecektir. Ancak bu kadar boyut

ayırdığımızda bu kadar boyutun tamamını kullanamayabiliriz. Bu durumda hem programa yer

kaplatmış oluruz hem de programı yavaşlatmış oluruz. İşte böyle durumlarda diziyi static deyimi

yerine ReDim deyimi ile tanımlayabiliriz.

ReDim [Preserve] degisken_ismi (dizi_boyutu)

Burada Preserve kullanılmazsa dizi içindeki elemanlar kaybolur.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

67

Dim degisken_ismi () As tipi

Parantez içerisinde dizi boyutları verilmemiştir. Daha sonra dizinin boyutu ReDim ile yeniden

tanımlanır.

(3,0) boyutlu olan bir dizi, ' değerlerini koruyarak (3,1) boyutlu yapılır

Dim dizi(,) As Double = {{1.0},{2.0},{3.0},{4.0}}

ReDim Preserve dizi(3, 1)

Diziler Üzerinde Yapılan İşlemler Array.Sort(Dizi) Diziyi sıralar

Array.BinarySearch (Dizi, Aranan) Sıralı dizide arama yapar

Array.IndexOf (Dizi, Aranan) Sıralı olmayan dizide de arama yapar

Array.Reverse(Dizi) Diziyi ters çevirir…

For Next

For Sayac=Baslangic_Degeri To Bitis_Degeri Step Artim

Komutlar

Next

DİKKAT Döngüler içinde dizi kullanılırken, sayaç sıfırdan başlamışsa döngünün biteceği nokta “dizi

uzunluğu -1” olmalıdır.

DİKKAT Değişken tanımlamaları For döngüsünün içinde de yapılabilir. Bu durumda, değişkenin

kapsam alanı bu döngüyle sınırlı kalır.

Bilgisayara Giriş 2010 2011

68

For Döngülerinin İç İçe Kullanımı:

For ….

….

For

Next

Next

Örnek: En sevdiğimiz arkadaşlarımızı alt alta textbox a listeleyen bir program yazınız.

For_Next_Application.exe

InputBox

InputBox, kullanıcının veri girmesi için açılan bir mesaj kutusudur. Formlarda TextBox kontrolüne

ihtiyaç duymadan veri almayı sağlar (Resim 4.15).

InputBox("Bir sayı giriniz: ", "Sayı Girişi", 1, 350, 350)

Prompt InputBox metodunun ilk parametresi, mesaj kutusunun gövdesinde gözükecek yazıdır .

Diğer tüm parametreler isteğe bağlıdır.

Title(Başlık). Mesaj kutusunun başlığıdır

DefaultResponse (Varsayılan cevap). Kullanıcı veri girmediğinde varsayılan değerdir.

XPos(X pozisyonu). Mesaj kutusunun sol kenarının, ekranın sol kenarına olan uzaklığıdır.

YPos(Y pozisyonu). Mesaj kutusunun üst kenarının, ekranın üst kenarına olan uzaklığıdır.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

69

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button1.Click

ListBox1.Items.Add(InputBox("İsim soyad giriniz:", "Bilgi Girişi", "Bilinmiyor"))

End Sub

Örnek: Dışarıdan girilen N boyutlu A dizisini aritmetik ortalamasını bulduran bir program

yazınız.

Örnek: Fibobocci Serisi sayıları aşağıdaki gibidir.

1 1 2 3 5 8 13 21 24 …

Buna göre dışarıdan verilen N sayısı için ilk N terimi gösteren program yazınız.

MessageBox

MessageBox, kullanıcıya bilgi göstermek için açılan mesaj kutusudur. Bu mesaj kutusu dört öğeden

oluşur (Resim 4.16).

Text(Yazı). Mesaj kutusunda verilmek istenen bilgiyi tutan yazıdır.

Caption(Başlık). Mesaj kutusunun başlığıdır.

Buttons (Düğmeler). Mesaj kutusunda hangi düğmelerin gösterileceğini belirler.

Icon (Simge). Mesaj kutusunda gösterilecek olan simgeyi ve açıldığı zaman çıkartılacak sesi

belirler.

Bilgisayara Giriş 2010 2011

70

MessageBox.Show("Devam etmek istiyor musunuz?", "Uyarı", MessageBoxButtons.YesNo,

MessageBoxIcon.Warning)

Mesaj kutusu, kapanırken hangi düğmenin tıklandığını DialogResult nesnesi ile programcıya bildirir.

NOT MsgBoxhazır fonksiyonu MessageBox.Show metodu ile aynı işleve sahiptir.

Char ve String Tipi Char: Sadece 1 karakter barındırır.

String: Karakter sınırı verilmezse 2 milyar karaktere kadar atama yapılabilir.

Length: String‟in uzunluğunu verir.

Dim str As String = "Ali Gel"

MsgBox(str.Length)

Chars: Chars(k) Stringin k. Harfini verir.

Büyük-Küçük Harfe Çevirme ToLower: Küçük harfe çevirir.

Label1.Text.ToLower

ToUpper: Büyük harfe çeirir.

Label1.Text.ToUpper

String Karşılaştırma String.Compare(String1,String2) karşılaştırma harfin öncelik sırasına göre yapılır. Eşitse 0

değerini alır, string in baş harfi diğerinden önce geliyorsa büyüktür ve pozitif bir sayı alır aksi

durumda negatif değer alır.

String.Compare(TextBox1.Text, TextBox2.Text)

String.Compare(String1,String2,Ayırım yapılmasın mı?) İki String arasında karşılaştırma

yaparken harfin büyük ve küçük ayrımı yapılmasını istemiyorsanız Ayırım yapılmasın mı?yerine True

yazınız…

String.Compare(TextBox1.Text, TextBox2.Text, True)

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

71

Örnek: Basit bir ilkokul uygulaması. Rakamlar ve bir textboda yazılan yazılara göre rakamların

farklı renkte olmasını veren program.

Boşluk-Karakter Atma TrimStart: Stringin başındaki boşlukları atar.

TextBox2.Text = TextBox1.Text.TrimStart

TrimEnd: Stringin sonundan boşlukları atar.

TextBox2.Text = TextBox1.Text. TrimEnd

Trim: Stringin her iki tarafından boşlukları atar.

TextBox2.Text = TextBox1.Text.Trim

String Parçalama SubString(Başlangıç, Uzunluk)

MsgBox(“Erzurum”.SubString(2,4))zuru

Split

Dim S() As String

S=”Arzu ayşe Zeynep selin gamze Erdem”.Split(“”) S(0)=Arzu, S(1)=ayşe

UBound Stringin kaç parçaya ayrıldığını öğrenebilirsiniz.

UBound(S) 1 (Yukarıdaki örnek için)

String Arama IndexOf, LastIndexOf

IndexOf(Aranan_String, Kaçıncı_Harften(, Kaç_Harf)) Aramayı baştan yapar

Dim str As String

str = "Arzu Erdem"

MsgBox(str.IndexOf("r", 2))

MsgBox(str.IndexOf("r", 0))

Bilgisayara Giriş 2010 2011

72

MsgBox(str.IndexOf("r", 2, 4)) -1 dir.

LastIndexOf(Aranan_String, Kaçıncı_Harften, Kaç_Harf) Aramayı sondan yapar

String Birleştirme Concat “Concat(String1, String2, …, StringN)”

Concat(String1, String2, …, StringN) = String1 & String2 & … & StringN = String1 + String2 + … +

StringN

String.Concat(TextBox1.Text, TextBox2.Text)

TextBox1.Text&TextBox2.Text

TextBox1.Text+TextBox2.Text

Join “Join(Birleştirici_String,String Dizisi)” Bir grub stringin arasına bir karakter koyarak birleştirmek için kullanılır.

Dim str() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I"}

MsgBox(String.Join(", ", str))

Insert “Insert (Kacinci_Harften, String)” Bir stringin içine başka bir stringi eklemek için kullanılır.

Dim str As String = "Ali Gel"

MsgBox(str.Insert(4, "Okula "))

String Değiştirme ve Silme Replace “Replace(Aranan_Metin, Yerine_Yazilacak_Metin)”

Bir stringin içinde geçen metni başka bir metin ile değiştirmek için bu metod kullanılır.

Dim str As String = "Ali Gel"

MsgBox(str.Replace("Gel", "Gelme"))

Remove “Remove(Kacinic_Harften, Kac_tane)”

Bir stringin içinde geçen metni silmek için bu metod kullanılır.

Dim str As String = "Ali Okula Gel"

MsgBox(str.Remove(4, 6))

String Formatlama PadLeft, PadRight

PadRight(adet,karakter) Sağa karakter ekleme,

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

73

PadLeft(adet,karakter) Sola karakter ekleme

Dim str As String = "Ali Okula Gel"

MsgBox(str.PadRight(20, "."))

Format

String.Format(“Formatlanicak_bicim”)

Dim ad, yer As String, tarih As Date

ad = "Arzu"

yer = "İzmit"

tarih = Today

MsgBox(String.Format("{0}, {1} tarihinde, {2}'te Vbasic dersi veriyor... ", ad, tarih, yer))

RSet, LSet

RSet(String, Uzunluk) Sağa hizalama,

LSet(String, Uzunluk) Sola hizalama

Dim str As String = "Ali Okula Gel"

TextBox1.Text = LSet(str, 20)

Örnek: İş başvuru formu oluşturalım.

Adı, Soyadı, Cinsiyeti, Yaşı, Cinsiyeti, Mezuniyet, Eğer erkek ise Askerlik Yapıp Yapmadığı ve

cevabı Evet ise bilgilerini yazdıran bir program.

Örnek: Ad ve Soyadımızı aynı textbox ın içine girdiğinde adımızı ve soyadımızı ayrı ayrı ve

bunların harflerini de ayrı bir textbox ın içinde yazdıran program.String.exe

Hazır Fonksiyonlar

Bilgisayara Giriş 2010 2011

74

Yazı işlemleri

Trim – LTrim – RTrim “Trim(Metin) –LTrim(Metin) –

RTrim (Metin)” Trim:Yazının başındaki ve sonundaki boşlukları atmak:

Label1.Text = Trim(" BilgeAdam ") ' Sonuç: BilgeAdam

LTrim- RTrim: Verilen metnin sırasıyla sol ve sağ boşluklarını atar.

LCase “LCase(Metin)” Tüm yazıyı küçük harfe çevirmek:

Label1.Text = LCase("BILGEAdam") ' Sonuç: bilgeadam

UCase “UCase(Metin)” Tüm yazıyı büyük harfe çevirmek:

Label1.Text = UCase("bilgeADAM") ' Sonuç: BİLGEADAM

StrReverse “StrReverse(Metin)” Verilen stringi ters çevirir.

StrReverse(“Arzu”) „Sonuç: uzrA

Len “Len(Metin)” Metnin içindeki karakter sayısını verir.

Len(“Arzu Erdem”) „Sonuç: 6

Mid “Mid(Metin,Başlangıç[,Uzunluk])” Yazının belirli bir bölümünü almak. İkinci parametrede verilen pozisyondan başlayarak, üçüncü

parametredeki değer kadar karakter alınır:

Label1.Text = Mid("BilgeAdam", 6, 4) ' Sonuç: Adam

Replace “Replace(Neyin_İçinde,Neyi,Ne_İle,

[Kaçıncı_Harften],[Kaç_Tane],[Nasıl])” Stringin içindeki bir ifadeyi değiştirmek istediğimizde kullanırız.

Replace(“Arzu Erdem”,”Arzu”,”Melike”) „ Sonuç: Melike Erdem

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

75

Space “Space(Sayı)” Verilen sayıda boşluk oluşturur.

Msgbox(“Hoşçakal” & Space(25) & & “Bye” & Space(25) & “Tschüs”)

Örnek: Bir metinin içinde başka bir metni arayan kaç tane bulduğunu veren ve istenirse

değiştiren program.

Örnek: Şimdi bir ilkokul 1 uygulaması yapalım ve verilen bir metini kelimelerine ayıran programı

yapalım.

Örnek: Verilen bir metinde hangi harflerin büyük ve hangi harflerin küçük olduğunu bulduran

programı yazınız.String.exe

Karakter işlemleri

Char.IsLetter Karakterin alfabetik olup olmadığını öğrenmek için kullanılır.

GetChar Yazının parametrede belirtilen sıradaki karakteri almak:

Label1.Text = GetChar("BilgeAdam",9) ' Sonuç: m

Char.IsDigit Karakterin 0-9 arasında bir rakam olup olmadığını öğrenmek için kullanılır.

Char.IsNumber Karakterin sadece bir rakam değil ½, 1/5 gibi bir sayı olup olmadığını öğrenmek için kullanılır.

Char.IsLower Karakterin küçük harf olup olmadığını kontrol eder.

Char.IsUpper Karakterin büyük harf olup olmadığını kontrol eder.

Char.IsSymbol Karakterin bir sembol olup olmadığını kontrol eder.

Bilgisayara Giriş 2010 2011

76

ErrorProvider

ErrorProvider Özellikleri Özellik Değer Tipi Açıklama

BlinkRate Integer Hata simgesinin kaç milisaniyede bir yanıp söneceğini belirler.

BlinkStyle ErrorBlinkSytle Hata simgesinin yanıp sönme stilini belirler.

i. AlwaysBlink, her zaman,

ii. BlinkIfDifferentError farklı bir hata meydana geldiğinde

yanıp söneceğini belirler.

iii. NeverBlinkise simgenin yanıp sönmeden görüntüleneceğini

belirler.

Icon Icon Hata mesajlarının gösterilmesi sırasında çıkan simgeyi belirler.

ErrorProvider Metotları SetError Kontrollerin hata mesajlarının belirlenmesi için kullanılır.

ErrorProvider kontrolü forma eklendiği zaman, Properties panelinde, kontrollerin ekstra özellikleri

görünür. Bu özellikler, forma eklenen her ErrorProvider için oluşturulur.

Özellik Açıklama

IconAlignment On Hata simgesinin, kontrolün üzerinde nerde bu lunacağını belirler.

IconPadding On Hata simgesinin, kontrolden kaç piksel uzakta duracağını belirler.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

77

Error On Varsayılan hata mesajını belirler

Örnek: Adınız, soyadınız, öğrenci numaranız ve mail adresinizi gireceğiniz şekilde bir form

oluşturulacak programı yazınız.

String.exe

Sayı işlemleri

Rnd Rasgele sayı üretmek

' Maximimum 400 değerini alan bir sayı üretir

Rnd() * 400

üretmek için, Rnd fonksiyonundan önce Randomize fonksiyonunun çağırılması gerekir:

Randomize() Rnd() * 400

0 ile 1 arasında rasgele sayı üretir.

Rnd

20 ile 50 arasında sayı üretir.

Rnd*30+20

IsNumeric Parametrede verilen bir değerin sayı olup olmadığını kontrol etmek. Geriye dönen değer True ya da

False mantıksal değeridir:

IsNumeric(TextBox1.Text)

Örnek: sayı tahmini bulma ve kaçıncı tahminde bulduğunuzu veren program.

Bilgisayara Giriş 2010 2011

78

Örnek: Şanslı çifti bulacak bir oyun yapınız. Oyunda 3 hane var ve 2 hanedeki sayı eşit

olduğunda puan kazanıyorsunuz aksi durumda puan kaybediyorsunuz. Puanınız sıfırladığında ise

para yüklenmesi konusunda size uyarı veriyor!

Timer

Timer Özellikleri Özellik Açıklama

Interval Bu nesnenin çalışacağı zaman periyodudur.

Enabled Normalde program çalıştığında False değerindedir. Timer ın

çalışması için True yapılmalıdır.

Timer Olayları Özellik Açıklama

Tick Timer kontrolünün Interval özelliği ile belirtilen süre içerisinde

periyodik olarak bu olay meydana gelir. Interval özelliği düşük

olan Timer lar için bu olay içerisinde yazılacak kodun hızlı olması

gerekir.

Örnek: Bilinmeyen bir sayıyı tahmin etme ve kaçıncı tercihinde ne kadar sürede bulduğu ile ilgili

bir oyun yazınız!Timer_Application.exe

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

79

ListBox

Kullanıcıya sunulan seçeneklerin bir liste halinde görünmesini sağlar. Liste kutusundan istenen

sayıda öğe seçilebilir.

ListBox Özellikleri Özellik Açıklama

Items Liste kutusuna eklenen öğelerin tutulduğu koleksiyon nesnesidir.

SelectedItem Liste kutusundan seçilen öğeyi alır.

SelectedItems Liste kutusundan seçilen öğeleri alır. Seçilen öğeler dinamik bir

dizide tutulur.

SelectedIndex Liste kutusundan seçilen öğenin indisini alır.

SelectedIndices Liste kutusundan seçilen öğelerin indislerini bir koleksiyon

nesnesinde tutar.

DataSource Listenin öğelerinin tutulduğu veri kaynağıdır. Veri kaynağı boş

geçilirse Itemskoleksiyonuna eklenen öğeler görüntülenir.

DisplayMember Veri kaynağından gelen öğelerin, kullanıcıya gösterilecek

özelliğidir.

ValueMember Veri kaynağından gelen öğelerin, dönüş değerini belirleyen

özelliğidir.

SelectedValue Seçilen öğenin, liste kutusunun ValueMember ile belirtilen

özelliğidir.

SelectionMode Liste kutusundan kaç tane öğe seçilebileceğini belirtir. Nonedeğeri

0,

Onedeğeri 1,

Bilgisayara Giriş 2010 2011

80

MultiSimple ve MultiExtended değerleri birden fazla öğenin

seçilebileceğini belirtir.

MultiColumn Liste kutusundaki öğelerin biden fazla kolonda görüntülenmesini

belirler.

ListBox Olayları Olay Açıklama

SelectedIndexChanged Liste kutusunda bir öğe seçildiği zaman gerçekleşir.

ListBox Metotları Metot Açıklama

Items.Add(ByVal Eleman As

Object)

Listeye eleman eklemek için bu metot kullanılır. Verilen

elemanları listenin sonuna ekler.

Items.AddRange Bir grup elemanı tek seferde listeye eklemek için bu metot

kullanılır.

Items.Insert(No,Eleman) Elemanı verilen yere eklemek için kullanılır.

Items.RemoveAt(No) Numarası verilen elemanı listeden siler.

Items.Remove(Eleman) Verilen elemanı listeden siler.

Items.Clear Listedeki bütün elemanları siler.

Items.Count Listedeki eleman sayısını verir.

Items(No) Listede numarası verilen elemanın içeriğini öğrenmek veya

değiştirmek için bu metot kullanılır.

Items.IndexOf(Eleman) Listede bir elemanı aramak için bu metot kullanılır.

Items.CopyTo(Dizi,No) Listedeki elemanları bir diziye aktarmak için bu metot kullanılır.

SelectedIndex Listedeki seçili elmanın sıra numarasını öğrenmek için bu özellik

kullanılır.

ClearSelected Listedeki seçili elemanı kaldırmak için bu metot kullanılır.

FindStringExact(aranan) Bu metot, verdiğiniz elemanı arar ve bulunduğu konumu verir.

FindString Parametredeki String ifadesini liste kutusunda arayarak, bulduğu

ilk öğenin indisini döndürür. FindStringExact‟tan farkı elemanın

tümünde değil bir bölümünde arama yapar. Örneğin “Ali”

kelimesini aramak istiyorsanız “Ali”, “Aliş”, “Alihan” gibi

elemanları da bulur.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

81

GetItemText Parametre olarak verilen nesnenin liste kutusunda gösterilen

yazısını döndürür.

GetSelected Parametre olarak verilen indisteki öğenin seçili olup olmadığını

döndürür.

FindString Parametredeki String ifadesini liste kutusunda arayarak, bulduğu

ilk öğenin indisini döndürür

Çok Seçimli Listeler

SelectedItems Seçili elemanların sayısı, içeriği vb. gibi bilgileri verir.

SelectedItems.Count Seçili eleman sayısını verir.

SelectedItems.Item(No) Seçili elemanın içeriğini verir.

Örnek: 2 listbox dan birinde: 1 den dışarıdan girilen bir sayıya kadar sayıları yazdıran, diğer

listbox da ise toplam, faktöriyel, sayıların karesinin toplamı, sayıların karesinin çarpımı

sonuçlarını üstüne tıkladığımızda listbox2 ye ekleyen programı yazınız.

listbox_appl.exe

ComboBox

Liste kutusu ile aynı özelliklere sahiptir, ancak listelenen öğeler açılan bir kutuda görüntülenir ve

listeden en fazla bir tane öğe seçilebilir. Liste kutusuna göre bir başka farklılığı ise, isteğe bağlı

olarak, kullanıcının açılan kutu üzerinde değer girebilmesidir. Dolayısıyla bir TextBox kontrolü gibi

de davranabilir.

Bilgisayara Giriş 2010 2011

82

ComboBox Özellikleri Özellik Açıklama

AutoCompleteCustomSource Otomatik tamamlama ilgili kaynak belirlemek istiyorsanız buradaki

listeye elemanları giriniz.

AutoCompleteMode Otomatik tamamlama şekillerini bu özellik ile belirleyebilirsiniz.

AutoCompleteSource Otomatik tamamlama ilgili var olan kaynakları seçebilirsiniz.

AutoCompleteCustomSource ile farkı: AutoCompleteCustomSource

da kendi listenizi oluşturma ayrıcalığı mevcuttur.

DropDownStyle ComboBox ın tipini belirler.

i. DropDown: Aşağı doğru açılan v eiçeriği kullanıcı

tarafından değiştirilebilen ComboBox dır.

ii. DropDownList: Aşağı doğru açılabilen fakat kullanıcı

tarafından değiştirilemeyen ComboBox lardır.

iii. Simple: Aşağı doğru açılmayan fakat kullanıcı

tarafından değiştirilebilen ComboBox dır.

DropDownWith ComboBox ile açılan kısmın genişliğini ayarlayabilirsiniz.

MaxDropDownItems Listenizin maksimum uzunluğunu belirler.

SelectedIndex Listede seçili olan elemanların numarası bu özellik ile belirlenir.

ComboBox Olayları Olay Açıklama

SelectedIndexChanged Liste kutusunda bir öğe seçildiği zaman gerçekleşir.

TextChanged DorpDownStyle özelliği DropDown olan listeler için kullanıcın

listedeki yazıyı değiştirirken gerçekleşen bir olaydır.

Örnek: Combobox da takımların renkleri ve listbox da takımların isimleri yazılı olmak üzere,

combobox dan seçmiş olduğumuz bir takım rengi ile takımın üzerine seçili olarak gelicek

programı yazınız. listbox_appl.exe

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

83

While- End While ve Do while-Loop

Bir döngünün kaç defa çalışacağı biliniyorsa For-Next döngüsü tercih edilir ancak bilinmiyorsa While

döngüleri kullanılır. Bu iki döngünün de çalışma mantığı aynıdır.

While Şart

Komutlar

End While

Do While Şart

Komutlar

Loop

Döngü Kontrol İfadeleri

Exit Do Loop ve While döngülerinden birinde bazı şartların gerçekleşmesi durumunda döngüden çıkmak için

kullanılır.

Exit For For-Next döngüsü tamamlanmadan, bazı şartlar gerçekleştiğinde döngüden çıkmak için kullanılır.

Exit Sub-Exit Function Prosedür sonuna ulaşmadan prosedürden çıkmak için kullanılır.

Bilgisayara Giriş 2010 2011

84

End Programı sona erdir.

With-End With Bir kontrole ait bir özellik değiştirmek istendiğinde veya bir metod çağrıldığında kısayol olarak

ulaşmak için kullanılır.

With kontrol_adı

.Özellik=Değer

.Özellik=Değer

End With

Örnek: Verilen bir sayıyı basamaklarına ayıran ve dışarıdan verilen bir rakamın sayının

basamaklarında kullanılıp kullanılmadığını veren programı yazınız.Digit_Application.exe

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

85

MainMenu

Type Here yazılan yere menu eklemek için kullanırız. Bunun yerine DropDownItems yerine menuleri

ekleyebilirisiniz.

MainMenu Özellikleri Olay Açıklama

DropDownItems Menu eklenir

ShortCut Kısayol eklemek için kullanılır.

ShowShortCut ShortCut özelliğinin gösterilip gösterilemeyeceğini belirler.

Checked True özelliği ile CheckBox özelliği kazanılır.

RichTextBox Standart TextBox kutusunda formatlı bir giriş için uygun olmadığından bu nesne kullanılır.

RichTextBox Metotları Özellik Açıklama

SelectionFont Seçili bölgenin fontunu ayarlamak için kullanılır.

SelectionColor Seçili bölgenin yazı rengini ayarlamak için kullanılır.

Bilgisayara Giriş 2010 2011

86

SelectionAlignment Seçili paragrafın hizalamak için kullanılır.

Cut, Copy, Paste Kesme, kopyalama ve yapıştırma işlemleri için kullanılır.

CanPaste Pano içine yapıştırılabilir bir bilgi olup olmadığını öğrenmek için

kullanılır.

Undo Son yapılan işlemi geri almak için kullanılır.

Redo Son geri alınan işlemi tekrar yapmak için kullanılır.

CanUndo, CanRedo Geri alınacak veya yinelecek bir işlem olup olmadığını öğrenmek

için kullanılır.

SaveFile(Dosya_Adı) Dosya adı verilerek RTF formatında kayıt yapar.

LoadFile(Dosya_Adı) RTF formatında dosyayı açmak için kullanılır.

Örnek: Yazıyı kalın, italik ve altı çizili, hizalama, kes, kopyala, yapıştır ve ileri-geri al

prosedürleri olacak şekilde program yazınız. MainMenu_Application.exe (Komut satırı)

OpenFileDialog

OpenFileDialog Özellikleri Özellik Açıklama

FileName Kullanıcının seçtiği dosyanın adını bu özellikle öğrenebilirsiniz.

Filter Dosya türünü belirlemek için kullanılır. “Resimler|*.gif”

MultiSelect Birden fazla dosyayı seçmek için kullanılır.

ReadOnlyCheck “Salt okunur aç” seçeneğinin işaretli olup olmadığını

öğrenebilirsiniz.

Title Diyalog penceresi açılırken

InitialDirectory Diyalog penceresi açıldığında hangi klasörü göstereceğini belirler.

DefaultExt Kullanıcı dosya isminde dosya uzantısını yazmaz ise bu özellik ile

belirtilen dosya uzantısı dosya adına eklenir.

CehckFileExists True değeri atanırsa, dosya aç penceresinde yazılan dosyanın

kayıtlı olup olmadığını kontrol eder.

CheckPathExists True değeri ile, kullanıcının yazdığı dosya yolunun doğruluğunu

kontrol edersiniz.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

87

OpenFileDialog Metotları Olay Açıklama

ShowDialog Dialog penceresini açmak için kullanılır.

SaveFileDialog OpenFileDialog ile aynı özelliklere sahip olup, dosyaları kaydetmek için kullanılır.

Örnek: Dosya açma ve kaydetme özelliklerini olduğu bir uygulama yapınız.

MainMenu_Application.exe (Komut satırı)

Operatörler

Aritmetiksel - Mantıksal Operatörler Bu operatörler aritmetik işlemlerinde, sayılarla veya sayı tutan ifadelerle kullanılır.

Özellik Değer Tipi Açıklama

= Eşittir

* Çarpma

/ Bölme

\ Tam Bölme

Bilgisayara Giriş 2010 2011

88

+ Toplama

- Çıkarma

^ Üs Alma

Mod Bölmede kalan

Not Değil

And Ve

Or Veya

XOr Verilen koşulların farklarını kıyaslar

TABLO: And Operatörü

Koşul 1 Koşul 2 Koşul 1 AndKoşul 2

True True True

True False False

False True False

False False False

TABLO : Or Operatörü

Koşul 1 Koşul 2 Koşul 1 Or Koşul 2

True True True

True False True

False True True

False False False

TABLO: XOr Operatörü

Koşul 1 Koşul 2 Koşul 1 XOrKoşul 2

True True False

True False True

False True True

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

89

False False False

Karşılaştırma Operatörleri Bu operatörler veri tiplerini birbirleriyle karşılaştırmak için kullanılır. Bu operatörler ile yapılan

işlemlerin sonucunda True ya da False değeri döner. Karşılaştırma operatörleri yalnızca sayı tipleri

üzerinde yapılmaz. String tipleri birbirleriyle alfabetik sıraya göre karşılaştırılabilir.

Özellik Değer Tipi Açıklama

<> Eşit Değil

> Büyük

< Küçük

>= Büyük eşit

<= Küçük Eşit

Matematiksel İşlemler Özellik Değer Tipi Açıklama

Math.Max(Sayı1,Sayı2) Maksimum

Math.Min(Sayı1,Sayı2) Minimum

Math.Abs(Sayı) Mutlak değer

Math.Sign(Sayı) Signum fonksiyonu

Math.Floor(Sayı) Yukarıya yuvarlama

Math.Ceiling(Sayı) Aşağı yuvarlama

Math.Round(Sayı) En yakın tamsayıya çevirir.

Math.Round(Sayı,Basamak) Virgülden sonra kaç basamağa kadar yuvarlatılacağını verir.

Math.Log10(Sayı) 10 tabanında logaritma

Math.Log(Sayı) e tabanında logaritma

Math.Log(Sayı,Taban) Belirtilen tabanda logaritma

Math.Pow(sayı,üs) Sayının üssünü alır

Math.Exp(sayı) Exponansiyel kuvvetini alır

Math.Sqrt(Sayı) Sayının karekökünü alır

Math.Sin(sayi) Sayının sinüsünü alır

Bilgisayara Giriş 2010 2011

90

Math.Cos(Sayı) Sayının Cosünüsünü alır

Math.Tan(Sayı) Sayının Tanjantını alır

Math.Acos(Sayı) Sayının arccos unu hesaplar.

Math.Asin(Sayı) Sayının arcsin unu hesaplar

Math.Atan(Sayı) Sayının arctan ını hesaplar

Kısaltılmış Atama Operatörleri

x=x+y

ifadesi yerine

x+=y

kullanabiliriz. Buna göre kısaltabileceğimiz diğer operatörler şöyledir:

^= *= \= += -= &=

NumericUpDown

NumericUpDown Özellikleri Özellik Açıklama

DecimalPlaces Sayının ondalık kısmını belirlemek istediğimizde bu özelliği

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

91

kullanacaksınız.

Hexadecimal Bu özelliğin True olması durumunda sayı Hexadecimal (16

tabanında) gösterilir.

Increment Sayıların artış miktarı için kullanılacak olan bir özelliktir.

InterceptArrowKeys Klavyedeki üst ve alt tuşların kullanılabilir olması için bu özelliği

True olarak belirlemelisiniz.

Maximum: Sayıların üst sınırıdır.

Minimum Sayının alabileceği en küçük değerdir.

ReadOnly Kontrolün içine sayı girişi yapılmamasını istiyorsanız bu özelliği

True olarak değiştirmelisiniz.

ThousandsSeparator Binlik hanelerde “.” Ayıracını koymak istiyorsanız bu özelliği True

olarak belirlemelisiniz.

UpDownAlign Yukarı ve aşağı azaltma düğmelerini bu özelliği kullanarak sağda

veya solda görünmesini sağlayabilirsiniz.

Value NumericUpDown kontrolünün içindeki değerini bu özellik ile

öğrenebiliriz.

NumericUpDown Olayları Olay Açıklama

ValueChanged NumericUpDown kontrolünün içinde değer yukarı aşağı

seçildiğinde bu olay gerçekleşir.

NumericUpDown Metodları Olay Açıklama

UpButton(),DownButton() Kontrolün içindeki sayıyı kontrol ile azaltmak isterseniz bu metodu

kullanabilirsiniz.

Örnek: N doğal sayısı verildiğinde aşağıdaki ifadelerin değerlerini bulmak için program yazınız.

i)

2222

11......

3

11

2

11

1

11

na

;

ii) 4sin...2sin1sin

1....

2sin1sin

1

1sin

1

a

;

Bilgisayara Giriş 2010 2011

92

iii) 4sin...2sin1sin

cos...2cos1cos....

2sin1sin

2cos1cos

1sin

1cos

na

;

iv) nxxxxxa ......321 ; (x - reel sayıdır)

v) ))....(1(

1.....

)1(

11

nxxxxxxa

; (x - reel sayıdır)

vi) nxxx

a242

1...

11

; (x - reel sayıdır)

vii) xxxa nsin...sinsin 2 ; (x - reel sayıdır)

viii) nxxxa sin...sinsin 2 ; (x - reel sayıdır)

ix)

xxxan

sin....sinsin...sinsinsin

; (x - reel sayıdır)

x)

n

xxxa ....

; (x - reel sayıdır)

xi) n

na

1....

2

11

!.....

2

11

!2

1

!1

;

xii) !....

!3!2!1

32

n

xxxxa

n

; (x - reel sayıdır)

xiii) )

!

1(...)

!2

1()1( x

nxxa

; (x - reel sayıdır)

xiv)

x

n

nxxa ncos

1....cos

3

2cos

2

1 2

; (x - reel sayıdır)

xv) )....)))cos1cos(.....3cos(2cos(1cos( nny

xvi) !!na ;

xvii)

n

ji jip

,2

1

xviii)

n

k

k

i

k

ik

s1

1

!

sin

xix) nny 3...63

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

93

xx) !...!3!2!1 na

Örnek: Yazı boyutunu ayarlayabileceğiniz bir uygulama yapınız.

Select Case Bir değişkenin aldığı bir çok değere göre farklı komutların çalıştırılması gereken durumlar için If

yapısını kullanmak yerine Select Case yapısını kullanmak daha avantajlıdır.

Select Case Değişken

Case Durum 1: Komutlar

Case Durum2, Durum3: Komutlar

Case Durum4 to Durum7: Komutlar

Case is <Durum8: Komutlar

Case is >Durum9: Komutlar

Case DurumN: Komutlar

Case Else Komutlar

End Select

Örnek: Vize-Final uygulamasını Select-Case yapısını kullanarak yapınız.

Bilgisayara Giriş 2010 2011

94

Örneğin InputBox metodu ile bir sayının alınması sırasında, kullanıcı String tipinde bir değer girerse

çalışma zamanında bir hata oluşur.

Dim dizi(10) As Integer

For i As Integer = 0 To dizi.Length Label1.Text &= dizi(i)

Next

Resim ‟deki hata mesajı, dizinin büyüklüğünün dışında bir indis verildiğini belirtir. Visual Basic .NET

dilinde uygulama geliştirirken oluşabilecek tüm hatalar .NET Framework altındaki Exception sınıfları

halinde tanımlanır. Örneğin dizinin büyüklüğünden farklı bir indis verildiğinde

IndexOutOfRangeException hatası ortaya çıkar. Tüm hatalar gibi bu hata da Exception taban

sınıfından türetilmiştir.

Visual Basic.NET ile Windows Tabanlı Programlama 2010 2011

95

Try Catch Finally

Try

Komutlar

Catch

Komutlar

End Try

Çalışma zamanında ortaya çıkan hatalar uygulamanın beklenmedik bir şekilde sonlanmasına neden

olur. Uygulamanın devam etmesi için bu hataların yakalanıp işlenmesi gerekir. Try Catch Finally

blokları içinde, çalışma zaman hataları meydana geldiği durumlarda çalışması istenen kodlar yazılır.

Try bloğu içine, çalışırken hata üretebilecek kodlar yazılırken, Catch bloğu içine, hata oluştuğunda

yapılması gereken işlemler yazılır.

Dim sayi As Byte Dim sonuc As Integer

Try

sayi = Rnd() * 3

Bilgisayara Giriş 2010 2011

96

sonuc = 100 / sayi

MsgBox("Bölme işlemi başarılı, sonuç: ” & sonuc)

Catch ex As Exception

MsgBox("Bölme işlemi başarısız. Hata Mesajı: " & ex.Message)

End Try

Bu örnekte üretilen rasgele bir sayı ile bölme işlemi yapılıyor. Sayı sıfır değerini aldığında, bölme

işlemi hata üretir. Dolayısıyla bu işlem Try bloğu içine yazılmalıdır. Catch bloğunda, işlemin

başarısız olduğunu belirten bir mesaj yazılır. Exception nesnesinin Message özelliği, hatanın oluştuğu

zaman üretilen mesajı tutar. Exception nesnesinin özellikleri Catch içinde kullanılmayacaksa,

tanımlanmasına gerek yoktur.

ProgressBar

ProgressBar Özellikleri Özellik Açıklama

Mininmum ProgressBarın alacağı minimum değerdir.

Maximum ProgressBar ın alacağı maksimum değerdir.

Value ProgressBar ın alacağı değerdir.

Step Değerin hangi adımlarla artacağını belirler.

ProgressBar Metotları Özellik Açıklama

PerformStep Step belirttikten sonra bu metot ile değeri belirtilen aralık kadar

Hata! Tablo için

geçersiz bir

sonuç.

2010 2011

97

değiştirebilirsinz.

Örnek: 1 den keyfi bir sayıya kadar olan asal sayıları buldurmada progressbarın ilerleyeceği bir

uygulama yapınız.

ImageList Birden fazla resmi bir arada tutmak için kullanılır.

ImageList Özellikleri

Özellik Değer Tipi Açıklama

ImageSize Resmin boyutunu ayarlarsınız.

Images(No) Listenin içindeki resmileri almak için kullanılır.

PictureBox

Form üzerinde bir resim görüntülemek için kullanılır.

PictureBox Özellikleri Özellik Değer Tipi Açıklama

Image Image Kontrolün resim kaynağını belirler.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

98

SizeMode PictureBoxSizeMode Kontrolün, resmi nasıl görüntüleyeceğini belirler.

i. AutoSizedeğeri, kontrolün büyüklüğünü resmin

büyüklüğüne göre ayarlar.

ii. CenterImagedeğeri, resmi kontrolün ortasına gelecek

şekilde ayarlar.

iii. Normaldeğeri, kontrolün sol üst köşesine göre

konumlandırır.

iv. StretchImagedeğeri, resmi kontrolün büyüklüğüne

göre boyutlandırır ve resmin tam görünmesini sağlar.

TabControl

TabControl Özellikleri Özellik Değer Tipi Açıklama

HotTrack Boolean Fare ile sekme sayfalarının üzerine gelindiğinde, isimlerinin

görsel olarak değişmesini belirler.

ItemSize Size Sekme sayfalarının büyüklüğünü belirler.

Multiline True Eklenen sekmelerin birden fazla satırda üst üste gözükmesini

belirler.

ShowToolTips Boolean Fare sekme sayfalarının üzerindeyken bilgi mesajının

gösterilmesini belirler.

SelectedTab TabPage Seçilen sekme sayfasını belirler.

SelectedIndex Integer Seçilen sekme sayfasının indisini belirler.

Hata! Tablo için

geçersiz bir

sonuç.

2010 2011

99

TabCount Integer Sekme sayısını belirler.

TabPages TabPageCollection Kontrolün içinde bulunduğu sekme sayfalarının

koleksiyonudur.

Örnek: Alanında uzman tercüman alımları için iş başvuru formu hazırlayınız.

TabControl_Application.exe (Komut satırı)

Hata! Tablo için geçersiz bir sonuç. 2010 2011

100

DateTimePicker

Bir açılan kutudan zaman değeri seçmeyi sağlar. Seçilen değer Date tipinde olur.

DateTimePicker Özellikleri Özellik Değer Tipi Açıklama

CalendarTrailing

ForeColor

Color Bir önceki ve bir sonraki ayın günlerinin görüntülenme

rengidir.

CalendarTitle

ForeColor

Color Takvim başlığının ön plan rengidir.

CalendarTitle

BackColor

Color Takvim başlığının arka plan rengidir.

CalendarMonth

Background

Color Takvim arka plan rengidir.

CalendarForeColor Color Takvimdeki yazıların ön plan rengidir.

CalendarFont Font Takvimin gösterileceği yazı tipi ayarlarıdır.

ShowCheckBox Boolean Tarih değerinin yanında seçme kutusunun gösterilmesi.

Checked Boolean Seçme kutusu görüntülendiği zaman, tarihin seçili olup

olmadığını gösterir

Format DateTime

PickerFormat

Kontrolün görüntüleneceği formatı belirler. Long,

Shortdeğerleri uzun ve kısa tarih formatını, Time sadece

zamanı gösterir. Custom değeri, CustomFormat özelliğine

girilen formatta gösterileceğini belirler.

CustomFormat String Tarihin hangi formatta gösterileceğini belirler.

Hata! Tablo için

geçersiz bir

sonuç.

2010 2011

101

Value Date Seçilen tarih değerini belirler.

MaxDate Date Kontrolün alabileceği maksimum tarih değeridir.

MinDate Date Kontrolün alabileceği minimum tarih değeridir.

ShowUpDown Boolean

Kontrolün formunu açılan kutu ya da yukarı aşağı okları

formatında gösterir. Bu özellik True olduğunda, kontrolün

formatı, NumericUpDown kontrolünün formatında olur.

DateTimePicker Metotları ToOADate:Tarih bilgisini Double türünden bir sayıya çevirir.

ToShortDateString: Tarihi kısa formatta stringe dönüştürür.

ToLongTimeString: Zamanı uzun formda stringe dönüştürür.

Örnek: Kitap alım ve teslim tarihlerine göre, 15 gün içerisinde teslim edilmeyen kitaplar için

ceza işlemi yapılacaktır. Alım-teslim tarihlerli ve ceza tutarına göre toplam ödenmesi gereken

miktarı veren bir program yapınız.

Örnek: Bir alarm programı yapınız.

Fonksiyonlar ve Altprogramlar (Yordamlar) 2010 2011

102

Bölüm 7. Fonksiyonlar ve Altprogramlar (Yordamlar)

Uygulama geliştirirken, bir işlemin birçok yerde kullanıldığı zamanlar olur. Bu gibi durumlarda bir

kere yazılan kodlar, farklı yerlerde tekrar yazılır. Uygulama üzerinde bir değişiklik yapılmak

istenirse, tekrar yazılan kodların tek tek bulunup değiştirilmesi gerekir. Böylece hem uygulamanın

yazımı zorlaşır, hem de değişik yapmak giderek imkânsız hale gelir. Bu problemler, birçok yerde

yapılması istenen işlemlerin fonksiyonlar ve yordamlar içinde yazılması ile çözülür. Sadece fonksiyon

ve yordamların isimleri kullanılarak, istenen yerlerde kodlar çalıştırılır.

Yapılan işlemin sonucunda oluşan değer isteniyorsa fonksiyonlar kullanılır. Örneğin, veritabanına

yeni bir kullanıcı ekledikten sonra, kullanıcının ID numarası isteniyorsa fonksiyon kullanılmalıdır.

Eğer yapılan işlemlerin sonunda bir değer döndürülmüyorsa yordamlar kullanılır. Örneğin bir

ComboBox kontrolüne öğe ekleme işlemi yordam içine yazılabilir.

.NET çatısındaki nesnelerin birçok fonksiyon ve yordamları vardır. Tüm fonksiyon ve yordamların kaç

parametre aldığı, geriye dönüş değerinin ne olduğu, hangi nesneye ait oldukları ezberlenemez.

Dolayısıyla Visual Studio yardımının kullanılması kaçınılmazdır.

Bu modül tamamlandıktan sonra;

ve yordamların farklarını ayırt edebileceksiniz.

Sub

Bilgisayara Giriş 2010 2011

103

Sub yordamları dönüş değeri olmayan kod bloklarıdır. Bu kodlar Sub ve End Sub ifadeleri arasına

yazılır.

Sub YordamIsmi([Giriş_Parametreleri[As Tipi]])

End Sub

Uygulama içinde birçok yerde çalışacak olan kodlar Sub yordamı içinde yazılır. Bu kodlar, içine

yazıldıkları yordamın ismi ile çağırılarak, istenen yerde tekrar çalıştırılabilir. Örneğin, bir uygulama

başlarken form üzerindeki kontrollerin temizlenmesi gerekiyorsa, bu kodları bir daha yazmamak için

yordam kullanılabilir.

Parametre

Kullanımı

Yordamların bazı değerlere göre farklı işlem yapması istenebilir. İşlemin bağlıolduğu bu değerlere

parametre veya argüman denir. Yordamlar parametre alacak şekilde tanımlanıp, çağırıldıkları sırada

istedikleri parametreler verilerek kullanılır.

Sub YordamIsmi(Parametre1 As VeriTipi, Parametre2 As VeriTipi, …)

End Sub

Örneğin, uygulamanın birçok yerinde kullanıcıya bilgi vermek amaçlı mesaj kutuları kullanılır. Eğer

bu mesajlar bir yordam içine yazılırsa, daha sonra mesajlar bir Label üzerinde gösterilecek şekilde

kodu değiştirmek kolay olacaktır. Yordamın göstereceği mesajların parametre olarak verilmesi

gerekir.

Optinal Parametre kullanımı

Public Function f(x,y,Optinal t=3, Optinal k=5)

F(5,4) x=5, y=t, t=3, k=5

F(5,4,2) x=5, y=4, t=2, k=5

F(5,4,2,3) x=5, y=4, t=2, k=3

F(5,4,,2) x=5, y=4, t=3, k=2

Fonksiyonlar ve Altprogramlar (Yordamlar) 2010 2011

104

Örnek: 1.Ad, 2.Ad, Soyad, Unvan, Konuşma Başlığı, Üniversitesi, Adresi, Şehir, Ülke, Posta

kutusu numarası, Telefon gibi bilgilerinin bulunduğu bir konferans katılımcı sayfası

hazırlanacaktır. Dikkat edilmesi gereken kurallar:

1. Tüm alanlar için #,+,^,%,=,* gibi sembollerin kullanılmaması gerekmektedir.

2. Tüm alanlar için İlk harfin büyük olması özelliği olmalıdır.

3. Posta kodu ve Telefon numarası hariç tüm alanların doldurulması zorunludur.

Bu kurallara uygun katılımcılar için form oluşturunuz.

Function

Fonksiyonlar bir işlem yaptıktan sonra geriye değer döndürürler. Örneğin, bir çarpma fonksiyonunun

dönüş değeri, parametre olarak verilen iki sayının çarpımıolacaktır. Fonksiyonların tanımları

değişkenler gibidir.

Function Fonksiyon(ByVal Param1 As VeriTipi, ...) As DönüşVeriTipi

End Function

Fonksiyonların geriye dönüş değerleri Return ifadesi ile ya da fonksiyonun ismi verilerek yapılır.

Örnek: Verilen iki sayı için kombinasyon hesabı yapan programı yazınız.

Parametre sayısı belli olmayan prosedür yazma-

ParamArray Yordamları ve fonksiyonları çağırırken parametrelerin mutlaka girilmesi gerekir. Ancak bazı

durumlarda yordamlara ve fonksiyonlara girilecek parametrelerin sayısı tasarım zamanında belli

olmaz. ParamArray anahtar kelimesi ile yordamlara, aynı veri tipinde bir parametre dizisi verilebilir.

ParamArray ile verilen dizi, yordamın son parametresi olarak tanımlanmalıdır.

Function(Sub) Fonksiyon(Yordam)Adı(ParamArray degisken As Tipi) As Tipi

Bilgisayara Giriş 2010 2011

105

Örnek: NumericUpdown konusundaki matematiksel hesaplamaları function yardımı ile

hesaplayınız.

Fonksiyonların ve Yordamların Aşırı

Yüklenmesi

Fonksiyon ve yordamları kullanırken, aynı isimde birden fazla kez tanımlanabildikleri görülür. Buna

Aşırı Yükleme (OverLoad) denir. Bir yordamın ve fonksiyonun aşırı yüklenmesi kullanımını

kolaylaştırır. Aynı isimde farklı seçenekler sunması, metotların kullanışlılığını artırır.

Overloads Function FonksiyonAdı(degisken1 As Tipi, degisken2 As Tipi,…)

End Function

Örnek: İki sayıyı birbirinden çıkarma veya iki string ifadesinde birini diğerinden çıkarma

işlemlerinin olduğu bir function örneği yapınız.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

106

Bölüm 8. ADO.NET

Konu 2. Veri Depolama

Günümüzde verileri saklamak için çeşitli teknikler kullanılır. Örneğin bir emlakçı emlak alımsatım

bilgilerini dosya kâğıtları üzerinde depolayabilir. Bu yöntem veri arama ve listeleme işlemlerinin

karmaşık hale gelmesine ve arama süresinin uzamasına sebep olur. Hatta daha büyük

organizasyonlarda işlemlerin yavaşlamasına ve durmasına sebep olabilir.

Artan ihtiyaçlar doğrultusunda veri depolamak ve depolanan veriye erişmek için çeşitli veri

depolama yöntemleri geliştirilmiştir. Bu yöntemler şunlardır:

Yapısal Olmayan: Bu yöntem ile depolanan veriler için belirli bir sınıflandırma ve sıralama yoktur.

Veriler düz bir şekilde kaydedilir. Örneğin basit not dosyaları.

Yapısal: Bu yöntem ile depolanan veriler çeşitli gruplara ayrılarak saklanır, fakat bu gruplar

arasında bir altüst ayrımı yapılmaz. Örneğin virgülle ayrılmış dosyalar (csv), Excel belgeleri.

Hiyerarşik: Hiyerarşik depolama yöntemini ağaç yapısına benzetebiliriz. Bu yöntemde veriler

çeşitli kategorilere bölünerek depolanır. Her bir kategorinin içinde alt kategorilerde olabilir.

Örneğin XML (eXtensible Markup Language) dosyaları.

İlişkisel Veritabanı: İlişkisel veritabanlarında veriler tablolar üzerinde depolanır. Tablo içindeki

her satır kaydı, her sütun ise veriyi ifade eder. Örneğin SQL Server, Oracle, Access.

Nesne Yönelimli Veritabanı: En gelişmiş veri depolama yöntemidir. Bu yöntemde veriler; ihtiyaca

göre gruplandırılarak nesneler içinde saklanır. Örneğin Versant, AOL.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

107

ADO.NET bu depolama tekniklerinin tümünü destekler.

Bağlantılı (Connected) Veri Ortamları

Bağlantılı veri ortamları, uygulamaların veri kaynağına sürekli bağlı kaldığı ortamlardır. Bu

ortamlarda veri alma ve değiştirme işlemleri uygulama ile veri kaynağı arasında bağlantı kurulduktan

sonra gerçekleştirilir. Bağlantılı veri ortamlarında, veri işlemleri gerçekleştiği sürece bağlantı açık

kalır.

İlk bilgisayar üretiminden bugüne en çok tercih edilen yöntem bağlantılı veri ortamları olmuştur.

Bağlantılı ortamlar veriye erişmek için birçok avantaj sağlar.

Avantajları

En güvenli veri ortamıdır.

Veri kaynağına yapılan eş zamanlı erişimlerde, veri kaynağının kontrolünü kolaylaştırır.

Dezavantajları

Uygulama ile veri kaynağı arasında gerçekleşen bağlantıyı koruyabilmek için sabit bir ağ

bağlantısının olması gerekir.

Uygulama ile veri kaynağı arasındaki bağlantı ağ üzerinden gerçekleştiği için, ağ trafiğinin

yoğunluğunu artırır.

Örneğin araba üreten bir fabrikada yapılan üretim bilgilerinin diğer birimlere ulaştırılması ve bu

kayıtların depolanması için eş zamanlı bir bağlantı kurulması gereklidir. Ya da bir emlak firmasında

emlakçının, mülk ve menkul bilgilerini güncel tutabilmesi için sabit bir bağlantı kurması gereklidir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

108

Bağlantısız (Disconnected) Veri Ortamları

Bağlantısız veri ortamı, uygulamanın veri kaynağına sürekli bağlı kalmadığı veri ortamıdır. Uygulama

ile veri kaynağı arasındaki bağlantı, veri alışverişi yapılırken açılır ve işlem bittikten sonra kapatılır.

Bu veri ortamları çevrim dışı çalışmak için kullanılır.

Teknolojinin ilerlemesi ve veri depolayan araçların taşınabilirliğinin sağlanması ile tüm dünyada

çevrimdışı ortamlara duyulan ihtiyaç artmıştır. Laptop, Notebook ve Pocket PC gibi araçların

yaygınlaşması ile günümüzde uygulamanın veri kaynağına bağlı olmadığı durumlarda bile veri girişi

yapılabilir.

Uygulamada sadece çevrimiçi veya çevrimdışı ortamlardan birini seçmek yeterli olmayabilir.

Gelişmiş uygulamalarda her iki ortamın avantajlarını birleştiren bir çözüm tercih edilebilir.

Avantajları

Laptop, Notebook ve Pocket PC gibi araçlarla girilen veriler, istenilen zamanda veri ortamlarına

aktarılabilir.

Çevrimdışı ortamlar sayesinde, verilerin depolandığı uygulama üzerindeki yük hafifletilir. Bu

durum performans artışını sağlar.

Dezavantajları

Bağlantısız veri ortamlarında, verilerin güncel kalmasına dikkat edilmelidir. Bu ortamlarda veri

güncelleme işlemleri farklı zamanlarda gerçekleştirilebilir. Veri üzerinde yapılan bu

değişimlerin diğer kullanıcılara gösterilebilmesi için çeşitli çözümler geliştirilmelidir.

Bağlantısız veri ortamları içinde farklı kullanıcılar eş zamanlı güncelleme işlemleri

gerçekleştirebilir. Bu durumda oluşacak veri çakışmalarının engellenmesi gerekir.

Örneğin bir toptancı firmasında, firma çalışanları farklı konumdaki bayilerinin tüm siparişlerini bir el

bilgisayarına kaydedebilir. Bu veriler el bilgisayarında geçici bir süre için depolanır. Bu süre

çalışanların sahada kaldığı süredir. Süre sonunda veriler sunucu bilgisayara aktarılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

109

Konu 3. ADO.NET‟e Giriş

ADO.NET Nedir?

ADO (ActiveX Data Objects), farklı veri kaynaklarına hızlı ve güvenli erişim için Microsoft tarafından

geliştirilen nesne modelidir. ADO.NET ise ADO teknolojisinin en yeni versiyonudur. ADO ile aynı

programlama modelini kullanmamakla birlikte, ADO modelinden gelen pek çok çözüm yolunu da

beraberinde getirir.

Uygulama gelişim ihtiyacı arttıkça, yeni uygulamalarda Web uygulama modeline olan bağlılık

gittikçe azalmaktadır. Şimdilerde ise ağ bağlantıları üzerinden veriyi rahatça aktarabilmek için XML

kullanımına olan yönelim artmaktadır. İşte ADO.NET, XML ve ADO.NET„in .NET Framework içinde en

uygun şekilde programlama ortamı oluşturmamızı sağlar.

ADO.NET modelinin diğer veri erişim modellerine göre üstünlüklerini şöyle sıralayabiliriz:

ADO.NET, veritabanından çekilen verilerin kopyasını XML formatını kullanarak belleğe aktarır.

Uygulamanın kullanıcı sayısı arttıkça kaynak kullanımı da artar. Nkatmanlı (Ntier) uygulama yapısı

kullanılarak, uygulamaların katmanlar üzerinden dağıtılması sağlanır. Böylece uygulamaların

ölçeklenirliği artar.

ADO.NET ile bağlantısız veri ortamları için uygulama geliştirilebilir. ADO.NET gelişmiş XML

desteği verir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

110

ADO.NET Nesne Modeli

ADO.NET nesne modeli iki ana bölümden oluşur.

DataSet sınıfları

.NET veri sağlayıcı sınıfları

DataSet sınıfları, çevrimdışı ortamlar için veri depolama ve yönetme işlemlerini sağlar. DataSet

sınıfları veri kaynağından bağımsız her tür uygulama ve veritabanı için kullanılabilir. Özellikle

İlişkisel Veritabanı, XML ve XML Web Servisleri üzerinden veri çekmek için kullanılır.

.NET veri sağlayıcı sınıfları, farklı türdeki veritabanlarına bağlanmak için kullanılır. Bu sınıflar

sayesinde istenilen türdeki veri kaynağına kolayca bağlantı kurulabilir, veri çekilebilir ve gerekli

güncelleme işlemleri yapılabilir. ADO.NET nesne modeli, aşağıdaki veri sağlayıcı sınıflarını içerir:

SQL Server .NET veri sağlayıcısı

OLE DB .NET veri sağlayıcısı

Diğer .NET veri sağlayıcıları

Hangi veri kaynağı kullanılacaksa, sadece ona uygun veri sağlayıcı sınıfı kullanılmalıdır.

ADO.NET Veri Sağlayıcıları

.NET veri sağlayıcıları, ADO.NET mimarisinin veritabanı ile uygulama (Windows, Web) veya XML Web

Servisi arasında bağlantı kurmak için her tür alt yapıyı barındıran çekirdek bileşendir. Tüm veri

sağlayıcıları, System.Data isim alanı içinde tanımlanmıştır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

111

.NET Framework 1.0 sürümü ile birlikte SQL Server .NET ve OLE DB .NET veri sağlayıcı sınıfları

gelmiştir.

SQL Server .NET: SQL Server 7.0 ve SQL Server 2000 veritabanlarına hızlı bağlantı sağlar. SQL

Server bağlantı nesneleri System.Data.SqlClient isim alanında bulunur.

OLE DB .NET: SQL Server 6.5 ve daha öncesi sürümlerine, Oracle, Sybase, DB2/400 ve Microsoft

Access veritabanlarına bağlantı kurmayı sağlar. OLE DB bağlantı nesneleri System.Data.OleDb

isim alanında bulunur.

.NET Framework 1.1 sürümü ile birlikte SQL Server .NET ve OLE DB .NET veri sağlayıcılarına Oracle

.NET ve ODBC .NET veri sağlayıcıları da eklenmiştir.

ORACLE .NET: Oracle veritabanlarına bağlantı için tasarlanmış veri sağlayıcısıdır. Oracle bağlantı

nesneleri System.Data.OracleClient isim alanında bulunur.

System.Data.OracleClientisim alanını kullanmak için, projeye System.Data.OracleClient.dll

referansı eklenmelidir.

ODBC .NET: Diğer veritabanlarını destekleyen genel bir veri sağlayıcıdır. ODBC bağlantı nesneleri

System.Data.ODBC isim alanında bulunur.

Veritabanı Veri Sağlayıcısıİsim Alanı

Sql Server 7.0 ve sonraki sürümler System.Data.SqlClient

Sql Server 6.5 ve önceki sürümler System.Data.OleDb

Microsoft Access veritabanı System.Data.OleDb

Oracle Server System.Data.OracleClient

Diğer veritabanları(Oracle,

Sybase,DB2/400) System.Data.OleDb

XxxConnection: Veri kaynağına bağlantı için kullanılan sınıftır.

XxxCommand: Veri kaynağı üzerinde sorgu çalıştırmak için kullanılır. Veri kaynağından dönen

kayıtlar

XxxDataReader veya DataSet kullanılarak veri bağlantılı kontrollere aktarılır.

XxxDataReader: Çevrimiçi bağlantılarda sadece veri okumak için kullanılan sınıftır.

XxxDataAdapter: Çevrimdışı bağlantılarda kullanılan veri işleme nesnesidir.

Xxx yerine seçilen veri sağlayıcısına göre SQL, OLEDB, Oracle ve ODBC eklerinden biri kullanılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

112

Konu 4. Bağlantı Oluşturmak Öncelikle grafiksel arayüzü kullanarak daha kolay şekilde yapacağız. Daha sonra bunu kod ile

yapacağız.

Menü Yardımı ile bağlantı oluşturmak 1. Data menüsünden Add New Data Source menüsüne tıklayın:

2. Data Source Configuration Wizard da Database icon‟u tıklayıp Next‟e tıklayın.

3. New Connection butonuna tıklayın.

4. Microsoft Access Database File ı seçin ve OK deyin.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

113

5. DataBase‟i seçmek için Browse‟yi tıklayın ve dosyanızı seçin.

6. Test Connection butonuna basın.

7. OK dedikten sonra bağlantımızı test etmiş oluyoruz.

8. (+) işaretine bastığımızda tamamlanmış bağlantının şekli aşağıdaki gibidir. Bağlantı

sağlayıcımızın ismi Microsoft.Jet.OLEDB.4.0 şeklinde ve otomatik olarak gelmiştir. Daha

sonra bunu kod ile yapacağız.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

114

9. Next‟ tıklayın.

10. Geçerli bağlantı cümlesini oluşturmak için Next‟e tıklayın.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

115

11. Tablonun içindeki listeleri görmek için (+)‟ya tıklayın.

12. Seçmek istediğiniz sütunları checkbox‟ı işaretleyerek seçiniz.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

116

13. Data Source Configuration Wizard‟ı kapatmak için Close tıklayın.

14. Solution Explorer pencersindeki görünüt aşağıdaki gibi olacaktır.

Burada yeni bir dosya türü görüyoruz: StudentsDataSet.xsd. Bu dosya bir XML şemasıdır,

tabloları, alanları, data tiplerini ve diğer elemanları içerir

15. Solution Explorer‟dan dosyayı seçin ve görüntüsünü izleyin.

16. Instructor field alanını tıklayın ve özellikler kısmını açın.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

117

17. Bu uygulamada yeni bir pencere açılıyor. Data Sources window.

Seçili olan alanlar

Students.mdb veri tabanından instructors tablosun

alanlar

Yeni StudentsDataSet bağlantısı.

DataSet i yenilemek için kullanılır.

DataSet e alan ekleme ve silme için kullanılır.

DataSet i düzenleme için kullanılır.

Yeni DataSet ekleme için kullanılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

118

Grafiksel arayüzü kullanarak bağlantı

oluşturmak Uygulamaya veritabanınıeklemek.

Proje ismi sağ tıklayın.

Açılan menüden Add alt menüsündeki Add Existing Item komutunu verin.

Açılan pencere üzerindeki Look in açılan kutusundan CD Sürücüsü\Veritabanı klasörünü seçin.

Açılan Add Existing Item penceresinden *.mdb veritabanını seçerek Open düğmesini tıklayın.

Şimdi ise bu işlemleri kod ile gösterelim.

Parametre Tanımı

Provider Sadece OleDbConnection nesnelerinde kullanılır. Bağlantı sağlayıcısının ismini tutar. Sağlayıcı isimleri diğer Tablo „da belirtilmiştir.

ConnectionTimeout veya ConnectTimeout

Veritabanı bağlantı için beklenmesi gereken maksimum saniye sayısıdır. Varsayılan değer 15 saniyedir.

Initial Catalog Veritabanı adı

Data Source SQL Server adı, veya MS Access veritabanı için dosya adı

Password (pwd) SQL Server login (giriş) parolası

User Id (uid) SQL Server login (giriş) adı

Integrated Security veya Trusted Connection

SQL sunucusuna Windows hesabı ile bağlantı yapıla- cağını belirtir. True, Falseveya SSPI girilebilir. SSPI, Trueile eş anlamlıdır ve bu durumda Windows hesabı kullanılır.

Persist Security Info Varsayılan değeri False olur. Bu durumda güvenlik için hassas bilgileri geri döndürmez. True olduğunda ise güvenlik risk taşımaya başlar.

Provider parametresinin Access, SQL Server ve Oracle veritabanlarına göre alacağı değerler

aşağıdaki tabloda gösterilmiştir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

119

Tür Açıklama

SQLOLEDB SQL Server için Microsoft OLE DB Provider

MSDAORA ORACLE için Microsoft OLE DB Provider

Microsoft.Jet.OLEDB.4.0 Microsoft Jet için OLE DB Provider

Bağlantılı (Connected) Veri Ortamları

XXXConnection

Toolbox ı kullanarak

ToolBox üzerinden Connection nesnesi oluşturmak için belirtilen adımları takip edin.

1. ToolBox içinden Data paneli seçilir.

2 Data panelindeki OleDbConnection veya SqlConnection nesnesi form üzerine sürüklenir. Eğer bu

nesneler Data panelinde yok ise panelin üstüne sağ tuş tıklanıp “Choose Items” seçeneği seçilir.

Gelen menüde Net Framework Components‟lerin içinden OleDbConnection veya SqlConnection

nesnesi işaretlenerek OK butonuna basılır.

Bağlantı oluşturmak için Connection nesnesinin DataSource özelliğinden, veri tabanını seçiniz.

Kod kullanarak

SQL Server veritabanı için bağlantı cümlesi

Örnek: SQL Server veritabanı için bağlantı cümlesi oluşturulmuştur. London isimli sunucuda

bulunan Northwind veritabanına, sa kullanıcı ismi ve 2389 parolası ile bağlanılıyor. Eğer

veritabanı sunucusundan 60 saniye içinde cevap alınamazsa bağlantı iptal ediliyor.

Dim cnNorthwind as New System.Data.SqlClient.SqlConnection()

cnNorthwind.ConnectionString = _

"User ID=sa;" & _

"Password=2389;" & _

"Initial Catalog=Northwind;" & _

Hata! Tablo için geçersiz bir sonuç. 2010 2011

120

"Data Source=London;" & _

"Connection TimeOut=60;"

Microsoft Access veritabanı için bağlantı cümlesi

Örnek: Microsoft Access veritabanı için bağlantı cümlesi oluşturulmuştur. OleDb bağlantısı

yapıldığı için Provider özelliğinin Microsoft.Jet. OleDB.4.0 olarak belirtilmesi gerekir.

Bağlantının yapılacağı Northwind veritabanının local makinede C:\Samples dizini altında

bulunduğu belirtiliyor.

Dim cnNorthwind as New System.Data.OleDb.OleDbConnection()

cnNorthwind.ConnectionString = _

"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\Samples\Northwind.mdb;"

Connection Özellikleri

Parametre Tanımı

ConnectionTimeout VeritabanI bağlantI için beklenmesi gereken maksi-mum saniye sayIsIdIr.

VarsayIlan değer 15 saniyedir.

ConnectionString Veri kaynağına bağlanmak için oluşturulan bağlantı cümlesi

Data Source SQL Server adI, veya MS Access veritabanI için dosya adI

Provider Bağlantı sağlayıcısının ismini tutar.

Bağlantıyı Açmak ve Kapatmak

Bağlantı cüml esini oluşturduktan sonra, bağlantıyı açmak ve kapatmak için Connection sınıfının iki

önemli metodu kullanılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

121

Open

Close

Open metodu, bağlantı cümlesinde belirtilen veri kaynağını açmak için kullanılır.

Close metodu, açılan bağlantıyı kapatmak için kullanılır. Close metodu ile kullanılmayan bağlantıları

kapatmak, kaynak tüketimini azaltır. Open metodu, uygulama ile veri kaynağı arasındaki bağlantıyı,

bağlantı cümlesinin Timeout parametresinde belirtilen süre içinde kurmaya çalışır. Eğer belirtilen

süre içinde bağlantı gerçekleşmiyorsa, uygulama hata üretir. Bu süre için herhangi bir değer

belirtilmemişse, varsayılan değer 15 saniyedir.

Daha önceden açılmış bir bağlantı; kapatılmadan tekrar açılmaya çalışılırsa, uygulama yine hata

üretir. Kapatılan bağlantının yeniden kapatılması hataya yol açmaz.

cnNorthwind.ConnectionString = _

"Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\Samples\Northwind.mdb;"

�Bağlantıyı açmak

cnNorthwind.Open()

�Veritabanı işlemleri bu arada gerçekleştirillir.

�Bağlantıyı kapatmak

cnNorthwind.Close()

Open metodu ile veri kaynağı açılırken, çeşitli çalışma zamanı hatalarından dolayı bağlantı

açılmayabilir ve uygulama hata üretebilir. Bu çalışma zamanı

hataları;

Sunucunun bulunamamasından,

Veritabanının bulunamamasından,

Hatalı kullanıcı adı veya parola girilmesinden,

Donanım veya yazılımdan kaynaklanabilir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

122

Bağlantı Durumlarını Kontrol Etmek

Bağlantı sınıfının durumu hakkında bilgi almak için, bağlantı sınıfının State özelliği kullanılır.State

özelliğinin alabileceği değerler Tablo „da belirtilmiştir.

İsim Açıklama Değeri

Broken Yalnızca, açık bir bağlantının kopup tekrar bağlanıldığı durum 16

Closed Bağlantı kapalı 0

Connecting Veri kaynağına bağlanma aşamasında 2

Executing Bağlantı üzerinden bir komutu çalıştırılıyor 4

Fetching Bağlantı üzerinden veri çekiliyor 8

Open Bağlantı açık 1

XXXCommand

Command, veritabanı üzerinde Stored Procedure (SaklıYordam) ve sorgu çalıştırmak için kullanılır.

Command nesneleri ile veritabanı tablolarında; sorgu, ekleme, silme ve güncelleme işlemleri

yapılabilir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

123

Nesne Veri Sağlayıcıları

System.Data.SqlClient.SqlCommand SQL Server .NET Veri Sağlayıcısı

System.Data.OleDb.OleDbCommand OLE DB .NET Veri Sağlayıcısı

System.Data.OleDb.ODBCCommand ODBC .NET Veri Sağlayıcısı

Veritabanı üzerinde Stored Procedure ve sorgu çalıştırmak için Command nesnelerinin belirli

özelliklerini kullanmak gerekir.

Toolbox ı kullanarak

ToolBox üzerinden Command nesnesi oluşturmak için belirtilen adımları takip edin.

1 Veri kaynağına bağlantıkurmak için Connection tanımlanır.

2 ToolBox içinden Data paneli seçilir.

3 Data panelindeki OleDbCommand veya SqlCommand nesnesi form üzerine sürüklenir.

Kod kullanarak

Dim sql As String = "SELECT StokMiktari FROM Urun " & _

"WHERE UrunID = @UrunID"

Dim cmUrun As New SqlCommand(sql, cnAlisveris)

Dim prmID As SqlParameter = cmUrun.Parameters.Add( _

New SqlParameter("@UrunID", SqlDbType.Int, 4))

cmUrun.Parameters("@UrunID").Value = 42

cnAlisveris.Open()

Command özellikleri

Özellik Açıklama

Name Command nesnesinin kod içinde kullanılan ismidir.

Connection Commandnesnesinin hangi Connection üzerinde çalışacağını belirler.

Bu özellik ile yeni Connection oluşturabilir veya varo-lan Connection

nesnesine bağlanılabilir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

124

CommandType Command nesnesinin tipini belirler. Çalıştırılacak Command„a göre

Text, StoredProcedureve TableDirect seçilir.

Text: SQL Cümlesi

StoredProcedure: Kayıtlı Yordam

TableDirect: Tablo kayıtları

TableDirectsadece OleDbCommand nesnesi tarafından kullanılır.

CommandText Commandnesnesinin çalıştırılacak komutudur. Seçilen

CommandType„a göre CommandText belirlenir.

Text: Çalıştırılacak SQL cümlesi.

StoredProcedure: Çalıştırılacak Stored Procedure adı.

TableDirect: Veritabanındaki tablo adı

Parameters Commandnesnesinin CommandTextkomutuna dışardan değer almak

veya komuttan geriye değer döndürmek için kullanılır. Parameters

özelliği Collection olduğu için bir veya birden çok değer alabilir veya

gönderebilir.

Command metotları

Command Metodu Açıklama

ExecuteScalar Çalıştırılan Command nesnesinden geriye tek değer döndür-mek için

kullanılır.

ExecuteReader Çalıştırılan Command nesnesinden geriye kayıt kümesi dön-dürmek

için kullanılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

125

ExecuteNonQuery Command nesnesi üzerinde veri güncelleme, değiştirme ve silme

işlemleri yapmak için kullanılır. Bu işlemin sonucunda etkilenen

kayıt sayısı geriye döndürür.

ExecuteXmlReader Çalıştırılan Command nesnesinden geriye XML döndürmek için

kullanılır. Sadece SQL Server 7.0 ve sonraki versiyonları için

kullanılır.

Dispose Command nesnesini kapamak amacıyla kullanılır. Böyle bir durumda

tekrar Connection tanımlanmalıdır.

Parametre Kullanmak

Stored Procedure ve SQL cümleleri parametre alabilir veya gönderebilir. Ayrıca Stored Procedure

geriye tek değer bile döndürebilir. Stored Procedure ve SQL cümlelerinin parametre değerlerini

saklamak için, XXXCommand nesnesinin Parameters özelliği kullanılır. Aynı zamanda bu özellik

XXXParameters nesnesinin koleksiyonudur.

Command nesnesi çalıştırılmadan önce, komuttaki her giriş parametresi için bir değer girilmelidir.

Ayrıca Command nesnesi çalıştırıldıktan sonra, sonuç parametrelerinin değerleri geriye

döndürülebilir.

Commandnesnesine parametre eklemek için aşağıdaki yöntemler kullanılır.

Properties penceresi kullanılarak Command nesnesinin Parameters özelliğine tasarım aşamasında

parametreler eklenir.

XXXParameter nesnesini kullanarak, parametre eklemek için aşağıdaki adım-lar takip edilir.

1 Yeni bir OleDbParameterveya SqlParameternesnesi oluşturulur.

2 Eklenen Parameter nesnesinin özellikleri göre ayarlanır.

3. XxxParameter nesnelerini Command nesnesine eklemek için, Command nesnesinin

Parameters koleksiyonunu içindeki Add metodu kullanılır. Eğer bu komut sonuç döndürecek bir

Stored Procedure çağırıyorsa, herhangi bir parametre eklemeden önce ParameterDirection.

ReturnValue parametresini eklenmelidir. Parametrelerin eklenme sırasıönemli değildir.

OleDbCommand_Name.Parameters.Add (parametername as string, oledbtype as oledbtype, size

as integer)

Hata! Tablo için geçersiz bir sonuç. 2010 2011

126

Oledbcommand_name.Parameters. .AddWithValue(parametername as string, value as Object)

Parametrelerin özellikleri:

Özellik Açıklama

ParameterName Parametrenin ismi, @Adgibi

DbType,SqlDbType,

OleDbType

Parametrenin veri türü. Kullanılan veritabanına göre

SqlDbTypeveya OleDbType enumeratörlerinden seçilir.

Size Parametredeki verinin byte olarak maksimum boyutu.

Direction Parametrenin türü.

ParameterDirectiondeğerlerinden biri ile belirtilir. Bu özelliğin

alabileceği değerler:

ParameterDirection.Input (varsayı-

lan değer)

ParameterDirection.InputOutput

ParameterDirection.Output

ParameterDirection.ReturnValue

XXXDataReader

DataReader dönen kayıtlar üzerinde işlem yapmayı sağlayan metot ve özelliklere sahiptir.

DataReader nesnesinin bu özellik ve metotları aşağıda işlemleri yapar.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

127

Kayıt kümesi içindeki kayıtları tek tek okur.

Kaydın belirli bir kolonunu veya tüm kolonlarını okur.

Kolonların içinde değer olup olmadığını kontrol eder.

Kolonların şema bilgilerini okur. (ColumnName, ColumnOrdinal,ColumnSize, NumericPrecision,

NumericScale, Datatype,ProviderType, Islong, AllowDBNull)

Aşağıdaki şekilde sadece kod ile DataReader nesnesi tanımlanır

Dim DataReader_Adı As OleDbDataReader

DataReader metotları

Metot Açıklama

Close DataReader nesnesini kapatılır ve hafızadan kaldırır.

NextResult Komut metninde birden fazla SELECT ifade varsa, sonuçlar bu metot

kullanılarak farklı veri kümeleri gibi alınabilir.

Read DataReader nesnesinde okunacak kayıt olduğu sürece okuma yapar. Kayıt

varsa True, yoksa False değeri geri döndürür.

Command ile Sorgu Oluşturmak Command ile veritabanı yapısında değişiklik yapılabilir (veri almak, eklemek, değiştirmek ve silmek.

OleDbCommand veya SqlCommandnesnesi ile bu tür işlemlerin yapılabilmesi için,

ExecuteNonQuerymetodu kullanılır.

ExecuteNonQuery metodu ile Select hariç SQL (Structured Query Language) ve TSQL (Transact

Structured Query Language) komutları kullanılır. SQL "Structured Query Language"

(YapılandırılmışSorgulama Dili) veritabanı sorgu dilidir. SQL ile veritabanına kayıt ekleme, silme,

varolan kaydı düzenleme ve kayıt sorgulama işlemleri yapılabilir. SQL standart bir veritabanı sorgu

dilidir ve Oracle, db2, Sybase, Informix, Microsoft SQL Server, MS Access gibi veritabanı yönetim

sistemlerinin temelini oluşturur. En sık kullanılan SQL komutları SELECT, INSERT, UPDATEve DELETE

komutlarıdır.

DML Komutu Açıklama

SELECT Veri seçmek

DELETE Veri silmek

Hata! Tablo için geçersiz bir sonuç. 2010 2011

128

UPDATE Veri güncellemek

INSERT Veri girmek

SELECT ifadesi Veritabanından bilgi seçmek için kullanılır.

Genel ifade:

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi WHERE Koşul ORDER BY

Sıralanacak_sütun [ASC/DESC]

Temel SELECT ifadesi:

SELECT * FROM Tablo_ismi

(*) ile tüm alanları seçer.

Belirli Sütunların seçilmesi:

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi

Koşullu olarak sütunların seçilmesi

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi WHERE Koşul

Satırları sıralamak için:

SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi ORDER BY

Sıralanacak_sütun [ASC/DESC]

INSERT ifadesi: Veritabanına yeni kayıt eklemek için kullanılır.

INSERT INTO Tabo_ismi (Sütun_ismi1, Sütun_ismi 2,…) VALUES (Deger1, Deger2,…)

UPDATE ifadesi: Veritabanına kayıt değiştirmek için kullanılır.

UPDATE Tabo_ismi SET (Sütun_ismi 1=Deger1, Sütun2= Deger2,…) WHERE koşul

DELETE ifadesi: Veritabanından kayıt silmek için kullanılır.

DELETE FROM Tabo_ismi WHERE Koşul

Hata! Tablo için geçersiz bir sonuç. 2010 2011

129

Command ile Kayıt Döndüren Sorgular

Çalıştırmak DataReader kullanarak kayıt çekmek için aşağıdaki adımları takip edin.

1 Bağlanılacak veritabanına göre Connection nesnesi eklenir.

2 Bağlanılacak veritabanına göre OleDbCommand veya SqlCommand nesnesi eklenir ve

gerekli özellikleri ayarlanır.

3 Veritabanı bağlantısı açılır.

4 DataReader tanımlanır. Command nesnesinin ExecuteReader metodu ile çağrılan kayıtlar

DataReadernesnesine atanır.

5 DataReader nesnesinin Read metodu False oluncaya kadar, kayıtlar döngü ile okunur ve

form kontrollerine aktarılır.

6 Command nesnesi kapatılır (dispose)

7 DataReader kapatılır.

8 Veri tabanı bağlantısı kapatılır.

NOT: Eğer kayıt döndürmek istemiyorsak, Datareader nesnesini tanımlamya, Read ve Close

metodlarını çalıştırmaya gerek yoktur.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

130

OleDbCommand nesnesinin ConnectionString Özelliğini Belirle!

OleDBConnection nesnesinin Connection özelliğini Open olarak belirleyiniz (Herbir

prosedür için ayrı ayrı yapılıcak ise kod ile).

OleDBCommand nesnesinin Connection özelliğini OleDBConnection nesnesi olarak

belirleyiniz (Toolbar veya Kod ile.)

OleDBCommand nesnesi tanımlayınız (Toolbar veya kod ile).

OleDBConnection nesnesinin ConnectionString özelliği ile veritabanına bağlantı yapınız

(Properties penceresi veya kod ile).

OleDBConnection nesnesi tanımlayınız (Toolbar veya kod ile).

Data ile Bağlantı Yapınız (Menü ile).

Hata! Tablo için geçersiz bir sonuç. 2010 2011

131

SELECT-Veri seçmek

•SELECT Sütun_ismi1, Sütun_ismi2, Sütun_ismi3,… FROM Tablo_ismi WHERE Koşul ORDER BY Sıralanacak_sütun [ASC/DESC]

DELETE-Veri silmek

•DELETE FROM Tabo_ismi WHERE Koşul

UPDATE-Veri güncellemek

•UPDATE Tabo_ismi SET (Sütun_ismi 1=Deger1, Sütun2= Deger2,…) WHERE koşul

INSERT-Veri girmek

•INSERT INTO Tabo_ismi (Sütun_ismi1, Sütun_ismi 2,…) VALUES (Deger1, Deger2,…)

Kayıt Döndürücek misin!

Evet

OleDbDataReader nesnesi tanımla! (Kod ile)

Command nesnesinin ExecuteReader metodu ile çağrılan kayıtlar DataReader

nesnesine ata

DataReader nesnesinin Read metodu False oluncaya kadar, kayıtlar döngü ile okunur ve form kontrollerine aktarılır.

DataReader kapatılır.

Command nesnesi Dispose ile son bulur.

Connection kapatılır.

Hayır

Command Nesnesi Dispose ile son bulur.

Connection kapatılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

132

Örnek 1: Öğrenci not tablosu, öğrenci no bulma, öğrenci kayıt ekleme, silme, güncelleme

Örnek 2: İş başvuru formu, iş başvuru kayıt ekle, sil, güncelle, görüntüle.

Bağlantısız (Disconnected) Veri Ortamları

Bağlantısız veri ortamları, uygulamaların veritabanından bağımsız çalıştığı ortamlardır. Veritabanı

sunucusunun uzak olması, veri işlemlerinin uzun sürmesi ve mobil çalışma ihtiyacı, bağlantısız veri

ortamlarına olan ihtiyacı artırmıştır.

Bağlantısız veritabanı mimarisini öğrenecek,

DataAdapter nesnesinin yapısını tanıyacak,

DataSet nesne modelini öğrenecek,

DataTable nesne modelini öğrenecek,

Veri arama ve sıralama işlemlerini öğreneceksiniz.

Bağlantısız veri ortamı, uygulamanın veri kaynağına sürekli bağlı kalmadığı veri ortamıdır. Bu

modelde, veri kaynağının istenen bölümü çekilerek belleğe alınır. Veri üzerinde gerekli işlemler

gerçekleştirildikten sonra, veri kaynağına aktarılarak güncelleme yapılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

133

Sınıf Açıklama

XXXDataAdapter Connection, Command ve DataReader sınıflarını kullanarak, verilerin

DataSet„e doldurulmasını ve DataSet„te yapılan değişikliklerin

veritabanına kaydedilmesini sağlar.

Örneğin SqlDataAdaptersınıfı SQL Server ile DataSetarasındaki

etkileşimi sağlar.

XXXConnection Bağlantı açmak ve kapatmak için kullanılan nesnedir.

Örneğin SqlConnectionSQL Server„a bağlantı sağlar.

XXXCommand Veritabanı üzerinde Stored Procedure (Saklı Yordam) veya SQL

cümleleri çalıştırmak için kullanılan nesnedir.

Örneğin SqlCommandSQL Server üzerinde Stored Procedure veya SQL

cümleleri çalıştırmayı sağlar.

XXXDataReader Veritabanından sadece okunur ve ileri hareketli kayıtlar çekmek için

kullanılır. Örneğin SqlDataReaderile SQL Server üzerinden kayıtlar

okunur. Kayıtlar SqlCommandnesnesinin ExecuteReader metodu ile

DataReader„a aktarılır.

DataAdapter Oluşturmak DataAdapter, data kaynağı ile DataSet arasında duran bir mekanızmadır. SQLDataAdapter ve

OleDbDataAdapter olmak üzere 2 çeşittir. DataAdapter, seçme, güncelleme, silme ve kayıt ekleme

işlemlerini yapar. Bu yöntemler SelectCommand, UpdateCommand, InsertCommand ve

DeleteCommand özellikleri ile sağlanır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

134

XxxDataAdapter oluşturmak için aşağıdaki adımları takip ediniz:

Formunuzun Toolbox penceresinde, Data panelinden XxxDataAdapter bileşeninin formunuza

sürükleyin.

Karşımıza aşağıdaki gibi DataAdapter Configuration Wizard penceresi çıkıcaktır. Burada database

ile bağlantı yapılacaktır. Eğer daha önceden bir bağlantı yapılmış ise dropdownlist‟de yapılan

Hata! Tablo için geçersiz bir sonuç. 2010 2011

135

bağlantıyı görürsünüz aksi durumda boştur ve New Connection butonuna basarak yeni bağlantı

oluşturmak zorundasınız.

Data bağlantısını yaptıktan sonra Sorgu tipini belirleyeceğimiz ekran gelicektir. Burada SQL

komutunu veya yeni (varolan) bir prosedürü kullanabilirsiniz. İlk önce kullanmak için SQL

konutunu belirlemelisiniz. Buna göre aşağıdaki pencereyle karşılaşırsınız.

Database deki kayıtları çağırmak için SELECT komutunu kullanmamız gerekmektedir. (Bkz. SELECT

ifadesi). Ayrıca direk yazmak yerine “Query Builder” butonu bize yardımız olucaktır.

Öncelikle Advance Options butonuna basalım.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

136

Seçtiğimiz pencerede 3 seçenek vardır. Birincisi, Insert, Update ve Delete SQL ifadeleriniz SELECT

konutu ile oluşturulacağını söyler. Eğer veriler üzerinde silme, kaydetme veya güncelleme

işlemleri yapıcaksak bu seçeneğin tıklı olması gerekmektedir aksi durumda seçimi

kaldırmalısınız. 2. Seçenek olan Use optimistic concurrency seçeneği, UPDATE veDELETE

konutlarını gerçekleştir ve orijinal kayıtlara ulaşıldığında hiçbir kolonun değişmemesini sağlar

ve aynı zamanda birden fazla kullanıcının değişiklik yapmasını engeller. Son seçenek olan

Refresh Dataset ise UPDATE ve DELETE konutlarından sonra SELECT ifadesini çağırarak,

DataSet‟inizi günceller.

OK butonuna basarak bir önceki ekrana geri dönelim ve şimdi Query Builder butonuna basalım.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

137

İstediğiniz tabloyu seçerek, burada görüntülenmesini istediğiniz kolonları belirleyin. Seçmiş

olduğumuz kolonlar SQL komutu ile aşağıdaki ekranda görünür.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

138

Finish butonu ile bağlantı işlemini yapmış oluruz.

Ve formumuza XxxDataAdapter1 nesnesi ile birlikte XxxConnection1 nesnesi de gelir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

139

Kod Kullanarak

Dim conn As New OleDbConnection("provider = “ & _ “microsoft.jet.oledb.4.0; data

source=../stok.mdb")

Dim da As New OleDbDataAdapter("select * from “ & _

“kitaplar", conn)

DataSet ve DataTable Oluşturmak

Veri kaynağından DataAdapter ile çekilen verilerin çekirdek belleğe atılan kopyası DataSet içinde

saklanır. DataSet ile bu veriler üzerinde gerekli düzenlemeler yapıldıktan sonra, veriler aynı

DataAdapter ile veritabanına aktarılır.

DataSet„in temel özellikleri aşağıda listelenmiştir:

Veri sağlayıcı türünden bağımsız çalışır: DataSet tüm veri sağlayıcılarıile kullanılabilir. Tamamen

türden bağımsız çalışır.

Sürekli çevrimdışıdır: DataAdapter nesnesi ile veriler DataSet içine aktarılır ve bağlantı kapatılır.

Bağlantı kesildikten sonra yapılan tüm değişiklikler DataSet içine kaydedilir. Bu durum

uygulamanın çevrimdışıçalışmasınısağlar.

Değişikliklerin kaydını tutar: DataSet içinde yapılan tüm değişiklikler, DataAdapte rnesnesi ile

veri kaynağına aktarılır.

Birden fazla tablo bulundurabilir: İlişkisel veritabanlarında olduğu gibi, birden fazla tablo ve

ilişkileri hafızada tutmanın tek yolu DataSet kullanmaktır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

140

DataSet, sanal bir veritabanı yapısını temsil eder. DataTable nesnelerinden oluşur. Bu tablolar

arasında ilişkiler tanımlanabilir. DataSet„i oluşturan nesneler, DataTable, DataColumn, DataRow ve

DataRelation nesneleridir.

DataTable: Veritabanı tablolarını temsil eder. DataColumn, DataRow nesnelerinden oluşur.

Primary Key alanı tanımlanabilir.

DataColumn: DataTable nesnelerini oluşturmak için gereken kolonlarıtemsil eder.

DataRow: DataTablenesneleri için veri satırlarını temsil eder.

DataRelationship: Tablolar arasındaki ilişkileri temsil eder.

DataView: DataTable nesneleri üzerinde filtreleme, veri güncelleme leri işlemleri yapmak için

kullanılır.

Dataset oluşturmak için aşağıdaki adımları takip ediniz:

XxxDataAdapter1 kontrolünü üzerine sağ tuş tıklayıp Generate Dataset ifadesini seçin.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

141

Buradaki Configure Data Adapter seçeneği, bağlantınızı yeniden oluşturmanızı ve Preview Data

seçeneği ise verilerinizi göstermeyi sağlar. Eğer bunu seçerseniz aşağıdaki gibi bir ekran ile

karşılaşırsınız.

Generate DataSet seçeneğini seçtikten sonra yeni bir CustomerDataSet oluşturalım, adını

belirleyip, Add this dataset to designer seçeneğini işaretleyin. Bunu işaretlememiz durumunda

formun yüklenmesi ile datanız prejenize yüklenicektir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

142

Ok butonuna bastığımızda formumuzda, CustomerDataSet.xsd XML şeması ile bağlantılı olan

CustomerDataSet1 kontrolü oluşucaktır.

Böylece formumuzda aşağıdaki gibi 3 bileşen bulunacaktır.

Kod Kullanarak

Örnekte ds isminde yeni bir DataSet, New anahtar sözcüğü tanımlanmaktadır. Tanımlamada

DataSet„e parametre olarak girilen YeniDataSet değeri, DataSet nesnesinin DataSetName

argümanıdır. Eğer hiçbir isim verilmezse varsayılan olarak NewDataSet ismi verilir.

Dim ds As New DataSet(“YeniDataSet”)

DataSet, diğer bir DataSet nesnesinden kopyalanarak oluşturulabilir. DataSet kopyalamak için iki

yöntem kullanılır. Birinci yöntem Copy metodu ile diğer bir DataSet nesnesinin, veri ve ilişkileri

(şema bilgileri) kopyalanarak yeni bir DataSet oluşturmaktır. İkinci yöntem Clone metodu ile diğer

bir DataSet nesnesinin şema bilgilerini kopyalanarak, yeni bir DataSet oluşturmaktır. Bu yöntem

şablon kopyalamak için kullanılır.

Örnekte ds ismindeki DataSet nesnesinin tüm tablo, ilişki ve verileri dsCopyismindeki

DatasSetnesnesinin içine aktarılmıştır.

Dim dsCopy As DataSet dsCopy = ds.Copy()

Örnekte ds ismindeki DataSet nesnesinin tüm tablo ve ilişkileri, dsClone ismindeki DataSetnesnesinin

içine aktarılmıştır.

Dim dsClone As DataSet dsClone = ds.Clone()

Örnekte Stok veritabanını içindeki tüm kitaplar, DataAdapter nesnesi ile DataSet„e aktarılmıştır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

143

Dim conn As New OleDbConnection("provider = “ & _ “microsoft.jet.oledb.4.0; data

source=../stok.mdb")

Dim da As New OleDbDataAdapter("select * from “ & _

“kitaplar", conn)

Dim ds As New DataSet("set")

da.Fill(ds, "kitaplar") DataGrid1.DataSource = ds.Tables("kitaplar")

DataSet sınıfının Tables koleksiyonu ile DataSet içine bir veya birden çok DataTable eklenebilir.

DataSet sınıfının Relations koleksiyonu ile DataSet içine bir veya birden çok DataRelation

eklenebilir.

Örnekte dtKitaplarisminde yeni bir DataTableoluşturulmaktadır.

Dim dtKitaplar As New DataTable("kitaplar")

Oluşturulan tabloyu DataSet içine eklemek için DataSet nesnesinin Tables koleksiyonu kullanılır.

Ds.Tables.Add(dtKitaplar)

DataTable nesnesinin içine kolon eklenebilir. Örnekte dtKitaplar ismindeki DataTablenesnesinin

içine, yeniId isminde yeni bir kolon eklenmektedir. Yeni kolon eklemek için, DataTablenesnesinin

Columnskoleksiyonu kullanılır.

Dim colKitapId As DataColumn = dtKitaplar.Columns.Add("yeniId", GetType(System.Int32))

DataAdapter ile KayıtlarıDataset’e Doldurmak

DataAdapter sınıfı, DataSet ile veri kaynağı arasında köprü oluşturur. Veri kaynağına yapılan bağlantı

ile verilerin DataSet nesnesine aktarılmasını sağlar. DataAdapter ayrıca DataSet üzerinde yapılan

değişikliklerin veri kaynağına aktarılmasını sağlar.

XxxDbDataAdapter ile çekilen veriler Dataset nesnesine fill komutu ile aktarılır.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

144

XxxDataAdapter_Name.fill (DatSet_Name)

Fill yöntemi bir tamsayı sonucu verir ve bu sayı DatSet‟te mevcut olan kayıtların sayısıdır.

DataSet Nesnesini Kontrollere Bağlamak

DataSet nesnesi ile veritabanının bir kopyası çekirdek belleğe atıldıktan sonra, bu veriler çeşitli

Windows kontrolleri ile gösterilebilir veya değiştirilebilir. Bu kontrollerin en önemlisi DataGrid

bileşenidir.

DataSet nesnesin içerdiği veri, Windows Form içindeki herhangi bir kontrolün herhangi bir özelliğine

bağlanabilir. Örneğin DataSet içindeki bir tablonun ilk satır ve sütunundaki veri, TextBoxkontrolünün

Textözelliğine bağlanabilir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

145

DataSet içindeki veriyi Windows kontrollere bağlamanın iki yöntemi vardır. Bu yöntemler basit

(simple data binding) ve karmaşık (complex data binding) veri bağlama olarak adlandırılır.

Basit veri bağlama; DataSet içindeki bir veri elemanını (DataTable kolonunu) Windows kontrollere

bağlama işlemidir. TextBox, Label, RadioButton gibi kontroller bu gruba girer. Örneğin, DataSet

tablosundaki herhangi bir kolonu TextBox, Labelgibi Windows kontrollere bağlamak.

Karmaşık veri bağlama; DataSet içindeki birden fazla veri elamanını Windows kontrollerine bağlama

işlemidir. DataGrid, ListBox, ErrorProvider gibi kontroller bu gruba girer.

Basit Bağlantı - CheckBox için: (diğerleri için de benzer şekilde herçekleşir.)

CheckBox‟ın DataBindings.Checked özelliğini, varolan DataSetteki tablonun kolonu ile bağlayın.

Textbox için ise Text kısmını bağlamanız gerekmektedir.

Karmaşık Bağlantı – Listbox için (diğerleri içinde aynıdır!)

ListBox‟ın DataSource özelliğinden DatSet i seçiniz. Ve DisplayMember özelliğini, Listbox‟ın

içerisinde görünmesi gereken kolon olarak belirleyin.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

146

Kod Kullanarak

ComboBox ve ListBox gibi kontrollere veri bağlamak için DataSource ve DataMember özelliği

kullanılır. DataSouce özelliği DataSet içindeki tablo ismini, DisplayMember ise tablo kolonunu

belirtir.

Örnekte, ComboBox ve ListBox kontrolünün DataSource ve DisplayMember özellikleri

kullanılmaktadır.

ComboBox1.DataSource = ds.Tables("kitaplar") „ds DataSetin adı!

ComboBox1.DisplayMember = _ ds.Tables("kitaplar").Columns("kitap_baslik").ToString

ListBox1.DataSource = ds.Tables("kitaplar")

ListBox1.DisplayMember = _ ds.Tables("kitaplar").Columns("kitap_baslik").ToString

Bir diğer özelliği de DataBinding.Add yöntemidir.

TextBox1.DataBindings.Add("Text", CustomerDataSet1, "Customers.Address")

Hata! Tablo için geçersiz bir sonuç. 2010 2011

147

DataSet içindeki veriyi DataGridView’e Bağlamak

DataGridView, veriyi satırlar ve sütunlar halinde görüntüler. DataGridView ile ilişkisiz DataSet

tabloları kolay bir şekilde görüntülenebilir. Bu görüntü Excel tablolarına benzer.

DataGridView ilişkili DataSet tabloları da gösterebilir. Bu durumda istenilen tabloya DataGridView

üzerindeki gezinti köprülerinden erişilebilir. DataSet tablolarını DataGridView kontrolüne bağlamak

için iki yöntem kullanılır. Bu yöntemler grafiksel ve programlama yöntemleridir.

Grafiksel yöntem ile bağlantısağlamak için aşağıdaki adımlarıtakip edin.

1 Araç kutusu üzerindeki DataGridView kontrolünü form üzerine sürükleyin.

2 DataGridView kontrolünün DataSource özelliğini, önceden oluşturulmuş DataSetnesnesine

bağlayın.

3 DataGridView kontrolünün DataMember özelliğini, DataSet tablolarının herhangi biri ile

bağlayın.

Programlama yöntemi ile bağlantı sağlamak için DataGridView nesnesinin DataSource özelliği

kullanılır. Örnekte, DataSet içindeki Kitaplar tablosu DataGridView kontrolüne bağlanır.

DataGridView1.DataSource = ds.Tables("Kitaplar")

Hata! Tablo için geçersiz bir sonuç. 2010 2011

148

DataTable Üzerine Yeni Veri Eklemek

DataTable, veritabanı tablolarını temsil eder. DataColumn, DataRow nesnelerinden oluşur. DataSet

içinde yeni bir DataTable oluşturduktan sonra, veritabanı üzerinde işlem yapıyormuş gibi veri

üzerinde düzenlemeler yapılabilir. DataTable, bu çevrimdışı düzenlemeleri kabul veya iptal etme

olanağı sunar.

DataTable nesnesine, yeni bir satır eklemek için DataRow nesnesi kullanılır. DataTable nesnesinin

NewRow metodu ile oluşturulan yeni satır, DataRow nesnesinin değişkenine atanır.

Örnekte, dtKitaplar tablosuna drNew isminde yeni bir kolon eklenmiştir.

Hata! Tablo için geçersiz bir sonuç. 2010 2011

149

Dim drNew As DataRow = dtKitaplar.NewRow()

DataRownesnesi tanımlandıktan sonra, index veya kolon isimleri üzerinden kolonlara değer girilir.

Örnekte birinci kolona kitabın ISBN numarası, ikinci kolona ise yazar adi bilgileri girilmiştir.

drNew(0) = “9758725149”

drNew(1) = “Tamer Şahiner”

veya

drNew(“kitap_ISBN”) = “9758725149”

drNew(“kitap_yazar”) = “Tamer Şahiner”

Kolanlara bilgi girildikten sonra, tanımlanan DataRow nesnesi DataTable nesnesinin Rows

koleksiyonuna eklenir.

Örnekte drNew nesnesi, dtKitaplar nesnesinin Rows koleksiyonuna eklenir.

dtKitaplar.Rows.Add(drNew)

DataTable nesnesine DataRow kullanmadan kayıt eklenebilir. Örnekte dtKitaplarismindeki

DataTablenesnesine bu yöntem ile kayıt eklenmiştir.

dtKitaplar.Rows.Add(New Object() {“9758725149”, “Tamer Şahiner”})

DataTable Üzerindeki Veriyi Düzenlemek

DataRow ile DataTable içindeki kayıtlar değiştirilebilir. DataRow nesnesi ile satır düzenleme

işlemleri için aşağıdaki metotlar kullanılır.

BeginEdit

EndEdit

CancelEdit

Hata! Tablo için geçersiz bir sonuç. 2010 2011

150

BeginEdit, veriyi düzenlerken oluşabilecek olayları askıya alır. Veriyi düzenlemek için Items

koleksiyonu kullanılır. EndEdit metodu ile, askıya alınan olaylar yeniden aktif edilir. CancelEdit

metodu ile değişikliklerden ve askıya alınan olaylardan vazgeçilir.

Örnekte, DataTable içindeki dördüncü kayıt için güncelleme işlemi yapılmıştır.

Dim drNew As DataRow = dtKitaplar.Rows(3)

drNew.BeginEdit()

drNew("kitap_baslik") = "yeni hayat"

drNew("kitap_yazar") = "can dündar"

drNew.EndEdit()

DataRow ile DataTable içindeki belirli bir satır silinebilir. Örnekte, DataTable içindeki dördüncü

kayıt silinmiştir.

Dim drSil As DataRow = dtKitaplar.Rows(3) dtKitaplar.Rows.Remove(drSil)

DataRownesnesinin Deletemetodu kullanılarak aktif kayıt silinebilir.

DrSil.Delete()

Windows Form ile Kayıt Üzerinde Hareket Sağlamak Verileri düzenlemeden önce, hangi veri üzerinde düzenleme yapılacağının tespit edilmesi gerekir.

Windows Form uygulamaları, veri içinde hareket sağlanan nesneler ile verilerin bağlı olduğu katmanı

yönetebilir. Bunun için gerekli olan komut:

BindingContext(DatSet_Name, “Table_Name”). Position = …

Veri Arama ve Sıralama

Hata! Tablo için geçersiz bir sonuç. 2010 2011

151

DataSet içinde veri arama ve sıralama işlemleri yapmak için, DataTable sınıfının arama ve sıralama

metotlarıkullanılır. DataTable sınıfının Find metodu, birincil anahtar değerine göre arama

yapılmasını sağlar. Select metodu ise, belirli bir arama kriterine göre arama yapılmasınısağlar.

Selectmetodu ile geriye satır koleksiyonları döndürülür.

Örnekte DataTable sınıfının Find metodu ile kitap barkod numarasına göre arama yapılır. Bu

aramanın sonucunda yazar adı geriye döndürülür.

Dim conn As New OleDbConnection("provider =" & _ “microsoft.jet.oledb.4.0;data

source=c:\Proje\stok.mdb")

Dim da As New OleDbDataAdapter("select * from" & _ "kitaplar",conn)

Dim tbl As New DataTable

da.Fill(tbl)

tbl.PrimaryKey = _ New DataColumn(){tbl.Columns("kitap_ISBN")}

Dim row As DataRow = tbl.Rows.Find("97512533")

If row Is Nothing Then

MessageBox.Show("Kayıt Bulunamadı!")

Else

MessageBox.Show(row("kitap_yazar"))

End If

Örnekte Tbl ismindeki DataTable nesnesine, DataAdapter nesnesinden gelen kayıtlar doldurulur. Tbl

tablosunun Kitap_ISBN kolonu birincil anahtar olarak atanır. Row isminde yeni bir DataRow

tanımlanır. DataTable nesnesinin Find metoduna kitabın barkod numarasıgirilir ve sonuç Row

değişkenine aktarılır. Son olarak Rowdeğişkeni içindeki sonuç ekrana yazılır.

Arama işlemlerinde özel karakter kullanılabilir. Örneğin yazar ismi ”E„ harfi ile başlayan

kayıtlarısorgulamak için aşağıdaki komut kullanılır.

Select * from kitaplar Where kitap_yazar Like 'E%'

DataTable sınıfının Select metodu ile DataRow nesnelerinden oluşan bir koleksiyon geri döndürür.

Select metodu aslında orijinal DataSet içindeki satırları işaret eden işaretçiler kümesi olarak da

algılanabilir. Veri kopyalama yapmaz, ancak değişimleri görüntüler.

Örnekte, DataTable sınıfının Select metodu kullanılarak kitap fiyatı sekizden farklıkayıtlar

gösterilmektedir. Bu kayıtlar kitap isimlerine göre sıralanmıştır.

Dim selRows As DataRow() = tbl.Select("kitap_fiyat <> 8", _ "kitap_baslik ASC",

DataViewRowState.CurrentRows) Dim row As DataRow

For Each row In selRows MessageBox.Show("kitap: " & _ row("kitap_baslik",

DataRowVersion.Original)) Next

Select metodunun dört farklı kullanımı vardır. Bu kullanımlar aşağıda listelenmiştir.

public DataRow() Select()

Hata! Tablo için geçersiz bir sonuç. 2010 2011

152

public DataRow() Select(filterExpression as string)

public DataRow() Select(filterExpression as string, _ sort as string)

public DataRow() Select(filterExpression as string, _ sort as string, _ recordStates as

DataViewRowState)

Select metodunun filterExpression, Sortve recordStatesisminde üç parametresi bulunur.

filterExpression, filtreleme yapılacak ifadeyi içerir.

"Country = „Turkey' AND City <> 'Ankara'"

Sort, sonuçların hangi sırada görüntüleneceğini belirtir.

“City DESC”

Veriler artan ve azalan olmak üzere iki şekilde sıralanabilir. Sıralanacak kolonun sonuna; azalan

sıralama için DESC, artan sıralama için ASC anahtar sözcüğü yazılır.

recordStates ise, kayıtların durumuna göre, (Deleted, Modified gibi) seçim yapar.

SETUP 2010 2011

153

Bölüm 9. SETUP

1) File/Add Project kısmından New Project seçeneğini işaretleyelim. Gelen ekrandan Project

Types kısmından Setup and Deploymeııt Projects klasörünü seçtikten sonra, Templates

bölümünden Setup Project seçerek ismine “pec” yazıp, OK butonuna basalım. Kaydettiğiniz

yeri unutmayınız çünkü Setup için gerekli dosyalar buraya kopyalanacaktır.

2) Ekran görüntüsü, aşağıdaki gibi olacaktır. Burada programın kurulacağı yer ile ilgili ayarlar

Application Folder kısmından yapılır.

3) ApplicationFolder'ın özelliklerinde bulunan DefauItLocation ile kurulum yapıldığında,

kurulum dosyalarının nerede olacağını belirleyebiliriz. Biz ProgramFiles klasörü içinde

olmasını istediğimiz için, şekildeki gibi değişiklik yaptık.

Bilgisayara Giriş 2010 2011

154

4) ApplicationFolder üzerine sağ tuşa basarak Add File seçeneğinden Setup‟ı oluşturacak

projenin bulunduğu yere gidelim, Bin klaösrü içindeki .exe uzantılı dosyayı seçelim. Örnekte

setuplar.exe olarak alınmıştır.

5) Yine ApplicationFoIder üzerinde sağ tuşa basarak Add/Project Outpııl seçeneğine tıklayarak,

gelen ekrandan exe ve dll'leri kapsayan Primary Output'u seçip, OK butonuna basalım.

SETUP 2010 2011

155

6) UserPrograms menü üzerine sağ tuşa basığ Add Folder‟ı seçiniz. İsmine “pec” yazınız. Sonra

“pec” klasörü seçili iken bölmenin sağ kısmına geçerek, Create New Shortcut seçeneğine

tıklayınız. Bunun sonucunda aşağıdaki ekran karşımıza gelir.

7) Yukarıdaki şekil üzerinde Application Folder üzerine iki kez tıklayarak daha önce

eklettiğimiz "setuplar.exe" dosyasını seçip, OK butonuna basalım.

Bilgisayara Giriş 2010 2011

156

8) Eklenen kısayolun ismini "prestigeturk" olarak değiştirelim. Böylelikle program kurulunca

Start/Programs seçeneği içinde "pec" isimli bir klasör ve içinde programı çalıştırmak için"

prestig"e isimli bir kısayol oluşacaktır.

9) Programı kurunca, masaüstüne de kısayolunun gelmesi için User's Desktop klasörü seçili iken

bölmenin sağ kısmına geçerek, Create New Shortcut seçeneğine tıklayınız. Yine dosyamızı

seçerek, ismini "prestige" yapalım.

10) Bu kısayollara kısayol oluşturmak için ilk önce ApplicationFolder üzerinde sağ tuşa basarak

Add/File seçeneğini kullanıp, istediğiniz yerden bir Icoıı getiriniz. Ardından "prestige"

kısayolunun özelliklerinden Icon seçeneğinden, Browse alt seçeneğine tıklayarak,

ApplicationFolder içinden ekletmiş olduğunuz Icon'u seçiniz.

SETUP 2010 2011

157

11) Setup projemize "pec" Setup projemizi seçerek, Properties penceresine geçelim. Bu kısımda

kurulan program hakkında çeşitli bilgiler verebiliriz. Programı açıklayıcı bilgiyi Description

hakkında bilgiyi Manufacturer destek bilgilerini Support kısımlarına yazabiliriz.

Programı kuran kişi bu bilgileri Control Panel içindeki Add/ Remove Programs kısmından

görebilir.

12) "pec" isimli Setup projenizin üzerinde sağ tuşa basarak View seçeneğine tıklarsanız, diğer

görünümlerin listesi ile karşılaşırsınız. Bu listeden ekranının ayarlan için Userlnterface

seçeneğine tıkladığımızda görüntü aşağıdaki gibi olacaktır:

Bilgisayara Giriş 2010 2011

158

13) Bir önceki adımda gelen ekrandan Start seçeneğinin altında bulunan Welcome alt

seçeneğinin Properties penceresini aşağıdaki gibi yapılandıralım;

14) Bir Setup'da olması gerekenleri aşağı yukarı koyduktan sonra, Build menüsünden Build pec

seçeneği ile derleyelim. Bir hata ile karşılaşmadığınızı bildiren sağ alt köşedeki Build

succeeded yazısı ile karşılaşırsanız, işlem tamamdır. Artık, projelerinizi tamamen

kapatabilirsiniz.

15) Setup projesini kaydettiğiniz "pec" klasörünü açıp, Debug klasörüne geçtiğinizde aşağıdaki

şekilde "pec.msi"dosyasını görebilirsiniz.

16) Şimdi adım adım kurulumu gerçekleştirmek için, "pecmsi" dosyası nu tıklayalım.

17) İlk olarak karşımıza gelen görüntü, aşağıdaki gibidir. Next butonıı ile devam edelim.

18) Belirlediğimiz kurulum yeri, burada görünmektedir. İstenirse Browse değiştirilebilir. Devam

için Next butonuna basalım.

SETUP 2010 2011

159

19) Tekrar Next butonuna basınca kurulum başlayacaktır ve kurulum tamamlanınca, aşağıdaki

bilgi ekranı karşımıza çıkacaktır. İşlemi sonlandırmak için Close butonuna basmamız yeterli

olacaktır.

20) Şimdi de kurulum sonuçlarını incelemek için ilk olarak ProgramFiles klasörü içindeki "Pec"

klasörünü açalım ve gerekli dosyalann burada yer aldığını, şekildeki gibi gözlemleyelim

Bilgisayara Giriş 2010 2011

160

21) Hem masaüstünde, hem de Start menüsündeki Programs grubu içinde oluşan "pec" klasörü

içinde "prestige" kısayolunu görebiliriz.

22) Bunlardan herhangi birine tıkladığımız zaman, programımız çalışacaktır .Bu programm

çalışacağı bilgisayarda sadece Framework 1.1'in kurulu olması yeterlidir.

23) Son olarak program ile ilgili bilgileri bulmak için Control Panel içinde bulunan Add or

Remove Programs seçeneğine tıkladığımızda, programın listede yerini aldığını göreceksiniz.

Buradan isterseniz Remove ile kaldırabilrsiniz.

24) Program ile ilgili bilgileri öğrenmek içinse ortadaki Click here for support information

Link'ine tıklamanız yeterlidir. Bunun sonucunda Setup yapılandınlması sırasında

kazandırdığınız özellikler, şekildeki gibi görüntülenecektir: